diff --git a/.eslintignore b/.eslintignore index e5b1994..91b2e6f 100644 --- a/.eslintignore +++ b/.eslintignore @@ -1 +1,4 @@ playwright.config.ts +dist +dist-types +node_modules diff --git a/.github/workflows/build-and-push.yaml b/.github/workflows/build-and-push.yaml index 79dd834..237e940 100644 --- a/.github/workflows/build-and-push.yaml +++ b/.github/workflows/build-and-push.yaml @@ -1,8 +1,11 @@ # name: Create and publish a Docker image -# Configures this workflow to run every time a change is pushed. -on: push +# Configures this workflow to run on pushes to main and version tags. +on: + push: + branches: [main] + tags: ['v*'] # Defines two custom environment variables for the workflow. These are used for the Container registry domain, and a name for the Docker image that this workflow builds. env: diff --git a/.github/workflows/pr.yaml b/.github/workflows/pr.yaml index a68f108..3aba8c2 100644 --- a/.github/workflows/pr.yaml +++ b/.github/workflows/pr.yaml @@ -6,14 +6,24 @@ on: jobs: build: - runs-on: ubuntu-22.04 + runs-on: ubuntu-latest steps: - name: Checkout repository uses: actions/checkout@v6 - - uses: actions/setup-node@v6 + - name: Setup Node.js + uses: actions/setup-node@v6 with: - node-version: 18 - - name: Run tests - run: | - yarn install --frozen-lockfile --network-timeout 600000 - yarn tsc + node-version: 22 + cache: 'yarn' + + - name: Install dependencies + run: yarn install --frozen-lockfile --network-timeout 600000 + + - name: Type check + run: yarn tsc + + - name: Lint + run: yarn lint:all + + - name: Build backend + run: yarn build:backend diff --git a/.gitignore b/.gitignore index fbf8139..feec02c 100644 --- a/.gitignore +++ b/.gitignore @@ -52,3 +52,4 @@ site # E2E test reports e2e-test-report/ +tsconfig.tsbuildinfo diff --git a/Dockerfile b/Dockerfile index e3276c9..8a1ddeb 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,18 +1,16 @@ # Stage 1 - Create yarn install skeleton layer -FROM node:18-bookworm-slim AS packages +FROM node:22-bookworm-slim AS packages WORKDIR /app COPY package.json yarn.lock ./ COPY packages packages - -# Comment this out if you don't have any internal plugins COPY plugins plugins RUN find packages \! -name "package.json" -mindepth 2 -maxdepth 2 -exec rm -rf {} \+ # Stage 2 - Install dependencies and build packages -FROM node:18-bookworm-slim AS build +FROM node:22-bookworm-slim AS build USER node WORKDIR /app @@ -26,18 +24,14 @@ COPY --chown=node:node . . RUN yarn tsc RUN yarn --cwd packages/backend build -# If you have not yet migrated to package roles, use the following command instead: -# RUN yarn --cwd packages/backend backstage-cli backend:bundle --build-dependencies RUN mkdir packages/backend/dist/skeleton packages/backend/dist/bundle \ && tar xzf packages/backend/dist/skeleton.tar.gz -C packages/backend/dist/skeleton \ && tar xzf packages/backend/dist/bundle.tar.gz -C packages/backend/dist/bundle # Stage 3 - Build the actual backend image and install production dependencies -FROM node:18-bookworm-slim +FROM node:22-bookworm-slim -# Install isolate-vm dependencies, these are needed by the @backstage/plugin-scaffolder-backend. -# Install packages needed to get utility binaries RUN --mount=type=cache,target=/var/cache/apt,sharing=locked \ --mount=type=cache,target=/var/lib/apt,sharing=locked \ apt-get update && \ @@ -45,11 +39,10 @@ RUN --mount=type=cache,target=/var/cache/apt,sharing=locked \ RUN yarn config set python /usr/bin/python3 -# Add kubectl for the kube apply plugin. -# Add cnoe-cli -# Add mkdocs for the TechDocs plugin. +# Add kubectl for the kube apply plugin RUN curl -L -o /usr/local/bin/kubectl https://dl.k8s.io/release/v1.29.9/bin/linux/amd64/kubectl && chmod +x /usr/local/bin/kubectl +# Add cnoe-cli RUN curl -L -O https://github.com/cnoe-io/cnoe-cli/releases/download/v0.1.0/cnoe_Linux_x86_64.tar.gz && \ curl -L -O https://github.com/cnoe-io/cnoe-cli/releases/download/v0.1.0/checksums.txt && \ sha256sum -c --strict --status --ignore-missing checksums.txt && \ @@ -60,34 +53,24 @@ RUN curl -L -O https://github.com/cnoe-io/cnoe-cli/releases/download/v0.1.0/cnoe COPY ./cnoe-wrapper.sh /usr/bin/cnoe RUN chmod +x /usr/bin/cnoe +# Add mkdocs for TechDocs ENV VIRTUAL_ENV=/opt/venv RUN python3 -m venv $VIRTUAL_ENV ENV PATH="$VIRTUAL_ENV/bin:$PATH" RUN pip3 install 'mkdocs-techdocs-core==1.4.2' -# From here on we use the least-privileged `node` user to run the backend. USER node - -# This should create the app dir as `node`. -# If it is instead created as `root` then the `tar` command below will -# fail: `can't create directory 'packages/': Permission denied`. -# If this occurs, then ensure BuildKit is enabled (`DOCKER_BUILDKIT=1`) -# so the app dir is correctly created as `node`. WORKDIR /app -# Copy the install dependencies from the build stage and context COPY --from=build --chown=node:node /app/yarn.lock /app/package.json /app/packages/backend/dist/skeleton/ ./ RUN --mount=type=cache,target=/home/node/.cache/yarn,sharing=locked,uid=1000,gid=1000 \ yarn install --frozen-lockfile --production --network-timeout 600000 -# Copy the built packages from the build stage COPY --from=build --chown=node:node /app/packages/backend/dist/bundle/ ./ +COPY --chown=node:node app-config.yaml app-config.production.yaml ./ -# Copy any other files that we need at runtime -COPY --chown=node:node app-config.yaml ./ - -# This switches many Node.js dependencies to production mode. ENV NODE_ENV production +ENV NODE_OPTIONS="--no-node-snapshot" -CMD ["node", "packages/backend", "--config", "app-config.yaml"] +CMD ["node", "packages/backend", "--config", "app-config.yaml", "--config", "app-config.production.yaml"] diff --git a/Taskfile.yml b/Taskfile.yml new file mode 100644 index 0000000..6f87f38 --- /dev/null +++ b/Taskfile.yml @@ -0,0 +1,198 @@ +version: '3' + +vars: + IMAGE_NAME: ghcr.io/cnoe-io/backstage-app + IMAGE_TAG: local + KIND_CLUSTER: localdev + K8S_CONTEXT: kind-{{.KIND_CLUSTER}} + BACKSTAGE_NS: backstage + +tasks: + # ===== Development ===== + + dev: + desc: Start local dev server (frontend + backend) + cmds: + - yarn dev + + dev:mock: + desc: Start local dev server with mock backends (no cluster needed) + cmds: + - MOCK_MODE=true yarn dev + + tsc: + desc: Run TypeScript type checking + cmds: + - yarn tsc + + lint: + desc: Run linter on all packages + cmds: + - yarn lint:all + + test: + desc: Run all tests + cmds: + - yarn test:all + + build: + desc: Build backend bundle + cmds: + - yarn build:backend + + build:all: + desc: Build all packages (frontend + backend) + cmds: + - yarn build:all + + clean: + desc: Clean all build artifacts + cmds: + - yarn clean + + check: + desc: Run tsc + lint + build (same as PR CI) + cmds: + - task: tsc + - task: lint + - task: build + + # ===== Docker ===== + + docker:build: + desc: Build Docker image + cmds: + - docker build -t {{.IMAGE_NAME}}:{{.IMAGE_TAG}} . + + docker:run: + desc: Run Docker image locally (dev config, SQLite) + cmds: + - docker run -p 7007:7007 {{.IMAGE_NAME}}:{{.IMAGE_TAG}} node packages/backend --config app-config.yaml + + # ===== idpbuilder Local Stack ===== + + stack:up: + desc: Bring up full local stack (ref-implementation + Kro + Backstage) + cmds: + - task: stack:idp + - task: stack:kro + - task: stack:patch + - task: stack:deploy + + stack:idp: + desc: Start idpbuilder ref-implementation + cmds: + - | + idpbuilder create --use-path-routing \ + --package https://github.com/cnoe-io/stacks//ref-implementation + - echo "Waiting for cluster to stabilize..." + - kubectl config use-context {{.K8S_CONTEXT}} + - kubectl wait --for=condition=Available deployment/backstage -n {{.BACKSTAGE_NS}} --timeout=600s + + stack:kro: + desc: Install Kro operator and sample ResourceGraphDefinition + cmds: + - kubectl config use-context {{.K8S_CONTEXT}} + - helm install kro oci://registry.k8s.io/kro/charts/kro --namespace kro-system --create-namespace + - kubectl wait --for=condition=Established crd/resourcegraphdefinitions.kro.run --timeout=60s + - kubectl apply -f examples/local-stack/kro/manifests/install.yaml + + stack:patch: + desc: Apply Backstage RBAC and config patches for Kro + cmds: + - kubectl config use-context {{.K8S_CONTEXT}} + - kubectl apply -f examples/local-stack/backstage-patch/manifests/install.yaml + + stack:deploy: + desc: Build, load, and deploy local Backstage image to the cluster + cmds: + - task: docker:build + - task: stack:load + - task: stack:swap + + stack:load: + desc: Load local Docker image into kind cluster + cmds: + - | + docker save {{.IMAGE_NAME}}:{{.IMAGE_TAG}} | \ + docker exec -i {{.KIND_CLUSTER}}-control-plane \ + ctr -n k8s.io images import --all-platforms - + + stack:swap: + desc: Swap Backstage deployment to use local image + cmds: + - kubectl config use-context {{.K8S_CONTEXT}} + - kubectl -n {{.BACKSTAGE_NS}} set image deployment/backstage backstage={{.IMAGE_NAME}}:{{.IMAGE_TAG}} + - | + kubectl -n {{.BACKSTAGE_NS}} patch deployment backstage \ + -p '{"spec":{"template":{"spec":{"containers":[{"name":"backstage","imagePullPolicy":"Never"}]}}}}' + - kubectl -n argocd patch application backstage --type merge -p '{"spec":{"syncPolicy":null}}' + - kubectl -n {{.BACKSTAGE_NS}} rollout status deployment/backstage --timeout=90s + + stack:iterate: + desc: Rebuild and redeploy after code changes (fast cycle) + cmds: + - task: docker:build + - task: stack:load + - kubectl config use-context {{.K8S_CONTEXT}} + - kubectl -n {{.BACKSTAGE_NS}} rollout restart deployment/backstage + - kubectl -n {{.BACKSTAGE_NS}} rollout status deployment/backstage --timeout=90s + + stack:logs: + desc: Tail Backstage logs + cmds: + - kubectl config use-context {{.K8S_CONTEXT}} + - kubectl logs -f deployment/backstage -n {{.BACKSTAGE_NS}} + + stack:status: + desc: Show status of all stack components + cmds: + - kubectl config use-context {{.K8S_CONTEXT}} + - echo "=== Backstage ===" + - kubectl get pods -n {{.BACKSTAGE_NS}} + - echo "" + - echo "=== Kro ===" + - kubectl get pods -n kro-system + - echo "" + - echo "=== ResourceGraphDefinitions ===" + - kubectl get rgd -A + - echo "" + - echo "=== ArgoCD Applications ===" + - kubectl get applications -n argocd + + stack:secrets: + desc: Show idpbuilder credentials + cmds: + - idpbuilder get secrets + + stack:port-forward: + desc: Start port-forward to Backstage (localhost:7007) + cmds: + - kubectl config use-context {{.K8S_CONTEXT}} + - echo "Backstage available at http://localhost:7007" + - kubectl -n {{.BACKSTAGE_NS}} port-forward svc/backstage 7007:7007 + + stack:guest-auth: + desc: Enable guest auth on the cluster (for testing without Keycloak) + cmds: + - kubectl config use-context {{.K8S_CONTEXT}} + - | + kubectl -n {{.BACKSTAGE_NS}} get configmap backstage-config -o yaml | \ + sed 's/keycloak-oidc:/guest:\n dangerouslyAllowOutsideDevelopment: true\n keycloak-oidc:/' | \ + kubectl apply -f - + - kubectl -n {{.BACKSTAGE_NS}} rollout restart deployment/backstage + + stack:down: + desc: Delete the idpbuilder cluster + cmds: + - idpbuilder delete --name {{.KIND_CLUSTER}} + + # ===== CI Helpers ===== + + ci:pr: + desc: Run the same checks as the PR workflow + cmds: + - yarn install --frozen-lockfile --network-timeout 600000 + - task: tsc + - task: lint + - task: build diff --git a/app-config.production.yaml b/app-config.production.yaml index 8f0751c..aaa0431 100644 --- a/app-config.production.yaml +++ b/app-config.production.yaml @@ -1,19 +1,9 @@ app: - # Should be the same as backend.baseUrl when using the `app-backend` plugin. baseUrl: http://localhost:7007 backend: - # Note that the baseUrl should be the URL that the browser and other clients - # should use when communicating with the backend, i.e. it needs to be - # reachable not just from within the backend host, but from all of your - # callers. When its value is "http://localhost:7007", it's strictly private - # and can't be reached by others. baseUrl: http://localhost:7007 - # The listener can also be expressed as a single : string. In this case we bind to - # all interfaces, the most permissive setting. The right value depends on your specific deployment. listen: ':7007' - - # config options: https://node-postgres.com/api/client database: client: pg connection: @@ -21,15 +11,6 @@ backend: port: ${POSTGRES_PORT} user: ${POSTGRES_USER} password: ${POSTGRES_PASSWORD} - # https://node-postgres.com/features/ssl - # you can set the sslmode configuration option via the `PGSSLMODE` environment variable - # see https://www.postgresql.org/docs/current/libpq-ssl.html Table 33.1. SSL Mode Descriptions (e.g. require) - # ssl: - # ca: # if you have a CA file and want to verify it you can uncomment this section - # $file: /ca/server.crt catalog: - # Overrides the default list locations from app-config.yaml as these contain example data. - # See https://backstage.io/docs/features/software-catalog/#adding-components-to-the-catalog for more details - # on how to get entities into the catalog. locations: [] diff --git a/app-config.yaml b/app-config.yaml index 0006a70..d8b8e47 100644 --- a/app-config.yaml +++ b/app-config.yaml @@ -1,10 +1,35 @@ app: title: CNOE baseUrl: http://localhost:3000 + packages: all + listen: + port: 3000 + host: 0.0.0.0 organization: name: CNOE +homepage: + quickLinks: + - url: /catalog + label: Catalog + icon: catalog + - url: https://gitlab.com + label: GitLab + iconUrl: /img/gitlab.png + - url: /argocd + label: ArgoCD + iconUrl: /img/argocd.png + - url: /argo-workflows + label: Argo Workflows + iconUrl: /img/argo-workflows.png + - url: / + label: Kargo + iconUrl: /img/kargo.png + - url: /keycloak + label: Keycloak + iconUrl: /img/keycloak.png + backend: # Used for enabling authentication, secret is shared by all backend plugins # See https://backstage.io/docs/auth/service-to-service-auth for @@ -15,14 +40,16 @@ backend: baseUrl: http://localhost:7007 listen: port: 7007 - # Uncomment the following host directive to bind to specific interfaces - # host: 127.0.0.1 + host: 0.0.0.0 csp: connect-src: ["'self'", 'http:', 'https:'] # Content-Security-Policy directives follow the Helmet format: https://helmetjs.github.io/#reference # Default Helmet Content-Security-Policy values can be removed by setting the key to false cors: - origin: http://localhost:3000 + origin: + - http://localhost:3000 + - http://127.0.0.1:3000 + - http://localhost:7007 methods: [GET, HEAD, PATCH, POST, PUT, DELETE] credentials: true # This is for local development only, it is not recommended to use this in production @@ -31,6 +58,7 @@ backend: client: better-sqlite3 connection: ':memory:' # workingDirectory: /tmp # Use this to configure a working directory for the scaffolder, defaults to the OS temp-dir + integrations: gitea: - baseUrl: https://cnoe.localtest.me:8443/gitea @@ -55,11 +83,12 @@ proxy: # and an external cloud storage when deploying TechDocs for production use-case. # https://backstage.io/docs/features/techdocs/how-to-guides#how-to-migrate-from-techdocs-basic-to-recommended-deployment-approach techdocs: - builder: 'local' # Alternatives - 'external' + builder: 'local' generator: - runIn: 'docker' # Alternatives - 'local' + runIn: 'local' publisher: - type: 'local' # Alternatives - 'googleGcs' or 'awsS3'. Read documentation for using alternatives. + type: 'local' + auth: # see https://backstage.io/docs/auth/ to learn about auth providers environment: local # set this to development to enable SSO @@ -79,49 +108,80 @@ scaffolder: defaultAuthor: name: backstage-scaffolder email: noreply - defaultCommitMessage: "backstage scaffolder" + defaultCommitMessage: 'backstage scaffolder' + catalog: import: entityFilename: catalog-info.yaml pullRequestBranchName: backstage-integration rules: - - allow: [ Component, System, API, Resource, Location, Template ] + - allow: [Component, System, API, Resource, Location, Template, Group, User] + # Allow Kro ResourceGroup entities (they appear as Components with type 'kro-resource-group') + - allow: [Component] + spec: + type: kro-resource-group locations: + # Local example data + - type: file + target: ../../examples/entities.yaml + rules: + - allow: [Component, System, API, Resource, Location] + - type: file + target: ../../examples/org.yaml + rules: + - allow: [User, Group] + - type: file + target: ../../examples/template/template.yaml + rules: + - allow: [Template] + - type: file + target: ../../examples/k8s-apply/template.yaml + rules: + - allow: [Template] + - type: file + target: ../../examples/k8s-apply/template-manifest-object.yaml + rules: + - allow: [Template] + - type: file + target: ../../examples/k8s-apply/template-manifest-string.yaml + rules: + - allow: [Template] + - type: file + target: ./examples/local-stack/mock-entities/catalog-info.yaml + rules: + - allow: [Component, System, API, Resource, Location, Template, Group, User] - type: url target: https://cnoe.localtest.me:8443/gitea/giteaAdmin/idpbuilder-localdev-backstage-templates-entities/src/branch/main/catalog-info.yaml -# # Local example template -# - type: file -# target: ../../examples/template/template.yaml -# rules: -# - allow: [Template] -# -# # Local example organizational data -# - type: file -# target: ../../examples/org.yaml -# rules: -# - allow: [User, Group] - - ## Uncomment these lines to add more example data - # - type: url - # target: https://github.com/backstage/backstage/blob/master/packages/catalog-model/examples/all.yaml - - ## Uncomment these lines to add an example org - # - type: url - # target: https://github.com/backstage/backstage/blob/master/packages/catalog-model/examples/acme-corp.yaml - # rules: - # - allow: [User, Group] + kubernetes: serviceLocatorMethod: type: 'multiTenant' clusterLocatorMethods: - type: 'config' clusters: - - url: https://127.0.0.1:33277 # you may need to change this + - url: https://127.0.0.1:33277 name: local authProvider: 'serviceAccount' skipTLSVerify: true - # replace with your own service account token value. e.g. kubectl -n backstage exec -it deploy/backstage -- cat /var/run/secrets/kubernetes.io/serviceaccount/token serviceAccountToken: eyJhbG...... + # Additional configuration for Kro resources + customResources: + - group: 'kro.run' + apiVersion: 'v1alpha1' + plural: 'resourcegraphdefinitions' + - group: 'kro.run' + apiVersion: 'v1alpha1' + plural: 'cicdpipelines' + - group: 'kro.run' + apiVersion: 'v1alpha1' + plural: 'eksclusters' + - group: 'kro.run' + apiVersion: 'v1alpha1' + plural: 'eksclusterwithvpcs' + - group: 'kro.run' + apiVersion: 'v1alpha1' + plural: 'vpcs' + argocd: appLocatorMethods: - type: 'config' @@ -129,7 +189,146 @@ argocd: - name: local url: https://cnoe.localtest.me:8443/argocd username: admin - # replace with your argocd password e.g. kubectl -n argocd get secret argocd-initial-admin-secret -o jsonpath="{.data.password}" | base64 -d password: ${ARGOCD_ADMIN_PASSWORD} + argoWorkflows: - baseUrl: https://cnoe.localtest.me:8443/argo-workflows \ No newline at end of file + baseUrl: https://cnoe.localtest.me:8443/argo-workflows + +kubernetesIngestor: + refreshInterval: 300 # 5 minutes in seconds + # Entity processing configuration for ResourceGroups + entityProcessing: + # Enable automatic catalog ingestion + enabled: true + # Transform Kro resources into catalog entities + transformKroResources: true + # Namespace filtering (empty means all namespaces) + namespaces: [] + # Label selectors for resource filtering + labelSelectors: [] + resources: + # Kro ResourceGraphDefinitions (templates for ResourceGroups) + - apiVersion: 'kro.run/v1alpha1' + kind: 'ResourceGraphDefinition' + # Enable catalog ingestion for ResourceGraphDefinitions + catalogIngestion: + enabled: true + entityType: 'Component' + entitySubtype: 'kro-resource-group' + # Kro instances (these will be discovered dynamically based on ResourceGraphDefinitions) + - apiVersion: 'kro.run/v1alpha1' + kind: 'CICDPipeline' + catalogIngestion: + enabled: true + entityType: 'Component' + entitySubtype: 'kro-resource-group' + - apiVersion: 'kro.run/v1alpha1' + kind: 'EksCluster' + catalogIngestion: + enabled: true + entityType: 'Component' + entitySubtype: 'kro-resource-group' + - apiVersion: 'kro.run/v1alpha1' + kind: 'EksclusterWithVpc' + catalogIngestion: + enabled: true + entityType: 'Component' + entitySubtype: 'kro-resource-group' + - apiVersion: 'kro.run/v1alpha1' + kind: 'Vpc' + catalogIngestion: + enabled: true + entityType: 'Component' + entitySubtype: 'kro-resource-group' + # Standard Kubernetes resources (for relationship mapping) + - apiVersion: 'apps/v1' + kind: 'Deployment' + catalogIngestion: + enabled: false # Don't ingest all deployments, only those managed by ResourceGroups + - apiVersion: 'v1' + kind: 'Service' + catalogIngestion: + enabled: false + - apiVersion: 'v1' + kind: 'ConfigMap' + catalogIngestion: + enabled: false + - apiVersion: 'v1' + kind: 'Secret' + catalogIngestion: + enabled: false + clusters: + - name: local + url: https://127.0.0.1:33277 + authProvider: 'serviceAccount' + serviceAccountToken: eyJhbG...... + skipTLSVerify: true + +# Kro plugin configuration for ResourceGroup management +kro: + enablePermissions: true + enableAuditLogging: true + + # Security configuration + rbacValidation: + enabled: true + strictMode: false + cacheTimeout: 300 # 5 minutes + + auditLogging: + enabled: true + logLevel: 'info' + includeSuccessEvents: true + + errorHandling: + enableDetailedErrors: true + includeStackTrace: false + + clusters: + - name: local + url: https://127.0.0.1:33277 + authProvider: 'serviceAccount' + serviceAccountToken: eyJhbG...... + skipTLSVerify: true + rbac: + requiredPermissions: + - apiGroups: ['kro.run'] + resources: ['resourcegraphdefinitions'] + verbs: + ['get', 'list', 'watch', 'create', 'update', 'patch', 'delete'] + - apiGroups: ['kro.run'] + resources: + ['cicdpipelines', 'eksclusters', 'eksclusterwithvpcs', 'vpcs'] + verbs: + ['get', 'list', 'watch', 'create', 'update', 'patch', 'delete'] + - apiGroups: [''] + resources: ['events'] + verbs: ['get', 'list', 'watch'] + readOnlyPermissions: + - apiGroups: ['kro.run'] + resources: + [ + 'resourcegraphdefinitions', + 'cicdpipelines', + 'eksclusters', + 'eksclusterwithvpcs', + 'vpcs', + ] + verbs: ['get', 'list', 'watch'] + + # ResourceGroup entity processing configuration + entityProcessing: + enabled: true + refreshInterval: 300 + namespaces: [] + labelSelectors: [] + + # Integration with existing Kubernetes plugin + integration: + showInKubernetesViews: true + enableRelationshipMapping: true + +# see https://backstage.io/docs/permissions/getting-started for more on the permission framework +permission: + enabled: true + enablePermissions: true diff --git a/backstage.json b/backstage.json index b67976c..8358ab7 100644 --- a/backstage.json +++ b/backstage.json @@ -1,3 +1,3 @@ { - "version": "1.28.4" + "version": "1.49.4" } diff --git a/catalog-info.yaml b/catalog-info.yaml index a968650..e6f80b4 100644 --- a/catalog-info.yaml +++ b/catalog-info.yaml @@ -3,11 +3,7 @@ kind: Component metadata: name: backstage-idpbuilder description: An example of a Backstage application. - # Example for optional annotations - # annotations: - # github.com/project-slug: backstage/backstage - # backstage.io/techdocs-ref: dir:. spec: type: website - owner: john@example.com + owner: guests lifecycle: experimental diff --git a/e2e/plugins.spec.ts b/e2e/plugins.spec.ts new file mode 100644 index 0000000..2a092d2 --- /dev/null +++ b/e2e/plugins.spec.ts @@ -0,0 +1,118 @@ +import { test, expect } from '@playwright/test'; + +test.describe('CNOE Backstage Plugin Tests', () => { + test.beforeEach(async ({ page }) => { + // Dismiss webpack dev server overlay that intercepts clicks + await page.addInitScript(() => { + window.addEventListener('load', () => { + const overlay = document.getElementById('webpack-dev-server-client-overlay'); + if (overlay) overlay.remove(); + }); + }); + await page.goto('/'); + // Remove overlay if present + await page.evaluate(() => { + document.getElementById('webpack-dev-server-client-overlay')?.remove(); + }); + const enterBtn = page.getByRole('button', { name: 'Enter' }); + if (await enterBtn.isVisible({ timeout: 10000 }).catch(() => false)) { + await enterBtn.click({ force: true }); + await page.waitForURL('**/home', { timeout: 30000 }); + } + }); + + test('homepage loads with quick links', async ({ page }) => { + await page.goto('/home'); + await expect(page.getByText('Internal Developer Platform')).toBeVisible({ timeout: 30000 }); + await expect(page.getByText('Quick Links')).toBeVisible(); + await expect(page.getByText('Starred Entities')).toBeVisible(); + }); + + test('catalog page loads', async ({ page }) => { + await page.goto('/catalog'); + await expect(page.getByText('CNOE Catalog')).toBeVisible({ timeout: 30000 }); + }); + + test('entity page shows plugin tabs', async ({ page }) => { + // Navigate to the platform-api-service entity which has all plugin annotations + await page.goto('/catalog/default/component/platform-api-service'); + + // Wait for entity page to load + await expect(page.getByText('platform-api-service')).toBeVisible({ timeout: 30000 }); + + // Check that plugin tabs are visible + await expect(page.getByRole('tab', { name: 'Overview' })).toBeVisible(); + await expect(page.getByRole('tab', { name: 'Kubernetes' })).toBeVisible(); + await expect(page.getByRole('tab', { name: 'API' })).toBeVisible(); + await expect(page.getByRole('tab', { name: 'Dependencies' })).toBeVisible(); + await expect(page.getByRole('tab', { name: 'Docs' })).toBeVisible(); + }); + + test('Apache Spark tab renders', async ({ page }) => { + await page.goto('/catalog/default/component/platform-api-service'); + await expect(page.getByText('platform-api-service')).toBeVisible({ timeout: 30000 }); + + // Click Apache Spark tab + const sparkTab = page.getByRole('tab', { name: 'Apache Spark' }); + if (await sparkTab.isVisible()) { + await sparkTab.click(); + // Should show the spark overview table (may show error if mock not working, but tab should render) + await page.waitForTimeout(2000); + // Verify no crash - page should still be functional + await expect(page.locator('body')).not.toContainText('Something went wrong'); + } + }); + + test('Argo Workflows tab renders', async ({ page }) => { + await page.goto('/catalog/default/component/platform-api-service'); + await expect(page.getByText('platform-api-service')).toBeVisible({ timeout: 30000 }); + + const argoTab = page.getByRole('tab', { name: 'Argo Workflows' }); + if (await argoTab.isVisible()) { + await argoTab.click(); + await page.waitForTimeout(2000); + await expect(page.locator('body')).not.toContainText('Something went wrong'); + } + }); + + test('Terraform tab renders', async ({ page }) => { + await page.goto('/catalog/default/component/platform-api-service'); + await expect(page.getByText('platform-api-service')).toBeVisible({ timeout: 30000 }); + + const tfTab = page.getByRole('tab', { name: 'Terraform' }); + if (await tfTab.isVisible()) { + await tfTab.click(); + await page.waitForTimeout(2000); + await expect(page.locator('body')).not.toContainText('Something went wrong'); + } + }); + + test('no console errors on entity page', async ({ page }) => { + const errors: string[] = []; + page.on('console', msg => { + if (msg.type() === 'error') errors.push(msg.text()); + }); + + await page.goto('/catalog/default/component/platform-api-service'); + await expect(page.getByText('platform-api-service')).toBeVisible({ timeout: 30000 }); + + const unexpectedErrors = errors.filter( + e => + !e.includes('401') && + !e.includes('Failed to load') && + !e.includes('fetch') && + !e.includes('net::') && + !e.includes('Warning:') && + !e.includes('prop'), + ); + + expect(unexpectedErrors).toHaveLength(0); + }); + + test('settings page shows theme switcher', async ({ page }) => { + await page.goto('/settings'); + await expect(page.getByText('Appearance')).toBeVisible({ timeout: 30000 }); + await expect(page.getByRole('button', { name: 'CNOE Light' })).toBeVisible(); + await expect(page.getByRole('button', { name: 'CNOE Dark' })).toBeVisible(); + }); +}); diff --git a/examples/entities.yaml b/examples/entities.yaml index 447e8b1..d878632 100644 --- a/examples/entities.yaml +++ b/examples/entities.yaml @@ -1,41 +1,350 @@ --- -# https://backstage.io/docs/features/software-catalog/descriptor-format#kind-system +# System apiVersion: backstage.io/v1alpha1 kind: System metadata: - name: examples + name: cnoe-platform + description: CNOE Internal Developer Platform + tags: + - platform + - cnoe + links: + - url: https://cnoe.io + title: CNOE Website + icon: web spec: - owner: guests + owner: platform-team + --- -# https://backstage.io/docs/features/software-catalog/descriptor-format#kind-component +# Frontend Component apiVersion: backstage.io/v1alpha1 kind: Component metadata: - name: example-website + name: developer-portal + description: Backstage-based developer portal for the CNOE platform + tags: + - backstage + - react + - typescript + annotations: + backstage.io/techdocs-ref: dir:. + links: + - url: https://cnoe.io/docs + title: Documentation + icon: docs + - url: https://github.com/cnoe-io/backstage-app + title: GitHub Repository + icon: github spec: type: website - lifecycle: experimental - owner: guests - system: examples - providesApis: [example-grpc-api] + lifecycle: production + owner: platform-team + system: cnoe-platform + consumesApis: + - platform-api + +--- +# Backend Service +apiVersion: backstage.io/v1alpha1 +kind: Component +metadata: + name: platform-api-service + description: Backend API service powering the CNOE platform + tags: + - node + - typescript + - api + annotations: + backstage.io/techdocs-ref: dir:. + backstage.io/kubernetes-namespace: default + backstage.io/kubernetes-id: platform-api-service + argocd/app-name: platform-api-service + apache-spark.cnoe.io/label-selector: app=spark-example + apache-spark.cnoe.io/cluster-name: local + argo-workflows.cnoe.io/label-selector: app=example-workflow + argo-workflows.cnoe.io/namespace: default + terraform.cnoe.io/secret-name: terraform-state + terraform.cnoe.io/secret-namespace: default + links: + - url: https://github.com/cnoe-io/platform-api + title: GitHub Repository + icon: github +spec: + type: service + lifecycle: production + owner: platform-team + system: cnoe-platform + providesApis: + - platform-api + consumesApis: + - cluster-api + dependsOn: + - resource:platform-database + +--- +# Worker Service +apiVersion: backstage.io/v1alpha1 +kind: Component +metadata: + name: gitops-controller + description: GitOps reconciliation controller for infrastructure management + tags: + - go + - kubernetes + - gitops +spec: + type: service + lifecycle: production + owner: infra-team + system: cnoe-platform + dependsOn: + - resource:platform-database + --- -# https://backstage.io/docs/features/software-catalog/descriptor-format#kind-api +# Library +apiVersion: backstage.io/v1alpha1 +kind: Component +metadata: + name: cnoe-sdk + description: Shared SDK library for CNOE platform integrations + tags: + - typescript + - sdk + - library +spec: + type: library + lifecycle: production + owner: platform-team + system: cnoe-platform + +--- +# API - OpenAPI +apiVersion: backstage.io/v1alpha1 +kind: API +metadata: + name: platform-api + description: CNOE Platform REST API + tags: + - rest + - openapi +spec: + type: openapi + lifecycle: production + owner: platform-team + system: cnoe-platform + definition: | + openapi: "3.0.0" + info: + title: CNOE Platform API + version: "1.0.0" + description: REST API for the CNOE Internal Developer Platform + servers: + - url: https://api.cnoe.example.com/v1 + paths: + /health: + get: + summary: Health check + operationId: getHealth + responses: + '200': + description: Service is healthy + content: + application/json: + schema: + type: object + properties: + status: + type: string + example: ok + /clusters: + get: + summary: List clusters + operationId: listClusters + responses: + '200': + description: List of managed clusters + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/Cluster' + post: + summary: Create a cluster + operationId: createCluster + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/ClusterInput' + responses: + '201': + description: Cluster created + /clusters/{id}: + get: + summary: Get cluster details + operationId: getCluster + parameters: + - name: id + in: path + required: true + schema: + type: string + responses: + '200': + description: Cluster details + content: + application/json: + schema: + $ref: '#/components/schemas/Cluster' + components: + schemas: + Cluster: + type: object + properties: + id: + type: string + name: + type: string + provider: + type: string + enum: [aws, gcp, azure] + status: + type: string + enum: [provisioning, running, degraded, deleting] + region: + type: string + nodeCount: + type: integer + ClusterInput: + type: object + required: [name, provider, region] + properties: + name: + type: string + provider: + type: string + enum: [aws, gcp, azure] + region: + type: string + nodeCount: + type: integer + default: 3 + +--- +# API - gRPC apiVersion: backstage.io/v1alpha1 kind: API metadata: - name: example-grpc-api + name: cluster-api + description: Internal gRPC API for cluster management + tags: + - grpc + - internal spec: type: grpc - lifecycle: experimental - owner: guests - system: examples + lifecycle: production + owner: infra-team + system: cnoe-platform definition: | syntax = "proto3"; - service Exampler { - rpc Example (ExampleMessage) returns (ExampleMessage) {}; + package cnoe.cluster.v1; + + service ClusterService { + rpc CreateCluster (CreateClusterRequest) returns (Cluster) {}; + rpc GetCluster (GetClusterRequest) returns (Cluster) {}; + rpc ListClusters (ListClustersRequest) returns (ListClustersResponse) {}; + rpc DeleteCluster (DeleteClusterRequest) returns (DeleteClusterResponse) {}; } - message ExampleMessage { - string example = 1; - }; + message CreateClusterRequest { + string name = 1; + string provider = 2; + string region = 3; + int32 node_count = 4; + } + + message GetClusterRequest { + string id = 1; + } + + message ListClustersRequest { + int32 page_size = 1; + string page_token = 2; + } + + message ListClustersResponse { + repeated Cluster clusters = 1; + string next_page_token = 2; + } + + message DeleteClusterRequest { + string id = 1; + } + + message DeleteClusterResponse {} + + message Cluster { + string id = 1; + string name = 2; + string provider = 3; + string region = 4; + string status = 5; + int32 node_count = 6; + } + +--- +# Resource - Database +apiVersion: backstage.io/v1alpha1 +kind: Resource +metadata: + name: platform-database + description: PostgreSQL database for the CNOE platform + tags: + - postgresql + - database +spec: + type: database + owner: infra-team + system: cnoe-platform + +--- +# Resource - S3 Bucket +apiVersion: backstage.io/v1alpha1 +kind: Resource +metadata: + name: artifacts-bucket + description: S3 bucket for build artifacts and TechDocs + tags: + - s3 + - storage +spec: + type: s3-bucket + owner: infra-team + system: cnoe-platform + +--- +# Kro ResourceGroup +apiVersion: backstage.io/v1alpha1 +kind: Component +metadata: + name: example-resource-group + description: Example Kro ResourceGroup for managing cloud resources + tags: + - kro + - kubernetes + - resourcegroup + annotations: + backstage.io/kubernetes-namespace: default + backstage.io/kubernetes-label-selector: app=example-rg + kro.run/resource-group: example-resource-group + kro.run/managed-resources: '[{"kind":"Deployment","name":"web-app","namespace":"default"},{"kind":"Service","name":"web-app-svc","namespace":"default"}]' +spec: + type: kro-resource-group + lifecycle: production + owner: platform-team + system: cnoe-platform + dependsOn: + - resource:platform-database diff --git a/examples/k8s-apply/template-manifest-object.yaml b/examples/k8s-apply/template-manifest-object.yaml index f88963d..719c5b6 100644 --- a/examples/k8s-apply/template-manifest-object.yaml +++ b/examples/k8s-apply/template-manifest-object.yaml @@ -7,7 +7,6 @@ metadata: spec: owner: guest type: service - # these are the steps which are rendered in the frontend with the form input parameters: [] steps: - id: template @@ -26,11 +25,8 @@ spec: metadata: name: game-demo data: - # property-like keys; each key maps to a simple value player_initial_lives: "3" ui_properties_file_name: "user-interface.properties" - - # file-like keys game.properties: | enemy.types=aliens,monsters player.maximum-lives=5 diff --git a/examples/k8s-apply/template-manifest-string.yaml b/examples/k8s-apply/template-manifest-string.yaml index 312f557..d2c65bf 100644 --- a/examples/k8s-apply/template-manifest-string.yaml +++ b/examples/k8s-apply/template-manifest-string.yaml @@ -7,7 +7,6 @@ metadata: spec: owner: guest type: service - # these are the steps which are rendered in the frontend with the form input parameters: [] steps: - id: template @@ -26,11 +25,8 @@ spec: metadata: name: game-demo data: - # property-like keys; each key maps to a simple value player_initial_lives: "3" ui_properties_file_name: "user-interface.properties" - - # file-like keys game.properties: | enemy.types=aliens,monsters player.maximum-lives=5 diff --git a/examples/k8s-apply/template.yaml b/examples/k8s-apply/template.yaml index 3f097c3..ff7d6b9 100644 --- a/examples/k8s-apply/template.yaml +++ b/examples/k8s-apply/template.yaml @@ -7,7 +7,6 @@ metadata: spec: owner: guest type: service - # these are the steps which are rendered in the frontend with the form input parameters: - title: file name properties: diff --git a/examples/local-stack/README.md b/examples/local-stack/README.md new file mode 100644 index 0000000..721da6c --- /dev/null +++ b/examples/local-stack/README.md @@ -0,0 +1,119 @@ +# Local Testing Stack for Backstage Plugin Integration + +Add-on to the [cnoe-io/stacks ref-implementation](https://github.com/cnoe-io/stacks/tree/main/ref-implementation) that adds Kro operator and updated Backstage config for verifying all plugin integrations. + +## Prerequisites + +- [idpbuilder](https://github.com/cnoe-io/idpbuilder/releases/latest) v0.3.0+ +- kubectl, docker, helm 3.x +- 6 GB RAM allocated to Docker + +## Setup + +### 1. Run the ref-implementation + +```bash +idpbuilder create --use-path-routing \ + --package https://github.com/cnoe-io/stacks//ref-implementation +``` + +Wait ~6 minutes. Track progress at https://cnoe.localtest.me:8443/argocd + +### 2. Install Kro operator + +```bash +helm install kro oci://registry.k8s.io/kro/charts/kro \ + --namespace kro-system --create-namespace +``` + +### 3. Apply Kro sample and Backstage patches + +```bash +# Wait for CRD, then apply sample ResourceGraphDefinition +kubectl wait --for=condition=Established crd/resourcegraphdefinitions.kro.run --timeout=60s +kubectl apply -f examples/local-stack/kro/manifests/install.yaml + +# Apply Backstage RBAC and config for Kro +kubectl apply -f examples/local-stack/backstage-patch/manifests/install.yaml +``` + +### 4. Build and load local Backstage image + +```bash +docker build -t ghcr.io/cnoe-io/backstage-app:local . +docker save ghcr.io/cnoe-io/backstage-app:local | \ + docker exec -i localdev-control-plane ctr -n k8s.io images import --all-platforms - +``` + +### 5. Swap Backstage deployment + +```bash +kubectl -n backstage set image deployment/backstage \ + backstage=ghcr.io/cnoe-io/backstage-app:local +kubectl -n backstage patch deployment backstage \ + -p '{"spec":{"template":{"spec":{"containers":[{"name":"backstage","imagePullPolicy":"Never"}]}}}}' +kubectl -n argocd patch application backstage --type merge \ + -p '{"spec":{"syncPolicy":null}}' +``` + +### 6. Add guest auth (for testing without Keycloak) + +```bash +kubectl -n backstage get configmap backstage-config -o yaml | \ + sed 's/keycloak-oidc:/guest:\n dangerouslyAllowOutsideDevelopment: true\n keycloak-oidc:/' | \ + kubectl apply -f - +kubectl -n backstage rollout restart deployment/backstage +``` + +## Access + +| Service | URL | Credentials | +|---|---|---| +| Backstage | https://cnoe.localtest.me:8443/ | guest or `user1` / `idpbuilder get secrets` | +| ArgoCD | https://cnoe.localtest.me:8443/argocd | admin / `idpbuilder get secrets -p argocd` | +| Gitea | https://cnoe.localtest.me:8443/gitea | giteaAdmin / `idpbuilder get secrets -p gitea` | +| Keycloak | https://cnoe.localtest.me:8443/keycloak | cnoe-admin / `idpbuilder get secrets` | + +## Verification + +| Integration | How to verify | +|---|---| +| Catalog | `/catalog` — entities loaded from Gitea | +| APIs | `/api-docs` — API entities visible | +| Scaffolder | `/create` → choose template → creates repo in Gitea | +| Keycloak | Sign in via Keycloak OIDC | +| Kubernetes | Entity page → Kubernetes tab shows pods | +| ArgoCD | Entity page → ArgoCD card shows app status | +| Kro | `kubectl get rgd -A` — WebApp ResourceGraphDefinition present | +| TechDocs | `/docs` — documentation renders | +| Search | `/search` — results from catalog + techdocs | + +## Iterate + +```bash +# After code changes: +docker build -t ghcr.io/cnoe-io/backstage-app:local . +docker save ghcr.io/cnoe-io/backstage-app:local | \ + docker exec -i localdev-control-plane ctr -n k8s.io images import --all-platforms - +kubectl -n backstage rollout restart deployment/backstage +``` + +## Mock Mode (no cluster needed) + +For local development without any external services: + +```bash +MOCK_MODE=true yarn dev +``` + +Mock entities in `examples/local-stack/mock-entities/catalog-info.yaml` are wired to the mock backends with correct annotations for Kubernetes, ArgoCD, Spark, Argo Workflows, and Terraform tabs. + +## Troubleshooting + +**Kro controller not starting**: Verify Helm install: `helm list -n kro-system` + +**Backstage can't see Kro resources**: Check RBAC: `kubectl auth can-i list resourcegraphdefinitions.kro.run --as=system:serviceaccount:backstage:backstage` + +**ArgoCD reverts image**: Disable auto-sync (step 5 above) + +**Image not found after load**: Ensure `imagePullPolicy: Never` is set on the deployment diff --git a/examples/local-stack/backstage-patch.yaml b/examples/local-stack/backstage-patch.yaml new file mode 100644 index 0000000..0387090 --- /dev/null +++ b/examples/local-stack/backstage-patch.yaml @@ -0,0 +1,19 @@ +apiVersion: argoproj.io/v1alpha1 +kind: Application +metadata: + name: backstage-kro-patch + namespace: argocd + labels: + env: dev +spec: + project: default + source: + repoURL: cnoe://backstage-patch/manifests + targetRevision: HEAD + path: "." + destination: + server: "https://kubernetes.default.svc" + namespace: backstage + syncPolicy: + automated: + selfHeal: true diff --git a/examples/local-stack/backstage-patch/manifests/install.yaml b/examples/local-stack/backstage-patch/manifests/install.yaml new file mode 100644 index 0000000..06b77f2 --- /dev/null +++ b/examples/local-stack/backstage-patch/manifests/install.yaml @@ -0,0 +1,52 @@ +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRole +metadata: + name: backstage-kro-reader +rules: + - apiGroups: ["kro.run"] + resources: ["resourcegraphdefinitions", "webapps"] + verbs: ["get", "list", "watch"] +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRoleBinding +metadata: + name: backstage-kro-reader +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: ClusterRole + name: backstage-kro-reader +subjects: + - kind: ServiceAccount + name: backstage + namespace: backstage +--- +apiVersion: v1 +kind: ConfigMap +metadata: + name: backstage-kro-config + namespace: backstage +data: + app-config.kro.yaml: | + kubernetes: + customResources: + - group: kro.run + apiVersion: v1alpha1 + plural: resourcegraphdefinitions + kubernetesIngestor: + components: + enabled: true + clusters: + - url: https://kubernetes.default.svc.cluster.local + name: local + authProvider: serviceAccount + skipTLSVerify: true + skipMetricsLookup: true + serviceAccountToken: + $file: /var/run/secrets/kubernetes.io/serviceaccount/token + caData: + $file: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt + kro: + enabled: true + permission: + enabled: false diff --git a/examples/local-stack/kro.yaml b/examples/local-stack/kro.yaml new file mode 100644 index 0000000..33f6f0b --- /dev/null +++ b/examples/local-stack/kro.yaml @@ -0,0 +1,21 @@ +apiVersion: argoproj.io/v1alpha1 +kind: Application +metadata: + name: kro + namespace: argocd + labels: + env: dev +spec: + project: default + source: + repoURL: cnoe://kro/manifests + targetRevision: HEAD + path: "." + destination: + server: "https://kubernetes.default.svc" + namespace: kro-system + syncPolicy: + syncOptions: + - CreateNamespace=true + automated: + selfHeal: true diff --git a/examples/local-stack/kro/manifests/install.yaml b/examples/local-stack/kro/manifests/install.yaml new file mode 100644 index 0000000..3cbc485 --- /dev/null +++ b/examples/local-stack/kro/manifests/install.yaml @@ -0,0 +1,63 @@ +--- +apiVersion: v1 +kind: Namespace +metadata: + name: kro-system +--- +# NOTE: Kro controller is installed via Helm (see README.md): +# helm install kro oci://registry.k8s.io/kro/charts/kro --namespace kro-system --create-namespace +# +# The CRD and sample ResourceGraphDefinition below are applied after Helm install. +--- +apiVersion: kro.run/v1alpha1 +kind: ResourceGraphDefinition +metadata: + name: webapp + namespace: default +spec: + schema: + apiVersion: v1alpha1 + kind: WebApp + spec: + name: + type: string + image: + type: string + default: nginx:latest + replicas: + type: integer + default: 1 + resources: + - id: deployment + template: + apiVersion: apps/v1 + kind: Deployment + metadata: + name: ${schema.spec.name} + spec: + replicas: ${schema.spec.replicas} + selector: + matchLabels: + app: ${schema.spec.name} + template: + metadata: + labels: + app: ${schema.spec.name} + spec: + containers: + - name: main + image: ${schema.spec.image} + ports: + - containerPort: 80 + - id: service + template: + apiVersion: v1 + kind: Service + metadata: + name: ${schema.spec.name} + spec: + selector: + app: ${schema.spec.name} + ports: + - port: 80 + targetPort: 80 diff --git a/examples/local-stack/mock-entities/catalog-info.yaml b/examples/local-stack/mock-entities/catalog-info.yaml new file mode 100644 index 0000000..130b28e --- /dev/null +++ b/examples/local-stack/mock-entities/catalog-info.yaml @@ -0,0 +1,196 @@ +--- +# System +apiVersion: backstage.io/v1alpha1 +kind: System +metadata: + name: cnoe-platform + description: CNOE Internal Developer Platform + tags: [platform, cnoe] +spec: + owner: guests + +--- +# Platform API Service — wired to K8s + ArgoCD mock data +apiVersion: backstage.io/v1alpha1 +kind: Component +metadata: + name: platform-api-service + description: Platform API backend service with Kubernetes and ArgoCD integration + tags: [go, api, kubernetes] + annotations: + backstage.io/kubernetes-id: platform-api-service + argocd/app-name: platform-api-service + backstage.io/techdocs-ref: dir:. + links: + - url: https://github.com/cnoe-io/platform-api + title: GitHub + icon: github +spec: + type: service + lifecycle: production + owner: guests + system: cnoe-platform + providesApis: + - platform-api + +--- +# Developer Portal — frontend component +apiVersion: backstage.io/v1alpha1 +kind: Component +metadata: + name: developer-portal + description: Backstage-based developer portal + tags: [backstage, react, typescript] + annotations: + backstage.io/techdocs-ref: dir:. +spec: + type: website + lifecycle: production + owner: guests + system: cnoe-platform + consumesApis: + - platform-api + +--- +# Data Pipeline — wired to Spark + Argo Workflows mock data +apiVersion: backstage.io/v1alpha1 +kind: Component +metadata: + name: data-pipeline + description: ETL data pipeline using Apache Spark and Argo Workflows + tags: [spark, python, data] + annotations: + backstage.io/kubernetes-id: spark-etl-job + apache-spark/app-name: spark-etl-job + argo-workflows/namespace: default +spec: + type: service + lifecycle: production + owner: guests + system: cnoe-platform + +--- +# Infrastructure Service — wired to Terraform mock data +apiVersion: backstage.io/v1alpha1 +kind: Component +metadata: + name: infrastructure-service + description: Infrastructure management service using Terraform + tags: [terraform, infrastructure, aws] + annotations: + backstage.io/kubernetes-id: infrastructure-service + terraform/state-key: cnoe-platform/infrastructure +spec: + type: service + lifecycle: production + owner: guests + system: cnoe-platform + +--- +# Platform API definition +apiVersion: backstage.io/v1alpha1 +kind: API +metadata: + name: platform-api + description: CNOE Platform REST API + tags: [rest, openapi] +spec: + type: openapi + lifecycle: production + owner: guests + system: cnoe-platform + definition: | + openapi: 3.0.0 + info: + title: CNOE Platform API + version: 1.0.0 + description: API for managing platform resources + paths: + /api/v1/resources: + get: + summary: List resources + responses: + '200': + description: List of resources + /api/v1/resources/{id}: + get: + summary: Get resource by ID + parameters: + - name: id + in: path + required: true + schema: + type: string + responses: + '200': + description: Resource details + +--- +# gRPC API +apiVersion: backstage.io/v1alpha1 +kind: API +metadata: + name: platform-grpc-api + description: CNOE Platform gRPC API for internal services + tags: [grpc, protobuf] +spec: + type: grpc + lifecycle: production + owner: guests + system: cnoe-platform + definition: | + syntax = "proto3"; + package cnoe.platform.v1; + service PlatformService { + rpc GetResource (GetResourceRequest) returns (Resource); + rpc ListResources (ListResourcesRequest) returns (ListResourcesResponse); + } + message GetResourceRequest { string id = 1; } + message Resource { string id = 1; string name = 2; string type = 3; } + message ListResourcesRequest { int32 page_size = 1; string page_token = 2; } + message ListResourcesResponse { repeated Resource resources = 1; string next_page_token = 2; } + +--- +# Database Resource +apiVersion: backstage.io/v1alpha1 +kind: Resource +metadata: + name: platform-database + description: PostgreSQL database for the platform + tags: [postgresql, database] +spec: + type: database + owner: guests + system: cnoe-platform + +--- +# S3 Bucket Resource +apiVersion: backstage.io/v1alpha1 +kind: Resource +metadata: + name: platform-storage + description: S3 bucket for platform artifacts + tags: [s3, storage, aws] +spec: + type: s3-bucket + owner: guests + system: cnoe-platform + +--- +# User and Group +apiVersion: backstage.io/v1alpha1 +kind: Group +metadata: + name: guests + description: Guest users group +spec: + type: team + children: [] + +--- +apiVersion: backstage.io/v1alpha1 +kind: User +metadata: + name: guest +spec: + memberOf: [guests] diff --git a/examples/mkdocs.yml b/examples/mkdocs.yml new file mode 100644 index 0000000..94d681f --- /dev/null +++ b/examples/mkdocs.yml @@ -0,0 +1,4 @@ +site_name: developer-portal +docs_dir: docs +plugins: + - techdocs-core diff --git a/examples/org.yaml b/examples/org.yaml index a10e81f..9579159 100644 --- a/examples/org.yaml +++ b/examples/org.yaml @@ -1,17 +1,46 @@ --- -# https://backstage.io/docs/features/software-catalog/descriptor-format#kind-user apiVersion: backstage.io/v1alpha1 kind: User metadata: name: guest spec: - memberOf: [guests] + memberOf: [platform-team] + +--- +apiVersion: backstage.io/v1alpha1 +kind: User +metadata: + name: admin + description: Platform administrator +spec: + memberOf: [platform-team, infra-team] + +--- +apiVersion: backstage.io/v1alpha1 +kind: Group +metadata: + name: platform-team + description: Platform engineering team +spec: + type: team + children: [] + +--- +apiVersion: backstage.io/v1alpha1 +kind: Group +metadata: + name: infra-team + description: Infrastructure team +spec: + type: team + children: [] + --- -# https://backstage.io/docs/features/software-catalog/descriptor-format#kind-group apiVersion: backstage.io/v1alpha1 kind: Group metadata: name: guests + description: Guest users spec: type: team children: [] diff --git a/examples/template/template.yaml b/examples/template/template.yaml index 33f262b..a729794 100644 --- a/examples/template/template.yaml +++ b/examples/template/template.yaml @@ -1,5 +1,4 @@ apiVersion: scaffolder.backstage.io/v1beta3 -# https://backstage.io/docs/features/software-catalog/descriptor-format#kind-template kind: Template metadata: name: example-nodejs-template @@ -8,9 +7,6 @@ metadata: spec: owner: user:guest type: service - - # These parameters are used to generate the input form in the frontend, and are - # used to gather input data for the execution of the template. parameters: - title: Fill in some steps required: @@ -34,11 +30,7 @@ spec: ui:options: allowedHosts: - github.com - - # These steps are executed in the scaffolder backend, using data that we gathered - # via the parameters above. steps: - # Each step executes an action, in this case one templates files into the working directory. - id: fetch-base name: Fetch Base action: fetch:template @@ -46,8 +38,6 @@ spec: url: ./content values: name: ${{ parameters.name }} - - # This step publishes the contents of the working directory to GitHub. - id: publish name: Publish action: publish:github @@ -55,16 +45,12 @@ spec: allowedHosts: ['github.com'] description: This is ${{ parameters.name }} repoUrl: ${{ parameters.repoUrl }} - - # The final step is to register our new component in the catalog. - id: register name: Register action: catalog:register input: repoContentsUrl: ${{ steps['publish'].output.repoContentsUrl }} catalogInfoPath: '/catalog-info.yaml' - - # Outputs are displayed to the user after a successful execution of the template. output: links: - title: Repository diff --git a/examples/theme-previews/option-a-classic.html b/examples/theme-previews/option-a-classic.html new file mode 100644 index 0000000..fc24c2a --- /dev/null +++ b/examples/theme-previews/option-a-classic.html @@ -0,0 +1,66 @@ + + + + +Option A: Classic CNOE + + + + +

Option A: Classic CNOE — Light

+

Internal Developer Platform

Welcome back, developer

CICD Pipeline RG

Kro ResourceGroup for CI/CD

kro-resource-group

EKS Cluster RG

Provision EKS with VPC

production

Example Website

Example website component

website

Platform Infra

Platform infrastructure

system
+

Option A: Classic CNOE — Dark

+

Internal Developer Platform

Welcome back, developer

CICD Pipeline RG

Kro ResourceGroup for CI/CD

kro-resource-group

EKS Cluster RG

Provision EKS with VPC

production

Example Website

Example website component

website

Platform Infra

Platform infrastructure

system
+ diff --git a/examples/theme-previews/option-b-vibrant.html b/examples/theme-previews/option-b-vibrant.html new file mode 100644 index 0000000..0d57e08 --- /dev/null +++ b/examples/theme-previews/option-b-vibrant.html @@ -0,0 +1,67 @@ + + + + +Option B: CNOE Vibrant + + + + +

Option B: Vibrant — Light (dark sidebar)

+

Internal Developer Platform

Welcome back, developer

CICD Pipeline RG

Kro ResourceGroup for CI/CD

kro-resource-group

EKS Cluster RG

Provision EKS with VPC

production

Example Website

Example website component

website

Platform Infra

Platform infrastructure

system
+

Option B: Vibrant — Dark

+

Internal Developer Platform

Welcome back, developer

CICD Pipeline RG

Kro ResourceGroup for CI/CD

kro-resource-group

EKS Cluster RG

Provision EKS with VPC

production

Example Website

Example website component

website

Platform Infra

Platform infrastructure

system
+ diff --git a/examples/theme-previews/option-c-minimal.html b/examples/theme-previews/option-c-minimal.html new file mode 100644 index 0000000..b4b7066 --- /dev/null +++ b/examples/theme-previews/option-c-minimal.html @@ -0,0 +1,67 @@ + + + + +Option C: CNOE Minimal + + + + +

Option C: Minimal — Light (flat, no gradients)

+

Internal Developer Platform

Welcome back, developer

CICD Pipeline RG

Kro ResourceGroup for CI/CD

kro-resource-group

EKS Cluster RG

Provision EKS with VPC

production

Example Website

Example website component

website

Platform Infra

Platform infrastructure

system
+

Option C: Minimal — Dark (flat)

+

Internal Developer Platform

Welcome back, developer

CICD Pipeline RG

Kro ResourceGroup for CI/CD

kro-resource-group

EKS Cluster RG

Provision EKS with VPC

production

Example Website

Example website component

website

Platform Infra

Platform infrastructure

system
+ diff --git a/lerna.json b/lerna.json deleted file mode 100644 index 529a62f..0000000 --- a/lerna.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "packages": ["packages/*", "plugins/*"], - "npmClient": "yarn", - "version": "0.1.0", - "$schema": "node_modules/lerna/schemas/lerna-schema.json" -} diff --git a/package.json b/package.json index a7f7fc5..59c8b50 100644 --- a/package.json +++ b/package.json @@ -3,26 +3,26 @@ "version": "1.0.0", "private": true, "engines": { - "node": "18 || 20" + "node": "18 || 20 || 22" }, "scripts": { - "dev": "concurrently \"yarn start\" \"yarn start-backend\"", + "dev": "HOST=0.0.0.0 concurrently \"yarn start\" \"yarn start-backend\"", + "dev:mock": "MOCK_MODE=true yarn dev", "start": "yarn workspace app start", "start-backend": "yarn workspace backend start", "build:backend": "yarn workspace backend build", "build:all": "backstage-cli repo build --all", - "build-image": "yarn workspace backend build-image", "tsc": "tsc", "tsc:full": "tsc --skipLibCheck false --incremental false", "clean": "backstage-cli repo clean", "test": "backstage-cli repo test", "test:all": "backstage-cli repo test --coverage", - "test:e2e": "playwright test", "fix": "backstage-cli repo fix", "lint": "backstage-cli repo lint --since origin/main", "lint:all": "backstage-cli repo lint", "prettier:check": "prettier --check .", - "new": "backstage-cli new --scope internal" + "new": "backstage-cli new --scope internal", + "test:e2e": "npx playwright test" }, "workspaces": { "packages": [ @@ -31,28 +31,21 @@ ] }, "devDependencies": { - "@backstage/cli": "^0.26.10", - "@backstage/e2e-test-utils": "^0.1.1", - "@playwright/test": "^1.32.3", - "@spotify/prettier-config": "^12.0.0", + "@backstage/cli": "^0.36.0", + "@backstage/cli-defaults": "^0.1.0", + "@playwright/test": "^1.59.1", + "@spotify/prettier-config": "^15.0.0", "concurrently": "^8.0.0", - "lerna": "^7.3.0", - "node-gyp": "^9.0.0", "prettier": "^2.3.2", - "typescript": "~5.2.0" + "typescript": "~5.4.0" }, "resolutions": { "@types/react": "^18", - "@types/react-dom": "^18" + "@types/react-dom": "^18", + "isolated-vm": "5.0.1", + "@mui/material": "^5.15.6", + "react-router": "^6.30.2", + "react-router-dom": "^6.30.2" }, - "prettier": "@spotify/prettier-config", - "lint-staged": { - "*.{js,jsx,ts,tsx,mjs,cjs}": [ - "eslint --fix", - "prettier --write" - ], - "*.{json,md}": [ - "prettier --write" - ] - } + "prettier": "@spotify/prettier-config" } diff --git a/packages/app/.eslintignore b/packages/app/.eslintignore deleted file mode 100644 index a48cf0d..0000000 --- a/packages/app/.eslintignore +++ /dev/null @@ -1 +0,0 @@ -public diff --git a/packages/app/package.json b/packages/app/package.json index c7b1b72..a5b457e 100644 --- a/packages/app/package.json +++ b/packages/app/package.json @@ -7,63 +7,65 @@ "role": "frontend" }, "scripts": { - "start": "backstage-cli package start", + "start": "HOST=0.0.0.0 backstage-cli package start", "build": "backstage-cli package build", "clean": "backstage-cli package clean", "test": "backstage-cli package test", "lint": "backstage-cli package lint" }, "dependencies": { - "@backstage/app-defaults": "^1.5.7", - "@backstage/catalog-model": "^1.5.0", - "@backstage/cli": "^0.26.10", - "@backstage/core-app-api": "^1.13.0", - "@backstage/core-components": "^0.14.8", - "@backstage/core-plugin-api": "^1.9.3", - "@backstage/integration-react": "^1.1.28", - "@backstage/plugin-api-docs": "^0.11.6", - "@backstage/plugin-catalog": "^1.21.0", - "@backstage/plugin-catalog-common": "^1.0.24", - "@backstage/plugin-catalog-graph": "^0.4.6", - "@backstage/plugin-catalog-import": "^0.12.0", - "@backstage/plugin-catalog-react": "^1.12.1", - "@backstage/plugin-home": "^0.7.6", - "@backstage/plugin-kubernetes": "^0.11.11", - "@backstage/plugin-org": "^0.6.26", - "@backstage/plugin-permission-react": "^0.4.23", - "@backstage/plugin-scaffolder": "^1.22.0", - "@backstage/plugin-search": "^1.4.13", - "@backstage/plugin-search-react": "^1.7.12", - "@backstage/plugin-techdocs": "^1.10.6", - "@backstage/plugin-techdocs-module-addons-contrib": "^1.1.11", - "@backstage/plugin-techdocs-react": "^1.2.5", - "@backstage/plugin-user-settings": "^0.8.8", - "@backstage/theme": "^0.5.6", + "@backstage-community/plugin-github-actions": "^0.22.0", + "@backstage-community/plugin-tech-radar": "^1.17.0", + "@backstage/app-defaults": "^1.7.6", + "@backstage/catalog-model": "^1.7.7", + "@backstage/cli": "^0.34.6", + "@backstage/core-app-api": "^1.19.6", + "@backstage/core-compat-api": "^0.5.9", + "@backstage/core-components": "^0.18.8", + "@backstage/core-plugin-api": "^1.12.4", + "@backstage/frontend-defaults": "^0.5.0", + "@backstage/frontend-plugin-api": "^0.15.1", + "@backstage/integration-react": "^1.2.16", + "@backstage/plugin-api-docs": "^0.13.5", + "@backstage/plugin-app-react": "^0.2.1", + "@backstage/plugin-catalog": "^2.0.1", + "@backstage/plugin-catalog-common": "^1.1.8", + "@backstage/plugin-catalog-graph": "^0.6.0", + "@backstage/plugin-catalog-import": "^0.13.11", + "@backstage/plugin-catalog-react": "^2.1.1", + "@backstage/plugin-home": "^0.9.3", + "@backstage/plugin-kubernetes": "^0.12.17", + "@backstage/plugin-kubernetes-react": "^0.5.18", + "@backstage/plugin-org": "^0.7.0", + "@backstage/plugin-permission-react": "^0.4.41", + "@backstage/plugin-scaffolder": "^1.36.1", + "@backstage/plugin-search": "^1.7.0", + "@backstage/plugin-search-react": "^1.11.0", + "@backstage/plugin-techdocs": "^1.17.2", + "@backstage/plugin-techdocs-module-addons-contrib": "^1.1.34", + "@backstage/plugin-techdocs-react": "^1.3.9", + "@backstage/plugin-user-settings": "^0.9.1", + "@backstage/theme": "^0.7.2", + "@backstage/ui": "^0.13.2", "@internal/plugin-apache-spark": "^0.1.0", "@internal/plugin-argo-workflows": "^0.1.0", - "@internal/plugin-cnoe-ui": "^0.1.0", "@internal/plugin-terraform": "^0.1.0", - "@material-ui/core": "^4.12.2", - "@material-ui/icons": "^4.9.1", - "@roadiehq/backstage-plugin-argo-cd": "^2.5.1", - "history": "^5.0.0", + "@mui/icons-material": "^5.0.0", + "@mui/material": "^9.0.0", + "@roadiehq/backstage-plugin-argo-cd": "^2.12.5", + "@terasky/backstage-plugin-kro-resources-frontend": "^0.2.1", + "msw": "^1.0.0", "react": "^18.0.2", "react-dom": "^18.0.2", - "react-router": "^6.3.0", - "react-router-dom": "^6.3.0", - "react-use": "^17.2.4", - "@backstage-community/plugin-github-actions": "^0.6.16", - "@backstage-community/plugin-tech-radar": "^0.7.4" + "react-router-dom": "^6.3.0" }, "devDependencies": { - "@backstage/test-utils": "^1.5.7", - "@playwright/test": "^1.32.3", + "@backstage/test-utils": "^1.7.16", "@testing-library/dom": "^9.0.0", "@testing-library/jest-dom": "^6.0.0", "@testing-library/react": "^14.0.0", "@testing-library/user-event": "^14.0.0", - "@types/react-dom": "*", - "cross-env": "^7.0.0" + "@types/react-dom": "*" }, "browserslist": { "production": [ diff --git a/packages/app/public/android-chrome-192x192.png b/packages/app/public/android-chrome-192x192.png deleted file mode 100644 index eec0ae2..0000000 Binary files a/packages/app/public/android-chrome-192x192.png and /dev/null differ diff --git a/packages/app/public/apple-touch-icon.png b/packages/app/public/apple-touch-icon.png deleted file mode 100644 index 3158830..0000000 Binary files a/packages/app/public/apple-touch-icon.png and /dev/null differ diff --git a/packages/app/public/favicon-16x16.png b/packages/app/public/favicon-16x16.png deleted file mode 100644 index 58cf61a..0000000 Binary files a/packages/app/public/favicon-16x16.png and /dev/null differ diff --git a/packages/app/public/favicon-32x32.png b/packages/app/public/favicon-32x32.png deleted file mode 100644 index c0915ec..0000000 Binary files a/packages/app/public/favicon-32x32.png and /dev/null differ diff --git a/packages/app/public/favicon.ico b/packages/app/public/favicon.ico deleted file mode 100644 index 5e45e5d..0000000 Binary files a/packages/app/public/favicon.ico and /dev/null differ diff --git a/packages/app/public/img/argo-workflows.png b/packages/app/public/img/argo-workflows.png new file mode 100644 index 0000000..b9cb18e Binary files /dev/null and b/packages/app/public/img/argo-workflows.png differ diff --git a/packages/app/public/img/argocd.png b/packages/app/public/img/argocd.png new file mode 100644 index 0000000..9cb0573 Binary files /dev/null and b/packages/app/public/img/argocd.png differ diff --git a/packages/app/public/img/backstage-horizontal-color.png b/packages/app/public/img/backstage-horizontal-color.png new file mode 100644 index 0000000..fac3512 Binary files /dev/null and b/packages/app/public/img/backstage-horizontal-color.png differ diff --git a/packages/app/public/img/backstage-icon-color.png b/packages/app/public/img/backstage-icon-color.png new file mode 100644 index 0000000..f65f356 Binary files /dev/null and b/packages/app/public/img/backstage-icon-color.png differ diff --git a/packages/app/public/img/cnoe/logo-dark-no-name.png b/packages/app/public/img/cnoe/logo-dark-no-name.png new file mode 100644 index 0000000..31b4ffe Binary files /dev/null and b/packages/app/public/img/cnoe/logo-dark-no-name.png differ diff --git a/packages/app/public/img/cnoe/logo-dark.png b/packages/app/public/img/cnoe/logo-dark.png new file mode 100644 index 0000000..7143248 Binary files /dev/null and b/packages/app/public/img/cnoe/logo-dark.png differ diff --git a/packages/app/public/img/cnoe/logo-no-name.png b/packages/app/public/img/cnoe/logo-no-name.png new file mode 100644 index 0000000..82f4320 Binary files /dev/null and b/packages/app/public/img/cnoe/logo-no-name.png differ diff --git a/packages/app/public/img/cnoe/logo-white.png b/packages/app/public/img/cnoe/logo-white.png new file mode 100644 index 0000000..7e80594 Binary files /dev/null and b/packages/app/public/img/cnoe/logo-white.png differ diff --git a/packages/app/public/img/cnoe/logo.png b/packages/app/public/img/cnoe/logo.png new file mode 100644 index 0000000..d3a569b Binary files /dev/null and b/packages/app/public/img/cnoe/logo.png differ diff --git a/packages/app/public/img/gitlab.png b/packages/app/public/img/gitlab.png new file mode 100644 index 0000000..b18437d Binary files /dev/null and b/packages/app/public/img/gitlab.png differ diff --git a/packages/app/public/img/kargo.png b/packages/app/public/img/kargo.png new file mode 100644 index 0000000..67bd6ad Binary files /dev/null and b/packages/app/public/img/kargo.png differ diff --git a/packages/app/public/img/keycloak.png b/packages/app/public/img/keycloak.png new file mode 100644 index 0000000..6a79a7a Binary files /dev/null and b/packages/app/public/img/keycloak.png differ diff --git a/packages/app/public/index.html b/packages/app/public/index.html deleted file mode 100644 index fc758ee..0000000 --- a/packages/app/public/index.html +++ /dev/null @@ -1,60 +0,0 @@ - - - - - - - - - - - - - - - - <%= config.getString('app.title') %> - - - -
- - - diff --git a/packages/app/public/manifest.json b/packages/app/public/manifest.json deleted file mode 100644 index 4a7c1b4..0000000 --- a/packages/app/public/manifest.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "short_name": "Backstage", - "name": "Backstage", - "icons": [ - { - "src": "favicon.ico", - "sizes": "48x48", - "type": "image/png" - } - ], - "start_url": "./index.html", - "display": "standalone", - "theme_color": "#000000", - "background_color": "#ffffff" -} diff --git a/packages/app/public/mockServiceWorker.js b/packages/app/public/mockServiceWorker.js new file mode 100644 index 0000000..1f45c4c --- /dev/null +++ b/packages/app/public/mockServiceWorker.js @@ -0,0 +1,303 @@ +/* eslint-disable */ +/* tslint:disable */ + +/** + * Mock Service Worker (1.3.5). + * @see https://github.com/mswjs/msw + * - Please do NOT modify this file. + * - Please do NOT serve this file on production. + */ + +const INTEGRITY_CHECKSUM = '3d6b9f06410d179a7f7404d4bf4c3c70' +const activeClientIds = new Set() + +self.addEventListener('install', function () { + self.skipWaiting() +}) + +self.addEventListener('activate', function (event) { + event.waitUntil(self.clients.claim()) +}) + +self.addEventListener('message', async function (event) { + const clientId = event.source.id + + if (!clientId || !self.clients) { + return + } + + const client = await self.clients.get(clientId) + + if (!client) { + return + } + + const allClients = await self.clients.matchAll({ + type: 'window', + }) + + switch (event.data) { + case 'KEEPALIVE_REQUEST': { + sendToClient(client, { + type: 'KEEPALIVE_RESPONSE', + }) + break + } + + case 'INTEGRITY_CHECK_REQUEST': { + sendToClient(client, { + type: 'INTEGRITY_CHECK_RESPONSE', + payload: INTEGRITY_CHECKSUM, + }) + break + } + + case 'MOCK_ACTIVATE': { + activeClientIds.add(clientId) + + sendToClient(client, { + type: 'MOCKING_ENABLED', + payload: true, + }) + break + } + + case 'MOCK_DEACTIVATE': { + activeClientIds.delete(clientId) + break + } + + case 'CLIENT_CLOSED': { + activeClientIds.delete(clientId) + + const remainingClients = allClients.filter((client) => { + return client.id !== clientId + }) + + // Unregister itself when there are no more clients + if (remainingClients.length === 0) { + self.registration.unregister() + } + + break + } + } +}) + +self.addEventListener('fetch', function (event) { + const { request } = event + const accept = request.headers.get('accept') || '' + + // Bypass server-sent events. + if (accept.includes('text/event-stream')) { + return + } + + // Bypass navigation requests. + if (request.mode === 'navigate') { + return + } + + // Opening the DevTools triggers the "only-if-cached" request + // that cannot be handled by the worker. Bypass such requests. + if (request.cache === 'only-if-cached' && request.mode !== 'same-origin') { + return + } + + // Bypass all requests when there are no active clients. + // Prevents the self-unregistered worked from handling requests + // after it's been deleted (still remains active until the next reload). + if (activeClientIds.size === 0) { + return + } + + // Generate unique request ID. + const requestId = Math.random().toString(16).slice(2) + + event.respondWith( + handleRequest(event, requestId).catch((error) => { + if (error.name === 'NetworkError') { + console.warn( + '[MSW] Successfully emulated a network error for the "%s %s" request.', + request.method, + request.url, + ) + return + } + + // At this point, any exception indicates an issue with the original request/response. + console.error( + `\ +[MSW] Caught an exception from the "%s %s" request (%s). This is probably not a problem with Mock Service Worker. There is likely an additional logging output above.`, + request.method, + request.url, + `${error.name}: ${error.message}`, + ) + }), + ) +}) + +async function handleRequest(event, requestId) { + const client = await resolveMainClient(event) + const response = await getResponse(event, client, requestId) + + // Send back the response clone for the "response:*" life-cycle events. + // Ensure MSW is active and ready to handle the message, otherwise + // this message will pend indefinitely. + if (client && activeClientIds.has(client.id)) { + ;(async function () { + const clonedResponse = response.clone() + sendToClient(client, { + type: 'RESPONSE', + payload: { + requestId, + type: clonedResponse.type, + ok: clonedResponse.ok, + status: clonedResponse.status, + statusText: clonedResponse.statusText, + body: + clonedResponse.body === null ? null : await clonedResponse.text(), + headers: Object.fromEntries(clonedResponse.headers.entries()), + redirected: clonedResponse.redirected, + }, + }) + })() + } + + return response +} + +// Resolve the main client for the given event. +// Client that issues a request doesn't necessarily equal the client +// that registered the worker. It's with the latter the worker should +// communicate with during the response resolving phase. +async function resolveMainClient(event) { + const client = await self.clients.get(event.clientId) + + if (client?.frameType === 'top-level') { + return client + } + + const allClients = await self.clients.matchAll({ + type: 'window', + }) + + return allClients + .filter((client) => { + // Get only those clients that are currently visible. + return client.visibilityState === 'visible' + }) + .find((client) => { + // Find the client ID that's recorded in the + // set of clients that have registered the worker. + return activeClientIds.has(client.id) + }) +} + +async function getResponse(event, client, requestId) { + const { request } = event + const clonedRequest = request.clone() + + function passthrough() { + // Clone the request because it might've been already used + // (i.e. its body has been read and sent to the client). + const headers = Object.fromEntries(clonedRequest.headers.entries()) + + // Remove MSW-specific request headers so the bypassed requests + // comply with the server's CORS preflight check. + // Operate with the headers as an object because request "Headers" + // are immutable. + delete headers['x-msw-bypass'] + + return fetch(clonedRequest, { headers }) + } + + // Bypass mocking when the client is not active. + if (!client) { + return passthrough() + } + + // Bypass initial page load requests (i.e. static assets). + // The absence of the immediate/parent client in the map of the active clients + // means that MSW hasn't dispatched the "MOCK_ACTIVATE" event yet + // and is not ready to handle requests. + if (!activeClientIds.has(client.id)) { + return passthrough() + } + + // Bypass requests with the explicit bypass header. + // Such requests can be issued by "ctx.fetch()". + if (request.headers.get('x-msw-bypass') === 'true') { + return passthrough() + } + + // Notify the client that a request has been intercepted. + const clientMessage = await sendToClient(client, { + type: 'REQUEST', + payload: { + id: requestId, + url: request.url, + method: request.method, + headers: Object.fromEntries(request.headers.entries()), + cache: request.cache, + mode: request.mode, + credentials: request.credentials, + destination: request.destination, + integrity: request.integrity, + redirect: request.redirect, + referrer: request.referrer, + referrerPolicy: request.referrerPolicy, + body: await request.text(), + bodyUsed: request.bodyUsed, + keepalive: request.keepalive, + }, + }) + + switch (clientMessage.type) { + case 'MOCK_RESPONSE': { + return respondWithMock(clientMessage.data) + } + + case 'MOCK_NOT_FOUND': { + return passthrough() + } + + case 'NETWORK_ERROR': { + const { name, message } = clientMessage.data + const networkError = new Error(message) + networkError.name = name + + // Rejecting a "respondWith" promise emulates a network error. + throw networkError + } + } + + return passthrough() +} + +function sendToClient(client, message) { + return new Promise((resolve, reject) => { + const channel = new MessageChannel() + + channel.port1.onmessage = (event) => { + if (event.data && event.data.error) { + return reject(event.data.error) + } + + resolve(event.data) + } + + client.postMessage(message, [channel.port2]) + }) +} + +function sleep(timeMs) { + return new Promise((resolve) => { + setTimeout(resolve, timeMs) + }) +} + +async function respondWithMock(response) { + await sleep(response.delay) + return new Response(response.body, response) +} diff --git a/packages/app/public/robots.txt b/packages/app/public/robots.txt deleted file mode 100644 index 01b0f9a..0000000 --- a/packages/app/public/robots.txt +++ /dev/null @@ -1,2 +0,0 @@ -# https://www.robotstxt.org/robotstxt.html -User-agent: * diff --git a/packages/app/public/safari-pinned-tab.svg b/packages/app/public/safari-pinned-tab.svg deleted file mode 100644 index 0f500b3..0000000 --- a/packages/app/public/safari-pinned-tab.svg +++ /dev/null @@ -1 +0,0 @@ -Created by potrace 1.11, written by Peter Selinger 2001-2013 \ No newline at end of file diff --git a/packages/app/src/App.test.tsx b/packages/app/src/App.test.tsx deleted file mode 100644 index ec8ba1d..0000000 --- a/packages/app/src/App.test.tsx +++ /dev/null @@ -1,29 +0,0 @@ -import React from 'react'; -import { render, waitFor } from '@testing-library/react'; -import App from './App'; - -describe('App', () => { - it('should render', async () => { - process.env = { - NODE_ENV: 'test', - APP_CONFIG: [ - { - data: { - app: { title: 'Test' }, - backend: { baseUrl: 'http://localhost:7007' }, - techdocs: { - storageUrl: 'http://localhost:7007/api/techdocs/static/docs', - }, - }, - context: 'test', - }, - ] as any, - }; - - const rendered = render(); - - await waitFor(() => { - expect(rendered.baseElement).toBeInTheDocument(); - }); - }); -}); diff --git a/packages/app/src/App.tsx b/packages/app/src/App.tsx index ae87f47..abb34f2 100644 --- a/packages/app/src/App.tsx +++ b/packages/app/src/App.tsx @@ -1,6 +1,6 @@ -import React from 'react'; + import { Navigate, Route } from 'react-router-dom'; -import { apiDocsPlugin, ApiExplorerPage } from '@backstage/plugin-api-docs'; +import { apiDocsPlugin } from '@backstage/plugin-api-docs'; import { CatalogEntityPage, CatalogIndexPage, @@ -22,50 +22,31 @@ import { import { TechDocsAddons } from '@backstage/plugin-techdocs-react'; import { ReportIssue } from '@backstage/plugin-techdocs-module-addons-contrib'; import { UserSettingsPage } from '@backstage/plugin-user-settings'; -import {apis, keycloakOIDCAuthApiRef} from './apis'; +import { apis } from './apis'; import { entityPage } from './components/catalog/EntityPage'; import { searchPage } from './components/search/SearchPage'; import { Root } from './components/Root'; - -import {AlertDisplay, OAuthRequestDialog, SignInPage} from '@backstage/core-components'; +import { + AlertDisplay, + OAuthRequestDialog, + SignInPage, +} from '@backstage/core-components'; import { createApp } from '@backstage/app-defaults'; import { AppRouter, FlatRoutes } from '@backstage/core-app-api'; import { CatalogGraphPage } from '@backstage/plugin-catalog-graph'; import { RequirePermission } from '@backstage/plugin-permission-react'; import { catalogEntityCreatePermission } from '@backstage/plugin-catalog-common/alpha'; -import LightIcon from '@material-ui/icons/WbSunny'; -import { - CNOEHomepage, - cnoeLightTheme, - cnoeDarkTheme, -} from '@internal/plugin-cnoe-ui'; -import {configApiRef, useApi} from "@backstage/core-plugin-api"; -import { ArgoWorkflowsPage } from '@internal/plugin-argo-workflows'; -import { ApacheSparkPage } from '@internal/plugin-apache-spark'; -import { - UnifiedThemeProvider -} from "@backstage/theme"; -import { TerraformPluginPage } from '@internal/plugin-terraform'; +import { cnoeVibrantLightAppTheme, cnoeVibrantDarkAppTheme } from './theme'; +import { Homepage } from './components/home/Homepage'; +import { CustomApiExplorerPage } from './components/api/ApiExplorerPage'; +import { EntityKindPicker } from '@backstage/plugin-catalog-react'; const app = createApp({ apis, + themes: [cnoeVibrantLightAppTheme, cnoeVibrantDarkAppTheme], components: { SignInPage: props => { - const configApi = useApi(configApiRef); - if (configApi.getString('auth.environment') === 'local') { - return ; - } - return ( - - ); + return ; }, }, bindRoutes({ bind }) { @@ -85,33 +66,13 @@ const app = createApp({ catalogIndex: catalogPlugin.routes.catalogIndex, }); }, - themes: [ - { - id: 'cnoe-light-theme', - title: 'Light Theme', - variant: 'light', - icon: , - Provider: ({ children }) => ( - - ), - }, - { - id: 'cnoe-dark-theme', - title: 'Dark Theme', - variant: 'dark', - icon: , - Provider: ({ children }) => ( - - ), - }, - ], }); const routes = ( } /> - } /> - } /> + } /> + ); @@ -161,6 +119,3 @@ export default app.createRoot( , ); - - - diff --git a/packages/app/src/apis.ts b/packages/app/src/apis.ts index 68db2f8..bb3ff2a 100644 --- a/packages/app/src/apis.ts +++ b/packages/app/src/apis.ts @@ -4,24 +4,78 @@ import { ScmAuth, } from '@backstage/integration-react'; import { - AnyApiFactory, ApiRef, BackstageIdentityApi, + AnyApiFactory, + ApiRef, + BackstageIdentityApi, configApiRef, - createApiFactory, createApiRef, discoveryApiRef, oauthRequestApiRef, OpenIdConnectApi, ProfileInfoApi, SessionApi, + createApiFactory, + createApiRef, + discoveryApiRef, + identityApiRef, + oauthRequestApiRef, + OpenIdConnectApi, + ProfileInfoApi, + SessionApi, } from '@backstage/core-plugin-api'; -import {OAuth2} from "@backstage/core-app-api"; +import { OAuth2 } from '@backstage/core-app-api'; +import { + kubernetesApiRef, + kubernetesAuthProvidersApiRef, + KubernetesBackendClient, + KubernetesAuthProviders, +} from '@backstage/plugin-kubernetes-react'; +import { + argoCDApiRef, + ArgoCDApiClient, +} from '@roadiehq/backstage-plugin-argo-cd'; export const keycloakOIDCAuthApiRef: ApiRef< OpenIdConnectApi & ProfileInfoApi & BackstageIdentityApi & SessionApi > = createApiRef({ id: 'auth.keycloak-oidc', }); + export const apis: AnyApiFactory[] = [ createApiFactory({ api: scmIntegrationsApiRef, - deps: {configApi: configApiRef}, - factory: ({configApi}) => ScmIntegrationsApi.fromConfig(configApi), + deps: { configApi: configApiRef }, + factory: ({ configApi }) => ScmIntegrationsApi.fromConfig(configApi), }), ScmAuth.createDefaultApiFactory(), + createApiFactory({ + api: kubernetesAuthProvidersApiRef, + deps: {}, + factory: () => new KubernetesAuthProviders({ + microsoftAuthApi: undefined as any, + googleAuthApi: undefined as any, + }), + }), + createApiFactory({ + api: kubernetesApiRef, + deps: { + discoveryApi: discoveryApiRef, + fetchApi: { id: 'core.fetch', T: {} as any }, + kubernetesAuthProvidersApi: kubernetesAuthProvidersApiRef, + } as any, + factory: ({ discoveryApi, fetchApi, kubernetesAuthProvidersApi }: any) => + new KubernetesBackendClient({ discoveryApi, fetchApi, kubernetesAuthProvidersApi }), + }), + createApiFactory({ + api: argoCDApiRef, + deps: { + discoveryApi: discoveryApiRef, + identityApi: identityApiRef, + configApi: configApiRef, + }, + factory: ({ discoveryApi, identityApi, configApi }) => + new ArgoCDApiClient({ + discoveryApi, + identityApi, + backendBaseUrl: configApi.getString('backend.baseUrl'), + searchInstances: true, + useNamespacedApps: false, + }), + }), createApiFactory({ api: keycloakOIDCAuthApiRef, deps: { diff --git a/packages/app/src/components/Root/LogoFull.tsx b/packages/app/src/components/Root/LogoFull.tsx deleted file mode 100644 index 47e3b73..0000000 --- a/packages/app/src/components/Root/LogoFull.tsx +++ /dev/null @@ -1,30 +0,0 @@ -import React from 'react'; -import { makeStyles } from '@material-ui/core'; - -const useStyles = makeStyles({ - svg: { - width: 'auto', - height: 30, - }, - path: { - fill: '#7df3e1', - }, -}); -const LogoFull = () => { - const classes = useStyles(); - - return ( - - - - ); -}; - -export default LogoFull; diff --git a/packages/app/src/components/Root/LogoIcon.tsx b/packages/app/src/components/Root/LogoIcon.tsx deleted file mode 100644 index 7eae8c7..0000000 --- a/packages/app/src/components/Root/LogoIcon.tsx +++ /dev/null @@ -1,31 +0,0 @@ -import React from 'react'; -import { makeStyles } from '@material-ui/core'; - -const useStyles = makeStyles({ - svg: { - width: 'auto', - height: 28, - }, - path: { - fill: '#7df3e1', - }, -}); - -const LogoIcon = () => { - const classes = useStyles(); - - return ( - - - - ); -}; - -export default LogoIcon; diff --git a/packages/app/src/components/Root/Root.tsx b/packages/app/src/components/Root/Root.tsx index 28d7342..1861053 100644 --- a/packages/app/src/components/Root/Root.tsx +++ b/packages/app/src/components/Root/Root.tsx @@ -1,11 +1,14 @@ -import React, { PropsWithChildren } from 'react'; -import { makeStyles } from '@material-ui/core'; -import HomeIcon from '@material-ui/icons/Home'; -import ExtensionIcon from '@material-ui/icons/Extension'; -import MapIcon from '@material-ui/icons/MyLocation'; -import LibraryBooks from '@material-ui/icons/LibraryBooks'; -import CreateComponentIcon from '@material-ui/icons/AddCircleOutline'; -import {LogoFull, LogoIcon} from '@internal/plugin-cnoe-ui'; +import { type PropsWithChildren } from 'react'; +import HomeIcon from '@mui/icons-material/Home'; +import ExtensionIcon from '@mui/icons-material/Extension'; +import MapIcon from '@mui/icons-material/MyLocation'; +import LibraryBooks from '@mui/icons-material/LibraryBooks'; +import CreateComponentIcon from '@mui/icons-material/AddCircleOutline'; +import CategoryIcon from '@mui/icons-material/Category'; +import MenuIcon from '@mui/icons-material/Menu'; +import SearchIcon from '@mui/icons-material/Search'; +import GroupIcon from '@mui/icons-material/People'; +import { LogoFull, LogoIcon } from '../logos'; import { Settings as SidebarSettings, UserSettingsSignInAvatar, @@ -22,32 +25,38 @@ import { SidebarSpace, useSidebarOpenState, Link, + SidebarExpandButton, } from '@backstage/core-components'; -import MenuIcon from '@material-ui/icons/Menu'; -import SearchIcon from '@material-ui/icons/Search'; +import { MyGroupsSidebarItem } from '@backstage/plugin-org'; -const useSidebarLogoStyles = makeStyles({ +const sidebarLogoStyles = { root: { width: sidebarConfig.drawerWidthClosed, height: 3 * sidebarConfig.logoHeight, display: 'flex', - flexFlow: 'row nowrap', + flexFlow: 'row nowrap' as const, alignItems: 'center', - marginBottom: -14, + marginBottom: 8, + borderBottom: '1px solid rgba(255,255,255,0.1)', + paddingBottom: 16, }, link: { width: sidebarConfig.drawerWidthClosed, marginLeft: 24, }, -}); +}; const SidebarLogo = () => { - const classes = useSidebarLogoStyles(); const { isOpen } = useSidebarOpenState(); return ( -
- +
+ {isOpen ? : }
@@ -57,32 +66,68 @@ const SidebarLogo = () => { export const Root = ({ children }: PropsWithChildren<{}>) => ( + {/* Logo */} + + {/* Search — uses SidebarGroup so it aligns with other items */} } to="/search"> + + + {/* Main navigation */} }> - {/* Global nav, not org-specific */} - + + - {/* End global nav */} + + Tools + + + - } - to="/settings" + + {/* Collapse toggle */} +
{ (e.currentTarget as HTMLDivElement).style.opacity = '1'; }} + onMouseLeave={e => { (e.currentTarget as HTMLDivElement).style.opacity = '0.6'; }} > - - + +
+ + {/* Settings at bottom */} +
+ } + to="/settings" + > + + +
{children}
diff --git a/packages/app/src/components/api/ApiExplorerPage.tsx b/packages/app/src/components/api/ApiExplorerPage.tsx new file mode 100644 index 0000000..7e9c591 --- /dev/null +++ b/packages/app/src/components/api/ApiExplorerPage.tsx @@ -0,0 +1,196 @@ +import { useState, useRef, useEffect, type CSSProperties } from 'react'; +import { Content, Page } from '@backstage/core-components'; +import { + EntityListProvider, + EntityLifecyclePicker, + EntityOwnerPicker, + EntityTypePicker, + EntityKindPicker, + EntitySearchBar, +} from '@backstage/plugin-catalog-react'; +import { CatalogTable } from '@backstage/plugin-catalog'; +import FilterListIcon from '@mui/icons-material/FilterList'; + +const contentWrapperStyle: CSSProperties = { + width: '100%', + padding: '0 0.3vw 24px', +}; + +const waveSvg = `url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='1368' height='400' fill='none'%3e%3cmask id='a' width='1368' height='401' x='0' y='0' maskUnits='userSpaceOnUse'%3e%3cpath fill='url(%23paint0_linear)' d='M437 116C223 116 112 0 112 0h1256v400c-82 0-225-21-282-109-112-175-436-175-649-175z'/%3e%3cpath fill='url(%23paint1_linear)' d='M1368 400V282C891-29 788 40 711 161 608 324 121 372 0 361v39h1368z'/%3e%3cpath fill='url(%23paint2_linear)' d='M1368 244v156H0V94c92-24 198-46 375 0l135 41c176 51 195 109 858 109z'/%3e%3cpath fill='url(%23paint3_linear)' d='M1252 400h116c-14-7-35-14-116-16-663-14-837-128-1013-258l-85-61C98 28 46 8 0 0v400h1252z'/%3e%3c/mask%3e%3cg mask='url(%23a)'%3e%3cpath fill='white' d='M-172-98h1671v601H-172z'/%3e%3c/g%3e%3cdefs%3e%3clinearGradient id='paint0_linear' x1='602' x2='1093.5' y1='-960.5' y2='272' gradientUnits='userSpaceOnUse'%3e%3cstop stop-color='white'/%3e%3cstop offset='1' stop-color='white' stop-opacity='0'/%3e%3c/linearGradient%3e%3clinearGradient id='paint1_linear' x1='482' x2='480' y1='1058.5' y2='70.5' gradientUnits='userSpaceOnUse'%3e%3cstop stop-color='white'/%3e%3cstop offset='1' stop-color='white' stop-opacity='0'/%3e%3c/linearGradient%3e%3clinearGradient id='paint2_linear' x1='424' x2='446.1' y1='-587.5' y2='274.6' gradientUnits='userSpaceOnUse'%3e%3cstop stop-color='white'/%3e%3cstop offset='1' stop-color='white' stop-opacity='0'/%3e%3c/linearGradient%3e%3clinearGradient id='paint3_linear' x1='587' x2='349' y1='-1120.5' y2='341' gradientUnits='userSpaceOnUse'%3e%3cstop stop-color='white'/%3e%3cstop offset='1' stop-color='white' stop-opacity='0'/%3e%3c/linearGradient%3e%3c/defs%3e%3c/svg%3e")`; + +const headerCardStyle: CSSProperties = { + background: `linear-gradient(135deg, #003D7A 0%, #00568C 50%, #1A8DFF 100%)`, + backgroundImage: `${waveSvg}, linear-gradient(135deg, #003D7A 0%, #00568C 50%, #1A8DFF 100%)`, + backgroundSize: 'cover, cover', + backgroundPosition: 'center', + borderRadius: 16, + padding: '40px 24px 32px', + textAlign: 'center', + color: '#fff', + marginBottom: 24, + boxShadow: '0 4px 24px rgba(0,0,0,0.10), 0 1.5px 6px rgba(0,0,0,0.06)', + overflow: 'hidden', +}; + +const titleStyle: CSSProperties = { + margin: 0, + fontSize: '2rem', + fontWeight: 700, + letterSpacing: '-0.5px', +}; + +const subtitleStyle: CSSProperties = { + margin: '8px 0 0', + fontSize: '1rem', + fontWeight: 400, + opacity: 0.85, +}; + +const toolbarCardStyle: CSSProperties = { + background: 'rgba(255,255,255,0.03)', + borderRadius: 16, + boxShadow: '0 4px 24px rgba(0,0,0,0.10), 0 1.5px 6px rgba(0,0,0,0.06)', + padding: '12px 16px', + display: 'flex', + alignItems: 'center', + gap: 12, + marginBottom: 24, +}; + +const tableCardStyle: CSSProperties = { + background: 'var(--backstage-color-background-paper, #fff)', + borderRadius: 16, + boxShadow: '0 4px 24px rgba(0,0,0,0.10), 0 1.5px 6px rgba(0,0,0,0.06)', + border: '1px solid rgba(0,0,0,0.06)', + overflow: 'hidden', +}; + +const filterBtnBase: CSSProperties = { + display: 'flex', + alignItems: 'center', + gap: 6, + padding: '8px 16px', + borderRadius: 20, + border: '1px solid rgba(255,152,0,0.3)', + background: 'transparent', + cursor: 'pointer', + fontSize: 14, + fontWeight: 500, + color: '#FF9800', + transition: 'all 0.2s ease', + position: 'relative' as const, +}; + +const filterBtnActiveStyle: CSSProperties = { + ...filterBtnBase, + background: 'rgba(255,152,0,0.08)', + borderColor: 'rgba(255,152,0,0.5)', + color: '#FF9800', +}; + +const dropdownStyle: CSSProperties = { + position: 'absolute', + top: 'calc(100% + 8px)', + right: 0, + width: 280, + background: 'var(--backstage-color-background-paper, #fff)', + borderRadius: 16, + boxShadow: '0 8px 32px rgba(0,0,0,0.14), 0 2px 8px rgba(0,0,0,0.06)', + border: '1px solid rgba(0,0,0,0.06)', + padding: '16px', + zIndex: 10, + display: 'flex', + flexDirection: 'column', + gap: 12, +}; + +const filterSectionStyle: CSSProperties = { + display: 'flex', + flexDirection: 'column', + gap: 4, +}; + +const filterLabelStyle: CSSProperties = { + fontSize: 11, + fontWeight: 600, + textTransform: 'uppercase', + letterSpacing: '0.5px', + color: 'var(--backstage-color-text-secondary, #666)', + padding: '0 4px', +}; + +const FilterDropdown = () => { + const [open, setOpen] = useState(false); + const ref = useRef(null); + + useEffect(() => { + const handleClickOutside = (e: MouseEvent) => { + if (ref.current && !ref.current.contains(e.target as Node)) { + setOpen(false); + } + }; + if (open) { + document.addEventListener('mousedown', handleClickOutside); + } + return () => document.removeEventListener('mousedown', handleClickOutside); + }, [open]); + + return ( +
+ + {open && ( +
+
+ Type + +
+
+ Owner + +
+
+ Lifecycle + +
+
+ )} +
+ ); +}; + +export const CustomApiExplorerPage = () => { + return ( + + + ); +}; diff --git a/packages/app/src/components/catalog/CatalogPage.tsx b/packages/app/src/components/catalog/CatalogPage.tsx new file mode 100644 index 0000000..2e51d73 --- /dev/null +++ b/packages/app/src/components/catalog/CatalogPage.tsx @@ -0,0 +1,124 @@ +import { useState, useRef, useEffect, type CSSProperties } from 'react'; +import { + EntityTypePicker, + EntityOwnerPicker, + EntityLifecyclePicker, + EntityTagPicker, + UserListPicker, +} from '@backstage/plugin-catalog-react'; +import FilterListIcon from '@mui/icons-material/FilterList'; +import CloseIcon from '@mui/icons-material/Close'; + +const filterBtnBase: CSSProperties = { + display: 'flex', + alignItems: 'center', + gap: 6, + padding: '8px 16px', + borderRadius: 20, + border: '1px solid rgba(255,152,0,0.3)', + background: 'transparent', + cursor: 'pointer', + fontSize: 14, + fontWeight: 500, + color: '#FF9800', + transition: 'all 0.2s ease', + position: 'relative' as const, +}; + +const filterBtnActiveStyle: CSSProperties = { + ...filterBtnBase, + background: 'rgba(255,152,0,0.08)', + borderColor: 'rgba(255,152,0,0.5)', + color: '#FF9800', +}; + +const dropdownStyle: CSSProperties = { + position: 'absolute', + top: 'calc(100% + 8px)', + right: 0, + width: 280, + background: 'var(--backstage-color-background-paper, #fff)', + borderRadius: 16, + boxShadow: '0 8px 32px rgba(0,0,0,0.14), 0 2px 8px rgba(0,0,0,0.06)', + border: '1px solid rgba(0,0,0,0.06)', + padding: '16px', + zIndex: 100, + display: 'flex', + flexDirection: 'column', + gap: 12, +}; + +const filterSectionStyle: CSSProperties = { + display: 'flex', + flexDirection: 'column', + gap: 4, +}; + +const filterLabelStyle: CSSProperties = { + fontSize: 11, + fontWeight: 600, + textTransform: 'uppercase', + letterSpacing: '0.5px', + color: 'var(--backstage-color-text-secondary, #666)', + padding: '0 4px', +}; + +export const CatalogDropdownFilters = () => { + const [open, setOpen] = useState(false); + const ref = useRef(null); + + useEffect(() => { + if (!open) return undefined; + const handleClick = (e: MouseEvent) => { + if (ref.current && !ref.current.contains(e.target as Node)) setOpen(false); + }; + document.addEventListener('mousedown', handleClick); + return () => document.removeEventListener('mousedown', handleClick); + }, [open]); + + return ( +
+ + {open && ( +
+
+ Filters + +
+
+ Owned / All + +
+
+ Type + +
+
+ Owner + +
+
+ Lifecycle + +
+
+ Tags + +
+
+ )} +
+ ); +}; diff --git a/packages/app/src/components/catalog/CustomCatalogPage.tsx b/packages/app/src/components/catalog/CustomCatalogPage.tsx new file mode 100644 index 0000000..785c61a --- /dev/null +++ b/packages/app/src/components/catalog/CustomCatalogPage.tsx @@ -0,0 +1,54 @@ +import type { CSSProperties } from 'react'; +import { Content, Page } from '@backstage/core-components'; +import { + CatalogIndexPage as StockCatalogIndexPage, + CatalogTable, +} from '@backstage/plugin-catalog'; +import { + EntityKindPicker, + EntityListProvider, + EntitySearchBar, +} from '@backstage/plugin-catalog-react'; +import { HeroHeader, contentWrapperStyle } from '../shared/HeroHeader'; +import { CatalogDropdownFilters } from './CatalogPage'; + +const toolbarCardStyle: CSSProperties = { + background: 'rgba(255,255,255,0.03)', + borderRadius: 16, + boxShadow: '0 4px 24px rgba(0,0,0,0.10), 0 1.5px 6px rgba(0,0,0,0.06)', + padding: '12px 16px', + display: 'flex', + alignItems: 'center', + gap: 12, + marginBottom: 24, +}; + +const tableCardStyle: CSSProperties = { + background: 'var(--backstage-color-background-paper, #fff)', + borderRadius: 16, + boxShadow: '0 4px 24px rgba(0,0,0,0.10), 0 1.5px 6px rgba(0,0,0,0.06)', + border: '1px solid rgba(0,0,0,0.06)', + overflow: 'hidden', +}; + +export const CustomCatalogPage = () => ( + + +); diff --git a/packages/app/src/components/catalog/EntityPage.tsx b/packages/app/src/components/catalog/EntityPage.tsx index 98f05aa..cde314e 100644 --- a/packages/app/src/components/catalog/EntityPage.tsx +++ b/packages/app/src/components/catalog/EntityPage.tsx @@ -1,17 +1,26 @@ -import React from 'react'; -import { Button, Grid } from '@material-ui/core'; -import { - EntityApiDefinitionCard, - EntityConsumedApisCard, - EntityConsumingComponentsCard, - EntityHasApisCard, - EntityProvidedApisCard, - EntityProvidingComponentsCard, -} from '@backstage/plugin-api-docs'; +import { cloneElement, type CSSProperties, type ReactElement } from 'react'; +import Dashboard from '@mui/icons-material/Dashboard'; +import RocketLaunch from '@mui/icons-material/RocketLaunch'; +import Cloud from '@mui/icons-material/Cloud'; +import AccountTree from '@mui/icons-material/AccountTree'; +import Api from '@mui/icons-material/Api'; +import Hub from '@mui/icons-material/Hub'; +import Description from '@mui/icons-material/Description'; +import Bolt from '@mui/icons-material/Bolt'; +import Storage from '@mui/icons-material/Storage'; +import Category from '@mui/icons-material/Category'; +import Schedule from '@mui/icons-material/Schedule'; +import Person from '@mui/icons-material/Person'; +import Schema from '@mui/icons-material/Schema'; +import GridView from '@mui/icons-material/GridView'; +import { useEntity } from '@backstage/plugin-catalog-react'; import { EntityAboutCard, + EntityDependsOnComponentsCard, + EntityDependsOnResourcesCard, EntityHasComponentsCard, EntityHasResourcesCard, + EntityHasSubcomponentsCard, EntityHasSystemsCard, EntityLayout, EntityLinksCard, @@ -33,6 +42,14 @@ import { } from '@backstage/plugin-org'; import { EntityTechdocsContent } from '@backstage/plugin-techdocs'; import { EmptyState } from '@backstage/core-components'; +import { + EntityApiDefinitionCard, + EntityConsumedApisCard, + EntityConsumingComponentsCard, + EntityHasApisCard, + EntityProvidedApisCard, + EntityProvidingComponentsCard, +} from '@backstage/plugin-api-docs'; import { Direction, EntityCatalogGraphCard, @@ -47,23 +64,96 @@ import { RELATION_PART_OF, RELATION_PROVIDES_API, } from '@backstage/catalog-model'; - import { TechDocsAddons } from '@backstage/plugin-techdocs-react'; import { ReportIssue } from '@backstage/plugin-techdocs-module-addons-contrib'; import { EntityKubernetesContent, isKubernetesAvailable } from '@backstage/plugin-kubernetes'; - import { - EntityArgoCDOverviewCard, - isArgocdAvailable -} from '@roadiehq/backstage-plugin-argo-cd'; + IfKroResourceGraphAvailable, + IfKroOverviewAvailable, + KroOverviewCard, + KroResourceGraph, + isKroAvailable, +} from '@terasky/backstage-plugin-kro-resources-frontend'; import { EntityArgoWorkflowsOverviewCard, + EntityArgoWorkflowsTemplateOverviewCard, isArgoWorkflowsAvailable, } from '@internal/plugin-argo-workflows'; -import {ApacheSparkPage, isApacheSparkAvailable} from "@internal/plugin-apache-spark"; -import { isTerraformAvailable, TerraformPluginPage } from '@internal/plugin-terraform'; +import { + EntityApacheSparkContent, + isApacheSparkAvailable, +} from '@internal/plugin-apache-spark'; +import { + EntityTerraformContent, + isTerraformAvailable, +} from '@internal/plugin-terraform'; +import { + EntityArgoCDOverviewCard, + isArgocdAvailable, +} from '@roadiehq/backstage-plugin-argo-cd'; + +// CSS grid layout helpers (replaces MUI Grid) +const grid12: CSSProperties = { + display: 'grid', + gridTemplateColumns: 'repeat(12, 1fr)', + gap: '24px', + alignItems: 'stretch', +}; +const span = (n: number): CSSProperties => ({ gridColumn: `span ${n}` }); + +// Tab label helper — renders icon + text inline +// EntityLayout.Route types title as string but renders ReactNode at runtime +// eslint-disable-next-line @typescript-eslint/no-explicit-any +const tabLabel = (icon: ReactElement, text: string): any => ( + + {cloneElement(icon, { style: { fontSize: 18 } })} + {text} + +); + +// Chip style helpers for EntityMetadataBar +const chipBase: CSSProperties = { + display: 'inline-flex', + alignItems: 'center', + gap: '4px', + borderRadius: '16px', + fontSize: '12px', + padding: '4px 12px', + fontWeight: 500, +}; + +const EntityMetadataBar = () => { + const { entity } = useEntity(); + const lifecycle = (entity.spec?.lifecycle as string) || 'unknown'; + const type = (entity.spec?.type as string) || 'unknown'; + const owner = (entity.spec?.owner as string) || 'unknown'; + + let lifecycleColor = { background: '#e3f2fd', color: '#1565c0' }; + if (lifecycle === 'production') { + lifecycleColor = { background: '#e8f5e9', color: '#2e7d32' }; + } else if (lifecycle === 'experimental') { + lifecycleColor = { background: '#fff8e1', color: '#f57f17' }; + } + + return ( +
+ + + {type} + + + + {lifecycle} + + + + {owner} + +
+ ); +}; const techdocsContent = ( @@ -75,23 +165,25 @@ const techdocsContent = ( const cicdContent = ( - isArgoWorkflowsAvailable(e)}> - + +
+
+ +
+
+ +
+
- + Read more - + } /> @@ -102,124 +194,222 @@ const entityWarningContent = ( <> - +
- +
- - +
- +
- - +
- +
); const overviewContent = ( - +
+ {entityWarningContent} - - - +
+ +
+
+ +
- Boolean(isArgocdAvailable(e))}> - + +
- - - - - isTerraformAvailable(e)}> - - - +
- - - - +
- - +
+
+ +
+
+); + +const kubernetesContent = ( + +); + +const kroDetailsContent = ( +
+
+ + + +
+
+ + + +
+
+); + +const dependenciesContent = ( +
+
+ +
+
+ +
+
); const serviceEntityPage = ( - + , 'Overview')}> {overviewContent} - - + , 'CI/CD')}> {cicdContent} - - isKubernetesAvailable(e)}> - + , 'Kubernetes')} + if={isKubernetesAvailable} + > + {kubernetesContent} - - - + , 'Kro Details')} if={isKroAvailable}> + {kroDetailsContent} - - - - + , 'API')}> +
+
- - +
+
- - +
+
- - + , 'Dependencies')}> + {dependenciesContent} + + , 'Docs')}> {techdocsContent} + , 'Apache Spark')} + if={isApacheSparkAvailable} + > + + + , 'Terraform')} + if={isTerraformAvailable} + > + +
); const websiteEntityPage = ( - + , 'Overview')}> {overviewContent} - - + , 'CI/CD')}> {cicdContent} - - + , 'Kubernetes')} + if={isKubernetesAvailable} + > + {kubernetesContent} + + , 'Kro Details')} if={isKroAvailable}> + {kroDetailsContent} + + , 'Dependencies')}> + {dependenciesContent} + + , 'Docs')}> {techdocsContent} + , 'Apache Spark')} + if={isApacheSparkAvailable} + > + + + , 'Terraform')} + if={isTerraformAvailable} + > + + ); -/** - * NOTE: This page is designed to work on small screens such as mobile devices. - * This is based on Material UI Grid. If breakpoints are used, each grid item must set the `xs` prop to a column size or to `true`, - * since this does not default. If no breakpoints are used, the items will equitably share the available space. - * https://material-ui.com/components/grid/#basic-grid. - */ +const resourceGroupPage = ( + + , 'Overview')}> +
+ {entityWarningContent} +
+ +
+
+ +
+
+ +
+
+ + + +
+
+
+ , 'Kro Details')} if={isKroAvailable}> + {kroDetailsContent} + + , 'Kubernetes')} + if={isKubernetesAvailable} + > + + + , 'Dependencies')}> + {dependenciesContent} + + , 'Docs')}> + {techdocsContent} + +
+); const defaultEntityPage = ( - + , 'Overview')}> {overviewContent} - - + , 'Docs')}> {techdocsContent} @@ -230,113 +420,110 @@ const componentPage = ( {serviceEntityPage} - {websiteEntityPage} - {defaultEntityPage}
); const apiPage = ( - - + , 'Overview')}> +
{entityWarningContent} - +
- - - - - - - - - - - - - +
+
+ +
+
+ +
+
+ +
+
+ +
+
- - - - + , 'Definition')}> +
+
- - +
+
); const userPage = ( - - + , 'Overview')}> +
{entityWarningContent} - - - - - - - +
+ +
+
+ +
+
); const groupPage = ( - - + , 'Overview')}> +
{entityWarningContent} - - - - - - - +
+ +
+
+ +
+
- - +
+
- - +
+
); const systemPage = ( - - + , 'Overview')}> +
{entityWarningContent} - - - - - - - +
+ +
+
+ +
+
- - - - - - - - - - - +
+
+ +
+
+ +
+
+ +
+
- + , 'Diagram')}> - - + , 'Overview')}> +
{entityWarningContent} - - - - - - - - - - +
+ +
+
+ +
+
+ +
+
); @@ -383,7 +570,10 @@ export const entityPage = ( - + {defaultEntityPage} ); diff --git a/packages/app/src/components/home/Homepage.tsx b/packages/app/src/components/home/Homepage.tsx new file mode 100644 index 0000000..dc23f8f --- /dev/null +++ b/packages/app/src/components/home/Homepage.tsx @@ -0,0 +1,337 @@ +import { useState, type CSSProperties } from 'react'; +import { Content, Page } from '@backstage/core-components'; +import { HomePageSearchBar } from '@backstage/plugin-search'; +import { SearchContextProvider } from '@backstage/plugin-search-react'; +import { useApi, configApiRef } from '@backstage/core-plugin-api'; +import { + HomePageStarredEntities, +} from '@backstage/plugin-home'; + +const getBasePath = () => { + if (typeof window !== 'undefined') { + const baseTag = document.querySelector('base'); + if (baseTag?.href) { + try { + const base = new URL(baseTag.href); + return base.pathname.replace(/\/$/, ''); + } catch { + // fallback + } + } + } + return ''; +}; + +const basePath = getBasePath(); + +const getDomainUrl = () => { + if (typeof window !== 'undefined') { + return `${window.location.protocol}//${window.location.host}`; + } + return 'http://localhost:3000'; +}; + +const domainUrl = getDomainUrl(); + +/* ------------------------------------------------------------------ */ +/* Styles */ +/* ------------------------------------------------------------------ */ + +const waveSvg = `url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='1368' height='400' fill='none'%3e%3cmask id='a' width='1368' height='401' x='0' y='0' maskUnits='userSpaceOnUse'%3e%3cpath fill='url(%23paint0_linear)' d='M437 116C223 116 112 0 112 0h1256v400c-82 0-225-21-282-109-112-175-436-175-649-175z'/%3e%3cpath fill='url(%23paint1_linear)' d='M1368 400V282C891-29 788 40 711 161 608 324 121 372 0 361v39h1368z'/%3e%3cpath fill='url(%23paint2_linear)' d='M1368 244v156H0V94c92-24 198-46 375 0l135 41c176 51 195 109 858 109z'/%3e%3cpath fill='url(%23paint3_linear)' d='M1252 400h116c-14-7-35-14-116-16-663-14-837-128-1013-258l-85-61C98 28 46 8 0 0v400h1252z'/%3e%3c/mask%3e%3cg mask='url(%23a)'%3e%3cpath fill='white' d='M-172-98h1671v601H-172z'/%3e%3c/g%3e%3cdefs%3e%3clinearGradient id='paint0_linear' x1='602' x2='1093.5' y1='-960.5' y2='272' gradientUnits='userSpaceOnUse'%3e%3cstop stop-color='white'/%3e%3cstop offset='1' stop-color='white' stop-opacity='0'/%3e%3c/linearGradient%3e%3clinearGradient id='paint1_linear' x1='482' x2='480' y1='1058.5' y2='70.5' gradientUnits='userSpaceOnUse'%3e%3cstop stop-color='white'/%3e%3cstop offset='1' stop-color='white' stop-opacity='0'/%3e%3c/linearGradient%3e%3clinearGradient id='paint2_linear' x1='424' x2='446.1' y1='-587.5' y2='274.6' gradientUnits='userSpaceOnUse'%3e%3cstop stop-color='white'/%3e%3cstop offset='1' stop-color='white' stop-opacity='0'/%3e%3c/linearGradient%3e%3clinearGradient id='paint3_linear' x1='587' x2='349' y1='-1120.5' y2='341' gradientUnits='userSpaceOnUse'%3e%3cstop stop-color='white'/%3e%3cstop offset='1' stop-color='white' stop-opacity='0'/%3e%3c/linearGradient%3e%3c/defs%3e%3c/svg%3e")`; + +const heroStyle: CSSProperties = { + width: 'calc(100% - 56px)', + margin: '24px auto 0', + padding: '40px 24px 32px', + background: 'linear-gradient(135deg, #003D7A 0%, #00568C 50%, #1A8DFF 100%)', + backgroundImage: `${waveSvg}, linear-gradient(135deg, #003D7A 0%, #00568C 50%, #1A8DFF 100%)`, + backgroundSize: 'cover, cover', + backgroundPosition: 'center', + borderRadius: 16, + textAlign: 'center', + color: '#fff', + boxShadow: '0 4px 24px rgba(0,0,0,0.10), 0 1.5px 6px rgba(0,0,0,0.06)', + overflow: 'hidden', + minHeight: 135, +}; + +const heroTitleStyle: CSSProperties = { + margin: 0, + fontSize: '2.25rem', + fontWeight: 700, + letterSpacing: '-0.5px', + lineHeight: 1.2, +}; + +const heroSubtitleStyle: CSSProperties = { + margin: '12px 0 0', + fontSize: '1.1rem', + fontWeight: 400, + opacity: 0.85, +}; + +const searchWrapperStyle: CSSProperties = { + maxWidth: 700, + width: '100%', + margin: '-28px auto 0', + padding: '0 24px', + position: 'relative', + zIndex: 1, +}; + +const searchCardStyle: CSSProperties = { + background: 'var(--backstage-color-background-paper, #fff)', + borderRadius: 16, + boxShadow: '0 4px 24px rgba(0,0,0,0.10), 0 1.5px 6px rgba(0,0,0,0.06)', + padding: '10px 8px', +}; + +const searchBarInnerStyle: CSSProperties = { + display: 'flex', + width: '100%', + border: 'none', + outline: 'none', + background: 'transparent', + borderRadius: 12, +}; + +const columnsStyle: CSSProperties = { + display: 'grid', + gridTemplateColumns: '1fr 1fr', + gap: 24, + width: '100%', + maxWidth: 1200, + margin: '36px auto 0', + padding: '0 24px', + alignItems: 'start', +}; + +const cardStyle: CSSProperties = { + background: 'var(--backstage-color-background-paper, #f8f9fb)', + borderRadius: 16, + boxShadow: '0 4px 20px rgba(0,0,0,0.08), 0 1.5px 6px rgba(0,0,0,0.04), inset 0 1px 0 rgba(255,255,255,0.6)', + border: '1px solid rgba(0,0,0,0.04)', + overflow: 'hidden', +}; + +const cardHeaderStyle: CSSProperties = { + display: 'flex', + alignItems: 'center', + gap: 8, + padding: '18px 20px 12px', + fontSize: '1rem', + fontWeight: 600, + color: 'inherit', +}; + +const quickLinksGridStyle: CSSProperties = { + display: 'grid', + gridTemplateColumns: 'repeat(auto-fill, minmax(120px, 1fr))', + gap: 14, + padding: '8px 20px 20px', + maxHeight: 400, + overflowY: 'auto', +}; + +const toolCardBase: CSSProperties = { + display: 'flex', + flexDirection: 'column', + alignItems: 'center', + justifyContent: 'center', + gap: 8, + padding: '20px 8px', + borderRadius: 12, + background: 'rgba(25, 118, 210, 0.04)', + cursor: 'pointer', + textDecoration: 'none', + color: 'var(--backstage-color-text-primary, #333)', + transition: 'all 0.2s ease', + border: '1px solid transparent', +}; + +const toolCardLabelStyle: CSSProperties = { + fontSize: 13, + fontWeight: 500, + textAlign: 'center', + lineHeight: 1.3, +}; + +/* ------------------------------------------------------------------ */ +/* ToolCard component */ +/* ------------------------------------------------------------------ */ + +interface ToolCardProps { + url: string; + label: string; + iconSrc?: string; + iconAlt?: string; + isCatalog?: boolean; +} + +const ToolCard = ({ url, label, iconSrc, iconAlt, isCatalog }: ToolCardProps) => { + const [hovered, setHovered] = useState(false); + + const style: CSSProperties = { + ...toolCardBase, + ...(hovered + ? { + transform: 'translateY(-3px) scale(1.03)', + boxShadow: '0 6px 20px rgba(0,0,0,0.10)', + background: 'rgba(25, 118, 210, 0.08)', + borderColor: 'rgba(25, 118, 210, 0.15)', + } + : {}), + }; + + const iconElement = isCatalog ? ( + + + + ) : ( + {iconAlt + ); + + const isExternal = + url.startsWith('http://') || url.startsWith('https://'); + + return ( + setHovered(true)} + onMouseLeave={() => setHovered(false)} + > + {iconElement} + {label} + + ); +}; + +/* ------------------------------------------------------------------ */ +/* Star SVG icon */ +/* ------------------------------------------------------------------ */ + +const StarIcon = () => ( + + + +); + +const LinkIcon = () => ( + + + +); + +/* ------------------------------------------------------------------ */ +/* Homepage */ +/* ------------------------------------------------------------------ */ + +export const Homepage = () => { + const config = useApi(configApiRef); + + const tools: ToolCardProps[] = (() => { + try { + const links = config.getOptionalConfigArray('homepage.quickLinks'); + if (links && links.length > 0) { + return links.map(link => ({ + url: link.getString('url'), + label: link.getString('label'), + iconSrc: link.getOptionalString('iconUrl'), + iconAlt: link.getOptionalString('label'), + isCatalog: link.getOptionalString('icon') === 'catalog', + })); + } + } catch (e) { + // fall through to defaults + } + + const getGitLabUrl = () => { + try { + const gitlabIntegrations = config.getOptionalConfigArray('integrations.gitlab'); + if (gitlabIntegrations && gitlabIntegrations.length > 0) { + const baseUrl = gitlabIntegrations[0].getOptionalString('baseUrl'); + if (baseUrl) return baseUrl; + } + } catch { /* fallback */ } + return 'https://gitlab.com'; + }; + + return [ + { url: '/catalog', label: 'Catalog', isCatalog: true }, + { url: getGitLabUrl(), label: 'GitLab', iconSrc: `${basePath}/img/gitlab.png`, iconAlt: 'GitLab' }, + { url: `${domainUrl}/argocd`, label: 'ArgoCD', iconSrc: `${basePath}/img/argocd.png`, iconAlt: 'ArgoCD' }, + { url: `${domainUrl}/argo-workflows`, label: 'Argo Workflows', iconSrc: `${basePath}/img/argo-workflows.png`, iconAlt: 'Argo Workflows' }, + { url: domainUrl, label: 'Kargo', iconSrc: `${basePath}/img/kargo.png`, iconAlt: 'Kargo' }, + { url: `${domainUrl}/keycloak`, label: 'Keycloak', iconSrc: `${basePath}/img/keycloak.png`, iconAlt: 'Keycloak' }, + ]; + })(); + + return ( + + + + {/* Hero */} +
+

Internal Developer Platform

+

+ Discover, manage, and deploy your services +

+
+ + {/* Elevated search bar */} +
+
+ +
+
+ + {/* Two-column layout */} +
+ {/* Starred entities */} +
+
+ + Starred Entities +
+
+ +
+
+ + {/* Quick links */} +
+
+ + Quick Links +
+
+ {tools.map((tool) => ( + + ))} +
+
+
+
+
+
+ ); +}; diff --git a/packages/app/src/components/kubernetes/KroNavigationHelper.tsx b/packages/app/src/components/kubernetes/KroNavigationHelper.tsx new file mode 100644 index 0000000..0bc7975 --- /dev/null +++ b/packages/app/src/components/kubernetes/KroNavigationHelper.tsx @@ -0,0 +1,230 @@ +import type { CSSProperties, FC } from 'react'; +import { useEntity } from '@backstage/plugin-catalog-react'; +import { useRouteRef } from '@backstage/core-plugin-api'; +import { entityRouteRef } from '@backstage/plugin-catalog-react'; +import { Entity } from '@backstage/catalog-model'; + +interface RelatedResource { + name: string; + kind: string; + namespace?: string; + entityRef?: string; + isKroResource: boolean; +} + +const chipStyle: CSSProperties = { + display: 'inline-block', + padding: '2px 10px', + borderRadius: '16px', + fontSize: '0.8125rem', + lineHeight: '1.6', + border: '1px solid', +}; + +const btnStyle: CSSProperties = { + padding: '4px 12px', + borderRadius: '4px', + border: '1px solid rgba(144,202,249,0.5)', + background: 'transparent', + color: '#90caf9', + cursor: 'pointer', + fontSize: '0.8125rem', +}; + +/** + * Navigation helper component that provides seamless navigation + * between Kubernetes and Kro views. + */ +export const KroNavigationHelper: FC = () => { + const { entity } = useEntity(); + const catalogEntityRoute = useRouteRef(entityRouteRef); + + const getRelatedResources = (): RelatedResource[] => { + const resources: RelatedResource[] = []; + + const resourceGroupRef = + entity.metadata.annotations?.['kro.run/resource-group']; + if (resourceGroupRef) { + resources.push({ + name: resourceGroupRef, + kind: 'ResourceGroup', + entityRef: resourceGroupRef, + isKroResource: true, + }); + } + + const managedResources = + entity.metadata.annotations?.['kro.run/managed-resources']; + if (managedResources) { + try { + const parsed = JSON.parse(managedResources); + if (Array.isArray(parsed)) { + parsed.forEach((resource: any) => { + resources.push({ + name: resource.name || 'Unknown', + kind: resource.kind || 'Unknown', + namespace: resource.namespace, + isKroResource: false, + }); + }); + } + } catch { + // ignore parse errors + } + } + + if (entity.relations) { + entity.relations.forEach(relation => { + if (relation.type === 'dependsOn' || relation.type === 'partOf') { + const targetRef = + typeof relation.targetRef === 'string' + ? relation.targetRef + : `${(relation.targetRef as any).kind}/${(relation.targetRef as any).namespace}/${(relation.targetRef as any).name}`; + const isKro = targetRef.includes('kro-resource-group'); + resources.push({ + name: targetRef.split('/').pop() || targetRef, + kind: targetRef.split('/')[0] || 'Component', + entityRef: targetRef, + isKroResource: isKro, + }); + } + }); + } + + return resources; + }; + + const relatedResources = getRelatedResources(); + const isKroResourceGroup = entity.spec?.type === 'kro-resource-group'; + + const navigateToEntity = (entityRef: string) => { + const parts = entityRef.split('/'); + const [kind, namespace, name] = + parts.length >= 3 ? parts : ['component', 'default', parts[0]]; + return catalogEntityRoute({ + kind: kind.toLowerCase(), + namespace: namespace || 'default', + name, + }); + }; + + if (relatedResources.length === 0 && !isKroResourceGroup) { + return null; + } + + return ( +
+

Resource Relationships

+ +
+ {isKroResourceGroup && ( + + Kro ResourceGroup + + )} + {relatedResources.some(r => !r.isKroResource) && ( + + Manages {relatedResources.filter(r => !r.isKroResource).length} Resources + + )} +
+ + {relatedResources.length > 0 && ( +
+

+ Related Resources +

+
+ {relatedResources.map((resource, index) => ( +
+ {resource.name} + + {resource.kind} + + {resource.entityRef && ( + + View + + )} +
+ ))} +
+
+ )} + +
+ {isKroResourceGroup && ( + + )} +
+
+ ); +}; + +/** + * Helper function to determine if navigation helper should be shown. + */ +export const shouldShowKroNavigation = (entity: Entity): boolean => { + return ( + entity.spec?.type === 'kro-resource-group' || + Boolean(entity.metadata.annotations?.['kro.run/resource-group']) || + Boolean(entity.metadata.annotations?.['kro.run/managed-resources']) || + Boolean( + entity.relations?.some( + r => + (r.type === 'dependsOn' || r.type === 'partOf') && + (typeof r.targetRef === 'string' + ? r.targetRef + : `${(r.targetRef as any).kind}` + ).includes('kro-resource-group'), + ), + ) + ); +}; diff --git a/packages/app/src/components/kubernetes/KroResourceFilter.tsx b/packages/app/src/components/kubernetes/KroResourceFilter.tsx new file mode 100644 index 0000000..6bf14bb --- /dev/null +++ b/packages/app/src/components/kubernetes/KroResourceFilter.tsx @@ -0,0 +1,159 @@ +import type { CSSProperties, FC, ChangeEvent } from 'react'; + +interface KroResourceFilterProps { + selectedResourceTypes: string[]; + onResourceTypeChange: (resourceTypes: string[]) => void; + availableResourceTypes: string[]; +} + +const styles = { + container: { + padding: 8, + } as CSSProperties, + select: { + minWidth: 200, + padding: '8px 12px', + borderRadius: 4, + border: '1px solid rgba(0,0,0,0.23)', + fontSize: '0.875rem', + backgroundColor: 'var(--backstage-color-background-paper, #fff)', + } as CSSProperties, + chipContainer: { + display: 'flex', + flexWrap: 'wrap' as const, + gap: 4, + marginTop: 8, + } as CSSProperties, + chip: { + display: 'inline-flex', + alignItems: 'center', + gap: 4, + padding: '2px 8px', + borderRadius: 16, + fontSize: '0.75rem', + border: '1px solid rgba(0,0,0,0.23)', + backgroundColor: 'transparent', + } as CSSProperties, + kroChip: { + backgroundColor: 'var(--backstage-color-primary-light, #90caf9)', + color: '#fff', + borderColor: 'transparent', + } as CSSProperties, + deleteButton: { + background: 'none', + border: 'none', + cursor: 'pointer', + padding: 0, + fontSize: '0.875rem', + lineHeight: 1, + color: 'inherit', + } as CSSProperties, +}; + +/** + * Enhanced resource filter that includes Kro ResourceGroups + * alongside standard Kubernetes resources + */ +export const KroResourceFilter: FC = ({ + selectedResourceTypes, + onResourceTypeChange, + availableResourceTypes, +}) => { + const kroResourceTypes = availableResourceTypes.filter(type => + type.includes('kro.run') || type.includes('ResourceGroup') + ); + + const standardResourceTypes = availableResourceTypes.filter(type => + !type.includes('kro.run') && !type.includes('ResourceGroup') + ); + + const isKroResource = (resourceType: string): boolean => { + return resourceType.includes('kro.run') || resourceType.includes('ResourceGroup'); + }; + + const handleSelectChange = (event: ChangeEvent) => { + const value = event.target.value; + if (value && !selectedResourceTypes.includes(value)) { + onResourceTypeChange([...selectedResourceTypes, value]); + } + }; + + const handleChipDelete = (resourceType: string) => { + onResourceTypeChange(selectedResourceTypes.filter(type => type !== resourceType)); + }; + + return ( +
+ + + + {selectedResourceTypes.length > 0 && ( +
+ {selectedResourceTypes.map(value => ( + + {value} + + + ))} +
+ )} +
+ ); +}; + +/** + * Default resource types that should be included for Kro integration + */ +export const DEFAULT_KRO_RESOURCE_TYPES = [ + 'kro.run/v1alpha1/ResourceGraphDefinition', + 'kro.run/v1alpha1/CICDPipeline', + 'kro.run/v1alpha1/EksCluster', + 'kro.run/v1alpha1/EksclusterWithVpc', + 'kro.run/v1alpha1/Vpc', +]; + +/** + * Helper function to get all available resource types including Kro resources + */ +export const getAllResourceTypesWithKro = (standardTypes: string[]): string[] => { + return [...DEFAULT_KRO_RESOURCE_TYPES, ...standardTypes]; +}; diff --git a/packages/app/src/components/kubernetes/KubernetesContentWithKro.tsx b/packages/app/src/components/kubernetes/KubernetesContentWithKro.tsx new file mode 100644 index 0000000..5494419 --- /dev/null +++ b/packages/app/src/components/kubernetes/KubernetesContentWithKro.tsx @@ -0,0 +1,88 @@ +import type { CSSProperties } from 'react'; +import { EntityKubernetesContent } from '@backstage/plugin-kubernetes'; +import { useEntity } from '@backstage/plugin-catalog-react'; +import { + IfKroResourceGraphAvailable, + KroResourceGraph, + KroOverviewCard, + IfKroOverviewAvailable, +} from '@terasky/backstage-plugin-kro-resources-frontend'; + +const stack: CSSProperties = { + display: 'flex', + flexDirection: 'column', + gap: '24px', +}; + +const chip: CSSProperties = { + display: 'inline-block', + padding: '2px 10px', + borderRadius: '16px', + fontSize: '0.8125rem', + lineHeight: '1.6', + border: '1px solid', +}; + +/** + * Enhanced Kubernetes content that integrates Kro ResourceGroups + * with standard Kubernetes resources for a unified view. + */ +export const KubernetesContentWithKro = () => { + const { entity } = useEntity(); + + const isKroResourceGroup = entity.spec?.type === 'kro-resource-group'; + const hasKroAnnotations = Boolean( + entity.metadata.annotations?.['kro.run/resource-group'] || + entity.metadata.annotations?.['kro.run/managed-by'], + ); + + return ( +
+ {(isKroResourceGroup || hasKroAnnotations) && ( + <> +
+

Kro Integration

+
+ {isKroResourceGroup && ( + + Kro ResourceGroup + + )} + {hasKroAnnotations && !isKroResourceGroup && ( + + Managed by Kro + + )} + {entity.metadata.annotations?.['kro.run/resource-group'] && ( + + ResourceGroup:{' '} + {entity.metadata.annotations['kro.run/resource-group']} + + )} +
+
+ + {isKroResourceGroup && ( + + + + )} + + {isKroResourceGroup && ( + + + + )} + + )} + + +
+ ); +}; diff --git a/packages/app/src/components/logos/LogoFull.tsx b/packages/app/src/components/logos/LogoFull.tsx new file mode 100644 index 0000000..bedc256 --- /dev/null +++ b/packages/app/src/components/logos/LogoFull.tsx @@ -0,0 +1,47 @@ + +import { useTheme } from '@mui/material/styles'; + +export const LogoFull = () => { + const theme = useTheme(); + const isLight = theme.palette.mode === 'light'; + + // In light theme the sidebar is dark blue (#00568C), so use white/light + // In dark theme the sidebar is very dark (#0D1117), so use original cyan/blue + const wave = isLight ? '#FFFFFF' : '#00adee'; + const detail = isLight ? 'rgba(255,255,255,0.7)' : '#00568c'; + const text = isLight ? '#FFFFFF' : '#00adee'; + + return ( + + {/* Wave/globe */} + + + {/* Boat structure */} + + + + + {/* Water lines */} + + + + + + + + + + + {/* C */} + + {/* N */} + + {/* O - outer and inner paths using fill-rule evenodd to create the hole */} + + {/* E */} + + + + + ); +}; diff --git a/packages/app/src/components/logos/LogoIcon.tsx b/packages/app/src/components/logos/LogoIcon.tsx new file mode 100644 index 0000000..e10e49a --- /dev/null +++ b/packages/app/src/components/logos/LogoIcon.tsx @@ -0,0 +1,35 @@ + +import { useTheme } from '@mui/material/styles'; + +/** Collapsed sidebar icon — just the boat, no "CNOE" text */ +export const LogoIcon = () => { + const theme = useTheme(); + const isLight = theme.palette.mode === 'light'; + + const wave = isLight ? '#FFFFFF' : '#00adee'; + const detail = isLight ? 'rgba(255,255,255,0.7)' : '#00568c'; + + return ( + + {/* Wave/globe */} + + + {/* Boat structure */} + + + + + {/* Water lines */} + + + + + + + + + + + + ); +}; diff --git a/packages/app/src/components/logos/index.ts b/packages/app/src/components/logos/index.ts new file mode 100644 index 0000000..10ae25a --- /dev/null +++ b/packages/app/src/components/logos/index.ts @@ -0,0 +1,2 @@ +export { LogoFull } from './LogoFull'; +export { LogoIcon } from './LogoIcon'; diff --git a/packages/app/src/components/search/SearchPage.tsx b/packages/app/src/components/search/SearchPage.tsx index 1788dde..f56b811 100644 --- a/packages/app/src/components/search/SearchPage.tsx +++ b/packages/app/src/components/search/SearchPage.tsx @@ -1,13 +1,10 @@ -import React from 'react'; -import { makeStyles, Theme, Grid, Paper } from '@material-ui/core'; - +import { useState, useRef, useEffect, type CSSProperties } from 'react'; import { CatalogSearchResultListItem } from '@backstage/plugin-catalog'; import { catalogApiRef, CATALOG_FILTER_EXISTS, } from '@backstage/plugin-catalog-react'; import { TechDocsSearchResultListItem } from '@backstage/plugin-techdocs'; - import { SearchType } from '@backstage/plugin-search'; import { SearchBar, @@ -20,102 +17,188 @@ import { CatalogIcon, Content, DocsIcon, - Header, Page, } from '@backstage/core-components'; import { useApi } from '@backstage/core-plugin-api'; +import { HeroHeader, contentWrapperStyle } from '../shared/HeroHeader'; +import FilterListIcon from '@mui/icons-material/FilterList'; +import CloseIcon from '@mui/icons-material/Close'; -const useStyles = makeStyles((theme: Theme) => ({ - bar: { - padding: theme.spacing(1, 0), - }, - filters: { - padding: theme.spacing(2), - marginTop: theme.spacing(2), - }, - filter: { - '& + &': { - marginTop: theme.spacing(2.5), - }, - }, -})); +const toolbarCardStyle: CSSProperties = { + background: 'rgba(255,255,255,0.03)', + borderRadius: 16, + boxShadow: '0 4px 24px rgba(0,0,0,0.10), 0 1.5px 6px rgba(0,0,0,0.06)', + padding: '12px 16px', + display: 'flex', + alignItems: 'center', + gap: 12, + marginBottom: 24, +}; -const SearchPage = () => { - const classes = useStyles(); +const tableCardStyle: CSSProperties = { + background: 'var(--backstage-color-background-paper, #fff)', + borderRadius: 16, + boxShadow: '0 4px 24px rgba(0,0,0,0.10), 0 1.5px 6px rgba(0,0,0,0.06)', + border: '1px solid rgba(0,0,0,0.06)', + overflow: 'hidden', + padding: '20px 24px', +}; + +const filterBtnBase: CSSProperties = { + display: 'flex', + alignItems: 'center', + gap: 6, + padding: '8px 16px', + borderRadius: 20, + border: '1px solid rgba(255,152,0,0.3)', + background: 'transparent', + cursor: 'pointer', + fontSize: 14, + fontWeight: 500, + color: '#FF9800', + transition: 'all 0.2s ease', + position: 'relative' as const, +}; + +const filterBtnActiveStyle: CSSProperties = { + ...filterBtnBase, + background: 'rgba(255,152,0,0.08)', + borderColor: 'rgba(255,152,0,0.5)', +}; + +const dropdownStyle: CSSProperties = { + position: 'absolute', + top: 'calc(100% + 8px)', + right: 0, + width: 280, + background: 'var(--backstage-color-background-paper, #fff)', + borderRadius: 16, + boxShadow: '0 8px 32px rgba(0,0,0,0.14), 0 2px 8px rgba(0,0,0,0.06)', + border: '1px solid rgba(0,0,0,0.06)', + padding: '16px', + zIndex: 100, + display: 'flex', + flexDirection: 'column', + gap: 12, +}; + +const filterSectionStyle: CSSProperties = { + display: 'flex', + flexDirection: 'column', + gap: 4, +}; + +const filterLabelStyle: CSSProperties = { + fontSize: 11, + fontWeight: 600, + textTransform: 'uppercase', + letterSpacing: '0.5px', + color: 'var(--backstage-color-text-secondary, #666)', + padding: '0 4px', +}; + +const SearchFilterDropdown = () => { + const [open, setOpen] = useState(false); + const ref = useRef(null); const { types } = useSearch(); const catalogApi = useApi(catalogApiRef); + useEffect(() => { + const handleClickOutside = (e: MouseEvent) => { + if (ref.current && !ref.current.contains(e.target as Node)) setOpen(false); + }; + if (open) document.addEventListener('mousedown', handleClickOutside); + return () => document.removeEventListener('mousedown', handleClickOutside); + }, [open]); + return ( - -
- - - - - - - - +
+ + {open && ( +
+
+ Filters + +
+
+ Result Type , - }, - { - value: 'techdocs', - name: 'Documentation', - icon: , - }, + { value: 'software-catalog', name: 'Software Catalog', icon: }, + { value: 'techdocs', name: 'Documentation', icon: }, ]} /> - - {types.includes('techdocs') && ( - { - // Return a list of entities which are documented. - const { items } = await catalogApi.getEntities({ - fields: ['metadata.name'], - filter: { - 'metadata.annotations.backstage.io/techdocs-ref': - CATALOG_FILTER_EXISTS, - }, - }); - - const names = items.map(entity => entity.metadata.name); - names.sort(); - return names; - }} - /> - )} +
+ {types.includes('techdocs') && ( +
+ Entity { + const { items } = await catalogApi.getEntities({ + fields: ['metadata.name'], + filter: { + 'metadata.annotations.backstage.io/techdocs-ref': CATALOG_FILTER_EXISTS, + }, + }); + const names = items.map(entity => entity.metadata.name); + names.sort(); + return names; + }} /> - - - - +
+ )} +
+ Kind + +
+
+ Lifecycle + +
+
+ )} +
+ ); +}; + +const SearchPage = () => { + return ( + + +
+ +
+
+ +
+ +
+
+
+
} /> } /> - - +
+
); diff --git a/packages/app/src/components/shared/HeroHeader.tsx b/packages/app/src/components/shared/HeroHeader.tsx new file mode 100644 index 0000000..cf0b5ef --- /dev/null +++ b/packages/app/src/components/shared/HeroHeader.tsx @@ -0,0 +1,29 @@ +import type { CSSProperties } from 'react'; + +const waveSvg = `url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='1368' height='400' fill='none'%3e%3cmask id='a' width='1368' height='401' x='0' y='0' maskUnits='userSpaceOnUse'%3e%3cpath fill='url(%23paint0_linear)' d='M437 116C223 116 112 0 112 0h1256v400c-82 0-225-21-282-109-112-175-436-175-649-175z'/%3e%3cpath fill='url(%23paint1_linear)' d='M1368 400V282C891-29 788 40 711 161 608 324 121 372 0 361v39h1368z'/%3e%3cpath fill='url(%23paint2_linear)' d='M1368 244v156H0V94c92-24 198-46 375 0l135 41c176 51 195 109 858 109z'/%3e%3cpath fill='url(%23paint3_linear)' d='M1252 400h116c-14-7-35-14-116-16-663-14-837-128-1013-258l-85-61C98 28 46 8 0 0v400h1252z'/%3e%3c/mask%3e%3cg mask='url(%23a)'%3e%3cpath fill='white' d='M-172-98h1671v601H-172z'/%3e%3c/g%3e%3cdefs%3e%3clinearGradient id='paint0_linear' x1='602' x2='1093.5' y1='-960.5' y2='272' gradientUnits='userSpaceOnUse'%3e%3cstop stop-color='white'/%3e%3cstop offset='1' stop-color='white' stop-opacity='0'/%3e%3c/linearGradient%3e%3clinearGradient id='paint1_linear' x1='482' x2='480' y1='1058.5' y2='70.5' gradientUnits='userSpaceOnUse'%3e%3cstop stop-color='white'/%3e%3cstop offset='1' stop-color='white' stop-opacity='0'/%3e%3c/linearGradient%3e%3clinearGradient id='paint2_linear' x1='424' x2='446.1' y1='-587.5' y2='274.6' gradientUnits='userSpaceOnUse'%3e%3cstop stop-color='white'/%3e%3cstop offset='1' stop-color='white' stop-opacity='0'/%3e%3c/linearGradient%3e%3clinearGradient id='paint3_linear' x1='587' x2='349' y1='-1120.5' y2='341' gradientUnits='userSpaceOnUse'%3e%3cstop stop-color='white'/%3e%3cstop offset='1' stop-color='white' stop-opacity='0'/%3e%3c/linearGradient%3e%3c/defs%3e%3c/svg%3e")`; + +const headerCardStyle: CSSProperties = { + background: `linear-gradient(135deg, #003D7A 0%, #00568C 50%, #1A8DFF 100%)`, + backgroundImage: `${waveSvg}, linear-gradient(135deg, #003D7A 0%, #00568C 50%, #1A8DFF 100%)`, + backgroundSize: 'cover, cover', + backgroundPosition: 'center', + borderRadius: 16, + padding: '40px 24px 32px', + textAlign: 'center' as const, + color: '#fff', + marginBottom: 24, + boxShadow: '0 4px 24px rgba(0,0,0,0.10), 0 1.5px 6px rgba(0,0,0,0.06)', + overflow: 'hidden', +}; + +export const HeroHeader = ({ title, subtitle }: { title: string; subtitle: string }) => ( +
+

{title}

+

{subtitle}

+
+); + +export const contentWrapperStyle: CSSProperties = { + width: '100%', + padding: '0 0.3vw 24px', +}; diff --git a/packages/app/src/index.tsx b/packages/app/src/index.tsx index d875c77..c2fd3d8 100644 --- a/packages/app/src/index.tsx +++ b/packages/app/src/index.tsx @@ -1,6 +1,430 @@ +import '@backstage/ui/css/styles.css'; import '@backstage/cli/asset-types'; -import React from 'react'; + import ReactDOM from 'react-dom/client'; + import App from './App'; -ReactDOM.createRoot(document.getElementById('root')!).render(); +const style = document.createElement('style'); +style.textContent = ` + *, *::before, *::after { + box-sizing: border-box; + } + html, body { + margin: 0; + padding: 0; + height: 100%; + width: 100%; + overflow-x: hidden; + } + html { + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + text-rendering: optimizeLegibility; + } + #root { + height: 100%; + width: 100%; + max-width: 100vw; + overflow-x: hidden; + } + main { + max-width: 100%; + overflow-x: hidden; + } + + /* Scrollbar */ + ::-webkit-scrollbar { width: 8px; height: 8px; } + ::-webkit-scrollbar-track { background: transparent; } + ::-webkit-scrollbar-thumb { background: rgba(0,0,0,0.15); border-radius: 4px; } + ::-webkit-scrollbar-thumb:hover { background: rgba(0,0,0,0.25); } + + /* Selection & Focus */ + ::selection { background: rgba(0,86,140,0.2); color: inherit; } + :focus-visible { outline: 2px solid #00568C; outline-offset: 2px; border-radius: 4px; } + + /* Base transitions */ + a { transition: color 0.15s ease; } + button { transition: all 0.15s ease; } + table { border-collapse: separate; border-spacing: 0; } + + /* ===== SIDEBAR POLISH ===== */ + nav[aria-label="sidebar nav"] a[class*="SidebarItem"] { + border-radius: 8px !important; + margin: 2px 8px !important; + transition: all 0.2s ease !important; + } + nav[aria-label="sidebar nav"] a[class*="SidebarItem"]:hover { + background: rgba(255,255,255,0.1) !important; + } + nav[aria-label="sidebar nav"] hr { + opacity: 0.12; + margin: 8px 16px; + } + + /* ===== CARD HOVER EFFECTS ===== */ + [class*="MuiCard-root"], + [class*="BackstageInfoCard"] { + transition: box-shadow 0.25s ease, transform 0.25s ease !important; + } + [class*="MuiCard-root"]:hover, + [class*="BackstageInfoCard"]:hover { + box-shadow: 0 8px 24px rgba(0,0,0,0.10), 0 2px 8px rgba(0,0,0,0.06) !important; + transform: translateY(-2px); + } + + /* InfoCard header subtle gradient */ + [class*="BackstageInfoCard"] [class*="header"] { + border-bottom: 1px solid rgba(0,0,0,0.06); + } + + /* ===== TABLE STYLING ===== */ + table thead th, + [class*="MuiTableCell-head"] { + font-weight: 700 !important; + text-transform: uppercase; + font-size: 11px !important; + letter-spacing: 0.5px; + opacity: 0.7; + } + table tbody tr, + [class*="MuiTableRow-root"] { + transition: background-color 0.15s ease; + } + table tbody tr:hover, + [class*="MuiTableRow-root"]:hover { + background-color: rgba(0,86,140,0.04) !important; + } + table tbody tr:nth-of-type(even), + [class*="MuiTableRow-root"]:nth-of-type(even) { + background-color: rgba(0,86,140,0.015); + } + + /* ===== TAB BAR POLISH ===== */ + [role="tablist"] { + border-bottom: 2px solid rgba(0,0,0,0.06); + } + [role="tab"] { + font-weight: 500 !important; + text-transform: none !important; + letter-spacing: 0.3px; + transition: color 0.2s ease, background-color 0.2s ease !important; + border-radius: 8px 8px 0 0; + min-height: 42px !important; + } + [role="tab"]:hover { + background-color: rgba(0,86,140,0.04); + } + [role="tab"][aria-selected="true"] { + font-weight: 600 !important; + color: #FF9800 !important; + } + /* Orange tab indicator matching sidebar accent */ + [role="tablist"] [class*="MuiTabs-indicator"], + [role="tablist"] .MuiTabs-indicator, + [class*="PrivateTabIndicator"], + [class*="MuiTabs-indicator"] { + background-color: #FF9800 !important; + } + + /* ===== BACKSTAGE HEADER — match API page headerCardStyle ===== */ + main > header { + background: linear-gradient(135deg, #003D7A 0%, #00568C 50%, #1A8DFF 100%) !important; + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='1368' height='400' fill='none'%3e%3cmask id='a' width='1368' height='401' x='0' y='0' maskUnits='userSpaceOnUse'%3e%3cpath fill='url(%23paint0_linear)' d='M437 116C223 116 112 0 112 0h1256v400c-82 0-225-21-282-109-112-175-436-175-649-175z'/%3e%3cpath fill='url(%23paint1_linear)' d='M1368 400V282C891-29 788 40 711 161 608 324 121 372 0 361v39h1368z'/%3e%3cpath fill='url(%23paint2_linear)' d='M1368 244v156H0V94c92-24 198-46 375 0l135 41c176 51 195 109 858 109z'/%3e%3cpath fill='url(%23paint3_linear)' d='M1252 400h116c-14-7-35-14-116-16-663-14-837-128-1013-258l-85-61C98 28 46 8 0 0v400h1252z'/%3e%3c/mask%3e%3cg mask='url(%23a)'%3e%3cpath fill='white' d='M-172-98h1671v601H-172z'/%3e%3c/g%3e%3cdefs%3e%3clinearGradient id='paint0_linear' x1='602' x2='1093.5' y1='-960.5' y2='272' gradientUnits='userSpaceOnUse'%3e%3cstop stop-color='white'/%3e%3cstop offset='1' stop-color='white' stop-opacity='0'/%3e%3c/linearGradient%3e%3clinearGradient id='paint1_linear' x1='482' x2='480' y1='1058.5' y2='70.5' gradientUnits='userSpaceOnUse'%3e%3cstop stop-color='white'/%3e%3cstop offset='1' stop-color='white' stop-opacity='0'/%3e%3c/linearGradient%3e%3clinearGradient id='paint2_linear' x1='424' x2='446.1' y1='-587.5' y2='274.6' gradientUnits='userSpaceOnUse'%3e%3cstop stop-color='white'/%3e%3cstop offset='1' stop-color='white' stop-opacity='0'/%3e%3c/linearGradient%3e%3clinearGradient id='paint3_linear' x1='587' x2='349' y1='-1120.5' y2='341' gradientUnits='userSpaceOnUse'%3e%3cstop stop-color='white'/%3e%3cstop offset='1' stop-color='white' stop-opacity='0'/%3e%3c/linearGradient%3e%3c/defs%3e%3c/svg%3e"), linear-gradient(135deg, #003D7A 0%, #00568C 50%, #1A8DFF 100%) !important; + background-size: cover, cover !important; + background-position: center !important; + border-radius: 16px !important; + box-shadow: 0 4px 24px rgba(0,0,0,0.10), 0 1.5px 6px rgba(0,0,0,0.06) !important; + margin: 24px auto 24px auto !important; + padding: 40px 24px 32px !important; + text-align: center !important; + overflow: hidden !important; + min-height: 135px !important; + max-height: 135px !important; + display: block !important; + width: calc(100% - 56px) !important; + } + /* Title + subtitle container */ + main > header > div:first-child { + display: flex !important; + flex-direction: column !important; + align-items: center !important; + justify-content: center !important; + width: 100% !important; + } + main > header h1, + main > header h2, + main > header h3, + main > header h4, + main > header span, + main > header [class*="title"], + main > header [class*="subtitle"] { + text-align: center !important; + width: 100% !important; + } + /* Hide the actions/kebab menu container */ + main > header > div:last-child:not(:first-child) { + display: none !important; + } + + /* ===== ENTITY PAGE CARD SHADOWS ===== */ + article [class*="MuiPaper-root"], + [class*="BackstageContent"] [class*="MuiPaper-root"] { + border-radius: 16px !important; + box-shadow: 0 4px 24px rgba(0,0,0,0.10), 0 1.5px 6px rgba(0,0,0,0.06) !important; + } + /* Don't apply to nested papers inside cards (dropdowns, popovers) */ + [class*="MuiPaper-root"] [class*="MuiPaper-root"] { + border-radius: 4px !important; + box-shadow: none !important; + } + + /* ===== TABLE CARDS ===== */ + /* Wrap tables in shadow/rounded style — use descendant selectors to reach deeply nested papers */ + [class*="BackstageContent"] [class*="BackstageTable-root"] > [class*="MuiPaper-root"] { + border-radius: 16px !important; + box-shadow: 0 4px 24px rgba(0,0,0,0.10), 0 1.5px 6px rgba(0,0,0,0.06) !important; + overflow: hidden; + } + + /* ===== ORANGE ACCENT BUTTONS ===== */ + [class*="BackstageContentHeader"] button, + [class*="BackstageContentHeader"] a[class*="MuiButton"], + button[class*="MuiButton-containedPrimary"], + a[class*="MuiButton-containedPrimary"] { + background: linear-gradient(180deg, #FFB74D 0%, #FF9800 100%) !important; + background-image: linear-gradient(180deg, #FFB74D 0%, #FF9800 100%) !important; + color: #fff !important; + border: none !important; + } + button[class*="MuiButton-containedPrimary"]:hover, + a[class*="MuiButton-containedPrimary"]:hover { + background: linear-gradient(180deg, #FF9800 0%, #F57C00 100%) !important; + background-image: linear-gradient(180deg, #FF9800 0%, #F57C00 100%) !important; + box-shadow: 0 4px 12px rgba(255,152,0,0.3) !important; + } + + /* Filter dropdown button accent */ + button[aria-label="Toggle filters"] { + border-color: #FF9800 !important; + color: #FF9800 !important; + } + + /* ===== OUTLINED BUTTONS — match Filters button style (orange outline, pill shape, subtle gradient) ===== */ + button[class*="MuiButton-outlined"], + a[class*="MuiButton-outlined"] { + color: #FF9800 !important; + border: 1px solid rgba(255,152,0,0.35) !important; + border-radius: 20px !important; + padding: 8px 16px !important; + font-size: 14px !important; + font-weight: 500 !important; + text-transform: none !important; + transition: all 0.2s ease !important; + background: linear-gradient(180deg, rgba(255,152,0,0.04) 0%, rgba(255,152,0,0.01) 100%) !important; + box-shadow: 0 1px 3px rgba(255,152,0,0.08), 0 1px 2px rgba(0,0,0,0.04) !important; + } + button[class*="MuiButton-outlined"]:hover, + a[class*="MuiButton-outlined"]:hover { + background: linear-gradient(180deg, rgba(255,152,0,0.12) 0%, rgba(255,152,0,0.06) 100%) !important; + border-color: rgba(255,152,0,0.6) !important; + box-shadow: 0 3px 8px rgba(255,152,0,0.15), 0 1px 3px rgba(0,0,0,0.06) !important; + transform: translateY(-1px); + } + + /* ===== OWNERSHIP / ENTITY TAGS — stand out with accent color ===== */ + [class*="MuiChip-root"] { + transition: all 0.15s ease !important; + font-weight: 500 !important; + background: linear-gradient(135deg, rgba(0,86,140,0.08) 0%, rgba(26,141,255,0.06) 100%) !important; + color: #00568C !important; + border: 1px solid rgba(0,86,140,0.15) !important; + box-shadow: 0 1px 3px rgba(0,86,140,0.08) !important; + } + [class*="MuiChip-root"]:hover { + background: linear-gradient(135deg, rgba(0,86,140,0.14) 0%, rgba(26,141,255,0.10) 100%) !important; + box-shadow: 0 2px 6px rgba(0,86,140,0.12) !important; + transform: translateY(-1px); + } + /* Ownership links in template cards */ + [class*="MuiCardActions"] a, + [class*="MuiCardActions"] span[class*="MuiTypography"] { + color: #00568C !important; + font-weight: 500 !important; + } + + /* ===== CONTENT HEADER — transparent background ===== */ + [class*="BackstageContentHeader-container"] { + background: transparent !important; + border-radius: 16px !important; + box-shadow: none !important; + padding: 12px 16px !important; + margin-bottom: 24px !important; + display: flex; + align-items: center; + } + + /* ===== FILTER SIDEBARS ===== */ + /* Hide all filter sidebars — catalog uses empty filters, docs/create hidden via CSS */ + [class*="CatalogFilterLayout-filters"], + article > [class*="MuiGrid-container"] > [class*="MuiGrid-grid-lg-2"] { + display: none !important; + } + /* Make content area take full width */ + [class*="CatalogFilterLayout-content"], + article > [class*="MuiGrid-container"] > [class*="MuiGrid-grid-lg-10"] { + flex: 1 !important; + max-width: 100% !important; + flex-basis: 100% !important; + } + + /* ===== DARK MODE OVERRIDES (detected via JS class on html) ===== */ + .backstage-dark ::-webkit-scrollbar-thumb { background: rgba(255,255,255,0.15); } + .backstage-dark ::-webkit-scrollbar-thumb:hover { background: rgba(255,255,255,0.25); } + .backstage-dark ::selection { background: rgba(77,166,255,0.25); } + .backstage-dark :focus-visible { outline-color: #4DA6FF; } + .backstage-dark [class*="MuiCard-root"]:hover, + .backstage-dark [class*="BackstageInfoCard"]:hover { + box-shadow: 0 8px 24px rgba(0,0,0,0.3), 0 2px 8px rgba(0,0,0,0.2) !important; + } + .backstage-dark [class*="BackstageInfoCard"] [class*="header"] { + border-bottom-color: rgba(255,255,255,0.06); + } + .backstage-dark table tbody tr:hover, + .backstage-dark [class*="MuiTableRow-root"]:hover { + background-color: rgba(77,166,255,0.06) !important; + } + .backstage-dark table tbody tr:nth-of-type(even), + .backstage-dark [class*="MuiTableRow-root"]:nth-of-type(even) { + background-color: rgba(255,255,255,0.015); + } + .backstage-dark [role="tablist"] { border-bottom-color: rgba(255,255,255,0.06); } + .backstage-dark [role="tab"]:hover { background-color: rgba(77,166,255,0.06); } + .backstage-dark [role="tab"][aria-selected="true"] { + color: #FFB74D !important; + } + .backstage-dark [role="tablist"] [class*="MuiTabs-indicator"], + .backstage-dark [class*="PrivateTabIndicator"], + .backstage-dark [class*="MuiTabs-indicator"] { + background-color: #FFB74D !important; + } + /* Dark mode header — deeper blue with subtle wave */ + .backstage-dark main > header { + background: linear-gradient(135deg, #0D1B2A 0%, #1B3A5C 50%, #2E6BA6 100%) !important; + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='1368' height='400' fill='none'%3e%3cmask id='a' width='1368' height='401' x='0' y='0' maskUnits='userSpaceOnUse'%3e%3cpath fill='url(%23paint0_linear)' d='M437 116C223 116 112 0 112 0h1256v400c-82 0-225-21-282-109-112-175-436-175-649-175z'/%3e%3cpath fill='url(%23paint1_linear)' d='M1368 400V282C891-29 788 40 711 161 608 324 121 372 0 361v39h1368z'/%3e%3cpath fill='url(%23paint2_linear)' d='M1368 244v156H0V94c92-24 198-46 375 0l135 41c176 51 195 109 858 109z'/%3e%3cpath fill='url(%23paint3_linear)' d='M1252 400h116c-14-7-35-14-116-16-663-14-837-128-1013-258l-85-61C98 28 46 8 0 0v400h1252z'/%3e%3c/mask%3e%3cg mask='url(%23a)'%3e%3cpath fill='rgba(255,255,255,0.08)' d='M-172-98h1671v601H-172z'/%3e%3c/g%3e%3cdefs%3e%3clinearGradient id='paint0_linear' x1='602' x2='1093.5' y1='-960.5' y2='272' gradientUnits='userSpaceOnUse'%3e%3cstop stop-color='white'/%3e%3cstop offset='1' stop-color='white' stop-opacity='0'/%3e%3c/linearGradient%3e%3clinearGradient id='paint1_linear' x1='482' x2='480' y1='1058.5' y2='70.5' gradientUnits='userSpaceOnUse'%3e%3cstop stop-color='white'/%3e%3cstop offset='1' stop-color='white' stop-opacity='0'/%3e%3c/linearGradient%3e%3clinearGradient id='paint2_linear' x1='424' x2='446.1' y1='-587.5' y2='274.6' gradientUnits='userSpaceOnUse'%3e%3cstop stop-color='white'/%3e%3cstop offset='1' stop-color='white' stop-opacity='0'/%3e%3c/linearGradient%3e%3clinearGradient id='paint3_linear' x1='587' x2='349' y1='-1120.5' y2='341' gradientUnits='userSpaceOnUse'%3e%3cstop stop-color='white'/%3e%3cstop offset='1' stop-color='white' stop-opacity='0'/%3e%3c/linearGradient%3e%3c/defs%3e%3c/svg%3e"), linear-gradient(135deg, #0D1B2A 0%, #1B3A5C 50%, #2E6BA6 100%) !important; + box-shadow: 0 4px 24px rgba(0,0,0,0.3), 0 1.5px 6px rgba(0,0,0,0.15) !important; + } + /* Orange accent buttons in dark mode */ + .backstage-dark button[class*="MuiButton-containedPrimary"], + .backstage-dark a[class*="MuiButton-containedPrimary"] { + background: linear-gradient(180deg, #FFB74D 0%, #FF9800 100%) !important; + background-image: linear-gradient(180deg, #FFB74D 0%, #FF9800 100%) !important; + color: #fff !important; + } + .backstage-dark button[class*="MuiButton-containedPrimary"]:hover, + .backstage-dark a[class*="MuiButton-containedPrimary"]:hover { + background: linear-gradient(180deg, #FF9800 0%, #F57C00 100%) !important; + background-image: linear-gradient(180deg, #FF9800 0%, #F57C00 100%) !important; + } + /* Outlined buttons in dark mode */ + .backstage-dark button[class*="MuiButton-outlined"], + .backstage-dark a[class*="MuiButton-outlined"] { + color: #FFB74D !important; + border-color: rgba(255,183,77,0.35) !important; + background: linear-gradient(180deg, rgba(255,183,77,0.06) 0%, rgba(255,183,77,0.02) 100%) !important; + box-shadow: 0 1px 3px rgba(255,183,77,0.1), 0 1px 2px rgba(0,0,0,0.1) !important; + } + .backstage-dark button[class*="MuiButton-outlined"]:hover, + .backstage-dark a[class*="MuiButton-outlined"]:hover { + background: linear-gradient(180deg, rgba(255,183,77,0.14) 0%, rgba(255,183,77,0.06) 100%) !important; + border-color: rgba(255,183,77,0.6) !important; + box-shadow: 0 3px 8px rgba(255,183,77,0.18), 0 1px 3px rgba(0,0,0,0.12) !important; + } + .backstage-dark button[aria-label="Toggle filters"] { + color: #FFB74D !important; + border-color: rgba(255,183,77,0.35) !important; + } + /* Chips/tags in dark mode */ + .backstage-dark [class*="MuiChip-root"] { + background: linear-gradient(135deg, rgba(77,166,255,0.12) 0%, rgba(77,166,255,0.06) 100%) !important; + color: #4DA6FF !important; + border: 1px solid rgba(77,166,255,0.2) !important; + box-shadow: 0 1px 3px rgba(77,166,255,0.1) !important; + } + .backstage-dark [class*="MuiChip-root"]:hover { + background: linear-gradient(135deg, rgba(77,166,255,0.18) 0%, rgba(77,166,255,0.10) 100%) !important; + box-shadow: 0 2px 6px rgba(77,166,255,0.15) !important; + } + /* Ownership links in dark mode */ + .backstage-dark [class*="MuiCardActions"] a, + .backstage-dark [class*="MuiCardActions"] span[class*="MuiTypography"] { + color: #4DA6FF !important; + } + /* Homepage dark mode overrides */ + .backstage-dark .cnoe-hero-header { + background: linear-gradient(135deg, #0D1B2A 0%, #1B3A5C 50%, #2E6BA6 100%) !important; + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='1368' height='400' fill='none'%3e%3cmask id='a' width='1368' height='401' x='0' y='0' maskUnits='userSpaceOnUse'%3e%3cpath fill='url(%23paint0_linear)' d='M437 116C223 116 112 0 112 0h1256v400c-82 0-225-21-282-109-112-175-436-175-649-175z'/%3e%3cpath fill='url(%23paint1_linear)' d='M1368 400V282C891-29 788 40 711 161 608 324 121 372 0 361v39h1368z'/%3e%3cpath fill='url(%23paint2_linear)' d='M1368 244v156H0V94c92-24 198-46 375 0l135 41c176 51 195 109 858 109z'/%3e%3cpath fill='url(%23paint3_linear)' d='M1252 400h116c-14-7-35-14-116-16-663-14-837-128-1013-258l-85-61C98 28 46 8 0 0v400h1252z'/%3e%3c/mask%3e%3cg mask='url(%23a)'%3e%3cpath fill='rgba(255,255,255,0.08)' d='M-172-98h1671v601H-172z'/%3e%3c/g%3e%3cdefs%3e%3clinearGradient id='paint0_linear' x1='602' x2='1093.5' y1='-960.5' y2='272' gradientUnits='userSpaceOnUse'%3e%3cstop stop-color='white'/%3e%3cstop offset='1' stop-color='white' stop-opacity='0'/%3e%3c/linearGradient%3e%3clinearGradient id='paint1_linear' x1='482' x2='480' y1='1058.5' y2='70.5' gradientUnits='userSpaceOnUse'%3e%3cstop stop-color='white'/%3e%3cstop offset='1' stop-color='white' stop-opacity='0'/%3e%3c/linearGradient%3e%3clinearGradient id='paint2_linear' x1='424' x2='446.1' y1='-587.5' y2='274.6' gradientUnits='userSpaceOnUse'%3e%3cstop stop-color='white'/%3e%3cstop offset='1' stop-color='white' stop-opacity='0'/%3e%3c/linearGradient%3e%3clinearGradient id='paint3_linear' x1='587' x2='349' y1='-1120.5' y2='341' gradientUnits='userSpaceOnUse'%3e%3cstop stop-color='white'/%3e%3cstop offset='1' stop-color='white' stop-opacity='0'/%3e%3c/linearGradient%3e%3c/defs%3e%3c/svg%3e"), linear-gradient(135deg, #0D1B2A 0%, #1B3A5C 50%, #2E6BA6 100%) !important; + box-shadow: 0 4px 24px rgba(0,0,0,0.3), 0 1.5px 6px rgba(0,0,0,0.15) !important; + } + /* Homepage cards, search bar, and tool cards in dark mode */ + .backstage-dark .cnoe-toolbar-card, + .backstage-dark .cnoe-table-card, + .backstage-dark .cnoe-card { + background: #1E1E1E !important; + border-color: rgba(255,255,255,0.08) !important; + box-shadow: 0 4px 20px rgba(0,0,0,0.25), 0 1.5px 6px rgba(0,0,0,0.15) !important; + } + .backstage-dark .cnoe-card a[style*="rgba(25, 118, 210"] { + background: rgba(77,166,255,0.06) !important; + border-color: rgba(77,166,255,0.12) !important; + color: #B0BEC5 !important; + } + /* Filter dropdown in dark mode */ + .backstage-dark div[style*="background-paper, #fff"] { + background: #1E1E1E !important; + border-color: rgba(255,255,255,0.08) !important; + } + + /* Consistent page content padding */ + [class*="BackstageContent-root"] { + padding: 0 0.3vw 24px !important; + } +`; +document.head.appendChild(style); + +// Detect Backstage dark mode and toggle a CSS class for dark overrides +const detectDarkMode = () => { + const theme = localStorage.getItem('theme'); + if (theme) { + document.documentElement.classList.toggle('backstage-dark', theme.includes('dark')); + return; + } + const bg = window.getComputedStyle(document.body).backgroundColor; + const match = bg.match(/\d+/g); + if (match) { + const brightness = (parseInt(match[0], 10) + parseInt(match[1], 10) + parseInt(match[2], 10)) / 3; + document.documentElement.classList.toggle('backstage-dark', brightness < 128); + } +}; +const observer = new MutationObserver(detectDarkMode); +observer.observe(document.body, { attributes: true, attributeFilter: ['style', 'class'] }); +observer.observe(document.documentElement, { childList: true, subtree: true }); +window.addEventListener('storage', detectDarkMode); +setInterval(detectDarkMode, 500); +detectDarkMode(); + +async function startApp() { + if ( + process.env.MOCK_MODE === 'true' || + new URLSearchParams(window.location.search).has('mock') + ) { + const { worker } = await import('./mocks/browser'); + await worker.start({ onUnhandledRequest: 'bypass' }); + // eslint-disable-next-line no-console -- intentional startup log for MSW + console.log('[MSW] Mock service worker started'); + } + + ReactDOM.createRoot(document.getElementById('root')!).render(); +} + +startApp(); diff --git a/packages/app/src/mocks/browser.ts b/packages/app/src/mocks/browser.ts new file mode 100644 index 0000000..750e031 --- /dev/null +++ b/packages/app/src/mocks/browser.ts @@ -0,0 +1,4 @@ +import { setupWorker } from 'msw'; +import { handlers } from './handlers'; + +export const worker = setupWorker(...handlers); diff --git a/packages/app/src/mocks/fixtures/argo-workflow-templates.json b/packages/app/src/mocks/fixtures/argo-workflow-templates.json new file mode 100644 index 0000000..d37896a --- /dev/null +++ b/packages/app/src/mocks/fixtures/argo-workflow-templates.json @@ -0,0 +1,15 @@ +{ + "apiVersion": "argoproj.io/v1alpha1", + "kind": "WorkflowTemplateList", + "metadata": {}, + "items": [ + { + "metadata": { "name": "ci-build-template", "namespace": "default" }, + "spec": { "entrypoint": "build-and-test" } + }, + { + "metadata": { "name": "deploy-template", "namespace": "default" }, + "spec": { "entrypoint": "deploy-to-env" } + } + ] +} diff --git a/packages/app/src/mocks/fixtures/argo-workflows.json b/packages/app/src/mocks/fixtures/argo-workflows.json new file mode 100644 index 0000000..67991b0 --- /dev/null +++ b/packages/app/src/mocks/fixtures/argo-workflows.json @@ -0,0 +1,22 @@ +{ + "apiVersion": "argoproj.io/v1alpha1", + "kind": "WorkflowList", + "metadata": {}, + "items": [ + { + "metadata": { "name": "ci-build-pipeline-abc12", "namespace": "default" }, + "spec": { "entrypoint": "build-and-test" }, + "status": { "phase": "Running", "progress": "2/5", "startedAt": "2026-04-15T10:00:00Z" } + }, + { + "metadata": { "name": "deploy-staging-def34", "namespace": "default" }, + "spec": { "entrypoint": "deploy" }, + "status": { "phase": "Succeeded", "progress": "3/3", "startedAt": "2026-04-15T08:00:00Z", "finishedAt": "2026-04-15T08:15:00Z" } + }, + { + "metadata": { "name": "data-pipeline-ghi56", "namespace": "default" }, + "spec": { "entrypoint": "etl-pipeline" }, + "status": { "phase": "Failed", "progress": "1/4", "startedAt": "2026-04-15T06:00:00Z", "finishedAt": "2026-04-15T06:30:00Z" } + } + ] +} diff --git a/packages/app/src/mocks/fixtures/spark-applications.json b/packages/app/src/mocks/fixtures/spark-applications.json new file mode 100644 index 0000000..bbb24e8 --- /dev/null +++ b/packages/app/src/mocks/fixtures/spark-applications.json @@ -0,0 +1,27 @@ +{ + "apiVersion": "sparkoperator.k8s.io/v1beta2", + "kind": "SparkApplicationList", + "items": [ + { + "apiVersion": "sparkoperator.k8s.io/v1beta2", + "kind": "SparkApplication", + "metadata": { "name": "spark-etl-job", "namespace": "default", "creationTimestamp": "2026-04-15T10:00:00Z" }, + "spec": { "type": "Python", "mode": "cluster", "image": "spark:3.5.0", "sparkVersion": "3.5.0", "mainApplicationFile": "local:///opt/spark/examples/src/main/python/pi.py", "driver": { "cores": 1, "memory": "512m", "podName": "spark-etl-job-driver" }, "executor": { "cores": 1, "instances": 2, "memory": "512m" } }, + "status": { "applicationState": { "state": "RUNNING" }, "driverInfo": { "podName": "spark-etl-job-driver", "webUIPort": 4040 }, "executorState": { "spark-etl-job-exec-1": "RUNNING", "spark-etl-job-exec-2": "RUNNING" } } + }, + { + "apiVersion": "sparkoperator.k8s.io/v1beta2", + "kind": "SparkApplication", + "metadata": { "name": "spark-analytics", "namespace": "default", "creationTimestamp": "2026-04-15T08:00:00Z" }, + "spec": { "type": "Scala", "mode": "cluster", "image": "spark:3.5.0", "sparkVersion": "3.5.0", "mainClass": "org.example.Analytics", "driver": { "cores": 2, "memory": "1g", "podName": "spark-analytics-driver" }, "executor": { "cores": 2, "instances": 4, "memory": "2g" } }, + "status": { "applicationState": { "state": "COMPLETED" }, "driverInfo": { "podName": "spark-analytics-driver" }, "terminationTime": "2026-04-15T09:30:00Z" } + }, + { + "apiVersion": "sparkoperator.k8s.io/v1beta2", + "kind": "SparkApplication", + "metadata": { "name": "spark-ml-training", "namespace": "default", "creationTimestamp": "2026-04-15T07:00:00Z" }, + "spec": { "type": "Python", "mode": "cluster", "image": "spark:3.5.0", "sparkVersion": "3.5.0", "mainApplicationFile": "local:///opt/spark/ml/train.py", "driver": { "cores": 2, "memory": "2g", "podName": "spark-ml-training-driver" }, "executor": { "cores": 4, "instances": 8, "memory": "4g" } }, + "status": { "applicationState": { "state": "FAILED", "errorMessage": "OutOfMemoryError: Java heap space" }, "driverInfo": { "podName": "spark-ml-training-driver" }, "terminationTime": "2026-04-15T07:45:00Z" } + } + ] +} diff --git a/packages/app/src/mocks/fixtures/spark-logs.txt b/packages/app/src/mocks/fixtures/spark-logs.txt new file mode 100644 index 0000000..ee2c0ca --- /dev/null +++ b/packages/app/src/mocks/fixtures/spark-logs.txt @@ -0,0 +1,7 @@ +2026-04-15 10:00:01 INFO SparkContext: Running Spark version 3.5.0 +2026-04-15 10:00:02 INFO SparkContext: Submitted application: spark-etl-job +2026-04-15 10:00:03 INFO SecurityManager: Changing view acls to: spark +2026-04-15 10:00:05 INFO Utils: Successfully started service 'sparkDriver' on port 7078 +2026-04-15 10:00:10 INFO SparkContext: Added JAR local:///opt/spark/examples/jars/spark-examples.jar +2026-04-15 10:00:15 INFO DAGScheduler: Job 0 finished: reduce at SparkPi.scala:38, took 5.123 s +2026-04-15 10:00:16 INFO SparkContext: Starting job: Pi is roughly 3.14159 diff --git a/packages/app/src/mocks/fixtures/terraform-file-list.json b/packages/app/src/mocks/fixtures/terraform-file-list.json new file mode 100644 index 0000000..5cc8ae0 --- /dev/null +++ b/packages/app/src/mocks/fixtures/terraform-file-list.json @@ -0,0 +1 @@ +[{ "Key": "terraform/platform/terraform.tfstate", "TFStateContents": null }] diff --git a/packages/app/src/mocks/fixtures/terraform-state.json b/packages/app/src/mocks/fixtures/terraform-state.json new file mode 100644 index 0000000..3e5477b --- /dev/null +++ b/packages/app/src/mocks/fixtures/terraform-state.json @@ -0,0 +1,41 @@ +{ + "version": 4, + "terraform_version": "1.5.0", + "serial": 42, + "outputs": [ + { "value": "vpc-0abc123def456", "type": "string" }, + { "value": "subnet-0def789abc012", "type": "string" } + ], + "resources": [ + { + "mode": "managed", + "type": "aws_vpc", + "name": "main", + "provider": "provider[\"registry.terraform.io/hashicorp/aws\"]", + "instances": [{ + "attributes": { "id": "vpc-0abc123def456", "cidr_block": "10.0.0.0/16", "name": "cnoe-platform-vpc", "enable_dns_support": true, "enable_dns_hostnames": true }, + "dependencies": [] + }] + }, + { + "mode": "managed", + "type": "aws_subnet", + "name": "public", + "provider": "provider[\"registry.terraform.io/hashicorp/aws\"]", + "instances": [{ + "attributes": { "id": "subnet-0def789abc012", "vpc_id": "vpc-0abc123def456", "cidr_block": "10.0.1.0/24", "availability_zone": "us-west-2a", "name": "cnoe-public-subnet" }, + "dependencies": ["managed.aws_vpc.main"] + }] + }, + { + "mode": "managed", + "type": "aws_security_group", + "name": "allow_tls", + "provider": "provider[\"registry.terraform.io/hashicorp/aws\"]", + "instances": [{ + "attributes": { "id": "sg-0ghi345jkl678", "vpc_id": "vpc-0abc123def456", "name": "allow-tls", "description": "Allow TLS inbound traffic" }, + "dependencies": ["managed.aws_vpc.main"] + }] + } + ] +} diff --git a/packages/app/src/mocks/handlers.ts b/packages/app/src/mocks/handlers.ts new file mode 100644 index 0000000..d811b53 --- /dev/null +++ b/packages/app/src/mocks/handlers.ts @@ -0,0 +1 @@ +export { handlers } from './handlers/index'; diff --git a/packages/app/src/mocks/handlers/index.ts b/packages/app/src/mocks/handlers/index.ts new file mode 100644 index 0000000..6f43f02 --- /dev/null +++ b/packages/app/src/mocks/handlers/index.ts @@ -0,0 +1,4 @@ +import { kubernetesHandlers } from './kubernetes'; +import { terraformHandlers } from './terraform'; + +export const handlers = [...kubernetesHandlers, ...terraformHandlers]; diff --git a/packages/app/src/mocks/handlers/kubernetes.ts b/packages/app/src/mocks/handlers/kubernetes.ts new file mode 100644 index 0000000..2b70478 --- /dev/null +++ b/packages/app/src/mocks/handlers/kubernetes.ts @@ -0,0 +1,96 @@ +import { rest } from 'msw'; +import sparkApplications from '../fixtures/spark-applications.json'; +import argoWorkflows from '../fixtures/argo-workflows.json'; +import argoWorkflowTemplates from '../fixtures/argo-workflow-templates.json'; + +// Spark logs inline — the fixture is a .txt file which can't be JSON-imported +const SPARK_LOGS = `2026-04-15 10:00:01 INFO SparkContext: Running Spark version 3.5.0 +2026-04-15 10:00:02 INFO SparkContext: Submitted application: spark-etl-job +2026-04-15 10:00:05 INFO Utils: Successfully started service 'sparkDriver' on port 7078 +2026-04-15 10:00:15 INFO DAGScheduler: Job 0 finished: reduce at SparkPi.scala:38, took 5.123 s`; + +// --------------------------------------------------------------------------- +// Kubernetes proxy handlers +// +// KubernetesBackendClient.proxy() builds the URL as: +// `${discoveryApi.getBaseUrl("kubernetes")}/proxy${options.path}` +// +// So all k8s proxy requests are GETs to /api/kubernetes/proxy/. +// --------------------------------------------------------------------------- + +export const kubernetesHandlers = [ + // --- Apache Spark (sparkoperator CRDs) --- + + // List spark applications: + // /api/kubernetes/proxy/apis/sparkoperator.k8s.io/v1beta2/namespaces/{ns}/sparkapplications + rest.get('*/api/kubernetes/proxy/apis/sparkoperator.k8s.io/*/namespaces/*/sparkapplications', (_req, res, ctx) => { + return res(ctx.json(sparkApplications)); + }), + + // Single spark application: + // /api/kubernetes/proxy/apis/sparkoperator.k8s.io/v1beta2/namespaces/{ns}/sparkapplications/{name} + rest.get('*/api/kubernetes/proxy/apis/sparkoperator.k8s.io/*/namespaces/*/sparkapplications/*', (_req, res, ctx) => { + // Return the first item from the list as a single resource + const items = (sparkApplications as any).items; + if (items && items.length > 0) { + return res(ctx.json(items[0])); + } + return res(ctx.json(sparkApplications)); + }), + + // Pod logs: + // /api/kubernetes/proxy/api/v1/namespaces/{ns}/pods/{pod}/log + rest.get('*/api/kubernetes/proxy/api/v1/namespaces/*/pods/*/log', (_req, res, ctx) => { + return res(ctx.text(SPARK_LOGS)); + }), + + // Pod details (for getContainers): + // /api/kubernetes/proxy/api/v1/namespaces/{ns}/pods/{pod} + rest.get('*/api/kubernetes/proxy/api/v1/namespaces/*/pods/*', (_req, res, ctx) => { + return res( + ctx.json({ + metadata: { name: 'spark-etl-job-driver' }, + spec: { + containers: [{ name: 'spark-kubernetes-driver' }], + }, + }), + ); + }), + + // --- Argo Workflows (via kubernetes proxy) --- + + // List workflows through k8s proxy: + // /api/kubernetes/proxy/apis/argoproj.io/v1alpha1/namespaces/{ns}/workflows + // /api/kubernetes/proxy/apis/argoproj.io/v1alpha1/workflows (all namespaces) + rest.get('*/api/kubernetes/proxy/apis/argoproj.io/*/namespaces/*/workflows', (_req, res, ctx) => { + return res(ctx.json(argoWorkflows)); + }), + rest.get('*/api/kubernetes/proxy/apis/argoproj.io/*/workflows', (_req, res, ctx) => { + return res(ctx.json(argoWorkflows)); + }), + + // --- Argo Workflows (via backstage backend proxy) --- + // + // ArgoWorkflows.fetchFromPath() builds: + // `${discoveryApi.getBaseUrl("proxy")}/argo-workflows/api${path}` + // where path is e.g. /api/v1/workflows/{ns} + + // Workflows through backend proxy + rest.get('*/api/proxy/argo-workflows/api/api/v1/workflows/*', (_req, res, ctx) => { + return res(ctx.json(argoWorkflows)); + }), + + // Workflow templates through backend proxy + rest.get('*/api/proxy/argo-workflows/api/api/v1/workflow-templates/*', (_req, res, ctx) => { + return res(ctx.json(argoWorkflowTemplates)); + }), + + // --- Kubernetes clusters endpoint --- + rest.get('*/api/kubernetes/clusters', (_req, res, ctx) => { + return res( + ctx.json({ + items: [{ name: 'local-cluster', authProvider: 'serviceAccount' }], + }), + ); + }), +]; diff --git a/packages/app/src/mocks/handlers/terraform.ts b/packages/app/src/mocks/handlers/terraform.ts new file mode 100644 index 0000000..d74a297 --- /dev/null +++ b/packages/app/src/mocks/handlers/terraform.ts @@ -0,0 +1,48 @@ +import { rest } from 'msw'; +import terraformState from '../fixtures/terraform-state.json'; +import terraformFileList from '../fixtures/terraform-file-list.json'; + +// --------------------------------------------------------------------------- +// Terraform handlers +// +// The Terraform client uses two patterns: +// 1. Backend routes via fetchURL(): POST to /api/terraform/ +// 2. K8s secrets via kubernetesApi.proxy(): GET to /api/kubernetes/proxy/api/v1/namespaces/{ns}/secrets/{name} +// --------------------------------------------------------------------------- + +export const terraformHandlers = [ + // deflate — POST /api/terraform/deflate + rest.post('*/api/terraform/deflate', (_req, res, ctx) => { + return res(ctx.json(terraformState)); + }), + + // S3 file list — POST /api/terraform/getFileList + rest.post('*/api/terraform/getFileList', (_req, res, ctx) => { + return res(ctx.json(terraformFileList)); + }), + + // Local file list — POST /api/terraform/getLocalFileList + rest.post('*/api/terraform/getLocalFileList', (_req, res, ctx) => { + return res(ctx.json(terraformFileList)); + }), + + // TF state file — POST /api/terraform/getTFStateFile + rest.post('*/api/terraform/getTFStateFile', (_req, res, ctx) => { + return res(ctx.json(terraformState)); + }), + + // K8s secret for terraform state (secret-based state storage) + // Terraform.getSecret() calls kubernetesApi.proxy() with path: + // /api/v1/namespaces/{ns}/secrets/{secretName} + // which becomes GET /api/kubernetes/proxy/api/v1/namespaces/{ns}/secrets/{name} + rest.get('*/api/kubernetes/proxy/api/v1/namespaces/*/secrets/*', (_req, res, ctx) => { + return res( + ctx.json({ + metadata: { name: 'terraform-state' }, + data: { + tfstate: btoa(JSON.stringify(terraformState)), + }, + }), + ); + }), +]; diff --git a/packages/app/src/setupTests.ts b/packages/app/src/setupTests.ts deleted file mode 100644 index 7b0828b..0000000 --- a/packages/app/src/setupTests.ts +++ /dev/null @@ -1 +0,0 @@ -import '@testing-library/jest-dom'; diff --git a/packages/app/src/theme.ts b/packages/app/src/theme.ts new file mode 100644 index 0000000..656928a --- /dev/null +++ b/packages/app/src/theme.ts @@ -0,0 +1,481 @@ +import { createElement } from 'react'; +import { + createUnifiedTheme, + UnifiedThemeProvider, + defaultTypography, + palettes, + genPageTheme, + shapes, +} from '@backstage/theme'; +import type { AppTheme } from '@backstage/core-plugin-api'; + +const fontFamily = + '"Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif'; + +const cnoeTypography = { + ...defaultTypography, + fontFamily, +}; + +// All page types use the same CNOE blue gradient +const cnoePageThemeLight = { + home: genPageTheme({ colors: ['#003D7A', '#1A8DFF'], shape: shapes.wave }), + documentation: genPageTheme({ colors: ['#003D7A', '#1A8DFF'], shape: shapes.wave2 }), + tool: genPageTheme({ colors: ['#003D7A', '#1A8DFF'], shape: shapes.round }), + service: genPageTheme({ colors: ['#003D7A', '#1A8DFF'], shape: shapes.wave }), + website: genPageTheme({ colors: ['#003D7A', '#1A8DFF'], shape: shapes.wave }), + library: genPageTheme({ colors: ['#003D7A', '#1A8DFF'], shape: shapes.wave }), + other: genPageTheme({ colors: ['#003D7A', '#1A8DFF'], shape: shapes.wave }), + app: genPageTheme({ colors: ['#003D7A', '#1A8DFF'], shape: shapes.wave }), + apis: genPageTheme({ colors: ['#003D7A', '#1A8DFF'], shape: shapes.wave }), + component: genPageTheme({ colors: ['#003D7A', '#1A8DFF'], shape: shapes.wave }), + resource: genPageTheme({ colors: ['#003D7A', '#1A8DFF'], shape: shapes.wave }), + system: genPageTheme({ colors: ['#003D7A', '#1A8DFF'], shape: shapes.wave }), + domain: genPageTheme({ colors: ['#003D7A', '#1A8DFF'], shape: shapes.wave }), + group: genPageTheme({ colors: ['#003D7A', '#1A8DFF'], shape: shapes.wave }), + user: genPageTheme({ colors: ['#003D7A', '#1A8DFF'], shape: shapes.wave }), + template: genPageTheme({ colors: ['#003D7A', '#1A8DFF'], shape: shapes.wave }), + card: genPageTheme({ colors: ['#003D7A', '#1A8DFF'], shape: shapes.wave }), +}; + +const cnoePageThemeDark = { + home: genPageTheme({ colors: ['#0D1117', '#003D68'], shape: shapes.wave }), + documentation: genPageTheme({ colors: ['#0D1117', '#003D68'], shape: shapes.wave2 }), + tool: genPageTheme({ colors: ['#0D1117', '#003D68'], shape: shapes.round }), + service: genPageTheme({ colors: ['#0D1117', '#003D68'], shape: shapes.wave }), + website: genPageTheme({ colors: ['#0D1117', '#003D68'], shape: shapes.wave }), + library: genPageTheme({ colors: ['#0D1117', '#003D68'], shape: shapes.wave }), + other: genPageTheme({ colors: ['#0D1117', '#003D68'], shape: shapes.wave }), + app: genPageTheme({ colors: ['#0D1117', '#003D68'], shape: shapes.wave }), + apis: genPageTheme({ colors: ['#0D1117', '#003D68'], shape: shapes.wave }), + component: genPageTheme({ colors: ['#0D1117', '#003D68'], shape: shapes.wave }), + resource: genPageTheme({ colors: ['#0D1117', '#003D68'], shape: shapes.wave }), + system: genPageTheme({ colors: ['#0D1117', '#003D68'], shape: shapes.wave }), + domain: genPageTheme({ colors: ['#0D1117', '#003D68'], shape: shapes.wave }), + group: genPageTheme({ colors: ['#0D1117', '#003D68'], shape: shapes.wave }), + user: genPageTheme({ colors: ['#0D1117', '#003D68'], shape: shapes.wave }), + template: genPageTheme({ colors: ['#0D1117', '#003D68'], shape: shapes.wave }), + card: genPageTheme({ colors: ['#0D1117', '#003D68'], shape: shapes.wave }), +}; + +// Shadow tokens +const shadows = { + card: '0 1px 3px rgba(0,0,0,0.08), 0 1px 2px rgba(0,0,0,0.06)', + cardHover: '0 10px 25px rgba(0,0,0,0.1), 0 6px 10px rgba(0,0,0,0.08)', + elevated: '0 20px 40px rgba(0,0,0,0.12)', + cardHoverDark: '0 10px 25px rgba(0,0,0,0.25), 0 6px 10px rgba(0,0,0,0.2)', + elevatedDark: '0 20px 40px rgba(0,0,0,0.3)', +}; + +// Option B: Vibrant — Light theme +const lightTheme = createUnifiedTheme({ + palette: { + ...palettes.light, + primary: { main: '#00568C' }, + secondary: { main: '#FF9800' }, + background: { default: '#F5F7FA', paper: '#FFFFFF' }, + text: { primary: '#212121', secondary: '#757575' }, + divider: '#EEEEEE', + navigation: { + background: '#00568C', + indicator: '#FF9800', + color: 'rgba(255,255,255,0.5)', + selectedColor: '#FFFFFF', + navItem: { hoverBackground: 'rgba(255,255,255,0.15)' }, + }, + }, + components: { + MuiCard: { + styleOverrides: { + root: { + borderRadius: '12px', + border: '1px solid #EEEEEE', + boxShadow: shadows.card, + transition: 'box-shadow 0.2s ease, transform 0.2s ease', + '&:hover': { + boxShadow: shadows.cardHover, + transform: 'translateY(-2px)', + }, + }, + }, + }, + MuiButton: { + styleOverrides: { + root: { + borderRadius: '8px', + textTransform: 'none', + fontWeight: 600, + transition: 'all 0.2s ease', + }, + containedPrimary: { + backgroundColor: '#00568C', + backgroundImage: 'linear-gradient(180deg, #006AA8 0%, #00568C 100%)', + '&:hover': { + backgroundColor: '#004070', + backgroundImage: 'linear-gradient(180deg, #00568C 0%, #004070 100%)', + boxShadow: '0 4px 12px rgba(0,86,140,0.3)', + }, + }, + containedSecondary: { + backgroundColor: '#FF9800', + color: '#fff', + '&:hover': { + backgroundColor: '#F57C00', + boxShadow: '0 4px 12px rgba(255,152,0,0.3)', + }, + }, + }, + }, + MuiChip: { + styleOverrides: { + root: { + borderRadius: '6px', + fontWeight: 500, + fontSize: '12px', + borderLeft: '3px solid transparent', + }, + colorPrimary: { + backgroundColor: '#E6F2FF', + color: '#00568C', + borderLeftColor: '#00568C', + }, + colorSecondary: { + backgroundColor: '#FFF3E0', + color: '#F57C00', + borderLeftColor: '#F57C00', + }, + }, + }, + MuiTab: { + styleOverrides: { + root: { + textTransform: 'none', + fontWeight: 500, + fontSize: '13px', + letterSpacing: '0.5px', + transition: 'color 0.2s ease', + }, + }, + }, + MuiTableRow: { + styleOverrides: { + root: { + '&:nth-of-type(even)': { + backgroundColor: 'rgba(0,86,140,0.02)', + }, + '&:hover': { + backgroundColor: 'rgba(0,86,140,0.05)', + }, + }, + }, + }, + MuiTableHead: { + styleOverrides: { + root: { + '& .MuiTableCell-head': { + fontWeight: 700, + backgroundColor: 'rgba(0,86,140,0.04)', + }, + }, + }, + }, + MuiInputBase: { + styleOverrides: { + root: { + borderRadius: '50px', + '&.Mui-focused': { + boxShadow: '0 0 0 3px rgba(0,86,140,0.15)', + }, + }, + }, + }, + MuiPaper: { + styleOverrides: { + root: { + borderRadius: '12px', + border: '1px solid #EEEEEE', + boxShadow: shadows.card, + transition: 'box-shadow 0.2s ease', + }, + elevation0: { border: 'none', boxShadow: 'none' }, + }, + }, + MuiLink: { + styleOverrides: { + root: { + transition: 'color 0.15s ease', + }, + }, + }, + MuiIconButton: { + styleOverrides: { + root: { + transition: 'background-color 0.15s ease', + }, + }, + }, + BackstageHeader: { + styleOverrides: { + header: { + boxShadow: '0 2px 8px rgba(0,0,0,0.1)', + }, + }, + }, + BackstageHeaderLabel: { + styleOverrides: { + root: { + fontSize: '14px', + }, + }, + }, + BackstageInfoCard: { + styleOverrides: { + header: { + borderBottom: '1px solid #EEEEEE', + }, + }, + }, + BackstageSidebarItem: { + styleOverrides: { + root: { + borderRadius: '8px', + transition: 'background-color 0.2s ease', + }, + }, + }, + BackstagePage: { + styleOverrides: { + root: { backgroundColor: '#F5F7FA' }, + }, + }, + BackstageContent: { + styleOverrides: { + root: { backgroundColor: '#F5F7FA' }, + }, + }, + }, + defaultPageTheme: 'home', + pageTheme: cnoePageThemeLight, + typography: cnoeTypography, +}); + +// Option B: Vibrant — Dark theme +const darkTheme = createUnifiedTheme({ + palette: { + ...palettes.dark, + primary: { main: '#4DA6FF' }, + secondary: { main: '#FFB74D' }, + background: { default: '#0D1117', paper: '#161B22' }, + text: { primary: '#E6E6E6', secondary: '#8B949E' }, + divider: '#30363D', + navigation: { + background: '#0D1117', + indicator: '#FFB74D', + color: '#6B778C', + selectedColor: '#4DA6FF', + navItem: { hoverBackground: 'rgba(77,166,255,0.1)' }, + }, + }, + components: { + MuiCssBaseline: { + styleOverrides: { + body: { backgroundColor: '#0D1117' }, + }, + }, + MuiCard: { + styleOverrides: { + root: { + borderRadius: '12px', + border: '1px solid #30363D', + backgroundColor: '#161B22', + boxShadow: shadows.card, + transition: 'box-shadow 0.2s ease, transform 0.2s ease', + '&:hover': { + boxShadow: shadows.cardHoverDark, + transform: 'translateY(-2px)', + }, + }, + }, + }, + MuiButton: { + styleOverrides: { + root: { + borderRadius: '8px', + textTransform: 'none', + fontWeight: 600, + transition: 'all 0.2s ease', + }, + containedPrimary: { + backgroundColor: '#4DA6FF', + backgroundImage: 'linear-gradient(180deg, #5DB3FF 0%, #4DA6FF 100%)', + color: '#0D1117', + '&:hover': { + backgroundColor: '#3A8FE0', + backgroundImage: 'linear-gradient(180deg, #4DA6FF 0%, #3A8FE0 100%)', + boxShadow: '0 4px 12px rgba(77,166,255,0.3)', + }, + }, + containedSecondary: { + backgroundColor: '#FFB74D', + color: '#212121', + '&:hover': { + backgroundColor: '#FFA726', + boxShadow: '0 4px 12px rgba(255,183,77,0.3)', + }, + }, + }, + }, + MuiChip: { + styleOverrides: { + root: { + borderRadius: '6px', + fontWeight: 500, + fontSize: '12px', + borderLeft: '3px solid transparent', + }, + colorPrimary: { + backgroundColor: 'rgba(77,166,255,0.15)', + color: '#4DA6FF', + borderLeftColor: '#4DA6FF', + }, + colorSecondary: { + backgroundColor: 'rgba(255,152,0,0.15)', + color: '#FFB74D', + borderLeftColor: '#FFB74D', + }, + }, + }, + MuiTab: { + styleOverrides: { + root: { + textTransform: 'none', + fontWeight: 500, + fontSize: '13px', + letterSpacing: '0.5px', + transition: 'color 0.2s ease', + }, + }, + }, + MuiTableRow: { + styleOverrides: { + root: { + '&:nth-of-type(even)': { + backgroundColor: 'rgba(255,255,255,0.02)', + }, + '&:hover': { + backgroundColor: 'rgba(255,255,255,0.05)', + }, + }, + }, + }, + MuiTableHead: { + styleOverrides: { + root: { + '& .MuiTableCell-head': { + fontWeight: 700, + backgroundColor: 'rgba(255,255,255,0.04)', + }, + }, + }, + }, + MuiInputBase: { + styleOverrides: { + root: { + borderRadius: '50px', + backgroundColor: '#161B22', + border: '1px solid #30363D', + color: '#C9D1D9', + '&.Mui-focused': { + boxShadow: '0 0 0 3px rgba(77,166,255,0.2)', + }, + }, + }, + }, + MuiPaper: { + styleOverrides: { + root: { + backgroundColor: '#161B22', + backgroundImage: 'none', + borderRadius: '12px', + border: '1px solid #30363D', + boxShadow: shadows.card, + transition: 'box-shadow 0.2s ease', + }, + elevation0: { border: 'none', boxShadow: 'none' }, + }, + }, + MuiLink: { + styleOverrides: { + root: { + transition: 'color 0.15s ease', + }, + }, + }, + MuiIconButton: { + styleOverrides: { + root: { + transition: 'background-color 0.15s ease', + }, + }, + }, + BackstageHeader: { + styleOverrides: { + header: { + boxShadow: '0 2px 8px rgba(0,0,0,0.25)', + }, + }, + }, + BackstageHeaderLabel: { + styleOverrides: { + root: { + fontSize: '14px', + }, + }, + }, + BackstageInfoCard: { + styleOverrides: { + header: { + borderBottom: '1px solid #30363D', + }, + }, + }, + BackstageSidebarItem: { + styleOverrides: { + root: { + borderRadius: '8px', + transition: 'background-color 0.2s ease', + }, + }, + }, + BackstagePage: { + styleOverrides: { + root: { backgroundColor: '#0D1117' }, + }, + }, + BackstageContent: { + styleOverrides: { + root: { backgroundColor: '#0D1117' }, + }, + }, + }, + defaultPageTheme: 'home', + pageTheme: cnoePageThemeDark, + typography: cnoeTypography, +}); + +// AppTheme exports for legacy createApp from @backstage/app-defaults +export const cnoeVibrantLightAppTheme: AppTheme = { + id: 'cnoe-light', + title: 'CNOE Light', + variant: 'light', + Provider: ({ children }) => + createElement(UnifiedThemeProvider, { theme: lightTheme, children }), +}; + +export const cnoeVibrantDarkAppTheme: AppTheme = { + id: 'cnoe-dark', + title: 'CNOE Dark', + variant: 'dark', + Provider: ({ children }) => + createElement(UnifiedThemeProvider, { theme: darkTheme, children }), +}; diff --git a/packages/app/tsconfig.json b/packages/app/tsconfig.json new file mode 100644 index 0000000..ffebe71 --- /dev/null +++ b/packages/app/tsconfig.json @@ -0,0 +1,9 @@ +{ + "extends": "@backstage/cli/config/tsconfig.json", + "include": ["src"], + "exclude": ["node_modules"], + "compilerOptions": { + "outDir": "dist-types", + "rootDir": "src" + } +} diff --git a/packages/backend/Dockerfile b/packages/backend/Dockerfile deleted file mode 100644 index 18548e9..0000000 --- a/packages/backend/Dockerfile +++ /dev/null @@ -1,52 +0,0 @@ -# This dockerfile builds an image for the backend package. -# It should be executed with the root of the repo as docker context. -# -# Before building this image, be sure to have run the following commands in the repo root: -# -# yarn install -# yarn tsc -# yarn build:backend -# -# Once the commands have been run, you can build the image using `yarn build-image` - -FROM node:18-bookworm-slim - -# Install isolate-vm dependencies, these are needed by the @backstage/plugin-scaffolder-backend. -RUN --mount=type=cache,target=/var/cache/apt,sharing=locked \ - --mount=type=cache,target=/var/lib/apt,sharing=locked \ - apt-get update && \ - apt-get install -y --no-install-recommends python3 g++ build-essential && \ - yarn config set python /usr/bin/python3 - -# Install sqlite3 dependencies. You can skip this if you don't use sqlite3 in the image, -# in which case you should also move better-sqlite3 to "devDependencies" in package.json. -RUN --mount=type=cache,target=/var/cache/apt,sharing=locked \ - --mount=type=cache,target=/var/lib/apt,sharing=locked \ - apt-get update && \ - apt-get install -y --no-install-recommends libsqlite3-dev - -# From here on we use the least-privileged `node` user to run the backend. -USER node - -# This should create the app dir as `node`. -# If it is instead created as `root` then the `tar` command below will fail: `can't create directory 'packages/': Permission denied`. -# If this occurs, then ensure BuildKit is enabled (`DOCKER_BUILDKIT=1`) so the app dir is correctly created as `node`. -WORKDIR /app - -# This switches many Node.js dependencies to production mode. -ENV NODE_ENV production - -# Copy repo skeleton first, to avoid unnecessary docker cache invalidation. -# The skeleton contains the package.json of each package in the monorepo, -# and along with yarn.lock and the root package.json, that's enough to run yarn install. -COPY --chown=node:node yarn.lock package.json packages/backend/dist/skeleton.tar.gz ./ -RUN tar xzf skeleton.tar.gz && rm skeleton.tar.gz - -RUN --mount=type=cache,target=/home/node/.cache/yarn,sharing=locked,uid=1000,gid=1000 \ - yarn install --frozen-lockfile --production --network-timeout 300000 - -# Then copy the rest of the backend bundle, along with any other files we might want. -COPY --chown=node:node packages/backend/dist/bundle.tar.gz app-config*.yaml ./ -RUN tar xzf bundle.tar.gz && rm bundle.tar.gz - -CMD ["node", "packages/backend", "--config", "app-config.yaml", "--config", "app-config.production.yaml"] diff --git a/packages/backend/README.md b/packages/backend/README.md deleted file mode 100644 index 3607b0a..0000000 --- a/packages/backend/README.md +++ /dev/null @@ -1,59 +0,0 @@ -# example-backend - -This package is an EXAMPLE of a Backstage backend. - -The main purpose of this package is to provide a test bed for Backstage plugins -that have a backend part. Feel free to experiment locally or within your fork by -adding dependencies and routes to this backend, to try things out. - -Our goal is to eventually amend the create-app flow of the CLI, such that a -production ready version of a backend skeleton is made alongside the frontend -app. Until then, feel free to experiment here! - -## Development - -To run the example backend, first go to the project root and run - -```bash -yarn install -``` - -You should only need to do this once. - -After that, go to the `packages/backend` directory and run - -```bash -yarn start -``` - -If you want to override any configuration locally, for example adding any secrets, -you can do so in `app-config.local.yaml`. - -The backend starts up on port 7007 per default. - -## Populating The Catalog - -If you want to use the catalog functionality, you need to add so called -locations to the backend. These are places where the backend can find some -entity descriptor data to consume and serve. For more information, see -[Software Catalog Overview - Adding Components to the Catalog](https://backstage.io/docs/features/software-catalog/#adding-components-to-the-catalog). - -To get started quickly, this template already includes some statically configured example locations -in `app-config.yaml` under `catalog.locations`. You can remove and replace these locations as you -like, and also override them for local development in `app-config.local.yaml`. - -## Authentication - -We chose [Passport](http://www.passportjs.org/) as authentication platform due -to its comprehensive set of supported authentication -[strategies](http://www.passportjs.org/packages/). - -Read more about the -[auth-backend](https://github.com/backstage/backstage/blob/master/plugins/auth-backend/README.md) -and -[how to add a new provider](https://github.com/backstage/backstage/blob/master/docs/auth/add-auth-provider.md) - -## Documentation - -- [Backstage Readme](https://github.com/backstage/backstage/blob/master/README.md) -- [Backstage Documentation](https://backstage.io/docs) diff --git a/packages/backend/package.json b/packages/backend/package.json index 85a58b7..35312f0 100644 --- a/packages/backend/package.json +++ b/packages/backend/package.json @@ -12,63 +12,60 @@ "build": "backstage-cli package build", "lint": "backstage-cli package lint", "test": "backstage-cli package test", - "clean": "backstage-cli package clean", - "build-image": "docker build ../.. -f Dockerfile --tag backstage" + "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/backend-common": "^0.23.2", - "@backstage/backend-defaults": "^0.4.0", - "@backstage/backend-plugin-api": "^0.7.0", - "@backstage/backend-tasks": "^0.5.26", - "@backstage/catalog-client": "^1.6.5", - "@backstage/catalog-model": "^1.5.0", - "@backstage/config": "^1.2.0", - "@backstage/errors": "^1.2.4", - "@backstage/integration": "^1.12.0", - "@backstage/plugin-app-backend": "^0.3.70", - "@backstage/plugin-auth-backend": "^0.22.8", - "@backstage/plugin-auth-backend-module-guest-provider": "^0.1.7", - "@backstage/plugin-auth-backend-module-oidc-provider": "^0.2.2", - "@backstage/plugin-auth-node": "^0.4.16", - "@backstage/plugin-catalog-backend": "^1.23.2", - "@backstage/plugin-catalog-backend-module-scaffolder-entity-model": "^0.1.19", - "@backstage/plugin-kubernetes-backend": "^0.18.2", - "@backstage/plugin-permission-common": "^0.8.0", - "@backstage/plugin-permission-node": "^0.8.0", - "@backstage/plugin-proxy-backend": "^0.5.2", - "@backstage/plugin-scaffolder-backend": "^1.22.11", - "@backstage/plugin-scaffolder-backend-module-gitea": "^0.1.11", - "@backstage/plugin-scaffolder-backend-module-github": "^0.4.0", - "@backstage/plugin-scaffolder-node": "^0.4.7", - "@backstage/plugin-search-backend": "^1.5.13", - "@backstage/plugin-search-backend-module-catalog": "^0.1.27", - "@backstage/plugin-search-backend-module-pg": "^0.5.31", - "@backstage/plugin-search-backend-module-techdocs": "^0.1.26", - "@backstage/plugin-search-backend-node": "^1.2.26", - "@backstage/plugin-techdocs-backend": "^1.10.8", - "@backstage/types": "^1.1.1", + "@backstage/backend-defaults": "^0.16.0", + "@backstage/backend-plugin-api": "^1.8.0", + "@backstage/catalog-model": "^1.7.7", + "@backstage/config": "^1.3.6", + "@backstage/errors": "^1.2.7", + "@backstage/integration": "^2.0.0", + "@backstage/plugin-app-backend": "^0.5.12", + "@backstage/plugin-auth-backend": "^0.27.3", + "@backstage/plugin-auth-backend-module-guest-provider": "^0.2.17", + "@backstage/plugin-auth-backend-module-oidc-provider": "^0.4.14", + "@backstage/plugin-auth-node": "^0.6.14", + "@backstage/plugin-catalog-backend": "^3.5.0", + "@backstage/plugin-catalog-backend-module-gitlab": "^0.8.0", + "@backstage/plugin-catalog-backend-module-scaffolder-entity-model": "^0.2.18", + "@backstage/plugin-catalog-node": "^2.2.0", + "@backstage/plugin-kubernetes-backend": "^0.21.2", + "@backstage/plugin-permission-backend": "^0.7.10", + "@backstage/plugin-permission-backend-module-allow-all-policy": "^0.2.17", + "@backstage/plugin-permission-common": "^0.9.0", + "@backstage/plugin-permission-node": "^0.10.1", + "@backstage/plugin-proxy-backend": "^0.6.11", + "@backstage/plugin-scaffolder-backend": "^3.3.0", + "@backstage/plugin-scaffolder-backend-module-github": "^0.9.7", + "@backstage/plugin-scaffolder-node": "^0.13.1", + "@backstage/plugin-search-backend": "^2.1.0", + "@backstage/plugin-search-backend-module-catalog": "^0.3.13", + "@backstage/plugin-search-backend-module-techdocs": "^0.4.12", + "@backstage/plugin-techdocs-backend": "^2.1.6", + "@backstage/types": "^1.2.2", "@internal/backstage-plugin-terraform-backend": "^0.1.0", "@kubernetes/client-node": "~0.20.0", - "@roadiehq/backstage-plugin-argo-cd-backend": "3.0.2", - "@roadiehq/scaffolder-backend-module-http-request": "^4.3.5", - "@roadiehq/scaffolder-backend-module-utils": "^1.17.0", + "@roadiehq/backstage-plugin-argo-cd-backend": "^4.7.1", + "@roadiehq/scaffolder-backend-argocd": "^1.7.1", + "@roadiehq/scaffolder-backend-module-http-request": "^5.6.0", + "@roadiehq/scaffolder-backend-module-utils": "^4.1.2", + "@terasky/backstage-plugin-kro-resources-backend": "^0.2.1", + "@terasky/backstage-plugin-kubernetes-ingestor": "^2.2.0", "app": "link:../app", - "better-sqlite3": "^9.0.0", - "dockerode": "^3.3.1", + "better-sqlite3": "^11.0.0", "express": "^4.17.1", "express-promise-router": "^4.1.0", "fs-extra": "~11.2.0", - "node-gyp": "^9.0.0", - "pg": "^8.11.3", - "winston": "^3.2.1" + "js-yaml": "^4.1.0", + "node-gyp": "^10.0.0", + "yaml": "^2.3.0" }, "devDependencies": { - "@backstage/cli": "^0.26.10", - "@types/dockerode": "^3.3.0", + "@backstage/backend-test-utils": "^1.11.1", + "@backstage/cli": "^0.36.0", "@types/express": "^4.17.6", - "@types/express-serve-static-core": "^4.17.5", - "@types/fs-extra": "^11.0.4", - "@types/luxon": "^2.0.4" + "@types/fs-extra": "^11.0.4" }, "files": [ "dist" diff --git a/packages/backend/src/index.test.ts b/packages/backend/src/index.test.ts deleted file mode 100644 index 7814b8c..0000000 --- a/packages/backend/src/index.test.ts +++ /dev/null @@ -1,8 +0,0 @@ -import { PluginEnvironment } from './types'; - -describe('test', () => { - it('unbreaks the test runner', () => { - const unbreaker = {} as PluginEnvironment; - expect(unbreaker).toBeTruthy(); - }); -}); diff --git a/packages/backend/src/index.ts b/packages/backend/src/index.ts index 7517332..9a118a9 100644 --- a/packages/backend/src/index.ts +++ b/packages/backend/src/index.ts @@ -1,40 +1,87 @@ import { createBackend } from '@backstage/backend-defaults'; import { authModuleKeycloakOIDCProvider } from './plugins/auth'; -import { cnoeScaffolderActions } from './plugins/scaffolder'; -import { legacyPlugin } from '@backstage/backend-common'; +import { cnoeScaffolderActions } from './modules/scaffolder'; const backend = createBackend(); -// core plugins -backend.add(import('@backstage/plugin-app-backend/alpha')); -backend.add(import('@backstage/plugin-catalog-backend/alpha')); -backend.add(import('@backstage/plugin-proxy-backend/alpha')); -backend.add(import('@backstage/plugin-techdocs-backend/alpha')); -// auth plugins -backend.add(import('@backstage/plugin-auth-backend')); -backend.add(import('@backstage/plugin-auth-backend-module-guest-provider')); -// scaffolder plugins -backend.add(import('@backstage/plugin-scaffolder-backend/alpha')); +// Detect if running inside a Kubernetes cluster +const isInCluster = require('fs').existsSync('/var/run/secrets/kubernetes.io/serviceaccount/token'); + +const k8sEnabled = process.env.K8S_CLUSTER_URL || isInCluster; + +// Core plugins +backend.add(import('@backstage/plugin-app-backend')); +if (process.env.MOCK_MODE === 'true') { + backend.add(import('./plugins/mock-proxy')); +} else { + backend.add(import('@backstage/plugin-proxy-backend')); +} +backend.add(import('@backstage/plugin-techdocs-backend')); + +// Scaffolder +backend.add(import('@backstage/plugin-scaffolder-backend')); backend.add( import('@backstage/plugin-catalog-backend-module-scaffolder-entity-model'), ); -backend.add(import('@backstage/plugin-scaffolder-backend-module-github')); -// search plugins -backend.add(import('@backstage/plugin-search-backend/alpha')); -backend.add(import('@backstage/plugin-search-backend-module-catalog/alpha')); -backend.add(import('@backstage/plugin-search-backend-module-techdocs/alpha')); -// other @backstage plugins -backend.add(import('@backstage/plugin-kubernetes-backend/alpha')); -// non-core plugins -// roadie plugins -backend.add(import('@roadiehq/scaffolder-backend-module-utils/new-backend')); -backend.add(legacyPlugin('argocd', import('./plugins/argocd'))); + +// Scaffolder modules that require external services — skip if not configured +if (process.env.GITHUB_TOKEN) { + backend.add(import('@backstage/plugin-scaffolder-backend-module-github')); +} + +// CNOE custom scaffolder actions (gitea publish, argocd, k8s-apply, sanitize, verify) +backend.add(cnoeScaffolderActions); + +// Roadie scaffolder modules +backend.add(import('@roadiehq/scaffolder-backend-module-utils')); +backend.add(import('@roadiehq/scaffolder-backend-module-http-request')); +if (k8sEnabled) { + backend.add(import('@roadiehq/scaffolder-backend-argocd')); +} + +// Auth +backend.add(import('@backstage/plugin-auth-backend')); +backend.add(import('@backstage/plugin-auth-backend-module-guest-provider')); + +// Catalog +backend.add(import('@backstage/plugin-catalog-backend')); + +// Add GitLab integration for catalog processing +if (process.env.GIT_HOSTNAME) { + backend.add(import('@backstage/plugin-catalog-backend-module-gitlab')); +} + +// Permission +backend.add(import('@backstage/plugin-permission-backend')); backend.add( - import('@roadiehq/scaffolder-backend-module-http-request/new-backend'), + import('@backstage/plugin-permission-backend-module-allow-all-policy'), ); -// cnoe plugins -backend.add(authModuleKeycloakOIDCProvider); -backend.add(cnoeScaffolderActions); -backend.add(import('@internal/backstage-plugin-terraform-backend')); + +// Search +backend.add(import('@backstage/plugin-search-backend')); +backend.add(import('@backstage/plugin-search-backend-module-catalog')); +backend.add(import('@backstage/plugin-search-backend-module-techdocs/alpha')); + +// Kubernetes +if (process.env.MOCK_MODE === 'true') { + backend.add(import('./plugins/mock-kubernetes')); +} else if (k8sEnabled) { + backend.add(import('@backstage/plugin-kubernetes-backend')); + backend.add(import('@terasky/backstage-plugin-kubernetes-ingestor')); + backend.add(import('@terasky/backstage-plugin-kro-resources-backend')); +} + +// Keycloak OIDC auth +if (process.env.KEYCLOAK_URL) { + backend.add(authModuleKeycloakOIDCProvider); +} + +// Terraform backend +if (process.env.MOCK_MODE !== 'true') { + backend.add(import('@internal/backstage-plugin-terraform-backend')); +} else { + backend.add(import('./plugins/mock-terraform')); + backend.add(import('./plugins/mock-argocd')); +} backend.start(); diff --git a/packages/backend/src/mocks/fixtures/argo-workflow-templates.json b/packages/backend/src/mocks/fixtures/argo-workflow-templates.json new file mode 100644 index 0000000..d37896a --- /dev/null +++ b/packages/backend/src/mocks/fixtures/argo-workflow-templates.json @@ -0,0 +1,15 @@ +{ + "apiVersion": "argoproj.io/v1alpha1", + "kind": "WorkflowTemplateList", + "metadata": {}, + "items": [ + { + "metadata": { "name": "ci-build-template", "namespace": "default" }, + "spec": { "entrypoint": "build-and-test" } + }, + { + "metadata": { "name": "deploy-template", "namespace": "default" }, + "spec": { "entrypoint": "deploy-to-env" } + } + ] +} diff --git a/packages/backend/src/mocks/fixtures/argo-workflows.json b/packages/backend/src/mocks/fixtures/argo-workflows.json new file mode 100644 index 0000000..67991b0 --- /dev/null +++ b/packages/backend/src/mocks/fixtures/argo-workflows.json @@ -0,0 +1,22 @@ +{ + "apiVersion": "argoproj.io/v1alpha1", + "kind": "WorkflowList", + "metadata": {}, + "items": [ + { + "metadata": { "name": "ci-build-pipeline-abc12", "namespace": "default" }, + "spec": { "entrypoint": "build-and-test" }, + "status": { "phase": "Running", "progress": "2/5", "startedAt": "2026-04-15T10:00:00Z" } + }, + { + "metadata": { "name": "deploy-staging-def34", "namespace": "default" }, + "spec": { "entrypoint": "deploy" }, + "status": { "phase": "Succeeded", "progress": "3/3", "startedAt": "2026-04-15T08:00:00Z", "finishedAt": "2026-04-15T08:15:00Z" } + }, + { + "metadata": { "name": "data-pipeline-ghi56", "namespace": "default" }, + "spec": { "entrypoint": "etl-pipeline" }, + "status": { "phase": "Failed", "progress": "1/4", "startedAt": "2026-04-15T06:00:00Z", "finishedAt": "2026-04-15T06:30:00Z" } + } + ] +} diff --git a/packages/backend/src/mocks/fixtures/argocd-applications.json b/packages/backend/src/mocks/fixtures/argocd-applications.json new file mode 100644 index 0000000..292d6c7 --- /dev/null +++ b/packages/backend/src/mocks/fixtures/argocd-applications.json @@ -0,0 +1,72 @@ +{ + "items": [ + { + "metadata": { + "name": "platform-api-service", + "namespace": "argocd", + "creationTimestamp": "2026-04-10T08:00:00Z" + }, + "spec": { + "project": "default", + "source": { + "repoURL": "https://github.com/cnoe-io/platform-api", + "path": "k8s", + "targetRevision": "main" + }, + "destination": { + "server": "https://kubernetes.default.svc", + "namespace": "default" + }, + "syncPolicy": { + "automated": { + "prune": true, + "selfHeal": true + } + } + }, + "status": { + "sync": { + "status": "Synced", + "revision": "a1b2c3d4e5f6" + }, + "health": { + "status": "Healthy" + }, + "operationState": { + "phase": "Succeeded", + "message": "successfully synced (all tasks run)", + "syncResult": { + "revision": "a1b2c3d4e5f6" + }, + "startedAt": "2026-04-15T10:00:00Z", + "finishedAt": "2026-04-15T10:01:30Z" + }, + "summary": { + "images": ["cnoe/platform-api:1.2.0"] + }, + "history": [ + { + "revision": "a1b2c3d4e5f6", + "deployedAt": "2026-04-15T10:01:30Z", + "id": 5, + "source": { + "repoURL": "https://github.com/cnoe-io/platform-api", + "path": "k8s", + "targetRevision": "main" + } + }, + { + "revision": "9f8e7d6c5b4a", + "deployedAt": "2026-04-14T14:30:00Z", + "id": 4, + "source": { + "repoURL": "https://github.com/cnoe-io/platform-api", + "path": "k8s", + "targetRevision": "main" + } + } + ] + } + } + ] +} diff --git a/packages/backend/src/mocks/fixtures/kubernetes-workloads.json b/packages/backend/src/mocks/fixtures/kubernetes-workloads.json new file mode 100644 index 0000000..6681a5c --- /dev/null +++ b/packages/backend/src/mocks/fixtures/kubernetes-workloads.json @@ -0,0 +1,214 @@ +{ + "items": [ + { + "cluster": { + "name": "local" + }, + "resources": [ + { + "type": "deployments", + "resources": [ + { + "apiVersion": "apps/v1", + "kind": "Deployment", + "metadata": { + "name": "platform-api-service", + "namespace": "default", + "creationTimestamp": "2026-04-10T08:00:00Z", + "labels": { + "app": "platform-api-service", + "backstage.io/kubernetes-id": "platform-api-service" + } + }, + "spec": { + "replicas": 3, + "selector": { "matchLabels": { "app": "platform-api-service" } }, + "template": { + "metadata": { "labels": { "app": "platform-api-service" } }, + "spec": { + "containers": [ + { + "name": "api-server", + "image": "cnoe/platform-api:1.2.0", + "ports": [{ "containerPort": 8080 }], + "resources": { + "requests": { "cpu": "250m", "memory": "256Mi" }, + "limits": { "cpu": "500m", "memory": "512Mi" } + } + } + ] + } + } + }, + "status": { + "replicas": 3, + "readyReplicas": 3, + "availableReplicas": 3, + "updatedReplicas": 3, + "conditions": [ + { "type": "Available", "status": "True", "lastTransitionTime": "2026-04-10T08:05:00Z" }, + { "type": "Progressing", "status": "True", "lastTransitionTime": "2026-04-10T08:05:00Z" } + ] + } + } + ] + }, + { + "type": "replicaSets", + "resources": [ + { + "apiVersion": "apps/v1", + "kind": "ReplicaSet", + "metadata": { + "name": "platform-api-service-7d9f8b6c5", + "namespace": "default", + "creationTimestamp": "2026-04-10T08:00:00Z", + "labels": { "app": "platform-api-service" }, + "ownerReferences": [{ "apiVersion": "apps/v1", "kind": "Deployment", "name": "platform-api-service" }] + }, + "spec": { "replicas": 3 }, + "status": { "replicas": 3, "readyReplicas": 3, "availableReplicas": 3 } + } + ] + }, + { + "type": "pods", + "resources": [ + { + "apiVersion": "v1", + "kind": "Pod", + "metadata": { + "name": "platform-api-service-7d9f8b6c5-abc12", + "namespace": "default", + "creationTimestamp": "2026-04-10T08:01:00Z", + "labels": { "app": "platform-api-service" }, + "ownerReferences": [{ "apiVersion": "apps/v1", "kind": "ReplicaSet", "name": "platform-api-service-7d9f8b6c5" }] + }, + "spec": { + "containers": [ + { "name": "api-server", "image": "cnoe/platform-api:1.2.0", "ports": [{ "containerPort": 8080 }] } + ] + }, + "status": { + "phase": "Running", + "conditions": [ + { "type": "Ready", "status": "True" }, + { "type": "ContainersReady", "status": "True" } + ], + "containerStatuses": [ + { "name": "api-server", "ready": true, "restartCount": 0, "state": { "running": { "startedAt": "2026-04-10T08:01:30Z" } }, "image": "cnoe/platform-api:1.2.0" } + ] + } + }, + { + "apiVersion": "v1", + "kind": "Pod", + "metadata": { + "name": "platform-api-service-7d9f8b6c5-def34", + "namespace": "default", + "creationTimestamp": "2026-04-10T08:01:00Z", + "labels": { "app": "platform-api-service" }, + "ownerReferences": [{ "apiVersion": "apps/v1", "kind": "ReplicaSet", "name": "platform-api-service-7d9f8b6c5" }] + }, + "spec": { + "containers": [ + { "name": "api-server", "image": "cnoe/platform-api:1.2.0", "ports": [{ "containerPort": 8080 }] } + ] + }, + "status": { + "phase": "Running", + "conditions": [ + { "type": "Ready", "status": "True" }, + { "type": "ContainersReady", "status": "True" } + ], + "containerStatuses": [ + { "name": "api-server", "ready": true, "restartCount": 0, "state": { "running": { "startedAt": "2026-04-10T08:01:30Z" } }, "image": "cnoe/platform-api:1.2.0" } + ] + } + }, + { + "apiVersion": "v1", + "kind": "Pod", + "metadata": { + "name": "platform-api-service-7d9f8b6c5-ghi56", + "namespace": "default", + "creationTimestamp": "2026-04-10T08:01:00Z", + "labels": { "app": "platform-api-service" }, + "ownerReferences": [{ "apiVersion": "apps/v1", "kind": "ReplicaSet", "name": "platform-api-service-7d9f8b6c5" }] + }, + "spec": { + "containers": [ + { "name": "api-server", "image": "cnoe/platform-api:1.2.0", "ports": [{ "containerPort": 8080 }] } + ] + }, + "status": { + "phase": "Running", + "conditions": [ + { "type": "Ready", "status": "True" }, + { "type": "ContainersReady", "status": "True" } + ], + "containerStatuses": [ + { "name": "api-server", "ready": true, "restartCount": 1, "state": { "running": { "startedAt": "2026-04-12T14:00:00Z" } }, "image": "cnoe/platform-api:1.2.0" } + ] + } + } + ] + }, + { + "type": "services", + "resources": [ + { + "apiVersion": "v1", + "kind": "Service", + "metadata": { + "name": "platform-api-service", + "namespace": "default", + "creationTimestamp": "2026-04-10T08:00:00Z", + "labels": { "app": "platform-api-service" } + }, + "spec": { + "type": "ClusterIP", + "selector": { "app": "platform-api-service" }, + "ports": [{ "port": 80, "targetPort": 8080, "protocol": "TCP" }] + } + } + ] + }, + { + "type": "configmaps", + "resources": [] + }, + { + "type": "horizontalPodAutoscalers", + "resources": [] + }, + { + "type": "ingresses", + "resources": [ + { + "apiVersion": "networking.k8s.io/v1", + "kind": "Ingress", + "metadata": { + "name": "platform-api-ingress", + "namespace": "default", + "creationTimestamp": "2026-04-10T08:00:00Z" + }, + "spec": { + "rules": [ + { + "host": "api.cnoe.example.com", + "http": { + "paths": [{ "path": "/", "pathType": "Prefix", "backend": { "service": { "name": "platform-api-service", "port": { "number": 80 } } } }] + } + } + ] + } + } + ] + } + ], + "podMetrics": [], + "errors": [] + } + ] +} diff --git a/packages/backend/src/mocks/fixtures/spark-applications.json b/packages/backend/src/mocks/fixtures/spark-applications.json new file mode 100644 index 0000000..bbb24e8 --- /dev/null +++ b/packages/backend/src/mocks/fixtures/spark-applications.json @@ -0,0 +1,27 @@ +{ + "apiVersion": "sparkoperator.k8s.io/v1beta2", + "kind": "SparkApplicationList", + "items": [ + { + "apiVersion": "sparkoperator.k8s.io/v1beta2", + "kind": "SparkApplication", + "metadata": { "name": "spark-etl-job", "namespace": "default", "creationTimestamp": "2026-04-15T10:00:00Z" }, + "spec": { "type": "Python", "mode": "cluster", "image": "spark:3.5.0", "sparkVersion": "3.5.0", "mainApplicationFile": "local:///opt/spark/examples/src/main/python/pi.py", "driver": { "cores": 1, "memory": "512m", "podName": "spark-etl-job-driver" }, "executor": { "cores": 1, "instances": 2, "memory": "512m" } }, + "status": { "applicationState": { "state": "RUNNING" }, "driverInfo": { "podName": "spark-etl-job-driver", "webUIPort": 4040 }, "executorState": { "spark-etl-job-exec-1": "RUNNING", "spark-etl-job-exec-2": "RUNNING" } } + }, + { + "apiVersion": "sparkoperator.k8s.io/v1beta2", + "kind": "SparkApplication", + "metadata": { "name": "spark-analytics", "namespace": "default", "creationTimestamp": "2026-04-15T08:00:00Z" }, + "spec": { "type": "Scala", "mode": "cluster", "image": "spark:3.5.0", "sparkVersion": "3.5.0", "mainClass": "org.example.Analytics", "driver": { "cores": 2, "memory": "1g", "podName": "spark-analytics-driver" }, "executor": { "cores": 2, "instances": 4, "memory": "2g" } }, + "status": { "applicationState": { "state": "COMPLETED" }, "driverInfo": { "podName": "spark-analytics-driver" }, "terminationTime": "2026-04-15T09:30:00Z" } + }, + { + "apiVersion": "sparkoperator.k8s.io/v1beta2", + "kind": "SparkApplication", + "metadata": { "name": "spark-ml-training", "namespace": "default", "creationTimestamp": "2026-04-15T07:00:00Z" }, + "spec": { "type": "Python", "mode": "cluster", "image": "spark:3.5.0", "sparkVersion": "3.5.0", "mainApplicationFile": "local:///opt/spark/ml/train.py", "driver": { "cores": 2, "memory": "2g", "podName": "spark-ml-training-driver" }, "executor": { "cores": 4, "instances": 8, "memory": "4g" } }, + "status": { "applicationState": { "state": "FAILED", "errorMessage": "OutOfMemoryError: Java heap space" }, "driverInfo": { "podName": "spark-ml-training-driver" }, "terminationTime": "2026-04-15T07:45:00Z" } + } + ] +} diff --git a/packages/backend/src/mocks/fixtures/spark-logs.txt b/packages/backend/src/mocks/fixtures/spark-logs.txt new file mode 100644 index 0000000..ee2c0ca --- /dev/null +++ b/packages/backend/src/mocks/fixtures/spark-logs.txt @@ -0,0 +1,7 @@ +2026-04-15 10:00:01 INFO SparkContext: Running Spark version 3.5.0 +2026-04-15 10:00:02 INFO SparkContext: Submitted application: spark-etl-job +2026-04-15 10:00:03 INFO SecurityManager: Changing view acls to: spark +2026-04-15 10:00:05 INFO Utils: Successfully started service 'sparkDriver' on port 7078 +2026-04-15 10:00:10 INFO SparkContext: Added JAR local:///opt/spark/examples/jars/spark-examples.jar +2026-04-15 10:00:15 INFO DAGScheduler: Job 0 finished: reduce at SparkPi.scala:38, took 5.123 s +2026-04-15 10:00:16 INFO SparkContext: Starting job: Pi is roughly 3.14159 diff --git a/packages/backend/src/mocks/fixtures/terraform-file-list.json b/packages/backend/src/mocks/fixtures/terraform-file-list.json new file mode 100644 index 0000000..5cc8ae0 --- /dev/null +++ b/packages/backend/src/mocks/fixtures/terraform-file-list.json @@ -0,0 +1 @@ +[{ "Key": "terraform/platform/terraform.tfstate", "TFStateContents": null }] diff --git a/packages/backend/src/mocks/fixtures/terraform-state.json b/packages/backend/src/mocks/fixtures/terraform-state.json new file mode 100644 index 0000000..3e5477b --- /dev/null +++ b/packages/backend/src/mocks/fixtures/terraform-state.json @@ -0,0 +1,41 @@ +{ + "version": 4, + "terraform_version": "1.5.0", + "serial": 42, + "outputs": [ + { "value": "vpc-0abc123def456", "type": "string" }, + { "value": "subnet-0def789abc012", "type": "string" } + ], + "resources": [ + { + "mode": "managed", + "type": "aws_vpc", + "name": "main", + "provider": "provider[\"registry.terraform.io/hashicorp/aws\"]", + "instances": [{ + "attributes": { "id": "vpc-0abc123def456", "cidr_block": "10.0.0.0/16", "name": "cnoe-platform-vpc", "enable_dns_support": true, "enable_dns_hostnames": true }, + "dependencies": [] + }] + }, + { + "mode": "managed", + "type": "aws_subnet", + "name": "public", + "provider": "provider[\"registry.terraform.io/hashicorp/aws\"]", + "instances": [{ + "attributes": { "id": "subnet-0def789abc012", "vpc_id": "vpc-0abc123def456", "cidr_block": "10.0.1.0/24", "availability_zone": "us-west-2a", "name": "cnoe-public-subnet" }, + "dependencies": ["managed.aws_vpc.main"] + }] + }, + { + "mode": "managed", + "type": "aws_security_group", + "name": "allow_tls", + "provider": "provider[\"registry.terraform.io/hashicorp/aws\"]", + "instances": [{ + "attributes": { "id": "sg-0ghi345jkl678", "vpc_id": "vpc-0abc123def456", "name": "allow-tls", "description": "Allow TLS inbound traffic" }, + "dependencies": ["managed.aws_vpc.main"] + }] + } + ] +} diff --git a/packages/backend/src/plugins/argocd.ts b/packages/backend/src/modules/actions/argocd.ts similarity index 75% rename from packages/backend/src/plugins/argocd.ts rename to packages/backend/src/modules/actions/argocd.ts index 611bf54..9e6d2ef 100644 --- a/packages/backend/src/plugins/argocd.ts +++ b/packages/backend/src/modules/actions/argocd.ts @@ -1,21 +1,13 @@ import { Config } from '@backstage/config'; import { createTemplateAction } from '@backstage/plugin-scaffolder-node'; import { examples } from './gitea-actions'; -import { Logger } from 'winston'; - +import { LoggerService } from '@backstage/backend-plugin-api'; import { ArgoService } from '@roadiehq/backstage-plugin-argo-cd-backend'; -import { createRouter } from '@roadiehq/backstage-plugin-argo-cd-backend'; -import { PluginEnvironment } from '../types'; - -export default async function createPlugin({ - logger, - config, -}: PluginEnvironment) { - return await createRouter({ logger, config }); -} - -export function createArgoCDApp(options: { config: Config; logger: Logger }) { +export function createArgoCDApp(options: { + config: Config; + logger: LoggerService; +}) { const { config, logger } = options; return createTemplateAction<{ @@ -42,30 +34,22 @@ export function createArgoCDApp(options: { config: Config; logger: Logger }) { 'appNamespace', ], properties: { - repoUrl: { - title: 'Repository Location', - type: 'string', - }, + repoUrl: { title: 'Repository Location', type: 'string' }, projectName: { title: 'name of the project in argocd', type: 'string', }, - appName: { - title: 'application name in argocd', - type: 'string', - }, + appName: { title: 'application name in argocd', type: 'string' }, appNamespace: { - title: 'application name in argocd', + title: 'application namespace in argocd', type: 'string', }, argoInstance: { - title: 'backstage argocd instance name defined in app-config.yaml', - type: 'string', - }, - path: { - title: 'argocd spec path', + title: + 'backstage argocd instance name defined in app-config.yaml', type: 'string', }, + path: { title: 'argocd spec path', type: 'string' }, labelValue: { title: 'for argocd plugin to locate this app', type: 'string', @@ -94,7 +78,7 @@ export function createArgoCDApp(options: { config: Config; logger: Logger }) { argoUserName, argoPassword, config, - logger, + logger as any, ); const argocdConfig = config @@ -112,11 +96,14 @@ export function createArgoCDApp(options: { config: Config; logger: Logger }) { username: instance.getOptionalString('username'), password: instance.getOptionalString('password'), })); + const matchedArgoInstance = argocdConfig.find( argoHost => argoHost.name === argoInstance, ); if (!matchedArgoInstance) { - throw new Error(`Unable to find Argo instance named "${argoInstance}"`); + throw new Error( + `Unable to find Argo instance named "${argoInstance}"`, + ); } const token = matchedArgoInstance.token || @@ -125,7 +112,7 @@ export function createArgoCDApp(options: { config: Config; logger: Logger }) { await argoSvc.createArgoApplication({ baseUrl: matchedArgoInstance.url, argoToken: token, - appName: appName, + appName, projectName: projectName ? projectName : appName, namespace: appNamespace, sourceRepo: repoUrl, diff --git a/packages/backend/src/modules/actions/gitea-actions.ts b/packages/backend/src/modules/actions/gitea-actions.ts new file mode 100644 index 0000000..dec25ca --- /dev/null +++ b/packages/backend/src/modules/actions/gitea-actions.ts @@ -0,0 +1,309 @@ +import { InputError } from '@backstage/errors'; +import { Config } from '@backstage/config'; +import { + getGiteaRequestOptions, + GiteaIntegrationConfig, + ScmIntegrationRegistry, + ScmIntegrations, +} from '@backstage/integration'; +import { + createTemplateAction, + getRepoSourceDirectory, + initRepoAndPush, + TemplateExample, +} from '@backstage/plugin-scaffolder-node'; +import crypto from 'crypto'; +import yaml from 'yaml'; + +export const examples: TemplateExample[] = [ + { + description: + 'Initializes a Gitea repository using the content of the workspace and publish it to Gitea with default configuration.', + example: yaml.stringify({ + steps: [ + { + id: 'publish', + action: 'publish:gitea', + name: 'Publish to Gitea', + input: { repoUrl: 'gitea.com?repo=repo&owner=owner' }, + }, + ], + }), + }, +]; + +const parseRepoUrl = ( + repoUrl: string, + integrations: ScmIntegrationRegistry, +): { + repo: string; + host: string; + owner?: string; + organization?: string; + workspace?: string; + project?: string; +} => { + let parsed; + try { + parsed = new URL(`https://${repoUrl}`); + } catch (error) { + throw new InputError( + `Invalid repo URL passed to publisher, got ${repoUrl}, ${error}`, + ); + } + const host = parsed.host; + const owner = parsed.searchParams.get('owner') ?? undefined; + const organization = parsed.searchParams.get('organization') ?? undefined; + const workspace = parsed.searchParams.get('workspace') ?? undefined; + const project = parsed.searchParams.get('project') ?? undefined; + + const type = integrations.byHost(host)?.type; + if (!type) { + throw new InputError( + `No matching integration configuration for host ${host}, please check your integrations config`, + ); + } + + const repo: string = parsed.searchParams.get('repo')!; + switch (type) { + case 'bitbucket': { + if (host === 'www.bitbucket.org') { + checkRequiredParams(parsed, 'workspace'); + } + checkRequiredParams(parsed, 'project', 'repo'); + break; + } + case 'gitlab': { + if (!project) { + checkRequiredParams(parsed, 'owner', 'repo'); + } + break; + } + case 'gitea': { + checkRequiredParams(parsed, 'repo'); + break; + } + case 'gerrit': { + checkRequiredParams(parsed, 'repo'); + break; + } + default: { + checkRequiredParams(parsed, 'repo', 'owner'); + break; + } + } + + return { host, owner, repo, organization, workspace, project }; +}; + +function checkRequiredParams(repoUrl: URL, ...params: string[]) { + for (let i = 0; i < params.length; i++) { + if (!repoUrl.searchParams.get(params[i])) { + throw new InputError( + `Invalid repo URL passed to publisher: ${repoUrl.toString()}, missing ${params[i]}`, + ); + } + } +} + +const checkGiteaOrg = async ( + config: GiteaIntegrationConfig, + options: { owner: string }, +): Promise => { + const { owner } = options; + let response: Response; + const getOptions: RequestInit = { + method: 'GET', + headers: { + ...getGiteaRequestOptions(config).headers, + 'Content-Type': 'application/json', + }, + }; + try { + response = await fetch(`${config.baseUrl}/api/v1/orgs/${owner}`, getOptions); + } catch (e) { + throw new Error(`Unable to get the Organization: ${owner}, ${e}`); + } + if (response.status !== 200) { + throw new Error( + `Organization ${owner} do not exist. Please create it first !`, + ); + } +}; + +const createGiteaProject = async ( + config: GiteaIntegrationConfig, + options: { projectName: string; owner?: string; description: string }, +): Promise => { + const { projectName, description, owner } = options; + let response: Response; + const postOptions: RequestInit = { + method: 'POST', + body: JSON.stringify({ name: projectName, description }), + headers: { + ...getGiteaRequestOptions(config).headers, + 'Content-Type': 'application/json', + }, + }; + + const url = owner + ? `${config.baseUrl}/api/v1/orgs/${owner}/repos` + : `${config.baseUrl}/api/v1/user/repos`; + + try { + response = await fetch(url, postOptions); + } catch (e) { + throw new Error(`Unable to create repository, ${e}`); + } + if (response.status !== 201) { + throw new Error( + `Unable to create repository, ${response.status} ${response.statusText}, ${await response.text()}`, + ); + } +}; + +const generateCommitMessage = ( + config: Config, + commitSubject?: string, +): string => { + const changeId = crypto.randomBytes(20).toString('hex'); + return `${ + config.getOptionalString('scaffolder.defaultCommitMessage') || commitSubject + }\n\nChange-Id: I${changeId}`; +}; + +export function createPublishGiteaAction(options: { + integrations: ScmIntegrations; + config: Config; +}) { + const { integrations, config } = options; + + return createTemplateAction<{ + repoUrl: string; + description: string; + defaultBranch?: string; + gitCommitMessage?: string; + gitAuthorName?: string; + gitAuthorEmail?: string; + sourcePath?: string; + }>({ + id: 'publish:gitea', + description: + 'Initializes a git repository using the content of the workspace, and publishes it to Gitea.', + examples, + schema: { + input: { + type: 'object', + required: ['repoUrl'], + properties: { + repoUrl: { title: 'Repository Location', type: 'string' }, + description: { title: 'Repository Description', type: 'string' }, + defaultBranch: { + title: 'Default Branch', + type: 'string', + description: `Sets the default branch on the repository. The default value is 'main'`, + }, + gitCommitMessage: { + title: 'Git Commit Message', + type: 'string', + description: `Sets the commit message on the repository. The default value is 'initial commit'`, + }, + gitAuthorName: { + title: 'Default Author Name', + type: 'string', + description: `Sets the default author name for the commit. The default value is 'Scaffolder'`, + }, + gitAuthorEmail: { + title: 'Default Author Email', + type: 'string', + description: `Sets the default author email for the commit.`, + }, + sourcePath: { + title: 'Source Path', + type: 'string', + description: `Path within the workspace that will be used as the repository root.`, + }, + }, + }, + output: { + type: 'object', + properties: { + remoteUrl: { + title: 'A URL to the repository with the provider', + type: 'string', + }, + repoContentsUrl: { + title: 'A URL to the root of the repository', + type: 'string', + }, + commitHash: { + title: 'The git commit hash of the initial commit', + type: 'string', + }, + }, + }, + }, + async handler(ctx) { + const { + repoUrl, + description, + defaultBranch = 'main', + gitAuthorName, + gitAuthorEmail, + gitCommitMessage = 'initial commit', + sourcePath, + } = ctx.input; + const { repo, host, owner } = parseRepoUrl(repoUrl, integrations); + const integrationConfig = integrations.gitea.byHost(host); + if (!integrationConfig) { + throw new InputError( + `No matching integration configuration for host ${host}, please check your integrations config`, + ); + } + const { username, password } = integrationConfig.config; + if (!username || !password) { + throw new Error(`Credentials for the gitea ${host} required.`); + } + + if (owner && owner !== username) { + await checkGiteaOrg(integrationConfig.config, { owner }); + } + + await createGiteaProject(integrationConfig.config, { + description, + owner, + projectName: repo, + }); + + const auth = { username, password }; + const gitAuthorInfo = { + name: + gitAuthorName ?? + config.getOptionalString('scaffolder.defaultAuthor.name'), + email: + gitAuthorEmail ?? + config.getOptionalString('scaffolder.defaultAuthor.email'), + }; + const repoOwner = owner ? owner : username; + const remoteUrl = `${integrationConfig.config.baseUrl}/${repoOwner}/${repo}.git`; + const commitResult = await initRepoAndPush({ + dir: getRepoSourceDirectory(ctx.workspacePath, sourcePath), + remoteUrl, + auth, + defaultBranch, + logger: ctx.logger, + commitMessage: generateCommitMessage(config, gitCommitMessage), + gitAuthorInfo, + }); + + const operationTimeLimit = 5000; + const sleep = (ms: number) => new Promise(r => setTimeout(r, ms)); + await sleep(operationTimeLimit); + + const repoContentsUrl = `${integrationConfig.config.baseUrl}/${repoOwner}/${repo}/src/branch/${defaultBranch}/`; + ctx.output('remoteUrl', remoteUrl); + ctx.output('commitHash', commitResult?.commitHash); + ctx.output('repoContentsUrl', repoContentsUrl); + }, + }); +} diff --git a/packages/backend/src/plugins/k8s-apply.ts b/packages/backend/src/modules/actions/k8s-apply.ts similarity index 79% rename from packages/backend/src/plugins/k8s-apply.ts rename to packages/backend/src/modules/actions/k8s-apply.ts index 2e108a2..3095e35 100644 --- a/packages/backend/src/plugins/k8s-apply.ts +++ b/packages/backend/src/modules/actions/k8s-apply.ts @@ -5,7 +5,7 @@ import { import { dumpYaml } from '@kubernetes/client-node'; import yaml from 'js-yaml'; import { Config } from '@backstage/config'; -import { resolveSafeChildPath } from '@backstage/backend-common'; +import { resolveSafeChildPath } from '@backstage/backend-plugin-api'; import fs from 'fs-extra'; interface Cluster { @@ -19,16 +19,11 @@ interface Cluster { } interface Context { name: string; - context: { - cluster: string; - user: string; - }; + context: { cluster: string; user: string }; } interface User { name: string; - user: { - token?: string; - }; + user: { token?: string }; } interface ConfFile { apiVersion: string; @@ -38,6 +33,7 @@ interface ConfFile { clusters: Cluster[]; users: User[]; } + export const createKubernetesApply = (config: Config) => { return createTemplateAction<{ manifestString?: string; @@ -55,14 +51,12 @@ export const createKubernetesApply = (config: Config) => { manifestString: { type: 'string', title: 'Manifest', - description: - 'The manifest to apply in the cluster. Must be a string', + description: 'The manifest to apply in the cluster. Must be a string', }, manifestObject: { type: 'object', title: 'Manifest', - description: - 'The manifest to apply in the cluster. Must be an object', + description: 'The manifest to apply in the cluster. Must be an object', }, manifestPath: { type: 'string', @@ -84,8 +78,7 @@ export const createKubernetesApply = (config: Config) => { output: { type: 'object', title: 'Returned object', - description: - 'The object returned by Kubernetes by performing this operation', + description: 'The object returned by Kubernetes by performing this operation', }, }, async handler(ctx) { @@ -104,17 +97,15 @@ export const createKubernetesApply = (config: Config) => { mode: '600', }); } else { - const filePath = resolveSafeChildPath( + manifestPath = resolveSafeChildPath( ctx.workspacePath, ctx.input.manifestPath!, ); - manifestPath = filePath; } const fileContent = fs.readFileSync(manifestPath, 'utf8'); const objList: any[] = yaml.loadAll(fileContent); if (ctx.input.clusterName) { - // Supports SA token authentication only const targetCluster = getClusterConfig(ctx.input.clusterName!, config); const confFile: ConfFile = { apiVersion: 'v1', @@ -156,8 +147,7 @@ export const createKubernetesApply = (config: Config) => { 'utf8', ).toString('base64'); } - confFile.clusters[0].cluster['certificate-authority-data'] = - caDataRaw; + confFile.clusters[0].cluster['certificate-authority-data'] = caDataRaw; if ( targetCluster.getOptionalString('caFile') && !( @@ -176,21 +166,12 @@ export const createKubernetesApply = (config: Config) => { encoding: 'utf8', mode: '600', }); - await executeShellCommand({ - command: 'cat', - args: [confFilePath], - logStream: ctx.logStream, - }); - await executeShellCommand({ - command: 'cat', - args: [manifestPath], - logStream: ctx.logStream, - }); + let counter = 1; for (const obj of objList) { - let manifestFilePath = resolveSafeChildPath( + const manifestFilePath = resolveSafeChildPath( ctx.workspacePath, - 'to-be-applied-' + counter.toString() + '.yaml', + `to-be-applied-${counter}.yaml`, ); fs.writeFileSync(manifestFilePath, yaml.dump(obj), { encoding: 'utf8', @@ -199,25 +180,13 @@ export const createKubernetesApply = (config: Config) => { if (obj.metadata.generateName !== undefined) { await executeShellCommand({ command: 'kubectl', - args: [ - '--kubeconfig', - confFilePath, - 'create', - '-f', - manifestFilePath, - ], + args: ['--kubeconfig', confFilePath, 'create', '-f', manifestFilePath], logStream: ctx.logStream, }); } else { await executeShellCommand({ command: 'kubectl', - args: [ - '--kubeconfig', - confFilePath, - 'apply', - '-f', - manifestFilePath, - ], + args: ['--kubeconfig', confFilePath, 'apply', '-f', manifestFilePath], logStream: ctx.logStream, }); } @@ -230,13 +199,10 @@ export const createKubernetesApply = (config: Config) => { }); }; -// Finds the first cluster that matches the given name. function getClusterConfig(name: string, config: Config): Config { const clusterConfigs = config .getConfigArray('kubernetes.clusterLocatorMethods') - .filter((val: Config) => { - return val.getString('type') === 'config'; - }); + .filter((val: Config) => val.getString('type') === 'config'); const clusters = new Array(); clusterConfigs.filter((conf: Config) => { @@ -252,4 +218,4 @@ function getClusterConfig(name: string, config: Config): Config { throw new Error(`Cluster with name ${name} not found`); } return clusters[0]; -} \ No newline at end of file +} diff --git a/packages/backend/src/plugins/sanitize.ts b/packages/backend/src/modules/actions/sanitize.ts similarity index 77% rename from packages/backend/src/plugins/sanitize.ts rename to packages/backend/src/modules/actions/sanitize.ts index cb13f13..ae886e1 100644 --- a/packages/backend/src/plugins/sanitize.ts +++ b/packages/backend/src/modules/actions/sanitize.ts @@ -1,7 +1,6 @@ import { createTemplateAction } from '@backstage/plugin-scaffolder-node'; import yaml from 'js-yaml'; -// Add type annotations to fix TS2742 type SanitizeResourceInput = { document: string; }; @@ -42,27 +41,25 @@ export const createSanitizeResource = () => { }); }; -// Remove empty elements from an object function removeEmptyObjects(obj: any): any { if (typeof obj !== 'object' || obj === null) { return obj; } - const newObj: any = Array.isArray(obj) ? [] : {}; - for (const key in obj) { - const value = obj[key]; - const newValue = removeEmptyObjects(value); - if ( - !( - newValue === null || - newValue === undefined || - (typeof newValue === 'object' && Object.keys(newValue).length === 0) - ) - ) { - newObj[key] = newValue; + if (Object.hasOwn(obj, key)) { + const value = obj[key]; + const newValue = removeEmptyObjects(value); + if ( + !( + newValue === null || + newValue === undefined || + (typeof newValue === 'object' && Object.keys(newValue).length === 0) + ) + ) { + newObj[key] = newValue; + } } } - return newObj; } diff --git a/packages/backend/src/plugins/verify.ts b/packages/backend/src/modules/actions/verify.ts similarity index 87% rename from packages/backend/src/plugins/verify.ts rename to packages/backend/src/modules/actions/verify.ts index ae7f56b..fe0d49b 100644 --- a/packages/backend/src/plugins/verify.ts +++ b/packages/backend/src/modules/actions/verify.ts @@ -11,7 +11,7 @@ class ConsoleLogStream extends Writable { } _write(chunk: any, _: any, callback: any) { - this.data += chunk.toString(); // Convert the chunk to a string and append it to this.data + this.data += chunk.toString(); console.log(this.data); callback(); } @@ -29,9 +29,7 @@ export const createVerifyDependency = () => { properties: { verifiers: { type: 'array', - items: { - type: 'string', - }, + items: { type: 'string' }, title: 'verifiers', description: 'The list of verifiers', }, @@ -40,7 +38,6 @@ export const createVerifyDependency = () => { }, async handler(ctx) { const verifiers = ctx.input.verifiers; - if (verifiers === null || verifiers.length === 0) { ctx.logger.error('no verifier was supplied for the object'); return; @@ -48,7 +45,6 @@ export const createVerifyDependency = () => { const baseCommand = 'cnoe'; const baseArguments = ['k8s', 'verify']; - verifiers.forEach((verifier: string) => baseArguments.push('--config', verifier), ); @@ -57,11 +53,11 @@ export const createVerifyDependency = () => { await executeShellCommand({ command: baseCommand, args: baseArguments, - logStream: logStream, + logStream, }) .then(() => ctx.logger.info('verification succeeded')) .catch(error => { - ctx.logger.error(error); + ctx.logger.error(String(error)); throw new Error(logStream.data); }); }, diff --git a/packages/backend/src/plugins/scaffolder.ts b/packages/backend/src/modules/scaffolder.ts similarity index 54% rename from packages/backend/src/plugins/scaffolder.ts rename to packages/backend/src/modules/scaffolder.ts index 0b6fb2f..cd83d25 100644 --- a/packages/backend/src/plugins/scaffolder.ts +++ b/packages/backend/src/modules/scaffolder.ts @@ -1,16 +1,14 @@ import { ScmIntegrations } from '@backstage/integration'; -import { createPublishGiteaAction } from './gitea-actions'; - import { coreServices, createBackendModule, } from '@backstage/backend-plugin-api'; -import { scaffolderActionsExtensionPoint } from '@backstage/plugin-scaffolder-node/alpha'; -import { createArgoCDApp } from './argocd'; -import { getRootLogger } from '@backstage/backend-common'; -import { createKubernetesApply } from './k8s-apply'; -import { createSanitizeResource } from './sanitize'; -import { createVerifyDependency } from './verify'; +import { scaffolderActionsExtensionPoint } from '@backstage/plugin-scaffolder-node'; +import { createPublishGiteaAction } from './actions/gitea-actions'; +import { createArgoCDApp } from './actions/argocd'; +import { createKubernetesApply } from './actions/k8s-apply'; +import { createSanitizeResource } from './actions/sanitize'; +import { createVerifyDependency } from './actions/verify'; export const cnoeScaffolderActions = createBackendModule({ pluginId: 'scaffolder', @@ -20,20 +18,14 @@ export const cnoeScaffolderActions = createBackendModule({ deps: { scaffolder: scaffolderActionsExtensionPoint, config: coreServices.rootConfig, + logger: coreServices.logger, }, - async init({ scaffolder, config }) { + async init({ scaffolder, config, logger }) { const integrations = ScmIntegrations.fromConfig(config); - const logger = getRootLogger(); scaffolder.addActions( - createPublishGiteaAction({ - integrations, - config, - }), - createArgoCDApp({ - config, - logger, - }), + createPublishGiteaAction({ integrations, config }), + createArgoCDApp({ config, logger }), createKubernetesApply(config), createSanitizeResource(), createVerifyDependency(), diff --git a/packages/backend/src/plugins/catalog-kro-module.ts b/packages/backend/src/plugins/catalog-kro-module.ts new file mode 100644 index 0000000..57e5d52 --- /dev/null +++ b/packages/backend/src/plugins/catalog-kro-module.ts @@ -0,0 +1,30 @@ +import { createBackendModule } from '@backstage/backend-plugin-api'; +import { catalogProcessingExtensionPoint } from '@backstage/plugin-catalog-node/alpha'; +import { coreServices } from '@backstage/backend-plugin-api'; +import { KroResourceGroupProcessor } from './catalog-processors/kro-resource-group-processor'; + +/** + * Catalog module for Kro ResourceGroup integration + * Registers the ResourceGroup processor and configures catalog rules + */ +export const catalogKroModule = createBackendModule({ + pluginId: 'catalog', + moduleId: 'kro-resource-groups', + register(reg) { + reg.registerInit({ + deps: { + catalog: catalogProcessingExtensionPoint, + config: coreServices.rootConfig, + logger: coreServices.logger, + }, + async init({ catalog, config, logger }) { + // Register the ResourceGroup processor + catalog.addProcessor( + new KroResourceGroupProcessor(config, logger), + ); + + logger.info('Kro ResourceGroup catalog processor registered successfully'); + }, + }); + }, +}); \ No newline at end of file diff --git a/packages/backend/src/plugins/catalog-processors/kro-resource-group-processor.ts b/packages/backend/src/plugins/catalog-processors/kro-resource-group-processor.ts new file mode 100644 index 0000000..a14420d --- /dev/null +++ b/packages/backend/src/plugins/catalog-processors/kro-resource-group-processor.ts @@ -0,0 +1,311 @@ +import { Config } from '@backstage/config'; +import { Entity } from '@backstage/catalog-model'; +import { + CatalogProcessor, + CatalogProcessorEmit, + LocationSpec, + processingResult, +} from '@backstage/plugin-catalog-node'; + +export class KroResourceGroupProcessor implements CatalogProcessor { + private kubernetesClient: any; + + constructor( + private config: Config, + private logger: any, + ) { + this.initializeKubernetesClient(); + } + + private initializeKubernetesClient() { + // Initialize Kubernetes client based on configuration + // This would be implemented with actual Kubernetes client + } + + getProcessorName(): string { + return 'KroResourceGroupProcessor'; + } + + async readLocation( + location: LocationSpec, + _optional: boolean, + emit: CatalogProcessorEmit, + ): Promise { + if (location.type === 'kro-resource-graph-definitions') { + await this.processResourceGraphDefinitions(location.target, emit); + return true; + } + + if (location.type === 'kro-resource-groups') { + await this.processResourceGroups(location.target, emit); + return true; + } + + return false; + } + + private async processResourceGraphDefinitions( + cluster: string, + emit: CatalogProcessorEmit, + ): Promise { + try { + this.logger.info('Processing ResourceGraphDefinitions', { cluster }); + + const rgds = await this.kubernetesClient.listResourceGraphDefinitions(cluster); + + for (const rgd of rgds) { + try { + const entity = this.transformResourceGraphDefinitionToEntity(rgd, cluster); + if (entity) { + emit(processingResult.entity({ + type: 'kro-resource-graph-definitions', + target: cluster, + }, entity)); + } + } catch (error) { + this.logger.warn('Skipping malformed ResourceGraphDefinition', { + name: rgd.metadata?.name, + namespace: rgd.metadata?.namespace, + error: (error as Error).message, + }); + } + } + } catch (error) { + if ((error as Error).message.includes('Unauthorized')) { + this.logger.error('Authentication failed for cluster', { + cluster, + errorType: 'AUTHENTICATION_FAILED', + error: (error as Error).message, + }); + } else { + this.logger.error('Failed to fetch ResourceGraphDefinitions', { + cluster, + error: (error as Error).message, + }); + } + } + } + + private async processResourceGroups( + cluster: string, + emit: CatalogProcessorEmit, + ): Promise { + try { + this.logger.info('Processing ResourceGroups', { cluster }); + + const resourceGroups = await this.kubernetesClient.listResourceGroups(cluster); + + for (const rg of resourceGroups) { + try { + const entity = this.transformResourceGroupToEntity(rg, cluster); + if (entity) { + emit(processingResult.entity({ + type: 'kro-resource-groups', + target: cluster, + }, entity)); + } + } catch (error) { + this.logger.warn('Skipping malformed ResourceGroup', { + name: rg.metadata?.name, + namespace: rg.metadata?.namespace, + error: (error as Error).message, + }); + } + } + } catch (error) { + this.logger.error('Failed to fetch ResourceGroups', { + cluster, + error: (error as Error).message, + }); + } + } + + private transformResourceGraphDefinitionToEntity(rgd: any, cluster: string): Entity | null { + if (!rgd.metadata?.name) { + throw new Error('ResourceGraphDefinition missing required name'); + } + + const name = rgd.metadata.name; + const namespace = rgd.metadata.namespace || 'default'; + const labels = rgd.metadata.labels || {}; + const annotations = rgd.metadata.annotations || {}; + + // Determine lifecycle from labels or default to production + const lifecycle = labels['backstage.io/lifecycle'] || 'production'; + + // Determine owner from annotations or default to platform-team + const owner = annotations['backstage.io/owner'] || 'platform-team'; + + const entity: Entity = { + apiVersion: 'backstage.io/v1alpha1', + kind: 'Component', + metadata: { + name, + namespace, + annotations: { + 'backstage.io/kubernetes-id': name, + 'kro.run/resource-graph-definition': name, + 'backstage.io/source-location': `kro:${cluster}/${namespace}/${name}`, + ...annotations, + }, + labels: { + 'backstage.io/kubernetes-cluster': cluster, + 'kro.run/version': 'v1alpha1', + ...labels, + }, + title: annotations['kro.run/display-name'] || name, + description: annotations['kro.run/description'], + }, + spec: { + type: 'kro-resource-group', + lifecycle, + owner, + system: annotations['backstage.io/system'], + }, + }; + + // Add status if available + if (rgd.status) { + (entity as any).status = { + phase: this.extractPhase(rgd.status), + conditions: rgd.status.conditions || [], + }; + + // Add status annotation for failed resources + if ((entity as any).status.phase === 'Failed') { + entity.metadata.annotations!['backstage.io/status'] = 'Failed'; + } + } + + return entity; + } + + private transformResourceGroupToEntity(rg: any, cluster: string): Entity | null { + if (!rg.metadata?.name) { + throw new Error('ResourceGroup missing required name'); + } + + const name = rg.metadata.name; + const namespace = rg.metadata.namespace || 'default'; + const labels = rg.metadata.labels || {}; + const annotations = rg.metadata.annotations || {}; + + // Determine lifecycle from labels or namespace + let lifecycle = labels['backstage.io/lifecycle'] || 'production'; + if (namespace.startsWith('dev-') || namespace === 'development') { + lifecycle = 'development'; + } else if (namespace.startsWith('staging') || namespace === 'staging') { + lifecycle = 'staging'; + } + + // Determine owner from annotations + const owner = annotations['backstage.io/owner'] || + annotations['kro.run/created-by'] || + 'platform-team'; + + const entity: Entity = { + apiVersion: 'backstage.io/v1alpha1', + kind: 'Component', + metadata: { + name, + namespace, + annotations: { + 'backstage.io/kubernetes-id': name, + 'kro.run/resource-group': name, + 'backstage.io/source-location': `kro:${cluster}/${namespace}/${name}`, + ...annotations, + }, + labels: { + 'backstage.io/kubernetes-cluster': cluster, + 'kro.run/version': 'v1alpha1', + ...labels, + }, + title: annotations['kro.run/display-name'] || name, + description: annotations['kro.run/description'], + }, + spec: { + type: 'kro-resource-group', + lifecycle, + owner, + system: annotations['backstage.io/system'], + }, + }; + + // Add relationships + const relations = []; + + // Relationship to ResourceGraphDefinition + const rgdName = labels['kro.run/resource-graph-definition']; + if (rgdName) { + relations.push({ + type: 'ownedBy', + targetRef: `component:${namespace}/${rgdName}`, + }); + } + + // Relationships to managed resources + if (rg.status?.managedResources) { + for (const resource of rg.status.managedResources) { + const resourceNamespace = resource.namespace || namespace; + relations.push({ + type: 'dependsOn', + targetRef: `resource:${resourceNamespace}/${resource.name}`, + }); + } + } + + if (relations.length > 0) { + entity.relations = relations; + } + + // Add status if available + if (rg.status) { + (entity as any).status = { + phase: this.extractPhase(rg.status), + conditions: rg.status.conditions || [], + }; + + // Add status annotation for failed resources + if ((entity as any).status.phase === 'Failed') { + entity.metadata.annotations!['backstage.io/status'] = 'Failed'; + } + } + + return entity; + } + + private extractPhase(status: any): string { + if (status.phase) { + return status.phase; + } + + // Determine phase from conditions + const readyCondition = status.conditions?.find((c: any) => c.type === 'Ready'); + if (readyCondition) { + if (readyCondition.status === 'True') { + return 'Ready'; + } else if (readyCondition.reason === 'Failed' || readyCondition.status === 'False') { + return 'Failed'; + } + return 'Pending'; + } + + return 'Unknown'; + } +} + +// Helper function to create location for ResourceGraphDefinitions +export function createResourceGraphDefinitionLocation(cluster: string): LocationSpec { + return { + type: 'kro-resource-graph-definitions', + target: cluster, + }; +} + +// Helper function to create location for ResourceGroups +export function createResourceGroupLocation(cluster: string): LocationSpec { + return { + type: 'kro-resource-groups', + target: cluster, + }; +} \ No newline at end of file diff --git a/packages/backend/src/plugins/gitea-actions.ts b/packages/backend/src/plugins/gitea-actions.ts deleted file mode 100644 index 0780299..0000000 --- a/packages/backend/src/plugins/gitea-actions.ts +++ /dev/null @@ -1,600 +0,0 @@ -import { InputError } from '@backstage/errors'; -import { Config } from '@backstage/config'; -import { - getGiteaRequestOptions, - GiteaIntegrationConfig, - ScmIntegrationRegistry, - ScmIntegrations, -} from '@backstage/integration'; -import { - createTemplateAction, - getRepoSourceDirectory, - initRepoAndPush, - TemplateExample, -} from '@backstage/plugin-scaffolder-node'; -import crypto from 'crypto'; -import yaml from 'yaml'; - -export const examples: TemplateExample[] = [ - { - description: - 'Initializes a Gitea repository using the content of the workspace and publish it to Gitea with default configuration.', - example: yaml.stringify({ - steps: [ - { - id: 'publish', - action: 'publish:gitea', - name: 'Publish to Gitea', - input: { - repoUrl: 'gitea.com?repo=repo&owner=owner', - }, - }, - ], - }), - }, - { - description: 'Initializes a Gitea repository with a description.', - example: yaml.stringify({ - steps: [ - { - id: 'publish', - action: 'publish:gitea', - name: 'Publish to Gitea', - input: { - repoUrl: 'gitea.com?repo=repo&owner=owner', - description: 'Initialize a gitea repository', - }, - }, - ], - }), - }, - { - description: - 'Initializes a Gitea repository with a default Branch, if not set defaults to main', - example: yaml.stringify({ - steps: [ - { - id: 'publish', - action: 'publish:gitea', - name: 'Publish to Gitea', - input: { - repoUrl: 'gitea.com?repo=repo&owner=owner', - defaultBranch: 'main', - }, - }, - ], - }), - }, - { - description: - 'Initializes a Gitea repository with an initial commit message, if not set defaults to initial commit', - example: yaml.stringify({ - steps: [ - { - id: 'publish', - action: 'publish:gitea', - name: 'Publish to Gitea', - input: { - repoUrl: 'gitea.com?repo=repo&owner=owner', - gitCommitMessage: 'Initial Commit Message', - }, - }, - ], - }), - }, - { - description: - 'Initializes a Gitea repository with a repo Author Name, if not set defaults to Scaffolder', - example: yaml.stringify({ - steps: [ - { - id: 'publish', - action: 'publish:gitea', - name: 'Publish to Gitea', - input: { - repoUrl: 'gitea.com?repo=repo&owner=owner', - gitAuthorName: 'John Doe', - }, - }, - ], - }), - }, - { - description: 'Initializes a Gitea repository with a repo Author Email', - example: yaml.stringify({ - steps: [ - { - id: 'publish', - action: 'publish:gitea', - name: 'Publish to Gitea', - input: { - repoUrl: 'gitea.com?repo=repo&owner=owner', - gitAuthorEmail: 'johndoe@email.com', - }, - }, - ], - }), - }, - { - description: - 'Path within the workspace that will be used as the repository root. If omitted, the entire workspace will be published as the repository', - example: yaml.stringify({ - steps: [ - { - id: 'publish', - action: 'publish:gitea', - name: 'Publish to Gitea', - input: { - repoUrl: 'gitea.com?repo=repo&owner=owner', - sourcePath: 'repository/', - }, - }, - ], - }), - }, - { - description: 'Initializes a Gitea repository with all properties being set', - example: yaml.stringify({ - steps: [ - { - id: 'publish', - action: 'publish:gitea', - name: 'Publish to Gitea', - input: { - repoUrl: 'gitea.com?repo=repo&owner=owner', - description: 'Initialize a gitea repository', - defaultBranch: 'staging', - gitCommitMessage: 'Initial Commit Message', - gitAuthorName: 'John Doe', - gitAuthorEmail: 'johndoe@email.com', - sourcePath: 'repository/', - }, - }, - ], - }), - }, -]; - -const parseRepoUrl = ( - repoUrl: string, - integrations: ScmIntegrationRegistry, -): { - repo: string; - host: string; - owner?: string; - organization?: string; - workspace?: string; - project?: string; -} => { - let parsed; - try { - parsed = new URL(`https://${repoUrl}`); - } catch (error) { - throw new InputError( - `Invalid repo URL passed to publisher, got ${repoUrl}, ${error}`, - ); - } - const host = parsed.host; - const owner = parsed.searchParams.get('owner') ?? undefined; - const organization = parsed.searchParams.get('organization') ?? undefined; - const workspace = parsed.searchParams.get('workspace') ?? undefined; - const project = parsed.searchParams.get('project') ?? undefined; - - const type = integrations.byHost(host)?.type; - - if (!type) { - throw new InputError( - `No matching integration configuration for host ${host}, please check your integrations config`, - ); - } - - const repo: string = parsed.searchParams.get('repo')!; - switch (type) { - case 'bitbucket': { - if (host === 'www.bitbucket.org') { - checkRequiredParams(parsed, 'workspace'); - } - checkRequiredParams(parsed, 'project', 'repo'); - break; - } - case 'gitlab': { - // project is the projectID, and if defined, owner and repo won't be needed. - if (!project) { - checkRequiredParams(parsed, 'owner', 'repo'); - } - break; - } - case 'gitea': { - checkRequiredParams(parsed, 'repo'); - break; - } - case 'gerrit': { - checkRequiredParams(parsed, 'repo'); - break; - } - default: { - checkRequiredParams(parsed, 'repo', 'owner'); - break; - } - } - - return { host, owner, repo, organization, workspace, project }; -}; - -function checkRequiredParams(repoUrl: URL, ...params: string[]) { - for (let i = 0; i < params.length; i++) { - if (!repoUrl.searchParams.get(params[i])) { - throw new InputError( - `Invalid repo URL passed to publisher: ${repoUrl.toString()}, missing ${ - params[i] - }`, - ); - } - } -} -// const checkGiteaContentUrl = async ( -// config: GiteaIntegrationConfig, -// options: { -// owner?: string; -// repo: string; -// defaultBranch?: string; -// }, -// ): Promise => { -// const { owner, repo, defaultBranch } = options; -// let response: Response; -// const getOptions: RequestInit = { -// method: 'GET', -// }; -// -// try { -// response = await fetch( -// `${config.baseUrl}/${owner}/${repo}/src/branch/${defaultBranch}`, -// getOptions, -// ); -// } catch (e) { -// throw new Error( -// `Unable to get the repository: ${owner}/${repo} metadata , ${e}`, -// ); -// } -// return response; -// }; - -const checkGiteaOrg = async ( - config: GiteaIntegrationConfig, - options: { - owner: string; - }, -): Promise => { - const { owner } = options; - let response: Response; - // check first if the org = owner exists - const getOptions: RequestInit = { - method: 'GET', - headers: { - ...getGiteaRequestOptions(config).headers, - 'Content-Type': 'application/json', - }, - }; - try { - response = await fetch( - `${config.baseUrl}/api/v1/orgs/${owner}`, - getOptions, - ); - } catch (e) { - throw new Error(`Unable to get the Organization: ${owner}, ${e}`); - } - if (response.status !== 200) { - throw new Error( - `Organization ${owner} do not exist. Please create it first !`, - ); - } -}; - -const createGiteaProject = async ( - config: GiteaIntegrationConfig, - options: { - projectName: string; - owner?: string; - description: string; - }, -): Promise => { - const { projectName, description, owner } = options; - - /* - Several options exist to create a repository using either the user or organisation - User: https://gitea.com/api/swagger#/user/createCurrentUserRepo - Api: URL/api/v1/user/repos - Remark: The user is the username defined part of the backstage integration config for the gitea URL ! - - Org: https://gitea.com/api/swagger#/organization/createOrgRepo - Api: URL/api/v1/orgs/${org_owner}/repos - This is the default scenario that we support currently - */ - let response: Response; - - const postOptions: RequestInit = { - method: 'POST', - body: JSON.stringify({ - name: projectName, - description, - }), - headers: { - ...getGiteaRequestOptions(config).headers, - 'Content-Type': 'application/json', - }, - }; - if (owner) { - try { - response = await fetch( - `${config.baseUrl}/api/v1/orgs/${owner}/repos`, - postOptions, - ); - } catch (e) { - throw new Error(`Unable to create repository, ${e}`); - } - if (response.status !== 201) { - throw new Error( - `Unable to create repository, ${response.status} ${ - response.statusText - }, ${await response.text()}`, - ); - } - } else { - try { - response = await fetch( - `${config.baseUrl}/api/v1/user/repos`, - postOptions, - ); - } catch (e) { - throw new Error(`Unable to create repository, ${e}`); - } - if (response.status !== 201) { - throw new Error( - `Unable to create repository, ${response.status} ${ - response.statusText - }, ${await response.text()}`, - ); - } - } -}; - -const generateCommitMessage = ( - config: Config, - commitSubject?: string, -): string => { - const changeId = crypto.randomBytes(20).toString('hex'); - const msg = `${ - config.getOptionalString('scaffolder.defaultCommitMessage') || commitSubject - }\n\nChange-Id: I${changeId}`; - return msg; -}; - -// async function checkDurationLimit(fn: () => void, timeLimit: number): Promise { -// -// const startTime = process.hrtime(); -// -// // Call the function -// await fn(); -// -// const endTime = process.hrtime(startTime); -// const durationInMs = endTime[0] * 1000 + endTime[1] / 1e6; -// -// // Check if the duration exceeds the time limit -// return durationInMs <= timeLimit; -// } -// -// async function checkAvailabilityGiteaRepository( -// integrationConfig: GiteaIntegrationConfig, -// options: { -// owner?: string; -// repo: string; -// defaultBranch: string; -// ctx: ActionContext; -// }, -// ) { -// const { owner, repo, defaultBranch, ctx } = options; -// const sleep = (ms: number | undefined) => new Promise(r => setTimeout(r, ms)); -// let response: Response; -// -// const p = new Promise((resolve, reject) => { -// setTimeout(async () => { -// response = await checkGiteaContentUrl(integrationConfig, { -// owner, -// repo, -// defaultBranch, -// }); -// -// while (response.status !== 200) { -// if (ctx.signal?.aborted) return; -// await sleep(1000); -// response = await checkGiteaContentUrl(integrationConfig, { -// owner, -// repo, -// defaultBranch, -// }); -// } -// resolve() -// }, -// 5000 -// ) -// }) -// return p -// -// } - -/** - * Creates a new action that initializes a git repository using the content of the workspace. - * and publishes it to a Gitea instance. - * @public - */ -export function createPublishGiteaAction(options: { - integrations: ScmIntegrations; - config: Config; -}) { - const { integrations, config } = options; - - return createTemplateAction<{ - repoUrl: string; - description: string; - defaultBranch?: string; - gitCommitMessage?: string; - gitAuthorName?: string; - gitAuthorEmail?: string; - sourcePath?: string; - }>({ - id: 'publish:gitea', - description: - 'Initializes a git repository using the content of the workspace, and publishes it to Gitea.', - examples, - schema: { - input: { - type: 'object', - required: ['repoUrl'], - properties: { - repoUrl: { - title: 'Repository Location', - type: 'string', - }, - description: { - title: 'Repository Description', - type: 'string', - }, - defaultBranch: { - title: 'Default Branch', - type: 'string', - description: `Sets the default branch on the repository. The default value is 'main'`, - }, - gitCommitMessage: { - title: 'Git Commit Message', - type: 'string', - description: `Sets the commit message on the repository. The default value is 'initial commit'`, - }, - gitAuthorName: { - title: 'Default Author Name', - type: 'string', - description: `Sets the default author name for the commit. The default value is 'Scaffolder'`, - }, - gitAuthorEmail: { - title: 'Default Author Email', - type: 'string', - description: `Sets the default author email for the commit.`, - }, - sourcePath: { - title: 'Source Path', - type: 'string', - description: `Path within the workspace that will be used as the repository root. If omitted, the entire workspace will be published as the repository.`, - }, - }, - }, - output: { - type: 'object', - properties: { - remoteUrl: { - title: 'A URL to the repository with the provider', - type: 'string', - }, - repoContentsUrl: { - title: 'A URL to the root of the repository', - type: 'string', - }, - commitHash: { - title: 'The git commit hash of the initial commit', - type: 'string', - }, - }, - }, - }, - async handler(ctx) { - const { - repoUrl, - description, - defaultBranch = 'main', - gitAuthorName, - gitAuthorEmail, - gitCommitMessage = 'initial commit', - sourcePath, - } = ctx.input; - const { repo, host, owner } = parseRepoUrl(repoUrl, integrations); - const integrationConfig = integrations.gitea.byHost(host); - if (!integrationConfig) { - throw new InputError( - `No matching integration configuration for host ${host}, please check your integrations config`, - ); - } - const { username, password } = integrationConfig.config; - - if (!username || !password) { - throw new Error('Credentials for the gitea ${host} required.'); - } - - // check if the org exists within the gitea server - if (owner && owner !== username) { - await checkGiteaOrg(integrationConfig.config, { owner }); - } - - await createGiteaProject(integrationConfig.config, { - description, - owner: owner, - projectName: repo, - }); - - const auth = { - username: username, - password: password, - }; - const gitAuthorInfo = { - name: gitAuthorName - ? gitAuthorName - : config.getOptionalString('scaffolder.defaultAuthor.name'), - email: gitAuthorEmail - ? gitAuthorEmail - : config.getOptionalString('scaffolder.defaultAuthor.email'), - }; - // The owner to be used should be either the org name or user authenticated with the gitea server - const repoOwner = owner ? owner : username; - const remoteUrl = `${integrationConfig.config.baseUrl}/${repoOwner}/${repo}.git`; - const commitResult = await initRepoAndPush({ - dir: getRepoSourceDirectory(ctx.workspacePath, sourcePath), - remoteUrl, - auth, - defaultBranch, - logger: ctx.logger, - commitMessage: generateCommitMessage(config, gitCommitMessage), - gitAuthorInfo, - }); - - // Check if the gitea repo URL is available before to exit - const operationTimeLimit = 5000; // 20 seconds - const sleep = (ms: number | undefined) => - new Promise(r => setTimeout(r, ms)); - await sleep(operationTimeLimit); - // await checkAvailabilityGiteaRepository( - // integrationConfig.config, { - // repoOwner, - // repo, - // defaultBranch, - // ctx, - // } - // ) - // const checkDuration = await checkDurationLimit( - // async () => - // await checkAvailabilityGiteaRepository(integrationConfig.config, { - // repoOwner, - // repo, - // defaultBranch, - // ctx, - // }), - // operationTimeLimit, - // ); - // - // if (!checkDuration) { - // console.log('Operation exceeded the time limit.'); - // } - - const repoContentsUrl = `${integrationConfig.config.baseUrl}/${repoOwner}/${repo}/src/branch/${defaultBranch}/`; - ctx.output('remoteUrl', remoteUrl); - ctx.output('commitHash', commitResult?.commitHash); - ctx.output('repoContentsUrl', repoContentsUrl); - }, - }); -} diff --git a/packages/backend/src/plugins/kro-audit.ts b/packages/backend/src/plugins/kro-audit.ts new file mode 100644 index 0000000..2d2b97f --- /dev/null +++ b/packages/backend/src/plugins/kro-audit.ts @@ -0,0 +1,231 @@ +import { createBackendModule } from '@backstage/backend-plugin-api'; +import { coreServices } from '@backstage/backend-plugin-api'; + +/** + * Audit event types for ResourceGroup operations + */ +export enum KroAuditEventType { + RESOURCE_GROUP_VIEWED = 'resourcegroup.viewed', + RESOURCE_GROUP_CREATED = 'resourcegroup.created', + RESOURCE_GROUP_UPDATED = 'resourcegroup.updated', + RESOURCE_GROUP_DELETED = 'resourcegroup.deleted', + RESOURCE_GROUP_CREATION_FAILED = 'resourcegroup.creation.failed', + RESOURCE_GROUP_TEMPLATE_EXECUTED = 'resourcegroup.template.executed', + PERMISSION_DENIED = 'permission.denied', + AUTHENTICATION_FAILED = 'authentication.failed', + AUTHORIZATION_FAILED = 'authorization.failed', +} + +/** + * Audit event interface + */ +export interface KroAuditEvent { + eventType: KroAuditEventType; + timestamp: Date; + user: { + userEntityRef: string; + type: string; + }; + resource: { + type: string; + name: string; + namespace?: string; + cluster?: string; + }; + action: string; + result: 'success' | 'failure'; + details?: Record; + error?: string; + clientInfo?: { + userAgent?: string; + ipAddress?: string; + }; +} + +/** + * Kro audit logger for ResourceGroup operations + */ +export class KroAuditLogger { + constructor(private logger: any) { } + + /** + * Log ResourceGroup operation audit event + */ + logResourceGroupOperation( + eventType: KroAuditEventType, + user: any, + resource: { + type: string; + name: string; + namespace?: string; + cluster?: string; + }, + action: string, + result: 'success' | 'failure', + details?: Record, + error?: string + ): void { + const auditEvent: KroAuditEvent = { + eventType, + timestamp: new Date(), + user: { + userEntityRef: user.identity.userEntityRef, + type: user.identity.type, + }, + resource, + action, + result, + details, + error, + }; + + this.logger.info('Kro audit event', { + ...auditEvent, + component: 'kro-audit', + audit: true, + }); + } + + /** + * Log permission denied events + */ + logPermissionDenied( + user: any, + resource: { + type: string; + name?: string; + namespace?: string; + cluster?: string; + }, + action: string, + reason?: string + ): void { + this.logResourceGroupOperation( + KroAuditEventType.PERMISSION_DENIED, + user, + { + type: resource.type, + name: resource.name || 'unknown', + namespace: resource.namespace, + cluster: resource.cluster, + }, + action, + 'failure', + { reason }, + reason + ); + } + + /** + * Log authentication failures + */ + logAuthenticationFailure( + user: any, + resource: { + type: string; + name?: string; + namespace?: string; + cluster?: string; + }, + action: string, + error: string + ): void { + this.logResourceGroupOperation( + KroAuditEventType.AUTHENTICATION_FAILED, + user, + { + type: resource.type, + name: resource.name || 'unknown', + namespace: resource.namespace, + cluster: resource.cluster, + }, + action, + 'failure', + {}, + error + ); + } + + /** + * Log authorization failures + */ + logAuthorizationFailure( + user: any, + resource: { + type: string; + name?: string; + namespace?: string; + cluster?: string; + }, + action: string, + error: string + ): void { + this.logResourceGroupOperation( + KroAuditEventType.AUTHORIZATION_FAILED, + user, + { + type: resource.type, + name: resource.name || 'unknown', + namespace: resource.namespace, + cluster: resource.cluster, + }, + action, + 'failure', + {}, + error + ); + } + + /** + * Log successful ResourceGroup operations + */ + logResourceGroupSuccess( + eventType: KroAuditEventType, + user: any, + resource: { + type: string; + name: string; + namespace?: string; + cluster?: string; + }, + action: string, + details?: Record + ): void { + this.logResourceGroupOperation( + eventType, + user, + resource, + action, + 'success', + details + ); + } +} + +/** + * Kro audit backend module + */ +export const kroAuditModule = createBackendModule({ + pluginId: 'kro', + moduleId: 'audit-logging', + register(reg) { + reg.registerInit({ + deps: { + config: coreServices.rootConfig, + logger: coreServices.logger, + }, + async init({ logger }) { + logger.info('Initializing Kro audit logging module'); + + // Create audit logger instance + // Initialize audit logger + const _auditLogger = new KroAuditLogger(logger); + + // Register audit logger as a service (in a real implementation) + // This would be made available to other parts of the application + + logger.info('Kro audit logging module initialized successfully'); + }, + }); + }, +}); \ No newline at end of file diff --git a/packages/backend/src/plugins/kro-entity-transformer.ts b/packages/backend/src/plugins/kro-entity-transformer.ts new file mode 100644 index 0000000..5a1377c --- /dev/null +++ b/packages/backend/src/plugins/kro-entity-transformer.ts @@ -0,0 +1,246 @@ +import { Entity } from '@backstage/catalog-model'; +import { LoggerService } from '@backstage/backend-plugin-api'; + +/** + * Entity transformer for Kro ResourceGroups + * Transforms Kubernetes ResourceGroup resources into Backstage catalog entities + */ +export class KroEntityTransformer { + constructor(private readonly logger: LoggerService) { } + + /** + * Transform a Kubernetes ResourceGroup into a Backstage catalog entity + */ + transformResourceGroup(kubernetesResource: any, clusterName: string): Entity | null { + try { + const { metadata, status } = kubernetesResource; + + if (!metadata?.name) { + this.logger.warn('ResourceGroup missing required metadata.name, skipping transformation'); + return null; + } + + // Create Backstage entity from ResourceGroup + const entity: Entity = { + apiVersion: 'backstage.io/v1alpha1', + kind: 'Component', + metadata: { + name: this.sanitizeEntityName(metadata.name), + namespace: metadata.namespace || 'default', + title: metadata.name, + description: this.generateDescription(kubernetesResource), + annotations: { + 'backstage.io/kubernetes-id': `${clusterName}:${metadata.namespace || 'default'}:${metadata.name}`, + 'backstage.io/kubernetes-cluster': clusterName, + 'kro.run/resource-group': 'true', + 'kro.run/definition': JSON.stringify(kubernetesResource), + 'backstage.io/source-location': this.generateSourceLocation(metadata), + }, + labels: { + 'backstage.io/kubernetes-cluster': clusterName, + 'kro.run/type': 'resource-group', + 'kro.run/version': kubernetesResource.apiVersion?.split('/')[1] || 'v1alpha1', + ...this.extractLabels(metadata.labels), + }, + }, + spec: { + type: 'kro-resource-group', + lifecycle: this.determineLifecycle(metadata.labels), + owner: this.determineOwner(metadata.labels, metadata.annotations), + system: this.determineSystem(metadata.labels, metadata.annotations), + }, + }; + + // Add status information as annotations if available + if (status) { + entity.metadata.annotations = { + ...entity.metadata.annotations, + 'kro.run/status-phase': status.phase || 'Unknown', + 'kro.run/status-conditions': JSON.stringify(status.conditions || []), + }; + } + + this.logger.debug(`Transformed ResourceGroup ${metadata.name} into catalog entity`, { + resourceGroup: metadata.name, + namespace: metadata.namespace, + cluster: clusterName, + }); + + return entity; + } catch (error) { + const errorMessage = error instanceof Error ? error.message : String(error); + this.logger.error(`Failed to transform ResourceGroup into catalog entity`, { + error: errorMessage, + resourceName: kubernetesResource?.metadata?.name, + cluster: clusterName, + }); + return null; + } + } + + /** + * Transform a ResourceGraphDefinition into a Backstage catalog entity + */ + transformResourceGraphDefinition(kubernetesResource: any, clusterName: string): Entity | null { + try { + const { metadata } = kubernetesResource; + + if (!metadata?.name) { + this.logger.warn('ResourceGraphDefinition missing required metadata.name, skipping transformation'); + return null; + } + + // Create Backstage entity from ResourceGraphDefinition + const entity: Entity = { + apiVersion: 'backstage.io/v1alpha1', + kind: 'Component', + metadata: { + name: this.sanitizeEntityName(`${metadata.name}-rgd`), + namespace: metadata.namespace || 'default', + title: `${metadata.name} Definition`, + description: this.generateRGDDescription(kubernetesResource), + annotations: { + 'backstage.io/kubernetes-id': `${clusterName}:${metadata.namespace || 'default'}:${metadata.name}`, + 'backstage.io/kubernetes-cluster': clusterName, + 'kro.run/resource-graph-definition': 'true', + 'kro.run/definition': JSON.stringify(kubernetesResource), + 'backstage.io/source-location': this.generateSourceLocation(metadata), + }, + labels: { + 'backstage.io/kubernetes-cluster': clusterName, + 'kro.run/type': 'resource-graph-definition', + 'kro.run/version': kubernetesResource.apiVersion?.split('/')[1] || 'v1alpha1', + ...this.extractLabels(metadata.labels), + }, + }, + spec: { + type: 'kro-resource-group', + lifecycle: this.determineLifecycle(metadata.labels), + owner: this.determineOwner(metadata.labels, metadata.annotations), + system: this.determineSystem(metadata.labels, metadata.annotations), + }, + }; + + this.logger.debug(`Transformed ResourceGraphDefinition ${metadata.name} into catalog entity`, { + resourceGraphDefinition: metadata.name, + namespace: metadata.namespace, + cluster: clusterName, + }); + + return entity; + } catch (error) { + const errorMessage = error instanceof Error ? error.message : String(error); + this.logger.error(`Failed to transform ResourceGraphDefinition into catalog entity`, { + error: errorMessage, + resourceName: kubernetesResource?.metadata?.name, + cluster: clusterName, + }); + return null; + } + } + + /** + * Sanitize entity name to comply with Backstage naming requirements + */ + private sanitizeEntityName(name: string): string { + // Convert to lowercase and replace invalid characters with hyphens + return name + .toLowerCase() + .replace(/[^a-z0-9\-_.]/g, '-') + .replace(/^[-_.]+|[-_.]+$/g, '') + .substring(0, 63); // Kubernetes name length limit + } + + /** + * Generate description for ResourceGroup entity + */ + private generateDescription(resource: any): string { + const kind = resource.spec?.schema?.kind || 'ResourceGroup'; + const namespace = resource.metadata?.namespace || 'default'; + + return `Kro ${kind} in namespace ${namespace}. This ResourceGroup manages composite Kubernetes resources.`; + } + + /** + * Generate description for ResourceGraphDefinition entity + */ + private generateRGDDescription(resource: any): string { + const kind = resource.spec?.schema?.kind || 'Unknown'; + const namespace = resource.metadata?.namespace || 'default'; + + return `Kro ResourceGraphDefinition for ${kind} in namespace ${namespace}. Defines the schema and resources for composite resource creation.`; + } + + /** + * Generate source location annotation + */ + private generateSourceLocation(metadata: any): string { + // Try to extract source location from annotations + const sourceRepo = metadata.annotations?.['kro.run/source-repo']; + const sourcePath = metadata.annotations?.['kro.run/source-path']; + + if (sourceRepo && sourcePath) { + return `url:${sourceRepo}/tree/main/${sourcePath}`; + } + + if (sourceRepo) { + return `url:${sourceRepo}`; + } + + // Default to Kro examples + return 'url:https://github.com/awslabs/kro/tree/main/examples'; + } + + /** + * Extract and sanitize labels + */ + private extractLabels(labels: Record = {}): Record { + const sanitizedLabels: Record = {}; + + for (const [key, value] of Object.entries(labels)) { + // Only include labels that are safe for Backstage + if (key.startsWith('app.kubernetes.io/') || + key.startsWith('kro.run/') || + key.startsWith('backstage.io/')) { + sanitizedLabels[key] = value; + } + } + + return sanitizedLabels; + } + + /** + * Determine lifecycle from labels or default to production + */ + private determineLifecycle(labels: Record = {}): string { + const lifecycle = labels['app.kubernetes.io/environment'] || + labels['kro.run/lifecycle'] || + labels['backstage.io/lifecycle']; + + if (lifecycle && ['experimental', 'production', 'deprecated'].includes(lifecycle)) { + return lifecycle; + } + + return 'production'; + } + + /** + * Determine owner from labels/annotations or default to platform-team + */ + private determineOwner(labels: Record = {}, annotations: Record = {}): string { + return labels['app.kubernetes.io/managed-by'] || + labels['kro.run/owner'] || + annotations['kro.run/owner'] || + 'platform-team'; + } + + /** + * Determine system from labels/annotations + */ + private determineSystem(labels: Record = {}, annotations: Record = {}): string | undefined { + return labels['app.kubernetes.io/part-of'] || + labels['kro.run/system'] || + annotations['kro.run/system'] || + 'platform-infrastructure'; + } +} \ No newline at end of file diff --git a/packages/backend/src/plugins/kro-error-handler.ts b/packages/backend/src/plugins/kro-error-handler.ts new file mode 100644 index 0000000..20586c6 --- /dev/null +++ b/packages/backend/src/plugins/kro-error-handler.ts @@ -0,0 +1,258 @@ +import { BackstageIdentityResponse } from '@backstage/plugin-auth-node'; +import { KroAuditLogger, KroAuditEventType } from './kro-audit'; + +/** + * Enhanced error handler for Kro plugin with proper authorization error messages + */ +export class KroErrorHandler { + constructor( + private logger: any, + private auditLogger: KroAuditLogger + ) { } + + /** + * Handle authentication errors with proper user messaging + */ + handleAuthenticationError( + error: Error, + user: BackstageIdentityResponse, + context: { + cluster?: string; + operation?: string; + resource?: string; + namespace?: string; + } + ): { message: string; userMessage: string; statusCode: number } { + const { cluster, operation, resource, namespace } = context; + + // Log audit event + this.auditLogger.logAuthenticationFailure( + user, + { + type: resource || 'unknown', + name: resource, + namespace, + cluster, + }, + operation || 'unknown', + error.message + ); + + // Enhanced error logging + this.logger.error(`Kubernetes authentication failed for user ${user.identity.userEntityRef}`, { + user: user.identity.userEntityRef, + cluster, + operation, + resource, + namespace, + error: error.message, + errorType: 'AUTHENTICATION_FAILED', + component: 'kro-error-handler' + }); + + // User-friendly error messages + let userMessage: string; + if (error.message.includes('Unauthorized') || error.message.includes('401')) { + userMessage = `Authentication failed when accessing Kubernetes cluster '${cluster}'. Your credentials may be invalid or expired. Please contact your platform administrator to verify your access.`; + } else if (error.message.includes('token')) { + userMessage = `Authentication token is invalid or expired for cluster '${cluster}'. Please refresh your session or contact your platform administrator.`; + } else { + userMessage = `Unable to authenticate with Kubernetes cluster '${cluster}'. Please verify your credentials and try again.`; + } + + return { + message: error.message, + userMessage, + statusCode: 401 + }; + } + + /** + * Handle authorization errors with proper user messaging and RBAC guidance + */ + handleAuthorizationError( + error: Error, + user: BackstageIdentityResponse, + context: { + cluster?: string; + operation?: string; + resource?: string; + namespace?: string; + requiredPermissions?: string[]; + } + ): { message: string; userMessage: string; statusCode: number; guidance?: string } { + const { cluster, operation, resource, namespace, requiredPermissions } = context; + + // Log audit event + this.auditLogger.logAuthorizationFailure( + user, + { + type: resource || 'unknown', + name: resource, + namespace, + cluster, + }, + operation || 'unknown', + error.message + ); + + // Enhanced error logging + this.logger.error(`Kubernetes authorization failed for user ${user.identity.userEntityRef}`, { + user: user.identity.userEntityRef, + cluster, + operation, + resource, + namespace, + requiredPermissions, + error: error.message, + errorType: 'AUTHORIZATION_FAILED', + component: 'kro-error-handler' + }); + + // Generate user-friendly error message with RBAC guidance + let userMessage: string; + let guidance: string; + + if (error.message.includes('Forbidden') || error.message.includes('403')) { + userMessage = `You don't have permission to ${operation} ${resource}${namespace ? ` in namespace '${namespace}'` : ''} on cluster '${cluster}'.`; + + if (requiredPermissions && requiredPermissions.length > 0) { + guidance = `Required permissions: ${requiredPermissions.join(', ')}. Please contact your platform administrator to request these permissions.`; + } else { + guidance = `Please contact your platform administrator to request the necessary permissions for this operation.`; + } + } else { + userMessage = `Access denied for ${operation} operation on ${resource}${namespace ? ` in namespace '${namespace}'` : ''}.`; + guidance = `Please verify your permissions and contact your platform administrator if you believe you should have access.`; + } + + return { + message: error.message, + userMessage, + statusCode: 403, + guidance + }; + } + + /** + * Handle ResourceGroup operation errors with context + */ + handleResourceGroupError( + error: Error, + user: BackstageIdentityResponse, + context: { + resourceGroup: string; + namespace?: string; + cluster?: string; + operation: string; + } + ): { message: string; userMessage: string; statusCode: number } { + const { resourceGroup, namespace, cluster, operation } = context; + + // Log audit event + this.auditLogger.logResourceGroupOperation( + this.getAuditEventType(operation), + user, + { + type: 'ResourceGroup', + name: resourceGroup, + namespace, + cluster, + }, + operation, + 'failure', + {}, + error.message + ); + + // Enhanced error logging + this.logger.error(`ResourceGroup operation failed`, { + user: user.identity.userEntityRef, + resourceGroup, + namespace, + cluster, + operation, + error: error.message, + stack: error.stack, + component: 'kro-error-handler' + }); + + // Generate user-friendly error message + let userMessage: string; + let statusCode: number = 500; + + if (error.message.includes('not found') || error.message.includes('404')) { + userMessage = `ResourceGroup '${resourceGroup}' not found${namespace ? ` in namespace '${namespace}'` : ''}.`; + statusCode = 404; + } else if (error.message.includes('already exists') || error.message.includes('409')) { + userMessage = `ResourceGroup '${resourceGroup}' already exists${namespace ? ` in namespace '${namespace}'` : ''}.`; + statusCode = 409; + } else if (error.message.includes('validation')) { + userMessage = `ResourceGroup '${resourceGroup}' validation failed. Please check the resource specification.`; + statusCode = 400; + } else { + userMessage = `Failed to ${operation} ResourceGroup '${resourceGroup}'. Please try again or contact support.`; + } + + return { + message: error.message, + userMessage, + statusCode + }; + } + + /** + * Map operation to audit event type + */ + private getAuditEventType(operation: string): KroAuditEventType { + switch (operation.toLowerCase()) { + case 'create': + return KroAuditEventType.RESOURCE_GROUP_CREATED; + case 'update': + return KroAuditEventType.RESOURCE_GROUP_UPDATED; + case 'delete': + return KroAuditEventType.RESOURCE_GROUP_DELETED; + case 'view': + case 'get': + return KroAuditEventType.RESOURCE_GROUP_VIEWED; + default: + return KroAuditEventType.RESOURCE_GROUP_VIEWED; + } + } + + /** + * Handle general Kubernetes connection errors + */ + handleConnectionError( + error: Error, + context: { + cluster?: string; + operation?: string; + } + ): { message: string; userMessage: string; statusCode: number } { + const { cluster, operation } = context; + + this.logger.error(`Kubernetes connection error`, { + cluster, + operation, + error: error.message, + errorType: 'CONNECTION_ERROR', + component: 'kro-error-handler' + }); + + let userMessage: string; + if (error.message.includes('ECONNREFUSED') || error.message.includes('ENOTFOUND')) { + userMessage = `Unable to connect to Kubernetes cluster '${cluster}'. The cluster may be unavailable or there may be network connectivity issues.`; + } else if (error.message.includes('timeout')) { + userMessage = `Connection to Kubernetes cluster '${cluster}' timed out. Please try again later.`; + } else { + userMessage = `Connection error when accessing Kubernetes cluster '${cluster}'. Please try again or contact support.`; + } + + return { + message: error.message, + userMessage, + statusCode: 503 + }; + } +} \ No newline at end of file diff --git a/packages/backend/src/plugins/kro-permissions.ts b/packages/backend/src/plugins/kro-permissions.ts new file mode 100644 index 0000000..60d57a6 --- /dev/null +++ b/packages/backend/src/plugins/kro-permissions.ts @@ -0,0 +1,358 @@ +import { createBackendModule } from '@backstage/backend-plugin-api'; +import { coreServices } from '@backstage/backend-plugin-api'; +import { AuthorizeResult, PolicyDecision } from '@backstage/plugin-permission-common'; +import { PermissionPolicy, PolicyQuery } from '@backstage/plugin-permission-node'; +import { BackstageIdentityResponse } from '@backstage/plugin-auth-node'; + +/** + * Kro-specific permissions for ResourceGroup operations + */ +export const kroPermissions = { + kroResourceGroupRead: { + name: 'kro.resourcegroup.read', + attributes: { + action: 'read', + resourceType: 'kro-resource-group', + }, + }, + kroResourceGroupCreate: { + name: 'kro.resourcegroup.create', + attributes: { + action: 'create', + resourceType: 'kro-resource-group', + }, + }, + kroResourceGroupUpdate: { + name: 'kro.resourcegroup.update', + attributes: { + action: 'update', + resourceType: 'kro-resource-group', + }, + }, + kroResourceGroupDelete: { + name: 'kro.resourcegroup.delete', + attributes: { + action: 'delete', + resourceType: 'kro-resource-group', + }, + }, +}; + +/** + * Kubernetes RBAC validator for Kro operations + */ +export class KroRBACValidator { + constructor( + private logger: any, + private kubernetesApi: any + ) { } + + /** + * Validate user permissions against Kubernetes RBAC for Kro operations + */ + async validateKubernetesPermissions( + user: BackstageIdentityResponse, + action: string, + resource: string, + namespace?: string, + cluster?: string + ): Promise<{ allowed: boolean; reason?: string }> { + try { + this.logger.info(`Validating Kubernetes RBAC permissions for user: ${user.identity.userEntityRef}`, { + user: user.identity.userEntityRef, + action, + resource, + namespace, + cluster, + component: 'kro-permissions' + }); + + // For service account authentication, we assume the service account has proper permissions + // In a real implementation, you would check the user's Kubernetes permissions + if ((user.identity as any).type === 'service') { + return { allowed: true }; + } + + // Simulate RBAC check - in a real implementation, this would call Kubernetes API + // to check if the user has the required permissions + const hasPermission = await this.checkKubernetesRBAC( + user.identity.userEntityRef, + action, + resource, + namespace, + cluster + ); + + if (!hasPermission) { + const reason = `User ${user.identity.userEntityRef} does not have permission to ${action} ${resource}${namespace ? ` in namespace ${namespace}` : ''}${cluster ? ` on cluster ${cluster}` : ''}`; + + this.logger.warn(`Kubernetes RBAC validation failed`, { + user: user.identity.userEntityRef, + action, + resource, + namespace, + cluster, + reason, + component: 'kro-permissions' + }); + + return { allowed: false, reason }; + } + + this.logger.info(`Kubernetes RBAC validation successful`, { + user: user.identity.userEntityRef, + action, + resource, + namespace, + cluster, + component: 'kro-permissions' + }); + + return { allowed: true }; + + } catch (error) { + const errorMessage = error instanceof Error ? error.message : String(error); + + this.logger.error(`Error validating Kubernetes RBAC permissions`, { + user: user.identity.userEntityRef, + action, + resource, + namespace, + cluster, + error: errorMessage, + component: 'kro-permissions' + }); + + return { + allowed: false, + reason: `Permission validation failed: ${errorMessage}` + }; + } + } + + /** + * Check Kubernetes RBAC permissions using SubjectAccessReview + */ + private async checkKubernetesRBAC( + userRef: string, + action: string, + resource: string, + namespace?: string, + cluster?: string + ): Promise { + try { + // In a real implementation, this would create a SubjectAccessReview + // to check if the user has the required permissions + + // For now, we'll implement a basic permission check based on user groups + // This should be replaced with actual Kubernetes RBAC checks + + // Extract user information from userRef (format: user:default/username) + const userParts = userRef.split('/'); + const username = userParts[userParts.length - 1]; + + // Define permission mappings (this would typically come from Kubernetes RBAC) + const permissionMappings = { + 'kro.run/v1alpha1/resourcegraphdefinitions': { + 'get': ['kro-readers', 'kro-admins', 'platform-engineers'], + 'list': ['kro-readers', 'kro-admins', 'platform-engineers'], + 'create': ['kro-admins', 'platform-engineers'], + 'update': ['kro-admins', 'platform-engineers'], + 'delete': ['kro-admins', 'platform-engineers'], + }, + 'kro.run/v1alpha1/cicdpipelines': { + 'get': ['kro-readers', 'kro-admins', 'developers'], + 'list': ['kro-readers', 'kro-admins', 'developers'], + 'create': ['kro-admins', 'developers'], + 'update': ['kro-admins', 'developers'], + 'delete': ['kro-admins'], + }, + 'kro.run/v1alpha1/eksclusters': { + 'get': ['kro-readers', 'kro-admins', 'platform-engineers'], + 'list': ['kro-readers', 'kro-admins', 'platform-engineers'], + 'create': ['kro-admins', 'platform-engineers'], + 'update': ['kro-admins', 'platform-engineers'], + 'delete': ['kro-admins', 'platform-engineers'], + }, + }; + + // Get user groups (this would typically come from identity provider) + const userGroups = await this.getUserGroups(username); + + // Check if user has required permissions + const resourcePermissions = (permissionMappings as any)[resource]; + if (!resourcePermissions) { + // If resource is not in our mapping, deny by default + return false; + } + + const allowedGroups = resourcePermissions[action]; + if (!allowedGroups) { + // If action is not defined, deny by default + return false; + } + + // Check if user belongs to any of the allowed groups + const hasPermission = userGroups.some(group => allowedGroups.includes(group)); + + return hasPermission; + + } catch (error) { + this.logger.error(`Error checking Kubernetes RBAC`, { + userRef, + action, + resource, + namespace, + cluster, + error: error instanceof Error ? error.message : String(error), + component: 'kro-permissions' + }); + return false; + } + } + + /** + * Get user groups from identity provider + */ + private async getUserGroups(username: string): Promise { + // In a real implementation, this would fetch user groups from the identity provider + // For now, we'll return some default groups based on username patterns + + if (username.includes('admin')) { + return ['kro-admins', 'platform-engineers']; + } else if (username.includes('engineer')) { + return ['platform-engineers', 'kro-readers']; + } else if (username.includes('dev')) { + return ['developers', 'kro-readers']; + } + return ['kro-readers']; + } +} + +/** + * Kro permission policy that integrates with Kubernetes RBAC + */ +export class KroPermissionPolicy implements PermissionPolicy { + constructor( + private rbacValidator: KroRBACValidator, + private logger: any + ) { } + + async handle(request: PolicyQuery, user?: BackstageIdentityResponse): Promise { + try { + // Check if this is a Kro-related permission + if (!request.permission.name.startsWith('kro.')) { + return { result: AuthorizeResult.ALLOW }; + } + + if (!user) { + this.logger.warn(`Permission denied: No user context provided for ${request.permission.name}`); + return { result: AuthorizeResult.DENY }; + } + + // Extract action and resource from permission + const permissionParts = request.permission.name.split('.'); + const action = permissionParts[permissionParts.length - 1]; // read, create, update, delete + const resourceType = permissionParts[1]; // resourcegroup + + // Map to Kubernetes resource + let kubernetesResource: string; + switch (resourceType) { + case 'resourcegroup': + kubernetesResource = 'kro.run/v1alpha1/resourcegraphdefinitions'; + break; + default: + kubernetesResource = `kro.run/v1alpha1/${resourceType}s`; + } + + // Map Backstage actions to Kubernetes verbs + let kubernetesVerb: string; + switch (action) { + case 'read': + kubernetesVerb = 'get'; + break; + case 'create': + kubernetesVerb = 'create'; + break; + case 'update': + kubernetesVerb = 'update'; + break; + case 'delete': + kubernetesVerb = 'delete'; + break; + default: + kubernetesVerb = action; + } + + // Validate permissions against Kubernetes RBAC + const validation = await this.rbacValidator.validateKubernetesPermissions( + user, + kubernetesVerb, + kubernetesResource, + (request as any).resourceRef?.namespace, + (request as any).resourceRef?.cluster + ); + + if (validation.allowed) { + this.logger.info(`Permission granted for ${request.permission.name}`, { + user: user.identity.userEntityRef, + permission: request.permission.name, + component: 'kro-permissions' + }); + return { result: AuthorizeResult.ALLOW }; + } + this.logger.warn(`Permission denied for ${request.permission.name}`, { + user: user.identity.userEntityRef, + permission: request.permission.name, + reason: validation.reason, + component: 'kro-permissions' + }); + return { result: AuthorizeResult.DENY }; + + } catch (error) { + const errorMessage = error instanceof Error ? error.message : String(error); + + this.logger.error(`Error evaluating permission policy`, { + permission: request.permission.name, + user: user?.identity.userEntityRef, + error: errorMessage, + component: 'kro-permissions' + }); + + // Deny by default on error + return { result: AuthorizeResult.DENY }; + } + } +} + +/** + * Kro permissions backend module + */ +export const kroPermissionsModule = createBackendModule({ + pluginId: 'permission', + moduleId: 'kro-permissions', + register(reg) { + reg.registerInit({ + deps: { + config: coreServices.rootConfig, + logger: coreServices.logger, + policy: coreServices.permissions, + }, + async init({ logger }) { + logger.info('Initializing Kro permissions module'); + + // Create RBAC validator + const rbacValidator = new KroRBACValidator(logger, null); // kubernetesApi would be injected here + + // Create and register permission policy + // Initialize kro policy + const _kroPolicy = new KroPermissionPolicy(rbacValidator, logger); + + // Note: In a real implementation, you would register this policy with the permission system + // This is a simplified example showing the structure + + logger.info('Kro permissions module initialized successfully'); + }, + }); + }, +}); \ No newline at end of file diff --git a/packages/backend/src/plugins/kro-resource-group-service.ts b/packages/backend/src/plugins/kro-resource-group-service.ts new file mode 100644 index 0000000..4df8580 --- /dev/null +++ b/packages/backend/src/plugins/kro-resource-group-service.ts @@ -0,0 +1,386 @@ +import { Config } from '@backstage/config'; +import { KroErrorHandler } from './kro-error-handler'; +import { KroAuditLogger, KroAuditEventType } from './kro-audit'; + +export interface ResourceGraphDefinitionInfo { + name: string; + kind: string; + schema: { + properties: Record; + required: string[]; + }; + description?: string; +} + +export interface ResourceGroupCreateRequest { + templateName: string; + name: string; + namespace: string; + cluster: string; + parameters: Record; +} + +export interface ResourceGroupUpdateRequest { + cluster: string; + namespace: string; + name: string; + spec: Record; +} + +export interface ResourceGroupInfo { + name: string; + namespace: string; + kind: string; + status: string; + spec: Record; + managedResources?: Array<{ + apiVersion: string; + kind: string; + name: string; + namespace?: string; + }>; +} + +export interface ResourceGroupListOptions { + namespace?: string; + labelSelector?: string; + fieldSelector?: string; +} + +export interface ResourceGroupStatusUpdate { + name: string; + namespace: string; + phase: string; + type: 'ADDED' | 'MODIFIED' | 'DELETED'; +} + +export interface ResourceGroupWatcher { + close(): void; +} + +export class KroResourceGroupService { + private kubernetesClient: any; + + constructor( + private logger: any, + private errorHandler: KroErrorHandler, + private auditLogger: KroAuditLogger, + ) { + // Initialize Kubernetes client + this.initializeKubernetesClient(); + } + + private initializeKubernetesClient() { + // This would be implemented with actual Kubernetes client initialization + // For now, it's mocked in tests + } + + async discoverResourceGraphDefinitions(cluster: string): Promise { + try { + this.logger.info('Discovering ResourceGraphDefinitions', { cluster }); + + const rgds = await this.kubernetesClient.listResourceGraphDefinitions(cluster); + + if (rgds.length === 0) { + this.logger.warn('No ResourceGraphDefinitions found', { cluster }); + return []; + } + + const definitions = rgds.map((rgd: any) => ({ + name: rgd.metadata.name, + kind: rgd.spec.schema.kind, + schema: { + properties: rgd.spec.schema.spec?.properties || {}, + required: rgd.spec.schema.spec?.required || [], + }, + description: rgd.metadata.annotations?.['kro.run/description'], + })); + + this.logger.info('Discovered ResourceGraphDefinitions', { + cluster, + count: definitions.length, + }); + + return definitions; + } catch (error) { + const connectionError = this.errorHandler.handleConnectionError(error as Error, { + cluster, + operation: 'discover-resource-graph-definitions', + }); + throw new Error(`Failed to discover ResourceGraphDefinitions: ${connectionError.message}`); + } + } + + async createResourceGroup(user: any, request: ResourceGroupCreateRequest): Promise { + try { + // Validate permissions first + if (this.rbacValidator) { + const permissionResult = await this.rbacValidator.validateKubernetesPermissions( + user, + 'create', + `kro.run/v1alpha1/${request.templateName.toLowerCase()}s`, + request.namespace, + request.cluster + ); + + if (!permissionResult.allowed) { + this.auditLogger.logPermissionDenied( + user, + { + type: 'ResourceGroup', + name: request.name, + namespace: request.namespace, + }, + 'create', + permissionResult.reason + ); + throw new Error(`Permission denied: ${permissionResult.reason}`); + } + } + + // Get ResourceGraphDefinition + const rgd = await this.kubernetesClient.getResourceGraphDefinition( + request.cluster, + 'default', // Assuming RGDs are in default namespace + request.templateName + ); + + // Validate parameters + this.validateParameters(request.parameters, rgd.spec.schema.spec); + + // Create ResourceGroup + const resourceGroup = { + apiVersion: 'kro.run/v1alpha1', + kind: rgd.spec.schema.kind, + metadata: { + name: request.name, + namespace: request.namespace, + labels: { + 'kro.run/resource-graph-definition': request.templateName, + }, + annotations: { + 'kro.run/created-by': user.identity.userEntityRef, + }, + }, + spec: request.parameters, + }; + + const created = await this.kubernetesClient.createResourceGroup(request.cluster, resourceGroup); + + const result: ResourceGroupInfo = { + name: created.metadata.name, + namespace: created.metadata.namespace, + kind: created.kind, + status: this.extractStatus(created.status), + spec: created.spec, + }; + + this.auditLogger.logResourceGroupOperation( + KroAuditEventType.RESOURCE_GROUP_CREATED, + user, + { + type: 'ResourceGroup', + name: request.name, + namespace: request.namespace, + cluster: request.cluster, + }, + 'create', + 'success', + { templateUsed: request.templateName } + ); + + return result; + } catch (error) { + this.auditLogger.logResourceGroupOperation( + KroAuditEventType.RESOURCE_GROUP_CREATION_FAILED, + user, + { + type: 'ResourceGroup', + name: request.name, + namespace: request.namespace, + cluster: request.cluster, + }, + 'create', + 'failure', + undefined, + (error as Error).message + ); + throw new Error(`Failed to create ResourceGroup: ${(error as Error).message}`); + } + } + + async getResourceGroup(_user: any, cluster: string, namespace: string, name: string): Promise { + const resourceGroup = await this.kubernetesClient.getResourceGroup(cluster, namespace, name); + + return { + name: resourceGroup.metadata.name, + namespace: resourceGroup.metadata.namespace, + kind: resourceGroup.kind, + status: this.extractStatus(resourceGroup.status), + spec: resourceGroup.spec, + managedResources: resourceGroup.status?.managedResources || [], + }; + } + + async listResourceGroups(_user: any, cluster: string, options: ResourceGroupListOptions = {}): Promise { + const resourceGroups = await this.kubernetesClient.listResourceGroups(cluster, options); + + return resourceGroups + .filter((rg: any) => { + // Apply client-side filtering if needed + if (options.namespace && rg.metadata.namespace !== options.namespace) { + return false; + } + return true; + }) + .map((rg: any) => ({ + name: rg.metadata.name, + namespace: rg.metadata.namespace, + kind: rg.kind, + status: this.extractStatus(rg.status), + spec: rg.spec, + })); + } + + async updateResourceGroup(user: any, request: ResourceGroupUpdateRequest): Promise { + try { + // Get existing ResourceGroup + const existing = await this.kubernetesClient.getResourceGroup( + request.cluster, + request.namespace, + request.name + ); + + // Update spec + const updated = { + ...existing, + spec: request.spec, + }; + + const result = await this.kubernetesClient.updateResourceGroup(request.cluster, updated); + + this.auditLogger.logResourceGroupOperation( + KroAuditEventType.RESOURCE_GROUP_UPDATED, + user, + { + type: 'ResourceGroup', + name: request.name, + namespace: request.namespace, + cluster: request.cluster, + }, + 'update', + 'success' + ); + + return { + name: result.metadata.name, + namespace: result.metadata.namespace, + kind: result.kind, + status: this.extractStatus(result.status), + spec: result.spec, + }; + } catch (error) { + throw new Error(`Failed to update ResourceGroup: ${(error as Error).message}`); + } + } + + async deleteResourceGroup(user: any, cluster: string, namespace: string, name: string): Promise { + await this.kubernetesClient.deleteResourceGroup(cluster, namespace, name); + + this.auditLogger.logResourceGroupOperation( + KroAuditEventType.RESOURCE_GROUP_DELETED, + user, + { + type: 'ResourceGroup', + name, + namespace, + cluster, + }, + 'delete', + 'success' + ); + } + + watchResourceGroupStatus( + cluster: string, + namespace: string, + name: string, + callback: (update: ResourceGroupStatusUpdate) => void, + errorCallback?: (error: Error) => void + ): ResourceGroupWatcher { + const watcher = this.kubernetesClient.watchResourceGroup(cluster, namespace, name); + + watcher.on('data', (event: any) => { + callback({ + name: event.object.metadata.name, + namespace: event.object.metadata.namespace, + phase: this.extractStatus(event.object.status), + type: event.type, + }); + }); + + watcher.on('error', (error: Error) => { + this.logger.error('ResourceGroup watch error', { + cluster, + namespace, + name, + error: error.message, + }); + if (errorCallback) { + errorCallback(error); + } + }); + + return { + close: () => watcher.close(), + }; + } + + private validateParameters(parameters: Record, schema: any): void { + const required = schema.required || []; + const properties = schema.properties || {}; + + // Check required parameters + const missing = required.filter((field: string) => !(field in parameters)); + if (missing.length > 0) { + this.logger.error('Parameter validation failed', { + missingRequired: missing, + provided: Object.keys(parameters), + }); + throw new Error(`Parameter validation failed: missing required fields: ${missing.join(', ')}`); + } + + // Validate parameter types (basic validation) + for (const [key, value] of Object.entries(parameters)) { + const propertySchema = properties[key]; + if (propertySchema && propertySchema.type) { + const expectedType = propertySchema.type; + const actualType = typeof value; + + if (expectedType === 'string' && actualType !== 'string') { + throw new Error(`Parameter '${key}' must be a string`); + } + if (expectedType === 'number' && actualType !== 'number') { + throw new Error(`Parameter '${key}' must be a number`); + } + if (expectedType === 'boolean' && actualType !== 'boolean') { + throw new Error(`Parameter '${key}' must be a boolean`); + } + } + } + } + + private extractStatus(status: any): string { + if (!status) return 'Unknown'; + if (status.phase) return status.phase; + + const readyCondition = status.conditions?.find((c: any) => c.type === 'Ready'); + if (readyCondition) { + return readyCondition.status === 'True' ? 'Ready' : 'Pending'; + } + + return 'Unknown'; + } + + private rbacValidator: any; // This would be injected in real implementation +} \ No newline at end of file diff --git a/packages/backend/src/plugins/kro-security.ts b/packages/backend/src/plugins/kro-security.ts new file mode 100644 index 0000000..28c465a --- /dev/null +++ b/packages/backend/src/plugins/kro-security.ts @@ -0,0 +1,171 @@ +import { createBackendModule } from '@backstage/backend-plugin-api'; +import { coreServices } from '@backstage/backend-plugin-api'; +import { KroRBACValidator } from './kro-permissions'; +import { KroAuditLogger } from './kro-audit'; +import { KroErrorHandler } from './kro-error-handler'; + +/** + * Security configuration for Kro plugin + */ +export interface KroSecurityConfig { + enablePermissions: boolean; + enableAuditLogging: boolean; + rbacValidation: { + enabled: boolean; + strictMode: boolean; + cacheTimeout: number; + }; + auditLogging: { + enabled: boolean; + logLevel: 'info' | 'warn' | 'error'; + includeSuccessEvents: boolean; + }; + errorHandling: { + enableDetailedErrors: boolean; + includeStackTrace: boolean; + }; +} + +/** + * Kro security service that coordinates all security components + */ +export class KroSecurityService { + private rbacValidator: KroRBACValidator; + private auditLogger: KroAuditLogger; + private errorHandler: KroErrorHandler; + private config: KroSecurityConfig; + + constructor( + private logger: any, + config: KroSecurityConfig, + kubernetesApi?: any + ) { + this.config = config; + this.auditLogger = new KroAuditLogger(logger); + this.rbacValidator = new KroRBACValidator(logger, kubernetesApi); + this.errorHandler = new KroErrorHandler(logger, this.auditLogger); + + this.logger.info('Kro security service initialized', { + enablePermissions: config.enablePermissions, + enableAuditLogging: config.enableAuditLogging, + rbacValidationEnabled: config.rbacValidation.enabled, + component: 'kro-security' + }); + } + + /** + * Get RBAC validator instance + */ + getRBACValidator(): KroRBACValidator { + return this.rbacValidator; + } + + /** + * Get audit logger instance + */ + getAuditLogger(): KroAuditLogger { + return this.auditLogger; + } + + /** + * Get error handler instance + */ + getErrorHandler(): KroErrorHandler { + return this.errorHandler; + } + + /** + * Get security configuration + */ + getConfig(): KroSecurityConfig { + return this.config; + } + + /** + * Validate security configuration + */ + validateConfiguration(): { valid: boolean; errors: string[] } { + const errors: string[] = []; + + if (this.config.enablePermissions && !this.config.rbacValidation.enabled) { + errors.push('RBAC validation must be enabled when permissions are enabled'); + } + + if (this.config.rbacValidation.cacheTimeout < 0) { + errors.push('RBAC cache timeout must be non-negative'); + } + + if (!['info', 'warn', 'error'].includes(this.config.auditLogging.logLevel)) { + errors.push('Invalid audit logging level'); + } + + return { + valid: errors.length === 0, + errors + }; + } +} + +/** + * Kro security backend module + */ +export const kroSecurityModule = createBackendModule({ + pluginId: 'kro', + moduleId: 'security', + register(reg) { + reg.registerInit({ + deps: { + config: coreServices.rootConfig, + logger: coreServices.logger, + }, + async init({ config, logger }) { + logger.info('Initializing Kro security module'); + + // Load security configuration + const kroConfig = config.getOptionalConfig('kro'); + const securityConfig: KroSecurityConfig = { + enablePermissions: kroConfig?.getOptionalBoolean('enablePermissions') ?? true, + enableAuditLogging: kroConfig?.getOptionalBoolean('enableAuditLogging') ?? true, + rbacValidation: { + enabled: kroConfig?.getOptionalConfig('rbacValidation')?.getOptionalBoolean('enabled') ?? true, + strictMode: kroConfig?.getOptionalConfig('rbacValidation')?.getOptionalBoolean('strictMode') ?? false, + cacheTimeout: kroConfig?.getOptionalConfig('rbacValidation')?.getOptionalNumber('cacheTimeout') ?? 300, + }, + auditLogging: { + enabled: kroConfig?.getOptionalConfig('auditLogging')?.getOptionalBoolean('enabled') ?? true, + logLevel: (kroConfig?.getOptionalConfig('auditLogging')?.getOptionalString('logLevel') as 'info' | 'warn' | 'error') ?? 'info', + includeSuccessEvents: kroConfig?.getOptionalConfig('auditLogging')?.getOptionalBoolean('includeSuccessEvents') ?? true, + }, + errorHandling: { + enableDetailedErrors: kroConfig?.getOptionalConfig('errorHandling')?.getOptionalBoolean('enableDetailedErrors') ?? true, + includeStackTrace: kroConfig?.getOptionalConfig('errorHandling')?.getOptionalBoolean('includeStackTrace') ?? false, + }, + }; + + // Create security service + const securityService = new KroSecurityService(logger, securityConfig); + + // Validate configuration + const validation = securityService.validateConfiguration(); + if (!validation.valid) { + const errorMessage = `Invalid Kro security configuration: ${validation.errors.join(', ')}`; + logger.error(errorMessage); + throw new Error(errorMessage); + } + + // Log security configuration + logger.info('Kro security configuration loaded', { + enablePermissions: securityConfig.enablePermissions, + enableAuditLogging: securityConfig.enableAuditLogging, + rbacValidationEnabled: securityConfig.rbacValidation.enabled, + strictMode: securityConfig.rbacValidation.strictMode, + auditLogLevel: securityConfig.auditLogging.logLevel, + component: 'kro-security' + }); + + // Register security service (in a real implementation, this would be made available to other modules) + logger.info('Kro security module initialized successfully'); + }, + }); + }, +}); \ No newline at end of file diff --git a/packages/backend/src/plugins/kro.ts b/packages/backend/src/plugins/kro.ts new file mode 100644 index 0000000..1fedc8b --- /dev/null +++ b/packages/backend/src/plugins/kro.ts @@ -0,0 +1,146 @@ +import { createBackendModule } from '@backstage/backend-plugin-api'; +import { coreServices } from '@backstage/backend-plugin-api'; + +/** + * Custom Kro backend module that provides enhanced error handling + * and configuration for Kubernetes connection issues + */ +export const kroBackendModule = createBackendModule({ + pluginId: 'kro', + moduleId: 'enhanced-error-handling', + register(reg) { + reg.registerInit({ + deps: { + config: coreServices.rootConfig, + logger: coreServices.logger, + }, + async init({ config, logger }) { + const kroConfig = config.getOptionalConfig('kro'); + + if (!kroConfig) { + logger.warn('Kro plugin configuration not found. Plugin may not function correctly.'); + return; + } + + // Validate Kubernetes cluster configuration + const clusters = kroConfig.getOptionalConfigArray('clusters') || []; + + if (clusters.length === 0) { + logger.warn('No Kubernetes clusters configured for Kro plugin'); + return; + } + + // Validate each cluster configuration + for (const [index, clusterConfig] of clusters.entries()) { + try { + const clusterName = clusterConfig.getOptionalString('name'); + const clusterUrl = clusterConfig.getOptionalString('url'); + const authProvider = clusterConfig.getOptionalString('authProvider'); + + if (!clusterName || !clusterUrl || !authProvider) { + logger.warn(`Kro cluster at index ${index} is missing required fields (name, url, or authProvider). Skipping.`); + continue; + } + + logger.info(`Validating Kro cluster configuration: ${clusterName}`); + + // Validate service account token if using serviceAccount auth + if (authProvider === 'serviceAccount') { + const token = clusterConfig.getOptionalString('serviceAccountToken'); + if (!token) { + logger.warn(`Service account token not configured for cluster: ${clusterName}. This may cause authentication failures.`); + } + } + + logger.info(`Kro cluster configuration validated successfully: ${clusterName}`); + + } catch (error) { + const errorMessage = error instanceof Error ? error.message : String(error); + logger.warn(`Invalid Kro cluster configuration at index ${index}: ${errorMessage}. Skipping.`); + } + } + + // Log successful initialization + logger.info(`Kro plugin initialized successfully with ${clusters.length} cluster(s)`); + }, + }); + }, +}); + +/** + * Enhanced error logging utilities for Kro plugin operations + */ +export class KroErrorHandler { + constructor(private logger: any) { } + + /** + * Enhanced error logging for Kubernetes connection issues + */ + logKubernetesError(error: Error, context: { cluster?: string; operation?: string }) { + const { cluster, operation } = context; + + if (error.message.includes('ECONNREFUSED') || error.message.includes('ENOTFOUND')) { + this.logger.error(`Kubernetes connection failed for cluster '${cluster}': Network connectivity issue. Please verify cluster URL and network access.`, { + error: error.message, + cluster, + operation, + errorType: 'CONNECTION_FAILED' + }); + } else if (error.message.includes('Unauthorized') || error.message.includes('401')) { + this.logger.error(`Kubernetes authentication failed for cluster '${cluster}': Invalid or expired credentials. Please verify service account token.`, { + error: error.message, + cluster, + operation, + errorType: 'AUTHENTICATION_FAILED' + }); + } else if (error.message.includes('Forbidden') || error.message.includes('403')) { + this.logger.error(`Kubernetes authorization failed for cluster '${cluster}': Insufficient permissions. Please verify RBAC configuration.`, { + error: error.message, + cluster, + operation, + errorType: 'AUTHORIZATION_FAILED' + }); + } else if (error.message.includes('timeout')) { + this.logger.error(`Kubernetes operation timed out for cluster '${cluster}': Request timeout. Please check cluster performance and network latency.`, { + error: error.message, + cluster, + operation, + errorType: 'TIMEOUT' + }); + } else { + this.logger.error(`Kubernetes operation failed for cluster '${cluster}': ${error.message}`, { + error: error.message, + stack: error.stack, + cluster, + operation, + errorType: 'UNKNOWN' + }); + } + } + + /** + * Log ResourceGroup operation errors with context + */ + logResourceGroupError(error: Error, context: { resourceGroup?: string; namespace?: string; operation?: string }) { + const { resourceGroup, namespace, operation } = context; + + this.logger.error(`ResourceGroup operation failed: ${operation}`, { + error: error.message, + stack: error.stack, + resourceGroup, + namespace, + operation, + component: 'kro-plugin' + }); + } + + /** + * Log successful operations for monitoring + */ + logSuccess(message: string, context: Record = {}) { + this.logger.info(message, { + ...context, + component: 'kro-plugin' + }); + } +} \ No newline at end of file diff --git a/packages/backend/src/plugins/kubernetes-ingestor-kro-module.ts b/packages/backend/src/plugins/kubernetes-ingestor-kro-module.ts new file mode 100644 index 0000000..1c30376 --- /dev/null +++ b/packages/backend/src/plugins/kubernetes-ingestor-kro-module.ts @@ -0,0 +1,68 @@ +import { createBackendModule } from '@backstage/backend-plugin-api'; +import { coreServices } from '@backstage/backend-plugin-api'; +// import { KroEntityTransformer } from './kro-entity-transformer'; + +/** + * Kubernetes Ingestor module for Kro ResourceGroup integration + * Configures the Kubernetes Ingestor to properly handle Kro resources + */ +export const kubernetesIngestorKroModule = createBackendModule({ + pluginId: 'kubernetes-ingestor', + moduleId: 'kro-integration', + register(reg) { + reg.registerInit({ + deps: { + config: coreServices.rootConfig, + logger: coreServices.logger, + }, + async init({ config, logger }) { + // Initialize Kro entity transformer (for future use) + // const kroTransformer = new KroEntityTransformer(logger); + + // Validate Kro configuration + const kroConfig = config.getOptionalConfig('kro'); + const ingestorConfig = config.getOptionalConfig('kubernetesIngestor'); + + if (!ingestorConfig) { + logger.warn('Kubernetes Ingestor configuration not found. Kro integration may not work correctly.'); + return; + } + + if (!kroConfig) { + logger.warn('Kro configuration not found. ResourceGroup processing may be limited.'); + } + + // Log configuration validation + const resources = ingestorConfig.getOptionalConfigArray('resources') || []; + const kroResources = resources.filter(resource => { + const apiVersion = resource.getOptionalString('apiVersion'); + return apiVersion?.startsWith('kro.run/'); + }); + + if (kroResources.length === 0) { + logger.warn('No Kro resources configured in kubernetesIngestor.resources. ResourceGroups will not be discovered.'); + } else { + logger.info(`Found ${kroResources.length} Kro resource types configured for ingestion`, { + kroResourceTypes: kroResources.map(r => `${r.getOptionalString('apiVersion')}/${r.getOptionalString('kind')}`), + }); + } + + // Validate cluster configuration + const clusters = ingestorConfig.getOptionalConfigArray('clusters') || []; + if (clusters.length === 0) { + logger.warn('No clusters configured for Kubernetes Ingestor. ResourceGroup discovery will not work.'); + } else { + logger.info(`Kubernetes Ingestor configured with ${clusters.length} cluster(s) for Kro resource discovery`); + } + + // Register entity transformation handlers + // Note: This is a placeholder for when the Kubernetes Ingestor plugin supports custom transformers + // The actual implementation would depend on the plugin's extension points + logger.info('Kro entity transformer initialized for Kubernetes Ingestor integration'); + + // Log successful initialization + logger.info('Kubernetes Ingestor Kro integration module initialized successfully'); + }, + }); + }, +}); \ No newline at end of file diff --git a/packages/backend/src/plugins/kubernetes-kro-integration.ts b/packages/backend/src/plugins/kubernetes-kro-integration.ts new file mode 100644 index 0000000..2bbb317 --- /dev/null +++ b/packages/backend/src/plugins/kubernetes-kro-integration.ts @@ -0,0 +1,238 @@ +import { createBackendModule } from '@backstage/backend-plugin-api'; +import { coreServices } from '@backstage/backend-plugin-api'; + +/** + * Backend module that enhances the Kubernetes plugin to include + * Kro ResourceGroups in resource discovery and filtering + */ +export const kubernetesKroIntegrationModule = createBackendModule({ + pluginId: 'kubernetes', + moduleId: 'kro-integration', + register(reg) { + reg.registerInit({ + deps: { + config: coreServices.rootConfig, + logger: coreServices.logger, + }, + async init({ config, logger }) { + logger.info('Initializing Kubernetes-Kro integration module'); + + // Get Kro configuration + const kroConfig = config.getOptionalConfig('kro'); + const kubernetesConfig = config.getOptionalConfig('kubernetes'); + + if (!kubernetesConfig) { + logger.warn('Kubernetes configuration not found. Kro integration will be limited.'); + return; + } + + // Enhance Kubernetes plugin with Kro resource types + const clusterConfig = kubernetesConfig.getOptionalConfigArray('clusterLocatorMethods') + ?.find(method => method.getString('type') === 'config') + ?.getOptionalConfigArray('clusters') + ?.find(() => true); // Get first cluster config + + const customResources = clusterConfig?.getOptionalConfigArray('customResources') || []; + + const kroResourceTypes = [ + { + group: 'kro.run', + apiVersion: 'v1alpha1', + plural: 'resourcegraphdefinitions', + }, + { + group: 'kro.run', + apiVersion: 'v1alpha1', + plural: 'cicdpipelines', + }, + { + group: 'kro.run', + apiVersion: 'v1alpha1', + plural: 'eksclusters', + }, + { + group: 'kro.run', + apiVersion: 'v1alpha1', + plural: 'eksclusterwithvpcs', + }, + { + group: 'kro.run', + apiVersion: 'v1alpha1', + plural: 'vpcs', + }, + ]; + + logger.info(`Registered ${kroResourceTypes.length} Kro resource types for Kubernetes plugin discovery`, { + resourceTypes: kroResourceTypes.map(rt => `${rt.group}/${rt.apiVersion}/${rt.plural}`), + }); + + // Log integration status + if (kroConfig) { + const integrationConfig = kroConfig.getOptionalConfig('integration'); + const showInKubernetesViews = integrationConfig?.getOptionalBoolean('showInKubernetesViews') ?? true; + const enableRelationshipMapping = integrationConfig?.getOptionalBoolean('enableRelationshipMapping') ?? true; + + logger.info('Kro-Kubernetes integration configured', { + showInKubernetesViews, + enableRelationshipMapping, + }); + } + + logger.info('Kubernetes-Kro integration module initialized successfully'); + }, + }); + }, +}); + +/** + * Resource relationship mapper for Kro ResourceGroups + */ +export class KroResourceRelationshipMapper { + constructor(private logger: any) { } + + /** + * Map relationships between ResourceGroups and their managed resources + */ + mapResourceRelationships(resources: any[]): Map { + const relationships = new Map(); + + try { + // Find ResourceGroups and their managed resources + const resourceGroups = resources.filter(r => + r.metadata?.labels?.['kro.run/resource-type'] === 'ResourceGroup' || + r.kind === 'ResourceGraphDefinition' + ); + + resourceGroups.forEach(rg => { + const rgKey = `${rg.metadata.namespace}/${rg.metadata.name}`; + const managedResources: string[] = []; + + // Extract managed resources from ResourceGroup spec + if (rg.spec?.resources) { + rg.spec.resources.forEach((resource: any) => { + if (resource.template?.metadata?.name) { + const resourceKey = `${resource.template.metadata.namespace || rg.metadata.namespace}/${resource.template.metadata.name}`; + managedResources.push(resourceKey); + } + }); + } + + // Look for resources with Kro annotations + resources.forEach(resource => { + const kroResourceGroup = resource.metadata?.annotations?.['kro.run/resource-group']; + if (kroResourceGroup === rg.metadata.name) { + const resourceKey = `${resource.metadata.namespace}/${resource.metadata.name}`; + managedResources.push(resourceKey); + } + }); + + if (managedResources.length > 0) { + relationships.set(rgKey, managedResources); + this.logger.debug(`Mapped ResourceGroup ${rgKey} to ${managedResources.length} managed resources`); + } + }); + + this.logger.info(`Mapped relationships for ${relationships.size} ResourceGroups`); + return relationships; + + } catch (error) { + this.logger.error('Failed to map Kro resource relationships', { error: (error as Error).message }); + return new Map(); + } + } + + /** + * Enhance resource objects with relationship metadata + */ + enhanceResourcesWithRelationships(resources: any[], relationships: Map): any[] { + return resources.map(resource => { + const resourceKey = `${resource.metadata.namespace}/${resource.metadata.name}`; + + // Add managed resources annotation for ResourceGroups + const managedResources = relationships.get(resourceKey); + if (managedResources && managedResources.length > 0) { + resource.metadata.annotations = { + ...resource.metadata.annotations, + 'kro.run/managed-resources': JSON.stringify( + managedResources.map(mr => { + const [namespace, name] = mr.split('/'); + return { namespace, name }; + }) + ), + }; + } + + // Add ResourceGroup reference for managed resources + for (const [rgKey, managed] of relationships.entries()) { + if (managed.includes(resourceKey)) { + const [rgNamespace, rgName] = rgKey.split('/'); + resource.metadata.annotations = { + ...resource.metadata.annotations, + 'kro.run/resource-group': rgName, + 'kro.run/resource-group-namespace': rgNamespace, + }; + break; + } + } + + return resource; + }); + } +} + +/** + * Kro resource filter for Kubernetes plugin + */ +export class KroResourceFilter { + private kroResourceTypes = new Set([ + 'kro.run/v1alpha1/ResourceGraphDefinition', + 'kro.run/v1alpha1/CICDPipeline', + 'kro.run/v1alpha1/EksCluster', + 'kro.run/v1alpha1/EksclusterWithVpc', + 'kro.run/v1alpha1/Vpc', + ]); + + /** + * Check if a resource is a Kro resource + */ + isKroResource(resource: any): boolean { + const resourceType = `${resource.apiVersion}/${resource.kind}`; + return this.kroResourceTypes.has(resourceType) || + Boolean(resource.metadata?.labels?.['kro.run/resource-type']); + } + + /** + * Filter resources to include/exclude Kro resources based on configuration + */ + filterResources(resources: any[], includeKroResources: boolean = true): any[] { + if (includeKroResources) { + return resources; // Include all resources + } + + return resources.filter(resource => !this.isKroResource(resource)); + } + + /** + * Get available resource types including Kro resources + */ + getAvailableResourceTypes(resources: any[]): string[] { + const types = new Set(); + + resources.forEach(resource => { + const resourceType = `${resource.apiVersion}/${resource.kind}`; + types.add(resourceType); + }); + + return Array.from(types).sort((a, b) => { + // Sort Kro resources first + const aIsKro = this.kroResourceTypes.has(a); + const bIsKro = this.kroResourceTypes.has(b); + + if (aIsKro && !bIsKro) return -1; + if (!aIsKro && bIsKro) return 1; + return a.localeCompare(b); + }); + } +} + +export default kubernetesKroIntegrationModule; \ No newline at end of file diff --git a/packages/backend/src/plugins/mock-argocd.ts b/packages/backend/src/plugins/mock-argocd.ts new file mode 100644 index 0000000..5099fbc --- /dev/null +++ b/packages/backend/src/plugins/mock-argocd.ts @@ -0,0 +1,82 @@ +import { + coreServices, + createBackendPlugin, +} from '@backstage/backend-plugin-api'; +import { Router } from 'express'; +import * as path from 'path'; +import * as fs from 'fs'; + +function loadFixture(name: string): any { + // eslint-disable-next-line no-restricted-syntax + const filePath = path.resolve(__dirname, '../mocks/fixtures', name); + return JSON.parse(fs.readFileSync(filePath, 'utf8')); +} + +/** + * Mock ArgoCD backend plugin — serves fixture ArgoCD app data + * in MOCK_MODE. The @roadiehq/backstage-plugin-argo-cd frontend + * calls the argocd backend proxy at /api/argocd/argoInstance/... + */ +export default createBackendPlugin({ + pluginId: 'argocd', + register(env) { + env.registerInit({ + deps: { + httpRouter: coreServices.httpRouter, + logger: coreServices.logger, + }, + async init({ httpRouter, logger }) { + logger.info('Mock ArgoCD backend activated (MOCK_MODE=true)'); + + const argocdApps = loadFixture('argocd-applications.json'); + + const router = Router(); + + // Service locator routes — called first to find which instance has the app + // When searchInstances=true, baseUrl is /api/argocd, so these are at /api/argocd/find/... + router.get('/find/name/:appName', (req, res) => { + logger.info(`Mock ArgoCD: service locator for ${req.params.appName}`); + res.json([{ name: 'local', url: 'https://cnoe.localtest.me:8443/argocd', appName: [req.params.appName] }]); + }); + + router.get('/find/selector/:selector', (req, res) => { + logger.info(`Mock ArgoCD: service locator by selector ${req.params.selector}`); + res.json([{ name: 'local', url: 'https://cnoe.localtest.me:8443/argocd', appName: ['platform-api-service'] }]); + }); + + // The Roadie ArgoCD plugin calls: + // GET /argoInstance/argocd/applications/name/{appName} + // GET /argoInstance/argocd/applications/name/{appName}?namespace={ns} + // GET /argoInstance/argocd/applications/selector/{selector} + router.get('/argoInstance/:instanceName/applications/name/:appName', (req, res) => { + const { appName } = req.params; + logger.info(`Mock ArgoCD: serving app ${appName}`); + const app = argocdApps.items.find((a: any) => a.metadata.name === appName); + if (app) { + return res.json(app); + } + return res.json(argocdApps.items[0]); + }); + + router.get('/argoInstance/:instanceName/applications/selector/:selector', (req, res) => { + logger.info(`Mock ArgoCD: serving apps by selector ${req.params.selector}`); + res.json(argocdApps); + }); + + // Catch-all for other argocd routes + router.all('*', (req, res) => { + logger.info(`Mock ArgoCD: catch-all for ${req.method} ${req.path}`); + res.json(argocdApps); + }); + + httpRouter.addAuthPolicy({ + path: '/', + allow: 'unauthenticated', + }); + + httpRouter.use(router); + logger.info('Mock ArgoCD routes registered: /api/argocd/*'); + }, + }); + }, +}); diff --git a/packages/backend/src/plugins/mock-kubernetes.ts b/packages/backend/src/plugins/mock-kubernetes.ts new file mode 100644 index 0000000..ffa1878 --- /dev/null +++ b/packages/backend/src/plugins/mock-kubernetes.ts @@ -0,0 +1,138 @@ +import { + coreServices, + createBackendPlugin, +} from '@backstage/backend-plugin-api'; +import { Router } from 'express'; +import * as path from 'path'; +import * as fs from 'fs'; + +function loadFixture(name: string): any { + // eslint-disable-next-line no-restricted-syntax + const filePath = path.resolve(__dirname, '../mocks/fixtures', name); + return JSON.parse(fs.readFileSync(filePath, 'utf8')); +} + +function loadFixtureText(name: string): string { + // eslint-disable-next-line no-restricted-syntax + const filePath = path.resolve(__dirname, '../mocks/fixtures', name); + return fs.readFileSync(filePath, 'utf8'); +} + +/** + * Mock kubernetes backend plugin — replaces the real kubernetes backend + * in MOCK_MODE, serving fixture data for proxy requests. + * Registers with pluginId 'kubernetes' so it handles /api/kubernetes/* routes. + */ +export default createBackendPlugin({ + pluginId: 'kubernetes', + register(env) { + env.registerInit({ + deps: { + httpRouter: coreServices.httpRouter, + logger: coreServices.logger, + }, + async init({ httpRouter, logger }) { + logger.info('Mock kubernetes backend activated (MOCK_MODE=true)'); + + const sparkApplications = loadFixture('spark-applications.json'); + const argoWorkflows = loadFixture('argo-workflows.json'); + const argoWorkflowTemplates = loadFixture('argo-workflow-templates.json'); + const kubernetesWorkloads = loadFixture('kubernetes-workloads.json'); + const sparkLogs = loadFixtureText('spark-logs.txt'); + + const router = Router(); + router.use(require('express').json()); + + // Mock /clusters endpoint + router.get('/clusters', (_req, res) => { + res.json({ + items: [ + { + name: 'local', + authProvider: 'serviceAccount', + dashboardUrl: '', + }, + ], + }); + }); + + // Mock workloads/objects endpoints — used by EntityKubernetesContent + router.post('/services/:entityName', (_req, res) => { + logger.info(`Mock K8s: serving workloads for entity ${_req.params.entityName}`); + res.json(kubernetesWorkloads); + }); + + router.post('/resources/workloads/query', (_req, res) => { + logger.info('Mock K8s: serving workloads query'); + res.json(kubernetesWorkloads); + }); + + router.post('/resources/custom/query', (_req, res) => { + logger.info('Mock K8s: serving custom resources query'); + res.json(kubernetesWorkloads); + }); + + // Mock proxy endpoint — handles all kubernetes API proxy requests + router.all('/proxy/*', (req, res) => { + const proxyPath = req.params[0] || req.path; + + // Pod logs + if (proxyPath.includes('/log')) { + logger.info(`Mock K8s: serving spark logs for ${proxyPath}`); + return res.type('text/plain').send(sparkLogs); + } + + // Single pod + if (proxyPath.match(/\/pods\/[^/]+$/) && !proxyPath.includes('/log')) { + logger.info(`Mock K8s: serving pod info for ${proxyPath}`); + return res.json({ + metadata: { name: 'spark-etl-job-driver', namespace: 'default' }, + spec: { containers: [{ name: 'spark-kubernetes-driver' }] }, + }); + } + + // Spark applications + if (proxyPath.includes('sparkoperator.k8s.io') || proxyPath.includes('sparkapplications')) { + logger.info(`Mock K8s: serving spark applications for ${proxyPath}`); + return res.json(sparkApplications); + } + + // Argo workflow templates (check before workflows) + if (proxyPath.includes('workflowtemplates')) { + logger.info(`Mock K8s: serving argo workflow templates for ${proxyPath}`); + return res.json(argoWorkflowTemplates); + } + + // Argo workflows + if (proxyPath.includes('argoproj.io') && proxyPath.includes('workflows')) { + logger.info(`Mock K8s: serving argo workflows for ${proxyPath}`); + return res.json(argoWorkflows); + } + + // Secrets (for terraform) + if (proxyPath.includes('/secrets/')) { + logger.info(`Mock K8s: serving mock secret for ${proxyPath}`); + const terraformState = loadFixture('terraform-state.json'); + return res.json({ + data: { + tfstate: Buffer.from(JSON.stringify(terraformState)).toString('base64'), + }, + }); + } + + logger.warn(`Mock K8s: no fixture for proxy path: ${proxyPath}`); + return res.status(404).json({ error: 'No mock fixture for this path' }); + }); + + // Allow all mock routes without auth + httpRouter.addAuthPolicy({ + path: '/', + allow: 'unauthenticated', + }); + + httpRouter.use(router); + logger.info('Mock kubernetes routes registered: /api/kubernetes/clusters, /api/kubernetes/proxy/*'); + }, + }); + }, +}); diff --git a/packages/backend/src/plugins/mock-proxy.ts b/packages/backend/src/plugins/mock-proxy.ts new file mode 100644 index 0000000..0e697c4 --- /dev/null +++ b/packages/backend/src/plugins/mock-proxy.ts @@ -0,0 +1,90 @@ +import { + coreServices, + createBackendPlugin, +} from '@backstage/backend-plugin-api'; +import { Router } from 'express'; +import * as path from 'path'; +import * as fs from 'fs'; + +function loadFixture(name: string): any { + // eslint-disable-next-line no-restricted-syntax + const filePath = path.resolve(__dirname, '../mocks/fixtures', name); + return JSON.parse(fs.readFileSync(filePath, 'utf8')); +} + +/** + * Mock proxy backend plugin — replaces the real proxy backend + * in MOCK_MODE, handling proxy routes like /api/proxy/argo-workflows/api/*. + * Registers with pluginId 'proxy' so it handles /api/proxy/* routes. + */ +export default createBackendPlugin({ + pluginId: 'proxy', + register(env) { + env.registerInit({ + deps: { + httpRouter: coreServices.httpRouter, + logger: coreServices.logger, + }, + async init({ httpRouter, logger }) { + logger.info('Mock proxy backend activated (MOCK_MODE=true)'); + + const argoWorkflows = loadFixture('argo-workflows.json'); + const argoWorkflowTemplates = loadFixture('argo-workflow-templates.json'); + const argocdApps = loadFixture('argocd-applications.json'); + + const router = Router(); + + // Argo Workflows proxy routes + // Plugin builds URL as: proxyUrl + /argo-workflows/api + /api/v1/workflows/{ns} + router.get('/argo-workflows/api/api/v1/workflows/:namespace', (_req, res) => { + logger.info(`Mock proxy: serving argo workflows for namespace ${_req.params.namespace}`); + res.json(argoWorkflows); + }); + + router.get('/argo-workflows/api/api/v1/workflow-templates/:namespace', (_req, res) => { + logger.info(`Mock proxy: serving argo workflow templates for namespace ${_req.params.namespace}`); + res.json(argoWorkflowTemplates); + }); + + // ArgoCD service locator — plugin calls this first to find which instance has the app + router.get('/find/name/:appName', (req, res) => { + logger.info(`Mock proxy: ArgoCD service locator for ${req.params.appName}`); + res.json([{ name: 'local', url: 'https://cnoe.localtest.me:8443/argocd', appName: [req.params.appName] }]); + }); + + router.get('/find/selector/:selector', (req, res) => { + logger.info(`Mock proxy: ArgoCD service locator by selector ${req.params.selector}`); + res.json([{ name: 'local', url: 'https://cnoe.localtest.me:8443/argocd', appName: ['platform-api-service'] }]); + }); + + // ArgoCD proxy routes — used by @roadiehq/backstage-plugin-argo-cd + // Plugin calls: proxyUrl + /argoInstance/{instance}/applications/name/{appName} + router.get('/argoInstance/:instanceName/applications/name/:appName', (req, res) => { + const { appName } = req.params; + logger.info(`Mock proxy: serving ArgoCD app ${appName}`); + const app = argocdApps.items.find((a: any) => a.metadata.name === appName); + res.json(app || argocdApps.items[0]); + }); + + router.get('/argoInstance/:instanceName/applications/selector/:selector', (req, res) => { + logger.info(`Mock proxy: serving ArgoCD apps by selector ${req.params.selector}`); + res.json(argocdApps.items); + }); + + // Catch-all for other proxy routes + router.all('*', (req, res) => { + logger.warn(`Mock proxy: no handler for ${req.method} ${req.path}`); + res.status(404).json({ error: 'No mock proxy handler for this path' }); + }); + + httpRouter.addAuthPolicy({ + path: '/', + allow: 'unauthenticated', + }); + + httpRouter.use(router); + logger.info('Mock proxy routes registered: /api/proxy/argo-workflows/*'); + }, + }); + }, +}); diff --git a/packages/backend/src/plugins/mock-terraform.ts b/packages/backend/src/plugins/mock-terraform.ts new file mode 100644 index 0000000..0f28477 --- /dev/null +++ b/packages/backend/src/plugins/mock-terraform.ts @@ -0,0 +1,66 @@ +import { + coreServices, + createBackendPlugin, +} from '@backstage/backend-plugin-api'; +import { Router } from 'express'; +import * as path from 'path'; +import * as fs from 'fs'; + +function loadFixture(name: string): any { + // eslint-disable-next-line no-restricted-syntax + const filePath = path.resolve(__dirname, '../mocks/fixtures', name); + return JSON.parse(fs.readFileSync(filePath, 'utf8')); +} + +/** + * Mock terraform backend plugin — replaces the real terraform backend + * in MOCK_MODE, serving fixture data. Registers with pluginId 'terraform' + * so it handles /api/terraform/* routes. + */ +export default createBackendPlugin({ + pluginId: 'terraform', + register(env) { + env.registerInit({ + deps: { + httpRouter: coreServices.httpRouter, + logger: coreServices.logger, + }, + async init({ httpRouter, logger }) { + logger.info('Mock terraform backend activated (MOCK_MODE=true)'); + + const terraformState = loadFixture('terraform-state.json'); + const terraformFileList = loadFixture('terraform-file-list.json'); + + const router = Router(); + + router.get('/health', (_req, res) => { + res.json({ status: 'ok' }); + }); + + router.post('/deflate', (_req, res) => { + res.json(terraformState); + }); + + router.post('/getFileList', (_req, res) => { + res.json(terraformFileList); + }); + + router.post('/getLocalFileList', (_req, res) => { + res.json(terraformFileList); + }); + + router.post('/getTFStateFile', (_req, res) => { + res.json(terraformState); + }); + + httpRouter.addAuthPolicy({ + path: '/', + allow: 'unauthenticated', + }); + + httpRouter.use(router); + logger.info('Mock terraform routes registered: /api/terraform/*'); + }, + }); + }, +}); diff --git a/packages/backend/src/plugins/proxy.ts b/packages/backend/src/plugins/proxy.ts deleted file mode 100644 index 54ec393..0000000 --- a/packages/backend/src/plugins/proxy.ts +++ /dev/null @@ -1,13 +0,0 @@ -import { createRouter } from '@backstage/plugin-proxy-backend'; -import { Router } from 'express'; -import { PluginEnvironment } from '../types'; - -export default async function createPlugin( - env: PluginEnvironment, -): Promise { - return await createRouter({ - logger: env.logger, - config: env.config, - discovery: env.discovery, - }); -} diff --git a/packages/backend/src/types.ts b/packages/backend/src/types.ts deleted file mode 100644 index 9cd2c74..0000000 --- a/packages/backend/src/types.ts +++ /dev/null @@ -1,25 +0,0 @@ -import { Logger } from 'winston'; -import { Config } from '@backstage/config'; -import { - PluginCacheManager, - PluginDatabaseManager, - PluginEndpointDiscovery, - TokenManager, - UrlReader, -} from '@backstage/backend-common'; -import { PluginTaskScheduler } from '@backstage/backend-tasks'; -import { PermissionEvaluator } from '@backstage/plugin-permission-common'; -import { IdentityApi } from '@backstage/plugin-auth-node'; - -export type PluginEnvironment = { - logger: Logger; - database: PluginDatabaseManager; - cache: PluginCacheManager; - config: Config; - reader: UrlReader; - discovery: PluginEndpointDiscovery; - tokenManager: TokenManager; - scheduler: PluginTaskScheduler; - permissions: PermissionEvaluator; - identity: IdentityApi; -}; diff --git a/packages/backend/tsconfig.json b/packages/backend/tsconfig.json new file mode 100644 index 0000000..ffebe71 --- /dev/null +++ b/packages/backend/tsconfig.json @@ -0,0 +1,9 @@ +{ + "extends": "@backstage/cli/config/tsconfig.json", + "include": ["src"], + "exclude": ["node_modules"], + "compilerOptions": { + "outDir": "dist-types", + "rootDir": "src" + } +} diff --git a/playwright.config.ts b/playwright.config.ts index 37c7fb1..587ff5d 100644 --- a/playwright.config.ts +++ b/playwright.config.ts @@ -1,60 +1,19 @@ -/* - * Copyright 2023 The Backstage Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - import { defineConfig } from '@playwright/test'; -import { generateProjects } from '@backstage/e2e-test-utils/playwright'; -/** - * See https://playwright.dev/docs/test-configuration. - */ export default defineConfig({ - timeout: 60_000, - - expect: { - timeout: 5_000, - }, - - // Run your local dev server before starting the tests - webServer: process.env.CI - ? [] - : [ - { - command: 'yarn start', - port: 3000, - reuseExistingServer: true, - timeout: 60_000, - }, - ], - - forbidOnly: !!process.env.CI, - - retries: process.env.CI ? 2 : 0, - - reporter: [['html', { open: 'never', outputFolder: 'e2e-test-report' }]], - + testDir: './e2e', + timeout: 90000, + retries: 1, use: { - actionTimeout: 0, - baseURL: - process.env.PLAYWRIGHT_URL ?? - (process.env.CI ? 'http://localhost:7007' : 'http://localhost:3000'), + baseURL: 'http://localhost:3000', + headless: true, screenshot: 'only-on-failure', - trace: 'on-first-retry', + actionTimeout: 30000, + }, + webServer: { + command: 'WDS_SOCKET_PORT=0 DISABLE_ESLINT_PLUGIN=true MOCK_MODE=true yarn dev', + port: 3000, + timeout: 180000, + reuseExistingServer: true, }, - - outputDir: 'node_modules/.cache/e2e-test-results', - - projects: generateProjects(), // Find all packages with e2e-test folders }); diff --git a/plugins/README.md b/plugins/README.md index d7865fd..b4113a7 100644 --- a/plugins/README.md +++ b/plugins/README.md @@ -1,9 +1,3 @@ -# The Plugins Folder +# Custom Plugins -This is where your own plugins and their associated modules live, each in a -separate folder of its own. - -If you want to create a new plugin here, go to your project root directory, run -the command `yarn new`, and follow the on-screen instructions. - -You can also check out existing plugins on [the plugin marketplace](https://backstage.io/plugins)! +This directory contains custom CNOE plugins migrated from the original backstage-app. diff --git a/plugins/apache-spark/dev/index.tsx b/plugins/apache-spark/dev/index.tsx index 5f2b474..d39a30d 100644 --- a/plugins/apache-spark/dev/index.tsx +++ b/plugins/apache-spark/dev/index.tsx @@ -1,4 +1,4 @@ -import React from 'react'; + import { createDevApp } from '@backstage/dev-utils'; import { apacheSparkPlugin, ApacheSparkPage } from '../src/plugin'; diff --git a/plugins/apache-spark/package.json b/plugins/apache-spark/package.json index 71639db..7d7570e 100644 --- a/plugins/apache-spark/package.json +++ b/plugins/apache-spark/package.json @@ -3,6 +3,21 @@ "version": "0.1.0", "main": "src/index.ts", "types": "src/index.ts", + "exports": { + ".": "./src/index.ts", + "./alpha": "./src/alpha.tsx", + "./package.json": "./package.json" + }, + "typesVersions": { + "*": { + "alpha": [ + "src/alpha.tsx" + ], + "package.json": [ + "package.json" + ] + } + }, "license": "Apache-2.0", "private": true, "publishConfig": { @@ -24,25 +39,28 @@ "postpack": "backstage-cli package postpack" }, "dependencies": { - "@backstage/core-components": "^0.14.8", - "@backstage/core-plugin-api": "^1.9.3", - "@backstage/theme": "^0.5.6", - "@material-ui/core": "^4.9.13", - "@material-ui/icons": "^4.9.1", - "@material-ui/lab": "^4.0.0-alpha.61", - "react-use": "^17.2.4" + "@backstage/catalog-model": "^1.7.7", + "@backstage/core-components": "^0.18.8", + "@backstage/core-plugin-api": "^1.12.4", + "@backstage/frontend-plugin-api": "^0.15.1", + "@backstage/plugin-catalog-react": "^2.1.4", + "@backstage/plugin-kubernetes": "^0.12.17", + "@backstage/theme": "^0.7.2", + "react-use": "^17.2.4", + "yaml": "^2.3.0" }, "peerDependencies": { - "react": "^16.13.1 || ^17.0.0" + "react": "^17.0.0 || ^18.0.0" }, "devDependencies": { - "@backstage/cli": "^0.26.10", - "@backstage/core-app-api": "^1.13.0", - "@backstage/dev-utils": "^1.0.34", - "@backstage/test-utils": "^1.5.7", + "@backstage/cli": "^0.36.0", + "@backstage/core-app-api": "^1.19.6", + "@backstage/dev-utils": "^1.1.21", + "@backstage/test-utils": "^1.7.16", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", "@testing-library/user-event": "^14.0.0", + "cross-fetch": "^4.1.0", "msw": "^1.0.0" }, "files": [ diff --git a/plugins/apache-spark/src/alpha.tsx b/plugins/apache-spark/src/alpha.tsx new file mode 100644 index 0000000..f1b4ca9 --- /dev/null +++ b/plugins/apache-spark/src/alpha.tsx @@ -0,0 +1,23 @@ + +import { createFrontendPlugin, PageBlueprint } from '@backstage/frontend-plugin-api'; + +/** + * PageBlueprint extension for the Apache Spark plugin. + * Registers the main overview page under /apache-spark. + */ +const ApacheSparkPage = PageBlueprint.make({ + params: { + path: '/apache-spark', + loader: () => + import('./components/Overview').then(m => ), + }, +}); + +/** + * New frontend system plugin entry point for @internal/plugin-apache-spark. + * Import via the "/alpha" sub-path export. + */ +export default createFrontendPlugin({ + pluginId: 'apache-spark', + extensions: [ApacheSparkPage], +}); diff --git a/plugins/apache-spark/src/api/index.test.ts b/plugins/apache-spark/src/api/index.test.ts index 20f775b..9362417 100644 --- a/plugins/apache-spark/src/api/index.test.ts +++ b/plugins/apache-spark/src/api/index.test.ts @@ -1,3 +1,4 @@ +/* eslint-disable jest/no-commented-out-tests */ // import { ApacheSparkClient } from './index'; // import { ApacheSpark } from './model'; // diff --git a/plugins/apache-spark/src/components/ApacheSparkLogs/ApacheSparkLogs.test.tsx b/plugins/apache-spark/src/components/ApacheSparkLogs/ApacheSparkLogs.test.tsx index 01d3ade..4f6a3d9 100644 --- a/plugins/apache-spark/src/components/ApacheSparkLogs/ApacheSparkLogs.test.tsx +++ b/plugins/apache-spark/src/components/ApacheSparkLogs/ApacheSparkLogs.test.tsx @@ -1,4 +1,4 @@ -import React from 'react'; + import { render, screen } from '@testing-library/react'; import { useApi } from '@backstage/core-plugin-api'; import { useEntity } from '@backstage/plugin-catalog-react'; diff --git a/plugins/apache-spark/src/components/ApacheSparkLogs/ApacheSparkLogs.tsx b/plugins/apache-spark/src/components/ApacheSparkLogs/ApacheSparkLogs.tsx index e892856..b000281 100644 --- a/plugins/apache-spark/src/components/ApacheSparkLogs/ApacheSparkLogs.tsx +++ b/plugins/apache-spark/src/components/ApacheSparkLogs/ApacheSparkLogs.tsx @@ -9,8 +9,8 @@ import { SelectedItems, SelectItem, } from '@backstage/core-components'; -import Alert from '@material-ui/lab/Alert'; -import React, { useEffect, useState } from 'react'; +import { ResponseErrorPanel } from '@backstage/core-components'; +import { useEffect, useState } from 'react'; import { useEntity } from '@backstage/plugin-catalog-react'; import { getAnnotationValues } from '../utils'; @@ -30,7 +30,7 @@ export const ApacheSparkDriverLogs = (props: { sparkApp: ApacheSpark }) => { if (loading) { return ; } else if (error) { - return {`${error}`}; + return ; } return ; }; @@ -69,9 +69,9 @@ export const ApacheSparkExecutorLogs = (props: { sparkApp: ApacheSpark }) => { const [selected, setSelected] = useState(''); if (props.sparkApp.status.applicationState.state !== 'RUNNING') { return ( - +
Executor logs are only available for Spark Applications in RUNNING state - +
); } const executors: SelectItem[] = [{ label: '', value: '' }]; diff --git a/plugins/apache-spark/src/components/ApacheSparkOverviewTable/ApacheSparkOverviewTable.tsx b/plugins/apache-spark/src/components/ApacheSparkOverviewTable/ApacheSparkOverviewTable.tsx index e54b062..a92765b 100644 --- a/plugins/apache-spark/src/components/ApacheSparkOverviewTable/ApacheSparkOverviewTable.tsx +++ b/plugins/apache-spark/src/components/ApacheSparkOverviewTable/ApacheSparkOverviewTable.tsx @@ -1,5 +1,6 @@ import { Progress, + ResponseErrorPanel, StatusError, StatusOK, StatusPending, @@ -9,15 +10,33 @@ import { } from '@backstage/core-components'; import { useApi } from '@backstage/core-plugin-api'; import { apacheSparkApiRef } from '../../api'; -import React, { useEffect, useState } from 'react'; +import { useEffect, useState, type CSSProperties } from 'react'; import useAsync from 'react-use/lib/useAsync'; import { ApacheSpark, ApacheSparkList } from '../../api/model'; -import Alert from '@material-ui/lab/Alert'; -import { createStyles, Drawer, makeStyles, Theme } from '@material-ui/core'; import { DrawerContent } from '../DetailedDrawer/DetailedDrawer'; import { getAnnotationValues } from '../utils'; import { useEntity } from '@backstage/plugin-catalog-react'; +// Slide-over panel styles (replaces MUI Drawer) +const overlayStyle: CSSProperties = { + position: 'fixed', + inset: 0, + background: 'rgba(0,0,0,0.3)', + zIndex: 1200, +}; +const panelStyle: CSSProperties = { + position: 'fixed', + top: 0, + right: 0, + bottom: 0, + width: '60%', + padding: '20px', + background: 'var(--backstage-color-background-paper, #fff)', + boxShadow: '-4px 0 24px rgba(0,0,0,0.15)', + zIndex: 1201, + overflowY: 'auto', +}; + type TableData = { id: string; name: string; @@ -47,21 +66,11 @@ const columns: TableColumn[] = [ { title: 'EndTime', field: 'finishedAt', type: 'datetime' }, ]; -const useDrawerStyles = makeStyles((theme: Theme) => - createStyles({ - paper: { - width: '60%', - padding: theme.spacing(2.5), - }, - }), -); - export const ApacheSparkOverviewTable = () => { const apiClient = useApi(apacheSparkApiRef); const [columnData, setColumnData] = useState([] as TableData[]); const [isOpen, toggleDrawer] = useState(false); const [drawerData, setDrawerData] = useState({} as ApacheSpark); - const classes = useDrawerStyles(); const { entity } = useEntity(); const { ns, clusterName, labelSelector } = getAnnotationValues(entity); @@ -109,7 +118,7 @@ export const ApacheSparkOverviewTable = () => { if (loading) { return ; } else if (error) { - return {`${error}`}; + return ; } return ( @@ -130,16 +139,14 @@ export const ApacheSparkOverviewTable = () => { columns={columns} data={columnData} /> - toggleDrawer(false)} - > - - + {isOpen && ( + <> +
toggleDrawer(false)} onKeyDown={(e) => { if (e.key === 'Escape') toggleDrawer(false); }} /> +
+ +
+ + )} ); }; diff --git a/plugins/apache-spark/src/components/DetailedDrawer/DetailedDrawer.tsx b/plugins/apache-spark/src/components/DetailedDrawer/DetailedDrawer.tsx index fbaaddf..79c7fe2 100644 --- a/plugins/apache-spark/src/components/DetailedDrawer/DetailedDrawer.tsx +++ b/plugins/apache-spark/src/components/DetailedDrawer/DetailedDrawer.tsx @@ -1,13 +1,5 @@ import { ApacheSpark } from '../../api/model'; -import { - createStyles, - IconButton, - makeStyles, - Theme, - Typography, -} from '@material-ui/core'; -import Close from '@material-ui/icons/Close'; -import React from 'react'; +import type { CSSProperties } from 'react'; import { stringify } from 'yaml'; import { CopyTextButton, TabbedLayout } from '@backstage/core-components'; import { @@ -16,38 +8,29 @@ import { } from '../ApacheSparkLogs/ApacheSparkLogs'; import { DrawerOverview } from './DrawerOverview'; -const useDrawerContentStyles = makeStyles((theme: Theme) => - createStyles({ - header: { - display: 'flex', - justifyContent: 'space-between', - }, - icon: { - fontSize: 20, - }, - content: { - height: '80%', - backgroundColor: '#EEEEEE', - overflow: 'scroll', - display: 'flex', - flexDirection: 'row', - }, - logs: { - height: 500, - display: 'flex', - flexDirection: 'column', - flexShrink: 0, - }, - logs2: { - height: 600, - display: 'flex', - flexDirection: 'column', - }, - secondaryAction: { - marginLeft: theme.spacing(2.5), - }, - }), -); +const headerStyle: CSSProperties = { + display: 'flex', + justifyContent: 'space-between', + alignItems: 'center', +}; +const contentStyle: CSSProperties = { + height: '80%', + backgroundColor: '#EEEEEE', + overflow: 'scroll', + display: 'flex', + flexDirection: 'row', +}; +const logsStyle: CSSProperties = { + height: 500, + display: 'flex', + flexDirection: 'column', + flexShrink: 0, +}; +const logs2Style: CSSProperties = { + height: 600, + display: 'flex', + flexDirection: 'column', +}; export const DrawerContent = ({ toggleDrawer, @@ -56,7 +39,6 @@ export const DrawerContent = ({ toggleDrawer: (isOpen: boolean) => void; apacheSpark: ApacheSpark; }) => { - const classes = useDrawerContentStyles(); const yamlString = stringify(apacheSpark); return ( @@ -69,18 +51,19 @@ export const DrawerContent = ({ <> -
- {apacheSpark.metadata.name} - +

{apacheSpark.metadata.name}

+
-
+
{yamlString}
@@ -88,19 +71,15 @@ export const DrawerContent = ({ <> -
-
- - Driver Log for {apacheSpark.metadata.name} - +
+
+

Driver Log for {apacheSpark.metadata.name}

-
-
- - Executor Logs for {apacheSpark.metadata.name} - +
+
+

Executor Logs for {apacheSpark.metadata.name}

diff --git a/plugins/apache-spark/src/components/DetailedDrawer/DrawerOverview.tsx b/plugins/apache-spark/src/components/DetailedDrawer/DrawerOverview.tsx index 7f2f87d..936b118 100644 --- a/plugins/apache-spark/src/components/DetailedDrawer/DrawerOverview.tsx +++ b/plugins/apache-spark/src/components/DetailedDrawer/DrawerOverview.tsx @@ -1,4 +1,4 @@ -import { createStyles, makeStyles } from '@material-ui/core'; +// Inline styles replace former makeStyles/createStyles usage (MUI removed per BUI migration) import { ApacheSpark } from '../../api/model'; import { InfoCard, @@ -8,19 +8,15 @@ import { StatusRunning, StructuredMetadataTable, } from '@backstage/core-components'; -import React from 'react'; +import type { CSSProperties } from 'react'; -const useStyles = makeStyles(() => - createStyles({ - content: { - justifyContent: 'space-between', - display: 'flex', - flexDirection: 'column', - padding: '5px', - gap: '30px', - }, - }), -); +const contentStyle: CSSProperties = { + justifyContent: 'space-between', + display: 'flex', + flexDirection: 'column', + padding: '5px', + gap: '30px', +}; type generateMetadataOutput = { app: { [key: string]: any }; @@ -79,7 +75,7 @@ const upperCaseFirstChar = (s: string) => { export const DrawerOverview = (props: { sparkApp: ApacheSpark }) => { const data = generateMetadata(props.sparkApp) return ( -
+
( diff --git a/plugins/apache-spark/src/index.ts b/plugins/apache-spark/src/index.ts index b9bdd3a..97d6db1 100644 --- a/plugins/apache-spark/src/index.ts +++ b/plugins/apache-spark/src/index.ts @@ -1 +1 @@ -export {apacheSparkPlugin, ApacheSparkPage, isApacheSparkAvailable} from './plugin'; +export {apacheSparkPlugin, ApacheSparkPage, EntityApacheSparkContent, isApacheSparkAvailable} from './plugin'; diff --git a/plugins/apache-spark/src/plugin.test.ts b/plugins/apache-spark/src/plugin.test.ts index adf309a..28feacd 100644 --- a/plugins/apache-spark/src/plugin.test.ts +++ b/plugins/apache-spark/src/plugin.test.ts @@ -1,3 +1,4 @@ +/* eslint-disable jest/no-commented-out-tests */ // import { apacheSparkPlugin } from './plugin'; // // describe('apache-spark', () => { diff --git a/plugins/apache-spark/src/plugin.ts b/plugins/apache-spark/src/plugin.ts index a241b70..31d415b 100644 --- a/plugins/apache-spark/src/plugin.ts +++ b/plugins/apache-spark/src/plugin.ts @@ -40,3 +40,14 @@ export const ApacheSparkPage = apacheSparkPlugin.provide( mountPoint: rootRouteRef, }), ); + +export const EntityApacheSparkContent = apacheSparkPlugin.provide( + createRoutableExtension({ + name: 'EntityApacheSparkContent', + component: () => + import('./components/ApacheSparkOverviewTable/ApacheSparkOverviewTable').then( + m => m.ApacheSparkOverviewTable, + ), + mountPoint: rootRouteRef, + }), +); diff --git a/plugins/argo-workflows/.eslintignore b/plugins/argo-workflows/.eslintignore new file mode 100644 index 0000000..cc70e11 --- /dev/null +++ b/plugins/argo-workflows/.eslintignore @@ -0,0 +1 @@ +src/api/generated diff --git a/plugins/argo-workflows/dev/index.tsx b/plugins/argo-workflows/dev/index.tsx index 712176c..147fcf9 100644 --- a/plugins/argo-workflows/dev/index.tsx +++ b/plugins/argo-workflows/dev/index.tsx @@ -1,4 +1,4 @@ -import React from 'react'; + import { createDevApp } from '@backstage/dev-utils'; import { argoWorkflowsPlugin, ArgoWorkflowsPage } from '../src/plugin'; diff --git a/plugins/argo-workflows/package.json b/plugins/argo-workflows/package.json index f23870b..a8ebdf6 100644 --- a/plugins/argo-workflows/package.json +++ b/plugins/argo-workflows/package.json @@ -3,6 +3,21 @@ "version": "0.1.0", "main": "src/index.ts", "types": "src/index.ts", + "exports": { + ".": "./src/index.ts", + "./alpha": "./src/alpha.tsx", + "./package.json": "./package.json" + }, + "typesVersions": { + "*": { + "alpha": [ + "src/alpha.tsx" + ], + "package.json": [ + "package.json" + ] + } + }, "license": "Apache-2.0", "private": true, "publishConfig": { @@ -24,22 +39,24 @@ "postpack": "backstage-cli package postpack" }, "dependencies": { - "@backstage/core-components": "^0.14.8", - "@backstage/core-plugin-api": "^1.9.3", - "@backstage/theme": "^0.5.6", - "@material-ui/core": "^4.9.13", - "@material-ui/icons": "^4.9.1", - "@material-ui/lab": "^4.0.0-alpha.61", - "react-use": "^17.2.4" + "@backstage/catalog-model": "^1.7.7", + "@backstage/core-components": "^0.18.8", + "@backstage/core-plugin-api": "^1.12.4", + "@backstage/frontend-plugin-api": "^0.15.1", + "@backstage/plugin-catalog-react": "^2.1.1", + "@backstage/plugin-kubernetes": "^0.12.17", + "@backstage/theme": "^0.7.2", + "react-use": "^17.2.4", + "request": "^2.88.2" }, "peerDependencies": { - "react": "^16.13.1 || ^17.0.0" + "react": "^17.0.0 || ^18.0.0" }, "devDependencies": { - "@backstage/cli": "^0.26.10", - "@backstage/core-app-api": "^1.13.0", - "@backstage/dev-utils": "^1.0.34", - "@backstage/test-utils": "^1.5.7", + "@backstage/cli": "^0.36.0", + "@backstage/core-app-api": "^1.19.6", + "@backstage/dev-utils": "^1.1.21", + "@backstage/test-utils": "^1.7.16", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", "@testing-library/user-event": "^14.0.0", diff --git a/plugins/argo-workflows/src/alpha.tsx b/plugins/argo-workflows/src/alpha.tsx new file mode 100644 index 0000000..f9cbbef --- /dev/null +++ b/plugins/argo-workflows/src/alpha.tsx @@ -0,0 +1,23 @@ + +import { createFrontendPlugin, PageBlueprint } from '@backstage/frontend-plugin-api'; + +/** + * PageBlueprint extension for the Argo Workflows plugin. + * Registers the main overview page under /argo-workflows. + */ +const ArgoWorkflowsPage = PageBlueprint.make({ + params: { + path: '/argo-workflows', + loader: () => + import('./components/Overview').then(m => ), + }, +}); + +/** + * New frontend system plugin entry point for @internal/plugin-argo-workflows. + * Import via the "/alpha" sub-path export. + */ +export default createFrontendPlugin({ + pluginId: 'argo-workflows', + extensions: [ArgoWorkflowsPage], +}); diff --git a/plugins/argo-workflows/src/api/generated/api/apis.ts b/plugins/argo-workflows/src/api/generated/api/apis.ts index 547c881..603afb5 100644 --- a/plugins/argo-workflows/src/api/generated/api/apis.ts +++ b/plugins/argo-workflows/src/api/generated/api/apis.ts @@ -1,22 +1,31 @@ // @ts-nocheck export * from './archivedWorkflowServiceApi'; import { ArchivedWorkflowServiceApi } from './archivedWorkflowServiceApi'; + export * from './artifactServiceApi'; import { ArtifactServiceApi } from './artifactServiceApi'; + export * from './clusterWorkflowTemplateServiceApi'; import { ClusterWorkflowTemplateServiceApi } from './clusterWorkflowTemplateServiceApi'; + export * from './cronWorkflowServiceApi'; import { CronWorkflowServiceApi } from './cronWorkflowServiceApi'; + export * from './eventServiceApi'; import { EventServiceApi } from './eventServiceApi'; + export * from './eventSourceServiceApi'; import { EventSourceServiceApi } from './eventSourceServiceApi'; + export * from './infoServiceApi'; import { InfoServiceApi } from './infoServiceApi'; + export * from './sensorServiceApi'; import { SensorServiceApi } from './sensorServiceApi'; + export * from './workflowServiceApi'; import { WorkflowServiceApi } from './workflowServiceApi'; + export * from './workflowTemplateServiceApi'; import { WorkflowTemplateServiceApi } from './workflowTemplateServiceApi'; import * as http from 'http'; diff --git a/plugins/argo-workflows/src/api/generated/api/archivedWorkflowServiceApi.ts b/plugins/argo-workflows/src/api/generated/api/archivedWorkflowServiceApi.ts index 6062004..ad7a36b 100644 --- a/plugins/argo-workflows/src/api/generated/api/archivedWorkflowServiceApi.ts +++ b/plugins/argo-workflows/src/api/generated/api/archivedWorkflowServiceApi.ts @@ -16,7 +16,6 @@ import localVarRequest from 'request'; import http from 'http'; /* tslint:disable:no-unused-locals */ -import { GrpcGatewayRuntimeError } from '../model/grpcGatewayRuntimeError'; import { IoArgoprojWorkflowV1alpha1LabelKeys } from '../model/ioArgoprojWorkflowV1alpha1LabelKeys'; import { IoArgoprojWorkflowV1alpha1LabelValues } from '../model/ioArgoprojWorkflowV1alpha1LabelValues'; import { IoArgoprojWorkflowV1alpha1ResubmitArchivedWorkflowRequest } from '../model/ioArgoprojWorkflowV1alpha1ResubmitArchivedWorkflowRequest'; @@ -25,11 +24,11 @@ import { IoArgoprojWorkflowV1alpha1Workflow } from '../model/ioArgoprojWorkflowV import { IoArgoprojWorkflowV1alpha1WorkflowList } from '../model/ioArgoprojWorkflowV1alpha1WorkflowList'; import { ObjectSerializer, Authentication, VoidAuth, Interceptor } from '../model/models'; -import { HttpBasicAuth, HttpBearerAuth, ApiKeyAuth, OAuth } from '../model/models'; +import { ApiKeyAuth } from '../model/models'; -import { HttpError, RequestFile } from './apis'; +import { HttpError } from './apis'; -let defaultBasePath = 'http://localhost:2746'; +const defaultBasePath = 'http://localhost:2746'; // =============================================== // This file is autogenerated - Please do not edit @@ -45,7 +44,7 @@ export class ArchivedWorkflowServiceApi { protected _useQuerystring : boolean = false; protected authentications = { - 'default': new VoidAuth(), + 'default': new VoidAuth() as Authentication, 'BearerToken': new ApiKeyAuth('header', 'Authorization'), } @@ -104,8 +103,8 @@ export class ArchivedWorkflowServiceApi { public async archivedWorkflowServiceDeleteArchivedWorkflow (uid: string, namespace?: string, options: {headers: {[name: string]: string}} = {headers: {}}) : Promise<{ response: http.IncomingMessage; body: object; }> { const localVarPath = this.basePath + '/api/v1/archived-workflows/{uid}' .replace('{' + 'uid' + '}', encodeURIComponent(String(uid))); - let localVarQueryParameters: any = {}; - let localVarHeaderParams: any = (Object).assign({}, this._defaultHeaders); + const localVarQueryParameters: any = {}; + const localVarHeaderParams: any = (Object as any).assign({}, this._defaultHeaders); const produces = ['application/json']; // give precedence to 'application/json' if (produces.indexOf('application/json') >= 0) { @@ -113,7 +112,7 @@ export class ArchivedWorkflowServiceApi { } else { localVarHeaderParams.Accept = produces.join(','); } - let localVarFormParams: any = {}; + const localVarFormParams: any = {}; // verify required parameter 'uid' is not null or undefined if (uid === null || uid === undefined) { @@ -121,14 +120,14 @@ export class ArchivedWorkflowServiceApi { } if (namespace !== undefined) { - localVarQueryParameters['namespace'] = ObjectSerializer.serialize(namespace, "string"); + localVarQueryParameters.namespace = ObjectSerializer.serialize(namespace, "string"); } - (Object).assign(localVarHeaderParams, options.headers); + (Object as any).assign(localVarHeaderParams, options.headers); - let localVarUseFormData = false; + const localVarUseFormData = false; - let localVarRequestOptions: localVarRequest.Options = { + const localVarRequestOptions: localVarRequest.Options = { method: 'DELETE', qs: localVarQueryParameters, headers: localVarHeaderParams, @@ -151,7 +150,7 @@ export class ArchivedWorkflowServiceApi { return interceptorPromise.then(() => { if (Object.keys(localVarFormParams).length) { if (localVarUseFormData) { - (localVarRequestOptions).formData = localVarFormParams; + (localVarRequestOptions as any).formData = localVarFormParams; } else { localVarRequestOptions.form = localVarFormParams; } @@ -181,8 +180,8 @@ export class ArchivedWorkflowServiceApi { public async archivedWorkflowServiceGetArchivedWorkflow (uid: string, namespace?: string, name?: string, options: {headers: {[name: string]: string}} = {headers: {}}) : Promise<{ response: http.IncomingMessage; body: IoArgoprojWorkflowV1alpha1Workflow; }> { const localVarPath = this.basePath + '/api/v1/archived-workflows/{uid}' .replace('{' + 'uid' + '}', encodeURIComponent(String(uid))); - let localVarQueryParameters: any = {}; - let localVarHeaderParams: any = (Object).assign({}, this._defaultHeaders); + const localVarQueryParameters: any = {}; + const localVarHeaderParams: any = (Object as any).assign({}, this._defaultHeaders); const produces = ['application/json']; // give precedence to 'application/json' if (produces.indexOf('application/json') >= 0) { @@ -190,7 +189,7 @@ export class ArchivedWorkflowServiceApi { } else { localVarHeaderParams.Accept = produces.join(','); } - let localVarFormParams: any = {}; + const localVarFormParams: any = {}; // verify required parameter 'uid' is not null or undefined if (uid === null || uid === undefined) { @@ -198,18 +197,18 @@ export class ArchivedWorkflowServiceApi { } if (namespace !== undefined) { - localVarQueryParameters['namespace'] = ObjectSerializer.serialize(namespace, "string"); + localVarQueryParameters.namespace = ObjectSerializer.serialize(namespace, "string"); } if (name !== undefined) { - localVarQueryParameters['name'] = ObjectSerializer.serialize(name, "string"); + localVarQueryParameters.name = ObjectSerializer.serialize(name, "string"); } - (Object).assign(localVarHeaderParams, options.headers); + (Object as any).assign(localVarHeaderParams, options.headers); - let localVarUseFormData = false; + const localVarUseFormData = false; - let localVarRequestOptions: localVarRequest.Options = { + const localVarRequestOptions: localVarRequest.Options = { method: 'GET', qs: localVarQueryParameters, headers: localVarHeaderParams, @@ -232,7 +231,7 @@ export class ArchivedWorkflowServiceApi { return interceptorPromise.then(() => { if (Object.keys(localVarFormParams).length) { if (localVarUseFormData) { - (localVarRequestOptions).formData = localVarFormParams; + (localVarRequestOptions as any).formData = localVarFormParams; } else { localVarRequestOptions.form = localVarFormParams; } @@ -258,9 +257,9 @@ export class ArchivedWorkflowServiceApi { * @param namespace */ public async archivedWorkflowServiceListArchivedWorkflowLabelKeys (namespace?: string, options: {headers: {[name: string]: string}} = {headers: {}}) : Promise<{ response: http.IncomingMessage; body: IoArgoprojWorkflowV1alpha1LabelKeys; }> { - const localVarPath = this.basePath + '/api/v1/archived-workflows-label-keys'; - let localVarQueryParameters: any = {}; - let localVarHeaderParams: any = (Object).assign({}, this._defaultHeaders); + const localVarPath = `${this.basePath }/api/v1/archived-workflows-label-keys`; + const localVarQueryParameters: any = {}; + const localVarHeaderParams: any = (Object as any).assign({}, this._defaultHeaders); const produces = ['application/json']; // give precedence to 'application/json' if (produces.indexOf('application/json') >= 0) { @@ -268,17 +267,17 @@ export class ArchivedWorkflowServiceApi { } else { localVarHeaderParams.Accept = produces.join(','); } - let localVarFormParams: any = {}; + const localVarFormParams: any = {}; if (namespace !== undefined) { - localVarQueryParameters['namespace'] = ObjectSerializer.serialize(namespace, "string"); + localVarQueryParameters.namespace = ObjectSerializer.serialize(namespace, "string"); } - (Object).assign(localVarHeaderParams, options.headers); + (Object as any).assign(localVarHeaderParams, options.headers); - let localVarUseFormData = false; + const localVarUseFormData = false; - let localVarRequestOptions: localVarRequest.Options = { + const localVarRequestOptions: localVarRequest.Options = { method: 'GET', qs: localVarQueryParameters, headers: localVarHeaderParams, @@ -301,7 +300,7 @@ export class ArchivedWorkflowServiceApi { return interceptorPromise.then(() => { if (Object.keys(localVarFormParams).length) { if (localVarUseFormData) { - (localVarRequestOptions).formData = localVarFormParams; + (localVarRequestOptions as any).formData = localVarFormParams; } else { localVarRequestOptions.form = localVarFormParams; } @@ -336,9 +335,9 @@ export class ArchivedWorkflowServiceApi { * @param namespace */ public async archivedWorkflowServiceListArchivedWorkflowLabelValues (listOptionsLabelSelector?: string, listOptionsFieldSelector?: string, listOptionsWatch?: boolean, listOptionsAllowWatchBookmarks?: boolean, listOptionsResourceVersion?: string, listOptionsResourceVersionMatch?: string, listOptionsTimeoutSeconds?: string, listOptionsLimit?: string, listOptionsContinue?: string, namespace?: string, options: {headers: {[name: string]: string}} = {headers: {}}) : Promise<{ response: http.IncomingMessage; body: IoArgoprojWorkflowV1alpha1LabelValues; }> { - const localVarPath = this.basePath + '/api/v1/archived-workflows-label-values'; - let localVarQueryParameters: any = {}; - let localVarHeaderParams: any = (Object).assign({}, this._defaultHeaders); + const localVarPath = `${this.basePath }/api/v1/archived-workflows-label-values`; + const localVarQueryParameters: any = {}; + const localVarHeaderParams: any = (Object as any).assign({}, this._defaultHeaders); const produces = ['application/json']; // give precedence to 'application/json' if (produces.indexOf('application/json') >= 0) { @@ -346,7 +345,7 @@ export class ArchivedWorkflowServiceApi { } else { localVarHeaderParams.Accept = produces.join(','); } - let localVarFormParams: any = {}; + const localVarFormParams: any = {}; if (listOptionsLabelSelector !== undefined) { localVarQueryParameters['listOptions.labelSelector'] = ObjectSerializer.serialize(listOptionsLabelSelector, "string"); @@ -385,14 +384,14 @@ export class ArchivedWorkflowServiceApi { } if (namespace !== undefined) { - localVarQueryParameters['namespace'] = ObjectSerializer.serialize(namespace, "string"); + localVarQueryParameters.namespace = ObjectSerializer.serialize(namespace, "string"); } - (Object).assign(localVarHeaderParams, options.headers); + (Object as any).assign(localVarHeaderParams, options.headers); - let localVarUseFormData = false; + const localVarUseFormData = false; - let localVarRequestOptions: localVarRequest.Options = { + const localVarRequestOptions: localVarRequest.Options = { method: 'GET', qs: localVarQueryParameters, headers: localVarHeaderParams, @@ -415,7 +414,7 @@ export class ArchivedWorkflowServiceApi { return interceptorPromise.then(() => { if (Object.keys(localVarFormParams).length) { if (localVarUseFormData) { - (localVarRequestOptions).formData = localVarFormParams; + (localVarRequestOptions as any).formData = localVarFormParams; } else { localVarRequestOptions.form = localVarFormParams; } @@ -451,9 +450,9 @@ export class ArchivedWorkflowServiceApi { * @param namespace */ public async archivedWorkflowServiceListArchivedWorkflows (listOptionsLabelSelector?: string, listOptionsFieldSelector?: string, listOptionsWatch?: boolean, listOptionsAllowWatchBookmarks?: boolean, listOptionsResourceVersion?: string, listOptionsResourceVersionMatch?: string, listOptionsTimeoutSeconds?: string, listOptionsLimit?: string, listOptionsContinue?: string, namePrefix?: string, namespace?: string, options: {headers: {[name: string]: string}} = {headers: {}}) : Promise<{ response: http.IncomingMessage; body: IoArgoprojWorkflowV1alpha1WorkflowList; }> { - const localVarPath = this.basePath + '/api/v1/archived-workflows'; - let localVarQueryParameters: any = {}; - let localVarHeaderParams: any = (Object).assign({}, this._defaultHeaders); + const localVarPath = `${this.basePath }/api/v1/archived-workflows`; + const localVarQueryParameters: any = {}; + const localVarHeaderParams: any = (Object as any).assign({}, this._defaultHeaders); const produces = ['application/json']; // give precedence to 'application/json' if (produces.indexOf('application/json') >= 0) { @@ -461,7 +460,7 @@ export class ArchivedWorkflowServiceApi { } else { localVarHeaderParams.Accept = produces.join(','); } - let localVarFormParams: any = {}; + const localVarFormParams: any = {}; if (listOptionsLabelSelector !== undefined) { localVarQueryParameters['listOptions.labelSelector'] = ObjectSerializer.serialize(listOptionsLabelSelector, "string"); @@ -500,18 +499,18 @@ export class ArchivedWorkflowServiceApi { } if (namePrefix !== undefined) { - localVarQueryParameters['namePrefix'] = ObjectSerializer.serialize(namePrefix, "string"); + localVarQueryParameters.namePrefix = ObjectSerializer.serialize(namePrefix, "string"); } if (namespace !== undefined) { - localVarQueryParameters['namespace'] = ObjectSerializer.serialize(namespace, "string"); + localVarQueryParameters.namespace = ObjectSerializer.serialize(namespace, "string"); } - (Object).assign(localVarHeaderParams, options.headers); + (Object as any).assign(localVarHeaderParams, options.headers); - let localVarUseFormData = false; + const localVarUseFormData = false; - let localVarRequestOptions: localVarRequest.Options = { + const localVarRequestOptions: localVarRequest.Options = { method: 'GET', qs: localVarQueryParameters, headers: localVarHeaderParams, @@ -534,7 +533,7 @@ export class ArchivedWorkflowServiceApi { return interceptorPromise.then(() => { if (Object.keys(localVarFormParams).length) { if (localVarUseFormData) { - (localVarRequestOptions).formData = localVarFormParams; + (localVarRequestOptions as any).formData = localVarFormParams; } else { localVarRequestOptions.form = localVarFormParams; } @@ -563,8 +562,8 @@ export class ArchivedWorkflowServiceApi { public async archivedWorkflowServiceResubmitArchivedWorkflow (uid: string, body: IoArgoprojWorkflowV1alpha1ResubmitArchivedWorkflowRequest, options: {headers: {[name: string]: string}} = {headers: {}}) : Promise<{ response: http.IncomingMessage; body: IoArgoprojWorkflowV1alpha1Workflow; }> { const localVarPath = this.basePath + '/api/v1/archived-workflows/{uid}/resubmit' .replace('{' + 'uid' + '}', encodeURIComponent(String(uid))); - let localVarQueryParameters: any = {}; - let localVarHeaderParams: any = (Object).assign({}, this._defaultHeaders); + const localVarQueryParameters: any = {}; + const localVarHeaderParams: any = (Object as any).assign({}, this._defaultHeaders); const produces = ['application/json']; // give precedence to 'application/json' if (produces.indexOf('application/json') >= 0) { @@ -572,7 +571,7 @@ export class ArchivedWorkflowServiceApi { } else { localVarHeaderParams.Accept = produces.join(','); } - let localVarFormParams: any = {}; + const localVarFormParams: any = {}; // verify required parameter 'uid' is not null or undefined if (uid === null || uid === undefined) { @@ -584,11 +583,11 @@ export class ArchivedWorkflowServiceApi { throw new Error('Required parameter body was null or undefined when calling archivedWorkflowServiceResubmitArchivedWorkflow.'); } - (Object).assign(localVarHeaderParams, options.headers); + (Object as any).assign(localVarHeaderParams, options.headers); - let localVarUseFormData = false; + const localVarUseFormData = false; - let localVarRequestOptions: localVarRequest.Options = { + const localVarRequestOptions: localVarRequest.Options = { method: 'PUT', qs: localVarQueryParameters, headers: localVarHeaderParams, @@ -612,7 +611,7 @@ export class ArchivedWorkflowServiceApi { return interceptorPromise.then(() => { if (Object.keys(localVarFormParams).length) { if (localVarUseFormData) { - (localVarRequestOptions).formData = localVarFormParams; + (localVarRequestOptions as any).formData = localVarFormParams; } else { localVarRequestOptions.form = localVarFormParams; } @@ -641,8 +640,8 @@ export class ArchivedWorkflowServiceApi { public async archivedWorkflowServiceRetryArchivedWorkflow (uid: string, body: IoArgoprojWorkflowV1alpha1RetryArchivedWorkflowRequest, options: {headers: {[name: string]: string}} = {headers: {}}) : Promise<{ response: http.IncomingMessage; body: IoArgoprojWorkflowV1alpha1Workflow; }> { const localVarPath = this.basePath + '/api/v1/archived-workflows/{uid}/retry' .replace('{' + 'uid' + '}', encodeURIComponent(String(uid))); - let localVarQueryParameters: any = {}; - let localVarHeaderParams: any = (Object).assign({}, this._defaultHeaders); + const localVarQueryParameters: any = {}; + const localVarHeaderParams: any = (Object as any).assign({}, this._defaultHeaders); const produces = ['application/json']; // give precedence to 'application/json' if (produces.indexOf('application/json') >= 0) { @@ -650,7 +649,7 @@ export class ArchivedWorkflowServiceApi { } else { localVarHeaderParams.Accept = produces.join(','); } - let localVarFormParams: any = {}; + const localVarFormParams: any = {}; // verify required parameter 'uid' is not null or undefined if (uid === null || uid === undefined) { @@ -662,11 +661,11 @@ export class ArchivedWorkflowServiceApi { throw new Error('Required parameter body was null or undefined when calling archivedWorkflowServiceRetryArchivedWorkflow.'); } - (Object).assign(localVarHeaderParams, options.headers); + (Object as any).assign(localVarHeaderParams, options.headers); - let localVarUseFormData = false; + const localVarUseFormData = false; - let localVarRequestOptions: localVarRequest.Options = { + const localVarRequestOptions: localVarRequest.Options = { method: 'PUT', qs: localVarQueryParameters, headers: localVarHeaderParams, @@ -690,7 +689,7 @@ export class ArchivedWorkflowServiceApi { return interceptorPromise.then(() => { if (Object.keys(localVarFormParams).length) { if (localVarUseFormData) { - (localVarRequestOptions).formData = localVarFormParams; + (localVarRequestOptions as any).formData = localVarFormParams; } else { localVarRequestOptions.form = localVarFormParams; } diff --git a/plugins/argo-workflows/src/api/generated/api/artifactServiceApi.ts b/plugins/argo-workflows/src/api/generated/api/artifactServiceApi.ts index 542938d..1891454 100644 --- a/plugins/argo-workflows/src/api/generated/api/artifactServiceApi.ts +++ b/plugins/argo-workflows/src/api/generated/api/artifactServiceApi.ts @@ -16,14 +16,13 @@ import localVarRequest from 'request'; import http from 'http'; /* tslint:disable:no-unused-locals */ -import { GrpcGatewayRuntimeError } from '../model/grpcGatewayRuntimeError'; import { ObjectSerializer, Authentication, VoidAuth, Interceptor } from '../model/models'; -import { HttpBasicAuth, HttpBearerAuth, ApiKeyAuth, OAuth } from '../model/models'; +import { ApiKeyAuth } from '../model/models'; -import { HttpError, RequestFile } from './apis'; +import { HttpError } from './apis'; -let defaultBasePath = 'http://localhost:2746'; +const defaultBasePath = 'http://localhost:2746'; // =============================================== // This file is autogenerated - Please do not edit @@ -39,7 +38,7 @@ export class ArtifactServiceApi { protected _useQuerystring : boolean = false; protected authentications = { - 'default': new VoidAuth(), + 'default': new VoidAuth() as Authentication, 'BearerToken': new ApiKeyAuth('header', 'Authorization'), } @@ -108,8 +107,8 @@ export class ArtifactServiceApi { .replace('{' + 'nodeId' + '}', encodeURIComponent(String(nodeId))) .replace('{' + 'artifactName' + '}', encodeURIComponent(String(artifactName))) .replace('{' + 'artifactDiscriminator' + '}', encodeURIComponent(String(artifactDiscriminator))); - let localVarQueryParameters: any = {}; - let localVarHeaderParams: any = (Object).assign({}, this._defaultHeaders); + const localVarQueryParameters: any = {}; + const localVarHeaderParams: any = (Object as any).assign({}, this._defaultHeaders); const produces = ['application/json']; // give precedence to 'application/json' if (produces.indexOf('application/json') >= 0) { @@ -117,7 +116,7 @@ export class ArtifactServiceApi { } else { localVarHeaderParams.Accept = produces.join(','); } - let localVarFormParams: any = {}; + const localVarFormParams: any = {}; // verify required parameter 'namespace' is not null or undefined if (namespace === null || namespace === undefined) { @@ -149,11 +148,11 @@ export class ArtifactServiceApi { throw new Error('Required parameter artifactDiscriminator was null or undefined when calling artifactServiceGetArtifactFile.'); } - (Object).assign(localVarHeaderParams, options.headers); + (Object as any).assign(localVarHeaderParams, options.headers); - let localVarUseFormData = false; + const localVarUseFormData = false; - let localVarRequestOptions: localVarRequest.Options = { + const localVarRequestOptions: localVarRequest.Options = { method: 'GET', qs: localVarQueryParameters, headers: localVarHeaderParams, @@ -176,7 +175,7 @@ export class ArtifactServiceApi { return interceptorPromise.then(() => { if (Object.keys(localVarFormParams).length) { if (localVarUseFormData) { - (localVarRequestOptions).formData = localVarFormParams; + (localVarRequestOptions as any).formData = localVarFormParams; } else { localVarRequestOptions.form = localVarFormParams; } @@ -211,8 +210,8 @@ export class ArtifactServiceApi { .replace('{' + 'name' + '}', encodeURIComponent(String(name))) .replace('{' + 'nodeId' + '}', encodeURIComponent(String(nodeId))) .replace('{' + 'artifactName' + '}', encodeURIComponent(String(artifactName))); - let localVarQueryParameters: any = {}; - let localVarHeaderParams: any = (Object).assign({}, this._defaultHeaders); + const localVarQueryParameters: any = {}; + const localVarHeaderParams: any = (Object as any).assign({}, this._defaultHeaders); const produces = ['application/json']; // give precedence to 'application/json' if (produces.indexOf('application/json') >= 0) { @@ -220,7 +219,7 @@ export class ArtifactServiceApi { } else { localVarHeaderParams.Accept = produces.join(','); } - let localVarFormParams: any = {}; + const localVarFormParams: any = {}; // verify required parameter 'namespace' is not null or undefined if (namespace === null || namespace === undefined) { @@ -242,11 +241,11 @@ export class ArtifactServiceApi { throw new Error('Required parameter artifactName was null or undefined when calling artifactServiceGetInputArtifact.'); } - (Object).assign(localVarHeaderParams, options.headers); + (Object as any).assign(localVarHeaderParams, options.headers); - let localVarUseFormData = false; + const localVarUseFormData = false; - let localVarRequestOptions: localVarRequest.Options = { + const localVarRequestOptions: localVarRequest.Options = { method: 'GET', qs: localVarQueryParameters, headers: localVarHeaderParams, @@ -269,7 +268,7 @@ export class ArtifactServiceApi { return interceptorPromise.then(() => { if (Object.keys(localVarFormParams).length) { if (localVarUseFormData) { - (localVarRequestOptions).formData = localVarFormParams; + (localVarRequestOptions as any).formData = localVarFormParams; } else { localVarRequestOptions.form = localVarFormParams; } @@ -302,8 +301,8 @@ export class ArtifactServiceApi { .replace('{' + 'uid' + '}', encodeURIComponent(String(uid))) .replace('{' + 'nodeId' + '}', encodeURIComponent(String(nodeId))) .replace('{' + 'artifactName' + '}', encodeURIComponent(String(artifactName))); - let localVarQueryParameters: any = {}; - let localVarHeaderParams: any = (Object).assign({}, this._defaultHeaders); + const localVarQueryParameters: any = {}; + const localVarHeaderParams: any = (Object as any).assign({}, this._defaultHeaders); const produces = ['application/json']; // give precedence to 'application/json' if (produces.indexOf('application/json') >= 0) { @@ -311,7 +310,7 @@ export class ArtifactServiceApi { } else { localVarHeaderParams.Accept = produces.join(','); } - let localVarFormParams: any = {}; + const localVarFormParams: any = {}; // verify required parameter 'uid' is not null or undefined if (uid === null || uid === undefined) { @@ -328,11 +327,11 @@ export class ArtifactServiceApi { throw new Error('Required parameter artifactName was null or undefined when calling artifactServiceGetInputArtifactByUID.'); } - (Object).assign(localVarHeaderParams, options.headers); + (Object as any).assign(localVarHeaderParams, options.headers); - let localVarUseFormData = false; + const localVarUseFormData = false; - let localVarRequestOptions: localVarRequest.Options = { + const localVarRequestOptions: localVarRequest.Options = { method: 'GET', qs: localVarQueryParameters, headers: localVarHeaderParams, @@ -355,7 +354,7 @@ export class ArtifactServiceApi { return interceptorPromise.then(() => { if (Object.keys(localVarFormParams).length) { if (localVarUseFormData) { - (localVarRequestOptions).formData = localVarFormParams; + (localVarRequestOptions as any).formData = localVarFormParams; } else { localVarRequestOptions.form = localVarFormParams; } @@ -390,8 +389,8 @@ export class ArtifactServiceApi { .replace('{' + 'name' + '}', encodeURIComponent(String(name))) .replace('{' + 'nodeId' + '}', encodeURIComponent(String(nodeId))) .replace('{' + 'artifactName' + '}', encodeURIComponent(String(artifactName))); - let localVarQueryParameters: any = {}; - let localVarHeaderParams: any = (Object).assign({}, this._defaultHeaders); + const localVarQueryParameters: any = {}; + const localVarHeaderParams: any = (Object as any).assign({}, this._defaultHeaders); const produces = ['application/json']; // give precedence to 'application/json' if (produces.indexOf('application/json') >= 0) { @@ -399,7 +398,7 @@ export class ArtifactServiceApi { } else { localVarHeaderParams.Accept = produces.join(','); } - let localVarFormParams: any = {}; + const localVarFormParams: any = {}; // verify required parameter 'namespace' is not null or undefined if (namespace === null || namespace === undefined) { @@ -421,11 +420,11 @@ export class ArtifactServiceApi { throw new Error('Required parameter artifactName was null or undefined when calling artifactServiceGetOutputArtifact.'); } - (Object).assign(localVarHeaderParams, options.headers); + (Object as any).assign(localVarHeaderParams, options.headers); - let localVarUseFormData = false; + const localVarUseFormData = false; - let localVarRequestOptions: localVarRequest.Options = { + const localVarRequestOptions: localVarRequest.Options = { method: 'GET', qs: localVarQueryParameters, headers: localVarHeaderParams, @@ -448,7 +447,7 @@ export class ArtifactServiceApi { return interceptorPromise.then(() => { if (Object.keys(localVarFormParams).length) { if (localVarUseFormData) { - (localVarRequestOptions).formData = localVarFormParams; + (localVarRequestOptions as any).formData = localVarFormParams; } else { localVarRequestOptions.form = localVarFormParams; } @@ -481,8 +480,8 @@ export class ArtifactServiceApi { .replace('{' + 'uid' + '}', encodeURIComponent(String(uid))) .replace('{' + 'nodeId' + '}', encodeURIComponent(String(nodeId))) .replace('{' + 'artifactName' + '}', encodeURIComponent(String(artifactName))); - let localVarQueryParameters: any = {}; - let localVarHeaderParams: any = (Object).assign({}, this._defaultHeaders); + const localVarQueryParameters: any = {}; + const localVarHeaderParams: any = (Object as any).assign({}, this._defaultHeaders); const produces = ['application/json']; // give precedence to 'application/json' if (produces.indexOf('application/json') >= 0) { @@ -490,7 +489,7 @@ export class ArtifactServiceApi { } else { localVarHeaderParams.Accept = produces.join(','); } - let localVarFormParams: any = {}; + const localVarFormParams: any = {}; // verify required parameter 'uid' is not null or undefined if (uid === null || uid === undefined) { @@ -507,11 +506,11 @@ export class ArtifactServiceApi { throw new Error('Required parameter artifactName was null or undefined when calling artifactServiceGetOutputArtifactByUID.'); } - (Object).assign(localVarHeaderParams, options.headers); + (Object as any).assign(localVarHeaderParams, options.headers); - let localVarUseFormData = false; + const localVarUseFormData = false; - let localVarRequestOptions: localVarRequest.Options = { + const localVarRequestOptions: localVarRequest.Options = { method: 'GET', qs: localVarQueryParameters, headers: localVarHeaderParams, @@ -534,7 +533,7 @@ export class ArtifactServiceApi { return interceptorPromise.then(() => { if (Object.keys(localVarFormParams).length) { if (localVarUseFormData) { - (localVarRequestOptions).formData = localVarFormParams; + (localVarRequestOptions as any).formData = localVarFormParams; } else { localVarRequestOptions.form = localVarFormParams; } diff --git a/plugins/argo-workflows/src/api/generated/api/clusterWorkflowTemplateServiceApi.ts b/plugins/argo-workflows/src/api/generated/api/clusterWorkflowTemplateServiceApi.ts index 9fbb932..4d47a2e 100644 --- a/plugins/argo-workflows/src/api/generated/api/clusterWorkflowTemplateServiceApi.ts +++ b/plugins/argo-workflows/src/api/generated/api/clusterWorkflowTemplateServiceApi.ts @@ -16,7 +16,6 @@ import localVarRequest from 'request'; import http from 'http'; /* tslint:disable:no-unused-locals */ -import { GrpcGatewayRuntimeError } from '../model/grpcGatewayRuntimeError'; import { IoArgoprojWorkflowV1alpha1ClusterWorkflowTemplate } from '../model/ioArgoprojWorkflowV1alpha1ClusterWorkflowTemplate'; import { IoArgoprojWorkflowV1alpha1ClusterWorkflowTemplateCreateRequest } from '../model/ioArgoprojWorkflowV1alpha1ClusterWorkflowTemplateCreateRequest'; import { IoArgoprojWorkflowV1alpha1ClusterWorkflowTemplateLintRequest } from '../model/ioArgoprojWorkflowV1alpha1ClusterWorkflowTemplateLintRequest'; @@ -24,11 +23,11 @@ import { IoArgoprojWorkflowV1alpha1ClusterWorkflowTemplateList } from '../model/ import { IoArgoprojWorkflowV1alpha1ClusterWorkflowTemplateUpdateRequest } from '../model/ioArgoprojWorkflowV1alpha1ClusterWorkflowTemplateUpdateRequest'; import { ObjectSerializer, Authentication, VoidAuth, Interceptor } from '../model/models'; -import { HttpBasicAuth, HttpBearerAuth, ApiKeyAuth, OAuth } from '../model/models'; +import { ApiKeyAuth } from '../model/models'; -import { HttpError, RequestFile } from './apis'; +import { HttpError } from './apis'; -let defaultBasePath = 'http://localhost:2746'; +const defaultBasePath = 'http://localhost:2746'; // =============================================== // This file is autogenerated - Please do not edit @@ -44,7 +43,7 @@ export class ClusterWorkflowTemplateServiceApi { protected _useQuerystring : boolean = false; protected authentications = { - 'default': new VoidAuth(), + 'default': new VoidAuth() as Authentication, 'BearerToken': new ApiKeyAuth('header', 'Authorization'), } @@ -100,9 +99,9 @@ export class ClusterWorkflowTemplateServiceApi { * @param body */ public async clusterWorkflowTemplateServiceCreateClusterWorkflowTemplate (body: IoArgoprojWorkflowV1alpha1ClusterWorkflowTemplateCreateRequest, options: {headers: {[name: string]: string}} = {headers: {}}) : Promise<{ response: http.IncomingMessage; body: IoArgoprojWorkflowV1alpha1ClusterWorkflowTemplate; }> { - const localVarPath = this.basePath + '/api/v1/cluster-workflow-templates'; - let localVarQueryParameters: any = {}; - let localVarHeaderParams: any = (Object).assign({}, this._defaultHeaders); + const localVarPath = `${this.basePath }/api/v1/cluster-workflow-templates`; + const localVarQueryParameters: any = {}; + const localVarHeaderParams: any = (Object as any).assign({}, this._defaultHeaders); const produces = ['application/json']; // give precedence to 'application/json' if (produces.indexOf('application/json') >= 0) { @@ -110,18 +109,18 @@ export class ClusterWorkflowTemplateServiceApi { } else { localVarHeaderParams.Accept = produces.join(','); } - let localVarFormParams: any = {}; + const localVarFormParams: any = {}; // verify required parameter 'body' is not null or undefined if (body === null || body === undefined) { throw new Error('Required parameter body was null or undefined when calling clusterWorkflowTemplateServiceCreateClusterWorkflowTemplate.'); } - (Object).assign(localVarHeaderParams, options.headers); + (Object as any).assign(localVarHeaderParams, options.headers); - let localVarUseFormData = false; + const localVarUseFormData = false; - let localVarRequestOptions: localVarRequest.Options = { + const localVarRequestOptions: localVarRequest.Options = { method: 'POST', qs: localVarQueryParameters, headers: localVarHeaderParams, @@ -145,7 +144,7 @@ export class ClusterWorkflowTemplateServiceApi { return interceptorPromise.then(() => { if (Object.keys(localVarFormParams).length) { if (localVarUseFormData) { - (localVarRequestOptions).formData = localVarFormParams; + (localVarRequestOptions as any).formData = localVarFormParams; } else { localVarRequestOptions.form = localVarFormParams; } @@ -179,8 +178,8 @@ export class ClusterWorkflowTemplateServiceApi { public async clusterWorkflowTemplateServiceDeleteClusterWorkflowTemplate (name: string, deleteOptionsGracePeriodSeconds?: string, deleteOptionsPreconditionsUid?: string, deleteOptionsPreconditionsResourceVersion?: string, deleteOptionsOrphanDependents?: boolean, deleteOptionsPropagationPolicy?: string, deleteOptionsDryRun?: Array, options: {headers: {[name: string]: string}} = {headers: {}}) : Promise<{ response: http.IncomingMessage; body: object; }> { const localVarPath = this.basePath + '/api/v1/cluster-workflow-templates/{name}' .replace('{' + 'name' + '}', encodeURIComponent(String(name))); - let localVarQueryParameters: any = {}; - let localVarHeaderParams: any = (Object).assign({}, this._defaultHeaders); + const localVarQueryParameters: any = {}; + const localVarHeaderParams: any = (Object as any).assign({}, this._defaultHeaders); const produces = ['application/json']; // give precedence to 'application/json' if (produces.indexOf('application/json') >= 0) { @@ -188,7 +187,7 @@ export class ClusterWorkflowTemplateServiceApi { } else { localVarHeaderParams.Accept = produces.join(','); } - let localVarFormParams: any = {}; + const localVarFormParams: any = {}; // verify required parameter 'name' is not null or undefined if (name === null || name === undefined) { @@ -219,11 +218,11 @@ export class ClusterWorkflowTemplateServiceApi { localVarQueryParameters['deleteOptions.dryRun'] = ObjectSerializer.serialize(deleteOptionsDryRun, "Array"); } - (Object).assign(localVarHeaderParams, options.headers); + (Object as any).assign(localVarHeaderParams, options.headers); - let localVarUseFormData = false; + const localVarUseFormData = false; - let localVarRequestOptions: localVarRequest.Options = { + const localVarRequestOptions: localVarRequest.Options = { method: 'DELETE', qs: localVarQueryParameters, headers: localVarHeaderParams, @@ -246,7 +245,7 @@ export class ClusterWorkflowTemplateServiceApi { return interceptorPromise.then(() => { if (Object.keys(localVarFormParams).length) { if (localVarUseFormData) { - (localVarRequestOptions).formData = localVarFormParams; + (localVarRequestOptions as any).formData = localVarFormParams; } else { localVarRequestOptions.form = localVarFormParams; } @@ -275,8 +274,8 @@ export class ClusterWorkflowTemplateServiceApi { public async clusterWorkflowTemplateServiceGetClusterWorkflowTemplate (name: string, getOptionsResourceVersion?: string, options: {headers: {[name: string]: string}} = {headers: {}}) : Promise<{ response: http.IncomingMessage; body: IoArgoprojWorkflowV1alpha1ClusterWorkflowTemplate; }> { const localVarPath = this.basePath + '/api/v1/cluster-workflow-templates/{name}' .replace('{' + 'name' + '}', encodeURIComponent(String(name))); - let localVarQueryParameters: any = {}; - let localVarHeaderParams: any = (Object).assign({}, this._defaultHeaders); + const localVarQueryParameters: any = {}; + const localVarHeaderParams: any = (Object as any).assign({}, this._defaultHeaders); const produces = ['application/json']; // give precedence to 'application/json' if (produces.indexOf('application/json') >= 0) { @@ -284,7 +283,7 @@ export class ClusterWorkflowTemplateServiceApi { } else { localVarHeaderParams.Accept = produces.join(','); } - let localVarFormParams: any = {}; + const localVarFormParams: any = {}; // verify required parameter 'name' is not null or undefined if (name === null || name === undefined) { @@ -295,11 +294,11 @@ export class ClusterWorkflowTemplateServiceApi { localVarQueryParameters['getOptions.resourceVersion'] = ObjectSerializer.serialize(getOptionsResourceVersion, "string"); } - (Object).assign(localVarHeaderParams, options.headers); + (Object as any).assign(localVarHeaderParams, options.headers); - let localVarUseFormData = false; + const localVarUseFormData = false; - let localVarRequestOptions: localVarRequest.Options = { + const localVarRequestOptions: localVarRequest.Options = { method: 'GET', qs: localVarQueryParameters, headers: localVarHeaderParams, @@ -322,7 +321,7 @@ export class ClusterWorkflowTemplateServiceApi { return interceptorPromise.then(() => { if (Object.keys(localVarFormParams).length) { if (localVarUseFormData) { - (localVarRequestOptions).formData = localVarFormParams; + (localVarRequestOptions as any).formData = localVarFormParams; } else { localVarRequestOptions.form = localVarFormParams; } @@ -348,9 +347,9 @@ export class ClusterWorkflowTemplateServiceApi { * @param body */ public async clusterWorkflowTemplateServiceLintClusterWorkflowTemplate (body: IoArgoprojWorkflowV1alpha1ClusterWorkflowTemplateLintRequest, options: {headers: {[name: string]: string}} = {headers: {}}) : Promise<{ response: http.IncomingMessage; body: IoArgoprojWorkflowV1alpha1ClusterWorkflowTemplate; }> { - const localVarPath = this.basePath + '/api/v1/cluster-workflow-templates/lint'; - let localVarQueryParameters: any = {}; - let localVarHeaderParams: any = (Object).assign({}, this._defaultHeaders); + const localVarPath = `${this.basePath }/api/v1/cluster-workflow-templates/lint`; + const localVarQueryParameters: any = {}; + const localVarHeaderParams: any = (Object as any).assign({}, this._defaultHeaders); const produces = ['application/json']; // give precedence to 'application/json' if (produces.indexOf('application/json') >= 0) { @@ -358,18 +357,18 @@ export class ClusterWorkflowTemplateServiceApi { } else { localVarHeaderParams.Accept = produces.join(','); } - let localVarFormParams: any = {}; + const localVarFormParams: any = {}; // verify required parameter 'body' is not null or undefined if (body === null || body === undefined) { throw new Error('Required parameter body was null or undefined when calling clusterWorkflowTemplateServiceLintClusterWorkflowTemplate.'); } - (Object).assign(localVarHeaderParams, options.headers); + (Object as any).assign(localVarHeaderParams, options.headers); - let localVarUseFormData = false; + const localVarUseFormData = false; - let localVarRequestOptions: localVarRequest.Options = { + const localVarRequestOptions: localVarRequest.Options = { method: 'POST', qs: localVarQueryParameters, headers: localVarHeaderParams, @@ -393,7 +392,7 @@ export class ClusterWorkflowTemplateServiceApi { return interceptorPromise.then(() => { if (Object.keys(localVarFormParams).length) { if (localVarUseFormData) { - (localVarRequestOptions).formData = localVarFormParams; + (localVarRequestOptions as any).formData = localVarFormParams; } else { localVarRequestOptions.form = localVarFormParams; } @@ -427,9 +426,9 @@ export class ClusterWorkflowTemplateServiceApi { * @param listOptionsContinue The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. */ public async clusterWorkflowTemplateServiceListClusterWorkflowTemplates (listOptionsLabelSelector?: string, listOptionsFieldSelector?: string, listOptionsWatch?: boolean, listOptionsAllowWatchBookmarks?: boolean, listOptionsResourceVersion?: string, listOptionsResourceVersionMatch?: string, listOptionsTimeoutSeconds?: string, listOptionsLimit?: string, listOptionsContinue?: string, options: {headers: {[name: string]: string}} = {headers: {}}) : Promise<{ response: http.IncomingMessage; body: IoArgoprojWorkflowV1alpha1ClusterWorkflowTemplateList; }> { - const localVarPath = this.basePath + '/api/v1/cluster-workflow-templates'; - let localVarQueryParameters: any = {}; - let localVarHeaderParams: any = (Object).assign({}, this._defaultHeaders); + const localVarPath = `${this.basePath }/api/v1/cluster-workflow-templates`; + const localVarQueryParameters: any = {}; + const localVarHeaderParams: any = (Object as any).assign({}, this._defaultHeaders); const produces = ['application/json']; // give precedence to 'application/json' if (produces.indexOf('application/json') >= 0) { @@ -437,7 +436,7 @@ export class ClusterWorkflowTemplateServiceApi { } else { localVarHeaderParams.Accept = produces.join(','); } - let localVarFormParams: any = {}; + const localVarFormParams: any = {}; if (listOptionsLabelSelector !== undefined) { localVarQueryParameters['listOptions.labelSelector'] = ObjectSerializer.serialize(listOptionsLabelSelector, "string"); @@ -475,11 +474,11 @@ export class ClusterWorkflowTemplateServiceApi { localVarQueryParameters['listOptions.continue'] = ObjectSerializer.serialize(listOptionsContinue, "string"); } - (Object).assign(localVarHeaderParams, options.headers); + (Object as any).assign(localVarHeaderParams, options.headers); - let localVarUseFormData = false; + const localVarUseFormData = false; - let localVarRequestOptions: localVarRequest.Options = { + const localVarRequestOptions: localVarRequest.Options = { method: 'GET', qs: localVarQueryParameters, headers: localVarHeaderParams, @@ -502,7 +501,7 @@ export class ClusterWorkflowTemplateServiceApi { return interceptorPromise.then(() => { if (Object.keys(localVarFormParams).length) { if (localVarUseFormData) { - (localVarRequestOptions).formData = localVarFormParams; + (localVarRequestOptions as any).formData = localVarFormParams; } else { localVarRequestOptions.form = localVarFormParams; } @@ -531,8 +530,8 @@ export class ClusterWorkflowTemplateServiceApi { public async clusterWorkflowTemplateServiceUpdateClusterWorkflowTemplate (name: string, body: IoArgoprojWorkflowV1alpha1ClusterWorkflowTemplateUpdateRequest, options: {headers: {[name: string]: string}} = {headers: {}}) : Promise<{ response: http.IncomingMessage; body: IoArgoprojWorkflowV1alpha1ClusterWorkflowTemplate; }> { const localVarPath = this.basePath + '/api/v1/cluster-workflow-templates/{name}' .replace('{' + 'name' + '}', encodeURIComponent(String(name))); - let localVarQueryParameters: any = {}; - let localVarHeaderParams: any = (Object).assign({}, this._defaultHeaders); + const localVarQueryParameters: any = {}; + const localVarHeaderParams: any = (Object as any).assign({}, this._defaultHeaders); const produces = ['application/json']; // give precedence to 'application/json' if (produces.indexOf('application/json') >= 0) { @@ -540,7 +539,7 @@ export class ClusterWorkflowTemplateServiceApi { } else { localVarHeaderParams.Accept = produces.join(','); } - let localVarFormParams: any = {}; + const localVarFormParams: any = {}; // verify required parameter 'name' is not null or undefined if (name === null || name === undefined) { @@ -552,11 +551,11 @@ export class ClusterWorkflowTemplateServiceApi { throw new Error('Required parameter body was null or undefined when calling clusterWorkflowTemplateServiceUpdateClusterWorkflowTemplate.'); } - (Object).assign(localVarHeaderParams, options.headers); + (Object as any).assign(localVarHeaderParams, options.headers); - let localVarUseFormData = false; + const localVarUseFormData = false; - let localVarRequestOptions: localVarRequest.Options = { + const localVarRequestOptions: localVarRequest.Options = { method: 'PUT', qs: localVarQueryParameters, headers: localVarHeaderParams, @@ -580,7 +579,7 @@ export class ClusterWorkflowTemplateServiceApi { return interceptorPromise.then(() => { if (Object.keys(localVarFormParams).length) { if (localVarUseFormData) { - (localVarRequestOptions).formData = localVarFormParams; + (localVarRequestOptions as any).formData = localVarFormParams; } else { localVarRequestOptions.form = localVarFormParams; } diff --git a/plugins/argo-workflows/src/api/generated/api/cronWorkflowServiceApi.ts b/plugins/argo-workflows/src/api/generated/api/cronWorkflowServiceApi.ts index 04a1337..ed7f00a 100644 --- a/plugins/argo-workflows/src/api/generated/api/cronWorkflowServiceApi.ts +++ b/plugins/argo-workflows/src/api/generated/api/cronWorkflowServiceApi.ts @@ -16,7 +16,6 @@ import localVarRequest from 'request'; import http from 'http'; /* tslint:disable:no-unused-locals */ -import { GrpcGatewayRuntimeError } from '../model/grpcGatewayRuntimeError'; import { IoArgoprojWorkflowV1alpha1CreateCronWorkflowRequest } from '../model/ioArgoprojWorkflowV1alpha1CreateCronWorkflowRequest'; import { IoArgoprojWorkflowV1alpha1CronWorkflow } from '../model/ioArgoprojWorkflowV1alpha1CronWorkflow'; import { IoArgoprojWorkflowV1alpha1CronWorkflowList } from '../model/ioArgoprojWorkflowV1alpha1CronWorkflowList'; @@ -26,11 +25,11 @@ import { IoArgoprojWorkflowV1alpha1LintCronWorkflowRequest } from '../model/ioAr import { IoArgoprojWorkflowV1alpha1UpdateCronWorkflowRequest } from '../model/ioArgoprojWorkflowV1alpha1UpdateCronWorkflowRequest'; import { ObjectSerializer, Authentication, VoidAuth, Interceptor } from '../model/models'; -import { HttpBasicAuth, HttpBearerAuth, ApiKeyAuth, OAuth } from '../model/models'; +import { ApiKeyAuth } from '../model/models'; -import { HttpError, RequestFile } from './apis'; +import { HttpError } from './apis'; -let defaultBasePath = 'http://localhost:2746'; +const defaultBasePath = 'http://localhost:2746'; // =============================================== // This file is autogenerated - Please do not edit @@ -46,7 +45,7 @@ export class CronWorkflowServiceApi { protected _useQuerystring : boolean = false; protected authentications = { - 'default': new VoidAuth(), + 'default': new VoidAuth() as Authentication, 'BearerToken': new ApiKeyAuth('header', 'Authorization'), } @@ -105,8 +104,8 @@ export class CronWorkflowServiceApi { public async cronWorkflowServiceCreateCronWorkflow (namespace: string, body: IoArgoprojWorkflowV1alpha1CreateCronWorkflowRequest, options: {headers: {[name: string]: string}} = {headers: {}}) : Promise<{ response: http.IncomingMessage; body: IoArgoprojWorkflowV1alpha1CronWorkflow; }> { const localVarPath = this.basePath + '/api/v1/cron-workflows/{namespace}' .replace('{' + 'namespace' + '}', encodeURIComponent(String(namespace))); - let localVarQueryParameters: any = {}; - let localVarHeaderParams: any = (Object).assign({}, this._defaultHeaders); + const localVarQueryParameters: any = {}; + const localVarHeaderParams: any = (Object as any).assign({}, this._defaultHeaders); const produces = ['application/json']; // give precedence to 'application/json' if (produces.indexOf('application/json') >= 0) { @@ -114,7 +113,7 @@ export class CronWorkflowServiceApi { } else { localVarHeaderParams.Accept = produces.join(','); } - let localVarFormParams: any = {}; + const localVarFormParams: any = {}; // verify required parameter 'namespace' is not null or undefined if (namespace === null || namespace === undefined) { @@ -126,11 +125,11 @@ export class CronWorkflowServiceApi { throw new Error('Required parameter body was null or undefined when calling cronWorkflowServiceCreateCronWorkflow.'); } - (Object).assign(localVarHeaderParams, options.headers); + (Object as any).assign(localVarHeaderParams, options.headers); - let localVarUseFormData = false; + const localVarUseFormData = false; - let localVarRequestOptions: localVarRequest.Options = { + const localVarRequestOptions: localVarRequest.Options = { method: 'POST', qs: localVarQueryParameters, headers: localVarHeaderParams, @@ -154,7 +153,7 @@ export class CronWorkflowServiceApi { return interceptorPromise.then(() => { if (Object.keys(localVarFormParams).length) { if (localVarUseFormData) { - (localVarRequestOptions).formData = localVarFormParams; + (localVarRequestOptions as any).formData = localVarFormParams; } else { localVarRequestOptions.form = localVarFormParams; } @@ -190,8 +189,8 @@ export class CronWorkflowServiceApi { const localVarPath = this.basePath + '/api/v1/cron-workflows/{namespace}/{name}' .replace('{' + 'namespace' + '}', encodeURIComponent(String(namespace))) .replace('{' + 'name' + '}', encodeURIComponent(String(name))); - let localVarQueryParameters: any = {}; - let localVarHeaderParams: any = (Object).assign({}, this._defaultHeaders); + const localVarQueryParameters: any = {}; + const localVarHeaderParams: any = (Object as any).assign({}, this._defaultHeaders); const produces = ['application/json']; // give precedence to 'application/json' if (produces.indexOf('application/json') >= 0) { @@ -199,7 +198,7 @@ export class CronWorkflowServiceApi { } else { localVarHeaderParams.Accept = produces.join(','); } - let localVarFormParams: any = {}; + const localVarFormParams: any = {}; // verify required parameter 'namespace' is not null or undefined if (namespace === null || namespace === undefined) { @@ -235,11 +234,11 @@ export class CronWorkflowServiceApi { localVarQueryParameters['deleteOptions.dryRun'] = ObjectSerializer.serialize(deleteOptionsDryRun, "Array"); } - (Object).assign(localVarHeaderParams, options.headers); + (Object as any).assign(localVarHeaderParams, options.headers); - let localVarUseFormData = false; + const localVarUseFormData = false; - let localVarRequestOptions: localVarRequest.Options = { + const localVarRequestOptions: localVarRequest.Options = { method: 'DELETE', qs: localVarQueryParameters, headers: localVarHeaderParams, @@ -262,7 +261,7 @@ export class CronWorkflowServiceApi { return interceptorPromise.then(() => { if (Object.keys(localVarFormParams).length) { if (localVarUseFormData) { - (localVarRequestOptions).formData = localVarFormParams; + (localVarRequestOptions as any).formData = localVarFormParams; } else { localVarRequestOptions.form = localVarFormParams; } @@ -293,8 +292,8 @@ export class CronWorkflowServiceApi { const localVarPath = this.basePath + '/api/v1/cron-workflows/{namespace}/{name}' .replace('{' + 'namespace' + '}', encodeURIComponent(String(namespace))) .replace('{' + 'name' + '}', encodeURIComponent(String(name))); - let localVarQueryParameters: any = {}; - let localVarHeaderParams: any = (Object).assign({}, this._defaultHeaders); + const localVarQueryParameters: any = {}; + const localVarHeaderParams: any = (Object as any).assign({}, this._defaultHeaders); const produces = ['application/json']; // give precedence to 'application/json' if (produces.indexOf('application/json') >= 0) { @@ -302,7 +301,7 @@ export class CronWorkflowServiceApi { } else { localVarHeaderParams.Accept = produces.join(','); } - let localVarFormParams: any = {}; + const localVarFormParams: any = {}; // verify required parameter 'namespace' is not null or undefined if (namespace === null || namespace === undefined) { @@ -318,11 +317,11 @@ export class CronWorkflowServiceApi { localVarQueryParameters['getOptions.resourceVersion'] = ObjectSerializer.serialize(getOptionsResourceVersion, "string"); } - (Object).assign(localVarHeaderParams, options.headers); + (Object as any).assign(localVarHeaderParams, options.headers); - let localVarUseFormData = false; + const localVarUseFormData = false; - let localVarRequestOptions: localVarRequest.Options = { + const localVarRequestOptions: localVarRequest.Options = { method: 'GET', qs: localVarQueryParameters, headers: localVarHeaderParams, @@ -345,7 +344,7 @@ export class CronWorkflowServiceApi { return interceptorPromise.then(() => { if (Object.keys(localVarFormParams).length) { if (localVarUseFormData) { - (localVarRequestOptions).formData = localVarFormParams; + (localVarRequestOptions as any).formData = localVarFormParams; } else { localVarRequestOptions.form = localVarFormParams; } @@ -374,8 +373,8 @@ export class CronWorkflowServiceApi { public async cronWorkflowServiceLintCronWorkflow (namespace: string, body: IoArgoprojWorkflowV1alpha1LintCronWorkflowRequest, options: {headers: {[name: string]: string}} = {headers: {}}) : Promise<{ response: http.IncomingMessage; body: IoArgoprojWorkflowV1alpha1CronWorkflow; }> { const localVarPath = this.basePath + '/api/v1/cron-workflows/{namespace}/lint' .replace('{' + 'namespace' + '}', encodeURIComponent(String(namespace))); - let localVarQueryParameters: any = {}; - let localVarHeaderParams: any = (Object).assign({}, this._defaultHeaders); + const localVarQueryParameters: any = {}; + const localVarHeaderParams: any = (Object as any).assign({}, this._defaultHeaders); const produces = ['application/json']; // give precedence to 'application/json' if (produces.indexOf('application/json') >= 0) { @@ -383,7 +382,7 @@ export class CronWorkflowServiceApi { } else { localVarHeaderParams.Accept = produces.join(','); } - let localVarFormParams: any = {}; + const localVarFormParams: any = {}; // verify required parameter 'namespace' is not null or undefined if (namespace === null || namespace === undefined) { @@ -395,11 +394,11 @@ export class CronWorkflowServiceApi { throw new Error('Required parameter body was null or undefined when calling cronWorkflowServiceLintCronWorkflow.'); } - (Object).assign(localVarHeaderParams, options.headers); + (Object as any).assign(localVarHeaderParams, options.headers); - let localVarUseFormData = false; + const localVarUseFormData = false; - let localVarRequestOptions: localVarRequest.Options = { + const localVarRequestOptions: localVarRequest.Options = { method: 'POST', qs: localVarQueryParameters, headers: localVarHeaderParams, @@ -423,7 +422,7 @@ export class CronWorkflowServiceApi { return interceptorPromise.then(() => { if (Object.keys(localVarFormParams).length) { if (localVarUseFormData) { - (localVarRequestOptions).formData = localVarFormParams; + (localVarRequestOptions as any).formData = localVarFormParams; } else { localVarRequestOptions.form = localVarFormParams; } @@ -460,8 +459,8 @@ export class CronWorkflowServiceApi { public async cronWorkflowServiceListCronWorkflows (namespace: string, listOptionsLabelSelector?: string, listOptionsFieldSelector?: string, listOptionsWatch?: boolean, listOptionsAllowWatchBookmarks?: boolean, listOptionsResourceVersion?: string, listOptionsResourceVersionMatch?: string, listOptionsTimeoutSeconds?: string, listOptionsLimit?: string, listOptionsContinue?: string, options: {headers: {[name: string]: string}} = {headers: {}}) : Promise<{ response: http.IncomingMessage; body: IoArgoprojWorkflowV1alpha1CronWorkflowList; }> { const localVarPath = this.basePath + '/api/v1/cron-workflows/{namespace}' .replace('{' + 'namespace' + '}', encodeURIComponent(String(namespace))); - let localVarQueryParameters: any = {}; - let localVarHeaderParams: any = (Object).assign({}, this._defaultHeaders); + const localVarQueryParameters: any = {}; + const localVarHeaderParams: any = (Object as any).assign({}, this._defaultHeaders); const produces = ['application/json']; // give precedence to 'application/json' if (produces.indexOf('application/json') >= 0) { @@ -469,7 +468,7 @@ export class CronWorkflowServiceApi { } else { localVarHeaderParams.Accept = produces.join(','); } - let localVarFormParams: any = {}; + const localVarFormParams: any = {}; // verify required parameter 'namespace' is not null or undefined if (namespace === null || namespace === undefined) { @@ -512,11 +511,11 @@ export class CronWorkflowServiceApi { localVarQueryParameters['listOptions.continue'] = ObjectSerializer.serialize(listOptionsContinue, "string"); } - (Object).assign(localVarHeaderParams, options.headers); + (Object as any).assign(localVarHeaderParams, options.headers); - let localVarUseFormData = false; + const localVarUseFormData = false; - let localVarRequestOptions: localVarRequest.Options = { + const localVarRequestOptions: localVarRequest.Options = { method: 'GET', qs: localVarQueryParameters, headers: localVarHeaderParams, @@ -539,7 +538,7 @@ export class CronWorkflowServiceApi { return interceptorPromise.then(() => { if (Object.keys(localVarFormParams).length) { if (localVarUseFormData) { - (localVarRequestOptions).formData = localVarFormParams; + (localVarRequestOptions as any).formData = localVarFormParams; } else { localVarRequestOptions.form = localVarFormParams; } @@ -570,8 +569,8 @@ export class CronWorkflowServiceApi { const localVarPath = this.basePath + '/api/v1/cron-workflows/{namespace}/{name}/resume' .replace('{' + 'namespace' + '}', encodeURIComponent(String(namespace))) .replace('{' + 'name' + '}', encodeURIComponent(String(name))); - let localVarQueryParameters: any = {}; - let localVarHeaderParams: any = (Object).assign({}, this._defaultHeaders); + const localVarQueryParameters: any = {}; + const localVarHeaderParams: any = (Object as any).assign({}, this._defaultHeaders); const produces = ['application/json']; // give precedence to 'application/json' if (produces.indexOf('application/json') >= 0) { @@ -579,7 +578,7 @@ export class CronWorkflowServiceApi { } else { localVarHeaderParams.Accept = produces.join(','); } - let localVarFormParams: any = {}; + const localVarFormParams: any = {}; // verify required parameter 'namespace' is not null or undefined if (namespace === null || namespace === undefined) { @@ -596,11 +595,11 @@ export class CronWorkflowServiceApi { throw new Error('Required parameter body was null or undefined when calling cronWorkflowServiceResumeCronWorkflow.'); } - (Object).assign(localVarHeaderParams, options.headers); + (Object as any).assign(localVarHeaderParams, options.headers); - let localVarUseFormData = false; + const localVarUseFormData = false; - let localVarRequestOptions: localVarRequest.Options = { + const localVarRequestOptions: localVarRequest.Options = { method: 'PUT', qs: localVarQueryParameters, headers: localVarHeaderParams, @@ -624,7 +623,7 @@ export class CronWorkflowServiceApi { return interceptorPromise.then(() => { if (Object.keys(localVarFormParams).length) { if (localVarUseFormData) { - (localVarRequestOptions).formData = localVarFormParams; + (localVarRequestOptions as any).formData = localVarFormParams; } else { localVarRequestOptions.form = localVarFormParams; } @@ -655,8 +654,8 @@ export class CronWorkflowServiceApi { const localVarPath = this.basePath + '/api/v1/cron-workflows/{namespace}/{name}/suspend' .replace('{' + 'namespace' + '}', encodeURIComponent(String(namespace))) .replace('{' + 'name' + '}', encodeURIComponent(String(name))); - let localVarQueryParameters: any = {}; - let localVarHeaderParams: any = (Object).assign({}, this._defaultHeaders); + const localVarQueryParameters: any = {}; + const localVarHeaderParams: any = (Object as any).assign({}, this._defaultHeaders); const produces = ['application/json']; // give precedence to 'application/json' if (produces.indexOf('application/json') >= 0) { @@ -664,7 +663,7 @@ export class CronWorkflowServiceApi { } else { localVarHeaderParams.Accept = produces.join(','); } - let localVarFormParams: any = {}; + const localVarFormParams: any = {}; // verify required parameter 'namespace' is not null or undefined if (namespace === null || namespace === undefined) { @@ -681,11 +680,11 @@ export class CronWorkflowServiceApi { throw new Error('Required parameter body was null or undefined when calling cronWorkflowServiceSuspendCronWorkflow.'); } - (Object).assign(localVarHeaderParams, options.headers); + (Object as any).assign(localVarHeaderParams, options.headers); - let localVarUseFormData = false; + const localVarUseFormData = false; - let localVarRequestOptions: localVarRequest.Options = { + const localVarRequestOptions: localVarRequest.Options = { method: 'PUT', qs: localVarQueryParameters, headers: localVarHeaderParams, @@ -709,7 +708,7 @@ export class CronWorkflowServiceApi { return interceptorPromise.then(() => { if (Object.keys(localVarFormParams).length) { if (localVarUseFormData) { - (localVarRequestOptions).formData = localVarFormParams; + (localVarRequestOptions as any).formData = localVarFormParams; } else { localVarRequestOptions.form = localVarFormParams; } @@ -740,8 +739,8 @@ export class CronWorkflowServiceApi { const localVarPath = this.basePath + '/api/v1/cron-workflows/{namespace}/{name}' .replace('{' + 'namespace' + '}', encodeURIComponent(String(namespace))) .replace('{' + 'name' + '}', encodeURIComponent(String(name))); - let localVarQueryParameters: any = {}; - let localVarHeaderParams: any = (Object).assign({}, this._defaultHeaders); + const localVarQueryParameters: any = {}; + const localVarHeaderParams: any = (Object as any).assign({}, this._defaultHeaders); const produces = ['application/json']; // give precedence to 'application/json' if (produces.indexOf('application/json') >= 0) { @@ -749,7 +748,7 @@ export class CronWorkflowServiceApi { } else { localVarHeaderParams.Accept = produces.join(','); } - let localVarFormParams: any = {}; + const localVarFormParams: any = {}; // verify required parameter 'namespace' is not null or undefined if (namespace === null || namespace === undefined) { @@ -766,11 +765,11 @@ export class CronWorkflowServiceApi { throw new Error('Required parameter body was null or undefined when calling cronWorkflowServiceUpdateCronWorkflow.'); } - (Object).assign(localVarHeaderParams, options.headers); + (Object as any).assign(localVarHeaderParams, options.headers); - let localVarUseFormData = false; + const localVarUseFormData = false; - let localVarRequestOptions: localVarRequest.Options = { + const localVarRequestOptions: localVarRequest.Options = { method: 'PUT', qs: localVarQueryParameters, headers: localVarHeaderParams, @@ -794,7 +793,7 @@ export class CronWorkflowServiceApi { return interceptorPromise.then(() => { if (Object.keys(localVarFormParams).length) { if (localVarUseFormData) { - (localVarRequestOptions).formData = localVarFormParams; + (localVarRequestOptions as any).formData = localVarFormParams; } else { localVarRequestOptions.form = localVarFormParams; } diff --git a/plugins/argo-workflows/src/api/generated/api/eventServiceApi.ts b/plugins/argo-workflows/src/api/generated/api/eventServiceApi.ts index 35f123c..67f7354 100644 --- a/plugins/argo-workflows/src/api/generated/api/eventServiceApi.ts +++ b/plugins/argo-workflows/src/api/generated/api/eventServiceApi.ts @@ -16,15 +16,14 @@ import localVarRequest from 'request'; import http from 'http'; /* tslint:disable:no-unused-locals */ -import { GrpcGatewayRuntimeError } from '../model/grpcGatewayRuntimeError'; import { IoArgoprojWorkflowV1alpha1WorkflowEventBindingList } from '../model/ioArgoprojWorkflowV1alpha1WorkflowEventBindingList'; import { ObjectSerializer, Authentication, VoidAuth, Interceptor } from '../model/models'; -import { HttpBasicAuth, HttpBearerAuth, ApiKeyAuth, OAuth } from '../model/models'; +import { ApiKeyAuth } from '../model/models'; -import { HttpError, RequestFile } from './apis'; +import { HttpError } from './apis'; -let defaultBasePath = 'http://localhost:2746'; +const defaultBasePath = 'http://localhost:2746'; // =============================================== // This file is autogenerated - Please do not edit @@ -40,7 +39,7 @@ export class EventServiceApi { protected _useQuerystring : boolean = false; protected authentications = { - 'default': new VoidAuth(), + 'default': new VoidAuth() as Authentication, 'BearerToken': new ApiKeyAuth('header', 'Authorization'), } @@ -107,8 +106,8 @@ export class EventServiceApi { public async eventServiceListWorkflowEventBindings (namespace: string, listOptionsLabelSelector?: string, listOptionsFieldSelector?: string, listOptionsWatch?: boolean, listOptionsAllowWatchBookmarks?: boolean, listOptionsResourceVersion?: string, listOptionsResourceVersionMatch?: string, listOptionsTimeoutSeconds?: string, listOptionsLimit?: string, listOptionsContinue?: string, options: {headers: {[name: string]: string}} = {headers: {}}) : Promise<{ response: http.IncomingMessage; body: IoArgoprojWorkflowV1alpha1WorkflowEventBindingList; }> { const localVarPath = this.basePath + '/api/v1/workflow-event-bindings/{namespace}' .replace('{' + 'namespace' + '}', encodeURIComponent(String(namespace))); - let localVarQueryParameters: any = {}; - let localVarHeaderParams: any = (Object).assign({}, this._defaultHeaders); + const localVarQueryParameters: any = {}; + const localVarHeaderParams: any = (Object as any).assign({}, this._defaultHeaders); const produces = ['application/json']; // give precedence to 'application/json' if (produces.indexOf('application/json') >= 0) { @@ -116,7 +115,7 @@ export class EventServiceApi { } else { localVarHeaderParams.Accept = produces.join(','); } - let localVarFormParams: any = {}; + const localVarFormParams: any = {}; // verify required parameter 'namespace' is not null or undefined if (namespace === null || namespace === undefined) { @@ -159,11 +158,11 @@ export class EventServiceApi { localVarQueryParameters['listOptions.continue'] = ObjectSerializer.serialize(listOptionsContinue, "string"); } - (Object).assign(localVarHeaderParams, options.headers); + (Object as any).assign(localVarHeaderParams, options.headers); - let localVarUseFormData = false; + const localVarUseFormData = false; - let localVarRequestOptions: localVarRequest.Options = { + const localVarRequestOptions: localVarRequest.Options = { method: 'GET', qs: localVarQueryParameters, headers: localVarHeaderParams, @@ -186,7 +185,7 @@ export class EventServiceApi { return interceptorPromise.then(() => { if (Object.keys(localVarFormParams).length) { if (localVarUseFormData) { - (localVarRequestOptions).formData = localVarFormParams; + (localVarRequestOptions as any).formData = localVarFormParams; } else { localVarRequestOptions.form = localVarFormParams; } @@ -217,8 +216,8 @@ export class EventServiceApi { const localVarPath = this.basePath + '/api/v1/events/{namespace}/{discriminator}' .replace('{' + 'namespace' + '}', encodeURIComponent(String(namespace))) .replace('{' + 'discriminator' + '}', encodeURIComponent(String(discriminator))); - let localVarQueryParameters: any = {}; - let localVarHeaderParams: any = (Object).assign({}, this._defaultHeaders); + const localVarQueryParameters: any = {}; + const localVarHeaderParams: any = (Object as any).assign({}, this._defaultHeaders); const produces = ['application/json']; // give precedence to 'application/json' if (produces.indexOf('application/json') >= 0) { @@ -226,7 +225,7 @@ export class EventServiceApi { } else { localVarHeaderParams.Accept = produces.join(','); } - let localVarFormParams: any = {}; + const localVarFormParams: any = {}; // verify required parameter 'namespace' is not null or undefined if (namespace === null || namespace === undefined) { @@ -243,11 +242,11 @@ export class EventServiceApi { throw new Error('Required parameter body was null or undefined when calling eventServiceReceiveEvent.'); } - (Object).assign(localVarHeaderParams, options.headers); + (Object as any).assign(localVarHeaderParams, options.headers); - let localVarUseFormData = false; + const localVarUseFormData = false; - let localVarRequestOptions: localVarRequest.Options = { + const localVarRequestOptions: localVarRequest.Options = { method: 'POST', qs: localVarQueryParameters, headers: localVarHeaderParams, @@ -271,7 +270,7 @@ export class EventServiceApi { return interceptorPromise.then(() => { if (Object.keys(localVarFormParams).length) { if (localVarUseFormData) { - (localVarRequestOptions).formData = localVarFormParams; + (localVarRequestOptions as any).formData = localVarFormParams; } else { localVarRequestOptions.form = localVarFormParams; } diff --git a/plugins/argo-workflows/src/api/generated/api/eventSourceServiceApi.ts b/plugins/argo-workflows/src/api/generated/api/eventSourceServiceApi.ts index b0526eb..44b0ce0 100644 --- a/plugins/argo-workflows/src/api/generated/api/eventSourceServiceApi.ts +++ b/plugins/argo-workflows/src/api/generated/api/eventSourceServiceApi.ts @@ -18,18 +18,17 @@ import http from 'http'; /* tslint:disable:no-unused-locals */ import { EventsourceCreateEventSourceRequest } from '../model/eventsourceCreateEventSourceRequest'; import { EventsourceUpdateEventSourceRequest } from '../model/eventsourceUpdateEventSourceRequest'; -import { GrpcGatewayRuntimeError } from '../model/grpcGatewayRuntimeError'; import { IoArgoprojEventsV1alpha1EventSource } from '../model/ioArgoprojEventsV1alpha1EventSource'; import { IoArgoprojEventsV1alpha1EventSourceList } from '../model/ioArgoprojEventsV1alpha1EventSourceList'; import { StreamResultOfEventsourceEventSourceWatchEvent } from '../model/streamResultOfEventsourceEventSourceWatchEvent'; import { StreamResultOfEventsourceLogEntry } from '../model/streamResultOfEventsourceLogEntry'; import { ObjectSerializer, Authentication, VoidAuth, Interceptor } from '../model/models'; -import { HttpBasicAuth, HttpBearerAuth, ApiKeyAuth, OAuth } from '../model/models'; +import { ApiKeyAuth } from '../model/models'; -import { HttpError, RequestFile } from './apis'; +import { HttpError } from './apis'; -let defaultBasePath = 'http://localhost:2746'; +const defaultBasePath = 'http://localhost:2746'; // =============================================== // This file is autogenerated - Please do not edit @@ -45,7 +44,7 @@ export class EventSourceServiceApi { protected _useQuerystring : boolean = false; protected authentications = { - 'default': new VoidAuth(), + 'default': new VoidAuth() as Authentication, 'BearerToken': new ApiKeyAuth('header', 'Authorization'), } @@ -104,8 +103,8 @@ export class EventSourceServiceApi { public async eventSourceServiceCreateEventSource (namespace: string, body: EventsourceCreateEventSourceRequest, options: {headers: {[name: string]: string}} = {headers: {}}) : Promise<{ response: http.IncomingMessage; body: IoArgoprojEventsV1alpha1EventSource; }> { const localVarPath = this.basePath + '/api/v1/event-sources/{namespace}' .replace('{' + 'namespace' + '}', encodeURIComponent(String(namespace))); - let localVarQueryParameters: any = {}; - let localVarHeaderParams: any = (Object).assign({}, this._defaultHeaders); + const localVarQueryParameters: any = {}; + const localVarHeaderParams: any = (Object as any).assign({}, this._defaultHeaders); const produces = ['application/json']; // give precedence to 'application/json' if (produces.indexOf('application/json') >= 0) { @@ -113,7 +112,7 @@ export class EventSourceServiceApi { } else { localVarHeaderParams.Accept = produces.join(','); } - let localVarFormParams: any = {}; + const localVarFormParams: any = {}; // verify required parameter 'namespace' is not null or undefined if (namespace === null || namespace === undefined) { @@ -125,11 +124,11 @@ export class EventSourceServiceApi { throw new Error('Required parameter body was null or undefined when calling eventSourceServiceCreateEventSource.'); } - (Object).assign(localVarHeaderParams, options.headers); + (Object as any).assign(localVarHeaderParams, options.headers); - let localVarUseFormData = false; + const localVarUseFormData = false; - let localVarRequestOptions: localVarRequest.Options = { + const localVarRequestOptions: localVarRequest.Options = { method: 'POST', qs: localVarQueryParameters, headers: localVarHeaderParams, @@ -153,7 +152,7 @@ export class EventSourceServiceApi { return interceptorPromise.then(() => { if (Object.keys(localVarFormParams).length) { if (localVarUseFormData) { - (localVarRequestOptions).formData = localVarFormParams; + (localVarRequestOptions as any).formData = localVarFormParams; } else { localVarRequestOptions.form = localVarFormParams; } @@ -189,8 +188,8 @@ export class EventSourceServiceApi { const localVarPath = this.basePath + '/api/v1/event-sources/{namespace}/{name}' .replace('{' + 'namespace' + '}', encodeURIComponent(String(namespace))) .replace('{' + 'name' + '}', encodeURIComponent(String(name))); - let localVarQueryParameters: any = {}; - let localVarHeaderParams: any = (Object).assign({}, this._defaultHeaders); + const localVarQueryParameters: any = {}; + const localVarHeaderParams: any = (Object as any).assign({}, this._defaultHeaders); const produces = ['application/json']; // give precedence to 'application/json' if (produces.indexOf('application/json') >= 0) { @@ -198,7 +197,7 @@ export class EventSourceServiceApi { } else { localVarHeaderParams.Accept = produces.join(','); } - let localVarFormParams: any = {}; + const localVarFormParams: any = {}; // verify required parameter 'namespace' is not null or undefined if (namespace === null || namespace === undefined) { @@ -234,11 +233,11 @@ export class EventSourceServiceApi { localVarQueryParameters['deleteOptions.dryRun'] = ObjectSerializer.serialize(deleteOptionsDryRun, "Array"); } - (Object).assign(localVarHeaderParams, options.headers); + (Object as any).assign(localVarHeaderParams, options.headers); - let localVarUseFormData = false; + const localVarUseFormData = false; - let localVarRequestOptions: localVarRequest.Options = { + const localVarRequestOptions: localVarRequest.Options = { method: 'DELETE', qs: localVarQueryParameters, headers: localVarHeaderParams, @@ -261,7 +260,7 @@ export class EventSourceServiceApi { return interceptorPromise.then(() => { if (Object.keys(localVarFormParams).length) { if (localVarUseFormData) { - (localVarRequestOptions).formData = localVarFormParams; + (localVarRequestOptions as any).formData = localVarFormParams; } else { localVarRequestOptions.form = localVarFormParams; } @@ -303,8 +302,8 @@ export class EventSourceServiceApi { public async eventSourceServiceEventSourcesLogs (namespace: string, name?: string, eventSourceType?: string, eventName?: string, grep?: string, podLogOptionsContainer?: string, podLogOptionsFollow?: boolean, podLogOptionsPrevious?: boolean, podLogOptionsSinceSeconds?: string, podLogOptionsSinceTimeSeconds?: string, podLogOptionsSinceTimeNanos?: number, podLogOptionsTimestamps?: boolean, podLogOptionsTailLines?: string, podLogOptionsLimitBytes?: string, podLogOptionsInsecureSkipTLSVerifyBackend?: boolean, options: {headers: {[name: string]: string}} = {headers: {}}) : Promise<{ response: http.IncomingMessage; body: StreamResultOfEventsourceLogEntry; }> { const localVarPath = this.basePath + '/api/v1/stream/event-sources/{namespace}/logs' .replace('{' + 'namespace' + '}', encodeURIComponent(String(namespace))); - let localVarQueryParameters: any = {}; - let localVarHeaderParams: any = (Object).assign({}, this._defaultHeaders); + const localVarQueryParameters: any = {}; + const localVarHeaderParams: any = (Object as any).assign({}, this._defaultHeaders); const produces = ['application/json']; // give precedence to 'application/json' if (produces.indexOf('application/json') >= 0) { @@ -312,7 +311,7 @@ export class EventSourceServiceApi { } else { localVarHeaderParams.Accept = produces.join(','); } - let localVarFormParams: any = {}; + const localVarFormParams: any = {}; // verify required parameter 'namespace' is not null or undefined if (namespace === null || namespace === undefined) { @@ -320,19 +319,19 @@ export class EventSourceServiceApi { } if (name !== undefined) { - localVarQueryParameters['name'] = ObjectSerializer.serialize(name, "string"); + localVarQueryParameters.name = ObjectSerializer.serialize(name, "string"); } if (eventSourceType !== undefined) { - localVarQueryParameters['eventSourceType'] = ObjectSerializer.serialize(eventSourceType, "string"); + localVarQueryParameters.eventSourceType = ObjectSerializer.serialize(eventSourceType, "string"); } if (eventName !== undefined) { - localVarQueryParameters['eventName'] = ObjectSerializer.serialize(eventName, "string"); + localVarQueryParameters.eventName = ObjectSerializer.serialize(eventName, "string"); } if (grep !== undefined) { - localVarQueryParameters['grep'] = ObjectSerializer.serialize(grep, "string"); + localVarQueryParameters.grep = ObjectSerializer.serialize(grep, "string"); } if (podLogOptionsContainer !== undefined) { @@ -375,11 +374,11 @@ export class EventSourceServiceApi { localVarQueryParameters['podLogOptions.insecureSkipTLSVerifyBackend'] = ObjectSerializer.serialize(podLogOptionsInsecureSkipTLSVerifyBackend, "boolean"); } - (Object).assign(localVarHeaderParams, options.headers); + (Object as any).assign(localVarHeaderParams, options.headers); - let localVarUseFormData = false; + const localVarUseFormData = false; - let localVarRequestOptions: localVarRequest.Options = { + const localVarRequestOptions: localVarRequest.Options = { method: 'GET', qs: localVarQueryParameters, headers: localVarHeaderParams, @@ -402,7 +401,7 @@ export class EventSourceServiceApi { return interceptorPromise.then(() => { if (Object.keys(localVarFormParams).length) { if (localVarUseFormData) { - (localVarRequestOptions).formData = localVarFormParams; + (localVarRequestOptions as any).formData = localVarFormParams; } else { localVarRequestOptions.form = localVarFormParams; } @@ -432,8 +431,8 @@ export class EventSourceServiceApi { const localVarPath = this.basePath + '/api/v1/event-sources/{namespace}/{name}' .replace('{' + 'namespace' + '}', encodeURIComponent(String(namespace))) .replace('{' + 'name' + '}', encodeURIComponent(String(name))); - let localVarQueryParameters: any = {}; - let localVarHeaderParams: any = (Object).assign({}, this._defaultHeaders); + const localVarQueryParameters: any = {}; + const localVarHeaderParams: any = (Object as any).assign({}, this._defaultHeaders); const produces = ['application/json']; // give precedence to 'application/json' if (produces.indexOf('application/json') >= 0) { @@ -441,7 +440,7 @@ export class EventSourceServiceApi { } else { localVarHeaderParams.Accept = produces.join(','); } - let localVarFormParams: any = {}; + const localVarFormParams: any = {}; // verify required parameter 'namespace' is not null or undefined if (namespace === null || namespace === undefined) { @@ -453,11 +452,11 @@ export class EventSourceServiceApi { throw new Error('Required parameter name was null or undefined when calling eventSourceServiceGetEventSource.'); } - (Object).assign(localVarHeaderParams, options.headers); + (Object as any).assign(localVarHeaderParams, options.headers); - let localVarUseFormData = false; + const localVarUseFormData = false; - let localVarRequestOptions: localVarRequest.Options = { + const localVarRequestOptions: localVarRequest.Options = { method: 'GET', qs: localVarQueryParameters, headers: localVarHeaderParams, @@ -480,7 +479,7 @@ export class EventSourceServiceApi { return interceptorPromise.then(() => { if (Object.keys(localVarFormParams).length) { if (localVarUseFormData) { - (localVarRequestOptions).formData = localVarFormParams; + (localVarRequestOptions as any).formData = localVarFormParams; } else { localVarRequestOptions.form = localVarFormParams; } @@ -517,8 +516,8 @@ export class EventSourceServiceApi { public async eventSourceServiceListEventSources (namespace: string, listOptionsLabelSelector?: string, listOptionsFieldSelector?: string, listOptionsWatch?: boolean, listOptionsAllowWatchBookmarks?: boolean, listOptionsResourceVersion?: string, listOptionsResourceVersionMatch?: string, listOptionsTimeoutSeconds?: string, listOptionsLimit?: string, listOptionsContinue?: string, options: {headers: {[name: string]: string}} = {headers: {}}) : Promise<{ response: http.IncomingMessage; body: IoArgoprojEventsV1alpha1EventSourceList; }> { const localVarPath = this.basePath + '/api/v1/event-sources/{namespace}' .replace('{' + 'namespace' + '}', encodeURIComponent(String(namespace))); - let localVarQueryParameters: any = {}; - let localVarHeaderParams: any = (Object).assign({}, this._defaultHeaders); + const localVarQueryParameters: any = {}; + const localVarHeaderParams: any = (Object as any).assign({}, this._defaultHeaders); const produces = ['application/json']; // give precedence to 'application/json' if (produces.indexOf('application/json') >= 0) { @@ -526,7 +525,7 @@ export class EventSourceServiceApi { } else { localVarHeaderParams.Accept = produces.join(','); } - let localVarFormParams: any = {}; + const localVarFormParams: any = {}; // verify required parameter 'namespace' is not null or undefined if (namespace === null || namespace === undefined) { @@ -569,11 +568,11 @@ export class EventSourceServiceApi { localVarQueryParameters['listOptions.continue'] = ObjectSerializer.serialize(listOptionsContinue, "string"); } - (Object).assign(localVarHeaderParams, options.headers); + (Object as any).assign(localVarHeaderParams, options.headers); - let localVarUseFormData = false; + const localVarUseFormData = false; - let localVarRequestOptions: localVarRequest.Options = { + const localVarRequestOptions: localVarRequest.Options = { method: 'GET', qs: localVarQueryParameters, headers: localVarHeaderParams, @@ -596,7 +595,7 @@ export class EventSourceServiceApi { return interceptorPromise.then(() => { if (Object.keys(localVarFormParams).length) { if (localVarUseFormData) { - (localVarRequestOptions).formData = localVarFormParams; + (localVarRequestOptions as any).formData = localVarFormParams; } else { localVarRequestOptions.form = localVarFormParams; } @@ -627,8 +626,8 @@ export class EventSourceServiceApi { const localVarPath = this.basePath + '/api/v1/event-sources/{namespace}/{name}' .replace('{' + 'namespace' + '}', encodeURIComponent(String(namespace))) .replace('{' + 'name' + '}', encodeURIComponent(String(name))); - let localVarQueryParameters: any = {}; - let localVarHeaderParams: any = (Object).assign({}, this._defaultHeaders); + const localVarQueryParameters: any = {}; + const localVarHeaderParams: any = (Object as any).assign({}, this._defaultHeaders); const produces = ['application/json']; // give precedence to 'application/json' if (produces.indexOf('application/json') >= 0) { @@ -636,7 +635,7 @@ export class EventSourceServiceApi { } else { localVarHeaderParams.Accept = produces.join(','); } - let localVarFormParams: any = {}; + const localVarFormParams: any = {}; // verify required parameter 'namespace' is not null or undefined if (namespace === null || namespace === undefined) { @@ -653,11 +652,11 @@ export class EventSourceServiceApi { throw new Error('Required parameter body was null or undefined when calling eventSourceServiceUpdateEventSource.'); } - (Object).assign(localVarHeaderParams, options.headers); + (Object as any).assign(localVarHeaderParams, options.headers); - let localVarUseFormData = false; + const localVarUseFormData = false; - let localVarRequestOptions: localVarRequest.Options = { + const localVarRequestOptions: localVarRequest.Options = { method: 'PUT', qs: localVarQueryParameters, headers: localVarHeaderParams, @@ -681,7 +680,7 @@ export class EventSourceServiceApi { return interceptorPromise.then(() => { if (Object.keys(localVarFormParams).length) { if (localVarUseFormData) { - (localVarRequestOptions).formData = localVarFormParams; + (localVarRequestOptions as any).formData = localVarFormParams; } else { localVarRequestOptions.form = localVarFormParams; } @@ -718,8 +717,8 @@ export class EventSourceServiceApi { public async eventSourceServiceWatchEventSources (namespace: string, listOptionsLabelSelector?: string, listOptionsFieldSelector?: string, listOptionsWatch?: boolean, listOptionsAllowWatchBookmarks?: boolean, listOptionsResourceVersion?: string, listOptionsResourceVersionMatch?: string, listOptionsTimeoutSeconds?: string, listOptionsLimit?: string, listOptionsContinue?: string, options: {headers: {[name: string]: string}} = {headers: {}}) : Promise<{ response: http.IncomingMessage; body: StreamResultOfEventsourceEventSourceWatchEvent; }> { const localVarPath = this.basePath + '/api/v1/stream/event-sources/{namespace}' .replace('{' + 'namespace' + '}', encodeURIComponent(String(namespace))); - let localVarQueryParameters: any = {}; - let localVarHeaderParams: any = (Object).assign({}, this._defaultHeaders); + const localVarQueryParameters: any = {}; + const localVarHeaderParams: any = (Object as any).assign({}, this._defaultHeaders); const produces = ['application/json']; // give precedence to 'application/json' if (produces.indexOf('application/json') >= 0) { @@ -727,7 +726,7 @@ export class EventSourceServiceApi { } else { localVarHeaderParams.Accept = produces.join(','); } - let localVarFormParams: any = {}; + const localVarFormParams: any = {}; // verify required parameter 'namespace' is not null or undefined if (namespace === null || namespace === undefined) { @@ -770,11 +769,11 @@ export class EventSourceServiceApi { localVarQueryParameters['listOptions.continue'] = ObjectSerializer.serialize(listOptionsContinue, "string"); } - (Object).assign(localVarHeaderParams, options.headers); + (Object as any).assign(localVarHeaderParams, options.headers); - let localVarUseFormData = false; + const localVarUseFormData = false; - let localVarRequestOptions: localVarRequest.Options = { + const localVarRequestOptions: localVarRequest.Options = { method: 'GET', qs: localVarQueryParameters, headers: localVarHeaderParams, @@ -797,7 +796,7 @@ export class EventSourceServiceApi { return interceptorPromise.then(() => { if (Object.keys(localVarFormParams).length) { if (localVarUseFormData) { - (localVarRequestOptions).formData = localVarFormParams; + (localVarRequestOptions as any).formData = localVarFormParams; } else { localVarRequestOptions.form = localVarFormParams; } diff --git a/plugins/argo-workflows/src/api/generated/api/infoServiceApi.ts b/plugins/argo-workflows/src/api/generated/api/infoServiceApi.ts index e9af56c..66e491a 100644 --- a/plugins/argo-workflows/src/api/generated/api/infoServiceApi.ts +++ b/plugins/argo-workflows/src/api/generated/api/infoServiceApi.ts @@ -16,18 +16,17 @@ import localVarRequest from 'request'; import http from 'http'; /* tslint:disable:no-unused-locals */ -import { GrpcGatewayRuntimeError } from '../model/grpcGatewayRuntimeError'; import { IoArgoprojWorkflowV1alpha1CollectEventRequest } from '../model/ioArgoprojWorkflowV1alpha1CollectEventRequest'; import { IoArgoprojWorkflowV1alpha1GetUserInfoResponse } from '../model/ioArgoprojWorkflowV1alpha1GetUserInfoResponse'; import { IoArgoprojWorkflowV1alpha1InfoResponse } from '../model/ioArgoprojWorkflowV1alpha1InfoResponse'; import { IoArgoprojWorkflowV1alpha1Version } from '../model/ioArgoprojWorkflowV1alpha1Version'; import { ObjectSerializer, Authentication, VoidAuth, Interceptor } from '../model/models'; -import { HttpBasicAuth, HttpBearerAuth, ApiKeyAuth, OAuth } from '../model/models'; +import { ApiKeyAuth } from '../model/models'; -import { HttpError, RequestFile } from './apis'; +import { HttpError } from './apis'; -let defaultBasePath = 'http://localhost:2746'; +const defaultBasePath = 'http://localhost:2746'; // =============================================== // This file is autogenerated - Please do not edit @@ -43,7 +42,7 @@ export class InfoServiceApi { protected _useQuerystring : boolean = false; protected authentications = { - 'default': new VoidAuth(), + 'default': new VoidAuth() as Authentication, 'BearerToken': new ApiKeyAuth('header', 'Authorization'), } @@ -99,9 +98,9 @@ export class InfoServiceApi { * @param body */ public async infoServiceCollectEvent (body: IoArgoprojWorkflowV1alpha1CollectEventRequest, options: {headers: {[name: string]: string}} = {headers: {}}) : Promise<{ response: http.IncomingMessage; body: object; }> { - const localVarPath = this.basePath + '/api/v1/tracking/event'; - let localVarQueryParameters: any = {}; - let localVarHeaderParams: any = (Object).assign({}, this._defaultHeaders); + const localVarPath = `${this.basePath }/api/v1/tracking/event`; + const localVarQueryParameters: any = {}; + const localVarHeaderParams: any = (Object as any).assign({}, this._defaultHeaders); const produces = ['application/json']; // give precedence to 'application/json' if (produces.indexOf('application/json') >= 0) { @@ -109,18 +108,18 @@ export class InfoServiceApi { } else { localVarHeaderParams.Accept = produces.join(','); } - let localVarFormParams: any = {}; + const localVarFormParams: any = {}; // verify required parameter 'body' is not null or undefined if (body === null || body === undefined) { throw new Error('Required parameter body was null or undefined when calling infoServiceCollectEvent.'); } - (Object).assign(localVarHeaderParams, options.headers); + (Object as any).assign(localVarHeaderParams, options.headers); - let localVarUseFormData = false; + const localVarUseFormData = false; - let localVarRequestOptions: localVarRequest.Options = { + const localVarRequestOptions: localVarRequest.Options = { method: 'POST', qs: localVarQueryParameters, headers: localVarHeaderParams, @@ -144,7 +143,7 @@ export class InfoServiceApi { return interceptorPromise.then(() => { if (Object.keys(localVarFormParams).length) { if (localVarUseFormData) { - (localVarRequestOptions).formData = localVarFormParams; + (localVarRequestOptions as any).formData = localVarFormParams; } else { localVarRequestOptions.form = localVarFormParams; } @@ -169,9 +168,9 @@ export class InfoServiceApi { * */ public async infoServiceGetInfo (options: {headers: {[name: string]: string}} = {headers: {}}) : Promise<{ response: http.IncomingMessage; body: IoArgoprojWorkflowV1alpha1InfoResponse; }> { - const localVarPath = this.basePath + '/api/v1/info'; - let localVarQueryParameters: any = {}; - let localVarHeaderParams: any = (Object).assign({}, this._defaultHeaders); + const localVarPath = `${this.basePath }/api/v1/info`; + const localVarQueryParameters: any = {}; + const localVarHeaderParams: any = (Object as any).assign({}, this._defaultHeaders); const produces = ['application/json']; // give precedence to 'application/json' if (produces.indexOf('application/json') >= 0) { @@ -179,13 +178,13 @@ export class InfoServiceApi { } else { localVarHeaderParams.Accept = produces.join(','); } - let localVarFormParams: any = {}; + const localVarFormParams: any = {}; - (Object).assign(localVarHeaderParams, options.headers); + (Object as any).assign(localVarHeaderParams, options.headers); - let localVarUseFormData = false; + const localVarUseFormData = false; - let localVarRequestOptions: localVarRequest.Options = { + const localVarRequestOptions: localVarRequest.Options = { method: 'GET', qs: localVarQueryParameters, headers: localVarHeaderParams, @@ -208,7 +207,7 @@ export class InfoServiceApi { return interceptorPromise.then(() => { if (Object.keys(localVarFormParams).length) { if (localVarUseFormData) { - (localVarRequestOptions).formData = localVarFormParams; + (localVarRequestOptions as any).formData = localVarFormParams; } else { localVarRequestOptions.form = localVarFormParams; } @@ -233,9 +232,9 @@ export class InfoServiceApi { * */ public async infoServiceGetUserInfo (options: {headers: {[name: string]: string}} = {headers: {}}) : Promise<{ response: http.IncomingMessage; body: IoArgoprojWorkflowV1alpha1GetUserInfoResponse; }> { - const localVarPath = this.basePath + '/api/v1/userinfo'; - let localVarQueryParameters: any = {}; - let localVarHeaderParams: any = (Object).assign({}, this._defaultHeaders); + const localVarPath = `${this.basePath }/api/v1/userinfo`; + const localVarQueryParameters: any = {}; + const localVarHeaderParams: any = (Object as any).assign({}, this._defaultHeaders); const produces = ['application/json']; // give precedence to 'application/json' if (produces.indexOf('application/json') >= 0) { @@ -243,13 +242,13 @@ export class InfoServiceApi { } else { localVarHeaderParams.Accept = produces.join(','); } - let localVarFormParams: any = {}; + const localVarFormParams: any = {}; - (Object).assign(localVarHeaderParams, options.headers); + (Object as any).assign(localVarHeaderParams, options.headers); - let localVarUseFormData = false; + const localVarUseFormData = false; - let localVarRequestOptions: localVarRequest.Options = { + const localVarRequestOptions: localVarRequest.Options = { method: 'GET', qs: localVarQueryParameters, headers: localVarHeaderParams, @@ -272,7 +271,7 @@ export class InfoServiceApi { return interceptorPromise.then(() => { if (Object.keys(localVarFormParams).length) { if (localVarUseFormData) { - (localVarRequestOptions).formData = localVarFormParams; + (localVarRequestOptions as any).formData = localVarFormParams; } else { localVarRequestOptions.form = localVarFormParams; } @@ -297,9 +296,9 @@ export class InfoServiceApi { * */ public async infoServiceGetVersion (options: {headers: {[name: string]: string}} = {headers: {}}) : Promise<{ response: http.IncomingMessage; body: IoArgoprojWorkflowV1alpha1Version; }> { - const localVarPath = this.basePath + '/api/v1/version'; - let localVarQueryParameters: any = {}; - let localVarHeaderParams: any = (Object).assign({}, this._defaultHeaders); + const localVarPath = `${this.basePath }/api/v1/version`; + const localVarQueryParameters: any = {}; + const localVarHeaderParams: any = (Object as any).assign({}, this._defaultHeaders); const produces = ['application/json']; // give precedence to 'application/json' if (produces.indexOf('application/json') >= 0) { @@ -307,13 +306,13 @@ export class InfoServiceApi { } else { localVarHeaderParams.Accept = produces.join(','); } - let localVarFormParams: any = {}; + const localVarFormParams: any = {}; - (Object).assign(localVarHeaderParams, options.headers); + (Object as any).assign(localVarHeaderParams, options.headers); - let localVarUseFormData = false; + const localVarUseFormData = false; - let localVarRequestOptions: localVarRequest.Options = { + const localVarRequestOptions: localVarRequest.Options = { method: 'GET', qs: localVarQueryParameters, headers: localVarHeaderParams, @@ -336,7 +335,7 @@ export class InfoServiceApi { return interceptorPromise.then(() => { if (Object.keys(localVarFormParams).length) { if (localVarUseFormData) { - (localVarRequestOptions).formData = localVarFormParams; + (localVarRequestOptions as any).formData = localVarFormParams; } else { localVarRequestOptions.form = localVarFormParams; } diff --git a/plugins/argo-workflows/src/api/generated/api/sensorServiceApi.ts b/plugins/argo-workflows/src/api/generated/api/sensorServiceApi.ts index 7e5f0ad..0d33142 100644 --- a/plugins/argo-workflows/src/api/generated/api/sensorServiceApi.ts +++ b/plugins/argo-workflows/src/api/generated/api/sensorServiceApi.ts @@ -16,7 +16,6 @@ import localVarRequest from 'request'; import http from 'http'; /* tslint:disable:no-unused-locals */ -import { GrpcGatewayRuntimeError } from '../model/grpcGatewayRuntimeError'; import { IoArgoprojEventsV1alpha1Sensor } from '../model/ioArgoprojEventsV1alpha1Sensor'; import { IoArgoprojEventsV1alpha1SensorList } from '../model/ioArgoprojEventsV1alpha1SensorList'; import { SensorCreateSensorRequest } from '../model/sensorCreateSensorRequest'; @@ -25,11 +24,11 @@ import { StreamResultOfSensorLogEntry } from '../model/streamResultOfSensorLogEn import { StreamResultOfSensorSensorWatchEvent } from '../model/streamResultOfSensorSensorWatchEvent'; import { ObjectSerializer, Authentication, VoidAuth, Interceptor } from '../model/models'; -import { HttpBasicAuth, HttpBearerAuth, ApiKeyAuth, OAuth } from '../model/models'; +import { ApiKeyAuth } from '../model/models'; -import { HttpError, RequestFile } from './apis'; +import { HttpError } from './apis'; -let defaultBasePath = 'http://localhost:2746'; +const defaultBasePath = 'http://localhost:2746'; // =============================================== // This file is autogenerated - Please do not edit @@ -45,7 +44,7 @@ export class SensorServiceApi { protected _useQuerystring : boolean = false; protected authentications = { - 'default': new VoidAuth(), + 'default': new VoidAuth() as Authentication, 'BearerToken': new ApiKeyAuth('header', 'Authorization'), } @@ -104,8 +103,8 @@ export class SensorServiceApi { public async sensorServiceCreateSensor (namespace: string, body: SensorCreateSensorRequest, options: {headers: {[name: string]: string}} = {headers: {}}) : Promise<{ response: http.IncomingMessage; body: IoArgoprojEventsV1alpha1Sensor; }> { const localVarPath = this.basePath + '/api/v1/sensors/{namespace}' .replace('{' + 'namespace' + '}', encodeURIComponent(String(namespace))); - let localVarQueryParameters: any = {}; - let localVarHeaderParams: any = (Object).assign({}, this._defaultHeaders); + const localVarQueryParameters: any = {}; + const localVarHeaderParams: any = (Object as any).assign({}, this._defaultHeaders); const produces = ['application/json']; // give precedence to 'application/json' if (produces.indexOf('application/json') >= 0) { @@ -113,7 +112,7 @@ export class SensorServiceApi { } else { localVarHeaderParams.Accept = produces.join(','); } - let localVarFormParams: any = {}; + const localVarFormParams: any = {}; // verify required parameter 'namespace' is not null or undefined if (namespace === null || namespace === undefined) { @@ -125,11 +124,11 @@ export class SensorServiceApi { throw new Error('Required parameter body was null or undefined when calling sensorServiceCreateSensor.'); } - (Object).assign(localVarHeaderParams, options.headers); + (Object as any).assign(localVarHeaderParams, options.headers); - let localVarUseFormData = false; + const localVarUseFormData = false; - let localVarRequestOptions: localVarRequest.Options = { + const localVarRequestOptions: localVarRequest.Options = { method: 'POST', qs: localVarQueryParameters, headers: localVarHeaderParams, @@ -153,7 +152,7 @@ export class SensorServiceApi { return interceptorPromise.then(() => { if (Object.keys(localVarFormParams).length) { if (localVarUseFormData) { - (localVarRequestOptions).formData = localVarFormParams; + (localVarRequestOptions as any).formData = localVarFormParams; } else { localVarRequestOptions.form = localVarFormParams; } @@ -189,8 +188,8 @@ export class SensorServiceApi { const localVarPath = this.basePath + '/api/v1/sensors/{namespace}/{name}' .replace('{' + 'namespace' + '}', encodeURIComponent(String(namespace))) .replace('{' + 'name' + '}', encodeURIComponent(String(name))); - let localVarQueryParameters: any = {}; - let localVarHeaderParams: any = (Object).assign({}, this._defaultHeaders); + const localVarQueryParameters: any = {}; + const localVarHeaderParams: any = (Object as any).assign({}, this._defaultHeaders); const produces = ['application/json']; // give precedence to 'application/json' if (produces.indexOf('application/json') >= 0) { @@ -198,7 +197,7 @@ export class SensorServiceApi { } else { localVarHeaderParams.Accept = produces.join(','); } - let localVarFormParams: any = {}; + const localVarFormParams: any = {}; // verify required parameter 'namespace' is not null or undefined if (namespace === null || namespace === undefined) { @@ -234,11 +233,11 @@ export class SensorServiceApi { localVarQueryParameters['deleteOptions.dryRun'] = ObjectSerializer.serialize(deleteOptionsDryRun, "Array"); } - (Object).assign(localVarHeaderParams, options.headers); + (Object as any).assign(localVarHeaderParams, options.headers); - let localVarUseFormData = false; + const localVarUseFormData = false; - let localVarRequestOptions: localVarRequest.Options = { + const localVarRequestOptions: localVarRequest.Options = { method: 'DELETE', qs: localVarQueryParameters, headers: localVarHeaderParams, @@ -261,7 +260,7 @@ export class SensorServiceApi { return interceptorPromise.then(() => { if (Object.keys(localVarFormParams).length) { if (localVarUseFormData) { - (localVarRequestOptions).formData = localVarFormParams; + (localVarRequestOptions as any).formData = localVarFormParams; } else { localVarRequestOptions.form = localVarFormParams; } @@ -292,8 +291,8 @@ export class SensorServiceApi { const localVarPath = this.basePath + '/api/v1/sensors/{namespace}/{name}' .replace('{' + 'namespace' + '}', encodeURIComponent(String(namespace))) .replace('{' + 'name' + '}', encodeURIComponent(String(name))); - let localVarQueryParameters: any = {}; - let localVarHeaderParams: any = (Object).assign({}, this._defaultHeaders); + const localVarQueryParameters: any = {}; + const localVarHeaderParams: any = (Object as any).assign({}, this._defaultHeaders); const produces = ['application/json']; // give precedence to 'application/json' if (produces.indexOf('application/json') >= 0) { @@ -301,7 +300,7 @@ export class SensorServiceApi { } else { localVarHeaderParams.Accept = produces.join(','); } - let localVarFormParams: any = {}; + const localVarFormParams: any = {}; // verify required parameter 'namespace' is not null or undefined if (namespace === null || namespace === undefined) { @@ -317,11 +316,11 @@ export class SensorServiceApi { localVarQueryParameters['getOptions.resourceVersion'] = ObjectSerializer.serialize(getOptionsResourceVersion, "string"); } - (Object).assign(localVarHeaderParams, options.headers); + (Object as any).assign(localVarHeaderParams, options.headers); - let localVarUseFormData = false; + const localVarUseFormData = false; - let localVarRequestOptions: localVarRequest.Options = { + const localVarRequestOptions: localVarRequest.Options = { method: 'GET', qs: localVarQueryParameters, headers: localVarHeaderParams, @@ -344,7 +343,7 @@ export class SensorServiceApi { return interceptorPromise.then(() => { if (Object.keys(localVarFormParams).length) { if (localVarUseFormData) { - (localVarRequestOptions).formData = localVarFormParams; + (localVarRequestOptions as any).formData = localVarFormParams; } else { localVarRequestOptions.form = localVarFormParams; } @@ -381,8 +380,8 @@ export class SensorServiceApi { public async sensorServiceListSensors (namespace: string, listOptionsLabelSelector?: string, listOptionsFieldSelector?: string, listOptionsWatch?: boolean, listOptionsAllowWatchBookmarks?: boolean, listOptionsResourceVersion?: string, listOptionsResourceVersionMatch?: string, listOptionsTimeoutSeconds?: string, listOptionsLimit?: string, listOptionsContinue?: string, options: {headers: {[name: string]: string}} = {headers: {}}) : Promise<{ response: http.IncomingMessage; body: IoArgoprojEventsV1alpha1SensorList; }> { const localVarPath = this.basePath + '/api/v1/sensors/{namespace}' .replace('{' + 'namespace' + '}', encodeURIComponent(String(namespace))); - let localVarQueryParameters: any = {}; - let localVarHeaderParams: any = (Object).assign({}, this._defaultHeaders); + const localVarQueryParameters: any = {}; + const localVarHeaderParams: any = (Object as any).assign({}, this._defaultHeaders); const produces = ['application/json']; // give precedence to 'application/json' if (produces.indexOf('application/json') >= 0) { @@ -390,7 +389,7 @@ export class SensorServiceApi { } else { localVarHeaderParams.Accept = produces.join(','); } - let localVarFormParams: any = {}; + const localVarFormParams: any = {}; // verify required parameter 'namespace' is not null or undefined if (namespace === null || namespace === undefined) { @@ -433,11 +432,11 @@ export class SensorServiceApi { localVarQueryParameters['listOptions.continue'] = ObjectSerializer.serialize(listOptionsContinue, "string"); } - (Object).assign(localVarHeaderParams, options.headers); + (Object as any).assign(localVarHeaderParams, options.headers); - let localVarUseFormData = false; + const localVarUseFormData = false; - let localVarRequestOptions: localVarRequest.Options = { + const localVarRequestOptions: localVarRequest.Options = { method: 'GET', qs: localVarQueryParameters, headers: localVarHeaderParams, @@ -460,7 +459,7 @@ export class SensorServiceApi { return interceptorPromise.then(() => { if (Object.keys(localVarFormParams).length) { if (localVarUseFormData) { - (localVarRequestOptions).formData = localVarFormParams; + (localVarRequestOptions as any).formData = localVarFormParams; } else { localVarRequestOptions.form = localVarFormParams; } @@ -501,8 +500,8 @@ export class SensorServiceApi { public async sensorServiceSensorsLogs (namespace: string, name?: string, triggerName?: string, grep?: string, podLogOptionsContainer?: string, podLogOptionsFollow?: boolean, podLogOptionsPrevious?: boolean, podLogOptionsSinceSeconds?: string, podLogOptionsSinceTimeSeconds?: string, podLogOptionsSinceTimeNanos?: number, podLogOptionsTimestamps?: boolean, podLogOptionsTailLines?: string, podLogOptionsLimitBytes?: string, podLogOptionsInsecureSkipTLSVerifyBackend?: boolean, options: {headers: {[name: string]: string}} = {headers: {}}) : Promise<{ response: http.IncomingMessage; body: StreamResultOfSensorLogEntry; }> { const localVarPath = this.basePath + '/api/v1/stream/sensors/{namespace}/logs' .replace('{' + 'namespace' + '}', encodeURIComponent(String(namespace))); - let localVarQueryParameters: any = {}; - let localVarHeaderParams: any = (Object).assign({}, this._defaultHeaders); + const localVarQueryParameters: any = {}; + const localVarHeaderParams: any = (Object as any).assign({}, this._defaultHeaders); const produces = ['application/json']; // give precedence to 'application/json' if (produces.indexOf('application/json') >= 0) { @@ -510,7 +509,7 @@ export class SensorServiceApi { } else { localVarHeaderParams.Accept = produces.join(','); } - let localVarFormParams: any = {}; + const localVarFormParams: any = {}; // verify required parameter 'namespace' is not null or undefined if (namespace === null || namespace === undefined) { @@ -518,15 +517,15 @@ export class SensorServiceApi { } if (name !== undefined) { - localVarQueryParameters['name'] = ObjectSerializer.serialize(name, "string"); + localVarQueryParameters.name = ObjectSerializer.serialize(name, "string"); } if (triggerName !== undefined) { - localVarQueryParameters['triggerName'] = ObjectSerializer.serialize(triggerName, "string"); + localVarQueryParameters.triggerName = ObjectSerializer.serialize(triggerName, "string"); } if (grep !== undefined) { - localVarQueryParameters['grep'] = ObjectSerializer.serialize(grep, "string"); + localVarQueryParameters.grep = ObjectSerializer.serialize(grep, "string"); } if (podLogOptionsContainer !== undefined) { @@ -569,11 +568,11 @@ export class SensorServiceApi { localVarQueryParameters['podLogOptions.insecureSkipTLSVerifyBackend'] = ObjectSerializer.serialize(podLogOptionsInsecureSkipTLSVerifyBackend, "boolean"); } - (Object).assign(localVarHeaderParams, options.headers); + (Object as any).assign(localVarHeaderParams, options.headers); - let localVarUseFormData = false; + const localVarUseFormData = false; - let localVarRequestOptions: localVarRequest.Options = { + const localVarRequestOptions: localVarRequest.Options = { method: 'GET', qs: localVarQueryParameters, headers: localVarHeaderParams, @@ -596,7 +595,7 @@ export class SensorServiceApi { return interceptorPromise.then(() => { if (Object.keys(localVarFormParams).length) { if (localVarUseFormData) { - (localVarRequestOptions).formData = localVarFormParams; + (localVarRequestOptions as any).formData = localVarFormParams; } else { localVarRequestOptions.form = localVarFormParams; } @@ -627,8 +626,8 @@ export class SensorServiceApi { const localVarPath = this.basePath + '/api/v1/sensors/{namespace}/{name}' .replace('{' + 'namespace' + '}', encodeURIComponent(String(namespace))) .replace('{' + 'name' + '}', encodeURIComponent(String(name))); - let localVarQueryParameters: any = {}; - let localVarHeaderParams: any = (Object).assign({}, this._defaultHeaders); + const localVarQueryParameters: any = {}; + const localVarHeaderParams: any = (Object as any).assign({}, this._defaultHeaders); const produces = ['application/json']; // give precedence to 'application/json' if (produces.indexOf('application/json') >= 0) { @@ -636,7 +635,7 @@ export class SensorServiceApi { } else { localVarHeaderParams.Accept = produces.join(','); } - let localVarFormParams: any = {}; + const localVarFormParams: any = {}; // verify required parameter 'namespace' is not null or undefined if (namespace === null || namespace === undefined) { @@ -653,11 +652,11 @@ export class SensorServiceApi { throw new Error('Required parameter body was null or undefined when calling sensorServiceUpdateSensor.'); } - (Object).assign(localVarHeaderParams, options.headers); + (Object as any).assign(localVarHeaderParams, options.headers); - let localVarUseFormData = false; + const localVarUseFormData = false; - let localVarRequestOptions: localVarRequest.Options = { + const localVarRequestOptions: localVarRequest.Options = { method: 'PUT', qs: localVarQueryParameters, headers: localVarHeaderParams, @@ -681,7 +680,7 @@ export class SensorServiceApi { return interceptorPromise.then(() => { if (Object.keys(localVarFormParams).length) { if (localVarUseFormData) { - (localVarRequestOptions).formData = localVarFormParams; + (localVarRequestOptions as any).formData = localVarFormParams; } else { localVarRequestOptions.form = localVarFormParams; } @@ -718,8 +717,8 @@ export class SensorServiceApi { public async sensorServiceWatchSensors (namespace: string, listOptionsLabelSelector?: string, listOptionsFieldSelector?: string, listOptionsWatch?: boolean, listOptionsAllowWatchBookmarks?: boolean, listOptionsResourceVersion?: string, listOptionsResourceVersionMatch?: string, listOptionsTimeoutSeconds?: string, listOptionsLimit?: string, listOptionsContinue?: string, options: {headers: {[name: string]: string}} = {headers: {}}) : Promise<{ response: http.IncomingMessage; body: StreamResultOfSensorSensorWatchEvent; }> { const localVarPath = this.basePath + '/api/v1/stream/sensors/{namespace}' .replace('{' + 'namespace' + '}', encodeURIComponent(String(namespace))); - let localVarQueryParameters: any = {}; - let localVarHeaderParams: any = (Object).assign({}, this._defaultHeaders); + const localVarQueryParameters: any = {}; + const localVarHeaderParams: any = (Object as any).assign({}, this._defaultHeaders); const produces = ['application/json']; // give precedence to 'application/json' if (produces.indexOf('application/json') >= 0) { @@ -727,7 +726,7 @@ export class SensorServiceApi { } else { localVarHeaderParams.Accept = produces.join(','); } - let localVarFormParams: any = {}; + const localVarFormParams: any = {}; // verify required parameter 'namespace' is not null or undefined if (namespace === null || namespace === undefined) { @@ -770,11 +769,11 @@ export class SensorServiceApi { localVarQueryParameters['listOptions.continue'] = ObjectSerializer.serialize(listOptionsContinue, "string"); } - (Object).assign(localVarHeaderParams, options.headers); + (Object as any).assign(localVarHeaderParams, options.headers); - let localVarUseFormData = false; + const localVarUseFormData = false; - let localVarRequestOptions: localVarRequest.Options = { + const localVarRequestOptions: localVarRequest.Options = { method: 'GET', qs: localVarQueryParameters, headers: localVarHeaderParams, @@ -797,7 +796,7 @@ export class SensorServiceApi { return interceptorPromise.then(() => { if (Object.keys(localVarFormParams).length) { if (localVarUseFormData) { - (localVarRequestOptions).formData = localVarFormParams; + (localVarRequestOptions as any).formData = localVarFormParams; } else { localVarRequestOptions.form = localVarFormParams; } diff --git a/plugins/argo-workflows/src/api/generated/api/workflowServiceApi.ts b/plugins/argo-workflows/src/api/generated/api/workflowServiceApi.ts index 5df7148..51a28dc 100644 --- a/plugins/argo-workflows/src/api/generated/api/workflowServiceApi.ts +++ b/plugins/argo-workflows/src/api/generated/api/workflowServiceApi.ts @@ -16,7 +16,6 @@ import localVarRequest from 'request'; import http from 'http'; /* tslint:disable:no-unused-locals */ -import { GrpcGatewayRuntimeError } from '../model/grpcGatewayRuntimeError'; import { IoArgoprojWorkflowV1alpha1Workflow } from '../model/ioArgoprojWorkflowV1alpha1Workflow'; import { IoArgoprojWorkflowV1alpha1WorkflowCreateRequest } from '../model/ioArgoprojWorkflowV1alpha1WorkflowCreateRequest'; import { IoArgoprojWorkflowV1alpha1WorkflowLintRequest } from '../model/ioArgoprojWorkflowV1alpha1WorkflowLintRequest'; @@ -34,11 +33,11 @@ import { StreamResultOfIoArgoprojWorkflowV1alpha1WorkflowWatchEvent } from '../m import { StreamResultOfIoK8sApiCoreV1Event } from '../model/streamResultOfIoK8sApiCoreV1Event'; import { ObjectSerializer, Authentication, VoidAuth, Interceptor } from '../model/models'; -import { HttpBasicAuth, HttpBearerAuth, ApiKeyAuth, OAuth } from '../model/models'; +import { ApiKeyAuth } from '../model/models'; -import { HttpError, RequestFile } from './apis'; +import { HttpError } from './apis'; -let defaultBasePath = 'http://localhost:2746'; +const defaultBasePath = 'http://localhost:2746'; // =============================================== // This file is autogenerated - Please do not edit @@ -54,7 +53,7 @@ export class WorkflowServiceApi { protected _useQuerystring : boolean = false; protected authentications = { - 'default': new VoidAuth(), + 'default': new VoidAuth() as Authentication, 'BearerToken': new ApiKeyAuth('header', 'Authorization'), } @@ -113,8 +112,8 @@ export class WorkflowServiceApi { public async workflowServiceCreateWorkflow (namespace: string, body: IoArgoprojWorkflowV1alpha1WorkflowCreateRequest, options: {headers: {[name: string]: string}} = {headers: {}}) : Promise<{ response: http.IncomingMessage; body: IoArgoprojWorkflowV1alpha1Workflow; }> { const localVarPath = this.basePath + '/api/v1/workflows/{namespace}' .replace('{' + 'namespace' + '}', encodeURIComponent(String(namespace))); - let localVarQueryParameters: any = {}; - let localVarHeaderParams: any = (Object).assign({}, this._defaultHeaders); + const localVarQueryParameters: any = {}; + const localVarHeaderParams: any = (Object as any).assign({}, this._defaultHeaders); const produces = ['application/json']; // give precedence to 'application/json' if (produces.indexOf('application/json') >= 0) { @@ -122,7 +121,7 @@ export class WorkflowServiceApi { } else { localVarHeaderParams.Accept = produces.join(','); } - let localVarFormParams: any = {}; + const localVarFormParams: any = {}; // verify required parameter 'namespace' is not null or undefined if (namespace === null || namespace === undefined) { @@ -134,11 +133,11 @@ export class WorkflowServiceApi { throw new Error('Required parameter body was null or undefined when calling workflowServiceCreateWorkflow.'); } - (Object).assign(localVarHeaderParams, options.headers); + (Object as any).assign(localVarHeaderParams, options.headers); - let localVarUseFormData = false; + const localVarUseFormData = false; - let localVarRequestOptions: localVarRequest.Options = { + const localVarRequestOptions: localVarRequest.Options = { method: 'POST', qs: localVarQueryParameters, headers: localVarHeaderParams, @@ -162,7 +161,7 @@ export class WorkflowServiceApi { return interceptorPromise.then(() => { if (Object.keys(localVarFormParams).length) { if (localVarUseFormData) { - (localVarRequestOptions).formData = localVarFormParams; + (localVarRequestOptions as any).formData = localVarFormParams; } else { localVarRequestOptions.form = localVarFormParams; } @@ -199,8 +198,8 @@ export class WorkflowServiceApi { const localVarPath = this.basePath + '/api/v1/workflows/{namespace}/{name}' .replace('{' + 'namespace' + '}', encodeURIComponent(String(namespace))) .replace('{' + 'name' + '}', encodeURIComponent(String(name))); - let localVarQueryParameters: any = {}; - let localVarHeaderParams: any = (Object).assign({}, this._defaultHeaders); + const localVarQueryParameters: any = {}; + const localVarHeaderParams: any = (Object as any).assign({}, this._defaultHeaders); const produces = ['application/json']; // give precedence to 'application/json' if (produces.indexOf('application/json') >= 0) { @@ -208,7 +207,7 @@ export class WorkflowServiceApi { } else { localVarHeaderParams.Accept = produces.join(','); } - let localVarFormParams: any = {}; + const localVarFormParams: any = {}; // verify required parameter 'namespace' is not null or undefined if (namespace === null || namespace === undefined) { @@ -245,14 +244,14 @@ export class WorkflowServiceApi { } if (force !== undefined) { - localVarQueryParameters['force'] = ObjectSerializer.serialize(force, "boolean"); + localVarQueryParameters.force = ObjectSerializer.serialize(force, "boolean"); } - (Object).assign(localVarHeaderParams, options.headers); + (Object as any).assign(localVarHeaderParams, options.headers); - let localVarUseFormData = false; + const localVarUseFormData = false; - let localVarRequestOptions: localVarRequest.Options = { + const localVarRequestOptions: localVarRequest.Options = { method: 'DELETE', qs: localVarQueryParameters, headers: localVarHeaderParams, @@ -275,7 +274,7 @@ export class WorkflowServiceApi { return interceptorPromise.then(() => { if (Object.keys(localVarFormParams).length) { if (localVarUseFormData) { - (localVarRequestOptions).formData = localVarFormParams; + (localVarRequestOptions as any).formData = localVarFormParams; } else { localVarRequestOptions.form = localVarFormParams; } @@ -307,8 +306,8 @@ export class WorkflowServiceApi { const localVarPath = this.basePath + '/api/v1/workflows/{namespace}/{name}' .replace('{' + 'namespace' + '}', encodeURIComponent(String(namespace))) .replace('{' + 'name' + '}', encodeURIComponent(String(name))); - let localVarQueryParameters: any = {}; - let localVarHeaderParams: any = (Object).assign({}, this._defaultHeaders); + const localVarQueryParameters: any = {}; + const localVarHeaderParams: any = (Object as any).assign({}, this._defaultHeaders); const produces = ['application/json']; // give precedence to 'application/json' if (produces.indexOf('application/json') >= 0) { @@ -316,7 +315,7 @@ export class WorkflowServiceApi { } else { localVarHeaderParams.Accept = produces.join(','); } - let localVarFormParams: any = {}; + const localVarFormParams: any = {}; // verify required parameter 'namespace' is not null or undefined if (namespace === null || namespace === undefined) { @@ -333,14 +332,14 @@ export class WorkflowServiceApi { } if (fields !== undefined) { - localVarQueryParameters['fields'] = ObjectSerializer.serialize(fields, "string"); + localVarQueryParameters.fields = ObjectSerializer.serialize(fields, "string"); } - (Object).assign(localVarHeaderParams, options.headers); + (Object as any).assign(localVarHeaderParams, options.headers); - let localVarUseFormData = false; + const localVarUseFormData = false; - let localVarRequestOptions: localVarRequest.Options = { + const localVarRequestOptions: localVarRequest.Options = { method: 'GET', qs: localVarQueryParameters, headers: localVarHeaderParams, @@ -363,7 +362,7 @@ export class WorkflowServiceApi { return interceptorPromise.then(() => { if (Object.keys(localVarFormParams).length) { if (localVarUseFormData) { - (localVarRequestOptions).formData = localVarFormParams; + (localVarRequestOptions as any).formData = localVarFormParams; } else { localVarRequestOptions.form = localVarFormParams; } @@ -392,8 +391,8 @@ export class WorkflowServiceApi { public async workflowServiceLintWorkflow (namespace: string, body: IoArgoprojWorkflowV1alpha1WorkflowLintRequest, options: {headers: {[name: string]: string}} = {headers: {}}) : Promise<{ response: http.IncomingMessage; body: IoArgoprojWorkflowV1alpha1Workflow; }> { const localVarPath = this.basePath + '/api/v1/workflows/{namespace}/lint' .replace('{' + 'namespace' + '}', encodeURIComponent(String(namespace))); - let localVarQueryParameters: any = {}; - let localVarHeaderParams: any = (Object).assign({}, this._defaultHeaders); + const localVarQueryParameters: any = {}; + const localVarHeaderParams: any = (Object as any).assign({}, this._defaultHeaders); const produces = ['application/json']; // give precedence to 'application/json' if (produces.indexOf('application/json') >= 0) { @@ -401,7 +400,7 @@ export class WorkflowServiceApi { } else { localVarHeaderParams.Accept = produces.join(','); } - let localVarFormParams: any = {}; + const localVarFormParams: any = {}; // verify required parameter 'namespace' is not null or undefined if (namespace === null || namespace === undefined) { @@ -413,11 +412,11 @@ export class WorkflowServiceApi { throw new Error('Required parameter body was null or undefined when calling workflowServiceLintWorkflow.'); } - (Object).assign(localVarHeaderParams, options.headers); + (Object as any).assign(localVarHeaderParams, options.headers); - let localVarUseFormData = false; + const localVarUseFormData = false; - let localVarRequestOptions: localVarRequest.Options = { + const localVarRequestOptions: localVarRequest.Options = { method: 'POST', qs: localVarQueryParameters, headers: localVarHeaderParams, @@ -441,7 +440,7 @@ export class WorkflowServiceApi { return interceptorPromise.then(() => { if (Object.keys(localVarFormParams).length) { if (localVarUseFormData) { - (localVarRequestOptions).formData = localVarFormParams; + (localVarRequestOptions as any).formData = localVarFormParams; } else { localVarRequestOptions.form = localVarFormParams; } @@ -479,8 +478,8 @@ export class WorkflowServiceApi { public async workflowServiceListWorkflows (namespace: string, listOptionsLabelSelector?: string, listOptionsFieldSelector?: string, listOptionsWatch?: boolean, listOptionsAllowWatchBookmarks?: boolean, listOptionsResourceVersion?: string, listOptionsResourceVersionMatch?: string, listOptionsTimeoutSeconds?: string, listOptionsLimit?: string, listOptionsContinue?: string, fields?: string, options: {headers: {[name: string]: string}} = {headers: {}}) : Promise<{ response: http.IncomingMessage; body: IoArgoprojWorkflowV1alpha1WorkflowList; }> { const localVarPath = this.basePath + '/api/v1/workflows/{namespace}' .replace('{' + 'namespace' + '}', encodeURIComponent(String(namespace))); - let localVarQueryParameters: any = {}; - let localVarHeaderParams: any = (Object).assign({}, this._defaultHeaders); + const localVarQueryParameters: any = {}; + const localVarHeaderParams: any = (Object as any).assign({}, this._defaultHeaders); const produces = ['application/json']; // give precedence to 'application/json' if (produces.indexOf('application/json') >= 0) { @@ -488,7 +487,7 @@ export class WorkflowServiceApi { } else { localVarHeaderParams.Accept = produces.join(','); } - let localVarFormParams: any = {}; + const localVarFormParams: any = {}; // verify required parameter 'namespace' is not null or undefined if (namespace === null || namespace === undefined) { @@ -532,14 +531,14 @@ export class WorkflowServiceApi { } if (fields !== undefined) { - localVarQueryParameters['fields'] = ObjectSerializer.serialize(fields, "string"); + localVarQueryParameters.fields = ObjectSerializer.serialize(fields, "string"); } - (Object).assign(localVarHeaderParams, options.headers); + (Object as any).assign(localVarHeaderParams, options.headers); - let localVarUseFormData = false; + const localVarUseFormData = false; - let localVarRequestOptions: localVarRequest.Options = { + const localVarRequestOptions: localVarRequest.Options = { method: 'GET', qs: localVarQueryParameters, headers: localVarHeaderParams, @@ -562,7 +561,7 @@ export class WorkflowServiceApi { return interceptorPromise.then(() => { if (Object.keys(localVarFormParams).length) { if (localVarUseFormData) { - (localVarRequestOptions).formData = localVarFormParams; + (localVarRequestOptions as any).formData = localVarFormParams; } else { localVarRequestOptions.form = localVarFormParams; } @@ -607,8 +606,8 @@ export class WorkflowServiceApi { .replace('{' + 'namespace' + '}', encodeURIComponent(String(namespace))) .replace('{' + 'name' + '}', encodeURIComponent(String(name))) .replace('{' + 'podName' + '}', encodeURIComponent(String(podName))); - let localVarQueryParameters: any = {}; - let localVarHeaderParams: any = (Object).assign({}, this._defaultHeaders); + const localVarQueryParameters: any = {}; + const localVarHeaderParams: any = (Object as any).assign({}, this._defaultHeaders); const produces = ['application/json']; // give precedence to 'application/json' if (produces.indexOf('application/json') >= 0) { @@ -616,7 +615,7 @@ export class WorkflowServiceApi { } else { localVarHeaderParams.Accept = produces.join(','); } - let localVarFormParams: any = {}; + const localVarFormParams: any = {}; // verify required parameter 'namespace' is not null or undefined if (namespace === null || namespace === undefined) { @@ -674,18 +673,18 @@ export class WorkflowServiceApi { } if (grep !== undefined) { - localVarQueryParameters['grep'] = ObjectSerializer.serialize(grep, "string"); + localVarQueryParameters.grep = ObjectSerializer.serialize(grep, "string"); } if (selector !== undefined) { - localVarQueryParameters['selector'] = ObjectSerializer.serialize(selector, "string"); + localVarQueryParameters.selector = ObjectSerializer.serialize(selector, "string"); } - (Object).assign(localVarHeaderParams, options.headers); + (Object as any).assign(localVarHeaderParams, options.headers); - let localVarUseFormData = false; + const localVarUseFormData = false; - let localVarRequestOptions: localVarRequest.Options = { + const localVarRequestOptions: localVarRequest.Options = { method: 'GET', qs: localVarQueryParameters, headers: localVarHeaderParams, @@ -708,7 +707,7 @@ export class WorkflowServiceApi { return interceptorPromise.then(() => { if (Object.keys(localVarFormParams).length) { if (localVarUseFormData) { - (localVarRequestOptions).formData = localVarFormParams; + (localVarRequestOptions as any).formData = localVarFormParams; } else { localVarRequestOptions.form = localVarFormParams; } @@ -739,8 +738,8 @@ export class WorkflowServiceApi { const localVarPath = this.basePath + '/api/v1/workflows/{namespace}/{name}/resubmit' .replace('{' + 'namespace' + '}', encodeURIComponent(String(namespace))) .replace('{' + 'name' + '}', encodeURIComponent(String(name))); - let localVarQueryParameters: any = {}; - let localVarHeaderParams: any = (Object).assign({}, this._defaultHeaders); + const localVarQueryParameters: any = {}; + const localVarHeaderParams: any = (Object as any).assign({}, this._defaultHeaders); const produces = ['application/json']; // give precedence to 'application/json' if (produces.indexOf('application/json') >= 0) { @@ -748,7 +747,7 @@ export class WorkflowServiceApi { } else { localVarHeaderParams.Accept = produces.join(','); } - let localVarFormParams: any = {}; + const localVarFormParams: any = {}; // verify required parameter 'namespace' is not null or undefined if (namespace === null || namespace === undefined) { @@ -765,11 +764,11 @@ export class WorkflowServiceApi { throw new Error('Required parameter body was null or undefined when calling workflowServiceResubmitWorkflow.'); } - (Object).assign(localVarHeaderParams, options.headers); + (Object as any).assign(localVarHeaderParams, options.headers); - let localVarUseFormData = false; + const localVarUseFormData = false; - let localVarRequestOptions: localVarRequest.Options = { + const localVarRequestOptions: localVarRequest.Options = { method: 'PUT', qs: localVarQueryParameters, headers: localVarHeaderParams, @@ -793,7 +792,7 @@ export class WorkflowServiceApi { return interceptorPromise.then(() => { if (Object.keys(localVarFormParams).length) { if (localVarUseFormData) { - (localVarRequestOptions).formData = localVarFormParams; + (localVarRequestOptions as any).formData = localVarFormParams; } else { localVarRequestOptions.form = localVarFormParams; } @@ -824,8 +823,8 @@ export class WorkflowServiceApi { const localVarPath = this.basePath + '/api/v1/workflows/{namespace}/{name}/resume' .replace('{' + 'namespace' + '}', encodeURIComponent(String(namespace))) .replace('{' + 'name' + '}', encodeURIComponent(String(name))); - let localVarQueryParameters: any = {}; - let localVarHeaderParams: any = (Object).assign({}, this._defaultHeaders); + const localVarQueryParameters: any = {}; + const localVarHeaderParams: any = (Object as any).assign({}, this._defaultHeaders); const produces = ['application/json']; // give precedence to 'application/json' if (produces.indexOf('application/json') >= 0) { @@ -833,7 +832,7 @@ export class WorkflowServiceApi { } else { localVarHeaderParams.Accept = produces.join(','); } - let localVarFormParams: any = {}; + const localVarFormParams: any = {}; // verify required parameter 'namespace' is not null or undefined if (namespace === null || namespace === undefined) { @@ -850,11 +849,11 @@ export class WorkflowServiceApi { throw new Error('Required parameter body was null or undefined when calling workflowServiceResumeWorkflow.'); } - (Object).assign(localVarHeaderParams, options.headers); + (Object as any).assign(localVarHeaderParams, options.headers); - let localVarUseFormData = false; + const localVarUseFormData = false; - let localVarRequestOptions: localVarRequest.Options = { + const localVarRequestOptions: localVarRequest.Options = { method: 'PUT', qs: localVarQueryParameters, headers: localVarHeaderParams, @@ -878,7 +877,7 @@ export class WorkflowServiceApi { return interceptorPromise.then(() => { if (Object.keys(localVarFormParams).length) { if (localVarUseFormData) { - (localVarRequestOptions).formData = localVarFormParams; + (localVarRequestOptions as any).formData = localVarFormParams; } else { localVarRequestOptions.form = localVarFormParams; } @@ -909,8 +908,8 @@ export class WorkflowServiceApi { const localVarPath = this.basePath + '/api/v1/workflows/{namespace}/{name}/retry' .replace('{' + 'namespace' + '}', encodeURIComponent(String(namespace))) .replace('{' + 'name' + '}', encodeURIComponent(String(name))); - let localVarQueryParameters: any = {}; - let localVarHeaderParams: any = (Object).assign({}, this._defaultHeaders); + const localVarQueryParameters: any = {}; + const localVarHeaderParams: any = (Object as any).assign({}, this._defaultHeaders); const produces = ['application/json']; // give precedence to 'application/json' if (produces.indexOf('application/json') >= 0) { @@ -918,7 +917,7 @@ export class WorkflowServiceApi { } else { localVarHeaderParams.Accept = produces.join(','); } - let localVarFormParams: any = {}; + const localVarFormParams: any = {}; // verify required parameter 'namespace' is not null or undefined if (namespace === null || namespace === undefined) { @@ -935,11 +934,11 @@ export class WorkflowServiceApi { throw new Error('Required parameter body was null or undefined when calling workflowServiceRetryWorkflow.'); } - (Object).assign(localVarHeaderParams, options.headers); + (Object as any).assign(localVarHeaderParams, options.headers); - let localVarUseFormData = false; + const localVarUseFormData = false; - let localVarRequestOptions: localVarRequest.Options = { + const localVarRequestOptions: localVarRequest.Options = { method: 'PUT', qs: localVarQueryParameters, headers: localVarHeaderParams, @@ -963,7 +962,7 @@ export class WorkflowServiceApi { return interceptorPromise.then(() => { if (Object.keys(localVarFormParams).length) { if (localVarUseFormData) { - (localVarRequestOptions).formData = localVarFormParams; + (localVarRequestOptions as any).formData = localVarFormParams; } else { localVarRequestOptions.form = localVarFormParams; } @@ -994,8 +993,8 @@ export class WorkflowServiceApi { const localVarPath = this.basePath + '/api/v1/workflows/{namespace}/{name}/set' .replace('{' + 'namespace' + '}', encodeURIComponent(String(namespace))) .replace('{' + 'name' + '}', encodeURIComponent(String(name))); - let localVarQueryParameters: any = {}; - let localVarHeaderParams: any = (Object).assign({}, this._defaultHeaders); + const localVarQueryParameters: any = {}; + const localVarHeaderParams: any = (Object as any).assign({}, this._defaultHeaders); const produces = ['application/json']; // give precedence to 'application/json' if (produces.indexOf('application/json') >= 0) { @@ -1003,7 +1002,7 @@ export class WorkflowServiceApi { } else { localVarHeaderParams.Accept = produces.join(','); } - let localVarFormParams: any = {}; + const localVarFormParams: any = {}; // verify required parameter 'namespace' is not null or undefined if (namespace === null || namespace === undefined) { @@ -1020,11 +1019,11 @@ export class WorkflowServiceApi { throw new Error('Required parameter body was null or undefined when calling workflowServiceSetWorkflow.'); } - (Object).assign(localVarHeaderParams, options.headers); + (Object as any).assign(localVarHeaderParams, options.headers); - let localVarUseFormData = false; + const localVarUseFormData = false; - let localVarRequestOptions: localVarRequest.Options = { + const localVarRequestOptions: localVarRequest.Options = { method: 'PUT', qs: localVarQueryParameters, headers: localVarHeaderParams, @@ -1048,7 +1047,7 @@ export class WorkflowServiceApi { return interceptorPromise.then(() => { if (Object.keys(localVarFormParams).length) { if (localVarUseFormData) { - (localVarRequestOptions).formData = localVarFormParams; + (localVarRequestOptions as any).formData = localVarFormParams; } else { localVarRequestOptions.form = localVarFormParams; } @@ -1079,8 +1078,8 @@ export class WorkflowServiceApi { const localVarPath = this.basePath + '/api/v1/workflows/{namespace}/{name}/stop' .replace('{' + 'namespace' + '}', encodeURIComponent(String(namespace))) .replace('{' + 'name' + '}', encodeURIComponent(String(name))); - let localVarQueryParameters: any = {}; - let localVarHeaderParams: any = (Object).assign({}, this._defaultHeaders); + const localVarQueryParameters: any = {}; + const localVarHeaderParams: any = (Object as any).assign({}, this._defaultHeaders); const produces = ['application/json']; // give precedence to 'application/json' if (produces.indexOf('application/json') >= 0) { @@ -1088,7 +1087,7 @@ export class WorkflowServiceApi { } else { localVarHeaderParams.Accept = produces.join(','); } - let localVarFormParams: any = {}; + const localVarFormParams: any = {}; // verify required parameter 'namespace' is not null or undefined if (namespace === null || namespace === undefined) { @@ -1105,11 +1104,11 @@ export class WorkflowServiceApi { throw new Error('Required parameter body was null or undefined when calling workflowServiceStopWorkflow.'); } - (Object).assign(localVarHeaderParams, options.headers); + (Object as any).assign(localVarHeaderParams, options.headers); - let localVarUseFormData = false; + const localVarUseFormData = false; - let localVarRequestOptions: localVarRequest.Options = { + const localVarRequestOptions: localVarRequest.Options = { method: 'PUT', qs: localVarQueryParameters, headers: localVarHeaderParams, @@ -1133,7 +1132,7 @@ export class WorkflowServiceApi { return interceptorPromise.then(() => { if (Object.keys(localVarFormParams).length) { if (localVarUseFormData) { - (localVarRequestOptions).formData = localVarFormParams; + (localVarRequestOptions as any).formData = localVarFormParams; } else { localVarRequestOptions.form = localVarFormParams; } @@ -1162,8 +1161,8 @@ export class WorkflowServiceApi { public async workflowServiceSubmitWorkflow (namespace: string, body: IoArgoprojWorkflowV1alpha1WorkflowSubmitRequest, options: {headers: {[name: string]: string}} = {headers: {}}) : Promise<{ response: http.IncomingMessage; body: IoArgoprojWorkflowV1alpha1Workflow; }> { const localVarPath = this.basePath + '/api/v1/workflows/{namespace}/submit' .replace('{' + 'namespace' + '}', encodeURIComponent(String(namespace))); - let localVarQueryParameters: any = {}; - let localVarHeaderParams: any = (Object).assign({}, this._defaultHeaders); + const localVarQueryParameters: any = {}; + const localVarHeaderParams: any = (Object as any).assign({}, this._defaultHeaders); const produces = ['application/json']; // give precedence to 'application/json' if (produces.indexOf('application/json') >= 0) { @@ -1171,7 +1170,7 @@ export class WorkflowServiceApi { } else { localVarHeaderParams.Accept = produces.join(','); } - let localVarFormParams: any = {}; + const localVarFormParams: any = {}; // verify required parameter 'namespace' is not null or undefined if (namespace === null || namespace === undefined) { @@ -1183,11 +1182,11 @@ export class WorkflowServiceApi { throw new Error('Required parameter body was null or undefined when calling workflowServiceSubmitWorkflow.'); } - (Object).assign(localVarHeaderParams, options.headers); + (Object as any).assign(localVarHeaderParams, options.headers); - let localVarUseFormData = false; + const localVarUseFormData = false; - let localVarRequestOptions: localVarRequest.Options = { + const localVarRequestOptions: localVarRequest.Options = { method: 'POST', qs: localVarQueryParameters, headers: localVarHeaderParams, @@ -1211,7 +1210,7 @@ export class WorkflowServiceApi { return interceptorPromise.then(() => { if (Object.keys(localVarFormParams).length) { if (localVarUseFormData) { - (localVarRequestOptions).formData = localVarFormParams; + (localVarRequestOptions as any).formData = localVarFormParams; } else { localVarRequestOptions.form = localVarFormParams; } @@ -1242,8 +1241,8 @@ export class WorkflowServiceApi { const localVarPath = this.basePath + '/api/v1/workflows/{namespace}/{name}/suspend' .replace('{' + 'namespace' + '}', encodeURIComponent(String(namespace))) .replace('{' + 'name' + '}', encodeURIComponent(String(name))); - let localVarQueryParameters: any = {}; - let localVarHeaderParams: any = (Object).assign({}, this._defaultHeaders); + const localVarQueryParameters: any = {}; + const localVarHeaderParams: any = (Object as any).assign({}, this._defaultHeaders); const produces = ['application/json']; // give precedence to 'application/json' if (produces.indexOf('application/json') >= 0) { @@ -1251,7 +1250,7 @@ export class WorkflowServiceApi { } else { localVarHeaderParams.Accept = produces.join(','); } - let localVarFormParams: any = {}; + const localVarFormParams: any = {}; // verify required parameter 'namespace' is not null or undefined if (namespace === null || namespace === undefined) { @@ -1268,11 +1267,11 @@ export class WorkflowServiceApi { throw new Error('Required parameter body was null or undefined when calling workflowServiceSuspendWorkflow.'); } - (Object).assign(localVarHeaderParams, options.headers); + (Object as any).assign(localVarHeaderParams, options.headers); - let localVarUseFormData = false; + const localVarUseFormData = false; - let localVarRequestOptions: localVarRequest.Options = { + const localVarRequestOptions: localVarRequest.Options = { method: 'PUT', qs: localVarQueryParameters, headers: localVarHeaderParams, @@ -1296,7 +1295,7 @@ export class WorkflowServiceApi { return interceptorPromise.then(() => { if (Object.keys(localVarFormParams).length) { if (localVarUseFormData) { - (localVarRequestOptions).formData = localVarFormParams; + (localVarRequestOptions as any).formData = localVarFormParams; } else { localVarRequestOptions.form = localVarFormParams; } @@ -1327,8 +1326,8 @@ export class WorkflowServiceApi { const localVarPath = this.basePath + '/api/v1/workflows/{namespace}/{name}/terminate' .replace('{' + 'namespace' + '}', encodeURIComponent(String(namespace))) .replace('{' + 'name' + '}', encodeURIComponent(String(name))); - let localVarQueryParameters: any = {}; - let localVarHeaderParams: any = (Object).assign({}, this._defaultHeaders); + const localVarQueryParameters: any = {}; + const localVarHeaderParams: any = (Object as any).assign({}, this._defaultHeaders); const produces = ['application/json']; // give precedence to 'application/json' if (produces.indexOf('application/json') >= 0) { @@ -1336,7 +1335,7 @@ export class WorkflowServiceApi { } else { localVarHeaderParams.Accept = produces.join(','); } - let localVarFormParams: any = {}; + const localVarFormParams: any = {}; // verify required parameter 'namespace' is not null or undefined if (namespace === null || namespace === undefined) { @@ -1353,11 +1352,11 @@ export class WorkflowServiceApi { throw new Error('Required parameter body was null or undefined when calling workflowServiceTerminateWorkflow.'); } - (Object).assign(localVarHeaderParams, options.headers); + (Object as any).assign(localVarHeaderParams, options.headers); - let localVarUseFormData = false; + const localVarUseFormData = false; - let localVarRequestOptions: localVarRequest.Options = { + const localVarRequestOptions: localVarRequest.Options = { method: 'PUT', qs: localVarQueryParameters, headers: localVarHeaderParams, @@ -1381,7 +1380,7 @@ export class WorkflowServiceApi { return interceptorPromise.then(() => { if (Object.keys(localVarFormParams).length) { if (localVarUseFormData) { - (localVarRequestOptions).formData = localVarFormParams; + (localVarRequestOptions as any).formData = localVarFormParams; } else { localVarRequestOptions.form = localVarFormParams; } @@ -1418,8 +1417,8 @@ export class WorkflowServiceApi { public async workflowServiceWatchEvents (namespace: string, listOptionsLabelSelector?: string, listOptionsFieldSelector?: string, listOptionsWatch?: boolean, listOptionsAllowWatchBookmarks?: boolean, listOptionsResourceVersion?: string, listOptionsResourceVersionMatch?: string, listOptionsTimeoutSeconds?: string, listOptionsLimit?: string, listOptionsContinue?: string, options: {headers: {[name: string]: string}} = {headers: {}}) : Promise<{ response: http.IncomingMessage; body: StreamResultOfIoK8sApiCoreV1Event; }> { const localVarPath = this.basePath + '/api/v1/stream/events/{namespace}' .replace('{' + 'namespace' + '}', encodeURIComponent(String(namespace))); - let localVarQueryParameters: any = {}; - let localVarHeaderParams: any = (Object).assign({}, this._defaultHeaders); + const localVarQueryParameters: any = {}; + const localVarHeaderParams: any = (Object as any).assign({}, this._defaultHeaders); const produces = ['application/json']; // give precedence to 'application/json' if (produces.indexOf('application/json') >= 0) { @@ -1427,7 +1426,7 @@ export class WorkflowServiceApi { } else { localVarHeaderParams.Accept = produces.join(','); } - let localVarFormParams: any = {}; + const localVarFormParams: any = {}; // verify required parameter 'namespace' is not null or undefined if (namespace === null || namespace === undefined) { @@ -1470,11 +1469,11 @@ export class WorkflowServiceApi { localVarQueryParameters['listOptions.continue'] = ObjectSerializer.serialize(listOptionsContinue, "string"); } - (Object).assign(localVarHeaderParams, options.headers); + (Object as any).assign(localVarHeaderParams, options.headers); - let localVarUseFormData = false; + const localVarUseFormData = false; - let localVarRequestOptions: localVarRequest.Options = { + const localVarRequestOptions: localVarRequest.Options = { method: 'GET', qs: localVarQueryParameters, headers: localVarHeaderParams, @@ -1497,7 +1496,7 @@ export class WorkflowServiceApi { return interceptorPromise.then(() => { if (Object.keys(localVarFormParams).length) { if (localVarUseFormData) { - (localVarRequestOptions).formData = localVarFormParams; + (localVarRequestOptions as any).formData = localVarFormParams; } else { localVarRequestOptions.form = localVarFormParams; } @@ -1535,8 +1534,8 @@ export class WorkflowServiceApi { public async workflowServiceWatchWorkflows (namespace: string, listOptionsLabelSelector?: string, listOptionsFieldSelector?: string, listOptionsWatch?: boolean, listOptionsAllowWatchBookmarks?: boolean, listOptionsResourceVersion?: string, listOptionsResourceVersionMatch?: string, listOptionsTimeoutSeconds?: string, listOptionsLimit?: string, listOptionsContinue?: string, fields?: string, options: {headers: {[name: string]: string}} = {headers: {}}) : Promise<{ response: http.IncomingMessage; body: StreamResultOfIoArgoprojWorkflowV1alpha1WorkflowWatchEvent; }> { const localVarPath = this.basePath + '/api/v1/workflow-events/{namespace}' .replace('{' + 'namespace' + '}', encodeURIComponent(String(namespace))); - let localVarQueryParameters: any = {}; - let localVarHeaderParams: any = (Object).assign({}, this._defaultHeaders); + const localVarQueryParameters: any = {}; + const localVarHeaderParams: any = (Object as any).assign({}, this._defaultHeaders); const produces = ['application/json']; // give precedence to 'application/json' if (produces.indexOf('application/json') >= 0) { @@ -1544,7 +1543,7 @@ export class WorkflowServiceApi { } else { localVarHeaderParams.Accept = produces.join(','); } - let localVarFormParams: any = {}; + const localVarFormParams: any = {}; // verify required parameter 'namespace' is not null or undefined if (namespace === null || namespace === undefined) { @@ -1588,14 +1587,14 @@ export class WorkflowServiceApi { } if (fields !== undefined) { - localVarQueryParameters['fields'] = ObjectSerializer.serialize(fields, "string"); + localVarQueryParameters.fields = ObjectSerializer.serialize(fields, "string"); } - (Object).assign(localVarHeaderParams, options.headers); + (Object as any).assign(localVarHeaderParams, options.headers); - let localVarUseFormData = false; + const localVarUseFormData = false; - let localVarRequestOptions: localVarRequest.Options = { + const localVarRequestOptions: localVarRequest.Options = { method: 'GET', qs: localVarQueryParameters, headers: localVarHeaderParams, @@ -1618,7 +1617,7 @@ export class WorkflowServiceApi { return interceptorPromise.then(() => { if (Object.keys(localVarFormParams).length) { if (localVarUseFormData) { - (localVarRequestOptions).formData = localVarFormParams; + (localVarRequestOptions as any).formData = localVarFormParams; } else { localVarRequestOptions.form = localVarFormParams; } @@ -1661,8 +1660,8 @@ export class WorkflowServiceApi { const localVarPath = this.basePath + '/api/v1/workflows/{namespace}/{name}/log' .replace('{' + 'namespace' + '}', encodeURIComponent(String(namespace))) .replace('{' + 'name' + '}', encodeURIComponent(String(name))); - let localVarQueryParameters: any = {}; - let localVarHeaderParams: any = (Object).assign({}, this._defaultHeaders); + const localVarQueryParameters: any = {}; + const localVarHeaderParams: any = (Object as any).assign({}, this._defaultHeaders); const produces = ['application/json']; // give precedence to 'application/json' if (produces.indexOf('application/json') >= 0) { @@ -1670,7 +1669,7 @@ export class WorkflowServiceApi { } else { localVarHeaderParams.Accept = produces.join(','); } - let localVarFormParams: any = {}; + const localVarFormParams: any = {}; // verify required parameter 'namespace' is not null or undefined if (namespace === null || namespace === undefined) { @@ -1683,7 +1682,7 @@ export class WorkflowServiceApi { } if (podName !== undefined) { - localVarQueryParameters['podName'] = ObjectSerializer.serialize(podName, "string"); + localVarQueryParameters.podName = ObjectSerializer.serialize(podName, "string"); } if (logOptionsContainer !== undefined) { @@ -1727,18 +1726,18 @@ export class WorkflowServiceApi { } if (grep !== undefined) { - localVarQueryParameters['grep'] = ObjectSerializer.serialize(grep, "string"); + localVarQueryParameters.grep = ObjectSerializer.serialize(grep, "string"); } if (selector !== undefined) { - localVarQueryParameters['selector'] = ObjectSerializer.serialize(selector, "string"); + localVarQueryParameters.selector = ObjectSerializer.serialize(selector, "string"); } - (Object).assign(localVarHeaderParams, options.headers); + (Object as any).assign(localVarHeaderParams, options.headers); - let localVarUseFormData = false; + const localVarUseFormData = false; - let localVarRequestOptions: localVarRequest.Options = { + const localVarRequestOptions: localVarRequest.Options = { method: 'GET', qs: localVarQueryParameters, headers: localVarHeaderParams, @@ -1761,7 +1760,7 @@ export class WorkflowServiceApi { return interceptorPromise.then(() => { if (Object.keys(localVarFormParams).length) { if (localVarUseFormData) { - (localVarRequestOptions).formData = localVarFormParams; + (localVarRequestOptions as any).formData = localVarFormParams; } else { localVarRequestOptions.form = localVarFormParams; } diff --git a/plugins/argo-workflows/src/api/generated/api/workflowTemplateServiceApi.ts b/plugins/argo-workflows/src/api/generated/api/workflowTemplateServiceApi.ts index db7c47b..2745f9f 100644 --- a/plugins/argo-workflows/src/api/generated/api/workflowTemplateServiceApi.ts +++ b/plugins/argo-workflows/src/api/generated/api/workflowTemplateServiceApi.ts @@ -16,7 +16,6 @@ import localVarRequest from 'request'; import http from 'http'; /* tslint:disable:no-unused-locals */ -import { GrpcGatewayRuntimeError } from '../model/grpcGatewayRuntimeError'; import { IoArgoprojWorkflowV1alpha1WorkflowTemplate } from '../model/ioArgoprojWorkflowV1alpha1WorkflowTemplate'; import { IoArgoprojWorkflowV1alpha1WorkflowTemplateCreateRequest } from '../model/ioArgoprojWorkflowV1alpha1WorkflowTemplateCreateRequest'; import { IoArgoprojWorkflowV1alpha1WorkflowTemplateLintRequest } from '../model/ioArgoprojWorkflowV1alpha1WorkflowTemplateLintRequest'; @@ -24,11 +23,11 @@ import { IoArgoprojWorkflowV1alpha1WorkflowTemplateList } from '../model/ioArgop import { IoArgoprojWorkflowV1alpha1WorkflowTemplateUpdateRequest } from '../model/ioArgoprojWorkflowV1alpha1WorkflowTemplateUpdateRequest'; import { ObjectSerializer, Authentication, VoidAuth, Interceptor } from '../model/models'; -import { HttpBasicAuth, HttpBearerAuth, ApiKeyAuth, OAuth } from '../model/models'; +import { ApiKeyAuth } from '../model/models'; -import { HttpError, RequestFile } from './apis'; +import { HttpError } from './apis'; -let defaultBasePath = 'http://localhost:2746'; +const defaultBasePath = 'http://localhost:2746'; // =============================================== // This file is autogenerated - Please do not edit @@ -44,7 +43,7 @@ export class WorkflowTemplateServiceApi { protected _useQuerystring : boolean = false; protected authentications = { - 'default': new VoidAuth(), + 'default': new VoidAuth() as Authentication, 'BearerToken': new ApiKeyAuth('header', 'Authorization'), } @@ -103,8 +102,8 @@ export class WorkflowTemplateServiceApi { public async workflowTemplateServiceCreateWorkflowTemplate (namespace: string, body: IoArgoprojWorkflowV1alpha1WorkflowTemplateCreateRequest, options: {headers: {[name: string]: string}} = {headers: {}}) : Promise<{ response: http.IncomingMessage; body: IoArgoprojWorkflowV1alpha1WorkflowTemplate; }> { const localVarPath = this.basePath + '/api/v1/workflow-templates/{namespace}' .replace('{' + 'namespace' + '}', encodeURIComponent(String(namespace))); - let localVarQueryParameters: any = {}; - let localVarHeaderParams: any = (Object).assign({}, this._defaultHeaders); + const localVarQueryParameters: any = {}; + const localVarHeaderParams: any = (Object as any).assign({}, this._defaultHeaders); const produces = ['application/json']; // give precedence to 'application/json' if (produces.indexOf('application/json') >= 0) { @@ -112,7 +111,7 @@ export class WorkflowTemplateServiceApi { } else { localVarHeaderParams.Accept = produces.join(','); } - let localVarFormParams: any = {}; + const localVarFormParams: any = {}; // verify required parameter 'namespace' is not null or undefined if (namespace === null || namespace === undefined) { @@ -124,11 +123,11 @@ export class WorkflowTemplateServiceApi { throw new Error('Required parameter body was null or undefined when calling workflowTemplateServiceCreateWorkflowTemplate.'); } - (Object).assign(localVarHeaderParams, options.headers); + (Object as any).assign(localVarHeaderParams, options.headers); - let localVarUseFormData = false; + const localVarUseFormData = false; - let localVarRequestOptions: localVarRequest.Options = { + const localVarRequestOptions: localVarRequest.Options = { method: 'POST', qs: localVarQueryParameters, headers: localVarHeaderParams, @@ -152,7 +151,7 @@ export class WorkflowTemplateServiceApi { return interceptorPromise.then(() => { if (Object.keys(localVarFormParams).length) { if (localVarUseFormData) { - (localVarRequestOptions).formData = localVarFormParams; + (localVarRequestOptions as any).formData = localVarFormParams; } else { localVarRequestOptions.form = localVarFormParams; } @@ -188,8 +187,8 @@ export class WorkflowTemplateServiceApi { const localVarPath = this.basePath + '/api/v1/workflow-templates/{namespace}/{name}' .replace('{' + 'namespace' + '}', encodeURIComponent(String(namespace))) .replace('{' + 'name' + '}', encodeURIComponent(String(name))); - let localVarQueryParameters: any = {}; - let localVarHeaderParams: any = (Object).assign({}, this._defaultHeaders); + const localVarQueryParameters: any = {}; + const localVarHeaderParams: any = (Object as any).assign({}, this._defaultHeaders); const produces = ['application/json']; // give precedence to 'application/json' if (produces.indexOf('application/json') >= 0) { @@ -197,7 +196,7 @@ export class WorkflowTemplateServiceApi { } else { localVarHeaderParams.Accept = produces.join(','); } - let localVarFormParams: any = {}; + const localVarFormParams: any = {}; // verify required parameter 'namespace' is not null or undefined if (namespace === null || namespace === undefined) { @@ -233,11 +232,11 @@ export class WorkflowTemplateServiceApi { localVarQueryParameters['deleteOptions.dryRun'] = ObjectSerializer.serialize(deleteOptionsDryRun, "Array"); } - (Object).assign(localVarHeaderParams, options.headers); + (Object as any).assign(localVarHeaderParams, options.headers); - let localVarUseFormData = false; + const localVarUseFormData = false; - let localVarRequestOptions: localVarRequest.Options = { + const localVarRequestOptions: localVarRequest.Options = { method: 'DELETE', qs: localVarQueryParameters, headers: localVarHeaderParams, @@ -260,7 +259,7 @@ export class WorkflowTemplateServiceApi { return interceptorPromise.then(() => { if (Object.keys(localVarFormParams).length) { if (localVarUseFormData) { - (localVarRequestOptions).formData = localVarFormParams; + (localVarRequestOptions as any).formData = localVarFormParams; } else { localVarRequestOptions.form = localVarFormParams; } @@ -291,8 +290,8 @@ export class WorkflowTemplateServiceApi { const localVarPath = this.basePath + '/api/v1/workflow-templates/{namespace}/{name}' .replace('{' + 'namespace' + '}', encodeURIComponent(String(namespace))) .replace('{' + 'name' + '}', encodeURIComponent(String(name))); - let localVarQueryParameters: any = {}; - let localVarHeaderParams: any = (Object).assign({}, this._defaultHeaders); + const localVarQueryParameters: any = {}; + const localVarHeaderParams: any = (Object as any).assign({}, this._defaultHeaders); const produces = ['application/json']; // give precedence to 'application/json' if (produces.indexOf('application/json') >= 0) { @@ -300,7 +299,7 @@ export class WorkflowTemplateServiceApi { } else { localVarHeaderParams.Accept = produces.join(','); } - let localVarFormParams: any = {}; + const localVarFormParams: any = {}; // verify required parameter 'namespace' is not null or undefined if (namespace === null || namespace === undefined) { @@ -316,11 +315,11 @@ export class WorkflowTemplateServiceApi { localVarQueryParameters['getOptions.resourceVersion'] = ObjectSerializer.serialize(getOptionsResourceVersion, "string"); } - (Object).assign(localVarHeaderParams, options.headers); + (Object as any).assign(localVarHeaderParams, options.headers); - let localVarUseFormData = false; + const localVarUseFormData = false; - let localVarRequestOptions: localVarRequest.Options = { + const localVarRequestOptions: localVarRequest.Options = { method: 'GET', qs: localVarQueryParameters, headers: localVarHeaderParams, @@ -343,7 +342,7 @@ export class WorkflowTemplateServiceApi { return interceptorPromise.then(() => { if (Object.keys(localVarFormParams).length) { if (localVarUseFormData) { - (localVarRequestOptions).formData = localVarFormParams; + (localVarRequestOptions as any).formData = localVarFormParams; } else { localVarRequestOptions.form = localVarFormParams; } @@ -372,8 +371,8 @@ export class WorkflowTemplateServiceApi { public async workflowTemplateServiceLintWorkflowTemplate (namespace: string, body: IoArgoprojWorkflowV1alpha1WorkflowTemplateLintRequest, options: {headers: {[name: string]: string}} = {headers: {}}) : Promise<{ response: http.IncomingMessage; body: IoArgoprojWorkflowV1alpha1WorkflowTemplate; }> { const localVarPath = this.basePath + '/api/v1/workflow-templates/{namespace}/lint' .replace('{' + 'namespace' + '}', encodeURIComponent(String(namespace))); - let localVarQueryParameters: any = {}; - let localVarHeaderParams: any = (Object).assign({}, this._defaultHeaders); + const localVarQueryParameters: any = {}; + const localVarHeaderParams: any = (Object as any).assign({}, this._defaultHeaders); const produces = ['application/json']; // give precedence to 'application/json' if (produces.indexOf('application/json') >= 0) { @@ -381,7 +380,7 @@ export class WorkflowTemplateServiceApi { } else { localVarHeaderParams.Accept = produces.join(','); } - let localVarFormParams: any = {}; + const localVarFormParams: any = {}; // verify required parameter 'namespace' is not null or undefined if (namespace === null || namespace === undefined) { @@ -393,11 +392,11 @@ export class WorkflowTemplateServiceApi { throw new Error('Required parameter body was null or undefined when calling workflowTemplateServiceLintWorkflowTemplate.'); } - (Object).assign(localVarHeaderParams, options.headers); + (Object as any).assign(localVarHeaderParams, options.headers); - let localVarUseFormData = false; + const localVarUseFormData = false; - let localVarRequestOptions: localVarRequest.Options = { + const localVarRequestOptions: localVarRequest.Options = { method: 'POST', qs: localVarQueryParameters, headers: localVarHeaderParams, @@ -421,7 +420,7 @@ export class WorkflowTemplateServiceApi { return interceptorPromise.then(() => { if (Object.keys(localVarFormParams).length) { if (localVarUseFormData) { - (localVarRequestOptions).formData = localVarFormParams; + (localVarRequestOptions as any).formData = localVarFormParams; } else { localVarRequestOptions.form = localVarFormParams; } @@ -458,8 +457,8 @@ export class WorkflowTemplateServiceApi { public async workflowTemplateServiceListWorkflowTemplates (namespace: string, listOptionsLabelSelector?: string, listOptionsFieldSelector?: string, listOptionsWatch?: boolean, listOptionsAllowWatchBookmarks?: boolean, listOptionsResourceVersion?: string, listOptionsResourceVersionMatch?: string, listOptionsTimeoutSeconds?: string, listOptionsLimit?: string, listOptionsContinue?: string, options: {headers: {[name: string]: string}} = {headers: {}}) : Promise<{ response: http.IncomingMessage; body: IoArgoprojWorkflowV1alpha1WorkflowTemplateList; }> { const localVarPath = this.basePath + '/api/v1/workflow-templates/{namespace}' .replace('{' + 'namespace' + '}', encodeURIComponent(String(namespace))); - let localVarQueryParameters: any = {}; - let localVarHeaderParams: any = (Object).assign({}, this._defaultHeaders); + const localVarQueryParameters: any = {}; + const localVarHeaderParams: any = (Object as any).assign({}, this._defaultHeaders); const produces = ['application/json']; // give precedence to 'application/json' if (produces.indexOf('application/json') >= 0) { @@ -467,7 +466,7 @@ export class WorkflowTemplateServiceApi { } else { localVarHeaderParams.Accept = produces.join(','); } - let localVarFormParams: any = {}; + const localVarFormParams: any = {}; // verify required parameter 'namespace' is not null or undefined if (namespace === null || namespace === undefined) { @@ -510,11 +509,11 @@ export class WorkflowTemplateServiceApi { localVarQueryParameters['listOptions.continue'] = ObjectSerializer.serialize(listOptionsContinue, "string"); } - (Object).assign(localVarHeaderParams, options.headers); + (Object as any).assign(localVarHeaderParams, options.headers); - let localVarUseFormData = false; + const localVarUseFormData = false; - let localVarRequestOptions: localVarRequest.Options = { + const localVarRequestOptions: localVarRequest.Options = { method: 'GET', qs: localVarQueryParameters, headers: localVarHeaderParams, @@ -537,7 +536,7 @@ export class WorkflowTemplateServiceApi { return interceptorPromise.then(() => { if (Object.keys(localVarFormParams).length) { if (localVarUseFormData) { - (localVarRequestOptions).formData = localVarFormParams; + (localVarRequestOptions as any).formData = localVarFormParams; } else { localVarRequestOptions.form = localVarFormParams; } @@ -568,8 +567,8 @@ export class WorkflowTemplateServiceApi { const localVarPath = this.basePath + '/api/v1/workflow-templates/{namespace}/{name}' .replace('{' + 'namespace' + '}', encodeURIComponent(String(namespace))) .replace('{' + 'name' + '}', encodeURIComponent(String(name))); - let localVarQueryParameters: any = {}; - let localVarHeaderParams: any = (Object).assign({}, this._defaultHeaders); + const localVarQueryParameters: any = {}; + const localVarHeaderParams: any = (Object as any).assign({}, this._defaultHeaders); const produces = ['application/json']; // give precedence to 'application/json' if (produces.indexOf('application/json') >= 0) { @@ -577,7 +576,7 @@ export class WorkflowTemplateServiceApi { } else { localVarHeaderParams.Accept = produces.join(','); } - let localVarFormParams: any = {}; + const localVarFormParams: any = {}; // verify required parameter 'namespace' is not null or undefined if (namespace === null || namespace === undefined) { @@ -594,11 +593,11 @@ export class WorkflowTemplateServiceApi { throw new Error('Required parameter body was null or undefined when calling workflowTemplateServiceUpdateWorkflowTemplate.'); } - (Object).assign(localVarHeaderParams, options.headers); + (Object as any).assign(localVarHeaderParams, options.headers); - let localVarUseFormData = false; + const localVarUseFormData = false; - let localVarRequestOptions: localVarRequest.Options = { + const localVarRequestOptions: localVarRequest.Options = { method: 'PUT', qs: localVarQueryParameters, headers: localVarHeaderParams, @@ -622,7 +621,7 @@ export class WorkflowTemplateServiceApi { return interceptorPromise.then(() => { if (Object.keys(localVarFormParams).length) { if (localVarUseFormData) { - (localVarRequestOptions).formData = localVarFormParams; + (localVarRequestOptions as any).formData = localVarFormParams; } else { localVarRequestOptions.form = localVarFormParams; } diff --git a/plugins/argo-workflows/src/api/generated/model/eventsourceCreateEventSourceRequest.ts b/plugins/argo-workflows/src/api/generated/model/eventsourceCreateEventSourceRequest.ts index 504f2d2..a529d24 100644 --- a/plugins/argo-workflows/src/api/generated/model/eventsourceCreateEventSourceRequest.ts +++ b/plugins/argo-workflows/src/api/generated/model/eventsourceCreateEventSourceRequest.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; import { IoArgoprojEventsV1alpha1EventSource } from './ioArgoprojEventsV1alpha1EventSource'; export class EventsourceCreateEventSourceRequest { diff --git a/plugins/argo-workflows/src/api/generated/model/eventsourceEventSourceWatchEvent.ts b/plugins/argo-workflows/src/api/generated/model/eventsourceEventSourceWatchEvent.ts index 786c837..abb9b1a 100644 --- a/plugins/argo-workflows/src/api/generated/model/eventsourceEventSourceWatchEvent.ts +++ b/plugins/argo-workflows/src/api/generated/model/eventsourceEventSourceWatchEvent.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; import { IoArgoprojEventsV1alpha1EventSource } from './ioArgoprojEventsV1alpha1EventSource'; export class EventsourceEventSourceWatchEvent { diff --git a/plugins/argo-workflows/src/api/generated/model/eventsourceLogEntry.ts b/plugins/argo-workflows/src/api/generated/model/eventsourceLogEntry.ts index 6ceda43..ab6c26b 100644 --- a/plugins/argo-workflows/src/api/generated/model/eventsourceLogEntry.ts +++ b/plugins/argo-workflows/src/api/generated/model/eventsourceLogEntry.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; export class EventsourceLogEntry { 'eventName'?: string; diff --git a/plugins/argo-workflows/src/api/generated/model/eventsourceUpdateEventSourceRequest.ts b/plugins/argo-workflows/src/api/generated/model/eventsourceUpdateEventSourceRequest.ts index f092d28..8ede219 100644 --- a/plugins/argo-workflows/src/api/generated/model/eventsourceUpdateEventSourceRequest.ts +++ b/plugins/argo-workflows/src/api/generated/model/eventsourceUpdateEventSourceRequest.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; import { IoArgoprojEventsV1alpha1EventSource } from './ioArgoprojEventsV1alpha1EventSource'; export class EventsourceUpdateEventSourceRequest { diff --git a/plugins/argo-workflows/src/api/generated/model/googleProtobufAny.ts b/plugins/argo-workflows/src/api/generated/model/googleProtobufAny.ts index e462073..8bc1662 100644 --- a/plugins/argo-workflows/src/api/generated/model/googleProtobufAny.ts +++ b/plugins/argo-workflows/src/api/generated/model/googleProtobufAny.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; export class GoogleProtobufAny { 'typeUrl'?: string; diff --git a/plugins/argo-workflows/src/api/generated/model/grpcGatewayRuntimeError.ts b/plugins/argo-workflows/src/api/generated/model/grpcGatewayRuntimeError.ts index 68c38b0..c278849 100644 --- a/plugins/argo-workflows/src/api/generated/model/grpcGatewayRuntimeError.ts +++ b/plugins/argo-workflows/src/api/generated/model/grpcGatewayRuntimeError.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; import { GoogleProtobufAny } from './googleProtobufAny'; export class GrpcGatewayRuntimeError { diff --git a/plugins/argo-workflows/src/api/generated/model/grpcGatewayRuntimeStreamError.ts b/plugins/argo-workflows/src/api/generated/model/grpcGatewayRuntimeStreamError.ts index 2db1d57..af9132a 100644 --- a/plugins/argo-workflows/src/api/generated/model/grpcGatewayRuntimeStreamError.ts +++ b/plugins/argo-workflows/src/api/generated/model/grpcGatewayRuntimeStreamError.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; import { GoogleProtobufAny } from './googleProtobufAny'; export class GrpcGatewayRuntimeStreamError { diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1AMQPConsumeConfig.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1AMQPConsumeConfig.ts index 4254d70..8cb27ee 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1AMQPConsumeConfig.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1AMQPConsumeConfig.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; export class IoArgoprojEventsV1alpha1AMQPConsumeConfig { 'autoAck'?: boolean; diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1AMQPEventSource.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1AMQPEventSource.ts index cc4f56f..6bc61e1 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1AMQPEventSource.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1AMQPEventSource.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; import { IoArgoprojEventsV1alpha1AMQPConsumeConfig } from './ioArgoprojEventsV1alpha1AMQPConsumeConfig'; import { IoArgoprojEventsV1alpha1AMQPExchangeDeclareConfig } from './ioArgoprojEventsV1alpha1AMQPExchangeDeclareConfig'; import { IoArgoprojEventsV1alpha1AMQPQueueBindConfig } from './ioArgoprojEventsV1alpha1AMQPQueueBindConfig'; diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1AMQPExchangeDeclareConfig.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1AMQPExchangeDeclareConfig.ts index e20f2ba..769c285 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1AMQPExchangeDeclareConfig.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1AMQPExchangeDeclareConfig.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; export class IoArgoprojEventsV1alpha1AMQPExchangeDeclareConfig { 'autoDelete'?: boolean; diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1AMQPQueueBindConfig.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1AMQPQueueBindConfig.ts index 7d89bd0..36e225c 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1AMQPQueueBindConfig.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1AMQPQueueBindConfig.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; export class IoArgoprojEventsV1alpha1AMQPQueueBindConfig { 'noWait'?: boolean; diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1AMQPQueueDeclareConfig.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1AMQPQueueDeclareConfig.ts index c8bb493..0306c69 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1AMQPQueueDeclareConfig.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1AMQPQueueDeclareConfig.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; export class IoArgoprojEventsV1alpha1AMQPQueueDeclareConfig { 'arguments'?: string; diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1AWSLambdaTrigger.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1AWSLambdaTrigger.ts index a666abc..2745274 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1AWSLambdaTrigger.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1AWSLambdaTrigger.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; import { IoArgoprojEventsV1alpha1TriggerParameter } from './ioArgoprojEventsV1alpha1TriggerParameter'; import { IoK8sApiCoreV1SecretKeySelector } from './ioK8sApiCoreV1SecretKeySelector'; diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1Amount.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1Amount.ts index bf98086..4ed48e1 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1Amount.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1Amount.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; /** * Amount represent a numeric amount. diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1ArgoWorkflowTrigger.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1ArgoWorkflowTrigger.ts index 787c02b..8780df3 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1ArgoWorkflowTrigger.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1ArgoWorkflowTrigger.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; import { IoArgoprojEventsV1alpha1ArtifactLocation } from './ioArgoprojEventsV1alpha1ArtifactLocation'; import { IoArgoprojEventsV1alpha1TriggerParameter } from './ioArgoprojEventsV1alpha1TriggerParameter'; diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1ArtifactLocation.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1ArtifactLocation.ts index 07f72d9..c5a4333 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1ArtifactLocation.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1ArtifactLocation.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; import { IoArgoprojEventsV1alpha1FileArtifact } from './ioArgoprojEventsV1alpha1FileArtifact'; import { IoArgoprojEventsV1alpha1GitArtifact } from './ioArgoprojEventsV1alpha1GitArtifact'; import { IoArgoprojEventsV1alpha1Resource } from './ioArgoprojEventsV1alpha1Resource'; diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1AzureEventHubsTrigger.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1AzureEventHubsTrigger.ts index f0c11ec..7f97c81 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1AzureEventHubsTrigger.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1AzureEventHubsTrigger.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; import { IoArgoprojEventsV1alpha1TriggerParameter } from './ioArgoprojEventsV1alpha1TriggerParameter'; import { IoK8sApiCoreV1SecretKeySelector } from './ioK8sApiCoreV1SecretKeySelector'; diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1AzureEventsHubEventSource.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1AzureEventsHubEventSource.ts index cb2116b..463b861 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1AzureEventsHubEventSource.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1AzureEventsHubEventSource.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; import { IoArgoprojEventsV1alpha1EventSourceFilter } from './ioArgoprojEventsV1alpha1EventSourceFilter'; import { IoK8sApiCoreV1SecretKeySelector } from './ioK8sApiCoreV1SecretKeySelector'; diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1Backoff.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1Backoff.ts index 6612ae0..cf1bd6d 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1Backoff.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1Backoff.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; import { IoArgoprojEventsV1alpha1Amount } from './ioArgoprojEventsV1alpha1Amount'; import { IoArgoprojEventsV1alpha1Int64OrString } from './ioArgoprojEventsV1alpha1Int64OrString'; diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1BasicAuth.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1BasicAuth.ts index 577d5db..03afe96 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1BasicAuth.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1BasicAuth.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; import { IoK8sApiCoreV1SecretKeySelector } from './ioK8sApiCoreV1SecretKeySelector'; export class IoArgoprojEventsV1alpha1BasicAuth { diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1BitbucketAuth.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1BitbucketAuth.ts index 149fdc6..1ae2dcf 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1BitbucketAuth.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1BitbucketAuth.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; import { IoArgoprojEventsV1alpha1BitbucketBasicAuth } from './ioArgoprojEventsV1alpha1BitbucketBasicAuth'; import { IoK8sApiCoreV1SecretKeySelector } from './ioK8sApiCoreV1SecretKeySelector'; diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1BitbucketBasicAuth.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1BitbucketBasicAuth.ts index 4130146..9db46e1 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1BitbucketBasicAuth.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1BitbucketBasicAuth.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; import { IoK8sApiCoreV1SecretKeySelector } from './ioK8sApiCoreV1SecretKeySelector'; export class IoArgoprojEventsV1alpha1BitbucketBasicAuth { diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1BitbucketEventSource.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1BitbucketEventSource.ts index e0aadb1..9c60516 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1BitbucketEventSource.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1BitbucketEventSource.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; import { IoArgoprojEventsV1alpha1BitbucketAuth } from './ioArgoprojEventsV1alpha1BitbucketAuth'; import { IoArgoprojEventsV1alpha1BitbucketRepository } from './ioArgoprojEventsV1alpha1BitbucketRepository'; import { IoArgoprojEventsV1alpha1EventSourceFilter } from './ioArgoprojEventsV1alpha1EventSourceFilter'; diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1BitbucketRepository.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1BitbucketRepository.ts index 6dfee78..1c83938 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1BitbucketRepository.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1BitbucketRepository.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; export class IoArgoprojEventsV1alpha1BitbucketRepository { 'owner'?: string; diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1BitbucketServerEventSource.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1BitbucketServerEventSource.ts index 56ee727..3fdda0f 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1BitbucketServerEventSource.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1BitbucketServerEventSource.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; import { IoArgoprojEventsV1alpha1BitbucketServerRepository } from './ioArgoprojEventsV1alpha1BitbucketServerRepository'; import { IoArgoprojEventsV1alpha1EventSourceFilter } from './ioArgoprojEventsV1alpha1EventSourceFilter'; import { IoArgoprojEventsV1alpha1WebhookContext } from './ioArgoprojEventsV1alpha1WebhookContext'; diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1BitbucketServerRepository.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1BitbucketServerRepository.ts index 9a5a8ed..8f410f3 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1BitbucketServerRepository.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1BitbucketServerRepository.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; export class IoArgoprojEventsV1alpha1BitbucketServerRepository { 'projectKey'?: string; diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1CalendarEventSource.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1CalendarEventSource.ts index 452bef6..410c2ff 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1CalendarEventSource.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1CalendarEventSource.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; import { IoArgoprojEventsV1alpha1EventPersistence } from './ioArgoprojEventsV1alpha1EventPersistence'; import { IoArgoprojEventsV1alpha1EventSourceFilter } from './ioArgoprojEventsV1alpha1EventSourceFilter'; diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1CatchupConfiguration.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1CatchupConfiguration.ts index b16590d..737ef81 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1CatchupConfiguration.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1CatchupConfiguration.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; export class IoArgoprojEventsV1alpha1CatchupConfiguration { 'enabled'?: boolean; diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1Condition.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1Condition.ts index 034eb36..d53bad0 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1Condition.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1Condition.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; export class IoArgoprojEventsV1alpha1Condition { /** diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1ConditionsResetByTime.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1ConditionsResetByTime.ts index 6c4f011..f8cb3cd 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1ConditionsResetByTime.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1ConditionsResetByTime.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; export class IoArgoprojEventsV1alpha1ConditionsResetByTime { 'cron'?: string; diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1ConditionsResetCriteria.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1ConditionsResetCriteria.ts index 1dda896..3e335f1 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1ConditionsResetCriteria.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1ConditionsResetCriteria.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; import { IoArgoprojEventsV1alpha1ConditionsResetByTime } from './ioArgoprojEventsV1alpha1ConditionsResetByTime'; export class IoArgoprojEventsV1alpha1ConditionsResetCriteria { diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1ConfigMapPersistence.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1ConfigMapPersistence.ts index af51446..278caf2 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1ConfigMapPersistence.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1ConfigMapPersistence.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; export class IoArgoprojEventsV1alpha1ConfigMapPersistence { 'createIfNotExist'?: boolean; diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1CustomTrigger.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1CustomTrigger.ts index 53792f2..8f29a9c 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1CustomTrigger.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1CustomTrigger.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; import { IoArgoprojEventsV1alpha1TriggerParameter } from './ioArgoprojEventsV1alpha1TriggerParameter'; import { IoK8sApiCoreV1SecretKeySelector } from './ioK8sApiCoreV1SecretKeySelector'; diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1DataFilter.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1DataFilter.ts index f18fea7..aa1a624 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1DataFilter.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1DataFilter.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; export class IoArgoprojEventsV1alpha1DataFilter { /** diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1EmitterEventSource.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1EmitterEventSource.ts index 18f9002..c3d5929 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1EmitterEventSource.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1EmitterEventSource.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; import { IoArgoprojEventsV1alpha1Backoff } from './ioArgoprojEventsV1alpha1Backoff'; import { IoArgoprojEventsV1alpha1EventSourceFilter } from './ioArgoprojEventsV1alpha1EventSourceFilter'; import { IoArgoprojEventsV1alpha1TLSConfig } from './ioArgoprojEventsV1alpha1TLSConfig'; diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1EventContext.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1EventContext.ts index 39f87be..2f6adf7 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1EventContext.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1EventContext.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; export class IoArgoprojEventsV1alpha1EventContext { /** diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1EventDependency.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1EventDependency.ts index 26db62a..dcdf42d 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1EventDependency.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1EventDependency.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; import { IoArgoprojEventsV1alpha1EventDependencyFilter } from './ioArgoprojEventsV1alpha1EventDependencyFilter'; import { IoArgoprojEventsV1alpha1EventDependencyTransformer } from './ioArgoprojEventsV1alpha1EventDependencyTransformer'; diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1EventDependencyFilter.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1EventDependencyFilter.ts index 26f4a9c..251124f 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1EventDependencyFilter.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1EventDependencyFilter.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; import { IoArgoprojEventsV1alpha1DataFilter } from './ioArgoprojEventsV1alpha1DataFilter'; import { IoArgoprojEventsV1alpha1EventContext } from './ioArgoprojEventsV1alpha1EventContext'; import { IoArgoprojEventsV1alpha1ExprFilter } from './ioArgoprojEventsV1alpha1ExprFilter'; diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1EventDependencyTransformer.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1EventDependencyTransformer.ts index 7704c34..0257fe8 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1EventDependencyTransformer.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1EventDependencyTransformer.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; export class IoArgoprojEventsV1alpha1EventDependencyTransformer { 'jq'?: string; diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1EventPersistence.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1EventPersistence.ts index a682caf..6a05213 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1EventPersistence.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1EventPersistence.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; import { IoArgoprojEventsV1alpha1CatchupConfiguration } from './ioArgoprojEventsV1alpha1CatchupConfiguration'; import { IoArgoprojEventsV1alpha1ConfigMapPersistence } from './ioArgoprojEventsV1alpha1ConfigMapPersistence'; diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1EventSource.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1EventSource.ts index 3920889..95f6118 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1EventSource.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1EventSource.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; import { IoArgoprojEventsV1alpha1EventSourceSpec } from './ioArgoprojEventsV1alpha1EventSourceSpec'; import { IoArgoprojEventsV1alpha1EventSourceStatus } from './ioArgoprojEventsV1alpha1EventSourceStatus'; import { IoK8sApimachineryPkgApisMetaV1ObjectMeta } from './ioK8sApimachineryPkgApisMetaV1ObjectMeta'; diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1EventSourceFilter.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1EventSourceFilter.ts index 2bc6788..530bbec 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1EventSourceFilter.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1EventSourceFilter.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; export class IoArgoprojEventsV1alpha1EventSourceFilter { 'expression'?: string; diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1EventSourceList.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1EventSourceList.ts index 8f7d22e..188c060 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1EventSourceList.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1EventSourceList.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; import { IoArgoprojEventsV1alpha1EventSource } from './ioArgoprojEventsV1alpha1EventSource'; import { IoK8sApimachineryPkgApisMetaV1ListMeta } from './ioK8sApimachineryPkgApisMetaV1ListMeta'; diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1EventSourceSpec.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1EventSourceSpec.ts index c6f9a6e..fb0a82a 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1EventSourceSpec.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1EventSourceSpec.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; import { IoArgoprojEventsV1alpha1AMQPEventSource } from './ioArgoprojEventsV1alpha1AMQPEventSource'; import { IoArgoprojEventsV1alpha1AzureEventsHubEventSource } from './ioArgoprojEventsV1alpha1AzureEventsHubEventSource'; import { IoArgoprojEventsV1alpha1BitbucketEventSource } from './ioArgoprojEventsV1alpha1BitbucketEventSource'; diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1EventSourceStatus.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1EventSourceStatus.ts index b74e7b9..d56b846 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1EventSourceStatus.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1EventSourceStatus.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; import { IoArgoprojEventsV1alpha1Status } from './ioArgoprojEventsV1alpha1Status'; export class IoArgoprojEventsV1alpha1EventSourceStatus { diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1ExprFilter.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1ExprFilter.ts index aeb6eef..fd85cea 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1ExprFilter.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1ExprFilter.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; import { IoArgoprojEventsV1alpha1PayloadField } from './ioArgoprojEventsV1alpha1PayloadField'; export class IoArgoprojEventsV1alpha1ExprFilter { diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1FileArtifact.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1FileArtifact.ts index c2fcecf..bd98754 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1FileArtifact.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1FileArtifact.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; export class IoArgoprojEventsV1alpha1FileArtifact { 'path'?: string; diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1FileEventSource.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1FileEventSource.ts index 14e0065..32b1b27 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1FileEventSource.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1FileEventSource.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; import { IoArgoprojEventsV1alpha1EventSourceFilter } from './ioArgoprojEventsV1alpha1EventSourceFilter'; import { IoArgoprojEventsV1alpha1WatchPathConfig } from './ioArgoprojEventsV1alpha1WatchPathConfig'; diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1GenericEventSource.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1GenericEventSource.ts index f390a49..7996095 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1GenericEventSource.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1GenericEventSource.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; import { IoArgoprojEventsV1alpha1EventSourceFilter } from './ioArgoprojEventsV1alpha1EventSourceFilter'; import { IoK8sApiCoreV1SecretKeySelector } from './ioK8sApiCoreV1SecretKeySelector'; diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1GitArtifact.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1GitArtifact.ts index 63fd6e8..e786d4b 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1GitArtifact.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1GitArtifact.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; import { IoArgoprojEventsV1alpha1GitCreds } from './ioArgoprojEventsV1alpha1GitCreds'; import { IoArgoprojEventsV1alpha1GitRemoteConfig } from './ioArgoprojEventsV1alpha1GitRemoteConfig'; import { IoK8sApiCoreV1SecretKeySelector } from './ioK8sApiCoreV1SecretKeySelector'; diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1GitCreds.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1GitCreds.ts index 4352f54..f6adda5 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1GitCreds.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1GitCreds.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; import { IoK8sApiCoreV1SecretKeySelector } from './ioK8sApiCoreV1SecretKeySelector'; export class IoArgoprojEventsV1alpha1GitCreds { diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1GitRemoteConfig.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1GitRemoteConfig.ts index f18dd11..448352f 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1GitRemoteConfig.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1GitRemoteConfig.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; export class IoArgoprojEventsV1alpha1GitRemoteConfig { /** diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1GithubAppCreds.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1GithubAppCreds.ts index 8cea156..20ba460 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1GithubAppCreds.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1GithubAppCreds.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; import { IoK8sApiCoreV1SecretKeySelector } from './ioK8sApiCoreV1SecretKeySelector'; export class IoArgoprojEventsV1alpha1GithubAppCreds { diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1GithubEventSource.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1GithubEventSource.ts index 8ca39fe..b609517 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1GithubEventSource.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1GithubEventSource.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; import { IoArgoprojEventsV1alpha1EventSourceFilter } from './ioArgoprojEventsV1alpha1EventSourceFilter'; import { IoArgoprojEventsV1alpha1GithubAppCreds } from './ioArgoprojEventsV1alpha1GithubAppCreds'; import { IoArgoprojEventsV1alpha1OwnedRepositories } from './ioArgoprojEventsV1alpha1OwnedRepositories'; diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1GitlabEventSource.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1GitlabEventSource.ts index 975ba86..836f600 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1GitlabEventSource.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1GitlabEventSource.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; import { IoArgoprojEventsV1alpha1EventSourceFilter } from './ioArgoprojEventsV1alpha1EventSourceFilter'; import { IoArgoprojEventsV1alpha1WebhookContext } from './ioArgoprojEventsV1alpha1WebhookContext'; import { IoK8sApiCoreV1SecretKeySelector } from './ioK8sApiCoreV1SecretKeySelector'; diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1HDFSEventSource.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1HDFSEventSource.ts index a4821a9..6edbd25 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1HDFSEventSource.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1HDFSEventSource.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; import { IoArgoprojEventsV1alpha1EventSourceFilter } from './ioArgoprojEventsV1alpha1EventSourceFilter'; import { IoArgoprojEventsV1alpha1WatchPathConfig } from './ioArgoprojEventsV1alpha1WatchPathConfig'; import { IoK8sApiCoreV1ConfigMapKeySelector } from './ioK8sApiCoreV1ConfigMapKeySelector'; diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1HTTPTrigger.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1HTTPTrigger.ts index 5fe0f89..c18186f 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1HTTPTrigger.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1HTTPTrigger.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; import { IoArgoprojEventsV1alpha1BasicAuth } from './ioArgoprojEventsV1alpha1BasicAuth'; import { IoArgoprojEventsV1alpha1SecureHeader } from './ioArgoprojEventsV1alpha1SecureHeader'; import { IoArgoprojEventsV1alpha1TLSConfig } from './ioArgoprojEventsV1alpha1TLSConfig'; diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1Int64OrString.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1Int64OrString.ts index 4bd7909..c03fdb9 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1Int64OrString.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1Int64OrString.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; export class IoArgoprojEventsV1alpha1Int64OrString { 'int64Val'?: string; diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1K8SResourcePolicy.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1K8SResourcePolicy.ts index 67fa627..4828fc6 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1K8SResourcePolicy.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1K8SResourcePolicy.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; import { IoArgoprojEventsV1alpha1Backoff } from './ioArgoprojEventsV1alpha1Backoff'; export class IoArgoprojEventsV1alpha1K8SResourcePolicy { diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1KafkaConsumerGroup.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1KafkaConsumerGroup.ts index 0c9f08e..7a17834 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1KafkaConsumerGroup.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1KafkaConsumerGroup.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; export class IoArgoprojEventsV1alpha1KafkaConsumerGroup { 'groupName'?: string; diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1KafkaEventSource.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1KafkaEventSource.ts index 156fa05..f4b2b4c 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1KafkaEventSource.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1KafkaEventSource.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; import { IoArgoprojEventsV1alpha1Backoff } from './ioArgoprojEventsV1alpha1Backoff'; import { IoArgoprojEventsV1alpha1EventSourceFilter } from './ioArgoprojEventsV1alpha1EventSourceFilter'; import { IoArgoprojEventsV1alpha1KafkaConsumerGroup } from './ioArgoprojEventsV1alpha1KafkaConsumerGroup'; diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1KafkaTrigger.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1KafkaTrigger.ts index 1d59149..0428236 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1KafkaTrigger.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1KafkaTrigger.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; import { IoArgoprojEventsV1alpha1SASLConfig } from './ioArgoprojEventsV1alpha1SASLConfig'; import { IoArgoprojEventsV1alpha1TLSConfig } from './ioArgoprojEventsV1alpha1TLSConfig'; import { IoArgoprojEventsV1alpha1TriggerParameter } from './ioArgoprojEventsV1alpha1TriggerParameter'; diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1LogTrigger.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1LogTrigger.ts index 85f1584..155292e 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1LogTrigger.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1LogTrigger.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; export class IoArgoprojEventsV1alpha1LogTrigger { 'intervalSeconds'?: string; diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1MQTTEventSource.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1MQTTEventSource.ts index c3255ab..94c62b3 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1MQTTEventSource.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1MQTTEventSource.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; import { IoArgoprojEventsV1alpha1Backoff } from './ioArgoprojEventsV1alpha1Backoff'; import { IoArgoprojEventsV1alpha1EventSourceFilter } from './ioArgoprojEventsV1alpha1EventSourceFilter'; import { IoArgoprojEventsV1alpha1TLSConfig } from './ioArgoprojEventsV1alpha1TLSConfig'; diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1Metadata.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1Metadata.ts index de88269..12a71e1 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1Metadata.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1Metadata.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; export class IoArgoprojEventsV1alpha1Metadata { 'annotations'?: { [key: string]: string; }; diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1NATSAuth.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1NATSAuth.ts index c935a6a..0576fad 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1NATSAuth.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1NATSAuth.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; import { IoArgoprojEventsV1alpha1BasicAuth } from './ioArgoprojEventsV1alpha1BasicAuth'; import { IoK8sApiCoreV1SecretKeySelector } from './ioK8sApiCoreV1SecretKeySelector'; diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1NATSEventsSource.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1NATSEventsSource.ts index d691f4a..a19a567 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1NATSEventsSource.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1NATSEventsSource.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; import { IoArgoprojEventsV1alpha1Backoff } from './ioArgoprojEventsV1alpha1Backoff'; import { IoArgoprojEventsV1alpha1EventSourceFilter } from './ioArgoprojEventsV1alpha1EventSourceFilter'; import { IoArgoprojEventsV1alpha1NATSAuth } from './ioArgoprojEventsV1alpha1NATSAuth'; diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1NATSTrigger.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1NATSTrigger.ts index 0e6ca06..2ce4da3 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1NATSTrigger.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1NATSTrigger.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; import { IoArgoprojEventsV1alpha1TLSConfig } from './ioArgoprojEventsV1alpha1TLSConfig'; import { IoArgoprojEventsV1alpha1TriggerParameter } from './ioArgoprojEventsV1alpha1TriggerParameter'; diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1NSQEventSource.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1NSQEventSource.ts index 263204d..b688ff0 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1NSQEventSource.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1NSQEventSource.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; import { IoArgoprojEventsV1alpha1Backoff } from './ioArgoprojEventsV1alpha1Backoff'; import { IoArgoprojEventsV1alpha1EventSourceFilter } from './ioArgoprojEventsV1alpha1EventSourceFilter'; import { IoArgoprojEventsV1alpha1TLSConfig } from './ioArgoprojEventsV1alpha1TLSConfig'; diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1OpenWhiskTrigger.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1OpenWhiskTrigger.ts index dfc726f..669ec43 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1OpenWhiskTrigger.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1OpenWhiskTrigger.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; import { IoArgoprojEventsV1alpha1TriggerParameter } from './ioArgoprojEventsV1alpha1TriggerParameter'; import { IoK8sApiCoreV1SecretKeySelector } from './ioK8sApiCoreV1SecretKeySelector'; diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1OwnedRepositories.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1OwnedRepositories.ts index e5245df..7b960c7 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1OwnedRepositories.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1OwnedRepositories.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; export class IoArgoprojEventsV1alpha1OwnedRepositories { 'names'?: Array; diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1PayloadField.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1PayloadField.ts index e86eab4..30bb23f 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1PayloadField.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1PayloadField.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; /** * PayloadField binds a value at path within the event payload against a name. diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1PubSubEventSource.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1PubSubEventSource.ts index bb45414..29526a0 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1PubSubEventSource.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1PubSubEventSource.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; import { IoArgoprojEventsV1alpha1EventSourceFilter } from './ioArgoprojEventsV1alpha1EventSourceFilter'; import { IoK8sApiCoreV1SecretKeySelector } from './ioK8sApiCoreV1SecretKeySelector'; diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1PulsarEventSource.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1PulsarEventSource.ts index b4208ad..a6dd782 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1PulsarEventSource.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1PulsarEventSource.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; import { IoArgoprojEventsV1alpha1Backoff } from './ioArgoprojEventsV1alpha1Backoff'; import { IoArgoprojEventsV1alpha1EventSourceFilter } from './ioArgoprojEventsV1alpha1EventSourceFilter'; import { IoArgoprojEventsV1alpha1TLSConfig } from './ioArgoprojEventsV1alpha1TLSConfig'; diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1PulsarTrigger.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1PulsarTrigger.ts index 0da44da..de16b40 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1PulsarTrigger.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1PulsarTrigger.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; import { IoArgoprojEventsV1alpha1Backoff } from './ioArgoprojEventsV1alpha1Backoff'; import { IoArgoprojEventsV1alpha1TLSConfig } from './ioArgoprojEventsV1alpha1TLSConfig'; import { IoArgoprojEventsV1alpha1TriggerParameter } from './ioArgoprojEventsV1alpha1TriggerParameter'; diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1RateLimit.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1RateLimit.ts index 9241352..1da02dc 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1RateLimit.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1RateLimit.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; export class IoArgoprojEventsV1alpha1RateLimit { 'requestsPerUnit'?: number; diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1RedisEventSource.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1RedisEventSource.ts index 0f18125..51ebb03 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1RedisEventSource.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1RedisEventSource.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; import { IoArgoprojEventsV1alpha1EventSourceFilter } from './ioArgoprojEventsV1alpha1EventSourceFilter'; import { IoArgoprojEventsV1alpha1TLSConfig } from './ioArgoprojEventsV1alpha1TLSConfig'; import { IoK8sApiCoreV1SecretKeySelector } from './ioK8sApiCoreV1SecretKeySelector'; diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1RedisStreamEventSource.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1RedisStreamEventSource.ts index f02bbd7..52d797f 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1RedisStreamEventSource.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1RedisStreamEventSource.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; import { IoArgoprojEventsV1alpha1EventSourceFilter } from './ioArgoprojEventsV1alpha1EventSourceFilter'; import { IoArgoprojEventsV1alpha1TLSConfig } from './ioArgoprojEventsV1alpha1TLSConfig'; import { IoK8sApiCoreV1SecretKeySelector } from './ioK8sApiCoreV1SecretKeySelector'; diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1Resource.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1Resource.ts index e5c0f65..d0a1881 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1Resource.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1Resource.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; /** * Resource represent arbitrary structured data. diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1ResourceEventSource.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1ResourceEventSource.ts index 540f78c..91b343f 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1ResourceEventSource.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1ResourceEventSource.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; import { IoArgoprojEventsV1alpha1ResourceFilter } from './ioArgoprojEventsV1alpha1ResourceFilter'; import { IoK8sApimachineryPkgApisMetaV1GroupVersionResource } from './ioK8sApimachineryPkgApisMetaV1GroupVersionResource'; diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1ResourceFilter.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1ResourceFilter.ts index ab02668..3af967e 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1ResourceFilter.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1ResourceFilter.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; import { IoArgoprojEventsV1alpha1Selector } from './ioArgoprojEventsV1alpha1Selector'; export class IoArgoprojEventsV1alpha1ResourceFilter { diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1S3Artifact.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1S3Artifact.ts index e774969..68ad109 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1S3Artifact.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1S3Artifact.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; import { IoArgoprojEventsV1alpha1S3Bucket } from './ioArgoprojEventsV1alpha1S3Bucket'; import { IoArgoprojEventsV1alpha1S3Filter } from './ioArgoprojEventsV1alpha1S3Filter'; import { IoK8sApiCoreV1SecretKeySelector } from './ioK8sApiCoreV1SecretKeySelector'; diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1S3Bucket.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1S3Bucket.ts index c1562cf..16a2a4d 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1S3Bucket.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1S3Bucket.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; export class IoArgoprojEventsV1alpha1S3Bucket { 'key'?: string; diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1S3Filter.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1S3Filter.ts index b578ff0..e42368a 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1S3Filter.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1S3Filter.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; export class IoArgoprojEventsV1alpha1S3Filter { 'prefix'?: string; diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1SASLConfig.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1SASLConfig.ts index 3d64052..fae6ca3 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1SASLConfig.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1SASLConfig.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; import { IoK8sApiCoreV1SecretKeySelector } from './ioK8sApiCoreV1SecretKeySelector'; export class IoArgoprojEventsV1alpha1SASLConfig { diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1SNSEventSource.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1SNSEventSource.ts index 9e17b90..4d2735d 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1SNSEventSource.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1SNSEventSource.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; import { IoArgoprojEventsV1alpha1EventSourceFilter } from './ioArgoprojEventsV1alpha1EventSourceFilter'; import { IoArgoprojEventsV1alpha1WebhookContext } from './ioArgoprojEventsV1alpha1WebhookContext'; import { IoK8sApiCoreV1SecretKeySelector } from './ioK8sApiCoreV1SecretKeySelector'; diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1SQSEventSource.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1SQSEventSource.ts index 04899e5..0a0ebc3 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1SQSEventSource.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1SQSEventSource.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; import { IoArgoprojEventsV1alpha1EventSourceFilter } from './ioArgoprojEventsV1alpha1EventSourceFilter'; import { IoK8sApiCoreV1SecretKeySelector } from './ioK8sApiCoreV1SecretKeySelector'; diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1SecureHeader.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1SecureHeader.ts index 87448ab..bf5bbe5 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1SecureHeader.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1SecureHeader.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; import { IoArgoprojEventsV1alpha1ValueFromSource } from './ioArgoprojEventsV1alpha1ValueFromSource'; export class IoArgoprojEventsV1alpha1SecureHeader { diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1Selector.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1Selector.ts index 2f02064..eabbc0f 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1Selector.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1Selector.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; /** * Selector represents conditional operation to select K8s objects. diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1Sensor.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1Sensor.ts index 2cb90d3..d03711c 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1Sensor.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1Sensor.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; import { IoArgoprojEventsV1alpha1SensorSpec } from './ioArgoprojEventsV1alpha1SensorSpec'; import { IoArgoprojEventsV1alpha1SensorStatus } from './ioArgoprojEventsV1alpha1SensorStatus'; import { IoK8sApimachineryPkgApisMetaV1ObjectMeta } from './ioK8sApimachineryPkgApisMetaV1ObjectMeta'; diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1SensorList.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1SensorList.ts index b6d9bda..7107d72 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1SensorList.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1SensorList.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; import { IoArgoprojEventsV1alpha1Sensor } from './ioArgoprojEventsV1alpha1Sensor'; import { IoK8sApimachineryPkgApisMetaV1ListMeta } from './ioK8sApimachineryPkgApisMetaV1ListMeta'; diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1SensorSpec.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1SensorSpec.ts index 0c6807a..75182fb 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1SensorSpec.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1SensorSpec.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; import { IoArgoprojEventsV1alpha1EventDependency } from './ioArgoprojEventsV1alpha1EventDependency'; import { IoArgoprojEventsV1alpha1Template } from './ioArgoprojEventsV1alpha1Template'; import { IoArgoprojEventsV1alpha1Trigger } from './ioArgoprojEventsV1alpha1Trigger'; diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1SensorStatus.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1SensorStatus.ts index 3a694a6..9aaf44b 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1SensorStatus.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1SensorStatus.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; import { IoArgoprojEventsV1alpha1Status } from './ioArgoprojEventsV1alpha1Status'; /** diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1Service.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1Service.ts index c45bf36..aea5b3a 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1Service.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1Service.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; import { IoK8sApiCoreV1ServicePort } from './ioK8sApiCoreV1ServicePort'; export class IoArgoprojEventsV1alpha1Service { diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1SlackEventSource.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1SlackEventSource.ts index a84530c..18d9e8a 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1SlackEventSource.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1SlackEventSource.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; import { IoArgoprojEventsV1alpha1EventSourceFilter } from './ioArgoprojEventsV1alpha1EventSourceFilter'; import { IoArgoprojEventsV1alpha1WebhookContext } from './ioArgoprojEventsV1alpha1WebhookContext'; import { IoK8sApiCoreV1SecretKeySelector } from './ioK8sApiCoreV1SecretKeySelector'; diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1SlackTrigger.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1SlackTrigger.ts index b8fbedb..81e4f3f 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1SlackTrigger.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1SlackTrigger.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; import { IoArgoprojEventsV1alpha1TriggerParameter } from './ioArgoprojEventsV1alpha1TriggerParameter'; import { IoK8sApiCoreV1SecretKeySelector } from './ioK8sApiCoreV1SecretKeySelector'; diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1StandardK8STrigger.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1StandardK8STrigger.ts index 6d2846f..4faa1af 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1StandardK8STrigger.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1StandardK8STrigger.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; import { IoArgoprojEventsV1alpha1ArtifactLocation } from './ioArgoprojEventsV1alpha1ArtifactLocation'; import { IoArgoprojEventsV1alpha1TriggerParameter } from './ioArgoprojEventsV1alpha1TriggerParameter'; diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1Status.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1Status.ts index ffef172..be3869f 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1Status.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1Status.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; import { IoArgoprojEventsV1alpha1Condition } from './ioArgoprojEventsV1alpha1Condition'; /** diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1StatusPolicy.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1StatusPolicy.ts index 3483bcd..037fc4b 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1StatusPolicy.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1StatusPolicy.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; export class IoArgoprojEventsV1alpha1StatusPolicy { 'allow'?: Array; diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1StorageGridEventSource.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1StorageGridEventSource.ts index d82d1c4..a77c53d 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1StorageGridEventSource.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1StorageGridEventSource.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; import { IoArgoprojEventsV1alpha1StorageGridFilter } from './ioArgoprojEventsV1alpha1StorageGridFilter'; import { IoArgoprojEventsV1alpha1WebhookContext } from './ioArgoprojEventsV1alpha1WebhookContext'; import { IoK8sApiCoreV1SecretKeySelector } from './ioK8sApiCoreV1SecretKeySelector'; diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1StorageGridFilter.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1StorageGridFilter.ts index d6c7425..ce65aab 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1StorageGridFilter.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1StorageGridFilter.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; export class IoArgoprojEventsV1alpha1StorageGridFilter { 'prefix'?: string; diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1StripeEventSource.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1StripeEventSource.ts index 4a68e1f..242ca5f 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1StripeEventSource.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1StripeEventSource.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; import { IoArgoprojEventsV1alpha1WebhookContext } from './ioArgoprojEventsV1alpha1WebhookContext'; import { IoK8sApiCoreV1SecretKeySelector } from './ioK8sApiCoreV1SecretKeySelector'; diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1TLSConfig.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1TLSConfig.ts index 0c656e3..2ae2969 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1TLSConfig.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1TLSConfig.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; import { IoK8sApiCoreV1SecretKeySelector } from './ioK8sApiCoreV1SecretKeySelector'; /** diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1Template.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1Template.ts index b7ad143..03fec9f 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1Template.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1Template.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; import { IoArgoprojEventsV1alpha1Metadata } from './ioArgoprojEventsV1alpha1Metadata'; import { IoK8sApiCoreV1Affinity } from './ioK8sApiCoreV1Affinity'; import { IoK8sApiCoreV1Container } from './ioK8sApiCoreV1Container'; diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1TimeFilter.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1TimeFilter.ts index c53d41b..63c497f 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1TimeFilter.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1TimeFilter.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; /** * TimeFilter describes a window in time. It filters out events that occur outside the time limits. In other words, only events that occur after Start and before Stop will pass this filter. diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1Trigger.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1Trigger.ts index 8bab8d5..3cc5d5f 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1Trigger.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1Trigger.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; import { IoArgoprojEventsV1alpha1Backoff } from './ioArgoprojEventsV1alpha1Backoff'; import { IoArgoprojEventsV1alpha1RateLimit } from './ioArgoprojEventsV1alpha1RateLimit'; import { IoArgoprojEventsV1alpha1TriggerParameter } from './ioArgoprojEventsV1alpha1TriggerParameter'; diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1TriggerParameter.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1TriggerParameter.ts index c682ae9..834006f 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1TriggerParameter.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1TriggerParameter.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; import { IoArgoprojEventsV1alpha1TriggerParameterSource } from './ioArgoprojEventsV1alpha1TriggerParameterSource'; export class IoArgoprojEventsV1alpha1TriggerParameter { diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1TriggerParameterSource.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1TriggerParameterSource.ts index 4cee827..0869bce 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1TriggerParameterSource.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1TriggerParameterSource.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; export class IoArgoprojEventsV1alpha1TriggerParameterSource { /** diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1TriggerPolicy.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1TriggerPolicy.ts index 337effc..5af4a69 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1TriggerPolicy.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1TriggerPolicy.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; import { IoArgoprojEventsV1alpha1K8SResourcePolicy } from './ioArgoprojEventsV1alpha1K8SResourcePolicy'; import { IoArgoprojEventsV1alpha1StatusPolicy } from './ioArgoprojEventsV1alpha1StatusPolicy'; diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1TriggerTemplate.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1TriggerTemplate.ts index 11c2449..6bc187c 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1TriggerTemplate.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1TriggerTemplate.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; import { IoArgoprojEventsV1alpha1AWSLambdaTrigger } from './ioArgoprojEventsV1alpha1AWSLambdaTrigger'; import { IoArgoprojEventsV1alpha1ArgoWorkflowTrigger } from './ioArgoprojEventsV1alpha1ArgoWorkflowTrigger'; import { IoArgoprojEventsV1alpha1AzureEventHubsTrigger } from './ioArgoprojEventsV1alpha1AzureEventHubsTrigger'; diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1URLArtifact.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1URLArtifact.ts index 6f9a264..450668e 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1URLArtifact.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1URLArtifact.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; /** * URLArtifact contains information about an artifact at an http endpoint. diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1ValueFromSource.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1ValueFromSource.ts index fa5d475..9eb5c9c 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1ValueFromSource.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1ValueFromSource.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; import { IoK8sApiCoreV1ConfigMapKeySelector } from './ioK8sApiCoreV1ConfigMapKeySelector'; import { IoK8sApiCoreV1SecretKeySelector } from './ioK8sApiCoreV1SecretKeySelector'; diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1WatchPathConfig.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1WatchPathConfig.ts index 30d2053..b4cd28f 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1WatchPathConfig.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1WatchPathConfig.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; export class IoArgoprojEventsV1alpha1WatchPathConfig { 'directory'?: string; diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1WebhookContext.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1WebhookContext.ts index 3a25c91..811cc52 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1WebhookContext.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1WebhookContext.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; import { IoK8sApiCoreV1SecretKeySelector } from './ioK8sApiCoreV1SecretKeySelector'; export class IoArgoprojEventsV1alpha1WebhookContext { diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1WebhookEventSource.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1WebhookEventSource.ts index 97476d7..b711111 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1WebhookEventSource.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojEventsV1alpha1WebhookEventSource.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; import { IoArgoprojEventsV1alpha1EventSourceFilter } from './ioArgoprojEventsV1alpha1EventSourceFilter'; import { IoArgoprojEventsV1alpha1WebhookContext } from './ioArgoprojEventsV1alpha1WebhookContext'; diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1ArchiveStrategy.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1ArchiveStrategy.ts index 6ea41a3..c5d4152 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1ArchiveStrategy.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1ArchiveStrategy.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; import { IoArgoprojWorkflowV1alpha1TarStrategy } from './ioArgoprojWorkflowV1alpha1TarStrategy'; /** diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1Arguments.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1Arguments.ts index 7f7f7bf..5257cef 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1Arguments.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1Arguments.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; import { IoArgoprojWorkflowV1alpha1Artifact } from './ioArgoprojWorkflowV1alpha1Artifact'; import { IoArgoprojWorkflowV1alpha1Parameter } from './ioArgoprojWorkflowV1alpha1Parameter'; diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1ArtGCStatus.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1ArtGCStatus.ts index 231558f..a7bcd9e 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1ArtGCStatus.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1ArtGCStatus.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; /** * ArtGCStatus maintains state related to ArtifactGC diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1Artifact.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1Artifact.ts index 969801f..41c69cc 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1Artifact.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1Artifact.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; import { IoArgoprojWorkflowV1alpha1ArchiveStrategy } from './ioArgoprojWorkflowV1alpha1ArchiveStrategy'; import { IoArgoprojWorkflowV1alpha1ArtifactGC } from './ioArgoprojWorkflowV1alpha1ArtifactGC'; import { IoArgoprojWorkflowV1alpha1ArtifactoryArtifact } from './ioArgoprojWorkflowV1alpha1ArtifactoryArtifact'; diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1ArtifactGC.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1ArtifactGC.ts index c1ba2c9..a14080d 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1ArtifactGC.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1ArtifactGC.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; import { IoArgoprojWorkflowV1alpha1Metadata } from './ioArgoprojWorkflowV1alpha1Metadata'; /** diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1ArtifactGCSpec.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1ArtifactGCSpec.ts index 8391eb3..9db1aef 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1ArtifactGCSpec.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1ArtifactGCSpec.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; import { IoArgoprojWorkflowV1alpha1ArtifactNodeSpec } from './ioArgoprojWorkflowV1alpha1ArtifactNodeSpec'; /** diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1ArtifactGCStatus.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1ArtifactGCStatus.ts index e318f6d..9585374 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1ArtifactGCStatus.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1ArtifactGCStatus.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; import { IoArgoprojWorkflowV1alpha1ArtifactResultNodeStatus } from './ioArgoprojWorkflowV1alpha1ArtifactResultNodeStatus'; /** diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1ArtifactLocation.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1ArtifactLocation.ts index 843e17d..eb016e4 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1ArtifactLocation.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1ArtifactLocation.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; import { IoArgoprojWorkflowV1alpha1ArtifactoryArtifact } from './ioArgoprojWorkflowV1alpha1ArtifactoryArtifact'; import { IoArgoprojWorkflowV1alpha1AzureArtifact } from './ioArgoprojWorkflowV1alpha1AzureArtifact'; import { IoArgoprojWorkflowV1alpha1GCSArtifact } from './ioArgoprojWorkflowV1alpha1GCSArtifact'; diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1ArtifactNodeSpec.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1ArtifactNodeSpec.ts index 8fbab08..507ecca 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1ArtifactNodeSpec.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1ArtifactNodeSpec.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; import { IoArgoprojWorkflowV1alpha1Artifact } from './ioArgoprojWorkflowV1alpha1Artifact'; import { IoArgoprojWorkflowV1alpha1ArtifactLocation } from './ioArgoprojWorkflowV1alpha1ArtifactLocation'; diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1ArtifactPaths.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1ArtifactPaths.ts index 373a044..1ea2f1a 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1ArtifactPaths.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1ArtifactPaths.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; import { IoArgoprojWorkflowV1alpha1ArchiveStrategy } from './ioArgoprojWorkflowV1alpha1ArchiveStrategy'; import { IoArgoprojWorkflowV1alpha1ArtifactGC } from './ioArgoprojWorkflowV1alpha1ArtifactGC'; import { IoArgoprojWorkflowV1alpha1ArtifactoryArtifact } from './ioArgoprojWorkflowV1alpha1ArtifactoryArtifact'; diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1ArtifactRepository.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1ArtifactRepository.ts index 36d7e19..8651e30 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1ArtifactRepository.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1ArtifactRepository.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; import { IoArgoprojWorkflowV1alpha1ArtifactoryArtifactRepository } from './ioArgoprojWorkflowV1alpha1ArtifactoryArtifactRepository'; import { IoArgoprojWorkflowV1alpha1AzureArtifactRepository } from './ioArgoprojWorkflowV1alpha1AzureArtifactRepository'; import { IoArgoprojWorkflowV1alpha1GCSArtifactRepository } from './ioArgoprojWorkflowV1alpha1GCSArtifactRepository'; diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1ArtifactRepositoryRef.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1ArtifactRepositoryRef.ts index e683cc1..70de1fa 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1ArtifactRepositoryRef.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1ArtifactRepositoryRef.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; export class IoArgoprojWorkflowV1alpha1ArtifactRepositoryRef { /** diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1ArtifactRepositoryRefStatus.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1ArtifactRepositoryRefStatus.ts index ecee65d..66b5479 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1ArtifactRepositoryRefStatus.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1ArtifactRepositoryRefStatus.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; import { IoArgoprojWorkflowV1alpha1ArtifactRepository } from './ioArgoprojWorkflowV1alpha1ArtifactRepository'; export class IoArgoprojWorkflowV1alpha1ArtifactRepositoryRefStatus { diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1ArtifactResult.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1ArtifactResult.ts index 89b7a2c..97edb43 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1ArtifactResult.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1ArtifactResult.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; /** * ArtifactResult describes the result of attempting to delete a given Artifact diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1ArtifactResultNodeStatus.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1ArtifactResultNodeStatus.ts index cc88927..108529c 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1ArtifactResultNodeStatus.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1ArtifactResultNodeStatus.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; import { IoArgoprojWorkflowV1alpha1ArtifactResult } from './ioArgoprojWorkflowV1alpha1ArtifactResult'; /** diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1ArtifactoryArtifact.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1ArtifactoryArtifact.ts index 4451d9f..8d146eb 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1ArtifactoryArtifact.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1ArtifactoryArtifact.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; import { IoK8sApiCoreV1SecretKeySelector } from './ioK8sApiCoreV1SecretKeySelector'; /** diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1ArtifactoryArtifactRepository.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1ArtifactoryArtifactRepository.ts index 9958eb9..d6b1aa1 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1ArtifactoryArtifactRepository.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1ArtifactoryArtifactRepository.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; import { IoK8sApiCoreV1SecretKeySelector } from './ioK8sApiCoreV1SecretKeySelector'; /** diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1AzureArtifact.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1AzureArtifact.ts index 577ce06..13cf2e0 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1AzureArtifact.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1AzureArtifact.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; import { IoK8sApiCoreV1SecretKeySelector } from './ioK8sApiCoreV1SecretKeySelector'; /** diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1AzureArtifactRepository.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1AzureArtifactRepository.ts index 5bfc4ef..7ac756e 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1AzureArtifactRepository.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1AzureArtifactRepository.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; import { IoK8sApiCoreV1SecretKeySelector } from './ioK8sApiCoreV1SecretKeySelector'; /** diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1Backoff.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1Backoff.ts index 949881e..bd02839 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1Backoff.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1Backoff.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; /** * Backoff is a backoff strategy to use within retryStrategy diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1BasicAuth.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1BasicAuth.ts index 3a3fb74..b614f6c 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1BasicAuth.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1BasicAuth.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; import { IoK8sApiCoreV1SecretKeySelector } from './ioK8sApiCoreV1SecretKeySelector'; /** diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1Cache.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1Cache.ts index ce4c4ee..b458ed7 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1Cache.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1Cache.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; import { IoK8sApiCoreV1ConfigMapKeySelector } from './ioK8sApiCoreV1ConfigMapKeySelector'; /** diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1ClientCertAuth.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1ClientCertAuth.ts index 629fb56..703f032 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1ClientCertAuth.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1ClientCertAuth.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; import { IoK8sApiCoreV1SecretKeySelector } from './ioK8sApiCoreV1SecretKeySelector'; /** diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1ClusterWorkflowTemplate.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1ClusterWorkflowTemplate.ts index ddbd0ff..9f1760f 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1ClusterWorkflowTemplate.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1ClusterWorkflowTemplate.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; import { IoArgoprojWorkflowV1alpha1WorkflowSpec } from './ioArgoprojWorkflowV1alpha1WorkflowSpec'; import { IoK8sApimachineryPkgApisMetaV1ObjectMeta } from './ioK8sApimachineryPkgApisMetaV1ObjectMeta'; diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1ClusterWorkflowTemplateCreateRequest.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1ClusterWorkflowTemplateCreateRequest.ts index a615627..a09ae44 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1ClusterWorkflowTemplateCreateRequest.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1ClusterWorkflowTemplateCreateRequest.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; import { IoArgoprojWorkflowV1alpha1ClusterWorkflowTemplate } from './ioArgoprojWorkflowV1alpha1ClusterWorkflowTemplate'; import { IoK8sApimachineryPkgApisMetaV1CreateOptions } from './ioK8sApimachineryPkgApisMetaV1CreateOptions'; diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1ClusterWorkflowTemplateLintRequest.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1ClusterWorkflowTemplateLintRequest.ts index 6e4e04d..89dd16d 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1ClusterWorkflowTemplateLintRequest.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1ClusterWorkflowTemplateLintRequest.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; import { IoArgoprojWorkflowV1alpha1ClusterWorkflowTemplate } from './ioArgoprojWorkflowV1alpha1ClusterWorkflowTemplate'; import { IoK8sApimachineryPkgApisMetaV1CreateOptions } from './ioK8sApimachineryPkgApisMetaV1CreateOptions'; diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1ClusterWorkflowTemplateList.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1ClusterWorkflowTemplateList.ts index 1e41162..7ab98f7 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1ClusterWorkflowTemplateList.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1ClusterWorkflowTemplateList.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; import { IoArgoprojWorkflowV1alpha1ClusterWorkflowTemplate } from './ioArgoprojWorkflowV1alpha1ClusterWorkflowTemplate'; import { IoK8sApimachineryPkgApisMetaV1ListMeta } from './ioK8sApimachineryPkgApisMetaV1ListMeta'; diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1ClusterWorkflowTemplateUpdateRequest.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1ClusterWorkflowTemplateUpdateRequest.ts index efe270e..7ebb956 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1ClusterWorkflowTemplateUpdateRequest.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1ClusterWorkflowTemplateUpdateRequest.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; import { IoArgoprojWorkflowV1alpha1ClusterWorkflowTemplate } from './ioArgoprojWorkflowV1alpha1ClusterWorkflowTemplate'; export class IoArgoprojWorkflowV1alpha1ClusterWorkflowTemplateUpdateRequest { diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1CollectEventRequest.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1CollectEventRequest.ts index 1d3ac15..5744a6f 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1CollectEventRequest.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1CollectEventRequest.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; export class IoArgoprojWorkflowV1alpha1CollectEventRequest { 'name'?: string; diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1Column.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1Column.ts index c072be5..2a072f3 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1Column.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1Column.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; /** * Column is a custom column that will be exposed in the Workflow List View. diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1Condition.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1Condition.ts index 2b58b0c..b2920ea 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1Condition.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1Condition.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; export class IoArgoprojWorkflowV1alpha1Condition { /** diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1ContainerNode.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1ContainerNode.ts index 3b72c7d..d95bd92 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1ContainerNode.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1ContainerNode.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; import { IoK8sApiCoreV1ContainerPort } from './ioK8sApiCoreV1ContainerPort'; import { IoK8sApiCoreV1EnvFromSource } from './ioK8sApiCoreV1EnvFromSource'; import { IoK8sApiCoreV1EnvVar } from './ioK8sApiCoreV1EnvVar'; diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1ContainerSetRetryStrategy.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1ContainerSetRetryStrategy.ts index 245e11d..a98c9a9 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1ContainerSetRetryStrategy.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1ContainerSetRetryStrategy.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; export class IoArgoprojWorkflowV1alpha1ContainerSetRetryStrategy { /** diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1ContainerSetTemplate.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1ContainerSetTemplate.ts index a7b241a..0d70f70 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1ContainerSetTemplate.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1ContainerSetTemplate.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; import { IoArgoprojWorkflowV1alpha1ContainerNode } from './ioArgoprojWorkflowV1alpha1ContainerNode'; import { IoArgoprojWorkflowV1alpha1ContainerSetRetryStrategy } from './ioArgoprojWorkflowV1alpha1ContainerSetRetryStrategy'; import { IoK8sApiCoreV1VolumeMount } from './ioK8sApiCoreV1VolumeMount'; diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1ContinueOn.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1ContinueOn.ts index b28e683..06fe8d6 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1ContinueOn.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1ContinueOn.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; /** * ContinueOn defines if a workflow should continue even if a task or step fails/errors. It can be specified if the workflow should continue when the pod errors, fails or both. diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1Counter.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1Counter.ts index dc48d30..372dca1 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1Counter.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1Counter.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; /** * Counter is a Counter prometheus metric diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1CreateCronWorkflowRequest.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1CreateCronWorkflowRequest.ts index b81ecc5..50f482b 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1CreateCronWorkflowRequest.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1CreateCronWorkflowRequest.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; import { IoArgoprojWorkflowV1alpha1CronWorkflow } from './ioArgoprojWorkflowV1alpha1CronWorkflow'; import { IoK8sApimachineryPkgApisMetaV1CreateOptions } from './ioK8sApimachineryPkgApisMetaV1CreateOptions'; diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1CreateS3BucketOptions.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1CreateS3BucketOptions.ts index 7f75346..51d5cbd 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1CreateS3BucketOptions.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1CreateS3BucketOptions.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; /** * CreateS3BucketOptions options used to determine automatic automatic bucket-creation process diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1CronWorkflow.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1CronWorkflow.ts index eaefe9b..1a50db9 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1CronWorkflow.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1CronWorkflow.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; import { IoArgoprojWorkflowV1alpha1CronWorkflowSpec } from './ioArgoprojWorkflowV1alpha1CronWorkflowSpec'; import { IoArgoprojWorkflowV1alpha1CronWorkflowStatus } from './ioArgoprojWorkflowV1alpha1CronWorkflowStatus'; import { IoK8sApimachineryPkgApisMetaV1ObjectMeta } from './ioK8sApimachineryPkgApisMetaV1ObjectMeta'; diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1CronWorkflowList.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1CronWorkflowList.ts index b6827c1..bb061cd 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1CronWorkflowList.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1CronWorkflowList.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; import { IoArgoprojWorkflowV1alpha1CronWorkflow } from './ioArgoprojWorkflowV1alpha1CronWorkflow'; import { IoK8sApimachineryPkgApisMetaV1ListMeta } from './ioK8sApimachineryPkgApisMetaV1ListMeta'; diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1CronWorkflowResumeRequest.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1CronWorkflowResumeRequest.ts index 12692df..547973d 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1CronWorkflowResumeRequest.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1CronWorkflowResumeRequest.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; export class IoArgoprojWorkflowV1alpha1CronWorkflowResumeRequest { 'name'?: string; diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1CronWorkflowSpec.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1CronWorkflowSpec.ts index 5caf511..2bdf948 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1CronWorkflowSpec.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1CronWorkflowSpec.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; import { IoArgoprojWorkflowV1alpha1WorkflowSpec } from './ioArgoprojWorkflowV1alpha1WorkflowSpec'; import { IoK8sApimachineryPkgApisMetaV1ObjectMeta } from './ioK8sApimachineryPkgApisMetaV1ObjectMeta'; diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1CronWorkflowStatus.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1CronWorkflowStatus.ts index 3a0aa3d..69555b1 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1CronWorkflowStatus.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1CronWorkflowStatus.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; import { IoArgoprojWorkflowV1alpha1Condition } from './ioArgoprojWorkflowV1alpha1Condition'; import { IoK8sApiCoreV1ObjectReference } from './ioK8sApiCoreV1ObjectReference'; diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1CronWorkflowSuspendRequest.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1CronWorkflowSuspendRequest.ts index 4d19a54..8e9f59a 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1CronWorkflowSuspendRequest.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1CronWorkflowSuspendRequest.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; export class IoArgoprojWorkflowV1alpha1CronWorkflowSuspendRequest { 'name'?: string; diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1DAGTask.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1DAGTask.ts index 3a8d083..3c8b21e 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1DAGTask.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1DAGTask.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; import { IoArgoprojWorkflowV1alpha1Arguments } from './ioArgoprojWorkflowV1alpha1Arguments'; import { IoArgoprojWorkflowV1alpha1ContinueOn } from './ioArgoprojWorkflowV1alpha1ContinueOn'; import { IoArgoprojWorkflowV1alpha1LifecycleHook } from './ioArgoprojWorkflowV1alpha1LifecycleHook'; diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1DAGTemplate.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1DAGTemplate.ts index decdf25..2673554 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1DAGTemplate.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1DAGTemplate.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; import { IoArgoprojWorkflowV1alpha1DAGTask } from './ioArgoprojWorkflowV1alpha1DAGTask'; /** diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1Data.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1Data.ts index f92b2f1..5f37289 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1Data.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1Data.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; import { IoArgoprojWorkflowV1alpha1DataSource } from './ioArgoprojWorkflowV1alpha1DataSource'; import { IoArgoprojWorkflowV1alpha1TransformationStep } from './ioArgoprojWorkflowV1alpha1TransformationStep'; diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1DataSource.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1DataSource.ts index 3d53140..6682f5e 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1DataSource.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1DataSource.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; import { IoArgoprojWorkflowV1alpha1ArtifactPaths } from './ioArgoprojWorkflowV1alpha1ArtifactPaths'; /** diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1Event.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1Event.ts index 756c6b5..6e23a5d 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1Event.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1Event.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; export class IoArgoprojWorkflowV1alpha1Event { /** diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1ExecutorConfig.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1ExecutorConfig.ts index 17ef624..49e19d3 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1ExecutorConfig.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1ExecutorConfig.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; /** * ExecutorConfig holds configurations of an executor container. diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1GCSArtifact.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1GCSArtifact.ts index 7bd181e..86f870d 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1GCSArtifact.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1GCSArtifact.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; import { IoK8sApiCoreV1SecretKeySelector } from './ioK8sApiCoreV1SecretKeySelector'; /** diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1GCSArtifactRepository.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1GCSArtifactRepository.ts index 5b02640..7b679a4 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1GCSArtifactRepository.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1GCSArtifactRepository.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; import { IoK8sApiCoreV1SecretKeySelector } from './ioK8sApiCoreV1SecretKeySelector'; /** diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1Gauge.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1Gauge.ts index 68d6397..091a905 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1Gauge.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1Gauge.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; /** * Gauge is a Gauge prometheus metric diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1GetUserInfoResponse.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1GetUserInfoResponse.ts index a7bc486..61d3fda 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1GetUserInfoResponse.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1GetUserInfoResponse.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; export class IoArgoprojWorkflowV1alpha1GetUserInfoResponse { 'email'?: string; diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1GitArtifact.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1GitArtifact.ts index c7b707b..5826d33 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1GitArtifact.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1GitArtifact.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; import { IoK8sApiCoreV1SecretKeySelector } from './ioK8sApiCoreV1SecretKeySelector'; /** diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1HDFSArtifact.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1HDFSArtifact.ts index f809437..f0bdde3 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1HDFSArtifact.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1HDFSArtifact.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; import { IoK8sApiCoreV1ConfigMapKeySelector } from './ioK8sApiCoreV1ConfigMapKeySelector'; import { IoK8sApiCoreV1SecretKeySelector } from './ioK8sApiCoreV1SecretKeySelector'; diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1HDFSArtifactRepository.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1HDFSArtifactRepository.ts index 047ba13..f9630c8 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1HDFSArtifactRepository.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1HDFSArtifactRepository.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; import { IoK8sApiCoreV1ConfigMapKeySelector } from './ioK8sApiCoreV1ConfigMapKeySelector'; import { IoK8sApiCoreV1SecretKeySelector } from './ioK8sApiCoreV1SecretKeySelector'; diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1HTTP.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1HTTP.ts index fa2f10e..8402dde 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1HTTP.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1HTTP.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; import { IoArgoprojWorkflowV1alpha1HTTPBodySource } from './ioArgoprojWorkflowV1alpha1HTTPBodySource'; import { IoArgoprojWorkflowV1alpha1HTTPHeader } from './ioArgoprojWorkflowV1alpha1HTTPHeader'; diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1HTTPArtifact.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1HTTPArtifact.ts index 923eee2..82989e1 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1HTTPArtifact.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1HTTPArtifact.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; import { IoArgoprojWorkflowV1alpha1HTTPAuth } from './ioArgoprojWorkflowV1alpha1HTTPAuth'; import { IoArgoprojWorkflowV1alpha1Header } from './ioArgoprojWorkflowV1alpha1Header'; diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1HTTPAuth.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1HTTPAuth.ts index dde043c..17eac2c 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1HTTPAuth.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1HTTPAuth.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; import { IoArgoprojWorkflowV1alpha1BasicAuth } from './ioArgoprojWorkflowV1alpha1BasicAuth'; import { IoArgoprojWorkflowV1alpha1ClientCertAuth } from './ioArgoprojWorkflowV1alpha1ClientCertAuth'; import { IoArgoprojWorkflowV1alpha1OAuth2Auth } from './ioArgoprojWorkflowV1alpha1OAuth2Auth'; diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1HTTPBodySource.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1HTTPBodySource.ts index f3dac09..f7ed808 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1HTTPBodySource.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1HTTPBodySource.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; /** * HTTPBodySource contains the source of the HTTP body. diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1HTTPHeader.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1HTTPHeader.ts index 52b912b..601d368 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1HTTPHeader.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1HTTPHeader.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; import { IoArgoprojWorkflowV1alpha1HTTPHeaderSource } from './ioArgoprojWorkflowV1alpha1HTTPHeaderSource'; export class IoArgoprojWorkflowV1alpha1HTTPHeader { diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1HTTPHeaderSource.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1HTTPHeaderSource.ts index 471b2db..ddddc77 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1HTTPHeaderSource.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1HTTPHeaderSource.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; import { IoK8sApiCoreV1SecretKeySelector } from './ioK8sApiCoreV1SecretKeySelector'; export class IoArgoprojWorkflowV1alpha1HTTPHeaderSource { diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1Header.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1Header.ts index 904212c..9e062de 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1Header.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1Header.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; /** * Header indicate a key-value request header to be used when fetching artifacts over HTTP diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1Histogram.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1Histogram.ts index b6570db..425cfbf 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1Histogram.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1Histogram.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; /** * Histogram is a Histogram prometheus metric diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1InfoResponse.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1InfoResponse.ts index 5a560d8..ff37113 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1InfoResponse.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1InfoResponse.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; import { IoArgoprojWorkflowV1alpha1Column } from './ioArgoprojWorkflowV1alpha1Column'; import { IoArgoprojWorkflowV1alpha1Link } from './ioArgoprojWorkflowV1alpha1Link'; diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1Inputs.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1Inputs.ts index f49c6a9..c8cb071 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1Inputs.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1Inputs.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; import { IoArgoprojWorkflowV1alpha1Artifact } from './ioArgoprojWorkflowV1alpha1Artifact'; import { IoArgoprojWorkflowV1alpha1Parameter } from './ioArgoprojWorkflowV1alpha1Parameter'; diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1LabelKeys.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1LabelKeys.ts index 6ba2548..68e9807 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1LabelKeys.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1LabelKeys.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; /** * LabelKeys is list of keys diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1LabelValueFrom.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1LabelValueFrom.ts index ae664a3..5e287fc 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1LabelValueFrom.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1LabelValueFrom.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; export class IoArgoprojWorkflowV1alpha1LabelValueFrom { 'expression': string; diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1LabelValues.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1LabelValues.ts index dcb70ee..876799b 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1LabelValues.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1LabelValues.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; /** * Labels is list of workflow labels diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1LifecycleHook.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1LifecycleHook.ts index 200adca..c7e681b 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1LifecycleHook.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1LifecycleHook.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; import { IoArgoprojWorkflowV1alpha1Arguments } from './ioArgoprojWorkflowV1alpha1Arguments'; import { IoArgoprojWorkflowV1alpha1TemplateRef } from './ioArgoprojWorkflowV1alpha1TemplateRef'; diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1Link.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1Link.ts index 671a5ba..fbe051f 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1Link.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1Link.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; /** * A link to another app. diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1LintCronWorkflowRequest.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1LintCronWorkflowRequest.ts index 7780ea7..10c4408 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1LintCronWorkflowRequest.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1LintCronWorkflowRequest.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; import { IoArgoprojWorkflowV1alpha1CronWorkflow } from './ioArgoprojWorkflowV1alpha1CronWorkflow'; export class IoArgoprojWorkflowV1alpha1LintCronWorkflowRequest { diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1LogEntry.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1LogEntry.ts index f532488..36447fe 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1LogEntry.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1LogEntry.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; export class IoArgoprojWorkflowV1alpha1LogEntry { 'content'?: string; diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1ManifestFrom.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1ManifestFrom.ts index 47b43e6..bd3563b 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1ManifestFrom.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1ManifestFrom.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; import { IoArgoprojWorkflowV1alpha1Artifact } from './ioArgoprojWorkflowV1alpha1Artifact'; export class IoArgoprojWorkflowV1alpha1ManifestFrom { diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1MemoizationStatus.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1MemoizationStatus.ts index 557d090..f44b9cf 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1MemoizationStatus.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1MemoizationStatus.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; /** * MemoizationStatus is the status of this memoized node diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1Memoize.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1Memoize.ts index 06d06c8..89c5f5f 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1Memoize.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1Memoize.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; import { IoArgoprojWorkflowV1alpha1Cache } from './ioArgoprojWorkflowV1alpha1Cache'; /** diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1Metadata.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1Metadata.ts index 532c7cc..9546fa7 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1Metadata.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1Metadata.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; /** * Pod metdata diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1MetricLabel.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1MetricLabel.ts index d7122c8..fe6e880 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1MetricLabel.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1MetricLabel.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; /** * MetricLabel is a single label for a prometheus metric diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1Metrics.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1Metrics.ts index 3c4443b..ae65e0f 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1Metrics.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1Metrics.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; import { IoArgoprojWorkflowV1alpha1Prometheus } from './ioArgoprojWorkflowV1alpha1Prometheus'; /** diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1Mutex.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1Mutex.ts index 6bca43a..c94daf7 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1Mutex.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1Mutex.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; /** * Mutex holds Mutex configuration diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1MutexHolding.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1MutexHolding.ts index 4779f9b..3609872 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1MutexHolding.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1MutexHolding.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; /** * MutexHolding describes the mutex and the object which is holding it. diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1MutexStatus.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1MutexStatus.ts index b0a9d17..17f012c 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1MutexStatus.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1MutexStatus.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; import { IoArgoprojWorkflowV1alpha1MutexHolding } from './ioArgoprojWorkflowV1alpha1MutexHolding'; /** diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1NodeResult.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1NodeResult.ts index d73e09d..d7b0728 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1NodeResult.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1NodeResult.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; import { IoArgoprojWorkflowV1alpha1Outputs } from './ioArgoprojWorkflowV1alpha1Outputs'; export class IoArgoprojWorkflowV1alpha1NodeResult { diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1NodeStatus.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1NodeStatus.ts index cf4647f..28b0c7c 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1NodeStatus.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1NodeStatus.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; import { IoArgoprojWorkflowV1alpha1Inputs } from './ioArgoprojWorkflowV1alpha1Inputs'; import { IoArgoprojWorkflowV1alpha1MemoizationStatus } from './ioArgoprojWorkflowV1alpha1MemoizationStatus'; import { IoArgoprojWorkflowV1alpha1NodeSynchronizationStatus } from './ioArgoprojWorkflowV1alpha1NodeSynchronizationStatus'; diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1NodeSynchronizationStatus.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1NodeSynchronizationStatus.ts index 6a4afb4..2ddce75 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1NodeSynchronizationStatus.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1NodeSynchronizationStatus.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; /** * NodeSynchronizationStatus stores the status of a node diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1OAuth2Auth.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1OAuth2Auth.ts index f4bc9d5..0da6e2d 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1OAuth2Auth.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1OAuth2Auth.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; import { IoArgoprojWorkflowV1alpha1OAuth2EndpointParam } from './ioArgoprojWorkflowV1alpha1OAuth2EndpointParam'; import { IoK8sApiCoreV1SecretKeySelector } from './ioK8sApiCoreV1SecretKeySelector'; diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1OAuth2EndpointParam.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1OAuth2EndpointParam.ts index c984b06..06c2f7b 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1OAuth2EndpointParam.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1OAuth2EndpointParam.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; /** * EndpointParam is for requesting optional fields that should be sent in the oauth request diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1OSSArtifact.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1OSSArtifact.ts index 7861519..1ba6ccb 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1OSSArtifact.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1OSSArtifact.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; import { IoArgoprojWorkflowV1alpha1OSSLifecycleRule } from './ioArgoprojWorkflowV1alpha1OSSLifecycleRule'; import { IoK8sApiCoreV1SecretKeySelector } from './ioK8sApiCoreV1SecretKeySelector'; diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1OSSArtifactRepository.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1OSSArtifactRepository.ts index 6fc539e..b03f6c3 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1OSSArtifactRepository.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1OSSArtifactRepository.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; import { IoArgoprojWorkflowV1alpha1OSSLifecycleRule } from './ioArgoprojWorkflowV1alpha1OSSLifecycleRule'; import { IoK8sApiCoreV1SecretKeySelector } from './ioK8sApiCoreV1SecretKeySelector'; diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1OSSLifecycleRule.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1OSSLifecycleRule.ts index 7a4295b..2084cf7 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1OSSLifecycleRule.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1OSSLifecycleRule.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; /** * OSSLifecycleRule specifies how to manage bucket\'s lifecycle diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1Outputs.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1Outputs.ts index b686850..e4035d0 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1Outputs.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1Outputs.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; import { IoArgoprojWorkflowV1alpha1Artifact } from './ioArgoprojWorkflowV1alpha1Artifact'; import { IoArgoprojWorkflowV1alpha1Parameter } from './ioArgoprojWorkflowV1alpha1Parameter'; diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1Parameter.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1Parameter.ts index 785c95a..1535321 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1Parameter.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1Parameter.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; import { IoArgoprojWorkflowV1alpha1ValueFrom } from './ioArgoprojWorkflowV1alpha1ValueFrom'; /** diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1PodGC.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1PodGC.ts index 751400f..ae08679 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1PodGC.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1PodGC.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; import { IoK8sApimachineryPkgApisMetaV1LabelSelector } from './ioK8sApimachineryPkgApisMetaV1LabelSelector'; /** diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1Prometheus.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1Prometheus.ts index ca2d4d4..cbf87a2 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1Prometheus.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1Prometheus.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; import { IoArgoprojWorkflowV1alpha1Counter } from './ioArgoprojWorkflowV1alpha1Counter'; import { IoArgoprojWorkflowV1alpha1Gauge } from './ioArgoprojWorkflowV1alpha1Gauge'; import { IoArgoprojWorkflowV1alpha1Histogram } from './ioArgoprojWorkflowV1alpha1Histogram'; diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1RawArtifact.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1RawArtifact.ts index 787a297..54c4677 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1RawArtifact.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1RawArtifact.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; /** * RawArtifact allows raw string content to be placed as an artifact in a container diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1ResourceTemplate.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1ResourceTemplate.ts index 86e8044..926c066 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1ResourceTemplate.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1ResourceTemplate.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; import { IoArgoprojWorkflowV1alpha1ManifestFrom } from './ioArgoprojWorkflowV1alpha1ManifestFrom'; /** diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1ResubmitArchivedWorkflowRequest.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1ResubmitArchivedWorkflowRequest.ts index d66557b..37d6e09 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1ResubmitArchivedWorkflowRequest.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1ResubmitArchivedWorkflowRequest.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; export class IoArgoprojWorkflowV1alpha1ResubmitArchivedWorkflowRequest { 'memoized'?: boolean; diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1RetryAffinity.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1RetryAffinity.ts index 1274f68..bd36168 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1RetryAffinity.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1RetryAffinity.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; /** * RetryAffinity prevents running steps on the same host. diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1RetryArchivedWorkflowRequest.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1RetryArchivedWorkflowRequest.ts index 3227d36..7f4b313 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1RetryArchivedWorkflowRequest.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1RetryArchivedWorkflowRequest.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; export class IoArgoprojWorkflowV1alpha1RetryArchivedWorkflowRequest { 'name'?: string; diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1RetryStrategy.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1RetryStrategy.ts index 08091ab..e9b0fb6 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1RetryStrategy.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1RetryStrategy.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; import { IoArgoprojWorkflowV1alpha1Backoff } from './ioArgoprojWorkflowV1alpha1Backoff'; import { IoArgoprojWorkflowV1alpha1RetryAffinity } from './ioArgoprojWorkflowV1alpha1RetryAffinity'; diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1S3Artifact.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1S3Artifact.ts index 1546793..5ed448c 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1S3Artifact.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1S3Artifact.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; import { IoArgoprojWorkflowV1alpha1CreateS3BucketOptions } from './ioArgoprojWorkflowV1alpha1CreateS3BucketOptions'; import { IoArgoprojWorkflowV1alpha1S3EncryptionOptions } from './ioArgoprojWorkflowV1alpha1S3EncryptionOptions'; import { IoK8sApiCoreV1SecretKeySelector } from './ioK8sApiCoreV1SecretKeySelector'; diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1S3ArtifactRepository.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1S3ArtifactRepository.ts index 8b8a044..72f390c 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1S3ArtifactRepository.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1S3ArtifactRepository.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; import { IoArgoprojWorkflowV1alpha1CreateS3BucketOptions } from './ioArgoprojWorkflowV1alpha1CreateS3BucketOptions'; import { IoArgoprojWorkflowV1alpha1S3EncryptionOptions } from './ioArgoprojWorkflowV1alpha1S3EncryptionOptions'; import { IoK8sApiCoreV1SecretKeySelector } from './ioK8sApiCoreV1SecretKeySelector'; diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1S3EncryptionOptions.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1S3EncryptionOptions.ts index a9b3a65..727a1d3 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1S3EncryptionOptions.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1S3EncryptionOptions.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; import { IoK8sApiCoreV1SecretKeySelector } from './ioK8sApiCoreV1SecretKeySelector'; /** diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1ScriptTemplate.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1ScriptTemplate.ts index b4a84fa..e2a91f9 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1ScriptTemplate.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1ScriptTemplate.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; import { IoK8sApiCoreV1ContainerPort } from './ioK8sApiCoreV1ContainerPort'; import { IoK8sApiCoreV1EnvFromSource } from './ioK8sApiCoreV1EnvFromSource'; import { IoK8sApiCoreV1EnvVar } from './ioK8sApiCoreV1EnvVar'; diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1SemaphoreHolding.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1SemaphoreHolding.ts index fe41a34..d4da517 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1SemaphoreHolding.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1SemaphoreHolding.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; export class IoArgoprojWorkflowV1alpha1SemaphoreHolding { /** diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1SemaphoreRef.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1SemaphoreRef.ts index bdeb30a..c467a54 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1SemaphoreRef.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1SemaphoreRef.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; import { IoK8sApiCoreV1ConfigMapKeySelector } from './ioK8sApiCoreV1ConfigMapKeySelector'; /** diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1SemaphoreStatus.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1SemaphoreStatus.ts index c392176..19a6b6a 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1SemaphoreStatus.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1SemaphoreStatus.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; import { IoArgoprojWorkflowV1alpha1SemaphoreHolding } from './ioArgoprojWorkflowV1alpha1SemaphoreHolding'; export class IoArgoprojWorkflowV1alpha1SemaphoreStatus { diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1Sequence.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1Sequence.ts index 840cd74..0f1876f 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1Sequence.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1Sequence.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; /** * Sequence expands a workflow step into numeric range diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1Submit.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1Submit.ts index a1d698c..5cc8bba 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1Submit.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1Submit.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; import { IoArgoprojWorkflowV1alpha1Arguments } from './ioArgoprojWorkflowV1alpha1Arguments'; import { IoArgoprojWorkflowV1alpha1WorkflowTemplateRef } from './ioArgoprojWorkflowV1alpha1WorkflowTemplateRef'; import { IoK8sApimachineryPkgApisMetaV1ObjectMeta } from './ioK8sApimachineryPkgApisMetaV1ObjectMeta'; diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1SubmitOpts.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1SubmitOpts.ts index 1507cdc..61b1ed4 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1SubmitOpts.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1SubmitOpts.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; import { IoK8sApimachineryPkgApisMetaV1OwnerReference } from './ioK8sApimachineryPkgApisMetaV1OwnerReference'; /** diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1SuspendTemplate.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1SuspendTemplate.ts index 8dc552f..22e6c99 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1SuspendTemplate.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1SuspendTemplate.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; /** * SuspendTemplate is a template subtype to suspend a workflow at a predetermined point in time diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1Synchronization.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1Synchronization.ts index ba2be84..ba79126 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1Synchronization.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1Synchronization.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; import { IoArgoprojWorkflowV1alpha1Mutex } from './ioArgoprojWorkflowV1alpha1Mutex'; import { IoArgoprojWorkflowV1alpha1SemaphoreRef } from './ioArgoprojWorkflowV1alpha1SemaphoreRef'; diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1SynchronizationStatus.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1SynchronizationStatus.ts index 08a85d5..e2728aa 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1SynchronizationStatus.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1SynchronizationStatus.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; import { IoArgoprojWorkflowV1alpha1MutexStatus } from './ioArgoprojWorkflowV1alpha1MutexStatus'; import { IoArgoprojWorkflowV1alpha1SemaphoreStatus } from './ioArgoprojWorkflowV1alpha1SemaphoreStatus'; diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1TTLStrategy.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1TTLStrategy.ts index 3183c4a..d46333b 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1TTLStrategy.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1TTLStrategy.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; /** * TTLStrategy is the strategy for the time to live depending on if the workflow succeeded or failed diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1TarStrategy.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1TarStrategy.ts index 4f1d6b7..5aafe4b 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1TarStrategy.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1TarStrategy.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; /** * TarStrategy will tar and gzip the file or directory when saving diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1Template.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1Template.ts index 39a161b..1cc6d16 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1Template.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1Template.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; import { IoArgoprojWorkflowV1alpha1ArtifactLocation } from './ioArgoprojWorkflowV1alpha1ArtifactLocation'; import { IoArgoprojWorkflowV1alpha1ContainerSetTemplate } from './ioArgoprojWorkflowV1alpha1ContainerSetTemplate'; import { IoArgoprojWorkflowV1alpha1DAGTemplate } from './ioArgoprojWorkflowV1alpha1DAGTemplate'; diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1TemplateRef.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1TemplateRef.ts index 8219b3d..568da9d 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1TemplateRef.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1TemplateRef.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; /** * TemplateRef is a reference of template resource. diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1TransformationStep.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1TransformationStep.ts index 9831dcc..f3125e6 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1TransformationStep.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1TransformationStep.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; export class IoArgoprojWorkflowV1alpha1TransformationStep { /** diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1UpdateCronWorkflowRequest.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1UpdateCronWorkflowRequest.ts index c571994..e46942b 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1UpdateCronWorkflowRequest.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1UpdateCronWorkflowRequest.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; import { IoArgoprojWorkflowV1alpha1CronWorkflow } from './ioArgoprojWorkflowV1alpha1CronWorkflow'; export class IoArgoprojWorkflowV1alpha1UpdateCronWorkflowRequest { diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1UserContainer.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1UserContainer.ts index d922851..93aa3cd 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1UserContainer.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1UserContainer.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; import { IoK8sApiCoreV1ContainerPort } from './ioK8sApiCoreV1ContainerPort'; import { IoK8sApiCoreV1EnvFromSource } from './ioK8sApiCoreV1EnvFromSource'; import { IoK8sApiCoreV1EnvVar } from './ioK8sApiCoreV1EnvVar'; diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1ValueFrom.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1ValueFrom.ts index d692ebe..da36b91 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1ValueFrom.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1ValueFrom.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; import { IoK8sApiCoreV1ConfigMapKeySelector } from './ioK8sApiCoreV1ConfigMapKeySelector'; /** diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1Version.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1Version.ts index 303cd6c..cefe296 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1Version.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1Version.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; export class IoArgoprojWorkflowV1alpha1Version { 'buildDate': string; diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1VolumeClaimGC.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1VolumeClaimGC.ts index 21a63a9..b05a23b 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1VolumeClaimGC.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1VolumeClaimGC.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; /** * VolumeClaimGC describes how to delete volumes from completed Workflows diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1Workflow.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1Workflow.ts index cd4f596..72e6d78 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1Workflow.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1Workflow.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; import { IoArgoprojWorkflowV1alpha1WorkflowSpec } from './ioArgoprojWorkflowV1alpha1WorkflowSpec'; import { IoArgoprojWorkflowV1alpha1WorkflowStatus } from './ioArgoprojWorkflowV1alpha1WorkflowStatus'; import { IoK8sApimachineryPkgApisMetaV1ObjectMeta } from './ioK8sApimachineryPkgApisMetaV1ObjectMeta'; diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1WorkflowCreateRequest.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1WorkflowCreateRequest.ts index 47d7c1c..7a7710d 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1WorkflowCreateRequest.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1WorkflowCreateRequest.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; import { IoArgoprojWorkflowV1alpha1Workflow } from './ioArgoprojWorkflowV1alpha1Workflow'; import { IoK8sApimachineryPkgApisMetaV1CreateOptions } from './ioK8sApimachineryPkgApisMetaV1CreateOptions'; diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1WorkflowEventBinding.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1WorkflowEventBinding.ts index 35fa2e7..05cb166 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1WorkflowEventBinding.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1WorkflowEventBinding.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; import { IoArgoprojWorkflowV1alpha1WorkflowEventBindingSpec } from './ioArgoprojWorkflowV1alpha1WorkflowEventBindingSpec'; import { IoK8sApimachineryPkgApisMetaV1ObjectMeta } from './ioK8sApimachineryPkgApisMetaV1ObjectMeta'; diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1WorkflowEventBindingList.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1WorkflowEventBindingList.ts index ac847d4..9288c14 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1WorkflowEventBindingList.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1WorkflowEventBindingList.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; import { IoArgoprojWorkflowV1alpha1WorkflowEventBinding } from './ioArgoprojWorkflowV1alpha1WorkflowEventBinding'; import { IoK8sApimachineryPkgApisMetaV1ListMeta } from './ioK8sApimachineryPkgApisMetaV1ListMeta'; diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1WorkflowEventBindingSpec.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1WorkflowEventBindingSpec.ts index 0f26656..f1d050f 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1WorkflowEventBindingSpec.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1WorkflowEventBindingSpec.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; import { IoArgoprojWorkflowV1alpha1Event } from './ioArgoprojWorkflowV1alpha1Event'; import { IoArgoprojWorkflowV1alpha1Submit } from './ioArgoprojWorkflowV1alpha1Submit'; diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1WorkflowLevelArtifactGC.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1WorkflowLevelArtifactGC.ts index 5aeb10d..5ee9f68 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1WorkflowLevelArtifactGC.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1WorkflowLevelArtifactGC.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; import { IoArgoprojWorkflowV1alpha1Metadata } from './ioArgoprojWorkflowV1alpha1Metadata'; /** diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1WorkflowLintRequest.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1WorkflowLintRequest.ts index 60af877..6b8c313 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1WorkflowLintRequest.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1WorkflowLintRequest.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; import { IoArgoprojWorkflowV1alpha1Workflow } from './ioArgoprojWorkflowV1alpha1Workflow'; export class IoArgoprojWorkflowV1alpha1WorkflowLintRequest { diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1WorkflowList.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1WorkflowList.ts index de54ca2..f546e76 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1WorkflowList.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1WorkflowList.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; import { IoArgoprojWorkflowV1alpha1Workflow } from './ioArgoprojWorkflowV1alpha1Workflow'; import { IoK8sApimachineryPkgApisMetaV1ListMeta } from './ioK8sApimachineryPkgApisMetaV1ListMeta'; diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1WorkflowMetadata.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1WorkflowMetadata.ts index 26a9ca9..c12631f 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1WorkflowMetadata.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1WorkflowMetadata.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; import { IoArgoprojWorkflowV1alpha1LabelValueFrom } from './ioArgoprojWorkflowV1alpha1LabelValueFrom'; export class IoArgoprojWorkflowV1alpha1WorkflowMetadata { diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1WorkflowResubmitRequest.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1WorkflowResubmitRequest.ts index 2d3cc12..6f0490b 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1WorkflowResubmitRequest.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1WorkflowResubmitRequest.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; export class IoArgoprojWorkflowV1alpha1WorkflowResubmitRequest { 'memoized'?: boolean; diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1WorkflowResumeRequest.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1WorkflowResumeRequest.ts index 4b9c067..4ca7159 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1WorkflowResumeRequest.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1WorkflowResumeRequest.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; export class IoArgoprojWorkflowV1alpha1WorkflowResumeRequest { 'name'?: string; diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1WorkflowRetryRequest.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1WorkflowRetryRequest.ts index 16e395d..1f1a39a 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1WorkflowRetryRequest.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1WorkflowRetryRequest.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; export class IoArgoprojWorkflowV1alpha1WorkflowRetryRequest { 'name'?: string; diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1WorkflowSetRequest.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1WorkflowSetRequest.ts index 412e986..cff6fe8 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1WorkflowSetRequest.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1WorkflowSetRequest.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; export class IoArgoprojWorkflowV1alpha1WorkflowSetRequest { 'message'?: string; diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1WorkflowSpec.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1WorkflowSpec.ts index 351cd22..7cb56ce 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1WorkflowSpec.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1WorkflowSpec.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; import { IoArgoprojWorkflowV1alpha1Arguments } from './ioArgoprojWorkflowV1alpha1Arguments'; import { IoArgoprojWorkflowV1alpha1ArtifactRepositoryRef } from './ioArgoprojWorkflowV1alpha1ArtifactRepositoryRef'; import { IoArgoprojWorkflowV1alpha1ExecutorConfig } from './ioArgoprojWorkflowV1alpha1ExecutorConfig'; diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1WorkflowStatus.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1WorkflowStatus.ts index e1dcd19..e6d827d 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1WorkflowStatus.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1WorkflowStatus.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; import { IoArgoprojWorkflowV1alpha1ArtGCStatus } from './ioArgoprojWorkflowV1alpha1ArtGCStatus'; import { IoArgoprojWorkflowV1alpha1ArtifactRepositoryRefStatus } from './ioArgoprojWorkflowV1alpha1ArtifactRepositoryRefStatus'; import { IoArgoprojWorkflowV1alpha1Condition } from './ioArgoprojWorkflowV1alpha1Condition'; diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1WorkflowStep.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1WorkflowStep.ts index e829683..ad1f7b6 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1WorkflowStep.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1WorkflowStep.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; import { IoArgoprojWorkflowV1alpha1Arguments } from './ioArgoprojWorkflowV1alpha1Arguments'; import { IoArgoprojWorkflowV1alpha1ContinueOn } from './ioArgoprojWorkflowV1alpha1ContinueOn'; import { IoArgoprojWorkflowV1alpha1LifecycleHook } from './ioArgoprojWorkflowV1alpha1LifecycleHook'; diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1WorkflowStopRequest.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1WorkflowStopRequest.ts index 4907913..1678f7b 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1WorkflowStopRequest.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1WorkflowStopRequest.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; export class IoArgoprojWorkflowV1alpha1WorkflowStopRequest { 'message'?: string; diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1WorkflowSubmitRequest.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1WorkflowSubmitRequest.ts index e497edd..9e90e71 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1WorkflowSubmitRequest.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1WorkflowSubmitRequest.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; import { IoArgoprojWorkflowV1alpha1SubmitOpts } from './ioArgoprojWorkflowV1alpha1SubmitOpts'; export class IoArgoprojWorkflowV1alpha1WorkflowSubmitRequest { diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1WorkflowSuspendRequest.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1WorkflowSuspendRequest.ts index 1bffc74..c34b99e 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1WorkflowSuspendRequest.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1WorkflowSuspendRequest.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; export class IoArgoprojWorkflowV1alpha1WorkflowSuspendRequest { 'name'?: string; diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1WorkflowTaskSetSpec.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1WorkflowTaskSetSpec.ts index 147215e..720ce1e 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1WorkflowTaskSetSpec.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1WorkflowTaskSetSpec.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; import { IoArgoprojWorkflowV1alpha1Template } from './ioArgoprojWorkflowV1alpha1Template'; export class IoArgoprojWorkflowV1alpha1WorkflowTaskSetSpec { diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1WorkflowTaskSetStatus.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1WorkflowTaskSetStatus.ts index ee9d1d1..52f11dc 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1WorkflowTaskSetStatus.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1WorkflowTaskSetStatus.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; import { IoArgoprojWorkflowV1alpha1NodeResult } from './ioArgoprojWorkflowV1alpha1NodeResult'; export class IoArgoprojWorkflowV1alpha1WorkflowTaskSetStatus { diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1WorkflowTemplate.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1WorkflowTemplate.ts index 43ea4e0..e135b56 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1WorkflowTemplate.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1WorkflowTemplate.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; import { IoArgoprojWorkflowV1alpha1WorkflowSpec } from './ioArgoprojWorkflowV1alpha1WorkflowSpec'; import { IoK8sApimachineryPkgApisMetaV1ObjectMeta } from './ioK8sApimachineryPkgApisMetaV1ObjectMeta'; diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1WorkflowTemplateCreateRequest.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1WorkflowTemplateCreateRequest.ts index e993490..35dfb1a 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1WorkflowTemplateCreateRequest.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1WorkflowTemplateCreateRequest.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; import { IoArgoprojWorkflowV1alpha1WorkflowTemplate } from './ioArgoprojWorkflowV1alpha1WorkflowTemplate'; import { IoK8sApimachineryPkgApisMetaV1CreateOptions } from './ioK8sApimachineryPkgApisMetaV1CreateOptions'; diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1WorkflowTemplateLintRequest.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1WorkflowTemplateLintRequest.ts index 47fb082..6b9a477 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1WorkflowTemplateLintRequest.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1WorkflowTemplateLintRequest.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; import { IoArgoprojWorkflowV1alpha1WorkflowTemplate } from './ioArgoprojWorkflowV1alpha1WorkflowTemplate'; import { IoK8sApimachineryPkgApisMetaV1CreateOptions } from './ioK8sApimachineryPkgApisMetaV1CreateOptions'; diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1WorkflowTemplateList.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1WorkflowTemplateList.ts index 8234a9a..03b47dc 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1WorkflowTemplateList.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1WorkflowTemplateList.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; import { IoArgoprojWorkflowV1alpha1WorkflowTemplate } from './ioArgoprojWorkflowV1alpha1WorkflowTemplate'; import { IoK8sApimachineryPkgApisMetaV1ListMeta } from './ioK8sApimachineryPkgApisMetaV1ListMeta'; diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1WorkflowTemplateRef.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1WorkflowTemplateRef.ts index bad24b9..fff1c44 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1WorkflowTemplateRef.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1WorkflowTemplateRef.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; /** * WorkflowTemplateRef is a reference to a WorkflowTemplate resource. diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1WorkflowTemplateUpdateRequest.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1WorkflowTemplateUpdateRequest.ts index f0e2db9..914d6e3 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1WorkflowTemplateUpdateRequest.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1WorkflowTemplateUpdateRequest.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; import { IoArgoprojWorkflowV1alpha1WorkflowTemplate } from './ioArgoprojWorkflowV1alpha1WorkflowTemplate'; export class IoArgoprojWorkflowV1alpha1WorkflowTemplateUpdateRequest { diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1WorkflowTerminateRequest.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1WorkflowTerminateRequest.ts index 0138a4f..aab7201 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1WorkflowTerminateRequest.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1WorkflowTerminateRequest.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; export class IoArgoprojWorkflowV1alpha1WorkflowTerminateRequest { 'name'?: string; diff --git a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1WorkflowWatchEvent.ts b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1WorkflowWatchEvent.ts index fd2641e..3db3540 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1WorkflowWatchEvent.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioArgoprojWorkflowV1alpha1WorkflowWatchEvent.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; import { IoArgoprojWorkflowV1alpha1Workflow } from './ioArgoprojWorkflowV1alpha1Workflow'; export class IoArgoprojWorkflowV1alpha1WorkflowWatchEvent { diff --git a/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1AWSElasticBlockStoreVolumeSource.ts b/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1AWSElasticBlockStoreVolumeSource.ts index 01230c3..40b9481 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1AWSElasticBlockStoreVolumeSource.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1AWSElasticBlockStoreVolumeSource.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; /** * Represents a Persistent Disk resource in AWS. An AWS EBS disk must exist before mounting to a container. The disk must also be in the same AWS zone as the kubelet. An AWS EBS disk can only be mounted as read/write once. AWS EBS volumes support ownership management and SELinux relabeling. diff --git a/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1Affinity.ts b/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1Affinity.ts index ac51eee..9e82744 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1Affinity.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1Affinity.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; import { IoK8sApiCoreV1NodeAffinity } from './ioK8sApiCoreV1NodeAffinity'; import { IoK8sApiCoreV1PodAffinity } from './ioK8sApiCoreV1PodAffinity'; import { IoK8sApiCoreV1PodAntiAffinity } from './ioK8sApiCoreV1PodAntiAffinity'; diff --git a/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1AzureDiskVolumeSource.ts b/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1AzureDiskVolumeSource.ts index 0281e34..5b2479a 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1AzureDiskVolumeSource.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1AzureDiskVolumeSource.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; /** * AzureDisk represents an Azure Data Disk mount on the host and bind mount to the pod. diff --git a/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1AzureFileVolumeSource.ts b/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1AzureFileVolumeSource.ts index 85ffa85..b4b7f4e 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1AzureFileVolumeSource.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1AzureFileVolumeSource.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; /** * AzureFile represents an Azure File Service mount on the host and bind mount to the pod. diff --git a/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1CSIVolumeSource.ts b/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1CSIVolumeSource.ts index 22a0511..29bb53a 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1CSIVolumeSource.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1CSIVolumeSource.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; import { IoK8sApiCoreV1LocalObjectReference } from './ioK8sApiCoreV1LocalObjectReference'; /** diff --git a/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1Capabilities.ts b/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1Capabilities.ts index 0a21977..0350fc8 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1Capabilities.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1Capabilities.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; /** * Adds and removes POSIX capabilities from running containers. diff --git a/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1CephFSVolumeSource.ts b/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1CephFSVolumeSource.ts index 99a6c95..ccafb7e 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1CephFSVolumeSource.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1CephFSVolumeSource.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; import { IoK8sApiCoreV1LocalObjectReference } from './ioK8sApiCoreV1LocalObjectReference'; /** diff --git a/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1CinderVolumeSource.ts b/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1CinderVolumeSource.ts index 690271f..78bdbf0 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1CinderVolumeSource.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1CinderVolumeSource.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; import { IoK8sApiCoreV1LocalObjectReference } from './ioK8sApiCoreV1LocalObjectReference'; /** diff --git a/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1ConfigMapEnvSource.ts b/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1ConfigMapEnvSource.ts index d842f20..3f2c8b4 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1ConfigMapEnvSource.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1ConfigMapEnvSource.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; /** * ConfigMapEnvSource selects a ConfigMap to populate the environment variables with. The contents of the target ConfigMap\'s Data field will represent the key-value pairs as environment variables. diff --git a/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1ConfigMapKeySelector.ts b/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1ConfigMapKeySelector.ts index ce033f1..90a7e4a 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1ConfigMapKeySelector.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1ConfigMapKeySelector.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; /** * Selects a key from a ConfigMap. diff --git a/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1ConfigMapProjection.ts b/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1ConfigMapProjection.ts index 92da431..9cd317f 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1ConfigMapProjection.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1ConfigMapProjection.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; import { IoK8sApiCoreV1KeyToPath } from './ioK8sApiCoreV1KeyToPath'; /** diff --git a/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1ConfigMapVolumeSource.ts b/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1ConfigMapVolumeSource.ts index f55d47f..12af9a9 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1ConfigMapVolumeSource.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1ConfigMapVolumeSource.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; import { IoK8sApiCoreV1KeyToPath } from './ioK8sApiCoreV1KeyToPath'; /** diff --git a/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1Container.ts b/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1Container.ts index 2189ab1..3691eca 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1Container.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1Container.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; import { IoK8sApiCoreV1ContainerPort } from './ioK8sApiCoreV1ContainerPort'; import { IoK8sApiCoreV1EnvFromSource } from './ioK8sApiCoreV1EnvFromSource'; import { IoK8sApiCoreV1EnvVar } from './ioK8sApiCoreV1EnvVar'; @@ -218,12 +217,12 @@ export class IoK8sApiCoreV1Container { export namespace IoK8sApiCoreV1Container { export enum ImagePullPolicyEnum { - Always = 'Always', - IfNotPresent = 'IfNotPresent', - Never = 'Never' + Always = 'Always' as any, + IfNotPresent = 'IfNotPresent' as any, + Never = 'Never' as any } export enum TerminationMessagePolicyEnum { - FallbackToLogsOnError = 'FallbackToLogsOnError', - File = 'File' + FallbackToLogsOnError = 'FallbackToLogsOnError' as any, + File = 'File' as any } } diff --git a/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1ContainerPort.ts b/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1ContainerPort.ts index 6e6afa5..fae4e70 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1ContainerPort.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1ContainerPort.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; /** * ContainerPort represents a network port in a single container. @@ -74,8 +73,8 @@ export class IoK8sApiCoreV1ContainerPort { export namespace IoK8sApiCoreV1ContainerPort { export enum ProtocolEnum { - Sctp = 'SCTP', - Tcp = 'TCP', - Udp = 'UDP' + Sctp = 'SCTP' as any, + Tcp = 'TCP' as any, + Udp = 'UDP' as any } } diff --git a/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1DownwardAPIProjection.ts b/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1DownwardAPIProjection.ts index 4f492e2..c4db4c0 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1DownwardAPIProjection.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1DownwardAPIProjection.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; import { IoK8sApiCoreV1DownwardAPIVolumeFile } from './ioK8sApiCoreV1DownwardAPIVolumeFile'; /** diff --git a/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1DownwardAPIVolumeFile.ts b/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1DownwardAPIVolumeFile.ts index 76f29b8..f216e8f 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1DownwardAPIVolumeFile.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1DownwardAPIVolumeFile.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; import { IoK8sApiCoreV1ObjectFieldSelector } from './ioK8sApiCoreV1ObjectFieldSelector'; import { IoK8sApiCoreV1ResourceFieldSelector } from './ioK8sApiCoreV1ResourceFieldSelector'; diff --git a/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1DownwardAPIVolumeSource.ts b/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1DownwardAPIVolumeSource.ts index 0e0a779..e4a354d 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1DownwardAPIVolumeSource.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1DownwardAPIVolumeSource.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; import { IoK8sApiCoreV1DownwardAPIVolumeFile } from './ioK8sApiCoreV1DownwardAPIVolumeFile'; /** diff --git a/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1EmptyDirVolumeSource.ts b/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1EmptyDirVolumeSource.ts index c3d943c..9211fc8 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1EmptyDirVolumeSource.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1EmptyDirVolumeSource.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; /** * Represents an empty directory for a pod. Empty directory volumes support ownership management and SELinux relabeling. diff --git a/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1EnvFromSource.ts b/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1EnvFromSource.ts index 234fe4d..7864317 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1EnvFromSource.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1EnvFromSource.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; import { IoK8sApiCoreV1ConfigMapEnvSource } from './ioK8sApiCoreV1ConfigMapEnvSource'; import { IoK8sApiCoreV1SecretEnvSource } from './ioK8sApiCoreV1SecretEnvSource'; diff --git a/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1EnvVar.ts b/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1EnvVar.ts index f86a3f6..674af8b 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1EnvVar.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1EnvVar.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; import { IoK8sApiCoreV1EnvVarSource } from './ioK8sApiCoreV1EnvVarSource'; /** diff --git a/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1EnvVarSource.ts b/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1EnvVarSource.ts index c78aab3..a519e9c 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1EnvVarSource.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1EnvVarSource.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; import { IoK8sApiCoreV1ConfigMapKeySelector } from './ioK8sApiCoreV1ConfigMapKeySelector'; import { IoK8sApiCoreV1ObjectFieldSelector } from './ioK8sApiCoreV1ObjectFieldSelector'; import { IoK8sApiCoreV1ResourceFieldSelector } from './ioK8sApiCoreV1ResourceFieldSelector'; diff --git a/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1EphemeralVolumeSource.ts b/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1EphemeralVolumeSource.ts index 33550b7..927d210 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1EphemeralVolumeSource.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1EphemeralVolumeSource.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; import { IoK8sApiCoreV1PersistentVolumeClaimTemplate } from './ioK8sApiCoreV1PersistentVolumeClaimTemplate'; /** diff --git a/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1Event.ts b/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1Event.ts index 3b93303..c8b9da8 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1Event.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1Event.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; import { IoK8sApiCoreV1EventSeries } from './ioK8sApiCoreV1EventSeries'; import { IoK8sApiCoreV1EventSource } from './ioK8sApiCoreV1EventSource'; import { IoK8sApiCoreV1ObjectReference } from './ioK8sApiCoreV1ObjectReference'; diff --git a/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1EventSeries.ts b/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1EventSeries.ts index 3b34ff3..0ac5d2b 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1EventSeries.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1EventSeries.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; /** * EventSeries contain information on series of events, i.e. thing that was/is happening continuously for some time. diff --git a/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1EventSource.ts b/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1EventSource.ts index 1409b6c..b70c5d7 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1EventSource.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1EventSource.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; /** * EventSource contains information for an event. diff --git a/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1ExecAction.ts b/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1ExecAction.ts index ce43787..db289a8 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1ExecAction.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1ExecAction.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; /** * ExecAction describes a \"run in container\" action. diff --git a/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1FCVolumeSource.ts b/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1FCVolumeSource.ts index 8043185..a2c0b9f 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1FCVolumeSource.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1FCVolumeSource.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; /** * Represents a Fibre Channel volume. Fibre Channel volumes can only be mounted as read/write once. Fibre Channel volumes support ownership management and SELinux relabeling. diff --git a/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1FlexVolumeSource.ts b/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1FlexVolumeSource.ts index 1122255..2fa9f9a 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1FlexVolumeSource.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1FlexVolumeSource.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; import { IoK8sApiCoreV1LocalObjectReference } from './ioK8sApiCoreV1LocalObjectReference'; /** diff --git a/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1FlockerVolumeSource.ts b/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1FlockerVolumeSource.ts index cc9cb83..ada8803 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1FlockerVolumeSource.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1FlockerVolumeSource.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; /** * Represents a Flocker volume mounted by the Flocker agent. One and only one of datasetName and datasetUUID should be set. Flocker volumes do not support ownership management or SELinux relabeling. diff --git a/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1GCEPersistentDiskVolumeSource.ts b/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1GCEPersistentDiskVolumeSource.ts index dd1c97d..7463f84 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1GCEPersistentDiskVolumeSource.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1GCEPersistentDiskVolumeSource.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; /** * Represents a Persistent Disk resource in Google Compute Engine. A GCE PD must exist before mounting to a container. The disk must also be in the same GCE project and zone as the kubelet. A GCE PD can only be mounted as read/write once or read-only many times. GCE PDs support ownership management and SELinux relabeling. diff --git a/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1GRPCAction.ts b/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1GRPCAction.ts index 11a8b66..39a7973 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1GRPCAction.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1GRPCAction.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; export class IoK8sApiCoreV1GRPCAction { /** diff --git a/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1GitRepoVolumeSource.ts b/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1GitRepoVolumeSource.ts index 5fa97c8..8b812c4 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1GitRepoVolumeSource.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1GitRepoVolumeSource.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; /** * Represents a volume that is populated with the contents of a git repository. Git repo volumes do not support ownership management. Git repo volumes support SELinux relabeling. DEPRECATED: GitRepo is deprecated. To provision a container with a git repo, mount an EmptyDir into an InitContainer that clones the repo using git, then mount the EmptyDir into the Pod\'s container. diff --git a/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1GlusterfsVolumeSource.ts b/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1GlusterfsVolumeSource.ts index 1689cca..4fdd125 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1GlusterfsVolumeSource.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1GlusterfsVolumeSource.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; /** * Represents a Glusterfs mount that lasts the lifetime of a pod. Glusterfs volumes do not support ownership management or SELinux relabeling. diff --git a/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1HTTPGetAction.ts b/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1HTTPGetAction.ts index 97182c1..e2d74fb 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1HTTPGetAction.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1HTTPGetAction.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; import { IoK8sApiCoreV1HTTPHeader } from './ioK8sApiCoreV1HTTPHeader'; /** @@ -72,7 +71,7 @@ export class IoK8sApiCoreV1HTTPGetAction { export namespace IoK8sApiCoreV1HTTPGetAction { export enum SchemeEnum { - Http = 'HTTP', - Https = 'HTTPS' + Http = 'HTTP' as any, + Https = 'HTTPS' as any } } diff --git a/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1HTTPHeader.ts b/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1HTTPHeader.ts index d365721..30d698d 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1HTTPHeader.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1HTTPHeader.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; /** * HTTPHeader describes a custom header to be used in HTTP probes diff --git a/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1HostAlias.ts b/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1HostAlias.ts index 687ae23..a965f87 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1HostAlias.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1HostAlias.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; /** * HostAlias holds the mapping between IP and hostnames that will be injected as an entry in the pod\'s hosts file. diff --git a/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1HostPathVolumeSource.ts b/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1HostPathVolumeSource.ts index dc630f1..4c468f6 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1HostPathVolumeSource.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1HostPathVolumeSource.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; /** * Represents a host path mapped into a pod. Host path volumes do not support ownership management or SELinux relabeling. diff --git a/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1ISCSIVolumeSource.ts b/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1ISCSIVolumeSource.ts index 64ca81f..0d58299 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1ISCSIVolumeSource.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1ISCSIVolumeSource.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; import { IoK8sApiCoreV1LocalObjectReference } from './ioK8sApiCoreV1LocalObjectReference'; /** diff --git a/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1KeyToPath.ts b/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1KeyToPath.ts index f1a8ab5..325cc6a 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1KeyToPath.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1KeyToPath.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; /** * Maps a string key to a path within a volume. diff --git a/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1Lifecycle.ts b/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1Lifecycle.ts index c444b5f..683574c 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1Lifecycle.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1Lifecycle.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; import { IoK8sApiCoreV1LifecycleHandler } from './ioK8sApiCoreV1LifecycleHandler'; /** diff --git a/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1LifecycleHandler.ts b/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1LifecycleHandler.ts index 1a746d1..a7e3bc5 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1LifecycleHandler.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1LifecycleHandler.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; import { IoK8sApiCoreV1ExecAction } from './ioK8sApiCoreV1ExecAction'; import { IoK8sApiCoreV1HTTPGetAction } from './ioK8sApiCoreV1HTTPGetAction'; import { IoK8sApiCoreV1TCPSocketAction } from './ioK8sApiCoreV1TCPSocketAction'; diff --git a/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1LocalObjectReference.ts b/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1LocalObjectReference.ts index f0e9806..62ffb23 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1LocalObjectReference.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1LocalObjectReference.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; /** * LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace. diff --git a/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1NFSVolumeSource.ts b/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1NFSVolumeSource.ts index 04676bd..bde28e4 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1NFSVolumeSource.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1NFSVolumeSource.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; /** * Represents an NFS mount that lasts the lifetime of a pod. NFS volumes do not support ownership management or SELinux relabeling. diff --git a/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1NodeAffinity.ts b/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1NodeAffinity.ts index 3bd37b5..e7510f7 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1NodeAffinity.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1NodeAffinity.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; import { IoK8sApiCoreV1NodeSelector } from './ioK8sApiCoreV1NodeSelector'; import { IoK8sApiCoreV1PreferredSchedulingTerm } from './ioK8sApiCoreV1PreferredSchedulingTerm'; diff --git a/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1NodeSelector.ts b/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1NodeSelector.ts index 1481d15..fbeb9e4 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1NodeSelector.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1NodeSelector.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; import { IoK8sApiCoreV1NodeSelectorTerm } from './ioK8sApiCoreV1NodeSelectorTerm'; /** diff --git a/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1NodeSelectorRequirement.ts b/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1NodeSelectorRequirement.ts index e673e91..5668aee 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1NodeSelectorRequirement.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1NodeSelectorRequirement.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; /** * A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values. @@ -56,11 +55,11 @@ export class IoK8sApiCoreV1NodeSelectorRequirement { export namespace IoK8sApiCoreV1NodeSelectorRequirement { export enum OperatorEnum { - DoesNotExist = 'DoesNotExist', - Exists = 'Exists', - Gt = 'Gt', - In = 'In', - Lt = 'Lt', - NotIn = 'NotIn' + DoesNotExist = 'DoesNotExist' as any, + Exists = 'Exists' as any, + Gt = 'Gt' as any, + In = 'In' as any, + Lt = 'Lt' as any, + NotIn = 'NotIn' as any } } diff --git a/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1NodeSelectorTerm.ts b/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1NodeSelectorTerm.ts index e17dda2..b2dd6cd 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1NodeSelectorTerm.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1NodeSelectorTerm.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; import { IoK8sApiCoreV1NodeSelectorRequirement } from './ioK8sApiCoreV1NodeSelectorRequirement'; /** diff --git a/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1ObjectFieldSelector.ts b/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1ObjectFieldSelector.ts index ddf6426..73b4229 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1ObjectFieldSelector.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1ObjectFieldSelector.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; /** * ObjectFieldSelector selects an APIVersioned field of an object. diff --git a/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1ObjectReference.ts b/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1ObjectReference.ts index 8206907..eb68806 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1ObjectReference.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1ObjectReference.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; /** * ObjectReference contains enough information to let you inspect or modify the referred object. diff --git a/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1PersistentVolumeClaim.ts b/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1PersistentVolumeClaim.ts index 5c9e69b..b5b74d9 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1PersistentVolumeClaim.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1PersistentVolumeClaim.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; import { IoK8sApiCoreV1PersistentVolumeClaimSpec } from './ioK8sApiCoreV1PersistentVolumeClaimSpec'; import { IoK8sApiCoreV1PersistentVolumeClaimStatus } from './ioK8sApiCoreV1PersistentVolumeClaimStatus'; import { IoK8sApimachineryPkgApisMetaV1ObjectMeta } from './ioK8sApimachineryPkgApisMetaV1ObjectMeta'; diff --git a/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1PersistentVolumeClaimCondition.ts b/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1PersistentVolumeClaimCondition.ts index ccefe63..f11232b 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1PersistentVolumeClaimCondition.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1PersistentVolumeClaimCondition.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; /** * PersistentVolumeClaimCondition contails details about state of pvc @@ -80,7 +79,7 @@ export class IoK8sApiCoreV1PersistentVolumeClaimCondition { export namespace IoK8sApiCoreV1PersistentVolumeClaimCondition { export enum TypeEnum { - FileSystemResizePending = 'FileSystemResizePending', - Resizing = 'Resizing' + FileSystemResizePending = 'FileSystemResizePending' as any, + Resizing = 'Resizing' as any } } diff --git a/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1PersistentVolumeClaimSpec.ts b/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1PersistentVolumeClaimSpec.ts index b9df2f0..82a5a44 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1PersistentVolumeClaimSpec.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1PersistentVolumeClaimSpec.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; import { IoK8sApiCoreV1ResourceRequirements } from './ioK8sApiCoreV1ResourceRequirements'; import { IoK8sApiCoreV1TypedLocalObjectReference } from './ioK8sApiCoreV1TypedLocalObjectReference'; import { IoK8sApimachineryPkgApisMetaV1LabelSelector } from './ioK8sApimachineryPkgApisMetaV1LabelSelector'; diff --git a/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1PersistentVolumeClaimStatus.ts b/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1PersistentVolumeClaimStatus.ts index 7fa18ab..24d52b2 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1PersistentVolumeClaimStatus.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1PersistentVolumeClaimStatus.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; import { IoK8sApiCoreV1PersistentVolumeClaimCondition } from './ioK8sApiCoreV1PersistentVolumeClaimCondition'; /** @@ -84,8 +83,8 @@ export class IoK8sApiCoreV1PersistentVolumeClaimStatus { export namespace IoK8sApiCoreV1PersistentVolumeClaimStatus { export enum PhaseEnum { - Bound = 'Bound', - Lost = 'Lost', - Pending = 'Pending' + Bound = 'Bound' as any, + Lost = 'Lost' as any, + Pending = 'Pending' as any } } diff --git a/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1PersistentVolumeClaimTemplate.ts b/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1PersistentVolumeClaimTemplate.ts index 4bf4619..70844b6 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1PersistentVolumeClaimTemplate.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1PersistentVolumeClaimTemplate.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; import { IoK8sApiCoreV1PersistentVolumeClaimSpec } from './ioK8sApiCoreV1PersistentVolumeClaimSpec'; import { IoK8sApimachineryPkgApisMetaV1ObjectMeta } from './ioK8sApimachineryPkgApisMetaV1ObjectMeta'; diff --git a/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1PersistentVolumeClaimVolumeSource.ts b/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1PersistentVolumeClaimVolumeSource.ts index 255272b..4f271a6 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1PersistentVolumeClaimVolumeSource.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1PersistentVolumeClaimVolumeSource.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; /** * PersistentVolumeClaimVolumeSource references the user\'s PVC in the same namespace. This volume finds the bound PV and mounts that volume for the pod. A PersistentVolumeClaimVolumeSource is, essentially, a wrapper around another type of volume that is owned by someone else (the system). diff --git a/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1PhotonPersistentDiskVolumeSource.ts b/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1PhotonPersistentDiskVolumeSource.ts index d2369dd..6680d31 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1PhotonPersistentDiskVolumeSource.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1PhotonPersistentDiskVolumeSource.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; /** * Represents a Photon Controller persistent disk resource. diff --git a/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1PodAffinity.ts b/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1PodAffinity.ts index 4ecb016..bfaa35e 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1PodAffinity.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1PodAffinity.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; import { IoK8sApiCoreV1PodAffinityTerm } from './ioK8sApiCoreV1PodAffinityTerm'; import { IoK8sApiCoreV1WeightedPodAffinityTerm } from './ioK8sApiCoreV1WeightedPodAffinityTerm'; diff --git a/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1PodAffinityTerm.ts b/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1PodAffinityTerm.ts index bfa8f4a..bd1d91b 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1PodAffinityTerm.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1PodAffinityTerm.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; import { IoK8sApimachineryPkgApisMetaV1LabelSelector } from './ioK8sApimachineryPkgApisMetaV1LabelSelector'; /** diff --git a/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1PodAntiAffinity.ts b/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1PodAntiAffinity.ts index 2b8c848..d22fa07 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1PodAntiAffinity.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1PodAntiAffinity.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; import { IoK8sApiCoreV1PodAffinityTerm } from './ioK8sApiCoreV1PodAffinityTerm'; import { IoK8sApiCoreV1WeightedPodAffinityTerm } from './ioK8sApiCoreV1WeightedPodAffinityTerm'; diff --git a/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1PodDNSConfig.ts b/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1PodDNSConfig.ts index 251618d..b8f92fd 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1PodDNSConfig.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1PodDNSConfig.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; import { IoK8sApiCoreV1PodDNSConfigOption } from './ioK8sApiCoreV1PodDNSConfigOption'; /** diff --git a/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1PodDNSConfigOption.ts b/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1PodDNSConfigOption.ts index 9994a37..593c904 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1PodDNSConfigOption.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1PodDNSConfigOption.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; /** * PodDNSConfigOption defines DNS resolver options of a pod. diff --git a/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1PodSecurityContext.ts b/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1PodSecurityContext.ts index 20690c9..45ef007 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1PodSecurityContext.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1PodSecurityContext.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; import { IoK8sApiCoreV1SELinuxOptions } from './ioK8sApiCoreV1SELinuxOptions'; import { IoK8sApiCoreV1SeccompProfile } from './ioK8sApiCoreV1SeccompProfile'; import { IoK8sApiCoreV1Sysctl } from './ioK8sApiCoreV1Sysctl'; diff --git a/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1PortworxVolumeSource.ts b/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1PortworxVolumeSource.ts index fab8150..26b289a 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1PortworxVolumeSource.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1PortworxVolumeSource.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; /** * PortworxVolumeSource represents a Portworx volume resource. diff --git a/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1PreferredSchedulingTerm.ts b/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1PreferredSchedulingTerm.ts index 004416a..44633cc 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1PreferredSchedulingTerm.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1PreferredSchedulingTerm.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; import { IoK8sApiCoreV1NodeSelectorTerm } from './ioK8sApiCoreV1NodeSelectorTerm'; /** diff --git a/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1Probe.ts b/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1Probe.ts index 31ef4e3..6a2877b 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1Probe.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1Probe.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; import { IoK8sApiCoreV1ExecAction } from './ioK8sApiCoreV1ExecAction'; import { IoK8sApiCoreV1GRPCAction } from './ioK8sApiCoreV1GRPCAction'; import { IoK8sApiCoreV1HTTPGetAction } from './ioK8sApiCoreV1HTTPGetAction'; diff --git a/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1ProjectedVolumeSource.ts b/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1ProjectedVolumeSource.ts index 92452f1..c2a0ff3 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1ProjectedVolumeSource.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1ProjectedVolumeSource.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; import { IoK8sApiCoreV1VolumeProjection } from './ioK8sApiCoreV1VolumeProjection'; /** diff --git a/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1QuobyteVolumeSource.ts b/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1QuobyteVolumeSource.ts index 12af7af..40e2f63 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1QuobyteVolumeSource.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1QuobyteVolumeSource.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; /** * Represents a Quobyte mount that lasts the lifetime of a pod. Quobyte volumes do not support ownership management or SELinux relabeling. diff --git a/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1RBDVolumeSource.ts b/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1RBDVolumeSource.ts index 6d1c43c..f52461b 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1RBDVolumeSource.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1RBDVolumeSource.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; import { IoK8sApiCoreV1LocalObjectReference } from './ioK8sApiCoreV1LocalObjectReference'; /** diff --git a/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1ResourceFieldSelector.ts b/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1ResourceFieldSelector.ts index 3c13112..4fd5056 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1ResourceFieldSelector.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1ResourceFieldSelector.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; /** * ResourceFieldSelector represents container resources (cpu, memory) and their output format diff --git a/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1ResourceRequirements.ts b/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1ResourceRequirements.ts index 6c8a4c9..6950118 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1ResourceRequirements.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1ResourceRequirements.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; /** * ResourceRequirements describes the compute resource requirements. diff --git a/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1SELinuxOptions.ts b/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1SELinuxOptions.ts index c707ad4..fc34e7c 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1SELinuxOptions.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1SELinuxOptions.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; /** * SELinuxOptions are the labels to be applied to the container diff --git a/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1ScaleIOVolumeSource.ts b/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1ScaleIOVolumeSource.ts index 67231c1..09e5b23 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1ScaleIOVolumeSource.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1ScaleIOVolumeSource.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; import { IoK8sApiCoreV1LocalObjectReference } from './ioK8sApiCoreV1LocalObjectReference'; /** diff --git a/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1SeccompProfile.ts b/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1SeccompProfile.ts index 8472e9d..f4b69b2 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1SeccompProfile.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1SeccompProfile.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; /** * SeccompProfile defines a pod/container\'s seccomp profile settings. Only one profile source may be set. @@ -47,8 +46,8 @@ export class IoK8sApiCoreV1SeccompProfile { export namespace IoK8sApiCoreV1SeccompProfile { export enum TypeEnum { - Localhost = 'Localhost', - RuntimeDefault = 'RuntimeDefault', - Unconfined = 'Unconfined' + Localhost = 'Localhost' as any, + RuntimeDefault = 'RuntimeDefault' as any, + Unconfined = 'Unconfined' as any } } diff --git a/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1SecretEnvSource.ts b/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1SecretEnvSource.ts index 3a74c6c..4d92906 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1SecretEnvSource.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1SecretEnvSource.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; /** * SecretEnvSource selects a Secret to populate the environment variables with. The contents of the target Secret\'s Data field will represent the key-value pairs as environment variables. diff --git a/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1SecretKeySelector.ts b/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1SecretKeySelector.ts index 7eced5d..5462514 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1SecretKeySelector.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1SecretKeySelector.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; /** * SecretKeySelector selects a key of a Secret. diff --git a/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1SecretProjection.ts b/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1SecretProjection.ts index c9a47c0..7998eff 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1SecretProjection.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1SecretProjection.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; import { IoK8sApiCoreV1KeyToPath } from './ioK8sApiCoreV1KeyToPath'; /** diff --git a/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1SecretVolumeSource.ts b/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1SecretVolumeSource.ts index 3db95d3..b4fce3c 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1SecretVolumeSource.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1SecretVolumeSource.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; import { IoK8sApiCoreV1KeyToPath } from './ioK8sApiCoreV1KeyToPath'; /** diff --git a/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1SecurityContext.ts b/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1SecurityContext.ts index 922b54d..636004a 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1SecurityContext.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1SecurityContext.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; import { IoK8sApiCoreV1Capabilities } from './ioK8sApiCoreV1Capabilities'; import { IoK8sApiCoreV1SELinuxOptions } from './ioK8sApiCoreV1SELinuxOptions'; import { IoK8sApiCoreV1SeccompProfile } from './ioK8sApiCoreV1SeccompProfile'; diff --git a/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1ServiceAccountTokenProjection.ts b/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1ServiceAccountTokenProjection.ts index 83a43e5..be8a961 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1ServiceAccountTokenProjection.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1ServiceAccountTokenProjection.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; /** * ServiceAccountTokenProjection represents a projected service account token volume. This projection can be used to insert a service account token into the pods runtime filesystem for use against APIs (Kubernetes API Server or otherwise). diff --git a/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1ServicePort.ts b/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1ServicePort.ts index e0f5609..e44d176 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1ServicePort.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1ServicePort.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; /** * ServicePort contains information on service\'s port. @@ -80,8 +79,8 @@ export class IoK8sApiCoreV1ServicePort { export namespace IoK8sApiCoreV1ServicePort { export enum ProtocolEnum { - Sctp = 'SCTP', - Tcp = 'TCP', - Udp = 'UDP' + Sctp = 'SCTP' as any, + Tcp = 'TCP' as any, + Udp = 'UDP' as any } } diff --git a/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1StorageOSVolumeSource.ts b/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1StorageOSVolumeSource.ts index d51d774..78c0bc3 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1StorageOSVolumeSource.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1StorageOSVolumeSource.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; import { IoK8sApiCoreV1LocalObjectReference } from './ioK8sApiCoreV1LocalObjectReference'; /** diff --git a/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1Sysctl.ts b/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1Sysctl.ts index dabcef6..adac713 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1Sysctl.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1Sysctl.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; /** * Sysctl defines a kernel parameter to be set diff --git a/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1TCPSocketAction.ts b/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1TCPSocketAction.ts index 79e2ef5..4e43569 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1TCPSocketAction.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1TCPSocketAction.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; /** * TCPSocketAction describes an action based on opening a socket diff --git a/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1Toleration.ts b/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1Toleration.ts index 76bb56d..a6f061f 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1Toleration.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1Toleration.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; /** * The pod this Toleration is attached to tolerates any taint that matches the triple using the matching operator . @@ -74,12 +73,12 @@ export class IoK8sApiCoreV1Toleration { export namespace IoK8sApiCoreV1Toleration { export enum EffectEnum { - NoExecute = 'NoExecute', - NoSchedule = 'NoSchedule', - PreferNoSchedule = 'PreferNoSchedule' + NoExecute = 'NoExecute' as any, + NoSchedule = 'NoSchedule' as any, + PreferNoSchedule = 'PreferNoSchedule' as any } export enum OperatorEnum { - Equal = 'Equal', - Exists = 'Exists' + Equal = 'Equal' as any, + Exists = 'Exists' as any } } diff --git a/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1TypedLocalObjectReference.ts b/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1TypedLocalObjectReference.ts index 610586b..1963dc9 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1TypedLocalObjectReference.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1TypedLocalObjectReference.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; /** * TypedLocalObjectReference contains enough information to let you locate the typed referenced object inside the same namespace. diff --git a/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1Volume.ts b/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1Volume.ts index 53f21c1..9db5795 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1Volume.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1Volume.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; import { IoK8sApiCoreV1AWSElasticBlockStoreVolumeSource } from './ioK8sApiCoreV1AWSElasticBlockStoreVolumeSource'; import { IoK8sApiCoreV1AzureDiskVolumeSource } from './ioK8sApiCoreV1AzureDiskVolumeSource'; import { IoK8sApiCoreV1AzureFileVolumeSource } from './ioK8sApiCoreV1AzureFileVolumeSource'; diff --git a/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1VolumeDevice.ts b/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1VolumeDevice.ts index 2f2c073..2eb08cb 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1VolumeDevice.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1VolumeDevice.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; /** * volumeDevice describes a mapping of a raw block device within a container. diff --git a/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1VolumeMount.ts b/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1VolumeMount.ts index a27955f..8bad48c 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1VolumeMount.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1VolumeMount.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; /** * VolumeMount describes a mounting of a Volume within a container. diff --git a/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1VolumeProjection.ts b/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1VolumeProjection.ts index 2ecc3c5..bb954ce 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1VolumeProjection.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1VolumeProjection.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; import { IoK8sApiCoreV1ConfigMapProjection } from './ioK8sApiCoreV1ConfigMapProjection'; import { IoK8sApiCoreV1DownwardAPIProjection } from './ioK8sApiCoreV1DownwardAPIProjection'; import { IoK8sApiCoreV1SecretProjection } from './ioK8sApiCoreV1SecretProjection'; diff --git a/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1VsphereVirtualDiskVolumeSource.ts b/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1VsphereVirtualDiskVolumeSource.ts index a357d04..c6e9c28 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1VsphereVirtualDiskVolumeSource.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1VsphereVirtualDiskVolumeSource.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; /** * Represents a vSphere volume resource. diff --git a/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1WeightedPodAffinityTerm.ts b/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1WeightedPodAffinityTerm.ts index 9b67aec..14334b0 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1WeightedPodAffinityTerm.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1WeightedPodAffinityTerm.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; import { IoK8sApiCoreV1PodAffinityTerm } from './ioK8sApiCoreV1PodAffinityTerm'; /** diff --git a/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1WindowsSecurityContextOptions.ts b/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1WindowsSecurityContextOptions.ts index b3acd33..f952cdb 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1WindowsSecurityContextOptions.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioK8sApiCoreV1WindowsSecurityContextOptions.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; /** * WindowsSecurityContextOptions contain Windows-specific options and credentials. diff --git a/plugins/argo-workflows/src/api/generated/model/ioK8sApiPolicyV1PodDisruptionBudgetSpec.ts b/plugins/argo-workflows/src/api/generated/model/ioK8sApiPolicyV1PodDisruptionBudgetSpec.ts index e5ccb7a..24c5f95 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioK8sApiPolicyV1PodDisruptionBudgetSpec.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioK8sApiPolicyV1PodDisruptionBudgetSpec.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; import { IoK8sApimachineryPkgApisMetaV1LabelSelector } from './ioK8sApimachineryPkgApisMetaV1LabelSelector'; /** diff --git a/plugins/argo-workflows/src/api/generated/model/ioK8sApimachineryPkgApisMetaV1CreateOptions.ts b/plugins/argo-workflows/src/api/generated/model/ioK8sApimachineryPkgApisMetaV1CreateOptions.ts index f83f5be..7acc1c3 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioK8sApimachineryPkgApisMetaV1CreateOptions.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioK8sApimachineryPkgApisMetaV1CreateOptions.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; /** * CreateOptions may be provided when creating an API object. diff --git a/plugins/argo-workflows/src/api/generated/model/ioK8sApimachineryPkgApisMetaV1GroupVersionResource.ts b/plugins/argo-workflows/src/api/generated/model/ioK8sApimachineryPkgApisMetaV1GroupVersionResource.ts index 914cb38..fc9b062 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioK8sApimachineryPkgApisMetaV1GroupVersionResource.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioK8sApimachineryPkgApisMetaV1GroupVersionResource.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; /** * +protobuf.options.(gogoproto.goproto_stringer)=false diff --git a/plugins/argo-workflows/src/api/generated/model/ioK8sApimachineryPkgApisMetaV1LabelSelector.ts b/plugins/argo-workflows/src/api/generated/model/ioK8sApimachineryPkgApisMetaV1LabelSelector.ts index a8a7820..9c4e583 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioK8sApimachineryPkgApisMetaV1LabelSelector.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioK8sApimachineryPkgApisMetaV1LabelSelector.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; import { IoK8sApimachineryPkgApisMetaV1LabelSelectorRequirement } from './ioK8sApimachineryPkgApisMetaV1LabelSelectorRequirement'; /** diff --git a/plugins/argo-workflows/src/api/generated/model/ioK8sApimachineryPkgApisMetaV1LabelSelectorRequirement.ts b/plugins/argo-workflows/src/api/generated/model/ioK8sApimachineryPkgApisMetaV1LabelSelectorRequirement.ts index 3f440bb..d3626d3 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioK8sApimachineryPkgApisMetaV1LabelSelectorRequirement.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioK8sApimachineryPkgApisMetaV1LabelSelectorRequirement.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; /** * A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. diff --git a/plugins/argo-workflows/src/api/generated/model/ioK8sApimachineryPkgApisMetaV1ListMeta.ts b/plugins/argo-workflows/src/api/generated/model/ioK8sApimachineryPkgApisMetaV1ListMeta.ts index e909da2..cbdfb0d 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioK8sApimachineryPkgApisMetaV1ListMeta.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioK8sApimachineryPkgApisMetaV1ListMeta.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; /** * ListMeta describes metadata that synthetic resources must have, including lists and various status objects. A resource may have only one of {ObjectMeta, ListMeta}. diff --git a/plugins/argo-workflows/src/api/generated/model/ioK8sApimachineryPkgApisMetaV1ManagedFieldsEntry.ts b/plugins/argo-workflows/src/api/generated/model/ioK8sApimachineryPkgApisMetaV1ManagedFieldsEntry.ts index 26ec234..20152d1 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioK8sApimachineryPkgApisMetaV1ManagedFieldsEntry.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioK8sApimachineryPkgApisMetaV1ManagedFieldsEntry.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; /** * ManagedFieldsEntry is a workflow-id, a FieldSet and the group version of the resource that the fieldset applies to. diff --git a/plugins/argo-workflows/src/api/generated/model/ioK8sApimachineryPkgApisMetaV1ObjectMeta.ts b/plugins/argo-workflows/src/api/generated/model/ioK8sApimachineryPkgApisMetaV1ObjectMeta.ts index 0d9808a..8eb6ac2 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioK8sApimachineryPkgApisMetaV1ObjectMeta.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioK8sApimachineryPkgApisMetaV1ObjectMeta.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; import { IoK8sApimachineryPkgApisMetaV1ManagedFieldsEntry } from './ioK8sApimachineryPkgApisMetaV1ManagedFieldsEntry'; import { IoK8sApimachineryPkgApisMetaV1OwnerReference } from './ioK8sApimachineryPkgApisMetaV1OwnerReference'; diff --git a/plugins/argo-workflows/src/api/generated/model/ioK8sApimachineryPkgApisMetaV1OwnerReference.ts b/plugins/argo-workflows/src/api/generated/model/ioK8sApimachineryPkgApisMetaV1OwnerReference.ts index 04cfebc..5c83797 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioK8sApimachineryPkgApisMetaV1OwnerReference.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioK8sApimachineryPkgApisMetaV1OwnerReference.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; /** * OwnerReference contains enough information to let you identify an owning object. An owning object must be in the same namespace as the dependent, or be cluster-scoped, so there is no namespace field. diff --git a/plugins/argo-workflows/src/api/generated/model/ioK8sApimachineryPkgApisMetaV1StatusCause.ts b/plugins/argo-workflows/src/api/generated/model/ioK8sApimachineryPkgApisMetaV1StatusCause.ts index a6fbf59..604bdc2 100644 --- a/plugins/argo-workflows/src/api/generated/model/ioK8sApimachineryPkgApisMetaV1StatusCause.ts +++ b/plugins/argo-workflows/src/api/generated/model/ioK8sApimachineryPkgApisMetaV1StatusCause.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; /** * StatusCause provides more information about an api.Status failure, including cases when multiple errors are encountered. diff --git a/plugins/argo-workflows/src/api/generated/model/models.ts b/plugins/argo-workflows/src/api/generated/model/models.ts index 299f31e..ffb4685 100644 --- a/plugins/argo-workflows/src/api/generated/model/models.ts +++ b/plugins/argo-workflows/src/api/generated/model/models.ts @@ -779,7 +779,7 @@ import { StreamResultOfSensorLogEntry } from './streamResultOfSensorLogEntry'; import { StreamResultOfSensorSensorWatchEvent } from './streamResultOfSensorSensorWatchEvent'; /* tslint:disable:no-unused-variable */ -let primitives = [ +const primitives = [ "string", "boolean", "double", @@ -790,7 +790,7 @@ let primitives = [ "any" ]; -let enumsMap: {[index: string]: any} = { +const enumsMap: {[index: string]: any} = { "IoK8sApiCoreV1Container.ImagePullPolicyEnum": IoK8sApiCoreV1Container.ImagePullPolicyEnum, "IoK8sApiCoreV1Container.TerminationMessagePolicyEnum": IoK8sApiCoreV1Container.TerminationMessagePolicyEnum, "IoK8sApiCoreV1ContainerPort.ProtocolEnum": IoK8sApiCoreV1ContainerPort.ProtocolEnum, @@ -804,7 +804,7 @@ let enumsMap: {[index: string]: any} = { "IoK8sApiCoreV1Toleration.OperatorEnum": IoK8sApiCoreV1Toleration.OperatorEnum, } -let typeMap: {[index: string]: any} = { +const typeMap: {[index: string]: any} = { "EventsourceCreateEventSourceRequest": EventsourceCreateEventSourceRequest, "EventsourceEventSourceWatchEvent": EventsourceEventSourceWatchEvent, "EventsourceLogEntry": EventsourceLogEntry, @@ -1196,7 +1196,7 @@ export class ObjectSerializer { return expectedType; } else if (expectedType === "Date") { return expectedType; - } else { + } if (enumsMap[expectedType]) { return expectedType; } @@ -1206,22 +1206,22 @@ export class ObjectSerializer { } // Check the discriminator - let discriminatorProperty = typeMap[expectedType].discriminator; + const discriminatorProperty = typeMap[expectedType].discriminator; if (discriminatorProperty == null) { return expectedType; // the type does not have a discriminator. use it. - } else { + } if (data[discriminatorProperty]) { - var discriminatorType = data[discriminatorProperty]; + const discriminatorType = data[discriminatorProperty]; if(typeMap[discriminatorType]){ return discriminatorType; // use the type given in the discriminator - } else { + } return expectedType; // discriminator did not map to a type - } - } else { + + } return expectedType; // discriminator was not present (or an empty string) - } - } - } + + + } public static serialize(data: any, type: string) { @@ -1232,15 +1232,15 @@ export class ObjectSerializer { } else if (type.lastIndexOf("Array<", 0) === 0) { // string.startsWith pre es6 let subType: string = type.replace("Array<", ""); // Array => Type> subType = subType.substring(0, subType.length - 1); // Type> => Type - let transformedData: any[] = []; + const transformedData: any[] = []; for (let index = 0; index < data.length; index++) { - let datum = data[index]; + const datum = data[index]; transformedData.push(ObjectSerializer.serialize(datum, subType)); } return transformedData; } else if (type === "Date") { return data.toISOString(); - } else { + } if (enumsMap[type]) { return data; } @@ -1252,14 +1252,14 @@ export class ObjectSerializer { type = this.findCorrectType(data, type); // get the map for the correct type. - let attributeTypes = typeMap[type].getAttributeTypeMap(); - let instance: {[index: string]: any} = {}; + const attributeTypes = typeMap[type].getAttributeTypeMap(); + const instance: {[index: string]: any} = {}; for (let index = 0; index < attributeTypes.length; index++) { - let attributeType = attributeTypes[index]; + const attributeType = attributeTypes[index]; instance[attributeType.baseName] = ObjectSerializer.serialize(data[attributeType.name], attributeType.type); } return instance; - } + } public static deserialize(data: any, type: string) { @@ -1272,15 +1272,15 @@ export class ObjectSerializer { } else if (type.lastIndexOf("Array<", 0) === 0) { // string.startsWith pre es6 let subType: string = type.replace("Array<", ""); // Array => Type> subType = subType.substring(0, subType.length - 1); // Type> => Type - let transformedData: any[] = []; + const transformedData: any[] = []; for (let index = 0; index < data.length; index++) { - let datum = data[index]; + const datum = data[index]; transformedData.push(ObjectSerializer.deserialize(datum, subType)); } return transformedData; } else if (type === "Date") { return new Date(data); - } else { + } if (enumsMap[type]) {// is Enum return data; } @@ -1288,14 +1288,14 @@ export class ObjectSerializer { if (!typeMap[type]) { // dont know the type return data; } - let instance = new typeMap[type](); - let attributeTypes = typeMap[type].getAttributeTypeMap(); + const instance = new typeMap[type](); + const attributeTypes = typeMap[type].getAttributeTypeMap(); for (let index = 0; index < attributeTypes.length; index++) { - let attributeType = attributeTypes[index]; + const attributeType = attributeTypes[index]; instance[attributeType.name] = ObjectSerializer.deserialize(data[attributeType.baseName], attributeType.type); } return instance; - } + } } @@ -1325,7 +1325,7 @@ export class HttpBearerAuth implements Authentication { const accessToken = typeof this.accessToken === 'function' ? this.accessToken() : this.accessToken; - requestOptions.headers["Authorization"] = "Bearer " + accessToken; + requestOptions.headers.Authorization = `Bearer ${ accessToken}`; } } } @@ -1338,15 +1338,15 @@ export class ApiKeyAuth implements Authentication { applyToRequest(requestOptions: localVarRequest.Options): void { if (this.location == "query") { - (requestOptions.qs)[this.paramName] = this.apiKey; + (requestOptions.qs as any)[this.paramName] = this.apiKey; } else if (this.location == "header" && requestOptions && requestOptions.headers) { requestOptions.headers[this.paramName] = this.apiKey; } else if (this.location == 'cookie' && requestOptions && requestOptions.headers) { - if (requestOptions.headers['Cookie']) { - requestOptions.headers['Cookie'] += '; ' + this.paramName + '=' + encodeURIComponent(this.apiKey); + if (requestOptions.headers.Cookie) { + requestOptions.headers.Cookie += `; ${ this.paramName }=${ encodeURIComponent(this.apiKey)}`; } else { - requestOptions.headers['Cookie'] = this.paramName + '=' + encodeURIComponent(this.apiKey); + requestOptions.headers.Cookie = `${this.paramName }=${ encodeURIComponent(this.apiKey)}`; } } } @@ -1357,7 +1357,7 @@ export class OAuth implements Authentication { applyToRequest(requestOptions: localVarRequest.Options): void { if (requestOptions && requestOptions.headers) { - requestOptions.headers["Authorization"] = "Bearer " + this.accessToken; + requestOptions.headers.Authorization = `Bearer ${ this.accessToken}`; } } } diff --git a/plugins/argo-workflows/src/api/generated/model/sensorCreateSensorRequest.ts b/plugins/argo-workflows/src/api/generated/model/sensorCreateSensorRequest.ts index c20a1d5..fb6819b 100644 --- a/plugins/argo-workflows/src/api/generated/model/sensorCreateSensorRequest.ts +++ b/plugins/argo-workflows/src/api/generated/model/sensorCreateSensorRequest.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; import { IoArgoprojEventsV1alpha1Sensor } from './ioArgoprojEventsV1alpha1Sensor'; import { IoK8sApimachineryPkgApisMetaV1CreateOptions } from './ioK8sApimachineryPkgApisMetaV1CreateOptions'; diff --git a/plugins/argo-workflows/src/api/generated/model/sensorLogEntry.ts b/plugins/argo-workflows/src/api/generated/model/sensorLogEntry.ts index c0cb0bc..b478877 100644 --- a/plugins/argo-workflows/src/api/generated/model/sensorLogEntry.ts +++ b/plugins/argo-workflows/src/api/generated/model/sensorLogEntry.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; export class SensorLogEntry { 'dependencyName'?: string; diff --git a/plugins/argo-workflows/src/api/generated/model/sensorSensorWatchEvent.ts b/plugins/argo-workflows/src/api/generated/model/sensorSensorWatchEvent.ts index b013fdc..fa4940c 100644 --- a/plugins/argo-workflows/src/api/generated/model/sensorSensorWatchEvent.ts +++ b/plugins/argo-workflows/src/api/generated/model/sensorSensorWatchEvent.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; import { IoArgoprojEventsV1alpha1Sensor } from './ioArgoprojEventsV1alpha1Sensor'; export class SensorSensorWatchEvent { diff --git a/plugins/argo-workflows/src/api/generated/model/sensorUpdateSensorRequest.ts b/plugins/argo-workflows/src/api/generated/model/sensorUpdateSensorRequest.ts index 0ca2f4f..bc3a7dc 100644 --- a/plugins/argo-workflows/src/api/generated/model/sensorUpdateSensorRequest.ts +++ b/plugins/argo-workflows/src/api/generated/model/sensorUpdateSensorRequest.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; import { IoArgoprojEventsV1alpha1Sensor } from './ioArgoprojEventsV1alpha1Sensor'; export class SensorUpdateSensorRequest { diff --git a/plugins/argo-workflows/src/api/generated/model/streamResultOfEventsourceEventSourceWatchEvent.ts b/plugins/argo-workflows/src/api/generated/model/streamResultOfEventsourceEventSourceWatchEvent.ts index 996fba7..3927a3d 100644 --- a/plugins/argo-workflows/src/api/generated/model/streamResultOfEventsourceEventSourceWatchEvent.ts +++ b/plugins/argo-workflows/src/api/generated/model/streamResultOfEventsourceEventSourceWatchEvent.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; import { EventsourceEventSourceWatchEvent } from './eventsourceEventSourceWatchEvent'; import { GrpcGatewayRuntimeStreamError } from './grpcGatewayRuntimeStreamError'; diff --git a/plugins/argo-workflows/src/api/generated/model/streamResultOfEventsourceLogEntry.ts b/plugins/argo-workflows/src/api/generated/model/streamResultOfEventsourceLogEntry.ts index aea1cf4..42970fd 100644 --- a/plugins/argo-workflows/src/api/generated/model/streamResultOfEventsourceLogEntry.ts +++ b/plugins/argo-workflows/src/api/generated/model/streamResultOfEventsourceLogEntry.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; import { EventsourceLogEntry } from './eventsourceLogEntry'; import { GrpcGatewayRuntimeStreamError } from './grpcGatewayRuntimeStreamError'; diff --git a/plugins/argo-workflows/src/api/generated/model/streamResultOfIoArgoprojWorkflowV1alpha1LogEntry.ts b/plugins/argo-workflows/src/api/generated/model/streamResultOfIoArgoprojWorkflowV1alpha1LogEntry.ts index f66ae28..ce031ee 100644 --- a/plugins/argo-workflows/src/api/generated/model/streamResultOfIoArgoprojWorkflowV1alpha1LogEntry.ts +++ b/plugins/argo-workflows/src/api/generated/model/streamResultOfIoArgoprojWorkflowV1alpha1LogEntry.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; import { GrpcGatewayRuntimeStreamError } from './grpcGatewayRuntimeStreamError'; import { IoArgoprojWorkflowV1alpha1LogEntry } from './ioArgoprojWorkflowV1alpha1LogEntry'; diff --git a/plugins/argo-workflows/src/api/generated/model/streamResultOfIoArgoprojWorkflowV1alpha1WorkflowWatchEvent.ts b/plugins/argo-workflows/src/api/generated/model/streamResultOfIoArgoprojWorkflowV1alpha1WorkflowWatchEvent.ts index 8f3ef6c..9cbe046 100644 --- a/plugins/argo-workflows/src/api/generated/model/streamResultOfIoArgoprojWorkflowV1alpha1WorkflowWatchEvent.ts +++ b/plugins/argo-workflows/src/api/generated/model/streamResultOfIoArgoprojWorkflowV1alpha1WorkflowWatchEvent.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; import { GrpcGatewayRuntimeStreamError } from './grpcGatewayRuntimeStreamError'; import { IoArgoprojWorkflowV1alpha1WorkflowWatchEvent } from './ioArgoprojWorkflowV1alpha1WorkflowWatchEvent'; diff --git a/plugins/argo-workflows/src/api/generated/model/streamResultOfIoK8sApiCoreV1Event.ts b/plugins/argo-workflows/src/api/generated/model/streamResultOfIoK8sApiCoreV1Event.ts index ebaa78f..846074e 100644 --- a/plugins/argo-workflows/src/api/generated/model/streamResultOfIoK8sApiCoreV1Event.ts +++ b/plugins/argo-workflows/src/api/generated/model/streamResultOfIoK8sApiCoreV1Event.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; import { GrpcGatewayRuntimeStreamError } from './grpcGatewayRuntimeStreamError'; import { IoK8sApiCoreV1Event } from './ioK8sApiCoreV1Event'; diff --git a/plugins/argo-workflows/src/api/generated/model/streamResultOfSensorLogEntry.ts b/plugins/argo-workflows/src/api/generated/model/streamResultOfSensorLogEntry.ts index 53814dc..ab232b7 100644 --- a/plugins/argo-workflows/src/api/generated/model/streamResultOfSensorLogEntry.ts +++ b/plugins/argo-workflows/src/api/generated/model/streamResultOfSensorLogEntry.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; import { GrpcGatewayRuntimeStreamError } from './grpcGatewayRuntimeStreamError'; import { SensorLogEntry } from './sensorLogEntry'; diff --git a/plugins/argo-workflows/src/api/generated/model/streamResultOfSensorSensorWatchEvent.ts b/plugins/argo-workflows/src/api/generated/model/streamResultOfSensorSensorWatchEvent.ts index d6fe4ca..f7cb956 100644 --- a/plugins/argo-workflows/src/api/generated/model/streamResultOfSensorSensorWatchEvent.ts +++ b/plugins/argo-workflows/src/api/generated/model/streamResultOfSensorSensorWatchEvent.ts @@ -11,7 +11,6 @@ * Do not edit the class manually. */ -import { RequestFile } from './models'; import { GrpcGatewayRuntimeStreamError } from './grpcGatewayRuntimeStreamError'; import { SensorSensorWatchEvent } from './sensorSensorWatchEvent'; diff --git a/plugins/argo-workflows/src/components/Overview/Overview.tsx b/plugins/argo-workflows/src/components/Overview/Overview.tsx index 78923fd..2004a62 100644 --- a/plugins/argo-workflows/src/components/Overview/Overview.tsx +++ b/plugins/argo-workflows/src/components/Overview/Overview.tsx @@ -1,4 +1,4 @@ -import React from 'react'; + import { Header, HeaderLabel, @@ -8,7 +8,7 @@ import { SupportButton, InfoCard, } from '@backstage/core-components'; -import { Grid } from '@material-ui/core'; +// CSS grid replaces MUI Grid (MUI removed per BUI migration) import { OverviewTable } from '../WorkflowOverview/WorkflowOverview'; import { useEntity } from '@backstage/plugin-catalog-react'; import { isArgoWorkflowsAvailable } from '../../plugin'; @@ -23,12 +23,15 @@ export const ArgoWorkflowsOverviewPage = () => ( Overview of your Argo Workflows - - - - - - + {/* CSS grid replaces MUI Grid (MUI removed per BUI migration) */} +
+
+ +
+
+ +
+
); diff --git a/plugins/argo-workflows/src/components/WorkflowOverview/WorkflowOverview.tsx b/plugins/argo-workflows/src/components/WorkflowOverview/WorkflowOverview.tsx index 650b50f..f1f52a2 100644 --- a/plugins/argo-workflows/src/components/WorkflowOverview/WorkflowOverview.tsx +++ b/plugins/argo-workflows/src/components/WorkflowOverview/WorkflowOverview.tsx @@ -12,7 +12,7 @@ import { TableColumn, } from "@backstage/core-components"; import React from "react"; -import Alert from "@material-ui/lab/Alert"; +import { ResponseErrorPanel } from "@backstage/core-components"; import { useEntity } from "@backstage/plugin-catalog-react"; import { IoArgoprojWorkflowV1alpha1WorkflowList } from "../../api/generated/api"; import { getAnnotationValues, trimBaseUrl } from "../utils"; @@ -79,7 +79,7 @@ export const OverviewTable = () => { if (loading) { return ; } else if (error) { - return {`${error}`}; + return ; } const data = value?.items?.map((val) => { diff --git a/plugins/argo-workflows/src/components/WorkflowTemplateOverview/WorkflowTemplateOverview.tsx b/plugins/argo-workflows/src/components/WorkflowTemplateOverview/WorkflowTemplateOverview.tsx index eae4c06..7637a5e 100644 --- a/plugins/argo-workflows/src/components/WorkflowTemplateOverview/WorkflowTemplateOverview.tsx +++ b/plugins/argo-workflows/src/components/WorkflowTemplateOverview/WorkflowTemplateOverview.tsx @@ -5,7 +5,7 @@ import { getAnnotationValues, trimBaseUrl } from "../utils"; import { Link, Progress, Table, TableColumn } from "@backstage/core-components"; import React, { useEffect, useState } from "react"; import useAsync from "react-use/lib/useAsync"; -import Alert from "@material-ui/lab/Alert"; +import { ResponseErrorPanel } from "@backstage/core-components"; type TableData = { id: string; @@ -67,7 +67,7 @@ export const WorkflowTemplateTable = () => { if (loading) { return ; } else if (error) { - return no workflow templates found; + return ; } return ( diff --git a/plugins/cnoe-ui/dev/index.tsx b/plugins/cnoe-ui/dev/index.tsx index 687e8c6..fddff9c 100644 --- a/plugins/cnoe-ui/dev/index.tsx +++ b/plugins/cnoe-ui/dev/index.tsx @@ -1,4 +1,4 @@ -import React from 'react'; + import { createDevApp } from '@backstage/dev-utils'; import { cnoeFrontendPlugin, CNOEHomepage } from '../src/plugin'; diff --git a/plugins/cnoe-ui/package.json b/plugins/cnoe-ui/package.json index e319745..8edac1f 100644 --- a/plugins/cnoe-ui/package.json +++ b/plugins/cnoe-ui/package.json @@ -3,6 +3,21 @@ "version": "0.1.0", "main": "src/index.ts", "types": "src/index.ts", + "exports": { + ".": "./src/index.ts", + "./alpha": "./src/alpha.tsx", + "./package.json": "./package.json" + }, + "typesVersions": { + "*": { + "alpha": [ + "src/alpha.tsx" + ], + "package.json": [ + "package.json" + ] + } + }, "license": "Apache-2.0", "private": true, "publishConfig": { @@ -24,22 +39,23 @@ "postpack": "backstage-cli package postpack" }, "dependencies": { - "@backstage/core-components": "^0.14.8", - "@backstage/core-plugin-api": "^1.9.3", - "@backstage/theme": "^0.5.6", - "@material-ui/core": "^4.12.2", - "@material-ui/icons": "^4.9.1", - "@material-ui/lab": "^4.0.0-alpha.61", + "@backstage/core-components": "^0.18.8", + "@backstage/core-plugin-api": "^1.12.4", + "@backstage/frontend-plugin-api": "^0.15.1", + "@backstage/plugin-home": "^0.9.3", + "@backstage/plugin-search": "^1.7.0", + "@backstage/plugin-search-react": "^1.11.0", + "@backstage/theme": "^0.7.2", "react-use": "^17.2.4" }, "peerDependencies": { - "react": "^17.0.0 || ^18.0.2" + "react": "^17.0.0 || ^18.0.0" }, "devDependencies": { - "@backstage/cli": "^0.26.10", - "@backstage/core-app-api": "^1.13.0", - "@backstage/dev-utils": "^1.0.34", - "@backstage/test-utils": "^1.5.7", + "@backstage/cli": "^0.36.0", + "@backstage/core-app-api": "^1.19.6", + "@backstage/dev-utils": "^1.1.21", + "@backstage/test-utils": "^1.7.16", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", "@testing-library/user-event": "^14.0.0", diff --git a/plugins/cnoe-ui/src/alpha.tsx b/plugins/cnoe-ui/src/alpha.tsx new file mode 100644 index 0000000..62016c2 --- /dev/null +++ b/plugins/cnoe-ui/src/alpha.tsx @@ -0,0 +1,23 @@ + +import { createFrontendPlugin, PageBlueprint } from '@backstage/frontend-plugin-api'; + +/** + * PageBlueprint extension for the CNOE UI plugin. + * Registers the CNOE homepage under /home. + */ +const CnoeUiPage = PageBlueprint.make({ + params: { + path: '/home', + loader: () => + import('./components/Homepage').then(m => ), + }, +}); + +/** + * New frontend system plugin entry point for @internal/plugin-cnoe-ui. + * Import via the "/alpha" sub-path export. + */ +export default createFrontendPlugin({ + pluginId: 'cnoe-ui-plugin', + extensions: [CnoeUiPage], +}); diff --git a/plugins/cnoe-ui/src/components/Homepage.tsx b/plugins/cnoe-ui/src/components/Homepage.tsx index e1f7029..96962c4 100644 --- a/plugins/cnoe-ui/src/components/Homepage.tsx +++ b/plugins/cnoe-ui/src/components/Homepage.tsx @@ -1,8 +1,8 @@ import { Content, Page } from '@backstage/core-components'; import { HomePageSearchBar } from '@backstage/plugin-search'; import { SearchContextProvider } from '@backstage/plugin-search-react'; -import { Grid, makeStyles } from '@material-ui/core'; -import React from 'react'; +import { useApi, configApiRef } from '@backstage/core-plugin-api'; +import type React from 'react'; import { HomePageToolkit, @@ -15,67 +15,150 @@ import { LogoBig, } from './logos'; -const useStyles = makeStyles(theme => ({ - searchBar: { - display: 'flex', - maxWidth: '60vw', - backgroundColor: theme.palette.background.paper, - boxShadow: theme.shadows[1], - padding: '8px 0', - borderRadius: '50px', - margin: 'auto', - }, -})); +const getBasePath = () => { + if (typeof window !== 'undefined') { + const baseTag = document.querySelector('base'); + if (baseTag?.href) { + try { + const base = new URL(baseTag.href); + return base.pathname.replace(/\/$/, ''); + } catch { + // fallback + } + } + } + return ''; +}; + +const basePath = getBasePath(); + +const getDomainUrl = () => { + if (typeof window !== 'undefined') { + return `${window.location.protocol}//${window.location.host}`; + } + return 'http://localhost:3000'; +}; + +const domainUrl = getDomainUrl(); -const useLogoStyles = makeStyles(theme => ({ - container: { - margin: theme.spacing(5, 0), - }, - svg: { - width: 'auto', - height: 100, - }, - path: { - fill: '#00568c', - }, -})); +// Inline styles replace former makeStyles usage (MUI removed per BUI migration) +const searchBarStyle: React.CSSProperties = { + display: 'flex', + maxWidth: '60vw', + backgroundColor: 'var(--backstage-color-background-paper, #fff)', + boxShadow: '0 1px 3px rgba(0,0,0,0.2)', + padding: '8px 0', + borderRadius: '50px', + margin: 'auto', +}; + +const logoContainerStyle: React.CSSProperties = { + margin: '40px 0', +}; export const CNOEHomepage = () => { - const classes = useStyles(); - const { container } = useLogoStyles(); + const config = useApi(configApiRef); + + const getGitLabUrl = () => { + try { + const gitlabIntegrations = config.getOptionalConfigArray( + 'integrations.gitlab', + ); + if (gitlabIntegrations && gitlabIntegrations.length > 0) { + const baseUrl = gitlabIntegrations[0].getOptionalString('baseUrl'); + if (baseUrl) return baseUrl; + } + } catch { + // GitLab config not available + } + return 'https://gitlab.com'; + }; + + const gitUrl = getGitLabUrl(); return ( - - } /> - - - - - + {/* CSS grid replaces MUI Grid (MUI removed per BUI migration) */} +
+ } /> +
+ +
+
+
- - +
+
, + icon: , }, { - url: '/docs', - label: 'Tech Docs', - icon: , + url: gitUrl, + label: 'GitLab', + icon: ( + GitLab + ), + }, + { + url: `${domainUrl}/argocd`, + label: 'ArgoCD', + icon: ( + ArgoCD + ), + }, + { + url: `${domainUrl}/argo-workflows`, + label: 'Argo Workflows', + icon: ( + Argo Workflows + ), + }, + { + url: domainUrl, + label: 'Kargo', + icon: ( + Kargo + ), + }, + { + url: `${domainUrl}/keycloak`, + label: 'Keycloak', + icon: ( + Keycloak + ), }, ]} /> - - - +
+
+
diff --git a/plugins/cnoe-ui/src/components/logos/LogoBig.tsx b/plugins/cnoe-ui/src/components/logos/LogoBig.tsx index 048dd9b..dadc51c 100644 --- a/plugins/cnoe-ui/src/components/logos/LogoBig.tsx +++ b/plugins/cnoe-ui/src/components/logos/LogoBig.tsx @@ -1,56 +1,39 @@ -import React from 'react'; -import { makeStyles } from '@material-ui/core'; -const useStyles = makeStyles({ - svg: { - width: 'auto', - height: 190, - }, - whitePath: { - fill: '#ffffff', - stroke: 'none', - }, - bluePath: { - fill: '#00568c', - stroke: 'none', - }, - cyanPath: { - fill: '#00adee', - stroke: 'none', - }, -}); -export const LogoBig = () => { - const classes = useStyles(); +// Inline styles replace former makeStyles usage (MUI removed per BUI migration) +const svgStyle: React.CSSProperties = { width: 'auto', height: 190 }; +const cyanPathStyle: React.CSSProperties = { fill: '#00adee', stroke: 'none' }; +const bluePathStyle: React.CSSProperties = { fill: '#00568c', stroke: 'none' }; +export const LogoBig = () => { return ( - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + ); }; diff --git a/plugins/cnoe-ui/src/components/logos/LogoFull.tsx b/plugins/cnoe-ui/src/components/logos/LogoFull.tsx index d4489ed..9e9bd90 100644 --- a/plugins/cnoe-ui/src/components/logos/LogoFull.tsx +++ b/plugins/cnoe-ui/src/components/logos/LogoFull.tsx @@ -1,56 +1,39 @@ -import React from 'react'; -import { makeStyles } from '@material-ui/core'; -const useStyles = makeStyles({ - svg: { - width: 'auto', - height: 90, - }, - whitePath: { - fill: '#ffffff', - stroke: 'none', - }, - bluePath: { - fill: '#00568c', - stroke: 'none', - }, - cyanPath: { - fill: '#00adee', - stroke: 'none', - }, -}); -export const LogoFull = () => { - const classes = useStyles(); +// Inline styles replace former makeStyles usage (MUI removed per BUI migration) +const svgStyle: React.CSSProperties = { width: 'auto', height: 90 }; +const cyanPathStyle: React.CSSProperties = { fill: '#00adee', stroke: 'none' }; +const bluePathStyle: React.CSSProperties = { fill: '#00568c', stroke: 'none' }; +export const LogoFull = () => { return ( - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + ); }; diff --git a/plugins/cnoe-ui/src/components/logos/LogoIcon.tsx b/plugins/cnoe-ui/src/components/logos/LogoIcon.tsx index bcf70a1..9487a0b 100644 --- a/plugins/cnoe-ui/src/components/logos/LogoIcon.tsx +++ b/plugins/cnoe-ui/src/components/logos/LogoIcon.tsx @@ -1,44 +1,27 @@ -import React from 'react'; -import { makeStyles } from '@material-ui/core'; -const useStyles = makeStyles({ - svg: { - width: 'auto', - height: 28, - }, - whitePath: { - fill: '#ffffff', - stroke: 'none', - }, - bluePath: { - fill: '#00568c', - stroke: 'none', - }, - cyanPath: { - fill: '#00adee', - stroke: 'none', - }, -}); -export const LogoIcon = () => { - const classes = useStyles(); +// Inline styles replace former makeStyles usage (MUI removed per BUI migration) +const svgStyle: React.CSSProperties = { width: 'auto', height: 28 }; +const cyanPathStyle: React.CSSProperties = { fill: '#00adee', stroke: 'none' }; +const bluePathStyle: React.CSSProperties = { fill: '#00568c', stroke: 'none' }; +export const LogoIcon = () => { return ( - - - - - - - - - - + + + + + + + + + + ); }; diff --git a/plugins/scaffolder-backend-module-gitlab/.eslintrc.js b/plugins/scaffolder-backend-module-gitlab/.eslintrc.js new file mode 100644 index 0000000..e2a53a6 --- /dev/null +++ b/plugins/scaffolder-backend-module-gitlab/.eslintrc.js @@ -0,0 +1 @@ +module.exports = require('@backstage/cli/config/eslint-factory')(__dirname); diff --git a/plugins/scaffolder-backend-module-gitlab/CHANGELOG.md b/plugins/scaffolder-backend-module-gitlab/CHANGELOG.md new file mode 100644 index 0000000..df082eb --- /dev/null +++ b/plugins/scaffolder-backend-module-gitlab/CHANGELOG.md @@ -0,0 +1,1527 @@ +# @backstage/plugin-scaffolder-backend-module-gitlab + +## 0.9.5 + +### Patch Changes + +- a84ddea: The log message now indicates that the pipeline trigger token was deleted and not pipeline itself. +- Updated dependencies + - @backstage/integration@1.18.0 + - @backstage/backend-plugin-api@1.4.3 + - @backstage/plugin-scaffolder-node@0.11.1 + +## 0.9.5-next.0 + +### Patch Changes + +- a84ddea: The log message now indicates that the pipeline trigger token was deleted and not pipeline itself. +- Updated dependencies + - @backstage/integration@1.18.0-next.0 + - @backstage/plugin-scaffolder-node@0.11.1-next.0 + - @backstage/backend-plugin-api@1.4.3-next.0 + +## 0.9.4 + +### Patch Changes + +- 5bb870b: Show additional information about the cause in error messages from GitLab +- df2bfab: The `description` property in `publish:gitlab:merge-request` has been made optional again to comply with the GitLab API. +- Updated dependencies + - @backstage/plugin-scaffolder-node@0.11.0 + - @backstage/backend-plugin-api@1.4.2 + +## 0.9.4-next.1 + +### Patch Changes + +- 5bb870b: Show additional information about the cause in error messages from GitLab + +## 0.9.4-next.0 + +### Patch Changes + +- df2bfab: The `description` property in `publish:gitlab:merge-request` has been made optional again to comply with the GitLab API. +- Updated dependencies + - @backstage/plugin-scaffolder-node@0.11.0-next.0 + - @backstage/backend-plugin-api@1.4.2-next.0 + - @backstage/config@1.3.3 + - @backstage/errors@1.2.7 + - @backstage/integration@1.17.1 + +## 0.9.3 + +### Patch Changes + +- Updated dependencies + - @backstage/config@1.3.3 + - @backstage/plugin-scaffolder-node@0.10.0 + - @backstage/integration@1.17.1 + - @backstage/backend-plugin-api@1.4.1 + +## 0.9.3-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-scaffolder-node@0.10.0-next.2 + +## 0.9.3-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/config@1.3.3-next.0 + - @backstage/integration@1.17.1-next.1 + - @backstage/backend-plugin-api@1.4.1-next.0 + - @backstage/plugin-scaffolder-node@0.9.1-next.1 + +## 0.9.3-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-scaffolder-node@0.9.1-next.0 + - @backstage/integration@1.17.1-next.0 + - @backstage/backend-plugin-api@1.4.0 + - @backstage/config@1.3.2 + - @backstage/errors@1.2.7 + +## 0.9.2 + +### Patch Changes + +- 063b2d3: Fixed dependency to frontend package from tests +- a296637: Migrate to new action format +- 3d6493a: Support merge request labels in publish:gitlab:merge-request +- Updated dependencies + - @backstage/plugin-scaffolder-node@0.9.0 + - @backstage/backend-plugin-api@1.4.0 + - @backstage/config@1.3.2 + - @backstage/errors@1.2.7 + - @backstage/integration@1.17.0 + +## 0.9.2-next.2 + +### Patch Changes + +- a296637: Migrate to new action format +- Updated dependencies + - @backstage/plugin-scaffolder-node@0.9.0-next.2 + - @backstage/backend-plugin-api@1.4.0-next.1 + - @backstage/config@1.3.2 + - @backstage/errors@1.2.7 + - @backstage/integration@1.17.0 + +## 0.9.2-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-scaffolder-node@0.8.3-next.1 + - @backstage/backend-plugin-api@1.4.0-next.1 + - @backstage/config@1.3.2 + - @backstage/errors@1.2.7 + - @backstage/integration@1.17.0 + +## 0.9.2-next.0 + +### Patch Changes + +- 3d6493a: Support merge request labels in publish:gitlab:merge-request +- Updated dependencies + - @backstage/plugin-scaffolder-node@0.8.3-next.0 + - @backstage/backend-plugin-api@1.4.0-next.0 + +## 0.9.1 + +### Patch Changes + +- d15355c: If the commit action is not `create` log a more appropriate error message to the end user advising that the files they're trying to modify might not exist +- 72d019d: Removed various typos +- Updated dependencies + - @backstage/integration@1.17.0 + - @backstage/backend-plugin-api@1.3.1 + - @backstage/plugin-scaffolder-node@0.8.2 + - @backstage/config@1.3.2 + - @backstage/errors@1.2.7 + +## 0.9.1-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/integration@1.17.0-next.3 + - @backstage/plugin-scaffolder-node@0.8.2-next.3 + - @backstage/backend-plugin-api@1.3.1-next.2 + - @backstage/config@1.3.2 + - @backstage/errors@1.2.7 + +## 0.9.1-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/integration@1.17.0-next.2 + - @backstage/config@1.3.2 + - @backstage/plugin-scaffolder-node@0.8.2-next.2 + - @backstage/backend-plugin-api@1.3.1-next.1 + - @backstage/errors@1.2.7 + +## 0.9.1-next.1 + +### Patch Changes + +- 72d019d: Removed various typos +- Updated dependencies + - @backstage/backend-plugin-api@1.3.1-next.1 + - @backstage/integration@1.16.4-next.1 + - @backstage/plugin-scaffolder-node@0.8.2-next.1 + - @backstage/config@1.3.2 + - @backstage/errors@1.2.7 + +## 0.9.1-next.0 + +### Patch Changes + +- d15355c: If the commit action is not `create` log a more appropriate error message to the end user advising that the files they're trying to modify might not exist +- Updated dependencies + - @backstage/integration@1.16.4-next.0 + - @backstage/plugin-scaffolder-node@0.8.2-next.0 + - @backstage/backend-plugin-api@1.3.1-next.0 + - @backstage/config@1.3.2 + - @backstage/errors@1.2.7 + +## 0.9.0 + +### Minor Changes + +- d86ce21: Added additional feedback in case branch is already created + +### Patch Changes + +- 003dc15: Updated the path field in the `gitlab:group:ensureExists` action to support also strings with multiple segments (e.g. `group/subgroup`) +- 19e23da: Adds more context to the `gitlab:repo:push` `commitAction` property for the installed actions section in the scaffolder +- Updated dependencies + - @backstage/plugin-scaffolder-node@0.8.1 + - @backstage/backend-plugin-api@1.3.0 + - @backstage/integration@1.16.3 + - @backstage/config@1.3.2 + - @backstage/errors@1.2.7 + +## 0.8.2-next.1 + +### Patch Changes + +- 003dc15: Updated the path field in the `gitlab:group:ensureExists` action to support also strings with multiple segments (e.g. `group/subgroup`) +- Updated dependencies + - @backstage/integration@1.16.3-next.0 + - @backstage/plugin-scaffolder-node@0.8.1-next.1 + - @backstage/backend-plugin-api@1.2.1 + - @backstage/config@1.3.2 + - @backstage/errors@1.2.7 + +## 0.8.2-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-scaffolder-node@0.8.1-next.0 + - @backstage/backend-plugin-api@1.2.1 + - @backstage/config@1.3.2 + - @backstage/errors@1.2.7 + - @backstage/integration@1.16.2 + +## 0.8.1 + +### Patch Changes + +- 0df33ea: fix: Creating a repository in a user namespace would always lead to an error +- 984b283: Made "gitlab:pipeline:trigger" action idempotent +- 225c733: Made gitlab:repo:push action idempotent. +- a08cb20: Remove usages of `@backstage/backend-common` +- ac58f84: Made gitlab:issue:edit action idempotent. +- f6b51a8: Made "gitlab:projectDeployToken:create" action idempotent +- a75e18f: Change the if statement in the catch block to match what the new version of Gitbeaker will return +- 36af946: Made "gitlab:projectVariable:create" action idempotent +- 1cea434: Made "gitlab:projectAccessToken:create" action idempotent +- 4f8b5b6: Allow signing git commits using configured private PGP key in scaffolder +- 83ae330: Made "gitlab:group:migrate" action idempotent +- Updated dependencies + - @backstage/integration@1.16.2 + - @backstage/plugin-scaffolder-node@0.8.0 + - @backstage/backend-plugin-api@1.2.1 + - @backstage/config@1.3.2 + - @backstage/errors@1.2.7 + +## 0.8.1-next.2 + +### Patch Changes + +- 0df33ea: fix: Creating a repository in a user namespace would always lead to an error +- ac58f84: Made gitlab:issue:edit action idempotent. +- a75e18f: Change the if statement in the catch block to match what the new version of Gitbeaker will return +- 4f8b5b6: Allow signing git commits using configured private PGP key in scaffolder +- Updated dependencies + - @backstage/plugin-scaffolder-node@0.8.0-next.2 + - @backstage/integration@1.16.2-next.0 + - @backstage/backend-plugin-api@1.2.1-next.1 + - @backstage/config@1.3.2 + - @backstage/errors@1.2.7 + +## 0.8.1-next.1 + +### Patch Changes + +- a08cb20: Remove usages of `@backstage/backend-common` +- Updated dependencies + - @backstage/plugin-scaffolder-node@0.7.1-next.1 + - @backstage/backend-plugin-api@1.2.1-next.1 + - @backstage/config@1.3.2 + - @backstage/errors@1.2.7 + - @backstage/integration@1.16.1 + +## 0.8.1-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@1.2.1-next.0 + - @backstage/plugin-scaffolder-node@0.7.1-next.0 + +## 0.8.0 + +### Minor Changes + +- 06eee14: Support empty repository creation in gitlab without workspace pushing and conditionally skip if the repository already exists. + +### Patch Changes + +- a0419a6: Made gitlab:group:ensureExists action idempotent +- 9d04e91: Fix automated assignment of reviewers for instances without premium/ultimate license (404). Introduce opt-in flag for automatic reviewer assignment based on approval rules +- 9545c5f: `createGitlabProjectMigrateAction` can now output the `migrationId` +- e52cee6: Made gitlab:issues:create action idempotent. +- fe44946: Fixed bug of passing wrong value to `onChange` handler when using `GitLab` autocomplete +- 66e392f: Making publish:gitlab:merge-request idempotent. +- a7b22eb: Fixed bug in gitlabRepoPush where it was looking in the wrong place in the exception response from gitbeaker when checking if the branch already exists +- Updated dependencies + - @backstage/backend-plugin-api@1.2.0 + - @backstage/plugin-scaffolder-node@0.7.0 + - @backstage/config@1.3.2 + - @backstage/errors@1.2.7 + - @backstage/integration@1.16.1 + +## 0.8.0-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-scaffolder-node@0.7.0-next.2 + - @backstage/backend-plugin-api@1.2.0-next.2 + - @backstage/config@1.3.2 + - @backstage/errors@1.2.7 + - @backstage/integration@1.16.1 + +## 0.8.0-next.2 + +### Patch Changes + +- 9d04e91: Fix automated assignment of reviewers for instances without premium/ultimate license (404). Introduce opt-in flag for automatic reviewer assignment based on approval rules +- 9545c5f: `createGitlabProjectMigrateAction` can now output the `migrationId` +- fe44946: Fixed bug of passing wrong value to `onChange` handler when using `GitLab` autocomplete +- Updated dependencies + - @backstage/backend-plugin-api@1.2.0-next.1 + - @backstage/config@1.3.2 + - @backstage/errors@1.2.7 + - @backstage/integration@1.16.1 + - @backstage/plugin-scaffolder-node@0.7.0-next.1 + +## 0.8.0-next.1 + +### Minor Changes + +- 06eee14: Support empty repository creation in gitlab without workspace pushing and conditionally skip if the repository already exists. + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@1.2.0-next.0 + - @backstage/config@1.3.2 + - @backstage/errors@1.2.7 + - @backstage/integration@1.16.1 + - @backstage/plugin-scaffolder-node@0.7.0-next.0 + +## 0.7.2-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@1.2.0-next.0 + - @backstage/plugin-scaffolder-node@0.7.0-next.0 + - @backstage/config@1.3.2 + - @backstage/errors@1.2.7 + - @backstage/integration@1.16.1 + +## 0.7.1 + +### Patch Changes + +- 8fb529a: Added `reviewerIds` to the Gitlab Merge Request action. +- a913beb: Added action `gitlab:group:migrate` to migrate projects using `bulk_import` +- 7b62987: Updated the path field in the `gitlab:group:ensureExists` action to accept an array of either strings or objects with name and slug fields. +- Updated dependencies + - @backstage/plugin-scaffolder-node@0.6.3 + - @backstage/integration@1.16.1 + - @backstage/backend-plugin-api@1.1.1 + - @backstage/config@1.3.2 + - @backstage/errors@1.2.7 + +## 0.7.1-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@1.1.1-next.1 + - @backstage/config@1.3.2-next.0 + - @backstage/errors@1.2.7-next.0 + - @backstage/plugin-scaffolder-node@0.6.3-next.1 + - @backstage/integration@1.16.1-next.0 + +## 0.7.1-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-scaffolder-node@0.6.3-next.0 + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/config@1.3.1 + - @backstage/errors@1.2.6 + - @backstage/integration@1.16.0 + +## 0.7.0 + +### Minor Changes + +- c4ffd13: Added the autocomplete feature to GitlabRepoUrlPicker +- 32459d0: **BREAKING**: Upgraded the `gitbeaker` library to version 41. As part of this, the `scopes` parameter to the `gitlab:projectDeployToken:create` is no longer optional, so you will have to pass it a value (for example `['read_repository']`). + +### Patch Changes + +- Updated dependencies + - @backstage/integration@1.16.0 + - @backstage/backend-plugin-api@1.1.0 + - @backstage/plugin-scaffolder-node@0.6.2 + - @backstage/errors@1.2.6 + - @backstage/config@1.3.1 + +## 0.7.0-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@1.1.0-next.2 + - @backstage/errors@1.2.6-next.0 + - @backstage/plugin-scaffolder-node@0.6.2-next.2 + - @backstage/config@1.3.1-next.0 + - @backstage/integration@1.16.0-next.1 + +## 0.7.0-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-scaffolder-node@0.6.2-next.1 + - @backstage/backend-plugin-api@1.1.0-next.1 + - @backstage/config@1.3.0 + - @backstage/errors@1.2.5 + - @backstage/integration@1.16.0-next.0 + +## 0.7.0-next.0 + +### Minor Changes + +- c4ffd13: Added the autocomplete feature to GitlabRepoUrlPicker +- 32459d0: **BREAKING**: Upgraded the `gitbeaker` library to version 41. As part of this, the `scopes` parameter to the `gitlab:projectDeployToken:create` is no longer optional, so you will have to pass it a value (for example `['read_repository']`). + +### Patch Changes + +- Updated dependencies + - @backstage/integration@1.16.0-next.0 + - @backstage/backend-plugin-api@1.0.3-next.0 + - @backstage/plugin-scaffolder-node@0.6.1-next.0 + - @backstage/config@1.3.0 + - @backstage/errors@1.2.5 + +## 0.6.1 + +### Patch Changes + +- cdc8b4c: Improve error messages from Gitlab +- 2dbdccb: Removed circular import +- Updated dependencies + - @backstage/config@1.3.0 + - @backstage/backend-plugin-api@1.0.2 + - @backstage/plugin-scaffolder-node@0.6.0 + - @backstage/errors@1.2.5 + - @backstage/integration@1.15.2 + +## 0.6.1-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@1.0.2-next.2 + - @backstage/config@1.2.0 + - @backstage/errors@1.2.4 + - @backstage/integration@1.15.1 + - @backstage/plugin-scaffolder-node@0.5.1-next.3 + +## 0.6.1-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@1.0.2-next.2 + - @backstage/config@1.2.0 + - @backstage/errors@1.2.4 + - @backstage/integration@1.15.1 + - @backstage/plugin-scaffolder-node@0.5.1-next.2 + +## 0.6.1-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@1.0.2-next.1 + - @backstage/config@1.2.0 + - @backstage/errors@1.2.4 + - @backstage/integration@1.15.1 + - @backstage/plugin-scaffolder-node@0.5.1-next.1 + +## 0.6.1-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@1.0.2-next.0 + - @backstage/config@1.2.0 + - @backstage/errors@1.2.4 + - @backstage/integration@1.15.1 + - @backstage/plugin-scaffolder-node@0.5.1-next.0 + +## 0.6.0 + +### Minor Changes + +- 73f2ccf: declare correct type (number) for publish:gitlab output.projectId + +### Patch Changes + +- 9adfe46: GitLab MR: introduce 'skip' commit action. +- bc71718: Updated installation instructions in README to not include `/alpha`. +- 094eaa3: Remove references to in-repo backend-common +- f2f68cf: Updated `gitlab:group:ensureExists` action to instead use oauth client. +- Updated dependencies + - @backstage/plugin-scaffolder-node@0.5.0 + - @backstage/integration@1.15.1 + - @backstage/backend-plugin-api@1.0.1 + - @backstage/config@1.2.0 + - @backstage/errors@1.2.4 + +## 0.6.0-next.2 + +### Minor Changes + +- 73f2ccf: declare correct type (number) for publish:gitlab output.projectId + +### Patch Changes + +- Updated dependencies + - @backstage/integration@1.15.1-next.1 + - @backstage/plugin-scaffolder-node@0.5.0-next.2 + - @backstage/backend-plugin-api@1.0.1-next.1 + - @backstage/config@1.2.0 + - @backstage/errors@1.2.4 + +## 0.5.1-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/integration@1.15.1-next.0 + - @backstage/backend-plugin-api@1.0.1-next.0 + - @backstage/config@1.2.0 + - @backstage/errors@1.2.4 + - @backstage/plugin-scaffolder-node@0.5.0-next.1 + +## 0.5.1-next.0 + +### Patch Changes + +- 094eaa3: Remove references to in-repo backend-common +- f2f68cf: Updated `gitlab:group:ensureExists` action to instead use oauth client. +- Updated dependencies + - @backstage/plugin-scaffolder-node@0.5.0-next.0 + - @backstage/backend-plugin-api@1.0.1-next.0 + - @backstage/config@1.2.0 + - @backstage/errors@1.2.4 + - @backstage/integration@1.15.0 + +## 0.5.0 + +### Minor Changes + +- d425fc4: **BREAKING**: The return values from `createBackendPlugin`, `createBackendModule`, and `createServiceFactory` are now simply `BackendFeature` and `ServiceFactory`, instead of the previously deprecated form of a function that returns them. For this reason, `createServiceFactory` also no longer accepts the callback form where you provide direct options to the service. This also affects all `coreServices.*` service refs. + + This may in particular affect tests; if you were effectively doing `createBackendModule({...})()` (note the parentheses), you can now remove those extra parentheses at the end. You may encounter cases of this in your `packages/backend/src/index.ts` too, where you add plugins, modules, and services. If you were using `createServiceFactory` with a function as its argument for the purpose of passing in options, this pattern has been deprecated for a while and is no longer supported. You may want to explore the new multiton patterns to achieve your goals, or moving settings to app-config. + + As part of this change, the `IdentityFactoryOptions` type was removed, and can no longer be used to tweak that service. The identity service was also deprecated some time ago, and you will want to [migrate to the new auth system](https://backstage.io/docs/tutorials/auth-service-migration) if you still rely on it. + +### Patch Changes + +- 5d1670f: Update README installation instructions +- Updated dependencies + - @backstage/backend-common@0.25.0 + - @backstage/backend-plugin-api@1.0.0 + - @backstage/integration@1.15.0 + - @backstage/config@1.2.0 + - @backstage/errors@1.2.4 + - @backstage/plugin-scaffolder-node@0.4.11 + +## 0.5.0-next.2 + +### Patch Changes + +- 5d1670f: Update README installation instructions +- Updated dependencies + - @backstage/backend-common@0.25.0-next.2 + - @backstage/backend-plugin-api@1.0.0-next.2 + - @backstage/integration@1.15.0-next.0 + - @backstage/config@1.2.0 + - @backstage/errors@1.2.4 + - @backstage/plugin-scaffolder-node@0.4.11-next.2 + +## 0.5.0-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.25.0-next.1 + - @backstage/backend-plugin-api@0.9.0-next.1 + - @backstage/config@1.2.0 + - @backstage/errors@1.2.4 + - @backstage/integration@1.14.0 + - @backstage/plugin-scaffolder-node@0.4.11-next.1 + +## 0.5.0-next.0 + +### Minor Changes + +- d425fc4: **BREAKING**: The return values from `createBackendPlugin`, `createBackendModule`, and `createServiceFactory` are now simply `BackendFeature` and `ServiceFactory`, instead of the previously deprecated form of a function that returns them. For this reason, `createServiceFactory` also no longer accepts the callback form where you provide direct options to the service. This also affects all `coreServices.*` service refs. + + This may in particular affect tests; if you were effectively doing `createBackendModule({...})()` (note the parentheses), you can now remove those extra parentheses at the end. You may encounter cases of this in your `packages/backend/src/index.ts` too, where you add plugins, modules, and services. If you were using `createServiceFactory` with a function as its argument for the purpose of passing in options, this pattern has been deprecated for a while and is no longer supported. You may want to explore the new multiton patterns to achieve your goals, or moving settings to app-config. + + As part of this change, the `IdentityFactoryOptions` type was removed, and can no longer be used to tweak that service. The identity service was also deprecated some time ago, and you will want to [migrate to the new auth system](https://backstage.io/docs/tutorials/auth-service-migration) if you still rely on it. + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.9.0-next.0 + - @backstage/backend-common@0.25.0-next.0 + - @backstage/plugin-scaffolder-node@0.4.11-next.0 + - @backstage/config@1.2.0 + - @backstage/errors@1.2.4 + - @backstage/integration@1.14.0 + +## 0.4.5 + +### Patch Changes + +- da97131: Added test cases for gitlab:issues:create examples +- fad1b90: Allow the `createGitlabProjectVariableAction` to use oauth tokens +- aab708e: Added test cases for gitlab:issue:edit examples +- ef742dc: Added test cases for gitlab:projectAccessToken:create example +- 1ba4c2f: Added test cases for gitlab:pipeline:trigger examples +- a6603e4: Add custom action for merge request: **auto** + + The **Auto** action selects the committed action between _create_ and _update_. + + The **Auto** action fetches files using the **/projects/repository/tree endpoint**. + After fetching, it checks if the file exists locally and in the repository. If it does, it chooses **update**; otherwise, it chooses **create**. + +- Updated dependencies + - @backstage/backend-plugin-api@0.8.0 + - @backstage/backend-common@0.24.0 + - @backstage/plugin-scaffolder-node@0.4.9 + - @backstage/integration@1.14.0 + - @backstage/config@1.2.0 + - @backstage/errors@1.2.4 + +## 0.4.5-next.3 + +### Patch Changes + +- da97131: Added test cases for gitlab:issues:create examples +- Updated dependencies + - @backstage/backend-plugin-api@0.8.0-next.3 + - @backstage/backend-common@0.23.4-next.3 + - @backstage/config@1.2.0 + - @backstage/errors@1.2.4 + - @backstage/integration@1.14.0-next.0 + - @backstage/plugin-scaffolder-node@0.4.9-next.3 + +## 0.4.5-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.8.0-next.2 + - @backstage/plugin-scaffolder-node@0.4.9-next.2 + - @backstage/backend-common@0.23.4-next.2 + - @backstage/integration@1.14.0-next.0 + - @backstage/config@1.2.0 + - @backstage/errors@1.2.4 + +## 0.4.5-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.7.1-next.1 + - @backstage/backend-common@0.23.4-next.1 + - @backstage/integration@1.14.0-next.0 + - @backstage/config@1.2.0 + - @backstage/errors@1.2.4 + - @backstage/plugin-scaffolder-node@0.4.9-next.1 + +## 0.4.5-next.0 + +### Patch Changes + +- fad1b90: Allow the `createGitlabProjectVariableAction` to use oauth tokens +- aab708e: Added test cases for gitlab:issue:edit examples +- ef742dc: Added test cases for gitlab:projectAccessToken:create example +- 1ba4c2f: Added test cases for gitlab:pipeline:trigger examples +- a6603e4: Add custom action for merge request: **auto** + + The **Auto** action selects the committed action between _create_ and _update_. + + The **Auto** action fetches files using the **/projects/repository/tree endpoint**. + After fetching, it checks if the file exists locally and in the repository. If it does, it chooses **update**; otherwise, it chooses **create**. + +- Updated dependencies + - @backstage/backend-common@0.23.4-next.0 + - @backstage/integration@1.14.0-next.0 + - @backstage/backend-plugin-api@0.7.1-next.0 + - @backstage/config@1.2.0 + - @backstage/errors@1.2.4 + - @backstage/plugin-scaffolder-node@0.4.9-next.0 + +## 0.4.4 + +### Patch Changes + +- 0ac124b: Updated configuration instructions +- 2fb0eb8: Added support for passing `variables` to `gitlab:pipeline:trigger` +- Updated dependencies + - @backstage/backend-plugin-api@0.7.0 + - @backstage/backend-common@0.23.3 + - @backstage/integration@1.13.0 + - @backstage/plugin-scaffolder-node@0.4.8 + - @backstage/config@1.2.0 + - @backstage/errors@1.2.4 + +## 0.4.4-next.1 + +### Patch Changes + +- 2fb0eb8: Added support for passing `variables` to `gitlab:pipeline:trigger` +- Updated dependencies + - @backstage/backend-common@0.23.3-next.1 + - @backstage/backend-plugin-api@0.6.22-next.1 + - @backstage/config@1.2.0 + - @backstage/errors@1.2.4 + - @backstage/integration@1.13.0-next.0 + - @backstage/plugin-scaffolder-node@0.4.8-next.1 + +## 0.4.3-next.0 + +### Patch Changes + +- 0ac124b: Updated configuration instructions +- Updated dependencies + - @backstage/backend-plugin-api@0.6.21-next.0 + - @backstage/backend-common@0.23.2-next.0 + - @backstage/integration@1.13.0-next.0 + - @backstage/plugin-scaffolder-node@0.4.7-next.0 + - @backstage/config@1.2.0 + - @backstage/errors@1.2.4 + +## 0.4.1 + +### Patch Changes + +- 78a0b08: Internal refactor to handle `BackendFeature` contract change. +- cf96041: Added `gitlab:issue:edit` action to edit existing GitLab issues +- d44a20a: Added additional plugin metadata to `package.json`. +- 829e0ec: Add new `gitlab:pipeline:trigger` action to trigger GitLab pipelines. +- Updated dependencies + - @backstage/backend-common@0.23.0 + - @backstage/backend-plugin-api@0.6.19 + - @backstage/integration@1.12.0 + - @backstage/plugin-scaffolder-node@0.4.5 + - @backstage/config@1.2.0 + - @backstage/errors@1.2.4 + +## 0.4.1-next.3 + +### Patch Changes + +- d44a20a: Added additional plugin metadata to `package.json`. +- Updated dependencies + - @backstage/backend-plugin-api@0.6.19-next.3 + - @backstage/integration@1.12.0-next.1 + - @backstage/plugin-scaffolder-node@0.4.5-next.3 + - @backstage/backend-common@0.23.0-next.3 + - @backstage/config@1.2.0 + - @backstage/errors@1.2.4 + +## 0.4.1-next.2 + +### Patch Changes + +- cf96041: Added `gitlab:issue:edit` action to edit existing GitLab issues +- Updated dependencies + - @backstage/backend-plugin-api@0.6.19-next.2 + - @backstage/backend-common@0.23.0-next.2 + - @backstage/integration@1.12.0-next.0 + - @backstage/plugin-scaffolder-node@0.4.5-next.2 + - @backstage/config@1.2.0 + - @backstage/errors@1.2.4 + +## 0.4.1-next.1 + +### Patch Changes + +- 829e0ec: Add new `gitlab:pipeline:trigger` action to trigger GitLab pipelines. +- Updated dependencies + - @backstage/backend-plugin-api@0.6.19-next.1 + - @backstage/backend-common@0.23.0-next.1 + - @backstage/plugin-scaffolder-node@0.4.5-next.1 + +## 0.4.1-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.22.1-next.0 + - @backstage/backend-plugin-api@0.6.19-next.0 + - @backstage/plugin-scaffolder-node@0.4.5-next.0 + - @backstage/config@1.2.0 + - @backstage/errors@1.2.4 + - @backstage/integration@1.11.0 + +## 0.4.0 + +### Minor Changes + +- 18f736f: Add examples for `gitlab:projectVariable:create` scaffolder action & improve related tests + +### Patch Changes + +- 8fa8a00: Add merge method and squash option for project creation +- d229dc4: Move path utilities from `backend-common` to the `backend-plugin-api` package. +- ffc73ec: Add examples for `gitlab:repo:push` scaffolder action & improve related tests +- Updated dependencies + - @backstage/backend-common@0.22.0 + - @backstage/backend-plugin-api@0.6.18 + - @backstage/plugin-scaffolder-node@0.4.4 + - @backstage/integration@1.11.0 + +## 0.4.0-next.2 + +### Minor Changes + +- 18f736f: Add examples for `gitlab:projectVariable:create` scaffolder action & improve related tests + +### Patch Changes + +- 8fa8a00: Add merge method and squash option for project creation +- Updated dependencies + - @backstage/backend-common@0.22.0-next.2 + - @backstage/plugin-scaffolder-node@0.4.4-next.2 + - @backstage/integration@1.11.0-next.0 + +## 0.3.4-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.22.0-next.1 + - @backstage/plugin-scaffolder-node@0.4.4-next.1 + - @backstage/backend-plugin-api@0.6.18-next.1 + +## 0.3.4-next.0 + +### Patch Changes + +- ffc73ec: Add examples for `gitlab:repo:push` scaffolder action & improve related tests +- Updated dependencies + - @backstage/backend-common@0.21.8-next.0 + - @backstage/backend-plugin-api@0.6.18-next.0 + - @backstage/plugin-scaffolder-node@0.4.4-next.0 + - @backstage/config@1.2.0 + - @backstage/errors@1.2.4 + - @backstage/integration@1.10.0 + +## 0.3.3 + +### Patch Changes + +- aa514d1: Add examples for `publish:gitlab:merge-request` scaffolder action & improve related tests +- 52f40ea: Add examples for `gitlab:group:ensureExists` scaffolder action & improve related tests +- 33f958a: Improve examples to ensure consistency across all publish actions +- d112225: Add examples for `gitlab:projectDeployToken:create` scaffolder action & improve related tests +- Updated dependencies + - @backstage/backend-common@0.21.7 + - @backstage/backend-plugin-api@0.6.17 + - @backstage/integration@1.10.0 + - @backstage/plugin-scaffolder-node@0.4.3 + - @backstage/config@1.2.0 + - @backstage/errors@1.2.4 + +## 0.3.3-next.1 + +### Patch Changes + +- 33f958a: Improve examples to ensure consistency across all publish actions +- Updated dependencies + - @backstage/backend-common@0.21.7-next.1 + - @backstage/backend-plugin-api@0.6.17-next.1 + - @backstage/plugin-scaffolder-node@0.4.3-next.1 + - @backstage/config@1.2.0 + - @backstage/errors@1.2.4 + - @backstage/integration@1.10.0-next.0 + +## 0.3.3-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.21.7-next.0 + - @backstage/integration@1.10.0-next.0 + - @backstage/backend-plugin-api@0.6.17-next.0 + - @backstage/config@1.2.0 + - @backstage/errors@1.2.4 + - @backstage/plugin-scaffolder-node@0.4.3-next.0 + +## 0.3.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.21.6 + - @backstage/backend-plugin-api@0.6.16 + - @backstage/plugin-scaffolder-node@0.4.2 + - @backstage/config@1.2.0 + - @backstage/errors@1.2.4 + - @backstage/integration@1.9.1 + +## 0.3.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.21.5 + - @backstage/plugin-scaffolder-node@0.4.1 + - @backstage/backend-plugin-api@0.6.15 + - @backstage/config@1.2.0 + - @backstage/errors@1.2.4 + - @backstage/integration@1.9.1 + +## 0.3.0 + +### Minor Changes + +- 6bfb7b1: Output the `iid` as `issuesIid` from the `gitlab:issues:create` action + +### Patch Changes + +- f44589d: Introduced `createMockActionContext` to unify the way of creating scaffolder mock context. + + It will help to maintain tests in a long run during structural changes of action context. + +- Updated dependencies + - @backstage/plugin-scaffolder-node@0.4.0 + - @backstage/backend-common@0.21.4 + - @backstage/integration@1.9.1 + - @backstage/config@1.2.0 + - @backstage/errors@1.2.4 + - @backstage/backend-plugin-api@0.6.14 + +## 0.3.0-next.2 + +### Minor Changes + +- 6bfb7b1: Output the `iid` as `issuesIid` from the `gitlab:issues:create` action + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-scaffolder-node@0.4.0-next.2 + - @backstage/integration@1.9.1-next.2 + - @backstage/backend-common@0.21.4-next.2 + - @backstage/backend-plugin-api@0.6.14-next.2 + - @backstage/config@1.2.0-next.1 + - @backstage/errors@1.2.4-next.0 + +## 0.2.17-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/config@1.2.0-next.1 + - @backstage/plugin-scaffolder-node@0.4.0-next.1 + - @backstage/backend-common@0.21.4-next.1 + - @backstage/backend-plugin-api@0.6.14-next.1 + - @backstage/integration@1.9.1-next.1 + - @backstage/errors@1.2.4-next.0 + +## 0.2.16-next.0 + +### Patch Changes + +- f44589d: Introduced `createMockActionContext` to unify the way of creating scaffolder mock context. + + It will help to maintain tests in a long run during structural changes of action context. + +- Updated dependencies + - @backstage/backend-common@0.21.3-next.0 + - @backstage/errors@1.2.4-next.0 + - @backstage/plugin-scaffolder-node@0.3.3-next.0 + - @backstage/backend-plugin-api@0.6.13-next.0 + - @backstage/config@1.1.2-next.0 + - @backstage/integration@1.9.1-next.0 + +## 0.2.13 + +### Patch Changes + +- e9a5228: Exporting a default module for the new Backend System +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- 1cd2740: Use the Gitbeaker library for `gitlab:projectAccessToken:create` action, enabling the `expiresAt` option +- Updated dependencies + - @backstage/backend-common@0.21.0 + - @backstage/backend-plugin-api@0.6.10 + - @backstage/integration@1.9.0 + - @backstage/plugin-scaffolder-node@0.3.0 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + +## 0.2.13-next.3 + +### Patch Changes + +- 1cd2740: Use the Gitbeaker library for `gitlab:projectAccessToken:create` action, enabling the `expiresAt` option +- Updated dependencies + - @backstage/backend-common@0.21.0-next.3 + - @backstage/integration@1.9.0-next.1 + - @backstage/plugin-scaffolder-node@0.3.0-next.3 + - @backstage/backend-plugin-api@0.6.10-next.3 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + +## 0.2.13-next.2 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- Updated dependencies + - @backstage/backend-common@0.21.0-next.2 + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/plugin-scaffolder-node@0.3.0-next.2 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/integration@1.9.0-next.0 + +## 0.2.13-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/backend-common@0.21.0-next.1 + - @backstage/integration@1.9.0-next.0 + - @backstage/plugin-scaffolder-node@0.3.0-next.1 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + +## 0.2.13-next.0 + +### Patch Changes + +- e9a5228: Exporting a default module for the new Backend System +- Updated dependencies + - @backstage/backend-common@0.21.0-next.0 + - @backstage/plugin-scaffolder-node@0.3.0-next.0 + - @backstage/backend-plugin-api@0.6.10-next.0 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/integration@1.8.0 + +## 0.2.12 + +### Patch Changes + +- 604c9dd: Add Scaffolder custom action that creates GitLab issues called `gitlab:issues:create` +- 7c522c5: Add `gitlab:repo:push` scaffolder action to push files to arbitrary branch without creating a Merge Request +- Updated dependencies + - @backstage/backend-common@0.20.1 + - @backstage/plugin-scaffolder-node@0.2.10 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/integration@1.8.0 + +## 0.2.12-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.20.1-next.2 + - @backstage/plugin-scaffolder-node@0.2.10-next.2 + +## 0.2.12-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.20.1-next.1 + - @backstage/integration@1.8.0 + - @backstage/config@1.1.1 + - @backstage/plugin-scaffolder-node@0.2.10-next.1 + - @backstage/errors@1.2.3 + +## 0.2.12-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.20.1-next.0 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/integration@1.8.0 + - @backstage/plugin-scaffolder-node@0.2.10-next.0 + +## 0.2.11 + +### Patch Changes + +- 219d7f0: Extract some more actions to this library +- 0cbb03b: Fixing regular expression ReDoS with zod packages. Upgrading to latest. ref: https://security.snyk.io/vuln/SNYK-JS-ZOD-5925617 +- Updated dependencies + - @backstage/backend-common@0.20.0 + - @backstage/plugin-scaffolder-node@0.2.9 + - @backstage/integration@1.8.0 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + +## 0.2.11-next.3 + +### Patch Changes + +- 219d7f0: Extract some more actions to this library +- Updated dependencies + - @backstage/plugin-scaffolder-node@0.2.9-next.3 + - @backstage/backend-common@0.20.0-next.3 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/integration@1.8.0-next.1 + +## 0.2.11-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/integration@1.8.0-next.1 + - @backstage/plugin-scaffolder-node@0.2.9-next.2 + +## 0.2.11-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/integration@1.8.0-next.1 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/plugin-scaffolder-node@0.2.9-next.1 + +## 0.2.11-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/integration@1.8.0-next.0 + - @backstage/plugin-scaffolder-node@0.2.9-next.0 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + +## 0.2.10 + +### Patch Changes + +- 26ca97ebaa: Add examples for `gitlab:projectAccessToken:create` scaffolder action & improve related tests +- Updated dependencies + - @backstage/integration@1.7.2 + - @backstage/plugin-scaffolder-node@0.2.8 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + +## 0.2.10-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-scaffolder-node@0.2.8-next.2 + +## 0.2.10-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/integration@1.7.2-next.0 + - @backstage/plugin-scaffolder-node@0.2.8-next.1 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + +## 0.2.10-next.0 + +### Patch Changes + +- 26ca97ebaa: Add examples for `gitlab:projectAccessToken:create` scaffolder action & improve related tests +- Updated dependencies + - @backstage/plugin-scaffolder-node@0.2.8-next.0 + - @backstage/integration@1.7.1 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + +## 0.2.9 + +### Patch Changes + +- Updated dependencies + - @backstage/integration@1.7.1 + - @backstage/errors@1.2.3 + - @backstage/plugin-scaffolder-node@0.2.6 + - @backstage/config@1.1.1 + +## 0.2.9-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/integration@1.7.1-next.1 + - @backstage/errors@1.2.3-next.0 + - @backstage/plugin-scaffolder-node@0.2.6-next.2 + - @backstage/config@1.1.1-next.0 + +## 0.2.8-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-scaffolder-node@0.2.5-next.1 + - @backstage/config@1.1.0 + - @backstage/errors@1.2.2 + - @backstage/integration@1.7.1-next.0 + +## 0.2.8-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/integration@1.7.1-next.0 + - @backstage/plugin-scaffolder-node@0.2.5-next.0 + - @backstage/config@1.1.0 + - @backstage/errors@1.2.2 + +## 0.2.6 + +### Patch Changes + +- Updated dependencies + - @backstage/config@1.1.0 + - @backstage/errors@1.2.2 + - @backstage/integration@1.7.0 + - @backstage/plugin-scaffolder-node@0.2.3 + +## 0.2.6-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/config@1.1.0-next.2 + - @backstage/errors@1.2.2-next.0 + - @backstage/integration@1.7.0-next.3 + - @backstage/plugin-scaffolder-node@0.2.3-next.3 + +## 0.2.6-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/config@1.1.0-next.1 + - @backstage/integration@1.7.0-next.2 + - @backstage/plugin-scaffolder-node@0.2.3-next.2 + - @backstage/errors@1.2.1 + +## 0.2.6-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/config@1.1.0-next.0 + - @backstage/integration@1.7.0-next.1 + - @backstage/plugin-scaffolder-node@0.2.3-next.1 + - @backstage/errors@1.2.1 + +## 0.2.5-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/integration@1.7.0-next.0 + - @backstage/config@1.0.8 + - @backstage/errors@1.2.1 + - @backstage/plugin-scaffolder-node@0.2.2-next.0 + +## 0.2.3 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-scaffolder-node@0.2.0 + - @backstage/integration@1.6.0 + - @backstage/config@1.0.8 + - @backstage/errors@1.2.1 + +## 0.2.3-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-scaffolder-node@0.1.6-next.2 + +## 0.2.3-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-scaffolder-node@0.1.6-next.1 + - @backstage/integration@1.5.1 + - @backstage/config@1.0.8 + - @backstage/errors@1.2.1 + +## 0.2.3-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/config@1.0.8 + - @backstage/errors@1.2.1 + - @backstage/integration@1.5.1 + - @backstage/plugin-scaffolder-node@0.1.6-next.0 + +## 0.2.2 + +### Patch Changes + +- dd367967e2e1: Fixed a bug in `gitlab:group:ensureExists` where `repos` was always set as the root group. +- Updated dependencies + - @backstage/errors@1.2.1 + - @backstage/config@1.0.8 + - @backstage/integration@1.5.1 + - @backstage/plugin-scaffolder-node@0.1.5 + +## 0.2.2-next.1 + +### Patch Changes + +- dd367967e2e1: Fixed a bug in `gitlab:group:ensureExists` where `repos` was always set as the root group. +- Updated dependencies + - @backstage/config@1.0.8 + - @backstage/errors@1.2.1-next.0 + - @backstage/integration@1.5.1-next.0 + - @backstage/plugin-scaffolder-node@0.1.5-next.0 + +## 0.2.2-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/errors@1.2.1-next.0 + - @backstage/config@1.0.8 + - @backstage/integration@1.5.1-next.0 + - @backstage/plugin-scaffolder-node@0.1.5-next.0 + +## 0.2.1 + +### Patch Changes + +- 50c4457119ec: Fixed publish configuration. +- 30e6edd7f6a5: Add support for dry run for `gitlab:group:ensureExists` action. +- f5a66052f04f: Tweak README +- Updated dependencies + - @backstage/integration@1.5.0 + - @backstage/errors@1.2.0 + - @backstage/config@1.0.8 + - @backstage/plugin-scaffolder-node@0.1.4 + +## 0.2.1-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/config@1.0.7 + - @backstage/errors@1.2.0-next.0 + - @backstage/integration@1.5.0-next.0 + - @backstage/plugin-scaffolder-node@0.1.4-next.2 + +## 0.2.1-next.2 + +### Patch Changes + +- 30e6edd7f6a5: Add support for dry run for `gitlab:group:ensureExists` action. +- Updated dependencies + - @backstage/config@1.0.7 + +## 0.2.1-next.1 + +### Patch Changes + +- 50c4457119ec: Fixed publish configuration. +- Updated dependencies + - @backstage/integration@1.5.0-next.0 + - @backstage/errors@1.2.0-next.0 + - @backstage/plugin-scaffolder-node@0.1.4-next.1 + - @backstage/config@1.0.7 + +## 0.2.1-next.0 + +### Patch Changes + +- f5a66052f04f: Tweak README +- Updated dependencies + - @backstage/integration@1.4.5 + - @backstage/config@1.0.7 + - @backstage/errors@1.1.5 + - @backstage/plugin-scaffolder-node@0.1.4-next.0 + +## 0.2.0 + +### Minor Changes + +- 439e2986be1: Add a new scaffolder action for gitlab to ensure a group exists + +### Patch Changes + +- f1496d4ab6f: Fix input schema validation issue for gitlab actions: + + - gitlab:group:ensureExists + - gitlab:projectAccessToken:create + - gitlab:projectDeployToken:create + - gitlab:projectVariable:create + +- Updated dependencies + - @backstage/integration@1.4.5 + - @backstage/plugin-scaffolder-node@0.1.3 + - @backstage/config@1.0.7 + - @backstage/errors@1.1.5 + +## 0.2.0-next.2 + +### Minor Changes + +- 439e2986be1: Add a new scaffolder action for gitlab to ensure a group exists + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-scaffolder-node@0.1.3-next.2 + - @backstage/config@1.0.7 + +## 0.1.1-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-scaffolder-node@0.1.3-next.1 + - @backstage/config@1.0.7 + +## 0.1.1-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/integration@1.4.5-next.0 + - @backstage/config@1.0.7 + - @backstage/errors@1.1.5 + - @backstage/plugin-scaffolder-node@0.1.3-next.0 + +## 0.1.0 + +### Minor Changes + +- 1ad400bb2de: Add Gitlab Scaffolder Plugin + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-scaffolder-node@0.1.2 + - @backstage/integration@1.4.4 + - @backstage/config@1.0.7 + - @backstage/errors@1.1.5 + +## 0.1.0-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/config@1.0.7 + - @backstage/errors@1.1.5 + - @backstage/integration@1.4.4-next.0 + - @backstage/plugin-scaffolder-node@0.1.2-next.3 + +## 0.1.0-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-scaffolder-node@0.1.2-next.2 + - @backstage/config@1.0.7 + - @backstage/errors@1.1.5 + - @backstage/integration@1.4.4-next.0 + +## 0.1.0-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-scaffolder-node@0.1.2-next.1 + - @backstage/integration@1.4.4-next.0 + - @backstage/config@1.0.7 + - @backstage/errors@1.1.5 + +## 0.1.0-next.0 + +### Minor Changes + +- 1ad400bb2de: Add Gitlab Scaffolder Plugin + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-scaffolder-node@0.1.2-next.0 + - @backstage/config@1.0.7 + - @backstage/integration@1.4.3 + - @backstage/errors@1.1.5 diff --git a/plugins/scaffolder-backend-module-gitlab/README.md b/plugins/scaffolder-backend-module-gitlab/README.md new file mode 100644 index 0000000..4542ec4 --- /dev/null +++ b/plugins/scaffolder-backend-module-gitlab/README.md @@ -0,0 +1,153 @@ +# scaffolder-backend-module-gitlab + +Welcome to the Gitlab Module for Scaffolder. + +Here you can find all Gitlab related features to improve your scaffolder: + +## Getting started + +## From your Backstage root directory + +```bash +# From your Backstage root directory +yarn --cwd packages/backend add @backstage/plugin-scaffolder-backend-module-gitlab +``` + +Then ensure that both the scaffolder and this module are added to your backend: + +```typescript +// In packages/backend/src/index.ts +const backend = createBackend(); +// ... +backend.add(import('@backstage/plugin-scaffolder-backend')); +backend.add(import('@backstage/plugin-scaffolder-backend-module-gitlab')); +``` + +After that you can use the actions in your template: + +```yaml +apiVersion: scaffolder.backstage.io/v1beta3 +kind: Template +metadata: + name: gitlab-demo + title: Gitlab DEMO + description: Scaffolder Gitlab Demo +spec: + owner: backstage/techdocs-core + type: service + + parameters: + - title: Fill in some steps + required: + - name + properties: + name: + title: Name + type: string + description: Unique name of the component + ui:autofocus: true + ui:options: + rows: 5 + - title: Choose a location + required: + - repoUrl + properties: + repoUrl: + title: Repository Location + type: string + ui:field: RepoUrlPicker + ui:options: + allowedHosts: + - gitlab.com + + steps: + - id: fetch + name: Fetch + action: fetch:template + input: + url: https://github.com/TEMPLATE + values: + name: ${{ parameters.name }} + - id: createGitlabGroup + name: Ensure Gitlab group exists + action: gitlab:group:ensureExists + input: + repoUrl: ${{ parameters.repoUrl }} + path: + - path + - to + - group + + - id: publish + name: Publish + action: publish:gitlab + input: + description: This is ${{ parameters.name }} + repoUrl: ${{ parameters.repoUrl }}?owner=${{ steps.createGitlabGroup.output.groupId }} + sourcePath: pimcore + defaultBranch: main + + - id: gitlab-deploy-token + name: Create Deploy Token + action: gitlab:projectDeployToken:create + input: + repoUrl: ${{ parameters.repoUrl }} + projectId: "${{ steps['publish'].output.projectId }}" + name: ${{ parameters.name }}-secret + username: ${{ parameters.name }}-secret + scopes: ['read_registry'] + + - id: gitlab-access-token + name: Gitlab Project Access Token + action: gitlab:projectAccessToken:create + input: + repoUrl: ${{ parameters.repoUrl }} + projectId: "${{ steps['publish-manifest'].output.projectId }}" + name: ${{ parameters.name }}-access-token + accessLevel: 40 + scopes: ['read_repository', 'write_repository'] + + - id: gitlab-project-variable + name: Gitlab Project Variable + action: gitlab:projectVariable:create + input: + repoUrl: ${{ parameters.repoUrl }} + projectId: "${{ steps['publish'].output.projectId }}" + key: 'VARIABLE_NAME' + value: "${{ steps['gitlab-access-token'].output.access_token }}" + variableType: 'env_var' + masked: true + variableProtected: false + raw: false + environmentScope: '*' + + - id: register + name: Register + action: catalog:register + input: + repoContentsUrl: ${{ steps['publish'].output.repoContentsUrl }} + catalogInfoPath: '/catalog-info.yaml' + + - id: gitlabIssue + name: Issues + action: gitlab:issues:create + input: + repoUrl: ${{ parameters.repoUrl }} + token: ${{ secrets.USER_OAUTH_TOKEN }} + projectId: 1111111 + title: Test Issue + assignees: + - 2222222 + description: This is the description of the issue + confidential: true + createdAt: 2022-09-27 18:00:00.000 + dueDate: 2024-09-28 12:00:00.000 + epicId: 3333333 + labels: phase1:label1,phase2:label2 + output: + links: + - title: Repository + url: ${{ steps['publish'].output.remoteUrl }} + - title: Link to new issue + url: ${{ steps['gitlabIssue'].output.issueUrl }} +``` diff --git a/plugins/scaffolder-backend-module-gitlab/catalog-info.yaml b/plugins/scaffolder-backend-module-gitlab/catalog-info.yaml new file mode 100644 index 0000000..c8af1e7 --- /dev/null +++ b/plugins/scaffolder-backend-module-gitlab/catalog-info.yaml @@ -0,0 +1,9 @@ +apiVersion: backstage.io/v1alpha1 +kind: Component +metadata: + name: backstage-plugin-scaffolder-backend-module-gitlab + title: '@backstage/plugin-scaffolder-backend-module-gitlab' +spec: + lifecycle: experimental + type: backstage-backend-plugin-module + owner: maintainers diff --git a/plugins/scaffolder-backend-module-gitlab/knip-report.md b/plugins/scaffolder-backend-module-gitlab/knip-report.md new file mode 100644 index 0000000..3e1fc87 --- /dev/null +++ b/plugins/scaffolder-backend-module-gitlab/knip-report.md @@ -0,0 +1,8 @@ +# Knip report + +## Unused dependencies (1) + +| Name | Location | Severity | +| :------ | :----------- | :------- | +| winston | plugins/scaffolder-backend-module-gitlab/package.json | error | + diff --git a/plugins/scaffolder-backend-module-gitlab/package.json b/plugins/scaffolder-backend-module-gitlab/package.json new file mode 100644 index 0000000..4dfaba4 --- /dev/null +++ b/plugins/scaffolder-backend-module-gitlab/package.json @@ -0,0 +1,64 @@ +{ + "name": "@internal/plugin-scaffolder-backend-module-gitlab", + "version": "0.9.5", + "backstage": { + "role": "backend-plugin-module", + "pluginId": "scaffolder", + "pluginPackage": "@backstage/plugin-scaffolder-backend" + }, + "publishConfig": { + "access": "public" + }, + "keywords": [ + "backstage" + ], + "homepage": "https://backstage.io", + "repository": { + "type": "git", + "url": "https://github.com/backstage/backstage", + "directory": "plugins/scaffolder-backend-module-gitlab" + }, + "license": "Apache-2.0", + "exports": { + ".": "./src/index.ts", + "./package.json": "./package.json" + }, + "main": "src/index.ts", + "types": "src/index.ts", + "typesVersions": { + "*": { + "package.json": [ + "package.json" + ] + } + }, + "files": [ + "dist" + ], + "scripts": { + "build": "backstage-cli package build", + "clean": "backstage-cli package clean", + "lint": "backstage-cli package lint", + "prepack": "backstage-cli package prepack", + "postpack": "backstage-cli package postpack", + "start": "backstage-cli package start", + "test": "backstage-cli package test" + }, + "dependencies": { + "@backstage/backend-plugin-api": "^1.4.0", + "@backstage/config": "^1.3.2", + "@backstage/errors": "^1.2.7", + "@backstage/integration": "^1.20.1", + "@backstage/plugin-scaffolder-node": "^0.12.0", + "@gitbeaker/requester-utils": "^43.8.0", + "@gitbeaker/rest": "^41.2.0", + "luxon": "^3.0.0", + "winston": "^3.2.1", + "yaml": "^2.0.0", + "zod": "^3.22.4" + }, + "devDependencies": { + "@backstage/backend-test-utils": "^1.11.1", + "@backstage/cli": "^0.35.0" + } +} diff --git a/plugins/scaffolder-backend-module-gitlab/report.api.md b/plugins/scaffolder-backend-module-gitlab/report.api.md new file mode 100644 index 0000000..1c4ce80 --- /dev/null +++ b/plugins/scaffolder-backend-module-gitlab/report.api.md @@ -0,0 +1,322 @@ +## API Report File for "@backstage/plugin-scaffolder-backend-module-gitlab" + +> Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/). + +```ts +import { BackendFeature } from '@backstage/backend-plugin-api'; +import { Config } from '@backstage/config'; +import { ScmIntegrationRegistry } from '@backstage/integration'; +import { TemplateAction } from '@backstage/plugin-scaffolder-node'; + +// @public +export const createGitlabGroupEnsureExistsAction: (options: { + integrations: ScmIntegrationRegistry; +}) => TemplateAction< + { + repoUrl: string; + path: ( + | string + | { + name: string; + slug: string; + } + )[]; + token?: string | undefined; + }, + { + groupId?: number | undefined; + }, + 'v2' +>; + +// @public +export const createGitlabIssueAction: (options: { + integrations: ScmIntegrationRegistry; +}) => TemplateAction< + { + repoUrl: string; + projectId: number; + title: string; + token?: string | undefined; + assignees?: number[] | undefined; + confidential?: boolean | undefined; + description?: string | undefined; + createdAt?: string | undefined; + dueDate?: string | undefined; + discussionToResolve?: string | undefined; + epicId?: number | undefined; + labels?: string | undefined; + issueType?: IssueType | undefined; + mergeRequestToResolveDiscussionsOf?: number | undefined; + milestoneId?: number | undefined; + weight?: number | undefined; + }, + { + issueUrl: string; + issueId: number; + issueIid: number; + }, + 'v2' +>; + +// @public +export const createGitlabProjectAccessTokenAction: (options: { + integrations: ScmIntegrationRegistry; +}) => TemplateAction< + { + projectId: string | number; + repoUrl: string; + token?: string | undefined; + name?: string | undefined; + accessLevel?: number | undefined; + scopes?: string[] | undefined; + expiresAt?: string | undefined; + }, + { + access_token: string; + }, + 'v2' +>; + +// @public +export const createGitlabProjectDeployTokenAction: (options: { + integrations: ScmIntegrationRegistry; +}) => TemplateAction< + { + repoUrl: string; + projectId: string | number; + name: string; + scopes: string[]; + token?: string | undefined; + username?: string | undefined; + }, + { + deploy_token: string; + user: string; + }, + 'v2' +>; + +// @public +export const createGitlabProjectVariableAction: (options: { + integrations: ScmIntegrationRegistry; +}) => TemplateAction< + { + repoUrl: string; + projectId: string | number; + key: string; + value: string; + variableType: string; + token?: string | undefined; + variableProtected?: boolean | undefined; + masked?: boolean | undefined; + raw?: boolean | undefined; + environmentScope?: string | undefined; + }, + { + [x: string]: any; + }, + 'v2' +>; + +// @public +export const createGitlabRepoPushAction: (options: { + integrations: ScmIntegrationRegistry; +}) => TemplateAction< + { + repoUrl: string; + branchName: string; + commitMessage: string; + sourcePath?: string | undefined; + targetPath?: string | undefined; + token?: string | undefined; + commitAction?: 'update' | 'delete' | 'create' | undefined; + }, + { + projectid: string; + projectPath: string; + commitHash: string; + }, + 'v2' +>; + +// @public +export function createPublishGitlabAction(options: { + integrations: ScmIntegrationRegistry; + config: Config; +}): TemplateAction< + { + repoUrl: string; + repoVisibility?: 'internal' | 'private' | 'public' | undefined; + defaultBranch?: string | undefined; + gitCommitMessage?: string | undefined; + gitAuthorName?: string | undefined; + gitAuthorEmail?: string | undefined; + signCommit?: boolean | undefined; + sourcePath?: string | boolean | undefined; + skipExisting?: boolean | undefined; + token?: string | undefined; + setUserAsOwner?: boolean | undefined; + topics?: string[] | undefined; + settings?: + | { + visibility?: 'internal' | 'private' | 'public' | undefined; + path?: string | undefined; + description?: string | undefined; + merge_method?: 'merge' | 'rebase_merge' | 'ff' | undefined; + topics?: string[] | undefined; + auto_devops_enabled?: boolean | undefined; + only_allow_merge_if_pipeline_succeeds?: boolean | undefined; + allow_merge_on_skipped_pipeline?: boolean | undefined; + only_allow_merge_if_all_discussions_are_resolved?: + | boolean + | undefined; + squash_option?: + | 'always' + | 'never' + | 'default_on' + | 'default_off' + | undefined; + ci_config_path?: string | undefined; + } + | undefined; + branches?: + | { + name: string; + ref?: string | undefined; + create?: boolean | undefined; + protect?: boolean | undefined; + }[] + | undefined; + projectVariables?: + | { + key: string; + value: string; + raw?: boolean | undefined; + description?: string | undefined; + protected?: boolean | undefined; + variable_type?: 'file' | 'env_var' | undefined; + masked?: boolean | undefined; + environment_scope?: string | undefined; + }[] + | undefined; + }, + { + remoteUrl: string; + repoContentsUrl: string; + projectId: number; + commitHash: string; + created: boolean; + }, + 'v2' +>; + +// @public +export const createPublishGitlabMergeRequestAction: (options: { + integrations: ScmIntegrationRegistry; +}) => TemplateAction< + { + repoUrl: string; + title: string; + branchName: string; + description?: string | undefined; + targetBranchName?: string | undefined; + sourcePath?: string | undefined; + targetPath?: string | undefined; + token?: string | undefined; + commitAction?: 'auto' | 'update' | 'delete' | 'create' | 'skip' | undefined; + projectid?: string | undefined; + removeSourceBranch?: boolean | undefined; + assignee?: string | undefined; + reviewers?: string[] | undefined; + assignReviewersFromApprovalRules?: boolean | undefined; + labels?: string | string[] | undefined; + }, + { + targetBranchName: string; + projectid: string; + projectPath: string; + mergeRequestUrl: string; + }, + 'v2' +>; + +// @public +export const createTriggerGitlabPipelineAction: (options: { + integrations: ScmIntegrationRegistry; +}) => TemplateAction< + { + repoUrl: string; + projectId: number; + tokenDescription: string; + branch: string; + token?: string | undefined; + variables?: Record | undefined; + }, + { + pipelineUrl: string; + }, + 'v2' +>; + +// @public +export const editGitlabIssueAction: (options: { + integrations: ScmIntegrationRegistry; +}) => TemplateAction< + { + repoUrl: string; + projectId: number; + issueIid: number; + token?: string | undefined; + addLabels?: string | undefined; + assignees?: number[] | undefined; + confidential?: boolean | undefined; + description?: string | undefined; + discussionLocked?: boolean | undefined; + dueDate?: string | undefined; + epicId?: number | undefined; + issueType?: IssueType | undefined; + labels?: string | undefined; + milestoneId?: number | undefined; + removeLabels?: string | undefined; + stateEvent?: IssueStateEvent | undefined; + title?: string | undefined; + updatedAt?: string | undefined; + weight?: number | undefined; + }, + { + issueUrl: string; + projectId: number; + issueId: number; + issueIid: number; + state: string; + title: string; + updatedAt: string; + }, + 'v2' +>; + +// @public +const gitlabModule: BackendFeature; +export default gitlabModule; + +// @public +export enum IssueStateEvent { + // (undocumented) + CLOSE = 'close', + // (undocumented) + REOPEN = 'reopen', +} + +// @public +export enum IssueType { + // (undocumented) + INCIDENT = 'incident', + // (undocumented) + ISSUE = 'issue', + // (undocumented) + TASK = 'task', + // (undocumented) + TEST = 'test_case', +} +``` diff --git a/plugins/scaffolder-backend-module-gitlab/src/__tests__/integration.test.ts b/plugins/scaffolder-backend-module-gitlab/src/__tests__/integration.test.ts new file mode 100644 index 0000000..17bad8e --- /dev/null +++ b/plugins/scaffolder-backend-module-gitlab/src/__tests__/integration.test.ts @@ -0,0 +1,398 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +jest.mock('@backstage/plugin-scaffolder-node', () => { + return { + ...jest.requireActual('@backstage/plugin-scaffolder-node'), + initRepoAndPush: jest.fn().mockResolvedValue({ + commitHash: 'abc123def456', + }), + commitAndPushRepo: jest.fn().mockResolvedValue({ + commitHash: 'abc123def456', + }), + }; +}); + +const mockGitlabClient = { + Namespaces: { show: jest.fn() }, + Groups: { allProjects: jest.fn(), show: jest.fn() }, + Projects: { create: jest.fn(), show: jest.fn(), edit: jest.fn() }, + Users: { showCurrentUser: jest.fn(), allProjects: jest.fn() }, + ProjectMembers: { add: jest.fn() }, + Branches: { create: jest.fn() }, + ProtectedBranches: { protect: jest.fn() }, + ProjectVariables: { create: jest.fn() }, + Issues: { create: jest.fn(), edit: jest.fn() }, + Epics: { all: jest.fn() }, + Pipelines: { create: jest.fn() }, + MergeRequests: { create: jest.fn() }, + Repositories: { allRepositoryTrees: jest.fn() }, + RepositoryFiles: { show: jest.fn(), create: jest.fn(), edit: jest.fn() }, + ProjectAccessTokens: { create: jest.fn() }, + ProjectDeployTokens: { create: jest.fn() }, +}; + +jest.mock('@gitbeaker/rest', () => ({ + Gitlab: class { + constructor() { + return mockGitlabClient; + } + }, +})); + +import { ConfigReader } from '@backstage/config'; +import { ScmIntegrations } from '@backstage/integration'; +import { + createPublishGitlabAction, + createGitlabIssueAction, + createGitlabGroupEnsureExistsAction, + createGitlabRepoPushAction, + createPublishGitlabMergeRequestAction, + createTriggerGitlabPipelineAction, + createGitlabProjectAccessTokenAction, + createGitlabProjectDeployTokenAction, + createGitlabProjectVariableAction, + editGitlabIssueAction, +} from '../actions'; +import { createGitlabProjectMigrateAction } from '../actions/gitlabProjectMigrate'; + +const createTestConfig = () => + new ConfigReader({ + integrations: { + gitlab: [ + { + host: 'gitlab.com', + token: 'test-token', + apiBaseUrl: 'https://gitlab.com/api/v4', + }, + ], + }, + }); + +const createTestIntegrations = (config: ConfigReader) => + ScmIntegrations.fromConfig(config); + +/** + * Creates a minimal mock action context compatible with scaffolder action handlers. + */ +function createMockContext(input: Record) { + const outputs = new Map(); + return { + input, + workspacePath: '/tmp/test-workspace', + logger: { + info: jest.fn(), + warn: jest.fn(), + error: jest.fn(), + debug: jest.fn(), + child: jest.fn().mockReturnThis(), + }, + logStream: { write: jest.fn() }, + output: jest.fn((key: string, value: any) => { + outputs.set(key, value); + }), + getOutputValue: (key: string) => outputs.get(key), + createTemporaryDirectory: jest.fn().mockResolvedValue('/tmp/test-temp'), + checkpoint: jest.fn(), + getInitiatorCredentials: jest.fn().mockResolvedValue({ + $$type: '@backstage/BackstageCredentials', + principal: { type: 'user', userEntityRef: 'user:default/test' }, + }), + each: jest.fn(), + templateInfo: { + entityRef: 'template:default/test-template', + }, + isDryRun: false, + user: { + entity: undefined, + ref: 'user:default/test', + }, + signal: undefined as any, + }; +} + +describe('GitLab Scaffolder Module Integration Tests', () => { + let config: ConfigReader; + let integrations: ReturnType; + + beforeEach(() => { + jest.clearAllMocks(); + config = createTestConfig(); + integrations = createTestIntegrations(config); + }); + + describe('Action Registration', () => { + it('should create all 11 expected scaffolder actions', () => { + const actions = [ + createGitlabGroupEnsureExistsAction({ integrations }), + createGitlabProjectMigrateAction({ integrations }), + createGitlabIssueAction({ integrations }), + createGitlabProjectAccessTokenAction({ integrations }), + createGitlabProjectDeployTokenAction({ integrations }), + createGitlabProjectVariableAction({ integrations }), + createGitlabRepoPushAction({ integrations }), + editGitlabIssueAction({ integrations }), + createPublishGitlabAction({ config, integrations }), + createPublishGitlabMergeRequestAction({ integrations }), + createTriggerGitlabPipelineAction({ integrations }), + ]; + + expect(actions).toHaveLength(11); + }); + + it('should assign correct action IDs to each action', () => { + const expectedIds = [ + 'gitlab:group:ensureExists', + 'gitlab:group:migrate', + 'gitlab:issues:create', + 'gitlab:projectAccessToken:create', + 'gitlab:projectDeployToken:create', + 'gitlab:projectVariable:create', + 'gitlab:repo:push', + 'gitlab:issue:edit', + 'publish:gitlab', + 'publish:gitlab:merge-request', + 'gitlab:pipeline:trigger', + ]; + + const actions = [ + createGitlabGroupEnsureExistsAction({ integrations }), + createGitlabProjectMigrateAction({ integrations }), + createGitlabIssueAction({ integrations }), + createGitlabProjectAccessTokenAction({ integrations }), + createGitlabProjectDeployTokenAction({ integrations }), + createGitlabProjectVariableAction({ integrations }), + createGitlabRepoPushAction({ integrations }), + editGitlabIssueAction({ integrations }), + createPublishGitlabAction({ config, integrations }), + createPublishGitlabMergeRequestAction({ integrations }), + createTriggerGitlabPipelineAction({ integrations }), + ]; + + const actionIds = actions.map(a => a.id); + expect(actionIds).toEqual(expect.arrayContaining(expectedIds)); + expect(actionIds).toHaveLength(expectedIds.length); + }); + + it('should create actions with handler functions', () => { + const actions = [ + createGitlabGroupEnsureExistsAction({ integrations }), + createGitlabProjectMigrateAction({ integrations }), + createGitlabIssueAction({ integrations }), + createPublishGitlabAction({ config, integrations }), + ]; + + for (const action of actions) { + expect(typeof action.handler).toBe('function'); + } + }); + }); + + describe('Repository Creation Workflow', () => { + it('should create publish:gitlab action with correct id', () => { + const action = createPublishGitlabAction({ integrations, config }); + expect(action.id).toBe('publish:gitlab'); + }); + + it('should process valid parameters and produce outputs', async () => { + const action = createPublishGitlabAction({ integrations, config }); + + mockGitlabClient.Users.showCurrentUser.mockResolvedValue({ id: 12345 }); + mockGitlabClient.Namespaces.show.mockResolvedValue({ + id: 1234, + kind: 'group', + }); + mockGitlabClient.Groups.allProjects.mockResolvedValue([]); + mockGitlabClient.Projects.create.mockResolvedValue({ + id: 999, + http_url_to_repo: 'https://gitlab.com/test-group/test-repo.git', + }); + + const ctx = createMockContext({ + repoUrl: 'gitlab.com?repo=test-repo&owner=test-group', + repoVisibility: 'private', + }); + + await action.handler(ctx as any); + + expect(ctx.output).toHaveBeenCalledWith( + 'remoteUrl', + 'https://gitlab.com/test-group/test-repo', + ); + expect(ctx.output).toHaveBeenCalledWith('projectId', 999); + expect(ctx.output).toHaveBeenCalledWith('commitHash', 'abc123def456'); + expect(ctx.output).toHaveBeenCalledWith('created', true); + }); + + it('should call GitLab APIs in correct order for group-owned repos', async () => { + const action = createPublishGitlabAction({ integrations, config }); + + mockGitlabClient.Users.showCurrentUser.mockResolvedValue({ id: 12345 }); + mockGitlabClient.Namespaces.show.mockResolvedValue({ + id: 1234, + kind: 'group', + }); + mockGitlabClient.Groups.allProjects.mockResolvedValue([]); + mockGitlabClient.Projects.create.mockResolvedValue({ + id: 999, + http_url_to_repo: 'https://gitlab.com/my-group/my-repo.git', + }); + + const ctx = createMockContext({ + repoUrl: 'gitlab.com?repo=my-repo&owner=my-group', + }); + + await action.handler(ctx as any); + + expect(mockGitlabClient.Namespaces.show).toHaveBeenCalledWith( + 'my-group', + ); + expect(mockGitlabClient.Projects.create).toHaveBeenCalledWith( + expect.objectContaining({ + namespaceId: 1234, + name: 'my-repo', + }), + ); + }); + }); + + describe('Parameter Validation', () => { + it('should throw when repoUrl is missing owner', async () => { + const action = createPublishGitlabAction({ integrations, config }); + const ctx = createMockContext({ + repoUrl: 'gitlab.com?repo=test-repo', + }); + + await expect(action.handler(ctx as any)).rejects.toThrow(/missing owner/); + }); + + it('should throw when repoUrl is missing repo', async () => { + const action = createPublishGitlabAction({ integrations, config }); + const ctx = createMockContext({ + repoUrl: 'gitlab.com?owner=test-owner', + }); + + await expect(action.handler(ctx as any)).rejects.toThrow(/missing repo/); + }); + + it('should throw when no integration config matches the host', async () => { + const action = createPublishGitlabAction({ integrations, config }); + const ctx = createMockContext({ + repoUrl: 'unknown-host.com?repo=test-repo&owner=test-owner', + }); + + await expect(action.handler(ctx as any)).rejects.toThrow( + /No matching integration configuration/, + ); + }); + + it('should throw when no token is available for the host', async () => { + const noTokenConfig = new ConfigReader({ + integrations: { + gitlab: [ + { + host: 'no-token.gitlab.com', + apiBaseUrl: 'https://no-token.gitlab.com/api/v4', + }, + ], + }, + }); + const noTokenIntegrations = ScmIntegrations.fromConfig(noTokenConfig); + const action = createPublishGitlabAction({ + integrations: noTokenIntegrations, + config: noTokenConfig, + }); + + const ctx = createMockContext({ + repoUrl: 'no-token.gitlab.com?repo=test-repo&owner=test-owner', + }); + + await expect(action.handler(ctx as any)).rejects.toThrow( + /No token available/, + ); + }); + }); + + describe('GitLab API Error Handling', () => { + it('should handle namespace not found (404) errors', async () => { + const action = createPublishGitlabAction({ integrations, config }); + + const notFoundError: any = new Error('Not Found'); + notFoundError.cause = { response: { status: 404 } }; + mockGitlabClient.Namespaces.show.mockRejectedValue(notFoundError); + + const ctx = createMockContext({ + repoUrl: 'gitlab.com?repo=test-repo&owner=nonexistent-group', + }); + + await expect(action.handler(ctx as any)).rejects.toThrow( + /not found|doesn't have permissions/, + ); + }); + + it('should propagate unexpected API errors', async () => { + const action = createPublishGitlabAction({ integrations, config }); + + mockGitlabClient.Namespaces.show.mockRejectedValue( + new Error('Internal Server Error'), + ); + + const ctx = createMockContext({ + repoUrl: 'gitlab.com?repo=test-repo&owner=test-group', + }); + + await expect(action.handler(ctx as any)).rejects.toThrow( + 'Internal Server Error', + ); + }); + + it('should handle project creation failure', async () => { + const action = createPublishGitlabAction({ integrations, config }); + + mockGitlabClient.Users.showCurrentUser.mockResolvedValue({ id: 12345 }); + mockGitlabClient.Namespaces.show.mockResolvedValue({ + id: 1234, + kind: 'group', + }); + mockGitlabClient.Groups.allProjects.mockResolvedValue([]); + mockGitlabClient.Projects.create.mockRejectedValue( + new Error('403 Forbidden'), + ); + + const ctx = createMockContext({ + repoUrl: 'gitlab.com?repo=test-repo&owner=test-group', + }); + + await expect(action.handler(ctx as any)).rejects.toThrow( + '403 Forbidden', + ); + }); + + it('should handle network timeout errors', async () => { + const action = createPublishGitlabAction({ integrations, config }); + + mockGitlabClient.Namespaces.show.mockRejectedValue( + new Error('ETIMEDOUT'), + ); + + const ctx = createMockContext({ + repoUrl: 'gitlab.com?repo=test-repo&owner=test-group', + }); + + await expect(action.handler(ctx as any)).rejects.toThrow('ETIMEDOUT'); + }); + }); +}); diff --git a/plugins/scaffolder-backend-module-gitlab/src/actions/gitlab.examples.test.ts b/plugins/scaffolder-backend-module-gitlab/src/actions/gitlab.examples.test.ts new file mode 100644 index 0000000..074d248 --- /dev/null +++ b/plugins/scaffolder-backend-module-gitlab/src/actions/gitlab.examples.test.ts @@ -0,0 +1,120 @@ +/* + * Copyright 2021 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import yaml from 'yaml'; +import { createMockActionContext } from '@backstage/plugin-scaffolder-node-test-utils'; + +jest.mock('@backstage/plugin-scaffolder-node', () => { + return { + ...jest.requireActual('@backstage/plugin-scaffolder-node'), + initRepoAndPush: jest.fn().mockResolvedValue({ + commitHash: '220f19cc36b551763d157f1b5e4a4b446165dbd6', + }), + commitAndPushRepo: jest.fn().mockResolvedValue({ + commitHash: '220f19cc36b551763d157f1b5e4a4b446165dbd6', + }), + }; +}); + +import { createPublishGitlabAction } from './gitlab'; +import { initRepoAndPush } from '@backstage/plugin-scaffolder-node'; +import { ScmIntegrations } from '@backstage/integration'; +import { ConfigReader } from '@backstage/config'; +import { examples } from './gitlab.examples'; + +const mockGitlabClient = { + Namespaces: { + show: jest.fn(), + }, + Groups: { + allProjects: jest.fn(), + }, + Projects: { + create: jest.fn(), + }, + Users: { + showCurrentUser: jest.fn(), + }, + ProjectMembers: { + add: jest.fn(), + }, +}; +jest.mock('@gitbeaker/rest', () => ({ + Gitlab: class { + constructor() { + return mockGitlabClient; + } + }, +})); + +describe('publish:gitlab', () => { + const config = new ConfigReader({ + integrations: { + gitlab: [ + { + host: 'gitlab.com', + token: 'tokenlols', + apiBaseUrl: 'https://api.gitlab.com', + }, + { + host: 'hosted.gitlab.com', + apiBaseUrl: 'https://api.hosted.gitlab.com', + }, + ], + }, + }); + + const integrations = ScmIntegrations.fromConfig(config); + const action = createPublishGitlabAction({ integrations, config }); + const mockContext = createMockActionContext({ + input: { + repoUrl: 'gitlab.com?repo=repo&owner=owner', + }, + }); + + beforeEach(() => { + jest.resetAllMocks(); + // Reconfigure the mock after reset + ( + initRepoAndPush as jest.MockedFunction + ).mockResolvedValue({ + commitHash: '220f19cc36b551763d157f1b5e4a4b446165dbd6', + }); + }); + + it('should call initRepoAndPush with the correct values', async () => { + mockGitlabClient.Users.showCurrentUser.mockResolvedValue({ id: 12345 }); + mockGitlabClient.Namespaces.show.mockResolvedValue({ id: 1234 }); + mockGitlabClient.Groups.allProjects.mockResolvedValue([]); + mockGitlabClient.Projects.create.mockResolvedValue({ + http_url_to_repo: 'http://mockurl.git', + }); + + await action.handler({ + ...mockContext, + input: yaml.parse(examples[0].example).steps[0].input, + }); + + expect(initRepoAndPush).toHaveBeenCalledWith({ + dir: mockContext.workspacePath, + defaultBranch: 'master', + remoteUrl: 'http://mockurl.git', + auth: { username: 'oauth2', password: 'tokenlols' }, + logger: mockContext.logger, + commitMessage: 'initial commit', + gitAuthorInfo: {}, + }); + }); +}); diff --git a/plugins/scaffolder-backend-module-gitlab/src/actions/gitlab.examples.ts b/plugins/scaffolder-backend-module-gitlab/src/actions/gitlab.examples.ts new file mode 100644 index 0000000..ea2ff41 --- /dev/null +++ b/plugins/scaffolder-backend-module-gitlab/src/actions/gitlab.examples.ts @@ -0,0 +1,224 @@ +/* + * Copyright 2023 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { TemplateExample } from '@backstage/plugin-scaffolder-node'; +import yaml from 'yaml'; + +export const examples: TemplateExample[] = [ + { + description: + 'Initializes a git repository with the content in the workspace, and publishes it to GitLab with the default configuration.', + example: yaml.stringify({ + steps: [ + { + id: 'publish', + action: 'publish:gitlab', + name: 'Publish to GitLab', + input: { + repoUrl: 'gitlab.com?repo=project_name&owner=group_name', + }, + }, + ], + }), + }, + { + description: 'Add a description.', + example: yaml.stringify({ + steps: [ + { + id: 'publish', + action: 'publish:gitlab', + name: 'Publish to GitLab', + input: { + repoUrl: 'gitlab.com?repo=project_name&owner=group_name', + description: 'Initialize a git repository', + }, + }, + ], + }), + }, + { + description: + 'Initializes a GitLab repository with an initial commit message, if not set defaults to `initial commit`.', + example: yaml.stringify({ + steps: [ + { + id: 'publish', + action: 'publish:gitlab', + name: 'Publish to GitLab', + input: { + repoUrl: 'gitlab.com?repo=project_name&owner=group_name', + description: 'Initialize a git repository', + gitCommitMessage: 'Started a project.', + }, + }, + ], + }), + }, + { + description: 'Initializes a GitLab repository with additional settings.', + example: yaml.stringify({ + steps: [ + { + id: 'publish', + action: 'publish:gitlab', + name: 'Publish to GitLab', + input: { + repoUrl: 'gitlab.com?repo=project_name&owner=group_name', + settings: { + ci_config_path: '.gitlab-ci.yml', + visibility: 'public', + }, + }, + }, + ], + }), + }, + { + description: + 'Initializes a GitLab repository with fast forward merge and always squash settings.', + example: yaml.stringify({ + steps: [ + { + id: 'publish', + action: 'publish:gitlab', + name: 'Publish to GitLab', + input: { + repoUrl: 'gitlab.com?repo=project_name&owner=group_name', + settings: { + merge_method: 'ff', + squash_option: 'always', + }, + }, + }, + ], + }), + }, + { + description: 'Initializes a GitLab repository with branch settings.', + example: yaml.stringify({ + steps: [ + { + id: 'publish', + action: 'publish:gitlab', + name: 'Publish to GitLab', + input: { + repoUrl: 'gitlab.com?repo=project_name&owner=group_name', + branches: [ + { + name: 'dev', + create: true, + protect: true, + ref: 'master', + }, + { + name: 'master', + protect: true, + }, + ], + }, + }, + ], + }), + }, + { + description: 'Initializes a GitLab repository with environment variables.', + example: yaml.stringify({ + steps: [ + { + id: 'publish', + action: 'publish:gitlab', + name: 'Publish to GitLab', + input: { + repoUrl: 'gitlab.com?repo=project_name&owner=group_name', + projectVariables: [ + { + key: 'key1', + value: 'value1', + protected: true, + masked: false, + }, + { + key: 'key2', + value: 'value2', + protected: true, + masked: false, + }, + ], + }, + }, + ], + }), + }, + { + description: + 'Initializes a GitLab repository with pipeline must succeed and allow merge on skipped pipeline settings.', + example: yaml.stringify({ + steps: [ + { + id: 'publish', + action: 'publish:gitlab', + name: 'Publish to GitLab', + input: { + repoUrl: 'gitlab.com?repo=project_name&owner=group_name', + settings: { + only_allow_merge_if_pipeline_succeeds: true, + allow_merge_on_skipped_pipeline: true, + }, + }, + }, + ], + }), + }, + { + description: + 'Initializes a GitLab repository with setting to require all threads (discussions) on merge request to be resolved before merging.', + example: yaml.stringify({ + steps: [ + { + id: 'publish', + action: 'publish:gitlab', + name: 'Publish to GitLab', + input: { + repoUrl: 'gitlab.com?repo=project_name&owner=group_name', + settings: { + only_allow_merge_if_all_discussions_are_resolved: true, + }, + }, + }, + ], + }), + }, + { + description: + 'Initializes a GitLab repository with the default readme and no files from workspace only if this repository does not exist yet.', + example: yaml.stringify({ + steps: [ + { + id: 'publish', + action: 'publish:gitlab', + name: 'Publish to GitLab', + input: { + repoUrl: 'gitlab.com?repo=project_name&owner=group_name', + skipExisting: true, + initialize_with_readme: true, + sourcePath: false, + }, + }, + ], + }), + }, +]; diff --git a/plugins/scaffolder-backend-module-gitlab/src/actions/gitlab.test.ts b/plugins/scaffolder-backend-module-gitlab/src/actions/gitlab.test.ts new file mode 100644 index 0000000..923a98c --- /dev/null +++ b/plugins/scaffolder-backend-module-gitlab/src/actions/gitlab.test.ts @@ -0,0 +1,810 @@ +/* + * Copyright 2021 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +jest.mock('@backstage/plugin-scaffolder-node', () => { + const mockResult = { + commitHash: '220f19cc36b551763d157f1b5e4a4b446165dbd6', + }; + return { + ...jest.requireActual('@backstage/plugin-scaffolder-node'), + initRepoAndPush: jest.fn().mockResolvedValue(mockResult), + commitAndPushRepo: jest.fn().mockResolvedValue(mockResult), + }; +}); + +import { createPublishGitlabAction } from './gitlab'; +import { ScmIntegrations } from '@backstage/integration'; +import { ConfigReader } from '@backstage/config'; +import { initRepoAndPush } from '@backstage/plugin-scaffolder-node'; +import { createMockActionContext } from '@backstage/plugin-scaffolder-node-test-utils'; + +// Ensure the mock is properly typed +const mockInitRepoAndPush = initRepoAndPush as jest.MockedFunction< + typeof initRepoAndPush +>; + +const mockGitlabClient = { + Namespaces: { + show: jest.fn(), + }, + Groups: { + allProjects: jest.fn(), + }, + Projects: { + create: jest.fn(), + }, + Users: { + showCurrentUser: jest.fn(), + allProjects: jest.fn(), + }, + ProjectMembers: { + add: jest.fn(), + }, + Branches: { + create: jest.fn(), + }, + ProtectedBranches: { + protect: jest.fn(), + }, + ProjectVariables: { + create: jest.fn(), + }, +}; +jest.mock('@gitbeaker/rest', () => ({ + Gitlab: class { + constructor() { + return mockGitlabClient; + } + }, +})); + +describe('publish:gitlab', () => { + const config = new ConfigReader({ + integrations: { + gitlab: [ + { + host: 'gitlab.com', + token: 'tokenlols', + apiBaseUrl: 'https://api.gitlab.com', + commitSigningKey: 'test-signing-key', + }, + { + host: 'hosted.gitlab.com', + apiBaseUrl: 'https://api.hosted.gitlab.com', + }, + ], + }, + }); + + const integrations = ScmIntegrations.fromConfig(config); + const action = createPublishGitlabAction({ integrations, config }); + + const mockContext = createMockActionContext({ + input: { + repoUrl: 'gitlab.com?repo=repo&owner=owner', + repoVisibility: 'private' as const, + settings: { + ci_config_path: '.gitlab-ci.yml', + }, + }, + }); + const mockContextWithSettings = createMockActionContext({ + input: { + repoUrl: 'gitlab.com?repo=repo&owner=owner', + repoVisibility: 'private' as const, + topics: ['topic'], + settings: { + ci_config_path: '.gitlab-ci.yml', + visibility: 'internal' as const, + topics: ['topic1', 'topic2'], + }, + }, + }); + const mockContextWithBranches = createMockActionContext({ + input: { + repoUrl: 'gitlab.com?repo=repo&owner=owner', + repoVisibility: 'private' as const, + branches: [ + { + name: 'dev', + create: true, + ref: 'master', + protect: true, + }, + { + name: 'stage', + create: true, + }, + { + name: 'perf', + protect: true, + }, + ], + }, + }); + const mockContextWithVariables = createMockActionContext({ + input: { + repoUrl: 'gitlab.com?repo=repo&owner=owner', + repoVisibility: 'private' as const, + projectVariables: [ + { + key: 'key', + value: 'value', + description: 'description', + protected: true, + masked: true, + }, + ], + }, + }); + + beforeEach(() => { + jest.resetAllMocks(); + // Reconfigure the mock after reset + mockInitRepoAndPush.mockResolvedValue({ + commitHash: '220f19cc36b551763d157f1b5e4a4b446165dbd6', + }); + }); + + it('should throw an error when the repoUrl is not well formed', async () => { + await expect( + action.handler({ + ...mockContext, + input: { repoUrl: 'gitlab.com?repo=bob' }, + }), + ).rejects.toThrow(/missing owner/); + + await expect( + action.handler({ + ...mockContext, + input: { repoUrl: 'gitlab.com?owner=owner' }, + }), + ).rejects.toThrow(/missing repo/); + }); + + it('should throw if there is no integration config provided', async () => { + await expect( + action.handler({ + ...mockContext, + input: { repoUrl: 'missing.com?repo=bob&owner=owner' }, + }), + ).rejects.toThrow(/No matching integration configuration/); + }); + + it('should throw if there is no token in the integration config that is returned', async () => { + await expect( + action.handler({ + ...mockContext, + input: { + repoUrl: 'hosted.gitlab.com?repo=bob&owner=owner', + }, + }), + ).rejects.toThrow(/No token available for host/); + }); + + it('should work when there is a token provided through ctx.input', async () => { + mockGitlabClient.Users.showCurrentUser.mockResolvedValue({ id: 12345 }); + mockGitlabClient.Namespaces.show.mockResolvedValue({ id: 1234 }); + mockGitlabClient.Groups.allProjects.mockResolvedValue([]); + mockGitlabClient.Projects.create.mockResolvedValue({ + http_url_to_repo: 'http://mockurl.git', + }); + + await action.handler({ + ...mockContext, + input: { + repoUrl: 'hosted.gitlab.com?repo=bob&owner=owner', + token: 'token', + }, + }); + + expect(mockGitlabClient.Namespaces.show).toHaveBeenCalledWith('owner'); + expect(mockGitlabClient.Projects.create).toHaveBeenCalledWith({ + namespaceId: 1234, + name: 'bob', + visibility: 'private', + }); + expect(mockGitlabClient.Branches.create).not.toHaveBeenCalled(); + expect(mockGitlabClient.ProtectedBranches.protect).not.toHaveBeenCalled(); + }); + + it('should call the correct Gitlab APIs when the owner is a group', async () => { + mockGitlabClient.Users.showCurrentUser.mockResolvedValue({ id: 12345 }); + mockGitlabClient.Namespaces.show.mockResolvedValue({ id: 1234 }); + mockGitlabClient.Groups.allProjects.mockResolvedValue([]); + mockGitlabClient.Projects.create.mockResolvedValue({ + http_url_to_repo: 'http://mockurl.git', + }); + + await action.handler(mockContext); + + expect(mockGitlabClient.Namespaces.show).toHaveBeenCalledWith('owner'); + expect(mockGitlabClient.Projects.create).toHaveBeenCalledWith({ + namespaceId: 1234, + name: 'repo', + visibility: 'private', + ci_config_path: '.gitlab-ci.yml', + }); + expect(mockGitlabClient.Branches.create).not.toHaveBeenCalled(); + expect(mockGitlabClient.ProtectedBranches.protect).not.toHaveBeenCalled(); + }); + + it('should call the correct Gitlab APIs when the owner is a user', async () => { + mockGitlabClient.Namespaces.show.mockResolvedValue({ id: null }); + mockGitlabClient.Users.showCurrentUser.mockResolvedValue({ id: 12345 }); + mockGitlabClient.Groups.allProjects.mockRejectedValue({}); + mockGitlabClient.Users.allProjects.mockResolvedValue([]); + mockGitlabClient.Projects.create.mockResolvedValue({ + http_url_to_repo: 'http://mockurl.git', + }); + + await action.handler(mockContext); + + expect(mockGitlabClient.Groups.allProjects).not.toHaveBeenCalled(); + expect(mockGitlabClient.Namespaces.show).toHaveBeenCalledWith('owner'); + expect(mockGitlabClient.Projects.create).toHaveBeenCalledWith({ + namespaceId: 12345, + name: 'repo', + visibility: 'private', + ci_config_path: '.gitlab-ci.yml', + }); + expect(mockGitlabClient.Branches.create).not.toHaveBeenCalled(); + expect(mockGitlabClient.ProtectedBranches.protect).not.toHaveBeenCalled(); + }); + + it('should not call the creation Gitlab APIs when the repository already exists in a group', async () => { + mockGitlabClient.Users.showCurrentUser.mockResolvedValue({ id: 12345 }); + mockGitlabClient.Namespaces.show.mockResolvedValue({ + id: 1234, + kind: 'group', + }); + mockGitlabClient.Groups.allProjects.mockResolvedValue([ + { + path: 'repo', + http_url_to_repo: 'http://mockurl.git', + }, + { + path: 'repo-name', + http_url_to_repo: 'http://mockurl.git', + }, + ]); + + await action.handler({ + ...mockContext, + input: { ...mockContext.input, skipExisting: true }, + }); + + expect(mockGitlabClient.Namespaces.show).toHaveBeenCalledWith('owner'); + expect(mockGitlabClient.Projects.create).not.toHaveBeenCalled(); + expect(mockGitlabClient.Branches.create).not.toHaveBeenCalled(); + expect(mockGitlabClient.ProtectedBranches.protect).not.toHaveBeenCalled(); + }); + + it('should not call the creation Gitlab APIs when the repository already exists in a user namespace', async () => { + mockGitlabClient.Users.showCurrentUser.mockResolvedValue({ id: 12345 }); + mockGitlabClient.Namespaces.show.mockResolvedValue({ + id: 12345, + kind: 'user', + }); + mockGitlabClient.Users.allProjects.mockResolvedValue([ + { + path: 'repo', + http_url_to_repo: 'http://mockurl.git', + }, + { + path: 'repo-name', + http_url_to_repo: 'http://mockurl.git', + }, + ]); + + await action.handler({ + ...mockContext, + input: { ...mockContext.input, skipExisting: true }, + }); + + expect(mockGitlabClient.Groups.allProjects).not.toHaveBeenCalled(); + expect(mockGitlabClient.Namespaces.show).toHaveBeenCalledWith('owner'); + expect(mockGitlabClient.Projects.create).not.toHaveBeenCalled(); + expect(mockGitlabClient.Branches.create).not.toHaveBeenCalled(); + expect(mockGitlabClient.ProtectedBranches.protect).not.toHaveBeenCalled(); + }); + + it('should call the creation Gitlab APIs when the repository does not yet exists', async () => { + mockGitlabClient.Users.showCurrentUser.mockResolvedValue({ id: 12345 }); + mockGitlabClient.Namespaces.show.mockResolvedValue({ + id: 1234, + kind: 'group', + }); + mockGitlabClient.Groups.allProjects.mockResolvedValue([ + { + path: 'repo-name', + }, + ]); + mockGitlabClient.Projects.create.mockResolvedValue({ + http_url_to_repo: 'http://mockurl.git', + }); + + await action.handler(mockContext); + + expect(mockGitlabClient.Namespaces.show).toHaveBeenCalledWith('owner'); + expect(mockGitlabClient.Projects.create).toHaveBeenCalledWith({ + namespaceId: 1234, + name: 'repo', + visibility: 'private', + ci_config_path: '.gitlab-ci.yml', + }); + expect(mockGitlabClient.Branches.create).not.toHaveBeenCalled(); + expect(mockGitlabClient.ProtectedBranches.protect).not.toHaveBeenCalled(); + }); + + it('should call the correct Gitlab APIs when using project settings with override of visibility and topics', async () => { + mockGitlabClient.Users.showCurrentUser.mockResolvedValue({ id: 12345 }); + mockGitlabClient.Namespaces.show.mockResolvedValue({ + id: 1234, + kind: 'group', + }); + mockGitlabClient.Groups.allProjects.mockResolvedValue([]); + mockGitlabClient.Projects.create.mockResolvedValue({ + http_url_to_repo: 'http://mockurl.git', + }); + + await action.handler(mockContextWithSettings); + + expect(mockGitlabClient.Namespaces.show).toHaveBeenCalledWith('owner'); + expect(mockGitlabClient.Projects.create).toHaveBeenCalledWith({ + namespaceId: 1234, + name: 'repo', + visibility: 'internal', + topics: ['topic1', 'topic2'], + ci_config_path: '.gitlab-ci.yml', + }); + expect(mockGitlabClient.Branches.create).not.toHaveBeenCalled(); + expect(mockGitlabClient.ProtectedBranches.protect).not.toHaveBeenCalled(); + }); + + it('should call the correct Gitlab APIs for branches and protectd branches when branch settings provided', async () => { + mockGitlabClient.Users.showCurrentUser.mockResolvedValue({ id: 12345 }); + mockGitlabClient.Namespaces.show.mockResolvedValue({ + id: 1234, + kind: 'group', + }); + mockGitlabClient.Groups.allProjects.mockResolvedValue([]); + mockGitlabClient.Projects.create.mockResolvedValue({ + id: 123456, + http_url_to_repo: 'http://mockurl.git', + }); + + await action.handler(mockContextWithBranches); + + expect(mockGitlabClient.Namespaces.show).toHaveBeenCalledWith('owner'); + expect(mockGitlabClient.Projects.create).toHaveBeenCalledWith({ + namespaceId: 1234, + name: 'repo', + visibility: 'private', + }); + expect(mockGitlabClient.Branches.create).toHaveBeenCalledTimes(2); + expect(mockGitlabClient.ProtectedBranches.protect).toHaveBeenCalledTimes(2); + + expect(mockGitlabClient.Branches.create).toHaveBeenCalledWith( + 123456, + 'dev', + 'master', + ); + expect(mockGitlabClient.Branches.create).toHaveBeenCalledWith( + 123456, + 'stage', + 'master', + ); + + expect(mockGitlabClient.ProtectedBranches.protect).toHaveBeenCalledWith( + 123456, + 'dev', + ); + expect(mockGitlabClient.ProtectedBranches.protect).toHaveBeenCalledWith( + 123456, + 'perf', + ); + }); + + it('should call the correct Gitlab APIs for variables when their configuration is provided', async () => { + mockGitlabClient.Users.showCurrentUser.mockResolvedValue({ id: 12345 }); + mockGitlabClient.Namespaces.show.mockResolvedValue({ + id: 1234, + kind: 'group', + }); + mockGitlabClient.Groups.allProjects.mockResolvedValue([]); + mockGitlabClient.Projects.create.mockResolvedValue({ + id: 123456, + http_url_to_repo: 'http://mockurl.git', + }); + + await action.handler(mockContextWithVariables); + + expect(mockGitlabClient.Namespaces.show).toHaveBeenCalledWith('owner'); + expect(mockGitlabClient.Projects.create).toHaveBeenCalledWith({ + namespaceId: 1234, + name: 'repo', + visibility: 'private', + }); + + expect(mockGitlabClient.ProjectVariables.create).toHaveBeenCalledWith( + 123456, + 'key', + 'value', + { + description: 'description', + variableType: 'env_var', + protected: true, + masked: true, + raw: false, + environmentScope: '*', + }, + ); + }); + + it('should call initRepoAndPush with the correct values', async () => { + mockGitlabClient.Users.showCurrentUser.mockResolvedValue({ id: 12345 }); + mockGitlabClient.Namespaces.show.mockResolvedValue({ + id: 1234, + kind: 'group', + }); + mockGitlabClient.Groups.allProjects.mockResolvedValue([]); + mockGitlabClient.Projects.create.mockResolvedValue({ + http_url_to_repo: 'http://mockurl.git', + }); + + await action.handler(mockContext); + + expect(initRepoAndPush).toHaveBeenCalledWith({ + dir: mockContext.workspacePath, + defaultBranch: 'master', + remoteUrl: 'http://mockurl.git', + auth: { username: 'oauth2', password: 'tokenlols' }, + logger: mockContext.logger, + commitMessage: 'initial commit', + gitAuthorInfo: {}, + }); + }); + + it('should call initRepoAndPush with the signing key', async () => { + mockGitlabClient.Users.showCurrentUser.mockResolvedValue({ id: 12345 }); + mockGitlabClient.Namespaces.show.mockResolvedValue({ id: 1234 }); + mockGitlabClient.Groups.allProjects.mockResolvedValue([]); + mockGitlabClient.Projects.create.mockResolvedValue({ + http_url_to_repo: 'http://mockurl.git', + }); + + await action.handler({ + ...mockContext, + input: { ...mockContext.input, signCommit: true }, + }); + + expect(initRepoAndPush).toHaveBeenCalledWith({ + dir: mockContext.workspacePath, + defaultBranch: 'master', + remoteUrl: 'http://mockurl.git', + auth: { username: 'oauth2', password: 'tokenlols' }, + logger: mockContext.logger, + commitMessage: 'initial commit', + gitAuthorInfo: {}, + signingKey: 'test-signing-key', + }); + }); + + it('should not call initRepoAndPush when sourcePath is false', async () => { + mockGitlabClient.Users.showCurrentUser.mockResolvedValue({ id: 12345 }); + mockGitlabClient.Namespaces.show.mockResolvedValue({ + id: 1234, + kind: 'group', + }); + mockGitlabClient.Groups.allProjects.mockResolvedValue([]); + mockGitlabClient.Projects.create.mockResolvedValue({ + http_url_to_repo: 'http://mockurl.git', + }); + + await action.handler({ + ...mockContext, + input: { ...mockContext.input, sourcePath: false }, + }); + + expect(initRepoAndPush).not.toHaveBeenCalledWith({ + dir: mockContext.workspacePath, + defaultBranch: 'master', + remoteUrl: 'http://mockurl.git', + auth: { username: 'oauth2', password: 'tokenlols' }, + logger: mockContext.logger, + commitMessage: 'initial commit', + gitAuthorInfo: {}, + }); + }); + + it('should call initRepoAndPush with the correct default branch', async () => { + mockGitlabClient.Users.showCurrentUser.mockResolvedValue({ id: 12345 }); + mockGitlabClient.Namespaces.show.mockResolvedValue({ + id: 1234, + kind: 'group', + }); + mockGitlabClient.Groups.allProjects.mockResolvedValue([]); + mockGitlabClient.Projects.create.mockResolvedValue({ + http_url_to_repo: 'http://mockurl.git', + }); + + await action.handler({ + ...mockContext, + input: { + ...mockContext.input, + defaultBranch: 'main', + }, + }); + + expect(initRepoAndPush).toHaveBeenCalledWith({ + dir: mockContext.workspacePath, + defaultBranch: 'main', + remoteUrl: 'http://mockurl.git', + auth: { username: 'oauth2', password: 'tokenlols' }, + logger: mockContext.logger, + commitMessage: 'initial commit', + gitAuthorInfo: {}, + }); + }); + + it('should call initRepoAndPush with the configured defaultAuthor', async () => { + const customAuthorConfig = new ConfigReader({ + integrations: { + gitlab: [ + { + host: 'gitlab.com', + token: 'tokenlols', + apiBaseUrl: 'https://api.gitlab.com', + }, + { + host: 'hosted.gitlab.com', + apiBaseUrl: 'https://api.hosted.gitlab.com', + }, + ], + }, + scaffolder: { + defaultAuthor: { + name: 'Test', + email: 'example@example.com', + }, + }, + }); + + const customAuthorIntegrations = + ScmIntegrations.fromConfig(customAuthorConfig); + const customAuthorAction = createPublishGitlabAction({ + integrations: customAuthorIntegrations, + config: customAuthorConfig, + }); + + mockGitlabClient.Users.showCurrentUser.mockResolvedValue({ id: 12345 }); + mockGitlabClient.Namespaces.show.mockResolvedValue({ + id: 1234, + kind: 'group', + }); + mockGitlabClient.Groups.allProjects.mockResolvedValue([]); + mockGitlabClient.Projects.create.mockResolvedValue({ + http_url_to_repo: 'http://mockurl.git', + }); + + await customAuthorAction.handler(mockContext); + + expect(initRepoAndPush).toHaveBeenCalledWith({ + dir: mockContext.workspacePath, + remoteUrl: 'http://mockurl.git', + auth: { username: 'oauth2', password: 'tokenlols' }, + logger: mockContext.logger, + defaultBranch: 'master', + commitMessage: 'initial commit', + gitAuthorInfo: { name: 'Test', email: 'example@example.com' }, + }); + }); + + it('should call initRepoAndPush with the configured defaultCommitMessage', async () => { + const customAuthorConfig = new ConfigReader({ + integrations: { + gitlab: [ + { + host: 'gitlab.com', + token: 'tokenlols', + apiBaseUrl: 'https://api.gitlab.com', + }, + { + host: 'hosted.gitlab.com', + apiBaseUrl: 'https://api.hosted.gitlab.com', + }, + ], + }, + scaffolder: { + defaultCommitMessage: 'Test commit message', + }, + }); + + const customAuthorIntegrations = + ScmIntegrations.fromConfig(customAuthorConfig); + const customAuthorAction = createPublishGitlabAction({ + integrations: customAuthorIntegrations, + config: customAuthorConfig, + }); + + mockGitlabClient.Users.showCurrentUser.mockResolvedValue({ id: 12345 }); + mockGitlabClient.Namespaces.show.mockResolvedValue({ + id: 1234, + kind: 'group', + }); + mockGitlabClient.Groups.allProjects.mockResolvedValue([]); + mockGitlabClient.Projects.create.mockResolvedValue({ + http_url_to_repo: 'http://mockurl.git', + }); + + await customAuthorAction.handler(mockContext); + + expect(initRepoAndPush).toHaveBeenCalledWith({ + dir: mockContext.workspacePath, + remoteUrl: 'http://mockurl.git', + auth: { username: 'oauth2', password: 'tokenlols' }, + defaultBranch: 'master', + commitMessage: 'initial commit', + gitAuthorInfo: { email: undefined, name: undefined }, + logger: mockContext.logger, + }); + }); + + it('should call output with the remoteUrl and repoContentsUrl and projectId', async () => { + mockGitlabClient.Users.showCurrentUser.mockResolvedValue({ id: 12345 }); + mockGitlabClient.Namespaces.show.mockResolvedValue({ + id: 1234, + kind: 'group', + }); + mockGitlabClient.Groups.allProjects.mockResolvedValue([]); + mockGitlabClient.Projects.create.mockResolvedValue({ + http_url_to_repo: 'http://mockurl.git', + id: 1234, + }); + + await action.handler(mockContext); + + expect(mockContext.output).toHaveBeenCalledWith( + 'remoteUrl', + 'http://mockurl', + ); + expect(mockContext.output).toHaveBeenCalledWith( + 'repoContentsUrl', + 'http://mockurl/-/blob/master', + ); + expect(mockContext.output).toHaveBeenCalledWith('projectId', 1234); + }); + + it('should call the correct Gitlab APIs when setUserAsOwner option is true and integration config has a token', async () => { + const customAuthorConfig = new ConfigReader({ + integrations: { + gitlab: [ + { + host: 'gitlab.com', + token: 'tokenlols', + apiBaseUrl: 'https://api.gitlab.com', + }, + ], + }, + }); + + const customAuthorIntegrations = + ScmIntegrations.fromConfig(customAuthorConfig); + const customAuthorAction = createPublishGitlabAction({ + integrations: customAuthorIntegrations, + config: customAuthorConfig, + }); + + mockGitlabClient.Namespaces.show.mockResolvedValue({ + id: 1234, + kind: 'group', + }); + mockGitlabClient.Users.showCurrentUser.mockResolvedValue({ id: 12345 }); + mockGitlabClient.Groups.allProjects.mockResolvedValue([]); + mockGitlabClient.Projects.create.mockResolvedValue({ + id: 123456, + http_url_to_repo: 'http://mockurl.git', + }); + + await customAuthorAction.handler({ + ...mockContext, + input: { + repoUrl: 'gitlab.com?repo=repo&owner=owner', + token: 'token', + setUserAsOwner: true, + }, + }); + + expect(mockGitlabClient.Namespaces.show).toHaveBeenCalledWith('owner'); + expect(mockGitlabClient.Users.showCurrentUser).toHaveBeenCalled(); + expect(mockGitlabClient.ProjectMembers.add).toHaveBeenCalledWith( + 123456, + 12345, + 50, + ); + expect(mockGitlabClient.Projects.create).toHaveBeenCalledWith({ + namespaceId: 1234, + name: 'repo', + visibility: 'private', + }); + }); + + it('should use custom git implementation when useCustomGit is true', async () => { + // Mock the customGitPush function by spying on the module + const mockCustomGitPush = jest.fn().mockResolvedValue({ + commitHash: '220f19cc36b551763d157f1b5e4a4b446165dbd6', + }); + + // Mock child_process.spawn to avoid actual git execution + jest.doMock('child_process', () => ({ + spawn: jest.fn().mockImplementation(() => { + const mockProcess = { + stdout: { on: jest.fn() }, + stderr: { on: jest.fn() }, + on: jest.fn((event, callback) => { + if (event === 'close') { + setTimeout(() => callback(0), 0); + } + }), + }; + return mockProcess; + }), + })); + + mockGitlabClient.Users.showCurrentUser.mockResolvedValue({ id: 12345 }); + mockGitlabClient.Namespaces.show.mockResolvedValue({ + id: 1234, + kind: 'group', + }); + mockGitlabClient.Groups.allProjects.mockResolvedValue([]); + mockGitlabClient.Projects.create.mockResolvedValue({ + http_url_to_repo: 'http://mockurl.git', + }); + + await action.handler({ + ...mockContext, + input: { + ...mockContext.input, + useCustomGit: true, + }, + }); + + // Verify that initRepoAndPush was NOT called (since we're using custom git) + expect(initRepoAndPush).not.toHaveBeenCalled(); + }); + + it('should show proper error message when token has insufficient permissions or namespace not found', async () => { + mockGitlabClient.Namespaces.show.mockRejectedValue({ + cause: { + response: { + status: 404, + }, + }, + }); + const owner = 'infrastructure/devex'; + const repoName = 'backstage'; + + await expect( + action.handler({ + ...mockContext, + input: { repoUrl: `gitlab.com?owner=${owner}&repo=${repoName}` }, + }), + ).rejects.toThrow( + `The namespace ${owner} is not found or the user doesn't have permissions to access it`, + ); + }); +}); diff --git a/plugins/scaffolder-backend-module-gitlab/src/actions/gitlab.ts b/plugins/scaffolder-backend-module-gitlab/src/actions/gitlab.ts new file mode 100644 index 0000000..d611b3d --- /dev/null +++ b/plugins/scaffolder-backend-module-gitlab/src/actions/gitlab.ts @@ -0,0 +1,771 @@ +/* + * Copyright 2021 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { InputError } from '@backstage/errors'; +import { ScmIntegrationRegistry } from '@backstage/integration'; +import { + createTemplateAction, + getRepoSourceDirectory, + initRepoAndPush, + parseRepoUrl, +} from '@backstage/plugin-scaffolder-node'; +import { Gitlab, VariableType } from '@gitbeaker/rest'; +import { Config } from '@backstage/config'; +import { LoggerService } from '@backstage/backend-plugin-api'; +import { examples } from './gitlab.examples'; + +/** + * Custom Git implementation using child_process to bypass HTTP client timeout issues + */ +async function customGitPush(input: { + dir: string; + remoteUrl: string; + auth: { username: string; password: string } | { token: string }; + logger: LoggerService; + defaultBranch?: string; + commitMessage?: string; + gitAuthorInfo?: { name?: string; email?: string }; + timeout?: number; +}): Promise<{ commitHash: string }> { + const { + dir, + remoteUrl, + auth, + logger, + defaultBranch = 'master', + commitMessage = 'Initial commit', + gitAuthorInfo, + timeout = 60, + } = input; + + const { spawn } = require('child_process'); + + logger.info(`Starting git operation with ${timeout}s timeout`); + + const runGitCommand = ( + args: string[], + options: any = {}, + ): Promise => { + return new Promise((resolve, reject) => { + logger.info(`Running git command: git ${args.join(' ')}`); + + const gitProcess = spawn('git', args, { + cwd: dir, + stdio: ['pipe', 'pipe', 'pipe'], + env: { ...process.env, GIT_TERMINAL_PROMPT: '0' }, + ...options, + }); + + let stdout = ''; + let stderr = ''; + + gitProcess.stdout?.on('data', (data: any) => { + stdout += data.toString(); + }); + + gitProcess.stderr?.on('data', (data: any) => { + stderr += data.toString(); + }); + + gitProcess.on('close', (code: number | null) => { + if (code === 0) { + resolve(stdout.trim()); + } else { + reject( + new Error( + `Git command failed (exit code ${code}): ${stderr || stdout}`, + ), + ); + } + }); + + gitProcess.on('error', (error: any) => { + reject(new Error(`Git command error: ${error.message}`)); + }); + + const timeoutId = setTimeout(() => { + gitProcess.kill('SIGKILL'); + reject(new Error(`Git command timed out after ${timeout} seconds`)); + }, timeout * 1000); + + gitProcess.on('close', () => { + clearTimeout(timeoutId); + }); + }); + }; + + try { + await runGitCommand(['init', '-b', defaultBranch]); + + const authorName = gitAuthorInfo?.name || 'Scaffolder'; + const authorEmail = gitAuthorInfo?.email || 'scaffolder@backstage.io'; + + await runGitCommand(['config', 'user.name', authorName]); + await runGitCommand(['config', 'user.email', authorEmail]); + await runGitCommand(['config', 'http.timeout', String(timeout)]); + await runGitCommand(['config', 'http.lowSpeedLimit', '1000']); + await runGitCommand(['config', 'http.lowSpeedTime', String(timeout)]); + + const authUrl = + 'token' in auth + ? remoteUrl.replace(/^https?:\/\//, `https://oauth2:${auth.token}@`) + : remoteUrl.replace( + /^https?:\/\//, + `https://${auth.username}:${auth.password}@`, + ); + + await runGitCommand(['remote', 'add', 'origin', authUrl]); + await runGitCommand(['add', '.']); + + const commitOutput = await runGitCommand(['commit', '-m', commitMessage]); + const commitHash = + commitOutput.match(/\[.+?\s([a-f0-9]+)\]/)?.[1] || 'unknown'; + + await runGitCommand(['push', '-u', 'origin', defaultBranch]); + + logger.info('Git operation completed successfully'); + return { commitHash }; + } catch (error: any) { + logger.error(`Git operation failed: ${error.message}`); + throw error; + } +} + +/** + * Wrapper that chooses between original and custom git implementation + */ +async function initRepoAndPushWithTimeout(input: { + dir: string; + remoteUrl: string; + auth: { username: string; password: string } | { token: string }; + logger: LoggerService; + defaultBranch?: string; + commitMessage?: string; + gitAuthorInfo?: { name?: string; email?: string }; + signingKey?: string; + timeout?: number; + useCustomGit?: boolean; +}): Promise<{ commitHash: string }> { + const { timeout = 60, useCustomGit = false, ...restInput } = input; + + if (useCustomGit) { + return customGitPush({ ...restInput, timeout }); + } + + // Original implementation with timeout wrapper (default behavior) + // Remove timeout and useCustomGit from input as initRepoAndPush doesn't expect them + const originalInput = { + dir: input.dir, + remoteUrl: input.remoteUrl, + auth: input.auth, + logger: input.logger, + defaultBranch: input.defaultBranch, + commitMessage: input.commitMessage, + gitAuthorInfo: input.gitAuthorInfo, + signingKey: input.signingKey, + }; + + return new Promise((resolve, reject) => { + const timeoutId = setTimeout(() => { + reject( + new Error(`Git push operation timed out after ${timeout} seconds`), + ); + }, timeout * 1000); + + const result = initRepoAndPush(originalInput); + + result + .then(gitResult => { + clearTimeout(timeoutId); + resolve(gitResult); + }) + .catch((error: any) => { + clearTimeout(timeoutId); + reject(error); + }); + }); +} + +/** + * Creates a new action that initializes a git repository of the content in the workspace + * and publishes it to GitLab. + * + * @public + */ +export function createPublishGitlabAction(options: { + integrations: ScmIntegrationRegistry; + config: Config; +}) { + const { integrations, config } = options; + + return createTemplateAction({ + id: 'publish:gitlab', + description: + 'Initializes a git repository of the content in the workspace, and publishes it to GitLab.', + examples, + schema: { + input: { + repoUrl: z => + z.string({ + description: `Accepts the format 'gitlab.com?repo=project_name&owner=group_name' where 'project_name' is the repository name and 'group_name' is a group or username`, + }), + repoVisibility: z => + z + .enum(['private', 'public', 'internal'], { + description: `Sets the visibility of the repository. The default value is 'private'. (deprecated, use settings.visibility instead)`, + }) + .optional(), + defaultBranch: z => + z + .string({ + description: `Sets the default branch on the repository. The default value is 'master'`, + }) + .optional(), + gitCommitMessage: z => + z + .string({ + description: `Sets the commit message on the repository. The default value is 'initial commit'`, + }) + .optional(), + gitAuthorName: z => + z + .string({ + description: `Sets the default author name for the commit. The default value is 'Scaffolder'`, + }) + .optional(), + gitAuthorEmail: z => + z + .string({ + description: `Sets the default author email for the commit.`, + }) + .optional(), + signCommit: z => + z + .boolean({ + description: 'Sign commit with configured PGP private key', + }) + .optional(), + sourcePath: z => + z + .union([z.string(), z.boolean()], { + description: + 'Path within the workspace that will be used as the repository root. If omitted or set to true, the entire workspace will be published as the repository. If set to false, the created repository will be empty.', + }) + .optional(), + skipExisting: z => + z + .boolean({ + description: + 'Do not publish the repository if it already exists. The default value is false.', + }) + .optional(), + token: z => + z + .string({ + description: 'The token to use for authorization to GitLab', + }) + .optional(), + gitTimeout: z => + z + .number({ + description: + 'Timeout in seconds for git operations (default: 60)', + }) + .optional(), + setUserAsOwner: z => + z + .boolean({ + description: + 'Set the token user as owner of the newly created repository. Requires a token authorized to do the edit in the integration configuration for the matching host', + }) + .optional(), + topics: z => + z + .array(z.string(), { + description: + 'Topic labels to apply on the repository. (deprecated, use settings.topics instead)', + }) + .optional(), + settings: z => + z + .object({ + path: z + .string({ + description: + 'Repository name for new project. Generated based on name if not provided (generated as lowercase with dashes).', + }) + .optional(), + auto_devops_enabled: z + .boolean({ + description: 'Enable Auto DevOps for this project', + }) + .optional(), + ci_config_path: z + .string({ + description: 'Custom CI config path for this project', + }) + .optional(), + description: z + .string({ + description: 'Short project description', + }) + .optional(), + merge_method: z + .enum(['merge', 'rebase_merge', 'ff'], { + description: 'Merge Methods (merge, rebase_merge, ff)', + }) + .optional(), + squash_option: z + .enum(['default_off', 'default_on', 'never', 'always'], { + description: + 'Set squash option for the project (never, always, default_on, default_off)', + }) + .optional(), + topics: z + .array(z.string(), { + description: 'Topic labels to apply on the repository', + }) + .optional(), + visibility: z + .enum(['private', 'public', 'internal'], { + description: + 'The visibility of the project. Can be private, internal, or public. The default value is private.', + }) + .optional(), + only_allow_merge_if_all_discussions_are_resolved: z + .boolean({ + description: + 'Set whether merge requests can only be merged when all the discussions are resolved.', + }) + .optional(), + only_allow_merge_if_pipeline_succeeds: z + .boolean({ + description: + 'Set whether merge requests can only be merged with successful pipelines. This setting is named Pipelines must succeed in the project settings.', + }) + .optional(), + allow_merge_on_skipped_pipeline: z + .boolean({ + description: + 'Set whether or not merge requests can be merged with skipped jobs.', + }) + .optional(), + }) + .optional(), + branches: z => + z + .array( + z.object({ + name: z.string(), + protect: z.boolean().optional(), + create: z.boolean().optional(), + ref: z.string().optional(), + }), + ) + .optional(), + projectVariables: z => + z + .array( + z.object({ + key: z.string(), + value: z.string(), + description: z.string().optional(), + variable_type: z.enum(['env_var', 'file']).optional(), + protected: z.boolean().optional(), + masked: z.boolean().optional(), + raw: z.boolean().optional(), + environment_scope: z.string().optional(), + }), + ) + .optional(), + useCustomGit: z => + z + .boolean({ + description: + 'Use custom git implementation to avoid HTTP client timeout issues. Defaults to false for backward compatibility.', + }) + .optional(), + }, + output: { + remoteUrl: z => + z.string({ + description: 'A URL to the repository with the provider', + }), + repoContentsUrl: z => + z.string({ + description: 'A URL to the root of the repository', + }), + projectId: z => + z.number({ + description: 'The ID of the project', + }), + commitHash: z => + z.string({ + description: 'The git commit hash of the initial commit', + }), + created: z => + z.boolean({ + description: 'Whether the repository was created or not', + }), + }, + }, + async handler(ctx) { + const { + repoUrl, + repoVisibility = 'private', + defaultBranch = 'master', + gitCommitMessage = 'initial commit', + gitAuthorName, + gitAuthorEmail, + setUserAsOwner = false, + topics = [], + settings = {}, + branches = [], + projectVariables = [], + skipExisting = false, + signCommit, + gitTimeout = 60, + useCustomGit = false, + } = ctx.input; + const { owner, repo, host } = parseRepoUrl(repoUrl, integrations); + + if (!owner) { + throw new InputError( + `No owner provided for host: ${host}, and repo ${repo}`, + ); + } + + const integrationConfig = integrations.gitlab.byHost(host); + + if (!integrationConfig) { + throw new InputError( + `No matching integration configuration for host ${host}, please check your integrations config`, + ); + } + + if (!integrationConfig.config.token && !ctx.input.token) { + throw new InputError(`No token available for host ${host}`); + } + + const token = ctx.input.token || integrationConfig.config.token!; + const tokenType = ctx.input.token ? 'oauthToken' : 'token'; + + const client = new Gitlab({ + host: integrationConfig.config.baseUrl, + [tokenType]: token, + }); + + let targetNamespaceId; + let targetNamespaceKind; + try { + const namespaceResponse = (await client.Namespaces.show(owner)) as { + id: number; + kind: string; + }; + + targetNamespaceId = namespaceResponse.id; + targetNamespaceKind = namespaceResponse.kind; + } catch (e: any) { + if (e?.cause?.response?.status === 404) { + throw new InputError( + `The namespace ${owner} is not found or the user doesn't have permissions to access it`, + ); + } + throw e; + } + + const { id: userId } = (await client.Users.showCurrentUser()) as { + id: number; + }; + + if (!targetNamespaceId) { + targetNamespaceId = userId; + targetNamespaceKind = 'user'; + } + + const existingProjects = + targetNamespaceKind === 'user' + ? await client.Users.allProjects(owner, { search: repo }) + : await client.Groups.allProjects(owner, { search: repo }); + + const existingProject = existingProjects.find( + project => project.path === repo, + ); + + if (!skipExisting || (skipExisting && !existingProject)) { + ctx.logger.info(`Creating repo ${repo} in namespace ${owner}.`); + + let projectId: number; + let http_url_to_repo: string; + + try { + const result = await client.Projects.create({ + namespaceId: targetNamespaceId, + name: repo, + visibility: repoVisibility, + ...(topics.length ? { topics } : {}), + ...(Object.keys(settings).length ? { ...settings } : {}), + }); + projectId = result.id; + http_url_to_repo = result.http_url_to_repo; + } catch (e: any) { + ctx.logger.error(`GitLab repository creation failed: ${e.message}`, { + error: e, + }); + + // Check if this is a duplicate repository error + if (e.cause?.response?.status === 400) { + const errorMessage = e.description || e.message || ''; + const responseBody = e.cause?.response?.body; + + // Check for duplicate repository patterns + const responseBodyStr = + typeof responseBody === 'string' + ? responseBody + : JSON.stringify(responseBody || ''); + if ( + errorMessage.includes('has already been taken') || + errorMessage.includes('already exists') || + (responseBodyStr && + (responseBodyStr.includes('has already been taken') || + responseBodyStr.includes('already exists'))) + ) { + throw new InputError( + `Repository '${repo}' already exists in namespace '${owner}'. Please choose a different repository name or enable the 'skipExisting' option.`, + ); + } + + // Check for invalid repository name + if ( + errorMessage.includes('can contain only') || + errorMessage.includes('invalid') || + errorMessage.includes('not allowed') + ) { + throw new InputError( + `Invalid repository name '${repo}'. Repository names must contain only letters, digits, '_', '-' and '.'. They cannot start with '-', end in '.git' or end in '.atom'.`, + ); + } + } + + // Check for permission errors + if (e.cause?.response?.status === 403) { + throw new InputError( + `Insufficient permissions to create repository '${repo}' in namespace '${owner}'. Please check your GitLab token permissions.`, + ); + } + + // Check for namespace not found + if (e.cause?.response?.status === 404) { + throw new InputError( + `Namespace '${owner}' not found or not accessible. Please verify the namespace exists and you have access to it.`, + ); + } + + // For other errors, provide a more helpful message + throw new InputError( + `Failed to create GitLab repository '${repo}' in namespace '${owner}': ${ + e.description || e.message + }. ${printGitlabError(e)}`, + ); + } + + // When setUserAsOwner is true the input token is expected to come from an unprivileged user GitLab + // OAuth flow. In this case GitLab works in a way that allows the unprivileged user to + // create the repository, but not to push the default protected branch (e.g. master). + // In order to set the user as owner of the newly created repository we need to check that the + // GitLab integration configuration for the matching host contains a token and use + // such token to bootstrap a new privileged client. + if (setUserAsOwner && integrationConfig.config.token) { + const adminClient = new Gitlab({ + host: integrationConfig.config.baseUrl, + token: integrationConfig.config.token, + }); + + await adminClient.ProjectMembers.add(projectId, userId, 50); + } + + const remoteUrl = (http_url_to_repo as string).replace(/\.git$/, ''); + const repoContentsUrl = `${remoteUrl}/-/blob/${defaultBranch}`; + + const gitAuthorInfo = { + name: gitAuthorName + ? gitAuthorName + : config.getOptionalString('scaffolder.defaultAuthor.name'), + email: gitAuthorEmail + ? gitAuthorEmail + : config.getOptionalString('scaffolder.defaultAuthor.email'), + }; + const signingKey = + integrationConfig.config.commitSigningKey ?? + config.getOptionalString('scaffolder.defaultCommitSigningKey'); + if (signCommit && !signingKey) { + throw new Error( + 'Signing commits is enabled but no signing key is provided in the configuration', + ); + } + + const shouldSkipPublish = + typeof ctx.input.sourcePath === 'boolean' && !ctx.input.sourcePath; + if (!shouldSkipPublish) { + const commitResult = await initRepoAndPushWithTimeout({ + dir: + typeof ctx.input.sourcePath === 'boolean' + ? ctx.workspacePath + : getRepoSourceDirectory( + ctx.workspacePath, + ctx.input.sourcePath, + ), + remoteUrl: http_url_to_repo as string, + defaultBranch, + auth: { + username: 'oauth2', + password: token, + }, + logger: ctx.logger, + commitMessage: gitCommitMessage + ? gitCommitMessage + : config.getOptionalString('scaffolder.defaultCommitMessage'), + gitAuthorInfo, + signingKey: signCommit ? signingKey : undefined, + timeout: gitTimeout, + useCustomGit, + }); + + if (branches) { + for (const branch of branches) { + const { + name, + protect = false, + create = false, + ref = 'master', + } = branch; + + if (create) { + try { + await client.Branches.create(projectId, name, ref); + } catch (e: any) { + throw new InputError( + `Branch creation failed for ${name}. ${printGitlabError( + e, + )}`, + ); + } + ctx.logger.info( + `Branch ${name} created for ${projectId} with ref ${ref}`, + ); + } + + if (protect) { + try { + await client.ProtectedBranches.protect(projectId, name); + } catch (e: any) { + throw new InputError( + `Branch protection failed for ${name}. ${printGitlabError( + e, + )}`, + ); + } + ctx.logger.info(`Branch ${name} protected for ${projectId}`); + } + } + } + ctx.output('commitHash', commitResult.commitHash); + } + + if (projectVariables) { + for (const variable of projectVariables) { + const variableWithDefaults = Object.assign(variable, { + variable_type: (variable.variable_type ?? + 'env_var') as VariableType, + protected: variable.protected ?? false, + masked: variable.masked ?? false, + raw: variable.raw ?? false, + environment_scope: variable.environment_scope ?? '*', + }); + + try { + await client.ProjectVariables.create( + projectId, + variableWithDefaults.key, + variableWithDefaults.value, + { + variableType: variableWithDefaults.variable_type, + protected: variableWithDefaults.protected, + masked: variableWithDefaults.masked, + environmentScope: variableWithDefaults.environment_scope, + description: variableWithDefaults.description, + raw: variableWithDefaults.raw, + }, + ); + } catch (e: any) { + throw new InputError( + `Environment variable creation failed for ${ + variableWithDefaults.key + }. ${printGitlabError(e)}`, + ); + } + } + } + ctx.output('remoteUrl', remoteUrl); + ctx.output('repoContentsUrl', repoContentsUrl); + ctx.output('projectId', projectId); + ctx.output('created', true); + } else if (existingProject) { + ctx.logger.info(`Repo ${repo} already exists in namespace ${owner}.`); + const { + id: projectId, + http_url_to_repo, + default_branch, + } = existingProject; + const remoteUrl = (http_url_to_repo as string).replace(/\.git$/, ''); + ctx.output('remoteUrl', remoteUrl); + ctx.output('repoContentsUrl', `${remoteUrl}/-/blob/${default_branch}`); + ctx.output('projectId', projectId); + ctx.output('created', false); + } + }, + }); +} + +function printGitlabError(error: any): string { + // Extract more detailed error information + const errorInfo: any = { + code: error.code, + message: error.description || error.message, + }; + + // Add HTTP status if available + if (error.cause?.response?.status) { + errorInfo.status = error.cause.response.status; + } + + // Add response body if available for more context + if (error.cause?.response?.body) { + try { + const body = + typeof error.cause.response.body === 'string' + ? JSON.parse(error.cause.response.body) + : error.cause.response.body; + if (body.message) { + errorInfo.details = body.message; + } + } catch { + // Ignore JSON parsing errors + } + } + + return JSON.stringify(errorInfo); +} diff --git a/plugins/scaffolder-backend-module-gitlab/src/actions/gitlabGroupEnsureExists.examples.test.ts b/plugins/scaffolder-backend-module-gitlab/src/actions/gitlabGroupEnsureExists.examples.test.ts new file mode 100644 index 0000000..449c598 --- /dev/null +++ b/plugins/scaffolder-backend-module-gitlab/src/actions/gitlabGroupEnsureExists.examples.test.ts @@ -0,0 +1,309 @@ +/* + * Copyright 2023 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { ScmIntegrations } from '@backstage/integration'; +import { createMockActionContext } from '@backstage/plugin-scaffolder-node-test-utils'; +import yaml from 'yaml'; +import { createGitlabGroupEnsureExistsAction } from './gitlabGroupEnsureExists'; +import { examples } from './gitlabGroupEnsureExists.examples'; +import { mockServices } from '@backstage/backend-test-utils'; + +const mockGitlabClient = { + Groups: { + search: jest.fn(), + create: jest.fn(), + }, +}; + +jest.mock('@gitbeaker/rest', () => ({ + Gitlab: class { + constructor() { + return mockGitlabClient; + } + }, +})); + +describe('gitlab:group:ensureExists', () => { + const mockContext = createMockActionContext(); + + beforeEach(() => { + jest.clearAllMocks(); + }); + + it(`Should ${examples[0].description}`, async () => { + mockGitlabClient.Groups.search.mockResolvedValue([]); + mockGitlabClient.Groups.create.mockResolvedValue({ + id: 3, + full_path: 'group1', + }); + + const config = mockServices.rootConfig({ + data: { + integrations: { + gitlab: [ + { + host: 'gitlab.com', + token: 'tokenlols', + apiBaseUrl: 'https://gitlab.com/api/v4', + }, + ], + }, + }, + }); + const integrations = ScmIntegrations.fromConfig(config); + + const action = createGitlabGroupEnsureExistsAction({ integrations }); + + await action.handler({ + ...mockContext, + input: yaml.parse(examples[0].example).steps[0].input, + }); + + expect(mockGitlabClient.Groups.create).toHaveBeenCalledWith( + 'group1', + 'group1', + {}, + ); + + expect(mockContext.output).toHaveBeenCalledWith('groupId', 3); + }); + + it(`Should ${examples[1].description}`, async () => { + mockGitlabClient.Groups.search.mockResolvedValue([ + { + id: 1, + full_path: 'group1', + }, + ]); + mockGitlabClient.Groups.create.mockResolvedValue({ + id: 3, + full_path: 'group1/group2', + }); + + const config = mockServices.rootConfig({ + data: { + integrations: { + gitlab: [ + { + host: 'gitlab.com', + token: 'tokenlols', + apiBaseUrl: 'https://api.gitlab.com', + }, + ], + }, + }, + }); + const integrations = ScmIntegrations.fromConfig(config); + + const action = createGitlabGroupEnsureExistsAction({ integrations }); + + await action.handler({ + ...mockContext, + input: yaml.parse(examples[1].example).steps[0].input, + }); + + expect(mockGitlabClient.Groups.create).toHaveBeenCalledWith( + 'group2', + 'group2', + { + parentId: 1, + }, + ); + + expect(mockContext.output).toHaveBeenCalledWith('groupId', 3); + }); + + it(`Should ${examples[2].description}`, async () => { + mockGitlabClient.Groups.search.mockResolvedValue([ + { + id: 1, + full_path: 'group1', + }, + { + id: 2, + full_path: 'group1/group2', + }, + ]); + mockGitlabClient.Groups.create.mockResolvedValue({ + id: 3, + full_path: 'group1/group2/group3', + }); + + const config = mockServices.rootConfig({ + data: { + integrations: { + gitlab: [ + { + host: 'gitlab.com', + token: 'tokenlols', + apiBaseUrl: 'https://api.gitlab.com', + }, + ], + }, + }, + }); + const integrations = ScmIntegrations.fromConfig(config); + + const action = createGitlabGroupEnsureExistsAction({ integrations }); + + await action.handler({ + ...mockContext, + input: yaml.parse(examples[2].example).steps[0].input, + }); + + expect(mockGitlabClient.Groups.create).toHaveBeenCalledWith( + 'group3', + 'group3', + { + parentId: 2, + }, + ); + + expect(mockContext.output).toHaveBeenCalledWith('groupId', 3); + }); + + it(`Should ${examples[3].description}`, async () => { + const config = mockServices.rootConfig({ + data: { + integrations: { + gitlab: [ + { + host: 'gitlab.com', + token: 'tokenlols', + apiBaseUrl: 'https://api.gitlab.com', + }, + ], + }, + }, + }); + const integrations = ScmIntegrations.fromConfig(config); + + const action = createGitlabGroupEnsureExistsAction({ integrations }); + + await action.handler({ + ...mockContext, + isDryRun: yaml.parse(examples[3].example).steps[0].isDryRun, + input: yaml.parse(examples[3].example).steps[0].input, + }); + + expect(mockGitlabClient.Groups.search).not.toHaveBeenCalled(); + expect(mockGitlabClient.Groups.create).not.toHaveBeenCalled(); + + expect(mockContext.output).toHaveBeenCalledWith('groupId', 42); + }); + + it(`Should ${examples[4].description}`, async () => { + mockGitlabClient.Groups.search.mockResolvedValue([ + { + id: 1, + full_path: 'group1', + }, + { + id: 2, + full_path: 'group1/group2', + }, + ]); + mockGitlabClient.Groups.create.mockResolvedValue({ + id: 3, + full_path: 'group1/group2/group3', + }); + + const config = mockServices.rootConfig({ + data: { + integrations: { + gitlab: [ + { + host: 'gitlab.com', + token: 'tokenlols', + apiBaseUrl: 'https://api.gitlab.com', + }, + ], + }, + }, + }); + const integrations = ScmIntegrations.fromConfig(config); + + const action = createGitlabGroupEnsureExistsAction({ integrations }); + + await action.handler({ + ...mockContext, + input: yaml.parse(examples[4].example).steps[0].input, + }); + + expect(mockGitlabClient.Groups.create).toHaveBeenCalledWith( + 'Group 3', + 'group3', + { + parentId: 2, + }, + ); + + expect(mockContext.output).toHaveBeenCalledWith('groupId', 3); + }); + + it(`Should ${examples[5].description}`, async () => { + mockGitlabClient.Groups.search.mockResolvedValue([ + { + id: 1, + full_path: 'group1', + }, + { + id: 2, + full_path: 'group1/group2', + }, + { + id: 3, + full_path: 'group1/group2/group3', + }, + ]); + mockGitlabClient.Groups.create.mockResolvedValue({ + id: 4, + full_path: 'group1/group2/group3/group4', + }); + + const config = mockServices.rootConfig({ + data: { + integrations: { + gitlab: [ + { + host: 'gitlab.com', + token: 'tokenlols', + apiBaseUrl: 'https://api.gitlab.com', + }, + ], + }, + }, + }); + const integrations = ScmIntegrations.fromConfig(config); + + const action = createGitlabGroupEnsureExistsAction({ integrations }); + + await action.handler({ + ...mockContext, + input: yaml.parse(examples[5].example).steps[0].input, + }); + + expect(mockGitlabClient.Groups.create).toHaveBeenCalledWith( + 'Group 4', + 'group4', + { + parentId: 3, + }, + ); + + expect(mockContext.output).toHaveBeenCalledWith('groupId', 4); + }); +}); diff --git a/plugins/scaffolder-backend-module-gitlab/src/actions/gitlabGroupEnsureExists.examples.ts b/plugins/scaffolder-backend-module-gitlab/src/actions/gitlabGroupEnsureExists.examples.ts new file mode 100644 index 0000000..f379bd3 --- /dev/null +++ b/plugins/scaffolder-backend-module-gitlab/src/actions/gitlabGroupEnsureExists.examples.ts @@ -0,0 +1,126 @@ +/* + * Copyright 2023 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { TemplateExample } from '@backstage/plugin-scaffolder-node'; +import yaml from 'yaml'; + +export const examples: TemplateExample[] = [ + { + description: 'Creating a group at the top level', + example: yaml.stringify({ + steps: [ + { + id: 'gitlabGroup', + name: 'Group', + action: 'gitlab:group:ensureExists', + input: { + repoUrl: 'gitlab.com', + path: ['group1'], + }, + }, + ], + }), + }, + { + description: 'Create a group nested within another group', + example: yaml.stringify({ + steps: [ + { + id: 'gitlabGroup', + name: 'Group', + action: 'gitlab:group:ensureExists', + input: { + repoUrl: 'gitlab.com', + path: ['group1', 'group2'], + }, + }, + ], + }), + }, + { + description: 'Create a group nested within multiple other groups', + example: yaml.stringify({ + steps: [ + { + id: 'gitlabGroup', + name: 'Group', + action: 'gitlab:group:ensureExists', + input: { + repoUrl: 'gitlab.com', + path: ['group1', 'group2', 'group3'], + }, + }, + ], + }), + }, + { + description: 'Create a group in dry run mode', + example: yaml.stringify({ + steps: [ + { + id: 'gitlabGroup', + name: 'Group', + action: 'gitlab:group:ensureExists', + isDryRun: true, + input: { + repoUrl: 'https://gitlab.com/my-repo', + path: ['group1', 'group2', 'group3'], + }, + }, + ], + }), + }, + { + description: 'Create a group nested within another group using objects', + example: yaml.stringify({ + steps: [ + { + id: 'gitlabGroup', + name: 'Group', + action: 'gitlab:group:ensureExists', + input: { + repoUrl: 'gitlab.com', + path: [ + { name: 'Group 1', slug: 'group1' }, + { name: 'Group 2', slug: 'group2' }, + { name: 'Group 3', slug: 'group3' }, + ], + }, + }, + ], + }), + }, + { + description: + 'Create a group nested within another group using path and objects', + example: yaml.stringify({ + steps: [ + { + id: 'gitlabGroup', + name: 'Group', + action: 'gitlab:group:ensureExists', + input: { + repoUrl: 'gitlab.com', + path: [ + 'group1/group2', + { name: 'Group 3', slug: 'group3' }, + { name: 'Group 4', slug: 'group4' }, + ], + }, + }, + ], + }), + }, +]; diff --git a/plugins/scaffolder-backend-module-gitlab/src/actions/gitlabGroupEnsureExists.test.ts b/plugins/scaffolder-backend-module-gitlab/src/actions/gitlabGroupEnsureExists.test.ts new file mode 100644 index 0000000..8e52ee9 --- /dev/null +++ b/plugins/scaffolder-backend-module-gitlab/src/actions/gitlabGroupEnsureExists.test.ts @@ -0,0 +1,261 @@ +/* + * Copyright 2021 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { ScmIntegrations } from '@backstage/integration'; +import { createMockActionContext } from '@backstage/plugin-scaffolder-node-test-utils'; +import { createGitlabGroupEnsureExistsAction } from './gitlabGroupEnsureExists'; +import { getClient } from '../util'; +import { mockServices } from '@backstage/backend-test-utils'; + +const mockGitlabClient = { + Groups: { + search: jest.fn(), + create: jest.fn(), + }, +}; + +jest.mock('@gitbeaker/rest', () => ({ + Gitlab: class { + constructor() { + return mockGitlabClient; + } + }, +})); + +jest.mock('../util', () => ({ + getClient: jest.fn().mockImplementation(() => mockGitlabClient), + parseRepoUrl: () => ({ host: 'gitlab.com', owner: 'owner', repo: 'repo' }), +})); + +describe('gitlab:group:ensureExists', () => { + beforeEach(() => { + jest.clearAllMocks(); + }); + + const config = mockServices.rootConfig({ + data: { + integrations: { + gitlab: [ + { + host: 'gitlab.com', + token: 'tokenlols', + apiBaseUrl: 'https://gitlab.com/api/v4', + }, + ], + }, + }, + }); + const integrations = ScmIntegrations.fromConfig(config); + + const action = createGitlabGroupEnsureExistsAction({ integrations }); + + const mockContext = createMockActionContext(); + + it('should create a new group from string if it does not exists', async () => { + mockGitlabClient.Groups.search.mockResolvedValue([ + { + id: 1, + full_path: 'bar', + }, + { + id: 2, + full_path: 'foo', + }, + ]); + + mockGitlabClient.Groups.create.mockResolvedValue({ + id: 3, + full_path: 'foo/bar', + }); + + await action.handler({ + ...mockContext, + input: { + repoUrl: 'gitlab.com?repo=repo&owner=owner', + path: ['foo', 'bar'], + }, + }); + + expect(mockGitlabClient.Groups.create).toHaveBeenCalledWith('bar', 'bar', { + parentId: 2, + }); + + expect(mockContext.output).toHaveBeenCalledWith('groupId', 3); + }); + + it('should create a new group from pathstring if it does not exists', async () => { + mockGitlabClient.Groups.search.mockResolvedValue([ + { + id: 1, + full_path: 'bar', + }, + { + id: 2, + full_path: 'foo', + }, + ]); + + mockGitlabClient.Groups.create.mockResolvedValue({ + id: 3, + full_path: 'foo/bar', + }); + + await action.handler({ + ...mockContext, + input: { + repoUrl: 'gitlab.com?repo=repo&owner=owner', + path: ['foo/bar', 'baz'], + }, + }); + + expect(mockGitlabClient.Groups.create).toHaveBeenCalledWith('bar', 'bar', { + parentId: 2, + }); + + expect(mockContext.output).toHaveBeenCalledWith('groupId', 3); + }); + + it('should create a new group from object if it does not exists', async () => { + mockGitlabClient.Groups.search.mockResolvedValue([ + { + id: 1, + full_path: 'bar', + }, + { + id: 2, + full_path: 'foo', + }, + ]); + + mockGitlabClient.Groups.create.mockResolvedValue({ + id: 3, + full_path: 'foo/bar', + }); + + await action.handler({ + ...mockContext, + input: { + repoUrl: 'gitlab.com?repo=repo&owner=owner', + path: [ + { name: 'Foo', slug: 'foo' }, + { name: 'Bar is a nice name', slug: 'bar' }, + ], + }, + }); + + expect(mockGitlabClient.Groups.create).toHaveBeenCalledWith( + 'Bar is a nice name', + 'bar', + { + parentId: 2, + }, + ); + + expect(mockContext.output).toHaveBeenCalledWith('groupId', 3); + }); + + it('should return existing group if it does exists', async () => { + mockGitlabClient.Groups.search.mockResolvedValue([ + { + id: 1, + full_path: 'bar', + }, + { + id: 2, + full_path: 'foo', + }, + { + id: 42, + full_path: 'foo/bar', + }, + ]); + + await action.handler({ + ...mockContext, + input: { + repoUrl: 'gitlab.com?repo=repo&owner=owner', + path: ['foo', 'bar'], + }, + }); + + expect(mockGitlabClient.Groups.create).not.toHaveBeenCalled(); + + expect(mockContext.output).toHaveBeenCalledWith('groupId', 42); + }); + + it('should not call API on dryRun', async () => { + await action.handler({ + ...mockContext, + isDryRun: true, + input: { + repoUrl: 'gitlab.com?repo=repo&owner=owner', + path: ['foo', 'bar'], + }, + }); + + expect(mockGitlabClient.Groups.search).not.toHaveBeenCalled(); + expect(mockGitlabClient.Groups.create).not.toHaveBeenCalled(); + + expect(mockContext.output).toHaveBeenCalledWith('groupId', 42); + }); + + it('should use the token from the integration config when none is provided', async () => { + mockGitlabClient.Groups.search.mockResolvedValue([ + { + id: 1, + full_path: 'foobar', + }, + ]); + + await action.handler({ + ...mockContext, + input: { + repoUrl: 'gitlab.com?repo=repo&owner=owner', + path: ['foobar'], + }, + }); + + expect(getClient).toHaveBeenCalledWith( + expect.not.objectContaining({ + token: expect.anything(), + }), + ); + }); + + it('should use a provided token as bearer authentication', async () => { + mockGitlabClient.Groups.search.mockResolvedValue([ + { + id: 1, + full_path: 'foobar', + }, + ]); + + await action.handler({ + ...mockContext, + input: { + repoUrl: 'gitlab.com?repo=repo&owner=owner', + path: ['foobar'], + token: 'mysecrettoken', + }, + }); + + expect(getClient).toHaveBeenCalledWith( + expect.objectContaining({ + token: 'mysecrettoken', + }), + ); + }); +}); diff --git a/plugins/scaffolder-backend-module-gitlab/src/actions/gitlabGroupEnsureExists.ts b/plugins/scaffolder-backend-module-gitlab/src/actions/gitlabGroupEnsureExists.ts new file mode 100644 index 0000000..c3d4fd7 --- /dev/null +++ b/plugins/scaffolder-backend-module-gitlab/src/actions/gitlabGroupEnsureExists.ts @@ -0,0 +1,143 @@ +/* + * Copyright 2021 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { ScmIntegrationRegistry } from '@backstage/integration'; +import { createTemplateAction } from '@backstage/plugin-scaffolder-node'; +import { GroupSchema } from '@gitbeaker/rest'; +import { getClient, parseRepoUrl } from '../util'; +import { examples } from './gitlabGroupEnsureExists.examples'; + +/** + * Creates an `gitlab:group:ensureExists` Scaffolder action. + * + * @public + */ +export const createGitlabGroupEnsureExistsAction = (options: { + integrations: ScmIntegrationRegistry; +}) => { + const { integrations } = options; + + return createTemplateAction({ + id: 'gitlab:group:ensureExists', + description: 'Ensures a Gitlab group exists', + supportsDryRun: true, + examples, + schema: { + input: { + repoUrl: z => + z.string({ + description: `Accepts the format 'gitlab.com?repo=project_name&owner=group_name' where 'project_name' is the repository name and 'group_name' is a group or username`, + }), + token: z => + z + .string({ + description: 'The token to use for authorization to GitLab', + }) + .optional(), + path: z => + z + .array( + z.string().or( + z.object({ + name: z.string(), + slug: z.string(), + }), + ), + { + description: + 'A path of group names or objects (name and slug) that is ensured to exist', + }, + ) + .min(1), + }, + output: { + groupId: z => + z + .number({ + description: 'The id of the innermost sub-group', + }) + .optional(), + }, + }, + async handler(ctx) { + if (ctx.isDryRun) { + ctx.output('groupId', 42); + return; + } + + const { token, repoUrl, path } = ctx.input; + + const { host } = parseRepoUrl(repoUrl, integrations); + + const api = getClient({ host, integrations, token }); + + let currentPath: string | null = null; + let parentId: number | null = null; + for (const { name, slug } of pathIterator(path)) { + const fullPath: string = currentPath ? `${currentPath}/${slug}` : slug; + const result = (await api.Groups.search( + fullPath, + )) as unknown as Array; // recast since the return type for search is wrong in the gitbeaker typings + const subGroup = result.find( + searchPathElem => searchPathElem.full_path === fullPath, + ); + if (!subGroup) { + ctx.logger.info(`creating missing group ${fullPath}`); + + parentId = await ctx.checkpoint({ + key: `ensure.${name}.${slug}.${parentId}`, + // eslint-disable-next-line no-loop-func + fn: async () => { + return ( + await api.Groups.create( + name, + slug, + parentId + ? { + parentId: parentId, + } + : {}, + ) + )?.id; + }, + }); + } else { + parentId = subGroup.id; + } + currentPath = fullPath; + } + if (parentId !== null) { + ctx.output('groupId', parentId); + } + }, + }); +}; + +type PathPart = { name: string; slug: string }; +type PathItem = string | PathPart; + +function* pathIterator(items: PathItem[]): Generator { + for (const item of items) { + if (typeof item === 'string') { + const parts = item.split('/'); + for (const part of parts) { + yield { name: part, slug: part }; + } + } else { + yield item; + } + } +} diff --git a/plugins/scaffolder-backend-module-gitlab/src/actions/gitlabIssueCreate.examples.test.ts b/plugins/scaffolder-backend-module-gitlab/src/actions/gitlabIssueCreate.examples.test.ts new file mode 100644 index 0000000..858adb4 --- /dev/null +++ b/plugins/scaffolder-backend-module-gitlab/src/actions/gitlabIssueCreate.examples.test.ts @@ -0,0 +1,713 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { ScmIntegrations } from '@backstage/integration'; +import { createMockActionContext } from '@backstage/plugin-scaffolder-node-test-utils'; +import { createGitlabIssueAction } from './gitlabIssueCreate'; +import { examples } from './gitlabIssueCreate.examples'; +import yaml from 'yaml'; +import { mockServices } from '@backstage/backend-test-utils'; + +const mockGitlabClient = { + Issues: { + create: jest.fn(), + }, +}; +jest.mock('@gitbeaker/rest', () => ({ + Gitlab: class { + constructor() { + return mockGitlabClient; + } + }, +})); + +describe('gitlab:issues:create', () => { + beforeEach(() => { + jest.clearAllMocks(); + jest.useFakeTimers({ + now: new Date(2005, 6, 4, 11, 0, 0), + }); + }); + + afterEach(() => { + jest.useRealTimers(); + }); + + const config = mockServices.rootConfig({ + data: { + integrations: { + gitlab: [ + { + host: 'gitlab.com', + token: 'sample-token', + apiBaseUrl: 'https://gitlab.com/api/v1', + }, + ], + }, + }, + }); + const integrations = ScmIntegrations.fromConfig(config); + + const action = createGitlabIssueAction({ integrations }); + + it(`should ${examples[0].description}`, async () => { + let input; + try { + input = yaml.parse(examples[0].example).steps[0].input; + } catch (error) { + console.error('Failed to parse YAML:', error); + } + + const mockContext = createMockActionContext({ + input: { + repoUrl: 'gitlab.com?repo=repo&owner=owner', + projectId: 234, + title: 'Computer banks to rule the world', + }, + workspacePath: 'seen2much', + }); + + mockGitlabClient.Issues.create.mockResolvedValue({ + id: 12, + iid: 4, + web_url: 'https://gitlab.com/hangar18-/issues/42', + }); + + await action.handler({ + ...mockContext, + input: { + ...mockContext.input, + ...input, + }, + }); + + expect(mockGitlabClient.Issues.create).toHaveBeenCalledWith( + 12, + input.title, + { + issueType: undefined, + description: input.description, + assigneeIds: [], + confidential: false, + epicId: undefined, + labels: '', + createdAt: new Date().toISOString(), + dueDate: undefined, + discussionToResolve: '', + mergeRequestToResolveDiscussionsOf: undefined, + milestoneId: undefined, + weight: undefined, + }, + ); + + expect(mockContext.output).toHaveBeenCalledWith('issueId', 12); + expect(mockContext.output).toHaveBeenCalledWith('issueIid', 4); + expect(mockContext.output).toHaveBeenCalledWith( + 'issueUrl', + 'https://gitlab.com/hangar18-/issues/42', + ); + }); + + it(`should ${examples[1].description}`, async () => { + let input; + try { + input = yaml.parse(examples[1].example).steps[0].input; + } catch (error) { + console.error('Failed to parse YAML:', error); + } + + const mockContext = createMockActionContext({ + input: { + repoUrl: 'gitlab.com?repo=repo&owner=owner', + projectId: 234, + title: 'Computer banks to rule the world', + }, + workspacePath: 'seen2much', + }); + + mockGitlabClient.Issues.create.mockResolvedValue({ + id: 12, + iid: 4, + web_url: 'https://gitlab.com/hangar18-/issues/42', + }); + + await action.handler({ + ...mockContext, + input: { + ...mockContext.input, + ...input, + }, + }); + + expect(mockGitlabClient.Issues.create).toHaveBeenCalledWith( + 12, + input.title, + { + issueType: undefined, + description: input.description, + assigneeIds: [18], + confidential: false, + epicId: undefined, + labels: '', + createdAt: input.createdAt, + dueDate: input.dueDate, + discussionToResolve: '', + mergeRequestToResolveDiscussionsOf: undefined, + milestoneId: undefined, + weight: undefined, + }, + ); + + expect(mockContext.output).toHaveBeenCalledWith('issueId', 12); + expect(mockContext.output).toHaveBeenCalledWith('issueIid', 4); + expect(mockContext.output).toHaveBeenCalledWith( + 'issueUrl', + 'https://gitlab.com/hangar18-/issues/42', + ); + }); + + it(`should ${examples[2].description}`, async () => { + let input; + try { + input = yaml.parse(examples[2].example).steps[0].input; + } catch (error) { + console.error('Failed to parse YAML:', error); + } + + const mockContext = createMockActionContext({ + input: { + repoUrl: 'gitlab.com?repo=repo&owner=owner', + projectId: 234, + title: 'Computer banks to rule the world', + }, + workspacePath: 'seen2much', + }); + + mockGitlabClient.Issues.create.mockResolvedValue({ + id: 12, + iid: 4, + web_url: 'https://gitlab.com/hangar18-/issues/42', + }); + + await action.handler({ + ...mockContext, + input: { + ...mockContext.input, + ...input, + epicId: undefined, + }, + }); + + expect(mockGitlabClient.Issues.create).toHaveBeenCalledWith( + 12, + input.title, + { + issueType: undefined, + description: input.description, + assigneeIds: [18, 15], + confidential: input.confidential, + epicId: undefined, + labels: input.labels, + createdAt: input.createdAt, + dueDate: input.dueDate, + discussionToResolve: input.discussionToResolve, + mergeRequestToResolveDiscussionsOf: undefined, + milestoneId: undefined, + weight: undefined, + }, + ); + + expect(mockContext.output).toHaveBeenCalledWith('issueId', 12); + expect(mockContext.output).toHaveBeenCalledWith('issueIid', 4); + expect(mockContext.output).toHaveBeenCalledWith( + 'issueUrl', + 'https://gitlab.com/hangar18-/issues/42', + ); + }); + + it(`should ${examples[3].description}`, async () => { + let input; + try { + input = yaml.parse(examples[3].example).steps[0].input; + } catch (error) { + console.error('Failed to parse YAML:', error); + } + + const mockContext = createMockActionContext({ + input: { + repoUrl: 'gitlab.com?repo=repo&owner=owner', + projectId: 234, + title: 'Computer banks to rule the world', + token: 'myAwesomeToken', + }, + workspacePath: 'seen2much', + }); + + mockGitlabClient.Issues.create.mockResolvedValue({ + id: 12, + iid: 4, + web_url: 'https://gitlab.com/hangar18-/issues/42', + }); + + await action.handler({ + ...mockContext, + input: { + ...mockContext.input, + ...input, + }, + }); + + expect(mockGitlabClient.Issues.create).toHaveBeenCalledWith( + 12, + input.title, + { + issueType: undefined, + description: input.description, + assigneeIds: [], + confidential: false, + epicId: undefined, + labels: '', + createdAt: new Date().toISOString(), + dueDate: undefined, + discussionToResolve: '', + mergeRequestToResolveDiscussionsOf: undefined, + milestoneId: undefined, + weight: undefined, + }, + ); + + expect(mockContext.output).toHaveBeenCalledWith('issueId', 12); + expect(mockContext.output).toHaveBeenCalledWith('issueIid', 4); + expect(mockContext.output).toHaveBeenCalledWith( + 'issueUrl', + 'https://gitlab.com/hangar18-/issues/42', + ); + }); + + it(`should ${examples[4].description}`, async () => { + let input; + try { + input = yaml.parse(examples[4].example).steps[0].input; + } catch (error) { + console.error('Failed to parse YAML:', error); + } + + const mockContext = createMockActionContext({ + input: { + repoUrl: 'gitlab.com?repo=repo&owner=owner', + projectId: 234, + title: 'Computer banks to rule the world', + token: 'myAwesomeToken', + }, + workspacePath: 'seen2much', + }); + + mockGitlabClient.Issues.create.mockResolvedValue({ + id: 12, + iid: 4, + web_url: 'https://gitlab.com/hangar18-/issues/42', + }); + + await action.handler({ + ...mockContext, + input: { + ...mockContext.input, + ...input, + }, + }); + + expect(mockGitlabClient.Issues.create).toHaveBeenCalledWith( + 12, + input.title, + { + issueType: undefined, + description: input.description, + assigneeIds: [], + confidential: false, + epicId: undefined, + labels: '', + createdAt: new Date().toISOString(), + dueDate: undefined, + discussionToResolve: '', + mergeRequestToResolveDiscussionsOf: undefined, + milestoneId: input.milestoneId, + weight: input.weight, + }, + ); + + expect(mockContext.output).toHaveBeenCalledWith('issueId', 12); + expect(mockContext.output).toHaveBeenCalledWith('issueIid', 4); + expect(mockContext.output).toHaveBeenCalledWith( + 'issueUrl', + 'https://gitlab.com/hangar18-/issues/42', + ); + }); + + it(`should ${examples[5].description}`, async () => { + let input; + try { + input = yaml.parse(examples[5].example).steps[0].input; + } catch (error) { + console.error('Failed to parse YAML:', error); + } + + const mockContext = createMockActionContext({ + input: { + repoUrl: 'gitlab.com?repo=repo&owner=owner', + projectId: 234, + title: 'Computer banks to rule the world', + token: 'myAwesomeToken', + }, + workspacePath: 'seen2much', + }); + + mockGitlabClient.Issues.create.mockResolvedValue({ + id: 12, + iid: 4, + web_url: 'https://gitlab.com/hangar18-/issues/42', + }); + + await action.handler({ + ...mockContext, + input: { + ...mockContext.input, + ...input, + }, + }); + + expect(mockGitlabClient.Issues.create).toHaveBeenCalledWith( + 12, + input.title, + { + issueType: input.issueType, + description: input.description, + assigneeIds: [], + confidential: false, + epicId: undefined, + labels: '', + createdAt: new Date().toISOString(), + dueDate: undefined, + discussionToResolve: '', + mergeRequestToResolveDiscussionsOf: undefined, + milestoneId: input.milestoneId, + weight: input.weight, + }, + ); + + expect(mockContext.output).toHaveBeenCalledWith('issueId', 12); + expect(mockContext.output).toHaveBeenCalledWith('issueIid', 4); + expect(mockContext.output).toHaveBeenCalledWith( + 'issueUrl', + 'https://gitlab.com/hangar18-/issues/42', + ); + }); + + it(`should ${examples[6].description}`, async () => { + let input; + try { + input = yaml.parse(examples[6].example).steps[0].input; + } catch (error) { + console.error('Failed to parse YAML:', error); + } + + const mockContext = createMockActionContext({ + input: { + repoUrl: 'gitlab.com?repo=repo&owner=owner', + projectId: 234, + title: 'Computer banks to rule the world', + token: 'myAwesomeToken', + }, + workspacePath: 'seen2much', + }); + + mockGitlabClient.Issues.create.mockResolvedValue({ + id: 12, + iid: 4, + web_url: 'https://gitlab.com/hangar18-/issues/42', + }); + + await action.handler({ + ...mockContext, + input: { + ...mockContext.input, + ...input, + }, + }); + + expect(mockGitlabClient.Issues.create).toHaveBeenCalledWith( + 12, + input.title, + { + issueType: input.issueType, + description: input.description, + assigneeIds: [], + confidential: false, + epicId: undefined, + labels: '', + createdAt: new Date().toISOString(), + dueDate: undefined, + discussionToResolve: '', + mergeRequestToResolveDiscussionsOf: undefined, + milestoneId: input.milestoneId, + weight: input.weight, + }, + ); + + expect(mockContext.output).toHaveBeenCalledWith('issueId', 12); + expect(mockContext.output).toHaveBeenCalledWith('issueIid', 4); + expect(mockContext.output).toHaveBeenCalledWith( + 'issueUrl', + 'https://gitlab.com/hangar18-/issues/42', + ); + }); + + it(`should ${examples[7].description}`, async () => { + let input; + try { + input = yaml.parse(examples[7].example).steps[0].input; + } catch (error) { + console.error('Failed to parse YAML:', error); + } + + const mockContext = createMockActionContext({ + input: { + repoUrl: 'gitlab.com?repo=repo&owner=owner', + projectId: 234, + title: 'Computer banks to rule the world', + token: 'myAwesomeToken', + }, + workspacePath: 'seen2much', + }); + + mockGitlabClient.Issues.create.mockResolvedValue({ + id: 12, + iid: 4, + web_url: 'https://gitlab.com/hangar18-/issues/42', + }); + + await action.handler({ + ...mockContext, + input: { + ...mockContext.input, + ...input, + }, + }); + + expect(mockGitlabClient.Issues.create).toHaveBeenCalledWith( + 12, + input.title, + { + issueType: input.issueType, + description: input.description, + assigneeIds: [18, 22], + confidential: false, + epicId: undefined, + labels: '', + createdAt: new Date().toISOString(), + dueDate: undefined, + discussionToResolve: '', + mergeRequestToResolveDiscussionsOf: undefined, + milestoneId: input.milestoneId, + weight: input.weight, + }, + ); + + expect(mockContext.output).toHaveBeenCalledWith('issueId', 12); + expect(mockContext.output).toHaveBeenCalledWith('issueIid', 4); + expect(mockContext.output).toHaveBeenCalledWith( + 'issueUrl', + 'https://gitlab.com/hangar18-/issues/42', + ); + }); + + it(`should ${examples[8].description}`, async () => { + let input; + try { + input = yaml.parse(examples[8].example).steps[0].input; + } catch (error) { + console.error('Failed to parse YAML:', error); + } + + const mockContext = createMockActionContext({ + input: { + repoUrl: 'gitlab.com?repo=repo&owner=owner', + projectId: 234, + title: 'Computer banks to rule the world', + token: 'myAwesomeToken', + }, + workspacePath: 'seen2much', + }); + + mockGitlabClient.Issues.create.mockResolvedValue({ + id: 12, + iid: 4, + web_url: 'https://gitlab.com/hangar18-/issues/42', + }); + + await action.handler({ + ...mockContext, + input: { + ...mockContext.input, + ...input, + }, + }); + + expect(mockGitlabClient.Issues.create).toHaveBeenCalledWith( + 12, + input.title, + { + issueType: input.issueType, + description: input.description, + assigneeIds: [], + confidential: false, + epicId: undefined, + labels: '', + createdAt: new Date().toISOString(), + dueDate: undefined, + discussionToResolve: '', + mergeRequestToResolveDiscussionsOf: undefined, + milestoneId: input.milestoneId, + weight: input.weight, + }, + ); + + expect(mockContext.output).toHaveBeenCalledWith('issueId', 12); + expect(mockContext.output).toHaveBeenCalledWith('issueIid', 4); + expect(mockContext.output).toHaveBeenCalledWith( + 'issueUrl', + 'https://gitlab.com/hangar18-/issues/42', + ); + }); + + it(`should ${examples[9].description}`, async () => { + let input; + try { + input = yaml.parse(examples[9].example).steps[0].input; + } catch (error) { + console.error('Failed to parse YAML:', error); + } + + const mockContext = createMockActionContext({ + input: { + repoUrl: 'gitlab.com?repo=repo&owner=owner', + projectId: 234, + title: 'Computer banks to rule the world', + token: 'myAwesomeToken', + }, + workspacePath: 'seen2much', + }); + + mockGitlabClient.Issues.create.mockResolvedValue({ + id: 12, + iid: 4, + web_url: 'https://gitlab.com/hangar18-/issues/42', + }); + + await action.handler({ + ...mockContext, + input: { + ...mockContext.input, + ...input, + }, + }); + + expect(mockGitlabClient.Issues.create).toHaveBeenCalledWith( + 12, + input.title, + { + issueType: input.issueType, + description: input.description, + assigneeIds: [], + confidential: false, + epicId: undefined, + labels: '', + createdAt: new Date().toISOString(), + dueDate: undefined, + discussionToResolve: '', + mergeRequestToResolveDiscussionsOf: undefined, + milestoneId: input.milestoneId, + weight: input.weight, + }, + ); + + expect(mockContext.output).toHaveBeenCalledWith('issueId', 12); + expect(mockContext.output).toHaveBeenCalledWith('issueIid', 4); + expect(mockContext.output).toHaveBeenCalledWith( + 'issueUrl', + 'https://gitlab.com/hangar18-/issues/42', + ); + }); + + it(`should ${examples[10].description}`, async () => { + let input; + try { + input = yaml.parse(examples[10].example).steps[0].input; + } catch (error) { + console.error('Failed to parse YAML:', error); + } + + const mockContext = createMockActionContext({ + input: { + repoUrl: 'gitlab.com?repo=repo&owner=owner', + projectId: 234, + title: 'Computer banks to rule the world', + token: 'myAwesomeToken', + }, + workspacePath: 'seen2much', + }); + + mockGitlabClient.Issues.create.mockResolvedValue({ + id: 12, + iid: 4, + web_url: 'https://gitlab.com/hangar18-/issues/42', + }); + + await action.handler({ + ...mockContext, + input: { + ...mockContext.input, + ...input, + }, + }); + + expect(mockGitlabClient.Issues.create).toHaveBeenCalledWith( + 12, + input.title, + { + issueType: input.issueType, + description: input.description, + assigneeIds: [], + confidential: false, + epicId: undefined, + labels: '', + createdAt: new Date().toISOString(), + dueDate: undefined, + discussionToResolve: 'abc123', + mergeRequestToResolveDiscussionsOf: + input.mergeRequestToResolveDiscussionsOf, + milestoneId: input.milestoneId, + weight: input.weight, + }, + ); + + expect(mockContext.output).toHaveBeenCalledWith('issueId', 12); + expect(mockContext.output).toHaveBeenCalledWith('issueIid', 4); + expect(mockContext.output).toHaveBeenCalledWith( + 'issueUrl', + 'https://gitlab.com/hangar18-/issues/42', + ); + }); +}); diff --git a/plugins/scaffolder-backend-module-gitlab/src/actions/gitlabIssueCreate.examples.ts b/plugins/scaffolder-backend-module-gitlab/src/actions/gitlabIssueCreate.examples.ts new file mode 100644 index 0000000..04fdeba --- /dev/null +++ b/plugins/scaffolder-backend-module-gitlab/src/actions/gitlabIssueCreate.examples.ts @@ -0,0 +1,243 @@ +/* + * Copyright 2023 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { TemplateExample } from '@backstage/plugin-scaffolder-node'; +import yaml from 'yaml'; +import { commonGitlabConfigExample } from '../commonGitlabConfig'; + +export const examples: TemplateExample[] = [ + { + description: 'Create a GitLab issue with minimal options', + example: yaml.stringify({ + steps: [ + { + id: 'gitlabIssue', + name: 'Issues', + action: 'gitlab:issues:create', + input: { + ...commonGitlabConfigExample, + projectId: 12, + title: 'Test Issue', + description: 'This is the description of the issue', + }, + }, + ], + }), + }, + { + description: 'Create a GitLab issue with assignees and date options', + example: yaml.stringify({ + steps: [ + { + id: 'gitlabIssue', + name: 'Issues', + action: 'gitlab:issues:create', + input: { + ...commonGitlabConfigExample, + projectId: 12, + title: 'Test Issue', + assignees: [18], + description: 'This is the description of the issue', + createdAt: '2022-09-27T18:00:00.000Z', + dueDate: '2022-09-28T12:00:00.000Z', + }, + }, + ], + }), + }, + { + description: 'Create a GitLab Issue with several options', + example: yaml.stringify({ + steps: [ + { + id: 'gitlabIssue', + name: 'Issues', + action: 'gitlab:issues:create', + input: { + ...commonGitlabConfigExample, + projectId: 12, + title: 'Test Issue', + assignees: [18, 15], + description: 'This is the description of the issue', + confidential: false, + createdAt: '2022-09-27T18:00:00.000Z', + dueDate: '2022-09-28T12:00:00.000Z', + discussionToResolve: '1', + epicId: 1, + labels: 'phase1:label1,phase2:label2', + }, + }, + ], + }), + }, + { + description: 'Create a GitLab issue with token', + example: yaml.stringify({ + steps: [ + { + id: 'gitlabIssue', + name: 'Issues', + action: 'gitlab:issues:create', + input: { + ...commonGitlabConfigExample, + projectId: 12, + title: 'Test Issue', + description: 'This is the description of the issue', + token: 'sample token', + }, + }, + ], + }), + }, + { + description: 'Create a GitLab issue with a specific milestone and weight', + example: yaml.stringify({ + steps: [ + { + id: 'gitlabIssue', + name: 'Issues', + action: 'gitlab:issues:create', + input: { + ...commonGitlabConfigExample, + projectId: 12, + title: 'Test Issue with Milestone', + description: 'This is the description of the issue', + milestoneId: 5, + weight: 3, + }, + }, + ], + }), + }, + { + description: 'Create a GitLab issue of type INCIDENT', + example: yaml.stringify({ + steps: [ + { + id: 'gitlabIssue', + name: 'Issues', + action: 'gitlab:issues:create', + input: { + ...commonGitlabConfigExample, + projectId: 12, + title: 'Confidential Test Issue', + description: 'This is the description of the issue', + issueType: 'incident', + }, + }, + ], + }), + }, + { + description: 'Create a GitLab issue of type TEST', + example: yaml.stringify({ + steps: [ + { + id: 'gitlabIssue', + name: 'Issues', + action: 'gitlab:issues:create', + input: { + ...commonGitlabConfigExample, + projectId: 12, + title: 'Confidential Test Issue', + description: 'This is the description of the issue', + issueType: 'test_case', + }, + }, + ], + }), + }, + { + description: 'Create a GitLab issue of type TASK with assignees', + example: yaml.stringify({ + steps: [ + { + id: 'gitlabIssue', + name: 'Issues', + action: 'gitlab:issues:create', + input: { + ...commonGitlabConfigExample, + projectId: 12, + title: 'Confidential Test Issue', + description: 'This is the description of the issue', + issueType: 'task', + assignees: [18, 22], + }, + }, + ], + }), + }, + { + description: 'Create a GitLab issue of type ISSUE and close it', + example: yaml.stringify({ + steps: [ + { + id: 'gitlabIssue', + name: 'Issues', + action: 'gitlab:issues:create', + input: { + ...commonGitlabConfigExample, + projectId: 12, + title: 'Confidential Test Issue', + description: 'This is the description of the issue', + issueType: 'issue', + stateEvent: 'close', + }, + }, + ], + }), + }, + { + description: 'Create a GitLab issue of type INCIDENT and reopen it', + example: yaml.stringify({ + steps: [ + { + id: 'gitlabIssue', + name: 'Issues', + action: 'gitlab:issues:create', + input: { + ...commonGitlabConfigExample, + projectId: 12, + title: 'Confidential Test Issue', + description: 'This is the description of the issue', + issueType: 'incident', + stateEvent: 'reopen', + }, + }, + ], + }), + }, + { + description: + 'Create a GitLab issue to resolve a discussion in a merge request', + example: yaml.stringify({ + steps: [ + { + id: 'gitlabIssue', + name: 'Issues', + action: 'gitlab:issues:create', + input: { + ...commonGitlabConfigExample, + projectId: 12, + title: 'Test Issue for MR Discussion', + description: 'This is the description of the issue', + mergeRequestToResolveDiscussionsOf: 42, + discussionToResolve: 'abc123', + }, + }, + ], + }), + }, +]; diff --git a/plugins/scaffolder-backend-module-gitlab/src/actions/gitlabIssueCreate.test.ts b/plugins/scaffolder-backend-module-gitlab/src/actions/gitlabIssueCreate.test.ts new file mode 100644 index 0000000..e09bfaf --- /dev/null +++ b/plugins/scaffolder-backend-module-gitlab/src/actions/gitlabIssueCreate.test.ts @@ -0,0 +1,214 @@ +/* + * Copyright 2021 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { ScmIntegrations } from '@backstage/integration'; +import { createMockActionContext } from '@backstage/plugin-scaffolder-node-test-utils'; +import { IssueType } from '../commonGitlabConfig'; +import { createGitlabIssueAction } from './gitlabIssueCreate'; +import { mockServices } from '@backstage/backend-test-utils'; + +const mockGitlabClient = { + Issues: { + create: jest.fn(), + }, +}; +jest.mock('@gitbeaker/rest', () => ({ + Gitlab: class { + constructor() { + return mockGitlabClient; + } + }, +})); + +describe('gitlab:issues:create', () => { + beforeEach(() => { + jest.clearAllMocks(); + jest.useFakeTimers({ + now: new Date(1988, 5, 3, 12, 0, 0), + }); + }); + + afterEach(() => { + jest.useRealTimers(); + }); + + const config = mockServices.rootConfig({ + data: { + integrations: { + gitlab: [ + { + host: 'gitlab.com', + token: 'myIntegrationsToken', + apiBaseUrl: 'https://gitlab.com/api/v4', + }, + ], + }, + }, + }); + const integrations = ScmIntegrations.fromConfig(config); + + const action = createGitlabIssueAction({ integrations }); + + it('should return a Gitlab issue when called with minimal input params', async () => { + const mockContext = createMockActionContext({ + input: { + repoUrl: 'gitlab.com?repo=repo&owner=owner', + projectId: 123, + title: 'Computer banks to rule the world', + }, + workspacePath: 'seen2much', + }); + + mockGitlabClient.Issues.create.mockResolvedValue({ + id: 42, + iid: 1, + web_url: 'https://gitlab.com/hangar18-/issues/42', + }); + + await action.handler({ + ...mockContext, + }); + + expect(mockGitlabClient.Issues.create).toHaveBeenCalledWith( + 123, + 'Computer banks to rule the world', + { + issueType: undefined, + description: '', + assigneeIds: [], + confidential: false, + epicId: undefined, + labels: '', + createdAt: new Date().toISOString(), + dueDate: undefined, + discussionToResolve: '', + mergeRequestToResolveDiscussionsOf: undefined, + milestoneId: undefined, + weight: undefined, + }, + ); + + expect(mockContext.output).toHaveBeenCalledWith('issueId', 42); + expect(mockContext.output).toHaveBeenCalledWith('issueIid', 1); + expect(mockContext.output).toHaveBeenCalledWith( + 'issueUrl', + 'https://gitlab.com/hangar18-/issues/42', + ); + }); + + it('should return a Gitlab issue when called with oAuth Token', async () => { + const mockContext = createMockActionContext({ + input: { + repoUrl: 'gitlab.com?repo=repo&owner=owner', + projectId: 123, + title: 'Computer banks to rule the world', + token: 'myAwesomeToken', + }, + workspacePath: 'seen2much', + }); + + mockGitlabClient.Issues.create.mockResolvedValue({ + id: 42, + iid: 1, + web_url: 'https://gitlab.com/hangar18-/issues/42', + }); + + await action.handler({ + ...mockContext, + }); + + expect(mockGitlabClient.Issues.create).toHaveBeenCalledWith( + 123, + 'Computer banks to rule the world', + { + issueType: undefined, + description: '', + assigneeIds: [], + confidential: false, + epicId: undefined, + labels: '', + createdAt: new Date().toISOString(), + dueDate: undefined, + discussionToResolve: '', + mergeRequestToResolveDiscussionsOf: undefined, + milestoneId: undefined, + weight: undefined, + }, + ); + + expect(mockContext.output).toHaveBeenCalledWith('issueId', 42); + expect(mockContext.output).toHaveBeenCalledWith('issueIid', 1); + expect(mockContext.output).toHaveBeenCalledWith( + 'issueUrl', + 'https://gitlab.com/hangar18-/issues/42', + ); + }); + + it('should return a Gitlab issue when called with several input params', async () => { + const mockContext = createMockActionContext({ + input: { + repoUrl: 'gitlab.com?repo=repo&owner=owner', + projectId: 123, + issueType: IssueType.INCIDENT, + title: 'Computer banks to rule the world', + description: + 'this issue should kickstart research on instruments to sight the stars', + dueDate: '1990-08-20T23:59:59Z', + token: 'myAwesomeToken', + assignees: [3, 14, 15], + labels: 'operation:mindcrime', + }, + workspacePath: 'seen2much', + }); + + mockGitlabClient.Issues.create.mockResolvedValue({ + id: 42, + iid: 1, + web_url: 'https://gitlab.com/hangar18-/issues/42', + }); + + await action.handler({ + ...mockContext, + }); + + expect(mockGitlabClient.Issues.create).toHaveBeenCalledWith( + 123, + 'Computer banks to rule the world', + { + issueType: 'incident', + description: + 'this issue should kickstart research on instruments to sight the stars', + assigneeIds: [3, 14, 15], + confidential: false, + epicId: undefined, + labels: 'operation:mindcrime', + createdAt: new Date().toISOString(), + dueDate: '1990-08-20T23:59:59.000Z', + discussionToResolve: '', + mergeRequestToResolveDiscussionsOf: undefined, + milestoneId: undefined, + weight: undefined, + }, + ); + + expect(mockContext.output).toHaveBeenCalledWith('issueId', 42); + expect(mockContext.output).toHaveBeenCalledWith('issueIid', 1); + expect(mockContext.output).toHaveBeenCalledWith( + 'issueUrl', + 'https://gitlab.com/hangar18-/issues/42', + ); + }); +}); diff --git a/plugins/scaffolder-backend-module-gitlab/src/actions/gitlabIssueCreate.ts b/plugins/scaffolder-backend-module-gitlab/src/actions/gitlabIssueCreate.ts new file mode 100644 index 0000000..1910b5c --- /dev/null +++ b/plugins/scaffolder-backend-module-gitlab/src/actions/gitlabIssueCreate.ts @@ -0,0 +1,264 @@ +/* + * Copyright 2023 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { InputError } from '@backstage/errors'; +import { ScmIntegrationRegistry } from '@backstage/integration'; +import { createTemplateAction } from '@backstage/plugin-scaffolder-node'; +import { IssueType } from '../commonGitlabConfig'; +import { examples } from './gitlabIssueCreate.examples'; +import { checkEpicScope, convertDate, getClient, parseRepoUrl } from '../util'; +import { CreateIssueOptions, IssueSchema } from '@gitbeaker/rest'; +import { getErrorMessage } from './helpers'; + +/** + * Creates a `gitlab:issues:create` Scaffolder action. + * + * @param options - Templating configuration. + * @public + */ +export const createGitlabIssueAction = (options: { + integrations: ScmIntegrationRegistry; +}) => { + const { integrations } = options; + return createTemplateAction({ + id: 'gitlab:issues:create', + description: 'Creates a Gitlab issue.', + examples, + schema: { + input: { + repoUrl: z => + z.string({ + description: `Accepts the format 'gitlab.com?repo=project_name&owner=group_name' where 'project_name' is the repository name and 'group_name' is a group or username`, + }), + token: z => + z + .string({ + description: 'The token to use for authorization to GitLab', + }) + .optional(), + projectId: z => + z.number({ + description: 'Project Id', + }), + title: z => + z.string({ + description: 'Title of the issue', + }), + assignees: z => + z + .array(z.number(), { + description: 'IDs of the users to assign the issue to.', + }) + .optional(), + confidential: z => + z + .boolean({ + description: 'Issue Confidentiality', + }) + .optional(), + description: z => + z + .string({ + description: 'Issue description', + }) + .max(1048576) + .optional(), + createdAt: z => + z + .string({ + description: 'Creation date/time', + }) + .regex( + /^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d{3})?Z$/, + 'Invalid date format. Use YYYY-MM-DDTHH:mm:ssZ or YYYY-MM-DDTHH:mm:ss.SSSZ', + ) + .optional(), + dueDate: z => + z + .string({ + description: 'Due date/time', + }) + .regex( + /^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d{3})?Z$/, + 'Invalid date format. Use YYYY-MM-DDTHH:mm:ssZ or YYYY-MM-DDTHH:mm:ss.SSSZ', + ) + .optional(), + discussionToResolve: z => + z + .string({ + description: + 'Id of a discussion to resolve. Use in combination with "merge_request_to_resolve_discussions_of"', + }) + .optional(), + epicId: z => + z + .number({ + description: 'Id of the linked Epic', + }) + .min(0, 'Valid values should be equal or greater than zero') + .optional(), + labels: z => + z + .string({ + description: 'Labels to apply', + }) + .optional(), + issueType: z => + z + .nativeEnum(IssueType, { + description: 'Type of the issue', + }) + .optional(), + mergeRequestToResolveDiscussionsOf: z => + z + .number({ + description: + 'IID of a merge request in which to resolve all issues', + }) + .optional(), + milestoneId: z => + z + .number({ + description: 'Global ID of a milestone to assign the issue', + }) + .optional(), + weight: z => + z + .number({ + description: 'The issue weight', + }) + .min(0) + .refine( + value => { + return value >= 0; + }, + { + message: 'Valid values should be equal or greater than zero', + }, + ) + .optional(), + }, + output: { + issueUrl: z => + z.string({ + description: 'Issue Url', + }), + issueId: z => + z.number({ + description: 'Issue Id', + }), + issueIid: z => + z.number({ + description: 'Issue Iid', + }), + }, + }, + async handler(ctx) { + try { + const { + repoUrl, + projectId, + title, + description = '', + confidential = false, + assignees = [], + createdAt = '', + dueDate, + discussionToResolve = '', + epicId, + labels = '', + issueType, + mergeRequestToResolveDiscussionsOf, + milestoneId, + weight, + token, + } = ctx.input; + + const { host } = parseRepoUrl(repoUrl, integrations); + const api = getClient({ host, integrations, token }); + + let isEpicScoped = false; + + isEpicScoped = await ctx.checkpoint({ + key: `is.epic.scoped.${projectId}.${title}`, + fn: async () => { + if (epicId) { + isEpicScoped = await checkEpicScope(api, projectId, epicId); + + if (isEpicScoped) { + ctx.logger.info('Epic is within Project Scope'); + } else { + ctx.logger.warn( + 'Chosen epic is not within the Project Scope. The issue will be created without an associated epic.', + ); + } + } + return isEpicScoped; + }, + }); + + const mappedCreatedAt = convertDate( + String(createdAt), + new Date().toISOString(), + ); + const mappedDueDate = dueDate + ? convertDate(String(dueDate), new Date().toISOString()) + : undefined; + + const issueOptions: CreateIssueOptions = { + description, + assigneeIds: assignees, + confidential, + epicId: isEpicScoped ? epicId : undefined, + labels, + createdAt: mappedCreatedAt, + dueDate: mappedDueDate, + discussionToResolve, + issueType, + mergeRequestToResolveDiscussionsOf, + milestoneId, + weight, + }; + + const response = await ctx.checkpoint({ + key: `issue.${projectId}.${title}`, + fn: async () => { + const issue = (await api.Issues.create( + projectId, + title, + issueOptions, + )) as IssueSchema; + + return { + id: issue.id, + web_url: issue.web_url, + iid: issue.iid, + }; + }, + }); + + ctx.output('issueId', response.id); + ctx.output('issueUrl', response.web_url); + ctx.output('issueIid', response.iid); + } catch (error: any) { + // Handling other errors + throw new InputError( + `Failed to create GitLab issue: ${getErrorMessage(error)}`, + ); + } + }, + }); +}; diff --git a/plugins/scaffolder-backend-module-gitlab/src/actions/gitlabIssueEdit.examples.test.ts b/plugins/scaffolder-backend-module-gitlab/src/actions/gitlabIssueEdit.examples.test.ts new file mode 100644 index 0000000..fa53609 --- /dev/null +++ b/plugins/scaffolder-backend-module-gitlab/src/actions/gitlabIssueEdit.examples.test.ts @@ -0,0 +1,819 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { createMockActionContext } from '@backstage/plugin-scaffolder-node-test-utils'; +import { ScmIntegrations } from '@backstage/integration'; +import { editGitlabIssueAction } from './gitlabIssueEdit'; +import { examples } from './gitlabIssueEdit.examples'; +import yaml from 'yaml'; +import { mockServices } from '@backstage/backend-test-utils'; + +const mockGitlabClient = { + Issues: { + edit: jest.fn(), + }, +}; +jest.mock('@gitbeaker/rest', () => ({ + Gitlab: class { + constructor() { + return mockGitlabClient; + } + }, +})); + +describe('gitlab:issue:edit', () => { + beforeEach(() => { + jest.clearAllMocks(); + jest.useFakeTimers({ + now: new Date(1999, 6, 14, 12, 0, 0), + }); + }); + + afterEach(() => { + jest.useRealTimers(); + }); + + const config = mockServices.rootConfig({ + data: { + integrations: { + gitlab: [ + { + host: 'gitlab.com', + token: 'myIntegrationsToken', + apiBaseUrl: 'https://gitlab.com/api/v4', + }, + ], + }, + }, + }); + const integrations = ScmIntegrations.fromConfig(config); + + const action = editGitlabIssueAction({ integrations }); + + it(`Should ${examples[0].description}`, async () => { + const mockContext = createMockActionContext({ + input: { + repoUrl: 'gitlab.com?repo=repo&owner=owner', + projectId: 123, + issueIid: 42, + title: 'Computer banks to rule the world', + }, + workspacePath: 'seen2much', + }); + + mockGitlabClient.Issues.edit.mockResolvedValue({ + id: 123, + iid: 42, + web_url: 'https://gitlab.com/hangar18-/issues/42', + }); + + let input; + try { + input = yaml.parse(examples[0].example).steps[0].input; + } catch (error) { + console.error('Failed to parse YAML:', error); + } + + await action.handler({ + ...mockContext, + input: { + ...mockContext.input, + ...input, + }, + }); + + expect(mockGitlabClient.Issues.edit).toHaveBeenCalledWith(12, 42, { + title: input.title, + issueType: undefined, + addLabels: undefined, + removeLabels: undefined, + description: input.description, + assigneeIds: [], + confidential: false, + discussionLocked: false, + epicId: undefined, + labels: undefined, + updatedAt: new Date().toISOString(), + dueDate: undefined, + milestoneId: undefined, + weight: undefined, + stateEvent: undefined, + }); + + expect(mockContext.output).toHaveBeenCalledWith('issueId', 123); + expect(mockContext.output).toHaveBeenCalledWith('issueIid', 42); + expect(mockContext.output).toHaveBeenCalledWith( + 'issueUrl', + 'https://gitlab.com/hangar18-/issues/42', + ); + }); + + it(`Should ${examples[1].description}`, async () => { + const mockContext = createMockActionContext({ + input: { + repoUrl: 'gitlab.com?repo=repo&owner=owner', + projectId: 123, + issueIid: 42, + title: 'Computer banks to rule the world', + }, + workspacePath: 'seen2much', + }); + + mockGitlabClient.Issues.edit.mockResolvedValue({ + id: 123, + iid: 42, + web_url: 'https://gitlab.com/hangar18-/issues/42', + }); + + let input; + try { + input = yaml.parse(examples[1].example).steps[0].input; + } catch (error) { + console.error('Failed to parse YAML:', error); + } + + await action.handler({ + ...mockContext, + input: { + ...mockContext.input, + ...input, + }, + }); + + expect(mockGitlabClient.Issues.edit).toHaveBeenCalledWith(12, 42, { + title: input.title, + issueType: undefined, + addLabels: undefined, + removeLabels: undefined, + description: input.description, + assigneeIds: [18], + confidential: false, + discussionLocked: false, + epicId: undefined, + labels: undefined, + updatedAt: '2024-05-10T18:00:00.000Z', + dueDate: '2024-09-28', + milestoneId: undefined, + weight: undefined, + stateEvent: undefined, + }); + + expect(mockContext.output).toHaveBeenCalledWith('issueId', 123); + expect(mockContext.output).toHaveBeenCalledWith('issueIid', 42); + expect(mockContext.output).toHaveBeenCalledWith( + 'issueUrl', + 'https://gitlab.com/hangar18-/issues/42', + ); + }); + + it(`Should ${examples[2].description}`, async () => { + const mockContext = createMockActionContext({ + input: { + repoUrl: 'gitlab.com?repo=repo&owner=owner', + projectId: 123, + issueIid: 42, + title: 'Computer banks to rule the world', + }, + workspacePath: 'seen2much', + }); + + mockGitlabClient.Issues.edit.mockResolvedValue({ + id: 123, + iid: 42, + web_url: 'https://gitlab.com/hangar18-/issues/42', + }); + + let input; + try { + input = yaml.parse(examples[2].example).steps[0].input; + } catch (error) { + console.error('Failed to parse YAML:', error); + } + + await action.handler({ + ...mockContext, + input: { + ...mockContext.input, + ...input, + epicId: undefined, + }, + }); + + expect(mockGitlabClient.Issues.edit).toHaveBeenCalledWith(12, 42, { + title: input.title, + issueType: undefined, + addLabels: undefined, + removeLabels: undefined, + description: input.description, + assigneeIds: [18, 15], + confidential: false, + discussionLocked: true, + epicId: undefined, + labels: 'phase1:label1,phase2:label2', + updatedAt: '2024-05-10T18:00:00.000Z', + dueDate: '2024-09-28', + milestoneId: undefined, + weight: undefined, + stateEvent: undefined, + }); + + expect(mockContext.output).toHaveBeenCalledWith('issueId', 123); + expect(mockContext.output).toHaveBeenCalledWith('issueIid', 42); + expect(mockContext.output).toHaveBeenCalledWith( + 'issueUrl', + 'https://gitlab.com/hangar18-/issues/42', + ); + }); + + it(`Should ${examples[2].description}`, async () => { + const mockContext = createMockActionContext({ + input: { + repoUrl: 'gitlab.com?repo=repo&owner=owner', + projectId: 123, + issueIid: 42, + title: 'Computer banks to rule the world', + }, + workspacePath: 'seen2much', + }); + + mockGitlabClient.Issues.edit.mockResolvedValue({ + id: 123, + iid: 42, + web_url: 'https://gitlab.com/hangar18-/issues/42', + }); + + let input; + try { + input = yaml.parse(examples[2].example).steps[0].input; + } catch (error) { + console.error('Failed to parse YAML:', error); + } + + await action.handler({ + ...mockContext, + input: { + ...mockContext.input, + ...input, + epicId: undefined, + }, + }); + + expect(mockGitlabClient.Issues.edit).toHaveBeenCalledWith(12, 42, { + title: input.title, + issueType: undefined, + addLabels: undefined, + removeLabels: undefined, + description: input.description, + assigneeIds: [18, 15], + confidential: false, + discussionLocked: true, + epicId: undefined, + labels: 'phase1:label1,phase2:label2', + updatedAt: '2024-05-10T18:00:00.000Z', + dueDate: '2024-09-28', + milestoneId: undefined, + weight: undefined, + stateEvent: undefined, + }); + + expect(mockContext.output).toHaveBeenCalledWith('issueId', 123); + expect(mockContext.output).toHaveBeenCalledWith('issueIid', 42); + expect(mockContext.output).toHaveBeenCalledWith( + 'issueUrl', + 'https://gitlab.com/hangar18-/issues/42', + ); + }); + + it(`Should ${examples[3].description}`, async () => { + const mockContext = createMockActionContext({ + input: { + repoUrl: 'gitlab.com?repo=repo&owner=owner', + projectId: 123, + issueIid: 42, + title: 'Computer banks to rule the world', + }, + workspacePath: 'seen2much', + }); + + mockGitlabClient.Issues.edit.mockResolvedValue({ + id: 123, + iid: 42, + web_url: 'https://gitlab.com/hangar18-/issues/42', + }); + + let input; + try { + input = yaml.parse(examples[3].example).steps[0].input; + } catch (error) { + console.error('Failed to parse YAML:', error); + } + + await action.handler({ + ...mockContext, + input: { + ...mockContext.input, + ...input, + }, + }); + + expect(mockGitlabClient.Issues.edit).toHaveBeenCalledWith(12, 42, { + title: 'Computer banks to rule the world', + issueType: undefined, + addLabels: undefined, + removeLabels: undefined, + description: input.description, + assigneeIds: [], + confidential: false, + discussionLocked: false, + epicId: undefined, + labels: undefined, + updatedAt: new Date().toISOString(), + dueDate: undefined, + milestoneId: undefined, + weight: undefined, + stateEvent: 'close', + }); + + expect(mockContext.output).toHaveBeenCalledWith('issueId', 123); + expect(mockContext.output).toHaveBeenCalledWith('issueIid', 42); + expect(mockContext.output).toHaveBeenCalledWith( + 'issueUrl', + 'https://gitlab.com/hangar18-/issues/42', + ); + }); + + it(`Should ${examples[4].description}`, async () => { + const mockContext = createMockActionContext({ + input: { + repoUrl: 'gitlab.com?repo=repo&owner=owner', + projectId: 123, + issueIid: 42, + title: 'Computer banks to rule the world', + }, + workspacePath: 'seen2much', + }); + + mockGitlabClient.Issues.edit.mockResolvedValue({ + id: 123, + iid: 42, + web_url: 'https://gitlab.com/hangar18-/issues/42', + }); + + let input; + try { + input = yaml.parse(examples[4].example).steps[0].input; + } catch (error) { + console.error('Failed to parse YAML:', error); + } + + await action.handler({ + ...mockContext, + input: { + ...mockContext.input, + ...input, + }, + }); + + expect(mockGitlabClient.Issues.edit).toHaveBeenCalledWith(12, 42, { + title: 'Computer banks to rule the world', + issueType: undefined, + addLabels: undefined, + removeLabels: undefined, + description: input.description, + assigneeIds: [], + confidential: false, + discussionLocked: false, + epicId: undefined, + labels: undefined, + updatedAt: new Date().toISOString(), + dueDate: undefined, + milestoneId: undefined, + weight: undefined, + stateEvent: 'reopen', + }); + + expect(mockContext.output).toHaveBeenCalledWith('issueId', 123); + expect(mockContext.output).toHaveBeenCalledWith('issueIid', 42); + expect(mockContext.output).toHaveBeenCalledWith( + 'issueUrl', + 'https://gitlab.com/hangar18-/issues/42', + ); + }); + + it(`Should ${examples[5].description}`, async () => { + const mockContext = createMockActionContext({ + input: { + repoUrl: 'gitlab.com?repo=repo&owner=owner', + projectId: 123, + issueIid: 42, + title: 'Computer banks to rule the world', + }, + workspacePath: 'seen2much', + }); + + mockGitlabClient.Issues.edit.mockResolvedValue({ + id: 123, + iid: 42, + web_url: 'https://gitlab.com/hangar18-/issues/42', + }); + + let input; + try { + input = yaml.parse(examples[5].example).steps[0].input; + } catch (error) { + console.error('Failed to parse YAML:', error); + } + + await action.handler({ + ...mockContext, + input: { + ...mockContext.input, + ...input, + }, + }); + + expect(mockGitlabClient.Issues.edit).toHaveBeenCalledWith(12, 42, { + title: input.title, + issueType: undefined, + addLabels: undefined, + removeLabels: undefined, + description: input.description, + assigneeIds: [18, 20], + confidential: false, + discussionLocked: false, + epicId: undefined, + labels: undefined, + updatedAt: new Date().toISOString(), + dueDate: undefined, + milestoneId: input.milestoneId, + weight: undefined, + stateEvent: undefined, + }); + + expect(mockContext.output).toHaveBeenCalledWith('issueId', 123); + expect(mockContext.output).toHaveBeenCalledWith('issueIid', 42); + expect(mockContext.output).toHaveBeenCalledWith( + 'issueUrl', + 'https://gitlab.com/hangar18-/issues/42', + ); + }); + + it(`Should ${examples[6].description}`, async () => { + const mockContext = createMockActionContext({ + input: { + repoUrl: 'gitlab.com?repo=repo&owner=owner', + projectId: 123, + issueIid: 42, + title: 'Computer banks to rule the world', + }, + workspacePath: 'seen2much', + }); + + mockGitlabClient.Issues.edit.mockResolvedValue({ + id: 123, + iid: 42, + web_url: 'https://gitlab.com/hangar18-/issues/42', + }); + + let input; + try { + input = yaml.parse(examples[6].example).steps[0].input; + } catch (error) { + console.error('Failed to parse YAML:', error); + } + + await action.handler({ + ...mockContext, + input: { + ...mockContext.input, + ...input, + }, + }); + + expect(mockGitlabClient.Issues.edit).toHaveBeenCalledWith(12, 42, { + title: input.title, + issueType: undefined, + addLabels: undefined, + removeLabels: undefined, + description: input.description, + assigneeIds: [], + confidential: false, + discussionLocked: false, + epicId: undefined, + labels: input.labels, + updatedAt: new Date().toISOString(), + dueDate: undefined, + milestoneId: input.milestoneId, + weight: input.weight, + stateEvent: undefined, + }); + + expect(mockContext.output).toHaveBeenCalledWith('issueId', 123); + expect(mockContext.output).toHaveBeenCalledWith('issueIid', 42); + expect(mockContext.output).toHaveBeenCalledWith( + 'issueUrl', + 'https://gitlab.com/hangar18-/issues/42', + ); + }); + + it(`Should ${examples[7].description}`, async () => { + const mockContext = createMockActionContext({ + input: { + repoUrl: 'gitlab.com?repo=repo&owner=owner', + projectId: 123, + issueIid: 42, + title: 'Computer banks to rule the world', + }, + workspacePath: 'seen2much', + }); + + mockGitlabClient.Issues.edit.mockResolvedValue({ + id: 123, + iid: 42, + web_url: 'https://gitlab.com/hangar18-/issues/42', + }); + + let input; + try { + input = yaml.parse(examples[7].example).steps[0].input; + } catch (error) { + console.error('Failed to parse YAML:', error); + } + + await action.handler({ + ...mockContext, + input: { + ...mockContext.input, + ...input, + }, + }); + + expect(mockGitlabClient.Issues.edit).toHaveBeenCalledWith(12, 42, { + title: input.title, + issueType: undefined, + addLabels: undefined, + removeLabels: undefined, + description: input.description, + assigneeIds: [], + confidential: input.confidential, + discussionLocked: false, + epicId: undefined, + labels: input.labels, + updatedAt: new Date().toISOString(), + dueDate: undefined, + milestoneId: input.milestoneId, + weight: input.weight, + stateEvent: undefined, + }); + + expect(mockContext.output).toHaveBeenCalledWith('issueId', 123); + expect(mockContext.output).toHaveBeenCalledWith('issueIid', 42); + expect(mockContext.output).toHaveBeenCalledWith( + 'issueUrl', + 'https://gitlab.com/hangar18-/issues/42', + ); + }); + + it(`Should ${examples[8].description}`, async () => { + const mockContext = createMockActionContext({ + input: { + repoUrl: 'gitlab.com?repo=repo&owner=owner', + projectId: 123, + issueIid: 42, + title: 'Computer banks to rule the world', + }, + workspacePath: 'seen2much', + }); + + mockGitlabClient.Issues.edit.mockResolvedValue({ + id: 123, + iid: 42, + web_url: 'https://gitlab.com/hangar18-/issues/42', + }); + + let input; + try { + input = yaml.parse(examples[8].example).steps[0].input; + } catch (error) { + console.error('Failed to parse YAML:', error); + } + + await action.handler({ + ...mockContext, + input: { + ...mockContext.input, + ...input, + }, + }); + + expect(mockGitlabClient.Issues.edit).toHaveBeenCalledWith(12, 42, { + title: input.title, + issueType: undefined, + addLabels: undefined, + removeLabels: undefined, + description: input.description, + assigneeIds: [], + confidential: false, + discussionLocked: input.discussionLocked, + epicId: undefined, + labels: input.labels, + updatedAt: new Date().toISOString(), + dueDate: undefined, + milestoneId: input.milestoneId, + weight: input.weight, + stateEvent: undefined, + }); + + expect(mockContext.output).toHaveBeenCalledWith('issueId', 123); + expect(mockContext.output).toHaveBeenCalledWith('issueIid', 42); + expect(mockContext.output).toHaveBeenCalledWith( + 'issueUrl', + 'https://gitlab.com/hangar18-/issues/42', + ); + }); + + it(`Should ${examples[9].description}`, async () => { + const mockContext = createMockActionContext({ + input: { + repoUrl: 'gitlab.com?repo=repo&owner=owner', + projectId: 123, + issueIid: 42, + title: 'Computer banks to rule the world', + }, + workspacePath: 'seen2much', + }); + + mockGitlabClient.Issues.edit.mockResolvedValue({ + id: 123, + iid: 42, + web_url: 'https://gitlab.com/hangar18-/issues/42', + }); + + let input; + try { + input = yaml.parse(examples[9].example).steps[0].input; + } catch (error) { + console.error('Failed to parse YAML:', error); + } + + await action.handler({ + ...mockContext, + input: { + ...mockContext.input, + ...input, + }, + }); + + expect(mockGitlabClient.Issues.edit).toHaveBeenCalledWith(12, 42, { + title: input.title, + issueType: undefined, + addLabels: undefined, + removeLabels: input.removeLabels, + description: input.description, + assigneeIds: [], + confidential: false, + discussionLocked: false, + epicId: undefined, + labels: input.labels, + updatedAt: new Date().toISOString(), + dueDate: undefined, + milestoneId: input.milestoneId, + weight: input.weight, + stateEvent: undefined, + }); + + expect(mockContext.output).toHaveBeenCalledWith('issueId', 123); + expect(mockContext.output).toHaveBeenCalledWith('issueIid', 42); + expect(mockContext.output).toHaveBeenCalledWith( + 'issueUrl', + 'https://gitlab.com/hangar18-/issues/42', + ); + }); + it(`Should ${examples[10].description}`, async () => { + const mockContext = createMockActionContext({ + input: { + repoUrl: 'gitlab.com?repo=repo&owner=owner', + projectId: 123, + issueIid: 42, + title: 'Computer banks to rule the world', + }, + workspacePath: 'seen2much', + }); + + mockGitlabClient.Issues.edit.mockResolvedValue({ + id: 123, + iid: 42, + web_url: 'https://gitlab.com/hangar18-/issues/42', + }); + + let input; + try { + input = yaml.parse(examples[10].example).steps[0].input; + } catch (error) { + console.error('Failed to parse YAML:', error); + } + + await action.handler({ + ...mockContext, + input: { + ...mockContext.input, + ...input, + }, + }); + + expect(mockGitlabClient.Issues.edit).toHaveBeenCalledWith(12, 42, { + title: input.title, + issueType: undefined, + addLabels: undefined, + removeLabels: input.removeLabels, + description: input.description, + assigneeIds: [], + confidential: false, + discussionLocked: false, + epicId: undefined, + labels: input.labels, + updatedAt: new Date().toISOString(), + dueDate: undefined, + milestoneId: input.milestoneId, + weight: input.weight, + stateEvent: undefined, + }); + + expect(mockContext.output).toHaveBeenCalledWith('issueId', 123); + expect(mockContext.output).toHaveBeenCalledWith('issueIid', 42); + expect(mockContext.output).toHaveBeenCalledWith( + 'issueUrl', + 'https://gitlab.com/hangar18-/issues/42', + ); + }); + it(`Should ${examples[11].description}`, async () => { + const mockContext = createMockActionContext({ + input: { + repoUrl: 'gitlab.com?repo=repo&owner=owner', + projectId: 123, + issueIid: 42, + title: 'Computer banks to rule the world', + }, + workspacePath: 'seen2much', + }); + + mockGitlabClient.Issues.edit.mockResolvedValue({ + id: 123, + iid: 42, + web_url: 'https://gitlab.com/hangar18-/issues/42', + }); + + let input; + try { + input = yaml.parse(examples[11].example).steps[0].input; + } catch (error) { + console.error('Failed to parse YAML:', error); + } + + await action.handler({ + ...mockContext, + input: { + ...mockContext.input, + ...input, + }, + }); + + expect(mockGitlabClient.Issues.edit).toHaveBeenCalledWith(12, 42, { + title: input.title, + issueType: input.issueType, + addLabels: undefined, + removeLabels: input.removeLabels, + description: input.description, + assigneeIds: [], + confidential: false, + discussionLocked: false, + epicId: undefined, + labels: input.labels, + updatedAt: new Date().toISOString(), + dueDate: undefined, + milestoneId: input.milestoneId, + weight: input.weight, + stateEvent: undefined, + }); + + expect(mockContext.output).toHaveBeenCalledWith('issueId', 123); + expect(mockContext.output).toHaveBeenCalledWith('issueIid', 42); + expect(mockContext.output).toHaveBeenCalledWith( + 'issueUrl', + 'https://gitlab.com/hangar18-/issues/42', + ); + }); +}); diff --git a/plugins/scaffolder-backend-module-gitlab/src/actions/gitlabIssueEdit.examples.ts b/plugins/scaffolder-backend-module-gitlab/src/actions/gitlabIssueEdit.examples.ts new file mode 100644 index 0000000..8686a66 --- /dev/null +++ b/plugins/scaffolder-backend-module-gitlab/src/actions/gitlabIssueEdit.examples.ts @@ -0,0 +1,258 @@ +/* + * Copyright 2023 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { TemplateExample } from '@backstage/plugin-scaffolder-node'; +import yaml from 'yaml'; +import { commonGitlabConfigExample } from '../commonGitlabConfig'; + +export const examples: TemplateExample[] = [ + { + description: 'Edit a GitLab issue with minimal options', + example: yaml.stringify({ + steps: [ + { + id: 'gitlabIssue', + name: 'EditIssues', + action: 'gitlab:issue:edit', + input: { + ...commonGitlabConfigExample, + projectId: 12, + title: 'Modified Test Issue', + description: 'This is a modified description of the issue', + }, + }, + ], + }), + }, + { + description: 'Edit a GitLab issue with assignees and date options', + example: yaml.stringify({ + steps: [ + { + id: 'gitlabIssue', + name: 'EditIssues', + action: 'gitlab:issue:edit', + input: { + ...commonGitlabConfigExample, + projectId: 12, + title: 'Test Issue', + assignees: [18], + description: 'This is the edited description of the issue', + updatedAt: '2024-05-10T18:00:00.000Z', + dueDate: '2024-09-28', + }, + }, + ], + }), + }, + { + description: 'Create a GitLab Issue with several options', + example: yaml.stringify({ + steps: [ + { + id: 'gitlabIssue', + name: 'EditIssues', + action: 'gitlab:issue:edit', + input: { + ...commonGitlabConfigExample, + projectId: 12, + title: 'Test Edit Issue', + assignees: [18, 15], + description: 'This is the description of the issue', + confidential: false, + updatedAt: '2024-05-10T18:00:00.000Z', + dueDate: '2024-09-28', + discussionLocked: true, + epicId: 1, + labels: 'phase1:label1,phase2:label2', + }, + }, + ], + }), + }, + { + description: 'Edit a gitlab issue to change its state to close', + example: yaml.stringify({ + steps: [ + { + id: 'gitlabIssue', + name: 'EditIssues', + action: 'gitlab:issue:edit', + input: { + ...commonGitlabConfigExample, + projectId: 12, + stateEvent: 'close', + }, + }, + ], + }), + }, + { + description: 'Edit a gitlab issue to change its state to reopened', + example: yaml.stringify({ + steps: [ + { + id: 'gitlabIssue', + name: 'EditIssues', + action: 'gitlab:issue:edit', + input: { + ...commonGitlabConfigExample, + projectId: 12, + stateEvent: 'reopen', + }, + }, + ], + }), + }, + { + description: + 'Edit a gitlab issue to assign it to multiple users and set milestone', + example: yaml.stringify({ + steps: [ + { + id: 'gitlabIssue', + name: 'EditIssues', + action: 'gitlab:issue:edit', + input: { + ...commonGitlabConfigExample, + projectId: 12, + title: 'Test issue with milestone', + assignees: [18, 20], + description: 'This issue has milestone set', + milestoneId: 5, + }, + }, + ], + }), + }, + { + description: 'Edit a gitlab issue to add weight and update labels', + example: yaml.stringify({ + steps: [ + { + id: 'gitlabIssue', + name: 'EditIssues', + action: 'gitlab:issue:edit', + input: { + ...commonGitlabConfigExample, + projectId: 12, + title: 'Issue with weight and labels', + description: 'This issue has weight and new labels', + weight: 3, + labels: 'bug,urgent', + }, + }, + ], + }), + }, + { + description: 'Edit a gitlab issue to make it confidential', + example: yaml.stringify({ + steps: [ + { + id: 'gitlabIssue', + name: 'EditIssues', + action: 'gitlab:issue:edit', + input: { + ...commonGitlabConfigExample, + projectId: 12, + title: 'Confidential Issue', + description: 'This issue is confidential', + confidential: true, + }, + }, + ], + }), + }, + { + description: 'Edit a gitlab issue to lock the discussion', + example: yaml.stringify({ + steps: [ + { + id: 'gitlabIssue', + name: 'EditIssues', + action: 'gitlab:issue:edit', + input: { + ...commonGitlabConfigExample, + projectId: 12, + title: 'Locked Discussion Issue', + description: 'This discussion on this issue is locked', + discussionLocked: true, + }, + }, + ], + }), + }, + { + description: 'Edit a gitlab issue to remove labels and update milestone', + example: yaml.stringify({ + steps: [ + { + id: 'gitlabIssue', + name: 'EditIssues', + action: 'gitlab:issue:edit', + input: { + ...commonGitlabConfigExample, + projectId: 12, + title: 'Issue with labels removed and milestone updated', + description: 'This issue has labels removed and milestone updated', + removeLabels: 'phase1:label1', + milestoneId: 6, + }, + }, + ], + }), + }, + { + description: 'Edit a gitlab issue to remove some labels and new ones', + example: yaml.stringify({ + steps: [ + { + id: 'gitlabIssue', + name: 'EditIssues', + action: 'gitlab:issue:edit', + input: { + ...commonGitlabConfigExample, + projectId: 12, + title: 'Issue with labels updated', + description: 'This issue has labels removed and new ones added', + removeLabels: 'bug,urgent', + labels: 'enhancement:documentation', + }, + }, + ], + }), + }, + { + description: 'Edit a gitlab issue to change issue type and add labels', + example: yaml.stringify({ + steps: [ + { + id: 'gitlabIssue', + name: 'EditIssues', + action: 'gitlab:issue:edit', + input: { + ...commonGitlabConfigExample, + projectId: 12, + title: 'Issue with type and labels', + description: 'This issue has been changes and new labels added', + labels: 'task,high-priority', + issueType: 'task', + }, + }, + ], + }), + }, +]; diff --git a/plugins/scaffolder-backend-module-gitlab/src/actions/gitlabIssueEdit.test.ts b/plugins/scaffolder-backend-module-gitlab/src/actions/gitlabIssueEdit.test.ts new file mode 100644 index 0000000..a16236a --- /dev/null +++ b/plugins/scaffolder-backend-module-gitlab/src/actions/gitlabIssueEdit.test.ts @@ -0,0 +1,213 @@ +/* + * Copyright 2021 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { createMockActionContext } from '@backstage/plugin-scaffolder-node-test-utils'; +import { ScmIntegrations } from '@backstage/integration'; +import { IssueType } from '../commonGitlabConfig'; +import { editGitlabIssueAction } from './gitlabIssueEdit'; +import { mockServices } from '@backstage/backend-test-utils'; + +const mockGitlabClient = { + Issues: { + edit: jest.fn(), + }, +}; +jest.mock('@gitbeaker/rest', () => ({ + Gitlab: class { + constructor() { + return mockGitlabClient; + } + }, +})); + +describe('gitlab:issue:edit', () => { + beforeEach(() => { + jest.clearAllMocks(); + jest.useFakeTimers({ + now: new Date(1988, 5, 3, 12, 0, 0), + }); + }); + + afterEach(() => { + jest.useRealTimers(); + }); + + const config = mockServices.rootConfig({ + data: { + integrations: { + gitlab: [ + { + host: 'gitlab.com', + token: 'myIntegrationsToken', + apiBaseUrl: 'https://gitlab.com/api/v4', + }, + ], + }, + }, + }); + const integrations = ScmIntegrations.fromConfig(config); + + const action = editGitlabIssueAction({ integrations }); + + it('should return a Gitlab issue when called with minimal input params', async () => { + const mockContext = createMockActionContext({ + input: { + repoUrl: 'gitlab.com?repo=repo&owner=owner', + projectId: 123, + issueIid: 42, + title: 'Computer banks to rule the world', + }, + workspacePath: 'seen2much', + }); + + mockGitlabClient.Issues.edit.mockResolvedValue({ + id: 123, + iid: 42, + web_url: 'https://gitlab.com/hangar18-/issues/42', + }); + + await action.handler({ + ...mockContext, + }); + + expect(mockGitlabClient.Issues.edit).toHaveBeenCalledWith(123, 42, { + title: 'Computer banks to rule the world', + issueType: undefined, + addLabels: undefined, + removeLabels: undefined, + description: undefined, + assigneeIds: [], + confidential: false, + discussionLocked: false, + epicId: undefined, + labels: undefined, + updatedAt: new Date().toISOString(), + dueDate: undefined, + milestoneId: undefined, + weight: undefined, + stateEvent: undefined, + }); + + expect(mockContext.output).toHaveBeenCalledWith('issueId', 123); + expect(mockContext.output).toHaveBeenCalledWith('issueIid', 42); + expect(mockContext.output).toHaveBeenCalledWith( + 'issueUrl', + 'https://gitlab.com/hangar18-/issues/42', + ); + }); + + it('should return a Gitlab issue when called with oAuth Token', async () => { + const mockContext = createMockActionContext({ + input: { + repoUrl: 'gitlab.com?repo=repo&owner=owner', + projectId: 123, + issueIid: 42, + title: 'Computer banks to rule the world', + token: 'myAwesomeToken', + }, + workspacePath: 'seen2much', + }); + + mockGitlabClient.Issues.edit.mockResolvedValue({ + id: 123, + iid: 42, + web_url: 'https://gitlab.com/hangar18-/issues/42', + }); + + await action.handler({ + ...mockContext, + }); + expect(mockGitlabClient.Issues.edit).toHaveBeenCalledWith(123, 42, { + title: 'Computer banks to rule the world', + issueType: undefined, + addLabels: undefined, + removeLabels: undefined, + description: undefined, + assigneeIds: [], + confidential: false, + discussionLocked: false, + epicId: undefined, + labels: undefined, + updatedAt: new Date().toISOString(), + dueDate: undefined, + milestoneId: undefined, + weight: undefined, + stateEvent: undefined, + }); + + expect(mockContext.output).toHaveBeenCalledWith('issueId', 123); + expect(mockContext.output).toHaveBeenCalledWith('issueIid', 42); + expect(mockContext.output).toHaveBeenCalledWith( + 'issueUrl', + 'https://gitlab.com/hangar18-/issues/42', + ); + }); + + it('should return a Gitlab issue when modified with several input params', async () => { + const mockContext = createMockActionContext({ + input: { + repoUrl: 'gitlab.com?repo=repo&owner=owner', + projectId: 123, + issueIid: 42, + issueType: IssueType.INCIDENT, + title: 'Computer banks to rule the world', + description: + 'this issue should kickstart research on instruments to sight the stars', + dueDate: '2025-08-20', + token: 'myAwesomeToken', + assignees: [3, 14, 15], + labels: 'operation:mindcrime', + }, + workspacePath: 'seen2much', + }); + + mockGitlabClient.Issues.edit.mockResolvedValue({ + id: 123, + iid: 42, + web_url: 'https://gitlab.com/hangar18-/issues/42', + }); + + await action.handler({ + ...mockContext, + }); + + expect(mockGitlabClient.Issues.edit).toHaveBeenCalledWith(123, 42, { + title: 'Computer banks to rule the world', + issueType: 'incident', + addLabels: undefined, + removeLabels: undefined, + description: + 'this issue should kickstart research on instruments to sight the stars', + assigneeIds: [3, 14, 15], + confidential: false, + discussionLocked: false, + epicId: undefined, + labels: 'operation:mindcrime', + updatedAt: new Date().toISOString(), + dueDate: '2025-08-20', + milestoneId: undefined, + weight: undefined, + stateEvent: undefined, + }); + + expect(mockContext.output).toHaveBeenCalledWith('issueId', 123); + expect(mockContext.output).toHaveBeenCalledWith('issueIid', 42); + expect(mockContext.output).toHaveBeenCalledWith( + 'issueUrl', + 'https://gitlab.com/hangar18-/issues/42', + ); + }); +}); diff --git a/plugins/scaffolder-backend-module-gitlab/src/actions/gitlabIssueEdit.ts b/plugins/scaffolder-backend-module-gitlab/src/actions/gitlabIssueEdit.ts new file mode 100644 index 0000000..bb3e717 --- /dev/null +++ b/plugins/scaffolder-backend-module-gitlab/src/actions/gitlabIssueEdit.ts @@ -0,0 +1,310 @@ +/* + * Copyright 2023 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { InputError } from '@backstage/errors'; +import { ScmIntegrationRegistry } from '@backstage/integration'; +import { createTemplateAction } from '@backstage/plugin-scaffolder-node'; +import { IssueStateEvent, IssueType } from '../commonGitlabConfig'; +import { examples } from './gitlabIssueEdit.examples'; +import { checkEpicScope, convertDate, getClient, parseRepoUrl } from '../util'; +import { EditIssueOptions, IssueSchema } from '@gitbeaker/rest'; +import { getErrorMessage } from './helpers'; + +/** + * Creates a `gitlab:issue:edit` Scaffolder action. + * + * @param options - Templating configuration. + * @public + */ +export const editGitlabIssueAction = (options: { + integrations: ScmIntegrationRegistry; +}) => { + const { integrations } = options; + return createTemplateAction({ + id: 'gitlab:issue:edit', + description: 'Edit a Gitlab issue.', + examples, + schema: { + input: { + repoUrl: z => + z.string({ + description: `Accepts the format 'gitlab.com?repo=project_name&owner=group_name' where 'project_name' is the repository name and 'group_name' is a group or username`, + }), + token: z => + z + .string({ + description: 'The token to use for authorization to GitLab', + }) + .optional(), + projectId: z => + z.number({ + description: + 'The global ID or URL-encoded path of the project owned by the authenticated user.', + }), + issueIid: z => + z.number({ + description: "The internal ID of a project's issue", + }), + addLabels: z => + z + .string({ + description: + 'Comma-separated label names to add to an issue. If a label does not already exist, this creates a new project label and assigns it to the issue.', + }) + .optional(), + assignees: z => + z + .array(z.number(), { + description: 'IDs of the users to assign the issue to.', + }) + .optional(), + confidential: z => + z + .boolean({ + description: 'Updates an issue to be confidential.', + }) + .optional(), + description: z => + z + .string({ + description: + 'The description of an issue. Limited to 1,048,576 characters.', + }) + .max(1048576) + .optional(), + discussionLocked: z => + z + .boolean({ + description: + 'Flag indicating if the issue discussion is locked. If the discussion is locked only project members can add or edit comments.', + }) + .optional(), + dueDate: z => + z + .string({ + description: + 'The due date. Date time string in the format YYYY-MM-DD, for example 2016-03-11.', + }) + .regex(/^\d{4}-\d{2}-\d{2}$/, 'Invalid date format. Use YYYY-MM-DD') + .optional(), + epicId: z => + z + .number({ + description: + 'ID of the epic to add the issue to. Valid values are greater than or equal to 0.', + }) + .min(0, 'Valid values should be equal or greater than zero') + .optional(), + issueType: z => + z + .nativeEnum(IssueType, { + description: + 'Updates the type of issue. One of issue, incident, test_case or task.', + }) + .optional(), + labels: z => + z + .string({ + description: + 'Comma-separated label names for an issue. Set to an empty string to unassign all labels. If a label does not already exist, this creates a new project label and assigns it to the issue.', + }) + .optional(), + milestoneId: z => + z + .number({ + description: + 'The global ID of a milestone to assign the issue to. Set to 0 or provide an empty value to unassign a milestone', + }) + .optional(), + removeLabels: z => + z + .string({ + description: + 'Comma-separated label names to remove from an issue.', + }) + .optional(), + stateEvent: z => + z + .nativeEnum(IssueStateEvent, { + description: + 'The state event of an issue. To close the issue, use close, and to reopen it, use reopen.', + }) + .optional(), + title: z => + z + .string({ + description: 'The title of an issue.', + }) + .optional(), + updatedAt: z => + z + .string({ + description: + 'When the issue was updated. Date time string, ISO 8601 formatted', + }) + .regex( + /^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d{3})?Z$/, + 'Invalid date format. Use YYYY-MM-DDTHH:mm:ssZ or YYYY-MM-DDTHH:mm:ss.SSSZ', + ) + .optional(), + weight: z => + z + .number({ + description: 'The issue weight', + }) + .min(0, 'Valid values should be equal or greater than zero') + .max(10, 'Valid values should be equal or less than 10') + .optional(), + }, + output: { + issueUrl: z => + z.string({ + description: 'Issue WebUrl', + }), + projectId: z => + z.number({ + description: 'The project id the issue belongs to WebUrl', + }), + issueId: z => + z.number({ + description: 'The issues Id', + }), + issueIid: z => + z.number({ + description: "The issues internal ID of a project's issue", + }), + state: z => + z.string({ + description: 'The state event of an issue', + }), + title: z => + z.string({ + description: 'The title of an issue.', + }), + updatedAt: z => + z.string({ + description: 'The last updated time of the issue.', + }), + }, + }, + async handler(ctx) { + try { + const { + repoUrl, + projectId, + title, + addLabels, + removeLabels, + issueIid, + description, + confidential = false, + assignees = [], + updatedAt = '', + dueDate, + discussionLocked = false, + epicId, + labels, + issueType, + milestoneId, + stateEvent, + weight, + token, + } = ctx.input; + + const { host } = parseRepoUrl(repoUrl, integrations); + const api = getClient({ host, integrations, token }); + + let isEpicScoped = false; + + isEpicScoped = await ctx.checkpoint({ + key: `issue.edit.is.scoped.${projectId}.${epicId}`, + fn: async () => { + if (epicId) { + const scoped = await checkEpicScope(api, projectId, epicId); + + if (scoped) { + ctx.logger.info('Epic is within Project Scope'); + } else { + ctx.logger.warn( + 'Chosen epic is not within the Project Scope. The issue will be created without an associated epic.', + ); + } + return scoped; + } + return false; + }, + }); + + const mappedUpdatedAt = convertDate( + String(updatedAt), + new Date().toISOString(), + ); + + const editIssueOptions: EditIssueOptions = { + addLabels, + assigneeIds: assignees, + confidential, + description, + discussionLocked, + dueDate, + epicId: isEpicScoped ? epicId : undefined, + issueType, + labels, + milestoneId, + removeLabels, + stateEvent, + title, + updatedAt: mappedUpdatedAt, + weight, + }; + + const editedIssue = await ctx.checkpoint({ + key: `issue.edit.${projectId}.${issueIid}`, + fn: async () => { + const response = (await api.Issues.edit( + projectId, + issueIid, + editIssueOptions, + )) as IssueSchema; + + return { + issueId: response.id, + issueUrl: response.web_url, + projectId: response.project_id, + issueIid: response.iid, + title: response.title, + state: response.state, + updatedAt: response.updated_at, + }; + }, + }); + + ctx.output('issueId', editedIssue.issueId); + ctx.output('projectId', editedIssue.projectId); + ctx.output('issueUrl', editedIssue.issueUrl); + ctx.output('issueIid', editedIssue.issueIid); + ctx.output('title', editedIssue.title); + ctx.output('state', editedIssue.state); + ctx.output('updatedAt', editedIssue.updatedAt); + } catch (error: any) { + // Handling other errors + throw new InputError( + `Failed to edit/modify GitLab issue: ${getErrorMessage(error)}`, + ); + } + }, + }); +}; diff --git a/plugins/scaffolder-backend-module-gitlab/src/actions/gitlabMergeRequest.examples.test.ts b/plugins/scaffolder-backend-module-gitlab/src/actions/gitlabMergeRequest.examples.test.ts new file mode 100644 index 0000000..27f39fe --- /dev/null +++ b/plugins/scaffolder-backend-module-gitlab/src/actions/gitlabMergeRequest.examples.test.ts @@ -0,0 +1,355 @@ +/* + * Copyright 2022 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { ConfigReader } from '@backstage/config'; +import { ScmIntegrations } from '@backstage/integration'; +import { TemplateAction } from '@backstage/plugin-scaffolder-node'; +import { createPublishGitlabMergeRequestAction } from './gitlabMergeRequest'; +import { createMockDirectory } from '@backstage/backend-test-utils'; +import { createMockActionContext } from '@backstage/plugin-scaffolder-node-test-utils'; +import { examples } from './gitlabMergeRequest.examples'; +import yaml from 'yaml'; + +const mockGitlabClient = { + Namespaces: { + show: jest.fn(), + }, + Branches: { + create: jest.fn(), + }, + Commits: { + create: jest.fn(() => ({ id: 'mockId' })), + }, + MergeRequests: { + create: jest.fn(async (_: any) => { + return { + default_branch: 'main', + }; + }), + show: jest.fn(async (_: any) => { + return { + default_branch: 'main', + }; + }), + edit: jest.fn(async (_: any) => { + return { + default_branch: 'main', + }; + }), + }, + MergeRequestApprovals: { + allApprovalRules: jest.fn(async (_: any) => { + return [ + { + id: 123, + name: 'rule1', + rule_type: 'regular', + eligible_approvers: [ + { + id: 123, + username: 'John Smith', + }, + { + id: 456, + username: 'Jane Doe', + }, + ], + approvals_required: 1, + users: [], + contains_hidden_groups: false, + report_type: null, + section: null, + source_rule: { approvals_required: 1 }, + overridden: false, + }, + { + id: 456, + name: 'All Members', + rule_type: 'any_approver', + eligible_approvers: [], + approvals_required: 1, + users: [], + groups: [], + contains_hidden_groups: false, + report_type: null, + section: null, + source_rule: { approvals_required: 1 }, + overridden: false, + }, + ]; + }), + }, + Projects: { + create: jest.fn(), + show: jest.fn(async (_: any) => { + return { + default_branch: 'main', + }; + }), + }, + Users: { + current: jest.fn(), + all: jest.fn(async (userOptions: { username: string }) => { + const users: string[] = ['John Smith', 'my-assignee']; + if (!users.includes(userOptions.username)) + throw new Error('user does not exist'); + else + return [ + { + id: 123, + }, + ]; + }), + }, +}; + +jest.mock('@gitbeaker/rest', () => ({ + Gitlab: class { + constructor() { + return mockGitlabClient; + } + }, +})); + +describe('createGitLabMergeRequest', () => { + let instance: TemplateAction; + + const mockDir = createMockDirectory(); + const workspacePath = mockDir.resolve('workspace'); + + beforeEach(() => { + jest.clearAllMocks(); + + mockDir.clear(); + + const config = new ConfigReader({ + integrations: { + gitlab: [ + { + host: 'gitlab.com', + token: 'token', + apiBaseUrl: 'https://api.gitlab.com', + }, + { + host: 'hosted.gitlab.com', + apiBaseUrl: 'https://api.hosted.gitlab.com', + }, + ], + }, + }); + + const integrations = ScmIntegrations.fromConfig(config); + instance = createPublishGitlabMergeRequestAction({ integrations }); + }); + + describe('createGitLabMergeRequestWithAssignee', () => { + it(`Should ${examples[0].description}`, async () => { + mockDir.setContent({ + [workspacePath]: { + source: { 'foo.txt': 'Hello there!' }, + irrelevant: { 'bar.txt': 'Nothing to see here' }, + }, + }); + + const input = yaml.parse(examples[0].example).steps[0].input; + const ctx = createMockActionContext({ input, workspacePath }); + await instance.handler(ctx); + + expect(mockGitlabClient.MergeRequests.create).toHaveBeenCalledWith( + 'owner/repo', + 'new-mr', + 'main', + 'Create my new MR', + { + description: 'This MR is really good', + removeSourceBranch: false, + assigneeId: 123, + }, + ); + }); + + it('assignee is not set when a valid assignee username is not passed in options', async () => { + const input = { + repoUrl: 'gitlab.com?repo=repo&owner=owner', + title: 'Create my new MR', + branchName: 'new-mr', + description: 'This is an important change', + removeSourceBranch: false, + targetPath: 'Subdirectory', + assingnee: 'John Doe', + }; + mockDir.setContent({ + [workspacePath]: { + source: { 'foo.txt': 'Hello there!' }, + irrelevant: { 'bar.txt': 'Nothing to see here' }, + }, + }); + + const ctx = createMockActionContext({ input, workspacePath }); + await instance.handler(ctx); + + expect(mockGitlabClient.MergeRequests.create).toHaveBeenCalledWith( + 'owner/repo', + 'new-mr', + 'main', + 'Create my new MR', + { + description: 'This is an important change', + removeSourceBranch: false, + assigneeId: undefined, + }, + ); + }); + }); + + describe('createGitLabMergeRequestWithRemoveBranch', () => { + it(`Should ${examples[1].description}`, async () => { + const input = yaml.parse(examples[1].example).steps[0].input; + mockDir.setContent({ + [workspacePath]: { + source: { 'foo.txt': 'Hello there!' }, + irrelevant: { 'bar.txt': 'Nothing to see here' }, + }, + }); + + const ctx = createMockActionContext({ input, workspacePath }); + await instance.handler(ctx); + + expect(mockGitlabClient.MergeRequests.create).toHaveBeenCalledWith( + 'owner/repo', + 'new-mr', + 'main', + 'Create my new MR', + { description: 'This MR is really good', removeSourceBranch: true }, + ); + }); + }); + + describe('createGitLabMergeRequestWithSpecifiedTargetBranch', () => { + it(`Should ${examples[2].description}`, async () => { + const input = yaml.parse(examples[2].example).steps[0].input; + mockDir.setContent({ + [workspacePath]: { + source: { 'foo.txt': 'Hello there!' }, + irrelevant: { 'bar.txt': 'Nothing to see here' }, + }, + }); + const ctx = createMockActionContext({ input, workspacePath }); + await instance.handler(ctx); + + expect(mockGitlabClient.Projects.show).not.toHaveBeenCalled(); + expect(mockGitlabClient.Branches.create).toHaveBeenCalledWith( + 'owner/repo', + 'new-mr', + 'test', + ); + expect(mockGitlabClient.MergeRequests.create).toHaveBeenCalledWith( + 'owner/repo', + 'new-mr', + 'test', + 'Create my new MR', + { description: 'This MR is really good', removeSourceBranch: false }, + ); + expect(ctx.output).toHaveBeenCalledWith('targetBranchName', 'test'); + }); + }); + + describe('createGitLabMergeRequestWithCommitAction', () => { + it(`Should ${examples[3].description}`, async () => { + const input = yaml.parse(examples[3].example).steps[0].input; + mockDir.setContent({ + [workspacePath]: { + source: { 'foo.txt': 'Hello there!' }, + irrelevant: { 'bar.txt': 'Nothing to see here' }, + }, + }); + + const ctx = createMockActionContext({ input, workspacePath }); + await instance.handler(ctx); + + expect(mockGitlabClient.Commits.create).toHaveBeenCalledWith( + 'owner/repo', + 'new-mr', + 'Create my new MR', + [ + { + action: 'create', + filePath: 'source/foo.txt', + content: 'SGVsbG8gdGhlcmUh', + encoding: 'base64', + execute_filemode: false, + }, + ], + ); + }); + + it(`Should ${examples[4].description}`, async () => { + const input = yaml.parse(examples[4].example).steps[0].input; + mockDir.setContent({ + [workspacePath]: { + source: { 'foo.txt': 'Hello there!' }, + irrelevant: { 'bar.txt': 'Nothing to see here' }, + }, + }); + + const ctx = createMockActionContext({ input, workspacePath }); + await instance.handler(ctx); + + expect(mockGitlabClient.Commits.create).toHaveBeenCalledWith( + 'owner/repo', + 'new-mr', + 'Create my new MR', + [ + { + action: 'delete', + filePath: 'source/foo.txt', + content: 'SGVsbG8gdGhlcmUh', + encoding: 'base64', + execute_filemode: false, + }, + ], + ); + }); + + it(`Should ${examples[5].description}`, async () => { + const input = yaml.parse(examples[5].example).steps[0].input; + mockDir.setContent({ + [workspacePath]: { + source: { 'foo.txt': 'Hello there!' }, + irrelevant: { 'bar.txt': 'Nothing to see here' }, + }, + }); + + const ctx = createMockActionContext({ input, workspacePath }); + await instance.handler(ctx); + + expect(mockGitlabClient.Commits.create).toHaveBeenCalledWith( + 'owner/repo', + 'new-mr', + 'Create my new MR', + [ + { + action: 'update', + filePath: 'source/foo.txt', + content: 'SGVsbG8gdGhlcmUh', + encoding: 'base64', + execute_filemode: false, + }, + ], + ); + }); + }); +}); diff --git a/plugins/scaffolder-backend-module-gitlab/src/actions/gitlabMergeRequest.examples.ts b/plugins/scaffolder-backend-module-gitlab/src/actions/gitlabMergeRequest.examples.ts new file mode 100644 index 0000000..8bed461 --- /dev/null +++ b/plugins/scaffolder-backend-module-gitlab/src/actions/gitlabMergeRequest.examples.ts @@ -0,0 +1,142 @@ +/* + * Copyright 2023 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { TemplateExample } from '@backstage/plugin-scaffolder-node'; +import yaml from 'yaml'; + +export const examples: TemplateExample[] = [ + { + description: 'Create a merge request with a specific assignee', + example: yaml.stringify({ + steps: [ + { + id: 'createMergeRequest', + action: 'publish:gitlab:merge-request', + name: 'Create a Merge Request', + input: { + repoUrl: 'gitlab.com?repo=repo&owner=owner', + title: 'Create my new MR', + description: 'This MR is really good', + sourcePath: './path/to/my/changes', + branchName: 'new-mr', + assignee: 'my-assignee', + }, + }, + ], + }), + }, + { + description: + 'Create a merge request with removal of source branch after merge', + example: yaml.stringify({ + steps: [ + { + id: 'createMergeRequest', + action: 'publish:gitlab:merge-request', + name: 'Create a Merge Request', + input: { + repoUrl: 'gitlab.com?repo=repo&owner=owner', + title: 'Create my new MR', + description: 'This MR is really good', + sourcePath: './path/to/my/changes', + branchName: 'new-mr', + removeSourceBranch: true, + }, + }, + ], + }), + }, + { + description: 'Create a merge request with a target branch', + example: yaml.stringify({ + steps: [ + { + id: 'createMergeRequest', + action: 'publish:gitlab:merge-request', + name: 'Create a Merge Request', + input: { + repoUrl: 'gitlab.com?repo=repo&owner=owner', + title: 'Create my new MR', + description: 'This MR is really good', + sourcePath: './path/to/my/changes', + branchName: 'new-mr', + targetBranchName: 'test', + targetPath: 'Subdirectory', + }, + }, + ], + }), + }, + { + description: 'Create a merge request with a commit action as create', + example: yaml.stringify({ + steps: [ + { + id: 'createMergeRequest', + action: 'publish:gitlab:merge-request', + name: 'Create a Merge Request', + input: { + repoUrl: 'gitlab.com?repo=repo&owner=owner', + title: 'Create my new MR', + branchName: 'new-mr', + description: 'MR description', + commitAction: 'create', + targetPath: 'source', + }, + }, + ], + }), + }, + { + description: 'Create a merge request with a commit action as delete', + example: yaml.stringify({ + steps: [ + { + id: 'createMergeRequest', + action: 'publish:gitlab:merge-request', + name: 'Create a Merge Request', + input: { + repoUrl: 'gitlab.com?repo=repo&owner=owner', + title: 'Create my new MR', + branchName: 'new-mr', + description: 'MR description', + commitAction: 'delete', + targetPath: 'source', + }, + }, + ], + }), + }, + { + description: 'Create a merge request with a commit action as update', + example: yaml.stringify({ + steps: [ + { + id: 'createMergeRequest', + action: 'publish:gitlab:merge-request', + name: 'Create a Merge Request', + input: { + repoUrl: 'gitlab.com?repo=repo&owner=owner', + title: 'Create my new MR', + branchName: 'new-mr', + description: 'MR description', + commitAction: 'update', + targetPath: 'source', + }, + }, + ], + }), + }, +]; diff --git a/plugins/scaffolder-backend-module-gitlab/src/actions/gitlabMergeRequest.test.ts b/plugins/scaffolder-backend-module-gitlab/src/actions/gitlabMergeRequest.test.ts new file mode 100644 index 0000000..0cc1ca6 --- /dev/null +++ b/plugins/scaffolder-backend-module-gitlab/src/actions/gitlabMergeRequest.test.ts @@ -0,0 +1,1511 @@ +/* + * Copyright 2022 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { ConfigReader } from '@backstage/config'; +import { ScmIntegrations } from '@backstage/integration'; +import { TemplateAction } from '@backstage/plugin-scaffolder-node'; +import { createPublishGitlabMergeRequestAction } from './gitlabMergeRequest'; +import { createMockDirectory } from '@backstage/backend-test-utils'; +import { createMockActionContext } from '@backstage/plugin-scaffolder-node-test-utils'; + +const mockGitlabClient = { + Namespaces: { + show: jest.fn(), + }, + Branches: { + create: jest.fn(), + show: jest.fn(async (_repoID: string | number, name: string) => { + if (['main', 'existing-branch'].includes(name)) { + return { + name, + merged: name === 'main', + protected: name === 'main', + default: name === 'main', + developers_can_push: name !== 'main', + developers_can_merge: name !== 'main', + can_push: name !== 'main', + web_url: `https://foo.bar.baz/owner/repo/-/tree/${name}`, + commit: { message: 'last change' }, + }; + } + throw new Error(`Unknown branch ${name}`); + }), + }, + Commits: { + create: jest.fn(() => ({ id: 'mockId' })), + }, + MergeRequests: { + create: jest.fn(async (repoId: string) => { + if (repoId === 'owner/repo-without-approval-rule-license') { + return { + iid: 6, + }; + } + if (repoId === 'owner/repo-without-approvals') { + return { + iid: 5, + }; + } + return { + default_branch: 'main', + iid: 4, + }; + }), + show: jest.fn(async (repoId: string, iid: number) => { + if (repoId === 'owner/repo-without-approval-rule-license' && iid === 6) { + return { + iid: 6, + }; + } + if (repoId === 'owner/repo' && iid === 4) { + return { + iid: 4, + }; + } else if (repoId === 'owner/repo-without-approvals' && iid === 5) { + return { + iid: 5, + }; + } + return { + default_branch: 'main', + }; + }), + edit: jest.fn(async (_: any) => { + return { + default_branch: 'main', + }; + }), + }, + MergeRequestApprovals: { + allApprovalRules: jest.fn( + async (repoId: string, options: { mergerequestIId: number }) => { + if ( + repoId === 'owner/repo-without-approvals' && + options.mergerequestIId === 5 + ) { + return []; + } + if ( + repoId === 'owner/repo-without-approval-rule-license' && + options.mergerequestIId === 6 + ) { + throw new Error('Not Found', { + cause: { + description: '404 Not found', + }, + }); + } + return [ + { + id: 123, + name: 'rule1', + rule_type: 'regular', + eligible_approvers: [ + { + id: 234, + username: 'Bob Vance', + }, + { + id: 345, + username: 'Dina Fox', + }, + ], + approvals_required: 1, + users: [], + contains_hidden_groups: false, + report_type: null, + section: null, + source_rule: { approvals_required: 1 }, + overridden: false, + }, + { + id: 456, + name: 'All Members', + rule_type: 'any_approver', + eligible_approvers: [], + approvals_required: 1, + users: [], + groups: [], + contains_hidden_groups: false, + report_type: null, + section: null, + source_rule: { approvals_required: 1 }, + overridden: false, + }, + ]; + }, + ), + }, + Projects: { + create: jest.fn(), + show: jest.fn(async (_: any) => { + return { + default_branch: 'main', + }; + }), + }, + Users: { + all: jest.fn(async (userOptions: { username: string }) => { + switch (userOptions.username) { + case 'John Smith': + return [ + { + id: 123, + }, + ]; + case 'Bob Vance': + return [ + { + id: 234, + }, + ]; + case 'Jane Doe': + return [ + { + id: 456, + }, + ]; + default: + throw new Error('user does not exist'); + } + }), + }, + Repositories: { + allRepositoryTrees: jest.fn( + async ( + repoID: string | number, + options: { ref: string; recursive: boolean; path: string | undefined }, + ) => { + if (repoID !== 'owner/repo') throw new Error('repo does not exist'); + if (options.recursive === false) throw new Error('malformed options'); + else { + return [ + { + id: 'a1e8f8d745cc87e3a9248358d9352bb7f9a0aeba', + name: 'auto.txt', + type: 'blob', + path: 'source/auto.txt', + mode: '040000', + }, + ]; + } + }, + ), + }, + RepositoryFiles: { + show: jest.fn( + async (repoID: string | number, filePath: string, ref: string) => { + if (repoID !== 'owner/repo') throw new Error('repo does not exist'); + if (filePath !== 'source/auto.txt') + throw new Error('filePath does not exist'); + return { + file_name: 'auto.txt', + file_path: 'source/auto.txt', + size: 11, + encoding: 'base64', + content: 'Zm9vLWJhci1iYXo=', + content_sha256: + '269dce1a5bb90188b2d9cf542a7c30e410c7d8251e34a97bfea56062df51ae23', + ref, + blob_id: 'a1e8f8d745cc87e3a9248358d9352bb7f9a0aeba', + commit_id: 'd5a3ff139356ce33e37e73add446f16869741b50', + last_commit_id: '570e7b2abdd848b95f2f578043fc23bd6f6fd24d', + }; + }, + ), + }, +}; + +jest.mock('@gitbeaker/rest', () => ({ + Gitlab: class { + constructor() { + return mockGitlabClient; + } + }, +})); + +describe('createGitLabMergeRequest', () => { + let instance: TemplateAction; + + const mockDir = createMockDirectory(); + const workspacePath = mockDir.resolve('workspace'); + + beforeEach(() => { + jest.clearAllMocks(); + + mockDir.clear(); + + const config = new ConfigReader({ + integrations: { + gitlab: [ + { + host: 'gitlab.com', + token: 'token', + apiBaseUrl: 'https://api.gitlab.com', + }, + { + host: 'hosted.gitlab.com', + apiBaseUrl: 'https://api.hosted.gitlab.com', + }, + ], + }, + }); + + const integrations = ScmIntegrations.fromConfig(config); + instance = createPublishGitlabMergeRequestAction({ integrations }); + }); + + describe('createGitLabMergeRequestWithSpecifiedTargetBranch', () => { + it('removeSourceBranch is false by default when not passed in options', async () => { + const input = { + repoUrl: 'gitlab.com?repo=repo&owner=owner', + title: 'Create my new MR', + branchName: 'new-mr', + targetBranchName: 'test', + description: 'This MR is really good', + targetPath: 'Subdirectory', + }; + mockDir.setContent({ + [workspacePath]: { + source: { 'foo.txt': 'Hello there!' }, + irrelevant: { 'bar.txt': 'Nothing to see here' }, + }, + }); + const ctx = createMockActionContext({ + input, + workspacePath, + }); + await instance.handler(ctx); + + expect(mockGitlabClient.Projects.show).not.toHaveBeenCalled(); + expect(mockGitlabClient.Branches.create).toHaveBeenCalledWith( + 'owner/repo', + 'new-mr', + 'test', + ); + expect(mockGitlabClient.Commits.create).not.toHaveBeenCalled(); + expect(mockGitlabClient.MergeRequests.create).toHaveBeenCalledWith( + 'owner/repo', + 'new-mr', + 'test', + 'Create my new MR', + { description: 'This MR is really good', removeSourceBranch: false }, + ); + expect(ctx.output).toHaveBeenCalledWith('targetBranchName', 'test'); + }); + }); + + describe('createGitLabMergeRequestWithoutRemoveBranch', () => { + it('removeSourceBranch is false by default when not passed in options', async () => { + const input = { + repoUrl: 'gitlab.com?repo=repo&owner=owner', + title: 'Create my new MR', + branchName: 'new-mr', + description: 'This MR is really good', + targetPath: 'Subdirectory', + }; + mockDir.setContent({ + [workspacePath]: { + source: { 'foo.txt': 'Hello there!' }, + irrelevant: { 'bar.txt': 'Nothing to see here' }, + }, + }); + const ctx = createMockActionContext({ input, workspacePath }); + await instance.handler(ctx); + + expect(mockGitlabClient.Projects.show).toHaveBeenCalledWith('owner/repo'); + expect(mockGitlabClient.Branches.create).toHaveBeenCalledWith( + 'owner/repo', + 'new-mr', + 'main', + ); + expect(mockGitlabClient.Commits.create).not.toHaveBeenCalled(); + expect(mockGitlabClient.MergeRequests.create).toHaveBeenCalledWith( + 'owner/repo', + 'new-mr', + 'main', + 'Create my new MR', + { description: 'This MR is really good', removeSourceBranch: false }, + ); + expect(ctx.output).toHaveBeenCalledWith('targetBranchName', 'main'); + }); + }); + + describe('createGitLabMergeRequestWithRemoveBranch', () => { + it('removeSourceBranch is true when true is passed in options', async () => { + const input = { + repoUrl: 'gitlab.com?repo=repo&owner=owner', + title: 'Create my new MR', + branchName: 'new-mr', + description: 'MR description', + removeSourceBranch: true, + targetPath: 'Subdirectory', + }; + mockDir.setContent({ + [workspacePath]: { + source: { 'foo.txt': 'Hello there!' }, + irrelevant: { 'bar.txt': 'Nothing to see here' }, + }, + }); + + const ctx = createMockActionContext({ input, workspacePath }); + await instance.handler(ctx); + + expect(mockGitlabClient.Branches.create).toHaveBeenCalledWith( + 'owner/repo', + 'new-mr', + 'main', + ); + expect(mockGitlabClient.Commits.create).not.toHaveBeenCalled(); + expect(mockGitlabClient.MergeRequests.create).toHaveBeenCalledWith( + 'owner/repo', + 'new-mr', + 'main', + 'Create my new MR', + { description: 'MR description', removeSourceBranch: true }, + ); + }); + + it('removeSourceBranch is false when false is passed in options', async () => { + const input = { + repoUrl: 'gitlab.com?repo=repo&owner=owner', + title: 'Create my new MR', + branchName: 'new-mr', + description: 'other MR description', + removeSourceBranch: false, + targetPath: 'Subdirectory', + }; + mockDir.setContent({ + [workspacePath]: { + source: { 'foo.txt': 'Hello there!' }, + irrelevant: { 'bar.txt': 'Nothing to see here' }, + }, + }); + + const ctx = createMockActionContext({ input, workspacePath }); + await instance.handler(ctx); + + expect(mockGitlabClient.Branches.create).toHaveBeenCalledWith( + 'owner/repo', + 'new-mr', + 'main', + ); + expect(mockGitlabClient.Commits.create).not.toHaveBeenCalled(); + expect(mockGitlabClient.MergeRequests.create).toHaveBeenCalledWith( + 'owner/repo', + 'new-mr', + 'main', + 'Create my new MR', + { + description: 'other MR description', + removeSourceBranch: false, + }, + ); + }); + }); + + describe('createGitLabMergeRequestWithAssignee', () => { + it('assignee is set correctly when a valid assignee username is passed in options', async () => { + const input = { + repoUrl: 'gitlab.com?repo=repo&owner=owner', + title: 'Create my new MR', + branchName: 'new-mr', + description: 'This is an important change', + removeSourceBranch: false, + targetPath: 'Subdirectory', + assignee: 'John Smith', + }; + mockDir.setContent({ + [workspacePath]: { + source: { 'foo.txt': 'Hello there!' }, + irrelevant: { 'bar.txt': 'Nothing to see here' }, + }, + }); + + const ctx = createMockActionContext({ input, workspacePath }); + await instance.handler(ctx); + + expect(mockGitlabClient.Branches.create).toHaveBeenCalledWith( + 'owner/repo', + 'new-mr', + 'main', + ); + expect(mockGitlabClient.Commits.create).not.toHaveBeenCalled(); + expect(mockGitlabClient.MergeRequests.create).toHaveBeenCalledWith( + 'owner/repo', + 'new-mr', + 'main', + 'Create my new MR', + { + description: 'This is an important change', + removeSourceBranch: false, + assigneeId: 123, + }, + ); + }); + + it('assignee is not set when a valid assignee username is not passed in options', async () => { + const input = { + repoUrl: 'gitlab.com?repo=repo&owner=owner', + title: 'Create my new MR', + branchName: 'new-mr', + description: 'This is an important change', + removeSourceBranch: false, + targetPath: 'Subdirectory', + assingnee: 'John Doe', + }; + mockDir.setContent({ + [workspacePath]: { + source: { 'foo.txt': 'Hello there!' }, + irrelevant: { 'bar.txt': 'Nothing to see here' }, + }, + }); + + const ctx = createMockActionContext({ input, workspacePath }); + await instance.handler(ctx); + + expect(mockGitlabClient.Branches.create).toHaveBeenCalledWith( + 'owner/repo', + 'new-mr', + 'main', + ); + expect(mockGitlabClient.Commits.create).not.toHaveBeenCalled(); + expect(mockGitlabClient.MergeRequests.create).toHaveBeenCalledWith( + 'owner/repo', + 'new-mr', + 'main', + 'Create my new MR', + { + description: 'This is an important change', + removeSourceBranch: false, + assigneeId: undefined, + }, + ); + }); + }); + describe('createGitLabMergeRequestWithoutAssignee', () => { + it('merge request is successfully created without an assignee when assignee username is not passed in options', async () => { + const input = { + repoUrl: 'gitlab.com?repo=repo&owner=owner', + title: 'Create my new MR', + branchName: 'new-mr', + description: 'This is an important change', + removeSourceBranch: false, + targetPath: 'Subdirectory', + }; + mockDir.setContent({ + [workspacePath]: { + source: { 'foo.txt': 'Hello there!' }, + irrelevant: { 'bar.txt': 'Nothing to see here' }, + }, + }); + + const ctx = createMockActionContext({ input, workspacePath }); + await instance.handler(ctx); + + expect(mockGitlabClient.Branches.create).toHaveBeenCalledWith( + 'owner/repo', + 'new-mr', + 'main', + ); + expect(mockGitlabClient.Commits.create).not.toHaveBeenCalled(); + expect(mockGitlabClient.MergeRequests.create).toHaveBeenCalledWith( + 'owner/repo', + 'new-mr', + 'main', + 'Create my new MR', + { + description: 'This is an important change', + removeSourceBranch: false, + }, + ); + }); + + it('merge request is successfully created without an assignee when assignee is not found in Gitlab', async () => { + const input = { + repoUrl: 'gitlab.com?repo=repo&owner=owner', + title: 'Create my new MR', + branchName: 'new-mr', + description: 'This is an important change', + removeSourceBranch: false, + targetPath: 'Subdirectory', + assignee: 'Unknown', + }; + mockDir.setContent({ + [workspacePath]: { + source: { 'foo.txt': 'Hello there!' }, + irrelevant: { 'bar.txt': 'Nothing to see here' }, + }, + }); + + const ctx = createMockActionContext({ input, workspacePath }); + await instance.handler(ctx); + + expect(mockGitlabClient.Branches.create).toHaveBeenCalledWith( + 'owner/repo', + 'new-mr', + 'main', + ); + expect(mockGitlabClient.Commits.create).not.toHaveBeenCalled(); + expect(mockGitlabClient.MergeRequests.create).toHaveBeenCalledWith( + 'owner/repo', + 'new-mr', + 'main', + 'Create my new MR', + { + description: 'This is an important change', + removeSourceBranch: false, + }, + ); + }); + + it('use workspacePath as default when no sourcePath or targetPath is specified', async () => { + const input = { + repoUrl: 'gitlab.com?repo=repo&owner=owner', + title: 'Create my new MR', + branchName: 'new-mr', + description: 'This MR is really good', + }; + mockDir.setContent({ + [workspacePath]: { + source: { 'foo.txt': 'Hello there!' }, + irrelevant: { 'bar.txt': 'Nothing to see here' }, + }, + }); + const ctx = createMockActionContext({ input, workspacePath }); + await instance.handler(ctx); + + expect(mockGitlabClient.Branches.create).toHaveBeenCalledWith( + 'owner/repo', + 'new-mr', + 'main', + ); + expect(mockGitlabClient.Commits.create).toHaveBeenCalledWith( + 'owner/repo', + 'new-mr', + 'Create my new MR', + expect.arrayContaining([ + { + action: 'create', + filePath: 'irrelevant/bar.txt', + encoding: 'base64', + content: 'Tm90aGluZyB0byBzZWUgaGVyZQ==', + execute_filemode: false, + }, + { + action: 'create', + filePath: 'source/foo.txt', + encoding: 'base64', + content: 'SGVsbG8gdGhlcmUh', + execute_filemode: false, + }, + ]), + ); + expect(mockGitlabClient.MergeRequests.create).toHaveBeenCalledWith( + 'owner/repo', + 'new-mr', + 'main', + 'Create my new MR', + { + description: 'This MR is really good', + removeSourceBranch: false, + }, + ); + }); + }); + + describe('createGitlabMergeRequestWithReviewers', () => { + it('no dedicated reviewers are set when a no reviewer are passed in options but mr approval reviewers are set when flag activated', async () => { + const input = { + repoUrl: 'gitlab.com?repo=repo&owner=owner', + title: 'Create my new MR', + branchName: 'new-mr', + description: 'This is an important change', + removeSourceBranch: false, + targetPath: 'Subdirectory', + assignee: 'John Smith', + assignReviewersFromApprovalRules: true, + }; + mockDir.setContent({ + [workspacePath]: { + source: { 'foo.txt': 'Hello there!' }, + irrelevant: { 'bar.txt': 'Nothing to see here' }, + }, + }); + + const ctx = createMockActionContext({ input, workspacePath }); + await instance.handler(ctx); + + expect(mockGitlabClient.Branches.create).toHaveBeenCalledWith( + 'owner/repo', + 'new-mr', + 'main', + ); + expect(mockGitlabClient.Commits.create).not.toHaveBeenCalled(); + expect(mockGitlabClient.MergeRequests.create).toHaveBeenCalledWith( + 'owner/repo', + 'new-mr', + 'main', + 'Create my new MR', + { + description: 'This is an important change', + removeSourceBranch: false, + assigneeId: 123, + }, + ); + expect( + mockGitlabClient.MergeRequestApprovals.allApprovalRules, + ).toHaveBeenCalled(); + expect(mockGitlabClient.MergeRequests.edit).toHaveBeenCalledWith( + 'owner/repo', + 4, + { + reviewerIds: [234, 345], // Approval Rule Members + }, + ); + }); + + it('reviewer is set correctly when a valid reviewer username is passed in options in combination with MR approval rules', async () => { + const input = { + repoUrl: 'gitlab.com?repo=repo&owner=owner', + title: 'Create my new MR', + branchName: 'new-mr', + description: 'This is an important change', + removeSourceBranch: false, + targetPath: 'Subdirectory', + assignee: 'John Smith', + reviewers: ['Jane Doe', 'Bob Vance'], + assignReviewersFromApprovalRules: true, + }; + mockDir.setContent({ + [workspacePath]: { + source: { 'foo.txt': 'Hello there!' }, + irrelevant: { 'bar.txt': 'Nothing to see here' }, + }, + }); + + const ctx = createMockActionContext({ input, workspacePath }); + await instance.handler(ctx); + + expect(mockGitlabClient.Branches.create).toHaveBeenCalledWith( + 'owner/repo', + 'new-mr', + 'main', + ); + expect(mockGitlabClient.Commits.create).not.toHaveBeenCalled(); + expect(mockGitlabClient.MergeRequests.create).toHaveBeenCalledWith( + 'owner/repo', + 'new-mr', + 'main', + 'Create my new MR', + { + description: 'This is an important change', + removeSourceBranch: false, + assigneeId: 123, + reviewerIds: [456, 234], // Jane Doe and Bob Vance + }, + ); + expect( + mockGitlabClient.MergeRequestApprovals.allApprovalRules, + ).toHaveBeenCalled(); + expect(mockGitlabClient.MergeRequests.edit).toHaveBeenCalledWith( + 'owner/repo', + 4, + { + reviewerIds: [234, 345, 456], // Approval Rule Members + Jane Doe (individual reviewer) but no duplicates (Bob Vance) + }, + ); + }); + + it('reviewer is set correctly when a valid reviewer username is passed in options in combination with deactivated approval rules', async () => { + const input = { + repoUrl: 'gitlab.com?repo=repo&owner=owner', + title: 'Create my new MR', + branchName: 'new-mr', + description: 'This is an important change', + removeSourceBranch: false, + targetPath: 'Subdirectory', + assignee: 'John Smith', + reviewers: ['Jane Doe', 'Bob Vance'], + assignReviewersFromApprovalRules: false, + }; + mockDir.setContent({ + [workspacePath]: { + source: { 'foo.txt': 'Hello there!' }, + irrelevant: { 'bar.txt': 'Nothing to see here' }, + }, + }); + + const ctx = createMockActionContext({ input, workspacePath }); + await instance.handler(ctx); + + expect(mockGitlabClient.Branches.create).toHaveBeenCalledWith( + 'owner/repo', + 'new-mr', + 'main', + ); + expect(mockGitlabClient.Commits.create).not.toHaveBeenCalled(); + expect(mockGitlabClient.MergeRequests.create).toHaveBeenCalledWith( + 'owner/repo', + 'new-mr', + 'main', + 'Create my new MR', + { + description: 'This is an important change', + removeSourceBranch: false, + assigneeId: 123, + reviewerIds: [456, 234], // Jane Doe and Bob Vance + }, + ); + expect( + mockGitlabClient.MergeRequestApprovals.allApprovalRules, + ).not.toHaveBeenCalled(); + expect(mockGitlabClient.MergeRequests.edit).not.toHaveBeenCalled(); + }); + + it('reviewer is set correctly when a valid reviewer username is passed in options and no MR rules exist and approval rules are activated', async () => { + const input = { + repoUrl: 'gitlab.com?repo=repo-without-approvals&owner=owner', + title: 'Create my new MR', + branchName: 'new-mr', + description: 'This is an important change', + removeSourceBranch: false, + targetPath: 'Subdirectory', + assignee: 'John Smith', + reviewers: ['Jane Doe', 'Bob Vance'], + assignReviewersFromApprovalRules: true, + }; + mockDir.setContent({ + [workspacePath]: { + source: { 'foo.txt': 'Hello there!' }, + irrelevant: { 'bar.txt': 'Nothing to see here' }, + }, + }); + + const ctx = createMockActionContext({ input, workspacePath }); + await instance.handler(ctx); + + expect(mockGitlabClient.Branches.create).toHaveBeenCalledWith( + 'owner/repo-without-approvals', + 'new-mr', + 'main', + ); + expect(mockGitlabClient.Commits.create).not.toHaveBeenCalled(); + expect(mockGitlabClient.MergeRequests.create).toHaveBeenCalledWith( + 'owner/repo-without-approvals', + 'new-mr', + 'main', + 'Create my new MR', + { + description: 'This is an important change', + removeSourceBranch: false, + assigneeId: 123, + reviewerIds: [456, 234], // Jane Doe and Bob Vance + }, + ); + expect( + mockGitlabClient.MergeRequestApprovals.allApprovalRules, + ).toHaveBeenCalledWith('owner/repo-without-approvals', { + mergerequestIId: 5, + }); + expect(mockGitlabClient.MergeRequests.edit).not.toHaveBeenCalled(); + }); + + it('reviewer is set correctly when a valid reviewer username is passed in options and MR rules are not included in the Gitlab license (404)', async () => { + const input = { + repoUrl: + 'gitlab.com?repo=repo-without-approval-rule-license&owner=owner', + title: 'Create my new MR', + branchName: 'new-mr', + description: 'This is an important change', + removeSourceBranch: false, + targetPath: 'Subdirectory', + assignee: 'John Smith', + reviewers: ['Jane Doe', 'Bob Vance'], + assignReviewersFromApprovalRules: true, + }; + mockDir.setContent({ + [workspacePath]: { + source: { 'foo.txt': 'Hello there!' }, + irrelevant: { 'bar.txt': 'Nothing to see here' }, + }, + }); + + const ctx = createMockActionContext({ input, workspacePath }); + ctx.logger.warn = jest.fn(); + await instance.handler(ctx); + + expect(mockGitlabClient.Branches.create).toHaveBeenCalledWith( + 'owner/repo-without-approval-rule-license', + 'new-mr', + 'main', + ); + expect(mockGitlabClient.Commits.create).not.toHaveBeenCalled(); + expect(mockGitlabClient.MergeRequests.create).toHaveBeenCalledWith( + 'owner/repo-without-approval-rule-license', + 'new-mr', + 'main', + 'Create my new MR', + { + description: 'This is an important change', + removeSourceBranch: false, + assigneeId: 123, + reviewerIds: [456, 234], // Jane Doe and Bob Vance + }, + ); + expect( + mockGitlabClient.MergeRequestApprovals.allApprovalRules, + ).toHaveBeenCalledWith('owner/repo-without-approval-rule-license', { + mergerequestIId: 6, + }); + expect(mockGitlabClient.MergeRequests.edit).not.toHaveBeenCalled(); + expect(ctx.logger.warn).toHaveBeenCalledWith( + 'Failed to retrieve approval rules for MR 6: Error: Not Found. Proceeding with MR creation without reviewers from approval rules.', + ); + expect(ctx.output).toHaveBeenCalledWith('targetBranchName', 'main'); // This ensures that the MR scaffolder step finishes successfully and all errors are caught. + }); + + it('assignee is not set when a valid assignee username is not passed in options', async () => { + const input = { + repoUrl: 'gitlab.com?repo=repo&owner=owner', + title: 'Create my new MR', + branchName: 'new-mr', + description: 'This is an important change', + removeSourceBranch: false, + targetPath: 'Subdirectory', + reviewers: ['John Doe'], + }; + mockDir.setContent({ + [workspacePath]: { + source: { 'foo.txt': 'Hello there!' }, + irrelevant: { 'bar.txt': 'Nothing to see here' }, + }, + }); + + const ctx = createMockActionContext({ input, workspacePath }); + await instance.handler(ctx); + + expect(mockGitlabClient.Branches.create).toHaveBeenCalledWith( + 'owner/repo', + 'new-mr', + 'main', + ); + expect(mockGitlabClient.Commits.create).not.toHaveBeenCalled(); + expect(mockGitlabClient.MergeRequests.create).toHaveBeenCalledWith( + 'owner/repo', + 'new-mr', + 'main', + 'Create my new MR', + { + description: 'This is an important change', + removeSourceBranch: false, + assigneeId: undefined, + reviewerIds: [], + }, + ); + }); + }); + + describe('createGitLabMergeRequestWithoutCommitAction', () => { + it('default commitAction is auto', async () => { + const input = { + repoUrl: 'gitlab.com?repo=repo&owner=owner', + title: 'Create my new MR', + branchName: 'new-mr', + description: 'This MR is really good', + targetPath: 'source', + }; + mockDir.setContent({ + [workspacePath]: { + source: { 'foo.txt': 'Hello there!', 'auto.txt': 'File exist' }, + irrelevant: { 'bar.txt': 'Nothing to see here' }, + }, + }); + const ctx = createMockActionContext({ input, workspacePath }); + await instance.handler(ctx); + + expect(mockGitlabClient.Branches.create).toHaveBeenCalledWith( + 'owner/repo', + 'new-mr', + 'main', + ); + expect(mockGitlabClient.Commits.create).toHaveBeenCalledWith( + 'owner/repo', + 'new-mr', + 'Create my new MR', + expect.arrayContaining([ + { + action: 'update', + filePath: 'source/auto.txt', + content: 'RmlsZSBleGlzdA==', + encoding: 'base64', + execute_filemode: false, + }, + { + action: 'create', + filePath: 'source/foo.txt', + content: 'SGVsbG8gdGhlcmUh', + encoding: 'base64', + execute_filemode: false, + }, + ]), + ); + expect(mockGitlabClient.MergeRequests.create).toHaveBeenCalledWith( + 'owner/repo', + 'new-mr', + 'main', + 'Create my new MR', + { + description: 'This MR is really good', + removeSourceBranch: false, + }, + ); + }); + }); + + describe('createGitLabMergeRequestWithCommitAction', () => { + it('commitAction is create when create is passed in options', async () => { + const input = { + repoUrl: 'gitlab.com?repo=repo&owner=owner', + title: 'Create my new MR', + branchName: 'new-mr', + description: 'MR description', + commitAction: 'create', + targetPath: 'source', + }; + mockDir.setContent({ + [workspacePath]: { + source: { 'foo.txt': 'Hello there!' }, + irrelevant: { 'bar.txt': 'Nothing to see here' }, + }, + }); + + const ctx = createMockActionContext({ input, workspacePath }); + await instance.handler(ctx); + + expect(mockGitlabClient.Branches.create).toHaveBeenCalledWith( + 'owner/repo', + 'new-mr', + 'main', + ); + expect(mockGitlabClient.Commits.create).toHaveBeenCalledWith( + 'owner/repo', + 'new-mr', + 'Create my new MR', + [ + { + action: 'create', + filePath: 'source/foo.txt', + content: 'SGVsbG8gdGhlcmUh', + encoding: 'base64', + execute_filemode: false, + }, + ], + ); + expect(mockGitlabClient.MergeRequests.create).toHaveBeenCalledWith( + 'owner/repo', + 'new-mr', + 'main', + 'Create my new MR', + { + description: 'MR description', + removeSourceBranch: false, + }, + ); + }); + + it('commitAction is update when update is passed in options', async () => { + const input = { + repoUrl: 'gitlab.com?repo=repo&owner=owner', + title: 'Create my new MR', + branchName: 'new-mr', + description: 'MR description', + commitAction: 'update', + targetPath: 'source', + }; + mockDir.setContent({ + [workspacePath]: { + source: { 'foo.txt': 'Hello there!' }, + irrelevant: { 'bar.txt': 'Nothing to see here' }, + }, + }); + + const ctx = createMockActionContext({ input, workspacePath }); + await instance.handler(ctx); + + expect(mockGitlabClient.Branches.create).toHaveBeenCalledWith( + 'owner/repo', + 'new-mr', + 'main', + ); + expect(mockGitlabClient.Commits.create).toHaveBeenCalledWith( + 'owner/repo', + 'new-mr', + 'Create my new MR', + [ + { + action: 'update', + filePath: 'source/foo.txt', + content: 'SGVsbG8gdGhlcmUh', + encoding: 'base64', + execute_filemode: false, + }, + ], + ); + expect(mockGitlabClient.MergeRequests.create).toHaveBeenCalledWith( + 'owner/repo', + 'new-mr', + 'main', + 'Create my new MR', + { + description: 'MR description', + removeSourceBranch: false, + }, + ); + }); + + it('commitAction is auto when auto is passed in options', async () => { + const input = { + repoUrl: 'gitlab.com?repo=repo&owner=owner', + title: 'Create my new MR', + branchName: 'new-mr', + description: 'MR description', + commitAction: 'auto', + }; + mockDir.setContent({ + [workspacePath]: { + source: { 'foo.txt': 'Hello there!', 'auto.txt': 'File exist' }, + }, + }); + + const ctx = createMockActionContext({ input, workspacePath }); + await instance.handler(ctx); + + expect(mockGitlabClient.Branches.create).toHaveBeenCalledWith( + 'owner/repo', + 'new-mr', + 'main', + ); + expect(mockGitlabClient.Commits.create).toHaveBeenCalledWith( + 'owner/repo', + 'new-mr', + 'Create my new MR', + expect.arrayContaining([ + { + action: 'update', + filePath: 'source/auto.txt', + content: 'RmlsZSBleGlzdA==', + encoding: 'base64', + execute_filemode: false, + }, + { + action: 'create', + filePath: 'source/foo.txt', + content: 'SGVsbG8gdGhlcmUh', + encoding: 'base64', + execute_filemode: false, + }, + ]), + ); + expect(mockGitlabClient.MergeRequests.create).toHaveBeenCalledWith( + 'owner/repo', + 'new-mr', + 'main', + 'Create my new MR', + { + description: 'MR description', + removeSourceBranch: false, + }, + ); + }); + + it('commitAction is auto when auto is passed in options with targetPath', async () => { + const input = { + repoUrl: 'gitlab.com?repo=repo&owner=owner', + title: 'Create my new MR', + branchName: 'new-mr', + description: 'MR description', + commitAction: 'auto', + targetPath: 'source', + }; + mockDir.setContent({ + [workspacePath]: { + source: { 'foo.txt': 'Hello there!', 'auto.txt': 'File exist' }, + irrelevant: {}, + }, + }); + + const ctx = createMockActionContext({ input, workspacePath }); + await instance.handler(ctx); + + expect(mockGitlabClient.Branches.create).toHaveBeenCalledWith( + 'owner/repo', + 'new-mr', + 'main', + ); + expect(mockGitlabClient.Commits.create).toHaveBeenCalledWith( + 'owner/repo', + 'new-mr', + 'Create my new MR', + expect.arrayContaining([ + { + action: 'update', + filePath: 'source/auto.txt', + content: 'RmlsZSBleGlzdA==', + encoding: 'base64', + execute_filemode: false, + }, + { + action: 'create', + filePath: 'source/foo.txt', + content: 'SGVsbG8gdGhlcmUh', + encoding: 'base64', + execute_filemode: false, + }, + ]), + ); + expect(mockGitlabClient.MergeRequests.create).toHaveBeenCalledWith( + 'owner/repo', + 'new-mr', + 'main', + 'Create my new MR', + { + description: 'MR description', + removeSourceBranch: false, + }, + ); + }); + + it('commitAction is delete when delete is passed in options', async () => { + const input = { + repoUrl: 'gitlab.com?repo=repo&owner=owner', + title: 'Create my new MR', + branchName: 'new-mr', + description: 'other MR description', + commitAction: 'delete', + targetPath: 'source', + }; + mockDir.setContent({ + [workspacePath]: { + source: { 'foo.txt': 'Hello there!' }, + irrelevant: { 'bar.txt': 'Nothing to see here' }, + }, + }); + + const ctx = createMockActionContext({ input, workspacePath }); + await instance.handler(ctx); + + expect(mockGitlabClient.Branches.create).toHaveBeenCalledWith( + 'owner/repo', + 'new-mr', + 'main', + ); + expect(mockGitlabClient.Commits.create).toHaveBeenCalledWith( + 'owner/repo', + 'new-mr', + 'Create my new MR', + [ + { + action: 'delete', + filePath: 'source/foo.txt', + content: 'SGVsbG8gdGhlcmUh', + encoding: 'base64', + execute_filemode: false, + }, + ], + ); + expect(mockGitlabClient.MergeRequests.create).toHaveBeenCalledWith( + 'owner/repo', + 'new-mr', + 'main', + 'Create my new MR', + { + description: 'other MR description', + removeSourceBranch: false, + }, + ); + }); + it('commitAction skip skips commit', async () => { + const input = { + repoUrl: 'gitlab.com?repo=repo&owner=owner', + title: 'Create my new MR', + branchName: 'new-mr', + description: 'MR description', + commitAction: 'skip', + }; + const ctx = createMockActionContext({ input, workspacePath }); + await instance.handler(ctx); + + expect(mockGitlabClient.Branches.create).toHaveBeenCalledWith( + 'owner/repo', + 'new-mr', + 'main', + ); + expect(mockGitlabClient.Commits.create).not.toHaveBeenCalled(); + expect(mockGitlabClient.MergeRequests.create).toHaveBeenCalledWith( + 'owner/repo', + 'new-mr', + 'main', + 'Create my new MR', + { + description: 'MR description', + removeSourceBranch: false, + }, + ); + }); + it('commitAction skip reuses existing branch', async () => { + const input = { + repoUrl: 'gitlab.com?repo=repo&owner=owner', + title: 'Create my new MR', + branchName: 'existing-branch', + description: 'MR description', + commitAction: 'skip', + }; + const ctx = createMockActionContext({ input, workspacePath }); + await instance.handler(ctx); + + expect(mockGitlabClient.Branches.show).toHaveBeenCalledWith( + 'owner/repo', + 'existing-branch', + ); + expect(mockGitlabClient.Branches.create).not.toHaveBeenCalled(); + expect(mockGitlabClient.Commits.create).not.toHaveBeenCalled(); + expect(mockGitlabClient.MergeRequests.create).toHaveBeenCalledWith( + 'owner/repo', + 'existing-branch', + 'main', + 'Create my new MR', + { + description: 'MR description', + removeSourceBranch: false, + }, + ); + }); + it('commitAction auto skips unmodified files', async () => { + const input = { + repoUrl: 'gitlab.com?repo=repo&owner=owner', + title: 'Create my new MR', + branchName: 'new-mr', + description: 'MR description', + commitAction: 'auto', + }; + mockDir.setContent({ + [workspacePath]: { + source: { 'foo.txt': 'Hello there!', 'auto.txt': 'foo-bar-baz' }, + }, + }); + + const ctx = createMockActionContext({ input, workspacePath }); + await instance.handler(ctx); + + expect(mockGitlabClient.Branches.create).toHaveBeenCalledWith( + 'owner/repo', + 'new-mr', + 'main', + ); + expect(mockGitlabClient.Commits.create).toHaveBeenCalledWith( + 'owner/repo', + 'new-mr', + 'Create my new MR', + expect.arrayContaining([ + { + action: 'create', + filePath: 'source/foo.txt', + content: 'SGVsbG8gdGhlcmUh', + encoding: 'base64', + execute_filemode: false, + }, + ]), + ); + expect(mockGitlabClient.MergeRequests.create).toHaveBeenCalledWith( + 'owner/repo', + 'new-mr', + 'main', + 'Create my new MR', + { + description: 'MR description', + removeSourceBranch: false, + }, + ); + }); + }); + + describe('with sourcePath', () => { + it('creates a Merge Request with only relevant files', async () => { + const input = { + repoUrl: 'gitlab.com?repo=repo&owner=owner', + title: 'Create my new MR', + branchName: 'new-mr', + description: 'MR description', + sourcePath: 'source', + commitAction: 'create', + }; + + mockDir.setContent({ + [workspacePath]: { + source: { 'foo.txt': 'Hello there!' }, + irrelevant: { 'bar.txt': 'Nothing to see here' }, + }, + }); + + const ctx = createMockActionContext({ input, workspacePath }); + + await instance.handler(ctx); + + expect(mockGitlabClient.Branches.create).toHaveBeenCalledWith( + 'owner/repo', + 'new-mr', + 'main', + ); + expect(mockGitlabClient.Commits.create).toHaveBeenCalledWith( + 'owner/repo', + 'new-mr', + 'Create my new MR', + [ + { + action: 'create', + filePath: 'foo.txt', + content: 'SGVsbG8gdGhlcmUh', + encoding: 'base64', + execute_filemode: false, + }, + ], + ); + }); + + it('creates a Merge Request with only relevant files placed under different targetPath', async () => { + const input = { + repoUrl: 'gitlab.com?repo=repo&owner=owner', + title: 'Create my new MR', + branchName: 'new-mr', + description: 'MR description', + sourcePath: 'source', + targetPath: 'target', + commitAction: 'create', + }; + + mockDir.setContent({ + [workspacePath]: { + source: { 'foo.txt': 'Hello there!' }, + irrelevant: { 'bar.txt': 'Nothing to see here' }, + }, + }); + + const ctx = createMockActionContext({ input, workspacePath }); + + await instance.handler(ctx); + + expect(mockGitlabClient.Branches.create).toHaveBeenCalledWith( + 'owner/repo', + 'new-mr', + 'main', + ); + expect(mockGitlabClient.Commits.create).toHaveBeenCalledWith( + 'owner/repo', + 'new-mr', + 'Create my new MR', + [ + { + action: 'create', + filePath: 'target/foo.txt', + content: 'SGVsbG8gdGhlcmUh', + encoding: 'base64', + execute_filemode: false, + }, + ], + ); + }); + + it('should not allow to use files outside of the workspace', async () => { + const input = { + repoUrl: 'gitlab.com?repo=repo&owner=owner', + title: 'Create my new MR', + branchName: 'new-mr', + description: 'MR description', + sourcePath: '../../test', + commitAction: 'create', + }; + + const ctx = createMockActionContext({ input, workspacePath }); + + await expect(instance.handler(ctx)).rejects.toThrow( + 'Relative path is not allowed to refer to a directory outside its parent', + ); + }); + }); + describe('with labels', () => { + it('handles single label', async () => { + const input = { + repoUrl: 'gitlab.com?repo=repo&owner=owner', + title: 'Create my new MR', + branchName: 'new-mr', + description: 'MR description', + commitAction: 'skip', + labels: 'single-label', + }; + const ctx = createMockActionContext({ input, workspacePath }); + await instance.handler(ctx); + + expect(mockGitlabClient.Branches.create).toHaveBeenCalledWith( + 'owner/repo', + 'new-mr', + 'main', + ); + expect(mockGitlabClient.Commits.create).not.toHaveBeenCalled(); + expect(mockGitlabClient.MergeRequests.create).toHaveBeenCalledWith( + 'owner/repo', + 'new-mr', + 'main', + 'Create my new MR', + { + description: 'MR description', + removeSourceBranch: false, + labels: 'single-label', + }, + ); + }); + it('handles array of labels', async () => { + const input = { + repoUrl: 'gitlab.com?repo=repo&owner=owner', + title: 'Create my new MR', + branchName: 'new-mr', + description: 'MR description', + commitAction: 'skip', + labels: ['foo', 'bar', 'baz'], + }; + const ctx = createMockActionContext({ input, workspacePath }); + await instance.handler(ctx); + + expect(mockGitlabClient.Branches.create).toHaveBeenCalledWith( + 'owner/repo', + 'new-mr', + 'main', + ); + expect(mockGitlabClient.Commits.create).not.toHaveBeenCalled(); + expect(mockGitlabClient.MergeRequests.create).toHaveBeenCalledWith( + 'owner/repo', + 'new-mr', + 'main', + 'Create my new MR', + { + description: 'MR description', + removeSourceBranch: false, + labels: ['foo', 'bar', 'baz'], + }, + ); + }); + }); +}); diff --git a/plugins/scaffolder-backend-module-gitlab/src/actions/gitlabMergeRequest.ts b/plugins/scaffolder-backend-module-gitlab/src/actions/gitlabMergeRequest.ts new file mode 100644 index 0000000..66c72b4 --- /dev/null +++ b/plugins/scaffolder-backend-module-gitlab/src/actions/gitlabMergeRequest.ts @@ -0,0 +1,523 @@ +/* + * Copyright 2021 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { + createTemplateAction, + parseRepoUrl, + SerializedFile, + serializeDirectoryContents, +} from '@backstage/plugin-scaffolder-node'; +import { + Camelize, + CommitAction, + ExpandedMergeRequestSchema, + Gitlab, + RepositoryTreeSchema, + SimpleUserSchema, +} from '@gitbeaker/rest'; +import path from 'path'; +import { ScmIntegrationRegistry } from '@backstage/integration'; +import { InputError } from '@backstage/errors'; +import { + LoggerService, + resolveSafeChildPath, +} from '@backstage/backend-plugin-api'; +import { createGitlabApi, getErrorMessage } from './helpers'; +import { examples } from './gitlabMergeRequest.examples'; +import { createHash } from 'crypto'; + +function computeSha256(file: SerializedFile): string { + const hash = createHash('sha256'); + hash.update(file.content); + return hash.digest('hex'); +} + +async function getFileAction( + fileInfo: { file: SerializedFile; targetPath?: string }, + target: { repoID: string; branch: string }, + api: InstanceType, + logger: LoggerService, + remoteFiles: RepositoryTreeSchema[], + defaultCommitAction: + | 'create' + | 'delete' + | 'update' + | 'skip' + | 'auto' = 'auto', +): Promise<'create' | 'delete' | 'update' | 'skip'> { + if (defaultCommitAction === 'auto') { + const filePath = path.join(fileInfo.targetPath ?? '', fileInfo.file.path); + + if (remoteFiles?.some(remoteFile => remoteFile.path === filePath)) { + try { + const targetFile = await api.RepositoryFiles.show( + target.repoID, + filePath, + target.branch, + ); + if (computeSha256(fileInfo.file) === targetFile.content_sha256) { + return 'skip'; + } + } catch (error) { + logger.warn( + `Unable to retrieve detailed information for remote file ${filePath}`, + ); + } + return 'update'; + } + return 'create'; + } + return defaultCommitAction; +} + +async function getReviewersFromApprovalRules( + api: InstanceType, + mergerequestIId: number, + repoID: string, + ctx: any, +): Promise { + try { + // Because we don't know the code owners before the MR is created, we can't check the approval rules beforehand. + // Getting the approval rules beforehand is very difficult, especially, because of the inheritance rules for groups. + // Code owners take a moment to be processed and added to the approval rules after the MR is created. + + let mergeRequest: + | ExpandedMergeRequestSchema + | Camelize = await api.MergeRequests.show( + repoID, + mergerequestIId, + ); + + while ( + mergeRequest.detailed_merge_status === 'preparing' || + mergeRequest.detailed_merge_status === 'approvals_syncing' || + mergeRequest.detailed_merge_status === 'checking' + ) { + mergeRequest = await api.MergeRequests.show(repoID, mergeRequest.iid); + ctx.logger.info(`${mergeRequest.detailed_merge_status}`); + } + + const approvalRules = await api.MergeRequestApprovals.allApprovalRules( + repoID, + { + mergerequestIId: mergeRequest.iid, + }, + ); + + return approvalRules + .filter(rule => rule.eligible_approvers !== undefined) + .map(rule => { + return rule.eligible_approvers as SimpleUserSchema[]; + }) + .flat() + .map(user => user.id); + } catch (e) { + ctx.logger.warn( + `Failed to retrieve approval rules for MR ${mergerequestIId}: ${getErrorMessage( + e, + )}. Proceeding with MR creation without reviewers from approval rules.`, + ); + return []; + } +} + +const commitActions = ['create', 'delete', 'update', 'skip', 'auto'] as const; + +/** + * Create a new action that creates a GitLab merge request. + * + * @public + */ +export const createPublishGitlabMergeRequestAction = (options: { + integrations: ScmIntegrationRegistry; +}) => { + const { integrations } = options; + + return createTemplateAction({ + id: 'publish:gitlab:merge-request', + examples, + schema: { + input: { + repoUrl: z => + z.string().describe(`\ +Accepts the format \`gitlab.com?repo=project_name&owner=group_name\` where \ +\`project_name\` is the repository name and \`group_name\` is a group or username`), + title: z => z.string().describe('The name for the merge request'), + description: z => + z + .string() + .optional() + .describe('The description of the merge request'), + branchName: z => + z.string().describe('The source branch name of the merge request'), + targetBranchName: z => + z + .string() + .optional() + .describe( + 'The target branch name of the merge request (defaults to _default branch of repository_)', + ), + sourcePath: z => + z.string().optional().describe(`\ +Subdirectory of working directory to copy changes from. \ +For reasons of backward compatibility, any specified \`targetPath\` input will \ +be applied in place of an absent/falsy value for this input. \ +Circumvent this behavior using \`.\``), + targetPath: z => + z + .string() + .optional() + .describe('Subdirectory of repository to apply changes to'), + token: z => + z + .string() + .optional() + .describe('The token to use for authorization to GitLab'), + commitAction: z => + z.enum(commitActions).optional().describe(`\ +The action to be used for \`git\` commit. Defaults to the custom \`auto\` action provided by Backstage, +which uses additional API calls in order to detect whether to \`create\`, \`update\` or \`skip\` each source file.`), + /** @deprecated projectID passed as query parameters in the repoUrl */ + projectid: z => + z + .string() + .optional() + .describe( + `\ +Project ID/Name(slug) of the GitLab Project +_deprecated_: \`projectid\` passed as query parameters in the \`repoUrl\``, + ), + removeSourceBranch: z => + z + .boolean() + .optional() + .describe( + 'Option to delete source branch once the MR has been merged. Default: `false`', + ), + assignee: z => + z + .string() + .optional() + .describe('User this merge request will be assigned to'), + reviewers: z => + z + .string() + .array() + .optional() + .describe('Users that will be assigned as reviewers'), + assignReviewersFromApprovalRules: z => + z + .boolean() + .optional() + .describe( + 'Automatically assign reviewers from the approval rules of the MR. Includes `CODEOWNERS`', + ), + labels: z => + z + .string() + .or(z.string().array()) + .optional() + .describe('Labels with which to tag the created merge request'), + }, + output: { + targetBranchName: z => + z.string().describe('Target branch name of the merge request'), + projectid: z => z.string().describe('GitLab Project id/Name(slug)'), + projectPath: z => z.string().describe('GitLab Project path'), + mergeRequestUrl: z => + z.string().describe('Link to the merge request in GitLab'), + }, + }, + async handler(ctx) { + const { + assignee, + reviewers, + branchName, + targetBranchName, + description, + repoUrl, + removeSourceBranch, + targetPath, + sourcePath, + title, + token, + labels, + } = ctx.input; + + const { owner, repo, project } = parseRepoUrl(repoUrl, integrations); + const repoID = project ? project : `${owner}/${repo}`; + + const api = createGitlabApi({ + integrations, + token, + repoUrl, + }); + + let assigneeId: number | undefined = undefined; + + if (assignee !== undefined) { + try { + const assigneeUser = await api.Users.all({ username: assignee }); + assigneeId = assigneeUser[0].id; + } catch (e) { + ctx.logger.warn( + `Failed to find gitlab user id for ${assignee}: ${getErrorMessage( + e, + )}. Proceeding with MR creation without an assignee.`, + ); + } + } + + let reviewerIds: number[] | undefined = undefined; // Explicitly set to undefined. Strangely, passing an empty array to the API will result the other options being undefined also being explicitly passed to the Gitlab API call (e.g. assigneeId) + if (reviewers !== undefined) { + reviewerIds = ( + await Promise.all( + reviewers.map(async reviewer => { + try { + const reviewerUser = await api.Users.all({ + username: reviewer, + }); + return reviewerUser[0].id; + } catch (e) { + ctx.logger.warn( + `Failed to find gitlab user id for ${reviewer}: ${e}. Proceeding with MR creation without reviewer.`, + ); + return undefined; + } + }), + ) + ).filter(id => id !== undefined) as number[]; + } + + let fileRoot: string; + if (sourcePath) { + fileRoot = resolveSafeChildPath(ctx.workspacePath, sourcePath); + } else if (targetPath) { + // for backward compatibility + fileRoot = resolveSafeChildPath(ctx.workspacePath, targetPath); + } else { + fileRoot = ctx.workspacePath; + } + + const fileContents = await serializeDirectoryContents(fileRoot, { + gitignore: true, + }); + + let targetBranch = targetBranchName; + if (!targetBranch) { + const projects = await api.Projects.show(repoID); + const defaultBranch = projects.default_branch ?? projects.defaultBranch; + if (typeof defaultBranch !== 'string' || !defaultBranch) { + throw new InputError( + `The branch creation failed. Target branch was not provided, and could not find default branch from project settings. Project: ${JSON.stringify( + project, + )}`, + ); + } + targetBranch = defaultBranch; + } + + let remoteFiles: RepositoryTreeSchema[] = []; + if ((ctx.input.commitAction ?? 'auto') === 'auto') { + try { + remoteFiles = await api.Repositories.allRepositoryTrees(repoID, { + ref: targetBranch, + recursive: true, + path: targetPath ?? undefined, + }); + } catch (e) { + ctx.logger.warn( + `Could not retrieve the list of files for ${repoID} (branch: ${targetBranch}) : ${getErrorMessage( + e, + )}`, + ); + } + } + const actions: CommitAction[] = + ctx.input.commitAction === 'skip' + ? [] + : ( + ( + await Promise.all( + fileContents.map(async file => { + const action = await getFileAction( + { file, targetPath }, + { repoID, branch: targetBranch! }, + api, + ctx.logger, + remoteFiles, + ctx.input.commitAction, + ); + return { file, action }; + }), + ) + ).filter(o => o.action !== 'skip') as { + file: SerializedFile; + action: CommitAction['action']; + }[] + ).map(({ file, action }) => ({ + action, + filePath: targetPath + ? path.posix.join(targetPath, file.path) + : file.path, + encoding: 'base64', + content: file.content.toString('base64'), + execute_filemode: file.executable, + })); + + let createBranch = actions.length > 0; + + try { + const branch = await api.Branches.show(repoID, branchName); + if (createBranch) { + const mergeRequests = await api.MergeRequests.all({ + projectId: repoID, + source_branch: branchName, + }); + + if (mergeRequests.length > 0) { + // If an open MR exists, include the MR link in the error message + throw new InputError( + `The branch creation failed because the branch already exists at: ${branch.web_url}. Additionally, there is a Merge Request for this branch: ${mergeRequests[0].web_url}`, + ); + } else { + // If no open MR, just notify about the existing branch + throw new InputError( + `The branch creation failed because the branch already exists at: ${branch.web_url}.`, + ); + } + } + + ctx.logger.info( + `Using existing branch ${branchName} without modification.`, + ); + } catch (e) { + if (e instanceof InputError) { + throw e; + } + createBranch = true; + } + + if (createBranch) { + try { + await api.Branches.create(repoID, branchName, String(targetBranch)); + } catch (e) { + throw new InputError( + `The branch creation failed. Please check that your repo does not already contain a branch named '${branchName}'. ${getErrorMessage( + e, + )}`, + ); + } + } + + await ctx.checkpoint({ + key: `commit.to.${repoID}.${branchName}`, + fn: async () => { + if (actions.length) { + try { + const commit = await api.Commits.create( + repoID, + branchName, + title, + actions, + ); + return commit.id; + } catch (e) { + throw new InputError( + `Committing the changes to ${branchName} failed. Please check that none of the files created by the template already exists. ${getErrorMessage( + e, + )}`, + ); + } + } + return null; + }, + }); + + const { mrId, mrWebUrl } = await ctx.checkpoint({ + key: `create.mr.${repoID}.${branchName}`, + fn: async () => { + try { + const mergeRequest = await api.MergeRequests.create( + repoID, + branchName, + String(targetBranch), + title, + { + description, + removeSourceBranch: removeSourceBranch + ? removeSourceBranch + : false, + assigneeId, + reviewerIds, + labels, + }, + ); + return { + mrId: mergeRequest.iid, + mrWebUrl: mergeRequest.web_url ?? mergeRequest.webUrl, + }; + } catch (e) { + throw new InputError( + `Merge request creation failed. ${getErrorMessage(e)}`, + ); + } + }, + }); + + await ctx.checkpoint({ + key: `create.mr.assign.reviewers.${repoID}.${branchName}`, + fn: async () => { + if (ctx.input.assignReviewersFromApprovalRules) { + try { + const reviewersFromApprovalRules = + await getReviewersFromApprovalRules(api, mrId, repoID, ctx); + if (reviewersFromApprovalRules.length > 0) { + const eligibleUserIds = new Set([ + ...reviewersFromApprovalRules, + ...(reviewerIds ?? []), + ]); + + const mergeRequest = await api.MergeRequests.edit( + repoID, + mrId, + { + reviewerIds: Array.from(eligibleUserIds), + }, + ); + return { + mrWebUrl: mergeRequest.web_url ?? mergeRequest.webUrl, + }; + } + } catch (e) { + ctx.logger.warn( + `Failed to assign reviewers from approval rules: ${getErrorMessage( + e, + )}.`, + ); + } + } + return { mrWebUrl }; + }, + }); + + ctx.output('projectid', repoID); + ctx.output('targetBranchName', targetBranch); + ctx.output('projectPath', repoID); + ctx.output('mergeRequestUrl', mrWebUrl as string); + }, + }); +}; diff --git a/plugins/scaffolder-backend-module-gitlab/src/actions/gitlabPipelineTrigger.examples.test.ts b/plugins/scaffolder-backend-module-gitlab/src/actions/gitlabPipelineTrigger.examples.test.ts new file mode 100644 index 0000000..4153547 --- /dev/null +++ b/plugins/scaffolder-backend-module-gitlab/src/actions/gitlabPipelineTrigger.examples.test.ts @@ -0,0 +1,322 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { ScmIntegrations } from '@backstage/integration'; +import { createMockActionContext } from '@backstage/plugin-scaffolder-node-test-utils'; +import { createTriggerGitlabPipelineAction } from './gitlabPipelineTrigger'; +import { examples } from './gitlabPipelineTrigger.examples'; +import yaml from 'yaml'; +import { mockServices } from '@backstage/backend-test-utils'; + +const mockGitlabClient = { + PipelineTriggerTokens: { + create: jest.fn(), + trigger: jest.fn(), + remove: jest.fn(), + }, +}; +jest.mock('@gitbeaker/rest', () => ({ + Gitlab: class { + constructor() { + return mockGitlabClient; + } + }, +})); + +describe('gitlab:pipeline:trigger', () => { + beforeEach(() => { + jest.resetModules(); + jest.clearAllMocks(); + jest.useFakeTimers({ + now: new Date(1988, 5, 3, 12, 0, 0), + }); + }); + + afterEach(() => { + jest.useRealTimers(); + }); + + const config = mockServices.rootConfig({ + data: { + integrations: { + gitlab: [ + { + host: 'gitlab.com', + token: 'glpat-abcdef', + apiBaseUrl: 'https://gitlab.com/api/v4', + }, + ], + }, + }, + }); + const integrations = ScmIntegrations.fromConfig(config); + + const action = createTriggerGitlabPipelineAction({ integrations }); + + it(`should ${examples[0].description}`, async () => { + const mockContext = createMockActionContext({ + input: { + repoUrl: 'gitlab.com?repo=repo&owner=owner', + projectId: 123, + tokenDescription: 'Gitlab sample pipeline', + branch: 'main', + }, + workspacePath: 'repository', + }); + + mockGitlabClient.PipelineTriggerTokens.create.mockResolvedValue({ + id: 42, + description: 'Gitlab sample pipeline', + createdAt: new Date().toISOString(), + last_used: null, + token: 'abcdd-ghijkl', + updated_at: new Date().toISOString(), + owner: null, + }); + + mockGitlabClient.PipelineTriggerTokens.trigger.mockResolvedValue({ + id: 99, + web_url: 'https://gitlab.com/hangar18-/pipelines/99', + }); + + let input; + try { + input = yaml.parse(examples[0].example).steps[0].input; + } catch (error) { + console.error('Failed to parse YAML:', error); + } + + await action.handler({ + ...mockContext, + input: { + ...mockContext.input, + ...input, + }, + }); + + expect(mockGitlabClient.PipelineTriggerTokens.create).toHaveBeenCalledWith( + input.projectId, + input.tokenDescription, + ); + + expect(mockGitlabClient.PipelineTriggerTokens.trigger).toHaveBeenCalledWith( + input.projectId, + 'main', + 'abcdd-ghijkl', + { variables: input.variables }, + ); + + expect(mockGitlabClient.PipelineTriggerTokens.remove).toHaveBeenCalledWith( + input.projectId, + 42, + ); + + expect(mockContext.output).toHaveBeenCalledWith( + 'pipelineUrl', + 'https://gitlab.com/hangar18-/pipelines/99', + ); + }); + + it(`should ${examples[1].description}`, async () => { + const mockContext = createMockActionContext({ + input: { + repoUrl: 'gitlab.com?repo=repo&owner=owner', + projectId: 123, + tokenDescription: 'Gitlab sample pipeline', + branch: 'main', + }, + workspacePath: 'repository', + }); + + mockGitlabClient.PipelineTriggerTokens.create.mockResolvedValue({ + id: 42, + description: 'Gitlab sample pipeline', + createdAt: new Date().toISOString(), + last_used: null, + token: 'abcdd-ghijkl', + updated_at: new Date().toISOString(), + owner: null, + }); + + mockGitlabClient.PipelineTriggerTokens.trigger.mockResolvedValue({ + id: 99, + web_url: 'https://gitlab.com/hangar18-/pipelines/99', + }); + + let input; + try { + input = yaml.parse(examples[1].example).steps[0].input; + } catch (error) { + console.error('Failed to parse YAML:', error); + } + + await action.handler({ + ...mockContext, + input: { + ...mockContext.input, + ...input, + }, + }); + + expect(mockGitlabClient.PipelineTriggerTokens.create).toHaveBeenCalledWith( + input.projectId, + input.tokenDescription, + ); + + expect(mockGitlabClient.PipelineTriggerTokens.trigger).toHaveBeenCalledWith( + input.projectId, + 'main', + 'abcdd-ghijkl', + { variables: input.variables }, + ); + + expect(mockGitlabClient.PipelineTriggerTokens.remove).toHaveBeenCalledWith( + input.projectId, + 42, + ); + + expect(mockContext.output).toHaveBeenCalledWith( + 'pipelineUrl', + 'https://gitlab.com/hangar18-/pipelines/99', + ); + }); + it(`should ${examples[2].description}`, async () => { + const mockContext = createMockActionContext({ + input: { + repoUrl: 'gitlab.com?repo=repo&owner=owner', + projectId: 123, + tokenDescription: 'Gitlab sample pipeline', + branch: 'main', + }, + workspacePath: 'repository', + }); + + mockGitlabClient.PipelineTriggerTokens.create.mockResolvedValue({ + id: 42, + description: 'Gitlab sample pipeline', + createdAt: new Date().toISOString(), + last_used: null, + token: 'abcdd-ghijkl', + updated_at: new Date().toISOString(), + owner: null, + }); + + mockGitlabClient.PipelineTriggerTokens.trigger.mockResolvedValue({ + id: 99, + web_url: 'https://gitlab.com/hangar18-/pipelines/99', + }); + + let input; + try { + input = yaml.parse(examples[2].example).steps[0].input; + } catch (error) { + console.error('Failed to parse YAML:', error); + } + + await action.handler({ + ...mockContext, + input: { + ...mockContext.input, + ...input, + }, + }); + + expect(mockGitlabClient.PipelineTriggerTokens.create).toHaveBeenCalledWith( + input.projectId, + input.tokenDescription, + ); + + expect(mockGitlabClient.PipelineTriggerTokens.trigger).toHaveBeenCalledWith( + input.projectId, + 'main', + 'abcdd-ghijkl', + { variables: input.variables }, + ); + + expect(mockGitlabClient.PipelineTriggerTokens.remove).toHaveBeenCalledWith( + input.projectId, + 42, + ); + + expect(mockContext.output).toHaveBeenCalledWith( + 'pipelineUrl', + 'https://gitlab.com/hangar18-/pipelines/99', + ); + }); + it(`should ${examples[3].description}`, async () => { + const mockContext = createMockActionContext({ + input: { + repoUrl: 'gitlab.com?repo=repo&owner=owner', + projectId: 123, + tokenDescription: 'Gitlab sample pipeline', + branch: 'main', + }, + workspacePath: 'repository', + }); + + mockGitlabClient.PipelineTriggerTokens.create.mockResolvedValue({ + id: 42, + description: 'Gitlab sample pipeline', + createdAt: new Date().toISOString(), + last_used: null, + token: 'abcdd-ghijkl', + updated_at: new Date().toISOString(), + owner: null, + }); + + mockGitlabClient.PipelineTriggerTokens.trigger.mockResolvedValue({ + id: 99, + web_url: 'https://gitlab.com/hangar18-/pipelines/99', + }); + + let input; + try { + input = yaml.parse(examples[3].example).steps[0].input; + } catch (error) { + console.error('Failed to parse YAML:', error); + } + + await action.handler({ + ...mockContext, + input: { + ...mockContext.input, + ...input, + }, + }); + + expect(mockGitlabClient.PipelineTriggerTokens.create).toHaveBeenCalledWith( + input.projectId, + input.tokenDescription, + ); + + expect(mockGitlabClient.PipelineTriggerTokens.trigger).toHaveBeenCalledWith( + input.projectId, + 'main', + 'abcdd-ghijkl', + { variables: input.variables }, + ); + + expect(mockGitlabClient.PipelineTriggerTokens.remove).toHaveBeenCalledWith( + input.projectId, + 42, + ); + + expect(mockContext.output).toHaveBeenCalledWith( + 'pipelineUrl', + 'https://gitlab.com/hangar18-/pipelines/99', + ); + }); +}); diff --git a/plugins/scaffolder-backend-module-gitlab/src/actions/gitlabPipelineTrigger.examples.ts b/plugins/scaffolder-backend-module-gitlab/src/actions/gitlabPipelineTrigger.examples.ts new file mode 100644 index 0000000..f213fcd --- /dev/null +++ b/plugins/scaffolder-backend-module-gitlab/src/actions/gitlabPipelineTrigger.examples.ts @@ -0,0 +1,105 @@ +/* + * Copyright 2023 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { TemplateExample } from '@backstage/plugin-scaffolder-node'; +import yaml from 'yaml'; +import { commonGitlabConfigExample } from '../commonGitlabConfig'; + +export const examples: TemplateExample[] = [ + { + description: 'Trigger a GitLab Project Pipeline', + example: yaml.stringify({ + steps: [ + { + id: 'triggerPipeline', + name: 'Trigger Project Pipeline', + action: 'gitlab:pipeline:trigger', + input: { + ...commonGitlabConfigExample, + projectId: 12, + tokenDescription: + 'This is the text that will appear in the pipeline token', + token: 'glpt-xxxxxxxxxxxx', + branch: 'main', + variables: { var_one: 'one', var_two: 'two' }, + }, + }, + ], + }), + }, + { + description: 'Trigger a GitLab Project Pipeline with No Variables', + example: yaml.stringify({ + steps: [ + { + id: 'triggerPipeline', + name: 'Trigger Project Pipeline', + action: 'gitlab:pipeline:trigger', + input: { + ...commonGitlabConfigExample, + projectId: 12, + tokenDescription: + 'This is the text that will appear in the pipeline token', + token: 'glpt-xxxxxxxxxxxx', + branch: 'main', + variables: {}, + }, + }, + ], + }), + }, + { + description: 'Trigger a GitLab Project Pipeline with Single Variables', + example: yaml.stringify({ + steps: [ + { + id: 'triggerPipeline', + name: 'Trigger Project Pipeline', + action: 'gitlab:pipeline:trigger', + input: { + ...commonGitlabConfigExample, + projectId: 12, + tokenDescription: + 'This is the text that will appear in the pipeline token', + token: 'glpt-xxxxxxxxxxxx', + branch: 'main', + variables: { var_one: 'one' }, + }, + }, + ], + }), + }, + { + description: 'Trigger a GitLab Project Pipeline with Multiple Variables', + example: yaml.stringify({ + steps: [ + { + id: 'triggerPipeline', + name: 'Trigger Project Pipeline', + action: 'gitlab:pipeline:trigger', + input: { + ...commonGitlabConfigExample, + projectId: 12, + tokenDescription: + 'This is the text that will appear in the pipeline token', + token: 'glpt-xxxxxxxxxxxx', + branch: 'main', + variables: { var_one: 'one', var_two: 'two', var_three: 'three' }, + }, + }, + ], + }), + }, +]; diff --git a/plugins/scaffolder-backend-module-gitlab/src/actions/gitlabPipelineTrigger.test.ts b/plugins/scaffolder-backend-module-gitlab/src/actions/gitlabPipelineTrigger.test.ts new file mode 100644 index 0000000..89498c5 --- /dev/null +++ b/plugins/scaffolder-backend-module-gitlab/src/actions/gitlabPipelineTrigger.test.ts @@ -0,0 +1,266 @@ +/* + * Copyright 2021 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { ScmIntegrations } from '@backstage/integration'; +import { createMockActionContext } from '@backstage/plugin-scaffolder-node-test-utils'; +import { createTriggerGitlabPipelineAction } from './gitlabPipelineTrigger'; +import { mockServices } from '@backstage/backend-test-utils'; + +const mockGitlabClient = { + PipelineTriggerTokens: { + create: jest.fn(), + trigger: jest.fn(), + remove: jest.fn(), + }, +}; +jest.mock('@gitbeaker/rest', () => ({ + Gitlab: class { + constructor() { + return mockGitlabClient; + } + }, +})); + +describe('gitlab:pipeline:trigger', () => { + beforeEach(() => { + jest.resetModules(); + jest.clearAllMocks(); + jest.useFakeTimers({ + now: new Date(1988, 5, 3, 12, 0, 0), + }); + }); + + afterEach(() => { + jest.useRealTimers(); + }); + + const config = mockServices.rootConfig({ + data: { + integrations: { + gitlab: [ + { + host: 'gitlab.com', + token: 'glpat-abcdef', + apiBaseUrl: 'https://gitlab.com/api/v4', + }, + ], + }, + }, + }); + const integrations = ScmIntegrations.fromConfig(config); + + const action = createTriggerGitlabPipelineAction({ integrations }); + + it('should return a Pipeline Token Id', async () => { + const mockContext = createMockActionContext({ + input: { + repoUrl: 'gitlab.com?repo=repo&owner=owner', + projectId: 123, + tokenDescription: 'My cool pipeline token', + branch: 'main', + }, + workspacePath: 'seen2much', + }); + + mockGitlabClient.PipelineTriggerTokens.create.mockResolvedValue({ + id: 42, + description: 'My cool pipeline token', + createdAt: new Date().toISOString(), + last_used: null, + token: 'glptt-abcdef', + updated_at: new Date().toISOString(), + owner: null, + }); + + mockGitlabClient.PipelineTriggerTokens.trigger.mockResolvedValue({ + id: 99, + web_url: 'https://gitlab.com/hangar18-/pipelines/99', + }); + + await action.handler({ + ...mockContext, + }); + + expect(mockGitlabClient.PipelineTriggerTokens.create).toHaveBeenCalledWith( + 123, + 'My cool pipeline token', + ); + + expect(mockGitlabClient.PipelineTriggerTokens.trigger).toHaveBeenCalledWith( + 123, + 'main', + 'glptt-abcdef', + { variables: undefined }, + ); + + expect(mockGitlabClient.PipelineTriggerTokens.remove).toHaveBeenCalledWith( + 123, + 42, + ); + + expect(mockContext.output).toHaveBeenCalledWith( + 'pipelineUrl', + 'https://gitlab.com/hangar18-/pipelines/99', + ); + }); + + it('should throw error if pipeline token cannot be created', async () => { + const mockContext = createMockActionContext({ + input: { + repoUrl: 'gitlab.com?repo=repo&owner=owner', + projectId: 123, + tokenDescription: 'My cool pipeline token', + branch: 'main', + }, + workspacePath: 'seen2much', + }); + + mockGitlabClient.PipelineTriggerTokens.create.mockRejectedValue( + new Error('Failed to create token'), + ); + + await expect( + action.handler({ + ...mockContext, + }), + ).rejects.toThrow('Failed to create token'); + + expect(mockGitlabClient.PipelineTriggerTokens.create).toHaveBeenCalledWith( + 123, + 'My cool pipeline token', + ); + + expect( + mockGitlabClient.PipelineTriggerTokens.trigger, + ).not.toHaveBeenCalled(); + + expect( + mockGitlabClient.PipelineTriggerTokens.remove, + ).not.toHaveBeenCalled(); + }); + + it('throw error if pipeline cannot be triggered', async () => { + const mockContext = createMockActionContext({ + input: { + repoUrl: 'gitlab.com?repo=repo&owner=owner', + projectId: 123, + tokenDescription: 'My cool pipeline token', + branch: 'main', + }, + workspacePath: 'seen2much', + }); + + mockGitlabClient.PipelineTriggerTokens.create.mockResolvedValue({ + id: 42, + description: 'My cool pipeline token', + createdAt: new Date().toISOString(), + last_used: null, + token: 'glptt-abcdef', + updated_at: new Date().toISOString(), + owner: null, + }); + + mockGitlabClient.PipelineTriggerTokens.trigger.mockRejectedValue( + new Error('Failed to trigger pipeline'), + ); + + await expect( + action.handler({ + ...mockContext, + }), + ).rejects.toThrow('Failed to trigger pipeline'); + + expect(mockGitlabClient.PipelineTriggerTokens.create).toHaveBeenCalledWith( + 123, + 'My cool pipeline token', + ); + + expect(mockGitlabClient.PipelineTriggerTokens.trigger).toHaveBeenCalledWith( + 123, + 'main', + 'glptt-abcdef', + { variables: undefined }, + ); + + expect(mockGitlabClient.PipelineTriggerTokens.remove).toHaveBeenCalledWith( + 123, + 42, + ); + }); + + it('should clean up pipeline token on failure', async () => { + const mockContext = createMockActionContext({ + input: { + repoUrl: 'gitlab.com?repo=repo&owner=owner', + projectId: 123, + tokenDescription: 'My cool pipeline token', + branch: 'main', + }, + workspacePath: 'seen2much', + }); + + mockGitlabClient.PipelineTriggerTokens.create.mockResolvedValue({ + id: 42, + description: 'My cool pipeline token', + createdAt: new Date().toISOString(), + last_used: null, + token: 'glptt-abcdef', + updated_at: new Date().toISOString(), + owner: null, + }); + + mockGitlabClient.PipelineTriggerTokens.trigger.mockRejectedValue( + new Error('Failed to trigger pipeline'), + ); + + await expect( + action.handler({ + ...mockContext, + }), + ).rejects.toThrow('Failed to trigger pipeline'); + + expect(mockGitlabClient.PipelineTriggerTokens.remove).toHaveBeenCalledWith( + 123, + 42, + ); + }); + + it('should succeed trigger and pass variables', async () => { + const mockContext = createMockActionContext({ + input: { + repoUrl: 'gitlab.com?repo=repo&owner=owner', + projectId: 123, + tokenDescription: 'My cool pipeline token', + branch: 'main', + variables: { var_one: 'val1', var_two: 'val2' }, + }, + workspacePath: 'seen2much', + }); + + await expect( + action.handler({ + ...mockContext, + }), + ).rejects.toThrow('Failed to trigger pipeline'); + + expect(mockGitlabClient.PipelineTriggerTokens.trigger).toHaveBeenCalledWith( + 123, + 'main', + 'glptt-abcdef', + { variables: { var_one: 'val1', var_two: 'val2' } }, + ); + }); +}); diff --git a/plugins/scaffolder-backend-module-gitlab/src/actions/gitlabPipelineTrigger.ts b/plugins/scaffolder-backend-module-gitlab/src/actions/gitlabPipelineTrigger.ts new file mode 100644 index 0000000..ccb29c1 --- /dev/null +++ b/plugins/scaffolder-backend-module-gitlab/src/actions/gitlabPipelineTrigger.ts @@ -0,0 +1,173 @@ +/* + * Copyright 2023 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { InputError } from '@backstage/errors'; +import { ScmIntegrationRegistry } from '@backstage/integration'; +import { createTemplateAction } from '@backstage/plugin-scaffolder-node'; +import { + ExpandedPipelineSchema, + PipelineTriggerTokenSchema, +} from '@gitbeaker/rest'; +import { getClient, parseRepoUrl } from '../util'; +import { examples } from './gitlabPipelineTrigger.examples'; +import { getErrorMessage } from './helpers'; + +/** + * Creates a `gitlab:pipeline:trigger` Scaffolder action. + * + * @param options - Templating configuration. + * @public + */ +export const createTriggerGitlabPipelineAction = (options: { + integrations: ScmIntegrationRegistry; +}) => { + const { integrations } = options; + return createTemplateAction({ + id: 'gitlab:pipeline:trigger', + description: 'Triggers a GitLab Pipeline.', + examples, + schema: { + input: { + repoUrl: z => + z.string({ + description: `Accepts the format 'gitlab.com?repo=project_name&owner=group_name' where 'project_name' is the repository name and 'group_name' is a group or username`, + }), + token: z => + z + .string({ + description: 'The token to use for authorization to GitLab', + }) + .optional(), + projectId: z => + z.number({ + description: 'Project Id', + }), + tokenDescription: z => + z.string({ + description: 'Pipeline token description', + }), + branch: z => + z.string({ + description: 'Project branch', + }), + variables: z => + z + .record(z.string(), z.string(), { + description: + 'A object/record of key-valued strings containing the pipeline variables.', + }) + .optional(), + }, + output: { + pipelineUrl: z => + z.string({ + description: 'Pipeline Url', + }), + }, + }, + async handler(ctx) { + let pipelineTriggerToken: string | undefined = undefined; + let pipelineTriggerId: number | undefined = undefined; + + const { repoUrl, projectId, tokenDescription, token, branch, variables } = + ctx.input; + + const { host } = parseRepoUrl(repoUrl, integrations); + const api = getClient({ host, integrations, token }); + + try { + ({ pipelineTriggerToken, pipelineTriggerId } = await ctx.checkpoint({ + key: `create.pipeline.token.${projectId}`, + fn: async () => { + const res = (await api.PipelineTriggerTokens.create( + projectId, + tokenDescription, + )) as PipelineTriggerTokenSchema; + return { + pipelineTriggerToken: res.token, + pipelineTriggerId: res.id, + }; + }, + })); + + if (!pipelineTriggerToken) { + ctx.logger.error( + `Failed to create pipeline token for project ${projectId}.`, + ); + return; + } + ctx.logger.info( + `Pipeline token id ${pipelineTriggerId} created for project ${projectId}.`, + ); + + // Use the pipeline token to trigger the pipeline in the project + const pipelineTriggerResponse = + (await api.PipelineTriggerTokens.trigger( + projectId, + branch, + pipelineTriggerToken, + { variables }, + )) as ExpandedPipelineSchema; + + if (!pipelineTriggerResponse.id) { + ctx.logger.error( + `Failed to trigger pipeline for project ${projectId}.`, + ); + return; + } + + ctx.logger.info( + `Pipeline id ${pipelineTriggerResponse.id} for project ${projectId} triggered.`, + ); + + ctx.output('pipelineUrl', pipelineTriggerResponse.web_url); + } catch (error: any) { + // Handling other errors + throw new InputError( + `Failed to trigger Pipeline: ${getErrorMessage(error)}`, + ); + } finally { + // Delete the pipeline token if it was created + if (pipelineTriggerId) { + try { + await ctx.checkpoint({ + key: `create.delete.token.${projectId}`, + fn: async () => { + if (pipelineTriggerId) { + // to make the current version of TypeScript happy + await api.PipelineTriggerTokens.remove( + projectId, + pipelineTriggerId, + ); + } + }, + }); + ctx.logger.info( + // in version 18.0 of gitlab this was also deleting the pipeline + // this is a problem in gitlab which is fixed in version 18.1 + // https://gitlab.com/gitlab-org/gitlab/-/issues/546669 + `Deleted pipeline trigger token with token id: ${pipelineTriggerId}.`, + ); + } catch (error: any) { + ctx.logger.error( + `Failed to delete pipeline trigger token with token id: ${pipelineTriggerId}.`, + ); + } + } + } + }, + }); +}; diff --git a/plugins/scaffolder-backend-module-gitlab/src/actions/gitlabProjectAccessTokenCreate.examples.test.ts b/plugins/scaffolder-backend-module-gitlab/src/actions/gitlabProjectAccessTokenCreate.examples.test.ts new file mode 100644 index 0000000..3ad0237 --- /dev/null +++ b/plugins/scaffolder-backend-module-gitlab/src/actions/gitlabProjectAccessTokenCreate.examples.test.ts @@ -0,0 +1,449 @@ +/* + * Copyright 2023 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { ConfigReader } from '@backstage/config'; +import { ScmIntegrations } from '@backstage/integration'; +import { createMockActionContext } from '@backstage/plugin-scaffolder-node-test-utils'; +import yaml from 'yaml'; +import { createGitlabProjectAccessTokenAction } from './gitlabProjectAccessTokenCreate'; // Adjust the import based on your project structure +import { examples } from './gitlabProjectAccessTokenCreate.examples'; +import { DateTime } from 'luxon'; + +const mockGitlabClient = { + ProjectAccessTokens: { + create: jest.fn(), + }, +}; + +jest.mock('@gitbeaker/rest', () => ({ + Gitlab: class { + constructor() { + return mockGitlabClient; + } + }, +})); + +describe('gitlab:projectAccessToken:create examples', () => { + const config = new ConfigReader({ + integrations: { + gitlab: [ + { + host: 'gitlab.com', + token: 'tokenlols', + apiBaseUrl: 'https://api.gitlab.com', + }, + { + host: 'hosted.gitlab.com', + apiBaseUrl: 'https://api.hosted.gitlab.com', + }, + { + host: 'gitlab.example.com', + apiBaseUrl: 'https://api.gitlab.example.com', + }, + ], + }, + }); + + const integrations = ScmIntegrations.fromConfig(config); + const action = createGitlabProjectAccessTokenAction({ integrations }); + + const mockContext = createMockActionContext({ + input: { + repoUrl: 'gitlab.com?repo=repo&owner=owner', + }, + }); + + beforeEach(() => { + jest.resetAllMocks(); + }); + + it('Create a GitLab project access token with minimal options.', async () => { + mockGitlabClient.ProjectAccessTokens.create.mockResolvedValue({ + token: 'TOKEN', + username: 'User', + }); + + const input = yaml.parse(examples[0].example).steps[0].input; + await action.handler({ + ...mockContext, + input, + }); + + expect(mockGitlabClient.ProjectAccessTokens.create).toHaveBeenCalledWith( + '456', + 'tokenname', + ['read_repository'], + DateTime.now().plus({ days: 365 }).toISODate()!, + { + accessLevel: 40, + }, + ); + + expect(mockContext.output).toHaveBeenCalledWith('access_token', 'TOKEN'); + }); + + it('Create a GitLab project access token with custom scopes.', async () => { + mockGitlabClient.ProjectAccessTokens.create.mockResolvedValue({ + token: 'TOKEN', + username: 'User', + }); + + const input = yaml.parse(examples[1].example).steps[0].input; + await action.handler({ + ...mockContext, + input, + }); + + expect(mockGitlabClient.ProjectAccessTokens.create).toHaveBeenCalledWith( + '789', + 'tokenname', + ['read_registry', 'write_repository'], + DateTime.now().plus({ days: 365 }).toISODate()!, + { + accessLevel: 40, + }, + ); + + expect(mockContext.output).toHaveBeenCalledWith('access_token', 'TOKEN'); + }); + + it('Create a GitLab project access token with a specified name.', async () => { + mockGitlabClient.ProjectAccessTokens.create.mockResolvedValue({ + token: 'TOKEN', + username: 'User', + }); + + const input = yaml.parse(examples[2].example).steps[0].input; + await action.handler({ + ...mockContext, + input, + }); + + expect(mockGitlabClient.ProjectAccessTokens.create).toHaveBeenCalledWith( + '101112', + 'my-custom-token', + ['read_repository'], + DateTime.now().plus({ days: 365 }).toISODate()!, + { + accessLevel: 40, + }, + ); + + expect(mockContext.output).toHaveBeenCalledWith('access_token', 'TOKEN'); + }); + + it('Create a GitLab project access token with a numeric project ID.', async () => { + mockGitlabClient.ProjectAccessTokens.create.mockResolvedValue({ + token: 'TOKEN', + username: 'User', + }); + + const input = yaml.parse(examples[3].example).steps[0].input; + await action.handler({ + ...mockContext, + input, + }); + + expect(mockGitlabClient.ProjectAccessTokens.create).toHaveBeenCalledWith( + 42, + 'tokenname', + ['read_repository'], + DateTime.now().plus({ days: 365 }).toISODate()!, + { + accessLevel: 40, + }, + ); + + expect(mockContext.output).toHaveBeenCalledWith('access_token', 'TOKEN'); + }); + + it('Create a GitLab project access token with a specified expired Date.', async () => { + mockGitlabClient.ProjectAccessTokens.create.mockResolvedValue({ + token: 'TOKEN', + username: 'User', + }); + + const input = yaml.parse(examples[4].example).steps[0].input; + await action.handler({ + ...mockContext, + input, + }); + + expect(mockGitlabClient.ProjectAccessTokens.create).toHaveBeenCalledWith( + '123', + 'tokenname', + ['read_repository'], + '2024-06-25', + { + accessLevel: 40, + }, + ); + + expect(mockContext.output).toHaveBeenCalledWith('access_token', 'TOKEN'); + }); + + it(`should ${examples[5].description}`, async () => { + mockGitlabClient.ProjectAccessTokens.create.mockResolvedValue({ + token: 'personal-access-token', + username: 'gitlab-user', + }); + + const input = yaml.parse(examples[5].example).steps[0].input; + await action.handler({ + ...mockContext, + input, + }); + + expect(mockGitlabClient.ProjectAccessTokens.create).toHaveBeenCalledWith( + '456', + 'tokenname', + ['read_repository'], + DateTime.now().plus({ days: 365 }).toISODate()!, + { + accessLevel: 30, + }, + ); + + expect(mockContext.output).toHaveBeenCalledWith( + 'access_token', + 'personal-access-token', + ); + }); + + it(`should ${examples[6].description}`, async () => { + mockGitlabClient.ProjectAccessTokens.create.mockResolvedValue({ + token: 'personal-access-token', + username: 'gitlab-user', + }); + + const input = yaml.parse(examples[6].example).steps[0].input; + await action.handler({ + ...mockContext, + input, + }); + + expect(mockGitlabClient.ProjectAccessTokens.create).toHaveBeenCalledWith( + '456', + 'full-access-token', + ['read_repository'], + '2024-12-31', + { + accessLevel: 40, + }, + ); + + expect(mockContext.output).toHaveBeenCalledWith( + 'access_token', + 'personal-access-token', + ); + }); + + it(`should ${examples[7].description}`, async () => { + mockGitlabClient.ProjectAccessTokens.create.mockResolvedValue({ + token: 'personal-access-token', + username: 'gitlab-user', + }); + + const input = yaml.parse(examples[7].example).steps[0].input; + await action.handler({ + ...mockContext, + input, + }); + + expect(mockGitlabClient.ProjectAccessTokens.create).toHaveBeenCalledWith( + '101112', + 'tokenname', + ['read_repository'], + DateTime.now().plus({ days: 365 }).toISODate()!, + { + accessLevel: 40, + }, + ); + + expect(mockContext.output).toHaveBeenCalledWith( + 'access_token', + 'personal-access-token', + ); + }); + + it(`should ${examples[8].description}`, async () => { + mockGitlabClient.ProjectAccessTokens.create.mockResolvedValue({ + token: 'personal-access-token', + username: 'gitlab-user', + }); + + const input = yaml.parse(examples[8].example).steps[0].input; + await action.handler({ + ...mockContext, + input, + }); + + expect(mockGitlabClient.ProjectAccessTokens.create).toHaveBeenCalledWith( + '101112', + 'tokenname', + ['read_repository', 'read_api'], + DateTime.now().plus({ days: 365 }).toISODate()!, + { + accessLevel: 40, + }, + ); + + expect(mockContext.output).toHaveBeenCalledWith( + 'access_token', + 'personal-access-token', + ); + }); + + it(`should ${examples[9].description}`, async () => { + mockGitlabClient.ProjectAccessTokens.create.mockResolvedValue({ + token: 'personal-access-token', + username: 'gitlab-user', + }); + + const input = yaml.parse(examples[9].example).steps[0].input; + await action.handler({ + ...mockContext, + input, + }); + + expect(mockGitlabClient.ProjectAccessTokens.create).toHaveBeenCalledWith( + '101112', + 'tokenname', + ['read_repository'], + DateTime.now().plus({ days: 365 }).toISODate()!, + { + accessLevel: 10, + }, + ); + + expect(mockContext.output).toHaveBeenCalledWith( + 'access_token', + 'personal-access-token', + ); + }); + + it(`should ${examples[10].description}`, async () => { + mockGitlabClient.ProjectAccessTokens.create.mockResolvedValue({ + token: 'personal-access-token', + username: 'gitlab-user', + }); + + const input = yaml.parse(examples[10].example).steps[0].input; + await action.handler({ + ...mockContext, + input, + }); + + expect(mockGitlabClient.ProjectAccessTokens.create).toHaveBeenCalledWith( + '101112', + 'tokenname', + ['read_repository'], + DateTime.now().plus({ days: 365 }).toISODate()!, + { + accessLevel: 40, + }, + ); + + expect(mockContext.output).toHaveBeenCalledWith( + 'access_token', + 'personal-access-token', + ); + }); + + it(`should ${examples[11].description}`, async () => { + mockGitlabClient.ProjectAccessTokens.create.mockResolvedValue({ + token: 'personal-access-token', + username: 'gitlab-user', + }); + + const input = yaml.parse(examples[11].example).steps[0].input; + await action.handler({ + ...mockContext, + input, + }); + + expect(mockGitlabClient.ProjectAccessTokens.create).toHaveBeenCalledWith( + '101112', + 'tokenname', + ['read_repository'], + DateTime.now().plus({ days: 365 }).toISODate()!, + { + accessLevel: 50, + }, + ); + + expect(mockContext.output).toHaveBeenCalledWith( + 'access_token', + 'personal-access-token', + ); + }); + + it(`should ${examples[12].description}`, async () => { + mockGitlabClient.ProjectAccessTokens.create.mockResolvedValue({ + token: 'personal-access-token', + username: 'gitlab-user', + }); + + const input = yaml.parse(examples[12].example).steps[0].input; + await action.handler({ + ...mockContext, + input, + }); + + expect(mockGitlabClient.ProjectAccessTokens.create).toHaveBeenCalledWith( + '101112', + 'no-expiry-token', + ['read_repository'], + DateTime.now().plus({ days: 365 }).toISODate()!, + { + accessLevel: 40, + }, + ); + + expect(mockContext.output).toHaveBeenCalledWith( + 'access_token', + 'personal-access-token', + ); + }); + + it(`should ${examples[13].description}`, async () => { + mockGitlabClient.ProjectAccessTokens.create.mockResolvedValue({ + token: 'personal-access-token', + username: 'gitlab-user', + }); + + const input = yaml.parse(examples[13].example).steps[0].input; + await action.handler({ + ...mockContext, + input, + }); + + expect(mockGitlabClient.ProjectAccessTokens.create).toHaveBeenCalledWith( + '101112', + 'tokenname', + ['read_repository'], + DateTime.now().plus({ days: 365 }).toISODate()!, + { + accessLevel: 40, + }, + ); + + expect(mockContext.output).toHaveBeenCalledWith( + 'access_token', + 'personal-access-token', + ); + }); +}); diff --git a/plugins/scaffolder-backend-module-gitlab/src/actions/gitlabProjectAccessTokenCreate.examples.ts b/plugins/scaffolder-backend-module-gitlab/src/actions/gitlabProjectAccessTokenCreate.examples.ts new file mode 100644 index 0000000..89f8ae6 --- /dev/null +++ b/plugins/scaffolder-backend-module-gitlab/src/actions/gitlabProjectAccessTokenCreate.examples.ts @@ -0,0 +1,263 @@ +/* + * Copyright 2023 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { TemplateExample } from '@backstage/plugin-scaffolder-node'; +import yaml from 'yaml'; + +export const examples: TemplateExample[] = [ + { + description: 'Create a GitLab project access token with minimal options.', + example: yaml.stringify({ + steps: [ + { + id: 'createAccessToken', + action: 'gitlab:projectAccessToken:create', + name: 'Create GitLab Project Access Token', + input: { + repoUrl: 'gitlab.com?repo=repo&owner=owner', + projectId: '456', + }, + }, + ], + }), + }, + { + description: 'Create a GitLab project access token with custom scopes.', + example: yaml.stringify({ + steps: [ + { + id: 'createAccessToken', + action: 'gitlab:projectAccessToken:create', + name: 'Create GitLab Project Access Token', + input: { + repoUrl: 'gitlab.com?repo=repo&owner=owner', + projectId: '789', + scopes: ['read_registry', 'write_repository'], + }, + }, + ], + }), + }, + { + description: 'Create a GitLab project access token with a specified name.', + example: yaml.stringify({ + steps: [ + { + id: 'createAccessToken', + action: 'gitlab:projectAccessToken:create', + name: 'Create GitLab Project Access Token', + input: { + repoUrl: 'gitlab.com?repo=repo&owner=owner', + projectId: '101112', + name: 'my-custom-token', + }, + }, + ], + }), + }, + { + description: + 'Create a GitLab project access token with a numeric project ID.', + example: yaml.stringify({ + steps: [ + { + id: 'createAccessToken', + action: 'gitlab:projectAccessToken:create', + name: 'Create GitLab Project Access Token', + input: { + repoUrl: 'gitlab.com?repo=repo&owner=owner', + projectId: 42, + }, + }, + ], + }), + }, + { + description: + 'Create a GitLab project access token with a specified expired Date.', + example: yaml.stringify({ + steps: [ + { + id: 'createAccessToken', + action: 'gitlab:projectAccessToken:create', + name: 'Create GitLab Project Access Token', + input: { + repoUrl: 'gitlab.com?repo=repo&owner=owner', + projectId: '123', + expiresAt: '2024-06-25', + }, + }, + ], + }), + }, + { + description: 'Create a GitLab project access token with an access level', + example: yaml.stringify({ + steps: [ + { + id: 'createAccessToken', + action: 'gitlab:projectAccessToken:create', + name: 'Create GitLab Project Access Token', + input: { + repoUrl: 'gitlab.com?repo=repo&owner=owner', + projectId: '456', + accessLevel: 30, + }, + }, + ], + }), + }, + { + description: 'Create a GitLab project access token with multiple options', + example: yaml.stringify({ + steps: [ + { + id: 'createAccessToken', + action: 'gitlab:projectAccessToken:create', + name: 'Create GitLab Project Access Token', + input: { + repoUrl: 'gitlab.com?repo=repo&owner=owner', + projectId: '456', + accessLevel: 40, + name: 'full-access-token', + expiresAt: '2024-12-31', + }, + }, + ], + }), + }, + { + description: + 'Create a GitLab project access token with a token for authorization', + example: yaml.stringify({ + steps: [ + { + id: 'createAccessToken', + action: 'gitlab:projectAccessToken:create', + name: 'Create GitLab Project Access Token', + input: { + repoUrl: 'gitlab.com?repo=repo&owner=owner', + projectId: '101112', + token: 'personal-access-token', + }, + }, + ], + }), + }, + { + description: 'Create a GitLab project access token with read-only scopes', + example: yaml.stringify({ + steps: [ + { + id: 'createAccessToken', + action: 'gitlab:projectAccessToken:create', + name: 'Create GitLab Project Access Token', + input: { + repoUrl: 'gitlab.com?repo=repo&owner=owner', + projectId: '101112', + scopes: ['read_repository', 'read_api'], + }, + }, + ], + }), + }, + { + description: 'Create a GitLab project access token with guest access level', + example: yaml.stringify({ + steps: [ + { + id: 'createAccessToken', + action: 'gitlab:projectAccessToken:create', + name: 'Create GitLab Project Access Token', + input: { + repoUrl: 'gitlab.com?repo=repo&owner=owner', + projectId: '101112', + accessLevel: 10, + }, + }, + ], + }), + }, + { + description: + 'Create a GitLab project access token with maintainer access level', + example: yaml.stringify({ + steps: [ + { + id: 'createAccessToken', + action: 'gitlab:projectAccessToken:create', + name: 'Create GitLab Project Access Token', + input: { + repoUrl: 'gitlab.com?repo=repo&owner=owner', + projectId: '101112', + accessLevel: 40, + }, + }, + ], + }), + }, + { + description: 'Create a GitLab project access token with owner access level', + example: yaml.stringify({ + steps: [ + { + id: 'createAccessToken', + action: 'gitlab:projectAccessToken:create', + name: 'Create GitLab Project Access Token', + input: { + repoUrl: 'gitlab.com?repo=repo&owner=owner', + projectId: '101112', + accessLevel: 50, + }, + }, + ], + }), + }, + { + description: + 'Create a GitLab project access token with a specified name and no expiration date', + example: yaml.stringify({ + steps: [ + { + id: 'createAccessToken', + action: 'gitlab:projectAccessToken:create', + name: 'Create GitLab Project Access Token', + input: { + repoUrl: 'gitlab.com?repo=repo&owner=owner', + projectId: '101112', + name: 'no-expiry-token', + }, + }, + ], + }), + }, + { + description: + 'Create a GitLab project access token for a specific gitlab instance', + example: yaml.stringify({ + steps: [ + { + id: 'createAccessToken', + action: 'gitlab:projectAccessToken:create', + name: 'Create GitLab Project Access Token', + input: { + repoUrl: 'gitlab.example.com?repo=repo&owner=owner', + projectId: '101112', + }, + }, + ], + }), + }, +]; diff --git a/plugins/scaffolder-backend-module-gitlab/src/actions/gitlabProjectAccessTokenCreate.test.ts b/plugins/scaffolder-backend-module-gitlab/src/actions/gitlabProjectAccessTokenCreate.test.ts new file mode 100644 index 0000000..0cbc0fc --- /dev/null +++ b/plugins/scaffolder-backend-module-gitlab/src/actions/gitlabProjectAccessTokenCreate.test.ts @@ -0,0 +1,219 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { ConfigReader } from '@backstage/config'; +import { ScmIntegrations } from '@backstage/integration'; +import { createMockActionContext } from '@backstage/plugin-scaffolder-node-test-utils'; +import { createGitlabProjectAccessTokenAction } from './gitlabProjectAccessTokenCreate'; // Adjust the import based on your project structure +import { DateTime } from 'luxon'; + +const mockGitlabClient = { + ProjectAccessTokens: { + create: jest.fn(), + }, +}; + +jest.mock('@gitbeaker/rest', () => ({ + Gitlab: class { + constructor() { + return mockGitlabClient; + } + }, +})); + +describe('gitlab:projectAccessToken:create examples', () => { + const config = new ConfigReader({ + integrations: { + gitlab: [ + { + host: 'gitlab.com', + token: 'gitlab-token', + apiBaseUrl: 'https://api.gitlab.com', + }, + { + host: 'hosted.gitlab.com', + apiBaseUrl: 'https://api.hosted.gitlab.com', + }, + ], + }, + }); + + const integrations = ScmIntegrations.fromConfig(config); + const action = createGitlabProjectAccessTokenAction({ integrations }); + + const mockContext = createMockActionContext({ + input: { + repoUrl: 'gitlab.com?repo=repo&owner=owner', + }, + }); + + beforeEach(() => { + jest.resetAllMocks(); + }); + + it('should create a GitLab project access token with minimal options.', async () => { + mockGitlabClient.ProjectAccessTokens.create.mockResolvedValue({ + token: 'gitlab-token', + username: 'gitlab-user', + }); + + await action.handler({ + ...mockContext, + input: { + repoUrl: 'gitlab.com?repo=repo&owner=owner', + projectId: '987', + }, + }); + + expect(mockGitlabClient.ProjectAccessTokens.create).toHaveBeenCalledWith( + '987', + 'tokenname', + ['read_repository'], + DateTime.now().plus({ days: 365 }).toISODate()!, + { + accessLevel: 40, + }, + ); + + expect(mockContext.output).toHaveBeenCalledWith( + 'access_token', + 'gitlab-token', + ); + }); + + it('should create a GitLab project access token with custom scopes.', async () => { + mockGitlabClient.ProjectAccessTokens.create.mockResolvedValue({ + token: 'gitlab-token', + username: 'gitlab-user', + }); + + await action.handler({ + ...mockContext, + input: { + repoUrl: 'gitlab.com?repo=repo&owner=owner', + projectId: '987', + scopes: ['read_registry', 'write_repository'], + }, + }); + + expect(mockGitlabClient.ProjectAccessTokens.create).toHaveBeenCalledWith( + '987', + 'tokenname', + ['read_registry', 'write_repository'], + DateTime.now().plus({ days: 365 }).toISODate()!, + { + accessLevel: 40, + }, + ); + + expect(mockContext.output).toHaveBeenCalledWith( + 'access_token', + 'gitlab-token', + ); + }); + + it('should create a GitLab project access token with a specified name.', async () => { + mockGitlabClient.ProjectAccessTokens.create.mockResolvedValue({ + token: 'gitlab-token', + username: 'gitlab-user', + }); + + await action.handler({ + ...mockContext, + input: { + repoUrl: 'gitlab.com?repo=repo&owner=owner', + projectId: '2110', + name: 'token', + }, + }); + + expect(mockGitlabClient.ProjectAccessTokens.create).toHaveBeenCalledWith( + '2110', + 'token', + ['read_repository'], + DateTime.now().plus({ days: 365 }).toISODate()!, + { + accessLevel: 40, + }, + ); + + expect(mockContext.output).toHaveBeenCalledWith( + 'access_token', + 'gitlab-token', + ); + }); + + it('should create a GitLab project access token with a numeric project ID.', async () => { + mockGitlabClient.ProjectAccessTokens.create.mockResolvedValue({ + token: 'gitlab-token', + username: 'gitlab-user', + }); + + await action.handler({ + ...mockContext, + input: { + repoUrl: 'gitlab.com?repo=repo&owner=owner', + projectId: 23, + }, + }); + + expect(mockGitlabClient.ProjectAccessTokens.create).toHaveBeenCalledWith( + 23, + 'tokenname', + ['read_repository'], + DateTime.now().plus({ days: 365 }).toISODate()!, + { + accessLevel: 40, + }, + ); + + expect(mockContext.output).toHaveBeenCalledWith( + 'access_token', + 'gitlab-token', + ); + }); + + it('should create a GitLab project access token with a specified expired Date.', async () => { + mockGitlabClient.ProjectAccessTokens.create.mockResolvedValue({ + token: 'gitlab-token', + username: 'gitlab-user', + }); + + await action.handler({ + ...mockContext, + input: { + repoUrl: 'gitlab.com?repo=repo&owner=owner', + projectId: '123', + expiresAt: '1999-07-14', + }, + }); + + expect(mockGitlabClient.ProjectAccessTokens.create).toHaveBeenCalledWith( + '123', + 'tokenname', + ['read_repository'], + '1999-07-14', + { + accessLevel: 40, + }, + ); + + expect(mockContext.output).toHaveBeenCalledWith( + 'access_token', + 'gitlab-token', + ); + }); +}); diff --git a/plugins/scaffolder-backend-module-gitlab/src/actions/gitlabProjectAccessTokenCreate.ts b/plugins/scaffolder-backend-module-gitlab/src/actions/gitlabProjectAccessTokenCreate.ts new file mode 100644 index 0000000..47efbda --- /dev/null +++ b/plugins/scaffolder-backend-module-gitlab/src/actions/gitlabProjectAccessTokenCreate.ts @@ -0,0 +1,145 @@ +/* + * Copyright 2021 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { InputError } from '@backstage/errors'; +import { ScmIntegrationRegistry } from '@backstage/integration'; +import { createTemplateAction } from '@backstage/plugin-scaffolder-node'; +import { AccessTokenScopes, Gitlab } from '@gitbeaker/rest'; +import { DateTime } from 'luxon'; +import { getToken } from '../util'; +import { examples } from './gitlabProjectAccessTokenCreate.examples'; + +/** + * Creates a `gitlab:projectAccessToken:create` Scaffolder action. + * + * @param options - Templating configuration. + * @public + */ + +export const createGitlabProjectAccessTokenAction = (options: { + integrations: ScmIntegrationRegistry; +}) => { + const { integrations } = options; + return createTemplateAction({ + id: 'gitlab:projectAccessToken:create', + examples, + schema: { + input: { + projectId: z => + z.union([z.number(), z.string()], { + description: 'Project ID/Name(slug) of the Gitlab Project', + }), + token: z => + z + .string({ + description: 'The token to use for authorization to GitLab', + }) + .optional(), + name: z => + z + .string({ + description: 'Name of Access Key', + }) + .optional(), + repoUrl: z => + z.string({ + description: 'URL to gitlab instance', + }), + accessLevel: z => + z + .number({ + description: + 'Access Level of the Token, 10 (Guest), 20 (Reporter), 30 (Developer), 40 (Maintainer), and 50 (Owner)', + }) + .optional(), + scopes: z => + z + .string({ + description: 'Scopes for a project access token', + }) + .array() + .optional(), + expiresAt: z => + z + .string({ + description: + 'Expiration date of the access token in ISO format (YYYY-MM-DD). If Empty, it will set to the maximum of 365 days.', + }) + .optional(), + }, + output: { + access_token: z => + z.string({ + description: 'Access Token', + }), + }, + }, + async handler(ctx) { + ctx.logger.info(`Creating Token for Project "${ctx.input.projectId}"`); + const { + projectId, + name = 'tokenname', + accessLevel = 40, + scopes = ['read_repository'], + expiresAt, + } = ctx.input; + + const { token, integrationConfig } = getToken(ctx.input, integrations); + + if (!integrationConfig.config.token && token) { + throw new InputError( + `No token available for host ${integrationConfig.config.baseUrl}`, + ); + } + + let api; + + if (!ctx.input.token) { + api = new Gitlab({ + host: integrationConfig.config.baseUrl, + token: token, + }); + } else { + api = new Gitlab({ + host: integrationConfig.config.baseUrl, + oauthToken: token, + }); + } + + const projectAccessToken = await ctx.checkpoint({ + key: `project.access.token.${projectId}.${name}`, + fn: async () => { + const response = await api.ProjectAccessTokens.create( + projectId, + name, + scopes as AccessTokenScopes[], + expiresAt || DateTime.now().plus({ days: 365 }).toISODate()!, + { + accessLevel, + }, + ); + return response.token; + }, + }); + + if (!projectAccessToken) { + throw new Error('Could not create project access token'); + } + + ctx.output('access_token', projectAccessToken); + }, + }); +}; diff --git a/plugins/scaffolder-backend-module-gitlab/src/actions/gitlabProjectDeployTokenCreate.examples.test.ts b/plugins/scaffolder-backend-module-gitlab/src/actions/gitlabProjectDeployTokenCreate.examples.test.ts new file mode 100644 index 0000000..f94468f --- /dev/null +++ b/plugins/scaffolder-backend-module-gitlab/src/actions/gitlabProjectDeployTokenCreate.examples.test.ts @@ -0,0 +1,189 @@ +/* + * Copyright 2023 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { ConfigReader } from '@backstage/config'; +import { ScmIntegrations } from '@backstage/integration'; +import { createMockActionContext } from '@backstage/plugin-scaffolder-node-test-utils'; +import yaml from 'yaml'; +import { createGitlabProjectDeployTokenAction } from './gitlabProjectDeployTokenCreate'; +import { examples } from './gitlabProjectDeployTokenCreate.examples'; + +const mockGitlabClient = { + DeployTokens: { + create: jest.fn(), + }, +}; +jest.mock('@gitbeaker/rest', () => ({ + Gitlab: class { + constructor() { + return mockGitlabClient; + } + }, +})); + +describe('gitlab:create-deploy-token', () => { + const config = new ConfigReader({ + integrations: { + gitlab: [ + { + host: 'gitlab.com', + token: 'tokenlols', + apiBaseUrl: 'https://api.gitlab.com', + }, + { + host: 'hosted.gitlab.com', + apiBaseUrl: 'https://api.hosted.gitlab.com', + }, + ], + }, + }); + + const integrations = ScmIntegrations.fromConfig(config); + const action = createGitlabProjectDeployTokenAction({ integrations }); + const mockContext = createMockActionContext({ + input: { + repoUrl: 'gitlab.com?repo=repo&owner=owner', + projectId: '123', + name: 'tokenname', + username: 'tokenuser', + scopes: ['read_repository'], + }, + }); + + beforeEach(() => { + jest.resetAllMocks(); + }); + + it(`Should ${examples[0].description}`, async () => { + mockGitlabClient.DeployTokens.create.mockResolvedValue({ + token: 'TOKEN', + username: 'User', + }); + + await action.handler({ + ...mockContext, + input: yaml.parse(examples[0].example).steps[0].input, + }); + + expect(mockGitlabClient.DeployTokens.create).toHaveBeenCalledWith( + 'tokenname', + ['read_registry'], + { + projectId: '456', + username: undefined, + }, + ); + + expect(mockContext.output).toHaveBeenCalledWith('deploy_token', 'TOKEN'); + expect(mockContext.output).toHaveBeenCalledWith('user', 'User'); + }); + + it(`Should ${examples[1].description}`, async () => { + mockGitlabClient.DeployTokens.create.mockResolvedValue({ + token: 'TOKEN', + username: 'User', + }); + + await action.handler({ + ...mockContext, + input: yaml.parse(examples[1].example).steps[0].input, + }); + + expect(mockGitlabClient.DeployTokens.create).toHaveBeenCalledWith( + 'tokenname', + ['read_registry', 'write_repository'], + { + projectId: '789', + username: undefined, + }, + ); + + expect(mockContext.output).toHaveBeenCalledWith('deploy_token', 'TOKEN'); + expect(mockContext.output).toHaveBeenCalledWith('user', 'User'); + }); + + it(`Should ${examples[2].description}`, async () => { + mockGitlabClient.DeployTokens.create.mockResolvedValue({ + token: 'TOKEN', + username: 'User', + }); + + await action.handler({ + ...mockContext, + input: yaml.parse(examples[2].example).steps[0].input, + }); + + expect(mockGitlabClient.DeployTokens.create).toHaveBeenCalledWith( + 'my-custom-token', + ['read_registry'], + { + projectId: '101112', + username: undefined, + }, + ); + + expect(mockContext.output).toHaveBeenCalledWith('deploy_token', 'TOKEN'); + expect(mockContext.output).toHaveBeenCalledWith('user', 'User'); + }); + + it(`Should ${examples[3].description}`, async () => { + mockGitlabClient.DeployTokens.create.mockResolvedValue({ + token: 'TOKEN', + username: 'User', + }); + + await action.handler({ + ...mockContext, + input: yaml.parse(examples[3].example).steps[0].input, + }); + + expect(mockGitlabClient.DeployTokens.create).toHaveBeenCalledWith( + 'tokenname', + ['read_registry'], + { + projectId: 42, + username: undefined, + }, + ); + + expect(mockContext.output).toHaveBeenCalledWith('deploy_token', 'TOKEN'); + expect(mockContext.output).toHaveBeenCalledWith('user', 'User'); + }); + + it(`Should ${examples[4].description}`, async () => { + mockGitlabClient.DeployTokens.create.mockResolvedValue({ + token: 'TOKEN', + username: 'User', + }); + + await action.handler({ + ...mockContext, + input: yaml.parse(examples[4].example).steps[0].input, + }); + + expect(mockGitlabClient.DeployTokens.create).toHaveBeenCalledWith( + 'tokenname', + ['read_registry'], + { + projectId: 42, + username: 'tokenuser', + }, + ); + + expect(mockContext.output).toHaveBeenCalledWith('deploy_token', 'TOKEN'); + expect(mockContext.output).toHaveBeenCalledWith('user', 'User'); + }); +}); diff --git a/plugins/scaffolder-backend-module-gitlab/src/actions/gitlabProjectDeployTokenCreate.examples.ts b/plugins/scaffolder-backend-module-gitlab/src/actions/gitlabProjectDeployTokenCreate.examples.ts new file mode 100644 index 0000000..f306ee1 --- /dev/null +++ b/plugins/scaffolder-backend-module-gitlab/src/actions/gitlabProjectDeployTokenCreate.examples.ts @@ -0,0 +1,114 @@ +/* + * Copyright 2023 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { TemplateExample } from '@backstage/plugin-scaffolder-node'; +import yaml from 'yaml'; + +export const examples: TemplateExample[] = [ + { + description: 'Create a GitLab project deploy token with minimal options.', + example: yaml.stringify({ + steps: [ + { + id: 'createDeployToken', + action: 'gitlab:projectDeployToken:create', + name: 'Create GitLab Project Deploy Token', + input: { + repoUrl: 'gitlab.com?repo=repo&owner=owner', + projectId: '456', + name: 'tokenname', + scopes: ['read_registry'], + }, + }, + ], + }), + }, + { + description: + 'Create a GitLab project deploy token with many custom scopes.', + example: yaml.stringify({ + steps: [ + { + id: 'createDeployToken', + action: 'gitlab:projectDeployToken:create', + name: 'Create GitLab Project Deploy Token', + input: { + repoUrl: 'gitlab.com?repo=repo&owner=owner', + projectId: '789', + name: 'tokenname', + scopes: ['read_registry', 'write_repository'], + }, + }, + ], + }), + }, + { + description: 'Create a GitLab project deploy token with a specified name.', + example: yaml.stringify({ + steps: [ + { + id: 'createDeployToken', + action: 'gitlab:projectDeployToken:create', + name: 'Create GitLab Project Deploy Token', + input: { + repoUrl: 'gitlab.com?repo=repo&owner=owner', + projectId: '101112', + name: 'my-custom-token', + scopes: ['read_registry'], + }, + }, + ], + }), + }, + { + description: + 'Create a GitLab project deploy token with a numeric project ID.', + example: yaml.stringify({ + steps: [ + { + id: 'createDeployToken', + action: 'gitlab:projectDeployToken:create', + name: 'Create GitLab Project Deploy Token', + input: { + repoUrl: 'gitlab.com?repo=repo&owner=owner', + projectId: 42, + name: 'tokenname', + scopes: ['read_registry'], + }, + }, + ], + }), + }, + + { + description: 'Create a GitLab project deploy token with a custom username', + example: yaml.stringify({ + steps: [ + { + id: 'createDeployToken', + action: 'gitlab:projectDeployToken:create', + name: 'Create GitLab Project Deploy Token', + input: { + repoUrl: 'gitlab.com?repo=repo&owner=owner', + projectId: 42, + name: 'tokenname', + username: 'tokenuser', + scopes: ['read_registry'], + }, + }, + ], + }), + }, +]; diff --git a/plugins/scaffolder-backend-module-gitlab/src/actions/gitlabProjectDeployTokenCreate.test.ts b/plugins/scaffolder-backend-module-gitlab/src/actions/gitlabProjectDeployTokenCreate.test.ts new file mode 100644 index 0000000..4b1c5b5 --- /dev/null +++ b/plugins/scaffolder-backend-module-gitlab/src/actions/gitlabProjectDeployTokenCreate.test.ts @@ -0,0 +1,97 @@ +/* + * Copyright 2021 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { ConfigReader } from '@backstage/config'; +import { ScmIntegrations } from '@backstage/integration'; +import { createMockActionContext } from '@backstage/plugin-scaffolder-node-test-utils'; +import { createGitlabProjectDeployTokenAction } from './gitlabProjectDeployTokenCreate'; + +const mockGitlabClient = { + DeployTokens: { + create: jest.fn(), + }, +}; +jest.mock('@gitbeaker/rest', () => ({ + Gitlab: class { + constructor() { + return mockGitlabClient; + } + }, +})); + +describe('gitlab:create-deploy-token', () => { + const config = new ConfigReader({ + integrations: { + gitlab: [ + { + host: 'gitlab.com', + token: 'tokenlols', + apiBaseUrl: 'https://api.gitlab.com', + }, + { + host: 'hosted.gitlab.com', + apiBaseUrl: 'https://api.hosted.gitlab.com', + }, + ], + }, + }); + + const integrations = ScmIntegrations.fromConfig(config); + const action = createGitlabProjectDeployTokenAction({ integrations }); + const mockContext = createMockActionContext({ + input: { + repoUrl: 'gitlab.com?repo=repo&owner=owner', + projectId: '123', + name: 'tokenname', + username: 'tokenuser', + scopes: ['read_repository'], + }, + }); + + beforeEach(() => { + jest.resetAllMocks(); + }); + + it('should work when there is a token provided through ctx.input', async () => { + mockGitlabClient.DeployTokens.create.mockResolvedValue({ + token: 'TOKEN', + username: 'User', + }); + + await action.handler({ + ...mockContext, + input: { + repoUrl: 'hosted.gitlab.com?repo=bob&owner=owner', + projectId: '123', + name: 'tokenname', + username: 'tokenuser', + scopes: ['read_repository'], + }, + }); + + expect(mockGitlabClient.DeployTokens.create).toHaveBeenCalledWith( + 'tokenname', + ['read_repository'], + { + projectId: '123', + username: 'tokenuser', + }, + ); + + expect(mockContext.output).toHaveBeenCalledWith('deploy_token', 'TOKEN'); + expect(mockContext.output).toHaveBeenCalledWith('user', 'User'); + }); +}); diff --git a/plugins/scaffolder-backend-module-gitlab/src/actions/gitlabProjectDeployTokenCreate.ts b/plugins/scaffolder-backend-module-gitlab/src/actions/gitlabProjectDeployTokenCreate.ts new file mode 100644 index 0000000..ad7f984 --- /dev/null +++ b/plugins/scaffolder-backend-module-gitlab/src/actions/gitlabProjectDeployTokenCreate.ts @@ -0,0 +1,122 @@ +/* + * Copyright 2021 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { InputError } from '@backstage/errors'; +import { ScmIntegrationRegistry } from '@backstage/integration'; +import { createTemplateAction } from '@backstage/plugin-scaffolder-node'; +import { DeployTokenScope, Gitlab } from '@gitbeaker/rest'; +import { getToken } from '../util'; +import { examples } from './gitlabProjectDeployTokenCreate.examples'; + +/** + * Creates a `gitlab:projectDeployToken:create` Scaffolder action. + * + * @param options - Templating configuration. + * @public + */ +export const createGitlabProjectDeployTokenAction = (options: { + integrations: ScmIntegrationRegistry; +}) => { + const { integrations } = options; + return createTemplateAction({ + id: 'gitlab:projectDeployToken:create', + examples, + schema: { + input: { + repoUrl: z => + z.string({ + description: `Accepts the format 'gitlab.com?repo=project_name&owner=group_name' where 'project_name' is the repository name and 'group_name' is a group or username`, + }), + token: z => + z + .string({ + description: 'The token to use for authorization to GitLab', + }) + .optional(), + projectId: z => + z.union([z.number(), z.string()], { + description: 'Project ID', + }), + name: z => + z.string({ + description: 'Deploy Token Name', + }), + username: z => + z + .string({ + description: 'Deploy Token Username', + }) + .optional(), + scopes: z => + z.array(z.string(), { + description: 'Scopes', + }), + }, + output: { + deploy_token: z => + z.string({ + description: 'Deploy Token', + }), + user: z => + z.string({ + description: 'User', + }), + }, + }, + async handler(ctx) { + ctx.logger.info(`Creating Token for Project "${ctx.input.projectId}"`); + const { projectId, name, username, scopes } = ctx.input; + const { token, integrationConfig } = getToken(ctx.input, integrations); + + if (scopes.length === 0) { + throw new InputError( + `Could not create token for project "${ctx.input.projectId}": scopes cannot be empty.`, + ); + } + + const api = new Gitlab({ + host: integrationConfig.config.baseUrl, + token: token, + }); + + const { deployToken, deployUsername } = await ctx.checkpoint({ + key: `create.deploy.token.${projectId}.${name}`, + fn: async () => { + const res = await api.DeployTokens.create( + name, + scopes as DeployTokenScope[], + { + projectId, + username, + }, + ); + + if (!res.hasOwnProperty('token')) { + throw new InputError(`No deploy_token given from gitlab instance`); + } + + return { + deployToken: res.token as string, + deployUsername: res.username, + }; + }, + }); + + ctx.output('deploy_token', deployToken); + ctx.output('user', deployUsername); + }, + }); +}; diff --git a/plugins/scaffolder-backend-module-gitlab/src/actions/gitlabProjectMigrate.examples.test.ts b/plugins/scaffolder-backend-module-gitlab/src/actions/gitlabProjectMigrate.examples.test.ts new file mode 100644 index 0000000..df99638 --- /dev/null +++ b/plugins/scaffolder-backend-module-gitlab/src/actions/gitlabProjectMigrate.examples.test.ts @@ -0,0 +1,91 @@ +/* + * Copyright 2023 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { ConfigReader } from '@backstage/config'; +import { ScmIntegrations } from '@backstage/integration'; +import { TemplateAction } from '@backstage/plugin-scaffolder-node'; +import { createGitlabProjectMigrateAction } from './gitlabProjectMigrate'; +import { createMockActionContext } from '@backstage/plugin-scaffolder-node-test-utils'; +import { createMockDirectory } from '@backstage/backend-test-utils'; +import { examples } from './gitlabProjectMigrate.examples'; +import yaml from 'yaml'; + +const mockGitlabClient = { + Migrations: { + create: jest.fn(() => ({ + id: 0, + })), + }, +}; + +jest.mock('@gitbeaker/rest', () => ({ + Gitlab: class { + constructor() { + return mockGitlabClient; + } + }, +})); + +describe('gitlab:group:migrate', () => { + let instance: TemplateAction; + + beforeEach(() => { + jest.clearAllMocks(); + + const config = new ConfigReader({ + integrations: { + gitlab: [ + { + host: 'gitlab.local.com', + token: 'token', + apiBaseUrl: 'https://api.gitlab.local.com', + }, + { + host: 'hosted.gitlab.com', + apiBaseUrl: 'https://api.hosted.gitlab.com', + }, + ], + }, + }); + + const integrations = ScmIntegrations.fromConfig(config); + instance = createGitlabProjectMigrateAction({ integrations }); + }); + + describe('Migrate a gitlab project to a different gitlab instance in another', () => { + const workspacePath = createMockDirectory().resolve('workspace'); + + it(`Execute example ${examples[0].description}`, async () => { + const input = yaml.parse(examples[0].example).steps[0].input; + const ctx = createMockActionContext({ input, workspacePath }); + await instance.handler(ctx); + + expect(mockGitlabClient.Migrations.create).toHaveBeenCalledWith( + { + url: 'https://gitlab.remote.com', + access_token: 'lolstoken', + }, + [ + { + sourceType: 'project_entity', + sourceFullPath: 'my/wonderful-repo', + destinationSlug: 'precious-repo', + destinationNamespace: 'my/local/site', + }, + ], + ); + }); + }); +}); diff --git a/plugins/scaffolder-backend-module-gitlab/src/actions/gitlabProjectMigrate.examples.ts b/plugins/scaffolder-backend-module-gitlab/src/actions/gitlabProjectMigrate.examples.ts new file mode 100644 index 0000000..9fe53cb --- /dev/null +++ b/plugins/scaffolder-backend-module-gitlab/src/actions/gitlabProjectMigrate.examples.ts @@ -0,0 +1,40 @@ +/* + * Copyright 2023 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { TemplateExample } from '@backstage/plugin-scaffolder-node'; +import yaml from 'yaml'; + +export const examples: TemplateExample[] = [ + { + description: 'Import repo from remote GitLab instance', + example: yaml.stringify({ + steps: [ + { + id: 'importGitLabRepo', + action: 'gitlab:repo:push', + name: 'Push changes to gitlab repository', + input: { + destinationAccessToken: 'tokenslols', + destinationUrl: + 'gitlab.local.com?repo=precious-repo&owner=my%2Flocal%2Fsite', + sourceAccessToken: 'lolstoken', + sourceFullPath: 'my/wonderful-repo', + sourceUrl: 'https://gitlab.remote.com', + }, + }, + ], + }), + }, +]; diff --git a/plugins/scaffolder-backend-module-gitlab/src/actions/gitlabProjectMigrate.test.ts b/plugins/scaffolder-backend-module-gitlab/src/actions/gitlabProjectMigrate.test.ts new file mode 100644 index 0000000..8163d83 --- /dev/null +++ b/plugins/scaffolder-backend-module-gitlab/src/actions/gitlabProjectMigrate.test.ts @@ -0,0 +1,96 @@ +/* + * Copyright 2023 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { ConfigReader } from '@backstage/config'; +import { ScmIntegrations } from '@backstage/integration'; +import { TemplateAction } from '@backstage/plugin-scaffolder-node'; +import { createGitlabProjectMigrateAction } from './gitlabProjectMigrate'; +import { createMockActionContext } from '@backstage/plugin-scaffolder-node-test-utils'; +import { createMockDirectory } from '@backstage/backend-test-utils'; + +const mockGitlabClient = { + Migrations: { + create: jest.fn(() => ({ + id: 0, + })), + }, +}; + +jest.mock('@gitbeaker/rest', () => ({ + Gitlab: class { + constructor() { + return mockGitlabClient; + } + }, +})); + +describe('createGitlabRepoMigrate', () => { + let instance: TemplateAction; + + beforeEach(() => { + jest.clearAllMocks(); + + const config = new ConfigReader({ + integrations: { + gitlab: [ + { + host: 'gitlab.com', + token: 'token', + apiBaseUrl: 'https://api.gitlab.com', + }, + { + host: 'hosted.gitlab.com', + apiBaseUrl: 'https://api.hosted.gitlab.com', + }, + ], + }, + }); + + const integrations = ScmIntegrations.fromConfig(config); + instance = createGitlabProjectMigrateAction({ integrations }); + }); + + describe('createGitlabRepoImportAction', () => { + const workspacePath = createMockDirectory().resolve('workspace'); + + it('default repo import action is created', async () => { + const input = { + destinationAccessToken: 'moreLOLsToken', + destinationUrl: + 'gitlab.com?owner=migrated%2Ffoo%2Fbar&repo=migrated-go-lang', + sourceUrl: 'https://gitlab.remote.com', + sourceAccessToken: 'lolstoken', + sourceFullPath: 'foo/bar/go-lang', + }; + const ctx = createMockActionContext({ input, workspacePath }); + await instance.handler(ctx); + + expect(mockGitlabClient.Migrations.create).toHaveBeenCalledWith( + { + url: 'https://gitlab.remote.com', + access_token: 'lolstoken', + }, + [ + { + sourceType: 'project_entity', + sourceFullPath: 'foo/bar/go-lang', + destinationSlug: 'migrated-go-lang', + destinationNamespace: 'migrated/foo/bar', + }, + ], + ); + }); + }); +}); diff --git a/plugins/scaffolder-backend-module-gitlab/src/actions/gitlabProjectMigrate.ts b/plugins/scaffolder-backend-module-gitlab/src/actions/gitlabProjectMigrate.ts new file mode 100644 index 0000000..5de449d --- /dev/null +++ b/plugins/scaffolder-backend-module-gitlab/src/actions/gitlabProjectMigrate.ts @@ -0,0 +1,141 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { + createTemplateAction, + parseRepoUrl, +} from '@backstage/plugin-scaffolder-node'; +import { ScmIntegrationRegistry } from '@backstage/integration'; +import { InputError } from '@backstage/errors'; +import { createGitlabApi } from './helpers'; +import { examples } from './gitlabRepoPush.examples'; +import { MigrationEntityOptions } from '@gitbeaker/rest'; + +/** + * Create a new action that imports a gitlab project into another gitlab project (potentially from another gitlab instance). + * + * @public + */ +export const createGitlabProjectMigrateAction = (options: { + integrations: ScmIntegrationRegistry; +}) => { + const { integrations } = options; + + return createTemplateAction({ + id: 'gitlab:group:migrate', + examples, + schema: { + input: { + destinationAccessToken: z => + z.string({ + description: `The token to use for authorization to the target GitLab'`, + }), + destinationUrl: z => + z.string({ + description: `Accepts the format 'gitlab.com?repo=project_name&owner=group_name' where 'project_name' is the repository name and 'group_name' is a group or username`, + }), + sourceAccessToken: z => + z.string({ + description: `The token to use for authorization to the source GitLab'`, + }), + sourceFullPath: z => + z.string({ + description: + 'Full path to the project in the source Gitlab instance', + }), + sourceUrl: z => + z.string({ + description: `Accepts the format 'https://gitlab.com/'`, + }), + }, + output: { + importedRepoUrl: z => + z.string({ + description: 'URL to the newly imported repo', + }), + migrationId: z => + z.number({ + description: 'Id of the migration that imports the project', + }), + }, + }, + + async handler(ctx) { + const { + destinationAccessToken, + destinationUrl, + sourceAccessToken, + sourceFullPath, + sourceUrl, + } = ctx.input; + + const { + host: destinationHost, + repo: destinationSlug, + owner: destinationNamespace, + } = parseRepoUrl(destinationUrl, integrations); + + if (!destinationNamespace) { + throw new InputError( + `Failed to determine target repository to migrate to. Make sure destinationUrl matches the format 'gitlab.myorg.com?repo=project_name&owner=group_name'`, + ); + } + + const api = createGitlabApi({ + integrations, + token: destinationAccessToken, + repoUrl: destinationUrl, + }); + + const migrationEntity: MigrationEntityOptions[] = [ + { + sourceType: 'project_entity', + sourceFullPath: sourceFullPath, + destinationSlug: destinationSlug, + destinationNamespace: destinationNamespace, + }, + ]; + + const sourceConfig = { + url: sourceUrl, + access_token: sourceAccessToken, + }; + + try { + const migrationId = await ctx.checkpoint({ + key: `create.migration.${sourceUrl}`, + fn: async () => { + const migrationStatus = await api.Migrations.create( + sourceConfig, + migrationEntity, + ); + return migrationStatus.id; + }, + }); + + ctx.output( + 'importedRepoUrl', + `${destinationHost}/${destinationNamespace}/${destinationSlug}`, + ); + ctx.output('migrationId', migrationId); + } catch (e: any) { + throw new InputError( + `Failed to transfer repo ${sourceFullPath}. Make sure that ${sourceFullPath} exists in ${sourceUrl}, and token has enough rights.\nError: ${e}`, + ); + } + }, + }); +}; diff --git a/plugins/scaffolder-backend-module-gitlab/src/actions/gitlabProjectVariableCreate.examples.test.ts b/plugins/scaffolder-backend-module-gitlab/src/actions/gitlabProjectVariableCreate.examples.test.ts new file mode 100644 index 0000000..99b2668 --- /dev/null +++ b/plugins/scaffolder-backend-module-gitlab/src/actions/gitlabProjectVariableCreate.examples.test.ts @@ -0,0 +1,237 @@ +/* + * Copyright 2021 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { ConfigReader } from '@backstage/config'; +import { ScmIntegrations } from '@backstage/integration'; +import { createMockActionContext } from '@backstage/plugin-scaffolder-node-test-utils'; +import yaml from 'yaml'; +import { createGitlabProjectVariableAction } from './gitlabProjectVariableCreate'; +import { examples } from './gitlabProjectVariableCreate.examples'; + +const mockGitlabClient = { + ProjectVariables: { + create: jest.fn(), + }, +}; +jest.mock('@gitbeaker/rest', () => ({ + Gitlab: class { + constructor() { + return mockGitlabClient; + } + }, +})); + +describe('gitlab:projectVariableAction: create examples', () => { + const config = new ConfigReader({ + integrations: { + gitlab: [ + { + host: 'gitlab.com', + token: 'tokenlols', + apiBaseUrl: 'https://api.gitlab.com/api/v4', + }, + { + host: 'hosted.gitlab.com', + apiBaseUrl: 'https://api.hosted.gitlab.com', + }, + ], + }, + }); + + const integrations = ScmIntegrations.fromConfig(config); + const action = createGitlabProjectVariableAction({ integrations }); + const mockContext = createMockActionContext({ + input: { + repoUrl: 'gitlab.com?repo=repo&owner=owner', + projectId: '123', + key: 'MY_VARIABLE', + value: 'my_value', + variableType: 'env_var', + }, + }); + + beforeEach(() => { + jest.resetAllMocks(); + }); + + it(`Should ${examples[0].description}`, async () => { + mockGitlabClient.ProjectVariables.create.mockResolvedValue({ + token: 'TOKEN', + }); + + await action.handler({ + ...mockContext, + input: yaml.parse(examples[0].example).steps[0].input, + }); + + expect(mockGitlabClient.ProjectVariables.create).toHaveBeenCalledWith( + '123', + 'MY_VARIABLE', + 'my_value', + { + variableType: 'env_var', // Correctly using variableType + environmentScope: '*', + masked: false, + protected: false, + raw: false, + }, + ); + }); + + it(`Should ${examples[1].description}`, async () => { + mockGitlabClient.ProjectVariables.create.mockResolvedValue({ + token: 'TOKEN', + }); + + await action.handler({ + ...mockContext, + input: yaml.parse(examples[1].example).steps[0].input, + }); + + expect(mockGitlabClient.ProjectVariables.create).toHaveBeenCalledWith( + '123', + 'MY_VARIABLE', + 'my-file-content', + { + variableType: 'file', // Correctly using variableType + protected: false, + masked: false, + raw: false, + environmentScope: '*', + }, + ); + }); + + it(`Should ${examples[2].description}`, async () => { + mockGitlabClient.ProjectVariables.create.mockResolvedValue({ + token: 'TOKEN', + }); + + await action.handler({ + ...mockContext, + input: yaml.parse(examples[2].example).steps[0].input, + }); + + expect(mockGitlabClient.ProjectVariables.create).toHaveBeenCalledWith( + '456', + 'MY_VARIABLE', + 'my_value', + { + masked: false, + raw: false, + environmentScope: '*', + variableType: 'env_var', // Correctly using variableType + protected: true, + }, + ); + }); + + it(`Should ${examples[3].description}`, async () => { + mockGitlabClient.ProjectVariables.create.mockResolvedValue({ + token: 'TOKEN', + }); + + await action.handler({ + ...mockContext, + input: yaml.parse(examples[3].example).steps[0].input, + }); + + expect(mockGitlabClient.ProjectVariables.create).toHaveBeenCalledWith( + '789', + 'DB_PASSWORD', + 'password123', + { + protected: false, + raw: false, + environmentScope: '*', + variableType: 'env_var', // Correctly using variableType + masked: true, + }, + ); + }); + + it(`Should ${examples[4].description}`, async () => { + mockGitlabClient.ProjectVariables.create.mockResolvedValue({ + token: 'TOKEN', + }); + + await action.handler({ + ...mockContext, + input: yaml.parse(examples[4].example).steps[0].input, + }); + + expect(mockGitlabClient.ProjectVariables.create).toHaveBeenCalledWith( + '123', + 'MY_VARIABLE', + 'my_value', + { + protected: false, + environmentScope: '*', + variableType: 'env_var', // Correctly using variableType + masked: false, + raw: true, + }, + ); + }); + + it(`Should ${examples[5].description}`, async () => { + mockGitlabClient.ProjectVariables.create.mockResolvedValue({ + token: 'TOKEN', + }); + + await action.handler({ + ...mockContext, + input: yaml.parse(examples[5].example).steps[0].input, + }); + + expect(mockGitlabClient.ProjectVariables.create).toHaveBeenCalledWith( + '123', + 'MY_VARIABLE', + 'my_value', + { + protected: false, + variableType: 'env_var', // Correctly using variableType + masked: false, + raw: false, + environmentScope: 'production', + }, + ); + }); + + it(`Should ${examples[6].description}`, async () => { + mockGitlabClient.ProjectVariables.create.mockResolvedValue({ + token: 'TOKEN', + }); + + await action.handler({ + ...mockContext, + input: yaml.parse(examples[6].example).steps[0].input, + }); + + expect(mockGitlabClient.ProjectVariables.create).toHaveBeenCalledWith( + '123', + 'MY_VARIABLE', + 'my_value', + { + protected: false, + variableType: 'env_var', // Correctly using variableType + masked: false, + raw: false, + environmentScope: '*', + }, + ); + }); +}); diff --git a/plugins/scaffolder-backend-module-gitlab/src/actions/gitlabProjectVariableCreate.examples.ts b/plugins/scaffolder-backend-module-gitlab/src/actions/gitlabProjectVariableCreate.examples.ts new file mode 100644 index 0000000..81d526f --- /dev/null +++ b/plugins/scaffolder-backend-module-gitlab/src/actions/gitlabProjectVariableCreate.examples.ts @@ -0,0 +1,160 @@ +/* + * Copyright 2023 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { TemplateExample } from '@backstage/plugin-scaffolder-node'; +import yaml from 'yaml'; + +export const examples: TemplateExample[] = [ + { + description: 'Creating a GitLab project variable of type env_var', + example: yaml.stringify({ + steps: [ + { + id: 'createVariable', + action: 'gitlab:createGitlabProjectVariableAction', + name: 'Create GitLab Project Variable', + input: { + repoUrl: 'gitlab.com?repo=repo&owner=owner', + projectId: '123', + key: 'MY_VARIABLE', + value: 'my_value', + variableType: 'env_var', + }, + }, + ], + }), + }, + { + description: 'Creating a GitLab project variable of type file', + example: yaml.stringify({ + steps: [ + { + id: 'createVariable', + action: 'gitlab:createGitlabProjectVariableAction', + name: 'Create GitLab Project Variable', + input: { + repoUrl: 'gitlab.com?repo=repo&owner=owner', + projectId: '123', + key: 'MY_VARIABLE', + value: 'my-file-content', + variableType: 'file', + }, + }, + ], + }), + }, + { + description: 'Create a GitLab project variable that is protected.', + example: yaml.stringify({ + steps: [ + { + id: 'createVariable', + action: 'gitlab:createGitlabProjectVariableAction', + name: 'Create GitLab Project Variable', + input: { + repoUrl: 'gitlab.com?repo=repo&owner=owner', + projectId: '456', + key: 'MY_VARIABLE', + value: 'my_value', + variableType: 'env_var', + variableProtected: true, + }, + }, + ], + }), + }, + { + description: 'Create a GitLab project variable with masked flag as true', + example: yaml.stringify({ + steps: [ + { + id: 'createVariable', + action: 'gitlab:createGitlabProjectVariableAction', + name: 'Create GitLab Project Variable', + input: { + repoUrl: 'gitlab.com?repo=repo&owner=owner', + projectId: '789', + key: 'DB_PASSWORD', + value: 'password123', + variableType: 'env_var', + masked: true, + }, + }, + ], + }), + }, + { + description: 'Create a GitLab project variable that is expandable.', + example: yaml.stringify({ + steps: [ + { + id: 'createVariable', + action: 'gitlab:projectVariable:create', + name: 'Create GitLab Project Variable', + input: { + repoUrl: 'gitlab.com?repo=repo&owner=owner', + projectId: '123', + key: 'MY_VARIABLE', + value: 'my_value', + variableType: 'env_var', + raw: true, + }, + }, + ], + }), + }, + { + description: + 'Create a GitLab project variable with a specific environment scope.', + example: yaml.stringify({ + steps: [ + { + id: 'createVariable', + action: 'gitlab:projectVariable:create', + name: 'Create GitLab Project Variable', + input: { + repoUrl: 'gitlab.com?repo=repo&owner=owner', + projectId: '123', + key: 'MY_VARIABLE', + value: 'my_value', + variableType: 'env_var', + environmentScope: 'production', + }, + }, + ], + }), + }, + { + description: + 'Create a GitLab project variable with a wildcard environment scope.', + example: yaml.stringify({ + steps: [ + { + id: 'createVariable', + action: 'gitlab:projectVariable:create', + name: 'Create GitLab Project Variable', + input: { + repoUrl: 'gitlab.com?repo=repo&owner=owner', + projectId: '123', + key: 'MY_VARIABLE', + value: 'my_value', + variableType: 'env_var', + environmentScope: '*', + }, + }, + ], + }), + }, +]; diff --git a/plugins/scaffolder-backend-module-gitlab/src/actions/gitlabProjectVariableCreate.ts b/plugins/scaffolder-backend-module-gitlab/src/actions/gitlabProjectVariableCreate.ts new file mode 100644 index 0000000..824a856 --- /dev/null +++ b/plugins/scaffolder-backend-module-gitlab/src/actions/gitlabProjectVariableCreate.ts @@ -0,0 +1,129 @@ +/* + * Copyright 2021 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { ScmIntegrationRegistry } from '@backstage/integration'; +import { createTemplateAction } from '@backstage/plugin-scaffolder-node'; +import { VariableType } from '@gitbeaker/rest'; +import { getClient, parseRepoUrl } from '../util'; +import { examples } from './gitlabProjectVariableCreate.examples'; + +/** + * Creates a `gitlab:projectVariable:create` Scaffolder action. + * + * @param options - Templating configuration. + * @public + */ +export const createGitlabProjectVariableAction = (options: { + integrations: ScmIntegrationRegistry; +}) => { + const { integrations } = options; + return createTemplateAction({ + id: 'gitlab:projectVariable:create', + examples, + schema: { + input: { + repoUrl: z => + z.string({ + description: `Accepts the format 'gitlab.com?repo=project_name&owner=group_name' where 'project_name' is the repository name and 'group_name' is a group or username`, + }), + token: z => + z + .string({ + description: 'The token to use for authorization to GitLab', + }) + .optional(), + projectId: z => + z.union([z.number(), z.string()], { + description: 'Project ID', + }), + key: z => + z + .string({ + description: + 'The key of a variable; must have no more than 255 characters; only A-Z, a-z, 0-9, and _ are allowed', + }) + .regex(/^[A-Za-z0-9_]{1,255}$/), + value: z => + z.string({ + description: 'The value of a variable', + }), + variableType: z => + z.string({ + description: 'Variable Type (env_var or file)', + }), + variableProtected: z => + z + .boolean({ + description: 'Whether the variable is protected', + }) + .default(false) + .optional(), + masked: z => + z + .boolean({ + description: 'Whether the variable is masked', + }) + .default(false) + .optional(), + raw: z => + z + .boolean({ + description: 'Whether the variable is expandable', + }) + .default(false) + .optional(), + environmentScope: z => + z + .string({ + description: 'The environment_scope of the variable', + }) + .default('*') + .optional(), + }, + }, + async handler(ctx) { + const { + repoUrl, + projectId, + key, + value, + variableType, + variableProtected = false, + masked = false, + raw = false, + environmentScope = '*', + token, + } = ctx.input; + + const { host } = parseRepoUrl(repoUrl, integrations); + + const api = getClient({ host, integrations, token }); + + await ctx.checkpoint({ + key: `create.project.variables.${projectId}.${key}.${value}`, + fn: async () => { + await api.ProjectVariables.create(projectId, key, value, { + variableType: variableType as VariableType, + protected: variableProtected, + masked, + raw, + environmentScope, + }); + }, + }); + }, + }); +}; diff --git a/plugins/scaffolder-backend-module-gitlab/src/actions/gitlabRepoPush.examples.test.ts b/plugins/scaffolder-backend-module-gitlab/src/actions/gitlabRepoPush.examples.test.ts new file mode 100644 index 0000000..25b6c89 --- /dev/null +++ b/plugins/scaffolder-backend-module-gitlab/src/actions/gitlabRepoPush.examples.test.ts @@ -0,0 +1,184 @@ +/* + * Copyright 2023 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { ConfigReader } from '@backstage/config'; +import { ScmIntegrations } from '@backstage/integration'; +import { TemplateAction } from '@backstage/plugin-scaffolder-node'; +import { createMockDirectory } from '@backstage/backend-test-utils'; +import { createGitlabRepoPushAction } from './gitlabRepoPush'; +import { createMockActionContext } from '@backstage/plugin-scaffolder-node-test-utils'; +import { examples } from './gitlabRepoPush.examples'; +import yaml from 'yaml'; + +const mockGitlabClient = { + Projects: { + create: jest.fn(), + show: jest.fn(async (_: any) => { + return { + default_branch: 'main', + }; + }), + }, + Branches: { + create: jest.fn(), + show: jest.fn(), + }, + Commits: { + create: jest.fn(async (_: any) => ({ + id: 'f8a2c9bd4e2915b0792b43235c779e82ddad54af', + })), + }, +}; + +jest.mock('@gitbeaker/rest', () => ({ + Gitlab: class { + constructor() { + return mockGitlabClient; + } + }, +})); + +describe('gitlab:repo:push', () => { + let instance: TemplateAction; + + const mockDir = createMockDirectory(); + const workspacePath = mockDir.resolve('workspace'); + + beforeEach(() => { + mockDir.clear(); + + const config = new ConfigReader({ + integrations: { + gitlab: [ + { + host: 'gitlab.com', + token: 'token', + apiBaseUrl: 'https://api.gitlab.com', + }, + { + host: 'hosted.gitlab.com', + apiBaseUrl: 'https://api.hosted.gitlab.com', + }, + ], + }, + }); + + const integrations = ScmIntegrations.fromConfig(config); + instance = createGitlabRepoPushAction({ integrations }); + }); + + describe('Push changes to gitlab repository', () => { + it(`Should ${examples[0].description}`, async () => { + const input = yaml.parse(examples[0].example).steps[0].input; + mockDir.setContent({ + [workspacePath]: { + 'abcd.txt': 'Test message', + }, + }); + const ctx = createMockActionContext({ input, workspacePath }); + await instance.handler(ctx); + + expect(mockGitlabClient.Branches.create).toHaveBeenCalledTimes(0); + expect(mockGitlabClient.Commits.create).toHaveBeenCalledWith( + 'owner/repo', + 'feature-branch', + 'Initial Commit', + [ + { + action: 'create', + filePath: 'abcd.txt', + content: 'VGVzdCBtZXNzYWdl', + encoding: 'base64', + execute_filemode: false, + }, + ], + ); + expect(ctx.output).toHaveBeenCalledWith( + 'commitHash', + 'f8a2c9bd4e2915b0792b43235c779e82ddad54af', + ); + }); + }); + + describe('Push changes to gitlab repository with a specific source and target path', () => { + it(`Should ${examples[1].description}`, async () => { + const input = yaml.parse(examples[1].example).steps[0].input; + mockDir.setContent({ + [workspacePath]: { + 'abcd.txt': 'Test message', + source: { + 'abcd.txt': 'Test message', + }, + }, + }); + const ctx = createMockActionContext({ input, workspacePath }); + await instance.handler(ctx); + + expect(mockGitlabClient.Branches.create).toHaveBeenCalledTimes(0); + expect(mockGitlabClient.Commits.create).toHaveBeenCalledWith( + 'owner/repo', + 'feature-branch', + 'Initial Commit', + [ + { + action: 'create', + filePath: 'abcd.txt', + content: 'VGVzdCBtZXNzYWdl', + encoding: 'base64', + execute_filemode: false, + }, + ], + ); + expect(ctx.output).toHaveBeenCalledWith( + 'commitHash', + 'f8a2c9bd4e2915b0792b43235c779e82ddad54af', + ); + }); + }); + + describe('Push changes to gitlab repository with a specific commit action', () => { + it(`Should ${examples[2].description}`, async () => { + const input = yaml.parse(examples[2].example).steps[0].input; + mockDir.setContent({ + [workspacePath]: { + 'abcd.txt': 'Test message', + }, + }); + const ctx = createMockActionContext({ input, workspacePath }); + await instance.handler(ctx); + + expect(mockGitlabClient.Branches.create).toHaveBeenCalledTimes(0); + expect(mockGitlabClient.Commits.create).toHaveBeenCalledWith( + 'owner/repo', + 'feature-branch', + 'Initial Commit', + [ + { + action: 'update', + filePath: 'abcd.txt', + content: 'VGVzdCBtZXNzYWdl', + encoding: 'base64', + execute_filemode: false, + }, + ], + ); + expect(ctx.output).toHaveBeenCalledWith( + 'commitHash', + 'f8a2c9bd4e2915b0792b43235c779e82ddad54af', + ); + }); + }); +}); diff --git a/plugins/scaffolder-backend-module-gitlab/src/actions/gitlabRepoPush.examples.ts b/plugins/scaffolder-backend-module-gitlab/src/actions/gitlabRepoPush.examples.ts new file mode 100644 index 0000000..56a59f2 --- /dev/null +++ b/plugins/scaffolder-backend-module-gitlab/src/actions/gitlabRepoPush.examples.ts @@ -0,0 +1,76 @@ +/* + * Copyright 2023 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { TemplateExample } from '@backstage/plugin-scaffolder-node'; +import yaml from 'yaml'; + +export const examples: TemplateExample[] = [ + { + description: 'Push changes to gitlab repository with minimal changes', + example: yaml.stringify({ + steps: [ + { + id: 'pushChanges', + action: 'gitlab:repo:push', + name: 'Push changes to gitlab repository', + input: { + repoUrl: 'gitlab.com?repo=repo&owner=owner', + commitMessage: 'Initial Commit', + branchName: 'feature-branch', + }, + }, + ], + }), + }, + { + description: + 'Push changes to gitlab repository with a specific source and target path', + example: yaml.stringify({ + steps: [ + { + id: 'pushChanges', + action: 'gitlab:repo:push', + name: 'Push changes to gitlab repository', + input: { + repoUrl: 'gitlab.com?repo=repo&owner=owner', + commitMessage: 'Initial Commit', + branchName: 'feature-branch', + sourcePath: 'src', + targetPath: 'dest', + }, + }, + ], + }), + }, + { + description: + 'Push changes to gitlab repository with a specific commit action', + example: yaml.stringify({ + steps: [ + { + id: 'pushChanges', + action: 'gitlab:repo:push', + name: 'Push changes to gitlab repository', + input: { + repoUrl: 'gitlab.com?repo=repo&owner=owner', + commitMessage: 'Initial Commit', + branchName: 'feature-branch', + commitAction: 'update', + }, + }, + ], + }), + }, +]; diff --git a/plugins/scaffolder-backend-module-gitlab/src/actions/gitlabRepoPush.test.ts b/plugins/scaffolder-backend-module-gitlab/src/actions/gitlabRepoPush.test.ts new file mode 100644 index 0000000..8005c07 --- /dev/null +++ b/plugins/scaffolder-backend-module-gitlab/src/actions/gitlabRepoPush.test.ts @@ -0,0 +1,450 @@ +/* + * Copyright 2023 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { ConfigReader } from '@backstage/config'; +import { ScmIntegrations } from '@backstage/integration'; +import { TemplateAction } from '@backstage/plugin-scaffolder-node'; +import { createMockDirectory } from '@backstage/backend-test-utils'; +import { createGitlabRepoPushAction } from './gitlabRepoPush'; +import { createMockActionContext } from '@backstage/plugin-scaffolder-node-test-utils'; + +const mockGitlabClient = { + Projects: { + create: jest.fn(), + show: jest.fn(async (_: any) => { + return { + default_branch: 'main', + }; + }), + }, + Branches: { + create: jest.fn(), + show: jest.fn(), + }, + Commits: { + create: jest.fn(async (_: any) => ({ + id: 'bb6bce457ed069a38ef8d16ef38602972c7735c5', + })), + }, +}; + +jest.mock('@gitbeaker/rest', () => ({ + Gitlab: class { + constructor() { + return mockGitlabClient; + } + }, +})); + +describe('createGitLabCommit', () => { + let instance: TemplateAction; + + const mockDir = createMockDirectory(); + const workspacePath = mockDir.resolve('workspace'); + + beforeEach(() => { + mockDir.clear(); + + const config = new ConfigReader({ + integrations: { + gitlab: [ + { + host: 'gitlab.com', + token: 'token', + apiBaseUrl: 'https://api.gitlab.com', + }, + { + host: 'hosted.gitlab.com', + apiBaseUrl: 'https://api.hosted.gitlab.com', + }, + ], + }, + }); + + const integrations = ScmIntegrations.fromConfig(config); + instance = createGitlabRepoPushAction({ integrations }); + }); + + describe('createGitLabCommitWithoutCommitAction', () => { + it('default commitAction is create', async () => { + const input = { + repoUrl: 'gitlab.com?repo=repo&owner=owner', + commitMessage: 'Create my new commit', + branchName: 'some-branch', + }; + mockDir.setContent({ + [workspacePath]: { + 'foo.txt': 'Hello there!', + }, + }); + const ctx = createMockActionContext({ input, workspacePath }); + await instance.handler(ctx); + + expect(mockGitlabClient.Branches.create).toHaveBeenCalledTimes(0); + expect(mockGitlabClient.Commits.create).toHaveBeenCalledWith( + 'owner/repo', + 'some-branch', + 'Create my new commit', + [ + { + action: 'create', + filePath: 'foo.txt', + content: 'SGVsbG8gdGhlcmUh', + encoding: 'base64', + execute_filemode: false, + }, + ], + ); + expect(ctx.output).toHaveBeenCalledWith( + 'commitHash', + 'bb6bce457ed069a38ef8d16ef38602972c7735c5', + ); + }); + }); + + describe('createGitLabCommitWithCommitAction', () => { + it('commitAction is create when create is passed in options', async () => { + const input = { + repoUrl: 'gitlab.com?repo=repo&owner=owner', + commitMessage: 'Create my new commit', + branchName: 'some-branch', + commitAction: 'create', + }; + mockDir.setContent({ + [workspacePath]: { + 'foo.txt': 'Hello there!', + }, + }); + + const ctx = createMockActionContext({ input, workspacePath }); + await instance.handler(ctx); + + expect(mockGitlabClient.Branches.create).toHaveBeenCalledTimes(0); + expect(mockGitlabClient.Commits.create).toHaveBeenCalledWith( + 'owner/repo', + 'some-branch', + 'Create my new commit', + [ + { + action: 'create', + filePath: 'foo.txt', + content: 'SGVsbG8gdGhlcmUh', + encoding: 'base64', + execute_filemode: false, + }, + ], + ); + expect(ctx.output).toHaveBeenCalledWith( + 'commitHash', + 'bb6bce457ed069a38ef8d16ef38602972c7735c5', + ); + }); + + it('commitAction is update when update is passed in options', async () => { + const input = { + repoUrl: 'gitlab.com?repo=repo&owner=owner', + commitMessage: 'Create my new commit', + branchName: 'some-branch', + commitAction: 'update', + }; + mockDir.setContent({ + [workspacePath]: { + 'foo.txt': 'Hello there!', + }, + }); + + const ctx = createMockActionContext({ input, workspacePath }); + await instance.handler(ctx); + + expect(mockGitlabClient.Branches.create).toHaveBeenCalledTimes(0); + expect(mockGitlabClient.Commits.create).toHaveBeenCalledWith( + 'owner/repo', + 'some-branch', + 'Create my new commit', + [ + { + action: 'update', + filePath: 'foo.txt', + content: 'SGVsbG8gdGhlcmUh', + encoding: 'base64', + execute_filemode: false, + }, + ], + ); + expect(ctx.output).toHaveBeenCalledWith( + 'commitHash', + 'bb6bce457ed069a38ef8d16ef38602972c7735c5', + ); + }); + + it('commitAction is delete when delete is passed in options', async () => { + const input = { + repoUrl: 'gitlab.com?repo=repo&owner=owner', + commitMessage: 'Create my new commit', + branchName: 'some-branch', + commitAction: 'delete', + }; + mockDir.setContent({ + [workspacePath]: { + 'foo.txt': 'Hello there!', + }, + }); + + const ctx = createMockActionContext({ input, workspacePath }); + await instance.handler(ctx); + + expect(mockGitlabClient.Branches.create).toHaveBeenCalledTimes(0); + expect(mockGitlabClient.Commits.create).toHaveBeenCalledWith( + 'owner/repo', + 'some-branch', + 'Create my new commit', + [ + { + action: 'delete', + filePath: 'foo.txt', + content: 'SGVsbG8gdGhlcmUh', + encoding: 'base64', + execute_filemode: false, + }, + ], + ); + expect(ctx.output).toHaveBeenCalledWith( + 'commitHash', + 'bb6bce457ed069a38ef8d16ef38602972c7735c5', + ); + }); + }); + + describe('with sourcePath', () => { + it('creates a commit with only relevant files', async () => { + const input = { + repoUrl: 'gitlab.com?repo=repo&owner=owner', + commitMessage: 'Create my new commit', + branchName: 'some-branch', + sourcePath: 'source', + commitAction: 'create', + }; + + mockDir.setContent({ + [workspacePath]: { + source: { 'foo.txt': 'Hello there!' }, + irrelevant: { 'bar.txt': 'Nothing to see here' }, + }, + }); + + const ctx = createMockActionContext({ input, workspacePath }); + + await instance.handler(ctx); + + expect(mockGitlabClient.Branches.create).toHaveBeenCalledTimes(0); + expect(mockGitlabClient.Commits.create).toHaveBeenCalledWith( + 'owner/repo', + 'some-branch', + 'Create my new commit', + [ + { + action: 'create', + filePath: 'foo.txt', + content: 'SGVsbG8gdGhlcmUh', + encoding: 'base64', + execute_filemode: false, + }, + ], + ); + expect(ctx.output).toHaveBeenCalledWith( + 'commitHash', + 'bb6bce457ed069a38ef8d16ef38602972c7735c5', + ); + }); + + it('creates a commit with only relevant files placed under different targetPath', async () => { + const input = { + repoUrl: 'gitlab.com?repo=repo&owner=owner', + commitMessage: 'Create my new commit', + branchName: 'some-branch', + sourcePath: 'source', + targetPath: 'target', + commitAction: 'create', + }; + + mockDir.setContent({ + [workspacePath]: { + source: { 'foo.txt': 'Hello there!' }, + irrelevant: { 'bar.txt': 'Nothing to see here' }, + }, + }); + + const ctx = createMockActionContext({ input, workspacePath }); + + await instance.handler(ctx); + + expect(mockGitlabClient.Branches.create).toHaveBeenCalledTimes(0); + expect(mockGitlabClient.Commits.create).toHaveBeenCalledWith( + 'owner/repo', + 'some-branch', + 'Create my new commit', + [ + { + action: 'create', + filePath: 'target/foo.txt', + content: 'SGVsbG8gdGhlcmUh', + encoding: 'base64', + execute_filemode: false, + }, + ], + ); + expect(ctx.output).toHaveBeenCalledWith( + 'commitHash', + 'bb6bce457ed069a38ef8d16ef38602972c7735c5', + ); + }); + + it('should not allow to use files outside of the workspace', async () => { + const input = { + repoUrl: 'gitlab.com?repo=repo&owner=owner', + commitMessage: 'Create my new commit', + branchName: 'some-branch', + sourcePath: '../../test', + commitAction: 'create', + }; + + const ctx = createMockActionContext({ input, workspacePath }); + + await expect(instance.handler(ctx)).rejects.toThrow( + 'Relative path is not allowed to refer to a directory outside its parent', + ); + }); + }); + + describe('createCommitToBranchThatDoesNotExist', () => { + it('should create a new branch', async () => { + mockGitlabClient.Branches.show.mockRejectedValue({ + cause: { + response: { + status: 404, + }, + }, + }); + const input = { + repoUrl: 'gitlab.com?repo=repo&owner=owner', + commitMessage: 'Create my new commit', + branchName: 'some-branch', + }; + mockDir.setContent({ + [workspacePath]: { + 'foo.txt': 'Hello there!', + }, + }); + const ctx = createMockActionContext({ input, workspacePath }); + await instance.handler(ctx); + + expect(mockGitlabClient.Branches.create).toHaveBeenCalledWith( + 'owner/repo', + 'some-branch', + 'main', + ); + expect(mockGitlabClient.Commits.create).toHaveBeenCalledWith( + 'owner/repo', + 'some-branch', + 'Create my new commit', + [ + { + action: 'create', + filePath: 'foo.txt', + content: 'SGVsbG8gdGhlcmUh', + encoding: 'base64', + execute_filemode: false, + }, + ], + ); + expect(ctx.output).toHaveBeenCalledWith( + 'commitHash', + 'bb6bce457ed069a38ef8d16ef38602972c7735c5', + ); + }); + }); + + describe('error handling', () => { + it('throws appropriate error for create action when commit fails', async () => { + const input = { + repoUrl: 'gitlab.com?repo=repo&owner=owner', + commitMessage: 'Create my new commit', + branchName: 'some-branch', + commitAction: 'create', + }; + mockDir.setContent({ + [workspacePath]: { + 'foo.txt': 'Hello there!', + }, + }); + + const ctx = createMockActionContext({ input, workspacePath }); + mockGitlabClient.Commits.create.mockRejectedValue( + new Error('Commit failed'), + ); + + await expect(instance.handler(ctx)).rejects.toThrow( + 'Committing the changes to some-branch failed. Please check that none of the files created by the template already exists. Error: Commit failed', + ); + }); + + it('throws appropriate error for update action when commit fails', async () => { + const input = { + repoUrl: 'gitlab.com?repo=repo&owner=owner', + commitMessage: 'Update my commit', + branchName: 'some-branch', + commitAction: 'update', + }; + mockDir.setContent({ + [workspacePath]: { + 'foo.txt': 'Hello there!', + }, + }); + + const ctx = createMockActionContext({ input, workspacePath }); + mockGitlabClient.Commits.create.mockRejectedValue( + new Error('Commit failed'), + ); + + await expect(instance.handler(ctx)).rejects.toThrow( + "Committing the changes to some-branch failed. Please verify that all files you're trying to modify exist in the repository. Error: Commit failed", + ); + }); + + it('throws appropriate error for delete action when commit fails', async () => { + const input = { + repoUrl: 'gitlab.com?repo=repo&owner=owner', + commitMessage: 'Delete my commit', + branchName: 'some-branch', + commitAction: 'delete', + }; + mockDir.setContent({ + [workspacePath]: { + 'foo.txt': 'Hello there!', + }, + }); + + const ctx = createMockActionContext({ input, workspacePath }); + mockGitlabClient.Commits.create.mockRejectedValue( + new Error('Commit failed'), + ); + + await expect(instance.handler(ctx)).rejects.toThrow( + "Committing the changes to some-branch failed. Please verify that all files you're trying to modify exist in the repository. Error: Commit failed", + ); + }); + }); +}); diff --git a/plugins/scaffolder-backend-module-gitlab/src/actions/gitlabRepoPush.ts b/plugins/scaffolder-backend-module-gitlab/src/actions/gitlabRepoPush.ts new file mode 100644 index 0000000..a3ae415 --- /dev/null +++ b/plugins/scaffolder-backend-module-gitlab/src/actions/gitlabRepoPush.ts @@ -0,0 +1,206 @@ +/* + * Copyright 2023 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import path from 'path'; +import { ScmIntegrationRegistry } from '@backstage/integration'; +import { InputError } from '@backstage/errors'; +import { resolveSafeChildPath } from '@backstage/backend-plugin-api'; +import { + createTemplateAction, + parseRepoUrl, + serializeDirectoryContents, +} from '@backstage/plugin-scaffolder-node'; +import { CommitAction } from '@gitbeaker/rest'; +import { createGitlabApi, getErrorMessage } from './helpers'; +import { examples } from './gitlabRepoPush.examples'; + +/** + * Create a new action that commits into a gitlab repository. + * + * @public + */ +export const createGitlabRepoPushAction = (options: { + integrations: ScmIntegrationRegistry; +}) => { + const { integrations } = options; + + return createTemplateAction({ + id: 'gitlab:repo:push', + examples, + schema: { + input: { + repoUrl: z => + z.string({ + description: `Accepts the format 'gitlab.com?repo=project_name&owner=group_name' where 'project_name' is the repository name and 'group_name' is a group or username`, + }), + branchName: z => + z.string({ + description: 'The branch name for the commit', + }), + commitMessage: z => + z.string({ + description: `The commit message`, + }), + sourcePath: z => + z + .string({ + description: + 'Subdirectory of working directory to copy changes from', + }) + .optional(), + targetPath: z => + z + .string({ + description: 'Subdirectory of repository to apply changes to', + }) + .optional(), + token: z => + z + .string({ + description: 'The token to use for authorization to GitLab', + }) + .optional(), + commitAction: z => + z + .enum(['create', 'update', 'delete'], { + description: + 'The action to be used for git commit. Defaults to create, but can be set to update or delete', + }) + .optional(), + }, + output: { + projectid: z => + z.string({ + description: 'Gitlab Project id/Name(slug)', + }), + projectPath: z => + z.string({ + description: 'Gitlab Project path', + }), + commitHash: z => + z.string({ + description: 'The git commit hash of the commit', + }), + }, + }, + async handler(ctx) { + const { + branchName, + repoUrl, + targetPath, + sourcePath, + token, + commitAction, + } = ctx.input; + + const { owner, repo, project } = parseRepoUrl(repoUrl, integrations); + const repoID = project ? project : `${owner}/${repo}`; + + const api = createGitlabApi({ + integrations, + token, + repoUrl, + }); + + let fileRoot: string; + if (sourcePath) { + fileRoot = resolveSafeChildPath(ctx.workspacePath, sourcePath); + } else { + fileRoot = ctx.workspacePath; + } + + const fileContents = await serializeDirectoryContents(fileRoot, { + gitignore: true, + }); + + const actions: CommitAction[] = fileContents.map(file => ({ + action: commitAction ?? 'create', + filePath: targetPath + ? path.posix.join(targetPath, file.path) + : file.path, + encoding: 'base64', + content: file.content.toString('base64'), + execute_filemode: file.executable, + })); + + const branchExists = await ctx.checkpoint({ + key: `branch.exists.${repoID}.${branchName}`, + fn: async () => { + try { + await api.Branches.show(repoID, branchName); + return true; + } catch (e: any) { + if (e.cause?.response?.status !== 404) { + throw new InputError( + `Failed to check status of branch '${branchName}'. Please make sure that branch already exists or Backstage has permissions to create one. ${getErrorMessage( + e, + )}`, + ); + } + } + return false; + }, + }); + + if (!branchExists) { + // create a branch using the default branch as ref + try { + const projects = await api.Projects.show(repoID); + const { default_branch: defaultBranch } = projects; + await api.Branches.create(repoID, branchName, String(defaultBranch)); + } catch (e) { + throw new InputError( + `The branch '${branchName}' was not found and creation failed with error. Please make sure that branch already exists or Backstage has permissions to create one. ${getErrorMessage( + e, + )}`, + ); + } + } + + try { + const commitId = await ctx.checkpoint({ + key: `commit.create.${repoID}.${branchName}`, + fn: async () => { + const commit = await api.Commits.create( + repoID, + branchName, + ctx.input.commitMessage, + actions, + ); + return commit.id; + }, + }); + + ctx.output('projectid', repoID); + ctx.output('projectPath', repoID); + ctx.output('commitHash', commitId); + } catch (e) { + if (commitAction !== 'create') { + throw new InputError( + `Committing the changes to ${branchName} failed. Please verify that all files you're trying to modify exist in the repository. ${getErrorMessage( + e, + )}`, + ); + } + throw new InputError( + `Committing the changes to ${branchName} failed. Please check that none of the files created by the template already exists. ${getErrorMessage( + e, + )}`, + ); + } + }, + }); +}; diff --git a/plugins/scaffolder-backend-module-gitlab/src/actions/helpers.ts b/plugins/scaffolder-backend-module-gitlab/src/actions/helpers.ts new file mode 100644 index 0000000..59f5601 --- /dev/null +++ b/plugins/scaffolder-backend-module-gitlab/src/actions/helpers.ts @@ -0,0 +1,70 @@ +/* + * Copyright 2023 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { parseRepoUrl } from '@backstage/plugin-scaffolder-node'; +import { ErrorLike, InputError, isError } from '@backstage/errors'; +import { ScmIntegrationRegistry } from '@backstage/integration'; +import { Gitlab } from '@gitbeaker/rest'; +import { GitbeakerRequestError } from '@gitbeaker/requester-utils'; + +export function createGitlabApi(options: { + integrations: ScmIntegrationRegistry; + token?: string; + repoUrl: string; +}): InstanceType { + const { integrations, token: providedToken, repoUrl } = options; + + const { host } = parseRepoUrl(repoUrl, integrations); + + const integrationConfig = integrations.gitlab.byHost(host); + + if (!integrationConfig) { + throw new InputError( + `No matching integration configuration for host ${host}, please check your integrations config`, + ); + } + + if (!integrationConfig.config.token && !providedToken) { + throw new InputError(`No token available for host ${host}`); + } + + const token = providedToken ?? integrationConfig.config.token!; + const tokenType = providedToken ? 'oauthToken' : 'token'; + + return new Gitlab({ + host: integrationConfig.config.baseUrl, + [tokenType]: token, + }); +} + +interface GitlabError extends ErrorLike { + // Errors from Gitlab may also include a description field that contains additional info + description: string; +} + +function isGitlabError(e: unknown): e is GitlabError { + return isError(e) && 'description' in e && typeof e.description === 'string'; +} + +function isGitbeakerRequestError(e: unknown): e is GitbeakerRequestError { + return isError(e) && e.name === 'GitbeakerRequestError'; +} + +export function getErrorMessage(e: unknown): string { + if (isGitbeakerRequestError(e) && e.cause) + return `${e} - ${e.cause.description}`; + if (isGitlabError(e)) return `${e} - ${e.description}`; + return String(e); +} diff --git a/plugins/scaffolder-backend-module-gitlab/src/actions/index.ts b/plugins/scaffolder-backend-module-gitlab/src/actions/index.ts new file mode 100644 index 0000000..c601c46 --- /dev/null +++ b/plugins/scaffolder-backend-module-gitlab/src/actions/index.ts @@ -0,0 +1,26 @@ +/* + * Copyright 2023 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export * from './gitlab'; +export * from './gitlabGroupEnsureExists'; +export * from './gitlabIssueCreate'; +export * from './gitlabIssueEdit'; +export * from './gitlabMergeRequest'; +export * from './gitlabPipelineTrigger'; +export * from './gitlabProjectAccessTokenCreate'; +export * from './gitlabProjectDeployTokenCreate'; +export * from './gitlabProjectVariableCreate'; +export * from './gitlabRepoPush'; +export { IssueType, IssueStateEvent } from '../commonGitlabConfig'; diff --git a/plugins/scaffolder-backend-module-gitlab/src/autocomplete/autocomplete.test.ts b/plugins/scaffolder-backend-module-gitlab/src/autocomplete/autocomplete.test.ts new file mode 100644 index 0000000..a2e2f18 --- /dev/null +++ b/plugins/scaffolder-backend-module-gitlab/src/autocomplete/autocomplete.test.ts @@ -0,0 +1,152 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { InputError } from '@backstage/errors'; +import { ScmIntegrationRegistry } from '@backstage/integration'; +import { createHandleAutocompleteRequest } from './autocomplete'; + +const mockGetClient = require('../util').getClient; + +jest.mock('../util', () => ({ + getClient: jest.fn(), +})); + +describe('handleAutocompleteRequest', () => { + const mockIntegrations = {} as ScmIntegrationRegistry; + const mockClient = { + Groups: { + all: jest.fn(), + allProjects: jest.fn(), + }, + Users: { + showCurrentUser: jest.fn(), + allProjects: jest.fn(), + }, + }; + + beforeEach(() => { + jest.clearAllMocks(); + mockGetClient.mockReturnValue(mockClient); + }); + + it('should return groups and current user', async () => { + const handleAutocompleteRequest = createHandleAutocompleteRequest({ + integrations: mockIntegrations, + }); + + mockClient.Groups.all.mockResolvedValueOnce([ + { full_path: 'group1', id: 1 }, + { full_path: 'group2', id: 2 }, + ]); + mockClient.Groups.all.mockResolvedValueOnce([]); + mockClient.Users.showCurrentUser.mockResolvedValue({ + username: 'user1', + id: 3, + }); + + const result = await handleAutocompleteRequest({ + resource: 'groups', + token: 'token', + context: {}, + }); + + expect(result).toEqual({ + results: [ + { title: 'group1', id: '1' }, + { title: 'group2', id: '2' }, + { title: 'user1', id: '3' }, + ], + }); + }); + + it('should return repositories for a group', async () => { + const handleAutocompleteRequest = createHandleAutocompleteRequest({ + integrations: mockIntegrations, + }); + + mockClient.Users.showCurrentUser.mockResolvedValue({ id: 3 }); + mockClient.Groups.allProjects.mockResolvedValue([ + { name: 'Repo 1', path: 'repo-1' }, + { name: 'Repo 2', path: 'repo-2' }, + ]); + + const result = await handleAutocompleteRequest({ + resource: 'repositories', + token: 'token', + context: { id: '1' }, + }); + + expect(result).toEqual({ + results: [ + { title: 'Repo 1', id: 'repo-1' }, + { title: 'Repo 2', id: 'repo-2' }, + ], + }); + }); + + it('should return repositories for a user', async () => { + const handleAutocompleteRequest = createHandleAutocompleteRequest({ + integrations: mockIntegrations, + }); + + mockClient.Users.showCurrentUser.mockResolvedValue({ id: 1 }); + mockClient.Users.allProjects.mockResolvedValue([ + { name: 'Repo 1', path: 'repo-1' }, + { name: 'Repo 2', path: 'repo-2' }, + ]); + + const result = await handleAutocompleteRequest({ + resource: 'repositories', + token: 'token', + context: { id: '1' }, + }); + + expect(result).toEqual({ + results: [ + { title: 'Repo 1', id: 'repo-1' }, + { title: 'Repo 2', id: 'repo-2' }, + ], + }); + }); + + it('should throw an error for invalid resource', async () => { + const handleAutocompleteRequest = createHandleAutocompleteRequest({ + integrations: mockIntegrations, + }); + + await expect( + handleAutocompleteRequest({ + resource: 'invalid', + token: 'token', + context: {}, + }), + ).rejects.toThrow(InputError); + }); + + it('should throw an error if context id is missing for repositories', async () => { + const handleAutocompleteRequest = createHandleAutocompleteRequest({ + integrations: mockIntegrations, + }); + + await expect( + handleAutocompleteRequest({ + resource: 'repositories', + token: 'token', + context: {}, + }), + ).rejects.toThrow(InputError); + }); +}); diff --git a/plugins/scaffolder-backend-module-gitlab/src/autocomplete/autocomplete.ts b/plugins/scaffolder-backend-module-gitlab/src/autocomplete/autocomplete.ts new file mode 100644 index 0000000..4eddd84 --- /dev/null +++ b/plugins/scaffolder-backend-module-gitlab/src/autocomplete/autocomplete.ts @@ -0,0 +1,108 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { InputError } from '@backstage/errors'; +import { ScmIntegrationRegistry } from '@backstage/integration'; +import { getClient } from '../util'; + +export function createHandleAutocompleteRequest(options: { + integrations: ScmIntegrationRegistry; +}) { + return async function handleAutocompleteRequest({ + resource, + token, + context, + }: { + resource: string; + token: string; + context: Record; + }): Promise<{ + results: { + title?: string; + id: string; + }[]; + }> { + const { integrations } = options; + const client = getClient({ + host: context.host ?? 'gitlab.com', + integrations, + token, + }); + + switch (resource) { + case 'groups': { + let groups: any[] = []; + let page = 1; + const perPage = 100; + let response = []; + let continueFetch = true; + while (continueFetch) { + response = await client.Groups.all({ + pagination: 'offset', + page, + perPage, + }); + + groups = groups.concat(response); + if (response.length < perPage) continueFetch = false; + page++; + } + + const result: { + results: { + title: string; + id: string; + }[]; + } = { + results: groups.map(group => ({ + title: group.full_path, + id: group.id.toString(), + })), + }; + // append also user context + const user = await client.Users.showCurrentUser(); + result.results.push({ + title: user.username, + id: user.id.toString(), + }); + + return result; + } + case 'repositories': { + if (!context.id) + throw new InputError('Missing groupId and userId context parameter'); + + let response; + if ( + context.id === (await client.Users.showCurrentUser())?.id.toString() + ) { + response = await client.Users.allProjects(context.id); + } else { + response = await client.Groups.allProjects(context.id); + } + + return { + results: response.map(project => ({ + title: project.name.trim(), + id: project.path, + })), + }; + } + default: + throw new InputError(`Invalid resource: ${resource}`); + } + }; +} diff --git a/plugins/scaffolder-backend-module-gitlab/src/commonGitlabConfig.ts b/plugins/scaffolder-backend-module-gitlab/src/commonGitlabConfig.ts new file mode 100644 index 0000000..5d0528b --- /dev/null +++ b/plugins/scaffolder-backend-module-gitlab/src/commonGitlabConfig.ts @@ -0,0 +1,53 @@ +/* + * Copyright 2021 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { z } from 'zod'; + +const commonGitlabConfig = z.object({ + repoUrl: z.string({ description: 'Repository Location' }), + token: z + .string({ description: 'The token to use for authorization to GitLab' }) + .optional(), +}); + +export default commonGitlabConfig; + +export const commonGitlabConfigExample = { + repoUrl: 'gitlab.com?owner=namespace-or-owner&repo=project-name', + token: '${{ secrets.USER_OAUTH_TOKEN }}', +}; + +/** + * Gitlab issue types as specified by gitlab api + * + * @public + */ +export enum IssueType { + ISSUE = 'issue', + INCIDENT = 'incident', + TEST = 'test_case', + TASK = 'task', +} + +/** + * Gitlab issue state events for modifications + * + * @public + */ +export enum IssueStateEvent { + CLOSE = 'close', + REOPEN = 'reopen', +} diff --git a/packages/app/e2e-tests/app.test.ts b/plugins/scaffolder-backend-module-gitlab/src/index.ts similarity index 69% rename from packages/app/e2e-tests/app.test.ts rename to plugins/scaffolder-backend-module-gitlab/src/index.ts index d45bc0d..628b892 100644 --- a/packages/app/e2e-tests/app.test.ts +++ b/plugins/scaffolder-backend-module-gitlab/src/index.ts @@ -1,5 +1,5 @@ /* - * Copyright 2020 The Backstage Authors + * Copyright 2023 The Backstage Authors * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -14,10 +14,11 @@ * limitations under the License. */ -import { test, expect } from '@playwright/test'; - -test('App should render the welcome page', async ({ page }) => { - await page.goto('/'); +/** + * A module for the scaffolder backend that lets you interact with gitlab + * + * @packageDocumentation + */ - await expect(page.getByText('My Company Catalog')).toBeVisible(); -}); +export * from './actions'; +export { gitlabModule as default } from './module'; diff --git a/plugins/scaffolder-backend-module-gitlab/src/module.ts b/plugins/scaffolder-backend-module-gitlab/src/module.ts new file mode 100644 index 0000000..7dbfddf --- /dev/null +++ b/plugins/scaffolder-backend-module-gitlab/src/module.ts @@ -0,0 +1,78 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { + coreServices, + createBackendModule, +} from '@backstage/backend-plugin-api'; +import { ScmIntegrations } from '@backstage/integration'; +import { + scaffolderActionsExtensionPoint, + scaffolderAutocompleteExtensionPoint, +} from '@backstage/plugin-scaffolder-node/alpha'; +import { + createGitlabGroupEnsureExistsAction, + createGitlabIssueAction, + createGitlabProjectAccessTokenAction, + createGitlabProjectDeployTokenAction, + createGitlabProjectVariableAction, + createGitlabRepoPushAction, + createPublishGitlabAction, + createPublishGitlabMergeRequestAction, + createTriggerGitlabPipelineAction, + editGitlabIssueAction, +} from './actions'; +import { createGitlabProjectMigrateAction } from './actions/gitlabProjectMigrate'; +import { createHandleAutocompleteRequest } from './autocomplete/autocomplete'; + +/** + * @public + * The GitLab Module for the Scaffolder Backend + */ +export const gitlabModule = createBackendModule({ + pluginId: 'scaffolder', + moduleId: 'gitlab', + register({ registerInit }) { + registerInit({ + deps: { + scaffolder: scaffolderActionsExtensionPoint, + autocomplete: scaffolderAutocompleteExtensionPoint, + config: coreServices.rootConfig, + }, + async init({ scaffolder, autocomplete, config }) { + const integrations = ScmIntegrations.fromConfig(config); + + scaffolder.addActions( + createGitlabGroupEnsureExistsAction({ integrations }), + createGitlabProjectMigrateAction({ integrations }), + createGitlabIssueAction({ integrations }), + createGitlabProjectAccessTokenAction({ integrations }), + createGitlabProjectDeployTokenAction({ integrations }), + createGitlabProjectVariableAction({ integrations }), + createGitlabRepoPushAction({ integrations }), + editGitlabIssueAction({ integrations }), + createPublishGitlabAction({ config, integrations }), + createPublishGitlabMergeRequestAction({ integrations }), + createTriggerGitlabPipelineAction({ integrations }), + ); + + autocomplete.addAutocompleteProvider({ + id: 'gitlab', + handler: createHandleAutocompleteRequest({ integrations }), + }); + }, + }); + }, +}); diff --git a/plugins/scaffolder-backend-module-gitlab/src/util.test.ts b/plugins/scaffolder-backend-module-gitlab/src/util.test.ts new file mode 100644 index 0000000..3fa92db --- /dev/null +++ b/plugins/scaffolder-backend-module-gitlab/src/util.test.ts @@ -0,0 +1,388 @@ +/* + * Copyright 2022 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import * as util from './util'; +import { Gitlab, GroupSchema } from '@gitbeaker/rest'; +import { InputError } from '@backstage/errors'; + +// Mock the Gitlab client and its methods +const mockGitlabClient = { + Groups: { + show: jest.fn(), + }, + Projects: { + show: jest.fn(), + }, + Epics: { + all: jest.fn(), + }, +}; + +jest.mock('@gitbeaker/rest', () => ({ + Gitlab: class { + constructor() { + return mockGitlabClient; + } + }, +})); + +const mockConfig = { + gitlab: [ + { + host: 'gitlab.com', + token: 'withToken', + apiBaseUrl: 'gitlab.com/api/v4', + }, + { + host: 'gitlab.com', + apiBaseUrl: 'gitlab.com/api/v4', + }, + ], +}; +describe('getTopLevelParentGroup', () => { + afterEach(() => jest.resetAllMocks()); + + // Mocked nested groups + const mockGroups: GroupSchema[] = [ + { + id: 789, + parent_id: 0, + path: '', + description: '', + visibility: 'public', + share_with_group_lock: false, + require_two_factor_authentication: false, + two_factor_grace_period: 0, + project_creation_level: '', + subgroup_creation_level: '', + lfs_enabled: false, + default_branch_protection: 0, + request_access_enabled: false, + created_at: '', + avatar_url: '', + full_name: '', + full_path: '', + web_url: '', + name: '', + }, + { + id: 456, + parent_id: 789, + path: '', + description: '', + visibility: 'public', + share_with_group_lock: false, + require_two_factor_authentication: false, + two_factor_grace_period: 0, + project_creation_level: '', + subgroup_creation_level: '', + lfs_enabled: false, + default_branch_protection: 0, + request_access_enabled: false, + created_at: '', + avatar_url: '', + full_name: '', + full_path: '', + web_url: '', + name: '', + }, + { + id: 123, + parent_id: 456, + path: '', + description: '', + visibility: 'public', + share_with_group_lock: false, + require_two_factor_authentication: false, + two_factor_grace_period: 0, + project_creation_level: '', + subgroup_creation_level: '', + lfs_enabled: false, + default_branch_protection: 0, + request_access_enabled: false, + created_at: '', + avatar_url: '', + full_name: '', + full_path: '', + web_url: '', + name: '', + }, + ]; + + // Top level group + const mockTopParentGroup: GroupSchema = { + id: 789, + parent_id: 0, + path: '', + description: '', + visibility: 'public', + share_with_group_lock: false, + require_two_factor_authentication: false, + two_factor_grace_period: 0, + project_creation_level: '', + subgroup_creation_level: '', + lfs_enabled: false, + default_branch_protection: 0, + request_access_enabled: false, + created_at: '', + avatar_url: '', + full_name: '', + full_path: '', + web_url: '', + name: '', + }; + + it('should return the top-level parent group if the input group has a parent in the hierarchy', async () => { + // Instance with token + const apiClient = new Gitlab({ + host: mockConfig.gitlab[0].host, + token: mockConfig.gitlab[0].token!, + }); + + const showSpy = jest.spyOn(mockGitlabClient.Groups, 'show'); + + // Mock implementation of Groups.show + showSpy.mockImplementation( + async (groupId: string | number): Promise => { + const id = + typeof groupId === 'number' ? groupId : parseInt(groupId, 10); + const mockGroup = mockGroups.find(group => group.id === id) || null; + return mockGroup as GroupSchema; + }, + ); + + const action = util.getTopLevelParentGroup(apiClient, 123); + + const result = await action; + expect(result).toEqual(mockTopParentGroup); + }); + + it('should return the input group if it has no parents in the hierarchy', async () => { + // Instance with token + const apiClient = new Gitlab({ + host: mockConfig.gitlab[0].host, + token: mockConfig.gitlab[0].token!, + }); + + const showSpy = jest.spyOn(mockGitlabClient.Groups, 'show'); + + // Mock implementation of Groups.show + showSpy.mockImplementation( + async (groupId: string | number): Promise => { + const id = + typeof groupId === 'number' ? groupId : parseInt(groupId, 10); + const mockGroup = mockGroups.find(group => group.id === id) || null; + return mockGroup as GroupSchema; + }, + ); + + const action = util.getTopLevelParentGroup(apiClient, 789); + + const result = await action; + expect(result).toEqual(mockTopParentGroup); + }); +}); + +describe('checkEpicScope', () => { + afterEach(() => jest.resetAllMocks()); + + it('should return true if the project is inside the epic scope', async () => { + const apiClient = new Gitlab({ + host: mockConfig.gitlab[0].host, + token: mockConfig.gitlab[0].token!, + }); + + const projectId = 123; + const epicId = 456; + + // Mock project, top-level parent group, and epic + const mockProject = { + id: 123, + name: 'You learn', + namespace: { id: 789 }, + path_with_namespace: 'at-once/you-learn', + }; + const mockTopParentGroup = { + id: 789, + name: 'LivingTwice', + full_path: 'at-once/you-learn', + }; + const mockEpic = { id: epicId, group_id: 789 }; + + mockGitlabClient.Projects.show.mockResolvedValue(mockProject); + mockGitlabClient.Groups.show.mockResolvedValue(mockTopParentGroup); + mockGitlabClient.Epics.all.mockResolvedValue([mockEpic]); + + const result = await util.checkEpicScope(apiClient, projectId, epicId); + + expect(result).toBe(true); + expect(mockGitlabClient.Projects.show).toHaveBeenCalledWith(projectId); + expect(mockGitlabClient.Groups.show).toHaveBeenCalledWith( + mockProject.namespace.id, + ); + expect(mockGitlabClient.Epics.all).toHaveBeenCalledWith( + mockTopParentGroup.id, + ); + }); + + it('should return false if the project is not inside the epic scope', async () => { + const apiClient = new Gitlab({ + host: mockConfig.gitlab[0].host, + token: mockConfig.gitlab[0].token!, + }); + + const projectId = 123; + const epicId = 45; + + // Mock project, top-level parent group, and epic + const mockProject = { + id: 123, + name: 'You learn', + namespace: { id: 32 }, + path_with_namespace: 'at-once/you-learn', + }; + const mockTopParentGroup = { + id: 32, + name: 'TheWalls', + full_path: 'you-built/within', + }; + + const mockEpic = { id: epicId, group_id: 32 }; + + mockGitlabClient.Projects.show.mockResolvedValue(mockProject); + mockGitlabClient.Groups.show.mockResolvedValue(mockTopParentGroup); + mockGitlabClient.Epics.all.mockResolvedValue([mockEpic]); + + const result = await util.checkEpicScope(apiClient, projectId, epicId); + + expect(result).toBe(false); + expect(mockGitlabClient.Projects.show).toHaveBeenCalledWith(projectId); + expect(mockGitlabClient.Groups.show).toHaveBeenCalledWith( + mockProject.namespace.id, + ); + expect(mockGitlabClient.Epics.all).toHaveBeenCalledWith( + mockTopParentGroup.id, + ); + }); + + it('should throw an InputError if the project is not found', async () => { + const apiClient = new Gitlab({ + host: mockConfig.gitlab[0].host, + token: mockConfig.gitlab[0].token!, + }); + + const projectId = 123; + const epicId = 456; + + mockGitlabClient.Projects.show.mockResolvedValue(null); + + await expect( + util.checkEpicScope(apiClient, projectId, epicId), + ).rejects.toThrow(InputError); + expect(mockGitlabClient.Projects.show).toHaveBeenCalledWith(projectId); + }); + + it('should throw an InputError if the top-level parent group is not found', async () => { + const apiClient = new Gitlab({ + host: mockConfig.gitlab[0].host, + token: mockConfig.gitlab[0].token!, + }); + + const projectId = 123; + const epicId = 456; + + mockGitlabClient.Projects.show.mockResolvedValue({ + id: 123, + name: 'You learn', + namespace: { id: 789 }, + path_with_namespace: 'at-once/you-learn', + }); + mockGitlabClient.Groups.show.mockResolvedValue(null); + + await expect( + util.checkEpicScope(apiClient, projectId, epicId), + ).rejects.toThrow(InputError); + expect(mockGitlabClient.Projects.show).toHaveBeenCalledWith(projectId); + expect(mockGitlabClient.Groups.show).toHaveBeenCalledWith(789); + }); + + it('should throw an InputError if the epic is not found', async () => { + const apiClient = new Gitlab({ + host: mockConfig.gitlab[0].host, + token: mockConfig.gitlab[0].token!, + }); + + const projectId = 123; + const epicId = 456; + + mockGitlabClient.Projects.show.mockResolvedValue({ + id: 123, + name: 'You learn', + namespace: { id: 789 }, + path_with_namespace: 'at-once/you-learn', + }); + mockGitlabClient.Groups.show.mockResolvedValue({ + id: 789, + name: 'LivingTwice', + full_path: 'at-once/you-learn', + }); + mockGitlabClient.Epics.all.mockResolvedValue([]); + + await expect( + util.checkEpicScope(apiClient, projectId, epicId), + ).rejects.toThrow(InputError); + expect(mockGitlabClient.Projects.show).toHaveBeenCalledWith(projectId); + expect(mockGitlabClient.Groups.show).toHaveBeenCalledWith(789); + expect(mockGitlabClient.Epics.all).toHaveBeenCalledWith(789); + }); +}); + +describe('convertDate', () => { + it('should convert a valid input date with milliseconds to an ISO string', () => { + const inputDate = '1970-01-01T12:00:00.000Z'; + const defaultDate = '1978-10-09T12:00:00Z'; + + const result = util.convertDate(inputDate, defaultDate); + + expect(result).toEqual('1970-01-01T12:00:00.000Z'); + }); + + it('should convert a valid input date to an ISO string', () => { + const inputDate = '1970-01-01T12:00:00Z'; + const defaultDate = '1978-10-09T12:00:00Z'; + + const result = util.convertDate(inputDate, defaultDate); + + expect(result).toEqual('1970-01-01T12:00:00.000Z'); + }); + + it('should use default date if input date is undefined', () => { + const inputDate = undefined; + const defaultDate = '1970-01-01T12:00:00Z'; + + const result = util.convertDate(inputDate, defaultDate); + + expect(result).toEqual('1970-01-01T12:00:00.000Z'); + }); + + it('should throw an InputError if input date is invalid', () => { + const inputDate = 'invalidDate'; + const defaultDate = '2023-02-01T12:00:00Z'; + + // Expecting an InputError to be thrown + expect(() => util.convertDate(inputDate, defaultDate)).toThrow(InputError); + }); +}); diff --git a/plugins/scaffolder-backend-module-gitlab/src/util.ts b/plugins/scaffolder-backend-module-gitlab/src/util.ts new file mode 100644 index 0000000..db1468b --- /dev/null +++ b/plugins/scaffolder-backend-module-gitlab/src/util.ts @@ -0,0 +1,186 @@ +/* + * Copyright 2021 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { InputError } from '@backstage/errors'; +import { + GitLabIntegration, + ScmIntegrationRegistry, +} from '@backstage/integration'; +import { Gitlab, GroupSchema } from '@gitbeaker/rest'; +import { z } from 'zod'; +import commonGitlabConfig from './commonGitlabConfig'; + +export const parseRepoHost = (repoUrl: string): string => { + let parsed; + try { + parsed = new URL(`https://${repoUrl}`); + } catch (error) { + throw new InputError( + `Invalid repo URL passed to publisher, got ${repoUrl}, ${error}`, + ); + } + return parsed.host; +}; + +export const getToken = ( + config: z.infer, + integrations: ScmIntegrationRegistry, +): { token: string; integrationConfig: GitLabIntegration } => { + const host = parseRepoHost(config.repoUrl); + const integrationConfig = integrations.gitlab.byHost(host); + + if (!integrationConfig) { + throw new InputError( + `No matching integration configuration for host ${host}, please check your integrations config`, + ); + } + + const token = config.token || integrationConfig.config.token!; + + return { token: token, integrationConfig: integrationConfig }; +}; + +export type RepoSpec = { + repo: string; + host: string; + owner?: string; +}; + +export const parseRepoUrl = ( + repoUrl: string, + integrations: ScmIntegrationRegistry, +): RepoSpec => { + let parsed; + try { + parsed = new URL(`https://${repoUrl}`); + } catch (error) { + throw new InputError( + `Invalid repo URL passed to publisher, got ${repoUrl}, ${error}`, + ); + } + const host = parsed.host; + const owner = parsed.searchParams.get('owner') ?? undefined; + const repo: string = parsed.searchParams.get('repo')!; + + const type = integrations.byHost(host)?.type; + + if (!type) { + throw new InputError( + `No matching integration configuration for host ${host}, please check your integrations config`, + ); + } + + return { host, owner, repo }; +}; + +export function getClient(props: { + host: string; + token?: string; + integrations: ScmIntegrationRegistry; +}): InstanceType { + const { host, token, integrations } = props; + const integrationConfig = integrations.gitlab.byHost(host); + + if (!integrationConfig) { + throw new InputError( + `No matching integration configuration for host ${host}, please check your integrations config`, + ); + } + + const { config } = integrationConfig; + + if (!config.token && !token) { + throw new InputError(`No token available for host ${host}`); + } + + const requestToken = token || config.token!; + const tokenType = token ? 'oauthToken' : 'token'; + + const gitlabOptions: any = { + host: config.baseUrl, + }; + + gitlabOptions[tokenType] = requestToken; + return new Gitlab(gitlabOptions); +} + +export function convertDate( + inputDate: string | undefined, + defaultDate: string, +) { + try { + return inputDate + ? new Date(inputDate).toISOString() + : new Date(defaultDate).toISOString(); + } catch (error) { + throw new InputError(`Error converting input date - ${error}`); + } +} + +export async function getTopLevelParentGroup( + client: InstanceType, + groupId: number, +): Promise { + try { + const topParentGroup = await client.Groups.show(groupId); + if (topParentGroup.parent_id) { + return getTopLevelParentGroup(client, topParentGroup.parent_id as number); + } + return topParentGroup as GroupSchema; + } catch (error: any) { + throw new InputError( + `Error finding top-level parent group ID: ${error.message}`, + ); + } +} + +export async function checkEpicScope( + client: InstanceType, + projectId: number, + epicId: number, +) { + try { + // If project exists, get the top level group id + const project = await client.Projects.show(projectId); + if (!project) { + throw new InputError( + `Project with id ${projectId} not found. Check your GitLab instance.`, + ); + } + const topParentGroup = await getTopLevelParentGroup( + client, + project.namespace.id, + ); + if (!topParentGroup) { + throw new InputError(`Couldn't find a suitable top-level parent group.`); + } + // Get the epic + const epic = (await client.Epics.all(topParentGroup.id)).find( + (x: any) => x.id === epicId, + ); + if (!epic) { + throw new InputError( + `Epic with id ${epicId} not found in the top-level parent group ${topParentGroup.name}.`, + ); + } + + const epicGroup = await client.Groups.show(epic.group_id as number); + const projectNamespace: string = project.path_with_namespace as string; + return projectNamespace.startsWith(epicGroup.full_path as string); + } catch (error: any) { + throw new InputError(`Could not find epic scope: ${error.message}`); + } +} diff --git a/plugins/terraform-backend/package.json b/plugins/terraform-backend/package.json index 079f630..348cf9a 100644 --- a/plugins/terraform-backend/package.json +++ b/plugins/terraform-backend/package.json @@ -23,10 +23,12 @@ "postpack": "backstage-cli package postpack" }, "dependencies": { - "@backstage/backend-common": "^0.23.2", - "@backstage/backend-defaults": "^0.4.0", - "@backstage/backend-plugin-api": "^0.7.0", - "@backstage/config": "^1.2.0", + "@aws-sdk/client-s3": "^3.1039.0", + "@backstage/backend-common": "^0.25.0", + "@backstage/backend-defaults": "^0.16.0", + "@backstage/backend-plugin-api": "^1.8.0", + "@backstage/config": "^1.3.6", + "@backstage/integration-aws-node": "^0.1.21", "@types/express": "*", "express": "^4.17.1", "express-promise-router": "^4.1.0", @@ -36,13 +38,19 @@ "yn": "^4.0.0" }, "devDependencies": { - "@backstage/cli": "^0.26.10", - "@backstage/plugin-auth-backend": "^0.22.8", - "@backstage/plugin-auth-backend-module-guest-provider": "^0.1.7", + "@backstage/cli": "^0.36.0", + "@backstage/core-plugin-api": "^1.12.5", + "@backstage/plugin-auth-backend": "^0.27.3", + "@backstage/plugin-auth-backend-module-guest-provider": "^0.2.17", "@types/supertest": "^2.0.12", + "jest": "^29.0.0", "msw": "^1.0.0", "supertest": "^6.2.4" }, + "exports": { + ".": "./src/index.ts", + "./alpha": "./src/alpha.ts" + }, "files": [ "dist" ] diff --git a/plugins/terraform-backend/src/alpha.ts b/plugins/terraform-backend/src/alpha.ts new file mode 100644 index 0000000..7079287 --- /dev/null +++ b/plugins/terraform-backend/src/alpha.ts @@ -0,0 +1,7 @@ +/** + * Alpha entry point for the terraform backend plugin. + * Re-exports the plugin for use with the new Backstage backend system. + * + * @alpha + */ +export { terraformPlugin as default } from './plugin'; diff --git a/plugins/terraform-backend/src/service/router.ts b/plugins/terraform-backend/src/service/router.ts index 0002358..eb6bb83 100644 --- a/plugins/terraform-backend/src/service/router.ts +++ b/plugins/terraform-backend/src/service/router.ts @@ -64,7 +64,7 @@ export async function createRouter( Bucket: req.body.Bucket, Prefix: req.body.Key, } - if (token != "1" && token) { + if (token !== "1" && token) { input.ContinuationToken = token; } const command = new ListObjectsV2Command(input); @@ -84,9 +84,11 @@ export async function createRouter( if (fsstat.isDirectory()) { const filenames = fs.readdirSync(req.body.FileLocation); for (const i in filenames) { - responseObject.push({ - Key: `${req.body.FileLocation }/${ filenames[i]}` - }); + if (Object.hasOwn(filenames, i)) { + responseObject.push({ + Key: `${req.body.FileLocation }/${ filenames[i]}` + }); + } } } else if (fsstat.isFile()) { responseObject.push({ diff --git a/plugins/terraform/dev/index.tsx b/plugins/terraform/dev/index.tsx index a701e2d..d6e18be 100644 --- a/plugins/terraform/dev/index.tsx +++ b/plugins/terraform/dev/index.tsx @@ -1,4 +1,4 @@ -import React from 'react'; + import { createDevApp } from '@backstage/dev-utils'; import { terraformPlugin, TerraformPluginPage } from '../src/plugin'; diff --git a/plugins/terraform/package.json b/plugins/terraform/package.json index cb161a5..200e69c 100644 --- a/plugins/terraform/package.json +++ b/plugins/terraform/package.json @@ -3,6 +3,21 @@ "version": "0.1.0", "main": "src/index.ts", "types": "src/index.ts", + "exports": { + ".": "./src/index.ts", + "./alpha": "./src/alpha.tsx", + "./package.json": "./package.json" + }, + "typesVersions": { + "*": { + "alpha": [ + "src/alpha.tsx" + ], + "package.json": [ + "package.json" + ] + } + }, "license": "Apache-2.0", "private": true, "publishConfig": { @@ -24,22 +39,25 @@ "postpack": "backstage-cli package postpack" }, "dependencies": { - "@backstage/core-components": "^0.14.8", - "@backstage/core-plugin-api": "^1.9.3", - "@backstage/theme": "^0.5.6", - "@material-ui/core": "^4.9.13", - "@material-ui/icons": "^4.9.1", - "@material-ui/lab": "^4.0.0-alpha.61", + "@backstage/catalog-model": "^1.7.7", + "@backstage/core-components": "^0.18.8", + "@backstage/core-plugin-api": "^1.12.4", + "@backstage/errors": "^1.2.7", + "@backstage/frontend-plugin-api": "^0.15.1", + "@backstage/plugin-catalog-react": "^2.1.1", + "@backstage/plugin-kubernetes": "^0.12.18", + "@backstage/theme": "^0.7.2", "react-use": "^17.2.4" }, "peerDependencies": { - "react": "^16.13.1 || ^17.0.0" + "react": "^17.0.0 || ^18.0.0", + "react-router-dom": "^7.14.2" }, "devDependencies": { - "@backstage/cli": "^0.26.10", - "@backstage/core-app-api": "^1.13.0", - "@backstage/dev-utils": "^1.0.34", - "@backstage/test-utils": "^1.5.7", + "@backstage/cli": "^0.36.0", + "@backstage/core-app-api": "^1.19.6", + "@backstage/dev-utils": "^1.1.21", + "@backstage/test-utils": "^1.7.16", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", "@testing-library/user-event": "^14.0.0", diff --git a/plugins/terraform/src/alpha.tsx b/plugins/terraform/src/alpha.tsx new file mode 100644 index 0000000..f1e9da0 --- /dev/null +++ b/plugins/terraform/src/alpha.tsx @@ -0,0 +1,23 @@ + +import { createFrontendPlugin, PageBlueprint } from '@backstage/frontend-plugin-api'; + +/** + * PageBlueprint extension for the Terraform plugin. + * Registers the main page under /terraform. + */ +const TerraformPage = PageBlueprint.make({ + params: { + path: '/terraform', + loader: () => + import('./components/RootComponent').then(m => ), + }, +}); + +/** + * New frontend system plugin entry point for @internal/plugin-terraform. + * Import via the "/alpha" sub-path export. + */ +export default createFrontendPlugin({ + pluginId: 'terraform', + extensions: [TerraformPage], +}); diff --git a/plugins/terraform/src/components/MainPageComponent/MainPageComponent.test.tsx b/plugins/terraform/src/components/MainPageComponent/MainPageComponent.test.tsx index d35602f..629063f 100644 --- a/plugins/terraform/src/components/MainPageComponent/MainPageComponent.test.tsx +++ b/plugins/terraform/src/components/MainPageComponent/MainPageComponent.test.tsx @@ -1,4 +1,3 @@ -import React from 'react'; import { MainPageComponent } from './MainPageComponent'; import { rest } from 'msw'; import { setupServer } from 'msw/node'; diff --git a/plugins/terraform/src/components/MainPageComponent/MainPageComponent.tsx b/plugins/terraform/src/components/MainPageComponent/MainPageComponent.tsx index 8825902..997c934 100644 --- a/plugins/terraform/src/components/MainPageComponent/MainPageComponent.tsx +++ b/plugins/terraform/src/components/MainPageComponent/MainPageComponent.tsx @@ -1,12 +1,11 @@ -import React from 'react'; - -// import { -// Header, -// Page, -// Content, -// } from '@backstage/core-components'; +import { Page, Header, Content } from '@backstage/core-components'; import { MainPageFetchComponent } from '../MainPageFetchComponent'; export const MainPageComponent = () => ( - + +
+ + + + ); \ No newline at end of file diff --git a/plugins/terraform/src/components/MainPageFetchComponent/MainPageFetchComponent.test.tsx b/plugins/terraform/src/components/MainPageFetchComponent/MainPageFetchComponent.test.tsx index 0d33112..5768616 100644 --- a/plugins/terraform/src/components/MainPageFetchComponent/MainPageFetchComponent.test.tsx +++ b/plugins/terraform/src/components/MainPageFetchComponent/MainPageFetchComponent.test.tsx @@ -1,4 +1,4 @@ -import React, {Dispatch, SetStateAction} from 'react'; +import { type Dispatch, type SetStateAction } from 'react'; import { screen } from '@testing-library/react'; import { OutputTable, ResourceTable } from './MainPageFetchComponent'; import { @@ -7,7 +7,7 @@ import { describe('MainPageFetchComponent', () => { it('renders the outputs table', async () => { - let fakeOutputs = [{ + const fakeOutputs = [{ "type": "string", "value": "Hello World!" }]; @@ -22,7 +22,7 @@ describe('MainPageFetchComponent', () => { }); it('renders the resources table', async () => { - let fakeResources = [ + const fakeResources = [ { "module": "module.eks", "mode": "managed", diff --git a/plugins/terraform/src/components/MainPageFetchComponent/MainPageFetchComponent.tsx b/plugins/terraform/src/components/MainPageFetchComponent/MainPageFetchComponent.tsx index 00129da..807b48b 100644 --- a/plugins/terraform/src/components/MainPageFetchComponent/MainPageFetchComponent.tsx +++ b/plugins/terraform/src/components/MainPageFetchComponent/MainPageFetchComponent.tsx @@ -1,4 +1,4 @@ -import React, { useState, useEffect, Dispatch, SetStateAction } from 'react'; +import { useState, useEffect, type Dispatch, type SetStateAction, type CSSProperties } from 'react'; import { Table, TableColumn, @@ -12,8 +12,25 @@ import { } from '@backstage/core-components'; import { useApi } from '@backstage/core-plugin-api'; import { useEntity } from '@backstage/plugin-catalog-react'; -import { Grid } from '@material-ui/core'; -import Drawer from '@material-ui/core/Drawer'; +// Slide-over panel styles (replaces MUI Drawer) +const drawerOverlayStyle: CSSProperties = { + position: 'fixed', + inset: 0, + background: 'rgba(0,0,0,0.3)', + zIndex: 1200, +}; +const drawerPanelStyle: CSSProperties = { + position: 'fixed', + top: 0, + right: 0, + bottom: 0, + width: '60%', + padding: '20px', + background: 'var(--backstage-color-background-paper, #fff)', + boxShadow: '-4px 0 24px rgba(0,0,0,0.15)', + zIndex: 1201, + overflowY: 'auto', +}; import { ResponseError } from '@backstage/errors'; import { @@ -26,9 +43,11 @@ import { import { TerraformApiRef } from '../../api'; export const OutputTable = ({ outputs }:any) => { - let data:any = {}; - for(let i in outputs) { - data[Number(i)+1] = outputs[i].value; + const data:any = {}; + for(const i in outputs) { + if (Object.hasOwn(outputs, i)) { + data[Number(i)+1] = outputs[i].value; + } } return ( @@ -81,14 +100,15 @@ export const ResourceTable = ({ resources,setResourceDetail }:{resources:any, se export const TerraformTables = ({ resources,outputs,setResourceDetail }: {resources: any[], outputs: any[], setResourceDetail:Dispatch>}) => { return ( <> - - + {/* CSS grid replaces MUI Grid (MUI removed per BUI migration) */} +
+
- - +
+
- - +
+
); }; @@ -104,36 +124,42 @@ export const ResourceDetailComponent = ({resourceDetail,allResources,setResource useEffect(()=>{ const resourceObj = allResources[resourceDetail.name]; - let newDetails:any = {}; - for(let i in resourceObj) { - if(!Array.isArray(resourceObj[i])) { - newDetails[i] = resourceObj[i]; + const newDetails:any = {}; + for(const i in resourceObj) { + if (Object.hasOwn(resourceObj, i)) { + if(!Array.isArray(resourceObj[i])) { + newDetails[i] = resourceObj[i]; + } } } setDetails(newDetails); const newAttributes:any = {}; - for(let i in resourceObj?.instances[0]?.attributes) { - let attribute:any = resourceObj?.instances[0]?.attributes[i]; - if(Array.isArray(attribute) || typeof attribute === "object") { - newAttributes[i] = JSON.stringify(attribute); - } else if (!attribute) { - newAttributes[i] = ""; - } else { - newAttributes[i] = attribute; + for(const i in resourceObj?.instances[0]?.attributes) { + if (Object.hasOwn(resourceObj?.instances[0]?.attributes, i)) { + const attribute:any = resourceObj?.instances[0]?.attributes[i]; + if(Array.isArray(attribute) || typeof attribute === "object") { + newAttributes[i] = JSON.stringify(attribute); + } else if (!attribute) { + newAttributes[i] = ""; + } else { + newAttributes[i] = attribute; + } } } setAttributes(newAttributes); - let newDependNodes:any[] = [{'id': resourceDetail.displayName, 'name': resourceDetail.name}]; - let newDependEdges:any[] = []; - for(let i in resourceObj?.instances[0]?.dependencies) { - newDependNodes.push({ - 'id': resourceObj.instances[0]?.dependencies[i].displayName, 'name': resourceObj.instances[0]?.dependencies[i].name - }); - newDependEdges.push({ - 'from': resourceObj.instances[0]?.dependencies[i].displayName, 'to': resourceDetail.displayName - }); + const newDependNodes:any[] = [{'id': resourceDetail.displayName, 'name': resourceDetail.name}]; + const newDependEdges:any[] = []; + for(const i in resourceObj?.instances[0]?.dependencies) { + if (Object.hasOwn(resourceObj?.instances[0]?.dependencies, i)) { + newDependNodes.push({ + 'id': resourceObj.instances[0]?.dependencies[i].displayName, 'name': resourceObj.instances[0]?.dependencies[i].name + }); + newDependEdges.push({ + 'from': resourceObj.instances[0]?.dependencies[i].displayName, 'to': resourceDetail.displayName + }); + } } setDependNodes(newDependNodes); setDependEdges(newDependEdges); @@ -143,11 +169,11 @@ export const ResourceDetailComponent = ({resourceDetail,allResources,setResource return (
- { } +   - { } + { const [error] = useState(); function parseResources(resourcesArr:any[]) { - let resourcesObj:any = {}; - let nameIndex:any = {}; - let data:any[] = resourcesArr.filter((resource:any)=> { + const resourcesObj:any = {}; + const nameIndex:any = {}; + const data:any[] = resourcesArr.filter((resource:any)=> { if(resource.mode === "managed") { return true; - } else { + } return false; - } + }).map((resource:any)=> { let resourceName:string = ""; if(resource.module) { - resourceName += resource.module.split("[")[0] + "."; + resourceName += `${resource.module.split("[")[0] }.`; } else { - resourceName += resource.mode + "." + resourceName += `${resource.mode }.` } - resourceName += resource.type + "." + resource.name; + resourceName += `${resource.type }.${ resource.name}`; resourcesObj[resourceName] = resource; let displayName = resourceName; if(resource.instances[0].attributes.name) { @@ -235,15 +261,19 @@ export const MainPageFetchComponent = () => { } }); - for(let i in resourcesObj) { - let newDependenciesObj:any[] = []; - if(resourcesObj[i].instances[0].dependencies) { - for(let j in resourcesObj[i].instances[0].dependencies) { - if(nameIndex[resourcesObj[i].instances[0].dependencies[j]]) { - newDependenciesObj.push({name: resourcesObj[i].instances[0].dependencies[j], displayName: nameIndex[resourcesObj[i].instances[0].dependencies[j]]}); + for(const i in resourcesObj) { + if (Object.hasOwn(resourcesObj, i)) { + const newDependenciesObj:any[] = []; + if(resourcesObj[i].instances[0].dependencies) { + for(const j in resourcesObj[i].instances[0].dependencies) { + if (Object.hasOwn(resourcesObj[i].instances[0].dependencies, j)) { + if(nameIndex[resourcesObj[i].instances[0].dependencies[j]]) { + newDependenciesObj.push({name: resourcesObj[i].instances[0].dependencies[j], displayName: nameIndex[resourcesObj[i].instances[0].dependencies[j]]}); + } + } } + resourcesObj[i].instances[0].dependencies = newDependenciesObj; } - resourcesObj[i].instances[0].dependencies = newDependenciesObj; } } @@ -252,45 +282,6 @@ export const MainPageFetchComponent = () => { } useEffect(() => { - const getStateFiles = async() => { - let resourcesArr:any[] = []; - let outputsArr:any[] = []; - let responseJSON:any = {}; - - if(SecretName) { - responseJSON = await apiClient.getSecret(undefined, SecretNamespace, SecretName); - } else if(Bucket) { - responseJSON = await apiClient.s3GetFileList(Bucket,Prefix); - } else if(FileLocation) { - responseJSON = await apiClient.localGetFileList(FileLocation); - } - - for(let i in responseJSON) { - let tfStateJSON:any = {}; - let file = responseJSON[i]; - if(file.TFStateContents) { - tfStateJSON = await apiClient.deflate(file.TFStateContents); - } else if(file.Key && !file.Key?.endsWith("/")) { - tfStateJSON = await apiClient.getTFStateFile(Bucket,file); - } - - if(tfStateJSON.outputs) { - for(let i in tfStateJSON.outputs) { - outputsArr.push(tfStateJSON.outputs[i]); - } - } - if(tfStateJSON.resources) { - for(let i in tfStateJSON.resources) { - resourcesArr.push(tfStateJSON.resources[i]); - } - } - } - - parseResources(resourcesArr); - setOutputs(outputsArr); - setLoading(false); - }; - let Bucket = ""; let Prefix = ""; let FileLocation = ""; @@ -300,7 +291,7 @@ export const MainPageFetchComponent = () => { if(entity.metadata.annotations?.[TERRAFORM_SECRET_NAME]) { SecretName = entity.metadata.annotations?.[TERRAFORM_SECRET_NAME] || ""; } - + if(entity.metadata.annotations?.[TERRAFORM_SECRET_NAMESPACE]) { SecretNamespace = entity.metadata.annotations?.[TERRAFORM_SECRET_NAMESPACE] || ""; } @@ -319,7 +310,53 @@ export const MainPageFetchComponent = () => { } } + const getStateFiles = async() => { + const resourcesArr:any[] = []; + const outputsArr:any[] = []; + let responseJSON:any = {}; + + if(SecretName) { + responseJSON = await apiClient.getSecret(undefined, SecretNamespace, SecretName); + } else if(Bucket) { + responseJSON = await apiClient.s3GetFileList(Bucket,Prefix); + } else if(FileLocation) { + responseJSON = await apiClient.localGetFileList(FileLocation); + } + + for(const i in responseJSON) { + if (Object.hasOwn(responseJSON, i)) { + let tfStateJSON:any = {}; + const file = responseJSON[i]; + if(file.TFStateContents) { + tfStateJSON = await apiClient.deflate(file.TFStateContents); + } else if(file.Key && !file.Key?.endsWith("/")) { + tfStateJSON = await apiClient.getTFStateFile(Bucket,file); + } + + if(tfStateJSON.outputs) { + for(const k in tfStateJSON.outputs) { + if (Object.hasOwn(tfStateJSON.outputs, k)) { + outputsArr.push(tfStateJSON.outputs[k]); + } + } + } + if(tfStateJSON.resources) { + for(const k in tfStateJSON.resources) { + if (Object.hasOwn(tfStateJSON.resources, k)) { + resourcesArr.push(tfStateJSON.resources[k]); + } + } + } + } + } + + parseResources(resourcesArr); + setOutputs(outputsArr); + setLoading(false); + }; + getStateFiles(); + // eslint-disable-next-line react-hooks/exhaustive-deps }, []); if (loading) { @@ -328,14 +365,15 @@ export const MainPageFetchComponent = () => { return ; } - return <> + return (<> - setResourceDetail({})} - > - - - ; + {resourceDetail.name && ( + <> +
setResourceDetail({})} onKeyDown={(e) => { if (e.key === 'Escape') setResourceDetail({}); }} /> +
+ +
+ + )} + ); }; diff --git a/plugins/terraform/src/components/RootComponent/RootComponent.tsx b/plugins/terraform/src/components/RootComponent/RootComponent.tsx index 4ba7902..e6194a5 100644 --- a/plugins/terraform/src/components/RootComponent/RootComponent.tsx +++ b/plugins/terraform/src/components/RootComponent/RootComponent.tsx @@ -1,4 +1,3 @@ -import React from 'react'; import { Routes, Route } from "react-router-dom"; import { MainPageComponent } from "../MainPageComponent"; diff --git a/plugins/terraform/src/index.ts b/plugins/terraform/src/index.ts index 8f2ccf2..18118d6 100644 --- a/plugins/terraform/src/index.ts +++ b/plugins/terraform/src/index.ts @@ -1 +1 @@ -export {isTerraformAvailable, terraformPlugin, TerraformPluginPage} from './plugin'; \ No newline at end of file +export {isTerraformAvailable, terraformPlugin, TerraformPluginPage, EntityTerraformContent} from './plugin'; \ No newline at end of file diff --git a/plugins/terraform/src/plugin.ts b/plugins/terraform/src/plugin.ts index 0f3e194..dc9f4f3 100644 --- a/plugins/terraform/src/plugin.ts +++ b/plugins/terraform/src/plugin.ts @@ -48,3 +48,14 @@ export const TerraformPluginPage = terraformPlugin.provide( mountPoint: rootRouteRef, }), ); + +export const EntityTerraformContent = terraformPlugin.provide( + createRoutableExtension({ + name: 'EntityTerraformContent', + component: () => + import('./components/MainPageFetchComponent').then( + m => m.MainPageFetchComponent, + ), + mountPoint: rootRouteRef, + }), +); diff --git a/tsconfig.json b/tsconfig.json index ba3f901..a46db52 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,14 +1,8 @@ { "extends": "@backstage/cli/config/tsconfig.json", - "include": [ - "packages/*/src", - "plugins/*/src", - "plugins/*/dev", - "plugins/*/migrations" - ], - "exclude": ["node_modules"], - "compilerOptions": { - "outDir": "dist-types", - "rootDir": "." - } + "include": [], + "references": [ + { "path": "packages/app" }, + { "path": "packages/backend" } + ] } diff --git a/yarn.lock b/yarn.lock index be13326..2ae7664 100644 --- a/yarn.lock +++ b/yarn.lock @@ -7,48 +7,127 @@ resolved "https://registry.npmmirror.com/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz#bd9154aec9983f77b3a034ecaa015c2e4201f6cf" integrity sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA== +"@acemir/cssom@^0.9.31": + version "0.9.31" + resolved "https://registry.yarnpkg.com/@acemir/cssom/-/cssom-0.9.31.tgz#bd5337d290fb8be2ac18391f37386bc53778b0bc" + integrity sha512-ZnR3GSaH+/vJ0YlHau21FjfLYjMpYVIzTD8M8vIEQvIGxeOXyXdzCI140rrCY862p/C/BbzWsjc1dgnM9mkoTA== + "@adobe/css-tools@^4.0.1", "@adobe/css-tools@^4.3.2": version "4.3.3" resolved "https://registry.npmmirror.com/@adobe/css-tools/-/css-tools-4.3.3.tgz#90749bde8b89cd41764224f5aac29cd4138f75ff" integrity sha512-rE0Pygv0sEZ4vBWHlAgJLGDU7Pm8xoO6p3wsEceb7GYAjScrOHpEo8KK/eVkAcnSM+slAEtXjA2JpdjLp4fJQQ== -"@ampproject/remapping@^2.2.0": - version "2.2.1" - resolved "https://registry.npmmirror.com/@ampproject/remapping/-/remapping-2.2.1.tgz#99e8e11851128b8702cd57c33684f1d0f260b630" - integrity sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg== - dependencies: - "@jridgewell/gen-mapping" "^0.3.0" - "@jridgewell/trace-mapping" "^0.3.9" +"@adobe/react-spectrum-ui@1.2.1": + version "1.2.1" + resolved "https://registry.yarnpkg.com/@adobe/react-spectrum-ui/-/react-spectrum-ui-1.2.1.tgz#31651a1c664b014bd7b4f8a2265e26ae418aecec" + integrity sha512-wcrbEE2O/9WnEn6avBnaVRRx88S5PLFsPLr4wffzlbMfXeQsy+RMQwaJd3cbzrn18/j04Isit7f7Emfn0dhrJA== + +"@adobe/react-spectrum-workflow@2.3.5": + version "2.3.5" + resolved "https://registry.yarnpkg.com/@adobe/react-spectrum-workflow/-/react-spectrum-workflow-2.3.5.tgz#3f5adc5fe2bae25416805b7d92c1ff5bd1e061f0" + integrity sha512-b53VIPwPWKb/T5gzE3qs+QlGP5gVrw/LnWV3xMksDU+CRl3rzOKUwxIGiZO8ICyYh1WiyqY4myGlPU/nAynBUg== + +"@adobe/react-spectrum@3.47.0": + version "3.47.0" + resolved "https://registry.yarnpkg.com/@adobe/react-spectrum/-/react-spectrum-3.47.0.tgz#efc3540225bb73dd94b70499adb61dfe1041b8af" + integrity sha512-EDQuMzz0kUeiMUUlxoeLFQyyxOXaAC7qlBw2PYOUfFLYd87xcV7VVV0JxiYx8zGk1IIY3UgQHgXrS1fv7CgezQ== + dependencies: + "@internationalized/date" "^3.12.1" + "@react-types/shared" "^3.34.0" + "@spectrum-icons/ui" "^3.7.0" + "@spectrum-icons/workflow" "^4.3.0" + "@swc/helpers" "^0.5.0" + client-only "^0.0.1" + clsx "^2.0.0" + react-aria "3.48.0" + react-aria-components "1.17.0" + react-stately "3.46.0" + react-transition-group "^4.4.5" + use-sync-external-store "^1.6.0" -"@apidevtools/json-schema-ref-parser@^9.1.2": - version "9.1.2" - resolved "https://registry.npmmirror.com/@apidevtools/json-schema-ref-parser/-/json-schema-ref-parser-9.1.2.tgz#8ff5386b365d4c9faa7c8b566ff16a46a577d9b8" - integrity sha512-r1w81DpR+KyRWd3f+rk6TNqMgedmAxZP5v5KWlXQWlgMUUtyEJch0DKEci1SorPMiSeM8XPl7MZ3miJ60JIpQg== +"@apidevtools/json-schema-ref-parser@11.7.2": + version "11.7.2" + resolved "https://registry.yarnpkg.com/@apidevtools/json-schema-ref-parser/-/json-schema-ref-parser-11.7.2.tgz#cdf3e0aded21492364a70e193b45b7cf4177f031" + integrity sha512-4gY54eEGEstClvEkGnwVkTkrx0sqwemEFG5OSRRn3tD91XH0+Q8XIkYIfo7IwEWPpJZwILb9GUXeShtplRc/eA== dependencies: "@jsdevtools/ono" "^7.1.3" - "@types/json-schema" "^7.0.6" - call-me-maybe "^1.0.1" + "@types/json-schema" "^7.0.15" js-yaml "^4.1.0" -"@ardatan/sync-fetch@^0.0.1": - version "0.0.1" - resolved "https://registry.npmmirror.com/@ardatan/sync-fetch/-/sync-fetch-0.0.1.tgz#3385d3feedceb60a896518a1db857ec1e945348f" - integrity sha512-xhlTqH0m31mnsG0tIP4ETgfSB6gXDaYYsUWTrlUV93fFQPI9dd8hE0Ot6MHLCtqgB32hwJAC3YZMWlXZw7AleA== +"@apidevtools/json-schema-ref-parser@^14.2.1": + version "14.2.1" + resolved "https://registry.yarnpkg.com/@apidevtools/json-schema-ref-parser/-/json-schema-ref-parser-14.2.1.tgz#40040f6a9a250b92055723a76e48dde0efb9688b" + integrity sha512-HmdFw9CDYqM6B25pqGBpNeLCKvGPlIx1EbLrVL0zPvj50CJQUHyBNBw45Muk0kEIkogo1VZvOKHajdMuAzSxRg== dependencies: - node-fetch "^2.6.1" + js-yaml "^4.1.0" + +"@apidevtools/openapi-schemas@^2.1.0": + version "2.1.0" + resolved "https://registry.yarnpkg.com/@apidevtools/openapi-schemas/-/openapi-schemas-2.1.0.tgz#9fa08017fb59d80538812f03fc7cac5992caaa17" + integrity sha512-Zc1AlqrJlX3SlpupFGpiLi2EbteyP7fXmUOGup6/DnkRgjP9bgMM/ag+n91rsv0U1Gpz0H3VILA/o3bW7Ua6BQ== -"@asyncapi/avro-schema-parser@^3.0.15": +"@apidevtools/swagger-methods@^3.0.2": + version "3.0.2" + resolved "https://registry.yarnpkg.com/@apidevtools/swagger-methods/-/swagger-methods-3.0.2.tgz#b789a362e055b0340d04712eafe7027ddc1ac267" + integrity sha512-QAkD5kK2b1WfjDS/UQn/qQkbwF31uqRjPTrsCs5ZG9BQGAkjwvqGFjjPqAuzac/IYzpPtRzjCP1WrTuAIjMrXg== + +"@apidevtools/swagger-parser@^10.1.0": + version "10.1.1" + resolved "https://registry.yarnpkg.com/@apidevtools/swagger-parser/-/swagger-parser-10.1.1.tgz#e29bf17cf94b487a340e06784e9fbe20cb671c45" + integrity sha512-u/kozRnsPO/x8QtKYJOqoGtC4kH6yg1lfYkB9Au0WhYB0FNLpyFusttQtvhlwjtG3rOwiRz4D8DnnXa8iEpIKA== + dependencies: + "@apidevtools/json-schema-ref-parser" "11.7.2" + "@apidevtools/openapi-schemas" "^2.1.0" + "@apidevtools/swagger-methods" "^3.0.2" + "@jsdevtools/ono" "^7.1.3" + ajv "^8.17.1" + ajv-draft-04 "^1.0.0" + call-me-maybe "^1.0.2" + +"@asamuzakjp/css-color@^5.0.1": + version "5.1.11" + resolved "https://registry.yarnpkg.com/@asamuzakjp/css-color/-/css-color-5.1.11.tgz#28a0aac8220a4cc19045ac3bd9a813d4060bd375" + integrity sha512-KVw6qIiCTUQhByfTd78h2yD1/00waTmm9uy/R7Ck/ctUyAPj+AEDLkQIdJW0T8+qGgj3j5bpNKK7Q3G+LedJWg== + dependencies: + "@asamuzakjp/generational-cache" "^1.0.1" + "@csstools/css-calc" "^3.2.0" + "@csstools/css-color-parser" "^4.1.0" + "@csstools/css-parser-algorithms" "^4.0.0" + "@csstools/css-tokenizer" "^4.0.0" + +"@asamuzakjp/dom-selector@^6.8.1": + version "6.8.1" + resolved "https://registry.yarnpkg.com/@asamuzakjp/dom-selector/-/dom-selector-6.8.1.tgz#39b20993672b106f7cd9a3a9a465212e87e0bfd1" + integrity sha512-MvRz1nCqW0fsy8Qz4dnLIvhOlMzqDVBabZx6lH+YywFDdjXhMY37SmpV1XFX3JzG5GWHn63j6HX6QPr3lZXHvQ== + dependencies: + "@asamuzakjp/nwsapi" "^2.3.9" + bidi-js "^1.0.3" + css-tree "^3.1.0" + is-potential-custom-element-name "^1.0.1" + lru-cache "^11.2.6" + +"@asamuzakjp/generational-cache@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@asamuzakjp/generational-cache/-/generational-cache-1.0.1.tgz#3d0bf6be4fc059851390a7070720c6007af793ec" + integrity sha512-wajfB8KqzMCN2KGNFdLkReeHncd0AslUSrvHVvvYWuU8ghncRJoA50kT3zP9MVL0+9g4/67H+cdvBskj9THPzg== + +"@asamuzakjp/nwsapi@^2.3.9": + version "2.3.9" + resolved "https://registry.yarnpkg.com/@asamuzakjp/nwsapi/-/nwsapi-2.3.9.tgz#ad5549322dfe9d153d4b4dd6f7ff2ae234b06e24" + integrity sha512-n8GuYSrI9bF7FFZ/SjhwevlHc8xaVlb/7HmHelnc/PZXBD2ZR49NnN9sMMuDdEGPeeRQ5d0hqlSlEpgCX3Wl0Q== + +"@asyncapi/avro-schema-parser@^3.0.24": version "3.0.24" - resolved "https://registry.npmmirror.com/@asyncapi/avro-schema-parser/-/avro-schema-parser-3.0.24.tgz#3379d119db8daf1e874582ba56bd8767c8681148" + resolved "https://registry.yarnpkg.com/@asyncapi/avro-schema-parser/-/avro-schema-parser-3.0.24.tgz#3379d119db8daf1e874582ba56bd8767c8681148" integrity sha512-YMyr2S2heMrWHRyECknjHeejlZl5exUSv9nD1gTejAT13fSf0PqIRydZ9ZuoglCLBg55AeehypR2zLIBu/9kHQ== dependencies: "@asyncapi/parser" "^3.1.0" "@types/json-schema" "^7.0.11" avsc "^5.7.6" -"@asyncapi/openapi-schema-parser@^3.0.15": +"@asyncapi/openapi-schema-parser@^3.0.24": version "3.0.24" - resolved "https://registry.npmmirror.com/@asyncapi/openapi-schema-parser/-/openapi-schema-parser-3.0.24.tgz#efbb0151c4c657107c0ca5ee8dfe21999a9c9446" + resolved "https://registry.yarnpkg.com/@asyncapi/openapi-schema-parser/-/openapi-schema-parser-3.0.24.tgz#efbb0151c4c657107c0ca5ee8dfe21999a9c9446" integrity sha512-7wz2yVDedJMS+TzOuqCvRWJMc6pNHICKZcOhnW6ZvyVLAh7hYIqQE1WA4OoXT4cKVbwSU3V2Q4bZagSsAIQd6Q== dependencies: "@asyncapi/parser" "^3.1.0" @@ -57,7 +136,7 @@ ajv-errors "^3.0.0" ajv-formats "^2.1.1" -"@asyncapi/parser@^3.0.15", "@asyncapi/parser@^3.0.7", "@asyncapi/parser@^3.1.0": +"@asyncapi/parser@^3.1.0": version "3.1.0" resolved "https://registry.npmmirror.com/@asyncapi/parser/-/parser-3.1.0.tgz#2c8122dfa57b6d3de10f933f5a0729cea0b39e9b" integrity sha512-rUd+fsPRE68o+F3gLqk7OaBj5J5VgBiLk9eJBGEXolNmKbVd45mxJm2aBpMkphQEmYHuBvxZyiNYlSCyr1D2fA== @@ -82,29 +161,62 @@ jsonpath-plus "^7.2.0" node-fetch "2.6.7" -"@asyncapi/protobuf-schema-parser@^3.2.4": - version "3.2.13" - resolved "https://registry.npmmirror.com/@asyncapi/protobuf-schema-parser/-/protobuf-schema-parser-3.2.13.tgz#5a56e5a29b117ce6244e2221e8be8d4daaa87f35" - integrity sha512-8h+lLoCadAXi1HynYisgHYPDa2P+hzg03vie/6Ngdzm0h0fbrCMKdLneiv0OO5Ec96W0JgsTeGbs8bk6k63qAw== +"@asyncapi/parser@^3.3.0", "@asyncapi/parser@^3.4.0": + version "3.6.0" + resolved "https://registry.yarnpkg.com/@asyncapi/parser/-/parser-3.6.0.tgz#89b52d79e8f8856c6eecc849d5f7931d5863b0d4" + integrity sha512-6S0Yr8vI418a1IrpGsOYbfWVo9+aHvSqN2oSkiY0YJltS/C7oDOt9e0mo6hSld8bg+EeKrtgkVmpW4obh1JFvA== dependencies: - "@asyncapi/parser" "^3.0.15" - "@types/protocol-buffers-schema" "^3.4.1" - protobufjs "^7.2.6" + "@asyncapi/specs" "^6.11.1" + "@openapi-contrib/openapi-schema-to-json-schema" "~3.2.0" + "@stoplight/json" "3.21.0" + "@stoplight/json-ref-readers" "^1.2.2" + "@stoplight/json-ref-resolver" "^3.1.5" + "@stoplight/spectral-core" "^1.18.3" + "@stoplight/spectral-functions" "^1.7.2" + "@stoplight/spectral-parsers" "^1.0.2" + "@stoplight/spectral-ref-resolver" "^1.0.3" + "@stoplight/types" "^13.12.0" + "@types/json-schema" "^7.0.11" + "@types/urijs" "^1.19.19" + ajv "^8.17.1" + ajv-errors "^3.0.0" + ajv-formats "^2.1.1" + avsc "^5.7.5" + js-yaml "^4.1.1" + jsonpath-plus "^10.0.7" + node-fetch "2.6.7" -"@asyncapi/react-component@1.3.1": - version "1.3.1" - resolved "https://registry.npmmirror.com/@asyncapi/react-component/-/react-component-1.3.1.tgz#1d1e812bb25c9a913de1847cf55d5ce4e04fcbfe" - integrity sha512-mcJnPQV2SLmtTfKstXwP7A4zmlVjazty4yttyynSZEW4t2KmEu3qk5h79R7adONLC2fIiFdlCENyJqJXkfp+Cg== - dependencies: - "@asyncapi/avro-schema-parser" "^3.0.15" - "@asyncapi/openapi-schema-parser" "^3.0.15" - "@asyncapi/parser" "^3.0.7" - "@asyncapi/protobuf-schema-parser" "^3.2.4" +"@asyncapi/protobuf-schema-parser@^3.6.0": + version "3.6.0" + resolved "https://registry.yarnpkg.com/@asyncapi/protobuf-schema-parser/-/protobuf-schema-parser-3.6.0.tgz#b8c0b19981d4cf70b2dbae01aa2a26916f3df8e5" + integrity sha512-z6zVRAMi2bkkgjREoCIvUg7KcacyoEh+VIwQmEni/JPuPFMOD3oPv4kwoftEeiF2+gGiioeIxpkI5x7rmHf2Nw== + dependencies: + "@asyncapi/parser" "^3.4.0" + "@types/protocol-buffers-schema" "^3.4.3" + protobufjs "^7.4.0" + +"@asyncapi/react-component@^2.3.3": + version "2.6.5" + resolved "https://registry.yarnpkg.com/@asyncapi/react-component/-/react-component-2.6.5.tgz#399bd249bfafd87ed1285540ee91394f93f1ca4a" + integrity sha512-+kQyIc337MHGTQ1ZYEuY2vfCyii2J/3o3Pm5/oJFgzWs9jWIz7/momLFl6rsS7Yd7elBam9Ukw0F3oM1AwwyHQ== + dependencies: + "@asyncapi/avro-schema-parser" "^3.0.24" + "@asyncapi/openapi-schema-parser" "^3.0.24" + "@asyncapi/parser" "^3.3.0" + "@asyncapi/protobuf-schema-parser" "^3.6.0" highlight.js "^10.7.2" - isomorphic-dompurify "^0.13.0" + isomorphic-dompurify "^2.14.0" marked "^4.0.14" openapi-sampler "^1.2.1" - use-resize-observer "^8.0.0" + react-error-boundary "^4.1.2" + use-resize-observer "^9.1.0" + +"@asyncapi/specs@^6.11.1": + version "6.11.1" + resolved "https://registry.yarnpkg.com/@asyncapi/specs/-/specs-6.11.1.tgz#c629fe962a241a983f883a56b0e9c901a311becb" + integrity sha512-A3WBLqAKGoJ2+6FWFtpjBlCQ1oFCcs4GxF7zsIGvNqp/klGUHjlA3aAcZ9XMMpLGE8zPeYDz2x9FmO6DSuKraQ== + dependencies: + "@types/json-schema" "^7.0.11" "@asyncapi/specs@^6.7.1": version "6.7.1" @@ -122,6 +234,15 @@ "@aws-sdk/types" "^3.222.0" tslib "^1.11.1" +"@aws-crypto/crc32@5.2.0": + version "5.2.0" + resolved "https://registry.yarnpkg.com/@aws-crypto/crc32/-/crc32-5.2.0.tgz#cfcc22570949c98c6689cfcbd2d693d36cdae2e1" + integrity sha512-nLbCWqQNgUiwwtFsen1AdzAtvuLRsQS8rYgMuxCrdKf9kOssamGLuPwyTY9wyYblNr9+1XM8v6zoDTPPSIeANg== + dependencies: + "@aws-crypto/util" "^5.2.0" + "@aws-sdk/types" "^3.222.0" + tslib "^2.6.2" + "@aws-crypto/crc32c@3.0.0": version "3.0.0" resolved "https://registry.npmmirror.com/@aws-crypto/crc32c/-/crc32c-3.0.0.tgz#016c92da559ef638a84a245eecb75c3e97cb664f" @@ -131,6 +252,15 @@ "@aws-sdk/types" "^3.222.0" tslib "^1.11.1" +"@aws-crypto/crc32c@5.2.0": + version "5.2.0" + resolved "https://registry.yarnpkg.com/@aws-crypto/crc32c/-/crc32c-5.2.0.tgz#4e34aab7f419307821509a98b9b08e84e0c1917e" + integrity sha512-+iWb8qaHLYKrNvGRbiYRHSdKRWhto5XlZUEBwDjYNf+ly5SVYG6zEoYIdxvf5R3zyeP16w4PLBn3rH1xc74Rag== + dependencies: + "@aws-crypto/util" "^5.2.0" + "@aws-sdk/types" "^3.222.0" + tslib "^2.6.2" + "@aws-crypto/ie11-detection@^3.0.0": version "3.0.0" resolved "https://registry.npmmirror.com/@aws-crypto/ie11-detection/-/ie11-detection-3.0.0.tgz#640ae66b4ec3395cee6a8e94ebcd9f80c24cd688" @@ -151,6 +281,18 @@ "@aws-sdk/util-utf8-browser" "^3.0.0" tslib "^1.11.1" +"@aws-crypto/sha1-browser@5.2.0": + version "5.2.0" + resolved "https://registry.yarnpkg.com/@aws-crypto/sha1-browser/-/sha1-browser-5.2.0.tgz#b0ee2d2821d3861f017e965ef3b4cb38e3b6a0f4" + integrity sha512-OH6lveCFfcDjX4dbAvCFSYUjJZjDr/3XJ3xHtjn3Oj5b9RjojQo8npoLeA/bNwkOkrSQ0wgrHzXk4tDRxGKJeg== + dependencies: + "@aws-crypto/supports-web-crypto" "^5.2.0" + "@aws-crypto/util" "^5.2.0" + "@aws-sdk/types" "^3.222.0" + "@aws-sdk/util-locate-window" "^3.0.0" + "@smithy/util-utf8" "^2.0.0" + tslib "^2.6.2" + "@aws-crypto/sha256-browser@3.0.0": version "3.0.0" resolved "https://registry.npmmirror.com/@aws-crypto/sha256-browser/-/sha256-browser-3.0.0.tgz#05f160138ab893f1c6ba5be57cfd108f05827766" @@ -165,6 +307,19 @@ "@aws-sdk/util-utf8-browser" "^3.0.0" tslib "^1.11.1" +"@aws-crypto/sha256-browser@5.2.0": + version "5.2.0" + resolved "https://registry.yarnpkg.com/@aws-crypto/sha256-browser/-/sha256-browser-5.2.0.tgz#153895ef1dba6f9fce38af550e0ef58988eb649e" + integrity sha512-AXfN/lGotSQwu6HNcEsIASo7kWXZ5HYWvfOmSNKDsEqC4OashTp8alTmaz+F7TC2L083SFv5RdB+qU3Vs1kZqw== + dependencies: + "@aws-crypto/sha256-js" "^5.2.0" + "@aws-crypto/supports-web-crypto" "^5.2.0" + "@aws-crypto/util" "^5.2.0" + "@aws-sdk/types" "^3.222.0" + "@aws-sdk/util-locate-window" "^3.0.0" + "@smithy/util-utf8" "^2.0.0" + tslib "^2.6.2" + "@aws-crypto/sha256-js@3.0.0", "@aws-crypto/sha256-js@^3.0.0": version "3.0.0" resolved "https://registry.npmmirror.com/@aws-crypto/sha256-js/-/sha256-js-3.0.0.tgz#f06b84d550d25521e60d2a0e2a90139341e007c2" @@ -174,7 +329,7 @@ "@aws-sdk/types" "^3.222.0" tslib "^1.11.1" -"@aws-crypto/sha256-js@^5.0.0": +"@aws-crypto/sha256-js@5.2.0", "@aws-crypto/sha256-js@^5.0.0", "@aws-crypto/sha256-js@^5.2.0": version "5.2.0" resolved "https://registry.npmmirror.com/@aws-crypto/sha256-js/-/sha256-js-5.2.0.tgz#c4fdb773fdbed9a664fc1a95724e206cf3860042" integrity sha512-FFQQyu7edu4ufvIZ+OadFpHHOt+eSTBaYaki44c+akjg7qZg9oOQeLlk77F6tSYqjDAFClrHJk9tMf0HdVyOvA== @@ -190,16 +345,14 @@ dependencies: tslib "^1.11.1" -"@aws-crypto/util@^3.0.0": - version "3.0.0" - resolved "https://registry.npmmirror.com/@aws-crypto/util/-/util-3.0.0.tgz#1c7ca90c29293f0883468ad48117937f0fe5bfb0" - integrity sha512-2OJlpeJpCR48CC8r+uKVChzs9Iungj9wkZrl8Z041DWEWvyIHILYKCPNzJghKsivj+S3mLo6BVc7mBNzdxA46w== +"@aws-crypto/supports-web-crypto@^5.2.0": + version "5.2.0" + resolved "https://registry.yarnpkg.com/@aws-crypto/supports-web-crypto/-/supports-web-crypto-5.2.0.tgz#a1e399af29269be08e695109aa15da0a07b5b5fb" + integrity sha512-iAvUotm021kM33eCdNfwIN//F77/IADDSs58i+MDaOqFrVjZo9bAal0NK7HurRuWLLpF1iLX7gbWrjHjeo+YFg== dependencies: - "@aws-sdk/types" "^3.222.0" - "@aws-sdk/util-utf8-browser" "^3.0.0" - tslib "^1.11.1" + tslib "^2.6.2" -"@aws-crypto/util@^5.2.0": +"@aws-crypto/util@5.2.0", "@aws-crypto/util@^5.2.0": version "5.2.0" resolved "https://registry.npmmirror.com/@aws-crypto/util/-/util-5.2.0.tgz#71284c9cffe7927ddadac793c14f14886d3876da" integrity sha512-4RkU9EsI6ZpBve5fseQlGNUWKMa1RLPQ1dnjnQoe07ldfIzcsGb5hC5W0Dm7u423KWzawlrpbjXBrXCEv9zazQ== @@ -208,6 +361,15 @@ "@smithy/util-utf8" "^2.0.0" tslib "^2.6.2" +"@aws-crypto/util@^3.0.0": + version "3.0.0" + resolved "https://registry.npmmirror.com/@aws-crypto/util/-/util-3.0.0.tgz#1c7ca90c29293f0883468ad48117937f0fe5bfb0" + integrity sha512-2OJlpeJpCR48CC8r+uKVChzs9Iungj9wkZrl8Z041DWEWvyIHILYKCPNzJghKsivj+S3mLo6BVc7mBNzdxA46w== + dependencies: + "@aws-sdk/types" "^3.222.0" + "@aws-sdk/util-utf8-browser" "^3.0.0" + tslib "^1.11.1" + "@aws-sdk/abort-controller@^3.347.0": version "3.374.0" resolved "https://registry.npmmirror.com/@aws-sdk/abort-controller/-/abort-controller-3.374.0.tgz#f57ec7e02cdd7f66432e4e71af9e0ac224d6e9b3" @@ -264,6 +426,51 @@ tslib "^2.6.2" uuid "^9.0.1" +"@aws-sdk/client-cognito-identity@3.1035.0": + version "3.1035.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/client-cognito-identity/-/client-cognito-identity-3.1035.0.tgz#8e0ef08dd08b3c6687b0e204eab8f68f3a14e68e" + integrity sha512-sHjCtR5GdKVXZ/bEXwqUMoGzak9fnI4Ny/NyG7+gAkYC1Z+CIg5Kr4QSrqGjA+N2iwCly8f2/rGAsNo+JGeaNA== + dependencies: + "@aws-crypto/sha256-browser" "5.2.0" + "@aws-crypto/sha256-js" "5.2.0" + "@aws-sdk/core" "^3.974.4" + "@aws-sdk/credential-provider-node" "^3.972.35" + "@aws-sdk/middleware-host-header" "^3.972.10" + "@aws-sdk/middleware-logger" "^3.972.10" + "@aws-sdk/middleware-recursion-detection" "^3.972.11" + "@aws-sdk/middleware-user-agent" "^3.972.34" + "@aws-sdk/region-config-resolver" "^3.972.13" + "@aws-sdk/types" "^3.973.8" + "@aws-sdk/util-endpoints" "^3.996.8" + "@aws-sdk/util-user-agent-browser" "^3.972.10" + "@aws-sdk/util-user-agent-node" "^3.973.20" + "@smithy/config-resolver" "^4.4.17" + "@smithy/core" "^3.23.16" + "@smithy/fetch-http-handler" "^5.3.17" + "@smithy/hash-node" "^4.2.14" + "@smithy/invalid-dependency" "^4.2.14" + "@smithy/middleware-content-length" "^4.2.14" + "@smithy/middleware-endpoint" "^4.4.31" + "@smithy/middleware-retry" "^4.5.4" + "@smithy/middleware-serde" "^4.2.19" + "@smithy/middleware-stack" "^4.2.14" + "@smithy/node-config-provider" "^4.3.14" + "@smithy/node-http-handler" "^4.6.0" + "@smithy/protocol-http" "^5.3.14" + "@smithy/smithy-client" "^4.12.12" + "@smithy/types" "^4.14.1" + "@smithy/url-parser" "^4.2.14" + "@smithy/util-base64" "^4.3.2" + "@smithy/util-body-length-browser" "^4.2.2" + "@smithy/util-body-length-node" "^4.2.3" + "@smithy/util-defaults-mode-browser" "^4.3.48" + "@smithy/util-defaults-mode-node" "^4.2.53" + "@smithy/util-endpoints" "^3.4.2" + "@smithy/util-middleware" "^4.2.14" + "@smithy/util-retry" "^4.3.3" + "@smithy/util-utf8" "^4.2.2" + tslib "^2.6.2" + "@aws-sdk/client-cognito-identity@3.502.0": version "3.502.0" resolved "https://registry.npmmirror.com/@aws-sdk/client-cognito-identity/-/client-cognito-identity-3.502.0.tgz#c95330a44c381339e7f4280a20d1298d46ed582a" @@ -310,6 +517,67 @@ "@smithy/util-utf8" "^2.1.1" tslib "^2.5.0" +"@aws-sdk/client-s3@^3.1039.0": + version "3.1039.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/client-s3/-/client-s3-3.1039.0.tgz#c832408b1768eebf2c8f7e3b73e0ac176e03d8e4" + integrity sha512-PVH9v0pHYBQnBADSR/m88NgcuJcYqPXfpmkcME66vRF75Y4swwbEVVFbTBFuvxu0YcZiLFXu3lw0FDK00vEa3A== + dependencies: + "@aws-crypto/sha1-browser" "5.2.0" + "@aws-crypto/sha256-browser" "5.2.0" + "@aws-crypto/sha256-js" "5.2.0" + "@aws-sdk/core" "^3.974.7" + "@aws-sdk/credential-provider-node" "^3.972.38" + "@aws-sdk/middleware-bucket-endpoint" "^3.972.10" + "@aws-sdk/middleware-expect-continue" "^3.972.10" + "@aws-sdk/middleware-flexible-checksums" "^3.974.15" + "@aws-sdk/middleware-host-header" "^3.972.10" + "@aws-sdk/middleware-location-constraint" "^3.972.10" + "@aws-sdk/middleware-logger" "^3.972.10" + "@aws-sdk/middleware-recursion-detection" "^3.972.11" + "@aws-sdk/middleware-sdk-s3" "^3.972.36" + "@aws-sdk/middleware-ssec" "^3.972.10" + "@aws-sdk/middleware-user-agent" "^3.972.37" + "@aws-sdk/region-config-resolver" "^3.972.13" + "@aws-sdk/signature-v4-multi-region" "^3.996.24" + "@aws-sdk/types" "^3.973.8" + "@aws-sdk/util-endpoints" "^3.996.8" + "@aws-sdk/util-user-agent-browser" "^3.972.10" + "@aws-sdk/util-user-agent-node" "^3.973.23" + "@smithy/config-resolver" "^4.4.17" + "@smithy/core" "^3.23.17" + "@smithy/eventstream-serde-browser" "^4.2.14" + "@smithy/eventstream-serde-config-resolver" "^4.3.14" + "@smithy/eventstream-serde-node" "^4.2.14" + "@smithy/fetch-http-handler" "^5.3.17" + "@smithy/hash-blob-browser" "^4.2.15" + "@smithy/hash-node" "^4.2.14" + "@smithy/hash-stream-node" "^4.2.14" + "@smithy/invalid-dependency" "^4.2.14" + "@smithy/md5-js" "^4.2.14" + "@smithy/middleware-content-length" "^4.2.14" + "@smithy/middleware-endpoint" "^4.4.32" + "@smithy/middleware-retry" "^4.5.7" + "@smithy/middleware-serde" "^4.2.20" + "@smithy/middleware-stack" "^4.2.14" + "@smithy/node-config-provider" "^4.3.14" + "@smithy/node-http-handler" "^4.6.1" + "@smithy/protocol-http" "^5.3.14" + "@smithy/smithy-client" "^4.12.13" + "@smithy/types" "^4.14.1" + "@smithy/url-parser" "^4.2.14" + "@smithy/util-base64" "^4.3.2" + "@smithy/util-body-length-browser" "^4.2.2" + "@smithy/util-body-length-node" "^4.2.3" + "@smithy/util-defaults-mode-browser" "^4.3.49" + "@smithy/util-defaults-mode-node" "^4.2.54" + "@smithy/util-endpoints" "^3.4.2" + "@smithy/util-middleware" "^4.2.14" + "@smithy/util-retry" "^4.3.6" + "@smithy/util-stream" "^4.5.25" + "@smithy/util-utf8" "^4.2.2" + "@smithy/util-waiter" "^4.3.0" + tslib "^2.6.2" + "@aws-sdk/client-s3@^3.350.0": version "3.502.0" resolved "https://registry.npmmirror.com/@aws-sdk/client-s3/-/client-s3-3.502.0.tgz#ecbca9f281f909835e9778b7310f48d5bf656a9d" @@ -668,6 +936,54 @@ fast-xml-parser "4.2.5" tslib "^2.6.2" +"@aws-sdk/core@^3.974.4": + version "3.974.4" + resolved "https://registry.yarnpkg.com/@aws-sdk/core/-/core-3.974.4.tgz#0bc9a0ff43778abf4d3cb3167fbe086fa4afcd44" + integrity sha512-EbVgyzQ83/Lf6oh1O4vYY47tuYw3Aosthh865LNU77KyotKz+uvEBNmsl/bSVS/vG+IU39mCqcOHrnhmhF4lug== + dependencies: + "@aws-sdk/types" "^3.973.8" + "@aws-sdk/xml-builder" "^3.972.18" + "@smithy/core" "^3.23.16" + "@smithy/node-config-provider" "^4.3.14" + "@smithy/property-provider" "^4.2.14" + "@smithy/protocol-http" "^5.3.14" + "@smithy/signature-v4" "^5.3.14" + "@smithy/smithy-client" "^4.12.12" + "@smithy/types" "^4.14.1" + "@smithy/util-base64" "^4.3.2" + "@smithy/util-middleware" "^4.2.14" + "@smithy/util-retry" "^4.3.3" + "@smithy/util-utf8" "^4.2.2" + tslib "^2.6.2" + +"@aws-sdk/core@^3.974.7": + version "3.974.7" + resolved "https://registry.yarnpkg.com/@aws-sdk/core/-/core-3.974.7.tgz#1b78801c86f54947971ead2d4b9913a2b5b7d860" + integrity sha512-YhRC90ofz5oolTJZlA8voU/oUrCB2azi8Usx51k8hhB5LpWbYQMMXKUqSqkoL0Cru+RQJgWTHpAfEDDIwfUhJw== + dependencies: + "@aws-sdk/types" "^3.973.8" + "@aws-sdk/xml-builder" "^3.972.22" + "@smithy/core" "^3.23.17" + "@smithy/node-config-provider" "^4.3.14" + "@smithy/property-provider" "^4.2.14" + "@smithy/protocol-http" "^5.3.14" + "@smithy/signature-v4" "^5.3.14" + "@smithy/smithy-client" "^4.12.13" + "@smithy/types" "^4.14.1" + "@smithy/util-base64" "^4.3.2" + "@smithy/util-middleware" "^4.2.14" + "@smithy/util-retry" "^4.3.6" + "@smithy/util-utf8" "^4.2.2" + tslib "^2.6.2" + +"@aws-sdk/crc64-nvme@^3.972.7": + version "3.972.7" + resolved "https://registry.yarnpkg.com/@aws-sdk/crc64-nvme/-/crc64-nvme-3.972.7.tgz#0e56fb3ccc0242ed05ffd0bc993d724ce8b3dde2" + integrity sha512-QUagVVBbC8gODCF6e1aV0mE2TXWB9Opz4k8EJFdNrujUVQm5R4AjJa1mpOqzwOuROBzqJU9zawzig7M96L8Ejg== + dependencies: + "@smithy/types" "^4.14.1" + tslib "^2.6.2" + "@aws-sdk/credential-provider-cognito-identity@3.502.0": version "3.502.0" resolved "https://registry.npmmirror.com/@aws-sdk/credential-provider-cognito-identity/-/credential-provider-cognito-identity-3.502.0.tgz#251d7d40dbebcf47c397503de222d03474bc7014" @@ -679,6 +995,17 @@ "@smithy/types" "^2.9.1" tslib "^2.5.0" +"@aws-sdk/credential-provider-cognito-identity@^3.972.27": + version "3.972.27" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-cognito-identity/-/credential-provider-cognito-identity-3.972.27.tgz#17912b255560d95956feda83d95e531b09565fba" + integrity sha512-ibA1vjaLhS1c/wNa9SSSOunjz5I72DBfAYrtM4G4sKQ3wPuk8ycfvU3AF8nEJBfefqPu2RhHxW7bEC9wiA/MTA== + dependencies: + "@aws-sdk/nested-clients" "^3.997.2" + "@aws-sdk/types" "^3.973.8" + "@smithy/property-provider" "^4.2.14" + "@smithy/types" "^4.14.1" + tslib "^2.6.2" + "@aws-sdk/credential-provider-env@3.502.0": version "3.502.0" resolved "https://registry.npmmirror.com/@aws-sdk/credential-provider-env/-/credential-provider-env-3.502.0.tgz#800e63b2b9d90b078a120d474d5a3b1ec5b48514" @@ -699,6 +1026,28 @@ "@smithy/types" "^3.0.0" tslib "^2.6.2" +"@aws-sdk/credential-provider-env@^3.972.30": + version "3.972.30" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-env/-/credential-provider-env-3.972.30.tgz#7df82f761e8984a1fab6358c3c906f67fbbdbe91" + integrity sha512-dHpeqa29a0cBYq/h59IC2EK3AphLY96nKy4F35kBtiz9GuKDc32UYRTgjZaF8uuJCnqgw9omUZKR+9myyDHC2A== + dependencies: + "@aws-sdk/core" "^3.974.4" + "@aws-sdk/types" "^3.973.8" + "@smithy/property-provider" "^4.2.14" + "@smithy/types" "^4.14.1" + tslib "^2.6.2" + +"@aws-sdk/credential-provider-env@^3.972.33": + version "3.972.33" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-env/-/credential-provider-env-3.972.33.tgz#8a3703571871e85e064f3cabda4b7b37f2344aea" + integrity sha512-bJV7eViSJV6GSuuN+VIdNVPdwPsNSf75BiC2v5alPrjR/OCcqgKwSZInKbDFz9mNeizldsyf67jt6YSIiv53Cw== + dependencies: + "@aws-sdk/core" "^3.974.7" + "@aws-sdk/types" "^3.973.8" + "@smithy/property-provider" "^4.2.14" + "@smithy/types" "^4.14.1" + tslib "^2.6.2" + "@aws-sdk/credential-provider-http@3.502.0": version "3.502.0" resolved "https://registry.npmmirror.com/@aws-sdk/credential-provider-http/-/credential-provider-http-3.502.0.tgz#2472433af812da63f6c859d9a1ff803bcd64a113" @@ -729,6 +1078,38 @@ "@smithy/util-stream" "^3.0.1" tslib "^2.6.2" +"@aws-sdk/credential-provider-http@^3.972.32": + version "3.972.32" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-http/-/credential-provider-http-3.972.32.tgz#a1e6b6bfdf5ff0e5a351794938c43d80877f044d" + integrity sha512-A+ZTT//Mswkf9DFEM6XlngwOtYdD8X4CUcoZ2wdpgI8cCs9mcGeuhgTwbGJvealub/MeONOaUr3FbRPMKmTDjg== + dependencies: + "@aws-sdk/core" "^3.974.4" + "@aws-sdk/types" "^3.973.8" + "@smithy/fetch-http-handler" "^5.3.17" + "@smithy/node-http-handler" "^4.6.0" + "@smithy/property-provider" "^4.2.14" + "@smithy/protocol-http" "^5.3.14" + "@smithy/smithy-client" "^4.12.12" + "@smithy/types" "^4.14.1" + "@smithy/util-stream" "^4.5.24" + tslib "^2.6.2" + +"@aws-sdk/credential-provider-http@^3.972.35": + version "3.972.35" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-http/-/credential-provider-http-3.972.35.tgz#913eaf3a66484cb1d678ab0691943cb4f57e230d" + integrity sha512-x/BQGEIdq0oI+4WxLjKmnQvT7CnF9r8ezdGt7wXwxb7ckHXQz0Zmgxt8v3Ne0JaT3R5YefmuybHX6E8EnsDXyA== + dependencies: + "@aws-sdk/core" "^3.974.7" + "@aws-sdk/types" "^3.973.8" + "@smithy/fetch-http-handler" "^5.3.17" + "@smithy/node-http-handler" "^4.6.1" + "@smithy/property-provider" "^4.2.14" + "@smithy/protocol-http" "^5.3.14" + "@smithy/smithy-client" "^4.12.13" + "@smithy/types" "^4.14.1" + "@smithy/util-stream" "^4.5.25" + tslib "^2.6.2" + "@aws-sdk/credential-provider-ini@3.502.0": version "3.502.0" resolved "https://registry.npmmirror.com/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.502.0.tgz#7bfe665689a7c9002d43d0203ecd5a525ac95bd0" @@ -763,6 +1144,74 @@ "@smithy/types" "^3.0.0" tslib "^2.6.2" +"@aws-sdk/credential-provider-ini@^3.972.34": + version "3.972.34" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.972.34.tgz#13d35406661e073a44bb45dd86a3abe0b2a4fa90" + integrity sha512-MoRc7tLnx3JpFkV2R826enEfBUVN8o9Cc7y3hnbMwiWzL/VJhgfxRQzHkEL9vWorMWP7tibltsRcLoid9fsVdw== + dependencies: + "@aws-sdk/core" "^3.974.4" + "@aws-sdk/credential-provider-env" "^3.972.30" + "@aws-sdk/credential-provider-http" "^3.972.32" + "@aws-sdk/credential-provider-login" "^3.972.34" + "@aws-sdk/credential-provider-process" "^3.972.30" + "@aws-sdk/credential-provider-sso" "^3.972.34" + "@aws-sdk/credential-provider-web-identity" "^3.972.34" + "@aws-sdk/nested-clients" "^3.997.2" + "@aws-sdk/types" "^3.973.8" + "@smithy/credential-provider-imds" "^4.2.14" + "@smithy/property-provider" "^4.2.14" + "@smithy/shared-ini-file-loader" "^4.4.9" + "@smithy/types" "^4.14.1" + tslib "^2.6.2" + +"@aws-sdk/credential-provider-ini@^3.972.37": + version "3.972.37" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.972.37.tgz#86e0d92abd993ee8866ff72865c47448a4ac1d16" + integrity sha512-eUTpmWfd/BKsq9medhCRcu+GRAhFP2Zrn7/2jKDHHOOjCkhrMoTp/t4cEthqFoG7gE0VGp5wUxrXTdvBCmSmJg== + dependencies: + "@aws-sdk/core" "^3.974.7" + "@aws-sdk/credential-provider-env" "^3.972.33" + "@aws-sdk/credential-provider-http" "^3.972.35" + "@aws-sdk/credential-provider-login" "^3.972.37" + "@aws-sdk/credential-provider-process" "^3.972.33" + "@aws-sdk/credential-provider-sso" "^3.972.37" + "@aws-sdk/credential-provider-web-identity" "^3.972.37" + "@aws-sdk/nested-clients" "^3.997.5" + "@aws-sdk/types" "^3.973.8" + "@smithy/credential-provider-imds" "^4.2.14" + "@smithy/property-provider" "^4.2.14" + "@smithy/shared-ini-file-loader" "^4.4.9" + "@smithy/types" "^4.14.1" + tslib "^2.6.2" + +"@aws-sdk/credential-provider-login@^3.972.34": + version "3.972.34" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-login/-/credential-provider-login-3.972.34.tgz#e0a9534df7127d3e32f774dae19c496d68786927" + integrity sha512-XVSklkRRQ/CQDmv3VVFdZRl5hTFgncFhZrLyi0Ai4LZk5o3jpY5HIfuTK7ad7tixPKa+iQmL9+vg9qNyYZB+nw== + dependencies: + "@aws-sdk/core" "^3.974.4" + "@aws-sdk/nested-clients" "^3.997.2" + "@aws-sdk/types" "^3.973.8" + "@smithy/property-provider" "^4.2.14" + "@smithy/protocol-http" "^5.3.14" + "@smithy/shared-ini-file-loader" "^4.4.9" + "@smithy/types" "^4.14.1" + tslib "^2.6.2" + +"@aws-sdk/credential-provider-login@^3.972.37": + version "3.972.37" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-login/-/credential-provider-login-3.972.37.tgz#43fd32e4140b4fe3a3c243ab21d0ac306e772e28" + integrity sha512-Ty68y8ISSC+g5Q3D0K8uAaoINwvfaOslnNpsF/LgVUxyosYXHawcK2yV4HLXDVugiTTYLQfJfcw0ce5meAGkKw== + dependencies: + "@aws-sdk/core" "^3.974.7" + "@aws-sdk/nested-clients" "^3.997.5" + "@aws-sdk/types" "^3.973.8" + "@smithy/property-provider" "^4.2.14" + "@smithy/protocol-http" "^5.3.14" + "@smithy/shared-ini-file-loader" "^4.4.9" + "@smithy/types" "^4.14.1" + tslib "^2.6.2" + "@aws-sdk/credential-provider-node@3.502.0", "@aws-sdk/credential-provider-node@^3.350.0": version "3.502.0" resolved "https://registry.npmmirror.com/@aws-sdk/credential-provider-node/-/credential-provider-node-3.502.0.tgz#68929ccd6b99075e19e42a47d2baed84f24b0b05" @@ -798,6 +1247,42 @@ "@smithy/types" "^3.0.0" tslib "^2.6.2" +"@aws-sdk/credential-provider-node@^3.972.35": + version "3.972.35" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-node/-/credential-provider-node-3.972.35.tgz#63b0bcdb7efdf7cfb1d6c49d8e60f128f6b0becd" + integrity sha512-nVrY7AdGfzYgAa/jd9m06p3ES7QQDaB7zN9c+vXnVXxBRkAs9MjRDPB5AKogWuC6phddltfvHGFqLDJmyU9u/A== + dependencies: + "@aws-sdk/credential-provider-env" "^3.972.30" + "@aws-sdk/credential-provider-http" "^3.972.32" + "@aws-sdk/credential-provider-ini" "^3.972.34" + "@aws-sdk/credential-provider-process" "^3.972.30" + "@aws-sdk/credential-provider-sso" "^3.972.34" + "@aws-sdk/credential-provider-web-identity" "^3.972.34" + "@aws-sdk/types" "^3.973.8" + "@smithy/credential-provider-imds" "^4.2.14" + "@smithy/property-provider" "^4.2.14" + "@smithy/shared-ini-file-loader" "^4.4.9" + "@smithy/types" "^4.14.1" + tslib "^2.6.2" + +"@aws-sdk/credential-provider-node@^3.972.38": + version "3.972.38" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-node/-/credential-provider-node-3.972.38.tgz#2fc1742b626c6b80534e42ae91359a25262e9e91" + integrity sha512-BQ9XYnBDVxR2HuV5huXYQYF/PZMTsY+EnwfGnCU2cA8Zw63XpkOtPY8WqiMIZMQCrKPQQEiFURS/o9CIolRLqg== + dependencies: + "@aws-sdk/credential-provider-env" "^3.972.33" + "@aws-sdk/credential-provider-http" "^3.972.35" + "@aws-sdk/credential-provider-ini" "^3.972.37" + "@aws-sdk/credential-provider-process" "^3.972.33" + "@aws-sdk/credential-provider-sso" "^3.972.37" + "@aws-sdk/credential-provider-web-identity" "^3.972.37" + "@aws-sdk/types" "^3.973.8" + "@smithy/credential-provider-imds" "^4.2.14" + "@smithy/property-provider" "^4.2.14" + "@smithy/shared-ini-file-loader" "^4.4.9" + "@smithy/types" "^4.14.1" + tslib "^2.6.2" + "@aws-sdk/credential-provider-process@3.502.0": version "3.502.0" resolved "https://registry.npmmirror.com/@aws-sdk/credential-provider-process/-/credential-provider-process-3.502.0.tgz#6c41d8845a1c7073491a064c158363de04640381" @@ -820,6 +1305,30 @@ "@smithy/types" "^3.0.0" tslib "^2.6.2" +"@aws-sdk/credential-provider-process@^3.972.30": + version "3.972.30" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-process/-/credential-provider-process-3.972.30.tgz#f4f86454d64a87cbde420bfe07f68f3705575a51" + integrity sha512-McJPomNTSEo+C6UA3Zq6pFrcyTUaVsoPPBOvbOHAoIFPc8Z2CMLndqFJOnB+9bVFiBTWQLutlVGmrocBbvv4MQ== + dependencies: + "@aws-sdk/core" "^3.974.4" + "@aws-sdk/types" "^3.973.8" + "@smithy/property-provider" "^4.2.14" + "@smithy/shared-ini-file-loader" "^4.4.9" + "@smithy/types" "^4.14.1" + tslib "^2.6.2" + +"@aws-sdk/credential-provider-process@^3.972.33": + version "3.972.33" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-process/-/credential-provider-process-3.972.33.tgz#9f5ae9a63e76fcdaf684c03e5479c2e53305ce1c" + integrity sha512-yfjGksI9WQbdMObb0VeLXqzTLI+a0qXLJT9gCDiv0+X/xjPpI3mTz6a5FibrhpuEKIe0gSgvs3MaoFZy5cx4WA== + dependencies: + "@aws-sdk/core" "^3.974.7" + "@aws-sdk/types" "^3.973.8" + "@smithy/property-provider" "^4.2.14" + "@smithy/shared-ini-file-loader" "^4.4.9" + "@smithy/types" "^4.14.1" + tslib "^2.6.2" + "@aws-sdk/credential-provider-sso@3.502.0": version "3.502.0" resolved "https://registry.npmmirror.com/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.502.0.tgz#0ce95599115afdbbeb030a911b63acd662ba7ebf" @@ -846,6 +1355,34 @@ "@smithy/types" "^3.0.0" tslib "^2.6.2" +"@aws-sdk/credential-provider-sso@^3.972.34": + version "3.972.34" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.972.34.tgz#922f5c21efd4e5b069381fc3d72956089d1208cd" + integrity sha512-WngYb2K+/yhkDOmDfAOjoCa9Ja3he0DZiAraboKwgWoVRkajDIcDYBCVbUTxtTUldvQoe7VvHLTrBNxvftN1aQ== + dependencies: + "@aws-sdk/core" "^3.974.4" + "@aws-sdk/nested-clients" "^3.997.2" + "@aws-sdk/token-providers" "3.1035.0" + "@aws-sdk/types" "^3.973.8" + "@smithy/property-provider" "^4.2.14" + "@smithy/shared-ini-file-loader" "^4.4.9" + "@smithy/types" "^4.14.1" + tslib "^2.6.2" + +"@aws-sdk/credential-provider-sso@^3.972.37": + version "3.972.37" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.972.37.tgz#91cdba4a3aef35c1b4178610db782dfc8a6bc490" + integrity sha512-fpwE+20ntpp3i9Xb9vUuQfXLDKYHH+5I2V+ZG96SX1nBzrruhy10RXDgmN7t1etOz3c55stlA3TeQASUA451NQ== + dependencies: + "@aws-sdk/core" "^3.974.7" + "@aws-sdk/nested-clients" "^3.997.5" + "@aws-sdk/token-providers" "3.1039.0" + "@aws-sdk/types" "^3.973.8" + "@smithy/property-provider" "^4.2.14" + "@smithy/shared-ini-file-loader" "^4.4.9" + "@smithy/types" "^4.14.1" + tslib "^2.6.2" + "@aws-sdk/credential-provider-web-identity@3.502.0": version "3.502.0" resolved "https://registry.npmmirror.com/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.502.0.tgz#d45a8e78578f4613dc62275548a7196c01f5ed17" @@ -867,6 +1404,58 @@ "@smithy/types" "^3.0.0" tslib "^2.6.2" +"@aws-sdk/credential-provider-web-identity@^3.972.34": + version "3.972.34" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.972.34.tgz#789bb6d9bbe9d9cac7ff817c17de14842062fc56" + integrity sha512-5KLUH+XmSNRj6amJiJSrPsCxU5l/PYDfxyqPa1MxWhHoQC3sxvGPrSib3IE+HQlfRA4e2kO0bnJy7HJdjvpuuA== + dependencies: + "@aws-sdk/core" "^3.974.4" + "@aws-sdk/nested-clients" "^3.997.2" + "@aws-sdk/types" "^3.973.8" + "@smithy/property-provider" "^4.2.14" + "@smithy/shared-ini-file-loader" "^4.4.9" + "@smithy/types" "^4.14.1" + tslib "^2.6.2" + +"@aws-sdk/credential-provider-web-identity@^3.972.37": + version "3.972.37" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.972.37.tgz#9b74f250a644f9d6248950e02ed311b0b4959d3e" + integrity sha512-aryawqyebf+3WhAFNHfF62rekFpYtVcVN7dQ89qnAWsa4n5hJst8qBG6gXC24WHtW7Nnhkf9ScYnjwo0Brn3bw== + dependencies: + "@aws-sdk/core" "^3.974.7" + "@aws-sdk/nested-clients" "^3.997.5" + "@aws-sdk/types" "^3.973.8" + "@smithy/property-provider" "^4.2.14" + "@smithy/shared-ini-file-loader" "^4.4.9" + "@smithy/types" "^4.14.1" + tslib "^2.6.2" + +"@aws-sdk/credential-providers@3.1035.0": + version "3.1035.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-providers/-/credential-providers-3.1035.0.tgz#133461fc4c45324605ada4cb551006049cc8009c" + integrity sha512-HimZ+jVYJzeD6+pwXvhKX2mvx2fScLbjC4+oz1HF9Vuls/3lAWKHssLLVpCIuXL8Ov6cWe1vQIbwpFajuTAmEA== + dependencies: + "@aws-sdk/client-cognito-identity" "3.1035.0" + "@aws-sdk/core" "^3.974.4" + "@aws-sdk/credential-provider-cognito-identity" "^3.972.27" + "@aws-sdk/credential-provider-env" "^3.972.30" + "@aws-sdk/credential-provider-http" "^3.972.32" + "@aws-sdk/credential-provider-ini" "^3.972.34" + "@aws-sdk/credential-provider-login" "^3.972.34" + "@aws-sdk/credential-provider-node" "^3.972.35" + "@aws-sdk/credential-provider-process" "^3.972.30" + "@aws-sdk/credential-provider-sso" "^3.972.34" + "@aws-sdk/credential-provider-web-identity" "^3.972.34" + "@aws-sdk/nested-clients" "^3.997.2" + "@aws-sdk/types" "^3.973.8" + "@smithy/config-resolver" "^4.4.17" + "@smithy/core" "^3.23.16" + "@smithy/credential-provider-imds" "^4.2.14" + "@smithy/node-config-provider" "^4.3.14" + "@smithy/property-provider" "^4.2.14" + "@smithy/types" "^4.14.1" + tslib "^2.6.2" + "@aws-sdk/credential-providers@^3.350.0": version "3.502.0" resolved "https://registry.npmmirror.com/@aws-sdk/credential-providers/-/credential-providers-3.502.0.tgz#6aca7597c5d0a60a7888b13c57d18f41d4383ff0" @@ -915,6 +1504,19 @@ "@smithy/util-config-provider" "^2.2.1" tslib "^2.5.0" +"@aws-sdk/middleware-bucket-endpoint@^3.972.10": + version "3.972.10" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-bucket-endpoint/-/middleware-bucket-endpoint-3.972.10.tgz#d26aa88b441d6d1b6e9275ffdc61e0fbfb55a513" + integrity sha512-Vbc2frZH7wXlMNd+ZZSXUEs/l1Sv8Jj4zUnIfwrYF5lwaLdXHZ9xx4U3rjUcaye3HRhFVc+E5DbBxpRAbB16BA== + dependencies: + "@aws-sdk/types" "^3.973.8" + "@aws-sdk/util-arn-parser" "^3.972.3" + "@smithy/node-config-provider" "^4.3.14" + "@smithy/protocol-http" "^5.3.14" + "@smithy/types" "^4.14.1" + "@smithy/util-config-provider" "^4.2.2" + tslib "^2.6.2" + "@aws-sdk/middleware-expect-continue@3.502.0": version "3.502.0" resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-expect-continue/-/middleware-expect-continue-3.502.0.tgz#fd265571e1f3a4855714fda34252de751fb054dd" @@ -925,6 +1527,16 @@ "@smithy/types" "^2.9.1" tslib "^2.5.0" +"@aws-sdk/middleware-expect-continue@^3.972.10": + version "3.972.10" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-expect-continue/-/middleware-expect-continue-3.972.10.tgz#b685287951156a5d093cfdd37364894c6a8c966c" + integrity sha512-2Yn0f1Qiq/DjxYR3wfI3LokXnjOhFM7Ssn4LTdFDIxRMCE6I32MAsVnhPX1cUZsuVA9tiZtwwhlSLAtFGxAZlQ== + dependencies: + "@aws-sdk/types" "^3.973.8" + "@smithy/protocol-http" "^5.3.14" + "@smithy/types" "^4.14.1" + tslib "^2.6.2" + "@aws-sdk/middleware-flexible-checksums@3.502.0": version "3.502.0" resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-flexible-checksums/-/middleware-flexible-checksums-3.502.0.tgz#e4fa059f3c4603bd815f16d69e1c4277c4c4830a" @@ -939,6 +1551,26 @@ "@smithy/util-utf8" "^2.1.1" tslib "^2.5.0" +"@aws-sdk/middleware-flexible-checksums@^3.974.15": + version "3.974.15" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-flexible-checksums/-/middleware-flexible-checksums-3.974.15.tgz#11e688424dd08fae175d08597dd2a7edeaa4773a" + integrity sha512-j4Zp7rA1HfhDTteICnx/tPax4N/v5wmytgguXExUGyEwQ8Ug4EBA4kjp9puFAN1UZoBVpxoiXMiuTFvjaHjeEw== + dependencies: + "@aws-crypto/crc32" "5.2.0" + "@aws-crypto/crc32c" "5.2.0" + "@aws-crypto/util" "5.2.0" + "@aws-sdk/core" "^3.974.7" + "@aws-sdk/crc64-nvme" "^3.972.7" + "@aws-sdk/types" "^3.973.8" + "@smithy/is-array-buffer" "^4.2.2" + "@smithy/node-config-provider" "^4.3.14" + "@smithy/protocol-http" "^5.3.14" + "@smithy/types" "^4.14.1" + "@smithy/util-middleware" "^4.2.14" + "@smithy/util-stream" "^4.5.25" + "@smithy/util-utf8" "^4.2.2" + tslib "^2.6.2" + "@aws-sdk/middleware-host-header@3.502.0": version "3.502.0" resolved "https://registry.npmmirror.com/@aws-sdk/middleware-host-header/-/middleware-host-header-3.502.0.tgz#2651fb3509990271c89eb50133fb17cb8ae435f6" @@ -959,6 +1591,16 @@ "@smithy/types" "^3.0.0" tslib "^2.6.2" +"@aws-sdk/middleware-host-header@^3.972.10": + version "3.972.10" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-host-header/-/middleware-host-header-3.972.10.tgz#e63b91959ce46948d789582351b2a44c4876e924" + integrity sha512-IJSsIMeVQ8MMCPbuh1AbltkFhLBLXn7aejzfX5YKT/VLDHn++Dcz8886tXckE+wQssyPUhaXrJhdakO2VilRhg== + dependencies: + "@aws-sdk/types" "^3.973.8" + "@smithy/protocol-http" "^5.3.14" + "@smithy/types" "^4.14.1" + tslib "^2.6.2" + "@aws-sdk/middleware-location-constraint@3.502.0": version "3.502.0" resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-location-constraint/-/middleware-location-constraint-3.502.0.tgz#188c3bae2e908aff11030af10bc3b64c87905910" @@ -968,6 +1610,15 @@ "@smithy/types" "^2.9.1" tslib "^2.5.0" +"@aws-sdk/middleware-location-constraint@^3.972.10": + version "3.972.10" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-location-constraint/-/middleware-location-constraint-3.972.10.tgz#5265ea472f735c50b016bb5d1b46c7a616653733" + integrity sha512-rI3NZvJcEvjoD0+0PI0iUAwlPw2IlSlhyvgBK/3WkKJQE/YiKFedd9dMN2lVacdNxPNhxL/jzQaKQdrGtQagjQ== + dependencies: + "@aws-sdk/types" "^3.973.8" + "@smithy/types" "^4.14.1" + tslib "^2.6.2" + "@aws-sdk/middleware-logger@3.502.0": version "3.502.0" resolved "https://registry.npmmirror.com/@aws-sdk/middleware-logger/-/middleware-logger-3.502.0.tgz#558cefdd233779f15687957f9f07497199b22d72" @@ -986,6 +1637,15 @@ "@smithy/types" "^3.0.0" tslib "^2.6.2" +"@aws-sdk/middleware-logger@^3.972.10": + version "3.972.10" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-logger/-/middleware-logger-3.972.10.tgz#d92b3374dcaddd523930bdff441207946343c270" + integrity sha512-OOuGvvz1Dm20SjZo5oEBePFqxt5nf8AwkNDSyUHvD9/bfNASmstcYxFAHUowy4n6Io7mWUZ04JURZwSBvyQanQ== + dependencies: + "@aws-sdk/types" "^3.973.8" + "@smithy/types" "^4.14.1" + tslib "^2.6.2" + "@aws-sdk/middleware-recursion-detection@3.502.0": version "3.502.0" resolved "https://registry.npmmirror.com/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.502.0.tgz#c22e2c0c1d551e58c788264687324bb7186af2cc" @@ -1006,6 +1666,17 @@ "@smithy/types" "^3.0.0" tslib "^2.6.2" +"@aws-sdk/middleware-recursion-detection@^3.972.11": + version "3.972.11" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.972.11.tgz#5659982a34fa58c69cbd358c2987c32aefd2bd91" + integrity sha512-+zz6f79Kj9V5qFK2P+D8Ehjnw4AhphAlCAsPjUqEcInA9umtSSKMrHbSagEeOIsDNuvVrH98bjRHcyQukTrhaQ== + dependencies: + "@aws-sdk/types" "^3.973.8" + "@aws/lambda-invoke-store" "^0.2.2" + "@smithy/protocol-http" "^5.3.14" + "@smithy/types" "^4.14.1" + tslib "^2.6.2" + "@aws-sdk/middleware-sdk-s3@3.502.0": version "3.502.0" resolved "https://registry.npmmirror.com/@aws-sdk/middleware-sdk-s3/-/middleware-sdk-s3-3.502.0.tgz#a2d968414247fd9cbfc90e1071f29e4375cb25b8" @@ -1021,6 +1692,46 @@ "@smithy/util-config-provider" "^2.2.1" tslib "^2.5.0" +"@aws-sdk/middleware-sdk-s3@^3.972.33": + version "3.972.33" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-sdk-s3/-/middleware-sdk-s3-3.972.33.tgz#51004da8c3155f9ed24f47de52cc2ebfe4b4990a" + integrity sha512-n8Eh/+kq3u/EodLr8n6sQupu03QGjf122RHXCTGLaHSkavz/2beSKpRlq2oDgfmJZNkAkWF113xbyaUmyOd+YA== + dependencies: + "@aws-sdk/core" "^3.974.4" + "@aws-sdk/types" "^3.973.8" + "@aws-sdk/util-arn-parser" "^3.972.3" + "@smithy/core" "^3.23.16" + "@smithy/node-config-provider" "^4.3.14" + "@smithy/protocol-http" "^5.3.14" + "@smithy/signature-v4" "^5.3.14" + "@smithy/smithy-client" "^4.12.12" + "@smithy/types" "^4.14.1" + "@smithy/util-config-provider" "^4.2.2" + "@smithy/util-middleware" "^4.2.14" + "@smithy/util-stream" "^4.5.24" + "@smithy/util-utf8" "^4.2.2" + tslib "^2.6.2" + +"@aws-sdk/middleware-sdk-s3@^3.972.36": + version "3.972.36" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-sdk-s3/-/middleware-sdk-s3-3.972.36.tgz#d67c778ca2c385a35ef48986d547dd4693fb6a0a" + integrity sha512-YhPix+0x/MdQrb1Ug1GDKeS5fqylIy+naz800asX8II4jqfTk2KY2KhmmYCwZcky8YWtRQQwWCGdoqeAnip8Uw== + dependencies: + "@aws-sdk/core" "^3.974.7" + "@aws-sdk/types" "^3.973.8" + "@aws-sdk/util-arn-parser" "^3.972.3" + "@smithy/core" "^3.23.17" + "@smithy/node-config-provider" "^4.3.14" + "@smithy/protocol-http" "^5.3.14" + "@smithy/signature-v4" "^5.3.14" + "@smithy/smithy-client" "^4.12.13" + "@smithy/types" "^4.14.1" + "@smithy/util-config-provider" "^4.2.2" + "@smithy/util-middleware" "^4.2.14" + "@smithy/util-stream" "^4.5.25" + "@smithy/util-utf8" "^4.2.2" + tslib "^2.6.2" + "@aws-sdk/middleware-signing@3.502.0": version "3.502.0" resolved "https://registry.npmmirror.com/@aws-sdk/middleware-signing/-/middleware-signing-3.502.0.tgz#48b3503147eecb1a53a63633462de353668f635a" @@ -1043,6 +1754,15 @@ "@smithy/types" "^2.9.1" tslib "^2.5.0" +"@aws-sdk/middleware-ssec@^3.972.10": + version "3.972.10" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-ssec/-/middleware-ssec-3.972.10.tgz#46b5c030c0116f51110e18042ad3cf863ab5c81c" + integrity sha512-Gli9A0u8EVVb+5bFDGS/QbSVg28w/wpEidg1ggVcSj65BDTdGR6punsOcVjqdiu1i42WHWo51MCvARPIIz9juw== + dependencies: + "@aws-sdk/types" "^3.973.8" + "@smithy/types" "^4.14.1" + tslib "^2.6.2" + "@aws-sdk/middleware-user-agent@3.502.0": version "3.502.0" resolved "https://registry.npmmirror.com/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.502.0.tgz#dd740f150d6f3110cf5b08fedf361d202f899c93" @@ -1065,6 +1785,142 @@ "@smithy/types" "^3.0.0" tslib "^2.6.2" +"@aws-sdk/middleware-user-agent@^3.972.34": + version "3.972.34" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.972.34.tgz#e5571d48a6f6351c68025131d27deb71993320ad" + integrity sha512-jrmJHyYlTQocR7H4VhvSFhaoedMb2rmlOTvFWD6tNBQ/EVQhTsrNfQUYFuPiOc2wUGxbm5LgCHtnvVmCPgODHw== + dependencies: + "@aws-sdk/core" "^3.974.4" + "@aws-sdk/types" "^3.973.8" + "@aws-sdk/util-endpoints" "^3.996.8" + "@smithy/core" "^3.23.16" + "@smithy/protocol-http" "^5.3.14" + "@smithy/types" "^4.14.1" + "@smithy/util-retry" "^4.3.3" + tslib "^2.6.2" + +"@aws-sdk/middleware-user-agent@^3.972.37": + version "3.972.37" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.972.37.tgz#61ee85d964a3f36091a5b36dea630fb30e8e6913" + integrity sha512-N1oNpdiLoVAWYD3WFBnUi3LlfoDA06ZHo4ozyjbsJNLvILzvt//0CnR8N+CZ0NWeYgVB/5V59ivixHCWCx2ALw== + dependencies: + "@aws-sdk/core" "^3.974.7" + "@aws-sdk/types" "^3.973.8" + "@aws-sdk/util-endpoints" "^3.996.8" + "@smithy/core" "^3.23.17" + "@smithy/protocol-http" "^5.3.14" + "@smithy/types" "^4.14.1" + "@smithy/util-retry" "^4.3.6" + tslib "^2.6.2" + +"@aws-sdk/nested-clients@^3.997.2": + version "3.997.2" + resolved "https://registry.yarnpkg.com/@aws-sdk/nested-clients/-/nested-clients-3.997.2.tgz#becaf989147403f9290113c1938dd36d21b9476b" + integrity sha512-uGGQO08YetrqfInOKG5atRMrCDRQWRuZ9gGfKY6svPmuE4K7ac+XcbCkpWpjcA7yCYsBaKB/Nly4XKgPXUO1PA== + dependencies: + "@aws-crypto/sha256-browser" "5.2.0" + "@aws-crypto/sha256-js" "5.2.0" + "@aws-sdk/core" "^3.974.4" + "@aws-sdk/middleware-host-header" "^3.972.10" + "@aws-sdk/middleware-logger" "^3.972.10" + "@aws-sdk/middleware-recursion-detection" "^3.972.11" + "@aws-sdk/middleware-user-agent" "^3.972.34" + "@aws-sdk/region-config-resolver" "^3.972.13" + "@aws-sdk/signature-v4-multi-region" "^3.996.21" + "@aws-sdk/types" "^3.973.8" + "@aws-sdk/util-endpoints" "^3.996.8" + "@aws-sdk/util-user-agent-browser" "^3.972.10" + "@aws-sdk/util-user-agent-node" "^3.973.20" + "@smithy/config-resolver" "^4.4.17" + "@smithy/core" "^3.23.16" + "@smithy/fetch-http-handler" "^5.3.17" + "@smithy/hash-node" "^4.2.14" + "@smithy/invalid-dependency" "^4.2.14" + "@smithy/middleware-content-length" "^4.2.14" + "@smithy/middleware-endpoint" "^4.4.31" + "@smithy/middleware-retry" "^4.5.4" + "@smithy/middleware-serde" "^4.2.19" + "@smithy/middleware-stack" "^4.2.14" + "@smithy/node-config-provider" "^4.3.14" + "@smithy/node-http-handler" "^4.6.0" + "@smithy/protocol-http" "^5.3.14" + "@smithy/smithy-client" "^4.12.12" + "@smithy/types" "^4.14.1" + "@smithy/url-parser" "^4.2.14" + "@smithy/util-base64" "^4.3.2" + "@smithy/util-body-length-browser" "^4.2.2" + "@smithy/util-body-length-node" "^4.2.3" + "@smithy/util-defaults-mode-browser" "^4.3.48" + "@smithy/util-defaults-mode-node" "^4.2.53" + "@smithy/util-endpoints" "^3.4.2" + "@smithy/util-middleware" "^4.2.14" + "@smithy/util-retry" "^4.3.3" + "@smithy/util-utf8" "^4.2.2" + tslib "^2.6.2" + +"@aws-sdk/nested-clients@^3.997.5": + version "3.997.5" + resolved "https://registry.yarnpkg.com/@aws-sdk/nested-clients/-/nested-clients-3.997.5.tgz#0b66825b14b1a06b43b71e95354f22cb6b4926df" + integrity sha512-jGFr6DxtcMTmzOkG/a0jCZYv4BBDmeNYVeO+/memSoDkYCJu4Y58xviYmzwJfYyIVSts+X/BVjJm1uGBnwHEMg== + dependencies: + "@aws-crypto/sha256-browser" "5.2.0" + "@aws-crypto/sha256-js" "5.2.0" + "@aws-sdk/core" "^3.974.7" + "@aws-sdk/middleware-host-header" "^3.972.10" + "@aws-sdk/middleware-logger" "^3.972.10" + "@aws-sdk/middleware-recursion-detection" "^3.972.11" + "@aws-sdk/middleware-user-agent" "^3.972.37" + "@aws-sdk/region-config-resolver" "^3.972.13" + "@aws-sdk/signature-v4-multi-region" "^3.996.24" + "@aws-sdk/types" "^3.973.8" + "@aws-sdk/util-endpoints" "^3.996.8" + "@aws-sdk/util-user-agent-browser" "^3.972.10" + "@aws-sdk/util-user-agent-node" "^3.973.23" + "@smithy/config-resolver" "^4.4.17" + "@smithy/core" "^3.23.17" + "@smithy/fetch-http-handler" "^5.3.17" + "@smithy/hash-node" "^4.2.14" + "@smithy/invalid-dependency" "^4.2.14" + "@smithy/middleware-content-length" "^4.2.14" + "@smithy/middleware-endpoint" "^4.4.32" + "@smithy/middleware-retry" "^4.5.7" + "@smithy/middleware-serde" "^4.2.20" + "@smithy/middleware-stack" "^4.2.14" + "@smithy/node-config-provider" "^4.3.14" + "@smithy/node-http-handler" "^4.6.1" + "@smithy/protocol-http" "^5.3.14" + "@smithy/smithy-client" "^4.12.13" + "@smithy/types" "^4.14.1" + "@smithy/url-parser" "^4.2.14" + "@smithy/util-base64" "^4.3.2" + "@smithy/util-body-length-browser" "^4.2.2" + "@smithy/util-body-length-node" "^4.2.3" + "@smithy/util-defaults-mode-browser" "^4.3.49" + "@smithy/util-defaults-mode-node" "^4.2.54" + "@smithy/util-endpoints" "^3.4.2" + "@smithy/util-middleware" "^4.2.14" + "@smithy/util-retry" "^4.3.6" + "@smithy/util-utf8" "^4.2.2" + tslib "^2.6.2" + +"@aws-sdk/rds-signer@^3.0.0": + version "3.1035.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/rds-signer/-/rds-signer-3.1035.0.tgz#d787e45a61f9be497453717060b48ce0d9547fcc" + integrity sha512-FrrZh58MbXM0tbXF4tTVz1KV17vQqP9baWmjkqB21E6B3vggmLjzbsKAA0c0J7R7r5eNFULeRmOBvrGr5vOHIQ== + dependencies: + "@aws-crypto/sha256-browser" "5.2.0" + "@aws-crypto/sha256-js" "5.2.0" + "@aws-sdk/credential-providers" "3.1035.0" + "@aws-sdk/util-format-url" "^3.972.10" + "@smithy/config-resolver" "^4.4.17" + "@smithy/hash-node" "^4.2.14" + "@smithy/invalid-dependency" "^4.2.14" + "@smithy/node-config-provider" "^4.3.14" + "@smithy/protocol-http" "^5.3.14" + "@smithy/signature-v4" "^5.3.14" + "@smithy/types" "^4.14.1" + tslib "^2.6.2" + "@aws-sdk/region-config-resolver@3.502.0": version "3.502.0" resolved "https://registry.npmmirror.com/@aws-sdk/region-config-resolver/-/region-config-resolver-3.502.0.tgz#c18a04060879eb03c47c05b05fc296119ee073ba" @@ -1089,6 +1945,17 @@ "@smithy/util-middleware" "^3.0.0" tslib "^2.6.2" +"@aws-sdk/region-config-resolver@^3.972.13": + version "3.972.13" + resolved "https://registry.yarnpkg.com/@aws-sdk/region-config-resolver/-/region-config-resolver-3.972.13.tgz#bd32748c2d41b62be838fec76c4b87d4370939c6" + integrity sha512-CvJ2ZIjK/jVD/lbOpowBVElJyC1YxLTIJ13yM0AEo0t2v7swOzGjSA6lJGH+DwZXQhcjUjoYwc8bVYCX5MDr1A== + dependencies: + "@aws-sdk/types" "^3.973.8" + "@smithy/config-resolver" "^4.4.17" + "@smithy/node-config-provider" "^4.3.14" + "@smithy/types" "^4.14.1" + tslib "^2.6.2" + "@aws-sdk/signature-v4-multi-region@3.502.0": version "3.502.0" resolved "https://registry.npmmirror.com/@aws-sdk/signature-v4-multi-region/-/signature-v4-multi-region-3.502.0.tgz#2d3fab86051eb98a4e4216e0f2f3d957a854b42c" @@ -1101,6 +1968,30 @@ "@smithy/types" "^2.9.1" tslib "^2.5.0" +"@aws-sdk/signature-v4-multi-region@^3.996.21": + version "3.996.21" + resolved "https://registry.yarnpkg.com/@aws-sdk/signature-v4-multi-region/-/signature-v4-multi-region-3.996.21.tgz#eec249ca9f117ae859d333d2c2058175ca96e1c9" + integrity sha512-3EpT+C0QdmTMB5aVeJ5odWSLt9vg2oGzUXl1xvUazKGlkr9OBYnegNWqhhjGgZdv8RmSi5eS8nqqB+euNP2aqA== + dependencies: + "@aws-sdk/middleware-sdk-s3" "^3.972.33" + "@aws-sdk/types" "^3.973.8" + "@smithy/protocol-http" "^5.3.14" + "@smithy/signature-v4" "^5.3.14" + "@smithy/types" "^4.14.1" + tslib "^2.6.2" + +"@aws-sdk/signature-v4-multi-region@^3.996.24": + version "3.996.24" + resolved "https://registry.yarnpkg.com/@aws-sdk/signature-v4-multi-region/-/signature-v4-multi-region-3.996.24.tgz#efe204595832e418aad404163f55d7ffc7d21dad" + integrity sha512-amP7tLikppN940wbBFISYqiuzVmpzMS9U3mcgtmVLjX4fdWI/SNCvrXv6ZxfVzTT4cT0rPKOLhFah2xLwzREWw== + dependencies: + "@aws-sdk/middleware-sdk-s3" "^3.972.36" + "@aws-sdk/types" "^3.973.8" + "@smithy/protocol-http" "^5.3.14" + "@smithy/signature-v4" "^5.3.14" + "@smithy/types" "^4.14.1" + tslib "^2.6.2" + "@aws-sdk/signature-v4@^3.347.0": version "3.374.0" resolved "https://registry.npmmirror.com/@aws-sdk/signature-v4/-/signature-v4-3.374.0.tgz#bd727f4c392acb81bc667aa4cfceeba608250771" @@ -1109,6 +2000,32 @@ "@smithy/signature-v4" "^1.0.1" tslib "^2.5.0" +"@aws-sdk/token-providers@3.1035.0": + version "3.1035.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/token-providers/-/token-providers-3.1035.0.tgz#1b7b4eb594c8aab17be074e9e542ca13a80e97a3" + integrity sha512-E6IO3Cn+OzBe6Sb5pnubd5Y8qSUMAsVKkD5QSwFfIx5fV1g5SkYwUDRDyPlm90RuIVcCo28wpMJU6W8wXH46Aw== + dependencies: + "@aws-sdk/core" "^3.974.4" + "@aws-sdk/nested-clients" "^3.997.2" + "@aws-sdk/types" "^3.973.8" + "@smithy/property-provider" "^4.2.14" + "@smithy/shared-ini-file-loader" "^4.4.9" + "@smithy/types" "^4.14.1" + tslib "^2.6.2" + +"@aws-sdk/token-providers@3.1039.0": + version "3.1039.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/token-providers/-/token-providers-3.1039.0.tgz#98fac2aa3c22d2ba8b2375d35dcd67f96ea3e990" + integrity sha512-NMSFL2HwkAOoCeLCQiqoOq5pT3vVbSjww2QZTuYgYknVwhhv125PSDzZIcL5EYnlxuPWjEOdauZK+FspkZDVdw== + dependencies: + "@aws-sdk/core" "^3.974.7" + "@aws-sdk/nested-clients" "^3.997.5" + "@aws-sdk/types" "^3.973.8" + "@smithy/property-provider" "^4.2.14" + "@smithy/shared-ini-file-loader" "^4.4.9" + "@smithy/types" "^4.14.1" + tslib "^2.6.2" + "@aws-sdk/token-providers@3.502.0": version "3.502.0" resolved "https://registry.yarnpkg.com/@aws-sdk/token-providers/-/token-providers-3.502.0.tgz#d477638d5bd0c47c881e63fa6395b238fe4a021c" @@ -1148,6 +2065,14 @@ "@smithy/types" "^3.0.0" tslib "^2.6.2" +"@aws-sdk/types@^3.973.8": + version "3.973.8" + resolved "https://registry.yarnpkg.com/@aws-sdk/types/-/types-3.973.8.tgz#7352cb74a5f8bae1218eee63e714cf94302911c5" + integrity sha512-gjlAdtHMbtR9X5iIhVUvbVcy55KnznpC6bkDUWW9z915bi0ckdUr5cjf16Kp6xq0bP5HBD2xzgbL9F9Quv5vUw== + dependencies: + "@smithy/types" "^4.14.1" + tslib "^2.6.2" + "@aws-sdk/util-arn-parser@3.495.0", "@aws-sdk/util-arn-parser@^3.310.0": version "3.495.0" resolved "https://registry.npmmirror.com/@aws-sdk/util-arn-parser/-/util-arn-parser-3.495.0.tgz#539f2d6dfef343a80324348f1f9a1b7eed2390f3" @@ -1155,6 +2080,13 @@ dependencies: tslib "^2.5.0" +"@aws-sdk/util-arn-parser@^3.972.3": + version "3.972.3" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-arn-parser/-/util-arn-parser-3.972.3.tgz#ed989862bbb172ce16d9e1cd5790e5fe367219c2" + integrity sha512-HzSD8PMFrvgi2Kserxuff5VitNq2sgf3w9qxmskKDiDTThWfVteJxuCS9JXiPIPtmCrp+7N9asfIaVhBFORllA== + dependencies: + tslib "^2.6.2" + "@aws-sdk/util-endpoints@3.502.0": version "3.502.0" resolved "https://registry.npmmirror.com/@aws-sdk/util-endpoints/-/util-endpoints-3.502.0.tgz#aee818c0c53dfedfd49599fc260cd880faea5e82" @@ -1175,6 +2107,27 @@ "@smithy/util-endpoints" "^2.0.1" tslib "^2.6.2" +"@aws-sdk/util-endpoints@^3.996.8": + version "3.996.8" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-endpoints/-/util-endpoints-3.996.8.tgz#ad5c4f09b93482c0861d49d8a025edc2b0d2f5ec" + integrity sha512-oOZHcRDihk5iEe5V25NVWg45b3qEA8OpHWVdU/XQh8Zj4heVPAJqWvMphQnU7LkufmUo10EpvFPZuQMiFLJK3g== + dependencies: + "@aws-sdk/types" "^3.973.8" + "@smithy/types" "^4.14.1" + "@smithy/url-parser" "^4.2.14" + "@smithy/util-endpoints" "^3.4.2" + tslib "^2.6.2" + +"@aws-sdk/util-format-url@^3.972.10": + version "3.972.10" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-format-url/-/util-format-url-3.972.10.tgz#63184b56627b50842cf37cc0e63251944fc234ed" + integrity sha512-DEKiHNJVtNxdyTeQspzY+15Po/kHm6sF0Cs4HV9Q2+lplB63+DrvdeiSoOSdWEWAoO2RcY1veoXVDz2tWxWCgQ== + dependencies: + "@aws-sdk/types" "^3.973.8" + "@smithy/querystring-builder" "^4.2.14" + "@smithy/types" "^4.14.1" + tslib "^2.6.2" + "@aws-sdk/util-locate-window@^3.0.0": version "3.495.0" resolved "https://registry.npmmirror.com/@aws-sdk/util-locate-window/-/util-locate-window-3.495.0.tgz#9034fd8db77991b28ed20e067acdd53e8b8f824b" @@ -1202,6 +2155,16 @@ bowser "^2.11.0" tslib "^2.6.2" +"@aws-sdk/util-user-agent-browser@^3.972.10": + version "3.972.10" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.972.10.tgz#e29be10389db9db12b2d8246ad247a89038f4c60" + integrity sha512-FAzqXvfEssGdSIz8ejatan0bOdx1qefBWKF/gWmVBXIP1HkS7v/wjjaqrAGGKvyihrXTXW00/2/1nTJtxpXz7g== + dependencies: + "@aws-sdk/types" "^3.973.8" + "@smithy/types" "^4.14.1" + bowser "^2.11.0" + tslib "^2.6.2" + "@aws-sdk/util-user-agent-node@3.502.0": version "3.502.0" resolved "https://registry.npmmirror.com/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.502.0.tgz#04ac4d0371d4f243f12ddc23b42ca8ceb27dfad9" @@ -1222,6 +2185,30 @@ "@smithy/types" "^3.0.0" tslib "^2.6.2" +"@aws-sdk/util-user-agent-node@^3.973.20": + version "3.973.20" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.973.20.tgz#a661a76ba9b5ec2ee7ac014d5e95c955b531abcf" + integrity sha512-owEqyKr0z5hWwk+uHwudwNhyFMZ9f9eSWr/k/XD6yeDCI7hHyc56s4UOY1iBQmoramTbdAY4UCuLLEuKmjVXrg== + dependencies: + "@aws-sdk/middleware-user-agent" "^3.972.34" + "@aws-sdk/types" "^3.973.8" + "@smithy/node-config-provider" "^4.3.14" + "@smithy/types" "^4.14.1" + "@smithy/util-config-provider" "^4.2.2" + tslib "^2.6.2" + +"@aws-sdk/util-user-agent-node@^3.973.23": + version "3.973.23" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.973.23.tgz#3e29535e887ad72deaecdfd4667ec710e4086f90" + integrity sha512-gGwq8L2Euw0aNG6Ey4EktiAo3fSCVoDy1CaBIthd+oeaKHPXUrNaApMewQ6La5Hv0lcznOtECZaNvYyc5LXXfA== + dependencies: + "@aws-sdk/middleware-user-agent" "^3.972.37" + "@aws-sdk/types" "^3.973.8" + "@smithy/node-config-provider" "^4.3.14" + "@smithy/types" "^4.14.1" + "@smithy/util-config-provider" "^4.2.2" + tslib "^2.6.2" + "@aws-sdk/util-utf8-browser@^3.0.0": version "3.259.0" resolved "https://registry.npmmirror.com/@aws-sdk/util-utf8-browser/-/util-utf8-browser-3.259.0.tgz#3275a6f5eb334f96ca76635b961d3c50259fd9ff" @@ -1237,6 +2224,30 @@ "@smithy/types" "^2.9.1" tslib "^2.5.0" +"@aws-sdk/xml-builder@^3.972.18": + version "3.972.18" + resolved "https://registry.yarnpkg.com/@aws-sdk/xml-builder/-/xml-builder-3.972.18.tgz#2620fff23f5f20b25cf5d0ef4d4d1ffc12d741a5" + integrity sha512-BMDNVG1ETXRhl1tnisQiYBef3RShJ1kfZA7x7afivTFMLirfHNTb6U71K569HNXhSXbQZsweHvSDZ6euBw8hPA== + dependencies: + "@smithy/types" "^4.14.1" + fast-xml-parser "5.5.8" + tslib "^2.6.2" + +"@aws-sdk/xml-builder@^3.972.22": + version "3.972.22" + resolved "https://registry.yarnpkg.com/@aws-sdk/xml-builder/-/xml-builder-3.972.22.tgz#1e44ca9fd9c3fdc3d9af9540ced024f34cfc60b2" + integrity sha512-PMYKKtJd70IsSG0yHrdAbxBr+ZWBKLvzFZfD3/urxgf6hXVMzuU5M+3MJ5G67RpOmLBu1fAUN65SbWuKUCOlAA== + dependencies: + "@nodable/entities" "2.1.0" + "@smithy/types" "^4.14.1" + fast-xml-parser "5.7.2" + tslib "^2.6.2" + +"@aws/lambda-invoke-store@^0.2.2": + version "0.2.4" + resolved "https://registry.yarnpkg.com/@aws/lambda-invoke-store/-/lambda-invoke-store-0.2.4.tgz#802f6a50f6b6589063ef63ba8acdee86fcb9f395" + integrity sha512-iY8yvjE0y651BixKNPgmv1WrQc+GZ142sb0z4gYnChDDY2YqI4P/jsSopBWrKfAt7LOJAkOXt7rC/hms+WclQQ== + "@azure/abort-controller@^1.0.0", "@azure/abort-controller@^1.1.0": version "1.1.0" resolved "https://registry.npmmirror.com/@azure/abort-controller/-/abort-controller-1.1.0.tgz#788ee78457a55af8a1ad342acb182383d2119249" @@ -1409,7 +2420,7 @@ dependencies: "@babel/highlight" "^7.0.0" -"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.16.0", "@babel/code-frame@^7.16.7", "@babel/code-frame@^7.23.5", "@babel/code-frame@^7.8.3": +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.16.0", "@babel/code-frame@^7.16.7", "@babel/code-frame@^7.8.3": version "7.23.5" resolved "https://registry.npmmirror.com/@babel/code-frame/-/code-frame-7.23.5.tgz#9009b69a8c602293476ad598ff53e4562e15c244" integrity sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA== @@ -1425,202 +2436,106 @@ "@babel/highlight" "^7.24.7" picocolors "^1.0.0" -"@babel/compat-data@^7.22.6", "@babel/compat-data@^7.23.3", "@babel/compat-data@^7.23.5": - version "7.23.5" - resolved "https://registry.npmmirror.com/@babel/compat-data/-/compat-data-7.23.5.tgz#ffb878728bb6bdcb6f4510aa51b1be9afb8cfd98" - integrity sha512-uU27kfDRlhfKl+w1U6vp16IuvSLtjAxdArVXPa9BvLkrr7CYIsxH5adpHObeAGY/41+syctUWOZ140a2Rvkgjw== - -"@babel/core@^7.11.6", "@babel/core@^7.12.3", "@babel/core@^7.19.6": - version "7.23.9" - resolved "https://registry.npmmirror.com/@babel/core/-/core-7.23.9.tgz#b028820718000f267870822fec434820e9b1e4d1" - integrity sha512-5q0175NOjddqpvvzU+kDiSOAk4PfdO6FvwCWoQ6RO7rTzEe8vlo+4HVfcnAREhD4npMs0e9uZypjTwzZPCf/cw== - dependencies: - "@ampproject/remapping" "^2.2.0" - "@babel/code-frame" "^7.23.5" - "@babel/generator" "^7.23.6" - "@babel/helper-compilation-targets" "^7.23.6" - "@babel/helper-module-transforms" "^7.23.3" - "@babel/helpers" "^7.23.9" - "@babel/parser" "^7.23.9" - "@babel/template" "^7.23.9" - "@babel/traverse" "^7.23.9" - "@babel/types" "^7.23.9" +"@babel/code-frame@^7.28.6", "@babel/code-frame@^7.29.0": + version "7.29.0" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.29.0.tgz#7cd7a59f15b3cc0dcd803038f7792712a7d0b15c" + integrity sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw== + dependencies: + "@babel/helper-validator-identifier" "^7.28.5" + js-tokens "^4.0.0" + picocolors "^1.1.1" + +"@babel/compat-data@^7.28.6": + version "7.29.0" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.29.0.tgz#00d03e8c0ac24dd9be942c5370990cbe1f17d88d" + integrity sha512-T1NCJqT/j9+cn8fvkt7jtwbLBfLC/1y1c7NtCeXFRgzGTsafi68MRv8yzkYSapBnFA6L3U2VSc02ciDzoAJhJg== + +"@babel/core@^7.11.6", "@babel/core@^7.12.3", "@babel/core@^7.23.9": + version "7.29.0" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.29.0.tgz#5286ad785df7f79d656e88ce86e650d16ca5f322" + integrity sha512-CGOfOJqWjg2qW/Mb6zNsDm+u5vFQ8DxXfbM09z69p5Z6+mE1ikP2jUXw+j42Pf1XTYED2Rni5f95npYeuwMDQA== + dependencies: + "@babel/code-frame" "^7.29.0" + "@babel/generator" "^7.29.0" + "@babel/helper-compilation-targets" "^7.28.6" + "@babel/helper-module-transforms" "^7.28.6" + "@babel/helpers" "^7.28.6" + "@babel/parser" "^7.29.0" + "@babel/template" "^7.28.6" + "@babel/traverse" "^7.29.0" + "@babel/types" "^7.29.0" + "@jridgewell/remapping" "^2.3.5" convert-source-map "^2.0.0" debug "^4.1.0" gensync "^1.0.0-beta.2" json5 "^2.2.3" semver "^6.3.1" -"@babel/generator@^7.23.6", "@babel/generator@^7.7.2": - version "7.23.6" - resolved "https://registry.npmmirror.com/@babel/generator/-/generator-7.23.6.tgz#9e1fca4811c77a10580d17d26b57b036133f3c2e" - integrity sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw== - dependencies: - "@babel/types" "^7.23.6" - "@jridgewell/gen-mapping" "^0.3.2" - "@jridgewell/trace-mapping" "^0.3.17" - jsesc "^2.5.1" - -"@babel/helper-annotate-as-pure@^7.22.5": - version "7.22.5" - resolved "https://registry.npmmirror.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.22.5.tgz#e7f06737b197d580a01edf75d97e2c8be99d3882" - integrity sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg== - dependencies: - "@babel/types" "^7.22.5" - -"@babel/helper-builder-binary-assignment-operator-visitor@^7.22.15": - version "7.22.15" - resolved "https://registry.npmmirror.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.22.15.tgz#5426b109cf3ad47b91120f8328d8ab1be8b0b956" - integrity sha512-QkBXwGgaoC2GtGZRoma6kv7Szfv06khvhFav67ZExau2RaXzy8MpHSMO2PNoP2XtmQphJQRHFfg77Bq731Yizw== - dependencies: - "@babel/types" "^7.22.15" - -"@babel/helper-compilation-targets@^7.22.15", "@babel/helper-compilation-targets@^7.22.6", "@babel/helper-compilation-targets@^7.23.6": - version "7.23.6" - resolved "https://registry.npmmirror.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.23.6.tgz#4d79069b16cbcf1461289eccfbbd81501ae39991" - integrity sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ== - dependencies: - "@babel/compat-data" "^7.23.5" - "@babel/helper-validator-option" "^7.23.5" - browserslist "^4.22.2" +"@babel/generator@^7.29.0", "@babel/generator@^7.7.2": + version "7.29.1" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.29.1.tgz#d09876290111abbb00ef962a7b83a5307fba0d50" + integrity sha512-qsaF+9Qcm2Qv8SRIMMscAvG4O3lJ0F1GuMo5HR/Bp02LopNgnZBC/EkbevHFeGs4ls/oPz9v+Bsmzbkbe+0dUw== + dependencies: + "@babel/parser" "^7.29.0" + "@babel/types" "^7.29.0" + "@jridgewell/gen-mapping" "^0.3.12" + "@jridgewell/trace-mapping" "^0.3.28" + jsesc "^3.0.2" + +"@babel/helper-compilation-targets@^7.28.6": + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.28.6.tgz#32c4a3f41f12ed1532179b108a4d746e105c2b25" + integrity sha512-JYtls3hqi15fcx5GaSNL7SCTJ2MNmjrkHXg4FSpOA/grxK8KwyZ5bubHsCq8FXCkua6xhuaaBit+3b7+VZRfcA== + dependencies: + "@babel/compat-data" "^7.28.6" + "@babel/helper-validator-option" "^7.27.1" + browserslist "^4.24.0" lru-cache "^5.1.1" semver "^6.3.1" -"@babel/helper-create-class-features-plugin@^7.22.15", "@babel/helper-create-class-features-plugin@^7.23.6": - version "7.23.9" - resolved "https://registry.npmmirror.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.23.9.tgz#fddfdf51fca28f23d16b9e3935a4732690acfad6" - integrity sha512-B2L9neXTIyPQoXDm+NtovPvG6VOLWnaXu3BIeVDWwdKFgG30oNa6CqVGiJPDWQwIAK49t9gnQI9c6K6RzabiKw== - dependencies: - "@babel/helper-annotate-as-pure" "^7.22.5" - "@babel/helper-environment-visitor" "^7.22.20" - "@babel/helper-function-name" "^7.23.0" - "@babel/helper-member-expression-to-functions" "^7.23.0" - "@babel/helper-optimise-call-expression" "^7.22.5" - "@babel/helper-replace-supers" "^7.22.20" - "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" - "@babel/helper-split-export-declaration" "^7.22.6" - semver "^6.3.1" +"@babel/helper-globals@^7.28.0": + version "7.28.0" + resolved "https://registry.yarnpkg.com/@babel/helper-globals/-/helper-globals-7.28.0.tgz#b9430df2aa4e17bc28665eadeae8aa1d985e6674" + integrity sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw== -"@babel/helper-create-regexp-features-plugin@^7.18.6", "@babel/helper-create-regexp-features-plugin@^7.22.15", "@babel/helper-create-regexp-features-plugin@^7.22.5": +"@babel/helper-module-imports@^7.16.7": version "7.22.15" - resolved "https://registry.npmmirror.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.22.15.tgz#5ee90093914ea09639b01c711db0d6775e558be1" - integrity sha512-29FkPLFjn4TPEa3RE7GpW+qbE8tlsu3jntNYNfcGsc49LphF1PQIiD+vMZ1z1xVOKt+93khA9tc2JBs3kBjA7w== + resolved "https://registry.npmmirror.com/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz#16146307acdc40cc00c3b2c647713076464bdbf0" + integrity sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w== dependencies: - "@babel/helper-annotate-as-pure" "^7.22.5" - regexpu-core "^5.3.1" - semver "^6.3.1" + "@babel/types" "^7.22.15" -"@babel/helper-define-polyfill-provider@^0.5.0": - version "0.5.0" - resolved "https://registry.npmmirror.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.5.0.tgz#465805b7361f461e86c680f1de21eaf88c25901b" - integrity sha512-NovQquuQLAQ5HuyjCz7WQP9MjRj7dx++yspwiyUiGl9ZyadHRSql1HZh5ogRd8W8w6YM6EQ/NTB8rgjLt5W65Q== +"@babel/helper-module-imports@^7.28.6": + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.28.6.tgz#60632cbd6ffb70b22823187201116762a03e2d5c" + integrity sha512-l5XkZK7r7wa9LucGw9LwZyyCUscb4x37JWTPz7swwFE/0FMQAGpiWUZn8u9DzkSBWEcK25jmvubfpw2dnAMdbw== dependencies: - "@babel/helper-compilation-targets" "^7.22.6" - "@babel/helper-plugin-utils" "^7.22.5" - debug "^4.1.1" - lodash.debounce "^4.0.8" - resolve "^1.14.2" + "@babel/traverse" "^7.28.6" + "@babel/types" "^7.28.6" -"@babel/helper-environment-visitor@^7.22.20": - version "7.22.20" - resolved "https://registry.npmmirror.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz#96159db61d34a29dba454c959f5ae4a649ba9167" - integrity sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA== - -"@babel/helper-function-name@^7.22.5", "@babel/helper-function-name@^7.23.0": - version "7.23.0" - resolved "https://registry.npmmirror.com/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz#1f9a3cdbd5b2698a670c30d2735f9af95ed52759" - integrity sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw== +"@babel/helper-module-transforms@^7.28.6": + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.28.6.tgz#9312d9d9e56edc35aeb6e95c25d4106b50b9eb1e" + integrity sha512-67oXFAYr2cDLDVGLXTEABjdBJZ6drElUSI7WKp70NrpyISso3plG9SAGEF6y7zbha/wOzUByWWTJvEDVNIUGcA== dependencies: - "@babel/template" "^7.22.15" - "@babel/types" "^7.23.0" + "@babel/helper-module-imports" "^7.28.6" + "@babel/helper-validator-identifier" "^7.28.5" + "@babel/traverse" "^7.28.6" -"@babel/helper-hoist-variables@^7.22.5": - version "7.22.5" - resolved "https://registry.npmmirror.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz#c01a007dac05c085914e8fb652b339db50d823bb" - integrity sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw== - dependencies: - "@babel/types" "^7.22.5" +"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.28.6", "@babel/helper-plugin-utils@^7.8.0": + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.28.6.tgz#6f13ea251b68c8532e985fd532f28741a8af9ac8" + integrity sha512-S9gzZ/bz83GRysI7gAD4wPT/AI3uCnY+9xn+Mx/KPs2JwHJIz1W8PZkg2cqyt3RNOBM8ejcXhV6y8Og7ly/Dug== -"@babel/helper-member-expression-to-functions@^7.22.15", "@babel/helper-member-expression-to-functions@^7.23.0": - version "7.23.0" - resolved "https://registry.npmmirror.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.23.0.tgz#9263e88cc5e41d39ec18c9a3e0eced59a3e7d366" - integrity sha512-6gfrPwh7OuT6gZyJZvd6WbTfrqAo7vm4xCzAXOusKqq/vWdKXphTpj5klHKNmRUU6/QRGlBsyU9mAIPaWHlqJA== - dependencies: - "@babel/types" "^7.23.0" +"@babel/helper-string-parser@^7.23.4": + version "7.23.4" + resolved "https://registry.npmmirror.com/@babel/helper-string-parser/-/helper-string-parser-7.23.4.tgz#9478c707febcbbe1ddb38a3d91a2e054ae622d83" + integrity sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ== -"@babel/helper-module-imports@^7.16.7", "@babel/helper-module-imports@^7.22.15": - version "7.22.15" - resolved "https://registry.npmmirror.com/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz#16146307acdc40cc00c3b2c647713076464bdbf0" - integrity sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w== - dependencies: - "@babel/types" "^7.22.15" - -"@babel/helper-module-transforms@^7.23.3": - version "7.23.3" - resolved "https://registry.npmmirror.com/@babel/helper-module-transforms/-/helper-module-transforms-7.23.3.tgz#d7d12c3c5d30af5b3c0fcab2a6d5217773e2d0f1" - integrity sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ== - dependencies: - "@babel/helper-environment-visitor" "^7.22.20" - "@babel/helper-module-imports" "^7.22.15" - "@babel/helper-simple-access" "^7.22.5" - "@babel/helper-split-export-declaration" "^7.22.6" - "@babel/helper-validator-identifier" "^7.22.20" - -"@babel/helper-optimise-call-expression@^7.22.5": - version "7.22.5" - resolved "https://registry.npmmirror.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.22.5.tgz#f21531a9ccbff644fdd156b4077c16ff0c3f609e" - integrity sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw== - dependencies: - "@babel/types" "^7.22.5" - -"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.22.5", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": - version "7.22.5" - resolved "https://registry.npmmirror.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz#dd7ee3735e8a313b9f7b05a773d892e88e6d7295" - integrity sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg== - -"@babel/helper-remap-async-to-generator@^7.22.20": - version "7.22.20" - resolved "https://registry.npmmirror.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.22.20.tgz#7b68e1cb4fa964d2996fd063723fb48eca8498e0" - integrity sha512-pBGyV4uBqOns+0UvhsTO8qgl8hO89PmiDYv+/COyp1aeMcmfrfruz+/nCMFiYyFF/Knn0yfrC85ZzNFjembFTw== - dependencies: - "@babel/helper-annotate-as-pure" "^7.22.5" - "@babel/helper-environment-visitor" "^7.22.20" - "@babel/helper-wrap-function" "^7.22.20" - -"@babel/helper-replace-supers@^7.22.20": - version "7.22.20" - resolved "https://registry.npmmirror.com/@babel/helper-replace-supers/-/helper-replace-supers-7.22.20.tgz#e37d367123ca98fe455a9887734ed2e16eb7a793" - integrity sha512-qsW0In3dbwQUbK8kejJ4R7IHVGwHJlV6lpG6UA7a9hSa2YEiAib+N1T2kr6PEeUT+Fl7najmSOS6SmAwCHK6Tw== - dependencies: - "@babel/helper-environment-visitor" "^7.22.20" - "@babel/helper-member-expression-to-functions" "^7.22.15" - "@babel/helper-optimise-call-expression" "^7.22.5" - -"@babel/helper-simple-access@^7.22.5": - version "7.22.5" - resolved "https://registry.npmmirror.com/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz#4938357dc7d782b80ed6dbb03a0fba3d22b1d5de" - integrity sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w== - dependencies: - "@babel/types" "^7.22.5" - -"@babel/helper-skip-transparent-expression-wrappers@^7.22.5": - version "7.22.5" - resolved "https://registry.npmmirror.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.22.5.tgz#007f15240b5751c537c40e77abb4e89eeaaa8847" - integrity sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q== - dependencies: - "@babel/types" "^7.22.5" - -"@babel/helper-split-export-declaration@^7.22.6": - version "7.22.6" - resolved "https://registry.npmmirror.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz#322c61b7310c0997fe4c323955667f18fcefb91c" - integrity sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g== - dependencies: - "@babel/types" "^7.22.5" - -"@babel/helper-string-parser@^7.23.4": - version "7.23.4" - resolved "https://registry.npmmirror.com/@babel/helper-string-parser/-/helper-string-parser-7.23.4.tgz#9478c707febcbbe1ddb38a3d91a2e054ae622d83" - integrity sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ== +"@babel/helper-string-parser@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz#54da796097ab19ce67ed9f88b47bb2ec49367687" + integrity sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA== "@babel/helper-validator-identifier@^7.22.20": version "7.22.20" @@ -1632,28 +2547,23 @@ resolved "https://registry.npmmirror.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.7.tgz#75b889cfaf9e35c2aaf42cf0d72c8e91719251db" integrity sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w== -"@babel/helper-validator-option@^7.22.15", "@babel/helper-validator-option@^7.23.5": - version "7.23.5" - resolved "https://registry.npmmirror.com/@babel/helper-validator-option/-/helper-validator-option-7.23.5.tgz#907a3fbd4523426285365d1206c423c4c5520307" - integrity sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw== +"@babel/helper-validator-identifier@^7.28.5": + version "7.28.5" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz#010b6938fab7cb7df74aa2bbc06aa503b8fe5fb4" + integrity sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q== -"@babel/helper-wrap-function@^7.22.20": - version "7.22.20" - resolved "https://registry.npmmirror.com/@babel/helper-wrap-function/-/helper-wrap-function-7.22.20.tgz#15352b0b9bfb10fc9c76f79f6342c00e3411a569" - integrity sha512-pms/UwkOpnQe/PDAEdV/d7dVCoBbB+R4FvYoHGZz+4VPcg7RtYy2KP7S2lbuWM6FCSgob5wshfGESbC/hzNXZw== - dependencies: - "@babel/helper-function-name" "^7.22.5" - "@babel/template" "^7.22.15" - "@babel/types" "^7.22.19" +"@babel/helper-validator-option@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz#fa52f5b1e7db1ab049445b421c4471303897702f" + integrity sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg== -"@babel/helpers@^7.23.9": - version "7.23.9" - resolved "https://registry.npmmirror.com/@babel/helpers/-/helpers-7.23.9.tgz#c3e20bbe7f7a7e10cb9b178384b4affdf5995c7d" - integrity sha512-87ICKgU5t5SzOT7sBMfCOZQ2rHjRU+Pcb9BoILMYz600W6DkVRLFBPwQ18gwUVvggqXivaUakpnxWQGbpywbBQ== +"@babel/helpers@^7.28.6": + version "7.29.2" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.29.2.tgz#9cfbccb02b8e229892c0b07038052cc1a8709c49" + integrity sha512-HoGuUs4sCZNezVEKdVcwqmZN8GoHirLUcLaYVNBK2J0DadGtdcqgr3BCbvH8+XUo4NGjNl3VOtSjEKNzqfFgKw== dependencies: - "@babel/template" "^7.23.9" - "@babel/traverse" "^7.23.9" - "@babel/types" "^7.23.9" + "@babel/template" "^7.28.6" + "@babel/types" "^7.29.0" "@babel/highlight@^7.0.0", "@babel/highlight@^7.23.4": version "7.23.4" @@ -1674,750 +2584,133 @@ js-tokens "^4.0.0" picocolors "^1.0.0" -"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.20.7", "@babel/parser@^7.23.9": - version "7.23.9" - resolved "https://registry.npmmirror.com/@babel/parser/-/parser-7.23.9.tgz#7b903b6149b0f8fa7ad564af646c4c38a77fc44b" - integrity sha512-9tcKgqKbs3xGJ+NtKF2ndOBBLVwPjl1SHxPQkd36r3Dlirw3xWUeGaTbqr7uGZcTaxkVNwc+03SVP7aCdWrTlA== - -"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.23.3": - version "7.23.3" - resolved "https://registry.npmmirror.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.23.3.tgz#5cd1c87ba9380d0afb78469292c954fee5d2411a" - integrity sha512-iRkKcCqb7iGnq9+3G6rZ+Ciz5VywC4XNRHe57lKM+jOeYAoR0lVqdeeDRfh0tQcTfw/+vBhHn926FmQhLtlFLQ== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.23.3": - version "7.23.3" - resolved "https://registry.npmmirror.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.23.3.tgz#f6652bb16b94f8f9c20c50941e16e9756898dc5d" - integrity sha512-WwlxbfMNdVEpQjZmK5mhm7oSwD3dS6eU+Iwsi4Knl9wAletWem7kaRsGOG+8UEbRyqxY4SS5zvtfXwX+jMxUwQ== +"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.20.7", "@babel/parser@^7.23.9", "@babel/parser@^7.28.6", "@babel/parser@^7.29.0": + version "7.29.2" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.29.2.tgz#58bd50b9a7951d134988a1ae177a35ef9a703ba1" + integrity sha512-4GgRzy/+fsBa72/RZVJmGKPmZu9Byn8o4MoLpmNe1m8ZfYnz5emHLQz3U4gLud6Zwl0RZIcgiLD7Uq7ySFuDLA== dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" - "@babel/plugin-transform-optional-chaining" "^7.23.3" - -"@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@^7.23.7": - version "7.23.7" - resolved "https://registry.npmmirror.com/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.23.7.tgz#516462a95d10a9618f197d39ad291a9b47ae1d7b" - integrity sha512-LlRT7HgaifEpQA1ZgLVOIJZZFVPWN5iReq/7/JixwBtwcoeVGDBD53ZV28rrsLYOZs1Y/EHhA8N/Z6aazHR8cw== - dependencies: - "@babel/helper-environment-visitor" "^7.22.20" - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2": - version "7.21.0-placeholder-for-preset-env.2" - resolved "https://registry.npmmirror.com/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz#7844f9289546efa9febac2de4cfe358a050bd703" - integrity sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w== + "@babel/types" "^7.29.0" "@babel/plugin-syntax-async-generators@^7.8.4": version "7.8.4" - resolved "https://registry.npmmirror.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz#a983fb1aeb2ec3f6ed042a210f640e90e786fe0d" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz#a983fb1aeb2ec3f6ed042a210f640e90e786fe0d" integrity sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw== dependencies: "@babel/helper-plugin-utils" "^7.8.0" "@babel/plugin-syntax-bigint@^7.8.3": version "7.8.3" - resolved "https://registry.npmmirror.com/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz#4c9a6f669f5d0cdf1b90a1671e9a146be5300cea" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz#4c9a6f669f5d0cdf1b90a1671e9a146be5300cea" integrity sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg== dependencies: "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-class-properties@^7.12.13", "@babel/plugin-syntax-class-properties@^7.8.3": +"@babel/plugin-syntax-class-properties@^7.12.13": version "7.12.13" - resolved "https://registry.npmmirror.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz#b5c987274c4a3a82b89714796931a6b53544ae10" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz#b5c987274c4a3a82b89714796931a6b53544ae10" integrity sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA== dependencies: "@babel/helper-plugin-utils" "^7.12.13" "@babel/plugin-syntax-class-static-block@^7.14.5": version "7.14.5" - resolved "https://registry.npmmirror.com/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz#195df89b146b4b78b3bf897fd7a257c84659d406" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz#195df89b146b4b78b3bf897fd7a257c84659d406" integrity sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw== dependencies: "@babel/helper-plugin-utils" "^7.14.5" -"@babel/plugin-syntax-dynamic-import@^7.8.3": - version "7.8.3" - resolved "https://registry.npmmirror.com/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz#62bf98b2da3cd21d626154fc96ee5b3cb68eacb3" - integrity sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-export-namespace-from@^7.8.3": - version "7.8.3" - resolved "https://registry.npmmirror.com/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz#028964a9ba80dbc094c915c487ad7c4e7a66465a" - integrity sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - -"@babel/plugin-syntax-import-assertions@^7.23.3": - version "7.23.3" - resolved "https://registry.npmmirror.com/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.23.3.tgz#9c05a7f592982aff1a2768260ad84bcd3f0c77fc" - integrity sha512-lPgDSU+SJLK3xmFDTV2ZRQAiM7UuUjGidwBywFavObCiZc1BeAAcMtHJKUya92hPHO+at63JJPLygilZard8jw== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-syntax-import-attributes@^7.23.3": - version "7.23.3" - resolved "https://registry.npmmirror.com/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.23.3.tgz#992aee922cf04512461d7dae3ff6951b90a2dc06" - integrity sha512-pawnE0P9g10xgoP7yKr6CK63K2FMsTE+FZidZO/1PwRdzmAPVs+HS1mAURUsgaoxammTJvULUdIkEK0gOcU2tA== +"@babel/plugin-syntax-import-attributes@^7.24.7": + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.28.6.tgz#b71d5914665f60124e133696f17cd7669062c503" + integrity sha512-jiLC0ma9XkQT3TKJ9uYvlakm66Pamywo+qwL+oL8HJOvc6TWdZXVfhqJr8CCzbSGUAbDOzlGHJC1U+vRfLQDvw== dependencies: - "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-plugin-utils" "^7.28.6" -"@babel/plugin-syntax-import-meta@^7.10.4", "@babel/plugin-syntax-import-meta@^7.8.3": +"@babel/plugin-syntax-import-meta@^7.10.4": version "7.10.4" - resolved "https://registry.npmmirror.com/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz#ee601348c370fa334d2207be158777496521fd51" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz#ee601348c370fa334d2207be158777496521fd51" integrity sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g== dependencies: "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-syntax-json-strings@^7.8.3": version "7.8.3" - resolved "https://registry.npmmirror.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz#01ca21b668cd8218c9e640cb6dd88c5412b2c96a" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz#01ca21b668cd8218c9e640cb6dd88c5412b2c96a" integrity sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA== dependencies: "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-jsx@^7.23.3", "@babel/plugin-syntax-jsx@^7.7.2": - version "7.23.3" - resolved "https://registry.npmmirror.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.23.3.tgz#8f2e4f8a9b5f9aa16067e142c1ac9cd9f810f473" - integrity sha512-EB2MELswq55OHUoRZLGg/zC7QWUKfNLpE57m/S2yr1uEneIgsTgrSzXP3NXEsMkVn76OlaVVnzN+ugObuYGwhg== +"@babel/plugin-syntax-jsx@^7.7.2": + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.28.6.tgz#f8ca28bbd84883b5fea0e447c635b81ba73997ee" + integrity sha512-wgEmr06G6sIpqr8YDwA2dSRTE3bJ+V0IfpzfSY3Lfgd7YWOaAdlykvJi13ZKBt8cZHfgH1IXN+CL656W3uUa4w== dependencies: - "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-plugin-utils" "^7.28.6" -"@babel/plugin-syntax-logical-assignment-operators@^7.10.4", "@babel/plugin-syntax-logical-assignment-operators@^7.8.3": +"@babel/plugin-syntax-logical-assignment-operators@^7.10.4": version "7.10.4" - resolved "https://registry.npmmirror.com/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz#ca91ef46303530448b906652bac2e9fe9941f699" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz#ca91ef46303530448b906652bac2e9fe9941f699" integrity sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig== dependencies: "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-syntax-nullish-coalescing-operator@^7.8.3": version "7.8.3" - resolved "https://registry.npmmirror.com/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz#167ed70368886081f74b5c36c65a88c03b66d1a9" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz#167ed70368886081f74b5c36c65a88c03b66d1a9" integrity sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ== dependencies: "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-numeric-separator@^7.10.4", "@babel/plugin-syntax-numeric-separator@^7.8.3": +"@babel/plugin-syntax-numeric-separator@^7.10.4": version "7.10.4" - resolved "https://registry.npmmirror.com/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz#b9b070b3e33570cd9fd07ba7fa91c0dd37b9af97" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz#b9b070b3e33570cd9fd07ba7fa91c0dd37b9af97" integrity sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug== dependencies: "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-syntax-object-rest-spread@^7.8.3": version "7.8.3" - resolved "https://registry.npmmirror.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz#60e225edcbd98a640332a2e72dd3e66f1af55871" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz#60e225edcbd98a640332a2e72dd3e66f1af55871" integrity sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA== dependencies: "@babel/helper-plugin-utils" "^7.8.0" "@babel/plugin-syntax-optional-catch-binding@^7.8.3": version "7.8.3" - resolved "https://registry.npmmirror.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz#6111a265bcfb020eb9efd0fdfd7d26402b9ed6c1" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz#6111a265bcfb020eb9efd0fdfd7d26402b9ed6c1" integrity sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q== dependencies: "@babel/helper-plugin-utils" "^7.8.0" "@babel/plugin-syntax-optional-chaining@^7.8.3": version "7.8.3" - resolved "https://registry.npmmirror.com/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz#4f69c2ab95167e0180cd5336613f8c5788f7d48a" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz#4f69c2ab95167e0180cd5336613f8c5788f7d48a" integrity sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg== dependencies: "@babel/helper-plugin-utils" "^7.8.0" "@babel/plugin-syntax-private-property-in-object@^7.14.5": version "7.14.5" - resolved "https://registry.npmmirror.com/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz#0dc6671ec0ea22b6e94a1114f857970cd39de1ad" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz#0dc6671ec0ea22b6e94a1114f857970cd39de1ad" integrity sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg== dependencies: "@babel/helper-plugin-utils" "^7.14.5" -"@babel/plugin-syntax-top-level-await@^7.14.5", "@babel/plugin-syntax-top-level-await@^7.8.3": +"@babel/plugin-syntax-top-level-await@^7.14.5": version "7.14.5" - resolved "https://registry.npmmirror.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz#c1cfdadc35a646240001f06138247b741c34d94c" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz#c1cfdadc35a646240001f06138247b741c34d94c" integrity sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw== dependencies: "@babel/helper-plugin-utils" "^7.14.5" -"@babel/plugin-syntax-typescript@^7.23.3", "@babel/plugin-syntax-typescript@^7.7.2": - version "7.23.3" - resolved "https://registry.npmmirror.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.23.3.tgz#24f460c85dbbc983cd2b9c4994178bcc01df958f" - integrity sha512-9EiNjVJOMwCO+43TqoTrgQ8jMwcAd0sWyXi9RPfIsLTj4R2MADDDQXELhffaUx/uJv2AYcxBgPwH6j4TIA4ytQ== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-syntax-unicode-sets-regex@^7.18.6": - version "7.18.6" - resolved "https://registry.npmmirror.com/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz#d49a3b3e6b52e5be6740022317580234a6a47357" - integrity sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-transform-arrow-functions@^7.23.3": - version "7.23.3" - resolved "https://registry.npmmirror.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.23.3.tgz#94c6dcfd731af90f27a79509f9ab7fb2120fc38b" - integrity sha512-NzQcQrzaQPkaEwoTm4Mhyl8jI1huEL/WWIEvudjTCMJ9aBZNpsJbMASx7EQECtQQPS/DcnFpo0FIh3LvEO9cxQ== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-transform-async-generator-functions@^7.23.9": - version "7.23.9" - resolved "https://registry.npmmirror.com/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.23.9.tgz#9adaeb66fc9634a586c5df139c6240d41ed801ce" - integrity sha512-8Q3veQEDGe14dTYuwagbRtwxQDnytyg1JFu4/HwEMETeofocrB0U0ejBJIXoeG/t2oXZ8kzCyI0ZZfbT80VFNQ== - dependencies: - "@babel/helper-environment-visitor" "^7.22.20" - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/helper-remap-async-to-generator" "^7.22.20" - "@babel/plugin-syntax-async-generators" "^7.8.4" - -"@babel/plugin-transform-async-to-generator@^7.23.3": - version "7.23.3" - resolved "https://registry.npmmirror.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.23.3.tgz#d1f513c7a8a506d43f47df2bf25f9254b0b051fa" - integrity sha512-A7LFsKi4U4fomjqXJlZg/u0ft/n8/7n7lpffUP/ZULx/DtV9SGlNKZolHH6PE8Xl1ngCc0M11OaeZptXVkfKSw== - dependencies: - "@babel/helper-module-imports" "^7.22.15" - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/helper-remap-async-to-generator" "^7.22.20" - -"@babel/plugin-transform-block-scoped-functions@^7.23.3": - version "7.23.3" - resolved "https://registry.npmmirror.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.23.3.tgz#fe1177d715fb569663095e04f3598525d98e8c77" - integrity sha512-vI+0sIaPIO6CNuM9Kk5VmXcMVRiOpDh7w2zZt9GXzmE/9KD70CUEVhvPR/etAeNK/FAEkhxQtXOzVF3EuRL41A== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-transform-block-scoping@^7.23.4": - version "7.23.4" - resolved "https://registry.npmmirror.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.23.4.tgz#b2d38589531c6c80fbe25e6b58e763622d2d3cf5" - integrity sha512-0QqbP6B6HOh7/8iNR4CQU2Th/bbRtBp4KS9vcaZd1fZ0wSh5Fyssg0UCIHwxh+ka+pNDREbVLQnHCMHKZfPwfw== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-transform-class-properties@^7.23.3": - version "7.23.3" - resolved "https://registry.npmmirror.com/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.23.3.tgz#35c377db11ca92a785a718b6aa4e3ed1eb65dc48" - integrity sha512-uM+AN8yCIjDPccsKGlw271xjJtGii+xQIF/uMPS8H15L12jZTsLfF4o5vNO7d/oUguOyfdikHGc/yi9ge4SGIg== - dependencies: - "@babel/helper-create-class-features-plugin" "^7.22.15" - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-transform-class-static-block@^7.23.4": - version "7.23.4" - resolved "https://registry.npmmirror.com/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.23.4.tgz#2a202c8787a8964dd11dfcedf994d36bfc844ab5" - integrity sha512-nsWu/1M+ggti1SOALj3hfx5FXzAY06fwPJsUZD4/A5e1bWi46VUIWtD+kOX6/IdhXGsXBWllLFDSnqSCdUNydQ== - dependencies: - "@babel/helper-create-class-features-plugin" "^7.22.15" - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/plugin-syntax-class-static-block" "^7.14.5" - -"@babel/plugin-transform-classes@^7.23.8": - version "7.23.8" - resolved "https://registry.npmmirror.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.23.8.tgz#d08ae096c240347badd68cdf1b6d1624a6435d92" - integrity sha512-yAYslGsY1bX6Knmg46RjiCiNSwJKv2IUC8qOdYKqMMr0491SXFhcHqOdRDeCRohOOIzwN/90C6mQ9qAKgrP7dg== - dependencies: - "@babel/helper-annotate-as-pure" "^7.22.5" - "@babel/helper-compilation-targets" "^7.23.6" - "@babel/helper-environment-visitor" "^7.22.20" - "@babel/helper-function-name" "^7.23.0" - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/helper-replace-supers" "^7.22.20" - "@babel/helper-split-export-declaration" "^7.22.6" - globals "^11.1.0" - -"@babel/plugin-transform-computed-properties@^7.23.3": - version "7.23.3" - resolved "https://registry.npmmirror.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.23.3.tgz#652e69561fcc9d2b50ba4f7ac7f60dcf65e86474" - integrity sha512-dTj83UVTLw/+nbiHqQSFdwO9CbTtwq1DsDqm3CUEtDrZNET5rT5E6bIdTlOftDTDLMYxvxHNEYO4B9SLl8SLZw== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/template" "^7.22.15" - -"@babel/plugin-transform-destructuring@^7.23.3": - version "7.23.3" - resolved "https://registry.npmmirror.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.23.3.tgz#8c9ee68228b12ae3dff986e56ed1ba4f3c446311" - integrity sha512-n225npDqjDIr967cMScVKHXJs7rout1q+tt50inyBCPkyZ8KxeI6d+GIbSBTT/w/9WdlWDOej3V9HE5Lgk57gw== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-transform-dotall-regex@^7.23.3": - version "7.23.3" - resolved "https://registry.npmmirror.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.23.3.tgz#3f7af6054882ede89c378d0cf889b854a993da50" - integrity sha512-vgnFYDHAKzFaTVp+mneDsIEbnJ2Np/9ng9iviHw3P/KVcgONxpNULEW/51Z/BaFojG2GI2GwwXck5uV1+1NOYQ== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.22.15" - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-transform-duplicate-keys@^7.23.3": - version "7.23.3" - resolved "https://registry.npmmirror.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.23.3.tgz#664706ca0a5dfe8d066537f99032fc1dc8b720ce" - integrity sha512-RrqQ+BQmU3Oyav3J+7/myfvRCq7Tbz+kKLLshUmMwNlDHExbGL7ARhajvoBJEvc+fCguPPu887N+3RRXBVKZUA== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-transform-dynamic-import@^7.23.4": - version "7.23.4" - resolved "https://registry.npmmirror.com/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.23.4.tgz#c7629e7254011ac3630d47d7f34ddd40ca535143" - integrity sha512-V6jIbLhdJK86MaLh4Jpghi8ho5fGzt3imHOBu/x0jlBaPYqDoWz4RDXjmMOfnh+JWNaQleEAByZLV0QzBT4YQQ== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/plugin-syntax-dynamic-import" "^7.8.3" - -"@babel/plugin-transform-exponentiation-operator@^7.23.3": - version "7.23.3" - resolved "https://registry.npmmirror.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.23.3.tgz#ea0d978f6b9232ba4722f3dbecdd18f450babd18" - integrity sha512-5fhCsl1odX96u7ILKHBj4/Y8vipoqwsJMh4csSA8qFfxrZDEA4Ssku2DyNvMJSmZNOEBT750LfFPbtrnTP90BQ== - dependencies: - "@babel/helper-builder-binary-assignment-operator-visitor" "^7.22.15" - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-transform-export-namespace-from@^7.23.4": - version "7.23.4" - resolved "https://registry.npmmirror.com/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.23.4.tgz#084c7b25e9a5c8271e987a08cf85807b80283191" - integrity sha512-GzuSBcKkx62dGzZI1WVgTWvkkz84FZO5TC5T8dl/Tht/rAla6Dg/Mz9Yhypg+ezVACf/rgDuQt3kbWEv7LdUDQ== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/plugin-syntax-export-namespace-from" "^7.8.3" - -"@babel/plugin-transform-for-of@^7.23.6": - version "7.23.6" - resolved "https://registry.npmmirror.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.23.6.tgz#81c37e24171b37b370ba6aaffa7ac86bcb46f94e" - integrity sha512-aYH4ytZ0qSuBbpfhuofbg/e96oQ7U2w1Aw/UQmKT+1l39uEhUPoFS3fHevDc1G0OvewyDudfMKY1OulczHzWIw== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" - -"@babel/plugin-transform-function-name@^7.23.3": - version "7.23.3" - resolved "https://registry.npmmirror.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.23.3.tgz#8f424fcd862bf84cb9a1a6b42bc2f47ed630f8dc" - integrity sha512-I1QXp1LxIvt8yLaib49dRW5Okt7Q4oaxao6tFVKS/anCdEOMtYwWVKoiOA1p34GOWIZjUK0E+zCp7+l1pfQyiw== - dependencies: - "@babel/helper-compilation-targets" "^7.22.15" - "@babel/helper-function-name" "^7.23.0" - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-transform-json-strings@^7.23.4": - version "7.23.4" - resolved "https://registry.npmmirror.com/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.23.4.tgz#a871d9b6bd171976efad2e43e694c961ffa3714d" - integrity sha512-81nTOqM1dMwZ/aRXQ59zVubN9wHGqk6UtqRK+/q+ciXmRy8fSolhGVvG09HHRGo4l6fr/c4ZhXUQH0uFW7PZbg== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/plugin-syntax-json-strings" "^7.8.3" - -"@babel/plugin-transform-literals@^7.23.3": - version "7.23.3" - resolved "https://registry.npmmirror.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.23.3.tgz#8214665f00506ead73de157eba233e7381f3beb4" - integrity sha512-wZ0PIXRxnwZvl9AYpqNUxpZ5BiTGrYt7kueGQ+N5FiQ7RCOD4cm8iShd6S6ggfVIWaJf2EMk8eRzAh52RfP4rQ== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-transform-logical-assignment-operators@^7.23.4": - version "7.23.4" - resolved "https://registry.npmmirror.com/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.23.4.tgz#e599f82c51d55fac725f62ce55d3a0886279ecb5" - integrity sha512-Mc/ALf1rmZTP4JKKEhUwiORU+vcfarFVLfcFiolKUo6sewoxSEgl36ak5t+4WamRsNr6nzjZXQjM35WsU+9vbg== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" - -"@babel/plugin-transform-member-expression-literals@^7.23.3": - version "7.23.3" - resolved "https://registry.npmmirror.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.23.3.tgz#e37b3f0502289f477ac0e776b05a833d853cabcc" - integrity sha512-sC3LdDBDi5x96LA+Ytekz2ZPk8i/Ck+DEuDbRAll5rknJ5XRTSaPKEYwomLcs1AA8wg9b3KjIQRsnApj+q51Ag== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-transform-modules-amd@^7.23.3": - version "7.23.3" - resolved "https://registry.npmmirror.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.23.3.tgz#e19b55436a1416829df0a1afc495deedfae17f7d" - integrity sha512-vJYQGxeKM4t8hYCKVBlZX/gtIY2I7mRGFNcm85sgXGMTBcoV3QdVtdpbcWEbzbfUIUZKwvgFT82mRvaQIebZzw== - dependencies: - "@babel/helper-module-transforms" "^7.23.3" - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-transform-modules-commonjs@^7.23.3": - version "7.23.3" - resolved "https://registry.npmmirror.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.23.3.tgz#661ae831b9577e52be57dd8356b734f9700b53b4" - integrity sha512-aVS0F65LKsdNOtcz6FRCpE4OgsP2OFnW46qNxNIX9h3wuzaNcSQsJysuMwqSibC98HPrf2vCgtxKNwS0DAlgcA== - dependencies: - "@babel/helper-module-transforms" "^7.23.3" - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/helper-simple-access" "^7.22.5" - -"@babel/plugin-transform-modules-systemjs@^7.23.9": - version "7.23.9" - resolved "https://registry.npmmirror.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.23.9.tgz#105d3ed46e4a21d257f83a2f9e2ee4203ceda6be" - integrity sha512-KDlPRM6sLo4o1FkiSlXoAa8edLXFsKKIda779fbLrvmeuc3itnjCtaO6RrtoaANsIJANj+Vk1zqbZIMhkCAHVw== - dependencies: - "@babel/helper-hoist-variables" "^7.22.5" - "@babel/helper-module-transforms" "^7.23.3" - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/helper-validator-identifier" "^7.22.20" - -"@babel/plugin-transform-modules-umd@^7.23.3": - version "7.23.3" - resolved "https://registry.npmmirror.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.23.3.tgz#5d4395fccd071dfefe6585a4411aa7d6b7d769e9" - integrity sha512-zHsy9iXX2nIsCBFPud3jKn1IRPWg3Ing1qOZgeKV39m1ZgIdpJqvlWVeiHBZC6ITRG0MfskhYe9cLgntfSFPIg== - dependencies: - "@babel/helper-module-transforms" "^7.23.3" - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-transform-named-capturing-groups-regex@^7.22.5": - version "7.22.5" - resolved "https://registry.npmmirror.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.22.5.tgz#67fe18ee8ce02d57c855185e27e3dc959b2e991f" - integrity sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.22.5" - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-transform-new-target@^7.23.3": - version "7.23.3" - resolved "https://registry.npmmirror.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.23.3.tgz#5491bb78ed6ac87e990957cea367eab781c4d980" - integrity sha512-YJ3xKqtJMAT5/TIZnpAR3I+K+WaDowYbN3xyxI8zxx/Gsypwf9B9h0VB+1Nh6ACAAPRS5NSRje0uVv5i79HYGQ== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-transform-nullish-coalescing-operator@^7.23.4": - version "7.23.4" - resolved "https://registry.npmmirror.com/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.23.4.tgz#45556aad123fc6e52189ea749e33ce090637346e" - integrity sha512-jHE9EVVqHKAQx+VePv5LLGHjmHSJR76vawFPTdlxR/LVJPfOEGxREQwQfjuZEOPTwG92X3LINSh3M40Rv4zpVA== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" - -"@babel/plugin-transform-numeric-separator@^7.23.4": - version "7.23.4" - resolved "https://registry.npmmirror.com/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.23.4.tgz#03d08e3691e405804ecdd19dd278a40cca531f29" - integrity sha512-mps6auzgwjRrwKEZA05cOwuDc9FAzoyFS4ZsG/8F43bTLf/TgkJg7QXOrPO1JO599iA3qgK9MXdMGOEC8O1h6Q== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/plugin-syntax-numeric-separator" "^7.10.4" - -"@babel/plugin-transform-object-rest-spread@^7.23.4": - version "7.23.4" - resolved "https://registry.npmmirror.com/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.23.4.tgz#2b9c2d26bf62710460bdc0d1730d4f1048361b83" - integrity sha512-9x9K1YyeQVw0iOXJlIzwm8ltobIIv7j2iLyP2jIhEbqPRQ7ScNgwQufU2I0Gq11VjyG4gI4yMXt2VFags+1N3g== - dependencies: - "@babel/compat-data" "^7.23.3" - "@babel/helper-compilation-targets" "^7.22.15" - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/plugin-syntax-object-rest-spread" "^7.8.3" - "@babel/plugin-transform-parameters" "^7.23.3" - -"@babel/plugin-transform-object-super@^7.23.3": - version "7.23.3" - resolved "https://registry.npmmirror.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.23.3.tgz#81fdb636dcb306dd2e4e8fd80db5b2362ed2ebcd" - integrity sha512-BwQ8q0x2JG+3lxCVFohg+KbQM7plfpBwThdW9A6TMtWwLsbDA01Ek2Zb/AgDN39BiZsExm4qrXxjk+P1/fzGrA== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/helper-replace-supers" "^7.22.20" - -"@babel/plugin-transform-optional-catch-binding@^7.23.4": - version "7.23.4" - resolved "https://registry.npmmirror.com/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.23.4.tgz#318066de6dacce7d92fa244ae475aa8d91778017" - integrity sha512-XIq8t0rJPHf6Wvmbn9nFxU6ao4c7WhghTR5WyV8SrJfUFzyxhCm4nhC+iAp3HFhbAKLfYpgzhJ6t4XCtVwqO5A== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" - -"@babel/plugin-transform-optional-chaining@^7.23.3", "@babel/plugin-transform-optional-chaining@^7.23.4": - version "7.23.4" - resolved "https://registry.npmmirror.com/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.23.4.tgz#6acf61203bdfc4de9d4e52e64490aeb3e52bd017" - integrity sha512-ZU8y5zWOfjM5vZ+asjgAPwDaBjJzgufjES89Rs4Lpq63O300R/kOz30WCLo6BxxX6QVEilwSlpClnG5cZaikTA== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" - "@babel/plugin-syntax-optional-chaining" "^7.8.3" - -"@babel/plugin-transform-parameters@^7.23.3": - version "7.23.3" - resolved "https://registry.npmmirror.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.23.3.tgz#83ef5d1baf4b1072fa6e54b2b0999a7b2527e2af" - integrity sha512-09lMt6UsUb3/34BbECKVbVwrT9bO6lILWln237z7sLaWnMsTi7Yc9fhX5DLpkJzAGfaReXI22wP41SZmnAA3Vw== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-transform-private-methods@^7.23.3": - version "7.23.3" - resolved "https://registry.npmmirror.com/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.23.3.tgz#b2d7a3c97e278bfe59137a978d53b2c2e038c0e4" - integrity sha512-UzqRcRtWsDMTLrRWFvUBDwmw06tCQH9Rl1uAjfh6ijMSmGYQ+fpdB+cnqRC8EMh5tuuxSv0/TejGL+7vyj+50g== - dependencies: - "@babel/helper-create-class-features-plugin" "^7.22.15" - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-transform-private-property-in-object@^7.23.4": - version "7.23.4" - resolved "https://registry.npmmirror.com/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.23.4.tgz#3ec711d05d6608fd173d9b8de39872d8dbf68bf5" - integrity sha512-9G3K1YqTq3F4Vt88Djx1UZ79PDyj+yKRnUy7cZGSMe+a7jkwD259uKKuUzQlPkGam7R+8RJwh5z4xO27fA1o2A== - dependencies: - "@babel/helper-annotate-as-pure" "^7.22.5" - "@babel/helper-create-class-features-plugin" "^7.22.15" - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/plugin-syntax-private-property-in-object" "^7.14.5" - -"@babel/plugin-transform-property-literals@^7.23.3": - version "7.23.3" - resolved "https://registry.npmmirror.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.23.3.tgz#54518f14ac4755d22b92162e4a852d308a560875" - integrity sha512-jR3Jn3y7cZp4oEWPFAlRsSWjxKe4PZILGBSd4nis1TsC5qeSpb+nrtihJuDhNI7QHiVbUaiXa0X2RZY3/TI6Nw== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-transform-react-constant-elements@^7.18.12": - version "7.23.3" - resolved "https://registry.npmmirror.com/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.23.3.tgz#5efc001d07ef0f7da0d73c3a86c132f73d28e43c" - integrity sha512-zP0QKq/p6O42OL94udMgSfKXyse4RyJ0JqbQ34zDAONWjyrEsghYEyTSK5FIpmXmCpB55SHokL1cRRKHv8L2Qw== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-transform-react-display-name@^7.23.3": - version "7.23.3" - resolved "https://registry.npmmirror.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.23.3.tgz#70529f034dd1e561045ad3c8152a267f0d7b6200" - integrity sha512-GnvhtVfA2OAtzdX58FJxU19rhoGeQzyVndw3GgtdECQvQFXPEZIOVULHVZGAYmOgmqjXpVpfocAbSjh99V/Fqw== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-transform-react-jsx-development@^7.22.5": - version "7.22.5" - resolved "https://registry.npmmirror.com/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.22.5.tgz#e716b6edbef972a92165cd69d92f1255f7e73e87" - integrity sha512-bDhuzwWMuInwCYeDeMzyi7TaBgRQei6DqxhbyniL7/VG4RSS7HtSL2QbY4eESy1KJqlWt8g3xeEBGPuo+XqC8A== - dependencies: - "@babel/plugin-transform-react-jsx" "^7.22.5" - -"@babel/plugin-transform-react-jsx@^7.22.15", "@babel/plugin-transform-react-jsx@^7.22.5": - version "7.23.4" - resolved "https://registry.npmmirror.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.23.4.tgz#393f99185110cea87184ea47bcb4a7b0c2e39312" - integrity sha512-5xOpoPguCZCRbo/JeHlloSkTA8Bld1J/E1/kLfD1nsuiW1m8tduTA1ERCgIZokDflX/IBzKcqR3l7VlRgiIfHA== - dependencies: - "@babel/helper-annotate-as-pure" "^7.22.5" - "@babel/helper-module-imports" "^7.22.15" - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/plugin-syntax-jsx" "^7.23.3" - "@babel/types" "^7.23.4" - -"@babel/plugin-transform-react-pure-annotations@^7.23.3": - version "7.23.3" - resolved "https://registry.npmmirror.com/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.23.3.tgz#fabedbdb8ee40edf5da96f3ecfc6958e3783b93c" - integrity sha512-qMFdSS+TUhB7Q/3HVPnEdYJDQIk57jkntAwSuz9xfSE4n+3I+vHYCli3HoHawN1Z3RfCz/y1zXA/JXjG6cVImQ== - dependencies: - "@babel/helper-annotate-as-pure" "^7.22.5" - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-transform-regenerator@^7.23.3": - version "7.23.3" - resolved "https://registry.npmmirror.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.23.3.tgz#141afd4a2057298602069fce7f2dc5173e6c561c" - integrity sha512-KP+75h0KghBMcVpuKisx3XTu9Ncut8Q8TuvGO4IhY+9D5DFEckQefOuIsB/gQ2tG71lCke4NMrtIPS8pOj18BQ== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - regenerator-transform "^0.15.2" - -"@babel/plugin-transform-reserved-words@^7.23.3": - version "7.23.3" - resolved "https://registry.npmmirror.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.23.3.tgz#4130dcee12bd3dd5705c587947eb715da12efac8" - integrity sha512-QnNTazY54YqgGxwIexMZva9gqbPa15t/x9VS+0fsEFWplwVpXYZivtgl43Z1vMpc1bdPP2PP8siFeVcnFvA3Cg== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-transform-shorthand-properties@^7.23.3": - version "7.23.3" - resolved "https://registry.npmmirror.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.23.3.tgz#97d82a39b0e0c24f8a981568a8ed851745f59210" - integrity sha512-ED2fgqZLmexWiN+YNFX26fx4gh5qHDhn1O2gvEhreLW2iI63Sqm4llRLCXALKrCnbN4Jy0VcMQZl/SAzqug/jg== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-transform-spread@^7.23.3": - version "7.23.3" - resolved "https://registry.npmmirror.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.23.3.tgz#41d17aacb12bde55168403c6f2d6bdca563d362c" - integrity sha512-VvfVYlrlBVu+77xVTOAoxQ6mZbnIq5FM0aGBSFEcIh03qHf+zNqA4DC/3XMUozTg7bZV3e3mZQ0i13VB6v5yUg== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" - -"@babel/plugin-transform-sticky-regex@^7.23.3": - version "7.23.3" - resolved "https://registry.npmmirror.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.23.3.tgz#dec45588ab4a723cb579c609b294a3d1bd22ff04" - integrity sha512-HZOyN9g+rtvnOU3Yh7kSxXrKbzgrm5X4GncPY1QOquu7epga5MxKHVpYu2hvQnry/H+JjckSYRb93iNfsioAGg== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-transform-template-literals@^7.23.3": - version "7.23.3" - resolved "https://registry.npmmirror.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.23.3.tgz#5f0f028eb14e50b5d0f76be57f90045757539d07" - integrity sha512-Flok06AYNp7GV2oJPZZcP9vZdszev6vPBkHLwxwSpaIqx75wn6mUd3UFWsSsA0l8nXAKkyCmL/sR02m8RYGeHg== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-transform-typeof-symbol@^7.23.3": - version "7.23.3" - resolved "https://registry.npmmirror.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.23.3.tgz#9dfab97acc87495c0c449014eb9c547d8966bca4" - integrity sha512-4t15ViVnaFdrPC74be1gXBSMzXk3B4Us9lP7uLRQHTFpV5Dvt33pn+2MyyNxmN3VTTm3oTrZVMUmuw3oBnQ2oQ== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-transform-typescript@^7.23.3": - version "7.23.6" - resolved "https://registry.npmmirror.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.23.6.tgz#aa36a94e5da8d94339ae3a4e22d40ed287feb34c" - integrity sha512-6cBG5mBvUu4VUD04OHKnYzbuHNP8huDsD3EDqqpIpsswTDoqHCjLoHb6+QgsV1WsT2nipRqCPgxD3LXnEO7XfA== - dependencies: - "@babel/helper-annotate-as-pure" "^7.22.5" - "@babel/helper-create-class-features-plugin" "^7.23.6" - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/plugin-syntax-typescript" "^7.23.3" - -"@babel/plugin-transform-unicode-escapes@^7.23.3": - version "7.23.3" - resolved "https://registry.npmmirror.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.23.3.tgz#1f66d16cab01fab98d784867d24f70c1ca65b925" - integrity sha512-OMCUx/bU6ChE3r4+ZdylEqAjaQgHAgipgW8nsCfu5pGqDcFytVd91AwRvUJSBZDz0exPGgnjoqhgRYLRjFZc9Q== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-transform-unicode-property-regex@^7.23.3": - version "7.23.3" - resolved "https://registry.npmmirror.com/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.23.3.tgz#19e234129e5ffa7205010feec0d94c251083d7ad" - integrity sha512-KcLIm+pDZkWZQAFJ9pdfmh89EwVfmNovFBcXko8szpBeF8z68kWIPeKlmSOkT9BXJxs2C0uk+5LxoxIv62MROA== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.22.15" - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-transform-unicode-regex@^7.23.3": - version "7.23.3" - resolved "https://registry.npmmirror.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.23.3.tgz#26897708d8f42654ca4ce1b73e96140fbad879dc" - integrity sha512-wMHpNA4x2cIA32b/ci3AfwNgheiva2W0WUKWTK7vBHBhDKfPsc5cFGNWm69WBqpwd86u1qwZ9PWevKqm1A3yAw== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.22.15" - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-transform-unicode-sets-regex@^7.23.3": - version "7.23.3" - resolved "https://registry.npmmirror.com/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.23.3.tgz#4fb6f0a719c2c5859d11f6b55a050cc987f3799e" - integrity sha512-W7lliA/v9bNR83Qc3q1ip9CQMZ09CcHDbHfbLRDNuAhn1Mvkr1ZNF7hPmztMQvtTGVLJ9m8IZqWsTkXOml8dbw== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.22.15" - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/preset-env@^7.19.4": - version "7.23.9" - resolved "https://registry.npmmirror.com/@babel/preset-env/-/preset-env-7.23.9.tgz#beace3b7994560ed6bf78e4ae2073dff45387669" - integrity sha512-3kBGTNBBk9DQiPoXYS0g0BYlwTQYUTifqgKTjxUwEUkduRT2QOa0FPGBJ+NROQhGyYO5BuTJwGvBnqKDykac6A== - dependencies: - "@babel/compat-data" "^7.23.5" - "@babel/helper-compilation-targets" "^7.23.6" - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/helper-validator-option" "^7.23.5" - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.23.3" - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.23.3" - "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly" "^7.23.7" - "@babel/plugin-proposal-private-property-in-object" "7.21.0-placeholder-for-preset-env.2" - "@babel/plugin-syntax-async-generators" "^7.8.4" - "@babel/plugin-syntax-class-properties" "^7.12.13" - "@babel/plugin-syntax-class-static-block" "^7.14.5" - "@babel/plugin-syntax-dynamic-import" "^7.8.3" - "@babel/plugin-syntax-export-namespace-from" "^7.8.3" - "@babel/plugin-syntax-import-assertions" "^7.23.3" - "@babel/plugin-syntax-import-attributes" "^7.23.3" - "@babel/plugin-syntax-import-meta" "^7.10.4" - "@babel/plugin-syntax-json-strings" "^7.8.3" - "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" - "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" - "@babel/plugin-syntax-numeric-separator" "^7.10.4" - "@babel/plugin-syntax-object-rest-spread" "^7.8.3" - "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" - "@babel/plugin-syntax-optional-chaining" "^7.8.3" - "@babel/plugin-syntax-private-property-in-object" "^7.14.5" - "@babel/plugin-syntax-top-level-await" "^7.14.5" - "@babel/plugin-syntax-unicode-sets-regex" "^7.18.6" - "@babel/plugin-transform-arrow-functions" "^7.23.3" - "@babel/plugin-transform-async-generator-functions" "^7.23.9" - "@babel/plugin-transform-async-to-generator" "^7.23.3" - "@babel/plugin-transform-block-scoped-functions" "^7.23.3" - "@babel/plugin-transform-block-scoping" "^7.23.4" - "@babel/plugin-transform-class-properties" "^7.23.3" - "@babel/plugin-transform-class-static-block" "^7.23.4" - "@babel/plugin-transform-classes" "^7.23.8" - "@babel/plugin-transform-computed-properties" "^7.23.3" - "@babel/plugin-transform-destructuring" "^7.23.3" - "@babel/plugin-transform-dotall-regex" "^7.23.3" - "@babel/plugin-transform-duplicate-keys" "^7.23.3" - "@babel/plugin-transform-dynamic-import" "^7.23.4" - "@babel/plugin-transform-exponentiation-operator" "^7.23.3" - "@babel/plugin-transform-export-namespace-from" "^7.23.4" - "@babel/plugin-transform-for-of" "^7.23.6" - "@babel/plugin-transform-function-name" "^7.23.3" - "@babel/plugin-transform-json-strings" "^7.23.4" - "@babel/plugin-transform-literals" "^7.23.3" - "@babel/plugin-transform-logical-assignment-operators" "^7.23.4" - "@babel/plugin-transform-member-expression-literals" "^7.23.3" - "@babel/plugin-transform-modules-amd" "^7.23.3" - "@babel/plugin-transform-modules-commonjs" "^7.23.3" - "@babel/plugin-transform-modules-systemjs" "^7.23.9" - "@babel/plugin-transform-modules-umd" "^7.23.3" - "@babel/plugin-transform-named-capturing-groups-regex" "^7.22.5" - "@babel/plugin-transform-new-target" "^7.23.3" - "@babel/plugin-transform-nullish-coalescing-operator" "^7.23.4" - "@babel/plugin-transform-numeric-separator" "^7.23.4" - "@babel/plugin-transform-object-rest-spread" "^7.23.4" - "@babel/plugin-transform-object-super" "^7.23.3" - "@babel/plugin-transform-optional-catch-binding" "^7.23.4" - "@babel/plugin-transform-optional-chaining" "^7.23.4" - "@babel/plugin-transform-parameters" "^7.23.3" - "@babel/plugin-transform-private-methods" "^7.23.3" - "@babel/plugin-transform-private-property-in-object" "^7.23.4" - "@babel/plugin-transform-property-literals" "^7.23.3" - "@babel/plugin-transform-regenerator" "^7.23.3" - "@babel/plugin-transform-reserved-words" "^7.23.3" - "@babel/plugin-transform-shorthand-properties" "^7.23.3" - "@babel/plugin-transform-spread" "^7.23.3" - "@babel/plugin-transform-sticky-regex" "^7.23.3" - "@babel/plugin-transform-template-literals" "^7.23.3" - "@babel/plugin-transform-typeof-symbol" "^7.23.3" - "@babel/plugin-transform-unicode-escapes" "^7.23.3" - "@babel/plugin-transform-unicode-property-regex" "^7.23.3" - "@babel/plugin-transform-unicode-regex" "^7.23.3" - "@babel/plugin-transform-unicode-sets-regex" "^7.23.3" - "@babel/preset-modules" "0.1.6-no-external-plugins" - babel-plugin-polyfill-corejs2 "^0.4.8" - babel-plugin-polyfill-corejs3 "^0.9.0" - babel-plugin-polyfill-regenerator "^0.5.5" - core-js-compat "^3.31.0" - semver "^6.3.1" - -"@babel/preset-modules@0.1.6-no-external-plugins": - version "0.1.6-no-external-plugins" - resolved "https://registry.npmmirror.com/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz#ccb88a2c49c817236861fee7826080573b8a923a" - integrity sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA== +"@babel/plugin-syntax-typescript@^7.7.2": + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.28.6.tgz#c7b2ddf1d0a811145b1de800d1abd146af92e3a2" + integrity sha512-+nDNmQye7nlnuuHDboPbGm00Vqg3oO8niRRL27/4LYHUsHYh0zJ1xWOz0uRwNFmM1Avzk8wZbc6rdiYhomzv/A== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/types" "^7.4.4" - esutils "^2.0.2" + "@babel/helper-plugin-utils" "^7.28.6" -"@babel/preset-react@^7.18.6": - version "7.23.3" - resolved "https://registry.npmmirror.com/@babel/preset-react/-/preset-react-7.23.3.tgz#f73ca07e7590f977db07eb54dbe46538cc015709" - integrity sha512-tbkHOS9axH6Ysf2OUEqoSZ6T3Fa2SrNH6WTWSPBboxKzdxNc9qOICeLXkNG0ZEwbQ1HY8liwOce4aN/Ceyuq6w== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/helper-validator-option" "^7.22.15" - "@babel/plugin-transform-react-display-name" "^7.23.3" - "@babel/plugin-transform-react-jsx" "^7.22.15" - "@babel/plugin-transform-react-jsx-development" "^7.22.5" - "@babel/plugin-transform-react-pure-annotations" "^7.23.3" - -"@babel/preset-typescript@^7.18.6": - version "7.23.3" - resolved "https://registry.npmmirror.com/@babel/preset-typescript/-/preset-typescript-7.23.3.tgz#14534b34ed5b6d435aa05f1ae1c5e7adcc01d913" - integrity sha512-17oIGVlqz6CchO9RFYn5U6ZpWRZIngayYCtrPRSgANSwC2V1Jb+iP74nVxzzXJte8b8BYxrL1yY96xfhTBrNNQ== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/helper-validator-option" "^7.22.15" - "@babel/plugin-syntax-jsx" "^7.23.3" - "@babel/plugin-transform-modules-commonjs" "^7.23.3" - "@babel/plugin-transform-typescript" "^7.23.3" - -"@babel/regjsgen@^0.8.0": - version "0.8.0" - resolved "https://registry.npmmirror.com/@babel/regjsgen/-/regjsgen-0.8.0.tgz#f0ba69b075e1f05fb2825b7fad991e7adbb18310" - integrity sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA== - -"@babel/runtime-corejs3@^7.20.7", "@babel/runtime-corejs3@^7.22.15", "@babel/runtime-corejs3@^7.23.8": +"@babel/runtime-corejs3@^7.20.7", "@babel/runtime-corejs3@^7.22.15": version "7.23.9" resolved "https://registry.npmmirror.com/@babel/runtime-corejs3/-/runtime-corejs3-7.23.9.tgz#1b43062a13ecb60158aecdd81bc3fab4108b7cbc" integrity sha512-oeOFTrYWdWXCvXGB5orvMTJ6gCZ9I6FBjR+M38iKNXCsPxr4xT0RTdg5uz1H7QP8pp74IzPtwritEr+JscqHXQ== @@ -2425,39 +2718,56 @@ core-js-pure "^3.30.2" regenerator-runtime "^0.14.0" -"@babel/runtime@^7.0.0", "@babel/runtime@^7.1.2", "@babel/runtime@^7.10.1", "@babel/runtime@^7.12.5", "@babel/runtime@^7.13.10", "@babel/runtime@^7.15.4", "@babel/runtime@^7.18.3", "@babel/runtime@^7.18.6", "@babel/runtime@^7.20.6", "@babel/runtime@^7.21.0", "@babel/runtime@^7.23.2", "@babel/runtime@^7.23.8", "@babel/runtime@^7.3.1", "@babel/runtime@^7.4.4", "@babel/runtime@^7.5.5", "@babel/runtime@^7.6.0", "@babel/runtime@^7.7.6", "@babel/runtime@^7.8.3", "@babel/runtime@^7.8.4", "@babel/runtime@^7.8.7", "@babel/runtime@^7.9.2": +"@babel/runtime-corejs3@^7.26.10", "@babel/runtime-corejs3@^7.27.1": + version "7.29.2" + resolved "https://registry.yarnpkg.com/@babel/runtime-corejs3/-/runtime-corejs3-7.29.2.tgz#cb86ad06e7a1d39224afb12a874301085e071846" + integrity sha512-Lc94FOD5+0aXhdb0Tdg3RUtqT6yWbI/BbFWvlaSJ3gAb9Ks+99nHRDKADVqC37er4eCB0fHyWT+y+K3QOvJKbw== + dependencies: + core-js-pure "^3.48.0" + +"@babel/runtime@^7.0.0", "@babel/runtime@^7.1.2", "@babel/runtime@^7.10.1", "@babel/runtime@^7.12.5", "@babel/runtime@^7.13.10", "@babel/runtime@^7.15.4", "@babel/runtime@^7.18.3", "@babel/runtime@^7.18.6", "@babel/runtime@^7.20.6", "@babel/runtime@^7.21.0", "@babel/runtime@^7.23.8", "@babel/runtime@^7.3.1", "@babel/runtime@^7.4.4", "@babel/runtime@^7.5.5", "@babel/runtime@^7.6.0", "@babel/runtime@^7.7.6", "@babel/runtime@^7.8.3", "@babel/runtime@^7.8.7", "@babel/runtime@^7.9.2": version "7.23.9" resolved "https://registry.npmmirror.com/@babel/runtime/-/runtime-7.23.9.tgz#47791a15e4603bb5f905bc0753801cf21d6345f7" integrity sha512-0CX6F+BI2s9dkUqr08KFrAIZgNFj75rdBU/DjCyYLIaV/quFjkk6T+EJ2LkZHyZTbEV4L5p97mNkUsHl2wLFAw== dependencies: regenerator-runtime "^0.14.0" -"@babel/template@^7.22.15", "@babel/template@^7.23.9", "@babel/template@^7.3.3": - version "7.23.9" - resolved "https://registry.npmmirror.com/@babel/template/-/template-7.23.9.tgz#f881d0487cba2828d3259dcb9ef5005a9731011a" - integrity sha512-+xrD2BWLpvHKNmX2QbpdpsBaWnRxahMwJjO+KZk2JOElj5nSmKezyS1B4u+QbHMTX69t4ukm6hh9lsYQ7GHCKA== - dependencies: - "@babel/code-frame" "^7.23.5" - "@babel/parser" "^7.23.9" - "@babel/types" "^7.23.9" - -"@babel/traverse@^7.23.9": - version "7.23.9" - resolved "https://registry.npmmirror.com/@babel/traverse/-/traverse-7.23.9.tgz#2f9d6aead6b564669394c5ce0f9302bb65b9d950" - integrity sha512-I/4UJ9vs90OkBtY6iiiTORVMyIhJ4kAVmsKo9KFc8UOxMeUfi2hvtIBsET5u9GizXE6/GFSuKCTNfgCswuEjRg== - dependencies: - "@babel/code-frame" "^7.23.5" - "@babel/generator" "^7.23.6" - "@babel/helper-environment-visitor" "^7.22.20" - "@babel/helper-function-name" "^7.23.0" - "@babel/helper-hoist-variables" "^7.22.5" - "@babel/helper-split-export-declaration" "^7.22.6" - "@babel/parser" "^7.23.9" - "@babel/types" "^7.23.9" +"@babel/runtime@^7.18.9", "@babel/runtime@^7.20.13", "@babel/runtime@^7.23.9", "@babel/runtime@^7.24.4", "@babel/runtime@^7.26.0", "@babel/runtime@^7.28.4": + version "7.29.2" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.29.2.tgz#9a6e2d05f4b6692e1801cd4fb176ad823930ed5e" + integrity sha512-JiDShH45zKHWyGe4ZNVRrCjBz8Nh9TMmZG1kh4QTK8hCBTWBi8Da+i7s1fJw7/lYpM4ccepSNfqzZ/QvABBi5g== + +"@babel/template@^7.28.6", "@babel/template@^7.3.3": + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.28.6.tgz#0e7e56ecedb78aeef66ce7972b082fce76a23e57" + integrity sha512-YA6Ma2KsCdGb+WC6UpBVFJGXL58MDA6oyONbjyF/+5sBgxY/dwkhLogbMT2GXXyU84/IhRw/2D1Os1B/giz+BQ== + dependencies: + "@babel/code-frame" "^7.28.6" + "@babel/parser" "^7.28.6" + "@babel/types" "^7.28.6" + +"@babel/traverse@^7.28.6", "@babel/traverse@^7.29.0": + version "7.29.0" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.29.0.tgz#f323d05001440253eead3c9c858adbe00b90310a" + integrity sha512-4HPiQr0X7+waHfyXPZpWPfWL/J7dcN1mx9gL6WdQVMbPnF3+ZhSMs8tCxN7oHddJE9fhNE7+lxdnlyemKfJRuA== + dependencies: + "@babel/code-frame" "^7.29.0" + "@babel/generator" "^7.29.0" + "@babel/helper-globals" "^7.28.0" + "@babel/parser" "^7.29.0" + "@babel/template" "^7.28.6" + "@babel/types" "^7.29.0" debug "^4.3.1" - globals "^11.1.0" -"@babel/types@^7.0.0", "@babel/types@^7.20.0", "@babel/types@^7.20.7", "@babel/types@^7.22.15", "@babel/types@^7.22.19", "@babel/types@^7.22.5", "@babel/types@^7.23.0", "@babel/types@^7.23.4", "@babel/types@^7.23.6", "@babel/types@^7.23.9", "@babel/types@^7.3.3", "@babel/types@^7.4.4": +"@babel/types@^7.0.0", "@babel/types@^7.20.7", "@babel/types@^7.28.2", "@babel/types@^7.28.6", "@babel/types@^7.29.0", "@babel/types@^7.3.3": + version "7.29.0" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.29.0.tgz#9f5b1e838c446e72cf3cd4b918152b8c605e37c7" + integrity sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A== + dependencies: + "@babel/helper-string-parser" "^7.27.1" + "@babel/helper-validator-identifier" "^7.28.5" + +"@babel/types@^7.22.15": version "7.23.9" resolved "https://registry.npmmirror.com/@babel/types/-/types-7.23.9.tgz#1dd7b59a9a2b5c87f8b41e52770b5ecbf492e002" integrity sha512-dQjSq/7HaSjRM43FFGnv5keM2HsxpmyV1PfaSVm0nzzjwwTmjOe6J4bC8e3+pTEIgHaHj+1ZlLThRJ2auc/w1Q== @@ -2466,19 +2776,19 @@ "@babel/helper-validator-identifier" "^7.22.20" to-fast-properties "^2.0.0" -"@backstage-community/plugin-github-actions@^0.6.16": - version "0.6.19" - resolved "https://registry.yarnpkg.com/@backstage-community/plugin-github-actions/-/plugin-github-actions-0.6.19.tgz#a6bbe1ee306327006f78be2cb01cf21528c235b3" - integrity sha512-9LEaXbI3/Ri672vFOu8avQ7XeERp1Uh2SEU4tg9L44dYWITLokiQJZ26wLxFmlSgehilZth7Ff0mImv9q7Qftw== - dependencies: - "@backstage/catalog-model" "^1.5.0" - "@backstage/core-compat-api" "^0.2.7" - "@backstage/core-components" "^0.14.9" - "@backstage/core-plugin-api" "^1.9.3" - "@backstage/frontend-plugin-api" "^0.6.7" - "@backstage/integration" "^1.13.0" - "@backstage/integration-react" "^1.1.29" - "@backstage/plugin-catalog-react" "^1.12.2" +"@backstage-community/plugin-github-actions@^0.22.0": + version "0.22.0" + resolved "https://registry.yarnpkg.com/@backstage-community/plugin-github-actions/-/plugin-github-actions-0.22.0.tgz#4957c300ecc62f42b741c77ee2c8bf494669daf5" + integrity sha512-aJEzjt2Of+mhWO4XpQyYoX17ub9czkkI7RPrg/ckb1YhuMuUQKQ2rXvBP2uxQARP2Bnd4VlTGjEhzGj5qv3QZw== + dependencies: + "@backstage/catalog-model" "^1.7.7" + "@backstage/core-compat-api" "^0.5.9" + "@backstage/core-components" "^0.18.8" + "@backstage/core-plugin-api" "^1.12.4" + "@backstage/frontend-plugin-api" "^0.15.1" + "@backstage/integration" "^2.0.0" + "@backstage/integration-react" "^1.2.16" + "@backstage/plugin-catalog-react" "^2.1.0" "@material-ui/core" "^4.12.2" "@material-ui/icons" "^4.9.1" "@material-ui/lab" "4.0.0-alpha.61" @@ -2488,15 +2798,23 @@ luxon "^3.0.0" react-use "^17.2.4" -"@backstage-community/plugin-tech-radar@^0.7.4": - version "0.7.6" - resolved "https://registry.yarnpkg.com/@backstage-community/plugin-tech-radar/-/plugin-tech-radar-0.7.6.tgz#415f4ca26236fac055c55be370929795f7b02187" - integrity sha512-24RjWlMWao6SEiy3ldd+TcVchXuZXlQTKMuc9xujEj9t0fcw8wcyBDrOelhSOWc3jGYy1NYyeA3TTmDGBQ94FQ== +"@backstage-community/plugin-tech-radar-common@^1.16.0": + version "1.16.0" + resolved "https://registry.yarnpkg.com/@backstage-community/plugin-tech-radar-common/-/plugin-tech-radar-common-1.16.0.tgz#f83d1f5f7dd8aea6954b4658c409eb8cabbb9450" + integrity sha512-qbV62yfjh7Wh9LOhsZDZZM/jNMkWYtijzW9HtmJrXbdf16BNFee6EHJmcbLEvurbp6YdHhkoKjnBHnLBjrtBbQ== dependencies: - "@backstage/core-compat-api" "^0.2.7" - "@backstage/core-components" "^0.14.9" - "@backstage/core-plugin-api" "^1.9.3" - "@backstage/frontend-plugin-api" "^0.6.7" + zod "^3.20.0" + +"@backstage-community/plugin-tech-radar@^1.17.0": + version "1.17.0" + resolved "https://registry.yarnpkg.com/@backstage-community/plugin-tech-radar/-/plugin-tech-radar-1.17.0.tgz#22c8709177ae2fc954fd1921b7d825a1a61a023e" + integrity sha512-dxrNWW1uZScTmy3QCkYAA1fy6r2HsHdIhxO0oLOgfFXniE2bh4Iac8BklI9aryvH8GW9xBMiDbMs22r9grGaoA== + dependencies: + "@backstage-community/plugin-tech-radar-common" "^1.16.0" + "@backstage/core-compat-api" "^0.5.9" + "@backstage/core-components" "^0.18.8" + "@backstage/core-plugin-api" "^1.12.4" + "@backstage/frontend-plugin-api" "^0.15.1" "@material-ui/core" "^4.12.2" "@material-ui/icons" "^4.9.1" "@types/react" "^16.13.1 || ^17.0.0 || ^18.0.0" @@ -2504,46 +2822,73 @@ d3-force "^3.0.0" react-use "^17.2.4" -"@backstage/app-defaults@^1.5.7", "@backstage/app-defaults@^1.5.9": - version "1.5.9" - resolved "https://registry.yarnpkg.com/@backstage/app-defaults/-/app-defaults-1.5.9.tgz#1d44ec1f2cb951227d4b6f5d53a867f02bf179c1" - integrity sha512-NLvJFcclXHJEpWuq0om7ndslQdRnGiKFbLj9KG6QX4jxVynMDln3RySL1wNkPJEfxWiRbZNbiLCbfWrZOXJZGw== +"@backstage/app-defaults@^1.7.6", "@backstage/app-defaults@^1.7.7": + version "1.7.7" + resolved "https://registry.yarnpkg.com/@backstage/app-defaults/-/app-defaults-1.7.7.tgz#a25e441704252db60124e11492b328628235339d" + integrity sha512-mhEqwgrxi8/twkzSx5gVPbMxScYXfy7cB2hv3kCUj5eEaNxGXDOSFasNH9XdosO/c7GYRlY2X1zD9/PGAV52zA== dependencies: - "@backstage/core-app-api" "^1.14.1" - "@backstage/core-components" "^0.14.9" - "@backstage/core-plugin-api" "^1.9.3" - "@backstage/plugin-permission-react" "^0.4.24" - "@backstage/theme" "^0.5.6" + "@backstage/core-app-api" "^1.20.0" + "@backstage/core-components" "^0.18.9" + "@backstage/core-plugin-api" "^1.12.5" + "@backstage/plugin-permission-react" "^0.5.0" + "@backstage/theme" "^0.7.3" "@material-ui/core" "^4.12.2" "@material-ui/icons" "^4.9.1" -"@backstage/backend-app-api@^0.7.0": - version "0.7.9" - resolved "https://registry.yarnpkg.com/@backstage/backend-app-api/-/backend-app-api-0.7.9.tgz#33ea02fd7c10e8a0835b969bd8a3e2b47e7d8766" - integrity sha512-EFmvyJMbtvVFxvtpleDqiFS8si8yBQnhz4KaJ0GGhNSFb3C4yummcEbCGbx0xkK0ktxyIKKOSDP8T4acrvraZw== +"@backstage/backend-app-api@^1.2.7", "@backstage/backend-app-api@^1.3.0", "@backstage/backend-app-api@^1.6.0", "@backstage/backend-app-api@^1.6.1": + version "1.6.1" + resolved "https://registry.yarnpkg.com/@backstage/backend-app-api/-/backend-app-api-1.6.1.tgz#c989e31aa1d9f39a6f591c5f5e7fa408cf8f07b8" + integrity sha512-elRawcs6RcIVL1qMbV+VaZj9NXXixjaeo1JyHqB4+8/IEao/yAJVrpW6hw5r+ZLEfTbWIErtjwEEJD0iOSQeUw== + dependencies: + "@backstage/backend-plugin-api" "^1.9.0" + "@backstage/config" "^1.3.7" + "@backstage/errors" "^1.3.0" + +"@backstage/backend-common@^0.25.0": + version "0.25.0" + resolved "https://registry.yarnpkg.com/@backstage/backend-common/-/backend-common-0.25.0.tgz#11ca616cde67fe27f757a7a95817eaa3b1e33b1c" + integrity sha512-TMQjoZLP80ek/NYBAcFvr8p5fioxuq6rC2Qd9FHXTifTzH9k31yJqmaTUmlJcw4+tz+3h4ss3qCwGGlgfNbGfQ== dependencies: - "@backstage/backend-common" "^0.23.2" - "@backstage/backend-plugin-api" "^0.6.21" - "@backstage/backend-tasks" "^0.5.26" + "@aws-sdk/abort-controller" "^3.347.0" + "@aws-sdk/client-codecommit" "^3.350.0" + "@aws-sdk/client-s3" "^3.350.0" + "@aws-sdk/credential-providers" "^3.350.0" + "@aws-sdk/types" "^3.347.0" + "@backstage/backend-dev-utils" "^0.1.5" + "@backstage/backend-plugin-api" "^1.0.0" "@backstage/cli-common" "^0.1.14" - "@backstage/cli-node" "^0.2.6" "@backstage/config" "^1.2.0" - "@backstage/config-loader" "^1.8.1" + "@backstage/config-loader" "^1.9.1" "@backstage/errors" "^1.2.4" - "@backstage/plugin-auth-node" "^0.4.16" - "@backstage/plugin-permission-node" "^0.7.32" + "@backstage/integration" "^1.15.0" + "@backstage/integration-aws-node" "^0.1.12" + "@backstage/plugin-auth-node" "^0.5.2" "@backstage/types" "^1.1.1" + "@google-cloud/storage" "^7.0.0" + "@keyv/memcache" "^1.3.5" + "@keyv/redis" "^2.5.3" + "@kubernetes/client-node" "0.20.0" "@manypkg/get-packages" "^1.1.3" + "@octokit/rest" "^19.0.3" "@types/cors" "^2.8.6" + "@types/dockerode" "^3.3.0" "@types/express" "^4.17.6" + "@types/luxon" "^3.0.0" + "@types/webpack-env" "^1.15.2" + archiver "^7.0.0" + base64-stream "^1.0.0" compression "^1.7.4" - cookie "^0.6.0" + concat-stream "^2.0.0" cors "^2.8.5" + dockerode "^4.0.0" express "^4.17.1" express-promise-router "^4.1.0" fs-extra "^11.2.0" + git-url-parse "^14.0.0" helmet "^6.0.0" + isomorphic-git "^1.23.0" jose "^5.0.0" + keyv "^4.5.2" knex "^3.0.0" lodash "^4.17.21" logform "^2.3.2" @@ -2551,632 +2896,1118 @@ minimatch "^9.0.0" minimist "^1.2.5" morgan "^1.10.0" - node-fetch "^2.6.7" + mysql2 "^3.0.0" + node-fetch "^2.7.0" node-forge "^1.3.1" - path-to-regexp "^6.2.1" + p-limit "^3.1.0" + path-to-regexp "^8.0.0" + pg "^8.11.3" + pg-format "^1.0.4" + raw-body "^2.4.1" selfsigned "^2.0.0" stoppable "^1.1.0" + tar "^6.1.12" triple-beam "^1.4.1" uuid "^9.0.0" winston "^3.2.1" winston-transport "^4.5.0" + yauzl "^3.0.0" + yn "^4.0.0" -"@backstage/backend-app-api@^0.8.0": - version "0.8.0" - resolved "https://registry.yarnpkg.com/@backstage/backend-app-api/-/backend-app-api-0.8.0.tgz#f90b101afb64daedb7e253ec1557eb42c7e00dd7" - integrity sha512-cxX8swAibofTPajFBsOmCo5Q7XowlOWiUA0zQR45fk+egXFzwpfW0Zj1UYhe2h410G5sLKEMtAvUHvyzczO7iw== +"@backstage/backend-defaults@^0.12.1": + version "0.12.3" + resolved "https://registry.yarnpkg.com/@backstage/backend-defaults/-/backend-defaults-0.12.3.tgz#e5a364a8fbba56ebe5da2b0a34d1fdb66552e6f1" + integrity sha512-fRdacIC8IDSeoySjNc+P9GM3mPmwtW+yQbuNgzak7ltWmG+12F/rgy9Q8fXhWgGwHnjHYlZpfkSfg+jUed0yIQ== dependencies: - "@backstage/backend-common" "^0.23.3" - "@backstage/backend-plugin-api" "^0.7.0" - "@backstage/backend-tasks" "^0.5.27" - "@backstage/cli-common" "^0.1.14" - "@backstage/cli-node" "^0.2.7" - "@backstage/config" "^1.2.0" - "@backstage/config-loader" "^1.8.1" - "@backstage/errors" "^1.2.4" - "@backstage/plugin-auth-node" "^0.4.17" - "@backstage/plugin-permission-node" "^0.8.0" - "@backstage/types" "^1.1.1" - "@manypkg/get-packages" "^1.1.3" - "@types/cors" "^2.8.6" + "@aws-sdk/abort-controller" "^3.347.0" + "@aws-sdk/client-codecommit" "^3.350.0" + "@aws-sdk/client-s3" "^3.350.0" + "@aws-sdk/credential-providers" "^3.350.0" + "@aws-sdk/types" "^3.347.0" + "@azure/storage-blob" "^12.5.0" + "@backstage/backend-app-api" "^1.2.7" + "@backstage/backend-dev-utils" "^0.1.5" + "@backstage/backend-plugin-api" "^1.4.3" + "@backstage/cli-node" "^0.2.14" + "@backstage/config" "^1.3.4" + "@backstage/config-loader" "^1.10.4" + "@backstage/errors" "^1.2.7" + "@backstage/integration" "^1.18.0" + "@backstage/integration-aws-node" "^0.1.17" + "@backstage/plugin-auth-node" "^0.6.7" + "@backstage/plugin-events-node" "^0.4.15" + "@backstage/plugin-permission-node" "^0.10.4" + "@backstage/types" "^1.2.2" + "@google-cloud/storage" "^7.0.0" + "@keyv/memcache" "^2.0.1" + "@keyv/redis" "^4.0.1" + "@keyv/valkey" "^1.0.1" + "@manypkg/get-packages" "^1.1.3" + "@octokit/rest" "^19.0.3" + "@opentelemetry/api" "^1.9.0" + "@types/cors" "^2.8.6" "@types/express" "^4.17.6" + archiver "^7.0.0" + base64-stream "^1.0.0" + better-sqlite3 "^12.0.0" compression "^1.7.4" - cookie "^0.6.0" + concat-stream "^2.0.0" + cookie "^0.7.0" cors "^2.8.5" + cron "^3.0.0" express "^4.17.1" express-promise-router "^4.1.0" + express-rate-limit "^7.5.0" fs-extra "^11.2.0" + git-url-parse "^15.0.0" helmet "^6.0.0" + infinispan "^0.12.0" + is-glob "^4.0.3" jose "^5.0.0" + keyv "^5.2.1" knex "^3.0.0" lodash "^4.17.21" logform "^2.3.2" luxon "^3.0.0" minimatch "^9.0.0" - minimist "^1.2.5" - morgan "^1.10.0" - node-fetch "^2.6.7" + mysql2 "^3.0.0" + node-fetch "^2.7.0" node-forge "^1.3.1" - path-to-regexp "^6.2.1" + p-limit "^3.1.0" + path-to-regexp "^8.0.0" + pg "^8.11.3" + pg-connection-string "^2.3.0" + pg-format "^1.0.4" + rate-limit-redis "^4.2.0" + raw-body "^2.4.1" selfsigned "^2.0.0" - stoppable "^1.1.0" + tar "^7.4.3" triple-beam "^1.4.1" - uuid "^9.0.0" + uuid "^11.0.0" winston "^3.2.1" winston-transport "^4.5.0" + yauzl "^3.0.0" + yn "^4.0.0" + zod "^3.22.4" + zod-to-json-schema "^3.20.4" -"@backstage/backend-common@^0.21.7": - version "0.21.7" - resolved "https://registry.npmmirror.com/@backstage/backend-common/-/backend-common-0.21.7.tgz#5ae796d8adccebc484edeeb2326464c28e14849e" - integrity sha512-wWpnjLYxEstFnAherkfwZIlAazdu1dfJ/5KjK1aSeMZYGyRWcelegs+Dz9MLZ53e/5qtSJ5+caltNfiItda86w== +"@backstage/backend-defaults@^0.13.1": + version "0.13.3" + resolved "https://registry.yarnpkg.com/@backstage/backend-defaults/-/backend-defaults-0.13.3.tgz#0af6147399fcaa0def365a7f2a419d033f031044" + integrity sha512-AhUSLWrsrG9O+1r2+zgfYrkRQMYq4qaoxRwxlfM4vNXnsKMXDB5ci00/FZgJ9S9jQjA9UZu2RMsy2hmyLX6/ng== dependencies: "@aws-sdk/abort-controller" "^3.347.0" "@aws-sdk/client-codecommit" "^3.350.0" "@aws-sdk/client-s3" "^3.350.0" "@aws-sdk/credential-providers" "^3.350.0" "@aws-sdk/types" "^3.347.0" - "@backstage/backend-app-api" "^0.7.0" - "@backstage/backend-dev-utils" "^0.1.4" - "@backstage/backend-plugin-api" "^0.6.17" - "@backstage/cli-common" "^0.1.13" - "@backstage/config" "^1.2.0" - "@backstage/config-loader" "^1.8.0" - "@backstage/errors" "^1.2.4" - "@backstage/integration" "^1.10.0" - "@backstage/integration-aws-node" "^0.1.12" - "@backstage/plugin-auth-node" "^0.4.12" - "@backstage/types" "^1.1.1" + "@azure/storage-blob" "^12.5.0" + "@backstage/backend-app-api" "^1.3.0" + "@backstage/backend-dev-utils" "^0.1.5" + "@backstage/backend-plugin-api" "^1.5.0" + "@backstage/cli-node" "^0.2.15" + "@backstage/config" "^1.3.6" + "@backstage/config-loader" "^1.10.6" + "@backstage/errors" "^1.2.7" + "@backstage/integration" "^1.18.2" + "@backstage/integration-aws-node" "^0.1.19" + "@backstage/plugin-auth-node" "^0.6.9" + "@backstage/plugin-events-node" "^0.4.17" + "@backstage/plugin-permission-node" "^0.10.6" + "@backstage/types" "^1.2.2" "@google-cloud/storage" "^7.0.0" - "@keyv/memcache" "^1.3.5" - "@keyv/redis" "^2.5.3" - "@kubernetes/client-node" "0.20.0" + "@keyv/memcache" "^2.0.1" + "@keyv/redis" "^4.0.1" + "@keyv/valkey" "^1.0.1" "@manypkg/get-packages" "^1.1.3" "@octokit/rest" "^19.0.3" + "@opentelemetry/api" "^1.9.0" "@types/cors" "^2.8.6" - "@types/dockerode" "^3.3.0" "@types/express" "^4.17.6" - "@types/luxon" "^3.0.0" - "@types/webpack-env" "^1.15.2" - archiver "^6.0.0" + archiver "^7.0.0" base64-stream "^1.0.0" + better-sqlite3 "^12.0.0" compression "^1.7.4" concat-stream "^2.0.0" + cookie "^0.7.0" cors "^2.8.5" - dockerode "^4.0.0" + cron "^3.0.0" express "^4.17.1" express-promise-router "^4.1.0" + express-rate-limit "^7.5.0" fs-extra "^11.2.0" - git-url-parse "^14.0.0" + git-url-parse "^15.0.0" helmet "^6.0.0" - isomorphic-git "^1.23.0" + infinispan "^0.12.0" + is-glob "^4.0.3" jose "^5.0.0" - keyv "^4.5.2" + keyv "^5.2.1" knex "^3.0.0" lodash "^4.17.21" logform "^2.3.2" luxon "^3.0.0" minimatch "^9.0.0" mysql2 "^3.0.0" - node-fetch "^2.6.7" + node-fetch "^2.7.0" + node-forge "^1.3.1" p-limit "^3.1.0" + path-to-regexp "^8.0.0" pg "^8.11.3" + pg-connection-string "^2.3.0" + pg-format "^1.0.4" + rate-limit-redis "^4.2.0" raw-body "^2.4.1" - tar "^6.1.12" - uuid "^9.0.0" + selfsigned "^2.0.0" + tar "^7.4.3" + triple-beam "^1.4.1" + uuid "^11.0.0" winston "^3.2.1" winston-transport "^4.5.0" yauzl "^3.0.0" yn "^4.0.0" + zod "^3.22.4" + zod-to-json-schema "^3.20.4" -"@backstage/backend-common@^0.23.2", "@backstage/backend-common@^0.23.3": - version "0.23.3" - resolved "https://registry.yarnpkg.com/@backstage/backend-common/-/backend-common-0.23.3.tgz#bba71a3f932a88481ab8e09f4406fc551fb47aec" - integrity sha512-/OZRnxlNokdMfoQEfDRrjIuojPi6UL80smHuNpcvP/93fXkrYiMwISulDQPxCfm1Rm9JW8mnRORGFihKIALNpQ== +"@backstage/backend-defaults@^0.16.0": + version "0.16.0" + resolved "https://registry.yarnpkg.com/@backstage/backend-defaults/-/backend-defaults-0.16.0.tgz#2d7638287bc46eb6757c217d546f0d2967f12732" + integrity sha512-h9/Z63mFdCWEvlG77yhWfHZiTs0SGsoo/GBdhtrW+w+lp6EMfNoc7ujiPcSjEqUKw/fty8jRHth4wx+21fYRKg== dependencies: "@aws-sdk/abort-controller" "^3.347.0" "@aws-sdk/client-codecommit" "^3.350.0" "@aws-sdk/client-s3" "^3.350.0" "@aws-sdk/credential-providers" "^3.350.0" "@aws-sdk/types" "^3.347.0" - "@backstage/backend-dev-utils" "^0.1.4" - "@backstage/backend-plugin-api" "^0.7.0" - "@backstage/cli-common" "^0.1.14" - "@backstage/config" "^1.2.0" - "@backstage/config-loader" "^1.8.1" - "@backstage/errors" "^1.2.4" - "@backstage/integration" "^1.13.0" - "@backstage/integration-aws-node" "^0.1.12" - "@backstage/plugin-auth-node" "^0.4.17" - "@backstage/types" "^1.1.1" + "@azure/identity" "^4.0.0" + "@azure/storage-blob" "^12.5.0" + "@backstage/backend-app-api" "^1.6.0" + "@backstage/backend-dev-utils" "^0.1.7" + "@backstage/backend-plugin-api" "^1.8.0" + "@backstage/cli-node" "^0.3.0" + "@backstage/config" "^1.3.6" + "@backstage/config-loader" "^1.10.9" + "@backstage/errors" "^1.2.7" + "@backstage/integration" "^2.0.0" + "@backstage/integration-aws-node" "^0.1.20" + "@backstage/plugin-auth-node" "^0.6.14" + "@backstage/plugin-events-node" "^0.4.20" + "@backstage/plugin-permission-common" "^0.9.7" + "@backstage/plugin-permission-node" "^0.10.11" + "@backstage/types" "^1.2.2" "@google-cloud/storage" "^7.0.0" - "@keyv/memcache" "^1.3.5" - "@keyv/redis" "^2.5.3" - "@kubernetes/client-node" "0.20.0" + "@keyv/memcache" "^2.0.1" + "@keyv/redis" "^4.0.1" + "@keyv/valkey" "^1.0.1" "@manypkg/get-packages" "^1.1.3" "@octokit/rest" "^19.0.3" + "@opentelemetry/api" "^1.9.0" "@types/cors" "^2.8.6" - "@types/dockerode" "^3.3.0" "@types/express" "^4.17.6" - "@types/luxon" "^3.0.0" - "@types/webpack-env" "^1.15.2" - archiver "^6.0.0" + archiver "^7.0.0" base64-stream "^1.0.0" compression "^1.7.4" concat-stream "^2.0.0" + cookie "^0.7.0" cors "^2.8.5" - dockerode "^4.0.0" - express "^4.17.1" + cron "^3.0.0" + express "^4.22.0" express-promise-router "^4.1.0" + express-rate-limit "^8.2.2" fs-extra "^11.2.0" - git-url-parse "^14.0.0" + git-url-parse "^15.0.0" helmet "^6.0.0" - isomorphic-git "^1.23.0" + infinispan "^0.12.0" + is-glob "^4.0.3" jose "^5.0.0" - keyv "^4.5.2" + keyv "^5.2.1" knex "^3.0.0" lodash "^4.17.21" logform "^2.3.2" luxon "^3.0.0" - minimatch "^9.0.0" - minimist "^1.2.5" - morgan "^1.10.0" + minimatch "^10.2.1" mysql2 "^3.0.0" - node-fetch "^2.6.7" - node-forge "^1.3.1" + node-fetch "^2.7.0" + node-forge "^1.3.2" p-limit "^3.1.0" - path-to-regexp "^6.2.1" + path-to-regexp "^8.0.0" pg "^8.11.3" + pg-connection-string "^2.3.0" + pg-format "^1.0.4" + rate-limit-redis "^4.2.0" raw-body "^2.4.1" selfsigned "^2.0.0" - stoppable "^1.1.0" - tar "^6.1.12" + tar "^7.5.6" triple-beam "^1.4.1" - uuid "^9.0.0" + uuid "^11.0.0" winston "^3.2.1" winston-transport "^4.5.0" - yauzl "^3.0.0" + yauzl "^3.2.1" yn "^4.0.0" + zod "^3.25.76 || ^4.0.0" + zod-to-json-schema "^3.25.1" -"@backstage/backend-defaults@^0.4.0": - version "0.4.1" - resolved "https://registry.yarnpkg.com/@backstage/backend-defaults/-/backend-defaults-0.4.1.tgz#072f5bbd2bb8a8c4998f6baba7e1134d7171a8dc" - integrity sha512-dLuFjJCPsWDJQzdauNQMdPjinV2YB+k6Jx2JSx04l3SCspjdmBRnZf/jwIrPcQyzgQrCQhupHeprYq7wJSXgbA== +"@backstage/backend-defaults@^0.17.0": + version "0.17.0" + resolved "https://registry.yarnpkg.com/@backstage/backend-defaults/-/backend-defaults-0.17.0.tgz#229689d2305cb7816b1a331ff75ae3786710552c" + integrity sha512-EMSCZpYJEy37DOrpNPFi8u8IF4H6tBTDE+0R3/GSyT/+43FnCnrtu/OXNQfxBpg08zRF6cXR7VeTSJPNB2IENg== dependencies: "@aws-sdk/abort-controller" "^3.347.0" "@aws-sdk/client-codecommit" "^3.350.0" "@aws-sdk/client-s3" "^3.350.0" "@aws-sdk/credential-providers" "^3.350.0" + "@aws-sdk/rds-signer" "^3.0.0" "@aws-sdk/types" "^3.347.0" - "@backstage/backend-app-api" "^0.8.0" - "@backstage/backend-common" "^0.23.3" - "@backstage/backend-dev-utils" "^0.1.4" - "@backstage/backend-plugin-api" "^0.7.0" - "@backstage/cli-common" "^0.1.14" - "@backstage/config" "^1.2.0" - "@backstage/config-loader" "^1.8.1" - "@backstage/errors" "^1.2.4" - "@backstage/integration" "^1.13.0" - "@backstage/integration-aws-node" "^0.1.12" - "@backstage/plugin-auth-node" "^0.4.17" - "@backstage/plugin-events-node" "^0.3.8" - "@backstage/plugin-permission-node" "^0.8.0" - "@backstage/types" "^1.1.1" + "@azure/identity" "^4.0.0" + "@azure/storage-blob" "^12.5.0" + "@backstage/backend-app-api" "^1.6.1" + "@backstage/backend-dev-utils" "^0.1.7" + "@backstage/backend-plugin-api" "^1.9.0" + "@backstage/cli-node" "^0.3.1" + "@backstage/config" "^1.3.7" + "@backstage/config-loader" "^1.10.10" + "@backstage/errors" "^1.3.0" + "@backstage/integration" "^2.0.1" + "@backstage/integration-aws-node" "^0.1.21" + "@backstage/plugin-auth-node" "^0.7.0" + "@backstage/plugin-events-node" "^0.4.21" + "@backstage/plugin-permission-common" "^0.9.8" + "@backstage/plugin-permission-node" "^0.10.12" + "@backstage/types" "^1.2.2" "@google-cloud/storage" "^7.0.0" - "@keyv/memcache" "^1.3.5" - "@keyv/redis" "^2.5.3" + "@keyv/memcache" "^2.0.1" + "@keyv/redis" "^4.0.1" + "@keyv/valkey" "^1.0.1" "@manypkg/get-packages" "^1.1.3" "@octokit/rest" "^19.0.3" - "@opentelemetry/api" "^1.3.0" + "@opentelemetry/api" "^1.9.0" "@types/cors" "^2.8.6" "@types/express" "^4.17.6" - archiver "^6.0.0" + archiver "^7.0.0" base64-stream "^1.0.0" - better-sqlite3 "^11.0.0" compression "^1.7.4" concat-stream "^2.0.0" - cookie "^0.6.0" + cookie "^0.7.0" cors "^2.8.5" cron "^3.0.0" - express "^4.17.1" + express "^4.22.0" express-promise-router "^4.1.0" + express-rate-limit "^8.2.2" fs-extra "^11.2.0" - git-url-parse "^14.0.0" + git-url-parse "^15.0.0" helmet "^6.0.0" - isomorphic-git "^1.23.0" + infinispan "^0.12.0" + is-glob "^4.0.3" jose "^5.0.0" - keyv "^4.5.2" + keyv "^5.2.1" knex "^3.0.0" lodash "^4.17.21" logform "^2.3.2" luxon "^3.0.0" - minimatch "^9.0.0" - minimist "^1.2.5" - morgan "^1.10.0" + minimatch "^10.2.1" mysql2 "^3.0.0" - node-fetch "^2.6.7" - node-forge "^1.3.1" + node-fetch "^2.7.0" + node-forge "^1.3.2" p-limit "^3.1.0" - path-to-regexp "^6.2.1" + path-to-regexp "^8.0.0" pg "^8.11.3" pg-connection-string "^2.3.0" + pg-format "^1.0.4" + rate-limit-redis "^4.2.0" raw-body "^2.4.1" selfsigned "^2.0.0" - stoppable "^1.1.0" - tar "^6.1.12" + tar "^7.5.6" triple-beam "^1.4.1" - uuid "^9.0.0" + uuid "^11.0.0" winston "^3.2.1" winston-transport "^4.5.0" - yauzl "^3.0.0" + yauzl "^3.2.1" yn "^4.0.0" - zod "^3.22.4" + zod "^3.25.76 || ^4.0.0" + zod-to-json-schema "^3.25.1" -"@backstage/backend-dev-utils@^0.1.4": - version "0.1.4" - resolved "https://registry.npmmirror.com/@backstage/backend-dev-utils/-/backend-dev-utils-0.1.4.tgz#65d204939c49b5df6a2148e8ad4dc718ccd1df07" - integrity sha512-5YgAPz4CRtnqdaUlYCHwGmXvpkGQ1jaUMoDtiQ81WDxQrf+0iYZCwS4ftVyQmB0Ga6BaGOUf6GG/OuFA56Y5mA== +"@backstage/backend-dev-utils@^0.1.5", "@backstage/backend-dev-utils@^0.1.7": + version "0.1.7" + resolved "https://registry.yarnpkg.com/@backstage/backend-dev-utils/-/backend-dev-utils-0.1.7.tgz#8fd5737936128c4e663e6ad23fe5f158021290ae" + integrity sha512-05lbgXZGofBHcs/Yz2TTI3Brn98BcUU8ZFVx/sCz1EXG8/eFoZSEjr7F2cA1x2UKTIYIt7HGZEYxF1+1lqxNDQ== -"@backstage/backend-openapi-utils@^0.1.15": - version "0.1.15" - resolved "https://registry.yarnpkg.com/@backstage/backend-openapi-utils/-/backend-openapi-utils-0.1.15.tgz#d96fa4b24011c3d1aae5c80ee77b3d49ef95728d" - integrity sha512-cZ1ptQsogkok0KE3rrUA7wYtoF8rBqG3NHRjVf6WY4fwxlPD0T1Cbrdca+oebJQKPGJc817bIh5UvD1O/KvLgA== +"@backstage/backend-openapi-utils@^0.6.8": + version "0.6.8" + resolved "https://registry.yarnpkg.com/@backstage/backend-openapi-utils/-/backend-openapi-utils-0.6.8.tgz#7c929d287f367d0c73d9d10b68be9d01e1942f8f" + integrity sha512-nfg9XkrgnzCIHHWeylTMGJypumxFeljFK/yLs1t7daqnGZH8SMCT2skMW9YrDQ5n7zZm1b4KR+WdJgUtq1znPw== dependencies: - "@backstage/backend-plugin-api" "^0.7.0" - "@backstage/errors" "^1.2.4" + "@apidevtools/swagger-parser" "^10.1.0" + "@backstage/backend-plugin-api" "^1.9.0" + "@backstage/errors" "^1.3.0" + "@backstage/types" "^1.2.2" "@types/express" "^4.17.6" "@types/express-serve-static-core" "^4.17.5" - express "^4.17.1" - express-openapi-validator "^5.0.4" + ajv "^8.16.0" + express "^4.22.0" + express-openapi-validator "^5.5.8" express-promise-router "^4.1.0" + get-port "^5.1.1" json-schema-to-ts "^3.0.0" lodash "^4.17.21" + mockttp "^3.13.0" openapi-merge "^1.3.2" openapi3-ts "^3.1.2" -"@backstage/backend-plugin-api@^0.6.17", "@backstage/backend-plugin-api@^0.6.21": - version "0.6.21" - resolved "https://registry.yarnpkg.com/@backstage/backend-plugin-api/-/backend-plugin-api-0.6.21.tgz#0d1b9222a8e69cfd500a0789edaff7d14a77dffe" - integrity sha512-Cek3jgJmUY6oGDAYd7o/M6fezSnOIHzCBEsJHeE4vakdZ2vYOGVWPGIQmWSylEhK/oEL54JUslB5VjHo1onL9A== - dependencies: - "@backstage/cli-common" "^0.1.14" - "@backstage/config" "^1.2.0" - "@backstage/errors" "^1.2.4" - "@backstage/plugin-auth-node" "^0.4.16" - "@backstage/plugin-permission-common" "^0.7.14" - "@backstage/types" "^1.1.1" +"@backstage/backend-plugin-api@^1.0.0", "@backstage/backend-plugin-api@^1.1.1", "@backstage/backend-plugin-api@^1.4.0", "@backstage/backend-plugin-api@^1.4.3", "@backstage/backend-plugin-api@^1.4.4", "@backstage/backend-plugin-api@^1.5.0", "@backstage/backend-plugin-api@^1.6.0", "@backstage/backend-plugin-api@^1.7.0", "@backstage/backend-plugin-api@^1.8.0", "@backstage/backend-plugin-api@^1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@backstage/backend-plugin-api/-/backend-plugin-api-1.9.0.tgz#0376e100cab371e3a5bea2feb4123a83f34d3a9e" + integrity sha512-rdkfvodsoyuRylr/xOQSI0fOzUqZbm/hw7A3W8R3js6bb/8BoRpzIhbcj2jgOLNRI7PooHv1+laZSk7sMffgCw== + dependencies: + "@backstage/cli-common" "^0.2.1" + "@backstage/config" "^1.3.7" + "@backstage/errors" "^1.3.0" + "@backstage/plugin-auth-node" "^0.7.0" + "@backstage/plugin-permission-common" "^0.9.8" + "@backstage/plugin-permission-node" "^0.10.12" + "@backstage/types" "^1.2.2" "@types/express" "^4.17.6" + "@types/json-schema" "^7.0.6" "@types/luxon" "^3.0.0" - express "^4.17.1" + json-schema "^0.4.0" knex "^3.0.0" luxon "^3.0.0" - -"@backstage/backend-plugin-api@^0.7.0": - version "0.7.0" - resolved "https://registry.yarnpkg.com/@backstage/backend-plugin-api/-/backend-plugin-api-0.7.0.tgz#1a95a8fb5703856e08fef0e94b12f4a50e77ea68" - integrity sha512-cq93C7UkS1t/D6VP3XZ8gLD8o3cRmbeSsIUGk+AYiUm0e8aSCWSAlBBiFYrylVOAuQXzEIgE9Gb3MNNFbl+Qug== - dependencies: - "@backstage/cli-common" "^0.1.14" - "@backstage/config" "^1.2.0" - "@backstage/errors" "^1.2.4" - "@backstage/plugin-auth-node" "^0.4.17" - "@backstage/plugin-permission-common" "^0.8.0" - "@backstage/types" "^1.1.1" + zod "^3.25.76 || ^4.0.0" + +"@backstage/backend-test-utils@^1.11.1": + version "1.11.2" + resolved "https://registry.yarnpkg.com/@backstage/backend-test-utils/-/backend-test-utils-1.11.2.tgz#581f1c152e4e290e807d932ce21ea5e81892fbcd" + integrity sha512-TUMcYrgnyapBa9UBOE+h0kth0wlxr579Oi5824cMPvnTqmP16hdHOrw/bxC662LnG5PfL6ZZk3tE6QVaarTxIQ== + dependencies: + "@backstage/backend-app-api" "^1.6.1" + "@backstage/backend-defaults" "^0.17.0" + "@backstage/backend-plugin-api" "^1.9.0" + "@backstage/config" "^1.3.7" + "@backstage/errors" "^1.3.0" + "@backstage/plugin-auth-node" "^0.7.0" + "@backstage/plugin-events-node" "^0.4.21" + "@backstage/plugin-permission-common" "^0.9.8" + "@backstage/types" "^1.2.2" + "@keyv/memcache" "^2.0.1" + "@keyv/redis" "^4.0.1" + "@keyv/valkey" "^1.0.1" "@types/express" "^4.17.6" - "@types/luxon" "^3.0.0" - express "^4.17.1" - knex "^3.0.0" - luxon "^3.0.0" - -"@backstage/backend-tasks@^0.5.26", "@backstage/backend-tasks@^0.5.27": - version "0.5.27" - resolved "https://registry.yarnpkg.com/@backstage/backend-tasks/-/backend-tasks-0.5.27.tgz#e79517412135ddc2716152decf8e3fd6296c3a88" - integrity sha512-xR9PeO9pmm12PqJRLOpHzhh4wZpZiCXQs2Tw6t9vm4/wJSn7nEuc2Qt0CKi/ssAG6iDONA3vVtH85no5CDoJUQ== - dependencies: - "@backstage/backend-common" "^0.23.3" - "@backstage/backend-plugin-api" "^0.7.0" - "@backstage/config" "^1.2.0" - "@backstage/errors" "^1.2.4" - "@backstage/types" "^1.1.1" - "@opentelemetry/api" "^1.3.0" - "@types/luxon" "^3.0.0" - cron "^3.0.0" + "@types/express-serve-static-core" "^4.17.5" + "@types/keyv" "^4.2.0" + "@types/qs" "^6.9.6" + better-sqlite3 "^12.0.0" + cookie "^0.7.0" + express "^4.22.0" + fs-extra "^11.0.0" + keyv "^5.2.1" knex "^3.0.0" lodash "^4.17.21" - luxon "^3.0.0" - uuid "^9.0.0" - zod "^3.22.4" + mysql2 "^3.0.0" + pg "^8.11.3" + pg-connection-string "^2.3.0" + testcontainers "^11.9.0" + text-extensions "^2.4.0" + uuid "^11.0.0" + yn "^4.0.0" + zod "^3.25.76 || ^4.0.0" + zod-to-json-schema "^3.25.1" -"@backstage/catalog-client@^1.6.4", "@backstage/catalog-client@^1.6.5": - version "1.6.5" - resolved "https://registry.npmmirror.com/@backstage/catalog-client/-/catalog-client-1.6.5.tgz#f27c933abf8c7bf8bcbd090b4b550a7eb1957686" - integrity sha512-powm86JuibW0GtxtVYwO/xj3SjwV8AWMbL/D9C3Yl3mZ+4sp8lwXTTlKR+IdNHnFlDfwHiNH7LKT4BMgtTZbtA== +"@backstage/catalog-client@^1.12.1", "@backstage/catalog-client@^1.14.0", "@backstage/catalog-client@^1.15.0", "@backstage/catalog-client@^1.9.1": + version "1.15.0" + resolved "https://registry.yarnpkg.com/@backstage/catalog-client/-/catalog-client-1.15.0.tgz#1ac861891e9c79ac9498911e45bb4db1cc47b929" + integrity sha512-esQTkAyi1110zFkS5pxWWGLU43YuaGjgCv4uhmLmEhhQM5u7MIjdA6UGJBVS1k4WdE2zmPEq842iVf8SKm9y1A== dependencies: - "@backstage/catalog-model" "^1.5.0" - "@backstage/errors" "^1.2.4" + "@backstage/catalog-model" "^1.8.0" + "@backstage/errors" "^1.3.0" + "@backstage/filter-predicates" "^0.1.2" cross-fetch "^4.0.0" + lodash "^4.17.21" uri-template "^2.0.0" -"@backstage/catalog-model@^1.4.3", "@backstage/catalog-model@^1.5.0": - version "1.5.0" - resolved "https://registry.npmmirror.com/@backstage/catalog-model/-/catalog-model-1.5.0.tgz#7f5c4a80a3341555db5209fbc6fc2d25f6500707" - integrity sha512-CfLO5/DMGahneuLU4KTQEs1tgNhBciUtyGUDZB4Ii9i1Uha1poWcqp4HKg61lj1hmXNDUHmlbFqY9W7kmzRC0A== +"@backstage/catalog-model@^1.7.3", "@backstage/catalog-model@^1.7.5", "@backstage/catalog-model@^1.7.6", "@backstage/catalog-model@^1.7.7", "@backstage/catalog-model@^1.8.0": + version "1.8.0" + resolved "https://registry.yarnpkg.com/@backstage/catalog-model/-/catalog-model-1.8.0.tgz#6b6207c3d362ac2356aca3c6697b0270f519ecb9" + integrity sha512-Fn2n07ryTelxwe3OcWqAm8EM2hHlb1FxR818nlhsxemad4L2qrWFnaHfH+5xVAKHviaa7Vr66id8u2cWsQzaAA== dependencies: - "@backstage/errors" "^1.2.4" - "@backstage/types" "^1.1.1" + "@backstage/errors" "^1.3.0" + "@backstage/types" "^1.2.2" ajv "^8.10.0" + ajv-errors "^3.0.0" lodash "^4.17.21" + zod "^3.25.76" -"@backstage/cli-common@^0.1.13", "@backstage/cli-common@^0.1.14": +"@backstage/cli-common@^0.1.14": version "0.1.14" resolved "https://registry.yarnpkg.com/@backstage/cli-common/-/cli-common-0.1.14.tgz#2291520acfbac860a05dd48fc3b876d5cd789b76" integrity sha512-4kGWGrFuxoaCne2aHCOVW+vi8y2MLEMEj785SEApMG2J8jXJXUuIOzWw0MrN0pM1FqBXDb6aeQd+bmQMK/Ci+w== -"@backstage/cli-node@^0.2.6", "@backstage/cli-node@^0.2.7": - version "0.2.7" - resolved "https://registry.yarnpkg.com/@backstage/cli-node/-/cli-node-0.2.7.tgz#8f104698c9ae9bf2602572681b07e141aa7ce8f4" - integrity sha512-fmGjmDFNMrc78qqOEnvpXmIErGq1hJ61A4yJU8iWzT/msEZNCt48Mza/D+nv53rfapsgJm1zYdhhqZRQpP5OkA== +"@backstage/cli-common@^0.1.15", "@backstage/cli-common@^0.1.18": + version "0.1.18" + resolved "https://registry.yarnpkg.com/@backstage/cli-common/-/cli-common-0.1.18.tgz#1aacaa648dc0ac6a5238cec52c6712e8582f3ad3" + integrity sha512-6Ks0tnqJpZPppwq4F6Ft3AvmUUe7NAqzKtXMKSmePjBtGgoqVn/dB8HJSZcW4UMooiGGDjGEz2bpWQ/qH3bWQw== dependencies: - "@backstage/cli-common" "^0.1.14" - "@backstage/errors" "^1.2.4" - "@backstage/types" "^1.1.1" - "@manypkg/get-packages" "^1.1.3" - "@yarnpkg/parsers" "^3.0.0" - fs-extra "^11.2.0" - semver "^7.5.3" - zod "^3.22.4" + "@backstage/errors" "^1.2.7" + cross-spawn "^7.0.3" + global-agent "^3.0.0" + undici "^7.2.3" -"@backstage/cli@^0.26.10": - version "0.26.11" - resolved "https://registry.yarnpkg.com/@backstage/cli/-/cli-0.26.11.tgz#7b0af99608cec9e867f00c9c4797829925ac53b1" - integrity sha512-HBvLNEMDBtQ3pd3pvNbxXUoP2zTexElw64mNs2PMYpPSvnyvtx0wsoFDdSUtFF+vnYlfqvg2FaNqLbSKEJjSjQ== +"@backstage/cli-common@^0.2.1": + version "0.2.1" + resolved "https://registry.yarnpkg.com/@backstage/cli-common/-/cli-common-0.2.1.tgz#5480d0da87848eae0f9629703822397b6d9237ec" + integrity sha512-KPA63gz7FArlogWIKeJaq8sdm6LQXKIk0YIY90FPYKtxOX508LjiGkHaKYyVuKASIaSXMK0HNJ2U1xUqYkcXlQ== dependencies: - "@backstage/catalog-model" "^1.5.0" - "@backstage/cli-common" "^0.1.14" - "@backstage/cli-node" "^0.2.7" - "@backstage/config" "^1.2.0" - "@backstage/config-loader" "^1.8.1" - "@backstage/errors" "^1.2.4" - "@backstage/eslint-plugin" "^0.1.8" - "@backstage/integration" "^1.13.0" - "@backstage/release-manifests" "^0.0.11" - "@backstage/types" "^1.1.1" + "@backstage/errors" "^1.3.0" + cross-spawn "^7.0.3" + global-agent "^3.0.0" + undici "^7.24.5" + +"@backstage/cli-defaults@^0.1.0", "@backstage/cli-defaults@^0.1.1": + version "0.1.1" + resolved "https://registry.yarnpkg.com/@backstage/cli-defaults/-/cli-defaults-0.1.1.tgz#bac2c80830d23127a61877aedf764fc284534ce9" + integrity sha512-6ehdl1UthXsotp2VQA6KlCfweBdVNXuX73JLsC6wSOiG2E36tnnoGg2jHnrJrNju5+3oYvi/+qnEuvAvEO+B6A== + dependencies: + "@backstage/cli-module-actions" "^0.1.0" + "@backstage/cli-module-auth" "^0.1.1" + "@backstage/cli-module-build" "^0.1.1" + "@backstage/cli-module-config" "^0.1.1" + "@backstage/cli-module-github" "^0.1.1" + "@backstage/cli-module-info" "^0.1.1" + "@backstage/cli-module-lint" "^0.1.1" + "@backstage/cli-module-maintenance" "^0.1.1" + "@backstage/cli-module-migrate" "^0.1.1" + "@backstage/cli-module-new" "^0.1.2" + "@backstage/cli-module-test-jest" "^0.1.1" + "@backstage/cli-module-translations" "^0.1.1" + +"@backstage/cli-module-actions@^0.1.0": + version "0.1.0" + resolved "https://registry.yarnpkg.com/@backstage/cli-module-actions/-/cli-module-actions-0.1.0.tgz#1e096b8297e8e9227541c18d52484cab61ab2178" + integrity sha512-GcDxgYVnm5TCId7lu+op+En6QiLeeF4e7PIPx3+jo5RbPAOMT+c15oecNZ2hYAU67Ye8mLqlmrRPi5gfbYkdHA== + dependencies: + "@backstage/cli-node" "^0.3.1" + "@backstage/errors" "^1.3.0" + chalk "^4.0.0" + cleye "^2.3.0" + marked "^15.0.12" + marked-terminal "^7.3.0" + strip-ansi "^7.1.0" + zod "^3.25.76 || ^4.0.0" + +"@backstage/cli-module-auth@^0.1.1": + version "0.1.1" + resolved "https://registry.yarnpkg.com/@backstage/cli-module-auth/-/cli-module-auth-0.1.1.tgz#5ffd1288fd32f3c13e1213351a0dcf91e2866024" + integrity sha512-4qeZeo/j8k3RkUOgNkEEja0H7HEH23nmSm8NF6mP/mySlGNVmtN0RfP1htPRFscJvNF6wnvFBWr7wKVS1pJ7XA== + dependencies: + "@backstage/cli-node" "^0.3.1" + "@backstage/errors" "^1.3.0" + cleye "^2.3.0" + fs-extra "^11.2.0" + glob "^13.0.0" + inquirer "^8.2.0" + proper-lockfile "^4.1.2" + yaml "^2.0.0" + zod "^3.25.76" + optionalDependencies: + keytar "^7.9.0" + +"@backstage/cli-module-build@^0.1.1": + version "0.1.2" + resolved "https://registry.yarnpkg.com/@backstage/cli-module-build/-/cli-module-build-0.1.2.tgz#303295a1222dccdf2e604e2a8462aec6ab805a09" + integrity sha512-NEthcYRe7es2eds6U9ZzUVS4GbHaEVY0sBJN0CF5+1Ps7J99OTboWelVVCxlhy0+lKklowRAlLiQLWWtjb/5Jg== + dependencies: + "@backstage/cli-common" "^0.2.1" + "@backstage/cli-node" "^0.3.1" + "@backstage/config" "^1.3.7" + "@backstage/config-loader" "^1.10.10" + "@backstage/errors" "^1.3.0" + "@backstage/module-federation-common" "^0.1.3" "@manypkg/get-packages" "^1.1.3" - "@module-federation/enhanced" "^0.1.19" - "@octokit/graphql" "^5.0.0" - "@octokit/graphql-schema" "^13.7.0" - "@octokit/oauth-app" "^4.2.0" - "@octokit/request" "^6.0.0" - "@pmmmwh/react-refresh-webpack-plugin" "^0.5.7" - "@rollup/plugin-commonjs" "^25.0.0" + "@module-federation/enhanced" "^0.21.6" + "@pmmmwh/react-refresh-webpack-plugin" "^0.6.0" + "@rollup/plugin-commonjs" "^26.0.0" "@rollup/plugin-json" "^6.0.0" "@rollup/plugin-node-resolve" "^15.0.0" "@rollup/plugin-yaml" "^4.0.0" - "@spotify/eslint-config-base" "^15.0.0" - "@spotify/eslint-config-react" "^15.0.0" - "@spotify/eslint-config-typescript" "^15.0.0" - "@sucrase/webpack-loader" "^2.0.0" - "@svgr/core" "6.5.x" - "@svgr/plugin-jsx" "6.5.x" - "@svgr/plugin-svgo" "6.5.x" - "@svgr/rollup" "6.5.x" - "@svgr/webpack" "6.5.x" - "@swc/core" "^1.3.46" - "@swc/helpers" "^0.5.0" - "@swc/jest" "^0.2.22" - "@types/jest" "^29.5.11" - "@types/webpack-env" "^1.15.2" - "@typescript-eslint/eslint-plugin" "^6.12.0" - "@typescript-eslint/parser" "^6.7.2" - "@yarnpkg/lockfile" "^1.1.0" - "@yarnpkg/parsers" "^3.0.0" - bfj "^8.0.0" + "@rspack/core" "^1.4.11" + "@rspack/dev-server" "^1.1.4" + "@rspack/plugin-react-refresh" "^1.4.3" + "@swc/core" "^1.15.6" + bfj "^9.0.2" buffer "^6.0.3" chalk "^4.0.0" chokidar "^3.3.1" - commander "^12.0.0" - cross-fetch "^4.0.0" + cleye "^2.3.0" cross-spawn "^7.0.3" css-loader "^6.5.1" ctrlc-windows "^2.1.0" - diff "^5.0.0" - esbuild "^0.21.0" esbuild-loader "^4.0.0" - eslint "^8.6.0" - eslint-config-prettier "^9.0.0" - eslint-formatter-friendly "^7.0.0" - eslint-plugin-deprecation "^2.0.0" - eslint-plugin-import "^2.25.4" - eslint-plugin-jest "^27.0.0" - eslint-plugin-jsx-a11y "^6.5.1" - eslint-plugin-react "^7.28.0" - eslint-plugin-react-hooks "^4.3.0" - eslint-plugin-unused-imports "^3.0.0" - eslint-webpack-plugin "^4.0.0" - express "^4.17.1" + eslint-rspack-plugin "^4.2.1" + eslint-webpack-plugin "^4.2.0" fork-ts-checker-webpack-plugin "^9.0.0" fs-extra "^11.2.0" - git-url-parse "^14.0.0" - glob "^7.1.7" - global-agent "^3.0.0" - handlebars "^4.7.3" - html-webpack-plugin "^5.3.1" - inquirer "^8.2.0" - jest "^29.7.0" - jest-css-modules "^2.1.0" - jest-environment-jsdom "^29.0.2" - jest-runtime "^29.0.2" - json-schema "^0.4.0" + glob "^13.0.0" + html-webpack-plugin "^5.6.3" lodash "^4.17.21" mini-css-extract-plugin "^2.4.2" - minimatch "^9.0.0" - node-fetch "^2.6.7" - node-libs-browser "^2.2.1" + node-stdlib-browser "^1.3.1" npm-packlist "^5.0.0" - ora "^5.3.0" - p-limit "^3.1.0" p-queue "^6.6.2" - pirates "^4.0.6" + portfinder "^1.0.32" postcss "^8.1.0" + postcss-import "^16.1.0" process "^0.11.10" + raw-loader "^4.0.2" react-dev-utils "^12.0.0-next.60" - react-refresh "^0.14.0" - recursive-readdir "^2.2.2" - replace-in-file "^7.1.0" - rollup "^4.0.0" + react-refresh "^0.18.0" + rollup "^4.59.0" rollup-plugin-dts "^6.1.0" rollup-plugin-esbuild "^6.1.1" rollup-plugin-postcss "^4.0.0" rollup-pluginutils "^2.8.2" - run-script-webpack-plugin "^0.2.0" - semver "^7.5.3" + shell-quote "^1.8.1" style-loader "^3.3.1" - sucrase "^3.20.2" swc-loader "^0.2.3" - tar "^6.1.12" - terser-webpack-plugin "^5.1.3" + tar "^7.5.6" + ts-checker-rspack-plugin "^1.1.5" + ts-morph "^24.0.0" util "^0.12.3" - webpack "^5.70.0" + webpack "~5.105.0" webpack-dev-server "^5.0.0" - webpack-node-externals "^3.0.0" - yaml "^2.0.0" yml-loader "^2.1.0" yn "^4.0.0" - zod "^3.22.4" -"@backstage/config-loader@^1.8.0", "@backstage/config-loader@^1.8.1": - version "1.8.1" - resolved "https://registry.yarnpkg.com/@backstage/config-loader/-/config-loader-1.8.1.tgz#4383309ffe0488fa6c9dac33f3bec96181750e42" - integrity sha512-oPT+TZK1ppBjQXgOJ+pfsfE/Lov596WlBc5po9wElgnbQ720OsyAmystLKecvZ1HAjC/IGLKrPZMh9OAy/k36Q== - dependencies: - "@backstage/cli-common" "^0.1.14" - "@backstage/config" "^1.2.0" - "@backstage/errors" "^1.2.4" - "@backstage/types" "^1.1.1" - "@types/json-schema" "^7.0.6" - ajv "^8.10.0" - chokidar "^3.5.2" - fs-extra "^11.2.0" +"@backstage/cli-module-config@^0.1.1": + version "0.1.1" + resolved "https://registry.yarnpkg.com/@backstage/cli-module-config/-/cli-module-config-0.1.1.tgz#8a46a0052af8d7396bbc803564da1b87e54372ed" + integrity sha512-RAvKNJWEU9eAx/aIWhRqQn78Qlsy8LddkNHYCgwfwwuUp1NgRALKLXbi7AopMyJGDhaFUJhhmfAvYZSSBZcJkg== + dependencies: + "@backstage/cli-common" "^0.2.1" + "@backstage/cli-node" "^0.3.1" + "@backstage/config" "^1.3.7" + "@backstage/config-loader" "^1.10.10" + "@backstage/types" "^1.2.2" + "@manypkg/get-packages" "^1.1.3" + chalk "^4.0.0" + cleye "^2.3.0" json-schema "^0.4.0" - json-schema-merge-allof "^0.8.1" - json-schema-traverse "^1.0.0" - lodash "^4.17.21" - minimist "^1.2.5" - node-fetch "^2.6.7" - typescript-json-schema "^0.63.0" + react-dev-utils "^12.0.0-next.60" yaml "^2.0.0" -"@backstage/config@^1.1.1", "@backstage/config@^1.2.0": - version "1.2.0" - resolved "https://registry.npmmirror.com/@backstage/config/-/config-1.2.0.tgz#6a4d93197d0586ee3a40f9e4877c5cfd76c128f3" - integrity sha512-tW8hNzDTClotYmpOrUrutymzZ0Zimx/WeU2+5tLv+ZI8ssRV64KGRe8hi7PuQz2lARVF1DxjwV//Bq2VjR5veA== +"@backstage/cli-module-github@^0.1.1": + version "0.1.1" + resolved "https://registry.yarnpkg.com/@backstage/cli-module-github/-/cli-module-github-0.1.1.tgz#6ab8c8cda1344fd68efc6323409a8102875226bc" + integrity sha512-gLr6UM9gQp0BFHMPBetEi6Swb04ATs6TUhHjnR0dHMsouZYJhcTWKVwGcXuzcVtAJ17kHYnIXGARiBG9+YHbAw== + dependencies: + "@backstage/cli-common" "^0.2.1" + "@backstage/cli-node" "^0.3.1" + "@octokit/request" "^8.0.0" + chalk "^4.0.0" + cleye "^2.3.0" + express "^4.22.0" + fs-extra "^11.2.0" + inquirer "^8.2.0" + react-dev-utils "^12.0.0-next.60" + yaml "^2.0.0" + +"@backstage/cli-module-info@^0.1.1": + version "0.1.1" + resolved "https://registry.yarnpkg.com/@backstage/cli-module-info/-/cli-module-info-0.1.1.tgz#ca933352ad1c08ac74fd8310842ef6109ef2e159" + integrity sha512-ICpTuWThsf9bnBKieEIqkLWCklPjzz2c7Cz/y7jGexOPDd0MBh0gW9RxjOTQdk5HAg/EiozYnKMcUjq2Z7Wkrg== + dependencies: + "@backstage/cli-common" "^0.2.1" + "@backstage/cli-node" "^0.3.1" + cleye "^2.3.0" + fs-extra "^11.2.0" + minimatch "^10.2.1" + +"@backstage/cli-module-lint@^0.1.1": + version "0.1.1" + resolved "https://registry.yarnpkg.com/@backstage/cli-module-lint/-/cli-module-lint-0.1.1.tgz#2fabcdb8576101efc5c45f30d50f2e008443b8a0" + integrity sha512-T9GaEY3eLb/MyEAlqsu1NOvadZJ4oIOTKhGgA0UFyWmOfhNjTcKokE88O/CoqwOTuzzo0pU6+ByekJXJv11fCg== + dependencies: + "@backstage/cli-common" "^0.2.1" + "@backstage/cli-node" "^0.3.1" + chalk "^4.0.0" + cleye "^2.3.0" + eslint "^8.6.0" + eslint-formatter-friendly "^7.0.0" + fs-extra "^11.2.0" + globby "^11.1.0" + shell-quote "^1.8.1" + +"@backstage/cli-module-maintenance@^0.1.1": + version "0.1.1" + resolved "https://registry.yarnpkg.com/@backstage/cli-module-maintenance/-/cli-module-maintenance-0.1.1.tgz#c812ec36a8214e648356c3ae6db27b7075ad6226" + integrity sha512-UE5qU7JLYzlZ89FN2+5luoNsO+Xwe1AFVjDFgT411Wx939N+W8mN01vP3nJ+ae9rw9aIGPhboEB9Fx3dz56rPA== + dependencies: + "@backstage/cli-common" "^0.2.1" + "@backstage/cli-node" "^0.3.1" + chalk "^4.0.0" + cleye "^2.3.0" + eslint "^8.6.0" + fs-extra "^11.2.0" + +"@backstage/cli-module-migrate@^0.1.1": + version "0.1.1" + resolved "https://registry.yarnpkg.com/@backstage/cli-module-migrate/-/cli-module-migrate-0.1.1.tgz#6a07e1d48ad8b547241ae55d759830135dea6f49" + integrity sha512-i0gWQIBsYd0iMb0oACWLEFoeytK4Uqn0WnuNrnQLwsp8T0nLNuvVLWsjnfCH1Ajlal43p6r+zjw8ZyGw44tUXg== + dependencies: + "@backstage/cli-common" "^0.2.1" + "@backstage/cli-node" "^0.3.1" + "@backstage/errors" "^1.3.0" + "@backstage/release-manifests" "^0.0.13" + "@manypkg/get-packages" "^1.1.3" + chalk "^4.0.0" + cleye "^2.3.0" + fs-extra "^11.2.0" + minimatch "^10.2.1" + ora "^5.3.0" + replace-in-file "^7.1.0" + semver "^7.5.3" + +"@backstage/cli-module-new@^0.1.2": + version "0.1.2" + resolved "https://registry.yarnpkg.com/@backstage/cli-module-new/-/cli-module-new-0.1.2.tgz#e88a55084202caf7ad9dfde61a066d9119abd472" + integrity sha512-zspMn72FesOyBvK6qz38PWm+2Vvi6nG0HoDrB0Sr/sHfpD/ovJEa+YlJcfGRbQGz/YryfoJMeqvJiB2UU40qUg== + dependencies: + "@backstage/cli-common" "^0.2.1" + "@backstage/cli-node" "^0.3.1" + "@backstage/errors" "^1.3.0" + chalk "^4.0.0" + cleye "^2.3.0" + fs-extra "^11.2.0" + handlebars "^4.7.3" + inquirer "^8.2.0" + lodash "^4.17.21" + ora "^5.3.0" + recursive-readdir "^2.2.2" + semver "^7.5.3" + yaml "^2.0.0" + zod "^3.25.76" + zod-validation-error "^4.0.2" + +"@backstage/cli-module-test-jest@^0.1.1": + version "0.1.1" + resolved "https://registry.yarnpkg.com/@backstage/cli-module-test-jest/-/cli-module-test-jest-0.1.1.tgz#72e0cd16157ac02676fa7f836242a763b3fea654" + integrity sha512-4ohoP51bufBOp7W1zL1QPH6pM9a4WSALJc3Fb1P2LRp19KELCXeZ2EkcwMqZRdZGTQtEroFghH6sozJAMNWypQ== + dependencies: + "@backstage/cli-common" "^0.2.1" + "@backstage/cli-node" "^0.3.1" + "@swc/core" "^1.15.6" + "@swc/jest" "^0.2.39" + cleye "^2.3.0" + cross-fetch "^4.0.0" + fs-extra "^11.2.0" + glob "^13.0.0" + jest-css-modules "^2.1.0" + sucrase "^3.20.2" + yargs "^16.2.0" + +"@backstage/cli-module-translations@^0.1.1": + version "0.1.1" + resolved "https://registry.yarnpkg.com/@backstage/cli-module-translations/-/cli-module-translations-0.1.1.tgz#255252fdcfd17c4c6a8d64af369bff339a1d8ceb" + integrity sha512-WV/uxM+oVeZ2ViugdbmzMPR1orbdKMTdmTAeV7+PWGYu+dKCR889Kl9dXX2ZzobasF5hEvbm68bJeI3ijM1fOQ== + dependencies: + "@backstage/cli-common" "^0.2.1" + "@backstage/cli-node" "^0.3.1" + cleye "^2.3.0" + fs-extra "^11.2.0" + ts-morph "^24.0.0" + +"@backstage/cli-node@^0.2.14", "@backstage/cli-node@^0.2.15", "@backstage/cli-node@^0.2.18": + version "0.2.18" + resolved "https://registry.yarnpkg.com/@backstage/cli-node/-/cli-node-0.2.18.tgz#5b932590a6dd3a437b6f203e4ed985d9505a11b0" + integrity sha512-C03YFlfHzobLEWJMA4x0OcZqIfthFMKW//1QuzSIQstr5of558BpK0ZyYlOdYdy+c7H8kjIk4fhc+ev7liqspQ== + dependencies: + "@backstage/cli-common" "^0.1.18" + "@backstage/errors" "^1.2.7" + "@backstage/types" "^1.2.2" + "@manypkg/get-packages" "^1.1.3" + "@yarnpkg/parsers" "^3.0.0" + fs-extra "^11.2.0" + semver "^7.5.3" + zod "^3.25.76" + +"@backstage/cli-node@^0.3.0", "@backstage/cli-node@^0.3.1": + version "0.3.1" + resolved "https://registry.yarnpkg.com/@backstage/cli-node/-/cli-node-0.3.1.tgz#3546bbe86c0cb58757fbb6c22d0a5625c3e54231" + integrity sha512-rZEgs0ZbqyFl+IOFt5t5n8P6cJZ7iMP06Da/oH7DbTPoO8xYKmQMTVR8vDEsDquJ6fnFkHy24twF8z83Eqo7bA== + dependencies: + "@backstage/cli-common" "^0.2.1" + "@backstage/errors" "^1.3.0" + "@backstage/types" "^1.2.2" + "@manypkg/get-packages" "^1.1.3" + "@yarnpkg/lockfile" "^1.1.0" + "@yarnpkg/parsers" "^3.0.0" + chalk "^4.0.0" + commander "^12.0.0" + fs-extra "^11.2.0" + pirates "^4.0.6" + proper-lockfile "^4.1.2" + semver "^7.5.3" + yaml "^2.0.0" + zod "^3.25.76 || ^4.0.0" + optionalDependencies: + keytar "^7.9.0" + +"@backstage/cli@^0.34.6": + version "0.34.6" + resolved "https://registry.yarnpkg.com/@backstage/cli/-/cli-0.34.6.tgz#a62d5708658ed8b835c9b65350e0b1ce1bfadfef" + integrity sha512-nBZJqzMpu5AMbyegIvr7qr+z3DgWjkO0HwhogfZtP3prwTBbpzX8z/lLqmv8SF2ic8dutyzVDvkEwo6e0YyiWg== + dependencies: + "@backstage/catalog-model" "^1.7.6" + "@backstage/cli-common" "^0.1.15" + "@backstage/cli-node" "^0.2.15" + "@backstage/config" "^1.3.6" + "@backstage/config-loader" "^1.10.6" + "@backstage/errors" "^1.2.7" + "@backstage/eslint-plugin" "^0.2.0" + "@backstage/integration" "^1.18.2" + "@backstage/release-manifests" "^0.0.13" + "@backstage/types" "^1.2.2" + "@manypkg/get-packages" "^1.1.3" + "@module-federation/enhanced" "^0.9.0" + "@octokit/request" "^8.0.0" + "@rollup/plugin-commonjs" "^26.0.0" + "@rollup/plugin-json" "^6.0.0" + "@rollup/plugin-node-resolve" "^15.0.0" + "@rollup/plugin-yaml" "^4.0.0" + "@rspack/core" "^1.4.11" + "@rspack/dev-server" "^1.1.4" + "@rspack/plugin-react-refresh" "^1.4.3" + "@spotify/eslint-config-base" "^15.0.0" + "@spotify/eslint-config-react" "^15.0.0" + "@spotify/eslint-config-typescript" "^15.0.0" + "@swc/core" "^1.3.46" + "@swc/helpers" "^0.5.0" + "@swc/jest" "^0.2.22" + "@types/jest" "^29.5.11" + "@types/webpack-env" "^1.15.2" + "@typescript-eslint/eslint-plugin" "^8.17.0" + "@typescript-eslint/parser" "^8.16.0" + "@yarnpkg/lockfile" "^1.1.0" + "@yarnpkg/parsers" "^3.0.0" + bfj "^8.0.0" + buffer "^6.0.3" + chalk "^4.0.0" + chokidar "^3.3.1" + commander "^12.0.0" + cross-fetch "^4.0.0" + cross-spawn "^7.0.3" + css-loader "^6.5.1" + ctrlc-windows "^2.1.0" + esbuild "^0.25.0" + eslint "^8.6.0" + eslint-config-prettier "^9.0.0" + eslint-formatter-friendly "^7.0.0" + eslint-plugin-deprecation "^3.0.0" + eslint-plugin-import "^2.31.0" + eslint-plugin-jest "^28.9.0" + eslint-plugin-jsx-a11y "^6.10.2" + eslint-plugin-react "^7.37.2" + eslint-plugin-react-hooks "^5.0.0" + eslint-plugin-unused-imports "^4.1.4" + eslint-rspack-plugin "^4.2.1" + express "^4.17.1" + fs-extra "^11.2.0" + git-url-parse "^15.0.0" + glob "^7.1.7" + global-agent "^3.0.0" + globby "^11.1.0" + handlebars "^4.7.3" + html-webpack-plugin "^5.6.3" + inquirer "^8.2.0" + jest "^29.7.0" + jest-cli "^29.7.0" + jest-css-modules "^2.1.0" + jest-environment-jsdom "^29.0.2" + jest-runtime "^29.0.2" + json-schema "^0.4.0" + lodash "^4.17.21" + minimatch "^9.0.0" + node-stdlib-browser "^1.3.1" + npm-packlist "^5.0.0" + ora "^5.3.0" + p-queue "^6.6.2" + pirates "^4.0.6" + postcss "^8.1.0" + process "^0.11.10" + raw-loader "^4.0.2" + react-dev-utils "^12.0.0-next.60" + react-refresh "^0.17.0" + recursive-readdir "^2.2.2" + replace-in-file "^7.1.0" + rollup "^4.27.3" + rollup-plugin-dts "^6.1.0" + rollup-plugin-esbuild "^6.1.1" + rollup-plugin-postcss "^4.0.0" + rollup-pluginutils "^2.8.2" + semver "^7.5.3" + style-loader "^3.3.1" + sucrase "^3.20.2" + swc-loader "^0.2.3" + tar "^7.4.3" + ts-checker-rspack-plugin "^1.1.5" + ts-morph "^24.0.0" + undici "^7.2.3" + util "^0.12.3" + yaml "^2.0.0" + yargs "^16.2.0" + yml-loader "^2.1.0" + yn "^4.0.0" + zod "^3.22.4" + zod-validation-error "^3.4.0" + +"@backstage/cli@^0.35.0": + version "0.35.4" + resolved "https://registry.yarnpkg.com/@backstage/cli/-/cli-0.35.4.tgz#45597a524306742e7dd871840c4588a29b5d3f27" + integrity sha512-PcUtErbuH2P+J+QYBkxZMENBzaGU3a+61ubLFB9NdZrIKahu0B9ZuzpytdezEpqa9eOTedD4UB9DkvCYno9wIg== + dependencies: + "@backstage/catalog-model" "^1.7.6" + "@backstage/cli-common" "^0.1.18" + "@backstage/cli-node" "^0.2.18" + "@backstage/config" "^1.3.6" + "@backstage/config-loader" "^1.10.8" + "@backstage/errors" "^1.2.7" + "@backstage/eslint-plugin" "^0.2.1" + "@backstage/integration" "^1.20.0" + "@backstage/module-federation-common" "^0.1.0" + "@backstage/release-manifests" "^0.0.13" + "@backstage/types" "^1.2.2" + "@manypkg/get-packages" "^1.1.3" + "@module-federation/enhanced" "^0.21.6" + "@octokit/request" "^8.0.0" + "@rollup/plugin-commonjs" "^26.0.0" + "@rollup/plugin-json" "^6.0.0" + "@rollup/plugin-node-resolve" "^15.0.0" + "@rollup/plugin-yaml" "^4.0.0" + "@rspack/core" "^1.4.11" + "@rspack/dev-server" "^1.1.4" + "@rspack/plugin-react-refresh" "^1.4.3" + "@spotify/eslint-config-base" "^15.0.0" + "@spotify/eslint-config-react" "^15.0.0" + "@spotify/eslint-config-typescript" "^15.0.0" + "@swc/core" "^1.15.6" + "@swc/helpers" "^0.5.17" + "@swc/jest" "^0.2.39" + "@types/webpack-env" "^1.15.2" + "@typescript-eslint/eslint-plugin" "^8.17.0" + "@typescript-eslint/parser" "^8.16.0" + "@yarnpkg/lockfile" "^1.1.0" + "@yarnpkg/parsers" "^3.0.0" + bfj "^8.0.0" + buffer "^6.0.3" + chalk "^4.0.0" + chokidar "^3.3.1" + commander "^12.0.0" + cross-fetch "^4.0.0" + cross-spawn "^7.0.3" + css-loader "^6.5.1" + ctrlc-windows "^2.1.0" + esbuild "^0.27.0" + eslint "^8.6.0" + eslint-config-prettier "^9.0.0" + eslint-formatter-friendly "^7.0.0" + eslint-plugin-deprecation "^3.0.0" + eslint-plugin-import "^2.31.0" + eslint-plugin-jest "^28.9.0" + eslint-plugin-jsx-a11y "^6.10.2" + eslint-plugin-react "^7.37.2" + eslint-plugin-react-hooks "^5.0.0" + eslint-plugin-unused-imports "^4.1.4" + eslint-rspack-plugin "^4.2.1" + express "^4.22.0" + fs-extra "^11.2.0" + git-url-parse "^15.0.0" + glob "^7.1.7" + global-agent "^3.0.0" + globby "^11.1.0" + handlebars "^4.7.3" + html-webpack-plugin "^5.6.3" + inquirer "^8.2.0" + jest-css-modules "^2.1.0" + json-schema "^0.4.0" + lodash "^4.17.21" + minimatch "^9.0.0" + node-stdlib-browser "^1.3.1" + npm-packlist "^5.0.0" + ora "^5.3.0" + p-queue "^6.6.2" + pirates "^4.0.6" + postcss "^8.1.0" + postcss-import "^16.1.0" + process "^0.11.10" + raw-loader "^4.0.2" + react-dev-utils "^12.0.0-next.60" + react-refresh "^0.17.0" + recursive-readdir "^2.2.2" + replace-in-file "^7.1.0" + rollup "^4.27.3" + rollup-plugin-dts "^6.1.0" + rollup-plugin-esbuild "^6.1.1" + rollup-plugin-postcss "^4.0.0" + rollup-pluginutils "^2.8.2" + semver "^7.5.3" + style-loader "^3.3.1" + sucrase "^3.20.2" + swc-loader "^0.2.3" + tar "^7.5.6" + ts-checker-rspack-plugin "^1.1.5" + ts-morph "^24.0.0" + undici "^7.2.3" + util "^0.12.3" + yaml "^2.0.0" + yargs "^16.2.0" + yml-loader "^2.1.0" + yn "^4.0.0" + zod "^3.25.76" + zod-validation-error "^4.0.2" + +"@backstage/cli@^0.36.0": + version "0.36.1" + resolved "https://registry.yarnpkg.com/@backstage/cli/-/cli-0.36.1.tgz#305b47894df43300c5f5019e44ab99c8fc1e9b47" + integrity sha512-7M9ss4cccqQOF4Xf/IDPj03PnePzQ4QqnSz/E+lpUXS3iJol/Ofdm+nujsvCgqOWTu59CfRTLvX6Hbip+z6S2Q== + dependencies: + "@backstage/cli-common" "^0.2.1" + "@backstage/cli-defaults" "^0.1.1" + "@backstage/cli-module-build" "^0.1.1" + "@backstage/cli-module-test-jest" "^0.1.1" + "@backstage/cli-node" "^0.3.1" + "@backstage/errors" "^1.3.0" + "@backstage/eslint-plugin" "^0.2.3" + "@manypkg/get-packages" "^1.1.3" + "@spotify/eslint-config-base" "^15.0.0" + "@spotify/eslint-config-react" "^15.0.0" + "@spotify/eslint-config-typescript" "^15.0.0" + "@swc/core" "^1.15.6" + "@swc/jest" "^0.2.39" + "@types/webpack-env" "^1.15.2" + "@typescript-eslint/eslint-plugin" "^8.17.0" + "@typescript-eslint/parser" "^8.16.0" + chalk "^4.0.0" + commander "^14.0.3" + cross-fetch "^4.0.0" + eslint "^8.6.0" + eslint-config-prettier "^9.0.0" + eslint-plugin-deprecation "^3.0.0" + eslint-plugin-import "^2.31.0" + eslint-plugin-jest "^28.9.0" + eslint-plugin-jsx-a11y "^6.10.2" + eslint-plugin-react "^7.37.2" + eslint-plugin-react-hooks "^5.0.0" + eslint-plugin-unused-imports "^4.1.4" + fs-extra "^11.2.0" + glob "^13.0.0" + jest-css-modules "^2.1.0" + pirates "^4.0.6" + postcss "^8.1.0" + sucrase "^3.20.2" + yaml "^2.0.0" + +"@backstage/config-loader@^1.10.10", "@backstage/config-loader@^1.10.4", "@backstage/config-loader@^1.10.6", "@backstage/config-loader@^1.10.8", "@backstage/config-loader@^1.10.9", "@backstage/config-loader@^1.9.1": + version "1.10.10" + resolved "https://registry.yarnpkg.com/@backstage/config-loader/-/config-loader-1.10.10.tgz#e052a9d8ad266a75eef2e318056d197ac79b0567" + integrity sha512-ERV8eyPZI+co74By9HNaTsff9WksC4ikF+hKiljkoOyKGl0g4ieCasDH+jkwUONZKGHzgSPavg1zyAxybxTzTQ== + dependencies: + "@backstage/cli-common" "^0.2.1" + "@backstage/config" "^1.3.7" + "@backstage/errors" "^1.3.0" + "@backstage/types" "^1.2.2" + "@types/json-schema" "^7.0.6" + ajv "^8.10.0" + chokidar "^3.5.2" + fs-extra "^11.2.0" + json-schema "^0.4.0" + json-schema-merge-allof "^0.8.1" + json-schema-traverse "^1.0.0" + lodash "^4.17.21" + minimist "^1.2.5" + typescript-json-schema "^0.67.0" + yaml "^2.0.0" + +"@backstage/config@^1.2.0": + version "1.2.0" + resolved "https://registry.npmmirror.com/@backstage/config/-/config-1.2.0.tgz#6a4d93197d0586ee3a40f9e4877c5cfd76c128f3" + integrity sha512-tW8hNzDTClotYmpOrUrutymzZ0Zimx/WeU2+5tLv+ZI8ssRV64KGRe8hi7PuQz2lARVF1DxjwV//Bq2VjR5veA== dependencies: "@backstage/errors" "^1.2.4" "@backstage/types" "^1.1.1" -"@backstage/core-app-api@^1.13.0", "@backstage/core-app-api@^1.14.1": - version "1.14.1" - resolved "https://registry.yarnpkg.com/@backstage/core-app-api/-/core-app-api-1.14.1.tgz#d998ba2b9b2fd80db762a933c5e2d9985c14c1ac" - integrity sha512-I3Hbc36dTjKNL5yhY16yNamv1nFxfzDxd6Y42apDq+IEAueZrodR/+qCeMq2QtcpZ9GOfowKoJhccA8GMUXpQQ== +"@backstage/config@^1.3.2", "@backstage/config@^1.3.4", "@backstage/config@^1.3.5", "@backstage/config@^1.3.6", "@backstage/config@^1.3.7": + version "1.3.7" + resolved "https://registry.yarnpkg.com/@backstage/config/-/config-1.3.7.tgz#7586019f369b9924ccd24e431948283f46afc987" + integrity sha512-vT2PE+R9Yt9i/nwtReKVtvXSB5vEdxwhtwHuIy5+TyDB8i9fBPdBN0pedy+iQsaTCXcDWcq/lLHaJ3t1nKc8MQ== dependencies: - "@backstage/config" "^1.2.0" - "@backstage/core-plugin-api" "^1.9.3" - "@backstage/types" "^1.1.1" - "@backstage/version-bridge" "^1.0.8" + "@backstage/errors" "^1.3.0" + "@backstage/types" "^1.2.2" + ms "^2.1.3" + +"@backstage/core-app-api@^1.19.4", "@backstage/core-app-api@^1.19.6", "@backstage/core-app-api@^1.20.0": + version "1.20.0" + resolved "https://registry.yarnpkg.com/@backstage/core-app-api/-/core-app-api-1.20.0.tgz#8f2ef2126edb66a21a4b9642ce3eab481f0ae7b4" + integrity sha512-fXisRnDJqyfI8poSGJcGUDKYmzqN5I31WNcwzfEFF7QAjyB75XZ2LCiq5v71mxJpoX0YoV+73OKmJfUbGwhgtw== + dependencies: + "@backstage/config" "^1.3.7" + "@backstage/core-plugin-api" "^1.12.5" + "@backstage/types" "^1.2.2" + "@backstage/ui" "^0.14.0" + "@backstage/version-bridge" "^1.0.12" "@types/prop-types" "^15.7.3" - "@types/react" "^16.13.1 || ^17.0.0 || ^18.0.0" history "^5.0.0" i18next "^22.4.15" lodash "^4.17.21" prop-types "^15.7.2" react-use "^17.2.4" zen-observable "^0.10.0" - zod "^3.22.4" + zod "^3.25.76 || ^4.0.0" -"@backstage/core-compat-api@^0.2.7": - version "0.2.7" - resolved "https://registry.yarnpkg.com/@backstage/core-compat-api/-/core-compat-api-0.2.7.tgz#5b58f5984e2d54489dc6389fb48296afc2586149" - integrity sha512-At+mkjrIUrvAPK2bLVtdCFhCGY4VK9i2cKvaOeFRyVJuHU8f7WEKaHjDV8afLVddllUjq6j1uDeFRfiMMPtXqw== - dependencies: - "@backstage/core-plugin-api" "^1.9.3" - "@backstage/frontend-plugin-api" "^0.6.7" - "@backstage/version-bridge" "^1.0.8" - "@types/react" "^16.13.1 || ^17.0.0" - -"@backstage/core-components@^0.13.8": - version "0.13.10" - resolved "https://registry.npmmirror.com/@backstage/core-components/-/core-components-0.13.10.tgz#f423b56c81cade3df20ec5eccb209f0315320290" - integrity sha512-njqtxt0J4eHBcU+tuZgL0yba8Fhie/OtefVwCx5K6+vPWLGQNMnXzJCX7Q/4iLtwBXoMyP+pk3r90sDja3ZV9Q== - dependencies: - "@backstage/config" "^1.1.1" - "@backstage/core-plugin-api" "^1.8.2" - "@backstage/errors" "^1.2.3" - "@backstage/theme" "^0.5.0" - "@backstage/version-bridge" "^1.0.7" - "@date-io/core" "^1.3.13" - "@material-table/core" "^3.1.0" - "@material-ui/core" "^4.12.2" - "@material-ui/icons" "^4.9.1" - "@material-ui/lab" "4.0.0-alpha.61" - "@react-hookz/web" "^23.0.0" - "@types/react" "^16.13.1 || ^17.0.0" - "@types/react-sparklines" "^1.7.0" - "@types/react-text-truncate" "^0.14.0" - ansi-regex "^6.0.1" - classnames "^2.2.6" - d3-selection "^3.0.0" - d3-shape "^3.0.0" - d3-zoom "^3.0.0" - dagre "^0.8.5" - linkify-react "4.1.3" - linkifyjs "4.1.3" +"@backstage/core-compat-api@^0.5.10", "@backstage/core-compat-api@^0.5.3", "@backstage/core-compat-api@^0.5.7", "@backstage/core-compat-api@^0.5.9": + version "0.5.10" + resolved "https://registry.yarnpkg.com/@backstage/core-compat-api/-/core-compat-api-0.5.10.tgz#45f0c6cab83b1156b3e0e23d6c7ff386a47d8209" + integrity sha512-/im5aCaF/UfXuNLioN4VaO8xalgjiYQwu7+8c2llGsXIli/vklZ8f7nuByL0nv44bWrw4Tmr/0GRr9t6Q6xPsA== + dependencies: + "@backstage/core-plugin-api" "^1.12.5" + "@backstage/errors" "^1.3.0" + "@backstage/filter-predicates" "^0.1.2" + "@backstage/frontend-plugin-api" "^0.16.0" + "@backstage/plugin-app-react" "^0.2.2" + "@backstage/plugin-catalog-react" "^2.1.2" + "@backstage/types" "^1.2.2" + "@backstage/version-bridge" "^1.0.12" lodash "^4.17.21" - pluralize "^8.0.0" - qs "^6.9.4" - rc-progress "3.5.1" - react-helmet "6.1.0" - react-hook-form "^7.12.2" - react-idle-timer "5.6.2" - react-markdown "^8.0.0" - react-sparklines "^1.7.0" - react-syntax-highlighter "^15.4.5" - react-text-truncate "^0.19.0" - react-use "^17.3.2" - react-virtualized-auto-sizer "^1.0.11" - react-window "^1.8.6" - remark-gfm "^3.0.1" - zen-observable "^0.10.0" - zod "^3.22.4" - -"@backstage/core-components@^0.14.8", "@backstage/core-components@^0.14.9": - version "0.14.9" - resolved "https://registry.yarnpkg.com/@backstage/core-components/-/core-components-0.14.9.tgz#bb1f40be18d8241b70538383d324aec233586382" - integrity sha512-tcwDUeQBMIKtM+EuLMl6BdwjWdjjTnvvUuQCJISdy5ot+Yp/znQK+d4KIA97wq3Fu/ufy1+tAAwGGaifHMRf1g== - dependencies: - "@backstage/config" "^1.2.0" - "@backstage/core-plugin-api" "^1.9.3" - "@backstage/errors" "^1.2.4" - "@backstage/theme" "^0.5.6" - "@backstage/version-bridge" "^1.0.8" + zod "^3.25.76 || ^4.0.0" + +"@backstage/core-components@^0.18.1", "@backstage/core-components@^0.18.2", "@backstage/core-components@^0.18.6", "@backstage/core-components@^0.18.8", "@backstage/core-components@^0.18.9": + version "0.18.9" + resolved "https://registry.yarnpkg.com/@backstage/core-components/-/core-components-0.18.9.tgz#93f9b13e0c5e95689934efef7b4ea8ec60b73dca" + integrity sha512-ZzmSb5qyNex1DXvgmcU9nLxNdrxNZUafYH3tL9XYGat0fwQxx7tPp4Fla8dAUkJhKWwiVhRmY3WJy1NxSuJGpA== + dependencies: + "@backstage/config" "^1.3.7" + "@backstage/core-plugin-api" "^1.12.5" + "@backstage/errors" "^1.3.0" + "@backstage/theme" "^0.7.3" + "@backstage/version-bridge" "^1.0.12" + "@dagrejs/dagre" "^1.1.4" "@date-io/core" "^1.3.13" "@material-table/core" "^3.1.0" "@material-ui/core" "^4.12.2" "@material-ui/icons" "^4.9.1" "@material-ui/lab" "4.0.0-alpha.61" "@react-hookz/web" "^24.0.0" - "@types/react" "^16.13.1 || ^17.0.0 || ^18.0.0" + "@testing-library/react" "^16.0.0" "@types/react-sparklines" "^1.7.0" ansi-regex "^6.0.1" classnames "^2.2.6" d3-selection "^3.0.0" d3-shape "^3.0.0" d3-zoom "^3.0.0" - dagre "^0.8.5" - linkify-react "4.1.3" - linkifyjs "4.1.3" + js-yaml "^4.1.0" + linkify-react "4.3.2" + linkifyjs "4.3.2" lodash "^4.17.21" + parse5 "^6.0.0" pluralize "^8.0.0" qs "^6.9.4" rc-progress "3.5.1" + react-full-screen "^1.1.1" react-helmet "6.1.0" react-hook-form "^7.12.2" react-idle-timer "5.7.2" @@ -3186,49 +4017,44 @@ react-use "^17.3.2" react-virtualized-auto-sizer "^1.0.11" react-window "^1.8.6" + rehype-raw "^6.0.0" + rehype-sanitize "^5.0.0" remark-gfm "^3.0.1" zen-observable "^0.10.0" - zod "^3.22.4" - -"@backstage/core-plugin-api@^1.8.0", "@backstage/core-plugin-api@^1.8.2", "@backstage/core-plugin-api@^1.9.3": - version "1.9.3" - resolved "https://registry.yarnpkg.com/@backstage/core-plugin-api/-/core-plugin-api-1.9.3.tgz#66b4b7dc620823c66b123c8a2d6db088e2936027" - integrity sha512-MV/RQv8nAPYVkVX926Z+VPW2W4ZzU9VN2s9NhWSWqoYuOzsmA4FgmfNDuwiPEAUKW7AlVCGI4A0deUZ22Orgyw== - dependencies: - "@backstage/config" "^1.2.0" - "@backstage/errors" "^1.2.4" - "@backstage/types" "^1.1.1" - "@backstage/version-bridge" "^1.0.8" - "@types/react" "^16.13.1 || ^17.0.0 || ^18.0.0" + zod "^3.25.76 || ^4.0.0" + +"@backstage/core-plugin-api@^1.11.0", "@backstage/core-plugin-api@^1.11.1", "@backstage/core-plugin-api@^1.12.1", "@backstage/core-plugin-api@^1.12.2", "@backstage/core-plugin-api@^1.12.4", "@backstage/core-plugin-api@^1.12.5": + version "1.12.5" + resolved "https://registry.yarnpkg.com/@backstage/core-plugin-api/-/core-plugin-api-1.12.5.tgz#3900907b4d4bd76a50d92bbbac117e59c0c15e77" + integrity sha512-2SJFXbKXiGd0/hxsL0WoMyccMs26Vm3C91RJTXc0cvaWCcCVpbtNWrd0b8KBE/1RJJoE+FfdsyYXBJScZmCVXg== + dependencies: + "@backstage/config" "^1.3.7" + "@backstage/errors" "^1.3.0" + "@backstage/frontend-plugin-api" "^0.16.0" + "@backstage/types" "^1.2.2" + "@backstage/version-bridge" "^1.0.12" history "^5.0.0" - -"@backstage/dev-utils@^1.0.34": - version "1.0.36" - resolved "https://registry.yarnpkg.com/@backstage/dev-utils/-/dev-utils-1.0.36.tgz#a52b4f54c1eaea42606c58a8e1b66f45deaba041" - integrity sha512-WeD6rBLCwhOm3Mp3trVPNQSEgZ/ci/tFjv7/4r9dXQpM+tStDcv9ElHi0CjMnuGdyg0ZtFe435Rtijwd6+1ntA== - dependencies: - "@backstage/app-defaults" "^1.5.9" - "@backstage/catalog-model" "^1.5.0" - "@backstage/core-app-api" "^1.14.1" - "@backstage/core-components" "^0.14.9" - "@backstage/core-plugin-api" "^1.9.3" - "@backstage/integration-react" "^1.1.29" - "@backstage/plugin-catalog-react" "^1.12.2" - "@backstage/theme" "^0.5.6" + zod "^3.25.76 || ^4.0.0" + +"@backstage/dev-utils@^1.1.21": + version "1.1.22" + resolved "https://registry.yarnpkg.com/@backstage/dev-utils/-/dev-utils-1.1.22.tgz#984d918d10d104392fe5dd7c87851bc21a36dba0" + integrity sha512-+9MOccEpFJnd47AoC/p85xvghsSSBQZfEQMIiE9Api4hm95bWEhEG8jMlYn/mh5Wg3f6i2pdPV/mB08uNIRa9w== + dependencies: + "@backstage/app-defaults" "^1.7.7" + "@backstage/catalog-model" "^1.8.0" + "@backstage/core-app-api" "^1.20.0" + "@backstage/core-components" "^0.18.9" + "@backstage/core-plugin-api" "^1.12.5" + "@backstage/integration-react" "^1.2.17" + "@backstage/plugin-catalog-react" "^2.1.2" + "@backstage/theme" "^0.7.3" + "@backstage/ui" "^0.14.0" "@material-ui/core" "^4.12.2" "@material-ui/icons" "^4.9.1" - "@types/react" "^16.13.1 || ^17.0.0 || ^18.0.0" react-use "^17.2.4" -"@backstage/e2e-test-utils@^0.1.1": - version "0.1.1" - resolved "https://registry.npmmirror.com/@backstage/e2e-test-utils/-/e2e-test-utils-0.1.1.tgz#309164a5006593da711f55f430dc4d11a3036514" - integrity sha512-g5knWOQT/vEv3RwMtN3sCz7m43r+jFoO35y7FBuruhGJfzJY4Q4qK+wSGwJ/hSZ7Uj6WBNRsyw8oauMPKiRA5A== - dependencies: - "@manypkg/get-packages" "^1.1.3" - fs-extra "^11.0.0" - -"@backstage/errors@^1.2.3", "@backstage/errors@^1.2.4": +"@backstage/errors@^1.2.4": version "1.2.4" resolved "https://registry.npmmirror.com/@backstage/errors/-/errors-1.2.4.tgz#2ba79c6308e87b0de99edf499e1c82477d3d6e8a" integrity sha512-JBhKn9KwZTzp/AaOC0vBncKCM1vI9Z8rKKyr9vj3wt3SSgCnDPxNwVz7SlXa2Rc9TOQq0Yk3olkmQE9U+S5uWg== @@ -3236,29 +4062,157 @@ "@backstage/types" "^1.1.1" serialize-error "^8.0.1" -"@backstage/eslint-plugin@^0.1.8": - version "0.1.8" - resolved "https://registry.npmmirror.com/@backstage/eslint-plugin/-/eslint-plugin-0.1.8.tgz#4c554916ae9bdce17ab7082a5c341646f170c9b7" - integrity sha512-pYAGh3LoTlM0JhW+5ujEim+AjGs6xnGJcZAlnQ0jnlqdItSvMklL1mIkpwgY2i9NM6AxYzoYnXF8AQxnz6RSTg== +"@backstage/errors@^1.2.7", "@backstage/errors@^1.3.0": + version "1.3.0" + resolved "https://registry.yarnpkg.com/@backstage/errors/-/errors-1.3.0.tgz#59d2ba252bd8c0fc0774386f53f618d00bc895a1" + integrity sha512-l12MWUDWfoVg0YFjrPbwR7R5OlLSma7n5bQSwmtk5WS6JVQVWhZzMCOvGR6tF8qae/pAjaDGHM5+saTAYAjf/w== + dependencies: + "@backstage/types" "^1.2.2" + serialize-error "^8.0.1" + +"@backstage/eslint-plugin@^0.2.0", "@backstage/eslint-plugin@^0.2.1", "@backstage/eslint-plugin@^0.2.3": + version "0.2.3" + resolved "https://registry.yarnpkg.com/@backstage/eslint-plugin/-/eslint-plugin-0.2.3.tgz#dff8c0bf8cd1a3cf462baecdc4c5c35e15feccac" + integrity sha512-ot5ZG9Lbc6AYwoJm9DinLlJ6SfQ/E0/YLo1Iice2aM85fWLRlSamTmKup1VrHsAHa8wqknp5QuRD/E8nxqveEg== dependencies: "@manypkg/get-packages" "^1.1.3" - minimatch "^9.0.0" + minimatch "^10.2.1" -"@backstage/frontend-plugin-api@^0.6.7": - version "0.6.7" - resolved "https://registry.yarnpkg.com/@backstage/frontend-plugin-api/-/frontend-plugin-api-0.6.7.tgz#73bbc30f6f1b5acc31b9f17fd31d957498f497fb" - integrity sha512-hXXRuo4GxA/XSfQuSYJ/X59ShJKPf9KM76sXnVczsGeSFyORX3SRHKy8An0M3qQ/P9C9Z9LOBc38gghOtrUiGA== +"@backstage/filter-predicates@^0.1.1", "@backstage/filter-predicates@^0.1.2": + version "0.1.2" + resolved "https://registry.yarnpkg.com/@backstage/filter-predicates/-/filter-predicates-0.1.2.tgz#33aec7d94232f4e9955c49f2bbd23a831823c134" + integrity sha512-2+bFlIyUHhtsd3H1K0vKjLgP0ZtlctSCVRuIsDJhH3hgPMW5J2KMqTO8Va8gHfnNjWM4H+ZQtFGCPR19VHlVPA== dependencies: - "@backstage/core-components" "^0.14.9" - "@backstage/core-plugin-api" "^1.9.3" - "@backstage/types" "^1.1.1" - "@backstage/version-bridge" "^1.0.8" + "@backstage/config" "^1.3.7" + "@backstage/errors" "^1.3.0" + "@backstage/types" "^1.2.2" + zod "^3.25.76 || ^4.0.0" + zod-validation-error "^4.0.2" + +"@backstage/frontend-app-api@^0.14.1": + version "0.14.1" + resolved "https://registry.yarnpkg.com/@backstage/frontend-app-api/-/frontend-app-api-0.14.1.tgz#be668ffbaca3ee1530a34b306aedd460e7e28b97" + integrity sha512-d01J9XfhTq1yBWPcUmlr6BfNPv4Ykb9zJFGTfDn3OtnCb06J3o3miENL8+V/CpW7COHa1trfWYvDDCI/7RJYbg== + dependencies: + "@backstage/config" "^1.3.6" + "@backstage/core-app-api" "^1.19.4" + "@backstage/core-plugin-api" "^1.12.2" + "@backstage/errors" "^1.2.7" + "@backstage/frontend-defaults" "^0.3.6" + "@backstage/frontend-plugin-api" "^0.13.4" + "@backstage/types" "^1.2.2" + "@backstage/version-bridge" "^1.0.11" + lodash "^4.17.21" + zod "^3.25.76" + +"@backstage/frontend-app-api@^0.16.2": + version "0.16.2" + resolved "https://registry.yarnpkg.com/@backstage/frontend-app-api/-/frontend-app-api-0.16.2.tgz#9239fb6510c2cd4cfa10e189554a718319cd31b8" + integrity sha512-ldIhomMBbrnLoJhvqVhfOToLy3gjmKb9vKMnyx1px6ZqpYb2PjDSj/24R0dft7obh6/Q/i8Bu2MlyRrAWag6zQ== + dependencies: + "@backstage/config" "^1.3.7" + "@backstage/core-app-api" "^1.20.0" + "@backstage/core-plugin-api" "^1.12.5" + "@backstage/errors" "^1.3.0" + "@backstage/filter-predicates" "^0.1.2" + "@backstage/frontend-defaults" "^0.5.1" + "@backstage/frontend-plugin-api" "^0.16.0" + "@backstage/types" "^1.2.2" + "@backstage/version-bridge" "^1.0.12" + lodash "^4.17.21" + zod "^3.25.76 || ^4.0.0" + +"@backstage/frontend-defaults@^0.3.6": + version "0.3.6" + resolved "https://registry.yarnpkg.com/@backstage/frontend-defaults/-/frontend-defaults-0.3.6.tgz#2c365952e56b9ae1ea4796d38f0924d71f21d113" + integrity sha512-oZjBc/9J2IGuS2smsXvRqR/zzkseUH/zJG9oUK53PW+Oy5fgj0YJbAVRQRnTGlLjNUSO1zwKa1ASwSi+Bnpwmg== + dependencies: + "@backstage/config" "^1.3.6" + "@backstage/core-components" "^0.18.6" + "@backstage/errors" "^1.2.7" + "@backstage/frontend-app-api" "^0.14.1" + "@backstage/frontend-plugin-api" "^0.13.4" + "@backstage/plugin-app" "^0.3.5" + "@react-hookz/web" "^24.0.0" + +"@backstage/frontend-defaults@^0.5.0", "@backstage/frontend-defaults@^0.5.1": + version "0.5.1" + resolved "https://registry.yarnpkg.com/@backstage/frontend-defaults/-/frontend-defaults-0.5.1.tgz#08e4e2444f398d276f64e4cdbd7fd743dae1416e" + integrity sha512-tfriJSVBG52T0u7WFTa9xzq1YDcwuUNGl8ccatpF/A6eiucwWE5ckQN4gZx8kTWfWRc6Nzz9H7WZVjmcW37azg== + dependencies: + "@backstage/config" "^1.3.7" + "@backstage/core-components" "^0.18.9" + "@backstage/errors" "^1.3.0" + "@backstage/frontend-app-api" "^0.16.2" + "@backstage/frontend-plugin-api" "^0.16.0" + "@backstage/plugin-app" "^0.4.3" + "@react-hookz/web" "^24.0.0" + +"@backstage/frontend-plugin-api@^0.12.0", "@backstage/frontend-plugin-api@^0.12.1": + version "0.12.1" + resolved "https://registry.yarnpkg.com/@backstage/frontend-plugin-api/-/frontend-plugin-api-0.12.1.tgz#9e82a626665e5a8c54adb22bb49deea4f702d309" + integrity sha512-BhnQrsr28OsG3sXOWdXFiMpU7IYXPpCqtnxb/d7uCdMzegCLURXPScVcJLE1oVUcIXvId+ODzGjG6Eic5uqtvQ== + dependencies: + "@backstage/core-components" "^0.18.2" + "@backstage/core-plugin-api" "^1.11.1" + "@backstage/types" "^1.2.2" + "@backstage/version-bridge" "^1.0.11" "@material-ui/core" "^4.12.4" - "@types/react" "^16.13.1 || ^17.0.0 || ^18.0.0" lodash "^4.17.21" zod "^3.22.4" zod-to-json-schema "^3.21.4" +"@backstage/frontend-plugin-api@^0.13.3", "@backstage/frontend-plugin-api@^0.13.4": + version "0.13.4" + resolved "https://registry.yarnpkg.com/@backstage/frontend-plugin-api/-/frontend-plugin-api-0.13.4.tgz#8b965a06934539db55dc85de495839883aa5708b" + integrity sha512-IkzS5ltuxj5cl4OG/6FWZmkr7lcA9rZ4j1LaACA8W9//Av7lYVagvyqK2kuQfQmo2burzVTQMj25YV08h+QX7A== + dependencies: + "@backstage/errors" "^1.2.7" + "@backstage/types" "^1.2.2" + "@backstage/version-bridge" "^1.0.11" + zod "^3.25.76" + zod-to-json-schema "^3.25.1" + +"@backstage/frontend-plugin-api@^0.15.0", "@backstage/frontend-plugin-api@^0.15.1": + version "0.15.1" + resolved "https://registry.yarnpkg.com/@backstage/frontend-plugin-api/-/frontend-plugin-api-0.15.1.tgz#fe1768086576565f70ff2f356db7c4cc74bae8c0" + integrity sha512-WaVRhR0c/HIimxtn6s3AIPSLKOEyG9AG2vIndgbgn1hHp6Uonx7Avv+UjuHmZS6CgQiDtaR+yAsmvy0HUWRV0g== + dependencies: + "@backstage/errors" "^1.2.7" + "@backstage/filter-predicates" "^0.1.1" + "@backstage/types" "^1.2.2" + "@backstage/version-bridge" "^1.0.12" + zod "^3.25.76 || ^4.0.0" + zod-to-json-schema "^3.25.1" + +"@backstage/frontend-plugin-api@^0.16.0", "@backstage/frontend-plugin-api@^0.16.2": + version "0.16.2" + resolved "https://registry.yarnpkg.com/@backstage/frontend-plugin-api/-/frontend-plugin-api-0.16.2.tgz#e6cb4bd9c64fcdaf11bcb1fad61f114981880a83" + integrity sha512-G6WYcQZPaO1roK/yMu3WPVT3Z/M3fE/8YsfUV/mP+ouMRZGRanKRfDyiA80MEje3c78KMGqAbrInHiMJ/HN05A== + dependencies: + "@backstage/errors" "^1.3.0" + "@backstage/filter-predicates" "^0.1.2" + "@backstage/types" "^1.2.2" + "@backstage/version-bridge" "^1.0.12" + "@standard-schema/spec" "^1.1.0" + zod "^4.0.0" + zod-to-json-schema "^3.25.1" + +"@backstage/frontend-test-utils@^0.4.5": + version "0.4.5" + resolved "https://registry.yarnpkg.com/@backstage/frontend-test-utils/-/frontend-test-utils-0.4.5.tgz#0c3ed9e4584b1c9d3ea864ad6f64711640eab58b" + integrity sha512-5B9zvB5IiRUr5UaP3To/JQC+AcgLGFiZzaIoy7+sMSvgKWVrlwK7EtVOLB9B4/4peJIPCOMzuXWkUJaP3jSK9A== + dependencies: + "@backstage/config" "^1.3.6" + "@backstage/frontend-app-api" "^0.14.1" + "@backstage/frontend-plugin-api" "^0.13.4" + "@backstage/plugin-app" "^0.3.5" + "@backstage/plugin-app-react" "^0.1.0" + "@backstage/test-utils" "^1.7.14" + "@backstage/types" "^1.2.2" + "@backstage/version-bridge" "^1.0.11" + zod "^3.25.76" + "@backstage/integration-aws-node@^0.1.12": version "0.1.12" resolved "https://registry.npmmirror.com/@backstage/integration-aws-node/-/integration-aws-node-0.1.12.tgz#d2c5ac7c81cd6c2733dcfd24544ad21931ea815d" @@ -3272,75 +4226,111 @@ "@backstage/config" "^1.2.0" "@backstage/errors" "^1.2.4" -"@backstage/integration-react@^1.1.28", "@backstage/integration-react@^1.1.29": - version "1.1.29" - resolved "https://registry.yarnpkg.com/@backstage/integration-react/-/integration-react-1.1.29.tgz#6fe02bc88c64a7584a09b66cc321597e525ef347" - integrity sha512-Dns8BPZkhtEZnM9fhBX/bI2YvjvwZ0W1DIiGQOXOYEDCYy68YFGWD3qn3HEtsRhTSWecX8eUatL+VVLqRIYy9g== +"@backstage/integration-aws-node@^0.1.17", "@backstage/integration-aws-node@^0.1.19", "@backstage/integration-aws-node@^0.1.20", "@backstage/integration-aws-node@^0.1.21": + version "0.1.21" + resolved "https://registry.yarnpkg.com/@backstage/integration-aws-node/-/integration-aws-node-0.1.21.tgz#bef87788291c14a51c02ba7af0b783d1b1e86a90" + integrity sha512-aqeol4gA/NP2uNcPWeBMHl/z2W7b44rUveM365SVMCtVmX7izG1f0AmU5e7RuRQ1784EZuGdy5kZlvp93kaoGA== dependencies: - "@backstage/config" "^1.2.0" - "@backstage/core-plugin-api" "^1.9.3" - "@backstage/integration" "^1.13.0" + "@aws-sdk/client-sts" "^3.350.0" + "@aws-sdk/credential-provider-node" "^3.350.0" + "@aws-sdk/credential-providers" "^3.350.0" + "@aws-sdk/types" "^3.347.0" + "@aws-sdk/util-arn-parser" "^3.310.0" + "@backstage/config" "^1.3.7" + "@backstage/errors" "^1.3.0" + +"@backstage/integration-react@^1.2.14", "@backstage/integration-react@^1.2.16", "@backstage/integration-react@^1.2.17": + version "1.2.17" + resolved "https://registry.yarnpkg.com/@backstage/integration-react/-/integration-react-1.2.17.tgz#a8e304a9768dfe3c328355e5f104ad41cc379c63" + integrity sha512-QOyCGZXz2GUVrZexfxD9R+101VJEVigd9yYxZqnakGOg6PiicJjRW3nA+5gGpSCjSegp+HmO56Vg1WzyRldOvA== + dependencies: + "@backstage/config" "^1.3.7" + "@backstage/core-plugin-api" "^1.12.5" + "@backstage/integration" "^2.0.1" "@material-ui/core" "^4.12.2" "@material-ui/icons" "^4.9.1" - "@types/react" "^16.13.1 || ^17.0.0" -"@backstage/integration@^1.10.0", "@backstage/integration@^1.12.0", "@backstage/integration@^1.13.0": - version "1.13.0" - resolved "https://registry.yarnpkg.com/@backstage/integration/-/integration-1.13.0.tgz#c7f362c802bda8ecda374e9416cf9cb573d5fce1" - integrity sha512-mnzZb0vXQHbFM64HfLrYjnKxhucgkMz+E9ilwXg0XpdK0tlvq2n5RfAFz7BC717BI4l++1epiMFD9hyXAUtxHA== +"@backstage/integration@^1.15.0", "@backstage/integration@^1.18.0", "@backstage/integration@^1.18.2", "@backstage/integration@^1.20.0", "@backstage/integration@^1.20.1": + version "1.20.1" + resolved "https://registry.yarnpkg.com/@backstage/integration/-/integration-1.20.1.tgz#6a3b4eba069734d1abf2f779ce0b6c483051a35b" + integrity sha512-rfYMauJAq0BcEPcAm3em/NJC8Gvu3WzRfbgr3onEdjEc0/hEE2ffXmTcMSZykieltV3IAMHwfF2UBm0eV+hOhQ== + dependencies: + "@azure/identity" "^4.0.0" + "@azure/storage-blob" "^12.5.0" + "@backstage/config" "^1.3.6" + "@backstage/errors" "^1.2.7" + "@octokit/auth-app" "^4.0.0" + "@octokit/rest" "^19.0.3" + cross-fetch "^4.0.0" + git-url-parse "^15.0.0" + lodash "^4.17.21" + luxon "^3.0.0" + +"@backstage/integration@^2.0.0", "@backstage/integration@^2.0.1": + version "2.0.1" + resolved "https://registry.yarnpkg.com/@backstage/integration/-/integration-2.0.1.tgz#6090c4e707891a214455f6e239c981081faf708f" + integrity sha512-0kXwHhD1XnJapZweO0c4wK+VDpmZtml3vn1s43dsyy5emD7vZscuL/GmJjGWuoqVtSoQV66seM8C+pICTNo9Vw== dependencies: "@azure/identity" "^4.0.0" - "@backstage/config" "^1.2.0" - "@backstage/errors" "^1.2.4" + "@azure/storage-blob" "^12.5.0" + "@backstage/config" "^1.3.7" + "@backstage/errors" "^1.3.0" "@octokit/auth-app" "^4.0.0" "@octokit/rest" "^19.0.3" cross-fetch "^4.0.0" - git-url-parse "^14.0.0" + git-url-parse "^15.0.0" lodash "^4.17.21" luxon "^3.0.0" + p-throttle "^4.1.1" -"@backstage/plugin-api-docs@^0.11.6": - version "0.11.7" - resolved "https://registry.yarnpkg.com/@backstage/plugin-api-docs/-/plugin-api-docs-0.11.7.tgz#189edf9de81d5392fa35ffc453a0e35b79a3749b" - integrity sha512-48fOzG6nBTgiCWkjSW/v7hhsaH8KcqT5PZqjiwtrGvoGrtzF9PypHJ0YtfGZD0lTysn6maMzoTK6CgPfaiVsLg== - dependencies: - "@asyncapi/react-component" "1.3.1" - "@backstage/catalog-model" "^1.5.0" - "@backstage/core-compat-api" "^0.2.7" - "@backstage/core-components" "^0.14.9" - "@backstage/core-plugin-api" "^1.9.3" - "@backstage/frontend-plugin-api" "^0.6.7" - "@backstage/plugin-catalog" "^1.21.1" - "@backstage/plugin-catalog-common" "^1.0.25" - "@backstage/plugin-catalog-react" "^1.12.2" - "@backstage/plugin-permission-react" "^0.4.24" - "@graphiql/react" "^0.20.0" +"@backstage/module-federation-common@^0.1.0", "@backstage/module-federation-common@^0.1.3": + version "0.1.3" + resolved "https://registry.yarnpkg.com/@backstage/module-federation-common/-/module-federation-common-0.1.3.tgz#a8d3f513e92a4db3256efd520179212d04940fd5" + integrity sha512-EUvMJ17/fCKtrmhjx9rad11pYAJnAK9SfdOYGCkMs4rhXeKWVuESzFULo1MdFi0MSkGAGOyEPIHScvqTt3juJQ== + dependencies: + "@backstage/config" "^1.3.7" + "@backstage/errors" "^1.3.0" + "@backstage/types" "^1.2.2" + "@module-federation/runtime" "^0.21.6" + +"@backstage/plugin-api-docs@^0.13.5": + version "0.13.5" + resolved "https://registry.yarnpkg.com/@backstage/plugin-api-docs/-/plugin-api-docs-0.13.5.tgz#f364ffb323c113738d6f7d93a746651541177fd8" + integrity sha512-127bpz+yvfBVSCLcujTrM5+2EKWqgiNMLN99PczCdpW9wZgo0RyC7FKB9/EXgWkUzhi4ZAe0ho9TytJoVDzUaQ== + dependencies: + "@asyncapi/react-component" "^2.3.3" + "@backstage/catalog-model" "^1.7.7" + "@backstage/core-components" "^0.18.8" + "@backstage/core-plugin-api" "^1.12.4" + "@backstage/frontend-plugin-api" "^0.15.0" + "@backstage/plugin-catalog" "^2.0.0" + "@backstage/plugin-catalog-common" "^1.1.8" + "@backstage/plugin-catalog-react" "^2.1.0" + "@backstage/plugin-permission-react" "^0.4.41" + "@backstage/ui" "^0.13.0" + "@graphiql/react" "0.29.0" "@material-ui/core" "^4.12.2" "@material-ui/icons" "^4.9.1" "@material-ui/lab" "4.0.0-alpha.61" - "@types/react" "^16.13.1 || ^17.0.0 || ^18.0.0" - graphiql "3.1.1" + "@remixicon/react" "^4.6.0" + graphiql "^3.9.0" graphql "^16.0.0" - graphql-config "^5.0.2" graphql-ws "^5.4.1" - isomorphic-form-data "^2.0.0" - swagger-ui-react "^5.0.0" + swagger-ui-react "^5.27.1" -"@backstage/plugin-app-backend@^0.3.70": - version "0.3.71" - resolved "https://registry.yarnpkg.com/@backstage/plugin-app-backend/-/plugin-app-backend-0.3.71.tgz#f78ab067133bca7fdb8fc3b632a9096a5e6ed3bb" - integrity sha512-lth5qvf5cUpTyDJoSHAR/ZnL8yjx5O818O1DwduIAs8mgG4Z3ZQ+VtMzFXxD4pi0yscbMKbiMJtP8yEFnUKIyQ== - dependencies: - "@backstage/backend-common" "^0.23.3" - "@backstage/backend-plugin-api" "^0.7.0" - "@backstage/config" "^1.2.0" - "@backstage/config-loader" "^1.8.1" - "@backstage/errors" "^1.2.4" - "@backstage/plugin-app-node" "^0.1.22" - "@backstage/plugin-auth-node" "^0.4.17" - "@backstage/types" "^1.1.1" - "@types/express" "^4.17.6" - express "^4.17.1" +"@backstage/plugin-app-backend@^0.5.12": + version "0.5.13" + resolved "https://registry.yarnpkg.com/@backstage/plugin-app-backend/-/plugin-app-backend-0.5.13.tgz#1e0363d98d3a043c62d48d5eb9219909fcda45cf" + integrity sha512-dZZzyMYoyRuE1epYf66wMgrYUiB0W6q/0WYOFzx5KZ8tvWWYnA/DZHExwRtCNJvte3oJLKBFfWuwkgf8ihAWtQ== + dependencies: + "@backstage/backend-plugin-api" "^1.9.0" + "@backstage/config" "^1.3.7" + "@backstage/config-loader" "^1.10.10" + "@backstage/errors" "^1.3.0" + "@backstage/plugin-app-node" "^0.1.44" + "@backstage/plugin-auth-node" "^0.7.0" + "@backstage/types" "^1.2.2" + express "^4.22.0" express-promise-router "^4.1.0" fs-extra "^11.2.0" globby "^11.0.0" @@ -3350,1066 +4340,1071 @@ luxon "^3.0.0" yn "^4.0.0" -"@backstage/plugin-app-node@^0.1.22": - version "0.1.22" - resolved "https://registry.yarnpkg.com/@backstage/plugin-app-node/-/plugin-app-node-0.1.22.tgz#4782cb4d171cd77d1de732d3c0f56a55d8623ebf" - integrity sha512-2WnQ2EPyOoawy0e6oTQ2JLMRdY+nXkyXBTpcxwehyPtMzWy52PceYct9NJgimm6/E+NfTgQqMChOXxS3il8PfQ== +"@backstage/plugin-app-node@^0.1.44": + version "0.1.44" + resolved "https://registry.yarnpkg.com/@backstage/plugin-app-node/-/plugin-app-node-0.1.44.tgz#84391d07a5f7d3ced8e0c207d74b7d99505888a5" + integrity sha512-If2crOPJ2C1AOJZNJ1LzYEpFB0wcaC9rjKB39Cp6PZnjkhvHQjrd1f8EwqJ7RT2eyv94wIAhB2wU2nloNvZDwQ== dependencies: - "@backstage/backend-plugin-api" "^0.7.0" - "@backstage/config-loader" "^1.8.1" + "@backstage/backend-plugin-api" "^1.9.0" + "@backstage/config-loader" "^1.10.10" "@types/express" "^4.17.6" - express "^4.17.1" + express "^4.22.0" fs-extra "^11.2.0" -"@backstage/plugin-auth-backend-module-atlassian-provider@^0.2.3": - version "0.2.3" - resolved "https://registry.yarnpkg.com/@backstage/plugin-auth-backend-module-atlassian-provider/-/plugin-auth-backend-module-atlassian-provider-0.2.3.tgz#9a89d66d567464a868001928b527c7a739c496ad" - integrity sha512-I7FYEsn1+yLQvNYHEkp9Wa6Pl2XnM6xESvBDzTFsHXDwQyQLQ5SkZNdKUONBhyVxT6kxQlJs/RYgeVt/5l6wuw== - dependencies: - "@backstage/backend-plugin-api" "^0.7.0" - "@backstage/plugin-auth-node" "^0.4.17" - express "^4.18.2" - passport "^0.7.0" - passport-atlassian-oauth2 "^2.1.0" - -"@backstage/plugin-auth-backend-module-aws-alb-provider@^0.1.14": - version "0.1.14" - resolved "https://registry.yarnpkg.com/@backstage/plugin-auth-backend-module-aws-alb-provider/-/plugin-auth-backend-module-aws-alb-provider-0.1.14.tgz#039c2ab89b8b3c4a5d9086c188cf3be0910be534" - integrity sha512-EHlgXQpMUweJ0zokuxmc0TBYlaEiTuGuif0wvj9zOJux5CRPrcmEAsxBr9BDNfxMQ+hGSz0Hx4oi/f/HTMXyHA== - dependencies: - "@backstage/backend-common" "^0.23.3" - "@backstage/backend-plugin-api" "^0.7.0" - "@backstage/errors" "^1.2.4" - "@backstage/plugin-auth-backend" "^0.22.9" - "@backstage/plugin-auth-node" "^0.4.17" - jose "^5.0.0" - node-cache "^5.1.2" - node-fetch "^2.6.7" - -"@backstage/plugin-auth-backend-module-azure-easyauth-provider@^0.1.5": - version "0.1.5" - resolved "https://registry.yarnpkg.com/@backstage/plugin-auth-backend-module-azure-easyauth-provider/-/plugin-auth-backend-module-azure-easyauth-provider-0.1.5.tgz#9211f4f9805549ee4c2514efd1a52656f943d0ff" - integrity sha512-0FD7bdiP57UHOgZ+4vaoGQGRp1b5V0z4NzHl78Yv0B1qJ05ap84ZkJsC1AV6QiA9tOP5FESIpcnJLXNDHUDc3Q== - dependencies: - "@backstage/backend-plugin-api" "^0.7.0" - "@backstage/catalog-model" "^1.5.0" - "@backstage/errors" "^1.2.4" - "@backstage/plugin-auth-node" "^0.4.17" - "@types/passport" "^1.0.16" - express "^4.19.2" - jose "^5.0.0" - passport "^0.7.0" - -"@backstage/plugin-auth-backend-module-bitbucket-provider@^0.1.5": - version "0.1.5" - resolved "https://registry.yarnpkg.com/@backstage/plugin-auth-backend-module-bitbucket-provider/-/plugin-auth-backend-module-bitbucket-provider-0.1.5.tgz#f0f1598635ed81134a42d4924aa02d3fe313eb90" - integrity sha512-ClcUWeK4uYzV/c37NOvXmYOuLMiQooEF89bElT23LI30KpIlTsySkniMkEkK0ZFGrQxQxxU6p3d/6SFUzb16NQ== - dependencies: - "@backstage/backend-plugin-api" "^0.7.0" - "@backstage/plugin-auth-node" "^0.4.17" - express "^4.18.2" - passport "^0.7.0" - passport-bitbucket-oauth2 "^0.1.2" - -"@backstage/plugin-auth-backend-module-cloudflare-access-provider@^0.1.5": - version "0.1.5" - resolved "https://registry.yarnpkg.com/@backstage/plugin-auth-backend-module-cloudflare-access-provider/-/plugin-auth-backend-module-cloudflare-access-provider-0.1.5.tgz#96d4df1389eeae7e1df1b3c95178db455b3bcb32" - integrity sha512-84Rx3KKLU5QFvV1Gw5C6VBr8BJVRZq21G4Eg/c71XTJpIEXFJlZQyT4mIDlft/b1kKSo7TmThKKqg6Mf6S9iSw== - dependencies: - "@backstage/backend-plugin-api" "^0.7.0" - "@backstage/config" "^1.2.0" - "@backstage/errors" "^1.2.4" - "@backstage/plugin-auth-node" "^0.4.17" - express "^4.18.2" - jose "^5.0.0" - node-fetch "^2.6.7" - -"@backstage/plugin-auth-backend-module-gcp-iap-provider@^0.2.17": - version "0.2.17" - resolved "https://registry.yarnpkg.com/@backstage/plugin-auth-backend-module-gcp-iap-provider/-/plugin-auth-backend-module-gcp-iap-provider-0.2.17.tgz#082c39f91827acfaa367dcc4e81ec95911c57954" - integrity sha512-0eGyeNFlN2LKdn5MWOGkRVsq5QT8Cgjv9vjii2F6JdHvUJgDOTwItKSDO1QhOEY6t1EZeDhZYytofeRavW+E5w== - dependencies: - "@backstage/backend-plugin-api" "^0.7.0" - "@backstage/errors" "^1.2.4" - "@backstage/plugin-auth-node" "^0.4.17" - "@backstage/types" "^1.1.1" - google-auth-library "^9.0.0" - -"@backstage/plugin-auth-backend-module-github-provider@^0.1.19": - version "0.1.19" - resolved "https://registry.yarnpkg.com/@backstage/plugin-auth-backend-module-github-provider/-/plugin-auth-backend-module-github-provider-0.1.19.tgz#11b3d9b5ae570f586ec217e9b41f51538bca183a" - integrity sha512-1Wls9RwXGb90SN52HJqbODjswfLmLzCdvIU78a7aBOvHjl2oQ1pAlz4tglZEPqKBlUci9Sw0ycVnjMWO5kimMA== +"@backstage/plugin-app-react@^0.1.0": + version "0.1.0" + resolved "https://registry.yarnpkg.com/@backstage/plugin-app-react/-/plugin-app-react-0.1.0.tgz#b420759b5ac92951d47854d182c85bb201e2b5f2" + integrity sha512-9lVx7Gon5uRmIAkdSTNH0TrRdE1qx4UB7KH4uHWt07ARDNWUyXIHe94wcnu5NSlkqqt6VriomYju5cLCG8cKdw== dependencies: - "@backstage/backend-plugin-api" "^0.7.0" - "@backstage/plugin-auth-node" "^0.4.17" - passport-github2 "^0.1.12" + "@backstage/core-plugin-api" "^1.12.1" + "@backstage/frontend-plugin-api" "^0.13.3" + "@material-ui/core" "^4.9.13" -"@backstage/plugin-auth-backend-module-gitlab-provider@^0.1.19": - version "0.1.19" - resolved "https://registry.yarnpkg.com/@backstage/plugin-auth-backend-module-gitlab-provider/-/plugin-auth-backend-module-gitlab-provider-0.1.19.tgz#e8296e566cb4be08529b81156402c90d3c4dc352" - integrity sha512-qzNWNgneZitqYp8X2Bk6L1WYPZrzGeg5yzxm0aB79DZIaALuhqxANEVfUf+fsDj28HnzNVEU1oyoabWcNMhe3g== +"@backstage/plugin-app-react@^0.2.1", "@backstage/plugin-app-react@^0.2.2": + version "0.2.2" + resolved "https://registry.yarnpkg.com/@backstage/plugin-app-react/-/plugin-app-react-0.2.2.tgz#0da44764fd6d7d3cec92ced1373d2d869c8eb1e8" + integrity sha512-Jou3h1FiWyzIBU/868dePVHjTMqxEX4j23C2HsejKaJhsTAjpOZFAhfIm3qBr60SMuiCFnFE6oXOnEb4bCX/zQ== dependencies: - "@backstage/backend-plugin-api" "^0.7.0" - "@backstage/plugin-auth-node" "^0.4.17" - express "^4.18.2" - passport "^0.7.0" - passport-gitlab2 "^5.0.0" + "@backstage/core-plugin-api" "^1.12.5" + "@backstage/frontend-plugin-api" "^0.16.0" + "@material-ui/core" "^4.9.13" -"@backstage/plugin-auth-backend-module-google-provider@^0.1.19": - version "0.1.19" - resolved "https://registry.yarnpkg.com/@backstage/plugin-auth-backend-module-google-provider/-/plugin-auth-backend-module-google-provider-0.1.19.tgz#fd557b396e2d69eb01ecb2f1a722781fcaf153ad" - integrity sha512-yk6QM7bGLZWlps9N9oG1ZESnHS3YKGj0jB08ioluz3n+0ifmIRf6YoZJpTDy+fKzwtJ2KLyJ0qb+LpEdTYdDrw== - dependencies: - "@backstage/backend-plugin-api" "^0.7.0" - "@backstage/plugin-auth-node" "^0.4.17" - google-auth-library "^9.0.0" - passport-google-oauth20 "^2.0.0" +"@backstage/plugin-app@^0.3.5": + version "0.3.5" + resolved "https://registry.yarnpkg.com/@backstage/plugin-app/-/plugin-app-0.3.5.tgz#b43c8d900532dc9a50bab2d47e128b4d643386d8" + integrity sha512-CYrCS1/9u463qU/Nk9TuIc+9mnAb6hcuVQZWqlpwITkm6uh5+oe3h16+KRGrC7JUgsPUtFYtDxNhSNI5taSfXQ== + dependencies: + "@backstage/core-components" "^0.18.6" + "@backstage/core-plugin-api" "^1.12.2" + "@backstage/frontend-plugin-api" "^0.13.4" + "@backstage/integration-react" "^1.2.14" + "@backstage/plugin-app-react" "^0.1.0" + "@backstage/plugin-permission-react" "^0.4.39" + "@backstage/theme" "^0.7.1" + "@backstage/types" "^1.2.2" + "@backstage/version-bridge" "^1.0.11" + "@material-ui/core" "^4.9.13" + "@material-ui/icons" "^4.9.1" + "@material-ui/lab" "^4.0.0-alpha.61" + "@react-hookz/web" "^24.0.0" + react-use "^17.2.4" + zod "^3.25.76" + +"@backstage/plugin-app@^0.4.3": + version "0.4.5" + resolved "https://registry.yarnpkg.com/@backstage/plugin-app/-/plugin-app-0.4.5.tgz#e168bff878796787c4c08152f9ea47aae0eb97c9" + integrity sha512-Y9L1r1HEn9f6oAKMPDZQ373bBWif6UtI3qQgW0C8vzlocwnjT+CsW5cadxl9pZQqOGP2TXhW4l/nFeDOwQy+bw== + dependencies: + "@backstage/core-components" "^0.18.9" + "@backstage/core-plugin-api" "^1.12.5" + "@backstage/filter-predicates" "^0.1.2" + "@backstage/frontend-plugin-api" "^0.16.2" + "@backstage/integration-react" "^1.2.17" + "@backstage/plugin-app-react" "^0.2.2" + "@backstage/plugin-permission-react" "^0.5.0" + "@backstage/theme" "^0.7.3" + "@backstage/types" "^1.2.2" + "@backstage/ui" "^0.14.2" + "@backstage/version-bridge" "^1.0.12" + "@material-ui/core" "^4.9.13" + "@material-ui/icons" "^4.9.1" + "@material-ui/lab" "^4.0.0-alpha.61" + "@react-hookz/web" "^24.0.0" + "@remixicon/react" "^4.6.0" + motion "^12.0.0" + react-aria "~3.48.0" + react-stately "~3.46.0" + react-use "^17.2.4" + zen-observable "^0.10.0" + zod "^4.0.0" -"@backstage/plugin-auth-backend-module-guest-provider@^0.1.7": - version "0.1.8" - resolved "https://registry.yarnpkg.com/@backstage/plugin-auth-backend-module-guest-provider/-/plugin-auth-backend-module-guest-provider-0.1.8.tgz#a7b4ede29778f4eea9029391016ccbff24651b90" - integrity sha512-mNkwovCGROgZJto0WMhJxSqRrvW3BctizNwEtmD+PTnbZ1i81hFyiWOEUF6ui8mdfFxZfA+ULx2tdjDlIcOvMg== +"@backstage/plugin-auth-backend-module-guest-provider@^0.2.17": + version "0.2.18" + resolved "https://registry.yarnpkg.com/@backstage/plugin-auth-backend-module-guest-provider/-/plugin-auth-backend-module-guest-provider-0.2.18.tgz#91ef0a712bfdae9fd2e883d65ef99653ca741bf5" + integrity sha512-nCq2MynGx22JWFcreJ+ZNUfqHfIrFfpav5cpvSQGRKKuWWzmsUwhbUghkroulcgq4MIZtiBhQGHMSnAYU3veCw== dependencies: - "@backstage/backend-common" "^0.23.3" - "@backstage/backend-plugin-api" "^0.7.0" - "@backstage/catalog-model" "^1.5.0" - "@backstage/errors" "^1.2.4" - "@backstage/plugin-auth-node" "^0.4.17" + "@backstage/backend-plugin-api" "^1.9.0" + "@backstage/catalog-model" "^1.8.0" + "@backstage/errors" "^1.3.0" + "@backstage/plugin-auth-node" "^0.7.0" passport-oauth2 "^1.7.0" -"@backstage/plugin-auth-backend-module-microsoft-provider@^0.1.17": - version "0.1.17" - resolved "https://registry.yarnpkg.com/@backstage/plugin-auth-backend-module-microsoft-provider/-/plugin-auth-backend-module-microsoft-provider-0.1.17.tgz#c7906514637d134398e7d738c8da75ee834a5caa" - integrity sha512-0ejMj78R9Bo0UnW306LF36pPpFwOZDZBn6hhg6B+83TsEJb3U+Xa4I+hxGY656m2Xi/yWHphR8k3tikdeiCUsg== - dependencies: - "@backstage/backend-plugin-api" "^0.7.0" - "@backstage/plugin-auth-node" "^0.4.17" - express "^4.18.2" - jose "^5.0.0" - lodash "^4.17.21" - node-fetch "^2.6.7" - passport "^0.7.0" - passport-microsoft "^1.0.0" - -"@backstage/plugin-auth-backend-module-oauth2-provider@^0.2.3": - version "0.2.3" - resolved "https://registry.yarnpkg.com/@backstage/plugin-auth-backend-module-oauth2-provider/-/plugin-auth-backend-module-oauth2-provider-0.2.3.tgz#d4106a93e28b4723f3725fdf9405f765b3c805a7" - integrity sha512-zTa92kTMReWF5E+bWFGICZtsmbdQxusuUgDrX4jrkrw16LXCJHWLzELxqwlCFaev0t59579TZGdXSTaBUGP5Tg== - dependencies: - "@backstage/backend-plugin-api" "^0.7.0" - "@backstage/plugin-auth-node" "^0.4.17" - passport "^0.7.0" - passport-oauth2 "^1.6.1" - -"@backstage/plugin-auth-backend-module-oauth2-proxy-provider@^0.1.15": - version "0.1.15" - resolved "https://registry.yarnpkg.com/@backstage/plugin-auth-backend-module-oauth2-proxy-provider/-/plugin-auth-backend-module-oauth2-proxy-provider-0.1.15.tgz#6059d5217625be5a9076718f75eb674f7c4a7d2e" - integrity sha512-1Qon9Fwadj8R93Gj6qM11ZClLymCZF8BfAtdna8Xz+7/HLBprnKuDqwqAsI8SuF6sOq3coyUWlam6FHseyMuTA== - dependencies: - "@backstage/backend-plugin-api" "^0.7.0" - "@backstage/errors" "^1.2.4" - "@backstage/plugin-auth-node" "^0.4.17" - jose "^5.0.0" - -"@backstage/plugin-auth-backend-module-oidc-provider@^0.2.2", "@backstage/plugin-auth-backend-module-oidc-provider@^0.2.3": - version "0.2.3" - resolved "https://registry.yarnpkg.com/@backstage/plugin-auth-backend-module-oidc-provider/-/plugin-auth-backend-module-oidc-provider-0.2.3.tgz#51378041635876d4e7eedb5a9b101b661e6b015b" - integrity sha512-7DC575QXEXjHUHkkghYOwgrivWcMHApPBgbqCpWqvvytqgSa3+V8MixgfCOgpe7Zw0ewxp1YE14OqVYKOZElBw== - dependencies: - "@backstage/backend-common" "^0.23.3" - "@backstage/backend-plugin-api" "^0.7.0" - "@backstage/plugin-auth-backend" "^0.22.9" - "@backstage/plugin-auth-node" "^0.4.17" - express "^4.18.2" +"@backstage/plugin-auth-backend-module-oidc-provider@^0.4.14": + version "0.4.15" + resolved "https://registry.yarnpkg.com/@backstage/plugin-auth-backend-module-oidc-provider/-/plugin-auth-backend-module-oidc-provider-0.4.15.tgz#5e2f806bdfb769a0cbfb52edd8aeb98bd4684aab" + integrity sha512-4pNRefRKLQKiP9+MJopFMs2auF88W3Puh0nY+lofphMIN6V50yeNnLhZCJYCSdfcwBTODdU7vQvg5htFOIfjbw== + dependencies: + "@backstage/backend-plugin-api" "^1.9.0" + "@backstage/config" "^1.3.7" + "@backstage/plugin-auth-backend" "^0.28.0" + "@backstage/plugin-auth-node" "^0.7.0" + "@backstage/types" "^1.2.2" + express "^4.22.0" openid-client "^5.5.0" passport "^0.7.0" - -"@backstage/plugin-auth-backend-module-okta-provider@^0.0.15": - version "0.0.15" - resolved "https://registry.yarnpkg.com/@backstage/plugin-auth-backend-module-okta-provider/-/plugin-auth-backend-module-okta-provider-0.0.15.tgz#83b5332126ac7d83eaaf07f4f6450d901ed9a986" - integrity sha512-sm0zh6b7z1SE6prqY6maoRc4sQ6mnx5paXlLTzXGy3F/a1tmjT7D+8Ht9Cuc3l4+eWDm/NGOkNORdQ9Gi/19Vw== - dependencies: - "@backstage/backend-plugin-api" "^0.7.0" - "@backstage/plugin-auth-node" "^0.4.17" - "@davidzemon/passport-okta-oauth" "^0.0.5" - express "^4.18.2" - passport "^0.7.0" - -"@backstage/plugin-auth-backend-module-onelogin-provider@^0.1.3": - version "0.1.3" - resolved "https://registry.yarnpkg.com/@backstage/plugin-auth-backend-module-onelogin-provider/-/plugin-auth-backend-module-onelogin-provider-0.1.3.tgz#0b639623b68fba6316ee4d184301c7d424178b3f" - integrity sha512-14qgvlLxtNA3Um7U/7ZOq6rb8lfWRoDsqURvW7eHohuzXCG7VE1atxgjJx6qgny8Ez6lKSv/xwyUGlFOC6MSZA== - dependencies: - "@backstage/backend-plugin-api" "^0.7.0" - "@backstage/plugin-auth-node" "^0.4.17" - express "^4.18.2" + zod "^3.25.76 || ^4.0.0" + +"@backstage/plugin-auth-backend@^0.27.3": + version "0.27.3" + resolved "https://registry.yarnpkg.com/@backstage/plugin-auth-backend/-/plugin-auth-backend-0.27.3.tgz#12339f920272170fb2e38baa0074a17bd24df137" + integrity sha512-eHuM7qtaovZcuq1DfjxVRtT7SIq5O8V12KC4DbcHoN1E2l2rY3X3ThSeVHAW/oC5niQ+hT2xSxwb52tG0FSdzA== + dependencies: + "@backstage/backend-plugin-api" "^1.8.0" + "@backstage/catalog-model" "^1.7.7" + "@backstage/config" "^1.3.6" + "@backstage/errors" "^1.2.7" + "@backstage/plugin-auth-node" "^0.6.14" + "@backstage/plugin-catalog-node" "^2.1.0" + "@backstage/types" "^1.2.2" + "@google-cloud/firestore" "^7.0.0" + connect-session-knex "^4.0.0" + cookie-parser "^1.4.5" + express "^4.22.0" + express-promise-router "^4.1.0" + express-session "^1.17.1" + ipaddr.js "^2.3.0" + jose "^5.0.0" + knex "^3.0.0" + lodash "^4.17.21" + luxon "^3.0.0" + matcher "^4.0.0" + minimatch "^10.2.1" passport "^0.7.0" - passport-onelogin-oauth "^0.0.1" - -"@backstage/plugin-auth-backend@^0.22.8", "@backstage/plugin-auth-backend@^0.22.9": - version "0.22.9" - resolved "https://registry.yarnpkg.com/@backstage/plugin-auth-backend/-/plugin-auth-backend-0.22.9.tgz#aaaf9daf42d388d40a49934237aa983034637255" - integrity sha512-B6qutaoDFn6arzJxpPNfNq/NSGZuIDYm68OJccuU6oChhbVnbqCb5xT3mFGwexHBqbkUe640bSEw/wKUPl7NXw== - dependencies: - "@backstage/backend-common" "^0.23.3" - "@backstage/backend-plugin-api" "^0.7.0" - "@backstage/catalog-client" "^1.6.5" - "@backstage/catalog-model" "^1.5.0" - "@backstage/config" "^1.2.0" - "@backstage/errors" "^1.2.4" - "@backstage/plugin-auth-backend-module-atlassian-provider" "^0.2.3" - "@backstage/plugin-auth-backend-module-aws-alb-provider" "^0.1.14" - "@backstage/plugin-auth-backend-module-azure-easyauth-provider" "^0.1.5" - "@backstage/plugin-auth-backend-module-bitbucket-provider" "^0.1.5" - "@backstage/plugin-auth-backend-module-cloudflare-access-provider" "^0.1.5" - "@backstage/plugin-auth-backend-module-gcp-iap-provider" "^0.2.17" - "@backstage/plugin-auth-backend-module-github-provider" "^0.1.19" - "@backstage/plugin-auth-backend-module-gitlab-provider" "^0.1.19" - "@backstage/plugin-auth-backend-module-google-provider" "^0.1.19" - "@backstage/plugin-auth-backend-module-microsoft-provider" "^0.1.17" - "@backstage/plugin-auth-backend-module-oauth2-provider" "^0.2.3" - "@backstage/plugin-auth-backend-module-oauth2-proxy-provider" "^0.1.15" - "@backstage/plugin-auth-backend-module-oidc-provider" "^0.2.3" - "@backstage/plugin-auth-backend-module-okta-provider" "^0.0.15" - "@backstage/plugin-auth-backend-module-onelogin-provider" "^0.1.3" - "@backstage/plugin-auth-node" "^0.4.17" - "@backstage/plugin-catalog-node" "^1.12.4" - "@backstage/types" "^1.1.1" + uuid "^11.0.0" + zod "^3.25.76 || ^4.0.0" + zod-validation-error "^5.0.0" + +"@backstage/plugin-auth-backend@^0.28.0": + version "0.28.0" + resolved "https://registry.yarnpkg.com/@backstage/plugin-auth-backend/-/plugin-auth-backend-0.28.0.tgz#f6dbf682a27c96dc49aed2e5f099c2a6c55ce172" + integrity sha512-YbG2Jqa2h23Ak9E2TWHvs7OPi70gi/QAGOER5agfQmJP4Z5Md/vllBZFsMw7cc14AwrQGP4O1aYIWzhWFD1Vgg== + dependencies: + "@backstage/backend-plugin-api" "^1.9.0" + "@backstage/catalog-model" "^1.8.0" + "@backstage/config" "^1.3.7" + "@backstage/errors" "^1.3.0" + "@backstage/plugin-auth-node" "^0.7.0" + "@backstage/plugin-catalog-node" "^2.2.0" + "@backstage/types" "^1.2.2" "@google-cloud/firestore" "^7.0.0" - "@node-saml/passport-saml" "^4.0.4" - "@types/express" "^4.17.6" - "@types/passport" "^1.0.3" - compression "^1.7.4" connect-session-knex "^4.0.0" cookie-parser "^1.4.5" - cors "^2.8.5" - express "^4.17.1" + express "^4.22.0" express-promise-router "^4.1.0" express-session "^1.17.1" - fs-extra "^11.2.0" - google-auth-library "^9.0.0" + ipaddr.js "^2.3.0" jose "^5.0.0" knex "^3.0.0" lodash "^4.17.21" luxon "^3.0.0" - minimatch "^9.0.0" - morgan "^1.10.0" - node-cache "^5.1.2" - node-fetch "^2.6.7" - openid-client "^5.2.1" + matcher "^4.0.0" + minimatch "^10.2.1" passport "^0.7.0" - passport-auth0 "^1.4.3" - passport-github2 "^0.1.12" - passport-google-oauth20 "^2.0.0" - passport-microsoft "^1.0.0" - passport-oauth2 "^1.6.1" - passport-onelogin-oauth "^0.0.1" - uuid "^9.0.0" - winston "^3.2.1" - yn "^4.0.0" + uuid "^11.0.0" + zod "^3.25.76 || ^4.0.0" + zod-validation-error "^5.0.0" -"@backstage/plugin-auth-node@^0.4.12", "@backstage/plugin-auth-node@^0.4.16", "@backstage/plugin-auth-node@^0.4.17": - version "0.4.17" - resolved "https://registry.yarnpkg.com/@backstage/plugin-auth-node/-/plugin-auth-node-0.4.17.tgz#1e890a31ba0795b0c51720282fc72c31c5b7cc2a" - integrity sha512-nNZPWPRMCfU0LoxV15bfClPUfZ8XbnKDC4VTMRGyXo37FdRI9uNvrSrZm++e0QKCR/xGfab377SByp/9jITKmQ== - dependencies: - "@backstage/backend-common" "^0.23.3" - "@backstage/backend-plugin-api" "^0.7.0" - "@backstage/catalog-client" "^1.6.5" - "@backstage/catalog-model" "^1.5.0" - "@backstage/config" "^1.2.0" - "@backstage/errors" "^1.2.4" - "@backstage/types" "^1.1.1" - "@types/express" "*" +"@backstage/plugin-auth-node@^0.5.2": + version "0.5.6" + resolved "https://registry.yarnpkg.com/@backstage/plugin-auth-node/-/plugin-auth-node-0.5.6.tgz#1e2a55e95f5cd548e5f522682cd616383fa176cb" + integrity sha512-C3hI7gB0hQwc/NORjZYDB368UTbZe1g2md8LHfTLeIeuyoZyFGAODKZa0XCwLFAX99awttkVeuOjffNLR295Sw== + dependencies: + "@backstage/backend-common" "^0.25.0" + "@backstage/backend-plugin-api" "^1.1.1" + "@backstage/catalog-client" "^1.9.1" + "@backstage/catalog-model" "^1.7.3" + "@backstage/config" "^1.3.2" + "@backstage/errors" "^1.2.7" + "@backstage/types" "^1.2.1" + "@types/express" "^4.17.6" "@types/passport" "^1.0.3" express "^4.17.1" jose "^5.0.0" lodash "^4.17.21" - node-fetch "^2.6.7" passport "^0.7.0" winston "^3.2.1" zod "^3.22.4" zod-to-json-schema "^3.21.4" + zod-validation-error "^3.4.0" + +"@backstage/plugin-auth-node@^0.6.14", "@backstage/plugin-auth-node@^0.6.7", "@backstage/plugin-auth-node@^0.6.9": + version "0.6.14" + resolved "https://registry.yarnpkg.com/@backstage/plugin-auth-node/-/plugin-auth-node-0.6.14.tgz#c8dcfb925d52be518fd5c1d375b612815977f652" + integrity sha512-kgUJ5yEJpE5M5KfMu424qPgqbvBbXzQtwid9mJBTl1U5SMAnUBWV5SgdK9erdFyYT+aWaTJPy2W2Lw1ttyR8Qg== + dependencies: + "@backstage/backend-plugin-api" "^1.8.0" + "@backstage/catalog-client" "^1.14.0" + "@backstage/catalog-model" "^1.7.7" + "@backstage/config" "^1.3.6" + "@backstage/errors" "^1.2.7" + "@backstage/types" "^1.2.2" + "@types/express" "^4.17.6" + "@types/passport" "^1.0.3" + express "^4.22.0" + jose "^5.0.0" + lodash "^4.17.21" + passport "^0.7.0" + zod "^3.25.76 || ^4.0.0" + zod-to-json-schema "^3.25.1" + zod-validation-error "^4.0.2" -"@backstage/plugin-auth-react@^0.1.4": - version "0.1.4" - resolved "https://registry.yarnpkg.com/@backstage/plugin-auth-react/-/plugin-auth-react-0.1.4.tgz#891cff224d05fdc6d223e1102b845bccf59a99a6" - integrity sha512-Mpyp+gYNGTNC41LPA8w6iVnfKDWCUWdrOB9e249q8Uw1FfREwbBoZNRnxgMOgscwyBvG1feaPfvuN/loXMQjvg== - dependencies: - "@backstage/core-components" "^0.14.9" - "@backstage/core-plugin-api" "^1.9.3" - "@backstage/errors" "^1.2.4" +"@backstage/plugin-auth-node@^0.7.0": + version "0.7.0" + resolved "https://registry.yarnpkg.com/@backstage/plugin-auth-node/-/plugin-auth-node-0.7.0.tgz#2c3d8c0c33dc4b9d311a863d8b710d9864a5e00f" + integrity sha512-LYbS07GaWhHvfh/dq3OPDYZrHeyxCex1g86uHPPx9S2R1ZstRab1YEb3SiJYharhm6BnwUQ+83RbQVhlRAaPbA== + dependencies: + "@backstage/backend-plugin-api" "^1.9.0" + "@backstage/catalog-client" "^1.15.0" + "@backstage/catalog-model" "^1.8.0" + "@backstage/config" "^1.3.7" + "@backstage/errors" "^1.3.0" + "@backstage/types" "^1.2.2" + "@types/express" "^4.17.6" + "@types/passport" "^1.0.3" + express "^4.22.0" + jose "^5.0.0" + lodash "^4.17.21" + passport "^0.7.0" + zod "^3.25.76 || ^4.0.0" + zod-to-json-schema "^3.25.1" + zod-validation-error "^4.0.2" + +"@backstage/plugin-auth-react@^0.1.26": + version "0.1.26" + resolved "https://registry.yarnpkg.com/@backstage/plugin-auth-react/-/plugin-auth-react-0.1.26.tgz#f48ad08135b0eee196730c11475cb63fe0971a82" + integrity sha512-ds+FRpp08IwMABWR2hrj5AUqyEpDByeooVTf39v4UukSAG9P6slBrLj75vetLTAUxtjXYAbRyjdliJr/RkvRmQ== + dependencies: + "@backstage/core-components" "^0.18.9" + "@backstage/core-plugin-api" "^1.12.5" + "@backstage/errors" "^1.3.0" "@material-ui/core" "^4.9.13" "@react-hookz/web" "^24.0.0" - "@types/react" "^16.13.1 || ^17.0.0 || ^18.0.0" -"@backstage/plugin-bitbucket-cloud-common@^0.2.21": - version "0.2.21" - resolved "https://registry.yarnpkg.com/@backstage/plugin-bitbucket-cloud-common/-/plugin-bitbucket-cloud-common-0.2.21.tgz#56fd47171fc45b90c5b828967aaf101cca7d3c22" - integrity sha512-f2r/VF1S3LyhCiWd0gp34PiopRk8siznDYochxk/4Q8CTZlBSpFHU8lWCEWK0O+XH/sIVumlCHsuca4KjqMndA== +"@backstage/plugin-catalog-backend-module-gitlab@^0.8.0": + version "0.8.2" + resolved "https://registry.yarnpkg.com/@backstage/plugin-catalog-backend-module-gitlab/-/plugin-catalog-backend-module-gitlab-0.8.2.tgz#96b0413caa719b4775c562bb31e9bf27b937f65d" + integrity sha512-OoAxFb3dcSw4PHZblJ+3+u8F37CA+yMT+msBhtCWUmtNFBP5YHoCluC2qu/ZwOmGoMIh0YjswZqSUZvU6pjPbw== + dependencies: + "@backstage/backend-defaults" "^0.17.0" + "@backstage/backend-plugin-api" "^1.9.0" + "@backstage/catalog-model" "^1.8.0" + "@backstage/config" "^1.3.7" + "@backstage/errors" "^1.3.0" + "@backstage/integration" "^2.0.1" + "@backstage/plugin-catalog-common" "^1.1.9" + "@backstage/plugin-catalog-node" "^2.2.0" + "@backstage/plugin-events-node" "^0.4.21" + "@gitbeaker/rest" "^40.0.3" + lodash "^4.17.21" + node-fetch "^2.7.0" + uuid "^11.0.0" + +"@backstage/plugin-catalog-backend-module-scaffolder-entity-model@^0.2.18": + version "0.2.19" + resolved "https://registry.yarnpkg.com/@backstage/plugin-catalog-backend-module-scaffolder-entity-model/-/plugin-catalog-backend-module-scaffolder-entity-model-0.2.19.tgz#d133c9076ea84637e894175a168ca79b1f38b971" + integrity sha512-60Vk3sDl7SeiHDUdvCTeY1ZPzZz31OTDyxiZuSe2FHNaVCZN156LGKmd8K9nUNLJmdKUD8tSlMxqvwIyt3CEgA== dependencies: - "@backstage/integration" "^1.13.0" - cross-fetch "^4.0.0" + "@backstage/backend-plugin-api" "^1.9.0" + "@backstage/catalog-model" "^1.8.0" + "@backstage/plugin-catalog-common" "^1.1.9" + "@backstage/plugin-catalog-node" "^2.2.0" + "@backstage/plugin-scaffolder-common" "^2.1.0" -"@backstage/plugin-catalog-backend-module-scaffolder-entity-model@^0.1.19", "@backstage/plugin-catalog-backend-module-scaffolder-entity-model@^0.1.20": - version "0.1.20" - resolved "https://registry.yarnpkg.com/@backstage/plugin-catalog-backend-module-scaffolder-entity-model/-/plugin-catalog-backend-module-scaffolder-entity-model-0.1.20.tgz#c8059bdcf306b4e8fb883ac019f34b14d6dfbd07" - integrity sha512-MML2lV0ejmA611BcDZMgtQy+KbtypaksUzlHLzVjgQJO/xabozoub/DR510rh241kTXLRZZ5wSjnBaxYXlLnxw== - dependencies: - "@backstage/backend-plugin-api" "^0.7.0" - "@backstage/catalog-model" "^1.5.0" - "@backstage/plugin-catalog-common" "^1.0.25" - "@backstage/plugin-catalog-node" "^1.12.4" - "@backstage/plugin-scaffolder-common" "^1.5.4" - -"@backstage/plugin-catalog-backend@^1.23.2": - version "1.24.0" - resolved "https://registry.yarnpkg.com/@backstage/plugin-catalog-backend/-/plugin-catalog-backend-1.24.0.tgz#50aeeac3e997edfc37cd9d8008fd6b7bf6400190" - integrity sha512-ioKDnGXByKlJOQ68Tqt9wol+xZTibPdRwbMLi32o8MKTyb2I/ySfNfO87cAI/DSdz9o/MF3NdH2uZkM4pOKtpw== - dependencies: - "@backstage/backend-common" "^0.23.3" - "@backstage/backend-openapi-utils" "^0.1.15" - "@backstage/backend-plugin-api" "^0.7.0" - "@backstage/backend-tasks" "^0.5.27" - "@backstage/catalog-client" "^1.6.5" - "@backstage/catalog-model" "^1.5.0" - "@backstage/config" "^1.2.0" - "@backstage/errors" "^1.2.4" - "@backstage/integration" "^1.13.0" - "@backstage/plugin-catalog-common" "^1.0.25" - "@backstage/plugin-catalog-node" "^1.12.4" - "@backstage/plugin-events-node" "^0.3.8" - "@backstage/plugin-permission-common" "^0.8.0" - "@backstage/plugin-permission-node" "^0.8.0" - "@backstage/plugin-search-backend-module-catalog" "^0.1.28" - "@backstage/types" "^1.1.1" - "@opentelemetry/api" "^1.3.0" - "@types/express" "^4.17.6" +"@backstage/plugin-catalog-backend@^3.5.0": + version "3.6.1" + resolved "https://registry.yarnpkg.com/@backstage/plugin-catalog-backend/-/plugin-catalog-backend-3.6.1.tgz#7e7731e9ad7e4f31eec49444ab124dbd57573356" + integrity sha512-QFQCs5u4/fs7/a3AITRacLLZQ0B2iYFYeFNVL0+ZIL7Spilg2z1b58xdQ2SHcLYFLgJCTsMXcKZJa52P3sSX2w== + dependencies: + "@backstage/backend-openapi-utils" "^0.6.8" + "@backstage/backend-plugin-api" "^1.9.0" + "@backstage/catalog-client" "^1.15.0" + "@backstage/catalog-model" "^1.8.0" + "@backstage/config" "^1.3.7" + "@backstage/errors" "^1.3.0" + "@backstage/filter-predicates" "^0.1.2" + "@backstage/integration" "^2.0.1" + "@backstage/plugin-catalog-common" "^1.1.9" + "@backstage/plugin-catalog-node" "^2.2.0" + "@backstage/plugin-events-node" "^0.4.21" + "@backstage/plugin-permission-common" "^0.9.8" + "@backstage/plugin-permission-node" "^0.10.12" + "@backstage/types" "^1.2.2" + "@opentelemetry/api" "^1.9.0" + ajv "^8.10.0" + ajv-errors "^3.0.0" codeowners-utils "^1.0.2" core-js "^3.6.5" - express "^4.17.1" + express "^4.22.0" fast-json-stable-stringify "^2.1.0" fs-extra "^11.2.0" - git-url-parse "^14.0.0" - glob "^7.1.6" + git-url-parse "^15.0.0" + glob "^13.0.0" knex "^3.0.0" lodash "^4.17.21" luxon "^3.0.0" - minimatch "^9.0.0" - node-fetch "^2.6.7" + minimatch "^10.2.1" p-limit "^3.0.2" prom-client "^15.0.0" - uuid "^9.0.0" + uuid "^11.0.0" yaml "^2.0.0" yn "^4.0.0" - zod "^3.22.4" + zod "^3.25.76 || ^4.0.0" + zod-validation-error "^4.0.2" -"@backstage/plugin-catalog-common@^1.0.24", "@backstage/plugin-catalog-common@^1.0.25": - version "1.0.25" - resolved "https://registry.yarnpkg.com/@backstage/plugin-catalog-common/-/plugin-catalog-common-1.0.25.tgz#48f15c7887f72756f26a0ae13850e2e564187ec8" - integrity sha512-q9TyM0Lh/4T+B7kHdnOALtGVPD93pqGaShiAYOH+9UzTh0CceUHOSkE1QtQq6RrRS5Wqq9YD+ZXkEo+TwMuV+w== - dependencies: - "@backstage/catalog-model" "^1.5.0" - "@backstage/plugin-permission-common" "^0.8.0" - "@backstage/plugin-search-common" "^1.2.13" - -"@backstage/plugin-catalog-graph@^0.4.6": - version "0.4.7" - resolved "https://registry.yarnpkg.com/@backstage/plugin-catalog-graph/-/plugin-catalog-graph-0.4.7.tgz#58b9dcb956b638d76d75b14f8691e3dce149fec5" - integrity sha512-hECrFkTgi1x4Y5picTzBTLbPwWi8Dr4LB6SjHZBXjpY1ZLSXC2R62PmfdnouDjK0+mqKXR1uF21scKTBf/mq2Q== - dependencies: - "@backstage/catalog-client" "^1.6.5" - "@backstage/catalog-model" "^1.5.0" - "@backstage/core-compat-api" "^0.2.7" - "@backstage/core-components" "^0.14.9" - "@backstage/core-plugin-api" "^1.9.3" - "@backstage/frontend-plugin-api" "^0.6.7" - "@backstage/plugin-catalog-react" "^1.12.2" - "@backstage/types" "^1.1.1" +"@backstage/plugin-catalog-common@^1.1.7", "@backstage/plugin-catalog-common@^1.1.8", "@backstage/plugin-catalog-common@^1.1.9": + version "1.1.9" + resolved "https://registry.yarnpkg.com/@backstage/plugin-catalog-common/-/plugin-catalog-common-1.1.9.tgz#45d623b9debbfc03d77a0c53043d8ae02c80a2b0" + integrity sha512-HH4bDBHE5vjfWPXa0PBiwNq7kAlVebsWrgQaoPMsJ/M2UdgHEwX+PxBVa/D8Bf2NkPV2IYQlRorZIjzpFLXFkg== + dependencies: + "@backstage/catalog-model" "^1.8.0" + "@backstage/plugin-permission-common" "^0.9.8" + "@backstage/plugin-search-common" "^1.2.23" + +"@backstage/plugin-catalog-graph@^0.6.0": + version "0.6.3" + resolved "https://registry.yarnpkg.com/@backstage/plugin-catalog-graph/-/plugin-catalog-graph-0.6.3.tgz#7151ce011b3ebde49d0def0a9cbb21c534aa7468" + integrity sha512-kcJRk+vqSs32UMyD1g8WhUog8YWrV/JA/2jgTR8lwKltUx1TD+NLYYEJtvii6bwAe5nZqRykYDWWlmOSrzSL/Q== + dependencies: + "@backstage/catalog-client" "^1.15.0" + "@backstage/catalog-model" "^1.8.0" + "@backstage/core-components" "^0.18.9" + "@backstage/core-plugin-api" "^1.12.5" + "@backstage/frontend-plugin-api" "^0.16.2" + "@backstage/plugin-catalog-react" "^2.1.4" + "@backstage/types" "^1.2.2" + "@backstage/ui" "^0.14.2" "@material-ui/core" "^4.12.2" "@material-ui/icons" "^4.9.1" "@material-ui/lab" "4.0.0-alpha.61" - "@types/react" "^16.13.1 || ^17.0.0 || ^18.0.0" + "@remixicon/react" "^4.6.0" classnames "^2.3.1" lodash "^4.17.15" p-limit "^3.1.0" qs "^6.9.4" react-use "^17.2.4" - -"@backstage/plugin-catalog-import@^0.12.0": - version "0.12.1" - resolved "https://registry.yarnpkg.com/@backstage/plugin-catalog-import/-/plugin-catalog-import-0.12.1.tgz#6f80fb1a7ca95a2b34f31da73396d5bef725324b" - integrity sha512-tflt2eNh1GCKPISGrB+Qz3yPKkxb1ETno5/3aK/yPn7R3g/xV9ZLHzpRBcFMwEgw8B5ZT25B4tUasOZljnbKQQ== - dependencies: - "@backstage/catalog-client" "^1.6.5" - "@backstage/catalog-model" "^1.5.0" - "@backstage/config" "^1.2.0" - "@backstage/core-compat-api" "^0.2.7" - "@backstage/core-components" "^0.14.9" - "@backstage/core-plugin-api" "^1.9.3" - "@backstage/errors" "^1.2.4" - "@backstage/frontend-plugin-api" "^0.6.7" - "@backstage/integration" "^1.13.0" - "@backstage/integration-react" "^1.1.29" - "@backstage/plugin-catalog-common" "^1.0.25" - "@backstage/plugin-catalog-react" "^1.12.2" + zod "^4.0.0" + +"@backstage/plugin-catalog-import@^0.13.11", "@backstage/plugin-catalog-import@^0.13.7": + version "0.13.12" + resolved "https://registry.yarnpkg.com/@backstage/plugin-catalog-import/-/plugin-catalog-import-0.13.12.tgz#36a99fad68ff6030f83eb38d817ec47c8c188982" + integrity sha512-nSVe/fEwctO8fgIvIILgR+zIMKnO6V6WL3rG0Op6aAPGIUjoNYs5TH8WWOqvtK+mAnaSccXcXmNeEhuCZwGWuw== + dependencies: + "@backstage/catalog-client" "^1.15.0" + "@backstage/catalog-model" "^1.8.0" + "@backstage/config" "^1.3.7" + "@backstage/core-components" "^0.18.9" + "@backstage/core-plugin-api" "^1.12.5" + "@backstage/errors" "^1.3.0" + "@backstage/frontend-plugin-api" "^0.16.0" + "@backstage/integration" "^2.0.1" + "@backstage/integration-react" "^1.2.17" + "@backstage/plugin-catalog-common" "^1.1.9" + "@backstage/plugin-catalog-react" "^2.1.2" + "@backstage/plugin-permission-react" "^0.5.0" "@material-ui/core" "^4.12.2" "@material-ui/icons" "^4.9.1" "@material-ui/lab" "4.0.0-alpha.61" "@octokit/rest" "^19.0.3" - "@types/react" "^16.13.1 || ^17.0.0 || ^18.0.0" - git-url-parse "^14.0.0" + "@remixicon/react" "^4.6.0" + git-url-parse "^15.0.0" js-base64 "^3.6.0" lodash "^4.17.21" react-hook-form "^7.12.2" react-use "^17.2.4" yaml "^2.0.0" -"@backstage/plugin-catalog-node@^1.12.4": - version "1.12.4" - resolved "https://registry.yarnpkg.com/@backstage/plugin-catalog-node/-/plugin-catalog-node-1.12.4.tgz#ccc576cbd074a7549400b0918a258828d3d41742" - integrity sha512-kn25UgKQetcpiZikyFIOO9MxAVRS2d1JKJunbaXjY3ve0aoDU3/nBWZUCm/Z2tvYwHizgKOp4hE0mFcUyscEzw== - dependencies: - "@backstage/backend-plugin-api" "^0.7.0" - "@backstage/catalog-client" "^1.6.5" - "@backstage/catalog-model" "^1.5.0" - "@backstage/errors" "^1.2.4" - "@backstage/plugin-catalog-common" "^1.0.25" - "@backstage/plugin-permission-common" "^0.8.0" - "@backstage/plugin-permission-node" "^0.8.0" - "@backstage/types" "^1.1.1" +"@backstage/plugin-catalog-node@^1.20.0": + version "1.20.1" + resolved "https://registry.yarnpkg.com/@backstage/plugin-catalog-node/-/plugin-catalog-node-1.20.1.tgz#d3a037fa3469947c9db88ab108ea1cacfd88d788" + integrity sha512-EkIk1mzHL3ffOgWXN1qC7gRxbraEQalAbsYzDaa57FdGM+Dabagdx18kC0L00AkGdUxzQk1GTL7bTo8Vptua3A== + dependencies: + "@backstage/backend-plugin-api" "^1.6.0" + "@backstage/catalog-client" "^1.12.1" + "@backstage/catalog-model" "^1.7.6" + "@backstage/errors" "^1.2.7" + "@backstage/plugin-catalog-common" "^1.1.7" + "@backstage/plugin-permission-common" "^0.9.3" + "@backstage/plugin-permission-node" "^0.10.7" + "@backstage/types" "^1.2.2" + lodash "^4.17.21" + yaml "^2.0.0" -"@backstage/plugin-catalog-react@^1.12.1", "@backstage/plugin-catalog-react@^1.12.2", "@backstage/plugin-catalog-react@^1.9.1": - version "1.12.2" - resolved "https://registry.yarnpkg.com/@backstage/plugin-catalog-react/-/plugin-catalog-react-1.12.2.tgz#0ec2c3fbe6a5970e498167e06fa55ddf83a2d939" - integrity sha512-YZ5Xec+wCR21lfnpUEtUIRnFGbGnpcqwzmXxcnF+n/sZydcgfig4d/N0gq2OuuTQnoX5O9NAhy+v5VdRzHNs5g== - dependencies: - "@backstage/catalog-client" "^1.6.5" - "@backstage/catalog-model" "^1.5.0" - "@backstage/core-components" "^0.14.9" - "@backstage/core-plugin-api" "^1.9.3" - "@backstage/errors" "^1.2.4" - "@backstage/frontend-plugin-api" "^0.6.7" - "@backstage/integration-react" "^1.1.29" - "@backstage/plugin-catalog-common" "^1.0.25" - "@backstage/plugin-permission-common" "^0.8.0" - "@backstage/plugin-permission-react" "^0.4.24" - "@backstage/types" "^1.1.1" - "@backstage/version-bridge" "^1.0.8" +"@backstage/plugin-catalog-node@^2.1.0", "@backstage/plugin-catalog-node@^2.2.0": + version "2.2.0" + resolved "https://registry.yarnpkg.com/@backstage/plugin-catalog-node/-/plugin-catalog-node-2.2.0.tgz#f0ce5c67338ce5b799b9d29bbbc19b3b9cbec42a" + integrity sha512-ovz1L4A5YWB/MdPi46E6fN5La5McbhAWHRk083ROJW7AO18hVxcCS3ZgjjRtnk6vROAtXC14jgBYbWqNQbmnHg== + dependencies: + "@backstage/backend-plugin-api" "^1.9.0" + "@backstage/catalog-client" "^1.15.0" + "@backstage/catalog-model" "^1.8.0" + "@backstage/errors" "^1.3.0" + "@backstage/plugin-catalog-common" "^1.1.9" + "@backstage/plugin-permission-common" "^0.9.8" + "@backstage/plugin-permission-node" "^0.10.12" + "@backstage/types" "^1.2.2" + "@opentelemetry/api" "^1.9.0" + lodash "^4.17.21" + yaml "^2.0.0" + +"@backstage/plugin-catalog-react@^1.21.1", "@backstage/plugin-catalog-react@^1.21.2": + version "1.21.6" + resolved "https://registry.yarnpkg.com/@backstage/plugin-catalog-react/-/plugin-catalog-react-1.21.6.tgz#bd9cf0816d8c3596acdea0a67a190a1af4675895" + integrity sha512-miWlG4f+7PUiSB3FDL66ss3k92VAMIBlxbGjXziSVdqcf4bYuG+9hqOkXvetFkrInMe65gX7tNb9YL5dThTw3A== + dependencies: + "@backstage/catalog-client" "^1.12.1" + "@backstage/catalog-model" "^1.7.6" + "@backstage/core-compat-api" "^0.5.7" + "@backstage/core-components" "^0.18.6" + "@backstage/core-plugin-api" "^1.12.2" + "@backstage/errors" "^1.2.7" + "@backstage/frontend-plugin-api" "^0.13.4" + "@backstage/frontend-test-utils" "^0.4.5" + "@backstage/integration-react" "^1.2.14" + "@backstage/plugin-catalog-common" "^1.1.7" + "@backstage/plugin-permission-common" "^0.9.5" + "@backstage/plugin-permission-react" "^0.4.39" + "@backstage/types" "^1.2.2" + "@backstage/version-bridge" "^1.0.11" "@material-ui/core" "^4.12.2" "@material-ui/icons" "^4.9.1" "@material-ui/lab" "4.0.0-alpha.61" "@react-hookz/web" "^24.0.0" - "@types/react" "^16.13.1 || ^17.0.0 || ^18.0.0" classnames "^2.2.6" lodash "^4.17.21" - material-ui-popup-state "^1.9.3" + material-ui-popup-state "^5.3.6" qs "^6.9.4" react-use "^17.2.4" yaml "^2.0.0" zen-observable "^0.10.0" -"@backstage/plugin-catalog@^1.21.0", "@backstage/plugin-catalog@^1.21.1": - version "1.21.1" - resolved "https://registry.yarnpkg.com/@backstage/plugin-catalog/-/plugin-catalog-1.21.1.tgz#5e686811ef61ba67d90b2ea85ceaaded3faaf79d" - integrity sha512-B9Xdn0H8Uu6gkHNdjunD7XEmwN3OdSJvv9abeBsIItDfgk2cZvVlFhT8+7Xnqj+pRgLc3ppGGaLmz7cD2RN3Yw== - dependencies: - "@backstage/catalog-client" "^1.6.5" - "@backstage/catalog-model" "^1.5.0" - "@backstage/core-compat-api" "^0.2.7" - "@backstage/core-components" "^0.14.9" - "@backstage/core-plugin-api" "^1.9.3" - "@backstage/errors" "^1.2.4" - "@backstage/frontend-plugin-api" "^0.6.7" - "@backstage/integration-react" "^1.1.29" - "@backstage/plugin-catalog-common" "^1.0.25" - "@backstage/plugin-catalog-react" "^1.12.2" - "@backstage/plugin-permission-react" "^0.4.24" - "@backstage/plugin-scaffolder-common" "^1.5.4" - "@backstage/plugin-search-common" "^1.2.13" - "@backstage/plugin-search-react" "^1.7.13" - "@backstage/types" "^1.1.1" +"@backstage/plugin-catalog-react@^2.1.0", "@backstage/plugin-catalog-react@^2.1.1", "@backstage/plugin-catalog-react@^2.1.2", "@backstage/plugin-catalog-react@^2.1.4": + version "2.1.4" + resolved "https://registry.yarnpkg.com/@backstage/plugin-catalog-react/-/plugin-catalog-react-2.1.4.tgz#8866680c9ecd38840eb72714b3382bb313f51443" + integrity sha512-SFpGGrH6AS/L5kJk/Izai4i0mY1SCfobBMI9MxEEPT6O+yxHuCt05/V+SF6NoxTzCxju+TyB/q/8bO25cfWPSQ== + dependencies: + "@backstage/catalog-client" "^1.15.0" + "@backstage/catalog-model" "^1.8.0" + "@backstage/core-compat-api" "^0.5.10" + "@backstage/core-components" "^0.18.9" + "@backstage/core-plugin-api" "^1.12.5" + "@backstage/errors" "^1.3.0" + "@backstage/filter-predicates" "^0.1.2" + "@backstage/frontend-plugin-api" "^0.16.2" + "@backstage/integration-react" "^1.2.17" + "@backstage/plugin-catalog-common" "^1.1.9" + "@backstage/plugin-permission-common" "^0.9.8" + "@backstage/plugin-permission-react" "^0.5.0" + "@backstage/types" "^1.2.2" + "@backstage/ui" "^0.14.2" + "@backstage/version-bridge" "^1.0.12" + "@material-ui/core" "^4.12.2" + "@material-ui/icons" "^4.9.1" + "@material-ui/lab" "4.0.0-alpha.61" + "@react-hookz/web" "^24.0.0" + "@remixicon/react" "^4.6.0" + classnames "^2.2.6" + lodash "^4.17.21" + material-ui-popup-state "^5.3.6" + qs "^6.9.4" + react-use "^17.2.4" + yaml "^2.0.0" + zen-observable "^0.10.0" + zod "^4.0.0" + +"@backstage/plugin-catalog@^2.0.0", "@backstage/plugin-catalog@^2.0.1": + version "2.0.4" + resolved "https://registry.yarnpkg.com/@backstage/plugin-catalog/-/plugin-catalog-2.0.4.tgz#4e785ae65c4ce9a2a31e56fcfe3679b57a4d38fa" + integrity sha512-zDxTMtAedHEVMae64ZpG+gWpZ8UwtvsQ2HVGKaONOQ/4SHsAMssuaVP/TvstlTRDk9aUn4i+TnyGEIvH4HibjQ== + dependencies: + "@backstage/catalog-client" "^1.15.0" + "@backstage/catalog-model" "^1.8.0" + "@backstage/core-compat-api" "^0.5.10" + "@backstage/core-components" "^0.18.9" + "@backstage/core-plugin-api" "^1.12.5" + "@backstage/errors" "^1.3.0" + "@backstage/frontend-plugin-api" "^0.16.2" + "@backstage/integration-react" "^1.2.17" + "@backstage/plugin-catalog-common" "^1.1.9" + "@backstage/plugin-catalog-react" "^2.1.4" + "@backstage/plugin-permission-react" "^0.5.0" + "@backstage/plugin-scaffolder-common" "^2.1.0" + "@backstage/plugin-search-common" "^1.2.23" + "@backstage/plugin-search-react" "^1.11.3" + "@backstage/plugin-techdocs-common" "^0.1.1" + "@backstage/plugin-techdocs-react" "^1.3.10" + "@backstage/types" "^1.2.2" + "@backstage/ui" "^0.14.2" + "@backstage/version-bridge" "^1.0.12" "@material-ui/core" "^4.12.2" "@material-ui/icons" "^4.9.1" "@material-ui/lab" "4.0.0-alpha.61" "@mui/utils" "^5.14.15" - "@types/react" "^16.13.1 || ^17.0.0 || ^18.0.0" + classnames "^2.3.1" dataloader "^2.0.0" - expiry-map "^2.0.0" history "^5.0.0" lodash "^4.17.21" pluralize "^8.0.0" + react-helmet "6.1.0" react-use "^17.2.4" zen-observable "^0.10.0" + zod "^4.0.0" -"@backstage/plugin-events-node@^0.3.8": - version "0.3.8" - resolved "https://registry.yarnpkg.com/@backstage/plugin-events-node/-/plugin-events-node-0.3.8.tgz#cbc58885c9c71f95e352a9c91f0484aa92a0374e" - integrity sha512-u5NARWeZHWLOKLOnNIsyy0eIH8hXiLpuF5sM2H6qGLe+SBfkCA8XYqkj0mdSEaRAPElna/TbU/sjbZItcDfD2Q== +"@backstage/plugin-events-node@^0.4.15", "@backstage/plugin-events-node@^0.4.17", "@backstage/plugin-events-node@^0.4.20", "@backstage/plugin-events-node@^0.4.21": + version "0.4.21" + resolved "https://registry.yarnpkg.com/@backstage/plugin-events-node/-/plugin-events-node-0.4.21.tgz#9fbc0ea792d9da4eeca216d5078a22f9e7c6571c" + integrity sha512-qsMVP2d9bQbmYpc/uGPBdd4JQl8auCiaByHitskuXVDHE/Tc4G0o55wrMXOV29SSgapzwAN842vkVjeL7fQ8Cw== dependencies: - "@backstage/backend-plugin-api" "^0.7.0" + "@backstage/backend-plugin-api" "^1.9.0" + "@backstage/errors" "^1.3.0" + "@backstage/types" "^1.2.2" + "@types/content-type" "^1.1.8" + "@types/express" "^4.17.6" + content-type "^1.0.5" + cross-fetch "^4.0.0" + express "^4.22.0" + uri-template "^2.0.0" -"@backstage/plugin-home-react@^0.1.15": - version "0.1.15" - resolved "https://registry.yarnpkg.com/@backstage/plugin-home-react/-/plugin-home-react-0.1.15.tgz#a7dc55babc2d642b73f148262660b1a7561f8808" - integrity sha512-t23LbSFlLMuFGIwnmvC/jJLZaojRozlWnqk+OX8YOHv8EHgAESLqORHYIMb5RdGIgjQesaAcxBY4One1mtdy0Q== +"@backstage/plugin-home-react@^0.1.37": + version "0.1.37" + resolved "https://registry.yarnpkg.com/@backstage/plugin-home-react/-/plugin-home-react-0.1.37.tgz#8e7a78cdb6313a9a46b61625d48f4c4c32644a91" + integrity sha512-zvws5Vapp0BkqrU/Shn7uqu1NP9SNc9n7lKcUgmKym0ea5k0X4AlfKNfrH4w8/CnqsckwRd3gaBzw9wOUQFb2Q== dependencies: - "@backstage/core-components" "^0.14.9" - "@backstage/core-plugin-api" "^1.9.3" + "@backstage/core-compat-api" "^0.5.10" + "@backstage/core-components" "^0.18.9" + "@backstage/core-plugin-api" "^1.12.5" + "@backstage/frontend-plugin-api" "^0.16.0" "@material-ui/core" "^4.12.2" "@material-ui/icons" "^4.9.1" - "@rjsf/utils" "5.18.5" - "@types/react" "^16.13.1 || ^17.0.0" - -"@backstage/plugin-home@^0.7.6": - version "0.7.8" - resolved "https://registry.yarnpkg.com/@backstage/plugin-home/-/plugin-home-0.7.8.tgz#24d01daf44580273628b6c3b25bdc808008e7c8e" - integrity sha512-uUJgrUbMqFqxHnyCByaRkzkSXCCw1999iq1Cnhppk0GKw3O3cCAWSX+TpoEXd9zTVFaW6REOqvardSDhRXPeJg== - dependencies: - "@backstage/catalog-client" "^1.6.5" - "@backstage/catalog-model" "^1.5.0" - "@backstage/config" "^1.2.0" - "@backstage/core-app-api" "^1.14.1" - "@backstage/core-compat-api" "^0.2.7" - "@backstage/core-components" "^0.14.9" - "@backstage/core-plugin-api" "^1.9.3" - "@backstage/frontend-plugin-api" "^0.6.7" - "@backstage/plugin-catalog-react" "^1.12.2" - "@backstage/plugin-home-react" "^0.1.15" - "@backstage/theme" "^0.5.6" + "@rjsf/utils" "5.24.13" + +"@backstage/plugin-home@^0.9.3": + version "0.9.5" + resolved "https://registry.yarnpkg.com/@backstage/plugin-home/-/plugin-home-0.9.5.tgz#cc76572d4b56ec153643efb9776dbaab39585eb9" + integrity sha512-lL3g5N/CEKPU0A0Q1lHTPuE4WjmuPfNNeco7uAiyPM4eyQeaVGNTF+88spxD7o2I7ON1DEL31o+6jRNndmHLTg== + dependencies: + "@backstage/catalog-client" "^1.15.0" + "@backstage/catalog-model" "^1.8.0" + "@backstage/config" "^1.3.7" + "@backstage/core-app-api" "^1.20.0" + "@backstage/core-compat-api" "^0.5.10" + "@backstage/core-components" "^0.18.9" + "@backstage/core-plugin-api" "^1.12.5" + "@backstage/frontend-plugin-api" "^0.16.2" + "@backstage/plugin-catalog-react" "^2.1.4" + "@backstage/plugin-home-react" "^0.1.37" + "@backstage/theme" "^0.7.3" "@material-ui/core" "^4.12.2" "@material-ui/icons" "^4.9.1" "@material-ui/lab" "4.0.0-alpha.61" - "@rjsf/core" "5.18.5" - "@rjsf/material-ui" "5.18.5" - "@rjsf/utils" "5.18.5" - "@rjsf/validator-ajv8" "5.18.5" - "@types/react" "^16.13.1 || ^17.0.0 || ^18.0.0" + "@rjsf/core" "5.24.13" + "@rjsf/material-ui" "5.24.13" + "@rjsf/utils" "5.24.13" + "@rjsf/validator-ajv8" "5.24.13" lodash "^4.17.21" luxon "^3.4.3" react-grid-layout "1.3.4" react-resizable "^3.0.4" react-use "^17.2.4" - zod "^3.22.4" + zod "^3.25.76 || ^4.0.0" -"@backstage/plugin-kubernetes-backend@^0.18.2": - version "0.18.3" - resolved "https://registry.yarnpkg.com/@backstage/plugin-kubernetes-backend/-/plugin-kubernetes-backend-0.18.3.tgz#1407e464957943d43012a96ef66f00fbe85c3208" - integrity sha512-AnbarsdRXqruNsHdME6lqTlAS8NcI1x31VspyErehPjLZ6jvxb7t2JMhnH9SN2I0rCEYAgw6mQL14GTc1t36/Q== +"@backstage/plugin-kubernetes-backend@^0.20.4": + version "0.20.4" + resolved "https://registry.yarnpkg.com/@backstage/plugin-kubernetes-backend/-/plugin-kubernetes-backend-0.20.4.tgz#1c1a62ba5fabb3e8c16e1a6e57e8dbac1a51bd4c" + integrity sha512-ZgLjALN5GhmQAdyAIe1lBM6m5Ipq1kM6OtAdn5K1y9UMbrb12IGBPK0PJdpb8ceWQSzmu0oSxYv3aM3Fbz94aA== dependencies: "@aws-crypto/sha256-js" "^5.0.0" "@aws-sdk/credential-providers" "^3.350.0" "@aws-sdk/signature-v4" "^3.347.0" "@azure/identity" "^4.0.0" - "@backstage/backend-common" "^0.23.3" - "@backstage/backend-plugin-api" "^0.7.0" - "@backstage/catalog-client" "^1.6.5" - "@backstage/catalog-model" "^1.5.0" - "@backstage/config" "^1.2.0" - "@backstage/errors" "^1.2.4" - "@backstage/integration-aws-node" "^0.1.12" - "@backstage/plugin-auth-node" "^0.4.17" - "@backstage/plugin-catalog-node" "^1.12.4" - "@backstage/plugin-kubernetes-common" "^0.8.1" - "@backstage/plugin-kubernetes-node" "^0.1.16" - "@backstage/plugin-permission-common" "^0.8.0" - "@backstage/plugin-permission-node" "^0.8.0" - "@backstage/types" "^1.1.1" + "@backstage/backend-plugin-api" "^1.5.0" + "@backstage/catalog-client" "^1.12.1" + "@backstage/catalog-model" "^1.7.6" + "@backstage/config" "^1.3.6" + "@backstage/errors" "^1.2.7" + "@backstage/integration-aws-node" "^0.1.19" + "@backstage/plugin-catalog-node" "^1.20.0" + "@backstage/plugin-kubernetes-common" "^0.9.8" + "@backstage/plugin-kubernetes-node" "^0.3.6" + "@backstage/plugin-permission-common" "^0.9.3" + "@backstage/plugin-permission-node" "^0.10.6" + "@backstage/types" "^1.2.2" "@google-cloud/container" "^5.0.0" "@jest-mock/express" "^2.0.1" - "@kubernetes/client-node" "0.20.0" - "@types/express" "^4.17.6" + "@kubernetes/client-node" "1.4.0" "@types/http-proxy-middleware" "^1.0.0" - "@types/luxon" "^3.0.0" - compression "^1.7.4" - cors "^2.8.5" express "^4.17.1" express-promise-router "^4.1.0" fs-extra "^11.2.0" - helmet "^6.0.0" http-proxy-middleware "^2.0.6" lodash "^4.17.21" luxon "^3.0.0" - morgan "^1.10.0" - node-fetch "^2.6.7" - stream-buffers "^3.0.2" - winston "^3.2.1" - yn "^4.0.0" + node-fetch "^2.7.0" -"@backstage/plugin-kubernetes-common@^0.8.1": - version "0.8.1" - resolved "https://registry.yarnpkg.com/@backstage/plugin-kubernetes-common/-/plugin-kubernetes-common-0.8.1.tgz#9fe97ccfdb6b9f4fcabc846f5cb9c9bfeae410e5" - integrity sha512-kj3GwR48pPSVMd7FJKsQMhb48e/ytvdvOe5KSTI/Ux4kNMvWf6V5K7DnlfoESu7WgCs8+fxaj0qXnQmQ9FdGzA== +"@backstage/plugin-kubernetes-backend@^0.21.2": + version "0.21.3" + resolved "https://registry.yarnpkg.com/@backstage/plugin-kubernetes-backend/-/plugin-kubernetes-backend-0.21.3.tgz#b68f41a33f04ec4a5fa4a3604262901ef4c0a888" + integrity sha512-yfM7l0JeNoKnWVRLiiQ1OzilgKW79MqOb5/Mu/acJZYwBctdPRga/DT7M3jo+NzSDm9lKJHUkvi3YVKc9VoE0A== dependencies: - "@backstage/catalog-model" "^1.5.0" - "@backstage/plugin-permission-common" "^0.8.0" - "@backstage/types" "^1.1.1" - "@kubernetes/client-node" "0.20.0" - kubernetes-models "^4.3.1" + "@aws-crypto/sha256-js" "^5.0.0" + "@aws-sdk/credential-providers" "^3.350.0" + "@azure/identity" "^4.0.0" + "@backstage/backend-plugin-api" "^1.9.0" + "@backstage/catalog-client" "^1.15.0" + "@backstage/catalog-model" "^1.8.0" + "@backstage/config" "^1.3.7" + "@backstage/errors" "^1.3.0" + "@backstage/integration-aws-node" "^0.1.21" + "@backstage/plugin-catalog-node" "^2.2.0" + "@backstage/plugin-kubernetes-common" "^0.9.11" + "@backstage/plugin-kubernetes-node" "^0.4.3" + "@backstage/plugin-permission-common" "^0.9.8" + "@backstage/plugin-permission-node" "^0.10.12" + "@backstage/types" "^1.2.2" + "@google-cloud/container" "^5.0.0" + "@jest-mock/express" "^2.0.1" + "@kubernetes/client-node" "1.4.0" + "@smithy/signature-v4" "^4.1.0" + "@types/http-proxy-middleware" "^1.0.0" + express "^4.22.0" + express-promise-router "^4.1.0" + fs-extra "^11.2.0" + http-proxy-middleware "^2.0.6" lodash "^4.17.21" luxon "^3.0.0" + node-fetch "^2.7.0" -"@backstage/plugin-kubernetes-node@^0.1.16": - version "0.1.16" - resolved "https://registry.yarnpkg.com/@backstage/plugin-kubernetes-node/-/plugin-kubernetes-node-0.1.16.tgz#f740712feb314752802cb93ae2f317c0a3f4b4ab" - integrity sha512-by29E6yBUid3blHouleftjvEskQsm4t7QsYJ+WK+WGur/XdEY00nT6dGd8wqYEUA0YmzrI92KMNfa9aLvhGeJw== +"@backstage/plugin-kubernetes-common@^0.9.11", "@backstage/plugin-kubernetes-common@^0.9.8": + version "0.9.11" + resolved "https://registry.yarnpkg.com/@backstage/plugin-kubernetes-common/-/plugin-kubernetes-common-0.9.11.tgz#5b807b3cc04ff1b9aaa084ae8db1e280600e2f23" + integrity sha512-U2jer4Synm0F5hyd327v56KA1uvXxqJ5nOKk4jR7NJCvQ+/wJKfERh32m6Y916lXYG4zV2xNN9UqNOF2k3KwOw== dependencies: - "@backstage/backend-plugin-api" "^0.7.0" - "@backstage/catalog-model" "^1.5.0" - "@backstage/plugin-kubernetes-common" "^0.8.1" - "@backstage/types" "^1.1.1" - "@kubernetes/client-node" "^0.20.0" - node-fetch "^2.6.7" + "@backstage/catalog-model" "^1.8.0" + "@backstage/plugin-permission-common" "^0.9.8" + "@backstage/types" "^1.2.2" + "@kubernetes/client-node" "1.4.0" + kubernetes-models "^4.3.1" + lodash "^4.17.21" + luxon "^3.0.0" + +"@backstage/plugin-kubernetes-node@^0.3.6": + version "0.3.6" + resolved "https://registry.yarnpkg.com/@backstage/plugin-kubernetes-node/-/plugin-kubernetes-node-0.3.6.tgz#a4b87192cb4839f7c56fdff9bd6a0a15b4b365b7" + integrity sha512-Op+Ck+e+42lz9RSOj7WxK6zzsGsRM0AxB7HfX5jimqOkGk7H/YswFDolbKVf+6RlEzOuYaGsUbskmbjReePNlg== + dependencies: + "@backstage/backend-plugin-api" "^1.5.0" + "@backstage/catalog-model" "^1.7.6" + "@backstage/plugin-kubernetes-common" "^0.9.8" + "@backstage/types" "^1.2.2" + "@kubernetes/client-node" "1.4.0" + node-fetch "^2.7.0" winston "^3.2.1" -"@backstage/plugin-kubernetes-react@^0.4.1": - version "0.4.1" - resolved "https://registry.yarnpkg.com/@backstage/plugin-kubernetes-react/-/plugin-kubernetes-react-0.4.1.tgz#c220cea4ed865596f0102d2c905f9a3fe655ec50" - integrity sha512-XzYlwzd0c7Ieiu0aWXwE+tU4DRCUC+gmjbea0QXml5VHeeWd1rneX9TaFL8lxp0UTnoJ7gDNS/8vfTZSwsl0WQ== +"@backstage/plugin-kubernetes-node@^0.4.3": + version "0.4.3" + resolved "https://registry.yarnpkg.com/@backstage/plugin-kubernetes-node/-/plugin-kubernetes-node-0.4.3.tgz#72afb0d6541a49f4a1652646ca476303b8c8de0f" + integrity sha512-gZf+zUwHlkb/9JShk0Gqai0i9m+g2WoJgxH+q/xZZg2InSkornhUIjBhmvqLCbZ5AaAt++EG4Y6lkmwu0SrByA== dependencies: - "@backstage/catalog-model" "^1.5.0" - "@backstage/core-components" "^0.14.9" - "@backstage/core-plugin-api" "^1.9.3" - "@backstage/errors" "^1.2.4" - "@backstage/plugin-kubernetes-common" "^0.8.1" - "@backstage/types" "^1.1.1" - "@kubernetes-models/apimachinery" "^1.1.0" - "@kubernetes-models/base" "^4.0.1" - "@kubernetes/client-node" "^0.20.0" + "@backstage/backend-plugin-api" "^1.9.0" + "@backstage/catalog-model" "^1.8.0" + "@backstage/plugin-kubernetes-common" "^0.9.11" + "@backstage/types" "^1.2.2" + "@kubernetes/client-node" "1.4.0" + "@types/express" "^4.17.6" + node-fetch "^2.7.0" + winston "^3.2.1" + +"@backstage/plugin-kubernetes-react@^0.5.11", "@backstage/plugin-kubernetes-react@^0.5.18": + version "0.5.18" + resolved "https://registry.yarnpkg.com/@backstage/plugin-kubernetes-react/-/plugin-kubernetes-react-0.5.18.tgz#26170066a91974a6d3d10c149aed02777299953d" + integrity sha512-qa+UzCyTt9NM+forZSxHw7CACPBy/yfZ46JoPlPtDix14BxVGmWkpmSha0m5oqdaH0JC3LkDCULuiq29ESTbpw== + dependencies: + "@backstage/catalog-model" "^1.8.0" + "@backstage/core-components" "^0.18.9" + "@backstage/core-plugin-api" "^1.12.5" + "@backstage/errors" "^1.3.0" + "@backstage/plugin-kubernetes-common" "^0.9.11" + "@backstage/types" "^1.2.2" + "@kubernetes-models/apimachinery" "^2.0.0" + "@kubernetes-models/base" "^5.0.0" + "@kubernetes/client-node" "1.4.0" "@material-ui/core" "^4.9.13" "@material-ui/icons" "^4.11.3" "@material-ui/lab" "^4.0.0-alpha.61" - "@types/react" "^16.13.1 || ^17.0.0 || ^18.0.0" + "@xterm/addon-attach" "^0.12.0" + "@xterm/addon-fit" "^0.11.0" + "@xterm/xterm" "^5.5.0" cronstrue "^2.32.0" js-yaml "^4.1.0" kubernetes-models "^4.3.1" lodash "^4.17.21" luxon "^3.0.0" react-use "^17.4.0" - xterm "^5.3.0" - xterm-addon-attach "^0.9.0" - xterm-addon-fit "^0.8.0" - -"@backstage/plugin-kubernetes@^0.11.11": - version "0.11.12" - resolved "https://registry.yarnpkg.com/@backstage/plugin-kubernetes/-/plugin-kubernetes-0.11.12.tgz#22390d771df83b88329dec34affa85595cb9942b" - integrity sha512-A52aB03mm336kUhglUwRLSsJMB5SwygSNGAGQ6mzBiHByPHsImAQEyQr05whvPprBpV/8j0xHNk1S08hKA/NXg== - dependencies: - "@backstage/catalog-model" "^1.5.0" - "@backstage/core-components" "^0.14.9" - "@backstage/core-plugin-api" "^1.9.3" - "@backstage/plugin-catalog-react" "^1.12.2" - "@backstage/plugin-kubernetes-common" "^0.8.1" - "@backstage/plugin-kubernetes-react" "^0.4.1" - "@kubernetes-models/apimachinery" "^1.1.0" - "@kubernetes-models/base" "^4.0.1" - "@kubernetes/client-node" "0.20.0" + +"@backstage/plugin-kubernetes@^0.12.11", "@backstage/plugin-kubernetes@^0.12.13", "@backstage/plugin-kubernetes@^0.12.17", "@backstage/plugin-kubernetes@^0.12.18": + version "0.12.18" + resolved "https://registry.yarnpkg.com/@backstage/plugin-kubernetes/-/plugin-kubernetes-0.12.18.tgz#67e6f95389386dc251ffd977782bfe15d6dad3c5" + integrity sha512-tu/xduHJ4V3Rqh3laj1BnLUPzHc0VkoC7AdII//z+fAJo6+0EohGUTVjiAz0TTiG+pa/qPglw1wkJQt4VEO+TA== + dependencies: + "@backstage/catalog-model" "^1.8.0" + "@backstage/core-components" "^0.18.9" + "@backstage/core-plugin-api" "^1.12.5" + "@backstage/frontend-plugin-api" "^0.16.0" + "@backstage/plugin-catalog-react" "^2.1.2" + "@backstage/plugin-kubernetes-common" "^0.9.11" + "@backstage/plugin-kubernetes-react" "^0.5.18" + "@backstage/plugin-permission-react" "^0.5.0" "@material-ui/core" "^4.12.2" - "@types/react" "^16.13.1 || ^17.0.0 || ^18.0.0" - cronstrue "^2.2.0" - js-yaml "^4.0.0" - kubernetes-models "^4.1.0" - lodash "^4.17.21" - luxon "^3.0.0" - xterm "^5.2.1" - xterm-addon-attach "^0.9.0" - xterm-addon-fit "^0.8.0" - -"@backstage/plugin-org@^0.6.26": - version "0.6.27" - resolved "https://registry.yarnpkg.com/@backstage/plugin-org/-/plugin-org-0.6.27.tgz#c61d02a3319f85288cfebf2c3240b770b872a2e3" - integrity sha512-U5Ty0pH/Lfp3Ug190+cTG4X+DnO/g7QqSRlzFRjZbw52wMqy9dxE8GfNhcN9TnL1RsALfJOlyMdsLuu1wjgNHQ== - dependencies: - "@backstage/catalog-model" "^1.5.0" - "@backstage/core-compat-api" "^0.2.7" - "@backstage/core-components" "^0.14.9" - "@backstage/core-plugin-api" "^1.9.3" - "@backstage/frontend-plugin-api" "^0.6.7" - "@backstage/plugin-catalog-common" "^1.0.25" - "@backstage/plugin-catalog-react" "^1.12.2" + +"@backstage/plugin-org@^0.7.0": + version "0.7.3" + resolved "https://registry.yarnpkg.com/@backstage/plugin-org/-/plugin-org-0.7.3.tgz#1c035bbfe8e8eaeb1d47e50844228a0990a6c859" + integrity sha512-eP9cRUhfta9LeL/BiOv5xUpLtl0+r1Ol9CvvYG6qAwI0CUQzR9ySeDPjkPVmcPWhcwHcqbLv8Pf1ue+5SwdaGw== + dependencies: + "@backstage/catalog-model" "^1.8.0" + "@backstage/core-components" "^0.18.9" + "@backstage/core-plugin-api" "^1.12.5" + "@backstage/frontend-plugin-api" "^0.16.2" + "@backstage/plugin-catalog-common" "^1.1.9" + "@backstage/plugin-catalog-react" "^2.1.4" + "@backstage/ui" "^0.14.2" "@material-ui/core" "^4.12.2" "@material-ui/icons" "^4.9.1" "@material-ui/lab" "4.0.0-alpha.61" - "@types/react" "^16.13.1 || ^17.0.0 || ^18.0.0" + "@remixicon/react" "^4.6.0" lodash "^4.17.21" p-limit "^3.1.0" pluralize "^8.0.0" qs "^6.10.1" react-use "^17.2.4" + zod "^4.0.0" + +"@backstage/plugin-permission-backend-module-allow-all-policy@^0.2.17": + version "0.2.18" + resolved "https://registry.yarnpkg.com/@backstage/plugin-permission-backend-module-allow-all-policy/-/plugin-permission-backend-module-allow-all-policy-0.2.18.tgz#39ce797c682c77226a27b1f6c187dd8ae08d464d" + integrity sha512-KfEwwNBHXEtnpcQXKF7Zuf11Kn81FJ0dstIwPRyJt3SnsuJMOSG6YljMGuEyw2dFPijmLzfAsanuIPHVh616wQ== + dependencies: + "@backstage/backend-plugin-api" "^1.9.0" + "@backstage/plugin-auth-node" "^0.7.0" + "@backstage/plugin-permission-common" "^0.9.8" + "@backstage/plugin-permission-node" "^0.10.12" + +"@backstage/plugin-permission-backend@^0.7.10": + version "0.7.11" + resolved "https://registry.yarnpkg.com/@backstage/plugin-permission-backend/-/plugin-permission-backend-0.7.11.tgz#879c90bb3c083ccc065c280db28d95f64dc91e15" + integrity sha512-uNaFbdA/eD2teBVMO10LASY5bEu+rw/AfynO+11JImHMzg5Bnec1TVDnr0hywGKZYlgC7ViS9JAVJGIhzZyH3w== + dependencies: + "@backstage/backend-plugin-api" "^1.9.0" + "@backstage/config" "^1.3.7" + "@backstage/errors" "^1.3.0" + "@backstage/plugin-auth-node" "^0.7.0" + "@backstage/plugin-permission-common" "^0.9.8" + "@backstage/plugin-permission-node" "^0.10.12" + dataloader "^2.0.0" + express "^4.22.0" + express-promise-router "^4.1.0" + lodash "^4.17.21" + yn "^4.0.0" + zod "^3.25.76 || ^4.0.0" -"@backstage/plugin-permission-common@^0.7.14": - version "0.7.14" - resolved "https://registry.yarnpkg.com/@backstage/plugin-permission-common/-/plugin-permission-common-0.7.14.tgz#ecb12877c412ff271124af54fca46ec06d9c812f" - integrity sha512-fHbxhX9ZoT8bTVuGycfTeU/6TE2yjZ6YNvm/2ko1bcxGnvYe1p5Ug5JW+iWjDZS+F6F152tWzhRcg05wQlPNKQ== - dependencies: - "@backstage/config" "^1.2.0" - "@backstage/errors" "^1.2.4" - "@backstage/types" "^1.1.1" - cross-fetch "^4.0.0" - uuid "^9.0.0" - zod "^3.22.4" - -"@backstage/plugin-permission-common@^0.8.0": - version "0.8.0" - resolved "https://registry.yarnpkg.com/@backstage/plugin-permission-common/-/plugin-permission-common-0.8.0.tgz#13d29c146c50e9de1da47296c167ace9d1bc86f3" - integrity sha512-4c8QfjDKiTJbQfiG3DibUqUsclsi53kRk8GR9CwHl1Is2Xm98AkqXGWyknHGPQOvw4vJR19nqnj7w0XfhLK2Jw== +"@backstage/plugin-permission-common@^0.9.0", "@backstage/plugin-permission-common@^0.9.1", "@backstage/plugin-permission-common@^0.9.3", "@backstage/plugin-permission-common@^0.9.5", "@backstage/plugin-permission-common@^0.9.6", "@backstage/plugin-permission-common@^0.9.7", "@backstage/plugin-permission-common@^0.9.8": + version "0.9.8" + resolved "https://registry.yarnpkg.com/@backstage/plugin-permission-common/-/plugin-permission-common-0.9.8.tgz#ccf3107f6821ba48c4bda60537a9f2c7c5f3941f" + integrity sha512-gzmy25mtOTfZdnnbZErmVcNY+Xc3mVoErpWltCjXRX5q7vrFjsVThJUrtwouT3+1h9QXarDGaPUSvAM9uIzysg== dependencies: - "@backstage/config" "^1.2.0" - "@backstage/errors" "^1.2.4" - "@backstage/types" "^1.1.1" + "@backstage/config" "^1.3.7" + "@backstage/errors" "^1.3.0" + "@backstage/types" "^1.2.2" cross-fetch "^4.0.0" - uuid "^9.0.0" - zod "^3.22.4" - -"@backstage/plugin-permission-node@^0.7.32": - version "0.7.32" - resolved "https://registry.yarnpkg.com/@backstage/plugin-permission-node/-/plugin-permission-node-0.7.32.tgz#e462a4c8d6d8021ae5d8ff64bec84e176641fd77" - integrity sha512-jNKa2sNcQdbcQiGM8gdQa7SsX7SSAGmSUfLoD3F1BF9Hs18c90Mb1v1RFIcXfslHzzUVSLNFguRpZKZ+Mg0CPw== - dependencies: - "@backstage/backend-common" "^0.23.2" - "@backstage/backend-plugin-api" "^0.6.21" - "@backstage/config" "^1.2.0" - "@backstage/errors" "^1.2.4" - "@backstage/plugin-auth-node" "^0.4.16" - "@backstage/plugin-permission-common" "^0.7.14" + uuid "^11.0.0" + zod "^3.25.76 || ^4.0.0" + zod-to-json-schema "^3.25.1" + +"@backstage/plugin-permission-node@^0.10.1", "@backstage/plugin-permission-node@^0.10.11", "@backstage/plugin-permission-node@^0.10.12", "@backstage/plugin-permission-node@^0.10.4", "@backstage/plugin-permission-node@^0.10.6", "@backstage/plugin-permission-node@^0.10.7": + version "0.10.12" + resolved "https://registry.yarnpkg.com/@backstage/plugin-permission-node/-/plugin-permission-node-0.10.12.tgz#5f47c1d89b9f4508f5fbd1c5b8eaada6a95f1e35" + integrity sha512-T9eyBfsqUmuRfxotAQc7BXeE3nmmrcsI7rNyS6Trt1ALizmpfGozQdnKnbEmS6WUIoe/dNF/YfdbzDTB6CsUdA== + dependencies: + "@backstage/backend-plugin-api" "^1.9.0" + "@backstage/config" "^1.3.7" + "@backstage/errors" "^1.3.0" + "@backstage/plugin-auth-node" "^0.7.0" + "@backstage/plugin-permission-common" "^0.9.8" "@types/express" "^4.17.6" - express "^4.17.1" + express "^4.22.0" express-promise-router "^4.1.0" - zod "^3.22.4" - zod-to-json-schema "^3.20.4" + zod "^3.25.76 || ^4.0.0" + zod-to-json-schema "^3.25.1" -"@backstage/plugin-permission-node@^0.8.0": - version "0.8.0" - resolved "https://registry.yarnpkg.com/@backstage/plugin-permission-node/-/plugin-permission-node-0.8.0.tgz#726a7d5b60eb2212fb4e9b16bf890d7b0dcbe6bf" - integrity sha512-UFIPf97uAoVZk/1UagkDKUeNHWifkqVrkUjOT36uHWxRDqucRPrCNcgvpNrv/HdI1xbCmjSeXkyQt4OJDzWicg== +"@backstage/plugin-permission-react@^0.4.36", "@backstage/plugin-permission-react@^0.4.39", "@backstage/plugin-permission-react@^0.4.41": + version "0.4.41" + resolved "https://registry.yarnpkg.com/@backstage/plugin-permission-react/-/plugin-permission-react-0.4.41.tgz#88e898961f9dcd3ce8a7ef6fe315577351ef870f" + integrity sha512-XGJPNBd8pY5b8dya+twIr0Zznuq/wX2guUKdfnYmQyjw2Li9Ik6Q4sWPyshFfG7tCxe/eaEz9FNFJzgiGG3dIg== dependencies: - "@backstage/backend-common" "^0.23.3" - "@backstage/backend-plugin-api" "^0.7.0" - "@backstage/config" "^1.2.0" - "@backstage/errors" "^1.2.4" - "@backstage/plugin-auth-node" "^0.4.17" - "@backstage/plugin-permission-common" "^0.8.0" - "@types/express" "^4.17.6" - express "^4.17.1" - express-promise-router "^4.1.0" - zod "^3.22.4" - zod-to-json-schema "^3.20.4" + "@backstage/config" "^1.3.6" + "@backstage/core-plugin-api" "^1.12.4" + "@backstage/plugin-permission-common" "^0.9.7" + dataloader "^2.0.0" + swr "^2.0.0" -"@backstage/plugin-permission-react@^0.4.23", "@backstage/plugin-permission-react@^0.4.24": - version "0.4.24" - resolved "https://registry.yarnpkg.com/@backstage/plugin-permission-react/-/plugin-permission-react-0.4.24.tgz#a980462553c86e41d75c538b347b4acd9dc50a4e" - integrity sha512-UH+KvuvsVMqVCWDxC7Xv2BwHWuezg1fOurp0FgrrxXR5rZ8NQYEBlfmQEzt7mml6EzsUIc+hGeoSKLoSgHFjUA== +"@backstage/plugin-permission-react@^0.5.0": + version "0.5.0" + resolved "https://registry.yarnpkg.com/@backstage/plugin-permission-react/-/plugin-permission-react-0.5.0.tgz#ea291e3b3332bb700f59c46064b16d5448fcf90e" + integrity sha512-P4viIA8uM0PMe+OtvPhVg73Y9BHIHF4UWMIc9OE8bJPLobk+Q9ueqirEfwLcBrYPWjetDz2pNcuLd1juc6nlGQ== dependencies: - "@backstage/config" "^1.2.0" - "@backstage/core-plugin-api" "^1.9.3" - "@backstage/plugin-permission-common" "^0.8.0" - "@types/react" "^16.13.1 || ^17.0.0 || ^18.0.0" + "@backstage/config" "^1.3.7" + "@backstage/core-plugin-api" "^1.12.5" + "@backstage/plugin-permission-common" "^0.9.8" + dataloader "^2.0.0" swr "^2.0.0" -"@backstage/plugin-proxy-backend@^0.5.2": - version "0.5.3" - resolved "https://registry.yarnpkg.com/@backstage/plugin-proxy-backend/-/plugin-proxy-backend-0.5.3.tgz#fc9c12ac160e389913433a33629cb7d09e71e2f7" - integrity sha512-FSaDjtMKo1iURvKumkTVazkXecpgBodJyFc5EewJLjiLmLFGqv0Od9O7n+EQDJ+Fv84vCUwiapOfl5Pt9Z/p5w== +"@backstage/plugin-proxy-backend@^0.6.11": + version "0.6.12" + resolved "https://registry.yarnpkg.com/@backstage/plugin-proxy-backend/-/plugin-proxy-backend-0.6.12.tgz#44d701ff1435f201c8dcbb6c396919f2ddbb1e72" + integrity sha512-6Xy2if2dMJ/5SZhC7zpRLPhmBPhMeg4jsFzG242x6Srmq1A1bVQUIvpOlJ3lPgamMz5GpfWfw2uIa9QxDizWNw== dependencies: - "@backstage/backend-common" "^0.23.3" - "@backstage/backend-plugin-api" "^0.7.0" - "@backstage/config" "^1.2.0" - "@backstage/types" "^1.1.1" - "@types/express" "^4.17.6" - express "^4.17.1" + "@backstage/backend-plugin-api" "^1.9.0" + "@backstage/plugin-proxy-node" "^0.1.14" + "@backstage/types" "^1.2.2" express-promise-router "^4.1.0" http-proxy-middleware "^2.0.0" - morgan "^1.10.0" - uuid "^9.0.0" - winston "^3.2.1" - yaml "^2.0.0" - yn "^4.0.0" - yup "^1.0.0" - -"@backstage/plugin-scaffolder-backend-module-azure@^0.1.14": - version "0.1.14" - resolved "https://registry.yarnpkg.com/@backstage/plugin-scaffolder-backend-module-azure/-/plugin-scaffolder-backend-module-azure-0.1.14.tgz#22fcd746533c368411519121b039f91a575b13c4" - integrity sha512-eD3xNHtlVxmgG9rKO7nB4W+UOhP2XrGyEegw3csEdhAVaEdfseqqBSZbIRHfUGzJuH9R9BzjVezSzPFxW/IJ3A== - dependencies: - "@backstage/backend-plugin-api" "^0.7.0" - "@backstage/config" "^1.2.0" - "@backstage/errors" "^1.2.4" - "@backstage/integration" "^1.13.0" - "@backstage/plugin-scaffolder-node" "^0.4.8" - azure-devops-node-api "^12.0.0" - yaml "^2.0.0" - -"@backstage/plugin-scaffolder-backend-module-bitbucket-cloud@^0.1.12": - version "0.1.12" - resolved "https://registry.yarnpkg.com/@backstage/plugin-scaffolder-backend-module-bitbucket-cloud/-/plugin-scaffolder-backend-module-bitbucket-cloud-0.1.12.tgz#7a14449825d452ab2558c40643f7dca1d095ee0c" - integrity sha512-y+ld7IKqgTmg3GGaTEOgh028j8m65RmoNNpxgw+w6qZX8XPI5LUSfj/YG/jo7NmIEmcNPQvXLLXJCrcsU3H8BQ== - dependencies: - "@backstage/backend-plugin-api" "^0.7.0" - "@backstage/config" "^1.2.0" - "@backstage/errors" "^1.2.4" - "@backstage/integration" "^1.13.0" - "@backstage/plugin-bitbucket-cloud-common" "^0.2.21" - "@backstage/plugin-scaffolder-node" "^0.4.8" - fs-extra "^11.2.0" - node-fetch "^2.6.7" - yaml "^2.0.0" - -"@backstage/plugin-scaffolder-backend-module-bitbucket-server@^0.1.12": - version "0.1.12" - resolved "https://registry.yarnpkg.com/@backstage/plugin-scaffolder-backend-module-bitbucket-server/-/plugin-scaffolder-backend-module-bitbucket-server-0.1.12.tgz#2ed85dd2c16b39217e621517b7e4f5b3f7024b59" - integrity sha512-RAL7nom1imKZsMSdTnFnJESu62ztsYFBlK8dfYSg8J9gremd8fOAY9SQ4/fLTsU9QecZiTEIsKSOw4A6SboLXw== - dependencies: - "@backstage/backend-plugin-api" "^0.7.0" - "@backstage/config" "^1.2.0" - "@backstage/errors" "^1.2.4" - "@backstage/integration" "^1.13.0" - "@backstage/plugin-scaffolder-node" "^0.4.8" - fs-extra "^11.2.0" - node-fetch "^2.6.7" - yaml "^2.0.0" - -"@backstage/plugin-scaffolder-backend-module-bitbucket@^0.2.12": - version "0.2.12" - resolved "https://registry.yarnpkg.com/@backstage/plugin-scaffolder-backend-module-bitbucket/-/plugin-scaffolder-backend-module-bitbucket-0.2.12.tgz#6f16213393bebb5106b80511890f7ca48ff4740a" - integrity sha512-mgVUPF3mXUfYWW+5p7AnohVB06MsH1sySEL+b+C1iixHdyKT3iA39nsNmFSoh9YbsR0EinC2fblSWNB3d3RFww== - dependencies: - "@backstage/backend-plugin-api" "^0.7.0" - "@backstage/config" "^1.2.0" - "@backstage/errors" "^1.2.4" - "@backstage/integration" "^1.13.0" - "@backstage/plugin-scaffolder-backend-module-bitbucket-cloud" "^0.1.12" - "@backstage/plugin-scaffolder-backend-module-bitbucket-server" "^0.1.12" - "@backstage/plugin-scaffolder-node" "^0.4.8" - fs-extra "^11.2.0" - node-fetch "^2.6.7" - yaml "^2.0.0" -"@backstage/plugin-scaffolder-backend-module-gerrit@^0.1.14": +"@backstage/plugin-proxy-node@^0.1.14": version "0.1.14" - resolved "https://registry.yarnpkg.com/@backstage/plugin-scaffolder-backend-module-gerrit/-/plugin-scaffolder-backend-module-gerrit-0.1.14.tgz#592055e868588868003a3c2887a7efd39391b284" - integrity sha512-VGc4A4RJi9KFmH4g3/CLoK5c/44V0fUVAvbbG3snWNpL2eN1rWJrmRbV9ocMT+CLomOHfgb3akLylpsy0Gw7lA== - dependencies: - "@backstage/backend-plugin-api" "^0.7.0" - "@backstage/config" "^1.2.0" - "@backstage/errors" "^1.2.4" - "@backstage/integration" "^1.13.0" - "@backstage/plugin-scaffolder-node" "^0.4.8" - node-fetch "^2.6.7" - yaml "^2.0.0" - -"@backstage/plugin-scaffolder-backend-module-gitea@^0.1.11", "@backstage/plugin-scaffolder-backend-module-gitea@^0.1.12": - version "0.1.12" - resolved "https://registry.yarnpkg.com/@backstage/plugin-scaffolder-backend-module-gitea/-/plugin-scaffolder-backend-module-gitea-0.1.12.tgz#0c21d5e13726119128eaa265f7308866d39f7ab1" - integrity sha512-2Mjvd1cOIfgRLc7BetAADETzmgTpC/IrGomzly2Fvn4rubFmpY69qyAPU/LIWO0VB/BG75d4dQEDqkhCLBiWsg== + resolved "https://registry.yarnpkg.com/@backstage/plugin-proxy-node/-/plugin-proxy-node-0.1.14.tgz#7361e91b3058265b13666c8a822bb7743898bda9" + integrity sha512-Msn3RJvSMDkOw184yTzZmXQF2qD4/Sj6UPUqZ295NPIz5+sFEdpTlIuRAdG0AlwPrZGA+NYqGTLEPs9s4xq8FA== dependencies: - "@backstage/backend-plugin-api" "^0.7.0" - "@backstage/config" "^1.2.0" - "@backstage/errors" "^1.2.4" - "@backstage/integration" "^1.13.0" - "@backstage/plugin-scaffolder-node" "^0.4.8" - node-fetch "^2.6.7" - yaml "^2.0.0" + "@backstage/backend-plugin-api" "^1.9.0" + http-proxy-middleware "^2.0.0" -"@backstage/plugin-scaffolder-backend-module-github@^0.4.0": - version "0.4.0" - resolved "https://registry.yarnpkg.com/@backstage/plugin-scaffolder-backend-module-github/-/plugin-scaffolder-backend-module-github-0.4.0.tgz#a8050a87aafdff5c36c355caf619820a0b920732" - integrity sha512-tLU1Pb6QSY0h/0FCsLf2oGPiL7I/s6jv/TLHaI6Kg06OGEjqOIQhSDrZQCJxEamiIzOsonuLi4UoYFZ2L9VXLQ== - dependencies: - "@backstage/backend-common" "^0.23.3" - "@backstage/backend-plugin-api" "^0.7.0" - "@backstage/config" "^1.2.0" - "@backstage/errors" "^1.2.4" - "@backstage/integration" "^1.13.0" - "@backstage/plugin-scaffolder-node" "^0.4.8" - "@octokit/webhooks" "^10.0.0" - libsodium-wrappers "^0.7.11" +"@backstage/plugin-scaffolder-backend-module-github@^0.9.7": + version "0.9.8" + resolved "https://registry.yarnpkg.com/@backstage/plugin-scaffolder-backend-module-github/-/plugin-scaffolder-backend-module-github-0.9.8.tgz#882632004592d810a8b694a3ae536753eae1dad8" + integrity sha512-c6KnddE5zUht6R7B1u4qyDft+4Oy3TwwSVrA8Pyq5sRZDpwnLa3SgfgQW6RhN5BIbMN7dbeNHiiL43igXfNByA== + dependencies: + "@backstage/backend-plugin-api" "^1.9.0" + "@backstage/catalog-model" "^1.8.0" + "@backstage/config" "^1.3.7" + "@backstage/errors" "^1.3.0" + "@backstage/integration" "^2.0.1" + "@backstage/plugin-catalog-node" "^2.2.0" + "@backstage/plugin-scaffolder-node" "^0.13.2" + "@backstage/types" "^1.2.2" + "@octokit/webhooks" "^10.9.2" + libsodium-wrappers "^0.8.0" octokit "^3.0.0" octokit-plugin-create-pull-request "^5.0.0" yaml "^2.0.0" + zod "^3.25.76 || ^4.0.0" -"@backstage/plugin-scaffolder-backend-module-gitlab@^0.4.4": - version "0.4.4" - resolved "https://registry.yarnpkg.com/@backstage/plugin-scaffolder-backend-module-gitlab/-/plugin-scaffolder-backend-module-gitlab-0.4.4.tgz#e08e49aaed6faa561784faaa99fc5430a46db5d7" - integrity sha512-cderEqQ9Zg6Xx3UpL8BKGZhLXMBLioFNfQmOMTAj/1fsgrNr2YZPMCzTaRWLtg0TPMbsbyMrOCrSBm070Rm0SA== - dependencies: - "@backstage/backend-common" "^0.23.3" - "@backstage/backend-plugin-api" "^0.7.0" - "@backstage/config" "^1.2.0" - "@backstage/errors" "^1.2.4" - "@backstage/integration" "^1.13.0" - "@backstage/plugin-scaffolder-node" "^0.4.8" - "@gitbeaker/core" "^35.8.0" - "@gitbeaker/node" "^35.8.0" - "@gitbeaker/rest" "^39.25.0" - luxon "^3.0.0" - yaml "^2.0.0" - zod "^3.22.4" - -"@backstage/plugin-scaffolder-backend@^1.22.11", "@backstage/plugin-scaffolder-backend@^1.22.5": - version "1.23.0" - resolved "https://registry.yarnpkg.com/@backstage/plugin-scaffolder-backend/-/plugin-scaffolder-backend-1.23.0.tgz#35cf0bdcb14aca53c20fbf8f88acffdf3c27532c" - integrity sha512-naDeEFGHTR87/C+Ut+OfAJJFhWOIaF7gc5YBN5iyl4GIf9fL3l4kQrUo29iiQ/GXd9nskzeLlSulXwDUP5qcJQ== - dependencies: - "@backstage/backend-common" "^0.23.3" - "@backstage/backend-plugin-api" "^0.7.0" - "@backstage/backend-tasks" "^0.5.27" - "@backstage/catalog-client" "^1.6.5" - "@backstage/catalog-model" "^1.5.0" - "@backstage/config" "^1.2.0" - "@backstage/errors" "^1.2.4" - "@backstage/integration" "^1.13.0" - "@backstage/plugin-auth-node" "^0.4.17" - "@backstage/plugin-bitbucket-cloud-common" "^0.2.21" - "@backstage/plugin-catalog-backend-module-scaffolder-entity-model" "^0.1.20" - "@backstage/plugin-catalog-node" "^1.12.4" - "@backstage/plugin-permission-common" "^0.8.0" - "@backstage/plugin-permission-node" "^0.8.0" - "@backstage/plugin-scaffolder-backend-module-azure" "^0.1.14" - "@backstage/plugin-scaffolder-backend-module-bitbucket" "^0.2.12" - "@backstage/plugin-scaffolder-backend-module-bitbucket-cloud" "^0.1.12" - "@backstage/plugin-scaffolder-backend-module-bitbucket-server" "^0.1.12" - "@backstage/plugin-scaffolder-backend-module-gerrit" "^0.1.14" - "@backstage/plugin-scaffolder-backend-module-gitea" "^0.1.12" - "@backstage/plugin-scaffolder-backend-module-github" "^0.4.0" - "@backstage/plugin-scaffolder-backend-module-gitlab" "^0.4.4" - "@backstage/plugin-scaffolder-common" "^1.5.4" - "@backstage/plugin-scaffolder-node" "^0.4.8" - "@backstage/types" "^1.1.1" - "@types/express" "^4.17.6" +"@backstage/plugin-scaffolder-backend@^3.3.0": + version "3.4.0" + resolved "https://registry.yarnpkg.com/@backstage/plugin-scaffolder-backend/-/plugin-scaffolder-backend-3.4.0.tgz#48b22e10568864ac22caaa2372c76a53862d3c69" + integrity sha512-x3HE127pCC9iKMw0gOMcoY3GjNXP9uKJSW1meXBTQAPuuUl96h5I6FUQd1jAbb3dkVCgcAJFqkKGktspvjAWTg== + dependencies: + "@backstage/backend-openapi-utils" "^0.6.8" + "@backstage/backend-plugin-api" "^1.9.0" + "@backstage/catalog-model" "^1.8.0" + "@backstage/config" "^1.3.7" + "@backstage/errors" "^1.3.0" + "@backstage/integration" "^2.0.1" + "@backstage/plugin-catalog-node" "^2.2.0" + "@backstage/plugin-events-node" "^0.4.21" + "@backstage/plugin-permission-common" "^0.9.8" + "@backstage/plugin-permission-node" "^0.10.12" + "@backstage/plugin-scaffolder-common" "^2.1.0" + "@backstage/plugin-scaffolder-node" "^0.13.2" + "@backstage/types" "^1.2.2" "@types/luxon" "^3.0.0" - concat-stream "^2.0.0" - express "^4.17.1" - express-promise-router "^4.1.0" + express "^4.22.0" fs-extra "^11.2.0" globby "^11.0.0" isbinaryfile "^5.0.0" - isolated-vm "^4.5.0" - jsonschema "^1.2.6" + isolated-vm "^6.0.1" + jsonschema "^1.5.0" knex "^3.0.0" lodash "^4.17.21" logform "^2.3.2" luxon "^3.0.0" nunjucks "^3.2.3" - p-limit "^3.1.0" p-queue "^6.6.2" prom-client "^15.0.0" - tar "^6.1.12" triple-beam "^1.4.1" - uuid "^9.0.0" + uuid "^11.0.0" winston "^3.2.1" winston-transport "^4.7.0" yaml "^2.0.0" zen-observable "^0.10.0" - zod "^3.22.4" + zod "^3.25.76 || ^4.0.0" + zod-to-json-schema "^3.25.1" + +"@backstage/plugin-scaffolder-common@^1.7.6": + version "1.7.6" + resolved "https://registry.yarnpkg.com/@backstage/plugin-scaffolder-common/-/plugin-scaffolder-common-1.7.6.tgz#1cc8c94d91207af6f3d9e2a789533124b4f3d8ca" + integrity sha512-JFpYJkvCMwXFfJ5V9Ll26gciaYewa5bbhP+73GaIQ1mIIH5iK2A9+Se9k2xBXHvnSDhmz1PyW5l0aQUuib182w== + dependencies: + "@backstage/catalog-model" "^1.7.6" + "@backstage/errors" "^1.2.7" + "@backstage/integration" "^1.20.0" + "@backstage/plugin-permission-common" "^0.9.6" + "@backstage/types" "^1.2.2" + "@microsoft/fetch-event-source" "^2.0.1" + "@types/json-schema" "^7.0.9" + cross-fetch "^4.0.0" + json-schema "^0.4.0" + uri-template "^2.0.0" + zen-observable "^0.10.0" -"@backstage/plugin-scaffolder-common@^1.5.4": - version "1.5.4" - resolved "https://registry.yarnpkg.com/@backstage/plugin-scaffolder-common/-/plugin-scaffolder-common-1.5.4.tgz#b1fed2735b1a373f8e56e4d99d8e1af972e11f4c" - integrity sha512-oSyKLv+055SIOKge1NrQQrnwb9944Ov1aWm9jWCcQ20+ejWCc9STJWtiZ0POZbtbo6fVpJiBLdzQDqnmLzyuLA== - dependencies: - "@backstage/catalog-model" "^1.5.0" - "@backstage/plugin-permission-common" "^0.8.0" - "@backstage/types" "^1.1.1" +"@backstage/plugin-scaffolder-common@^2.1.0": + version "2.1.0" + resolved "https://registry.yarnpkg.com/@backstage/plugin-scaffolder-common/-/plugin-scaffolder-common-2.1.0.tgz#a616a2f8502a16e085db37c383fdac25d64bd527" + integrity sha512-16eI2BjEgfm8kDRouwfubUB8KUCzCNK3A9uQVsWiwxhN4SUauNV/ngayI+oL7wRtDN08iLepCxOYMB7gzhKiMQ== + dependencies: + "@backstage/catalog-model" "^1.8.0" + "@backstage/errors" "^1.3.0" + "@backstage/integration" "^2.0.1" + "@backstage/plugin-permission-common" "^0.9.8" + "@backstage/types" "^1.2.2" + "@microsoft/fetch-event-source" "^2.0.1" + "@types/json-schema" "^7.0.9" + cross-fetch "^4.0.0" + json-schema "^0.4.0" + uri-template "^2.0.0" + zen-observable "^0.10.0" -"@backstage/plugin-scaffolder-node@^0.4.3", "@backstage/plugin-scaffolder-node@^0.4.7", "@backstage/plugin-scaffolder-node@^0.4.8": - version "0.4.8" - resolved "https://registry.yarnpkg.com/@backstage/plugin-scaffolder-node/-/plugin-scaffolder-node-0.4.8.tgz#7316bab40a7fe13fd8a1efd56ec91c3c2f8a5c2a" - integrity sha512-SjuREQqGoTDJK6r0s4USNIbQ0QYKwnMUWQjjHVDgQt8kzo6XmnFYfbBuf+OR+koe1S0/gHZZM/V2x1lU7VIJRg== - dependencies: - "@backstage/backend-common" "^0.23.3" - "@backstage/backend-plugin-api" "^0.7.0" - "@backstage/catalog-model" "^1.5.0" - "@backstage/errors" "^1.2.4" - "@backstage/integration" "^1.13.0" - "@backstage/plugin-scaffolder-common" "^1.5.4" - "@backstage/types" "^1.1.1" +"@backstage/plugin-scaffolder-node@^0.12.0": + version "0.12.5" + resolved "https://registry.yarnpkg.com/@backstage/plugin-scaffolder-node/-/plugin-scaffolder-node-0.12.5.tgz#7a8029070543d9eb6c666964729b30ff624f27f0" + integrity sha512-B2gVh1X+xf/fuSm0WLU4mGp2Ym39TZi/IVMiVy/VnORyd8mI3WQ05xtzbdD0OkYj4bnOBYf1gRlzBmSz8zM3Yg== + dependencies: + "@backstage/backend-plugin-api" "^1.7.0" + "@backstage/catalog-model" "^1.7.6" + "@backstage/errors" "^1.2.7" + "@backstage/integration" "^1.20.0" + "@backstage/plugin-permission-common" "^0.9.6" + "@backstage/plugin-scaffolder-common" "^1.7.6" + "@backstage/types" "^1.2.2" + "@isomorphic-git/pgp-plugin" "^0.0.7" concat-stream "^2.0.0" fs-extra "^11.2.0" globby "^11.0.0" isomorphic-git "^1.23.0" - jsonschema "^1.2.6" + jsonschema "^1.5.0" + lodash "^4.17.21" p-limit "^3.1.0" - tar "^6.1.12" + tar "^7.5.6" winston "^3.2.1" - zod "^3.22.4" - zod-to-json-schema "^3.20.4" + winston-transport "^4.7.0" + zod "^3.25.76" + zod-to-json-schema "^3.25.1" + +"@backstage/plugin-scaffolder-node@^0.13.1", "@backstage/plugin-scaffolder-node@^0.13.2": + version "0.13.2" + resolved "https://registry.yarnpkg.com/@backstage/plugin-scaffolder-node/-/plugin-scaffolder-node-0.13.2.tgz#5fc054d1c9604b91729bb729f79621620af395a3" + integrity sha512-e63k/yQOYkil8flweu//mV/OjFsvim9ZIVEGTtvqtWEcu5AdZbljCgM0PCRjGZkkFLE+gVE3t8zBEMcLuLmHVA== + dependencies: + "@backstage/backend-plugin-api" "^1.9.0" + "@backstage/catalog-model" "^1.8.0" + "@backstage/errors" "^1.3.0" + "@backstage/integration" "^2.0.1" + "@backstage/plugin-permission-common" "^0.9.8" + "@backstage/plugin-permission-node" "^0.10.12" + "@backstage/plugin-scaffolder-common" "^2.1.0" + "@backstage/types" "^1.2.2" + "@isomorphic-git/pgp-plugin" "^0.0.7" + concat-stream "^2.0.0" + fs-extra "^11.2.0" + globby "^11.0.0" + isomorphic-git "^1.23.0" + jsonschema "^1.5.0" + lodash "^4.17.21" + p-limit "^3.1.0" + tar "^7.5.6" + winston "^3.2.1" + winston-transport "^4.7.0" + zod "^3.25.76 || ^4.0.0" + zod-to-json-schema "^3.25.1" -"@backstage/plugin-scaffolder-react@^1.10.0": - version "1.10.0" - resolved "https://registry.yarnpkg.com/@backstage/plugin-scaffolder-react/-/plugin-scaffolder-react-1.10.0.tgz#3f439cae9622a379fbfc4c3c9f0cd1b12f89156f" - integrity sha512-rfYFlp9Tq9NIuSSLyNQa0KZfqrv/hsSIoUn0qGpMYgK4yIeS3KZNbbzsurmt8ldBtwzvWAR2pacftpWDcL6jkg== - dependencies: - "@backstage/catalog-client" "^1.6.5" - "@backstage/catalog-model" "^1.5.0" - "@backstage/core-components" "^0.14.9" - "@backstage/core-plugin-api" "^1.9.3" - "@backstage/plugin-catalog-react" "^1.12.2" - "@backstage/plugin-permission-react" "^0.4.24" - "@backstage/plugin-scaffolder-common" "^1.5.4" - "@backstage/theme" "^0.5.6" - "@backstage/types" "^1.1.1" - "@backstage/version-bridge" "^1.0.8" +"@backstage/plugin-scaffolder-react@^1.20.1": + version "1.20.1" + resolved "https://registry.yarnpkg.com/@backstage/plugin-scaffolder-react/-/plugin-scaffolder-react-1.20.1.tgz#a27cc60260c00b73e30653fb243643953d56cb43" + integrity sha512-lN/MvLt4q6Leq7FstGcfoV/FydTNX0JX/StpErt48uKEemKExzcCbCwWJB7aQdP6dgiwo6TCLMAOpPr7N8klSA== + dependencies: + "@backstage/catalog-client" "^1.15.0" + "@backstage/catalog-model" "^1.8.0" + "@backstage/core-components" "^0.18.9" + "@backstage/core-plugin-api" "^1.12.5" + "@backstage/frontend-plugin-api" "^0.16.0" + "@backstage/plugin-catalog-react" "^2.1.2" + "@backstage/plugin-permission-react" "^0.5.0" + "@backstage/plugin-scaffolder-common" "^2.1.0" + "@backstage/theme" "^0.7.3" + "@backstage/types" "^1.2.2" + "@backstage/version-bridge" "^1.0.12" "@material-ui/core" "^4.12.2" "@material-ui/icons" "^4.9.1" "@material-ui/lab" "4.0.0-alpha.61" "@react-hookz/web" "^24.0.0" - "@rjsf/core" "5.18.5" - "@rjsf/material-ui" "5.18.5" - "@rjsf/utils" "5.18.5" - "@rjsf/validator-ajv8" "5.18.5" + "@rjsf/core" "5.24.13" + "@rjsf/material-ui" "5.24.13" + "@rjsf/utils" "5.24.13" + "@rjsf/validator-ajv8" "5.24.13" "@types/json-schema" "^7.0.9" - "@types/react" "^16.13.1 || ^17.0.0 || ^18.0.0" + ajv "^8.0.1" + ajv-errors "^3.0.0" classnames "^2.2.6" - flatted "3.3.1" + flatted "^3.4.2" humanize-duration "^3.25.1" + immer "^9.0.6" json-schema "^0.4.0" json-schema-library "^9.0.0" lodash "^4.17.21" luxon "^3.0.0" qs "^6.9.4" react-use "^17.2.4" - use-immer "^0.9.0" + use-immer "^0.11.0" zen-observable "^0.10.0" - zod "^3.22.4" - zod-to-json-schema "^3.20.4" - -"@backstage/plugin-scaffolder@^1.22.0": - version "1.23.0" - resolved "https://registry.yarnpkg.com/@backstage/plugin-scaffolder/-/plugin-scaffolder-1.23.0.tgz#ffdf0ee5e7ce27ec151907f7f833bc08376d8c9f" - integrity sha512-gz8QakYcjnanhovOHKLcl3+ZN4eTu5XyH9X1os4bK+16dfHtZw4smLA0rPKR9vnVT7yVDeNkp6oUJ1jj+REDjA== - dependencies: - "@backstage/catalog-client" "^1.6.5" - "@backstage/catalog-model" "^1.5.0" - "@backstage/core-compat-api" "^0.2.7" - "@backstage/core-components" "^0.14.9" - "@backstage/core-plugin-api" "^1.9.3" - "@backstage/errors" "^1.2.4" - "@backstage/frontend-plugin-api" "^0.6.7" - "@backstage/integration" "^1.13.0" - "@backstage/integration-react" "^1.1.29" - "@backstage/plugin-catalog-common" "^1.0.25" - "@backstage/plugin-catalog-react" "^1.12.2" - "@backstage/plugin-permission-react" "^0.4.24" - "@backstage/plugin-scaffolder-common" "^1.5.4" - "@backstage/plugin-scaffolder-react" "^1.10.0" - "@backstage/types" "^1.1.1" + zod "^3.25.76 || ^4.0.0" + zod-to-json-schema "^3.25.1" + +"@backstage/plugin-scaffolder@^1.36.1": + version "1.36.2" + resolved "https://registry.yarnpkg.com/@backstage/plugin-scaffolder/-/plugin-scaffolder-1.36.2.tgz#90648a8b54317e14c65dc5cbdc16a8c599860e76" + integrity sha512-E6xOYZPT26TsLXFMOsrO/+gFBDeQp/I99EOUb4vFTO+nR2rKdd6qSa3L8rdw2dqM9squjMP9YGkTwRshpo21hA== + dependencies: + "@backstage/catalog-client" "^1.15.0" + "@backstage/catalog-model" "^1.8.0" + "@backstage/core-components" "^0.18.9" + "@backstage/core-plugin-api" "^1.12.5" + "@backstage/errors" "^1.3.0" + "@backstage/frontend-plugin-api" "^0.16.0" + "@backstage/integration" "^2.0.1" + "@backstage/integration-react" "^1.2.17" + "@backstage/plugin-catalog-common" "^1.1.9" + "@backstage/plugin-catalog-react" "^2.1.2" + "@backstage/plugin-permission-react" "^0.5.0" + "@backstage/plugin-scaffolder-common" "^2.1.0" + "@backstage/plugin-scaffolder-react" "^1.20.1" + "@backstage/plugin-techdocs-common" "^0.1.1" + "@backstage/plugin-techdocs-react" "^1.3.10" + "@backstage/types" "^1.2.2" + "@backstage/ui" "^0.14.0" "@codemirror/language" "^6.0.0" "@codemirror/legacy-modes" "^6.1.0" "@codemirror/view" "^6.0.0" "@material-ui/core" "^4.12.2" "@material-ui/icons" "^4.9.1" "@material-ui/lab" "4.0.0-alpha.61" - "@microsoft/fetch-event-source" "^2.0.1" "@react-hookz/web" "^24.0.0" - "@rjsf/core" "5.18.5" - "@rjsf/material-ui" "5.18.5" - "@rjsf/utils" "5.18.5" - "@rjsf/validator-ajv8" "5.18.5" - "@types/react" "^16.13.1 || ^17.0.0 || ^18.0.0" + "@remixicon/react" "^4.6.0" + "@rjsf/core" "5.24.13" + "@rjsf/material-ui" "5.24.13" + "@rjsf/utils" "5.24.13" + "@rjsf/validator-ajv8" "5.24.13" "@uiw/react-codemirror" "^4.9.3" classnames "^2.2.6" - git-url-parse "^14.0.0" + git-url-parse "^15.0.0" humanize-duration "^3.25.1" + idb-keyval "5.1.5" json-schema "^0.4.0" json-schema-library "^9.0.0" jszip "^3.10.1" @@ -4417,215 +5412,204 @@ luxon "^3.0.0" qs "^6.9.4" react-resizable "^3.0.5" + react-resizable-panels "^3.0.4" react-use "^17.2.4" react-window "^1.8.10" yaml "^2.0.0" - zen-observable "^0.10.0" - zod "^3.22.4" - zod-to-json-schema "^3.20.4" - -"@backstage/plugin-search-backend-module-catalog@^0.1.27", "@backstage/plugin-search-backend-module-catalog@^0.1.28": - version "0.1.28" - resolved "https://registry.yarnpkg.com/@backstage/plugin-search-backend-module-catalog/-/plugin-search-backend-module-catalog-0.1.28.tgz#ca400f1a46113321906ebd4ffd26e1ea1b0bca8b" - integrity sha512-guuve+HWTwAWSrKzl9XwFZBu3nJcMECs+h/RSnGtkjrcq8qUYuAsJ8WVYLf5yw5WkFGN2ZczhqAEzPjgNL2WNw== - dependencies: - "@backstage/backend-common" "^0.23.3" - "@backstage/backend-plugin-api" "^0.7.0" - "@backstage/backend-tasks" "^0.5.27" - "@backstage/catalog-client" "^1.6.5" - "@backstage/catalog-model" "^1.5.0" - "@backstage/config" "^1.2.0" - "@backstage/errors" "^1.2.4" - "@backstage/plugin-catalog-common" "^1.0.25" - "@backstage/plugin-catalog-node" "^1.12.4" - "@backstage/plugin-permission-common" "^0.8.0" - "@backstage/plugin-search-backend-node" "^1.2.27" - "@backstage/plugin-search-common" "^1.2.13" - -"@backstage/plugin-search-backend-module-pg@^0.5.31": - version "0.5.32" - resolved "https://registry.yarnpkg.com/@backstage/plugin-search-backend-module-pg/-/plugin-search-backend-module-pg-0.5.32.tgz#d8ec4024139706e5e3d51d7ed9ba80c7a2f9cd99" - integrity sha512-2roOmxjL0E/il4LcYGH/08B5PNyGODBeTcpUk/P5l/Smgu7A7tKoXGq9fvddO/GJzDKcgvhy1I6nj0g+MTgqVw== - dependencies: - "@backstage/backend-app-api" "^0.8.0" - "@backstage/backend-common" "^0.23.3" - "@backstage/backend-plugin-api" "^0.7.0" - "@backstage/config" "^1.2.0" - "@backstage/plugin-search-backend-node" "^1.2.27" - "@backstage/plugin-search-common" "^1.2.13" - knex "^3.0.0" - lodash "^4.17.21" - uuid "^9.0.0" - winston "^3.2.1" - -"@backstage/plugin-search-backend-module-techdocs@^0.1.26", "@backstage/plugin-search-backend-module-techdocs@^0.1.27": - version "0.1.27" - resolved "https://registry.yarnpkg.com/@backstage/plugin-search-backend-module-techdocs/-/plugin-search-backend-module-techdocs-0.1.27.tgz#da3403f5ad591d2a66702678fb4fa6a4a20db67f" - integrity sha512-JnqLycCYS27W5o64QrpIdsuBAsvs/PsR4u9mhG3PzYvXtXXkitYzLDspQHHFTQc2LUyCoMkyPdLGl0cX3QAAjA== - dependencies: - "@backstage/backend-common" "^0.23.3" - "@backstage/backend-plugin-api" "^0.7.0" - "@backstage/backend-tasks" "^0.5.27" - "@backstage/catalog-client" "^1.6.5" - "@backstage/catalog-model" "^1.5.0" - "@backstage/config" "^1.2.0" - "@backstage/plugin-catalog-common" "^1.0.25" - "@backstage/plugin-catalog-node" "^1.12.4" - "@backstage/plugin-permission-common" "^0.8.0" - "@backstage/plugin-search-backend-node" "^1.2.27" - "@backstage/plugin-search-common" "^1.2.13" - "@backstage/plugin-techdocs-node" "^1.12.8" + zod "^3.25.76 || ^4.0.0" + zod-to-json-schema "^3.25.1" + +"@backstage/plugin-search-backend-module-catalog@^0.3.13": + version "0.3.14" + resolved "https://registry.yarnpkg.com/@backstage/plugin-search-backend-module-catalog/-/plugin-search-backend-module-catalog-0.3.14.tgz#b492f81c270cf063f045b01fbf4967c0f283b326" + integrity sha512-8YKDPfTZIePV3ILiSu1EzSiM12ffw+Wx6H8LCwVYvURzcLMYnYz56fQiWTZOfP9VoCuXtw+++Nz5Hzp6ryIyag== + dependencies: + "@backstage/backend-plugin-api" "^1.9.0" + "@backstage/catalog-client" "^1.15.0" + "@backstage/catalog-model" "^1.8.0" + "@backstage/config" "^1.3.7" + "@backstage/errors" "^1.3.0" + "@backstage/plugin-catalog-common" "^1.1.9" + "@backstage/plugin-catalog-node" "^2.2.0" + "@backstage/plugin-permission-common" "^0.9.8" + "@backstage/plugin-search-backend-node" "^1.4.3" + "@backstage/plugin-search-common" "^1.2.23" + +"@backstage/plugin-search-backend-module-techdocs@^0.4.12": + version "0.4.13" + resolved "https://registry.yarnpkg.com/@backstage/plugin-search-backend-module-techdocs/-/plugin-search-backend-module-techdocs-0.4.13.tgz#f6360e83496b77ac512f1236830e5a88d1d16ca5" + integrity sha512-NqsR28R3nBYSh+ykKZYqBCsU/bOGK5srOfsZkLEyb7pcZKUtme4JCO4aivwDQBwy1ysmRgYDZFAHO3Nkbn9Fpg== + dependencies: + "@backstage/backend-plugin-api" "^1.9.0" + "@backstage/catalog-client" "^1.15.0" + "@backstage/catalog-model" "^1.8.0" + "@backstage/config" "^1.3.7" + "@backstage/plugin-catalog-common" "^1.1.9" + "@backstage/plugin-catalog-node" "^2.2.0" + "@backstage/plugin-permission-common" "^0.9.8" + "@backstage/plugin-search-backend-node" "^1.4.3" + "@backstage/plugin-search-common" "^1.2.23" + "@backstage/plugin-techdocs-node" "^1.14.5" lodash "^4.17.21" - node-fetch "^2.6.7" p-limit "^3.1.0" -"@backstage/plugin-search-backend-node@^1.2.26", "@backstage/plugin-search-backend-node@^1.2.27": - version "1.2.27" - resolved "https://registry.yarnpkg.com/@backstage/plugin-search-backend-node/-/plugin-search-backend-node-1.2.27.tgz#087181c4e76113c5e0dd7770a7ce899fe9f88afd" - integrity sha512-kh55tMLP1Oi07LfnKlKfNPvwSrqr+uttiUjDP1BWoILZVshYT8OoeONb5ySLu3gei+9arnrtRmt4q9ewJNwplQ== - dependencies: - "@backstage/backend-common" "^0.23.3" - "@backstage/backend-plugin-api" "^0.7.0" - "@backstage/backend-tasks" "^0.5.27" - "@backstage/config" "^1.2.0" - "@backstage/errors" "^1.2.4" - "@backstage/plugin-permission-common" "^0.8.0" - "@backstage/plugin-search-common" "^1.2.13" +"@backstage/plugin-search-backend-node@^1.4.3": + version "1.4.3" + resolved "https://registry.yarnpkg.com/@backstage/plugin-search-backend-node/-/plugin-search-backend-node-1.4.3.tgz#aa847ad9af4c9c047669ae7e30d800019dbccd2f" + integrity sha512-el19m1XBs78n3rGdK6wbTPZK4kBfBFnanwYPSuBZfmY2eRUG0qSVkzrUFU7EYkVShIbLYuvtONIOO1PSWwcp0w== + dependencies: + "@backstage/backend-plugin-api" "^1.9.0" + "@backstage/config" "^1.3.7" + "@backstage/errors" "^1.3.0" + "@backstage/plugin-permission-common" "^0.9.8" + "@backstage/plugin-search-common" "^1.2.23" "@types/lunr" "^2.3.3" lodash "^4.17.21" lunr "^2.3.9" ndjson "^2.0.0" - uuid "^9.0.0" + uuid "^11.0.0" -"@backstage/plugin-search-backend@^1.5.13": - version "1.5.14" - resolved "https://registry.yarnpkg.com/@backstage/plugin-search-backend/-/plugin-search-backend-1.5.14.tgz#f9acaa881cb9d3a5d89aa1cc2bb8d369e1f7d7dd" - integrity sha512-vcKf868KEBwllvBMQpcaBFlx27sQCAdl6Hxw/iwkoDN92/b0r1FYSttkZKcVtxP5u3tswSMzL5vvA7CDn9XXLA== - dependencies: - "@backstage/backend-common" "^0.23.3" - "@backstage/backend-defaults" "^0.4.0" - "@backstage/backend-openapi-utils" "^0.1.15" - "@backstage/backend-plugin-api" "^0.7.0" - "@backstage/config" "^1.2.0" - "@backstage/errors" "^1.2.4" - "@backstage/plugin-permission-common" "^0.8.0" - "@backstage/plugin-permission-node" "^0.8.0" - "@backstage/plugin-search-backend-node" "^1.2.27" - "@backstage/plugin-search-common" "^1.2.13" - "@backstage/types" "^1.1.1" - "@types/express" "^4.17.6" +"@backstage/plugin-search-backend@^2.1.0": + version "2.1.1" + resolved "https://registry.yarnpkg.com/@backstage/plugin-search-backend/-/plugin-search-backend-2.1.1.tgz#a4e5265d2e162fb8c4be06cb7d140f3c1213ccd9" + integrity sha512-CTjFkHafm34VesvuEKYA+XC7rkmle/HusZRGFOm4WDuFRf1fOq7ufux0Ph1siy/hGbryITGM4ykY7c5GcdNVag== + dependencies: + "@backstage/backend-openapi-utils" "^0.6.8" + "@backstage/backend-plugin-api" "^1.9.0" + "@backstage/config" "^1.3.7" + "@backstage/errors" "^1.3.0" + "@backstage/plugin-permission-common" "^0.9.8" + "@backstage/plugin-permission-node" "^0.10.12" + "@backstage/plugin-search-backend-node" "^1.4.3" + "@backstage/plugin-search-common" "^1.2.23" + "@backstage/types" "^1.2.2" dataloader "^2.0.0" - express "^4.17.1" + express "^4.22.0" lodash "^4.17.21" qs "^6.10.1" - winston "^3.2.1" yn "^4.0.0" - zod "^3.22.4" - -"@backstage/plugin-search-common@^1.2.13": - version "1.2.13" - resolved "https://registry.yarnpkg.com/@backstage/plugin-search-common/-/plugin-search-common-1.2.13.tgz#393899d80d9efad53fd0a285d5aea7acccef1d5a" - integrity sha512-DgkQ6ld8vz3NoRYmk7U0lUy6H6K82mXaDbDuBZoWJm8fActA0ZGU2YkkhSq+W0yUYn6xmLIB5rC5AwRkGSYcSw== - dependencies: - "@backstage/plugin-permission-common" "^0.8.0" - "@backstage/types" "^1.1.1" - -"@backstage/plugin-search-react@^1.7.12", "@backstage/plugin-search-react@^1.7.13": - version "1.7.13" - resolved "https://registry.yarnpkg.com/@backstage/plugin-search-react/-/plugin-search-react-1.7.13.tgz#dbb0287a52e174d6bbdddd0cc004786ad5a7d3e4" - integrity sha512-3FTKHDlplEBDbPvk6yGnHw6qOcSJ8ww2VOTTe5/lPJCtFZY7gRiUuySCHdl+zByvtPHSHyG0zORZEDRt/7C4CA== - dependencies: - "@backstage/core-components" "^0.14.9" - "@backstage/core-plugin-api" "^1.9.3" - "@backstage/frontend-plugin-api" "^0.6.7" - "@backstage/plugin-search-common" "^1.2.13" - "@backstage/theme" "^0.5.6" - "@backstage/types" "^1.1.1" - "@backstage/version-bridge" "^1.0.8" + zod "^3.25.76 || ^4.0.0" + +"@backstage/plugin-search-common@^1.2.23": + version "1.2.23" + resolved "https://registry.yarnpkg.com/@backstage/plugin-search-common/-/plugin-search-common-1.2.23.tgz#ba2696bf3b0ee448335bbf196f5a674f924f1a08" + integrity sha512-/4kGeHOv4+zf5Y7s3WuV73Z6vr9nw9WKhx5S+4q38NCw8oZZDmJni/FHFLSJia1Gg1KMahT1H9B8tPSHE7os1A== + dependencies: + "@backstage/plugin-permission-common" "^0.9.8" + "@backstage/types" "^1.2.2" + +"@backstage/plugin-search-react@^1.11.0", "@backstage/plugin-search-react@^1.11.3": + version "1.11.3" + resolved "https://registry.yarnpkg.com/@backstage/plugin-search-react/-/plugin-search-react-1.11.3.tgz#b58e7659687a475f5287e74f4db172085ea947df" + integrity sha512-acbKD3dRi4QiVNSj8S35NaVDPPZEgqsi+IppyKoxdy57gzTAQbHg57gT/8eqx22rz6BOiwSstosQTUKj8pMSMg== + dependencies: + "@backstage/core-components" "^0.18.9" + "@backstage/core-plugin-api" "^1.12.5" + "@backstage/frontend-plugin-api" "^0.16.2" + "@backstage/plugin-search-common" "^1.2.23" + "@backstage/theme" "^0.7.3" + "@backstage/types" "^1.2.2" + "@backstage/version-bridge" "^1.0.12" "@material-ui/core" "^4.12.2" "@material-ui/icons" "^4.9.1" "@material-ui/lab" "4.0.0-alpha.61" - "@types/react" "^16.13.1 || ^17.0.0 || ^18.0.0" lodash "^4.17.21" qs "^6.9.4" react-use "^17.3.2" + uuid "^11.0.2" + zod "^4.0.0" -"@backstage/plugin-search@^1.4.13": - version "1.4.14" - resolved "https://registry.yarnpkg.com/@backstage/plugin-search/-/plugin-search-1.4.14.tgz#2b9a697266e32993d9b66cb88ee54661e7fd3f8a" - integrity sha512-ZPghP7LtUHQIh5Ia/zV74IkOYaFPRo2fIL7OT3a/mA4sodW/c1bMjGRSVeRVgeWZC2ozJoO1ZYvyod7amN4qtg== - dependencies: - "@backstage/core-compat-api" "^0.2.7" - "@backstage/core-components" "^0.14.9" - "@backstage/core-plugin-api" "^1.9.3" - "@backstage/errors" "^1.2.4" - "@backstage/frontend-plugin-api" "^0.6.7" - "@backstage/plugin-catalog-react" "^1.12.2" - "@backstage/plugin-search-common" "^1.2.13" - "@backstage/plugin-search-react" "^1.7.13" - "@backstage/types" "^1.1.1" - "@backstage/version-bridge" "^1.0.8" +"@backstage/plugin-search@^1.7.0": + version "1.7.3" + resolved "https://registry.yarnpkg.com/@backstage/plugin-search/-/plugin-search-1.7.3.tgz#b604bed7b967299f7f7ef206cb368c857677dd1f" + integrity sha512-64+kdIFF16diIJqPbVEXtvNL1izqg9KD9eF81+gCU4zNPt24+FRxwirJ3jE+9O/mtUiac/52+UxkQkvwKqorxQ== + dependencies: + "@backstage/core-components" "^0.18.9" + "@backstage/core-plugin-api" "^1.12.5" + "@backstage/errors" "^1.3.0" + "@backstage/frontend-plugin-api" "^0.16.2" + "@backstage/plugin-catalog-react" "^2.1.4" + "@backstage/plugin-search-common" "^1.2.23" + "@backstage/plugin-search-react" "^1.11.3" + "@backstage/types" "^1.2.2" + "@backstage/ui" "^0.14.2" + "@backstage/version-bridge" "^1.0.12" "@material-ui/core" "^4.12.2" "@material-ui/icons" "^4.9.1" - "@types/react" "^16.13.1 || ^17.0.0 || ^18.0.0" qs "^6.9.4" react-use "^17.2.4" - -"@backstage/plugin-signals-react@^0.0.4": - version "0.0.4" - resolved "https://registry.yarnpkg.com/@backstage/plugin-signals-react/-/plugin-signals-react-0.0.4.tgz#37dbba59de44ab2485645875d9550b242ebc71bb" - integrity sha512-ckR1QbJlV7zF+Z8nrFSQUDvgXDQRYko8EOIKhJAgWmLHqzCMfUE3sBWFTc8QXljPzbQXqCfeuHqpvPsPQ7m7mg== - dependencies: - "@backstage/core-plugin-api" "^1.9.3" - "@backstage/types" "^1.1.1" + zod "^4.0.0" + +"@backstage/plugin-signals-node@^0.1.26": + version "0.1.29" + resolved "https://registry.yarnpkg.com/@backstage/plugin-signals-node/-/plugin-signals-node-0.1.29.tgz#1df2ee6a730187e1b341d4baedc8a61396fbc681" + integrity sha512-UyxZf/m4ct5owQPLATXo5lQPfy21t2/3t1OCKM/Ph5obSvmq9HflBr01lvoQaRplpsxneBh3+R/BjzMBjTzLOg== + dependencies: + "@backstage/backend-plugin-api" "^1.8.0" + "@backstage/config" "^1.3.6" + "@backstage/plugin-auth-node" "^0.6.14" + "@backstage/plugin-events-node" "^0.4.20" + "@backstage/types" "^1.2.2" + express "^4.22.0" + uuid "^11.0.0" + ws "^8.18.0" + +"@backstage/plugin-signals-react@^0.0.21": + version "0.0.21" + resolved "https://registry.yarnpkg.com/@backstage/plugin-signals-react/-/plugin-signals-react-0.0.21.tgz#44931632246ad7cf3712e46ebf2dfb4015ee31fa" + integrity sha512-nbrYwF/KLQmmsgqgtxCII9gie4i8sUBuD14F5Kzk2/HIZLZLlDXCs4JEiW1dQ+xCgiSKJkewQgFziF35RsRZRA== + dependencies: + "@backstage/core-plugin-api" "^1.12.5" + "@backstage/types" "^1.2.2" "@material-ui/core" "^4.12.4" -"@backstage/plugin-techdocs-backend@^1.10.8": - version "1.10.9" - resolved "https://registry.yarnpkg.com/@backstage/plugin-techdocs-backend/-/plugin-techdocs-backend-1.10.9.tgz#731c1fd5ea84d2cd64f85b1ff61f53f594e8cedd" - integrity sha512-/0elT2n2onBfHv1YKQx84uDsg+nPbH86RL9IiT8riM3hlxLHeNUlzDLeLy1uQ3f003tYcZB5qSybk5u+KGtXlQ== - dependencies: - "@backstage/backend-common" "^0.23.3" - "@backstage/backend-plugin-api" "^0.7.0" - "@backstage/catalog-client" "^1.6.5" - "@backstage/catalog-model" "^1.5.0" - "@backstage/config" "^1.2.0" - "@backstage/errors" "^1.2.4" - "@backstage/integration" "^1.13.0" - "@backstage/plugin-catalog-common" "^1.0.25" - "@backstage/plugin-permission-common" "^0.8.0" - "@backstage/plugin-search-backend-module-techdocs" "^0.1.27" - "@backstage/plugin-techdocs-node" "^1.12.8" - "@types/express" "^4.17.6" - express "^4.17.1" +"@backstage/plugin-techdocs-backend@^2.1.6": + version "2.1.7" + resolved "https://registry.yarnpkg.com/@backstage/plugin-techdocs-backend/-/plugin-techdocs-backend-2.1.7.tgz#c33af1dd80149744039ba599ce2a0248218edbea" + integrity sha512-myuaK2ESJj2PmYD5xBODAZL2ymjsHPIpACcow8DWXI/PkdKgc6/y24gz/FlDATY0KQMccjS0/IiMOggTWWEKIg== + dependencies: + "@backstage/backend-plugin-api" "^1.9.0" + "@backstage/catalog-client" "^1.15.0" + "@backstage/catalog-model" "^1.8.0" + "@backstage/config" "^1.3.7" + "@backstage/errors" "^1.3.0" + "@backstage/integration" "^2.0.1" + "@backstage/plugin-catalog-node" "^2.2.0" + "@backstage/plugin-techdocs-node" "^1.14.5" + "@backstage/types" "^1.2.2" + express "^4.22.0" express-promise-router "^4.1.0" fs-extra "^11.2.0" knex "^3.0.0" - lodash "^4.17.21" - node-fetch "^2.6.7" p-limit "^3.1.0" winston "^3.2.1" -"@backstage/plugin-techdocs-module-addons-contrib@^1.1.11": - version "1.1.12" - resolved "https://registry.yarnpkg.com/@backstage/plugin-techdocs-module-addons-contrib/-/plugin-techdocs-module-addons-contrib-1.1.12.tgz#2365a8d53a1dbc84492ba4a9f5086af332a17c2a" - integrity sha512-VqSRDowRGqTa9RMxo/CSsVW7Mez3qNwq/NksUuYZlLTDTrlj2o3WyUQfuQvlVr+oq4ch/JwNdvBZG4dbd5ArDQ== - dependencies: - "@backstage/core-components" "^0.14.9" - "@backstage/core-plugin-api" "^1.9.3" - "@backstage/integration" "^1.13.0" - "@backstage/integration-react" "^1.1.29" - "@backstage/plugin-techdocs-react" "^1.2.6" +"@backstage/plugin-techdocs-common@^0.1.1": + version "0.1.1" + resolved "https://registry.yarnpkg.com/@backstage/plugin-techdocs-common/-/plugin-techdocs-common-0.1.1.tgz#b392d6c043149bf5aee552dffeb81ffa98dc0fd8" + integrity sha512-MWYW1uVweSJQkI9it2g0xM/4YfykS0GzIlbA3D9YawQIfqQ7UCdsblKHt2Xb3eWLrk+itWrp4IXbW2bUa02DyA== + +"@backstage/plugin-techdocs-module-addons-contrib@^1.1.34": + version "1.1.35" + resolved "https://registry.yarnpkg.com/@backstage/plugin-techdocs-module-addons-contrib/-/plugin-techdocs-module-addons-contrib-1.1.35.tgz#29a0dc810fb2ecd034eb7ab83acb735ff7f87d7d" + integrity sha512-eJI4CM1Joiaz+GiMUxASlyf32+eIuwhuMZahZnMCa2ujEPXHIJIqSb7xmOmpcWpSztCgCpBkvlgG4VzoMx8DwQ== + dependencies: + "@backstage/core-components" "^0.18.9" + "@backstage/core-plugin-api" "^1.12.5" + "@backstage/frontend-plugin-api" "^0.16.0" + "@backstage/integration" "^2.0.1" + "@backstage/integration-react" "^1.2.17" + "@backstage/plugin-techdocs-react" "^1.3.10" "@material-ui/core" "^4.12.2" "@material-ui/icons" "^4.9.1" "@react-hookz/web" "^24.0.0" - git-url-parse "^14.0.0" + git-url-parse "^15.0.0" photoswipe "^5.3.7" -"@backstage/plugin-techdocs-node@^1.12.8": - version "1.12.8" - resolved "https://registry.yarnpkg.com/@backstage/plugin-techdocs-node/-/plugin-techdocs-node-1.12.8.tgz#7526a96e77ea0ad71305e5da0d3fb7345c38d6e7" - integrity sha512-IzOn8p9EbpXEjI4B0yg0PChjTaySaUQP/ZxUCWRSPC32t14E5YlMOU3pCLCtqW27l+v8438lr0s5Css5XMVbJA== +"@backstage/plugin-techdocs-node@^1.14.5": + version "1.14.5" + resolved "https://registry.yarnpkg.com/@backstage/plugin-techdocs-node/-/plugin-techdocs-node-1.14.5.tgz#550174157c31efca221904985dc86f7c0168d17f" + integrity sha512-tK6LN4Yc13S19B1MyxN3wzL/eo/A61ZR/KBpRDxnDmEBU35aFtv+Dsi/1fx3K9ox0OA8h8wby/gkaNIEKf1q9g== dependencies: "@aws-sdk/client-s3" "^3.350.0" "@aws-sdk/credential-providers" "^3.350.0" @@ -4633,22 +5617,22 @@ "@aws-sdk/types" "^3.347.0" "@azure/identity" "^4.0.0" "@azure/storage-blob" "^12.5.0" - "@backstage/backend-common" "^0.23.3" - "@backstage/backend-plugin-api" "^0.7.0" - "@backstage/catalog-model" "^1.5.0" - "@backstage/config" "^1.2.0" - "@backstage/errors" "^1.2.4" - "@backstage/integration" "^1.13.0" - "@backstage/integration-aws-node" "^0.1.12" - "@backstage/plugin-search-common" "^1.2.13" + "@backstage/backend-plugin-api" "^1.9.0" + "@backstage/catalog-model" "^1.8.0" + "@backstage/config" "^1.3.7" + "@backstage/errors" "^1.3.0" + "@backstage/integration" "^2.0.1" + "@backstage/integration-aws-node" "^0.1.21" + "@backstage/plugin-search-common" "^1.2.23" + "@backstage/plugin-techdocs-common" "^0.1.1" "@google-cloud/storage" "^7.0.0" - "@smithy/node-http-handler" "^2.1.7" + "@smithy/node-http-handler" "^3.0.0" "@trendyol-js/openstack-swift-sdk" "^0.0.7" "@types/express" "^4.17.6" dockerode "^4.0.0" - express "^4.17.1" + express "^4.22.0" fs-extra "^11.2.0" - git-url-parse "^14.0.0" + git-url-parse "^15.0.0" hpagent "^1.2.0" js-yaml "^4.0.0" json5 "^2.1.3" @@ -4657,124 +5641,127 @@ recursive-readdir "^2.2.2" winston "^3.2.1" -"@backstage/plugin-techdocs-react@^1.2.5", "@backstage/plugin-techdocs-react@^1.2.6": - version "1.2.6" - resolved "https://registry.yarnpkg.com/@backstage/plugin-techdocs-react/-/plugin-techdocs-react-1.2.6.tgz#c557cfe547cd8131f32139f3d9aa7286d1a6b9f3" - integrity sha512-BRvOOKOEuuYlYhY5ptlT2FZamJZg+An+H6eLWgOygOb39SdApp15e65mnbFyh0PFyUepgHrnMpnmtEvbHNNgEQ== - dependencies: - "@backstage/catalog-model" "^1.5.0" - "@backstage/config" "^1.2.0" - "@backstage/core-components" "^0.14.9" - "@backstage/core-plugin-api" "^1.9.3" - "@backstage/version-bridge" "^1.0.8" +"@backstage/plugin-techdocs-react@^1.3.10", "@backstage/plugin-techdocs-react@^1.3.9": + version "1.3.10" + resolved "https://registry.yarnpkg.com/@backstage/plugin-techdocs-react/-/plugin-techdocs-react-1.3.10.tgz#e3fb2ccf2e3d78435142193671d6b8177574e20f" + integrity sha512-cvU0fqidMwtlvKb1OVMAkO2OOZB9+h3YW57b7qtOmBc9/TwtoK2zLYu/XKzySZYp7nIEkKYMxcfnJ30oxQD40g== + dependencies: + "@backstage/catalog-model" "^1.8.0" + "@backstage/config" "^1.3.7" + "@backstage/core-components" "^0.18.9" + "@backstage/core-plugin-api" "^1.12.5" + "@backstage/frontend-plugin-api" "^0.16.0" + "@backstage/plugin-techdocs-common" "^0.1.1" + "@backstage/version-bridge" "^1.0.12" "@material-ui/core" "^4.12.2" "@material-ui/styles" "^4.11.0" - "@types/react" "^16.13.1 || ^17.0.0 || ^18.0.0" jss "~10.10.0" lodash "^4.17.21" react-helmet "6.1.0" react-use "^17.2.4" -"@backstage/plugin-techdocs@^1.10.6": - version "1.10.7" - resolved "https://registry.yarnpkg.com/@backstage/plugin-techdocs/-/plugin-techdocs-1.10.7.tgz#38e5cdf7c1f884c496d2c1af8955c3f82989c67f" - integrity sha512-ESMSM+wRPJrJHhlCqyiWQQSgVDCoE7ngHIOkOYLniFg/bEayGeIa/XKfgEs4ENmUDODB57fkOiTpdhcq/9ifoA== - dependencies: - "@backstage/catalog-model" "^1.5.0" - "@backstage/config" "^1.2.0" - "@backstage/core-compat-api" "^0.2.7" - "@backstage/core-components" "^0.14.9" - "@backstage/core-plugin-api" "^1.9.3" - "@backstage/errors" "^1.2.4" - "@backstage/frontend-plugin-api" "^0.6.7" - "@backstage/integration" "^1.13.0" - "@backstage/integration-react" "^1.1.29" - "@backstage/plugin-auth-react" "^0.1.4" - "@backstage/plugin-catalog-react" "^1.12.2" - "@backstage/plugin-search-common" "^1.2.13" - "@backstage/plugin-search-react" "^1.7.13" - "@backstage/plugin-techdocs-react" "^1.2.6" - "@backstage/theme" "^0.5.6" +"@backstage/plugin-techdocs@^1.17.2": + version "1.17.5" + resolved "https://registry.yarnpkg.com/@backstage/plugin-techdocs/-/plugin-techdocs-1.17.5.tgz#32387a044fc966578a2c589985347603efdad963" + integrity sha512-QFq/UZF53bq7EEKhsiK4HeF23C4wBX8EJ7GQyGCZUrIfb+Mg97J62S9tGhUyBEHq/aUfKaOU+QzE31faspMrrQ== + dependencies: + "@backstage/catalog-client" "^1.15.0" + "@backstage/catalog-model" "^1.8.0" + "@backstage/config" "^1.3.7" + "@backstage/core-components" "^0.18.9" + "@backstage/core-plugin-api" "^1.12.5" + "@backstage/errors" "^1.3.0" + "@backstage/frontend-plugin-api" "^0.16.2" + "@backstage/integration" "^2.0.1" + "@backstage/integration-react" "^1.2.17" + "@backstage/plugin-auth-react" "^0.1.26" + "@backstage/plugin-catalog-react" "^2.1.4" + "@backstage/plugin-search-common" "^1.2.23" + "@backstage/plugin-search-react" "^1.11.3" + "@backstage/plugin-techdocs-common" "^0.1.1" + "@backstage/plugin-techdocs-react" "^1.3.10" + "@backstage/theme" "^0.7.3" + "@backstage/ui" "^0.14.2" "@material-ui/core" "^4.12.2" "@material-ui/icons" "^4.9.1" "@material-ui/lab" "4.0.0-alpha.61" "@material-ui/styles" "^4.10.0" "@microsoft/fetch-event-source" "^2.0.1" - "@types/react" "^16.13.1 || ^17.0.0 || ^18.0.0" - dompurify "^3.0.0" - git-url-parse "^14.0.0" - jss "~10.10.0" + "@remixicon/react" "^4.6.0" + dompurify "^3.3.2" + git-url-parse "^15.0.0" lodash "^4.17.21" react-helmet "6.1.0" - react-use "^17.2.4" - -"@backstage/plugin-user-settings-common@^0.0.1": - version "0.0.1" - resolved "https://registry.yarnpkg.com/@backstage/plugin-user-settings-common/-/plugin-user-settings-common-0.0.1.tgz#1bf6d16b814ab52b2d4b85f4eb41544a2a631b6c" - integrity sha512-1zLm0746Oay5SaT6B/ydrMzMxQQO0G415T9IAo8np0nbwkFQM69VtXYDz6J0S0oZMkfPqlpV7mIJyrJrPZdjxQ== - -"@backstage/plugin-user-settings@^0.8.8": - version "0.8.10" - resolved "https://registry.yarnpkg.com/@backstage/plugin-user-settings/-/plugin-user-settings-0.8.10.tgz#80bd8313b8a7b6bc3c8c6bebaee2dfe62a8b5b70" - integrity sha512-xArI0L02m0p5qs7AmEjKDtGSo9VekX6aSSW7JHrF1oUa3nDwuKqBFwYFPYvL6r4BFQ1amGoUrAWU/ntxl/Nu5g== - dependencies: - "@backstage/core-app-api" "^1.14.1" - "@backstage/core-compat-api" "^0.2.7" - "@backstage/core-components" "^0.14.9" - "@backstage/core-plugin-api" "^1.9.3" - "@backstage/errors" "^1.2.4" - "@backstage/frontend-plugin-api" "^0.6.7" - "@backstage/plugin-catalog-react" "^1.12.2" - "@backstage/plugin-signals-react" "^0.0.4" - "@backstage/plugin-user-settings-common" "^0.0.1" - "@backstage/theme" "^0.5.6" - "@backstage/types" "^1.1.1" + react-use "^17.2.4" + zod "^4.0.0" + +"@backstage/plugin-user-settings-common@^0.1.0": + version "0.1.0" + resolved "https://registry.yarnpkg.com/@backstage/plugin-user-settings-common/-/plugin-user-settings-common-0.1.0.tgz#479a1e8e5fa85c0bfb451420b7023e4584b2453c" + integrity sha512-hAqgQrlSt9FvLVTwpPj/yKkS8NuDwAlMxqrsqlHXQ4Fho+THP4VI5SN5Qi2pDyhn//pZ7vtzrC0eEApDXHDjJg== + dependencies: + "@backstage/types" "^1.2.2" + +"@backstage/plugin-user-settings@^0.9.1": + version "0.9.2" + resolved "https://registry.yarnpkg.com/@backstage/plugin-user-settings/-/plugin-user-settings-0.9.2.tgz#e9c616de2ca7783cbc1f66057b12c8acd692535b" + integrity sha512-XA2nwUsUsOW+yw7MoSS0ikeqzG+jaqo3rD8LAKxDRKR1SgLFqi3Ixr+XcTA4IDrvmGdFDorF0N1VMUSzmmBMkw== + dependencies: + "@backstage/catalog-model" "^1.8.0" + "@backstage/core-app-api" "^1.20.0" + "@backstage/core-components" "^0.18.9" + "@backstage/core-plugin-api" "^1.12.5" + "@backstage/errors" "^1.3.0" + "@backstage/frontend-plugin-api" "^0.16.0" + "@backstage/plugin-catalog-react" "^2.1.2" + "@backstage/plugin-signals-react" "^0.0.21" + "@backstage/plugin-user-settings-common" "^0.1.0" + "@backstage/theme" "^0.7.3" + "@backstage/types" "^1.2.2" + "@backstage/ui" "^0.14.0" "@material-ui/core" "^4.12.2" "@material-ui/icons" "^4.9.1" "@material-ui/lab" "4.0.0-alpha.61" - "@types/react" "^16.13.1 || ^17.0.0 || ^18.0.0" + dataloader "^2.0.0" react-use "^17.2.4" zen-observable "^0.10.0" -"@backstage/release-manifests@^0.0.11": - version "0.0.11" - resolved "https://registry.npmmirror.com/@backstage/release-manifests/-/release-manifests-0.0.11.tgz#e842816d249f6903c8121253358a3211425ac83e" - integrity sha512-OZFwv7ohRRB9fDQ+fShgQgM5H4VvKXAtvErSjZCmqGnUiNpyT9e/km0wF2/QVTm2ry5kCEj37f/B/dDp0gmNAw== - dependencies: - cross-fetch "^4.0.0" - -"@backstage/test-utils@^1.5.7": - version "1.5.9" - resolved "https://registry.yarnpkg.com/@backstage/test-utils/-/test-utils-1.5.9.tgz#397959c30598d2e5cab0b62a3ccfbc2db263d3a5" - integrity sha512-m/9dPrseTJRZ0Scu6lKt5K+GWTAI5An/2CtvthCZ7RuN4TVKRLFhL46QY+xjEkObjK4c6XCC3MUFEjHN00KZag== - dependencies: - "@backstage/config" "^1.2.0" - "@backstage/core-app-api" "^1.14.1" - "@backstage/core-plugin-api" "^1.9.3" - "@backstage/plugin-permission-common" "^0.8.0" - "@backstage/plugin-permission-react" "^0.4.24" - "@backstage/theme" "^0.5.6" - "@backstage/types" "^1.1.1" +"@backstage/release-manifests@^0.0.13": + version "0.0.13" + resolved "https://registry.yarnpkg.com/@backstage/release-manifests/-/release-manifests-0.0.13.tgz#2d2bac16ca657f77c641dc190523de55b4920477" + integrity sha512-NF+Fl1b746A9b39dQqvzC237k5/QUWcfGVMp8ZYjoQ48hrY1UdH7xiwrLB7WmhvYIMRzdjhY3uR1FM67EQFPQw== + +"@backstage/test-utils@^1.7.14", "@backstage/test-utils@^1.7.16": + version "1.7.17" + resolved "https://registry.yarnpkg.com/@backstage/test-utils/-/test-utils-1.7.17.tgz#e188007191752b2e2415e89fd2e63dde59f1dcd5" + integrity sha512-8aoC6ox9ltqSlp2u1Xsf22BQJUSqgqmddmt0cVxFDC8HzCk+kBZCsqRxZH2/2tkwvKl5VarQSE15zhWNxb6HvA== + dependencies: + "@backstage/config" "^1.3.7" + "@backstage/core-app-api" "^1.20.0" + "@backstage/core-plugin-api" "^1.12.5" + "@backstage/plugin-permission-common" "^0.9.8" + "@backstage/plugin-permission-react" "^0.5.0" + "@backstage/theme" "^0.7.3" + "@backstage/types" "^1.2.2" "@material-ui/core" "^4.12.2" "@material-ui/icons" "^4.9.1" - "@types/react" "^16.13.1 || ^17.0.0 || ^18.0.0" cross-fetch "^4.0.0" i18next "^22.4.15" zen-observable "^0.10.0" -"@backstage/theme@^0.4.4": - version "0.4.4" - resolved "https://registry.npmmirror.com/@backstage/theme/-/theme-0.4.4.tgz#807735b58a5e1b2a0cdb50fc05ad83656f2f66cb" - integrity sha512-Mvs0FrEnQtyO2dVNPyo1wjkNHbN3vefIdj4V27SFiX9W9sj+R1b4rzFACF6xjVzfdV9oo9HdsL59CMnFlDxz4Q== +"@backstage/theme@^0.6.8": + version "0.6.8" + resolved "https://registry.yarnpkg.com/@backstage/theme/-/theme-0.6.8.tgz#703088101ca20205d77de6a688881e909dd57ae4" + integrity sha512-hNUoOjirVIVht6GbDFt6vEej4hA7Kq3trJmyWhKuAKndPD+azjhzMOnGM7Rzj5qIkJeCNB6qcC89+NV6no1HzA== dependencies: "@emotion/react" "^11.10.5" "@emotion/styled" "^11.10.5" "@mui/material" "^5.12.2" -"@backstage/theme@^0.5.0", "@backstage/theme@^0.5.6": - version "0.5.6" - resolved "https://registry.yarnpkg.com/@backstage/theme/-/theme-0.5.6.tgz#18645cbe42fb5667946e0a5dd38f2fb0bb056597" - integrity sha512-7/0sZYAS+2p/eEWC8eBINWHNv4jas6R20e0R5f0fc1YvLnVQ8HhnpZ6+d2vDMe7X2A2TBBcyJbSCybHdRAKpAA== +"@backstage/theme@^0.7.1", "@backstage/theme@^0.7.2", "@backstage/theme@^0.7.3": + version "0.7.3" + resolved "https://registry.yarnpkg.com/@backstage/theme/-/theme-0.7.3.tgz#57442b42dd3ec086769f5cd95303b003fa8fee4c" + integrity sha512-EE9Mm6GjEMDwr/+iXmJfMq2jIJDCnjPbaua5YCtUN/E1Q/FOBcFmijJeTLn8gF0xeEiYxrZhQf0NBRlxfapR/g== dependencies: "@emotion/react" "^11.10.5" "@emotion/styled" "^11.10.5" @@ -4785,12 +5772,46 @@ resolved "https://registry.npmmirror.com/@backstage/types/-/types-1.1.1.tgz#c9ccb30357005e7fb5fa2ac140198059976eb076" integrity sha512-1cUGu+FwiJZCBOuecd0BOhIRkQYllb+7no9hHhxpAsx/DvsPGMVQMGOMvtdTycdT9SQ5MuSyFwI9wpXp2DwVvQ== -"@backstage/version-bridge@^1.0.7", "@backstage/version-bridge@^1.0.8": - version "1.0.8" - resolved "https://registry.npmmirror.com/@backstage/version-bridge/-/version-bridge-1.0.8.tgz#c6664708bcd20744e7b2c440a03f1e44f7c4a2a1" - integrity sha512-f4u5YEq/+TLe/W4UnsiD8u15qcuyFx2tuO/RDrJ2c/ulm4TuSeEcupMs7b9oa2Pge5IQAISadz0em1c+VDIB+g== - dependencies: - "@types/react" "^16.13.1 || ^17.0.0" +"@backstage/types@^1.2.1", "@backstage/types@^1.2.2": + version "1.2.2" + resolved "https://registry.yarnpkg.com/@backstage/types/-/types-1.2.2.tgz#280e3dec7be5bcddc54ee0e8a024a2768d274692" + integrity sha512-gCctHIL3VSCKiffbWDq4Zl2n7g8NPO/dD2ksdOEm9KzWfb5AubsfQzakoKjZ8XvmdaY9jY7j1yRmHSjAqq7rBA== + +"@backstage/ui@^0.13.0", "@backstage/ui@^0.13.2": + version "0.13.3" + resolved "https://registry.yarnpkg.com/@backstage/ui/-/ui-0.13.3.tgz#5c71d2848fdaf084b0185e642228a1117577713f" + integrity sha512-e9t4KyZiS8IsZIxLs2a9GQFzmDd6gq27U1L6C/Tg0uyqluuEELD7AywFnFtNUb9BS5YrWY7gpTzq+OlTwtBvkw== + dependencies: + "@backstage/version-bridge" "^1.0.12" + "@react-aria/interactions" "~3.27.1" + "@react-stately/layout" "~4.6.0" + "@react-stately/overlays" "~3.6.23" + "@react-types/calendar" "~3.8.3" + "@react-types/table" "~3.13.6" + "@remixicon/react" "^4.6.0" + "@tanstack/react-table" "^8.21.3" + clsx "^2.1.1" + react-aria-components "~1.16.0" + use-sync-external-store "^1.4.0" + +"@backstage/ui@^0.14.0", "@backstage/ui@^0.14.2": + version "0.14.3" + resolved "https://registry.yarnpkg.com/@backstage/ui/-/ui-0.14.3.tgz#e0d5224854779aceec37f40a9fbe57b725ade137" + integrity sha512-AIfGG8IGr5fRi8JaWpKqG2cEMdJ7hFlL/CXh/ojoUC9V8Wa+7jA5w5+DuNwa4F2aqtnp5jEr79wSuQnpsi1i7g== + dependencies: + "@backstage/version-bridge" "^1.0.12" + "@remixicon/react" "^4.6.0" + "@tanstack/react-table" "^8.21.3" + clsx "^2.1.1" + react-aria "~3.48.0" + react-aria-components "~1.17.0" + react-stately "~3.46.0" + use-sync-external-store "^1.4.0" + +"@backstage/version-bridge@^1.0.11", "@backstage/version-bridge@^1.0.12": + version "1.0.12" + resolved "https://registry.yarnpkg.com/@backstage/version-bridge/-/version-bridge-1.0.12.tgz#04e85e5ad1f59e9ae70eec10a03fe6c3f2aa26c0" + integrity sha512-n+JfiPw7KCpGSNG+v47+W2gTwBdRTTkcikLGvm29A7SG91NYDee7fhBhYTXQ1vOHJpj1yBl+2vlrNVTap33Q9g== "@balena/dockerignore@^1.0.2": version "1.0.2" @@ -4799,13 +5820,15 @@ "@bcoe/v8-coverage@^0.2.3": version "0.2.3" - resolved "https://registry.npmmirror.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" + resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== -"@braintree/sanitize-url@=7.0.0": - version "7.0.0" - resolved "https://registry.npmmirror.com/@braintree/sanitize-url/-/sanitize-url-7.0.0.tgz#8899d8e68a1b3f6933d4ad57a263fd3cf1d34d8a" - integrity sha512-GMu2OJiTd1HSe74bbJYQnVvELANpYiGFZELyyTM1CR0sdv5ReQAcJ/c/8pIrPab3lO11+D+EpuGLUxqz+y832g== +"@bramus/specificity@^2.4.2": + version "2.4.2" + resolved "https://registry.yarnpkg.com/@bramus/specificity/-/specificity-2.4.2.tgz#aa8db8eb173fdee7324f82284833106adeecc648" + integrity sha512-ctxtJ/eA+t+6q2++vj5j7FYX3nRu311q1wfYH3xjlLOsczhlhxAg2FWNUXhpGvAw3BWo1xBcvOV6/YLc2r5FJw== + dependencies: + css-tree "^3.0.0" "@changesets/types@^4.0.1": version "4.1.0" @@ -4893,6 +5916,11 @@ style-mod "^4.1.0" w3c-keyname "^2.2.4" +"@colors/colors@1.5.0": + version "1.5.0" + resolved "https://registry.yarnpkg.com/@colors/colors/-/colors-1.5.0.tgz#bb504579c1cae923e6576a4f5da43d25f97bdbd9" + integrity sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ== + "@colors/colors@1.6.0", "@colors/colors@^1.6.0": version "1.6.0" resolved "https://registry.npmmirror.com/@colors/colors/-/colors-1.6.0.tgz#ec6cd237440700bc23ca23087f513c75508958b0" @@ -4905,6 +5933,39 @@ dependencies: "@jridgewell/trace-mapping" "0.3.9" +"@csstools/color-helpers@^6.0.2": + version "6.0.2" + resolved "https://registry.yarnpkg.com/@csstools/color-helpers/-/color-helpers-6.0.2.tgz#82c59fd30649cf0b4d3c82160489748666e6550b" + integrity sha512-LMGQLS9EuADloEFkcTBR3BwV/CGHV7zyDxVRtVDTwdI2Ca4it0CCVTT9wCkxSgokjE5Ho41hEPgb8OEUwoXr6Q== + +"@csstools/css-calc@^3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@csstools/css-calc/-/css-calc-3.2.0.tgz#15ca1a80a026ced0f6c4e12124c398e3db8e1617" + integrity sha512-bR9e6o2BDB12jzN/gIbjHa5wLJ4UjD1CB9pM7ehlc0ddk6EBz+yYS1EV2MF55/HUxrHcB/hehAyt5vhsA3hx7w== + +"@csstools/css-color-parser@^4.1.0": + version "4.1.0" + resolved "https://registry.yarnpkg.com/@csstools/css-color-parser/-/css-color-parser-4.1.0.tgz#1d64ea09c548d3ed331648ea0b831e16b80c891c" + integrity sha512-U0KhLYmy2GVj6q4T3WaAe6NPuFYCPQoE3b0dRGxejWDgcPp8TP7S5rVdM5ZrFaqu4N67X8YaPBw14dQSYx3IyQ== + dependencies: + "@csstools/color-helpers" "^6.0.2" + "@csstools/css-calc" "^3.2.0" + +"@csstools/css-parser-algorithms@^4.0.0": + version "4.0.0" + resolved "https://registry.yarnpkg.com/@csstools/css-parser-algorithms/-/css-parser-algorithms-4.0.0.tgz#e1c65dc09378b42f26a111fca7f7075fc2c26164" + integrity sha512-+B87qS7fIG3L5h3qwJ/IFbjoVoOe/bpOdh9hAjXbvx0o8ImEmUsGXN0inFOnk2ChCFgqkkGFQ+TpM5rbhkKe4w== + +"@csstools/css-syntax-patches-for-csstree@^1.0.28": + version "1.1.3" + resolved "https://registry.yarnpkg.com/@csstools/css-syntax-patches-for-csstree/-/css-syntax-patches-for-csstree-1.1.3.tgz#3204cf40deb97db83e225b0baa9e37d9c3bd344d" + integrity sha512-SH60bMfrRCJF3morcdk57WklujF4Jr/EsQUzqkarfHXEFcAR1gg7fS/chAE922Sehgzc1/+Tz5H3Ypa1HiEKrg== + +"@csstools/css-tokenizer@^4.0.0": + version "4.0.0" + resolved "https://registry.yarnpkg.com/@csstools/css-tokenizer/-/css-tokenizer-4.0.0.tgz#798a33950d11226a0ebb6acafa60f5594424967f" + integrity sha512-QxULHAm7cNu72w97JUNCBFODFaXpbDg+dP8b/oWFAZ2MTRppA3U00Y2L1HqaS4J6yBqxwa/Y3nMBaxVKbB/NsA== + "@dabh/diagnostics@^2.0.2": version "2.0.3" resolved "https://registry.npmmirror.com/@dabh/diagnostics/-/diagnostics-2.0.3.tgz#7f7e97ee9a725dffc7808d93668cc984e1dc477a" @@ -4914,6 +5975,18 @@ enabled "2.0.x" kuler "^2.0.0" +"@dagrejs/dagre@^1.1.4": + version "1.1.8" + resolved "https://registry.yarnpkg.com/@dagrejs/dagre/-/dagre-1.1.8.tgz#fcbee59344c7b4f48b711ba30783543b70029310" + integrity sha512-5SEDlndt4W/LaVzPYJW+bSmSEZc9EzTf8rJ20WCKvjS5EAZAN0b+x0Yww7VMT4R3Wootkg+X9bUfUxazYw6Blw== + dependencies: + "@dagrejs/graphlib" "2.2.4" + +"@dagrejs/graphlib@2.2.4": + version "2.2.4" + resolved "https://registry.yarnpkg.com/@dagrejs/graphlib/-/graphlib-2.2.4.tgz#d77bfa9ff49e2307c0c6e6b8b26b5dd3c05816c4" + integrity sha512-mepCf/e9+SKYy1d02/UkvSy6+6MoyXhVxP8lLDfA7BPE1X1d4dR0sZznmbM8/XVJ1GPM+Svnx7Xj6ZweByWUkw== + "@date-io/core@1.x", "@date-io/core@^1.3.13": version "1.3.13" resolved "https://registry.npmmirror.com/@date-io/core/-/core-1.3.13.tgz#90c71da493f20204b7a972929cc5c482d078b3fa" @@ -4926,15 +5999,27 @@ dependencies: "@date-io/core" "^1.3.13" -"@davidzemon/passport-okta-oauth@^0.0.5": - version "0.0.5" - resolved "https://registry.npmmirror.com/@davidzemon/passport-okta-oauth/-/passport-okta-oauth-0.0.5.tgz#905d14521f4e8b422f4074c1f7fe1cbe0c88e44b" - integrity sha512-eaC2Ve2MIoqR7dLKgpHxhVKRcfgJCes0Fozxm5SefZh/zqLNb8tGIou+dj0EbylksLmB+nVlhr8p8qwjA9n2sA== +"@emnapi/core@^1.5.0": + version "1.10.0" + resolved "https://registry.yarnpkg.com/@emnapi/core/-/core-1.10.0.tgz#380ccc8f2412ea22d1d972df7f8ee23a3b9c7467" + integrity sha512-yq6OkJ4p82CAfPl0u9mQebQHKPJkY7WrIuk205cTYnYe+k2Z8YBh11FrbRG/H6ihirqcacOgl2BIO8oyMQLeXw== + dependencies: + "@emnapi/wasi-threads" "1.2.1" + tslib "^2.4.0" + +"@emnapi/runtime@^1.5.0": + version "1.10.0" + resolved "https://registry.yarnpkg.com/@emnapi/runtime/-/runtime-1.10.0.tgz#4b260c0d3534204e98c6110b8db1a987d26ec87c" + integrity sha512-ewvYlk86xUoGI0zQRNq/mC+16R1QeDlKQy21Ki3oSYXNgLb45GV1P6A0M+/s6nyCuNDqe5VpaY84BzXGwVbwFA== dependencies: - "@types/passport-oauth2" "^1.4.11" - passport-oauth2 "^1.6.1" - pkginfo "^0.4.1" - uid2 "^1.0.0" + tslib "^2.4.0" + +"@emnapi/wasi-threads@1.2.1": + version "1.2.1" + resolved "https://registry.yarnpkg.com/@emnapi/wasi-threads/-/wasi-threads-1.2.1.tgz#28fed21a1ba1ce797c44a070abc94d42f3ae8548" + integrity sha512-uTII7OYF+/Mes/MrcIOYp5yOtSMLBWSIoLPpcgwipoiKbli6k322tcoFsxoIIxPDqW01SQGAgko4EzZi2BNv2w== + dependencies: + tslib "^2.4.0" "@emotion/babel-plugin@^11.11.0": version "11.11.0" @@ -4964,6 +6049,17 @@ "@emotion/weak-memoize" "^0.3.1" stylis "4.2.0" +"@emotion/cache@^11.13.5": + version "11.14.0" + resolved "https://registry.yarnpkg.com/@emotion/cache/-/cache-11.14.0.tgz#ee44b26986eeb93c8be82bb92f1f7a9b21b2ed76" + integrity sha512-L/B1lc/TViYk4DcpGxtAVbx0ZyiKM5ktoIyafGkH6zg/tj+mA+NE//aPYKG0k8kCHSHVJrpLpcAlOBEXQ3SavA== + dependencies: + "@emotion/memoize" "^0.9.0" + "@emotion/sheet" "^1.4.0" + "@emotion/utils" "^1.4.2" + "@emotion/weak-memoize" "^0.4.0" + stylis "4.2.0" + "@emotion/hash@^0.8.0": version "0.8.0" resolved "https://registry.npmmirror.com/@emotion/hash/-/hash-0.8.0.tgz#bbbff68978fefdbe68ccb533bc8cbe1d1afb5413" @@ -4974,6 +6070,11 @@ resolved "https://registry.npmmirror.com/@emotion/hash/-/hash-0.9.1.tgz#4ffb0055f7ef676ebc3a5a91fb621393294e2f43" integrity sha512-gJB6HLm5rYwSLI6PQa+X1t5CFGrv1J1TWG+sOyMCeKz2ojaj6Fnl/rZEspogG+cvqbt4AE/2eIyD2QfLKTBNlQ== +"@emotion/hash@^0.9.2": + version "0.9.2" + resolved "https://registry.yarnpkg.com/@emotion/hash/-/hash-0.9.2.tgz#ff9221b9f58b4dfe61e619a7788734bd63f6898b" + integrity sha512-MyqliTZGuOm3+5ZRSaaBGP3USLw6+EGykkwZns2EPC5g8jJ4z9OrdZY9apkl3+UP9+sdz76YYkwCKP5gh8iY3g== + "@emotion/is-prop-valid@^0.8.2": version "0.8.8" resolved "https://registry.npmmirror.com/@emotion/is-prop-valid/-/is-prop-valid-0.8.8.tgz#db28b1c4368a259b60a97311d6a952d4fd01ac1a" @@ -4998,6 +6099,11 @@ resolved "https://registry.npmmirror.com/@emotion/memoize/-/memoize-0.8.1.tgz#c1ddb040429c6d21d38cc945fe75c818cfb68e17" integrity sha512-W2P2c/VRW1/1tLox0mVUalvnWXxavmv/Oum2aPsRcoDJuob75FC3Y8FbpfLwUegRcxINtGUMPq0tFCvYNTBXNA== +"@emotion/memoize@^0.9.0": + version "0.9.0" + resolved "https://registry.yarnpkg.com/@emotion/memoize/-/memoize-0.9.0.tgz#745969d649977776b43fc7648c556aaa462b4102" + integrity sha512-30FAj7/EoJ5mwVPOWhAyCX+FPfMDrVecJAM+Iw9NRoSl4BBAQeqj4cApHHUXOVvIPgLVDsCFoz/hGD+5QQD1GQ== + "@emotion/react@^11.10.5": version "11.11.3" resolved "https://registry.npmmirror.com/@emotion/react/-/react-11.11.3.tgz#96b855dc40a2a55f52a72f518a41db4f69c31a25" @@ -5023,11 +6129,27 @@ "@emotion/utils" "^1.2.1" csstype "^3.0.2" +"@emotion/serialize@^1.3.3": + version "1.3.3" + resolved "https://registry.yarnpkg.com/@emotion/serialize/-/serialize-1.3.3.tgz#d291531005f17d704d0463a032fe679f376509e8" + integrity sha512-EISGqt7sSNWHGI76hC7x1CksiXPahbxEOrC5RjmFRJTqLyEK9/9hZvBbiYn70dw4wuwMKiEMCUlR6ZXTSWQqxA== + dependencies: + "@emotion/hash" "^0.9.2" + "@emotion/memoize" "^0.9.0" + "@emotion/unitless" "^0.10.0" + "@emotion/utils" "^1.4.2" + csstype "^3.0.2" + "@emotion/sheet@^1.2.2": version "1.2.2" resolved "https://registry.npmmirror.com/@emotion/sheet/-/sheet-1.2.2.tgz#d58e788ee27267a14342303e1abb3d508b6d0fec" integrity sha512-0QBtGvaqtWi+nx6doRwDdBIzhNdZrXUppvTM4dtZZWEGTXL/XE/yJxLMGlDT1Gt+UHH5IX1n+jkXyytE/av7OA== +"@emotion/sheet@^1.4.0": + version "1.4.0" + resolved "https://registry.yarnpkg.com/@emotion/sheet/-/sheet-1.4.0.tgz#c9299c34d248bc26e82563735f78953d2efca83c" + integrity sha512-fTBW9/8r2w3dXWYM4HCB1Rdp8NLibOw2+XELH5m5+AkWiL/KqYX6dc0kKYlaYyKjrQ6ds33MCdMPEwgs2z1rqg== + "@emotion/styled@^11.10.5": version "11.11.0" resolved "https://registry.npmmirror.com/@emotion/styled/-/styled-11.11.0.tgz#26b75e1b5a1b7a629d7c0a8b708fbf5a9cdce346" @@ -5040,6 +6162,11 @@ "@emotion/use-insertion-effect-with-fallbacks" "^1.0.1" "@emotion/utils" "^1.2.1" +"@emotion/unitless@^0.10.0": + version "0.10.0" + resolved "https://registry.yarnpkg.com/@emotion/unitless/-/unitless-0.10.0.tgz#2af2f7c7e5150f497bdabd848ce7b218a27cf745" + integrity sha512-dFoMUuQA20zvtVTuxZww6OHoJYgrzfKM1t52mVySDJnMSEa08ruEvdYQbhvyu6soU+NeLVd3yKfTfT0NeV6qGg== + "@emotion/unitless@^0.8.1": version "0.8.1" resolved "https://registry.npmmirror.com/@emotion/unitless/-/unitless-0.8.1.tgz#182b5a4704ef8ad91bde93f7a860a88fd92c79a3" @@ -5055,240 +6182,395 @@ resolved "https://registry.npmmirror.com/@emotion/utils/-/utils-1.2.1.tgz#bbab58465738d31ae4cb3dbb6fc00a5991f755e4" integrity sha512-Y2tGf3I+XVnajdItskUCn6LX+VUDmP6lTL4fcqsXAv43dnlbZiuW4MWQW38rW/BVWSE7Q/7+XQocmpnRYILUmg== +"@emotion/utils@^1.4.2": + version "1.4.2" + resolved "https://registry.yarnpkg.com/@emotion/utils/-/utils-1.4.2.tgz#6df6c45881fcb1c412d6688a311a98b7f59c1b52" + integrity sha512-3vLclRofFziIa3J2wDh9jjbkUz9qk5Vi3IZ/FSTKViB0k+ef0fPV7dYrUIugbgupYDx7v9ud/SjrtEP8Y4xLoA== + "@emotion/weak-memoize@^0.3.1": version "0.3.1" resolved "https://registry.npmmirror.com/@emotion/weak-memoize/-/weak-memoize-0.3.1.tgz#d0fce5d07b0620caa282b5131c297bb60f9d87e6" integrity sha512-EsBwpc7hBUJWAsNPBmJy4hxWx12v6bshQsldrVmjxJoc3isbxhOrF2IcCpaXxfvq03NwkI7sbsOLXbYuqF/8Ww== +"@emotion/weak-memoize@^0.4.0": + version "0.4.0" + resolved "https://registry.yarnpkg.com/@emotion/weak-memoize/-/weak-memoize-0.4.0.tgz#5e13fac887f08c44f76b0ccaf3370eb00fec9bb6" + integrity sha512-snKqtPW01tN0ui7yu9rGv69aJXr/a/Ywvl11sUjNtEcRc+ng/mQriFL0wLXMef74iHa/EkftbDzU9F8iFbH+zg== + "@esbuild/aix-ppc64@0.20.2": version "0.20.2" resolved "https://registry.npmmirror.com/@esbuild/aix-ppc64/-/aix-ppc64-0.20.2.tgz#a70f4ac11c6a1dfc18b8bbb13284155d933b9537" integrity sha512-D+EBOJHXdNZcLJRBkhENNG8Wji2kgc9AZ9KiPr1JuZjsNtyHzrsfLRrY0tk2H2aoFu6RANO1y1iPPUCDYWkb5g== -"@esbuild/aix-ppc64@0.21.5": - version "0.21.5" - resolved "https://registry.yarnpkg.com/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz#c7184a326533fcdf1b8ee0733e21c713b975575f" - integrity sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ== +"@esbuild/aix-ppc64@0.25.12": + version "0.25.12" + resolved "https://registry.yarnpkg.com/@esbuild/aix-ppc64/-/aix-ppc64-0.25.12.tgz#80fcbe36130e58b7670511e888b8e88a259ed76c" + integrity sha512-Hhmwd6CInZ3dwpuGTF8fJG6yoWmsToE+vYgD4nytZVxcu1ulHpUQRAB1UJ8+N1Am3Mz4+xOByoQoSZf4D+CpkA== + +"@esbuild/aix-ppc64@0.27.7": + version "0.27.7" + resolved "https://registry.yarnpkg.com/@esbuild/aix-ppc64/-/aix-ppc64-0.27.7.tgz#82b74f92aa78d720b714162939fb248c90addf53" + integrity sha512-EKX3Qwmhz1eMdEJokhALr0YiD0lhQNwDqkPYyPhiSwKrh7/4KRjQc04sZ8db+5DVVnZ1LmbNDI1uAMPEUBnQPg== "@esbuild/android-arm64@0.20.2": version "0.20.2" resolved "https://registry.npmmirror.com/@esbuild/android-arm64/-/android-arm64-0.20.2.tgz#db1c9202a5bc92ea04c7b6840f1bbe09ebf9e6b9" integrity sha512-mRzjLacRtl/tWU0SvD8lUEwb61yP9cqQo6noDZP/O8VkwafSYwZ4yWy24kan8jE/IMERpYncRt2dw438LP3Xmg== -"@esbuild/android-arm64@0.21.5": - version "0.21.5" - resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz#09d9b4357780da9ea3a7dfb833a1f1ff439b4052" - integrity sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A== +"@esbuild/android-arm64@0.25.12": + version "0.25.12" + resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.25.12.tgz#8aa4965f8d0a7982dc21734bf6601323a66da752" + integrity sha512-6AAmLG7zwD1Z159jCKPvAxZd4y/VTO0VkprYy+3N2FtJ8+BQWFXU+OxARIwA46c5tdD9SsKGZ/1ocqBS/gAKHg== + +"@esbuild/android-arm64@0.27.7": + version "0.27.7" + resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.27.7.tgz#f78cb8a3121fc205a53285adb24972db385d185d" + integrity sha512-62dPZHpIXzvChfvfLJow3q5dDtiNMkwiRzPylSCfriLvZeq0a1bWChrGx/BbUbPwOrsWKMn8idSllklzBy+dgQ== "@esbuild/android-arm@0.20.2": version "0.20.2" resolved "https://registry.npmmirror.com/@esbuild/android-arm/-/android-arm-0.20.2.tgz#3b488c49aee9d491c2c8f98a909b785870d6e995" integrity sha512-t98Ra6pw2VaDhqNWO2Oph2LXbz/EJcnLmKLGBJwEwXX/JAN83Fym1rU8l0JUWK6HkIbWONCSSatf4sf2NBRx/w== -"@esbuild/android-arm@0.21.5": - version "0.21.5" - resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.21.5.tgz#9b04384fb771926dfa6d7ad04324ecb2ab9b2e28" - integrity sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg== +"@esbuild/android-arm@0.25.12": + version "0.25.12" + resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.25.12.tgz#300712101f7f50f1d2627a162e6e09b109b6767a" + integrity sha512-VJ+sKvNA/GE7Ccacc9Cha7bpS8nyzVv0jdVgwNDaR4gDMC/2TTRc33Ip8qrNYUcpkOHUT5OZ0bUcNNVZQ9RLlg== + +"@esbuild/android-arm@0.27.7": + version "0.27.7" + resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.27.7.tgz#593e10a1450bbfcac6cb321f61f468453bac209d" + integrity sha512-jbPXvB4Yj2yBV7HUfE2KHe4GJX51QplCN1pGbYjvsyCZbQmies29EoJbkEc+vYuU5o45AfQn37vZlyXy4YJ8RQ== "@esbuild/android-x64@0.20.2": version "0.20.2" resolved "https://registry.npmmirror.com/@esbuild/android-x64/-/android-x64-0.20.2.tgz#3b1628029e5576249d2b2d766696e50768449f98" integrity sha512-btzExgV+/lMGDDa194CcUQm53ncxzeBrWJcncOBxuC6ndBkKxnHdFJn86mCIgTELsooUmwUm9FkhSp5HYu00Rg== -"@esbuild/android-x64@0.21.5": - version "0.21.5" - resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.21.5.tgz#29918ec2db754cedcb6c1b04de8cd6547af6461e" - integrity sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA== +"@esbuild/android-x64@0.25.12": + version "0.25.12" + resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.25.12.tgz#87dfb27161202bdc958ef48bb61b09c758faee16" + integrity sha512-5jbb+2hhDHx5phYR2By8GTWEzn6I9UqR11Kwf22iKbNpYrsmRB18aX/9ivc5cabcUiAT/wM+YIZ6SG9QO6a8kg== + +"@esbuild/android-x64@0.27.7": + version "0.27.7" + resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.27.7.tgz#453143d073326033d2d22caf9e48de4bae274b07" + integrity sha512-x5VpMODneVDb70PYV2VQOmIUUiBtY3D3mPBG8NxVk5CogneYhkR7MmM3yR/uMdITLrC1ml/NV1rj4bMJuy9MCg== "@esbuild/darwin-arm64@0.20.2": version "0.20.2" resolved "https://registry.npmmirror.com/@esbuild/darwin-arm64/-/darwin-arm64-0.20.2.tgz#6e8517a045ddd86ae30c6608c8475ebc0c4000bb" integrity sha512-4J6IRT+10J3aJH3l1yzEg9y3wkTDgDk7TSDFX+wKFiWjqWp/iCfLIYzGyasx9l0SAFPT1HwSCR+0w/h1ES/MjA== -"@esbuild/darwin-arm64@0.21.5": - version "0.21.5" - resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz#e495b539660e51690f3928af50a76fb0a6ccff2a" - integrity sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ== +"@esbuild/darwin-arm64@0.25.12": + version "0.25.12" + resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.25.12.tgz#79197898ec1ff745d21c071e1c7cc3c802f0c1fd" + integrity sha512-N3zl+lxHCifgIlcMUP5016ESkeQjLj/959RxxNYIthIg+CQHInujFuXeWbWMgnTo4cp5XVHqFPmpyu9J65C1Yg== + +"@esbuild/darwin-arm64@0.27.7": + version "0.27.7" + resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.27.7.tgz#6f23000fb9b40b7e04b7d0606c0693bd0632f322" + integrity sha512-5lckdqeuBPlKUwvoCXIgI2D9/ABmPq3Rdp7IfL70393YgaASt7tbju3Ac+ePVi3KDH6N2RqePfHnXkaDtY9fkw== "@esbuild/darwin-x64@0.20.2": version "0.20.2" resolved "https://registry.npmmirror.com/@esbuild/darwin-x64/-/darwin-x64-0.20.2.tgz#90ed098e1f9dd8a9381695b207e1cff45540a0d0" integrity sha512-tBcXp9KNphnNH0dfhv8KYkZhjc+H3XBkF5DKtswJblV7KlT9EI2+jeA8DgBjp908WEuYll6pF+UStUCfEpdysA== -"@esbuild/darwin-x64@0.21.5": - version "0.21.5" - resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz#c13838fa57372839abdddc91d71542ceea2e1e22" - integrity sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw== +"@esbuild/darwin-x64@0.25.12": + version "0.25.12" + resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.25.12.tgz#146400a8562133f45c4d2eadcf37ddd09718079e" + integrity sha512-HQ9ka4Kx21qHXwtlTUVbKJOAnmG1ipXhdWTmNXiPzPfWKpXqASVcWdnf2bnL73wgjNrFXAa3yYvBSd9pzfEIpA== + +"@esbuild/darwin-x64@0.27.7": + version "0.27.7" + resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.27.7.tgz#27393dd18bb1263c663979c5f1576e00c2d024be" + integrity sha512-rYnXrKcXuT7Z+WL5K980jVFdvVKhCHhUwid+dDYQpH+qu+TefcomiMAJpIiC2EM3Rjtq0sO3StMV/+3w3MyyqQ== "@esbuild/freebsd-arm64@0.20.2": version "0.20.2" resolved "https://registry.npmmirror.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.20.2.tgz#d71502d1ee89a1130327e890364666c760a2a911" integrity sha512-d3qI41G4SuLiCGCFGUrKsSeTXyWG6yem1KcGZVS+3FYlYhtNoNgYrWcvkOoaqMhwXSMrZRl69ArHsGJ9mYdbbw== -"@esbuild/freebsd-arm64@0.21.5": - version "0.21.5" - resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz#646b989aa20bf89fd071dd5dbfad69a3542e550e" - integrity sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g== +"@esbuild/freebsd-arm64@0.25.12": + version "0.25.12" + resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.12.tgz#1c5f9ba7206e158fd2b24c59fa2d2c8bb47ca0fe" + integrity sha512-gA0Bx759+7Jve03K1S0vkOu5Lg/85dou3EseOGUes8flVOGxbhDDh/iZaoek11Y8mtyKPGF3vP8XhnkDEAmzeg== + +"@esbuild/freebsd-arm64@0.27.7": + version "0.27.7" + resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.27.7.tgz#22e4638fa502d1c0027077324c97640e3adf3a62" + integrity sha512-B48PqeCsEgOtzME2GbNM2roU29AMTuOIN91dsMO30t+Ydis3z/3Ngoj5hhnsOSSwNzS+6JppqWsuhTp6E82l2w== "@esbuild/freebsd-x64@0.20.2": version "0.20.2" resolved "https://registry.npmmirror.com/@esbuild/freebsd-x64/-/freebsd-x64-0.20.2.tgz#aa5ea58d9c1dd9af688b8b6f63ef0d3d60cea53c" integrity sha512-d+DipyvHRuqEeM5zDivKV1KuXn9WeRX6vqSqIDgwIfPQtwMP4jaDsQsDncjTDDsExT4lR/91OLjRo8bmC1e+Cw== -"@esbuild/freebsd-x64@0.21.5": - version "0.21.5" - resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz#aa615cfc80af954d3458906e38ca22c18cf5c261" - integrity sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ== +"@esbuild/freebsd-x64@0.25.12": + version "0.25.12" + resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.25.12.tgz#ea631f4a36beaac4b9279fa0fcc6ca29eaeeb2b3" + integrity sha512-TGbO26Yw2xsHzxtbVFGEXBFH0FRAP7gtcPE7P5yP7wGy7cXK2oO7RyOhL5NLiqTlBh47XhmIUXuGciXEqYFfBQ== + +"@esbuild/freebsd-x64@0.27.7": + version "0.27.7" + resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.27.7.tgz#9224b8e4fea924ce2194e3efc3e9aebf822192d6" + integrity sha512-jOBDK5XEjA4m5IJK3bpAQF9/Lelu/Z9ZcdhTRLf4cajlB+8VEhFFRjWgfy3M1O4rO2GQ/b2dLwCUGpiF/eATNQ== "@esbuild/linux-arm64@0.20.2": version "0.20.2" resolved "https://registry.npmmirror.com/@esbuild/linux-arm64/-/linux-arm64-0.20.2.tgz#055b63725df678379b0f6db9d0fa85463755b2e5" integrity sha512-9pb6rBjGvTFNira2FLIWqDk/uaf42sSyLE8j1rnUpuzsODBq7FvpwHYZxQ/It/8b+QOS1RYfqgGFNLRI+qlq2A== -"@esbuild/linux-arm64@0.21.5": - version "0.21.5" - resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz#70ac6fa14f5cb7e1f7f887bcffb680ad09922b5b" - integrity sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q== +"@esbuild/linux-arm64@0.25.12": + version "0.25.12" + resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.25.12.tgz#e1066bce58394f1b1141deec8557a5f0a22f5977" + integrity sha512-8bwX7a8FghIgrupcxb4aUmYDLp8pX06rGh5HqDT7bB+8Rdells6mHvrFHHW2JAOPZUbnjUpKTLg6ECyzvas2AQ== + +"@esbuild/linux-arm64@0.27.7": + version "0.27.7" + resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.27.7.tgz#4f5d1c27527d817b35684ae21419e57c2bda0966" + integrity sha512-RZPHBoxXuNnPQO9rvjh5jdkRmVizktkT7TCDkDmQ0W2SwHInKCAV95GRuvdSvA7w4VMwfCjUiPwDi0ZO6Nfe9A== "@esbuild/linux-arm@0.20.2": version "0.20.2" resolved "https://registry.npmmirror.com/@esbuild/linux-arm/-/linux-arm-0.20.2.tgz#76b3b98cb1f87936fbc37f073efabad49dcd889c" integrity sha512-VhLPeR8HTMPccbuWWcEUD1Az68TqaTYyj6nfE4QByZIQEQVWBB8vup8PpR7y1QHL3CpcF6xd5WVBU/+SBEvGTg== -"@esbuild/linux-arm@0.21.5": - version "0.21.5" - resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz#fc6fd11a8aca56c1f6f3894f2bea0479f8f626b9" - integrity sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA== +"@esbuild/linux-arm@0.25.12": + version "0.25.12" + resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.25.12.tgz#452cd66b20932d08bdc53a8b61c0e30baf4348b9" + integrity sha512-lPDGyC1JPDou8kGcywY0YILzWlhhnRjdof3UlcoqYmS9El818LLfJJc3PXXgZHrHCAKs/Z2SeZtDJr5MrkxtOw== + +"@esbuild/linux-arm@0.27.7": + version "0.27.7" + resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.27.7.tgz#b9e9d070c8c1c0449cf12b20eac37d70a4595921" + integrity sha512-RkT/YXYBTSULo3+af8Ib0ykH8u2MBh57o7q/DAs3lTJlyVQkgQvlrPTnjIzzRPQyavxtPtfg0EopvDyIt0j1rA== "@esbuild/linux-ia32@0.20.2": version "0.20.2" resolved "https://registry.npmmirror.com/@esbuild/linux-ia32/-/linux-ia32-0.20.2.tgz#c0e5e787c285264e5dfc7a79f04b8b4eefdad7fa" integrity sha512-o10utieEkNPFDZFQm9CoP7Tvb33UutoJqg3qKf1PWVeeJhJw0Q347PxMvBgVVFgouYLGIhFYG0UGdBumROyiig== -"@esbuild/linux-ia32@0.21.5": - version "0.21.5" - resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz#3271f53b3f93e3d093d518d1649d6d68d346ede2" - integrity sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg== +"@esbuild/linux-ia32@0.25.12": + version "0.25.12" + resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.25.12.tgz#b24f8acc45bcf54192c7f2f3be1b53e6551eafe0" + integrity sha512-0y9KrdVnbMM2/vG8KfU0byhUN+EFCny9+8g202gYqSSVMonbsCfLjUO+rCci7pM0WBEtz+oK/PIwHkzxkyharA== + +"@esbuild/linux-ia32@0.27.7": + version "0.27.7" + resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.27.7.tgz#3f80fb696aa96051a94047f35c85b08b21c36f9e" + integrity sha512-GA48aKNkyQDbd3KtkplYWT102C5sn/EZTY4XROkxONgruHPU72l+gW+FfF8tf2cFjeHaRbWpOYa/uRBz/Xq1Pg== "@esbuild/linux-loong64@0.20.2": version "0.20.2" resolved "https://registry.npmmirror.com/@esbuild/linux-loong64/-/linux-loong64-0.20.2.tgz#a6184e62bd7cdc63e0c0448b83801001653219c5" integrity sha512-PR7sp6R/UC4CFVomVINKJ80pMFlfDfMQMYynX7t1tNTeivQ6XdX5r2XovMmha/VjR1YN/HgHWsVcTRIMkymrgQ== -"@esbuild/linux-loong64@0.21.5": - version "0.21.5" - resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz#ed62e04238c57026aea831c5a130b73c0f9f26df" - integrity sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg== +"@esbuild/linux-loong64@0.25.12": + version "0.25.12" + resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.25.12.tgz#f9cfffa7fc8322571fbc4c8b3268caf15bd81ad0" + integrity sha512-h///Lr5a9rib/v1GGqXVGzjL4TMvVTv+s1DPoxQdz7l/AYv6LDSxdIwzxkrPW438oUXiDtwM10o9PmwS/6Z0Ng== + +"@esbuild/linux-loong64@0.27.7": + version "0.27.7" + resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.27.7.tgz#9be1f2c28210b13ebb4156221bba356fe1675205" + integrity sha512-a4POruNM2oWsD4WKvBSEKGIiWQF8fZOAsycHOt6JBpZ+JN2n2JH9WAv56SOyu9X5IqAjqSIPTaJkqN8F7XOQ5Q== "@esbuild/linux-mips64el@0.20.2": version "0.20.2" resolved "https://registry.npmmirror.com/@esbuild/linux-mips64el/-/linux-mips64el-0.20.2.tgz#d08e39ce86f45ef8fc88549d29c62b8acf5649aa" integrity sha512-4BlTqeutE/KnOiTG5Y6Sb/Hw6hsBOZapOVF6njAESHInhlQAghVVZL1ZpIctBOoTFbQyGW+LsVYZ8lSSB3wkjA== -"@esbuild/linux-mips64el@0.21.5": - version "0.21.5" - resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz#e79b8eb48bf3b106fadec1ac8240fb97b4e64cbe" - integrity sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg== +"@esbuild/linux-mips64el@0.25.12": + version "0.25.12" + resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.25.12.tgz#575a14bd74644ffab891adc7d7e60d275296f2cd" + integrity sha512-iyRrM1Pzy9GFMDLsXn1iHUm18nhKnNMWscjmp4+hpafcZjrr2WbT//d20xaGljXDBYHqRcl8HnxbX6uaA/eGVw== + +"@esbuild/linux-mips64el@0.27.7": + version "0.27.7" + resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.27.7.tgz#4ab5ee67a3dfcbcb5e8fd7883dae6e735b1163b8" + integrity sha512-KabT5I6StirGfIz0FMgl1I+R1H73Gp0ofL9A3nG3i/cYFJzKHhouBV5VWK1CSgKvVaG4q1RNpCTR2LuTVB3fIw== "@esbuild/linux-ppc64@0.20.2": version "0.20.2" resolved "https://registry.npmmirror.com/@esbuild/linux-ppc64/-/linux-ppc64-0.20.2.tgz#8d252f0b7756ffd6d1cbde5ea67ff8fd20437f20" integrity sha512-rD3KsaDprDcfajSKdn25ooz5J5/fWBylaaXkuotBDGnMnDP1Uv5DLAN/45qfnf3JDYyJv/ytGHQaziHUdyzaAg== -"@esbuild/linux-ppc64@0.21.5": - version "0.21.5" - resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz#5f2203860a143b9919d383ef7573521fb154c3e4" - integrity sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w== +"@esbuild/linux-ppc64@0.25.12": + version "0.25.12" + resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.25.12.tgz#75b99c70a95fbd5f7739d7692befe60601591869" + integrity sha512-9meM/lRXxMi5PSUqEXRCtVjEZBGwB7P/D4yT8UG/mwIdze2aV4Vo6U5gD3+RsoHXKkHCfSxZKzmDssVlRj1QQA== + +"@esbuild/linux-ppc64@0.27.7": + version "0.27.7" + resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.27.7.tgz#dac78c689f6499459c4321e5c15032c12307e7ea" + integrity sha512-gRsL4x6wsGHGRqhtI+ifpN/vpOFTQtnbsupUF5R5YTAg+y/lKelYR1hXbnBdzDjGbMYjVJLJTd2OFmMewAgwlQ== "@esbuild/linux-riscv64@0.20.2": version "0.20.2" resolved "https://registry.npmmirror.com/@esbuild/linux-riscv64/-/linux-riscv64-0.20.2.tgz#19f6dcdb14409dae607f66ca1181dd4e9db81300" integrity sha512-snwmBKacKmwTMmhLlz/3aH1Q9T8v45bKYGE3j26TsaOVtjIag4wLfWSiZykXzXuE1kbCE+zJRmwp+ZbIHinnVg== -"@esbuild/linux-riscv64@0.21.5": - version "0.21.5" - resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz#07bcafd99322d5af62f618cb9e6a9b7f4bb825dc" - integrity sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA== +"@esbuild/linux-riscv64@0.25.12": + version "0.25.12" + resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.25.12.tgz#2e3259440321a44e79ddf7535c325057da875cd6" + integrity sha512-Zr7KR4hgKUpWAwb1f3o5ygT04MzqVrGEGXGLnj15YQDJErYu/BGg+wmFlIDOdJp0PmB0lLvxFIOXZgFRrdjR0w== + +"@esbuild/linux-riscv64@0.27.7": + version "0.27.7" + resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.27.7.tgz#050f7d3b355c3a98308e935bc4d6325da91b0027" + integrity sha512-hL25LbxO1QOngGzu2U5xeXtxXcW+/GvMN3ejANqXkxZ/opySAZMrc+9LY/WyjAan41unrR3YrmtTsUpwT66InQ== "@esbuild/linux-s390x@0.20.2": version "0.20.2" resolved "https://registry.npmmirror.com/@esbuild/linux-s390x/-/linux-s390x-0.20.2.tgz#3c830c90f1a5d7dd1473d5595ea4ebb920988685" integrity sha512-wcWISOobRWNm3cezm5HOZcYz1sKoHLd8VL1dl309DiixxVFoFe/o8HnwuIwn6sXre88Nwj+VwZUvJf4AFxkyrQ== -"@esbuild/linux-s390x@0.21.5": - version "0.21.5" - resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz#b7ccf686751d6a3e44b8627ababc8be3ef62d8de" - integrity sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A== +"@esbuild/linux-s390x@0.25.12": + version "0.25.12" + resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.25.12.tgz#17676cabbfe5928da5b2a0d6df5d58cd08db2663" + integrity sha512-MsKncOcgTNvdtiISc/jZs/Zf8d0cl/t3gYWX8J9ubBnVOwlk65UIEEvgBORTiljloIWnBzLs4qhzPkJcitIzIg== + +"@esbuild/linux-s390x@0.27.7": + version "0.27.7" + resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.27.7.tgz#d61f715ce61d43fe5844ad0d8f463f88cbe4fef6" + integrity sha512-2k8go8Ycu1Kb46vEelhu1vqEP+UeRVj2zY1pSuPdgvbd5ykAw82Lrro28vXUrRmzEsUV0NzCf54yARIK8r0fdw== "@esbuild/linux-x64@0.20.2": version "0.20.2" resolved "https://registry.npmmirror.com/@esbuild/linux-x64/-/linux-x64-0.20.2.tgz#86eca35203afc0d9de0694c64ec0ab0a378f6fff" integrity sha512-1MdwI6OOTsfQfek8sLwgyjOXAu+wKhLEoaOLTjbijk6E2WONYpH9ZU2mNtR+lZ2B4uwr+usqGuVfFT9tMtGvGw== -"@esbuild/linux-x64@0.21.5": - version "0.21.5" - resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz#6d8f0c768e070e64309af8004bb94e68ab2bb3b0" - integrity sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ== +"@esbuild/linux-x64@0.25.12": + version "0.25.12" + resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.25.12.tgz#0583775685ca82066d04c3507f09524d3cd7a306" + integrity sha512-uqZMTLr/zR/ed4jIGnwSLkaHmPjOjJvnm6TVVitAa08SLS9Z0VM8wIRx7gWbJB5/J54YuIMInDquWyYvQLZkgw== + +"@esbuild/linux-x64@0.27.7": + version "0.27.7" + resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.27.7.tgz#ca8e1aa478fc8209257bf3ac8f79c4dc2982f32a" + integrity sha512-hzznmADPt+OmsYzw1EE33ccA+HPdIqiCRq7cQeL1Jlq2gb1+OyWBkMCrYGBJ+sxVzve2ZJEVeePbLM2iEIZSxA== + +"@esbuild/netbsd-arm64@0.25.12": + version "0.25.12" + resolved "https://registry.yarnpkg.com/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.12.tgz#f04c4049cb2e252fe96b16fed90f70746b13f4a4" + integrity sha512-xXwcTq4GhRM7J9A8Gv5boanHhRa/Q9KLVmcyXHCTaM4wKfIpWkdXiMog/KsnxzJ0A1+nD+zoecuzqPmCRyBGjg== + +"@esbuild/netbsd-arm64@0.27.7": + version "0.27.7" + resolved "https://registry.yarnpkg.com/@esbuild/netbsd-arm64/-/netbsd-arm64-0.27.7.tgz#1650f2c1b948deeb3ef948f2fc30614723c09690" + integrity sha512-b6pqtrQdigZBwZxAn1UpazEisvwaIDvdbMbmrly7cDTMFnw/+3lVxxCTGOrkPVnsYIosJJXAsILG9XcQS+Yu6w== "@esbuild/netbsd-x64@0.20.2": version "0.20.2" resolved "https://registry.npmmirror.com/@esbuild/netbsd-x64/-/netbsd-x64-0.20.2.tgz#e771c8eb0e0f6e1877ffd4220036b98aed5915e6" integrity sha512-K8/DhBxcVQkzYc43yJXDSyjlFeHQJBiowJ0uVL6Tor3jGQfSGHNNJcWxNbOI8v5k82prYqzPuwkzHt3J1T1iZQ== -"@esbuild/netbsd-x64@0.21.5": - version "0.21.5" - resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz#bbe430f60d378ecb88decb219c602667387a6047" - integrity sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg== +"@esbuild/netbsd-x64@0.25.12": + version "0.25.12" + resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.25.12.tgz#77da0d0a0d826d7c921eea3d40292548b258a076" + integrity sha512-Ld5pTlzPy3YwGec4OuHh1aCVCRvOXdH8DgRjfDy/oumVovmuSzWfnSJg+VtakB9Cm0gxNO9BzWkj6mtO1FMXkQ== + +"@esbuild/netbsd-x64@0.27.7": + version "0.27.7" + resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.27.7.tgz#65772ab342c4b3319bf0705a211050aac1b6e320" + integrity sha512-OfatkLojr6U+WN5EDYuoQhtM+1xco+/6FSzJJnuWiUw5eVcicbyK3dq5EeV/QHT1uy6GoDhGbFpprUiHUYggrw== + +"@esbuild/openbsd-arm64@0.25.12": + version "0.25.12" + resolved "https://registry.yarnpkg.com/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.12.tgz#6296f5867aedef28a81b22ab2009c786a952dccd" + integrity sha512-fF96T6KsBo/pkQI950FARU9apGNTSlZGsv1jZBAlcLL1MLjLNIWPBkj5NlSz8aAzYKg+eNqknrUJ24QBybeR5A== + +"@esbuild/openbsd-arm64@0.27.7": + version "0.27.7" + resolved "https://registry.yarnpkg.com/@esbuild/openbsd-arm64/-/openbsd-arm64-0.27.7.tgz#37ed7cfa66549d7955852fce37d0c3de4e715ea1" + integrity sha512-AFuojMQTxAz75Fo8idVcqoQWEHIXFRbOc1TrVcFSgCZtQfSdc1RXgB3tjOn/krRHENUB4j00bfGjyl2mJrU37A== "@esbuild/openbsd-x64@0.20.2": version "0.20.2" resolved "https://registry.npmmirror.com/@esbuild/openbsd-x64/-/openbsd-x64-0.20.2.tgz#9a795ae4b4e37e674f0f4d716f3e226dd7c39baf" integrity sha512-eMpKlV0SThJmmJgiVyN9jTPJ2VBPquf6Kt/nAoo6DgHAoN57K15ZghiHaMvqjCye/uU4X5u3YSMgVBI1h3vKrQ== -"@esbuild/openbsd-x64@0.21.5": - version "0.21.5" - resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz#99d1cf2937279560d2104821f5ccce220cb2af70" - integrity sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow== +"@esbuild/openbsd-x64@0.25.12": + version "0.25.12" + resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.25.12.tgz#f8d23303360e27b16cf065b23bbff43c14142679" + integrity sha512-MZyXUkZHjQxUvzK7rN8DJ3SRmrVrke8ZyRusHlP+kuwqTcfWLyqMOE3sScPPyeIXN/mDJIfGXvcMqCgYKekoQw== + +"@esbuild/openbsd-x64@0.27.7": + version "0.27.7" + resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.27.7.tgz#01bf3d385855ef50cb33db7c4b52f957c34cd179" + integrity sha512-+A1NJmfM8WNDv5CLVQYJ5PshuRm/4cI6WMZRg1by1GwPIQPCTs1GLEUHwiiQGT5zDdyLiRM/l1G0Pv54gvtKIg== + +"@esbuild/openharmony-arm64@0.25.12": + version "0.25.12" + resolved "https://registry.yarnpkg.com/@esbuild/openharmony-arm64/-/openharmony-arm64-0.25.12.tgz#49e0b768744a3924be0d7fd97dd6ce9b2923d88d" + integrity sha512-rm0YWsqUSRrjncSXGA7Zv78Nbnw4XL6/dzr20cyrQf7ZmRcsovpcRBdhD43Nuk3y7XIoW2OxMVvwuRvk9XdASg== + +"@esbuild/openharmony-arm64@0.27.7": + version "0.27.7" + resolved "https://registry.yarnpkg.com/@esbuild/openharmony-arm64/-/openharmony-arm64-0.27.7.tgz#6c1f94b34086599aabda4eac8f638294b9877410" + integrity sha512-+KrvYb/C8zA9CU/g0sR6w2RBw7IGc5J2BPnc3dYc5VJxHCSF1yNMxTV5LQ7GuKteQXZtspjFbiuW5/dOj7H4Yw== "@esbuild/sunos-x64@0.20.2": version "0.20.2" resolved "https://registry.npmmirror.com/@esbuild/sunos-x64/-/sunos-x64-0.20.2.tgz#7df23b61a497b8ac189def6e25a95673caedb03f" integrity sha512-2UyFtRC6cXLyejf/YEld4Hajo7UHILetzE1vsRcGL3earZEW77JxrFjH4Ez2qaTiEfMgAXxfAZCm1fvM/G/o8w== -"@esbuild/sunos-x64@0.21.5": - version "0.21.5" - resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz#08741512c10d529566baba837b4fe052c8f3487b" - integrity sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg== +"@esbuild/sunos-x64@0.25.12": + version "0.25.12" + resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.25.12.tgz#a6ed7d6778d67e528c81fb165b23f4911b9b13d6" + integrity sha512-3wGSCDyuTHQUzt0nV7bocDy72r2lI33QL3gkDNGkod22EsYl04sMf0qLb8luNKTOmgF/eDEDP5BFNwoBKH441w== + +"@esbuild/sunos-x64@0.27.7": + version "0.27.7" + resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.27.7.tgz#4b0dd17ae0a6941d2d0fd35a906392517071a90d" + integrity sha512-ikktIhFBzQNt/QDyOL580ti9+5mL/YZeUPKU2ivGtGjdTYoqz6jObj6nOMfhASpS4GU4Q/Clh1QtxWAvcYKamA== "@esbuild/win32-arm64@0.20.2": version "0.20.2" resolved "https://registry.npmmirror.com/@esbuild/win32-arm64/-/win32-arm64-0.20.2.tgz#f1ae5abf9ca052ae11c1bc806fb4c0f519bacf90" integrity sha512-GRibxoawM9ZCnDxnP3usoUDO9vUkpAxIIZ6GQI+IlVmr5kP3zUq+l17xELTHMWTWzjxa2guPNyrpq1GWmPvcGQ== -"@esbuild/win32-arm64@0.21.5": - version "0.21.5" - resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz#675b7385398411240735016144ab2e99a60fc75d" - integrity sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A== +"@esbuild/win32-arm64@0.25.12": + version "0.25.12" + resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.25.12.tgz#9ac14c378e1b653af17d08e7d3ce34caef587323" + integrity sha512-rMmLrur64A7+DKlnSuwqUdRKyd3UE7oPJZmnljqEptesKM8wx9J8gx5u0+9Pq0fQQW8vqeKebwNXdfOyP+8Bsg== + +"@esbuild/win32-arm64@0.27.7": + version "0.27.7" + resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.27.7.tgz#34193ab5565d6ff68ca928ac04be75102ccb2e77" + integrity sha512-7yRhbHvPqSpRUV7Q20VuDwbjW5kIMwTHpptuUzV+AA46kiPze5Z7qgt6CLCK3pWFrHeNfDd1VKgyP4O+ng17CA== "@esbuild/win32-ia32@0.20.2": version "0.20.2" resolved "https://registry.npmmirror.com/@esbuild/win32-ia32/-/win32-ia32-0.20.2.tgz#241fe62c34d8e8461cd708277813e1d0ba55ce23" integrity sha512-HfLOfn9YWmkSKRQqovpnITazdtquEW8/SoHW7pWpuEeguaZI4QnCRW6b+oZTztdBnZOS2hqJ6im/D5cPzBTTlQ== -"@esbuild/win32-ia32@0.21.5": - version "0.21.5" - resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz#1bfc3ce98aa6ca9a0969e4d2af72144c59c1193b" - integrity sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA== +"@esbuild/win32-ia32@0.25.12": + version "0.25.12" + resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.25.12.tgz#918942dcbbb35cc14fca39afb91b5e6a3d127267" + integrity sha512-HkqnmmBoCbCwxUKKNPBixiWDGCpQGVsrQfJoVGYLPT41XWF8lHuE5N6WhVia2n4o5QK5M4tYr21827fNhi4byQ== + +"@esbuild/win32-ia32@0.27.7": + version "0.27.7" + resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.27.7.tgz#eb67f0e4482515d8c1894ede631c327a4da9fc4d" + integrity sha512-SmwKXe6VHIyZYbBLJrhOoCJRB/Z1tckzmgTLfFYOfpMAx63BJEaL9ExI8x7v0oAO3Zh6D/Oi1gVxEYr5oUCFhw== "@esbuild/win32-x64@0.20.2": version "0.20.2" resolved "https://registry.npmmirror.com/@esbuild/win32-x64/-/win32-x64-0.20.2.tgz#9c907b21e30a52db959ba4f80bb01a0cc403d5cc" integrity sha512-N49X4lJX27+l9jbLKSqZ6bKNjzQvHaT8IIFUy+YIqmXQdjYCToGWwOItDrfby14c78aDd5NHQl29xingXfCdLQ== -"@esbuild/win32-x64@0.21.5": - version "0.21.5" - resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz#acad351d582d157bb145535db2a6ff53dd514b5c" - integrity sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw== +"@esbuild/win32-x64@0.25.12": + version "0.25.12" + resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.25.12.tgz#9bdad8176be7811ad148d1f8772359041f46c6c5" + integrity sha512-alJC0uCZpTFrSL0CCDjcgleBXPnCrEAhTBILpeAp7M/OFgoqtAetfBzX0xM00MUsVVPpVjlPuMbREqnZCXaTnA== + +"@esbuild/win32-x64@0.27.7": + version "0.27.7" + resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.27.7.tgz#8fe30b3088b89b4873c3a6cc87597ae3920c0a8b" + integrity sha512-56hiAJPhwQ1R4i+21FVF7V8kSD5zZTdHcVuRFMW0hn753vVfQN8xlx4uOPT4xoGH0Z/oVATuR82AiqSTDIpaHg== "@eslint-community/eslint-utils@^4.2.0", "@eslint-community/eslint-utils@^4.4.0": version "4.4.0" @@ -5297,7 +6579,19 @@ dependencies: eslint-visitor-keys "^3.3.0" -"@eslint-community/regexpp@^4.5.1", "@eslint-community/regexpp@^4.6.1": +"@eslint-community/eslint-utils@^4.9.1": + version "4.9.1" + resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.9.1.tgz#4e90af67bc51ddee6cdef5284edf572ec376b595" + integrity sha512-phrYmNiYppR7znFEdqgfWHXR6NCkZEK7hwWDHZUjit/2/U0r6XvkDl0SYnoM51Hq7FhCGdLDT6zxCCOY1hexsQ== + dependencies: + eslint-visitor-keys "^3.4.3" + +"@eslint-community/regexpp@^4.12.2": + version "4.12.2" + resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.12.2.tgz#bccdf615bcf7b6e8db830ec0b8d21c9a25de597b" + integrity sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew== + +"@eslint-community/regexpp@^4.6.1": version "4.10.0" resolved "https://registry.npmmirror.com/@eslint-community/regexpp/-/regexpp-4.10.0.tgz#548f6de556857c8bb73bbee70c35dc82a2e74d63" integrity sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA== @@ -5322,6 +6616,11 @@ resolved "https://registry.npmmirror.com/@eslint/js/-/js-8.56.0.tgz#ef20350fec605a7f7035a01764731b2de0f3782b" integrity sha512-gMsVel9D7f2HLkBma9VbtzZRehRogVRfbr++f06nL2vnCGCNlzOD+/MUov/F4p8myyAHspEhVobgjpX64q5m6A== +"@exodus/bytes@^1.11.0", "@exodus/bytes@^1.6.0": + version "1.15.0" + resolved "https://registry.yarnpkg.com/@exodus/bytes/-/bytes-1.15.0.tgz#54479e0f406cbad024d6fe1c3190ecca4468df3b" + integrity sha512-UY0nlA+feH81UGSHv92sLEPLCeZFjXOuHhrIo0HQydScuQc8s0A7kL/UdgwgDq8g8ilksmuoF35YVTNphV2aBQ== + "@fastify/busboy@^2.0.0": version "2.1.0" resolved "https://registry.npmmirror.com/@fastify/busboy/-/busboy-2.1.0.tgz#0709e9f4cb252351c609c6e6d8d6779a8d25edff" @@ -5342,7 +6641,7 @@ "@floating-ui/core" "^1.6.0" "@floating-ui/utils" "^0.2.1" -"@floating-ui/react-dom@^2.0.0", "@floating-ui/react-dom@^2.0.6": +"@floating-ui/react-dom@^2.0.0": version "2.0.8" resolved "https://registry.npmmirror.com/@floating-ui/react-dom/-/react-dom-2.0.8.tgz#afc24f9756d1b433e1fe0d047c24bd4d9cefaa5d" integrity sha512-HOdqOt3R3OGeTKidaLvJKcgg75S6tibQ3Tif4eyd91QnIJWr0NLvoXFpJA/j8HqkFSL68GDca9AuyWEHlhyClw== @@ -5354,69 +6653,110 @@ resolved "https://registry.npmmirror.com/@floating-ui/utils/-/utils-0.2.1.tgz#16308cea045f0fc777b6ff20a9f25474dd8293d2" integrity sha512-9TANp6GPoMtYzQdt54kfAyMmz1+osLlXdg2ENroU7zzrtflTLrrC/lgrIfaSe+Wu0b89GKccT7vxXA0MoAIO+Q== -"@gar/promisify@^1.1.3": - version "1.1.3" - resolved "https://registry.npmmirror.com/@gar/promisify/-/promisify-1.1.3.tgz#555193ab2e3bb3b6adc3d551c9c030d9e860daf6" - integrity sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw== +"@formatjs/ecma402-abstract@2.3.6": + version "2.3.6" + resolved "https://registry.yarnpkg.com/@formatjs/ecma402-abstract/-/ecma402-abstract-2.3.6.tgz#d6ca9d3579054fe1e1a0a0b5e872e0d64922e4e1" + integrity sha512-HJnTFeRM2kVFVr5gr5kH1XP6K0JcJtE7Lzvtr3FS/so5f1kpsqqqxy5JF+FRaO6H2qmcMfAUIox7AJteieRtVw== + dependencies: + "@formatjs/fast-memoize" "2.2.7" + "@formatjs/intl-localematcher" "0.6.2" + decimal.js "^10.4.3" + tslib "^2.8.0" -"@gitbeaker/core@^35.8.0", "@gitbeaker/core@^35.8.1": - version "35.8.1" - resolved "https://registry.npmmirror.com/@gitbeaker/core/-/core-35.8.1.tgz#b4ce2d08d344ff50e76c38ff81b800bec6dfe851" - integrity sha512-KBrDykVKSmU9Q9Gly8KeHOgdc0lZSa435srECxuO0FGqqBcUQ82hPqUc13YFkkdOI9T1JRA3qSFajg8ds0mZKA== +"@formatjs/fast-memoize@2.2.7": + version "2.2.7" + resolved "https://registry.yarnpkg.com/@formatjs/fast-memoize/-/fast-memoize-2.2.7.tgz#707f9ddaeb522a32f6715bb7950b0831f4cc7b15" + integrity sha512-Yabmi9nSvyOMrlSeGGWDiH7rf3a7sIwplbvo/dlz9WCIjzIQAfy1RMf4S0X3yG724n5Ghu2GmEl5NJIV6O9sZQ== dependencies: - "@gitbeaker/requester-utils" "^35.8.1" - form-data "^4.0.0" - li "^1.3.0" - mime "^3.0.0" - query-string "^7.0.0" + tslib "^2.8.0" + +"@formatjs/icu-messageformat-parser@2.11.4": + version "2.11.4" + resolved "https://registry.yarnpkg.com/@formatjs/icu-messageformat-parser/-/icu-messageformat-parser-2.11.4.tgz#63bd2cd82d08ae2bef55adeeb86486df68826f32" + integrity sha512-7kR78cRrPNB4fjGFZg3Rmj5aah8rQj9KPzuLsmcSn4ipLXQvC04keycTI1F7kJYDwIXtT2+7IDEto842CfZBtw== + dependencies: + "@formatjs/ecma402-abstract" "2.3.6" + "@formatjs/icu-skeleton-parser" "1.8.16" + tslib "^2.8.0" + +"@formatjs/icu-skeleton-parser@1.8.16": + version "1.8.16" + resolved "https://registry.yarnpkg.com/@formatjs/icu-skeleton-parser/-/icu-skeleton-parser-1.8.16.tgz#13f81f6845c7cf6599623006aacaf7d6b4ad2970" + integrity sha512-H13E9Xl+PxBd8D5/6TVUluSpxGNvFSlN/b3coUp0e0JpuWXXnQDiavIpY3NnvSp4xhEMoXyyBvVfdFX8jglOHQ== + dependencies: + "@formatjs/ecma402-abstract" "2.3.6" + tslib "^2.8.0" + +"@formatjs/intl-localematcher@0.6.2": + version "0.6.2" + resolved "https://registry.yarnpkg.com/@formatjs/intl-localematcher/-/intl-localematcher-0.6.2.tgz#e9ebe0b4082d7d48e5b2d753579fb7ece4eaefea" + integrity sha512-XOMO2Hupl0wdd172Y06h6kLpBz6Dv+J4okPLl4LPtzbr8f66WbIoy4ev98EBuZ6ZK4h5ydTN6XneT4QVpD7cdA== + dependencies: + tslib "^2.8.0" + +"@gitbeaker/core@^40.6.0": + version "40.6.0" + resolved "https://registry.yarnpkg.com/@gitbeaker/core/-/core-40.6.0.tgz#f4c21bc0597164b30af35a6636e45225164f5b09" + integrity sha512-tVVm8ZPrS9YCHEcuPV8vD1IcEf9POpdygWo+kPvkK7LcC36EERVcXagb8snEaGgGLfUaVQh8qP4iDZgPnP3YBQ== + dependencies: + "@gitbeaker/requester-utils" "^40.6.0" + qs "^6.12.2" xcase "^2.0.1" -"@gitbeaker/core@^39.34.0": - version "39.34.0" - resolved "https://registry.npmmirror.com/@gitbeaker/core/-/core-39.34.0.tgz#ea5724688ddd4814a0ce399a72c8a4e9b16bd89d" - integrity sha512-2DHxkmF+IYFv6zLOJ5sy1PGrGXSDGKUJj7l6c5BXfmKVS9kgAfaqslZsdonh3wVtyEClEUPHez2Gq6vI/r35bg== +"@gitbeaker/core@^41.3.0": + version "41.3.0" + resolved "https://registry.yarnpkg.com/@gitbeaker/core/-/core-41.3.0.tgz#c1e263b6da5c56e6d70eec8907a7728b15b63d03" + integrity sha512-ZPy0v71WTSKdELLhG5FkMCxIWCJwRpA7QkvnULiE36sIynQE0WwBNux+GPjjEh6xQ6PfBAB4E/1Uu2YZXiJlNg== dependencies: - "@gitbeaker/requester-utils" "^39.34.0" - qs "^6.11.2" + "@gitbeaker/requester-utils" "^41.3.0" + qs "^6.12.2" xcase "^2.0.1" -"@gitbeaker/node@^35.8.0": - version "35.8.1" - resolved "https://registry.npmmirror.com/@gitbeaker/node/-/node-35.8.1.tgz#d67885c827f2d7405afd7e39538a230721756e5c" - integrity sha512-g6rX853y61qNhzq9cWtxIEoe2KDeFBtXAeWMGWJnc3nz3WRump2pIICvJqw/yobLZqmTNt+ea6w3/n92Mnbn3g== +"@gitbeaker/requester-utils@^40.6.0": + version "40.6.0" + resolved "https://registry.yarnpkg.com/@gitbeaker/requester-utils/-/requester-utils-40.6.0.tgz#25372357b8ad62453b38a3666e848c51a992bf64" + integrity sha512-DQu2l3iXtB+8e1Ye2ekeUHABt4mGMRTLtuVWtFqf74sqJnerHNOxVOjPn19qu/nKdvKR3ZLwSRTtPzEsxgcShg== dependencies: - "@gitbeaker/core" "^35.8.1" - "@gitbeaker/requester-utils" "^35.8.1" - delay "^5.0.0" - got "^11.8.3" + picomatch-browser "^2.2.6" + qs "^6.12.2" + rate-limiter-flexible "^4.0.1" xcase "^2.0.1" -"@gitbeaker/requester-utils@^35.8.1": - version "35.8.1" - resolved "https://registry.npmmirror.com/@gitbeaker/requester-utils/-/requester-utils-35.8.1.tgz#f345cdd05abd4169cfcd239d202db6283eb17dc8" - integrity sha512-MFzdH+Z6eJaCZA5ruWsyvm6SXRyrQHjYVR6aY8POFraIy7ceIHOprWCs1R+0ydDZ8KtBnd8OTHjlJ0sLtSFJCg== +"@gitbeaker/requester-utils@^41.3.0": + version "41.3.0" + resolved "https://registry.yarnpkg.com/@gitbeaker/requester-utils/-/requester-utils-41.3.0.tgz#6d45be2189914fc8c7cac0599434fecf03b88eb9" + integrity sha512-sNVlp32uaieQ+Giovlu1GJ8hY9jMhY//f3WMHct2GV0U74PkSsixQgQv9XuRKgZalk2uI12iJrBY7gnAA5N8/w== dependencies: - form-data "^4.0.0" - qs "^6.10.1" + picomatch-browser "^2.2.6" + qs "^6.12.2" + rate-limiter-flexible "^4.0.1" xcase "^2.0.1" -"@gitbeaker/requester-utils@^39.34.0": - version "39.34.0" - resolved "https://registry.npmmirror.com/@gitbeaker/requester-utils/-/requester-utils-39.34.0.tgz#ee91cc220fa8af537be1b6bd23432252d6347dca" - integrity sha512-82XEPAlYwC475I4vjj/SKM50ptdvMCuX5aeW4XE3eYnjc2rNh/mLDbgGRu2P4wzb2x+yHxY6W8NpcfZ39Ek2wQ== +"@gitbeaker/requester-utils@^43.8.0": + version "43.8.0" + resolved "https://registry.yarnpkg.com/@gitbeaker/requester-utils/-/requester-utils-43.8.0.tgz#6b9fb0cf93ce20c7a9b453161749c61a704c2849" + integrity sha512-d/SiJdxijc+aH5ZBQOw83XLxNSXqsBZNm5k3nPu1EHxGxK0fajXmxdMl0/vNXbKRggnIquFCxURkrQSEzfjqxQ== dependencies: picomatch-browser "^2.2.6" - qs "^6.11.2" - rate-limiter-flexible "^4.0.0" + qs "^6.14.0" + rate-limiter-flexible "^8.0.1" xcase "^2.0.1" -"@gitbeaker/rest@^39.25.0": - version "39.34.0" - resolved "https://registry.npmmirror.com/@gitbeaker/rest/-/rest-39.34.0.tgz#cd2b16c5a8e79b80e70cd780de907b939c5d7e4b" - integrity sha512-9EDO4HVAjaRjU6K0h2B7cPpv2gGY9fxO+a2p4gxbQo30ikKOeQFE0UtU2QLnztin8WPcB0S8sOOoMVGBWhxb0Q== +"@gitbeaker/rest@^40.0.3": + version "40.6.0" + resolved "https://registry.yarnpkg.com/@gitbeaker/rest/-/rest-40.6.0.tgz#9f80ee350976a5fc4d97920c7dc2d5f44579fcde" + integrity sha512-sAwYJclU3NlB/gdxqhH6Hnmy5LWzvW7D3W33eShQEnxMhM0VjnFHPHcgJLQCIux3hMiub1uGtTw1hBJTxDc2mQ== dependencies: - "@gitbeaker/core" "^39.34.0" - "@gitbeaker/requester-utils" "^39.34.0" + "@gitbeaker/core" "^40.6.0" + "@gitbeaker/requester-utils" "^40.6.0" + +"@gitbeaker/rest@^41.2.0": + version "41.3.0" + resolved "https://registry.yarnpkg.com/@gitbeaker/rest/-/rest-41.3.0.tgz#1a040f0cfe091f57e2d027a2e2d1bdfb9a447e9b" + integrity sha512-l1jEloxQ4/SCdOjv9ryfbZEvvF90GFllLxULbHiLPI72rAHCjxWtjAdeQXddkvfw/LYCw7CFyu+M9Okt/IjsgA== + dependencies: + "@gitbeaker/core" "^41.3.0" + "@gitbeaker/requester-utils" "^41.3.0" "@google-cloud/container@^5.0.0": version "5.5.0" @@ -5476,33 +6816,12 @@ teeny-request "^9.0.0" uuid "^8.0.0" -"@graphiql/react@^0.20.0": - version "0.20.2" - resolved "https://registry.npmmirror.com/@graphiql/react/-/react-0.20.2.tgz#8ed900c50d19244d85ff61ad9480cc616b6ae6b5" - integrity sha512-/crAUlM+4iVHyNHVdiZjsTEqfMXBHfjEvrMwCwTVig6YXmCAVuaxqkD7NlDtrrPQArLGkABmf1Nw7ObRpby5lg== - dependencies: - "@graphiql/toolkit" "^0.9.1" - "@headlessui/react" "^1.7.15" - "@radix-ui/react-dialog" "^1.0.4" - "@radix-ui/react-dropdown-menu" "^2.0.5" - "@radix-ui/react-tooltip" "^1.0.6" - "@radix-ui/react-visually-hidden" "^1.0.3" - "@types/codemirror" "^5.60.8" - clsx "^1.2.1" - codemirror "^5.65.3" - codemirror-graphql "^2.0.10" - copy-to-clipboard "^3.2.0" - framer-motion "^6.5.1" - graphql-language-service "^5.2.0" - markdown-it "^12.2.0" - set-value "^4.1.0" - -"@graphiql/react@^0.20.3": - version "0.20.4" - resolved "https://registry.npmmirror.com/@graphiql/react/-/react-0.20.4.tgz#aa65cf8135aa59c54d2cf5d9a144d72f3f46b84b" - integrity sha512-LDgIlHa65pSngk8G2O0hvohNz4B41VUa7Yg6iPwifa1XreXxHIXjhV6FC1qi5oSjdCIRp4T8dkZnHA6iI5eElg== +"@graphiql/react@0.29.0", "@graphiql/react@^0.29.0": + version "0.29.0" + resolved "https://registry.yarnpkg.com/@graphiql/react/-/react-0.29.0.tgz#0ac1b8655ef0d0e0bd5a3cc580dd51e06beeb6e6" + integrity sha512-4Zd57+DeK5t1KYiqy9hnuaQhR8fnZ1CkKUkmZqINpAe0OlpbszOE661zwNGuW5NjbXgepfI89ICnh1ZVinSJvg== dependencies: - "@graphiql/toolkit" "^0.9.1" + "@graphiql/toolkit" "^0.11.2" "@headlessui/react" "^1.7.15" "@radix-ui/react-dialog" "^1.0.4" "@radix-ui/react-dropdown-menu" "^2.0.5" @@ -5511,192 +6830,62 @@ "@types/codemirror" "^5.60.8" clsx "^1.2.1" codemirror "^5.65.3" - codemirror-graphql "^2.0.11" + codemirror-graphql "^2.2.1" copy-to-clipboard "^3.2.0" framer-motion "^6.5.1" - graphql-language-service "^5.2.0" - markdown-it "^12.2.0" + get-value "^3.0.1" + graphql-language-service "^5.3.1" + markdown-it "^14.1.0" + react-compiler-runtime "19.1.0-rc.1" set-value "^4.1.0" -"@graphiql/toolkit@^0.9.1": - version "0.9.1" - resolved "https://registry.npmmirror.com/@graphiql/toolkit/-/toolkit-0.9.1.tgz#44bfa83aed79c8c18affac49efbb81f8e87bade3" - integrity sha512-LVt9pdk0830so50ZnU2Znb2rclcoWznG8r8asqAENzV0U1FM1kuY0sdPpc/rBc9MmmNgnB6A+WZzDhq6dbhTHA== +"@graphiql/toolkit@^0.11.2": + version "0.11.3" + resolved "https://registry.yarnpkg.com/@graphiql/toolkit/-/toolkit-0.11.3.tgz#7f08352779b316fc6436820e11329ac3e6af9f9c" + integrity sha512-Glf0fK1cdHLNq52UWPzfSrYIJuNxy8h4451Pw1ZVpJ7dtU+tm7GVVC64UjEDQ/v2j3fnG4cX8jvR75IvfL6nzQ== dependencies: "@n1ru4l/push-pull-async-iterable-iterator" "^3.1.0" meros "^1.1.4" -"@graphql-tools/batch-execute@^9.0.1": - version "9.0.2" - resolved "https://registry.npmmirror.com/@graphql-tools/batch-execute/-/batch-execute-9.0.2.tgz#5ac3257501e7941fad40661bb5e1110d6312f58b" - integrity sha512-Y2uwdZI6ZnatopD/SYfZ1eGuQFI7OU2KGZ2/B/7G9ISmgMl5K+ZZWz/PfIEXeiHirIDhyk54s4uka5rj2xwKqQ== - dependencies: - "@graphql-tools/utils" "^10.0.5" - dataloader "^2.2.2" - tslib "^2.4.0" - value-or-promise "^1.0.12" - -"@graphql-tools/delegate@^10.0.0", "@graphql-tools/delegate@^10.0.3": - version "10.0.3" - resolved "https://registry.npmmirror.com/@graphql-tools/delegate/-/delegate-10.0.3.tgz#2d0e133da94ca92c24e0c7360414e5592321cf2d" - integrity sha512-Jor9oazZ07zuWkykD3OOhT/2XD74Zm6Ar0ENZMk75MDD51wB2UWUIMljtHxbJhV5A6UBC2v8x6iY0xdCGiIlyw== - dependencies: - "@graphql-tools/batch-execute" "^9.0.1" - "@graphql-tools/executor" "^1.0.0" - "@graphql-tools/schema" "^10.0.0" - "@graphql-tools/utils" "^10.0.5" - dataloader "^2.2.2" - tslib "^2.5.0" - -"@graphql-tools/executor-graphql-ws@^1.0.0": - version "1.1.0" - resolved "https://registry.npmmirror.com/@graphql-tools/executor-graphql-ws/-/executor-graphql-ws-1.1.0.tgz#7727159ebaa9df4dc793d0d02e74dd1ca4a7cc60" - integrity sha512-yM67SzwE8rYRpm4z4AuGtABlOp9mXXVy6sxXnTJRoYIdZrmDbKVfIY+CpZUJCqS0FX3xf2+GoHlsj7Qswaxgcg== - dependencies: - "@graphql-tools/utils" "^10.0.2" - "@types/ws" "^8.0.0" - graphql-ws "^5.14.0" - isomorphic-ws "^5.0.0" - tslib "^2.4.0" - ws "^8.13.0" - -"@graphql-tools/executor-http@^1.0.5": - version "1.0.7" - resolved "https://registry.npmmirror.com/@graphql-tools/executor-http/-/executor-http-1.0.7.tgz#c358f91d4f88e49b9be7408a517f77a3079b2d91" - integrity sha512-/MoRYzQS50Tz5mxRfq3ZmeZ2SOins9wGZAGetsJ55F3PxL0PmHdSGlCq12KzffZDbwHV5YMlwigBsSGWq4y9Iw== - dependencies: - "@graphql-tools/utils" "^10.0.2" - "@repeaterjs/repeater" "^3.0.4" - "@whatwg-node/fetch" "^0.9.0" - extract-files "^11.0.0" - meros "^1.2.1" - tslib "^2.4.0" - value-or-promise "^1.0.12" - -"@graphql-tools/executor-legacy-ws@^1.0.0": - version "1.0.5" - resolved "https://registry.npmmirror.com/@graphql-tools/executor-legacy-ws/-/executor-legacy-ws-1.0.5.tgz#07de9d6e0e49febbcb87d6558bbeebf3940ff25a" - integrity sha512-w54AZ7zkNuvpyV09FH+eGHnnAmaxhBVHg4Yh2ICcsMfRg0brkLt77PlbjBuxZ4HY8XZnKJaYWf+tKazQZtkQtg== - dependencies: - "@graphql-tools/utils" "^10.0.0" - "@types/ws" "^8.0.0" - isomorphic-ws "^5.0.0" - tslib "^2.4.0" - ws "^8.15.0" - -"@graphql-tools/executor@^1.0.0": - version "1.2.0" - resolved "https://registry.npmmirror.com/@graphql-tools/executor/-/executor-1.2.0.tgz#6c45f4add765769d9820c4c4405b76957ba39c79" - integrity sha512-SKlIcMA71Dha5JnEWlw4XxcaJ+YupuXg0QCZgl2TOLFz4SkGCwU/geAsJvUJFwK2RbVLpQv/UMq67lOaBuwDtg== - dependencies: - "@graphql-tools/utils" "^10.0.0" - "@graphql-typed-document-node/core" "3.2.0" - "@repeaterjs/repeater" "^3.0.4" - tslib "^2.4.0" - value-or-promise "^1.0.12" - -"@graphql-tools/graphql-file-loader@^8.0.0": - version "8.0.0" - resolved "https://registry.npmmirror.com/@graphql-tools/graphql-file-loader/-/graphql-file-loader-8.0.0.tgz#a2026405bce86d974000455647511bf65df4f211" - integrity sha512-wRXj9Z1IFL3+zJG1HWEY0S4TXal7+s1vVhbZva96MSp0kbb/3JBF7j0cnJ44Eq0ClccMgGCDFqPFXty4JlpaPg== - dependencies: - "@graphql-tools/import" "7.0.0" - "@graphql-tools/utils" "^10.0.0" - globby "^11.0.3" - tslib "^2.4.0" - unixify "^1.0.0" - -"@graphql-tools/import@7.0.0": - version "7.0.0" - resolved "https://registry.npmmirror.com/@graphql-tools/import/-/import-7.0.0.tgz#a6a91a90a707d5f46bad0fd3fde2f407b548b2be" - integrity sha512-NVZiTO8o1GZs6OXzNfjB+5CtQtqsZZpQOq+Uu0w57kdUkT4RlQKlwhT8T81arEsbV55KpzkpFsOZP7J1wdmhBw== - dependencies: - "@graphql-tools/utils" "^10.0.0" - resolve-from "5.0.0" - tslib "^2.4.0" - -"@graphql-tools/json-file-loader@^8.0.0": - version "8.0.0" - resolved "https://registry.npmmirror.com/@graphql-tools/json-file-loader/-/json-file-loader-8.0.0.tgz#9b1b62902f766ef3f1c9cd1c192813ea4f48109c" - integrity sha512-ki6EF/mobBWJjAAC84xNrFMhNfnUFD6Y0rQMGXekrUgY0NdeYXHU0ZUgHzC9O5+55FslqUmAUHABePDHTyZsLg== - dependencies: - "@graphql-tools/utils" "^10.0.0" - globby "^11.0.3" - tslib "^2.4.0" - unixify "^1.0.0" - -"@graphql-tools/load@^8.0.0": - version "8.0.1" - resolved "https://registry.npmmirror.com/@graphql-tools/load/-/load-8.0.1.tgz#498f2230448601cb87894b8a93df7867daef69ea" - integrity sha512-qSMsKngJhDqRbuWyo3NvakEFqFL6+eSjy8ooJ1o5qYD26N7dqXkKzIMycQsX7rBK19hOuINAUSaRcVWH6hTccw== +"@graphql-tools/merge@8.3.1": + version "8.3.1" + resolved "https://registry.yarnpkg.com/@graphql-tools/merge/-/merge-8.3.1.tgz#06121942ad28982a14635dbc87b5d488a041d722" + integrity sha512-BMm99mqdNZbEYeTPK3it9r9S6rsZsQKtlqJsSBknAclXq2pGEfOxjcIZi+kBSkHZKPKCRrYDd5vY0+rUmIHVLg== dependencies: - "@graphql-tools/schema" "^10.0.0" - "@graphql-tools/utils" "^10.0.11" - p-limit "3.1.0" + "@graphql-tools/utils" "8.9.0" tslib "^2.4.0" -"@graphql-tools/merge@^9.0.0", "@graphql-tools/merge@^9.0.1": - version "9.0.1" - resolved "https://registry.npmmirror.com/@graphql-tools/merge/-/merge-9.0.1.tgz#693f15da152339284469b1ce5c6827e3ae350a29" - integrity sha512-hIEExWO9fjA6vzsVjJ3s0cCQ+Q/BEeMVJZtMXd7nbaVefVy0YDyYlEkeoYYNV3NVVvu1G9lr6DM1Qd0DGo9Caw== +"@graphql-tools/schema@^8.5.0": + version "8.5.1" + resolved "https://registry.yarnpkg.com/@graphql-tools/schema/-/schema-8.5.1.tgz#c2f2ff1448380919a330312399c9471db2580b58" + integrity sha512-0Esilsh0P/qYcB5DKQpiKeQs/jevzIadNTaT0jeWklPMwNbT7yMX4EqZany7mbeRRlSRwMzNzL5olyFdffHBZg== dependencies: - "@graphql-tools/utils" "^10.0.10" + "@graphql-tools/merge" "8.3.1" + "@graphql-tools/utils" "8.9.0" tslib "^2.4.0" + value-or-promise "1.0.11" -"@graphql-tools/schema@^10.0.0": - version "10.0.2" - resolved "https://registry.npmmirror.com/@graphql-tools/schema/-/schema-10.0.2.tgz#21bc2ee25a65fb4890d2e5f9f22ef1f733aa81da" - integrity sha512-TbPsIZnWyDCLhgPGnDjt4hosiNU2mF/rNtSk5BVaXWnZqvKJ6gzJV4fcHcvhRIwtscDMW2/YTnK6dLVnk8pc4w== +"@graphql-tools/utils@8.9.0": + version "8.9.0" + resolved "https://registry.yarnpkg.com/@graphql-tools/utils/-/utils-8.9.0.tgz#c6aa5f651c9c99e1aca55510af21b56ec296cdb7" + integrity sha512-pjJIWH0XOVnYGXCqej8g/u/tsfV4LvLlj0eATKQu5zwnxd/TiTHq7Cg313qUPTFFHZ3PP5wJ15chYVtLDwaymg== dependencies: - "@graphql-tools/merge" "^9.0.1" - "@graphql-tools/utils" "^10.0.10" tslib "^2.4.0" - value-or-promise "^1.0.12" -"@graphql-tools/url-loader@^8.0.0": - version "8.0.1" - resolved "https://registry.npmmirror.com/@graphql-tools/url-loader/-/url-loader-8.0.1.tgz#91247247d253c538c4c28376ca74d944fa8cfb82" - integrity sha512-B2k8KQEkEQmfV1zhurT5GLoXo8jbXP+YQHUayhCSxKYlRV7j/1Fhp1b21PDM8LXIDGlDRXaZ0FbWKOs7eYXDuQ== - dependencies: - "@ardatan/sync-fetch" "^0.0.1" - "@graphql-tools/delegate" "^10.0.0" - "@graphql-tools/executor-graphql-ws" "^1.0.0" - "@graphql-tools/executor-http" "^1.0.5" - "@graphql-tools/executor-legacy-ws" "^1.0.0" - "@graphql-tools/utils" "^10.0.0" - "@graphql-tools/wrap" "^10.0.0" - "@types/ws" "^8.0.0" - "@whatwg-node/fetch" "^0.9.0" - isomorphic-ws "^5.0.0" - tslib "^2.4.0" - value-or-promise "^1.0.11" - ws "^8.12.0" - -"@graphql-tools/utils@^10.0.0", "@graphql-tools/utils@^10.0.10", "@graphql-tools/utils@^10.0.11", "@graphql-tools/utils@^10.0.2", "@graphql-tools/utils@^10.0.5": - version "10.0.13" - resolved "https://registry.npmmirror.com/@graphql-tools/utils/-/utils-10.0.13.tgz#d0ab7a4dd02a8405f5ef62dd140b7579ba69f8cb" - integrity sha512-fMILwGr5Dm2zefNItjQ6C2rauigklv69LIwppccICuGTnGaOp3DspLt/6Lxj72cbg5d9z60Sr+Egco3CJKLsNg== +"@graphql-tools/utils@^8.8.0": + version "8.13.1" + resolved "https://registry.yarnpkg.com/@graphql-tools/utils/-/utils-8.13.1.tgz#b247607e400365c2cd87ff54654d4ad25a7ac491" + integrity sha512-qIh9yYpdUFmctVqovwMdheVNJqFh+DQNWIhX87FJStfXYnmweBUDATok9fWPleKeFwxnW8IapKmY8m8toJEkAw== dependencies: - "@graphql-typed-document-node/core" "^3.1.1" - cross-inspect "1.0.0" - dset "^3.1.2" tslib "^2.4.0" -"@graphql-tools/wrap@^10.0.0": - version "10.0.1" - resolved "https://registry.npmmirror.com/@graphql-tools/wrap/-/wrap-10.0.1.tgz#9e3d27d2723962c26c4377d5d7ab0d3038bf728c" - integrity sha512-Cw6hVrKGM2OKBXeuAGltgy4tzuqQE0Nt7t/uAqnuokSXZhMHXJUb124Bnvxc2gPZn5chfJSDafDe4Cp8ZAVJgg== +"@grpc/grpc-js@^1.11.1": + version "1.14.3" + resolved "https://registry.yarnpkg.com/@grpc/grpc-js/-/grpc-js-1.14.3.tgz#4c9b817a900ae4020ddc28515ae4b52c78cfb8da" + integrity sha512-Iq8QQQ/7X3Sac15oB6p0FmUg/klxQvXLeileoqrTRGJYLV+/9tubbr9ipz0GKHjmXVsgFPo/+W+2cA8eNcR+XA== dependencies: - "@graphql-tools/delegate" "^10.0.3" - "@graphql-tools/schema" "^10.0.0" - "@graphql-tools/utils" "^10.0.0" - tslib "^2.4.0" - value-or-promise "^1.0.12" - -"@graphql-typed-document-node/core@3.2.0", "@graphql-typed-document-node/core@^3.1.1": - version "3.2.0" - resolved "https://registry.npmmirror.com/@graphql-typed-document-node/core/-/core-3.2.0.tgz#5f3d96ec6b2354ad6d8a28bf216a1d97b5426861" - integrity sha512-mB9oAsNCm9aM3/SOv4YtBMqZbYj10R7dkq8byBqxGY/ncFwhf2oQzMV+LCRlWoDSEBJ3COiR1yeDvMtsoOsuFQ== + "@grpc/proto-loader" "^0.8.0" + "@js-sdsl/ordered-map" "^4.4.2" "@grpc/grpc-js@~1.9.6": version "1.9.14" @@ -5716,6 +6905,26 @@ protobufjs "^7.2.4" yargs "^17.7.2" +"@grpc/proto-loader@^0.7.13": + version "0.7.15" + resolved "https://registry.yarnpkg.com/@grpc/proto-loader/-/proto-loader-0.7.15.tgz#4cdfbf35a35461fc843abe8b9e2c0770b5095e60" + integrity sha512-tMXdRCfYVixjuFK+Hk0Q1s38gV9zDiDJfWL3h1rv4Qc39oILCu1TRTDt7+fGUI8K4G1Fj125Hx/ru3azECWTyQ== + dependencies: + lodash.camelcase "^4.3.0" + long "^5.0.0" + protobufjs "^7.2.5" + yargs "^17.7.2" + +"@grpc/proto-loader@^0.8.0": + version "0.8.0" + resolved "https://registry.yarnpkg.com/@grpc/proto-loader/-/proto-loader-0.8.0.tgz#b6c324dd909c458a0e4aa9bfd3d69cf78a4b9bd8" + integrity sha512-rc1hOQtjIWGxcxpb9aHAfLpIctjEnsDehj0DAiVfBlmT84uvR0uUtN2hEi/ecvWVjXUGf5qPF4qEgiLOx1YIMQ== + dependencies: + lodash.camelcase "^4.3.0" + long "^5.0.0" + protobufjs "^7.5.3" + yargs "^17.7.2" + "@headlessui/react@^1.7.15": version "1.7.18" resolved "https://registry.npmmirror.com/@headlessui/react/-/react-1.7.18.tgz#30af4634d2215b2ca1aa29d07f33d02bea82d9d7" @@ -5724,6 +6933,38 @@ "@tanstack/react-virtual" "^3.0.0-beta.60" client-only "^0.0.1" +"@httptoolkit/httpolyglot@^2.2.1": + version "2.2.2" + resolved "https://registry.yarnpkg.com/@httptoolkit/httpolyglot/-/httpolyglot-2.2.2.tgz#e36bad48f530546984724c45bd01d89c1acc020e" + integrity sha512-Mm75bidN/jrUsuhBjHAMoQbmR52zQYi8xr/+0mQYGW+dQelg+sdJR/kGRKKZGeAoPgp/1rrZWJqdohZP0xm18g== + dependencies: + "@types/node" "*" + +"@httptoolkit/subscriptions-transport-ws@^0.11.2": + version "0.11.2" + resolved "https://registry.yarnpkg.com/@httptoolkit/subscriptions-transport-ws/-/subscriptions-transport-ws-0.11.2.tgz#514663c926264e2de7f6cd33d09f81675c35b9e3" + integrity sha512-YB+gYYVjgYUeJrGkfS91ABeNWCFU7EVcn9Cflf2UXjsIiPJEI6yPxujPcjKv9wIJpM+33KQW/qVEmc+BdIDK2w== + dependencies: + backo2 "^1.0.2" + eventemitter3 "^3.1.0" + iterall "^1.2.1" + symbol-observable "^1.0.4" + ws "^8.8.0" + +"@httptoolkit/websocket-stream@^6.0.1": + version "6.0.1" + resolved "https://registry.yarnpkg.com/@httptoolkit/websocket-stream/-/websocket-stream-6.0.1.tgz#8d732f1509860236276f6b0759db4cc9859bbb62" + integrity sha512-A0NOZI+Glp3Xgcz6Na7i7o09+/+xm2m0UCU8gdtM2nIv6/cjLmhMZMqehSpTlgbx9omtLmV8LVqOskPEyWnmZQ== + dependencies: + "@types/ws" "*" + duplexify "^3.5.1" + inherits "^2.0.1" + isomorphic-ws "^4.0.1" + readable-stream "^2.3.3" + safe-buffer "^5.1.2" + ws "*" + xtend "^4.0.0" + "@humanwhocodes/config-array@^0.11.13": version "0.11.14" resolved "https://registry.npmmirror.com/@humanwhocodes/config-array/-/config-array-0.11.14.tgz#d78e481a039f7566ecc9660b4ea7fe6b1fec442b" @@ -5743,16 +6984,45 @@ resolved "https://registry.npmmirror.com/@humanwhocodes/object-schema/-/object-schema-2.0.2.tgz#d9fae00a2d5cb40f92cfe64b47ad749fbc38f917" integrity sha512-6EwiSjwWYP7pTckG6I5eyFANjPhmPjUX9JRLUSfNPC7FX7zK9gyZAfUEaECL6ALTpGX5AjnBq3C9XmVWPitNpw== -"@hutson/parse-repository-url@^3.0.0": - version "3.0.2" - resolved "https://registry.npmmirror.com/@hutson/parse-repository-url/-/parse-repository-url-3.0.2.tgz#98c23c950a3d9b6c8f0daed06da6c3af06981340" - integrity sha512-H9XAx3hc0BQHY6l+IFSWHDySypcXsvsuLhgYLUGywmJ5pswRVQJUHpOsobnLYp2ZUaUlKiKDrgWWhosOwAEM8Q== +"@internationalized/date@^3.12.0", "@internationalized/date@^3.12.1": + version "3.12.1" + resolved "https://registry.yarnpkg.com/@internationalized/date/-/date-3.12.1.tgz#6e07ff34fafcba9a155cb8d4e0505f362e57a56b" + integrity sha512-6IedsVWXyq4P9Tj+TxuU8WGWM70hYLl12nbYU8jkikVpa6WXapFazPUcHUMDMoWftIDE2ILDkFFte6W2nFCkRQ== + dependencies: + "@swc/helpers" "^0.5.0" + +"@internationalized/message@^3.1.9": + version "3.1.9" + resolved "https://registry.yarnpkg.com/@internationalized/message/-/message-3.1.9.tgz#40b0f5d2ac9df6e6aabcf5d34750aa2c58730cb9" + integrity sha512-x03MSVTaB/4JHtW1VAYaY/2cCuBrHbWM6ZvlgpKdnSdW28tZbqpR673RJrVJyXWRw1bpgYN89Tz7ohX5tgNgPA== + dependencies: + "@swc/helpers" "^0.5.0" + intl-messageformat "^10.1.0" + +"@internationalized/number@^3.6.6": + version "3.6.6" + resolved "https://registry.yarnpkg.com/@internationalized/number/-/number-3.6.6.tgz#8bd41940dd9c08e265ec13c9331bad4fd57267e1" + integrity sha512-iFgmQaXHE0vytNfpLZWOC2mEJCBRzcUxt53Xf/yCXG93lRvqas237i3r7X4RKMwO3txiyZD4mQjKAByFv6UGSQ== + dependencies: + "@swc/helpers" "^0.5.0" + +"@internationalized/string@^3.2.7", "@internationalized/string@^3.2.8": + version "3.2.8" + resolved "https://registry.yarnpkg.com/@internationalized/string/-/string-3.2.8.tgz#ca27e2ba127528d6b55a20fb5302bfebb852e1d9" + integrity sha512-NdbMQUSfXLYIQol5VyMtinm9pZDciiMfN7RtmSuSB78io1hqwJ0naYfxyW6vgxWBkzWymQa/3uLDlbfmshtCaA== + dependencies: + "@swc/helpers" "^0.5.0" "@ioredis/commands@^1.1.1": version "1.2.0" resolved "https://registry.npmmirror.com/@ioredis/commands/-/commands-1.2.0.tgz#6d61b3097470af1fdbbe622795b8921d42018e11" integrity sha512-Sx1pU8EM64o2BrqNpEO1CNLtKQwyhuXuqyfH7oGKCk+1a33d2r5saW8zNwm3j6BTExtjrv2BxTgzzkMwts6vGg== +"@iovalkey/commands@^0.1.0": + version "0.1.0" + resolved "https://registry.yarnpkg.com/@iovalkey/commands/-/commands-0.1.0.tgz#62648b19106690ee8ce7d11aaf6249a242f927b0" + integrity sha512-/B9W4qKSSITDii5nkBCHyPkIkAi+ealUtr1oqBJsLxjSRLka4pxun2VvMNSmcwgAMxgXtQfl0qRv7TE+udPJzg== + "@isaacs/cliui@^8.0.2": version "8.0.2" resolved "https://registry.npmmirror.com/@isaacs/cliui/-/cliui-8.0.2.tgz#b37667b7bc181c168782259bab42474fbf52b550" @@ -5765,9 +7035,61 @@ wrap-ansi "^8.1.0" wrap-ansi-cjs "npm:wrap-ansi@^7.0.0" +"@isaacs/fs-minipass@^4.0.0": + version "4.0.1" + resolved "https://registry.yarnpkg.com/@isaacs/fs-minipass/-/fs-minipass-4.0.1.tgz#2d59ae3ab4b38fb4270bfa23d30f8e2e86c7fe32" + integrity sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w== + dependencies: + minipass "^7.0.4" + +"@isomorphic-git/pgp-plugin@^0.0.7": + version "0.0.7" + resolved "https://registry.yarnpkg.com/@isomorphic-git/pgp-plugin/-/pgp-plugin-0.0.7.tgz#490db815b578cd4d4ee67bebace66b15067044de" + integrity sha512-6adXezgOeXFn5CHYlxAtmq7OoDjLPWxyxL7FXtM6ROdLOT/WScU1asPXG0dhGmKJNR4u23WF5pIbNHJtqKLZ/Q== + dependencies: + "@isomorphic-pgp/sign-and-verify" "^0.0.10" + "@isomorphic-pgp/util" "^0.0.6" + +"@isomorphic-pgp/parser@^0.0.3": + version "0.0.3" + resolved "https://registry.yarnpkg.com/@isomorphic-pgp/parser/-/parser-0.0.3.tgz#c825266531f1a3608bf41b8a8f519664ddd401d0" + integrity sha512-d1lu99aTI0VpHIQDeY+jNPbvT2TpkAaU0CC/udcWXwfyphH+qYXNo/4NgCO/084Zlbjoz23z8ZbrpMM9KrkwLw== + dependencies: + array-buffer-to-hex "^1.0.0" + base64-js "^1.3.0" + bn.js "^4.11.8" + clz-buffer "^1.0.0" + concat-buffers "^1.0.0" + crc "^3.8.0" + isomorphic-textencoder "^1.0.1" + select-case "^1.0.0" + +"@isomorphic-pgp/sign-and-verify@^0.0.10": + version "0.0.10" + resolved "https://registry.yarnpkg.com/@isomorphic-pgp/sign-and-verify/-/sign-and-verify-0.0.10.tgz#c0da50ef79ff29ebee05d8087f9b6422ecdd7259" + integrity sha512-YGta8FP2UXUcek1T5TY1taO1+TSIEu5Tk3+d5c/SmACIm3AJX4K1ncn4XuCXy+ECS8WyVj0sSzr6vxYEyZ6HiA== + dependencies: + "@isomorphic-pgp/parser" "^0.0.3" + "@isomorphic-pgp/util" "^0.0.6" + "@wmhilton/crypto-hash" "^1.0.2" + array-buffer-to-hex "^1.0.0" + isomorphic-textencoder "^1.0.1" + jsbn "^1.1.0" + sha.js "^2.4.11" + +"@isomorphic-pgp/util@^0.0.6": + version "0.0.6" + resolved "https://registry.yarnpkg.com/@isomorphic-pgp/util/-/util-0.0.6.tgz#557e650745a6c6c7f8794c261e11d935a534d689" + integrity sha512-6J60flPSPJpsuGiVZ29F5oJ8ma7v44ya9FwpjjEJUV4mTYuMujXFuKlAX1VNnNmi2DaerE8XRB5ocJi15Fe5Dg== + dependencies: + "@isomorphic-pgp/parser" "^0.0.3" + array-buffer-to-hex "^1.0.0" + concat-buffers "^1.0.0" + sha.js "^2.4.11" + "@istanbuljs/load-nyc-config@^1.0.0": version "1.1.0" - resolved "https://registry.npmmirror.com/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz#fd3db1d59ecf7cf121e80650bb86712f9b55eced" + resolved "https://registry.yarnpkg.com/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz#fd3db1d59ecf7cf121e80650bb86712f9b55eced" integrity sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ== dependencies: camelcase "^5.3.1" @@ -5776,10 +7098,10 @@ js-yaml "^3.13.1" resolve-from "^5.0.0" -"@istanbuljs/schema@^0.1.2": - version "0.1.3" - resolved "https://registry.npmmirror.com/@istanbuljs/schema/-/schema-0.1.3.tgz#e45e384e4b8ec16bce2fd903af78450f6bf7ec98" - integrity sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA== +"@istanbuljs/schema@^0.1.2", "@istanbuljs/schema@^0.1.3": + version "0.1.6" + resolved "https://registry.yarnpkg.com/@istanbuljs/schema/-/schema-0.1.6.tgz#8dc9afa2ac1506cb1a58f89940f1c124446c8df3" + integrity sha512-+Sg6GCR/wy1oSmQDFq4LQDAhm3ETKnorxN+y5nbLULOR3P0c14f2Wurzj3/xqPXtasLFfHd5iRFQ7AJt4KH2cw== "@jest-mock/express@^2.0.1": version "2.0.2" @@ -5790,7 +7112,7 @@ "@jest/console@^29.7.0": version "29.7.0" - resolved "https://registry.npmmirror.com/@jest/console/-/console-29.7.0.tgz#cd4822dbdb84529265c5a2bdb529a3c9cc950ffc" + resolved "https://registry.yarnpkg.com/@jest/console/-/console-29.7.0.tgz#cd4822dbdb84529265c5a2bdb529a3c9cc950ffc" integrity sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg== dependencies: "@jest/types" "^29.6.3" @@ -5802,7 +7124,7 @@ "@jest/core@^29.7.0": version "29.7.0" - resolved "https://registry.npmmirror.com/@jest/core/-/core-29.7.0.tgz#b6cccc239f30ff36609658c5a5e2291757ce448f" + resolved "https://registry.yarnpkg.com/@jest/core/-/core-29.7.0.tgz#b6cccc239f30ff36609658c5a5e2291757ce448f" integrity sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg== dependencies: "@jest/console" "^29.7.0" @@ -5834,16 +7156,16 @@ slash "^3.0.0" strip-ansi "^6.0.0" -"@jest/create-cache-key-function@^29.7.0": - version "29.7.0" - resolved "https://registry.npmmirror.com/@jest/create-cache-key-function/-/create-cache-key-function-29.7.0.tgz#793be38148fab78e65f40ae30c36785f4ad859f0" - integrity sha512-4QqS3LY5PBmTRHj9sAg1HLoPzqAI0uOX6wI/TRqHIcOxlFidy6YEmCQJk6FSZjNLGCeubDMfmkWL+qaLKhSGQA== +"@jest/create-cache-key-function@^30.0.0": + version "30.3.0" + resolved "https://registry.yarnpkg.com/@jest/create-cache-key-function/-/create-cache-key-function-30.3.0.tgz#c504533e2b2c6403c6dacaa6b0484e9b6df3b602" + integrity sha512-hTupmOWylzeyqbMNeSNi7ZDprpjrcroAOOG+qCEW66st3+Z5RnYHVYkUt+zjIcLmrTUi2lPY79hJz8mB3L2oXQ== dependencies: - "@jest/types" "^29.6.3" + "@jest/types" "30.3.0" "@jest/environment@^29.7.0": version "29.7.0" - resolved "https://registry.npmmirror.com/@jest/environment/-/environment-29.7.0.tgz#24d61f54ff1f786f3cd4073b4b94416383baf2a7" + resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-29.7.0.tgz#24d61f54ff1f786f3cd4073b4b94416383baf2a7" integrity sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw== dependencies: "@jest/fake-timers" "^29.7.0" @@ -5860,7 +7182,7 @@ "@jest/expect@^29.7.0": version "29.7.0" - resolved "https://registry.npmmirror.com/@jest/expect/-/expect-29.7.0.tgz#76a3edb0cb753b70dfbfe23283510d3d45432bf2" + resolved "https://registry.yarnpkg.com/@jest/expect/-/expect-29.7.0.tgz#76a3edb0cb753b70dfbfe23283510d3d45432bf2" integrity sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ== dependencies: expect "^29.7.0" @@ -5868,7 +7190,7 @@ "@jest/fake-timers@^29.7.0": version "29.7.0" - resolved "https://registry.npmmirror.com/@jest/fake-timers/-/fake-timers-29.7.0.tgz#fd91bf1fffb16d7d0d24a426ab1a47a49881a565" + resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-29.7.0.tgz#fd91bf1fffb16d7d0d24a426ab1a47a49881a565" integrity sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ== dependencies: "@jest/types" "^29.6.3" @@ -5880,7 +7202,7 @@ "@jest/globals@^29.7.0": version "29.7.0" - resolved "https://registry.npmmirror.com/@jest/globals/-/globals-29.7.0.tgz#8d9290f9ec47ff772607fa864ca1d5a2efae1d4d" + resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-29.7.0.tgz#8d9290f9ec47ff772607fa864ca1d5a2efae1d4d" integrity sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ== dependencies: "@jest/environment" "^29.7.0" @@ -5888,9 +7210,17 @@ "@jest/types" "^29.6.3" jest-mock "^29.7.0" +"@jest/pattern@30.0.1": + version "30.0.1" + resolved "https://registry.yarnpkg.com/@jest/pattern/-/pattern-30.0.1.tgz#d5304147f49a052900b4b853dedb111d080e199f" + integrity sha512-gWp7NfQW27LaBQz3TITS8L7ZCQ0TLvtmI//4OwlQRx4rnWxcPNIYjxZpDcN4+UlGxgm3jS5QPz8IPTCkb59wZA== + dependencies: + "@types/node" "*" + jest-regex-util "30.0.1" + "@jest/reporters@^29.7.0": version "29.7.0" - resolved "https://registry.npmmirror.com/@jest/reporters/-/reporters-29.7.0.tgz#04b262ecb3b8faa83b0b3d321623972393e8f4c7" + resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-29.7.0.tgz#04b262ecb3b8faa83b0b3d321623972393e8f4c7" integrity sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg== dependencies: "@bcoe/v8-coverage" "^0.2.3" @@ -5918,6 +7248,13 @@ strip-ansi "^6.0.0" v8-to-istanbul "^9.0.1" +"@jest/schemas@30.0.5": + version "30.0.5" + resolved "https://registry.yarnpkg.com/@jest/schemas/-/schemas-30.0.5.tgz#7bdf69fc5a368a5abdb49fd91036c55225846473" + integrity sha512-DmdYgtezMkh3cpU8/1uyXakv3tJRcmcXxBOcO0tbaozPwpmh4YMsnWrQm9ZmZMfa5ocbxzbFk6O4bDPEc/iAnA== + dependencies: + "@sinclair/typebox" "^0.34.0" + "@jest/schemas@^29.6.3": version "29.6.3" resolved "https://registry.npmmirror.com/@jest/schemas/-/schemas-29.6.3.tgz#430b5ce8a4e0044a7e3819663305a7b3091c8e03" @@ -5927,7 +7264,7 @@ "@jest/source-map@^29.6.3": version "29.6.3" - resolved "https://registry.npmmirror.com/@jest/source-map/-/source-map-29.6.3.tgz#d90ba772095cf37a34a5eb9413f1b562a08554c4" + resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-29.6.3.tgz#d90ba772095cf37a34a5eb9413f1b562a08554c4" integrity sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw== dependencies: "@jridgewell/trace-mapping" "^0.3.18" @@ -5936,7 +7273,7 @@ "@jest/test-result@^29.7.0": version "29.7.0" - resolved "https://registry.npmmirror.com/@jest/test-result/-/test-result-29.7.0.tgz#8db9a80aa1a097bb2262572686734baed9b1657c" + resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-29.7.0.tgz#8db9a80aa1a097bb2262572686734baed9b1657c" integrity sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA== dependencies: "@jest/console" "^29.7.0" @@ -5946,7 +7283,7 @@ "@jest/test-sequencer@^29.7.0": version "29.7.0" - resolved "https://registry.npmmirror.com/@jest/test-sequencer/-/test-sequencer-29.7.0.tgz#6cef977ce1d39834a3aea887a1726628a6f072ce" + resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-29.7.0.tgz#6cef977ce1d39834a3aea887a1726628a6f072ce" integrity sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw== dependencies: "@jest/test-result" "^29.7.0" @@ -5956,7 +7293,7 @@ "@jest/transform@^29.7.0": version "29.7.0" - resolved "https://registry.npmmirror.com/@jest/transform/-/transform-29.7.0.tgz#df2dd9c346c7d7768b8a06639994640c642e284c" + resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-29.7.0.tgz#df2dd9c346c7d7768b8a06639994640c642e284c" integrity sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw== dependencies: "@babel/core" "^7.11.6" @@ -5975,6 +7312,19 @@ slash "^3.0.0" write-file-atomic "^4.0.2" +"@jest/types@30.3.0": + version "30.3.0" + resolved "https://registry.yarnpkg.com/@jest/types/-/types-30.3.0.tgz#cada800d323cb74945c24ac74615fdb312a6c85f" + integrity sha512-JHm87k7bA33hpBngtU8h6UBub/fqqA9uXfw+21j5Hmk7ooPHlboRNxHq0JcMtC+n8VJGP1mcfnD3Mk+XKe1oSw== + dependencies: + "@jest/pattern" "30.0.1" + "@jest/schemas" "30.0.5" + "@types/istanbul-lib-coverage" "^2.0.6" + "@types/istanbul-reports" "^3.0.4" + "@types/node" "*" + "@types/yargs" "^17.0.33" + chalk "^4.1.2" + "@jest/types@^29.6.3": version "29.6.3" resolved "https://registry.npmmirror.com/@jest/types/-/types-29.6.3.tgz#1131f8cf634e7e84c5e77bab12f052af585fba59" @@ -5996,6 +7346,22 @@ "@jridgewell/sourcemap-codec" "^1.4.10" "@jridgewell/trace-mapping" "^0.3.9" +"@jridgewell/gen-mapping@^0.3.12", "@jridgewell/gen-mapping@^0.3.5": + version "0.3.13" + resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz#6342a19f44347518c93e43b1ac69deb3c4656a1f" + integrity sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA== + dependencies: + "@jridgewell/sourcemap-codec" "^1.5.0" + "@jridgewell/trace-mapping" "^0.3.24" + +"@jridgewell/remapping@^2.3.5": + version "2.3.5" + resolved "https://registry.yarnpkg.com/@jridgewell/remapping/-/remapping-2.3.5.tgz#375c476d1972947851ba1e15ae8f123047445aa1" + integrity sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ== + dependencies: + "@jridgewell/gen-mapping" "^0.3.5" + "@jridgewell/trace-mapping" "^0.3.24" + "@jridgewell/resolve-uri@^3.0.3", "@jridgewell/resolve-uri@^3.1.0": version "3.1.1" resolved "https://registry.npmmirror.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz#c08679063f279615a3326583ba3a90d1d82cc721" @@ -6019,6 +7385,11 @@ resolved "https://registry.npmmirror.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz#d7c6e6755c78567a951e04ab52ef0fd26de59f32" integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg== +"@jridgewell/sourcemap-codec@^1.5.0": + version "1.5.5" + resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz#6912b00d2c631c0d15ce1a7ab57cd657f2a8f8ba" + integrity sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og== + "@jridgewell/trace-mapping@0.3.9": version "0.3.9" resolved "https://registry.npmmirror.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz#6534fd5933a53ba7cbf3a17615e273a0d1273ff9" @@ -6027,7 +7398,15 @@ "@jridgewell/resolve-uri" "^3.0.3" "@jridgewell/sourcemap-codec" "^1.4.10" -"@jridgewell/trace-mapping@^0.3.12", "@jridgewell/trace-mapping@^0.3.17", "@jridgewell/trace-mapping@^0.3.18", "@jridgewell/trace-mapping@^0.3.20", "@jridgewell/trace-mapping@^0.3.9": +"@jridgewell/trace-mapping@^0.3.12", "@jridgewell/trace-mapping@^0.3.18", "@jridgewell/trace-mapping@^0.3.24", "@jridgewell/trace-mapping@^0.3.25", "@jridgewell/trace-mapping@^0.3.28": + version "0.3.31" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz#db15d6781c931f3a251a3dac39501c98a6082fd0" + integrity sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw== + dependencies: + "@jridgewell/resolve-uri" "^3.1.0" + "@jridgewell/sourcemap-codec" "^1.4.14" + +"@jridgewell/trace-mapping@^0.3.9": version "0.3.22" resolved "https://registry.npmmirror.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.22.tgz#72a621e5de59f5f1ef792d0793a82ee20f645e4c" integrity sha512-Wf963MzWtA2sjrNt+g18IAln9lKnlRp+K2eH4jjIoF1wYeq3aMREpG09xhlhdzS0EjwU7qmUJYangWa+151vZw== @@ -6035,26 +7414,137 @@ "@jridgewell/resolve-uri" "^3.1.0" "@jridgewell/sourcemap-codec" "^1.4.14" +"@js-sdsl/ordered-map@^4.4.2": + version "4.4.2" + resolved "https://registry.yarnpkg.com/@js-sdsl/ordered-map/-/ordered-map-4.4.2.tgz#9299f82874bab9e4c7f9c48d865becbfe8d6907c" + integrity sha512-iUKgm52T8HOE/makSxjqoWhe95ZJA1/G1sYsGev2JDKUSS14KAgg1LHb+Ba+IPow0xflbnSkOsZcO08C7w1gYw== + "@jsdevtools/ono@7.1.3", "@jsdevtools/ono@^7.1.3": version "7.1.3" resolved "https://registry.npmmirror.com/@jsdevtools/ono/-/ono-7.1.3.tgz#9df03bbd7c696a5c58885c34aa06da41c8543796" integrity sha512-4JQNk+3mVzK3xh2rqd6RB4J46qUR19azEHBneZyTZM+c456qOrbbM/5xcR8huNCCcbVt7+UmizG6GuUvPvKUYg== +"@jsep-plugin/assignment@^1.3.0": + version "1.3.0" + resolved "https://registry.yarnpkg.com/@jsep-plugin/assignment/-/assignment-1.3.0.tgz#fcfc5417a04933f7ceee786e8ab498aa3ce2b242" + integrity sha512-VVgV+CXrhbMI3aSusQyclHkenWSAm95WaiKrMxRFam3JSUiIaQjoMIw2sEs/OX4XifnqeQUN4DYbJjlA8EfktQ== + "@jsep-plugin/regex@^1.0.1": version "1.0.3" resolved "https://registry.npmmirror.com/@jsep-plugin/regex/-/regex-1.0.3.tgz#3aeaa2e5fa45d89de116aeafbfa41c95935b7f6d" integrity sha512-XfZgry4DwEZvSFtS/6Y+R48D7qJYJK6R9/yJFyUFHCIUMEEHuJ4X95TDgJp5QkmzfLYvapMPzskV5HpIDrREug== +"@jsep-plugin/regex@^1.0.4": + version "1.0.4" + resolved "https://registry.yarnpkg.com/@jsep-plugin/regex/-/regex-1.0.4.tgz#cb2fc423220fa71c609323b9ba7f7d344a755fcc" + integrity sha512-q7qL4Mgjs1vByCaTnDFcBnV9HS7GVPJX5vyVoCgZHNSC9rjwIlmbXG5sUuorR5ndfHAIlJ8pVStxvjXHbNvtUg== + "@jsep-plugin/ternary@^1.0.2": version "1.1.3" resolved "https://registry.npmmirror.com/@jsep-plugin/ternary/-/ternary-1.1.3.tgz#9ac0b752b9e99f55d23bfcb32cf08c5c2c03ce67" integrity sha512-qtLGzCNzPVJ3kdH6/zoLWDPjauHIKiLSBAR71Wa0+PWvGA8wODUQvRgxtpUA5YqAYL3CQ8S4qXhd/9WuWTZirg== -"@jsonjoy.com/base64@^1.1.1": +"@jsonjoy.com/base64@17.67.0": + version "17.67.0" + resolved "https://registry.yarnpkg.com/@jsonjoy.com/base64/-/base64-17.67.0.tgz#7eeda3cb41138d77a90408fd2e42b2aba10576d7" + integrity sha512-5SEsJGsm15aP8TQGkDfJvz9axgPwAEm98S5DxOuYe8e1EbfajcDmgeXXzccEjh+mLnjqEKrkBdjHWS5vFNwDdw== + +"@jsonjoy.com/base64@^1.1.1", "@jsonjoy.com/base64@^1.1.2": version "1.1.2" resolved "https://registry.npmmirror.com/@jsonjoy.com/base64/-/base64-1.1.2.tgz#cf8ea9dcb849b81c95f14fc0aaa151c6b54d2578" integrity sha512-q6XAnWQDIMA3+FTiOYajoYqySkO+JSat0ytXGSuRdq9uXE7o92gzuQwQM14xaCRlBLGq3v5miDGC4vkVTn54xA== +"@jsonjoy.com/buffers@17.67.0", "@jsonjoy.com/buffers@^17.65.0": + version "17.67.0" + resolved "https://registry.yarnpkg.com/@jsonjoy.com/buffers/-/buffers-17.67.0.tgz#5c58dbcdeea8824ce296bd1cfce006c2eb167b3d" + integrity sha512-tfExRpYxBvi32vPs9ZHaTjSP4fHAfzSmcahOfNxtvGHcyJel+aibkPlGeBB+7AoC6hL7lXIE++8okecBxx7lcw== + +"@jsonjoy.com/buffers@^1.0.0", "@jsonjoy.com/buffers@^1.2.0": + version "1.2.1" + resolved "https://registry.yarnpkg.com/@jsonjoy.com/buffers/-/buffers-1.2.1.tgz#8d99c7f67eaf724d3428dfd9826c6455266a5c83" + integrity sha512-12cdlDwX4RUM3QxmUbVJWqZ/mrK6dFQH4Zxq6+r1YXKXYBNgZXndx2qbCJwh3+WWkCSn67IjnlG3XYTvmvYtgA== + +"@jsonjoy.com/codegen@17.67.0": + version "17.67.0" + resolved "https://registry.yarnpkg.com/@jsonjoy.com/codegen/-/codegen-17.67.0.tgz#3635fd8769d77e19b75dc5574bc9756019b2e591" + integrity sha512-idnkUplROpdBOV0HMcwhsCUS5TRUi9poagdGs70A6S4ux9+/aPuKbh8+UYRTLYQHtXvAdNfQWXDqZEx5k4Dj2Q== + +"@jsonjoy.com/codegen@^1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@jsonjoy.com/codegen/-/codegen-1.0.0.tgz#5c23f796c47675f166d23b948cdb889184b93207" + integrity sha512-E8Oy+08cmCf0EK/NMxpaJZmOxPqM+6iSe2S4nlSBrPZOORoDJILxtbSUEDKQyTamm/BVAhIGllOBNU79/dwf0g== + +"@jsonjoy.com/fs-core@4.57.2": + version "4.57.2" + resolved "https://registry.yarnpkg.com/@jsonjoy.com/fs-core/-/fs-core-4.57.2.tgz#e28f357ba9983ce53577ba34fc72d344f19ec459" + integrity sha512-SVjwklkpIV5wrynpYtuYnfYH1QF4/nDuLBX7VXdb+3miglcAgBVZb/5y0cOsehRV/9Vb+3UqhkMq3/NR3ztdkQ== + dependencies: + "@jsonjoy.com/fs-node-builtins" "4.57.2" + "@jsonjoy.com/fs-node-utils" "4.57.2" + thingies "^2.5.0" + +"@jsonjoy.com/fs-fsa@4.57.2": + version "4.57.2" + resolved "https://registry.yarnpkg.com/@jsonjoy.com/fs-fsa/-/fs-fsa-4.57.2.tgz#ec6dd492ff8c104a0c1eae74959a013960fe8969" + integrity sha512-fhO8+iR2I+OCw668ISDJdn1aArc9zx033sWejIyzQ8RBeXa9bDSaUeA3ix0poYOfrj1KdOzytmYNv2/uLDfV6g== + dependencies: + "@jsonjoy.com/fs-core" "4.57.2" + "@jsonjoy.com/fs-node-builtins" "4.57.2" + "@jsonjoy.com/fs-node-utils" "4.57.2" + thingies "^2.5.0" + +"@jsonjoy.com/fs-node-builtins@4.57.2": + version "4.57.2" + resolved "https://registry.yarnpkg.com/@jsonjoy.com/fs-node-builtins/-/fs-node-builtins-4.57.2.tgz#9174b87e70213b38caf1ac8669b130c4dfd6a909" + integrity sha512-xhiegylRmhw43Ki2HO1ZBL7DQ5ja/qpRsL29VtQ2xuUHiuDGbgf2uD4p9Qd8hJI5P6RCtGYD50IXHXVq/Ocjcg== + +"@jsonjoy.com/fs-node-to-fsa@4.57.2": + version "4.57.2" + resolved "https://registry.yarnpkg.com/@jsonjoy.com/fs-node-to-fsa/-/fs-node-to-fsa-4.57.2.tgz#8542449b72dfc48f3bfe311a7b0af5323f9bc926" + integrity sha512-18LmWTSONhoAPW+IWRuf8w/+zRolPFGPeGwMxlAhhfY11EKzX+5XHDBPAw67dBF5dxDErHJbl40U+3IXSDRXSQ== + dependencies: + "@jsonjoy.com/fs-fsa" "4.57.2" + "@jsonjoy.com/fs-node-builtins" "4.57.2" + "@jsonjoy.com/fs-node-utils" "4.57.2" + +"@jsonjoy.com/fs-node-utils@4.57.2": + version "4.57.2" + resolved "https://registry.yarnpkg.com/@jsonjoy.com/fs-node-utils/-/fs-node-utils-4.57.2.tgz#c3234c03b1e59d609a0915572dd6f450be0463b1" + integrity sha512-rsPSJgekz43IlNbLyAM/Ab+ouYLWGp5DDBfYBNNEqDaSpsbXfthBn29Q4muFA9L0F+Z3mKo+CWlgSCXrf+mOyQ== + dependencies: + "@jsonjoy.com/fs-node-builtins" "4.57.2" + +"@jsonjoy.com/fs-node@4.57.2": + version "4.57.2" + resolved "https://registry.yarnpkg.com/@jsonjoy.com/fs-node/-/fs-node-4.57.2.tgz#8db2875df19683683e5852053e0099e233dc45d2" + integrity sha512-nX2AdL6cOFwLdju9G4/nbRnYevmCJbh7N7hvR3gGm97Cs60uEjyd0rpR+YBS7cTg175zzl22pGKXR5USaQMvKg== + dependencies: + "@jsonjoy.com/fs-core" "4.57.2" + "@jsonjoy.com/fs-node-builtins" "4.57.2" + "@jsonjoy.com/fs-node-utils" "4.57.2" + "@jsonjoy.com/fs-print" "4.57.2" + "@jsonjoy.com/fs-snapshot" "4.57.2" + glob-to-regex.js "^1.0.0" + thingies "^2.5.0" + +"@jsonjoy.com/fs-print@4.57.2": + version "4.57.2" + resolved "https://registry.yarnpkg.com/@jsonjoy.com/fs-print/-/fs-print-4.57.2.tgz#286c4ceda19225a5c54aaad657ad9f466d5bd0c1" + integrity sha512-wK9NSow48i4DbDl9F1CQE5TqnyZOJ04elU3WFG5aJ76p+YxO/ulyBBQvKsessPxdo381Bc2pcEoyPujMOhcRqQ== + dependencies: + "@jsonjoy.com/fs-node-utils" "4.57.2" + tree-dump "^1.1.0" + +"@jsonjoy.com/fs-snapshot@4.57.2": + version "4.57.2" + resolved "https://registry.yarnpkg.com/@jsonjoy.com/fs-snapshot/-/fs-snapshot-4.57.2.tgz#800424a076638a605dad5ef1540915bc0167d7f8" + integrity sha512-GdduDZuoP5V/QCgJkx9+BZ6SC0EZ/smXAdTS7PfMqgMTGXLlt/bH/FqMYaqB9JmLf05sJPtO0XRbAwwkEEPbVw== + dependencies: + "@jsonjoy.com/buffers" "^17.65.0" + "@jsonjoy.com/fs-node-utils" "4.57.2" + "@jsonjoy.com/json-pack" "^17.65.0" + "@jsonjoy.com/util" "^17.65.0" + "@jsonjoy.com/json-pack@^1.0.3": version "1.0.4" resolved "https://registry.npmmirror.com/@jsonjoy.com/json-pack/-/json-pack-1.0.4.tgz#ab59c642a2e5368e8bcfd815d817143d4f3035d0" @@ -6065,21 +7555,75 @@ hyperdyperid "^1.2.0" thingies "^1.20.0" +"@jsonjoy.com/json-pack@^1.11.0": + version "1.21.0" + resolved "https://registry.yarnpkg.com/@jsonjoy.com/json-pack/-/json-pack-1.21.0.tgz#93f8dd57fe3a3a92132b33d1eb182dcd9e7629fa" + integrity sha512-+AKG+R2cfZMShzrF2uQw34v3zbeDYUqnQ+jg7ORic3BGtfw9p/+N6RJbq/kkV8JmYZaINknaEQ2m0/f693ZPpg== + dependencies: + "@jsonjoy.com/base64" "^1.1.2" + "@jsonjoy.com/buffers" "^1.2.0" + "@jsonjoy.com/codegen" "^1.0.0" + "@jsonjoy.com/json-pointer" "^1.0.2" + "@jsonjoy.com/util" "^1.9.0" + hyperdyperid "^1.2.0" + thingies "^2.5.0" + tree-dump "^1.1.0" + +"@jsonjoy.com/json-pack@^17.65.0": + version "17.67.0" + resolved "https://registry.yarnpkg.com/@jsonjoy.com/json-pack/-/json-pack-17.67.0.tgz#8dd8ff65dd999c5d4d26df46c63915c7bdec093a" + integrity sha512-t0ejURcGaZsn1ClbJ/3kFqSOjlryd92eQY465IYrezsXmPcfHPE/av4twRSxf6WE+TkZgLY+71vCZbiIiFKA/w== + dependencies: + "@jsonjoy.com/base64" "17.67.0" + "@jsonjoy.com/buffers" "17.67.0" + "@jsonjoy.com/codegen" "17.67.0" + "@jsonjoy.com/json-pointer" "17.67.0" + "@jsonjoy.com/util" "17.67.0" + hyperdyperid "^1.2.0" + thingies "^2.5.0" + tree-dump "^1.1.0" + +"@jsonjoy.com/json-pointer@17.67.0": + version "17.67.0" + resolved "https://registry.yarnpkg.com/@jsonjoy.com/json-pointer/-/json-pointer-17.67.0.tgz#74439573dc046e0c9a3a552fb94b391bc75313b8" + integrity sha512-+iqOFInH+QZGmSuaybBUNdh7yvNrXvqR+h3wjXm0N/3JK1EyyFAeGJvqnmQL61d1ARLlk/wJdFKSL+LHJ1eaUA== + dependencies: + "@jsonjoy.com/util" "17.67.0" + +"@jsonjoy.com/json-pointer@^1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@jsonjoy.com/json-pointer/-/json-pointer-1.0.2.tgz#049cb530ac24e84cba08590c5e36b431c4843408" + integrity sha512-Fsn6wM2zlDzY1U+v4Nc8bo3bVqgfNTGcn6dMgs6FjrEnt4ZCe60o6ByKRjOGlI2gow0aE/Q41QOigdTqkyK5fg== + dependencies: + "@jsonjoy.com/codegen" "^1.0.0" + "@jsonjoy.com/util" "^1.9.0" + +"@jsonjoy.com/util@17.67.0", "@jsonjoy.com/util@^17.65.0": + version "17.67.0" + resolved "https://registry.yarnpkg.com/@jsonjoy.com/util/-/util-17.67.0.tgz#7c4288fc3808233e55c7610101e7bb4590cddd3f" + integrity sha512-6+8xBaz1rLSohlGh68D1pdw3AwDi9xydm8QNlAFkvnavCJYSze+pxoW2VKP8p308jtlMRLs5NTHfPlZLd4w7ew== + dependencies: + "@jsonjoy.com/buffers" "17.67.0" + "@jsonjoy.com/codegen" "17.67.0" + "@jsonjoy.com/util@^1.1.2": version "1.1.3" resolved "https://registry.npmmirror.com/@jsonjoy.com/util/-/util-1.1.3.tgz#75b1c3cf21b70e665789d1ad3eabeff8b7fd1429" integrity sha512-g//kkF4kOwUjemValCtOc/xiYzmwMRmWq3Bn+YnzOzuZLHq2PpMOxxIayN3cKbo7Ko2Np65t6D9H81IvXbXhqg== +"@jsonjoy.com/util@^1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@jsonjoy.com/util/-/util-1.9.0.tgz#7ee95586aed0a766b746cd8d8363e336c3c47c46" + integrity sha512-pLuQo+VPRnN8hfPqUTLTHk126wuYdXVxE6aDmjSeV4NCAgyxWbiOIeNJVtID3h1Vzpoi9m4jXezf73I6LgabgQ== + dependencies: + "@jsonjoy.com/buffers" "^1.0.0" + "@jsonjoy.com/codegen" "^1.0.0" + "@juggle/resize-observer@^3.3.1": version "3.4.0" resolved "https://registry.npmmirror.com/@juggle/resize-observer/-/resize-observer-3.4.0.tgz#08d6c5e20cf7e4cc02fd181c4b0c225cd31dbb60" integrity sha512-dfLbk+PwWvFzSxwk3n5ySL0hfBog779o8h68wK/7/APo/7cgyWp5jcXockbxdk5kFRkbeXWm4Fbi9FrdN381sA== -"@kamilkisiela/fast-url-parser@^1.1.4": - version "1.1.4" - resolved "https://registry.npmmirror.com/@kamilkisiela/fast-url-parser/-/fast-url-parser-1.1.4.tgz#9d68877a489107411b953c54ea65d0658b515809" - integrity sha512-gbkePEBupNydxCelHCESvFSFM8XPh1Zs/OAVRW/rKpEqPAl5PbOM90Si8mv9bvnR53uPD2s/FiRxdvSejpRJew== - "@keyv/memcache@^1.3.5": version "1.4.0" resolved "https://registry.npmmirror.com/@keyv/memcache/-/memcache-1.4.0.tgz#89108a5f0ec8ed301d77291f2b485afbd34a6bff" @@ -6088,6 +7632,15 @@ json-buffer "^3.0.1" memjs "^1.3.1" +"@keyv/memcache@^2.0.1": + version "2.0.2" + resolved "https://registry.yarnpkg.com/@keyv/memcache/-/memcache-2.0.2.tgz#5e32b94309c84ea8b4e381a77a447655a3dd19e7" + integrity sha512-0gxCi3X5I8I4gzHdce+3T2QsxHMujjL9IqJN5VCBtHGivTPg83PIKs7eOnQ/JCcqvt1rwfnu6/HNreL3FqwoCw== + dependencies: + "@keyv/serialize" "^1.0.3" + buffer "^6.0.3" + memjs "^1.3.2" + "@keyv/redis@^2.5.3": version "2.8.4" resolved "https://registry.npmmirror.com/@keyv/redis/-/redis-2.8.4.tgz#0d1afb74ef4588c849658509fb69051648ac17d9" @@ -6095,7 +7648,28 @@ dependencies: ioredis "^5.3.2" -"@kubernetes-models/apimachinery@^1.1.0", "@kubernetes-models/apimachinery@^1.2.1": +"@keyv/redis@^4.0.1": + version "4.6.0" + resolved "https://registry.yarnpkg.com/@keyv/redis/-/redis-4.6.0.tgz#518076b29dea24cd141d8f8204f5f5af20310b3d" + integrity sha512-FP3FP42RiQ3j0UC6f4Maf7ISTLAIivm37/SdfG5xvhqceMMq3kabtC6T4a2h5byMnh4S8PjP51DY/9CpyrcfsQ== + dependencies: + "@redis/client" "^1.6.0" + cluster-key-slot "^1.1.2" + hookified "^1.10.0" + +"@keyv/serialize@^1.0.3", "@keyv/serialize@^1.1.1": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@keyv/serialize/-/serialize-1.1.1.tgz#0c01dd3a3483882af7cf3878d4e71d505c81fc4a" + integrity sha512-dXn3FZhPv0US+7dtJsIi2R+c7qWYiReoEh5zUntWCf4oSpMNib8FDhSoed6m3QyZdx5hK7iLFkYk3rNxwt8vTA== + +"@keyv/valkey@^1.0.1": + version "1.0.11" + resolved "https://registry.yarnpkg.com/@keyv/valkey/-/valkey-1.0.11.tgz#4fe53d6980dac71342c78e88913116dbde617716" + integrity sha512-uXf4TftClagJxquhlo1QFKd7JIcmxVm9vlWkDZGlkLQAIesocKaap2ojJocMDvon6h56L2SczoWkkL5OZs4AfQ== + dependencies: + iovalkey "^0.3.3" + +"@kubernetes-models/apimachinery@^1.2.1": version "1.2.1" resolved "https://registry.npmmirror.com/@kubernetes-models/apimachinery/-/apimachinery-1.2.1.tgz#39725bf5e1f50972475ee6e614d5d70e41876b13" integrity sha512-mURvFnel3gaMXFchp8YeFmPBWuYifakuJnmRK1ad0Y7bxcPbcEntcb1rjdwitnHE0qTq3JZ2kBzpNqGO3+YJUw== @@ -6104,7 +7678,16 @@ "@kubernetes-models/validate" "^3.1.1" tslib "^2.4.0" -"@kubernetes-models/base@^4.0.1", "@kubernetes-models/base@^4.0.3": +"@kubernetes-models/apimachinery@^2.0.0": + version "2.2.0" + resolved "https://registry.yarnpkg.com/@kubernetes-models/apimachinery/-/apimachinery-2.2.0.tgz#12cbfbba3e66adca716e04236feafadb2a4dac59" + integrity sha512-7Yj3aMz/nCTdr221wHOMsw5vAMJnLqANMI3BTuCmYjbP+7/tGAaOsiFwT75F4TJH45Dk1P6wcAEqDeCD1ur82Q== + dependencies: + "@kubernetes-models/base" "^5.0.1" + "@kubernetes-models/validate" "^4.0.0" + "@swc/helpers" "^0.5.8" + +"@kubernetes-models/base@^4.0.3": version "4.0.3" resolved "https://registry.npmmirror.com/@kubernetes-models/base/-/base-4.0.3.tgz#e973dfb60bb6d2fa29cbb281e2a74979d40efc9d" integrity sha512-9Uo/RzB1ZvvPmnnpAE6yWPaFerMkpBxIHLuObexVDF813ZwVPdn56mmOOFfA6RyZtPdIT1AlhMozlHKOX16AGQ== @@ -6113,6 +7696,15 @@ is-plain-object "^5.0.0" tslib "^2.4.0" +"@kubernetes-models/base@^5.0.0", "@kubernetes-models/base@^5.0.1": + version "5.0.1" + resolved "https://registry.yarnpkg.com/@kubernetes-models/base/-/base-5.0.1.tgz#0a4a73b98b0732c757538ae5cac2fe069e6035fb" + integrity sha512-Yfzmh965y/hT8qs9eE+Ms9sO1iT31c/sPoJerBFRGS9KechXXfxHgeqtpOzq+eByQ1INblkcZ09rt2V0FxG0lA== + dependencies: + "@kubernetes-models/validate" "^4.0.0" + is-plain-object "^5.0.0" + tslib "^2.4.0" + "@kubernetes-models/validate@^3.1.1": version "3.1.1" resolved "https://registry.npmmirror.com/@kubernetes-models/validate/-/validate-3.1.1.tgz#952362caf93d8e5d6b863c15558fd359d08346c2" @@ -6123,7 +7715,21 @@ ajv-formats-draft2019 "^1.6.1" tslib "^2.4.0" -"@kubernetes/client-node@0.20.0", "@kubernetes/client-node@^0.20.0", "@kubernetes/client-node@~0.20.0": +"@kubernetes-models/validate@^4.0.0": + version "4.0.0" + resolved "https://registry.yarnpkg.com/@kubernetes-models/validate/-/validate-4.0.0.tgz#669314ec4a4f0e8271d23ce4fdfa9dfffb278a9c" + integrity sha512-rsfF5t3sd5c+3ejUgcy8q0cVG2/BxT064L4Xz+CuKEe014u8T4MtFZiWjWZFpfMXSGKzFYEA6DJYm9CqjmIfZg== + dependencies: + ajv "^8.12.0" + ajv-formats "^2.1.1" + ajv-formats-draft2019 "^1.6.1" + ajv-i18n "^4.2.0" + is-cidr "^4.0.0" + tslib "^2.4.0" + optionalDependencies: + re2-wasm "^1.0.2" + +"@kubernetes/client-node@0.20.0", "@kubernetes/client-node@~0.20.0": version "0.20.0" resolved "https://registry.npmmirror.com/@kubernetes/client-node/-/client-node-0.20.0.tgz#4447ae27fd6eef3d4830a5a039f3b84ffd5c5913" integrity sha512-xxlv5GLX4FVR/dDKEsmi4SPeuB49aRc35stndyxcC73XnUEEwF39vXbROpHOirmDse8WE9vxOjABnSVS+jb7EA== @@ -6145,91 +7751,40 @@ optionalDependencies: openid-client "^5.3.0" +"@kubernetes/client-node@1.4.0": + version "1.4.0" + resolved "https://registry.yarnpkg.com/@kubernetes/client-node/-/client-node-1.4.0.tgz#35b72d31f662befd9a2869e172b3153a3443e368" + integrity sha512-Zge3YvF7DJi264dU1b3wb/GmzR99JhUpqTvp+VGHfwZT+g7EOOYNScDJNZwXy9cszyIGPIs0VHr+kk8e95qqrA== + dependencies: + "@types/js-yaml" "^4.0.1" + "@types/node" "^24.0.0" + "@types/node-fetch" "^2.6.13" + "@types/stream-buffers" "^3.0.3" + form-data "^4.0.0" + hpagent "^1.2.0" + isomorphic-ws "^5.0.0" + js-yaml "^4.1.0" + jsonpath-plus "^10.3.0" + node-fetch "^2.7.0" + openid-client "^6.1.3" + rfc4648 "^1.3.0" + socks-proxy-agent "^8.0.4" + stream-buffers "^3.0.2" + tar-fs "^3.0.9" + ws "^8.18.2" + +"@kwsites/file-exists@^1.1.1": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@kwsites/file-exists/-/file-exists-1.1.1.tgz#ad1efcac13e1987d8dbaf235ef3be5b0d96faa99" + integrity sha512-m9/5YGR18lIwxSFDwfE3oA7bWuq9kdau6ugN4H2rJeyhFQZcG9AgSHkQtSD15a8WvTgfz9aikZMrKPHvbpqFiw== + dependencies: + debug "^4.1.1" + "@leichtgewicht/ip-codec@^2.0.1": version "2.0.4" resolved "https://registry.npmmirror.com/@leichtgewicht/ip-codec/-/ip-codec-2.0.4.tgz#b2ac626d6cb9c8718ab459166d4bb405b8ffa78b" integrity sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A== -"@lerna/child-process@7.4.2": - version "7.4.2" - resolved "https://registry.npmmirror.com/@lerna/child-process/-/child-process-7.4.2.tgz#a2fd013ac2150dc288270d3e0d0b850c06bec511" - integrity sha512-je+kkrfcvPcwL5Tg8JRENRqlbzjdlZXyaR88UcnCdNW0AJ1jX9IfHRys1X7AwSroU2ug8ESNC+suoBw1vX833Q== - dependencies: - chalk "^4.1.0" - execa "^5.0.0" - strong-log-transformer "^2.1.0" - -"@lerna/create@7.4.2": - version "7.4.2" - resolved "https://registry.npmmirror.com/@lerna/create/-/create-7.4.2.tgz#f845fad1480e46555af98bd39af29571605dddc9" - integrity sha512-1wplFbQ52K8E/unnqB0Tq39Z4e+NEoNrpovEnl6GpsTUrC6WDp8+w0Le2uCBV0hXyemxChduCkLz4/y1H1wTeg== - dependencies: - "@lerna/child-process" "7.4.2" - "@npmcli/run-script" "6.0.2" - "@nx/devkit" ">=16.5.1 < 17" - "@octokit/plugin-enterprise-rest" "6.0.1" - "@octokit/rest" "19.0.11" - byte-size "8.1.1" - chalk "4.1.0" - clone-deep "4.0.1" - cmd-shim "6.0.1" - columnify "1.6.0" - conventional-changelog-core "5.0.1" - conventional-recommended-bump "7.0.1" - cosmiconfig "^8.2.0" - dedent "0.7.0" - execa "5.0.0" - fs-extra "^11.1.1" - get-stream "6.0.0" - git-url-parse "13.1.0" - glob-parent "5.1.2" - globby "11.1.0" - graceful-fs "4.2.11" - has-unicode "2.0.1" - ini "^1.3.8" - init-package-json "5.0.0" - inquirer "^8.2.4" - is-ci "3.0.1" - is-stream "2.0.0" - js-yaml "4.1.0" - libnpmpublish "7.3.0" - load-json-file "6.2.0" - lodash "^4.17.21" - make-dir "4.0.0" - minimatch "3.0.5" - multimatch "5.0.0" - node-fetch "2.6.7" - npm-package-arg "8.1.1" - npm-packlist "5.1.1" - npm-registry-fetch "^14.0.5" - npmlog "^6.0.2" - nx ">=16.5.1 < 17" - p-map "4.0.0" - p-map-series "2.1.0" - p-queue "6.6.2" - p-reduce "^2.1.0" - pacote "^15.2.0" - pify "5.0.0" - read-cmd-shim "4.0.0" - read-package-json "6.0.4" - resolve-from "5.0.0" - rimraf "^4.4.1" - semver "^7.3.4" - signal-exit "3.0.7" - slash "^3.0.0" - ssri "^9.0.1" - strong-log-transformer "2.1.0" - tar "6.1.11" - temp-dir "1.0.0" - upath "2.0.1" - uuid "^9.0.0" - validate-npm-package-license "^3.0.4" - validate-npm-package-name "5.0.0" - write-file-atomic "5.0.1" - write-pkg "4.0.0" - yargs "16.2.0" - yargs-parser "20.2.4" - "@lezer/common@^1.0.0", "@lezer/common@^1.1.0": version "1.2.1" resolved "https://registry.npmmirror.com/@lezer/common/-/common-1.2.1.tgz#198b278b7869668e1bebbe687586e12a42731049" @@ -6289,7 +7844,7 @@ react-double-scrollbar "0.0.15" uuid "^3.4.0" -"@material-ui/core@^4.11.0", "@material-ui/core@^4.12.2", "@material-ui/core@^4.12.4", "@material-ui/core@^4.9.13": +"@material-ui/core@^4.12.2", "@material-ui/core@^4.12.4", "@material-ui/core@^4.9.13": version "4.12.4" resolved "https://registry.npmmirror.com/@material-ui/core/-/core-4.12.4.tgz#4ac17488e8fcaf55eb6a7f5efb2a131e10138a73" integrity sha512-tr7xekNlM9LjA6pagJmL8QCgZXaubWUwkJnoYcMKd4gw/t4XiyvnTkjdGrUVicyB2BsdaAv1tvow45bPM4sSwQ== @@ -6314,17 +7869,6 @@ dependencies: "@babel/runtime" "^7.4.4" -"@material-ui/lab@4.0.0-alpha.45": - version "4.0.0-alpha.45" - resolved "https://registry.npmmirror.com/@material-ui/lab/-/lab-4.0.0-alpha.45.tgz#6e1abbdd6e44b9ef7b3eff8ef892a3da5dc52f10" - integrity sha512-zT6kUU87SHsPukiu3tlWg8V6o0tGS38c1b/xst/kPqX6eLbfqrROyxhHn1A8ZtHmqga1AKQdv/1llQoG80Afww== - dependencies: - "@babel/runtime" "^7.4.4" - "@material-ui/utils" "^4.7.1" - clsx "^1.0.4" - prop-types "^15.7.2" - react-is "^16.8.0" - "@material-ui/lab@4.0.0-alpha.61", "@material-ui/lab@^4.0.0-alpha.61": version "4.0.0-alpha.61" resolved "https://registry.npmmirror.com/@material-ui/lab/-/lab-4.0.0-alpha.61.tgz#9bf8eb389c0c26c15e40933cc114d4ad85e3d978" @@ -6385,12 +7929,7 @@ resolved "https://registry.npmmirror.com/@material-ui/types/-/types-5.1.0.tgz#efa1c7a0b0eaa4c7c87ac0390445f0f88b0d88f2" integrity sha512-7cqRjrY50b8QzRSYyhSpx4WRw2YuO0KKIGQEVk5J8uoz2BanawykgZGoWEqKm7pVIbzFDN0SpPcVV4IhOFkl8A== -"@material-ui/types@^6.0.1": - version "6.0.2" - resolved "https://registry.npmmirror.com/@material-ui/types/-/types-6.0.2.tgz#a6d384196c6e2e130eb2765b62d944c0b1ea1015" - integrity sha512-/XUca4wUb9pWimLLdM1PE8KS8rTbDEGohSGkGtk3WST7lm23m+8RYv9uOmrvOg/VSsl4bMiOv4t2/LCb+RLbTg== - -"@material-ui/utils@^4.11.3", "@material-ui/utils@^4.7.1": +"@material-ui/utils@^4.11.3": version "4.11.3" resolved "https://registry.npmmirror.com/@material-ui/utils/-/utils-4.11.3.tgz#232bd86c4ea81dab714f21edad70b7fdf0253942" integrity sha512-ZuQPV4rBK/V1j2dIkSSEcH5uT6AaHuKWFfotADHsC0wVL1NLd2WkFCm4ZZbX33iO4ydl6V0GPngKm8HZQ2oujg== @@ -6404,107 +7943,358 @@ resolved "https://registry.yarnpkg.com/@microsoft/fetch-event-source/-/fetch-event-source-2.0.1.tgz#9ceecc94b49fbaa15666e38ae8587f64acce007d" integrity sha512-W6CLUJ2eBMw3Rec70qrsEW0jOm/3twwJv21mrmj2yORiaVmVYGS4sSS5yUwvQc1ZlDLYGPnClVWmUUMagKNsfA== -"@module-federation/dts-plugin@0.1.21": - version "0.1.21" - resolved "https://registry.yarnpkg.com/@module-federation/dts-plugin/-/dts-plugin-0.1.21.tgz#dd5c843a93266ea9442ef1ff000fc4f53e699a42" - integrity sha512-o0floS9ZN6i9C3Jmx0O65LasJga03ejxtzjIALzJUJR6fKykOP/Bm39MaBNk/MHoFrgnx0q6SVmARBjINcvPjA== +"@module-federation/bridge-react-webpack-plugin@0.21.6": + version "0.21.6" + resolved "https://registry.yarnpkg.com/@module-federation/bridge-react-webpack-plugin/-/bridge-react-webpack-plugin-0.21.6.tgz#67f543576328bafe022106686f859d01b3496a9f" + integrity sha512-lJMmdhD4VKVkeg8RHb+Jwe6Ou9zKVgjtb1inEURDG/sSS2ksdZA8pVKLYbRPRbdmjr193Y8gJfqFbI2dqoyc/g== + dependencies: + "@module-federation/sdk" "0.21.6" + "@types/semver" "7.5.8" + semver "7.6.3" + +"@module-federation/bridge-react-webpack-plugin@0.9.1": + version "0.9.1" + resolved "https://registry.yarnpkg.com/@module-federation/bridge-react-webpack-plugin/-/bridge-react-webpack-plugin-0.9.1.tgz#ac21da245177064aa9fe8d520c83785030c75ae5" + integrity sha512-znN/Qm6M0U1t3iF10gu1hSxDkk18yz78yvk+AMB34UDzpXHiC1zbpIeV2CQNV5GCeafmCICmcn9y1qh7F54KTg== + dependencies: + "@module-federation/sdk" "0.9.1" + "@types/semver" "7.5.8" + semver "7.6.3" + +"@module-federation/cli@0.21.6": + version "0.21.6" + resolved "https://registry.yarnpkg.com/@module-federation/cli/-/cli-0.21.6.tgz#a8acd0eca6b1c33a45f2fb5fd7c70d12c38b6aaf" + integrity sha512-qNojnlc8pTyKtK7ww3i/ujLrgWwgXqnD5DcDPsjADVIpu7STaoaVQ0G5GJ7WWS/ajXw6EyIAAGW/AMFh4XUxsQ== + dependencies: + "@module-federation/dts-plugin" "0.21.6" + "@module-federation/sdk" "0.21.6" + chalk "3.0.0" + commander "11.1.0" + jiti "2.4.2" + +"@module-federation/data-prefetch@0.21.6": + version "0.21.6" + resolved "https://registry.yarnpkg.com/@module-federation/data-prefetch/-/data-prefetch-0.21.6.tgz#b79fda013967b4098ea753766094e150654ef999" + integrity sha512-8HD7ZhtWZ9vl6i3wA7M8cEeCRdtvxt09SbMTfqIPm+5eb/V4ijb8zGTYSRhNDb5RCB+BAixaPiZOWKXJ63/rVw== + dependencies: + "@module-federation/runtime" "0.21.6" + "@module-federation/sdk" "0.21.6" + fs-extra "9.1.0" + +"@module-federation/data-prefetch@0.9.1": + version "0.9.1" + resolved "https://registry.yarnpkg.com/@module-federation/data-prefetch/-/data-prefetch-0.9.1.tgz#32b807e0031e1793216214f55e8eda8516e4bc06" + integrity sha512-rS1AsgRvIMAWK8oMprEBF0YQ3WvsqnumjinvAZU1Dqut5DICmpQMTPEO1OrAKyjO+PQgEhmq13HggzN6ebGLrQ== + dependencies: + "@module-federation/runtime" "0.9.1" + "@module-federation/sdk" "0.9.1" + fs-extra "9.1.0" + +"@module-federation/dts-plugin@0.21.6": + version "0.21.6" + resolved "https://registry.yarnpkg.com/@module-federation/dts-plugin/-/dts-plugin-0.21.6.tgz#a73e5883fbbede846138fff667994a6176837c6a" + integrity sha512-YIsDk8/7QZIWn0I1TAYULniMsbyi2LgKTi9OInzVmZkwMC6644x/ratTWBOUDbdY1Co+feNkoYeot1qIWv2L7w== dependencies: - "@module-federation/managers" "0.1.21" - "@module-federation/sdk" "0.1.21" - "@module-federation/third-party-dts-extractor" "0.1.21" + "@module-federation/error-codes" "0.21.6" + "@module-federation/managers" "0.21.6" + "@module-federation/sdk" "0.21.6" + "@module-federation/third-party-dts-extractor" "0.21.6" adm-zip "^0.5.10" ansi-colors "^4.1.3" - axios "^1.6.7" + axios "^1.12.0" chalk "3.0.0" fs-extra "9.1.0" isomorphic-ws "5.0.0" - koa "2.11.0" + koa "3.0.3" lodash.clonedeepwith "4.5.0" log4js "6.9.1" node-schedule "2.1.1" rambda "^9.1.0" - ws "8.17.0" + ws "8.18.0" -"@module-federation/enhanced@^0.1.19": - version "0.1.21" - resolved "https://registry.yarnpkg.com/@module-federation/enhanced/-/enhanced-0.1.21.tgz#1a4d8d6c3824d9cac15882a809a9b68ffc03cbec" - integrity sha512-FUrwcxj6qdyDG6RhaUR1vhO4aJq8/ZtvWxi4Hf9QTE7yLsBY87cCV0FD0bsYLN5femuik53Q7f3Zw/WxQ8u6Qg== - dependencies: - "@module-federation/dts-plugin" "0.1.21" - "@module-federation/managers" "0.1.21" - "@module-federation/manifest" "0.1.21" - "@module-federation/rspack" "0.1.21" - "@module-federation/runtime-tools" "0.1.21" - "@module-federation/sdk" "0.1.21" +"@module-federation/dts-plugin@0.9.1": + version "0.9.1" + resolved "https://registry.yarnpkg.com/@module-federation/dts-plugin/-/dts-plugin-0.9.1.tgz#af89c2ed21191daa0eca77725a97727b3961331d" + integrity sha512-DezBrFaIKfDcEY7UhqyO1WbYocERYsR/CDN8AV6OvMnRlQ8u0rgM8qBUJwx0s+K59f+CFQFKEN4C8p7naCiHrw== + dependencies: + "@module-federation/error-codes" "0.9.1" + "@module-federation/managers" "0.9.1" + "@module-federation/sdk" "0.9.1" + "@module-federation/third-party-dts-extractor" "0.9.1" + adm-zip "^0.5.10" + ansi-colors "^4.1.3" + axios "^1.7.4" + chalk "3.0.0" + fs-extra "9.1.0" + isomorphic-ws "5.0.0" + koa "2.15.4" + lodash.clonedeepwith "4.5.0" + log4js "6.9.1" + node-schedule "2.1.1" + rambda "^9.1.0" + ws "8.18.0" + +"@module-federation/enhanced@^0.21.6": + version "0.21.6" + resolved "https://registry.yarnpkg.com/@module-federation/enhanced/-/enhanced-0.21.6.tgz#c917485505998c854307e7504f24755a3017d583" + integrity sha512-8PFQxtmXc6ukBC4CqGIoc96M2Ly9WVwCPu4Ffvt+K/SB6rGbeFeZoYAwREV1zGNMJ5v5ly6+AHIEOBxNuSnzSg== + dependencies: + "@module-federation/bridge-react-webpack-plugin" "0.21.6" + "@module-federation/cli" "0.21.6" + "@module-federation/data-prefetch" "0.21.6" + "@module-federation/dts-plugin" "0.21.6" + "@module-federation/error-codes" "0.21.6" + "@module-federation/inject-external-runtime-core-plugin" "0.21.6" + "@module-federation/managers" "0.21.6" + "@module-federation/manifest" "0.21.6" + "@module-federation/rspack" "0.21.6" + "@module-federation/runtime-tools" "0.21.6" + "@module-federation/sdk" "0.21.6" + btoa "^1.2.1" + schema-utils "^4.3.0" upath "2.0.1" -"@module-federation/managers@0.1.21": - version "0.1.21" - resolved "https://registry.yarnpkg.com/@module-federation/managers/-/managers-0.1.21.tgz#c0ca089453308371f285b43a28b0bfe58ff61dfd" - integrity sha512-rmN379q8SIovzZBK3s9z1KE84wXgeJR83cFdHJo/1xDAiou7WneW/fyefIvMsGN61hfFxygHoK0GcgXinFq9GA== +"@module-federation/enhanced@^0.9.0": + version "0.9.1" + resolved "https://registry.yarnpkg.com/@module-federation/enhanced/-/enhanced-0.9.1.tgz#b57cb26a0c1abb29680610474af9ba14f6398525" + integrity sha512-c9siKVjcgT2gtDdOTqEr+GaP2X/PWAS0OV424ljKLstFL1lcS/BIsxWFDmxPPl5hDByAH+1q4YhC1LWY4LNDQw== + dependencies: + "@module-federation/bridge-react-webpack-plugin" "0.9.1" + "@module-federation/data-prefetch" "0.9.1" + "@module-federation/dts-plugin" "0.9.1" + "@module-federation/error-codes" "0.9.1" + "@module-federation/inject-external-runtime-core-plugin" "0.9.1" + "@module-federation/managers" "0.9.1" + "@module-federation/manifest" "0.9.1" + "@module-federation/rspack" "0.9.1" + "@module-federation/runtime-tools" "0.9.1" + "@module-federation/sdk" "0.9.1" + btoa "^1.2.1" + upath "2.0.1" + +"@module-federation/error-codes@0.21.6": + version "0.21.6" + resolved "https://registry.yarnpkg.com/@module-federation/error-codes/-/error-codes-0.21.6.tgz#d0c9fa71f9469b2150165ef4461dfd5be0e7f79b" + integrity sha512-MLJUCQ05KnoVl8xd6xs9a5g2/8U+eWmVxg7xiBMeR0+7OjdWUbHwcwgVFatRIwSZvFgKHfWEiI7wsU1q1XbTRQ== + +"@module-federation/error-codes@0.22.0": + version "0.22.0" + resolved "https://registry.yarnpkg.com/@module-federation/error-codes/-/error-codes-0.22.0.tgz#31ccc990dc240d73912ba7bd001f7e35ac751992" + integrity sha512-xF9SjnEy7vTdx+xekjPCV5cIHOGCkdn3pIxo9vU7gEZMIw0SvAEdsy6Uh17xaCpm8V0FWvR0SZoK9Ik6jGOaug== + +"@module-federation/error-codes@0.9.1": + version "0.9.1" + resolved "https://registry.yarnpkg.com/@module-federation/error-codes/-/error-codes-0.9.1.tgz#0bcc4baea3b4086cfcf4d9dd7c1d78b0b344c139" + integrity sha512-q8spCvlwUzW42iX1irnlBTcwcZftRNHyGdlaoFO1z/fW4iphnBIfijzkigWQzOMhdPgzqN/up7XN+g5hjBGBtw== + +"@module-federation/inject-external-runtime-core-plugin@0.21.6": + version "0.21.6" + resolved "https://registry.yarnpkg.com/@module-federation/inject-external-runtime-core-plugin/-/inject-external-runtime-core-plugin-0.21.6.tgz#d87fdfa6df94059c0b3b12f333394989c555e489" + integrity sha512-DJQne7NQ988AVi3QB8byn12FkNb+C2lBeU1NRf8/WbL0gmHsr6kW8hiEJCm8LYaURwtsQqtsEV7i+8+51qjSmQ== + +"@module-federation/inject-external-runtime-core-plugin@0.9.1": + version "0.9.1" + resolved "https://registry.yarnpkg.com/@module-federation/inject-external-runtime-core-plugin/-/inject-external-runtime-core-plugin-0.9.1.tgz#189a7800f32c07aaac85ba130c3e1bbcfdb0ac71" + integrity sha512-BPfzu1cqDU5BhM493enVF1VfxJWmruen0ktlHrWdJJlcddhZzyFBGaLAGoGc+83fS75aEllvJTEthw4kMViMQQ== + +"@module-federation/managers@0.21.6": + version "0.21.6" + resolved "https://registry.yarnpkg.com/@module-federation/managers/-/managers-0.21.6.tgz#dc854f1ae24508322d71bae91d6c9380b3fc1e5f" + integrity sha512-BeV6m2/7kF5MDVz9JJI5T8h8lMosnXkH2bOxxFewcra7ZjvDOgQu7WIio0mgk5l1zjNPvnEVKhnhrenEdcCiWg== dependencies: - "@module-federation/sdk" "0.1.21" + "@module-federation/sdk" "0.21.6" find-pkg "2.0.0" fs-extra "9.1.0" -"@module-federation/manifest@0.1.21": - version "0.1.21" - resolved "https://registry.yarnpkg.com/@module-federation/manifest/-/manifest-0.1.21.tgz#11cc876a1da7f8aba8d68b35bcdeeca5ab8aa372" - integrity sha512-L4iz5Y3qKJzz0bEAG6bDpPy+hHToHyW5xk8XhLJWFGVuXHjEHBl+cvE8tUAZkuWrhHrEmZBGHeHFxlDvdCKMjg== +"@module-federation/managers@0.9.1": + version "0.9.1" + resolved "https://registry.yarnpkg.com/@module-federation/managers/-/managers-0.9.1.tgz#96ef7b6932f099303f134866d9a1b027c4431a4a" + integrity sha512-8hpIrvGfiODxS1qelTd7eaLRVF7jrp17RWgeH1DWoprxELANxm5IVvqUryB+7j+BhoQzamog9DL5q4MuNfGgIA== + dependencies: + "@module-federation/sdk" "0.9.1" + find-pkg "2.0.0" + fs-extra "9.1.0" + +"@module-federation/manifest@0.21.6": + version "0.21.6" + resolved "https://registry.yarnpkg.com/@module-federation/manifest/-/manifest-0.21.6.tgz#4790467e788e0031e054366a85e2625a98ab6c42" + integrity sha512-yg93+I1qjRs5B5hOSvjbjmIoI2z3th8/yst9sfwvx4UDOG1acsE3HHMyPN0GdoIGwplC/KAnU5NmUz4tREUTGQ== dependencies: - "@module-federation/dts-plugin" "0.1.21" - "@module-federation/managers" "0.1.21" - "@module-federation/sdk" "0.1.21" + "@module-federation/dts-plugin" "0.21.6" + "@module-federation/managers" "0.21.6" + "@module-federation/sdk" "0.21.6" chalk "3.0.0" find-pkg "2.0.0" -"@module-federation/rspack@0.1.21": - version "0.1.21" - resolved "https://registry.yarnpkg.com/@module-federation/rspack/-/rspack-0.1.21.tgz#8085b50840b3cf6fc48fb2f5e24671dcc6207a52" - integrity sha512-30bmfb7tCQ8Uu4UKbapoSNNo+52a/rF3Nkje3/lv7xcmW/HGC2+/XJvckITo28jWsl5bzYe+pAu7XSExEAC0Ew== +"@module-federation/manifest@0.9.1": + version "0.9.1" + resolved "https://registry.yarnpkg.com/@module-federation/manifest/-/manifest-0.9.1.tgz#1e28b94d463733c9b190a28ba205e513da76ba48" + integrity sha512-+GteKBXrAUkq49i2CSyWZXM4vYa+mEVXxR9Du71R55nXXxgbzAIoZj9gxjRunj9pcE8+YpAOyfHxLEdWngxWdg== dependencies: - "@module-federation/dts-plugin" "0.1.21" - "@module-federation/managers" "0.1.21" - "@module-federation/manifest" "0.1.21" - "@module-federation/runtime-tools" "0.1.21" - "@module-federation/sdk" "0.1.21" + "@module-federation/dts-plugin" "0.9.1" + "@module-federation/managers" "0.9.1" + "@module-federation/sdk" "0.9.1" + chalk "3.0.0" + find-pkg "2.0.0" -"@module-federation/runtime-tools@0.1.21": - version "0.1.21" - resolved "https://registry.yarnpkg.com/@module-federation/runtime-tools/-/runtime-tools-0.1.21.tgz#0e3e2168bde378cd5d6745b41befeddcd5bdbe3e" - integrity sha512-anayDx/wiL80XhD+CPTVvpYvKc4CNbEIy9fGoOCbMQKaKZhgDDE1461fy5abpgJphtj9NoUgCIpEn/O5fHNIfA== +"@module-federation/rspack@0.21.6": + version "0.21.6" + resolved "https://registry.yarnpkg.com/@module-federation/rspack/-/rspack-0.21.6.tgz#7c5f39e870d56c735cf4d12698aed0779ad7482b" + integrity sha512-SB+z1P+Bqe3R6geZje9dp0xpspX6uash+zO77nodmUy8PTTBlkL7800Cq2FMLKUdoTZHJTBVXf0K6CqQWSlItg== + dependencies: + "@module-federation/bridge-react-webpack-plugin" "0.21.6" + "@module-federation/dts-plugin" "0.21.6" + "@module-federation/inject-external-runtime-core-plugin" "0.21.6" + "@module-federation/managers" "0.21.6" + "@module-federation/manifest" "0.21.6" + "@module-federation/runtime-tools" "0.21.6" + "@module-federation/sdk" "0.21.6" + btoa "1.2.1" + +"@module-federation/rspack@0.9.1": + version "0.9.1" + resolved "https://registry.yarnpkg.com/@module-federation/rspack/-/rspack-0.9.1.tgz#96ae51a03b6243501fdc56ac4195dd6035b7bc9c" + integrity sha512-ZJqG75dWHhyTMa9I0YPJEV2XRt0MFxnDiuMOpI92esdmwWY633CBKyNh1XxcLd629YVeTv03+whr+Fz/f91JEw== + dependencies: + "@module-federation/bridge-react-webpack-plugin" "0.9.1" + "@module-federation/dts-plugin" "0.9.1" + "@module-federation/inject-external-runtime-core-plugin" "0.9.1" + "@module-federation/managers" "0.9.1" + "@module-federation/manifest" "0.9.1" + "@module-federation/runtime-tools" "0.9.1" + "@module-federation/sdk" "0.9.1" + +"@module-federation/runtime-core@0.21.6": + version "0.21.6" + resolved "https://registry.yarnpkg.com/@module-federation/runtime-core/-/runtime-core-0.21.6.tgz#2bcd24db2192179c96ce49772b09d72820ab9ea3" + integrity sha512-5Hd1Y5qp5lU/aTiK66lidMlM/4ji2gr3EXAtJdreJzkY+bKcI5+21GRcliZ4RAkICmvdxQU5PHPL71XmNc7Lsw== + dependencies: + "@module-federation/error-codes" "0.21.6" + "@module-federation/sdk" "0.21.6" + +"@module-federation/runtime-core@0.22.0": + version "0.22.0" + resolved "https://registry.yarnpkg.com/@module-federation/runtime-core/-/runtime-core-0.22.0.tgz#7321ec792bb7d1d22bee6162ec43564b769d2a3c" + integrity sha512-GR1TcD6/s7zqItfhC87zAp30PqzvceoeDGYTgF3Vx2TXvsfDrhP6Qw9T4vudDQL3uJRne6t7CzdT29YyVxlgIA== + dependencies: + "@module-federation/error-codes" "0.22.0" + "@module-federation/sdk" "0.22.0" + +"@module-federation/runtime-core@0.9.1": + version "0.9.1" + resolved "https://registry.yarnpkg.com/@module-federation/runtime-core/-/runtime-core-0.9.1.tgz#4ea08b84f3d015fc148c7129f0e45eb08f5f36cc" + integrity sha512-r61ufhKt5pjl81v7TkmhzeIoSPOaNtLynW6+aCy3KZMa3RfRevFxmygJqv4Nug1L0NhqUeWtdLejh4VIglNy5Q== dependencies: - "@module-federation/runtime" "0.1.21" - "@module-federation/webpack-bundler-runtime" "0.1.21" + "@module-federation/error-codes" "0.9.1" + "@module-federation/sdk" "0.9.1" -"@module-federation/runtime@0.1.21": - version "0.1.21" - resolved "https://registry.yarnpkg.com/@module-federation/runtime/-/runtime-0.1.21.tgz#1d233b29dd136488f2ba682017b53f13e015788a" - integrity sha512-/p4BhZ0SnjJuiL0wwu+FebFgIUJ9vM+oCY7CyprUHImyi/Y23ulI61WNWMVrKQGgdMoXQDQCL8RH4EnrVP2ZFw== +"@module-federation/runtime-tools@0.21.6": + version "0.21.6" + resolved "https://registry.yarnpkg.com/@module-federation/runtime-tools/-/runtime-tools-0.21.6.tgz#40cbcc16af4c597169834a2d8b71a9d31779ab0c" + integrity sha512-fnP+ZOZTFeBGiTAnxve+axGmiYn2D60h86nUISXjXClK3LUY1krUfPgf6MaD4YDJ4i51OGXZWPekeMe16pkd8Q== dependencies: - "@module-federation/sdk" "0.1.21" + "@module-federation/runtime" "0.21.6" + "@module-federation/webpack-bundler-runtime" "0.21.6" -"@module-federation/sdk@0.1.21": - version "0.1.21" - resolved "https://registry.yarnpkg.com/@module-federation/sdk/-/sdk-0.1.21.tgz#adb15c38ddfea65f45bd989a94c3a575c8df6991" - integrity sha512-r7xPiAm+O4e+8Zvw+8b4ToeD0D0VJD004nHmt+Y8r/l98J2eA6di72Vn1FeyjtQbCrFtiMw3ts/dlqtcmIBipw== +"@module-federation/runtime-tools@0.22.0": + version "0.22.0" + resolved "https://registry.yarnpkg.com/@module-federation/runtime-tools/-/runtime-tools-0.22.0.tgz#36f2a7cb267af208a9d1a237fe9a71b4bf31431e" + integrity sha512-4ScUJ/aUfEernb+4PbLdhM/c60VHl698Gn1gY21m9vyC1Ucn69fPCA1y2EwcCB7IItseRMoNhdcWQnzt/OPCNA== + dependencies: + "@module-federation/runtime" "0.22.0" + "@module-federation/webpack-bundler-runtime" "0.22.0" -"@module-federation/third-party-dts-extractor@0.1.21": - version "0.1.21" - resolved "https://registry.yarnpkg.com/@module-federation/third-party-dts-extractor/-/third-party-dts-extractor-0.1.21.tgz#1c37aa4057ae618cb4b0dd5968e9adb3a7ed4744" - integrity sha512-gf+8Ah+/3Fs7jgOycVYDBe6o/tDh/+k7WpaeaQGnRV2p7bkrqfZ07g3IoB/kza1VEJFH4SV3u3VmKD7eB5BjQw== +"@module-federation/runtime-tools@0.9.1": + version "0.9.1" + resolved "https://registry.yarnpkg.com/@module-federation/runtime-tools/-/runtime-tools-0.9.1.tgz#9669507f31875e6fe37f92483478dcedf57425b2" + integrity sha512-JQZ//ab+lEXoU2DHAH+JtYASGzxEjXB0s4rU+6VJXc8c+oUPxH3kWIwzjdncg2mcWBmC1140DCk+K+kDfOZ5CQ== + dependencies: + "@module-federation/runtime" "0.9.1" + "@module-federation/webpack-bundler-runtime" "0.9.1" + +"@module-federation/runtime@0.21.6", "@module-federation/runtime@^0.21.6": + version "0.21.6" + resolved "https://registry.yarnpkg.com/@module-federation/runtime/-/runtime-0.21.6.tgz#8d4a29a792ed4a94e5a811fe097d314a6f9dcab7" + integrity sha512-+caXwaQqwTNh+CQqyb4mZmXq7iEemRDrTZQGD+zyeH454JAYnJ3s/3oDFizdH6245pk+NiqDyOOkHzzFQorKhQ== + dependencies: + "@module-federation/error-codes" "0.21.6" + "@module-federation/runtime-core" "0.21.6" + "@module-federation/sdk" "0.21.6" + +"@module-federation/runtime@0.22.0": + version "0.22.0" + resolved "https://registry.yarnpkg.com/@module-federation/runtime/-/runtime-0.22.0.tgz#f789c9ef40d846d110711c8221ecc0ad938d43d8" + integrity sha512-38g5iPju2tPC3KHMPxRKmy4k4onNp6ypFPS1eKGsNLUkXgHsPMBFqAjDw96iEcjri91BrahG4XcdyKi97xZzlA== + dependencies: + "@module-federation/error-codes" "0.22.0" + "@module-federation/runtime-core" "0.22.0" + "@module-federation/sdk" "0.22.0" + +"@module-federation/runtime@0.9.1": + version "0.9.1" + resolved "https://registry.yarnpkg.com/@module-federation/runtime/-/runtime-0.9.1.tgz#344c13b546f7aa65f3e648aca3ffd94f74d73588" + integrity sha512-jp7K06weabM5BF5sruHr/VLyalO+cilvRDy7vdEBqq88O9mjc0RserD8J+AP4WTl3ZzU7/GRqwRsiwjjN913dA== + dependencies: + "@module-federation/error-codes" "0.9.1" + "@module-federation/runtime-core" "0.9.1" + "@module-federation/sdk" "0.9.1" + +"@module-federation/sdk@0.21.6": + version "0.21.6" + resolved "https://registry.yarnpkg.com/@module-federation/sdk/-/sdk-0.21.6.tgz#8aac1159ff37f418ed72bc79afccbbfb025f847a" + integrity sha512-x6hARETb8iqHVhEsQBysuWpznNZViUh84qV2yE7AD+g7uIzHKiYdoWqj10posbo5XKf/147qgWDzKZoKoEP2dw== + +"@module-federation/sdk@0.22.0": + version "0.22.0" + resolved "https://registry.yarnpkg.com/@module-federation/sdk/-/sdk-0.22.0.tgz#6ad4c1de85a900c3c80ff26cb87cce253e3a2770" + integrity sha512-x4aFNBKn2KVQRuNVC5A7SnrSCSqyfIWmm1DvubjbO9iKFe7ith5niw8dqSFBekYBg2Fwy+eMg4sEFNVvCAdo6g== + +"@module-federation/sdk@0.9.1": + version "0.9.1" + resolved "https://registry.yarnpkg.com/@module-federation/sdk/-/sdk-0.9.1.tgz#0e0ab3aca38a6f29c9b0de7e5931f8f63498c9e0" + integrity sha512-YQonPTImgnCqZjE/A+3N2g3J5ypR6kx1tbBzc9toUANKr/dw/S63qlh/zHKzWQzxjjNNVMdXRtTMp07g3kgEWg== + +"@module-federation/third-party-dts-extractor@0.21.6": + version "0.21.6" + resolved "https://registry.yarnpkg.com/@module-federation/third-party-dts-extractor/-/third-party-dts-extractor-0.21.6.tgz#c99b3ae9243893b0064598eb19a13fd542b64a82" + integrity sha512-Il6x4hLsvCgZNk1DFwuMBNeoxD1BsZ5AW2BI/nUgu0k5FiAvfcz1OFawRFEHtaM/kVrCsymMOW7pCao90DaX3A== dependencies: find-pkg "2.0.0" fs-extra "9.1.0" resolve "1.22.8" -"@module-federation/webpack-bundler-runtime@0.1.21": - version "0.1.21" - resolved "https://registry.yarnpkg.com/@module-federation/webpack-bundler-runtime/-/webpack-bundler-runtime-0.1.21.tgz#022d96900b0e71c817593d2e08d4f087afd6974d" - integrity sha512-WJg133fvC8PMm3RRCul9+bzaMgyTYD7QpseDBscIWyKdZB80wMBTXuRKbKMwujLXHEPCJX+rkgGwolECnSuCiA== +"@module-federation/third-party-dts-extractor@0.9.1": + version "0.9.1" + resolved "https://registry.yarnpkg.com/@module-federation/third-party-dts-extractor/-/third-party-dts-extractor-0.9.1.tgz#f38db32356c60ab2e9419d7fae74bb3678caa5c8" + integrity sha512-KeIByP718hHyq+Mc53enZ419pZZ1fh9Ns6+/bYLkc3iCoJr/EDBeiLzkbMwh2AS4Qk57WW0yNC82xzf7r0Zrrw== + dependencies: + find-pkg "2.0.0" + fs-extra "9.1.0" + resolve "1.22.8" + +"@module-federation/webpack-bundler-runtime@0.21.6": + version "0.21.6" + resolved "https://registry.yarnpkg.com/@module-federation/webpack-bundler-runtime/-/webpack-bundler-runtime-0.21.6.tgz#6831eaf147356fe5b096d24c7a902c323e810bb9" + integrity sha512-7zIp3LrcWbhGuFDTUMLJ2FJvcwjlddqhWGxi/MW3ur1a+HaO8v5tF2nl+vElKmbG1DFLU/52l3PElVcWf/YcsQ== + dependencies: + "@module-federation/runtime" "0.21.6" + "@module-federation/sdk" "0.21.6" + +"@module-federation/webpack-bundler-runtime@0.22.0": + version "0.22.0" + resolved "https://registry.yarnpkg.com/@module-federation/webpack-bundler-runtime/-/webpack-bundler-runtime-0.22.0.tgz#dcbe8f972d722fe278e6a7c21988d4bee53d401d" + integrity sha512-aM8gCqXu+/4wBmJtVeMeeMN5guw3chf+2i6HajKtQv7SJfxV/f4IyNQJUeUQu9HfiAZHjqtMV5Lvq/Lvh8LdyA== + dependencies: + "@module-federation/runtime" "0.22.0" + "@module-federation/sdk" "0.22.0" + +"@module-federation/webpack-bundler-runtime@0.9.1": + version "0.9.1" + resolved "https://registry.yarnpkg.com/@module-federation/webpack-bundler-runtime/-/webpack-bundler-runtime-0.9.1.tgz#eff1cc901d81edd77a3ed6b0bb49a6d9c2651d91" + integrity sha512-CxySX01gT8cBowKl9xZh+voiHvThMZ471icasWnlDIZb14KasZoX1eCh9wpGvwoOdIk9rIRT7h70UvW9nmop6w== dependencies: - "@module-federation/runtime" "0.1.21" - "@module-federation/sdk" "0.1.21" + "@module-federation/runtime" "0.9.1" + "@module-federation/sdk" "0.9.1" "@motionone/animation@^10.12.0": version "10.17.0" @@ -6581,81 +8371,76 @@ strict-event-emitter "^0.2.4" web-encoding "^1.1.5" -"@mui/base@5.0.0-beta.33": - version "5.0.0-beta.33" - resolved "https://registry.npmmirror.com/@mui/base/-/base-5.0.0-beta.33.tgz#fbb844e2d840d47dd7a48850a03152aed2381d10" - integrity sha512-WcSpoJUw/UYHXpvgtl4HyMar2Ar97illUpqiS/X1gtSBp6sdDW6kB2BJ9OlVQ+Kk/RL2GDp/WHA9sbjAYV35ow== - dependencies: - "@babel/runtime" "^7.23.8" - "@floating-ui/react-dom" "^2.0.6" - "@mui/types" "^7.2.13" - "@mui/utils" "^5.15.6" - "@popperjs/core" "^2.11.8" - clsx "^2.1.0" - prop-types "^15.8.1" +"@mui/core-downloads-tracker@^5.18.0": + version "5.18.0" + resolved "https://registry.yarnpkg.com/@mui/core-downloads-tracker/-/core-downloads-tracker-5.18.0.tgz#85019a8704b0f63305fc5600635ee663810f2b66" + integrity sha512-jbhwoQ1AY200PSSOrNXmrFCaSDSJWP7qk6urkTmIirvRXDROkqe+QwcLlUiw/PrREwsIF/vm3/dAXvjlMHF0RA== -"@mui/core-downloads-tracker@^5.15.6": - version "5.15.6" - resolved "https://registry.npmmirror.com/@mui/core-downloads-tracker/-/core-downloads-tracker-5.15.6.tgz#9b82ba86d5a0fe55e9479b68dd5068943cc3835b" - integrity sha512-0aoWS4qvk1uzm9JBs83oQmIMIQeTBUeqqu8u+3uo2tMznrB5fIKqQVCbCgq+4Tm4jG+5F7dIvnjvQ2aV7UKtdw== +"@mui/icons-material@^5.0.0": + version "5.18.0" + resolved "https://registry.yarnpkg.com/@mui/icons-material/-/icons-material-5.18.0.tgz#97d87f1b7bee5fa7b9ba844518631de3112c1e57" + integrity sha512-1s0vEZj5XFXDMmz3Arl/R7IncFqJ+WQ95LDp1roHWGDE2oCO3IS4/hmiOv1/8SD9r6B7tv9GLiqVZYHo+6PkTg== + dependencies: + "@babel/runtime" "^7.23.9" -"@mui/material@^5.12.2": - version "5.15.6" - resolved "https://registry.npmmirror.com/@mui/material/-/material-5.15.6.tgz#e32944ae4e01f85b314bc26e4cbbb700d598f30c" - integrity sha512-rw7bDdpi2kzfmcDN78lHp8swArJ5sBCKsn+4G3IpGfu44ycyWAWX0VdlvkjcR9Yrws2KIm7c+8niXpWHUDbWoA== +"@mui/material@^5.12.2", "@mui/material@^5.15.6", "@mui/material@^9.0.0": + version "5.18.0" + resolved "https://registry.yarnpkg.com/@mui/material/-/material-5.18.0.tgz#71e72d52338252edc6f8d9461e04fdf0d61905cd" + integrity sha512-bbH/HaJZpFtXGvWg3TsBWG4eyt3gah3E7nCNU8GLyRjVoWcA91Vm/T+sjHfUcwgJSw9iLtucfHBoq+qW/T30aA== dependencies: - "@babel/runtime" "^7.23.8" - "@mui/base" "5.0.0-beta.33" - "@mui/core-downloads-tracker" "^5.15.6" - "@mui/system" "^5.15.6" - "@mui/types" "^7.2.13" - "@mui/utils" "^5.15.6" + "@babel/runtime" "^7.23.9" + "@mui/core-downloads-tracker" "^5.18.0" + "@mui/system" "^5.18.0" + "@mui/types" "~7.2.15" + "@mui/utils" "^5.17.1" + "@popperjs/core" "^2.11.8" "@types/react-transition-group" "^4.4.10" clsx "^2.1.0" - csstype "^3.1.2" + csstype "^3.1.3" prop-types "^15.8.1" - react-is "^18.2.0" + react-is "^19.0.0" react-transition-group "^4.4.5" -"@mui/private-theming@^5.15.6": - version "5.15.6" - resolved "https://registry.npmmirror.com/@mui/private-theming/-/private-theming-5.15.6.tgz#224819694ed76df041b1257256152a45d1fd733d" - integrity sha512-ZBX9E6VNUSscUOtU8uU462VvpvBS7eFl5VfxAzTRVQBHflzL+5KtnGrebgf6Nd6cdvxa1o0OomiaxSKoN2XDmg== +"@mui/private-theming@^5.17.1": + version "5.17.1" + resolved "https://registry.yarnpkg.com/@mui/private-theming/-/private-theming-5.17.1.tgz#b4b6fbece27830754ef78186e3f1307dca42f295" + integrity sha512-XMxU0NTYcKqdsG8LRmSoxERPXwMbp16sIXPcLVgLGII/bVNagX0xaheWAwFv8+zDK7tI3ajllkuD3GZZE++ICQ== dependencies: - "@babel/runtime" "^7.23.8" - "@mui/utils" "^5.15.6" + "@babel/runtime" "^7.23.9" + "@mui/utils" "^5.17.1" prop-types "^15.8.1" -"@mui/styled-engine@^5.15.6": - version "5.15.6" - resolved "https://registry.npmmirror.com/@mui/styled-engine/-/styled-engine-5.15.6.tgz#3f4a8804de6ddeee17cb52ec92225686f423398a" - integrity sha512-KAn8P8xP/WigFKMlEYUpU9z2o7jJnv0BG28Qu1dhNQVutsLVIFdRf5Nb+0ijp2qgtcmygQ0FtfRuXv5LYetZTg== +"@mui/styled-engine@^5.18.0": + version "5.18.0" + resolved "https://registry.yarnpkg.com/@mui/styled-engine/-/styled-engine-5.18.0.tgz#914cca1385bb33ce0cde31721f529c8bd7fa301c" + integrity sha512-BN/vKV/O6uaQh2z5rXV+MBlVrEkwoS/TK75rFQ2mjxA7+NBo8qtTAOA4UaM0XeJfn7kh2wZ+xQw2HAx0u+TiBg== dependencies: - "@babel/runtime" "^7.23.8" - "@emotion/cache" "^11.11.0" - csstype "^3.1.2" + "@babel/runtime" "^7.23.9" + "@emotion/cache" "^11.13.5" + "@emotion/serialize" "^1.3.3" + csstype "^3.1.3" prop-types "^15.8.1" -"@mui/system@^5.15.6": - version "5.15.6" - resolved "https://registry.npmmirror.com/@mui/system/-/system-5.15.6.tgz#d278adb09d57ee21f4eef2f6bc335bf9bd062fca" - integrity sha512-J01D//u8IfXvaEHMBQX5aO2l7Q+P15nt96c4NskX7yp5/+UuZP8XCQJhtBtLuj+M2LLyXHYGmCPeblsmmscP2Q== +"@mui/system@^5.18.0": + version "5.18.0" + resolved "https://registry.yarnpkg.com/@mui/system/-/system-5.18.0.tgz#e55331203a40584b26c5a855a07949ac8973bfb6" + integrity sha512-ojZGVcRWqWhu557cdO3pWHloIGJdzVtxs3rk0F9L+x55LsUjcMUVkEhiF7E4TMxZoF9MmIHGGs0ZX3FDLAf0Xw== dependencies: - "@babel/runtime" "^7.23.8" - "@mui/private-theming" "^5.15.6" - "@mui/styled-engine" "^5.15.6" - "@mui/types" "^7.2.13" - "@mui/utils" "^5.15.6" + "@babel/runtime" "^7.23.9" + "@mui/private-theming" "^5.17.1" + "@mui/styled-engine" "^5.18.0" + "@mui/types" "~7.2.15" + "@mui/utils" "^5.17.1" clsx "^2.1.0" - csstype "^3.1.2" + csstype "^3.1.3" prop-types "^15.8.1" -"@mui/types@^7.2.13": - version "7.2.13" - resolved "https://registry.npmmirror.com/@mui/types/-/types-7.2.13.tgz#d1584912942f9dc042441ecc2d1452be39c666b8" - integrity sha512-qP9OgacN62s+l8rdDhSFRe05HWtLLJ5TGclC9I1+tQngbssu0m2dmFZs+Px53AcOs9fD7TbYd4gc9AXzVqO/+g== +"@mui/types@~7.2.15": + version "7.2.24" + resolved "https://registry.yarnpkg.com/@mui/types/-/types-7.2.24.tgz#5eff63129d9c29d80bbf2d2e561bd0690314dec2" + integrity sha512-3c8tRt/CbWZ+pEg7QpSwbdxOk36EfmhbKf6AGZsD1EcLDLTSZoxxJ86FVtcjxvjuhdyBiWKSTGZFaXCnidO2kw== -"@mui/utils@^5.14.15", "@mui/utils@^5.15.6": +"@mui/utils@^5.14.15": version "5.15.6" resolved "https://registry.npmmirror.com/@mui/utils/-/utils-5.15.6.tgz#bbcc302b8e83e360a87230afe3ed8fc99e29fae9" integrity sha512-qfEhf+zfU9aQdbzo1qrSWlbPQhH1nCgeYgwhOVnj9Bn39shJQitEnXpSQpSNag8+uty5Od6PxmlNKPTnPySRKA== @@ -6665,39 +8450,36 @@ prop-types "^15.8.1" react-is "^18.2.0" +"@mui/utils@^5.17.1": + version "5.17.1" + resolved "https://registry.yarnpkg.com/@mui/utils/-/utils-5.17.1.tgz#72ba4ffa79f7bdf69d67458139390f18484b6e6b" + integrity sha512-jEZ8FTqInt2WzxDV8bhImWBqeQRD99c/id/fq83H0ER9tFl+sfZlaAoCdznGvbSQQ9ividMxqSV2c7cC1vBcQg== + dependencies: + "@babel/runtime" "^7.23.9" + "@mui/types" "~7.2.15" + "@types/prop-types" "^15.7.12" + clsx "^2.1.1" + prop-types "^15.8.1" + react-is "^19.0.0" + "@n1ru4l/push-pull-async-iterable-iterator@^3.1.0": version "3.2.0" resolved "https://registry.npmmirror.com/@n1ru4l/push-pull-async-iterable-iterator/-/push-pull-async-iterable-iterator-3.2.0.tgz#c15791112db68dd9315d329d652b7e797f737655" integrity sha512-3fkKj25kEjsfObL6IlKPAlHYPq/oYwUkkQ03zsTTiDjD7vg/RxjdiLeCydqtxHZP0JgsXL3D/X5oAkMGzuUp/Q== -"@node-saml/node-saml@^4.0.4": - version "4.0.5" - resolved "https://registry.npmmirror.com/@node-saml/node-saml/-/node-saml-4.0.5.tgz#039e387095b54639b06df62b1b4a6d8941c6d907" - integrity sha512-J5DglElbY1tjOuaR1NPtjOXkXY5bpUhDoKVoeucYN98A3w4fwgjIOPqIGcb6cQsqFq2zZ6vTCeKn5C/hvefSaw== +"@napi-rs/wasm-runtime@1.0.7": + version "1.0.7" + resolved "https://registry.yarnpkg.com/@napi-rs/wasm-runtime/-/wasm-runtime-1.0.7.tgz#dcfea99a75f06209a235f3d941e3460a51e9b14c" + integrity sha512-SeDnOO0Tk7Okiq6DbXmmBODgOAb9dp9gjlphokTUxmt8U3liIP1ZsozBahH69j/RJv+Rfs6IwUKHTgQYJ/HBAw== dependencies: - "@types/debug" "^4.1.7" - "@types/passport" "^1.0.11" - "@types/xml-crypto" "^1.4.2" - "@types/xml-encryption" "^1.2.1" - "@types/xml2js" "^0.4.11" - "@xmldom/xmldom" "^0.8.6" - debug "^4.3.4" - xml-crypto "^3.0.1" - xml-encryption "^3.0.2" - xml2js "^0.5.0" - xmlbuilder "^15.1.1" + "@emnapi/core" "^1.5.0" + "@emnapi/runtime" "^1.5.0" + "@tybys/wasm-util" "^0.10.1" -"@node-saml/passport-saml@^4.0.4": - version "4.0.4" - resolved "https://registry.npmmirror.com/@node-saml/passport-saml/-/passport-saml-4.0.4.tgz#dce5ca38828fb2e5f63d56d4c0aefa01ba3c1dbc" - integrity sha512-xFw3gw0yo+K1mzlkW15NeBF7cVpRHN/4vpjmBKzov5YFImCWh/G0LcTZ8krH3yk2/eRPc3Or8LRPudVJBjmYaw== - dependencies: - "@node-saml/node-saml" "^4.0.4" - "@types/express" "^4.17.14" - "@types/passport" "^1.0.11" - "@types/passport-strategy" "^0.2.35" - passport "^0.6.0" - passport-strategy "^1.0.0" +"@nodable/entities@2.1.0", "@nodable/entities@^2.1.0": + version "2.1.0" + resolved "https://registry.yarnpkg.com/@nodable/entities/-/entities-2.1.0.tgz#f543e5c6446720d4cf9e498a83019dd159973bc2" + integrity sha512-nyT7T3nbMyBI/lvr6L5TyWbFJAI9FTgVRakNoBqCD+PmID8DzFrrNdLLtHMwMszOtqZa8PAOV24ZqDnQrhQINA== "@nodelib/fs.scandir@2.1.5": version "2.1.5" @@ -6720,13 +8502,16 @@ "@nodelib/fs.scandir" "2.1.5" fastq "^1.6.0" -"@npmcli/fs@^2.1.0": - version "2.1.2" - resolved "https://registry.npmmirror.com/@npmcli/fs/-/fs-2.1.2.tgz#a9e2541a4a2fec2e69c29b35e6060973da79b865" - integrity sha512-yOJKRvohFOaLqipNtwYB9WugyZKhC/DZC4VYPmpaCzDBrA8YpK3qHZ8/HGscMnE4GqbkLNuVcCnxkeQEdGt6LQ== +"@npmcli/agent@^2.0.0": + version "2.2.2" + resolved "https://registry.yarnpkg.com/@npmcli/agent/-/agent-2.2.2.tgz#967604918e62f620a648c7975461c9c9e74fc5d5" + integrity sha512-OrcNPXdpSl9UX7qPVRWbmWMCSXrcDa2M9DvrbOTj7ao1S4PlqVFYv9/yLKMkrJKZ/V5A/kDBC690or307i26Og== dependencies: - "@gar/promisify" "^1.1.3" - semver "^7.3.5" + agent-base "^7.1.0" + http-proxy-agent "^7.0.0" + https-proxy-agent "^7.0.1" + lru-cache "^10.0.1" + socks-proxy-agent "^8.0.3" "@npmcli/fs@^3.1.0": version "3.1.0" @@ -6735,137 +8520,6 @@ dependencies: semver "^7.3.5" -"@npmcli/git@^4.0.0": - version "4.1.0" - resolved "https://registry.npmmirror.com/@npmcli/git/-/git-4.1.0.tgz#ab0ad3fd82bc4d8c1351b6c62f0fa56e8fe6afa6" - integrity sha512-9hwoB3gStVfa0N31ymBmrX+GuDGdVA/QWShZVqE0HK2Af+7QGGrCTbZia/SW0ImUTjTne7SP91qxDmtXvDHRPQ== - dependencies: - "@npmcli/promise-spawn" "^6.0.0" - lru-cache "^7.4.4" - npm-pick-manifest "^8.0.0" - proc-log "^3.0.0" - promise-inflight "^1.0.1" - promise-retry "^2.0.1" - semver "^7.3.5" - which "^3.0.0" - -"@npmcli/installed-package-contents@^2.0.1": - version "2.0.2" - resolved "https://registry.npmmirror.com/@npmcli/installed-package-contents/-/installed-package-contents-2.0.2.tgz#bfd817eccd9e8df200919e73f57f9e3d9e4f9e33" - integrity sha512-xACzLPhnfD51GKvTOOuNX2/V4G4mz9/1I2MfDoye9kBM3RYe5g2YbscsaGoTlaWqkxeiapBWyseULVKpSVHtKQ== - dependencies: - npm-bundled "^3.0.0" - npm-normalize-package-bin "^3.0.0" - -"@npmcli/move-file@^2.0.0": - version "2.0.1" - resolved "https://registry.npmmirror.com/@npmcli/move-file/-/move-file-2.0.1.tgz#26f6bdc379d87f75e55739bab89db525b06100e4" - integrity sha512-mJd2Z5TjYWq/ttPLLGqArdtnC74J6bOzg4rMDnN+p1xTacZ2yPRCk2y0oSWQtygLR9YVQXgOcONrwtnk3JupxQ== - dependencies: - mkdirp "^1.0.4" - rimraf "^3.0.2" - -"@npmcli/node-gyp@^3.0.0": - version "3.0.0" - resolved "https://registry.npmmirror.com/@npmcli/node-gyp/-/node-gyp-3.0.0.tgz#101b2d0490ef1aa20ed460e4c0813f0db560545a" - integrity sha512-gp8pRXC2oOxu0DUE1/M3bYtb1b3/DbJ5aM113+XJBgfXdussRAsX0YOrOhdd8WvnAR6auDBvJomGAkLKA5ydxA== - -"@npmcli/promise-spawn@^6.0.0", "@npmcli/promise-spawn@^6.0.1": - version "6.0.2" - resolved "https://registry.npmmirror.com/@npmcli/promise-spawn/-/promise-spawn-6.0.2.tgz#c8bc4fa2bd0f01cb979d8798ba038f314cfa70f2" - integrity sha512-gGq0NJkIGSwdbUt4yhdF8ZrmkGKVz9vAdVzpOfnom+V8PLSmSOVhZwbNvZZS1EYcJN5hzzKBxmmVVAInM6HQLg== - dependencies: - which "^3.0.0" - -"@npmcli/run-script@6.0.2", "@npmcli/run-script@^6.0.0": - version "6.0.2" - resolved "https://registry.npmmirror.com/@npmcli/run-script/-/run-script-6.0.2.tgz#a25452d45ee7f7fb8c16dfaf9624423c0c0eb885" - integrity sha512-NCcr1uQo1k5U+SYlnIrbAh3cxy+OQT1VtqiAbxdymSlptbzBb62AjH2xXgjNCoP073hoa1CfCAcwoZ8k96C4nA== - dependencies: - "@npmcli/node-gyp" "^3.0.0" - "@npmcli/promise-spawn" "^6.0.0" - node-gyp "^9.0.0" - read-package-json-fast "^3.0.0" - which "^3.0.0" - -"@nrwl/devkit@16.10.0": - version "16.10.0" - resolved "https://registry.npmmirror.com/@nrwl/devkit/-/devkit-16.10.0.tgz#ac8c5b4db00f12c4b817c937be2f7c4eb8f2593c" - integrity sha512-fRloARtsDQoQgQ7HKEy0RJiusg/HSygnmg4gX/0n/Z+SUS+4KoZzvHjXc6T5ZdEiSjvLypJ+HBM8dQzIcVACPQ== - dependencies: - "@nx/devkit" "16.10.0" - -"@nrwl/tao@16.10.0": - version "16.10.0" - resolved "https://registry.npmmirror.com/@nrwl/tao/-/tao-16.10.0.tgz#94642a0380709b8e387e1e33705a5a9624933375" - integrity sha512-QNAanpINbr+Pod6e1xNgFbzK1x5wmZl+jMocgiEFXZ67KHvmbD6MAQQr0MMz+GPhIu7EE4QCTLTyCEMlAG+K5Q== - dependencies: - nx "16.10.0" - tslib "^2.3.0" - -"@nx/devkit@16.10.0", "@nx/devkit@>=16.5.1 < 17": - version "16.10.0" - resolved "https://registry.npmmirror.com/@nx/devkit/-/devkit-16.10.0.tgz#7e466be2dee2dcb1ccaf286786ca2a0a639aa007" - integrity sha512-IvKQqRJFDDiaj33SPfGd3ckNHhHi6ceEoqCbAP4UuMXOPPVOX6H0KVk+9tknkPb48B7jWIw6/AgOeWkBxPRO5w== - dependencies: - "@nrwl/devkit" "16.10.0" - ejs "^3.1.7" - enquirer "~2.3.6" - ignore "^5.0.4" - semver "7.5.3" - tmp "~0.2.1" - tslib "^2.3.0" - -"@nx/nx-darwin-arm64@16.10.0": - version "16.10.0" - resolved "https://registry.npmmirror.com/@nx/nx-darwin-arm64/-/nx-darwin-arm64-16.10.0.tgz#0c73010cac7a502549483b12bad347da9014e6f1" - integrity sha512-YF+MIpeuwFkyvM5OwgY/rTNRpgVAI/YiR0yTYCZR+X3AAvP775IVlusNgQ3oedTBRUzyRnI4Tknj1WniENFsvQ== - -"@nx/nx-darwin-x64@16.10.0": - version "16.10.0" - resolved "https://registry.npmmirror.com/@nx/nx-darwin-x64/-/nx-darwin-x64-16.10.0.tgz#2ccf270418d552fd0a8e0d6089aee4944315adaa" - integrity sha512-ypi6YxwXgb0kg2ixKXE3pwf5myVNUgWf1CsV5OzVccCM8NzheMO51KDXTDmEpXdzUsfT0AkO1sk5GZeCjhVONg== - -"@nx/nx-freebsd-x64@16.10.0": - version "16.10.0" - resolved "https://registry.npmmirror.com/@nx/nx-freebsd-x64/-/nx-freebsd-x64-16.10.0.tgz#c3ee6914256e69493fed9355b0d6661d0e86da44" - integrity sha512-UeEYFDmdbbDkTQamqvtU8ibgu5jQLgFF1ruNb/U4Ywvwutw2d4ruOMl2e0u9hiNja9NFFAnDbvzrDcMo7jYqYw== - -"@nx/nx-linux-arm-gnueabihf@16.10.0": - version "16.10.0" - resolved "https://registry.npmmirror.com/@nx/nx-linux-arm-gnueabihf/-/nx-linux-arm-gnueabihf-16.10.0.tgz#a961eccbb38acb2da7fc125b29d1fead0b39152f" - integrity sha512-WV3XUC2DB6/+bz1sx+d1Ai9q2Cdr+kTZRN50SOkfmZUQyEBaF6DRYpx/a4ahhxH3ktpNfyY8Maa9OEYxGCBkQA== - -"@nx/nx-linux-arm64-gnu@16.10.0": - version "16.10.0" - resolved "https://registry.npmmirror.com/@nx/nx-linux-arm64-gnu/-/nx-linux-arm64-gnu-16.10.0.tgz#795f20072549d03822b5c4639ef438e473dbb541" - integrity sha512-aWIkOUw995V3ItfpAi5FuxQ+1e9EWLS1cjWM1jmeuo+5WtaKToJn5itgQOkvSlPz+HSLgM3VfXMvOFALNk125g== - -"@nx/nx-linux-arm64-musl@16.10.0": - version "16.10.0" - resolved "https://registry.npmmirror.com/@nx/nx-linux-arm64-musl/-/nx-linux-arm64-musl-16.10.0.tgz#f2428ee6dbe2b2c326e8973f76c97666def33607" - integrity sha512-uO6Gg+irqpVcCKMcEPIQcTFZ+tDI02AZkqkP7koQAjniLEappd8DnUBSQdcn53T086pHpdc264X/ZEpXFfrKWQ== - -"@nx/nx-linux-x64-gnu@16.10.0": - version "16.10.0" - resolved "https://registry.npmmirror.com/@nx/nx-linux-x64-gnu/-/nx-linux-x64-gnu-16.10.0.tgz#d36c2bcf94d49eaa24e3880ddaf6f1f617de539b" - integrity sha512-134PW/u/arNFAQKpqMJniC7irbChMPz+W+qtyKPAUXE0XFKPa7c1GtlI/wK2dvP9qJDZ6bKf0KtA0U/m2HMUOA== - -"@nx/nx-linux-x64-musl@16.10.0": - version "16.10.0" - resolved "https://registry.npmmirror.com/@nx/nx-linux-x64-musl/-/nx-linux-x64-musl-16.10.0.tgz#78bd2ab97a583b3d4ea3387b67fd7b136907493c" - integrity sha512-q8sINYLdIJxK/iUx9vRk5jWAWb/2O0PAbOJFwv4qkxBv4rLoN7y+otgCZ5v0xfx/zztFgk/oNY4lg5xYjIso2Q== - -"@nx/nx-win32-arm64-msvc@16.10.0": - version "16.10.0" - resolved "https://registry.npmmirror.com/@nx/nx-win32-arm64-msvc/-/nx-win32-arm64-msvc-16.10.0.tgz#ef20ec8d0c83d66e73e20df12d2c788b8f866396" - integrity sha512-moJkL9kcqxUdJSRpG7dET3UeLIciwrfP08mzBQ12ewo8K8FzxU8ZUsTIVVdNrwt01CXOdXoweGfdQLjJ4qTURA== - -"@nx/nx-win32-x64-msvc@16.10.0": - version "16.10.0" - resolved "https://registry.npmmirror.com/@nx/nx-win32-x64-msvc/-/nx-win32-x64-msvc-16.10.0.tgz#7410a51d0f8be631eec9552f01b2e5946285927c" - integrity sha512-5iV2NKZnzxJwZZ4DM5JVbRG/nkhAbzEskKaLBB82PmYGKzaDHuMHP1lcPoD/rtYMlowZgNA/RQndfKvPBPwmXA== - "@octokit/app@^14.0.2": version "14.0.2" resolved "https://registry.npmmirror.com/@octokit/app/-/app-14.0.2.tgz#b47c52020221351fb58640f113eb38b2ad3998fe" @@ -6989,14 +8643,6 @@ resolved "https://registry.npmmirror.com/@octokit/auth-token/-/auth-token-4.0.0.tgz#40d203ea827b9f17f42a29c6afb93b7745ef80c7" integrity sha512-tY/msAuJo6ARbK6SPIxZrPBms3xPbfwBrulZe0Wtr/DIY9lje2HeV1uoebShn6mx7SjCHif6EjMvoREj+gZ+SA== -"@octokit/auth-unauthenticated@^3.0.0": - version "3.0.5" - resolved "https://registry.npmmirror.com/@octokit/auth-unauthenticated/-/auth-unauthenticated-3.0.5.tgz#a562bffd6ca0d0e80541eaf9f9b89b8d53020228" - integrity sha512-yH2GPFcjrTvDWPwJWWCh0tPPtTL5SMgivgKPA+6v/XmYN6hGQkAto8JtZibSKOpf8ipmeYhLNWQ2UgW0GYILCw== - dependencies: - "@octokit/request-error" "^3.0.0" - "@octokit/types" "^9.0.0" - "@octokit/auth-unauthenticated@^5.0.0": version "5.0.1" resolved "https://registry.npmmirror.com/@octokit/auth-unauthenticated/-/auth-unauthenticated-5.0.1.tgz#d8032211728333068b2e07b53997c29e59a03507" @@ -7005,7 +8651,7 @@ "@octokit/request-error" "^5.0.0" "@octokit/types" "^12.0.0" -"@octokit/core@^4.0.0", "@octokit/core@^4.2.1": +"@octokit/core@^4.2.1": version "4.2.4" resolved "https://registry.npmmirror.com/@octokit/core/-/core-4.2.4.tgz#d8769ec2b43ff37cc3ea89ec4681a20ba58ef907" integrity sha512-rYKilwgzQ7/imScn3M9/pFfUf4I1AZEH3KhyJmtPdE2zfaXAn2mFfUy4FbKewzc2We5y/LlKLj36fWJLKC2SIQ== @@ -7046,15 +8692,7 @@ integrity sha512-DWPLtr1Kz3tv8L0UvXTDP1fNwM0S+z6EJpRcvH66orY6Eld4XBMCSYsaWp4xIm61jTWxK68BrR7ibO+vSDnZqw== dependencies: "@octokit/types" "^12.0.0" - universal-user-agent "^6.0.0" - -"@octokit/graphql-schema@^13.7.0": - version "13.10.0" - resolved "https://registry.npmmirror.com/@octokit/graphql-schema/-/graphql-schema-13.10.0.tgz#7e47d846a7f3f0f57e23ad5fcd75dcfd57fea967" - integrity sha512-D9ci/oCYOIea/AFmWUxD67aMaoMw392Nu4sxaO+kW+w/aeDeyECpGuztzXASyCn53ROPTweAg1fk7Payzmu5xQ== - dependencies: - graphql "^16.0.0" - graphql-tag "^2.10.3" + universal-user-agent "^6.0.0" "@octokit/graphql@^5.0.0": version "5.0.6" @@ -7074,21 +8712,6 @@ "@octokit/types" "^12.0.0" universal-user-agent "^6.0.0" -"@octokit/oauth-app@^4.2.0": - version "4.2.4" - resolved "https://registry.npmmirror.com/@octokit/oauth-app/-/oauth-app-4.2.4.tgz#d385ffebe116c684940bf255a2189665c61ee5a0" - integrity sha512-iuOVFrmm5ZKNavRtYu5bZTtmlKLc5uVgpqTfMEqYYf2OkieV6VdxKZAb5qLVdEPL8LU2lMWcGpavPBV835cgoA== - dependencies: - "@octokit/auth-oauth-app" "^5.0.0" - "@octokit/auth-oauth-user" "^2.0.0" - "@octokit/auth-unauthenticated" "^3.0.0" - "@octokit/core" "^4.0.0" - "@octokit/oauth-authorization-url" "^5.0.0" - "@octokit/oauth-methods" "^2.0.0" - "@types/aws-lambda" "^8.10.83" - fromentries "^1.3.1" - universal-user-agent "^6.0.0" - "@octokit/oauth-app@^6.0.0": version "6.1.0" resolved "https://registry.npmmirror.com/@octokit/oauth-app/-/oauth-app-6.1.0.tgz#22c276f6ad2364c6999837bfdd5d9c1092838726" @@ -7150,11 +8773,6 @@ resolved "https://registry.npmmirror.com/@octokit/openapi-types/-/openapi-types-19.1.0.tgz#75ec7e64743870fc73e1ab4bc6ec252ecdd624dc" integrity sha512-6G+ywGClliGQwRsjvqVYpklIfa7oRPA0vyhPQG/1Feh+B+wU0vGH1JiJ5T25d3g1JZYBHzR2qefLi9x8Gt+cpw== -"@octokit/plugin-enterprise-rest@6.0.1": - version "6.0.1" - resolved "https://registry.npmmirror.com/@octokit/plugin-enterprise-rest/-/plugin-enterprise-rest-6.0.1.tgz#e07896739618dab8da7d4077c658003775f95437" - integrity sha512-93uGjlhUD+iNg1iWhUENAtJata6w5nE+V4urXOAlIXdco6xNZtUSfYY8dzp3Udy74aqO/B5UZL80x/YMa5PKRw== - "@octokit/plugin-paginate-graphql@^4.0.0": version "4.0.0" resolved "https://registry.npmmirror.com/@octokit/plugin-paginate-graphql/-/plugin-paginate-graphql-4.0.0.tgz#b26024fa454039c18b948f13bf754ff86b89e8b9" @@ -7251,16 +8869,6 @@ "@octokit/types" "^12.0.0" universal-user-agent "^6.0.0" -"@octokit/rest@19.0.11": - version "19.0.11" - resolved "https://registry.npmmirror.com/@octokit/rest/-/rest-19.0.11.tgz#2ae01634fed4bd1fca5b642767205ed3fd36177c" - integrity sha512-m2a9VhaP5/tUw8FwfnW2ICXlXpLPIqxtg3XcAiGMLj/Xhw3RSBfZ8le/466ktO1Gcjr8oXudGnHhxV1TXJgFxw== - dependencies: - "@octokit/core" "^4.2.1" - "@octokit/plugin-paginate-rest" "^6.1.2" - "@octokit/plugin-request-log" "^1.0.4" - "@octokit/plugin-rest-endpoint-methods" "^7.1.2" - "@octokit/rest@^19.0.3": version "19.0.13" resolved "https://registry.npmmirror.com/@octokit/rest/-/rest-19.0.13.tgz#e799393264edc6d3c67eeda9e5bd7832dcf974e4" @@ -7324,9 +8932,9 @@ resolved "https://registry.npmmirror.com/@octokit/webhooks-types/-/webhooks-types-7.1.0.tgz#d533dea253416e02dd6c2bfab25e533295bd5d3f" integrity sha512-y92CpG4kFFtBBjni8LHoV12IegJ+KFxLgKRengrVjKmGE5XMeCuGvlfRe75lTRrgXaG6XIWJlFpIDTlkoJsU8w== -"@octokit/webhooks@^10.0.0": +"@octokit/webhooks@^10.9.2": version "10.9.2" - resolved "https://registry.npmmirror.com/@octokit/webhooks/-/webhooks-10.9.2.tgz#1b1e79a70fa5b22a3149b18432cbf3f39dbcb544" + resolved "https://registry.yarnpkg.com/@octokit/webhooks/-/webhooks-10.9.2.tgz#1b1e79a70fa5b22a3149b18432cbf3f39dbcb544" integrity sha512-hFVF/szz4l/Y/GQdKxNmQjUke0XJXK986p+ucIlubTGVPVtVtup5G1jarQfvCMBs9Fvlf9dvH8K83E4lefmofQ== dependencies: "@octokit/request-error" "^3.0.0" @@ -7356,7 +8964,7 @@ dependencies: fast-deep-equal "^3.1.3" -"@opentelemetry/api@^1.0.1", "@opentelemetry/api@^1.3.0": +"@opentelemetry/api@^1.0.1": version "1.7.0" resolved "https://registry.npmmirror.com/@opentelemetry/api/-/api-1.7.0.tgz#b139c81999c23e3c8d3c0a7234480e945920fc40" integrity sha512-AdY5wvN0P2vXBi3b29hxZgSFvdhdxPB9+f0B6s//P9Q8nibRWeA3cHm8UmLpio9ABigkVHJ5NMPk+Mz8VCCyrw== @@ -7366,39 +8974,33 @@ resolved "https://registry.npmmirror.com/@opentelemetry/api/-/api-1.9.0.tgz#d03eba68273dc0f7509e2a3d5cba21eae10379fe" integrity sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg== -"@parcel/watcher@2.0.4": - version "2.0.4" - resolved "https://registry.npmmirror.com/@parcel/watcher/-/watcher-2.0.4.tgz#f300fef4cc38008ff4b8c29d92588eced3ce014b" - integrity sha512-cTDi+FUDBIUOBKEtj+nhiJ71AZVlkAsQFuGQTun5tV9mwQBQgZvhCzG+URPQc8myeN32yRVZEfVAPCs1RW+Jvg== - dependencies: - node-addon-api "^3.2.1" - node-gyp-build "^4.3.0" +"@opentelemetry/api@^1.9.0": + version "1.9.1" + resolved "https://registry.yarnpkg.com/@opentelemetry/api/-/api-1.9.1.tgz#c1b0346de336ba55af2d5a7970882037baedec05" + integrity sha512-gLyJlPHPZYdAk1JENA9LeHejZe1Ti77/pTeFm/nMXmQH/HFZlcS/O2XJB+L8fkbrNSqhdtlvjBVjxwUYanNH5Q== "@pkgjs/parseargs@^0.11.0": version "0.11.0" resolved "https://registry.npmmirror.com/@pkgjs/parseargs/-/parseargs-0.11.0.tgz#a77ea742fab25775145434eb1d2328cf5013ac33" integrity sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg== -"@playwright/test@^1.32.3": - version "1.41.1" - resolved "https://registry.npmmirror.com/@playwright/test/-/test-1.41.1.tgz#6954139ed4a67999f1b17460aa3d184f4b334f18" - integrity sha512-9g8EWTjiQ9yFBXc6HjCWe41msLpxEX0KhmfmPl9RPLJdfzL4F0lg2BdJ91O9azFdl11y1pmpwdjBiSxvqc+btw== +"@playwright/test@^1.59.1": + version "1.59.1" + resolved "https://registry.yarnpkg.com/@playwright/test/-/test-1.59.1.tgz#5c4d38eac84a61527af466602ae20277685a02d6" + integrity sha512-PG6q63nQg5c9rIi4/Z5lR5IVF7yU5MqmKaPOe0HSc0O2cX1fPi96sUQu5j7eo4gKCkB2AnNGoWt7y4/Xx3Kcqg== dependencies: - playwright "1.41.1" + playwright "1.59.1" -"@pmmmwh/react-refresh-webpack-plugin@^0.5.7": - version "0.5.11" - resolved "https://registry.npmmirror.com/@pmmmwh/react-refresh-webpack-plugin/-/react-refresh-webpack-plugin-0.5.11.tgz#7c2268cedaa0644d677e8c4f377bc8fb304f714a" - integrity sha512-7j/6vdTym0+qZ6u4XbSAxrWBGYSdCfTzySkj7WAFgDLmSyWlOrWvpyzxlFh5jtw9dn0oL/jtW+06XfFiisN3JQ== +"@pmmmwh/react-refresh-webpack-plugin@^0.6.0": + version "0.6.2" + resolved "https://registry.yarnpkg.com/@pmmmwh/react-refresh-webpack-plugin/-/react-refresh-webpack-plugin-0.6.2.tgz#c17661001ef4d7ad5c6e7dd714c142962b00b5dc" + integrity sha512-IhIAD5n4XvGHuL9nAgWfsBR0TdxtjrUWETYKCBHxauYXEv+b+ctEbs9neEgPC7Ecgzv4bpZTBwesAoGDeFymzA== dependencies: - ansi-html-community "^0.0.8" - common-path-prefix "^3.0.0" + anser "^2.1.1" core-js-pure "^3.23.3" error-stack-parser "^2.0.6" - find-up "^5.0.0" html-entities "^2.1.0" - loader-utils "^2.0.4" - schema-utils "^3.0.0" + schema-utils "^4.2.0" source-map "^0.7.3" "@popperjs/core@^2.11.8": @@ -7749,18 +9351,179 @@ dependencies: "@babel/runtime" "^7.13.10" +"@react-aria/autocomplete@3.0.0-rc.6": + version "3.0.0-rc.6" + resolved "https://registry.yarnpkg.com/@react-aria/autocomplete/-/autocomplete-3.0.0-rc.6.tgz#34a8194e58fca1582495f1f71e4dc62d98c1ca41" + integrity sha512-uymUNJ8NW+dX7lmgkHE+SklAbxwktycAJcI5lBBw6KPZyc0EdMHC+/Fc5CUz3enIAhNwd2oxxogcSHknquMzQA== + dependencies: + "@react-aria/combobox" "^3.15.0" + "@react-aria/focus" "^3.21.5" + "@react-aria/i18n" "^3.12.16" + "@react-aria/interactions" "^3.27.1" + "@react-aria/listbox" "^3.15.3" + "@react-aria/searchfield" "^3.8.12" + "@react-aria/textfield" "^3.18.5" + "@react-aria/utils" "^3.33.1" + "@react-stately/autocomplete" "3.0.0-beta.4" + "@react-stately/combobox" "^3.13.0" + "@react-types/autocomplete" "3.0.0-alpha.38" + "@react-types/button" "^3.15.1" + "@react-types/shared" "^3.33.1" + "@swc/helpers" "^0.5.0" + +"@react-aria/button@^3.15.0": + version "3.15.0" + resolved "https://registry.yarnpkg.com/@react-aria/button/-/button-3.15.0.tgz#1f9e8dbe4475e4d94852e3fbe992a84335a9f2af" + integrity sha512-p8KehQ+OmhvhYmsjkp4K/Yv0tufyEBOHu6woJlRYL6kq5m6GKY5MZp8pyO26FpSiOyjhnZe6wbTyvCifvaokwQ== + dependencies: + "@swc/helpers" "^0.5.0" + react-aria "3.48.0" + +"@react-aria/collections@^3.0.3": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@react-aria/collections/-/collections-3.1.0.tgz#8dac8bc41e628d95e50f308fdc0df8c5ec179db9" + integrity sha512-OwWoxHaAN0jNw7oo17TfTPY2KZksDme4p5a8KCnNBfm/a0zo+y4wiOUaFpGDmDT6HxwznyBcu3x3oSN7orTtvA== + dependencies: + "@swc/helpers" "^0.5.0" + react-aria "3.48.0" + +"@react-aria/combobox@^3.15.0", "@react-aria/combobox@^3.16.0": + version "3.16.0" + resolved "https://registry.yarnpkg.com/@react-aria/combobox/-/combobox-3.16.0.tgz#382b1c71551dcfb4a8d7acb64cbe2c43725a199e" + integrity sha512-yPPLduVUluCBuIFSZ+WgBMgl5oH7A5oQTemSpvf9ZmJ2oABIe+h6VQcwkEtMdokveHrdbmWIB9BL0E5jdDczAA== + dependencies: + "@swc/helpers" "^0.5.0" + react-aria "3.48.0" + +"@react-aria/dnd@^3.11.6": + version "3.12.0" + resolved "https://registry.yarnpkg.com/@react-aria/dnd/-/dnd-3.12.0.tgz#65c9b7b5c12db24e2a05c2a02b52c455bd6a1f47" + integrity sha512-FqAaxIMCgpq83UQhJRpSR+o3K4XQQYbJMKxhBWGL84Wn1p6m8QmWGvRKAiHeUoQXlY8R6KNxlMR/KjJvV8/lBA== + dependencies: + "@react-types/shared" "^3.34.0" + "@swc/helpers" "^0.5.0" + react-aria "3.48.0" + +"@react-aria/focus@^3.21.5": + version "3.22.0" + resolved "https://registry.yarnpkg.com/@react-aria/focus/-/focus-3.22.0.tgz#68aebf279ccdf8238507c3db871382cbd29c0b8f" + integrity sha512-ZfDOVuVhqDsM9mkNji3QUZ/d40JhlVgXrDkrfXylM1035QCrcTHN7m2DpbE95sU2A8EQb4wikvt5jM6K/73BPg== + dependencies: + "@swc/helpers" "^0.5.0" + react-aria "3.48.0" + +"@react-aria/i18n@^3.12.16": + version "3.13.0" + resolved "https://registry.yarnpkg.com/@react-aria/i18n/-/i18n-3.13.0.tgz#624333ef62de2f7a4fd68fc99dd9141780b2db3f" + integrity sha512-APjw4EwmvlnIyDxixSWfjHvOFFkW2rVTyKZ4l9FV0v7hOerh+FWLE6mF1XnnX3pgz3yARkKWwhSR9xYcRK6tpg== + dependencies: + "@internationalized/date" "^3.12.1" + "@internationalized/message" "^3.1.9" + "@internationalized/string" "^3.2.8" + "@swc/helpers" "^0.5.0" + react-aria "3.48.0" + +"@react-aria/interactions@^3.27.1": + version "3.28.0" + resolved "https://registry.yarnpkg.com/@react-aria/interactions/-/interactions-3.28.0.tgz#83aeb39dd221a9b8f2f1e7c810b4e54f92c03519" + integrity sha512-OXwdU1EWFdMxmr/K1CXNGJzmNlCClByb+PuCaqUyzBymHPCGVhawirLIon/CrIN5psh3AiWpHSh4H0WeJdVpng== + dependencies: + "@react-types/shared" "^3.34.0" + "@swc/helpers" "^0.5.0" + react-aria "3.48.0" + +"@react-aria/interactions@~3.27.1": + version "3.27.1" + resolved "https://registry.yarnpkg.com/@react-aria/interactions/-/interactions-3.27.1.tgz#0f4d3eafb7a9acd25d864e9ab1e4a8a68602db2a" + integrity sha512-M3wLpTTmDflI0QGNK0PJNUaBXXfeBXue8ZxLMngfc1piHNiH4G5lUvWd9W14XVbqrSCVY8i8DfGrNYpyyZu0tw== + dependencies: + "@react-aria/ssr" "^3.9.10" + "@react-aria/utils" "^3.33.1" + "@react-stately/flags" "^3.1.2" + "@react-types/shared" "^3.33.1" + "@swc/helpers" "^0.5.0" + +"@react-aria/listbox@^3.15.3": + version "3.16.0" + resolved "https://registry.yarnpkg.com/@react-aria/listbox/-/listbox-3.16.0.tgz#cf535d0ca2bdafa525fe36798e09f4bb0cdded42" + integrity sha512-Jv6aTJECRntBvG+0ZQtXniAtHEQjvEi2QSm35FxRcsB8kgv7TmcinUOSZuHe5r8RDY2djILwdrqmfy6ApX0MDA== + dependencies: + "@swc/helpers" "^0.5.0" + react-aria "3.48.0" + +"@react-aria/live-announcer@^3.4.4": + version "3.5.0" + resolved "https://registry.yarnpkg.com/@react-aria/live-announcer/-/live-announcer-3.5.0.tgz#b82c5df99badb492eff444e07d61b460f2661990" + integrity sha512-1b+Txq00WQ/PJPCsZT+CI5qP86DrfFGPuJL5ifKtdMVXrxNGJWrfu7jTj6q9AbAOOXLG11BJ6blILu7sZeRPxg== + dependencies: + "@swc/helpers" "^0.5.0" + react-aria "3.48.0" + +"@react-aria/overlays@^3.31.2", "@react-aria/overlays@^3.32.0": + version "3.32.0" + resolved "https://registry.yarnpkg.com/@react-aria/overlays/-/overlays-3.32.0.tgz#94430f0a92771912da5af203a025ea4b03da04fd" + integrity sha512-H9meBB14/M0bDwk8gZl8Fu8bwZN2El9LDlk5cNkgAozbEiRuQvTFOeE3RoP6XI6bwEnSBvb0ovPmx3/kNyOehQ== + dependencies: + "@swc/helpers" "^0.5.0" + react-aria "3.48.0" + +"@react-aria/searchfield@^3.8.12", "@react-aria/searchfield@^3.9.0": + version "3.9.0" + resolved "https://registry.yarnpkg.com/@react-aria/searchfield/-/searchfield-3.9.0.tgz#392368e4fd4da22b3bd2fbe42de7fa241b7df3af" + integrity sha512-B8oOFhwGDotb7enoQ0bmXjhVkx8BkzK/ZnMmr4aF2ezexSFpG/ELkWqJPlfwknCwoBgBzhmpIKZvkoxQHR/iIw== + dependencies: + "@swc/helpers" "^0.5.0" + react-aria "3.48.0" + +"@react-aria/ssr@^3.9.10": + version "3.10.0" + resolved "https://registry.yarnpkg.com/@react-aria/ssr/-/ssr-3.10.0.tgz#1cea873259f3dbbb5afcf1b2ff1e20e37653085b" + integrity sha512-mnelvACtfNWWKFCT1YHebxJRmfBmmANGwHQhCFPByMVTx1L8RumcaLxChYkE87g2KPuP5xX2il/oRn1DytW+qQ== + dependencies: + "@swc/helpers" "^0.5.0" + react-aria "3.48.0" + +"@react-aria/textfield@^3.18.5": + version "3.19.0" + resolved "https://registry.yarnpkg.com/@react-aria/textfield/-/textfield-3.19.0.tgz#fc0b44bd9e6460c85d50529fab58b37ed3d9600d" + integrity sha512-P5Da8QFV/bCp3oCXQAqaTWhXNtx4vWEjvoqa49oG5TM1blodLjFrzNyiRM7TmQU0VLwiQPAQrqD4yaDLXZ0Nqg== + dependencies: + "@swc/helpers" "^0.5.0" + react-aria "3.48.0" + +"@react-aria/toolbar@3.0.0-beta.24": + version "3.0.0-beta.24" + resolved "https://registry.yarnpkg.com/@react-aria/toolbar/-/toolbar-3.0.0-beta.24.tgz#6a74e0b28dfad6a5f5a22c6c971facb88d8ddbdc" + integrity sha512-B2Rmpko7Ghi2RbNfsGdbR7I+RQBDhPGVE4bU3/EwHz+P/vNe5LyGPTeSwqaOMsQTF9lKNCkY8424dVTCr6RUMg== + dependencies: + "@react-aria/focus" "^3.21.5" + "@react-aria/i18n" "^3.12.16" + "@react-aria/utils" "^3.33.1" + "@react-types/shared" "^3.33.1" + "@swc/helpers" "^0.5.0" + +"@react-aria/utils@^3.33.1": + version "3.34.0" + resolved "https://registry.yarnpkg.com/@react-aria/utils/-/utils-3.34.0.tgz#ea01c8d50fbd6db64180b8c97d553e9a2438cad9" + integrity sha512-ZM1ZXIqpwGTJjjL6o3JhlZkEaBpQdxuOCqLEvwEwooaj5GsYI3E9UfOl5vy3UW6bYiEEWl9pNBntrb9CR9kItQ== + dependencies: + "@swc/helpers" "^0.5.0" + react-aria "3.48.0" + react-stately "3.46.0" + +"@react-aria/virtualizer@^4.1.13": + version "4.2.0" + resolved "https://registry.yarnpkg.com/@react-aria/virtualizer/-/virtualizer-4.2.0.tgz#58409d03942ebef12e446f8c5835a82da7fc1fc3" + integrity sha512-j4Dj/PMQK+d/2E2Dxyr5ifPdg8IG/NYsfZJtPnvKHXeKlI3vj7F/InamujwCuEFHZBK3YmxlRPRGcoMdS66qfw== + dependencies: + "@swc/helpers" "^0.5.0" + react-aria "3.48.0" + "@react-hookz/deep-equal@^1.0.4": version "1.0.4" resolved "https://registry.npmmirror.com/@react-hookz/deep-equal/-/deep-equal-1.0.4.tgz#68a71f36cbc88724b3ce6f4036183778b6e7f282" integrity sha512-N56fTrAPUDz/R423pag+n6TXWbvlBZDtTehaGFjK0InmN+V2OFWLE/WmORhmn6Ce7dlwH5+tQN1LJFw3ngTJVg== -"@react-hookz/web@^23.0.0": - version "23.1.0" - resolved "https://registry.npmmirror.com/@react-hookz/web/-/web-23.1.0.tgz#4e9bf133c56519924b4c2988aca20d09387f5e0a" - integrity sha512-fvbURdsa1ukttbLR1ASE/XmqXP09vZ1PiCYppYeR1sNMzCrdkG0iBnjxniFSVjJ8gIw2fRs6nqMTbeBz2uAkuA== - dependencies: - "@react-hookz/deep-equal" "^1.0.4" - "@react-hookz/web@^24.0.0": version "24.0.4" resolved "https://registry.npmmirror.com/@react-hookz/web/-/web-24.0.4.tgz#7a13d4c2cc65861b926ef6c4452fba00408c8778" @@ -7768,36 +9531,302 @@ dependencies: "@react-hookz/deep-equal" "^1.0.4" -"@remix-run/router@1.14.2": - version "1.14.2" - resolved "https://registry.npmmirror.com/@remix-run/router/-/router-1.14.2.tgz#4d58f59908d9197ba3179310077f25c88e49ed17" - integrity sha512-ACXpdMM9hmKZww21yEqWwiLws/UPLhNKvimN8RrYSqPSvB3ov7sLvAcfvaxePeLvccTQKGdkDIhLYApZVDFuKg== +"@react-spectrum/button@^3.18.0": + version "3.18.0" + resolved "https://registry.yarnpkg.com/@react-spectrum/button/-/button-3.18.0.tgz#edaf59383ee8affd4f6208d871f46b923c753cf4" + integrity sha512-SmjsXt+mLK2cf8PGstNZvLBfjqE5TjHW15yPIATI6ddqMdcC9JZ3ldnBTdFji9P/B6Rlop4ajnAdDV6bpxLtXA== + dependencies: + "@adobe/react-spectrum" "3.47.0" + "@swc/helpers" "^0.5.0" -"@repeaterjs/repeater@^3.0.4": - version "3.0.5" - resolved "https://registry.npmmirror.com/@repeaterjs/repeater/-/repeater-3.0.5.tgz#b77571685410217a548a9c753aa3cdfc215bfc78" - integrity sha512-l3YHBLAol6d/IKnB9LhpD0cEZWAoe3eFKUyTYWmFmCO2Q/WOckxLQAUyMZWwZV2M/m3+4vgRoaolFqaII82/TA== +"@react-spectrum/combobox@^3.17.0": + version "3.17.0" + resolved "https://registry.yarnpkg.com/@react-spectrum/combobox/-/combobox-3.17.0.tgz#a47a7d0b78fd5f052d5e474344cd3292fe0556dd" + integrity sha512-HuJjm7m5W/lvpak0KQXAdqkvO17GpIfQ6/AuddnXEyltWhl481oRok04b9VQKdZAy9xrmmpReFcvXJ4zFDIGvg== + dependencies: + "@adobe/react-spectrum" "3.47.0" + "@swc/helpers" "^0.5.0" + react-stately "3.46.0" + +"@react-spectrum/form@^3.8.0": + version "3.8.0" + resolved "https://registry.yarnpkg.com/@react-spectrum/form/-/form-3.8.0.tgz#4845a355a20b3dd2834b742ba499403b77fe8a21" + integrity sha512-zNFA1zRFvoEZAhK6HxWyo2yUDlUXqCaaySxHvuCaevq4Zw3DKndbxq72ax9YDaUAvYlhgnb/bI616JBCZUAhdA== + dependencies: + "@adobe/react-spectrum" "3.47.0" + "@swc/helpers" "^0.5.0" + +"@react-spectrum/overlays@^5.10.0": + version "5.10.0" + resolved "https://registry.yarnpkg.com/@react-spectrum/overlays/-/overlays-5.10.0.tgz#f856dbd93289af2841aaed022e81682cdf775e3f" + integrity sha512-iGHXE5wdF4wNqdkgTKWAoeJUeKec+ki1BeRdiguywjY/SGMIx8Htd4dWyglDsOboBBJuEWMHKFAmTbMDhz6B9w== + dependencies: + "@adobe/react-spectrum" "3.47.0" + "@swc/helpers" "^0.5.0" + +"@react-spectrum/searchfield@^3.9.0": + version "3.9.0" + resolved "https://registry.yarnpkg.com/@react-spectrum/searchfield/-/searchfield-3.9.0.tgz#cc8db2c7393d2cc01686a60a407faafc5b316c71" + integrity sha512-so1IeolnYPsgjoIJmoGakUuQv+Ij5NVoWx2VTBc3o2sUva1GkxtFp6Woiow2Qqw0mFyoTwwoKi6zQJHLMqHhvQ== + dependencies: + "@adobe/react-spectrum" "3.47.0" + "@swc/helpers" "^0.5.0" + +"@react-spectrum/table@^3.18.0": + version "3.18.0" + resolved "https://registry.yarnpkg.com/@react-spectrum/table/-/table-3.18.0.tgz#30e3ff72e86e7c1ae235f6862e11aae521138788" + integrity sha512-ckvjjz/Tp8Y/Ck/OOOXX/dTs8PtoWCy7+QDBxWzNpqvxcLiLviudNKJFhGfeyGGDi3IOMWRSaG5yWN9wrvItNQ== + dependencies: + "@adobe/react-spectrum" "3.47.0" + "@swc/helpers" "^0.5.0" + react-stately "3.46.0" + +"@react-stately/autocomplete@3.0.0-beta.4": + version "3.0.0-beta.4" + resolved "https://registry.yarnpkg.com/@react-stately/autocomplete/-/autocomplete-3.0.0-beta.4.tgz#113894dc39fc5da607dcf90e3421d419fe1978f9" + integrity sha512-K2Uy7XEdseFvgwRQ8CyrYEHMupjVKEszddOapP8deNz4hntYvT1aRm0m+sKa5Kl/4kvg9c/3NZpQcrky/vRZIg== + dependencies: + "@react-stately/utils" "^3.11.0" + "@swc/helpers" "^0.5.0" + +"@react-stately/collections@^3.12.10": + version "3.13.0" + resolved "https://registry.yarnpkg.com/@react-stately/collections/-/collections-3.13.0.tgz#69940f5ce2e0fc1b95e75b6a8eaae90e111e6661" + integrity sha512-f5HPoCjofrubOTbxch/GfGCV53U7C2y8JJM6RmLssbraw/iYGFME+UiorO+i7UFdMPQbyB6SoOpvtIYwuzS9WA== + dependencies: + "@swc/helpers" "^0.5.0" + react-stately "3.46.0" + +"@react-stately/combobox@^3.13.0", "@react-stately/combobox@^3.14.0": + version "3.14.0" + resolved "https://registry.yarnpkg.com/@react-stately/combobox/-/combobox-3.14.0.tgz#316e6ab7dc99c3e918f782a26e0d1c7c01e20657" + integrity sha512-WYWJK9IzWKDqnFk1HF6FGISrhPh/bzYkRLgd40Psyke5dwYusOrEUzG161P8v9vxAzs621pYB4hz2UhrRWsMPQ== + dependencies: + "@swc/helpers" "^0.5.0" + react-stately "3.46.0" + +"@react-stately/flags@^3.1.2": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@react-stately/flags/-/flags-3.2.0.tgz#4df462af9e32b4ae030cf5366c6269f54542bdc6" + integrity sha512-HcfFk5sUpSVUgjOHUSi4izUWbiya+iTt2/PAviW+cKmCJOy507CQ3VG3Yu0Rqs0cr66yt3foDKy0MRNQ2zmGmQ== + dependencies: + "@swc/helpers" "^0.5.0" + react-stately "3.46.0" + +"@react-stately/grid@^3.12.0": + version "3.12.0" + resolved "https://registry.yarnpkg.com/@react-stately/grid/-/grid-3.12.0.tgz#bf3645106bdda66d1d2f9b8ee2218b74d8403055" + integrity sha512-MLCN3hyxRpaj4tUnQyc+aFR2/QBP2rmFcXGdADHO1c0kvxd9Vk+bEe88uA9MJTz2VClQ+AN7yRGCTIuME+QvNQ== + dependencies: + "@swc/helpers" "^0.5.0" + react-stately "3.46.0" + +"@react-stately/layout@^4.6.0": + version "4.7.0" + resolved "https://registry.yarnpkg.com/@react-stately/layout/-/layout-4.7.0.tgz#dc7bd03d34b9d1bf23c8c8f3e2f8ee0bc6e924ad" + integrity sha512-63VvOKI8KXeD3SO7yt41511CdZ+9wK2LVY2mpY+c87ML5fVVgMTc/o1IsYWI07rW3IjEFcWoW93eItgMbJCXyg== + dependencies: + "@swc/helpers" "^0.5.0" + react-stately "3.46.0" -"@rjsf/core@5.18.5": - version "5.18.5" - resolved "https://registry.yarnpkg.com/@rjsf/core/-/core-5.18.5.tgz#580209de5cf66fac975b0a649df9b8e921aac96a" - integrity sha512-TTG6zSybzfSp+ko4U/WIeyVX5dRLbl7C0ZU2lpK/f6ruuLbBji8A523iLYINOzyDQL5uBtMdmRdO6oMdCz79tw== +"@react-stately/layout@~4.6.0": + version "4.6.0" + resolved "https://registry.yarnpkg.com/@react-stately/layout/-/layout-4.6.0.tgz#c9228f7a1c4cca08c64c5753ef4be80464afb163" + integrity sha512-kBenEsP03nh5rKgfqlVMPcoKTJv0v92CTvrAb5gYY8t9g8LOwzdL89Yannq7f5xv8LFck/MmRQlotpMt2InETg== + dependencies: + "@react-stately/collections" "^3.12.10" + "@react-stately/table" "^3.15.4" + "@react-stately/virtualizer" "^4.4.6" + "@react-types/grid" "^3.3.8" + "@react-types/shared" "^3.33.1" + "@react-types/table" "^3.13.6" + "@swc/helpers" "^0.5.0" + +"@react-stately/overlays@^3.7.0": + version "3.7.0" + resolved "https://registry.yarnpkg.com/@react-stately/overlays/-/overlays-3.7.0.tgz#c3b75eeb50e84cdfa07cba7850bd0ba4bf3fbce9" + integrity sha512-VyFlju6JqEUTyr+igrEjTeUi2MXw7IBOxWYzLoq26UJxf+45okqUWfyKRdXTvNjGJqQol9fqIg5Nv8fU4H/CvQ== + dependencies: + "@swc/helpers" "^0.5.0" + react-stately "3.46.0" + +"@react-stately/overlays@~3.6.23": + version "3.6.23" + resolved "https://registry.yarnpkg.com/@react-stately/overlays/-/overlays-3.6.23.tgz#f6d6b84b22580fa0c8c9cd7fe1cc773c4f57cd46" + integrity sha512-RzWxots9A6gAzQMP4s8hOAHV7SbJRTFSlQbb6ly1nkWQXacOSZSFNGsKOaS0eIatfNPlNnW4NIkgtGws5UYzfw== + dependencies: + "@react-stately/utils" "^3.11.0" + "@react-types/overlays" "^3.9.4" + "@swc/helpers" "^0.5.0" + +"@react-stately/searchfield@^3.6.0": + version "3.6.0" + resolved "https://registry.yarnpkg.com/@react-stately/searchfield/-/searchfield-3.6.0.tgz#23be581b9bcce13cef9405e962881c01181d862a" + integrity sha512-cSSDXynj3oQdILHSthEaB2pAIXG0POHKqjZZ07k6L/A0fkyhkwAbR/hyg+idHCH7Ah9hWnS+YhicWE1b6nw1zg== + dependencies: + "@swc/helpers" "^0.5.0" + react-stately "3.46.0" + +"@react-stately/selection@^3.20.9": + version "3.21.0" + resolved "https://registry.yarnpkg.com/@react-stately/selection/-/selection-3.21.0.tgz#aa0e39ac573401cd17d4e0397c6a514feae1ce2c" + integrity sha512-SBafuZoJgDr7L9dCgMjat1Mx85xOnRO7E5UCtAj6TF/7yhisJVnrNkfnryOH2CunPyXCUgfUlUebkxeXjbW+lw== + dependencies: + "@swc/helpers" "^0.5.0" + react-stately "3.46.0" + +"@react-stately/table@^3.15.4", "@react-stately/table@^3.16.0": + version "3.16.0" + resolved "https://registry.yarnpkg.com/@react-stately/table/-/table-3.16.0.tgz#b1404054e23842967ac91ed751a90a201c08824f" + integrity sha512-xuvkFuRj8SYE36T+hEed+30oPCzbkcGNduVBAOJGr9K0z7y/a3OxFdOnAv/OsCvKW1sLK231oTSFvZ36zRFndA== + dependencies: + "@swc/helpers" "^0.5.0" + react-stately "3.46.0" + +"@react-stately/utils@^3.11.0": + version "3.12.0" + resolved "https://registry.yarnpkg.com/@react-stately/utils/-/utils-3.12.0.tgz#98fe480764a7425c12215f00260d06d668fef28a" + integrity sha512-7q+iHz9cENvro1dVKgdTxNh1i1mtWuLUI6UHp10TAgpxM9DyRDvmuN35zLXYCmMDgx3WLY2xkwqoez8xd+CdxQ== + dependencies: + "@swc/helpers" "^0.5.0" + react-stately "3.46.0" + +"@react-stately/virtualizer@^4.4.6": + version "4.5.0" + resolved "https://registry.yarnpkg.com/@react-stately/virtualizer/-/virtualizer-4.5.0.tgz#08d9a149facda20b2472b52d5441d66f8645a0ea" + integrity sha512-Yf1xA9U7PuuaHgxWExwO5MrWCqzDZZTPCzo9YCcsilkOFk2GxMcGNysM71funj+d4CMqsWjCNmgNhZQjBXKjNw== + dependencies: + "@swc/helpers" "^0.5.0" + react-stately "3.46.0" + +"@react-types/autocomplete@3.0.0-alpha.38": + version "3.0.0-alpha.38" + resolved "https://registry.yarnpkg.com/@react-types/autocomplete/-/autocomplete-3.0.0-alpha.38.tgz#fd37e5e5e40c42d8a371d871d0651cd497124e70" + integrity sha512-0XrlVC8drzcrCNzybbkZdLcTofXEzBsHuaFevt5awW1J0xBJ+SMLIQMDeUYrvKjjwXUBlCtjJJpOvitGt4Z+KA== + dependencies: + "@react-types/combobox" "^3.14.0" + "@react-types/searchfield" "^3.6.8" + "@react-types/shared" "^3.33.1" + +"@react-types/button@^3.15.1": + version "3.16.0" + resolved "https://registry.yarnpkg.com/@react-types/button/-/button-3.16.0.tgz#8c6945232737e1bf07036af45c475e14f9962a11" + integrity sha512-Z5///n2Y1jtF0gokBq2Y1K1cpOwsWZ24HPeAm3eEmZrbBXMrxC2oEA5ZThsSHuIGsqiyNJiQ2scsDftmr+PkZw== + dependencies: + "@react-aria/button" "^3.15.0" + "@react-spectrum/button" "^3.18.0" + +"@react-types/calendar@~3.8.3": + version "3.8.3" + resolved "https://registry.yarnpkg.com/@react-types/calendar/-/calendar-3.8.3.tgz#7f849885217ab74f5c5b463defe78bee8690fd60" + integrity sha512-fpH6WNXotzH0TlKHXXxtjeLZ7ko0sbyHmwDAwmDFyP7T0Iwn1YQZ+lhceLifvynlxuOgX6oBItyUKmkHQ0FouQ== + dependencies: + "@internationalized/date" "^3.12.0" + "@react-types/shared" "^3.33.1" + +"@react-types/combobox@^3.14.0": + version "3.15.0" + resolved "https://registry.yarnpkg.com/@react-types/combobox/-/combobox-3.15.0.tgz#04bb3b1d34a92273538ca66351e8af697b5d5d9d" + integrity sha512-iWV9UfLg1P0XhEqPTbnhsVMHFwc0RnrZjHfCLwgilH0Af0z1CQ8RyWiT8cOd1eqbkOAiVgCv29Xs8PAxaQBHSg== + dependencies: + "@react-aria/combobox" "^3.16.0" + "@react-spectrum/combobox" "^3.17.0" + "@react-stately/combobox" "^3.14.0" + +"@react-types/form@^3.7.18": + version "3.8.0" + resolved "https://registry.yarnpkg.com/@react-types/form/-/form-3.8.0.tgz#aa1cb4f28eb642c39f11e08e11f4a213071225ea" + integrity sha512-ff38E4/5xLxqVemicLw+GefRoWBJEAro+hDwFZ5sde6kslktYt2LHJ7+IkID6yQYy+T3qxXgIdfxX+O1rlpWvw== + dependencies: + "@react-spectrum/form" "^3.8.0" + "@react-types/shared" "^3.34.0" + +"@react-types/grid@^3.3.8": + version "3.4.0" + resolved "https://registry.yarnpkg.com/@react-types/grid/-/grid-3.4.0.tgz#55e4ce6fbbd19c8b101d444bd6a7849ad7a72549" + integrity sha512-h+u3hKli9gVwfYx6cabkTNZrP+HQ97vAmTugGIk5IAfouE6kjhoDaDzVD0VUvIWqc12LIkrqe1LdBMZ0ofbV6A== + dependencies: + "@react-stately/grid" "^3.12.0" + +"@react-types/overlays@^3.9.4": + version "3.10.0" + resolved "https://registry.yarnpkg.com/@react-types/overlays/-/overlays-3.10.0.tgz#e263133b214cb428c2719487b9f51c93da317b7b" + integrity sha512-cgrcOTxy6ac0kiphQOkc8mj5artZMB/XVrFgukRZ2FcbYNEERpg2VQ5ztd0+H1ER7O0kx7AmwHxdut+x1EAjrw== + dependencies: + "@react-aria/overlays" "^3.32.0" + "@react-spectrum/overlays" "^5.10.0" + "@react-stately/overlays" "^3.7.0" + "@react-types/shared" "^3.34.0" + +"@react-types/searchfield@^3.6.8": + version "3.7.0" + resolved "https://registry.yarnpkg.com/@react-types/searchfield/-/searchfield-3.7.0.tgz#e2f80cb0bc661e3a8bd49839233e27c7d9b02df7" + integrity sha512-/JBVYkXLB4EozPEfgpYW7C9tzw4xUmdVmuf7g+8ip/AsFgsyW/FjdLpbaXESXR78D0nppWaNxUxcdUXcuo+eEg== + dependencies: + "@react-aria/searchfield" "^3.9.0" + "@react-spectrum/searchfield" "^3.9.0" + "@react-stately/searchfield" "^3.6.0" + +"@react-types/shared@^3.33.1", "@react-types/shared@^3.34.0": + version "3.34.0" + resolved "https://registry.yarnpkg.com/@react-types/shared/-/shared-3.34.0.tgz#f9688443fdf8e29f7a06b499598a930be96a2f65" + integrity sha512-gp6xo/s2lX54AlTjOiqwDnxA7UW79BNvI9dB9pr3LZTzRKCd1ZA+ZbgKw/ReIiWuvvVw/8QFJpnqeeFyLocMcQ== + +"@react-types/table@^3.13.6": + version "3.14.0" + resolved "https://registry.yarnpkg.com/@react-types/table/-/table-3.14.0.tgz#918a7de4de7cc2408ddd10f8bb28536feae7dd5b" + integrity sha512-emTYu9biFFlVEN208EmYpnO3bzi0f7q+07rnerUWRRRqXQpgNW/G5Tc6ifgCUXLp+KjwzLIeoDl4hs3ZnG5NSA== + dependencies: + "@react-spectrum/table" "^3.18.0" + "@react-stately/table" "^3.16.0" + "@react-types/shared" "^3.34.0" + +"@react-types/table@~3.13.6": + version "3.13.6" + resolved "https://registry.yarnpkg.com/@react-types/table/-/table-3.13.6.tgz#7cf94792d70ab077b6fbe6b843b8314c2456850b" + integrity sha512-eluL+iFfnVmFm7OSZrrFG9AUjw+tcv898zbv+NsZACa8oXG1v9AimhZfd+Mo8q/5+sX/9hguWNXFkSvmTjuVPQ== + dependencies: + "@react-types/grid" "^3.3.8" + "@react-types/shared" "^3.33.1" + +"@redis/client@^1.6.0": + version "1.6.1" + resolved "https://registry.yarnpkg.com/@redis/client/-/client-1.6.1.tgz#c4636b7cb34e96008a988409b7e787364ae761a2" + integrity sha512-/KCsg3xSlR+nCK8/8ZYSknYxvXHwubJrU82F3Lm1Fp6789VQ0/3RJKfsmRXjqfaTA++23CvC3hqmqe/2GEt6Kw== + dependencies: + cluster-key-slot "1.1.2" + generic-pool "3.9.0" + yallist "4.0.0" + +"@remix-run/router@1.23.2": + version "1.23.2" + resolved "https://registry.yarnpkg.com/@remix-run/router/-/router-1.23.2.tgz#156c4b481c0bee22a19f7924728a67120de06971" + integrity sha512-Ic6m2U/rMjTkhERIa/0ZtXJP17QUi2CbWE7cqx4J58M8aA3QTfW+2UlQ4psvTX9IO1RfNVhK3pcpdjej7L+t2w== + +"@remixicon/react@^4.6.0": + version "4.9.0" + resolved "https://registry.yarnpkg.com/@remixicon/react/-/react-4.9.0.tgz#e4469985dc88af987f03c2309e36b04028cb4600" + integrity sha512-5/jLDD4DtKxH2B4QVXTobvV1C2uL8ab9D5yAYNtFt+w80O0Ys1xFOrspqROL3fjrZi+7ElFUWE37hBfaAl6U+Q== + +"@rjsf/core@5.24.13": + version "5.24.13" + resolved "https://registry.yarnpkg.com/@rjsf/core/-/core-5.24.13.tgz#ef98e5dc6ac064b2be2f56e0887c99df2b1f8d44" + integrity sha512-ONTr14s7LFIjx2VRFLuOpagL76sM/HPy6/OhdBfq6UukINmTIs6+aFN0GgcR0aXQHFDXQ7f/fel0o/SO05Htdg== dependencies: lodash "^4.17.21" lodash-es "^4.17.21" markdown-to-jsx "^7.4.1" - nanoid "^3.3.7" prop-types "^15.8.1" -"@rjsf/material-ui@5.18.5": - version "5.18.5" - resolved "https://registry.yarnpkg.com/@rjsf/material-ui/-/material-ui-5.18.5.tgz#bbb68519217a67b80679429fb97dd3e57c56e823" - integrity sha512-1JiXnwvvnOin6/PfmbFVxSUN7ZQA780QSFEoscoi2VlB008rLpLPQcxFxPJFNGw37QjXvCiySjsFpHKJKqvqIw== +"@rjsf/material-ui@5.24.13": + version "5.24.13" + resolved "https://registry.yarnpkg.com/@rjsf/material-ui/-/material-ui-5.24.13.tgz#9d9b33c60dc84c475fcb0d8a6f823dd521887e15" + integrity sha512-aoOFLWXmPBxg5L15a5Sh9CiUfh7bp/SoMIN6/LasToxzoqMezFezKOCHg5fly+KJD4EwflyAgCbOnqAb5787Mw== -"@rjsf/utils@5.18.5": - version "5.18.5" - resolved "https://registry.yarnpkg.com/@rjsf/utils/-/utils-5.18.5.tgz#638724740b29784804dd244b0574213aa181469b" - integrity sha512-b39ZSPv2lpH+VXUKrVsPnPyOKcTa9P08h50J0A1+7xHj6dm4KG1KY/mY4QCaNavZVXsQoieHOe8kmdFDlXirzA== +"@rjsf/utils@5.24.13": + version "5.24.13" + resolved "https://registry.yarnpkg.com/@rjsf/utils/-/utils-5.24.13.tgz#b19ca434bf518ec3e652c4a0510b293ff5fac279" + integrity sha512-rNF8tDxIwTtXzz5O/U23QU73nlhgQNYJ+Sv5BAwQOIyhIE2Z3S5tUiSVMwZHt0julkv/Ryfwi+qsD4FiE5rOuw== dependencies: json-schema-merge-allof "^0.8.1" jsonpointer "^5.0.1" @@ -7805,84 +9834,107 @@ lodash-es "^4.17.21" react-is "^18.2.0" -"@rjsf/validator-ajv8@5.18.5": - version "5.18.5" - resolved "https://registry.yarnpkg.com/@rjsf/validator-ajv8/-/validator-ajv8-5.18.5.tgz#0f02f39462b3cdc15641df9dd63263600556b374" - integrity sha512-R1kPl86NzhbVYyRQ7Sa3GLDEmZdum7Qcvi9wKBy0GmnONM9dX6wZGikzr5/7x8mVYCIjukAd3eL129uchIv95w== +"@rjsf/validator-ajv8@5.24.13": + version "5.24.13" + resolved "https://registry.yarnpkg.com/@rjsf/validator-ajv8/-/validator-ajv8-5.24.13.tgz#8d56ca1e92c87f6b6234d97e07e96f80016a68c0" + integrity sha512-oWHP7YK581M8I5cF1t+UXFavnv+bhcqjtL1a7MG/Kaffi0EwhgcYjODrD8SsnrhncsEYMqSECr4ZOEoirnEUWw== dependencies: ajv "^8.12.0" ajv-formats "^2.1.1" lodash "^4.17.21" lodash-es "^4.17.21" -"@roadiehq/backstage-plugin-argo-cd-backend@3.0.2": - version "3.0.2" - resolved "https://registry.npmmirror.com/@roadiehq/backstage-plugin-argo-cd-backend/-/backstage-plugin-argo-cd-backend-3.0.2.tgz#2f5790b572f9d510342bb2f9717e654efdb6edde" - integrity sha512-41KYppBH3Gn8wN5GmHR0Tfp9ug1QJW33bm/RIe4kKoNzMxbHH42r7bBRWYKDd9ukJU4VKQzSuBOPRUpQzOAtkQ== +"@roadiehq/backstage-plugin-argo-cd-backend@^4.5.0", "@roadiehq/backstage-plugin-argo-cd-backend@^4.7.1": + version "4.8.0" + resolved "https://registry.yarnpkg.com/@roadiehq/backstage-plugin-argo-cd-backend/-/backstage-plugin-argo-cd-backend-4.8.0.tgz#00310465b50461ad4acc54f7172da8c91c7de72f" + integrity sha512-lbtSnktsmgkxuz6g5xDuBF+fgJuV1u+eYVU0pazBmSaTtH7S0VRNNGLCreIRYlWoHLqXIJMaltoYfg3pzpnONw== dependencies: - "@backstage/backend-common" "^0.21.7" - "@backstage/catalog-client" "^1.6.4" - "@backstage/config" "^1.2.0" + "@backstage/backend-plugin-api" "^1.4.4" + "@backstage/config" "^1.3.5" + "@roadiehq/backstage-plugin-argo-cd-node" "^2.0.0" "@types/express" "^4.17.6" cross-fetch "^3.1.4" - express "^4.17.1" express-promise-router "^4.1.0" - winston "^3.2.1" - yn "^4.0.0" -"@roadiehq/backstage-plugin-argo-cd@^2.5.1": - version "2.5.1" - resolved "https://registry.npmmirror.com/@roadiehq/backstage-plugin-argo-cd/-/backstage-plugin-argo-cd-2.5.1.tgz#e234d81fc4cc55633330ab174b617c9671bf8dfb" - integrity sha512-R2NyZ0EGOn5vu5XD8ia+PYPs0DbX1U/qjODoROfWVTPQbqQj3ogsxXfDFU3Zitx0IQHAPFAcRBcCWmd89fvujw== - dependencies: - "@backstage/catalog-model" "^1.4.3" - "@backstage/core-components" "^0.13.8" - "@backstage/core-plugin-api" "^1.8.0" - "@backstage/plugin-catalog-react" "^1.9.1" - "@backstage/theme" "^0.4.4" - "@material-ui/core" "^4.11.0" +"@roadiehq/backstage-plugin-argo-cd-node@^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@roadiehq/backstage-plugin-argo-cd-node/-/backstage-plugin-argo-cd-node-2.0.0.tgz#48a8bb13d17ef4e3b01fbb126b1f8249fda7128b" + integrity sha512-HawAQCrPfE7QaS380mPP+fF8I1IdLHD9Xh6wiXg7YiSVAtOyb8yfiFNbTq7i8Dodxy+tO/5uXbKoUtKiZjOskw== + dependencies: + "@backstage/backend-plugin-api" "^1.4.4" + "@backstage/config" "^1.3.5" + cross-fetch "^3.1.4" + +"@roadiehq/backstage-plugin-argo-cd@^2.12.5": + version "2.12.5" + resolved "https://registry.yarnpkg.com/@roadiehq/backstage-plugin-argo-cd/-/backstage-plugin-argo-cd-2.12.5.tgz#049284602dc23181eff4cd487612b45dd5dd9b91" + integrity sha512-sTYZQcvDlmfz+XerhThDjprqT2UEzgc3NCVHry0HzxeX6UzAWaydCpGP4cchBtFexuQKlGyjPP53/XTVCcJDPg== + dependencies: + "@backstage/catalog-model" "^1.7.5" + "@backstage/core-compat-api" "^0.5.3" + "@backstage/core-components" "^0.18.2" + "@backstage/core-plugin-api" "^1.11.1" + "@backstage/frontend-plugin-api" "^0.12.1" + "@backstage/plugin-catalog-react" "^1.21.2" + "@material-ui/core" "^4.12.2" "@material-ui/icons" "^4.9.1" - "@material-ui/lab" "4.0.0-alpha.45" cross-fetch "^3.1.4" - date-fns "^2.21.1" fp-ts "^2.10.0" - history "^5.0.0" io-ts "^2.2.16" io-ts-promise "^2.0.2" io-ts-reporters "^1.2.2" - moment "^2.29.1" + luxon "^3.5.0" react-use "^17.2.4" -"@roadiehq/scaffolder-backend-module-utils@^1.17.0": - version "1.17.0" - resolved "https://registry.npmmirror.com/@roadiehq/scaffolder-backend-module-utils/-/scaffolder-backend-module-utils-1.17.0.tgz#dc715e033a01f6f6e7ee16850071ee483a88b6d4" - integrity sha512-jI5SBuOu3ZMTvDysa2/2qXm5sXY+2lBrvQNPaswAU1XOQy7gWmQIjQ8oc01sS6C8AEFVY7O9DabdTZOFLKgLqQ== +"@roadiehq/scaffolder-backend-argocd@^1.7.1": + version "1.8.1" + resolved "https://registry.yarnpkg.com/@roadiehq/scaffolder-backend-argocd/-/scaffolder-backend-argocd-1.8.1.tgz#caf05bce043c7864e64453ebe564856c9fcc8a1b" + integrity sha512-6TH96l+0B+c1MgYBN7HeXRGzv9ii4GmkEaaVCND9OQ/TKt5Ry+y9ITv24hUlN5/+SDLOhd0lQEZA0SQc6whGkQ== dependencies: - "@backstage/backend-common" "^0.21.7" - "@backstage/backend-plugin-api" "^0.6.17" - "@backstage/config" "^1.2.0" - "@backstage/errors" "^1.2.4" - "@backstage/plugin-scaffolder-backend" "^1.22.5" - "@backstage/plugin-scaffolder-node" "^0.4.3" + "@backstage/backend-plugin-api" "^1.4.4" + "@backstage/config" "^1.3.5" + "@backstage/plugin-scaffolder-node" "^0.12.0" + "@roadiehq/backstage-plugin-argo-cd-backend" "^4.5.0" + winston "^3.2.1" + +"@roadiehq/scaffolder-backend-module-http-request@^5.6.0": + version "5.6.0" + resolved "https://registry.yarnpkg.com/@roadiehq/scaffolder-backend-module-http-request/-/scaffolder-backend-module-http-request-5.6.0.tgz#71f3ebd86eec69c5d8de6272b51436cbbfced487" + integrity sha512-CdXeKJIDZF5Cpv0teoI0zzalqEZ933i039G/NBdwm90VVChyTuom0sEeTMPJr85/9ny/Z9gUgDMcXe7Iq9F4Hw== + dependencies: + "@backstage/backend-plugin-api" "^1.4.4" + "@backstage/core-plugin-api" "^1.11.1" + "@backstage/plugin-scaffolder-node" "^0.12.0" + cross-fetch "^4.0.0" + +"@roadiehq/scaffolder-backend-module-utils@^4.1.2": + version "4.1.2" + resolved "https://registry.yarnpkg.com/@roadiehq/scaffolder-backend-module-utils/-/scaffolder-backend-module-utils-4.1.2.tgz#16fa1479818fec6d0b71042cfa8571373c8f6a5a" + integrity sha512-M9qgKxh/l16J4DbrfeyhvHjW0auuCIVH2Nn/uhaBM7TjNO707hBvWwxhf2f+t/dDW/ldhNmwCf+naPqKU9KDAQ== + dependencies: + "@backstage/backend-plugin-api" "^1.4.4" + "@backstage/config" "^1.3.5" + "@backstage/errors" "^1.2.7" + "@backstage/plugin-scaffolder-node" "^0.12.0" adm-zip "^0.5.9" - cross-fetch "^3.1.4" detect-indent "^6.1.0" + fast-glob "^3.3.3" fs-extra "^10.0.0" jsonata "^2.0.4" lodash "^4.17.21" - winston "^3.2.1" - yaml "^2.3.4" - yawn-yaml "^2.2.0" + yaml "^2.6.1" + yawn-yaml "^2.3.0" + zod "^3.19.1" -"@rollup/plugin-commonjs@^25.0.0": - version "25.0.7" - resolved "https://registry.npmmirror.com/@rollup/plugin-commonjs/-/plugin-commonjs-25.0.7.tgz#145cec7589ad952171aeb6a585bbeabd0fd3b4cf" - integrity sha512-nEvcR+LRjEjsaSsc4x3XZfCCvZIaSMenZu/OiwOKGN2UhQpAYI7ru7czFvyWbErlpoGjnSX3D5Ch5FcMA3kRWQ== +"@rollup/plugin-commonjs@^26.0.0": + version "26.0.3" + resolved "https://registry.yarnpkg.com/@rollup/plugin-commonjs/-/plugin-commonjs-26.0.3.tgz#085ffb49818e43e4a2a96816a37affcc8a8cbaca" + integrity sha512-2BJcolt43MY+y5Tz47djHkodCC3c1VKVrBDKpVqHKpQ9z9S158kCCqB8NF6/gzxLdNlYW9abB3Ibh+kOWLp8KQ== dependencies: "@rollup/pluginutils" "^5.0.1" commondir "^1.0.1" estree-walker "^2.0.2" - glob "^8.0.3" + glob "^10.4.1" is-reference "1.2.1" magic-string "^0.30.3" @@ -7914,14 +9966,6 @@ js-yaml "^4.1.0" tosource "^2.0.0-alpha.3" -"@rollup/pluginutils@^4.2.1": - version "4.2.1" - resolved "https://registry.npmmirror.com/@rollup/pluginutils/-/pluginutils-4.2.1.tgz#e6c6c3aba0744edce3fb2074922d3776c0af2a6d" - integrity sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ== - dependencies: - estree-walker "^2.0.1" - picomatch "^2.2.2" - "@rollup/pluginutils@^5.0.1", "@rollup/pluginutils@^5.0.5", "@rollup/pluginutils@^5.1.0": version "5.1.0" resolved "https://registry.npmmirror.com/@rollup/pluginutils/-/pluginutils-5.1.0.tgz#7e53eddc8c7f483a4ad0b94afb1f7f5fd3c771e0" @@ -7931,85 +9975,258 @@ estree-walker "^2.0.2" picomatch "^2.3.1" -"@rollup/rollup-android-arm-eabi@4.18.0": - version "4.18.0" - resolved "https://registry.npmmirror.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.18.0.tgz#bbd0e616b2078cd2d68afc9824d1fadb2f2ffd27" - integrity sha512-Tya6xypR10giZV1XzxmH5wr25VcZSncG0pZIjfePT0OVBvqNEurzValetGNarVrGiq66EBVAFn15iYX4w6FKgQ== - -"@rollup/rollup-android-arm64@4.18.0": - version "4.18.0" - resolved "https://registry.npmmirror.com/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.18.0.tgz#97255ef6384c5f73f4800c0de91f5f6518e21203" - integrity sha512-avCea0RAP03lTsDhEyfy+hpfr85KfyTctMADqHVhLAF3MlIkq83CP8UfAHUssgXTYd+6er6PaAhx/QGv4L1EiA== - -"@rollup/rollup-darwin-arm64@4.18.0": - version "4.18.0" - resolved "https://registry.npmmirror.com/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.18.0.tgz#b6dd74e117510dfe94541646067b0545b42ff096" - integrity sha512-IWfdwU7KDSm07Ty0PuA/W2JYoZ4iTj3TUQjkVsO/6U+4I1jN5lcR71ZEvRh52sDOERdnNhhHU57UITXz5jC1/w== - -"@rollup/rollup-darwin-x64@4.18.0": - version "4.18.0" - resolved "https://registry.npmmirror.com/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.18.0.tgz#e07d76de1cec987673e7f3d48ccb8e106d42c05c" - integrity sha512-n2LMsUz7Ynu7DoQrSQkBf8iNrjOGyPLrdSg802vk6XT3FtsgX6JbE8IHRvposskFm9SNxzkLYGSq9QdpLYpRNA== - -"@rollup/rollup-linux-arm-gnueabihf@4.18.0": - version "4.18.0" - resolved "https://registry.npmmirror.com/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.18.0.tgz#9f1a6d218b560c9d75185af4b8bb42f9f24736b8" - integrity sha512-C/zbRYRXFjWvz9Z4haRxcTdnkPt1BtCkz+7RtBSuNmKzMzp3ZxdM28Mpccn6pt28/UWUCTXa+b0Mx1k3g6NOMA== - -"@rollup/rollup-linux-arm-musleabihf@4.18.0": - version "4.18.0" - resolved "https://registry.npmmirror.com/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.18.0.tgz#53618b92e6ffb642c7b620e6e528446511330549" - integrity sha512-l3m9ewPgjQSXrUMHg93vt0hYCGnrMOcUpTz6FLtbwljo2HluS4zTXFy2571YQbisTnfTKPZ01u/ukJdQTLGh9A== - -"@rollup/rollup-linux-arm64-gnu@4.18.0": - version "4.18.0" - resolved "https://registry.npmmirror.com/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.18.0.tgz#99a7ba5e719d4f053761a698f7b52291cefba577" - integrity sha512-rJ5D47d8WD7J+7STKdCUAgmQk49xuFrRi9pZkWoRD1UeSMakbcepWXPF8ycChBoAqs1pb2wzvbY6Q33WmN2ftw== - -"@rollup/rollup-linux-arm64-musl@4.18.0": - version "4.18.0" - resolved "https://registry.npmmirror.com/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.18.0.tgz#f53db99a45d9bc00ce94db8a35efa7c3c144a58c" - integrity sha512-be6Yx37b24ZwxQ+wOQXXLZqpq4jTckJhtGlWGZs68TgdKXJgw54lUUoFYrg6Zs/kjzAQwEwYbp8JxZVzZLRepQ== - -"@rollup/rollup-linux-powerpc64le-gnu@4.18.0": - version "4.18.0" - resolved "https://registry.npmmirror.com/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.18.0.tgz#cbb0837408fe081ce3435cf3730e090febafc9bf" - integrity sha512-hNVMQK+qrA9Todu9+wqrXOHxFiD5YmdEi3paj6vP02Kx1hjd2LLYR2eaN7DsEshg09+9uzWi2W18MJDlG0cxJA== - -"@rollup/rollup-linux-riscv64-gnu@4.18.0": - version "4.18.0" - resolved "https://registry.npmmirror.com/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.18.0.tgz#8ed09c1d1262ada4c38d791a28ae0fea28b80cc9" - integrity sha512-ROCM7i+m1NfdrsmvwSzoxp9HFtmKGHEqu5NNDiZWQtXLA8S5HBCkVvKAxJ8U+CVctHwV2Gb5VUaK7UAkzhDjlg== - -"@rollup/rollup-linux-s390x-gnu@4.18.0": - version "4.18.0" - resolved "https://registry.npmmirror.com/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.18.0.tgz#938138d3c8e0c96f022252a28441dcfb17afd7ec" - integrity sha512-0UyyRHyDN42QL+NbqevXIIUnKA47A+45WyasO+y2bGJ1mhQrfrtXUpTxCOrfxCR4esV3/RLYyucGVPiUsO8xjg== - -"@rollup/rollup-linux-x64-gnu@4.18.0": - version "4.18.0" - resolved "https://registry.npmmirror.com/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.18.0.tgz#1a7481137a54740bee1ded4ae5752450f155d942" - integrity sha512-xuglR2rBVHA5UsI8h8UbX4VJ470PtGCf5Vpswh7p2ukaqBGFTnsfzxUBetoWBWymHMxbIG0Cmx7Y9qDZzr648w== - -"@rollup/rollup-linux-x64-musl@4.18.0": - version "4.18.0" - resolved "https://registry.npmmirror.com/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.18.0.tgz#f1186afc601ac4f4fc25fac4ca15ecbee3a1874d" - integrity sha512-LKaqQL9osY/ir2geuLVvRRs+utWUNilzdE90TpyoX0eNqPzWjRm14oMEE+YLve4k/NAqCdPkGYDaDF5Sw+xBfg== - -"@rollup/rollup-win32-arm64-msvc@4.18.0": - version "4.18.0" - resolved "https://registry.npmmirror.com/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.18.0.tgz#ed6603e93636a96203c6915be4117245c1bd2daf" - integrity sha512-7J6TkZQFGo9qBKH0pk2cEVSRhJbL6MtfWxth7Y5YmZs57Pi+4x6c2dStAUvaQkHQLnEQv1jzBUW43GvZW8OFqA== - -"@rollup/rollup-win32-ia32-msvc@4.18.0": - version "4.18.0" - resolved "https://registry.npmmirror.com/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.18.0.tgz#14e0b404b1c25ebe6157a15edb9c46959ba74c54" - integrity sha512-Txjh+IxBPbkUB9+SXZMpv+b/vnTEtFyfWZgJ6iyCmt2tdx0OF5WhFowLmnh8ENGNpfUlUZkdI//4IEmhwPieNg== - -"@rollup/rollup-win32-x64-msvc@4.18.0": - version "4.18.0" - resolved "https://registry.npmmirror.com/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.18.0.tgz#5d694d345ce36b6ecf657349e03eb87297e68da4" - integrity sha512-UOo5FdvOL0+eIVTgS4tIdbW+TtnBLWg1YBCcU2KWM7nuNwRz9bksDX1bekJJCpu25N1DVWaCwnT39dVQxzqS8g== +"@rollup/rollup-android-arm-eabi@4.60.2": + version "4.60.2" + resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.60.2.tgz#a19c645c375158cd5c50a344106f0fa18eb821c4" + integrity sha512-dnlp69efPPg6Uaw2dVqzWRfAWRnYVb1XJ8CyyhIbZeaq4CA5/mLeZ1IEt9QqQxmbdvagjLIm2ZL8BxXv5lH4Yw== + +"@rollup/rollup-android-arm64@4.60.2": + version "4.60.2" + resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.60.2.tgz#1af19aa9d3ad6d00df2681f59cfcb8bf7499576b" + integrity sha512-OqZTwDRDchGRHHm/hwLOL7uVPB9aUvI0am/eQuWMNyFHf5PSEQmyEeYYheA0EPPKUO/l0uigCp+iaTjoLjVoHg== + +"@rollup/rollup-darwin-arm64@4.60.2": + version "4.60.2" + resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.60.2.tgz#3b8463e03ba2a393453fea70e7d907379c27b649" + integrity sha512-UwRE7CGpvSVEQS8gUMBe1uADWjNnVgP3Iusyda1nSRwNDCsRjnGc7w6El6WLQsXmZTbLZx9cecegumcitNfpmA== + +"@rollup/rollup-darwin-x64@4.60.2": + version "4.60.2" + resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.60.2.tgz#28da23d69fe117f5f0ff330a8549e51bd09f1b6a" + integrity sha512-gjEtURKLCC5VXm1I+2i1u9OhxFsKAQJKTVB8WvDAHF+oZlq0GTVFOlTlO1q3AlCTE/DF32c16ESvfgqR7343/g== + +"@rollup/rollup-freebsd-arm64@4.60.2": + version "4.60.2" + resolved "https://registry.yarnpkg.com/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.60.2.tgz#94bacac3190f621de1355922b599f3817786044c" + integrity sha512-Bcl6CYDeAgE70cqZaMojOi/eK63h5Me97ZqAQoh77VPjMysA/4ORQBRGo3rRy45x4MzVlU9uZxs8Uwy7ZaKnBw== + +"@rollup/rollup-freebsd-x64@4.60.2": + version "4.60.2" + resolved "https://registry.yarnpkg.com/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.60.2.tgz#8a0094f533b9fda160b5c90ad9e0c78fca341788" + integrity sha512-LU+TPda3mAE2QB0/Hp5VyeKJivpC6+tlOXd1VMoXV/YFMvk/MNk5iXeBfB4MQGRWyOYVJ01625vjkr0Az98OJQ== + +"@rollup/rollup-linux-arm-gnueabihf@4.60.2": + version "4.60.2" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.60.2.tgz#3b7e901a555c7245c87f7440979bee0a1ec882bb" + integrity sha512-2QxQrM+KQ7DAW4o22j+XZ6RKdxjLD7BOWTP0Bv0tmjdyhXSsr2Ul1oJDQqh9Zf5qOwTuTc7Ek83mOFaKnodPjg== + +"@rollup/rollup-linux-arm-musleabihf@4.60.2": + version "4.60.2" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.60.2.tgz#ee9a09b72e8ad764cfd6188b32ff1de528ff7ebe" + integrity sha512-TbziEu2DVsTEOPif2mKWkMeDMLoYjx95oESa9fkQQK7r/Orta0gnkcDpzwufEcAO2BLBsD7mZkXGFqEdMRRwfw== + +"@rollup/rollup-linux-arm64-gnu@4.60.2": + version "4.60.2" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.60.2.tgz#ba483f4aca9be141171d086dbd01ada6ab03b58d" + integrity sha512-bO/rVDiDUuM2YfuCUwZ1t1cP+/yqjqz+Xf2VtkdppefuOFS2OSeAfgafaHNkFn0t02hEyXngZkxtGqXcXwO8Rg== + +"@rollup/rollup-linux-arm64-musl@4.60.2": + version "4.60.2" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.60.2.tgz#17b595b790e6df68e91c5d02526fc832a985ce4f" + integrity sha512-hr26p7e93Rl0Za+JwW7EAnwAvKkehh12BU1Llm9Ykiibg4uIr2rbpxG9WCf56GuvidlTG9KiiQT/TXT1yAWxTA== + +"@rollup/rollup-linux-loong64-gnu@4.60.2": + version "4.60.2" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.60.2.tgz#551718714075a2bfb36a2813c466e3a0e9d56abf" + integrity sha512-pOjB/uSIyDt+ow3k/RcLvUAOGpysT2phDn7TTUB3n75SlIgZzM6NKAqlErPhoFU+npgY3/n+2HYIQVbF70P9/A== + +"@rollup/rollup-linux-loong64-musl@4.60.2": + version "4.60.2" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-loong64-musl/-/rollup-linux-loong64-musl-4.60.2.tgz#ba156ed1243447a3d710972001d5dcfe3827ff3d" + integrity sha512-2/w+q8jszv9Ww1c+6uJT3OwqhdmGP2/4T17cu8WuwyUuuaCDDJ2ojdyYwZzCxx0GcsZBhzi3HmH+J5pZNXnd+Q== + +"@rollup/rollup-linux-ppc64-gnu@4.60.2": + version "4.60.2" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.60.2.tgz#6a957a709b86ac62ef68e597ac03dbd4336782b1" + integrity sha512-11+aL5vKheYgczxtPVVRhdptAM2H7fcDR5Gw4/bTcteuZBlH4oP9f5s9zYO9aGZvoGeBpqXI/9TZZihZ609wKw== + +"@rollup/rollup-linux-ppc64-musl@4.60.2": + version "4.60.2" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-ppc64-musl/-/rollup-linux-ppc64-musl-4.60.2.tgz#ca4176b4ad53f3edee3b4bfa6f9ef48ff38f167b" + integrity sha512-i16fokAGK46IVZuV8LIIwMdtqhin9hfYkCh8pf8iC3QU3LpwL+1FSFGej+O7l3E/AoknL6Dclh2oTdnRMpTzFQ== + +"@rollup/rollup-linux-riscv64-gnu@4.60.2": + version "4.60.2" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.60.2.tgz#4e6b08f72ebeafdb41f3ec433bd228ba8573473b" + integrity sha512-49FkKS6RGQoriDSK/6E2GkAsAuU5kETFCh7pG4yD/ylj9rKhTmO3elsnmBvRD4PgJPds5W2PkhC82aVwmUcJ7A== + +"@rollup/rollup-linux-riscv64-musl@4.60.2": + version "4.60.2" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.60.2.tgz#a0b8b8580c7680c8086cb3226527e5472253b895" + integrity sha512-mjYNkHPfGpUR00DuM1ZZIgs64Hpf4bWcz9Z41+4Q+pgDx73UwWdAYyf6EG/lRFldmdHHzgrYyge5akFUW0D3mQ== + +"@rollup/rollup-linux-s390x-gnu@4.60.2": + version "4.60.2" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.60.2.tgz#79fe15b92ce0bae2b609cf26dd158cd3e2b73634" + integrity sha512-ALyvJz965BQk8E9Al/JDKKDLH2kfKFLTGMlgkAbbYtZuJt9LU8DW3ZoDMCtQpXAltZxwBHevXz5u+gf0yA0YoA== + +"@rollup/rollup-linux-x64-gnu@4.60.2": + version "4.60.2" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.60.2.tgz#6aa8302fa45fd3cbbc510ccd223c9c37bf67e53f" + integrity sha512-UQjrkIdWrKI626Du8lCQ6MJp/6V1LAo2bOK9OTu4mSn8GGXIkPXk/Vsp4bLHCd9Z9Iz2OTEaokUE90VweJgIYQ== + +"@rollup/rollup-linux-x64-musl@4.60.2": + version "4.60.2" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.60.2.tgz#0c1a5e9799f80c47a66f2c3a5f1a280f38356047" + integrity sha512-bTsRGj6VlSdn/XD4CGyzMnzaBs9bsRxy79eTqTCBsA8TMIEky7qg48aPkvJvFe1HyzQ5oMZdg7AnVlWQSKLTnw== + +"@rollup/rollup-openbsd-x64@4.60.2": + version "4.60.2" + resolved "https://registry.yarnpkg.com/@rollup/rollup-openbsd-x64/-/rollup-openbsd-x64-4.60.2.tgz#5f07c863e74fd428794f1dc5749f321b661d1f17" + integrity sha512-6d4Z3534xitaA1FcMWP7mQPq5zGwBmGbhphh2DwaA1aNIXUu3KTOfwrWpbwI4/Gr0uANo7NTtaykFyO2hPuFLg== + +"@rollup/rollup-openharmony-arm64@4.60.2": + version "4.60.2" + resolved "https://registry.yarnpkg.com/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.60.2.tgz#8e0d71324be0f423428b12b25a2eb8ea8e0a7833" + integrity sha512-NetAg5iO2uN7eB8zE5qrZ3CSil+7IJt4WDFLcC75Ymywq1VZVD6qJ6EvNLjZ3rEm6gB7XW5JdT60c6MN35Z85Q== + +"@rollup/rollup-win32-arm64-msvc@4.60.2": + version "4.60.2" + resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.60.2.tgz#a553fdf90a785ace6d7501eed6241c468b088999" + integrity sha512-NCYhOotpgWZ5kdxCZsv6Iudx0wX8980Q/oW4pNFNihpBKsDbEA1zpkfxJGC0yugsUuyDZ7gL37dbzwhR0VI7pQ== + +"@rollup/rollup-win32-ia32-msvc@4.60.2": + version "4.60.2" + resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.60.2.tgz#0fb04f0a88027fbfd323e25a446debce4773868c" + integrity sha512-RXsaOqXxfoUBQoOgvmmijVxJnW2IGB0eoMO7F8FAjaj0UTywUO/luSqimWBJn04WNgUkeNhh7fs7pESXajWmkg== + +"@rollup/rollup-win32-x64-gnu@4.60.2": + version "4.60.2" + resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.60.2.tgz#aaa9e36dbdc0f0e397e5966dcce1b4285354ede2" + integrity sha512-qdAzEULD+/hzObedtmV6iBpdL5TIbKVztGiK7O3/KYSf+HIzU257+MX1EXJcyIiDbMAqmbwaufcYPvyRryeZtA== + +"@rollup/rollup-win32-x64-msvc@4.60.2": + version "4.60.2" + resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.60.2.tgz#3418dcf1388f2abd6b0ccc08fe1ef205ae76d696" + integrity sha512-Nd/SgG27WoA9e+/TdK74KnHz852TLa94ovOYySo/yMPuTmpckK/jIF2jSwS3g7ELSKXK13/cVdmg1Z/DaCWKxA== + +"@rspack/binding-darwin-arm64@1.7.11": + version "1.7.11" + resolved "https://registry.yarnpkg.com/@rspack/binding-darwin-arm64/-/binding-darwin-arm64-1.7.11.tgz#ea43ac25a9ff99a9faf6c820f5d174a32974e95c" + integrity sha512-oduECiZVqbO5zlVw+q7Vy65sJFth99fWPTyucwvLJJtJkPL5n17Uiql2cYP6Ijn0pkqtf1SXgK8WjiKLG5bIig== + +"@rspack/binding-darwin-x64@1.7.11": + version "1.7.11" + resolved "https://registry.yarnpkg.com/@rspack/binding-darwin-x64/-/binding-darwin-x64-1.7.11.tgz#5c724d91559d642d4a5e6aa4ed380c30bd0f64c0" + integrity sha512-a1+TtTE9ap6RalgFi7FGIgkJP6O4Vy6ctv+9WGJy53E4kuqHR0RygzaiVxCI/GMc/vBT9vY23hyrpWb3d1vtXA== + +"@rspack/binding-linux-arm64-gnu@1.7.11": + version "1.7.11" + resolved "https://registry.yarnpkg.com/@rspack/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.7.11.tgz#429119939bbe9d51a72caf99cffb8febe0f870fe" + integrity sha512-P0QrGRPbTWu6RKWfN0bDtbnEps3rXH0MWIMreZABoUrVmNQKtXR6e73J3ub6a+di5s2+K0M2LJ9Bh2/H4UsDUA== + +"@rspack/binding-linux-arm64-musl@1.7.11": + version "1.7.11" + resolved "https://registry.yarnpkg.com/@rspack/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.7.11.tgz#d939b8c2c5bf35380d3c860402f7063031ef469a" + integrity sha512-6ky7R43VMjWwmx3Yx7Jl7faLBBMAgMDt+/bN35RgwjiPgsIByz65EwytUVuW9rikB43BGHvA/eqlnjLrUzNBqw== + +"@rspack/binding-linux-x64-gnu@1.7.11": + version "1.7.11" + resolved "https://registry.yarnpkg.com/@rspack/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.7.11.tgz#03567317a7e8cfc62d994dcf9683f932fd22054a" + integrity sha512-cuOJMfCOvb2Wgsry5enXJ3iT1FGUjdPqtGUBVupQlEG4ntSYsQ2PtF4wIDVasR3wdxC5nQbipOrDiN/u6fYsdQ== + +"@rspack/binding-linux-x64-musl@1.7.11": + version "1.7.11" + resolved "https://registry.yarnpkg.com/@rspack/binding-linux-x64-musl/-/binding-linux-x64-musl-1.7.11.tgz#d93c93ea796eae1572b2353a50d58cc6218c53b6" + integrity sha512-CoK37hva4AmHGh3VCsQXmGr40L36m1/AdnN5LEjUX6kx5rEH7/1nEBN6Ii72pejqDVvk9anEROmPDiPw10tpFg== + +"@rspack/binding-wasm32-wasi@1.7.11": + version "1.7.11" + resolved "https://registry.yarnpkg.com/@rspack/binding-wasm32-wasi/-/binding-wasm32-wasi-1.7.11.tgz#c90235032fb14de50baf535592069923c1308f4e" + integrity sha512-OtrmnPUVJMxjNa3eDMfHyPdtlLRmmp/aIm0fQHlAOATbZvlGm12q7rhPW5BXTu1yh+1rQ1/uqvz+SzKEZXuJaQ== + dependencies: + "@napi-rs/wasm-runtime" "1.0.7" + +"@rspack/binding-win32-arm64-msvc@1.7.11": + version "1.7.11" + resolved "https://registry.yarnpkg.com/@rspack/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.7.11.tgz#0afcfde6a77cdf6fa6a85de4f8a39b94a593aab2" + integrity sha512-lObFW6e5lCWNgTBNwT//yiEDbsxm9QG4BYUojqeXxothuzJ/L6ibXz6+gLMvbOvLGV3nKgkXmx8GvT9WDKR0mA== + +"@rspack/binding-win32-ia32-msvc@1.7.11": + version "1.7.11" + resolved "https://registry.yarnpkg.com/@rspack/binding-win32-ia32-msvc/-/binding-win32-ia32-msvc-1.7.11.tgz#46606834538e84cd0f95f19089695ab122d69586" + integrity sha512-0pYGnZd8PPqNR68zQ8skamqNAXEA1sUfXuAdYcknIIRq2wsbiwFzIc0Pov1cIfHYab37G7sSIPBiOUdOWF5Ivw== + +"@rspack/binding-win32-x64-msvc@1.7.11": + version "1.7.11" + resolved "https://registry.yarnpkg.com/@rspack/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.7.11.tgz#e486a33fc1227ec9cbd70439ef1b32ead1faec68" + integrity sha512-EeQXayoQk/uBkI3pdoXfQBXNIUrADq56L3s/DFyM2pJeUDrWmhfIw2UFIGkYPTMSCo8F2JcdcGM32FGJrSnU0Q== + +"@rspack/binding@1.7.11": + version "1.7.11" + resolved "https://registry.yarnpkg.com/@rspack/binding/-/binding-1.7.11.tgz#30f3e87242d9dcb3744edc22752cf24a9ceb4d61" + integrity sha512-2MGdy2s2HimsDT444Bp5XnALzNRxuBNc7y0JzyuqKbHBywd4x2NeXyhWXXoxufaCFu5PBc9Qq9jyfjW2Aeh06Q== + optionalDependencies: + "@rspack/binding-darwin-arm64" "1.7.11" + "@rspack/binding-darwin-x64" "1.7.11" + "@rspack/binding-linux-arm64-gnu" "1.7.11" + "@rspack/binding-linux-arm64-musl" "1.7.11" + "@rspack/binding-linux-x64-gnu" "1.7.11" + "@rspack/binding-linux-x64-musl" "1.7.11" + "@rspack/binding-wasm32-wasi" "1.7.11" + "@rspack/binding-win32-arm64-msvc" "1.7.11" + "@rspack/binding-win32-ia32-msvc" "1.7.11" + "@rspack/binding-win32-x64-msvc" "1.7.11" + +"@rspack/core@^1.4.11": + version "1.7.11" + resolved "https://registry.yarnpkg.com/@rspack/core/-/core-1.7.11.tgz#8d7d77db3b71332afd22a9c90904fe18a6832e2c" + integrity sha512-rsD9b+Khmot5DwCMiB3cqTQo53ioPG3M/A7BySu8+0+RS7GCxKm+Z+mtsjtG/vsu4Tn2tcqCdZtA3pgLoJB+ew== + dependencies: + "@module-federation/runtime-tools" "0.22.0" + "@rspack/binding" "1.7.11" + "@rspack/lite-tapable" "1.1.0" + +"@rspack/dev-server@^1.1.4": + version "1.2.1" + resolved "https://registry.yarnpkg.com/@rspack/dev-server/-/dev-server-1.2.1.tgz#008425971eeb4b4cf063d934151f5e4f9fbbbcec" + integrity sha512-e/ARvskYn2Qdd02qLvc0i6H9BnOmzP0xGHS2XCr7GZ3t2k5uC5ZlLkeN1iEebU0FkAW+6ot89NahFo3nupKuww== + dependencies: + "@types/bonjour" "^3.5.13" + "@types/connect-history-api-fallback" "^1.5.4" + "@types/express" "^4.17.25" + "@types/express-serve-static-core" "^4.17.21" + "@types/serve-index" "^1.9.4" + "@types/serve-static" "^1.15.5" + "@types/sockjs" "^0.3.36" + "@types/ws" "^8.5.10" + ansi-html-community "^0.0.8" + bonjour-service "^1.2.1" + chokidar "^3.6.0" + colorette "^2.0.10" + compression "^1.8.1" + connect-history-api-fallback "^2.0.0" + express "^4.22.1" + graceful-fs "^4.2.6" + http-proxy-middleware "^2.0.9" + ipaddr.js "^2.1.0" + launch-editor "^2.6.1" + open "^10.0.3" + p-retry "^6.2.0" + schema-utils "^4.2.0" + selfsigned "^2.4.1" + serve-index "^1.9.1" + sockjs "^0.3.24" + spdy "^4.0.2" + webpack-dev-middleware "^7.4.2" + ws "^8.18.0" + +"@rspack/lite-tapable@1.1.0", "@rspack/lite-tapable@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@rspack/lite-tapable/-/lite-tapable-1.1.0.tgz#3cfdafeed01078e116bd4f191b684c8b484de425" + integrity sha512-E2B0JhYFmVAwdDiG14+DW0Di4Ze4Jg10Pc4/lILUrd5DRCaklduz2OvJ5HYQ6G+hd+WTzqQb3QnDNfK4yvAFYw== + +"@rspack/plugin-react-refresh@^1.4.3": + version "1.6.2" + resolved "https://registry.yarnpkg.com/@rspack/plugin-react-refresh/-/plugin-react-refresh-1.6.2.tgz#bb50a6e3d992cc188db1302dacd899fcd690ebf9" + integrity sha512-k+/VrfTNgo+KirjI6V+8CWRj6y+DH9jOUWv8JorYY4vKf/9xfnZ8xHzuB4iqCwTtoZl9YnxOaOuoyjJipc2tiQ== + dependencies: + error-stack-parser "^2.1.4" + +"@rtsao/scc@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@rtsao/scc/-/scc-1.1.0.tgz#927dd2fae9bc3361403ac2c7a00c32ddce9ad7e8" + integrity sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g== "@sagold/json-pointer@^5.1.2": version "5.1.2" @@ -8024,55 +10241,36 @@ "@sagold/json-pointer" "^5.1.2" ebnf "^1.9.1" -"@sigstore/bundle@^1.1.0": - version "1.1.0" - resolved "https://registry.npmmirror.com/@sigstore/bundle/-/bundle-1.1.0.tgz#17f8d813b09348b16eeed66a8cf1c3d6bd3d04f1" - integrity sha512-PFutXEy0SmQxYI4texPw3dd2KewuNqv7OuK1ZFtY2fM754yhvG2KdgwIhRnoEE2uHdtdGNQ8s0lb94dW9sELog== - dependencies: - "@sigstore/protobuf-specs" "^0.2.0" - -"@sigstore/protobuf-specs@^0.2.0": - version "0.2.1" - resolved "https://registry.npmmirror.com/@sigstore/protobuf-specs/-/protobuf-specs-0.2.1.tgz#be9ef4f3c38052c43bd399d3f792c97ff9e2277b" - integrity sha512-XTWVxnWJu+c1oCshMLwnKvz8ZQJJDVOlciMfgpJBQbThVjKTCG8dwyhgLngBD2KN0ap9F/gOV8rFDEx8uh7R2A== - -"@sigstore/sign@^1.0.0": - version "1.0.0" - resolved "https://registry.npmmirror.com/@sigstore/sign/-/sign-1.0.0.tgz#6b08ebc2f6c92aa5acb07a49784cb6738796f7b4" - integrity sha512-INxFVNQteLtcfGmcoldzV6Je0sbbfh9I16DM4yJPw3j5+TFP8X6uIiA18mvpEa9yyeycAKgPmOA3X9hVdVTPUA== - dependencies: - "@sigstore/bundle" "^1.1.0" - "@sigstore/protobuf-specs" "^0.2.0" - make-fetch-happen "^11.0.1" - -"@sigstore/tuf@^1.0.3": - version "1.0.3" - resolved "https://registry.npmmirror.com/@sigstore/tuf/-/tuf-1.0.3.tgz#2a65986772ede996485728f027b0514c0b70b160" - integrity sha512-2bRovzs0nJZFlCN3rXirE4gwxCn97JNjMmwpecqlbgV9WcxX7WRuIrgzx/X7Ib7MYRbyUTpBYE0s2x6AmZXnlg== - dependencies: - "@sigstore/protobuf-specs" "^0.2.0" - tuf-js "^1.1.7" +"@scarf/scarf@=1.4.0": + version "1.4.0" + resolved "https://registry.yarnpkg.com/@scarf/scarf/-/scarf-1.4.0.tgz#3bbb984085dbd6d982494538b523be1ce6562972" + integrity sha512-xxeapPiUXdZAE3che6f3xogoJPeZgig6omHEy1rIY5WVsB3H2BHNnZH+gHG6x91SCWyQCzWGsuL2Hh3ClO5/qQ== "@sinclair/typebox@^0.27.8": version "0.27.8" resolved "https://registry.npmmirror.com/@sinclair/typebox/-/typebox-0.27.8.tgz#6667fac16c436b5434a387a34dedb013198f6e6e" integrity sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA== -"@sindresorhus/is@^4.0.0": +"@sinclair/typebox@^0.34.0": + version "0.34.49" + resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.34.49.tgz#4f1369234f2ecf693866476c3b2e1b54d2a9d68e" + integrity sha512-brySQQs7Jtn0joV8Xh9ZV/hZb9Ozb0pmazDIASBkYKCjXrXU3mpcFahmK/z4YDhGkQvP9mWJbVyahdtU5wQA+A== + +"@sindresorhus/is@^4.6.0": version "4.6.0" - resolved "https://registry.npmmirror.com/@sindresorhus/is/-/is-4.6.0.tgz#3c7c9c46e678feefe7a2e5bb609d3dbd665ffb3f" + resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-4.6.0.tgz#3c7c9c46e678feefe7a2e5bb609d3dbd665ffb3f" integrity sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw== "@sinonjs/commons@^3.0.0": version "3.0.1" - resolved "https://registry.npmmirror.com/@sinonjs/commons/-/commons-3.0.1.tgz#1029357e44ca901a615585f6d27738dbc89084cd" + resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-3.0.1.tgz#1029357e44ca901a615585f6d27738dbc89084cd" integrity sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ== dependencies: type-detect "4.0.8" "@sinonjs/fake-timers@^10.0.2": version "10.3.0" - resolved "https://registry.npmmirror.com/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz#55fdff1ecab9f354019129daf4df0dd4d923ea66" + resolved "https://registry.yarnpkg.com/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz#55fdff1ecab9f354019129daf4df0dd4d923ea66" integrity sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA== dependencies: "@sinonjs/commons" "^3.0.0" @@ -8106,8 +10304,16 @@ resolved "https://registry.npmmirror.com/@smithy/chunked-blob-reader-native/-/chunked-blob-reader-native-2.1.1.tgz#6b98479c8f6ea94832dd6a6e5ca78969a44eafe1" integrity sha512-zNW+43dltfNMUrBEYLMWgI8lQr0uhtTcUyxkgC9EP4j17WREzgSFMPUFVrVV6Rc2+QtWERYjb4tzZnQGa7R9fQ== dependencies: - "@smithy/util-base64" "^2.1.1" - tslib "^2.5.0" + "@smithy/util-base64" "^2.1.1" + tslib "^2.5.0" + +"@smithy/chunked-blob-reader-native@^4.2.3": + version "4.2.3" + resolved "https://registry.yarnpkg.com/@smithy/chunked-blob-reader-native/-/chunked-blob-reader-native-4.2.3.tgz#9e79a80d8d44798e7ce7a8f968cbbbaf5a40d950" + integrity sha512-jA5k5Udn7Y5717L86h4EIv06wIr3xn8GM1qHRi/Nf31annXcXHJjBKvgztnbn2TxH3xWrPBfgwHsOwZf0UmQWw== + dependencies: + "@smithy/util-base64" "^4.3.2" + tslib "^2.6.2" "@smithy/chunked-blob-reader@^2.1.1": version "2.1.1" @@ -8116,6 +10322,13 @@ dependencies: tslib "^2.5.0" +"@smithy/chunked-blob-reader@^5.2.2": + version "5.2.2" + resolved "https://registry.yarnpkg.com/@smithy/chunked-blob-reader/-/chunked-blob-reader-5.2.2.tgz#3af48e37b10e5afed478bb31d2b7bc03c81d196c" + integrity sha512-St+kVicSyayWQca+I1rGitaOEH6uKgE8IUWoYnnEX26SWdWQcL6LvMSD19Lg+vYHKdT9B2Zuu7rd3i6Wnyb/iw== + dependencies: + tslib "^2.6.2" + "@smithy/config-resolver@^2.1.1": version "2.1.1" resolved "https://registry.npmmirror.com/@smithy/config-resolver/-/config-resolver-2.1.1.tgz#fc6b036084b98fd26a8ff01a5d7eb676e41749c7" @@ -8138,6 +10351,18 @@ "@smithy/util-middleware" "^3.0.1" tslib "^2.6.2" +"@smithy/config-resolver@^4.4.17": + version "4.4.17" + resolved "https://registry.yarnpkg.com/@smithy/config-resolver/-/config-resolver-4.4.17.tgz#5bd7ccf461e126c79072ce84c6b0f3d00b3409bc" + integrity sha512-TzDZcAnhTyAHbXVxWZo7/tEcrIeFq20IBk8So3OLOetWpR8EwY/yEqBMBFaJMeyEiREDq4NfEl+qO3OAUD+vbQ== + dependencies: + "@smithy/node-config-provider" "^4.3.14" + "@smithy/types" "^4.14.1" + "@smithy/util-config-provider" "^4.2.2" + "@smithy/util-endpoints" "^3.4.2" + "@smithy/util-middleware" "^4.2.14" + tslib "^2.6.2" + "@smithy/core@^1.3.1": version "1.3.1" resolved "https://registry.npmmirror.com/@smithy/core/-/core-1.3.1.tgz#ecedc564e68453b02c20db9e8435d59005c066d8" @@ -8166,6 +10391,22 @@ "@smithy/util-middleware" "^3.0.1" tslib "^2.6.2" +"@smithy/core@^3.23.16", "@smithy/core@^3.23.17": + version "3.23.17" + resolved "https://registry.yarnpkg.com/@smithy/core/-/core-3.23.17.tgz#23d02277c8d6d30a1605afd756696265e48ed67e" + integrity sha512-x7BlLbUFL8NWCGjMF9C+1N5cVCxcPa7g6Tv9B4A2luWx3be3oU8hQ96wIwxe/s7OhIzvoJH73HAUSg5JXVlEtQ== + dependencies: + "@smithy/protocol-http" "^5.3.14" + "@smithy/types" "^4.14.1" + "@smithy/url-parser" "^4.2.14" + "@smithy/util-base64" "^4.3.2" + "@smithy/util-body-length-browser" "^4.2.2" + "@smithy/util-middleware" "^4.2.14" + "@smithy/util-stream" "^4.5.25" + "@smithy/util-utf8" "^4.2.2" + "@smithy/uuid" "^1.1.2" + tslib "^2.6.2" + "@smithy/credential-provider-imds@^2.2.1": version "2.2.1" resolved "https://registry.npmmirror.com/@smithy/credential-provider-imds/-/credential-provider-imds-2.2.1.tgz#4805bf5e104718b959cf8699113fa9de6ddeeafa" @@ -8188,6 +10429,17 @@ "@smithy/url-parser" "^3.0.1" tslib "^2.6.2" +"@smithy/credential-provider-imds@^4.2.14": + version "4.2.14" + resolved "https://registry.yarnpkg.com/@smithy/credential-provider-imds/-/credential-provider-imds-4.2.14.tgz#b5dcc198ee240eaf68069e7449bcec29ce279827" + integrity sha512-Au28zBN48ZAoXdooGUHemuVBrkE+Ie6RPmGNIAJsFqj33Vhb6xAgRifUydZ2aY+M+KaMAETAlKk5NC5h1G7wpg== + dependencies: + "@smithy/node-config-provider" "^4.3.14" + "@smithy/property-provider" "^4.2.14" + "@smithy/types" "^4.14.1" + "@smithy/url-parser" "^4.2.14" + tslib "^2.6.2" + "@smithy/eventstream-codec@^1.1.0": version "1.1.0" resolved "https://registry.npmmirror.com/@smithy/eventstream-codec/-/eventstream-codec-1.1.0.tgz#bfe1308ba84ff3db3e79dc1ced8231c52ac0fc36" @@ -8208,6 +10460,16 @@ "@smithy/util-hex-encoding" "^2.1.1" tslib "^2.5.0" +"@smithy/eventstream-codec@^4.2.14": + version "4.2.14" + resolved "https://registry.yarnpkg.com/@smithy/eventstream-codec/-/eventstream-codec-4.2.14.tgz#4963ca27242b80c5b1d11dcd3ea1bee2a3c5f96d" + integrity sha512-erZq0nOIpzfeZdCyzZjdJb4nVSKLUmSkaQUVkRGQTXs30gyUGeKnrYEg+Xe1W5gE3aReS7IgsvANwVPxSzY6Pw== + dependencies: + "@aws-crypto/crc32" "5.2.0" + "@smithy/types" "^4.14.1" + "@smithy/util-hex-encoding" "^4.2.2" + tslib "^2.6.2" + "@smithy/eventstream-serde-browser@^2.1.1": version "2.1.1" resolved "https://registry.npmmirror.com/@smithy/eventstream-serde-browser/-/eventstream-serde-browser-2.1.1.tgz#743a374639e9e2dd858b6fda1fd814eb6c604946" @@ -8217,6 +10479,15 @@ "@smithy/types" "^2.9.1" tslib "^2.5.0" +"@smithy/eventstream-serde-browser@^4.2.14": + version "4.2.14" + resolved "https://registry.yarnpkg.com/@smithy/eventstream-serde-browser/-/eventstream-serde-browser-4.2.14.tgz#b483667ea358975afb2170cd2618b9aa53a0fb29" + integrity sha512-8IelTCtTctWRbb+0Dcy+C0aICh1qa0qWXqgjcXDmMuCvPJRnv26hiDZoAau2ILOniki65mCPKqOQs/BaWvO4CQ== + dependencies: + "@smithy/eventstream-serde-universal" "^4.2.14" + "@smithy/types" "^4.14.1" + tslib "^2.6.2" + "@smithy/eventstream-serde-config-resolver@^2.1.1": version "2.1.1" resolved "https://registry.npmmirror.com/@smithy/eventstream-serde-config-resolver/-/eventstream-serde-config-resolver-2.1.1.tgz#0b84d6f8be0836af7b92455c69f7427e4f01e7a2" @@ -8225,6 +10496,14 @@ "@smithy/types" "^2.9.1" tslib "^2.5.0" +"@smithy/eventstream-serde-config-resolver@^4.3.14": + version "4.3.14" + resolved "https://registry.yarnpkg.com/@smithy/eventstream-serde-config-resolver/-/eventstream-serde-config-resolver-4.3.14.tgz#2eb23acad43414b9bc0b43f34ae9afbd5464e484" + integrity sha512-sqHiHpYRYo3FJlaIxD1J8PhbcmJAm7IuM16mVnwSkCToD7g00IBZzKuiLNMGmftULmEUX6/UAz8/NN5uMP8bVA== + dependencies: + "@smithy/types" "^4.14.1" + tslib "^2.6.2" + "@smithy/eventstream-serde-node@^2.1.1": version "2.1.1" resolved "https://registry.npmmirror.com/@smithy/eventstream-serde-node/-/eventstream-serde-node-2.1.1.tgz#2e1afa27f9c7eb524c1c53621049c5e4e3cea6a5" @@ -8234,6 +10513,15 @@ "@smithy/types" "^2.9.1" tslib "^2.5.0" +"@smithy/eventstream-serde-node@^4.2.14": + version "4.2.14" + resolved "https://registry.yarnpkg.com/@smithy/eventstream-serde-node/-/eventstream-serde-node-4.2.14.tgz#402c2a3b0437b7ac9747090a38a60d3642813490" + integrity sha512-Ht/8BuGlKfFTy0H3+8eEu0vdpwGztCnaLLXtpXNdQqiR7Hj4vFScU3T436vRAjATglOIPjJXronY+1WxxNLSiw== + dependencies: + "@smithy/eventstream-serde-universal" "^4.2.14" + "@smithy/types" "^4.14.1" + tslib "^2.6.2" + "@smithy/eventstream-serde-universal@^2.1.1": version "2.1.1" resolved "https://registry.npmmirror.com/@smithy/eventstream-serde-universal/-/eventstream-serde-universal-2.1.1.tgz#0f5eec9ad033017973a67bafb5549782499488d2" @@ -8243,6 +10531,15 @@ "@smithy/types" "^2.9.1" tslib "^2.5.0" +"@smithy/eventstream-serde-universal@^4.2.14": + version "4.2.14" + resolved "https://registry.yarnpkg.com/@smithy/eventstream-serde-universal/-/eventstream-serde-universal-4.2.14.tgz#1e1d29c111e580a93f3c197139c5ca8c976ec205" + integrity sha512-lWyt4T2XQZUZgK3tQ3Wn0w3XBvZsK/vjTuJl6bXbnGZBHH0ZUSONTYiK9TgjTTzU54xQr3DRFwpjmhp0oLm3gg== + dependencies: + "@smithy/eventstream-codec" "^4.2.14" + "@smithy/types" "^4.14.1" + tslib "^2.6.2" + "@smithy/fetch-http-handler@^2.4.1": version "2.4.1" resolved "https://registry.npmmirror.com/@smithy/fetch-http-handler/-/fetch-http-handler-2.4.1.tgz#b4d73bbc1449f61234077d58c705b843a8587bf0" @@ -8265,6 +10562,17 @@ "@smithy/util-base64" "^3.0.0" tslib "^2.6.2" +"@smithy/fetch-http-handler@^5.3.17": + version "5.3.17" + resolved "https://registry.yarnpkg.com/@smithy/fetch-http-handler/-/fetch-http-handler-5.3.17.tgz#bf13a4b03eb8afe101775fef59a1758f8fb5cd4b" + integrity sha512-bXOvQzaSm6MnmLaWA1elgfQcAtN4UP3vXqV97bHuoOrHQOJiLT3ds6o9eo5bqd0TJfRFpzdGnDQdW3FACiAVdw== + dependencies: + "@smithy/protocol-http" "^5.3.14" + "@smithy/querystring-builder" "^4.2.14" + "@smithy/types" "^4.14.1" + "@smithy/util-base64" "^4.3.2" + tslib "^2.6.2" + "@smithy/hash-blob-browser@^2.1.1": version "2.1.1" resolved "https://registry.npmmirror.com/@smithy/hash-blob-browser/-/hash-blob-browser-2.1.1.tgz#f4571d4e2fbc2cc1869c443850e5409bf541ba25" @@ -8275,6 +10583,16 @@ "@smithy/types" "^2.9.1" tslib "^2.5.0" +"@smithy/hash-blob-browser@^4.2.15": + version "4.2.15" + resolved "https://registry.yarnpkg.com/@smithy/hash-blob-browser/-/hash-blob-browser-4.2.15.tgz#1323f9717cad352b3e18065b738387bb9684f993" + integrity sha512-0PJ4Al3fg2nM4qKrAIxyNcApgqHAXcBkN8FeizOz69z0rb26uZ6lMESYtxegaTlXB5Hj84JfwMPavMrwDMjucA== + dependencies: + "@smithy/chunked-blob-reader" "^5.2.2" + "@smithy/chunked-blob-reader-native" "^4.2.3" + "@smithy/types" "^4.14.1" + tslib "^2.6.2" + "@smithy/hash-node@^2.1.1": version "2.1.1" resolved "https://registry.npmmirror.com/@smithy/hash-node/-/hash-node-2.1.1.tgz#0f8a22d97565ca948724f72267e4d3a2f33740a8" @@ -8295,6 +10613,16 @@ "@smithy/util-utf8" "^3.0.0" tslib "^2.6.2" +"@smithy/hash-node@^4.2.14": + version "4.2.14" + resolved "https://registry.yarnpkg.com/@smithy/hash-node/-/hash-node-4.2.14.tgz#e3ed33dc614e26fff5f043e097750c6931b48592" + integrity sha512-8ZBDY2DD4wr+GGjTpPtiglEsqr0lUP+KHqgZcWczFf6qeZ/YRjMIOoQWVQlmwu7EtxKTd8YXD8lblmYcpBIA1g== + dependencies: + "@smithy/types" "^4.14.1" + "@smithy/util-buffer-from" "^4.2.2" + "@smithy/util-utf8" "^4.2.2" + tslib "^2.6.2" + "@smithy/hash-stream-node@^2.1.1": version "2.1.1" resolved "https://registry.npmmirror.com/@smithy/hash-stream-node/-/hash-stream-node-2.1.1.tgz#d1885a3bf159872cbb8c9d9f1aefc596ea6cf5db" @@ -8304,6 +10632,15 @@ "@smithy/util-utf8" "^2.1.1" tslib "^2.5.0" +"@smithy/hash-stream-node@^4.2.14": + version "4.2.14" + resolved "https://registry.yarnpkg.com/@smithy/hash-stream-node/-/hash-stream-node-4.2.14.tgz#98bc14e79e2be852d04ff6cbfe4b0babe48fb10d" + integrity sha512-tw4GANWkZPb6+BdD4Fgucqzey2+r73Z/GRo9zklsCdwrnxxumUV83ZIaBDdudV4Ylazw3EPTiJZhpX42105ruQ== + dependencies: + "@smithy/types" "^4.14.1" + "@smithy/util-utf8" "^4.2.2" + tslib "^2.6.2" + "@smithy/invalid-dependency@^2.1.1": version "2.1.1" resolved "https://registry.npmmirror.com/@smithy/invalid-dependency/-/invalid-dependency-2.1.1.tgz#bd69fa24dd35e9bc65a160bd86becdf1399e4463" @@ -8320,6 +10657,14 @@ "@smithy/types" "^3.1.0" tslib "^2.6.2" +"@smithy/invalid-dependency@^4.2.14": + version "4.2.14" + resolved "https://registry.yarnpkg.com/@smithy/invalid-dependency/-/invalid-dependency-4.2.14.tgz#a52766f9d4299abcd9d6cd23b5a76f34fc59c7a0" + integrity sha512-c21qJiTSb25xvvOp+H2TNZzPCngrvl5vIPqPB8zQ/DmJF4QWXO19x1dWfMJZ6wZuuWUPPm0gV8C0cU3+ifcWuw== + dependencies: + "@smithy/types" "^4.14.1" + tslib "^2.6.2" + "@smithy/is-array-buffer@^1.1.0": version "1.1.0" resolved "https://registry.npmmirror.com/@smithy/is-array-buffer/-/is-array-buffer-1.1.0.tgz#29948072da2b57575aa9898cda863932e842ab11" @@ -8341,6 +10686,13 @@ dependencies: tslib "^2.6.2" +"@smithy/is-array-buffer@^4.2.2": + version "4.2.2" + resolved "https://registry.yarnpkg.com/@smithy/is-array-buffer/-/is-array-buffer-4.2.2.tgz#c401ce54b12a16529eb1c938a0b6c2247cb763b8" + integrity sha512-n6rQ4N8Jj4YTQO3YFrlgZuwKodf4zUFs7EJIWH86pSCWBaAtAGBFfCM7Wx6D2bBJ2xqFNxGBSrUWswT3M0VJow== + dependencies: + tslib "^2.6.2" + "@smithy/md5-js@^2.1.1": version "2.1.1" resolved "https://registry.npmmirror.com/@smithy/md5-js/-/md5-js-2.1.1.tgz#f414982bc6ab275b80ec517d2e44a779c374ff9c" @@ -8350,6 +10702,15 @@ "@smithy/util-utf8" "^2.1.1" tslib "^2.5.0" +"@smithy/md5-js@^4.2.14": + version "4.2.14" + resolved "https://registry.yarnpkg.com/@smithy/md5-js/-/md5-js-4.2.14.tgz#c066572ec84def147af24e55a402c44d0d7dcd7b" + integrity sha512-V2v0vx+h0iUSNG1Alt+GNBMSLGCrl9iVsdd+Ap67HPM9PN479x12V8LkuMoKImNZxn3MXeuyUjls+/7ZACZghA== + dependencies: + "@smithy/types" "^4.14.1" + "@smithy/util-utf8" "^4.2.2" + tslib "^2.6.2" + "@smithy/middleware-content-length@^2.1.1": version "2.1.1" resolved "https://registry.npmmirror.com/@smithy/middleware-content-length/-/middleware-content-length-2.1.1.tgz#df767de12d594bc5622009fb0fc8343522697d8c" @@ -8368,6 +10729,15 @@ "@smithy/types" "^3.1.0" tslib "^2.6.2" +"@smithy/middleware-content-length@^4.2.14": + version "4.2.14" + resolved "https://registry.yarnpkg.com/@smithy/middleware-content-length/-/middleware-content-length-4.2.14.tgz#d8b17f94c4d8f9c3b7992f1db84d3299c83efe78" + integrity sha512-xhHq7fX4/3lv5NHxLUk3OeEvl0xZ+Ek3qIbWaCL4f9JwgDZEclPBElljaZCAItdGPQl/kSM4LPMOpy1MYgprpw== + dependencies: + "@smithy/protocol-http" "^5.3.14" + "@smithy/types" "^4.14.1" + tslib "^2.6.2" + "@smithy/middleware-endpoint@^2.4.1": version "2.4.1" resolved "https://registry.npmmirror.com/@smithy/middleware-endpoint/-/middleware-endpoint-2.4.1.tgz#9e500df4d944741808e92018ccd2e948b598a49f" @@ -8394,6 +10764,20 @@ "@smithy/util-middleware" "^3.0.1" tslib "^2.6.2" +"@smithy/middleware-endpoint@^4.4.31", "@smithy/middleware-endpoint@^4.4.32": + version "4.4.32" + resolved "https://registry.yarnpkg.com/@smithy/middleware-endpoint/-/middleware-endpoint-4.4.32.tgz#4c7dcf06b637b40dfcc53d3b18d1a784a747c530" + integrity sha512-ZZkgyjnJppiZbIm6Qbx92pbXYi1uzenIvGhBSCDlc7NwuAkiqSgS75j1czAD25ZLs2FjMjYy1q7gyRVWG6JA0Q== + dependencies: + "@smithy/core" "^3.23.17" + "@smithy/middleware-serde" "^4.2.20" + "@smithy/node-config-provider" "^4.3.14" + "@smithy/shared-ini-file-loader" "^4.4.9" + "@smithy/types" "^4.14.1" + "@smithy/url-parser" "^4.2.14" + "@smithy/util-middleware" "^4.2.14" + tslib "^2.6.2" + "@smithy/middleware-retry@^2.1.1": version "2.1.1" resolved "https://registry.npmmirror.com/@smithy/middleware-retry/-/middleware-retry-2.1.1.tgz#ddc749dd927f136714f76ca5a52dcfb0993ee162" @@ -8424,6 +10808,38 @@ tslib "^2.6.2" uuid "^9.0.1" +"@smithy/middleware-retry@^4.5.4": + version "4.5.5" + resolved "https://registry.yarnpkg.com/@smithy/middleware-retry/-/middleware-retry-4.5.5.tgz#6b3f9dae55f941314d9fca790aae28af55699977" + integrity sha512-wnYOpB5vATFKWrY2Z9Alb0KhjZI6AbzU6Fbz3Hq2GnURdRYWB4q+qWivQtSTwXcmWUA3MZ6krfwL6Cq5MAbxsA== + dependencies: + "@smithy/core" "^3.23.17" + "@smithy/node-config-provider" "^4.3.14" + "@smithy/protocol-http" "^5.3.14" + "@smithy/service-error-classification" "^4.3.0" + "@smithy/smithy-client" "^4.12.13" + "@smithy/types" "^4.14.1" + "@smithy/util-middleware" "^4.2.14" + "@smithy/util-retry" "^4.3.4" + "@smithy/uuid" "^1.1.2" + tslib "^2.6.2" + +"@smithy/middleware-retry@^4.5.7": + version "4.5.7" + resolved "https://registry.yarnpkg.com/@smithy/middleware-retry/-/middleware-retry-4.5.7.tgz#a2da0c472d631ee408ff566186c99571b3efb70b" + integrity sha512-bRt6ZImqVSeTk39Nm81K20ObIiAZ3WefY7G6+iz/0tZjs4dgRRjvRX2sgsH+zi6iDCRR/aQvQofLKxxz4rPBZg== + dependencies: + "@smithy/core" "^3.23.17" + "@smithy/node-config-provider" "^4.3.14" + "@smithy/protocol-http" "^5.3.14" + "@smithy/service-error-classification" "^4.3.1" + "@smithy/smithy-client" "^4.12.13" + "@smithy/types" "^4.14.1" + "@smithy/util-middleware" "^4.2.14" + "@smithy/util-retry" "^4.3.6" + "@smithy/uuid" "^1.1.2" + tslib "^2.6.2" + "@smithy/middleware-serde@^2.1.1": version "2.1.1" resolved "https://registry.npmmirror.com/@smithy/middleware-serde/-/middleware-serde-2.1.1.tgz#2c5750f76e276a5249720f6c3c24fac29abbee16" @@ -8440,6 +10856,16 @@ "@smithy/types" "^3.1.0" tslib "^2.6.2" +"@smithy/middleware-serde@^4.2.19", "@smithy/middleware-serde@^4.2.20": + version "4.2.20" + resolved "https://registry.yarnpkg.com/@smithy/middleware-serde/-/middleware-serde-4.2.20.tgz#76862c8f9b39b08501539440a2e6bca7a77de508" + integrity sha512-Lx9JMO9vArPtiChE3wbEZ5akMIDQpWQtlu90lhACQmNOXcGXRbaDywMHDzuDZ2OkZzP+9wQfZi3YJT9F67zTQQ== + dependencies: + "@smithy/core" "^3.23.17" + "@smithy/protocol-http" "^5.3.14" + "@smithy/types" "^4.14.1" + tslib "^2.6.2" + "@smithy/middleware-stack@^2.1.1": version "2.1.1" resolved "https://registry.npmmirror.com/@smithy/middleware-stack/-/middleware-stack-2.1.1.tgz#67f992dc36e8a6861f881f80a81c1c30956a0396" @@ -8456,6 +10882,14 @@ "@smithy/types" "^3.1.0" tslib "^2.6.2" +"@smithy/middleware-stack@^4.2.14": + version "4.2.14" + resolved "https://registry.yarnpkg.com/@smithy/middleware-stack/-/middleware-stack-4.2.14.tgz#23a4cf643ccdbde52c8780fe5cc080611efef1c7" + integrity sha512-2dvkUKLuFdKsCRmOE4Mn63co0Djtsm+JMh0bYZQupN1pJwMeE8FmQmRLLzzEMN0dnNi7CDCYYH8F0EVwWiPBeA== + dependencies: + "@smithy/types" "^4.14.1" + tslib "^2.6.2" + "@smithy/node-config-provider@^2.2.1": version "2.2.1" resolved "https://registry.npmmirror.com/@smithy/node-config-provider/-/node-config-provider-2.2.1.tgz#c440c7948d58d72f0e212aa1967aa12f0729defd" @@ -8476,7 +10910,17 @@ "@smithy/types" "^3.1.0" tslib "^2.6.2" -"@smithy/node-http-handler@^2.1.7", "@smithy/node-http-handler@^2.3.1": +"@smithy/node-config-provider@^4.3.14": + version "4.3.14" + resolved "https://registry.yarnpkg.com/@smithy/node-config-provider/-/node-config-provider-4.3.14.tgz#8ca13b86b6123cbb0425d669bd847fcd333ca4bd" + integrity sha512-S+gFjyo/weSVL0P1b9Ts8C/CwIfNCgUPikk3sl6QVsfE/uUuO+QsF+NsE/JkpvWqqyz1wg7HFdiaZuj5CoBMRg== + dependencies: + "@smithy/property-provider" "^4.2.14" + "@smithy/shared-ini-file-loader" "^4.4.9" + "@smithy/types" "^4.14.1" + tslib "^2.6.2" + +"@smithy/node-http-handler@^2.3.1": version "2.3.1" resolved "https://registry.npmmirror.com/@smithy/node-http-handler/-/node-http-handler-2.3.1.tgz#77d23279ff0a12cbe7cde93c5e7c0e86ad56dd20" integrity sha512-gLA8qK2nL9J0Rk/WEZSvgin4AppvuCYRYg61dcUo/uKxvMZsMInL5I5ZdJTogOvdfVug3N2dgI5ffcUfS4S9PA== @@ -8498,6 +10942,16 @@ "@smithy/types" "^3.1.0" tslib "^2.6.2" +"@smithy/node-http-handler@^4.6.0", "@smithy/node-http-handler@^4.6.1": + version "4.6.1" + resolved "https://registry.yarnpkg.com/@smithy/node-http-handler/-/node-http-handler-4.6.1.tgz#cb25b9445e46294a6f0dfb1566dbf2a1a19510af" + integrity sha512-iB+orM4x3xrr57X3YaXazfKnntl0LHlZB1kcXSGzMV1Tt0+YwEjGlbjk/44qEGtBzXAz6yFDzkYTKSV6Pj2HUg== + dependencies: + "@smithy/protocol-http" "^5.3.14" + "@smithy/querystring-builder" "^4.2.14" + "@smithy/types" "^4.14.1" + tslib "^2.6.2" + "@smithy/property-provider@^2.1.1": version "2.1.1" resolved "https://registry.npmmirror.com/@smithy/property-provider/-/property-provider-2.1.1.tgz#0f7ffc5e43829eaca5b2b5aae8554807a52b30f3" @@ -8514,6 +10968,14 @@ "@smithy/types" "^3.1.0" tslib "^2.6.2" +"@smithy/property-provider@^4.2.14": + version "4.2.14" + resolved "https://registry.yarnpkg.com/@smithy/property-provider/-/property-provider-4.2.14.tgz#8072418672d8c29d3f9ef35e452437ba2c59100a" + integrity sha512-WuM31CgfsnQ/10i7NYr0PyxqknD72Y5uMfUMVSniPjbEPceiTErb4eIqJQ+pdxNEAUEWrewrGjIRjVbVHsxZiQ== + dependencies: + "@smithy/types" "^4.14.1" + tslib "^2.6.2" + "@smithy/protocol-http@^3.1.1": version "3.1.1" resolved "https://registry.npmmirror.com/@smithy/protocol-http/-/protocol-http-3.1.1.tgz#eee522d0ed964a72b735d64925e07bcfb7a7806f" @@ -8530,6 +10992,22 @@ "@smithy/types" "^3.1.0" tslib "^2.6.2" +"@smithy/protocol-http@^4.1.8": + version "4.1.8" + resolved "https://registry.yarnpkg.com/@smithy/protocol-http/-/protocol-http-4.1.8.tgz#0461758671335f65e8ff3fc0885ab7ed253819c9" + integrity sha512-hmgIAVyxw1LySOwkgMIUN0kjN8TG9Nc85LJeEmEE/cNEe2rkHDUWhnJf2gxcSRFLWsyqWsrZGw40ROjUogg+Iw== + dependencies: + "@smithy/types" "^3.7.2" + tslib "^2.6.2" + +"@smithy/protocol-http@^5.3.14": + version "5.3.14" + resolved "https://registry.yarnpkg.com/@smithy/protocol-http/-/protocol-http-5.3.14.tgz#ed1e65cdb0fffb7fd00dce997c04baa236f180cc" + integrity sha512-dN5F8kHx8RNU0r+pCwNmFZyz6ChjMkzShy/zup6MtkRmmix4vZzJdW+di7x//b1LiynIev88FM18ie+wwPcQtQ== + dependencies: + "@smithy/types" "^4.14.1" + tslib "^2.6.2" + "@smithy/querystring-builder@^2.1.1": version "2.1.1" resolved "https://registry.npmmirror.com/@smithy/querystring-builder/-/querystring-builder-2.1.1.tgz#b9693448ad3f8e0767d84cf5cae29f35514591fb" @@ -8548,6 +11026,15 @@ "@smithy/util-uri-escape" "^3.0.0" tslib "^2.6.2" +"@smithy/querystring-builder@^4.2.14": + version "4.2.14" + resolved "https://registry.yarnpkg.com/@smithy/querystring-builder/-/querystring-builder-4.2.14.tgz#102429e0fb004108babf219edfcf6f111e66d782" + integrity sha512-XYA5Z0IqTeF+5XDdh4BBmSA0HvbgVZIyv4cmOoUheDNR57K1HgBp9ukUMx3Cr3XpDHHpLBnexPE3LAtDsZkj2A== + dependencies: + "@smithy/types" "^4.14.1" + "@smithy/util-uri-escape" "^4.2.2" + tslib "^2.6.2" + "@smithy/querystring-parser@^2.1.1": version "2.1.1" resolved "https://registry.npmmirror.com/@smithy/querystring-parser/-/querystring-parser-2.1.1.tgz#a4282a66cc56844317dbff824e573f469bbfc032" @@ -8564,6 +11051,14 @@ "@smithy/types" "^3.1.0" tslib "^2.6.2" +"@smithy/querystring-parser@^4.2.14": + version "4.2.14" + resolved "https://registry.yarnpkg.com/@smithy/querystring-parser/-/querystring-parser-4.2.14.tgz#c479ba1f346656b9f8ce46d9a91c229e4e50420f" + integrity sha512-hr+YyqBD23GVvRxGGrcc/oOeNlK3PzT5Fu4dzrDXxzS1LpFiuL2PQQqKPs87M79aW7ziMs+nvB3qdw77SqE7Lw== + dependencies: + "@smithy/types" "^4.14.1" + tslib "^2.6.2" + "@smithy/service-error-classification@^2.1.1": version "2.1.1" resolved "https://registry.npmmirror.com/@smithy/service-error-classification/-/service-error-classification-2.1.1.tgz#dd24e1ec529ae9ec8e87d8b15f0fc8f7e17f3d02" @@ -8578,6 +11073,20 @@ dependencies: "@smithy/types" "^3.1.0" +"@smithy/service-error-classification@^4.3.0": + version "4.3.0" + resolved "https://registry.yarnpkg.com/@smithy/service-error-classification/-/service-error-classification-4.3.0.tgz#7b05485cd834f841c56b382d67ac3c9b54051b3f" + integrity sha512-9jKsBYQRPR0xBLgc2415RsA5PIcP2sis4oBdN9s0D13cg1B1284mNTjx9Yc+BEERXzuPm5ObktI96OxsKh8E9A== + dependencies: + "@smithy/types" "^4.14.1" + +"@smithy/service-error-classification@^4.3.1": + version "4.3.1" + resolved "https://registry.yarnpkg.com/@smithy/service-error-classification/-/service-error-classification-4.3.1.tgz#5303d4fc3c3eea0f79c3b88cb4436498a31e9f12" + integrity sha512-aUQuDGh760ts/8MU+APjIZhlLPKhIIfqyzZaJikLEIMrdxFvxuLYD0WxWzaYWpmLbQlXDe9p7EWM3HsBe0K6Gw== + dependencies: + "@smithy/types" "^4.14.1" + "@smithy/shared-ini-file-loader@^2.3.1": version "2.3.1" resolved "https://registry.npmmirror.com/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-2.3.1.tgz#a2e28b4d85f8a8262a84403fa2b74a086b3a7703" @@ -8594,6 +11103,14 @@ "@smithy/types" "^3.1.0" tslib "^2.6.2" +"@smithy/shared-ini-file-loader@^4.4.9": + version "4.4.9" + resolved "https://registry.yarnpkg.com/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-4.4.9.tgz#fb3719b401d101a65a682380b40efd3a116162f0" + integrity sha512-495/V2I15SHgedSJoDPD23JuSfKAp726ZI1V0wtjB07Wh7q/0tri/0e0DLefZCHgxZonrGKt/OCTpAtP1wE1kQ== + dependencies: + "@smithy/types" "^4.14.1" + tslib "^2.6.2" + "@smithy/signature-v4@^1.0.1": version "1.1.0" resolved "https://registry.npmmirror.com/@smithy/signature-v4/-/signature-v4-1.1.0.tgz#e85309995c2475d39598a4f56e68b7ed856bdfa6" @@ -8635,6 +11152,34 @@ "@smithy/util-utf8" "^3.0.0" tslib "^2.6.2" +"@smithy/signature-v4@^4.1.0": + version "4.2.4" + resolved "https://registry.yarnpkg.com/@smithy/signature-v4/-/signature-v4-4.2.4.tgz#3501d3d09fd82768867bfc00a7be4bad62f62f4d" + integrity sha512-5JWeMQYg81TgU4cG+OexAWdvDTs5JDdbEZx+Qr1iPbvo91QFGzjy0IkXAKaXUHqmKUJgSHK0ZxnCkgZpzkeNTA== + dependencies: + "@smithy/is-array-buffer" "^3.0.0" + "@smithy/protocol-http" "^4.1.8" + "@smithy/types" "^3.7.2" + "@smithy/util-hex-encoding" "^3.0.0" + "@smithy/util-middleware" "^3.0.11" + "@smithy/util-uri-escape" "^3.0.0" + "@smithy/util-utf8" "^3.0.0" + tslib "^2.6.2" + +"@smithy/signature-v4@^5.3.14": + version "5.3.14" + resolved "https://registry.yarnpkg.com/@smithy/signature-v4/-/signature-v4-5.3.14.tgz#2b28c7d190301a67a520227a2343d1e7bb1c6d22" + integrity sha512-1D9Y/nmlVjCeSivCbhZ7hgEpmHyY1h0GvpSZt3l0xcD9JjmjVC1CHOozS6+Gh+/ldMH8JuJ6cujObQqfayAVFA== + dependencies: + "@smithy/is-array-buffer" "^4.2.2" + "@smithy/protocol-http" "^5.3.14" + "@smithy/types" "^4.14.1" + "@smithy/util-hex-encoding" "^4.2.2" + "@smithy/util-middleware" "^4.2.14" + "@smithy/util-uri-escape" "^4.2.2" + "@smithy/util-utf8" "^4.2.2" + tslib "^2.6.2" + "@smithy/smithy-client@^2.3.1": version "2.3.1" resolved "https://registry.npmmirror.com/@smithy/smithy-client/-/smithy-client-2.3.1.tgz#0c3a4a0d3935c7ad2240cc23181f276705212b1f" @@ -8659,6 +11204,19 @@ "@smithy/util-stream" "^3.0.2" tslib "^2.6.2" +"@smithy/smithy-client@^4.12.12", "@smithy/smithy-client@^4.12.13": + version "4.12.13" + resolved "https://registry.yarnpkg.com/@smithy/smithy-client/-/smithy-client-4.12.13.tgz#dec184a1d2d5027370ae1582bddbdbc068c97da5" + integrity sha512-y/Pcj1V9+qG98gyu1gvftHB7rDpdh+7kIBIggs55yGm3JdtBV8GT8IFF3a1qxZ79QnaJHX9GXzvBG6tAd+czJA== + dependencies: + "@smithy/core" "^3.23.17" + "@smithy/middleware-endpoint" "^4.4.32" + "@smithy/middleware-stack" "^4.2.14" + "@smithy/protocol-http" "^5.3.14" + "@smithy/types" "^4.14.1" + "@smithy/util-stream" "^4.5.25" + tslib "^2.6.2" + "@smithy/types@^1.2.0": version "1.2.0" resolved "https://registry.npmmirror.com/@smithy/types/-/types-1.2.0.tgz#9dc65767b0ee3d6681704fcc67665d6fc9b6a34e" @@ -8680,6 +11238,20 @@ dependencies: tslib "^2.6.2" +"@smithy/types@^3.7.2": + version "3.7.2" + resolved "https://registry.yarnpkg.com/@smithy/types/-/types-3.7.2.tgz#05cb14840ada6f966de1bf9a9c7dd86027343e10" + integrity sha512-bNwBYYmN8Eh9RyjS1p2gW6MIhSO2rl7X9QeLM8iTdcGRP+eDiIWDt66c9IysCc22gefKszZv+ubV9qZc7hdESg== + dependencies: + tslib "^2.6.2" + +"@smithy/types@^4.14.1": + version "4.14.1" + resolved "https://registry.yarnpkg.com/@smithy/types/-/types-4.14.1.tgz#aba92b4cdb406f2a2b062e82f1e3728d809a7c23" + integrity sha512-59b5HtSVrVR/eYNei3BUj3DCPKD/G7EtDDe7OEJE7i7FtQFugYo6MxbotS8mVJkLNVf8gYaAlEBwwtJ9HzhWSg== + dependencies: + tslib "^2.6.2" + "@smithy/url-parser@^2.1.1": version "2.1.1" resolved "https://registry.npmmirror.com/@smithy/url-parser/-/url-parser-2.1.1.tgz#a30de227b6734650d740b6dff74d488b874e85e3" @@ -8698,6 +11270,15 @@ "@smithy/types" "^3.1.0" tslib "^2.6.2" +"@smithy/url-parser@^4.2.14": + version "4.2.14" + resolved "https://registry.yarnpkg.com/@smithy/url-parser/-/url-parser-4.2.14.tgz#349a442a62eb5907533f204b73a010618198b073" + integrity sha512-p06BiBigJ8bTA3MgnOfCtDUWnAMY0YfedO/GRpmc7p+wg3KW8vbXy1xwSu5ASy0wV7rRYtlfZOIKH4XqfhjSQQ== + dependencies: + "@smithy/querystring-parser" "^4.2.14" + "@smithy/types" "^4.14.1" + tslib "^2.6.2" + "@smithy/util-base64@^2.1.1": version "2.1.1" resolved "https://registry.npmmirror.com/@smithy/util-base64/-/util-base64-2.1.1.tgz#af729085cc9d92ebd54a5d2c5d0aa5a0c31f83bf" @@ -8715,6 +11296,15 @@ "@smithy/util-utf8" "^3.0.0" tslib "^2.6.2" +"@smithy/util-base64@^4.3.2": + version "4.3.2" + resolved "https://registry.yarnpkg.com/@smithy/util-base64/-/util-base64-4.3.2.tgz#be02bcb29a87be744356467ea25ffa413e695cea" + integrity sha512-XRH6b0H/5A3SgblmMa5ErXQ2XKhfbQB+Fm/oyLZ2O2kCUrwgg55bU0RekmzAhuwOjA9qdN5VU2BprOvGGUkOOQ== + dependencies: + "@smithy/util-buffer-from" "^4.2.2" + "@smithy/util-utf8" "^4.2.2" + tslib "^2.6.2" + "@smithy/util-body-length-browser@^2.1.1": version "2.1.1" resolved "https://registry.npmmirror.com/@smithy/util-body-length-browser/-/util-body-length-browser-2.1.1.tgz#1fc77072768013ae646415eedb9833cd252d055d" @@ -8729,6 +11319,13 @@ dependencies: tslib "^2.6.2" +"@smithy/util-body-length-browser@^4.2.2": + version "4.2.2" + resolved "https://registry.yarnpkg.com/@smithy/util-body-length-browser/-/util-body-length-browser-4.2.2.tgz#c4404277d22039872abdb80e7800f9a63f263862" + integrity sha512-JKCrLNOup3OOgmzeaKQwi4ZCTWlYR5H4Gm1r2uTMVBXoemo1UEghk5vtMi1xSu2ymgKVGW631e2fp9/R610ZjQ== + dependencies: + tslib "^2.6.2" + "@smithy/util-body-length-node@^2.2.1": version "2.2.1" resolved "https://registry.npmmirror.com/@smithy/util-body-length-node/-/util-body-length-node-2.2.1.tgz#a6f5c9911f1c3e23efb340d5ce7a590b62f2056e" @@ -8743,6 +11340,13 @@ dependencies: tslib "^2.6.2" +"@smithy/util-body-length-node@^4.2.3": + version "4.2.3" + resolved "https://registry.yarnpkg.com/@smithy/util-body-length-node/-/util-body-length-node-4.2.3.tgz#f923ca530defb86a9ac3ca2d3066bcca7b304fbc" + integrity sha512-ZkJGvqBzMHVHE7r/hcuCxlTY8pQr1kMtdsVPs7ex4mMU+EAbcXppfo5NmyxMYi2XU49eqaz56j2gsk4dHHPG/g== + dependencies: + tslib "^2.6.2" + "@smithy/util-buffer-from@^1.1.0": version "1.1.0" resolved "https://registry.npmmirror.com/@smithy/util-buffer-from/-/util-buffer-from-1.1.0.tgz#a000bd9f95c0e8d5b0edb0112f2a586daa5bed49" @@ -8767,6 +11371,14 @@ "@smithy/is-array-buffer" "^3.0.0" tslib "^2.6.2" +"@smithy/util-buffer-from@^4.2.2": + version "4.2.2" + resolved "https://registry.yarnpkg.com/@smithy/util-buffer-from/-/util-buffer-from-4.2.2.tgz#2c6b7857757dfd88f6cd2d36016179a40ccc913b" + integrity sha512-FDXD7cvUoFWwN6vtQfEta540Y/YBe5JneK3SoZg9bThSoOAC/eGeYEua6RkBgKjGa/sz6Y+DuBZj3+YEY21y4Q== + dependencies: + "@smithy/is-array-buffer" "^4.2.2" + tslib "^2.6.2" + "@smithy/util-config-provider@^2.2.1": version "2.2.1" resolved "https://registry.npmmirror.com/@smithy/util-config-provider/-/util-config-provider-2.2.1.tgz#aea0a80236d6cedaee60473802899cff4a8cc0ba" @@ -8781,6 +11393,13 @@ dependencies: tslib "^2.6.2" +"@smithy/util-config-provider@^4.2.2": + version "4.2.2" + resolved "https://registry.yarnpkg.com/@smithy/util-config-provider/-/util-config-provider-4.2.2.tgz#52ebf9d8942838d18bc5fb1520de1e8699d7aad6" + integrity sha512-dWU03V3XUprJwaUIFVv4iOnS1FC9HnMHDfUrlNDSh4315v0cWyaIErP8KiqGVbf5z+JupoVpNM7ZB3jFiTejvQ== + dependencies: + tslib "^2.6.2" + "@smithy/util-defaults-mode-browser@^2.1.1": version "2.1.1" resolved "https://registry.npmmirror.com/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-2.1.1.tgz#be9ac82acee6ec4821b610e7187b0e147f0ba8ff" @@ -8803,6 +11422,16 @@ bowser "^2.11.0" tslib "^2.6.2" +"@smithy/util-defaults-mode-browser@^4.3.48", "@smithy/util-defaults-mode-browser@^4.3.49": + version "4.3.49" + resolved "https://registry.yarnpkg.com/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-4.3.49.tgz#926ce84bf65e56307f25cce7a13b427d33442939" + integrity sha512-a5bNrdiONYB/qE2BuKegvUMd/+ZDwdg4vsNuuSzYE8qs2EYAdK9CynL+Rzn29PbPiUqoz/cbpRbcLzD5lEevHw== + dependencies: + "@smithy/property-provider" "^4.2.14" + "@smithy/smithy-client" "^4.12.13" + "@smithy/types" "^4.14.1" + tslib "^2.6.2" + "@smithy/util-defaults-mode-node@^2.1.1": version "2.1.1" resolved "https://registry.npmmirror.com/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-2.1.1.tgz#0910ee00aac3e8a08aac3e6ae8794e52f3efef02" @@ -8829,6 +11458,19 @@ "@smithy/types" "^3.1.0" tslib "^2.6.2" +"@smithy/util-defaults-mode-node@^4.2.53", "@smithy/util-defaults-mode-node@^4.2.54": + version "4.2.54" + resolved "https://registry.yarnpkg.com/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-4.2.54.tgz#32c4ea9f8a8c74ef9fe0ca5e3d6a10df0327f87e" + integrity sha512-g1cvrJvOnzeJgEdf7AE4luI7gp6L8weE0y9a9wQUSGtjb8QRHDbCJYuE4Sy0SD9N8RrnNPFsPltAz/OSoBR9Zw== + dependencies: + "@smithy/config-resolver" "^4.4.17" + "@smithy/credential-provider-imds" "^4.2.14" + "@smithy/node-config-provider" "^4.3.14" + "@smithy/property-provider" "^4.2.14" + "@smithy/smithy-client" "^4.12.13" + "@smithy/types" "^4.14.1" + tslib "^2.6.2" + "@smithy/util-endpoints@^1.1.1": version "1.1.1" resolved "https://registry.npmmirror.com/@smithy/util-endpoints/-/util-endpoints-1.1.1.tgz#45426dba6fb42282a0ad955600b2b3ba050d118f" @@ -8847,6 +11489,15 @@ "@smithy/types" "^3.1.0" tslib "^2.6.2" +"@smithy/util-endpoints@^3.4.2": + version "3.4.2" + resolved "https://registry.yarnpkg.com/@smithy/util-endpoints/-/util-endpoints-3.4.2.tgz#ee59c42d039a642b6c6eb2d38e0ae3db6fc48e97" + integrity sha512-a55Tr+3OKld4TTtnT+RhKOQHyPxm3j/xL4OR83WBUhLJaKDS9dnJ7arRMOp3t31dcLhApwG9bgvrRXBHlLdIkg== + dependencies: + "@smithy/node-config-provider" "^4.3.14" + "@smithy/types" "^4.14.1" + tslib "^2.6.2" + "@smithy/util-hex-encoding@^1.1.0": version "1.1.0" resolved "https://registry.npmmirror.com/@smithy/util-hex-encoding/-/util-hex-encoding-1.1.0.tgz#b5ba919aa076a3fd5e93e368e34ae2b732fa2090" @@ -8868,6 +11519,13 @@ dependencies: tslib "^2.6.2" +"@smithy/util-hex-encoding@^4.2.2": + version "4.2.2" + resolved "https://registry.yarnpkg.com/@smithy/util-hex-encoding/-/util-hex-encoding-4.2.2.tgz#4abf3335dd1eb884041d8589ca7628d81a6fd1d3" + integrity sha512-Qcz3W5vuHK4sLQdyT93k/rfrUwdJ8/HZ+nMUOyGdpeGA1Wxt65zYwi3oEl9kOM+RswvYq90fzkNDahPS8K0OIg== + dependencies: + tslib "^2.6.2" + "@smithy/util-middleware@^1.1.0": version "1.1.0" resolved "https://registry.npmmirror.com/@smithy/util-middleware/-/util-middleware-1.1.0.tgz#9f186489437ca2ef753c5e1de2930f76fd1edc14" @@ -8891,6 +11549,22 @@ "@smithy/types" "^3.1.0" tslib "^2.6.2" +"@smithy/util-middleware@^3.0.11": + version "3.0.11" + resolved "https://registry.yarnpkg.com/@smithy/util-middleware/-/util-middleware-3.0.11.tgz#2ab5c17266b42c225e62befcffb048afa682b5bf" + integrity sha512-dWpyc1e1R6VoXrwLoLDd57U1z6CwNSdkM69Ie4+6uYh2GC7Vg51Qtan7ITzczuVpqezdDTKJGJB95fFvvjU/ow== + dependencies: + "@smithy/types" "^3.7.2" + tslib "^2.6.2" + +"@smithy/util-middleware@^4.2.14": + version "4.2.14" + resolved "https://registry.yarnpkg.com/@smithy/util-middleware/-/util-middleware-4.2.14.tgz#9985dd82b4036db2d03835229b9b0c63d2bb85fa" + integrity sha512-1Su2vj9RYNDEv/V+2E+jXkkwGsgR7dc4sfHn9Z7ruzQHJIEni9zzw5CauvRXlFJfmgcqYP8fWa0dkh2Q2YaQyw== + dependencies: + "@smithy/types" "^4.14.1" + tslib "^2.6.2" + "@smithy/util-retry@^2.1.1": version "2.1.1" resolved "https://registry.npmmirror.com/@smithy/util-retry/-/util-retry-2.1.1.tgz#f2d3566b6e5b841028c7240c852007d4037e49b2" @@ -8909,6 +11583,24 @@ "@smithy/types" "^3.1.0" tslib "^2.6.2" +"@smithy/util-retry@^4.3.3", "@smithy/util-retry@^4.3.4": + version "4.3.4" + resolved "https://registry.yarnpkg.com/@smithy/util-retry/-/util-retry-4.3.4.tgz#97d9635d967405243f0a2c47db35969eeb6860b8" + integrity sha512-FY1UQQ1VFmMwiYp1GVS4MeaGD5O0blLNYK0xCRHU+mJgeoH/hSY8Ld8sJWKQ6uznkh14HveRGQJncgPyNl9J+A== + dependencies: + "@smithy/service-error-classification" "^4.3.0" + "@smithy/types" "^4.14.1" + tslib "^2.6.2" + +"@smithy/util-retry@^4.3.6": + version "4.3.6" + resolved "https://registry.yarnpkg.com/@smithy/util-retry/-/util-retry-4.3.6.tgz#8d242d7e736593ca3f1c0f056279909b881d6e2a" + integrity sha512-p6/FO1n2KxMeQyna067i0uJ6TSbb165ZhnRtCpWh4Foxqbfc6oW+XITaL8QkFJj3KFnDe2URt4gOhgU06EP9ew== + dependencies: + "@smithy/service-error-classification" "^4.3.1" + "@smithy/types" "^4.14.1" + tslib "^2.6.2" + "@smithy/util-stream@^2.1.1": version "2.1.1" resolved "https://registry.npmmirror.com/@smithy/util-stream/-/util-stream-2.1.1.tgz#3ae0e88c3a1a45899e29c1655d2e5a3865b6c0a6" @@ -8937,6 +11629,20 @@ "@smithy/util-utf8" "^3.0.0" tslib "^2.6.2" +"@smithy/util-stream@^4.5.24", "@smithy/util-stream@^4.5.25": + version "4.5.25" + resolved "https://registry.yarnpkg.com/@smithy/util-stream/-/util-stream-4.5.25.tgz#f48385a284151c7e099395af4e5fb0978fffe4ff" + integrity sha512-/PFpG4k8Ze8Ei+mMKj3oiPICYekthuzePZMgZbCqMiXIHHf4n2aZ4Ps0aSRShycFTGuj/J6XldmC0x0DwednIA== + dependencies: + "@smithy/fetch-http-handler" "^5.3.17" + "@smithy/node-http-handler" "^4.6.1" + "@smithy/types" "^4.14.1" + "@smithy/util-base64" "^4.3.2" + "@smithy/util-buffer-from" "^4.2.2" + "@smithy/util-hex-encoding" "^4.2.2" + "@smithy/util-utf8" "^4.2.2" + tslib "^2.6.2" + "@smithy/util-uri-escape@^1.1.0": version "1.1.0" resolved "https://registry.npmmirror.com/@smithy/util-uri-escape/-/util-uri-escape-1.1.0.tgz#a8c5edaf19c0efdb9b51661e840549cf600a1808" @@ -8958,6 +11664,13 @@ dependencies: tslib "^2.6.2" +"@smithy/util-uri-escape@^4.2.2": + version "4.2.2" + resolved "https://registry.yarnpkg.com/@smithy/util-uri-escape/-/util-uri-escape-4.2.2.tgz#48e40206e7fe9daefc8d44bb43a1ab17e76abf4a" + integrity sha512-2kAStBlvq+lTXHyAZYfJRb/DfS3rsinLiwb+69SstC9Vb0s9vNWkRwpnj918Pfi85mzi42sOqdV72OLxWAISnw== + dependencies: + tslib "^2.6.2" + "@smithy/util-utf8@^1.1.0": version "1.1.0" resolved "https://registry.npmmirror.com/@smithy/util-utf8/-/util-utf8-1.1.0.tgz#b791ab1e3f694374edfe22811e39dd8424a1be69" @@ -8982,6 +11695,14 @@ "@smithy/util-buffer-from" "^3.0.0" tslib "^2.6.2" +"@smithy/util-utf8@^4.2.2": + version "4.2.2" + resolved "https://registry.yarnpkg.com/@smithy/util-utf8/-/util-utf8-4.2.2.tgz#21db686982e6f3393ac262e49143b42370130f13" + integrity sha512-75MeYpjdWRe8M5E3AW0O4Cx3UadweS+cwdXjwYGBW5h/gxxnbeZ877sLPX/ZJA9GVTlL/qG0dXP29JWFCD1Ayw== + dependencies: + "@smithy/util-buffer-from" "^4.2.2" + tslib "^2.6.2" + "@smithy/util-waiter@^2.1.1": version "2.1.1" resolved "https://registry.npmmirror.com/@smithy/util-waiter/-/util-waiter-2.1.1.tgz#292d4d09cda7df38aba6ea2abd7d948e3f11bf2d" @@ -8991,6 +11712,38 @@ "@smithy/types" "^2.9.1" tslib "^2.5.0" +"@smithy/util-waiter@^4.3.0": + version "4.3.0" + resolved "https://registry.yarnpkg.com/@smithy/util-waiter/-/util-waiter-4.3.0.tgz#6122ce27939edb5550d1d6c7c8d506323f3a17f7" + integrity sha512-JyjYmLAfS+pdxF92o4yLgEoy0zhayKTw73FU1aofLWwLcJw7iSqIY2exGmMTrl/lmZugP5p/zxdFSippJDfKWA== + dependencies: + "@smithy/types" "^4.14.1" + tslib "^2.6.2" + +"@smithy/uuid@^1.1.2": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@smithy/uuid/-/uuid-1.1.2.tgz#b6e97c7158615e4a3c775e809c00d8c269b5a12e" + integrity sha512-O/IEdcCUKkubz60tFbGA7ceITTAJsty+lBjNoorP4Z6XRqaFb/OjQjZODophEcuq68nKm6/0r+6/lLQ+XVpk8g== + dependencies: + tslib "^2.6.2" + +"@spectrum-icons/ui@^3.7.0": + version "3.7.0" + resolved "https://registry.yarnpkg.com/@spectrum-icons/ui/-/ui-3.7.0.tgz#69bf745cd11e239320d66482a9286b4616a47952" + integrity sha512-86iQSDfJb3Ama1WSJ/mEiFy4DJT7e/v4pSmEuX4aKKMzbNYft+O40N18S2POUnmblrb7MQneLC/pgIp1SDBwEQ== + dependencies: + "@adobe/react-spectrum-ui" "1.2.1" + "@babel/runtime" "^7.24.4" + "@swc/helpers" "^0.5.0" + +"@spectrum-icons/workflow@^4.3.0": + version "4.3.0" + resolved "https://registry.yarnpkg.com/@spectrum-icons/workflow/-/workflow-4.3.0.tgz#580e8a264261d3ca20876b34d9d69dbddf3a41a4" + integrity sha512-ILuhgWh9jMXaEVMRuOYgTAjMc22cKyvCtUDyZmc8OEMfOYuejj+Gcp5t6DhaCfE0M9rORtVxCrRgsO2WyEgfUw== + dependencies: + "@adobe/react-spectrum-workflow" "2.3.5" + "@swc/helpers" "^0.5.0" + "@spotify/eslint-config-base@^15.0.0": version "15.0.0" resolved "https://registry.npmmirror.com/@spotify/eslint-config-base/-/eslint-config-base-15.0.0.tgz#fa8a003e656b1c14694528a487bb9e974e013e4d" @@ -9006,10 +11759,15 @@ resolved "https://registry.npmmirror.com/@spotify/eslint-config-typescript/-/eslint-config-typescript-15.0.0.tgz#b1857a76951df6e2cc4a1e92d98e7fd4f5a4baec" integrity sha512-70nKh2v6So0MddkEfKj4xgAcqs1VmR0AS2yb62XYetZ1Ep3AmhYDl/5CYtU5pbAQS4zCap8rd/EYdmVEHXiS6g== -"@spotify/prettier-config@^12.0.0": - version "12.0.0" - resolved "https://registry.npmmirror.com/@spotify/prettier-config/-/prettier-config-12.0.0.tgz#936ca5e977cfccbccd1731ab98b1f2bf65852b5d" - integrity sha512-64WWqE40U/WwWV8iIQBseTU+b2t+SdJSyQoCLdVPCKM9uf7KOjRivVwXe4KlWoV3y7duNSGuB2UgWhkXzscVmQ== +"@spotify/prettier-config@^15.0.0": + version "15.0.0" + resolved "https://registry.yarnpkg.com/@spotify/prettier-config/-/prettier-config-15.0.0.tgz#3dcc94ffa9c3fad68a1e8430ccba57edc0131399" + integrity sha512-ex7bdst1STr97y/MUTgVxadxpEZy48XVQDwZrESYO07EONSRstQYBaQWGVo80jmJ9NXC+r4ZjUqjT2Gw524Nqg== + +"@standard-schema/spec@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@standard-schema/spec/-/spec-1.1.0.tgz#a79b55dbaf8604812f52d140b2c9ab41bc150bb8" + integrity sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w== "@stoplight/better-ajv-errors@1.0.3": version "1.0.3" @@ -9043,7 +11801,7 @@ tslib "^2.6.0" urijs "^1.19.11" -"@stoplight/json@^3.17.0", "@stoplight/json@^3.17.1", "@stoplight/json@^3.20.2", "@stoplight/json@^3.21.0", "@stoplight/json@~3.21.0": +"@stoplight/json@3.21.0", "@stoplight/json@^3.17.0", "@stoplight/json@^3.17.1", "@stoplight/json@^3.20.2", "@stoplight/json@^3.21.0", "@stoplight/json@~3.21.0": version "3.21.0" resolved "https://registry.npmmirror.com/@stoplight/json/-/json-3.21.0.tgz#c0dff9c478f3365d7946cb6e34c17cc2fa84250b" integrity sha512-5O0apqJ/t4sIevXCO3SBN9AHCEKKR/Zb4gaj7wYe5863jme9g02Q0n/GhM7ZCALkL+vGPTe4ZzTETP8TFtsw3g== @@ -9092,6 +11850,33 @@ simple-eval "1.0.0" tslib "^2.3.0" +"@stoplight/spectral-core@^1.18.3": + version "1.22.0" + resolved "https://registry.yarnpkg.com/@stoplight/spectral-core/-/spectral-core-1.22.0.tgz#2b224e992fdff1cf8edadb86621e200cbe89239a" + integrity sha512-4hTxMDs4TFUG4/jKjaZttA65gNuV2PCKI9+51I+J4nL6ylo17DlbW+sl6byKnBuV/85HxaV33ri5fEGlp8lTSA== + dependencies: + "@stoplight/better-ajv-errors" "1.0.3" + "@stoplight/json" "~3.21.0" + "@stoplight/path" "1.3.2" + "@stoplight/spectral-parsers" "^1.0.0" + "@stoplight/spectral-ref-resolver" "^1.0.4" + "@stoplight/spectral-runtime" "^1.1.2" + "@stoplight/types" "~13.6.0" + "@types/es-aggregate-error" "^1.0.2" + "@types/json-schema" "^7.0.11" + ajv "^8.18.0" + ajv-errors "~3.0.0" + ajv-formats "~2.1.1" + es-aggregate-error "^1.0.7" + expr-eval-fork "^3.0.1" + jsonpath-plus "^10.3.0" + lodash "^4.18.1" + lodash.topath "^4.5.2" + minimatch "^3.1.4" + nimma "0.2.3" + pony-cause "^1.1.1" + tslib "^2.8.1" + "@stoplight/spectral-formats@^1.0.0": version "1.6.0" resolved "https://registry.npmmirror.com/@stoplight/spectral-formats/-/spectral-formats-1.6.0.tgz#c4a7169ac85a2855a3d76cdcc7a59e8f2e8f2bb3" @@ -9140,6 +11925,17 @@ dependency-graph "0.11.0" tslib "^2.3.1" +"@stoplight/spectral-ref-resolver@^1.0.4": + version "1.0.5" + resolved "https://registry.yarnpkg.com/@stoplight/spectral-ref-resolver/-/spectral-ref-resolver-1.0.5.tgz#2462ae79bbb90b7fcc76b014118a0beeee5e64d5" + integrity sha512-gj3TieX5a9zMW29z3mBlAtDOCgN3GEc1VgZnCVlr5irmR4Qi5LuECuFItAq4pTn5Zu+sW5bqutsCH7D4PkpyAA== + dependencies: + "@stoplight/json-ref-readers" "1.2.2" + "@stoplight/json-ref-resolver" "~3.1.6" + "@stoplight/spectral-runtime" "^1.1.2" + dependency-graph "0.11.0" + tslib "^2.8.1" + "@stoplight/spectral-runtime@^1.0.0", "@stoplight/spectral-runtime@^1.1.0", "@stoplight/spectral-runtime@^1.1.2": version "1.1.2" resolved "https://registry.npmmirror.com/@stoplight/spectral-runtime/-/spectral-runtime-1.1.2.tgz#7315767a09a4a7e5226e997e245bd3eb39561a02" @@ -9180,613 +11976,705 @@ "@stoplight/yaml-ast-parser@0.0.48": version "0.0.48" resolved "https://registry.npmmirror.com/@stoplight/yaml-ast-parser/-/yaml-ast-parser-0.0.48.tgz#442b21f419427acaa8a3106ebc5d73351c407002" - integrity sha512-sV+51I7WYnLJnKPn2EMWgS4EUfoP4iWEbrWwbXsj0MZCB/xOK8j6+C9fntIdOM50kpx45ZLC3s6kwKivWuqvyg== - -"@stoplight/yaml@~4.2.3": - version "4.2.3" - resolved "https://registry.npmmirror.com/@stoplight/yaml/-/yaml-4.2.3.tgz#d177664fecd6b2fd0d4f264f1078550c30cfd8d1" - integrity sha512-Mx01wjRAR9C7yLMUyYFTfbUf5DimEpHMkRDQ1PKLe9dfNILbgdxyrncsOXM3vCpsQ1Hfj4bPiGl+u4u6e9Akqw== - dependencies: - "@stoplight/ordered-object-literal" "^1.0.1" - "@stoplight/types" "^13.0.0" - "@stoplight/yaml-ast-parser" "0.0.48" - tslib "^2.2.0" - -"@sucrase/webpack-loader@^2.0.0": - version "2.0.0" - resolved "https://registry.npmmirror.com/@sucrase/webpack-loader/-/webpack-loader-2.0.0.tgz#b8a70b8d3df3eeb570e6a3315e1a9c6b723e4a37" - integrity sha512-KUfWr83g70Qm+ZqjGL+M4tX01taDP3BldQcI6NSMlDf7WTDfuo0RvLlS0ekF6dPVslNyZhbFFBy2OBTB6Sa6+Q== - dependencies: - loader-utils "^1.1.0" - -"@svgr/babel-plugin-add-jsx-attribute@^6.5.1": - version "6.5.1" - resolved "https://registry.npmmirror.com/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-6.5.1.tgz#74a5d648bd0347bda99d82409d87b8ca80b9a1ba" - integrity sha512-9PYGcXrAxitycIjRmZB+Q0JaN07GZIWaTBIGQzfaZv+qr1n8X1XUEJ5rZ/vx6OVD9RRYlrNnXWExQXcmZeD/BQ== - -"@svgr/babel-plugin-remove-jsx-attribute@*": - version "8.0.0" - resolved "https://registry.npmmirror.com/@svgr/babel-plugin-remove-jsx-attribute/-/babel-plugin-remove-jsx-attribute-8.0.0.tgz#69177f7937233caca3a1afb051906698f2f59186" - integrity sha512-BcCkm/STipKvbCl6b7QFrMh/vx00vIP63k2eM66MfHJzPr6O2U0jYEViXkHJWqXqQYjdeA9cuCl5KWmlwjDvbA== - -"@svgr/babel-plugin-remove-jsx-empty-expression@*": - version "8.0.0" - resolved "https://registry.npmmirror.com/@svgr/babel-plugin-remove-jsx-empty-expression/-/babel-plugin-remove-jsx-empty-expression-8.0.0.tgz#c2c48104cfd7dcd557f373b70a56e9e3bdae1d44" - integrity sha512-5BcGCBfBxB5+XSDSWnhTThfI9jcO5f0Ai2V24gZpG+wXF14BzwxxdDb4g6trdOux0rhibGs385BeFMSmxtS3uA== - -"@svgr/babel-plugin-replace-jsx-attribute-value@^6.5.1": - version "6.5.1" - resolved "https://registry.npmmirror.com/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-6.5.1.tgz#fb9d22ea26d2bc5e0a44b763d4c46d5d3f596c60" - integrity sha512-8DPaVVE3fd5JKuIC29dqyMB54sA6mfgki2H2+swh+zNJoynC8pMPzOkidqHOSc6Wj032fhl8Z0TVn1GiPpAiJg== - -"@svgr/babel-plugin-svg-dynamic-title@^6.5.1": - version "6.5.1" - resolved "https://registry.npmmirror.com/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-6.5.1.tgz#01b2024a2b53ffaa5efceaa0bf3e1d5a4c520ce4" - integrity sha512-FwOEi0Il72iAzlkaHrlemVurgSQRDFbk0OC8dSvD5fSBPHltNh7JtLsxmZUhjYBZo2PpcU/RJvvi6Q0l7O7ogw== - -"@svgr/babel-plugin-svg-em-dimensions@^6.5.1": - version "6.5.1" - resolved "https://registry.npmmirror.com/@svgr/babel-plugin-svg-em-dimensions/-/babel-plugin-svg-em-dimensions-6.5.1.tgz#dd3fa9f5b24eb4f93bcf121c3d40ff5facecb217" - integrity sha512-gWGsiwjb4tw+ITOJ86ndY/DZZ6cuXMNE/SjcDRg+HLuCmwpcjOktwRF9WgAiycTqJD/QXqL2f8IzE2Rzh7aVXA== - -"@svgr/babel-plugin-transform-react-native-svg@^6.5.1": - version "6.5.1" - resolved "https://registry.npmmirror.com/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-6.5.1.tgz#1d8e945a03df65b601551097d8f5e34351d3d305" - integrity sha512-2jT3nTayyYP7kI6aGutkyfJ7UMGtuguD72OjeGLwVNyfPRBD8zQthlvL+fAbAKk5n9ZNcvFkp/b1lZ7VsYqVJg== - -"@svgr/babel-plugin-transform-svg-component@^6.5.1": - version "6.5.1" - resolved "https://registry.npmmirror.com/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-6.5.1.tgz#48620b9e590e25ff95a80f811544218d27f8a250" - integrity sha512-a1p6LF5Jt33O3rZoVRBqdxL350oge54iZWHNI6LJB5tQ7EelvD/Mb1mfBiZNAan0dt4i3VArkFRjA4iObuNykQ== - -"@svgr/babel-preset@^6.5.1": - version "6.5.1" - resolved "https://registry.npmmirror.com/@svgr/babel-preset/-/babel-preset-6.5.1.tgz#b90de7979c8843c5c580c7e2ec71f024b49eb828" - integrity sha512-6127fvO/FF2oi5EzSQOAjo1LE3OtNVh11R+/8FXa+mHx1ptAaS4cknIjnUA7e6j6fwGGJ17NzaTJFUwOV2zwCw== - dependencies: - "@svgr/babel-plugin-add-jsx-attribute" "^6.5.1" - "@svgr/babel-plugin-remove-jsx-attribute" "*" - "@svgr/babel-plugin-remove-jsx-empty-expression" "*" - "@svgr/babel-plugin-replace-jsx-attribute-value" "^6.5.1" - "@svgr/babel-plugin-svg-dynamic-title" "^6.5.1" - "@svgr/babel-plugin-svg-em-dimensions" "^6.5.1" - "@svgr/babel-plugin-transform-react-native-svg" "^6.5.1" - "@svgr/babel-plugin-transform-svg-component" "^6.5.1" - -"@svgr/core@6.5.x", "@svgr/core@^6.5.1": - version "6.5.1" - resolved "https://registry.npmmirror.com/@svgr/core/-/core-6.5.1.tgz#d3e8aa9dbe3fbd747f9ee4282c1c77a27410488a" - integrity sha512-/xdLSWxK5QkqG524ONSjvg3V/FkNyCv538OIBdQqPNaAta3AsXj/Bd2FbvR87yMbXO2hFSWiAe/Q6IkVPDw+mw== - dependencies: - "@babel/core" "^7.19.6" - "@svgr/babel-preset" "^6.5.1" - "@svgr/plugin-jsx" "^6.5.1" - camelcase "^6.2.0" - cosmiconfig "^7.0.1" - -"@svgr/hast-util-to-babel-ast@^6.5.1": - version "6.5.1" - resolved "https://registry.npmmirror.com/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-6.5.1.tgz#81800bd09b5bcdb968bf6ee7c863d2288fdb80d2" - integrity sha512-1hnUxxjd83EAxbL4a0JDJoD3Dao3hmjvyvyEV8PzWmLK3B9m9NPlW7GKjFyoWE8nM7HnXzPcmmSyOW8yOddSXw== - dependencies: - "@babel/types" "^7.20.0" - entities "^4.4.0" - -"@svgr/plugin-jsx@6.5.x", "@svgr/plugin-jsx@^6.5.1": - version "6.5.1" - resolved "https://registry.npmmirror.com/@svgr/plugin-jsx/-/plugin-jsx-6.5.1.tgz#0e30d1878e771ca753c94e69581c7971542a7072" - integrity sha512-+UdQxI3jgtSjCykNSlEMuy1jSRQlGC7pqBCPvkG/2dATdWo082zHTTK3uhnAju2/6XpE6B5mZ3z4Z8Ns01S8Gw== - dependencies: - "@babel/core" "^7.19.6" - "@svgr/babel-preset" "^6.5.1" - "@svgr/hast-util-to-babel-ast" "^6.5.1" - svg-parser "^2.0.4" + integrity sha512-sV+51I7WYnLJnKPn2EMWgS4EUfoP4iWEbrWwbXsj0MZCB/xOK8j6+C9fntIdOM50kpx45ZLC3s6kwKivWuqvyg== -"@svgr/plugin-svgo@6.5.x", "@svgr/plugin-svgo@^6.5.1": - version "6.5.1" - resolved "https://registry.npmmirror.com/@svgr/plugin-svgo/-/plugin-svgo-6.5.1.tgz#0f91910e988fc0b842f88e0960c2862e022abe84" - integrity sha512-omvZKf8ixP9z6GWgwbtmP9qQMPX4ODXi+wzbVZgomNFsUIlHA1sf4fThdwTWSsZGgvGAG6yE+b/F5gWUkcZ/iQ== +"@stoplight/yaml@~4.2.3": + version "4.2.3" + resolved "https://registry.npmmirror.com/@stoplight/yaml/-/yaml-4.2.3.tgz#d177664fecd6b2fd0d4f264f1078550c30cfd8d1" + integrity sha512-Mx01wjRAR9C7yLMUyYFTfbUf5DimEpHMkRDQ1PKLe9dfNILbgdxyrncsOXM3vCpsQ1Hfj4bPiGl+u4u6e9Akqw== dependencies: - cosmiconfig "^7.0.1" - deepmerge "^4.2.2" - svgo "^2.8.0" + "@stoplight/ordered-object-literal" "^1.0.1" + "@stoplight/types" "^13.0.0" + "@stoplight/yaml-ast-parser" "0.0.48" + tslib "^2.2.0" -"@svgr/rollup@6.5.x": - version "6.5.1" - resolved "https://registry.npmmirror.com/@svgr/rollup/-/rollup-6.5.1.tgz#9fe0e322c6cc3c6324469f049cb4b031efcf4a42" - integrity sha512-GeUfq0grJfpcn2jRWRaZ4npn27nnWK21vUj6MqDqknuJnEqGADcZZjO9wrUAaPLr3InAnQi0Z7nwiNUdzkaj6A== - dependencies: - "@babel/core" "^7.19.6" - "@babel/plugin-transform-react-constant-elements" "^7.18.12" - "@babel/preset-env" "^7.19.4" - "@babel/preset-react" "^7.18.6" - "@babel/preset-typescript" "^7.18.6" - "@rollup/pluginutils" "^4.2.1" - "@svgr/core" "^6.5.1" - "@svgr/plugin-jsx" "^6.5.1" - "@svgr/plugin-svgo" "^6.5.1" - -"@svgr/webpack@6.5.x": - version "6.5.1" - resolved "https://registry.npmmirror.com/@svgr/webpack/-/webpack-6.5.1.tgz#ecf027814fc1cb2decc29dc92f39c3cf691e40e8" - integrity sha512-cQ/AsnBkXPkEK8cLbv4Dm7JGXq2XrumKnL1dRpJD9rIO2fTIlJI9a1uCciYG1F2aUsox/hJQyNGbt3soDxSRkA== - dependencies: - "@babel/core" "^7.19.6" - "@babel/plugin-transform-react-constant-elements" "^7.18.12" - "@babel/preset-env" "^7.19.4" - "@babel/preset-react" "^7.18.6" - "@babel/preset-typescript" "^7.18.6" - "@svgr/core" "^6.5.1" - "@svgr/plugin-jsx" "^6.5.1" - "@svgr/plugin-svgo" "^6.5.1" - -"@swagger-api/apidom-ast@^0.93.0": - version "0.93.0" - resolved "https://registry.npmmirror.com/@swagger-api/apidom-ast/-/apidom-ast-0.93.0.tgz#f4c8e5293557726f0d63b7de177bb439a3514132" - integrity sha512-iGrhEXdlgFEQYX4bAootcX+FaeLXruoJnHCFTO6IQ7yKlml3QIl1G9l2KwTzHybHQ70u3nfgE3ovLGOiy8NM5g== - dependencies: - "@babel/runtime-corejs3" "^7.20.7" - "@swagger-api/apidom-error" "^0.93.0" - "@types/ramda" "~0.29.6" - ramda "~0.29.1" - ramda-adjunct "^4.1.1" +"@swagger-api/apidom-ast@^1.10.2": + version "1.10.2" + resolved "https://registry.yarnpkg.com/@swagger-api/apidom-ast/-/apidom-ast-1.10.2.tgz#fd7b49929bdd8ca07c247efeaae3c47c86d7da68" + integrity sha512-vTl8gWyeZaj887/NSWYs3as4K8wXHar5wY/606XRBjR2UgmJBokBgKjq7S23LW9tsYjsT4MjQKC8idjgw17xvg== + dependencies: + "@babel/runtime-corejs3" "^7.26.10" + "@swagger-api/apidom-error" "^1.10.2" + "@types/ramda" "~0.30.0" + ramda "~0.30.0" + ramda-adjunct "^5.0.0" unraw "^3.0.0" -"@swagger-api/apidom-core@>=0.90.0 <1.0.0", "@swagger-api/apidom-core@^0.93.0": - version "0.93.0" - resolved "https://registry.npmmirror.com/@swagger-api/apidom-core/-/apidom-core-0.93.0.tgz#2b8a8127380d8d6ee243b6960f0e6ebef22d4434" - integrity sha512-OxbLBcnJQ8seFmeKqM2KDMkLJox0YTEhnLq3DnCyvOXnzVHdau+wNIhYSUc1+ZzrjsWqJLU0ntS3LEPb7ttnGw== +"@swagger-api/apidom-core@^1.10.2": + version "1.10.2" + resolved "https://registry.yarnpkg.com/@swagger-api/apidom-core/-/apidom-core-1.10.2.tgz#1ecf2808a1e3b1814e7f133e5c94cdd9fd5b9dcd" + integrity sha512-qryNBGHNWDvSRyK1w5rox0UOrHrVBjZOHgeXFpGHF+oBO7ntSc/H7BSiYMDR+KQESkzMcAxn4tZMLYItaBt06w== dependencies: - "@babel/runtime-corejs3" "^7.20.7" - "@swagger-api/apidom-ast" "^0.93.0" - "@swagger-api/apidom-error" "^0.93.0" - "@types/ramda" "~0.29.6" + "@babel/runtime-corejs3" "^7.26.10" + "@swagger-api/apidom-ast" "^1.10.2" + "@swagger-api/apidom-error" "^1.10.2" + "@types/ramda" "~0.30.0" minim "~0.23.8" - ramda "~0.29.1" - ramda-adjunct "^4.1.1" - short-unique-id "^5.0.2" - stampit "^4.3.2" + ramda "~0.30.0" + ramda-adjunct "^5.0.0" + short-unique-id "^5.3.2" + ts-mixer "^6.0.3" -"@swagger-api/apidom-error@>=0.90.0 <1.0.0", "@swagger-api/apidom-error@^0.93.0": - version "0.93.0" - resolved "https://registry.npmmirror.com/@swagger-api/apidom-error/-/apidom-error-0.93.0.tgz#3b7b69d407b30164c653b1a1e1acb3b5877d8c4e" - integrity sha512-vJiG0IZS8lOhXn8ZPSsKMh0mun6lOB7m4I8Ju6XeWR0khB7dbp15PAtk6xiFjekbWDa7hPn9584hp0YqXb6p5Q== +"@swagger-api/apidom-error@^1.10.2": + version "1.10.2" + resolved "https://registry.yarnpkg.com/@swagger-api/apidom-error/-/apidom-error-1.10.2.tgz#a017b9653d22414908d664468f12634841f37696" + integrity sha512-SWyPyL5xwTUsDzPi0A5zwTFwqPezvlwj4opEqruqjESNTYupUA7+vt4Mdj7IlDaRYRG1qyCWQgKhIBXznVUD4w== dependencies: "@babel/runtime-corejs3" "^7.20.7" -"@swagger-api/apidom-json-pointer@>=0.90.0 <1.0.0", "@swagger-api/apidom-json-pointer@^0.93.0": - version "0.93.0" - resolved "https://registry.npmmirror.com/@swagger-api/apidom-json-pointer/-/apidom-json-pointer-0.93.0.tgz#7a9b03f66da01f5291c04e75548e48a45574aea5" - integrity sha512-DnZb/xNKzgBtjKk+5KFMEp5olCeH1wEHbx1YaNY4DDRRtnafphtMxd5/xmapWKj7Glfjfswxi3Uo4m/FAasKPA== +"@swagger-api/apidom-json-pointer@^1.10.2": + version "1.10.2" + resolved "https://registry.yarnpkg.com/@swagger-api/apidom-json-pointer/-/apidom-json-pointer-1.10.2.tgz#f454e11606759432ee87432216eb65703a76057f" + integrity sha512-zySHPqIXF4HZ3VWbHwTxO+H1e9dJw7mGHzoX+tZjx5wVyLQO3kZDCAAXzz3c3/TIY21Y2Zkpkez3q9hjFyuLvQ== dependencies: - "@babel/runtime-corejs3" "^7.20.7" - "@swagger-api/apidom-core" "^0.93.0" - "@swagger-api/apidom-error" "^0.93.0" - "@types/ramda" "~0.29.6" - ramda "~0.29.1" - ramda-adjunct "^4.0.0" + "@babel/runtime-corejs3" "^7.26.10" + "@swagger-api/apidom-core" "^1.10.2" + "@swagger-api/apidom-error" "^1.10.2" + "@swaggerexpert/json-pointer" "^2.10.1" -"@swagger-api/apidom-ns-api-design-systems@^0.93.0": - version "0.93.0" - resolved "https://registry.npmmirror.com/@swagger-api/apidom-ns-api-design-systems/-/apidom-ns-api-design-systems-0.93.0.tgz#6d366c34239037a7c842cc0891dbaeff8a2a3bf9" - integrity sha512-f3RcUBmZjqmADubnV+yslvtbOJGV3jeMpQuzM9ByS3ASVg+XU1YxKkH5em8BcW3SDj0lqDiQ2ggA9kfPLSuV8A== - dependencies: - "@babel/runtime-corejs3" "^7.20.7" - "@swagger-api/apidom-core" "^0.93.0" - "@swagger-api/apidom-error" "^0.93.0" - "@swagger-api/apidom-ns-openapi-3-1" "^0.93.0" - "@types/ramda" "~0.29.6" - ramda "~0.29.1" - ramda-adjunct "^4.1.1" +"@swagger-api/apidom-ns-api-design-systems@^1.10.2": + version "1.10.2" + resolved "https://registry.yarnpkg.com/@swagger-api/apidom-ns-api-design-systems/-/apidom-ns-api-design-systems-1.10.2.tgz#0bea51cbfbb86ec272890c58cd771876329368e2" + integrity sha512-MsZ4GWmWN7wkWv7G9Pwk8sHU1j0bwk7xoGeaZmNCylbTfYvGkg6jJGMHdAdQNCQXbbpfLeKt1O+3YCN//JUQ7w== + dependencies: + "@babel/runtime-corejs3" "^7.26.10" + "@swagger-api/apidom-core" "^1.10.2" + "@swagger-api/apidom-error" "^1.10.2" + "@swagger-api/apidom-ns-openapi-3-1" "^1.10.2" + "@types/ramda" "~0.30.0" + ramda "~0.30.0" + ramda-adjunct "^5.0.0" ts-mixer "^6.0.3" -"@swagger-api/apidom-ns-asyncapi-2@^0.93.0": - version "0.93.0" - resolved "https://registry.npmmirror.com/@swagger-api/apidom-ns-asyncapi-2/-/apidom-ns-asyncapi-2-0.93.0.tgz#8ea40ac4e78ccba63e0aa2b5a364184d4472ca61" - integrity sha512-cEAFsVo/CiPFlw9FAeu/9WR6WixQKxH50SHNvmy8OsCOgYcl5VHF06majZTFCrgZlpCNXPJh9m5A2pUoHtxxUw== - dependencies: - "@babel/runtime-corejs3" "^7.20.7" - "@swagger-api/apidom-core" "^0.93.0" - "@swagger-api/apidom-ns-json-schema-draft-7" "^0.93.0" - "@types/ramda" "~0.29.6" - ramda "~0.29.1" - ramda-adjunct "^4.1.1" - stampit "^4.3.2" - -"@swagger-api/apidom-ns-json-schema-draft-4@^0.93.0": - version "0.93.0" - resolved "https://registry.npmmirror.com/@swagger-api/apidom-ns-json-schema-draft-4/-/apidom-ns-json-schema-draft-4-0.93.0.tgz#002ab375713306b384ba8ea8691c3eece4e0f1bd" - integrity sha512-dBY7LHrWZ+ydsgD00fQtRq/wOAZjdUh2+PE7/Xe3tYPeD1tv3DZ4F1tcVQeiyGBskF7vReUxUwnQo4uPJipPzA== - dependencies: - "@babel/runtime-corejs3" "^7.20.7" - "@swagger-api/apidom-ast" "^0.93.0" - "@swagger-api/apidom-core" "^0.93.0" - "@types/ramda" "~0.29.6" - ramda "~0.29.1" - ramda-adjunct "^4.1.1" - stampit "^4.3.2" - -"@swagger-api/apidom-ns-json-schema-draft-6@^0.93.0": - version "0.93.0" - resolved "https://registry.npmmirror.com/@swagger-api/apidom-ns-json-schema-draft-6/-/apidom-ns-json-schema-draft-6-0.93.0.tgz#7feebdbef2e0b977cf4366634c5538ef281d202d" - integrity sha512-u0e0Nq9nuuZyGoOCEjVQJKe5NdsIWezH+q8ev3dABlUNEiWMbtFLS9TvHFBeU11plCsyxjJyYRg8TjnI2Q8xzQ== - dependencies: - "@babel/runtime-corejs3" "^7.20.7" - "@swagger-api/apidom-core" "^0.93.0" - "@swagger-api/apidom-error" "^0.93.0" - "@swagger-api/apidom-ns-json-schema-draft-4" "^0.93.0" - "@types/ramda" "~0.29.6" - ramda "~0.29.1" - ramda-adjunct "^4.1.1" - stampit "^4.3.2" - -"@swagger-api/apidom-ns-json-schema-draft-7@^0.93.0": - version "0.93.0" - resolved "https://registry.npmmirror.com/@swagger-api/apidom-ns-json-schema-draft-7/-/apidom-ns-json-schema-draft-7-0.93.0.tgz#fa072e90dbd7b954ce79a304ba5e57ffc976e71e" - integrity sha512-NkHhyezG5ghx5FhclbIzCwo1wH4gmI8KwMnEuorsXJhanmnkl+JXzDSrpCM3Orvezl+4DEnBeMLyLfbnQMMknw== - dependencies: - "@babel/runtime-corejs3" "^7.20.7" - "@swagger-api/apidom-core" "^0.93.0" - "@swagger-api/apidom-error" "^0.93.0" - "@swagger-api/apidom-ns-json-schema-draft-6" "^0.93.0" - "@types/ramda" "~0.29.6" - ramda "~0.29.1" - ramda-adjunct "^4.1.1" - stampit "^4.3.2" - -"@swagger-api/apidom-ns-openapi-2@^0.93.0": - version "0.93.0" - resolved "https://registry.npmmirror.com/@swagger-api/apidom-ns-openapi-2/-/apidom-ns-openapi-2-0.93.0.tgz#4d14682f778a88ac1eb4b58c98dd29ea9aff54c7" - integrity sha512-sUZgGyuraLP7rarBp8CISdDLuO8n8L9Q+G8XMiYgl53HGRUY5a7HSGnybcQPpyNPQSNTFKigytSjvsSu8h33ZQ== - dependencies: - "@babel/runtime-corejs3" "^7.20.7" - "@swagger-api/apidom-core" "^0.93.0" - "@swagger-api/apidom-error" "^0.93.0" - "@swagger-api/apidom-ns-json-schema-draft-4" "^0.93.0" - "@types/ramda" "~0.29.6" - ramda "~0.29.1" - ramda-adjunct "^4.1.1" - stampit "^4.3.2" - -"@swagger-api/apidom-ns-openapi-3-0@^0.93.0": - version "0.93.0" - resolved "https://registry.npmmirror.com/@swagger-api/apidom-ns-openapi-3-0/-/apidom-ns-openapi-3-0-0.93.0.tgz#218935c25ba522bd98a8867cc60b0dfabf20d800" - integrity sha512-zmyMUg9+BocHxJuNbUmJCYi/ArOv38Am3/oSkh/5+ANAYOzB1O+ukVvdy7pHDxfZId6KRiP9ZWW6M7VBxz/t/g== - dependencies: - "@babel/runtime-corejs3" "^7.20.7" - "@swagger-api/apidom-core" "^0.93.0" - "@swagger-api/apidom-error" "^0.93.0" - "@swagger-api/apidom-ns-json-schema-draft-4" "^0.93.0" - "@types/ramda" "~0.29.6" - ramda "~0.29.1" - ramda-adjunct "^4.1.1" - stampit "^4.3.2" - -"@swagger-api/apidom-ns-openapi-3-1@>=0.90.0 <1.0.0", "@swagger-api/apidom-ns-openapi-3-1@^0.93.0": - version "0.93.0" - resolved "https://registry.npmmirror.com/@swagger-api/apidom-ns-openapi-3-1/-/apidom-ns-openapi-3-1-0.93.0.tgz#24572306b7bf9dee0609452ed0798427eb5806e3" - integrity sha512-kUkdcNmJloqqhvEDIAGvamyh1fQrITKGFUqRj5v0YWch/hKrfYk61eHG7igWxnVv3r/wDdM9T3uDWlBefMsj1g== - dependencies: - "@babel/runtime-corejs3" "^7.20.7" - "@swagger-api/apidom-ast" "^0.93.0" - "@swagger-api/apidom-core" "^0.93.0" - "@swagger-api/apidom-ns-openapi-3-0" "^0.93.0" - "@types/ramda" "~0.29.6" - ramda "~0.29.1" - ramda-adjunct "^4.1.1" - stampit "^4.3.2" - -"@swagger-api/apidom-ns-workflows-1@^0.93.0": - version "0.93.0" - resolved "https://registry.npmmirror.com/@swagger-api/apidom-ns-workflows-1/-/apidom-ns-workflows-1-0.93.0.tgz#f99ae57e9eec9691e4de7f48f9b18200e0b34fa9" - integrity sha512-dL92YBMULuI6HiuOVnB24ozOp4P02xN6Zw8tWzTm/H/W5EWVdso8krq5utjuSTFcurj4rODkPQxY8WRKuIuMDw== - dependencies: - "@babel/runtime-corejs3" "^7.20.7" - "@swagger-api/apidom-core" "^0.93.0" - "@swagger-api/apidom-ns-openapi-3-1" "^0.93.0" - "@types/ramda" "~0.29.6" - ramda "~0.29.1" - ramda-adjunct "^4.1.1" - stampit "^4.3.2" - -"@swagger-api/apidom-parser-adapter-api-design-systems-json@^0.93.0": - version "0.93.0" - resolved "https://registry.npmmirror.com/@swagger-api/apidom-parser-adapter-api-design-systems-json/-/apidom-parser-adapter-api-design-systems-json-0.93.0.tgz#f7dd4cdb5b4e2fffe4b15f77326e4a4f24b57e6c" - integrity sha512-lKaSt9YOXbhiBMTJcSCIF0C1fjyWLxKrTWkvbFwwqCcjeMt5vg8N/0nKqQeQm4mcZ946mqnssRVpPbJfWEoIWA== - dependencies: - "@babel/runtime-corejs3" "^7.20.7" - "@swagger-api/apidom-core" "^0.93.0" - "@swagger-api/apidom-ns-api-design-systems" "^0.93.0" - "@swagger-api/apidom-parser-adapter-json" "^0.93.0" - "@types/ramda" "~0.29.6" - ramda "~0.29.1" - ramda-adjunct "^4.0.0" - -"@swagger-api/apidom-parser-adapter-api-design-systems-yaml@^0.93.0": - version "0.93.0" - resolved "https://registry.npmmirror.com/@swagger-api/apidom-parser-adapter-api-design-systems-yaml/-/apidom-parser-adapter-api-design-systems-yaml-0.93.0.tgz#13f3bf6b65cc2d0e753035723042d77fb7c3a8f0" - integrity sha512-fjIQs0vRP/46M8kwQ3UGpq8piMboIXvrJqu1lDTylS5PYzE9qXpx1BhESZPtBwuoR9kvVYbumlD+BgjCuyzc8g== - dependencies: - "@babel/runtime-corejs3" "^7.20.7" - "@swagger-api/apidom-core" "^0.93.0" - "@swagger-api/apidom-ns-api-design-systems" "^0.93.0" - "@swagger-api/apidom-parser-adapter-yaml-1-2" "^0.93.0" - "@types/ramda" "~0.29.6" - ramda "~0.29.1" - ramda-adjunct "^4.0.0" - -"@swagger-api/apidom-parser-adapter-asyncapi-json-2@^0.93.0": - version "0.93.0" - resolved "https://registry.npmmirror.com/@swagger-api/apidom-parser-adapter-asyncapi-json-2/-/apidom-parser-adapter-asyncapi-json-2-0.93.0.tgz#589a4c46fda7e3746e555c18a195369b9204b624" - integrity sha512-65Io5+Zy5LBJTvRt3yKBXXfk5M/DCq3mDUSiVcZuyRPHGNi9ViMTdEFCH3rzF0x2v0omG+6OqryndIBVAXEo/g== - dependencies: - "@babel/runtime-corejs3" "^7.20.7" - "@swagger-api/apidom-core" "^0.93.0" - "@swagger-api/apidom-ns-asyncapi-2" "^0.93.0" - "@swagger-api/apidom-parser-adapter-json" "^0.93.0" - "@types/ramda" "~0.29.6" - ramda "~0.29.1" - ramda-adjunct "^4.0.0" - -"@swagger-api/apidom-parser-adapter-asyncapi-yaml-2@^0.93.0": - version "0.93.0" - resolved "https://registry.npmmirror.com/@swagger-api/apidom-parser-adapter-asyncapi-yaml-2/-/apidom-parser-adapter-asyncapi-yaml-2-0.93.0.tgz#74fa0f722547a9e0e38a9ac5d9e0861d50273cb2" - integrity sha512-WwGH6StA7kplkTAaV43MziJeJonnJCW6pBOp1bwoEhGaeYO/Yd/dpoFZVDfxAnXJYmDnzk7pqjJm3U6A9BCPcw== - dependencies: - "@babel/runtime-corejs3" "^7.20.7" - "@swagger-api/apidom-core" "^0.93.0" - "@swagger-api/apidom-ns-asyncapi-2" "^0.93.0" - "@swagger-api/apidom-parser-adapter-yaml-1-2" "^0.93.0" - "@types/ramda" "~0.29.6" - ramda "~0.29.1" - ramda-adjunct "^4.0.0" - -"@swagger-api/apidom-parser-adapter-json@^0.93.0": - version "0.93.0" - resolved "https://registry.npmmirror.com/@swagger-api/apidom-parser-adapter-json/-/apidom-parser-adapter-json-0.93.0.tgz#b22a8d46523104b0a207485ca5df4fa4d0fe58b0" - integrity sha512-FNA36GAqG1EMErkRhMFb4GeW8fuYdzRkOwQmTLWZfKIUzLYOvVMbki8R2dE8ruNs/Gf5VhiQH85mLaCyLwp3xw== - dependencies: - "@babel/runtime-corejs3" "^7.20.7" - "@swagger-api/apidom-ast" "^0.93.0" - "@swagger-api/apidom-core" "^0.93.0" - "@swagger-api/apidom-error" "^0.93.0" - "@types/ramda" "~0.29.6" - ramda "~0.29.1" - ramda-adjunct "^4.1.1" - tree-sitter "=0.20.4" - tree-sitter-json "=0.20.1" - web-tree-sitter "=0.20.3" - -"@swagger-api/apidom-parser-adapter-openapi-json-2@^0.93.0": - version "0.93.0" - resolved "https://registry.npmmirror.com/@swagger-api/apidom-parser-adapter-openapi-json-2/-/apidom-parser-adapter-openapi-json-2-0.93.0.tgz#be4acaddd6deb8ab56219029024c5621e82a0507" - integrity sha512-bBEYiZdiYQQoubZVdkHw3I/qwgI3nvCcrbFAlqELvpFgRZywJzXssxqHqFOR8clvoX8+JVYx5E/MgSC6Rn77uQ== - dependencies: - "@babel/runtime-corejs3" "^7.20.7" - "@swagger-api/apidom-core" "^0.93.0" - "@swagger-api/apidom-ns-openapi-2" "^0.93.0" - "@swagger-api/apidom-parser-adapter-json" "^0.93.0" - "@types/ramda" "~0.29.6" - ramda "~0.29.1" - ramda-adjunct "^4.0.0" - -"@swagger-api/apidom-parser-adapter-openapi-json-3-0@^0.93.0": - version "0.93.0" - resolved "https://registry.npmmirror.com/@swagger-api/apidom-parser-adapter-openapi-json-3-0/-/apidom-parser-adapter-openapi-json-3-0-0.93.0.tgz#9897a86a54e6fc1ce5e5f48149fa325dd561cfa4" - integrity sha512-UlM924syGaSa5c35OuDC614xBsjIm5DaWUqshFf6DmmP5iDZFQUh0cyIfLDD5/n1wZvAtiIL040zwfTBrK0Udw== - dependencies: - "@babel/runtime-corejs3" "^7.20.7" - "@swagger-api/apidom-core" "^0.93.0" - "@swagger-api/apidom-ns-openapi-3-0" "^0.93.0" - "@swagger-api/apidom-parser-adapter-json" "^0.93.0" - "@types/ramda" "~0.29.6" - ramda "~0.29.1" - ramda-adjunct "^4.0.0" - -"@swagger-api/apidom-parser-adapter-openapi-json-3-1@^0.93.0": - version "0.93.0" - resolved "https://registry.npmmirror.com/@swagger-api/apidom-parser-adapter-openapi-json-3-1/-/apidom-parser-adapter-openapi-json-3-1-0.93.0.tgz#fa27107befc7eab36d85d73f81ffc3d66951b74c" - integrity sha512-9rqOLv0ip7knvbdmk8hNa1aN/kaeIIoUKdwO6GaMW9eFh2cvIDyriLxp+FwTatnwhlJjWMwp7Mfyv62WT0cfKQ== - dependencies: - "@babel/runtime-corejs3" "^7.20.7" - "@swagger-api/apidom-core" "^0.93.0" - "@swagger-api/apidom-ns-openapi-3-1" "^0.93.0" - "@swagger-api/apidom-parser-adapter-json" "^0.93.0" - "@types/ramda" "~0.29.6" - ramda "~0.29.1" - ramda-adjunct "^4.0.0" - -"@swagger-api/apidom-parser-adapter-openapi-yaml-2@^0.93.0": - version "0.93.0" - resolved "https://registry.npmmirror.com/@swagger-api/apidom-parser-adapter-openapi-yaml-2/-/apidom-parser-adapter-openapi-yaml-2-0.93.0.tgz#466cea25b81a3cea03512f349df3f090b4705ad5" - integrity sha512-8laGpR9MrFBsBDmGNSexKdvLvGnr5QnjhqOSqFIViK/WFG+zEpE5SsWyJkCQJE4EJ5IvxVA8BfBrjjUqe0Z5uA== - dependencies: - "@babel/runtime-corejs3" "^7.20.7" - "@swagger-api/apidom-core" "^0.93.0" - "@swagger-api/apidom-ns-openapi-2" "^0.93.0" - "@swagger-api/apidom-parser-adapter-yaml-1-2" "^0.93.0" - "@types/ramda" "~0.29.6" - ramda "~0.29.1" - ramda-adjunct "^4.0.0" - -"@swagger-api/apidom-parser-adapter-openapi-yaml-3-0@^0.93.0": - version "0.93.0" - resolved "https://registry.npmmirror.com/@swagger-api/apidom-parser-adapter-openapi-yaml-3-0/-/apidom-parser-adapter-openapi-yaml-3-0-0.93.0.tgz#939a7f830be13fd3d3f94030e27a74b914af5814" - integrity sha512-Tf8eX+MzTsCijXbE5lkfF0/wG5VkvCPGg7hZV7ZGYrzQ584R/Z0xkgHEu3Atqu3Ji9XPGP0u6LqWM/wATuWK0A== - dependencies: - "@babel/runtime-corejs3" "^7.20.7" - "@swagger-api/apidom-core" "^0.93.0" - "@swagger-api/apidom-ns-openapi-3-0" "^0.93.0" - "@swagger-api/apidom-parser-adapter-yaml-1-2" "^0.93.0" - "@types/ramda" "~0.29.6" - ramda "~0.29.1" - ramda-adjunct "^4.0.0" - -"@swagger-api/apidom-parser-adapter-openapi-yaml-3-1@^0.93.0": - version "0.93.0" - resolved "https://registry.npmmirror.com/@swagger-api/apidom-parser-adapter-openapi-yaml-3-1/-/apidom-parser-adapter-openapi-yaml-3-1-0.93.0.tgz#bea175f4dfe1f29b206defca3eb2b3cfd53478c9" - integrity sha512-1Yt3SmgV2x5PAV8NeXIztuRWbIMhAU3cs3SIDJlObzFxXitnsf3cVIRrFTNrK28mqhHU3XNVTat5GrGtlJeD8Q== - dependencies: - "@babel/runtime-corejs3" "^7.20.7" - "@swagger-api/apidom-core" "^0.93.0" - "@swagger-api/apidom-ns-openapi-3-1" "^0.93.0" - "@swagger-api/apidom-parser-adapter-yaml-1-2" "^0.93.0" - "@types/ramda" "~0.29.6" - ramda "~0.29.1" - ramda-adjunct "^4.0.0" - -"@swagger-api/apidom-parser-adapter-workflows-json-1@^0.93.0": - version "0.93.0" - resolved "https://registry.npmmirror.com/@swagger-api/apidom-parser-adapter-workflows-json-1/-/apidom-parser-adapter-workflows-json-1-0.93.0.tgz#9d22e1cd3927080853c6569f9364e2dfea72fad1" - integrity sha512-tUm049GrXtBHoP8rcLTp+yz5EbJkq/stSgHb4nUNyFH00MKtMkP3j3KnXSCQz2w6br5gzv54DDCKwqPAh7IjuA== - dependencies: - "@babel/runtime-corejs3" "^7.20.7" - "@swagger-api/apidom-core" "^0.93.0" - "@swagger-api/apidom-ns-workflows-1" "^0.93.0" - "@swagger-api/apidom-parser-adapter-json" "^0.93.0" - "@types/ramda" "~0.29.6" - ramda "~0.29.1" - ramda-adjunct "^4.0.0" - -"@swagger-api/apidom-parser-adapter-workflows-yaml-1@^0.93.0": - version "0.93.0" - resolved "https://registry.npmmirror.com/@swagger-api/apidom-parser-adapter-workflows-yaml-1/-/apidom-parser-adapter-workflows-yaml-1-0.93.0.tgz#4b0adddfff3a9c7f28b9aeabc0f530389748c0f5" - integrity sha512-8knwzutGHH+69061yHY0xUwmMW/wWUP5jjn4CVDctxYS7BYXb9iaH84VuKJRuDm5M5L/C6yJHgdoWo4IHnpVBw== - dependencies: - "@babel/runtime-corejs3" "^7.20.7" - "@swagger-api/apidom-core" "^0.93.0" - "@swagger-api/apidom-ns-workflows-1" "^0.93.0" - "@swagger-api/apidom-parser-adapter-yaml-1-2" "^0.93.0" - "@types/ramda" "~0.29.6" - ramda "~0.29.1" - ramda-adjunct "^4.0.0" - -"@swagger-api/apidom-parser-adapter-yaml-1-2@^0.93.0": - version "0.93.0" - resolved "https://registry.npmmirror.com/@swagger-api/apidom-parser-adapter-yaml-1-2/-/apidom-parser-adapter-yaml-1-2-0.93.0.tgz#48765e12cc5bc4292895eb2026ed237b089df7b8" - integrity sha512-0z/d/t19f78o4CTxtpMMLdi+7js+JNz7s4/WSJXZ0Q0k5O4pEhlARMMEqJXE4qUXxTGnoXbi4sQY9FV/yA5V0Q== - dependencies: - "@babel/runtime-corejs3" "^7.20.7" - "@swagger-api/apidom-ast" "^0.93.0" - "@swagger-api/apidom-core" "^0.93.0" - "@swagger-api/apidom-error" "^0.93.0" - "@types/ramda" "~0.29.6" - ramda "~0.29.1" - ramda-adjunct "^4.1.1" - tree-sitter "=0.20.4" - tree-sitter-yaml "=0.5.0" - web-tree-sitter "=0.20.3" - -"@swagger-api/apidom-reference@>=0.90.0 <1.0.0": - version "0.93.0" - resolved "https://registry.npmmirror.com/@swagger-api/apidom-reference/-/apidom-reference-0.93.0.tgz#c90c70d288ececd43b42ac8cbe97fa2223b45eb1" - integrity sha512-kii8DqU3v+Fqv4gLi/3pTEYqR0AhjogcJnJUuKZqs1G/UiGk2RiEN4i/VyJQn0iwL4w4UyFcLOG4kyYxNgDAJw== - dependencies: - "@babel/runtime-corejs3" "^7.20.7" - "@swagger-api/apidom-core" "^0.93.0" - "@types/ramda" "~0.29.6" - axios "^1.4.0" - minimatch "^7.4.3" - process "^0.11.10" - ramda "~0.29.1" - ramda-adjunct "^4.1.1" - stampit "^4.3.2" +"@swagger-api/apidom-ns-arazzo-1@^1.10.2": + version "1.10.2" + resolved "https://registry.yarnpkg.com/@swagger-api/apidom-ns-arazzo-1/-/apidom-ns-arazzo-1-1.10.2.tgz#419ac738a943f4990a770dcfd521f0fa6122b08f" + integrity sha512-fQSwDlIR85tbnLXAjtV/ypSGUBfrzFcZ4NbH6BL1DSTR4uEunVxAULdD4wlhCt9gGNDl/zxZD3vQtlYDkXDFmw== + dependencies: + "@babel/runtime-corejs3" "^7.26.10" + "@swagger-api/apidom-core" "^1.10.2" + "@swagger-api/apidom-ns-json-schema-2020-12" "^1.10.2" + "@types/ramda" "~0.30.0" + ramda "~0.30.0" + ramda-adjunct "^5.0.0" + ts-mixer "^6.0.3" + +"@swagger-api/apidom-ns-asyncapi-2@^1.10.2": + version "1.10.2" + resolved "https://registry.yarnpkg.com/@swagger-api/apidom-ns-asyncapi-2/-/apidom-ns-asyncapi-2-1.10.2.tgz#37c5e15a847a3dbefb5c002e3033a75476b3744f" + integrity sha512-obWHe3pyAj65Nf9ISwnbtJ4C5mZ15C6mtQXxzHVW5maVZqlqt3s/YbPY87EqK9ArdNOwOZHkQt2Uth02GMmjxA== + dependencies: + "@babel/runtime-corejs3" "^7.26.10" + "@swagger-api/apidom-core" "^1.10.2" + "@swagger-api/apidom-ns-json-schema-draft-7" "^1.10.2" + "@types/ramda" "~0.30.0" + ramda "~0.30.0" + ramda-adjunct "^5.0.0" + ts-mixer "^6.0.3" + +"@swagger-api/apidom-ns-asyncapi-3@^1.10.2": + version "1.10.2" + resolved "https://registry.yarnpkg.com/@swagger-api/apidom-ns-asyncapi-3/-/apidom-ns-asyncapi-3-1.10.2.tgz#787851874b278dabe5b9583120f13ed06aafc21a" + integrity sha512-yqNmXeObF2OLAusgGEapXz2CrGjXwkcfG3DYcQDtOvgRytvGZxC2EkCUR+wEXCVNYhoJ7QpVzzTJOHs3jOvptg== + dependencies: + "@babel/runtime-corejs3" "^7.26.10" + "@swagger-api/apidom-core" "^1.10.2" + "@swagger-api/apidom-ns-asyncapi-2" "^1.10.2" + "@types/ramda" "~0.30.0" + ramda "~0.30.0" + ramda-adjunct "^5.0.0" + ts-mixer "^6.0.3" + +"@swagger-api/apidom-ns-json-schema-2019-09@^1.10.2": + version "1.10.2" + resolved "https://registry.yarnpkg.com/@swagger-api/apidom-ns-json-schema-2019-09/-/apidom-ns-json-schema-2019-09-1.10.2.tgz#358652692fb3dc89dbfc5f775ec79a27791b9620" + integrity sha512-I1FaBoDFMjybF4QVsesIYl8OilkwycZ0mQ0jf1P++zfTRG27uIePB8M+Iuj6iqMsE3qpkjjJJ6ZLnrLPdKvmRw== + dependencies: + "@babel/runtime-corejs3" "^7.26.10" + "@swagger-api/apidom-core" "^1.10.2" + "@swagger-api/apidom-error" "^1.10.2" + "@swagger-api/apidom-ns-json-schema-draft-7" "^1.10.2" + "@types/ramda" "~0.30.0" + ramda "~0.30.0" + ramda-adjunct "^5.0.0" + ts-mixer "^6.0.4" + +"@swagger-api/apidom-ns-json-schema-2020-12@^1.10.2": + version "1.10.2" + resolved "https://registry.yarnpkg.com/@swagger-api/apidom-ns-json-schema-2020-12/-/apidom-ns-json-schema-2020-12-1.10.2.tgz#f83dc1f6f403d1572acd2457557c37618379581d" + integrity sha512-lg9XfRlJRNoBa2EDGpEFc7HvFV39G6RG0/SbjQY0BE/WZer10wmfTCU7l3RUNJXRFGKH6/O/nsYgP7AFjTanXQ== + dependencies: + "@babel/runtime-corejs3" "^7.26.10" + "@swagger-api/apidom-core" "^1.10.2" + "@swagger-api/apidom-error" "^1.10.2" + "@swagger-api/apidom-ns-json-schema-2019-09" "^1.10.2" + "@types/ramda" "~0.30.0" + ramda "~0.30.0" + ramda-adjunct "^5.0.0" + ts-mixer "^6.0.4" + +"@swagger-api/apidom-ns-json-schema-draft-4@^1.10.2": + version "1.10.2" + resolved "https://registry.yarnpkg.com/@swagger-api/apidom-ns-json-schema-draft-4/-/apidom-ns-json-schema-draft-4-1.10.2.tgz#79e984a17ce86a5a768cab521ea0bd79987d705f" + integrity sha512-C50KnSKynrmHky/oOB6+hHyZVpwng78Fz5aZjay3h8X5C/PJHmm3sDJFvF3/9wkYHO3N9sPp7cpu4Xm9VJ4/wQ== + dependencies: + "@babel/runtime-corejs3" "^7.26.10" + "@swagger-api/apidom-ast" "^1.10.2" + "@swagger-api/apidom-core" "^1.10.2" + "@types/ramda" "~0.30.0" + ramda "~0.30.0" + ramda-adjunct "^5.0.0" + ts-mixer "^6.0.4" + +"@swagger-api/apidom-ns-json-schema-draft-6@^1.10.2": + version "1.10.2" + resolved "https://registry.yarnpkg.com/@swagger-api/apidom-ns-json-schema-draft-6/-/apidom-ns-json-schema-draft-6-1.10.2.tgz#e55d05c44bb580e6690b1d8bdbafc29c9480c822" + integrity sha512-/wiP8+2lF8UJRrkoQ9HvKnMbnqijk2uY/hAg+/Bo73T9NGKkEa29jYVUKYNYj7gJBw4hhkUHfHFWuZUpxPC4ZA== + dependencies: + "@babel/runtime-corejs3" "^7.26.10" + "@swagger-api/apidom-core" "^1.10.2" + "@swagger-api/apidom-error" "^1.10.2" + "@swagger-api/apidom-ns-json-schema-draft-4" "^1.10.2" + "@types/ramda" "~0.30.0" + ramda "~0.30.0" + ramda-adjunct "^5.0.0" + ts-mixer "^6.0.4" + +"@swagger-api/apidom-ns-json-schema-draft-7@^1.10.2": + version "1.10.2" + resolved "https://registry.yarnpkg.com/@swagger-api/apidom-ns-json-schema-draft-7/-/apidom-ns-json-schema-draft-7-1.10.2.tgz#357b62e4df4f07912c5283ac9a214e175aa27593" + integrity sha512-firN/uvnVxQgACqcyzV3NU9qjbMvNMJkpmm3wOat3URmaFMaFBT3qjbU1pFHBGbnXI3+I9pQJZHmJSwqNzfUbQ== + dependencies: + "@babel/runtime-corejs3" "^7.26.10" + "@swagger-api/apidom-core" "^1.10.2" + "@swagger-api/apidom-error" "^1.10.2" + "@swagger-api/apidom-ns-json-schema-draft-6" "^1.10.2" + "@types/ramda" "~0.30.0" + ramda "~0.30.0" + ramda-adjunct "^5.0.0" + ts-mixer "^6.0.4" + +"@swagger-api/apidom-ns-openapi-2@^1.10.2": + version "1.10.2" + resolved "https://registry.yarnpkg.com/@swagger-api/apidom-ns-openapi-2/-/apidom-ns-openapi-2-1.10.2.tgz#9b2bec035501d40393291a70f9260e333c8d3ee5" + integrity sha512-FK5kYvo/1uwAByumRVRsynBlnKxUUImfsjPEFgRCW6yhbCGRqN47NaZ7GYFHpbhjC3OmMN5/etYj6B0jnZx7Gg== + dependencies: + "@babel/runtime-corejs3" "^7.26.10" + "@swagger-api/apidom-core" "^1.10.2" + "@swagger-api/apidom-error" "^1.10.2" + "@swagger-api/apidom-ns-json-schema-draft-4" "^1.10.2" + "@types/ramda" "~0.30.0" + ramda "~0.30.0" + ramda-adjunct "^5.0.0" + ts-mixer "^6.0.3" + +"@swagger-api/apidom-ns-openapi-3-0@^1.10.2": + version "1.10.2" + resolved "https://registry.yarnpkg.com/@swagger-api/apidom-ns-openapi-3-0/-/apidom-ns-openapi-3-0-1.10.2.tgz#8f86fd918cd1909444bb7b7c6b0ecc06bdaa76f2" + integrity sha512-ziyv85QbJYHRdc9oTEFBy3pxwxg7BW/a9GrwH01/SmuXVQPjLjwzRb+SjCxLogJppm0yjxOkDFI2VWPp2RADFg== + dependencies: + "@babel/runtime-corejs3" "^7.26.10" + "@swagger-api/apidom-core" "^1.10.2" + "@swagger-api/apidom-error" "^1.10.2" + "@swagger-api/apidom-ns-json-schema-draft-4" "^1.10.2" + "@types/ramda" "~0.30.0" + ramda "~0.30.0" + ramda-adjunct "^5.0.0" + ts-mixer "^6.0.3" + +"@swagger-api/apidom-ns-openapi-3-1@^1.10.2": + version "1.10.2" + resolved "https://registry.yarnpkg.com/@swagger-api/apidom-ns-openapi-3-1/-/apidom-ns-openapi-3-1-1.10.2.tgz#968eaa27f98595a7bb0e820d5b805e770c886be0" + integrity sha512-ngcmO4dH77JT5hZB04OJdyTzgKnt2lNhAZQ+4wXjum/xhszjUmDhOeYfXdHw3Lm7MxsEsTesWzLYQ5LKADc41A== + dependencies: + "@babel/runtime-corejs3" "^7.26.10" + "@swagger-api/apidom-ast" "^1.10.2" + "@swagger-api/apidom-core" "^1.10.2" + "@swagger-api/apidom-json-pointer" "^1.10.2" + "@swagger-api/apidom-ns-json-schema-2020-12" "^1.10.2" + "@swagger-api/apidom-ns-openapi-3-0" "^1.10.2" + "@types/ramda" "~0.30.0" + ramda "~0.30.0" + ramda-adjunct "^5.0.0" + ts-mixer "^6.0.3" + +"@swagger-api/apidom-ns-openapi-3-2@^1.10.2": + version "1.10.2" + resolved "https://registry.yarnpkg.com/@swagger-api/apidom-ns-openapi-3-2/-/apidom-ns-openapi-3-2-1.10.2.tgz#b2bb8f0d8ac71660255d6744aa71cb870c76fabf" + integrity sha512-3SWJ5ipWwn+w11HTUESWex/522jy2aGLzBqqMgH36sy+Wdwx+9Mw2bgSDqkxmNC5+jpzOGUOIWoQAMuCpS/Gzg== + dependencies: + "@babel/runtime-corejs3" "^7.26.10" + "@swagger-api/apidom-ast" "^1.10.2" + "@swagger-api/apidom-core" "^1.10.2" + "@swagger-api/apidom-json-pointer" "^1.10.2" + "@swagger-api/apidom-ns-json-schema-2020-12" "^1.10.2" + "@swagger-api/apidom-ns-openapi-3-0" "^1.10.2" + "@swagger-api/apidom-ns-openapi-3-1" "^1.10.2" + "@types/ramda" "~0.30.0" + ramda "~0.30.0" + ramda-adjunct "^5.0.0" + ts-mixer "^6.0.3" + +"@swagger-api/apidom-parser-adapter-api-design-systems-json@^1.10.2": + version "1.10.2" + resolved "https://registry.yarnpkg.com/@swagger-api/apidom-parser-adapter-api-design-systems-json/-/apidom-parser-adapter-api-design-systems-json-1.10.2.tgz#8249b5abdd430624a7c7f9d1a007ecfc9e2bc3cc" + integrity sha512-kzhJUGzsJ38Uohj5xRQDkQC08rqNhatbqgD30LZ0/UWryJ9nAsjqK2ovuP9t+5WKcDE4iwcYeGSt1NA2XgEZwg== + dependencies: + "@babel/runtime-corejs3" "^7.26.10" + "@swagger-api/apidom-core" "^1.10.2" + "@swagger-api/apidom-ns-api-design-systems" "^1.10.2" + "@swagger-api/apidom-parser-adapter-json" "^1.10.2" + "@types/ramda" "~0.30.0" + ramda "~0.30.0" + ramda-adjunct "^5.0.0" + +"@swagger-api/apidom-parser-adapter-api-design-systems-yaml@^1.10.2": + version "1.10.2" + resolved "https://registry.yarnpkg.com/@swagger-api/apidom-parser-adapter-api-design-systems-yaml/-/apidom-parser-adapter-api-design-systems-yaml-1.10.2.tgz#053cc675e02bce40b16e2773fc57a11689cceb26" + integrity sha512-i3CmSxJ/iG67ybRDAJ9xpuMrOMFvC/obX2lI36E0VZzBTb+llw4Zd5qFmBqNnImLpwdmk11Z1V7i+5HM+J7ijQ== + dependencies: + "@babel/runtime-corejs3" "^7.26.10" + "@swagger-api/apidom-core" "^1.10.2" + "@swagger-api/apidom-ns-api-design-systems" "^1.10.2" + "@swagger-api/apidom-parser-adapter-yaml-1-2" "^1.10.2" + "@types/ramda" "~0.30.0" + ramda "~0.30.0" + ramda-adjunct "^5.0.0" + +"@swagger-api/apidom-parser-adapter-arazzo-json-1@^1.10.2": + version "1.10.2" + resolved "https://registry.yarnpkg.com/@swagger-api/apidom-parser-adapter-arazzo-json-1/-/apidom-parser-adapter-arazzo-json-1-1.10.2.tgz#988b6999d34df1b85bfbc3f5dc54f419b3b448f0" + integrity sha512-HwiUkwvo5i2hV2SS6KWrdj62BdceZGfhuXhr1il8akWekpU4jXPtr5pv4gOnKKJN7VgjAmwt/DlcCSRo1+9jVA== + dependencies: + "@babel/runtime-corejs3" "^7.26.10" + "@swagger-api/apidom-core" "^1.10.2" + "@swagger-api/apidom-ns-arazzo-1" "^1.10.2" + "@swagger-api/apidom-parser-adapter-json" "^1.10.2" + "@types/ramda" "~0.30.0" + ramda "~0.30.0" + ramda-adjunct "^5.0.0" + +"@swagger-api/apidom-parser-adapter-arazzo-yaml-1@^1.10.2": + version "1.10.2" + resolved "https://registry.yarnpkg.com/@swagger-api/apidom-parser-adapter-arazzo-yaml-1/-/apidom-parser-adapter-arazzo-yaml-1-1.10.2.tgz#fe2371ff7a9cf84094b1ec1554c404c804958c28" + integrity sha512-w8VTVuE7GPbRqWxvMgRoTb726JRsMhFPMfTBf8+MJ4pQThjk78dSXPV2Zlse71b2DWBuQy2sr6zGyLUNs/3ePQ== + dependencies: + "@babel/runtime-corejs3" "^7.26.10" + "@swagger-api/apidom-core" "^1.10.2" + "@swagger-api/apidom-ns-arazzo-1" "^1.10.2" + "@swagger-api/apidom-parser-adapter-yaml-1-2" "^1.10.2" + "@types/ramda" "~0.30.0" + ramda "~0.30.0" + ramda-adjunct "^5.0.0" + +"@swagger-api/apidom-parser-adapter-asyncapi-json-2@^1.10.2": + version "1.10.2" + resolved "https://registry.yarnpkg.com/@swagger-api/apidom-parser-adapter-asyncapi-json-2/-/apidom-parser-adapter-asyncapi-json-2-1.10.2.tgz#aca77a0e3abb7643aab18fa7dcb370334de6d264" + integrity sha512-FDNjqmn2vV1jFoVVwQDO0XPPm8R5xzmcyY/6yBLFmKZADin3smSKVZ+njYHmfRjpspXwN0AwI0drdvuH0FZLJg== + dependencies: + "@babel/runtime-corejs3" "^7.26.10" + "@swagger-api/apidom-core" "^1.10.2" + "@swagger-api/apidom-ns-asyncapi-2" "^1.10.2" + "@swagger-api/apidom-parser-adapter-json" "^1.10.2" + "@types/ramda" "~0.30.0" + ramda "~0.30.0" + ramda-adjunct "^5.0.0" + +"@swagger-api/apidom-parser-adapter-asyncapi-json-3@^1.10.2": + version "1.10.2" + resolved "https://registry.yarnpkg.com/@swagger-api/apidom-parser-adapter-asyncapi-json-3/-/apidom-parser-adapter-asyncapi-json-3-1.10.2.tgz#01ff7e0b05336288776791c9d537d6abe98ddb57" + integrity sha512-x/0vM2nDDzYzFnXr69+so/KSH+2py2TiZd1K49pWcX8cHsPV1Y4Ppih7GVOMymd8m/IOCjLYlV7qt4eWDwdldg== + dependencies: + "@babel/runtime-corejs3" "^7.26.10" + "@swagger-api/apidom-core" "^1.10.2" + "@swagger-api/apidom-ns-asyncapi-3" "^1.10.2" + "@swagger-api/apidom-parser-adapter-json" "^1.10.2" + "@types/ramda" "~0.30.0" + ramda "~0.30.0" + ramda-adjunct "^5.0.0" + +"@swagger-api/apidom-parser-adapter-asyncapi-yaml-2@^1.10.2": + version "1.10.2" + resolved "https://registry.yarnpkg.com/@swagger-api/apidom-parser-adapter-asyncapi-yaml-2/-/apidom-parser-adapter-asyncapi-yaml-2-1.10.2.tgz#0912939a3d6f0845587bcd0ed6b67ae36c9989b0" + integrity sha512-2bVACmU9ZmAVVnqQWSc3Bs+xG0HHLU1tfZbYL8xNgSi8kw4HcnejF5mWtN+MLFzTaBmWCi2In7P7BYNR8+2Dyg== + dependencies: + "@babel/runtime-corejs3" "^7.26.10" + "@swagger-api/apidom-core" "^1.10.2" + "@swagger-api/apidom-ns-asyncapi-2" "^1.10.2" + "@swagger-api/apidom-parser-adapter-yaml-1-2" "^1.10.2" + "@types/ramda" "~0.30.0" + ramda "~0.30.0" + ramda-adjunct "^5.0.0" + +"@swagger-api/apidom-parser-adapter-asyncapi-yaml-3@^1.10.2": + version "1.10.2" + resolved "https://registry.yarnpkg.com/@swagger-api/apidom-parser-adapter-asyncapi-yaml-3/-/apidom-parser-adapter-asyncapi-yaml-3-1.10.2.tgz#b8de51551d183f74e9c3eb3d0754200bc5751ff0" + integrity sha512-oHpbf+iqBcDS3qtsipMpgCwAeckKMxg0qFKYTCRZyJdctRgupJTxVeir6t/SGo0Ny0a1iknt2LN0u5frEen0kg== + dependencies: + "@babel/runtime-corejs3" "^7.26.10" + "@swagger-api/apidom-core" "^1.10.2" + "@swagger-api/apidom-ns-asyncapi-3" "^1.10.2" + "@swagger-api/apidom-parser-adapter-yaml-1-2" "^1.10.2" + "@types/ramda" "~0.30.0" + ramda "~0.30.0" + ramda-adjunct "^5.0.0" + +"@swagger-api/apidom-parser-adapter-json@^1.10.2": + version "1.10.2" + resolved "https://registry.yarnpkg.com/@swagger-api/apidom-parser-adapter-json/-/apidom-parser-adapter-json-1.10.2.tgz#fd52f62064a2456a30f020b208d80715d4bb9ae2" + integrity sha512-VnwEkarKfsJYRF0zCI9AGiSIyBUXqS2d32KQuhVCt/HeuF1XO9sjeLjGiosA/24YVOnO0ul5TpiNFQn0pw89mA== + dependencies: + "@babel/runtime-corejs3" "^7.26.10" + "@swagger-api/apidom-ast" "^1.10.2" + "@swagger-api/apidom-core" "^1.10.2" + "@swagger-api/apidom-error" "^1.10.2" + "@types/ramda" "~0.30.0" + ramda "~0.30.0" + ramda-adjunct "^5.0.0" + tree-sitter "=0.21.1" + tree-sitter-json "=0.24.8" + web-tree-sitter "=0.24.5" + +"@swagger-api/apidom-parser-adapter-openapi-json-2@^1.10.2": + version "1.10.2" + resolved "https://registry.yarnpkg.com/@swagger-api/apidom-parser-adapter-openapi-json-2/-/apidom-parser-adapter-openapi-json-2-1.10.2.tgz#18a604e5197f095d7633ec47263ed31c856c2b87" + integrity sha512-+d/o/8TrNBjvFzgPb0RQhrCc8gOWnrHZF+xvCO5gwp+4MUr1XP1AJIox1e6t1SO+j7IQjiF2ocx2r7eFE5QC7w== + dependencies: + "@babel/runtime-corejs3" "^7.26.10" + "@swagger-api/apidom-core" "^1.10.2" + "@swagger-api/apidom-ns-openapi-2" "^1.10.2" + "@swagger-api/apidom-parser-adapter-json" "^1.10.2" + "@types/ramda" "~0.30.0" + ramda "~0.30.0" + ramda-adjunct "^5.0.0" + +"@swagger-api/apidom-parser-adapter-openapi-json-3-0@^1.10.2": + version "1.10.2" + resolved "https://registry.yarnpkg.com/@swagger-api/apidom-parser-adapter-openapi-json-3-0/-/apidom-parser-adapter-openapi-json-3-0-1.10.2.tgz#80c16b46d5ef355848d7cc5ab57aec589ada20e1" + integrity sha512-3ieUeX8/WywkUzdOO1U1QKQDNmpZFfOeTAeb4ISDd/PKOVwuEx/b0w5I8EuOu97tKAe3UUesEdii+pJlkcFlFw== + dependencies: + "@babel/runtime-corejs3" "^7.26.10" + "@swagger-api/apidom-core" "^1.10.2" + "@swagger-api/apidom-ns-openapi-3-0" "^1.10.2" + "@swagger-api/apidom-parser-adapter-json" "^1.10.2" + "@types/ramda" "~0.30.0" + ramda "~0.30.0" + ramda-adjunct "^5.0.0" + +"@swagger-api/apidom-parser-adapter-openapi-json-3-1@^1.10.2": + version "1.10.2" + resolved "https://registry.yarnpkg.com/@swagger-api/apidom-parser-adapter-openapi-json-3-1/-/apidom-parser-adapter-openapi-json-3-1-1.10.2.tgz#58e2342896bc7a270d5b6cd5951b7b2536b7502e" + integrity sha512-z0c7IgMPLSDhE+ldTb54Xlhq+yPF0w/8LHXyeHX4V6BS1VG3Utb+mM/qTVfy1Eo+p1KGNlwNDEPsBp6jIaVb5Q== + dependencies: + "@babel/runtime-corejs3" "^7.26.10" + "@swagger-api/apidom-core" "^1.10.2" + "@swagger-api/apidom-ns-openapi-3-1" "^1.10.2" + "@swagger-api/apidom-parser-adapter-json" "^1.10.2" + "@types/ramda" "~0.30.0" + ramda "~0.30.0" + ramda-adjunct "^5.0.0" + +"@swagger-api/apidom-parser-adapter-openapi-json-3-2@^1.10.2": + version "1.10.2" + resolved "https://registry.yarnpkg.com/@swagger-api/apidom-parser-adapter-openapi-json-3-2/-/apidom-parser-adapter-openapi-json-3-2-1.10.2.tgz#ec4ed3b67067a1ba3f48432feb02316a25453dc5" + integrity sha512-bx/kEIXWtpHu+4LEiyNdt0v8ER5EVwPjhQdlpOaC5qghnRH9aUYOTawZtVHsNHAQWTIMNn9DdPKYQgttQKD0Pw== + dependencies: + "@babel/runtime-corejs3" "^7.26.10" + "@swagger-api/apidom-core" "^1.10.2" + "@swagger-api/apidom-ns-openapi-3-2" "^1.10.2" + "@swagger-api/apidom-parser-adapter-json" "^1.10.2" + "@types/ramda" "~0.30.0" + ramda "~0.30.0" + ramda-adjunct "^5.0.0" + +"@swagger-api/apidom-parser-adapter-openapi-yaml-2@^1.10.2": + version "1.10.2" + resolved "https://registry.yarnpkg.com/@swagger-api/apidom-parser-adapter-openapi-yaml-2/-/apidom-parser-adapter-openapi-yaml-2-1.10.2.tgz#9156fd645e4c262fb7d40a5a1893c933b9c4e2ff" + integrity sha512-e86JUXHGGEVsO4/xpy/GRSvYXGN30hLt1lMUhjzCFuE95N6/K3hmQHE3rA/H7ot1ajCWUhzukW5rGQac79NIjA== + dependencies: + "@babel/runtime-corejs3" "^7.26.10" + "@swagger-api/apidom-core" "^1.10.2" + "@swagger-api/apidom-ns-openapi-2" "^1.10.2" + "@swagger-api/apidom-parser-adapter-yaml-1-2" "^1.10.2" + "@types/ramda" "~0.30.0" + ramda "~0.30.0" + ramda-adjunct "^5.0.0" + +"@swagger-api/apidom-parser-adapter-openapi-yaml-3-0@^1.10.2": + version "1.10.2" + resolved "https://registry.yarnpkg.com/@swagger-api/apidom-parser-adapter-openapi-yaml-3-0/-/apidom-parser-adapter-openapi-yaml-3-0-1.10.2.tgz#311050d1aaeae227773c8487f3210acd02b6f209" + integrity sha512-ucfc13Ai31tJ0ruAm1YiHhqENgcBuiOXL00OhoICWA56ggAcnA5WfWmvtsXVMlZsTHVbhZP3XpsH5rui2N8u5w== + dependencies: + "@babel/runtime-corejs3" "^7.26.10" + "@swagger-api/apidom-core" "^1.10.2" + "@swagger-api/apidom-ns-openapi-3-0" "^1.10.2" + "@swagger-api/apidom-parser-adapter-yaml-1-2" "^1.10.2" + "@types/ramda" "~0.30.0" + ramda "~0.30.0" + ramda-adjunct "^5.0.0" + +"@swagger-api/apidom-parser-adapter-openapi-yaml-3-1@^1.10.2": + version "1.10.2" + resolved "https://registry.yarnpkg.com/@swagger-api/apidom-parser-adapter-openapi-yaml-3-1/-/apidom-parser-adapter-openapi-yaml-3-1-1.10.2.tgz#5d50ae20d9dbb4f23edfa2042deb3ec9ea3516e6" + integrity sha512-7o8j93qgf9yYAaaJ/GpH+5sB3fC9EmvmjTCqlw5YWXp+cRgCn9q7f80Sv4+NjbracUafB6qL4i9F/m+Xs0XZaQ== + dependencies: + "@babel/runtime-corejs3" "^7.26.10" + "@swagger-api/apidom-core" "^1.10.2" + "@swagger-api/apidom-ns-openapi-3-1" "^1.10.2" + "@swagger-api/apidom-parser-adapter-yaml-1-2" "^1.10.2" + "@types/ramda" "~0.30.0" + ramda "~0.30.0" + ramda-adjunct "^5.0.0" + +"@swagger-api/apidom-parser-adapter-openapi-yaml-3-2@^1.10.2": + version "1.10.2" + resolved "https://registry.yarnpkg.com/@swagger-api/apidom-parser-adapter-openapi-yaml-3-2/-/apidom-parser-adapter-openapi-yaml-3-2-1.10.2.tgz#0b8e12e981cfb2361fb7317342897c7484fc706a" + integrity sha512-blDIeVmo8bpXYV/C+b6PYi54yS+5jPEZTFsK5jQ2NzpCPrkBPacp/KTuHBUBzJsYj4bj/ivRL3+JXGw4YovUHw== + dependencies: + "@babel/runtime-corejs3" "^7.26.10" + "@swagger-api/apidom-core" "^1.10.2" + "@swagger-api/apidom-ns-openapi-3-2" "^1.10.2" + "@swagger-api/apidom-parser-adapter-yaml-1-2" "^1.10.2" + "@types/ramda" "~0.30.0" + ramda "~0.30.0" + ramda-adjunct "^5.0.0" + +"@swagger-api/apidom-parser-adapter-yaml-1-2@^1.10.2": + version "1.10.2" + resolved "https://registry.yarnpkg.com/@swagger-api/apidom-parser-adapter-yaml-1-2/-/apidom-parser-adapter-yaml-1-2-1.10.2.tgz#d723a5f2668e5eb4aa0428f4045c3bca157b90c6" + integrity sha512-I5eCls8XS3SVEwH/cuL6T3iar1TPaFYh3gXwS/2rzP1aZQNKSHDP3y3ney7nAomKG4dFvE8Q248FL36arG7T/w== + dependencies: + "@babel/runtime-corejs3" "^7.26.10" + "@swagger-api/apidom-ast" "^1.10.2" + "@swagger-api/apidom-core" "^1.10.2" + "@swagger-api/apidom-error" "^1.10.2" + "@tree-sitter-grammars/tree-sitter-yaml" "=0.7.1" + "@types/ramda" "~0.30.0" + ramda "~0.30.0" + ramda-adjunct "^5.0.0" + tree-sitter "=0.22.4" + web-tree-sitter "=0.24.5" + +"@swagger-api/apidom-reference@^1.10.2": + version "1.10.2" + resolved "https://registry.yarnpkg.com/@swagger-api/apidom-reference/-/apidom-reference-1.10.2.tgz#82069138540116c35ec782a5395c41ced7b20942" + integrity sha512-H5UqOmae9CXdiLJbbh1j+/hwvcECmr6ci2XtUKTQpFviemvsIDZmPV1DKUAxCfzGr2iOkDO6SZc+/OEWlETqiQ== + dependencies: + "@babel/runtime-corejs3" "^7.26.10" + "@swagger-api/apidom-core" "^1.10.2" + "@swagger-api/apidom-error" "^1.10.2" + "@types/ramda" "~0.30.0" + axios "^1.15.0" + minimatch "^10.2.1" + ramda "~0.30.0" + ramda-adjunct "^5.0.0" + optionalDependencies: + "@swagger-api/apidom-json-pointer" "^1.10.2" + "@swagger-api/apidom-ns-arazzo-1" "^1.10.2" + "@swagger-api/apidom-ns-asyncapi-2" "^1.10.2" + "@swagger-api/apidom-ns-openapi-2" "^1.10.2" + "@swagger-api/apidom-ns-openapi-3-0" "^1.10.2" + "@swagger-api/apidom-ns-openapi-3-1" "^1.10.2" + "@swagger-api/apidom-ns-openapi-3-2" "^1.10.2" + "@swagger-api/apidom-parser-adapter-api-design-systems-json" "^1.10.2" + "@swagger-api/apidom-parser-adapter-api-design-systems-yaml" "^1.10.2" + "@swagger-api/apidom-parser-adapter-arazzo-json-1" "^1.10.2" + "@swagger-api/apidom-parser-adapter-arazzo-yaml-1" "^1.10.2" + "@swagger-api/apidom-parser-adapter-asyncapi-json-2" "^1.10.2" + "@swagger-api/apidom-parser-adapter-asyncapi-json-3" "^1.10.2" + "@swagger-api/apidom-parser-adapter-asyncapi-yaml-2" "^1.10.2" + "@swagger-api/apidom-parser-adapter-asyncapi-yaml-3" "^1.10.2" + "@swagger-api/apidom-parser-adapter-json" "^1.10.2" + "@swagger-api/apidom-parser-adapter-openapi-json-2" "^1.10.2" + "@swagger-api/apidom-parser-adapter-openapi-json-3-0" "^1.10.2" + "@swagger-api/apidom-parser-adapter-openapi-json-3-1" "^1.10.2" + "@swagger-api/apidom-parser-adapter-openapi-json-3-2" "^1.10.2" + "@swagger-api/apidom-parser-adapter-openapi-yaml-2" "^1.10.2" + "@swagger-api/apidom-parser-adapter-openapi-yaml-3-0" "^1.10.2" + "@swagger-api/apidom-parser-adapter-openapi-yaml-3-1" "^1.10.2" + "@swagger-api/apidom-parser-adapter-openapi-yaml-3-2" "^1.10.2" + "@swagger-api/apidom-parser-adapter-yaml-1-2" "^1.10.2" + +"@swaggerexpert/cookie@^2.0.2": + version "2.0.2" + resolved "https://registry.yarnpkg.com/@swaggerexpert/cookie/-/cookie-2.0.2.tgz#2b1bc2b5082955372539ce3f2b52c35831b32ef8" + integrity sha512-DPI8YJ0Vznk4CT+ekn3rcFNq1uQwvUHZhH6WvTSPD0YKBIlMS9ur2RYKghXuxxOiqOam/i4lHJH4xTIiTgs3Mg== + dependencies: + apg-lite "^1.0.3" + +"@swaggerexpert/json-pointer@^2.10.1": + version "2.10.2" + resolved "https://registry.yarnpkg.com/@swaggerexpert/json-pointer/-/json-pointer-2.10.2.tgz#3f4f8082f166e77021113a401f1f2c4e4b45d574" + integrity sha512-qMx1nOrzoB+PF+pzb26Q4Tc2sOlrx9Ba2UBNX9hB31Omrq+QoZ2Gly0KLrQWw4Of1AQ4J9lnD+XOdwOdcdXqqw== + dependencies: + apg-lite "^1.0.4" + +"@swc/core-darwin-arm64@1.15.30": + version "1.15.30" + resolved "https://registry.yarnpkg.com/@swc/core-darwin-arm64/-/core-darwin-arm64-1.15.30.tgz#23447f1c30c9155fe35602de4392b4ecfa0a54cc" + integrity sha512-VvpP+vq08HmGYewMWvrdsxh9s2lthz/808zXm8Yu5kaqeR8Yia2b0eYXleHQ3VAjoStUDk6LzTheBW9KXYQdMA== + +"@swc/core-darwin-arm64@1.15.32": + version "1.15.32" + resolved "https://registry.yarnpkg.com/@swc/core-darwin-arm64/-/core-darwin-arm64-1.15.32.tgz#3592714588fdbb8b7a869f81ff96c7236fcf1c09" + integrity sha512-/YWMvJDPu+AAwuUsM2G+DNQ/7zhodURGzdQyewEqcvgklAdDHs3LwQmLLnyn6SJl8DT8UOxkbzK+D1PmPeelRg== + +"@swc/core-darwin-x64@1.15.30": + version "1.15.30" + resolved "https://registry.yarnpkg.com/@swc/core-darwin-x64/-/core-darwin-x64-1.15.30.tgz#16e6e35fff5b07c712d8af44783da59ac64ad5cf" + integrity sha512-WiJA0hiZI3nwQAO6mu5RqigtWGDtth4Hiq6rbZxAaQyhIcqKIg5IoMRc1Y071lrNJn29eEDMC86Rq58xgUxlDg== + +"@swc/core-darwin-x64@1.15.32": + version "1.15.32" + resolved "https://registry.yarnpkg.com/@swc/core-darwin-x64/-/core-darwin-x64-1.15.32.tgz#965044b632933146e319862ea7e4b717eb9f83dd" + integrity sha512-KOTXJXdAhWL+hZ77MYP3z+4pcMFaQhQ74yqyN1uz093q0YnbxpqMtYpPISbYvMHzVRNNx5kN+9RZAXEaadhWVA== + +"@swc/core-linux-arm-gnueabihf@1.15.30": + version "1.15.30" + resolved "https://registry.yarnpkg.com/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.15.30.tgz#abce7de734301109a7df23c22f6b6d233e3b9de9" + integrity sha512-YANuFUo48kIT6plJgCD0keae9HFXfjxsbvsgevqc0hr/07X/p7sAWTFOGYEc2SXcASaK7UvuQqzlbW8pr7R79g== + +"@swc/core-linux-arm-gnueabihf@1.15.32": + version "1.15.32" + resolved "https://registry.yarnpkg.com/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.15.32.tgz#70e70ad6ad961055f4a9be9e4947e455c18239e6" + integrity sha512-oOoxLweljlc0A4X8ybsgxV7cVaYTwBOg2iMDJcFR3Sr48C+lsv9VzSmqdK/IVIXF4W4GjLc3VqTAdSMXlfVLuQ== + +"@swc/core-linux-arm64-gnu@1.15.30": + version "1.15.30" + resolved "https://registry.yarnpkg.com/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.15.30.tgz#9a4e418cdbbfe64506dd12469a553c07e1924fef" + integrity sha512-VndG8jaR4ugY6u+iVOT0Q+d2fZd7sLgjPgN8W/Le+3EbZKl+cRfFxV7Eoz4gfLqhmneZPdcIzf9T3LkgkmqNLg== + +"@swc/core-linux-arm64-gnu@1.15.32": + version "1.15.32" + resolved "https://registry.yarnpkg.com/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.15.32.tgz#7b82e2cc5995e8f919e29f6ce702285f5f1c3ad1" + integrity sha512-oDzEkdl6D6BAWdMtU5KGO7y3HR5fJcvByNLyEk9+ugj8nP5Ovb7P4kBcStBXc4MPExFGQryehiINMlmY8HlclA== + +"@swc/core-linux-arm64-musl@1.15.30": + version "1.15.30" + resolved "https://registry.yarnpkg.com/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.15.30.tgz#4cd68ccb2af71c3ec539b15aa15c8fd304833d26" + integrity sha512-1SYGs2l0Yyyi0pR/P/NKz/x0kqxkoiw+BXeJjLUdecSk/KasncWlJrc6hOvFSgKHOBrzgM5jwuluKtlT8dnrcA== + +"@swc/core-linux-arm64-musl@1.15.32": + version "1.15.32" + resolved "https://registry.yarnpkg.com/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.15.32.tgz#16c581b9f859b0175a8bab5cbf694bef7dbf95b8" + integrity sha512-omcqjoZP/b8D8PuczVoRwJieC6ibj7qIxTftNYokz4/aSmKFHvsd7nIFfPk5ZvtzncbH4AY7+Dkr/Lp2gWxYeA== + +"@swc/core-linux-ppc64-gnu@1.15.30": + version "1.15.30" + resolved "https://registry.yarnpkg.com/@swc/core-linux-ppc64-gnu/-/core-linux-ppc64-gnu-1.15.30.tgz#561997d3c5f392db7e3473cb4bbc43e6d6b1160c" + integrity sha512-TXREtiXeRhbfDFbmhnkIsXpKfzbfT73YkV2ZF6w0sfxgjC5zI2ZAbaCOq25qxvegofj2K93DtOpm9RLaBgqR2g== + +"@swc/core-linux-ppc64-gnu@1.15.32": + version "1.15.32" + resolved "https://registry.yarnpkg.com/@swc/core-linux-ppc64-gnu/-/core-linux-ppc64-gnu-1.15.32.tgz#420f7744dae327c8e4917c87ced5c1b3e0a38f96" + integrity sha512-KGkTMyz/Tbn3PBNu0AVZ4GTDFKnICrYcTiNPZq8DrvK42pnFsf3GNDrIG9E5AtQlTmC0YigkWKmu0eMcfTrmgA== + +"@swc/core-linux-s390x-gnu@1.15.30": + version "1.15.30" + resolved "https://registry.yarnpkg.com/@swc/core-linux-s390x-gnu/-/core-linux-s390x-gnu-1.15.30.tgz#d6f1d5dceca794909305584cb69f80dd91820410" + integrity sha512-DCR2YYeyd6DQE4OuDhImouuNcjXEiEdnn1Y0DyGteugPEDvVuvYk8Xddi+4o2SgWH6jiW8/I+3emZvbep1NC+g== + +"@swc/core-linux-s390x-gnu@1.15.32": + version "1.15.32" + resolved "https://registry.yarnpkg.com/@swc/core-linux-s390x-gnu/-/core-linux-s390x-gnu-1.15.32.tgz#9b563a3a73c544f29454e53894bfe533b9a27ffe" + integrity sha512-G3Aa4tVS/3OGZBkoNIwUF9F6RAy+Osb4GOlo62SinLmDiErz/ykmM7KH0wkz6l9kM8jJq1HyAM6atJTUEbBk7g== + +"@swc/core-linux-x64-gnu@1.15.30": + version "1.15.30" + resolved "https://registry.yarnpkg.com/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.15.30.tgz#c3e91c60f265a62cec60145f0d2d931feb1cf41a" + integrity sha512-5Pizw3NgfOJ5BJOBK8TIRa59xFW2avESTOBDPTAYwZYa1JNDs+KMF9lUfjJiJLM5HiMs/wPheA9eiT0q9m2AoA== + +"@swc/core-linux-x64-gnu@1.15.32": + version "1.15.32" + resolved "https://registry.yarnpkg.com/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.15.32.tgz#615c7bcc1890379dffcc74b6780e2277e65f4b61" + integrity sha512-ERsjfGcj6CBmj3vJnGDO8m8rTvw6RqMcWo1dogOtNx3/+/0+NNpJiXDobJrr1GwInI/BHAEkvSFIH6d2LqPcUQ== + +"@swc/core-linux-x64-musl@1.15.30": + version "1.15.30" + resolved "https://registry.yarnpkg.com/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.15.30.tgz#3fd112e617a951438f73930b514adf19375067fb" + integrity sha512-qyqydP/wyH8alcIP4a2hnGSjHLJjm9H7yDFup+CPy9oTahFgLLwnNcv5UHXqO2Qs3AIND+cls5f/Bb6hqpxdgA== + +"@swc/core-linux-x64-musl@1.15.32": + version "1.15.32" + resolved "https://registry.yarnpkg.com/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.15.32.tgz#038604d25bdebb1d1ad780d827a44654fa4b5bdd" + integrity sha512-N4Ggahe/8SUbTX50P6EdhbW9YWcgbZVb52R4cq6MK+zsoMjRq7rGvV5ztA05QnbaCYqMYx8rTY7KAIA3Crdo4Q== + +"@swc/core-win32-arm64-msvc@1.15.30": + version "1.15.30" + resolved "https://registry.yarnpkg.com/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.15.30.tgz#d005dce92e4ec1b0a7898667c9cf5e5215e4631c" + integrity sha512-CaQENgDHVGOg1mSF5sQVgvfFHG9kjMor2rkLMLeLOkfZYNj13ppnJ9+lfaBZLZUMMbnlGQnavCJb8PVBUOso7Q== + +"@swc/core-win32-arm64-msvc@1.15.32": + version "1.15.32" + resolved "https://registry.yarnpkg.com/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.15.32.tgz#c82006e6ef92a998e96d2160b1657f5334af4d54" + integrity sha512-01yN0o9jvo8xBTP12aPK2wW8b41jmOlGbDDlAnoynotc4pO6xA0zby9f1z6j++qXDpGBttLySq1omgVrlQKYcw== + +"@swc/core-win32-ia32-msvc@1.15.30": + version "1.15.30" + resolved "https://registry.yarnpkg.com/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.15.30.tgz#67ebfaa22266835a3d82776014c2f428346062bd" + integrity sha512-30VdLeGk6fugiUs/kUdJ/pAg7z/zpvVbR11RH60jZ0Z42WIeIniYx0rLEWN7h/pKJ3CopqsQ3RsogCAkRKiA2g== + +"@swc/core-win32-ia32-msvc@1.15.32": + version "1.15.32" + resolved "https://registry.yarnpkg.com/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.15.32.tgz#e2ae1c95bd6599322bc6e9a82685b7537a193f7b" + integrity sha512-fLagI9XZYNpTcmlqAcp3KBtmj7E19WCmYD80Jxj1Kn5tGNa7yxNLd3NNdWxuZGUPl5iC0/KqZru7g08gF6Fsrw== + +"@swc/core-win32-x64-msvc@1.15.30": + version "1.15.30" + resolved "https://registry.yarnpkg.com/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.15.30.tgz#cb602b53f9cdcdfb580cecdb02b536339d4b004b" + integrity sha512-4iObHPR+Q4oDY110EF5SF5eIaaVJNpMdG9C0q3Q92BsJ5y467uHz7sYQhP60WYlLFsLQ1el2YrIPUItUAQGOKg== + +"@swc/core-win32-x64-msvc@1.15.32": + version "1.15.32" + resolved "https://registry.yarnpkg.com/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.15.32.tgz#2535c791821054072a511dee0d13e5de9c5cd29b" + integrity sha512-gbc2bQ/T2CiR+w0OvcVKwLOFAcPZBvmWmolbwpg1E8UrpeC03DGtyMUApOHNXNYWA3SHFrYXCQtosrcMza1YFg== + +"@swc/core@^1.15.6": + version "1.15.30" + resolved "https://registry.yarnpkg.com/@swc/core/-/core-1.15.30.tgz#2f77d5ed3b0df964aac8aaa251dc43ed822100cc" + integrity sha512-R8VQbQY1BZcbIF2p3gjlTCwAQzx1A194ugWfwld5y+WgVVWqVKm7eURGGOVbQVubgKWzidP2agomBbg96rZilQ== + dependencies: + "@swc/counter" "^0.1.3" + "@swc/types" "^0.1.26" optionalDependencies: - "@swagger-api/apidom-error" "^0.93.0" - "@swagger-api/apidom-json-pointer" "^0.93.0" - "@swagger-api/apidom-ns-asyncapi-2" "^0.93.0" - "@swagger-api/apidom-ns-openapi-2" "^0.93.0" - "@swagger-api/apidom-ns-openapi-3-0" "^0.93.0" - "@swagger-api/apidom-ns-openapi-3-1" "^0.93.0" - "@swagger-api/apidom-ns-workflows-1" "^0.93.0" - "@swagger-api/apidom-parser-adapter-api-design-systems-json" "^0.93.0" - "@swagger-api/apidom-parser-adapter-api-design-systems-yaml" "^0.93.0" - "@swagger-api/apidom-parser-adapter-asyncapi-json-2" "^0.93.0" - "@swagger-api/apidom-parser-adapter-asyncapi-yaml-2" "^0.93.0" - "@swagger-api/apidom-parser-adapter-json" "^0.93.0" - "@swagger-api/apidom-parser-adapter-openapi-json-2" "^0.93.0" - "@swagger-api/apidom-parser-adapter-openapi-json-3-0" "^0.93.0" - "@swagger-api/apidom-parser-adapter-openapi-json-3-1" "^0.93.0" - "@swagger-api/apidom-parser-adapter-openapi-yaml-2" "^0.93.0" - "@swagger-api/apidom-parser-adapter-openapi-yaml-3-0" "^0.93.0" - "@swagger-api/apidom-parser-adapter-openapi-yaml-3-1" "^0.93.0" - "@swagger-api/apidom-parser-adapter-workflows-json-1" "^0.93.0" - "@swagger-api/apidom-parser-adapter-workflows-yaml-1" "^0.93.0" - "@swagger-api/apidom-parser-adapter-yaml-1-2" "^0.93.0" - -"@swc/core-darwin-arm64@1.3.107": - version "1.3.107" - resolved "https://registry.npmmirror.com/@swc/core-darwin-arm64/-/core-darwin-arm64-1.3.107.tgz#abac4c19816751de1dcbaab456710ca55e580782" - integrity sha512-47tD/5vSXWxPd0j/ZllyQUg4bqalbQTsmqSw0J4dDdS82MWqCAwUErUrAZPRjBkjNQ6Kmrf5rpCWaGTtPw+ngw== - -"@swc/core-darwin-x64@1.3.107": - version "1.3.107" - resolved "https://registry.npmmirror.com/@swc/core-darwin-x64/-/core-darwin-x64-1.3.107.tgz#4c0df233ebf293429cd2f10224d6a870a5cc019e" - integrity sha512-hwiLJ2ulNkBGAh1m1eTfeY1417OAYbRGcb/iGsJ+LuVLvKAhU/itzsl535CvcwAlt2LayeCFfcI8gdeOLeZa9A== - -"@swc/core-linux-arm-gnueabihf@1.3.107": - version "1.3.107" - resolved "https://registry.npmmirror.com/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.3.107.tgz#81004cca4c7554007ea5ac51e276147e958e3e9f" - integrity sha512-I2wzcC0KXqh0OwymCmYwNRgZ9nxX7DWnOOStJXV3pS0uB83TXAkmqd7wvMBuIl9qu4Hfomi9aDM7IlEEn9tumQ== - -"@swc/core-linux-arm64-gnu@1.3.107": - version "1.3.107" - resolved "https://registry.npmmirror.com/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.3.107.tgz#c01d75df662067fb7805bfdfa66c2f17f2b3185f" - integrity sha512-HWgnn7JORYlOYnGsdunpSF8A+BCZKPLzLtEUA27/M/ZuANcMZabKL9Zurt7XQXq888uJFAt98Gy+59PU90aHKg== - -"@swc/core-linux-arm64-musl@1.3.107": - version "1.3.107" - resolved "https://registry.npmmirror.com/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.3.107.tgz#5e0c4fe3fcc49a7bb77ffafa680622e53c982e0a" - integrity sha512-vfPF74cWfAm8hyhS8yvYI94ucMHIo8xIYU+oFOW9uvDlGQRgnUf/6DEVbLyt/3yfX5723Ln57U8uiMALbX5Pyw== - -"@swc/core-linux-x64-gnu@1.3.107": - version "1.3.107" - resolved "https://registry.npmmirror.com/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.3.107.tgz#afb4a656a1717170b2c8b76c9b2349b5077630b4" - integrity sha512-uBVNhIg0ip8rH9OnOsCARUFZ3Mq3tbPHxtmWk9uAa5u8jQwGWeBx5+nTHpDOVd3YxKb6+5xDEI/edeeLpha/9g== - -"@swc/core-linux-x64-musl@1.3.107": - version "1.3.107" - resolved "https://registry.npmmirror.com/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.3.107.tgz#3f9bce2fe13691be39fddc39bba8558fe6308823" - integrity sha512-mvACkUvzSIB12q1H5JtabWATbk3AG+pQgXEN95AmEX2ZA5gbP9+B+mijsg7Sd/3tboHr7ZHLz/q3SHTvdFJrEw== - -"@swc/core-win32-arm64-msvc@1.3.107": - version "1.3.107" - resolved "https://registry.npmmirror.com/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.3.107.tgz#5b485e9ce2de6f27ce2fbc1ba8c0b4e98009318d" - integrity sha512-J3P14Ngy/1qtapzbguEH41kY109t6DFxfbK4Ntz9dOWNuVY3o9/RTB841ctnJk0ZHEG+BjfCJjsD2n8H5HcaOA== - -"@swc/core-win32-ia32-msvc@1.3.107": - version "1.3.107" - resolved "https://registry.npmmirror.com/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.3.107.tgz#1bbe3ce6784b3e4203bf89443c33411c27389b56" - integrity sha512-ZBUtgyjTHlz8TPJh7kfwwwFma+ktr6OccB1oXC8fMSopD0AxVnQasgun3l3099wIsAB9eEsJDQ/3lDkOLs1gBA== - -"@swc/core-win32-x64-msvc@1.3.107": - version "1.3.107" - resolved "https://registry.npmmirror.com/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.3.107.tgz#c89640b16504ddda1f1faf573a7ed7193dc87485" - integrity sha512-Eyzo2XRqWOxqhE1gk9h7LWmUf4Bp4Xn2Ttb0ayAXFp6YSTxQIThXcT9kipXZqcpxcmDwoq8iWbbf2P8XL743EA== + "@swc/core-darwin-arm64" "1.15.30" + "@swc/core-darwin-x64" "1.15.30" + "@swc/core-linux-arm-gnueabihf" "1.15.30" + "@swc/core-linux-arm64-gnu" "1.15.30" + "@swc/core-linux-arm64-musl" "1.15.30" + "@swc/core-linux-ppc64-gnu" "1.15.30" + "@swc/core-linux-s390x-gnu" "1.15.30" + "@swc/core-linux-x64-gnu" "1.15.30" + "@swc/core-linux-x64-musl" "1.15.30" + "@swc/core-win32-arm64-msvc" "1.15.30" + "@swc/core-win32-ia32-msvc" "1.15.30" + "@swc/core-win32-x64-msvc" "1.15.30" "@swc/core@^1.3.46": - version "1.3.107" - resolved "https://registry.npmmirror.com/@swc/core/-/core-1.3.107.tgz#081697224ec3bffa63c33209d242e4f0b2c49e78" - integrity sha512-zKhqDyFcTsyLIYK1iEmavljZnf4CCor5pF52UzLAz4B6Nu/4GLU+2LQVAf+oRHjusG39PTPjd2AlRT3f3QWfsQ== + version "1.15.32" + resolved "https://registry.yarnpkg.com/@swc/core/-/core-1.15.32.tgz#2333d66f4b8e7c4fded087ead13c135ff84ab9d6" + integrity sha512-/eWL0n43D64QWEUHLtTE+jDqjkJhyidjkDhv6f0uJohOUAhywxQ9wXYp845DNNds0JpCdI4Uo0a9bl+vbXf+ew== dependencies: - "@swc/counter" "^0.1.1" - "@swc/types" "^0.1.5" + "@swc/counter" "^0.1.3" + "@swc/types" "^0.1.26" optionalDependencies: - "@swc/core-darwin-arm64" "1.3.107" - "@swc/core-darwin-x64" "1.3.107" - "@swc/core-linux-arm-gnueabihf" "1.3.107" - "@swc/core-linux-arm64-gnu" "1.3.107" - "@swc/core-linux-arm64-musl" "1.3.107" - "@swc/core-linux-x64-gnu" "1.3.107" - "@swc/core-linux-x64-musl" "1.3.107" - "@swc/core-win32-arm64-msvc" "1.3.107" - "@swc/core-win32-ia32-msvc" "1.3.107" - "@swc/core-win32-x64-msvc" "1.3.107" - -"@swc/counter@^0.1.1": - version "0.1.2" - resolved "https://registry.npmmirror.com/@swc/counter/-/counter-0.1.2.tgz#bf06d0770e47c6f1102270b744e17b934586985e" - integrity sha512-9F4ys4C74eSTEUNndnER3VJ15oru2NumfQxS8geE+f3eB5xvfxpWyqE5XlVnxb/R14uoXi6SLbBwwiDSkv+XEw== + "@swc/core-darwin-arm64" "1.15.32" + "@swc/core-darwin-x64" "1.15.32" + "@swc/core-linux-arm-gnueabihf" "1.15.32" + "@swc/core-linux-arm64-gnu" "1.15.32" + "@swc/core-linux-arm64-musl" "1.15.32" + "@swc/core-linux-ppc64-gnu" "1.15.32" + "@swc/core-linux-s390x-gnu" "1.15.32" + "@swc/core-linux-x64-gnu" "1.15.32" + "@swc/core-linux-x64-musl" "1.15.32" + "@swc/core-win32-arm64-msvc" "1.15.32" + "@swc/core-win32-ia32-msvc" "1.15.32" + "@swc/core-win32-x64-msvc" "1.15.32" + +"@swc/counter@^0.1.3": + version "0.1.3" + resolved "https://registry.yarnpkg.com/@swc/counter/-/counter-0.1.3.tgz#cc7463bd02949611c6329596fccd2b0ec782b0e9" + integrity sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ== "@swc/helpers@^0.5.0": version "0.5.3" @@ -9795,25 +12683,35 @@ dependencies: tslib "^2.4.0" -"@swc/jest@^0.2.22": - version "0.2.31" - resolved "https://registry.npmmirror.com/@swc/jest/-/jest-0.2.31.tgz#eb791d917326c24cad84c4d357d0b01de23c6dfd" - integrity sha512-Gh0Ste380O8KUY1IqsKr+aOvqqs2Loa+WcWWVNwl+lhXqOWK1iTFAP1K0IDfLqAuFP68+D/PxcpBJn21e6Quvw== +"@swc/helpers@^0.5.17", "@swc/helpers@^0.5.8": + version "0.5.21" + resolved "https://registry.yarnpkg.com/@swc/helpers/-/helpers-0.5.21.tgz#0b1b020317ee1282860ca66f7e9a7c7790f05ae0" + integrity sha512-jI/VAmtdjB/RnI8GTnokyX7Ug8c+g+ffD6QRLa6XQewtnGyukKkKSk3wLTM3b5cjt1jNh9x0jfVlagdN2gDKQg== + dependencies: + tslib "^2.8.0" + +"@swc/jest@^0.2.22", "@swc/jest@^0.2.39": + version "0.2.39" + resolved "https://registry.yarnpkg.com/@swc/jest/-/jest-0.2.39.tgz#482bee0adb0726fab1487a4f902a278ec563a6b7" + integrity sha512-eyokjOwYd0Q8RnMHri+8/FS1HIrIUKK/sRrFp8c1dThUOfNeCWbLmBP1P5VsKdvmkd25JaH+OKYwEYiAYg9YAA== dependencies: - "@jest/create-cache-key-function" "^29.7.0" + "@jest/create-cache-key-function" "^30.0.0" + "@swc/counter" "^0.1.3" jsonc-parser "^3.2.0" -"@swc/types@^0.1.5": - version "0.1.5" - resolved "https://registry.npmmirror.com/@swc/types/-/types-0.1.5.tgz#043b731d4f56a79b4897a3de1af35e75d56bc63a" - integrity sha512-myfUej5naTBWnqOCc/MdVOLVjXUXtIA+NpDrDBKJtLLg2shUjBu3cZmB/85RyitKc55+lUUyl7oRfLOvkr2hsw== +"@swc/types@^0.1.26": + version "0.1.26" + resolved "https://registry.yarnpkg.com/@swc/types/-/types-0.1.26.tgz#2a976a1870caef1992316dda1464150ee36968b5" + integrity sha512-lyMwd7WGgG79RS7EERZV3T8wMdmPq3xwyg+1nmAM64kIhx5yl+juO2PYIHb7vTiPgPCj8LYjsNV2T5wiQHUEaw== + dependencies: + "@swc/counter" "^0.1.3" -"@szmarczak/http-timer@^4.0.5": - version "4.0.6" - resolved "https://registry.npmmirror.com/@szmarczak/http-timer/-/http-timer-4.0.6.tgz#b4a914bb62e7c272d4e5989fe4440f812ab1d807" - integrity sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w== +"@tanstack/react-table@^8.21.3": + version "8.21.3" + resolved "https://registry.yarnpkg.com/@tanstack/react-table/-/react-table-8.21.3.tgz#2c38c747a5731c1a07174fda764b9c2b1fb5e91b" + integrity sha512-5nNMTSETP4ykGegmVkhjcS8tTLW6Vl4axfEGQN3v0zdHYbK4UfoqfPChclTrJ4EoK9QynqAu9oUf8VEmrpZ5Ww== dependencies: - defer-to-connect "^2.0.0" + "@tanstack/table-core" "8.21.3" "@tanstack/react-virtual@^3.0.0-beta.60": version "3.0.2" @@ -9822,11 +12720,95 @@ dependencies: "@tanstack/virtual-core" "3.0.0" +"@tanstack/table-core@8.21.3": + version "8.21.3" + resolved "https://registry.yarnpkg.com/@tanstack/table-core/-/table-core-8.21.3.tgz#2977727d8fc8dfa079112d9f4d4c019110f1732c" + integrity sha512-ldZXEhOBb8Is7xLs01fR3YEc3DERiz5silj8tnGkFZytt1abEvl/GhUmCE0PMLaMPTa3Jk4HbKmRlHmu+gCftg== + "@tanstack/virtual-core@3.0.0": version "3.0.0" resolved "https://registry.npmmirror.com/@tanstack/virtual-core/-/virtual-core-3.0.0.tgz#637bee36f0cabf96a1d436887c90f138a7e9378b" integrity sha512-SYXOBTjJb05rXa2vl55TTwO40A6wKu0R5i1qQwhJYNDIqaIGF7D0HsLw+pJAyi2OvntlEIVusx3xtbbgSUi6zg== +"@terasky/backstage-plugin-kro-common@^0.2.1": + version "0.2.9" + resolved "https://registry.yarnpkg.com/@terasky/backstage-plugin-kro-common/-/backstage-plugin-kro-common-0.2.9.tgz#9f508b62209b80e6d8e2a3b3fc574a6cf607bd1f" + integrity sha512-BwP0OZxLyajjHrlN3wRK1UuGffbrVMxbBA8Zs70DxsuiU2iMMVARUuCYK+TsfYBpsxZXfjnKj6MPcvG1zSSB9w== + dependencies: + "@backstage/plugin-permission-common" "^0.9.5" + +"@terasky/backstage-plugin-kro-resources-backend@^0.2.1": + version "0.2.1" + resolved "https://registry.yarnpkg.com/@terasky/backstage-plugin-kro-resources-backend/-/backstage-plugin-kro-resources-backend-0.2.1.tgz#c2432df3d5e4bd9209ddc716c5182bd326d4604b" + integrity sha512-g11Ef6vWGOfQHdt6f2hQ+ef1ObLNvYFgCPKOO1tka+G9737gK3ak/gxqotJuINrSbavcp3DmeR1DFe5ZGRAdrg== + dependencies: + "@backstage/backend-defaults" "^0.12.1" + "@backstage/backend-plugin-api" "^1.4.3" + "@backstage/config" "^1.3.4" + "@backstage/plugin-permission-node" "^0.10.4" + "@terasky/backstage-plugin-kro-common" "^0.2.1" + "@types/express" "^4.17.22" + express "^4.17.1" + express-promise-router "^4.1.1" + node-fetch "^2.7.0" + winston "^3.2.1" + yn "^4.0.0" + +"@terasky/backstage-plugin-kro-resources-frontend@^0.2.1": + version "0.2.1" + resolved "https://registry.yarnpkg.com/@terasky/backstage-plugin-kro-resources-frontend/-/backstage-plugin-kro-resources-frontend-0.2.1.tgz#e9c7b88f7b8924eeaca1b6d689a2c2b1c27cd11e" + integrity sha512-IREMUG1NCOLCohsX49+od5JqagT8SiuQ98zebm5cf9hBj5umzVDq+OAULsBj/tlwPrQjhWQsf7RF512nR9zrNg== + dependencies: + "@backstage/catalog-model" "^1.7.5" + "@backstage/core-components" "^0.18.1" + "@backstage/core-plugin-api" "^1.11.0" + "@backstage/frontend-plugin-api" "^0.12.0" + "@backstage/plugin-catalog-react" "^1.21.1" + "@backstage/plugin-kubernetes" "^0.12.11" + "@backstage/plugin-kubernetes-react" "^0.5.11" + "@backstage/plugin-permission-common" "^0.9.1" + "@backstage/plugin-permission-react" "^0.4.36" + "@backstage/theme" "^0.6.8" + "@material-ui/core" "^4.12.4" + "@material-ui/icons" "^4.11.3" + "@material-ui/lab" "^4.0.0-alpha.61" + "@terasky/backstage-plugin-kro-common" "^0.2.1" + "@types/pluralize" "^0.0.33" + dagre "^0.8.5" + file-saver "^2.0.5" + js-yaml "^4.1.0" + pluralize "^8.0.0" + react-copy-to-clipboard "^5.1.0" + react-flow-renderer "^10.3.17" + react-json-view "^1.21.3" + react-syntax-highlighter "^15.6.1" + react-use "^17.6.0" + +"@terasky/backstage-plugin-kubernetes-ingestor@^2.2.0": + version "2.9.1" + resolved "https://registry.yarnpkg.com/@terasky/backstage-plugin-kubernetes-ingestor/-/backstage-plugin-kubernetes-ingestor-2.9.1.tgz#4b45f523442e46ec083f9b2800370e60146a7446" + integrity sha512-rfzzFlOsfPMCr9/9kIdo+dQc7LYLC7D++/MDFRxC+cKO2NKbglYNOjdgxoXNSRCI48jCB/nGCq4ZlKtViHPYzg== + dependencies: + "@backstage/backend-defaults" "^0.13.1" + "@backstage/backend-plugin-api" "^1.5.0" + "@backstage/catalog-client" "^1.12.1" + "@backstage/catalog-model" "^1.7.6" + "@backstage/config" "^1.3.6" + "@backstage/plugin-catalog-import" "^0.13.7" + "@backstage/plugin-catalog-node" "^1.20.0" + "@backstage/plugin-kubernetes" "^0.12.13" + "@backstage/plugin-kubernetes-backend" "^0.20.4" + "@backstage/plugin-kubernetes-common" "^0.9.8" + "@backstage/plugin-kubernetes-node" "^0.3.6" + "@backstage/plugin-permission-common" "^0.9.3" + "@backstage/plugin-signals-node" "^0.1.26" + "@types/pluralize" "^0.0.33" + express "^4.17.1" + express-promise-router "^4.1.1" + js-yaml "^4.1.0" + node-fetch "^2.7.0" + pluralize "^8.0.0" + "@testing-library/dom@^8.0.0": version "8.20.1" resolved "https://registry.yarnpkg.com/@testing-library/dom/-/dom-8.20.1.tgz#2e52a32e46fc88369eef7eef634ac2a192decd9f" @@ -9902,6 +12884,13 @@ "@testing-library/dom" "^9.0.0" "@types/react-dom" "^18.0.0" +"@testing-library/react@^16.0.0": + version "16.3.2" + resolved "https://registry.yarnpkg.com/@testing-library/react/-/react-16.3.2.tgz#672883b7acb8e775fc0492d9e9d25e06e89786d0" + integrity sha512-XU5/SytQM+ykqMnAnvB2umaJNIOsLF3PVv//1Ew4CTcpz0/BRyy/af40qqrt7SjKpDdT1saBMc42CUok5gaw+g== + dependencies: + "@babel/runtime" "^7.12.5" + "@testing-library/user-event@^14.0.0": version "14.5.2" resolved "https://registry.npmmirror.com/@testing-library/user-event/-/user-event-14.5.2.tgz#db7257d727c891905947bd1c1a99da20e03c2ebd" @@ -9912,16 +12901,24 @@ resolved "https://registry.npmmirror.com/@tokenizer/token/-/token-0.3.0.tgz#fe98a93fe789247e998c75e74e9c7c63217aa276" integrity sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A== -"@tootallnate/once@1": - version "1.1.2" - resolved "https://registry.npmmirror.com/@tootallnate/once/-/once-1.1.2.tgz#ccb91445360179a04e7fe6aff78c00ffc1eeaf82" - integrity sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw== - "@tootallnate/once@2": version "2.0.0" resolved "https://registry.npmmirror.com/@tootallnate/once/-/once-2.0.0.tgz#f544a148d3ab35801c1f633a7441fd87c2e484bf" integrity sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A== +"@tootallnate/quickjs-emscripten@^0.23.0": + version "0.23.0" + resolved "https://registry.yarnpkg.com/@tootallnate/quickjs-emscripten/-/quickjs-emscripten-0.23.0.tgz#db4ecfd499a9765ab24002c3b696d02e6d32a12c" + integrity sha512-C5Mc6rdnsaJDjO3UpGW/CQTHtCKaYlScZTly4JIu97Jxo/odCiH0ITnDXSJPTOrEKk/ycSZ0AOgTmkDtkOsvIA== + +"@tree-sitter-grammars/tree-sitter-yaml@=0.7.1": + version "0.7.1" + resolved "https://registry.yarnpkg.com/@tree-sitter-grammars/tree-sitter-yaml/-/tree-sitter-yaml-0.7.1.tgz#9fcf9c56c7b4adb19097f869ada29c2d7a62c93d" + integrity sha512-AynBwkIoQCTgjDR33bDUp9Mqq+YTco0is3n5hRApMqG9of/6A4eQsfC1/uSEeHSUyMQSYawcAWamsexnVpIP4Q== + dependencies: + node-addon-api "^8.3.1" + node-gyp-build "^4.8.4" + "@trendyol-js/openstack-swift-sdk@^0.0.7": version "0.0.7" resolved "https://registry.npmmirror.com/@trendyol-js/openstack-swift-sdk/-/openstack-swift-sdk-0.0.7.tgz#45ba1dbfd1ccd3df263b25981a4d563943e1766d" @@ -9937,6 +12934,15 @@ resolved "https://registry.npmmirror.com/@trysound/sax/-/sax-0.2.0.tgz#cccaab758af56761eb7bf37af6f03f326dd798ad" integrity sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA== +"@ts-morph/common@~0.25.0": + version "0.25.0" + resolved "https://registry.yarnpkg.com/@ts-morph/common/-/common-0.25.0.tgz#b76cbd517118acc8eadaf12b2fc2d47f42923452" + integrity sha512-kMnZz+vGGHi4GoHnLmMhGNjm44kGtKUXGnOvrKmMwAuvNjM/PgKVGfUnL7IDvK7Jb2QQ82jq3Zmp04Gy+r3Dkg== + dependencies: + minimatch "^9.0.4" + path-browserify "^1.0.1" + tinyglobby "^0.2.9" + "@tsconfig/node10@^1.0.7": version "1.0.9" resolved "https://registry.npmmirror.com/@tsconfig/node10/-/node10-1.0.9.tgz#df4907fc07a886922637b15e02d4cebc4c0021b2" @@ -9957,18 +12963,12 @@ resolved "https://registry.npmmirror.com/@tsconfig/node16/-/node16-1.0.4.tgz#0b92dcc0cc1c81f6f306a381f28e31b1a56536e9" integrity sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA== -"@tufjs/canonical-json@1.0.0": - version "1.0.0" - resolved "https://registry.npmmirror.com/@tufjs/canonical-json/-/canonical-json-1.0.0.tgz#eade9fd1f537993bc1f0949f3aea276ecc4fab31" - integrity sha512-QTnf++uxunWvG2z3UFNzAoQPHxnSXOwtaI3iJ+AohhV+5vONuArPjJE7aPXPVXfXJsqrVbZBu9b81AJoSd09IQ== - -"@tufjs/models@1.0.4": - version "1.0.4" - resolved "https://registry.npmmirror.com/@tufjs/models/-/models-1.0.4.tgz#5a689630f6b9dbda338d4b208019336562f176ef" - integrity sha512-qaGV9ltJP0EO25YfFUPhxRVK0evXFIAGicsVXuRim4Ed9cjPxYhNnNJ49SFmbeLgtxpslIkX317IgpfcHPVj/A== +"@tybys/wasm-util@^0.10.1": + version "0.10.1" + resolved "https://registry.yarnpkg.com/@tybys/wasm-util/-/wasm-util-0.10.1.tgz#ecddd3205cf1e2d5274649ff0eedd2991ed7f414" + integrity sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg== dependencies: - "@tufjs/canonical-json" "1.0.0" - minimatch "^9.0.0" + tslib "^2.4.0" "@types/aria-query@^5.0.1": version "5.0.4" @@ -9982,7 +12982,7 @@ "@types/babel__core@^7.1.14": version "7.20.5" - resolved "https://registry.npmmirror.com/@types/babel__core/-/babel__core-7.20.5.tgz#3df15f27ba85319caa07ba08d0721889bb39c017" + resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.20.5.tgz#3df15f27ba85319caa07ba08d0721889bb39c017" integrity sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA== dependencies: "@babel/parser" "^7.20.7" @@ -9992,26 +12992,26 @@ "@types/babel__traverse" "*" "@types/babel__generator@*": - version "7.6.8" - resolved "https://registry.npmmirror.com/@types/babel__generator/-/babel__generator-7.6.8.tgz#f836c61f48b1346e7d2b0d93c6dacc5b9535d3ab" - integrity sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw== + version "7.27.0" + resolved "https://registry.yarnpkg.com/@types/babel__generator/-/babel__generator-7.27.0.tgz#b5819294c51179957afaec341442f9341e4108a9" + integrity sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg== dependencies: "@babel/types" "^7.0.0" "@types/babel__template@*": version "7.4.4" - resolved "https://registry.npmmirror.com/@types/babel__template/-/babel__template-7.4.4.tgz#5672513701c1b2199bc6dad636a9d7491586766f" + resolved "https://registry.yarnpkg.com/@types/babel__template/-/babel__template-7.4.4.tgz#5672513701c1b2199bc6dad636a9d7491586766f" integrity sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A== dependencies: "@babel/parser" "^7.1.0" "@babel/types" "^7.0.0" "@types/babel__traverse@*", "@types/babel__traverse@^7.0.6": - version "7.20.5" - resolved "https://registry.npmmirror.com/@types/babel__traverse/-/babel__traverse-7.20.5.tgz#7b7502be0aa80cc4ef22978846b983edaafcd4dd" - integrity sha512-WXCyOcRtH37HAUkpXhUduaxdm82b4GSlyTqajXviN4EfiuPgNYR109xMCKvpl6zPIpua0DGlMEDCq+g8EdoheQ== + version "7.28.0" + resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.28.0.tgz#07d713d6cce0d265c9849db0cbe62d3f61f36f74" + integrity sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q== dependencies: - "@babel/types" "^7.20.7" + "@babel/types" "^7.28.2" "@types/body-parser@*": version "1.19.5" @@ -10033,16 +13033,6 @@ resolved "https://registry.npmmirror.com/@types/btoa-lite/-/btoa-lite-1.0.2.tgz#82bb6aab00abf7cff3ca2825abe010c0cd536ae5" integrity sha512-ZYbcE2x7yrvNFJiU7xJGrpF/ihpkM7zKgw8bha3LNJSesvTtUNxbpzaT7WXBIryf6jovisrxTBvymxMeLLj1Mg== -"@types/cacheable-request@^6.0.1": - version "6.0.3" - resolved "https://registry.npmmirror.com/@types/cacheable-request/-/cacheable-request-6.0.3.tgz#a430b3260466ca7b5ca5bfd735693b36e7a9d183" - integrity sha512-IQ3EbTzGxIigb1I3qPZc1rWJnH0BmSKv5QYTalEwweFvyBDLSAe24zP0le/hyi7ecGfZVlIVAg4BZqb8WBwKqw== - dependencies: - "@types/http-cache-semantics" "*" - "@types/keyv" "^3.1.4" - "@types/node" "*" - "@types/responselike" "^1.0.0" - "@types/caseless@*": version "0.12.5" resolved "https://registry.npmmirror.com/@types/caseless/-/caseless-0.12.5.tgz#db9468cb1b1b5a925b8f34822f1669df0c5472f5" @@ -10077,6 +13067,11 @@ dependencies: "@types/node" "*" +"@types/content-type@^1.1.8": + version "1.1.9" + resolved "https://registry.yarnpkg.com/@types/content-type/-/content-type-1.1.9.tgz#a0240a8141b33549ac0ca6847f4b801580012bca" + integrity sha512-Hq9IMnfekuOCsEmYl4QX2HBrT+XsfXiupfrLLY8Dcf3Puf4BkBOxSbWYTITSOQAhJoYPBez+b4MJRpIYL65z8A== + "@types/cookie@^0.4.1": version "0.4.1" resolved "https://registry.yarnpkg.com/@types/cookie/-/cookie-0.4.1.tgz#bfd02c1f2224567676c1545199f87c3a861d878d" @@ -10094,6 +13089,216 @@ dependencies: "@types/node" "*" +"@types/d3-array@*": + version "3.2.2" + resolved "https://registry.yarnpkg.com/@types/d3-array/-/d3-array-3.2.2.tgz#e02151464d02d4a1b44646d0fcdb93faf88fde8c" + integrity sha512-hOLWVbm7uRza0BYXpIIW5pxfrKe0W+D5lrFiAEYR+pb6w3N2SwSMaJbXdUfSEv+dT4MfHBLtn5js0LAWaO6otw== + +"@types/d3-axis@*": + version "3.0.6" + resolved "https://registry.yarnpkg.com/@types/d3-axis/-/d3-axis-3.0.6.tgz#e760e5765b8188b1defa32bc8bb6062f81e4c795" + integrity sha512-pYeijfZuBd87T0hGn0FO1vQ/cgLk6E1ALJjfkC0oJ8cbwkZl3TpgS8bVBLZN+2jjGgg38epgxb2zmoGtSfvgMw== + dependencies: + "@types/d3-selection" "*" + +"@types/d3-brush@*": + version "3.0.6" + resolved "https://registry.yarnpkg.com/@types/d3-brush/-/d3-brush-3.0.6.tgz#c2f4362b045d472e1b186cdbec329ba52bdaee6c" + integrity sha512-nH60IZNNxEcrh6L1ZSMNA28rj27ut/2ZmI3r96Zd+1jrZD++zD3LsMIjWlvg4AYrHn/Pqz4CF3veCxGjtbqt7A== + dependencies: + "@types/d3-selection" "*" + +"@types/d3-chord@*": + version "3.0.6" + resolved "https://registry.yarnpkg.com/@types/d3-chord/-/d3-chord-3.0.6.tgz#1706ca40cf7ea59a0add8f4456efff8f8775793d" + integrity sha512-LFYWWd8nwfwEmTZG9PfQxd17HbNPksHBiJHaKuY1XeqscXacsS2tyoo6OdRsjf+NQYeB6XrNL3a25E3gH69lcg== + +"@types/d3-color@*": + version "3.1.3" + resolved "https://registry.yarnpkg.com/@types/d3-color/-/d3-color-3.1.3.tgz#368c961a18de721da8200e80bf3943fb53136af2" + integrity sha512-iO90scth9WAbmgv7ogoq57O9YpKmFBbmoEoCHDB2xMBY0+/KVrqAaCDyCE16dUspeOvIxFFRI+0sEtqDqy2b4A== + +"@types/d3-contour@*": + version "3.0.6" + resolved "https://registry.yarnpkg.com/@types/d3-contour/-/d3-contour-3.0.6.tgz#9ada3fa9c4d00e3a5093fed0356c7ab929604231" + integrity sha512-BjzLgXGnCWjUSYGfH1cpdo41/hgdWETu4YxpezoztawmqsvCeep+8QGfiY6YbDvfgHz/DkjeIkkZVJavB4a3rg== + dependencies: + "@types/d3-array" "*" + "@types/geojson" "*" + +"@types/d3-delaunay@*": + version "6.0.4" + resolved "https://registry.yarnpkg.com/@types/d3-delaunay/-/d3-delaunay-6.0.4.tgz#185c1a80cc807fdda2a3fe960f7c11c4a27952e1" + integrity sha512-ZMaSKu4THYCU6sV64Lhg6qjf1orxBthaC161plr5KuPHo3CNm8DTHiLw/5Eq2b6TsNP0W0iJrUOFscY6Q450Hw== + +"@types/d3-dispatch@*": + version "3.0.7" + resolved "https://registry.yarnpkg.com/@types/d3-dispatch/-/d3-dispatch-3.0.7.tgz#ef004d8a128046cfce434d17182f834e44ef95b2" + integrity sha512-5o9OIAdKkhN1QItV2oqaE5KMIiXAvDWBDPrD85e58Qlz1c1kI/J0NcqbEG88CoTwJrYe7ntUCVfeUl2UJKbWgA== + +"@types/d3-drag@*": + version "3.0.7" + resolved "https://registry.yarnpkg.com/@types/d3-drag/-/d3-drag-3.0.7.tgz#b13aba8b2442b4068c9a9e6d1d82f8bcea77fc02" + integrity sha512-HE3jVKlzU9AaMazNufooRJ5ZpWmLIoc90A37WU2JMmeq28w1FQqCZswHZ3xR+SuxYftzHq6WU6KJHvqxKzTxxQ== + dependencies: + "@types/d3-selection" "*" + +"@types/d3-dsv@*": + version "3.0.7" + resolved "https://registry.yarnpkg.com/@types/d3-dsv/-/d3-dsv-3.0.7.tgz#0a351f996dc99b37f4fa58b492c2d1c04e3dac17" + integrity sha512-n6QBF9/+XASqcKK6waudgL0pf/S5XHPPI8APyMLLUHd8NqouBGLsU8MgtO7NINGtPBtk9Kko/W4ea0oAspwh9g== + +"@types/d3-ease@*": + version "3.0.2" + resolved "https://registry.yarnpkg.com/@types/d3-ease/-/d3-ease-3.0.2.tgz#e28db1bfbfa617076f7770dd1d9a48eaa3b6c51b" + integrity sha512-NcV1JjO5oDzoK26oMzbILE6HW7uVXOHLQvHshBUW4UMdZGfiY6v5BeQwh9a9tCzv+CeefZQHJt5SRgK154RtiA== + +"@types/d3-fetch@*": + version "3.0.7" + resolved "https://registry.yarnpkg.com/@types/d3-fetch/-/d3-fetch-3.0.7.tgz#c04a2b4f23181aa376f30af0283dbc7b3b569980" + integrity sha512-fTAfNmxSb9SOWNB9IoG5c8Hg6R+AzUHDRlsXsDZsNp6sxAEOP0tkP3gKkNSO/qmHPoBFTxNrjDprVHDQDvo5aA== + dependencies: + "@types/d3-dsv" "*" + +"@types/d3-force@*": + version "3.0.10" + resolved "https://registry.yarnpkg.com/@types/d3-force/-/d3-force-3.0.10.tgz#6dc8fc6e1f35704f3b057090beeeb7ac674bff1a" + integrity sha512-ZYeSaCF3p73RdOKcjj+swRlZfnYpK1EbaDiYICEEp5Q6sUiqFaFQ9qgoshp5CzIyyb/yD09kD9o2zEltCexlgw== + +"@types/d3-format@*": + version "3.0.4" + resolved "https://registry.yarnpkg.com/@types/d3-format/-/d3-format-3.0.4.tgz#b1e4465644ddb3fdf3a263febb240a6cd616de90" + integrity sha512-fALi2aI6shfg7vM5KiR1wNJnZ7r6UuggVqtDA+xiEdPZQwy/trcQaHnwShLuLdta2rTymCNpxYTiMZX/e09F4g== + +"@types/d3-geo@*": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@types/d3-geo/-/d3-geo-3.1.0.tgz#b9e56a079449174f0a2c8684a9a4df3f60522440" + integrity sha512-856sckF0oP/diXtS4jNsiQw/UuK5fQG8l/a9VVLeSouf1/PPbBE1i1W852zVwKwYCBkFJJB7nCFTbk6UMEXBOQ== + dependencies: + "@types/geojson" "*" + +"@types/d3-hierarchy@*": + version "3.1.7" + resolved "https://registry.yarnpkg.com/@types/d3-hierarchy/-/d3-hierarchy-3.1.7.tgz#6023fb3b2d463229f2d680f9ac4b47466f71f17b" + integrity sha512-tJFtNoYBtRtkNysX1Xq4sxtjK8YgoWUNpIiUee0/jHGRwqvzYxkq0hGVbbOGSz+JgFxxRu4K8nb3YpG3CMARtg== + +"@types/d3-interpolate@*": + version "3.0.4" + resolved "https://registry.yarnpkg.com/@types/d3-interpolate/-/d3-interpolate-3.0.4.tgz#412b90e84870285f2ff8a846c6eb60344f12a41c" + integrity sha512-mgLPETlrpVV1YRJIglr4Ez47g7Yxjl1lj7YKsiMCb27VJH9W8NVM6Bb9d8kkpG/uAQS5AmbA48q2IAolKKo1MA== + dependencies: + "@types/d3-color" "*" + +"@types/d3-path@*": + version "3.1.1" + resolved "https://registry.yarnpkg.com/@types/d3-path/-/d3-path-3.1.1.tgz#f632b380c3aca1dba8e34aa049bcd6a4af23df8a" + integrity sha512-VMZBYyQvbGmWyWVea0EHs/BwLgxc+MKi1zLDCONksozI4YJMcTt8ZEuIR4Sb1MMTE8MMW49v0IwI5+b7RmfWlg== + +"@types/d3-polygon@*": + version "3.0.2" + resolved "https://registry.yarnpkg.com/@types/d3-polygon/-/d3-polygon-3.0.2.tgz#dfae54a6d35d19e76ac9565bcb32a8e54693189c" + integrity sha512-ZuWOtMaHCkN9xoeEMr1ubW2nGWsp4nIql+OPQRstu4ypeZ+zk3YKqQT0CXVe/PYqrKpZAi+J9mTs05TKwjXSRA== + +"@types/d3-quadtree@*": + version "3.0.6" + resolved "https://registry.yarnpkg.com/@types/d3-quadtree/-/d3-quadtree-3.0.6.tgz#d4740b0fe35b1c58b66e1488f4e7ed02952f570f" + integrity sha512-oUzyO1/Zm6rsxKRHA1vH0NEDG58HrT5icx/azi9MF1TWdtttWl0UIUsjEQBBh+SIkrpd21ZjEv7ptxWys1ncsg== + +"@types/d3-random@*": + version "3.0.3" + resolved "https://registry.yarnpkg.com/@types/d3-random/-/d3-random-3.0.3.tgz#ed995c71ecb15e0cd31e22d9d5d23942e3300cfb" + integrity sha512-Imagg1vJ3y76Y2ea0871wpabqp613+8/r0mCLEBfdtqC7xMSfj9idOnmBYyMoULfHePJyxMAw3nWhJxzc+LFwQ== + +"@types/d3-scale-chromatic@*": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@types/d3-scale-chromatic/-/d3-scale-chromatic-3.1.0.tgz#dc6d4f9a98376f18ea50bad6c39537f1b5463c39" + integrity sha512-iWMJgwkK7yTRmWqRB5plb1kadXyQ5Sj8V/zYlFGMUBbIPKQScw+Dku9cAAMgJG+z5GYDoMjWGLVOvjghDEFnKQ== + +"@types/d3-scale@*": + version "4.0.9" + resolved "https://registry.yarnpkg.com/@types/d3-scale/-/d3-scale-4.0.9.tgz#57a2f707242e6fe1de81ad7bfcccaaf606179afb" + integrity sha512-dLmtwB8zkAeO/juAMfnV+sItKjlsw2lKdZVVy6LRr0cBmegxSABiLEpGVmSJJ8O08i4+sGR6qQtb6WtuwJdvVw== + dependencies: + "@types/d3-time" "*" + +"@types/d3-selection@*": + version "3.0.11" + resolved "https://registry.yarnpkg.com/@types/d3-selection/-/d3-selection-3.0.11.tgz#bd7a45fc0a8c3167a631675e61bc2ca2b058d4a3" + integrity sha512-bhAXu23DJWsrI45xafYpkQ4NtcKMwWnAC/vKrd2l+nxMFuvOT3XMYTIj2opv8vq8AO5Yh7Qac/nSeP/3zjTK0w== + +"@types/d3-shape@*": + version "3.1.8" + resolved "https://registry.yarnpkg.com/@types/d3-shape/-/d3-shape-3.1.8.tgz#d1516cc508753be06852cd06758e3bb54a22b0e3" + integrity sha512-lae0iWfcDeR7qt7rA88BNiqdvPS5pFVPpo5OfjElwNaT2yyekbM0C9vK+yqBqEmHr6lDkRnYNoTBYlAgJa7a4w== + dependencies: + "@types/d3-path" "*" + +"@types/d3-time-format@*": + version "4.0.3" + resolved "https://registry.yarnpkg.com/@types/d3-time-format/-/d3-time-format-4.0.3.tgz#d6bc1e6b6a7db69cccfbbdd4c34b70632d9e9db2" + integrity sha512-5xg9rC+wWL8kdDj153qZcsJ0FWiFt0J5RB6LYUNZjwSnesfblqrI/bJ1wBdJ8OQfncgbJG5+2F+qfqnqyzYxyg== + +"@types/d3-time@*": + version "3.0.4" + resolved "https://registry.yarnpkg.com/@types/d3-time/-/d3-time-3.0.4.tgz#8472feecd639691450dd8000eb33edd444e1323f" + integrity sha512-yuzZug1nkAAaBlBBikKZTgzCeA+k1uy4ZFwWANOfKw5z5LRhV0gNA7gNkKm7HoK+HRN0wX3EkxGk0fpbWhmB7g== + +"@types/d3-timer@*": + version "3.0.2" + resolved "https://registry.yarnpkg.com/@types/d3-timer/-/d3-timer-3.0.2.tgz#70bbda77dc23aa727413e22e214afa3f0e852f70" + integrity sha512-Ps3T8E8dZDam6fUyNiMkekK3XUsaUEik+idO9/YjPtfj2qruF8tFBXS7XhtE4iIXBLxhmLjP3SXpLhVf21I9Lw== + +"@types/d3-transition@*": + version "3.0.9" + resolved "https://registry.yarnpkg.com/@types/d3-transition/-/d3-transition-3.0.9.tgz#1136bc57e9ddb3c390dccc9b5ff3b7d2b8d94706" + integrity sha512-uZS5shfxzO3rGlu0cC3bjmMFKsXv+SmZZcgp0KD22ts4uGXp5EVYGzu/0YdwZeKmddhcAccYtREJKkPfXkZuCg== + dependencies: + "@types/d3-selection" "*" + +"@types/d3-zoom@*": + version "3.0.8" + resolved "https://registry.yarnpkg.com/@types/d3-zoom/-/d3-zoom-3.0.8.tgz#dccb32d1c56b1e1c6e0f1180d994896f038bc40b" + integrity sha512-iqMC4/YlFCSlO8+2Ii1GGGliCAY4XdeG748w5vQUbevlbDu0zSjH/+jojorQVBK/se0j6DUFNPBGSqD3YWYnDw== + dependencies: + "@types/d3-interpolate" "*" + "@types/d3-selection" "*" + +"@types/d3@^7.4.0": + version "7.4.3" + resolved "https://registry.yarnpkg.com/@types/d3/-/d3-7.4.3.tgz#d4550a85d08f4978faf0a4c36b848c61eaac07e2" + integrity sha512-lZXZ9ckh5R8uiFVt8ogUNf+pIrK4EsWrx2Np75WvF/eTpJ0FMHNhjXk8CKEx/+gpHbNQyJWehbFaTvqmHWB3ww== + dependencies: + "@types/d3-array" "*" + "@types/d3-axis" "*" + "@types/d3-brush" "*" + "@types/d3-chord" "*" + "@types/d3-color" "*" + "@types/d3-contour" "*" + "@types/d3-delaunay" "*" + "@types/d3-dispatch" "*" + "@types/d3-drag" "*" + "@types/d3-dsv" "*" + "@types/d3-ease" "*" + "@types/d3-fetch" "*" + "@types/d3-force" "*" + "@types/d3-format" "*" + "@types/d3-geo" "*" + "@types/d3-hierarchy" "*" + "@types/d3-interpolate" "*" + "@types/d3-path" "*" + "@types/d3-polygon" "*" + "@types/d3-quadtree" "*" + "@types/d3-random" "*" + "@types/d3-scale" "*" + "@types/d3-scale-chromatic" "*" + "@types/d3-selection" "*" + "@types/d3-shape" "*" + "@types/d3-time" "*" + "@types/d3-time-format" "*" + "@types/d3-timer" "*" + "@types/d3-transition" "*" + "@types/d3-zoom" "*" + "@types/debug@^4.0.0", "@types/debug@^4.1.7": version "4.1.12" resolved "https://registry.npmmirror.com/@types/debug/-/debug-4.1.12.tgz#a155f21690871953410df4b6b6f53187f0500917" @@ -10117,12 +13322,14 @@ "@types/docker-modem" "*" "@types/node" "*" -"@types/dompurify@^2.1.0": - version "2.4.0" - resolved "https://registry.npmmirror.com/@types/dompurify/-/dompurify-2.4.0.tgz#fd9706392a88e0e0e6d367f3588482d817df0ab9" - integrity sha512-IDBwO5IZhrKvHFUl+clZxgf3hn2b/lU6H1KaBShPkQyGJUQ0xwebezIPSuiyGwfz1UzJWQl4M7BDxtHtCCPlTg== +"@types/dockerode@^4.0.1": + version "4.0.1" + resolved "https://registry.yarnpkg.com/@types/dockerode/-/dockerode-4.0.1.tgz#26a44995a86322b4489090efd97890a5585a63a5" + integrity sha512-cmUpB+dPN955PxBEuXE3f6lKO1hHiIGYJA46IVF3BJpNsZGvtBDcRnlrHYHtOH/B6vtDOyl2kZ2ShAu3mgc27Q== dependencies: - "@types/trusted-types" "*" + "@types/docker-modem" "*" + "@types/node" "*" + "@types/ssh2" "*" "@types/es-aggregate-error@^1.0.2": version "1.0.6" @@ -10131,9 +13338,9 @@ dependencies: "@types/node" "*" -"@types/eslint-scope@^3.7.3": +"@types/eslint-scope@^3.7.7": version "3.7.7" - resolved "https://registry.npmmirror.com/@types/eslint-scope/-/eslint-scope-3.7.7.tgz#3108bd5f18b0cdb277c867b3dd449c9ed7079ac5" + resolved "https://registry.yarnpkg.com/@types/eslint-scope/-/eslint-scope-3.7.7.tgz#3108bd5f18b0cdb277c867b3dd449c9ed7079ac5" integrity sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg== dependencies: "@types/eslint" "*" @@ -10155,22 +13362,37 @@ "@types/estree" "*" "@types/json-schema" "*" -"@types/estree@*", "@types/estree@1.0.5", "@types/estree@^1.0.0", "@types/estree@^1.0.5": +"@types/estree@*", "@types/estree@^1.0.0": version "1.0.5" resolved "https://registry.npmmirror.com/@types/estree/-/estree-1.0.5.tgz#a6ce3e556e00fd9895dd872dd172ad0d4bd687f4" integrity sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw== -"@types/express-serve-static-core@*", "@types/express-serve-static-core@^4.17.33", "@types/express-serve-static-core@^4.17.5": - version "4.17.42" - resolved "https://registry.npmmirror.com/@types/express-serve-static-core/-/express-serve-static-core-4.17.42.tgz#2a276952acc73d1b8dc63fd4210647abbc553a71" - integrity sha512-ckM3jm2bf/MfB3+spLPWYPUH573plBFwpOhqQ2WottxYV85j1HQFlxmnTq57X1yHY9awZPig06hL/cLMgNWHIQ== +"@types/estree@1.0.8", "@types/estree@^1.0.8": + version "1.0.8" + resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.8.tgz#958b91c991b1867ced318bedea0e215ee050726e" + integrity sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w== + +"@types/express-serve-static-core@*", "@types/express-serve-static-core@^4.17.33", "@types/express-serve-static-core@^4.17.5": + version "4.17.42" + resolved "https://registry.npmmirror.com/@types/express-serve-static-core/-/express-serve-static-core-4.17.42.tgz#2a276952acc73d1b8dc63fd4210647abbc553a71" + integrity sha512-ckM3jm2bf/MfB3+spLPWYPUH573plBFwpOhqQ2WottxYV85j1HQFlxmnTq57X1yHY9awZPig06hL/cLMgNWHIQ== + dependencies: + "@types/node" "*" + "@types/qs" "*" + "@types/range-parser" "*" + "@types/send" "*" + +"@types/express-serve-static-core@^4.17.21": + version "4.19.8" + resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.19.8.tgz#99b960322a4d576b239a640ab52ef191989b036f" + integrity sha512-02S5fmqeoKzVZCHPZid4b8JH2eM5HzQLZWN2FohQEy/0eXTq8VXZfSN6Pcr3F6N9R/vNrj7cpgbhjie6m/1tCA== dependencies: "@types/node" "*" "@types/qs" "*" "@types/range-parser" "*" "@types/send" "*" -"@types/express@*", "@types/express@^4.17.14", "@types/express@^4.17.17", "@types/express@^4.17.21", "@types/express@^4.17.6": +"@types/express@*", "@types/express@^4.17.17", "@types/express@^4.17.21", "@types/express@^4.17.6": version "4.17.21" resolved "https://registry.npmmirror.com/@types/express/-/express-4.17.21.tgz#c26d4a151e60efe0084b23dc3369ebc631ed192d" integrity sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ== @@ -10180,6 +13402,16 @@ "@types/qs" "*" "@types/serve-static" "*" +"@types/express@^4.17.22", "@types/express@^4.17.25": + version "4.17.25" + resolved "https://registry.yarnpkg.com/@types/express/-/express-4.17.25.tgz#070c8c73a6fee6936d65c195dbbfb7da5026649b" + integrity sha512-dVd04UKsfpINUnK0yBoYHDF3xu7xVH4BuDotC/xGuycx4CgbP48X/KF/586bcObxT0HENHXEU8Nqtu6NR+eKhw== + dependencies: + "@types/body-parser" "*" + "@types/express-serve-static-core" "^4.17.33" + "@types/qs" "*" + "@types/serve-static" "^1" + "@types/fs-extra@^11.0.4": version "11.0.4" resolved "https://registry.npmmirror.com/@types/fs-extra/-/fs-extra-11.0.4.tgz#e16a863bb8843fba8c5004362b5a73e17becca45" @@ -10188,9 +13420,14 @@ "@types/jsonfile" "*" "@types/node" "*" +"@types/geojson@*": + version "7946.0.16" + resolved "https://registry.yarnpkg.com/@types/geojson/-/geojson-7946.0.16.tgz#8ebe53d69efada7044454e3305c19017d97ced2a" + integrity sha512-6C8nqWur3j98U6+lXDfTUWIfgvZU+EumvpHKcYjujKH7woYyLj2sUmff0tRhrqM7BohUw7Pz3ZB1jj2gW9Fvmg== + "@types/graceful-fs@^4.1.3": version "4.1.9" - resolved "https://registry.npmmirror.com/@types/graceful-fs/-/graceful-fs-4.1.9.tgz#2a06bc0f68a20ab37b3e36aa238be6abdf49e8b4" + resolved "https://registry.yarnpkg.com/@types/graceful-fs/-/graceful-fs-4.1.9.tgz#2a06bc0f68a20ab37b3e36aa238be6abdf49e8b4" integrity sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ== dependencies: "@types/node" "*" @@ -10202,6 +13439,13 @@ dependencies: "@types/unist" "^2" +"@types/hast@^3.0.0": + version "3.0.4" + resolved "https://registry.yarnpkg.com/@types/hast/-/hast-3.0.4.tgz#1d6b39993b82cea6ad783945b0508c25903e15aa" + integrity sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ== + dependencies: + "@types/unist" "*" + "@types/hoist-non-react-statics@^3.3.0": version "3.3.5" resolved "https://registry.npmmirror.com/@types/hoist-non-react-statics/-/hoist-non-react-statics-3.3.5.tgz#dab7867ef789d87e2b4b0003c9d65c49cc44a494" @@ -10215,11 +13459,6 @@ resolved "https://registry.npmmirror.com/@types/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz#4fc33a00c1d0c16987b1a20cf92d20614c55ac35" integrity sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg== -"@types/http-cache-semantics@*": - version "4.0.4" - resolved "https://registry.npmmirror.com/@types/http-cache-semantics/-/http-cache-semantics-4.0.4.tgz#b979ebad3919799c979b17c72621c0bc0a31c6c4" - integrity sha512-1m0bIFVc7eJWyve9S0RnuRgcQqF/Xd5QsUZAZeQFr1Q3/p9JWoQQEqmVy+DPTNpGXwhgIetAoYF8JSc33q29QA== - "@types/http-errors@*": version "2.0.4" resolved "https://registry.npmmirror.com/@types/http-errors/-/http-errors-2.0.4.tgz#7eb47726c391b7345a6ec35ad7f4de469cf5ba4f" @@ -10239,7 +13478,7 @@ dependencies: "@types/node" "*" -"@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0", "@types/istanbul-lib-coverage@^2.0.1": +"@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0", "@types/istanbul-lib-coverage@^2.0.1", "@types/istanbul-lib-coverage@^2.0.6": version "2.0.6" resolved "https://registry.npmmirror.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz#7739c232a1fee9b4d3ce8985f314c0c6d33549d7" integrity sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w== @@ -10251,7 +13490,7 @@ dependencies: "@types/istanbul-lib-coverage" "*" -"@types/istanbul-reports@^3.0.0": +"@types/istanbul-reports@^3.0.0", "@types/istanbul-reports@^3.0.4": version "3.0.4" resolved "https://registry.npmmirror.com/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz#0f03e3d2f670fbdac586e34b433783070cc16f54" integrity sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ== @@ -10267,9 +13506,9 @@ pretty-format "^29.0.0" "@types/jest@^29.5.11": - version "29.5.12" - resolved "https://registry.npmmirror.com/@types/jest/-/jest-29.5.12.tgz#7f7dc6eb4cf246d2474ed78744b05d06ce025544" - integrity sha512-eDC8bTvT/QhYdxJAulQikueigY5AsdBRH2yDKW3yveW7svY3+DzN84/2NUgkw10RTiJbWqZrTtoGVdYlvFJdLw== + version "29.5.14" + resolved "https://registry.yarnpkg.com/@types/jest/-/jest-29.5.14.tgz#2b910912fa1d6856cadcd0c1f95af7df1d6049e5" + integrity sha512-ZN+4sdnLUbo8EVvVc2ao0GFW6oVrQRPn4K2lglySj7APvSrgzxHiNNK99us4WDMi57xxA2yggblIAMNhXOotLQ== dependencies: expect "^29.0.0" pretty-format "^29.0.0" @@ -10291,14 +13530,14 @@ "@types/jsdom@^20.0.0": version "20.0.1" - resolved "https://registry.npmmirror.com/@types/jsdom/-/jsdom-20.0.1.tgz#07c14bc19bd2f918c1929541cdaacae894744808" + resolved "https://registry.yarnpkg.com/@types/jsdom/-/jsdom-20.0.1.tgz#07c14bc19bd2f918c1929541cdaacae894744808" integrity sha512-d0r18sZPmMQr1eG35u12FZfhIXNrnsPU/g5wvRKCUf/tOGilKKwYMYGqh33BNR6ba+2gkHw1EUiHoN3mn7E5IQ== dependencies: "@types/node" "*" "@types/tough-cookie" "*" parse5 "^7.0.0" -"@types/json-schema@*", "@types/json-schema@^7.0.11", "@types/json-schema@^7.0.12", "@types/json-schema@^7.0.4", "@types/json-schema@^7.0.5", "@types/json-schema@^7.0.6", "@types/json-schema@^7.0.7", "@types/json-schema@^7.0.8", "@types/json-schema@^7.0.9": +"@types/json-schema@*", "@types/json-schema@^7.0.11", "@types/json-schema@^7.0.15", "@types/json-schema@^7.0.4", "@types/json-schema@^7.0.5", "@types/json-schema@^7.0.6", "@types/json-schema@^7.0.7", "@types/json-schema@^7.0.8", "@types/json-schema@^7.0.9": version "7.0.15" resolved "https://registry.npmmirror.com/@types/json-schema/-/json-schema-7.0.15.tgz#596a1747233694d50f6ad8a7869fcb6f56cf5841" integrity sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA== @@ -10322,12 +13561,12 @@ dependencies: "@types/node" "*" -"@types/keyv@^3.1.4": - version "3.1.4" - resolved "https://registry.npmmirror.com/@types/keyv/-/keyv-3.1.4.tgz#3ccdb1c6751b0c7e52300bcdacd5bcbf8faa75b6" - integrity sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg== +"@types/keyv@^4.2.0": + version "4.2.0" + resolved "https://registry.yarnpkg.com/@types/keyv/-/keyv-4.2.0.tgz#65b97868ab757906f2dbb653590d7167ad023fa0" + integrity sha512-xoBtGl5R9jeKUhc8ZqeYaRDx04qqJ10yhhXYGmJ4Jr8qKpvMsDQQrNUvF/wUJ4klOtmJeJM+p2Xo3zp9uaC3tw== dependencies: - "@types/node" "*" + keyv "*" "@types/long@^4.0.0": version "4.0.2" @@ -10339,11 +13578,6 @@ resolved "https://registry.npmmirror.com/@types/lunr/-/lunr-2.3.7.tgz#378a98ecf7a9fafc42466f67f73173c34a6265a0" integrity sha512-Tb/kUm38e8gmjahQzdCKhbdsvQ9/ppzHFfsJ0dMs3ckqQsRj+P5IkSAwFTBrBxdyr3E/LoMUUrZngjDYAjiE3A== -"@types/luxon@^2.0.4": - version "2.4.0" - resolved "https://registry.npmmirror.com/@types/luxon/-/luxon-2.4.0.tgz#897d3abc23b68d78b69d76a12c21e01eb5adab95" - integrity sha512-oCavjEjRXuR6URJEtQm0eBdfsBiEcGBZbq21of8iGkeKxU1+1xgKuFPClaBZl2KB8ZZBSWlgk61tH6Mf+nvZVw== - "@types/luxon@^3.0.0", "@types/luxon@~3.4.0": version "3.4.2" resolved "https://registry.npmmirror.com/@types/luxon/-/luxon-3.4.2.tgz#e4fc7214a420173cea47739c33cdf10874694db7" @@ -10371,25 +13605,15 @@ resolved "https://registry.npmmirror.com/@types/mime/-/mime-1.3.5.tgz#1ef302e01cf7d2b5a0fa526790c9123bf1d06690" integrity sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w== -"@types/minimatch@^3.0.3": - version "3.0.5" - resolved "https://registry.npmmirror.com/@types/minimatch/-/minimatch-3.0.5.tgz#1001cc5e6a3704b83c236027e77f2f58ea010f40" - integrity sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ== - -"@types/minimist@^1.2.0": - version "1.2.5" - resolved "https://registry.npmmirror.com/@types/minimist/-/minimist-1.2.5.tgz#ec10755e871497bcd83efe927e43ec46e8c0747e" - integrity sha512-hov8bUuiLiyFPGyFPE1lwWhmzYbirOXQNNo40+y3zow8aFVTeyn3VWL0VFFfdNddA8S4Vf0Tc062rzyNr7Paag== - "@types/ms@*": version "0.7.34" resolved "https://registry.npmmirror.com/@types/ms/-/ms-0.7.34.tgz#10964ba0dee6ac4cd462e2795b6bebd407303433" integrity sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g== -"@types/multer@^1.4.7": - version "1.4.11" - resolved "https://registry.npmmirror.com/@types/multer/-/multer-1.4.11.tgz#c70792670513b4af1159a2b60bf48cc932af55c5" - integrity sha512-svK240gr6LVWvv3YGyhLlA+6LRRWA4mnGIU7RcNmgjBYFl6665wcXrRfxGp5tEPVHUNm5FMcmq7too9bxCwX/w== +"@types/multer@^2.0.0": + version "2.1.0" + resolved "https://registry.yarnpkg.com/@types/multer/-/multer-2.1.0.tgz#c6ae866b9a3d9310b477d021a78b33feda092358" + integrity sha512-zYZb0+nJhOHtPpGDb3vqPjwpdeGlGC157VpkqNQL+UU2qwoacoQ7MpsAmUptI/0Oa127X32JzWDqQVEXp2RcIA== dependencies: "@types/express" "*" @@ -10401,6 +13625,14 @@ "@types/node" "*" form-data "^4.0.0" +"@types/node-fetch@^2.6.13": + version "2.6.13" + resolved "https://registry.yarnpkg.com/@types/node-fetch/-/node-fetch-2.6.13.tgz#e0c9b7b5edbdb1b50ce32c127e85e880872d56ee" + integrity sha512-QGpRVpzSaUs30JBSGPjOg4Uveu384erbHBoT1zeONvyCfwQxIkUshLAOqN/k9EjGviPRmWTTe6aH2qySWKTVSw== + dependencies: + "@types/node" "*" + form-data "^4.0.4" + "@types/node-forge@^1.3.0": version "1.3.11" resolved "https://registry.npmmirror.com/@types/node-forge/-/node-forge-1.3.11.tgz#0972ea538ddb0f4d9c2fa0ec5db5724773a604da" @@ -10420,11 +13652,6 @@ resolved "https://registry.npmmirror.com/@types/node/-/node-12.20.55.tgz#c329cbd434c42164f846b909bd6f85b5537f6240" integrity sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ== -"@types/node@^16.9.2": - version "16.18.76" - resolved "https://registry.npmmirror.com/@types/node/-/node-16.18.76.tgz#deecdf6b71b9ef45ceda63fec7220ddf2354d7a1" - integrity sha512-/GsO2uv1Z6R42lBr59dtem56gVF/yHKQaScggwU+gLU6DXE25sDmOar4c4IfWb3h+X/7OYZznPOFk7oGF3jQSA== - "@types/node@^18.11.18": version "18.19.10" resolved "https://registry.npmmirror.com/@types/node/-/node-18.19.10.tgz#4de314ab66faf6bc8ba691021a091ddcdf13a158" @@ -10432,55 +13659,60 @@ dependencies: undici-types "~5.26.4" -"@types/normalize-package-data@^2.4.0": - version "2.4.4" - resolved "https://registry.npmmirror.com/@types/normalize-package-data/-/normalize-package-data-2.4.4.tgz#56e2cc26c397c038fab0e3a917a12d5c5909e901" - integrity sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA== +"@types/node@^18.11.9": + version "18.19.130" + resolved "https://registry.yarnpkg.com/@types/node/-/node-18.19.130.tgz#da4c6324793a79defb7a62cba3947ec5add00d59" + integrity sha512-GRaXQx6jGfL8sKfaIDD6OupbIHBr9jv7Jnaml9tB7l4v068PAOXqfcujMMo5PhbIs6ggR1XODELqahT2R8v0fg== + dependencies: + undici-types "~5.26.4" -"@types/oauth@*": - version "0.9.4" - resolved "https://registry.npmmirror.com/@types/oauth/-/oauth-0.9.4.tgz#dcbab5efa2f34f312b915f80685760ccc8111e0a" - integrity sha512-qk9orhti499fq5XxKCCEbd0OzdPZuancneyse3KtR+vgMiHRbh+mn8M4G6t64ob/Fg+GZGpa565MF/2dKWY32A== +"@types/node@^24.0.0": + version "24.12.2" + resolved "https://registry.yarnpkg.com/@types/node/-/node-24.12.2.tgz#353cb161dbf1785ea25e8829ba7ec574c5c629ac" + integrity sha512-A1sre26ke7HDIuY/M23nd9gfB+nrmhtYyMINbjI1zHJxYteKR6qSMX56FsmjMcDb3SMcjJg5BiRRgOCC/yBD0g== dependencies: - "@types/node" "*" + undici-types "~7.16.0" "@types/parse-json@^4.0.0": version "4.0.2" resolved "https://registry.npmmirror.com/@types/parse-json/-/parse-json-4.0.2.tgz#5950e50960793055845e956c427fc2b0d70c5239" integrity sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw== -"@types/passport-oauth2@^1.4.11": - version "1.4.15" - resolved "https://registry.npmmirror.com/@types/passport-oauth2/-/passport-oauth2-1.4.15.tgz#34f2684f53aad36e664cd01ca9879224229f47e7" - integrity sha512-9cUTP/HStNSZmhxXGuRrBJfEWzIEJRub2eyJu3CvkA+8HAMc9W3aKdFhVq+Qz1hi42qn+GvSAnz3zwacDSYWpw== - dependencies: - "@types/express" "*" - "@types/oauth" "*" - "@types/passport" "*" - -"@types/passport-strategy@^0.2.35": - version "0.2.38" - resolved "https://registry.npmmirror.com/@types/passport-strategy/-/passport-strategy-0.2.38.tgz#482abba0b165cd4553ec8b748f30b022bd6c04d3" - integrity sha512-GC6eMqqojOooq993Tmnmp7AUTbbQSgilyvpCYQjT+H6JfG/g6RGc7nXEniZlp0zyKJ0WUdOiZWLBZft9Yug1uA== - dependencies: - "@types/express" "*" - "@types/passport" "*" +"@types/parse5@^6.0.0": + version "6.0.3" + resolved "https://registry.yarnpkg.com/@types/parse5/-/parse5-6.0.3.tgz#705bb349e789efa06f43f128cef51240753424cb" + integrity sha512-SuT16Q1K51EAVPz1K29DJ/sXjhSQ0zjvsypYJ6tlwVsRV9jwW5Adq2ch8Dq8kDBCkYnELS7N7VNCSB5nC56t/g== -"@types/passport@*", "@types/passport@^1.0.11", "@types/passport@^1.0.16", "@types/passport@^1.0.3": +"@types/passport@^1.0.3": version "1.0.16" resolved "https://registry.npmmirror.com/@types/passport/-/passport-1.0.16.tgz#5a2918b180a16924c4d75c31254c31cdca5ce6cf" integrity sha512-FD0qD5hbPWQzaM0wHUnJ/T0BBCJBxCeemtnCwc/ThhTg3x9jfrAcRUmj5Dopza+MfFS9acTe3wk7rcVnRIp/0A== dependencies: "@types/express" "*" +"@types/pluralize@^0.0.33": + version "0.0.33" + resolved "https://registry.yarnpkg.com/@types/pluralize/-/pluralize-0.0.33.tgz#8ad9018368c584d268667dd9acd5b3b806e8c82a" + integrity sha512-JOqsl+ZoCpP4e8TDke9W79FDcSgPAR0l6pixx2JHkhnRjvShyYiAYw2LVsnA7K08Y6DeOnaU6ujmENO4os/cYg== + +"@types/prismjs@^1.0.0": + version "1.26.6" + resolved "https://registry.yarnpkg.com/@types/prismjs/-/prismjs-1.26.6.tgz#6ea27c126d645319ae4f7055eda63a9e835c0187" + integrity sha512-vqlvI7qlMvcCBbVe0AKAb4f97//Hy0EBTaiW8AalRnG/xAN5zOiWWyrNqNXeq8+KAuvRewjCVY1+IPxk4RdNYw== + "@types/prop-types@*", "@types/prop-types@^15.0.0", "@types/prop-types@^15.7.11", "@types/prop-types@^15.7.3": version "15.7.11" resolved "https://registry.npmmirror.com/@types/prop-types/-/prop-types-15.7.11.tgz#2596fb352ee96a1379c657734d4b913a613ad563" integrity sha512-ga8y9v9uyeiLdpKddhxYQkxNDrfvuPrlFb0N1qnZZByvcElJaXthF1UhvCh9TLWJBEHeNtdnbysW7Y6Uq8CVng== -"@types/protocol-buffers-schema@^3.4.1": +"@types/prop-types@^15.7.12": + version "15.7.15" + resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.15.tgz#e6e5a86d602beaca71ce5163fadf5f95d70931c7" + integrity sha512-F6bEyamV9jKGAFBEmlQnesRPGOQqS2+Uwi0Em15xenOxHaf2hv6L8YCVn3rPdPJOiJfPiCnLIRyvwVaqMY3MIw== + +"@types/protocol-buffers-schema@^3.4.3": version "3.4.3" - resolved "https://registry.npmmirror.com/@types/protocol-buffers-schema/-/protocol-buffers-schema-3.4.3.tgz#f6c45003ff55104ae7b6406a60313cf712d69a43" + resolved "https://registry.yarnpkg.com/@types/protocol-buffers-schema/-/protocol-buffers-schema-3.4.3.tgz#f6c45003ff55104ae7b6406a60313cf712d69a43" integrity sha512-8cCg6BiIj4jS0LXUFq3sndmd46yyPLYqMzvXLcTM1MRubh3sfZlQiehoCjGDxSHTqGSjjx8EtVNryIAl0njQWg== dependencies: "@types/node" "*" @@ -10490,31 +13722,27 @@ resolved "https://registry.npmmirror.com/@types/qs/-/qs-6.9.11.tgz#208d8a30bc507bd82e03ada29e4732ea46a6bbda" integrity sha512-oGk0gmhnEJK4Yyk+oI7EfXsLayXatCWPHary1MtcmbAifkobT9cM9yutG/hZKIseOU0MqbIwQ/u2nn/Gb+ltuQ== -"@types/ramda@~0.29.6": - version "0.29.10" - resolved "https://registry.npmmirror.com/@types/ramda/-/ramda-0.29.10.tgz#2584b268f9e0dd71ed4e5432b095186eb24a1f8f" - integrity sha512-0BzWVKtSEtignlk+XBuK88Il5wzQwbRVfEkzE8iKm02NYHMGQ/9ffB05M+zXhTCqo50DOIAT9pNSJsjFMMG4rQ== +"@types/qs@^6.9.6": + version "6.15.0" + resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.15.0.tgz#963ab61779843fe910639a50661b48f162bc7f79" + integrity sha512-JawvT8iBVWpzTrz3EGw9BTQFg3BQNmwERdKE22vlTxawwtbyUSlMppvZYKLZzB5zgACXdXxbD3m1bXaMqP/9ow== + +"@types/ramda@~0.30.0": + version "0.30.2" + resolved "https://registry.yarnpkg.com/@types/ramda/-/ramda-0.30.2.tgz#70661b20c1bb969589a551b7134ae75008ffbfb6" + integrity sha512-PyzHvjCalm2BRYjAU6nIB3TprYwMNOUY/7P/N8bSzp9W/yM2YrtGtAnnVtaCNSeOZ8DzKyFDvaqQs7LnWwwmBA== dependencies: - types-ramda "^0.29.7" + types-ramda "^0.30.1" "@types/range-parser@*": version "1.2.7" resolved "https://registry.npmmirror.com/@types/range-parser/-/range-parser-1.2.7.tgz#50ae4353eaaddc04044279812f52c8c65857dbcb" integrity sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ== -"@types/react-dom@*", "@types/react-dom@^18.0.0": - version "18.3.0" - resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-18.3.0.tgz#0cbc818755d87066ab6ca74fbedb2547d74a82b0" - integrity sha512-EhwApuTmMBmXuFOikhQLIBUn6uFg81SwLMOAUgodJF14SOBOCMdU04gDoYi0WOJJHD144TL32z4yDqCW3dnkQg== - dependencies: - "@types/react" "*" - -"@types/react-dom@<18.0.0": - version "17.0.25" - resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-17.0.25.tgz#e0e5b3571e1069625b3a3da2b279379aa33a0cb5" - integrity sha512-urx7A7UxkZQmThYA4So0NelOVjx3V4rNFVJwp0WZlbIK5eM4rNJDiN3R/E9ix0MBh6kAEojk/9YL+Te6D9zHNA== - dependencies: - "@types/react" "^17" +"@types/react-dom@*", "@types/react-dom@<18.0.0", "@types/react-dom@^18", "@types/react-dom@^18.0.0": + version "18.3.7" + resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-18.3.7.tgz#b89ddf2cd83b4feafcc4e2ea41afdfb95a0d194f" + integrity sha512-MEe3UeoENYVFXzoXEWsvcpg6ZvlrFNlOQ7EOsvhI3CfAXwzPfO8Qwuxd40nepsYKqyyVQnTdEfv68q91yLcKrQ== "@types/react-redux@^7.1.20": version "7.1.33" @@ -10533,13 +13761,6 @@ dependencies: "@types/react" "*" -"@types/react-text-truncate@^0.14.0": - version "0.14.4" - resolved "https://registry.npmmirror.com/@types/react-text-truncate/-/react-text-truncate-0.14.4.tgz#60040bba3d6025518b7c0816ca85e41e3e5bfc68" - integrity sha512-qdw8522RqdYkTX0FShDPDx8hIRVjPydW8PXl/wKpPGpAtjJTsaNiFOe0fxMRLXIEQaAZvC5VLlKGGONAetb6nQ== - dependencies: - "@types/react" "*" - "@types/react-transition-group@^4.2.0", "@types/react-transition-group@^4.4.10": version "4.4.10" resolved "https://registry.npmmirror.com/@types/react-transition-group/-/react-transition-group-4.4.10.tgz#6ee71127bdab1f18f11ad8fb3322c6da27c327ac" @@ -10547,22 +13768,13 @@ dependencies: "@types/react" "*" -"@types/react@*", "@types/react@^16.13.1 || ^17.0.0 || ^18.0.0": - version "18.3.3" - resolved "https://registry.yarnpkg.com/@types/react/-/react-18.3.3.tgz#9679020895318b0915d7a3ab004d92d33375c45f" - integrity sha512-hti/R0pS0q1/xx+TsI73XIqk26eBsISZ2R0wUijXIngRK9R/e7Xw/cXVxQK7R5JjW+SV4zGcn5hXjudkN/pLIw== - dependencies: - "@types/prop-types" "*" - csstype "^3.0.2" - -"@types/react@^16.13.1 || ^17.0.0", "@types/react@^17": - version "17.0.80" - resolved "https://registry.yarnpkg.com/@types/react/-/react-17.0.80.tgz#a5dfc351d6a41257eb592d73d3a85d3b7dbcbb41" - integrity sha512-LrgHIu2lEtIo8M7d1FcI3BdwXWoRQwMoXOZ7+dPTW0lYREjmlHl3P0U1VD0i/9tppOuv8/sam7sOjx34TxSFbA== +"@types/react@*", "@types/react@^16.13.1 || ^17.0.0 || ^18.0.0", "@types/react@^18": + version "18.3.28" + resolved "https://registry.yarnpkg.com/@types/react/-/react-18.3.28.tgz#0a85b1a7243b4258d9f626f43797ba18eb5f8781" + integrity sha512-z9VXpC7MWrhfWipitjNdgCauoMLRdIILQsAEV+ZesIzBq/oUlxk0m3ApZuMFCXdnS4U7KrI+l3WRUEGQ8K1QKw== dependencies: "@types/prop-types" "*" - "@types/scheduler" "^0.16" - csstype "^3.0.2" + csstype "^3.2.2" "@types/request@^2.47.1", "@types/request@^2.48.8": version "2.48.12" @@ -10574,32 +13786,25 @@ "@types/tough-cookie" "*" form-data "^2.5.0" +"@types/resize-observer-browser@^0.1.7": + version "0.1.11" + resolved "https://registry.yarnpkg.com/@types/resize-observer-browser/-/resize-observer-browser-0.1.11.tgz#d3c98d788489d8376b7beac23863b1eebdd3c13c" + integrity sha512-cNw5iH8JkMkb3QkCoe7DaZiawbDQEUX8t7iuQaRTyLOyQCR2h+ibBD4GJt7p5yhUHrlOeL7ZtbxNHeipqNsBzQ== + "@types/resolve@1.20.2": version "1.20.2" resolved "https://registry.npmmirror.com/@types/resolve/-/resolve-1.20.2.tgz#97d26e00cd4a0423b4af620abecf3e6f442b7975" integrity sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q== -"@types/responselike@^1.0.0": - version "1.0.3" - resolved "https://registry.npmmirror.com/@types/responselike/-/responselike-1.0.3.tgz#cc29706f0a397cfe6df89debfe4bf5cea159db50" - integrity sha512-H/+L+UkTV33uf49PH5pCAUBVPNj2nDBXTN+qS1dOwyyg24l3CcicicCA7ca+HMvJBZcFgl5r8e+RR6elsb4Lyw== - dependencies: - "@types/node" "*" - "@types/retry@0.12.2": version "0.12.2" resolved "https://registry.npmmirror.com/@types/retry/-/retry-0.12.2.tgz#ed279a64fa438bb69f2480eda44937912bb7480a" integrity sha512-XISRgDJ2Tc5q4TRqvgJtzsRkFYNJzZrhTdtMoGVBttwzzQJkPnS3WWTFc7kuDRoPtPakl+T+OfdEUjYJj7Jbow== -"@types/scheduler@^0.16": - version "0.16.8" - resolved "https://registry.yarnpkg.com/@types/scheduler/-/scheduler-0.16.8.tgz#ce5ace04cfeabe7ef87c0091e50752e36707deff" - integrity sha512-WZLiwShhwLRmeV6zH+GkbOFT6Z6VklCItrDioxUnv+u4Ll+8vKeFySoFyK/0ctcRpOmwAicELfmys1sDc/Rw+A== - -"@types/semver@^7.3.12", "@types/semver@^7.5.0": - version "7.5.6" - resolved "https://registry.npmmirror.com/@types/semver/-/semver-7.5.6.tgz#c65b2bfce1bec346582c07724e3f8c1017a20339" - integrity sha512-dn1l8LaMea/IjDoHNd9J52uBbInB796CDffS6VdIxvqYCPSG0V0DzHp76GpaWnlhg88uYyPbXCDIowa86ybd5A== +"@types/semver@7.5.8": + version "7.5.8" + resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.5.8.tgz#8268a8c57a3e4abd25c165ecd36237db7948a55e" + integrity sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ== "@types/send@*": version "0.17.4" @@ -10609,6 +13814,14 @@ "@types/mime" "^1" "@types/node" "*" +"@types/send@<1": + version "0.17.6" + resolved "https://registry.yarnpkg.com/@types/send/-/send-0.17.6.tgz#aeb5385be62ff58a52cd5459daa509ae91651d25" + integrity sha512-Uqt8rPBE8SY0RK8JB1EzVOIZ32uqy8HwdxCnoCOsYrvnswqmFZ/k+9Ikidlk/ImhsdvBsloHbAlewb2IEBV/Og== + dependencies: + "@types/mime" "^1" + "@types/node" "*" + "@types/serve-index@^1.9.4": version "1.9.4" resolved "https://registry.npmmirror.com/@types/serve-index/-/serve-index-1.9.4.tgz#e6ae13d5053cb06ed36392110b4f9a49ac4ec898" @@ -10625,6 +13838,15 @@ "@types/mime" "*" "@types/node" "*" +"@types/serve-static@^1": + version "1.15.10" + resolved "https://registry.yarnpkg.com/@types/serve-static/-/serve-static-1.15.10.tgz#768169145a778f8f5dfcb6360aead414a3994fee" + integrity sha512-tRs1dB+g8Itk72rlSI2ZrW6vZg0YrLI81iQSTkMmOqnqCaNr/8Ek4VwWcN5vZgCYWbg/JJSGBlUaYGAOP73qBw== + dependencies: + "@types/http-errors" "*" + "@types/node" "*" + "@types/send" "<1" + "@types/serve-static@^1.15.5": version "1.15.7" resolved "https://registry.npmmirror.com/@types/serve-static/-/serve-static-1.15.7.tgz#22174bbd74fb97fe303109738e9b5c2f3064f714" @@ -10648,6 +13870,13 @@ dependencies: "@types/node" "*" +"@types/ssh2-streams@*": + version "0.1.13" + resolved "https://registry.yarnpkg.com/@types/ssh2-streams/-/ssh2-streams-0.1.13.tgz#f8d34a22be50fb8dbafbb2bbc289add0d22daa51" + integrity sha512-faHyY3brO9oLEA0QlcO8N2wT7R0+1sHWZvQ+y3rMLwdY1ZyS1z0W3t65j9PqT4HmQ6ALzNe7RZlNuCNE0wBSWA== + dependencies: + "@types/node" "*" + "@types/ssh2@*": version "1.11.19" resolved "https://registry.npmmirror.com/@types/ssh2/-/ssh2-1.11.19.tgz#4f2ec691b0674ea1590915fe5114a9aeae0eb41d" @@ -10655,11 +13884,26 @@ dependencies: "@types/node" "^18.11.18" +"@types/ssh2@^0.5.48": + version "0.5.52" + resolved "https://registry.yarnpkg.com/@types/ssh2/-/ssh2-0.5.52.tgz#9dbd8084e2a976e551d5e5e70b978ed8b5965741" + integrity sha512-lbLLlXxdCZOSJMCInKH2+9V/77ET2J6NPQHpFI0kda61Dd1KglJs+fPQBchizmzYSOJBgdTajhPqBO1xxLywvg== + dependencies: + "@types/node" "*" + "@types/ssh2-streams" "*" + "@types/stack-utils@^2.0.0": version "2.0.3" resolved "https://registry.npmmirror.com/@types/stack-utils/-/stack-utils-2.0.3.tgz#6209321eb2c1712a7e7466422b8cb1fc0d9dd5d8" integrity sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw== +"@types/stream-buffers@^3.0.3": + version "3.0.8" + resolved "https://registry.yarnpkg.com/@types/stream-buffers/-/stream-buffers-3.0.8.tgz#9981c092b72c7e1889e3724db40338f503aeac62" + integrity sha512-J+7VaHKNvlNPJPEJXX/fKa9DZtR/xPMwuIbe+yNOwp1YB+ApUOBv2aUpEoBJEi8nJgbgs1x8e73ttg0r1rSUdw== + dependencies: + "@types/node" "*" + "@types/styled-jsx@^2.2.8": version "2.2.9" resolved "https://registry.npmmirror.com/@types/styled-jsx/-/styled-jsx-2.2.9.tgz#e50b3f868c055bcbf9bc353eca6c10fdad32a53f" @@ -10707,9 +13951,9 @@ resolved "https://registry.npmmirror.com/@types/triple-beam/-/triple-beam-1.3.5.tgz#74fef9ffbaa198eb8b588be029f38b00299caa2c" integrity sha512-6WaYesThRMCl19iryMYP7/x2OVgCtbIVflDGFpWnb9irXI3UjYE4AzmYuiUKY1AJstGijoY+MgUszMgRxIYTYw== -"@types/trusted-types@*": +"@types/trusted-types@^2.0.7": version "2.0.7" - resolved "https://registry.npmmirror.com/@types/trusted-types/-/trusted-types-2.0.7.tgz#baccb07a970b91707df3a3e8ba6896c57ead2d11" + resolved "https://registry.yarnpkg.com/@types/trusted-types/-/trusted-types-2.0.7.tgz#baccb07a970b91707df3a3e8ba6896c57ead2d11" integrity sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw== "@types/tunnel@^0.0.3": @@ -10719,6 +13963,11 @@ dependencies: "@types/node" "*" +"@types/unist@*": + version "3.0.3" + resolved "https://registry.yarnpkg.com/@types/unist/-/unist-3.0.3.tgz#acaab0f919ce69cce629c2d4ed2eb4adc1b6c20c" + integrity sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q== + "@types/unist@^2", "@types/unist@^2.0.0": version "2.0.10" resolved "https://registry.npmmirror.com/@types/unist/-/unist-2.0.10.tgz#04ffa7f406ab628f7f7e97ca23e290cd8ab15efc" @@ -10729,42 +13978,27 @@ resolved "https://registry.npmmirror.com/@types/urijs/-/urijs-1.19.25.tgz#ac92b53e674c3b108decdbe88dc5f444a2f42f6a" integrity sha512-XOfUup9r3Y06nFAZh3WvO0rBU4OtlfPB/vgxpjg+NRdGU6CN6djdc6OEiH+PcqHCY6eFLo9Ista73uarf4gnBg== -"@types/use-sync-external-store@^0.0.3": - version "0.0.3" - resolved "https://registry.npmmirror.com/@types/use-sync-external-store/-/use-sync-external-store-0.0.3.tgz#b6725d5f4af24ace33b36fafd295136e75509f43" - integrity sha512-EwmlvuaxPNej9+T4v5AuBPJa2x2UOJVdjCtDHgcDqitUeOtjnJKJ+apYjVcAoBEMjKW1VVFGZLUb5+qqa09XFA== +"@types/use-sync-external-store@^0.0.6": + version "0.0.6" + resolved "https://registry.yarnpkg.com/@types/use-sync-external-store/-/use-sync-external-store-0.0.6.tgz#60be8d21baab8c305132eb9cb912ed497852aadc" + integrity sha512-zFDAD+tlpf2r4asuHEj0XH6pY6i0g5NeAHPn+15wk3BV6JA69eERFXC1gyGThDkVa1zCyKr5jox1+2LbV/AMLg== "@types/webpack-env@^1.15.2": version "1.18.4" resolved "https://registry.npmmirror.com/@types/webpack-env/-/webpack-env-1.18.4.tgz#62879b0a9c653f9b1172d403b882f2045ecce032" integrity sha512-I6e+9+HtWADAWeeJWDFQtdk4EVSAbj6Rtz4q8fJ7mSr1M0jzlFcs8/HZ+Xb5SHzVm1dxH7aUiI+A8kA8Gcrm0A== -"@types/ws@^8.0.0", "@types/ws@^8.5.10", "@types/ws@^8.5.3": - version "8.5.10" - resolved "https://registry.npmmirror.com/@types/ws/-/ws-8.5.10.tgz#4acfb517970853fa6574a3a6886791d04a396787" - integrity sha512-vmQSUcfalpIq0R9q7uTo2lXs6eGIpt9wtnLdMv9LVpIjCA/+ufZRozlVoVelIYixx1ugCBKDhn89vnsEGOCx9A== - dependencies: - "@types/node" "*" - -"@types/xml-crypto@^1.4.2": - version "1.4.6" - resolved "https://registry.npmmirror.com/@types/xml-crypto/-/xml-crypto-1.4.6.tgz#6d1fd7d41c91554f2aed97c2ba273af0388fa5cf" - integrity sha512-A6jEW2FxLZo1CXsRWnZHUX2wzR3uDju2Bozt6rDbSmU/W8gkilaVbwFEVN0/NhnUdMVzwYobWtM6bU1QJJFb7Q== - dependencies: - "@types/node" "*" - xpath "0.0.27" - -"@types/xml-encryption@^1.2.1": - version "1.2.4" - resolved "https://registry.npmmirror.com/@types/xml-encryption/-/xml-encryption-1.2.4.tgz#0eceea58c82a89f62c0a2dc383a6461dfc2fe1ba" - integrity sha512-I69K/WW1Dv7j6O3jh13z0X8sLWJRXbu5xnHDl9yHzUNDUBtUoBY058eb5s+x/WG6yZC1h8aKdI2EoyEPjyEh+Q== +"@types/ws@*": + version "8.18.1" + resolved "https://registry.yarnpkg.com/@types/ws/-/ws-8.18.1.tgz#48464e4bf2ddfd17db13d845467f6070ffea4aa9" + integrity sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg== dependencies: "@types/node" "*" -"@types/xml2js@^0.4.11": - version "0.4.14" - resolved "https://registry.npmmirror.com/@types/xml2js/-/xml2js-0.4.14.tgz#5d462a2a7330345e2309c6b549a183a376de8f9a" - integrity sha512-4YnrRemBShWRO2QjvUin8ESA41rH+9nQGLUGZV/1IDhi3SL9OhdpNC/MrulTWuptXKwhx/aDxE7toV0f/ypIXQ== +"@types/ws@^8.5.10", "@types/ws@^8.5.3": + version "8.5.10" + resolved "https://registry.npmmirror.com/@types/ws/-/ws-8.5.10.tgz#4acfb517970853fa6574a3a6886791d04a396787" + integrity sha512-vmQSUcfalpIq0R9q7uTo2lXs6eGIpt9wtnLdMv9LVpIjCA/+ufZRozlVoVelIYixx1ugCBKDhn89vnsEGOCx9A== dependencies: "@types/node" "*" @@ -10773,6 +14007,13 @@ resolved "https://registry.npmmirror.com/@types/yargs-parser/-/yargs-parser-21.0.3.tgz#815e30b786d2e8f0dcd85fd5bcf5e1a04d008f15" integrity sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ== +"@types/yargs@^17.0.33": + version "17.0.35" + resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-17.0.35.tgz#07013e46aa4d7d7d50a49e15604c1c5340d4eb24" + integrity sha512-qUHkeCyQFxMXg79wQfTtfndEC+N9ZZg76HJftDJp+qH2tV7Gj4OJi7l+PiWwJ+pWtW8GwSmqsDj/oymhrTWXjg== + dependencies: + "@types/yargs-parser" "*" + "@types/yargs@^17.0.8": version "17.0.32" resolved "https://registry.npmmirror.com/@types/yargs/-/yargs-17.0.32.tgz#030774723a2f7faafebf645f4e5a48371dca6229" @@ -10780,139 +14021,146 @@ dependencies: "@types/yargs-parser" "*" -"@typescript-eslint/eslint-plugin@^6.12.0": - version "6.20.0" - resolved "https://registry.npmmirror.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.20.0.tgz#9cf31546d2d5e884602626d89b0e0d2168ac25ed" - integrity sha512-fTwGQUnjhoYHeSF6m5pWNkzmDDdsKELYrOBxhjMrofPqCkoC2k3B2wvGHFxa1CTIqkEn88nlW1HVMztjo2K8Hg== - dependencies: - "@eslint-community/regexpp" "^4.5.1" - "@typescript-eslint/scope-manager" "6.20.0" - "@typescript-eslint/type-utils" "6.20.0" - "@typescript-eslint/utils" "6.20.0" - "@typescript-eslint/visitor-keys" "6.20.0" - debug "^4.3.4" - graphemer "^1.4.0" - ignore "^5.2.4" +"@typescript-eslint/eslint-plugin@^8.17.0": + version "8.59.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.59.0.tgz#fcbe76b693ce2412410cf4d48aefd617d345f2d9" + integrity sha512-HyAZtpdkgZwpq8Sz3FSUvCR4c+ScbuWa9AksK2Jweub7w4M3yTz4O11AqVJzLYjy/B9ZWPyc81I+mOdJU/bDQw== + dependencies: + "@eslint-community/regexpp" "^4.12.2" + "@typescript-eslint/scope-manager" "8.59.0" + "@typescript-eslint/type-utils" "8.59.0" + "@typescript-eslint/utils" "8.59.0" + "@typescript-eslint/visitor-keys" "8.59.0" + ignore "^7.0.5" natural-compare "^1.4.0" - semver "^7.5.4" - ts-api-utils "^1.0.1" - -"@typescript-eslint/parser@^6.7.2": - version "6.20.0" - resolved "https://registry.npmmirror.com/@typescript-eslint/parser/-/parser-6.20.0.tgz#17e314177304bdf498527e3c4b112e41287b7416" - integrity sha512-bYerPDF/H5v6V76MdMYhjwmwgMA+jlPVqjSDq2cRqMi8bP5sR3Z+RLOiOMad3nsnmDVmn2gAFCyNgh/dIrfP/w== - dependencies: - "@typescript-eslint/scope-manager" "6.20.0" - "@typescript-eslint/types" "6.20.0" - "@typescript-eslint/typescript-estree" "6.20.0" - "@typescript-eslint/visitor-keys" "6.20.0" - debug "^4.3.4" - -"@typescript-eslint/scope-manager@5.62.0": - version "5.62.0" - resolved "https://registry.npmmirror.com/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz#d9457ccc6a0b8d6b37d0eb252a23022478c5460c" - integrity sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w== - dependencies: - "@typescript-eslint/types" "5.62.0" - "@typescript-eslint/visitor-keys" "5.62.0" - -"@typescript-eslint/scope-manager@6.20.0": - version "6.20.0" - resolved "https://registry.npmmirror.com/@typescript-eslint/scope-manager/-/scope-manager-6.20.0.tgz#8a926e60f6c47feb5bab878246dc2ae465730151" - integrity sha512-p4rvHQRDTI1tGGMDFQm+GtxP1ZHyAh64WANVoyEcNMpaTFn3ox/3CcgtIlELnRfKzSs/DwYlDccJEtr3O6qBvA== - dependencies: - "@typescript-eslint/types" "6.20.0" - "@typescript-eslint/visitor-keys" "6.20.0" - -"@typescript-eslint/type-utils@6.20.0": - version "6.20.0" - resolved "https://registry.npmmirror.com/@typescript-eslint/type-utils/-/type-utils-6.20.0.tgz#d395475cd0f3610dd80c7d8716fa0db767da3831" - integrity sha512-qnSobiJQb1F5JjN0YDRPHruQTrX7ICsmltXhkV536mp4idGAYrIyr47zF/JmkJtEcAVnIz4gUYJ7gOZa6SmN4g== - dependencies: - "@typescript-eslint/typescript-estree" "6.20.0" - "@typescript-eslint/utils" "6.20.0" - debug "^4.3.4" - ts-api-utils "^1.0.1" - -"@typescript-eslint/types@5.62.0": - version "5.62.0" - resolved "https://registry.npmmirror.com/@typescript-eslint/types/-/types-5.62.0.tgz#258607e60effa309f067608931c3df6fed41fd2f" - integrity sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ== - -"@typescript-eslint/types@6.20.0": - version "6.20.0" - resolved "https://registry.npmmirror.com/@typescript-eslint/types/-/types-6.20.0.tgz#5ccd74c29011ae7714ae6973e4ec0c634708b448" - integrity sha512-MM9mfZMAhiN4cOEcUOEx+0HmuaW3WBfukBZPCfwSqFnQy0grXYtngKCqpQN339X3RrwtzspWJrpbrupKYUSBXQ== - -"@typescript-eslint/typescript-estree@5.62.0": - version "5.62.0" - resolved "https://registry.npmmirror.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz#7d17794b77fabcac615d6a48fb143330d962eb9b" - integrity sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA== - dependencies: - "@typescript-eslint/types" "5.62.0" - "@typescript-eslint/visitor-keys" "5.62.0" - debug "^4.3.4" - globby "^11.1.0" - is-glob "^4.0.3" - semver "^7.3.7" - tsutils "^3.21.0" - -"@typescript-eslint/typescript-estree@6.20.0": - version "6.20.0" - resolved "https://registry.npmmirror.com/@typescript-eslint/typescript-estree/-/typescript-estree-6.20.0.tgz#5b2d0975949e6bdd8d45ee1471461ef5fadc5542" - integrity sha512-RnRya9q5m6YYSpBN7IzKu9FmLcYtErkDkc8/dKv81I9QiLLtVBHrjz+Ev/crAqgMNW2FCsoZF4g2QUylMnJz+g== - dependencies: - "@typescript-eslint/types" "6.20.0" - "@typescript-eslint/visitor-keys" "6.20.0" + ts-api-utils "^2.5.0" + +"@typescript-eslint/parser@^8.16.0": + version "8.59.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-8.59.0.tgz#57a138280b3ceaf07904fbd62c433d5cc1ee1573" + integrity sha512-TI1XGwKbDpo9tRW8UDIXCOeLk55qe9ZFGs8MTKU6/M08HWTw52DD/IYhfQtOEhEdPhLMT26Ka/x7p70nd3dzDg== + dependencies: + "@typescript-eslint/scope-manager" "8.59.0" + "@typescript-eslint/types" "8.59.0" + "@typescript-eslint/typescript-estree" "8.59.0" + "@typescript-eslint/visitor-keys" "8.59.0" + debug "^4.4.3" + +"@typescript-eslint/project-service@8.59.0": + version "8.59.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/project-service/-/project-service-8.59.0.tgz#914bf62069d870faa0389ffd725774a200f511bf" + integrity sha512-Lw5ITrR5s5TbC19YSvlr63ZfLaJoU6vtKTHyB0GQOpX0W7d5/Ir6vUahWi/8Sps/nOukZQ0IB3SmlxZnjaKVnw== + dependencies: + "@typescript-eslint/tsconfig-utils" "^8.59.0" + "@typescript-eslint/types" "^8.59.0" + debug "^4.4.3" + +"@typescript-eslint/scope-manager@7.18.0": + version "7.18.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-7.18.0.tgz#c928e7a9fc2c0b3ed92ab3112c614d6bd9951c83" + integrity sha512-jjhdIE/FPF2B7Z1uzc6i3oWKbGcHb87Qw7AWj6jmEqNOfDFbJWtjt/XfwCpvNkpGWlcJaog5vTR+VV8+w9JflA== + dependencies: + "@typescript-eslint/types" "7.18.0" + "@typescript-eslint/visitor-keys" "7.18.0" + +"@typescript-eslint/scope-manager@8.59.0": + version "8.59.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-8.59.0.tgz#f71be268bd31da1c160815c689e4dde7c9bc9e8e" + integrity sha512-UzR16Ut8IpA3Mc4DbgAShlPPkVm8xXMWafXxB0BocaVRHs8ZGakAxGRskF7FId3sdk9lgGD73GSFaWmWFDE4dg== + dependencies: + "@typescript-eslint/types" "8.59.0" + "@typescript-eslint/visitor-keys" "8.59.0" + +"@typescript-eslint/tsconfig-utils@8.59.0", "@typescript-eslint/tsconfig-utils@^8.59.0": + version "8.59.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.59.0.tgz#1276077f5ad77e384446ea28a2474e8f8be1af41" + integrity sha512-91Sbl3s4Kb3SybliIY6muFBmHVv+pYXfybC4Oolp3dvk8BvIE3wOPc+403CWIT7mJNkfQRGtdqghzs2+Z91Tqg== + +"@typescript-eslint/type-utils@8.59.0": + version "8.59.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-8.59.0.tgz#2834ea3b179cedfc9244dcd4f74105a27751a439" + integrity sha512-3TRiZaQSltGqGeNrJzzr1+8YcEobKH9rHnqIp/1psfKFmhRQDNMGP5hBufanYTGznwShzVLs3Mz+gDN7HkWfXg== + dependencies: + "@typescript-eslint/types" "8.59.0" + "@typescript-eslint/typescript-estree" "8.59.0" + "@typescript-eslint/utils" "8.59.0" + debug "^4.4.3" + ts-api-utils "^2.5.0" + +"@typescript-eslint/types@7.18.0": + version "7.18.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-7.18.0.tgz#b90a57ccdea71797ffffa0321e744f379ec838c9" + integrity sha512-iZqi+Ds1y4EDYUtlOOC+aUmxnE9xS/yCigkjA7XpTKV6nCBd3Hp/PRGGmdwnfkV2ThMyYldP1wRpm/id99spTQ== + +"@typescript-eslint/types@8.59.0", "@typescript-eslint/types@^8.59.0": + version "8.59.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-8.59.0.tgz#cfcc643c6e879016479775850d86d84c14492738" + integrity sha512-nLzdsT1gdOgFxxxwrlNVUBzSNBEEHJ86bblmk4QAS6stfig7rcJzWKqCyxFy3YRRHXDWEkb2NralA1nOYkkm/A== + +"@typescript-eslint/typescript-estree@7.18.0": + version "7.18.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-7.18.0.tgz#b5868d486c51ce8f312309ba79bdb9f331b37931" + integrity sha512-aP1v/BSPnnyhMHts8cf1qQ6Q1IFwwRvAQGRvBFkWlo3/lH29OXA3Pts+c10nxRxIBrDnoMqzhgdwVe5f2D6OzA== + dependencies: + "@typescript-eslint/types" "7.18.0" + "@typescript-eslint/visitor-keys" "7.18.0" debug "^4.3.4" globby "^11.1.0" is-glob "^4.0.3" - minimatch "9.0.3" - semver "^7.5.4" - ts-api-utils "^1.0.1" - -"@typescript-eslint/utils@6.20.0", "@typescript-eslint/utils@^6.0.0": - version "6.20.0" - resolved "https://registry.npmmirror.com/@typescript-eslint/utils/-/utils-6.20.0.tgz#0e52afcfaa51af5656490ba4b7437cc3aa28633d" - integrity sha512-/EKuw+kRu2vAqCoDwDCBtDRU6CTKbUmwwI7SH7AashZ+W+7o8eiyy6V2cdOqN49KsTcASWsC5QeghYuRDTyOOg== + minimatch "^9.0.4" + semver "^7.6.0" + ts-api-utils "^1.3.0" + +"@typescript-eslint/typescript-estree@8.59.0": + version "8.59.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-8.59.0.tgz#feba58a70ab6ea7ac53a2f3ae900db28ce3454c2" + integrity sha512-O9Re9P1BmBLFJyikRbQpLku/QA3/AueZNO9WePLBwQrvkixTmDe8u76B6CYUAITRl/rHawggEqUGn5QIkVRLMw== + dependencies: + "@typescript-eslint/project-service" "8.59.0" + "@typescript-eslint/tsconfig-utils" "8.59.0" + "@typescript-eslint/types" "8.59.0" + "@typescript-eslint/visitor-keys" "8.59.0" + debug "^4.4.3" + minimatch "^10.2.2" + semver "^7.7.3" + tinyglobby "^0.2.15" + ts-api-utils "^2.5.0" + +"@typescript-eslint/utils@8.59.0", "@typescript-eslint/utils@^6.0.0 || ^7.0.0 || ^8.0.0": + version "8.59.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-8.59.0.tgz#f50df9bd6967881ef64fba62230111153179ead5" + integrity sha512-I1R/K7V07XsMJ12Oaxg/O9GfrysGTmCRhvZJBv0RE0NcULMzjqVpR5kRRQjHsz3J/bElU7HwCO7zkqL+MSUz+g== + dependencies: + "@eslint-community/eslint-utils" "^4.9.1" + "@typescript-eslint/scope-manager" "8.59.0" + "@typescript-eslint/types" "8.59.0" + "@typescript-eslint/typescript-estree" "8.59.0" + +"@typescript-eslint/utils@^7.0.0": + version "7.18.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-7.18.0.tgz#bca01cde77f95fc6a8d5b0dbcbfb3d6ca4be451f" + integrity sha512-kK0/rNa2j74XuHVcoCZxdFBMF+aq/vH83CXAOHieC+2Gis4mF8jJXT5eAfyD3K0sAxtPuwxaIOIOvhwzVDt/kw== dependencies: "@eslint-community/eslint-utils" "^4.4.0" - "@types/json-schema" "^7.0.12" - "@types/semver" "^7.5.0" - "@typescript-eslint/scope-manager" "6.20.0" - "@typescript-eslint/types" "6.20.0" - "@typescript-eslint/typescript-estree" "6.20.0" - semver "^7.5.4" + "@typescript-eslint/scope-manager" "7.18.0" + "@typescript-eslint/types" "7.18.0" + "@typescript-eslint/typescript-estree" "7.18.0" -"@typescript-eslint/utils@^5.10.0": - version "5.62.0" - resolved "https://registry.npmmirror.com/@typescript-eslint/utils/-/utils-5.62.0.tgz#141e809c71636e4a75daa39faed2fb5f4b10df86" - integrity sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ== +"@typescript-eslint/visitor-keys@7.18.0": + version "7.18.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-7.18.0.tgz#0564629b6124d67607378d0f0332a0495b25e7d7" + integrity sha512-cDF0/Gf81QpY3xYyJKDV14Zwdmid5+uuENhjH2EqFaF0ni+yAyq/LzMaIJdhNJXZI7uLzwIlA+V7oWoyn6Curg== dependencies: - "@eslint-community/eslint-utils" "^4.2.0" - "@types/json-schema" "^7.0.9" - "@types/semver" "^7.3.12" - "@typescript-eslint/scope-manager" "5.62.0" - "@typescript-eslint/types" "5.62.0" - "@typescript-eslint/typescript-estree" "5.62.0" - eslint-scope "^5.1.1" - semver "^7.3.7" - -"@typescript-eslint/visitor-keys@5.62.0": - version "5.62.0" - resolved "https://registry.npmmirror.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz#2174011917ce582875954ffe2f6912d5931e353e" - integrity sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw== - dependencies: - "@typescript-eslint/types" "5.62.0" - eslint-visitor-keys "^3.3.0" + "@typescript-eslint/types" "7.18.0" + eslint-visitor-keys "^3.4.3" -"@typescript-eslint/visitor-keys@6.20.0": - version "6.20.0" - resolved "https://registry.npmmirror.com/@typescript-eslint/visitor-keys/-/visitor-keys-6.20.0.tgz#f7ada27f2803de89df0edd9fd7be22c05ce6a498" - integrity sha512-E8Cp98kRe4gKHjJD4NExXKz/zOJ1A2hhZc+IMVD6i7w4yjIvh6VyuRI0gRtxAsXtoC35uGMaQ9rjI2zJaXDEAw== +"@typescript-eslint/visitor-keys@8.59.0": + version "8.59.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-8.59.0.tgz#2e80de30e7e944ed4bd47d751e37dcb04db03795" + integrity sha512-/uejZt4dSere1bx12WLlPfv8GktzcaDtuJ7s42/HEZ5zGj9oxRaD4bj7qwSunXkf+pbAhFt2zjpHYUiT5lHf0Q== dependencies: - "@typescript-eslint/types" "6.20.0" - eslint-visitor-keys "^3.4.1" + "@typescript-eslint/types" "8.59.0" + eslint-visitor-keys "^5.0.0" "@uiw/codemirror-extensions-basic-setup@4.21.21": version "4.21.21" @@ -10944,152 +14192,133 @@ resolved "https://registry.npmmirror.com/@ungap/structured-clone/-/structured-clone-1.2.0.tgz#756641adb587851b5ccb3e095daf27ae581c8406" integrity sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ== -"@webassemblyjs/ast@1.11.6", "@webassemblyjs/ast@^1.11.5": - version "1.11.6" - resolved "https://registry.npmmirror.com/@webassemblyjs/ast/-/ast-1.11.6.tgz#db046555d3c413f8966ca50a95176a0e2c642e24" - integrity sha512-IN1xI7PwOvLPgjcf180gC1bqn3q/QaOCwYUahIOhbYUu8KA/3tw2RT/T0Gidi1l7Hhj5D/INhJxiICObqpMu4Q== +"@webassemblyjs/ast@1.14.1", "@webassemblyjs/ast@^1.14.1": + version "1.14.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.14.1.tgz#a9f6a07f2b03c95c8d38c4536a1fdfb521ff55b6" + integrity sha512-nuBEDgQfm1ccRp/8bCQrx1frohyufl4JlbMMZ4P1wpeOfDhF6FQkxZJ1b/e+PLwr6X1Nhw6OLme5usuBWYBvuQ== dependencies: - "@webassemblyjs/helper-numbers" "1.11.6" - "@webassemblyjs/helper-wasm-bytecode" "1.11.6" + "@webassemblyjs/helper-numbers" "1.13.2" + "@webassemblyjs/helper-wasm-bytecode" "1.13.2" -"@webassemblyjs/floating-point-hex-parser@1.11.6": - version "1.11.6" - resolved "https://registry.npmmirror.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz#dacbcb95aff135c8260f77fa3b4c5fea600a6431" - integrity sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw== +"@webassemblyjs/floating-point-hex-parser@1.13.2": + version "1.13.2" + resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.13.2.tgz#fcca1eeddb1cc4e7b6eed4fc7956d6813b21b9fb" + integrity sha512-6oXyTOzbKxGH4steLbLNOu71Oj+C8Lg34n6CqRvqfS2O71BxY6ByfMDRhBytzknj9yGUPVJ1qIKhRlAwO1AovA== -"@webassemblyjs/helper-api-error@1.11.6": - version "1.11.6" - resolved "https://registry.npmmirror.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz#6132f68c4acd59dcd141c44b18cbebbd9f2fa768" - integrity sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q== +"@webassemblyjs/helper-api-error@1.13.2": + version "1.13.2" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.13.2.tgz#e0a16152248bc38daee76dd7e21f15c5ef3ab1e7" + integrity sha512-U56GMYxy4ZQCbDZd6JuvvNV/WFildOjsaWD3Tzzvmw/mas3cXzRJPMjP83JqEsgSbyrmaGjBfDtV7KDXV9UzFQ== -"@webassemblyjs/helper-buffer@1.11.6": - version "1.11.6" - resolved "https://registry.npmmirror.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.6.tgz#b66d73c43e296fd5e88006f18524feb0f2c7c093" - integrity sha512-z3nFzdcp1mb8nEOFFk8DrYLpHvhKC3grJD2ardfKOzmbmJvEf/tPIqCY+sNcwZIY8ZD7IkB2l7/pqhUhqm7hLA== +"@webassemblyjs/helper-buffer@1.14.1": + version "1.14.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.14.1.tgz#822a9bc603166531f7d5df84e67b5bf99b72b96b" + integrity sha512-jyH7wtcHiKssDtFPRB+iQdxlDf96m0E39yb0k5uJVhFGleZFoNw1c4aeIcVUPPbXUVJ94wwnMOAqUHyzoEPVMA== -"@webassemblyjs/helper-numbers@1.11.6": - version "1.11.6" - resolved "https://registry.npmmirror.com/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz#cbce5e7e0c1bd32cf4905ae444ef64cea919f1b5" - integrity sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g== +"@webassemblyjs/helper-numbers@1.13.2": + version "1.13.2" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-numbers/-/helper-numbers-1.13.2.tgz#dbd932548e7119f4b8a7877fd5a8d20e63490b2d" + integrity sha512-FE8aCmS5Q6eQYcV3gI35O4J789wlQA+7JrqTTpJqn5emA4U2hvwJmvFRC0HODS+3Ye6WioDklgd6scJ3+PLnEA== dependencies: - "@webassemblyjs/floating-point-hex-parser" "1.11.6" - "@webassemblyjs/helper-api-error" "1.11.6" + "@webassemblyjs/floating-point-hex-parser" "1.13.2" + "@webassemblyjs/helper-api-error" "1.13.2" "@xtuc/long" "4.2.2" -"@webassemblyjs/helper-wasm-bytecode@1.11.6": - version "1.11.6" - resolved "https://registry.npmmirror.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz#bb2ebdb3b83aa26d9baad4c46d4315283acd51e9" - integrity sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA== +"@webassemblyjs/helper-wasm-bytecode@1.13.2": + version "1.13.2" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.13.2.tgz#e556108758f448aae84c850e593ce18a0eb31e0b" + integrity sha512-3QbLKy93F0EAIXLh0ogEVR6rOubA9AoZ+WRYhNbFyuB70j3dRdwH9g+qXhLAO0kiYGlg3TxDV+I4rQTr/YNXkA== -"@webassemblyjs/helper-wasm-section@1.11.6": - version "1.11.6" - resolved "https://registry.npmmirror.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.6.tgz#ff97f3863c55ee7f580fd5c41a381e9def4aa577" - integrity sha512-LPpZbSOwTpEC2cgn4hTydySy1Ke+XEu+ETXuoyvuyezHO3Kjdu90KK95Sh9xTbmjrCsUwvWwCOQQNta37VrS9g== +"@webassemblyjs/helper-wasm-section@1.14.1": + version "1.14.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.14.1.tgz#9629dda9c4430eab54b591053d6dc6f3ba050348" + integrity sha512-ds5mXEqTJ6oxRoqjhWDU83OgzAYjwsCV8Lo/N+oRsNDmx/ZDpqalmrtgOMkHwxsG0iI//3BwWAErYRHtgn0dZw== dependencies: - "@webassemblyjs/ast" "1.11.6" - "@webassemblyjs/helper-buffer" "1.11.6" - "@webassemblyjs/helper-wasm-bytecode" "1.11.6" - "@webassemblyjs/wasm-gen" "1.11.6" + "@webassemblyjs/ast" "1.14.1" + "@webassemblyjs/helper-buffer" "1.14.1" + "@webassemblyjs/helper-wasm-bytecode" "1.13.2" + "@webassemblyjs/wasm-gen" "1.14.1" -"@webassemblyjs/ieee754@1.11.6": - version "1.11.6" - resolved "https://registry.npmmirror.com/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz#bb665c91d0b14fffceb0e38298c329af043c6e3a" - integrity sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg== +"@webassemblyjs/ieee754@1.13.2": + version "1.13.2" + resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.13.2.tgz#1c5eaace1d606ada2c7fd7045ea9356c59ee0dba" + integrity sha512-4LtOzh58S/5lX4ITKxnAK2USuNEvpdVV9AlgGQb8rJDHaLeHciwG4zlGr0j/SNWlr7x3vO1lDEsuePvtcDNCkw== dependencies: "@xtuc/ieee754" "^1.2.0" -"@webassemblyjs/leb128@1.11.6": - version "1.11.6" - resolved "https://registry.npmmirror.com/@webassemblyjs/leb128/-/leb128-1.11.6.tgz#70e60e5e82f9ac81118bc25381a0b283893240d7" - integrity sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ== +"@webassemblyjs/leb128@1.13.2": + version "1.13.2" + resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.13.2.tgz#57c5c3deb0105d02ce25fa3fd74f4ebc9fd0bbb0" + integrity sha512-Lde1oNoIdzVzdkNEAWZ1dZ5orIbff80YPdHx20mrHwHrVNNTjNr8E3xz9BdpcGqRQbAEa+fkrCb+fRFTl/6sQw== dependencies: "@xtuc/long" "4.2.2" -"@webassemblyjs/utf8@1.11.6": - version "1.11.6" - resolved "https://registry.npmmirror.com/@webassemblyjs/utf8/-/utf8-1.11.6.tgz#90f8bc34c561595fe156603be7253cdbcd0fab5a" - integrity sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA== - -"@webassemblyjs/wasm-edit@^1.11.5": - version "1.11.6" - resolved "https://registry.npmmirror.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.6.tgz#c72fa8220524c9b416249f3d94c2958dfe70ceab" - integrity sha512-Ybn2I6fnfIGuCR+Faaz7YcvtBKxvoLV3Lebn1tM4o/IAJzmi9AWYIPWpyBfU8cC+JxAO57bk4+zdsTjJR+VTOw== - dependencies: - "@webassemblyjs/ast" "1.11.6" - "@webassemblyjs/helper-buffer" "1.11.6" - "@webassemblyjs/helper-wasm-bytecode" "1.11.6" - "@webassemblyjs/helper-wasm-section" "1.11.6" - "@webassemblyjs/wasm-gen" "1.11.6" - "@webassemblyjs/wasm-opt" "1.11.6" - "@webassemblyjs/wasm-parser" "1.11.6" - "@webassemblyjs/wast-printer" "1.11.6" - -"@webassemblyjs/wasm-gen@1.11.6": - version "1.11.6" - resolved "https://registry.npmmirror.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.6.tgz#fb5283e0e8b4551cc4e9c3c0d7184a65faf7c268" - integrity sha512-3XOqkZP/y6B4F0PBAXvI1/bky7GryoogUtfwExeP/v7Nzwo1QLcq5oQmpKlftZLbT+ERUOAZVQjuNVak6UXjPA== - dependencies: - "@webassemblyjs/ast" "1.11.6" - "@webassemblyjs/helper-wasm-bytecode" "1.11.6" - "@webassemblyjs/ieee754" "1.11.6" - "@webassemblyjs/leb128" "1.11.6" - "@webassemblyjs/utf8" "1.11.6" - -"@webassemblyjs/wasm-opt@1.11.6": - version "1.11.6" - resolved "https://registry.npmmirror.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.6.tgz#d9a22d651248422ca498b09aa3232a81041487c2" - integrity sha512-cOrKuLRE7PCe6AsOVl7WasYf3wbSo4CeOk6PkrjS7g57MFfVUF9u6ysQBBODX0LdgSvQqRiGz3CXvIDKcPNy4g== - dependencies: - "@webassemblyjs/ast" "1.11.6" - "@webassemblyjs/helper-buffer" "1.11.6" - "@webassemblyjs/wasm-gen" "1.11.6" - "@webassemblyjs/wasm-parser" "1.11.6" - -"@webassemblyjs/wasm-parser@1.11.6", "@webassemblyjs/wasm-parser@^1.11.5": - version "1.11.6" - resolved "https://registry.npmmirror.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.6.tgz#bb85378c527df824004812bbdb784eea539174a1" - integrity sha512-6ZwPeGzMJM3Dqp3hCsLgESxBGtT/OeCvCZ4TA1JUPYgmhAx38tTPR9JaKy0S5H3evQpO/h2uWs2j6Yc/fjkpTQ== - dependencies: - "@webassemblyjs/ast" "1.11.6" - "@webassemblyjs/helper-api-error" "1.11.6" - "@webassemblyjs/helper-wasm-bytecode" "1.11.6" - "@webassemblyjs/ieee754" "1.11.6" - "@webassemblyjs/leb128" "1.11.6" - "@webassemblyjs/utf8" "1.11.6" - -"@webassemblyjs/wast-printer@1.11.6": - version "1.11.6" - resolved "https://registry.npmmirror.com/@webassemblyjs/wast-printer/-/wast-printer-1.11.6.tgz#a7bf8dd7e362aeb1668ff43f35cb849f188eff20" - integrity sha512-JM7AhRcE+yW2GWYaKeHL5vt4xqee5N2WcezptmgyhNS+ScggqcT1OtXykhAb13Sn5Yas0j2uv9tHgrjwvzAP4A== - dependencies: - "@webassemblyjs/ast" "1.11.6" - "@xtuc/long" "4.2.2" +"@webassemblyjs/utf8@1.13.2": + version "1.13.2" + resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.13.2.tgz#917a20e93f71ad5602966c2d685ae0c6c21f60f1" + integrity sha512-3NQWGjKTASY1xV5m7Hr0iPeXD9+RDobLll3T9d2AO+g3my8xy5peVyjSag4I50mR1bBSN/Ct12lo+R9tJk0NZQ== -"@whatwg-node/events@^0.1.0": - version "0.1.1" - resolved "https://registry.npmmirror.com/@whatwg-node/events/-/events-0.1.1.tgz#0ca718508249419587e130da26d40e29d99b5356" - integrity sha512-AyQEn5hIPV7Ze+xFoXVU3QTHXVbWPrzaOkxtENMPMuNL6VVHrp4hHfDt9nrQpjO7BgvuM95dMtkycX5M/DZR3w== +"@webassemblyjs/wasm-edit@^1.14.1": + version "1.14.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.14.1.tgz#ac6689f502219b59198ddec42dcd496b1004d597" + integrity sha512-RNJUIQH/J8iA/1NzlE4N7KtyZNHi3w7at7hDjvRNm5rcUXa00z1vRz3glZoULfJ5mpvYhLybmVcwcjGrC1pRrQ== + dependencies: + "@webassemblyjs/ast" "1.14.1" + "@webassemblyjs/helper-buffer" "1.14.1" + "@webassemblyjs/helper-wasm-bytecode" "1.13.2" + "@webassemblyjs/helper-wasm-section" "1.14.1" + "@webassemblyjs/wasm-gen" "1.14.1" + "@webassemblyjs/wasm-opt" "1.14.1" + "@webassemblyjs/wasm-parser" "1.14.1" + "@webassemblyjs/wast-printer" "1.14.1" + +"@webassemblyjs/wasm-gen@1.14.1": + version "1.14.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.14.1.tgz#991e7f0c090cb0bb62bbac882076e3d219da9570" + integrity sha512-AmomSIjP8ZbfGQhumkNvgC33AY7qtMCXnN6bL2u2Js4gVCg8fp735aEiMSBbDR7UQIj90n4wKAFUSEd0QN2Ukg== + dependencies: + "@webassemblyjs/ast" "1.14.1" + "@webassemblyjs/helper-wasm-bytecode" "1.13.2" + "@webassemblyjs/ieee754" "1.13.2" + "@webassemblyjs/leb128" "1.13.2" + "@webassemblyjs/utf8" "1.13.2" + +"@webassemblyjs/wasm-opt@1.14.1": + version "1.14.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.14.1.tgz#e6f71ed7ccae46781c206017d3c14c50efa8106b" + integrity sha512-PTcKLUNvBqnY2U6E5bdOQcSM+oVP/PmrDY9NzowJjislEjwP/C4an2303MCVS2Mg9d3AJpIGdUFIQQWbPds0Sw== + dependencies: + "@webassemblyjs/ast" "1.14.1" + "@webassemblyjs/helper-buffer" "1.14.1" + "@webassemblyjs/wasm-gen" "1.14.1" + "@webassemblyjs/wasm-parser" "1.14.1" -"@whatwg-node/fetch@^0.9.0": - version "0.9.16" - resolved "https://registry.npmmirror.com/@whatwg-node/fetch/-/fetch-0.9.16.tgz#c833eb714f41f5d2caf1a345bed7a05f56db7b16" - integrity sha512-mqasZiUNquRe3ea9+aCAuo81BR6vq5opUKprPilIHTnrg8a21Z1T1OrI+KiMFX8OmwO5HUJe/vro47lpj2JPWQ== +"@webassemblyjs/wasm-parser@1.14.1", "@webassemblyjs/wasm-parser@^1.14.1": + version "1.14.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.14.1.tgz#b3e13f1893605ca78b52c68e54cf6a865f90b9fb" + integrity sha512-JLBl+KZ0R5qB7mCnud/yyX08jWFw5MsoalJ1pQ4EdFlgj9VdXKGuENGsiCIjegI1W7p91rUlcB/LB5yRJKNTcQ== dependencies: - "@whatwg-node/node-fetch" "^0.5.5" - urlpattern-polyfill "^10.0.0" + "@webassemblyjs/ast" "1.14.1" + "@webassemblyjs/helper-api-error" "1.13.2" + "@webassemblyjs/helper-wasm-bytecode" "1.13.2" + "@webassemblyjs/ieee754" "1.13.2" + "@webassemblyjs/leb128" "1.13.2" + "@webassemblyjs/utf8" "1.13.2" -"@whatwg-node/node-fetch@^0.5.5": - version "0.5.5" - resolved "https://registry.npmmirror.com/@whatwg-node/node-fetch/-/node-fetch-0.5.5.tgz#40c45e5f5f4185fa3391ff75f619287e0f225c7f" - integrity sha512-LhE0Oo95+dOrrzrJncrpCaR3VHSjJ5Gvkl5g9WVfkPKSKkxCbMeOsRQ+v9LrU9lRvXBJn8JicXqSufKFEpyRbQ== +"@webassemblyjs/wast-printer@1.14.1": + version "1.14.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.14.1.tgz#3bb3e9638a8ae5fdaf9610e7a06b4d9f9aa6fe07" + integrity sha512-kPSSXE6De1XOR820C90RIo2ogvZG+c3KiHzqUoO/F34Y2shGzesfqv7o57xrxovZJH/MetF5UjroJ/R/3isoiw== dependencies: - "@kamilkisiela/fast-url-parser" "^1.1.4" - "@whatwg-node/events" "^0.1.0" - busboy "^1.6.0" - fast-querystring "^1.1.1" - tslib "^2.3.1" + "@webassemblyjs/ast" "1.14.1" + "@xtuc/long" "4.2.2" + +"@wmhilton/crypto-hash@^1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@wmhilton/crypto-hash/-/crypto-hash-1.0.2.tgz#76887d8ad999fc5eeb19c2894087657778c5df73" + integrity sha512-3lopwJLEfPXLA3f1Ovvtfq+uWQTLWs+rZN/KJkOniFhGhz/36ST1rpnouh1hkVQGw+qistFPpwwK17a1e0hBCg== -"@xmldom/xmldom@^0.8.3", "@xmldom/xmldom@^0.8.5", "@xmldom/xmldom@^0.8.6", "@xmldom/xmldom@^0.8.8": +"@xmldom/xmldom@^0.8.3": version "0.8.10" resolved "https://registry.yarnpkg.com/@xmldom/xmldom/-/xmldom-0.8.10.tgz#a1337ca426aa61cef9fe15b5b28e340a72f6fa99" integrity sha512-2WALfTl4xo2SkGCYRt6rDTFfk9R1czmBvUQy12gK2KuRKIpWEhcbbzy8EZXtz/jkRqHX8bFEc6FC1HjX4TUWYw== @@ -11099,6 +14328,21 @@ resolved "https://registry.npmmirror.com/@xobotyi/scrollbar-width/-/scrollbar-width-1.9.5.tgz#80224a6919272f405b87913ca13b92929bdf3c4d" integrity sha512-N8tkAACJx2ww8vFMneJmaAgmjAG1tnVBZJRLRcx061tmsLRZHSEZSLuGWnwPtunsSLvSqXQ2wfp7Mgqg1I+2dQ== +"@xterm/addon-attach@^0.12.0": + version "0.12.0" + resolved "https://registry.yarnpkg.com/@xterm/addon-attach/-/addon-attach-0.12.0.tgz#58d9b1feb8e9e7b5403ccc1491623497c522e704" + integrity sha512-1lxvXM4JYSm60lbFmE8WMOy2oF2ip3Ye8jWorSAmwy7x8FiC53netEJ5RguL8+FSRj79MUQsNCb2hprY2QA2ig== + +"@xterm/addon-fit@^0.11.0": + version "0.11.0" + resolved "https://registry.yarnpkg.com/@xterm/addon-fit/-/addon-fit-0.11.0.tgz#ba4778b69fcc9044a060c2176bbe077657d7b37e" + integrity sha512-jYcgT6xtVYhnhgxh3QgYDnnNMYTcf8ElbxxFzX0IZo+vabQqSPAjC3c1wJrKB5E19VwQei89QCiZZP86DCPF7g== + +"@xterm/xterm@^5.5.0": + version "5.5.0" + resolved "https://registry.yarnpkg.com/@xterm/xterm/-/xterm-5.5.0.tgz#275fb8f6e14afa6e8a0c05d4ebc94523ff775396" + integrity sha512-hqJHYaQb5OptNunnyAnkHyM8aCjZ1MEIDTQu1iIbbTD/xops91NB5yq1ZK/dC2JDbVWtF23zUtl9JE2NqwT87A== + "@xtuc/ieee754@^1.2.0": version "1.2.0" resolved "https://registry.npmmirror.com/@xtuc/ieee754/-/ieee754-1.2.0.tgz#eef014a3145ae477a1cbc00cd1e552336dceb790" @@ -11114,14 +14358,6 @@ resolved "https://registry.npmmirror.com/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz#e77a97fbd345b76d83245edcd17d393b1b41fb31" integrity sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ== -"@yarnpkg/parsers@3.0.0-rc.46": - version "3.0.0-rc.46" - resolved "https://registry.npmmirror.com/@yarnpkg/parsers/-/parsers-3.0.0-rc.46.tgz#03f8363111efc0ea670e53b0282cd3ef62de4e01" - integrity sha512-aiATs7pSutzda/rq8fnuPwTglyVwjM22bNnK2ZgjrpAjQHSSl3lztd2f9evst1W/qnC58DRz7T7QndUDumAR4Q== - dependencies: - js-yaml "^3.10.0" - tslib "^2.4.0" - "@yarnpkg/parsers@^3.0.0": version "3.0.2" resolved "https://registry.yarnpkg.com/@yarnpkg/parsers/-/parsers-3.0.2.tgz#48a1517a0f49124827f4c37c284a689c607b2f32" @@ -11130,40 +14366,25 @@ js-yaml "^3.10.0" tslib "^2.4.0" -"@zkochan/js-yaml@0.0.6": - version "0.0.6" - resolved "https://registry.npmmirror.com/@zkochan/js-yaml/-/js-yaml-0.0.6.tgz#975f0b306e705e28b8068a07737fa46d3fc04826" - integrity sha512-nzvgl3VfhcELQ8LyVrYOru+UtAy1nrygk2+AGbTm8a5YcO6o8lSjAT+pfg3vJWxIoZKOUhrK6UU7xW/+00kQrg== - dependencies: - argparse "^2.0.1" - "@zxing/text-encoding@0.9.0": version "0.9.0" resolved "https://registry.yarnpkg.com/@zxing/text-encoding/-/text-encoding-0.9.0.tgz#fb50ffabc6c7c66a0c96b4c03e3d9be74864b70b" integrity sha512-U/4aVJ2mxI0aDNI8Uq0wEhMgY+u4CNtEb0om3+y3+niDAsoTCOB33UF0sxpzqzdqXLqmvc+vZyAt4O8pPdfkwA== -JSONStream@^1.3.5: - version "1.3.5" - resolved "https://registry.npmmirror.com/JSONStream/-/JSONStream-1.3.5.tgz#3208c1f08d3a4d99261ab64f92302bc15e111ca0" - integrity sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ== - dependencies: - jsonparse "^1.2.0" - through ">=2.2.7 <3" - a-sync-waterfall@^1.0.0: version "1.0.1" resolved "https://registry.npmmirror.com/a-sync-waterfall/-/a-sync-waterfall-1.0.1.tgz#75b6b6aa72598b497a125e7a2770f14f4c8a1fa7" integrity sha512-RYTOHHdWipFUliRFMCS4X2Yn2X8M87V/OpSqWzKKOGhzqyUxzyVmhHDH9sAvG+ZuQf/TAOFsLCpMw09I1ufUnA== -abab@^2.0.3, abab@^2.0.5, abab@^2.0.6: +abab@^2.0.6: version "2.0.6" - resolved "https://registry.npmmirror.com/abab/-/abab-2.0.6.tgz#41b80f2c871d19686216b82309231cfd3cb3d291" + resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.6.tgz#41b80f2c871d19686216b82309231cfd3cb3d291" integrity sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA== -abbrev@^1.0.0: - version "1.1.1" - resolved "https://registry.npmmirror.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" - integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== +abbrev@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-2.0.0.tgz#cf59829b8b4f03f89dda2771cb7f3653828c89bf" + integrity sha512-6/mh1E2u2YgEsCHdY0Yx5oW+61gZU+1vXaoiHHrpKeuRNNgFvS+/jrwHiQhB5apAf5oB7UB7E19ol2R2LKH8hQ== abort-controller@^3.0.0: version "3.0.0" @@ -11172,7 +14393,7 @@ abort-controller@^3.0.0: dependencies: event-target-shim "^5.0.0" -accepts@^1.3.5, accepts@~1.3.4, accepts@~1.3.5, accepts@~1.3.8: +accepts@^1.3.5, accepts@^1.3.8, accepts@~1.3.4, accepts@~1.3.5, accepts@~1.3.8: version "1.3.8" resolved "https://registry.npmmirror.com/accepts/-/accepts-1.3.8.tgz#0bf0be125b67014adcb0b0921e62db7bffe16b2e" integrity sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw== @@ -11180,57 +14401,46 @@ accepts@^1.3.5, accepts@~1.3.4, accepts@~1.3.5, accepts@~1.3.8: mime-types "~2.1.34" negotiator "0.6.3" -acorn-globals@^6.0.0: - version "6.0.0" - resolved "https://registry.npmmirror.com/acorn-globals/-/acorn-globals-6.0.0.tgz#46cdd39f0f8ff08a876619b55f5ac8a6dc770b45" - integrity sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg== - dependencies: - acorn "^7.1.1" - acorn-walk "^7.1.1" - acorn-globals@^7.0.0: version "7.0.1" - resolved "https://registry.npmmirror.com/acorn-globals/-/acorn-globals-7.0.1.tgz#0dbf05c44fa7c94332914c02066d5beff62c40c3" + resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-7.0.1.tgz#0dbf05c44fa7c94332914c02066d5beff62c40c3" integrity sha512-umOSDSDrfHbTNPuNpC2NSnnA3LUrqpevPb4T9jRx4MagXNS0rs+gwiTcAvqCRmsD6utzsrzNt+ebm00SNWiC3Q== dependencies: acorn "^8.1.0" acorn-walk "^8.0.2" -acorn-import-assertions@^1.9.0: - version "1.9.0" - resolved "https://registry.npmmirror.com/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz#507276249d684797c84e0734ef84860334cfb1ac" - integrity sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA== +acorn-import-phases@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/acorn-import-phases/-/acorn-import-phases-1.0.4.tgz#16eb850ba99a056cb7cbfe872ffb8972e18c8bd7" + integrity sha512-wKmbr/DDiIXzEOiWrTTUcDm24kQ2vGfZQvM2fwg2vXqR5uW6aapr7ObPtj1th32b9u90/Pf4AItvdTh42fBmVQ== acorn-jsx@^5.3.2: version "5.3.2" resolved "https://registry.npmmirror.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== -acorn-walk@^7.1.1: - version "7.2.0" - resolved "https://registry.npmmirror.com/acorn-walk/-/acorn-walk-7.2.0.tgz#0de889a601203909b0fbe07b8938dc21d2e967bc" - integrity sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA== +acorn-walk@^8.0.2, acorn-walk@^8.3.4: + version "8.3.5" + resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.3.5.tgz#8a6b8ca8fc5b34685af15dabb44118663c296496" + integrity sha512-HEHNfbars9v4pgpW6SO1KSPkfoS0xVOM/9UzkJltjlsHZmJasxg8aXkuZa7SMf8vKGIBhpUsPluQSqhJFCqebw== + dependencies: + acorn "^8.11.0" -acorn-walk@^8.0.2, acorn-walk@^8.1.1: +acorn-walk@^8.1.1: version "8.3.2" resolved "https://registry.npmmirror.com/acorn-walk/-/acorn-walk-8.3.2.tgz#7703af9415f1b6db9315d6895503862e231d34aa" integrity sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A== -acorn@^7.1.1: - version "7.4.1" - resolved "https://registry.npmmirror.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" - integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== +acorn@^8.1.0, acorn@^8.11.0, acorn@^8.15.0, acorn@^8.16.0, acorn@^8.8.1: + version "8.16.0" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.16.0.tgz#4ce79c89be40afe7afe8f3adb902a1f1ce9ac08a" + integrity sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw== -acorn@^8.1.0, acorn@^8.2.4, acorn@^8.4.1, acorn@^8.7.1, acorn@^8.8.1, acorn@^8.8.2, acorn@^8.9.0: +acorn@^8.4.1, acorn@^8.8.2, acorn@^8.9.0: version "8.11.3" resolved "https://registry.npmmirror.com/acorn/-/acorn-8.11.3.tgz#71e0b14e13a4ec160724b38fb7b0f233b1b81d7a" integrity sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg== -add-stream@^1.0.0: - version "1.0.0" - resolved "https://registry.npmmirror.com/add-stream/-/add-stream-1.0.0.tgz#6a7990437ca736d5e1288db92bd3266d5f5cb2aa" - integrity sha512-qQLMr+8o0WC4FZGQTcJiKBVC59JylcPSrTtk6usvmIDFUOCKegapy1VHQwRbFMOFyb/inzUVqHs+eMYKDM1YeQ== - address@^1.0.1, address@^1.1.2: version "1.2.2" resolved "https://registry.npmmirror.com/address/-/address-1.2.2.tgz#2b5248dac5485a6390532c6a517fda2e3faac89e" @@ -11260,7 +14470,12 @@ agent-base@^7.0.2: dependencies: debug "^4.3.4" -agentkeepalive@^4.1.4, agentkeepalive@^4.2.1: +agent-base@^7.1.0, agent-base@^7.1.2: + version "7.1.4" + resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-7.1.4.tgz#e3cd76d4c548ee895d3c3fd8dc1f6c5b9032e7a8" + integrity sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ== + +agentkeepalive@^4.1.4: version "4.5.0" resolved "https://registry.npmmirror.com/agentkeepalive/-/agentkeepalive-4.5.0.tgz#2673ad1389b3c418c5a20c5d7364f93ca04be923" integrity sha512-5GG/5IbQQpC9FpkRGsSvZI5QYeSCzlJHdpBQntCsuTOxhKD8lqKhrleg2Yi7yvMIf82Ycmmqln9U8V9qwEiJew== @@ -11295,13 +14510,25 @@ ajv-formats-draft2019@^1.6.1: smtp-address-parser "^1.0.3" uri-js "^4.4.1" -ajv-formats@^2.1.1, ajv-formats@~2.1.0: +ajv-formats@^2.1.1, ajv-formats@~2.1.0, ajv-formats@~2.1.1: version "2.1.1" resolved "https://registry.npmmirror.com/ajv-formats/-/ajv-formats-2.1.1.tgz#6e669400659eb74973bbf2e33327180a0996b520" integrity sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA== dependencies: ajv "^8.0.0" +ajv-formats@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/ajv-formats/-/ajv-formats-3.0.1.tgz#3d5dc762bca17679c3c2ea7e90ad6b7532309578" + integrity sha512-8iUql50EUR+uUcdRQ3HDqa6EVyo3docL8g5WJ3FNcWmu62IbkGUue/pEyLBW8VGKKucTPgqeks4fIU1DA4yowQ== + dependencies: + ajv "^8.0.0" + +ajv-i18n@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/ajv-i18n/-/ajv-i18n-4.2.0.tgz#d48750ba60e283b3dee31e3c22c8c9f7410e326f" + integrity sha512-v/ei2UkCEeuKNXh8RToiFsUclmU+G57LO1Oo22OagNMENIw+Yb8eMwvHu7Vn9fmkjJyv6XclhJ8TbuigSglPkg== + ajv-keywords@^3.4.1, ajv-keywords@^3.5.2: version "3.5.2" resolved "https://registry.npmmirror.com/ajv-keywords/-/ajv-keywords-3.5.2.tgz#31f29da5ab6e00d1c2d329acf7b5929614d5014d" @@ -11324,7 +14551,7 @@ ajv@^6.12.2, ajv@^6.12.3, ajv@^6.12.4, ajv@^6.12.5: json-schema-traverse "^0.4.1" uri-js "^4.2.2" -ajv@^8.0.0, ajv@^8.10.0, ajv@^8.11.0, ajv@^8.11.2, ajv@^8.12.0, ajv@^8.6.0, ajv@^8.6.3, ajv@^8.9.0: +ajv@^8.0.0, ajv@^8.10.0, ajv@^8.11.0, ajv@^8.12.0, ajv@^8.6.0, ajv@^8.6.3, ajv@^8.9.0: version "8.12.0" resolved "https://registry.npmmirror.com/ajv/-/ajv-8.12.0.tgz#d1a0527323e22f53562c567c00991577dfbe19d1" integrity sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA== @@ -11334,7 +14561,22 @@ ajv@^8.0.0, ajv@^8.10.0, ajv@^8.11.0, ajv@^8.11.2, ajv@^8.12.0, ajv@^8.6.0, ajv@ require-from-string "^2.0.2" uri-js "^4.2.2" -ansi-colors@^4.1.1, ansi-colors@^4.1.3: +ajv@^8.0.1, ajv@^8.16.0, ajv@^8.17.1, ajv@^8.18.0: + version "8.18.0" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.18.0.tgz#8864186b6738d003eb3a933172bb3833e10cefbc" + integrity sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A== + dependencies: + fast-deep-equal "^3.1.3" + fast-uri "^3.0.1" + json-schema-traverse "^1.0.0" + require-from-string "^2.0.2" + +anser@^2.1.1: + version "2.3.5" + resolved "https://registry.yarnpkg.com/anser/-/anser-2.3.5.tgz#3435896b68b93e5e744842499d0ce3e6f6d013ee" + integrity sha512-vcZjxvvVoxTeR5XBNJB38oTu/7eDCZlwdz32N1eNgpyPF7j/Z7Idf+CUwQOkKKpJ7RJyjxgLHCM7vdIK0iCNMQ== + +ansi-colors@^4.1.3: version "4.1.3" resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.3.tgz#37611340eb2243e70cc604cad35d63270d48781b" integrity sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw== @@ -11346,6 +14588,13 @@ ansi-escapes@^4.2.1: dependencies: type-fest "^0.21.3" +ansi-escapes@^7.0.0: + version "7.3.0" + resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-7.3.0.tgz#5395bb74b2150a4a1d6e3c2565f4aeca78d28627" + integrity sha512-BvU8nYgGQBxcmMuEeUEmNTvrMVjJNSH7RgW24vXexN4Ven6qCvy4TntnvlnwnMLTVlcRQQdbRY8NKnaIoeWDNg== + dependencies: + environment "^1.0.0" + ansi-html-community@^0.0.8: version "0.0.8" resolved "https://registry.npmmirror.com/ansi-html-community/-/ansi-html-community-0.0.8.tgz#69fbc4d6ccbe383f9736934ae34c3f8290f1bf41" @@ -11366,6 +14615,11 @@ ansi-regex@^6.0.1: resolved "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-6.0.1.tgz#3183e38fae9a65d7cb5e53945cd5897d0260a06a" integrity sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA== +ansi-regex@^6.1.0, ansi-regex@^6.2.2: + version "6.2.2" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-6.2.2.tgz#60216eea464d864597ce2832000738a0589650c1" + integrity sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg== + ansi-styles@^3.2.1: version "3.2.1" resolved "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" @@ -11390,7 +14644,7 @@ ansi-styles@^6.1.0: resolved "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-6.2.1.tgz#0e62320cf99c21afff3b3012192546aacbfb05c5" integrity sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug== -any-promise@^1.0.0, any-promise@^1.1.0: +any-promise@^1.0.0: version "1.3.0" resolved "https://registry.npmmirror.com/any-promise/-/any-promise-1.3.0.tgz#abc6afeedcea52e809cdc0376aed3ce39635d17f" integrity sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A== @@ -11403,92 +14657,89 @@ anymatch@^3.0.3, anymatch@~3.1.2: normalize-path "^3.0.0" picomatch "^2.0.4" +apg-lite@^1.0.3, apg-lite@^1.0.4: + version "1.0.5" + resolved "https://registry.yarnpkg.com/apg-lite/-/apg-lite-1.0.5.tgz#17aee0e8452cb4ce7c7018dc54e53046cb31878b" + integrity sha512-SlI+nLMQDzCZfS39ihzjGp3JNBQfJXyMi6cg9tkLOCPVErgFsUIAEdO9IezR7kbP5Xd0ozcPNQBkf9TO5cHgWw== + "app@link:packages/app": version "0.0.0" dependencies: - "@backstage-community/plugin-github-actions" "^0.6.16" - "@backstage-community/plugin-tech-radar" "^0.7.4" - "@backstage/app-defaults" "^1.5.7" - "@backstage/catalog-model" "^1.5.0" - "@backstage/cli" "^0.26.10" - "@backstage/core-app-api" "^1.13.0" - "@backstage/core-components" "^0.14.8" - "@backstage/core-plugin-api" "^1.9.3" - "@backstage/integration-react" "^1.1.28" - "@backstage/plugin-api-docs" "^0.11.6" - "@backstage/plugin-catalog" "^1.21.0" - "@backstage/plugin-catalog-common" "^1.0.24" - "@backstage/plugin-catalog-graph" "^0.4.6" - "@backstage/plugin-catalog-import" "^0.12.0" - "@backstage/plugin-catalog-react" "^1.12.1" - "@backstage/plugin-home" "^0.7.6" - "@backstage/plugin-kubernetes" "^0.11.11" - "@backstage/plugin-org" "^0.6.26" - "@backstage/plugin-permission-react" "^0.4.23" - "@backstage/plugin-scaffolder" "^1.22.0" - "@backstage/plugin-search" "^1.4.13" - "@backstage/plugin-search-react" "^1.7.12" - "@backstage/plugin-techdocs" "^1.10.6" - "@backstage/plugin-techdocs-module-addons-contrib" "^1.1.11" - "@backstage/plugin-techdocs-react" "^1.2.5" - "@backstage/plugin-user-settings" "^0.8.8" - "@backstage/theme" "^0.5.6" + "@backstage-community/plugin-github-actions" "^0.22.0" + "@backstage-community/plugin-tech-radar" "^1.17.0" + "@backstage/app-defaults" "^1.7.6" + "@backstage/catalog-model" "^1.7.7" + "@backstage/cli" "^0.34.6" + "@backstage/core-app-api" "^1.19.6" + "@backstage/core-compat-api" "^0.5.9" + "@backstage/core-components" "^0.18.8" + "@backstage/core-plugin-api" "^1.12.4" + "@backstage/frontend-defaults" "^0.5.0" + "@backstage/frontend-plugin-api" "^0.15.1" + "@backstage/integration-react" "^1.2.16" + "@backstage/plugin-api-docs" "^0.13.5" + "@backstage/plugin-app-react" "^0.2.1" + "@backstage/plugin-catalog" "^2.0.1" + "@backstage/plugin-catalog-common" "^1.1.8" + "@backstage/plugin-catalog-graph" "^0.6.0" + "@backstage/plugin-catalog-import" "^0.13.11" + "@backstage/plugin-catalog-react" "^2.1.1" + "@backstage/plugin-home" "^0.9.3" + "@backstage/plugin-kubernetes" "^0.12.17" + "@backstage/plugin-kubernetes-react" "^0.5.18" + "@backstage/plugin-org" "^0.7.0" + "@backstage/plugin-permission-react" "^0.4.41" + "@backstage/plugin-scaffolder" "^1.36.1" + "@backstage/plugin-search" "^1.7.0" + "@backstage/plugin-search-react" "^1.11.0" + "@backstage/plugin-techdocs" "^1.17.2" + "@backstage/plugin-techdocs-module-addons-contrib" "^1.1.34" + "@backstage/plugin-techdocs-react" "^1.3.9" + "@backstage/plugin-user-settings" "^0.9.1" + "@backstage/theme" "^0.7.2" + "@backstage/ui" "^0.13.2" "@internal/plugin-apache-spark" "^0.1.0" "@internal/plugin-argo-workflows" "^0.1.0" - "@internal/plugin-cnoe-ui" "^0.1.0" "@internal/plugin-terraform" "^0.1.0" - "@material-ui/core" "^4.12.2" - "@material-ui/icons" "^4.9.1" - "@roadiehq/backstage-plugin-argo-cd" "^2.5.1" - history "^5.0.0" + "@mui/icons-material" "^5.0.0" + "@mui/material" "^9.0.0" + "@roadiehq/backstage-plugin-argo-cd" "^2.12.5" + "@terasky/backstage-plugin-kro-resources-frontend" "^0.2.1" + msw "^1.0.0" react "^18.0.2" react-dom "^18.0.2" - react-router "^6.3.0" react-router-dom "^6.3.0" - react-use "^17.2.4" append-field@^1.0.0: version "1.0.0" resolved "https://registry.npmmirror.com/append-field/-/append-field-1.0.0.tgz#1e3440e915f0b1203d23748e78edd7b9b5b43e56" integrity sha512-klpgFSWLW1ZEs8svjfb7g4qWY0YS5imI82dTg+QahUvJ8YqAY0P10Uk8tTyh9ZGuYEZEMaeJYCF5BFuX552hsw== -"aproba@^1.0.3 || ^2.0.0": - version "2.0.0" - resolved "https://registry.npmmirror.com/aproba/-/aproba-2.0.0.tgz#52520b8ae5b569215b354efc0caa3fe1e45a8adc" - integrity sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ== - -archiver-utils@^4.0.1: - version "4.0.1" - resolved "https://registry.npmmirror.com/archiver-utils/-/archiver-utils-4.0.1.tgz#66ad15256e69589a77f706c90c6dbcc1b2775d2a" - integrity sha512-Q4Q99idbvzmgCTEAAhi32BkOyq8iVI5EwdO0PmBDSGIzzjYNdcFn7Q7k3OzbLy4kLUPXfJtG6fO2RjftXbobBg== +archiver-utils@^5.0.0, archiver-utils@^5.0.2: + version "5.0.2" + resolved "https://registry.yarnpkg.com/archiver-utils/-/archiver-utils-5.0.2.tgz#63bc719d951803efc72cf961a56ef810760dd14d" + integrity sha512-wuLJMmIBQYCsGZgYLTy5FIB2pF6Lfb6cXMSF8Qywwk3t20zWnAi7zLcQFdKQmIB8wyZpY5ER38x08GbwtR2cLA== dependencies: - glob "^8.0.0" + glob "^10.0.0" graceful-fs "^4.2.0" + is-stream "^2.0.1" lazystream "^1.0.0" lodash "^4.17.15" normalize-path "^3.0.0" - readable-stream "^3.6.0" + readable-stream "^4.0.0" -archiver@^6.0.0: - version "6.0.1" - resolved "https://registry.npmmirror.com/archiver/-/archiver-6.0.1.tgz#d56968d4c09df309435adb5a1bbfc370dae48133" - integrity sha512-CXGy4poOLBKptiZH//VlWdFuUC1RESbdZjGjILwBuZ73P7WkAUN0htfSfBq/7k6FRFlpu7bg4JOkj1vU9G6jcQ== +archiver@^7.0.0, archiver@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/archiver/-/archiver-7.0.1.tgz#c9d91c350362040b8927379c7aa69c0655122f61" + integrity sha512-ZcbTaIqJOfCc03QwD468Unz/5Ir8ATtvAHsK+FdXbDIbGfihqh9mrvdcYunQzqn4HrvWWaFyaxJhGZagaJJpPQ== dependencies: - archiver-utils "^4.0.1" + archiver-utils "^5.0.2" async "^3.2.4" - buffer-crc32 "^0.2.1" - readable-stream "^3.6.0" + buffer-crc32 "^1.0.0" + readable-stream "^4.0.0" readdir-glob "^1.1.2" tar-stream "^3.0.0" - zip-stream "^5.0.1" - -are-we-there-yet@^3.0.0: - version "3.0.1" - resolved "https://registry.npmmirror.com/are-we-there-yet/-/are-we-there-yet-3.0.1.tgz#679df222b278c64f2cdba1175cdc00b0d96164bd" - integrity sha512-QZW4EDmGwlYur0Yyf/b2uGucHQMa8aFUP7eu9ddR73vvhFyt4V0Vl3QHPcTNJ8l6qYOBdxgXdnBXQrHilfRQBg== - dependencies: - delegates "^1.0.0" - readable-stream "^3.6.0" + zip-stream "^6.0.1" arg@^4.1.0: version "4.1.3" @@ -11524,6 +14775,13 @@ aria-hidden@^1.1.1: dependencies: tslib "^2.0.0" +aria-hidden@^1.2.3: + version "1.2.6" + resolved "https://registry.yarnpkg.com/aria-hidden/-/aria-hidden-1.2.6.tgz#73051c9b088114c795b1ea414e9c0fff874ffc1a" + integrity sha512-ik3ZgC9dY/lYVVM++OISsaYDeg1tb0VtP5uL3ouh1koGOaUMDPpbFIei4JkFimWUFPn90sbMNMXQAIVOlnYKJA== + dependencies: + tslib "^2.0.0" + aria-query@5.1.3: version "5.1.3" resolved "https://registry.npmmirror.com/aria-query/-/aria-query-5.1.3.tgz#19db27cd101152773631396f7a95a3b58c22c35e" @@ -11531,13 +14789,18 @@ aria-query@5.1.3: dependencies: deep-equal "^2.0.5" -aria-query@^5.0.0, aria-query@^5.3.0: +aria-query@^5.0.0: version "5.3.0" resolved "https://registry.npmmirror.com/aria-query/-/aria-query-5.3.0.tgz#650c569e41ad90b51b3d7df5e5eed1c7549c103e" integrity sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A== dependencies: dequal "^2.0.3" +aria-query@^5.3.2: + version "5.3.2" + resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-5.3.2.tgz#93f81a43480e33a338f19163a3d10a50c01dcd59" + integrity sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw== + array-buffer-byte-length@^1.0.0: version "1.0.0" resolved "https://registry.npmmirror.com/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz#fabe8bc193fea865f317fe7807085ee0dee5aead" @@ -11546,22 +14809,25 @@ array-buffer-byte-length@^1.0.0: call-bind "^1.0.2" is-array-buffer "^3.0.1" -array-differ@^3.0.0: - version "3.0.0" - resolved "https://registry.npmmirror.com/array-differ/-/array-differ-3.0.0.tgz#3cbb3d0f316810eafcc47624734237d6aee4ae6b" - integrity sha512-THtfYS6KtME/yIAhKjZ2ul7XI96lQGHRputJQHO80LAWQnuGP4iCIN8vdMRboGbIEYBwU33q8Tch1os2+X0kMg== +array-buffer-byte-length@^1.0.1, array-buffer-byte-length@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/array-buffer-byte-length/-/array-buffer-byte-length-1.0.2.tgz#384d12a37295aec3769ab022ad323a18a51ccf8b" + integrity sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw== + dependencies: + call-bound "^1.0.3" + is-array-buffer "^3.0.5" + +array-buffer-to-hex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/array-buffer-to-hex/-/array-buffer-to-hex-1.0.0.tgz#9c76e53010ef7bf7bf8a27ebbb41d24e1d83edf4" + integrity sha512-arycdkxgK1cj6s03GDb96tlCxOl1n3kg9M2OHseUc6Pqyqp+lgfceFPmG507eI5V+oxOSEnlOw/dFc7LXBXF4Q== array-flatten@1.1.1: version "1.1.1" resolved "https://registry.npmmirror.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" integrity sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg== -array-ify@^1.0.0: - version "1.0.0" - resolved "https://registry.npmmirror.com/array-ify/-/array-ify-1.0.0.tgz#9e528762b4a9066ad163a6962a364418e9626ece" - integrity sha512-c5AMf34bKdvPhQ7tBGhqkgKNUzMr4WUs+WDtC2ZUGOUncbxKMTvqxYctiseW3+L4bA8ec+GcZ6/A/FW4m8ukng== - -array-includes@^3.1.6, array-includes@^3.1.7: +array-includes@^3.1.6: version "3.1.7" resolved "https://registry.npmmirror.com/array-includes/-/array-includes-3.1.7.tgz#8cd2e01b26f7a3086cbc87271593fe921c62abda" integrity sha512-dlcsNBIiWhPkHdOEEKnehA+RNUWDc4UqFtnIXU4uuYDPtA4LDkr7qip2p0VvFAEXNDr0yWZ9PJyIRiGjRLQzwQ== @@ -11572,23 +14838,51 @@ array-includes@^3.1.6, array-includes@^3.1.7: get-intrinsic "^1.2.1" is-string "^1.0.7" +array-includes@^3.1.8, array-includes@^3.1.9: + version "3.1.9" + resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.9.tgz#1f0ccaa08e90cdbc3eb433210f903ad0f17c3f3a" + integrity sha512-FmeCCAenzH0KH381SPT5FZmiA/TmpndpcaShhfgEN9eCVjnFBqq3l1xrI42y8+PPLI6hypzou4GXw00WHmPBLQ== + dependencies: + call-bind "^1.0.8" + call-bound "^1.0.4" + define-properties "^1.2.1" + es-abstract "^1.24.0" + es-object-atoms "^1.1.1" + get-intrinsic "^1.3.0" + is-string "^1.1.1" + math-intrinsics "^1.1.0" + array-union@^2.1.0: version "2.1.0" resolved "https://registry.npmmirror.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== -array.prototype.findlastindex@^1.2.3: - version "1.2.3" - resolved "https://registry.npmmirror.com/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.3.tgz#b37598438f97b579166940814e2c0493a4f50207" - integrity sha512-LzLoiOMAxvy+Gd3BAq3B7VeIgPdo+Q8hthvKtXybMvRV0jrXfJM/t8mw7nNlpEcVlVUnCnM2KSX4XU5HmpodOA== +array.prototype.findlast@^1.2.5: + version "1.2.5" + resolved "https://registry.yarnpkg.com/array.prototype.findlast/-/array.prototype.findlast-1.2.5.tgz#3e4fbcb30a15a7f5bf64cf2faae22d139c2e4904" + integrity sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ== dependencies: - call-bind "^1.0.2" - define-properties "^1.2.0" - es-abstract "^1.22.1" - es-shim-unscopables "^1.0.0" - get-intrinsic "^1.2.1" + call-bind "^1.0.7" + define-properties "^1.2.1" + es-abstract "^1.23.2" + es-errors "^1.3.0" + es-object-atoms "^1.0.0" + es-shim-unscopables "^1.0.2" + +array.prototype.findlastindex@^1.2.6: + version "1.2.6" + resolved "https://registry.yarnpkg.com/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.6.tgz#cfa1065c81dcb64e34557c9b81d012f6a421c564" + integrity sha512-F/TKATkzseUExPlfvmwQKGITM3DGTK+vkAsCZoDc5daVygbJBnjEUCbgkAvVFsgfXfX4YIqZ/27G3k3tdXrTxQ== + dependencies: + call-bind "^1.0.8" + call-bound "^1.0.4" + define-properties "^1.2.1" + es-abstract "^1.23.9" + es-errors "^1.3.0" + es-object-atoms "^1.1.1" + es-shim-unscopables "^1.1.0" -array.prototype.flat@^1.3.1, array.prototype.flat@^1.3.2: +array.prototype.flat@^1.3.1: version "1.3.2" resolved "https://registry.npmmirror.com/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz#1476217df8cff17d72ee8f3ba06738db5b387d18" integrity sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA== @@ -11598,7 +14892,17 @@ array.prototype.flat@^1.3.1, array.prototype.flat@^1.3.2: es-abstract "^1.22.1" es-shim-unscopables "^1.0.0" -array.prototype.flatmap@^1.3.1, array.prototype.flatmap@^1.3.2: +array.prototype.flat@^1.3.3: + version "1.3.3" + resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.3.3.tgz#534aaf9e6e8dd79fb6b9a9917f839ef1ec63afe5" + integrity sha512-rwG/ja1neyLqCuGZ5YYrznA62D4mZXg0i1cIskIUKSiqF3Cje9/wXAls9B9s1Wa2fomMsIv8czB8jZcPmxCXFg== + dependencies: + call-bind "^1.0.8" + define-properties "^1.2.1" + es-abstract "^1.23.5" + es-shim-unscopables "^1.0.2" + +array.prototype.flatmap@^1.3.2: version "1.3.2" resolved "https://registry.npmmirror.com/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz#c9a7c6831db8e719d6ce639190146c24bbd3e527" integrity sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ== @@ -11608,16 +14912,26 @@ array.prototype.flatmap@^1.3.1, array.prototype.flatmap@^1.3.2: es-abstract "^1.22.1" es-shim-unscopables "^1.0.0" -array.prototype.tosorted@^1.1.1: - version "1.1.2" - resolved "https://registry.npmmirror.com/array.prototype.tosorted/-/array.prototype.tosorted-1.1.2.tgz#620eff7442503d66c799d95503f82b475745cefd" - integrity sha512-HuQCHOlk1Weat5jzStICBCd83NxiIMwqDg/dHEsoefabn/hJRj5pVdWcPUSpRrwhwxZOsQassMpgN/xRYFBMIg== +array.prototype.flatmap@^1.3.3: + version "1.3.3" + resolved "https://registry.yarnpkg.com/array.prototype.flatmap/-/array.prototype.flatmap-1.3.3.tgz#712cc792ae70370ae40586264629e33aab5dd38b" + integrity sha512-Y7Wt51eKJSyi80hFrJCePGGNo5ktJCslFuboqJsbf57CCPcm5zztluPlc4/aD8sWsKvlwatezpV4U1efk8kpjg== dependencies: - call-bind "^1.0.2" - define-properties "^1.2.0" - es-abstract "^1.22.1" - es-shim-unscopables "^1.0.0" - get-intrinsic "^1.2.1" + call-bind "^1.0.8" + define-properties "^1.2.1" + es-abstract "^1.23.5" + es-shim-unscopables "^1.0.2" + +array.prototype.tosorted@^1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/array.prototype.tosorted/-/array.prototype.tosorted-1.1.4.tgz#fe954678ff53034e717ea3352a03f0b0b86f7ffc" + integrity sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA== + dependencies: + call-bind "^1.0.7" + define-properties "^1.2.1" + es-abstract "^1.23.3" + es-errors "^1.3.0" + es-shim-unscopables "^1.0.2" arraybuffer.prototype.slice@^1.0.2: version "1.0.2" @@ -11632,21 +14946,38 @@ arraybuffer.prototype.slice@^1.0.2: is-array-buffer "^3.0.2" is-shared-array-buffer "^1.0.2" -arrify@^1.0.1: - version "1.0.1" - resolved "https://registry.npmmirror.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" - integrity sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA== +arraybuffer.prototype.slice@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.4.tgz#9d760d84dbdd06d0cbf92c8849615a1a7ab3183c" + integrity sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ== + dependencies: + array-buffer-byte-length "^1.0.1" + call-bind "^1.0.8" + define-properties "^1.2.1" + es-abstract "^1.23.5" + es-errors "^1.3.0" + get-intrinsic "^1.2.6" + is-array-buffer "^3.0.4" -arrify@^2.0.0, arrify@^2.0.1: +arrify@^2.0.0: version "2.0.1" resolved "https://registry.npmmirror.com/arrify/-/arrify-2.0.1.tgz#c9655e9331e0abcd588d2a7cad7e9956f66701fa" integrity sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug== -asap@^2.0.0, asap@^2.0.3: +asap@^2.0.0, asap@^2.0.3, asap@~2.0.3: version "2.0.6" resolved "https://registry.npmmirror.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" integrity sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA== +asn1.js@^4.10.1: + version "4.10.1" + resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-4.10.1.tgz#b9c2bf5805f1e64aadeed6df3a2bfafb5a73f5a0" + integrity sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw== + dependencies: + bn.js "^4.0.0" + inherits "^2.0.1" + minimalistic-assert "^1.0.0" + asn1.js@^5.2.0: version "5.4.1" resolved "https://registry.npmmirror.com/asn1.js/-/asn1.js-5.4.1.tgz#11a980b84ebb91781ce35b0fdc2ee294e3783f07" @@ -11669,29 +15000,46 @@ assert-plus@1.0.0, assert-plus@^1.0.0: resolved "https://registry.npmmirror.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" integrity sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw== -assert@^1.1.1: - version "1.5.1" - resolved "https://registry.npmmirror.com/assert/-/assert-1.5.1.tgz#038ab248e4ff078e7bc2485ba6e6388466c78f76" - integrity sha512-zzw1uCAgLbsKwBfFc8CX78DDg+xZeBksSO3vwVIDDN5i94eOrPsSSyiVhmsSABFDM/OcpE2aagCat9dnWQLG1A== +assert@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/assert/-/assert-2.1.0.tgz#6d92a238d05dc02e7427c881fb8be81c8448b2dd" + integrity sha512-eLHpSK/Y4nhMJ07gDaAzoX/XAKS8PSaojml3M0DM4JpV1LAi5JOJ/p6H/XWrl8L+DzVEvVCW1z3vWAaB9oTsQw== dependencies: + call-bind "^1.0.2" + is-nan "^1.3.2" + object-is "^1.1.5" object.assign "^4.1.4" - util "^0.10.4" + util "^0.12.5" ast-types-flow@^0.0.8: version "0.0.8" resolved "https://registry.npmmirror.com/ast-types-flow/-/ast-types-flow-0.0.8.tgz#0a85e1c92695769ac13a428bb653e7538bea27d6" integrity sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ== +ast-types@^0.13.4: + version "0.13.4" + resolved "https://registry.yarnpkg.com/ast-types/-/ast-types-0.13.4.tgz#ee0d77b343263965ecc3fb62da16e7222b2b6782" + integrity sha512-x1FCFnFifvYDDzTaLII71vG5uvDwgtmDTEVWAxrgeiR8VjMONcCXJx7E+USjDtHlwFmt9MysbqgF9b9Vjr6w+w== + dependencies: + tslib "^2.0.1" + astring@^1.8.1: version "1.8.6" resolved "https://registry.npmmirror.com/astring/-/astring-1.8.6.tgz#2c9c157cf1739d67561c56ba896e6948f6b93731" integrity sha512-ISvCdHdlTDlH5IpxQJIex7BWBywFWgjJSVdwst+/iQCoEYnyOaQ95+X1JGshuBjGp6nxKUy1jMgE3zPqN7fQdg== -async-lock@^1.1.0: +async-lock@^1.1.0, async-lock@^1.4.1: version "1.4.1" resolved "https://registry.npmmirror.com/async-lock/-/async-lock-1.4.1.tgz#56b8718915a9b68b10fce2f2a9a3dddf765ef53f" integrity sha512-Az2ZTpuytrtqENulXwO3GGv1Bztugx6TT37NIo7imr/Qo0gsYiGtSdBa2B6fsXhTpVZDNfu1Qn3pk531e3q+nQ== +async-mutex@^0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/async-mutex/-/async-mutex-0.5.0.tgz#353c69a0b9e75250971a64ac203b0ebfddd75482" + integrity sha512-1A94B18jkJ3DYq284ohPxoXbfTA5HsQ7/Mf4DEhcyLx3Bz27Rh59iScbB6EPiP+B+joue6YCxcMXSbFC1tZKwA== + dependencies: + tslib "^2.4.0" + async-retry@^1.3.3: version "1.3.3" resolved "https://registry.npmmirror.com/async-retry/-/async-retry-1.3.3.tgz#0e7f36c04d8478e7a58bdbed80cedf977785f280" @@ -11704,12 +15052,10 @@ async@^3.2.3, async@^3.2.4: resolved "https://registry.npmmirror.com/async/-/async-3.2.5.tgz#ebd52a8fdaf7a2289a24df399f8d8485c8a46b66" integrity sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg== -asynciterator.prototype@^1.0.0: - version "1.0.0" - resolved "https://registry.npmmirror.com/asynciterator.prototype/-/asynciterator.prototype-1.0.0.tgz#8c5df0514936cdd133604dfcc9d3fb93f09b2b62" - integrity sha512-wwHYEIS0Q80f5mosx3L/dfG5t5rjEa9Ft51GTaNt862EnpyGHpgz2RkZvLPp1oF5TnAiTohkEKVEu8pQPJI7Vg== - dependencies: - has-symbols "^1.0.3" +async@^3.2.6: + version "3.2.6" + resolved "https://registry.yarnpkg.com/async/-/async-3.2.6.tgz#1b0728e14929d51b85b449b7f06e27c1145e38ce" + integrity sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA== asynckit@^0.4.0: version "0.4.0" @@ -11746,6 +15092,13 @@ available-typed-arrays@^1.0.5: resolved "https://registry.npmmirror.com/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz#92f95616501069d07d10edb2fc37d3e1c65123b7" integrity sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw== +available-typed-arrays@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz#a5cc375d6a03c2efc87a553f3e0b1522def14846" + integrity sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ== + dependencies: + possible-typed-array-names "^1.0.0" + avsc@^5.7.5, avsc@^5.7.6: version "5.7.7" resolved "https://registry.npmmirror.com/avsc/-/avsc-5.7.7.tgz#8d1b5fd85904cc96a1e439450633ff33f4aff57b" @@ -11761,10 +15114,10 @@ aws4@^1.8.0: resolved "https://registry.npmmirror.com/aws4/-/aws4-1.12.0.tgz#ce1c9d143389679e253b314241ea9aa5cec980d3" integrity sha512-NmWvPnx0F1SfrQbYwOi7OeaNGokp9XhzNioJ/CSBs8Qa4vxug81mhJEAVZwxXuBmYB5KDRfMq/F3RR0BIU7sWg== -axe-core@=4.7.0: - version "4.7.0" - resolved "https://registry.npmmirror.com/axe-core/-/axe-core-4.7.0.tgz#34ba5a48a8b564f67e103f0aa5768d76e15bbbbf" - integrity sha512-M0JtH+hlOL5pLQwHOLNYZaXuhqmvS8oExsqB1SBYgA4Dk7u/xx+YdGHXaK5pyUfed5mYXdlYiphWq3G8cRi5JQ== +axe-core@^4.10.0: + version "4.11.3" + resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-4.11.3.tgz#d23cf404edaa5f97bdfd9afed6eea8405e5326e7" + integrity sha512-zBQouZixDTbo3jMGqHKyePxYxr1e5W8UdTmBQ7sNtaA9M2bE32daxxPLS/jojhKOHxQ7LWwPjfiwf/fhaJWzlg== axios-cached-dns-resolve@0.5.2: version "0.5.2" @@ -11778,7 +15131,7 @@ axios-cached-dns-resolve@0.5.2: pino "^5.12.2" pino-pretty "^2.6.0" -axios@^1.0.0, axios@^1.4.0, axios@^1.6.0: +axios@^1.0.0: version "1.6.7" resolved "https://registry.npmmirror.com/axios/-/axios-1.6.7.tgz#7b48c2e27c96f9c68a2f8f31e2ab19f59b06b0a7" integrity sha512-/hDJGff6/c7u0hDkvkGxR/oy6CbCs8ziCsC7SqmhjfozqiJGc8Z11wrv9z9lYfY4K8l+H9TpjcMDX0xOZmx+RA== @@ -11787,29 +15140,19 @@ axios@^1.0.0, axios@^1.4.0, axios@^1.6.0: form-data "^4.0.0" proxy-from-env "^1.1.0" -axios@^1.6.7: - version "1.7.2" - resolved "https://registry.yarnpkg.com/axios/-/axios-1.7.2.tgz#b625db8a7051fbea61c35a3cbb3a1daa7b9c7621" - integrity sha512-2A8QhOMrbomlDuiLeK9XibIBzuHeRcqqNOHp0Cyp5EoJ1IFDh+XZH3A6BkXtv0K4gFGCI0Y4BM7B1wOEi0Rmgw== - dependencies: - follow-redirects "^1.15.6" - form-data "^4.0.0" - proxy-from-env "^1.1.0" - -axobject-query@^3.2.1: - version "3.2.1" - resolved "https://registry.npmmirror.com/axobject-query/-/axobject-query-3.2.1.tgz#39c378a6e3b06ca679f29138151e45b2b32da62a" - integrity sha512-jsyHu61e6N4Vbz/v18DHwWYKK0bSWLqn47eeDSKPB7m8tqMHF9YJ+mhIk2lVteyZrY8tnSj/jHOv4YiTCuCJgg== +axios@^1.12.0, axios@^1.15.0, axios@^1.7.4: + version "1.15.2" + resolved "https://registry.yarnpkg.com/axios/-/axios-1.15.2.tgz#eb8fb6d30349abace6ade5b4cb4d9e8a0dc23e5b" + integrity sha512-wLrXxPtcrPTsNlJmKjkPnNPK2Ihe0hn0wGSaTEiHRPxwjvJwT3hKmXF4dpqxmPO9SoNb2FsYXj/xEo0gHN+D5A== dependencies: - dequal "^2.0.3" + follow-redirects "^1.15.11" + form-data "^4.0.5" + proxy-from-env "^2.1.0" -azure-devops-node-api@^12.0.0: - version "12.3.0" - resolved "https://registry.npmmirror.com/azure-devops-node-api/-/azure-devops-node-api-12.3.0.tgz#bb2b31f8d4994a166dbd2bd38f9ddbf34c46bf4a" - integrity sha512-5HDhBFIXJxiFhcJ+A3hN87gwo92PrDNLJvcvRHjr+p7AsuUSF64yQU+M6wcBDczkIDVV7m+MrraKQ2tqUxSbCA== - dependencies: - tunnel "0.0.6" - typed-rest-client "^1.8.4" +axobject-query@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/axobject-query/-/axobject-query-4.1.0.tgz#28768c76d0e3cff21bc62a9e2d0b6ac30042a1ee" + integrity sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ== b4a@^1.6.4: version "1.6.4" @@ -11818,7 +15161,7 @@ b4a@^1.6.4: babel-jest@^29.7.0: version "29.7.0" - resolved "https://registry.npmmirror.com/babel-jest/-/babel-jest-29.7.0.tgz#f4369919225b684c56085998ac63dbd05be020d5" + resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-29.7.0.tgz#f4369919225b684c56085998ac63dbd05be020d5" integrity sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg== dependencies: "@jest/transform" "^29.7.0" @@ -11831,7 +15174,7 @@ babel-jest@^29.7.0: babel-plugin-istanbul@^6.1.1: version "6.1.1" - resolved "https://registry.npmmirror.com/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz#fa88ec59232fd9b4e36dbbc540a8ec9a9b47da73" + resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz#fa88ec59232fd9b4e36dbbc540a8ec9a9b47da73" integrity sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA== dependencies: "@babel/helper-plugin-utils" "^7.0.0" @@ -11842,7 +15185,7 @@ babel-plugin-istanbul@^6.1.1: babel-plugin-jest-hoist@^29.6.3: version "29.6.3" - resolved "https://registry.npmmirror.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.6.3.tgz#aadbe943464182a8922c3c927c3067ff40d24626" + resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.6.3.tgz#aadbe943464182a8922c3c927c3067ff40d24626" integrity sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg== dependencies: "@babel/template" "^7.3.3" @@ -11859,30 +15202,6 @@ babel-plugin-macros@^3.1.0: cosmiconfig "^7.0.0" resolve "^1.19.0" -babel-plugin-polyfill-corejs2@^0.4.8: - version "0.4.8" - resolved "https://registry.npmmirror.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.8.tgz#dbcc3c8ca758a290d47c3c6a490d59429b0d2269" - integrity sha512-OtIuQfafSzpo/LhnJaykc0R/MMnuLSSVjVYy9mHArIZ9qTCSZ6TpWCuEKZYVoN//t8HqBNScHrOtCrIK5IaGLg== - dependencies: - "@babel/compat-data" "^7.22.6" - "@babel/helper-define-polyfill-provider" "^0.5.0" - semver "^6.3.1" - -babel-plugin-polyfill-corejs3@^0.9.0: - version "0.9.0" - resolved "https://registry.npmmirror.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.9.0.tgz#9eea32349d94556c2ad3ab9b82ebb27d4bf04a81" - integrity sha512-7nZPG1uzK2Ymhy/NbaOWTg3uibM2BmGASS4vHS4szRZAIR8R6GwA/xAujpdrXU5iyklrimWnLWU+BLF9suPTqg== - dependencies: - "@babel/helper-define-polyfill-provider" "^0.5.0" - core-js-compat "^3.34.0" - -babel-plugin-polyfill-regenerator@^0.5.5: - version "0.5.5" - resolved "https://registry.npmmirror.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.5.tgz#8b0c8fc6434239e5d7b8a9d1f832bb2b0310f06a" - integrity sha512-OJGYZlhLqBh2DDHeqAxWB1XIvr49CxiJ2gIt61/PU55CQK4Z58OzMqjDe1zwQdQk+rBYsRc+1rJmdajM3gimHg== - dependencies: - "@babel/helper-define-polyfill-provider" "^0.5.0" - babel-polyfill@^6.26.0: version "6.26.0" resolved "https://registry.npmmirror.com/babel-polyfill/-/babel-polyfill-6.26.0.tgz#379937abc67d7895970adc621f284cd966cf2153" @@ -11893,26 +15212,29 @@ babel-polyfill@^6.26.0: regenerator-runtime "^0.10.5" babel-preset-current-node-syntax@^1.0.0: - version "1.0.1" - resolved "https://registry.npmmirror.com/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz#b4399239b89b2a011f9ddbe3e4f401fc40cff73b" - integrity sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ== + version "1.2.0" + resolved "https://registry.yarnpkg.com/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.2.0.tgz#20730d6cdc7dda5d89401cab10ac6a32067acde6" + integrity sha512-E/VlAEzRrsLEb2+dv8yp3bo4scof3l9nR4lrld+Iy5NyVqgVYUJnDAmunkhPMisRI32Qc4iRiz425d8vM++2fg== dependencies: "@babel/plugin-syntax-async-generators" "^7.8.4" "@babel/plugin-syntax-bigint" "^7.8.3" - "@babel/plugin-syntax-class-properties" "^7.8.3" - "@babel/plugin-syntax-import-meta" "^7.8.3" + "@babel/plugin-syntax-class-properties" "^7.12.13" + "@babel/plugin-syntax-class-static-block" "^7.14.5" + "@babel/plugin-syntax-import-attributes" "^7.24.7" + "@babel/plugin-syntax-import-meta" "^7.10.4" "@babel/plugin-syntax-json-strings" "^7.8.3" - "@babel/plugin-syntax-logical-assignment-operators" "^7.8.3" + "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" - "@babel/plugin-syntax-numeric-separator" "^7.8.3" + "@babel/plugin-syntax-numeric-separator" "^7.10.4" "@babel/plugin-syntax-object-rest-spread" "^7.8.3" "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" "@babel/plugin-syntax-optional-chaining" "^7.8.3" - "@babel/plugin-syntax-top-level-await" "^7.8.3" + "@babel/plugin-syntax-private-property-in-object" "^7.14.5" + "@babel/plugin-syntax-top-level-await" "^7.14.5" babel-preset-jest@^29.6.3: version "29.6.3" - resolved "https://registry.npmmirror.com/babel-preset-jest/-/babel-preset-jest-29.6.3.tgz#fa05fa510e7d493896d7b0dd2033601c840f171c" + resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-29.6.3.tgz#fa05fa510e7d493896d7b0dd2033601c840f171c" integrity sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA== dependencies: babel-plugin-jest-hoist "^29.6.3" @@ -11926,6 +15248,11 @@ babel-runtime@^6.26.0: core-js "^2.4.0" regenerator-runtime "^0.11.0" +backo2@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/backo2/-/backo2-1.0.2.tgz#31ab1ac8b129363463e35b3ebb69f4dfcfba7947" + integrity sha512-zj6Z6M7Eq+PBZ7PQxl5NT665MvJdAkzp0f60nAJ+sLaSCBPMwVak5ZegFbgVCzFcCJTKFoMizvM5Ld7+JrRJHA== + bail@^2.0.0: version "2.0.2" resolved "https://registry.npmmirror.com/bail/-/bail-2.0.2.tgz#d26f5cd8fe5d6f832a31517b9f7c356040ba6d5d" @@ -11936,6 +15263,64 @@ balanced-match@^1.0.0: resolved "https://registry.npmmirror.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== +balanced-match@^4.0.2: + version "4.0.4" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-4.0.4.tgz#bfb10662feed8196a2c62e7c68e17720c274179a" + integrity sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA== + +bare-events@^2.5.4, bare-events@^2.7.0: + version "2.8.2" + resolved "https://registry.yarnpkg.com/bare-events/-/bare-events-2.8.2.tgz#7b3e10bd8e1fc80daf38bb516921678f566ab89f" + integrity sha512-riJjyv1/mHLIPX4RwiK+oW9/4c3TEUeORHKefKAKnZ5kyslbN+HXowtbaVEqt4IMUB7OXlfixcs6gsFeo/jhiQ== + +bare-fs@^4.0.1, bare-fs@^4.5.5: + version "4.7.1" + resolved "https://registry.yarnpkg.com/bare-fs/-/bare-fs-4.7.1.tgz#6e81f784761102867c13f0823aa48c942d160f00" + integrity sha512-WDRsyVN52eAx/lBamKD6uyw8H4228h/x0sGGGegOamM2cd7Pag88GfMQalobXI+HaEUxpCkbKQUDOQqt9wawRw== + dependencies: + bare-events "^2.5.4" + bare-path "^3.0.0" + bare-stream "^2.6.4" + bare-url "^2.2.2" + fast-fifo "^1.3.2" + +bare-os@^3.0.1: + version "3.9.0" + resolved "https://registry.yarnpkg.com/bare-os/-/bare-os-3.9.0.tgz#59b1dd75c231067526f811c0e3d985257bd35747" + integrity sha512-JTjuZyNIDpw+GytMO4a6TK1VXdVKKJr6DRxEHasyuYyShV2deuiHJK/ahGZlebc+SG0/wJCB9XK8gprBGDFi/Q== + +bare-path@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/bare-path/-/bare-path-3.0.0.tgz#b59d18130ba52a6af9276db3e96a2e3d3ea52178" + integrity sha512-tyfW2cQcB5NN8Saijrhqn0Zh7AnFNsnczRcuWODH0eYAXBsJ5gVxAUuNr7tsHSC6IZ77cA0SitzT+s47kot8Mw== + dependencies: + bare-os "^3.0.1" + +bare-stream@^2.6.4: + version "2.13.0" + resolved "https://registry.yarnpkg.com/bare-stream/-/bare-stream-2.13.0.tgz#dea59458dcf2689e9387134efccec015dfdbe3cf" + integrity sha512-3zAJRZMDFGjdn+RVnNpF9kuELw+0Fl3lpndM4NcEOhb9zwtSo/deETfuIwMSE5BXanA0FrN1qVjffGwAg2Y7EA== + dependencies: + streamx "^2.25.0" + teex "^1.0.1" + +bare-url@^2.2.2: + version "2.4.2" + resolved "https://registry.yarnpkg.com/bare-url/-/bare-url-2.4.2.tgz#1faab7d8f1780f6e51d5db03711dc390460874c0" + integrity sha512-/9a2j4ac6ckpmAHvod/ob7x439OAHst/drc2Clnq+reRYd/ovddwcF4LfoxHyNk5AuGBnPg+HqFjmE/Zpq6v0A== + dependencies: + bare-path "^3.0.0" + +base16@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/base16/-/base16-1.0.0.tgz#e297f60d7ec1014a7a971a39ebc8a98c0b681e70" + integrity sha512-pNdYkNPiJUnEhnfXV56+sQy8+AaPcG3POZAUnwr4EeqCUZFz4u2PePbo3e5Gj4ziYPCWGUZT9RHisvJKnwFuBQ== + +base64-arraybuffer@^0.1.5: + version "0.1.5" + resolved "https://registry.yarnpkg.com/base64-arraybuffer/-/base64-arraybuffer-0.1.5.tgz#73926771923b5a19747ad666aa5cd4bf9c6e9ce8" + integrity sha512-437oANT9tP582zZMwSvZGy2nmSeAb8DW2me3y+Uv1Wp2Rulr8Mqlyrv3E7MLxmsiaPSMMDmiDVzgE+e8zlMx9g== + base64-js@^1.0.2, base64-js@^1.3.0, base64-js@^1.3.1, base64-js@^1.5.1: version "1.5.1" resolved "https://registry.npmmirror.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" @@ -11951,6 +15336,11 @@ base64url@3.x.x: resolved "https://registry.npmmirror.com/base64url/-/base64url-3.0.1.tgz#6399d572e2bc3f90a9a8b22d5dbb0a32d33f788d" integrity sha512-ir1UPr3dkwexU7FdV8qBBbNDRUhMmIekYMFZfi+C/sLNnRESKPl23nB9b2pltqfOQNnGzsDdId90AEtG5tCx4A== +baseline-browser-mapping@^2.10.12: + version "2.10.21" + resolved "https://registry.yarnpkg.com/baseline-browser-mapping/-/baseline-browser-mapping-2.10.21.tgz#136f9f181ee0d7ca6e3edbf42d9559763d2c1141" + integrity sha512-Q+rUQ7Uz8AHM7DEaNdwvfFCTq7a43lNTzuS94eiWqwyxfV/wJv+oUivef51T91mmRY4d4A1u9rcSvkeufCVXlA== + basic-auth@~2.0.1: version "2.0.1" resolved "https://registry.npmmirror.com/basic-auth/-/basic-auth-2.0.1.tgz#b998279bf47ce38344b4f3cf916d4679bbf51e3a" @@ -11958,6 +15348,11 @@ basic-auth@~2.0.1: dependencies: safe-buffer "5.1.2" +basic-ftp@^5.0.2: + version "5.3.0" + resolved "https://registry.yarnpkg.com/basic-ftp/-/basic-ftp-5.3.0.tgz#88f057d1ba8442643c505c4c83bbaa4442b15cfd" + integrity sha512-5K9eNNn7ywHPsYnFwjKgYH8Hf8B5emh7JKcPaVjjrMJFQQwGpwowEnZNEtHs7DfR7hCZsmaK3VA4HUK0YarT+w== + batch@0.6.1: version "0.6.1" resolved "https://registry.npmmirror.com/batch/-/batch-0.6.1.tgz#dc34314f4e679318093fc760272525f94bf25c16" @@ -11983,10 +15378,10 @@ better-sqlite3@^11.0.0: bindings "^1.5.0" prebuild-install "^7.1.1" -better-sqlite3@^9.0.0: - version "9.3.0" - resolved "https://registry.npmmirror.com/better-sqlite3/-/better-sqlite3-9.3.0.tgz#2a8aaad65fa0210a4df5e8a0bcbc9156f6138d56" - integrity sha512-ww73jVpQhRRdS9uMr761ixlkl4bWoXi8hMQlBGhoN6vPNlUHpIsNmw4pKN6kjknlt/wopdvXHvLk1W75BI+n0Q== +better-sqlite3@^12.0.0: + version "12.9.0" + resolved "https://registry.yarnpkg.com/better-sqlite3/-/better-sqlite3-12.9.0.tgz#32498c99ba3fb36f604fbb5c70667c5f68c00414" + integrity sha512-wqUv4Gm3toFpHDQmaKD4QhZm3g1DjUBI0yzS4UBl6lElUmXFYdTQmmEDpAFa5o8FiFiymURypEnfVHzILKaxqQ== dependencies: bindings "^1.5.0" prebuild-install "^7.1.1" @@ -12002,6 +15397,22 @@ bfj@^8.0.0: jsonpath "^1.1.1" tryer "^1.0.1" +bfj@^9.0.2: + version "9.1.3" + resolved "https://registry.yarnpkg.com/bfj/-/bfj-9.1.3.tgz#d7731e44b461ae919e4cebdebb6ddc08f7feb392" + integrity sha512-1ythbcNNAd2UjTYW6M+MAHd9KM/m3g4mQ+3a4Vom16WgmUa4GsisdmXAYfpAjkObY5zdpgzaBh1ctZOEcJipuQ== + dependencies: + check-types "^11.2.3" + hoopy "^0.1.4" + tryer "^1.0.1" + +bidi-js@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/bidi-js/-/bidi-js-1.0.3.tgz#6f8bcf3c877c4d9220ddf49b9bb6930c88f877d2" + integrity sha512-RKshQI1R3YQ+n9YJz2QQ147P66ELpa1FQEg20Dk8oW9t2KgLbpDLLp9aGZ7y8WHSshDknG0bknqGw5/tyCs5tw== + dependencies: + require-from-string "^2.0.2" + big.js@^5.2.2: version "5.2.2" resolved "https://registry.npmmirror.com/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328" @@ -12048,11 +15459,21 @@ bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.11.9: resolved "https://registry.npmmirror.com/bn.js/-/bn.js-4.12.0.tgz#775b3f278efbb9718eec7361f483fb36fbbfea88" integrity sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA== +bn.js@^4.11.8: + version "4.12.3" + resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.12.3.tgz#2cc2c679188eb35b006f2d0d4710bed8437a769e" + integrity sha512-fGTi3gxV/23FTYdAoUtLYp6qySe2KE3teyZitipKNRuVYcBkoP/bB3guXN/XVKUe9mxCHXnc9C4ocyz8OmgN0g== + bn.js@^5.0.0, bn.js@^5.2.1: version "5.2.1" resolved "https://registry.npmmirror.com/bn.js/-/bn.js-5.2.1.tgz#0bc527a6a0d18d0aa8d5b0538ce4a77dccfa7b70" integrity sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ== +bn.js@^5.2.2: + version "5.2.3" + resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.2.3.tgz#16a9e409616b23fef3ccbedb8d42f13bff80295e" + integrity sha512-EAcmnPkxpntVL+DS7bO1zhcZNvCkxqtkd0ZY53h06GNQ3DEkkGZ/gKgmDv6DdZQGj9BgfSPKtJJ7Dp1GPP8f7w== + body-parser@1.20.1: version "1.20.1" resolved "https://registry.npmmirror.com/body-parser/-/body-parser-1.20.1.tgz#b1812a8912c195cd371a3ee5e66faa2338a5c668" @@ -12071,23 +15492,23 @@ body-parser@1.20.1: type-is "~1.6.18" unpipe "1.0.0" -body-parser@1.20.2: - version "1.20.2" - resolved "https://registry.npmmirror.com/body-parser/-/body-parser-1.20.2.tgz#6feb0e21c4724d06de7ff38da36dad4f57a747fd" - integrity sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA== +body-parser@^1.15.2, body-parser@~1.20.3: + version "1.20.4" + resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.4.tgz#f8e20f4d06ca8a50a71ed329c15dccad1cdc547f" + integrity sha512-ZTgYYLMOXY9qKU/57FAo8F+HA2dGX7bqGc71txDRC1rS4frdFI5R7NhluHxH6M0YItAP0sHB4uqAOcYKxO6uGA== dependencies: - bytes "3.1.2" + bytes "~3.1.2" content-type "~1.0.5" debug "2.6.9" depd "2.0.0" - destroy "1.2.0" - http-errors "2.0.0" - iconv-lite "0.4.24" - on-finished "2.4.1" - qs "6.11.0" - raw-body "2.5.2" + destroy "~1.2.0" + http-errors "~2.0.1" + iconv-lite "~0.4.24" + on-finished "~2.4.1" + qs "~6.14.0" + raw-body "~2.5.3" type-is "~1.6.18" - unpipe "1.0.0" + unpipe "~1.0.0" bonjour-service@^1.2.1: version "1.2.1" @@ -12132,6 +15553,13 @@ brace-expansion@^2.0.1: dependencies: balanced-match "^1.0.0" +brace-expansion@^5.0.5: + version "5.0.5" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-5.0.5.tgz#dcc3a37116b79f3e1b46db994ced5d570e930fdb" + integrity sha512-VZznLgtwhn+Mact9tfiwx64fA9erHH/MCXEUfB/0bX/6Fz6ny5EGTXYltMocqg4xFAQZtnO3DHWWXi8RiuN7cQ== + dependencies: + balanced-match "^4.0.2" + braces@^3.0.2, braces@~3.0.2: version "3.0.2" resolved "https://registry.npmmirror.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" @@ -12139,17 +15567,31 @@ braces@^3.0.2, braces@~3.0.2: dependencies: fill-range "^7.0.1" +braces@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.3.tgz#490332f40919452272d55a8480adc0c441358789" + integrity sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA== + dependencies: + fill-range "^7.1.1" + brorand@^1.0.1, brorand@^1.1.0: version "1.1.0" resolved "https://registry.npmmirror.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" integrity sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w== -browser-process-hrtime@^1.0.0: - version "1.0.0" - resolved "https://registry.npmmirror.com/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz#3c9b4b7d782c8121e56f10106d84c0d0ffc94626" - integrity sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow== +brotli-wasm@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/brotli-wasm/-/brotli-wasm-3.0.1.tgz#eefe20f7368fef20d53314cffeaa44733dc2b259" + integrity sha512-U3K72/JAi3jITpdhZBqzSUq+DUY697tLxOuFXB+FpAE/Ug+5C3VZrv4uA674EUZHxNAuQ9wETXNqQkxZD6oL4A== + +browser-resolve@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/browser-resolve/-/browser-resolve-2.0.0.tgz#99b7304cb392f8d73dba741bb2d7da28c6d7842b" + integrity sha512-7sWsQlYL2rGLy2IWm8WL8DCTJvYLc/qlOnsakDac87SOoCd16WLsaAMdCiAqsTNHIe+SXfaqyxyo6THoWqs8WQ== + dependencies: + resolve "^1.17.0" -browserify-aes@^1.0.0, browserify-aes@^1.0.4: +browserify-aes@^1.0.0, browserify-aes@^1.0.4, browserify-aes@^1.2.0: version "1.2.0" resolved "https://registry.npmmirror.com/browserify-aes/-/browserify-aes-1.2.0.tgz#326734642f403dabc3003209853bb70ad428ef48" integrity sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA== @@ -12161,9 +15603,9 @@ browserify-aes@^1.0.0, browserify-aes@^1.0.4: inherits "^2.0.1" safe-buffer "^5.0.1" -browserify-cipher@^1.0.0: +browserify-cipher@^1.0.1: version "1.0.1" - resolved "https://registry.npmmirror.com/browserify-cipher/-/browserify-cipher-1.0.1.tgz#8d6474c1b870bfdabcd3bcfcc1934a10e94f15f0" + resolved "https://registry.yarnpkg.com/browserify-cipher/-/browserify-cipher-1.0.1.tgz#8d6474c1b870bfdabcd3bcfcc1934a10e94f15f0" integrity sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w== dependencies: browserify-aes "^1.0.4" @@ -12180,7 +15622,7 @@ browserify-des@^1.0.0: inherits "^2.0.1" safe-buffer "^5.1.2" -browserify-rsa@^4.0.0, browserify-rsa@^4.1.0: +browserify-rsa@^4.0.0: version "4.1.0" resolved "https://registry.npmmirror.com/browserify-rsa/-/browserify-rsa-4.1.0.tgz#b2fd06b5b75ae297f7ce2dc651f918f5be158c8d" integrity sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog== @@ -12188,19 +15630,28 @@ browserify-rsa@^4.0.0, browserify-rsa@^4.1.0: bn.js "^5.0.0" randombytes "^2.0.1" -browserify-sign@^4.0.0: - version "4.2.2" - resolved "https://registry.npmmirror.com/browserify-sign/-/browserify-sign-4.2.2.tgz#e78d4b69816d6e3dd1c747e64e9947f9ad79bc7e" - integrity sha512-1rudGyeYY42Dk6texmv7c4VcQ0EsvVbLwZkA+AQB7SxvXxmcD93jcHie8bzecJ+ChDlmAm2Qyu0+Ccg5uhZXCg== +browserify-rsa@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/browserify-rsa/-/browserify-rsa-4.1.1.tgz#06e530907fe2949dc21fc3c2e2302e10b1437238" + integrity sha512-YBjSAiTqM04ZVei6sXighu679a3SqWORA3qZTEqZImnlkDIFtKc6pNutpjyZ8RJTjQtuYfeetkxM11GwoYXMIQ== dependencies: bn.js "^5.2.1" - browserify-rsa "^4.1.0" + randombytes "^2.1.0" + safe-buffer "^5.2.1" + +browserify-sign@^4.2.3: + version "4.2.5" + resolved "https://registry.yarnpkg.com/browserify-sign/-/browserify-sign-4.2.5.tgz#3979269fa8af55ba18aac35deef11b45515cd27d" + integrity sha512-C2AUdAJg6rlM2W5QMp2Q4KGQMVBwR1lIimTsUnutJ8bMpW5B52pGpR2gEnNBNwijumDo5FojQ0L9JrXA8m4YEw== + dependencies: + bn.js "^5.2.2" + browserify-rsa "^4.1.1" create-hash "^1.2.0" create-hmac "^1.1.7" - elliptic "^6.5.4" + elliptic "^6.6.1" inherits "^2.0.4" - parse-asn1 "^5.1.6" - readable-stream "^3.6.2" + parse-asn1 "^5.1.9" + readable-stream "^2.3.8" safe-buffer "^5.2.1" browserify-zlib@^0.2.0: @@ -12210,7 +15661,7 @@ browserify-zlib@^0.2.0: dependencies: pako "~1.0.5" -browserslist@^4.0.0, browserslist@^4.18.1, browserslist@^4.21.10, browserslist@^4.21.4, browserslist@^4.22.2: +browserslist@^4.0.0, browserslist@^4.18.1, browserslist@^4.21.4: version "4.22.3" resolved "https://registry.npmmirror.com/browserslist/-/browserslist-4.22.3.tgz#299d11b7e947a6b843981392721169e27d60c5a6" integrity sha512-UAp55yfwNv0klWNapjs/ktHoguxuQNGnOzxYmfnXIS+8AsRDZkSDxg7R1AX3GKzn078SBI5dzwzj/Yx0Or0e3A== @@ -12220,9 +15671,20 @@ browserslist@^4.0.0, browserslist@^4.18.1, browserslist@^4.21.10, browserslist@^ node-releases "^2.0.14" update-browserslist-db "^1.0.13" +browserslist@^4.24.0, browserslist@^4.28.1: + version "4.28.2" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.28.2.tgz#f50b65362ef48974ca9f50b3680566d786b811d2" + integrity sha512-48xSriZYYg+8qXna9kwqjIVzuQxi+KYWp2+5nCYnYKPTr0LvD89Jqk2Or5ogxz0NUMfIjhh2lIUX/LyX9B4oIg== + dependencies: + baseline-browser-mapping "^2.10.12" + caniuse-lite "^1.0.30001782" + electron-to-chromium "^1.5.328" + node-releases "^2.0.36" + update-browserslist-db "^1.2.3" + bser@2.1.1: version "2.1.1" - resolved "https://registry.npmmirror.com/bser/-/bser-2.1.1.tgz#e6787da20ece9d07998533cfd9de6f5c38f4bc05" + resolved "https://registry.yarnpkg.com/bser/-/bser-2.1.1.tgz#e6787da20ece9d07998533cfd9de6f5c38f4bc05" integrity sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ== dependencies: node-int64 "^0.4.0" @@ -12232,7 +15694,17 @@ btoa-lite@^1.0.0: resolved "https://registry.npmmirror.com/btoa-lite/-/btoa-lite-1.0.0.tgz#337766da15801210fdd956c22e9c6891ab9d0337" integrity sha512-gvW7InbIyF8AicrqWoptdW08pUxuhq8BEgowNajy9RhiE86fmGAGl+bLKo6oB8QP0CkqHLowfN0oJdKC/J6LbA== -buffer-crc32@^0.2.1, buffer-crc32@~0.2.3: +btoa@1.2.1, btoa@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/btoa/-/btoa-1.2.1.tgz#01a9909f8b2c93f6bf680ba26131eb30f7fa3d73" + integrity sha512-SB4/MIGlsiVkMcHmT+pSmIPoNDoHg+7cMzmt3Uxt628MTz2487DKSqK/fuhFBrkuqrYv5UCEnACpF4dTFNKc/g== + +buffer-crc32@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-1.0.0.tgz#a10993b9055081d55304bd9feb4a072de179f405" + integrity sha512-Db1SbgBS/fg/392AblrMJk97KggmvYhr4pB5ZIMTWtaivCPMWLkmb7m21cJvpvgK+J3nsU2CmmixNBZx4vFj/w== + +buffer-crc32@~0.2.3: version "0.2.13" resolved "https://registry.npmmirror.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242" integrity sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ== @@ -12257,6 +15729,13 @@ buffer-xor@^1.0.3: resolved "https://registry.npmmirror.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9" integrity sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ== +buffer-xor@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-2.0.2.tgz#34f7c64f04c777a1f8aac5e661273bb9dd320289" + integrity sha512-eHslX0bin3GB+Lx2p7lEYRShRewuNZL3fUl4qlVJGGiwoPGftmt8JQgk2Y9Ji5/01TnVDo33E5b5O3vUB1HdqQ== + dependencies: + safe-buffer "^5.1.1" + buffer@5.6.0: version "5.6.0" resolved "https://registry.npmmirror.com/buffer/-/buffer-5.6.0.tgz#a31749dc7d81d84db08abf937b6b8c4033f62786" @@ -12265,16 +15744,7 @@ buffer@5.6.0: base64-js "^1.0.2" ieee754 "^1.1.4" -buffer@^4.3.0: - version "4.9.2" - resolved "https://registry.npmmirror.com/buffer/-/buffer-4.9.2.tgz#230ead344002988644841ab0244af8c44bbe3ef8" - integrity sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg== - dependencies: - base64-js "^1.0.2" - ieee754 "^1.1.4" - isarray "^1.0.0" - -buffer@^5.5.0: +buffer@^5.1.0, buffer@^5.5.0, buffer@^5.7.1: version "5.7.1" resolved "https://registry.npmmirror.com/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0" integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ== @@ -12305,18 +15775,6 @@ builtin-status-codes@^3.0.0: resolved "https://registry.npmmirror.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8" integrity sha512-HpGFw18DgFWlncDfjTa2rcQ4W88O1mC8e8yZ2AvQY5KDaktSTwo+KRf6nHK6FRI5FyRyb/5T6+TSxfP7QyGsmQ== -builtins@^1.0.3: - version "1.0.3" - resolved "https://registry.npmmirror.com/builtins/-/builtins-1.0.3.tgz#cb94faeb61c8696451db36534e1422f94f0aee88" - integrity sha512-uYBjakWipfaO/bXI7E8rq6kpwHRZK5cNYrUv2OzZSI/FvmdMyXJ2tG9dKcjEC5YHmHpUAwsargWIZNWdxb/bnQ== - -builtins@^5.0.0: - version "5.0.1" - resolved "https://registry.npmmirror.com/builtins/-/builtins-5.0.1.tgz#87f6db9ab0458be728564fa81d876d8d74552fa9" - integrity sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ== - dependencies: - semver "^7.0.0" - bundle-name@^4.1.0: version "4.1.0" resolved "https://registry.npmmirror.com/bundle-name/-/bundle-name-4.1.0.tgz#f3b96b34160d6431a19d7688135af7cfb8797889" @@ -12324,7 +15782,7 @@ bundle-name@^4.1.0: dependencies: run-applescript "^7.0.0" -busboy@^1.0.0, busboy@^1.6.0: +busboy@^1.6.0: version "1.6.0" resolved "https://registry.npmmirror.com/busboy/-/busboy-1.6.0.tgz#966ea36a9502e43cdb9146962523b92f531f6893" integrity sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA== @@ -12336,56 +15794,27 @@ byline@^5.0.0: resolved "https://registry.npmmirror.com/byline/-/byline-5.0.0.tgz#741c5216468eadc457b03410118ad77de8c1ddb1" integrity sha512-s6webAy+R4SR8XVuJWt2V2rGvhnrhxN+9S15GNuTK3wKPOXFF6RNc+8ug2XhH+2s4f+uudG4kUVYmYOQWL2g0Q== -byte-size@8.1.1: - version "8.1.1" - resolved "https://registry.npmmirror.com/byte-size/-/byte-size-8.1.1.tgz#3424608c62d59de5bfda05d31e0313c6174842ae" - integrity sha512-tUkzZWK0M/qdoLEqikxBWe4kumyuwjl3HO6zHTr4yEI23EojPtLYXdG1+AQY7MN0cGyNDvEaJ8wiYQm6P2bPxg== - bytes@3.0.0: version "3.0.0" resolved "https://registry.npmmirror.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048" integrity sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw== -bytes@3.1.2: +bytes@3.1.2, bytes@~3.1.2: version "3.1.2" resolved "https://registry.npmmirror.com/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5" integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg== -cacache@^16.1.0: - version "16.1.3" - resolved "https://registry.npmmirror.com/cacache/-/cacache-16.1.3.tgz#a02b9f34ecfaf9a78c9f4bc16fceb94d5d67a38e" - integrity sha512-/+Emcj9DAXxX4cwlLmRI9c166RuL3w30zp4R7Joiv2cQTtTtA+jeuCAjH3ZlGnYS3tKENSrKhAzVVP9GVyzeYQ== - dependencies: - "@npmcli/fs" "^2.1.0" - "@npmcli/move-file" "^2.0.0" - chownr "^2.0.0" - fs-minipass "^2.1.0" - glob "^8.0.1" - infer-owner "^1.0.4" - lru-cache "^7.7.1" - minipass "^3.1.6" - minipass-collect "^1.0.2" - minipass-flush "^1.0.5" - minipass-pipeline "^1.2.4" - mkdirp "^1.0.4" - p-map "^4.0.0" - promise-inflight "^1.0.1" - rimraf "^3.0.2" - ssri "^9.0.0" - tar "^6.1.11" - unique-filename "^2.0.0" - -cacache@^17.0.0: - version "17.1.4" - resolved "https://registry.npmmirror.com/cacache/-/cacache-17.1.4.tgz#b3ff381580b47e85c6e64f801101508e26604b35" - integrity sha512-/aJwG2l3ZMJ1xNAnqbMpA40of9dj/pIH3QfiuQSqjfPJF747VR0J/bHn+/KdNnHKc6XQcWt/AfRSBft82W1d2A== +cacache@^18.0.0: + version "18.0.4" + resolved "https://registry.yarnpkg.com/cacache/-/cacache-18.0.4.tgz#4601d7578dadb59c66044e157d02a3314682d6a5" + integrity sha512-B+L5iIa9mgcjLbliir2th36yEwPftrzteHYujzsx3dFP/31GCHcIeS8f5MGd80odLOjaOvSpU3EEAmRQptkxLQ== dependencies: "@npmcli/fs" "^3.1.0" fs-minipass "^3.0.0" glob "^10.2.2" - lru-cache "^7.7.1" + lru-cache "^10.0.1" minipass "^7.0.3" - minipass-collect "^1.0.2" + minipass-collect "^2.0.1" minipass-flush "^1.0.5" minipass-pipeline "^1.2.4" p-map "^4.0.0" @@ -12401,23 +15830,18 @@ cache-content-type@^1.0.0: mime-types "^2.1.18" ylru "^1.2.0" -cacheable-lookup@^5.0.3: - version "5.0.4" - resolved "https://registry.npmmirror.com/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz#5a6b865b2c44357be3d5ebc2a467b032719a7005" - integrity sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA== +cacheable-lookup@^6.0.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/cacheable-lookup/-/cacheable-lookup-6.1.0.tgz#0330a543471c61faa4e9035db583aad753b36385" + integrity sha512-KJ/Dmo1lDDhmW2XDPMo+9oiy/CeqosPguPCrgcVzKyZrL6pM1gU2GmPY/xo6OQPTUaA/c0kwHuywB4E6nmT9ww== -cacheable-request@^7.0.2: - version "7.0.4" - resolved "https://registry.npmmirror.com/cacheable-request/-/cacheable-request-7.0.4.tgz#7a33ebf08613178b403635be7b899d3e69bbe817" - integrity sha512-v+p6ongsrp0yTGbJXjgxPow2+DL93DASP4kXCDKb8/bwRtt9OEF3whggkkDkGNzgcWy2XaF4a8nZglC7uElscg== - dependencies: - clone-response "^1.0.2" - get-stream "^5.1.0" - http-cache-semantics "^4.0.0" - keyv "^4.0.0" - lowercase-keys "^2.0.0" - normalize-url "^6.0.1" - responselike "^2.0.0" +call-bind-apply-helpers@^1.0.1, call-bind-apply-helpers@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz#4b5428c222be985d79c3d82657479dbe0b59b2d6" + integrity sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ== + dependencies: + es-errors "^1.3.0" + function-bind "^1.1.2" call-bind@^1.0.0, call-bind@^1.0.2, call-bind@^1.0.4, call-bind@^1.0.5: version "1.0.5" @@ -12439,9 +15863,27 @@ call-bind@^1.0.7: get-intrinsic "^1.2.4" set-function-length "^1.2.1" -call-me-maybe@^1.0.1: +call-bind@^1.0.8, call-bind@^1.0.9: + version "1.0.9" + resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.9.tgz#39a644700c80bc7d0ca9102fc6d1d43b2fd7eee7" + integrity sha512-a/hy+pNsFUTR+Iz8TCJvXudKVLAnz/DyeSUo10I5yvFDQJBFU2s9uqQpoSrJlroHUKoKqzg+epxyP9lqFdzfBQ== + dependencies: + call-bind-apply-helpers "^1.0.2" + es-define-property "^1.0.1" + get-intrinsic "^1.3.0" + set-function-length "^1.2.2" + +call-bound@^1.0.2, call-bound@^1.0.3, call-bound@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/call-bound/-/call-bound-1.0.4.tgz#238de935d2a2a692928c538c7ccfa91067fd062a" + integrity sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg== + dependencies: + call-bind-apply-helpers "^1.0.2" + get-intrinsic "^1.3.0" + +call-me-maybe@^1.0.2: version "1.0.2" - resolved "https://registry.npmmirror.com/call-me-maybe/-/call-me-maybe-1.0.2.tgz#03f964f19522ba643b1b0693acb9152fe2074baa" + resolved "https://registry.yarnpkg.com/call-me-maybe/-/call-me-maybe-1.0.2.tgz#03f964f19522ba643b1b0693acb9152fe2074baa" integrity sha512-HpX65o1Hnr9HH25ojC1YGs7HCQLq0GCOibSaWER0eNpgJ/Z1MZv2mTc7+xh6WOPxbRVcmgbv4hGU+uSQ/2xFZQ== callsites@^3.0.0: @@ -12457,15 +15899,6 @@ camel-case@^4.1.2: pascal-case "^3.1.2" tslib "^2.0.3" -camelcase-keys@^6.2.2: - version "6.2.2" - resolved "https://registry.npmmirror.com/camelcase-keys/-/camelcase-keys-6.2.2.tgz#5e755d6ba51aa223ec7d3d52f25778210f9dc3c0" - integrity sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg== - dependencies: - camelcase "^5.3.1" - map-obj "^4.0.0" - quick-lru "^4.0.1" - camelcase@5.0.0: version "5.0.0" resolved "https://registry.npmmirror.com/camelcase/-/camelcase-5.0.0.tgz#03295527d58bd3cd4aa75363f35b2e8d97be2f42" @@ -12473,12 +15906,12 @@ camelcase@5.0.0: camelcase@^5.3.1: version "5.3.1" - resolved "https://registry.npmmirror.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== camelcase@^6.2.0: version "6.3.0" - resolved "https://registry.npmmirror.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== caniuse-api@^3.0.0: @@ -12496,6 +15929,11 @@ caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001580: resolved "https://registry.npmmirror.com/caniuse-lite/-/caniuse-lite-1.0.30001581.tgz#0dfd4db9e94edbdca67d57348ebc070dece279f4" integrity sha512-whlTkwhqV2tUmP3oYhtNfaWGYHDdS3JYFQBKXxcUR9qqPWsRhFHhoISO2Xnl/g0xyKzht9mI1LZpiNWfMzHixQ== +caniuse-lite@^1.0.30001782: + version "1.0.30001790" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001790.tgz#04660c7de15f445d86dd10ac88a8936ac0698e45" + integrity sha512-bOoxfJPyYo+ds6W0YfptaCWbFnJYjh2Y1Eow5lRv+vI2u8ganPZqNm1JwNh0t2ELQCqIWg4B3dWEusgAmsoyOw== + caseless@~0.12.0: version "0.12.0" resolved "https://registry.npmmirror.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" @@ -12523,15 +15961,7 @@ chalk@3.0.0, chalk@^3.0.0: ansi-styles "^4.1.0" supports-color "^7.1.0" -chalk@4.1.0: - version "4.1.0" - resolved "https://registry.npmmirror.com/chalk/-/chalk-4.1.0.tgz#4e14870a618d9e2edd97dd8345fd9d9dc315646a" - integrity sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A== - dependencies: - ansi-styles "^4.1.0" - supports-color "^7.1.0" - -chalk@^4.0.0, chalk@^4.0.2, chalk@^4.1.0, chalk@^4.1.1, chalk@^4.1.2: +chalk@^4.0.0, chalk@^4.1.0, chalk@^4.1.1, chalk@^4.1.2: version "4.1.2" resolved "https://registry.npmmirror.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== @@ -12539,6 +15969,11 @@ chalk@^4.0.0, chalk@^4.0.2, chalk@^4.1.0, chalk@^4.1.1, chalk@^4.1.2: ansi-styles "^4.1.0" supports-color "^7.1.0" +chalk@^5.4.1: + version "5.6.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-5.6.2.tgz#b1238b6e23ea337af71c7f8a295db5af0c158aea" + integrity sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA== + char-regex@^1.0.2: version "1.0.2" resolved "https://registry.npmmirror.com/char-regex/-/char-regex-1.0.2.tgz#d744358226217f981ed58f479b1d6bcc29545dcf" @@ -12549,6 +15984,11 @@ character-entities-legacy@^1.0.0: resolved "https://registry.npmmirror.com/character-entities-legacy/-/character-entities-legacy-1.1.4.tgz#94bc1845dce70a5bb9d2ecc748725661293d8fc1" integrity sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA== +character-entities-legacy@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/character-entities-legacy/-/character-entities-legacy-3.0.0.tgz#76bc83a90738901d7bc223a9e93759fdd560125b" + integrity sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ== + character-entities@^1.0.0: version "1.2.4" resolved "https://registry.npmmirror.com/character-entities/-/character-entities-1.2.4.tgz#e12c3939b7eaf4e5b15e7ad4c5e28e1d48c5b16b" @@ -12564,6 +16004,11 @@ character-reference-invalid@^1.0.0: resolved "https://registry.npmmirror.com/character-reference-invalid/-/character-reference-invalid-1.1.4.tgz#083329cda0eae272ab3dbbf37e9a382c13af1560" integrity sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg== +character-reference-invalid@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/character-reference-invalid/-/character-reference-invalid-2.0.1.tgz#85c66b041e43b47210faf401278abf808ac45cb9" + integrity sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw== + chardet@^0.7.0: version "0.7.0" resolved "https://registry.npmmirror.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" @@ -12614,16 +16059,28 @@ chownr@^2.0.0: resolved "https://registry.npmmirror.com/chownr/-/chownr-2.0.0.tgz#15bfbe53d2eab4cf70f18a8cd68ebe5b3cb1dece" integrity sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ== +chownr@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/chownr/-/chownr-3.0.0.tgz#9855e64ecd240a9cc4267ce8a4aa5d24a1da15e4" + integrity sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g== + chrome-trace-event@^1.0.2: version "1.0.3" resolved "https://registry.npmmirror.com/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz#1015eced4741e15d06664a957dbbf50d041e26ac" integrity sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg== -ci-info@^3.2.0, ci-info@^3.6.1, ci-info@^3.7.0: +ci-info@^3.2.0: version "3.9.0" resolved "https://registry.npmmirror.com/ci-info/-/ci-info-3.9.0.tgz#4279a62028a7b1f262f3473fc9605f5e218c59b4" integrity sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ== +cidr-regex@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/cidr-regex/-/cidr-regex-3.1.1.tgz#ba1972c57c66f61875f18fd7dd487469770b571d" + integrity sha512-RBqYd32aDwbCMFJRL6wHOlDNYJsPNTt8vC82ErHF5vKt8QQzxm1FrkW8s/R5pVrXMf17sba09Uoy91PKiddAsw== + dependencies: + ip-regex "^4.1.0" + cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: version "1.0.4" resolved "https://registry.npmmirror.com/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de" @@ -12633,9 +16090,14 @@ cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: safe-buffer "^5.0.1" cjs-module-lexer@^1.0.0: - version "1.2.3" - resolved "https://registry.npmmirror.com/cjs-module-lexer/-/cjs-module-lexer-1.2.3.tgz#6c370ab19f8a3394e318fe682686ec0ac684d107" - integrity sha512-0TNiGstbQmCFwt4akjjBg5pLRTSyj/PkWQ1ZoO2zntmg9yLqSRxwEa4iCfQLGjqhiqBfOJa7W/E8wfGrTDmlZQ== + version "1.4.3" + resolved "https://registry.yarnpkg.com/cjs-module-lexer/-/cjs-module-lexer-1.4.3.tgz#0f79731eb8cfe1ec72acd4066efac9d61991b00d" + integrity sha512-9z8TZaGM1pfswYeXrUpzPrkx8UnWYdhJclsiYMm6x/w5+nN+8Tf/LnAgfLGQCm59qAOxU8WwHEq2vNwF6i4j+Q== + +classcat@^5.0.3: + version "5.0.5" + resolved "https://registry.yarnpkg.com/classcat/-/classcat-5.0.5.tgz#8c209f359a93ac302404a10161b501eba9c09c77" + integrity sha512-JhZUT7JFcQy/EzW605k/ktHtncoo9vnyW/2GspNYwFlN1C/WmjuV/xtS04e9SOkL2sTdw0VAZ2UGCcQ9lR6p6w== classnames@^2.2.6, classnames@^2.3.1, classnames@^2.5.1: version "2.5.1" @@ -12659,23 +16121,47 @@ clean-stack@^2.0.0: resolved "https://registry.npmmirror.com/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b" integrity sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A== -cli-cursor@3.1.0, cli-cursor@^3.1.0: +cleye@^2.3.0: + version "2.6.0" + resolved "https://registry.yarnpkg.com/cleye/-/cleye-2.6.0.tgz#61af2d95d507925d25053f5f7a90b371b5f558fb" + integrity sha512-u0SQCsega/ox+2GSuUlG6wvA9c2FtH8sPmv9G9Q3JRTs7FK6+LtaziRAQgx7lrJ1J7bOd3palhwgZKMg8R6JbQ== + dependencies: + terminal-columns "^2.0.0" + type-flag "^4.1.0" + +cli-cursor@^3.1.0: version "3.1.0" resolved "https://registry.npmmirror.com/cli-cursor/-/cli-cursor-3.1.0.tgz#264305a7ae490d1d03bf0c9ba7c925d1753af307" integrity sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw== dependencies: restore-cursor "^3.1.0" -cli-spinners@2.6.1: - version "2.6.1" - resolved "https://registry.npmmirror.com/cli-spinners/-/cli-spinners-2.6.1.tgz#adc954ebe281c37a6319bfa401e6dd2488ffb70d" - integrity sha512-x/5fWmGMnbKQAaNwN+UZlV79qBLM9JFnJuJ03gIi5whrob0xV0ofNVHy9DhwGdsMJQc2OKv0oGmLzvaqvAVv+g== +cli-highlight@^2.1.11: + version "2.1.11" + resolved "https://registry.yarnpkg.com/cli-highlight/-/cli-highlight-2.1.11.tgz#49736fa452f0aaf4fae580e30acb26828d2dc1bf" + integrity sha512-9KDcoEVwyUXrjcJNvHD0NFc/hiwe/WPVYIleQh2O1N2Zro5gWJZ/K+3DGn8w8P/F6FxOgzyC5bxDyHIgCSPhGg== + dependencies: + chalk "^4.0.0" + highlight.js "^10.7.1" + mz "^2.4.0" + parse5 "^5.1.1" + parse5-htmlparser2-tree-adapter "^6.0.0" + yargs "^16.0.0" cli-spinners@^2.5.0: version "2.9.2" resolved "https://registry.npmmirror.com/cli-spinners/-/cli-spinners-2.9.2.tgz#1773a8f4b9c4d6ac31563df53b3fc1d79462fe41" integrity sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg== +cli-table3@^0.6.5: + version "0.6.5" + resolved "https://registry.yarnpkg.com/cli-table3/-/cli-table3-0.6.5.tgz#013b91351762739c16a9567c21a04632e449bf2f" + integrity sha512-+W/5efTR7y5HRD7gACw9yQjqMVvEMLBHmboM/kPWam+H+Hmyrgjh6YncVKK122YZkXrLudzTuAukUw9FnMf7IQ== + dependencies: + string-width "^4.2.0" + optionalDependencies: + "@colors/colors" "1.5.0" + cli-width@^3.0.0: version "3.0.0" resolved "https://registry.npmmirror.com/cli-width/-/cli-width-3.0.0.tgz#a2f48437a2caa9a22436e794bf071ec9e61cedf6" @@ -12704,27 +16190,6 @@ cliui@^8.0.1: strip-ansi "^6.0.1" wrap-ansi "^7.0.0" -clone-deep@4.0.1: - version "4.0.1" - resolved "https://registry.npmmirror.com/clone-deep/-/clone-deep-4.0.1.tgz#c19fd9bdbbf85942b4fd979c84dcf7d5f07c2387" - integrity sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ== - dependencies: - is-plain-object "^2.0.4" - kind-of "^6.0.2" - shallow-clone "^3.0.0" - -clone-response@^1.0.2: - version "1.0.3" - resolved "https://registry.npmmirror.com/clone-response/-/clone-response-1.0.3.tgz#af2032aa47816399cf5f0a1d0db902f517abb8c3" - integrity sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA== - dependencies: - mimic-response "^1.0.0" - -clone@2.x: - version "2.1.2" - resolved "https://registry.npmmirror.com/clone/-/clone-2.1.2.tgz#1b7f4b9f591f1e8f83670401600345a02887435f" - integrity sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w== - clone@^1.0.2: version "1.0.4" resolved "https://registry.npmmirror.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e" @@ -12735,41 +16200,43 @@ clsx@^1.0.2, clsx@^1.0.4, clsx@^1.1.1, clsx@^1.2.1: resolved "https://registry.npmmirror.com/clsx/-/clsx-1.2.1.tgz#0ddc4a20a549b59c93a4116bb26f5294ca17dc12" integrity sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg== +clsx@^2.0.0, clsx@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/clsx/-/clsx-2.1.1.tgz#eed397c9fd8bd882bfb18deab7102049a2f32999" + integrity sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA== + clsx@^2.1.0: version "2.1.0" resolved "https://registry.npmmirror.com/clsx/-/clsx-2.1.0.tgz#e851283bcb5c80ee7608db18487433f7b23f77cb" integrity sha512-m3iNNWpd9rl3jvvcBnu70ylMdrXt8Vlq4HYadnU5fwcOtvkSQWPmj7amUcDT2qYI7risszBjI5AUIUox9D16pg== -cluster-key-slot@^1.1.0: +cluster-key-slot@1.1.2, cluster-key-slot@^1.1.0, cluster-key-slot@^1.1.2: version "1.1.2" resolved "https://registry.npmmirror.com/cluster-key-slot/-/cluster-key-slot-1.1.2.tgz#88ddaa46906e303b5de30d3153b7d9fe0a0c19ac" integrity sha512-RMr0FhtfXemyinomL4hrWcYJxmX6deFdCxpJzhDttxgO1+bcCnkk+9drydLVDmAMG7NE6aN/fl4F7ucU/90gAA== -cmd-shim@6.0.1: - version "6.0.1" - resolved "https://registry.npmmirror.com/cmd-shim/-/cmd-shim-6.0.1.tgz#a65878080548e1dca760b3aea1e21ed05194da9d" - integrity sha512-S9iI9y0nKR4hwEQsVWpyxld/6kRfGepGfzff83FcaiEBpmvlbA2nnGe7Cylgrx2f/p1P5S5wpRm9oL8z1PbS3Q== +clz-buffer@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/clz-buffer/-/clz-buffer-1.0.0.tgz#f8cab8e31d5746b5eacd9fe5c4d9505700f3a03f" + integrity sha512-ApZYoWy06SfeIaJG/oBecF9ZBOYkP6uz31FYJF8gtGGacqz+YgD5kZuo5XBkgqI3tmL0E/vxyZ5q0PYgXjtxWg== co@^4.6.0: version "4.6.0" - resolved "https://registry.npmmirror.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" + resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" integrity sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ== -codemirror-graphql@^2.0.10: - version "2.0.10" - resolved "https://registry.npmmirror.com/codemirror-graphql/-/codemirror-graphql-2.0.10.tgz#c2ea5943b7c9426293dc158db1659b121d2cd55f" - integrity sha512-rC9NxibCsSzWtCQjHLfwKCkyYdGv2BT/BCgyDoKPrc/e7aGiyLyeT0fB60d+0imwlvhX3lIHncl6JMz2YxQ/jg== - dependencies: - "@types/codemirror" "^0.0.90" - graphql-language-service "5.2.0" +code-block-writer@^13.0.3: + version "13.0.3" + resolved "https://registry.yarnpkg.com/code-block-writer/-/code-block-writer-13.0.3.tgz#90f8a84763a5012da7af61319dd638655ae90b5b" + integrity sha512-Oofo0pq3IKnsFtuHqSF7TqBfr71aeyZDVJ0HpmqB7FBM2qEigL0iPONSCZSO9pE9dZTAxANe5XHG9Uy0YMv8cg== -codemirror-graphql@^2.0.11: - version "2.0.12" - resolved "https://registry.npmmirror.com/codemirror-graphql/-/codemirror-graphql-2.0.12.tgz#75492b41f271a64eb207c923a4a536c3134d05c9" - integrity sha512-5UCqhWzck1jClCmRewFb8aSiabnAqiaRfsvIPfmbf6WJvOb8oiefJeHilclPPiZBzY8v/Et6EBMtOeKnWCoyng== +codemirror-graphql@^2.2.1: + version "2.2.4" + resolved "https://registry.yarnpkg.com/codemirror-graphql/-/codemirror-graphql-2.2.4.tgz#e0a0e48795d0c6e5d441439526e457ea6c608dc7" + integrity sha512-VW4rpbAqgAIEWKXwE3nDFz2QEaY5Cme0CnKET43ZE3RSKAAeOaUcecR6wBf3LYfxWwOyyzeCzqxRoUj+HNAEQA== dependencies: "@types/codemirror" "^0.0.90" - graphql-language-service "5.2.1" + graphql-language-service "5.5.0" codemirror@^5.65.3: version "5.65.16" @@ -12800,9 +16267,9 @@ codeowners-utils@^1.0.2: locate-path "^5.0.0" collect-v8-coverage@^1.0.0: - version "1.0.2" - resolved "https://registry.npmmirror.com/collect-v8-coverage/-/collect-v8-coverage-1.0.2.tgz#c0b29bcd33bcd0779a1344c2136051e6afd3d9e9" - integrity sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q== + version "1.0.3" + resolved "https://registry.yarnpkg.com/collect-v8-coverage/-/collect-v8-coverage-1.0.3.tgz#cc1f01eb8d02298cbc9a437c74c70ab4e5210b80" + integrity sha512-1L5aqIkwPfiodaMgQunkF1zRhNqifHBmtbbbxcr6yVxxBnliw4TDOW6NxpO8DJLgJ16OT+Y4ztZqP6p/FtXnAw== color-convert@^1.9.0, color-convert@^1.9.3: version "1.9.3" @@ -12836,11 +16303,6 @@ color-string@^1.6.0, color-string@^1.9.0: color-name "^1.0.0" simple-swizzle "^0.2.2" -color-support@^1.1.3: - version "1.1.3" - resolved "https://registry.npmmirror.com/color-support/-/color-support-1.1.3.tgz#93834379a1cc9a0c61f82f52f0d04322251bd5a2" - integrity sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg== - color@^3.1.3: version "3.2.1" resolved "https://registry.npmmirror.com/color/-/color-3.2.1.tgz#3544dc198caf4490c3ecc9a790b54fe9ff45e164" @@ -12880,14 +16342,6 @@ colorspace@1.1.x: color "^3.1.3" text-hex "1.0.x" -columnify@1.6.0: - version "1.6.0" - resolved "https://registry.npmmirror.com/columnify/-/columnify-1.6.0.tgz#6989531713c9008bb29735e61e37acf5bd553cf3" - integrity sha512-lomjuFZKfM6MSAnV9aCZC9sc0qGbmZdfygNv+nCpqVkSKdCxCklLtd16O0EILGkImHw9ZpHkAnHaB+8Zxq5W6Q== - dependencies: - strip-ansi "^6.0.1" - wcwidth "^1.0.0" - combined-stream@^1.0.6, combined-stream@^1.0.8, combined-stream@~1.0.6: version "1.0.8" resolved "https://registry.npmmirror.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" @@ -12905,6 +16359,11 @@ comma-separated-tokens@^2.0.0: resolved "https://registry.npmmirror.com/comma-separated-tokens/-/comma-separated-tokens-2.0.3.tgz#4e89c9458acb61bc8fef19f4529973b2392839ee" integrity sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg== +commander@11.1.0: + version "11.1.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-11.1.0.tgz#62fdce76006a68e5c1ab3314dc92e800eb83d906" + integrity sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ== + commander@^10.0.0: version "10.0.1" resolved "https://registry.npmmirror.com/commander/-/commander-10.0.1.tgz#881ee46b4f77d1c1dccc5823433aa39b022cbe06" @@ -12915,6 +16374,11 @@ commander@^12.0.0: resolved "https://registry.npmmirror.com/commander/-/commander-12.1.0.tgz#01423b36f501259fdaac4d0e4d60c96c991585d3" integrity sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA== +commander@^14.0.3: + version "14.0.3" + resolved "https://registry.yarnpkg.com/commander/-/commander-14.0.3.tgz#425d79b48f9af82fcd9e4fc1ea8af6c5ec07bbc2" + integrity sha512-H+y0Jo/T1RZ9qPP4Eh1pkcQcLRglraJaSLoyOtHxu6AapkjWVCy2Sit1QQ4x3Dng8qDlSsZEet7g5Pq06MvTgw== + commander@^2.19.0, commander@^2.20.0: version "2.20.3" resolved "https://registry.npmmirror.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" @@ -12940,40 +16404,33 @@ commander@^8.3.0: resolved "https://registry.npmmirror.com/commander/-/commander-8.3.0.tgz#4837ea1b2da67b9c616a67afbb0fafee567bca66" integrity sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww== -common-path-prefix@^3.0.0: - version "3.0.0" - resolved "https://registry.npmmirror.com/common-path-prefix/-/common-path-prefix-3.0.0.tgz#7d007a7e07c58c4b4d5f433131a19141b29f11e0" - integrity sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w== +common-tags@^1.8.0: + version "1.8.2" + resolved "https://registry.yarnpkg.com/common-tags/-/common-tags-1.8.2.tgz#94ebb3c076d26032745fd54face7f688ef5ac9c6" + integrity sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA== commondir@^1.0.1: version "1.0.1" resolved "https://registry.npmmirror.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" integrity sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg== -compare-func@^2.0.0: - version "2.0.0" - resolved "https://registry.npmmirror.com/compare-func/-/compare-func-2.0.0.tgz#fb65e75edbddfd2e568554e8b5b05fff7a51fcb3" - integrity sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA== - dependencies: - array-ify "^1.0.0" - dot-prop "^5.1.0" - component-emitter@^1.3.0: version "1.3.1" resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.1.tgz#ef1d5796f7d93f135ee6fb684340b26403c97d17" integrity sha512-T0+barUSQRTUQASh8bx02dl+DhF54GtIDY13Y3m9oWTklKbb3Wv974meRpeZ3lp1JpLVECWWNHC4vaG2XHXouQ== -compress-commons@^5.0.1: - version "5.0.1" - resolved "https://registry.npmmirror.com/compress-commons/-/compress-commons-5.0.1.tgz#e46723ebbab41b50309b27a0e0f6f3baed2d6590" - integrity sha512-MPh//1cERdLtqwO3pOFLeXtpuai0Y2WCd5AhtKxznqM7WtaMYaOEMSgn45d9D10sIHSfIKE603HlOp8OPGrvag== +compress-commons@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/compress-commons/-/compress-commons-6.0.2.tgz#26d31251a66b9d6ba23a84064ecd3a6a71d2609e" + integrity sha512-6FqVXeETqWPoGcfzrXb37E50NP0LXT8kAMu5ooZayhWWdgEY4lBEEcbQNXtkuKQsGduxiIcI4gOTsxTmuq/bSg== dependencies: crc-32 "^1.2.0" - crc32-stream "^5.0.0" + crc32-stream "^6.0.0" + is-stream "^2.0.1" normalize-path "^3.0.0" - readable-stream "^3.6.0" + readable-stream "^4.0.0" -compressible@^2.0.12, compressible@~2.0.16: +compressible@^2.0.12, compressible@~2.0.16, compressible@~2.0.18: version "2.0.18" resolved "https://registry.npmmirror.com/compressible/-/compressible-2.0.18.tgz#af53cca6b070d4c3c0750fbd77286a6d7cc46fba" integrity sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg== @@ -12989,8 +16446,21 @@ compression@^1.7.4: bytes "3.0.0" compressible "~2.0.16" debug "2.6.9" - on-headers "~1.0.2" - safe-buffer "5.1.2" + on-headers "~1.0.2" + safe-buffer "5.1.2" + vary "~1.1.2" + +compression@^1.8.1: + version "1.8.1" + resolved "https://registry.yarnpkg.com/compression/-/compression-1.8.1.tgz#4a45d909ac16509195a9a28bd91094889c180d79" + integrity sha512-9mAqGPHLakhCLeNyxPkK4xVo746zQ/czLH1Ky+vkitMnWfWZps8r0qXuwhwizagCRttsL4lfG4pIOvaWLpAP0w== + dependencies: + bytes "3.1.2" + compressible "~2.0.18" + debug "2.6.9" + negotiator "~0.6.4" + on-headers "~1.1.0" + safe-buffer "5.2.1" vary "~1.1.2" compute-gcd@^1.2.1: @@ -13012,21 +16482,16 @@ compute-lcm@^1.1.2: validate.io-function "^1.0.2" validate.io-integer-array "^1.0.0" +concat-buffers@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/concat-buffers/-/concat-buffers-1.0.0.tgz#610db2f694b2bf6efdce75db97f3c3e402c9b1be" + integrity sha512-16ku3ZjxqnArWVUr1JoCCicha8HNdMwqK9XiaLoBtRRs/pNfxUyFXMMDMUFgNTT6GSlF396+31+4XfGQisvEIg== + concat-map@0.0.1: version "0.0.1" resolved "https://registry.npmmirror.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== -concat-stream@^1.5.2: - version "1.6.2" - resolved "https://registry.npmmirror.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34" - integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw== - dependencies: - buffer-from "^1.0.0" - inherits "^2.0.3" - readable-stream "^2.2.2" - typedarray "^0.0.6" - concat-stream@^2.0.0: version "2.0.0" resolved "https://registry.npmmirror.com/concat-stream/-/concat-stream-2.0.0.tgz#414cf5af790a48c60ab9be4527d56d5e41133cb1" @@ -13072,22 +16537,27 @@ connect-session-knex@^4.0.0: bluebird "^3.7.2" knex "3" +connect@^3.7.0: + version "3.7.0" + resolved "https://registry.yarnpkg.com/connect/-/connect-3.7.0.tgz#5d49348910caa5e07a01800b030d0c35f20484f8" + integrity sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ== + dependencies: + debug "2.6.9" + finalhandler "1.1.2" + parseurl "~1.3.3" + utils-merge "1.0.1" + console-browserify@^1.1.0: version "1.2.0" resolved "https://registry.npmmirror.com/console-browserify/-/console-browserify-1.2.0.tgz#67063cef57ceb6cf4993a2ab3a55840ae8c49336" integrity sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA== -console-control-strings@^1.1.0: - version "1.1.0" - resolved "https://registry.npmmirror.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" - integrity sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ== - constants-browserify@^1.0.0: version "1.0.0" resolved "https://registry.npmmirror.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75" integrity sha512-xFxOwqIzR/e1k1gLiWEophSCMqXcwVHIH7akf7b/vxcUeGunlj3hvZaaqxwHsTgn+IndtkQJgSztIDWeumWJDQ== -content-disposition@0.5.4, content-disposition@~0.5.2: +content-disposition@0.5.4, content-disposition@~0.5.2, content-disposition@~0.5.4: version "0.5.4" resolved "https://registry.npmmirror.com/content-disposition/-/content-disposition-0.5.4.tgz#8b82b4efac82512a02bb0b1dcec9d2c5e8eb5bfe" integrity sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ== @@ -13099,79 +16569,6 @@ content-type@^1.0.4, content-type@^1.0.5, content-type@~1.0.4, content-type@~1.0 resolved "https://registry.npmmirror.com/content-type/-/content-type-1.0.5.tgz#8b773162656d1d1086784c8f23a54ce6d73d7918" integrity sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA== -conventional-changelog-angular@7.0.0: - version "7.0.0" - resolved "https://registry.npmmirror.com/conventional-changelog-angular/-/conventional-changelog-angular-7.0.0.tgz#5eec8edbff15aa9b1680a8dcfbd53e2d7eb2ba7a" - integrity sha512-ROjNchA9LgfNMTTFSIWPzebCwOGFdgkEq45EnvvrmSLvCtAw0HSmrCs7/ty+wAeYUZyNay0YMUNYFTRL72PkBQ== - dependencies: - compare-func "^2.0.0" - -conventional-changelog-core@5.0.1: - version "5.0.1" - resolved "https://registry.npmmirror.com/conventional-changelog-core/-/conventional-changelog-core-5.0.1.tgz#3c331b155d5b9850f47b4760aeddfc983a92ad49" - integrity sha512-Rvi5pH+LvgsqGwZPZ3Cq/tz4ty7mjijhr3qR4m9IBXNbxGGYgTVVO+duXzz9aArmHxFtwZ+LRkrNIMDQzgoY4A== - dependencies: - add-stream "^1.0.0" - conventional-changelog-writer "^6.0.0" - conventional-commits-parser "^4.0.0" - dateformat "^3.0.3" - get-pkg-repo "^4.2.1" - git-raw-commits "^3.0.0" - git-remote-origin-url "^2.0.0" - git-semver-tags "^5.0.0" - normalize-package-data "^3.0.3" - read-pkg "^3.0.0" - read-pkg-up "^3.0.0" - -conventional-changelog-preset-loader@^3.0.0: - version "3.0.0" - resolved "https://registry.npmmirror.com/conventional-changelog-preset-loader/-/conventional-changelog-preset-loader-3.0.0.tgz#14975ef759d22515d6eabae6396c2ae721d4c105" - integrity sha512-qy9XbdSLmVnwnvzEisjxdDiLA4OmV3o8db+Zdg4WiFw14fP3B6XNz98X0swPPpkTd/pc1K7+adKgEDM1JCUMiA== - -conventional-changelog-writer@^6.0.0: - version "6.0.1" - resolved "https://registry.npmmirror.com/conventional-changelog-writer/-/conventional-changelog-writer-6.0.1.tgz#d8d3bb5e1f6230caed969dcc762b1c368a8f7b01" - integrity sha512-359t9aHorPw+U+nHzUXHS5ZnPBOizRxfQsWT5ZDHBfvfxQOAik+yfuhKXG66CN5LEWPpMNnIMHUTCKeYNprvHQ== - dependencies: - conventional-commits-filter "^3.0.0" - dateformat "^3.0.3" - handlebars "^4.7.7" - json-stringify-safe "^5.0.1" - meow "^8.1.2" - semver "^7.0.0" - split "^1.0.1" - -conventional-commits-filter@^3.0.0: - version "3.0.0" - resolved "https://registry.npmmirror.com/conventional-commits-filter/-/conventional-commits-filter-3.0.0.tgz#bf1113266151dd64c49cd269e3eb7d71d7015ee2" - integrity sha512-1ymej8b5LouPx9Ox0Dw/qAO2dVdfpRFq28e5Y0jJEU8ZrLdy0vOSkkIInwmxErFGhg6SALro60ZrwYFVTUDo4Q== - dependencies: - lodash.ismatch "^4.4.0" - modify-values "^1.0.1" - -conventional-commits-parser@^4.0.0: - version "4.0.0" - resolved "https://registry.npmmirror.com/conventional-commits-parser/-/conventional-commits-parser-4.0.0.tgz#02ae1178a381304839bce7cea9da5f1b549ae505" - integrity sha512-WRv5j1FsVM5FISJkoYMR6tPk07fkKT0UodruX4je86V4owk451yjXAKzKAPOs9l7y59E2viHUS9eQ+dfUA9NSg== - dependencies: - JSONStream "^1.3.5" - is-text-path "^1.0.1" - meow "^8.1.2" - split2 "^3.2.2" - -conventional-recommended-bump@7.0.1: - version "7.0.1" - resolved "https://registry.npmmirror.com/conventional-recommended-bump/-/conventional-recommended-bump-7.0.1.tgz#ec01f6c7f5d0e2491c2d89488b0d757393392424" - integrity sha512-Ft79FF4SlOFvX4PkwFDRnaNiIVX7YbmqGU0RwccUaiGvgp3S0a8ipR2/Qxk31vclDNM+GSdJOVs2KrsUCjblVA== - dependencies: - concat-stream "^2.0.0" - conventional-changelog-preset-loader "^3.0.0" - conventional-commits-filter "^3.0.0" - conventional-commits-parser "^4.0.0" - git-raw-commits "^3.0.0" - git-semver-tags "^5.0.0" - meow "^8.1.2" - convert-source-map@^1.5.0: version "1.9.0" resolved "https://registry.npmmirror.com/convert-source-map/-/convert-source-map-1.9.0.tgz#7faae62353fb4213366d0ca98358d22e8368b05f" @@ -13179,7 +16576,7 @@ convert-source-map@^1.5.0: convert-source-map@^2.0.0: version "2.0.0" - resolved "https://registry.npmmirror.com/convert-source-map/-/convert-source-map-2.0.0.tgz#4b560f649fc4e918dd0ab75cf4961e8bc882d82a" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-2.0.0.tgz#4b560f649fc4e918dd0ab75cf4961e8bc882d82a" integrity sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg== cookie-parser@^1.4.5: @@ -13195,9 +16592,9 @@ cookie-signature@1.0.6: resolved "https://registry.npmmirror.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" integrity sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ== -cookie-signature@1.0.7: +cookie-signature@1.0.7, cookie-signature@~1.0.6: version "1.0.7" - resolved "https://registry.npmmirror.com/cookie-signature/-/cookie-signature-1.0.7.tgz#ab5dd7ab757c54e60f37ef6550f481c426d10454" + resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.7.tgz#ab5dd7ab757c54e60f37ef6550f481c426d10454" integrity sha512-NXdYc3dLr47pBkpUCHtKSwIOQXLVn8dZEuywboCOJY/osA0wFSLlSawr3KN8qXJEyX66FcONTH8EIlVuK0yyFA== cookie@0.4.1: @@ -13210,7 +16607,7 @@ cookie@0.5.0: resolved "https://registry.npmmirror.com/cookie/-/cookie-0.5.0.tgz#d1f5d71adec6558c58f389987c366aa47e994f8b" integrity sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw== -cookie@0.6.0, cookie@^0.6.0, cookie@~0.6.0: +cookie@0.6.0: version "0.6.0" resolved "https://registry.npmmirror.com/cookie/-/cookie-0.6.0.tgz#2798b04b071b0ecbff0dbb62a505a8efa4e19051" integrity sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw== @@ -13220,38 +16617,41 @@ cookie@^0.4.2: resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.2.tgz#0e41f24de5ecf317947c82fc789e06a884824432" integrity sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA== +cookie@^0.7.0, cookie@~0.7.1: + version "0.7.2" + resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.7.2.tgz#556369c472a2ba910f2979891b526b3436237ed7" + integrity sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w== + cookiejar@^2.1.4: version "2.1.4" resolved "https://registry.yarnpkg.com/cookiejar/-/cookiejar-2.1.4.tgz#ee669c1fea2cf42dc31585469d193fef0d65771b" integrity sha512-LDx6oHrK+PhzLKJU9j5S7/Y3jM/mUHvD/DeI1WQmJn652iPC5Y4TBzC9l+5OMOXlyTTA+SmVUPm0HQUwpD5Jqw== -cookies@~0.8.0: - version "0.8.0" - resolved "https://registry.yarnpkg.com/cookies/-/cookies-0.8.0.tgz#1293ce4b391740a8406e3c9870e828c4b54f3f90" - integrity sha512-8aPsApQfebXnuI+537McwYsDtjVxGm8gTIzQI3FDW6t5t/DAhERxtnbEPN/8RX+uZthoz4eCOgloXaE5cYyNow== +cookies@~0.9.0, cookies@~0.9.1: + version "0.9.1" + resolved "https://registry.yarnpkg.com/cookies/-/cookies-0.9.1.tgz#3ffed6f60bb4fb5f146feeedba50acc418af67e3" + integrity sha512-TG2hpqe4ELx54QER/S3HQ9SRVnQnGBtKUz5bLQWtYAQ+o6GpgMs6sYUvaiJjVxb+UXwhRhAEP3m7LbsIZ77Hmw== dependencies: depd "~2.0.0" keygrip "~1.1.0" -copy-to-clipboard@^3.2.0, copy-to-clipboard@^3.3.1: +copy-to-clipboard@^3.2.0, copy-to-clipboard@^3.3.1, copy-to-clipboard@^3.3.3: version "3.3.3" resolved "https://registry.npmmirror.com/copy-to-clipboard/-/copy-to-clipboard-3.3.3.tgz#55ac43a1db8ae639a4bd99511c148cdd1b83a1b0" integrity sha512-2KV8NhB5JqC3ky0r9PMCAZKbUHSwtEo4CwCs0KXgruG43gX5PMqDEBbVU4OUzw2MuAWUfsuFmWvEKG5QRfSnJA== dependencies: toggle-selection "^1.0.6" -core-js-compat@^3.31.0, core-js-compat@^3.34.0: - version "3.35.1" - resolved "https://registry.npmmirror.com/core-js-compat/-/core-js-compat-3.35.1.tgz#215247d7edb9e830efa4218ff719beb2803555e2" - integrity sha512-sftHa5qUJY3rs9Zht1WEnmkvXputCyDBczPnr7QDgL8n3qrF3CMXY4VPSYtOLLiOUJcah2WNXREd48iOl6mQIw== - dependencies: - browserslist "^4.22.2" - core-js-pure@^3.23.3, core-js-pure@^3.30.2: version "3.35.1" resolved "https://registry.npmmirror.com/core-js-pure/-/core-js-pure-3.35.1.tgz#f33ad7fdf9dddae260339a30e5f8363f5c49a3bc" integrity sha512-zcIdi/CL3MWbBJYo5YCeVAAx+Sy9yJE9I3/u9LkFABwbeaPhTMRWraM8mYFp9jW5Z50hOy7FVzCc8dCrpZqtIQ== +core-js-pure@^3.48.0: + version "3.49.0" + resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.49.0.tgz#ff8436b7251a3832f5fdbbe3e10f7f2e58e51fb1" + integrity sha512-XM4RFka59xATyJv/cS3O3Kml72hQXUeGRuuTmMYFxwzc9/7C8OYTaIR/Ji+Yt8DXzsFLNhat15cE/JP15HrCgw== + core-js@^2.4.0, core-js@^2.5.0: version "2.6.12" resolved "https://registry.npmmirror.com/core-js/-/core-js-2.6.12.tgz#d9333dfa7b065e347cc5682219d6f690859cc2ec" @@ -13272,6 +16672,19 @@ core-util-is@~1.0.0: resolved "https://registry.npmmirror.com/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85" integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ== +cors-gate@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/cors-gate/-/cors-gate-1.1.3.tgz#4ff964e958a94f78da2029f0f95842410d812d19" + integrity sha512-RFqvbbpj02lqKDhqasBEkgzmT3RseCH3DKy5sT2W9S1mhctABKQP3ktKcnKN0h8t4pJ2SneI3hPl3TGNi/VmZA== + +cors@^2.8.4: + version "2.8.6" + resolved "https://registry.yarnpkg.com/cors/-/cors-2.8.6.tgz#ff5dd69bd95e547503820d29aba4f8faf8dfec96" + integrity sha512-tJtZBBHA6vjIAaF6EnIaq6laBBP9aq/Y3ouVJjEfoHbRBcHBAHYcMh/w8LDrk2PvIMMq8gmopa5D4V8RmbrxGw== + dependencies: + object-assign "^4" + vary "^1" + cors@^2.8.5: version "2.8.5" resolved "https://registry.npmmirror.com/cors/-/cors-2.8.5.tgz#eac11da51592dd86b9f06f6e7ac293b3df875d29" @@ -13291,7 +16704,7 @@ cosmiconfig@^6.0.0: path-type "^4.0.0" yaml "^1.7.2" -cosmiconfig@^7.0.0, cosmiconfig@^7.0.1: +cosmiconfig@^7.0.0: version "7.1.0" resolved "https://registry.npmmirror.com/cosmiconfig/-/cosmiconfig-7.1.0.tgz#1443b9afa596b670082ea46cbd8f6a62b84635f6" integrity sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA== @@ -13302,7 +16715,7 @@ cosmiconfig@^7.0.0, cosmiconfig@^7.0.1: path-type "^4.0.0" yaml "^1.10.0" -cosmiconfig@^8.1.0, cosmiconfig@^8.2.0: +cosmiconfig@^8.2.0: version "8.3.6" resolved "https://registry.npmmirror.com/cosmiconfig/-/cosmiconfig-8.3.6.tgz#060a2b871d66dba6c8538ea1118ba1ac16f5fae3" integrity sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA== @@ -13312,6 +16725,14 @@ cosmiconfig@^8.1.0, cosmiconfig@^8.2.0: parse-json "^5.2.0" path-type "^4.0.0" +cpu-features@~0.0.10: + version "0.0.10" + resolved "https://registry.yarnpkg.com/cpu-features/-/cpu-features-0.0.10.tgz#9aae536db2710c7254d7ed67cb3cbc7d29ad79c5" + integrity sha512-9IkYqtX3YHPCzoVg1Py+o9057a3i0fp7S530UWokCSaFVTc7CwXPRiOjRjBQQ18ZCNafx78YfnG+HALxtVmOGA== + dependencies: + buildcheck "~0.0.6" + nan "^2.19.0" + cpu-features@~0.0.9: version "0.0.9" resolved "https://registry.npmmirror.com/cpu-features/-/cpu-features-0.0.9.tgz#5226b92f0f1c63122b0a3eb84cb8335a4de499fc" @@ -13325,17 +16746,24 @@ crc-32@^1.2.0: resolved "https://registry.npmmirror.com/crc-32/-/crc-32-1.2.2.tgz#3cad35a934b8bf71f25ca524b6da51fb7eace2ff" integrity sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ== -crc32-stream@^5.0.0: - version "5.0.0" - resolved "https://registry.npmmirror.com/crc32-stream/-/crc32-stream-5.0.0.tgz#a97d3a802c8687f101c27cc17ca5253327354720" - integrity sha512-B0EPa1UK+qnpBZpG+7FgPCu0J2ETLpXq09o9BkLkEAhdB6Z61Qo4pJ3JYu0c+Qi+/SAL7QThqnzS06pmSSyZaw== +crc32-stream@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/crc32-stream/-/crc32-stream-6.0.0.tgz#8529a3868f8b27abb915f6c3617c0fadedbf9430" + integrity sha512-piICUB6ei4IlTv1+653yq5+KoqfBYmj9bw6LqXoOneTMDXk5nM1qt12mFW1caG3LlJXEKW1Bp0WggEmIfQB34g== dependencies: crc-32 "^1.2.0" - readable-stream "^3.4.0" + readable-stream "^4.0.0" + +crc@^3.8.0: + version "3.8.0" + resolved "https://registry.yarnpkg.com/crc/-/crc-3.8.0.tgz#ad60269c2c856f8c299e2c4cc0de4556914056c6" + integrity sha512-iX3mfgcTMIq3ZKLIsVFAbv7+Mc10kxabAGQb8HvjA1o3T1PIYprbakQ65d3I+2HGHt6nSKkM9PYjgoJO2KcFBQ== + dependencies: + buffer "^5.1.0" -create-ecdh@^4.0.0: +create-ecdh@^4.0.4: version "4.0.4" - resolved "https://registry.npmmirror.com/create-ecdh/-/create-ecdh-4.0.4.tgz#d6e7f4bffa66736085a0762fd3a632684dabcc4e" + resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.4.tgz#d6e7f4bffa66736085a0762fd3a632684dabcc4e" integrity sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A== dependencies: bn.js "^4.1.0" @@ -13352,7 +16780,7 @@ create-hash@^1.1.0, create-hash@^1.1.2, create-hash@^1.2.0: ripemd160 "^2.0.1" sha.js "^2.4.0" -create-hmac@^1.1.0, create-hmac@^1.1.4, create-hmac@^1.1.7: +create-hmac@^1.1.4, create-hmac@^1.1.7: version "1.1.7" resolved "https://registry.npmmirror.com/create-hmac/-/create-hmac-1.1.7.tgz#69170c78b3ab957147b2b8b04572e47ead2243ff" integrity sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg== @@ -13366,7 +16794,7 @@ create-hmac@^1.1.0, create-hmac@^1.1.4, create-hmac@^1.1.7: create-jest@^29.7.0: version "29.7.0" - resolved "https://registry.npmmirror.com/create-jest/-/create-jest-29.7.0.tgz#a355c5b3cb1e1af02ba177fe7afd7feee49a5320" + resolved "https://registry.yarnpkg.com/create-jest/-/create-jest-29.7.0.tgz#a355c5b3cb1e1af02ba177fe7afd7feee49a5320" integrity sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q== dependencies: "@jest/types" "^29.6.3" @@ -13377,9 +16805,9 @@ create-jest@^29.7.0: jest-util "^29.7.0" prompts "^2.0.1" -create-require@^1.1.0: +create-require@^1.1.0, create-require@^1.1.1: version "1.1.1" - resolved "https://registry.npmmirror.com/create-require/-/create-require-1.1.1.tgz#c1d7e8f1e5f6cfc9ff65f9cd352d37348756c333" + resolved "https://registry.yarnpkg.com/create-require/-/create-require-1.1.1.tgz#c1d7e8f1e5f6cfc9ff65f9cd352d37348756c333" integrity sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ== crelt@^1.0.5: @@ -13402,18 +16830,11 @@ cron@^3.0.0: "@types/luxon" "~3.4.0" luxon "~3.4.0" -cronstrue@^2.2.0, cronstrue@^2.32.0: +cronstrue@^2.32.0: version "2.47.0" resolved "https://registry.npmmirror.com/cronstrue/-/cronstrue-2.47.0.tgz#3cf447c2a3a070d5bad2cedd6383e7cc16f5a308" integrity sha512-fnFwJy7zslTEz6h7O7BkwgHNBvuuPmkhAYKqPDxK5mBQLz2nG08T9afbnjm+yrvcc/wxrd+otaVSnoXT9ulUOw== -cross-env@^7.0.0: - version "7.0.3" - resolved "https://registry.npmmirror.com/cross-env/-/cross-env-7.0.3.tgz#865264b29677dc015ba8418918965dd232fc54cf" - integrity sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw== - dependencies: - cross-spawn "^7.0.1" - cross-fetch@^3.1.4: version "3.1.8" resolved "https://registry.npmmirror.com/cross-fetch/-/cross-fetch-3.1.8.tgz#0327eba65fd68a7d119f8fb2bf9334a1a7956f82" @@ -13421,6 +16842,13 @@ cross-fetch@^3.1.4: dependencies: node-fetch "^2.6.12" +cross-fetch@^3.1.5: + version "3.2.0" + resolved "https://registry.yarnpkg.com/cross-fetch/-/cross-fetch-3.2.0.tgz#34e9192f53bc757d6614304d9e5e6fb4edb782e3" + integrity sha512-Q+xVJLoGOeIMXZmbUK4HYk+69cQH6LudR0Vu/pRm2YlU/hDV9CiS0gKUMaWY5f2NeUH9C1nV3bsTlCo0FsTV1Q== + dependencies: + node-fetch "^2.7.0" + cross-fetch@^4.0.0: version "4.0.0" resolved "https://registry.npmmirror.com/cross-fetch/-/cross-fetch-4.0.0.tgz#f037aef1580bb3a1a35164ea2a848ba81b445983" @@ -13428,14 +16856,14 @@ cross-fetch@^4.0.0: dependencies: node-fetch "^2.6.12" -cross-inspect@1.0.0: - version "1.0.0" - resolved "https://registry.npmmirror.com/cross-inspect/-/cross-inspect-1.0.0.tgz#5fda1af759a148594d2d58394a9e21364f6849af" - integrity sha512-4PFfn4b5ZN6FMNGSZlyb7wUhuN8wvj8t/VQHZdM4JsDcruGJ8L2kf9zao98QIrBPFCpdk27qst/AGTl7pL3ypQ== +cross-fetch@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/cross-fetch/-/cross-fetch-4.1.0.tgz#8f69355007ee182e47fa692ecbaa37a52e43c3d2" + integrity sha512-uKm5PU+MHTootlWEY+mZ4vvXoCn4fLQxT9dSc1sXVMSFkINTJVN8cAQROpwcKm8bJ/c7rgZVIBWzH5T78sNZZw== dependencies: - tslib "^2.4.0" + node-fetch "^2.7.0" -cross-spawn@^7.0.0, cross-spawn@^7.0.1, cross-spawn@^7.0.2, cross-spawn@^7.0.3: +cross-spawn@^7.0.0, cross-spawn@^7.0.2, cross-spawn@^7.0.3: version "7.0.3" resolved "https://registry.npmmirror.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== @@ -13444,22 +16872,23 @@ cross-spawn@^7.0.0, cross-spawn@^7.0.1, cross-spawn@^7.0.2, cross-spawn@^7.0.3: shebang-command "^2.0.0" which "^2.0.1" -crypto-browserify@^3.11.0: - version "3.12.0" - resolved "https://registry.npmmirror.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz#396cf9f3137f03e4b8e532c58f698254e00f80ec" - integrity sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg== +crypto-browserify@^3.12.1: + version "3.12.1" + resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.12.1.tgz#bb8921bec9acc81633379aa8f52d69b0b69e0dac" + integrity sha512-r4ESw/IlusD17lgQi1O20Fa3qNnsckR126TdUuBgAu7GBYSIPvdNyONd3Zrxh0xCwA4+6w/TDArBPsMvhur+KQ== dependencies: - browserify-cipher "^1.0.0" - browserify-sign "^4.0.0" - create-ecdh "^4.0.0" - create-hash "^1.1.0" - create-hmac "^1.1.0" - diffie-hellman "^5.0.0" - inherits "^2.0.1" - pbkdf2 "^3.0.3" - public-encrypt "^4.0.0" - randombytes "^2.0.0" - randomfill "^1.0.3" + browserify-cipher "^1.0.1" + browserify-sign "^4.2.3" + create-ecdh "^4.0.4" + create-hash "^1.2.0" + create-hmac "^1.1.7" + diffie-hellman "^5.0.3" + hash-base "~3.0.4" + inherits "^2.0.4" + pbkdf2 "^3.1.2" + public-encrypt "^4.0.3" + randombytes "^2.1.0" + randomfill "^1.0.4" css-box-model@^1.2.0: version "1.2.1" @@ -13513,6 +16942,14 @@ css-tree@^1.1.2, css-tree@^1.1.3: mdn-data "2.0.14" source-map "^0.6.1" +css-tree@^3.0.0, css-tree@^3.1.0: + version "3.2.1" + resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-3.2.1.tgz#86cac7011561272b30e6b1e042ba6ce047aa7518" + integrity sha512-X7sjQzceUhu1u7Y/ylrRZFU2FS6LRiFVp6rKLPg23y3x3c3DOKAwuXGDp+PAGjh6CSnCjYeAul8pcT8bAl+lSA== + dependencies: + mdn-data "2.27.1" + source-map-js "^1.2.1" + css-vendor@^2.0.8: version "2.0.8" resolved "https://registry.npmmirror.com/css-vendor/-/css-vendor-2.0.8.tgz#e47f91d3bd3117d49180a3c935e62e3d9f7f449d" @@ -13592,28 +17029,33 @@ csso@^4.2.0: dependencies: css-tree "^1.1.2" -cssom@^0.4.4: - version "0.4.4" - resolved "https://registry.npmmirror.com/cssom/-/cssom-0.4.4.tgz#5a66cf93d2d0b661d80bf6a44fb65f5c2e4e0a10" - integrity sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw== - cssom@^0.5.0: version "0.5.0" - resolved "https://registry.npmmirror.com/cssom/-/cssom-0.5.0.tgz#d254fa92cd8b6fbd83811b9fbaed34663cc17c36" + resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.5.0.tgz#d254fa92cd8b6fbd83811b9fbaed34663cc17c36" integrity sha512-iKuQcq+NdHqlAcwUY0o/HL69XQrUaQdMjmStJ8JFmUaiiQErlhrmuigkg/CU4E2J0IyUKUrMAgl36TvN67MqTw== cssom@~0.3.6: version "0.3.8" - resolved "https://registry.npmmirror.com/cssom/-/cssom-0.3.8.tgz#9f1276f5b2b463f2114d3f2c75250af8c1a36f4a" + resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.8.tgz#9f1276f5b2b463f2114d3f2c75250af8c1a36f4a" integrity sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg== cssstyle@^2.3.0: version "2.3.0" - resolved "https://registry.npmmirror.com/cssstyle/-/cssstyle-2.3.0.tgz#ff665a0ddbdc31864b09647f34163443d90b0852" + resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-2.3.0.tgz#ff665a0ddbdc31864b09647f34163443d90b0852" integrity sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A== dependencies: cssom "~0.3.6" +cssstyle@^6.0.1: + version "6.2.0" + resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-6.2.0.tgz#c41b59955c19c7a1223352d67ca462750204ad0f" + integrity sha512-Fm5NvhYathRnXNVndkUsCCuR63DCLVVwGOOwQw782coXFi5HhkXdu289l59HlXZBawsyNccXfWRYvLzcDCdDig== + dependencies: + "@asamuzakjp/css-color" "^5.0.1" + "@csstools/css-syntax-patches-for-csstree" "^1.0.28" + css-tree "^3.1.0" + lru-cache "^11.2.6" + csstype@^2.5.2: version "2.6.21" resolved "https://registry.npmmirror.com/csstype/-/csstype-2.6.21.tgz#2efb85b7cc55c80017c66a5ad7cbd931fda3a90e" @@ -13624,6 +17066,11 @@ csstype@^3.0.2, csstype@^3.1.2: resolved "https://registry.npmmirror.com/csstype/-/csstype-3.1.3.tgz#d80ff294d114fb0e6ac500fbf85b60137d7eff81" integrity sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw== +csstype@^3.1.3, csstype@^3.2.2: + version "3.2.3" + resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.2.3.tgz#ec48c0f3e993e50648c86da559e2610995cf989a" + integrity sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ== + ctrlc-windows@^2.1.0: version "2.1.0" resolved "https://registry.npmmirror.com/ctrlc-windows/-/ctrlc-windows-2.1.0.tgz#f2096a96ac1d03181e0ec808c2c8a67fdc20b300" @@ -13639,7 +17086,7 @@ ctrlc-windows@^2.1.0: resolved "https://registry.npmmirror.com/d3-dispatch/-/d3-dispatch-3.0.1.tgz#5fc75284e9c2375c36c839411a0cf550cbfc4d5e" integrity sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg== -"d3-drag@2 - 3": +"d3-drag@2 - 3", d3-drag@^3.0.0: version "3.0.0" resolved "https://registry.npmmirror.com/d3-drag/-/d3-drag-3.0.0.tgz#994aae9cd23c719f53b5e10e3a0a6108c69607ba" integrity sha512-pWbUJLdETVA8lQNJecMxoXfH6x+mO2UQo8rSmZ+QqxcbyA3hfeprFgIT//HW2nlHChWeIIMwS2Fq+gEARkhTkg== @@ -13730,11 +17177,6 @@ damerau-levenshtein@^1.0.8: resolved "https://registry.npmmirror.com/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz#b43d286ccbd36bc5b2f7ed41caf2d0aba1f8a6e7" integrity sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA== -dargs@^7.0.0: - version "7.0.0" - resolved "https://registry.npmmirror.com/dargs/-/dargs-7.0.0.tgz#04015c41de0bcb69ec84050f3d9be0caf8d6d5cc" - integrity sha512-2iy1EkLdlBzQGvbweYRFxmFath8+K7+AKB0TlhHWkNuH+TmovaMH/Wp7V7R4u7f4SnX3OgLsU9t1NI9ioDnUpg== - dashdash@^1.12.0: version "1.14.1" resolved "https://registry.npmmirror.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" @@ -13742,30 +17184,61 @@ dashdash@^1.12.0: dependencies: assert-plus "^1.0.0" -data-urls@^2.0.0: - version "2.0.0" - resolved "https://registry.npmmirror.com/data-urls/-/data-urls-2.0.0.tgz#156485a72963a970f5d5821aaf642bef2bf2db9b" - integrity sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ== - dependencies: - abab "^2.0.3" - whatwg-mimetype "^2.3.0" - whatwg-url "^8.0.0" +data-uri-to-buffer@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/data-uri-to-buffer/-/data-uri-to-buffer-6.0.2.tgz#8a58bb67384b261a38ef18bea1810cb01badd28b" + integrity sha512-7hvf7/GW8e86rW0ptuwS3OcBGDjIi6SZva7hCyWC0yYry2cOPmLIjXAUHI6DK2HsnwJd9ifmt57i8eV2n4YNpw== data-urls@^3.0.2: version "3.0.2" - resolved "https://registry.npmmirror.com/data-urls/-/data-urls-3.0.2.tgz#9cf24a477ae22bcef5cd5f6f0bfbc1d2d3be9143" + resolved "https://registry.yarnpkg.com/data-urls/-/data-urls-3.0.2.tgz#9cf24a477ae22bcef5cd5f6f0bfbc1d2d3be9143" integrity sha512-Jy/tj3ldjZJo63sVAvg6LHt2mHvl4V6AgRAmNDtLdm7faqtsx+aJG42rsyCo9JCoRVKwPFzKlIPx3DIibwSIaQ== dependencies: abab "^2.0.6" whatwg-mimetype "^3.0.0" whatwg-url "^11.0.0" -dataloader@^2.0.0, dataloader@^2.2.2: +data-urls@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/data-urls/-/data-urls-7.0.0.tgz#6dce8b63226a1ecfdd907ce18a8ccfb1eee506d3" + integrity sha512-23XHcCF+coGYevirZceTVD7NdJOqVn+49IHyxgszm+JIiHLoB2TkmPtsYkNWT1pvRSGkc35L6NHs0yHkN2SumA== + dependencies: + whatwg-mimetype "^5.0.0" + whatwg-url "^16.0.0" + +data-view-buffer@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/data-view-buffer/-/data-view-buffer-1.0.2.tgz#211a03ba95ecaf7798a8c7198d79536211f88570" + integrity sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ== + dependencies: + call-bound "^1.0.3" + es-errors "^1.3.0" + is-data-view "^1.0.2" + +data-view-byte-length@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/data-view-byte-length/-/data-view-byte-length-1.0.2.tgz#9e80f7ca52453ce3e93d25a35318767ea7704735" + integrity sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ== + dependencies: + call-bound "^1.0.3" + es-errors "^1.3.0" + is-data-view "^1.0.2" + +data-view-byte-offset@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/data-view-byte-offset/-/data-view-byte-offset-1.0.1.tgz#068307f9b71ab76dbbe10291389e020856606191" + integrity sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ== + dependencies: + call-bound "^1.0.2" + es-errors "^1.3.0" + is-data-view "^1.0.1" + +dataloader@^2.0.0: version "2.2.2" resolved "https://registry.npmmirror.com/dataloader/-/dataloader-2.2.2.tgz#216dc509b5abe39d43a9b9d97e6e5e473dfbe3e0" integrity sha512-8YnDaaf7N3k/q5HnTJVuzSyLETjoZjVmHc4AeKAzOvKHEFQKcn64OKBfzHYtE9zGjctNM7V9I0MfnUVLpi7M5g== -date-fns@^2.16.1, date-fns@^2.21.1, date-fns@^2.30.0: +date-fns@^2.16.1, date-fns@^2.30.0: version "2.30.0" resolved "https://registry.npmmirror.com/date-fns/-/date-fns-2.30.0.tgz#f367e644839ff57894ec6ac480de40cae4b0f4d0" integrity sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw== @@ -13782,6 +17255,11 @@ dateformat@^3.0.3: resolved "https://registry.npmmirror.com/dateformat/-/dateformat-3.0.3.tgz#a6e37499a4d9a9cf85ef5872044d62901c9889ae" integrity sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q== +debounce-promise@^3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/debounce-promise/-/debounce-promise-3.1.2.tgz#320fb8c7d15a344455cd33cee5ab63530b6dc7c5" + integrity sha512-rZHcgBkbYavBeD9ej6sP56XfG53d51CD4dnaw989YX/nZ/ZJfgRx/9ePKmTNiUiyQvh4mtrMoS3OAWW+yoYtpg== + debounce@^1.2.0: version "1.2.1" resolved "https://registry.npmmirror.com/debounce/-/debounce-1.2.1.tgz#38881d8f4166a5c5848020c11827b834bcb3e0a5" @@ -13808,30 +17286,17 @@ debug@^3.2.7: dependencies: ms "^2.1.1" -debug@~3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" - integrity sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g== - dependencies: - ms "2.0.0" - -decamelize-keys@^1.1.0: - version "1.1.1" - resolved "https://registry.npmmirror.com/decamelize-keys/-/decamelize-keys-1.1.1.tgz#04a2d523b2f18d80d0158a43b895d56dff8d19d8" - integrity sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg== +debug@^4.3.6, debug@^4.4.3: + version "4.4.3" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.4.3.tgz#c6ae432d9bd9662582fce08709b038c58e9e3d6a" + integrity sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA== dependencies: - decamelize "^1.1.0" - map-obj "^1.0.0" - -decamelize@^1.1.0: - version "1.2.0" - resolved "https://registry.npmmirror.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" - integrity sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA== + ms "^2.1.3" -decimal.js@^10.2.1, decimal.js@^10.4.2: - version "10.4.3" - resolved "https://registry.npmmirror.com/decimal.js/-/decimal.js-10.4.3.tgz#1044092884d245d1b7f65725fa4ad4c6f781cc23" - integrity sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA== +decimal.js@^10.4.2, decimal.js@^10.4.3, decimal.js@^10.6.0: + version "10.6.0" + resolved "https://registry.yarnpkg.com/decimal.js/-/decimal.js-10.6.0.tgz#e649a43e3ab953a72192ff5983865e509f37ed9a" + integrity sha512-YpgQiITW3JXGntzdUmyUR1V812Hn8T1YVXhCu+wO3OpS4eU9l4YdD3qjyiKdV6mvV29zapkMeD390UVEf2lkUg== decode-named-character-reference@^1.0.0: version "1.0.2" @@ -13840,11 +17305,6 @@ decode-named-character-reference@^1.0.0: dependencies: character-entities "^2.0.0" -decode-uri-component@^0.2.2: - version "0.2.2" - resolved "https://registry.npmmirror.com/decode-uri-component/-/decode-uri-component-0.2.2.tgz#e69dbe25d37941171dd540e024c444cd5188e1e9" - integrity sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ== - decompress-response@^6.0.0: version "6.0.0" resolved "https://registry.npmmirror.com/decompress-response/-/decompress-response-6.0.0.tgz#ca387612ddb7e104bd16d85aab00d5ecf09c66fc" @@ -13852,15 +17312,10 @@ decompress-response@^6.0.0: dependencies: mimic-response "^3.1.0" -dedent@0.7.0: - version "0.7.0" - resolved "https://registry.npmmirror.com/dedent/-/dedent-0.7.0.tgz#2495ddbaf6eb874abb0e1be9df22d2e5a544326c" - integrity sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA== - dedent@^1.0.0: - version "1.5.1" - resolved "https://registry.npmmirror.com/dedent/-/dedent-1.5.1.tgz#4f3fc94c8b711e9bb2800d185cd6ad20f2a90aff" - integrity sha512-+LxW+KLWxu3HW3M2w2ympwtqPrqYRzU8fqi6Fhd18fBALe15blJPI/I4+UHveMVG6lJqB4JNd4UG0S5cnVHwIg== + version "1.7.2" + resolved "https://registry.yarnpkg.com/dedent/-/dedent-1.7.2.tgz#34e2264ab538301e27cf7b07bf2369c19baa8dd9" + integrity sha512-WzMx3mW98SN+zn3hgemf4OzdmyNhhhKz5Ay0pUfQiMQ3e1g+xmTJWp/pKdwKVXhdSkAEGIIzqeuWrL3mV/AXbA== deep-equal@^1.1.0: version "1.1.2" @@ -13938,6 +17393,13 @@ default-gateway@^6.0.3: dependencies: execa "^5.0.0" +default-user-agent@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/default-user-agent/-/default-user-agent-1.0.0.tgz#16c46efdcaba3edc45f24f2bd4868b01b7c2adc6" + integrity sha512-bDF7bg6OSNcSwFWPu4zYKpVkJZQYVrAANMYB8bc9Szem1D0yKdm4sa/rOCs2aC9+2GMqQ7KnwtZRvDhmLF0dXw== + dependencies: + os-name "~1.0.3" + defaults@^1.0.3: version "1.0.4" resolved "https://registry.npmmirror.com/defaults/-/defaults-1.0.4.tgz#b0b02062c1e2aa62ff5d9528f0f98baa90978d7a" @@ -13945,11 +17407,6 @@ defaults@^1.0.3: dependencies: clone "^1.0.2" -defer-to-connect@^2.0.0: - version "2.0.1" - resolved "https://registry.npmmirror.com/defer-to-connect/-/defer-to-connect-2.0.1.tgz#8016bdb4143e4632b77a3449c6236277de520587" - integrity sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg== - define-data-property@^1.0.1, define-data-property@^1.1.0, define-data-property@^1.1.1: version "1.1.1" resolved "https://registry.npmmirror.com/define-data-property/-/define-data-property-1.1.1.tgz#c35f7cd0ab09883480d12ac5cb213715587800b3" @@ -13987,10 +17444,14 @@ define-properties@^1.1.3, define-properties@^1.2.0, define-properties@^1.2.1: has-property-descriptors "^1.0.0" object-keys "^1.1.1" -delay@^5.0.0: - version "5.0.0" - resolved "https://registry.npmmirror.com/delay/-/delay-5.0.0.tgz#137045ef1b96e5071060dd5be60bf9334436bd1d" - integrity sha512-ReEBKkIfe4ya47wlPYf/gu5ib6yUG0/Aez0JQZQz94kiWtRQvZIQbTiehsnwHvLSWJnQdhVeqYue7Id1dKr0qw== +degenerator@^5.0.0: + version "5.0.1" + resolved "https://registry.yarnpkg.com/degenerator/-/degenerator-5.0.1.tgz#9403bf297c6dad9a1ece409b37db27954f91f2f5" + integrity sha512-TllpMR/t0M5sqCXfj85i4XaAzxmS5tVA16dqvdkMwGmzI+dXLXnw3J+3Vdv7VKw+ThlTMboK6i9rnZ6Nntj5CQ== + dependencies: + ast-types "^0.13.4" + escodegen "^2.1.0" + esprima "^4.0.1" delayed-stream@~1.0.0: version "1.0.0" @@ -14007,12 +17468,12 @@ denque@^2.1.0: resolved "https://registry.npmmirror.com/denque/-/denque-2.1.0.tgz#e93e1a6569fb5e66f16a3c2a2964617d349d6ab1" integrity sha512-HVQE3AAb/pxF8fQAoiqpvg9i3evqug3hoiwakOyZAwJm+6vZehbkYXZ0l4JxS+I3QxM97v5aaRNhj8v5oBhekw== -depd@2.0.0, depd@~2.0.0: +depd@2.0.0, depd@^2.0.0, depd@~2.0.0: version "2.0.0" resolved "https://registry.npmmirror.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df" integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== -depd@^1.1.2, depd@~1.1.2: +depd@~1.1.2: version "1.1.2" resolved "https://registry.npmmirror.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" integrity sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ== @@ -14040,15 +17501,17 @@ des.js@^1.0.0: inherits "^2.0.1" minimalistic-assert "^1.0.0" -destroy@1.2.0, destroy@^1.0.4: +destroy@1.2.0, destroy@^1.0.4, destroy@^1.2.0, destroy@~1.2.0: version "1.2.0" resolved "https://registry.npmmirror.com/destroy/-/destroy-1.2.0.tgz#4803735509ad8be552934c67df614f94e66fa015" integrity sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg== -detect-indent@^5.0.0: - version "5.0.0" - resolved "https://registry.npmmirror.com/detect-indent/-/detect-indent-5.0.0.tgz#3871cc0a6a002e8c3e5b3cf7f336264675f06b9d" - integrity sha512-rlpvsxUtM0PQvy9iZe640/IWwWYyBsTApREbA1pHOpmOUIl9MkP/U4z7vTtg4Oaojvqhxt7sdufnT0EzGaR31g== +destroyable-server@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/destroyable-server/-/destroyable-server-1.1.1.tgz#c40105e5a9d0a582e2c37924c78bced36ab0a986" + integrity sha512-7tjgU/99QVuYSqkMXr6XdQSvXj+8TjC9NiRVWNSyGytxklZ88m+qcSvWTJ3VysE3I9wurph7dTciLEEj8aUlaQ== + dependencies: + "@types/node" "*" detect-indent@^6.1.0: version "6.1.0" @@ -14062,7 +17525,7 @@ detect-libc@^2.0.0: detect-newline@^3.0.0: version "3.1.0" - resolved "https://registry.npmmirror.com/detect-newline/-/detect-newline-3.1.0.tgz#576f5dfc63ae1a192ff192d8ad3af6308991b651" + resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-3.1.0.tgz#576f5dfc63ae1a192ff192d8ad3af6308991b651" integrity sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA== detect-node-es@^1.1.0: @@ -14111,15 +17574,20 @@ diff@^5.0.0: resolved "https://registry.npmmirror.com/diff/-/diff-5.1.0.tgz#bc52d298c5ea8df9194800224445ed43ffc87e40" integrity sha512-D+mk+qE8VC/PAUrlAU34N+VfXev0ghe5ywmpqrawphmVZc1bEfn56uo9qpyGp1p4xpzOHkSW4ztBd6L7Xx4ACw== -diffie-hellman@^5.0.0: +diffie-hellman@^5.0.3: version "5.0.3" - resolved "https://registry.npmmirror.com/diffie-hellman/-/diffie-hellman-5.0.3.tgz#40e8ee98f55a2149607146921c63e1ae5f3d2875" + resolved "https://registry.yarnpkg.com/diffie-hellman/-/diffie-hellman-5.0.3.tgz#40e8ee98f55a2149607146921c63e1ae5f3d2875" integrity sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg== dependencies: bn.js "^4.1.0" miller-rabin "^4.0.0" randombytes "^2.0.0" +digest-header@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/digest-header/-/digest-header-1.1.0.tgz#e16ab6cf4545bc4eea878c8c35acd1b89664d800" + integrity sha512-glXVh42vz40yZb9Cq2oMOt70FIoWiv+vxNvdKdU8CwjLad25qHM3trLxhl9bVjdr6WaslIXhWpn0NO8T/67Qjg== + dir-glob@^3.0.1: version "3.0.1" resolved "https://registry.npmmirror.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" @@ -14139,15 +17607,12 @@ dns-packet@^5.2.2: dependencies: "@leichtgewicht/ip-codec" "^2.0.1" -docker-modem@^3.0.0: - version "3.0.8" - resolved "https://registry.npmmirror.com/docker-modem/-/docker-modem-3.0.8.tgz#ef62c8bdff6e8a7d12f0160988c295ea8705e77a" - integrity sha512-f0ReSURdM3pcKPNS30mxOHSbaFLcknGmQjwSfmbcdOw1XWKXVhukM3NJHhr7NpY9BIyyWQb0EBo3KQvvuU5egQ== +docker-compose@^1.4.2: + version "1.4.2" + resolved "https://registry.yarnpkg.com/docker-compose/-/docker-compose-1.4.2.tgz#a389b9ab754c722bccf97fba6206859098edf835" + integrity sha512-rPHigTKGaEHpkUmfd69QgaOp+Os5vGJwG/Ry8lcr8W/382AmI+z/D7qoa9BybKIkqNppaIbs8RYeHSevdQjWww== dependencies: - debug "^4.1.1" - readable-stream "^3.5.0" - split-ca "^1.0.1" - ssh2 "^1.11.0" + yaml "^2.2.2" docker-modem@^5.0.3: version "5.0.3" @@ -14159,14 +17624,15 @@ docker-modem@^5.0.3: split-ca "^1.0.1" ssh2 "^1.15.0" -dockerode@^3.3.1: - version "3.3.5" - resolved "https://registry.npmmirror.com/dockerode/-/dockerode-3.3.5.tgz#7ae3f40f2bec53ae5e9a741ce655fff459745629" - integrity sha512-/0YNa3ZDNeLr/tSckmD69+Gq+qVNhvKfAHNeZJBnp7EOP6RGKV8ORrJHkUn20So5wU+xxT7+1n5u8PjHbfjbSA== +docker-modem@^5.0.7: + version "5.0.7" + resolved "https://registry.yarnpkg.com/docker-modem/-/docker-modem-5.0.7.tgz#57f3f0e2c7a893e66a0d4a626f9cbc933d77157b" + integrity sha512-XJgGhoR/CLpqshm4d3L7rzH6t8NgDFUIIpztYlLHIApeJjMZKYJMz2zxPsYxnejq5h3ELYSw/RBsi3t5h7gNTA== dependencies: - "@balena/dockerignore" "^1.0.2" - docker-modem "^3.0.0" - tar-fs "~2.0.1" + debug "^4.1.1" + readable-stream "^3.5.0" + split-ca "^1.0.1" + ssh2 "^1.15.0" dockerode@^4.0.0: version "4.0.2" @@ -14177,6 +17643,19 @@ dockerode@^4.0.0: docker-modem "^5.0.3" tar-fs "~2.0.1" +dockerode@^4.0.10: + version "4.0.10" + resolved "https://registry.yarnpkg.com/dockerode/-/dockerode-4.0.10.tgz#d0fa159d87eace6f59aa1399517c3d07a7455f73" + integrity sha512-8L/P9JynLBiG7/coiA4FlQXegHltRqS0a+KqI44P1zgQh8QLHTg7FKOwhkBgSJwZTeHsq30WRoVFLuwkfK0YFg== + dependencies: + "@balena/dockerignore" "^1.0.2" + "@grpc/grpc-js" "^1.11.1" + "@grpc/proto-loader" "^0.7.13" + docker-modem "^5.0.7" + protobufjs "^7.3.2" + tar-fs "^2.1.4" + uuid "^10.0.0" + doctrine@^2.1.0: version "2.1.0" resolved "https://registry.npmmirror.com/doctrine/-/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d" @@ -14225,26 +17704,19 @@ dom-serializer@^1.0.1: domhandler "^4.2.0" entities "^2.0.0" -domain-browser@^1.1.1: - version "1.2.0" - resolved "https://registry.npmmirror.com/domain-browser/-/domain-browser-1.2.0.tgz#3d31f50191a6749dd1375a7f522e823d42e54eda" - integrity sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA== +domain-browser@4.22.0: + version "4.22.0" + resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-4.22.0.tgz#6ddd34220ec281f9a65d3386d267ddd35c491f9f" + integrity sha512-IGBwjF7tNk3cwypFNH/7bfzBcgSCbaMOD3GsaY1AU/JRrnHnYgEM0+9kQt52iZxjNsjBtJYtao146V+f8jFZNw== domelementtype@^2.0.1, domelementtype@^2.2.0: version "2.3.0" resolved "https://registry.npmmirror.com/domelementtype/-/domelementtype-2.3.0.tgz#5c45e8e869952626331d7aab326d01daf65d589d" integrity sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw== -domexception@^2.0.1: - version "2.0.1" - resolved "https://registry.npmmirror.com/domexception/-/domexception-2.0.1.tgz#fb44aefba793e1574b0af6aed2801d057529f304" - integrity sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg== - dependencies: - webidl-conversions "^5.0.0" - domexception@^4.0.0: version "4.0.0" - resolved "https://registry.npmmirror.com/domexception/-/domexception-4.0.0.tgz#4ad1be56ccadc86fc76d033353999a8037d03673" + resolved "https://registry.yarnpkg.com/domexception/-/domexception-4.0.0.tgz#4ad1be56ccadc86fc76d033353999a8037d03673" integrity sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw== dependencies: webidl-conversions "^7.0.0" @@ -14256,20 +17728,12 @@ domhandler@^4.0.0, domhandler@^4.2.0, domhandler@^4.3.1: dependencies: domelementtype "^2.2.0" -dompurify@=3.0.8: - version "3.0.8" - resolved "https://registry.npmmirror.com/dompurify/-/dompurify-3.0.8.tgz#e0021ab1b09184bc8af7e35c7dd9063f43a8a437" - integrity sha512-b7uwreMYL2eZhrSCRC4ahLTeZcPZxSmYfmcQGXGkXiZSNW1X85v+SDM5KsWcpivIiUBH47Ji7NtyUdpLeF5JZQ== - -dompurify@^2.2.7: - version "2.4.7" - resolved "https://registry.npmmirror.com/dompurify/-/dompurify-2.4.7.tgz#277adeb40a2c84be2d42a8bcd45f582bfa4d0cfc" - integrity sha512-kxxKlPEDa6Nc5WJi+qRgPbOAbgTpSULL+vI3NUXsZMlkJxTqYI9wg5ZTay2sFrdZRWHPWNi+EdAhcJf81WtoMQ== - -dompurify@^3.0.0: - version "3.1.5" - resolved "https://registry.npmmirror.com/dompurify/-/dompurify-3.1.5.tgz#2c6a113fc728682a0f55684b1388c58ddb79dc38" - integrity sha512-lwG+n5h8QNpxtyrJW/gJWckL+1/DQiYMX8f7t8Z2AZTPw1esVrqjI63i7Zc2Gz0aKzLVMYC1V1PL/ky+aY/NgA== +dompurify@^3.3.1, dompurify@^3.3.2: + version "3.4.1" + resolved "https://registry.yarnpkg.com/dompurify/-/dompurify-3.4.1.tgz#521d04483ac12631b2aedf434a5f5390933b8789" + integrity sha512-JahakDAIg1gyOm7dlgWSDjV4n7Ip2PKR55NIT6jrMfIgLFgWo81vdr1/QGqWtFNRqXP9UV71oVePtjqS2ebnPw== + optionalDependencies: + "@types/trusted-types" "^2.0.7" domutils@^2.5.2, domutils@^2.8.0: version "2.8.0" @@ -14288,38 +17752,35 @@ dot-case@^3.0.4: no-case "^3.0.4" tslib "^2.0.3" -dot-prop@^5.1.0: - version "5.3.0" - resolved "https://registry.npmmirror.com/dot-prop/-/dot-prop-5.3.0.tgz#90ccce708cd9cd82cc4dc8c3ddd9abdd55b20e88" - integrity sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q== - dependencies: - is-obj "^2.0.0" - -dotenv-expand@~10.0.0: - version "10.0.0" - resolved "https://registry.npmmirror.com/dotenv-expand/-/dotenv-expand-10.0.0.tgz#12605d00fb0af6d0a592e6558585784032e4ef37" - integrity sha512-GopVGCpVS1UKH75VKHGuQFqS1Gusej0z4FyQkPdwjil2gNIv+LNsqBlboOzpJFZKVT95GkCyWJbBSdFEFUWI2A== - -dotenv@~16.3.1: - version "16.3.2" - resolved "https://registry.npmmirror.com/dotenv/-/dotenv-16.3.2.tgz#3cb611ce5a63002dbabf7c281bc331f69d28f03f" - integrity sha512-HTlk5nmhkm8F6JcdXvHIzaorzCoziNQT9mGxLPVXW8wJF1TiGSL60ZGB4gHWabHOaMmWmhvk2/lPHfnBiT78AQ== - drange@^1.0.2: version "1.1.1" resolved "https://registry.npmmirror.com/drange/-/drange-1.1.1.tgz#b2aecec2aab82fcef11dbbd7b9e32b83f8f6c0b8" integrity sha512-pYxfDYpued//QpnLIm4Avk7rsNtAtQkUES2cwAYSvD/wd2pKD71gN2Ebj3e7klzXwjocvE8c5vx/1fxwpqmSxA== -dset@^3.1.2: - version "3.1.3" - resolved "https://registry.npmmirror.com/dset/-/dset-3.1.3.tgz#c194147f159841148e8e34ca41f638556d9542d2" - integrity sha512-20TuZZHCEZ2O71q9/+8BwKwZ0QtD9D8ObhrihJPr+vLLYlSuAU3/zL4cSlgbfeoGHTjCSJBa7NGcrF9/Bx/WJQ== +dunder-proto@^1.0.0, dunder-proto@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/dunder-proto/-/dunder-proto-1.0.1.tgz#d7ae667e1dc83482f8b70fd0f6eefc50da30f58a" + integrity sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A== + dependencies: + call-bind-apply-helpers "^1.0.1" + es-errors "^1.3.0" + gopd "^1.2.0" -duplexer@^0.1.1, duplexer@^0.1.2: +duplexer@^0.1.2: version "0.1.2" resolved "https://registry.npmmirror.com/duplexer/-/duplexer-0.1.2.tgz#3abe43aef3835f8ae077d136ddce0f276b0400e6" integrity sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg== +duplexify@^3.5.1: + version "3.7.1" + resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-3.7.1.tgz#2a4df5317f6ccfd91f86d6fd25d8d8a103b88309" + integrity sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g== + dependencies: + end-of-stream "^1.0.0" + inherits "^2.0.1" + readable-stream "^2.0.0" + stream-shift "^1.0.0" + duplexify@^4.0.0: version "4.1.2" resolved "https://registry.npmmirror.com/duplexify/-/duplexify-4.1.2.tgz#18b4f8d28289132fa0b9573c898d9f903f81c7b0" @@ -14360,19 +17821,17 @@ ee-first@1.1.1: resolved "https://registry.npmmirror.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== -ejs@^3.1.7: - version "3.1.9" - resolved "https://registry.npmmirror.com/ejs/-/ejs-3.1.9.tgz#03c9e8777fe12686a9effcef22303ca3d8eeb361" - integrity sha512-rC+QVNMJWv+MtPgkt0y+0rVEIdbtxVADApW9JXrUVlzHetgcyczP/E7DJmWJ4fJCZF2cPcBk0laWO9ZHMG3DmQ== - dependencies: - jake "^10.8.5" - electron-to-chromium@^1.4.648: version "1.4.650" resolved "https://registry.npmmirror.com/electron-to-chromium/-/electron-to-chromium-1.4.650.tgz#b38ef9de16991b9f7b924246770576ab91ab3d64" integrity sha512-sYSQhJCJa4aGA1wYol5cMQgekDBlbVfTRavlGZVr3WZpDdOPcp6a6xUnFfrt8TqZhsBYYbDxJZCjGfHuGupCRQ== -elliptic@^6.5.3, elliptic@^6.5.4: +electron-to-chromium@^1.5.328: + version "1.5.344" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.344.tgz#6437cc08a7d9b914a98120e182f37793c9eaffd4" + integrity sha512-4MxfbmNDm+KPh066EZy+eUnkcDPcZ35wNmOWzFuh/ijvHsve6kbLTLURy88uCNK5FbpN+yk2nQY6BYh1GEt+wg== + +elliptic@^6.5.3: version "6.5.4" resolved "https://registry.npmmirror.com/elliptic/-/elliptic-6.5.4.tgz#da37cebd31e79a1367e941b592ed1fbebd58abbb" integrity sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ== @@ -14385,9 +17844,22 @@ elliptic@^6.5.3, elliptic@^6.5.4: minimalistic-assert "^1.0.1" minimalistic-crypto-utils "^1.0.1" +elliptic@^6.6.1: + version "6.6.1" + resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.6.1.tgz#3b8ffb02670bf69e382c7f65bf524c97c5405c06" + integrity sha512-RaddvvMatK2LJHqFJ+YA4WysVN5Ita9E35botqIYspQ4TkRAlCicdzKOjlyv/1Za5RyTNn7di//eEV0uTAfe3g== + dependencies: + bn.js "^4.11.9" + brorand "^1.1.0" + hash.js "^1.0.0" + hmac-drbg "^1.0.1" + inherits "^2.0.4" + minimalistic-assert "^1.0.1" + minimalistic-crypto-utils "^1.0.1" + emittery@^0.13.1: version "0.13.1" - resolved "https://registry.npmmirror.com/emittery/-/emittery-0.13.1.tgz#c04b8c3457490e0847ae51fced3af52d338e3dad" + resolved "https://registry.yarnpkg.com/emittery/-/emittery-0.13.1.tgz#c04b8c3457490e0847ae51fced3af52d338e3dad" integrity sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ== emoji-regex@^8.0.0: @@ -14400,6 +17872,11 @@ emoji-regex@^9.2.2: resolved "https://registry.npmmirror.com/emoji-regex/-/emoji-regex-9.2.2.tgz#840c8803b0d8047f4ff0cf963176b32d4ef3ed72" integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg== +emojilib@^2.4.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/emojilib/-/emojilib-2.4.0.tgz#ac518a8bb0d5f76dda57289ccb2fdf9d39ae721e" + integrity sha512-5U0rVMU5Y2n2+ykNLQqMoqklN9ICBT/KsvC1Gz6vqHbz2AXXGkG+Pm5rMWk/8Vjrr/mY9985Hi8DYzn1F09Nyw== + emojis-list@^3.0.0: version "3.0.0" resolved "https://registry.npmmirror.com/emojis-list/-/emojis-list-3.0.0.tgz#5570662046ad29e2e916e71aae260abdff4f6a78" @@ -14415,6 +17892,11 @@ encodeurl@^1.0.2, encodeurl@~1.0.2: resolved "https://registry.npmmirror.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" integrity sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w== +encodeurl@^2.0.0, encodeurl@~2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-2.0.0.tgz#7b8ea898077d7e409d3ac45474ea38eaf0857a58" + integrity sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg== + encoding@^0.1.13: version "0.1.13" resolved "https://registry.npmmirror.com/encoding/-/encoding-0.1.13.tgz#56574afdd791f54a8e9b2785c0582a2d26210fa9" @@ -14422,6 +17904,13 @@ encoding@^0.1.13: dependencies: iconv-lite "^0.6.2" +end-of-stream@^1.0.0: + version "1.4.5" + resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.5.tgz#7344d711dea40e0b74abc2ed49778743ccedb08c" + integrity sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg== + dependencies: + once "^1.4.0" + end-of-stream@^1.1.0, end-of-stream@^1.4.1: version "1.4.4" resolved "https://registry.npmmirror.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" @@ -14429,20 +17918,13 @@ end-of-stream@^1.1.0, end-of-stream@^1.4.1: dependencies: once "^1.4.0" -enhanced-resolve@^5.15.0: - version "5.15.0" - resolved "https://registry.npmmirror.com/enhanced-resolve/-/enhanced-resolve-5.15.0.tgz#1af946c7d93603eb88e9896cee4904dc012e9c35" - integrity sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg== +enhanced-resolve@^5.20.0: + version "5.21.0" + resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.21.0.tgz#bb8e6fabaf74930de70e61397798750429e5b1ae" + integrity sha512-otxSQPw4lkOZWkHpB3zaEQs6gWYEsmX4xQF68ElXC/TWvGxGMSGOvoNbaLXm6/cS/fSfHtsEdw90y20PCd+sCA== dependencies: graceful-fs "^4.2.4" - tapable "^2.2.0" - -enquirer@~2.3.6: - version "2.3.6" - resolved "https://registry.npmmirror.com/enquirer/-/enquirer-2.3.6.tgz#2a7fe5dd634a1e4125a975ec994ff5456dc3734d" - integrity sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg== - dependencies: - ansi-colors "^4.1.1" + tapable "^2.3.3" ent@^2.2.0: version "2.2.0" @@ -14459,20 +17941,25 @@ entities@^4.4.0: resolved "https://registry.npmmirror.com/entities/-/entities-4.5.0.tgz#5d268ea5e7113ec74c4d033b79ea5a35a488fb48" integrity sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw== -entities@~2.1.0: - version "2.1.0" - resolved "https://registry.npmmirror.com/entities/-/entities-2.1.0.tgz#992d3129cf7df6870b96c57858c249a120f8b8b5" - integrity sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w== +entities@^6.0.0: + version "6.0.1" + resolved "https://registry.yarnpkg.com/entities/-/entities-6.0.1.tgz#c28c34a43379ca7f61d074130b2f5f7020a30694" + integrity sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g== + +entities@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/entities/-/entities-8.0.0.tgz#c1df5fe3602429747fa233d0dd26f142f0ce4743" + integrity sha512-zwfzJecQ/Uej6tusMqwAqU/6KL2XaB2VZ2Jg54Je6ahNBGNH6Ek6g3jjNCF0fG9EWQKGZNddNjU5F1ZQn/sBnA== env-paths@^2.2.0: version "2.2.1" resolved "https://registry.npmmirror.com/env-paths/-/env-paths-2.2.1.tgz#420399d416ce1fbe9bc0a07c62fa68d67fd0f8f2" integrity sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A== -envinfo@7.8.1: - version "7.8.1" - resolved "https://registry.npmmirror.com/envinfo/-/envinfo-7.8.1.tgz#06377e3e5f4d379fea7ac592d5ad8927e0c4d475" - integrity sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw== +environment@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/environment/-/environment-1.1.0.tgz#8e86c66b180f363c7ab311787e0259665f45a9f1" + integrity sha512-xUtoPkMggbz0MPyPiIWr1Kp4aeWJjDZ6SMvURhimjdZgsRuDplF5/s9hcgGhyXMhs+6vpnuoiZ2kFiu3FMnS8Q== err-code@^2.0.2: version "2.0.3" @@ -14486,18 +17973,73 @@ error-ex@^1.3.1: dependencies: is-arrayish "^0.2.1" -error-inject@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/error-inject/-/error-inject-1.0.0.tgz#e2b3d91b54aed672f309d950d154850fa11d4f37" - integrity sha512-JM8N6PytDbmIYm1IhPWlo8vr3NtfjhDY/1MhD/a5b/aad/USE8a0+NsqE9d5n+GVGmuNkPQWm4bFQWv18d8tMg== - -error-stack-parser@^2.0.6: +error-stack-parser@^2.0.6, error-stack-parser@^2.1.4: version "2.1.4" resolved "https://registry.npmmirror.com/error-stack-parser/-/error-stack-parser-2.1.4.tgz#229cb01cdbfa84440bfa91876285b94680188286" integrity sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ== dependencies: stackframe "^1.3.4" +es-abstract@^1.17.5, es-abstract@^1.23.2, es-abstract@^1.23.3, es-abstract@^1.23.5, es-abstract@^1.23.6, es-abstract@^1.23.9, es-abstract@^1.24.0, es-abstract@^1.24.2: + version "1.24.2" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.24.2.tgz#2dbd38c180735ee983f77585140a2706a963ed9a" + integrity sha512-2FpH9Q5i2RRwyEP1AylXe6nYLR5OhaJTZwmlcP0dL/+JCbgg7yyEo/sEK6HeGZRf3dFpWwThaRHVApXSkW3xeg== + dependencies: + array-buffer-byte-length "^1.0.2" + arraybuffer.prototype.slice "^1.0.4" + available-typed-arrays "^1.0.7" + call-bind "^1.0.8" + call-bound "^1.0.4" + data-view-buffer "^1.0.2" + data-view-byte-length "^1.0.2" + data-view-byte-offset "^1.0.1" + es-define-property "^1.0.1" + es-errors "^1.3.0" + es-object-atoms "^1.1.1" + es-set-tostringtag "^2.1.0" + es-to-primitive "^1.3.0" + function.prototype.name "^1.1.8" + get-intrinsic "^1.3.0" + get-proto "^1.0.1" + get-symbol-description "^1.1.0" + globalthis "^1.0.4" + gopd "^1.2.0" + has-property-descriptors "^1.0.2" + has-proto "^1.2.0" + has-symbols "^1.1.0" + hasown "^2.0.2" + internal-slot "^1.1.0" + is-array-buffer "^3.0.5" + is-callable "^1.2.7" + is-data-view "^1.0.2" + is-negative-zero "^2.0.3" + is-regex "^1.2.1" + is-set "^2.0.3" + is-shared-array-buffer "^1.0.4" + is-string "^1.1.1" + is-typed-array "^1.1.15" + is-weakref "^1.1.1" + math-intrinsics "^1.1.0" + object-inspect "^1.13.4" + object-keys "^1.1.1" + object.assign "^4.1.7" + own-keys "^1.0.1" + regexp.prototype.flags "^1.5.4" + safe-array-concat "^1.1.3" + safe-push-apply "^1.0.0" + safe-regex-test "^1.1.0" + set-proto "^1.0.0" + stop-iteration-iterator "^1.1.0" + string.prototype.trim "^1.2.10" + string.prototype.trimend "^1.0.9" + string.prototype.trimstart "^1.0.8" + typed-array-buffer "^1.0.3" + typed-array-byte-length "^1.0.3" + typed-array-byte-offset "^1.0.4" + typed-array-length "^1.0.7" + unbox-primitive "^1.1.0" + which-typed-array "^1.1.19" + es-abstract@^1.22.1: version "1.22.3" resolved "https://registry.npmmirror.com/es-abstract/-/es-abstract-1.22.3.tgz#48e79f5573198de6dee3589195727f4f74bc4f32" @@ -14564,6 +18106,11 @@ es-define-property@^1.0.0: dependencies: get-intrinsic "^1.2.4" +es-define-property@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/es-define-property/-/es-define-property-1.0.1.tgz#983eb2f9a6724e9303f61addf011c72e09e0b0fa" + integrity sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g== + es-errors@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/es-errors/-/es-errors-1.3.0.tgz#05f75a25dab98e4fb1dcd5e1472c0546d5057c8f" @@ -14584,36 +18131,45 @@ es-get-iterator@^1.1.3: isarray "^2.0.5" stop-iteration-iterator "^1.0.0" -es-iterator-helpers@^1.0.12, es-iterator-helpers@^1.0.15: - version "1.0.15" - resolved "https://registry.npmmirror.com/es-iterator-helpers/-/es-iterator-helpers-1.0.15.tgz#bd81d275ac766431d19305923707c3efd9f1ae40" - integrity sha512-GhoY8uYqd6iwUl2kgjTm4CZAf6oo5mHK7BPqx3rKgx893YSsy0LGHV6gfqqQvZt/8xM8xeOnfXBCfqclMKkJ5g== +es-iterator-helpers@^1.2.1: + version "1.3.2" + resolved "https://registry.yarnpkg.com/es-iterator-helpers/-/es-iterator-helpers-1.3.2.tgz#8f4ff1f3603cbd09fbdb72c747a679779a65cc7f" + integrity sha512-HVLACW1TppGYjJ8H6/jqH/pqOtKRw6wMlrB23xfExmFWxFquAIWCmwoLsOyN96K4a5KbmOf5At9ZUO3GZbetAw== dependencies: - asynciterator.prototype "^1.0.0" - call-bind "^1.0.2" + call-bind "^1.0.9" + call-bound "^1.0.4" define-properties "^1.2.1" - es-abstract "^1.22.1" - es-set-tostringtag "^2.0.1" - function-bind "^1.1.1" - get-intrinsic "^1.2.1" - globalthis "^1.0.3" - has-property-descriptors "^1.0.0" - has-proto "^1.0.1" - has-symbols "^1.0.3" - internal-slot "^1.0.5" - iterator.prototype "^1.1.2" - safe-array-concat "^1.0.1" - -es-module-lexer@^1.2.1: - version "1.4.1" - resolved "https://registry.npmmirror.com/es-module-lexer/-/es-module-lexer-1.4.1.tgz#41ea21b43908fe6a287ffcbe4300f790555331f5" - integrity sha512-cXLGjP0c4T3flZJKQSuziYoq7MlT+rnvfZjfp7h+I7K9BNX54kP9nyWvdbwjQ4u1iWbOL4u96fgeZLToQlZC7w== + es-abstract "^1.24.2" + es-errors "^1.3.0" + es-set-tostringtag "^2.1.0" + function-bind "^1.1.2" + get-intrinsic "^1.3.0" + globalthis "^1.0.4" + gopd "^1.2.0" + has-property-descriptors "^1.0.2" + has-proto "^1.2.0" + has-symbols "^1.1.0" + internal-slot "^1.1.0" + iterator.prototype "^1.1.5" + math-intrinsics "^1.1.0" es-module-lexer@^1.3.1: version "1.5.3" resolved "https://registry.npmmirror.com/es-module-lexer/-/es-module-lexer-1.5.3.tgz#25969419de9c0b1fbe54279789023e8a9a788412" integrity sha512-i1gCgmR9dCl6Vil6UKPI/trA69s08g/syhiDK9TG0Nf1RJjjFI+AzoWW7sPufzkgYAn861skuCwJa0pIIHYxvg== +es-module-lexer@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-2.0.0.tgz#f657cd7a9448dcdda9c070a3cb75e5dc1e85f5b1" + integrity sha512-5POEcUuZybH7IdmGsD8wlf0AI55wMecM9rVBTI/qEAy2c1kTOm3DjFYjrBdI2K3BaJjJYfYFeRtM0t9ssnRuxw== + +es-object-atoms@^1.0.0, es-object-atoms@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/es-object-atoms/-/es-object-atoms-1.1.1.tgz#1c4f2c4837327597ce69d2ca190a7fdd172338c1" + integrity sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA== + dependencies: + es-errors "^1.3.0" + es-set-tostringtag@^2.0.1: version "2.0.2" resolved "https://registry.npmmirror.com/es-set-tostringtag/-/es-set-tostringtag-2.0.2.tgz#11f7cc9f63376930a5f20be4915834f4bc74f9c9" @@ -14623,6 +18179,16 @@ es-set-tostringtag@^2.0.1: has-tostringtag "^1.0.0" hasown "^2.0.0" +es-set-tostringtag@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz#f31dbbe0c183b00a6d26eb6325c810c0fd18bd4d" + integrity sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA== + dependencies: + es-errors "^1.3.0" + get-intrinsic "^1.2.6" + has-tostringtag "^1.0.2" + hasown "^2.0.2" + es-shim-unscopables@^1.0.0: version "1.0.2" resolved "https://registry.npmmirror.com/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz#1f6942e71ecc7835ed1c8a83006d8771a63a3763" @@ -14630,6 +18196,13 @@ es-shim-unscopables@^1.0.0: dependencies: hasown "^2.0.0" +es-shim-unscopables@^1.0.2, es-shim-unscopables@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/es-shim-unscopables/-/es-shim-unscopables-1.1.0.tgz#438df35520dac5d105f3943d927549ea3b00f4b5" + integrity sha512-d9T8ucsEhh8Bi1woXCf+TIKDIROLG5WCkxg8geBCbvk22kzwC5G2OnXVMO6FUsvQlgUUXQ2itephWDLqDzbeCw== + dependencies: + hasown "^2.0.2" + es-to-primitive@^1.2.1: version "1.2.1" resolved "https://registry.npmmirror.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" @@ -14639,6 +18212,15 @@ es-to-primitive@^1.2.1: is-date-object "^1.0.1" is-symbol "^1.0.2" +es-to-primitive@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.3.0.tgz#96c89c82cc49fd8794a24835ba3e1ff87f214e18" + integrity sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g== + dependencies: + is-callable "^1.2.7" + is-date-object "^1.0.5" + is-symbol "^1.0.4" + es6-error@^4.1.1: version "4.1.1" resolved "https://registry.npmmirror.com/es6-error/-/es6-error-4.1.1.tgz#9e3af407459deed47e9a91f9b885a84eb05c561d" @@ -14683,40 +18265,80 @@ esbuild@^0.20.0: "@esbuild/win32-ia32" "0.20.2" "@esbuild/win32-x64" "0.20.2" -esbuild@^0.21.0: - version "0.21.5" - resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.21.5.tgz#9ca301b120922959b766360d8ac830da0d02997d" - integrity sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw== +esbuild@^0.25.0: + version "0.25.12" + resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.25.12.tgz#97a1d041f4ab00c2fce2f838d2b9969a2d2a97a5" + integrity sha512-bbPBYYrtZbkt6Os6FiTLCTFxvq4tt3JKall1vRwshA3fdVztsLAatFaZobhkBC8/BrPetoa0oksYoKXoG4ryJg== optionalDependencies: - "@esbuild/aix-ppc64" "0.21.5" - "@esbuild/android-arm" "0.21.5" - "@esbuild/android-arm64" "0.21.5" - "@esbuild/android-x64" "0.21.5" - "@esbuild/darwin-arm64" "0.21.5" - "@esbuild/darwin-x64" "0.21.5" - "@esbuild/freebsd-arm64" "0.21.5" - "@esbuild/freebsd-x64" "0.21.5" - "@esbuild/linux-arm" "0.21.5" - "@esbuild/linux-arm64" "0.21.5" - "@esbuild/linux-ia32" "0.21.5" - "@esbuild/linux-loong64" "0.21.5" - "@esbuild/linux-mips64el" "0.21.5" - "@esbuild/linux-ppc64" "0.21.5" - "@esbuild/linux-riscv64" "0.21.5" - "@esbuild/linux-s390x" "0.21.5" - "@esbuild/linux-x64" "0.21.5" - "@esbuild/netbsd-x64" "0.21.5" - "@esbuild/openbsd-x64" "0.21.5" - "@esbuild/sunos-x64" "0.21.5" - "@esbuild/win32-arm64" "0.21.5" - "@esbuild/win32-ia32" "0.21.5" - "@esbuild/win32-x64" "0.21.5" + "@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" + +esbuild@^0.27.0: + version "0.27.7" + resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.27.7.tgz#bcadce22b2f3fd76f257e3a64f83a64986fea11f" + integrity sha512-IxpibTjyVnmrIQo5aqNpCgoACA/dTKLTlhMHihVHhdkxKyPO1uBBthumT0rdHmcsk9uMonIWS0m4FljWzILh3w== + optionalDependencies: + "@esbuild/aix-ppc64" "0.27.7" + "@esbuild/android-arm" "0.27.7" + "@esbuild/android-arm64" "0.27.7" + "@esbuild/android-x64" "0.27.7" + "@esbuild/darwin-arm64" "0.27.7" + "@esbuild/darwin-x64" "0.27.7" + "@esbuild/freebsd-arm64" "0.27.7" + "@esbuild/freebsd-x64" "0.27.7" + "@esbuild/linux-arm" "0.27.7" + "@esbuild/linux-arm64" "0.27.7" + "@esbuild/linux-ia32" "0.27.7" + "@esbuild/linux-loong64" "0.27.7" + "@esbuild/linux-mips64el" "0.27.7" + "@esbuild/linux-ppc64" "0.27.7" + "@esbuild/linux-riscv64" "0.27.7" + "@esbuild/linux-s390x" "0.27.7" + "@esbuild/linux-x64" "0.27.7" + "@esbuild/netbsd-arm64" "0.27.7" + "@esbuild/netbsd-x64" "0.27.7" + "@esbuild/openbsd-arm64" "0.27.7" + "@esbuild/openbsd-x64" "0.27.7" + "@esbuild/openharmony-arm64" "0.27.7" + "@esbuild/sunos-x64" "0.27.7" + "@esbuild/win32-arm64" "0.27.7" + "@esbuild/win32-ia32" "0.27.7" + "@esbuild/win32-x64" "0.27.7" escalade@^3.1.1: version "3.1.1" resolved "https://registry.npmmirror.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== +escalade@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.2.0.tgz#011a3f69856ba189dffa7dc8fcce99d2a87903e5" + integrity sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA== + escape-html@^1.0.3, escape-html@~1.0.3: version "1.0.3" resolved "https://registry.npmmirror.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" @@ -14754,9 +18376,9 @@ escodegen@^1.8.1: optionalDependencies: source-map "~0.6.1" -escodegen@^2.0.0: +escodegen@^2.0.0, escodegen@^2.1.0: version "2.1.0" - resolved "https://registry.npmmirror.com/escodegen/-/escodegen-2.1.0.tgz#ba93bbb7a43986d29d6041f99f5262da773e2e17" + resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-2.1.0.tgz#ba93bbb7a43986d29d6041f99f5262da773e2e17" integrity sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w== dependencies: esprima "^4.0.1" @@ -14790,114 +18412,121 @@ eslint-import-resolver-node@^0.3.9: is-core-module "^2.13.0" resolve "^1.22.4" -eslint-module-utils@^2.8.0: - version "2.8.0" - resolved "https://registry.npmmirror.com/eslint-module-utils/-/eslint-module-utils-2.8.0.tgz#e439fee65fc33f6bba630ff621efc38ec0375c49" - integrity sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw== +eslint-module-utils@^2.12.1: + version "2.12.1" + resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.12.1.tgz#f76d3220bfb83c057651359295ab5854eaad75ff" + integrity sha512-L8jSWTze7K2mTg0vos/RuLRS5soomksDPoJLXIslC7c8Wmut3bx7CPpJijDcBZtxQ5lrbUdM+s0OlNbz0DCDNw== dependencies: debug "^3.2.7" -eslint-plugin-deprecation@^2.0.0: - version "2.0.0" - resolved "https://registry.npmmirror.com/eslint-plugin-deprecation/-/eslint-plugin-deprecation-2.0.0.tgz#9804707a4c19f3a53615c6babc0ced3d429d69cf" - integrity sha512-OAm9Ohzbj11/ZFyICyR5N6LbOIvQMp7ZU2zI7Ej0jIc8kiGUERXPNMfw2QqqHD1ZHtjMub3yPZILovYEYucgoQ== +eslint-plugin-deprecation@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-deprecation/-/eslint-plugin-deprecation-3.0.0.tgz#c0b6bce543c2a01f231d39a1c54fdfebf3560d48" + integrity sha512-JuVLdNg/uf0Adjg2tpTyYoYaMbwQNn/c78P1HcccokvhtRphgnRjZDKmhlxbxYptppex03zO76f97DD/yQHv7A== dependencies: - "@typescript-eslint/utils" "^6.0.0" + "@typescript-eslint/utils" "^7.0.0" + ts-api-utils "^1.3.0" tslib "^2.3.1" - tsutils "^3.21.0" -eslint-plugin-import@^2.25.4: - version "2.29.1" - resolved "https://registry.npmmirror.com/eslint-plugin-import/-/eslint-plugin-import-2.29.1.tgz#d45b37b5ef5901d639c15270d74d46d161150643" - integrity sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw== +eslint-plugin-import@^2.31.0: + version "2.32.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.32.0.tgz#602b55faa6e4caeaa5e970c198b5c00a37708980" + integrity sha512-whOE1HFo/qJDyX4SnXzP4N6zOWn79WhnCUY/iDR0mPfQZO8wcYE4JClzI2oZrhBnnMUCBCHZhO6VQyoBU95mZA== dependencies: - array-includes "^3.1.7" - array.prototype.findlastindex "^1.2.3" - array.prototype.flat "^1.3.2" - array.prototype.flatmap "^1.3.2" + "@rtsao/scc" "^1.1.0" + array-includes "^3.1.9" + array.prototype.findlastindex "^1.2.6" + array.prototype.flat "^1.3.3" + array.prototype.flatmap "^1.3.3" debug "^3.2.7" doctrine "^2.1.0" eslint-import-resolver-node "^0.3.9" - eslint-module-utils "^2.8.0" - hasown "^2.0.0" - is-core-module "^2.13.1" + eslint-module-utils "^2.12.1" + hasown "^2.0.2" + is-core-module "^2.16.1" is-glob "^4.0.3" minimatch "^3.1.2" - object.fromentries "^2.0.7" - object.groupby "^1.0.1" - object.values "^1.1.7" + object.fromentries "^2.0.8" + object.groupby "^1.0.3" + object.values "^1.2.1" semver "^6.3.1" + string.prototype.trimend "^1.0.9" tsconfig-paths "^3.15.0" -eslint-plugin-jest@^27.0.0: - version "27.6.3" - resolved "https://registry.npmmirror.com/eslint-plugin-jest/-/eslint-plugin-jest-27.6.3.tgz#8acb8b1e45597fe1f4d4cf25163d90119efc12be" - integrity sha512-+YsJFVH6R+tOiO3gCJon5oqn4KWc+mDq2leudk8mrp8RFubLOo9CVyi3cib4L7XMpxExmkmBZQTPDYVBzgpgOA== +eslint-plugin-jest@^28.9.0: + version "28.14.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-jest/-/eslint-plugin-jest-28.14.0.tgz#02da77dc27d7b4c5480df3552ea26de056857b36" + integrity sha512-P9s/qXSMTpRTerE2FQ0qJet2gKbcGyFTPAJipoKxmWqR6uuFqIqk8FuEfg5yBieOezVrEfAMZrEwJ6yEp+1MFQ== dependencies: - "@typescript-eslint/utils" "^5.10.0" + "@typescript-eslint/utils" "^6.0.0 || ^7.0.0 || ^8.0.0" -eslint-plugin-jsx-a11y@^6.5.1: - version "6.8.0" - resolved "https://registry.npmmirror.com/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.8.0.tgz#2fa9c701d44fcd722b7c771ec322432857fcbad2" - integrity sha512-Hdh937BS3KdwwbBaKd5+PLCOmYY6U4f2h9Z2ktwtNKvIdIEu137rjYbcb9ApSbVJfWxANNuiKTD/9tOKjK9qOA== +eslint-plugin-jsx-a11y@^6.10.2: + version "6.10.2" + resolved "https://registry.yarnpkg.com/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.10.2.tgz#d2812bb23bf1ab4665f1718ea442e8372e638483" + integrity sha512-scB3nz4WmG75pV8+3eRUQOHZlNSUhFNq37xnpgRkCCELU3XMvXAxLk1eqWWyE22Ki4Q01Fnsw9BA3cJHDPgn2Q== dependencies: - "@babel/runtime" "^7.23.2" - aria-query "^5.3.0" - array-includes "^3.1.7" + aria-query "^5.3.2" + array-includes "^3.1.8" array.prototype.flatmap "^1.3.2" ast-types-flow "^0.0.8" - axe-core "=4.7.0" - axobject-query "^3.2.1" + axe-core "^4.10.0" + axobject-query "^4.1.0" damerau-levenshtein "^1.0.8" emoji-regex "^9.2.2" - es-iterator-helpers "^1.0.15" - hasown "^2.0.0" + hasown "^2.0.2" jsx-ast-utils "^3.3.5" language-tags "^1.0.9" minimatch "^3.1.2" - object.entries "^1.1.7" - object.fromentries "^2.0.7" - -eslint-plugin-react-hooks@^4.3.0: - version "4.6.0" - resolved "https://registry.npmmirror.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.0.tgz#4c3e697ad95b77e93f8646aaa1630c1ba607edd3" - integrity sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g== + object.fromentries "^2.0.8" + safe-regex-test "^1.0.3" + string.prototype.includes "^2.0.1" -eslint-plugin-react@^7.28.0: - version "7.33.2" - resolved "https://registry.npmmirror.com/eslint-plugin-react/-/eslint-plugin-react-7.33.2.tgz#69ee09443ffc583927eafe86ffebb470ee737608" - integrity sha512-73QQMKALArI8/7xGLNI/3LylrEYrlKZSb5C9+q3OtOewTnMQi5cT+aE9E41sLCmli3I9PGGmD1yiZydyo4FEPw== - dependencies: - array-includes "^3.1.6" - array.prototype.flatmap "^1.3.1" - array.prototype.tosorted "^1.1.1" +eslint-plugin-react-hooks@^5.0.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-5.2.0.tgz#1be0080901e6ac31ce7971beed3d3ec0a423d9e3" + integrity sha512-+f15FfK64YQwZdJNELETdn5ibXEUQmW1DZL6KXhNnc2heoy/sg9VJJeT7n8TlMWouzWqSWavFkIhHyIbIAEapg== + +eslint-plugin-react@^7.37.2: + version "7.37.5" + resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.37.5.tgz#2975511472bdda1b272b34d779335c9b0e877065" + integrity sha512-Qteup0SqU15kdocexFNAJMvCJEfa2xUKNV4CC1xsVMrIIqEy3SQ/rqyxCWNzfrd3/ldy6HMlD2e0JDVpDg2qIA== + dependencies: + array-includes "^3.1.8" + array.prototype.findlast "^1.2.5" + array.prototype.flatmap "^1.3.3" + array.prototype.tosorted "^1.1.4" doctrine "^2.1.0" - es-iterator-helpers "^1.0.12" + es-iterator-helpers "^1.2.1" estraverse "^5.3.0" + hasown "^2.0.2" jsx-ast-utils "^2.4.1 || ^3.0.0" minimatch "^3.1.2" - object.entries "^1.1.6" - object.fromentries "^2.0.6" - object.hasown "^1.1.2" - object.values "^1.1.6" + object.entries "^1.1.9" + object.fromentries "^2.0.8" + object.values "^1.2.1" prop-types "^15.8.1" - resolve "^2.0.0-next.4" + resolve "^2.0.0-next.5" semver "^6.3.1" - string.prototype.matchall "^4.0.8" + string.prototype.matchall "^4.0.12" + string.prototype.repeat "^1.0.0" -eslint-plugin-unused-imports@^3.0.0: - version "3.0.0" - resolved "https://registry.npmmirror.com/eslint-plugin-unused-imports/-/eslint-plugin-unused-imports-3.0.0.tgz#d25175b0072ff16a91892c3aa72a09ca3a9e69e7" - integrity sha512-sduiswLJfZHeeBJ+MQaG+xYzSWdRXoSw61DpU13mzWumCkR0ufD0HmO4kdNokjrkluMHpj/7PJeN35pgbhW3kw== - dependencies: - eslint-rule-composer "^0.3.0" +eslint-plugin-unused-imports@^4.1.4: + version "4.4.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-unused-imports/-/eslint-plugin-unused-imports-4.4.1.tgz#a831f0a2937d7631eba30cb87091ab7d3a5da0e1" + integrity sha512-oZGYUz1X3sRMGUB+0cZyK2VcvRX5lm/vB56PgNNcU+7ficUCKm66oZWKUubXWnOuPjQ8PvmXtCViXBMONPe7tQ== -eslint-rule-composer@^0.3.0: - version "0.3.0" - resolved "https://registry.npmmirror.com/eslint-rule-composer/-/eslint-rule-composer-0.3.0.tgz#79320c927b0c5c0d3d3d2b76c8b4a488f25bbaf9" - integrity sha512-bt+Sh8CtDmn2OajxvNO+BX7Wn4CIWMpTRm3MaiKPCQcnnlm0CS2mhui6QaoeQugs+3Kj2ESKEEGJUdVafwhiCg== +eslint-rspack-plugin@^4.2.1: + version "4.4.1" + resolved "https://registry.yarnpkg.com/eslint-rspack-plugin/-/eslint-rspack-plugin-4.4.1.tgz#74a8ae21990598592cbf83df61988c860d146a5c" + integrity sha512-Z/aVtYhXG4Ln5OGoUdYi4c3CrRibnVBsGvwKjuASNjTPfdOU21KRR2zec5RY6HCBNOUVx5jG5b93RH5sBPEVYQ== + dependencies: + "@types/eslint" "^8.56.10" + jest-worker "^29.7.0" + micromatch "^4.0.8" + normalize-path "^3.0.0" + tinyglobby "^0.2.15" -eslint-scope@5.1.1, eslint-scope@^5.1.1: +eslint-scope@5.1.1: version "5.1.1" resolved "https://registry.npmmirror.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== @@ -14918,9 +18547,14 @@ eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.1, eslint-visitor-keys@^3.4 resolved "https://registry.npmmirror.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz#0cd72fe8550e3c2eae156a96a4dddcd1c8ac5800" integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag== -eslint-webpack-plugin@^4.0.0: +eslint-visitor-keys@^5.0.0: + version "5.0.1" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-5.0.1.tgz#9e3c9489697824d2d4ce3a8ad12628f91e9f59be" + integrity sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA== + +eslint-webpack-plugin@^4.2.0: version "4.2.0" - resolved "https://registry.npmmirror.com/eslint-webpack-plugin/-/eslint-webpack-plugin-4.2.0.tgz#41f54b25379908eb9eca8645bc997c90cfdbd34e" + resolved "https://registry.yarnpkg.com/eslint-webpack-plugin/-/eslint-webpack-plugin-4.2.0.tgz#41f54b25379908eb9eca8645bc997c90cfdbd34e" integrity sha512-rsfpFQ01AWQbqtjgPRr2usVRxhWDuG0YDYcG8DJOteD3EFnpeuYuOwk0PQiN7PRBTqS6ElNdtPZPggj8If9WnA== dependencies: "@types/eslint" "^8.56.10" @@ -15026,7 +18660,7 @@ estree-walker@^0.6.1: resolved "https://registry.npmmirror.com/estree-walker/-/estree-walker-0.6.1.tgz#53049143f40c6eb918b23671d1fe3219f3a1b362" integrity sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w== -estree-walker@^2.0.1, estree-walker@^2.0.2: +estree-walker@^2.0.2: version "2.0.2" resolved "https://registry.npmmirror.com/estree-walker/-/estree-walker-2.0.2.tgz#52f010178c2a4c117a7757cfe942adb7d2da4cac" integrity sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w== @@ -15046,11 +18680,23 @@ event-target-shim@^5.0.0: resolved "https://registry.npmmirror.com/event-target-shim/-/event-target-shim-5.0.1.tgz#5d4d3ebdf9583d63a5333ce2deb7480ab2b05789" integrity sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ== +eventemitter3@^3.1.0: + version "3.1.2" + resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-3.1.2.tgz#2d3d48f9c346698fce83a85d7d664e98535df6e7" + integrity sha512-tvtQIeLVHjDkJYnzf2dgVMxfuSGJeM/7UCG17TT4EumTfNtF+0nebF/4zWOIkCreAbtNqhGEboB6BWrwqNaw4Q== + eventemitter3@^4.0.0, eventemitter3@^4.0.4: version "4.0.7" resolved "https://registry.npmmirror.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f" integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw== +events-universal@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/events-universal/-/events-universal-1.0.1.tgz#b56a84fd611b6610e0a2d0f09f80fdf931e2dfe6" + integrity sha512-LUd5euvbMLpwOF8m6ivPCbhQeSiYVNb8Vs0fQ8QjXo0JTkEHpz8pxdQf0gStltaPpw0Cca8b39KxvK9cfKRiAw== + dependencies: + bare-events "^2.7.0" + events@3.3.0, events@^3.0.0, events@^3.2.0, events@^3.3.0: version "3.3.0" resolved "https://registry.npmmirror.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400" @@ -15064,21 +18710,6 @@ evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: md5.js "^1.3.4" safe-buffer "^5.1.1" -execa@5.0.0: - version "5.0.0" - resolved "https://registry.npmmirror.com/execa/-/execa-5.0.0.tgz#4029b0007998a841fbd1032e5f4de86a3c1e3376" - integrity sha512-ov6w/2LCiuyO4RLYGdpFGjkcs0wMTgGE8PrkTHikeUy5iJekXyPIKUjifk5CsE0pt7sMCrMZ3YNqoCj6idQOnQ== - 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" - execa@^5.0.0: version "5.1.1" resolved "https://registry.npmmirror.com/execa/-/execa-5.1.1.tgz#f80ad9cbf4298f7bd1d4c9555c21e93741c411dd" @@ -15096,7 +18727,7 @@ execa@^5.0.0: exit@^0.1.2: version "0.1.2" - resolved "https://registry.npmmirror.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" + resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" integrity sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ== expand-template@^2.0.3: @@ -15122,40 +18753,37 @@ expect@^29.0.0, expect@^29.7.0: jest-message-util "^29.7.0" jest-util "^29.7.0" -expiry-map@^2.0.0: - version "2.0.0" - resolved "https://registry.npmmirror.com/expiry-map/-/expiry-map-2.0.0.tgz#b441ee8e8865291ad9a542783076d33bae0f3582" - integrity sha512-K1I5wJe2fiqjyUZf/xhxwTpaopw3F+19DsO7Oggl20+3SVTXDIevVRJav0aBMfposQdkl2E4+gnuOKd3j2X0sA== - dependencies: - map-age-cleaner "^0.2.0" - exponential-backoff@^3.1.1: version "3.1.1" resolved "https://registry.npmmirror.com/exponential-backoff/-/exponential-backoff-3.1.1.tgz#64ac7526fe341ab18a39016cd22c787d01e00bf6" integrity sha512-dX7e/LHVJ6W3DE1MHWi9S1EYzDESENfLrYohG2G++ovZrYOkm4Knwa0mc1cn84xJOR4KEU0WSchhLbd0UklbHw== -express-openapi-validator@^5.0.4: - version "5.1.3" - resolved "https://registry.npmmirror.com/express-openapi-validator/-/express-openapi-validator-5.1.3.tgz#6dd370eb9d9dd98d6cca6711d768d7a99906f5c7" - integrity sha512-P0l04TtcVn9z74QhRPVn2vTazVBu9vKYbxJPVcmcX4IVNcHh1afLK1vAEd/GMeoB7I7ixUjWSk5Sy3gerYHBwQ== +expr-eval-fork@^3.0.1: + version "3.0.3" + resolved "https://registry.yarnpkg.com/expr-eval-fork/-/expr-eval-fork-3.0.3.tgz#82a3291db3835af9dfe05f519e4901f2b72219fb" + integrity sha512-BhC+hbc5lIVjygr840n5DEkW3MQq7H9o+mc1/N7Z5uIiCFVyESLL5DIE7LNq4CYUNxy+XjA+3jRrL/h0Kt2xcg== + +express-openapi-validator@^5.5.8: + version "5.6.2" + resolved "https://registry.yarnpkg.com/express-openapi-validator/-/express-openapi-validator-5.6.2.tgz#df1511a8023baa04559c1fdb6e75224bac6ea067" + integrity sha512-fkDn4+ImUC4HTJ1g0cek/ItqYhmEO19AglJd2Iw2OJco0jLIbxIlDGVazmXbvvYeziU4Bnah2h+S2tb6NtWg8w== dependencies: - "@apidevtools/json-schema-ref-parser" "^9.1.2" - "@types/multer" "^1.4.7" - ajv "^8.11.2" + "@apidevtools/json-schema-ref-parser" "^14.2.1" + "@types/multer" "^2.0.0" + ajv "^8.17.1" ajv-draft-04 "^1.0.0" - ajv-formats "^2.1.1" + ajv-formats "^3.0.1" content-type "^1.0.5" json-schema-traverse "^1.0.0" lodash.clonedeep "^4.5.0" lodash.get "^4.4.2" - lodash.uniq "^4.5.0" - lodash.zipobject "^4.1.3" media-typer "^1.1.0" - multer "^1.4.5-lts.1" + multer "^2.0.2" ono "^7.1.3" - path-to-regexp "^6.2.0" + path-to-regexp "^8.3.0" + qs "^6.14.1" -express-promise-router@^4.1.0: +express-promise-router@^4.1.0, express-promise-router@^4.1.1: version "4.1.1" resolved "https://registry.npmmirror.com/express-promise-router/-/express-promise-router-4.1.1.tgz#8fac102060b9bcc868f84d34fbb12fd8fa494291" integrity sha512-Lkvcy/ZGrBhzkl3y7uYBHLMtLI4D6XQ2kiFg9dq7fbktBch5gjqJ0+KovX0cvCAvTJw92raWunRLM/OM+5l4fA== @@ -15164,6 +18792,18 @@ express-promise-router@^4.1.0: lodash.flattendeep "^4.0.0" methods "^1.0.0" +express-rate-limit@^7.5.0: + version "7.5.1" + resolved "https://registry.yarnpkg.com/express-rate-limit/-/express-rate-limit-7.5.1.tgz#8c3a42f69209a3a1c969890070ece9e20a879dec" + integrity sha512-7iN8iPMDzOMHPUYllBEsQdWVB6fPDMPqwjBaFrgr4Jgr/+okjvzAy+UHlYYL/Vs0OsOrMkwS6PJDkFlJwoxUnw== + +express-rate-limit@^8.2.2: + version "8.4.0" + resolved "https://registry.yarnpkg.com/express-rate-limit/-/express-rate-limit-8.4.0.tgz#70b0c4bc546370d3801beb62191ab0f8019d63e0" + integrity sha512-gDK8yiqKxrGta+3WtON59arrrw6GLmadA1qoFgYXzdcch8fmKDID2XqO8itsi3f1wufXYPT51387dN6cvVBS3Q== + dependencies: + ip-address "10.1.0" + express-session@^1.17.1: version "1.18.0" resolved "https://registry.npmmirror.com/express-session/-/express-session-1.18.0.tgz#a6ae39d9091f2efba5f20fc5c65a3ce7c9ce16a3" @@ -15178,54 +18818,54 @@ express-session@^1.17.1: safe-buffer "5.2.1" uid-safe "~2.1.5" -express@^4.17.1, express@^4.17.3, express@^4.18.2: - version "4.18.2" - resolved "https://registry.npmmirror.com/express/-/express-4.18.2.tgz#3fabe08296e930c796c19e3c516979386ba9fd59" - integrity sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ== +express@^4.14.0, express@^4.22.0, express@^4.22.1: + version "4.22.1" + resolved "https://registry.yarnpkg.com/express/-/express-4.22.1.tgz#1de23a09745a4fffdb39247b344bb5eaff382069" + integrity sha512-F2X8g9P1X7uCPZMA3MVf9wcTqlyNp7IhH5qPCI0izhaOIYXaW9L535tGA3qmjRzpH+bZczqq7hVKxTR4NWnu+g== dependencies: accepts "~1.3.8" array-flatten "1.1.1" - body-parser "1.20.1" - content-disposition "0.5.4" + body-parser "~1.20.3" + content-disposition "~0.5.4" content-type "~1.0.4" - cookie "0.5.0" - cookie-signature "1.0.6" + cookie "~0.7.1" + cookie-signature "~1.0.6" debug "2.6.9" depd "2.0.0" - encodeurl "~1.0.2" + encodeurl "~2.0.0" escape-html "~1.0.3" etag "~1.8.1" - finalhandler "1.2.0" - fresh "0.5.2" - http-errors "2.0.0" - merge-descriptors "1.0.1" + finalhandler "~1.3.1" + fresh "~0.5.2" + http-errors "~2.0.0" + merge-descriptors "1.0.3" methods "~1.1.2" - on-finished "2.4.1" + on-finished "~2.4.1" parseurl "~1.3.3" - path-to-regexp "0.1.7" + path-to-regexp "~0.1.12" proxy-addr "~2.0.7" - qs "6.11.0" + qs "~6.14.0" range-parser "~1.2.1" safe-buffer "5.2.1" - send "0.18.0" - serve-static "1.15.0" + send "~0.19.0" + serve-static "~1.16.2" setprototypeof "1.2.0" - statuses "2.0.1" + statuses "~2.0.1" type-is "~1.6.18" utils-merge "1.0.1" vary "~1.1.2" -express@^4.19.2: - version "4.19.2" - resolved "https://registry.npmmirror.com/express/-/express-4.19.2.tgz#e25437827a3aa7f2a827bc8171bbbb664a356465" - integrity sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q== +express@^4.17.1, express@^4.17.3: + version "4.18.2" + resolved "https://registry.npmmirror.com/express/-/express-4.18.2.tgz#3fabe08296e930c796c19e3c516979386ba9fd59" + integrity sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ== dependencies: accepts "~1.3.8" array-flatten "1.1.1" - body-parser "1.20.2" + body-parser "1.20.1" content-disposition "0.5.4" content-type "~1.0.4" - cookie "0.6.0" + cookie "0.5.0" cookie-signature "1.0.6" debug "2.6.9" depd "2.0.0" @@ -15266,11 +18906,6 @@ external-editor@^3.0.3: iconv-lite "^0.4.24" tmp "^0.0.33" -extract-files@^11.0.0: - version "11.0.0" - resolved "https://registry.npmmirror.com/extract-files/-/extract-files-11.0.0.tgz#b72d428712f787eef1f5193aff8ab5351ca8469a" - integrity sha512-FuoE1qtbJ4bBVvv94CC7s0oTnKUGvQs+Rjf1L2SJFfS+HTVVjhPFtehPdQ0JiGPqVNfSSZvL5yzHHQq2Z4WNhQ== - extsprintf@1.3.0: version "1.3.0" resolved "https://registry.npmmirror.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" @@ -15286,17 +18921,12 @@ fast-copy@^3.0.2: resolved "https://registry.npmmirror.com/fast-copy/-/fast-copy-3.0.2.tgz#59c68f59ccbcac82050ba992e0d5c389097c9d35" integrity sha512-dl0O9Vhju8IrcLndv2eU4ldt1ftXMqqfgN4H1cpmGV7P6jeB9FwpN9a2c8DPGE1Ys88rNUJVYDHq73CGAGOPfQ== -fast-decode-uri-component@^1.0.1: - version "1.0.1" - resolved "https://registry.npmmirror.com/fast-decode-uri-component/-/fast-decode-uri-component-1.0.1.tgz#46f8b6c22b30ff7a81357d4f59abfae938202543" - integrity sha512-WKgKWg5eUxvRZGwW8FvfbaH7AXSh2cL+3j5fMGzUMCxWBJ3dV3a7Wz8y2f/uQ0e3B6WmodD3oS54jTQ9HVTIIg== - fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: version "3.1.3" resolved "https://registry.npmmirror.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== -fast-fifo@^1.1.0, fast-fifo@^1.2.0: +fast-fifo@^1.1.0, fast-fifo@^1.2.0, fast-fifo@^1.3.2: version "1.3.2" resolved "https://registry.npmmirror.com/fast-fifo/-/fast-fifo-1.3.2.tgz#286e31de96eb96d38a97899815740ba2a4f3640c" integrity sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ== @@ -15312,12 +18942,23 @@ fast-glob@^3.2.9: merge2 "^1.3.0" micromatch "^4.0.4" +fast-glob@^3.3.3: + version "3.3.3" + resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.3.tgz#d06d585ce8dba90a16b0505c543c3ccfb3aeb818" + integrity sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg== + dependencies: + "@nodelib/fs.stat" "^2.0.2" + "@nodelib/fs.walk" "^1.2.3" + glob-parent "^5.1.2" + merge2 "^1.3.0" + micromatch "^4.0.8" + fast-json-parse@^1.0.3: version "1.0.3" resolved "https://registry.npmmirror.com/fast-json-parse/-/fast-json-parse-1.0.3.tgz#43e5c61ee4efa9265633046b770fb682a7577c4d" integrity sha512-FRWsaZRWEJ1ESVNbDWmsAlqDk96gPQezzLghafp5J4GUKjbCz3OkAHuZs5TuPEtkbVQERysLp9xv6c24fBm8Aw== -fast-json-patch@^3.0.0-1: +fast-json-patch@^3.0.0-1, fast-json-patch@^3.1.1: version "3.1.1" resolved "https://registry.npmmirror.com/fast-json-patch/-/fast-json-patch-3.1.1.tgz#85064ea1b1ebf97a3f7ad01e23f9337e72c66947" integrity sha512-vf6IHUX2SBcA+5/+4883dsIjpBTqmfBjmYiWK1savxQmFk4JfBMLa7ynTYOs1Rolp/T1betJxHiGD3g1Mn8lUQ== @@ -15342,13 +18983,6 @@ fast-memoize@^2.5.2: resolved "https://registry.npmmirror.com/fast-memoize/-/fast-memoize-2.5.2.tgz#79e3bb6a4ec867ea40ba0e7146816f6cdce9b57e" integrity sha512-Ue0LwpDYErFbmNnZSF0UH6eImUwDmogUO1jyE+JbN2gsQz/jICm1Ve7t9QT0rNSsfJt+Hs4/S3GnsDVjL4HVrw== -fast-querystring@^1.1.1: - version "1.1.2" - resolved "https://registry.npmmirror.com/fast-querystring/-/fast-querystring-1.1.2.tgz#a6d24937b4fc6f791b4ee31dcb6f53aeafb89f53" - integrity sha512-g6KuKWmFXc0fID8WWH0jit4g0AGBoJhCkJMb1RmbsSEUNvQ+ZC8D6CUZ+GtF8nMzSPXnhiePyyqqipzNNEnHjg== - dependencies: - fast-decode-uri-component "^1.0.1" - fast-redact@^2.0.0: version "2.1.0" resolved "https://registry.npmmirror.com/fast-redact/-/fast-redact-2.1.0.tgz#dfe3c1ca69367fb226f110aa4ec10ec85462ffdf" @@ -15364,6 +18998,23 @@ fast-shallow-equal@^1.0.0: resolved "https://registry.npmmirror.com/fast-shallow-equal/-/fast-shallow-equal-1.0.0.tgz#d4dcaf6472440dcefa6f88b98e3251e27f25628b" integrity sha512-HPtaa38cPgWvaCFmRNhlc6NG7pv6NUHqjPgVAkWGoB9mQMwYB27/K0CvOM5Czy+qpT3e8XJ6Q4aPAnzpNpzNaw== +fast-text-encoding@^1.0.0: + version "1.0.6" + resolved "https://registry.yarnpkg.com/fast-text-encoding/-/fast-text-encoding-1.0.6.tgz#0aa25f7f638222e3396d72bf936afcf1d42d6867" + integrity sha512-VhXlQgj9ioXCqGstD37E/HBeqEGV/qOD/kmbVG8h5xKBYvM1L3lR1Zn4555cQ8GkYbJa8aJSipLPndE1k6zK2w== + +fast-uri@^3.0.1: + version "3.1.0" + resolved "https://registry.yarnpkg.com/fast-uri/-/fast-uri-3.1.0.tgz#66eecff6c764c0df9b762e62ca7edcfb53b4edfa" + integrity sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA== + +fast-xml-builder@^1.1.4, fast-xml-builder@^1.1.5: + version "1.1.5" + resolved "https://registry.yarnpkg.com/fast-xml-builder/-/fast-xml-builder-1.1.5.tgz#50188e1452a5fa095f415d3e63dcac0a1dbcbf11" + integrity sha512-4TJn/8FKLeslLAH3dnohXqE3QSoxkhvaMzepOIZytwJXZO69Bfz0HBdDHzOTOon6G59Zrk6VQ2bEiv1t61rfkA== + dependencies: + path-expression-matcher "^1.1.3" + fast-xml-parser@4.2.5: version "4.2.5" resolved "https://registry.npmmirror.com/fast-xml-parser/-/fast-xml-parser-4.2.5.tgz#a6747a09296a6cb34f2ae634019bf1738f3b421f" @@ -15371,6 +19022,25 @@ fast-xml-parser@4.2.5: dependencies: strnum "^1.0.5" +fast-xml-parser@5.5.8: + version "5.5.8" + resolved "https://registry.yarnpkg.com/fast-xml-parser/-/fast-xml-parser-5.5.8.tgz#929571ed8c5eb96e6d9bd572ba14fc4b84875716" + integrity sha512-Z7Fh2nVQSb2d+poDViM063ix2ZGt9jmY1nWhPfHBOK2Hgnb/OW3P4Et3P/81SEej0J7QbWtJqxO05h8QYfK7LQ== + dependencies: + fast-xml-builder "^1.1.4" + path-expression-matcher "^1.2.0" + strnum "^2.2.0" + +fast-xml-parser@5.7.2: + version "5.7.2" + resolved "https://registry.yarnpkg.com/fast-xml-parser/-/fast-xml-parser-5.7.2.tgz#fecd0b054c6c132fc03dab994a413da781e0eb9f" + integrity sha512-P7oW7tLbYnhOLQk/Gv7cZgzgMPP/XN03K02/Jy6Y/NHzyIAIpxuZIM/YqAkfiXFPxA2CTm7NtCijK9EDu09u2w== + dependencies: + "@nodable/entities" "^2.1.0" + fast-xml-builder "^1.1.5" + path-expression-matcher "^1.5.0" + strnum "^2.2.3" + fast-xml-parser@^4.3.0: version "4.3.3" resolved "https://registry.npmmirror.com/fast-xml-parser/-/fast-xml-parser-4.3.3.tgz#aeaf5778392329f17168c40c51bcbfec8ff965be" @@ -15406,17 +19076,47 @@ faye-websocket@^0.11.3: fb-watchman@^2.0.0: version "2.0.2" - resolved "https://registry.npmmirror.com/fb-watchman/-/fb-watchman-2.0.2.tgz#e9524ee6b5c77e9e5001af0f85f3adbb8623255c" + resolved "https://registry.yarnpkg.com/fb-watchman/-/fb-watchman-2.0.2.tgz#e9524ee6b5c77e9e5001af0f85f3adbb8623255c" integrity sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA== dependencies: bser "2.1.1" +fbemitter@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/fbemitter/-/fbemitter-3.0.0.tgz#00b2a1af5411254aab416cd75f9e6289bee4bff3" + integrity sha512-KWKaceCwKQU0+HPoop6gn4eOHk50bBv/VxjJtGMfwmJt3D29JpN4H4eisCtIPA+a8GVBam+ldMMpMjJUvpDyHw== + dependencies: + fbjs "^3.0.0" + +fbjs-css-vars@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/fbjs-css-vars/-/fbjs-css-vars-1.0.2.tgz#216551136ae02fe255932c3ec8775f18e2c078b8" + integrity sha512-b2XGFAFdWZWg0phtAWLHCk836A1Xann+I+Dgd3Gk64MHKZO44FfoD1KxyvbSh0qZsIoXQGGlVztIY+oitJPpRQ== + +fbjs@^3.0.0, fbjs@^3.0.1: + version "3.0.5" + resolved "https://registry.yarnpkg.com/fbjs/-/fbjs-3.0.5.tgz#aa0edb7d5caa6340011790bd9249dbef8a81128d" + integrity sha512-ztsSx77JBtkuMrEypfhgc3cI0+0h+svqeie7xHbh1k/IKdcydnvadp/mUaGgjAOXQmQSxsqgaRhS3q9fy+1kxg== + dependencies: + cross-fetch "^3.1.5" + fbjs-css-vars "^1.0.0" + loose-envify "^1.0.0" + object-assign "^4.1.0" + promise "^7.1.1" + setimmediate "^1.0.5" + ua-parser-js "^1.0.35" + +fdir@^6.5.0: + version "6.5.0" + resolved "https://registry.yarnpkg.com/fdir/-/fdir-6.5.0.tgz#ed2ab967a331ade62f18d077dae192684d50d350" + integrity sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg== + fecha@^4.2.0: version "4.2.3" resolved "https://registry.npmmirror.com/fecha/-/fecha-4.2.3.tgz#4d9ccdbc61e8629b259fdca67e65891448d569fd" integrity sha512-OP2IUU6HeYKJi3i0z4A19kHMQoLVs4Hc+DPqqxI2h/DPZHTm/vjsfC6P0b4jCMy14XizLBqvndQ+UilD7707Jw== -figures@3.2.0, figures@^3.0.0: +figures@^3.0.0: version "3.2.0" resolved "https://registry.npmmirror.com/figures/-/figures-3.2.0.tgz#625c18bd293c604dc4a8ddb2febf0c88341746af" integrity sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg== @@ -15430,6 +19130,11 @@ file-entry-cache@^6.0.1: dependencies: flat-cache "^3.0.4" +file-saver@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/file-saver/-/file-saver-2.0.5.tgz#d61cfe2ce059f414d899e9dd6d4107ee25670c38" + integrity sha512-P9bmyZ3h/PRG+Nzga+rbdI4OEpNDzAVyy74uVO9ATgzLK6VtAsYybF/+TOCvrc0MO793d6+42lLyZTw7/ArVzA== + file-type@^16.5.4: version "16.5.4" resolved "https://registry.npmmirror.com/file-type/-/file-type-16.5.4.tgz#474fb4f704bee427681f98dd390058a172a6c2fd" @@ -15444,13 +19149,6 @@ file-uri-to-path@1.0.0: resolved "https://registry.npmmirror.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd" integrity sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw== -filelist@^1.0.4: - version "1.0.4" - resolved "https://registry.npmmirror.com/filelist/-/filelist-1.0.4.tgz#f78978a1e944775ff9e62e744424f215e58352b5" - integrity sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q== - dependencies: - minimatch "^5.0.1" - filesize@^8.0.6: version "8.0.7" resolved "https://registry.npmmirror.com/filesize/-/filesize-8.0.7.tgz#695e70d80f4e47012c132d57a059e80c6b580bd8" @@ -15463,10 +19161,25 @@ fill-range@^7.0.1: dependencies: to-regex-range "^5.0.1" -filter-obj@^1.1.0: - version "1.1.0" - resolved "https://registry.npmmirror.com/filter-obj/-/filter-obj-1.1.0.tgz#9b311112bc6c6127a16e016c6c5d7f19e0805c5b" - integrity sha512-8rXg1ZnX7xzy2NGDVkBVaAy+lSlPNwad13BtgSlLuxfIslyt5Vg64U7tFcCt4WS1R0hvtnQybT/IyCkGZ3DpXQ== +fill-range@^7.1.1: + version "7.1.1" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.1.1.tgz#44265d3cac07e3ea7dc247516380643754a05292" + integrity sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg== + dependencies: + to-regex-range "^5.0.1" + +finalhandler@1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.2.tgz#b7e7d000ffd11938d0fdb053506f6ebabe9f587d" + integrity sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA== + dependencies: + debug "2.6.9" + encodeurl "~1.0.2" + escape-html "~1.0.3" + on-finished "~2.3.0" + parseurl "~1.3.3" + statuses "~1.5.0" + unpipe "~1.0.0" finalhandler@1.2.0: version "1.2.0" @@ -15481,6 +19194,19 @@ finalhandler@1.2.0: statuses "2.0.1" unpipe "~1.0.0" +finalhandler@~1.3.1: + version "1.3.2" + resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.3.2.tgz#1ebc2228fc7673aac4a472c310cc05b77d852b88" + integrity sha512-aA4RyPcd3badbdABGDuTXCMTtOneUCAYH/gxoYRTZlIJdF0YPWuGqiAsIrhNnnqdXGswYk6dGujem4w80UJFhg== + dependencies: + debug "2.6.9" + encodeurl "~2.0.0" + escape-html "~1.0.3" + on-finished "~2.4.1" + parseurl "~1.3.3" + statuses "~2.0.2" + unpipe "~1.0.0" + find-file-up@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/find-file-up/-/find-file-up-2.0.1.tgz#4932dd81551af643893f8cda7453f221e3e28261" @@ -15500,13 +19226,6 @@ find-root@^1.1.0: resolved "https://registry.npmmirror.com/find-root/-/find-root-1.1.0.tgz#abcfc8ba76f708c42a97b3d685b7e9450bfb9ce4" integrity sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng== -find-up@^2.0.0: - version "2.1.0" - resolved "https://registry.npmmirror.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" - integrity sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ== - dependencies: - locate-path "^2.0.0" - find-up@^3.0.0: version "3.0.0" resolved "https://registry.npmmirror.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" @@ -15530,13 +19249,6 @@ find-up@^5.0.0: locate-path "^6.0.0" path-exists "^4.0.0" -find-yarn-workspace-root@^2.0.0: - version "2.0.0" - resolved "https://registry.npmmirror.com/find-yarn-workspace-root/-/find-yarn-workspace-root-2.0.0.tgz#f47fb8d239c900eb78179aa81b66673eac88f7bd" - integrity sha512-1IMnbjt4KzsQfnhnzNd8wUEgXZ44IzZaZmnLYx7D5FZlaHt2gW20Cri8Q+E/t5tIj4+epTBub+2Zxu/vNILzqQ== - dependencies: - micromatch "^4.0.2" - flat-cache@^3.0.4: version "3.2.0" resolved "https://registry.npmmirror.com/flat-cache/-/flat-cache-3.2.0.tgz#2c0c2d5040c99b1632771a9d105725c0115363ee" @@ -15546,17 +19258,12 @@ flat-cache@^3.0.4: keyv "^4.5.3" rimraf "^3.0.2" -flat@^5.0.2: - version "5.0.2" - resolved "https://registry.npmmirror.com/flat/-/flat-5.0.2.tgz#8ca6fe332069ffa9d324c327198c598259ceb241" - integrity sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ== - flatstr@^1.0.12: version "1.0.12" resolved "https://registry.npmmirror.com/flatstr/-/flatstr-1.0.12.tgz#c2ba6a08173edbb6c9640e3055b95e287ceb5931" integrity sha512-4zPxDyhCyiN2wIAtSLI6gc82/EjqZc1onI4Mz/l0pWrAlsSfYH/2ZIcU+e3oA2wDwbzIWNKwa23F8rh6+DRWkw== -flatted@3.3.1, flatted@^3.2.7: +flatted@^3.2.7: version "3.3.1" resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.3.1.tgz#21db470729a6734d4997002f439cb308987f567a" integrity sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw== @@ -15566,6 +19273,19 @@ flatted@^3.2.9: resolved "https://registry.npmmirror.com/flatted/-/flatted-3.2.9.tgz#7eb4c67ca1ba34232ca9d2d93e9886e611ad7daf" integrity sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ== +flatted@^3.4.2: + version "3.4.2" + resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.4.2.tgz#f5c23c107f0f37de8dbdf24f13722b3b98d52726" + integrity sha512-PjDse7RzhcPkIJwy5t7KPWQSZ9cAbzQXcafsetQoD7sOJRQlGikNbx7yZp2OotDnJyrDcbyRq3Ttb18iYOqkxA== + +flux@^4.0.1: + version "4.0.4" + resolved "https://registry.yarnpkg.com/flux/-/flux-4.0.4.tgz#9661182ea81d161ee1a6a6af10d20485ef2ac572" + integrity sha512-NCj3XlayA2UsapRpM7va6wU1+9rE5FIL7qoMcmxWHRzbp0yujihMBm9BBHZ1MDIk5h5o2Bl6eGiCe8rYELAmYw== + dependencies: + fbemitter "^3.0.0" + fbjs "^3.0.1" + fn.name@1.x.x: version "1.1.0" resolved "https://registry.npmmirror.com/fn.name/-/fn.name-1.1.0.tgz#26cad8017967aea8731bc42961d04a3d5988accc" @@ -15576,10 +19296,10 @@ follow-redirects@^1.0.0, follow-redirects@^1.15.4: resolved "https://registry.npmmirror.com/follow-redirects/-/follow-redirects-1.15.5.tgz#54d4d6d062c0fa7d9d17feb008461550e3ba8020" integrity sha512-vSFWUON1B+yAw1VN4xMfxgn5fTUiaOzAJCKBwIIgT/+7CuGy9+r+5gITvP62j3RmaD5Ph65UaERdOSRGUzZtgw== -follow-redirects@^1.15.6: - version "1.15.6" - resolved "https://registry.npmmirror.com/follow-redirects/-/follow-redirects-1.15.6.tgz#7f815c0cda4249c74ff09e95ef97c23b5fd0399b" - integrity sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA== +follow-redirects@^1.15.11: + version "1.16.0" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.16.0.tgz#28474a159d3b9d11ef62050a14ed60e4df6d61bc" + integrity sha512-y5rN/uOsadFT/JfYwhxRS5R7Qce+g3zG97+JrtFZlC9klX/W5hD7iiLzScI4nZqUS7DNUdhPgw4xI8W2LuXlUw== for-each@^0.3.3: version "0.3.3" @@ -15588,6 +19308,13 @@ for-each@^0.3.3: dependencies: is-callable "^1.1.3" +for-each@^0.3.5: + version "0.3.5" + resolved "https://registry.yarnpkg.com/for-each/-/for-each-0.3.5.tgz#d650688027826920feeb0af747ee7b9421a41d47" + integrity sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg== + dependencies: + is-callable "^1.2.7" + foreach@^2.0.4: version "2.0.6" resolved "https://registry.npmmirror.com/foreach/-/foreach-2.0.6.tgz#87bcc8a1a0e74000ff2bf9802110708cfb02eb6e" @@ -15643,7 +19370,12 @@ fork-ts-checker-webpack-plugin@^9.0.0: semver "^7.3.5" tapable "^2.2.1" -form-data@^2.3.2, form-data@^2.5.0: +form-data-encoder@^1.7.2: + version "1.9.0" + resolved "https://registry.yarnpkg.com/form-data-encoder/-/form-data-encoder-1.9.0.tgz#fd18d316b1ec830d2a8be8ad86c1cf0317320b34" + integrity sha512-rahaRMkN8P8d/tgK/BLPX+WBVM27NbvdXBxqQujBtkDAIFspaRqN7Od7lfdGQA6KAD+f82fYCLBq1ipvcu8qLw== + +form-data@^2.5.0: version "2.5.1" resolved "https://registry.npmmirror.com/form-data/-/form-data-2.5.1.tgz#f2cbec57b5e59e23716e128fe44d4e5dd23895f4" integrity sha512-m21N3WOmEEURgk6B9GLOE4RuWOFf28Lhh9qGYeNlGq4VDXUlJy2th2slBNU8Gp8EzloYZOibZJ7t5ecIrFSjVA== @@ -15652,22 +19384,24 @@ form-data@^2.3.2, form-data@^2.5.0: combined-stream "^1.0.6" mime-types "^2.1.12" -form-data@^3.0.0: - version "3.0.1" - resolved "https://registry.npmmirror.com/form-data/-/form-data-3.0.1.tgz#ebd53791b78356a99af9a300d4282c4d5eb9755f" - integrity sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg== +form-data@^4.0.0: + version "4.0.0" + resolved "https://registry.npmmirror.com/form-data/-/form-data-4.0.0.tgz#93919daeaf361ee529584b9b31664dc12c9fa452" + integrity sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww== dependencies: asynckit "^0.4.0" combined-stream "^1.0.8" mime-types "^2.1.12" -form-data@^4.0.0: - version "4.0.0" - resolved "https://registry.npmmirror.com/form-data/-/form-data-4.0.0.tgz#93919daeaf361ee529584b9b31664dc12c9fa452" - integrity sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww== +form-data@^4.0.4, form-data@^4.0.5: + version "4.0.5" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.5.tgz#b49e48858045ff4cbf6b03e1805cebcad3679053" + integrity sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w== dependencies: asynckit "^0.4.0" combined-stream "^1.0.8" + es-set-tostringtag "^2.1.0" + hasown "^2.0.2" mime-types "^2.1.12" form-data@~2.3.2: @@ -15684,6 +19418,14 @@ format@^0.2.0: resolved "https://registry.npmmirror.com/format/-/format-0.2.2.tgz#d6170107e9efdc4ed30c9dc39016df942b5cb58b" integrity sha512-wzsgA6WOq+09wrU1tsJ09udeR/YZRaeArL9e1wPbFg3GG2yDnC2ldKpxs4xunpFF9DgqCqOIra3bc1HWrJ37Ww== +formdata-node@^4.3.3: + version "4.4.1" + resolved "https://registry.yarnpkg.com/formdata-node/-/formdata-node-4.4.1.tgz#23f6a5cb9cb55315912cbec4ff7b0f59bbd191e2" + integrity sha512-0iirZp3uVDjVGt9p49aTaqjk84TrglENEDuqfdlZQ1roC9CWlPk6Avf8EEnZNcAqPonwkG35x4n3ww/1THYAeQ== + dependencies: + node-domexception "1.0.0" + web-streams-polyfill "4.0.0-beta.3" + formidable@^2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/formidable/-/formidable-2.1.2.tgz#fa973a2bec150e4ce7cac15589d7a25fc30ebd89" @@ -15694,6 +19436,16 @@ formidable@^2.1.2: once "^1.4.0" qs "^6.11.0" +formstream@^1.1.1: + version "1.5.2" + resolved "https://registry.yarnpkg.com/formstream/-/formstream-1.5.2.tgz#81f282571665b8afd82e0df39399862cb2527c6d" + integrity sha512-NASf0lgxC1AyKNXQIrXTEYkiX99LhCEXTkiGObXAkpBui86a4u8FjH1o2bGb3PpqI3kafC+yw4zWeK6l6VHTgg== + dependencies: + destroy "^1.0.4" + mime "^2.5.2" + node-hex "^1.0.1" + pause-stream "~0.0.11" + forwarded@0.2.0: version "0.2.0" resolved "https://registry.npmmirror.com/forwarded/-/forwarded-0.2.0.tgz#2269936428aad4c15c7ebe9779a84bf0b2a81811" @@ -15704,6 +19456,15 @@ fp-ts@^2.10.0: resolved "https://registry.npmmirror.com/fp-ts/-/fp-ts-2.16.2.tgz#7faa90f6fc2e8cf84c711d2c4e606afe2be9e342" integrity sha512-CkqAjnIKFqvo3sCyoBTqgJvF+bHrSik584S9nhTjtBESLx26cbtVMR/T9a6ApChOcSDAaM3JydDmWDUn4EEXng== +framer-motion@^12.38.0: + version "12.38.0" + resolved "https://registry.yarnpkg.com/framer-motion/-/framer-motion-12.38.0.tgz#cf28e072a95942881ca4e33fd33be41192fd146b" + integrity sha512-rFYkY/pigbcswl1XQSb7q424kSTQ8q6eAC+YUsSKooHQYuLdzdHjrt6uxUC+PRAO++q5IS7+TamgIw1AphxR+g== + dependencies: + motion-dom "^12.38.0" + motion-utils "^12.36.0" + tslib "^2.4.0" + framer-motion@^6.5.1: version "6.5.1" resolved "https://registry.npmmirror.com/framer-motion/-/framer-motion-6.5.1.tgz#802448a16a6eb764124bf36d8cbdfa6dd6b931a7" @@ -15730,11 +19491,6 @@ fresh@0.5.2, fresh@~0.5.2: resolved "https://registry.npmmirror.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" integrity sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q== -fromentries@^1.3.1: - version "1.3.2" - resolved "https://registry.npmmirror.com/fromentries/-/fromentries-1.3.2.tgz#e4bca6808816bf8f93b52750f1127f5a6fd86e3a" - integrity sha512-cHEpEQHUg0f8XdtZCc2ZAhrHzKzT0MrFUTcvx+hfxYu7rGMDc5SKoXFh+n4YigxsHXRzc6OrCshdR1bWH6HHyg== - fs-constants@^1.0.0: version "1.0.0" resolved "https://registry.npmmirror.com/fs-constants/-/fs-constants-1.0.0.tgz#6be0de9be998ce16af8afc24497b9ee9b7ccd9ad" @@ -15759,7 +19515,7 @@ fs-extra@^10.0.0: jsonfile "^6.0.1" universalify "^2.0.0" -fs-extra@^11.0.0, fs-extra@^11.1.0, fs-extra@^11.1.1, fs-extra@^11.2.0, fs-extra@~11.2.0: +fs-extra@^11.0.0, fs-extra@^11.2.0, fs-extra@~11.2.0: version "11.2.0" resolved "https://registry.npmmirror.com/fs-extra/-/fs-extra-11.2.0.tgz#e70e17dfad64232287d01929399e0ea7c86b0e5b" integrity sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw== @@ -15777,7 +19533,7 @@ fs-extra@^8.1.0: jsonfile "^4.0.0" universalify "^0.1.0" -fs-minipass@^2.0.0, fs-minipass@^2.1.0: +fs-minipass@^2.0.0: version "2.1.0" resolved "https://registry.npmmirror.com/fs-minipass/-/fs-minipass-2.1.0.tgz#7f5036fdbf12c63c169190cbe4199c852271f9fb" integrity sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg== @@ -15801,6 +19557,11 @@ fs.realpath@^1.0.0: resolved "https://registry.npmmirror.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== +fscreen@^1.0.2: + version "1.2.0" + resolved "https://registry.yarnpkg.com/fscreen/-/fscreen-1.2.0.tgz#1a8c88e06bc16a07b473ad96196fb06d6657f59e" + integrity sha512-hlq4+BU0hlPmwsFjwGGzZ+OZ9N/wq9Ljg/sq3pX+2CD7hrJsX9tJgWWK/wiNTFM212CLHWhicOoqwXyZGGetJg== + fsevents@2.3.2: version "2.3.2" resolved "https://registry.npmmirror.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" @@ -15816,7 +19577,7 @@ function-bind@^1.1.1, function-bind@^1.1.2: resolved "https://registry.npmmirror.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c" integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA== -function.prototype.name@^1.1.5, function.prototype.name@^1.1.6: +function.prototype.name@^1.1.6: version "1.1.6" resolved "https://registry.npmmirror.com/function.prototype.name/-/function.prototype.name-1.1.6.tgz#cdf315b7d90ee77a4c6ee216c3c3362da07533fd" integrity sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg== @@ -15826,6 +19587,18 @@ function.prototype.name@^1.1.5, function.prototype.name@^1.1.6: es-abstract "^1.22.1" functions-have-names "^1.2.3" +function.prototype.name@^1.1.8: + version "1.1.8" + resolved "https://registry.yarnpkg.com/function.prototype.name/-/function.prototype.name-1.1.8.tgz#e68e1df7b259a5c949eeef95cdbde53edffabb78" + integrity sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q== + dependencies: + call-bind "^1.0.8" + call-bound "^1.0.3" + define-properties "^1.2.1" + functions-have-names "^1.2.3" + hasown "^2.0.2" + is-callable "^1.2.7" + functional-red-black-tree@^1.0.1: version "1.0.1" resolved "https://registry.npmmirror.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" @@ -15836,20 +19609,6 @@ functions-have-names@^1.2.3: resolved "https://registry.npmmirror.com/functions-have-names/-/functions-have-names-1.2.3.tgz#0404fe4ee2ba2f607f0e0ec3c80bae994133b834" integrity sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ== -gauge@^4.0.3: - version "4.0.4" - resolved "https://registry.npmmirror.com/gauge/-/gauge-4.0.4.tgz#52ff0652f2bbf607a989793d53b751bef2328dce" - integrity sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg== - dependencies: - aproba "^1.0.3 || ^2.0.0" - color-support "^1.1.3" - console-control-strings "^1.1.0" - has-unicode "^2.0.1" - signal-exit "^3.0.7" - string-width "^4.2.3" - strip-ansi "^6.0.1" - wide-align "^1.1.5" - gaxios@^6.0.0, gaxios@^6.0.2, gaxios@^6.1.1: version "6.1.1" resolved "https://registry.npmmirror.com/gaxios/-/gaxios-6.1.1.tgz#549629f86a13e756b900f9ff7c94624670102938" @@ -15882,9 +19641,14 @@ generic-names@^4.0.0: dependencies: loader-utils "^3.2.0" +generic-pool@3.9.0: + version "3.9.0" + resolved "https://registry.yarnpkg.com/generic-pool/-/generic-pool-3.9.0.tgz#36f4a678e963f4fdb8707eab050823abc4e8f5e4" + integrity sha512-hymDOu5B53XvN4QT9dBmZxPX4CWhBPPLguTZ9MMFeFa/Kg0xWVfylOVNlJji/E7yTZWFd/q9GO5TxDLq156D7g== + gensync@^1.0.0-beta.2: version "1.0.0-beta.2" - resolved "https://registry.npmmirror.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" + resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== get-caller-file@^2.0.5: @@ -15913,6 +19677,22 @@ get-intrinsic@^1.2.4: has-symbols "^1.0.3" hasown "^2.0.0" +get-intrinsic@^1.2.5, get-intrinsic@^1.2.6, get-intrinsic@^1.2.7, get-intrinsic@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.3.0.tgz#743f0e3b6964a93a5491ed1bffaae054d7f98d01" + integrity sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ== + dependencies: + call-bind-apply-helpers "^1.0.2" + es-define-property "^1.0.1" + es-errors "^1.3.0" + es-object-atoms "^1.1.1" + function-bind "^1.1.2" + get-proto "^1.0.1" + gopd "^1.2.0" + has-symbols "^1.1.0" + hasown "^2.0.2" + math-intrinsics "^1.1.0" + get-nonce@^1.0.0: version "1.0.1" resolved "https://registry.npmmirror.com/get-nonce/-/get-nonce-1.0.1.tgz#fdf3f0278073820d2ce9426c18f07481b1e0cdf3" @@ -15923,32 +19703,23 @@ get-package-type@^0.1.0: resolved "https://registry.npmmirror.com/get-package-type/-/get-package-type-0.1.0.tgz#8de2d803cff44df3bc6c456e6668b36c3926e11a" integrity sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q== -get-pkg-repo@^4.2.1: - version "4.2.1" - resolved "https://registry.npmmirror.com/get-pkg-repo/-/get-pkg-repo-4.2.1.tgz#75973e1c8050c73f48190c52047c4cee3acbf385" - integrity sha512-2+QbHjFRfGB74v/pYWjd5OhU3TDIC2Gv/YKUTk/tCvAz0pkn/Mz6P3uByuBimLOcPvN2jYdScl3xGFSrx0jEcA== - dependencies: - "@hutson/parse-repository-url" "^3.0.0" - hosted-git-info "^4.0.0" - through2 "^2.0.0" - yargs "^16.2.0" - -get-port@5.1.1: +get-port@^5.1.1: version "5.1.1" - resolved "https://registry.npmmirror.com/get-port/-/get-port-5.1.1.tgz#0469ed07563479de6efb986baf053dcd7d4e3193" + resolved "https://registry.yarnpkg.com/get-port/-/get-port-5.1.1.tgz#0469ed07563479de6efb986baf053dcd7d4e3193" integrity sha512-g/Q1aTSDOxFpchXC4i8ZWvxA1lnPqx/JHqcpIw0/LX9T8x/GBbi6YnlN5nhaKIFkT8oFsscUKgDJYxfwfS6QsQ== -get-stream@6.0.0: - version "6.0.0" - resolved "https://registry.npmmirror.com/get-stream/-/get-stream-6.0.0.tgz#3e0012cb6827319da2706e601a1583e8629a6718" - integrity sha512-A1B3Bh1UmL0bidM/YX2NsCOTnGJePL9rO/M+Mw3m9f2gUpfokS0hi5Eah0WSUEWZdZhIZtMjkIYS7mDfOqNHbg== +get-port@^7.2.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/get-port/-/get-port-7.2.0.tgz#db0d52eb2d89890cdc010ed0e9a6f2d4b78cbbe7" + integrity sha512-afP4W205ONCuMoPBqcR6PSXnzX35KTcJygfJfcp+QY+uwm3p20p1YczWXhlICIzGMCxYBQcySEcOgsJcrkyobg== -get-stream@^5.1.0: - version "5.2.0" - resolved "https://registry.npmmirror.com/get-stream/-/get-stream-5.2.0.tgz#4966a1795ee5ace65e706c4b7beb71257d6e22d3" - integrity sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA== +get-proto@^1.0.0, get-proto@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/get-proto/-/get-proto-1.0.1.tgz#150b3f2743869ef3e851ec0c49d15b1d14d00ee1" + integrity sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g== dependencies: - pump "^3.0.0" + dunder-proto "^1.0.1" + es-object-atoms "^1.0.0" get-stream@^6.0.0: version "6.0.1" @@ -15963,6 +19734,15 @@ get-symbol-description@^1.0.0: call-bind "^1.0.2" get-intrinsic "^1.1.1" +get-symbol-description@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/get-symbol-description/-/get-symbol-description-1.1.0.tgz#7bdd54e0befe8ffc9f3b4e203220d9f1e881b6ee" + integrity sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg== + dependencies: + call-bound "^1.0.3" + es-errors "^1.3.0" + get-intrinsic "^1.2.6" + get-tsconfig@^4.7.0: version "4.7.5" resolved "https://registry.npmmirror.com/get-tsconfig/-/get-tsconfig-4.7.5.tgz#5e012498579e9a6947511ed0cd403272c7acbbaf" @@ -15977,6 +19757,22 @@ get-tsconfig@^4.7.2: dependencies: resolve-pkg-maps "^1.0.0" +get-uri@^6.0.1: + version "6.0.5" + resolved "https://registry.yarnpkg.com/get-uri/-/get-uri-6.0.5.tgz#714892aa4a871db671abc5395e5e9447bc306a16" + integrity sha512-b1O07XYq8eRuVzBNgJLstU6FYc1tS6wnMtF1I1D9lE8LxZSOGZ7LhxN54yPP6mGw5f2CkXY2BQUL9Fx41qvcIg== + dependencies: + basic-ftp "^5.0.2" + data-uri-to-buffer "^6.0.2" + debug "^4.3.4" + +get-value@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/get-value/-/get-value-3.0.1.tgz#5efd2a157f1d6a516d7524e124ac52d0a39ef5a8" + integrity sha512-mKZj9JLQrwMBtj5wxi6MH8Z5eSKaERpAwjg43dPtlGI1ZVEgH/qC7T8/6R2OBSUA+zzHBZgICsVJaEIV2tKTDA== + dependencies: + isobject "^3.0.1" + getopts@2.3.0: version "2.3.0" resolved "https://registry.npmmirror.com/getopts/-/getopts-2.3.0.tgz#71e5593284807e03e2427449d4f6712a268666f4" @@ -15989,31 +19785,6 @@ getpass@^0.1.1: dependencies: assert-plus "^1.0.0" -git-raw-commits@^3.0.0: - version "3.0.0" - resolved "https://registry.npmmirror.com/git-raw-commits/-/git-raw-commits-3.0.0.tgz#5432f053a9744f67e8db03dbc48add81252cfdeb" - integrity sha512-b5OHmZ3vAgGrDn/X0kS+9qCfNKWe4K/jFnhwzVWWg0/k5eLa3060tZShrRg8Dja5kPc+YjS0Gc6y7cRr44Lpjw== - dependencies: - dargs "^7.0.0" - meow "^8.1.2" - split2 "^3.2.2" - -git-remote-origin-url@^2.0.0: - version "2.0.0" - resolved "https://registry.npmmirror.com/git-remote-origin-url/-/git-remote-origin-url-2.0.0.tgz#5282659dae2107145a11126112ad3216ec5fa65f" - integrity sha512-eU+GGrZgccNJcsDH5LkXR3PB9M958hxc7sbA8DFJjrv9j4L2P/eZfKhM+QD6wyzpiv+b1BpK0XrYCxkovtjSLw== - dependencies: - gitconfiglocal "^1.0.0" - pify "^2.3.0" - -git-semver-tags@^5.0.0: - version "5.0.1" - resolved "https://registry.npmmirror.com/git-semver-tags/-/git-semver-tags-5.0.1.tgz#db748aa0e43d313bf38dcd68624d8443234e1c15" - integrity sha512-hIvOeZwRbQ+7YEUmCkHqo8FOLQZCEn18yevLHADlFPZY02KJGsu5FZt9YW/lybfK2uhWFI7Qg/07LekJiTv7iA== - dependencies: - meow "^8.1.2" - semver "^7.0.0" - git-up@^7.0.0: version "7.0.0" resolved "https://registry.npmmirror.com/git-up/-/git-up-7.0.0.tgz#bace30786e36f56ea341b6f69adfd83286337467" @@ -16022,13 +19793,6 @@ git-up@^7.0.0: is-ssh "^1.4.0" parse-url "^8.1.0" -git-url-parse@13.1.0: - version "13.1.0" - resolved "https://registry.npmmirror.com/git-url-parse/-/git-url-parse-13.1.0.tgz#07e136b5baa08d59fabdf0e33170de425adf07b4" - integrity sha512-5FvPJP/70WkIprlUZ33bm4UAaFdjcLkJLpWft1BeZKqwR0uhhNGoKwlUaPtVb4LxCSQ++erHapRak9kWGj+FCA== - dependencies: - git-up "^7.0.0" - git-url-parse@^14.0.0: version "14.0.0" resolved "https://registry.npmmirror.com/git-url-parse/-/git-url-parse-14.0.0.tgz#18ce834726d5fbca0c25a4555101aa277017418f" @@ -16036,19 +19800,19 @@ git-url-parse@^14.0.0: dependencies: git-up "^7.0.0" -gitconfiglocal@^1.0.0: - version "1.0.0" - resolved "https://registry.npmmirror.com/gitconfiglocal/-/gitconfiglocal-1.0.0.tgz#41d045f3851a5ea88f03f24ca1c6178114464b9b" - integrity sha512-spLUXeTAVHxDtKsJc8FkFVgFtMdEN9qPGpL23VfSHx4fP4+Ds097IXLvymbnDH8FnmxX5Nr9bPw3A+AQ6mWEaQ== +git-url-parse@^15.0.0: + version "15.0.0" + resolved "https://registry.yarnpkg.com/git-url-parse/-/git-url-parse-15.0.0.tgz#207b74d8eb888955b1aaf5dfc5f5778084fa9fa9" + integrity sha512-5reeBufLi+i4QD3ZFftcJs9jC26aULFLBU23FeKM/b1rI0K6ofIeAblmDVO7Ht22zTDE9+CkJ3ZVb0CgJmz3UQ== dependencies: - ini "^1.3.2" + git-up "^7.0.0" github-from-package@0.0.0: version "0.0.0" resolved "https://registry.npmmirror.com/github-from-package/-/github-from-package-0.0.0.tgz#97fb5d96bfde8973313f20e8288ef9a167fa64ce" integrity sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw== -glob-parent@5.1.2, glob-parent@^5.1.2, glob-parent@~5.1.2: +glob-parent@^5.1.2, glob-parent@~5.1.2: version "5.1.2" resolved "https://registry.npmmirror.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== @@ -16062,22 +19826,27 @@ glob-parent@^6.0.2: dependencies: is-glob "^4.0.3" +glob-to-regex.js@^1.0.0, glob-to-regex.js@^1.0.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/glob-to-regex.js/-/glob-to-regex.js-1.2.0.tgz#2b323728271d133830850e32311f40766c5f6413" + integrity sha512-QMwlOQKU/IzqMUOAZWubUOT8Qft+Y0KQWnX9nK3ch0CJg0tTp4TvGZsTfudYKv2NzoQSyPcnA6TYeIQ3jGichQ== + glob-to-regexp@^0.4.1: version "0.4.1" resolved "https://registry.npmmirror.com/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz#c75297087c851b9a578bd217dd59a92f59fe546e" integrity sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw== -glob@7.1.4: - version "7.1.4" - resolved "https://registry.npmmirror.com/glob/-/glob-7.1.4.tgz#aa608a2f6c577ad357e1ae5a5c26d9a8d1969255" - integrity sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A== +glob@^10.0.0, glob@^10.4.1: + version "10.5.0" + resolved "https://registry.yarnpkg.com/glob/-/glob-10.5.0.tgz#8ec0355919cd3338c28428a23d4f24ecc5fe738c" + integrity sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg== 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" + foreground-child "^3.1.0" + jackspeak "^3.1.2" + minimatch "^9.0.4" + minipass "^7.1.2" + package-json-from-dist "^1.0.0" + path-scurry "^1.11.1" glob@^10.2.2, glob@^10.3.10: version "10.3.10" @@ -16101,6 +19870,15 @@ glob@^10.3.7: minipass "^7.1.2" path-scurry "^1.11.1" +glob@^13.0.0: + version "13.0.6" + resolved "https://registry.yarnpkg.com/glob/-/glob-13.0.6.tgz#078666566a425147ccacfbd2e332deb66a2be71d" + integrity sha512-Wjlyrolmm8uDpm/ogGyXZXb1Z+Ca2B8NbJwqBVg0axK9GbBeoS7yGV6vjXnYdGm6X53iehEuxxbyiKp8QmN4Vw== + dependencies: + minimatch "^10.2.2" + minipass "^7.1.3" + path-scurry "^2.0.2" + glob@^7.1.3, glob@^7.1.4, glob@^7.1.6, glob@^7.1.7: version "7.2.3" resolved "https://registry.npmmirror.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" @@ -16113,7 +19891,7 @@ glob@^7.1.3, glob@^7.1.4, glob@^7.1.6, glob@^7.1.7: once "^1.3.0" path-is-absolute "^1.0.0" -glob@^8.0.0, glob@^8.0.1, glob@^8.0.3, glob@^8.1.0: +glob@^8.0.1, glob@^8.1.0: version "8.1.0" resolved "https://registry.npmmirror.com/glob/-/glob-8.1.0.tgz#d388f656593ef708ee3e34640fdfb99a9fd1c33e" integrity sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ== @@ -16124,16 +19902,6 @@ glob@^8.0.0, glob@^8.0.1, glob@^8.0.3, glob@^8.1.0: minimatch "^5.0.1" once "^1.3.0" -glob@^9.2.0: - version "9.3.5" - resolved "https://registry.npmmirror.com/glob/-/glob-9.3.5.tgz#ca2ed8ca452781a3009685607fdf025a899dfe21" - integrity sha512-e1LleDykUz2Iu+MTYdkSsuWX8lvAjAcs0Xef0lNIu0S2wOAzuTxCJtcd9S3cijlwYF18EsU3rzb8jPVobxDh9Q== - dependencies: - fs.realpath "^1.0.0" - minimatch "^8.0.2" - minipass "^4.2.4" - path-scurry "^1.6.1" - global-agent@^3.0.0: version "3.0.0" resolved "https://registry.npmmirror.com/global-agent/-/global-agent-3.0.0.tgz#ae7cd31bd3583b93c5a16437a1afe27cc33a1ab6" @@ -16182,11 +19950,6 @@ global-prefix@^3.0.0: kind-of "^6.0.2" which "^1.3.1" -globals@^11.1.0: - version "11.12.0" - resolved "https://registry.npmmirror.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" - integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== - globals@^13.19.0: version "13.24.0" resolved "https://registry.npmmirror.com/globals/-/globals-13.24.0.tgz#8432a19d78ce0c1e833949c36adb345400bb1171" @@ -16201,7 +19964,15 @@ globalthis@^1.0.1, globalthis@^1.0.3: dependencies: define-properties "^1.1.3" -globby@11.1.0, globby@^11.0.0, globby@^11.0.3, globby@^11.0.4, globby@^11.1.0: +globalthis@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/globalthis/-/globalthis-1.0.4.tgz#7430ed3a975d97bfb59bcce41f5cabbafa651236" + integrity sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ== + dependencies: + define-properties "^1.2.1" + gopd "^1.0.1" + +globby@^11.0.0, globby@^11.0.4, globby@^11.1.0: version "11.1.0" resolved "https://registry.npmmirror.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b" integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== @@ -16250,24 +20021,12 @@ gopd@^1.0.1: dependencies: get-intrinsic "^1.1.3" -got@^11.8.3: - version "11.8.6" - resolved "https://registry.npmmirror.com/got/-/got-11.8.6.tgz#276e827ead8772eddbcfc97170590b841823233a" - integrity sha512-6tfZ91bOr7bOXnK7PRDCGBLa1H4U080YHNaAQ2KsMGlLEzRbk44nsZF2E1IeRc3vtJHPVbKCYgdFbaGO2ljd8g== - dependencies: - "@sindresorhus/is" "^4.0.0" - "@szmarczak/http-timer" "^4.0.5" - "@types/cacheable-request" "^6.0.1" - "@types/responselike" "^1.0.0" - cacheable-lookup "^5.0.3" - cacheable-request "^7.0.2" - decompress-response "^6.0.0" - http2-wrapper "^1.0.0-beta.5.2" - lowercase-keys "^2.0.0" - p-cancelable "^2.0.0" - responselike "^2.0.0" +gopd@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/gopd/-/gopd-1.2.0.tgz#89f56b8217bdbc8802bd299df6d7f1081d7e51a1" + integrity sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg== -graceful-fs@4.2.11, graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.5, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.4, graceful-fs@^4.2.6, graceful-fs@^4.2.9: +graceful-fs@^4.1.2, graceful-fs@^4.1.5, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.11, graceful-fs@^4.2.4, graceful-fs@^4.2.6, graceful-fs@^4.2.9: version "4.2.11" resolved "https://registry.npmmirror.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== @@ -16277,15 +20036,13 @@ graphemer@^1.4.0: resolved "https://registry.npmmirror.com/graphemer/-/graphemer-1.4.0.tgz#fb2f1d55e0e3a1849aeffc90c4fa0dd53a0e66c6" integrity sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag== -graphiql@3.1.1: - version "3.1.1" - resolved "https://registry.npmmirror.com/graphiql/-/graphiql-3.1.1.tgz#77c64355b122662ba8c3e1a3cdf3f5c0251c6cad" - integrity sha512-FMNa981Wj8JBJJRTdryNyrVteigS8B7q+Q1fh1rW4IsFPaXNIs1VMs8kwqIZ8zERj4Fc64Ea750g3n6r2w9Zcg== +graphiql@^3.9.0: + version "3.9.0" + resolved "https://registry.yarnpkg.com/graphiql/-/graphiql-3.9.0.tgz#2cc1a3f783e2d27a08cfeba0a937816b2f366e90" + integrity sha512-rJYFlHdBbug9+YbFSwRVvgfPjCayC7wHecZkx/qB4XLuQPFQZw/yB9pmHFtOJV6RiNBBHro3u1GdocKa3YcGRA== dependencies: - "@graphiql/react" "^0.20.3" - "@graphiql/toolkit" "^0.9.1" - graphql-language-service "^5.2.0" - markdown-it "^12.2.0" + "@graphiql/react" "^0.29.0" + react-compiler-runtime "19.1.0-rc.1" graphlib@^2.1.8: version "2.1.8" @@ -16294,51 +20051,44 @@ graphlib@^2.1.8: dependencies: lodash "^4.17.15" -graphql-config@^5.0.2: - version "5.0.3" - resolved "https://registry.npmmirror.com/graphql-config/-/graphql-config-5.0.3.tgz#d9aa2954cf47a927f9cb83cdc4e42ae55d0b321e" - integrity sha512-BNGZaoxIBkv9yy6Y7omvsaBUHOzfFcII3UN++tpH8MGOKFPFkCPZuwx09ggANMt8FgyWP1Od8SWPmrUEZca4NQ== - dependencies: - "@graphql-tools/graphql-file-loader" "^8.0.0" - "@graphql-tools/json-file-loader" "^8.0.0" - "@graphql-tools/load" "^8.0.0" - "@graphql-tools/merge" "^9.0.0" - "@graphql-tools/url-loader" "^8.0.0" - "@graphql-tools/utils" "^10.0.0" - cosmiconfig "^8.1.0" - jiti "^1.18.2" - minimatch "^4.2.3" - string-env-interpolation "^1.0.1" - tslib "^2.4.0" +graphql-http@^1.22.0: + version "1.22.4" + resolved "https://registry.yarnpkg.com/graphql-http/-/graphql-http-1.22.4.tgz#47b52ef0ab1f412943aca33ecfcdf22de525d59b" + integrity sha512-OC3ucK988teMf+Ak/O+ZJ0N2ukcgrEurypp8ePyJFWq83VzwRAmHxxr+XxrMpxO/FIwI4a7m/Fzv3tWGJv0wPA== -graphql-language-service@5.2.0, graphql-language-service@^5.2.0: - version "5.2.0" - resolved "https://registry.npmmirror.com/graphql-language-service/-/graphql-language-service-5.2.0.tgz#cfe22b2e911292d724451580632c67d908e5606a" - integrity sha512-o/ZgTS0pBxWm3hSF4+6GwiV1//DxzoLWEbS38+jqpzzy1d/QXBidwQuVYTOksclbtOJZ3KR/tZ8fi/tI6VpVMg== +graphql-language-service@5.5.0, graphql-language-service@^5.3.1: + version "5.5.0" + resolved "https://registry.yarnpkg.com/graphql-language-service/-/graphql-language-service-5.5.0.tgz#2e68b23bd5384f2fbf1e9391e907106e8246d025" + integrity sha512-9EvWrLLkF6Y5e29/2cmFoAO6hBPPAZlCyjznmpR11iFtRydfkss+9m6x+htA8h7YznGam+TtJwS6JuwoWWgb2Q== dependencies: + debounce-promise "^3.1.2" nullthrows "^1.0.0" vscode-languageserver-types "^3.17.1" -graphql-language-service@5.2.1: - version "5.2.1" - resolved "https://registry.npmmirror.com/graphql-language-service/-/graphql-language-service-5.2.1.tgz#8929cf93deadecc0fbb78fe8a0c55d178ffa7833" - integrity sha512-8ewD6otGO43vg2TiEGjoLz3CweTwfaf4ZnqfNREqZXS2JSJGXtsRBOMMknCxMfFVh4x14ql3jyDrXcyAAtbmkQ== +graphql-subscriptions@^1.1.0: + version "1.2.1" + resolved "https://registry.yarnpkg.com/graphql-subscriptions/-/graphql-subscriptions-1.2.1.tgz#2142b2d729661ddf967b7388f7cf1dd4cf2e061d" + integrity sha512-95yD/tKi24q8xYa7Q9rhQN16AYj5wPbrb8tmHGM3WRc9EBmWrG/0kkMl+tQG8wcEuE9ibR4zyOM31p5Sdr2v4g== dependencies: - nullthrows "^1.0.0" - vscode-languageserver-types "^3.17.1" + iterall "^1.3.0" -graphql-tag@^2.10.3: +graphql-tag@^2.12.6: version "2.12.6" - resolved "https://registry.npmmirror.com/graphql-tag/-/graphql-tag-2.12.6.tgz#d441a569c1d2537ef10ca3d1633b48725329b5f1" + resolved "https://registry.yarnpkg.com/graphql-tag/-/graphql-tag-2.12.6.tgz#d441a569c1d2537ef10ca3d1633b48725329b5f1" integrity sha512-FdSNcu2QQcWnM2VNvSCCDCVS5PpPqpzgFT8+GXzqJuoDd0CBncxCY278u4mhRO7tMgo2JjgJA5aZ+nWSQ/Z+xg== dependencies: tslib "^2.1.0" -graphql-ws@^5.14.0, graphql-ws@^5.4.1: +graphql-ws@^5.4.1: version "5.14.3" resolved "https://registry.npmmirror.com/graphql-ws/-/graphql-ws-5.14.3.tgz#fb1fba011a0ae9c4e86d831cae2ec27955168b9a" integrity sha512-F/i2xNIVbaEF2xWggID0X/UZQa2V8kqKDPO8hwmu53bVOcTL7uNkxnexeEgSCVxYBQUTUNEI8+e4LO1FOhKPKQ== +"graphql@^14.0.2 || ^15.5": + version "15.10.2" + resolved "https://registry.yarnpkg.com/graphql/-/graphql-15.10.2.tgz#f57f8665cea9e77a80264d7eeb0d687079714e78" + integrity sha512-1PRqdDPAmViWr4h1GVBT8RoPZfWSGZa7kDzleTilOfVIslsgf+cia3Nl95v1KDmR4iERPaT7WzQ+tN4MJmbg3w== + graphql@^16.0.0, graphql@^16.8.1: version "16.8.1" resolved "https://registry.npmmirror.com/graphql/-/graphql-16.8.1.tgz#1930a965bef1170603702acdb68aedd3f3cf6f07" @@ -16364,7 +20114,7 @@ handle-thing@^2.0.0: resolved "https://registry.npmmirror.com/handle-thing/-/handle-thing-2.0.1.tgz#857f79ce359580c340d43081cc648970d0bb234e" integrity sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg== -handlebars@^4.7.3, handlebars@^4.7.7: +handlebars@^4.7.3: version "4.7.8" resolved "https://registry.npmmirror.com/handlebars/-/handlebars-4.7.8.tgz#41c42c18b1be2365439188c77c6afae71c0cd9e9" integrity sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ== @@ -16389,11 +20139,6 @@ har-validator@~5.1.3: ajv "^6.12.3" har-schema "^2.0.0" -hard-rejection@^2.1.0: - version "2.1.0" - resolved "https://registry.npmmirror.com/hard-rejection/-/hard-rejection-2.1.0.tgz#1c6eda5c1685c63942766d79bb40ae773cecd883" - integrity sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA== - harmony-reflect@^1.4.6: version "1.6.2" resolved "https://registry.npmmirror.com/harmony-reflect/-/harmony-reflect-1.6.2.tgz#31ecbd32e648a34d030d86adb67d4d47547fe710" @@ -16433,11 +20178,23 @@ has-proto@^1.0.1: resolved "https://registry.npmmirror.com/has-proto/-/has-proto-1.0.1.tgz#1885c1305538958aff469fef37937c22795408e0" integrity sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg== +has-proto@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/has-proto/-/has-proto-1.2.0.tgz#5de5a6eabd95fdffd9818b43055e8065e39fe9d5" + integrity sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ== + dependencies: + dunder-proto "^1.0.0" + has-symbols@^1.0.2, has-symbols@^1.0.3: version "1.0.3" resolved "https://registry.npmmirror.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8" integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A== +has-symbols@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.1.0.tgz#fc9c6a783a084951d0b971fe1018de813707a338" + integrity sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ== + has-tostringtag@^1.0.0: version "1.0.0" resolved "https://registry.npmmirror.com/has-tostringtag/-/has-tostringtag-1.0.0.tgz#7e133818a7d394734f941e73c3d3f9291e658b25" @@ -16445,10 +20202,12 @@ has-tostringtag@^1.0.0: dependencies: has-symbols "^1.0.2" -has-unicode@2.0.1, has-unicode@^2.0.1: - version "2.0.1" - resolved "https://registry.npmmirror.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" - integrity sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ== +has-tostringtag@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/has-tostringtag/-/has-tostringtag-1.0.2.tgz#2cdc42d40bef2e5b4eeab7c01a73c54ce7ab5abc" + integrity sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw== + dependencies: + has-symbols "^1.0.3" hash-base@^3.0.0: version "3.1.0" @@ -16459,6 +20218,24 @@ hash-base@^3.0.0: readable-stream "^3.6.0" safe-buffer "^5.2.0" +hash-base@^3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.1.2.tgz#79d72def7611c3f6e3c3b5730652638001b10a74" + integrity sha512-Bb33KbowVTIj5s7Ked1OsqHUeCpz//tPwR+E2zJgJKo9Z5XolZ9b6bdUgjmYlwnWhoOQKoTd1TYToZGn5mAYOg== + dependencies: + inherits "^2.0.4" + readable-stream "^2.3.8" + safe-buffer "^5.2.1" + to-buffer "^1.2.1" + +hash-base@~3.0.4: + version "3.0.5" + resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.0.5.tgz#52480e285395cf7fba17dc4c9e47acdc7f248a8a" + integrity sha512-vXm0l45VbcHEVlTCzs8M+s0VeYsB2lnlAaThoLKGXr3bE/VWDOelNUnycUPEhKEaXARL2TEFjBOyUiM6+55KBg== + dependencies: + inherits "^2.0.4" + safe-buffer "^5.2.1" + hash.js@^1.0.0, hash.js@^1.0.3: version "1.1.7" resolved "https://registry.npmmirror.com/hash.js/-/hash.js-1.1.7.tgz#0babca538e8d4ee4a0f8988d68866537a003cf42" @@ -16474,11 +20251,81 @@ hasown@^2.0.0: dependencies: function-bind "^1.1.2" +hasown@^2.0.2: + version "2.0.3" + resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.3.tgz#5e5c2b15b60370a4c7930c383dfb76bf17bc403c" + integrity sha512-ej4AhfhfL2Q2zpMmLo7U1Uv9+PyhIZpgQLGT1F9miIGmiCJIoCgSmczFdrc97mWT4kVY72KA+WnnhJ5pghSvSg== + dependencies: + function-bind "^1.1.2" + +hast-util-from-parse5@^7.0.0: + version "7.1.2" + resolved "https://registry.yarnpkg.com/hast-util-from-parse5/-/hast-util-from-parse5-7.1.2.tgz#aecfef73e3ceafdfa4550716443e4eb7b02e22b0" + integrity sha512-Nz7FfPBuljzsN3tCQ4kCBKqdNhQE2l0Tn+X1ubgKBPRoiDIu1mL08Cfw4k7q71+Duyaw7DXDN+VTAp4Vh3oCOw== + dependencies: + "@types/hast" "^2.0.0" + "@types/unist" "^2.0.0" + hastscript "^7.0.0" + property-information "^6.0.0" + vfile "^5.0.0" + vfile-location "^4.0.0" + web-namespaces "^2.0.0" + hast-util-parse-selector@^2.0.0: version "2.2.5" resolved "https://registry.npmmirror.com/hast-util-parse-selector/-/hast-util-parse-selector-2.2.5.tgz#d57c23f4da16ae3c63b3b6ca4616683313499c3a" integrity sha512-7j6mrk/qqkSehsM92wQjdIgWM2/BW61u/53G6xmC8i1OmEdKLHbk419QKQUjz6LglWsfqoiHmyMRkP1BGjecNQ== +hast-util-parse-selector@^3.0.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/hast-util-parse-selector/-/hast-util-parse-selector-3.1.1.tgz#25ab00ae9e75cbc62cf7a901f68a247eade659e2" + integrity sha512-jdlwBjEexy1oGz0aJ2f4GKMaVKkA9jwjr4MjAAI22E5fM/TXVZHuS5OpONtdeIkRKqAaryQ2E9xNQxijoThSZA== + dependencies: + "@types/hast" "^2.0.0" + +hast-util-parse-selector@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/hast-util-parse-selector/-/hast-util-parse-selector-4.0.0.tgz#352879fa86e25616036037dd8931fb5f34cb4a27" + integrity sha512-wkQCkSYoOGCRKERFWcxMVMOcYE2K1AaNLU8DXS9arxnLOUEWbOXKXiJUNzEpqZ3JOKpnha3jkFrumEjVliDe7A== + dependencies: + "@types/hast" "^3.0.0" + +hast-util-raw@^7.2.0: + version "7.2.3" + resolved "https://registry.yarnpkg.com/hast-util-raw/-/hast-util-raw-7.2.3.tgz#dcb5b22a22073436dbdc4aa09660a644f4991d99" + integrity sha512-RujVQfVsOrxzPOPSzZFiwofMArbQke6DJjnFfceiEbFh7S05CbPt0cYN+A5YeD3pso0JQk6O1aHBnx9+Pm2uqg== + dependencies: + "@types/hast" "^2.0.0" + "@types/parse5" "^6.0.0" + hast-util-from-parse5 "^7.0.0" + hast-util-to-parse5 "^7.0.0" + html-void-elements "^2.0.0" + parse5 "^6.0.0" + unist-util-position "^4.0.0" + unist-util-visit "^4.0.0" + vfile "^5.0.0" + web-namespaces "^2.0.0" + zwitch "^2.0.0" + +hast-util-sanitize@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/hast-util-sanitize/-/hast-util-sanitize-4.1.0.tgz#d90f8521f5083547095c5c63a7e03150303e0286" + integrity sha512-Hd9tU0ltknMGRDv+d6Ro/4XKzBqQnP/EZrpiTbpFYfXv/uOhWeKc+2uajcbEvAEH98VZd7eII2PiXm13RihnLw== + dependencies: + "@types/hast" "^2.0.0" + +hast-util-to-parse5@^7.0.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/hast-util-to-parse5/-/hast-util-to-parse5-7.1.0.tgz#c49391bf8f151973e0c9adcd116b561e8daf29f3" + integrity sha512-YNRgAJkH2Jky5ySkIqFXTQiaqcAtJyVE+D5lkN6CdtOqrnkLfGYYrEcKuHOJZlp+MwjSwuD3fZuawI+sic/RBw== + dependencies: + "@types/hast" "^2.0.0" + comma-separated-tokens "^2.0.0" + property-information "^6.0.0" + space-separated-tokens "^2.0.0" + web-namespaces "^2.0.0" + zwitch "^2.0.0" + hast-util-whitespace@^2.0.0: version "2.0.1" resolved "https://registry.npmmirror.com/hast-util-whitespace/-/hast-util-whitespace-2.0.1.tgz#0ec64e257e6fc216c7d14c8a1b74d27d650b4557" @@ -16495,6 +20342,28 @@ hastscript@^6.0.0: property-information "^5.0.0" space-separated-tokens "^1.0.0" +hastscript@^7.0.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/hastscript/-/hastscript-7.2.0.tgz#0eafb7afb153d047077fa2a833dc9b7ec604d10b" + integrity sha512-TtYPq24IldU8iKoJQqvZOuhi5CyCQRAbvDOX0x1eW6rsHSxa/1i2CCiptNTotGHJ3VoHRGmqiv6/D3q113ikkw== + dependencies: + "@types/hast" "^2.0.0" + comma-separated-tokens "^2.0.0" + hast-util-parse-selector "^3.0.0" + property-information "^6.0.0" + space-separated-tokens "^2.0.0" + +hastscript@^9.0.0: + version "9.0.1" + resolved "https://registry.yarnpkg.com/hastscript/-/hastscript-9.0.1.tgz#dbc84bef6051d40084342c229c451cd9dc567dff" + integrity sha512-g7df9rMFX/SPi34tyGCyUBREQoKkapwdY/T04Qn9TDWfHhAYt4/I0gMVirzK5wEzeUqIjEB+LXC/ypb7Aqno5w== + dependencies: + "@types/hast" "^3.0.0" + comma-separated-tokens "^2.0.0" + hast-util-parse-selector "^4.0.0" + property-information "^7.0.0" + space-separated-tokens "^2.0.0" + he@^1.2.0: version "1.2.0" resolved "https://registry.npmmirror.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" @@ -16520,11 +20389,16 @@ hey-listen@^1.0.8: resolved "https://registry.npmmirror.com/hey-listen/-/hey-listen-1.0.8.tgz#8e59561ff724908de1aa924ed6ecc84a56a9aa68" integrity sha512-COpmrF2NOg4TBWUJ5UVyaCU2A88wEMkUPK4hNqyCkqHbxT92BbvfjoSozkAIIm6XhicGlJHhFdullInrdhwU8Q== -highlight.js@^10.4.1, highlight.js@^10.7.2, highlight.js@~10.7.0: +highlight.js@^10.4.1, highlight.js@^10.7.1, highlight.js@^10.7.2, highlight.js@~10.7.0: version "10.7.3" - resolved "https://registry.npmmirror.com/highlight.js/-/highlight.js-10.7.3.tgz#697272e3991356e40c3cac566a74eef681756531" + resolved "https://registry.yarnpkg.com/highlight.js/-/highlight.js-10.7.3.tgz#697272e3991356e40c3cac566a74eef681756531" integrity sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A== +highlightjs-vue@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/highlightjs-vue/-/highlightjs-vue-1.0.0.tgz#fdfe97fbea6354e70ee44e3a955875e114db086d" + integrity sha512-PDEfEF102G23vHmPhLyPboFCD+BkMGu+GuJe2d9/eH4FsCwvgBpnc9n0pGE+ffKdph38s6foEZiEjdgHdzp+IA== + history@^5.0.0: version "5.3.0" resolved "https://registry.npmmirror.com/history/-/history-5.3.0.tgz#1548abaa245ba47992f063a0783db91ef201c73b" @@ -16555,37 +20429,16 @@ homedir-polyfill@^1.0.1: dependencies: parse-passwd "^1.0.0" +hookified@^1.10.0: + version "1.15.1" + resolved "https://registry.yarnpkg.com/hookified/-/hookified-1.15.1.tgz#b1fafeaa5489cdc29cb85546a8f837ed4ffbbcb6" + integrity sha512-MvG/clsADq1GPM2KGo2nyfaWVyn9naPiXrqIe4jYjXNZQt238kWyOGrsyc/DmRAQ+Re6yeo6yX/yoNCG5KAEVg== + hoopy@^0.1.4: version "0.1.4" resolved "https://registry.npmmirror.com/hoopy/-/hoopy-0.1.4.tgz#609207d661100033a9a9402ad3dea677381c1b1d" integrity sha512-HRcs+2mr52W0K+x8RzcLzuPPmVIKMSv97RGHy0Ea9y/mpcaK+xTrjICA04KAHi4GRzxliNqNJEFYWHghy3rSfQ== -hosted-git-info@^2.1.4: - version "2.8.9" - resolved "https://registry.npmmirror.com/hosted-git-info/-/hosted-git-info-2.8.9.tgz#dffc0bf9a21c02209090f2aa69429e1414daf3f9" - integrity sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw== - -hosted-git-info@^3.0.6: - version "3.0.8" - resolved "https://registry.npmmirror.com/hosted-git-info/-/hosted-git-info-3.0.8.tgz#6e35d4cc87af2c5f816e4cb9ce350ba87a3f370d" - integrity sha512-aXpmwoOhRBrw6X3j0h5RloK4x1OzsxMPyxqIHyNfSe2pypkVTZFpEiRoSipPEPlMrh0HW/XsjkJ5WgnCirpNUw== - dependencies: - lru-cache "^6.0.0" - -hosted-git-info@^4.0.0, hosted-git-info@^4.0.1: - version "4.1.0" - resolved "https://registry.npmmirror.com/hosted-git-info/-/hosted-git-info-4.1.0.tgz#827b82867e9ff1c8d0c4d9d53880397d2c86d224" - integrity sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA== - dependencies: - lru-cache "^6.0.0" - -hosted-git-info@^6.0.0: - version "6.1.1" - resolved "https://registry.npmmirror.com/hosted-git-info/-/hosted-git-info-6.1.1.tgz#629442c7889a69c05de604d52996b74fe6f26d58" - integrity sha512-r0EI+HBMcXadMrugk0GCQ+6BQV39PiWAZVfq7oIckeGiN7sjRGyQxPdft3nQekFTCQbYxLBH+/axZMeH8UX6+w== - dependencies: - lru-cache "^7.5.1" - hpack.js@^2.1.6: version "2.1.6" resolved "https://registry.npmmirror.com/hpack.js/-/hpack.js-2.1.6.tgz#87774c0949e513f42e84575b3c45681fade2a0b2" @@ -16601,20 +20454,20 @@ hpagent@^1.2.0: resolved "https://registry.npmmirror.com/hpagent/-/hpagent-1.2.0.tgz#0ae417895430eb3770c03443456b8d90ca464903" integrity sha512-A91dYTeIB6NoXG+PxTQpCCDDnfHsW9kc06Lvpu1TEe9gnd6ZFeiBoRO9JvzEv6xK7EX97/dUE8g/vBMTqTS3CA== -html-encoding-sniffer@^2.0.1: - version "2.0.1" - resolved "https://registry.npmmirror.com/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz#42a6dc4fd33f00281176e8b23759ca4e4fa185f3" - integrity sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ== - dependencies: - whatwg-encoding "^1.0.5" - html-encoding-sniffer@^3.0.0: version "3.0.0" - resolved "https://registry.npmmirror.com/html-encoding-sniffer/-/html-encoding-sniffer-3.0.0.tgz#2cb1a8cf0db52414776e5b2a7a04d5dd98158de9" + resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-3.0.0.tgz#2cb1a8cf0db52414776e5b2a7a04d5dd98158de9" integrity sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA== dependencies: whatwg-encoding "^2.0.0" +html-encoding-sniffer@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-6.0.0.tgz#f8d9390b3b348b50d4f61c16dd2ef5c05980a882" + integrity sha512-CV9TW3Y3f8/wT0BRFc1/KAVQ3TUHiXmaAb6VW9vtiMFf7SLoMd1PdAc4W3KFOFETBJUb90KatHqlsZMWV+R9Gg== + dependencies: + "@exodus/bytes" "^1.6.0" + html-entities@^2.1.0: version "2.4.0" resolved "https://registry.npmmirror.com/html-entities/-/html-entities-2.4.0.tgz#edd0cee70402584c8c76cc2c0556db09d1f45061" @@ -16627,7 +20480,7 @@ html-entities@^2.4.0: html-escaper@^2.0.0: version "2.0.2" - resolved "https://registry.npmmirror.com/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453" + resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453" integrity sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg== html-minifier-terser@^6.0.2: @@ -16643,10 +20496,15 @@ html-minifier-terser@^6.0.2: relateurl "^0.2.7" terser "^5.10.0" -html-webpack-plugin@^5.3.1: - version "5.6.0" - resolved "https://registry.npmmirror.com/html-webpack-plugin/-/html-webpack-plugin-5.6.0.tgz#50a8fa6709245608cb00e811eacecb8e0d7b7ea0" - integrity sha512-iwaY4wzbe48AfKLZ/Cc8k0L+FKG6oSNRaZ8x5A/T/IVDGyXcbHncM9TdDa93wn0FsSm82FhTKW7f3vS61thXAw== +html-void-elements@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/html-void-elements/-/html-void-elements-2.0.1.tgz#29459b8b05c200b6c5ee98743c41b979d577549f" + integrity sha512-0quDb7s97CfemeJAnW9wC0hw78MtW7NU3hqtCD75g2vFlDLt36llsYD7uB7SUzojLMP24N5IatXf7ylGXiGG9A== + +html-webpack-plugin@^5.6.3: + version "5.6.7" + resolved "https://registry.yarnpkg.com/html-webpack-plugin/-/html-webpack-plugin-5.6.7.tgz#429bab4e12abf3c07e1c608886608e2df2c06b11" + integrity sha512-md+vXtdCAe60s1k6AU3dUyMJnDxUyQAwfwPKoLisvgUF1IXjtlLsk2se54+qfL9Mdm26bbwvjJybpNx48NKRLw== dependencies: "@types/html-minifier-terser" "^6.0.0" html-minifier-terser "^6.0.2" @@ -16664,7 +20522,7 @@ htmlparser2@^6.1.0: domutils "^2.5.2" entities "^2.0.0" -http-assert@^1.3.0: +http-assert@^1.3.0, http-assert@^1.5.0: version "1.5.0" resolved "https://registry.yarnpkg.com/http-assert/-/http-assert-1.5.0.tgz#c389ccd87ac16ed2dfa6246fd73b926aa00e6b8f" integrity sha512-uPpH7OKX4H25hBmU6G1jWNaqJGpTXxey+YOUizJUAgu0AjLUeC8D73hTrhvDS5D+GJN1DN1+hhc/eF/wpxtp0w== @@ -16672,7 +20530,7 @@ http-assert@^1.3.0: deep-equal "~1.0.1" http-errors "~1.8.0" -http-cache-semantics@^4.0.0, http-cache-semantics@^4.1.0, http-cache-semantics@^4.1.1: +http-cache-semantics@^4.1.1: version "4.1.1" resolved "https://registry.npmmirror.com/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz#abe02fcb2985460bf0323be664436ec3476a6d5a" integrity sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ== @@ -16682,6 +20540,15 @@ http-deceiver@^1.2.7: resolved "https://registry.npmmirror.com/http-deceiver/-/http-deceiver-1.2.7.tgz#fa7168944ab9a519d337cb0bec7284dc3e723d87" integrity sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw== +http-encoding@^2.0.1: + version "2.2.0" + resolved "https://registry.yarnpkg.com/http-encoding/-/http-encoding-2.2.0.tgz#add47748bd903c61f27d7438a6ce6e9c2335e037" + integrity sha512-sotL89NNHWS7TjaoswmKkNKf57+nAYCg3fbGCclpNLriVGkOSgrAWQ9DLqahnwacY+gednJk+HFdZrpKw/Ff6w== + dependencies: + brotli-wasm "^3.0.0" + pify "^5.0.0" + zstd-codec "^0.1.5" + http-errors@2.0.0: version "2.0.0" resolved "https://registry.npmmirror.com/http-errors/-/http-errors-2.0.0.tgz#b7774a1486ef73cf7667ac9ae0858c012c57b9d3" @@ -16704,6 +20571,17 @@ http-errors@^1.6.3, http-errors@~1.8.0: statuses ">= 1.5.0 < 2" toidentifier "1.0.1" +http-errors@^2.0.0, http-errors@~2.0.0, http-errors@~2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-2.0.1.tgz#36d2f65bc909c8790018dd36fb4d93da6caae06b" + integrity sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ== + dependencies: + depd "~2.0.0" + inherits "~2.0.4" + setprototypeof "~1.2.0" + statuses "~2.0.2" + toidentifier "~1.0.1" + http-errors@~1.6.2: version "1.6.3" resolved "https://registry.npmmirror.com/http-errors/-/http-errors-1.6.3.tgz#8b55680bb4be283a0b5bf4ea2e38580be1d9320d" @@ -16719,15 +20597,6 @@ http-parser-js@>=0.5.1: resolved "https://registry.npmmirror.com/http-parser-js/-/http-parser-js-0.5.8.tgz#af23090d9ac4e24573de6f6aecc9d84a48bf20e3" integrity sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q== -http-proxy-agent@^4.0.1: - version "4.0.1" - resolved "https://registry.npmmirror.com/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz#8a8c8ef7f5932ccf953c296ca8291b95aa74aa3a" - integrity sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg== - dependencies: - "@tootallnate/once" "1" - agent-base "6" - debug "4" - http-proxy-agent@^5.0.0: version "5.0.0" resolved "https://registry.npmmirror.com/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz#5129800203520d434f142bc78ff3c170800f2b43" @@ -16737,6 +20606,14 @@ http-proxy-agent@^5.0.0: agent-base "6" debug "4" +http-proxy-agent@^7.0.0, http-proxy-agent@^7.0.2: + version "7.0.2" + resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz#9a8b1f246866c028509486585f62b8f2c18c270e" + integrity sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig== + dependencies: + agent-base "^7.1.0" + debug "^4.3.4" + http-proxy-middleware@*: version "3.0.0" resolved "https://registry.npmmirror.com/http-proxy-middleware/-/http-proxy-middleware-3.0.0.tgz#550790357d6f92a9b82ab2d63e07343a791cf26b" @@ -16760,6 +20637,17 @@ http-proxy-middleware@^2.0.0, http-proxy-middleware@^2.0.3, http-proxy-middlewar is-plain-obj "^3.0.0" micromatch "^4.0.2" +http-proxy-middleware@^2.0.9: + version "2.0.9" + resolved "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-2.0.9.tgz#e9e63d68afaa4eee3d147f39149ab84c0c2815ef" + integrity sha512-c1IyJYLYppU574+YI7R4QyX2ystMtVXZwIdzazUIPIJsHuWNd+mho2j+bKoHftndicGj9yh+xjd+l0yj7VeT1Q== + dependencies: + "@types/http-proxy" "^1.17.8" + http-proxy "^1.18.1" + is-glob "^4.0.1" + is-plain-obj "^3.0.0" + micromatch "^4.0.2" + http-proxy@^1.18.1: version "1.18.1" resolved "https://registry.npmmirror.com/http-proxy/-/http-proxy-1.18.1.tgz#401541f0534884bbf95260334e72f88ee3976549" @@ -16778,13 +20666,13 @@ http-signature@~1.2.0: jsprim "^1.2.2" sshpk "^1.7.0" -http2-wrapper@^1.0.0-beta.5.2: - version "1.0.3" - resolved "https://registry.npmmirror.com/http2-wrapper/-/http2-wrapper-1.0.3.tgz#b8f55e0c1f25d4ebd08b3b0c2c079f9590800b3d" - integrity sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg== +http2-wrapper@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/http2-wrapper/-/http2-wrapper-2.2.1.tgz#310968153dcdedb160d8b72114363ef5fce1f64a" + integrity sha512-V5nVw1PAOgfI3Lmeaj2Exmeg7fenjhRUgz1lPSezy1CuhPYbgQtbQj4jZfEAEMlaL+vupsvhjqCyjzob0yxsmQ== dependencies: quick-lru "^5.1.1" - resolve-alpn "^1.0.0" + resolve-alpn "^1.2.0" https-browserify@^1.0.0: version "1.0.0" @@ -16807,6 +20695,14 @@ https-proxy-agent@^7.0.1: agent-base "^7.0.2" debug "4" +https-proxy-agent@^7.0.6: + version "7.0.6" + resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz#da8dfeac7da130b05c2ba4b59c9b6cd66611a6b9" + integrity sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw== + dependencies: + agent-base "^7.1.2" + debug "4" + human-signals@^2.1.0: version "2.1.0" resolved "https://registry.npmmirror.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0" @@ -16841,7 +20737,7 @@ i18next@^22.4.15: dependencies: "@babel/runtime" "^7.20.6" -iconv-lite@0.4.24, iconv-lite@^0.4.24: +iconv-lite@0.4.24, iconv-lite@^0.4.24, iconv-lite@~0.4.24: version "0.4.24" resolved "https://registry.npmmirror.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== @@ -16865,6 +20761,13 @@ icss-utils@^5.0.0, icss-utils@^5.1.0: resolved "https://registry.npmmirror.com/icss-utils/-/icss-utils-5.1.0.tgz#c6be6858abd013d768e98366ae47e25d5887b1ae" integrity sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA== +idb-keyval@5.1.5: + version "5.1.5" + resolved "https://registry.yarnpkg.com/idb-keyval/-/idb-keyval-5.1.5.tgz#be11174bac0cb756dba4cc86fb36b6cd63f5ce6d" + integrity sha512-J1utxYWQokYjy01LvDQ7WmiAtZCGUSkVi9EIBfUSyLOr/BesnMIxNGASTh9A1LzeISSjSqEPsfFdTss7EE7ofQ== + dependencies: + safari-14-idb-fix "^1.0.6" + identity-obj-proxy@3.0.0: version "3.0.0" resolved "https://registry.npmmirror.com/identity-obj-proxy/-/identity-obj-proxy-3.0.0.tgz#94d2bda96084453ef36fbc5aaec37e0f79f1fc14" @@ -16884,18 +20787,16 @@ ignore-walk@^5.0.1: dependencies: minimatch "^5.0.1" -ignore-walk@^6.0.0: - version "6.0.4" - resolved "https://registry.npmmirror.com/ignore-walk/-/ignore-walk-6.0.4.tgz#89950be94b4f522225eb63a13c56badb639190e9" - integrity sha512-t7sv42WkwFkyKbivUCglsQW5YWMskWtbEf4MNKX5u/CCWHKSPzN4FtBQGsQZgCLbxOzpVlcbWVK5KB3auIOjSw== - dependencies: - minimatch "^9.0.0" - -ignore@^5.0.4, ignore@^5.1.4, ignore@^5.2.0, ignore@^5.2.4: +ignore@^5.1.4, ignore@^5.2.0: version "5.3.0" resolved "https://registry.npmmirror.com/ignore/-/ignore-5.3.0.tgz#67418ae40d34d6999c95ff56016759c718c82f78" integrity sha512-g7dmpshy+gD7mh88OC9NwSGTKoc3kyLAZQRU1mt53Aw/vnvfXnbC+F/7F7QoYVKbV+KNvJx8wArewKy1vXMtlg== +ignore@^7.0.5: + version "7.0.5" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-7.0.5.tgz#4cb5f6cd7d4c7ab0365738c7aea888baa6d7efd9" + integrity sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg== + immediate@~3.0.5: version "3.0.6" resolved "https://registry.npmmirror.com/immediate/-/immediate-3.0.6.tgz#9db1dbd0faf8de6fbe0f5dd5e56bb606280de69b" @@ -16933,10 +20834,10 @@ import-from@^3.0.0: dependencies: resolve-from "^5.0.0" -import-local@3.1.0, import-local@^3.0.2: - version "3.1.0" - resolved "https://registry.npmmirror.com/import-local/-/import-local-3.1.0.tgz#b4479df8a5fd44f6cdce24070675676063c95cb4" - integrity sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg== +import-local@^3.0.2: + version "3.2.0" + resolved "https://registry.yarnpkg.com/import-local/-/import-local-3.2.0.tgz#c3d5c745798c02a6f8b897726aba5100186ee260" + integrity sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA== dependencies: pkg-dir "^4.2.0" resolve-cwd "^3.0.0" @@ -16951,10 +20852,16 @@ indent-string@^4.0.0: resolved "https://registry.npmmirror.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251" integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== -infer-owner@^1.0.4: - version "1.0.4" - resolved "https://registry.npmmirror.com/infer-owner/-/infer-owner-1.0.4.tgz#c4cefcaa8e51051c2a40ba2ce8a3d27295af9467" - integrity sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A== +infinispan@^0.12.0: + version "0.12.0" + resolved "https://registry.yarnpkg.com/infinispan/-/infinispan-0.12.0.tgz#15d9cad99cdabb2a6a72efaf0ee78dffc526ea30" + integrity sha512-oKvFUOKXZj36onrdS8BE/6AKwyCqsjdXlEln6iuqqNtcLGXO15XdmDgsTzK78ha2XMCzoDNFmfK+K02OxrOuWQ== + dependencies: + buffer-xor "^2.0.2" + log4js "^6.4.6" + protobufjs "^7.0.0" + underscore "^1.13.3" + urllib "^3.23.0" inflight@^1.0.4: version "1.0.6" @@ -16964,7 +20871,7 @@ inflight@^1.0.4: once "^1.3.0" wrappy "1" -inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.1, inherits@~2.0.3, inherits@~2.0.4: +inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.3, inherits@~2.0.4: version "2.0.4" resolved "https://registry.npmmirror.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== @@ -16974,24 +20881,11 @@ inherits@2.0.3: resolved "https://registry.npmmirror.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" integrity sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw== -ini@^1.3.2, ini@^1.3.4, ini@^1.3.5, ini@^1.3.8, ini@~1.3.0: +ini@^1.3.4, ini@^1.3.5, ini@~1.3.0: version "1.3.8" resolved "https://registry.npmmirror.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c" integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== -init-package-json@5.0.0: - version "5.0.0" - resolved "https://registry.npmmirror.com/init-package-json/-/init-package-json-5.0.0.tgz#030cf0ea9c84cfc1b0dc2e898b45d171393e4b40" - integrity sha512-kBhlSheBfYmq3e0L1ii+VKe3zBTLL5lDCDWR+f9dLmEGSB3MqLlMlsolubSsyI88Bg6EA+BIMlomAnQ1SwgQBw== - dependencies: - npm-package-arg "^10.0.0" - promzard "^1.0.0" - read "^2.0.0" - read-package-json "^6.0.0" - semver "^7.3.5" - validate-npm-package-license "^3.0.4" - validate-npm-package-name "^5.0.0" - inline-style-parser@0.1.1: version "0.1.1" resolved "https://registry.npmmirror.com/inline-style-parser/-/inline-style-parser-0.1.1.tgz#ec8a3b429274e9c0a1f1c4ffa9453a7fef72cea1" @@ -17005,7 +20899,14 @@ inline-style-prefixer@^7.0.0: css-in-js-utils "^3.1.0" fast-loops "^1.1.3" -inquirer@^8.2.0, inquirer@^8.2.4: +inline-style-prefixer@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/inline-style-prefixer/-/inline-style-prefixer-7.0.1.tgz#9310f3cfa2c6f3901d1480f373981c02691781e8" + integrity sha512-lhYo5qNTQp3EvSSp3sRvXMbVQTLrvGV6DycRMJ5dm2BLMiJ30wpXKdDdgX+GmJZ5uQMucwRKHamXSst3Sj/Giw== + dependencies: + css-in-js-utils "^3.1.0" + +inquirer@^8.2.0: version "8.2.6" resolved "https://registry.npmmirror.com/inquirer/-/inquirer-8.2.6.tgz#733b74888195d8d400a67ac332011b5fae5ea562" integrity sha512-M1WuAmb7pn9zdFRtQYk26ZBoY043Sse0wVDdk4Bppr+JOXyQYybdtvK+l9wUibhtjdjvtoiNy8tk+EgsYIUqKg== @@ -17035,11 +20936,30 @@ internal-slot@^1.0.4, internal-slot@^1.0.5: hasown "^2.0.0" side-channel "^1.0.4" +internal-slot@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.1.0.tgz#1eac91762947d2f7056bc838d93e13b2e9604961" + integrity sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw== + dependencies: + es-errors "^1.3.0" + hasown "^2.0.2" + side-channel "^1.1.0" + interpret@^2.2.0: version "2.2.0" resolved "https://registry.npmmirror.com/interpret/-/interpret-2.2.0.tgz#1a78a0b5965c40a5416d007ad6f50ad27c417df9" integrity sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw== +intl-messageformat@^10.1.0: + version "10.7.18" + resolved "https://registry.yarnpkg.com/intl-messageformat/-/intl-messageformat-10.7.18.tgz#51a6f387afbca9b0f881b2ec081566db8c540b0d" + integrity sha512-m3Ofv/X/tV8Y3tHXLohcuVuhWKo7BBq62cqY15etqmLxg2DZ34AGGgQDeR+SCta2+zICb1NX83af0GJmbQ1++g== + dependencies: + "@formatjs/ecma402-abstract" "2.3.6" + "@formatjs/fast-memoize" "2.2.7" + "@formatjs/icu-messageformat-parser" "2.11.4" + tslib "^2.8.0" + invariant@^2.2.2, invariant@^2.2.4: version "2.2.4" resolved "https://registry.npmmirror.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6" @@ -17079,6 +20999,31 @@ ioredis@^5.3.2: redis-parser "^3.0.0" standard-as-callback "^2.1.0" +iovalkey@^0.3.3: + version "0.3.3" + resolved "https://registry.yarnpkg.com/iovalkey/-/iovalkey-0.3.3.tgz#a4df1b2834df9aa3423b280a5b5a803138b4434c" + integrity sha512-4rTJX6Q5wTYEvxboXi8DsEiUo+OvqJGtLYOSGm37KpdRXsG5XJjbVtYKGJpPSWP+QT7rWscA4vsrdmzbEbenpw== + dependencies: + "@iovalkey/commands" "^0.1.0" + cluster-key-slot "^1.1.0" + debug "^4.3.4" + denque "^2.1.0" + lodash.defaults "^4.2.0" + lodash.isarguments "^3.1.0" + redis-errors "^1.2.0" + redis-parser "^3.0.0" + standard-as-callback "^2.1.0" + +ip-address@10.1.0, ip-address@^10.0.1: + version "10.1.0" + resolved "https://registry.yarnpkg.com/ip-address/-/ip-address-10.1.0.tgz#d8dcffb34d0e02eb241427444a6e23f5b0595aa4" + integrity sha512-XXADHxXmvT9+CRxhXg56LJovE+bmWnEWB78LB83VZTprKTmaC5QfruXocxzTZ2Kl0DNwKuBdlIhjL8LeY8Sf8Q== + +ip-regex@^4.1.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-4.3.0.tgz#687275ab0f57fa76978ff8f4dddc8a23d5990db5" + integrity sha512-B9ZWJxHHOHUhUjCPrMpLD4xEq35bUTClHM1S6CBU5ixQnkZmwipwgc96vAd7AAGM9TGHvJR+Uss+/Ak6UphK+Q== + ip@^2.0.0: version "2.0.0" resolved "https://registry.npmmirror.com/ip/-/ip-2.0.0.tgz#4cf4ab182fee2314c75ede1276f8c80b479936da" @@ -17094,11 +21039,21 @@ ipaddr.js@^2.1.0: resolved "https://registry.npmmirror.com/ipaddr.js/-/ipaddr.js-2.2.0.tgz#d33fa7bac284f4de7af949638c9d68157c6b92e8" integrity sha512-Ag3wB2o37wslZS19hZqorUnrnzSkpOVy+IiiDEiTqNubEYpYuHWIf6K4psgN2ZWKExS4xhVCrRVfb/wfW8fWJA== +ipaddr.js@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-2.3.0.tgz#71dce70e1398122208996d1c22f2ba46a24b1abc" + integrity sha512-Zv/pA+ciVFbCSBBjGfaKUya/CcGmUHzTydLMaTwrUUEM2DIEO3iZvueGxmacvmN50fGpGVKeTXpb2LcYQxeVdg== + is-alphabetical@^1.0.0: version "1.0.4" resolved "https://registry.npmmirror.com/is-alphabetical/-/is-alphabetical-1.0.4.tgz#9e7d6b94916be22153745d184c298cbf986a686d" integrity sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg== +is-alphabetical@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/is-alphabetical/-/is-alphabetical-2.0.1.tgz#01072053ea7c1036df3c7d19a6daaec7f19e789b" + integrity sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ== + is-alphanumerical@^1.0.0: version "1.0.4" resolved "https://registry.npmmirror.com/is-alphanumerical/-/is-alphanumerical-1.0.4.tgz#7eb9a2431f855f6b1ef1a78e326df515696c4dbf" @@ -17107,6 +21062,14 @@ is-alphanumerical@^1.0.0: is-alphabetical "^1.0.0" is-decimal "^1.0.0" +is-alphanumerical@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/is-alphanumerical/-/is-alphanumerical-2.0.1.tgz#7c03fbe96e3e931113e57f964b0a368cc2dfd875" + integrity sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw== + dependencies: + is-alphabetical "^2.0.0" + is-decimal "^2.0.0" + is-arguments@^1.0.4, is-arguments@^1.1.1: version "1.1.1" resolved "https://registry.npmmirror.com/is-arguments/-/is-arguments-1.1.1.tgz#15b3f88fda01f2a97fec84ca761a560f123efa9b" @@ -17124,6 +21087,15 @@ is-array-buffer@^3.0.1, is-array-buffer@^3.0.2: get-intrinsic "^1.2.0" is-typed-array "^1.1.10" +is-array-buffer@^3.0.4, is-array-buffer@^3.0.5: + version "3.0.5" + resolved "https://registry.yarnpkg.com/is-array-buffer/-/is-array-buffer-3.0.5.tgz#65742e1e687bd2cc666253068fd8707fe4d44280" + integrity sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A== + dependencies: + call-bind "^1.0.8" + call-bound "^1.0.3" + get-intrinsic "^1.2.6" + is-arrayish@^0.2.1: version "0.2.1" resolved "https://registry.npmmirror.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" @@ -17148,6 +21120,13 @@ is-bigint@^1.0.1: dependencies: has-bigints "^1.0.1" +is-bigint@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-bigint/-/is-bigint-1.1.0.tgz#dda7a3445df57a42583db4228682eba7c4170672" + integrity sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ== + dependencies: + has-bigints "^1.0.2" + is-binary-path@~2.1.0: version "2.1.0" resolved "https://registry.npmmirror.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" @@ -17163,6 +21142,14 @@ is-boolean-object@^1.1.0: call-bind "^1.0.2" has-tostringtag "^1.0.0" +is-boolean-object@^1.2.1: + version "1.2.2" + resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.2.2.tgz#7067f47709809a393c71ff5bb3e135d8a9215d9e" + integrity sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A== + dependencies: + call-bound "^1.0.3" + has-tostringtag "^1.0.2" + is-buffer@^2.0.0: version "2.0.5" resolved "https://registry.npmmirror.com/is-buffer/-/is-buffer-2.0.5.tgz#ebc252e400d22ff8d77fa09888821a24a658c191" @@ -17180,20 +21167,36 @@ is-callable@^1.1.3, is-callable@^1.1.4, is-callable@^1.2.7: resolved "https://registry.npmmirror.com/is-callable/-/is-callable-1.2.7.tgz#3bc2a85ea742d9e36205dcacdd72ca1fdc51b055" integrity sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA== -is-ci@3.0.1: - version "3.0.1" - resolved "https://registry.npmmirror.com/is-ci/-/is-ci-3.0.1.tgz#db6ecbed1bd659c43dac0f45661e7674103d1867" - integrity sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ== +is-cidr@^4.0.0: + version "4.0.2" + resolved "https://registry.yarnpkg.com/is-cidr/-/is-cidr-4.0.2.tgz#94c7585e4c6c77ceabf920f8cde51b8c0fda8814" + integrity sha512-z4a1ENUajDbEl/Q6/pVBpTR1nBjjEE1X7qb7bmWYanNnPoKAvUCPFKeXV6Fe4mgTkWKBqiHIcwsI3SndiO5FeA== dependencies: - ci-info "^3.2.0" + cidr-regex "^3.1.1" -is-core-module@^2.13.0, is-core-module@^2.13.1, is-core-module@^2.5.0, is-core-module@^2.8.1: +is-core-module@^2.13.0: version "2.13.1" resolved "https://registry.npmmirror.com/is-core-module/-/is-core-module-2.13.1.tgz#ad0d7532c6fea9da1ebdc82742d74525c6273384" integrity sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw== dependencies: hasown "^2.0.0" +is-core-module@^2.16.1: + version "2.16.1" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.16.1.tgz#2a98801a849f43e2add644fbb6bc6229b19a4ef4" + integrity sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w== + dependencies: + hasown "^2.0.2" + +is-data-view@^1.0.1, is-data-view@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-data-view/-/is-data-view-1.0.2.tgz#bae0a41b9688986c2188dda6657e56b8f9e63b8e" + integrity sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw== + dependencies: + call-bound "^1.0.2" + get-intrinsic "^1.2.6" + is-typed-array "^1.1.13" + is-date-object@^1.0.1, is-date-object@^1.0.5: version "1.0.5" resolved "https://registry.npmmirror.com/is-date-object/-/is-date-object-1.0.5.tgz#0841d5536e724c25597bf6ea62e1bd38298df31f" @@ -17201,11 +21204,24 @@ is-date-object@^1.0.1, is-date-object@^1.0.5: dependencies: has-tostringtag "^1.0.0" +is-date-object@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.1.0.tgz#ad85541996fc7aa8b2729701d27b7319f95d82f7" + integrity sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg== + dependencies: + call-bound "^1.0.2" + has-tostringtag "^1.0.2" + is-decimal@^1.0.0: version "1.0.4" resolved "https://registry.npmmirror.com/is-decimal/-/is-decimal-1.0.4.tgz#65a3a5958a1c5b63a706e1b333d7cd9f630d3fa5" integrity sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw== +is-decimal@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/is-decimal/-/is-decimal-2.0.1.tgz#9469d2dc190d0214fd87d78b78caecc0cc14eef7" + integrity sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A== + is-docker@^2.0.0, is-docker@^2.1.1: version "2.2.1" resolved "https://registry.npmmirror.com/is-docker/-/is-docker-2.2.1.tgz#33eeabe23cfe86f14bde4408a02c0cfb853acdaa" @@ -17221,12 +21237,12 @@ is-extglob@^2.1.1: resolved "https://registry.npmmirror.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== -is-finalizationregistry@^1.0.2: - version "1.0.2" - resolved "https://registry.npmmirror.com/is-finalizationregistry/-/is-finalizationregistry-1.0.2.tgz#c8749b65f17c133313e661b1289b95ad3dbd62e6" - integrity sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw== +is-finalizationregistry@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/is-finalizationregistry/-/is-finalizationregistry-1.1.1.tgz#eefdcdc6c94ddd0674d9c85887bf93f944a97c90" + integrity sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg== dependencies: - call-bind "^1.0.2" + call-bound "^1.0.3" is-fullwidth-code-point@^3.0.0: version "3.0.0" @@ -17235,7 +21251,7 @@ is-fullwidth-code-point@^3.0.0: is-generator-fn@^2.0.0: version "2.1.0" - resolved "https://registry.npmmirror.com/is-generator-fn/-/is-generator-fn-2.1.0.tgz#7d140adc389aaf3011a8f2a2a4cfa6faadffb118" + resolved "https://registry.yarnpkg.com/is-generator-fn/-/is-generator-fn-2.1.0.tgz#7d140adc389aaf3011a8f2a2a4cfa6faadffb118" integrity sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ== is-generator-function@^1.0.10, is-generator-function@^1.0.7: @@ -17257,6 +21273,11 @@ is-hexadecimal@^1.0.0: resolved "https://registry.npmmirror.com/is-hexadecimal/-/is-hexadecimal-1.0.4.tgz#cc35c97588da4bd49a8eedd6bc4082d44dcb23a7" integrity sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw== +is-hexadecimal@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/is-hexadecimal/-/is-hexadecimal-2.0.1.tgz#86b5bf668fca307498d319dfc03289d781a90027" + integrity sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg== + is-in-browser@^1.0.2, is-in-browser@^1.1.3: version "1.1.3" resolved "https://registry.npmmirror.com/is-in-browser/-/is-in-browser-1.1.3.tgz#56ff4db683a078c6082eb95dad7dc62e1d04f835" @@ -17284,16 +21305,34 @@ is-map@^2.0.1, is-map@^2.0.2: resolved "https://registry.npmmirror.com/is-map/-/is-map-2.0.2.tgz#00922db8c9bf73e81b7a335827bc2a43f2b91127" integrity sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg== +is-map@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/is-map/-/is-map-2.0.3.tgz#ede96b7fe1e270b3c4465e3a465658764926d62e" + integrity sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw== + is-module@^1.0.0: version "1.0.0" resolved "https://registry.npmmirror.com/is-module/-/is-module-1.0.0.tgz#3258fb69f78c14d5b815d664336b4cffb6441591" integrity sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g== +is-nan@^1.3.2: + version "1.3.2" + resolved "https://registry.yarnpkg.com/is-nan/-/is-nan-1.3.2.tgz#043a54adea31748b55b6cd4e09aadafa69bd9e1d" + integrity sha512-E+zBKpQ2t6MEo1VsonYmluk9NxGrbzpeeLC2xIViuO2EjU2xsXsBPwTr3Ykv9l08UYEVEdWeRZNouaZqF6RN0w== + dependencies: + call-bind "^1.0.0" + define-properties "^1.1.3" + is-negative-zero@^2.0.2: version "2.0.2" resolved "https://registry.npmmirror.com/is-negative-zero/-/is-negative-zero-2.0.2.tgz#7bf6f03a28003b8b3965de3ac26f664d765f3150" integrity sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA== +is-negative-zero@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.3.tgz#ced903a027aca6381b777a5743069d7376a49747" + integrity sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw== + is-network-error@^1.0.0: version "1.1.0" resolved "https://registry.npmmirror.com/is-network-error/-/is-network-error-1.1.0.tgz#d26a760e3770226d11c169052f266a4803d9c997" @@ -17311,26 +21350,24 @@ is-number-object@^1.0.4: dependencies: has-tostringtag "^1.0.0" +is-number-object@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.1.1.tgz#144b21e95a1bc148205dcc2814a9134ec41b2541" + integrity sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw== + dependencies: + call-bound "^1.0.3" + has-tostringtag "^1.0.2" + is-number@^7.0.0: version "7.0.0" resolved "https://registry.npmmirror.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== -is-obj@^2.0.0: - version "2.0.0" - resolved "https://registry.npmmirror.com/is-obj/-/is-obj-2.0.0.tgz#473fb05d973705e3fd9620545018ca8e22ef4982" - integrity sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w== - is-path-inside@^3.0.3: version "3.0.3" resolved "https://registry.npmmirror.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283" integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ== -is-plain-obj@^1.0.0, is-plain-obj@^1.1.0: - version "1.1.0" - resolved "https://registry.npmmirror.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" - integrity sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg== - is-plain-obj@^3.0.0: version "3.0.0" resolved "https://registry.npmmirror.com/is-plain-obj/-/is-plain-obj-3.0.0.tgz#af6f2ea14ac5a646183a5bbdb5baabbc156ad9d7" @@ -17388,6 +21425,16 @@ is-regex@^1.1.4: call-bind "^1.0.2" has-tostringtag "^1.0.0" +is-regex@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.2.1.tgz#76d70a3ed10ef9be48eb577887d74205bf0cad22" + integrity sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g== + dependencies: + call-bound "^1.0.2" + gopd "^1.2.0" + has-tostringtag "^1.0.2" + hasown "^2.0.2" + is-root@^2.1.0: version "2.1.0" resolved "https://registry.npmmirror.com/is-root/-/is-root-2.1.0.tgz#809e18129cf1129644302a4f8544035d51984a9c" @@ -17398,12 +21445,24 @@ is-set@^2.0.1, is-set@^2.0.2: resolved "https://registry.npmmirror.com/is-set/-/is-set-2.0.2.tgz#90755fa4c2562dc1c5d4024760d6119b94ca18ec" integrity sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g== +is-set@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/is-set/-/is-set-2.0.3.tgz#8ab209ea424608141372ded6e0cb200ef1d9d01d" + integrity sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg== + is-shared-array-buffer@^1.0.2: version "1.0.2" resolved "https://registry.npmmirror.com/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz#8f259c573b60b6a32d4058a1a07430c0a7344c79" integrity sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA== dependencies: - call-bind "^1.0.2" + call-bind "^1.0.2" + +is-shared-array-buffer@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-shared-array-buffer/-/is-shared-array-buffer-1.0.4.tgz#9b67844bd9b7f246ba0708c3a93e34269c774f6f" + integrity sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A== + dependencies: + call-bound "^1.0.3" is-ssh@^1.4.0: version "1.4.0" @@ -17412,12 +21471,7 @@ is-ssh@^1.4.0: dependencies: protocols "^2.0.1" -is-stream@2.0.0: - version "2.0.0" - resolved "https://registry.npmmirror.com/is-stream/-/is-stream-2.0.0.tgz#bde9c32680d6fae04129d6ac9d921ce7815f78e3" - integrity sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw== - -is-stream@^2.0.0: +is-stream@^2.0.0, is-stream@^2.0.1: version "2.0.1" resolved "https://registry.npmmirror.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077" integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== @@ -17429,6 +21483,14 @@ is-string@^1.0.5, is-string@^1.0.7: dependencies: has-tostringtag "^1.0.0" +is-string@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.1.1.tgz#92ea3f3d5c5b6e039ca8677e5ac8d07ea773cbb9" + integrity sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA== + dependencies: + call-bound "^1.0.3" + has-tostringtag "^1.0.2" + is-symbol@^1.0.2, is-symbol@^1.0.3: version "1.0.4" resolved "https://registry.npmmirror.com/is-symbol/-/is-symbol-1.0.4.tgz#a6dac93b635b063ca6872236de88910a57af139c" @@ -17436,12 +21498,14 @@ is-symbol@^1.0.2, is-symbol@^1.0.3: dependencies: has-symbols "^1.0.2" -is-text-path@^1.0.1: - version "1.0.1" - resolved "https://registry.npmmirror.com/is-text-path/-/is-text-path-1.0.1.tgz#4e1aa0fb51bfbcb3e92688001397202c1775b66e" - integrity sha512-xFuJpne9oFz5qDaodwmmG08e3CawH/2ZV8Qqza1Ko7Sk8POWbkRdwIoAWVhqvq0XeUzANEhKo2n0IXUGBm7A/w== +is-symbol@^1.0.4, is-symbol@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.1.1.tgz#f47761279f532e2b05a7024a7506dbbedacd0634" + integrity sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w== dependencies: - text-extensions "^1.0.0" + call-bound "^1.0.2" + has-symbols "^1.1.0" + safe-regex-test "^1.1.0" is-typed-array@^1.1.10, is-typed-array@^1.1.12, is-typed-array@^1.1.3, is-typed-array@^1.1.9: version "1.1.12" @@ -17450,6 +21514,13 @@ is-typed-array@^1.1.10, is-typed-array@^1.1.12, is-typed-array@^1.1.3, is-typed- dependencies: which-typed-array "^1.1.11" +is-typed-array@^1.1.13, is-typed-array@^1.1.14, is-typed-array@^1.1.15: + version "1.1.15" + resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.15.tgz#4bfb4a45b61cee83a5a46fba778e4e8d59c0ce0b" + integrity sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ== + dependencies: + which-typed-array "^1.1.16" + is-typedarray@~1.0.0: version "1.0.0" resolved "https://registry.npmmirror.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" @@ -17465,6 +21536,11 @@ is-weakmap@^2.0.1: resolved "https://registry.npmmirror.com/is-weakmap/-/is-weakmap-2.0.1.tgz#5008b59bdc43b698201d18f62b37b2ca243e8cf2" integrity sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA== +is-weakmap@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/is-weakmap/-/is-weakmap-2.0.2.tgz#bf72615d649dfe5f699079c54b83e47d1ae19cfd" + integrity sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w== + is-weakref@^1.0.2: version "1.0.2" resolved "https://registry.npmmirror.com/is-weakref/-/is-weakref-1.0.2.tgz#9529f383a9338205e89765e0392efc2f100f06f2" @@ -17472,6 +21548,13 @@ is-weakref@^1.0.2: dependencies: call-bind "^1.0.2" +is-weakref@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/is-weakref/-/is-weakref-1.1.1.tgz#eea430182be8d64174bd96bffbc46f21bf3f9293" + integrity sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew== + dependencies: + call-bound "^1.0.3" + is-weakset@^2.0.1: version "2.0.2" resolved "https://registry.npmmirror.com/is-weakset/-/is-weakset-2.0.2.tgz#4569d67a747a1ce5a994dfd4ef6dcea76e7c0a1d" @@ -17480,12 +21563,20 @@ is-weakset@^2.0.1: call-bind "^1.0.2" get-intrinsic "^1.1.1" +is-weakset@^2.0.3: + version "2.0.4" + resolved "https://registry.yarnpkg.com/is-weakset/-/is-weakset-2.0.4.tgz#c9f5deb0bc1906c6d6f1027f284ddf459249daca" + integrity sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ== + dependencies: + call-bound "^1.0.3" + get-intrinsic "^1.2.6" + is-windows@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA== -is-wsl@^2.1.1, is-wsl@^2.2.0: +is-wsl@^2.2.0: version "2.2.0" resolved "https://registry.npmmirror.com/is-wsl/-/is-wsl-2.2.0.tgz#74a4c76e77ca9fd3f932f290c17ea326cd157271" integrity sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww== @@ -17499,16 +21590,16 @@ is-wsl@^3.1.0: dependencies: is-inside-container "^1.0.0" -isarray@^1.0.0, isarray@~1.0.0: - version "1.0.0" - resolved "https://registry.npmmirror.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" - integrity sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ== - isarray@^2.0.5: version "2.0.5" resolved "https://registry.npmmirror.com/isarray/-/isarray-2.0.5.tgz#8af1e4c1221244cc62459faf38940d4e644a5723" integrity sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw== +isarray@~1.0.0: + version "1.0.0" + resolved "https://registry.npmmirror.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" + integrity sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ== + isbinaryfile@^5.0.0: version "5.0.0" resolved "https://registry.npmmirror.com/isbinaryfile/-/isbinaryfile-5.0.0.tgz#034b7e54989dab8986598cbcea41f66663c65234" @@ -17519,33 +21610,30 @@ isexe@^2.0.0: resolved "https://registry.npmmirror.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== +isexe@^3.1.1: + version "3.1.5" + resolved "https://registry.yarnpkg.com/isexe/-/isexe-3.1.5.tgz#42e368f68d5e10dadfee4fda7b550bc2d8892dc9" + integrity sha512-6B3tLtFqtQS4ekarvLVMZ+X+VlvQekbe4taUkf/rhVO3d/h0M2rfARm/pXLcPEsjjMsFgrFgSrhQIxcSVrBz8w== + isobject@^3.0.1: version "3.0.1" resolved "https://registry.npmmirror.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" integrity sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg== -isolated-vm@^4.5.0: - version "4.7.2" - resolved "https://registry.npmmirror.com/isolated-vm/-/isolated-vm-4.7.2.tgz#5670d5cce1d92004f9b825bec5b0b11fc7501b65" - integrity sha512-JVEs5gzWObzZK5+OlBplCdYSpokMcdhLSs/xWYYxmYWVfOOFF4oZJsYh7E/FmfX8e7gMioXMpMMeEyX1afuKrg== +isolated-vm@5.0.1, isolated-vm@^6.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/isolated-vm/-/isolated-vm-5.0.1.tgz#d87b12cf8889e351cb1598a4aeea00bb458bf20c" + integrity sha512-hs7+ff59Z2zDvavfcjuot/r1gm6Bmpt+GoZxmVfxUmXaX5scOvUq/Rnme+mUtSh5lW41hH8gAuvk/yTJDYO8Fg== dependencies: prebuild-install "^7.1.1" -isomorphic-dompurify@^0.13.0: - version "0.13.0" - resolved "https://registry.npmmirror.com/isomorphic-dompurify/-/isomorphic-dompurify-0.13.0.tgz#a4dde357e8531018a85ebb2dd56c4794b6739ba3" - integrity sha512-j2/kt/PGbxvfeEm1uiRLlttZkQdn3hFe1rMr/wm3qFnMXSIw0Nmqu79k+TIoSj+KOwO98Sz9TbuNHU7ejv7IZA== - dependencies: - "@types/dompurify" "^2.1.0" - dompurify "^2.2.7" - jsdom "^16.5.2" - -isomorphic-form-data@^2.0.0: - version "2.0.0" - resolved "https://registry.npmmirror.com/isomorphic-form-data/-/isomorphic-form-data-2.0.0.tgz#9f6adf1c4c61ae3aefd8f110ab60fb9b143d6cec" - integrity sha512-TYgVnXWeESVmQSg4GLVbalmQ+B4NPi/H4eWxqALKj63KsUrcu301YDjBqaOw3h+cbak7Na4Xyps3BiptHtxTfg== +isomorphic-dompurify@^2.14.0: + version "2.36.0" + resolved "https://registry.yarnpkg.com/isomorphic-dompurify/-/isomorphic-dompurify-2.36.0.tgz#91e0e554cc3130cc4b7bfb77264f58e51ebd561e" + integrity sha512-E8YkGyPY3a/U5s0WOoc8Ok+3SWL/33yn2IHCoxCFLBUUPVy9WGa++akJZFxQCcJIhI+UvYhbrbnTIFQkHKZbgA== dependencies: - form-data "^2.3.2" + dompurify "^3.3.1" + jsdom "^28.0.0" isomorphic-git@^1.23.0: version "1.25.3" @@ -17564,11 +21652,28 @@ isomorphic-git@^1.23.0: sha.js "^2.4.9" simple-get "^4.0.1" +isomorphic-textencoder@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/isomorphic-textencoder/-/isomorphic-textencoder-1.0.1.tgz#38dcd3b4416d29cd33e274f64b99ae567cd15e83" + integrity sha512-676hESgHullDdHDsj469hr+7t3i/neBKU9J7q1T4RHaWwLAsaQnywC0D1dIUId0YZ+JtVrShzuBk1soo0+GVcQ== + dependencies: + fast-text-encoding "^1.0.0" + +isomorphic-timers-promises@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/isomorphic-timers-promises/-/isomorphic-timers-promises-1.0.1.tgz#e4137c24dbc54892de8abae3a4b5c1ffff381598" + integrity sha512-u4sej9B1LPSxTGKB/HiuzvEQnXH0ECYkSVQU39koSwmFAxhlEAFl9RdTvLv4TOTQUgBS5O3O5fwUxk6byBZ+IQ== + isomorphic-ws@5.0.0, isomorphic-ws@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/isomorphic-ws/-/isomorphic-ws-5.0.0.tgz#e5529148912ecb9b451b46ed44d53dae1ce04bbf" integrity sha512-muId7Zzn9ywDsyXgTIafTry2sV3nySZeUDe6YedVd1Hvuuep5AsIlqK+XefWpYTyJG5e503F2xIuT2lcU6rCSw== +isomorphic-ws@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/isomorphic-ws/-/isomorphic-ws-4.0.1.tgz#55fd4cd6c5e6491e76dc125938dd863f5cd4f2dc" + integrity sha512-BhBvN2MBpWTaSHdWRb/bwdZJ1WaehQ2L1KngkCkfLUGF0mAWAT1sQUQacEmQ0jXkFw/czDXPNQSL5u2/Krsz1w== + isstream@~0.1.2: version "0.1.2" resolved "https://registry.npmmirror.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" @@ -17576,12 +21681,12 @@ isstream@~0.1.2: istanbul-lib-coverage@^3.0.0, istanbul-lib-coverage@^3.2.0: version "3.2.2" - resolved "https://registry.npmmirror.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz#2d166c4b0644d43a39f04bf6c2edd1e585f31756" + resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz#2d166c4b0644d43a39f04bf6c2edd1e585f31756" integrity sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg== istanbul-lib-instrument@^5.0.4: version "5.2.1" - resolved "https://registry.npmmirror.com/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz#d10c8885c2125574e1c231cacadf955675e1ce3d" + resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz#d10c8885c2125574e1c231cacadf955675e1ce3d" integrity sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg== dependencies: "@babel/core" "^7.12.3" @@ -17591,19 +21696,19 @@ istanbul-lib-instrument@^5.0.4: semver "^6.3.0" istanbul-lib-instrument@^6.0.0: - version "6.0.1" - resolved "https://registry.npmmirror.com/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.1.tgz#71e87707e8041428732518c6fb5211761753fbdf" - integrity sha512-EAMEJBsYuyyztxMxW3g7ugGPkrZsV57v0Hmv3mm1uQsmB+QnZuepg731CRaIgeUVSdmsTngOkSnauNF8p7FIhA== + version "6.0.3" + resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.3.tgz#fa15401df6c15874bcb2105f773325d78c666765" + integrity sha512-Vtgk7L/R2JHyyGW07spoFlB8/lpjiOLTjMdms6AFMraYt3BaJauod/NGrfnVG/y4Ix1JEuMRPDPEj2ua+zz1/Q== dependencies: - "@babel/core" "^7.12.3" - "@babel/parser" "^7.14.7" - "@istanbuljs/schema" "^0.1.2" + "@babel/core" "^7.23.9" + "@babel/parser" "^7.23.9" + "@istanbuljs/schema" "^0.1.3" istanbul-lib-coverage "^3.2.0" semver "^7.5.4" istanbul-lib-report@^3.0.0: version "3.0.1" - resolved "https://registry.npmmirror.com/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz#908305bac9a5bd175ac6a74489eafd0fc2445a7d" + resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz#908305bac9a5bd175ac6a74489eafd0fc2445a7d" integrity sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw== dependencies: istanbul-lib-coverage "^3.0.0" @@ -17612,7 +21717,7 @@ istanbul-lib-report@^3.0.0: istanbul-lib-source-maps@^4.0.0: version "4.0.1" - resolved "https://registry.npmmirror.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz#895f3a709fcfba34c6de5a42939022f3e4358551" + resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz#895f3a709fcfba34c6de5a42939022f3e4358551" integrity sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw== dependencies: debug "^4.1.1" @@ -17620,23 +21725,29 @@ istanbul-lib-source-maps@^4.0.0: source-map "^0.6.1" istanbul-reports@^3.1.3: - version "3.1.6" - resolved "https://registry.npmmirror.com/istanbul-reports/-/istanbul-reports-3.1.6.tgz#2544bcab4768154281a2f0870471902704ccaa1a" - integrity sha512-TLgnMkKg3iTDsQ9PbPTdpfAK2DzjF9mqUG7RMgcQl8oFjad8ob4laGxv5XV5U9MAfx8D6tSJiUyuAwzLicaxlg== + version "3.2.0" + resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-3.2.0.tgz#cb4535162b5784aa623cee21a7252cf2c807ac93" + integrity sha512-HGYWWS/ehqTV3xN10i23tkPkpH46MLCIMFNCaaKNavAXTF1RkqxawEPtnjnGZ6XKSInBKkiOA5BKS+aZiY3AvA== dependencies: html-escaper "^2.0.0" istanbul-lib-report "^3.0.0" -iterator.prototype@^1.1.2: - version "1.1.2" - resolved "https://registry.npmmirror.com/iterator.prototype/-/iterator.prototype-1.1.2.tgz#5e29c8924f01916cb9335f1ff80619dcff22b0c0" - integrity sha512-DR33HMMr8EzwuRL8Y9D3u2BMj8+RqSE850jfGu59kS7tbmPLzGkZmVSfyCFSDxuZiEY6Rzt3T2NA/qU+NwVj1w== +iterall@^1.2.1, iterall@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/iterall/-/iterall-1.3.0.tgz#afcb08492e2915cbd8a0884eb93a8c94d0d72fea" + integrity sha512-QZ9qOMdF+QLHxy1QIpUHUU1D5pS2CG2P69LF6L6CPjPYA/XMOmKV3PZpawHoAjHNyB0swdVTRxdYT4tbBbxqwg== + +iterator.prototype@^1.1.5: + version "1.1.5" + resolved "https://registry.yarnpkg.com/iterator.prototype/-/iterator.prototype-1.1.5.tgz#12c959a29de32de0aa3bbbb801f4d777066dae39" + integrity sha512-H0dkQoCa3b2VEeKQBOxFph+JAbcrQdE7KC0UkqwpLmv2EC4P41QXP+rqo9wYodACiG5/WM5s9oDApTU8utwj9g== dependencies: - define-properties "^1.2.1" - get-intrinsic "^1.2.1" - has-symbols "^1.0.3" - reflect.getprototypeof "^1.0.4" - set-function-name "^2.0.1" + define-data-property "^1.1.4" + es-object-atoms "^1.0.0" + get-intrinsic "^1.2.6" + get-proto "^1.0.0" + has-symbols "^1.1.0" + set-function-name "^2.0.2" jackspeak@^2.3.5: version "2.3.6" @@ -17656,19 +21767,9 @@ jackspeak@^3.1.2: optionalDependencies: "@pkgjs/parseargs" "^0.11.0" -jake@^10.8.5: - version "10.8.7" - resolved "https://registry.npmmirror.com/jake/-/jake-10.8.7.tgz#63a32821177940c33f356e0ba44ff9d34e1c7d8f" - integrity sha512-ZDi3aP+fG/LchyBzUM804VjddnwfSfsdeYkwt8NcbKRvo4rFkjhs456iLFn3k2ZUWvNe4i48WACDbza8fhq2+w== - dependencies: - async "^3.2.3" - chalk "^4.0.2" - filelist "^1.0.4" - minimatch "^3.1.2" - jest-changed-files@^29.7.0: version "29.7.0" - resolved "https://registry.npmmirror.com/jest-changed-files/-/jest-changed-files-29.7.0.tgz#1c06d07e77c78e1585d020424dedc10d6e17ac3a" + resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-29.7.0.tgz#1c06d07e77c78e1585d020424dedc10d6e17ac3a" integrity sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w== dependencies: execa "^5.0.0" @@ -17677,7 +21778,7 @@ jest-changed-files@^29.7.0: jest-circus@^29.7.0: version "29.7.0" - resolved "https://registry.npmmirror.com/jest-circus/-/jest-circus-29.7.0.tgz#b6817a45fcc835d8b16d5962d0c026473ee3668a" + resolved "https://registry.yarnpkg.com/jest-circus/-/jest-circus-29.7.0.tgz#b6817a45fcc835d8b16d5962d0c026473ee3668a" integrity sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw== dependencies: "@jest/environment" "^29.7.0" @@ -17703,7 +21804,7 @@ jest-circus@^29.7.0: jest-cli@^29.7.0: version "29.7.0" - resolved "https://registry.npmmirror.com/jest-cli/-/jest-cli-29.7.0.tgz#5592c940798e0cae677eec169264f2d839a37995" + resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-29.7.0.tgz#5592c940798e0cae677eec169264f2d839a37995" integrity sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg== dependencies: "@jest/core" "^29.7.0" @@ -17720,7 +21821,7 @@ jest-cli@^29.7.0: jest-config@^29.7.0: version "29.7.0" - resolved "https://registry.npmmirror.com/jest-config/-/jest-config-29.7.0.tgz#bcbda8806dbcc01b1e316a46bb74085a84b0245f" + resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-29.7.0.tgz#bcbda8806dbcc01b1e316a46bb74085a84b0245f" integrity sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ== dependencies: "@babel/core" "^7.11.6" @@ -17753,7 +21854,7 @@ jest-css-modules@^2.1.0: dependencies: identity-obj-proxy "3.0.0" -"jest-diff@>=29.4.3 < 30", jest-diff@^29.4.1, jest-diff@^29.7.0: +jest-diff@^29.7.0: version "29.7.0" resolved "https://registry.npmmirror.com/jest-diff/-/jest-diff-29.7.0.tgz#017934a66ebb7ecf6f205e84699be10afd70458a" integrity sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw== @@ -17765,14 +21866,14 @@ jest-css-modules@^2.1.0: jest-docblock@^29.7.0: version "29.7.0" - resolved "https://registry.npmmirror.com/jest-docblock/-/jest-docblock-29.7.0.tgz#8fddb6adc3cdc955c93e2a87f61cfd350d5d119a" + resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-29.7.0.tgz#8fddb6adc3cdc955c93e2a87f61cfd350d5d119a" integrity sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g== dependencies: detect-newline "^3.0.0" jest-each@^29.7.0: version "29.7.0" - resolved "https://registry.npmmirror.com/jest-each/-/jest-each-29.7.0.tgz#162a9b3f2328bdd991beaabffbb74745e56577d1" + resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-29.7.0.tgz#162a9b3f2328bdd991beaabffbb74745e56577d1" integrity sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ== dependencies: "@jest/types" "^29.6.3" @@ -17783,7 +21884,7 @@ jest-each@^29.7.0: jest-environment-jsdom@^29.0.2: version "29.7.0" - resolved "https://registry.npmmirror.com/jest-environment-jsdom/-/jest-environment-jsdom-29.7.0.tgz#d206fa3551933c3fd519e5dfdb58a0f5139a837f" + resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-29.7.0.tgz#d206fa3551933c3fd519e5dfdb58a0f5139a837f" integrity sha512-k9iQbsf9OyOfdzWH8HDmrRT0gSIcX+FLNW7IQq94tFX0gynPwqDTW0Ho6iMVNjGz/nb+l/vW3dWM2bbLLpkbXA== dependencies: "@jest/environment" "^29.7.0" @@ -17797,7 +21898,7 @@ jest-environment-jsdom@^29.0.2: jest-environment-node@^29.7.0: version "29.7.0" - resolved "https://registry.npmmirror.com/jest-environment-node/-/jest-environment-node-29.7.0.tgz#0b93e111dda8ec120bc8300e6d1fb9576e164376" + resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-29.7.0.tgz#0b93e111dda8ec120bc8300e6d1fb9576e164376" integrity sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw== dependencies: "@jest/environment" "^29.7.0" @@ -17814,7 +21915,7 @@ jest-get-type@^29.6.3: jest-haste-map@^29.7.0: version "29.7.0" - resolved "https://registry.npmmirror.com/jest-haste-map/-/jest-haste-map-29.7.0.tgz#3c2396524482f5a0506376e6c858c3bbcc17b104" + resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-29.7.0.tgz#3c2396524482f5a0506376e6c858c3bbcc17b104" integrity sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA== dependencies: "@jest/types" "^29.6.3" @@ -17833,7 +21934,7 @@ jest-haste-map@^29.7.0: jest-leak-detector@^29.7.0: version "29.7.0" - resolved "https://registry.npmmirror.com/jest-leak-detector/-/jest-leak-detector-29.7.0.tgz#5b7ec0dadfdfec0ca383dc9aa016d36b5ea4c728" + resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-29.7.0.tgz#5b7ec0dadfdfec0ca383dc9aa016d36b5ea4c728" integrity sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw== dependencies: jest-get-type "^29.6.3" @@ -17866,7 +21967,7 @@ jest-message-util@^29.7.0: jest-mock@^29.7.0: version "29.7.0" - resolved "https://registry.npmmirror.com/jest-mock/-/jest-mock-29.7.0.tgz#4e836cf60e99c6fcfabe9f99d017f3fdd50a6347" + resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-29.7.0.tgz#4e836cf60e99c6fcfabe9f99d017f3fdd50a6347" integrity sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw== dependencies: "@jest/types" "^29.6.3" @@ -17875,17 +21976,22 @@ jest-mock@^29.7.0: jest-pnp-resolver@^1.2.2: version "1.2.3" - resolved "https://registry.npmmirror.com/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz#930b1546164d4ad5937d5540e711d4d38d4cad2e" + resolved "https://registry.yarnpkg.com/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz#930b1546164d4ad5937d5540e711d4d38d4cad2e" integrity sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w== +jest-regex-util@30.0.1: + version "30.0.1" + resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-30.0.1.tgz#f17c1de3958b67dfe485354f5a10093298f2a49b" + integrity sha512-jHEQgBXAgc+Gh4g0p3bCevgRCVRkB4VB70zhoAE48gxeSr1hfUOsM/C2WoJgVL7Eyg//hudYENbm3Ne+/dRVVA== + jest-regex-util@^29.6.3: version "29.6.3" - resolved "https://registry.npmmirror.com/jest-regex-util/-/jest-regex-util-29.6.3.tgz#4a556d9c776af68e1c5f48194f4d0327d24e8a52" + resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-29.6.3.tgz#4a556d9c776af68e1c5f48194f4d0327d24e8a52" integrity sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg== jest-resolve-dependencies@^29.7.0: version "29.7.0" - resolved "https://registry.npmmirror.com/jest-resolve-dependencies/-/jest-resolve-dependencies-29.7.0.tgz#1b04f2c095f37fc776ff40803dc92921b1e88428" + resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-29.7.0.tgz#1b04f2c095f37fc776ff40803dc92921b1e88428" integrity sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA== dependencies: jest-regex-util "^29.6.3" @@ -17893,7 +21999,7 @@ jest-resolve-dependencies@^29.7.0: jest-resolve@^29.7.0: version "29.7.0" - resolved "https://registry.npmmirror.com/jest-resolve/-/jest-resolve-29.7.0.tgz#64d6a8992dd26f635ab0c01e5eef4399c6bcbc30" + resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-29.7.0.tgz#64d6a8992dd26f635ab0c01e5eef4399c6bcbc30" integrity sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA== dependencies: chalk "^4.0.0" @@ -17908,7 +22014,7 @@ jest-resolve@^29.7.0: jest-runner@^29.7.0: version "29.7.0" - resolved "https://registry.npmmirror.com/jest-runner/-/jest-runner-29.7.0.tgz#809af072d408a53dcfd2e849a4c976d3132f718e" + resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-29.7.0.tgz#809af072d408a53dcfd2e849a4c976d3132f718e" integrity sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ== dependencies: "@jest/console" "^29.7.0" @@ -17935,7 +22041,7 @@ jest-runner@^29.7.0: jest-runtime@^29.0.2, jest-runtime@^29.7.0: version "29.7.0" - resolved "https://registry.npmmirror.com/jest-runtime/-/jest-runtime-29.7.0.tgz#efecb3141cf7d3767a3a0cc8f7c9990587d3d817" + resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-29.7.0.tgz#efecb3141cf7d3767a3a0cc8f7c9990587d3d817" integrity sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ== dependencies: "@jest/environment" "^29.7.0" @@ -17963,7 +22069,7 @@ jest-runtime@^29.0.2, jest-runtime@^29.7.0: jest-snapshot@^29.7.0: version "29.7.0" - resolved "https://registry.npmmirror.com/jest-snapshot/-/jest-snapshot-29.7.0.tgz#c2c574c3f51865da1bb329036778a69bf88a6be5" + resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-29.7.0.tgz#c2c574c3f51865da1bb329036778a69bf88a6be5" integrity sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw== dependencies: "@babel/core" "^7.11.6" @@ -18001,7 +22107,7 @@ jest-util@^29.7.0: jest-validate@^29.7.0: version "29.7.0" - resolved "https://registry.npmmirror.com/jest-validate/-/jest-validate-29.7.0.tgz#7bf705511c64da591d46b15fce41400d52147d9c" + resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-29.7.0.tgz#7bf705511c64da591d46b15fce41400d52147d9c" integrity sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw== dependencies: "@jest/types" "^29.6.3" @@ -18013,7 +22119,7 @@ jest-validate@^29.7.0: jest-watcher@^29.7.0: version "29.7.0" - resolved "https://registry.npmmirror.com/jest-watcher/-/jest-watcher-29.7.0.tgz#7810d30d619c3a62093223ce6bb359ca1b28a2f2" + resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-29.7.0.tgz#7810d30d619c3a62093223ce6bb359ca1b28a2f2" integrity sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g== dependencies: "@jest/test-result" "^29.7.0" @@ -18044,9 +22150,9 @@ jest-worker@^29.7.0: merge-stream "^2.0.0" supports-color "^8.0.0" -jest@^29.7.0: +jest@^29.0.0, jest@^29.7.0: version "29.7.0" - resolved "https://registry.npmmirror.com/jest/-/jest-29.7.0.tgz#994676fc24177f088f1c5e3737f5697204ff2613" + resolved "https://registry.yarnpkg.com/jest/-/jest-29.7.0.tgz#994676fc24177f088f1c5e3737f5697204ff2613" integrity sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw== dependencies: "@jest/core" "^29.7.0" @@ -18054,10 +22160,10 @@ jest@^29.7.0: import-local "^3.0.2" jest-cli "^29.7.0" -jiti@^1.18.2: - version "1.21.0" - resolved "https://registry.npmmirror.com/jiti/-/jiti-1.21.0.tgz#7c97f8fe045724e136a397f7340475244156105d" - integrity sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q== +jiti@2.4.2: + version "2.4.2" + resolved "https://registry.yarnpkg.com/jiti/-/jiti-2.4.2.tgz#d19b7732ebb6116b06e2038da74a55366faef560" + integrity sha512-rg9zJN+G4n2nfJl5MW3BMygZX56zKPNVEYYqq7adpmMh4Jn2QNEwhvQlFy6jPVdcod7txZtKHWnyZiA3a0zP7A== jmespath@^0.15.0: version "0.15.0" @@ -18079,6 +22185,11 @@ jose@^5.0.0: resolved "https://registry.npmmirror.com/jose/-/jose-5.4.0.tgz#4f6c2357e7b3cd4bc10ec65bb29e677d7adfbc84" integrity sha512-6rpxTHPAQyWMb9A35BroFl1Sp0ST3DpPcm5EVIxZxdH+e0Hv9fwhyB3XLKFUcHNpdSDnETmBfuPPTTlYz5+USw== +jose@^6.2.2: + version "6.2.2" + resolved "https://registry.yarnpkg.com/jose/-/jose-6.2.2.tgz#d6b5279b89b3e88d531c202e3fbe351f39a44aac" + integrity sha512-d7kPDd34KO/YnzaDOlikGpOurfF0ByC2sEV4cANCtdqLlTfBlw2p14O/5d/zv40gJPbIQxfES3nSx1/oYNyuZQ== + js-base64@^3.6.0: version "3.7.6" resolved "https://registry.npmmirror.com/js-base64/-/js-base64-3.7.6.tgz#6ccb5d761b48381fd819f9ce04998866dbcbbc99" @@ -18104,14 +22215,14 @@ js-levenshtein@^1.1.6: resolved "https://registry.npmmirror.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== -js-yaml@4.1.0, js-yaml@=4.1.0, js-yaml@^4.0.0, js-yaml@^4.1.0: - version "4.1.0" - resolved "https://registry.npmmirror.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" - integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== +js-yaml@=4.1.1, js-yaml@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.1.tgz#854c292467705b699476e1a2decc0c8a3458806b" + integrity sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA== dependencies: argparse "^2.0.1" -js-yaml@^3.10.0, js-yaml@^3.13.1, js-yaml@^3.6.1, js-yaml@^3.8.3: +js-yaml@^3.10.0, js-yaml@^3.6.1, js-yaml@^3.8.3: version "3.14.1" resolved "https://registry.npmmirror.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537" integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== @@ -18119,47 +22230,34 @@ js-yaml@^3.10.0, js-yaml@^3.13.1, js-yaml@^3.6.1, js-yaml@^3.8.3: argparse "^1.0.7" esprima "^4.0.0" +js-yaml@^3.13.1: + version "3.14.2" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.2.tgz#77485ce1dd7f33c061fd1b16ecea23b55fcb04b0" + integrity sha512-PMSmkqxr106Xa156c2M265Z+FTrPl+oxd/rgOQy2tijQeK5TxQ43psO1ZCwhVOSdnn+RzkzlRz/eY4BgJBYVpg== + dependencies: + argparse "^1.0.7" + esprima "^4.0.0" + +js-yaml@^4.0.0, js-yaml@^4.1.0: + version "4.1.0" + resolved "https://registry.npmmirror.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" + integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== + dependencies: + argparse "^2.0.1" + +jsbn@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-1.1.0.tgz#b01307cb29b618a1ed26ec79e911f803c4da0040" + integrity sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A== + jsbn@~0.1.0: version "0.1.1" resolved "https://registry.npmmirror.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" integrity sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg== -jsdom@^16.5.2: - version "16.7.0" - resolved "https://registry.npmmirror.com/jsdom/-/jsdom-16.7.0.tgz#918ae71965424b197c819f8183a754e18977b710" - integrity sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw== - dependencies: - abab "^2.0.5" - acorn "^8.2.4" - acorn-globals "^6.0.0" - cssom "^0.4.4" - cssstyle "^2.3.0" - data-urls "^2.0.0" - decimal.js "^10.2.1" - domexception "^2.0.1" - escodegen "^2.0.0" - form-data "^3.0.0" - html-encoding-sniffer "^2.0.1" - http-proxy-agent "^4.0.1" - https-proxy-agent "^5.0.0" - is-potential-custom-element-name "^1.0.1" - nwsapi "^2.2.0" - parse5 "6.0.1" - saxes "^5.0.1" - symbol-tree "^3.2.4" - tough-cookie "^4.0.0" - w3c-hr-time "^1.0.2" - w3c-xmlserializer "^2.0.0" - webidl-conversions "^6.1.0" - whatwg-encoding "^1.0.5" - whatwg-mimetype "^2.3.0" - whatwg-url "^8.5.0" - ws "^7.4.6" - xml-name-validator "^3.0.0" - jsdom@^20.0.0: version "20.0.3" - resolved "https://registry.npmmirror.com/jsdom/-/jsdom-20.0.3.tgz#886a41ba1d4726f67a8858028c99489fed6ad4db" + resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-20.0.3.tgz#886a41ba1d4726f67a8858028c99489fed6ad4db" integrity sha512-SYhBvTh89tTfCD/CRdSOm13mOBa42iTaTyfyEWBdKcGdPxPtLFBXuHR8XHb33YNYaP+lLbmSvBTsnoesCNJEsQ== dependencies: abab "^2.0.6" @@ -18189,20 +22287,47 @@ jsdom@^20.0.0: ws "^8.11.0" xml-name-validator "^4.0.0" +jsdom@^28.0.0: + version "28.1.0" + resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-28.1.0.tgz#ac4203e58fd24d7b0f34359ab00d6d9caebd4b62" + integrity sha512-0+MoQNYyr2rBHqO1xilltfDjV9G7ymYGlAUazgcDLQaUf8JDHbuGwsxN6U9qWaElZ4w1B2r7yEGIL3GdeW3Rug== + dependencies: + "@acemir/cssom" "^0.9.31" + "@asamuzakjp/dom-selector" "^6.8.1" + "@bramus/specificity" "^2.4.2" + "@exodus/bytes" "^1.11.0" + cssstyle "^6.0.1" + data-urls "^7.0.0" + decimal.js "^10.6.0" + html-encoding-sniffer "^6.0.0" + http-proxy-agent "^7.0.2" + https-proxy-agent "^7.0.6" + is-potential-custom-element-name "^1.0.1" + parse5 "^8.0.0" + saxes "^6.0.0" + symbol-tree "^3.2.4" + tough-cookie "^6.0.0" + undici "^7.21.0" + w3c-xmlserializer "^5.0.0" + webidl-conversions "^8.0.1" + whatwg-mimetype "^5.0.0" + whatwg-url "^16.0.0" + xml-name-validator "^5.0.0" + jsep@^1.1.2, jsep@^1.2.0: version "1.3.8" resolved "https://registry.npmmirror.com/jsep/-/jsep-1.3.8.tgz#facb6eb908d085d71d950bd2b24b757c7b8a46d7" integrity sha512-qofGylTGgYj9gZFsHuyWAN4jr35eJ66qJCK4eKDnldohuUoQFbU3iZn2zjvEbd9wOAhP9Wx5DsAAduTyE1PSWQ== -jsesc@^2.5.1: - version "2.5.2" - resolved "https://registry.npmmirror.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" - integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== +jsep@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/jsep/-/jsep-1.4.0.tgz#19feccbfa51d8a79f72480b4b8e40ce2e17152f0" + integrity sha512-B7qPcEVE3NVkmSJbaYxvv4cHkVW7DQsZz13pUMrfS8z8Q/BuShN+gcTXrUlPiGqM2/t/EEaI030bpxMqY8gMlw== -jsesc@~0.5.0: - version "0.5.0" - resolved "https://registry.npmmirror.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" - integrity sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA== +jsesc@^3.0.2: + version "3.1.0" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-3.1.0.tgz#74d335a234f67ed19907fdadfac7ccf9d409825d" + integrity sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA== json-bigint@^1.0.0: version "1.0.0" @@ -18216,21 +22341,11 @@ json-buffer@3.0.1, json-buffer@^3.0.1: resolved "https://registry.npmmirror.com/json-buffer/-/json-buffer-3.0.1.tgz#9338802a30d3b6605fbe0613e094008ca8c05a13" integrity sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ== -json-parse-better-errors@^1.0.1: - version "1.0.2" - resolved "https://registry.npmmirror.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" - integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== - json-parse-even-better-errors@^2.3.0, json-parse-even-better-errors@^2.3.1: version "2.3.1" resolved "https://registry.npmmirror.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== -json-parse-even-better-errors@^3.0.0: - version "3.0.1" - resolved "https://registry.npmmirror.com/json-parse-even-better-errors/-/json-parse-even-better-errors-3.0.1.tgz#02bb29fb5da90b5444581749c22cedd3597c6cb0" - integrity sha512-aatBvbL26wVUCLmbWdCpeu9iF5wOyWpagiKkInA+kfws3sWdBrTnsvN2CKcyCYyUrc7rebNBlK6+kteg7ksecg== - json-pointer@0.6.2: version "0.6.2" resolved "https://registry.npmmirror.com/json-pointer/-/json-pointer-0.6.2.tgz#f97bd7550be5e9ea901f8c9264c9d436a22a93cd" @@ -18295,16 +22410,6 @@ json-stable-stringify-without-jsonify@^1.0.1: resolved "https://registry.npmmirror.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw== -json-stable-stringify@^1.0.2: - version "1.1.1" - resolved "https://registry.npmmirror.com/json-stable-stringify/-/json-stable-stringify-1.1.1.tgz#52d4361b47d49168bcc4e564189a42e5a7439454" - integrity sha512-SU/971Kt5qVQfJpyDveVhQ/vya+5hvrjClFOcr8c0Fq5aODJjMwutrOfCU+eCnVD5gpx1Q3fEqkyom77zH1iIg== - dependencies: - call-bind "^1.0.5" - isarray "^2.0.5" - jsonify "^0.0.1" - object-keys "^1.1.1" - json-stringify-safe@^5.0.1, json-stringify-safe@~5.0.1: version "5.0.1" resolved "https://registry.npmmirror.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" @@ -18317,7 +22422,7 @@ json5@^1.0.1, json5@^1.0.2: dependencies: minimist "^1.2.0" -json5@^2.1.2, json5@^2.1.3, json5@^2.2.2, json5@^2.2.3: +json5@^2.1.2, json5@^2.1.3, json5@^2.2.3: version "2.2.3" resolved "https://registry.npmmirror.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283" integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== @@ -18327,11 +22432,6 @@ jsonata@^2.0.4: resolved "https://registry.npmmirror.com/jsonata/-/jsonata-2.0.5.tgz#2b3b5098c019b264c4fae061a9cb24d59c7115a2" integrity sha512-wEse9+QLIIU5IaCgtJCPsFi/H4F3qcikWzF4bAELZiRz08ohfx3Q6CjDRf4ZPF5P/92RI3KIHtb7u3jqPaHXdQ== -jsonc-parser@3.2.0: - version "3.2.0" - resolved "https://registry.npmmirror.com/jsonc-parser/-/jsonc-parser-3.2.0.tgz#31ff3f4c2b9793f89c67212627c51c6394f88e76" - integrity sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w== - jsonc-parser@^3.2.0: version "3.2.1" resolved "https://registry.npmmirror.com/jsonc-parser/-/jsonc-parser-3.2.1.tgz#031904571ccf929d7670ee8c547545081cb37f1a" @@ -18358,21 +22458,20 @@ jsonfile@^6.0.1: optionalDependencies: graceful-fs "^4.1.6" -jsonify@^0.0.1: - version "0.0.1" - resolved "https://registry.npmmirror.com/jsonify/-/jsonify-0.0.1.tgz#2aa3111dae3d34a0f151c63f3a45d995d9420978" - integrity sha512-2/Ki0GcmuqSrgFyelQq9M05y7PS0mEwuIzrf3f1fPqkVDVRvZrPZtVSMHxdgo8Aq0sxAOb/cr2aqqA3LeWHVPg== - -jsonparse@^1.2.0, jsonparse@^1.3.1: - version "1.3.1" - resolved "https://registry.npmmirror.com/jsonparse/-/jsonparse-1.3.1.tgz#3f4dae4a91fac315f71062f8521cc239f1366280" - integrity sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg== - jsonpath-plus@7.1.0: version "7.1.0" resolved "https://registry.npmmirror.com/jsonpath-plus/-/jsonpath-plus-7.1.0.tgz#9ac63c3d32a4d91ada68d57e056cb7983e73290a" integrity sha512-gTaNRsPWO/K2KY6MrqaUFClF9kmuM6MFH5Dhg1VYDODgFbByw1yb7xu3hrViE/sz+dGOeMWgCzwUwQtAnCTE9g== +jsonpath-plus@^10.0.7, jsonpath-plus@^10.3.0, "jsonpath-plus@^6.0.1 || ^10.1.0": + version "10.4.0" + resolved "https://registry.yarnpkg.com/jsonpath-plus/-/jsonpath-plus-10.4.0.tgz#73cf545c231afda21452150b7a2a58e48e109702" + integrity sha512-T92WWatJXmhBbKsgH/0hl+jxjdXrifi5IKeMY02DWggRxX0UElcbVzPlmgLTbvsPeW1PasQ6xE2Q75stkhGbsA== + dependencies: + "@jsep-plugin/assignment" "^1.3.0" + "@jsep-plugin/regex" "^1.0.4" + jsep "^1.4.0" + jsonpath-plus@^6.0.1: version "6.0.1" resolved "https://registry.npmmirror.com/jsonpath-plus/-/jsonpath-plus-6.0.1.tgz#9a3e16cedadfab07a3d8dc4e8cd5df4ed8f49c4d" @@ -18397,10 +22496,10 @@ jsonpointer@^5.0.0, jsonpointer@^5.0.1: resolved "https://registry.npmmirror.com/jsonpointer/-/jsonpointer-5.0.1.tgz#2110e0af0900fd37467b5907ecd13a7884a1b559" integrity sha512-p/nXbhSEcu3pZRdkW1OfJhpsVtW1gd4Wa1fnQc9YLiTfAjn0312eMKimbdIQzuZl9aa9xUGaRlP9T/CJE/ditQ== -jsonschema@^1.2.6: - version "1.4.1" - resolved "https://registry.npmmirror.com/jsonschema/-/jsonschema-1.4.1.tgz#cc4c3f0077fb4542982973d8a083b6b34f482dab" - integrity sha512-S6cATIPVv1z0IlxdN+zUk5EPjkGCdnhN4wVSBlvoUO1tOLJootbo9CquNJmbIh4yikWHiUedhRYrNPn1arpEmQ== +jsonschema@^1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/jsonschema/-/jsonschema-1.5.0.tgz#f6aceb1ab9123563dd901d05f81f9d4883d3b7d8" + integrity sha512-K+A9hhqbn0f3pJX17Q/7H6yQfD/5OXgdrR5UE12gMXCiN9D5Xq2o5mddV2QEcX/bjla99ASsAAQUyMCCRWAEhw== jsonwebtoken@^9.0.0, jsonwebtoken@^9.0.2: version "9.0.2" @@ -18559,25 +22658,33 @@ keygrip@~1.1.0: dependencies: tsscmp "1.0.6" -keyv@^4.0.0, keyv@^4.5.2, keyv@^4.5.3: +keytar@^7.9.0: + version "7.9.0" + resolved "https://registry.yarnpkg.com/keytar/-/keytar-7.9.0.tgz#4c6225708f51b50cbf77c5aae81721964c2918cb" + integrity sha512-VPD8mtVtm5JNtA2AErl6Chp06JBfy7diFQ7TQQhdpWOl6MrCRB+eRbvAZUsbGQS9kiMq0coJsy0W0vHpDCkWsQ== + dependencies: + node-addon-api "^4.3.0" + prebuild-install "^7.0.1" + +keyv@*, keyv@^5.2.1: + version "5.6.0" + resolved "https://registry.yarnpkg.com/keyv/-/keyv-5.6.0.tgz#03044074c6b4d072d0a62c7b9fa649537baf0105" + integrity sha512-CYDD3SOtsHtyXeEORYRx2qBtpDJFjRTGXUtmNEMGyzYOKj1TE3tycdlho7kA1Ufx9OYWZzg52QFBGALTirzDSw== + dependencies: + "@keyv/serialize" "^1.1.1" + +keyv@^4.5.2, keyv@^4.5.3: version "4.5.4" resolved "https://registry.npmmirror.com/keyv/-/keyv-4.5.4.tgz#a879a99e29452f942439f2a405e3af8b31d4de93" integrity sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw== dependencies: json-buffer "3.0.1" -kind-of@^6.0.2, kind-of@^6.0.3: +kind-of@^6.0.2: version "6.0.3" resolved "https://registry.npmmirror.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== -klaw-sync@^6.0.0: - version "6.0.0" - resolved "https://registry.npmmirror.com/klaw-sync/-/klaw-sync-6.0.0.tgz#1fd2cfd56ebb6250181114f0a581167099c2b28c" - integrity sha512-nIeuVSzdCCs6TDPTqI8w1Yre34sSq7AkZ4B3sfOBbI2CgVSB4Du4aLQijFU2+lhAFCwt9+42Hel6lQNIv6AntQ== - dependencies: - graceful-fs "^4.1.11" - kleur@^3.0.3: version "3.0.3" resolved "https://registry.npmmirror.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e" @@ -18608,49 +22715,41 @@ knex@3, knex@^3.0.0: tarn "^3.0.2" tildify "2.0.0" -koa-compose@^3.0.0: - version "3.2.1" - resolved "https://registry.yarnpkg.com/koa-compose/-/koa-compose-3.2.1.tgz#a85ccb40b7d986d8e5a345b3a1ace8eabcf54de7" - integrity sha512-8gen2cvKHIZ35eDEik5WOo8zbVp9t4cP8p4hW4uE55waxolLRexKKrqfCpwhGVppnB40jWeF8bZeTVg99eZgPw== - dependencies: - any-promise "^1.1.0" - koa-compose@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/koa-compose/-/koa-compose-4.1.0.tgz#507306b9371901db41121c812e923d0d67d3e877" integrity sha512-8ODW8TrDuMYvXRwra/Kh7/rJo9BtOfPc6qO8eAfC80CnCvSjSl0bkRM24X6/XBBEyj0v1nRUQ1LyOy3dbqOWXw== -koa-convert@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/koa-convert/-/koa-convert-1.2.0.tgz#da40875df49de0539098d1700b50820cebcd21d0" - integrity sha512-K9XqjmEDStGX09v3oxR7t5uPRy0jqJdvodHa6wxWTHrTfDq0WUNnYTOOUZN6g8OM8oZQXprQASbiIXG2Ez8ehA== +koa-convert@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/koa-convert/-/koa-convert-2.0.0.tgz#86a0c44d81d40551bae22fee6709904573eea4f5" + integrity sha512-asOvN6bFlSnxewce2e/DK3p4tltyfC4VM7ZwuTuepI7dEQVcvpyFuBcEARu1+Hxg8DIwytce2n7jrZtRlPrARA== dependencies: co "^4.6.0" - koa-compose "^3.0.0" + koa-compose "^4.1.0" -koa@2.11.0: - version "2.11.0" - resolved "https://registry.yarnpkg.com/koa/-/koa-2.11.0.tgz#fe5a51c46f566d27632dd5dc8fd5d7dd44f935a4" - integrity sha512-EpR9dElBTDlaDgyhDMiLkXrPwp6ZqgAIBvhhmxQ9XN4TFgW+gEz6tkcsNI6BnUbUftrKDjVFj4lW2/J2aNBMMA== +koa@2.15.4: + version "2.15.4" + resolved "https://registry.yarnpkg.com/koa/-/koa-2.15.4.tgz#7000b3d8354558671adb1ba1b1c09bedb5f8da75" + integrity sha512-7fNBIdrU2PEgLljXoPWoyY4r1e+ToWCmzS/wwMPbUNs7X+5MMET1ObhJBlUkF5uZG9B6QhM2zS1TsH6adegkiQ== dependencies: accepts "^1.3.5" cache-content-type "^1.0.0" content-disposition "~0.5.2" content-type "^1.0.4" - cookies "~0.8.0" - debug "~3.1.0" + cookies "~0.9.0" + debug "^4.3.2" delegates "^1.0.0" - depd "^1.1.2" + depd "^2.0.0" destroy "^1.0.4" encodeurl "^1.0.2" - error-inject "^1.0.0" escape-html "^1.0.3" fresh "~0.5.2" http-assert "^1.3.0" http-errors "^1.6.3" is-generator-function "^1.0.7" koa-compose "^4.1.0" - koa-convert "^1.2.0" + koa-convert "^2.0.0" on-finished "^2.3.0" only "~0.0.2" parseurl "^1.3.2" @@ -18658,7 +22757,31 @@ koa@2.11.0: type-is "^1.6.16" vary "^1.1.2" -kubernetes-models@^4.1.0, kubernetes-models@^4.3.1: +koa@3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/koa/-/koa-3.0.3.tgz#40a97b6da0c0d49a704af82db2b3e5a618ed9042" + integrity sha512-MeuwbCoN1daWS32/Ni5qkzmrOtQO2qrnfdxDHjrm6s4b59yG4nexAJ0pTEFyzjLp0pBVO80CZp0vW8Ze30Ebow== + dependencies: + accepts "^1.3.8" + content-disposition "~0.5.4" + content-type "^1.0.5" + cookies "~0.9.1" + delegates "^1.0.0" + destroy "^1.2.0" + encodeurl "^2.0.0" + escape-html "^1.0.3" + fresh "~0.5.2" + http-assert "^1.5.0" + http-errors "^2.0.0" + koa-compose "^4.1.0" + mime-types "^3.0.1" + on-finished "^2.4.1" + parseurl "^1.3.3" + statuses "^2.0.1" + type-is "^2.0.1" + vary "^1.1.2" + +kubernetes-models@^4.3.1: version "4.3.1" resolved "https://registry.npmmirror.com/kubernetes-models/-/kubernetes-models-4.3.1.tgz#14b8e465410f22d96270e71f9bb62bf7e5066e9c" integrity sha512-0/8E6tfDGo1mKq0g2gTfUwbBv9oaSQ+xjQ5xjCb4NRZD0nTvErwzBoEijym3eGX+L2RJjNKIBhI9k6VTj1dQWA== @@ -18700,87 +22823,6 @@ lazystream@^1.0.0: dependencies: readable-stream "^2.0.5" -lerna@^7.3.0: - version "7.4.2" - resolved "https://registry.npmmirror.com/lerna/-/lerna-7.4.2.tgz#03497125d7b7c8d463eebfe17a701b16bde2ad09" - integrity sha512-gxavfzHfJ4JL30OvMunmlm4Anw7d7Tq6tdVHzUukLdS9nWnxCN/QB21qR+VJYp5tcyXogHKbdUEGh6qmeyzxSA== - dependencies: - "@lerna/child-process" "7.4.2" - "@lerna/create" "7.4.2" - "@npmcli/run-script" "6.0.2" - "@nx/devkit" ">=16.5.1 < 17" - "@octokit/plugin-enterprise-rest" "6.0.1" - "@octokit/rest" "19.0.11" - byte-size "8.1.1" - chalk "4.1.0" - clone-deep "4.0.1" - cmd-shim "6.0.1" - columnify "1.6.0" - conventional-changelog-angular "7.0.0" - conventional-changelog-core "5.0.1" - conventional-recommended-bump "7.0.1" - cosmiconfig "^8.2.0" - dedent "0.7.0" - envinfo "7.8.1" - execa "5.0.0" - fs-extra "^11.1.1" - get-port "5.1.1" - get-stream "6.0.0" - git-url-parse "13.1.0" - glob-parent "5.1.2" - globby "11.1.0" - graceful-fs "4.2.11" - has-unicode "2.0.1" - import-local "3.1.0" - ini "^1.3.8" - init-package-json "5.0.0" - inquirer "^8.2.4" - is-ci "3.0.1" - is-stream "2.0.0" - jest-diff ">=29.4.3 < 30" - js-yaml "4.1.0" - libnpmaccess "7.0.2" - libnpmpublish "7.3.0" - load-json-file "6.2.0" - lodash "^4.17.21" - make-dir "4.0.0" - minimatch "3.0.5" - multimatch "5.0.0" - node-fetch "2.6.7" - npm-package-arg "8.1.1" - npm-packlist "5.1.1" - npm-registry-fetch "^14.0.5" - npmlog "^6.0.2" - nx ">=16.5.1 < 17" - p-map "4.0.0" - p-map-series "2.1.0" - p-pipe "3.1.0" - p-queue "6.6.2" - p-reduce "2.1.0" - p-waterfall "2.1.1" - pacote "^15.2.0" - pify "5.0.0" - read-cmd-shim "4.0.0" - read-package-json "6.0.4" - resolve-from "5.0.0" - rimraf "^4.4.1" - semver "^7.3.8" - signal-exit "3.0.7" - slash "3.0.0" - ssri "^9.0.1" - strong-log-transformer "2.1.0" - tar "6.1.11" - temp-dir "1.0.0" - typescript ">=3 < 6" - upath "2.0.1" - uuid "^9.0.0" - validate-npm-package-license "3.0.4" - validate-npm-package-name "5.0.0" - write-file-atomic "5.0.1" - write-pkg "4.0.0" - yargs "16.2.0" - yargs-parser "20.2.4" - leven@2.1.0: version "2.1.0" resolved "https://registry.npmmirror.com/leven/-/leven-2.1.0.tgz#c2e7a9f772094dee9d34202ae8acce4687875580" @@ -18807,44 +22849,17 @@ levn@~0.3.0: prelude-ls "~1.1.2" type-check "~0.3.2" -li@^1.3.0: - version "1.3.0" - resolved "https://registry.npmmirror.com/li/-/li-1.3.0.tgz#22c59bcaefaa9a8ef359cf759784e4bf106aea1b" - integrity sha512-z34TU6GlMram52Tss5mt1m//ifRIpKH5Dqm7yUVOdHI+BQCs9qGPHFaCUTIzsWX7edN30aa2WrPwR7IO10FHaw== - -libnpmaccess@7.0.2: - version "7.0.2" - resolved "https://registry.npmmirror.com/libnpmaccess/-/libnpmaccess-7.0.2.tgz#7f056c8c933dd9c8ba771fa6493556b53c5aac52" - integrity sha512-vHBVMw1JFMTgEk15zRsJuSAg7QtGGHpUSEfnbcRL1/gTBag9iEfJbyjpDmdJmwMhvpoLoNBtdAUCdGnaP32hhw== +libsodium-wrappers@^0.8.0: + version "0.8.4" + resolved "https://registry.yarnpkg.com/libsodium-wrappers/-/libsodium-wrappers-0.8.4.tgz#c9953edc16f2f40f1f4d2580147b8de775fb901c" + integrity sha512-mu8aAWucZjTB5O/BtGXtW4e1agy7uHxNYG7zPthmmD1jU43LCDmSWZLN4JhflbdPXj3yDO4lxM1O9hLDgIOXDw== dependencies: - npm-package-arg "^10.1.0" - npm-registry-fetch "^14.0.3" + libsodium "^0.8.0" -libnpmpublish@7.3.0: - version "7.3.0" - resolved "https://registry.npmmirror.com/libnpmpublish/-/libnpmpublish-7.3.0.tgz#2ceb2b36866d75a6cd7b4aa748808169f4d17e37" - integrity sha512-fHUxw5VJhZCNSls0KLNEG0mCD2PN1i14gH5elGOgiVnU3VgTcRahagYP2LKI1m0tFCJ+XrAm0zVYyF5RCbXzcg== - dependencies: - ci-info "^3.6.1" - normalize-package-data "^5.0.0" - npm-package-arg "^10.1.0" - npm-registry-fetch "^14.0.3" - proc-log "^3.0.0" - semver "^7.3.7" - sigstore "^1.4.0" - ssri "^10.0.1" - -libsodium-wrappers@^0.7.11: - version "0.7.13" - resolved "https://registry.npmmirror.com/libsodium-wrappers/-/libsodium-wrappers-0.7.13.tgz#83299e06ee1466057ba0e64e532777d2929b90d3" - integrity sha512-kasvDsEi/r1fMzKouIDv7B8I6vNmknXwGiYodErGuESoFTohGSKZplFtVxZqHaoQ217AynyIFgnOVRitpHs0Qw== - dependencies: - libsodium "^0.7.13" - -libsodium@^0.7.13: - version "0.7.13" - resolved "https://registry.npmmirror.com/libsodium/-/libsodium-0.7.13.tgz#230712ec0b7447c57b39489c48a4af01985fb393" - integrity sha512-mK8ju0fnrKXXfleL53vtp9xiPq5hKM0zbDQtcxQIsSmxNgSxqCj6R7Hl9PkrNe2j29T4yoDaF7DJLK9/i5iWUw== +libsodium@^0.8.0: + version "0.8.4" + resolved "https://registry.yarnpkg.com/libsodium/-/libsodium-0.8.4.tgz#a61393dad8c25e0fda129e3fdf85b3baee2d456f" + integrity sha512-lMcYaRi0zcs7tarATsQUYC7rstliIXZuoq0c6zXSgNtSNtdvBgkSegjWhpMJAXzKX3SUSwIp7+zEsob+j3LuRw== lie@~3.3.0: version "3.3.0" @@ -18863,52 +22878,27 @@ lines-and-columns@^1.1.6: resolved "https://registry.npmmirror.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== -lines-and-columns@~2.0.3: - version "2.0.4" - resolved "https://registry.npmmirror.com/lines-and-columns/-/lines-and-columns-2.0.4.tgz#d00318855905d2660d8c0822e3f5a4715855fc42" - integrity sha512-wM1+Z03eypVAVUCE7QdSqpVIvelbOakn1M0bPDoA4SGWPx3sNDVUiMo3L6To6WWGClB7VyXnhQ4Sn7gxiJbE6A== - -linkify-it@^3.0.1: - version "3.0.3" - resolved "https://registry.npmmirror.com/linkify-it/-/linkify-it-3.0.3.tgz#a98baf44ce45a550efb4d49c769d07524cc2fa2e" - integrity sha512-ynTsyrFSdE5oZ/O9GEf00kPngmOfVwazR5GKDq6EYfhlpFug3J2zybX56a2PRRpc9P+FuSoGNAwjlbDs9jJBPQ== +linkify-it@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/linkify-it/-/linkify-it-5.0.0.tgz#9ef238bfa6dc70bd8e7f9572b52d369af569b421" + integrity sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ== dependencies: - uc.micro "^1.0.1" - -linkify-react@4.1.3: - version "4.1.3" - resolved "https://registry.npmmirror.com/linkify-react/-/linkify-react-4.1.3.tgz#461d348b4bdab3fcd0452ae1b5bbc22536395b97" - integrity sha512-rhI3zM/fxn5BfRPHfi4r9N7zgac4vOIxub1wHIWXLA5ENTMs+BGaIaFO1D1PhmxgwhIKmJz3H7uCP0Dg5JwSlA== - -linkifyjs@4.1.3: - version "4.1.3" - resolved "https://registry.npmmirror.com/linkifyjs/-/linkifyjs-4.1.3.tgz#0edbc346428a7390a23ea2e5939f76112c9ae07f" - integrity sha512-auMesunaJ8yfkHvK4gfg1K0SaKX/6Wn9g2Aac/NwX+l5VdmFZzo/hdPGxEOETj+ryRa4/fiOPjeeKURSAJx1sg== + uc.micro "^2.0.0" -load-json-file@6.2.0: - version "6.2.0" - resolved "https://registry.npmmirror.com/load-json-file/-/load-json-file-6.2.0.tgz#5c7770b42cafa97074ca2848707c61662f4251a1" - integrity sha512-gUD/epcRms75Cw8RT1pUdHugZYM5ce64ucs2GEISABwkRsOQr0q2wm/MV2TKThycIe5e0ytRweW2RZxclogCdQ== - dependencies: - graceful-fs "^4.1.15" - parse-json "^5.0.0" - strip-bom "^4.0.0" - type-fest "^0.6.0" +linkify-react@4.3.2: + version "4.3.2" + resolved "https://registry.yarnpkg.com/linkify-react/-/linkify-react-4.3.2.tgz#8d47fb0ad96ab5b38c07bfbebdcbc57794430693" + integrity sha512-mi744h1hf+WDsr+paJgSBBgYNLMWNSHyM9V9LVUo03RidNGdw1VpI7Twnt+K3pEh3nIzB4xiiAgZxpd61ItKpQ== -load-json-file@^4.0.0: - version "4.0.0" - resolved "https://registry.npmmirror.com/load-json-file/-/load-json-file-4.0.0.tgz#2f5f45ab91e33216234fd53adab668eb4ec0993b" - integrity sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw== - dependencies: - graceful-fs "^4.1.2" - parse-json "^4.0.0" - pify "^3.0.0" - strip-bom "^3.0.0" +linkifyjs@4.3.2: + version "4.3.2" + resolved "https://registry.yarnpkg.com/linkifyjs/-/linkifyjs-4.3.2.tgz#d97eb45419aabf97ceb4b05a7adeb7b8c8ade2b1" + integrity sha512-NT1CJtq3hHIreOianA8aSXn6Cw0JzYOuDQbOrSPe7gqFnCpKP++MQe3ODgO3oh2GJFORkAAdqredOa60z63GbA== -loader-runner@^4.2.0: - version "4.3.0" - resolved "https://registry.npmmirror.com/loader-runner/-/loader-runner-4.3.0.tgz#c1b4a163b99f614830353b16755e7149ac2314e1" - integrity sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg== +loader-runner@^4.3.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-4.3.1.tgz#6c76ed29b0ccce9af379208299f07f876de737e3" + integrity sha512-IWqP2SCPhyVFTBtRcgMHdzlf9ul25NwaFx4wCEH/KjAXuuHY4yNjvPXsBokp8jCB936PyWRaPKUNh8NvylLp2Q== loader-utils@^1.1.0: version "1.4.2" @@ -18919,7 +22909,7 @@ loader-utils@^1.1.0: emojis-list "^3.0.0" json5 "^1.0.1" -loader-utils@^2.0.4: +loader-utils@^2.0.0, loader-utils@^2.0.4: version "2.0.4" resolved "https://registry.npmmirror.com/loader-utils/-/loader-utils-2.0.4.tgz#8b5cb38b5c34a9a018ee1fc0e6a066d1dfcc528c" integrity sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw== @@ -18933,14 +22923,6 @@ loader-utils@^3.2.0: resolved "https://registry.npmmirror.com/loader-utils/-/loader-utils-3.2.1.tgz#4fb104b599daafd82ef3e1a41fb9265f87e1f576" integrity sha512-ZvFw1KWS3GVyYBYb7qkmRM/WwL2TQQBxgCK62rlvm4WpVQ23Nb4tYjApUlfjrEGvOs7KHEsmyUn75OHZrJMWPw== -locate-path@^2.0.0: - version "2.0.0" - resolved "https://registry.npmmirror.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" - integrity sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA== - dependencies: - p-locate "^2.0.0" - path-exists "^3.0.0" - locate-path@^3.0.0: version "3.0.0" resolved "https://registry.npmmirror.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e" @@ -18983,7 +22965,12 @@ lodash.clonedeepwith@4.5.0: resolved "https://registry.yarnpkg.com/lodash.clonedeepwith/-/lodash.clonedeepwith-4.5.0.tgz#6ee30573a03a1a60d670a62ef33c10cf1afdbdd4" integrity sha512-QRBRSxhbtsX1nc0baxSkkK5WlVTTm/s48DSukcGcWZwIyI8Zz+lB+kFiELJXtzfH4Aj6kMWQ1VWW4U5uUDgZMA== -lodash.debounce@^4, lodash.debounce@^4.0.8: +lodash.curry@^4.0.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/lodash.curry/-/lodash.curry-4.1.1.tgz#248e36072ede906501d75966200a86dab8b23170" + integrity sha512-/u14pXGviLaweY5JI0IUzgzF2J6Ne8INyzAZjImcryjgkZ+ebruBxy2/JaOOkTqScddcYtakjhSaeemV8lR0tA== + +lodash.debounce@^4: version "4.0.8" resolved "https://registry.npmmirror.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" integrity sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow== @@ -18998,6 +22985,11 @@ lodash.flattendeep@^4.0.0: resolved "https://registry.npmmirror.com/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz#fb030917f86a3134e5bc9bec0d69e0013ddfedb2" integrity sha512-uHaJFihxmJcEX3kT4I23ABqKKalJ/zDrDg0lsFtc1h+3uw49SIJ5beyhx5ExVRti3AvKoOJngIj7xz3oylPdWQ== +lodash.flow@^3.3.0: + version "3.5.0" + resolved "https://registry.yarnpkg.com/lodash.flow/-/lodash.flow-3.5.0.tgz#87bf40292b8cf83e4e8ce1a3ae4209e20071675a" + integrity sha512-ff3BX/tSioo+XojX4MOsOMhJw0nZoUEF011LX8g8d3gvjVbxd89cCio4BCXronjxcTUIJUoqKEUA+n4CqvvRPw== + lodash.get@^4.4.2: version "4.4.2" resolved "https://registry.npmmirror.com/lodash.get/-/lodash.get-4.4.2.tgz#2d177f652fa31e939b4438d5341499dfa3825e99" @@ -19028,11 +23020,6 @@ lodash.isinteger@^4.0.4: resolved "https://registry.npmmirror.com/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz#619c0af3d03f8b04c31f5882840b77b11cd68343" integrity sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA== -lodash.ismatch@^4.4.0: - version "4.4.0" - resolved "https://registry.npmmirror.com/lodash.ismatch/-/lodash.ismatch-4.4.0.tgz#756cb5150ca3ba6f11085a78849645f188f85f37" - integrity sha512-fPMfXjGQEV9Xsq/8MTSgUf255gawYRbjwMyDbcvDhXgV7enSZA0hynz6vMPnpAb5iONEzBHBPsT+0zes5Z301g== - lodash.isnumber@^3.0.3: version "3.0.3" resolved "https://registry.npmmirror.com/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz#3ce76810c5928d03352301ac287317f11c0b1ffc" @@ -19073,16 +23060,16 @@ lodash.uniq@^4.5.0: resolved "https://registry.npmmirror.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" integrity sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ== -lodash.zipobject@^4.1.3: - version "4.1.3" - resolved "https://registry.npmmirror.com/lodash.zipobject/-/lodash.zipobject-4.1.3.tgz#b399f5aba8ff62a746f6979bf20b214f964dbef8" - integrity sha512-A9SzX4hMKWS25MyalwcOnNoplyHbkNVsjidhTp8ru0Sj23wY9GWBKS8gAIGDSAqeWjIjvE4KBEl24XXAs+v4wQ== - -lodash@^4.15.0, lodash@^4.17.15, lodash@^4.17.20, lodash@^4.17.21, lodash@^4.17.4, lodash@^4.7.0, lodash@~4.17.21: +lodash@^4.15.0, lodash@^4.17.15, lodash@^4.17.20, lodash@^4.17.21, lodash@^4.17.4, lodash@~4.17.21: version "4.17.21" resolved "https://registry.npmmirror.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== +lodash@^4.16.4, lodash@^4.18.1: + version "4.18.1" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.18.1.tgz#ff2b66c1f6326d59513de2407bf881439812771c" + integrity sha512-dMInicTPVE8d1e5otfwmmjlxkZoUpiVLwyeTdUsi/Caj/gfzzblBcCE5sRHV/AsjuCmxWrte2TNGSYuCeCq+0Q== + log-symbols@^4.1.0: version "4.1.0" resolved "https://registry.npmmirror.com/log-symbols/-/log-symbols-4.1.0.tgz#3fbdbb95b4683ac9fc785111e792e558d4abd503" @@ -19091,7 +23078,7 @@ log-symbols@^4.1.0: chalk "^4.1.0" is-unicode-supported "^0.1.0" -log4js@6.9.1: +log4js@6.9.1, log4js@^6.4.6: version "6.9.1" resolved "https://registry.yarnpkg.com/log4js/-/log4js-6.9.1.tgz#aba5a3ff4e7872ae34f8b4c533706753709e38b6" integrity sha512-1somDdy9sChrr9/f4UlzhdaGfDR2c/SaD2a4T7qEkG4jTS57/B3qmnjLYePwQ8cqWnUHZI0iAKxMBpCZICiZ2g== @@ -19143,11 +23130,6 @@ lower-case@^2.0.2: dependencies: tslib "^2.0.3" -lowercase-keys@^2.0.0: - version "2.0.0" - resolved "https://registry.npmmirror.com/lowercase-keys/-/lowercase-keys-2.0.0.tgz#2603e78b7b4b0006cbca2fbcc8a3202558ac9479" - integrity sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA== - lowlight@^1.17.0: version "1.20.0" resolved "https://registry.npmmirror.com/lowlight/-/lowlight-1.20.0.tgz#ddb197d33462ad0d93bf19d17b6c301aa3941888" @@ -19161,11 +23143,21 @@ lru-cache@^10.0.0, "lru-cache@^9.1.1 || ^10.0.0": resolved "https://registry.npmmirror.com/lru-cache/-/lru-cache-10.2.0.tgz#0bd445ca57363465900f4d1f9bd8db343a4d95c3" integrity sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q== +lru-cache@^10.0.1: + version "10.4.3" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-10.4.3.tgz#410fc8a17b70e598013df257c2446b7f3383f119" + integrity sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ== + lru-cache@^10.2.0: version "10.2.2" resolved "https://registry.npmmirror.com/lru-cache/-/lru-cache-10.2.2.tgz#48206bc114c1252940c41b25b41af5b545aca878" integrity sha512-9hp3Vp2/hFQUiIwKo8XCeFVnrg8Pk3TYNPIR7tJADKi5YfcF7vEaK7avFHTlSy3kOKYaJQaalfEo6YuXdceBOQ== +lru-cache@^11.0.0, lru-cache@^11.2.6: + version "11.3.5" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-11.3.5.tgz#29047d348c0b2793e3112a01c739bb7c6d855637" + integrity sha512-NxVFwLAnrd9i7KUBxC4DrUhmgjzOs+1Qm50D3oF1/oL+r1NpZ4gA7xvG0/zJ8evR7zIKn4vLf7qTNduWFtCrRw== + lru-cache@^5.1.1: version "5.1.1" resolved "https://registry.npmmirror.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" @@ -19180,7 +23172,7 @@ lru-cache@^6.0.0: dependencies: yallist "^4.0.0" -lru-cache@^7.14.1, lru-cache@^7.4.4, lru-cache@^7.5.1, lru-cache@^7.7.1: +lru-cache@^7.14.0, lru-cache@^7.14.1: version "7.18.3" resolved "https://registry.npmmirror.com/lru-cache/-/lru-cache-7.18.3.tgz#f793896e0fd0e954a59dfdd82f0773808df6aa89" integrity sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA== @@ -19205,6 +23197,11 @@ luxon@^3.0.0, luxon@^3.2.1, luxon@^3.4.3, luxon@~3.4.0: resolved "https://registry.npmmirror.com/luxon/-/luxon-3.4.4.tgz#cf20dc27dc532ba41a169c43fdcc0063601577af" integrity sha512-zobTr7akeGHnv7eBOXcRgMeCP6+uyYsczwmeRCauvpvaAltgNyTbLH/+VaEAPUeWBT+1GuNmz4wC/6jtQzbbVA== +luxon@^3.5.0: + version "3.7.2" + resolved "https://registry.yarnpkg.com/luxon/-/luxon-3.7.2.tgz#d697e48f478553cca187a0f8436aff468e3ba0ba" + integrity sha512-vtEhXh/gNjI9Yg1u4jX/0YVPMvxzHuGgCm6tC5kZyb08yjGWGnqAjGJvcXbqQR2P3MyMEFnRbpcdFS6PBcLqew== + lz-string@^1.5.0: version "1.5.0" resolved "https://registry.npmmirror.com/lz-string/-/lz-string-1.5.0.tgz#c1ab50f77887b712621201ba9fd4e3a6ed099941" @@ -19224,103 +23221,54 @@ magic-string@^0.30.3: dependencies: "@jridgewell/sourcemap-codec" "^1.4.15" -make-dir@4.0.0, make-dir@^4.0.0: +make-dir@^4.0.0: version "4.0.0" - resolved "https://registry.npmmirror.com/make-dir/-/make-dir-4.0.0.tgz#c3c2307a771277cd9638305f915c29ae741b614e" + resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-4.0.0.tgz#c3c2307a771277cd9638305f915c29ae741b614e" integrity sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw== dependencies: semver "^7.5.3" -make-dir@^2.1.0: - version "2.1.0" - resolved "https://registry.npmmirror.com/make-dir/-/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5" - integrity sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA== - dependencies: - pify "^4.0.1" - semver "^5.6.0" - make-error@^1.1.1: version "1.3.6" resolved "https://registry.npmmirror.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2" integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== -make-fetch-happen@^10.0.3: - version "10.2.1" - resolved "https://registry.npmmirror.com/make-fetch-happen/-/make-fetch-happen-10.2.1.tgz#f5e3835c5e9817b617f2770870d9492d28678164" - integrity sha512-NgOPbRiaQM10DYXvN3/hhGVI2M5MtITFryzBGxHM5p4wnFxsVCbxkrBrDsk+EZ5OB4jEOT7AjDxtdF+KVEFT7w== - dependencies: - agentkeepalive "^4.2.1" - cacache "^16.1.0" - http-cache-semantics "^4.1.0" - http-proxy-agent "^5.0.0" - https-proxy-agent "^5.0.0" - is-lambda "^1.0.1" - lru-cache "^7.7.1" - minipass "^3.1.6" - minipass-collect "^1.0.2" - minipass-fetch "^2.0.3" - minipass-flush "^1.0.5" - minipass-pipeline "^1.2.4" - negotiator "^0.6.3" - promise-retry "^2.0.1" - socks-proxy-agent "^7.0.0" - ssri "^9.0.0" - -make-fetch-happen@^11.0.0, make-fetch-happen@^11.0.1, make-fetch-happen@^11.1.1: - version "11.1.1" - resolved "https://registry.npmmirror.com/make-fetch-happen/-/make-fetch-happen-11.1.1.tgz#85ceb98079584a9523d4bf71d32996e7e208549f" - integrity sha512-rLWS7GCSTcEujjVBs2YqG7Y4643u8ucvCJeSRqiLYhesrDuzeuFIk37xREzAsfQaqzl8b9rNCE4m6J8tvX4Q8w== +make-fetch-happen@^13.0.0: + version "13.0.1" + resolved "https://registry.yarnpkg.com/make-fetch-happen/-/make-fetch-happen-13.0.1.tgz#273ba2f78f45e1f3a6dca91cede87d9fa4821e36" + integrity sha512-cKTUFc/rbKUd/9meOvgrpJ2WrNzymt6jfRDdwg5UCnVzv9dTpEj9JS5m3wtziXVCjluIXyL8pcaukYqezIzZQA== dependencies: - agentkeepalive "^4.2.1" - cacache "^17.0.0" + "@npmcli/agent" "^2.0.0" + cacache "^18.0.0" http-cache-semantics "^4.1.1" - http-proxy-agent "^5.0.0" - https-proxy-agent "^5.0.0" is-lambda "^1.0.1" - lru-cache "^7.7.1" - minipass "^5.0.0" + minipass "^7.0.2" minipass-fetch "^3.0.0" minipass-flush "^1.0.5" minipass-pipeline "^1.2.4" negotiator "^0.6.3" + proc-log "^4.2.0" promise-retry "^2.0.1" - socks-proxy-agent "^7.0.0" ssri "^10.0.0" makeerror@1.0.12: version "1.0.12" - resolved "https://registry.npmmirror.com/makeerror/-/makeerror-1.0.12.tgz#3e5dd2079a82e812e983cc6610c4a2cb0eaa801a" + resolved "https://registry.yarnpkg.com/makeerror/-/makeerror-1.0.12.tgz#3e5dd2079a82e812e983cc6610c4a2cb0eaa801a" integrity sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg== dependencies: tmpl "1.0.5" -map-age-cleaner@^0.2.0: - version "0.2.0" - resolved "https://registry.npmmirror.com/map-age-cleaner/-/map-age-cleaner-0.2.0.tgz#0196bc278f7244ddeb7ca0cb3df329b06241a44b" - integrity sha512-AvxTC6id0fzSf6OyNBTp1syyCuKO7nOJvHgYlhT0Qkkjvk40zZo+av3ayVgXlxnF/DxEzEfY9mMdd7FHsd+wKQ== - dependencies: - p-defer "^1.0.0" - -map-obj@^1.0.0: - version "1.0.1" - resolved "https://registry.npmmirror.com/map-obj/-/map-obj-1.0.1.tgz#d933ceb9205d82bdcf4886f6742bdc2b4dea146d" - integrity sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg== - -map-obj@^4.0.0: - version "4.3.0" - resolved "https://registry.npmmirror.com/map-obj/-/map-obj-4.3.0.tgz#9304f906e93faae70880da102a9f1df0ea8bb05a" - integrity sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ== - -markdown-it@^12.2.0: - version "12.3.2" - resolved "https://registry.npmmirror.com/markdown-it/-/markdown-it-12.3.2.tgz#bf92ac92283fe983fe4de8ff8abfb5ad72cd0c90" - integrity sha512-TchMembfxfNVpHkbtriWltGWc+m3xszaRD0CZup7GFFhzIgQqxIfn3eGj1yZpfuflzPvfkt611B2Q/Bsk1YnGg== +markdown-it@^14.1.0: + version "14.1.1" + resolved "https://registry.yarnpkg.com/markdown-it/-/markdown-it-14.1.1.tgz#856f90b66fc39ae70affd25c1b18b581d7deee1f" + integrity sha512-BuU2qnTti9YKgK5N+IeMubp14ZUKUUw7yeJbkjtosvHiP0AZ5c8IAgEMk79D0eC8F23r4Ac/q8cAIFdm2FtyoA== dependencies: argparse "^2.0.1" - entities "~2.1.0" - linkify-it "^3.0.1" - mdurl "^1.0.1" - uc.micro "^1.0.5" + entities "^4.4.0" + linkify-it "^5.0.0" + mdurl "^2.0.0" + punycode.js "^2.3.1" + uc.micro "^2.1.0" markdown-table@^3.0.0: version "3.0.3" @@ -19332,6 +23280,24 @@ markdown-to-jsx@^7.4.1: resolved "https://registry.npmmirror.com/markdown-to-jsx/-/markdown-to-jsx-7.4.7.tgz#740ee7ec933865ef5cc683a0992797685a75e2ee" integrity sha512-0+ls1IQZdU6cwM1yu0ZjjiVWYtkbExSyUIFU2ZeDIFuZM1W42Mh4OlJ4nb4apX4H8smxDHRdFaoIVJGwfv5hkg== +marked-terminal@^7.3.0: + version "7.3.0" + resolved "https://registry.yarnpkg.com/marked-terminal/-/marked-terminal-7.3.0.tgz#7a86236565f3dd530f465ffce9c3f8b62ef270e8" + integrity sha512-t4rBvPsHc57uE/2nJOLmMbZCQ4tgAccAED3ngXQqW6g+TxA488JzJ+FK3lQkzBQOI1mRV/r/Kq+1ZlJ4D0owQw== + dependencies: + ansi-escapes "^7.0.0" + ansi-regex "^6.1.0" + chalk "^5.4.1" + cli-highlight "^2.1.11" + cli-table3 "^0.6.5" + node-emoji "^2.2.0" + supports-hyperlinks "^3.1.0" + +marked@^15.0.12: + version "15.0.12" + resolved "https://registry.yarnpkg.com/marked/-/marked-15.0.12.tgz#30722c7346e12d0a2d0207ab9b0c4f0102d86c4e" + integrity sha512-8dD6FusOQSrpv9Z1rdNMdlSgQOIP880DHqnohobOmYLElGEqAL/JvxvuxZO16r4HtjTlfPRDC1hbvxC9dPN2nA== + marked@^4.0.14: version "4.3.0" resolved "https://registry.npmmirror.com/marked/-/marked-4.3.0.tgz#796362821b019f734054582038b116481b456cf3" @@ -19344,16 +23310,28 @@ matcher@^3.0.0: dependencies: escape-string-regexp "^4.0.0" -material-ui-popup-state@^1.9.3: - version "1.9.3" - resolved "https://registry.npmmirror.com/material-ui-popup-state/-/material-ui-popup-state-1.9.3.tgz#133ee02be8adf936e738d6b5f3dc89726af39bce" - integrity sha512-+Ete5Tzw5rXlYfmqptOS8kBUH8vnK5OJsd6IQ7SHtLjU0PsvsmM73M/k8ot0xkX4RmPGuNRsFbK3mlCe/ClQuw== +matcher@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/matcher/-/matcher-4.0.0.tgz#a42a05a09aaed92e2d241eb91fddac689461ea51" + integrity sha512-S6x5wmcDmsDRRU/c2dkccDwQPXoFczc5+HpQ2lON8pnvHlnvHAHj5WlLVvw6n6vNyHuVugYrFohYxbS+pvFpKQ== dependencies: - "@babel/runtime" "^7.12.5" - "@material-ui/types" "^6.0.1" + escape-string-regexp "^4.0.0" + +material-ui-popup-state@^5.3.6: + version "5.3.7" + resolved "https://registry.yarnpkg.com/material-ui-popup-state/-/material-ui-popup-state-5.3.7.tgz#dddb75194db390cce1684f4f39d83b5be9fb77ae" + integrity sha512-3ppRgNEfJ4pSEmVnRYeDDi/8L6RSGnsBrCP+WikozCeF7E21DyKAm80EOtBbeiOTooPCEQoeqrQ32uDKW2VYcw== + dependencies: + "@babel/runtime" "^7.26.0" + "@types/prop-types" "^15.7.3" classnames "^2.2.6" prop-types "^15.7.2" +math-intrinsics@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/math-intrinsics/-/math-intrinsics-1.1.0.tgz#a0dd74be81e2aa5c2f27e65ce283605ee4e2b7f9" + integrity sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g== + md5.js@^1.3.4: version "1.3.5" resolved "https://registry.npmmirror.com/md5.js/-/md5.js-1.3.5.tgz#b5d07b8e3216e3e27cd728d72f70d1e6a342005f" @@ -19506,10 +23484,15 @@ mdn-data@2.0.14: resolved "https://registry.npmmirror.com/mdn-data/-/mdn-data-2.0.14.tgz#7113fc4281917d63ce29b43446f701e68c25ba50" integrity sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow== -mdurl@^1.0.1: - version "1.0.1" - resolved "https://registry.npmmirror.com/mdurl/-/mdurl-1.0.1.tgz#fe85b2ec75a59037f2adfec100fd6c601761152e" - integrity sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g== +mdn-data@2.27.1: + version "2.27.1" + resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.27.1.tgz#e37b9c50880b75366c4d40ac63d9bbcacdb61f0e" + integrity sha512-9Yubnt3e8A0OKwxYSXyhLymGW4sCufcLG6VdiDdUGVkPhpqLxlvP5vl1983gQjJl3tqbrM731mjaZaP68AgosQ== + +mdurl@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/mdurl/-/mdurl-2.0.0.tgz#80676ec0433025dd3e17ee983d0fe8de5a2237e0" + integrity sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w== media-typer@0.3.0: version "0.3.0" @@ -19528,6 +23511,26 @@ memfs@^3.1.2, memfs@^3.4.1: dependencies: fs-monkey "^1.0.4" +memfs@^4.43.1, memfs@^4.56.10: + version "4.57.2" + resolved "https://registry.yarnpkg.com/memfs/-/memfs-4.57.2.tgz#5f74e977c9a14681ea10d427b3ce5d7db5f817e7" + integrity sha512-2nWzSsJzrukurSDna4Z0WywuScK4Id3tSKejgu74u8KCdW4uNrseKRSIDg75C6Yw5ZRqBe0F0EtMNlTbUq8bAQ== + dependencies: + "@jsonjoy.com/fs-core" "4.57.2" + "@jsonjoy.com/fs-fsa" "4.57.2" + "@jsonjoy.com/fs-node" "4.57.2" + "@jsonjoy.com/fs-node-builtins" "4.57.2" + "@jsonjoy.com/fs-node-to-fsa" "4.57.2" + "@jsonjoy.com/fs-node-utils" "4.57.2" + "@jsonjoy.com/fs-print" "4.57.2" + "@jsonjoy.com/fs-snapshot" "4.57.2" + "@jsonjoy.com/json-pack" "^1.11.0" + "@jsonjoy.com/util" "^1.9.0" + glob-to-regex.js "^1.0.1" + thingies "^2.5.0" + tree-dump "^1.0.3" + tslib "^2.0.0" + memfs@^4.6.0: version "4.9.2" resolved "https://registry.npmmirror.com/memfs/-/memfs-4.9.2.tgz#42e7b48207268dad8c9c48ea5d4952c5d3840433" @@ -19538,7 +23541,7 @@ memfs@^4.6.0: sonic-forest "^1.0.0" tslib "^2.0.0" -memjs@^1.3.1: +memjs@^1.3.1, memjs@^1.3.2: version "1.3.2" resolved "https://registry.npmmirror.com/memjs/-/memjs-1.3.2.tgz#0b6229bddba00162d1e281ed454217435c4968b3" integrity sha512-qUEg2g8vxPe+zPn09KidjIStHPtoBO8Cttm8bgJFWWabbsjQ9Av9Ky+6UcvKx6ue0LLb/LEhtcyQpRyKfzeXcg== @@ -19548,28 +23551,16 @@ memjs@^1.3.1: resolved "https://registry.npmmirror.com/memoize-one/-/memoize-one-5.2.1.tgz#8337aa3c4335581839ec01c3d594090cebe8f00e" integrity sha512-zYiwtZUcYyXKo/np96AGZAckk+FWWsUdJ3cHGGmld7+AhvcWmQyGCYUh1hc4Q/pkOhb65dQR/pqCyK0cOaHz4Q== -meow@^8.1.2: - version "8.1.2" - resolved "https://registry.npmmirror.com/meow/-/meow-8.1.2.tgz#bcbe45bda0ee1729d350c03cffc8395a36c4e897" - integrity sha512-r85E3NdZ+mpYk1C6RjPFEMSE+s1iZMuHtsHAqY0DT3jZczl0diWUZ8g6oU7h0M9cD2EL+PzaYghhCLzR0ZNn5Q== - dependencies: - "@types/minimist" "^1.2.0" - camelcase-keys "^6.2.2" - decamelize-keys "^1.1.0" - hard-rejection "^2.1.0" - minimist-options "4.1.0" - normalize-package-data "^3.0.0" - read-pkg-up "^7.0.1" - redent "^3.0.0" - trim-newlines "^3.0.0" - type-fest "^0.18.0" - yargs-parser "^20.2.3" - merge-descriptors@1.0.1: version "1.0.1" resolved "https://registry.npmmirror.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" integrity sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w== +merge-descriptors@1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.3.tgz#d80319a65f3c7935351e5cfdac8f9318504dbed5" + integrity sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ== + merge-stream@^2.0.0: version "2.0.0" resolved "https://registry.npmmirror.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" @@ -19580,7 +23571,7 @@ merge2@^1.3.0, merge2@^1.4.1: resolved "https://registry.npmmirror.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== -meros@^1.1.4, meros@^1.2.1: +meros@^1.1.4: version "1.3.0" resolved "https://registry.npmmirror.com/meros/-/meros-1.3.0.tgz#c617d2092739d55286bf618129280f362e6242f2" integrity sha512-2BNGOimxEz5hmjUG2FwoxCt5HN7BXdaWyFqEwxPTrJzVdABtrL4TiHTcsWSFAxPQ/tOnEaQEJh3qWq71QRMY+w== @@ -19871,6 +23862,14 @@ micromatch@^4.0.2, micromatch@^4.0.4, micromatch@^4.0.5: braces "^3.0.2" picomatch "^2.3.1" +micromatch@^4.0.8: + version "4.0.8" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.8.tgz#d66fa18f3a47076789320b9b1af32bd86d9fa202" + integrity sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA== + dependencies: + braces "^3.0.3" + picomatch "^2.3.1" + miller-rabin@^4.0.0: version "4.0.1" resolved "https://registry.npmmirror.com/miller-rabin/-/miller-rabin-4.0.1.tgz#f080351c865b0dc562a8462966daa53543c78a4d" @@ -19884,19 +23883,31 @@ mime-db@1.52.0, "mime-db@>= 1.43.0 < 2": resolved "https://registry.npmmirror.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== -mime-types@^2.0.8, mime-types@^2.1.12, mime-types@^2.1.18, mime-types@^2.1.27, mime-types@^2.1.31, mime-types@~2.1.17, mime-types@~2.1.19, mime-types@~2.1.24, mime-types@~2.1.34: +mime-db@^1.54.0: + version "1.54.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.54.0.tgz#cddb3ee4f9c64530dff640236661d42cb6a314f5" + integrity sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ== + +mime-types@^2.0.8, mime-types@^2.1.12, mime-types@^2.1.18, mime-types@^2.1.27, mime-types@^2.1.31, mime-types@^2.1.35, mime-types@~2.1.17, mime-types@~2.1.19, mime-types@~2.1.24, mime-types@~2.1.34: version "2.1.35" resolved "https://registry.npmmirror.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== dependencies: mime-db "1.52.0" +mime-types@^3.0.0, mime-types@^3.0.1: + version "3.0.2" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-3.0.2.tgz#39002d4182575d5af036ffa118100f2524b2e2ab" + integrity sha512-Lbgzdk0h4juoQ9fCKXW4by0UJqj+nOOrI9MJ1sSj4nI8aI2eo1qmvQEie4VD1glsS250n15LsWsYtCugiStS5A== + dependencies: + mime-db "^1.54.0" + mime@1.6.0: version "1.6.0" resolved "https://registry.npmmirror.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== -mime@2.6.0: +mime@2.6.0, mime@^2.5.2: version "2.6.0" resolved "https://registry.yarnpkg.com/mime/-/mime-2.6.0.tgz#a2a682a95cd4d0cb1d6257e28f83da7e35800367" integrity sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg== @@ -19911,11 +23922,6 @@ mimic-fn@^2.1.0: resolved "https://registry.npmmirror.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== -mimic-response@^1.0.0: - version "1.0.1" - resolved "https://registry.npmmirror.com/mimic-response/-/mimic-response-1.0.1.tgz#4923538878eef42063cb8a3e3b0798781487ab1b" - integrity sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ== - mimic-response@^3.1.0: version "3.1.0" resolved "https://registry.npmmirror.com/mimic-response/-/mimic-response-3.1.0.tgz#2d1d59af9c1b129815accc2c46a022a5ce1fa3c9" @@ -19950,13 +23956,6 @@ minimalistic-crypto-utils@^1.0.1: resolved "https://registry.npmmirror.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" integrity sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg== -minimatch@3.0.5: - version "3.0.5" - resolved "https://registry.npmmirror.com/minimatch/-/minimatch-3.0.5.tgz#4da8f1290ee0f0f8e83d60ca69f8f134068604a3" - integrity sha512-tUpxzX0VAzJHjLu0xUfFv1gwVp9ba3IOuRAVH2EGuRW8a5emA2FlACLqiT/lDVtS1W+TGNwqz3sWaNyLgDJWuw== - dependencies: - brace-expansion "^1.1.7" - minimatch@3.1.2, minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2: version "3.1.2" resolved "https://registry.npmmirror.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" @@ -19964,17 +23963,17 @@ minimatch@3.1.2, minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1, minimatch dependencies: brace-expansion "^1.1.7" -minimatch@9.0.3, minimatch@^9.0.0, minimatch@^9.0.1: - version "9.0.3" - resolved "https://registry.npmmirror.com/minimatch/-/minimatch-9.0.3.tgz#a6e00c3de44c3a542bfaae70abfc22420a6da825" - integrity sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg== +minimatch@^10.2.1, minimatch@^10.2.2: + version "10.2.5" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-10.2.5.tgz#bd48687a0be38ed2961399105600f832095861d1" + integrity sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg== dependencies: - brace-expansion "^2.0.1" + brace-expansion "^5.0.5" -minimatch@^4.2.3: - version "4.2.3" - resolved "https://registry.npmmirror.com/minimatch/-/minimatch-4.2.3.tgz#b4dcece1d674dee104bb0fb833ebb85a78cbbca6" - integrity sha512-lIUdtK5hdofgCTu3aT0sOaHsYR37viUuIc0rwnnDXImbwFRcumyLMeZaM0t0I/fgxS6s6JMfu0rLD1Wz9pv1ng== +minimatch@^3.1.4: + version "3.1.5" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.5.tgz#580c88f8d5445f2bd6aa8f3cadefa0de79fbd69e" + integrity sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w== dependencies: brace-expansion "^1.1.7" @@ -19985,17 +23984,10 @@ minimatch@^5.0.1, minimatch@^5.1.0: dependencies: brace-expansion "^2.0.1" -minimatch@^7.4.3: - version "7.4.6" - resolved "https://registry.npmmirror.com/minimatch/-/minimatch-7.4.6.tgz#845d6f254d8f4a5e4fd6baf44d5f10c8448365fb" - integrity sha512-sBz8G/YjVniEz6lKPNpKxXwazJe4c19fEfV2GDMX6AjFz+MX9uDWIZW8XreVhkFW3fkIdTv/gxWr/Kks5FFAVw== - dependencies: - brace-expansion "^2.0.1" - -minimatch@^8.0.2: - version "8.0.4" - resolved "https://registry.npmmirror.com/minimatch/-/minimatch-8.0.4.tgz#847c1b25c014d4e9a7f68aaf63dedd668a626229" - integrity sha512-W0Wvr9HyFXZRGIDgCicunpQ299OKXs9RgZfaukz4qAW/pJhcpUfupc9c+OObPOFueNy8VSrZgEmDtk6Kh4WzDA== +minimatch@^9.0.0, minimatch@^9.0.1: + version "9.0.3" + resolved "https://registry.npmmirror.com/minimatch/-/minimatch-9.0.3.tgz#a6e00c3de44c3a542bfaae70abfc22420a6da825" + integrity sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg== dependencies: brace-expansion "^2.0.1" @@ -20006,16 +23998,7 @@ minimatch@^9.0.4: dependencies: brace-expansion "^2.0.1" -minimist-options@4.1.0: - version "4.1.0" - resolved "https://registry.npmmirror.com/minimist-options/-/minimist-options-4.1.0.tgz#c0655713c53a8a2ebd77ffa247d342c40f010619" - integrity sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A== - dependencies: - arrify "^1.0.1" - is-plain-obj "^1.1.0" - kind-of "^6.0.3" - -minimist@^1.2.0, minimist@^1.2.3, minimist@^1.2.5, minimist@^1.2.6: +minimist@^1.1.0, minimist@^1.2.0, minimist@^1.2.3, minimist@^1.2.5, minimist@^1.2.6: version "1.2.8" resolved "https://registry.npmmirror.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== @@ -20027,23 +24010,12 @@ minimisted@^2.0.0: dependencies: minimist "^1.2.5" -minipass-collect@^1.0.2: - version "1.0.2" - resolved "https://registry.npmmirror.com/minipass-collect/-/minipass-collect-1.0.2.tgz#22b813bf745dc6edba2576b940022ad6edc8c617" - integrity sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA== - dependencies: - minipass "^3.0.0" - -minipass-fetch@^2.0.3: - version "2.1.2" - resolved "https://registry.npmmirror.com/minipass-fetch/-/minipass-fetch-2.1.2.tgz#95560b50c472d81a3bc76f20ede80eaed76d8add" - integrity sha512-LT49Zi2/WMROHYoqGgdlQIZh8mLPZmOrN2NdJjMXxYe4nkN6FUyuPuOAOedNJDrx0IRGg9+4guZewtp8hE6TxA== +minipass-collect@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/minipass-collect/-/minipass-collect-2.0.1.tgz#1621bc77e12258a12c60d34e2276ec5c20680863" + integrity sha512-D7V8PO9oaz7PWGLbCACuI1qEOsq7UKfLotx/C0Aet43fCUB/wfQ7DYeq2oR/svFJGYDHPr38SHATeaj/ZoKHKw== dependencies: - minipass "^3.1.6" - minipass-sized "^1.0.3" - minizlib "^2.1.2" - optionalDependencies: - encoding "^0.1.13" + minipass "^7.0.3" minipass-fetch@^3.0.0: version "3.0.4" @@ -20063,14 +24035,6 @@ minipass-flush@^1.0.5: dependencies: minipass "^3.0.0" -minipass-json-stream@^1.0.1: - version "1.0.1" - resolved "https://registry.npmmirror.com/minipass-json-stream/-/minipass-json-stream-1.0.1.tgz#7edbb92588fbfc2ff1db2fc10397acb7b6b44aa7" - integrity sha512-ODqY18UZt/I8k+b7rl2AENgbWE8IDYam+undIJONvigAz8KR5GWblsFTEfQs0WODsjbSXWlm+JHEv8Gr6Tfdbg== - dependencies: - jsonparse "^1.3.1" - minipass "^3.0.0" - minipass-pipeline@^1.2.4: version "1.2.4" resolved "https://registry.npmmirror.com/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz#68472f79711c084657c067c5c6ad93cddea8214c" @@ -20085,18 +24049,13 @@ minipass-sized@^1.0.3: dependencies: minipass "^3.0.0" -minipass@^3.0.0, minipass@^3.1.1, minipass@^3.1.6: +minipass@^3.0.0: version "3.3.6" resolved "https://registry.npmmirror.com/minipass/-/minipass-3.3.6.tgz#7bba384db3a1520d18c9c0e5251c3444e95dd94a" integrity sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw== dependencies: yallist "^4.0.0" -minipass@^4.2.4: - version "4.2.8" - resolved "https://registry.npmmirror.com/minipass/-/minipass-4.2.8.tgz#f0010f64393ecfc1d1ccb5f582bcaf45f48e1a3a" - integrity sha512-fNzuVyifolSLFL4NzpF+wEF4qrgqaaKX0haXPQEdQ7NKAN+WecoKMHV09YcuL/DHxrUsYQOK3MiuDf7Ip2OXfQ== - minipass@^5.0.0: version "5.0.0" resolved "https://registry.npmmirror.com/minipass/-/minipass-5.0.0.tgz#3e9788ffb90b694a5d0ec94479a45b5d8738133d" @@ -20107,6 +24066,11 @@ minipass@^5.0.0: resolved "https://registry.npmmirror.com/minipass/-/minipass-7.0.4.tgz#dbce03740f50a4786ba994c1fb908844d27b038c" integrity sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ== +minipass@^7.0.2, minipass@^7.0.4, minipass@^7.1.3: + version "7.1.3" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-7.1.3.tgz#79389b4eb1bb2d003a9bba87d492f2bd37bdc65b" + integrity sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A== + minipass@^7.1.2: version "7.1.2" resolved "https://registry.npmmirror.com/minipass/-/minipass-7.1.2.tgz#93a9626ce5e5e66bd4db86849e7515e92340a707" @@ -20120,32 +24084,75 @@ minizlib@^2.1.1, minizlib@^2.1.2: minipass "^3.0.0" yallist "^4.0.0" +minizlib@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-3.1.0.tgz#6ad76c3a8f10227c9b51d1c9ac8e30b27f5a251c" + integrity sha512-KZxYo1BUkWD2TVFLr0MQoM8vUUigWD3LlD83a/75BqC+4qE0Hb1Vo5v1FgcfaNXvfXzr+5EhQ6ing/CaBijTlw== + dependencies: + minipass "^7.1.2" + mkdirp-classic@^0.5.2, mkdirp-classic@^0.5.3: version "0.5.3" resolved "https://registry.npmmirror.com/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz#fa10c9115cc6d8865be221ba47ee9bed78601113" integrity sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A== -mkdirp@^0.5.4: - version "0.5.6" - resolved "https://registry.npmmirror.com/mkdirp/-/mkdirp-0.5.6.tgz#7def03d2432dcae4ba1d611445c48396062255f6" - integrity sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw== - dependencies: - minimist "^1.2.6" - -mkdirp@^1.0.3, mkdirp@^1.0.4: +mkdirp@^1.0.3: version "1.0.4" resolved "https://registry.npmmirror.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== -modify-values@^1.0.1: - version "1.0.1" - resolved "https://registry.npmmirror.com/modify-values/-/modify-values-1.0.1.tgz#b3939fa605546474e3e3e3c63d64bd43b4ee6022" - integrity sha512-xV2bxeN6F7oYjZWTe/YPAy6MN2M+sL4u/Rlm2AHCIVGfo2p1yGmBHQ6vHehl4bRTZBdHu3TSkWdYgkwpYzAGSw== - -moment@^2.29.1: - version "2.30.1" - resolved "https://registry.npmmirror.com/moment/-/moment-2.30.1.tgz#f8c91c07b7a786e30c59926df530b4eac96974ae" - integrity sha512-uEmtNhbDOrWPFS+hdjFCBfy9f2YoyzRpwcl+DqpC6taX21FzsTLQVbMV/W7PzNSX6x/bhC1zA3c2UQ5NzH6how== +mkdirp@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-3.0.1.tgz#e44e4c5607fb279c168241713cc6e0fea9adcb50" + integrity sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg== + +mockttp@^3.13.0: + version "3.17.1" + resolved "https://registry.yarnpkg.com/mockttp/-/mockttp-3.17.1.tgz#77a0ca0a0a63c00079c2bcfc872eaf39185d4fb7" + integrity sha512-sW6m4uaRIGJrtrQNZbUoSisTEAq91oS9C4cUyVFpHgMcpTwsG2ZvF94qOBt4PpEf9gGCiwkxvzkEEt4W/CPHHg== + dependencies: + "@graphql-tools/schema" "^8.5.0" + "@graphql-tools/utils" "^8.8.0" + "@httptoolkit/httpolyglot" "^2.2.1" + "@httptoolkit/subscriptions-transport-ws" "^0.11.2" + "@httptoolkit/websocket-stream" "^6.0.1" + "@types/cors" "^2.8.6" + "@types/node" "*" + async-mutex "^0.5.0" + base64-arraybuffer "^0.1.5" + body-parser "^1.15.2" + cacheable-lookup "^6.0.0" + common-tags "^1.8.0" + connect "^3.7.0" + cors "^2.8.4" + cors-gate "^1.1.3" + cross-fetch "^3.1.5" + destroyable-server "^1.1.1" + express "^4.14.0" + fast-json-patch "^3.1.1" + graphql "^14.0.2 || ^15.5" + graphql-http "^1.22.0" + graphql-subscriptions "^1.1.0" + graphql-tag "^2.12.6" + http-encoding "^2.0.1" + http2-wrapper "^2.2.1" + https-proxy-agent "^5.0.1" + isomorphic-ws "^4.0.1" + lodash "^4.16.4" + lru-cache "^7.14.0" + native-duplexpair "^1.0.0" + node-forge "^1.2.1" + pac-proxy-agent "^7.0.0" + parse-multipart-data "^1.4.0" + performance-now "^2.1.0" + portfinder "^1.0.32" + read-tls-client-hello "^1.1.0" + semver "^7.5.3" + socks-proxy-agent "^7.0.0" + typed-error "^3.0.2" + urlpattern-polyfill "^8.0.0" + uuid "^8.3.2" + ws "^8.8.0" moo@^0.5.0: version "0.5.2" @@ -20163,6 +24170,26 @@ morgan@^1.10.0: on-finished "~2.3.0" on-headers "~1.0.2" +motion-dom@^12.38.0: + version "12.38.0" + resolved "https://registry.yarnpkg.com/motion-dom/-/motion-dom-12.38.0.tgz#9ef3253ea0fb28b6757588327073848d940e9aab" + integrity sha512-pdkHLD8QYRp8VfiNLb8xIBJis1byQ9gPT3Jnh2jqfFtAsWUA3dEepDlsWe/xMpO8McV+VdpKVcp+E+TGJEtOoA== + dependencies: + motion-utils "^12.36.0" + +motion-utils@^12.36.0: + version "12.36.0" + resolved "https://registry.yarnpkg.com/motion-utils/-/motion-utils-12.36.0.tgz#cff2df2a28c3fe53a3de7e0103ba7f73ff7d77a7" + integrity sha512-eHWisygbiwVvf6PZ1vhaHCLamvkSbPIeAYxWUuL3a2PD/TROgE7FvfHWTIH4vMl798QLfMw15nRqIaRDXTlYRg== + +motion@^12.0.0: + version "12.38.0" + resolved "https://registry.yarnpkg.com/motion/-/motion-12.38.0.tgz#851fb591f98ed98815e223c09a0de13614ea4155" + integrity sha512-uYfXzeHlgThchzwz5Te47dlv5JOUC7OB4rjJ/7XTUgtBZD8CchMN8qEJ4ZVsUmTyYA44zjV0fBwsiktRuFnn+w== + dependencies: + framer-motion "^12.38.0" + tslib "^2.4.0" + mri@1.1.4: version "1.1.4" resolved "https://registry.npmmirror.com/mri/-/mri-1.1.4.tgz#7cb1dd1b9b40905f1fac053abe25b6720f44744a" @@ -20183,7 +24210,7 @@ ms@2.1.2: resolved "https://registry.npmmirror.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== -ms@2.1.3, ms@^2.0.0, ms@^2.1.1: +ms@2.1.3, ms@^2.0.0, ms@^2.1.1, ms@^2.1.3: version "2.1.3" resolved "https://registry.npmmirror.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== @@ -20213,18 +24240,15 @@ msw@^1.0.0: type-fest "^2.19.0" yargs "^17.3.1" -multer@^1.4.5-lts.1: - version "1.4.5-lts.1" - resolved "https://registry.npmmirror.com/multer/-/multer-1.4.5-lts.1.tgz#803e24ad1984f58edffbc79f56e305aec5cfd1ac" - integrity sha512-ywPWvcDMeH+z9gQq5qYHCCy+ethsk4goepZ45GLD63fOu0YcNecQxi64nDs3qluZB+murG3/D4dJ7+dGctcCQQ== +multer@^2.0.2: + version "2.1.1" + resolved "https://registry.yarnpkg.com/multer/-/multer-2.1.1.tgz#122d819244fbdfee1efddd9147426691014385b7" + integrity sha512-mo+QTzKlx8R7E5ylSXxWzGoXoZbOsRMpyitcht8By2KHvMbf3tjwosZ/Mu/XYU6UuJ3VZnODIrak5ZrPiPyB6A== dependencies: append-field "^1.0.0" - busboy "^1.0.0" - concat-stream "^1.5.2" - mkdirp "^0.5.4" - object-assign "^4.1.1" - type-is "^1.6.4" - xtend "^4.0.0" + busboy "^1.6.0" + concat-stream "^2.0.0" + type-is "^1.6.18" multicast-dns@^7.2.5: version "7.2.5" @@ -20234,27 +24258,11 @@ multicast-dns@^7.2.5: dns-packet "^5.2.2" thunky "^1.0.2" -multimatch@5.0.0: - version "5.0.0" - resolved "https://registry.npmmirror.com/multimatch/-/multimatch-5.0.0.tgz#932b800963cea7a31a033328fa1e0c3a1874dbe6" - integrity sha512-ypMKuglUrZUD99Tk2bUQ+xNQj43lPEfAeX2o9cTteAmShXy2VHDJpuwu1o0xqoKCt9jLVAvwyFKdLTPXKAfJyA== - dependencies: - "@types/minimatch" "^3.0.3" - array-differ "^3.0.0" - array-union "^2.1.0" - arrify "^2.0.1" - minimatch "^3.0.4" - mute-stream@0.0.8: version "0.0.8" resolved "https://registry.npmmirror.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d" integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA== -mute-stream@~1.0.0: - version "1.0.0" - resolved "https://registry.npmmirror.com/mute-stream/-/mute-stream-1.0.0.tgz#e31bd9fe62f0aed23520aa4324ea6671531e013e" - integrity sha512-avsJQhyd+680gKXyG/sQc0nXaC6rBkPOfyHYcFb9+hdkqQkR9bdnkJ0AMZhke0oesPqIO+mFFJ+IdBc7mst4IA== - mysql2@^3.0.0: version "3.10.0" resolved "https://registry.npmmirror.com/mysql2/-/mysql2-3.10.0.tgz#5109449fda3dc03fb7d6bdf2cf91f97477081987" @@ -20269,7 +24277,7 @@ mysql2@^3.0.0: seq-queue "^0.0.5" sqlstring "^2.3.2" -mz@^2.7.0: +mz@^2.4.0, mz@^2.7.0: version "2.7.0" resolved "https://registry.npmmirror.com/mz/-/mz-2.7.0.tgz#95008057a56cafadc2bc63dde7f9ff6955948e32" integrity sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q== @@ -20285,11 +24293,16 @@ named-placeholders@^1.1.3: dependencies: lru-cache "^7.14.1" -nan@^2.14.0, nan@^2.17.0, nan@^2.18.0: +nan@^2.17.0, nan@^2.18.0: version "2.18.0" resolved "https://registry.npmmirror.com/nan/-/nan-2.18.0.tgz#26a6faae7ffbeb293a39660e88a76b82e30b7554" integrity sha512-W7tfG7vMOGtD30sHoZSSc/JVYiyDPEyQVso/Zz+/uQd0B0L46gtC+pHha5FFMRpil6fm/AoEcRWyOVi4+E/f8w== +nan@^2.19.0, nan@^2.23.0: + version "2.26.2" + resolved "https://registry.yarnpkg.com/nan/-/nan-2.26.2.tgz#2e5e25764224c737b9897790b57c3294d4dcee9c" + integrity sha512-0tTvBTYkt3tdGw22nrAy50x7gpbGCCFH3AFcyS5WiUu7Eu4vWlri1woE6qHBSfy11vksDqkiwjOnlR7WV8G1Hw== + nano-css@^5.6.1: version "5.6.1" resolved "https://registry.npmmirror.com/nano-css/-/nano-css-5.6.1.tgz#964120cb1af6cccaa6d0717a473ccd876b34c197" @@ -20304,6 +24317,20 @@ nano-css@^5.6.1: stacktrace-js "^2.0.2" stylis "^4.3.0" +nano-css@^5.6.2: + version "5.6.2" + resolved "https://registry.yarnpkg.com/nano-css/-/nano-css-5.6.2.tgz#584884ddd7547278f6d6915b6805069742679a32" + integrity sha512-+6bHaC8dSDGALM1HJjOHVXpuastdu2xFoZlC77Jh4cg+33Zcgm+Gxd+1xsnpZK14eyHObSp82+ll5y3SX75liw== + dependencies: + "@jridgewell/sourcemap-codec" "^1.4.15" + css-tree "^1.1.2" + csstype "^3.1.2" + fastest-stable-stringify "^2.0.2" + inline-style-prefixer "^7.0.1" + rtl-css-js "^1.16.1" + stacktrace-js "^2.0.2" + stylis "^4.3.0" + nanoid@^3.3.7: version "3.3.7" resolved "https://registry.npmmirror.com/nanoid/-/nanoid-3.3.7.tgz#d0c301a691bc8d54efa0a2226ccf3fe2fd656bd8" @@ -20314,6 +24341,16 @@ napi-build-utils@^1.0.1: resolved "https://registry.npmmirror.com/napi-build-utils/-/napi-build-utils-1.0.2.tgz#b1fddc0b2c46e380a0b7a76f984dd47c41a13806" integrity sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg== +napi-build-utils@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/napi-build-utils/-/napi-build-utils-2.0.0.tgz#13c22c0187fcfccce1461844136372a47ddc027e" + integrity sha512-GEbrYkbfF7MoNaoh2iGG84Mnf/WZfB0GdGEsM8wz7Expx/LlWf5U8t9nvJKXSp3qr5IsEbK04cBGhol/KwOsWA== + +native-duplexpair@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/native-duplexpair/-/native-duplexpair-1.0.0.tgz#7899078e64bf3c8a3d732601b3d40ff05db58fa0" + integrity sha512-E7QQoM+3jvNtlmyfqRZ0/U75VFgCls+fSkbml2MpgWkWyz3ox8Y58gNhfuziuQYGNNQAbFZJQck55LHCnCK6CA== + natural-compare@^1.4.0: version "1.4.0" resolved "https://registry.npmmirror.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" @@ -20345,11 +24382,26 @@ negotiator@0.6.3, negotiator@^0.6.3: resolved "https://registry.npmmirror.com/negotiator/-/negotiator-0.6.3.tgz#58e323a72fedc0d6f9cd4d31fe49f51479590ccd" integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg== +negotiator@~0.6.4: + version "0.6.4" + resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.4.tgz#777948e2452651c570b712dd01c23e262713fff7" + integrity sha512-myRT3DiWPHqho5PrJaIRyaMv2kgYf0mUVgBNOYMuCH5Ki1yEiQaf/ZJuQ62nvpc44wL5WDbTX7yGJi1Neevw8w== + neo-async@^2.6.2: version "2.6.2" resolved "https://registry.npmmirror.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== +neotraverse@=0.6.18: + version "0.6.18" + resolved "https://registry.yarnpkg.com/neotraverse/-/neotraverse-0.6.18.tgz#abcb33dda2e8e713cf6321b29405e822230cdb30" + integrity sha512-Z4SmBUweYa09+o6pG+eASabEpP6QkQ70yHj351pQoEXIs8uHbaU2DWVmzBANKgflPa47A50PtB2+NgRpQvr7vA== + +netmask@^2.0.2: + version "2.1.1" + resolved "https://registry.yarnpkg.com/netmask/-/netmask-2.1.1.tgz#80043d265b53aa521b3bd01e8fcdf353f9e1e81e" + integrity sha512-eonl3sLUha+S1GzTPxychyhnUzKyeQkZ7jLjKrBagJgPla13F+uQ71HgpFefyHgqrjEbCPkDArxYsjY8/+gLKA== + nimma@0.2.2: version "0.2.2" resolved "https://registry.npmmirror.com/nimma/-/nimma-0.2.2.tgz#48d00f837d17b4baa23beec22ac1380f152f15ef" @@ -20363,6 +24415,19 @@ nimma@0.2.2: jsonpath-plus "^6.0.1" lodash.topath "^4.5.2" +nimma@0.2.3: + version "0.2.3" + resolved "https://registry.yarnpkg.com/nimma/-/nimma-0.2.3.tgz#33cd6244ede857d9c8ac45b9d1aad07091559e45" + integrity sha512-1ZOI8J+1PKKGceo/5CT5GfQOG6H8I2BencSK06YarZ2wXwH37BSSUWldqJmMJYA5JfqDqffxDXynt6f11AyKcA== + dependencies: + "@jsep-plugin/regex" "^1.0.1" + "@jsep-plugin/ternary" "^1.0.2" + astring "^1.8.1" + jsep "^1.2.0" + optionalDependencies: + jsonpath-plus "^6.0.1 || ^10.1.0" + lodash.topath "^4.5.2" + no-case@^3.0.4: version "3.0.4" resolved "https://registry.npmmirror.com/no-case/-/no-case-3.0.4.tgz#d361fd5c9800f558551a8369fc0dcd4662b6124d" @@ -20383,26 +24448,44 @@ node-abort-controller@^3.0.1, node-abort-controller@^3.1.1: resolved "https://registry.npmmirror.com/node-abort-controller/-/node-abort-controller-3.1.1.tgz#a94377e964a9a37ac3976d848cb5c765833b8548" integrity sha512-AGK2yQKIjRuqnc6VkX2Xj5d+QW8xZ87pa1UK6yA6ouUyuxfHuMP6umE5QK7UmTeOAymo+Zx1Fxiuw9rVx8taHQ== -node-addon-api@^3.2.1: - version "3.2.1" - resolved "https://registry.npmmirror.com/node-addon-api/-/node-addon-api-3.2.1.tgz#81325e0a2117789c0128dab65e7e38f07ceba161" - integrity sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A== +node-addon-api@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-4.3.0.tgz#52a1a0b475193e0928e98e0426a0d1254782b77f" + integrity sha512-73sE9+3UaLYYFmDsFZnqCInzPyh3MqIwZO9cw58yIqAZhONrrabrYyYe3TuIqtIiOuTXVhsGau8hcrhhwSsDIQ== -node-cache@^5.1.2: - version "5.1.2" - resolved "https://registry.npmmirror.com/node-cache/-/node-cache-5.1.2.tgz#f264dc2ccad0a780e76253a694e9fd0ed19c398d" - integrity sha512-t1QzWwnk4sjLWaQAS8CHgOJ+RAfmHpxFWmc36IWTiWHQfs0w5JDMBS1b1ZxQteo0vVVuWJvIUKHDkkeK7vIGCg== - dependencies: - clone "2.x" +node-addon-api@^8.0.0, node-addon-api@^8.2.2, node-addon-api@^8.3.0, node-addon-api@^8.3.1: + version "8.7.0" + resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-8.7.0.tgz#f64f8413456ecbe900221305a3f883c37666473f" + integrity sha512-9MdFxmkKaOYVTV+XVRG8ArDwwQ77XIgIPyKASB1k3JPq3M8fGQQQE3YpMOrKm6g//Ktx8ivZr8xo1Qmtqub+GA== -node-domexception@^1.0.0: +node-domexception@1.0.0, node-domexception@^1.0.0: version "1.0.0" resolved "https://registry.npmmirror.com/node-domexception/-/node-domexception-1.0.0.tgz#6888db46a1f71c0b76b3f7555016b63fe64766e5" integrity sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ== -node-fetch-commonjs@^3.3.1: +node-emoji@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/node-emoji/-/node-emoji-2.2.0.tgz#1d000e3c76e462577895be1b436f4aa2d6760eb0" + integrity sha512-Z3lTE9pLaJF47NyMhd4ww1yFTAP8YhYI8SleJiHzM46Fgpm5cnNzSl9XfzFNqbaz+VlJrIj3fXQ4DeN1Rjm6cw== + dependencies: + "@sindresorhus/is" "^4.6.0" + char-regex "^1.0.2" + emojilib "^2.4.0" + skin-tone "^2.0.0" + +node-exports-info@^1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/node-exports-info/-/node-exports-info-1.6.0.tgz#1aedafb01a966059c9a5e791a94a94d93f5c2a13" + integrity sha512-pyFS63ptit/P5WqUkt+UUfe+4oevH+bFeIiPPdfb0pFeYEu/1ELnJu5l+5EcTKYL5M7zaAa7S8ddywgXypqKCw== + dependencies: + array.prototype.flatmap "^1.3.3" + es-errors "^1.3.0" + object.entries "^1.1.9" + semver "^6.3.1" + +node-fetch-commonjs@^3.3.2: version "3.3.2" - resolved "https://registry.npmmirror.com/node-fetch-commonjs/-/node-fetch-commonjs-3.3.2.tgz#0dd0fd4c4a314c5234f496ff7b5d9ce5a6c8feaa" + resolved "https://registry.yarnpkg.com/node-fetch-commonjs/-/node-fetch-commonjs-3.3.2.tgz#0dd0fd4c4a314c5234f496ff7b5d9ce5a6c8feaa" integrity sha512-VBlAiynj3VMLrotgwOS3OyECFxas5y7ltLcK4t41lMUZeaK15Ym4QRkqN0EQKAFL42q9i21EPKjzLUPfltR72A== dependencies: node-domexception "^1.0.0" @@ -20415,7 +24498,7 @@ node-fetch@2.6.7: dependencies: whatwg-url "^5.0.0" -node-fetch@^2.6.0, node-fetch@^2.6.1, node-fetch@^2.6.12, node-fetch@^2.6.7, node-fetch@^2.6.9: +node-fetch@^2.6.0, node-fetch@^2.6.1, node-fetch@^2.6.12, node-fetch@^2.6.7, node-fetch@^2.6.9, node-fetch@^2.7.0: version "2.7.0" resolved "https://registry.npmmirror.com/node-fetch/-/node-fetch-2.7.0.tgz#d0f0fa6e3e2dc1d27efcd8ad99d550bda94d187d" integrity sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A== @@ -20427,72 +24510,52 @@ node-forge@^1, node-forge@^1.3.1: resolved "https://registry.npmmirror.com/node-forge/-/node-forge-1.3.1.tgz#be8da2af243b2417d5f646a770663a92b7e9ded3" integrity sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA== -node-gyp-build@^4.3.0: - version "4.8.0" - resolved "https://registry.npmmirror.com/node-gyp-build/-/node-gyp-build-4.8.0.tgz#3fee9c1731df4581a3f9ead74664369ff00d26dd" - integrity sha512-u6fs2AEUljNho3EYTJNBfImO5QTo/J/1Etd+NVdCj7qWKUSN/bSLkZwhDv7I+w/MSC6qJ4cknepkAYykDdK8og== +node-forge@^1.2.1, node-forge@^1.3.2: + version "1.4.0" + resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-1.4.0.tgz#1c7b7d8bdc2d078739f58287d589d903a11b2fc2" + integrity sha512-LarFH0+6VfriEhqMMcLX2F7SwSXeWwnEAJEsYm5QKWchiVYVvJyV9v7UDvUv+w5HO23ZpQTXDv/GxdDdMyOuoQ== + +node-gyp-build@^4.8.0, node-gyp-build@^4.8.2, node-gyp-build@^4.8.4: + version "4.8.4" + resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-4.8.4.tgz#8a70ee85464ae52327772a90d66c6077a900cfc8" + integrity sha512-LA4ZjwlnUblHVgq0oBF3Jl/6h/Nvs5fzBLwdEF4nuxnFdsfajde4WfxtJr3CaiH+F6ewcIB/q4jQ4UzPyid+CQ== -node-gyp@^9.0.0: - version "9.4.1" - resolved "https://registry.npmmirror.com/node-gyp/-/node-gyp-9.4.1.tgz#8a1023e0d6766ecb52764cc3a734b36ff275e185" - integrity sha512-OQkWKbjQKbGkMf/xqI1jjy3oCTgMKJac58G2+bjZb3fza6gW2YrCSdMQYaoTb70crvE//Gngr4f0AgVHmqHvBQ== +node-gyp@^10.0.0: + version "10.3.1" + resolved "https://registry.yarnpkg.com/node-gyp/-/node-gyp-10.3.1.tgz#1dd1a1a1c6c5c59da1a76aea06a062786b2c8a1a" + integrity sha512-Pp3nFHBThHzVtNY7U6JfPjvT/DTE8+o/4xKsLQtBoU+j2HLsGlhcfzflAoUreaJbNmYnX+LlLi0qjV8kpyO6xQ== dependencies: env-paths "^2.2.0" exponential-backoff "^3.1.1" - glob "^7.1.4" + glob "^10.3.10" graceful-fs "^4.2.6" - make-fetch-happen "^10.0.3" - nopt "^6.0.0" - npmlog "^6.0.0" - rimraf "^3.0.2" + make-fetch-happen "^13.0.0" + nopt "^7.0.0" + proc-log "^4.1.0" semver "^7.3.5" - tar "^6.1.2" - which "^2.0.2" + tar "^6.2.1" + which "^4.0.0" + +node-hex@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/node-hex/-/node-hex-1.0.1.tgz#606208e91f9c02b9b81531b692b9f1da4860fb24" + integrity sha512-iwpZdvW6Umz12ICmu9IYPRxg0tOLGmU3Tq2tKetejCj3oZd7b2nUXwP3a7QA5M9glWy8wlPS1G3RwM/CdsUbdQ== node-int64@^0.4.0: version "0.4.0" - resolved "https://registry.npmmirror.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" + resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" integrity sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw== -node-libs-browser@^2.2.1: - version "2.2.1" - resolved "https://registry.npmmirror.com/node-libs-browser/-/node-libs-browser-2.2.1.tgz#b64f513d18338625f90346d27b0d235e631f6425" - integrity sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q== - dependencies: - assert "^1.1.1" - browserify-zlib "^0.2.0" - buffer "^4.3.0" - console-browserify "^1.1.0" - constants-browserify "^1.0.0" - crypto-browserify "^3.11.0" - domain-browser "^1.1.1" - events "^3.0.0" - https-browserify "^1.0.0" - os-browserify "^0.3.0" - path-browserify "0.0.1" - process "^0.11.10" - punycode "^1.2.4" - querystring-es3 "^0.2.0" - readable-stream "^2.3.3" - stream-browserify "^2.0.1" - stream-http "^2.7.2" - string_decoder "^1.0.0" - timers-browserify "^2.0.4" - tty-browserify "0.0.0" - url "^0.11.0" - util "^0.11.0" - vm-browserify "^1.0.1" - -node-machine-id@1.1.12: - version "1.1.12" - resolved "https://registry.npmmirror.com/node-machine-id/-/node-machine-id-1.1.12.tgz#37904eee1e59b320bb9c5d6c0a59f3b469cb6267" - integrity sha512-QNABxbrPa3qEIfrE6GOJ7BYIuignnJw7iQ2YPbc3Nla1HzRJjXzZOiikfF8m7eAMfichLt3M4VgLOetqgDmgGQ== - node-releases@^2.0.14: version "2.0.14" resolved "https://registry.npmmirror.com/node-releases/-/node-releases-2.0.14.tgz#2ffb053bceb8b2be8495ece1ab6ce600c4461b0b" integrity sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw== +node-releases@^2.0.36: + version "2.0.38" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.38.tgz#791569b9e4424a044e12c3abfad418ed83ce9947" + integrity sha512-3qT/88Y3FbH/Kx4szpQQ4HzUbVrHPKTLVpVocKiLfoYvw9XSGOX2FmD2d6DrXbVYyAQTF2HeF6My8jmzx7/CRw== + node-schedule@2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/node-schedule/-/node-schedule-2.1.1.tgz#6958b2c5af8834954f69bb0a7a97c62b97185de3" @@ -20502,49 +24565,45 @@ node-schedule@2.1.1: long-timeout "0.1.1" sorted-array-functions "^1.3.0" -nopt@^6.0.0: - version "6.0.0" - resolved "https://registry.npmmirror.com/nopt/-/nopt-6.0.0.tgz#245801d8ebf409c6df22ab9d95b65e1309cdb16d" - integrity sha512-ZwLpbTgdhuZUnZzjd7nb1ZV+4DoiC6/sfiVKok72ym/4Tlf+DFdlHYmT2JPmcNNWV6Pi3SDf1kT+A4r9RTuT9g== - dependencies: - abbrev "^1.0.0" - -normalize-package-data@^2.3.2, normalize-package-data@^2.5.0: - version "2.5.0" - resolved "https://registry.npmmirror.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" - integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA== - dependencies: - hosted-git-info "^2.1.4" - resolve "^1.10.0" - semver "2 || 3 || 4 || 5" - validate-npm-package-license "^3.0.1" - -normalize-package-data@^3.0.0, normalize-package-data@^3.0.3: - version "3.0.3" - resolved "https://registry.npmmirror.com/normalize-package-data/-/normalize-package-data-3.0.3.tgz#dbcc3e2da59509a0983422884cd172eefdfa525e" - integrity sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA== - dependencies: - hosted-git-info "^4.0.1" - is-core-module "^2.5.0" - semver "^7.3.4" - validate-npm-package-license "^3.0.1" - -normalize-package-data@^5.0.0: - version "5.0.0" - resolved "https://registry.npmmirror.com/normalize-package-data/-/normalize-package-data-5.0.0.tgz#abcb8d7e724c40d88462b84982f7cbf6859b4588" - integrity sha512-h9iPVIfrVZ9wVYQnxFgtw1ugSvGEMOlyPWWtm8BMJhnwyEL/FLbYbTY3V3PpjI/BUK67n9PEWDu6eHzu1fB15Q== +node-stdlib-browser@^1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/node-stdlib-browser/-/node-stdlib-browser-1.3.1.tgz#f41fa554f720a3df951e40339f4d92ac512222ac" + integrity sha512-X75ZN8DCLftGM5iKwoYLA3rjnrAEs97MkzvSd4q2746Tgpg8b8XWiBGiBG4ZpgcAqBgtgPHTiAc8ZMCvZuikDw== dependencies: - hosted-git-info "^6.0.0" - is-core-module "^2.8.1" - semver "^7.3.5" - validate-npm-package-license "^3.0.4" + assert "^2.0.0" + browser-resolve "^2.0.0" + browserify-zlib "^0.2.0" + buffer "^5.7.1" + console-browserify "^1.1.0" + constants-browserify "^1.0.0" + create-require "^1.1.1" + crypto-browserify "^3.12.1" + domain-browser "4.22.0" + events "^3.0.0" + https-browserify "^1.0.0" + isomorphic-timers-promises "^1.0.1" + os-browserify "^0.3.0" + path-browserify "^1.0.1" + pkg-dir "^5.0.0" + process "^0.11.10" + punycode "^1.4.1" + querystring-es3 "^0.2.1" + readable-stream "^3.6.0" + stream-browserify "^3.0.0" + stream-http "^3.2.0" + string_decoder "^1.0.0" + timers-browserify "^2.0.4" + tty-browserify "0.0.1" + url "^0.11.4" + util "^0.12.4" + vm-browserify "^1.0.1" -normalize-path@^2.1.1: - version "2.1.1" - resolved "https://registry.npmmirror.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" - integrity sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w== +nopt@^7.0.0: + version "7.2.1" + resolved "https://registry.yarnpkg.com/nopt/-/nopt-7.2.1.tgz#1cac0eab9b8e97c9093338446eddd40b2c8ca1e7" + integrity sha512-taM24ViiimT/XntxbPyJQzCG+p4EKOpgD3mxFwW38mGjVUrfERQOeY4EDHjdnptttfHuHQXFx+lTP08Q+mLa/w== dependencies: - remove-trailing-separator "^1.0.1" + abbrev "^2.0.0" normalize-path@^3.0.0, normalize-path@~3.0.0: version "3.0.0" @@ -20556,13 +24615,6 @@ normalize-url@^6.0.1: resolved "https://registry.npmmirror.com/normalize-url/-/normalize-url-6.1.0.tgz#40d0885b535deffe3f3147bec877d05fe4c5668a" integrity sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A== -npm-bundled@^1.1.2: - version "1.1.2" - resolved "https://registry.npmmirror.com/npm-bundled/-/npm-bundled-1.1.2.tgz#944c78789bd739035b70baa2ca5cc32b8d860bc1" - integrity sha512-x5DHup0SuyQcmL3s7Rx/YQ8sbw/Hzg0rj48eN0dV7hf5cmQq5PXIeioroH3raV1QC1yh3uTYuMThvEQF3iKgGQ== - dependencies: - npm-normalize-package-bin "^1.0.1" - npm-bundled@^2.0.0: version "2.0.1" resolved "https://registry.npmmirror.com/npm-bundled/-/npm-bundled-2.0.1.tgz#94113f7eb342cd7a67de1e789f896b04d2c600f4" @@ -20570,64 +24622,11 @@ npm-bundled@^2.0.0: dependencies: npm-normalize-package-bin "^2.0.0" -npm-bundled@^3.0.0: - version "3.0.0" - resolved "https://registry.npmmirror.com/npm-bundled/-/npm-bundled-3.0.0.tgz#7e8e2f8bb26b794265028491be60321a25a39db7" - integrity sha512-Vq0eyEQy+elFpzsKjMss9kxqb9tG3YHg4dsyWuUENuzvSUWe1TCnW/vV9FkhvBk/brEDoDiVd+M1Btosa6ImdQ== - dependencies: - npm-normalize-package-bin "^3.0.0" - -npm-install-checks@^6.0.0: - version "6.3.0" - resolved "https://registry.npmmirror.com/npm-install-checks/-/npm-install-checks-6.3.0.tgz#046552d8920e801fa9f919cad569545d60e826fe" - integrity sha512-W29RiK/xtpCGqn6f3ixfRYGk+zRyr+Ew9F2E20BfXxT5/euLdA/Nm7fO7OeTGuAmTs30cpgInyJ0cYe708YTZw== - dependencies: - semver "^7.1.1" - -npm-normalize-package-bin@^1.0.1: - version "1.0.1" - resolved "https://registry.npmmirror.com/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz#6e79a41f23fd235c0623218228da7d9c23b8f6e2" - integrity sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA== - npm-normalize-package-bin@^2.0.0: version "2.0.0" resolved "https://registry.npmmirror.com/npm-normalize-package-bin/-/npm-normalize-package-bin-2.0.0.tgz#9447a1adaaf89d8ad0abe24c6c84ad614a675fff" integrity sha512-awzfKUO7v0FscrSpRoogyNm0sajikhBWpU0QMrW09AMi9n1PoKU6WaIqUzuJSQnpciZZmJ/jMZ2Egfmb/9LiWQ== -npm-normalize-package-bin@^3.0.0: - version "3.0.1" - resolved "https://registry.npmmirror.com/npm-normalize-package-bin/-/npm-normalize-package-bin-3.0.1.tgz#25447e32a9a7de1f51362c61a559233b89947832" - integrity sha512-dMxCf+zZ+3zeQZXKxmyuCKlIDPGuv8EF940xbkC4kQVDTtqoh6rJFO+JTKSA6/Rwi0getWmtuy4Itup0AMcaDQ== - -npm-package-arg@8.1.1: - version "8.1.1" - resolved "https://registry.npmmirror.com/npm-package-arg/-/npm-package-arg-8.1.1.tgz#00ebf16ac395c63318e67ce66780a06db6df1b04" - integrity sha512-CsP95FhWQDwNqiYS+Q0mZ7FAEDytDZAkNxQqea6IaAFJTAY9Lhhqyl0irU/6PMc7BGfUmnsbHcqxJD7XuVM/rg== - dependencies: - hosted-git-info "^3.0.6" - semver "^7.0.0" - validate-npm-package-name "^3.0.0" - -npm-package-arg@^10.0.0, npm-package-arg@^10.1.0: - version "10.1.0" - resolved "https://registry.npmmirror.com/npm-package-arg/-/npm-package-arg-10.1.0.tgz#827d1260a683806685d17193073cc152d3c7e9b1" - integrity sha512-uFyyCEmgBfZTtrKk/5xDfHp6+MdrqGotX/VoOyEEl3mBwiEE5FlBaePanazJSVMPT7vKepcjYBY2ztg9A3yPIA== - dependencies: - hosted-git-info "^6.0.0" - proc-log "^3.0.0" - semver "^7.3.5" - validate-npm-package-name "^5.0.0" - -npm-packlist@5.1.1: - version "5.1.1" - resolved "https://registry.npmmirror.com/npm-packlist/-/npm-packlist-5.1.1.tgz#79bcaf22a26b6c30aa4dd66b976d69cc286800e0" - integrity sha512-UfpSvQ5YKwctmodvPPkK6Fwk603aoVsf8AEbmVKAEECrfvL8SSe1A2YIwrJ6xmTHAITKPwwZsWo7WwEbNk0kxw== - dependencies: - glob "^8.0.1" - ignore-walk "^5.0.1" - npm-bundled "^1.1.2" - npm-normalize-package-bin "^1.0.1" - npm-packlist@^5.0.0: version "5.1.3" resolved "https://registry.npmmirror.com/npm-packlist/-/npm-packlist-5.1.3.tgz#69d253e6fd664b9058b85005905012e00e69274b" @@ -20638,36 +24637,6 @@ npm-packlist@^5.0.0: npm-bundled "^2.0.0" npm-normalize-package-bin "^2.0.0" -npm-packlist@^7.0.0: - version "7.0.4" - resolved "https://registry.npmmirror.com/npm-packlist/-/npm-packlist-7.0.4.tgz#033bf74110eb74daf2910dc75144411999c5ff32" - integrity sha512-d6RGEuRrNS5/N84iglPivjaJPxhDbZmlbTwTDX2IbcRHG5bZCdtysYMhwiPvcF4GisXHGn7xsxv+GQ7T/02M5Q== - dependencies: - ignore-walk "^6.0.0" - -npm-pick-manifest@^8.0.0: - version "8.0.2" - resolved "https://registry.npmmirror.com/npm-pick-manifest/-/npm-pick-manifest-8.0.2.tgz#2159778d9c7360420c925c1a2287b5a884c713aa" - integrity sha512-1dKY+86/AIiq1tkKVD3l0WI+Gd3vkknVGAggsFeBkTvbhMQ1OND/LKkYv4JtXPKUJ8bOTCyLiqEg2P6QNdK+Gg== - dependencies: - npm-install-checks "^6.0.0" - npm-normalize-package-bin "^3.0.0" - npm-package-arg "^10.0.0" - semver "^7.3.5" - -npm-registry-fetch@^14.0.0, npm-registry-fetch@^14.0.3, npm-registry-fetch@^14.0.5: - version "14.0.5" - resolved "https://registry.npmmirror.com/npm-registry-fetch/-/npm-registry-fetch-14.0.5.tgz#fe7169957ba4986a4853a650278ee02e568d115d" - integrity sha512-kIDMIo4aBm6xg7jOttupWZamsZRkAqMqwqqbVXnUqstY5+tapvv6bkH/qMR76jdgV+YljEUCyWx3hRYMrJiAgA== - dependencies: - make-fetch-happen "^11.0.0" - minipass "^5.0.0" - minipass-fetch "^3.0.0" - minipass-json-stream "^1.0.1" - minizlib "^2.1.2" - npm-package-arg "^10.0.0" - proc-log "^3.0.0" - npm-run-path@^4.0.1: version "4.0.1" resolved "https://registry.npmmirror.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea" @@ -20675,16 +24644,6 @@ npm-run-path@^4.0.1: dependencies: path-key "^3.0.0" -npmlog@^6.0.0, npmlog@^6.0.2: - version "6.0.2" - resolved "https://registry.npmmirror.com/npmlog/-/npmlog-6.0.2.tgz#c8166017a42f2dea92d6453168dd865186a70830" - integrity sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg== - dependencies: - are-we-there-yet "^3.0.0" - console-control-strings "^1.1.0" - gauge "^4.0.3" - set-blocking "^2.0.0" - nth-check@^2.0.1: version "2.1.1" resolved "https://registry.npmmirror.com/nth-check/-/nth-check-2.1.1.tgz#c9eab428effce36cd6b92c924bdb000ef1f1ed1d" @@ -20706,80 +24665,27 @@ nunjucks@^3.2.3: asap "^2.0.3" commander "^5.1.0" -nwsapi@^2.2.0, nwsapi@^2.2.2: - version "2.2.7" - resolved "https://registry.npmmirror.com/nwsapi/-/nwsapi-2.2.7.tgz#738e0707d3128cb750dddcfe90e4610482df0f30" - integrity sha512-ub5E4+FBPKwAZx0UwIQOjYWGHTEq5sPqHQNRN8Z9e4A7u3Tj1weLJsL59yH9vmvqEtBHaOmT6cYQKIZOxp35FQ== - -nx@16.10.0, "nx@>=16.5.1 < 17": - version "16.10.0" - resolved "https://registry.npmmirror.com/nx/-/nx-16.10.0.tgz#b070461f7de0a3d7988bd78558ea84cda3543ace" - integrity sha512-gZl4iCC0Hx0Qe1VWmO4Bkeul2nttuXdPpfnlcDKSACGu3ZIo+uySqwOF8yBAxSTIf8xe2JRhgzJN1aFkuezEBg== - dependencies: - "@nrwl/tao" "16.10.0" - "@parcel/watcher" "2.0.4" - "@yarnpkg/lockfile" "^1.1.0" - "@yarnpkg/parsers" "3.0.0-rc.46" - "@zkochan/js-yaml" "0.0.6" - axios "^1.0.0" - chalk "^4.1.0" - cli-cursor "3.1.0" - cli-spinners "2.6.1" - cliui "^8.0.1" - dotenv "~16.3.1" - dotenv-expand "~10.0.0" - enquirer "~2.3.6" - figures "3.2.0" - flat "^5.0.2" - fs-extra "^11.1.0" - glob "7.1.4" - ignore "^5.0.4" - jest-diff "^29.4.1" - js-yaml "4.1.0" - jsonc-parser "3.2.0" - lines-and-columns "~2.0.3" - minimatch "3.0.5" - node-machine-id "1.1.12" - npm-run-path "^4.0.1" - open "^8.4.0" - semver "7.5.3" - string-width "^4.2.3" - strong-log-transformer "^2.1.0" - tar-stream "~2.2.0" - tmp "~0.2.1" - tsconfig-paths "^4.1.2" - tslib "^2.3.0" - v8-compile-cache "2.3.0" - yargs "^17.6.2" - yargs-parser "21.1.1" - optionalDependencies: - "@nx/nx-darwin-arm64" "16.10.0" - "@nx/nx-darwin-x64" "16.10.0" - "@nx/nx-freebsd-x64" "16.10.0" - "@nx/nx-linux-arm-gnueabihf" "16.10.0" - "@nx/nx-linux-arm64-gnu" "16.10.0" - "@nx/nx-linux-arm64-musl" "16.10.0" - "@nx/nx-linux-x64-gnu" "16.10.0" - "@nx/nx-linux-x64-musl" "16.10.0" - "@nx/nx-win32-arm64-msvc" "16.10.0" - "@nx/nx-win32-x64-msvc" "16.10.0" +nwsapi@^2.2.2: + version "2.2.23" + resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.2.23.tgz#59712c3a88e6de2bb0b6ccc1070397267019cf6c" + integrity sha512-7wfH4sLbt4M0gCDzGE6vzQBo0bfTKjU7Sfpqy/7gs1qBfYz2vEJH6vXcBKpO3+6Yu1telwd0t9HpyOoLEQQbIQ== oauth-sign@~0.9.0: version "0.9.0" resolved "https://registry.npmmirror.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ== +oauth4webapi@^3.8.5: + version "3.8.5" + resolved "https://registry.yarnpkg.com/oauth4webapi/-/oauth4webapi-3.8.5.tgz#4aa8a73f5c4644daf674a7c40497be910db99d3f" + integrity sha512-A8jmyUckVhRJj5lspguklcl90Ydqk61H3dcU0oLhH3Yv13KpAliKTt5hknpGGPZSSfOwGyraNEFmofDYH+1kSg== + oauth@0.10.x: version "0.10.0" resolved "https://registry.npmmirror.com/oauth/-/oauth-0.10.0.tgz#3551c4c9b95c53ea437e1e21e46b649482339c58" integrity sha512-1orQ9MT1vHFGQxhuy7E/0gECD3fd2fCC+PIX+/jgmU/gI3EpRocXtmtvxCO5x3WZ443FLTLFWNDjl5MPJf9u+Q== -oauth@0.9.x: - version "0.9.15" - resolved "https://registry.npmmirror.com/oauth/-/oauth-0.9.15.tgz#bd1fefaf686c96b75475aed5196412ff60cfb9c1" - integrity sha512-a5ERWK1kh38ExDEfoO6qUHJb32rd7aYmPHuyCu3Fta/cnICvYmgd2uhuKXvPD+PXB+gCEYYEaQdIRAjCOwAKNA== - -object-assign@^4, object-assign@^4.0.1, object-assign@^4.1.1: +object-assign@^4, object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1: version "4.1.1" resolved "https://registry.npmmirror.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== @@ -20799,6 +24705,11 @@ object-inspect@^1.13.1, object-inspect@^1.9.0: resolved "https://registry.npmmirror.com/object-inspect/-/object-inspect-1.13.1.tgz#b96c6109324ccfef6b12216a956ca4dc2ff94bc2" integrity sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ== +object-inspect@^1.13.3, object-inspect@^1.13.4: + version "1.13.4" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.13.4.tgz#8375265e21bc20d0fa582c22e1b13485d6e00213" + integrity sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew== + object-is@^1.1.5: version "1.1.5" resolved "https://registry.npmmirror.com/object-is/-/object-is-1.1.5.tgz#b9deeaa5fc7f1846a0faecdceec138e5778f53ac" @@ -20822,43 +24733,48 @@ object.assign@^4.1.4: has-symbols "^1.0.3" object-keys "^1.1.1" -object.entries@^1.1.6, object.entries@^1.1.7: - version "1.1.7" - resolved "https://registry.npmmirror.com/object.entries/-/object.entries-1.1.7.tgz#2b47760e2a2e3a752f39dd874655c61a7f03c131" - integrity sha512-jCBs/0plmPsOnrKAfFQXRG2NFjlhZgjjcBLSmTnEhU8U6vVTsVe8ANeQJCHTl3gSsI4J+0emOoCgoKlmQPMgmA== +object.assign@^4.1.7: + version "4.1.7" + resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.7.tgz#8c14ca1a424c6a561b0bb2a22f66f5049a945d3d" + integrity sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw== dependencies: - call-bind "^1.0.2" - define-properties "^1.2.0" - es-abstract "^1.22.1" + call-bind "^1.0.8" + call-bound "^1.0.3" + define-properties "^1.2.1" + es-object-atoms "^1.0.0" + has-symbols "^1.1.0" + object-keys "^1.1.1" -object.fromentries@^2.0.6, object.fromentries@^2.0.7: - version "2.0.7" - resolved "https://registry.npmmirror.com/object.fromentries/-/object.fromentries-2.0.7.tgz#71e95f441e9a0ea6baf682ecaaf37fa2a8d7e616" - integrity sha512-UPbPHML6sL8PI/mOqPwsH4G6iyXcCGzLin8KvEPenOZN5lpCNBZZQ+V62vdjB1mQHrmqGQt5/OJzemUA+KJmEA== +object.entries@^1.1.9: + version "1.1.9" + resolved "https://registry.yarnpkg.com/object.entries/-/object.entries-1.1.9.tgz#e4770a6a1444afb61bd39f984018b5bede25f8b3" + integrity sha512-8u/hfXFRBD1O0hPUjioLhoWFHRmt6tKA4/vZPyckBr18l1KE9uHrFaFaUi8MDRTpi4uak2goyPTSNJLXX2k2Hw== dependencies: - call-bind "^1.0.2" - define-properties "^1.2.0" - es-abstract "^1.22.1" + call-bind "^1.0.8" + call-bound "^1.0.4" + define-properties "^1.2.1" + es-object-atoms "^1.1.1" -object.groupby@^1.0.1: - version "1.0.1" - resolved "https://registry.npmmirror.com/object.groupby/-/object.groupby-1.0.1.tgz#d41d9f3c8d6c778d9cbac86b4ee9f5af103152ee" - integrity sha512-HqaQtqLnp/8Bn4GL16cj+CUYbnpe1bh0TtEaWvybszDG4tgxCJuRpV8VGuvNaI1fAnI4lUJzDG55MXcOH4JZcQ== +object.fromentries@^2.0.8: + version "2.0.8" + resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.8.tgz#f7195d8a9b97bd95cbc1999ea939ecd1a2b00c65" + integrity sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ== dependencies: - call-bind "^1.0.2" - define-properties "^1.2.0" - es-abstract "^1.22.1" - get-intrinsic "^1.2.1" + call-bind "^1.0.7" + define-properties "^1.2.1" + es-abstract "^1.23.2" + es-object-atoms "^1.0.0" -object.hasown@^1.1.2: - version "1.1.3" - resolved "https://registry.npmmirror.com/object.hasown/-/object.hasown-1.1.3.tgz#6a5f2897bb4d3668b8e79364f98ccf971bda55ae" - integrity sha512-fFI4VcYpRHvSLXxP7yiZOMAd331cPfd2p7PFDVbgUsYOfCT3tICVqXWngbjr4m49OvsBwUBQ6O2uQoJvy3RexA== +object.groupby@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/object.groupby/-/object.groupby-1.0.3.tgz#9b125c36238129f6f7b61954a1e7176148d5002e" + integrity sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ== dependencies: - define-properties "^1.2.0" - es-abstract "^1.22.1" + call-bind "^1.0.7" + define-properties "^1.2.1" + es-abstract "^1.23.2" -object.values@^1.1.6, object.values@^1.1.7: +object.values@^1.1.6: version "1.1.7" resolved "https://registry.npmmirror.com/object.values/-/object.values-1.1.7.tgz#617ed13272e7e1071b43973aa1655d9291b8442a" integrity sha512-aU6xnDFYT3x17e/f0IiiwlGPTy2jzMySGfUB4fq6z7CV8l85CWHDk5ErhyhpfDHhrOMwGFhSQkhMGHaIotA6Ng== @@ -20867,6 +24783,16 @@ object.values@^1.1.6, object.values@^1.1.7: define-properties "^1.2.0" es-abstract "^1.22.1" +object.values@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.2.1.tgz#deed520a50809ff7f75a7cfd4bc64c7a038c6216" + integrity sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA== + dependencies: + call-bind "^1.0.8" + call-bound "^1.0.3" + define-properties "^1.2.1" + es-object-atoms "^1.0.0" + obuf@^1.0.0, obuf@^1.1.2: version "1.1.2" resolved "https://registry.npmmirror.com/obuf/-/obuf-1.1.2.tgz#09bea3343d41859ebd446292d11c9d4db619084e" @@ -20900,7 +24826,7 @@ oidc-token-hash@^5.0.3: resolved "https://registry.npmmirror.com/oidc-token-hash/-/oidc-token-hash-5.0.3.tgz#9a229f0a1ce9d4fc89bcaee5478c97a889e7b7b6" integrity sha512-IF4PcGgzAr6XXSff26Sk/+P4KZFJVuHAJZj3wgO3vX2bMdNVp/QXTP3P7CEm9V1IdG8lDLY3HhiqpsE/nOwpPw== -on-finished@2.4.1, on-finished@^2.3.0, on-finished@^2.4.1: +on-finished@2.4.1, on-finished@^2.3.0, on-finished@^2.4.1, on-finished@~2.4.1: version "2.4.1" resolved "https://registry.npmmirror.com/on-finished/-/on-finished-2.4.1.tgz#58c8c44116e54845ad57f14ab10b03533184ac3f" integrity sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg== @@ -20919,6 +24845,11 @@ on-headers@~1.0.2: resolved "https://registry.npmmirror.com/on-headers/-/on-headers-1.0.2.tgz#772b0ae6aaa525c399e489adfad90c403eb3c28f" integrity sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA== +on-headers@~1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/on-headers/-/on-headers-1.1.0.tgz#59da4f91c45f5f989c6e4bcedc5a3b0aed70ff65" + integrity sha512-737ZY3yNnXy37FHkQxPzt4UZ2UWPWiCZWLvFZ4fu5cueciegX0zGPnrlY6bwRg4FdQOe9YU8MkmJwGhoMybl8A== + once@^1.3.0, once@^1.3.1, once@^1.4.0: version "1.4.0" resolved "https://registry.npmmirror.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" @@ -20962,14 +24893,6 @@ open@^10.0.3: is-inside-container "^1.0.0" is-wsl "^3.1.0" -open@^7.4.2: - version "7.4.2" - resolved "https://registry.npmmirror.com/open/-/open-7.4.2.tgz#b8147e26dcf3e426316c730089fd71edd29c2321" - integrity sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q== - dependencies: - is-docker "^2.0.0" - is-wsl "^2.1.1" - open@^8.0.0, open@^8.4.0: version "8.4.2" resolved "https://registry.npmmirror.com/open/-/open-8.4.2.tgz#5b5ffe2a8f793dcd2aad73e550cb87b59cb084f9" @@ -20988,6 +24911,13 @@ openapi-merge@^1.3.2: lodash "^4.17.15" ts-is-present "^1.1.1" +openapi-path-templating@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/openapi-path-templating/-/openapi-path-templating-2.2.1.tgz#57026767530667096d33d7362382a93d75d497f6" + integrity sha512-eN14VrDvl/YyGxxrkGOHkVkWEoPyhyeydOUrbvjoz8K5eIGgELASwN1eqFOJ2CTQMGCy2EntOK1KdtJ8ZMekcg== + dependencies: + apg-lite "^1.0.4" + openapi-sampler@^1.2.1: version "1.4.0" resolved "https://registry.npmmirror.com/openapi-sampler/-/openapi-sampler-1.4.0.tgz#c133cad6250481f2ec7e48b16eb70062adb514c0" @@ -20996,6 +24926,13 @@ openapi-sampler@^1.2.1: "@types/json-schema" "^7.0.7" json-pointer "0.6.2" +openapi-server-url-templating@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/openapi-server-url-templating/-/openapi-server-url-templating-1.3.0.tgz#80bc6ea5209a3c4fe9d359673ba51635676e2503" + integrity sha512-DPlCms3KKEbjVQb0spV6Awfn6UWNheuG/+folQPzh/wUaKwuqvj8zt5gagD7qoyxtE03cIiKPgLFS3Q8Bz00uQ== + dependencies: + apg-lite "^1.0.4" + openapi3-ts@^3.1.2: version "3.2.0" resolved "https://registry.npmmirror.com/openapi3-ts/-/openapi3-ts-3.2.0.tgz#7e30d33c480e938e67e809ab16f419bc9beae3f8" @@ -21003,7 +24940,7 @@ openapi3-ts@^3.1.2: dependencies: yaml "^2.2.1" -openid-client@^5.2.1, openid-client@^5.3.0: +openid-client@^5.3.0: version "5.6.4" resolved "https://registry.npmmirror.com/openid-client/-/openid-client-5.6.4.tgz#b2c25e6d5338ba3ce00e04341bb286798a196177" integrity sha512-T1h3B10BRPKfcObdBklX639tVz+xh34O7GjofqrqiAQdm7eHsQ00ih18x6wuJ/E6FxdtS2u3FmUGPDeEcMwzNA== @@ -21023,6 +24960,14 @@ openid-client@^5.5.0: object-hash "^2.2.0" oidc-token-hash "^5.0.3" +openid-client@^6.1.3: + version "6.8.3" + resolved "https://registry.yarnpkg.com/openid-client/-/openid-client-6.8.3.tgz#38aaf86552f1b9dbe1d0fe4a69512e533da14420" + integrity sha512-AoY/NaN9esS3+xvHInFSK0g3skSfeE0uqQAKRj4rB6/GsBIvzwTUaYo9+HcqpKIaP0dP85p5W07hayKgS4GAeA== + dependencies: + jose "^6.2.2" + oauth4webapi "^3.8.5" + optionator@^0.8.1: version "0.8.3" resolved "https://registry.npmmirror.com/optionator/-/optionator-0.8.3.tgz#84fa1d036fe9d3c7e21d99884b601167ec8fb495" @@ -21067,45 +25012,45 @@ os-browserify@^0.3.0: resolved "https://registry.npmmirror.com/os-browserify/-/os-browserify-0.3.0.tgz#854373c7f5c2315914fc9bfc6bd8238fdda1ec27" integrity sha512-gjcpUc3clBf9+210TRaDWbf+rZZZEshZ+DlXMRCeAjp0xhTrnQsKHypIy1J3d5hKdUzj69t708EHtU8P6bUn0A== +os-name@~1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/os-name/-/os-name-1.0.3.tgz#1b379f64835af7c5a7f498b357cb95215c159edf" + integrity sha512-f5estLO2KN8vgtTRaILIgEGBoBrMnZ3JQ7W9TMZCnOIGwHe8TRGSpcagnWDo+Dfhd/z08k9Xe75hvciJJ8Qaew== + dependencies: + osx-release "^1.0.0" + win-release "^1.0.0" + os-tmpdir@~1.0.2: version "1.0.2" resolved "https://registry.npmmirror.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" integrity sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g== +osx-release@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/osx-release/-/osx-release-1.1.0.tgz#f217911a28136949af1bf9308b241e2737d3cd6c" + integrity sha512-ixCMMwnVxyHFQLQnINhmIpWqXIfS2YOXchwQrk+OFzmo6nDjQ0E4KXAyyUh0T0MZgV4bUhkRrAbVqlE4yLVq4A== + dependencies: + minimist "^1.1.0" + outvariant@^1.2.1, outvariant@^1.4.0: version "1.4.2" resolved "https://registry.yarnpkg.com/outvariant/-/outvariant-1.4.2.tgz#f54f19240eeb7f15b28263d5147405752d8e2066" integrity sha512-Ou3dJ6bA/UJ5GVHxah4LnqDwZRwAmWxrG3wtrHrbGnP4RnLCtA64A4F+ae7Y8ww660JaddSoArUR5HjipWSHAQ== -p-cancelable@^2.0.0: - version "2.1.1" - resolved "https://registry.npmmirror.com/p-cancelable/-/p-cancelable-2.1.1.tgz#aab7fbd416582fa32a3db49859c122487c5ed2cf" - integrity sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg== - -p-defer@^1.0.0: - version "1.0.0" - resolved "https://registry.npmmirror.com/p-defer/-/p-defer-1.0.0.tgz#9f6eb182f6c9aa8cd743004a7d4f96b196b0fb0c" - integrity sha512-wB3wfAxZpk2AzOfUMJNL+d36xothRSyj8EXOa4f6GMqYDN9BJaaSISbsk+wS9abmnebVw95C2Kb5t85UmpCxuw== +own-keys@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/own-keys/-/own-keys-1.0.1.tgz#e4006910a2bf913585289676eebd6f390cf51358" + integrity sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg== + dependencies: + get-intrinsic "^1.2.6" + object-keys "^1.1.1" + safe-push-apply "^1.0.0" p-finally@^1.0.0: version "1.0.0" resolved "https://registry.npmmirror.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" integrity sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow== -p-limit@3.1.0, p-limit@^3.0.1, p-limit@^3.0.2, p-limit@^3.1.0: - version "3.1.0" - resolved "https://registry.npmmirror.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" - integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== - dependencies: - yocto-queue "^0.1.0" - -p-limit@^1.1.0: - version "1.3.0" - resolved "https://registry.npmmirror.com/p-limit/-/p-limit-1.3.0.tgz#b86bd5f0c25690911c7590fcbfc2010d54b3ccb8" - integrity sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q== - dependencies: - p-try "^1.0.0" - p-limit@^2.0.0, p-limit@^2.2.0: version "2.3.0" resolved "https://registry.npmmirror.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" @@ -21113,12 +25058,12 @@ p-limit@^2.0.0, p-limit@^2.2.0: dependencies: p-try "^2.0.0" -p-locate@^2.0.0: - version "2.0.0" - resolved "https://registry.npmmirror.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" - integrity sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg== +p-limit@^3.0.1, p-limit@^3.0.2, p-limit@^3.1.0: + version "3.1.0" + resolved "https://registry.npmmirror.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" + integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== dependencies: - p-limit "^1.1.0" + yocto-queue "^0.1.0" p-locate@^3.0.0: version "3.0.0" @@ -21141,24 +25086,14 @@ p-locate@^5.0.0: dependencies: p-limit "^3.0.2" -p-map-series@2.1.0: - version "2.1.0" - resolved "https://registry.npmmirror.com/p-map-series/-/p-map-series-2.1.0.tgz#7560d4c452d9da0c07e692fdbfe6e2c81a2a91f2" - integrity sha512-RpYIIK1zXSNEOdwxcfe7FdvGcs7+y5n8rifMhMNWvaxRNMPINJHF5GDeuVxWqnfrcHPSCnp7Oo5yNXHId9Av2Q== - -p-map@4.0.0, p-map@^4.0.0: +p-map@^4.0.0: version "4.0.0" resolved "https://registry.npmmirror.com/p-map/-/p-map-4.0.0.tgz#bb2f95a5eda2ec168ec9274e06a747c3e2904d2b" integrity sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ== dependencies: aggregate-error "^3.0.0" -p-pipe@3.1.0: - version "3.1.0" - resolved "https://registry.npmmirror.com/p-pipe/-/p-pipe-3.1.0.tgz#48b57c922aa2e1af6a6404cb7c6bf0eb9cc8e60e" - integrity sha512-08pj8ATpzMR0Y80x50yJHn37NF6vjrqHutASaX5LiH5npS9XPvrUmscd9MF5R4fuYRHOxQR1FfMIlF7AzwoPqw== - -p-queue@6.6.2, p-queue@^6.6.2: +p-queue@^6.6.2: version "6.6.2" resolved "https://registry.npmmirror.com/p-queue/-/p-queue-6.6.2.tgz#2068a9dcf8e67dd0ec3e7a2bcb76810faa85e426" integrity sha512-RwFpb72c/BhQLEXIZ5K2e+AhgNVmIejGlTgiB9MzZ0e93GRvqZ7uSi0dvRF7/XIXDeNkra2fNHBxTyPDGySpjQ== @@ -21166,11 +25101,6 @@ p-queue@6.6.2, p-queue@^6.6.2: eventemitter3 "^4.0.4" p-timeout "^3.2.0" -p-reduce@2.1.0, p-reduce@^2.0.0, p-reduce@^2.1.0: - version "2.1.0" - resolved "https://registry.npmmirror.com/p-reduce/-/p-reduce-2.1.0.tgz#09408da49507c6c274faa31f28df334bc712b64a" - integrity sha512-2USApvnsutq8uoxZBGbbWM0JIYLiEMJ9RlaN7fAzVNb9OZN0SHjjTTfIcb667XynS5Y1VhwDJVDa72TnPzAYWw== - p-retry@^6.2.0: version "6.2.0" resolved "https://registry.npmmirror.com/p-retry/-/p-retry-6.2.0.tgz#8d6df01af298750009691ce2f9b3ad2d5968f3bd" @@ -21180,6 +25110,11 @@ p-retry@^6.2.0: is-network-error "^1.0.0" retry "^0.13.1" +p-throttle@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/p-throttle/-/p-throttle-4.1.1.tgz#80b1fbd358af40a8bfa1667f9dc8b72b714ad692" + integrity sha512-TuU8Ato+pRTPJoDzYD4s7ocJYcNSEZRvlxoq3hcPI2kZDZ49IQ1Wkj7/gDJc3X7XiEAAvRGtDzdXJI0tC3IL1g== + p-timeout@^3.2.0: version "3.2.0" resolved "https://registry.npmmirror.com/p-timeout/-/p-timeout-3.2.0.tgz#c7e17abc971d2a7962ef83626b35d635acf23dfe" @@ -21187,52 +25122,43 @@ p-timeout@^3.2.0: dependencies: p-finally "^1.0.0" -p-try@^1.0.0: - version "1.0.0" - resolved "https://registry.npmmirror.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3" - integrity sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww== - p-try@^2.0.0: version "2.2.0" resolved "https://registry.npmmirror.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== -p-waterfall@2.1.1: - version "2.1.1" - resolved "https://registry.npmmirror.com/p-waterfall/-/p-waterfall-2.1.1.tgz#63153a774f472ccdc4eb281cdb2967fcf158b2ee" - integrity sha512-RRTnDb2TBG/epPRI2yYXsimO0v3BXC8Yd3ogr1545IaqKK17VGhbWVeGGN+XfCm/08OK8635nH31c8bATkHuSw== +pac-proxy-agent@^7.0.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/pac-proxy-agent/-/pac-proxy-agent-7.2.0.tgz#9cfaf33ff25da36f6147a20844230ec92c06e5df" + integrity sha512-TEB8ESquiLMc0lV8vcd5Ql/JAKAoyzHFXaStwjkzpOpC5Yv+pIzLfHvjTSdf3vpa2bMiUQrg9i6276yn8666aA== + dependencies: + "@tootallnate/quickjs-emscripten" "^0.23.0" + agent-base "^7.1.2" + debug "^4.3.4" + get-uri "^6.0.1" + http-proxy-agent "^7.0.0" + https-proxy-agent "^7.0.6" + pac-resolver "^7.0.1" + socks-proxy-agent "^8.0.5" + +pac-resolver@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/pac-resolver/-/pac-resolver-7.0.1.tgz#54675558ea368b64d210fd9c92a640b5f3b8abb6" + integrity sha512-5NPgf87AT2STgwa2ntRMr45jTKrYBGkVU36yT0ig/n/GMAa3oPqhZfIQ2kMEimReg0+t9kZViDVZ83qfVUlckg== dependencies: - p-reduce "^2.0.0" + degenerator "^5.0.0" + netmask "^2.0.2" + +package-json-from-dist@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz#4f1471a010827a86f94cfd9b0727e36d267de505" + integrity sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw== packet-reader@1.0.0: version "1.0.0" resolved "https://registry.npmmirror.com/packet-reader/-/packet-reader-1.0.0.tgz#9238e5480dedabacfe1fe3f2771063f164157d74" integrity sha512-HAKu/fG3HpHFO0AA8WE8q2g+gBJaZ9MG7fcKk+IJPLTGAD6Psw4443l+9DGRbOIh3/aXr7Phy0TjilYivJo5XQ== -pacote@^15.2.0: - version "15.2.0" - resolved "https://registry.npmmirror.com/pacote/-/pacote-15.2.0.tgz#0f0dfcc3e60c7b39121b2ac612bf8596e95344d3" - integrity sha512-rJVZeIwHTUta23sIZgEIM62WYwbmGbThdbnkt81ravBplQv+HjyroqnLRNH2+sLJHcGZmLRmhPwACqhfTcOmnA== - dependencies: - "@npmcli/git" "^4.0.0" - "@npmcli/installed-package-contents" "^2.0.1" - "@npmcli/promise-spawn" "^6.0.1" - "@npmcli/run-script" "^6.0.0" - cacache "^17.0.0" - fs-minipass "^3.0.0" - minipass "^5.0.0" - npm-package-arg "^10.0.0" - npm-packlist "^7.0.0" - npm-pick-manifest "^8.0.0" - npm-registry-fetch "^14.0.0" - proc-log "^3.0.0" - promise-retry "^2.0.1" - read-package-json "^6.0.0" - read-package-json-fast "^3.0.0" - sigstore "^1.3.0" - ssri "^10.0.0" - tar "^6.1.11" - pako@^1.0.10, pako@~1.0.2, pako@~1.0.5: version "1.0.11" resolved "https://registry.npmmirror.com/pako/-/pako-1.0.11.tgz#6c9599d340d54dfd3946380252a35705a6b992bf" @@ -21258,7 +25184,7 @@ parent-module@^1.0.0: dependencies: callsites "^3.0.0" -parse-asn1@^5.0.0, parse-asn1@^5.1.6: +parse-asn1@^5.0.0: version "5.1.6" resolved "https://registry.npmmirror.com/parse-asn1/-/parse-asn1-5.1.6.tgz#385080a3ec13cb62a62d39409cb3e88844cdaed4" integrity sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw== @@ -21269,6 +25195,17 @@ parse-asn1@^5.0.0, parse-asn1@^5.1.6: pbkdf2 "^3.0.3" safe-buffer "^5.1.1" +parse-asn1@^5.1.9: + version "5.1.9" + resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.9.tgz#8dd24c3ea8da77dffbc708d94eaf232fd6156e95" + integrity sha512-fIYNuZ/HastSb80baGOuPRo1O9cf4baWw5WsAp7dBuUzeTD/BoaG8sVTdlPFksBE2lF21dN+A1AnrpIjSWqHHg== + dependencies: + asn1.js "^4.10.1" + browserify-aes "^1.2.0" + evp_bytestokey "^1.0.3" + pbkdf2 "^3.1.5" + safe-buffer "^5.2.1" + parse-entities@^2.0.0: version "2.0.0" resolved "https://registry.npmmirror.com/parse-entities/-/parse-entities-2.0.0.tgz#53c6eb5b9314a1f4ec99fa0fdf7ce01ecda0cbe8" @@ -21281,13 +25218,18 @@ parse-entities@^2.0.0: is-decimal "^1.0.0" is-hexadecimal "^1.0.0" -parse-json@^4.0.0: - version "4.0.0" - resolved "https://registry.npmmirror.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0" - integrity sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw== +parse-entities@^4.0.0: + version "4.0.2" + resolved "https://registry.yarnpkg.com/parse-entities/-/parse-entities-4.0.2.tgz#61d46f5ed28e4ee62e9ddc43d6b010188443f159" + integrity sha512-GG2AQYWoLgL877gQIKeRPGO1xF9+eG1ujIb5soS5gPvLQ1y2o8FL90w2QWNdf9I361Mpp7726c+lj3U0qK1uGw== dependencies: - error-ex "^1.3.1" - json-parse-better-errors "^1.0.1" + "@types/unist" "^2.0.0" + character-entities-legacy "^3.0.0" + character-reference-invalid "^2.0.0" + decode-named-character-reference "^1.0.0" + is-alphanumerical "^2.0.0" + is-decimal "^2.0.0" + is-hexadecimal "^2.0.0" parse-json@^5.0.0, parse-json@^5.2.0: version "5.2.0" @@ -21299,6 +25241,11 @@ parse-json@^5.0.0, parse-json@^5.2.0: json-parse-even-better-errors "^2.3.0" lines-and-columns "^1.1.6" +parse-multipart-data@^1.4.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/parse-multipart-data/-/parse-multipart-data-1.5.0.tgz#ab894cc6c40229d0a2042500e120df7562d94b87" + integrity sha512-ck5zaMF0ydjGfejNMnlo5YU2oJ+pT+80Jb1y4ybanT27j+zbVP/jkYmCrUGsEln0Ox/hZmuvgy8Ra7AxbXP2Mw== + parse-passwd@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/parse-passwd/-/parse-passwd-1.0.0.tgz#6d5b934a456993b23d37f40a382d6f1666a8e5c6" @@ -21318,19 +25265,38 @@ parse-url@^8.1.0: dependencies: parse-path "^7.0.0" -parse5@6.0.1: +parse5-htmlparser2-tree-adapter@^6.0.0: + version "6.0.1" + resolved "https://registry.yarnpkg.com/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-6.0.1.tgz#2cdf9ad823321140370d4dbf5d3e92c7c8ddc6e6" + integrity sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA== + dependencies: + parse5 "^6.0.1" + +parse5@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/parse5/-/parse5-5.1.1.tgz#f68e4e5ba1852ac2cadc00f4555fff6c2abb6178" + integrity sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug== + +parse5@^6.0.0, parse5@^6.0.1: version "6.0.1" - resolved "https://registry.npmmirror.com/parse5/-/parse5-6.0.1.tgz#e1a1c085c569b3dc08321184f19a39cc27f7c30b" + resolved "https://registry.yarnpkg.com/parse5/-/parse5-6.0.1.tgz#e1a1c085c569b3dc08321184f19a39cc27f7c30b" integrity sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw== parse5@^7.0.0, parse5@^7.1.1: - version "7.1.2" - resolved "https://registry.npmmirror.com/parse5/-/parse5-7.1.2.tgz#0736bebbfd77793823240a23b7fc5e010b7f8e32" - integrity sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw== + version "7.3.0" + resolved "https://registry.yarnpkg.com/parse5/-/parse5-7.3.0.tgz#d7e224fa72399c7a175099f45fc2ad024b05ec05" + integrity sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw== dependencies: - entities "^4.4.0" + entities "^6.0.0" + +parse5@^8.0.0: + version "8.0.1" + resolved "https://registry.yarnpkg.com/parse5/-/parse5-8.0.1.tgz#f43bcd2cd683efe084075333e9ce0da7d06da31e" + integrity sha512-z1e/HMG90obSGeidlli3hj7cbocou0/wa5HacvI3ASx34PecNjNQeaHNo5WIZpWofN9kgkqV1q5YvXe3F0FoPw== + dependencies: + entities "^8.0.0" -parseurl@^1.3.2, parseurl@~1.3.2, parseurl@~1.3.3: +parseurl@^1.3.2, parseurl@^1.3.3, parseurl@~1.3.2, parseurl@~1.3.3: version "1.3.3" resolved "https://registry.npmmirror.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== @@ -21343,90 +25309,6 @@ pascal-case@^3.1.2: no-case "^3.0.4" tslib "^2.0.3" -passport-atlassian-oauth2@^2.1.0: - version "2.1.0" - resolved "https://registry.npmmirror.com/passport-atlassian-oauth2/-/passport-atlassian-oauth2-2.1.0.tgz#8043ced378ca002055ac0ea0e4cb2198692acb07" - integrity sha512-uUjdoeeA0qqEedj14LzeAFGyK/eesPezQfdN1ui/7D8TYNCGVtuoYhKT64gT8KhOCz5nPYS12XWXRfoPTS6kpg== - dependencies: - passport-oauth2 "^1.4.0" - -passport-auth0@^1.4.3: - version "1.4.4" - resolved "https://registry.npmmirror.com/passport-auth0/-/passport-auth0-1.4.4.tgz#38f8bb2b478b71a8b90ebf497be271fe80f6ca52" - integrity sha512-PFkjMfsfXSwgn94QCrZl2hObRHiqrAJffyeUvI8e8HqTG7MfOlyzWO3wSL5dlH+MUGR5+DQr+vtXFFu6Sx8cfg== - dependencies: - axios "^1.6.0" - passport-oauth "^1.0.0" - passport-oauth2 "^1.6.0" - -passport-bitbucket-oauth2@^0.1.2: - version "0.1.2" - resolved "https://registry.npmmirror.com/passport-bitbucket-oauth2/-/passport-bitbucket-oauth2-0.1.2.tgz#eb3af5cdd0d06830adc49b76acae4ad82290693b" - integrity sha512-bE4eQuyK2U0bumRdxfZedfoBfkHzblhui6MElz64xptn70CIrJrEKon1Ui95ML3KsvOmGGoaSZcwXwAjWF6M0Q== - dependencies: - passport-oauth2 "^1.1.2" - pkginfo "0.2.x" - -passport-github2@^0.1.12: - version "0.1.12" - resolved "https://registry.npmmirror.com/passport-github2/-/passport-github2-0.1.12.tgz#a72ebff4fa52a35bc2c71122dcf470d1116f772c" - integrity sha512-3nPUCc7ttF/3HSP/k9sAXjz3SkGv5Nki84I05kSQPo01Jqq1NzJACgMblCK0fGcv9pKCG/KXU3AJRDGLqHLoIw== - dependencies: - passport-oauth2 "1.x.x" - -passport-gitlab2@^5.0.0: - version "5.0.0" - resolved "https://registry.npmmirror.com/passport-gitlab2/-/passport-gitlab2-5.0.0.tgz#ea37e5285321c026a02671e87469cac28cce9b69" - integrity sha512-cXQMgM6JQx9wHVh7JLH30D8fplfwjsDwRz+zS0pqC8JS+4bNmc1J04NGp5g2M4yfwylH9kQRrMN98GxMw7q7cg== - dependencies: - passport-oauth2 "^1.4.0" - -passport-google-oauth20@^2.0.0: - version "2.0.0" - resolved "https://registry.npmmirror.com/passport-google-oauth20/-/passport-google-oauth20-2.0.0.tgz#0d241b2d21ebd3dc7f2b60669ec4d587e3a674ef" - integrity sha512-KSk6IJ15RoxuGq7D1UKK/8qKhNfzbLeLrG3gkLZ7p4A6DBCcv7xpyQwuXtWdpyR0+E0mwkpjY1VfPOhxQrKzdQ== - dependencies: - passport-oauth2 "1.x.x" - -passport-microsoft@^1.0.0: - version "1.0.0" - resolved "https://registry.npmmirror.com/passport-microsoft/-/passport-microsoft-1.0.0.tgz#78954cf3201fdce61beeb6587a3b158f8e9db86c" - integrity sha512-L1JHeCbSObSZZXiG7jU2KoKie6nzZLwGt38HXz1GasKrsCQdOnf5kH8ltV4BWNUfBL2Pt1csWn1iuBSerprrcg== - dependencies: - passport-oauth2 "1.6.1" - pkginfo "0.4.x" - -passport-oauth1@1.x.x: - version "1.3.0" - resolved "https://registry.npmmirror.com/passport-oauth1/-/passport-oauth1-1.3.0.tgz#5d57f1415c8e28e46b461a12ec1b492934f7c354" - integrity sha512-8T/nX4gwKTw0PjxP1xfD0QhrydQNakzeOpZ6M5Uqdgz9/a/Ag62RmJxnZQ4LkbdXGrRehQHIAHNAu11rCP46Sw== - dependencies: - oauth "0.9.x" - passport-strategy "1.x.x" - utils-merge "1.x.x" - -passport-oauth2@1.6.1: - version "1.6.1" - resolved "https://registry.npmmirror.com/passport-oauth2/-/passport-oauth2-1.6.1.tgz#c5aee8f849ce8bd436c7f81d904a3cd1666f181b" - integrity sha512-ZbV43Hq9d/SBSYQ22GOiglFsjsD1YY/qdiptA+8ej+9C1dL1TVB+mBE5kDH/D4AJo50+2i8f4bx0vg4/yDDZCQ== - dependencies: - base64url "3.x.x" - oauth "0.9.x" - passport-strategy "1.x.x" - uid2 "0.0.x" - utils-merge "1.x.x" - -passport-oauth2@1.x.x, passport-oauth2@^1.1.2, passport-oauth2@^1.4.0, passport-oauth2@^1.6.0, passport-oauth2@^1.6.1: - version "1.7.0" - resolved "https://registry.npmmirror.com/passport-oauth2/-/passport-oauth2-1.7.0.tgz#5c4766c8531ac45ffe9ec2c09de9809e2c841fc4" - integrity sha512-j2gf34szdTF2Onw3+76alNnaAExlUmHvkc7cL+cmaS5NzHzDP/BvFHJruueQ9XAeNOdpI+CH+PWid8RA7KCwAQ== - dependencies: - base64url "3.x.x" - oauth "0.9.x" - passport-strategy "1.x.x" - uid2 "0.0.x" - utils-merge "1.x.x" - passport-oauth2@^1.7.0: version "1.8.0" resolved "https://registry.npmmirror.com/passport-oauth2/-/passport-oauth2-1.8.0.tgz#55725771d160f09bbb191828d5e3d559eee079c8" @@ -21438,37 +25320,11 @@ passport-oauth2@^1.7.0: uid2 "0.0.x" utils-merge "1.x.x" -passport-oauth@1.0.0, passport-oauth@^1.0.0: - version "1.0.0" - resolved "https://registry.npmmirror.com/passport-oauth/-/passport-oauth-1.0.0.tgz#90aff63387540f02089af28cdad39ea7f80d77df" - integrity sha512-4IZNVsZbN1dkBzmEbBqUxDG8oFOIK81jqdksE3HEb/vI3ib3FMjbiZZ6MTtooyYZzmKu0BfovjvT1pdGgIq+4Q== - dependencies: - passport-oauth1 "1.x.x" - passport-oauth2 "1.x.x" - -passport-onelogin-oauth@^0.0.1: - version "0.0.1" - resolved "https://registry.npmmirror.com/passport-onelogin-oauth/-/passport-onelogin-oauth-0.0.1.tgz#6e991ac6720783fdd80d4caa08c36cc71ef19962" - integrity sha512-EXFBqlJdHf5AX4QaiZsLfhgQUOR6z3zGA5479SUJF4I4rnAt7yasZEbs27pg8MRiQh/uLZEWLGMoVXr6LHV9mQ== - dependencies: - passport-oauth "1.0.0" - pkginfo "0.2.x" - uid2 "0.0.3" - -passport-strategy@1.x.x, passport-strategy@^1.0.0: +passport-strategy@1.x.x: version "1.0.0" resolved "https://registry.npmmirror.com/passport-strategy/-/passport-strategy-1.0.0.tgz#b5539aa8fc225a3d1ad179476ddf236b440f52e4" integrity sha512-CB97UUvDKJde2V0KDWWB3lyf6PC3FaZP7YxZ2G8OAtn9p4HI9j9JLP9qjOGZFvyl8uwNT8qM+hGnz/n16NI7oA== -passport@^0.6.0: - version "0.6.0" - resolved "https://registry.npmmirror.com/passport/-/passport-0.6.0.tgz#e869579fab465b5c0b291e841e6cc95c005fac9d" - integrity sha512-0fe+p3ZnrWRW74fe8+SvCyf4a3Pb2/h7gFkQ8yTJpAO50gDzlfjZUZTO1k5Eg9kUct22OxHLqDZoKUWRHOh9ug== - dependencies: - passport-strategy "1.x.x" - pause "0.0.1" - utils-merge "^1.0.1" - passport@^0.7.0: version "0.7.0" resolved "https://registry.npmmirror.com/passport/-/passport-0.7.0.tgz#3688415a59a48cf8068417a8a8092d4492ca3a05" @@ -21478,31 +25334,10 @@ passport@^0.7.0: pause "0.0.1" utils-merge "^1.0.1" -patch-package@^8.0.0: - version "8.0.0" - resolved "https://registry.npmmirror.com/patch-package/-/patch-package-8.0.0.tgz#d191e2f1b6e06a4624a0116bcb88edd6714ede61" - integrity sha512-da8BVIhzjtgScwDJ2TtKsfT5JFWz1hYoBl9rUQ1f38MC2HwnEIkK8VN3dKMKcP7P7bvvgzNDbfNHtx3MsQb5vA== - dependencies: - "@yarnpkg/lockfile" "^1.1.0" - chalk "^4.1.2" - ci-info "^3.7.0" - cross-spawn "^7.0.3" - find-yarn-workspace-root "^2.0.0" - fs-extra "^9.0.0" - json-stable-stringify "^1.0.2" - klaw-sync "^6.0.0" - minimist "^1.2.6" - open "^7.4.2" - rimraf "^2.6.3" - semver "^7.5.3" - slash "^2.0.0" - tmp "^0.0.33" - yaml "^2.2.2" - -path-browserify@0.0.1: - version "0.0.1" - resolved "https://registry.npmmirror.com/path-browserify/-/path-browserify-0.0.1.tgz#e6c4ddd7ed3aa27c68a20cc4e50e1a4ee83bbc4a" - integrity sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ== +path-browserify@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-1.0.1.tgz#d98454a9c3753d5790860f16f68867b9e46be1fd" + integrity sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g== path-equal@^1.2.5: version "1.2.5" @@ -21519,6 +25354,11 @@ path-exists@^4.0.0: resolved "https://registry.npmmirror.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== +path-expression-matcher@^1.1.3, path-expression-matcher@^1.2.0, path-expression-matcher@^1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/path-expression-matcher/-/path-expression-matcher-1.5.0.tgz#3b98545dc88ffebb593e2d8458d0929da9275f4a" + integrity sha512-cbrerZV+6rvdQrrD+iGMcZFEiiSrbv9Tfdkvnusy6y0x0GKBXREFg/Y65GhIfm0tnLntThhzCnfKwp1WRjeCyQ== + path-is-absolute@^1.0.0: version "1.0.1" resolved "https://registry.npmmirror.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" @@ -21534,7 +25374,7 @@ path-parse@^1.0.7: resolved "https://registry.npmmirror.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== -path-scurry@^1.10.1, path-scurry@^1.6.1: +path-scurry@^1.10.1: version "1.10.1" resolved "https://registry.npmmirror.com/path-scurry/-/path-scurry-1.10.1.tgz#9ba6bf5aa8500fe9fd67df4f0d9483b2b0bfc698" integrity sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ== @@ -21550,6 +25390,14 @@ path-scurry@^1.11.1: lru-cache "^10.2.0" minipass "^5.0.0 || ^6.0.2 || ^7.0.0" +path-scurry@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/path-scurry/-/path-scurry-2.0.2.tgz#6be0d0ee02a10d9e0de7a98bae65e182c9061f85" + integrity sha512-3O/iVVsJAPsOnpwWIeD+d6z/7PmqApyQePUtCndjatj/9I5LylHvt5qluFaBT3I5h3r1ejfR056c+FCv+NnNXg== + dependencies: + lru-cache "^11.0.0" + minipass "^7.1.2" + path-to-regexp@0.1.7: version "0.1.7" resolved "https://registry.npmmirror.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" @@ -21560,23 +25408,28 @@ path-to-regexp@^6.2.0: resolved "https://registry.npmmirror.com/path-to-regexp/-/path-to-regexp-6.2.1.tgz#d54934d6798eb9e5ef14e7af7962c945906918e5" integrity sha512-JLyh7xT1kizaEvcaXOQwOc2/Yhw6KZOvPf1S8401UyLk86CU79LN3vl7ztXGm/pZ+YjoyAJ4rxmHwbkBXJX+yw== -path-to-regexp@^6.2.1: - version "6.2.2" - resolved "https://registry.npmmirror.com/path-to-regexp/-/path-to-regexp-6.2.2.tgz#324377a83e5049cbecadc5554d6a63a9a4866b36" - integrity sha512-GQX3SSMokngb36+whdpRXE+3f9V8UzyAorlYvOGx87ufGHehNTn5lCxrKtLyZ4Yl/wEKnNnr98ZzOwwDZV5ogw== +path-to-regexp@^8.0.0, path-to-regexp@^8.3.0: + version "8.4.2" + resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-8.4.2.tgz#795c420c4f7ca45c5b887366f622ee0c9852cccd" + integrity sha512-qRcuIdP69NPm4qbACK+aDogI5CBDMi1jKe0ry5rSQJz8JVLsC7jV8XpiJjGRLLol3N+R5ihGYcrPLTno6pAdBA== -path-type@^3.0.0: - version "3.0.0" - resolved "https://registry.npmmirror.com/path-type/-/path-type-3.0.0.tgz#cef31dc8e0a1a3bb0d105c0cd97cf3bf47f4e36f" - integrity sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg== - dependencies: - pify "^3.0.0" +path-to-regexp@~0.1.12: + version "0.1.13" + resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.13.tgz#9b22ec16bc3ab88d05a0c7e369869421401ab17d" + integrity sha512-A/AGNMFN3c8bOlvV9RreMdrv7jsmF9XIfDeCd87+I8RNg6s78BhJxMu69NEMHBSJFxKidViTEdruRwEk/WIKqA== path-type@^4.0.0: version "4.0.0" resolved "https://registry.npmmirror.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== +pause-stream@~0.0.11: + version "0.0.11" + resolved "https://registry.yarnpkg.com/pause-stream/-/pause-stream-0.0.11.tgz#fe5a34b0cbce12b5aa6a2b403ee2e73b602f1445" + integrity sha512-e3FBlXLmN/D1S+zHzanP4E/4Z60oFAa3O051qt1pxa7DEJWKAyil6upYVXCWadEnuoqa4Pkc9oUx9zsxYeRv8A== + dependencies: + through "~2.3" + pause@0.0.1: version "0.0.1" resolved "https://registry.npmmirror.com/pause/-/pause-0.0.1.tgz#1d408b3fdb76923b9543d96fb4c9dfd535d9cb5d" @@ -21593,6 +25446,18 @@ pbkdf2@^3.0.3: safe-buffer "^5.0.1" sha.js "^2.4.8" +pbkdf2@^3.1.2, pbkdf2@^3.1.5: + version "3.1.5" + resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.1.5.tgz#444a59d7a259a95536c56e80c89de31cc01ed366" + integrity sha512-Q3CG/cYvCO1ye4QKkuH7EXxs3VC/rI1/trd+qX2+PolbaKG0H+bgcZzrTt96mMyRtejk+JMCiLUn3y29W8qmFQ== + dependencies: + create-hash "^1.2.0" + create-hmac "^1.1.7" + ripemd160 "^2.0.3" + safe-buffer "^5.2.1" + sha.js "^2.4.12" + to-buffer "^1.2.1" + pct-encode@~1.0.0: version "1.0.2" resolved "https://registry.npmmirror.com/pct-encode/-/pct-encode-1.0.2.tgz#b99b7b044d6bd7c39e4839a7a80122ad7515caa5" @@ -21628,6 +25493,11 @@ pg-connection-string@^2.3.0: resolved "https://registry.yarnpkg.com/pg-connection-string/-/pg-connection-string-2.6.4.tgz#f543862adfa49fa4e14bc8a8892d2a84d754246d" integrity sha512-v+Z7W/0EO707aNMaAEfiGnGL9sxxumwLl2fJvCQtMn9Fxsg+lPpPkdcyBSv/KFgpGdYkMfn+EI1Or2EHjpgLCA== +pg-format@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/pg-format/-/pg-format-1.0.4.tgz#27734236c2ad3f4e5064915a59334e20040a828e" + integrity sha512-YyKEF78pEA6wwTAqOUaHIN/rWpfzzIuMh9KdAhc3rSLQ/7zkRFcCgYBAEGatDstLyZw4g0s9SNICmaTGnBVeyw== + pg-int8@1.0.1: version "1.0.1" resolved "https://registry.npmmirror.com/pg-int8/-/pg-int8-1.0.1.tgz#943bd463bf5b71b4170115f80f8efc9a0c0eb78c" @@ -21686,36 +25556,41 @@ picocolors@^1.0.0: resolved "https://registry.npmmirror.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== +picocolors@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.1.1.tgz#3d321af3eab939b083c8f929a1d12cda81c26b6b" + integrity sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA== + picomatch-browser@^2.2.6: version "2.2.6" resolved "https://registry.npmmirror.com/picomatch-browser/-/picomatch-browser-2.2.6.tgz#e0626204575eb49f019f2f2feac24fc3b53e7a8a" integrity sha512-0ypsOQt9D4e3hziV8O4elD9uN0z/jtUEfxVRtNaAAtXIyUx9m/SzlO020i8YNL2aL/E6blOvvHQcin6HZlFy/w== -picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.2, picomatch@^2.2.3, picomatch@^2.3.1: +picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.3, picomatch@^2.3.1: version "2.3.1" resolved "https://registry.npmmirror.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== -pify@5.0.0, pify@^5.0.0: - version "5.0.0" - resolved "https://registry.npmmirror.com/pify/-/pify-5.0.0.tgz#1f5eca3f5e87ebec28cc6d54a0e4aaf00acc127f" - integrity sha512-eW/gHNMlxdSP6dmG6uJip6FXN0EQBwm2clYYd8Wul42Cwu/DK8HEftzsapcNdYe2MfLiIwZqsDk2RDEsTE79hA== +picomatch@^4.0.4: + version "4.0.4" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-4.0.4.tgz#fd6f5e00a143086e074dffe4c924b8fb293b0589" + integrity sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A== pify@^2.3.0: version "2.3.0" resolved "https://registry.npmmirror.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" integrity sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog== -pify@^3.0.0: - version "3.0.0" - resolved "https://registry.npmmirror.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" - integrity sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg== - pify@^4.0.1: version "4.0.1" resolved "https://registry.npmmirror.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231" integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g== +pify@^5.0.0: + version "5.0.0" + resolved "https://registry.npmmirror.com/pify/-/pify-5.0.0.tgz#1f5eca3f5e87ebec28cc6d54a0e4aaf00acc127f" + integrity sha512-eW/gHNMlxdSP6dmG6uJip6FXN0EQBwm2clYYd8Wul42Cwu/DK8HEftzsapcNdYe2MfLiIwZqsDk2RDEsTE79hA== + pino-pretty@^2.6.0: version "2.6.1" resolved "https://registry.npmmirror.com/pino-pretty/-/pino-pretty-2.6.1.tgz#b5a8e28137deb1629428931d98c708b51f0e9555" @@ -21748,18 +25623,30 @@ pino@^5.12.2: quick-format-unescaped "^3.0.3" sonic-boom "^0.7.5" -pirates@^4.0.1, pirates@^4.0.4, pirates@^4.0.6: +pirates@^4.0.1, pirates@^4.0.6: version "4.0.6" resolved "https://registry.npmmirror.com/pirates/-/pirates-4.0.6.tgz#3018ae32ecfcff6c29ba2267cbf21166ac1f36b9" integrity sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg== +pirates@^4.0.4: + version "4.0.7" + resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.7.tgz#643b4a18c4257c8a65104b73f3049ce9a0a15e22" + integrity sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA== + pkg-dir@^4.2.0: version "4.2.0" - resolved "https://registry.npmmirror.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" + resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== dependencies: find-up "^4.0.0" +pkg-dir@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-5.0.0.tgz#a02d6aebe6ba133a928f74aec20bafdfe6b8e760" + integrity sha512-NPE8TDbzl/3YQYY7CSS228s3g2ollTFnc+Qi3tqmqJp9Vg2ovUpixcJEo2HJScN2Ez+kEaal6y70c0ehqJBJeA== + dependencies: + find-up "^5.0.0" + pkg-up@^3.1.0: version "3.1.0" resolved "https://registry.npmmirror.com/pkg-up/-/pkg-up-3.1.0.tgz#100ec235cc150e4fd42519412596a28512a0def5" @@ -21767,27 +25654,17 @@ pkg-up@^3.1.0: dependencies: find-up "^3.0.0" -pkginfo@0.2.x: - version "0.2.3" - resolved "https://registry.npmmirror.com/pkginfo/-/pkginfo-0.2.3.tgz#7239c42a5ef6c30b8f328439d9b9ff71042490f8" - integrity sha512-7W7wTrE/NsY8xv/DTGjwNIyNah81EQH0MWcTzrHL6pOpMocOGZc0Mbdz9aXxSrp+U0mSmkU8jrNCDCfUs3sOBg== - -pkginfo@0.4.x, pkginfo@^0.4.1: - version "0.4.1" - resolved "https://registry.npmmirror.com/pkginfo/-/pkginfo-0.4.1.tgz#b5418ef0439de5425fc4995042dced14fb2a84ff" - integrity sha512-8xCNE/aT/EXKenuMDZ+xTVwkT8gsoHN2z/Q29l80u0ppGEXVvsKRzNMbtKhg8LS8k1tJLAHHylf6p4VFmP6XUQ== - -playwright-core@1.41.1: - version "1.41.1" - resolved "https://registry.npmmirror.com/playwright-core/-/playwright-core-1.41.1.tgz#9c152670010d9d6f970f34b68e3e935d3c487431" - integrity sha512-/KPO5DzXSMlxSX77wy+HihKGOunh3hqndhqeo/nMxfigiKzogn8kfL0ZBDu0L1RKgan5XHCPmn6zXd2NUJgjhg== +playwright-core@1.59.1: + version "1.59.1" + resolved "https://registry.yarnpkg.com/playwright-core/-/playwright-core-1.59.1.tgz#d8a2b28bcb8f2bd08ef3df93b02ae83c813244b2" + integrity sha512-HBV/RJg81z5BiiZ9yPzIiClYV/QMsDCKUyogwH9p3MCP6IYjUFu/MActgYAvK0oWyV9NlwM3GLBjADyWgydVyg== -playwright@1.41.1: - version "1.41.1" - resolved "https://registry.npmmirror.com/playwright/-/playwright-1.41.1.tgz#83325f34165840d019355c2a78a50f21ed9b9c85" - integrity sha512-gdZAWG97oUnbBdRL3GuBvX3nDDmUOuqzV/D24dytqlKt+eI5KbwusluZRGljx1YoJKZ2NRPaeWiFTeGZO7SosQ== +playwright@1.59.1: + version "1.59.1" + resolved "https://registry.yarnpkg.com/playwright/-/playwright-1.59.1.tgz#f7b0ca61637ae25264cec370df671bbe1f368a4a" + integrity sha512-C8oWjPR3F81yljW9o5OxcWzfh6avkVwDD2VYdwIGqTkl+OGFISgypqzfu7dOe4QNLL2aqcWBmI3PMtLIK233lw== dependencies: - playwright-core "1.41.1" + playwright-core "1.59.1" optionalDependencies: fsevents "2.3.2" @@ -21796,7 +25673,7 @@ pluralize@^8.0.0: resolved "https://registry.npmmirror.com/pluralize/-/pluralize-8.0.0.tgz#1a6fa16a38d12a1901e0320fa017051c539ce3b1" integrity sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA== -pony-cause@^1.0.0: +pony-cause@^1.0.0, pony-cause@^1.1.1: version "1.1.1" resolved "https://registry.npmmirror.com/pony-cause/-/pony-cause-1.1.1.tgz#f795524f83bebbf1878bd3587b45f69143cbf3f9" integrity sha512-PxkIc/2ZpLiEzQXu5YRDOUgBlfGYBY8156HY5ZcRAwwonMk5W/MrJP2LLkG/hF7GEQzaHo2aS7ho6ZLCOvf+6g== @@ -21816,6 +25693,19 @@ popper.js@1.16.1-lts: resolved "https://registry.npmmirror.com/popper.js/-/popper.js-1.16.1-lts.tgz#cf6847b807da3799d80ee3d6d2f90df8a3f50b05" integrity sha512-Kjw8nKRl1m+VrSFCoVGPph93W/qrSO7ZkqPpTf7F4bk/sqcfWK019dWBUpE/fBOsOQY1dks/Bmcbfn1heM/IsA== +portfinder@^1.0.32: + version "1.0.38" + resolved "https://registry.yarnpkg.com/portfinder/-/portfinder-1.0.38.tgz#e4fb3a2d888b20d2977da050e48ab5e1f57a185e" + integrity sha512-rEwq/ZHlJIKw++XtLAO8PPuOQA/zaPJOZJ37BVuN97nLpMJeuDVLVGRwbFoBgLudgdTMP2hdRJP++H+8QOA3vg== + dependencies: + async "^3.2.6" + debug "^4.3.6" + +possible-typed-array-names@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/possible-typed-array-names/-/possible-typed-array-names-1.1.0.tgz#93e3582bc0e5426586d9d07b79ee40fc841de4ae" + integrity sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg== + postcss-calc@^8.2.3: version "8.2.4" resolved "https://registry.npmmirror.com/postcss-calc/-/postcss-calc-8.2.4.tgz#77b9c29bfcbe8a07ff6693dc87050828889739a5" @@ -21862,6 +25752,15 @@ postcss-discard-overridden@^5.1.0: resolved "https://registry.npmmirror.com/postcss-discard-overridden/-/postcss-discard-overridden-5.1.0.tgz#7e8c5b53325747e9d90131bb88635282fb4a276e" integrity sha512-21nOL7RqWR1kasIVdKs8HNqQJhFxLsyRfAnUDm4Fe4t4mCWL9OJiHvlHPjcd8zc5Myu89b/7wZDnOSjFgeWRtw== +postcss-import@^16.1.0: + version "16.1.1" + resolved "https://registry.yarnpkg.com/postcss-import/-/postcss-import-16.1.1.tgz#cfbe79e6c9232b0dbbe1c18f35308825cfe8ff2a" + integrity sha512-2xVS1NCZAfjtVdvXiyegxzJ447GyqCeEI5V7ApgQVOWnros1p5lGNovJNapwPpMombyFBfqDwt7AD3n2l0KOfQ== + dependencies: + postcss-value-parser "^4.0.0" + read-cache "^1.0.0" + resolve "^1.1.7" + postcss-load-config@^3.0.0: version "3.1.4" resolved "https://registry.npmmirror.com/postcss-load-config/-/postcss-load-config-3.1.4.tgz#1ab2571faf84bb078877e1d07905eabe9ebda855" @@ -22071,7 +25970,7 @@ postcss-unique-selectors@^5.1.1: dependencies: postcss-selector-parser "^6.0.5" -postcss-value-parser@^4.1.0, postcss-value-parser@^4.2.0: +postcss-value-parser@^4.0.0, postcss-value-parser@^4.1.0, postcss-value-parser@^4.2.0: version "4.2.0" resolved "https://registry.npmmirror.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514" integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== @@ -22107,6 +26006,24 @@ postgres-interval@^1.1.0: dependencies: xtend "^4.0.0" +prebuild-install@^7.0.1: + version "7.1.3" + resolved "https://registry.yarnpkg.com/prebuild-install/-/prebuild-install-7.1.3.tgz#d630abad2b147443f20a212917beae68b8092eec" + integrity sha512-8Mf2cbV7x1cXPUILADGI3wuhfqWvtiLA1iclTDbFRZkgRQS0NqsPZphna9V+HyTEadheuPmjaJMsbzKQFOzLug== + dependencies: + detect-libc "^2.0.0" + expand-template "^2.0.3" + github-from-package "0.0.0" + minimist "^1.2.3" + mkdirp-classic "^0.5.3" + napi-build-utils "^2.0.0" + node-abi "^3.3.0" + pump "^3.0.0" + rc "^1.2.7" + simple-get "^4.0.0" + tar-fs "^2.0.0" + tunnel-agent "^0.6.0" + prebuild-install@^7.1.1: version "7.1.1" resolved "https://registry.npmmirror.com/prebuild-install/-/prebuild-install-7.1.1.tgz#de97d5b34a70a0c81334fd24641f2a1702352e45" @@ -22171,15 +26088,20 @@ prismjs@^1.27.0: resolved "https://registry.npmmirror.com/prismjs/-/prismjs-1.29.0.tgz#f113555a8fa9b57c35e637bba27509dcf802dd12" integrity sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q== +prismjs@^1.30.0: + version "1.30.0" + resolved "https://registry.yarnpkg.com/prismjs/-/prismjs-1.30.0.tgz#d9709969d9d4e16403f6f348c63553b19f0975a9" + integrity sha512-DEvV2ZF2r2/63V+tK8hQvrR2ZGn10srHbXviTlcv7Kpzw8jWiNTqbVgjO3IY8RxrrOUF8VPMQQFysYYYv0YZxw== + prismjs@~1.27.0: version "1.27.0" resolved "https://registry.npmmirror.com/prismjs/-/prismjs-1.27.0.tgz#bb6ee3138a0b438a3653dd4d6ce0cc6510a45057" integrity sha512-t13BGPUlFDR7wRB5kQDG4jjl7XeuH6jbJGt11JHPL96qwsEHNX2+68tFXqc1/k+/jALsbSWJKUOT/hcYAZ5LkA== -proc-log@^3.0.0: - version "3.0.0" - resolved "https://registry.npmmirror.com/proc-log/-/proc-log-3.0.0.tgz#fb05ef83ccd64fd7b20bbe9c8c1070fc08338dd8" - integrity sha512-++Vn7NS4Xf9NacaU9Xq3URUuqZETPsf8L4j5/ckhaRYsfPeRyzGw+iDjFhV/Jr3uNmTvvddEJFWh5R1gRgUH8A== +proc-log@^4.1.0, proc-log@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/proc-log/-/proc-log-4.2.0.tgz#b6f461e4026e75fdfe228b265e9f7a00779d7034" + integrity sha512-g8+OnU/L2v+wyiVK+D5fA34J7EH8jZ8DDlvwhRCMxmMj7UCBvxiO1mGeN+36JXIKF4zevU4kRBd8lVgG9vLelA== process-nextick-args@~2.0.0: version "2.0.1" @@ -22199,11 +26121,6 @@ prom-client@^15.0.0: "@opentelemetry/api" "^1.4.0" tdigest "^0.1.1" -promise-inflight@^1.0.1: - version "1.0.1" - resolved "https://registry.npmmirror.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3" - integrity sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g== - promise-retry@^2.0.1: version "2.0.1" resolved "https://registry.npmmirror.com/promise-retry/-/promise-retry-2.0.1.tgz#ff747a13620ab57ba688f5fc67855410c370da22" @@ -22217,6 +26134,13 @@ promise.series@^0.2.0: resolved "https://registry.npmmirror.com/promise.series/-/promise.series-0.2.0.tgz#2cc7ebe959fc3a6619c04ab4dbdc9e452d864bbd" integrity sha512-VWQJyU2bcDTgZw8kpfBpB/ejZASlCrzwz5f2hjb/zlujOEB4oeiAhHygAWq8ubsX2GVkD4kCU5V2dwOTaCY5EQ== +promise@^7.1.1: + version "7.3.1" + resolved "https://registry.yarnpkg.com/promise/-/promise-7.3.1.tgz#064b72602b18f90f29192b8b1bc418ffd1ebd3bf" + integrity sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg== + dependencies: + asap "~2.0.3" + prompts@^2.0.1, prompts@^2.4.2: version "2.4.2" resolved "https://registry.npmmirror.com/prompts/-/prompts-2.4.2.tgz#7b57e73b3a48029ad10ebd44f74b01722a4cb069" @@ -22225,14 +26149,7 @@ prompts@^2.0.1, prompts@^2.4.2: kleur "^3.0.3" sisteransi "^1.0.5" -promzard@^1.0.0: - version "1.0.0" - resolved "https://registry.npmmirror.com/promzard/-/promzard-1.0.0.tgz#3246f8e6c9895a77c0549cefb65828ac0f6c006b" - integrity sha512-KQVDEubSUHGSt5xLakaToDFrSoZhStB8dXLzk2xvwR67gJktrHFvpR63oZgHyK19WKbHFLXJqCPXdVR3aBP8Ig== - dependencies: - read "^2.0.0" - -prop-types@15.x, prop-types@^15.0.0, prop-types@^15.5.10, prop-types@^15.5.7, prop-types@^15.6.2, prop-types@^15.7.2, prop-types@^15.8.1: +prop-types@15.x, prop-types@^15.0.0, prop-types@^15.5.10, prop-types@^15.6.2, prop-types@^15.7.2, prop-types@^15.8.1: version "15.8.1" resolved "https://registry.npmmirror.com/prop-types/-/prop-types-15.8.1.tgz#67d87bf1a694f48435cf332c24af10214a3140b5" integrity sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg== @@ -22241,10 +26158,22 @@ prop-types@15.x, prop-types@^15.0.0, prop-types@^15.5.10, prop-types@^15.5.7, pr object-assign "^4.1.1" react-is "^16.13.1" -property-expr@^2.0.5: - version "2.0.6" - resolved "https://registry.npmmirror.com/property-expr/-/property-expr-2.0.6.tgz#f77bc00d5928a6c748414ad12882e83f24aec1e8" - integrity sha512-SVtmxhRE/CGkn3eZY1T6pC8Nln6Fr/lu1mKSgRud0eC73whjGfoAogbn78LkD8aFL0zz3bAFerKSnOl7NlErBA== +proper-lockfile@^4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/proper-lockfile/-/proper-lockfile-4.1.2.tgz#c8b9de2af6b2f1601067f98e01ac66baa223141f" + integrity sha512-TjNPblN4BwAWMXU8s9AEz4JmQxnD1NNL7bNOY/AKUzyamc379FWASUhc/K1pL2noVb+XmZKLL68cjzLsiOAMaA== + dependencies: + graceful-fs "^4.2.4" + retry "^0.12.0" + signal-exit "^3.0.2" + +properties-reader@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/properties-reader/-/properties-reader-3.0.1.tgz#576af69708759bb75672bfc162b80cc8a3d1bdb2" + integrity sha512-WPn+h9RGEExOKdu4bsF4HksG/uzd3cFq3MFtq8PsFeExPse5Ha/VOjQNyHhjboBFwGXGev6muJYTSPAOkROq2g== + dependencies: + "@kwsites/file-exists" "^1.1.1" + mkdirp "^3.0.1" property-information@^5.0.0: version "5.6.0" @@ -22258,6 +26187,11 @@ property-information@^6.0.0: resolved "https://registry.npmmirror.com/property-information/-/property-information-6.4.1.tgz#de8b79a7415fd2107dfbe65758bb2cc9dfcf60ac" integrity sha512-OHYtXfu5aI2sS2LWFSN5rgJjrQ4pCy8i1jubJLe2QvMF8JJ++HXTUIVWFLfXJoaOfvYYjk2SN8J2wFUWIGXT4w== +property-information@^7.0.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/property-information/-/property-information-7.1.0.tgz#b622e8646e02b580205415586b40804d3e8bfd5d" + integrity sha512-TwEZ+X+yCJmYfL7TPUOcvBZ4QfoT5YenQiJuX//0th53DE6w0xxLEtfK3iyryQFddXuvkIk51EEgrJQ0WJkOmQ== + proto3-json-serializer@^2.0.0: version "2.0.1" resolved "https://registry.npmmirror.com/proto3-json-serializer/-/proto3-json-serializer-2.0.1.tgz#da0b510f6d6e584b1b5c271f045c26728abe71e0" @@ -22283,10 +26217,10 @@ protobufjs@7.2.6, protobufjs@^7.2.4, protobufjs@^7.2.5: "@types/node" ">=13.7.0" long "^5.0.0" -protobufjs@^7.2.6: - version "7.3.2" - resolved "https://registry.npmmirror.com/protobufjs/-/protobufjs-7.3.2.tgz#60f3b7624968868f6f739430cfbc8c9370e26df4" - integrity sha512-RXyHaACeqXeqAKGLDl68rQKbmObRsTIn4TYVUUug1KfS47YWCo5MacGITEryugIgZqORCvJWEk4l449POg5Txg== +protobufjs@^7.0.0, protobufjs@^7.3.2, protobufjs@^7.4.0, protobufjs@^7.5.3: + version "7.5.5" + resolved "https://registry.yarnpkg.com/protobufjs/-/protobufjs-7.5.5.tgz#b7089ca4410374c75150baf277353ef76db69f96" + integrity sha512-3wY1AxV+VBNW8Yypfd1yQY9pXnqTAN+KwQxL8iYm3/BjKYMNg4i0owhEe26PWDOMaIrzeeF98Lqd5NGz4omiIg== dependencies: "@protobufjs/aspromise" "^1.1.2" "@protobufjs/base64" "^1.1.2" @@ -22319,14 +26253,26 @@ proxy-from-env@^1.1.0: resolved "https://registry.npmmirror.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz#e102f16ca355424865755d2c9e8ea4f24d58c3e2" integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg== -psl@^1.1.28, psl@^1.1.33: +proxy-from-env@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-2.1.0.tgz#a7487568adad577cfaaa7e88c49cab3ab3081aba" + integrity sha512-cJ+oHTW1VAEa8cJslgmUZrc+sjRKgAKl3Zyse6+PV38hZe/V6Z14TbCuXcan9F9ghlz4QrFr2c92TNF82UkYHA== + +psl@^1.1.28: version "1.9.0" resolved "https://registry.npmmirror.com/psl/-/psl-1.9.0.tgz#d0df2a137f00794565fcaf3b2c00cd09f8d5a5a7" integrity sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag== -public-encrypt@^4.0.0: +psl@^1.1.33: + version "1.15.0" + resolved "https://registry.yarnpkg.com/psl/-/psl-1.15.0.tgz#bdace31896f1d97cec6a79e8224898ce93d974c6" + integrity sha512-JZd3gMVBAVQkSs6HdNZo9Sdo0LNcQeMNP3CozBJb3JYC/QUYZTnKxP+f8oWRX4rHP5EurWxqAHTSwUCjlNKa1w== + dependencies: + punycode "^2.3.1" + +public-encrypt@^4.0.3: version "4.0.3" - resolved "https://registry.npmmirror.com/public-encrypt/-/public-encrypt-4.0.3.tgz#4fcc9d77a07e48ba7527e7cbe0de33d0701331e0" + resolved "https://registry.yarnpkg.com/public-encrypt/-/public-encrypt-4.0.3.tgz#4fcc9d77a07e48ba7527e7cbe0de33d0701331e0" integrity sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q== dependencies: bn.js "^4.1.0" @@ -22344,20 +26290,30 @@ pump@^3.0.0: end-of-stream "^1.1.0" once "^1.3.1" -punycode@^1.2.4, punycode@^1.4.1: +punycode.js@^2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/punycode.js/-/punycode.js-2.3.1.tgz#6b53e56ad75588234e79f4affa90972c7dd8cdb7" + integrity sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA== + +punycode@^1.4.1: version "1.4.1" resolved "https://registry.npmmirror.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" integrity sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ== -punycode@^2.1.0, punycode@^2.1.1: +punycode@^2.1.0, punycode@^2.1.1, punycode@^2.3.1: version "2.3.1" resolved "https://registry.npmmirror.com/punycode/-/punycode-2.3.1.tgz#027422e2faec0b25e1549c3e1bd8309b9133b6e5" integrity sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg== +pure-color@^1.2.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/pure-color/-/pure-color-1.3.0.tgz#1fe064fb0ac851f0de61320a8bf796836422f33e" + integrity sha512-QFADYnsVoBMw1srW7OVKEYjG+MbIa49s54w1MA1EDY6r2r/sTcKKYqRX1f4GYvnXP7eN/Pe9HFcX+hwzmrXRHA== + pure-rand@^6.0.0: - version "6.0.4" - resolved "https://registry.npmmirror.com/pure-rand/-/pure-rand-6.0.4.tgz#50b737f6a925468679bff00ad20eade53f37d5c7" - integrity sha512-LA0Y9kxMYv47GIPJy6MI84fqTd2HmYZI83W/kM/SkKfDlajnZYfmXFTxkbY+xSBPkLJxltMa9hIkmdc29eguMA== + version "6.1.0" + resolved "https://registry.yarnpkg.com/pure-rand/-/pure-rand-6.1.0.tgz#d173cf23258231976ccbdb05247c9787957604f2" + integrity sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA== qs@6.11.0: version "6.11.0" @@ -22366,7 +26322,7 @@ qs@6.11.0: dependencies: side-channel "^1.0.4" -qs@^6.10.1, qs@^6.10.2, qs@^6.11.2, qs@^6.9.1, qs@^6.9.4: +qs@^6.10.1, qs@^6.11.2, qs@^6.9.4: version "6.11.2" resolved "https://registry.npmmirror.com/qs/-/qs-6.11.2.tgz#64bea51f12c1f5da1bc01496f48ffcff7c69d7d9" integrity sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA== @@ -22380,24 +26336,28 @@ qs@^6.11.0: dependencies: side-channel "^1.0.6" +qs@^6.12.2, qs@^6.12.3, qs@^6.14.0, qs@^6.14.1: + version "6.15.1" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.15.1.tgz#bdb55aed06bfac257a90c44a446a73fba5575c8f" + integrity sha512-6YHEFRL9mfgcAvql/XhwTvf5jKcOiiupt2FiJxHkiX1z4j7WL8J/jRHYLluORvc1XxB5rV20KoeK00gVJamspg== + dependencies: + side-channel "^1.1.0" + +qs@~6.14.0: + version "6.14.2" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.14.2.tgz#b5634cf9d9ad9898e31fba3504e866e8efb6798c" + integrity sha512-V/yCWTTF7VJ9hIh18Ugr2zhJMP01MY7c5kh4J870L7imm6/DIzBsNLTXzMwUA3yZ5b/KBqLx8Kp3uRvd7xSe3Q== + dependencies: + side-channel "^1.1.0" + qs@~6.5.2: version "6.5.3" resolved "https://registry.npmmirror.com/qs/-/qs-6.5.3.tgz#3aeeffc91967ef6e35c0e488ef46fb296ab76aad" integrity sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA== -query-string@^7.0.0: - version "7.1.3" - resolved "https://registry.npmmirror.com/query-string/-/query-string-7.1.3.tgz#a1cf90e994abb113a325804a972d98276fe02328" - integrity sha512-hh2WYhq4fi8+b+/2Kg9CEge4fDPvHS534aOOvOZeQ3+Vf2mCFsaFBYj0i+iXcAq6I9Vzp5fjMFBlONvayDC1qg== - dependencies: - decode-uri-component "^0.2.2" - filter-obj "^1.1.0" - split-on-first "^1.0.0" - strict-uri-encode "^2.0.0" - -querystring-es3@^0.2.0: +querystring-es3@^0.2.1: version "0.2.1" - resolved "https://registry.npmmirror.com/querystring-es3/-/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73" + resolved "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73" integrity sha512-773xhDQnZBMFobEiztv8LIl70ch5MSF/jUQVlhwFyBILqq96anmoctVIYz+ZRp0qbCKATTn6ev02M3r7Ga5vqA== querystringify@^2.1.1: @@ -22420,11 +26380,6 @@ quick-format-unescaped@^3.0.3: resolved "https://registry.npmmirror.com/quick-format-unescaped/-/quick-format-unescaped-3.0.3.tgz#fb3e468ac64c01d22305806c39f121ddac0d1fb9" integrity sha512-dy1yjycmn9blucmJLXOfZDx1ikZJUi6E8bBZLnhPG5gBrVhHXx2xVyqqgKBubVNEXmx51dBACMHpoMQK/N/AXQ== -quick-lru@^4.0.1: - version "4.0.1" - resolved "https://registry.npmmirror.com/quick-lru/-/quick-lru-4.0.1.tgz#5b8878f113a58217848c6482026c73e1ba57727f" - integrity sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g== - quick-lru@^5.1.1: version "5.1.1" resolved "https://registry.npmmirror.com/quick-lru/-/quick-lru-5.1.1.tgz#366493e6b3e42a3a6885e2e99d18f80fb7a8c932" @@ -22445,15 +26400,15 @@ rambda@^9.1.0: resolved "https://registry.yarnpkg.com/rambda/-/rambda-9.2.1.tgz#d52070e457ef16d51693f5805679774697e3362a" integrity sha512-6Dp+QQVQuAuhwBlbIvL2FjJVHCKF29W+n9ca/BMTVDqpj+Q7KKqUh7UAINEna8aaB2/oRvPuL5hViCTQARa70Q== -ramda-adjunct@^4.0.0, ramda-adjunct@^4.1.1: - version "4.1.1" - resolved "https://registry.npmmirror.com/ramda-adjunct/-/ramda-adjunct-4.1.1.tgz#085ca9a7bf19857378eff648f9852b15136dc66f" - integrity sha512-BnCGsZybQZMDGram9y7RiryoRHS5uwx8YeGuUeDKuZuvK38XO6JJfmK85BwRWAKFA6pZ5nZBO/HBFtExVaf31w== +ramda-adjunct@^5.0.0, ramda-adjunct@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/ramda-adjunct/-/ramda-adjunct-5.1.0.tgz#c1281100922b03e74b1535cb9c966628697c5cc1" + integrity sha512-8qCpl2vZBXEJyNbi4zqcgdfHtcdsWjOGbiNSEnEBrM6Y0OKOT8UxJbIVGm1TIcjaSu2MxaWcgtsNlKlCk7o7qg== -ramda@~0.29.1: - version "0.29.1" - resolved "https://registry.npmmirror.com/ramda/-/ramda-0.29.1.tgz#408a6165b9555b7ba2fc62555804b6c5a2eca196" - integrity sha512-OfxIeWzd4xdUNxlWhgFazxsA/nl3mS4/jGZI5n00uWOoSSFRhC1b6gl6xvmzUamgmqELraWp0J/qqVlXYPDPyA== +ramda@^0.30.1, ramda@~0.30.0: + version "0.30.1" + resolved "https://registry.yarnpkg.com/ramda/-/ramda-0.30.1.tgz#7108ac95673062b060025052cd5143ae8fc605bf" + integrity sha512-tEF5I22zJnuclswcZMc8bDIrwRHRzf+NqVEmqg50ShAZMP7MWeR/RGDthfM/p+BlqvF2fXAzpn8i+SJcYD3alw== randexp@0.4.6: version "0.4.6" @@ -22483,9 +26438,9 @@ randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5, randombytes@^2.1.0: dependencies: safe-buffer "^5.1.0" -randomfill@^1.0.3: +randomfill@^1.0.4: version "1.0.4" - resolved "https://registry.npmmirror.com/randomfill/-/randomfill-1.0.4.tgz#c92196fc86ab42be983f1bf31778224931d61458" + resolved "https://registry.yarnpkg.com/randomfill/-/randomfill-1.0.4.tgz#c92196fc86ab42be983f1bf31778224931d61458" integrity sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw== dependencies: randombytes "^2.0.5" @@ -22496,11 +26451,21 @@ range-parser@^1.2.1, range-parser@~1.2.1: resolved "https://registry.npmmirror.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== -rate-limiter-flexible@^4.0.0: +rate-limit-redis@^4.2.0: + version "4.3.1" + resolved "https://registry.yarnpkg.com/rate-limit-redis/-/rate-limit-redis-4.3.1.tgz#77274184fe89ce4a8834395306821f854857178e" + integrity sha512-+a1zU8+D7L8siDK9jb14refQXz60vq427VuiplgnaLk9B2LnvGe/APLTfhwb4uNIL7eWVknh8GnRp/unCj+lMA== + +rate-limiter-flexible@^4.0.1: version "4.0.1" - resolved "https://registry.npmmirror.com/rate-limiter-flexible/-/rate-limiter-flexible-4.0.1.tgz#79b0ce111abe9c5da41d6fddf7cca93cedd3a8fc" + resolved "https://registry.yarnpkg.com/rate-limiter-flexible/-/rate-limiter-flexible-4.0.1.tgz#79b0ce111abe9c5da41d6fddf7cca93cedd3a8fc" integrity sha512-2/dGHpDFpeA0+755oUkW+EKyklqLS9lu0go9pDsbhqQjZcxfRyJ6LA4JI0+HAdZ2bemD/oOjUeZQB2lCZqXQfQ== +rate-limiter-flexible@^8.0.1: + version "8.3.0" + resolved "https://registry.yarnpkg.com/rate-limiter-flexible/-/rate-limiter-flexible-8.3.0.tgz#3dd39ff8e4fb0fbee653bbea440039796a7caebf" + integrity sha512-mzwlfipDLlRinPgELqVDJetke6Snq26nL565m8nLWXIcWgosYSeNRgqwh7ZrZ4MfYs8CNfmLvR5SBVz3rISQsQ== + raw-body@2.5.1: version "2.5.1" resolved "https://registry.npmmirror.com/raw-body/-/raw-body-2.5.1.tgz#fe1b1628b181b700215e5fd42389f98b71392857" @@ -22511,7 +26476,7 @@ raw-body@2.5.1: iconv-lite "0.4.24" unpipe "1.0.0" -raw-body@2.5.2, raw-body@^2.4.1: +raw-body@^2.4.1: version "2.5.2" resolved "https://registry.npmmirror.com/raw-body/-/raw-body-2.5.2.tgz#99febd83b90e08975087e8f1f9419a149366b68a" integrity sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA== @@ -22521,6 +26486,24 @@ raw-body@2.5.2, raw-body@^2.4.1: iconv-lite "0.4.24" unpipe "1.0.0" +raw-body@~2.5.3: + version "2.5.3" + resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.5.3.tgz#11c6650ee770a7de1b494f197927de0c923822e2" + integrity sha512-s4VSOf6yN0rvbRZGxs8Om5CWj6seneMwK3oDb4lWDH0UPhWcxwOWw5+qk24bxq87szX1ydrwylIOp2uG1ojUpA== + dependencies: + bytes "~3.1.2" + http-errors "~2.0.1" + iconv-lite "~0.4.24" + unpipe "~1.0.0" + +raw-loader@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/raw-loader/-/raw-loader-4.0.2.tgz#1aac6b7d1ad1501e66efdac1522c73e59a584eb6" + integrity sha512-ZnScIV3ag9A4wPX/ZayxL/jZH+euYb6FcUinPcgiQW0+UBtEv0O6Q3lGd3cqJ+GHH+rksEv3Pj99oxJ3u3VIKA== + dependencies: + loader-utils "^2.0.0" + schema-utils "^3.0.0" + rc-progress@3.5.1: version "3.5.1" resolved "https://registry.npmmirror.com/rc-progress/-/rc-progress-3.5.1.tgz#a3cdfd2fe04eb5c3d43fa1c69e7dd70c73b102ae" @@ -22548,6 +26531,83 @@ rc@^1.2.7: minimist "^1.2.0" strip-json-comments "~2.0.1" +re2-wasm@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/re2-wasm/-/re2-wasm-1.0.2.tgz#78c09dc651b8962aa814b55ae7fe5e472ec15bbb" + integrity sha512-VXUdgSiUrE/WZXn6gUIVVIsg0+Hp6VPZPOaHCay+OuFKy6u/8ktmeNEf+U5qSA8jzGGFsg8jrDNu1BeHpz2pJA== + +react-aria-components@1.17.0, react-aria-components@~1.17.0: + version "1.17.0" + resolved "https://registry.yarnpkg.com/react-aria-components/-/react-aria-components-1.17.0.tgz#7fd5c9b6c575b3353a5bf9996dbdc39c1ccc211e" + integrity sha512-0EyisMgvsFJ2aML3crDYv2tW5vT2Ryf8PGzY/g63JjDdCbLshlwazhS8JNtPF1vkTkungJJ6sVJbKyX+YKSoFA== + dependencies: + "@internationalized/date" "^3.12.1" + "@react-types/shared" "^3.34.0" + "@swc/helpers" "^0.5.0" + client-only "^0.0.1" + react-aria "3.48.0" + react-stately "3.46.0" + +react-aria-components@~1.16.0: + version "1.16.0" + resolved "https://registry.yarnpkg.com/react-aria-components/-/react-aria-components-1.16.0.tgz#6a5d4c75d5e9bf2c83ef8837ac19fb0a50abb698" + integrity sha512-MjHbTLpMFzzD2Tv5KbeXoZwPczuUWZcRavVvQQlNHRtXHH38D+sToMEYpNeir7Wh3K/XWtzeX3EujfJW6QNkrw== + dependencies: + "@internationalized/date" "^3.12.0" + "@internationalized/string" "^3.2.7" + "@react-aria/autocomplete" "3.0.0-rc.6" + "@react-aria/collections" "^3.0.3" + "@react-aria/dnd" "^3.11.6" + "@react-aria/focus" "^3.21.5" + "@react-aria/interactions" "^3.27.1" + "@react-aria/live-announcer" "^3.4.4" + "@react-aria/overlays" "^3.31.2" + "@react-aria/ssr" "^3.9.10" + "@react-aria/textfield" "^3.18.5" + "@react-aria/toolbar" "3.0.0-beta.24" + "@react-aria/utils" "^3.33.1" + "@react-aria/virtualizer" "^4.1.13" + "@react-stately/autocomplete" "3.0.0-beta.4" + "@react-stately/layout" "^4.6.0" + "@react-stately/selection" "^3.20.9" + "@react-stately/table" "^3.15.4" + "@react-stately/utils" "^3.11.0" + "@react-stately/virtualizer" "^4.4.6" + "@react-types/form" "^3.7.18" + "@react-types/grid" "^3.3.8" + "@react-types/shared" "^3.33.1" + "@react-types/table" "^3.13.6" + "@swc/helpers" "^0.5.0" + client-only "^0.0.1" + react-aria "^3.47.0" + react-stately "^3.45.0" + use-sync-external-store "^1.6.0" + +react-aria@3.48.0, react-aria@^3.47.0, react-aria@~3.48.0: + version "3.48.0" + resolved "https://registry.yarnpkg.com/react-aria/-/react-aria-3.48.0.tgz#ede91d3b247d34ea35216e246f0cb7de074303bd" + integrity sha512-jQjd4rBEIMqecBaAKYJbVGK6EqIHLa5znVQ7jwFyK5vCyljoj6KhgtiahmcIPsG5vG5vEDLw+ba+bEWn6A2P4w== + dependencies: + "@internationalized/date" "^3.12.1" + "@internationalized/number" "^3.6.6" + "@internationalized/string" "^3.2.8" + "@react-types/shared" "^3.34.0" + "@swc/helpers" "^0.5.0" + aria-hidden "^1.2.3" + clsx "^2.0.0" + react-stately "3.46.0" + use-sync-external-store "^1.6.0" + +react-base16-styling@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/react-base16-styling/-/react-base16-styling-0.6.0.tgz#ef2156d66cf4139695c8a167886cb69ea660792c" + integrity sha512-yvh/7CArceR/jNATXOKDlvTnPKPmGZz7zsenQ3jUwLzHkNUR0CvY3yGYJbWJ/nnxsL8Sgmt5cO3/SILVuPO6TQ== + dependencies: + base16 "^1.0.0" + lodash.curry "^4.0.1" + lodash.flow "^3.3.0" + pure-color "^1.2.0" + react-beautiful-dnd@^13.0.0: version "13.1.1" resolved "https://registry.npmmirror.com/react-beautiful-dnd/-/react-beautiful-dnd-13.1.1.tgz#b0f3087a5840920abf8bb2325f1ffa46d8c4d0a2" @@ -22561,6 +26621,11 @@ react-beautiful-dnd@^13.0.0: redux "^4.0.4" use-memo-one "^1.1.1" +react-compiler-runtime@19.1.0-rc.1: + version "19.1.0-rc.1" + resolved "https://registry.yarnpkg.com/react-compiler-runtime/-/react-compiler-runtime-19.1.0-rc.1.tgz#2535efd2e9fc9fc7d5ad47e970061dfbe38fb3f6" + integrity sha512-wCt6g+cRh8g32QT18/9blfQHywGjYu+4FlEc3CW1mx3pPxYzZZl1y+VtqxRgnKKBCFLIGUYxog4j4rs5YS86hw== + react-copy-to-clipboard@5.1.0: version "5.1.0" resolved "https://registry.npmmirror.com/react-copy-to-clipboard/-/react-copy-to-clipboard-5.1.0.tgz#09aae5ec4c62750ccb2e6421a58725eabc41255c" @@ -22569,6 +26634,14 @@ react-copy-to-clipboard@5.1.0: copy-to-clipboard "^3.3.1" prop-types "^15.8.1" +react-copy-to-clipboard@^5.1.0: + version "5.1.1" + resolved "https://registry.yarnpkg.com/react-copy-to-clipboard/-/react-copy-to-clipboard-5.1.1.tgz#76adb8be03616e99692fcf3f762365ed3fb5ff16" + integrity sha512-s+HrzLyJBxrpGTYXF15dTgMjAJpEPZT/Yp6NytAtZMRngejxt6Pt5WrfFxLAcsqUDU6sY1Jz6tyHwIicE1U2Xg== + dependencies: + copy-to-clipboard "^3.3.3" + prop-types "^15.8.1" + react-debounce-input@=3.3.0: version "3.3.0" resolved "https://registry.npmmirror.com/react-debounce-input/-/react-debounce-input-3.3.0.tgz#85e3ebcaa41f2016e50613134a1ec9fe3cdb422e" @@ -22628,6 +26701,13 @@ react-draggable@^4.0.0, react-draggable@^4.0.3: clsx "^1.1.1" prop-types "^15.8.1" +react-error-boundary@^4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/react-error-boundary/-/react-error-boundary-4.1.2.tgz#bc750ad962edb8b135d6ae922c046051eb58f289" + integrity sha512-GQDxZ5Jd+Aq/qUxbCm1UtzmL/s++V7zKgE8yMktJiCQXCCFZnMZh9ng+6/Ne6PjNSXH0L9CjeOEREfRnq6Duag== + dependencies: + "@babel/runtime" "^7.12.5" + react-error-overlay@^6.0.11: version "6.0.11" resolved "https://registry.npmmirror.com/react-error-overlay/-/react-error-overlay-6.0.11.tgz#92835de5841c5cf08ba00ddd2d677b6d17ff9adb" @@ -22638,6 +26718,27 @@ react-fast-compare@^3.1.1: resolved "https://registry.npmmirror.com/react-fast-compare/-/react-fast-compare-3.2.2.tgz#929a97a532304ce9fee4bcae44234f1ce2c21d49" integrity sha512-nsO+KSNgo1SbJqJEYRE9ERzo7YtYbou/OqjSQKxV7jcKox7+usiUVZOAC+XnDOABXggQTno0Y1CpVnuWEc1boQ== +react-flow-renderer@^10.3.17: + version "10.3.17" + resolved "https://registry.yarnpkg.com/react-flow-renderer/-/react-flow-renderer-10.3.17.tgz#06d6ecef5559ba5d3e64d2c8dcb74c43071d62b1" + integrity sha512-bywiqVErlh5kCDqw3x0an5Ur3mT9j9CwJsDwmhmz4i1IgYM1a0SPqqEhClvjX+s5pU4nHjmVaGXWK96pwsiGcQ== + dependencies: + "@babel/runtime" "^7.18.9" + "@types/d3" "^7.4.0" + "@types/resize-observer-browser" "^0.1.7" + classcat "^5.0.3" + d3-drag "^3.0.0" + d3-selection "^3.0.0" + d3-zoom "^3.0.0" + zustand "^3.7.2" + +react-full-screen@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/react-full-screen/-/react-full-screen-1.1.1.tgz#b707d56891015a71c503a65dbab3086d75be97d7" + integrity sha512-xoEgkoTiN0dw9cjYYGViiMCBYbkS97BYb4bHPhQVWXj1UnOs8PZ1rPzpX+2HMhuvQV1jA5AF9GaRbO3fA5aZtg== + dependencies: + fscreen "^1.0.2" + react-grid-layout@1.3.4: version "1.3.4" resolved "https://registry.npmmirror.com/react-grid-layout/-/react-grid-layout-1.3.4.tgz#4fa819be24a1ba9268aa11b82d63afc4762a32ff" @@ -22664,11 +26765,6 @@ react-hook-form@^7.12.2: resolved "https://registry.npmmirror.com/react-hook-form/-/react-hook-form-7.49.3.tgz#576a4567f8a774830812f4855e89f5da5830435c" integrity sha512-foD6r3juidAT1cOZzpmD/gOKt7fRsDhXXZ0y28+Al1CHgX+AY1qIN9VSIIItXRq1dN68QrRwl1ORFlwjBaAqeQ== -react-idle-timer@5.6.2: - version "5.6.2" - resolved "https://registry.npmmirror.com/react-idle-timer/-/react-idle-timer-5.6.2.tgz#0342b381ca26ea46e8232dbdc7f2b948bc4ddb0d" - integrity sha512-X7zjDv7duCopQ4v3X2Gun8QunvYplPWkvW2y7suDSREu1vQRQ0mr1ESv325QoJuvSIE5QCSbLaJlrbbooNaUNg== - react-idle-timer@5.7.2: version "5.7.2" resolved "https://registry.npmmirror.com/react-idle-timer/-/react-idle-timer-5.7.2.tgz#f506db28a86645dd1b87987116501703e512142b" @@ -22691,7 +26787,7 @@ react-inspector@^6.0.1: resolved "https://registry.npmmirror.com/react-inspector/-/react-inspector-6.0.2.tgz#aa3028803550cb6dbd7344816d5c80bf39d07e9d" integrity sha512-x+b7LxhmHXjHoU/VrFAzw5iutsILRoYyDq97EDYdFpPLcvqtEzk4ZSZSQjnFPbr5T57tLXnHcqFYoN1pI6u8uQ== -react-is@^16.13.1, react-is@^16.7.0, react-is@^16.8.0: +react-is@^16.13.1, react-is@^16.7.0: version "16.13.1" resolved "https://registry.npmmirror.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== @@ -22706,6 +26802,26 @@ react-is@^18.0.0, react-is@^18.2.0: resolved "https://registry.npmmirror.com/react-is/-/react-is-18.2.0.tgz#199431eeaaa2e09f86427efbb4f1473edb47609b" integrity sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w== +react-is@^19.0.0: + version "19.2.5" + resolved "https://registry.yarnpkg.com/react-is/-/react-is-19.2.5.tgz#7e7b54143e9313fed787b23fd4295d5a23872ad9" + integrity sha512-Dn0t8IQhCmeIT3wu+Apm1/YVsJXsGWi6k4sPdnBIdqMVtHtv0IGi6dcpNpNkNac0zB2uUAqNX3MHzN8c+z2rwQ== + +react-json-view@^1.21.3: + version "1.21.3" + resolved "https://registry.yarnpkg.com/react-json-view/-/react-json-view-1.21.3.tgz#f184209ee8f1bf374fb0c41b0813cff54549c475" + integrity sha512-13p8IREj9/x/Ye4WI/JpjhoIwuzEgUAtgJZNBJckfzJt1qyh24BdTm6UQNGnyTq9dapQdrqvquZTo3dz1X6Cjw== + dependencies: + flux "^4.0.1" + react-base16-styling "^0.6.0" + react-lifecycles-compat "^3.0.4" + react-textarea-autosize "^8.3.2" + +react-lifecycles-compat@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz#4f1a273afdfc8f3488a8c516bfda78f872352362" + integrity sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA== + react-markdown@^8.0.0: version "8.0.7" resolved "https://registry.npmmirror.com/react-markdown/-/react-markdown-8.0.7.tgz#c8dbd1b9ba5f1c5e7e5f2a44de465a3caafdf89b" @@ -22739,18 +26855,23 @@ react-redux@^7.2.0: prop-types "^15.7.2" react-is "^17.0.2" -react-redux@^9.1.0: - version "9.1.0" - resolved "https://registry.npmmirror.com/react-redux/-/react-redux-9.1.0.tgz#46a46d4cfed4e534ce5452bb39ba18e1d98a8197" - integrity sha512-6qoDzIO+gbrza8h3hjMA9aq4nwVFCKFtY2iLxCtVT38Swyy2C/dJCGBXHeHLtx6qlg/8qzc2MrhOeduf5K32wQ== +react-redux@^9.2.0: + version "9.2.0" + resolved "https://registry.yarnpkg.com/react-redux/-/react-redux-9.2.0.tgz#96c3ab23fb9a3af2cb4654be4b51c989e32366f5" + integrity sha512-ROY9fvHhwOD9ySfrF0wmvu//bKCQ6AeZZq1nJNtbDC+kk5DuSuNX/n6YWYF/SYy7bSba4D4FSz8DJeKY/S/r+g== dependencies: - "@types/use-sync-external-store" "^0.0.3" - use-sync-external-store "^1.0.0" + "@types/use-sync-external-store" "^0.0.6" + use-sync-external-store "^1.4.0" + +react-refresh@^0.17.0: + version "0.17.0" + resolved "https://registry.yarnpkg.com/react-refresh/-/react-refresh-0.17.0.tgz#b7e579c3657f23d04eccbe4ad2e58a8ed51e7e53" + integrity sha512-z6F7K9bV85EfseRCp2bzrpyQ0Gkw1uLoCel9XBVWPg/TjRj94SkJzUTGfOa4bs7iJvBWtQG0Wq7wnI0syw3EBQ== -react-refresh@^0.14.0: - version "0.14.0" - resolved "https://registry.npmmirror.com/react-refresh/-/react-refresh-0.14.0.tgz#4e02825378a5f227079554d4284889354e5f553e" - integrity sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ== +react-refresh@^0.18.0: + version "0.18.0" + resolved "https://registry.yarnpkg.com/react-refresh/-/react-refresh-0.18.0.tgz#2dce97f4fe932a4d8142fa1630e475c1729c8062" + integrity sha512-QgT5//D3jfjJb6Gsjxv0Slpj23ip+HtOpnNgnb2S5zU3CB26G/IDPGoy4RJB42wzFE46DRsstbW6tKHoKbhAxw== react-remove-scroll-bar@^2.3.3: version "2.3.4" @@ -22771,6 +26892,11 @@ react-remove-scroll@2.5.5: use-callback-ref "^1.3.0" use-sidecar "^1.1.2" +react-resizable-panels@^3.0.4: + version "3.0.6" + resolved "https://registry.yarnpkg.com/react-resizable-panels/-/react-resizable-panels-3.0.6.tgz#8183132ea13a09821e9c93962ed49f240cdcfd3f" + integrity sha512-b3qKHQ3MLqOgSS+FRYKapNkJZf5EQzuf6+RLiq1/IlTHw99YrZ2NJZLk4hQIzTnnIkRg2LUqyVinu6YWWpUYew== + react-resizable@^3.0.4, react-resizable@^3.0.5: version "3.0.5" resolved "https://registry.npmmirror.com/react-resizable/-/react-resizable-3.0.5.tgz#362721f2efbd094976f1780ae13f1ad7739786c1" @@ -22779,20 +26905,20 @@ react-resizable@^3.0.4, react-resizable@^3.0.5: prop-types "15.x" react-draggable "^4.0.3" -react-router-dom@^6.3.0: - version "6.21.3" - resolved "https://registry.npmmirror.com/react-router-dom/-/react-router-dom-6.21.3.tgz#ef3a7956a3699c7b82c21fcb3dbc63c313ed8c5d" - integrity sha512-kNzubk7n4YHSrErzjLK72j0B5i969GsuCGazRl3G6j1zqZBLjuSlYBdVdkDOgzGdPIffUOc9nmgiadTEVoq91g== +react-router-dom@^6.3.0, react-router-dom@^6.30.2: + version "6.30.3" + resolved "https://registry.yarnpkg.com/react-router-dom/-/react-router-dom-6.30.3.tgz#42ae6dc4c7158bfb0b935f162b9621b29dddf740" + integrity sha512-pxPcv1AczD4vso7G4Z3TKcvlxK7g7TNt3/FNGMhfqyntocvYKj+GCatfigGDjbLozC4baguJ0ReCigoDJXb0ag== dependencies: - "@remix-run/router" "1.14.2" - react-router "6.21.3" + "@remix-run/router" "1.23.2" + react-router "6.30.3" -react-router@6.21.3, react-router@^6.3.0: - version "6.21.3" - resolved "https://registry.npmmirror.com/react-router/-/react-router-6.21.3.tgz#8086cea922c2bfebbb49c6594967418f1f167d70" - integrity sha512-a0H638ZXULv1OdkmiK6s6itNhoy33ywxmUFT/xtSoVyf9VnC7n7+VT4LjVzdIHSaF5TIh9ylUgxMXksHTgGrKg== +react-router@6.30.3, react-router@^6.30.2: + version "6.30.3" + resolved "https://registry.yarnpkg.com/react-router/-/react-router-6.30.3.tgz#994b3ccdbe0e81fe84d4f998100f62584dfbf1cf" + integrity sha512-XRnlbKMTmktBkjCLE8/XcZFlnHvr2Ltdr1eJX4idL55/9BbORzyZEaIkBFDhFGCEWBBItsVrDxwx3gnisMitdw== dependencies: - "@remix-run/router" "1.14.2" + "@remix-run/router" "1.23.2" react-side-effect@^2.1.0: version "2.1.2" @@ -22806,6 +26932,18 @@ react-sparklines@^1.7.0: dependencies: prop-types "^15.5.10" +react-stately@3.46.0, react-stately@^3.45.0, react-stately@~3.46.0: + version "3.46.0" + resolved "https://registry.yarnpkg.com/react-stately/-/react-stately-3.46.0.tgz#9ce293b765c246c398a1765d6290acd0a77caa49" + integrity sha512-OdxhWvHgs2L4OJGIs7hnuTr5WjjMM6enhNEAMRqiekhF8+ITvA2LRwNftOZwcogaoCslGYq5S2VQTQwnm0GbCA== + dependencies: + "@internationalized/date" "^3.12.1" + "@internationalized/number" "^3.6.6" + "@internationalized/string" "^3.2.8" + "@react-types/shared" "^3.34.0" + "@swc/helpers" "^0.5.0" + use-sync-external-store "^1.6.0" + react-style-singleton@^2.2.1: version "2.2.1" resolved "https://registry.npmmirror.com/react-style-singleton/-/react-style-singleton-2.2.1.tgz#f99e420492b2d8f34d38308ff660b60d0b1205b4" @@ -22815,7 +26953,7 @@ react-style-singleton@^2.2.1: invariant "^2.2.4" tslib "^2.0.0" -react-syntax-highlighter@^15.4.5, react-syntax-highlighter@^15.5.0: +react-syntax-highlighter@^15.4.5: version "15.5.0" resolved "https://registry.npmmirror.com/react-syntax-highlighter/-/react-syntax-highlighter-15.5.0.tgz#4b3eccc2325fa2ec8eff1e2d6c18fa4a9e07ab20" integrity sha512-+zq2myprEnQmH5yw6Gqc8lD55QHnpKaU8TOcFeC/Lg/MQSs8UknEA0JC4nTZGFAXC2J2Hyj/ijJ7NlabyPi2gg== @@ -22826,12 +26964,38 @@ react-syntax-highlighter@^15.4.5, react-syntax-highlighter@^15.5.0: prismjs "^1.27.0" refractor "^3.6.0" -react-text-truncate@^0.19.0: - version "0.19.0" - resolved "https://registry.npmmirror.com/react-text-truncate/-/react-text-truncate-0.19.0.tgz#60bc5ecf29a03ebc256f31f90a2d8402176aac91" - integrity sha512-QxHpZABfGG0Z3WEYbRTZ+rXdZn50Zvp+sWZXgVAd7FCKAMzv/kcwctTpNmWgXDTpAoHhMjOVwmgRtX3x5yeF4w== +react-syntax-highlighter@^15.6.1: + version "15.6.6" + resolved "https://registry.yarnpkg.com/react-syntax-highlighter/-/react-syntax-highlighter-15.6.6.tgz#77417c81ebdc554300d0332800a2e1efe5b1190b" + integrity sha512-DgXrc+AZF47+HvAPEmn7Ua/1p10jNoVZVI/LoPiYdtY+OM+/nG5yefLHKJwdKqY1adMuHFbeyBaG9j64ML7vTw== dependencies: - prop-types "^15.5.7" + "@babel/runtime" "^7.3.1" + highlight.js "^10.4.1" + highlightjs-vue "^1.0.0" + lowlight "^1.17.0" + prismjs "^1.30.0" + refractor "^3.6.0" + +react-syntax-highlighter@^16.0.0: + version "16.1.1" + resolved "https://registry.yarnpkg.com/react-syntax-highlighter/-/react-syntax-highlighter-16.1.1.tgz#928459855d375f5cfc8e646071e20d541cebcb52" + integrity sha512-PjVawBGy80C6YbC5DDZJeUjBmC7skaoEUdvfFQediQHgCL7aKyVHe57SaJGfQsloGDac+gCpTfRdtxzWWKmCXA== + dependencies: + "@babel/runtime" "^7.28.4" + highlight.js "^10.4.1" + highlightjs-vue "^1.0.0" + lowlight "^1.17.0" + prismjs "^1.30.0" + refractor "^5.0.0" + +react-textarea-autosize@^8.3.2: + version "8.5.9" + resolved "https://registry.yarnpkg.com/react-textarea-autosize/-/react-textarea-autosize-8.5.9.tgz#ab8627b09aa04d8a2f45d5b5cd94c84d1d4a8893" + integrity sha512-U1DGlIQN5AwgjTyOEnI1oCcMuEr1pv1qOtklB2l4nyMGbHzWrI0eFsYK0zos2YWqAolJyG0IWJaqWmWj5ETh0A== + dependencies: + "@babel/runtime" "^7.20.13" + use-composed-ref "^1.3.0" + use-latest "^1.2.1" react-transition-group@^4.0.0, react-transition-group@^4.4.0, react-transition-group@^4.4.5: version "4.4.5" @@ -22868,6 +27032,26 @@ react-use@^17.2.4, react-use@^17.3.2, react-use@^17.4.0: ts-easing "^0.2.0" tslib "^2.1.0" +react-use@^17.6.0: + version "17.6.0" + resolved "https://registry.yarnpkg.com/react-use/-/react-use-17.6.0.tgz#2101a3a79dc965a25866b21f5d6de4b128488a14" + integrity sha512-OmedEScUMKFfzn1Ir8dBxiLLSOzhKe/dPZwVxcujweSj45aNM7BEGPb9BEVIgVEqEXx6f3/TsXzwIktNgUR02g== + dependencies: + "@types/js-cookie" "^2.2.6" + "@xobotyi/scrollbar-width" "^1.9.5" + copy-to-clipboard "^3.3.1" + fast-deep-equal "^3.1.3" + fast-shallow-equal "^1.0.0" + js-cookie "^2.2.1" + nano-css "^5.6.2" + react-universal-interface "^0.6.2" + resize-observer-polyfill "^1.5.1" + screenfull "^5.1.0" + set-harmonic-interval "^1.0.1" + throttle-debounce "^3.0.1" + ts-easing "^0.2.0" + tslib "^2.1.0" + react-virtualized-auto-sizer@^1.0.11: version "1.0.21" resolved "https://registry.npmmirror.com/react-virtualized-auto-sizer/-/react-virtualized-auto-sizer-1.0.21.tgz#c840bbc80a691aee030d090785b98142102013c5" @@ -22888,64 +27072,19 @@ react@^18.0.2: dependencies: loose-envify "^1.1.0" -read-cmd-shim@4.0.0: - version "4.0.0" - resolved "https://registry.npmmirror.com/read-cmd-shim/-/read-cmd-shim-4.0.0.tgz#640a08b473a49043e394ae0c7a34dd822c73b9bb" - integrity sha512-yILWifhaSEEytfXI76kB9xEEiG1AiozaCJZ83A87ytjRiN+jVibXjedjCRNjoZviinhG+4UkalO3mWTd8u5O0Q== - -read-package-json-fast@^3.0.0: - version "3.0.2" - resolved "https://registry.npmmirror.com/read-package-json-fast/-/read-package-json-fast-3.0.2.tgz#394908a9725dc7a5f14e70c8e7556dff1d2b1049" - integrity sha512-0J+Msgym3vrLOUB3hzQCuZHII0xkNGCtz/HJH9xZshwv9DbDwkw1KaE3gx/e2J5rpEY5rtOy6cyhKOPrkP7FZw== - dependencies: - json-parse-even-better-errors "^3.0.0" - npm-normalize-package-bin "^3.0.0" - -read-package-json@6.0.4, read-package-json@^6.0.0: - version "6.0.4" - resolved "https://registry.npmmirror.com/read-package-json/-/read-package-json-6.0.4.tgz#90318824ec456c287437ea79595f4c2854708836" - integrity sha512-AEtWXYfopBj2z5N5PbkAOeNHRPUg5q+Nen7QLxV8M2zJq1ym6/lCz3fYNTCXe19puu2d06jfHhrP7v/S2PtMMw== - dependencies: - glob "^10.2.2" - json-parse-even-better-errors "^3.0.0" - normalize-package-data "^5.0.0" - npm-normalize-package-bin "^3.0.0" - -read-pkg-up@^3.0.0: - version "3.0.0" - resolved "https://registry.npmmirror.com/read-pkg-up/-/read-pkg-up-3.0.0.tgz#3ed496685dba0f8fe118d0691dc51f4a1ff96f07" - integrity sha512-YFzFrVvpC6frF1sz8psoHDBGF7fLPc+llq/8NB43oagqWkx8ar5zYtsTORtOjw9W2RHLpWP+zTWwBvf1bCmcSw== - dependencies: - find-up "^2.0.0" - read-pkg "^3.0.0" - -read-pkg-up@^7.0.1: - version "7.0.1" - resolved "https://registry.npmmirror.com/read-pkg-up/-/read-pkg-up-7.0.1.tgz#f3a6135758459733ae2b95638056e1854e7ef507" - integrity sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg== - dependencies: - find-up "^4.1.0" - read-pkg "^5.2.0" - type-fest "^0.8.1" - -read-pkg@^3.0.0: - version "3.0.0" - resolved "https://registry.npmmirror.com/read-pkg/-/read-pkg-3.0.0.tgz#9cbc686978fee65d16c00e2b19c237fcf6e38389" - integrity sha512-BLq/cCO9two+lBgiTYNqD6GdtK8s4NpaWrl6/rCO9w0TUS8oJl7cmToOZfRYllKTISY6nt1U7jQ53brmKqY6BA== +read-cache@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/read-cache/-/read-cache-1.0.0.tgz#e664ef31161166c9751cdbe8dbcf86b5fb58f774" + integrity sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA== dependencies: - load-json-file "^4.0.0" - normalize-package-data "^2.3.2" - path-type "^3.0.0" + pify "^2.3.0" -read-pkg@^5.2.0: - version "5.2.0" - resolved "https://registry.npmmirror.com/read-pkg/-/read-pkg-5.2.0.tgz#7bf295438ca5a33e56cd30e053b34ee7250c93cc" - integrity sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg== +read-tls-client-hello@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/read-tls-client-hello/-/read-tls-client-hello-1.1.0.tgz#2e1694921b6b6e1c52cda61614859e2273db0bf0" + integrity sha512-htV8ph2jXGCVnKRwW12V1UQdfwC2jPFrDrk8Qh9P+4R/t/Jef/BNmfdX5jsxlcakUMPskwiPZT/enVbjRQqtGQ== dependencies: - "@types/normalize-package-data" "^2.4.0" - normalize-package-data "^2.5.0" - parse-json "^5.0.0" - type-fest "^0.6.0" + "@types/node" "*" read-yaml-file@^1.1.0: version "1.1.0" @@ -22957,14 +27096,7 @@ read-yaml-file@^1.1.0: pify "^4.0.1" strip-bom "^3.0.0" -read@^2.0.0: - version "2.1.0" - resolved "https://registry.npmmirror.com/read/-/read-2.1.0.tgz#69409372c54fe3381092bc363a00650b6ac37218" - integrity sha512-bvxi1QLJHcaywCAEsAk4DG3nVoqiY2Csps3qzWalhj5hFqRn1d/OixkFXtLO1PrgHUcAP0FNaSY/5GYNfENFFQ== - dependencies: - mute-stream "~1.0.0" - -readable-stream@3, readable-stream@^3.0.0, readable-stream@^3.0.2, readable-stream@^3.0.6, readable-stream@^3.1.1, readable-stream@^3.4.0, readable-stream@^3.5.0, readable-stream@^3.6.0, readable-stream@^3.6.2: +readable-stream@3, readable-stream@^3.0.0, readable-stream@^3.0.2, readable-stream@^3.0.6, readable-stream@^3.1.1, readable-stream@^3.4.0, readable-stream@^3.5.0, readable-stream@^3.6.0: version "3.6.2" resolved "https://registry.npmmirror.com/readable-stream/-/readable-stream-3.6.2.tgz#56a9b36ea965c00c5a93ef31eb111a0f11056967" integrity sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA== @@ -22973,7 +27105,7 @@ readable-stream@3, readable-stream@^3.0.0, readable-stream@^3.0.2, readable-stre string_decoder "^1.1.1" util-deprecate "^1.0.1" -readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.5, readable-stream@^2.2.2, readable-stream@^2.3.3, readable-stream@^2.3.6, readable-stream@~2.3.6: +readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.5, readable-stream@^2.3.3, readable-stream@^2.3.8, readable-stream@~2.3.6: version "2.3.8" resolved "https://registry.npmmirror.com/readable-stream/-/readable-stream-2.3.8.tgz#91125e8042bba1b9887f49345f6277027ce8be9b" integrity sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA== @@ -22986,6 +27118,17 @@ readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.5, readable string_decoder "~1.1.1" util-deprecate "~1.0.1" +readable-stream@^4.0.0: + version "4.7.0" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-4.7.0.tgz#cedbd8a1146c13dfff8dab14068028d58c15ac91" + integrity sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg== + dependencies: + abort-controller "^3.0.0" + buffer "^6.0.3" + events "^3.3.0" + process "^0.11.10" + string_decoder "^1.3.0" + readable-web-to-node-stream@^3.0.0: version "3.0.2" resolved "https://registry.npmmirror.com/readable-web-to-node-stream/-/readable-web-to-node-stream-3.0.2.tgz#5d52bb5df7b54861fd48d015e93a2cb87b3ee0bb" @@ -23058,17 +27201,19 @@ redux@^5.0.1: resolved "https://registry.npmmirror.com/redux/-/redux-5.0.1.tgz#97fa26881ce5746500125585d5642c77b6e9447b" integrity sha512-M9/ELqF6fy8FwmkpnF0S3YKOqMyoWJ4+CS5Efg2ct3oY9daQvd/Pc71FpGZsVsbl3Cpb+IIcjBDUnnyBdQbq4w== -reflect.getprototypeof@^1.0.4: - version "1.0.4" - resolved "https://registry.npmmirror.com/reflect.getprototypeof/-/reflect.getprototypeof-1.0.4.tgz#aaccbf41aca3821b87bb71d9dcbc7ad0ba50a3f3" - integrity sha512-ECkTw8TmJwW60lOTR+ZkODISW6RQ8+2CL3COqtiJKLd6MmB45hN51HprHFziKLGkAuTGQhBb91V8cy+KHlaCjw== +reflect.getprototypeof@^1.0.6, reflect.getprototypeof@^1.0.9: + version "1.0.10" + resolved "https://registry.yarnpkg.com/reflect.getprototypeof/-/reflect.getprototypeof-1.0.10.tgz#c629219e78a3316d8b604c765ef68996964e7bf9" + integrity sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw== dependencies: - call-bind "^1.0.2" - define-properties "^1.2.0" - es-abstract "^1.22.1" - get-intrinsic "^1.2.1" - globalthis "^1.0.3" - which-builtin-type "^1.1.3" + call-bind "^1.0.8" + define-properties "^1.2.1" + es-abstract "^1.23.9" + es-errors "^1.3.0" + es-object-atoms "^1.0.0" + get-intrinsic "^1.2.7" + get-proto "^1.0.1" + which-builtin-type "^1.2.1" refractor@^3.6.0: version "3.6.0" @@ -23079,17 +27224,15 @@ refractor@^3.6.0: parse-entities "^2.0.0" prismjs "~1.27.0" -regenerate-unicode-properties@^10.1.0: - version "10.1.1" - resolved "https://registry.npmmirror.com/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.1.tgz#6b0e05489d9076b04c436f318d9b067bba459480" - integrity sha512-X007RyZLsCJVVrjgEFVpLUTZwyOZk3oiL75ZcuYjlIWd6rNJtOjkBwQc5AsRrpbKVkxN6sklw/k/9m2jJYOf8Q== +refractor@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/refractor/-/refractor-5.0.0.tgz#85daf0448a6d947f5361796eb22c31733d61d904" + integrity sha512-QXOrHQF5jOpjjLfiNk5GFnWhRXvxjUVnlFxkeDmewR5sXkr3iM46Zo+CnRR8B+MDVqkULW4EcLVcRBNOPXHosw== dependencies: - regenerate "^1.4.2" - -regenerate@^1.4.2: - version "1.4.2" - resolved "https://registry.npmmirror.com/regenerate/-/regenerate-1.4.2.tgz#b9346d8827e8f5a32f7ba29637d398b69014848a" - integrity sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A== + "@types/hast" "^3.0.0" + "@types/prismjs" "^1.0.0" + hastscript "^9.0.0" + parse-entities "^4.0.0" regenerator-runtime@^0.10.5: version "0.10.5" @@ -23106,14 +27249,7 @@ regenerator-runtime@^0.14.0: resolved "https://registry.npmmirror.com/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz#356ade10263f685dda125100cd862c1db895327f" integrity sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw== -regenerator-transform@^0.15.2: - version "0.15.2" - resolved "https://registry.npmmirror.com/regenerator-transform/-/regenerator-transform-0.15.2.tgz#5bbae58b522098ebdf09bca2f83838929001c7a4" - integrity sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg== - dependencies: - "@babel/runtime" "^7.8.4" - -regexp.prototype.flags@^1.5.0, regexp.prototype.flags@^1.5.1: +regexp.prototype.flags@^1.5.1: version "1.5.1" resolved "https://registry.npmmirror.com/regexp.prototype.flags/-/regexp.prototype.flags-1.5.1.tgz#90ce989138db209f81492edd734183ce99f9677e" integrity sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg== @@ -23122,24 +27258,35 @@ regexp.prototype.flags@^1.5.0, regexp.prototype.flags@^1.5.1: define-properties "^1.2.0" set-function-name "^2.0.0" -regexpu-core@^5.3.1: - version "5.3.2" - resolved "https://registry.npmmirror.com/regexpu-core/-/regexpu-core-5.3.2.tgz#11a2b06884f3527aec3e93dbbf4a3b958a95546b" - integrity sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ== +regexp.prototype.flags@^1.5.3, regexp.prototype.flags@^1.5.4: + version "1.5.4" + resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.5.4.tgz#1ad6c62d44a259007e55b3970e00f746efbcaa19" + integrity sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA== dependencies: - "@babel/regjsgen" "^0.8.0" - regenerate "^1.4.2" - regenerate-unicode-properties "^10.1.0" - regjsparser "^0.9.1" - unicode-match-property-ecmascript "^2.0.0" - unicode-match-property-value-ecmascript "^2.1.0" + call-bind "^1.0.8" + define-properties "^1.2.1" + es-errors "^1.3.0" + get-proto "^1.0.1" + gopd "^1.2.0" + set-function-name "^2.0.2" -regjsparser@^0.9.1: - version "0.9.1" - resolved "https://registry.npmmirror.com/regjsparser/-/regjsparser-0.9.1.tgz#272d05aa10c7c1f67095b1ff0addae8442fc5709" - integrity sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ== +rehype-raw@^6.0.0: + version "6.1.1" + resolved "https://registry.yarnpkg.com/rehype-raw/-/rehype-raw-6.1.1.tgz#81bbef3793bd7abacc6bf8335879d1b6c868c9d4" + integrity sha512-d6AKtisSRtDRX4aSPsJGTfnzrX2ZkHQLE5kiUuGOeEoLpbEulFF4hj0mLPbsa+7vmguDKOVVEQdHKDSwoaIDsQ== + dependencies: + "@types/hast" "^2.0.0" + hast-util-raw "^7.2.0" + unified "^10.0.0" + +rehype-sanitize@^5.0.0: + version "5.0.1" + resolved "https://registry.yarnpkg.com/rehype-sanitize/-/rehype-sanitize-5.0.1.tgz#dac01a7417bdd329260c74c74449697b4be5eb56" + integrity sha512-da/jIOjq8eYt/1r9GN6GwxIR3gde7OZ+WV8pheu1tL8K0D9KxM2AyMh+UEfke+FfdM3PvGHeYJU0Td5OWa7L5A== dependencies: - jsesc "~0.5.0" + "@types/hast" "^2.0.0" + hast-util-sanitize "^4.0.0" + unified "^10.0.0" relateurl@^0.2.7: version "0.2.7" @@ -23183,11 +27330,6 @@ remarkable@^2.0.1: argparse "^1.0.10" autolinker "^3.11.0" -remove-trailing-separator@^1.0.1: - version "1.1.0" - resolved "https://registry.npmmirror.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef" - integrity sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw== - renderkid@^3.0.0: version "3.0.0" resolved "https://registry.npmmirror.com/renderkid/-/renderkid-3.0.0.tgz#5fd823e4d6951d37358ecc9a58b1f06836b6268a" @@ -23213,9 +27355,9 @@ replace-in-file@^7.1.0: glob "^8.1.0" yargs "^17.7.2" -request@^2.88.0: +request@^2.88.0, request@^2.88.2: version "2.88.2" - resolved "https://registry.npmmirror.com/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3" + resolved "https://registry.yarnpkg.com/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3" integrity sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw== dependencies: aws-sign2 "~0.7.0" @@ -23254,24 +27396,24 @@ requires-port@^1.0.0: resolved "https://registry.npmmirror.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" integrity sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ== -reselect@^5.1.0: - version "5.1.0" - resolved "https://registry.npmmirror.com/reselect/-/reselect-5.1.0.tgz#c479139ab9dd91be4d9c764a7f3868210ef8cd21" - integrity sha512-aw7jcGLDpSgNDyWBQLv2cedml85qd95/iszJjN988zX1t7AVRJi19d9kto5+W7oCfQ94gyo40dVbT6g2k4/kXg== +reselect@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/reselect/-/reselect-5.1.1.tgz#c766b1eb5d558291e5e550298adb0becc24bb72e" + integrity sha512-K/BG6eIky/SBpzfHZv/dd+9JBFiS4SWV7FIujVyJRux6e45+73RaUHXLmIR1f7WOMaQ0U1km6qwklRQxpJJY0w== resize-observer-polyfill@^1.5.1: version "1.5.1" resolved "https://registry.npmmirror.com/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz#0e9020dd3d21024458d4ebd27e23e40269810464" integrity sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg== -resolve-alpn@^1.0.0: +resolve-alpn@^1.2.0: version "1.2.1" - resolved "https://registry.npmmirror.com/resolve-alpn/-/resolve-alpn-1.2.1.tgz#b7adbdac3546aaaec20b45e7d8265927072726f9" + resolved "https://registry.yarnpkg.com/resolve-alpn/-/resolve-alpn-1.2.1.tgz#b7adbdac3546aaaec20b45e7d8265927072726f9" integrity sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g== resolve-cwd@^3.0.0: version "3.0.0" - resolved "https://registry.npmmirror.com/resolve-cwd/-/resolve-cwd-3.0.0.tgz#0f0075f1bb2544766cf73ba6a6e2adfebcb13f2d" + resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-3.0.0.tgz#0f0075f1bb2544766cf73ba6a6e2adfebcb13f2d" integrity sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg== dependencies: resolve-from "^5.0.0" @@ -23284,27 +27426,27 @@ resolve-dir@^1.0.0, resolve-dir@^1.0.1: expand-tilde "^2.0.0" global-modules "^1.0.0" -resolve-from@5.0.0, resolve-from@^5.0.0: - version "5.0.0" - resolved "https://registry.npmmirror.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" - integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== - resolve-from@^4.0.0: version "4.0.0" resolved "https://registry.npmmirror.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== +resolve-from@^5.0.0: + version "5.0.0" + resolved "https://registry.npmmirror.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" + integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== + resolve-pkg-maps@^1.0.0: version "1.0.0" resolved "https://registry.npmmirror.com/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz#616b3dc2c57056b5588c31cdf4b3d64db133720f" integrity sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw== resolve.exports@^2.0.0: - version "2.0.2" - resolved "https://registry.npmmirror.com/resolve.exports/-/resolve.exports-2.0.2.tgz#f8c934b8e6a13f539e38b7098e2e36134f01e800" - integrity sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg== + version "2.0.3" + resolved "https://registry.yarnpkg.com/resolve.exports/-/resolve.exports-2.0.3.tgz#41955e6f1b4013b7586f873749a635dea07ebe3f" + integrity sha512-OcXjMsGdhL4XnbShKpAcSqPMzQoYkYyhbEaeSko47MjRP9NfEQMhZkXL1DoFlt9LWQn4YttrdnV6X2OiyzBi+A== -resolve@1.22.8, resolve@^1.10.0, resolve@^1.14.2, resolve@^1.19.0, resolve@^1.20.0, resolve@^1.22.1, resolve@^1.22.4: +resolve@1.22.8, resolve@^1.19.0, resolve@^1.20.0, resolve@^1.22.1, resolve@^1.22.4: version "1.22.8" resolved "https://registry.npmmirror.com/resolve/-/resolve-1.22.8.tgz#b6c87a9f2aa06dfab52e3d70ac8cde321fa5a48d" integrity sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw== @@ -23313,21 +27455,27 @@ resolve@1.22.8, resolve@^1.10.0, resolve@^1.14.2, resolve@^1.19.0, resolve@^1.20 path-parse "^1.0.7" supports-preserve-symlinks-flag "^1.0.0" -resolve@^2.0.0-next.4: - version "2.0.0-next.5" - resolved "https://registry.npmmirror.com/resolve/-/resolve-2.0.0-next.5.tgz#6b0ec3107e671e52b68cd068ef327173b90dc03c" - integrity sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA== +resolve@^1.1.7, resolve@^1.17.0: + version "1.22.12" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.12.tgz#f5b2a680897c69c238a13cd16b15671f8b73549f" + integrity sha512-TyeJ1zif53BPfHootBGwPRYT1RUt6oGWsaQr8UyZW/eAm9bKoijtvruSDEmZHm92CwS9nj7/fWttqPCgzep8CA== dependencies: - is-core-module "^2.13.0" + es-errors "^1.3.0" + is-core-module "^2.16.1" path-parse "^1.0.7" supports-preserve-symlinks-flag "^1.0.0" -responselike@^2.0.0: - version "2.0.1" - resolved "https://registry.npmmirror.com/responselike/-/responselike-2.0.1.tgz#9a0bc8fdc252f3fb1cca68b016591059ba1422bc" - integrity sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw== +resolve@^2.0.0-next.5: + version "2.0.0-next.6" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-2.0.0-next.6.tgz#b3961812be69ace7b3bc35d5bf259434681294af" + integrity sha512-3JmVl5hMGtJ3kMmB3zi3DL25KfkCEyy3Tw7Gmw7z5w8M9WlwoPFnIvwChzu1+cF3iaK3sp18hhPz8ANeimdJfA== dependencies: - lowercase-keys "^2.0.0" + es-errors "^1.3.0" + is-core-module "^2.16.1" + node-exports-info "^1.6.0" + object-keys "^1.1.1" + path-parse "^1.0.7" + supports-preserve-symlinks-flag "^1.0.0" restore-cursor@^3.1.0: version "3.1.0" @@ -23388,27 +27536,13 @@ rifm@^0.7.0: dependencies: "@babel/runtime" "^7.3.1" -rimraf@^2.6.3: - version "2.7.1" - resolved "https://registry.npmmirror.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" - integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== - dependencies: - glob "^7.1.3" - -rimraf@^3.0.0, rimraf@^3.0.2: +rimraf@^3.0.2: version "3.0.2" resolved "https://registry.npmmirror.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== dependencies: glob "^7.1.3" -rimraf@^4.4.1: - version "4.4.1" - resolved "https://registry.npmmirror.com/rimraf/-/rimraf-4.4.1.tgz#bd33364f67021c5b79e93d7f4fa0568c7c21b755" - integrity sha512-Gk8NlF062+T9CqNGn6h4tls3k6T1+/nXdOcSZVikNVtlRdYpA7wRJJMoXmuvOnLW844rPjdQ7JgXCYM6PPC/og== - dependencies: - glob "^9.2.0" - rimraf@^5.0.5: version "5.0.7" resolved "https://registry.npmmirror.com/rimraf/-/rimraf-5.0.7.tgz#27bddf202e7d89cb2e0381656380d1734a854a74" @@ -23424,6 +27558,14 @@ ripemd160@^2.0.0, ripemd160@^2.0.1: hash-base "^3.0.0" inherits "^2.0.1" +ripemd160@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.3.tgz#9be54e4ba5e3559c8eee06a25cd7648bbccdf5a8" + integrity sha512-5Di9UC0+8h1L6ZD2d7awM7E/T4uA1fJRlx6zk/NvdCCVEoAnFqvHmCuNeIKoCeIixBX/q8uM+6ycDvF8woqosA== + dependencies: + hash-base "^3.1.2" + inherits "^2.0.4" + roarr@^2.15.3: version "2.15.4" resolved "https://registry.npmmirror.com/roarr/-/roarr-2.15.4.tgz#f5fe795b7b838ccfe35dc608e0282b9eba2e7afd" @@ -23481,29 +27623,38 @@ rollup-pluginutils@^2.8.2: dependencies: estree-walker "^0.6.1" -rollup@^4.0.0: - version "4.18.0" - resolved "https://registry.npmmirror.com/rollup/-/rollup-4.18.0.tgz#497f60f0c5308e4602cf41136339fbf87d5f5dda" - integrity sha512-QmJz14PX3rzbJCN1SG4Xe/bAAX2a6NpCP8ab2vfu2GiUr8AQcr2nCV/oEO3yneFarB67zk8ShlIyWb2LGTb3Sg== +rollup@^4.27.3, rollup@^4.59.0: + version "4.60.2" + resolved "https://registry.yarnpkg.com/rollup/-/rollup-4.60.2.tgz#ac23fe4bd530304cef9fa61e639d7098b6762cf4" + integrity sha512-J9qZyW++QK/09NyN/zeO0dG/1GdGfyp9lV8ajHnRVLfo/uFsbji5mHnDgn/qYdUHyCkM2N+8VyspgZclfAh0eQ== dependencies: - "@types/estree" "1.0.5" + "@types/estree" "1.0.8" optionalDependencies: - "@rollup/rollup-android-arm-eabi" "4.18.0" - "@rollup/rollup-android-arm64" "4.18.0" - "@rollup/rollup-darwin-arm64" "4.18.0" - "@rollup/rollup-darwin-x64" "4.18.0" - "@rollup/rollup-linux-arm-gnueabihf" "4.18.0" - "@rollup/rollup-linux-arm-musleabihf" "4.18.0" - "@rollup/rollup-linux-arm64-gnu" "4.18.0" - "@rollup/rollup-linux-arm64-musl" "4.18.0" - "@rollup/rollup-linux-powerpc64le-gnu" "4.18.0" - "@rollup/rollup-linux-riscv64-gnu" "4.18.0" - "@rollup/rollup-linux-s390x-gnu" "4.18.0" - "@rollup/rollup-linux-x64-gnu" "4.18.0" - "@rollup/rollup-linux-x64-musl" "4.18.0" - "@rollup/rollup-win32-arm64-msvc" "4.18.0" - "@rollup/rollup-win32-ia32-msvc" "4.18.0" - "@rollup/rollup-win32-x64-msvc" "4.18.0" + "@rollup/rollup-android-arm-eabi" "4.60.2" + "@rollup/rollup-android-arm64" "4.60.2" + "@rollup/rollup-darwin-arm64" "4.60.2" + "@rollup/rollup-darwin-x64" "4.60.2" + "@rollup/rollup-freebsd-arm64" "4.60.2" + "@rollup/rollup-freebsd-x64" "4.60.2" + "@rollup/rollup-linux-arm-gnueabihf" "4.60.2" + "@rollup/rollup-linux-arm-musleabihf" "4.60.2" + "@rollup/rollup-linux-arm64-gnu" "4.60.2" + "@rollup/rollup-linux-arm64-musl" "4.60.2" + "@rollup/rollup-linux-loong64-gnu" "4.60.2" + "@rollup/rollup-linux-loong64-musl" "4.60.2" + "@rollup/rollup-linux-ppc64-gnu" "4.60.2" + "@rollup/rollup-linux-ppc64-musl" "4.60.2" + "@rollup/rollup-linux-riscv64-gnu" "4.60.2" + "@rollup/rollup-linux-riscv64-musl" "4.60.2" + "@rollup/rollup-linux-s390x-gnu" "4.60.2" + "@rollup/rollup-linux-x64-gnu" "4.60.2" + "@rollup/rollup-linux-x64-musl" "4.60.2" + "@rollup/rollup-openbsd-x64" "4.60.2" + "@rollup/rollup-openharmony-arm64" "4.60.2" + "@rollup/rollup-win32-arm64-msvc" "4.60.2" + "@rollup/rollup-win32-ia32-msvc" "4.60.2" + "@rollup/rollup-win32-x64-gnu" "4.60.2" + "@rollup/rollup-win32-x64-msvc" "4.60.2" fsevents "~2.3.2" rtl-css-js@^1.16.1: @@ -23530,11 +27681,6 @@ run-parallel@^1.1.9: dependencies: queue-microtask "^1.2.2" -run-script-webpack-plugin@^0.2.0: - version "0.2.0" - resolved "https://registry.npmmirror.com/run-script-webpack-plugin/-/run-script-webpack-plugin-0.2.0.tgz#45bfdd4e11345c8619eabaef8113c2a4f26dc653" - integrity sha512-SVNNq4jxzjfnaW+HkdTlyH1CWwCuSb/weYfic0D7Y/KnhY27YRYkzgybdzTDEPJlpQ73FDCRDbyBFwNsJMmwWQ== - rxjs@^7.5.5, rxjs@^7.8.1: version "7.8.1" resolved "https://registry.npmmirror.com/rxjs/-/rxjs-7.8.1.tgz#6f6f3d99ea8044291efd92e7c7fcf562c4057543" @@ -23549,6 +27695,11 @@ sade@^1.7.3: dependencies: mri "^1.1.0" +safari-14-idb-fix@^1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/safari-14-idb-fix/-/safari-14-idb-fix-1.0.6.tgz#cbaabc33a4500c44b5c432d6c525b0ed9b68bb65" + integrity sha512-oTEQOdMwRX+uCtWCKT1nx2gAeSdpr8elg/2gcaKUH00SJU2xWESfkx11nmXwTRHy7xfQoj1o4TTQvdmuBosTnA== + safe-array-concat@^1.0.1: version "1.1.0" resolved "https://registry.npmmirror.com/safe-array-concat/-/safe-array-concat-1.1.0.tgz#8d0cae9cb806d6d1c06e08ab13d847293ebe0692" @@ -23559,6 +27710,17 @@ safe-array-concat@^1.0.1: has-symbols "^1.0.3" isarray "^2.0.5" +safe-array-concat@^1.1.3: + version "1.1.4" + resolved "https://registry.yarnpkg.com/safe-array-concat/-/safe-array-concat-1.1.4.tgz#a54cc9b61a57f33b42abad3cbdda3a2b38cc5719" + integrity sha512-wtZlHyOje6OZTGqAoaDKxFkgRtkF9CnHAVnCHKfuj200wAgL+bSJhdsCD2l0Qx/2ekEXjPWcyKkfGb5CPboslg== + dependencies: + call-bind "^1.0.9" + call-bound "^1.0.4" + get-intrinsic "^1.3.0" + has-symbols "^1.1.0" + isarray "^2.0.5" + safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: version "5.1.2" resolved "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" @@ -23574,6 +27736,14 @@ safe-identifier@^0.4.2: resolved "https://registry.npmmirror.com/safe-identifier/-/safe-identifier-0.4.2.tgz#cf6bfca31c2897c588092d1750d30ef501d59fcb" integrity sha512-6pNbSMW6OhAi9j+N8V+U715yBQsaWJ7eyEUaOrawX+isg5ZxhUlV1NipNtgaKHmFGiABwt+ZF04Ii+3Xjkg+8w== +safe-push-apply@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/safe-push-apply/-/safe-push-apply-1.0.0.tgz#01850e981c1602d398c85081f360e4e6d03d27f5" + integrity sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA== + dependencies: + es-errors "^1.3.0" + isarray "^2.0.5" + safe-regex-test@^1.0.0: version "1.0.2" resolved "https://registry.npmmirror.com/safe-regex-test/-/safe-regex-test-1.0.2.tgz#3ba32bdb3ea35f940ee87e5087c60ee786c3f6c5" @@ -23583,6 +27753,15 @@ safe-regex-test@^1.0.0: get-intrinsic "^1.2.2" is-regex "^1.1.4" +safe-regex-test@^1.0.3, safe-regex-test@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/safe-regex-test/-/safe-regex-test-1.1.0.tgz#7f87dfb67a3150782eaaf18583ff5d1711ac10c1" + integrity sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw== + dependencies: + call-bound "^1.0.2" + es-errors "^1.3.0" + is-regex "^1.2.1" + safe-stable-stringify@^1.1: version "1.1.1" resolved "https://registry.npmmirror.com/safe-stable-stringify/-/safe-stable-stringify-1.1.1.tgz#c8a220ab525cd94e60ebf47ddc404d610dc5d84a" @@ -23603,13 +27782,6 @@ sax@>=0.6.0: resolved "https://registry.npmmirror.com/sax/-/sax-1.3.0.tgz#a5dbe77db3be05c9d1ee7785dbd3ea9de51593d0" integrity sha512-0s+oAmw9zLl1V1cS9BtZN7JAd0cW5e0QH4W3LWEK6a4LaLEA2OTpGYWDY+6XasBLtz6wkm3u1xRw95mRuJ59WA== -saxes@^5.0.1: - version "5.0.1" - resolved "https://registry.npmmirror.com/saxes/-/saxes-5.0.1.tgz#eebab953fa3b7608dbe94e5dadb15c888fa6696d" - integrity sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw== - dependencies: - xmlchars "^2.2.0" - saxes@^6.0.0: version "6.0.0" resolved "https://registry.npmmirror.com/saxes/-/saxes-6.0.0.tgz#fe5b4a4768df4f14a201b1ba6a65c1f3d9988cc5" @@ -23633,7 +27805,7 @@ schema-utils@2.7.0: ajv "^6.12.2" ajv-keywords "^3.4.1" -schema-utils@^3.0.0, schema-utils@^3.1.1, schema-utils@^3.2.0: +schema-utils@^3.0.0, schema-utils@^3.1.1: version "3.3.0" resolved "https://registry.npmmirror.com/schema-utils/-/schema-utils-3.3.0.tgz#f50a88877c3c01652a15b622ae9e9795df7a60fe" integrity sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg== @@ -23652,6 +27824,16 @@ schema-utils@^4.0.0, schema-utils@^4.2.0: ajv-formats "^2.1.1" ajv-keywords "^5.1.0" +schema-utils@^4.3.0, schema-utils@^4.3.3: + version "4.3.3" + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-4.3.3.tgz#5b1850912fa31df90716963d45d9121fdfc09f46" + integrity sha512-eflK8wEtyOE6+hsaRVPxvUKYCpRgzLqDTb8krvAsRIwOGlHoSgYLgBXoubGgLd2fT41/OUYdb48v4k4WWHQurA== + dependencies: + "@types/json-schema" "^7.0.9" + ajv "^8.9.0" + ajv-formats "^2.1.1" + ajv-keywords "^5.1.0" + schemes@^1.4.0: version "1.4.0" resolved "https://registry.npmmirror.com/schemes/-/schemes-1.4.0.tgz#9d03302275e562488dd3afa7b654ed42e00569ec" @@ -23664,6 +27846,11 @@ screenfull@^5.1.0: resolved "https://registry.npmmirror.com/screenfull/-/screenfull-5.2.0.tgz#6533d524d30621fc1283b9692146f3f13a93d1ba" integrity sha512-9BakfsO2aUQN2K9Fdbj87RJIEZ82Q9IGim7FqM5OsebfoFC6ZHXgDq/KvniuLTPdeM8wY2o6Dj3WQ7KeQCj3cA== +select-case@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/select-case/-/select-case-1.0.0.tgz#9f9bbc00b8261f19f62701917846d52eea4f6d97" + integrity sha512-YN35jnDPQyvPk84kUGhJWBVKRhtNn51byIXbznpC6tZpTCUz330w7WX2tT5A6+3rw+NXIdya7ZQHqxKXi1m25g== + select-hose@^2.0.0: version "2.0.0" resolved "https://registry.npmmirror.com/select-hose/-/select-hose-2.0.0.tgz#625d8658f865af43ec962bfc376a37359a4994ca" @@ -23682,30 +27869,33 @@ semver-compare@^1.0.0: resolved "https://registry.npmmirror.com/semver-compare/-/semver-compare-1.0.0.tgz#0dee216a1c941ab37e9efb1788f6afc5ff5537fc" integrity sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow== -"semver@2 || 3 || 4 || 5", semver@^5.6.0: +semver@7.6.3: + version "7.6.3" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.6.3.tgz#980f7b5550bc175fb4dc09403085627f9eb33143" + integrity sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A== + +semver@^5.0.1: version "5.7.2" - resolved "https://registry.npmmirror.com/semver/-/semver-5.7.2.tgz#48d55db737c3287cd4835e17fa13feace1c41ef8" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.2.tgz#48d55db737c3287cd4835e17fa13feace1c41ef8" integrity sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g== -semver@7.5.3: - version "7.5.3" - resolved "https://registry.npmmirror.com/semver/-/semver-7.5.3.tgz#161ce8c2c6b4b3bdca6caadc9fa3317a4c4fe88e" - integrity sha512-QBlUtyVk/5EeHbi7X0fw6liDZc7BBmEaSYn01fMU1OUYbf6GPsbTtd8WmnqbI20SeycoHSeiybkE/q1Q+qlThQ== - dependencies: - lru-cache "^6.0.0" - semver@^6.3.0, semver@^6.3.1: version "6.3.1" resolved "https://registry.npmmirror.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== -semver@^7.0.0, semver@^7.1.1, semver@^7.3.2, semver@^7.3.4, semver@^7.3.5, semver@^7.3.7, semver@^7.3.8, semver@^7.5.3, semver@^7.5.4: +semver@^7.3.2, semver@^7.3.5, semver@^7.3.8, semver@^7.5.3, semver@^7.5.4: version "7.5.4" resolved "https://registry.npmmirror.com/semver/-/semver-7.5.4.tgz#483986ec4ed38e1c6c48c34894a9182dbff68a6e" integrity sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA== dependencies: lru-cache "^6.0.0" +semver@^7.6.0, semver@^7.7.3: + version "7.7.4" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.7.4.tgz#28464e36060e991fa7a11d0279d2d3f3b57a7e8a" + integrity sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA== + send@0.18.0: version "0.18.0" resolved "https://registry.npmmirror.com/send/-/send-0.18.0.tgz#670167cc654b05f5aa4a767f9113bb371bc706be" @@ -23725,6 +27915,25 @@ send@0.18.0: range-parser "~1.2.1" statuses "2.0.1" +send@~0.19.0, send@~0.19.1: + version "0.19.2" + resolved "https://registry.yarnpkg.com/send/-/send-0.19.2.tgz#59bc0da1b4ea7ad42736fd642b1c4294e114ff29" + integrity sha512-VMbMxbDeehAxpOtWJXlcUS5E8iXh6QmN+BkRX1GARS3wRaXEEgzCcB10gTQazO42tpNIya8xIyNx8fll1OFPrg== + dependencies: + debug "2.6.9" + depd "2.0.0" + destroy "1.2.0" + encodeurl "~2.0.0" + escape-html "~1.0.3" + etag "~1.8.1" + fresh "~0.5.2" + http-errors "~2.0.1" + mime "1.6.0" + ms "2.1.3" + on-finished "~2.4.1" + range-parser "~1.2.1" + statuses "~2.0.2" + seq-queue@^0.0.5: version "0.0.5" resolved "https://registry.npmmirror.com/seq-queue/-/seq-queue-0.0.5.tgz#d56812e1c017a6e4e7c3e3a37a1da6d78dd3c93e" @@ -23744,13 +27953,6 @@ serialize-error@^8.0.1, serialize-error@^8.1.0: dependencies: type-fest "^0.20.2" -serialize-javascript@^6.0.1: - version "6.0.2" - resolved "https://registry.npmmirror.com/serialize-javascript/-/serialize-javascript-6.0.2.tgz#defa1e055c83bf6d59ea805d8da862254eb6a6c2" - integrity sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g== - dependencies: - randombytes "^2.1.0" - serve-index@^1.9.1: version "1.9.1" resolved "https://registry.npmmirror.com/serve-index/-/serve-index-1.9.1.tgz#d3768d69b1e7d82e5ce050fff5b453bea12a9239" @@ -23774,10 +27976,15 @@ serve-static@1.15.0: parseurl "~1.3.3" send "0.18.0" -set-blocking@^2.0.0: - version "2.0.0" - resolved "https://registry.npmmirror.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" - integrity sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw== +serve-static@~1.16.2: + version "1.16.3" + resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.16.3.tgz#a97b74d955778583f3862a4f0b841eb4d5d78cf9" + integrity sha512-x0RTqQel6g5SY7Lg6ZreMmsOzncHFU7nhnRWkKgWuMTu5NN0DR5oruckMqRvacAN9d5w6ARnRBXl9xhDCgfMeA== + dependencies: + encodeurl "~2.0.0" + escape-html "~1.0.3" + parseurl "~1.3.3" + send "~0.19.1" set-cookie-parser@^2.4.6: version "2.6.0" @@ -23795,7 +28002,7 @@ set-function-length@^1.1.1: gopd "^1.0.1" has-property-descriptors "^1.0.1" -set-function-length@^1.2.1: +set-function-length@^1.2.1, set-function-length@^1.2.2: version "1.2.2" resolved "https://registry.yarnpkg.com/set-function-length/-/set-function-length-1.2.2.tgz#aac72314198eaed975cf77b2c3b6b880695e5449" integrity sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg== @@ -23816,11 +28023,30 @@ set-function-name@^2.0.0, set-function-name@^2.0.1: functions-have-names "^1.2.3" has-property-descriptors "^1.0.0" +set-function-name@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/set-function-name/-/set-function-name-2.0.2.tgz#16a705c5a0dc2f5e638ca96d8a8cd4e1c2b90985" + integrity sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ== + dependencies: + define-data-property "^1.1.4" + es-errors "^1.3.0" + functions-have-names "^1.2.3" + has-property-descriptors "^1.0.2" + set-harmonic-interval@^1.0.1: version "1.0.1" resolved "https://registry.npmmirror.com/set-harmonic-interval/-/set-harmonic-interval-1.0.1.tgz#e1773705539cdfb80ce1c3d99e7f298bb3995249" integrity sha512-AhICkFV84tBP1aWqPwLZqFvAwqEoVA9kxNMniGEUvzOlm4vLmOFLiTT3UZ6bziJTy4bOVpzWGTfSCbmaayGx8g== +set-proto@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/set-proto/-/set-proto-1.0.0.tgz#0760dbcff30b2d7e801fd6e19983e56da337565e" + integrity sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw== + dependencies: + dunder-proto "^1.0.1" + es-errors "^1.3.0" + es-object-atoms "^1.0.0" + set-value@^4.1.0: version "4.1.0" resolved "https://registry.npmmirror.com/set-value/-/set-value-4.1.0.tgz#aa433662d87081b75ad88a4743bd450f044e7d09" @@ -23839,7 +28065,7 @@ setprototypeof@1.1.0: resolved "https://registry.npmmirror.com/setprototypeof/-/setprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656" integrity sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ== -setprototypeof@1.2.0: +setprototypeof@1.2.0, setprototypeof@~1.2.0: version "1.2.0" resolved "https://registry.npmmirror.com/setprototypeof/-/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424" integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw== @@ -23852,12 +28078,14 @@ sha.js@^2.4.0, sha.js@^2.4.11, sha.js@^2.4.8, sha.js@^2.4.9: inherits "^2.0.1" safe-buffer "^5.0.1" -shallow-clone@^3.0.0: - version "3.0.1" - resolved "https://registry.npmmirror.com/shallow-clone/-/shallow-clone-3.0.1.tgz#8f2981ad92531f55035b01fb230769a40e02efa3" - integrity sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA== +sha.js@^2.4.12: + version "2.4.12" + resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.12.tgz#eb8b568bf383dfd1867a32c3f2b74eb52bdbf23f" + integrity sha512-8LzC5+bvI45BjpfXU8V5fdU2mfeKiQe1D1gIMn7XUlF3OTUrpdJpPPH4EMAnF0DsHHdSZqCdSss5qCmJKuiO3w== dependencies: - kind-of "^6.0.2" + inherits "^2.0.4" + safe-buffer "^5.2.1" + to-buffer "^1.2.0" shebang-command@^2.0.0: version "2.0.0" @@ -23876,10 +28104,39 @@ shell-quote@^1.7.3, shell-quote@^1.8.1: resolved "https://registry.npmmirror.com/shell-quote/-/shell-quote-1.8.1.tgz#6dbf4db75515ad5bac63b4f1894c3a154c766680" integrity sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA== -short-unique-id@^5.0.2: - version "5.0.3" - resolved "https://registry.npmmirror.com/short-unique-id/-/short-unique-id-5.0.3.tgz#bc6975dc5e8b296960ff5ac91ddabbc7ddb693d9" - integrity sha512-yhniEILouC0s4lpH0h7rJsfylZdca10W9mDJRAFh3EpcSUanCHGb0R7kcFOIUCZYSAPo0PUD5ZxWQdW0T4xaug== +short-unique-id@^5.3.2: + version "5.3.2" + resolved "https://registry.yarnpkg.com/short-unique-id/-/short-unique-id-5.3.2.tgz#6fea1b8fcaac44455abd1fa25840ebdb9c0a8ae7" + integrity sha512-KRT/hufMSxXKEDSQujfVE0Faa/kZ51ihUcZQAcmP04t00DvPj7Ox5anHke1sJYUtzSuiT/Y5uyzg/W7bBEGhCg== + +side-channel-list@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/side-channel-list/-/side-channel-list-1.0.1.tgz#c2e0b5a14a540aebee3bbc6c3f8666cc9b509127" + integrity sha512-mjn/0bi/oUURjc5Xl7IaWi/OJJJumuoJFQJfDDyO46+hBWsfaVM65TBHq2eoZBhzl9EchxOijpkbRC8SVBQU0w== + dependencies: + es-errors "^1.3.0" + object-inspect "^1.13.4" + +side-channel-map@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/side-channel-map/-/side-channel-map-1.0.1.tgz#d6bb6b37902c6fef5174e5f533fab4c732a26f42" + integrity sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA== + dependencies: + call-bound "^1.0.2" + es-errors "^1.3.0" + get-intrinsic "^1.2.5" + object-inspect "^1.13.3" + +side-channel-weakmap@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz#11dda19d5368e40ce9ec2bdc1fb0ecbc0790ecea" + integrity sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A== + dependencies: + call-bound "^1.0.2" + es-errors "^1.3.0" + get-intrinsic "^1.2.5" + object-inspect "^1.13.3" + side-channel-map "^1.0.1" side-channel@^1.0.4: version "1.0.4" @@ -23900,7 +28157,18 @@ side-channel@^1.0.6: get-intrinsic "^1.2.4" object-inspect "^1.13.1" -signal-exit@3.0.7, signal-exit@^3.0.2, signal-exit@^3.0.3, signal-exit@^3.0.7: +side-channel@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.1.0.tgz#c3fcff9c4da932784873335ec9765fa94ff66bc9" + integrity sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw== + dependencies: + es-errors "^1.3.0" + object-inspect "^1.13.3" + side-channel-list "^1.0.0" + side-channel-map "^1.0.1" + side-channel-weakmap "^1.0.2" + +signal-exit@^3.0.2, signal-exit@^3.0.3, signal-exit@^3.0.7: version "3.0.7" resolved "https://registry.npmmirror.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== @@ -23910,17 +28178,6 @@ signal-exit@^4.0.1: resolved "https://registry.npmmirror.com/signal-exit/-/signal-exit-4.1.0.tgz#952188c1cbd546070e2dd20d0f41c0ae0530cb04" integrity sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw== -sigstore@^1.3.0, sigstore@^1.4.0: - version "1.9.0" - resolved "https://registry.npmmirror.com/sigstore/-/sigstore-1.9.0.tgz#1e7ad8933aa99b75c6898ddd0eeebc3eb0d59875" - integrity sha512-0Zjz0oe37d08VeOtBIuB6cRriqXse2e8w+7yIy2XSXjshRKxbc2KkhXjL229jXSxEm7UbcjS76wcJDGQddVI9A== - dependencies: - "@sigstore/bundle" "^1.1.0" - "@sigstore/protobuf-specs" "^0.2.0" - "@sigstore/sign" "^1.0.0" - "@sigstore/tuf" "^1.0.3" - make-fetch-happen "^11.0.1" - simple-concat@^1.0.0: version "1.0.1" resolved "https://registry.npmmirror.com/simple-concat/-/simple-concat-1.0.1.tgz#f46976082ba35c2263f1c8ab5edfe26c41c9552f" @@ -23954,16 +28211,18 @@ sisteransi@^1.0.5: resolved "https://registry.npmmirror.com/sisteransi/-/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed" integrity sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg== -slash@3.0.0, slash@^3.0.0: +skin-tone@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/skin-tone/-/skin-tone-2.0.0.tgz#4e3933ab45c0d4f4f781745d64b9f4c208e41237" + integrity sha512-kUMbT1oBJCpgrnKoSr0o6wPtvRWT9W9UKvGLwfJYO2WuahZRHOpEyL1ckyMGgMWh0UdpmaoFqKKD29WTomNEGA== + dependencies: + unicode-emoji-modifier-base "^1.0.0" + +slash@^3.0.0: version "3.0.0" resolved "https://registry.npmmirror.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== -slash@^2.0.0: - version "2.0.0" - resolved "https://registry.npmmirror.com/slash/-/slash-2.0.0.tgz#de552851a1759df3a8f206535442f5ec4ddeab44" - integrity sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A== - smart-buffer@^4.2.0: version "4.2.0" resolved "https://registry.npmmirror.com/smart-buffer/-/smart-buffer-4.2.0.tgz#6e1d71fa4f18c05f7d0ff216dd16a481d0e8d9ae" @@ -23994,6 +28253,15 @@ socks-proxy-agent@^7.0.0: debug "^4.3.3" socks "^2.6.2" +socks-proxy-agent@^8.0.3, socks-proxy-agent@^8.0.4, socks-proxy-agent@^8.0.5: + version "8.0.5" + resolved "https://registry.yarnpkg.com/socks-proxy-agent/-/socks-proxy-agent-8.0.5.tgz#b9cdb4e7e998509d7659d689ce7697ac21645bee" + integrity sha512-HehCEsotFqbPW9sJ8WVYB6UbmIMv7kUUORIF2Nncq4VQvBfNBLibW9YZR5dlYCSUhwcD628pRllm7n+E+YTzJw== + dependencies: + agent-base "^7.1.2" + debug "^4.3.4" + socks "^2.8.3" + socks@^2.6.2: version "2.7.1" resolved "https://registry.npmmirror.com/socks/-/socks-2.7.1.tgz#d8e651247178fde79c0663043e07240196857d55" @@ -24002,6 +28270,14 @@ socks@^2.6.2: ip "^2.0.0" smart-buffer "^4.2.0" +socks@^2.8.3: + version "2.8.7" + resolved "https://registry.yarnpkg.com/socks/-/socks-2.8.7.tgz#e2fb1d9a603add75050a2067db8c381a0b5669ea" + integrity sha512-HLpt+uLy/pxB+bum/9DzAgiKS8CX1EvbWxI4zlmgGCExImLdiad2iCwXT5Z4c9c3Eq8rP2318mPW2c+QbtjK8A== + dependencies: + ip-address "^10.0.1" + smart-buffer "^4.2.0" + sonic-boom@^0.7.5: version "0.7.7" resolved "https://registry.npmmirror.com/sonic-boom/-/sonic-boom-0.7.7.tgz#d921de887428208bfa07b0ae32c278de043f350a" @@ -24017,13 +28293,6 @@ sonic-forest@^1.0.0: dependencies: tree-dump "^1.0.0" -sort-keys@^2.0.0: - version "2.0.0" - resolved "https://registry.npmmirror.com/sort-keys/-/sort-keys-2.0.0.tgz#658535584861ec97d730d6cf41822e1f56684128" - integrity sha512-/dPCrG1s3ePpWm6yBbxZq5Be1dXGLyLn9Z791chDC3NFrpkVbWGzkBwPN1knaciexFXgRJ7hzdnwZ4stHSDmjg== - dependencies: - is-plain-obj "^1.0.0" - sorted-array-functions@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/sorted-array-functions/-/sorted-array-functions-1.3.0.tgz#8605695563294dffb2c9796d602bd8459f7a0dd5" @@ -24039,9 +28308,14 @@ source-map-js@^1.0.2: resolved "https://registry.npmmirror.com/source-map-js/-/source-map-js-1.0.2.tgz#adbc361d9c62df380125e7f161f71c826f1e490c" integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw== +source-map-js@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.2.1.tgz#1ce5650fddd87abc099eda37dcff024c2667ae46" + integrity sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA== + source-map-support@0.5.13: version "0.5.13" - resolved "https://registry.npmmirror.com/source-map-support/-/source-map-support-0.5.13.tgz#31b24a9c2e73c2de85066c0feb7d44767ed52932" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.13.tgz#31b24a9c2e73c2de85066c0feb7d44767ed52932" integrity sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w== dependencies: buffer-from "^1.0.0" @@ -24090,32 +28364,6 @@ spawn-command@0.0.2: resolved "https://registry.npmmirror.com/spawn-command/-/spawn-command-0.0.2.tgz#9544e1a43ca045f8531aac1a48cb29bdae62338e" integrity sha512-zC8zGoGkmc8J9ndvml8Xksr1Amk9qBujgbF0JAIWO7kXr43w0h/0GJNM/Vustixu+YE8N/MTrQ7N31FvHUACxQ== -spdx-correct@^3.0.0: - version "3.2.0" - resolved "https://registry.npmmirror.com/spdx-correct/-/spdx-correct-3.2.0.tgz#4f5ab0668f0059e34f9c00dce331784a12de4e9c" - integrity sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA== - dependencies: - spdx-expression-parse "^3.0.0" - spdx-license-ids "^3.0.0" - -spdx-exceptions@^2.1.0: - version "2.4.0" - resolved "https://registry.npmmirror.com/spdx-exceptions/-/spdx-exceptions-2.4.0.tgz#c07a4ede25b16e4f78e6707bbd84b15a45c19c1b" - integrity sha512-hcjppoJ68fhxA/cjbN4T8N6uCUejN8yFw69ttpqtBeCbF3u13n7mb31NB9jKwGTTWWnt9IbRA/mf1FprYS8wfw== - -spdx-expression-parse@^3.0.0: - version "3.0.1" - resolved "https://registry.npmmirror.com/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz#cf70f50482eefdc98e3ce0a6833e4a53ceeba679" - integrity sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q== - dependencies: - spdx-exceptions "^2.1.0" - spdx-license-ids "^3.0.0" - -spdx-license-ids@^3.0.0: - version "3.0.16" - resolved "https://registry.npmmirror.com/spdx-license-ids/-/spdx-license-ids-3.0.16.tgz#a14f64e0954f6e25cc6587bd4f392522db0d998f" - integrity sha512-eWN+LnM3GR6gPu35WxNgbGl8rmY1AEmoMDvL/QD6zYmPWgywxWqJWNdLGT+ke8dKNWrcYgYjPpG5gbTfghP8rw== - spdy-transport@^3.0.0: version "3.0.0" resolved "https://registry.npmmirror.com/spdy-transport/-/spdy-transport-3.0.0.tgz#00d4863a6400ad75df93361a1608605e5dcdcf31" @@ -24144,12 +28392,7 @@ split-ca@^1.0.1: resolved "https://registry.npmmirror.com/split-ca/-/split-ca-1.0.1.tgz#6c83aff3692fa61256e0cd197e05e9de157691a6" integrity sha512-Q5thBSxp5t8WPTTJQS59LrGqOZqOsrhDGDVm8azCqIBjSBd7nd9o2PM+mDulQQkh8h//4U6hFZnc/mul8t5pWQ== -split-on-first@^1.0.0: - version "1.1.0" - resolved "https://registry.npmmirror.com/split-on-first/-/split-on-first-1.1.0.tgz#f610afeee3b12bce1d0c30425e76398b78249a5f" - integrity sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw== - -split2@^3.0.0, split2@^3.2.2: +split2@^3.0.0: version "3.2.2" resolved "https://registry.npmmirror.com/split2/-/split2-3.2.2.tgz#bf2cf2a37d838312c249c89206fd7a17dd12365f" integrity sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg== @@ -24161,13 +28404,6 @@ split2@^4.1.0: resolved "https://registry.npmmirror.com/split2/-/split2-4.2.0.tgz#c9c5920904d148bab0b9f67145f245a86aadbfa4" integrity sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg== -split@^1.0.1: - version "1.0.1" - resolved "https://registry.npmmirror.com/split/-/split-1.0.1.tgz#605bd9be303aa59fb35f9229fbea0ddec9ea07d9" - integrity sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg== - dependencies: - through "2" - sprintf-js@^1.1.2: version "1.1.3" resolved "https://registry.npmmirror.com/sprintf-js/-/sprintf-js-1.1.3.tgz#4914b903a2f8b685d17fdf78a70e917e872e444a" @@ -24183,7 +28419,15 @@ sqlstring@^2.3.2: resolved "https://registry.npmmirror.com/sqlstring/-/sqlstring-2.3.3.tgz#2ddc21f03bce2c387ed60680e739922c65751d0c" integrity sha512-qC9iz2FlN7DQl3+wjwn3802RTyjCx7sDvfQEXchwa6CWOx07/WVfh91gBmQ9fahw8snwGEWU3xGzOt4tFyHLxg== -ssh2@^1.11.0, ssh2@^1.15.0: +ssh-remote-port-forward@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/ssh-remote-port-forward/-/ssh-remote-port-forward-1.0.4.tgz#72b0c5df8ec27ca300c75805cc6b266dee07e298" + integrity sha512-x0LV1eVDwjf1gmG7TTnfqIzf+3VPRz7vrNIjX6oYLbeCrf/PeVY6hkT68Mg+q02qXxQhrLjB0jfgvhevoCRmLQ== + dependencies: + "@types/ssh2" "^0.5.48" + ssh2 "^1.4.0" + +ssh2@^1.15.0: version "1.15.0" resolved "https://registry.npmmirror.com/ssh2/-/ssh2-1.15.0.tgz#2f998455036a7f89e0df5847efb5421748d9871b" integrity sha512-C0PHgX4h6lBxYx7hcXwu3QWdh4tg6tZZsTfXcdvc5caW/EMxaB4H9dWsl7qk+F7LAW762hp8VbXOX7x4xUYvEw== @@ -24194,6 +28438,17 @@ ssh2@^1.11.0, ssh2@^1.15.0: cpu-features "~0.0.9" nan "^2.18.0" +ssh2@^1.4.0: + version "1.17.0" + resolved "https://registry.yarnpkg.com/ssh2/-/ssh2-1.17.0.tgz#dc686e8e3abdbd4ad95d46fa139615903c12258c" + integrity sha512-wPldCk3asibAjQ/kziWQQt1Wh3PgDFpC0XpwclzKcdT1vql6KeYxf5LIt4nlFkUeR8WuphYMKqUA56X4rjbfgQ== + dependencies: + asn1 "^0.2.6" + bcrypt-pbkdf "^1.0.2" + optionalDependencies: + cpu-features "~0.0.10" + nan "^2.23.0" + sshpk@^1.7.0: version "1.18.0" resolved "https://registry.npmmirror.com/sshpk/-/sshpk-1.18.0.tgz#1663e55cddf4d688b86a46b77f0d5fe363aba028" @@ -24209,20 +28464,13 @@ sshpk@^1.7.0: safer-buffer "^2.0.2" tweetnacl "~0.14.0" -ssri@^10.0.0, ssri@^10.0.1: +ssri@^10.0.0: version "10.0.5" resolved "https://registry.npmmirror.com/ssri/-/ssri-10.0.5.tgz#e49efcd6e36385196cb515d3a2ad6c3f0265ef8c" integrity sha512-bSf16tAFkGeRlUNDjXu8FzaMQt6g2HZJrun7mtMbIPOddxt3GLMSz5VWUWcqTJUPfLEaDIepGxv+bYQW49596A== dependencies: minipass "^7.0.3" -ssri@^9.0.0, ssri@^9.0.1: - version "9.0.1" - resolved "https://registry.npmmirror.com/ssri/-/ssri-9.0.1.tgz#544d4c357a8d7b71a19700074b6883fcb4eae057" - integrity sha512-o57Wcn66jMQvfHG1FlYbWeZWW/dHZhJXjpIcTfXldXEk5nz5lStPo3mK0OJQfGR3RbZUlbISexbljkJzuEj/8Q== - dependencies: - minipass "^3.1.1" - stable@^0.1.8: version "0.1.8" resolved "https://registry.npmmirror.com/stable/-/stable-0.1.8.tgz#836eb3c8382fe2936feaf544631017ce7d47a3cf" @@ -24269,11 +28517,6 @@ stacktrace-js@^2.0.2: stack-generator "^2.0.5" stacktrace-gps "^3.0.4" -stampit@^4.3.2: - version "4.3.2" - resolved "https://registry.npmmirror.com/stampit/-/stampit-4.3.2.tgz#cfd3f607dd628a161ce6305621597994b4d56573" - integrity sha512-pE2org1+ZWQBnIxRPrBM2gVupkuDD0TTNIo1H6GdT/vO82NXli2z8lRE8cu/nBIHrcOCXFBAHpb9ZldrB2/qOA== - standard-as-callback@^2.1.0: version "2.1.0" resolved "https://registry.npmmirror.com/standard-as-callback/-/standard-as-callback-2.1.0.tgz#8953fc05359868a77b5b9739a665c5977bb7df45" @@ -24291,11 +28534,16 @@ statuses@2.0.1: resolved "https://registry.npmmirror.com/statuses/-/statuses-2.0.1.tgz#55cb000ccf1d48728bd23c685a063998cf1a1b63" integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ== -"statuses@>= 1.4.0 < 2", "statuses@>= 1.5.0 < 2", statuses@^1.5.0: +"statuses@>= 1.4.0 < 2", "statuses@>= 1.5.0 < 2", statuses@^1.5.0, statuses@~1.5.0: version "1.5.0" resolved "https://registry.npmmirror.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" integrity sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA== +statuses@^2.0.1, statuses@~2.0.1, statuses@~2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/statuses/-/statuses-2.0.2.tgz#8f75eecef765b5e1cfcdc080da59409ed424e382" + integrity sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw== + stop-iteration-iterator@^1.0.0: version "1.0.0" resolved "https://registry.npmmirror.com/stop-iteration-iterator/-/stop-iteration-iterator-1.0.0.tgz#6a60be0b4ee757d1ed5254858ec66b10c49285e4" @@ -24303,27 +28551,27 @@ stop-iteration-iterator@^1.0.0: dependencies: internal-slot "^1.0.4" +stop-iteration-iterator@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/stop-iteration-iterator/-/stop-iteration-iterator-1.1.0.tgz#f481ff70a548f6124d0312c3aa14cbfa7aa542ad" + integrity sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ== + dependencies: + es-errors "^1.3.0" + internal-slot "^1.1.0" + stoppable@^1.1.0: version "1.1.0" resolved "https://registry.npmmirror.com/stoppable/-/stoppable-1.1.0.tgz#32da568e83ea488b08e4d7ea2c3bcc9d75015d5b" integrity sha512-KXDYZ9dszj6bzvnEMRYvxgeTHU74QBFL54XKtP3nyMuJ81CFYtABZ3bAzL2EdFUaEwJOBOgENyFj3R7oTzDyyw== -stream-browserify@3.0.0: +stream-browserify@3.0.0, stream-browserify@^3.0.0: version "3.0.0" - resolved "https://registry.npmmirror.com/stream-browserify/-/stream-browserify-3.0.0.tgz#22b0a2850cdf6503e73085da1fc7b7d0c2122f2f" + resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-3.0.0.tgz#22b0a2850cdf6503e73085da1fc7b7d0c2122f2f" integrity sha512-H73RAHsVBapbim0tU2JwwOiXUj+fikfiaoYAKHF3VJfA0pe2BCzkhAHBlLG6REzE+2WNZcxOXjK7lkso+9euLA== dependencies: inherits "~2.0.4" readable-stream "^3.5.0" -stream-browserify@^2.0.1: - version "2.0.2" - resolved "https://registry.npmmirror.com/stream-browserify/-/stream-browserify-2.0.2.tgz#87521d38a44aa7ee91ce1cd2a47df0cb49dd660b" - integrity sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg== - dependencies: - inherits "~2.0.1" - readable-stream "^2.0.2" - stream-buffers@^3.0.2: version "3.0.2" resolved "https://registry.npmmirror.com/stream-buffers/-/stream-buffers-3.0.2.tgz#5249005a8d5c2d00b3a32e6e0a6ea209dc4f3521" @@ -24336,16 +28584,15 @@ stream-events@^1.0.5: dependencies: stubs "^3.0.0" -stream-http@^2.7.2: - version "2.8.3" - resolved "https://registry.npmmirror.com/stream-http/-/stream-http-2.8.3.tgz#b2d242469288a5a27ec4fe8933acf623de6514fc" - integrity sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw== +stream-http@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/stream-http/-/stream-http-3.2.0.tgz#1872dfcf24cb15752677e40e5c3f9cc1926028b5" + integrity sha512-Oq1bLqisTyK3TSCXpPbT4sdeYNdmyZJv1LxpEm2vu1ZhK89kSE5YXwZc3cWk0MagGaKriBh9mCFbVGtO+vY29A== dependencies: builtin-status-codes "^3.0.0" - inherits "^2.0.1" - readable-stream "^2.3.6" - to-arraybuffer "^1.0.0" - xtend "^4.0.0" + inherits "^2.0.4" + readable-stream "^3.6.0" + xtend "^4.0.2" stream-shift@^1.0.0: version "1.0.3" @@ -24366,6 +28613,15 @@ streamsearch@^1.1.0: resolved "https://registry.npmmirror.com/streamsearch/-/streamsearch-1.1.0.tgz#404dd1e2247ca94af554e841a8ef0eaa238da764" integrity sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg== +streamx@^2.12.5, streamx@^2.25.0: + version "2.25.0" + resolved "https://registry.yarnpkg.com/streamx/-/streamx-2.25.0.tgz#cc967e99390fda8b918b1eeaf3bc437637c8c7af" + integrity sha512-0nQuG6jf1w+wddNEEXCF4nTg3LtufWINB5eFEN+5TNZW7KWJp6x87+JFL43vaAUPyCfH1wID+mNVyW6OHtFamg== + dependencies: + events-universal "^1.0.0" + fast-fifo "^1.3.2" + text-decoder "^1.1.0" + streamx@^2.15.0: version "2.15.6" resolved "https://registry.npmmirror.com/streamx/-/streamx-2.15.6.tgz#28bf36997ebc7bf6c08f9eba958735231b833887" @@ -24386,16 +28642,6 @@ strict-event-emitter@^0.4.3: resolved "https://registry.yarnpkg.com/strict-event-emitter/-/strict-event-emitter-0.4.6.tgz#ff347c8162b3e931e3ff5f02cfce6772c3b07eb3" integrity sha512-12KWeb+wixJohmnwNFerbyiBrAlq5qJLwIt38etRtKtmmHyDSoGlIqFE9wx+4IwG0aDjI7GV8tc8ZccjWZZtTg== -strict-uri-encode@^2.0.0: - version "2.0.0" - resolved "https://registry.npmmirror.com/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz#b9c7330c7042862f6b142dc274bbcc5866ce3546" - integrity sha512-QwiXZgpRcKkhTj2Scnn++4PKtWsH0kpzZ62L2R6c/LUVYv7hVnZqcg2+sMuT6R7Jusu1vviK/MFsu6kNJfWlEQ== - -string-env-interpolation@^1.0.1: - version "1.0.1" - resolved "https://registry.npmmirror.com/string-env-interpolation/-/string-env-interpolation-1.0.1.tgz#ad4397ae4ac53fe6c91d1402ad6f6a52862c7152" - integrity sha512-78lwMoCcn0nNu8LszbP1UA7g55OeE4v7rCeWnM5B453rnNr4aq+5it3FEYtZrSEiMvHZOZ9Jlqb0OD0M2VInqg== - string-hash@^1.1.1: version "1.1.3" resolved "https://registry.npmmirror.com/string-hash/-/string-hash-1.1.3.tgz#e8aafc0ac1855b4666929ed7dd1275df5d6c811b" @@ -24403,7 +28649,7 @@ string-hash@^1.1.1: string-length@^4.0.1: version "4.0.2" - resolved "https://registry.npmmirror.com/string-length/-/string-length-4.0.2.tgz#a8a8dc7bd5c1a82b9b3c8b87e125f66871b6e57a" + resolved "https://registry.yarnpkg.com/string-length/-/string-length-4.0.2.tgz#a8a8dc7bd5c1a82b9b3c8b87e125f66871b6e57a" integrity sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ== dependencies: char-regex "^1.0.2" @@ -24418,7 +28664,7 @@ string-length@^4.0.1: is-fullwidth-code-point "^3.0.0" strip-ansi "^6.0.1" -"string-width@^1.0.2 || 2 || 3 || 4", string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: +string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: version "4.2.3" resolved "https://registry.npmmirror.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== @@ -24436,20 +28682,54 @@ string-width@^5.0.1, string-width@^5.1.2: emoji-regex "^9.2.2" strip-ansi "^7.0.1" -string.prototype.matchall@^4.0.8: - version "4.0.10" - resolved "https://registry.npmmirror.com/string.prototype.matchall/-/string.prototype.matchall-4.0.10.tgz#a1553eb532221d4180c51581d6072cd65d1ee100" - integrity sha512-rGXbGmOEosIQi6Qva94HUjgPs9vKW+dkG7Y8Q5O2OYkWL6wFaTRZO8zM4mhP94uX55wgyrXzfS2aGtGzUL7EJQ== +string.prototype.includes@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/string.prototype.includes/-/string.prototype.includes-2.0.1.tgz#eceef21283640761a81dbe16d6c7171a4edf7d92" + integrity sha512-o7+c9bW6zpAdJHTtujeePODAhkuicdAryFsfVKwA+wGw89wJ4GTY484WTucM9hLtDEOpOvI+aHnzqnC5lHp4Rg== dependencies: - call-bind "^1.0.2" - define-properties "^1.2.0" - es-abstract "^1.22.1" - get-intrinsic "^1.2.1" - has-symbols "^1.0.3" - internal-slot "^1.0.5" - regexp.prototype.flags "^1.5.0" - set-function-name "^2.0.0" - side-channel "^1.0.4" + call-bind "^1.0.7" + define-properties "^1.2.1" + es-abstract "^1.23.3" + +string.prototype.matchall@^4.0.12: + version "4.0.12" + resolved "https://registry.yarnpkg.com/string.prototype.matchall/-/string.prototype.matchall-4.0.12.tgz#6c88740e49ad4956b1332a911e949583a275d4c0" + integrity sha512-6CC9uyBL+/48dYizRf7H7VAYCMCNTBeM78x/VTUe9bFEaxBepPJDa1Ow99LqI/1yF7kuy7Q3cQsYMrcjGUcskA== + dependencies: + call-bind "^1.0.8" + call-bound "^1.0.3" + define-properties "^1.2.1" + es-abstract "^1.23.6" + es-errors "^1.3.0" + es-object-atoms "^1.0.0" + get-intrinsic "^1.2.6" + gopd "^1.2.0" + has-symbols "^1.1.0" + internal-slot "^1.1.0" + regexp.prototype.flags "^1.5.3" + set-function-name "^2.0.2" + side-channel "^1.1.0" + +string.prototype.repeat@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/string.prototype.repeat/-/string.prototype.repeat-1.0.0.tgz#e90872ee0308b29435aa26275f6e1b762daee01a" + integrity sha512-0u/TldDbKD8bFCQ/4f5+mNRrXwZ8hg2w7ZR8wa16e8z9XpePWl3eGEcUD0OXpEH/VJH/2G3gjUtR3ZOiBe2S/w== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.5" + +string.prototype.trim@^1.2.10: + version "1.2.10" + resolved "https://registry.yarnpkg.com/string.prototype.trim/-/string.prototype.trim-1.2.10.tgz#40b2dd5ee94c959b4dcfb1d65ce72e90da480c81" + integrity sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA== + dependencies: + call-bind "^1.0.8" + call-bound "^1.0.2" + define-data-property "^1.1.4" + define-properties "^1.2.1" + es-abstract "^1.23.5" + es-object-atoms "^1.0.0" + has-property-descriptors "^1.0.2" string.prototype.trim@^1.2.8: version "1.2.8" @@ -24469,6 +28749,16 @@ string.prototype.trimend@^1.0.7: define-properties "^1.2.0" es-abstract "^1.22.1" +string.prototype.trimend@^1.0.9: + version "1.0.9" + resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.9.tgz#62e2731272cd285041b36596054e9f66569b6942" + integrity sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ== + dependencies: + call-bind "^1.0.8" + call-bound "^1.0.2" + define-properties "^1.2.1" + es-object-atoms "^1.0.0" + string.prototype.trimstart@^1.0.7: version "1.0.7" resolved "https://registry.npmmirror.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.7.tgz#d4cdb44b83a4737ffbac2d406e405d43d0184298" @@ -24478,7 +28768,16 @@ string.prototype.trimstart@^1.0.7: define-properties "^1.2.0" es-abstract "^1.22.1" -string_decoder@^1.0.0, string_decoder@^1.1.1: +string.prototype.trimstart@^1.0.8: + version "1.0.8" + resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz#7ee834dda8c7c17eff3118472bb35bfedaa34dde" + integrity sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg== + dependencies: + call-bind "^1.0.7" + define-properties "^1.2.1" + es-object-atoms "^1.0.0" + +string_decoder@^1.0.0, string_decoder@^1.1.1, string_decoder@^1.3.0: version "1.3.0" resolved "https://registry.npmmirror.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== @@ -24520,6 +28819,13 @@ strip-ansi@^7.0.1: dependencies: ansi-regex "^6.0.1" +strip-ansi@^7.1.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-7.2.0.tgz#d22a269522836a627af8d04b5c3fd2c7fa3e32e3" + integrity sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w== + dependencies: + ansi-regex "^6.2.2" + strip-bom@^3.0.0: version "3.0.0" resolved "https://registry.npmmirror.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" @@ -24527,7 +28833,7 @@ strip-bom@^3.0.0: strip-bom@^4.0.0: version "4.0.0" - resolved "https://registry.npmmirror.com/strip-bom/-/strip-bom-4.0.0.tgz#9c3505c1db45bcedca3d9cf7a16f5c5aa3901878" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-4.0.0.tgz#9c3505c1db45bcedca3d9cf7a16f5c5aa3901878" integrity sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w== strip-final-newline@^2.0.0: @@ -24557,14 +28863,10 @@ strnum@^1.0.5: resolved "https://registry.npmmirror.com/strnum/-/strnum-1.0.5.tgz#5c4e829fe15ad4ff0d20c3db5ac97b73c9b072db" integrity sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA== -strong-log-transformer@2.1.0, strong-log-transformer@^2.1.0: - version "2.1.0" - resolved "https://registry.npmmirror.com/strong-log-transformer/-/strong-log-transformer-2.1.0.tgz#0f5ed78d325e0421ac6f90f7f10e691d6ae3ae10" - integrity sha512-B3Hgul+z0L9a236FAUC9iZsL+nVHgoCJnqCbN588DjYxvGXaXaaFbfmQ/JhvKjZwsOukuR72XbHv71Qkug0HxA== - dependencies: - duplexer "^0.1.1" - minimist "^1.2.0" - through "^2.3.4" +strnum@^2.2.0, strnum@^2.2.3: + version "2.2.3" + resolved "https://registry.yarnpkg.com/strnum/-/strnum-2.2.3.tgz#0119fce02749a11bb126a4d686ac5dbdf6e57586" + integrity sha512-oKx6RUCuHfT3oyVjtnrmn19H1SiCqgJSg+54XqURKp5aCMbrXrhLjRN9TjuwMjiYstZ0MzDrHqkGZ5dFTKd+zg== strtok3@^6.2.4: version "6.3.0" @@ -24671,7 +28973,7 @@ supports-color@^5.3.0: dependencies: has-flag "^3.0.0" -supports-color@^7.1.0: +supports-color@^7.0.0, supports-color@^7.1.0: version "7.2.0" resolved "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== @@ -24685,17 +28987,20 @@ supports-color@^8.0.0, supports-color@^8.1.1: dependencies: has-flag "^4.0.0" +supports-hyperlinks@^3.1.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/supports-hyperlinks/-/supports-hyperlinks-3.2.0.tgz#b8e485b179681dea496a1e7abdf8985bd3145461" + integrity sha512-zFObLMyZeEwzAoKCyu1B91U79K2t7ApXuQfo8OuxwXLDgcKxuwM+YvcbIhm6QWqz7mHUH1TVytR1PwVVjEuMig== + dependencies: + has-flag "^4.0.0" + supports-color "^7.0.0" + supports-preserve-symlinks-flag@^1.0.0: version "1.0.0" resolved "https://registry.npmmirror.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== -svg-parser@^2.0.4: - version "2.0.4" - resolved "https://registry.npmmirror.com/svg-parser/-/svg-parser-2.0.4.tgz#fdc2e29e13951736140b76cb122c8ee6630eb6b5" - integrity sha512-e4hG1hRwoOdRb37cIMSgzNsxyzKfayW6VOflrwvR+/bzrkyxY/31WkbgnQpgtrNp1SdpJvpUAGTa/ZoiPNDuRQ== - -svgo@^2.7.0, svgo@^2.8.0: +svgo@^2.7.0: version "2.8.0" resolved "https://registry.npmmirror.com/svgo/-/svgo-2.8.0.tgz#4ff80cce6710dc2795f0c7c74101e6764cfccd24" integrity sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg== @@ -24708,46 +29013,49 @@ svgo@^2.7.0, svgo@^2.8.0: picocolors "^1.0.0" stable "^0.1.8" -swagger-client@^3.25.0: - version "3.25.0" - resolved "https://registry.npmmirror.com/swagger-client/-/swagger-client-3.25.0.tgz#c59b181bed7172475d275487e6ab8365bd3f06ec" - integrity sha512-p143zWkIhgyh2E5+3HPFMlCw3WkV9RbX9HyftfBdiccCbOlmHdcJC0XEJZxcm+ZA+80DORs0F30/mzk7sx4iwA== +swagger-client@^3.37.2: + version "3.37.2" + resolved "https://registry.yarnpkg.com/swagger-client/-/swagger-client-3.37.2.tgz#19d15564b2c77c9200a3ee2b8a913e2bd2e4a596" + integrity sha512-KcB8psL1On4GWwv9Ribp1oteh50ygNnAyvQbd5MwiXMGkcB4f53rkZEdvZKPDdJO764mQjgErxQEGDVw6QBUMQ== dependencies: "@babel/runtime-corejs3" "^7.22.15" - "@swagger-api/apidom-core" ">=0.90.0 <1.0.0" - "@swagger-api/apidom-error" ">=0.90.0 <1.0.0" - "@swagger-api/apidom-json-pointer" ">=0.90.0 <1.0.0" - "@swagger-api/apidom-ns-openapi-3-1" ">=0.90.0 <1.0.0" - "@swagger-api/apidom-reference" ">=0.90.0 <1.0.0" - cookie "~0.6.0" + "@scarf/scarf" "=1.4.0" + "@swagger-api/apidom-core" "^1.10.2" + "@swagger-api/apidom-error" "^1.10.2" + "@swagger-api/apidom-json-pointer" "^1.10.2" + "@swagger-api/apidom-ns-openapi-3-1" "^1.10.2" + "@swagger-api/apidom-ns-openapi-3-2" "^1.10.2" + "@swagger-api/apidom-reference" "^1.10.2" + "@swaggerexpert/cookie" "^2.0.2" deepmerge "~4.3.0" fast-json-patch "^3.0.0-1" - is-plain-object "^5.0.0" js-yaml "^4.1.0" + neotraverse "=0.6.18" node-abort-controller "^3.1.1" - node-fetch-commonjs "^3.3.1" - qs "^6.10.2" - traverse "~0.6.6" - undici "^5.24.0" - -swagger-ui-react@^5.0.0: - version "5.11.2" - resolved "https://registry.npmmirror.com/swagger-ui-react/-/swagger-ui-react-5.11.2.tgz#00d6f08b106e345c9236ad39e151948577b98a23" - integrity sha512-J7QevDccLZYXV1OkplfWPdgW17MVbFozcwmfWX6Ob+XwukXGjPC5XY9EqhZiwRQd02MfZX9uQLKp4kPrlibAGA== - dependencies: - "@babel/runtime-corejs3" "^7.23.8" - "@braintree/sanitize-url" "=7.0.0" + node-fetch-commonjs "^3.3.2" + openapi-path-templating "^2.2.1" + openapi-server-url-templating "^1.3.0" + ramda "^0.30.1" + ramda-adjunct "^5.1.0" + +swagger-ui-react@^5.27.1: + version "5.32.4" + resolved "https://registry.yarnpkg.com/swagger-ui-react/-/swagger-ui-react-5.32.4.tgz#783b22213c4e826618b1470fd8ae9e68a2587c7d" + integrity sha512-OsTqKCiDT/o8/oqZbt+p1djPkrOk3unKK/7+wGvP1+WY6pOzFoDLM4D39cNFtpIArtlg9uoK6MKIz3W00WX8qw== + dependencies: + "@babel/runtime-corejs3" "^7.27.1" + "@scarf/scarf" "=1.4.0" base64-js "^1.5.1" + buffer "^6.0.3" classnames "^2.5.1" css.escape "1.5.1" deep-extend "0.6.0" - dompurify "=3.0.8" + dompurify "^3.3.2" ieee754 "^1.2.1" immutable "^3.x.x" js-file-download "^0.4.12" - js-yaml "=4.1.0" - lodash "^4.17.21" - patch-package "^8.0.0" + js-yaml "=4.1.1" + lodash "^4.18.1" prop-types "^15.8.1" randexp "^0.5.3" randombytes "^2.1.0" @@ -24756,15 +29064,15 @@ swagger-ui-react@^5.0.0: react-immutable-proptypes "2.2.0" react-immutable-pure-component "^2.2.0" react-inspector "^6.0.1" - react-redux "^9.1.0" - react-syntax-highlighter "^15.5.0" + react-redux "^9.2.0" + react-syntax-highlighter "^16.0.0" redux "^5.0.1" redux-immutable "^4.0.0" remarkable "^2.0.1" - reselect "^5.1.0" + reselect "^5.1.1" serialize-error "^8.1.0" - sha.js "^2.4.11" - swagger-client "^3.25.0" + sha.js "^2.4.12" + swagger-client "^3.37.2" url-parse "^1.5.10" xml "=1.0.1" xml-but-prettier "^1.0.1" @@ -24783,6 +29091,11 @@ swr@^2.0.0: client-only "^0.0.1" use-sync-external-store "^1.2.0" +symbol-observable@^1.0.4: + version "1.2.0" + resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.2.0.tgz#c22688aed4eab3cdc2dfeacbb561660560a00804" + integrity sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ== + symbol-tree@^3.2.4: version "3.2.4" resolved "https://registry.npmmirror.com/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2" @@ -24793,11 +29106,16 @@ tapable@^1.0.0: resolved "https://registry.npmmirror.com/tapable/-/tapable-1.1.3.tgz#a1fccc06b58db61fd7a45da2da44f5f3a3e67ba2" integrity sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA== -tapable@^2.0.0, tapable@^2.1.1, tapable@^2.2.0, tapable@^2.2.1: +tapable@^2.0.0, tapable@^2.2.1: version "2.2.1" resolved "https://registry.npmmirror.com/tapable/-/tapable-2.2.1.tgz#1967a73ef4060a82f12ab96af86d52fdb76eeca0" integrity sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ== +tapable@^2.3.0, tapable@^2.3.3: + version "2.3.3" + resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.3.3.tgz#5da7c9992c46038221267985ab28421a8879f160" + integrity sha512-uxc/zpqFg6x7C8vOE7lh6Lbda8eEL9zmVm/PLeTPBRhh1xCgdWaQ+J1CUieGpIfm2HdtsUpRv+HshiasBMcc6A== + tar-fs@^2.0.0: version "2.1.1" resolved "https://registry.npmmirror.com/tar-fs/-/tar-fs-2.1.1.tgz#489a15ab85f1f0befabb370b7de4f9eb5cbe8784" @@ -24808,6 +29126,27 @@ tar-fs@^2.0.0: pump "^3.0.0" tar-stream "^2.1.4" +tar-fs@^2.1.4: + version "2.1.4" + resolved "https://registry.yarnpkg.com/tar-fs/-/tar-fs-2.1.4.tgz#800824dbf4ef06ded9afea4acafe71c67c76b930" + integrity sha512-mDAjwmZdh7LTT6pNleZ05Yt65HC3E+NiQzl672vQG38jIrehtJk/J3mNwIg+vShQPcLF/LV7CMnDW6vjj6sfYQ== + dependencies: + chownr "^1.1.1" + mkdirp-classic "^0.5.2" + pump "^3.0.0" + tar-stream "^2.1.4" + +tar-fs@^3.0.9, tar-fs@^3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/tar-fs/-/tar-fs-3.1.2.tgz#114b012f54796f31e62f3e57792820a80b83ae6e" + integrity sha512-QGxxTxxyleAdyM3kpFs14ymbYmNFrfY+pHj7Z8FgtbZ7w2//VAgLMac7sT6nRpIHjppXO2AwwEOg0bPFVRcmXw== + dependencies: + pump "^3.0.0" + tar-stream "^3.1.5" + optionalDependencies: + bare-fs "^4.0.1" + bare-path "^3.0.0" + tar-fs@~2.0.1: version "2.0.1" resolved "https://registry.npmmirror.com/tar-fs/-/tar-fs-2.0.1.tgz#e44086c1c60d31a4f0cf893b1c4e155dabfae9e2" @@ -24818,7 +29157,7 @@ tar-fs@~2.0.1: pump "^3.0.0" tar-stream "^2.0.0" -tar-stream@^2.0.0, tar-stream@^2.1.4, tar-stream@~2.2.0: +tar-stream@^2.0.0, tar-stream@^2.1.4: version "2.2.0" resolved "https://registry.npmmirror.com/tar-stream/-/tar-stream-2.2.0.tgz#acad84c284136b060dc3faa64474aa9aebd77287" integrity sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ== @@ -24838,22 +29177,32 @@ tar-stream@^3.0.0: fast-fifo "^1.2.0" streamx "^2.15.0" -tar@6.1.11: - version "6.1.11" - resolved "https://registry.npmmirror.com/tar/-/tar-6.1.11.tgz#6760a38f003afa1b2ffd0ffe9e9abbd0eab3d621" - integrity sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA== +tar-stream@^3.1.5: + version "3.1.8" + resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-3.1.8.tgz#a26f5b26c34dfd4936a4f8a9e694a8f5102af13d" + integrity sha512-U6QpVRyCGHva435KoNWy9PRoi2IFYCgtEhq9nmrPPpbRacPs9IH4aJ3gbrFC8dPcXvdSZ4XXfXT5Fshbp2MtlQ== + dependencies: + b4a "^1.6.4" + bare-fs "^4.5.5" + fast-fifo "^1.2.0" + streamx "^2.15.0" + +tar@^6.1.11, tar@^6.1.12: + version "6.2.0" + resolved "https://registry.npmmirror.com/tar/-/tar-6.2.0.tgz#b14ce49a79cb1cd23bc9b016302dea5474493f73" + integrity sha512-/Wo7DcT0u5HUV486xg675HtjNd3BXZ6xDbzsCUZPt5iw8bTQ63bP0Raut3mvro9u+CUyq7YQd8Cx55fsZXxqLQ== dependencies: chownr "^2.0.0" fs-minipass "^2.0.0" - minipass "^3.0.0" + minipass "^5.0.0" minizlib "^2.1.1" mkdirp "^1.0.3" yallist "^4.0.0" -tar@^6.1.11, tar@^6.1.12, tar@^6.1.2: - version "6.2.0" - resolved "https://registry.npmmirror.com/tar/-/tar-6.2.0.tgz#b14ce49a79cb1cd23bc9b016302dea5474493f73" - integrity sha512-/Wo7DcT0u5HUV486xg675HtjNd3BXZ6xDbzsCUZPt5iw8bTQ63bP0Raut3mvro9u+CUyq7YQd8Cx55fsZXxqLQ== +tar@^6.2.1: + version "6.2.1" + resolved "https://registry.yarnpkg.com/tar/-/tar-6.2.1.tgz#717549c541bc3c2af15751bea94b1dd068d4b03a" + integrity sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A== dependencies: chownr "^2.0.0" fs-minipass "^2.0.0" @@ -24862,6 +29211,17 @@ tar@^6.1.11, tar@^6.1.12, tar@^6.1.2: mkdirp "^1.0.3" yallist "^4.0.0" +tar@^7.4.3, tar@^7.5.6: + version "7.5.13" + resolved "https://registry.yarnpkg.com/tar/-/tar-7.5.13.tgz#0d214ed56781a26edc313581c0e2d929ceeb866d" + integrity sha512-tOG/7GyXpFevhXVh8jOPJrmtRpOTsYqUIkVdVooZYJS/z8WhfQUX8RJILmeuJNinGAMSu1veBr4asSHFt5/hng== + dependencies: + "@isaacs/fs-minipass" "^4.0.0" + chownr "^3.0.0" + minipass "^7.1.2" + minizlib "^3.1.0" + yallist "^5.0.0" + tarn@^3.0.2: version "3.0.2" resolved "https://registry.npmmirror.com/tarn/-/tarn-3.0.2.tgz#73b6140fbb881b71559c4f8bfde3d9a4b3d27693" @@ -24885,23 +29245,29 @@ teeny-request@^9.0.0: stream-events "^1.0.5" uuid "^9.0.0" -temp-dir@1.0.0: - version "1.0.0" - resolved "https://registry.npmmirror.com/temp-dir/-/temp-dir-1.0.0.tgz#0a7c0ea26d3a39afa7e0ebea9c1fc0bc4daa011d" - integrity sha512-xZFXEGbG7SNC3itwBzI3RYjq/cEhBkx2hJuKGIUOcEULmkQExXiHat2z/qkISYsuR+IKumhEfKKbV5qXmhICFQ== +teex@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/teex/-/teex-1.0.1.tgz#b8fa7245ef8e8effa8078281946c85ab780a0b12" + integrity sha512-eYE6iEI62Ni1H8oIa7KlDU6uQBtqr4Eajni3wX7rpfXD8ysFx8z0+dri+KWEPWpBsxXfxu58x/0jvTVT1ekOSg== + dependencies: + streamx "^2.12.5" + +terminal-columns@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/terminal-columns/-/terminal-columns-2.0.0.tgz#6be0bdce01da79e616a4566b8091291a527f9cae" + integrity sha512-6IByuUjyNZJXUtwDNm+OIe62zgwwaRbH+WMNTcx05O2G5V9WhvluAAHJY8OvUdwmzMPpqAD/7EUpGdI6ae1aiQ== -terser-webpack-plugin@^5.1.3, terser-webpack-plugin@^5.3.10: - version "5.3.10" - resolved "https://registry.npmmirror.com/terser-webpack-plugin/-/terser-webpack-plugin-5.3.10.tgz#904f4c9193c6fd2a03f693a2150c62a92f40d199" - integrity sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w== +terser-webpack-plugin@^5.3.17: + version "5.4.0" + resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-5.4.0.tgz#95fc4cf4437e587be11ecf37d08636089174d76b" + integrity sha512-Bn5vxm48flOIfkdl5CaD2+1CiUVbonWQ3KQPyP7/EuIl9Gbzq/gQFOzaMFUEgVjB1396tcK0SG8XcNJ/2kDH8g== dependencies: - "@jridgewell/trace-mapping" "^0.3.20" + "@jridgewell/trace-mapping" "^0.3.25" jest-worker "^27.4.5" - schema-utils "^3.1.1" - serialize-javascript "^6.0.1" - terser "^5.26.0" + schema-utils "^4.3.0" + terser "^5.31.1" -terser@^5.10.0, terser@^5.26.0: +terser@^5.10.0: version "5.27.0" resolved "https://registry.npmmirror.com/terser/-/terser-5.27.0.tgz#70108689d9ab25fef61c4e93e808e9fd092bf20c" integrity sha512-bi1HRwVRskAjheeYl291n3JC4GgO/Ty4z1nVs5AAsmonJulGxpSektecnNedrwK9C7vpvVtcX3cw00VSLt7U2A== @@ -24911,19 +29277,57 @@ terser@^5.10.0, terser@^5.26.0: commander "^2.20.0" source-map-support "~0.5.20" +terser@^5.31.1: + version "5.46.2" + resolved "https://registry.yarnpkg.com/terser/-/terser-5.46.2.tgz#b9529672d5b0024c7959571c83b82f65077b2a4f" + integrity sha512-uxfo9fPcSgLDYob/w1FuL0c99MWiJDnv+5qXSQc5+Ki5NjVNsYi66INnMFBjf6uFz6OnX12piJQPF4IpjJTNTw== + dependencies: + "@jridgewell/source-map" "^0.3.3" + acorn "^8.15.0" + commander "^2.20.0" + source-map-support "~0.5.20" + test-exclude@^6.0.0: version "6.0.0" - resolved "https://registry.npmmirror.com/test-exclude/-/test-exclude-6.0.0.tgz#04a8698661d805ea6fa293b6cb9e63ac044ef15e" + resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-6.0.0.tgz#04a8698661d805ea6fa293b6cb9e63ac044ef15e" integrity sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w== dependencies: "@istanbuljs/schema" "^0.1.2" glob "^7.1.4" minimatch "^3.0.4" -text-extensions@^1.0.0: - version "1.9.0" - resolved "https://registry.npmmirror.com/text-extensions/-/text-extensions-1.9.0.tgz#1853e45fee39c945ce6f6c36b2d659b5aabc2a26" - integrity sha512-wiBrwC1EhBelW12Zy26JeOUkQ5mRu+5o8rpsJk5+2t+Y5vE7e842qtZDQ2g1NpX/29HdyFeJ4nSIhI47ENSxlQ== +testcontainers@^11.9.0: + version "11.14.0" + resolved "https://registry.yarnpkg.com/testcontainers/-/testcontainers-11.14.0.tgz#ee4262acede48788018adc38f902bda86bd21585" + integrity sha512-r9pniwv/iwzyHaI7gwAvAm4Y+IvjJg3vBWdjrUCaDMc2AXIr4jKbq7jJO18Mw2ybs73pZy1Aj7p/4RVBGMRWjg== + dependencies: + "@balena/dockerignore" "^1.0.2" + "@types/dockerode" "^4.0.1" + archiver "^7.0.1" + async-lock "^1.4.1" + byline "^5.0.0" + debug "^4.4.3" + docker-compose "^1.4.2" + dockerode "^4.0.10" + get-port "^7.2.0" + proper-lockfile "^4.1.2" + properties-reader "^3.0.1" + ssh-remote-port-forward "^1.0.4" + tar-fs "^3.1.2" + tmp "^0.2.5" + undici "^7.24.5" + +text-decoder@^1.1.0: + version "1.2.7" + resolved "https://registry.yarnpkg.com/text-decoder/-/text-decoder-1.2.7.tgz#5d073a9a74b9c0a9d28dfadcab96b604af57d8ba" + integrity sha512-vlLytXkeP4xvEq2otHeJfSQIRyWxo/oZGEbXrtEEF9Hnmrdly59sUbzZ/QgyWuLYHctCHxFF4tRQZNQ9k60ExQ== + dependencies: + b4a "^1.6.4" + +text-extensions@^2.4.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/text-extensions/-/text-extensions-2.4.0.tgz#a1cfcc50cf34da41bfd047cc744f804d1680ea34" + integrity sha512-te/NtwBwfiNRLf9Ijqx3T0nlqZiQ2XrrtBvu+cLL8ZRrGkO0NHTug8MYFKyoSrv/sHTaSKfilUkizV6XhxMJ3g== text-hex@1.0.x: version "1.0.0" @@ -24954,19 +29358,16 @@ thingies@^1.20.0: resolved "https://registry.npmmirror.com/thingies/-/thingies-1.21.0.tgz#e80fbe58fd6fdaaab8fad9b67bd0a5c943c445c1" integrity sha512-hsqsJsFMsV+aD4s3CWKk85ep/3I9XzYV/IXaSouJMYIoDlgyi11cBhsqYe9/geRfB0YIikBQg6raRaM+nIMP9g== +thingies@^2.5.0: + version "2.6.0" + resolved "https://registry.yarnpkg.com/thingies/-/thingies-2.6.0.tgz#e09b98b9e6f6caf8a759eca8481fea1de974d2b1" + integrity sha512-rMHRjmlFLM1R96UYPvpmnc3LYtdFrT33JIB7L9hetGue1qAPfn1N2LJeEjxUSidu1Iku+haLZXDuEXUHNGO/lg== + throttle-debounce@^3.0.1: version "3.0.1" resolved "https://registry.npmmirror.com/throttle-debounce/-/throttle-debounce-3.0.1.tgz#32f94d84dfa894f786c9a1f290e7a645b6a19abb" integrity sha512-dTEWWNu6JmeVXY0ZYoPuH5cRIwc0MeGbJwah9KUNYSJwommQpCzTySTpEe8Gs1J23aeWEuAobe4Ag7EHVt/LOg== -through2@^2.0.0: - version "2.0.5" - resolved "https://registry.npmmirror.com/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd" - integrity sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ== - dependencies: - readable-stream "~2.3.6" - xtend "~4.0.1" - through2@^4.0.0: version "4.0.2" resolved "https://registry.npmmirror.com/through2/-/through2-4.0.2.tgz#a7ce3ac2a7a8b0b966c80e7c49f0484c3b239764" @@ -24974,7 +29375,7 @@ through2@^4.0.0: dependencies: readable-stream "3" -through@2, "through@>=2.2.7 <3", through@^2.3.4, through@^2.3.6: +through@^2.3.6, through@~2.3: version "2.3.8" resolved "https://registry.npmmirror.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" integrity sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg== @@ -24996,11 +29397,6 @@ timers-browserify@^2.0.4: dependencies: setimmediate "^1.0.4" -tiny-case@^1.0.3: - version "1.0.3" - resolved "https://registry.npmmirror.com/tiny-case/-/tiny-case-1.0.3.tgz#d980d66bc72b5d5a9ca86fb7c9ffdb9c898ddd03" - integrity sha512-Eet/eeMhkO6TX8mnUteS9zgPbUMQa4I6Kkp5ORiBD5476/m+PIRiumP5tmh5ioJpH7k51Kehawy2UDfsnxxY8Q== - tiny-invariant@^1.0.6: version "1.3.1" resolved "https://registry.npmmirror.com/tiny-invariant/-/tiny-invariant-1.3.1.tgz#8560808c916ef02ecfd55e66090df23a4b7aa642" @@ -25011,6 +29407,26 @@ tiny-warning@^1.0.2: resolved "https://registry.npmmirror.com/tiny-warning/-/tiny-warning-1.0.3.tgz#94a30db453df4c643d0fd566060d60a875d84754" integrity sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA== +tinyglobby@^0.2.15, tinyglobby@^0.2.9: + version "0.2.16" + resolved "https://registry.yarnpkg.com/tinyglobby/-/tinyglobby-0.2.16.tgz#1c3b7eb953fce42b226bc5a1ee06428281aff3d6" + integrity sha512-pn99VhoACYR8nFHhxqix+uvsbXineAasWm5ojXoN8xEwK5Kd3/TrhNn1wByuD52UxWRLy8pu+kRMniEi6Eq9Zg== + dependencies: + fdir "^6.5.0" + picomatch "^4.0.4" + +tldts-core@^7.0.28: + version "7.0.28" + resolved "https://registry.yarnpkg.com/tldts-core/-/tldts-core-7.0.28.tgz#28c256edae2ed177b2a8338a51caf81d41580ecf" + integrity sha512-7W5Efjhsc3chVdFhqtaU0KtK32J37Zcr9RKtID54nG+tIpcY79CQK/veYPODxtD/LJ4Lue66jvrQzIX2Z2/pUQ== + +tldts@^7.0.5: + version "7.0.28" + resolved "https://registry.yarnpkg.com/tldts/-/tldts-7.0.28.tgz#5a5bb26ef3f70008d88c6e53ff58cd59ed8d4c68" + integrity sha512-+Zg3vWhRUv8B1maGSTFdev9mjoo8Etn2Ayfs4cnjlD3CsGkxXX4QyW3j2WJ0wdjYcYmy7Lx2RDsZMhgCWafKIw== + dependencies: + tldts-core "^7.0.28" + tmp@^0.0.33: version "0.0.33" resolved "https://registry.npmmirror.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" @@ -25018,22 +29434,24 @@ tmp@^0.0.33: dependencies: os-tmpdir "~1.0.2" -tmp@~0.2.1: - version "0.2.1" - resolved "https://registry.npmmirror.com/tmp/-/tmp-0.2.1.tgz#8457fc3037dcf4719c251367a1af6500ee1ccf14" - integrity sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ== - dependencies: - rimraf "^3.0.0" +tmp@^0.2.5: + version "0.2.5" + resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.2.5.tgz#b06bcd23f0f3c8357b426891726d16015abfd8f8" + integrity sha512-voyz6MApa1rQGUxT3E+BK7/ROe8itEx7vD8/HEvt4xwXucvQ5G5oeEiHkmHZJuBO21RpOf+YYm9MOivj709jow== tmpl@1.0.5: version "1.0.5" - resolved "https://registry.npmmirror.com/tmpl/-/tmpl-1.0.5.tgz#8683e0b902bb9c20c4f726e3c0b69f36518c07cc" + resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.5.tgz#8683e0b902bb9c20c4f726e3c0b69f36518c07cc" integrity sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw== -to-arraybuffer@^1.0.0: - version "1.0.1" - resolved "https://registry.npmmirror.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43" - integrity sha512-okFlQcoGTi4LQBG/PgSYblw9VOyptsz2KJZqc6qtgGdes8VktzUQkj4BI2blit072iS8VODNcMA+tvnS9dnuMA== +to-buffer@^1.2.0, to-buffer@^1.2.1: + version "1.2.2" + resolved "https://registry.yarnpkg.com/to-buffer/-/to-buffer-1.2.2.tgz#ffe59ef7522ada0a2d1cb5dfe03bb8abc3cdc133" + integrity sha512-db0E3UJjcFhpDhAF4tLo03oli3pwl3dbnzXOUIlRKrp+ldk/VUxzpWYZENsw2SZiuBjHAk7DfB0VU7NKdpb6sw== + dependencies: + isarray "^2.0.5" + safe-buffer "^5.2.1" + typed-array-buffer "^1.0.3" to-fast-properties@^2.0.0: version "2.0.0" @@ -25052,7 +29470,7 @@ toggle-selection@^1.0.6: resolved "https://registry.npmmirror.com/toggle-selection/-/toggle-selection-1.0.6.tgz#6e45b1263f2017fa0acc7d89d78b15b8bf77da32" integrity sha512-BiZS+C1OS8g/q2RRbJmy59xpyghNBqrr6k5L/uKBGRsTfxmu3ffiRnd8mlGPUVayg8pvfi5urfnu8TU7DVOkLQ== -toidentifier@1.0.1: +toidentifier@1.0.1, toidentifier@~1.0.1: version "1.0.1" resolved "https://registry.npmmirror.com/toidentifier/-/toidentifier-1.0.1.tgz#3be34321a88a820ed1bd80dfaa33e479fbb8dd35" integrity sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA== @@ -25065,26 +29483,28 @@ token-types@^4.1.1: "@tokenizer/token" "^0.3.0" ieee754 "^1.2.1" -toposort@^2.0.2: - version "2.0.2" - resolved "https://registry.npmmirror.com/toposort/-/toposort-2.0.2.tgz#ae21768175d1559d48bef35420b2f4962f09c330" - integrity sha512-0a5EOkAUp8D4moMi2W8ZF8jcga7BgZd91O/yabJCFY8az+XSzeGyTKs0Aoo897iV1Nj6guFq8orWDS96z91oGg== - tosource@^2.0.0-alpha.3: version "2.0.0-alpha.3" resolved "https://registry.npmmirror.com/tosource/-/tosource-2.0.0-alpha.3.tgz#ef385dac9092e009bf25c018838ddaae436daeb6" integrity sha512-KAB2lrSS48y91MzFPFuDg4hLbvDiyTjOVgaK7Erw+5AmZXNq4sFRVn8r6yxSLuNs15PaokrDRpS61ERY9uZOug== -tough-cookie@^4.0.0, tough-cookie@^4.1.2: - version "4.1.3" - resolved "https://registry.npmmirror.com/tough-cookie/-/tough-cookie-4.1.3.tgz#97b9adb0728b42280aa3d814b6b999b2ff0318bf" - integrity sha512-aX/y5pVRkfRnfmuX+OdbSdXvPe6ieKX/G2s7e98f4poJHnqH3281gDPm/metm6E/WRamfx7WC4HUqkWHfQHprw== +tough-cookie@^4.1.2: + version "4.1.4" + resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-4.1.4.tgz#945f1461b45b5a8c76821c33ea49c3ac192c1b36" + integrity sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag== dependencies: psl "^1.1.33" punycode "^2.1.1" universalify "^0.2.0" url-parse "^1.5.3" +tough-cookie@^6.0.0: + version "6.0.1" + resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-6.0.1.tgz#a495f833836609ed983c19bc65639cfbceb54c76" + integrity sha512-LktZQb3IeoUWB9lqR5EWTHgW/VTITCXg4D21M+lvybRVdylLrRMnqaIONLVb5mav8vM19m44HIcGq4qASeu2Qw== + dependencies: + tldts "^7.0.5" + tough-cookie@~2.5.0: version "2.5.0" resolved "https://registry.npmmirror.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2" @@ -25093,72 +29513,69 @@ tough-cookie@~2.5.0: psl "^1.1.28" punycode "^2.1.1" -tr46@^2.1.0: - version "2.1.0" - resolved "https://registry.npmmirror.com/tr46/-/tr46-2.1.0.tgz#fa87aa81ca5d5941da8cbf1f9b749dc969a4e240" - integrity sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw== - dependencies: - punycode "^2.1.1" - tr46@^3.0.0: version "3.0.0" - resolved "https://registry.npmmirror.com/tr46/-/tr46-3.0.0.tgz#555c4e297a950617e8eeddef633c87d4d9d6cbf9" + resolved "https://registry.yarnpkg.com/tr46/-/tr46-3.0.0.tgz#555c4e297a950617e8eeddef633c87d4d9d6cbf9" integrity sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA== dependencies: punycode "^2.1.1" +tr46@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/tr46/-/tr46-6.0.0.tgz#f5a1ae546a0adb32a277a2278d0d17fa2f9093e6" + integrity sha512-bLVMLPtstlZ4iMQHpFHTR7GAGj2jxi8Dg0s2h2MafAE4uSWF98FC/3MomU51iQAMf8/qDUbKWf5GxuvvVcXEhw== + dependencies: + punycode "^2.3.1" + tr46@~0.0.3: version "0.0.3" resolved "https://registry.npmmirror.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw== -traverse@~0.6.6: - version "0.6.8" - resolved "https://registry.npmmirror.com/traverse/-/traverse-0.6.8.tgz#5e5e0c41878b57e4b73ad2f3d1e36a715ea4ab15" - integrity sha512-aXJDbk6SnumuaZSANd21XAo15ucCDE38H4fkqiGsc3MhCK+wOlZvLP9cB/TvpHT0mOyWgC4Z8EwRlzqYSUzdsA== - tree-dump@^1.0.0: version "1.0.1" resolved "https://registry.npmmirror.com/tree-dump/-/tree-dump-1.0.1.tgz#b448758da7495580e6b7830d6b7834fca4c45b96" integrity sha512-WCkcRBVPSlHHq1dc/px9iOfqklvzCbdRwvlNfxGZsrHqf6aZttfPrd7DJTt6oR10dwUfpFFQeVTkPbBIZxX/YA== +tree-dump@^1.0.3, tree-dump@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/tree-dump/-/tree-dump-1.1.0.tgz#ab29129169dc46004414f5a9d4a3c6e89f13e8a4" + integrity sha512-rMuvhU4MCDbcbnleZTFezWsaZXRFemSqAM+7jPnzUl1fo9w3YEKOxAeui0fz3OI4EU4hf23iyA7uQRVko+UaBA== + tree-kill@^1.2.2: version "1.2.2" resolved "https://registry.npmmirror.com/tree-kill/-/tree-kill-1.2.2.tgz#4ca09a9092c88b73a7cdc5e8a01b507b0790a0cc" integrity sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A== -tree-sitter-json@=0.20.1: - version "0.20.1" - resolved "https://registry.npmmirror.com/tree-sitter-json/-/tree-sitter-json-0.20.1.tgz#d1fe6c59571dd3a987ebb3f5aeef404f37b3a453" - integrity sha512-482hf7J+aBwhksSw8yWaqI8nyP1DrSwnS4IMBShsnkFWD3SE8oalHnsEik59fEVi3orcTCUtMzSjZx+0Tpa6Vw== +tree-sitter-json@=0.24.8: + version "0.24.8" + resolved "https://registry.yarnpkg.com/tree-sitter-json/-/tree-sitter-json-0.24.8.tgz#72bfa26942691f2bf59d973b6794923c033f04c2" + integrity sha512-Tc9ZZYwHyWZ3Tt1VEw7Pa2scu1YO7/d2BCBbKTx5hXwig3UfdQjsOPkPyLpDJOn/m1UBEWYAtSdGAwCSyagBqQ== dependencies: - nan "^2.18.0" + node-addon-api "^8.2.2" + node-gyp-build "^4.8.2" -tree-sitter-yaml@=0.5.0: - version "0.5.0" - resolved "https://registry.npmmirror.com/tree-sitter-yaml/-/tree-sitter-yaml-0.5.0.tgz#c617ba72837399d8105ec10cdb4c360e1ed76076" - integrity sha512-POJ4ZNXXSWIG/W4Rjuyg36MkUD4d769YRUGKRqN+sVaj/VCo6Dh6Pkssn1Rtewd5kybx+jT1BWMyWN0CijXnMA== +tree-sitter@=0.21.1: + version "0.21.1" + resolved "https://registry.yarnpkg.com/tree-sitter/-/tree-sitter-0.21.1.tgz#fbb34c09056700814af0e1e37688e06463ba04c4" + integrity sha512-7dxoA6kYvtgWw80265MyqJlkRl4yawIjO7S5MigytjELkX43fV2WsAXzsNfO7sBpPPCF5Gp0+XzHk0DwLCq3xQ== dependencies: - nan "^2.14.0" + node-addon-api "^8.0.0" + node-gyp-build "^4.8.0" -tree-sitter@=0.20.4: - version "0.20.4" - resolved "https://registry.npmmirror.com/tree-sitter/-/tree-sitter-0.20.4.tgz#7d9d4f769fc05342ef43e5559f7ff34b0fc48327" - integrity sha512-rjfR5dc4knG3jnJNN/giJ9WOoN1zL/kZyrS0ILh+eqq8RNcIbiXA63JsMEgluug0aNvfQvK4BfCErN1vIzvKog== +tree-sitter@=0.22.4: + version "0.22.4" + resolved "https://registry.yarnpkg.com/tree-sitter/-/tree-sitter-0.22.4.tgz#7d29547f663ff6f49ee8d1ac444e6fa169c72b77" + integrity sha512-usbHZP9/oxNsUY65MQUsduGRqDHQOou1cagUSwjhoSYAmSahjQDAVsh9s+SlZkn8X8+O1FULRGwHu7AFP3kjzg== dependencies: - nan "^2.17.0" - prebuild-install "^7.1.1" + node-addon-api "^8.3.0" + node-gyp-build "^4.8.4" trim-lines@^3.0.0: version "3.0.1" resolved "https://registry.npmmirror.com/trim-lines/-/trim-lines-3.0.1.tgz#d802e332a07df861c48802c04321017b1bd87338" integrity sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg== -trim-newlines@^3.0.0: - version "3.0.1" - resolved "https://registry.npmmirror.com/trim-newlines/-/trim-newlines-3.0.1.tgz#260a5d962d8b752425b32f3a7db0dcacd176c144" - integrity sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw== - triple-beam@^1.3.0, triple-beam@^1.4.1: version "1.4.1" resolved "https://registry.npmmirror.com/triple-beam/-/triple-beam-1.4.1.tgz#6fde70271dc6e5d73ca0c3b24e2d92afb7441984" @@ -25179,10 +29596,25 @@ ts-algebra@^2.0.0: resolved "https://registry.npmmirror.com/ts-algebra/-/ts-algebra-2.0.0.tgz#4e3e0953878f26518fce7f6bb115064a65388b7a" integrity sha512-FPAhNPFMrkwz76P7cdjdmiShwMynZYN6SgOujD1urY4oNm80Ou9oMdmbR45LotcKOXoy7wSmHkRFE6Mxbrhefw== -ts-api-utils@^1.0.1: - version "1.0.3" - resolved "https://registry.npmmirror.com/ts-api-utils/-/ts-api-utils-1.0.3.tgz#f12c1c781d04427313dbac808f453f050e54a331" - integrity sha512-wNMeqtMz5NtwpT/UZGY5alT+VoKdSsOOP/kqHFcUW1P/VRhH2wJ48+DN2WwUliNbQ976ETwDL0Ifd2VVvgonvg== +ts-api-utils@^1.3.0: + version "1.4.3" + resolved "https://registry.yarnpkg.com/ts-api-utils/-/ts-api-utils-1.4.3.tgz#bfc2215fe6528fecab2b0fba570a2e8a4263b064" + integrity sha512-i3eMG77UTMD0hZhgRS562pv83RC6ukSAC2GMNWc+9dieh/+jDM5u5YG+NHX6VNDRHQcHwmsTHctP9LhbC3WxVw== + +ts-api-utils@^2.5.0: + version "2.5.0" + resolved "https://registry.yarnpkg.com/ts-api-utils/-/ts-api-utils-2.5.0.tgz#4acd4a155e22734990a5ed1fe9e97f113bcb37c1" + integrity sha512-OJ/ibxhPlqrMM0UiNHJ/0CKQkoKF243/AEmplt3qpRgkW8VG7IfOS41h7V8TjITqdByHzrjcS/2si+y4lIh8NA== + +ts-checker-rspack-plugin@^1.1.5: + version "1.3.0" + resolved "https://registry.yarnpkg.com/ts-checker-rspack-plugin/-/ts-checker-rspack-plugin-1.3.0.tgz#6d7473b1d2a12811863720925ab1dd209883cb13" + integrity sha512-89oK/BtApjdid1j9CGjPGiYry+EZBhsnTAM481/8ipgr/y2IOgCbW1HPnan+fs5FnzlpUgf9dWGNZ4Ayw3Bd8A== + dependencies: + "@rspack/lite-tapable" "^1.1.0" + chokidar "^3.6.0" + memfs "^4.56.10" + picocolors "^1.1.1" ts-easing@^0.2.0: version "0.2.0" @@ -25204,6 +29636,19 @@ ts-mixer@^6.0.3: resolved "https://registry.npmmirror.com/ts-mixer/-/ts-mixer-6.0.3.tgz#69bd50f406ff39daa369885b16c77a6194c7cae6" integrity sha512-k43M7uCG1AkTyxgnmI5MPwKoUvS/bRvLvUb7+Pgpdlmok8AoqmUaZxUUw8zKM5B1lqZrt41GjYgnvAi0fppqgQ== +ts-mixer@^6.0.4: + version "6.0.4" + resolved "https://registry.yarnpkg.com/ts-mixer/-/ts-mixer-6.0.4.tgz#1da39ceabc09d947a82140d9f09db0f84919ca28" + integrity sha512-ufKpbmrugz5Aou4wcr5Wc1UUFWOLhq+Fm6qa6P0w0K5Qw2yhaUoiWszhCVuNQyNwrlGiscHOmqYoAox1PtvgjA== + +ts-morph@^24.0.0: + version "24.0.0" + resolved "https://registry.yarnpkg.com/ts-morph/-/ts-morph-24.0.0.tgz#6249b526ade40cf99c8803e7abdae6c65882e58e" + integrity sha512-2OAOg/Ob5yx9Et7ZX4CvTCc0UFoZHwLEJ+dpDPSUi5TgwwlTlX47w+iFRrEwzUZwYACjq83cgjS/Da50Ga37uw== + dependencies: + "@ts-morph/common" "~0.25.0" + code-block-writer "^13.0.3" + ts-node@^10.9.1: version "10.9.2" resolved "https://registry.npmmirror.com/ts-node/-/ts-node-10.9.2.tgz#70f021c9e185bccdca820e26dc413805c101c71f" @@ -25238,16 +29683,7 @@ tsconfig-paths@^3.15.0: minimist "^1.2.6" strip-bom "^3.0.0" -tsconfig-paths@^4.1.2: - version "4.2.0" - resolved "https://registry.npmmirror.com/tsconfig-paths/-/tsconfig-paths-4.2.0.tgz#ef78e19039133446d244beac0fd6a1632e2d107c" - integrity sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg== - dependencies: - json5 "^2.2.2" - minimist "^1.2.6" - strip-bom "^3.0.0" - -tslib@^1.11.1, tslib@^1.14.1, tslib@^1.8.1: +tslib@^1.11.1, tslib@^1.14.1: version "1.14.1" resolved "https://registry.npmmirror.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== @@ -25257,31 +29693,20 @@ tslib@^2.0.0, tslib@^2.0.3, tslib@^2.1.0, tslib@^2.2.0, tslib@^2.3.0, tslib@^2.3 resolved "https://registry.npmmirror.com/tslib/-/tslib-2.6.2.tgz#703ac29425e7b37cd6fd456e92404d46d1f3e4ae" integrity sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q== +tslib@^2.0.1, tslib@^2.8.0, tslib@^2.8.1: + version "2.8.1" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.8.1.tgz#612efe4ed235d567e8aba5f2a5fab70280ade83f" + integrity sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w== + tsscmp@1.0.6: version "1.0.6" resolved "https://registry.yarnpkg.com/tsscmp/-/tsscmp-1.0.6.tgz#85b99583ac3589ec4bfef825b5000aa911d605eb" integrity sha512-LxhtAkPDTkVCMQjt2h6eBVY28KCjikZqZfMcC15YBeNjkgUpdCfBu5HoiOTDu86v6smE8yOjyEktJ8hlbANHQA== -tsutils@^3.21.0: - version "3.21.0" - resolved "https://registry.npmmirror.com/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623" - integrity sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA== - dependencies: - tslib "^1.8.1" - -tty-browserify@0.0.0: - version "0.0.0" - resolved "https://registry.npmmirror.com/tty-browserify/-/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6" - integrity sha512-JVa5ijo+j/sOoHGjw0sxw734b1LhBkQ3bvUGNdxnVXDCX81Yx7TFgnZygxrIIWn23hbfTaMYLwRmAxFyDuFmIw== - -tuf-js@^1.1.7: - version "1.1.7" - resolved "https://registry.npmmirror.com/tuf-js/-/tuf-js-1.1.7.tgz#21b7ae92a9373015be77dfe0cb282a80ec3bbe43" - integrity sha512-i3P9Kgw3ytjELUfpuKVDNBJvk4u5bXL6gskv572mcevPbSKCV3zt3djhmlEQ65yERjIbOSncy7U4cQJaB1CBCg== - dependencies: - "@tufjs/models" "1.0.4" - debug "^4.3.4" - make-fetch-happen "^11.1.1" +tty-browserify@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.1.tgz#3f05251ee17904dfd0677546670db9651682b811" + integrity sha512-C3TaO7K81YvjCgQH9Q1S3R3P3BtN3RIM8n+OvX4il1K1zgE8ZhI0op7kClgkxtutIE8hQrcrHBXvIheqKUUCxw== tunnel-agent@^0.6.0: version "0.6.0" @@ -25290,7 +29715,7 @@ tunnel-agent@^0.6.0: dependencies: safe-buffer "^5.0.1" -tunnel@0.0.6, tunnel@^0.0.6: +tunnel@^0.0.6: version "0.0.6" resolved "https://registry.npmmirror.com/tunnel/-/tunnel-0.0.6.tgz#72f1314b34a5b192db012324df2cc587ca47f92c" integrity sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg== @@ -25316,7 +29741,7 @@ type-check@~0.3.2: type-detect@4.0.8: version "4.0.8" - resolved "https://registry.npmmirror.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" + resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== type-fest@^0.13.1: @@ -25324,11 +29749,6 @@ type-fest@^0.13.1: resolved "https://registry.npmmirror.com/type-fest/-/type-fest-0.13.1.tgz#0172cb5bce80b0bd542ea348db50c7e21834d934" integrity sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg== -type-fest@^0.18.0: - version "0.18.1" - resolved "https://registry.npmmirror.com/type-fest/-/type-fest-0.18.1.tgz#db4bc151a4a2cf4eebf9add5db75508db6cc841f" - integrity sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw== - type-fest@^0.20.2: version "0.20.2" resolved "https://registry.npmmirror.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" @@ -25339,27 +29759,22 @@ type-fest@^0.21.3: resolved "https://registry.npmmirror.com/type-fest/-/type-fest-0.21.3.tgz#d260a24b0198436e133fa26a524a6d65fa3b2e37" integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w== -type-fest@^0.4.1: - version "0.4.1" - resolved "https://registry.npmmirror.com/type-fest/-/type-fest-0.4.1.tgz#8bdf77743385d8a4f13ba95f610f5ccd68c728f8" - integrity sha512-IwzA/LSfD2vC1/YDYMv/zHP4rDF1usCwllsDpbolT3D4fUepIO7f9K70jjmUewU/LmGUKJcwcVtDCpnKk4BPMw== - -type-fest@^0.6.0: - version "0.6.0" - resolved "https://registry.npmmirror.com/type-fest/-/type-fest-0.6.0.tgz#8d2a2370d3df886eb5c90ada1c5bf6188acf838b" - integrity sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg== - -type-fest@^0.8.1: - version "0.8.1" - resolved "https://registry.npmmirror.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d" - integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== - type-fest@^2.19.0: version "2.19.0" resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-2.19.0.tgz#88068015bb33036a598b952e55e9311a60fd3a9b" integrity sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA== -type-is@^1.6.16, type-is@^1.6.4, type-is@~1.6.18: +type-fest@^4.3.1: + version "4.41.0" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-4.41.0.tgz#6ae1c8e5731273c2bf1f58ad39cbae2c91a46c58" + integrity sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA== + +type-flag@^4.1.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/type-flag/-/type-flag-4.2.0.tgz#c92fd04b09309d66277a57d84a3f538b890307d8" + integrity sha512-6h6QpSh5glA+BrMCq8FINo4o/BqSHNQdfIPpeSBt0s/6mynPaQWWZL+RHaYm95htTbid/spUbJer1yOCsA6ezQ== + +type-is@^1.6.16, type-is@^1.6.18, type-is@~1.6.18: version "1.6.18" resolved "https://registry.npmmirror.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g== @@ -25367,6 +29782,15 @@ type-is@^1.6.16, type-is@^1.6.4, type-is@~1.6.18: media-typer "0.3.0" mime-types "~2.1.24" +type-is@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/type-is/-/type-is-2.0.1.tgz#64f6cf03f92fce4015c2b224793f6bdd4b068c97" + integrity sha512-OZs6gsjF4vMp32qrCbiVSkrFmXtG/AZhY3t0iAMrMBiAZyV9oALtXO8hsrHbMXF9x6L3grlFuwW2oAz7cav+Gw== + dependencies: + content-type "^1.0.5" + media-typer "^1.1.0" + mime-types "^3.0.0" + typed-array-buffer@^1.0.0: version "1.0.0" resolved "https://registry.npmmirror.com/typed-array-buffer/-/typed-array-buffer-1.0.0.tgz#18de3e7ed7974b0a729d3feecb94338d1472cd60" @@ -25376,6 +29800,15 @@ typed-array-buffer@^1.0.0: get-intrinsic "^1.2.1" is-typed-array "^1.1.10" +typed-array-buffer@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/typed-array-buffer/-/typed-array-buffer-1.0.3.tgz#a72395450a4869ec033fd549371b47af3a2ee536" + integrity sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw== + dependencies: + call-bound "^1.0.3" + es-errors "^1.3.0" + is-typed-array "^1.1.14" + typed-array-byte-length@^1.0.0: version "1.0.0" resolved "https://registry.npmmirror.com/typed-array-byte-length/-/typed-array-byte-length-1.0.0.tgz#d787a24a995711611fb2b87a4052799517b230d0" @@ -25386,6 +29819,17 @@ typed-array-byte-length@^1.0.0: has-proto "^1.0.1" is-typed-array "^1.1.10" +typed-array-byte-length@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/typed-array-byte-length/-/typed-array-byte-length-1.0.3.tgz#8407a04f7d78684f3d252aa1a143d2b77b4160ce" + integrity sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg== + dependencies: + call-bind "^1.0.8" + for-each "^0.3.3" + gopd "^1.2.0" + has-proto "^1.2.0" + is-typed-array "^1.1.14" + typed-array-byte-offset@^1.0.0: version "1.0.0" resolved "https://registry.npmmirror.com/typed-array-byte-offset/-/typed-array-byte-offset-1.0.0.tgz#cbbe89b51fdef9cd6aaf07ad4707340abbc4ea0b" @@ -25397,6 +29841,19 @@ typed-array-byte-offset@^1.0.0: has-proto "^1.0.1" is-typed-array "^1.1.10" +typed-array-byte-offset@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/typed-array-byte-offset/-/typed-array-byte-offset-1.0.4.tgz#ae3698b8ec91a8ab945016108aef00d5bff12355" + integrity sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ== + dependencies: + available-typed-arrays "^1.0.7" + call-bind "^1.0.8" + for-each "^0.3.3" + gopd "^1.2.0" + has-proto "^1.2.0" + is-typed-array "^1.1.15" + reflect.getprototypeof "^1.0.9" + typed-array-length@^1.0.4: version "1.0.4" resolved "https://registry.npmmirror.com/typed-array-length/-/typed-array-length-1.0.4.tgz#89d83785e5c4098bec72e08b319651f0eac9c1bb" @@ -25406,60 +29863,69 @@ typed-array-length@^1.0.4: for-each "^0.3.3" is-typed-array "^1.1.9" -typed-rest-client@^1.8.4: - version "1.8.11" - resolved "https://registry.npmmirror.com/typed-rest-client/-/typed-rest-client-1.8.11.tgz#6906f02e3c91e8d851579f255abf0fd60800a04d" - integrity sha512-5UvfMpd1oelmUPRbbaVnq+rHP7ng2cE4qoQkQeAqxRL6PklkxsM0g32/HL0yfvruK6ojQ5x8EE+HF4YV6DtuCA== +typed-array-length@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/typed-array-length/-/typed-array-length-1.0.7.tgz#ee4deff984b64be1e118b0de8c9c877d5ce73d3d" + integrity sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg== dependencies: - qs "^6.9.1" - tunnel "0.0.6" - underscore "^1.12.1" + call-bind "^1.0.7" + for-each "^0.3.3" + gopd "^1.0.1" + is-typed-array "^1.1.13" + possible-typed-array-names "^1.0.0" + reflect.getprototypeof "^1.0.6" + +typed-error@^3.0.2: + version "3.2.3" + resolved "https://registry.yarnpkg.com/typed-error/-/typed-error-3.2.3.tgz#e8c7fb7f86caa797ce25a25510832f8604328147" + integrity sha512-xmXIbAyEOYeRg11jY3AzjyB9clkxVfzBlHs3JgD3N6vPMMVBX+xNtQft4pKb1oM9lASdTISA+pOj1EejFr2SgQ== typedarray@^0.0.6: version "0.0.6" resolved "https://registry.npmmirror.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" integrity sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA== -types-ramda@^0.29.7: - version "0.29.7" - resolved "https://registry.npmmirror.com/types-ramda/-/types-ramda-0.29.7.tgz#dbd0dfc3c032502da2824b6f060f9b68bddffddc" - integrity sha512-8KBxZGJwUF3MpRkkJauSpvfHXk8Ssq15QXGuCBTDGeKd9PfheokkC3wAKRV3djej9O31Qa5M7Owsg8hF0GjtAw== +types-ramda@^0.30.1: + version "0.30.1" + resolved "https://registry.yarnpkg.com/types-ramda/-/types-ramda-0.30.1.tgz#03d255128e3696aeaac76281ca19949e01dddc78" + integrity sha512-1HTsf5/QVRmLzcGfldPFvkVsAdi1db1BBKzi7iW3KBUlOICg/nKnFS+jGqDJS3YD8VsWbAh7JiHeBvbsw8RPxA== dependencies: ts-toolbelt "^9.6.0" -typescript-json-schema@^0.63.0: - version "0.63.0" - resolved "https://registry.npmmirror.com/typescript-json-schema/-/typescript-json-schema-0.63.0.tgz#55ef6c4dde71625425b169d37e0de3d2ea14e093" - integrity sha512-vBfMBq4U/rZ5FIRi7u4o/YAdeRHsSabdGHogUlCPi0cYU0CGvS4Bdu8bSzyUsF+Kf5PTQUGh2TictJuQTDK6eQ== +typescript-json-schema@^0.67.0: + version "0.67.1" + resolved "https://registry.yarnpkg.com/typescript-json-schema/-/typescript-json-schema-0.67.1.tgz#e894a540a38bf6b07d1e3ec66764d43ac85df34b" + integrity sha512-vKTZB/RoYTIBdVP7E7vrgHMCssBuhja91wQy498QIVhvfRimaOgjc98uwAXmZ7mbLUytJmOSbF11wPz+ByQeXg== dependencies: "@types/json-schema" "^7.0.9" - "@types/node" "^16.9.2" + "@types/node" "^18.11.9" glob "^7.1.7" path-equal "^1.2.5" safe-stable-stringify "^2.2.0" ts-node "^10.9.1" - typescript "~5.1.0" + typescript "~5.5.0" + vm2 "^3.10.0" yargs "^17.1.1" -"typescript@>=3 < 6": - version "5.3.3" - resolved "https://registry.npmmirror.com/typescript/-/typescript-5.3.3.tgz#b3ce6ba258e72e6305ba66f5c9b452aaee3ffe37" - integrity sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw== +typescript@~5.4.0: + version "5.4.5" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.4.5.tgz#42ccef2c571fdbd0f6718b1d1f5e6e5ef006f611" + integrity sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ== -typescript@~5.1.0: - version "5.1.6" - resolved "https://registry.npmmirror.com/typescript/-/typescript-5.1.6.tgz#02f8ac202b6dad2c0dd5e0913745b47a37998274" - integrity sha512-zaWCozRZ6DLEWAWFrVDz1H6FVXzUSfTy5FUMWsQlU8Ym5JP9eO4xkTIROFCQvhQf61z6O/G6ugw3SgAnvvm+HA== +typescript@~5.5.0: + version "5.5.4" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.5.4.tgz#d9852d6c82bad2d2eda4fd74a5762a8f5909e9ba" + integrity sha512-Mtq29sKDAEYP7aljRgtPOpTvOfbwRWlS6dPRzwjdE+C0R4brX/GUyhHSecbHMFLNBLcJIPt9nl9yG5TZ1weH+Q== -typescript@~5.2.0: - version "5.2.2" - resolved "https://registry.npmmirror.com/typescript/-/typescript-5.2.2.tgz#5ebb5e5a5b75f085f22bc3f8460fba308310fa78" - integrity sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w== +ua-parser-js@^1.0.35: + version "1.0.41" + resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-1.0.41.tgz#bd04dc9ec830fcf9e4fad35cf22dcedd2e3b4e9c" + integrity sha512-LbBDqdIC5s8iROCUjMbW1f5dJQTEFB1+KO9ogbvlb3nm9n4YHa5p4KTvFPWvh2Hs8gZMBuiB1/8+pdfe/tDPug== -uc.micro@^1.0.1, uc.micro@^1.0.5: - version "1.0.6" - resolved "https://registry.npmmirror.com/uc.micro/-/uc.micro-1.0.6.tgz#9c411a802a409a91fc6cf74081baba34b24499ac" - integrity sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA== +uc.micro@^2.0.0, uc.micro@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/uc.micro/-/uc.micro-2.1.0.tgz#f8d3f7d0ec4c3dea35a7e3c8efa4cb8b45c9e7ee" + integrity sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A== uglify-js@^3.1.4: version "3.17.4" @@ -25473,21 +29939,11 @@ uid-safe@~2.1.5: dependencies: random-bytes "~1.0.0" -uid2@0.0.3: - version "0.0.3" - resolved "https://registry.npmmirror.com/uid2/-/uid2-0.0.3.tgz#483126e11774df2f71b8b639dcd799c376162b82" - integrity sha512-5gSP1liv10Gjp8cMEnFd6shzkL/D6W1uhXSFNCxDC+YI8+L8wkCYCbJ7n77Ezb4wE/xzMogecE+DtamEe9PZjg== - uid2@0.0.x: version "0.0.4" resolved "https://registry.npmmirror.com/uid2/-/uid2-0.0.4.tgz#033f3b1d5d32505f5ce5f888b9f3b667123c0a44" integrity sha512-IevTus0SbGwQzYh3+fRsAMTVVPOoIVufzacXcHPmdlle1jUpq7BRL+mw3dgeLanvGZdwwbWhRV6XrcFNdBmjWA== -uid2@^1.0.0: - version "1.0.0" - resolved "https://registry.npmmirror.com/uid2/-/uid2-1.0.0.tgz#ef8d95a128d7c5c44defa1a3d052eecc17a06bfb" - integrity sha512-+I6aJUv63YAcY9n4mQreLUt0d4lvwkkopDNmpomkAUz0fAkEMV9pRWxN0EjhW1YfRhcuyHg2v3mwddCDW1+LFQ== - unbox-primitive@^1.0.2: version "1.0.2" resolved "https://registry.npmmirror.com/unbox-primitive/-/unbox-primitive-1.0.2.tgz#29032021057d5e6cdbd08c5129c226dff8ed6f9e" @@ -25498,50 +29954,52 @@ unbox-primitive@^1.0.2: has-symbols "^1.0.3" which-boxed-primitive "^1.0.2" +unbox-primitive@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/unbox-primitive/-/unbox-primitive-1.1.0.tgz#8d9d2c9edeea8460c7f35033a88867944934d1e2" + integrity sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw== + dependencies: + call-bound "^1.0.3" + has-bigints "^1.0.2" + has-symbols "^1.1.0" + which-boxed-primitive "^1.1.1" + underscore@1.12.1: version "1.12.1" resolved "https://registry.npmmirror.com/underscore/-/underscore-1.12.1.tgz#7bb8cc9b3d397e201cf8553336d262544ead829e" integrity sha512-hEQt0+ZLDVUMhebKxL4x1BTtDY7bavVofhZ9KZ4aI26X9SRaE+Y3m83XUL1UP2jn8ynjndwCCpEHdUG+9pP1Tw== -underscore@^1.12.1: - version "1.13.6" - resolved "https://registry.npmmirror.com/underscore/-/underscore-1.13.6.tgz#04786a1f589dc6c09f761fc5f45b89e935136441" - integrity sha512-+A5Sja4HP1M08MaXya7p5LvjuM7K6q/2EaC0+iovj/wOcMsTzMvDFbasi/oSapiwOlt252IqsKqPjCl7huKS0A== +underscore@^1.13.3: + version "1.13.8" + resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.13.8.tgz#a93a21186c049dbf0e847496dba72b7bd8c1e92b" + integrity sha512-DXtD3ZtEQzc7M8m4cXotyHR+FAS18C64asBYY5vqZexfYryNNnDc02W4hKg3rdQuqOYas1jkseX0+nZXjTXnvQ== undici-types@~5.26.4: version "5.26.5" resolved "https://registry.npmmirror.com/undici-types/-/undici-types-5.26.5.tgz#bcd539893d00b56e964fd2657a4866b221a65617" integrity sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA== -undici@^5.24.0: - version "5.28.2" - resolved "https://registry.npmmirror.com/undici/-/undici-5.28.2.tgz#fea200eac65fc7ecaff80a023d1a0543423b4c91" - integrity sha512-wh1pHJHnUeQV5Xa8/kyQhO7WFa8M34l026L5P/+2TYiakvGy5Rdc8jWZVyG7ieht/0WgJLEd3kcU5gKx+6GC8w== - dependencies: - "@fastify/busboy" "^2.0.0" - -unicode-canonical-property-names-ecmascript@^2.0.0: - version "2.0.0" - resolved "https://registry.npmmirror.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz#301acdc525631670d39f6146e0e77ff6bbdebddc" - integrity sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ== +undici-types@~7.16.0: + version "7.16.0" + resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-7.16.0.tgz#ffccdff36aea4884cbfce9a750a0580224f58a46" + integrity sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw== -unicode-match-property-ecmascript@^2.0.0: - version "2.0.0" - resolved "https://registry.npmmirror.com/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz#54fd16e0ecb167cf04cf1f756bdcc92eba7976c3" - integrity sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q== +undici@^5.28.2: + version "5.29.0" + resolved "https://registry.yarnpkg.com/undici/-/undici-5.29.0.tgz#419595449ae3f2cdcba3580a2e8903399bd1f5a3" + integrity sha512-raqeBD6NQK4SkWhQzeYKd1KmIG6dllBOTt55Rmkt4HtI9mwdWtJljnrXjAFUBLTSN67HWrOIZ3EPF4kjUw80Bg== dependencies: - unicode-canonical-property-names-ecmascript "^2.0.0" - unicode-property-aliases-ecmascript "^2.0.0" + "@fastify/busboy" "^2.0.0" -unicode-match-property-value-ecmascript@^2.1.0: - version "2.1.0" - resolved "https://registry.npmmirror.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz#cb5fffdcd16a05124f5a4b0bf7c3770208acbbe0" - integrity sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA== +undici@^7.2.3, undici@^7.21.0, undici@^7.24.5: + version "7.25.0" + resolved "https://registry.yarnpkg.com/undici/-/undici-7.25.0.tgz#7d72fc429a0421769ca2966fd07cac875c85b781" + integrity sha512-xXnp4kTyor2Zq+J1FfPI6Eq3ew5h6Vl0F/8d9XU5zZQf1tX9s2Su1/3PiMmUANFULpmksxkClamIZcaUqryHsQ== -unicode-property-aliases-ecmascript@^2.0.0: - version "2.1.0" - resolved "https://registry.npmmirror.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz#43d41e3be698bd493ef911077c9b131f827e8ccd" - integrity sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w== +unicode-emoji-modifier-base@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/unicode-emoji-modifier-base/-/unicode-emoji-modifier-base-1.0.0.tgz#dbbd5b54ba30f287e2a8d5a249da6c0cef369459" + integrity sha512-yLSH4py7oFH3oG/9K+XWrz1pSi3dfUrWEnInbxMfArOfc1+33BlGPQtLsOYwvdMy11AwUBetYuaRxSPqgkq+8g== unified@^10.0.0: version "10.1.2" @@ -25556,13 +30014,6 @@ unified@^10.0.0: trough "^2.0.0" vfile "^5.0.0" -unique-filename@^2.0.0: - version "2.0.1" - resolved "https://registry.npmmirror.com/unique-filename/-/unique-filename-2.0.1.tgz#e785f8675a9a7589e0ac77e0b5c34d2eaeac6da2" - integrity sha512-ODWHtkkdx3IAR+veKxFV+VBkUMcN+FaqzUUd7IZzt+0zhDZFPFxhlqwPF3YQvMHx1TD0tdgYl+kuPnJ8E6ql7A== - dependencies: - unique-slug "^3.0.0" - unique-filename@^3.0.0: version "3.0.0" resolved "https://registry.npmmirror.com/unique-filename/-/unique-filename-3.0.0.tgz#48ba7a5a16849f5080d26c760c86cf5cf05770ea" @@ -25570,13 +30021,6 @@ unique-filename@^3.0.0: dependencies: unique-slug "^4.0.0" -unique-slug@^3.0.0: - version "3.0.0" - resolved "https://registry.npmmirror.com/unique-slug/-/unique-slug-3.0.0.tgz#6d347cf57c8a7a7a6044aabd0e2d74e4d76dc7c9" - integrity sha512-8EyMynh679x/0gqE9fT9oilG+qEt+ibFyqjuVTsZn1+CMxH+XLlpvr2UZx4nVcCwTpx81nICr2JQFkM+HPLq4w== - dependencies: - imurmurhash "^0.1.4" - unique-slug@^4.0.0: version "4.0.0" resolved "https://registry.npmmirror.com/unique-slug/-/unique-slug-4.0.0.tgz#6bae6bb16be91351badd24cdce741f892a6532e3" @@ -25647,7 +30091,7 @@ universalify@^0.1.0: universalify@^0.2.0: version "0.2.0" - resolved "https://registry.npmmirror.com/universalify/-/universalify-0.2.0.tgz#6451760566fa857534745ab1dde952d1b1761be0" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.2.0.tgz#6451760566fa857534745ab1dde952d1b1761be0" integrity sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg== universalify@^2.0.0: @@ -25655,13 +30099,6 @@ universalify@^2.0.0: resolved "https://registry.npmmirror.com/universalify/-/universalify-2.0.1.tgz#168efc2180964e6386d061e094df61afe239b18d" integrity sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw== -unixify@^1.0.0: - version "1.0.0" - resolved "https://registry.npmmirror.com/unixify/-/unixify-1.0.0.tgz#3a641c8c2ffbce4da683a5c70f03a462940c2090" - integrity sha512-6bc58dPYhCMHHuwxldQxO3RRNZ4eCogZ/st++0+fcC1nr0jiGUtAdBJ2qzmLQWSxbtz42pWt4QQMiZ9HvZf5cg== - dependencies: - normalize-path "^2.1.1" - unpipe@1.0.0, unpipe@~1.0.0: version "1.0.0" resolved "https://registry.npmmirror.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" @@ -25685,6 +30122,14 @@ update-browserslist-db@^1.0.13: escalade "^3.1.1" picocolors "^1.0.0" +update-browserslist-db@^1.2.3: + version "1.2.3" + resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.2.3.tgz#64d76db58713136acbeb4c49114366cc6cc2e80d" + integrity sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w== + dependencies: + escalade "^3.2.0" + picocolors "^1.1.1" + uri-js@^4.2.2, uri-js@^4.4.1: version "4.4.1" resolved "https://registry.npmmirror.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" @@ -25712,18 +30157,35 @@ url-parse@^1.5.10, url-parse@^1.5.3: querystringify "^2.1.1" requires-port "^1.0.0" -url@^0.11.0: - version "0.11.3" - resolved "https://registry.npmmirror.com/url/-/url-0.11.3.tgz#6f495f4b935de40ce4a0a52faee8954244f3d3ad" - integrity sha512-6hxOLGfZASQK/cijlZnZJTq8OXAkt/3YGfQX45vvMYXpZoo8NdWZcY73K108Jf759lS1Bv/8wXnHDTSz17dSRw== +url@^0.11.4: + version "0.11.4" + resolved "https://registry.yarnpkg.com/url/-/url-0.11.4.tgz#adca77b3562d56b72746e76b330b7f27b6721f3c" + integrity sha512-oCwdVC7mTuWiPyjLUz/COz5TLk6wgp0RCsN+wHZ2Ekneac9w8uuV0njcbbie2ME+Vs+d6duwmYuR3HgQXs1fOg== dependencies: punycode "^1.4.1" + qs "^6.12.3" + +urllib@^3.23.0: + version "3.27.3" + resolved "https://registry.yarnpkg.com/urllib/-/urllib-3.27.3.tgz#feaf39d254cd36d3b73c921704a695db5c9de84a" + integrity sha512-24ht/hHAkhWXbqSCM499B8gFPXaf4aFQJNqJH5pMsvfyo+aM3zKuQ/uiZ/mdz41Nnw6ItuiqMVMK5VDAlAHLlw== + dependencies: + default-user-agent "^1.0.0" + digest-header "^1.0.0" + form-data-encoder "^1.7.2" + formdata-node "^4.3.3" + formstream "^1.1.1" + mime-types "^2.1.35" + pump "^3.0.0" qs "^6.11.2" + type-fest "^4.3.1" + undici "^5.28.2" + ylru "^1.3.2" -urlpattern-polyfill@^10.0.0: - version "10.0.0" - resolved "https://registry.npmmirror.com/urlpattern-polyfill/-/urlpattern-polyfill-10.0.0.tgz#f0a03a97bfb03cdf33553e5e79a2aadd22cac8ec" - integrity sha512-H/A06tKD7sS1O1X2SshBVeA5FLycRpjqiBeqGKmBwBDBy28EnRjORxTNe269KSSr5un5qyWi1iL61wLxpd+ZOg== +urlpattern-polyfill@^8.0.0: + version "8.0.2" + resolved "https://registry.yarnpkg.com/urlpattern-polyfill/-/urlpattern-polyfill-8.0.2.tgz#99f096e35eff8bf4b5a2aa7d58a1523d6ebc7ce5" + integrity sha512-Qp95D4TPJl1kC9SKigDcqgyM2VDVO4RiJc2d4qe5GrYm+zbIQCWWKAFaJNQ4BhdFeDGwBmAxqJBwWSJDb9T3BQ== use-callback-ref@^1.3.0: version "1.3.1" @@ -25732,20 +30194,37 @@ use-callback-ref@^1.3.0: dependencies: tslib "^2.0.0" -use-immer@^0.9.0: - version "0.9.0" - resolved "https://registry.npmmirror.com/use-immer/-/use-immer-0.9.0.tgz#66e4e8f7ab75df45e96dfd5c56337f9fd49db9fd" - integrity sha512-/L+enLi0nvuZ6j4WlyK0US9/ECUtV5v9RUbtxnn5+WbtaXYUaOBoKHDNL9I5AETdurQ4rIFIj/s+Z5X80ATyKw== +use-composed-ref@^1.3.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/use-composed-ref/-/use-composed-ref-1.4.0.tgz#09e023bf798d005286ad85cd20674bdf5770653b" + integrity sha512-djviaxuOOh7wkj0paeO1Q/4wMZ8Zrnag5H6yBvzN7AKKe8beOaED9SF5/ByLqsku8NP4zQqsvM2u3ew/tJK8/w== + +use-immer@^0.11.0: + version "0.11.0" + resolved "https://registry.yarnpkg.com/use-immer/-/use-immer-0.11.0.tgz#8dd46cbc913cbc3298e60b8f2d9f58d82fc22e08" + integrity sha512-RNAqi3GqsWJ4bcCd4LMBgdzvPmTABam24DUaFiKfX9s3MSorNRz9RDZYJkllJoMHUxVLMDetwAuCDeyWNrp1yA== + +use-isomorphic-layout-effect@^1.1.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/use-isomorphic-layout-effect/-/use-isomorphic-layout-effect-1.2.1.tgz#2f11a525628f56424521c748feabc2ffcc962fce" + integrity sha512-tpZZ+EX0gaghDAiFR37hj5MgY6ZN55kLiPkJsKxBMZ6GZdOSPJXiOzPM984oPYZ5AnehYx5WQp1+ME8I/P/pRA== + +use-latest@^1.2.1: + version "1.3.0" + resolved "https://registry.yarnpkg.com/use-latest/-/use-latest-1.3.0.tgz#549b9b0d4c1761862072f0899c6f096eb379137a" + integrity sha512-mhg3xdm9NaM8q+gLT8KryJPnRFOz1/5XPBhmDEVZK1webPzDjrPk7f/mbpeLqTgB9msytYWANxgALOCJKnLvcQ== + dependencies: + use-isomorphic-layout-effect "^1.1.1" use-memo-one@^1.1.1: version "1.1.3" resolved "https://registry.npmmirror.com/use-memo-one/-/use-memo-one-1.1.3.tgz#2fd2e43a2169eabc7496960ace8c79efef975e99" integrity sha512-g66/K7ZQGYrI6dy8GLpVcMsBp4s17xNkYJVSMvTEevGy3nDxHOfE6z8BVE22+5G5x7t3+bhzrlTDB7ObrEE0cQ== -use-resize-observer@^8.0.0: - version "8.0.0" - resolved "https://registry.npmmirror.com/use-resize-observer/-/use-resize-observer-8.0.0.tgz#69bd80c1ddd94f3758563fe107efb25fed85067a" - integrity sha512-n0iKSeiQpJCyaFh5JA0qsVLBIovsF4EIIR1G6XiBwKJN66ZrD4Oj62bjcuTAATPKiSp6an/2UZZxCf/67fk3sQ== +use-resize-observer@^9.1.0: + version "9.1.0" + resolved "https://registry.yarnpkg.com/use-resize-observer/-/use-resize-observer-9.1.0.tgz#14735235cf3268569c1ea468f8a90c5789fc5c6c" + integrity sha512-R25VqO9Wb3asSD4eqtcxk8sJalvIOYBqS8MNZlpDSQ4l4xMQxC/J7Id9HoTqPq8FwULIn0PVW+OAqF2dyYbjow== dependencies: "@juggle/resize-observer" "^3.3.1" @@ -25757,31 +30236,22 @@ use-sidecar@^1.1.2: detect-node-es "^1.1.0" tslib "^2.0.0" -use-sync-external-store@^1.0.0, use-sync-external-store@^1.2.0: +use-sync-external-store@^1.2.0: version "1.2.0" resolved "https://registry.npmmirror.com/use-sync-external-store/-/use-sync-external-store-1.2.0.tgz#7dbefd6ef3fe4e767a0cf5d7287aacfb5846928a" integrity sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA== +use-sync-external-store@^1.4.0, use-sync-external-store@^1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/use-sync-external-store/-/use-sync-external-store-1.6.0.tgz#b174bfa65cb2b526732d9f2ac0a408027876f32d" + integrity sha512-Pp6GSwGP/NrPIrxVFAIkOQeyw8lFenOHijQWkUTrDvrF4ALqylP2C/KCkeS9dpUM3KvYRQhna5vt7IL95+ZQ9w== + util-deprecate@^1.0.1, util-deprecate@^1.0.2, util-deprecate@~1.0.1: version "1.0.2" resolved "https://registry.npmmirror.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== -util@^0.10.4: - version "0.10.4" - resolved "https://registry.npmmirror.com/util/-/util-0.10.4.tgz#3aa0125bfe668a4672de58857d3ace27ecb76901" - integrity sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A== - dependencies: - inherits "2.0.3" - -util@^0.11.0: - version "0.11.1" - resolved "https://registry.npmmirror.com/util/-/util-0.11.1.tgz#3236733720ec64bb27f6e26f421aaa2e1b588d61" - integrity sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ== - dependencies: - inherits "2.0.3" - -util@^0.12.3: +util@^0.12.3, util@^0.12.4, util@^0.12.5: version "0.12.5" resolved "https://registry.npmmirror.com/util/-/util-0.12.5.tgz#5f17a6059b73db61a875668781a1c2b136bd6fbc" integrity sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA== @@ -25807,6 +30277,16 @@ utils-merge@1.0.1, utils-merge@1.x.x, utils-merge@^1.0.1: resolved "https://registry.npmmirror.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" integrity sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA== +uuid@^10.0.0: + version "10.0.0" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-10.0.0.tgz#5a95aa454e6e002725c79055fd42aaba30ca6294" + integrity sha512-8XkAphELsDnEGrDxUOHB3RGvXz6TeuYSGEZBOjtTtPm2lwhGBjLgOzLHB63IUWfBpNucQjND6d3AOudO+H3RWQ== + +uuid@^11.0.0, uuid@^11.0.2: + version "11.1.0" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-11.1.0.tgz#9549028be1753bb934fc96e2bca09bb4105ae912" + integrity sha512-0/A9rDy9P7cJ+8w1c9WD9V//9Wj15Ce2MPz8Ri6032usz+NfePxx5AcN3bN+r6ZL6jEo066/yNYB3tn4pQEx+A== + uuid@^3.3.2, uuid@^3.4.0: version "3.4.0" resolved "https://registry.npmmirror.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" @@ -25837,15 +30317,10 @@ v8-compile-cache-lib@^3.0.1: resolved "https://registry.npmmirror.com/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz#6336e8d71965cb3d35a1bbb7868445a7c05264bf" integrity sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg== -v8-compile-cache@2.3.0: - version "2.3.0" - resolved "https://registry.npmmirror.com/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz#2de19618c66dc247dcfb6f99338035d8245a2cee" - integrity sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA== - v8-to-istanbul@^9.0.1: - version "9.2.0" - resolved "https://registry.npmmirror.com/v8-to-istanbul/-/v8-to-istanbul-9.2.0.tgz#2ed7644a245cddd83d4e087b9b33b3e62dfd10ad" - integrity sha512-/EH/sDgxU2eGxajKdwLCDmQ4FWq+kpi3uCmBGpw1xJtnAxEjlD8j8PEiGWpCIMIs3ciNAgH0d3TTJiUkYzyZjA== + version "9.3.0" + resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-9.3.0.tgz#b9572abfa62bd556c16d75fdebc1a411d5ff3175" + integrity sha512-kiGUalWN+rgBJ/1OHZsBtU4rXZOfj/7rKQxULKlIzwzQSvMJUUNgPwJEEh7gU6xEVxC0ahoOBvN2YI8GH6FNgA== dependencies: "@jridgewell/trace-mapping" "^0.3.12" "@types/istanbul-lib-coverage" "^2.0.1" @@ -25856,28 +30331,6 @@ valid-url@^1.0.9: resolved "https://registry.npmmirror.com/valid-url/-/valid-url-1.0.9.tgz#1c14479b40f1397a75782f115e4086447433a200" integrity sha512-QQDsV8OnSf5Uc30CKSwG9lnhMPe6exHtTXLRYX8uMwKENy640pU+2BgBL0LRbDh/eYRahNCS7aewCx0wf3NYVA== -validate-npm-package-license@3.0.4, validate-npm-package-license@^3.0.1, validate-npm-package-license@^3.0.4: - version "3.0.4" - resolved "https://registry.npmmirror.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" - integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew== - dependencies: - spdx-correct "^3.0.0" - spdx-expression-parse "^3.0.0" - -validate-npm-package-name@5.0.0, validate-npm-package-name@^5.0.0: - version "5.0.0" - resolved "https://registry.npmmirror.com/validate-npm-package-name/-/validate-npm-package-name-5.0.0.tgz#f16afd48318e6f90a1ec101377fa0384cfc8c713" - integrity sha512-YuKoXDAhBYxY7SfOKxHBDoSyENFeW5VvIIQp2TGQuit8gpK6MnWaQelBKxso72DoxTZfZdcP3W90LqpSkgPzLQ== - dependencies: - builtins "^5.0.0" - -validate-npm-package-name@^3.0.0: - version "3.0.0" - resolved "https://registry.npmmirror.com/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz#5fa912d81eb7d0c74afc140de7317f0ca7df437e" - integrity sha512-M6w37eVCMMouJ9V/sdPGnC5H4uDr73/+xdq0FBLO3TFFX1+7wiUY6Es328NN+y43tmY+doUdN9g9J21vqB7iLw== - dependencies: - builtins "^1.0.3" - validate.io-array@^1.0.3: version "1.0.6" resolved "https://registry.npmmirror.com/validate.io-array/-/validate.io-array-1.0.6.tgz#5b5a2cafd8f8b85abb2f886ba153f2d93a27774d" @@ -25908,10 +30361,10 @@ validate.io-number@^1.0.3: resolved "https://registry.npmmirror.com/validate.io-number/-/validate.io-number-1.0.3.tgz#f63ffeda248bf28a67a8d48e0e3b461a1665baf8" integrity sha512-kRAyotcbNaSYoDnXvb4MHg/0a1egJdLwS6oJ38TJY7aw9n93Fl/3blIXdyYvPOp55CNxywooG/3BcrwNrBpcSg== -value-or-promise@^1.0.11, value-or-promise@^1.0.12: - version "1.0.12" - resolved "https://registry.npmmirror.com/value-or-promise/-/value-or-promise-1.0.12.tgz#0e5abfeec70148c78460a849f6b003ea7986f15c" - integrity sha512-Z6Uz+TYwEqE7ZN50gwn+1LCVo9ZVrpxRPOhOLnncYkY1ZzOYtrX8Fwf/rFktZ8R5mJms6EZf5TqNOMeZmnPq9Q== +value-or-promise@1.0.11: + version "1.0.11" + resolved "https://registry.yarnpkg.com/value-or-promise/-/value-or-promise-1.0.11.tgz#3e90299af31dd014fe843fe309cefa7c1d94b140" + integrity sha512-41BrgH+dIbCFXClcSapVs5M6GkENd3gQOJpEfPDNa71LsUGMXDL0jMWpI/Rh7WhX+Aalfz2TTS3Zt5pUsbnhLg== vary@^1, vary@^1.1.2, vary@~1.1.2: version "1.1.2" @@ -25927,6 +30380,14 @@ verror@1.10.0: core-util-is "1.0.2" extsprintf "^1.2.0" +vfile-location@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/vfile-location/-/vfile-location-4.1.0.tgz#69df82fb9ef0a38d0d02b90dd84620e120050dd0" + integrity sha512-YF23YMyASIIJXpktBa4vIGLJ5Gs88UB/XePgqPmTa7cDA+JeO3yclbpheQYCHjVHBn/yePzrXuygIL+xbvRYHw== + dependencies: + "@types/unist" "^2.0.0" + vfile "^5.0.0" + vfile-message@^3.0.0: version "3.1.4" resolved "https://registry.npmmirror.com/vfile-message/-/vfile-message-3.1.4.tgz#15a50816ae7d7c2d1fa87090a7f9f96612b59dea" @@ -25950,48 +30411,49 @@ vm-browserify@^1.0.1: resolved "https://registry.npmmirror.com/vm-browserify/-/vm-browserify-1.1.2.tgz#78641c488b8e6ca91a75f511e7a3b32a86e5dda0" integrity sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ== +vm2@^3.10.0: + version "3.10.5" + resolved "https://registry.yarnpkg.com/vm2/-/vm2-3.10.5.tgz#cc79e75bc344805bc9796a28dc91baa388dc944f" + integrity sha512-3P/2QDccVFBcujfCOeP8vVNuGfuBJHEuvGR8eMmI10p/iwLL2UwF5PDaNaoOS2pRGQEDmJRyeEcc8kmm2Z59RA== + dependencies: + acorn "^8.15.0" + acorn-walk "^8.3.4" + vscode-languageserver-types@^3.17.1: version "3.17.5" resolved "https://registry.npmmirror.com/vscode-languageserver-types/-/vscode-languageserver-types-3.17.5.tgz#3273676f0cf2eab40b3f44d085acbb7f08a39d8a" integrity sha512-Ld1VelNuX9pdF39h2Hgaeb5hEZM2Z3jUrrMgWQAu82jMtZp7p3vJT3BzToKtZI7NgQssZje5o0zryOrhQvzQAg== -w3c-hr-time@^1.0.2: - version "1.0.2" - resolved "https://registry.npmmirror.com/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz#0a89cdf5cc15822df9c360543676963e0cc308cd" - integrity sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ== - dependencies: - browser-process-hrtime "^1.0.0" - w3c-keyname@^2.2.4: version "2.2.8" resolved "https://registry.npmmirror.com/w3c-keyname/-/w3c-keyname-2.2.8.tgz#7b17c8c6883d4e8b86ac8aba79d39e880f8869c5" integrity sha512-dpojBhNsCNN7T82Tm7k26A6G9ML3NkhDsnw9n/eoxSRlVBB4CEtIQ/KTCLI2Fwf3ataSXRhYFkQi3SlnFwPvPQ== -w3c-xmlserializer@^2.0.0: - version "2.0.0" - resolved "https://registry.npmmirror.com/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz#3e7104a05b75146cc60f564380b7f683acf1020a" - integrity sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA== - dependencies: - xml-name-validator "^3.0.0" - w3c-xmlserializer@^4.0.0: version "4.0.0" - resolved "https://registry.npmmirror.com/w3c-xmlserializer/-/w3c-xmlserializer-4.0.0.tgz#aebdc84920d806222936e3cdce408e32488a3073" + resolved "https://registry.yarnpkg.com/w3c-xmlserializer/-/w3c-xmlserializer-4.0.0.tgz#aebdc84920d806222936e3cdce408e32488a3073" integrity sha512-d+BFHzbiCx6zGfz0HyQ6Rg69w9k19nviJspaj4yNscGjrHu94sVP+aRm75yEbCh+r2/yR+7q6hux9LVtbuTGBw== dependencies: xml-name-validator "^4.0.0" +w3c-xmlserializer@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/w3c-xmlserializer/-/w3c-xmlserializer-5.0.0.tgz#f925ba26855158594d907313cedd1476c5967f6c" + integrity sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA== + dependencies: + xml-name-validator "^5.0.0" + walker@^1.0.8: version "1.0.8" - resolved "https://registry.npmmirror.com/walker/-/walker-1.0.8.tgz#bd498db477afe573dc04185f011d3ab8a8d7653f" + resolved "https://registry.yarnpkg.com/walker/-/walker-1.0.8.tgz#bd498db477afe573dc04185f011d3ab8a8d7653f" integrity sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ== dependencies: makeerror "1.0.12" -watchpack@^2.4.0: - version "2.4.0" - resolved "https://registry.npmmirror.com/watchpack/-/watchpack-2.4.0.tgz#fa33032374962c78113f93c7f2fb4c54c9862a5d" - integrity sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg== +watchpack@^2.5.1: + version "2.5.1" + resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-2.5.1.tgz#dd38b601f669e0cbf567cb802e75cead82cde102" + integrity sha512-Zn5uXdcFNIA1+1Ei5McRd+iRzfhENPCe7LeABkJtNulSxjma+l7ltNx55BWZkRlwRnpOgHqxnjyaDgJnNXnqzg== dependencies: glob-to-regexp "^0.4.1" graceful-fs "^4.1.2" @@ -26003,7 +30465,7 @@ wbuf@^1.1.0, wbuf@^1.7.3: dependencies: minimalistic-assert "^1.0.0" -wcwidth@^1.0.0, wcwidth@^1.0.1: +wcwidth@^1.0.1: version "1.0.1" resolved "https://registry.npmmirror.com/wcwidth/-/wcwidth-1.0.1.tgz#f0b0dcf915bc5ff1528afadb2c0e17b532da2fe8" integrity sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg== @@ -26019,36 +30481,41 @@ web-encoding@^1.1.5: optionalDependencies: "@zxing/text-encoding" "0.9.0" +web-namespaces@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/web-namespaces/-/web-namespaces-2.0.1.tgz#1010ff7c650eccb2592cebeeaf9a1b253fd40692" + integrity sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ== + +web-streams-polyfill@4.0.0-beta.3: + version "4.0.0-beta.3" + resolved "https://registry.yarnpkg.com/web-streams-polyfill/-/web-streams-polyfill-4.0.0-beta.3.tgz#2898486b74f5156095e473efe989dcf185047a38" + integrity sha512-QW95TCTaHmsYfHDybGMwO5IJIM93I/6vTRk+daHTWFPhwh+C8Cg7j7XyKrwrj8Ib6vYXe0ocYNrmzY4xAAN6ug== + web-streams-polyfill@^3.0.3: version "3.3.2" resolved "https://registry.npmmirror.com/web-streams-polyfill/-/web-streams-polyfill-3.3.2.tgz#32e26522e05128203a7de59519be3c648004343b" integrity sha512-3pRGuxRF5gpuZc0W+EpwQRmCD7gRqcDOMt688KmdlDAgAyaB1XlN0zq2njfDNm44XVdIouE7pZ6GzbdyH47uIQ== -web-tree-sitter@=0.20.3: - version "0.20.3" - resolved "https://registry.npmmirror.com/web-tree-sitter/-/web-tree-sitter-0.20.3.tgz#3dd17b283ad63b1d8c07c5ea814f0fefb2b1f776" - integrity sha512-zKGJW9r23y3BcJusbgvnOH2OYAW40MXAOi9bi3Gcc7T4Gms9WWgXF8m6adsJWpGJEhgOzCrfiz1IzKowJWrtYw== +web-tree-sitter@=0.24.5: + version "0.24.5" + resolved "https://registry.yarnpkg.com/web-tree-sitter/-/web-tree-sitter-0.24.5.tgz#16cea449da63012f23ca7b83bd32817dd0520400" + integrity sha512-+J/2VSHN8J47gQUAvF8KDadrfz6uFYVjxoxbKWDoXVsH2u7yLdarCnIURnrMA6uSRkgX3SdmqM5BOoQjPdSh5w== webidl-conversions@^3.0.0: version "3.0.1" resolved "https://registry.npmmirror.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" integrity sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ== -webidl-conversions@^5.0.0: - version "5.0.0" - resolved "https://registry.npmmirror.com/webidl-conversions/-/webidl-conversions-5.0.0.tgz#ae59c8a00b121543a2acc65c0434f57b0fc11aff" - integrity sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA== - -webidl-conversions@^6.1.0: - version "6.1.0" - resolved "https://registry.npmmirror.com/webidl-conversions/-/webidl-conversions-6.1.0.tgz#9111b4d7ea80acd40f5270d666621afa78b69514" - integrity sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w== - webidl-conversions@^7.0.0: version "7.0.0" - resolved "https://registry.npmmirror.com/webidl-conversions/-/webidl-conversions-7.0.0.tgz#256b4e1882be7debbf01d05f0aa2039778ea080a" + resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-7.0.0.tgz#256b4e1882be7debbf01d05f0aa2039778ea080a" integrity sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g== +webidl-conversions@^8.0.1: + version "8.0.1" + resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-8.0.1.tgz#0657e571fe6f06fcb15ca50ed1fdbcb495cd1686" + integrity sha512-BMhLD/Sw+GbJC21C/UgyaZX41nPt8bUTg+jWyDeg7e7YN4xOM05YPSIXceACnXVtqyEw/LMClUQMtMZ+PGGpqQ== + webpack-dev-middleware@^7.1.0: version "7.2.1" resolved "https://registry.npmmirror.com/webpack-dev-middleware/-/webpack-dev-middleware-7.2.1.tgz#2af00538b6e4eda05f5afdd5d711dbebc05958f7" @@ -26061,6 +30528,18 @@ webpack-dev-middleware@^7.1.0: range-parser "^1.2.1" schema-utils "^4.0.0" +webpack-dev-middleware@^7.4.2: + version "7.4.5" + resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-7.4.5.tgz#d4e8720aa29cb03bc158084a94edb4594e3b7ac0" + integrity sha512-uxQ6YqGdE4hgDKNf7hUiPXOdtkXvBJXrfEGYSx7P7LC8hnUYGK70X6xQXUvXeNyBDDcsiQXpG2m3G9vxowaEuA== + dependencies: + colorette "^2.0.10" + memfs "^4.43.1" + mime-types "^3.0.1" + on-finished "^2.4.1" + range-parser "^1.2.1" + schema-utils "^4.0.0" + webpack-dev-server@^5.0.0: version "5.0.4" resolved "https://registry.npmmirror.com/webpack-dev-server/-/webpack-dev-server-5.0.4.tgz#cb6ea47ff796b9251ec49a94f24a425e12e3c9b8" @@ -26097,11 +30576,6 @@ webpack-dev-server@^5.0.0: webpack-dev-middleware "^7.1.0" ws "^8.16.0" -webpack-node-externals@^3.0.0: - version "3.0.0" - resolved "https://registry.npmmirror.com/webpack-node-externals/-/webpack-node-externals-3.0.0.tgz#1a3407c158d547a9feb4229a9e3385b7b60c9917" - integrity sha512-LnL6Z3GGDPht/AigwRh2dvL9PQPFQ8skEpVrWZXLWBYmqcaojHNN0onvHzie6rq7EWKrrBfPYqNEzTJgiwEQDQ== - webpack-sources@^1.4.3: version "1.4.3" resolved "https://registry.npmmirror.com/webpack-sources/-/webpack-sources-1.4.3.tgz#eedd8ec0b928fbf1cbfe994e22d2d890f330a933" @@ -26110,40 +30584,41 @@ webpack-sources@^1.4.3: source-list-map "^2.0.0" source-map "~0.6.1" -webpack-sources@^3.2.3: - version "3.2.3" - resolved "https://registry.npmmirror.com/webpack-sources/-/webpack-sources-3.2.3.tgz#2d4daab8451fd4b240cc27055ff6a0c2ccea0cde" - integrity sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w== - -webpack@^5.70.0: - version "5.90.0" - resolved "https://registry.npmmirror.com/webpack/-/webpack-5.90.0.tgz#313bfe16080d8b2fee6e29b6c986c0714ad4290e" - integrity sha512-bdmyXRCXeeNIePv6R6tGPyy20aUobw4Zy8r0LUS2EWO+U+Ke/gYDgsCh7bl5rB6jPpr4r0SZa6dPxBxLooDT3w== - dependencies: - "@types/eslint-scope" "^3.7.3" - "@types/estree" "^1.0.5" - "@webassemblyjs/ast" "^1.11.5" - "@webassemblyjs/wasm-edit" "^1.11.5" - "@webassemblyjs/wasm-parser" "^1.11.5" - acorn "^8.7.1" - acorn-import-assertions "^1.9.0" - browserslist "^4.21.10" +webpack-sources@^3.3.4: + version "3.4.0" + resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-3.4.0.tgz#67cdfdff349ff1e3e7ca5c1ed6a2802b84cf6cf5" + integrity sha512-gHwIe1cgBvvfLeu1Yz/dcFpmHfKDVxxyqI+kzqmuxZED81z2ChxpyqPaWcNqigPywhaEke7AjSGga+kxY55gjQ== + +webpack@~5.105.0: + version "5.105.4" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.105.4.tgz#1b77fcd55a985ac7ca9de80a746caffa38220169" + integrity sha512-jTywjboN9aHxFlToqb0K0Zs9SbBoW4zRUlGzI2tYNxVYcEi/IPpn+Xi4ye5jTLvX2YeLuic/IvxNot+Q1jMoOw== + dependencies: + "@types/eslint-scope" "^3.7.7" + "@types/estree" "^1.0.8" + "@types/json-schema" "^7.0.15" + "@webassemblyjs/ast" "^1.14.1" + "@webassemblyjs/wasm-edit" "^1.14.1" + "@webassemblyjs/wasm-parser" "^1.14.1" + acorn "^8.16.0" + acorn-import-phases "^1.0.3" + browserslist "^4.28.1" chrome-trace-event "^1.0.2" - enhanced-resolve "^5.15.0" - es-module-lexer "^1.2.1" + enhanced-resolve "^5.20.0" + es-module-lexer "^2.0.0" eslint-scope "5.1.1" events "^3.2.0" glob-to-regexp "^0.4.1" - graceful-fs "^4.2.9" + graceful-fs "^4.2.11" json-parse-even-better-errors "^2.3.1" - loader-runner "^4.2.0" + loader-runner "^4.3.1" mime-types "^2.1.27" neo-async "^2.6.2" - schema-utils "^3.2.0" - tapable "^2.1.1" - terser-webpack-plugin "^5.3.10" - watchpack "^2.4.0" - webpack-sources "^3.2.3" + schema-utils "^4.3.3" + tapable "^2.3.0" + terser-webpack-plugin "^5.3.17" + watchpack "^2.5.1" + webpack-sources "^3.3.4" websocket-driver@>=0.5.1, websocket-driver@^0.7.4: version "0.7.4" @@ -26159,38 +30634,40 @@ websocket-extensions@>=0.1.1: resolved "https://registry.npmmirror.com/websocket-extensions/-/websocket-extensions-0.1.4.tgz#7f8473bc839dfd87608adb95d7eb075211578a42" integrity sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg== -whatwg-encoding@^1.0.5: - version "1.0.5" - resolved "https://registry.npmmirror.com/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz#5abacf777c32166a51d085d6b4f3e7d27113ddb0" - integrity sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw== - dependencies: - iconv-lite "0.4.24" - whatwg-encoding@^2.0.0: version "2.0.0" - resolved "https://registry.npmmirror.com/whatwg-encoding/-/whatwg-encoding-2.0.0.tgz#e7635f597fd87020858626805a2729fa7698ac53" + resolved "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-2.0.0.tgz#e7635f597fd87020858626805a2729fa7698ac53" integrity sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg== dependencies: iconv-lite "0.6.3" -whatwg-mimetype@^2.3.0: - version "2.3.0" - resolved "https://registry.npmmirror.com/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz#3d4b1e0312d2079879f826aff18dbeeca5960fbf" - integrity sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g== - whatwg-mimetype@^3.0.0: version "3.0.0" - resolved "https://registry.npmmirror.com/whatwg-mimetype/-/whatwg-mimetype-3.0.0.tgz#5fa1a7623867ff1af6ca3dc72ad6b8a4208beba7" + resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-3.0.0.tgz#5fa1a7623867ff1af6ca3dc72ad6b8a4208beba7" integrity sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q== +whatwg-mimetype@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-5.0.0.tgz#d8232895dbd527ceaee74efd4162008fb8a8cf48" + integrity sha512-sXcNcHOC51uPGF0P/D4NVtrkjSU2fNsm9iog4ZvZJsL3rjoDAzXZhkm2MWt1y+PUdggKAYVoMAIYcs78wJ51Cw== + whatwg-url@^11.0.0: version "11.0.0" - resolved "https://registry.npmmirror.com/whatwg-url/-/whatwg-url-11.0.0.tgz#0a849eebb5faf2119b901bb76fd795c2848d4018" + resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-11.0.0.tgz#0a849eebb5faf2119b901bb76fd795c2848d4018" integrity sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ== dependencies: tr46 "^3.0.0" webidl-conversions "^7.0.0" +whatwg-url@^16.0.0: + version "16.0.1" + resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-16.0.1.tgz#047f7f4bd36ef76b7198c172d1b1cebc66f764dd" + integrity sha512-1to4zXBxmXHV3IiSSEInrreIlu02vUOvrhxJJH5vcxYTBDAx51cqZiKdyTxlecdKNSjj8EcxGBxNf6Vg+945gw== + dependencies: + "@exodus/bytes" "^1.11.0" + tr46 "^6.0.0" + webidl-conversions "^8.0.1" + whatwg-url@^5.0.0: version "5.0.0" resolved "https://registry.npmmirror.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d" @@ -26199,15 +30676,6 @@ whatwg-url@^5.0.0: tr46 "~0.0.3" webidl-conversions "^3.0.0" -whatwg-url@^8.0.0, whatwg-url@^8.5.0: - version "8.7.0" - resolved "https://registry.npmmirror.com/whatwg-url/-/whatwg-url-8.7.0.tgz#656a78e510ff8f3937bc0bcbe9f5c0ac35941b77" - integrity sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg== - dependencies: - lodash "^4.7.0" - tr46 "^2.1.0" - webidl-conversions "^6.1.0" - which-boxed-primitive@^1.0.2: version "1.0.2" resolved "https://registry.npmmirror.com/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz#13757bc89b209b049fe5d86430e21cf40a89a8e6" @@ -26219,23 +30687,35 @@ which-boxed-primitive@^1.0.2: is-string "^1.0.5" is-symbol "^1.0.3" -which-builtin-type@^1.1.3: - version "1.1.3" - resolved "https://registry.npmmirror.com/which-builtin-type/-/which-builtin-type-1.1.3.tgz#b1b8443707cc58b6e9bf98d32110ff0c2cbd029b" - integrity sha512-YmjsSMDBYsM1CaFiayOVT06+KJeXf0o5M/CAd4o1lTadFAtacTUM49zoYxr/oroopFDfhvN6iEcBxUyc3gvKmw== +which-boxed-primitive@^1.1.0, which-boxed-primitive@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/which-boxed-primitive/-/which-boxed-primitive-1.1.1.tgz#d76ec27df7fa165f18d5808374a5fe23c29b176e" + integrity sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA== dependencies: - function.prototype.name "^1.1.5" - has-tostringtag "^1.0.0" + is-bigint "^1.1.0" + is-boolean-object "^1.2.1" + is-number-object "^1.1.1" + is-string "^1.1.1" + is-symbol "^1.1.1" + +which-builtin-type@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/which-builtin-type/-/which-builtin-type-1.2.1.tgz#89183da1b4907ab089a6b02029cc5d8d6574270e" + integrity sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q== + dependencies: + call-bound "^1.0.2" + function.prototype.name "^1.1.6" + has-tostringtag "^1.0.2" is-async-function "^2.0.0" - is-date-object "^1.0.5" - is-finalizationregistry "^1.0.2" + is-date-object "^1.1.0" + is-finalizationregistry "^1.1.0" is-generator-function "^1.0.10" - is-regex "^1.1.4" + is-regex "^1.2.1" is-weakref "^1.0.2" isarray "^2.0.5" - which-boxed-primitive "^1.0.2" - which-collection "^1.0.1" - which-typed-array "^1.1.9" + which-boxed-primitive "^1.1.0" + which-collection "^1.0.2" + which-typed-array "^1.1.16" which-collection@^1.0.1: version "1.0.1" @@ -26247,7 +30727,17 @@ which-collection@^1.0.1: is-weakmap "^2.0.1" is-weakset "^2.0.1" -which-typed-array@^1.1.11, which-typed-array@^1.1.13, which-typed-array@^1.1.2, which-typed-array@^1.1.9: +which-collection@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/which-collection/-/which-collection-1.0.2.tgz#627ef76243920a107e7ce8e96191debe4b16c2a0" + integrity sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw== + dependencies: + is-map "^2.0.3" + is-set "^2.0.3" + is-weakmap "^2.0.2" + is-weakset "^2.0.3" + +which-typed-array@^1.1.11, which-typed-array@^1.1.13, which-typed-array@^1.1.2: version "1.1.13" resolved "https://registry.npmmirror.com/which-typed-array/-/which-typed-array-1.1.13.tgz#870cd5be06ddb616f504e7b039c4c24898184d36" integrity sha512-P5Nra0qjSncduVPEAr7xhoF5guty49ArDTwzJ/yNuPIbZppyRxFQsRCWrocxIY+CnMVG+qfbU2FmDKyvSGClow== @@ -26258,6 +30748,19 @@ which-typed-array@^1.1.11, which-typed-array@^1.1.13, which-typed-array@^1.1.2, gopd "^1.0.1" has-tostringtag "^1.0.0" +which-typed-array@^1.1.16, which-typed-array@^1.1.19: + version "1.1.20" + resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.20.tgz#3fdb7adfafe0ea69157b1509f3a1cd892bd1d122" + integrity sha512-LYfpUkmqwl0h9A2HL09Mms427Q1RZWuOHsukfVcKRq9q95iQxdw0ix1JQrqbcDR9PH1QDwf5Qo8OZb5lksZ8Xg== + dependencies: + available-typed-arrays "^1.0.7" + call-bind "^1.0.8" + call-bound "^1.0.4" + for-each "^0.3.5" + get-proto "^1.0.1" + gopd "^1.2.0" + has-tostringtag "^1.0.2" + which@^1.2.14, which@^1.3.1: version "1.3.1" resolved "https://registry.npmmirror.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" @@ -26265,26 +30768,26 @@ which@^1.2.14, which@^1.3.1: dependencies: isexe "^2.0.0" -which@^2.0.1, which@^2.0.2: +which@^2.0.1: version "2.0.2" resolved "https://registry.npmmirror.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== dependencies: isexe "^2.0.0" -which@^3.0.0: - version "3.0.1" - resolved "https://registry.npmmirror.com/which/-/which-3.0.1.tgz#89f1cd0c23f629a8105ffe69b8172791c87b4be1" - integrity sha512-XA1b62dzQzLfaEOSQFTCOd5KFf/1VSzZo7/7TUjnya6u0vGGKzU96UQBZTAThCb2j4/xjBAyii1OhRLJEivHvg== +which@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/which/-/which-4.0.0.tgz#cd60b5e74503a3fbcfbf6cd6b4138a8bae644c1a" + integrity sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg== dependencies: - isexe "^2.0.0" + isexe "^3.1.1" -wide-align@^1.1.5: - version "1.1.5" - resolved "https://registry.npmmirror.com/wide-align/-/wide-align-1.1.5.tgz#df1d4c206854369ecf3c9a4898f1b23fbd9d15d3" - integrity sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg== +win-release@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/win-release/-/win-release-1.1.1.tgz#5fa55e02be7ca934edfc12665632e849b72e5209" + integrity sha512-iCRnKVvGxOQdsKhcQId2PXV1vV3J/sDPXKA4Oe9+Eti2nb2ESEsYHRYls/UjoUW3bIc5ZDO8dTH50A/5iVN+bw== dependencies: - string-width "^1.0.2 || 2 || 3 || 4" + semver "^5.0.1" winston-transport@^4.5.0: version "4.6.0" @@ -26372,67 +30875,34 @@ wrappy@1: resolved "https://registry.npmmirror.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== -write-file-atomic@5.0.1: - version "5.0.1" - resolved "https://registry.npmmirror.com/write-file-atomic/-/write-file-atomic-5.0.1.tgz#68df4717c55c6fa4281a7860b4c2ba0a6d2b11e7" - integrity sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw== - dependencies: - imurmurhash "^0.1.4" - signal-exit "^4.0.1" - -write-file-atomic@^2.4.2: - version "2.4.3" - resolved "https://registry.npmmirror.com/write-file-atomic/-/write-file-atomic-2.4.3.tgz#1fd2e9ae1df3e75b8d8c367443c692d4ca81f481" - integrity sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ== - dependencies: - graceful-fs "^4.1.11" - imurmurhash "^0.1.4" - signal-exit "^3.0.2" - write-file-atomic@^4.0.2: version "4.0.2" - resolved "https://registry.npmmirror.com/write-file-atomic/-/write-file-atomic-4.0.2.tgz#a9df01ae5b77858a027fd2e80768ee433555fcfd" + resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-4.0.2.tgz#a9df01ae5b77858a027fd2e80768ee433555fcfd" integrity sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg== dependencies: imurmurhash "^0.1.4" signal-exit "^3.0.7" -write-json-file@^3.2.0: - version "3.2.0" - resolved "https://registry.npmmirror.com/write-json-file/-/write-json-file-3.2.0.tgz#65bbdc9ecd8a1458e15952770ccbadfcff5fe62a" - integrity sha512-3xZqT7Byc2uORAatYiP3DHUUAVEkNOswEWNs9H5KXiicRTvzYzYqKjYc4G7p+8pltvAw641lVByKVtMpf+4sYQ== - dependencies: - detect-indent "^5.0.0" - graceful-fs "^4.1.15" - make-dir "^2.1.0" - pify "^4.0.1" - sort-keys "^2.0.0" - write-file-atomic "^2.4.2" - -write-pkg@4.0.0: - version "4.0.0" - resolved "https://registry.npmmirror.com/write-pkg/-/write-pkg-4.0.0.tgz#675cc04ef6c11faacbbc7771b24c0abbf2a20039" - integrity sha512-v2UQ+50TNf2rNHJ8NyWttfm/EJUBWMJcx6ZTYZr6Qp52uuegWw/lBkCtCbnYZEmPRNL61m+u67dAmGxo+HTULA== - dependencies: - sort-keys "^2.0.0" - type-fest "^0.4.1" - write-json-file "^3.2.0" - -ws@8.17.0, ws@^8.16.0: - version "8.17.0" - resolved "https://registry.npmmirror.com/ws/-/ws-8.17.0.tgz#d145d18eca2ed25aaf791a183903f7be5e295fea" - integrity sha512-uJq6108EgZMAl20KagGkzCKfMEjxmKvZHG7Tlq0Z6nOky7YF7aq4mOx6xK8TJ/i1LeK4Qus7INktacctDgY8Ow== +ws@*, ws@^8.18.0, ws@^8.18.2, ws@^8.8.0: + version "8.20.0" + resolved "https://registry.yarnpkg.com/ws/-/ws-8.20.0.tgz#4cd9532358eba60bc863aad1623dfb045a4d4af8" + integrity sha512-sAt8BhgNbzCtgGbt2OxmpuryO63ZoDk/sqaB/znQm94T4fCEsy/yV+7CdC1kJhOU9lboAEU7R3kquuycDoibVA== -ws@^7.4.6: - version "7.5.9" - resolved "https://registry.npmmirror.com/ws/-/ws-7.5.9.tgz#54fa7db29f4c7cec68b1ddd3a89de099942bb591" - integrity sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q== +ws@8.18.0: + version "8.18.0" + resolved "https://registry.yarnpkg.com/ws/-/ws-8.18.0.tgz#0d7505a6eafe2b0e712d232b42279f53bc289bbc" + integrity sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw== -ws@^8.11.0, ws@^8.12.0, ws@^8.13.0, ws@^8.15.0: +ws@^8.11.0: version "8.16.0" resolved "https://registry.npmmirror.com/ws/-/ws-8.16.0.tgz#d1cd774f36fbc07165066a60e40323eab6446fd4" integrity sha512-HS0c//TP7Ina87TfiPUz1rQzMhHrl/SG2guqRcTOIUYD2q8uhUdNHZYJUaQ8aTGPzCh+c6oawMKW35nFl1dxyQ== +ws@^8.16.0: + version "8.17.0" + resolved "https://registry.npmmirror.com/ws/-/ws-8.17.0.tgz#d145d18eca2ed25aaf791a183903f7be5e295fea" + integrity sha512-uJq6108EgZMAl20KagGkzCKfMEjxmKvZHG7Tlq0Z6nOky7YF7aq4mOx6xK8TJ/i1LeK4Qus7INktacctDgY8Ow== + xcase@^2.0.1: version "2.0.1" resolved "https://registry.npmmirror.com/xcase/-/xcase-2.0.1.tgz#c7fa72caa0f440db78fd5673432038ac984450b9" @@ -26445,33 +30915,16 @@ xml-but-prettier@^1.0.1: dependencies: repeat-string "^1.5.2" -xml-crypto@^3.0.1: - version "3.2.0" - resolved "https://registry.npmmirror.com/xml-crypto/-/xml-crypto-3.2.0.tgz#a9debab572c8e895cff5fb351a8d8be3f6e1962e" - integrity sha512-qVurBUOQrmvlgmZqIVBqmb06TD2a/PpEUfFPgD7BuBfjmoH4zgkqaWSIJrnymlCvM2GGt9x+XtJFA+ttoAufqg== - dependencies: - "@xmldom/xmldom" "^0.8.8" - xpath "0.0.32" - -xml-encryption@^3.0.2: - version "3.0.2" - resolved "https://registry.npmmirror.com/xml-encryption/-/xml-encryption-3.0.2.tgz#d3cb67d97cdd9673313a42cc0d7fa43ff0886c21" - integrity sha512-VxYXPvsWB01/aqVLd6ZMPWZ+qaj0aIdF+cStrVJMcFj3iymwZeI0ABzB3VqMYv48DkSpRhnrXqTUkR34j+UDyg== - dependencies: - "@xmldom/xmldom" "^0.8.5" - escape-html "^1.0.3" - xpath "0.0.32" - -xml-name-validator@^3.0.0: - version "3.0.0" - resolved "https://registry.npmmirror.com/xml-name-validator/-/xml-name-validator-3.0.0.tgz#6ae73e06de4d8c6e47f9fb181f78d648ad457c6a" - integrity sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw== - xml-name-validator@^4.0.0: version "4.0.0" - resolved "https://registry.npmmirror.com/xml-name-validator/-/xml-name-validator-4.0.0.tgz#79a006e2e63149a8600f15430f0a4725d1524835" + resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-4.0.0.tgz#79a006e2e63149a8600f15430f0a4725d1524835" integrity sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw== +xml-name-validator@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-5.0.0.tgz#82be9b957f7afdacf961e5980f1bf227c0bf7673" + integrity sha512-EvGK8EJ3DhaHfbRlETOWAS5pO9MZITeauHKJyb8wyajUfQUenkIg2MvLDTZ4T/TgIcm3HU0TFBgWWboAZ30UHg== + xml2js@^0.5.0: version "0.5.0" resolved "https://registry.npmmirror.com/xml2js/-/xml2js-0.5.0.tgz#d9440631fbb2ed800203fad106f2724f62c493b7" @@ -26485,11 +30938,6 @@ xml@=1.0.1: resolved "https://registry.npmmirror.com/xml/-/xml-1.0.1.tgz#78ba72020029c5bc87b8a81a3cfcd74b4a2fc1e5" integrity sha512-huCv9IH9Tcf95zuYCsQraZtWnJvBtLVE0QHMOs8bWyZAFZNDcYjsPq1nEx8jKA9y+Beo9v+7OBPRisQTjinQMw== -xmlbuilder@^15.1.1: - version "15.1.1" - resolved "https://registry.npmmirror.com/xmlbuilder/-/xmlbuilder-15.1.1.tgz#9dcdce49eea66d8d10b42cae94a79c3c8d0c2ec5" - integrity sha512-yMqGBqtXyeN1e3TGYvgNgDVZ3j84W4cwkOXQswghol6APgZWaff9lnbvN7MHYJOiXsvGPXtjTYJEiC9J2wv9Eg== - xmlbuilder@~11.0.0: version "11.0.1" resolved "https://registry.npmmirror.com/xmlbuilder/-/xmlbuilder-11.0.1.tgz#be9bae1c8a046e76b31127726347d0ad7002beb3" @@ -26500,50 +30948,30 @@ xmlchars@^2.2.0: resolved "https://registry.npmmirror.com/xmlchars/-/xmlchars-2.2.0.tgz#060fe1bcb7f9c76fe2a17db86a9bc3ab894210cb" integrity sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw== -xpath@0.0.27: - version "0.0.27" - resolved "https://registry.npmmirror.com/xpath/-/xpath-0.0.27.tgz#dd3421fbdcc5646ac32c48531b4d7e9d0c2cfa92" - integrity sha512-fg03WRxtkCV6ohClePNAECYsmpKKTv5L8y/X3Dn1hQrec3POx2jHZ/0P2qQ6HvsrU1BmeqXcof3NGGueG6LxwQ== - -xpath@0.0.32: - version "0.0.32" - resolved "https://registry.npmmirror.com/xpath/-/xpath-0.0.32.tgz#1b73d3351af736e17ec078d6da4b8175405c48af" - integrity sha512-rxMJhSIoiO8vXcWvSifKqhvV96GjiD5wYb8/QHdoRyQvraTpp4IEv944nhGausZZ3u7dhQXteZuZbaqfpB7uYw== - -xtend@^4.0.0, xtend@~4.0.1: +xtend@^4.0.0, xtend@^4.0.2: version "4.0.2" - resolved "https://registry.npmmirror.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" + resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== -xterm-addon-attach@^0.9.0: - version "0.9.0" - resolved "https://registry.npmmirror.com/xterm-addon-attach/-/xterm-addon-attach-0.9.0.tgz#dd18057f147a402de1df852c1de4c8f3b63b37be" - integrity sha512-NykWWOsobVZPPK3P9eFkItrnBK9Lw0f94uey5zhqIVB1bhswdVBfl+uziEzSOhe2h0rT9wD0wOeAYsdSXeavPw== - -xterm-addon-fit@^0.8.0: - version "0.8.0" - resolved "https://registry.npmmirror.com/xterm-addon-fit/-/xterm-addon-fit-0.8.0.tgz#48ca99015385141918f955ca7819e85f3691d35f" - integrity sha512-yj3Np7XlvxxhYF/EJ7p3KHaMt6OdwQ+HDu573Vx1lRXsVxOcnVJs51RgjZOouIZOczTsskaS+CpXspK81/DLqw== - -xterm@^5.2.1, xterm@^5.3.0: - version "5.3.0" - resolved "https://registry.npmmirror.com/xterm/-/xterm-5.3.0.tgz#867daf9cc826f3d45b5377320aabd996cb0fce46" - integrity sha512-8QqjlekLUFTrU6x7xck1MsPzPA571K5zNqWm0M0oroYEWVOptZ0+ubQSkQ3uxIEhcIHRujJy6emDWX4A7qyFzg== - y18n@^5.0.5: version "5.0.8" resolved "https://registry.npmmirror.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== +yallist@4.0.0, yallist@^4.0.0: + version "4.0.0" + resolved "https://registry.npmmirror.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" + integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== + yallist@^3.0.2: version "3.1.1" resolved "https://registry.npmmirror.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== -yallist@^4.0.0: - version "4.0.0" - resolved "https://registry.npmmirror.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" - integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== +yallist@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-5.0.0.tgz#00e2de443639ed0d78fd87de0d27469fbcffb533" + integrity sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw== yaml-js@^0.3.1: version "0.3.1" @@ -26560,27 +30988,22 @@ yaml@^2.0.0, yaml@^2.2.1, yaml@^2.2.2: resolved "https://registry.npmmirror.com/yaml/-/yaml-2.3.4.tgz#53fc1d514be80aabf386dc6001eb29bf3b7523b2" integrity sha512-8aAvwVUSHpfEqTQ4w/KMlf3HcRdt50E5ODIQJBw1fQ5RL34xabzxtUlzTXVqc4rkZsPbvrXKWnABCD7kWSmocA== -yaml@^2.3.4: - version "2.4.5" - resolved "https://registry.npmmirror.com/yaml/-/yaml-2.4.5.tgz#60630b206dd6d84df97003d33fc1ddf6296cca5e" - integrity sha512-aBx2bnqDzVOyNKfsysjA2ms5ZlnjSAW2eG3/L5G/CSujfjLJTJsEw1bGw8kCf04KodQWk1pxlGnZ56CRxiawmg== +yaml@^2.3.0, yaml@^2.6.1: + version "2.8.3" + resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.8.3.tgz#a0d6bd2efb3dd03c59370223701834e60409bd7d" + integrity sha512-AvbaCLOO2Otw/lW5bmh9d/WEdcDFdQp2Z2ZUH3pX9U2ihyUY0nvLv7J6TrWowklRGPYbB/IuIMfYgxaCPg5Bpg== -yargs-parser@20.2.4: - version "20.2.4" - resolved "https://registry.npmmirror.com/yargs-parser/-/yargs-parser-20.2.4.tgz#b42890f14566796f85ae8e3a25290d205f154a54" - integrity sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA== +yargs-parser@^20.2.2: + version "20.2.9" + resolved "https://registry.npmmirror.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee" + integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w== -yargs-parser@21.1.1, yargs-parser@^21.1.1: +yargs-parser@^21.1.1: version "21.1.1" resolved "https://registry.npmmirror.com/yargs-parser/-/yargs-parser-21.1.1.tgz#9096bceebf990d21bb31fa9516e0ede294a77d35" integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw== -yargs-parser@^20.2.2, yargs-parser@^20.2.3: - version "20.2.9" - resolved "https://registry.npmmirror.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee" - integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w== - -yargs@16.2.0, yargs@^16.2.0: +yargs@^16.0.0, yargs@^16.2.0: version "16.2.0" resolved "https://registry.npmmirror.com/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66" integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw== @@ -26593,7 +31016,7 @@ yargs@16.2.0, yargs@^16.2.0: y18n "^5.0.5" yargs-parser "^20.2.2" -yargs@^17.1.1, yargs@^17.3.1, yargs@^17.6.2, yargs@^17.7.2: +yargs@^17.1.1, yargs@^17.3.1, yargs@^17.7.2: version "17.7.2" resolved "https://registry.npmmirror.com/yargs/-/yargs-17.7.2.tgz#991df39aca675a192b816e1e0363f9d75d2aa269" integrity sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w== @@ -26614,16 +31037,24 @@ yauzl@^3.0.0: buffer-crc32 "~0.2.3" pend "~1.2.0" -yawn-yaml@^2.2.0: - version "2.2.0" - resolved "https://registry.npmmirror.com/yawn-yaml/-/yawn-yaml-2.2.0.tgz#aa9673725f7c277a8b97e8d12496d2333d701890" - integrity sha512-2SJvllxsNXwvbf6s8m7TNDtdn2zakLQpmrwpxIdCInLyEx+/WsZwSTScBOVk3zBbuFPeh7hc+yvUVtyKOgBeKQ== +yauzl@^3.2.1: + version "3.3.0" + resolved "https://registry.yarnpkg.com/yauzl/-/yauzl-3.3.0.tgz#5be5e287b9a8112941c177734a34bf61a3e11bb4" + integrity sha512-PtGEvEP30p7sbIBJKUBjUnqgTVOyMURc4dLo9iNyAJnNIEz9pm88cCXF21w94Kg3k6RXkeZh5DHOGS0qEONvNQ== + dependencies: + buffer-crc32 "~0.2.3" + pend "~1.2.0" + +yawn-yaml@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/yawn-yaml/-/yawn-yaml-2.3.0.tgz#79b2cdd58b7abe243c9b0418997795e5754b7135" + integrity sha512-hYS8kT4I2ftJyLw6LE/JG8rg+0NKdDmI+c2ncnJ9ZmUTsU0ggo3Zf8yjmhXxKlWINS/ZYkh3MvMIsQlIDtRL4A== dependencies: js-yaml "^4.1.0" lodash "^4.17.21" yaml-js "^0.3.1" -ylru@^1.2.0: +ylru@^1.2.0, ylru@^1.3.2: version "1.4.0" resolved "https://registry.yarnpkg.com/ylru/-/ylru-1.4.0.tgz#0cf0aa57e9c24f8a2cbde0cc1ca2c9592ac4e0f6" integrity sha512-2OQsPNEmBCvXuFlIni/a+Rn+R2pHW9INm0BxXJ4hVDA8TirqMj+J/Rp9ItLatT/5pZqWwefVrTQcHpixsxnVlA== @@ -26651,16 +31082,6 @@ yocto-queue@^0.1.0: resolved "https://registry.npmmirror.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== -yup@^1.0.0: - version "1.4.0" - resolved "https://registry.npmmirror.com/yup/-/yup-1.4.0.tgz#898dcd660f9fb97c41f181839d3d65c3ee15a43e" - integrity sha512-wPbgkJRCqIf+OHyiTBQoJiP5PFuAXaWiJK6AmYkzQAh5/c2K9hzSApBZG5wV9KoKSePF7sAxmNSvh/13YHkFDg== - dependencies: - property-expr "^2.0.5" - tiny-case "^1.0.3" - toposort "^2.0.2" - type-fest "^2.19.0" - zen-observable@^0.10.0: version "0.10.0" resolved "https://registry.npmmirror.com/zen-observable/-/zen-observable-0.10.0.tgz#ee10eba75272897dbee5f152ab26bb5e0107f0c8" @@ -26671,25 +31092,65 @@ zenscroll@^4.0.2: resolved "https://registry.npmmirror.com/zenscroll/-/zenscroll-4.0.2.tgz#e8d5774d1c0738a47bcfa8729f3712e2deddeb25" integrity sha512-jEA1znR7b4C/NnaycInCU6h/d15ZzCd1jmsruqOKnZP6WXQSMH3W2GL+OXbkruslU4h+Tzuos0HdswzRUk/Vgg== -zip-stream@^5.0.1: - version "5.0.1" - resolved "https://registry.npmmirror.com/zip-stream/-/zip-stream-5.0.1.tgz#cf3293bba121cad98be2ec7f05991d81d9f18134" - integrity sha512-UfZ0oa0C8LI58wJ+moL46BDIMgCQbnsb+2PoiJYtonhBsMh2bq1eRBVkvjfVsqbEHd9/EgKPUuL9saSSsec8OA== +zip-stream@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/zip-stream/-/zip-stream-6.0.1.tgz#e141b930ed60ccaf5d7fa9c8260e0d1748a2bbfb" + integrity sha512-zK7YHHz4ZXpW89AHXUPbQVGKI7uvkd3hzusTdotCg1UxyaVtg0zFJSTfW/Dq5f7OBBVnq6cZIaC8Ti4hb6dtCA== dependencies: - archiver-utils "^4.0.1" - compress-commons "^5.0.1" - readable-stream "^3.6.0" + archiver-utils "^5.0.0" + compress-commons "^6.0.2" + readable-stream "^4.0.0" zod-to-json-schema@^3.20.4, zod-to-json-schema@^3.21.4: version "3.22.4" resolved "https://registry.npmmirror.com/zod-to-json-schema/-/zod-to-json-schema-3.22.4.tgz#f8cc691f6043e9084375e85fb1f76ebafe253d70" integrity sha512-2Ed5dJ+n/O3cU383xSY28cuVi0BCQhF8nYqWU5paEpl7fVdqdAmiLdqLyfblbNdfOFwFfi/mqU4O1pwc60iBhQ== +zod-to-json-schema@^3.25.1: + version "3.25.2" + resolved "https://registry.yarnpkg.com/zod-to-json-schema/-/zod-to-json-schema-3.25.2.tgz#3fa799a7badd554541472fb65843fdc460b2e5aa" + integrity sha512-O/PgfnpT1xKSDeQYSCfRI5Gy3hPf91mKVDuYLUHZJMiDFptvP41MSnWofm8dnCm0256ZNfZIM7DSzuSMAFnjHA== + +zod-validation-error@^3.4.0: + version "3.5.4" + resolved "https://registry.yarnpkg.com/zod-validation-error/-/zod-validation-error-3.5.4.tgz#9072f829e4b45b9e27317c3002408c0c4cdd2bb4" + integrity sha512-+hEiRIiPobgyuFlEojnqjJnhFvg4r/i3cqgcm67eehZf/WBaK3g6cD02YU9mtdVxZjv8CzCA9n/Rhrs3yAAvAw== + +zod-validation-error@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/zod-validation-error/-/zod-validation-error-4.0.2.tgz#bc605eba49ce0fcd598c127fee1c236be3f22918" + integrity sha512-Q6/nZLe6jxuU80qb/4uJ4t5v2VEZ44lzQjPDhYJNztRQ4wyWc6VF3D3Kb/fAuPetZQnhS3hnajCf9CsWesghLQ== + +zod-validation-error@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/zod-validation-error/-/zod-validation-error-5.0.0.tgz#96db948070b7bfcb13bfec5134113e580f9eee38" + integrity sha512-hmk+pkyKq7Q71PiWVSDUc3VfpzpvcRHZ3QPw9yEMVvmtCekaMeOHnbr3WbxfrgEnQTv6haGP4cmv0Ojmihzsxw== + +zod@^3.19.1, zod@^3.20.0, zod@^3.25.76: + version "3.25.76" + resolved "https://registry.yarnpkg.com/zod/-/zod-3.25.76.tgz#26841c3f6fd22a6a2760e7ccb719179768471e34" + integrity sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ== + zod@^3.22.4: version "3.22.4" resolved "https://registry.npmmirror.com/zod/-/zod-3.22.4.tgz#f31c3a9386f61b1f228af56faa9255e845cf3fff" integrity sha512-iC+8Io04lddc+mVqQ9AZ7OQ2MrUKGN+oIQyq1vemgt46jwCwLfhq7/pwnBnNXXXZb8VTVLKwp9EDkx+ryxIWmg== +"zod@^3.25.76 || ^4.0.0", zod@^4.0.0: + version "4.3.6" + resolved "https://registry.yarnpkg.com/zod/-/zod-4.3.6.tgz#89c56e0aa7d2b05107d894412227087885ab112a" + integrity sha512-rftlrkhHZOcjDwkGlnUtZZkvaPHCsDATp4pGpuOOMDaTdDDXF91wuVDJoWoPsKX/3YPQ5fHuF3STjcYyKr+Qhg== + +zstd-codec@^0.1.5: + version "0.1.5" + resolved "https://registry.yarnpkg.com/zstd-codec/-/zstd-codec-0.1.5.tgz#c180193e4603ef74ddf704bcc835397d30a60e42" + integrity sha512-v3fyjpK8S/dpY/X5WxqTK3IoCnp/ZOLxn144GZVlNUjtwAchzrVo03h+oMATFhCIiJ5KTr4V3vDQQYz4RU684g== + +zustand@^3.7.2: + version "3.7.2" + resolved "https://registry.yarnpkg.com/zustand/-/zustand-3.7.2.tgz#7b44c4f4a5bfd7a8296a3957b13e1c346f42514d" + integrity sha512-PIJDIZKtokhof+9+60cpockVOq05sJzHCriyvaLBmEJixseQ1a5Kdov6fWZfWOu5SK9c+FhH1jU0tntLxRJYMA== + zwitch@^2.0.0: version "2.0.4" resolved "https://registry.npmmirror.com/zwitch/-/zwitch-2.0.4.tgz#c827d4b0acb76fc3e685a4c6ec2902d51070e9d7"