diff --git a/.dockerignore b/.dockerignore index 9b51b9d538ebbea0432eaf782494bdda9444517e..cee3cb4cf3b938804f06837945a003113d59140b 100644 --- a/.dockerignore +++ b/.dockerignore @@ -2,5 +2,6 @@ node_modules tmp tools compose -.* +.env +.env.example dist diff --git a/.eslintrc.json b/.eslintrc.json index a8080a9e1d633712ce519f167380c8a4deef0bc1..5dec4d9a4b47e7d420dc05a8500cd2aaf0392c5a 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -4,22 +4,7 @@ "plugins": ["@nrwl/nx", "@typescript-eslint/eslint-plugin"], "overrides": [ { - "files": ["*.ts", "*.tsx", "*.js", "*.jsx"], - "rules": { - "@nrwl/nx/enforce-module-boundaries": [ - "error", - { - "enforceBuildableLibDependency": true, - "allow": [], - "depConstraints": [ - { - "sourceTag": "*", - "onlyDependOnLibsWithTags": ["*"] - } - ] - } - ] - } + "files": ["*.ts", "*.tsx", "*.js", "*.jsx"] }, { "files": ["*.ts", "*.tsx"], diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index f86acdc0a6c73aaac81e1ceb9abcf83adcf57f62..8030fd56da111b0067dc1d98d2f3a8b931dd9082 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -19,6 +19,10 @@ lint-agent: extends: .lint-agent stage: lint +# lint-dashboard: +# extends: .lint-dashboard +# stage: lint + # lint-attestation-manager: # extends: .lint-attestation-manager # stage: lint @@ -41,6 +45,10 @@ test-agent: extends: .test-agent stage: test +# test-dashboard: +# extends: .test-dashboard +# stage: test + # test-attestation-manager: # extends: .test-attestation-manager # stage: test @@ -63,6 +71,10 @@ build-agent: extends: .build-agent stage: build +build-dashboard: + extends: .build-dashboard + stage: build + # build-attestation-manager: # extends: .build-attestation-manager # stage: build @@ -85,6 +97,10 @@ docker-agent: extends: .docker-agent stage: docker +docker-dashboard: + extends: .docker-dashboard + stage: docker + # docker-attestation-manager: # extends: .docker-attestation-manager # stage: docker @@ -107,6 +123,10 @@ registry-agent: extends: .registry-agent stage: registries +registry-dashboard: + extends: .registry-dashboard + stage: registries + # registry-attestation-manager: # extends: .registry-attestation-manager # stage: registries @@ -129,6 +149,10 @@ helm-agent: extends: .helm-agent stage: helm +helm-dashboard: + extends: .helm-dashboard + stage: helm + # helm-attestation-manager: # extends: .helm-attestation-manager # stage: helm @@ -169,6 +193,22 @@ deploy agent ocm test tagged: extends: .deploy-agent-ocm-test-tag stage: deploy-test +deploy dashboard ocm: + extends: .deploy-dashboard-ocm-main + stage: deploy-test + +deploy dashboard ocm tagged: + extends: .deploy-dashboard-ocm-main-tag + stage: deploy-test + +deploy dashboard ocm test: + extends: .deploy-dashboard-ocm-test + stage: deploy-test + +deploy dashboard ocm test tagged: + extends: .deploy-dashboard-ocm-test-tag + stage: deploy-test + # deploy attestation ocm: # extends: .deploy-attestation-manager-ocm-main # stage: deploy-test diff --git a/apps/dashboard/.babelrc b/apps/dashboard/.babelrc new file mode 100644 index 0000000000000000000000000000000000000000..88ee27b140c66bdf14f07fb43433d75ea451ae06 --- /dev/null +++ b/apps/dashboard/.babelrc @@ -0,0 +1,11 @@ +{ + "presets": [ + [ + "@nx/react/babel", + { + "runtime": "automatic" + } + ] + ], + "plugins": [] +} diff --git a/apps/dashboard/.eslintrc.json b/apps/dashboard/.eslintrc.json new file mode 100644 index 0000000000000000000000000000000000000000..b8a8dc877eff69a0567d3ef5842188c3a075ad6d --- /dev/null +++ b/apps/dashboard/.eslintrc.json @@ -0,0 +1,20 @@ +{ + "extends": ["plugin:@nx/react", "../../.eslintrc.json"], + "ignorePatterns": ["!**/*"], + "overrides": [ + { + "files": ["*.ts", "*.tsx", "*.js", "*.jsx"], + "rules": {} + }, + { + "files": ["*.ts", "*.tsx"], + "rules": { + "@typescript-eslint/no-non-null-assertion": "off" + } + }, + { + "files": ["*.js", "*.jsx"], + "rules": {} + } + ] +} diff --git a/apps/dashboard/.gitignore b/apps/dashboard/.gitignore new file mode 100644 index 0000000000000000000000000000000000000000..631c2b19bb1106d68424c207f0876409cf1642bb --- /dev/null +++ b/apps/dashboard/.gitignore @@ -0,0 +1 @@ +src/assets/config.js diff --git a/apps/dashboard/README.md b/apps/dashboard/README.md new file mode 100644 index 0000000000000000000000000000000000000000..8e65f09cd8a3fccb5577fd652ebf7efe58486699 --- /dev/null +++ b/apps/dashboard/README.md @@ -0,0 +1,18 @@ +# OCM ENGINE - Dashboard +Used for Administration of OCM + +#### Install dependencies +``` +yarn install +``` +#### Copy config.js.example to config.js in assets directory + +``` +cp .config.js.example config.js +``` + +#### Start the agent locally: + +``` +yarn serve:dashboard +``` diff --git a/apps/dashboard/cssmodule.d.ts b/apps/dashboard/cssmodule.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..9938a9f6bf1c6bc23edc29db466cd0abc7fbdb28 --- /dev/null +++ b/apps/dashboard/cssmodule.d.ts @@ -0,0 +1,24 @@ +declare module "*.module.css" { + const classes: { readonly [key: string]: string }; + export default classes; +} + +declare module "*.module.scss" { + const classes: { readonly [key: string]: string }; + export default classes; +} + +declare module "*.module.sass" { + const classes: { readonly [key: string]: string }; + export default classes; +} + +declare module "*.module.less" { + const classes: { readonly [key: string]: string }; + export default classes; +} + +declare module "*.module.styl" { + const classes: { readonly [key: string]: string }; + export default classes; +} diff --git a/apps/dashboard/deployment/ci-cd/Dockerfile b/apps/dashboard/deployment/ci-cd/Dockerfile new file mode 100644 index 0000000000000000000000000000000000000000..e39ecce758f7bf1044a65f8dabf531f1fcd1ff93 --- /dev/null +++ b/apps/dashboard/deployment/ci-cd/Dockerfile @@ -0,0 +1,41 @@ +FROM nginx:1.25.3-bookworm +RUN apt update -y && apt install npm nodejs python3 git make build-essential wget unzip -y + +RUN npm i -g yarn + +# Copy the built React app files into the NGINX web server directory +ARG API_TOKEN +ARG JOB_ID + +# Set the ENV variables +ENV GITLAB_BASE_URL=https://code.vereign.com/api/v4 +ENV GITLAB_PROJECT_ID=662 +ENV TOKEN=$API_TOKEN +ENV ID=$JOB_ID + +# Download the artifacts from the GitLab API +RUN wget --header "PRIVATE-TOKEN: $TOKEN" -O artifacts.zip "${GITLAB_BASE_URL}/projects/${GITLAB_PROJECT_ID}/jobs/${ID}/artifacts" + +# Unzip the artifacts (if needed) - adjust this command based on your artifact type +RUN unzip -q artifacts.zip && rm artifacts.zip + +RUN yarn install + +RUN mkdir -p /usr/share/nginx/html/ocm-test/dashboard +RUN mkdir -p /usr/share/nginx/html/ocm/dashboard + + +RUN cp -r dist/apps/ocm-test-dashboard/* /usr/share/nginx/html/ocm-test/dashboard +RUN cp -r dist/apps/dashboard/* /usr/share/nginx/html/ocm/dashboard + +RUN cp -r dist/libs /usr/share/nginx/html/ocm-test/dashboard +RUN cp -r dist/libs /usr/share/nginx/html/ocm/dashboard + +RUN cp -r node_modules /usr/share/nginx/html/ocm-test/dashboard +RUN cp -r node_modules /usr/share/nginx/html/ocm/dashboard + +# Expose the port that NGINX will run on +EXPOSE 8080 + +# Command / Entrypoint +CMD ["nginx", "-g", "daemon off;"] diff --git a/apps/dashboard/deployment/ci-cd/helm/Chart.yaml b/apps/dashboard/deployment/ci-cd/helm/Chart.yaml new file mode 100644 index 0000000000000000000000000000000000000000..721efcadc1fa3ef823341df1c8189d5892ffb957 --- /dev/null +++ b/apps/dashboard/deployment/ci-cd/helm/Chart.yaml @@ -0,0 +1,6 @@ +apiVersion: v1 +appVersion: build-654 +description: dashboard deployment +name: dashboard +version: 0.0.2 +icon: "https://www.vereign.com/wp-content/themes/vereign2020/images/vereign-logo.svg" diff --git a/apps/dashboard/deployment/ci-cd/helm/templates/ConfigMap.yaml b/apps/dashboard/deployment/ci-cd/helm/templates/ConfigMap.yaml new file mode 100644 index 0000000000000000000000000000000000000000..4eb90dd5f7a08b28e4b6d7b2f8eabad031b234c9 --- /dev/null +++ b/apps/dashboard/deployment/ci-cd/helm/templates/ConfigMap.yaml @@ -0,0 +1,21 @@ +--- +apiVersion: v1 +kind: ConfigMap +metadata: + name: {{ template "app.name" . }}-config + namespace: {{ .Release.Namespace }} + labels: + {{- include "app.labels" . | nindent 4 }} +data: + config.js: | + {{- if eq .Release.Namespace "ocm" }} + window.OCMENGINE_HTTP_URL="{{ .Values.ocm.dashboard.agent.http }}"; + window.OCMENGINE_WS_URL="{{ .Values.ocm.dashboard.agent.wss }}"; + window.TSA_URL="{{ .Values.ocm.dashboard.tsa }}"; + window.BASE_PATH="{{ .Values.ocm.dashboard.basepath }}"; + {{- else if eq .Release.Namespace "ocm-test" }} + window.OCMENGINE_HTTP_URL="{{ .Values.ocmtest.dashboard.agent.http }}"; + window.OCMENGINE_WS_URL="{{ .Values.ocmtest.dashboard.agent.wss }}"; + window.TSA_URL="{{ .Values.ocmtest.dashboard.tsa }}"; + window.BASE_PATH="{{ .Values.ocmtest.dashboard.basepath }}"; + {{- end }} diff --git a/apps/dashboard/deployment/ci-cd/helm/templates/_helpers.tpl b/apps/dashboard/deployment/ci-cd/helm/templates/_helpers.tpl new file mode 100644 index 0000000000000000000000000000000000000000..6cba3ffc4fead9c4924f9788d1fb6c1daf8874e3 --- /dev/null +++ b/apps/dashboard/deployment/ci-cd/helm/templates/_helpers.tpl @@ -0,0 +1,94 @@ +{{/* vim: set filetype=mustache: */}} +{{/* +Expand the name of the chart. +*/}} +{{- define "app.name" -}} +{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" -}} +{{- end -}} + +{{/* +Create a fully qualified app name. +We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). +*/}} +{{- define "app.fullname" -}} +{{- $name := default .Chart.Name .Values.nameOverride -}} +{{- printf "%s-%s" $name .Release.Namespace | trunc 63 | trimSuffix "-" -}} +{{- end -}} + +{{/* +Create instance name based on app version and short image sha. +*/}} +{{- define "app.revision" -}} +{{- default .Release.Name .Values.appRel | trunc 63 | trimSuffix "-" -}} +{{- end -}} + +{{/* +Create chart name and version as used by the chart label. +*/}} +{{- define "app.chart" -}} +{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" -}} +{{- end -}} + +{{/* +Common labels +*/}} +{{- define "app.labels" -}} +helm.sh/chart: {{ include "app.chart" . }} +{{ include "app.selectorLabels" . }} +app.kubernetes.io/version: {{ .Chart.AppVersion }} +app.kubernetes.io/managed-by: {{ .Release.Service }} +{{- end -}} + +{{/* +Selector labels +*/}} +{{- define "app.selectorLabels" -}} +app.kubernetes.io/name: {{ include "app.name" . }} +app.kubernetes.io/component: {{ include "app.fullname" . }} +{{- end -}} + +{{/* +Metrics Annotations +*/}} +{{- define "app.metricsAnnotations" -}} +{{- if .Values.metrics.enabled -}} +prometheus.io/scrape: "true" +prometheus.io/port: "{{ .Values.metrics.port }}" +prometheus.io/path: {{ .Values.metrics.path | default "/metrics" | quote }} +{{- end -}} +{{- end -}} + +{{/* +Image string +*/}} +{{- define "app.image" -}} +{{- if .Values.image.sha -}} +{{ .Values.image.repository }}/{{ .Values.image.name }}@{{ .Values.image.sha }} +{{- else -}} +{{ .Values.image.repository }}/{{ .Values.image.name }}:{{ default .Chart.AppVersion .Values.image.tag }} +{{- end -}} +{{- end -}} + +{{/* +Security context +*/}} +{{- define "app.securitycontext" -}} +runAsNonRoot: {{ .Values.security.runAsNonRoot | default false }} +runAsGroup: {{ .Values.security.runAsGid | default 0 }} +runAsUser: {{ .Values.security.runAsUid | default 0 }} +fsGroup: {{ .Values.security.runAsGid | default 0 }} +{{- end -}} + +{{/* +PostgreSQL Connection string URI +*/}} +{{- define "app.postgresql.connectionstring" -}} +postgresql://{{ .Values.attestationManager.database.user }}:{{ .Values.attestationManager.database.password }}@{{ .Values.attestationManager.database.host }}:{{ .Values.attestationManager.database.port }}/{{ .Release.Namespace }}_{{ include "app.name" . | replace "-" "_" }}?schema={{ .Values.attestationManager.database.schema }} +{{- end -}} + +{{/* +Ingress custom path. +*/}} +{{- define "app.path" -}} +{{- default .Chart.Name .Values.ingress.pathOverride | replace "-manager" "" | trunc 63 | trimSuffix "-" -}} +{{- end -}} diff --git a/apps/dashboard/deployment/ci-cd/helm/templates/deployment.yaml b/apps/dashboard/deployment/ci-cd/helm/templates/deployment.yaml new file mode 100644 index 0000000000000000000000000000000000000000..bb59b01d66122804eebf5bd3e40bfc59ef5cebc3 --- /dev/null +++ b/apps/dashboard/deployment/ci-cd/helm/templates/deployment.yaml @@ -0,0 +1,63 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: "{{ template "app.name" . }}" + namespace: {{ .Release.Namespace }} + labels: + {{- include "app.labels" . | nindent 4 }} + app.kubernetes.io/instance: {{ include "app.revision" . }} +spec: + replicas: {{ .Values.replicaCount }} + strategy: + type: RollingUpdate + rollingUpdate: + maxSurge: 1 + maxUnavailable: 0 + selector: + matchLabels: + {{- include "app.selectorLabels" . | nindent 6 }} + template: + metadata: + labels: + {{- include "app.labels" . | nindent 8 }} + annotations: + {{- include "app.metricsAnnotations" . | nindent 8 }} +{{- if .Values.podAnnotations }} +{{ toYaml .Values.podAnnotations | indent 8 }} +{{- end }} + spec: + securityContext: +{{- include "app.securitycontext" . | nindent 8 }} + imagePullSecrets: + - name: {{ .Values.image.pullSecrets }} + containers: + - name: {{ template "app.name" . }} + image: "{{ .Values.image.repository }}/{{ .Values.image.name }}:{{ default .Chart.AppVersion .Values.image.tag }}" + imagePullPolicy: {{ .Values.image.pullPolicy | quote }} +{{- if .Values.extraVars }} +{{ toYaml .Values.extraVars | indent 8 }} +{{- end }} + ports: + {{- if .Values.metrics.enabled }} + - name: monitoring + containerPort: {{ .Values.metrics.port }} + {{- end }} + - name: http + containerPort: {{ .Values.service.port }} + resources: +{{ toYaml .Values.resources | indent 10 }} + volumeMounts: + {{- if eq .Release.Namespace "ocm" }} + - name: {{ template "app.name" . }}-config + mountPath: /usr/share/nginx/html/ocm/dashboard/assets/config.js + subPath: config.js + {{- else if eq .Release.Namespace "ocm-test" }} + - name: {{ template "app.name" . }}-config + mountPath: /usr/share/nginx/html/ocm-test/dashboard/assets/config.js + subPath: config.js + {{- end }} + volumes: + - name: {{ template "app.name" . }}-config + configMap: + name: {{ template "app.name" . }}-config + diff --git a/apps/dashboard/deployment/ci-cd/helm/templates/ingress.yaml b/apps/dashboard/deployment/ci-cd/helm/templates/ingress.yaml new file mode 100644 index 0000000000000000000000000000000000000000..95517eaa8d1fda54ca824473af2716fee4790e3d --- /dev/null +++ b/apps/dashboard/deployment/ci-cd/helm/templates/ingress.yaml @@ -0,0 +1,47 @@ +{{- if .Values.ingress.enabled }} +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + name: {{ template "app.name" . }} + namespace: {{ .Release.Namespace }} + {{- if eq .Release.Namespace "ocm" }} + annotations: +{{ toYaml .Values.ingress.ocm.annotations | indent 4 }} + {{- else if eq .Release.Namespace "ocm-test" }} + annotations: +{{ toYaml .Values.ingress.ocmtest.annotations | indent 4 }} + {{- end }} + labels: + {{- include "app.labels" . | nindent 4 }} +spec: +{{- if .Values.ingress.tlsEnabled }} + tls: + - hosts: + - {{ .Values.ingress.frontendDomain }} + secretName: {{ .Values.ingress.frontendTlsSecretName }} +{{- end }} + rules: + {{- if eq .Release.Namespace "ocm" }} + - host: {{ .Values.ingress.frontendDomain }} + http: + paths: + - path: /ocm/dashboard(/|$)(.*) + pathType: Prefix + backend: + service: + name: {{ template "app.name" . }} + port: + number: {{ .Values.service.port }} + {{- else if eq .Release.Namespace "ocm-test" }} + - host: {{ .Values.ingress.frontendDomain }} + http: + paths: + - path: /ocm-test/dashboard(/|$)(.*) + pathType: Prefix + backend: + service: + name: {{ template "app.name" . }} + port: + number: {{ .Values.service.port }} + {{- end }} +{{- end }} diff --git a/apps/dashboard/deployment/ci-cd/helm/templates/service.yaml b/apps/dashboard/deployment/ci-cd/helm/templates/service.yaml new file mode 100644 index 0000000000000000000000000000000000000000..375d171e72676405623eea98ed0e7bb8412ac8ea --- /dev/null +++ b/apps/dashboard/deployment/ci-cd/helm/templates/service.yaml @@ -0,0 +1,15 @@ +apiVersion: v1 +kind: Service +metadata: + name: {{ template "app.name" . }} + namespace: {{ .Release.Namespace }} + labels: + {{- include "app.labels" . | nindent 4 }} +spec: + clusterIP: None + ports: + - name: http + port: {{ .Values.service.port }} + targetPort: {{ .Values.service.port }} + selector: + {{- include "app.selectorLabels" . | nindent 4 }} diff --git a/apps/dashboard/deployment/ci-cd/helm/values.yaml b/apps/dashboard/deployment/ci-cd/helm/values.yaml new file mode 100644 index 0000000000000000000000000000000000000000..9d19349ed6e9b84319d721f3a8ffbece91ae95ef --- /dev/null +++ b/apps/dashboard/deployment/ci-cd/helm/values.yaml @@ -0,0 +1,101 @@ +# -- Default number of instances to start ..... +replicaCount: 1 +# -- Application name ... +name: dashboard +# -- Ovverwrites application name ... +nameOverride: "" + +image: + repository: eu.gcr.io/vrgn-infra-prj + # -- Image name .. + name: gaiax/ocm/ocm-engine/dashboard + # -- Image tag .. + # Uses .Chart.AppVersion if empty . + tag: "" + # -- Image sha, usually generated by the CI . + # Uses image.tag if empty . + sha: "" + # -- Image pull policy . + pullPolicy: Always + # -- Image pull secret when internal image is used . + pullSecrets: deployment-key-light + +resources: + requests: + cpu: 250m + +autoscaling: + # -- Enable autoscaling . + enabled: false + # -- Minimum replicas . + minReplicas: 1 + # -- Maximum replicas . + maxReplicas: 3 + # -- CPU target for autoscaling trigger . + targetCPUUtilizationPercentage: 70 + # -- Memory target for autoscaling trigger . + targetMemoryUtilizationPercentage: 70 +## +## Prometheus Exporter / Metrics . +## + +metrics: + # -- Enable prometheus metrics . + enabled: true + # -- Port for prometheus metrics . + port: 2112 + +## +## Kubernetes [SecurityContext](https://kubernetes.io/docs/tasks/configure-pod-container/security-context/) object. +## + +security: + # -- by default, apps run as non-root . + runAsNonRoot: false + # -- User used by the apps . + runAsUid: 0 + # -- Group used by the apps . + runAsGid: 0 + +ocm: + dashboard: + agent: + ws: "wss://ssi-dev.vereign.com/api-issuer" + http: "https://ssi-dev.vereign.com/api-issuer" + tsa: "https://tsa.vereign.com" + basepath: "/ocm/dashboard" + +ocmtest: + dashboard: + agent: + ws: "wss://ssi-dev.vereign.com/api-holder" + http: "https://ssi-dev.vereign.com/api-holder" + tsa: "https://tsa.vereign.com" + basepath: "/ocm-test/dashboard" + +service: + port: 8080 + +ingress: + enabled: true + tlsEnabled: true + frontendDomain: ssi-dev.vereign.com + frontendTlsSecretName: cert-manager-tls + + ocm: + annotations: { + kubernetes.io/ingress.class: "nginx", + cert-manager.io/cluster-issuer: letsencrypt-production-http, + kubernetes.io/ingress.global-static-ip-name: ssi-dev, + nginx.ingress.kubernetes.io/rewrite-target: /ocm/dashboard/$2 + } + + ocmtest: + annotations: { + kubernetes.io/ingress.class: "nginx", + cert-manager.io/cluster-issuer: letsencrypt-production-http, + kubernetes.io/ingress.global-static-ip-name: ssi-dev, + nginx.ingress.kubernetes.io/rewrite-target: /ocm-test/dashboard/$2 + } + + diff --git a/apps/dashboard/deployment/local/Dockerfile b/apps/dashboard/deployment/local/Dockerfile new file mode 100644 index 0000000000000000000000000000000000000000..f097b257ba97b3a8dd7b738a83eb8c7979d2684f --- /dev/null +++ b/apps/dashboard/deployment/local/Dockerfile @@ -0,0 +1,13 @@ +FROM node:18.16.0-buster-slim + +RUN apt update -y && apt install python3 git make build-essential -y + +WORKDIR /app + +COPY ./dist/apps/dashboard ./ +COPY package.json yarn.lock ./ + +RUN yarn install +EXPOSE 4200 + +CMD ["yarn", "nx", "serve", "dashboard"] diff --git a/apps/dashboard/jest.config.ts b/apps/dashboard/jest.config.ts new file mode 100644 index 0000000000000000000000000000000000000000..5f84421e65b3e9416378ddafdc573616a306865a --- /dev/null +++ b/apps/dashboard/jest.config.ts @@ -0,0 +1,11 @@ +/* eslint-disable */ +export default { + displayName: "dashboard", + preset: "../../jest.preset.js", + transform: { + "^(?!.*\\.(js|jsx|ts|tsx|css|json)$)": "@nx/react/plugins/jest", + "^.+\\.[tj]sx?$": ["babel-jest", { presets: ["@nx/react/babel"] }], + }, + moduleFileExtensions: ["ts", "tsx", "js", "jsx"], + coverageDirectory: "../../coverage/apps/dashboard", +}; diff --git a/apps/dashboard/project.json b/apps/dashboard/project.json new file mode 100644 index 0000000000000000000000000000000000000000..3b99e89b43d6d822270a7f8d09697ddf7a802f23 --- /dev/null +++ b/apps/dashboard/project.json @@ -0,0 +1,85 @@ +{ + "name": "dashboard", + "$schema": "../../node_modules/nx/schemas/project-schema.json", + "sourceRoot": "apps/dashboard/src", + "projectType": "application", + "targets": { + "build": { + "executor": "@nx/webpack:webpack", + "outputs": ["{options.outputPath}"], + "defaultConfiguration": "production", + "options": { + "compiler": "babel", + "outputPath": "dist/apps/dashboard", + "index": "apps/dashboard/src/index.html", + "baseHref": "/", + "main": "apps/dashboard/src/main.tsx", + "tsConfig": "apps/dashboard/tsconfig.app.json", + "assets": [ + "apps/dashboard/src/favicon.ico", + "apps/dashboard/src/assets" + ], + "styles": ["apps/dashboard/src/styles.scss"], + "scripts": [], + "isolatedConfig": true, + "webpackConfig": "apps/dashboard/webpack.config.js" + }, + "configurations": { + "development": { + "extractLicenses": false, + "optimization": false, + "sourceMap": true, + "vendorChunk": true + }, + "production": { + "optimization": true, + "outputHashing": "all", + "sourceMap": false, + "namedChunks": false, + "extractLicenses": true, + "vendorChunk": false + } + } + }, + "serve": { + "executor": "@nx/webpack:dev-server", + "defaultConfiguration": "development", + "options": { + "buildTarget": "dashboard:build", + "hmr": true, + "host": "0.0.0.0" + }, + "configurations": { + "development": { + "buildTarget": "dashboard:build:development" + }, + "production": { + "buildTarget": "dashboard:build:production", + "hmr": false + } + } + }, + "lint": { + "executor": "@nx/linter:eslint", + "outputs": ["{options.outputFile}"], + "options": { + "lintFilePatterns": ["apps/dashboard/**/*.{ts,tsx,js,jsx}"] + } + }, + "test": { + "executor": "@nx/jest:jest", + "outputs": ["{workspaceRoot}/coverage/{projectRoot}"], + "options": { + "jestConfig": "apps/dashboard/jest.config.ts", + "passWithNoTests": true + }, + "configurations": { + "ci": { + "ci": true, + "codeCoverage": true + } + } + } + }, + "tags": [] +} diff --git a/apps/dashboard/src/assets/Vereign_Logo_ICON_BLACK.png b/apps/dashboard/src/assets/Vereign_Logo_ICON_BLACK.png new file mode 100644 index 0000000000000000000000000000000000000000..f96d03054e394a76b0eb94b59cc277d6abc3bf36 Binary files /dev/null and b/apps/dashboard/src/assets/Vereign_Logo_ICON_BLACK.png differ diff --git a/apps/dashboard/src/assets/config.js.example b/apps/dashboard/src/assets/config.js.example new file mode 100644 index 0000000000000000000000000000000000000000..7ce5785edddca5068434eece97cef040aaf5c34f --- /dev/null +++ b/apps/dashboard/src/assets/config.js.example @@ -0,0 +1,4 @@ +window.OCMENGINE_HTTP_URL="https://ssi-dev.vereign.com/ocm-test-gateway"; +window.OCMENGINE_WS_URL="wss://ssi-dev.vereign.com/ocm-test-gateway"; +window.TSA_URL="https://tsa.vereign.com"; +window.BASE_PATH="/"; diff --git a/apps/dashboard/src/assets/vault_image.png b/apps/dashboard/src/assets/vault_image.png new file mode 100644 index 0000000000000000000000000000000000000000..98646b843eb38a1e2a539a0b79ec93b14b74d45e Binary files /dev/null and b/apps/dashboard/src/assets/vault_image.png differ diff --git a/apps/dashboard/src/components/App/index.tsx b/apps/dashboard/src/components/App/index.tsx new file mode 100644 index 0000000000000000000000000000000000000000..902d5a1209311b531a1b0b22b6712c70f302ac46 --- /dev/null +++ b/apps/dashboard/src/components/App/index.tsx @@ -0,0 +1,49 @@ +import React, { useEffect, useState } from "react"; +import { ToastContainer } from "react-toastify"; +import PageRoutes from "@dashboard/routes"; +import modalStore from "@dashboard/store/modalStore"; +import { observer } from "mobx-react"; +import s from "./styles.module.scss"; +import useGlobalAuth from "@dashboard/hooks/useGlobalAuth"; +import { setConfig as setOcmEngineConfig } from "@dashboard/engine-api"; +import getConfig from "@dashboard/utils/getConfig"; + +const App = observer(() => { + const auth = useGlobalAuth(); + const [isAppLoading] = useState(false); + + useEffect(() => { + const config = getConfig(); + setOcmEngineConfig({ + wsUrl: config.OCMENGINE_WS_URL, + httpUrl: config.OCMENGINE_HTTP_URL, + getToken: async () => auth.token || "", + }); + }, [auth.token]); + + let content; + if (isAppLoading) { + content = ( + <div className={s.loader}> + <img + className={s.loaderLogo} + alt="vereign" + src="https://www.vereign.com/vereign-logo.svg" + /> + </div> + ); + } else { + content = <PageRoutes />; + } + return ( + <div className={s.root}> + {content} + <ToastContainer /> + {modalStore.modals.map((p) => ( + <React.Fragment key={p.id}>{p.modal as React.ReactNode}</React.Fragment> + ))} + </div> + ); +}); + +export default App; diff --git a/apps/dashboard/src/components/App/styles.module.scss b/apps/dashboard/src/components/App/styles.module.scss new file mode 100644 index 0000000000000000000000000000000000000000..7960966f5879994a3e289cba128069b8e7e1a5a0 --- /dev/null +++ b/apps/dashboard/src/components/App/styles.module.scss @@ -0,0 +1,31 @@ +.loader { + display: flex; + flex-grow: 1; + flex-direction: column; + align-items: center; + justify-content: center; + background-color: black; +} + +.loaderLogo { + width: 200px; + height: 200px; + margin-bottom: 20px; + animation: fadeInOut 1s infinite; +} + +@keyframes fadeInOut { + 0%, 100% { + opacity: 0.8; + } + 50% { + opacity: 1.0; + } +} + +.root { + display: flex; + flex-direction: column; + min-height: 100vh; +} + diff --git a/apps/dashboard/src/components/BasicMessageItem/index.tsx b/apps/dashboard/src/components/BasicMessageItem/index.tsx new file mode 100644 index 0000000000000000000000000000000000000000..6102f72d23314a36cee334c8cd728fbc0a09b968 --- /dev/null +++ b/apps/dashboard/src/components/BasicMessageItem/index.tsx @@ -0,0 +1,35 @@ +import React from "react"; +import { observer } from "mobx-react"; +import format from "date-fns/format"; +import { MessageRecordDto, MessageRecordDtoRole } from "@dashboard/engine-api"; +import { Tag } from "antd"; +import RecordItem from "../RecordItem"; +import s from "./styles.module.scss"; + +interface BasicMessageItemProps { + item: MessageRecordDto; + onClick?: () => void; +} + +const BasicMessageItem = observer( + ({ item, onClick }: BasicMessageItemProps) => { + return ( + <RecordItem onClick={onClick} rawData={item}> + <div className={s.content}> + <Tag + color={item.role === MessageRecordDtoRole.Sender ? "blue" : "green"} + > + Role: {item.role} + </Tag>{" "} + {item.content} + </div> + + <div className={s.createdAt}> + {item.createdAt && format(item.createdAt, "dd.MM.yyyy HH:mm:ss")} + </div> + </RecordItem> + ); + }, +); + +export default BasicMessageItem; diff --git a/apps/dashboard/src/components/BasicMessageItem/styles.module.scss b/apps/dashboard/src/components/BasicMessageItem/styles.module.scss new file mode 100644 index 0000000000000000000000000000000000000000..65855af0b13b7fd279da378ebe36288b648ac120 --- /dev/null +++ b/apps/dashboard/src/components/BasicMessageItem/styles.module.scss @@ -0,0 +1,7 @@ +.createdAt { + position: absolute; + right: 16px; + bottom: 4px; + font-size: 14px; + color: rgba(0, 0, 0, 0.7); +} diff --git a/apps/dashboard/src/components/BasicMessageList/BasicMessageListStore.ts b/apps/dashboard/src/components/BasicMessageList/BasicMessageListStore.ts new file mode 100644 index 0000000000000000000000000000000000000000..ecbbfad8d5ebc00ee051cd5429928c684332c14e --- /dev/null +++ b/apps/dashboard/src/components/BasicMessageList/BasicMessageListStore.ts @@ -0,0 +1,52 @@ +import { makeAutoObservable, runInAction } from "mobx"; +import api, { MessageRecordDto } from "@dashboard/engine-api"; +import displayError from "@dashboard/utils/displayError"; + +class BasicMessageListStore { + public loading = false; + public sendingMessage = false; + public items: MessageRecordDto[] = []; + constructor() { + makeAutoObservable(this); + } + + public async loadAll(connectionId: string | null) { + runInAction(() => (this.loading = true)); + try { + const items = await api.fetchBasicMessages( + undefined, + connectionId || undefined, + ); + runInAction(() => { + this.items = items; + this.loading = false; + }); + } catch (e: unknown) { + displayError(e); + runInAction(() => (this.loading = false)); + } + } + + public sendMessage = async (connectionId: string, content: string) => { + runInAction(() => (this.sendingMessage = true)); + try { + const message = await api.sendMessage({ + connectionId: connectionId, + message: content, + }); + runInAction(() => { + this.items.push(message); + this.sendingMessage = false; + }); + return true; + } catch (e: unknown) { + displayError(e); + runInAction(() => (this.sendingMessage = false)); + } + return false; + }; +} + +export type { BasicMessageListStore }; + +export default BasicMessageListStore; diff --git a/apps/dashboard/src/components/BasicMessageList/CreateMessage/index.tsx b/apps/dashboard/src/components/BasicMessageList/CreateMessage/index.tsx new file mode 100644 index 0000000000000000000000000000000000000000..156e0e6ee9ed3d7fe74e1d32f72b69c74054d9b5 --- /dev/null +++ b/apps/dashboard/src/components/BasicMessageList/CreateMessage/index.tsx @@ -0,0 +1,45 @@ +import React, { useState } from "react"; +import { observer } from "mobx-react"; +import { Button, Input } from "antd"; + +export interface CreateMessageProps { + onCreateMessage: (message: string) => Promise<boolean>; +} + +const CreateMessage: React.FC<CreateMessageProps> = observer( + ({ onCreateMessage }) => { + const [text, setText] = useState(""); + const [loading, setLoading] = useState(false); + + const handleCreate = async () => { + setLoading(true); + try { + const result = await onCreateMessage(text); + if (result) { + setText(""); + } + } catch (e) { + console.error(e); + } + setLoading(false); + }; + return ( + <div> + <div>Create a message</div> + <Input.TextArea + rows={6} + value={text} + onChange={(e) => { + setText(e.target.value); + }} + disabled={loading} + /> + <Button onClick={handleCreate} disabled={loading} loading={loading}> + Send message + </Button> + </div> + ); + }, +); + +export default CreateMessage; diff --git a/apps/dashboard/src/components/BasicMessageList/index.tsx b/apps/dashboard/src/components/BasicMessageList/index.tsx new file mode 100644 index 0000000000000000000000000000000000000000..15a4f760454ab8340b1eb6a46d1d9eb10d759a00 --- /dev/null +++ b/apps/dashboard/src/components/BasicMessageList/index.tsx @@ -0,0 +1,52 @@ +import React, { useEffect, useState } from "react"; +import { observer } from "mobx-react"; +import { Spin } from "antd"; +import BasicMessageListStore from "./BasicMessageListStore"; +import NoRecordsMessage from "../NoRecordsMessage"; +import BasicMessageItem from "@dashboard/components/BasicMessageItem"; +import CreateMessage from "@dashboard/components/BasicMessageList/CreateMessage"; + +export interface BasicMessageListProps { + connectionId: string | null; +} + +const BasicMessageList: React.FC<BasicMessageListProps> = observer( + ({ connectionId }) => { + const [store] = useState(() => new BasicMessageListStore()); + + useEffect(() => { + store.loadAll(connectionId); + + // Todo. Code for gateway-api + // const unsubscribe = api.subscribeToBasicMessages((message) => { + // if (connectionId === message.connectionId) { + // store.items.push(message); + // } + // }); + // return () => { + // unsubscribe(); + // }; + }, [store, connectionId]); + return ( + <div> + {store.items.map((p) => ( + <BasicMessageItem key={p.id} item={p} /> + ))} + {!store.loading && !store.items.length && <NoRecordsMessage />} + {store.loading && <Spin />} + + {connectionId && ( + <div> + <CreateMessage + onCreateMessage={(message) => + store.sendMessage(connectionId, message) + } + /> + </div> + )} + </div> + ); + }, +); + +export default BasicMessageList; diff --git a/apps/dashboard/src/components/ConnectionItem/index.tsx b/apps/dashboard/src/components/ConnectionItem/index.tsx new file mode 100644 index 0000000000000000000000000000000000000000..c64689fc2af0b988afa3ab30f5a677ad5631e869 --- /dev/null +++ b/apps/dashboard/src/components/ConnectionItem/index.tsx @@ -0,0 +1,35 @@ +import React from "react"; +import { observer } from "mobx-react"; +import format from "date-fns/format"; +import { ConnectionRecordDto } from "@dashboard/engine-api"; +import RecordItem from "@dashboard/components/RecordItem"; +import s from "./styles.module.scss"; +import { Tag } from "antd"; + +interface ConnectionItemProps { + item: ConnectionRecordDto; + onClick?: () => void; +} + +const ConnectionItem = observer(({ item, onClick }: ConnectionItemProps) => { + return ( + <RecordItem onClick={onClick} rawData={item}> + {item.connectionName && ( + <div className={s.prop}> + Their label: <b>{item.connectionName}</b> + </div> + )} + <div className={s.prop}> + Status: <Tag>{item.state}</Tag> + </div> + <div className={s.prop}>ConnectionId: {item.id}</div> + <div className={s.prop}>OutOfBandId: {item.outOfBandId}</div> + + <div className={s.createdAt}> + {item.createdAt && format(item.createdAt, "dd.MM.yyyy HH:mm:ss")} + </div> + </RecordItem> + ); +}); + +export default ConnectionItem; diff --git a/apps/dashboard/src/components/ConnectionItem/styles.module.scss b/apps/dashboard/src/components/ConnectionItem/styles.module.scss new file mode 100644 index 0000000000000000000000000000000000000000..932e36d354870d4f02355a4170a60b86a158f1bb --- /dev/null +++ b/apps/dashboard/src/components/ConnectionItem/styles.module.scss @@ -0,0 +1,11 @@ +.createdAt { + position: absolute; + right: 16px; + bottom: 4px; + font-size: 14px; + color: rgba(0, 0, 0, 0.7); +} + +.prop { + margin: 4px 0; +} diff --git a/apps/dashboard/src/components/CreatedDidItem/index.tsx b/apps/dashboard/src/components/CreatedDidItem/index.tsx new file mode 100644 index 0000000000000000000000000000000000000000..f3d57ea6470e5dec0362c23b1110df8e167c8b41 --- /dev/null +++ b/apps/dashboard/src/components/CreatedDidItem/index.tsx @@ -0,0 +1,20 @@ +import React from "react"; +import { observer } from "mobx-react"; +import { DidRecordDto } from "@dashboard/engine-api"; +import RecordItem from "../RecordItem"; +import s from "./styles.module.scss"; + +interface CreatedDidItemProps { + item: DidRecordDto; + onClick?: () => void; +} + +const CreatedDidItem = observer(({ item, onClick }: CreatedDidItemProps) => { + return ( + <RecordItem onClick={onClick} rawData={item}> + <div className={s.name}>{item.did}</div> + </RecordItem> + ); +}); + +export default CreatedDidItem; diff --git a/apps/dashboard/src/components/CreatedDidItem/styles.module.scss b/apps/dashboard/src/components/CreatedDidItem/styles.module.scss new file mode 100644 index 0000000000000000000000000000000000000000..5a4fae3f2482b273b51e5f56b491ad4295903657 --- /dev/null +++ b/apps/dashboard/src/components/CreatedDidItem/styles.module.scss @@ -0,0 +1,3 @@ +.name { + font-weight: bold; +} diff --git a/apps/dashboard/src/components/CreatedInvitationItem/index.tsx b/apps/dashboard/src/components/CreatedInvitationItem/index.tsx new file mode 100644 index 0000000000000000000000000000000000000000..a354a05c54f562c220c86ff648a8814b1ce320b0 --- /dev/null +++ b/apps/dashboard/src/components/CreatedInvitationItem/index.tsx @@ -0,0 +1,37 @@ +import React from "react"; +import { observer } from "mobx-react"; +import { CreateInvitationResponseDto } from "@dashboard/engine-api"; +import RecordItem from "../RecordItem"; +import { Tag } from "antd"; +import format from "date-fns/format"; +import s from "./styles.module.scss"; + +interface CreatedInvitationItemProps { + item: CreateInvitationResponseDto; + onClick?: () => void; +} + +const CreatedInvitationItem = observer( + ({ item, onClick }: CreatedInvitationItemProps) => { + return ( + <RecordItem onClick={onClick} rawData={item}> + {item.shortInvitationUrl && ( + <div className={s.prop}> + Short URL: <b>{item.shortInvitationUrl}</b> + </div> + )} + <div className={s.prop}> + outOfBandId: <Tag>{item.outOfBandId}</Tag> + </div> + <div className={s.prop}>role: {item.role}</div> + <div className={s.prop}>state: {item.state}</div> + + <div className={s.createdAt}> + {item.createdAt && format(item.createdAt, "dd.MM.yyyy HH:mm:ss")} + </div> + </RecordItem> + ); + }, +); + +export default CreatedInvitationItem; diff --git a/apps/dashboard/src/components/CreatedInvitationItem/styles.module.scss b/apps/dashboard/src/components/CreatedInvitationItem/styles.module.scss new file mode 100644 index 0000000000000000000000000000000000000000..932e36d354870d4f02355a4170a60b86a158f1bb --- /dev/null +++ b/apps/dashboard/src/components/CreatedInvitationItem/styles.module.scss @@ -0,0 +1,11 @@ +.createdAt { + position: absolute; + right: 16px; + bottom: 4px; + font-size: 14px; + color: rgba(0, 0, 0, 0.7); +} + +.prop { + margin: 4px 0; +} diff --git a/apps/dashboard/src/components/CredentialDefinitionItem/index.tsx b/apps/dashboard/src/components/CredentialDefinitionItem/index.tsx new file mode 100644 index 0000000000000000000000000000000000000000..fd98db326bfac6bab4f7ef5c47620d6a691c6186 --- /dev/null +++ b/apps/dashboard/src/components/CredentialDefinitionItem/index.tsx @@ -0,0 +1,26 @@ +import React from "react"; +import { observer } from "mobx-react"; +import { Space } from "antd"; +import { CreddefRecordDto } from "@dashboard/engine-api"; +import RecordItem from "../RecordItem"; +import s from "./styles.module.scss"; + +interface CredentialDefinitionItem { + item: CreddefRecordDto; + onClick?: () => void; +} + +const CredentialDefinitionItem = observer( + ({ item, onClick }: CredentialDefinitionItem) => { + return ( + <RecordItem onClick={onClick} rawData={item}> + <Space direction="vertical"> + <div className={s.name}>{item.tag}</div> + <div className={s.credDefId}>{item.id}</div> + </Space> + </RecordItem> + ); + }, +); + +export default CredentialDefinitionItem; diff --git a/apps/dashboard/src/components/CredentialDefinitionItem/styles.module.scss b/apps/dashboard/src/components/CredentialDefinitionItem/styles.module.scss new file mode 100644 index 0000000000000000000000000000000000000000..c49a2c5364ce51cf45615a191e1fa00389854feb --- /dev/null +++ b/apps/dashboard/src/components/CredentialDefinitionItem/styles.module.scss @@ -0,0 +1,7 @@ +.name { + font-weight: bold; +} + +.attributes { + +} diff --git a/apps/dashboard/src/components/CredentialItem/index.tsx b/apps/dashboard/src/components/CredentialItem/index.tsx new file mode 100644 index 0000000000000000000000000000000000000000..204d1432fbe4736c7fe9bd70b75959c38c41ec92 --- /dev/null +++ b/apps/dashboard/src/components/CredentialItem/index.tsx @@ -0,0 +1,108 @@ +import React, { useState } from "react"; +import { observer } from "mobx-react"; +import { Button, Space, Tag } from "antd"; +import { + CredentialRecordDto, + CredentialRecordDtoState, +} from "@dashboard/engine-api"; +import format from "date-fns/format"; +import api from "@dashboard/engine-api"; +import modalStore from "@dashboard/store/modalStore"; +import RecordItem from "../RecordItem"; +import s from "./styles.module.scss"; +import displayError from "@dashboard/utils/displayError"; + +interface CredentialItemProps { + item: CredentialRecordDto; + onOpen?: () => void; + onRemove?: () => void; + onAccept?: () => void; + onDecline?: () => void; + statusChanging?: boolean; +} + +const CredentialItem = observer( + ({ + item, + onOpen, + onRemove, + onAccept, + onDecline, + statusChanging, + }: CredentialItemProps) => { + const [loadingFormatData, setLoadingFormatData] = useState(false); + const [formatData, setFormatData] = useState<unknown>(null); + + const openFormatData = async () => { + if (!formatData) { + setLoadingFormatData(true); + try { + const formatData = await api.getCredentialFormatDataById(item.id!); + setFormatData(formatData); + setLoadingFormatData(false); + modalStore.openViewJsonDialog({ data: formatData }); + return; + } catch (e: unknown) { + displayError(e); + setLoadingFormatData(false); + return; + } + } + + modalStore.openViewJsonDialog({ data: formatData }); + }; + + return ( + <RecordItem rawData={item}> + <div className={s.prop}> + Status: <Tag>{item.state}</Tag> + </div> + <div className={s.prop}> + Attbiutes:{" "} + {item.attributes?.map((p) => ( + <Tag color="green" key={p.name}> + {p.name}: {p.value} + </Tag> + ))} + </div> + <div className={s.createdAt}> + {item.createdAt && format(item.createdAt, "dd.MM.yyyy HH:mm:ss")} + </div> + <Space direction="horizontal"> + {onOpen && <Button onClick={onOpen}>Go to credential</Button>} + <Button + type="primary" + disabled={loadingFormatData} + loading={loadingFormatData} + onClick={openFormatData} + > + View Format Data + </Button> + {item.state === CredentialRecordDtoState.OfferReceived && + onAccept && ( + <Button + disabled={statusChanging} + onClick={onAccept} + type="primary" + > + Accept + </Button> + )} + {item.state === CredentialRecordDtoState.OfferReceived && + onDecline && ( + <Button disabled={statusChanging} onClick={onDecline} danger> + Decline + </Button> + )} + {onRemove && ( + <Button disabled={statusChanging} danger onClick={onRemove}> + Delete + </Button> + )} + </Space> + </RecordItem> + ); + }, +); + +export default CredentialItem; diff --git a/apps/dashboard/src/components/CredentialItem/styles.module.scss b/apps/dashboard/src/components/CredentialItem/styles.module.scss new file mode 100644 index 0000000000000000000000000000000000000000..e1d557e609870b23afdd007c05947b5bc050b568 --- /dev/null +++ b/apps/dashboard/src/components/CredentialItem/styles.module.scss @@ -0,0 +1,16 @@ +.row { + display: flex; + margin-bottom: 4px; +} + +.createdAt { + position: absolute; + right: 16px; + bottom: 4px; + font-size: 14px; + color: rgba(0, 0, 0, 0.7); +} + +.prop { + margin: 4px 0; +} diff --git a/apps/dashboard/src/components/CredentialList/CredentialListStore.ts b/apps/dashboard/src/components/CredentialList/CredentialListStore.ts new file mode 100644 index 0000000000000000000000000000000000000000..13867491f0372065a54caadfc86f193c8eb797ee --- /dev/null +++ b/apps/dashboard/src/components/CredentialList/CredentialListStore.ts @@ -0,0 +1,107 @@ +import { makeAutoObservable, runInAction } from "mobx"; +import api, { CredentialRecordDto } from "@dashboard/engine-api"; +import { toast } from "react-toastify"; +import displayError from "@dashboard/utils/displayError"; + +class CredentialListStore { + public loading = false; + public items: CredentialRecordDto[] = []; + + public statusChangeId: string | null = null; + constructor() { + makeAutoObservable(this); + } + + public async loadAll(connectionId: string | null) { + runInAction(() => (this.loading = true)); + try { + const items = await api.fetchCredentials( + undefined, + connectionId || undefined, + ); + runInAction(() => { + this.items = items; + this.loading = false; + }); + } catch (e: unknown) { + displayError(e); + runInAction(() => (this.loading = false)); + } + } + + public async accept(credId: string) { + runInAction(() => { + this.statusChangeId = credId; + }); + try { + const credRecord = await api.acceptCredential({ + credentialId: credId, + credentialUrl: "", + }); + runInAction(() => { + const index = this.items.findIndex((p) => p.id === credRecord.id); + if (index >= 0) { + this.items[index] = credRecord; + } + this.statusChangeId = null; + }); + toast.success("Credential offer accepted"); + } catch (e: unknown) { + displayError(e); + runInAction(() => { + this.loading = false; + this.statusChangeId = null; + }); + } + } + + public async decline(credId: string) { + runInAction(() => { + this.statusChangeId = credId; + }); + try { + const credRecord = await api.declineCredential(credId); + runInAction(() => { + const index = this.items.findIndex((p) => p.id === credRecord.id); + if (index >= 0) { + this.items[index] = credRecord; + } + this.statusChangeId = null; + }); + toast.success("Credential offer declined"); + } catch (e: unknown) { + displayError(e); + runInAction(() => { + this.loading = false; + this.statusChangeId = null; + }); + } + } + + public async remove(credId: string) { + runInAction(() => { + this.statusChangeId = credId; + }); + try { + await api.deleteCredentialById(credId); + runInAction(() => { + const index = this.items.findIndex((p) => p.id === credId); + if (index >= 0) { + this.items.splice(index, 1); + } + this.statusChangeId = null; + }); + toast.success("Credential record deleted successfully"); + } catch (e: unknown) { + displayError(e); + runInAction(() => { + this.loading = false; + this.statusChangeId = null; + }); + } + } +} + +export type { CredentialListStore }; + +export default CredentialListStore; diff --git a/apps/dashboard/src/components/CredentialList/index.tsx b/apps/dashboard/src/components/CredentialList/index.tsx new file mode 100644 index 0000000000000000000000000000000000000000..cdea9914ad05bce1bb7878afe6a8e113b4513a05 --- /dev/null +++ b/apps/dashboard/src/components/CredentialList/index.tsx @@ -0,0 +1,64 @@ +import React, { useEffect, useState } from "react"; +import { observer } from "mobx-react"; +import { Spin } from "antd"; +import CredentialItem from "@dashboard/components/CredentialItem"; +import CredentialListStore from "./CredentialListStore"; +import NoRecordsMessage from "../NoRecordsMessage"; +import modalStore from "@dashboard/store/modalStore"; + +export interface CredentialListProps { + connectionId: string | null; +} + +const CredentialList: React.FC<CredentialListProps> = observer( + ({ connectionId }) => { + const [store] = useState(() => new CredentialListStore()); + + useEffect(() => { + store.loadAll(connectionId); + }, [store, connectionId]); + + const handleDelete = async (credId: string) => { + modalStore.openConfirmDialog({ + title: "Are you sure you want to delete this credential record?", + description: "", + dangerOk: true, + onOk: async (e) => { + await store.remove(credId); + e.close(); + }, + }); + }; + + const handleDecline = async (credId: string) => { + modalStore.openConfirmDialog({ + title: "Are you sure you want to decline this credential offer?", + description: "", + dangerOk: true, + onOk: async (e) => { + await store.decline(credId); + e.close(); + }, + }); + }; + + return ( + <div> + {store.items.map((p) => ( + <CredentialItem + key={p.id} + item={p} + onAccept={() => store.accept(p.id!)} + onDecline={() => handleDecline(p.id!)} + statusChanging={store.statusChangeId === p.id} + onRemove={() => handleDelete(p.id!)} + /> + ))} + {!store.loading && !store.items.length && <NoRecordsMessage />} + {store.loading && <Spin />} + </div> + ); + }, +); + +export default CredentialList; diff --git a/apps/dashboard/src/components/CredentialList/styles.module.scss b/apps/dashboard/src/components/CredentialList/styles.module.scss new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/apps/dashboard/src/components/JsonDetails/index.tsx b/apps/dashboard/src/components/JsonDetails/index.tsx new file mode 100644 index 0000000000000000000000000000000000000000..a2a4ed5a96b8f14fc82643570c18160377080d91 --- /dev/null +++ b/apps/dashboard/src/components/JsonDetails/index.tsx @@ -0,0 +1,25 @@ +import React from "react"; +import { observer } from "mobx-react"; +import s from "./styles.module.scss"; + +interface JsonDetailsProps { + //TODO: this should be fixed + // eslint-disable-next-line @typescript-eslint/no-explicit-any + object: any; + onClick?: () => void; +} + +const JsonDetails = observer(({ object }: JsonDetailsProps) => { + return ( + <div className={s.item}> + <pre> + {object && + typeof object === "object" && + JSON.stringify(object, null, 2)} + {!object && "Empty"} + </pre> + </div> + ); +}); + +export default JsonDetails; diff --git a/apps/dashboard/src/components/JsonDetails/styles.module.scss b/apps/dashboard/src/components/JsonDetails/styles.module.scss new file mode 100644 index 0000000000000000000000000000000000000000..933e3f778e892388b931240e4913aef5e9fc3c8b --- /dev/null +++ b/apps/dashboard/src/components/JsonDetails/styles.module.scss @@ -0,0 +1,24 @@ +.item { + display: flex; + flex-direction: row; + margin: 4px 0; + border: 1px solid rgba(0, 0, 0, 0.1); + border-radius: 12px; + background: rgba(0, 0, 0, 0.04); + padding: 8px; + position: relative; + word-wrap: break-word; + overflow: auto; + + pre { + padding: 0; + margin: 0; + background: transparent; + } +} + +.title { + font-size: 18px; + font-weight: bold; + margin-bottom: 8px; +} diff --git a/apps/dashboard/src/components/Modal/Body.tsx b/apps/dashboard/src/components/Modal/Body.tsx new file mode 100644 index 0000000000000000000000000000000000000000..a2e55d504df6cb1cc04d8b3d29e24580875a8e51 --- /dev/null +++ b/apps/dashboard/src/components/Modal/Body.tsx @@ -0,0 +1,14 @@ +import React from "react"; +import classNames from "classnames"; +import s from "./styles.module.scss"; + +export interface BodyProps { + className?: string; + children: React.ReactNode; +} + +const Body = ({ children, className }: BodyProps) => ( + <div className={classNames(s.body, className)}>{children}</div> +); + +export default Body; diff --git a/apps/dashboard/src/components/Modal/Footer.tsx b/apps/dashboard/src/components/Modal/Footer.tsx new file mode 100644 index 0000000000000000000000000000000000000000..195b8b00c982ef51f40738350a4f83564882a369 --- /dev/null +++ b/apps/dashboard/src/components/Modal/Footer.tsx @@ -0,0 +1,12 @@ +import React from "react"; +import s from "./styles.module.scss"; + +export interface FooterProps { + children: React.ReactNode; +} + +const Footer = ({ children }: FooterProps) => ( + <div className={s.footer}>{children}</div> +); + +export default Footer; diff --git a/apps/dashboard/src/components/Modal/index.tsx b/apps/dashboard/src/components/Modal/index.tsx new file mode 100644 index 0000000000000000000000000000000000000000..b9b6eb98bf3fc63e6090d423e52eff5a7d869cdc --- /dev/null +++ b/apps/dashboard/src/components/Modal/index.tsx @@ -0,0 +1,60 @@ +import React, { useEffect, useState } from "react"; +import { Modal as ModalAntd } from "antd"; +import Body from "./Body"; +import Footer from "./Footer"; + +export interface ModalEvent { + close: () => void; +} + +export interface FcProps<TData> { + setTitle: (title: string) => void; + setClassName: (name: string) => void; + setWrapClassName: (name: string) => void; + setWidth: (width: string | number) => void; + onClose: () => void; + data: TData; +} + +export interface ModalProps<TData> { + Component: React.FC<FcProps<TData>>; + onClose: () => void; + data: TData; +} + +function Modal<TData>({ Component, onClose, data }: ModalProps<TData>) { + const [title, setTitle] = useState("Loading"); + const [className, setClassName] = useState<string | undefined>(); + const [width, setWidth] = useState<string | number | undefined>(); + const [wrapClassName, setWrapClassName] = useState<string | undefined>(); + const [open, setOpen] = useState(false); + + useEffect(() => setOpen(true), []); + + return ( + <ModalAntd + title={title} + open={open} + footer={null} + width={width} + className={className} + wrapClassName={wrapClassName} + onCancel={onClose} + maskClosable={false} + > + <Component + setTitle={setTitle} + onClose={onClose} + setWidth={setWidth} + setClassName={setClassName} + setWrapClassName={setWrapClassName} + data={data} + /> + </ModalAntd> + ); +} + +Modal.Body = Body; +Modal.Footer = Footer; + +export default Modal; diff --git a/apps/dashboard/src/components/Modal/styles.module.scss b/apps/dashboard/src/components/Modal/styles.module.scss new file mode 100644 index 0000000000000000000000000000000000000000..3c1584db8df04efe23934f196ccadf71e5fa509e --- /dev/null +++ b/apps/dashboard/src/components/Modal/styles.module.scss @@ -0,0 +1,14 @@ +.body { + display: flex; + flex-direction: column; +} + +.footer { + display: flex; + margin: 12px 4px; + align-items: flex-end; + justify-content: center; + & > * { + margin-left: 8px; + } +} diff --git a/apps/dashboard/src/components/NoRecordsMessage/index.tsx b/apps/dashboard/src/components/NoRecordsMessage/index.tsx new file mode 100644 index 0000000000000000000000000000000000000000..e53064603d45a1be0b9dc9418a4cebc341878a69 --- /dev/null +++ b/apps/dashboard/src/components/NoRecordsMessage/index.tsx @@ -0,0 +1,8 @@ +import React from "react"; +import { observer } from "mobx-react"; + +const NoRecordsMessage = observer(() => { + return <div>No data</div>; +}); + +export default NoRecordsMessage; diff --git a/apps/dashboard/src/components/Page/index.tsx b/apps/dashboard/src/components/Page/index.tsx new file mode 100644 index 0000000000000000000000000000000000000000..22f65ea2088e768ab7408131f1afc6fb43d151d5 --- /dev/null +++ b/apps/dashboard/src/components/Page/index.tsx @@ -0,0 +1,11 @@ +import React from "react"; +import s from "./styles.module.scss"; + +interface Props { + children: React.ReactNode; +} +const PageWithSidebar: React.FC<Props> = ({ children }) => { + return <div className={s.body}>{children}</div>; +}; + +export default PageWithSidebar; diff --git a/apps/dashboard/src/components/Page/styles.module.scss b/apps/dashboard/src/components/Page/styles.module.scss new file mode 100644 index 0000000000000000000000000000000000000000..b0f27b92c02a45b6f827ee6cbbfd50e0a40166a2 --- /dev/null +++ b/apps/dashboard/src/components/Page/styles.module.scss @@ -0,0 +1,11 @@ +.body { + display: flex; + overflow: auto; + scroll-behavior: smooth; + flex-grow: 1; + flex-direction: column; + flex-shrink: 0; + min-width: 400px; + max-width: 100%; + background-color: #f4f6f7; +} diff --git a/apps/dashboard/src/components/PageTitle/index.tsx b/apps/dashboard/src/components/PageTitle/index.tsx new file mode 100644 index 0000000000000000000000000000000000000000..57e2bccbb1164cb7edac1d70c52b4f8b90960f30 --- /dev/null +++ b/apps/dashboard/src/components/PageTitle/index.tsx @@ -0,0 +1,12 @@ +import React from "react"; +import s from "./styles.module.scss"; + +interface Props { + children: React.ReactNode; +} + +const PageTitle: React.FC<Props> = ({ children }) => { + return <div className={s.title}>{children}</div>; +}; + +export default PageTitle; diff --git a/apps/dashboard/src/components/PageTitle/styles.module.scss b/apps/dashboard/src/components/PageTitle/styles.module.scss new file mode 100644 index 0000000000000000000000000000000000000000..1725213e562167082f59a14f075fc01d2a189c05 --- /dev/null +++ b/apps/dashboard/src/components/PageTitle/styles.module.scss @@ -0,0 +1,7 @@ +.title { + text-align: center; + padding: 16px; + font-size: 28px; + color: #14b7cc; + font-weight: bold; +} diff --git a/apps/dashboard/src/components/PageWithSidebar/index.tsx b/apps/dashboard/src/components/PageWithSidebar/index.tsx new file mode 100644 index 0000000000000000000000000000000000000000..1e33d2cbb041e71fb5a33a619ac2ec4f4f844c42 --- /dev/null +++ b/apps/dashboard/src/components/PageWithSidebar/index.tsx @@ -0,0 +1,20 @@ +import React from "react"; +import Sidebar from "../Sidebar"; +import s from "./styles.module.scss"; + +interface Props { + children: React.ReactNode; +} + +const PageWithSidebar: React.FC<Props> = ({ children }) => { + return ( + <div className={s.body}> + <Sidebar /> + <div className={s.workspaceArea}> + <div className={s.content}>{children}</div> + </div> + </div> + ); +}; + +export default PageWithSidebar; diff --git a/apps/dashboard/src/components/PageWithSidebar/styles.module.scss b/apps/dashboard/src/components/PageWithSidebar/styles.module.scss new file mode 100644 index 0000000000000000000000000000000000000000..a52711570c222a70829996e74fd6812b1ae14d10 --- /dev/null +++ b/apps/dashboard/src/components/PageWithSidebar/styles.module.scss @@ -0,0 +1,22 @@ +.body { + display: flex; + flex-grow: 1; + background-color: #f4f6f7; +} + +.workspaceArea { + display: flex; + overflow: auto; + scroll-behavior: smooth; + flex-grow: 1; + margin-left: 260px; +} + +.content { + display: flex; + flex-direction: column; + flex-grow: 1; + flex-shrink: 0; + min-width: 400px; + max-width: 100%; +} diff --git a/apps/dashboard/src/components/ProofItem/index.tsx b/apps/dashboard/src/components/ProofItem/index.tsx new file mode 100644 index 0000000000000000000000000000000000000000..ceb44f3117fe363372398f8ab7c87038019e2f87 --- /dev/null +++ b/apps/dashboard/src/components/ProofItem/index.tsx @@ -0,0 +1,93 @@ +import React, { useState } from "react"; +import { observer } from "mobx-react"; +import { Button, Space, Tag } from "antd"; +import api, { ProofRecordDto } from "@dashboard/engine-api"; +import format from "date-fns/format"; +import modalStore from "@dashboard/store/modalStore"; +import RecordItem from "../RecordItem"; +import s from "./styles.module.scss"; +import displayError from "@dashboard/utils/displayError"; + +interface ProofItemProps { + item: ProofRecordDto; + onOpen?: () => void; + onRemove?: () => void; + onAccept?: () => void; + onDecline?: () => void; + statusChanging?: boolean; +} + +const ProofItem = observer( + ({ + item, + onOpen, + onRemove, + onAccept, + onDecline, + statusChanging, + }: ProofItemProps) => { + const [loadingFormatData, setLoadingFormatData] = useState(false); + const [formatData, setFormatData] = useState<unknown>(null); + + const openFormatData = async () => { + if (!formatData) { + setLoadingFormatData(true); + try { + const formatData = await api.getProofFormatDataById(item.id!); + setFormatData(formatData); + setLoadingFormatData(false); + modalStore.openViewJsonDialog({ data: formatData }); + return; + } catch (e: unknown) { + displayError(e); + setLoadingFormatData(false); + return; + } + } + + modalStore.openViewJsonDialog({ data: formatData }); + }; + + return ( + <RecordItem rawData={item}> + <div className={s.prop}> + Status: <Tag>{item.state}</Tag> + </div> + <div className={s.prop}>ProofId: {item.id}</div> + + <div className={s.createdAt}> + {item.createdAt && format(item.createdAt, "dd.MM.yyyy HH:mm:ss")} + </div> + + <Space direction="horizontal"> + {onOpen && <Button onClick={onOpen}>Go to credential</Button>} + <Button + type="primary" + disabled={loadingFormatData} + loading={loadingFormatData} + onClick={openFormatData} + > + View Format Data + </Button> + {onAccept && item.state === "request-received" && ( + <Button disabled={statusChanging} onClick={onAccept} type="primary"> + Accept + </Button> + )} + {onDecline && item.state === "request-received" && ( + <Button disabled={statusChanging} onClick={onDecline} danger> + Decline + </Button> + )} + {onRemove && ( + <Button disabled={statusChanging} danger onClick={onRemove}> + Delete + </Button> + )} + </Space> + </RecordItem> + ); + }, +); + +export default ProofItem; diff --git a/apps/dashboard/src/components/ProofItem/styles.module.scss b/apps/dashboard/src/components/ProofItem/styles.module.scss new file mode 100644 index 0000000000000000000000000000000000000000..932e36d354870d4f02355a4170a60b86a158f1bb --- /dev/null +++ b/apps/dashboard/src/components/ProofItem/styles.module.scss @@ -0,0 +1,11 @@ +.createdAt { + position: absolute; + right: 16px; + bottom: 4px; + font-size: 14px; + color: rgba(0, 0, 0, 0.7); +} + +.prop { + margin: 4px 0; +} diff --git a/apps/dashboard/src/components/ProofList/ProofListStore.ts b/apps/dashboard/src/components/ProofList/ProofListStore.ts new file mode 100644 index 0000000000000000000000000000000000000000..a22c489ef0a0c8a646a7a24751bfd987d7f83e8b --- /dev/null +++ b/apps/dashboard/src/components/ProofList/ProofListStore.ts @@ -0,0 +1,105 @@ +import { makeAutoObservable, runInAction } from "mobx"; +import api, { ProofRecordDto } from "@dashboard/engine-api"; +import { toast } from "react-toastify"; +import displayError from "@dashboard/utils/displayError"; + +class ProofListStore { + public loading = false; + public items: ProofRecordDto[] = []; + + public statusChangeId: string | null = null; + + constructor() { + makeAutoObservable(this); + } + + public async loadAll(connectionId: string | null) { + runInAction(() => (this.loading = true)); + try { + const items = await api.fetchProofs(undefined, connectionId || undefined); + runInAction(() => { + this.items = items; + this.loading = false; + }); + } catch (e: unknown) { + displayError(e); + runInAction(() => (this.loading = false)); + } + } + + public async accept(proofRecordId: string) { + runInAction(() => { + this.statusChangeId = proofRecordId; + }); + try { + const credRecord = await api.acceptProof({ + proofId: proofRecordId, + proofUrl: "", + }); + runInAction(() => { + const index = this.items.findIndex((p) => p.id === credRecord.id); + if (index >= 0) { + this.items[index] = credRecord; + } + this.statusChangeId = null; + }); + toast.success("Proof request accepted and credential data is shared"); + } catch (e: unknown) { + displayError(e); + runInAction(() => { + this.loading = false; + this.statusChangeId = null; + }); + } + } + + public async decline(proofRecordId: string) { + runInAction(() => { + this.statusChangeId = proofRecordId; + }); + try { + const credRecord = await api.declineProofRequest(proofRecordId); + runInAction(() => { + const index = this.items.findIndex((p) => p.id === credRecord.id); + if (index >= 0) { + this.items[index] = credRecord; + } + this.statusChangeId = null; + }); + toast.success("Proof request declined"); + } catch (e: unknown) { + displayError(e); + runInAction(() => { + this.loading = false; + this.statusChangeId = null; + }); + } + } + + public async remove(proofRecordId: string) { + runInAction(() => { + this.statusChangeId = proofRecordId; + }); + try { + await api.deleteProofById(proofRecordId); + runInAction(() => { + const index = this.items.findIndex((p) => p.id === proofRecordId); + if (index >= 0) { + this.items.splice(index, 1); + } + this.statusChangeId = null; + }); + toast.success("proof request deleted successfully"); + } catch (e: unknown) { + displayError(e); + runInAction(() => { + this.loading = false; + this.statusChangeId = null; + }); + } + } +} + +export type { ProofListStore }; + +export default ProofListStore; diff --git a/apps/dashboard/src/components/ProofList/index.tsx b/apps/dashboard/src/components/ProofList/index.tsx new file mode 100644 index 0000000000000000000000000000000000000000..1faf09ac5400ec789dbb7ef45d3d984bac777c74 --- /dev/null +++ b/apps/dashboard/src/components/ProofList/index.tsx @@ -0,0 +1,62 @@ +import React, { useEffect, useState } from "react"; +import { observer } from "mobx-react"; +import { Spin } from "antd"; +import ProofListStore from "./ProofListStore"; +import NoRecordsMessage from "../NoRecordsMessage"; +import ProofItem from "@dashboard/components/ProofItem"; +import modalStore from "@dashboard/store/modalStore"; + +export interface ProofListProps { + connectionId: string | null; +} + +const ProofList: React.FC<ProofListProps> = observer(({ connectionId }) => { + const [store] = useState(() => new ProofListStore()); + + useEffect(() => { + store.loadAll(connectionId); + }, [store, connectionId]); + + const handleDelete = async (proofId: string) => { + modalStore.openConfirmDialog({ + title: "Are you sure to delete this proof request?", + description: "", + dangerOk: true, + onOk: async (e) => { + await store.remove(proofId); + e.close(); + }, + }); + }; + + const handleDecline = async (proofId: string) => { + modalStore.openConfirmDialog({ + title: "Are you sure you want to decline this proof request?", + description: "", + dangerOk: true, + onOk: async (e) => { + await store.decline(proofId); + e.close(); + }, + }); + }; + + return ( + <div> + {store.items.map((p) => ( + <ProofItem + key={p.id} + item={p} + onAccept={() => store.accept(p.id!)} + onDecline={() => handleDecline(p.id!)} + statusChanging={store.statusChangeId === p.id} + onRemove={() => handleDelete(p.id!)} + /> + ))} + {!store.loading && !store.items.length && <NoRecordsMessage />} + {store.loading && <Spin />} + </div> + ); +}); + +export default ProofList; diff --git a/apps/dashboard/src/components/RecordItem/index.tsx b/apps/dashboard/src/components/RecordItem/index.tsx new file mode 100644 index 0000000000000000000000000000000000000000..e6fb7ed1df504aece9c4ceb49d7900242631e21f --- /dev/null +++ b/apps/dashboard/src/components/RecordItem/index.tsx @@ -0,0 +1,40 @@ +import React from "react"; +import { observer } from "mobx-react"; +import classNames from "classnames"; +import modalStore from "@dashboard/store/modalStore"; +import s from "./styles.module.scss"; + +interface RecordItemProps { + children: React.ReactNode; + onClick?: () => void; + rawData?: unknown; +} + +const RecordItem = observer( + ({ children, rawData, onClick }: RecordItemProps) => { + return ( + <div + className={classNames(s.record, { [s.clickable]: onClick })} + onClick={onClick} + > + <> + {rawData && ( + <div + className={s.rawData} + onClick={(e) => { + e.stopPropagation(); + e.preventDefault(); + modalStore.openViewJsonDialog({ data: rawData }); + }} + > + {`{ }`} + </div> + )} + {children} + </> + </div> + ); + }, +); + +export default RecordItem; diff --git a/apps/dashboard/src/components/RecordItem/styles.module.scss b/apps/dashboard/src/components/RecordItem/styles.module.scss new file mode 100644 index 0000000000000000000000000000000000000000..f9842e34a363296e132784a8341dfcb731dbb20a --- /dev/null +++ b/apps/dashboard/src/components/RecordItem/styles.module.scss @@ -0,0 +1,41 @@ +.record { + width: 100%; + border: 1px solid rgba(0,0,0,.1); + padding: 8px; + position: relative; + overflow: hidden; + background: hsla(0,0%,100%,.7); + max-width: 1080px; + border-radius: 16px; + transition: all .25s ease; + min-height: 36px; + margin: 12px 0; + &:hover { + box-shadow: 0 0 10px -5px rgba(0,0,0,.5) + } +} + +.clickable { + cursor: pointer; +} + +.rawData { + user-select: none; + cursor: pointer; + position: absolute; + right: 8px; + top: 6px; + font-size: 14px; + color: #06b4cb; + background-color: #d4eef2; + padding: 4px 8px; + font-weight: bold; + border-radius: 4px; + display: none; + .record:hover & { + display: block; + } + &:hover { + background-color: #c1e2e7; + } +} diff --git a/apps/dashboard/src/components/RequireAuth/index.tsx b/apps/dashboard/src/components/RequireAuth/index.tsx new file mode 100644 index 0000000000000000000000000000000000000000..f9911f3f48f1dead6e0b8400ddcbe5706c1fdf26 --- /dev/null +++ b/apps/dashboard/src/components/RequireAuth/index.tsx @@ -0,0 +1,37 @@ +import * as React from "react"; +import { useLocation, Navigate } from "react-router-dom"; +import { observer } from "mobx-react"; +import useGlobalAuth from "@dashboard/hooks/useGlobalAuth"; +import config from "@dashboard/routes/config"; +import { Spin } from "antd"; + +export interface RequireAuthProps { + children: React.JSX.Element; +} + +const RequireAuth = observer(({ children }: RequireAuthProps) => { + const { loading, authorized } = useGlobalAuth(); + const location = useLocation(); + + if (loading) { + return <Spin />; + } + + if (!authorized) { + // Redirect them to the /login page, but save the current location they were + // trying to go to when they were redirected. This allows us to send them + // along to that page after they login, which is a nicer user experience + // than dropping them off on the home page. + return ( + <Navigate + to={config.login.getLink()} + state={{ from: location }} + replace + /> + ); + } + + return children; +}); + +export default RequireAuth; diff --git a/apps/dashboard/src/components/SchemaItem/index.tsx b/apps/dashboard/src/components/SchemaItem/index.tsx new file mode 100644 index 0000000000000000000000000000000000000000..aee31ec36a5f88eafdb26d6e1ade946590ebfc48 --- /dev/null +++ b/apps/dashboard/src/components/SchemaItem/index.tsx @@ -0,0 +1,43 @@ +import React from "react"; +import { observer } from "mobx-react"; +import { SchemaRecordDto } from "@dashboard/engine-api"; +import { Tag } from "antd"; +import s from "./styles.module.scss"; +import RecordItem from "../RecordItem"; + +interface SchemaItemProps { + item: SchemaRecordDto; + onClick?: () => void; +} + +const SchemaItem = observer(({ item, onClick }: SchemaItemProps) => { + return ( + <RecordItem onClick={onClick} rawData={item}> + <div className={s.prop}> + Name: <b>{item.name}</b> + </div> + <div className={s.prop}> + SchemaId: <b>{item.id}</b> + </div> + <div className={s.prop}> + issuerId: <b>{item.issuerId}</b> + </div> + <div className={s.prop}> + methodName: <b>{item.methodName}</b> + </div> + <div className={s.prop}> + version: <b>{item.version}</b> + </div> + <div> + Attributes:{" "} + {item.attributes?.map((p) => ( + <Tag color="green" key={p}> + {p} + </Tag> + ))} + </div> + </RecordItem> + ); +}); + +export default SchemaItem; diff --git a/apps/dashboard/src/components/SchemaItem/styles.module.scss b/apps/dashboard/src/components/SchemaItem/styles.module.scss new file mode 100644 index 0000000000000000000000000000000000000000..9183a0fe601ad4fa1854cd2f0dfc4f0543172532 --- /dev/null +++ b/apps/dashboard/src/components/SchemaItem/styles.module.scss @@ -0,0 +1,3 @@ +.prop { + margin: 4px 0; +} diff --git a/apps/dashboard/src/components/Sidebar/index.tsx b/apps/dashboard/src/components/Sidebar/index.tsx new file mode 100644 index 0000000000000000000000000000000000000000..3ccd9cf6c4783bf86c109adea839df3762fd7214 --- /dev/null +++ b/apps/dashboard/src/components/Sidebar/index.tsx @@ -0,0 +1,44 @@ +import React from "react"; +import { Link } from "react-router-dom"; +import config from "@dashboard/routes/config"; +import s from "./styles.module.scss"; + +const Sidebar = () => { + return ( + <div className={s.sidebar}> + <div className={s.sidebarBar} /> + <div className={s.title}>OCM engine UI</div> + <Link className={s.link} to={config.connection_list.getLink()}> + Contacts + </Link> + <Link className={s.link} to={config.credential_list.getLink()}> + Credentials + </Link> + <Link className={s.link} to={config.proof_list.getLink()}> + Proof Requests + </Link> + <div className={s.subTitle}>Administration</div> + <Link className={s.link} to={config.schema_list.getLink()}> + Schemas + </Link> + <Link className={s.link} to={config.cred_def_list.getLink()}> + Credential Definitions + </Link> + <Link className={s.link} to={config.createdDids.getLink()}> + Your DIDs + </Link> + <Link className={s.link} to={config.resolveDid.getLink()}> + Resolve did + </Link> + <Link className={s.link} to={config.vcmSelfIssue.getLink()}> + VCM self-issued credentials + </Link> + <div className={s.space} /> + <Link className={s.logoutLink} to={config.welcome.getLink()}> + Logout + </Link> + </div> + ); +}; + +export default Sidebar; diff --git a/apps/dashboard/src/components/Sidebar/styles.module.scss b/apps/dashboard/src/components/Sidebar/styles.module.scss new file mode 100644 index 0000000000000000000000000000000000000000..37dbeccbc5067e643a189ac48686c1b9540dc5a7 --- /dev/null +++ b/apps/dashboard/src/components/Sidebar/styles.module.scss @@ -0,0 +1,57 @@ +.sidebar { + width: 250px; + height: 100vh; + position: fixed; + left: 0; + top: 0; + background-color: #333f51; + overflow: auto; + transition: all 0.3s; + display: flex; + flex-direction: column; +} +.sidebarBar { + position: absolute; + right: 0; + top: 0; + bottom: 0; + width: 6px; + background-color: #c7ced4; +} + +.link { + display: block; + padding: 10px 20px; + color: #fff; + text-decoration: none; + font-size: 16px; + transition: all 0.3s; + + &:hover { + background-color: rgba(255,255,255,0.08); + color: #00B3CA; + } +} + +.logoutLink { + @extend .link; + text-align: center; +} + +.title { + padding: 20px 8px 20px 16px; + font-weight: bold; + font-size: 24px; + color: #fff; +} + +.subTitle { + color: #fff; + font-weight: bold; + font-size: 20px; + padding: 30px 8px 16px 16px; +} + +.space { + flex-grow: 1; +} diff --git a/apps/dashboard/src/components/VaultHeader/index.tsx b/apps/dashboard/src/components/VaultHeader/index.tsx new file mode 100644 index 0000000000000000000000000000000000000000..27d829d3f6cebfcaa17f5253c89ae19f88e8a9a0 --- /dev/null +++ b/apps/dashboard/src/components/VaultHeader/index.tsx @@ -0,0 +1,53 @@ +import React from "react"; +import { Link } from "react-router-dom"; +import config from "@dashboard/routes/config"; +import s from "./styles.module.scss"; + +interface Props { + hideTry?: boolean; +} + +const VaultHeader: React.FC<Props> = ({ hideTry }) => { + return ( + <div className={s.root}> + <div className={s.vault}> + <div className={s.columns}> + <div className={s.column}> + <div className={s.title}>Organization Credential Manager (OCM)</div> + <p className={s.ultraText}> + An advanced solution for medium to large enterprises to manage and + deploy Verifiable Credentials seamlessly. + </p> + <p className={s.specialText}> + Whether you're looking for on-premises, cloud-based, or a SaaS + model, OCM is ready to cater to your needs. Experience our + user-friendly demo interface, and discover a robust backend that's + deployment-ready for any use case. + </p> + {!hideTry && ( + <Link to={config.login.getLink()}> + <div className={s.tryIt}>Try it</div> + </Link> + )} + </div> + <div className={s.column}> + <div className={s.toDashboard}> + <Link to={config.connection_list.getLink()}> + Jump to dashboard + </Link> + </div> + <div> + <img + className={s.vaultImage} + src="/assets/vault_image.png" + alt="vault product" + /> + </div> + </div> + </div> + </div> + </div> + ); +}; + +export default VaultHeader; diff --git a/apps/dashboard/src/components/VaultHeader/styles.module.scss b/apps/dashboard/src/components/VaultHeader/styles.module.scss new file mode 100644 index 0000000000000000000000000000000000000000..d60adbf71445660a0cc3fe5d8fcc75fe0599814c --- /dev/null +++ b/apps/dashboard/src/components/VaultHeader/styles.module.scss @@ -0,0 +1,84 @@ +.root { + background-color: black; + color: #fff; + display: flex; + align-items: center; + justify-content: center; +} +.vault { + max-width: 1400px; + justify-content: space-between; + flex-direction: column; + padding: 80px 0; + overflow: hidden; +} + +.columns { + display: flex; + width: 100%; + position: relative; + justify-content: center; + align-items: stretch; + gap: 30px; +} + +.column { + width: 50%; + font-size: 20px; + justify-content: center; + display: flex; + flex-direction: column; + padding: 20px; +} + +.title { + text-align: left; + font-size: 38px; + font-family: Helvetica Neue Bold,Helvetica,sans-serif; + background: -webkit-linear-gradient(#6be1f0,#52b4ca); + background-clip: text; + font-weight: bold; + -webkit-background-clip: text; + -webkit-text-fill-color: transparent; +} + +.ultraText { + letter-spacing: 0; + font-size: 30px; + color: #fff; + margin-bottom: 30px; + text-align: left; +} + +.specialText { + font-size: 20px; + letter-spacing: 0; + color: #fff; + text-align: left; +} + +.vaultImage { + position: absolute; + width: 25vw; + left: 70%; + bottom: -25vw; + transform: translateX(-50%) translateY(-20%); + transition: all .2s ease; + &:hover { + width: 27vw; + } +} + +.tryIt { + text-align: center; + margin-top: 20px; + font-size: 90px; + color: #14b7cc; + font-weight: bold; +} + +.toDashboard { + position: absolute; + top: 40px; + right: 150px; +} diff --git a/apps/dashboard/src/favicon.ico b/apps/dashboard/src/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..3468d54388acec967d1f0aeeee1194337652b988 Binary files /dev/null and b/apps/dashboard/src/favicon.ico differ diff --git a/apps/dashboard/src/hooks/auth/Provider.tsx b/apps/dashboard/src/hooks/auth/Provider.tsx new file mode 100644 index 0000000000000000000000000000000000000000..896415c1f263470133a9b525b2dc1d5a775dcdc1 --- /dev/null +++ b/apps/dashboard/src/hooks/auth/Provider.tsx @@ -0,0 +1,11 @@ +import useAuth from "./useAuth"; +import AuthContext from "./context"; + +interface Props { + children: React.ReactNode; +} + +export const AuthProvider: React.FC<Props> = ({ children }) => { + const auth = useAuth(); + return <AuthContext.Provider value={auth}>{children}</AuthContext.Provider>; +}; diff --git a/apps/dashboard/src/hooks/auth/context.ts b/apps/dashboard/src/hooks/auth/context.ts new file mode 100644 index 0000000000000000000000000000000000000000..2bb8a4d10188dacd8c0f5d71eafa337f14892e0a --- /dev/null +++ b/apps/dashboard/src/hooks/auth/context.ts @@ -0,0 +1,19 @@ +import { createContext } from "react"; + +interface Auth { + authorized: boolean; + loading: boolean; + token: string | null; + setToken: (token: string | null) => void; +} + +const authContext = createContext<Auth>({ + authorized: false, + loading: true, + setToken: () => { + console.warn("Context not overwritten"); + }, + token: null, +}); + +export default authContext; diff --git a/apps/dashboard/src/hooks/auth/useAuth.ts b/apps/dashboard/src/hooks/auth/useAuth.ts new file mode 100644 index 0000000000000000000000000000000000000000..82e205e36176164bd2affa707a8aa6d270dc217e --- /dev/null +++ b/apps/dashboard/src/hooks/auth/useAuth.ts @@ -0,0 +1,40 @@ +import { useEffect, useState } from "react"; + +const LS_KEY = "token"; + +const useAuth = () => { + const [authorized, setAuthorized] = useState(false); + const [token, setToken] = useState<string | null>(null); + const [loading, setLoading] = useState(true); + + useEffect(() => { + const lsToken = localStorage.getItem(LS_KEY); + if (lsToken) { + setToken(lsToken); + setAuthorized(true); + } + setLoading(false); + }, []); + + const updateToken = (token: string | null) => { + if (token) { + localStorage.setItem(LS_KEY, token); + setToken(token); + setAuthorized(true); + } else { + localStorage.removeItem(LS_KEY); + setToken(null); + setAuthorized(false); + } + }; + + return { + token, + // TODO disable login functionality + authorized: true, + loading: false, + setToken: updateToken, + }; +}; + +export default useAuth; diff --git a/apps/dashboard/src/hooks/useGlobalAuth.ts b/apps/dashboard/src/hooks/useGlobalAuth.ts new file mode 100644 index 0000000000000000000000000000000000000000..afe8ead3412dbd99898ce207c4a648b5bf6b2a15 --- /dev/null +++ b/apps/dashboard/src/hooks/useGlobalAuth.ts @@ -0,0 +1,12 @@ +import { useContext } from "react"; +import AuthContext from "./auth/context"; + +export const useGlobalAuth = () => { + const context = useContext(AuthContext); + if (!context) { + throw new Error("useGlobalAuth must be used within an AuthProvider"); + } + return context; +}; + +export default useGlobalAuth; diff --git a/apps/dashboard/src/hooks/withAuthorize.ts b/apps/dashboard/src/hooks/withAuthorize.ts new file mode 100644 index 0000000000000000000000000000000000000000..b6b018d4e775e7c5142f9bf7e08a0bf0d6f25547 --- /dev/null +++ b/apps/dashboard/src/hooks/withAuthorize.ts @@ -0,0 +1,31 @@ +import { useEffect, useState } from "react"; + +const LS_KEY = "token"; + +const useAuth = () => { + const [authorized, setAuthorized] = useState(false); + const [loading, setLoading] = useState(true); + + useEffect(() => { + localStorage.getItem(LS_KEY) && setAuthorized(true); + setLoading(false); + }, []); + + const setToken = (token: string | null) => { + if (token) { + localStorage.setItem(LS_KEY, token); + setAuthorized(true); + } else { + localStorage.removeItem(LS_KEY); + setAuthorized(false); + } + }; + + return { + authorized, + loading, + setToken, + }; +}; + +export default useAuth; diff --git a/apps/dashboard/src/index.html b/apps/dashboard/src/index.html new file mode 100644 index 0000000000000000000000000000000000000000..f42b459641df5d60f1721f452975d5b52dd71166 --- /dev/null +++ b/apps/dashboard/src/index.html @@ -0,0 +1,17 @@ +<!DOCTYPE html> +<html lang="en"> + <head> + <meta charset="utf-8" /> + <title>OCM engine dashboard</title> + <base href="/" /> + + <meta name="viewport" content="width=device-width, initial-scale=1" /> + <link rel="icon" type="image/x-icon" href="favicon.ico" /> + <link rel="icon" type="image/x-icon" href="assets/Vereign_Logo_ICON_BLACK.png" /> + + <script src="assets/config.js"></script> + </head> + <body> + <div id="root"></div> + </body> +</html> diff --git a/apps/dashboard/src/main.tsx b/apps/dashboard/src/main.tsx new file mode 100644 index 0000000000000000000000000000000000000000..0e7223c97cac7b22d081534ea73cbf8e9fa5415f --- /dev/null +++ b/apps/dashboard/src/main.tsx @@ -0,0 +1,50 @@ +import * as ReactDOM from "react-dom/client"; +import { BrowserRouter } from "react-router-dom"; +import { ConfigProvider } from "antd"; +import getConfig from "./utils/getConfig"; +import App from "./components/App"; + +import ocmApi, { setConfig as setOcmEngineConfig } from "@dashboard/engine-api"; +import tsaApi, { setConfig as setTsaConfig } from "@dashboard/tsa-api"; +import { AuthProvider } from "@dashboard/hooks/auth/Provider"; + +import "normalize.css"; +import "react-toastify/dist/ReactToastify.css"; +import "@fontsource/roboto"; +import "@fontsource/roboto/500.css"; +import "@fontsource/roboto/700.css"; + +const config = getConfig(); + +setOcmEngineConfig({ + wsUrl: config.OCMENGINE_WS_URL, + httpUrl: config.OCMENGINE_HTTP_URL, + getToken: async () => "", +}); + +setTsaConfig({ + tsaUrl: config.TSA_URL, +}); + +ocmApi.initialize(); +tsaApi.initialize(); + +const root = ReactDOM.createRoot( + document.getElementById("root") as HTMLElement, +); +root.render( + <BrowserRouter basename={window.BASE_PATH}> + <ConfigProvider + theme={{ + token: { + colorPrimary: "#06b4cb", + fontFamily: "Roboto", + }, + }} + > + <AuthProvider> + <App /> + </AuthProvider> + </ConfigProvider> + </BrowserRouter>, +); diff --git a/apps/dashboard/src/modals/AcceptConnectionlessCredentialOfferDialog/index.tsx b/apps/dashboard/src/modals/AcceptConnectionlessCredentialOfferDialog/index.tsx new file mode 100644 index 0000000000000000000000000000000000000000..11aa910187fd21ad1c4b2576a5ec04b3cf24cc35 --- /dev/null +++ b/apps/dashboard/src/modals/AcceptConnectionlessCredentialOfferDialog/index.tsx @@ -0,0 +1,85 @@ +import React, { useEffect, useState } from "react"; +import { observer } from "mobx-react"; +import { Form, Input, Button } from "antd"; +import api, { CredentialRecordDto } from "@dashboard/engine-api"; +import { toast } from "react-toastify"; +import Modal, { FcProps } from "@dashboard/components/Modal"; +import s from "./styles.module.scss"; +import displayError from "@dashboard/utils/displayError"; + +export interface AcceptConnectionlessCredentialOfferDialogProps { + onCredentialReceived: (credentialRecord: CredentialRecordDto) => void; +} + +const AcceptConnectionlessCredentialOfferDialog = observer( + ({ + setTitle, + onClose, + data, + }: FcProps<AcceptConnectionlessCredentialOfferDialogProps>) => { + useEffect(() => { + setTitle("Accept credential by URL"); + }, [setTitle]); + + const [loading, setLoading] = useState(false); + + const onFinish = async ({ credentialUrl }: { credentialUrl: string }) => { + try { + setLoading(true); + const credentialRecord = await api.acceptCredential({ + credentialUrl, + credentialId: "", + }); + + if (credentialRecord) { + toast.success(`Credential offer accepted`); + data.onCredentialReceived(credentialRecord); + onClose(); + } + } catch (e: unknown) { + displayError(e); + } + setLoading(false); + }; + + return ( + <Modal.Body> + <div className={s.body}> + <Form + layout="vertical" + initialValues={{ + credentialUrl: "", + }} + onFinish={onFinish} + autoComplete="off" + > + <Form.Item + label="credential url" + name="credentialUrl" + rules={[ + { required: true, message: "Please enter credential url!" }, + ]} + > + <Input.TextArea rows={12} /> + </Form.Item> + + <div className={s.footerActions}> + <Button type="primary" htmlType="submit" disabled={loading}> + Accept Offer + </Button> + <Button + className={s.cancelButton} + onClick={onClose} + disabled={loading} + > + Close + </Button> + </div> + </Form> + </div> + </Modal.Body> + ); + }, +); + +export default AcceptConnectionlessCredentialOfferDialog; diff --git a/apps/dashboard/src/modals/AcceptConnectionlessCredentialOfferDialog/styles.module.scss b/apps/dashboard/src/modals/AcceptConnectionlessCredentialOfferDialog/styles.module.scss new file mode 100644 index 0000000000000000000000000000000000000000..5cc463b56978bf734f1fb44f64ead3f85dccfaa8 --- /dev/null +++ b/apps/dashboard/src/modals/AcceptConnectionlessCredentialOfferDialog/styles.module.scss @@ -0,0 +1,4 @@ +.footerActions { + display: flex; + justify-content: space-around; +} diff --git a/apps/dashboard/src/modals/AcceptConnectionlessProofRequestDialog/index.tsx b/apps/dashboard/src/modals/AcceptConnectionlessProofRequestDialog/index.tsx new file mode 100644 index 0000000000000000000000000000000000000000..7d750bef5ad83db2e3acdaee8e3eef1f6cf05cfa --- /dev/null +++ b/apps/dashboard/src/modals/AcceptConnectionlessProofRequestDialog/index.tsx @@ -0,0 +1,82 @@ +import React, { useEffect, useState } from "react"; +import { observer } from "mobx-react"; +import { Form, Input, Button } from "antd"; +import api, { ProofRecordDto } from "@dashboard/engine-api"; +import { toast } from "react-toastify"; +import Modal, { FcProps } from "@dashboard/components/Modal"; +import s from "./styles.module.scss"; +import displayError from "@dashboard/utils/displayError"; + +export interface AcceptConnectionlessProofRequestDialogProps { + onProofReceived: (proofRecord: ProofRecordDto) => void; +} + +const AcceptConnectionlessProofRequestDialog = observer( + ({ + setTitle, + onClose, + data, + }: FcProps<AcceptConnectionlessProofRequestDialogProps>) => { + useEffect(() => { + setTitle("Accept proof request by URL"); + }, [setTitle]); + + const [loading, setLoading] = useState(false); + + const onFinish = async ({ proofUrl }: { proofUrl: string }) => { + try { + setLoading(true); + const proofRecord = await api.acceptProof({ + proofUrl, + proofId: "", + }); + toast(`Proof request accepted`); + if (proofRecord) { + data.onProofReceived(proofRecord); + onClose(); + } + } catch (e: unknown) { + displayError(e); + } + setLoading(false); + }; + + return ( + <Modal.Body> + <div className={s.body}> + <Form + layout="vertical" + initialValues={{ + proofUrl: "", + }} + onFinish={onFinish} + autoComplete="off" + > + <Form.Item + label="proof url" + name="proofUrl" + rules={[{ required: true, message: "Please enter proof url!" }]} + > + <Input.TextArea rows={12} /> + </Form.Item> + + <div className={s.footerActions}> + <Button type="primary" htmlType="submit" disabled={loading}> + Accept + </Button> + <Button + className={s.cancelButton} + onClick={onClose} + disabled={loading} + > + Close + </Button> + </div> + </Form> + </div> + </Modal.Body> + ); + }, +); + +export default AcceptConnectionlessProofRequestDialog; diff --git a/apps/dashboard/src/modals/AcceptConnectionlessProofRequestDialog/styles.module.scss b/apps/dashboard/src/modals/AcceptConnectionlessProofRequestDialog/styles.module.scss new file mode 100644 index 0000000000000000000000000000000000000000..5cc463b56978bf734f1fb44f64ead3f85dccfaa8 --- /dev/null +++ b/apps/dashboard/src/modals/AcceptConnectionlessProofRequestDialog/styles.module.scss @@ -0,0 +1,4 @@ +.footerActions { + display: flex; + justify-content: space-around; +} diff --git a/apps/dashboard/src/modals/ConfirmDialog/index.tsx b/apps/dashboard/src/modals/ConfirmDialog/index.tsx new file mode 100644 index 0000000000000000000000000000000000000000..d88a07fdcad588166ff288dac085e2bc7d891143 --- /dev/null +++ b/apps/dashboard/src/modals/ConfirmDialog/index.tsx @@ -0,0 +1,58 @@ +import React, { useEffect, useState } from "react"; +import Modal, { FcProps, ModalEvent } from "@dashboard/components/Modal"; +import { Button } from "antd"; +import displayError from "@dashboard/utils/displayError"; + +export interface ConfirmDialogProps { + title: string; + description: string | React.ReactNode; + dangerOk?: boolean; + onOk: (e: ModalEvent) => Promise<void>; + onCancel?: (e: ModalEvent) => Promise<void>; +} + +const ConfirmDialog = ({ + setTitle, + onClose, + data, +}: FcProps<ConfirmDialogProps>) => { + useEffect(() => setTitle(data.title), [setTitle, data.title]); + const [loading, setLoading] = useState(false); + + return ( + <Modal.Body> + <div>{data.description}</div> + <Modal.Footer> + <Button + type="primary" + disabled={loading} + danger={data.dangerOk} + onClick={async () => { + setLoading(true); + try { + await data.onOk({ close: onClose }); + } catch (e: unknown) { + displayError(e); + } + setLoading(false); + }} + > + Confirm + </Button> + <Button + onClick={() => { + onClose(); + data.onCancel && + data.onCancel({ + close: onClose, + }); + }} + > + Cancel + </Button> + </Modal.Footer> + </Modal.Body> + ); +}; + +export default ConfirmDialog; diff --git a/apps/dashboard/src/modals/NewCredentialDefDialog/index.tsx b/apps/dashboard/src/modals/NewCredentialDefDialog/index.tsx new file mode 100644 index 0000000000000000000000000000000000000000..b60c95b08d702f50b77666970e7b084c7d3ed800 --- /dev/null +++ b/apps/dashboard/src/modals/NewCredentialDefDialog/index.tsx @@ -0,0 +1,95 @@ +import React, { useEffect, useState } from "react"; +import { observer } from "mobx-react"; +import { Form, Input, Button } from "antd"; +import api from "@dashboard/engine-api"; +import { toast } from "react-toastify"; +import Modal, { FcProps } from "@dashboard/components/Modal"; +import s from "./styles.module.scss"; +import displayError from "@dashboard/utils/displayError"; + +export interface NewCredentialDefDialogProps { + onCredDefCreated: (credDef: unknown) => void; +} + +const NewCredentialDefDialog = observer( + ({ setTitle, onClose, data }: FcProps<NewCredentialDefDialogProps>) => { + useEffect(() => { + setTitle("Add new credetial definition"); + }, [setTitle]); + const [loading, setLoading] = useState(false); + const onFinish = async ({ + schemaId, + tag, + }: { + schemaId: string; + tag: string; + }) => { + try { + setLoading(true); + + const schema = await api.getSchemaById({ id: schemaId }); + if (!schema) { + throw new Error("Schema with specified id not found"); + } + + const credDef = await api.createCredentialDefinition({ + schemaId, + tag, + }); + console.log(credDef); + toast.success(`New credential definition created`); + data.onCredDefCreated(credDef); + onClose(); + } catch (e: unknown) { + displayError(e); + } + setLoading(false); + }; + + return ( + <Modal.Body> + <div className={s.body}> + <Form + layout="vertical" + initialValues={{ + schemaId: "", + tag: "", + }} + onFinish={onFinish} + autoComplete="off" + > + <Form.Item + label="Schema Id" + name="schemaId" + rules={[{ required: true, message: "Please enter schemaId!" }]} + > + <Input /> + </Form.Item> + <Form.Item + label="Credential definition name" + name="tag" + rules={[{ required: true, message: "Please enter name!" }]} + > + <Input /> + </Form.Item> + + <div className={s.footerActions}> + <Button type="primary" htmlType="submit" disabled={loading}> + Create + </Button> + <Button + className={s.cancelButton} + onClick={onClose} + disabled={loading} + > + Close + </Button> + </div> + </Form> + </div> + </Modal.Body> + ); + }, +); + +export default NewCredentialDefDialog; diff --git a/apps/dashboard/src/modals/NewCredentialDefDialog/styles.module.scss b/apps/dashboard/src/modals/NewCredentialDefDialog/styles.module.scss new file mode 100644 index 0000000000000000000000000000000000000000..5cc463b56978bf734f1fb44f64ead3f85dccfaa8 --- /dev/null +++ b/apps/dashboard/src/modals/NewCredentialDefDialog/styles.module.scss @@ -0,0 +1,4 @@ +.footerActions { + display: flex; + justify-content: space-around; +} diff --git a/apps/dashboard/src/modals/NewSchemaDialog/index.tsx b/apps/dashboard/src/modals/NewSchemaDialog/index.tsx new file mode 100644 index 0000000000000000000000000000000000000000..c31e905e5c21a8bc228661be8849694e5082c904 --- /dev/null +++ b/apps/dashboard/src/modals/NewSchemaDialog/index.tsx @@ -0,0 +1,100 @@ +import React, { useEffect, useState } from "react"; +import { observer } from "mobx-react"; +import { Form, Input, Button, Select } from "antd"; +import api, { + CreateSchemaRequestDto, + SchemaRecordDto, +} from "@dashboard/engine-api"; +import { toast } from "react-toastify"; +import Modal, { FcProps } from "@dashboard/components/Modal"; +import s from "./styles.module.scss"; +import displayError from "@dashboard/utils/displayError"; + +export interface NewSchemaDialogProps { + onSchemaCreated: (schema: SchemaRecordDto) => void; +} + +const NewSchemaDialog = observer( + ({ setTitle, onClose, data }: FcProps<NewSchemaDialogProps>) => { + useEffect(() => { + setTitle("Add new schema"); + }, [setTitle]); + const [loading, setLoading] = useState(false); + + const onFinish = async (values: CreateSchemaRequestDto) => { + try { + setLoading(true); + const schema = await api.createSchema(values); + toast(`New schema ${schema.id} created`); + data.onSchemaCreated(schema); + onClose(); + } catch (e: unknown) { + displayError(e); + } + setLoading(false); + }; + + return ( + <Modal.Body> + <div className={s.body}> + <Form + layout="vertical" + style={{ maxWidth: 600 }} + initialValues={{ + name: "", + version: "", + attributes: [], + }} + onFinish={onFinish} + autoComplete="off" + > + <Form.Item + label="Name" + name="name" + rules={[{ required: true, message: "Please enter name!" }]} + > + <Input /> + </Form.Item> + <Form.Item + label="Version" + name="version" + rules={[ + { required: true, message: "Please enter version!" }, + { + pattern: /^(\d+\.)?(\d+\.)?(\*|\d+)$/, + message: 'Invalid format. Please enter the version number in the format \'major.minor.patch\', e.g., \'1.0.0\', \'1.0\' or \'1\'.', + } + ]} + > + + + <Input /> + </Form.Item> + <Form.Item + label="Attributes" + name="attributes" + rules={[{ required: true, message: "Please enter attributes!" }]} + > + <Select mode="tags" style={{ width: "100%" }} /> + </Form.Item> + + <div className={s.footerActions}> + <Button type="primary" htmlType="submit" disabled={loading}> + Create + </Button> + <Button + className={s.cancelButton} + onClick={onClose} + disabled={loading} + > + Close + </Button> + </div> + </Form> + </div> + </Modal.Body> + ); + }, +); + +export default NewSchemaDialog; diff --git a/apps/dashboard/src/modals/NewSchemaDialog/styles.module.scss b/apps/dashboard/src/modals/NewSchemaDialog/styles.module.scss new file mode 100644 index 0000000000000000000000000000000000000000..5cc463b56978bf734f1fb44f64ead3f85dccfaa8 --- /dev/null +++ b/apps/dashboard/src/modals/NewSchemaDialog/styles.module.scss @@ -0,0 +1,4 @@ +.footerActions { + display: flex; + justify-content: space-around; +} diff --git a/apps/dashboard/src/modals/OfferCredentialDialog/OfferCredentialDialogStore.ts b/apps/dashboard/src/modals/OfferCredentialDialog/OfferCredentialDialogStore.ts new file mode 100644 index 0000000000000000000000000000000000000000..bc98939c47ad2d43973518354390658b8a8ad68a --- /dev/null +++ b/apps/dashboard/src/modals/OfferCredentialDialog/OfferCredentialDialogStore.ts @@ -0,0 +1,84 @@ +import { makeAutoObservable, runInAction } from "mobx"; +import api, { CreddefRecordDto, SchemaRecordDto } from "@dashboard/engine-api"; +import { toast } from "react-toastify"; +import displayError from "@dashboard/utils/displayError"; + +class OfferCredentialDialogStore { + public initLoading = false; + public connectionId: string | undefined = undefined; + public credDefList: CreddefRecordDto[] = []; + public selectedCredDefId: string | null = null; + public schemaLoading = false; + public schema: SchemaRecordDto | null = null; + + public issuingLoading = false; + + constructor() { + makeAutoObservable(this); + } + + public async init(connectionId: string | undefined) { + runInAction(() => { + this.initLoading = true; + this.connectionId = connectionId; + }); + try { + const credDefList = await api.fetchCredentialDefinitions(); + runInAction(() => { + this.credDefList = credDefList; + this.initLoading = false; + }); + } catch (e: unknown) { + displayError(e); + runInAction(() => (this.initLoading = false)); + } + } + + public selectCredDef = async (credentialDefId: string) => { + runInAction(() => { + this.selectedCredDefId = credentialDefId; + this.schema = null; + this.schemaLoading = true; + }); + const credDef = this.credDefList.find((p) => p.id === credentialDefId); + + try { + const schema = await api.getSchemaById({ id: credDef!.schemaId! }); + runInAction(() => { + this.schema = schema; + this.schemaLoading = false; + }); + } catch (e: unknown) { + displayError(e); + runInAction(() => (this.schemaLoading = false)); + } + }; + + public offerCredential = async ( + attributes: { name: string; value: string }[], + ) => { + runInAction(() => (this.issuingLoading = true)); + try { + const cred = await api.offerCredential({ + connectionId: this.connectionId, + credentialDefinitionId: this.selectedCredDefId!, + attributes: attributes, + }); + toast.success("Credential offer sent"); + runInAction(() => { + this.issuingLoading = false; + }); + return cred; + } catch (e: unknown) { + displayError(e); + runInAction(() => { + this.issuingLoading = false; + }); + } + return null; + }; +} + +export type { OfferCredentialDialogStore }; + +export default OfferCredentialDialogStore; diff --git a/apps/dashboard/src/modals/OfferCredentialDialog/index.tsx b/apps/dashboard/src/modals/OfferCredentialDialog/index.tsx new file mode 100644 index 0000000000000000000000000000000000000000..90b3c5e5349a752c17a7dce591fd194c1e2517c4 --- /dev/null +++ b/apps/dashboard/src/modals/OfferCredentialDialog/index.tsx @@ -0,0 +1,135 @@ +import React, { useEffect, useState } from "react"; +import { observer } from "mobx-react"; +import { Form, Input, Button, Spin, Select } from "antd"; +import Modal, { FcProps } from "@dashboard/components/Modal"; +import { CredentialOfferResponseDto } from "@dashboard/engine-api"; +import OfferCredentialDialogStore from "./OfferCredentialDialogStore"; + +export interface OfferCredentialDialogProps { + connectionId?: string; + onCredentialOffered: (cred: CredentialOfferResponseDto) => void; +} + +const OfferCredentialDialog = observer( + ({ setTitle, onClose, data }: FcProps<OfferCredentialDialogProps>) => { + const [store] = useState(() => new OfferCredentialDialogStore()); + useEffect(() => { + if (data.connectionId) { + setTitle("Offer credential to " + data.connectionId); + } else { + setTitle("Offer connectionless credential"); + } + store.init(data.connectionId); + }, [store, setTitle, data]); + + const onFinish = async ({ + attributes, + }: { + attributes: { name: string; value: string }[]; + }) => { + const response = await store.offerCredential(attributes); + if (response) { + data.onCredentialOffered(response); + onClose(); + } + }; + + const attributesInitialValue = + store.schema?.attributes.map((p) => ({ + name: p, + value: "", + })) || []; + + return ( + <Modal.Body> + {store.initLoading && <Spin>Loading credential definitions...</Spin>} + {store.schemaLoading && ( + <Spin>Loading credential definition attributes...</Spin> + )} + + <div> + <Form + labelCol={{ span: 8 }} + wrapperCol={{ span: 16 }} + style={{ maxWidth: 600 }} + autoComplete="off" + > + <Form.Item + label="Credential definition" + name="credDef" + rules={[ + { + required: true, + message: "Please select credential definition!", + }, + ]} + > + <Select + style={{ width: 300 }} + value={store.selectedCredDefId} + showSearch + onChange={(val) => store.selectCredDef(val)} + options={store.credDefList.map((p) => ({ + value: p.id, + label: p.tag || p.id, + }))} + /> + </Form.Item> + </Form> + {} + {store.schema && ( + <Form + labelCol={{ span: 8 }} + wrapperCol={{ span: 16 }} + style={{ maxWidth: 600 }} + initialValues={{}} + onFinish={onFinish} + autoComplete="off" + > + <Form.List + name="attributes" + initialValue={attributesInitialValue} + > + {(fields, b, c) => { + return ( + <> + {fields.map((field) => ( + <Form.Item + {...field} + label={attributesInitialValue[field.key].name} + name={[field.name, "value"]} + rules={[ + { + required: true, + message: `Please enter ${ + attributesInitialValue[field.key].name + }!`, + }, + ]} + > + <Input /> + </Form.Item> + ))} + </> + ); + }} + </Form.List> + + <Form.Item wrapperCol={{ offset: 8, span: 16 }}> + <Button + type="primary" + htmlType="submit" + disabled={store.issuingLoading} + > + Submit offer + </Button> + </Form.Item> + </Form> + )} + </div> + </Modal.Body> + ); + }, +); + +export default OfferCredentialDialog; diff --git a/apps/dashboard/src/modals/OfferCredentialDialog/styles.module.scss b/apps/dashboard/src/modals/OfferCredentialDialog/styles.module.scss new file mode 100644 index 0000000000000000000000000000000000000000..5cc463b56978bf734f1fb44f64ead3f85dccfaa8 --- /dev/null +++ b/apps/dashboard/src/modals/OfferCredentialDialog/styles.module.scss @@ -0,0 +1,4 @@ +.footerActions { + display: flex; + justify-content: space-around; +} diff --git a/apps/dashboard/src/modals/ReceiveInvitationDialog/index.tsx b/apps/dashboard/src/modals/ReceiveInvitationDialog/index.tsx new file mode 100644 index 0000000000000000000000000000000000000000..c55cc2f06f29a25560fe2c93392e1dc67afef1d7 --- /dev/null +++ b/apps/dashboard/src/modals/ReceiveInvitationDialog/index.tsx @@ -0,0 +1,78 @@ +import React, { useEffect, useState } from "react"; +import { observer } from "mobx-react"; +import { Form, Input, Button } from "antd"; +import api, { ConnectionRecordDto } from "@dashboard/engine-api"; +import { toast } from "react-toastify"; +import Modal, { FcProps } from "@dashboard/components/Modal"; +import s from "./styles.module.scss"; +import displayError from "@dashboard/utils/displayError"; + +export interface ReceiveInvitationDialogProps { + onInvitationReceived: (connection: ConnectionRecordDto) => void; +} + +const ReceiveInvitationDialog = observer( + ({ setTitle, onClose, data }: FcProps<ReceiveInvitationDialogProps>) => { + useEffect(() => { + setTitle("Accept invitation"); + }, [setTitle]); + + const [loading, setLoading] = useState(false); + + const onFinish = async ({ invitation }: { invitation: string }) => { + try { + setLoading(true); + const connRecord = await api.acceptInvitation({ + invitationUrl: invitation, + shortInvitationUrl: "", + }); + toast(`Invitation received`); + if (connRecord) { + data.onInvitationReceived(connRecord); + onClose(); + } + } catch (e: unknown) { + displayError(e); + } + setLoading(false); + }; + + return ( + <Modal.Body> + <div className={s.body}> + <Form + layout="vertical" + initialValues={{ + invitation: "", + }} + onFinish={onFinish} + autoComplete="off" + > + <Form.Item + label="outOfBandInvitationUrl" + name="invitation" + rules={[{ required: true, message: "Please enter invitation!" }]} + > + <Input.TextArea rows={12} /> + </Form.Item> + + <div className={s.footerActions}> + <Button type="primary" htmlType="submit" disabled={loading}> + Accept invitation + </Button> + <Button + className={s.cancelButton} + onClick={onClose} + disabled={loading} + > + Close + </Button> + </div> + </Form> + </div> + </Modal.Body> + ); + }, +); + +export default ReceiveInvitationDialog; diff --git a/apps/dashboard/src/modals/ReceiveInvitationDialog/styles.module.scss b/apps/dashboard/src/modals/ReceiveInvitationDialog/styles.module.scss new file mode 100644 index 0000000000000000000000000000000000000000..5cc463b56978bf734f1fb44f64ead3f85dccfaa8 --- /dev/null +++ b/apps/dashboard/src/modals/ReceiveInvitationDialog/styles.module.scss @@ -0,0 +1,4 @@ +.footerActions { + display: flex; + justify-content: space-around; +} diff --git a/apps/dashboard/src/modals/RequestProofDialog/RequestProofDialogStore.ts b/apps/dashboard/src/modals/RequestProofDialog/RequestProofDialogStore.ts new file mode 100644 index 0000000000000000000000000000000000000000..514018b0051dd7bed6670a2295eb9ad3bdc04365 --- /dev/null +++ b/apps/dashboard/src/modals/RequestProofDialog/RequestProofDialogStore.ts @@ -0,0 +1,144 @@ +import { action, makeAutoObservable, runInAction } from "mobx"; +import api, { CreddefRecordDto, SchemaRecordDto } from "@dashboard/engine-api"; +import { toast } from "react-toastify"; +import displayError from "@dashboard/utils/displayError"; + +interface ProofUiAttribute { + credentialDefinitionId: string | null; + schemaLoading: boolean; + schema: SchemaRecordDto | null; + attributeName: string | null; +} + +class RequestProofDialogStore { + public initLoading = false; + public connectionId: string | undefined = undefined; + public credDefList: CreddefRecordDto[] = []; + + public rows: ProofUiAttribute[] = []; + + public issuingLoading = false; + + public get formIsValid() { + if (!this.rows.length) { + toast.error("Your need to create at least one row"); + return false; + } else if ( + this.rows.some((p) => { + return p.attributeName === null || p.credentialDefinitionId === null; + }) + ) { + toast.error("Please fill in all fields"); + return false; + } + return true; + } + + private _schemaCache: { + [id: string]: SchemaRecordDto; + } = {}; + + constructor() { + makeAutoObservable(this); + } + + public async init(connectionId: string | undefined) { + runInAction(() => { + this.initLoading = true; + this.connectionId = connectionId; + }); + try { + const credDefList = await api.fetchCredentialDefinitions(); + runInAction(() => { + this.addRow(); + this.credDefList = credDefList; + this.initLoading = false; + }); + } catch (e: unknown) { + displayError(e); + runInAction(() => (this.initLoading = false)); + } + } + + public addRow = action(() => { + this.rows.push({ + credentialDefinitionId: null, + schemaLoading: false, + schema: null, + attributeName: null, + }); + }); + + public removeRow = action((index: number) => { + this.rows.splice(index, 1); + }); + + public selectCredDef = async (index: number, credentialDefId: string) => { + runInAction(() => { + this.rows[index].credentialDefinitionId = credentialDefId; + this.rows[index].schema = null; + this.rows[index].schemaLoading = true; + this.rows[index].attributeName = null; + }); + const credDef = this.credDefList.find((p) => p.id === credentialDefId); + const schemaId = credDef!.schemaId; + + try { + if (this._schemaCache[schemaId]) { + runInAction(() => { + this.rows[index].schema = this._schemaCache[schemaId]; + this.rows[index].schemaLoading = false; + }); + return; + } + + const schema = await api.getSchemaById({ + id: credDef!.schemaId!, + }); + runInAction(() => { + this.rows[index].schema = schema; + this.rows[index].schemaLoading = false; + this._schemaCache[schemaId] = schema; + }); + } catch (e: unknown) { + displayError(e); + } + }; + + public selectAttributeName = action( + (index: number, attributeName: string) => { + this.rows[index].attributeName = attributeName; + }, + ); + + public issueProofRequest = async () => { + if (!this.formIsValid) return; + + runInAction(() => (this.issuingLoading = true)); + try { + const proofRequest = await api.requestProof({ + connectionId: this.connectionId, + attributes: this.rows.map((p) => ({ + attributeName: p.attributeName!, + credentialDefinitionId: p.credentialDefinitionId!, + schemaId: p.schema!.id!, + })), + }); + toast("Proof request created"); + runInAction(() => { + this.issuingLoading = false; + }); + return proofRequest; + } catch (e: unknown) { + displayError(e); + runInAction(() => { + this.issuingLoading = false; + }); + } + return null; + }; +} + +export type { RequestProofDialogStore }; + +export default RequestProofDialogStore; diff --git a/apps/dashboard/src/modals/RequestProofDialog/index.tsx b/apps/dashboard/src/modals/RequestProofDialog/index.tsx new file mode 100644 index 0000000000000000000000000000000000000000..98426a3d74cf60ee4f041224b0c8d222ded43508 --- /dev/null +++ b/apps/dashboard/src/modals/RequestProofDialog/index.tsx @@ -0,0 +1,106 @@ +import React, { useEffect, useState } from "react"; +import { observer } from "mobx-react"; +import { Button, Spin, Select, Space } from "antd"; +import Modal, { FcProps } from "@dashboard/components/Modal"; +import { RequestProofResponseDto } from "@dashboard/engine-api"; +import RequestProofDialogStore from "./RequestProofDialogStore"; +import s from "./styles.module.scss"; + +export interface RequestProofDialogProps { + connectionId?: string; + onProofRequested: (cred: RequestProofResponseDto) => void; +} + +const RequestProofDialog = observer( + ({ setTitle, onClose, data }: FcProps<RequestProofDialogProps>) => { + const [store] = useState(() => new RequestProofDialogStore()); + useEffect(() => { + if (data.connectionId) { + setTitle("Request proof from " + data.connectionId); + } else { + setTitle("Create connectionless proof request"); + } + + store.init(data.connectionId); + }, [store, setTitle, data]); + + return ( + <Modal.Body> + {store.initLoading && <Spin>Loading credential definitions...</Spin>} + + <div> + {store.rows.map((row, rowIndex) => ( + <Space direction="horizontal" className={s.row} key={rowIndex}> + <div className={s.field}> + <div className={s.field__label} /> + <span>{rowIndex + 1}.</span> + </div> + <div className={s.field}> + <div className={s.field__label}> + Credential definition + </div> + <Select + placeholder="Select credential" + // style={{ width: 300 }} + value={row.credentialDefinitionId} + showSearch + onChange={(val) => store.selectCredDef(rowIndex, val)} + options={store.credDefList.map((p) => ({ + value: p.id, + label: p.tag || p.id, + }))} + /> + </div> + {row.schemaLoading && <Spin/>} + {row.schema && ( + <div className={s.field}> + <div className={s.field__label}> + Attribute + </div> + <Select + placeholder="Select attribute" + // style={{ width: 300 }} + value={row.attributeName} + showSearch + onChange={(val) => store.selectAttributeName(rowIndex, val)} + options={row.schema.attributes.map((p) => ({ + value: p, + label: p, + }))} + /> + </div> + )} + <div className={s.field}> + <div className={s.field__label}> </div> + <Button + disabled={row.schemaLoading} + onClick={() => store.removeRow(rowIndex)} + > + Remove + </Button> + </div> + </Space> + ))} + <Space direction="vertical" className={s.actions}> + <Button onClick={() => store.addRow()}>Add row</Button> + <Button + type="primary" + disabled={store.issuingLoading} + onClick={async () => { + const pr = await store.issueProofRequest(); + if (pr) { + data.onProofRequested(pr); + onClose(); + } + }} + > + Request proof + </Button> + </Space> + </div> + </Modal.Body> + ); + }, +); + +export default RequestProofDialog; diff --git a/apps/dashboard/src/modals/RequestProofDialog/styles.module.scss b/apps/dashboard/src/modals/RequestProofDialog/styles.module.scss new file mode 100644 index 0000000000000000000000000000000000000000..84072c05750fa84eb0db9b3a115b98ac9d0eff7e --- /dev/null +++ b/apps/dashboard/src/modals/RequestProofDialog/styles.module.scss @@ -0,0 +1,21 @@ +.footerActions { + display: flex; + justify-content: space-around; +} +.row { + display: flex; + margin: 12px 0; +} + +.actions { + margin-top: 12px; +} + +.field { + display: flex; + flex-direction: column; + + &__label { + height: 24px; + } +} diff --git a/apps/dashboard/src/modals/ViewConnectionlessCredentialOffer/index.tsx b/apps/dashboard/src/modals/ViewConnectionlessCredentialOffer/index.tsx new file mode 100644 index 0000000000000000000000000000000000000000..1307449daa427e472a0a677c265222da0d233077 --- /dev/null +++ b/apps/dashboard/src/modals/ViewConnectionlessCredentialOffer/index.tsx @@ -0,0 +1,64 @@ +import React, { useEffect } from "react"; +import { observer } from "mobx-react"; +import Modal, { FcProps } from "@dashboard/components/Modal"; +import { CredentialRecordDto } from "@dashboard/engine-api"; +import CredentialItem from "@dashboard/components/CredentialItem"; +import { QRCode } from "antd"; +import s from "./styles.module.scss"; + +export interface ViewConnectionlessCredentialOfferProps { + credentialUrl: string | undefined | null; + credentialUrlShort: string | undefined | null; + credentialRecord: CredentialRecordDto; +} + +const ViewConnectionlessCredentialOffer = observer( + ({ + setTitle, + setWidth, + setClassName, + onClose, + data, + }: FcProps<ViewConnectionlessCredentialOfferProps>) => { + useEffect(() => { + setClassName(s.modal); + setWidth("80vw"); + setTitle("Connectionless credential offer"); + }, [setClassName, setWidth, setTitle]); + + return ( + <Modal.Body className={s.body}> + <div className={s.info}> + <div> + <div className={s.qrCodeHint}> + Scan this QR code with mobile wallet + </div> + <div className={s.qrWrapper}> + {data.credentialUrlShort && ( + <QRCode value={data.credentialUrlShort} size={500} /> + )} + </div> + <div> + <div className={s.urlTitle}>Credential offer URL:</div> + <div className={s.url}> + <b>{data.credentialUrl}</b> + </div> + <div className={s.urlTitle}>Credential offer short URL:</div> + <div className={s.url}> + <b>{data.credentialUrlShort}</b> + </div> + {data.credentialRecord && ( + <div> + Details: + <CredentialItem item={data.credentialRecord} /> + </div> + )} + </div> + </div> + </div> + </Modal.Body> + ); + }, +); + +export default ViewConnectionlessCredentialOffer; diff --git a/apps/dashboard/src/modals/ViewConnectionlessCredentialOffer/styles.module.scss b/apps/dashboard/src/modals/ViewConnectionlessCredentialOffer/styles.module.scss new file mode 100644 index 0000000000000000000000000000000000000000..66d3a4f730bc46cb5d9863b25ea3715a87d96430 --- /dev/null +++ b/apps/dashboard/src/modals/ViewConnectionlessCredentialOffer/styles.module.scss @@ -0,0 +1,46 @@ +.modal { + top: 40px; +} + +.body { + height: calc(100vh - 140px); +} + +.qrWrapper { + display: flex; + align-items: center; + justify-content: center; + background: white; + padding: 16px; +} + +.info { + display: flex; + flex-direction: column; + justify-content: space-between; + overflow: scroll; +} + +.urlTitle { + margin-top: 12px; + font-weight: bold; +} + +.url { + margin-top: 12px; + word-break: break-word; + border-right: 8px; + background-color: rgba(0,0,0, 0.04); + padding: 8px; +} + +.urlHint { + margin-top: 12px; + font-size: 16px; +} + +.qrCodeHint { + text-align: center; + margin: 24px 0 12px 0; + font-size: 18px; +} \ No newline at end of file diff --git a/apps/dashboard/src/modals/ViewConnectionlessProofRequest/index.tsx b/apps/dashboard/src/modals/ViewConnectionlessProofRequest/index.tsx new file mode 100644 index 0000000000000000000000000000000000000000..97c26016ae192c1f65eb9b13e948dbf7a8da81a3 --- /dev/null +++ b/apps/dashboard/src/modals/ViewConnectionlessProofRequest/index.tsx @@ -0,0 +1,64 @@ +import React, { useEffect } from "react"; +import { observer } from "mobx-react"; +import Modal, { FcProps } from "@dashboard/components/Modal"; +import { ProofRecordDto } from "@dashboard/engine-api"; +import ProofItem from "@dashboard/components/ProofItem"; +import { QRCode } from "antd"; +import s from "./styles.module.scss"; + +export interface ViewConnectionlessProofRequestProps { + proofUrl: string | undefined | null; + proofUrlShort: string | undefined | null; + proofRecord: ProofRecordDto; +} + +const ViewConnectionlessProofRequest = observer( + ({ + setTitle, + setWidth, + setClassName, + onClose, + data, + }: FcProps<ViewConnectionlessProofRequestProps>) => { + useEffect(() => { + setClassName(s.modal); + setWidth("80vw"); + setTitle("Connectionless proof request"); + }, [setClassName, setWidth, setTitle]); + + return ( + <Modal.Body className={s.body}> + <div className={s.info}> + <div> + <div className={s.qrCodeHint}> + Scan this QR code with mobile wallet + </div> + <div className={s.qrWrapper}> + {data.proofUrlShort && ( + <QRCode value={data.proofUrlShort} size={500} /> + )} + </div> + <div> + <div className={s.urlTitle}>Proof request URL:</div> + <div className={s.url}> + <b>{data.proofUrl}</b> + </div> + <div className={s.urlTitle}>Proof request short URL:</div> + <div className={s.url}> + <b>{data.proofUrlShort}</b> + </div> + {data.proofRecord && ( + <div> + Details: + <ProofItem item={data.proofRecord} /> + </div> + )} + </div> + </div> + </div> + </Modal.Body> + ); + }, +); + +export default ViewConnectionlessProofRequest; diff --git a/apps/dashboard/src/modals/ViewConnectionlessProofRequest/styles.module.scss b/apps/dashboard/src/modals/ViewConnectionlessProofRequest/styles.module.scss new file mode 100644 index 0000000000000000000000000000000000000000..66d3a4f730bc46cb5d9863b25ea3715a87d96430 --- /dev/null +++ b/apps/dashboard/src/modals/ViewConnectionlessProofRequest/styles.module.scss @@ -0,0 +1,46 @@ +.modal { + top: 40px; +} + +.body { + height: calc(100vh - 140px); +} + +.qrWrapper { + display: flex; + align-items: center; + justify-content: center; + background: white; + padding: 16px; +} + +.info { + display: flex; + flex-direction: column; + justify-content: space-between; + overflow: scroll; +} + +.urlTitle { + margin-top: 12px; + font-weight: bold; +} + +.url { + margin-top: 12px; + word-break: break-word; + border-right: 8px; + background-color: rgba(0,0,0, 0.04); + padding: 8px; +} + +.urlHint { + margin-top: 12px; + font-size: 16px; +} + +.qrCodeHint { + text-align: center; + margin: 24px 0 12px 0; + font-size: 18px; +} \ No newline at end of file diff --git a/apps/dashboard/src/modals/ViewJsonDialog/index.tsx b/apps/dashboard/src/modals/ViewJsonDialog/index.tsx new file mode 100644 index 0000000000000000000000000000000000000000..d93eefa9594e00f86ccfa41bc2fe2d20bbe53699 --- /dev/null +++ b/apps/dashboard/src/modals/ViewJsonDialog/index.tsx @@ -0,0 +1,26 @@ +import React, { useEffect } from "react"; +import { observer } from "mobx-react"; +import Modal, { FcProps } from "@dashboard/components/Modal"; +import JsonDetails from "@dashboard/components/JsonDetails"; + +export interface ViewJsonDialogProps { + title?: string; + data: unknown; +} + +const ViewJsonDialog = observer( + ({ setTitle, setWidth, onClose, data }: FcProps<ViewJsonDialogProps>) => { + useEffect(() => { + setWidth("80%"); + setTitle(data.title || "JSON"); + }, [setWidth, setTitle, data]); + + return ( + <Modal.Body> + <JsonDetails object={data.data} /> + </Modal.Body> + ); + }, +); + +export default ViewJsonDialog; diff --git a/apps/dashboard/src/modals/ViewJsonDialog/styles.module.scss b/apps/dashboard/src/modals/ViewJsonDialog/styles.module.scss new file mode 100644 index 0000000000000000000000000000000000000000..5cc463b56978bf734f1fb44f64ead3f85dccfaa8 --- /dev/null +++ b/apps/dashboard/src/modals/ViewJsonDialog/styles.module.scss @@ -0,0 +1,4 @@ +.footerActions { + display: flex; + justify-content: space-around; +} diff --git a/apps/dashboard/src/routes/config.ts b/apps/dashboard/src/routes/config.ts new file mode 100644 index 0000000000000000000000000000000000000000..7c58f0392c73d0569814b648893744c93b4c3366 --- /dev/null +++ b/apps/dashboard/src/routes/config.ts @@ -0,0 +1,103 @@ +import ConnectionListPage from "./pages/ConnectionListPage"; +import ConnectionCreatePage from "./pages/ConnectionCreatePage"; +import ConnectionViewPage from "./pages/ConnectionViewPage"; +import SchemaListPage from "./pages/SchemaListPage"; +import CredentialDefListPage from "./pages/CredentialDefListPage"; +import CredentialListPage from "./pages/CredentialListPage"; +import ProofListPage from "./pages/ProofListPage"; +import WelcomePage from "./pages/WelcomePage"; +import LoginPage from "./pages/LoginPage"; +import ResolveDidPage from "./pages/ResolveDidPage"; +import VcmSelfIssuePage from "./pages/VcmSelfIssuePage"; +import RedirectWithTokenPage from "./pages/RedirectWithTokenPage"; +import CreatedDidListPage from "./pages/CreatedDidListPage"; +import CreatedInvitationListPage from "./pages/CreatedInvitationListPage"; + +const routes = { + connection_create: { + Component: ConnectionCreatePage, + route: "/connections/create", + getLink: () => "/connections/create", + requireAuth: true, + }, + connection_list: { + Component: ConnectionListPage, + route: "/connections", + getLink: () => "/connections", + requireAuth: true, + }, + connection_view: { + Component: ConnectionViewPage, + route: "/connection/view/:id", + getLink: (id: string) => `/connection/view/${id}`, + requireAuth: true, + }, + schema_list: { + Component: SchemaListPage, + route: "/schema/list", + getLink: () => "/schema/list", + requireAuth: true, + }, + cred_def_list: { + Component: CredentialDefListPage, + route: "/cred-def/list", + getLink: () => "/cred-def/list", + requireAuth: true, + }, + credential_list: { + Component: CredentialListPage, + route: "/credential/list", + getLink: () => "/credential/list", + requireAuth: true, + }, + proof_list: { + Component: ProofListPage, + route: "/proof/list", + getLink: () => "/proof/list", + requireAuth: true, + }, + welcome: { + Component: WelcomePage, + route: "/", + getLink: () => "/", + requireAuth: false, + }, + createdDids: { + Component: CreatedDidListPage, + route: "/created-dids", + getLink: () => "/created-dids", + requireAuth: false, + }, + createdInvitations: { + Component: CreatedInvitationListPage, + route: "/created-invitations", + getLink: () => "/created-invitations", + requireAuth: false, + }, + login: { + Component: LoginPage, + route: "/login", + getLink: () => "/login", + requireAuth: false, + }, + resolveDid: { + Component: ResolveDidPage, + route: "/resolve-did", + getLink: () => "/resolve-did", + requireAuth: false, + }, + vcmSelfIssue: { + Component: VcmSelfIssuePage, + route: "/self-issued-creds-in-vcm", + getLink: () => "/self-issued-creds-in-vcm", + requireAuth: false, + }, + authToken: { + Component: RedirectWithTokenPage, + route: "/auth/:token", + getLink: (token: string) => `/auth/${token}`, + requireAuth: false, + }, +}; + +export default routes; diff --git a/apps/dashboard/src/routes/index.tsx b/apps/dashboard/src/routes/index.tsx new file mode 100644 index 0000000000000000000000000000000000000000..369a730afe74b52e708deeec395215d725ef5f25 --- /dev/null +++ b/apps/dashboard/src/routes/index.tsx @@ -0,0 +1,27 @@ +import RequireAuth from "@dashboard/components/RequireAuth"; +import React from "react"; +import { Routes, Route } from "react-router-dom"; +import config from "./config"; + +function PageRoutes() { + return ( + <Routes> + {Object.values(config).map((item) => { + let component; + if (item.requireAuth) { + component = ( + <RequireAuth> + <item.Component /> + </RequireAuth> + ); + } else { + component = <item.Component />; + } + + return <Route key={item.route} path={item.route} element={component} />; + })} + </Routes> + ); +} + +export default PageRoutes; diff --git a/apps/dashboard/src/routes/pages/ConnectionCreatePage/ConnectionCreatePageStore.ts b/apps/dashboard/src/routes/pages/ConnectionCreatePage/ConnectionCreatePageStore.ts new file mode 100644 index 0000000000000000000000000000000000000000..158e7efc36aadc82fb2936bf29df52799d690bbc --- /dev/null +++ b/apps/dashboard/src/routes/pages/ConnectionCreatePage/ConnectionCreatePageStore.ts @@ -0,0 +1,42 @@ +import { makeAutoObservable } from "mobx"; +import api from "@dashboard/engine-api"; +import displayError from "@dashboard/utils/displayError"; + +class ConnectionCreatePageStore { + public loading = false; + public invitationUrl: string | null | undefined = null; + public oob: string | null = null; + public oobId: string | null | undefined = null; + + constructor() { + makeAutoObservable(this); + } + + public async createConnection() { + this.loading = true; + try { + const { invitationUrl, outOfBandId } = await api.createInvitation({}); + this.invitationUrl = invitationUrl; + this.oobId = outOfBandId; + try { + if (invitationUrl) { + this.oob = JSON.stringify( + JSON.parse(atob(invitationUrl.split("oob=")[1])), + null, + 2, + ); + } + } catch (e) { + console.warn("Failed to parse invitationUrl"); + } + } catch (e: unknown) { + displayError(e, "Failed to create connection invitation"); + } + + this.loading = false; + } +} + +export type { ConnectionCreatePageStore }; + +export default ConnectionCreatePageStore; diff --git a/apps/dashboard/src/routes/pages/ConnectionCreatePage/index.tsx b/apps/dashboard/src/routes/pages/ConnectionCreatePage/index.tsx new file mode 100644 index 0000000000000000000000000000000000000000..657bd6e701461bb2a75d817fcb5bac54e6012cb5 --- /dev/null +++ b/apps/dashboard/src/routes/pages/ConnectionCreatePage/index.tsx @@ -0,0 +1,68 @@ +import React, { useEffect, useState } from "react"; +import { observer } from "mobx-react"; +import { QRCode, Spin } from "antd"; +import ConnectionCreatePageStore from "./ConnectionCreatePageStore"; +import s from "./styles.module.scss"; +import PageWithSidebar from "@dashboard/components/PageWithSidebar"; +import PageTitle from "@dashboard/components/PageTitle"; + +const ConnectionCreatePage = observer(() => { + const [store] = useState(() => new ConnectionCreatePageStore()); + + useEffect(() => { + store.createConnection(); + }, [store]); + return ( + <PageWithSidebar> + <PageTitle>New Contact</PageTitle> + <div> + {store.loading && <Spin />} + {!store.loading && ( + <div className={s.info}> + <div> + <div> + <div className={s.urlTitle}>Invitation URL:</div> + <div className={s.url}> + <b>{store.invitationUrl}</b> + </div> + <div className={s.urlHint}> + Copy this URL and send it to the person you want to connect + with + </div> + + {store.oobId && ( + <> + <br /> + <div> + OutOfBandId: <b>{store.oobId}</b> + </div> + </> + )} + + <div className={s.qrCodeHint}> + Or scan this QR code with your mobile wallet + </div> + <div style={{ background: "white", padding: "16px" }}> + <QRCode + status={!store.invitationUrl ? "loading" : "active"} + value={store.invitationUrl || "loading"} + size={400} + /> + </div> + <br /> + {store.oob && ( + <div> + Details: + <pre>{store.oob}</pre> + </div> + )} + </div> + </div> + </div> + )} + </div> + </PageWithSidebar> + ); +}); + +export default ConnectionCreatePage; diff --git a/apps/dashboard/src/routes/pages/ConnectionCreatePage/styles.module.scss b/apps/dashboard/src/routes/pages/ConnectionCreatePage/styles.module.scss new file mode 100644 index 0000000000000000000000000000000000000000..d68ef3843d8c4133700ef2c3eac3962dd2c4a61e --- /dev/null +++ b/apps/dashboard/src/routes/pages/ConnectionCreatePage/styles.module.scss @@ -0,0 +1,49 @@ +.netConnection { + display: flex; + justify-content: flex-start; + align-items: center; + flex-direction: column; + flex: 0 50%; + background: #ffffff; + border-radius: 20px; + padding: 20px; +} + +.info { + flex: 0 50%; + display: flex; + flex-direction: column; + justify-content: space-between; +} + +.invitationUrl { + word-break: break-all; +} + +.urlTitle { + margin-top: 12px; + font-weight: bold; +} + +.link { + color: white !important; + word-wrap: break-word; +} + +.url { + margin-top: 12px; + word-break: break-word; + border-right: 8px; + background-color: rgba(0,0,0, 0.04); + padding: 8px; +} + +.urlHint { + margin-top: 12px; + font-size: 16px; +} + +.qrCodeHint { + margin: 24px 0 12px 0; + font-size: 18px; +} \ No newline at end of file diff --git a/apps/dashboard/src/routes/pages/ConnectionListPage/ConnectionListStore.ts b/apps/dashboard/src/routes/pages/ConnectionListPage/ConnectionListStore.ts new file mode 100644 index 0000000000000000000000000000000000000000..3a92054a1437b9a580189ef427abadc1f9f09065 --- /dev/null +++ b/apps/dashboard/src/routes/pages/ConnectionListPage/ConnectionListStore.ts @@ -0,0 +1,46 @@ +import { makeAutoObservable, runInAction } from "mobx"; +import api, { ConnectionRecordDto } from "@dashboard/engine-api"; +import displayError from "@dashboard/utils/displayError"; + +class ConnectionListStore { + public loading = false; + public list: ConnectionRecordDto[] = []; + public searchQuery = ""; + public get filteredList() { + const query = this.searchQuery.trim().toLowerCase(); + if (query) { + return this.list.filter( + (p) => + (p.connectionName && + p.connectionName.toLowerCase().indexOf(query) >= 0) || + (p.id && p.id.indexOf(query) >= 0) || + (p.alias && p.alias.toLowerCase().indexOf(query) >= 0) || + (p.did && p.did.indexOf(query) >= 0) || + (p.outOfBandId && p.outOfBandId.indexOf(query) >= 0), + ); + } + return this.list; + } + + constructor() { + makeAutoObservable(this); + } + + public async getAll() { + runInAction(() => (this.loading = true)); + try { + const list = await api.fetchConnections(); + runInAction(() => { + this.list = list; + this.loading = false; + }); + } catch (e: unknown) { + displayError(e); + runInAction(() => (this.loading = false)); + } + } +} + +export type { ConnectionListStore }; + +export default ConnectionListStore; diff --git a/apps/dashboard/src/routes/pages/ConnectionListPage/index.tsx b/apps/dashboard/src/routes/pages/ConnectionListPage/index.tsx new file mode 100644 index 0000000000000000000000000000000000000000..bf3fddd0a16aad83bcf2158a79c70ba952480a6a --- /dev/null +++ b/apps/dashboard/src/routes/pages/ConnectionListPage/index.tsx @@ -0,0 +1,73 @@ +import React, { useEffect, useState } from "react"; +import { observer } from "mobx-react"; +import { Button, Input, Space, Spin } from "antd"; +import { Link, useNavigate } from "react-router-dom"; +import ConnectionListStore from "./ConnectionListStore"; +import config from "@dashboard/routes/config"; +import ConnectionItem from "@dashboard/components/ConnectionItem"; +import modalStore from "@dashboard/store/modalStore"; +import NoRecordsMessage from "@dashboard/components/NoRecordsMessage"; +import PageWithSidebar from "@dashboard/components/PageWithSidebar"; +import PageTitle from "@dashboard/components/PageTitle"; +import { runInAction } from "mobx"; +import s from "./styles.module.scss"; + +const ConnectionListPage = observer(() => { + const [store] = useState(() => new ConnectionListStore()); + + const navigate = useNavigate(); + + useEffect(() => { + store.getAll(); + }, [store]); + + return ( + <PageWithSidebar> + <h2>Actions</h2> + <Space> + <Link to={config.connection_create.getLink()}> + <Button type="primary">New contact</Button> + </Link> + <Button + onClick={() => { + modalStore.openReceiveInvitationDialog({ + onInvitationReceived: (connRecord) => { + navigate(config.connection_view.getLink(connRecord.id!)); + }, + }); + }} + > + Accept invitation + </Button> + </Space> + <PageTitle>Contacts</PageTitle> + <div> + <Space direction="horizontal"> + <div>Search:</div> + <Input + className={s.searchInput} + value={store.searchQuery} + onChange={(e) => { + runInAction(() => (store.searchQuery = e.target.value)); + }} + /> + </Space> + <div> + {store.filteredList.map((p) => ( + <ConnectionItem + key={p.id} + item={p} + onClick={() => navigate(config.connection_view.getLink(p.id!))} + /> + ))} + {!store.loading && store.filteredList.length === 0 && ( + <NoRecordsMessage /> + )} + {store.loading && <Spin />} + </div> + </div> + </PageWithSidebar> + ); +}); + +export default ConnectionListPage; diff --git a/apps/dashboard/src/routes/pages/ConnectionListPage/styles.module.scss b/apps/dashboard/src/routes/pages/ConnectionListPage/styles.module.scss new file mode 100644 index 0000000000000000000000000000000000000000..03346e4360314ef069fb6ff70a571211fca541c6 --- /dev/null +++ b/apps/dashboard/src/routes/pages/ConnectionListPage/styles.module.scss @@ -0,0 +1,3 @@ +.searchInput { + width: 400px; +} diff --git a/apps/dashboard/src/routes/pages/ConnectionViewPage/ConnectionViewPageStore.ts b/apps/dashboard/src/routes/pages/ConnectionViewPage/ConnectionViewPageStore.ts new file mode 100644 index 0000000000000000000000000000000000000000..fff1ede5fcb733a2f7a2d5caf3078d8c406e740e --- /dev/null +++ b/apps/dashboard/src/routes/pages/ConnectionViewPage/ConnectionViewPageStore.ts @@ -0,0 +1,46 @@ +import { makeAutoObservable, runInAction } from "mobx"; +import { toast } from "react-toastify"; +import api, { ConnectionRecordDto } from "@dashboard/engine-api"; +import displayError from "@dashboard/utils/displayError"; + +class ConnectionViewPageStore { + public loading = false; + public connection: ConnectionRecordDto | null = null; + constructor() { + makeAutoObservable(this); + } + + public async load(id: string) { + runInAction(() => (this.loading = true)); + try { + const record = await api.getConnectionById(id); + runInAction(() => { + this.connection = record; + this.loading = false; + }); + } catch (e: unknown) { + displayError(e); + runInAction(() => (this.loading = false)); + } + } + + public async deleteConnection(id: string) { + runInAction(() => (this.loading = true)); + try { + await api.deleteConnectionById(id); + runInAction(() => { + this.loading = false; + }); + toast.success("Contact deleted successfully"); + return true; + } catch (e: unknown) { + displayError(e); + runInAction(() => (this.loading = false)); + return false; + } + } +} + +export type { ConnectionViewPageStore }; + +export default ConnectionViewPageStore; diff --git a/apps/dashboard/src/routes/pages/ConnectionViewPage/index.tsx b/apps/dashboard/src/routes/pages/ConnectionViewPage/index.tsx new file mode 100644 index 0000000000000000000000000000000000000000..a4ecedb5b51cb473e66ad84e0aa6a071a06e4d5a --- /dev/null +++ b/apps/dashboard/src/routes/pages/ConnectionViewPage/index.tsx @@ -0,0 +1,98 @@ +import React, { useEffect, useState } from "react"; +import { observer } from "mobx-react"; +import { useNavigate, useParams } from "react-router-dom"; +import ConnectionViewPageStore from "./ConnectionViewPageStore"; +import ConnectionItem from "@dashboard/components/ConnectionItem"; +import { Button, Space, Spin } from "antd"; +import JsonDetails from "@dashboard/components/JsonDetails"; +import CredentialList from "@dashboard/components/CredentialList"; +import ProofList from "@dashboard/components/ProofList"; +import modalStore from "@dashboard/store/modalStore"; +import BasicMessageList from "@dashboard/components/BasicMessageList"; +import PageWithSidebar from "@dashboard/components/PageWithSidebar"; +import PageTitle from "@dashboard/components/PageTitle"; +import route from "@dashboard/routes/config"; + +const ConnectionViewPage = observer(() => { + const { id } = useParams() as { id: string }; + const [store] = useState(() => new ConnectionViewPageStore()); + const navigate = useNavigate(); + + useEffect(() => { + store.load(id); + }, [store, id]); + return ( + <PageWithSidebar> + <h2>Actions</h2> + <Space direction="horizontal"> + <Button + onClick={() => { + modalStore.openOfferCredentialDialog({ + connectionId: id, + onCredentialOffered: (cred) => { + setTimeout(() => { + window.location.reload(); + }, 3000); + }, + }); + }} + > + Offer credential + </Button> + <Button + onClick={() => { + modalStore.openRequestProofDialog({ + connectionId: id, + onProofRequested: (proofRequest) => { + setTimeout(() => { + window.location.reload(); + }, 3000); + }, + }); + }} + > + Request proof + </Button> + <Button + danger + onClick={() => { + modalStore.openConfirmDialog({ + title: "Are you sure you want to delete this contact?", + dangerOk: true, + description: "", + onOk: async (e) => { + const result = await store.deleteConnection(id); + if (result) { + e.close(); + navigate(route.connection_list.getLink()); + } + }, + }); + }} + > + Delete contact + </Button> + </Space> + <PageTitle>Connection</PageTitle> + {store.loading && <Spin />} + {!store.loading && store.connection && ( + <div> + <ConnectionItem item={store.connection} /> + </div> + )} + + <h3>Credentials</h3> + <CredentialList connectionId={id} /> + + <h3>Proofs</h3> + <ProofList connectionId={id} /> + + <h3>Messages</h3> + <BasicMessageList connectionId={id} /> + + <JsonDetails object={store.connection} /> + </PageWithSidebar> + ); +}); + +export default ConnectionViewPage; diff --git a/apps/dashboard/src/routes/pages/ConnectionViewPage/styles.module.scss b/apps/dashboard/src/routes/pages/ConnectionViewPage/styles.module.scss new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/apps/dashboard/src/routes/pages/CreatedDidListPage/CreatedDidListPageStore.ts b/apps/dashboard/src/routes/pages/CreatedDidListPage/CreatedDidListPageStore.ts new file mode 100644 index 0000000000000000000000000000000000000000..df9eb10a0f14128a11bb515cd639918ecd2bf64d --- /dev/null +++ b/apps/dashboard/src/routes/pages/CreatedDidListPage/CreatedDidListPageStore.ts @@ -0,0 +1,29 @@ +import { makeAutoObservable, runInAction } from "mobx"; +import api, { DidRecordDto } from "@dashboard/engine-api"; +import displayError from "@dashboard/utils/displayError"; + +class CreatedDidListPageStore { + public loading = false; + public list: DidRecordDto[] = []; + constructor() { + makeAutoObservable(this); + } + + public async getAll() { + runInAction(() => (this.loading = true)); + try { + const list = await api.getCreatedDids(); + runInAction(() => { + this.list = list; + this.loading = false; + }); + } catch (e: unknown) { + displayError(e); + runInAction(() => (this.loading = false)); + } + } +} + +export type { CreatedDidListPageStore }; + +export default CreatedDidListPageStore; diff --git a/apps/dashboard/src/routes/pages/CreatedDidListPage/index.tsx b/apps/dashboard/src/routes/pages/CreatedDidListPage/index.tsx new file mode 100644 index 0000000000000000000000000000000000000000..cc8ebb6a43c9e82a97622abf1321c7f68c3413d6 --- /dev/null +++ b/apps/dashboard/src/routes/pages/CreatedDidListPage/index.tsx @@ -0,0 +1,31 @@ +import React, { useEffect, useState } from "react"; +import { observer } from "mobx-react"; +import { Spin } from "antd"; +import CreatedDidListPageStore from "./CreatedDidListPageStore"; +import NoRecordsMessage from "@dashboard/components/NoRecordsMessage"; +import PageWithSidebar from "@dashboard/components/PageWithSidebar"; +import PageTitle from "@dashboard/components/PageTitle"; +import CreatedDidItem from "@dashboard/components/CreatedDidItem"; + +const CredentialDefListPage = observer(() => { + const [store] = useState(() => new CreatedDidListPageStore()); + + useEffect(() => { + store.getAll(); + }, [store]); + + return ( + <PageWithSidebar> + <PageTitle>Your DIDs</PageTitle> + <div> + {store.list.map((p) => ( + <CreatedDidItem key={p.did} item={p} /> + ))} + {!store.loading && store.list.length === 0 && <NoRecordsMessage />} + {store.loading && <Spin />} + </div> + </PageWithSidebar> + ); +}); + +export default CredentialDefListPage; diff --git a/apps/dashboard/src/routes/pages/CreatedDidListPage/styles.module.scss b/apps/dashboard/src/routes/pages/CreatedDidListPage/styles.module.scss new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/apps/dashboard/src/routes/pages/CreatedInvitationListPage/CreatedInvitationListPageStore.ts b/apps/dashboard/src/routes/pages/CreatedInvitationListPage/CreatedInvitationListPageStore.ts new file mode 100644 index 0000000000000000000000000000000000000000..186db2391215c78d89dfb49e549091ef179593fd --- /dev/null +++ b/apps/dashboard/src/routes/pages/CreatedInvitationListPage/CreatedInvitationListPageStore.ts @@ -0,0 +1,29 @@ +import { makeAutoObservable, runInAction } from "mobx"; +import api, { CreateInvitationResponseDto } from "@dashboard/engine-api"; +import displayError from "@dashboard/utils/displayError"; + +class CreatedInvitationListPageStore { + public loading = false; + public list: CreateInvitationResponseDto[] = []; + constructor() { + makeAutoObservable(this); + } + + public async getAll() { + runInAction(() => (this.loading = true)); + try { + const list = await api.fetchInvitations(undefined, undefined); + runInAction(() => { + this.list = list; + this.loading = false; + }); + } catch (e: unknown) { + displayError(e); + runInAction(() => (this.loading = false)); + } + } +} + +export type { CreatedInvitationListPageStore }; + +export default CreatedInvitationListPageStore; diff --git a/apps/dashboard/src/routes/pages/CreatedInvitationListPage/index.tsx b/apps/dashboard/src/routes/pages/CreatedInvitationListPage/index.tsx new file mode 100644 index 0000000000000000000000000000000000000000..dc4efd67d2a9c874868c48e70dd10c5db21c64a7 --- /dev/null +++ b/apps/dashboard/src/routes/pages/CreatedInvitationListPage/index.tsx @@ -0,0 +1,31 @@ +import React, { useEffect, useState } from "react"; +import { observer } from "mobx-react"; +import { Spin } from "antd"; +import CreatedInvitationListPageStore from "./CreatedInvitationListPageStore"; +import NoRecordsMessage from "@dashboard/components/NoRecordsMessage"; +import PageWithSidebar from "@dashboard/components/PageWithSidebar"; +import PageTitle from "@dashboard/components/PageTitle"; +import CreatedInvitationItem from "@dashboard/components/CreatedInvitationItem"; + +const CreatedInvitationListPage = observer(() => { + const [store] = useState(() => new CreatedInvitationListPageStore()); + + useEffect(() => { + store.getAll(); + }, [store]); + + return ( + <PageWithSidebar> + <PageTitle>Created Invitations</PageTitle> + <div> + {store.list.map((p) => ( + <CreatedInvitationItem key={p.did} item={p} /> + ))} + {!store.loading && store.list.length === 0 && <NoRecordsMessage />} + {store.loading && <Spin />} + </div> + </PageWithSidebar> + ); +}); + +export default CreatedInvitationListPage; diff --git a/apps/dashboard/src/routes/pages/CreatedInvitationListPage/styles.module.scss b/apps/dashboard/src/routes/pages/CreatedInvitationListPage/styles.module.scss new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/apps/dashboard/src/routes/pages/CredentialDefListPage/CredentialDefListPageStore.ts b/apps/dashboard/src/routes/pages/CredentialDefListPage/CredentialDefListPageStore.ts new file mode 100644 index 0000000000000000000000000000000000000000..b66ce5f399604001dd544f33aacbd97e72d5ce1a --- /dev/null +++ b/apps/dashboard/src/routes/pages/CredentialDefListPage/CredentialDefListPageStore.ts @@ -0,0 +1,29 @@ +import { makeAutoObservable, runInAction } from "mobx"; +import api, { CreddefRecordDto } from "@dashboard/engine-api"; +import displayError from "@dashboard/utils/displayError"; + +class CredentialDefListPageStore { + public loading = false; + public list: CreddefRecordDto[] = []; + constructor() { + makeAutoObservable(this); + } + + public async getAll() { + runInAction(() => (this.loading = true)); + try { + const list = await api.fetchCredentialDefinitions(); + runInAction(() => { + this.list = list; + this.loading = false; + }); + } catch (e: unknown) { + displayError(e); + runInAction(() => (this.loading = false)); + } + } +} + +export type { CredentialDefListPageStore }; + +export default CredentialDefListPageStore; diff --git a/apps/dashboard/src/routes/pages/CredentialDefListPage/index.tsx b/apps/dashboard/src/routes/pages/CredentialDefListPage/index.tsx new file mode 100644 index 0000000000000000000000000000000000000000..08015d195e99baa2871b83d1dbd62a2e8916b80e --- /dev/null +++ b/apps/dashboard/src/routes/pages/CredentialDefListPage/index.tsx @@ -0,0 +1,47 @@ +import React, { useEffect, useState } from "react"; +import { observer } from "mobx-react"; +import { Button, Spin } from "antd"; +import CredentialDefinitionItem from "@dashboard/components/CredentialDefinitionItem"; +import CredentialDefListPageStore from "./CredentialDefListPageStore"; +import modalStore from "@dashboard/store/modalStore"; +import NoRecordsMessage from "@dashboard/components/NoRecordsMessage"; +import PageWithSidebar from "@dashboard/components/PageWithSidebar"; +import PageTitle from "@dashboard/components/PageTitle"; + +const CredentialDefListPage = observer(() => { + const [store] = useState(() => new CredentialDefListPageStore()); + + useEffect(() => { + store.getAll(); + }, [store]); + + const handleCreateDef = () => { + modalStore.openNewCredentialDefDialog({ + onCredDefCreated: (credDef) => { + store.getAll(); + modalStore.openViewJsonDialog({ data: credDef }); + }, + }); + }; + + return ( + <PageWithSidebar> + <h2>Actions</h2> + <div> + <Button onClick={handleCreateDef}> + Create new credential definition + </Button> + </div> + <PageTitle>Credential definitions</PageTitle> + <div> + {store.list.map((p) => ( + <CredentialDefinitionItem key={p.credentialDefinitionId} item={p} /> + ))} + {!store.loading && store.list.length === 0 && <NoRecordsMessage />} + {store.loading && <Spin />} + </div> + </PageWithSidebar> + ); +}); + +export default CredentialDefListPage; diff --git a/apps/dashboard/src/routes/pages/CredentialDefListPage/styles.module.scss b/apps/dashboard/src/routes/pages/CredentialDefListPage/styles.module.scss new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/apps/dashboard/src/routes/pages/CredentialListPage/index.tsx b/apps/dashboard/src/routes/pages/CredentialListPage/index.tsx new file mode 100644 index 0000000000000000000000000000000000000000..7adf872d2f4f1bb69b71a8dea8a649186ec93d03 --- /dev/null +++ b/apps/dashboard/src/routes/pages/CredentialListPage/index.tsx @@ -0,0 +1,57 @@ +import React, { useState, useEffect } from "react"; +import { observer } from "mobx-react"; +import CredentialList from "@dashboard/components/CredentialList"; +import PageWithSidebar from "@dashboard/components/PageWithSidebar"; +import PageTitle from "@dashboard/components/PageTitle"; +import { Button, Space } from "antd"; +import modalStore from "@dashboard/store/modalStore"; +import CredentialListStore from "@dashboard/components/CredentialList/CredentialListStore"; + +const CredentialListPage = observer(() => { + const [store] = useState(() => new CredentialListStore()); + + useEffect(() => { + store.loadAll(null); + }, [store]); + + return ( + <PageWithSidebar> + <h2>Actions</h2> + <Space direction="horizontal"> + <Button + onClick={() => { + modalStore.openOfferCredentialDialog({ + connectionId: undefined, + onCredentialOffered: (offer) => { + modalStore.openViewConnectionlessCredentialOffer({ + credentialUrl: offer.credentialUrl, + credentialUrlShort: offer.shortCredentialUrl, + credentialRecord: offer.credentialRecord, + }); + }, + }); + }} + > + Offer connectionless credential + </Button> + <Button + onClick={() => { + modalStore.openAcceptConnectionlessCredentialOfferDialog({ + onCredentialReceived: (credentialRecord) => { + modalStore.openViewJsonDialog({ data: credentialRecord }); + }, + }); + }} + > + Accept connectionless credential + </Button> + </Space> + <PageTitle>Credentials</PageTitle> + <div> + <CredentialList connectionId={null} /> + </div> + </PageWithSidebar> + ); +}); + +export default CredentialListPage; diff --git a/apps/dashboard/src/routes/pages/LoginPage/AuthForm/AuthFormStore.ts b/apps/dashboard/src/routes/pages/LoginPage/AuthForm/AuthFormStore.ts new file mode 100644 index 0000000000000000000000000000000000000000..216ca223a4c3c89f79996417ff8d8280341c3a15 --- /dev/null +++ b/apps/dashboard/src/routes/pages/LoginPage/AuthForm/AuthFormStore.ts @@ -0,0 +1,80 @@ +import { makeAutoObservable, runInAction } from "mobx"; +import tsaApi from "@dashboard/tsa-api"; +import { toast } from "react-toastify"; +import displayError from "@dashboard/utils/displayError"; + +type SetToken = (token: string) => void; + +class AuthFormStore { + public loading = false; + public acceptanceAwaiting = false; + public acceptanceExpired = false; + public mode: "email" | "vc" = "email"; + public proofRecordId: string | null = null; + public proofUrlShort: string | null = null; + public proofUrl: string | null = null; + private _setToken: SetToken; + + constructor(setToken: SetToken) { + this._setToken = setToken; + makeAutoObservable(this); + } + + public requestTsaAuthEmail = async (email: string) => { + runInAction(() => (this.loading = true)); + try { + const { message } = await tsaApi.loginLogin({ email }); + toast(message); + + runInAction(() => { + this.loading = false; + }); + } catch (e: unknown) { + displayError(e); + runInAction(() => (this.loading = false)); + } + }; + + public requestTsaProof = async () => { + runInAction(() => (this.loading = true)); + try { + const { proofRecordId, proofUrl, proofUrlShort } = + await tsaApi.loginLoginInvitation(); + runInAction(() => { + this.loading = false; + this.proofRecordId = proofRecordId; + this.proofUrl = proofUrl; + this.proofUrlShort = proofUrlShort; + }); + } catch (e: unknown) { + displayError(e); + runInAction(() => (this.loading = false)); + } + if (this.proofRecordId) { + this._awaitProofAcceptance(this.proofRecordId); + } + }; + + private _awaitProofAcceptance = async (proofRecordId: string) => { + runInAction(() => (this.acceptanceAwaiting = true)); + try { + const { token } = await tsaApi.loginLoginWithVC({ + proofRecordId, + }); + this._setToken(token); + runInAction(() => { + this.acceptanceAwaiting = false; + }); + } catch (e: unknown) { + displayError(e); + runInAction(() => { + this.acceptanceAwaiting = false; + this.acceptanceExpired = true; + }); + } + }; +} + +export type { AuthFormStore }; + +export default AuthFormStore; diff --git a/apps/dashboard/src/routes/pages/LoginPage/AuthForm/index.tsx b/apps/dashboard/src/routes/pages/LoginPage/AuthForm/index.tsx new file mode 100644 index 0000000000000000000000000000000000000000..ce0607195de8a0fc7ed40bccfe4de6782c0967b7 --- /dev/null +++ b/apps/dashboard/src/routes/pages/LoginPage/AuthForm/index.tsx @@ -0,0 +1,99 @@ +import React, { useState } from "react"; +import { observer } from "mobx-react"; +import AuthFormStore from "./AuthFormStore"; +import { Button, Form, Input, QRCode } from "antd"; +import s from "./styles.module.scss"; +import useGlobalAuth from "@dashboard/hooks/useGlobalAuth"; + +const LoginPage = observer(() => { + const auth = useGlobalAuth(); + const [store] = useState(() => new AuthFormStore(auth.setToken)); + + const handleEnterEmail = ({ email }: { email: string }) => { + // TODO Functional deactivated. Auth will be implemented in another branch + // store.requestTsaAuthEmail(email); + }; + + return ( + <div className={s.registerForm}> + <div className={s.formTitle}> + {store.mode === "email" && "Login using trusted email"} + {store.mode === "vc" && "Scan this QR code"} + </div> + + {store.mode === "email" && ( + <> + <Form + layout="vertical" + initialValues={{ + email: "", + }} + onFinish={handleEnterEmail} + autoComplete="off" + > + <Form.Item + label="Email" + name="email" + rules={[{ required: true, message: "Please enter email" }]} + > + <Input /> + </Form.Item> + + <div className={s.footerActions}> + <Button + type="primary" + htmlType="submit" + disabled={store.loading} + loading={store.loading} + > + Send email + </Button> + </div> + </Form> + + <br /> + <Button + onClick={() => { + store.mode = "vc"; + // Functional deactivated + // store.requestTsaProof(); + }} + > + Login using VC + </Button> + </> + )} + + {store.mode === "vc" && ( + <> + <div className={s.qrWrapper}> + <QRCode + status={ + !store.proofUrlShort || store.loading ? "loading" : "active" + } + value={store.proofUrlShort || "loading"} + size={400} + icon={`${window.BASE_PATH}/assets/Vereign_Logo_ICON_BLACK.png}`} + /> + </div> + <div> + In case you have another OCM with VC. You can copy this url and + accept it + <br /> + <div>{store.proofUrl}</div> + </div> + <br /> + <Button + onClick={() => { + store.mode = "email"; + }} + > + Login using email + </Button> + </> + )} + </div> + ); +}); + +export default LoginPage; diff --git a/apps/dashboard/src/routes/pages/LoginPage/AuthForm/styles.module.scss b/apps/dashboard/src/routes/pages/LoginPage/AuthForm/styles.module.scss new file mode 100644 index 0000000000000000000000000000000000000000..a04fe6e0a02277bc204083ca2e8406e2ee17427f --- /dev/null +++ b/apps/dashboard/src/routes/pages/LoginPage/AuthForm/styles.module.scss @@ -0,0 +1,32 @@ +.registerForm { + width: 700px; + margin: 80px auto; + background: #fff 0 0 no-repeat padding-box; + box-shadow: 0 3px 40px rgba(0,0,0,.059); + border-radius: 30px; + opacity: 1; + padding: 30px; + flex: 1 1; + border: 3px solid transparent; + display: flex; + flex-direction: column; +} +.formTitle { + text-align: center; + font-size: 30px; + color: #00b3ca; + font-weight: bold; + margin-bottom: 12px; +} + +.qrWrapper { + display: flex; + align-items: center; + justify-content: center; + margin: 40px 0 20px 0; +} + +.goToLogin { + margin: 0 0 100px 0; + text-align: center; +} diff --git a/apps/dashboard/src/routes/pages/LoginPage/LoginPageStore.ts b/apps/dashboard/src/routes/pages/LoginPage/LoginPageStore.ts new file mode 100644 index 0000000000000000000000000000000000000000..3bf24cd1c138a2d1946c124a8b3cef3a905619aa --- /dev/null +++ b/apps/dashboard/src/routes/pages/LoginPage/LoginPageStore.ts @@ -0,0 +1,71 @@ +import { makeAutoObservable, runInAction } from "mobx"; +import api, { + CreddefRecordDto, + ProofRecordDto, + SchemaRecordDto, +} from "@dashboard/engine-api"; +import { v4 } from "uuid"; +import displayError from "@dashboard/utils/displayError"; + +class LoginPageStore { + public loading = false; + public id = v4(); + public schemaId = + "did:indy:bcovrin:test:FcZ4aS728oRGVdNUKVaECP/anoncreds/v0/SCHEMA/Identity/1.0"; + public schema: SchemaRecordDto | null = null; + public creddef: CreddefRecordDto | null = null; + public shortProofUrl: string | null = null; + public proofUrl: string | null = null; + public proofRecord: ProofRecordDto | null = null; + + constructor() { + makeAutoObservable(this); + } + + public async initialize() { + runInAction(() => (this.loading = true)); + try { + const schema = await api.getSchemaById({ id: this.schemaId }); + const credDefs = await api.fetchCredentialDefinitions(); + let requiredCredDef = credDefs.find( + (credDef) => credDef.schemaId === this.schemaId, + ); + if (!requiredCredDef) { + requiredCredDef = await api.createCredentialDefinition({ + schemaId: this.schemaId, + tag: "Identity", + }); + } + + const { shortProofUrl, proofUrl, proofRecord } = await api.requestProof({ + attributes: [ + { + attributeName: "internal-id", + credentialDefinitionId: requiredCredDef.id!, + schemaId: this.schemaId, + }, + { + attributeName: "name", + credentialDefinitionId: requiredCredDef.id!, + schemaId: this.schemaId, + }, + ], + }); + runInAction(() => { + this.schema = schema; + this.creddef = requiredCredDef!; + this.shortProofUrl = shortProofUrl; + this.proofUrl = proofUrl; + this.proofRecord = proofRecord; + this.loading = false; + }); + } catch (e: unknown) { + displayError(e); + runInAction(() => (this.loading = false)); + } + } +} + +export type { LoginPageStore }; + +export default LoginPageStore; diff --git a/apps/dashboard/src/routes/pages/LoginPage/index.tsx b/apps/dashboard/src/routes/pages/LoginPage/index.tsx new file mode 100644 index 0000000000000000000000000000000000000000..308dccd9575d90800be006fc2a23ea037f5ced6f --- /dev/null +++ b/apps/dashboard/src/routes/pages/LoginPage/index.tsx @@ -0,0 +1,61 @@ +import React from "react"; +import { observer } from "mobx-react"; +import Page from "@dashboard/components/Page"; +import VaultHeader from "@dashboard/components/VaultHeader"; +import AuthForm from "./AuthForm"; +import s from "./styles.module.scss"; + +const LoginPage = observer(() => { + return ( + <Page> + <VaultHeader hideTry /> + + <div className={s.topSpace} /> + + <div className={s.info}> + <div className={s.subTitle}>Secure Login with Your Credentials</div> + <ul> + <li> + <b>For New Users or Credential Recovery:</b> + <br /> + If you are a new user or need to recover your credentials, please + contact an administrator. The administrator will provide you with a + QR code that contains your login data. + </li> + + <li> + <b>Trusted Email Verification:</b> + <br /> + For users with a trusted email address, enter your email below. You + will receive an email containing a secure link. Following this link + will redirect you to the app and grant you access. + </li> + + <li> + <b>Returning Users with Mobile Credentials:</b> + <br /> + Open the Mobile App: Launch the mobile app you have previously set + up. + <br /> + Scan the QR Code Below: Use the app’s scanner to capture the QR code + displayed on this page. This step verifies that you hold valid + credentials from our system. + <br /> + Confirm and Login: After scanning, the app will request your + confirmation. Upon confirming, you will be logged into the system + automatically. + </li> + </ul> + <div> + We continue to provide a secure and efficient login process. By + utilizing these methods, we eliminate the need for traditional + passwords, ensuring your login is both safe and convenient. + </div> + </div> + + <AuthForm /> + </Page> + ); +}); + +export default LoginPage; diff --git a/apps/dashboard/src/routes/pages/LoginPage/styles.module.scss b/apps/dashboard/src/routes/pages/LoginPage/styles.module.scss new file mode 100644 index 0000000000000000000000000000000000000000..5bff96ea00a3e6239cc5c0f109f61e8b8d42c301 --- /dev/null +++ b/apps/dashboard/src/routes/pages/LoginPage/styles.module.scss @@ -0,0 +1,16 @@ +.topSpace { + margin-top: 30px; +} + +.info { + margin: 0 auto; + max-width: 1000px; +} + +.subTitle { + text-align: center; + font-weight: bold; + font-size: 30px; + color: #00b3ca; + padding: 40px; +} diff --git a/apps/dashboard/src/routes/pages/ProofListPage/index.tsx b/apps/dashboard/src/routes/pages/ProofListPage/index.tsx new file mode 100644 index 0000000000000000000000000000000000000000..1a0dc4a7305bbfc8cc1c7022598d408260f81b5e --- /dev/null +++ b/apps/dashboard/src/routes/pages/ProofListPage/index.tsx @@ -0,0 +1,50 @@ +import React from "react"; +import { observer } from "mobx-react"; +import ProofList from "@dashboard/components/ProofList"; +import { Button, Space } from "antd"; +import modalStore from "@dashboard/store/modalStore"; +import PageWithSidebar from "@dashboard/components/PageWithSidebar"; +import PageTitle from "@dashboard/components/PageTitle"; + +const ProofListPage = observer(() => { + return ( + <PageWithSidebar> + <h2>Actions</h2> + <Space direction="horizontal"> + <Button + onClick={() => { + modalStore.openRequestProofDialog({ + connectionId: undefined, + onProofRequested: (proofRequest) => { + modalStore.openViewConnectionlessProofRequest({ + proofUrl: proofRequest.proofUrl, + proofUrlShort: proofRequest.shortProofUrl, + proofRecord: proofRequest.proofRecord, + }); + }, + }); + }} + > + Create connectionless proof request + </Button> + <Button + onClick={() => { + modalStore.openAcceptConnectionlessProofRequestDialog({ + onProofReceived: (proofRecord) => { + window.location.reload(); + }, + }); + }} + > + Accept connectionless proof request + </Button> + </Space> + <PageTitle>Proof Requests</PageTitle> + <div> + <ProofList connectionId={null} /> + </div> + </PageWithSidebar> + ); +}); + +export default ProofListPage; diff --git a/apps/dashboard/src/routes/pages/RedirectWithTokenPage/index.tsx b/apps/dashboard/src/routes/pages/RedirectWithTokenPage/index.tsx new file mode 100644 index 0000000000000000000000000000000000000000..0a0a6e21e9edf095c396dc3b2764e1201a51de11 --- /dev/null +++ b/apps/dashboard/src/routes/pages/RedirectWithTokenPage/index.tsx @@ -0,0 +1,37 @@ +import React, { useEffect } from "react"; +import { useNavigate, useParams } from "react-router-dom"; +import { observer } from "mobx-react"; +import useGlobalAuth from "@dashboard/hooks/useGlobalAuth"; +import config from "@dashboard/routes/config"; +import Page from "@dashboard/components/Page"; +import PageTitle from "@dashboard/components/PageTitle"; +import { Spin } from "antd"; + +const RedirectWithTokenPage = observer(() => { + const { token } = useParams(); + const auth = useGlobalAuth(); + const navigate = useNavigate(); + + useEffect(() => { + async function signInWithToken(token: string | undefined) { + try { + await auth.setToken(token as string); + } catch (e) { + console.error(e); + } + navigate(config.connection_list.getLink(), { replace: true }); + } + + signInWithToken(token); + }, [token, auth, navigate]); + + return ( + <Page> + <PageTitle>Authenticating...</PageTitle> + <h3>You will shortly be redirected to the dashboard.</h3> + <Spin /> + </Page> + ); +}); + +export default RedirectWithTokenPage; diff --git a/apps/dashboard/src/routes/pages/RegisterPage/RegisterPageStore.ts b/apps/dashboard/src/routes/pages/RegisterPage/RegisterPageStore.ts new file mode 100644 index 0000000000000000000000000000000000000000..1f02fe17ca50317395ff690293fab695a3e31e51 --- /dev/null +++ b/apps/dashboard/src/routes/pages/RegisterPage/RegisterPageStore.ts @@ -0,0 +1,71 @@ +import { makeAutoObservable, runInAction } from "mobx"; +import api, { + CreddefRecordDto, + CredentialRecordDto, + SchemaRecordDto, +} from "@dashboard/engine-api"; +import { v4 } from "uuid"; +import displayError from "@dashboard/utils/displayError"; + +class RegisterPageStore { + public loading = false; + public id = v4(); + public schemaId = + "did:indy:bcovrin:test:FcZ4aS728oRGVdNUKVaECP/anoncreds/v0/SCHEMA/Identity/1.0"; + public schema: SchemaRecordDto | null = null; + public creddef: CreddefRecordDto | null = null; + public shortCredentialUrl: string | null = null; + public credentialUrl: string | null = null; + public credentialRecord: CredentialRecordDto | null = null; + + constructor() { + makeAutoObservable(this); + } + + public async initializeQr(name: string) { + runInAction(() => (this.loading = true)); + try { + const schema = await api.getSchemaById({ id: this.schemaId }); + const credDefs = await api.fetchCredentialDefinitions(); + let requiredCredDef = credDefs.find( + (credDef) => credDef.schemaId === this.schemaId, + ); + if (!requiredCredDef) { + requiredCredDef = await api.createCredentialDefinition({ + schemaId: this.schemaId, + tag: "Identity", + }); + } + + const { shortCredentialUrl, credentialUrl, credentialRecord } = + await api.offerCredential({ + credentialDefinitionId: requiredCredDef.id!, + attributes: [ + { + name: "internal-id", + value: this.id, + }, + { + name: "name", + value: name, + }, + ], + }); + runInAction(() => { + this.schema = schema; + this.creddef = requiredCredDef!; + this.shortCredentialUrl = shortCredentialUrl; + this.credentialUrl = credentialUrl; + this.credentialRecord = credentialRecord; + this.loading = false; + }); + } catch (e: unknown) { + displayError(e); + runInAction(() => (this.loading = false)); + } + } +} + +export type { RegisterPageStore }; + +export default RegisterPageStore; diff --git a/apps/dashboard/src/routes/pages/RegisterPage/index.tsx b/apps/dashboard/src/routes/pages/RegisterPage/index.tsx new file mode 100644 index 0000000000000000000000000000000000000000..b67752e455fc2293f3d91535a30dfbba7bd57765 --- /dev/null +++ b/apps/dashboard/src/routes/pages/RegisterPage/index.tsx @@ -0,0 +1,118 @@ +import React, { useState } from "react"; +import { observer } from "mobx-react"; +import RegisterPageStore from "./RegisterPageStore"; +import { Button, Form, Input, QRCode } from "antd"; +import Page from "@dashboard/components/Page"; +import VaultHeader from "@dashboard/components/VaultHeader"; +import { Link } from "react-router-dom"; +import config from "@dashboard/routes/config"; +import s from "./styles.module.scss"; + +const RegisterPage = observer(() => { + const [store] = useState(() => new RegisterPageStore()); + + return ( + <Page> + <VaultHeader hideTry /> + <div className={s.topSpace} /> + <div className={s.info}> + <div className={s.subTitle}> + Welcome to the Organization Credential Manager Registration! + </div> + <div> + Start your journey with us by setting up your digital credentials. + It's quick, secure, and will streamline your future sign-ins. + </div> + <br /> + <div> + <b>Steps to Get Started:</b> + </div> + + <ul> + <li> + <b>Download Our Wallet App</b>: If you haven't installed our mobile + wallet application yet,{" "} + <a href="https://play.google.com/store/apps/details?id=com.vereign.vcm"> + click here + </a>{" "} + to download it for Android. + </li> + <li> + <b>Enter Your Details:</b> Fill in the form below with your name. + This name will be encrypted within your credentials, ensuring your + privacy and security. + </li> + <li> + <b>Scan the QR Code:</b> Use your mobile device to scan the QR code + displayed below. This will transfer your credentials directly to + your digital wallet. + </li> + </ul> + + <div> + Once registered, use your credentials to easily and securely sign in + to our application. Your digital identity is safe with us. + </div> + </div> + + <div className={s.registerForm}> + <div className={s.formTitle}>Registration</div> + <Form + layout="vertical" + initialValues={{ + name: "", + id: store.id, + }} + onFinish={({ name }) => { + store.initializeQr(name); + }} + autoComplete="off" + > + <Form.Item label="internal-id" name="id"> + <Input disabled /> + </Form.Item> + <Form.Item + label="Name" + name="name" + rules={[{ required: true, message: "Please enter your name" }]} + > + <Input /> + </Form.Item> + + <div className={s.footerActions}> + <Button + type="primary" + htmlType="submit" + disabled={store.loading} + loading={store.loading} + > + Generate QR code + </Button> + </div> + </Form> + + {(store.loading && !store.shortCredentialUrl) || + (store.shortCredentialUrl && ( + <div className={s.qrWrapper}> + <QRCode + status={ + !store.shortCredentialUrl || store.loading + ? "loading" + : "active" + } + value={store.shortCredentialUrl || "loading"} + size={400} + icon={`${window.BASE_PATH}/assets/Vereign_Logo_ICON_BLACK.png`} + /> + </div> + ))} + </div> + + <div className={s.goToLogin}> + <Link to={config.login.getLink()}>Go to login</Link> + </div> + </Page> + ); +}); + +export default RegisterPage; diff --git a/apps/dashboard/src/routes/pages/RegisterPage/styles.module.scss b/apps/dashboard/src/routes/pages/RegisterPage/styles.module.scss new file mode 100644 index 0000000000000000000000000000000000000000..5aee29ca8c3085d8a4a520c3c23c00974a59ab23 --- /dev/null +++ b/apps/dashboard/src/routes/pages/RegisterPage/styles.module.scss @@ -0,0 +1,48 @@ +.topSpace { + margin-top: 30px; +} + +.info { + margin: 0 auto; + max-width: 1000px; +} + +.subTitle { + text-align: center; + font-weight: bold; + font-size: 30px; + color: #00b3ca; + padding: 40px; +} + +.registerForm { + width: 700px; + margin: 80px auto; + background: #fff 0 0 no-repeat padding-box; + box-shadow: 0 3px 40px rgba(0,0,0,.059); + border-radius: 30px; + opacity: 1; + padding: 30px; + flex: 1 1; + border: 3px solid transparent; + display: flex; + flex-direction: column; +} +.formTitle { + font-size: 30px; + color: #00b3ca; + font-weight: bold; + margin-bottom: 12px; +} + +.qrWrapper { + display: flex; + align-items: center; + justify-content: center; + margin: 40px 0 20px 0; +} + +.goToLogin { + margin: 0 0 100px 0; + text-align: center; +} diff --git a/apps/dashboard/src/routes/pages/ResolveDidPage/ResolveDidPageStore.ts b/apps/dashboard/src/routes/pages/ResolveDidPage/ResolveDidPageStore.ts new file mode 100644 index 0000000000000000000000000000000000000000..5638527b7d56f120dd62d6f918fcf85ef4e2bbda --- /dev/null +++ b/apps/dashboard/src/routes/pages/ResolveDidPage/ResolveDidPageStore.ts @@ -0,0 +1,37 @@ +import { makeAutoObservable, runInAction } from "mobx"; +import api from "@dashboard/engine-api"; +import displayError from "@dashboard/utils/displayError"; + +class ResolveDidPageStore { + public loading = false; + public did = ""; + public resolvedData: unknown = null; + + constructor() { + makeAutoObservable(this); + } + + public resolve = async () => { + runInAction(() => { + this.loading = true; + }); + try { + const response = await api.resolveDid({ id: this.did }); + runInAction(() => { + this.loading = false; + this.resolvedData = response; + }); + } catch (e: unknown) { + displayError(e, "Failed resolve did"); + runInAction(() => { + this.loading = false; + }); + } + + this.loading = false; + }; +} + +export type { ResolveDidPageStore }; + +export default ResolveDidPageStore; diff --git a/apps/dashboard/src/routes/pages/ResolveDidPage/index.tsx b/apps/dashboard/src/routes/pages/ResolveDidPage/index.tsx new file mode 100644 index 0000000000000000000000000000000000000000..1241dde18618a5a75b792974936677c88be9379f --- /dev/null +++ b/apps/dashboard/src/routes/pages/ResolveDidPage/index.tsx @@ -0,0 +1,47 @@ +import React, { useState } from "react"; +import { observer } from "mobx-react"; +import PageWithSidebar from "@dashboard/components/PageWithSidebar"; +import PageTitle from "@dashboard/components/PageTitle"; +import { Button, Input, Space } from "antd"; +import ResolveDidPageStore from "./ResolveDidPageStore"; +import { runInAction } from "mobx"; +import JsonDetails from "@dashboard/components/JsonDetails"; +import s from "./styles.module.scss"; + +const ResolveDidPage = observer(() => { + const [store] = useState(() => new ResolveDidPageStore()); + return ( + <PageWithSidebar> + <PageTitle>Resolve did</PageTitle> + <div> + <Space direction="horizontal"> + <Input + className={s.input} + placeholder="did:sov:WRfXPg8dantKVubE3HX8pw" + value={store.did} + onChange={(e) => { + runInAction(() => { + store.did = e.target.value; + }); + }} + /> + <Button + type="primary" + onClick={store.resolve} + loading={store.loading} + disabled={store.loading} + > + Resolve + </Button> + </Space> + </div> + <br /> + <div> + <h3>Resolved document</h3> + <JsonDetails object={store.resolvedData} /> + </div> + </PageWithSidebar> + ); +}); + +export default ResolveDidPage; diff --git a/apps/dashboard/src/routes/pages/ResolveDidPage/styles.module.scss b/apps/dashboard/src/routes/pages/ResolveDidPage/styles.module.scss new file mode 100644 index 0000000000000000000000000000000000000000..7b67bbd5690e42810ca78feb5176578b873fbaaa --- /dev/null +++ b/apps/dashboard/src/routes/pages/ResolveDidPage/styles.module.scss @@ -0,0 +1,3 @@ +.input { + width: 400px; +} diff --git a/apps/dashboard/src/routes/pages/SchemaListPage/SchemaListPageStore.ts b/apps/dashboard/src/routes/pages/SchemaListPage/SchemaListPageStore.ts new file mode 100644 index 0000000000000000000000000000000000000000..cf3923006ff8b67d4f8a1f28db9126d4390476e1 --- /dev/null +++ b/apps/dashboard/src/routes/pages/SchemaListPage/SchemaListPageStore.ts @@ -0,0 +1,29 @@ +import { makeAutoObservable, runInAction } from "mobx"; +import api, { SchemaRecordDto } from "@dashboard/engine-api"; +import displayError from "@dashboard/utils/displayError"; + +class SchemaListPageStore { + public loading = false; + public list: SchemaRecordDto[] = []; + constructor() { + makeAutoObservable(this); + } + + public async loadAll() { + runInAction(() => (this.loading = true)); + try { + const schemas = await api.fetchSchemas(); + runInAction(() => { + this.list = schemas; + this.loading = false; + }); + } catch (e: unknown) { + displayError(e); + runInAction(() => (this.loading = false)); + } + } +} + +export type { SchemaListPageStore }; + +export default SchemaListPageStore; diff --git a/apps/dashboard/src/routes/pages/SchemaListPage/index.tsx b/apps/dashboard/src/routes/pages/SchemaListPage/index.tsx new file mode 100644 index 0000000000000000000000000000000000000000..e5c3468bb109637662788d332eee766940d6d5c8 --- /dev/null +++ b/apps/dashboard/src/routes/pages/SchemaListPage/index.tsx @@ -0,0 +1,45 @@ +import React, { useEffect, useState } from "react"; +import { observer } from "mobx-react"; +import { Button, Spin } from "antd"; +import SchemaListPageStore from "./SchemaListPageStore"; +import SchemaItem from "@dashboard/components/SchemaItem"; +import modalStore from "@dashboard/store/modalStore"; +import NoRecordsMessage from "@dashboard/components/NoRecordsMessage"; +import PageWithSidebar from "@dashboard/components/PageWithSidebar"; +import PageTitle from "@dashboard/components/PageTitle"; + +const ConnectionListPage = observer(() => { + const [store] = useState(() => new SchemaListPageStore()); + + useEffect(() => { + store.loadAll(); + }, [store]); + return ( + <PageWithSidebar> + <h2>Actions</h2> + <div> + <Button + onClick={() => { + modalStore.openNewSchemaDialog({ + onSchemaCreated: () => { + store.loadAll(); + }, + }); + }} + > + Create new schema + </Button> + </div> + <PageTitle>Schemas</PageTitle> + <div> + {store.list.map((p) => ( + <SchemaItem key={p.id} item={p} /> + ))} + {!store.loading && store.list.length === 0 && <NoRecordsMessage />} + {store.loading && <Spin />} + </div> + </PageWithSidebar> + ); +}); + +export default ConnectionListPage; diff --git a/apps/dashboard/src/routes/pages/SchemaListPage/styles.module.scss b/apps/dashboard/src/routes/pages/SchemaListPage/styles.module.scss new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/apps/dashboard/src/routes/pages/VcmSelfIssuePage/VcmSelfIssuePageStore.ts b/apps/dashboard/src/routes/pages/VcmSelfIssuePage/VcmSelfIssuePageStore.ts new file mode 100644 index 0000000000000000000000000000000000000000..ce980f4de03e765ebd2b17fa44a62922acd69c9b --- /dev/null +++ b/apps/dashboard/src/routes/pages/VcmSelfIssuePage/VcmSelfIssuePageStore.ts @@ -0,0 +1,33 @@ +import { makeAutoObservable, runInAction } from "mobx"; +import api, { SchemaRecordDto } from "@dashboard/engine-api"; +import displayError from "@dashboard/utils/displayError"; + +class VcmSelfIssuePageStore { + public loading = false; + public schemas: SchemaRecordDto[] = []; + public selectedSchemaId: string | null = null; + public schemaUrl = ""; + + constructor() { + makeAutoObservable(this); + } + + public async initialize() { + runInAction(() => (this.loading = true)); + try { + const schemas = await api.fetchSchemas(); + + runInAction(() => { + this.schemas = schemas; + this.loading = false; + }); + } catch (e: unknown) { + displayError(e); + runInAction(() => (this.loading = false)); + } + } +} + +export type { VcmSelfIssuePageStore }; + +export default VcmSelfIssuePageStore; diff --git a/apps/dashboard/src/routes/pages/VcmSelfIssuePage/index.tsx b/apps/dashboard/src/routes/pages/VcmSelfIssuePage/index.tsx new file mode 100644 index 0000000000000000000000000000000000000000..8d5beeacf61e4702728637023eac41ae09b3dc4d --- /dev/null +++ b/apps/dashboard/src/routes/pages/VcmSelfIssuePage/index.tsx @@ -0,0 +1,60 @@ +import React, { useEffect, useState } from "react"; +import { observer } from "mobx-react"; +import VcmSelfIssuePageStore from "./VcmSelfIssuePageStore"; +import { QRCode, Select, Spin } from "antd"; +import { runInAction } from "mobx"; +import PageWithSidebar from "@dashboard/components/PageWithSidebar"; +import PageTitle from "@dashboard/components/PageTitle"; + +const VcmSelfIssuePage = observer(() => { + const [store] = useState(() => new VcmSelfIssuePageStore()); + useEffect(() => { + store.initialize(); + }, [store]); + + let url = ""; + let json = {}; + if (store.selectedSchemaId) { + json = { + "@type": "https://vereign.com/issue-credential/1.0/self-issue", + schemaId: store.selectedSchemaId, + }; + url = btoa(JSON.stringify(json)); + } + + return ( + <PageWithSidebar> + <PageTitle>VCM: self-issued credentials</PageTitle> + {store.loading && ( + <div> + <Spin /> + Loading... + </div> + )} + <p>Scan this QR code in order to create self-issued credentials</p> + <div> + <Select + placeholder="Select schema" + value={store.selectedSchemaId} + onChange={(val) => { + runInAction(() => { + store.selectedSchemaId = val; + }); + }} + options={store.schemas.map((p) => ({ + value: p.id, + label: p.name, + }))} + /> + </div> + {url && <QRCode value={url} size={256} />} + <br /> + <div>Technical information:</div> + <div> + <pre>{JSON.stringify(json || {}, null, 2)}</pre> + </div> + </PageWithSidebar> + ); +}); + +export default VcmSelfIssuePage; diff --git a/apps/dashboard/src/routes/pages/WelcomePage/index.tsx b/apps/dashboard/src/routes/pages/WelcomePage/index.tsx new file mode 100644 index 0000000000000000000000000000000000000000..b3f0448daa2b684318d13453f9612da7fc287473 --- /dev/null +++ b/apps/dashboard/src/routes/pages/WelcomePage/index.tsx @@ -0,0 +1,13 @@ +import React from "react"; +import Page from "@dashboard/components/Page"; +import VaultHeader from "@dashboard/components/VaultHeader"; + +const WelcomePage = () => { + return ( + <Page> + <VaultHeader /> + </Page> + ); +}; + +export default WelcomePage; diff --git a/apps/dashboard/src/routes/pages/WelcomePage/styles.module.scss b/apps/dashboard/src/routes/pages/WelcomePage/styles.module.scss new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/apps/dashboard/src/store/modalStore.tsx b/apps/dashboard/src/store/modalStore.tsx new file mode 100644 index 0000000000000000000000000000000000000000..e77cd3d52ce21c1755c32bcbc5292e2931bf7e55 --- /dev/null +++ b/apps/dashboard/src/store/modalStore.tsx @@ -0,0 +1,99 @@ +import React from "react"; +import { action, makeAutoObservable } from "mobx"; +import { v4 as uuidv4 } from "uuid"; +import Modal, { FcProps } from "@dashboard/components/Modal"; +import ConfirmDialog, { + ConfirmDialogProps, +} from "@dashboard/modals/ConfirmDialog"; +import ReceiveInvitationDialog, { + ReceiveInvitationDialogProps, +} from "@dashboard/modals/ReceiveInvitationDialog"; +import NewCredentialDefDialog, { + NewCredentialDefDialogProps, +} from "@dashboard/modals/NewCredentialDefDialog"; +import NewSchemaDialog, { + NewSchemaDialogProps, +} from "@dashboard/modals/NewSchemaDialog"; +import ViewJsonDialog, { + ViewJsonDialogProps, +} from "@dashboard/modals/ViewJsonDialog"; +import OfferCredentialDialog, { + OfferCredentialDialogProps, +} from "@dashboard/modals/OfferCredentialDialog"; +import RequestProofDialog, { + RequestProofDialogProps, +} from "@dashboard/modals/RequestProofDialog"; +import ViewConnectionlessProofRequest, { + ViewConnectionlessProofRequestProps, +} from "@dashboard/modals/ViewConnectionlessProofRequest"; +import AcceptConnectionlessProofRequestDialog, { + AcceptConnectionlessProofRequestDialogProps, +} from "@dashboard/modals/AcceptConnectionlessProofRequestDialog"; +import ViewConnectionlessCredentialOffer, { + ViewConnectionlessCredentialOfferProps, +} from "@dashboard/modals/ViewConnectionlessCredentialOffer"; +import AcceptConnectionlessCredentialOfferDialog, { + AcceptConnectionlessCredentialOfferDialogProps, +} from "@dashboard/modals/AcceptConnectionlessCredentialOfferDialog"; + +class ModalStore { + public modals: { id: string; modal: unknown }[] = []; + + constructor() { + makeAutoObservable(this); + } + + private removeModal = action((id: string) => { + const modalIndex = this.modals.findIndex((p) => p.id === id); + if (modalIndex >= 0) { + this.modals.splice(modalIndex, 1); + } + }); + + protected open<TData>(Component: React.FC<FcProps<TData>>, data: TData) { + const id = uuidv4(); + this.modals.push({ + id: id, + modal: ( + <Modal + Component={Component} + onClose={() => { + this.removeModal(id); + }} + data={data} + /> + ), + }); + } + + public openConfirmDialog = (data: ConfirmDialogProps) => + this.open(ConfirmDialog, data); + public openReceiveInvitationDialog = (data: ReceiveInvitationDialogProps) => + this.open(ReceiveInvitationDialog, data); + public openNewCredentialDefDialog = (data: NewCredentialDefDialogProps) => + this.open(NewCredentialDefDialog, data); + public openNewSchemaDialog = (data: NewSchemaDialogProps) => + this.open(NewSchemaDialog, data); + public openViewJsonDialog = (data: ViewJsonDialogProps) => + this.open(ViewJsonDialog, data); + public openOfferCredentialDialog = (data: OfferCredentialDialogProps) => + this.open(OfferCredentialDialog, data); + public openRequestProofDialog = (data: RequestProofDialogProps) => + this.open(RequestProofDialog, data); + public openViewConnectionlessProofRequest = ( + data: ViewConnectionlessProofRequestProps, + ) => this.open(ViewConnectionlessProofRequest, data); + public openAcceptConnectionlessProofRequestDialog = ( + data: AcceptConnectionlessProofRequestDialogProps, + ) => this.open(AcceptConnectionlessProofRequestDialog, data); + public openViewConnectionlessCredentialOffer = ( + data: ViewConnectionlessCredentialOfferProps, + ) => this.open(ViewConnectionlessCredentialOffer, data); + public openAcceptConnectionlessCredentialOfferDialog = ( + data: AcceptConnectionlessCredentialOfferDialogProps, + ) => this.open(AcceptConnectionlessCredentialOfferDialog, data); +} + +export type { ModalStore }; + +export default new ModalStore(); diff --git a/apps/dashboard/src/styles.scss b/apps/dashboard/src/styles.scss new file mode 100644 index 0000000000000000000000000000000000000000..01298ac6411a2fbcee84737c2484d4bbbcac15dc --- /dev/null +++ b/apps/dashboard/src/styles.scss @@ -0,0 +1,35 @@ +/* You can add global styles to this file, and also import other style files */ + +body { + font-family: "Roboto", "Helvetica", "Arial", sans-serif; +} + +a { + color: #00b3ca; +} +a:active, a:hover { + color: #00bbd4; +} + +ul { + list-style-type: none; + padding-inline-start: 12px; + + li { + position: relative; + padding-left: 26px; + margin: 12px 0; + + &::before { + content: ''; + position: absolute; + left: 0; + top: 50%; + transform: translateY(-50%); + width: 12px; + height: 12px; + background-color: #00b3ca; + border-radius: 50%; + } + } +} diff --git a/apps/dashboard/src/utils/displayError.tsx b/apps/dashboard/src/utils/displayError.tsx new file mode 100644 index 0000000000000000000000000000000000000000..7f1e87d1809c34e0e5d6237fd5f02a503a346f8a --- /dev/null +++ b/apps/dashboard/src/utils/displayError.tsx @@ -0,0 +1,56 @@ +import { ApiException } from "@dashboard/engine-api"; +import { toast } from "react-toastify"; + +function combine(msg1: undefined | string, msg2: string | string[]) { + let secondMsg = []; + if (Array.isArray(msg2)) { + secondMsg = msg2; + } else { + secondMsg.push(msg2); + } + return ( + <div> + {msg1} + {secondMsg.map((p, index) => ( + <> + {index === 0 && !!msg1 && <br />} + {index > 0 && <br />} + {p} + </> + ))} + </div> + ); +} + +const displayError = (e: unknown, msg?: string) => { + console.error(e); + + if (e instanceof ApiException) { + let serverResponse: { + message: string | string[]; + statusCode: number; + } | null; + try { + serverResponse = JSON.parse(e.response); + } catch (parseError: unknown) { + console.error("Can not parse the server response"); + toast.error(combine(msg, e.message)); + return; + } + + if (serverResponse && serverResponse.message) { + toast.error(combine(msg, serverResponse.message)); + } else { + toast.error(combine(msg, e.message)); + } + return; + } + + if (e instanceof Error) { + toast.error(combine(msg, e.message)); + } else { + toast.error(combine(msg, "Unknown error")); + } +}; + +export default displayError; diff --git a/apps/dashboard/src/utils/getConfig.ts b/apps/dashboard/src/utils/getConfig.ts new file mode 100644 index 0000000000000000000000000000000000000000..835d16a740797157eb4f602560657a4e6cee97fc --- /dev/null +++ b/apps/dashboard/src/utils/getConfig.ts @@ -0,0 +1,20 @@ +export interface Config { + OCMENGINE_HTTP_URL: string; + OCMENGINE_WS_URL: string; + TSA_URL: string; + BASE_PATH: string; +} + +const lsHttp = localStorage.getItem("OCMENGINE_HTTP_URL"); +const lsWs = localStorage.getItem("OCMENGINE_WS_URL"); +const tsaHttp = localStorage.getItem("TSA_URL"); +export const getConfig = (): Config => { + return { + OCMENGINE_HTTP_URL: lsHttp || window.OCMENGINE_HTTP_URL, + OCMENGINE_WS_URL: lsWs || window.OCMENGINE_WS_URL, + TSA_URL: tsaHttp || window.TSA_URL, + BASE_PATH: window.BASE_PATH, + }; +}; + +export default getConfig; diff --git a/apps/dashboard/tsconfig.app.json b/apps/dashboard/tsconfig.app.json new file mode 100644 index 0000000000000000000000000000000000000000..4ec1130ec89620af3f96a4d3e94a3b0908ee7152 --- /dev/null +++ b/apps/dashboard/tsconfig.app.json @@ -0,0 +1,30 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "outDir": "../../dist/out-tsc", + "types": [ + "node", + + "@nx/react/typings/cssmodule.d.ts", + "@nx/react/typings/image.d.ts", + "./cssmodule.d.ts", + "./types.d.ts", + ] + }, + "files": [ + "./cssmodule.d.ts", + "./types.d.ts" + ], + "exclude": [ + "jest.config.ts", + "src/**/*.spec.ts", + "src/**/*.test.ts", + "src/**/*.spec.tsx", + "src/**/*.test.tsx", + "src/**/*.spec.js", + "src/**/*.test.js", + "src/**/*.spec.jsx", + "src/**/*.test.jsx" + ], + "include": ["src/**/*.js", "src/**/*.jsx", "src/**/*.ts", "src/**/*.tsx"] +} diff --git a/apps/dashboard/tsconfig.json b/apps/dashboard/tsconfig.json new file mode 100644 index 0000000000000000000000000000000000000000..21b507107211a7baed560e0880715d95ecba6bf0 --- /dev/null +++ b/apps/dashboard/tsconfig.json @@ -0,0 +1,20 @@ +{ + "compilerOptions": { + "jsx": "react-jsx", + "allowJs": false, + "esModuleInterop": false, + "allowSyntheticDefaultImports": true, + "strict": true + }, + "files": [], + "include": [], + "references": [ + { + "path": "./tsconfig.app.json" + }, + { + "path": "./tsconfig.spec.json" + } + ], + "extends": "../../tsconfig.base.json" +} diff --git a/apps/dashboard/tsconfig.spec.json b/apps/dashboard/tsconfig.spec.json new file mode 100644 index 0000000000000000000000000000000000000000..6fc72887d4b86223655f591f896b0874cc552772 --- /dev/null +++ b/apps/dashboard/tsconfig.spec.json @@ -0,0 +1,21 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "outDir": "../../dist/out-tsc", + "module": "commonjs", + "types": ["jest", "node"] + }, + "include": [ + "jest.config.ts", + "src/**/*.test.ts", + "src/**/*.spec.ts", + "src/**/*.test.tsx", + "src/**/*.spec.tsx", + "src/**/*.test.js", + "src/**/*.spec.js", + "src/**/*.test.jsx", + "src/**/*.spec.jsx", + "src/**/*.d.ts" + ], + "types": ["@nx/react/typings/cssmodule.d.ts", "@nx/react/typings/image.d.ts"] +} diff --git a/apps/dashboard/types.d.ts b/apps/dashboard/types.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..fca3e2adc81158765743d8538ac4ec7efa47b17b --- /dev/null +++ b/apps/dashboard/types.d.ts @@ -0,0 +1,9 @@ +export {}; +declare global { + interface Window { + BASE_PATH: string; + OCMENGINE_HTTP_URL: string; + OCMENGINE_WS_URL: string; + TSA_URL: string; + } +} diff --git a/apps/dashboard/webpack.config.js b/apps/dashboard/webpack.config.js new file mode 100644 index 0000000000000000000000000000000000000000..c5605d22b3433342d84b962a065870058ea8355b --- /dev/null +++ b/apps/dashboard/webpack.config.js @@ -0,0 +1,9 @@ +const { composePlugins, withNx } = require("@nx/webpack"); +const { withReact } = require("@nx/react"); + +// Nx plugins for webpack +module.exports = composePlugins(withNx(), withReact(), (config) => { + // Update the webpack config as needed here. + // e.g. `config.plugins.push(new MyPlugin())` + return config; +}); diff --git a/client-generator.sh b/client-generator.sh new file mode 100755 index 0000000000000000000000000000000000000000..c6e58c6710161a3bae4850bb1ec73deaf6a54c20 --- /dev/null +++ b/client-generator.sh @@ -0,0 +1,45 @@ +#!/bin/bash +set -e + +# This function represents an action for the 'tsa' command. +handle_tsa() { + echo "Generating TSA not implemented" + exit 1 + echo "Generating ts client for tsa..." + dotnet run --project server/TsClientGenerator ./login-code/gen/http/openapi3.json ./ocm-engine/libs/dashboard/tsa-api/src/tsa_gen.ts + + echo "patching tsa client..." + sed -i "" 's/login#/login/g' ./ocm-engine/libs/dashboard/tsa-api/src/tsa_gen.ts + sed -i "" 's/Login#/Login/g' ./ocm-engine/libs/dashboard/tsa-api/src/tsa_gen.ts + sed -i "" 's/health#/health/g' ./ocm-engine/libs/dashboard/tsa-api/src/tsa_gen.ts + sed -i "" 's/Health#/Health/g' ./ocm-engine/libs/dashboard/tsa-api/src/tsa_gen.ts +} + +handle_ocmengine_gen() { + echo "Generating ts client for agent..." + docker build -t ts-client-generator -f ./libs/ts-client-generator/Dockerfile . + docker run --rm -v ./libs/clients/src/frontend:/app/generated ts-client-generator +} + +# Check that exactly one argument is provided +if [ "$#" -ne 1 ]; then + echo "Usage: $0 {ocmengine|tsa}" + exit 1 +fi + +# Perform an action based on the argument. +case "$1" in + tsa) + handle_tsa + ;; + ocmengine) + handle_ocmengine_gen + ;; + *) + echo "Unknown command: $1" + echo "Usage: $0 {ocmengine|tsa}" + exit 2 + ;; +esac + +exit 0 diff --git a/gateway-swagger.json b/gateway-swagger.json index cc61721c69e1172f93c3fb0236b5c4b0f7fd1fa8..043dd7c1f3be6fd656229b0bb3dbdf3fc7c68240 100644 --- a/gateway-swagger.json +++ b/gateway-swagger.json @@ -1451,14 +1451,6 @@ "Credentials Proof" ], "parameters": [ - { - "name": "isVerified", - "required": false, - "in": "query", - "schema": { - "type": "boolean" - } - }, { "name": "states", "required": false, @@ -2130,9 +2122,6 @@ "ProofFilterDto": { "type": "object", "properties": { - "isVerified": { - "type": "boolean" - }, "states": { "type": "array", "items": { @@ -2497,19 +2486,7 @@ "type": "object", "properties": {} }, - "ConnectionNotFoundError": { - "type": "object", - "properties": {} - }, - "CredentialNotFoundError": { - "type": "object", - "properties": {} - }, - "CredentialDefinitionNotFoundError": { - "type": "object", - "properties": {} - }, - "ProofNotFoundError": { + "EntityNotFoundError": { "type": "object", "properties": {} }, @@ -2528,10 +2505,6 @@ "ConnectionUnsupportedTypeError": { "type": "object", "properties": {} - }, - "SchemaNotFoundError": { - "type": "object", - "properties": {} } } } diff --git a/libs/askar/src/askar/agent.service.ts b/libs/askar/src/askar/agent.service.ts index 11605cd6e83caf8db1056c2a6683da82df247e23..464e9c4e153f6299c03af53963a48d16236df730 100644 --- a/libs/askar/src/askar/agent.service.ts +++ b/libs/askar/src/askar/agent.service.ts @@ -92,6 +92,7 @@ export class AgentService { response.invitationDid = connectionRecord.invitationDid; response.outOfBandId = connectionRecord.outOfBandId; response.createdAt = connectionRecord.createdAt; + response.updatedAt = connectionRecord.updatedAt; response.imageUrl = connectionRecord.imageUrl; return response; @@ -119,12 +120,20 @@ export class AgentService { query.push(roleQuery); } - const invitations = await this.askar.agent.oob.findAllByQuery({ + let invitations = await this.askar.agent.oob.findAllByQuery({ $and: query, }); + invitations = invitations.sort( + (a, b) => + new Date(b.createdAt).getTime() - new Date(a.createdAt).getTime(), + ); const invitationsResponse = invitations.map((invitation) => { const response = new CreateInvitationResponseDto(); + response.invitationUrl = invitation.outOfBandInvitation.toUrl({ + domain: this.askar.agentConfig.agentPeerAddress, + }); + response.shortInvitationUrl = `${this.askar.agentConfig.agentPeerAddress}/invitations/${invitation.outOfBandInvitation.id}`; response.outOfBandId = invitation.id; response.createdAt = invitation.createdAt; response.updatedAt = invitation.updatedAt; @@ -140,6 +149,10 @@ export class AgentService { const invitation = await this.askar.agent.oob.getById(oobId); const response = new CreateInvitationResponseDto(); + response.invitationUrl = invitation.outOfBandInvitation.toUrl({ + domain: this.askar.agentConfig.agentPeerAddress, + }); + response.shortInvitationUrl = `${this.askar.agentConfig.agentPeerAddress}/invitations/${invitation.outOfBandInvitation.id}`; response.outOfBandId = invitation.id; response.createdAt = invitation.createdAt; response.updatedAt = invitation.updatedAt; @@ -149,7 +162,11 @@ export class AgentService { }; async fetchConnections(): Promise<ConnectionRecordDto[]> { - const agentResponse = await this.askar.agent.connections.getAll(); + //TODO: no ordering in findAllByQuery + const agentResponse = (await this.askar.agent.connections.getAll()).sort( + (a, b) => + new Date(b.createdAt).getTime() - new Date(a.createdAt).getTime(), + ); const connectionArray = agentResponse.map((singleConnectionRes) => { const connectionResponse = new ConnectionRecordDto(); @@ -161,6 +178,7 @@ export class AgentService { connectionResponse.invitationDid = singleConnectionRes.invitationDid; connectionResponse.outOfBandId = singleConnectionRes.outOfBandId; connectionResponse.createdAt = singleConnectionRes.createdAt; + connectionResponse.updatedAt = singleConnectionRes.updatedAt; connectionResponse.imageUrl = singleConnectionRes.imageUrl; return connectionResponse; @@ -183,6 +201,7 @@ export class AgentService { connectionResponse.invitationDid = singleConnectionRes.invitationDid; connectionResponse.outOfBandId = singleConnectionRes.outOfBandId; connectionResponse.createdAt = singleConnectionRes.createdAt; + connectionResponse.updatedAt = singleConnectionRes.updatedAt; connectionResponse.imageUrl = singleConnectionRes.imageUrl; return connectionResponse; @@ -207,6 +226,7 @@ export class AgentService { connectionResponse.invitationDid = agentResponse.invitationDid; connectionResponse.outOfBandId = agentResponse.outOfBandId; connectionResponse.createdAt = agentResponse.createdAt; + connectionResponse.updatedAt = agentResponse.updatedAt; connectionResponse.imageUrl = agentResponse.imageUrl; return connectionResponse; @@ -217,12 +237,18 @@ export class AgentService { }; fetchSchemas = async (): Promise<SchemaRecordDto[]> => { - const agentResponse = + let schemaRecords = await this.askar.agent.modules.anoncreds.getCreatedSchemas({}); + schemaRecords = schemaRecords.sort( + (a, b) => + new Date(b.createdAt).getTime() - new Date(a.createdAt).getTime(), + ); - const schemaResponses = agentResponse.map((singleSchemaRes) => { + const schemaResponses = schemaRecords.map((singleSchemaRes) => { const schemaResponse = new SchemaRecordDto(); schemaResponse.id = singleSchemaRes.schemaId; + schemaResponse.createdAt = singleSchemaRes.createdAt; + schemaResponse.updatedAt = singleSchemaRes.updatedAt; schemaResponse.name = singleSchemaRes.schema.name; schemaResponse.attributes = singleSchemaRes.schema.attrNames; schemaResponse.version = singleSchemaRes.schema.version; @@ -286,15 +312,21 @@ export class AgentService { }; fetchCredentialDefinitions = async (): Promise<CreddefRecordDto[]> => { - const credentialDefinitions = + let credentialDefinitions = await this.askar.agent.modules.anoncreds.getCreatedCredentialDefinitions( {}, ); + credentialDefinitions = credentialDefinitions.sort( + (a, b) => + new Date(b.createdAt).getTime() - new Date(a.createdAt).getTime(), + ); const response: Array<CreddefRecordDto> = []; for (const credDef of credentialDefinitions) { const cd = new CreddefRecordDto(); cd.id = credDef.credentialDefinitionId; + cd.createdAt = credDef.createdAt; + cd.updatedAt = credDef.updatedAt; cd.schemaId = credDef.credentialDefinition.schemaId; cd.issuerId = credDef.credentialDefinition.issuerId; cd.tag = credDef.credentialDefinition.tag; @@ -319,6 +351,8 @@ export class AgentService { const cd = new CreddefRecordDto(); cd.id = credDef.credentialDefinitionId; + cd.createdAt = credDef.createdAt; + cd.updatedAt = credDef.updatedAt; cd.schemaId = credDef.credentialDefinition.schemaId; cd.issuerId = credDef.credentialDefinition.issuerId; cd.tag = credDef.credentialDefinition.tag; @@ -537,9 +571,13 @@ export class AgentService { query.push(connectionQuery); } - const credentials = await this.askar.agent.credentials.findAllByQuery({ + let credentials = await this.askar.agent.credentials.findAllByQuery({ $and: query, }); + credentials = credentials.sort( + (a, b) => + new Date(b.createdAt).getTime() - new Date(a.createdAt).getTime(), + ); const response: CredentialRecordDto[] = []; for (const offer of credentials) { @@ -713,9 +751,13 @@ export class AgentService { query.push(connectionQuery); } - const proofs = await this.askar.agent.proofs.findAllByQuery({ + let proofs = await this.askar.agent.proofs.findAllByQuery({ $and: query, }); + proofs = proofs.sort( + (a, b) => + new Date(b.createdAt).getTime() - new Date(a.createdAt).getTime(), + ); const response: ProofRecordDto[] = []; for (const proof of proofs) { @@ -912,9 +954,13 @@ export class AgentService { query.push(connectionQuery); } - const messages = await this.askar.agent.basicMessages.findAllByQuery({ + let messages = await this.askar.agent.basicMessages.findAllByQuery({ $and: query, }); + messages = messages.sort( + (a, b) => + new Date(b.createdAt).getTime() - new Date(a.createdAt).getTime(), + ); const connectionIds = messages.map((message) => message.connectionId); diff --git a/libs/clients/project.json b/libs/clients/project.json index ee70f779ac7cd4aaffc4c07d9805c7fb9d1009f3..c34a5828c33a86c861c9c6c7682751771b8df8be 100644 --- a/libs/clients/project.json +++ b/libs/clients/project.json @@ -11,7 +11,7 @@ "outputPath": "dist/libs/clients", "tsConfig": "libs/clients/tsconfig.lib.json", "packageJson": "libs/clients/package.json", - "main": "libs/clients/src/index.ts", + "main": "libs/clients/src/backend.ts", "assets": ["libs/clients/*.md"] } }, diff --git a/libs/clients/src/backend.ts b/libs/clients/src/backend.ts new file mode 100644 index 0000000000000000000000000000000000000000..59ca4687b0a76258e5e30905222c15c79a14da70 --- /dev/null +++ b/libs/clients/src/backend.ts @@ -0,0 +1,4 @@ +export * from "./backend/gateway.client"; +export * from "./backend/connection.manager.client"; +export * from "./backend/attestation.manager.client"; +export * from "./backend/proof.manager.client"; diff --git a/libs/clients/src/lib/attestation.manager.client.ts b/libs/clients/src/backend/attestation.manager.client.ts similarity index 100% rename from libs/clients/src/lib/attestation.manager.client.ts rename to libs/clients/src/backend/attestation.manager.client.ts diff --git a/libs/clients/src/lib/connection.manager.client.ts b/libs/clients/src/backend/connection.manager.client.ts similarity index 100% rename from libs/clients/src/lib/connection.manager.client.ts rename to libs/clients/src/backend/connection.manager.client.ts diff --git a/libs/clients/src/lib/gateway.client.ts b/libs/clients/src/backend/gateway.client.ts similarity index 100% rename from libs/clients/src/lib/gateway.client.ts rename to libs/clients/src/backend/gateway.client.ts diff --git a/libs/clients/src/lib/proof.manager.client.ts b/libs/clients/src/backend/proof.manager.client.ts similarity index 100% rename from libs/clients/src/lib/proof.manager.client.ts rename to libs/clients/src/backend/proof.manager.client.ts diff --git a/libs/clients/src/frontend/agent_gen.ts b/libs/clients/src/frontend/agent_gen.ts new file mode 100644 index 0000000000000000000000000000000000000000..af5ab0b7fbadc4cf550a3954ffb7be0a7dac78a1 --- /dev/null +++ b/libs/clients/src/frontend/agent_gen.ts @@ -0,0 +1,1647 @@ +//---------------------- +// <auto-generated> +// Generated using the NSwag toolchain v13.20.0.0 (NJsonSchema v10.9.0.0 (Newtonsoft.Json v10.0.0.0)) (http://NSwag.org) +// </auto-generated> +//---------------------- + +/* tslint:disable */ +/* eslint-disable */ +// ReSharper disable InconsistentNaming + +export class RestControllerClient { + private http: { fetch(url: RequestInfo, init?: RequestInit): Promise<Response> }; + private baseUrl: string; + public jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined; + + constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise<Response> }) { + this.http = http ? http : window as any; + this.baseUrl = baseUrl !== undefined && baseUrl !== null ? baseUrl : ""; + } + + fetchInvitations(states: States[] | undefined, roles: Roles[] | undefined): Promise<CreateInvitationResponseDto[]> { + let url_ = this.baseUrl + "/api/v1/invitations?"; + if (states === null) + throw new Error("The parameter 'states' cannot be null."); + else if (states !== undefined) + states && states.forEach(item => { url_ += "states=" + encodeURIComponent("" + item) + "&"; }); + if (roles === null) + throw new Error("The parameter 'roles' cannot be null."); + else if (roles !== undefined) + roles && roles.forEach(item => { url_ += "roles=" + encodeURIComponent("" + item) + "&"; }); + url_ = url_.replace(/[?&]$/, ""); + + let options_: RequestInit = { + method: "GET", + headers: { + "Accept": "application/json" + } + }; + + return this.http.fetch(url_, options_).then((_response: Response) => { + return this.processFetchInvitations(_response); + }); + } + + protected processFetchInvitations(response: Response): Promise<CreateInvitationResponseDto[]> { + const status = response.status; + let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); }; + if (status === 200) { + return response.text().then((_responseText) => { + let result200: any = null; + result200 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver) as CreateInvitationResponseDto[]; + return result200; + }); + } else if (status !== 200 && status !== 204) { + return response.text().then((_responseText) => { + return throwException("An unexpected server error occurred.", status, _responseText, _headers); + }); + } + return Promise.resolve<CreateInvitationResponseDto[]>(null as any); + } + + createInvitation(body: CreateInvitationRequestDto): Promise<CreateInvitationResponseDto> { + let url_ = this.baseUrl + "/api/v1/invitations"; + url_ = url_.replace(/[?&]$/, ""); + + const content_ = JSON.stringify(body); + + let options_: RequestInit = { + body: content_, + method: "POST", + headers: { + "Content-Type": "application/json", + "Accept": "application/json" + } + }; + + return this.http.fetch(url_, options_).then((_response: Response) => { + return this.processCreateInvitation(_response); + }); + } + + protected processCreateInvitation(response: Response): Promise<CreateInvitationResponseDto> { + const status = response.status; + let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); }; + if (status === 201) { + return response.text().then((_responseText) => { + let result201: any = null; + result201 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver) as CreateInvitationResponseDto; + return result201; + }); + } else if (status !== 200 && status !== 204) { + return response.text().then((_responseText) => { + return throwException("An unexpected server error occurred.", status, _responseText, _headers); + }); + } + return Promise.resolve<CreateInvitationResponseDto>(null as any); + } + + getInvitationById(id: string): Promise<CreateInvitationResponseDto> { + let url_ = this.baseUrl + "/api/v1/invitations/{id}"; + if (id === undefined || id === null) + throw new Error("The parameter 'id' must be defined."); + url_ = url_.replace("{id}", encodeURIComponent("" + id)); + url_ = url_.replace(/[?&]$/, ""); + + let options_: RequestInit = { + method: "GET", + headers: { + "Accept": "application/json" + } + }; + + return this.http.fetch(url_, options_).then((_response: Response) => { + return this.processGetInvitationById(_response); + }); + } + + protected processGetInvitationById(response: Response): Promise<CreateInvitationResponseDto> { + const status = response.status; + let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); }; + if (status === 200) { + return response.text().then((_responseText) => { + let result200: any = null; + result200 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver) as CreateInvitationResponseDto; + return result200; + }); + } else if (status !== 200 && status !== 204) { + return response.text().then((_responseText) => { + return throwException("An unexpected server error occurred.", status, _responseText, _headers); + }); + } + return Promise.resolve<CreateInvitationResponseDto>(null as any); + } + + deleteInvitationById(id: string): Promise<void> { + let url_ = this.baseUrl + "/api/v1/invitations/{id}"; + if (id === undefined || id === null) + throw new Error("The parameter 'id' must be defined."); + url_ = url_.replace("{id}", encodeURIComponent("" + id)); + url_ = url_.replace(/[?&]$/, ""); + + let options_: RequestInit = { + method: "DELETE", + headers: { + } + }; + + return this.http.fetch(url_, options_).then((_response: Response) => { + return this.processDeleteInvitationById(_response); + }); + } + + protected processDeleteInvitationById(response: Response): Promise<void> { + const status = response.status; + let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); }; + if (status === 200) { + return response.text().then((_responseText) => { + return; + }); + } else if (status !== 200 && status !== 204) { + return response.text().then((_responseText) => { + return throwException("An unexpected server error occurred.", status, _responseText, _headers); + }); + } + return Promise.resolve<void>(null as any); + } + + acceptInvitation(body: AcceptInvitationRequestDto): Promise<ConnectionRecordDto> { + let url_ = this.baseUrl + "/api/v1/invitations/accept"; + url_ = url_.replace(/[?&]$/, ""); + + const content_ = JSON.stringify(body); + + let options_: RequestInit = { + body: content_, + method: "POST", + headers: { + "Content-Type": "application/json", + "Accept": "application/json" + } + }; + + return this.http.fetch(url_, options_).then((_response: Response) => { + return this.processAcceptInvitation(_response); + }); + } + + protected processAcceptInvitation(response: Response): Promise<ConnectionRecordDto> { + const status = response.status; + let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); }; + if (status === 201) { + return response.text().then((_responseText) => { + let result201: any = null; + result201 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ConnectionRecordDto; + return result201; + }); + } else if (status !== 200 && status !== 204) { + return response.text().then((_responseText) => { + return throwException("An unexpected server error occurred.", status, _responseText, _headers); + }); + } + return Promise.resolve<ConnectionRecordDto>(null as any); + } + + fetchConnections(): Promise<ConnectionRecordDto[]> { + let url_ = this.baseUrl + "/api/v1/connections"; + url_ = url_.replace(/[?&]$/, ""); + + let options_: RequestInit = { + method: "GET", + headers: { + "Accept": "application/json" + } + }; + + return this.http.fetch(url_, options_).then((_response: Response) => { + return this.processFetchConnections(_response); + }); + } + + protected processFetchConnections(response: Response): Promise<ConnectionRecordDto[]> { + const status = response.status; + let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); }; + if (status === 200) { + return response.text().then((_responseText) => { + let result200: any = null; + result200 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ConnectionRecordDto[]; + return result200; + }); + } else if (status !== 200 && status !== 204) { + return response.text().then((_responseText) => { + return throwException("An unexpected server error occurred.", status, _responseText, _headers); + }); + } + return Promise.resolve<ConnectionRecordDto[]>(null as any); + } + + getConnectionById(id: string): Promise<ConnectionRecordDto> { + let url_ = this.baseUrl + "/api/v1/connections/{id}"; + if (id === undefined || id === null) + throw new Error("The parameter 'id' must be defined."); + url_ = url_.replace("{id}", encodeURIComponent("" + id)); + url_ = url_.replace(/[?&]$/, ""); + + let options_: RequestInit = { + method: "GET", + headers: { + "Accept": "application/json" + } + }; + + return this.http.fetch(url_, options_).then((_response: Response) => { + return this.processGetConnectionById(_response); + }); + } + + protected processGetConnectionById(response: Response): Promise<ConnectionRecordDto> { + const status = response.status; + let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); }; + if (status === 200) { + return response.text().then((_responseText) => { + let result200: any = null; + result200 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ConnectionRecordDto; + return result200; + }); + } else if (status !== 200 && status !== 204) { + return response.text().then((_responseText) => { + return throwException("An unexpected server error occurred.", status, _responseText, _headers); + }); + } + return Promise.resolve<ConnectionRecordDto>(null as any); + } + + deleteConnectionById(id: string): Promise<void> { + let url_ = this.baseUrl + "/api/v1/connections/{id}"; + if (id === undefined || id === null) + throw new Error("The parameter 'id' must be defined."); + url_ = url_.replace("{id}", encodeURIComponent("" + id)); + url_ = url_.replace(/[?&]$/, ""); + + let options_: RequestInit = { + method: "DELETE", + headers: { + } + }; + + return this.http.fetch(url_, options_).then((_response: Response) => { + return this.processDeleteConnectionById(_response); + }); + } + + protected processDeleteConnectionById(response: Response): Promise<void> { + const status = response.status; + let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); }; + if (status === 200) { + return response.text().then((_responseText) => { + return; + }); + } else if (status !== 200 && status !== 204) { + return response.text().then((_responseText) => { + return throwException("An unexpected server error occurred.", status, _responseText, _headers); + }); + } + return Promise.resolve<void>(null as any); + } + + getConnectionByOobId(id: string): Promise<ConnectionRecordDto[]> { + let url_ = this.baseUrl + "/api/v1/connections/oob/{id}"; + if (id === undefined || id === null) + throw new Error("The parameter 'id' must be defined."); + url_ = url_.replace("{id}", encodeURIComponent("" + id)); + url_ = url_.replace(/[?&]$/, ""); + + let options_: RequestInit = { + method: "GET", + headers: { + "Accept": "application/json" + } + }; + + return this.http.fetch(url_, options_).then((_response: Response) => { + return this.processGetConnectionByOobId(_response); + }); + } + + protected processGetConnectionByOobId(response: Response): Promise<ConnectionRecordDto[]> { + const status = response.status; + let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); }; + if (status === 200) { + return response.text().then((_responseText) => { + let result200: any = null; + result200 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ConnectionRecordDto[]; + return result200; + }); + } else if (status !== 200 && status !== 204) { + return response.text().then((_responseText) => { + return throwException("An unexpected server error occurred.", status, _responseText, _headers); + }); + } + return Promise.resolve<ConnectionRecordDto[]>(null as any); + } + + createSchema(body: CreateSchemaRequestDto): Promise<SchemaRecordDto> { + let url_ = this.baseUrl + "/api/v1/schemas"; + url_ = url_.replace(/[?&]$/, ""); + + const content_ = JSON.stringify(body); + + let options_: RequestInit = { + body: content_, + method: "POST", + headers: { + "Content-Type": "application/json", + "Accept": "application/json" + } + }; + + return this.http.fetch(url_, options_).then((_response: Response) => { + return this.processCreateSchema(_response); + }); + } + + protected processCreateSchema(response: Response): Promise<SchemaRecordDto> { + const status = response.status; + let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); }; + if (status === 201) { + return response.text().then((_responseText) => { + let result201: any = null; + result201 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver) as SchemaRecordDto; + return result201; + }); + } else if (status !== 200 && status !== 204) { + return response.text().then((_responseText) => { + return throwException("An unexpected server error occurred.", status, _responseText, _headers); + }); + } + return Promise.resolve<SchemaRecordDto>(null as any); + } + + fetchSchemas(): Promise<SchemaRecordDto[]> { + let url_ = this.baseUrl + "/api/v1/schemas"; + url_ = url_.replace(/[?&]$/, ""); + + let options_: RequestInit = { + method: "GET", + headers: { + "Accept": "application/json" + } + }; + + return this.http.fetch(url_, options_).then((_response: Response) => { + return this.processFetchSchemas(_response); + }); + } + + protected processFetchSchemas(response: Response): Promise<SchemaRecordDto[]> { + const status = response.status; + let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); }; + if (status === 200) { + return response.text().then((_responseText) => { + let result200: any = null; + result200 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver) as SchemaRecordDto[]; + return result200; + }); + } else if (status !== 200 && status !== 204) { + return response.text().then((_responseText) => { + return throwException("An unexpected server error occurred.", status, _responseText, _headers); + }); + } + return Promise.resolve<SchemaRecordDto[]>(null as any); + } + + getSchemaById(body: IdReqDto): Promise<SchemaRecordDto> { + let url_ = this.baseUrl + "/api/v1/schemas/get-by-id"; + url_ = url_.replace(/[?&]$/, ""); + + const content_ = JSON.stringify(body); + + let options_: RequestInit = { + body: content_, + method: "POST", + headers: { + "Content-Type": "application/json", + "Accept": "application/json" + } + }; + + return this.http.fetch(url_, options_).then((_response: Response) => { + return this.processGetSchemaById(_response); + }); + } + + protected processGetSchemaById(response: Response): Promise<SchemaRecordDto> { + const status = response.status; + let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); }; + if (status === 201) { + return response.text().then((_responseText) => { + let result201: any = null; + result201 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver) as SchemaRecordDto; + return result201; + }); + } else if (status !== 200 && status !== 204) { + return response.text().then((_responseText) => { + return throwException("An unexpected server error occurred.", status, _responseText, _headers); + }); + } + return Promise.resolve<SchemaRecordDto>(null as any); + } + + fetchCredentialDefinitions(): Promise<CreddefRecordDto[]> { + let url_ = this.baseUrl + "/api/v1/definitions"; + url_ = url_.replace(/[?&]$/, ""); + + let options_: RequestInit = { + method: "GET", + headers: { + "Accept": "application/json" + } + }; + + return this.http.fetch(url_, options_).then((_response: Response) => { + return this.processFetchCredentialDefinitions(_response); + }); + } + + protected processFetchCredentialDefinitions(response: Response): Promise<CreddefRecordDto[]> { + const status = response.status; + let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); }; + if (status === 200) { + return response.text().then((_responseText) => { + let result200: any = null; + result200 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver) as CreddefRecordDto[]; + return result200; + }); + } else if (status !== 200 && status !== 204) { + return response.text().then((_responseText) => { + return throwException("An unexpected server error occurred.", status, _responseText, _headers); + }); + } + return Promise.resolve<CreddefRecordDto[]>(null as any); + } + + createCredentialDefinition(body: CreateCredentialDefinitionRequestDto): Promise<CreddefRecordDto> { + let url_ = this.baseUrl + "/api/v1/definitions"; + url_ = url_.replace(/[?&]$/, ""); + + const content_ = JSON.stringify(body); + + let options_: RequestInit = { + body: content_, + method: "POST", + headers: { + "Content-Type": "application/json", + "Accept": "application/json" + } + }; + + return this.http.fetch(url_, options_).then((_response: Response) => { + return this.processCreateCredentialDefinition(_response); + }); + } + + protected processCreateCredentialDefinition(response: Response): Promise<CreddefRecordDto> { + const status = response.status; + let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); }; + if (status === 201) { + return response.text().then((_responseText) => { + let result201: any = null; + result201 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver) as CreddefRecordDto; + return result201; + }); + } else if (status !== 200 && status !== 204) { + return response.text().then((_responseText) => { + return throwException("An unexpected server error occurred.", status, _responseText, _headers); + }); + } + return Promise.resolve<CreddefRecordDto>(null as any); + } + + getCredentialDefinitionById(body: IdReqDto): Promise<CreddefRecordDto> { + let url_ = this.baseUrl + "/api/v1/definitions/get-by-id"; + url_ = url_.replace(/[?&]$/, ""); + + const content_ = JSON.stringify(body); + + let options_: RequestInit = { + body: content_, + method: "POST", + headers: { + "Content-Type": "application/json", + "Accept": "application/json" + } + }; + + return this.http.fetch(url_, options_).then((_response: Response) => { + return this.processGetCredentialDefinitionById(_response); + }); + } + + protected processGetCredentialDefinitionById(response: Response): Promise<CreddefRecordDto> { + const status = response.status; + let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); }; + if (status === 201) { + return response.text().then((_responseText) => { + let result201: any = null; + result201 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver) as CreddefRecordDto; + return result201; + }); + } else if (status !== 200 && status !== 204) { + return response.text().then((_responseText) => { + return throwException("An unexpected server error occurred.", status, _responseText, _headers); + }); + } + return Promise.resolve<CreddefRecordDto>(null as any); + } + + offerCredential(body: OfferCredentialRequestDto): Promise<CredentialOfferResponseDto> { + let url_ = this.baseUrl + "/api/v1/credentials/offers"; + url_ = url_.replace(/[?&]$/, ""); + + const content_ = JSON.stringify(body); + + let options_: RequestInit = { + body: content_, + method: "POST", + headers: { + "Content-Type": "application/json", + "Accept": "application/json" + } + }; + + return this.http.fetch(url_, options_).then((_response: Response) => { + return this.processOfferCredential(_response); + }); + } + + protected processOfferCredential(response: Response): Promise<CredentialOfferResponseDto> { + const status = response.status; + let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); }; + if (status === 201) { + return response.text().then((_responseText) => { + let result201: any = null; + result201 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver) as CredentialOfferResponseDto; + return result201; + }); + } else if (status !== 200 && status !== 204) { + return response.text().then((_responseText) => { + return throwException("An unexpected server error occurred.", status, _responseText, _headers); + }); + } + return Promise.resolve<CredentialOfferResponseDto>(null as any); + } + + fetchCredentials(states: States2[] | undefined, connectionId: string | undefined): Promise<CredentialRecordDto[]> { + let url_ = this.baseUrl + "/api/v1/credentials?"; + if (states === null) + throw new Error("The parameter 'states' cannot be null."); + else if (states !== undefined) + states && states.forEach(item => { url_ += "states=" + encodeURIComponent("" + item) + "&"; }); + if (connectionId === null) + throw new Error("The parameter 'connectionId' cannot be null."); + else if (connectionId !== undefined) + url_ += "connectionId=" + encodeURIComponent("" + connectionId) + "&"; + url_ = url_.replace(/[?&]$/, ""); + + let options_: RequestInit = { + method: "GET", + headers: { + "Accept": "application/json" + } + }; + + return this.http.fetch(url_, options_).then((_response: Response) => { + return this.processFetchCredentials(_response); + }); + } + + protected processFetchCredentials(response: Response): Promise<CredentialRecordDto[]> { + const status = response.status; + let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); }; + if (status === 200) { + return response.text().then((_responseText) => { + let result200: any = null; + result200 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver) as CredentialRecordDto[]; + return result200; + }); + } else if (status !== 200 && status !== 204) { + return response.text().then((_responseText) => { + return throwException("An unexpected server error occurred.", status, _responseText, _headers); + }); + } + return Promise.resolve<CredentialRecordDto[]>(null as any); + } + + getCredentialById(id: string): Promise<CredentialRecordDto> { + let url_ = this.baseUrl + "/api/v1/credentials/{id}"; + if (id === undefined || id === null) + throw new Error("The parameter 'id' must be defined."); + url_ = url_.replace("{id}", encodeURIComponent("" + id)); + url_ = url_.replace(/[?&]$/, ""); + + let options_: RequestInit = { + method: "GET", + headers: { + "Accept": "application/json" + } + }; + + return this.http.fetch(url_, options_).then((_response: Response) => { + return this.processGetCredentialById(_response); + }); + } + + protected processGetCredentialById(response: Response): Promise<CredentialRecordDto> { + const status = response.status; + let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); }; + if (status === 200) { + return response.text().then((_responseText) => { + let result200: any = null; + result200 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver) as CredentialRecordDto; + return result200; + }); + } else if (status !== 200 && status !== 204) { + return response.text().then((_responseText) => { + return throwException("An unexpected server error occurred.", status, _responseText, _headers); + }); + } + return Promise.resolve<CredentialRecordDto>(null as any); + } + + deleteCredentialById(id: string): Promise<void> { + let url_ = this.baseUrl + "/api/v1/credentials/{id}"; + if (id === undefined || id === null) + throw new Error("The parameter 'id' must be defined."); + url_ = url_.replace("{id}", encodeURIComponent("" + id)); + url_ = url_.replace(/[?&]$/, ""); + + let options_: RequestInit = { + method: "DELETE", + headers: { + } + }; + + return this.http.fetch(url_, options_).then((_response: Response) => { + return this.processDeleteCredentialById(_response); + }); + } + + protected processDeleteCredentialById(response: Response): Promise<void> { + const status = response.status; + let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); }; + if (status === 200) { + return response.text().then((_responseText) => { + return; + }); + } else if (status !== 200 && status !== 204) { + return response.text().then((_responseText) => { + return throwException("An unexpected server error occurred.", status, _responseText, _headers); + }); + } + return Promise.resolve<void>(null as any); + } + + getCredentialFormatDataById(id: string): Promise<CredentialFormatDataDto> { + let url_ = this.baseUrl + "/api/v1/credentials/{id}/format-data"; + if (id === undefined || id === null) + throw new Error("The parameter 'id' must be defined."); + url_ = url_.replace("{id}", encodeURIComponent("" + id)); + url_ = url_.replace(/[?&]$/, ""); + + let options_: RequestInit = { + method: "GET", + headers: { + "Accept": "application/json" + } + }; + + return this.http.fetch(url_, options_).then((_response: Response) => { + return this.processGetCredentialFormatDataById(_response); + }); + } + + protected processGetCredentialFormatDataById(response: Response): Promise<CredentialFormatDataDto> { + const status = response.status; + let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); }; + if (status === 200) { + return response.text().then((_responseText) => { + let result200: any = null; + result200 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver) as CredentialFormatDataDto; + return result200; + }); + } else if (status !== 200 && status !== 204) { + return response.text().then((_responseText) => { + return throwException("An unexpected server error occurred.", status, _responseText, _headers); + }); + } + return Promise.resolve<CredentialFormatDataDto>(null as any); + } + + acceptCredential(body: AcceptCredentialDto): Promise<CredentialRecordDto> { + let url_ = this.baseUrl + "/api/v1/credentials/offers/accept"; + url_ = url_.replace(/[?&]$/, ""); + + const content_ = JSON.stringify(body); + + let options_: RequestInit = { + body: content_, + method: "POST", + headers: { + "Content-Type": "application/json", + "Accept": "application/json" + } + }; + + return this.http.fetch(url_, options_).then((_response: Response) => { + return this.processAcceptCredential(_response); + }); + } + + protected processAcceptCredential(response: Response): Promise<CredentialRecordDto> { + const status = response.status; + let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); }; + if (status === 201) { + return response.text().then((_responseText) => { + let result201: any = null; + result201 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver) as CredentialRecordDto; + return result201; + }); + } else if (status !== 200 && status !== 204) { + return response.text().then((_responseText) => { + return throwException("An unexpected server error occurred.", status, _responseText, _headers); + }); + } + return Promise.resolve<CredentialRecordDto>(null as any); + } + + declineCredential(credential_record_id: string): Promise<CredentialRecordDto> { + let url_ = this.baseUrl + "/api/v1/credentials/offers/{credential_record_id}/decline"; + if (credential_record_id === undefined || credential_record_id === null) + throw new Error("The parameter 'credential_record_id' must be defined."); + url_ = url_.replace("{credential_record_id}", encodeURIComponent("" + credential_record_id)); + url_ = url_.replace(/[?&]$/, ""); + + let options_: RequestInit = { + method: "POST", + headers: { + "Accept": "application/json" + } + }; + + return this.http.fetch(url_, options_).then((_response: Response) => { + return this.processDeclineCredential(_response); + }); + } + + protected processDeclineCredential(response: Response): Promise<CredentialRecordDto> { + const status = response.status; + let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); }; + if (status === 201) { + return response.text().then((_responseText) => { + let result201: any = null; + result201 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver) as CredentialRecordDto; + return result201; + }); + } else if (status !== 200 && status !== 204) { + return response.text().then((_responseText) => { + return throwException("An unexpected server error occurred.", status, _responseText, _headers); + }); + } + return Promise.resolve<CredentialRecordDto>(null as any); + } + + sendMessage(body: MakeBasicMessageRequestDto): Promise<MessageRecordDto> { + let url_ = this.baseUrl + "/api/v1/messages"; + url_ = url_.replace(/[?&]$/, ""); + + const content_ = JSON.stringify(body); + + let options_: RequestInit = { + body: content_, + method: "POST", + headers: { + "Content-Type": "application/json", + "Accept": "application/json" + } + }; + + return this.http.fetch(url_, options_).then((_response: Response) => { + return this.processSendMessage(_response); + }); + } + + protected processSendMessage(response: Response): Promise<MessageRecordDto> { + const status = response.status; + let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); }; + if (status === 201) { + return response.text().then((_responseText) => { + let result201: any = null; + result201 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver) as MessageRecordDto; + return result201; + }); + } else if (status !== 200 && status !== 204) { + return response.text().then((_responseText) => { + return throwException("An unexpected server error occurred.", status, _responseText, _headers); + }); + } + return Promise.resolve<MessageRecordDto>(null as any); + } + + fetchBasicMessages(role: Role | undefined, connectionId: string | undefined): Promise<MessageRecordDto[]> { + let url_ = this.baseUrl + "/api/v1/messages?"; + if (role === null) + throw new Error("The parameter 'role' cannot be null."); + else if (role !== undefined) + url_ += "role=" + encodeURIComponent("" + role) + "&"; + if (connectionId === null) + throw new Error("The parameter 'connectionId' cannot be null."); + else if (connectionId !== undefined) + url_ += "connectionId=" + encodeURIComponent("" + connectionId) + "&"; + url_ = url_.replace(/[?&]$/, ""); + + let options_: RequestInit = { + method: "GET", + headers: { + "Accept": "application/json" + } + }; + + return this.http.fetch(url_, options_).then((_response: Response) => { + return this.processFetchBasicMessages(_response); + }); + } + + protected processFetchBasicMessages(response: Response): Promise<MessageRecordDto[]> { + const status = response.status; + let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); }; + if (status === 200) { + return response.text().then((_responseText) => { + let result200: any = null; + result200 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver) as MessageRecordDto[]; + return result200; + }); + } else if (status !== 200 && status !== 204) { + return response.text().then((_responseText) => { + return throwException("An unexpected server error occurred.", status, _responseText, _headers); + }); + } + return Promise.resolve<MessageRecordDto[]>(null as any); + } + + deleteBasicMessage(id: string): Promise<void> { + let url_ = this.baseUrl + "/api/v1/messages/{id}"; + if (id === undefined || id === null) + throw new Error("The parameter 'id' must be defined."); + url_ = url_.replace("{id}", encodeURIComponent("" + id)); + url_ = url_.replace(/[?&]$/, ""); + + let options_: RequestInit = { + method: "DELETE", + headers: { + } + }; + + return this.http.fetch(url_, options_).then((_response: Response) => { + return this.processDeleteBasicMessage(_response); + }); + } + + protected processDeleteBasicMessage(response: Response): Promise<void> { + const status = response.status; + let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); }; + if (status === 200) { + return response.text().then((_responseText) => { + return; + }); + } else if (status !== 200 && status !== 204) { + return response.text().then((_responseText) => { + return throwException("An unexpected server error occurred.", status, _responseText, _headers); + }); + } + return Promise.resolve<void>(null as any); + } + + fetchProofs(states: States3[] | undefined, connectionId: string | undefined): Promise<ProofRecordDto[]> { + let url_ = this.baseUrl + "/api/v1/proofs?"; + if (states === null) + throw new Error("The parameter 'states' cannot be null."); + else if (states !== undefined) + states && states.forEach(item => { url_ += "states=" + encodeURIComponent("" + item) + "&"; }); + if (connectionId === null) + throw new Error("The parameter 'connectionId' cannot be null."); + else if (connectionId !== undefined) + url_ += "connectionId=" + encodeURIComponent("" + connectionId) + "&"; + url_ = url_.replace(/[?&]$/, ""); + + let options_: RequestInit = { + method: "GET", + headers: { + "Accept": "application/json" + } + }; + + return this.http.fetch(url_, options_).then((_response: Response) => { + return this.processFetchProofs(_response); + }); + } + + protected processFetchProofs(response: Response): Promise<ProofRecordDto[]> { + const status = response.status; + let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); }; + if (status === 200) { + return response.text().then((_responseText) => { + let result200: any = null; + result200 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProofRecordDto[]; + return result200; + }); + } else if (status !== 200 && status !== 204) { + return response.text().then((_responseText) => { + return throwException("An unexpected server error occurred.", status, _responseText, _headers); + }); + } + return Promise.resolve<ProofRecordDto[]>(null as any); + } + + getProofById(proof_record_id: string): Promise<ProofRecordDto> { + let url_ = this.baseUrl + "/api/v1/proofs/{proof_record_id}"; + if (proof_record_id === undefined || proof_record_id === null) + throw new Error("The parameter 'proof_record_id' must be defined."); + url_ = url_.replace("{proof_record_id}", encodeURIComponent("" + proof_record_id)); + url_ = url_.replace(/[?&]$/, ""); + + let options_: RequestInit = { + method: "GET", + headers: { + "Accept": "application/json" + } + }; + + return this.http.fetch(url_, options_).then((_response: Response) => { + return this.processGetProofById(_response); + }); + } + + protected processGetProofById(response: Response): Promise<ProofRecordDto> { + const status = response.status; + let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); }; + if (status === 200) { + return response.text().then((_responseText) => { + let result200: any = null; + result200 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProofRecordDto; + return result200; + }); + } else if (status !== 200 && status !== 204) { + return response.text().then((_responseText) => { + return throwException("An unexpected server error occurred.", status, _responseText, _headers); + }); + } + return Promise.resolve<ProofRecordDto>(null as any); + } + + deleteProofById(proof_record_id: string): Promise<void> { + let url_ = this.baseUrl + "/api/v1/proofs/{proof_record_id}"; + if (proof_record_id === undefined || proof_record_id === null) + throw new Error("The parameter 'proof_record_id' must be defined."); + url_ = url_.replace("{proof_record_id}", encodeURIComponent("" + proof_record_id)); + url_ = url_.replace(/[?&]$/, ""); + + let options_: RequestInit = { + method: "DELETE", + headers: { + } + }; + + return this.http.fetch(url_, options_).then((_response: Response) => { + return this.processDeleteProofById(_response); + }); + } + + protected processDeleteProofById(response: Response): Promise<void> { + const status = response.status; + let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); }; + if (status === 200) { + return response.text().then((_responseText) => { + return; + }); + } else if (status !== 200 && status !== 204) { + return response.text().then((_responseText) => { + return throwException("An unexpected server error occurred.", status, _responseText, _headers); + }); + } + return Promise.resolve<void>(null as any); + } + + getProofFormatDataById(proof_record_id: string): Promise<ProofFormatDataDto> { + let url_ = this.baseUrl + "/api/v1/proofs/{proof_record_id}/format-data"; + if (proof_record_id === undefined || proof_record_id === null) + throw new Error("The parameter 'proof_record_id' must be defined."); + url_ = url_.replace("{proof_record_id}", encodeURIComponent("" + proof_record_id)); + url_ = url_.replace(/[?&]$/, ""); + + let options_: RequestInit = { + method: "GET", + headers: { + "Accept": "application/json" + } + }; + + return this.http.fetch(url_, options_).then((_response: Response) => { + return this.processGetProofFormatDataById(_response); + }); + } + + protected processGetProofFormatDataById(response: Response): Promise<ProofFormatDataDto> { + const status = response.status; + let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); }; + if (status === 200) { + return response.text().then((_responseText) => { + let result200: any = null; + result200 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProofFormatDataDto; + return result200; + }); + } else if (status !== 200 && status !== 204) { + return response.text().then((_responseText) => { + return throwException("An unexpected server error occurred.", status, _responseText, _headers); + }); + } + return Promise.resolve<ProofFormatDataDto>(null as any); + } + + proofAcceptanceWait(proof_record_id: string): Promise<ProofFormatDataDto> { + let url_ = this.baseUrl + "/api/v1/proofs/{proof_record_id}/acceptance-wait"; + if (proof_record_id === undefined || proof_record_id === null) + throw new Error("The parameter 'proof_record_id' must be defined."); + url_ = url_.replace("{proof_record_id}", encodeURIComponent("" + proof_record_id)); + url_ = url_.replace(/[?&]$/, ""); + + let options_: RequestInit = { + method: "POST", + headers: { + "Accept": "application/json" + } + }; + + return this.http.fetch(url_, options_).then((_response: Response) => { + return this.processProofAcceptanceWait(_response); + }); + } + + protected processProofAcceptanceWait(response: Response): Promise<ProofFormatDataDto> { + const status = response.status; + let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); }; + if (status === 201) { + return response.text().then((_responseText) => { + let result201: any = null; + result201 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProofFormatDataDto; + return result201; + }); + } else if (status !== 200 && status !== 204) { + return response.text().then((_responseText) => { + return throwException("An unexpected server error occurred.", status, _responseText, _headers); + }); + } + return Promise.resolve<ProofFormatDataDto>(null as any); + } + + requestProof(body: RequestProofDto): Promise<RequestProofResponseDto> { + let url_ = this.baseUrl + "/api/v1/proofs/request"; + url_ = url_.replace(/[?&]$/, ""); + + const content_ = JSON.stringify(body); + + let options_: RequestInit = { + body: content_, + method: "POST", + headers: { + "Content-Type": "application/json", + "Accept": "application/json" + } + }; + + return this.http.fetch(url_, options_).then((_response: Response) => { + return this.processRequestProof(_response); + }); + } + + protected processRequestProof(response: Response): Promise<RequestProofResponseDto> { + const status = response.status; + let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); }; + if (status === 201) { + return response.text().then((_responseText) => { + let result201: any = null; + result201 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver) as RequestProofResponseDto; + return result201; + }); + } else if (status !== 200 && status !== 204) { + return response.text().then((_responseText) => { + return throwException("An unexpected server error occurred.", status, _responseText, _headers); + }); + } + return Promise.resolve<RequestProofResponseDto>(null as any); + } + + acceptProof(body: AcceptProofDto): Promise<ProofRecordDto> { + let url_ = this.baseUrl + "/api/v1/proofs/accept"; + url_ = url_.replace(/[?&]$/, ""); + + const content_ = JSON.stringify(body); + + let options_: RequestInit = { + body: content_, + method: "POST", + headers: { + "Content-Type": "application/json", + "Accept": "application/json" + } + }; + + return this.http.fetch(url_, options_).then((_response: Response) => { + return this.processAcceptProof(_response); + }); + } + + protected processAcceptProof(response: Response): Promise<ProofRecordDto> { + const status = response.status; + let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); }; + if (status === 201) { + return response.text().then((_responseText) => { + let result201: any = null; + result201 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProofRecordDto; + return result201; + }); + } else if (status !== 200 && status !== 204) { + return response.text().then((_responseText) => { + return throwException("An unexpected server error occurred.", status, _responseText, _headers); + }); + } + return Promise.resolve<ProofRecordDto>(null as any); + } + + declineProofRequest(proof_record_id: string): Promise<ProofRecordDto> { + let url_ = this.baseUrl + "/api/v1/proofs/{proof_record_id}/decline"; + if (proof_record_id === undefined || proof_record_id === null) + throw new Error("The parameter 'proof_record_id' must be defined."); + url_ = url_.replace("{proof_record_id}", encodeURIComponent("" + proof_record_id)); + url_ = url_.replace(/[?&]$/, ""); + + let options_: RequestInit = { + method: "POST", + headers: { + "Accept": "application/json" + } + }; + + return this.http.fetch(url_, options_).then((_response: Response) => { + return this.processDeclineProofRequest(_response); + }); + } + + protected processDeclineProofRequest(response: Response): Promise<ProofRecordDto> { + const status = response.status; + let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); }; + if (status === 201) { + return response.text().then((_responseText) => { + let result201: any = null; + result201 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProofRecordDto; + return result201; + }); + } else if (status !== 200 && status !== 204) { + return response.text().then((_responseText) => { + return throwException("An unexpected server error occurred.", status, _responseText, _headers); + }); + } + return Promise.resolve<ProofRecordDto>(null as any); + } + + getCreatedDids(): Promise<DidRecordDto[]> { + let url_ = this.baseUrl + "/api/v1/created-dids"; + url_ = url_.replace(/[?&]$/, ""); + + let options_: RequestInit = { + method: "GET", + headers: { + "Accept": "application/json" + } + }; + + return this.http.fetch(url_, options_).then((_response: Response) => { + return this.processGetCreatedDids(_response); + }); + } + + protected processGetCreatedDids(response: Response): Promise<DidRecordDto[]> { + const status = response.status; + let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); }; + if (status === 200) { + return response.text().then((_responseText) => { + let result200: any = null; + result200 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver) as DidRecordDto[]; + return result200; + }); + } else if (status !== 200 && status !== 204) { + return response.text().then((_responseText) => { + return throwException("An unexpected server error occurred.", status, _responseText, _headers); + }); + } + return Promise.resolve<DidRecordDto[]>(null as any); + } + + resolveDid(body: IdReqDto): Promise<any> { + let url_ = this.baseUrl + "/api/v1/resolve-did"; + url_ = url_.replace(/[?&]$/, ""); + + const content_ = JSON.stringify(body); + + let options_: RequestInit = { + body: content_, + method: "POST", + headers: { + "Content-Type": "application/json", + "Accept": "application/json" + } + }; + + return this.http.fetch(url_, options_).then((_response: Response) => { + return this.processResolveDid(_response); + }); + } + + protected processResolveDid(response: Response): Promise<any> { + const status = response.status; + let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); }; + if (status === 201) { + return response.text().then((_responseText) => { + let result201: any = null; + result201 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver) as any; + return result201; + }); + } else if (status !== 200 && status !== 204) { + return response.text().then((_responseText) => { + return throwException("An unexpected server error occurred.", status, _responseText, _headers); + }); + } + return Promise.resolve<any>(null as any); + } +} + +export interface CreateInvitationResponseDto { + /** Example of long invitation url */ + invitationUrl?: string; + shortInvitationUrl?: string; + outOfBandId?: string; + role?: CreateInvitationResponseDtoRole; + state?: CreateInvitationResponseDtoState; + id?: string; + createdAt?: Date; + updatedAt?: Date; + + [key: string]: any; +} + +export interface CreateInvitationRequestDto { + goal?: string; + label?: string; + alias?: string; + imageUrl?: string; + multiUseInvitation?: boolean; + + [key: string]: any; +} + +export interface AcceptInvitationRequestDto { + /** Example of long invitation url */ + invitationUrl: string; + shortInvitationUrl: string; + + [key: string]: any; +} + +export interface ConnectionRecordDto { + state: ConnectionRecordDtoState; + connectionName?: string; + alias?: string; + did?: string; + invitationDid?: string; + outOfBandId?: string; + imageUrl?: string; + id?: string; + createdAt?: Date; + updatedAt?: Date; + + [key: string]: any; +} + +export interface CreateSchemaRequestDto { + name: string; + attributes: string[]; + version: string; + + [key: string]: any; +} + +export interface SchemaRecordDto { + name: string; + attributes: string[]; + version: string; + issuerId?: string; + methodName?: string; + id?: string; + createdAt?: Date; + updatedAt?: Date; + + [key: string]: any; +} + +export interface IdReqDto { + id: string; + + [key: string]: any; +} + +export interface CreddefRecordDto { + schemaId: string; + issuerId: string; + tag: string; + id?: string; + createdAt?: Date; + updatedAt?: Date; + + [key: string]: any; +} + +export interface CreateCredentialDefinitionRequestDto { + schemaId: string; + tag: string; + + [key: string]: any; +} + +export interface OfferCredentialAttributes { + name: string; + value: string; + + [key: string]: any; +} + +export interface OfferCredentialRequestDto { + connectionId?: string; + credentialDefinitionId: string; + attributes: OfferCredentialAttributes[]; + + [key: string]: any; +} + +export interface CredentialRecordDto { + state: CredentialRecordDtoState; + credentialRecordType: string; + connectionId?: string; + attributes?: OfferCredentialAttributes[]; + tags: any; + id?: string; + createdAt?: Date; + updatedAt?: Date; + + [key: string]: any; +} + +export interface CredentialOfferResponseDto { + credentialUrl: string | null; + shortCredentialUrl: string | null; + credentialRecord: CredentialRecordDto; + + [key: string]: any; +} + +export interface CredentialFormatDataDto { + proposalAttributes?: any[]; + offerAttributes?: any[]; + anoncredsProposal?: any; + anoncredsOffer?: any; + anoncredsRequest?: any; + anoncredsCredential?: any; + + [key: string]: any; +} + +export interface AcceptCredentialDto { + credentialId: string; + credentialUrl: string; + + [key: string]: any; +} + +export interface MakeBasicMessageRequestDto { + connectionId: string; + message: string; + + [key: string]: any; +} + +export interface MessageRecordDto { + connectionId: string; + role: MessageRecordDtoRole; + sentTime: string; + from?: string; + to?: string; + content: string; + id?: string; + createdAt?: Date; + updatedAt?: Date; + + [key: string]: any; +} + +export interface ProofRecordDto { + connectionId?: string; + state: ProofRecordDtoState; + tags: any; + id?: string; + createdAt?: Date; + updatedAt?: Date; + + [key: string]: any; +} + +export interface ProofFormatDataDto { + anoncredsProposal?: any; + anoncredsRequest?: any; + anoncredsPresentation?: any; + + [key: string]: any; +} + +export interface RequestProofAttribute { + attributeName: string; + credentialDefinitionId: string; + schemaId: string; + + [key: string]: any; +} + +export interface RequestProofDto { + connectionId?: string; + attributes: RequestProofAttribute[]; + + [key: string]: any; +} + +export interface RequestProofResponseDto { + proofUrl: string | null; + shortProofUrl: string | null; + proofRecord: ProofRecordDto; + + [key: string]: any; +} + +export interface AcceptProofDto { + proofId: string; + proofUrl: string; + + [key: string]: any; +} + +export interface DidRecordDto { + did: string; + role: DidRecordDtoRole; + method: string; + tags: any; + id?: string; + createdAt?: Date; + updatedAt?: Date; + + [key: string]: any; +} + +export enum States { + Initial = "initial", + AwaitResponse = "await-response", + PrepareResponse = "prepare-response", + Done = "done", +} + +export enum Roles { + Sender = "sender", + Receiver = "receiver", +} + +export enum States2 { + ProposalSent = "proposal-sent", + ProposalReceived = "proposal-received", + OfferSent = "offer-sent", + OfferReceived = "offer-received", + Declined = "declined", + RequestSent = "request-sent", + RequestReceived = "request-received", + CredentialIssued = "credential-issued", + CredentialReceived = "credential-received", + Done = "done", + Abandoned = "abandoned", +} + +export enum Role { + Sender = "sender", + Receiver = "receiver", +} + +export enum States3 { + ProposalSent = "proposal-sent", + ProposalReceived = "proposal-received", + RequestSent = "request-sent", + RequestReceived = "request-received", + PresentationSent = "presentation-sent", + PresentationReceived = "presentation-received", + Declined = "declined", + Abandoned = "abandoned", + Done = "done", +} + +export enum CreateInvitationResponseDtoRole { + Sender = "sender", + Receiver = "receiver", +} + +export enum CreateInvitationResponseDtoState { + Initial = "initial", + AwaitResponse = "await-response", + PrepareResponse = "prepare-response", + Done = "done", +} + +export enum ConnectionRecordDtoState { + Start = "start", + InvitationSent = "invitation-sent", + InvitationReceived = "invitation-received", + RequestSent = "request-sent", + RequestReceived = "request-received", + ResponseSent = "response-sent", + ResponseReceived = "response-received", + Abandoned = "abandoned", + Completed = "completed", +} + +export enum CredentialRecordDtoState { + ProposalSent = "proposal-sent", + ProposalReceived = "proposal-received", + OfferSent = "offer-sent", + OfferReceived = "offer-received", + Declined = "declined", + RequestSent = "request-sent", + RequestReceived = "request-received", + CredentialIssued = "credential-issued", + CredentialReceived = "credential-received", + Done = "done", + Abandoned = "abandoned", +} + +export enum MessageRecordDtoRole { + Sender = "sender", + Receiver = "receiver", +} + +export enum ProofRecordDtoState { + ProposalSent = "proposal-sent", + ProposalReceived = "proposal-received", + RequestSent = "request-sent", + RequestReceived = "request-received", + PresentationSent = "presentation-sent", + PresentationReceived = "presentation-received", + Declined = "declined", + Abandoned = "abandoned", + Done = "done", +} + +export enum DidRecordDtoRole { + Created = "created", + Received = "received", +} + +export class ApiException extends Error { + override message: string; + status: number; + response: string; + headers: { [key: string]: any; }; + result: any; + + constructor(message: string, status: number, response: string, headers: { [key: string]: any; }, result: any) { + super(); + + this.message = message; + this.status = status; + this.response = response; + this.headers = headers; + this.result = result; + } + + protected isApiException = true; + + static isApiException(obj: any): obj is ApiException { + return obj.isApiException === true; + } +} + +function throwException(message: string, status: number, response: string, headers: { [key: string]: any; }, result?: any): any { + if (result !== null && result !== undefined) + throw result; + else + throw new ApiException(message, status, response, headers, null); +} \ No newline at end of file diff --git a/libs/clients/src/frontend/tsa_gen.ts b/libs/clients/src/frontend/tsa_gen.ts new file mode 100644 index 0000000000000000000000000000000000000000..d0bab5d06daa6e57ea316a3177757c6b4e472a0a --- /dev/null +++ b/libs/clients/src/frontend/tsa_gen.ts @@ -0,0 +1,342 @@ +//---------------------- +// <auto-generated> +// Generated using the NSwag toolchain v13.20.0.0 (NJsonSchema v10.9.0.0 (Newtonsoft.Json v10.0.0.0)) (http://NSwag.org) +// </auto-generated> +//---------------------- + +/* tslint:disable */ +/* eslint-disable */ +// ReSharper disable InconsistentNaming + +export class Client { + private http: { fetch(url: RequestInfo, init?: RequestInit): Promise<Response> }; + private baseUrl: string; + public jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined; + + constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise<Response> }) { + this.http = http ? http : window as any; + this.baseUrl = baseUrl !== undefined && baseUrl !== null ? baseUrl : "http://localhost:8087"; + } + + /** + * Keys login + * @return OK response. + */ + loginKeys(): Promise<KeysResult> { + let url_ = this.baseUrl + "/keys"; + url_ = url_.replace(/[?&]$/, ""); + + let options_: RequestInit = { + method: "GET", + headers: { + "Accept": "application/json" + } + }; + + return this.http.fetch(url_, options_).then((_response: Response) => { + return this.processLoginKeys(_response); + }); + } + + protected processLoginKeys(response: Response): Promise<KeysResult> { + const status = response.status; + let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); }; + if (status === 200) { + return response.text().then((_responseText) => { + let result200: any = null; + result200 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver) as KeysResult; + return result200; + }); + } else if (status !== 200 && status !== 204) { + return response.text().then((_responseText) => { + return throwException("An unexpected server error occurred.", status, _responseText, _headers); + }); + } + return Promise.resolve<KeysResult>(null as any); + } + + /** + * Liveness health + * @return OK response. + */ + healthLiveness(): Promise<FileResponse> { + let url_ = this.baseUrl + "/liveness"; + url_ = url_.replace(/[?&]$/, ""); + + let options_: RequestInit = { + method: "GET", + headers: { + "Accept": "application/json" + } + }; + + return this.http.fetch(url_, options_).then((_response: Response) => { + return this.processHealthLiveness(_response); + }); + } + + protected processHealthLiveness(response: Response): Promise<FileResponse> { + const status = response.status; + let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); }; + if (status === 200 || status === 206) { + const contentDisposition = response.headers ? response.headers.get("content-disposition") : undefined; + let fileNameMatch = contentDisposition ? /filename\*=(?:(\\?['"])(.*?)\1|(?:[^\s]+'.*?')?([^;\n]*))/g.exec(contentDisposition) : undefined; + let fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[3] || fileNameMatch[2] : undefined; + if (fileName) { + fileName = decodeURIComponent(fileName); + } else { + fileNameMatch = contentDisposition ? /filename="?([^"]*?)"?(;|$)/g.exec(contentDisposition) : undefined; + fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[1] : undefined; + } + return response.blob().then(blob => { return { fileName: fileName, data: blob, status: status, headers: _headers }; }); + } else if (status !== 200 && status !== 204) { + return response.text().then((_responseText) => { + return throwException("An unexpected server error occurred.", status, _responseText, _headers); + }); + } + return Promise.resolve<FileResponse>(null as any); + } + + /** + * Readiness health + * @return OK response. + */ + healthReadiness(): Promise<FileResponse> { + let url_ = this.baseUrl + "/readiness"; + url_ = url_.replace(/[?&]$/, ""); + + let options_: RequestInit = { + method: "GET", + headers: { + "Accept": "application/json" + } + }; + + return this.http.fetch(url_, options_).then((_response: Response) => { + return this.processHealthReadiness(_response); + }); + } + + protected processHealthReadiness(response: Response): Promise<FileResponse> { + const status = response.status; + let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); }; + if (status === 200 || status === 206) { + const contentDisposition = response.headers ? response.headers.get("content-disposition") : undefined; + let fileNameMatch = contentDisposition ? /filename\*=(?:(\\?['"])(.*?)\1|(?:[^\s]+'.*?')?([^;\n]*))/g.exec(contentDisposition) : undefined; + let fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[3] || fileNameMatch[2] : undefined; + if (fileName) { + fileName = decodeURIComponent(fileName); + } else { + fileNameMatch = contentDisposition ? /filename="?([^"]*?)"?(;|$)/g.exec(contentDisposition) : undefined; + fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[1] : undefined; + } + return response.blob().then(blob => { return { fileName: fileName, data: blob, status: status, headers: _headers }; }); + } else if (status !== 200 && status !== 204) { + return response.text().then((_responseText) => { + return throwException("An unexpected server error occurred.", status, _responseText, _headers); + }); + } + return Promise.resolve<FileResponse>(null as any); + } + + /** + * Login login + * @return OK response. + */ + loginLogin(body: LoginRequestBody): Promise<LoginResult> { + let url_ = this.baseUrl + "/v1/login"; + url_ = url_.replace(/[?&]$/, ""); + + const content_ = JSON.stringify(body); + + let options_: RequestInit = { + body: content_, + method: "POST", + headers: { + "Content-Type": "application/json", + "Accept": "application/json" + } + }; + + return this.http.fetch(url_, options_).then((_response: Response) => { + return this.processLoginLogin(_response); + }); + } + + protected processLoginLogin(response: Response): Promise<LoginResult> { + const status = response.status; + let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); }; + if (status === 200) { + return response.text().then((_responseText) => { + let result200: any = null; + result200 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver) as LoginResult; + return result200; + }); + } else if (status !== 200 && status !== 204) { + return response.text().then((_responseText) => { + return throwException("An unexpected server error occurred.", status, _responseText, _headers); + }); + } + return Promise.resolve<LoginResult>(null as any); + } + + /** + * LoginWithVC login + * @return OK response. + */ + loginLoginWithVC(body: LoginWithVCRequestBody): Promise<LoginVCResult> { + let url_ = this.baseUrl + "/v1/login-vc"; + url_ = url_.replace(/[?&]$/, ""); + + const content_ = JSON.stringify(body); + + let options_: RequestInit = { + body: content_, + method: "POST", + headers: { + "Content-Type": "application/json", + "Accept": "application/json" + } + }; + + return this.http.fetch(url_, options_).then((_response: Response) => { + return this.processLoginLoginWithVC(_response); + }); + } + + protected processLoginLoginWithVC(response: Response): Promise<LoginVCResult> { + const status = response.status; + let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); }; + if (status === 200) { + return response.text().then((_responseText) => { + let result200: any = null; + result200 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver) as LoginVCResult; + return result200; + }); + } else if (status !== 200 && status !== 204) { + return response.text().then((_responseText) => { + return throwException("An unexpected server error occurred.", status, _responseText, _headers); + }); + } + return Promise.resolve<LoginVCResult>(null as any); + } + + /** + * LoginInvitation login + * @return OK response. + */ + loginLoginInvitation(): Promise<LoginInvitationResult> { + let url_ = this.baseUrl + "/v1/login-vc-invitation"; + url_ = url_.replace(/[?&]$/, ""); + + let options_: RequestInit = { + method: "GET", + headers: { + "Accept": "application/json" + } + }; + + return this.http.fetch(url_, options_).then((_response: Response) => { + return this.processLoginLoginInvitation(_response); + }); + } + + protected processLoginLoginInvitation(response: Response): Promise<LoginInvitationResult> { + const status = response.status; + let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); }; + if (status === 200) { + return response.text().then((_responseText) => { + let result200: any = null; + result200 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver) as LoginInvitationResult; + return result200; + }); + } else if (status !== 200 && status !== 204) { + return response.text().then((_responseText) => { + return throwException("An unexpected server error occurred.", status, _responseText, _headers); + }); + } + return Promise.resolve<LoginInvitationResult>(null as any); + } +} + +export interface KeysResult { + /** List of public keys. */ + keys: string[]; + + [key: string]: any; +} + +export interface LoginInvitationResult { + /** Identifier of the proof invitation request. */ + proofRecordId: string; + /** Link containing the invitation proof request which the VCM can scan to login. */ + proofUrl: string; + /** Shortened URL link which the VCM can scan to login. */ + proofUrlShort: string; + + [key: string]: any; +} + +export interface LoginRequestBody { + email: string; + + [key: string]: any; +} + +export interface LoginResult { + /** Status message response. */ + message: string; + + [key: string]: any; +} + +export interface LoginVCResult { + /** Token in JWT format after successful login. */ + token: string; + + [key: string]: any; +} + +export interface LoginWithVCRequestBody { + proofRecordId: string; + + [key: string]: any; +} + +export interface FileResponse { + data: Blob; + status: number; + fileName?: string; + headers?: { [name: string]: any }; +} + +export class ApiException extends Error { + override message: string; + status: number; + response: string; + headers: { [key: string]: any; }; + result: any; + + constructor(message: string, status: number, response: string, headers: { [key: string]: any; }, result: any) { + super(); + + this.message = message; + this.status = status; + this.response = response; + this.headers = headers; + this.result = result; + } + + protected isApiException = true; + + static isApiException(obj: any): obj is ApiException { + return obj.isApiException === true; + } +} + +function throwException(message: string, status: number, response: string, headers: { [key: string]: any; }, result?: any): any { + if (result !== null && result !== undefined) + throw result; + else + throw new ApiException(message, status, response, headers, null); +} \ No newline at end of file diff --git a/libs/clients/src/index.ts b/libs/clients/src/index.ts deleted file mode 100644 index 7413a83117f8d8fb22835ec890fc93b77b8a3b67..0000000000000000000000000000000000000000 --- a/libs/clients/src/index.ts +++ /dev/null @@ -1,4 +0,0 @@ -export * from "./lib/gateway.client"; -export * from "./lib/connection.manager.client"; -export * from "./lib/attestation.manager.client"; -export * from "./lib/proof.manager.client"; diff --git a/libs/clients/src/ocmengine-client.ts b/libs/clients/src/ocmengine-client.ts new file mode 100644 index 0000000000000000000000000000000000000000..d3ae8f167faa151eceadca6836364684d323b186 --- /dev/null +++ b/libs/clients/src/ocmengine-client.ts @@ -0,0 +1,167 @@ +import { + AcceptCredentialDto, + AcceptProofDto, + ConnectionRecordDto, + CreateCredentialDefinitionRequestDto, + CreateInvitationRequestDto, + CreateInvitationResponseDto, + CreateSchemaRequestDto, + CreddefRecordDto, + CredentialFormatDataDto, + CredentialOfferResponseDto, + CredentialRecordDto, + IdReqDto, + MakeBasicMessageRequestDto, + MessageRecordDto, + OfferCredentialRequestDto, + ProofFormatDataDto, + ProofRecordDto, + RequestProofDto, + RequestProofResponseDto, + RestControllerClient, + Role, + Roles, + SchemaRecordDto, + States, + States2, + States3, + AcceptInvitationRequestDto +} from "./frontend/agent_gen"; + +export * from "./frontend/agent_gen"; + +export interface Config { + wsUrl: string; + httpUrl: string; + getToken: () => Promise<string>; +} + +let config: Config | null = null; + +export const setConfig = (cfg: Config) => (config = cfg); + +class ApiClient { + private _ws!: WebSocket; + private _rest!: RestControllerClient; + + public fetchInvitations = (states: States[] | undefined, roles: Roles[] | undefined) => this._rest.fetchInvitations(states, roles); + public createInvitation = (body: CreateInvitationRequestDto) => this._rest.createInvitation(body); + public getInvitationById = (id: string) => this._rest.getInvitationById(id); + public deleteInvitationById = (id: string) => this._rest.deleteInvitationById(id); + public acceptInvitation = (body: AcceptInvitationRequestDto) => this._rest.acceptInvitation(body); + public fetchConnections = () => this._rest.fetchConnections(); + public getConnectionById = (id: string) => this._rest.getConnectionById(id); + public deleteConnectionById = (id: string) => this._rest.deleteConnectionById(id); + public getConnectionByOobId = (id: string) => this._rest.getConnectionByOobId(id); + public createSchema = (body: CreateSchemaRequestDto) => this._rest.createSchema(body); + public fetchSchemas = () => this._rest.fetchSchemas(); + public getSchemaById = (body: IdReqDto) => this._rest.getSchemaById(body); + public fetchCredentialDefinitions = () => this._rest.fetchCredentialDefinitions(); + public createCredentialDefinition = (body: CreateCredentialDefinitionRequestDto) => this._rest.createCredentialDefinition(body); + public getCredentialDefinitionById = (body: IdReqDto) => this._rest.getCredentialDefinitionById(body); + public offerCredential = (body: OfferCredentialRequestDto) => this._rest.offerCredential(body); + public fetchCredentials = (states: States2[] | undefined, connectionId: string | undefined) => this._rest.fetchCredentials(states, connectionId); + public getCredentialById = (id: string) => this._rest.getCredentialById(id); + public deleteCredentialById = (id: string) => this._rest.deleteCredentialById(id); + public getCredentialFormatDataById = (id: string) => this._rest.getCredentialFormatDataById(id); + public acceptCredential = (body: AcceptCredentialDto) => this._rest.acceptCredential(body); + public declineCredential = (credential_record_id: string) => this._rest.declineCredential(credential_record_id); + public sendMessage = (body: MakeBasicMessageRequestDto) => this._rest.sendMessage(body); + public fetchBasicMessages = (role: Role | undefined, connectionId: string | undefined) => this._rest.fetchBasicMessages(role, connectionId); + public deleteBasicMessage = (id: string) => this._rest.deleteBasicMessage(id); + public fetchProofs = (states: States3[] | undefined, connectionId: string | undefined) => this._rest.fetchProofs(states, connectionId); + public getProofById = (proof_record_id: string) => this._rest.getProofById(proof_record_id); + public deleteProofById = (proof_record_id: string) => this._rest.deleteProofById(proof_record_id); + public getProofFormatDataById = (proof_record_id: string) => this._rest.getProofFormatDataById(proof_record_id); + public proofAcceptanceWait = (proof_record_id: string) => this._rest.proofAcceptanceWait(proof_record_id); + public requestProof = (body: RequestProofDto) => this._rest.requestProof(body); + public acceptProof = (body: AcceptProofDto) => this._rest.acceptProof(body); + public declineProofRequest = (proof_record_id: string) => this._rest.declineProofRequest(proof_record_id); + public resolveDid = (body: IdReqDto) => this._rest.resolveDid(body); + public getCreatedDids = () => this._rest.getCreatedDids(); + + public initialize() { + const _config = config as Config; + + this._rest = new RestControllerClient(_config.httpUrl, { + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-ignore + fetch: this._fetch.bind(this), + }); + this._rest.jsonParseReviver = this.jsonParseReviver; + + // this._listen(); + } + + public async getToken(): Promise<string> { + if (!config) { + throw new Error("ApiClient: Please call setConfig before calling api"); + } + + return config.getToken(); + } + + private async _fetch(url: RequestInfo, init?: RequestInit): Promise<unknown> { + if (!config) { + throw new Error("ApiClient: Please call setConfig before calling api"); + } + + init = Object.assign({}, init, { + headers: { + ...(init?.headers || {}), + Authorization: `Bearer ${await config.getToken()}`, + }, + }); + + return fetch(url, init); + } + + public jsonParseReviver = (key: string, value: unknown): unknown => { + if (typeof value === "string") { + const a = + /^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2}(?:\.\d*)?)Z?$/.exec( + value, + ); + if (a) { + return new Date(value); + } + } + return value; + }; + + private async _listen() { + console.log("Opening connection to " + config!.wsUrl); + const ws = new WebSocket(config!.wsUrl); + this._ws = ws; + // Connection opened + ws.addEventListener("open", (event) => { + console.log("Connected to the WebSocket"); + }); + + // Listen for messages + ws.addEventListener("message", (event) => { + console.log("Message from server: ", event.data); + const data = JSON.parse(event.data, this.jsonParseReviver); + + console.warn("Message not processed. No handler"); + }); + + // Connection closed + ws.addEventListener("close", (event) => { + if (event.wasClean) { + console.log( + `Closed cleanly, code=${event.code}, reason=${event.reason}`, + ); + } else { + console.log("Connection died"); + } + }); + + // Connection errors + ws.addEventListener("error", (error) => { + console.error(`WebSocket Error: ${error}`); + }); + } +} + +export default new ApiClient(); diff --git a/libs/clients/src/tsa-client.ts b/libs/clients/src/tsa-client.ts new file mode 100644 index 0000000000000000000000000000000000000000..783904c1289c6098e9864138d147e0709eaeb254 --- /dev/null +++ b/libs/clients/src/tsa-client.ts @@ -0,0 +1,73 @@ +import { + Client as TSAClient, + FileResponse, + KeysResult, + LoginInvitationResult, + LoginRequestBody, + LoginResult, + LoginVCResult, + LoginWithVCRequestBody, +} from "./frontend/tsa_gen"; + +export * from "./frontend/tsa_gen"; + +export interface Config { + tsaUrl: string; +} + +let config: Config | null = null; + +export const setConfig = (cfg: Config) => (config = cfg); + +class ApiClient { + private _rest!: TSAClient; + + /* rest api methods */ + + public loginKeys = (): Promise<KeysResult> => this._rest.loginKeys(); + public healthLiveness = (): Promise<FileResponse> => + this._rest.healthLiveness(); + public healthReadiness = (): Promise<FileResponse> => + this._rest.healthReadiness(); + public loginLogin = (body: LoginRequestBody): Promise<LoginResult> => + this._rest.loginLogin(body); + public loginLoginWithVC = ( + body: LoginWithVCRequestBody, + ): Promise<LoginVCResult> => this._rest.loginLoginWithVC(body); + public loginLoginInvitation = (): Promise<LoginInvitationResult> => + this._rest.loginLoginInvitation(); + + public initialize() { + const _config = config as Config; + + this._rest = new TSAClient(_config.tsaUrl, { + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-ignore + fetch: this._fetch.bind(this), + }); + this._rest.jsonParseReviver = this.jsonParseReviver; + } + + private async _fetch(url: RequestInfo, init?: RequestInit): Promise<unknown> { + if (!config) { + throw new Error("ApiClient: Please call setConfig before calling api"); + } + + return fetch(url, init); + } + + public jsonParseReviver = (key: string, value: unknown): unknown => { + if (typeof value === "string") { + const a = + /^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2}(?:\.\d*)?)Z?$/.exec( + value, + ); + if (a) { + return new Date(value); + } + } + return value; + }; +} + +export default new ApiClient(); diff --git a/libs/ts-client-generator/.gitignore b/libs/ts-client-generator/.gitignore new file mode 100644 index 0000000000000000000000000000000000000000..d45db4db8eb8081e523f72d74122f277777999ae --- /dev/null +++ b/libs/ts-client-generator/.gitignore @@ -0,0 +1,2 @@ +[Bb]in/ +[Oo]bj/ \ No newline at end of file diff --git a/libs/ts-client-generator/Dockerfile b/libs/ts-client-generator/Dockerfile new file mode 100644 index 0000000000000000000000000000000000000000..08074dbb931f425e0663c2dbaac3d0ba70a047d4 --- /dev/null +++ b/libs/ts-client-generator/Dockerfile @@ -0,0 +1,17 @@ +# Use the official image as a parent image +FROM mcr.microsoft.com/dotnet/sdk:7.0 + +# Set the working directory +WORKDIR /app + +# Copy the C# project and other necessary files into the container +COPY ./libs/ts-client-generator /app + +COPY ./agent-swagger.json /app/agent-swagger.json + +RUN dotnet restore + +RUN mkdir /app/generated + +# Set the entry point +ENTRYPOINT ["dotnet", "run", "--project", "/app", "/app/agent-swagger.json", "/app/generated/agent_gen.ts"] diff --git a/libs/ts-client-generator/Program.cs b/libs/ts-client-generator/Program.cs new file mode 100644 index 0000000000000000000000000000000000000000..ed8956bf172318aacc5507633e141415ba686f7e --- /dev/null +++ b/libs/ts-client-generator/Program.cs @@ -0,0 +1,42 @@ +using NJsonSchema.CodeGeneration.TypeScript; +using NSwag; +using NSwag.CodeGeneration.TypeScript; + +if (args.Length != 2) + throw new ArgumentException("Expecting 2 arguments: path, generatePath"); + +var path = args[0]; +var generatePath = Path.Combine(Directory.GetCurrentDirectory(), args[1]); + + +async static Task GenerateTypeScriptClient(string path, string generatePath) => + await GenerateClient( + document: await OpenApiDocument.FromFileAsync(path), + generatePath: generatePath, + generateCode: (OpenApiDocument document) => + { + var settings = new TypeScriptClientGeneratorSettings(); + + settings.TypeScriptGeneratorSettings.NullValue = TypeScriptNullValue.Null; + settings.TypeScriptGeneratorSettings.TypeStyle = TypeScriptTypeStyle.Interface; + settings.TypeScriptGeneratorSettings.TypeScriptVersion = 5.1M; + settings.TypeScriptGeneratorSettings.DateTimeType = TypeScriptDateTimeType.Date; + + var generator = new TypeScriptClientGenerator(document, settings); + var code = generator.GenerateFile(); + + code = code.Replace("protected jsonParseReviver", "public jsonParseReviver"); + return code; + } + ); + +await GenerateTypeScriptClient(path, generatePath); + +async static Task GenerateClient(OpenApiDocument document, string generatePath, Func<OpenApiDocument, string> generateCode) +{ + Console.WriteLine($"Generating {generatePath}..."); + + var code = generateCode(document); + + await System.IO.File.WriteAllTextAsync(generatePath, code); +} diff --git a/libs/ts-client-generator/TsClientGenerator.csproj b/libs/ts-client-generator/TsClientGenerator.csproj new file mode 100644 index 0000000000000000000000000000000000000000..52068a8837d89491d3dae2cc15117eb92714f859 --- /dev/null +++ b/libs/ts-client-generator/TsClientGenerator.csproj @@ -0,0 +1,14 @@ +<Project Sdk="Microsoft.NET.Sdk"> + + <PropertyGroup> + <OutputType>Exe</OutputType> + <TargetFramework>net7.0</TargetFramework> + <ImplicitUsings>enable</ImplicitUsings> + <Nullable>enable</Nullable> + </PropertyGroup> + + <ItemGroup> + <PackageReference Include="NSwag.CodeGeneration.TypeScript" Version="13.20.0" /> + <PackageReference Include="NSwag.Core" Version="13.20.0" /> + </ItemGroup> +</Project> diff --git a/nx.json b/nx.json index 35a020d3174b4a6df0680afbca681fd1f83af5fc..9450bdea7fc9946171ba594f5199e55d47b88ffd 100644 --- a/nx.json +++ b/nx.json @@ -38,5 +38,23 @@ "!{projectRoot}/.eslintrc.json" ], "sharedGlobals": [] + }, + "generators": { + "@nx/react": { + "application": { + "style": "scss", + "linter": "eslint", + "bundler": "webpack", + "babel": true + }, + "component": { + "style": "scss" + }, + "library": { + "style": "scss", + "linter": "eslint", + "unitTestRunner": "none" + } + } } } diff --git a/package.json b/package.json index 9979d29e05059f82ce25ba14d6862250ac668218..377e36f2da8c39a81e6df49190d2c78a9fea25be 100644 --- a/package.json +++ b/package.json @@ -3,7 +3,7 @@ "version": "0.0.0", "license": "Apache-2.0", "scripts": { - "build:all": "yarn build:agent && yarn build:cm && yarn build:am && yarn build:pm && yarn build:gw", + "build:all": "yarn build:agent && yarn build:cm && yarn build:am && yarn build:pm && yarn build:gw && yarn build:dashboard", "build:agent": "nx run agent:build:development --parallel=3", "build:agent:production": "nx run agent:build:production", "build:cm": "nx run connection-manager:build:development --parallel=3", @@ -14,12 +14,15 @@ "build:pm:production": "nx run proof-manager:build:production", "build:gw": "nx run gateway:build:development --parallel=3", "build:gw:production": "nx run gateway:build:production", - "serve:all": "concurrently \"yarn serve:agent\" \"yarn serve:cm\" \"yarn serve:am\" \"yarn serve:pm\" \"yarn serve:gw\"", + "build:dashboard": "nx run dashboard:build:development --parallel=3", + "build:dashboard:production": "nx run dashboard:build:production", + "serve:all": "concurrently \"yarn serve:agent\" \"yarn serve:cm\" \"yarn serve:am\" \"yarn serve:pm\" \"yarn serve:gw\" \"yarn serve:dashboard\"", "serve:agent": "nx run agent:serve:development", "serve:cm": "nx run connection-manager:serve:development", "serve:am": "nx run attestation-manager:serve:development", "serve:pm": "nx run proof-manager:serve:development", "serve:gw": "nx run gateway:serve:development", + "serve:dashboard": "nx run dashboard:serve:development", "infra": "cd compose && docker-compose --profile issuer --profile holder up -d --build", "infra:down": "cd compose && docker-compose --profile issuer --profile holder down", "infra:status": "cd compose && docker-compose ps -a", @@ -29,10 +32,12 @@ "infra:holder:stop": "cd compose && docker-compose --profile holder stop", "infra:local": "cd compose && docker-compose -f docker-compose.infra.yml up -d", "infra:local:stop": "cd compose && docker-compose -f docker-compose.infra.yml stop", - "infra:simple": "cd compose && docker-compose -f docker-compose.simple.yml up -d" + "infra:simple": "cd compose && docker-compose -f docker-compose.simple.yml up -d", + "generate-ocmengine-client": "./client-generator.sh ocmengine" }, "private": true, "dependencies": { + "@fontsource/roboto": "^5.0.8", "@hyperledger/anoncreds-nodejs": "^0.1.0", "@hyperledger/aries-askar-nodejs": "^0.1.0", "@hyperledger/aries-askar-shared": "^0.1.0", @@ -45,16 +50,27 @@ "@nestjs/platform-express": "^9.0.0", "@nestjs/platform-ws": "^10.1.3", "@nestjs/websockets": "^9.4.2", + "@swc/helpers": "~0.5.2", + "antd": "^5.10.1", "async-retry": "^1.3.3", "axios": "^1.0.0", "class-transformer": "^0.5.1", "class-validator": "^0.14.0", + "classnames": "^2.3.2", "cloudevents": "^7.0.0", + "date-fns": "^2.30.0", "joi": "^17.9.2", + "mobx": "^6.10.2", + "mobx-react": "^9.0.1", "nats": "^2.14.0", + "normalize.css": "^8.0.1", "passport": "^0.6.0", "passport-http": "^0.3.0", "passport-local": "^1.0.0", + "react": "18.2.0", + "react-dom": "18.2.0", + "react-router-dom": "6.11.2", + "react-toastify": "^9.1.3", "reflect-metadata": "^0.1.13", "rxjs": "^7.0.0", "tslib": "^2.3.0", @@ -67,44 +83,64 @@ "@aries-framework/core": "^0.4.0", "@aries-framework/indy-vdr": "^0.4.0", "@aries-framework/node": "^0.4.0", + "@babel/core": "^7.14.5", + "@babel/preset-react": "^7.14.5", "@commitlint/config-conventional": "^17.6.1", "@nestjs/schematics": "^9.0.0", "@nestjs/swagger": "^6.3.0", "@nestjs/testing": "^9.0.0", - "@nx/eslint-plugin": "16.0.1", - "@nx/jest": "16.0.1", - "@nx/js": "16.0.1", - "@nx/linter": "16.0.1", - "@nx/nest": "16.0.1", - "@nx/node": "16.0.1", - "@nx/webpack": "16.0.1", - "@nx/workspace": "16.0.1", + "@nx/eslint-plugin": "16.10.0", + "@nx/jest": "16.10.0", + "@nx/js": "16.10.0", + "@nx/linter": "16.10.0", + "@nx/nest": "16.10.0", + "@nx/node": "16.10.0", + "@nx/react": "^16.10.0", + "@nx/webpack": "16.10.0", + "@nx/workspace": "16.10.0", + "@pmmmwh/react-refresh-webpack-plugin": "^0.5.7", "@semantic-release/changelog": "^6.0.3", "@semantic-release/commit-analyzer": "^9.0.2", "@semantic-release/git": "^10.0.1", "@semantic-release/gitlab": "^12.0.1", "@semantic-release/release-notes-generator": "^11.0.1", + "@svgr/webpack": "^8.0.1", + "@swc-node/register": "^1.6.8", + "@swc/cli": "~0.1.62", + "@swc/core": "^1.3.99", + "@testing-library/react": "14.0.0", "@types/async-retry": "^1.4.5", "@types/jest": "^29.4.0", - "@types/node": "~18.7.1", + "@types/node": "18.14.2", "@types/passport-http": "^0.3.9", "@types/passport-local": "^1.0.35", + "@types/react": "18.2.24", + "@types/react-dom": "18.2.9", + "@types/uuid": "^9.0.6", "@typescript-eslint/eslint-plugin": "^5.58.0", "@typescript-eslint/parser": "^5.58.0", + "babel-jest": "^29.4.1", "concurrently": "^8.2.0", "conventional-changelog-conventionalcommits": "^5.0.0", "eslint": "~8.15.0", "eslint-config-prettier": "8.1.0", + "eslint-plugin-import": "2.27.5", + "eslint-plugin-jsx-a11y": "6.7.1", "eslint-plugin-prettier": "^4.2.1", + "eslint-plugin-react": "7.32.2", + "eslint-plugin-react-hooks": "4.6.0", "jest": "^29.4.1", + "jest-environment-jsdom": "^29.4.1", "jest-environment-node": "^29.4.1", - "nx": "16.0.1", + "nx": "16.10.0", "prettier": "^2.6.2", + "react-refresh": "^0.10.0", "semantic-release": "^21.0.2", "standard-changelog": "^2.0.27", "ts-jest": "^29.1.0", "ts-node": "10.9.1", - "typescript": "~4.9.5" + "typescript": "~4.9.5", + "url-loader": "^4.1.1" }, "resolutions": { "ref-napi": "npm:@2060.io/ref-napi" diff --git a/tsconfig.base.json b/tsconfig.base.json index 17ada64742a2f2037eceeab3dd741487ab7474c1..d59b4c943f7f9ea6f0ad9beed7797601f85017bc 100644 --- a/tsconfig.base.json +++ b/tsconfig.base.json @@ -19,8 +19,11 @@ "strictPropertyInitialization": false, "baseUrl": ".", "paths": { + "@dashboard/*": ["apps/dashboard/src/*"], + "@dashboard/engine-api": ["libs/clients/src/ocmengine-client.ts"], + "@dashboard/tsa-api": ["libs/clients/src/tsa-client.ts"], "@ocm-engine/askar": ["libs/askar/src/index.ts"], - "@ocm-engine/clients": ["libs/clients/src/index.ts"], + "@ocm-engine/clients": ["libs/clients/src/backend.ts"], "@ocm-engine/config": ["libs/config/src/index.ts"], "@ocm-engine/dtos": ["libs/dtos/src/index.ts"], "@ocm-engine/ledgers": ["libs/ledgers/src/index.ts"], diff --git a/yarn.lock b/yarn.lock index ef7e807f56377770c9a0fae4fcd8da742cc2bd23..c7ef67c38f6334815a26187e52325cbe19718901 100644 --- a/yarn.lock +++ b/yarn.lock @@ -7,6 +7,11 @@ resolved "https://registry.yarnpkg.com/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz#bd9154aec9983f77b3a034ecaa015c2e4201f6cf" integrity sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA== +"@adobe/css-tools@^4.0.1": + version "4.3.1" + resolved "https://registry.yarnpkg.com/@adobe/css-tools/-/css-tools-4.3.1.tgz#abfccb8ca78075a2b6187345c26243c1a0842f28" + integrity sha512-/62yikz7NLScCGAAST5SHdnjaDJQBDq0M2muyRTpf2VQhw6StBg2ALiu73zSJQ4fMVLA+0uBhBHAle7Wg+2kSg== + "@ampproject/remapping@^2.2.0": version "2.2.1" resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.2.1.tgz#99e8e11851128b8702cd57c33684f1d0f260b630" @@ -37,6 +42,53 @@ ora "5.4.1" rxjs "7.8.1" +"@ant-design/colors@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@ant-design/colors/-/colors-7.0.0.tgz#eb7eecead124c3533aea05d61254f0a17f2b61b3" + integrity sha512-iVm/9PfGCbC0dSMBrz7oiEXZaaGH7ceU40OJEfKmyuzR9R5CRimJYPlRiFtMQGQcbNMea/ePcoIebi4ASGYXtg== + dependencies: + "@ctrl/tinycolor" "^3.4.0" + +"@ant-design/cssinjs@^1.17.5": + version "1.17.5" + resolved "https://registry.yarnpkg.com/@ant-design/cssinjs/-/cssinjs-1.17.5.tgz#be5bbfbf4c857e7df6e3650c9bccf7e527da7ef2" + integrity sha512-Ed2rruHMxZTVYGPec6QBZkrh00Df5K1FAufmBpONai5iGYxoxIkg1sRD8YdCw0NvPRAa4r1nJP5LbwICGHzGiQ== + dependencies: + "@babel/runtime" "^7.11.1" + "@emotion/hash" "^0.8.0" + "@emotion/unitless" "^0.7.5" + classnames "^2.3.1" + csstype "^3.0.10" + rc-util "^5.35.0" + stylis "^4.0.13" + +"@ant-design/icons-svg@^4.3.0": + version "4.3.1" + resolved "https://registry.yarnpkg.com/@ant-design/icons-svg/-/icons-svg-4.3.1.tgz#4b2f65a17d4d32b526baa6414aca2117382bf8da" + integrity sha512-4QBZg8ccyC6LPIRii7A0bZUk3+lEDCLnhB+FVsflGdcWPPmV+j3fire4AwwoqHV/BibgvBmR9ZIo4s867smv+g== + +"@ant-design/icons@^5.2.6": + version "5.2.6" + resolved "https://registry.yarnpkg.com/@ant-design/icons/-/icons-5.2.6.tgz#2d4a9a37f531eb2a20cebec01d6fb69cf593900d" + integrity sha512-4wn0WShF43TrggskBJPRqCD0fcHbzTYjnaoskdiJrVHg86yxoZ8ZUqsXvyn4WUqehRiFKnaclOhqk9w4Ui2KVw== + dependencies: + "@ant-design/colors" "^7.0.0" + "@ant-design/icons-svg" "^4.3.0" + "@babel/runtime" "^7.11.2" + classnames "^2.2.6" + rc-util "^5.31.1" + +"@ant-design/react-slick@~1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@ant-design/react-slick/-/react-slick-1.0.2.tgz#241bb412aeacf7ff5d50c61fa5db66773fde6b56" + integrity sha512-Wj8onxL/T8KQLFFiCA4t8eIRGpRR+UPgOdac2sYzonv+i0n3kXHmvHLLiOYL655DQx2Umii9Y9nNgL7ssu5haQ== + dependencies: + "@babel/runtime" "^7.10.4" + classnames "^2.2.5" + json2mq "^0.2.0" + resize-observer-polyfill "^1.5.1" + throttle-debounce "^5.0.0" + "@aries-framework/anoncreds-rs@^0.4.0": version "0.4.2" resolved "https://registry.yarnpkg.com/@aries-framework/anoncreds-rs/-/anoncreds-rs-0.4.2.tgz#accce59154083dadc91d6a9c8333af8cb10f2188" @@ -126,46 +178,46 @@ ref-napi "^3.0.3" ws "^8.13.0" -"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.16.7", "@babel/code-frame@^7.21.4", "@babel/code-frame@^7.22.13": - version "7.22.13" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.22.13.tgz#e3c1c099402598483b7a8c46a721d1038803755e" - integrity sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w== +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.16.7", "@babel/code-frame@^7.21.4", "@babel/code-frame@^7.22.13", "@babel/code-frame@^7.23.4": + version "7.23.4" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.23.4.tgz#03ae5af150be94392cb5c7ccd97db5a19a5da6aa" + integrity sha512-r1IONyb6Ia+jYR2vvIDhdWdlTGhqbBoFqLTQidzZ4kepUFH15ejXvFHxCVbtl7BOXIudsIubf4E81xeA3h3IXA== dependencies: - "@babel/highlight" "^7.22.13" + "@babel/highlight" "^7.23.4" chalk "^2.4.2" -"@babel/compat-data@^7.22.6", "@babel/compat-data@^7.22.9", "@babel/compat-data@^7.23.2": - version "7.23.2" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.23.2.tgz#6a12ced93455827037bfb5ed8492820d60fc32cc" - integrity sha512-0S9TQMmDHlqAZ2ITT95irXKfxN9bncq8ZCoJhun3nHL/lLUxd2NKBJYoNGWH7S0hz6fRQwWlAWn/ILM0C70KZQ== +"@babel/compat-data@^7.22.6", "@babel/compat-data@^7.22.9", "@babel/compat-data@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.23.3.tgz#3febd552541e62b5e883a25eb3effd7c7379db11" + integrity sha512-BmR4bWbDIoFJmJ9z2cZ8Gmm2MXgEDgjdWgpKmKWUt54UGFJdlj31ECtbaDvCG/qVdG3AQ1SfpZEs01lUFbzLOQ== -"@babel/core@^7.11.6", "@babel/core@^7.12.3", "@babel/core@^7.15.0": - version "7.23.2" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.23.2.tgz#ed10df0d580fff67c5f3ee70fd22e2e4c90a9f94" - integrity sha512-n7s51eWdaWZ3vGT2tD4T7J6eJs3QoBXydv7vkUM06Bf1cbVD2Kc2UrkzhiQwobfV7NwOnQXYL7UBJ5VPU+RGoQ== +"@babel/core@^7.11.6", "@babel/core@^7.12.3", "@babel/core@^7.14.5", "@babel/core@^7.21.3", "@babel/core@^7.22.9": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.23.3.tgz#5ec09c8803b91f51cc887dedc2654a35852849c9" + integrity sha512-Jg+msLuNuCJDyBvFv5+OKOUjWMZgd85bKjbICd3zWrKAo+bJ49HJufi7CQE0q0uR8NGyO6xkCACScNqyjHSZew== dependencies: "@ampproject/remapping" "^2.2.0" "@babel/code-frame" "^7.22.13" - "@babel/generator" "^7.23.0" + "@babel/generator" "^7.23.3" "@babel/helper-compilation-targets" "^7.22.15" - "@babel/helper-module-transforms" "^7.23.0" + "@babel/helper-module-transforms" "^7.23.3" "@babel/helpers" "^7.23.2" - "@babel/parser" "^7.23.0" + "@babel/parser" "^7.23.3" "@babel/template" "^7.22.15" - "@babel/traverse" "^7.23.2" - "@babel/types" "^7.23.0" + "@babel/traverse" "^7.23.3" + "@babel/types" "^7.23.3" 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.0", "@babel/generator@^7.7.2": - version "7.23.0" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.23.0.tgz#df5c386e2218be505b34837acbcb874d7a983420" - integrity sha512-lN85QRR+5IbYrMWM6Y4pE/noaQtg4pNiqeNGX60eqOfo6gtEj6uw/JagelB8vVztSd7R6M5n1+PQkDbHbBRU4g== +"@babel/generator@^7.23.3", "@babel/generator@^7.23.4", "@babel/generator@^7.7.2": + version "7.23.4" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.23.4.tgz#4a41377d8566ec18f807f42962a7f3551de83d1c" + integrity sha512-esuS49Cga3HcThFNebGhlgsrVLkvhqvYDTzgjfFFlHJcIfLe5jFmRRfCQ1KuBfc4Jrtn3ndLgKWAKjBE+IraYQ== dependencies: - "@babel/types" "^7.23.0" + "@babel/types" "^7.23.4" "@jridgewell/gen-mapping" "^0.3.2" "@jridgewell/trace-mapping" "^0.3.17" jsesc "^2.5.1" @@ -177,14 +229,14 @@ dependencies: "@babel/types" "^7.22.5" -"@babel/helper-builder-binary-assignment-operator-visitor@^7.22.5": +"@babel/helper-builder-binary-assignment-operator-visitor@^7.22.15": version "7.22.15" resolved "https://registry.yarnpkg.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.5", "@babel/helper-compilation-targets@^7.22.6": +"@babel/helper-compilation-targets@^7.22.15", "@babel/helper-compilation-targets@^7.22.6": version "7.22.15" resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.15.tgz#0698fc44551a26cf29f18d4662d5bf545a6cfc52" integrity sha512-y6EEzULok0Qvz8yyLkCvVX+02ic+By2UdOhylwUOvOn9dvYc9mKICJuuU1n1XBI02YWsNsnrY1kc6DVbjcXbtw== @@ -195,7 +247,7 @@ lru-cache "^5.1.1" semver "^6.3.1" -"@babel/helper-create-class-features-plugin@^7.18.6", "@babel/helper-create-class-features-plugin@^7.22.11", "@babel/helper-create-class-features-plugin@^7.22.15", "@babel/helper-create-class-features-plugin@^7.22.5": +"@babel/helper-create-class-features-plugin@^7.18.6", "@babel/helper-create-class-features-plugin@^7.22.15": version "7.22.15" resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.22.15.tgz#97a61b385e57fe458496fad19f8e63b63c867de4" integrity sha512-jKkwA59IXcvSaiK2UN45kKwSC9o+KuoXsBDvHvU/7BecYIp8GQ2UwrVvFgJASUT+hBnwJx6MhvMCuMzwZZ7jlg== @@ -210,7 +262,7 @@ "@babel/helper-split-export-declaration" "^7.22.6" semver "^6.3.1" -"@babel/helper-create-regexp-features-plugin@^7.18.6", "@babel/helper-create-regexp-features-plugin@^7.22.5": +"@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": version "7.22.15" resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.22.15.tgz#5ee90093914ea09639b01c711db0d6775e558be1" integrity sha512-29FkPLFjn4TPEa3RE7GpW+qbE8tlsu3jntNYNfcGsc49LphF1PQIiD+vMZ1z1xVOKt+93khA9tc2JBs3kBjA7w== @@ -257,17 +309,17 @@ dependencies: "@babel/types" "^7.23.0" -"@babel/helper-module-imports@^7.22.15", "@babel/helper-module-imports@^7.22.5": +"@babel/helper-module-imports@^7.22.15": version "7.22.15" resolved "https://registry.yarnpkg.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.22.5", "@babel/helper-module-transforms@^7.23.0": - version "7.23.0" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.23.0.tgz#3ec246457f6c842c0aee62a01f60739906f7047e" - integrity sha512-WhDWw1tdrlT0gMgUJSlX0IQvoO1eN279zrAUbVB+KpV2c3Tylz8+GnKOLllCS6Z/iZQEyVYxhZVUdPTqs2YYPw== +"@babel/helper-module-transforms@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.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" @@ -287,7 +339,7 @@ resolved "https://registry.yarnpkg.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", "@babel/helper-remap-async-to-generator@^7.22.5": +"@babel/helper-remap-async-to-generator@^7.22.20": version "7.22.20" resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.22.20.tgz#7b68e1cb4fa964d2996fd063723fb48eca8498e0" integrity sha512-pBGyV4uBqOns+0UvhsTO8qgl8hO89PmiDYv+/COyp1aeMcmfrfruz+/nCMFiYyFF/Knn0yfrC85ZzNFjembFTw== @@ -296,7 +348,7 @@ "@babel/helper-environment-visitor" "^7.22.20" "@babel/helper-wrap-function" "^7.22.20" -"@babel/helper-replace-supers@^7.22.20", "@babel/helper-replace-supers@^7.22.5", "@babel/helper-replace-supers@^7.22.9": +"@babel/helper-replace-supers@^7.22.20", "@babel/helper-replace-supers@^7.22.9": version "7.22.20" resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.22.20.tgz#e37d367123ca98fe455a9887734ed2e16eb7a793" integrity sha512-qsW0In3dbwQUbK8kejJ4R7IHVGwHJlV6lpG6UA7a9hSa2YEiAib+N1T2kr6PEeUT+Fl7najmSOS6SmAwCHK6Tw== @@ -326,10 +378,10 @@ dependencies: "@babel/types" "^7.22.5" -"@babel/helper-string-parser@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz#533f36457a25814cf1df6488523ad547d784a99f" - integrity sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw== +"@babel/helper-string-parser@^7.23.4": + version "7.23.4" + resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.23.4.tgz#9478c707febcbbe1ddb38a3d91a2e054ae622d83" + integrity sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ== "@babel/helper-validator-identifier@^7.22.20": version "7.22.20" @@ -351,45 +403,53 @@ "@babel/types" "^7.22.19" "@babel/helpers@^7.23.2": - version "7.23.2" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.23.2.tgz#2832549a6e37d484286e15ba36a5330483cac767" - integrity sha512-lzchcp8SjTSVe/fPmLwtWVBFC7+Tbn8LGHDVfDp9JGxpAY5opSaEFgt8UQvrnECWOTdji2mOWMz1rOhkHscmGQ== + version "7.23.4" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.23.4.tgz#7d2cfb969aa43222032193accd7329851facf3c1" + integrity sha512-HfcMizYz10cr3h29VqyfGL6ZWIjTwWfvYBMsBVGwpcbhNGe3wQ1ZXZRPzZoAHhd9OqHadHqjQ89iVKINXnbzuw== dependencies: "@babel/template" "^7.22.15" - "@babel/traverse" "^7.23.2" - "@babel/types" "^7.23.0" + "@babel/traverse" "^7.23.4" + "@babel/types" "^7.23.4" -"@babel/highlight@^7.22.13": - version "7.22.20" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.22.20.tgz#4ca92b71d80554b01427815e06f2df965b9c1f54" - integrity sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg== +"@babel/highlight@^7.23.4": + version "7.23.4" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.23.4.tgz#edaadf4d8232e1a961432db785091207ead0621b" + integrity sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A== dependencies: "@babel/helper-validator-identifier" "^7.22.20" chalk "^2.4.2" js-tokens "^4.0.0" -"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.20.7", "@babel/parser@^7.22.15", "@babel/parser@^7.23.0": - version "7.23.0" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.23.0.tgz#da950e622420bf96ca0d0f2909cdddac3acd8719" - integrity sha512-vvPKKdMemU85V9WE/l5wZEmImpCtLqbnTvqDS2U1fJ96KrxoW7KrXhNsNCblQlg8Ck4b85yxdTyelsMUgFUXiw== +"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.20.7", "@babel/parser@^7.22.15", "@babel/parser@^7.23.3", "@babel/parser@^7.23.4": + version "7.23.4" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.23.4.tgz#409fbe690c333bb70187e2de4021e1e47a026661" + integrity sha512-vf3Xna6UEprW+7t6EtOmFpHNAuxw3xqPZghy+brsnusscJRW5BMUzzHZc5ICjULee81WeUV2jjakG09MDglJXQ== -"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.22.15": - version "7.22.15" - resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.22.15.tgz#02dc8a03f613ed5fdc29fb2f728397c78146c962" - integrity sha512-FB9iYlz7rURmRJyXRKEnalYPPdn87H5no108cyuQQyMwlpJ2SJtpIUBI27kdTin956pz+LPypkPVPUTlxOmrsg== +"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.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.22.15": - version "7.22.15" - resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.22.15.tgz#2aeb91d337d4e1a1e7ce85b76a37f5301781200f" - integrity sha512-Hyph9LseGvAeeXzikV88bczhsrLrIZqDPxO+sSmAunMPaGrBGhfMWzCPYTtiW9t+HzSE2wtV8e5cc5P6r1xMDQ== +"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.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== dependencies: "@babel/helper-plugin-utils" "^7.22.5" "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" - "@babel/plugin-transform-optional-chaining" "^7.22.15" + "@babel/plugin-transform-optional-chaining" "^7.23.3" -"@babel/plugin-proposal-class-properties@^7.14.5": +"@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.23.3.tgz#20c60d4639d18f7da8602548512e9d3a4c8d7098" + integrity sha512-XaJak1qcityzrX0/IU5nKHb34VaibwP3saKqG6a/tppelgllOH13LUann4ZCIBcVOeE6H18K4Vx9QKkVww3z/w== + dependencies: + "@babel/helper-environment-visitor" "^7.22.20" + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-proposal-class-properties@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz#b110f59741895f7ec21a6fff696ec46265c446a3" integrity sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ== @@ -397,16 +457,16 @@ "@babel/helper-create-class-features-plugin" "^7.18.6" "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-proposal-decorators@^7.14.5": - version "7.23.2" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.23.2.tgz#0b345a5754f48309fa50b7cd99075ef0295b12c8" - integrity sha512-eR0gJQc830fJVGz37oKLvt9W9uUIQSAovUl0e9sJ3YeO09dlcoBVYD3CLrjCj4qHdXmfiyTyFt8yeQYSN5fxLg== +"@babel/plugin-proposal-decorators@^7.22.7": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.23.3.tgz#c609ca70be908d187ee36ff49f1250c56cc98f15" + integrity sha512-u8SwzOcP0DYSsa++nHd/9exlHb0NAlHCb890qtZZbSwPX2bFv8LBEztxwN7Xg/dS8oAFFidhrI9PBcLBJSkGRQ== dependencies: "@babel/helper-create-class-features-plugin" "^7.22.15" "@babel/helper-plugin-utils" "^7.22.5" "@babel/helper-replace-supers" "^7.22.20" "@babel/helper-split-export-declaration" "^7.22.6" - "@babel/plugin-syntax-decorators" "^7.22.10" + "@babel/plugin-syntax-decorators" "^7.23.3" "@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2": version "7.21.0-placeholder-for-preset-env.2" @@ -441,10 +501,10 @@ dependencies: "@babel/helper-plugin-utils" "^7.14.5" -"@babel/plugin-syntax-decorators@^7.22.10": - version "7.22.10" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.22.10.tgz#7d83ea04d893c442b78ebf4c3cbac59a7211deff" - integrity sha512-z1KTVemBjnz+kSEilAsI4lbkPOl5TvJH7YDSY1CTIzvLWJ+KHXp+mRe8VPmfnyvqOPqar1V2gid2PleKzRUstQ== +"@babel/plugin-syntax-decorators@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.23.3.tgz#a1d351d6c25bfdcf2e16f99b039101bc0ffcb0ca" + integrity sha512-cf7Niq4/+/juY67E0PbgH0TDhLQ5J7zS8C/Q5FFx+DWyrRa9sUQdTXkjqKu8zGvuqr7vw1muKiukseihU+PJDA== dependencies: "@babel/helper-plugin-utils" "^7.22.5" @@ -462,17 +522,17 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-syntax-import-assertions@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.22.5.tgz#07d252e2aa0bc6125567f742cd58619cb14dce98" - integrity sha512-rdV97N7KqsRzeNGoWUOK6yUsWarLjE5Su/Snk9IYPU9CwkWHs4t+rTGOvffTR8XGkJMTAdLfO0xVnXm8wugIJg== +"@babel/plugin-syntax-import-assertions@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.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.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.22.5.tgz#ab840248d834410b829f569f5262b9e517555ecb" - integrity sha512-KwvoWDeNKPETmozyFE0P2rOLqh39EoQHNjqizrI5B8Vt0ZNS7M56s7dAiAqbYfiAYOuIzIh96z3iR2ktgu3tEg== +"@babel/plugin-syntax-import-attributes@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.23.3.tgz#992aee922cf04512461d7dae3ff6951b90a2dc06" + integrity sha512-pawnE0P9g10xgoP7yKr6CK63K2FMsTE+FZidZO/1PwRdzmAPVs+HS1mAURUsgaoxammTJvULUdIkEK0gOcU2tA== dependencies: "@babel/helper-plugin-utils" "^7.22.5" @@ -490,10 +550,10 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-jsx@^7.22.5", "@babel/plugin-syntax-jsx@^7.7.2": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.22.5.tgz#a6b68e84fb76e759fc3b93e901876ffabbe1d918" - integrity sha512-gvyP4hZrgrs/wWMaocvxZ44Hw0b3W8Pe+cMxc8V1ULQ07oh8VNbIRaoD1LRZVTvD+0nieDKjfgKg89sD7rrKrg== +"@babel/plugin-syntax-jsx@^7.23.3", "@babel/plugin-syntax-jsx@^7.7.2": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.23.3.tgz#8f2e4f8a9b5f9aa16067e142c1ac9cd9f810f473" + integrity sha512-EB2MELswq55OHUoRZLGg/zC7QWUKfNLpE57m/S2yr1uEneIgsTgrSzXP3NXEsMkVn76OlaVVnzN+ugObuYGwhg== dependencies: "@babel/helper-plugin-utils" "^7.22.5" @@ -553,10 +613,10 @@ dependencies: "@babel/helper-plugin-utils" "^7.14.5" -"@babel/plugin-syntax-typescript@^7.22.5", "@babel/plugin-syntax-typescript@^7.3.3", "@babel/plugin-syntax-typescript@^7.7.2": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.22.5.tgz#aac8d383b062c5072c647a31ef990c1d0af90272" - integrity sha512-1mS2o03i7t1c6VzH6fdQ3OA8tcEIxwG18zIPRp+UY1Ihv6W+XZzBCVxExF9upussPXJ0xE9XRHwMoNs1ep/nRQ== +"@babel/plugin-syntax-typescript@^7.23.3", "@babel/plugin-syntax-typescript@^7.3.3", "@babel/plugin-syntax-typescript@^7.7.2": + version "7.23.3" + resolved "https://registry.yarnpkg.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" @@ -568,211 +628,211 @@ "@babel/helper-create-regexp-features-plugin" "^7.18.6" "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-arrow-functions@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.22.5.tgz#e5ba566d0c58a5b2ba2a8b795450641950b71958" - integrity sha512-26lTNXoVRdAnsaDXPpvCNUq+OVWEVC6bx7Vvz9rC53F2bagUWW4u4ii2+h8Fejfh7RYqPxn+libeFBBck9muEw== +"@babel/plugin-transform-arrow-functions@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.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.2": - version "7.23.2" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.23.2.tgz#054afe290d64c6f576f371ccc321772c8ea87ebb" - integrity sha512-BBYVGxbDVHfoeXbOwcagAkOQAm9NxoTdMGfTqghu1GrvadSaw6iW3Je6IcL5PNOw8VwjxqBECXy50/iCQSY/lQ== +"@babel/plugin-transform-async-generator-functions@^7.23.3": + version "7.23.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.23.4.tgz#93ac8e3531f347fba519b4703f9ff2a75c6ae27a" + integrity sha512-efdkfPhHYTtn0G6n2ddrESE91fgXxjlqLsnUtPWnJs4a4mZIbUaK7ffqKIIUKXSHwcDvaCVX6GXkaJJFqtX7jw== 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.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.22.5.tgz#c7a85f44e46f8952f6d27fe57c2ed3cc084c3775" - integrity sha512-b1A8D8ZzE/VhNDoV1MSJTnpKkCG5bJo+19R4o4oy03zM7ws8yEMK755j61Dc3EyvdysbqH5BOOTquJ7ZX9C6vQ== +"@babel/plugin-transform-async-to-generator@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.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.5" + "@babel/helper-module-imports" "^7.22.15" "@babel/helper-plugin-utils" "^7.22.5" - "@babel/helper-remap-async-to-generator" "^7.22.5" + "@babel/helper-remap-async-to-generator" "^7.22.20" -"@babel/plugin-transform-block-scoped-functions@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.22.5.tgz#27978075bfaeb9fa586d3cb63a3d30c1de580024" - integrity sha512-tdXZ2UdknEKQWKJP1KMNmuF5Lx3MymtMN/pvA+p/VEkhK8jVcQ1fzSy8KM9qRYhAf2/lV33hoMPKI/xaI9sADA== +"@babel/plugin-transform-block-scoped-functions@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.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.0": - version "7.23.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.23.0.tgz#8744d02c6c264d82e1a4bc5d2d501fd8aff6f022" - integrity sha512-cOsrbmIOXmf+5YbL99/S49Y3j46k/T16b9ml8bm9lP6N9US5iQ2yBK7gpui1pg0V/WMcXdkfKbTb7HXq9u+v4g== +"@babel/plugin-transform-block-scoping@^7.23.3": + version "7.23.4" + resolved "https://registry.yarnpkg.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.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.22.5.tgz#97a56e31ad8c9dc06a0b3710ce7803d5a48cca77" - integrity sha512-nDkQ0NfkOhPTq8YCLiWNxp1+f9fCobEjCb0n8WdbNUBc4IB5V7P1QnX9IjpSoquKrXF5SKojHleVNs2vGeHCHQ== +"@babel/plugin-transform-class-properties@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.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.5" + "@babel/helper-create-class-features-plugin" "^7.22.15" "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-class-static-block@^7.22.11": - version "7.22.11" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.22.11.tgz#dc8cc6e498f55692ac6b4b89e56d87cec766c974" - integrity sha512-GMM8gGmqI7guS/llMFk1bJDkKfn3v3C4KHK9Yg1ey5qcHcOlKb0QvcMrgzvxo+T03/4szNh5lghY+fEC98Kq9g== +"@babel/plugin-transform-class-static-block@^7.23.3": + version "7.23.4" + resolved "https://registry.yarnpkg.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.11" + "@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.22.15": - version "7.22.15" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.22.15.tgz#aaf4753aee262a232bbc95451b4bdf9599c65a0b" - integrity sha512-VbbC3PGjBdE0wAWDdHM9G8Gm977pnYI0XpqMd6LrKISj8/DJXEsWqgRuTYaNE9Bv0JGhTZUzHDlMk18IpOuoqw== +"@babel/plugin-transform-classes@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.23.3.tgz#73380c632c095b03e8503c24fd38f95ad41ffacb" + integrity sha512-FGEQmugvAEu2QtgtU0uTASXevfLMFfBeVCIIdcQhn/uBQsMTjBajdnAtanQlOcuihWh10PZ7+HWvc7NtBwP74w== dependencies: "@babel/helper-annotate-as-pure" "^7.22.5" "@babel/helper-compilation-targets" "^7.22.15" - "@babel/helper-environment-visitor" "^7.22.5" - "@babel/helper-function-name" "^7.22.5" + "@babel/helper-environment-visitor" "^7.22.20" + "@babel/helper-function-name" "^7.23.0" "@babel/helper-optimise-call-expression" "^7.22.5" "@babel/helper-plugin-utils" "^7.22.5" - "@babel/helper-replace-supers" "^7.22.9" + "@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.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.22.5.tgz#cd1e994bf9f316bd1c2dafcd02063ec261bb3869" - integrity sha512-4GHWBgRf0krxPX+AaPtgBAlTgTeZmqDynokHOX7aqqAB4tHs3U2Y02zH6ETFdLZGcg9UQSD1WCmkVrE9ErHeOg== +"@babel/plugin-transform-computed-properties@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.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.5" + "@babel/template" "^7.22.15" -"@babel/plugin-transform-destructuring@^7.23.0": - version "7.23.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.23.0.tgz#6447aa686be48b32eaf65a73e0e2c0bd010a266c" - integrity sha512-vaMdgNXFkYrB+8lbgniSYWHsgqK5gjaMNcc84bMIOMRLH0L9AqYq3hwMdvnyqj1OPqea8UtjPEuS/DCenah1wg== +"@babel/plugin-transform-destructuring@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.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.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.22.5.tgz#dbb4f0e45766eb544e193fb00e65a1dd3b2a4165" - integrity sha512-5/Yk9QxCQCl+sOIB1WelKnVRxTJDSAIxtJLL2/pqL14ZVlbH0fUQUZa/T5/UnQtBNgghR7mfB8ERBKyKPCi7Vw== +"@babel/plugin-transform-dotall-regex@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.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.5" + "@babel/helper-create-regexp-features-plugin" "^7.22.15" "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-duplicate-keys@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.22.5.tgz#b6e6428d9416f5f0bba19c70d1e6e7e0b88ab285" - integrity sha512-dEnYD+9BBgld5VBXHnF/DbYGp3fqGMsyxKbtD1mDyIA7AkTSpKXFhCVuj/oQVOoALfBs77DudA0BE4d5mcpmqw== +"@babel/plugin-transform-duplicate-keys@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.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.22.11": - version "7.22.11" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.22.11.tgz#2c7722d2a5c01839eaf31518c6ff96d408e447aa" - integrity sha512-g/21plo58sfteWjaO0ZNVb+uEOkJNjAaHhbejrnBmu011l/eNDScmkbjCC3l4FKb10ViaGU4aOkFznSu2zRHgA== +"@babel/plugin-transform-dynamic-import@^7.23.3": + version "7.23.4" + resolved "https://registry.yarnpkg.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.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.22.5.tgz#402432ad544a1f9a480da865fda26be653e48f6a" - integrity sha512-vIpJFNM/FjZ4rh1myqIya9jXwrwwgFRHPjT3DkUA9ZLHuzox8jiXkOLvwm1H+PQIP3CqfC++WPKeuDi0Sjdj1g== +"@babel/plugin-transform-exponentiation-operator@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.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.5" + "@babel/helper-builder-binary-assignment-operator-visitor" "^7.22.15" "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-export-namespace-from@^7.22.11": - version "7.22.11" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.22.11.tgz#b3c84c8f19880b6c7440108f8929caf6056db26c" - integrity sha512-xa7aad7q7OiT8oNZ1mU7NrISjlSkVdMbNxn9IuLZyL9AJEhs1Apba3I+u5riX1dIkdptP5EKDG5XDPByWxtehw== +"@babel/plugin-transform-export-namespace-from@^7.23.3": + version "7.23.4" + resolved "https://registry.yarnpkg.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.22.15": - version "7.22.15" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.22.15.tgz#f64b4ccc3a4f131a996388fae7680b472b306b29" - integrity sha512-me6VGeHsx30+xh9fbDLLPi0J1HzmeIIyenoOQHuw2D4m2SAU3NrspX5XxJLBpqn5yrLzrlw2Iy3RA//Bx27iOA== +"@babel/plugin-transform-for-of@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.23.3.tgz#afe115ff0fbce735e02868d41489093c63e15559" + integrity sha512-X8jSm8X1CMwxmK878qsUGJRmbysKNbdpTv/O1/v0LuY/ZkZrng5WYiekYSdg9m09OTmDDUWeEDsTE+17WYbAZw== dependencies: "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-function-name@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.22.5.tgz#935189af68b01898e0d6d99658db6b164205c143" - integrity sha512-UIzQNMS0p0HHiQm3oelztj+ECwFnj+ZRV4KnguvlsD2of1whUeM6o7wGNj6oLwcDoAXQ8gEqfgC24D+VdIcevg== +"@babel/plugin-transform-function-name@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.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.5" - "@babel/helper-function-name" "^7.22.5" + "@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.22.11": - version "7.22.11" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.22.11.tgz#689a34e1eed1928a40954e37f74509f48af67835" - integrity sha512-CxT5tCqpA9/jXFlme9xIBCc5RPtdDq3JpkkhgHQqtDdiTnTI0jtZ0QzXhr5DILeYifDPp2wvY2ad+7+hLMW5Pw== +"@babel/plugin-transform-json-strings@^7.23.3": + version "7.23.4" + resolved "https://registry.yarnpkg.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.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.22.5.tgz#e9341f4b5a167952576e23db8d435849b1dd7920" - integrity sha512-fTLj4D79M+mepcw3dgFBTIDYpbcB9Sm0bpm4ppXPaO+U+PKFFyV9MGRvS0gvGw62sd10kT5lRMKXAADb9pWy8g== +"@babel/plugin-transform-literals@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.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.22.11": - version "7.22.11" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.22.11.tgz#24c522a61688bde045b7d9bc3c2597a4d948fc9c" - integrity sha512-qQwRTP4+6xFCDV5k7gZBF3C31K34ut0tbEcTKxlX/0KXxm9GLcO14p570aWxFvVzx6QAfPgq7gaeIHXJC8LswQ== +"@babel/plugin-transform-logical-assignment-operators@^7.23.3": + version "7.23.4" + resolved "https://registry.yarnpkg.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.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.22.5.tgz#4fcc9050eded981a468347dd374539ed3e058def" - integrity sha512-RZEdkNtzzYCFl9SE9ATaUMTj2hqMb4StarOJLrZRbqqU4HSBE7UlBw9WBWQiDzrJZJdUWiMTVDI6Gv/8DPvfew== +"@babel/plugin-transform-member-expression-literals@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.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.0": - version "7.23.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.23.0.tgz#05b2bc43373faa6d30ca89214731f76f966f3b88" - integrity sha512-xWT5gefv2HGSm4QHtgc1sYPbseOyf+FFDo2JbpE25GWl5BqTGO9IMwTYJRoIdjsF85GE+VegHxSCUt5EvoYTAw== +"@babel/plugin-transform-modules-amd@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.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.0" + "@babel/helper-module-transforms" "^7.23.3" "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-modules-commonjs@^7.23.0": - version "7.23.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.23.0.tgz#b3dba4757133b2762c00f4f94590cf6d52602481" - integrity sha512-32Xzss14/UVc7k9g775yMIvkVK8xwKE0DPdP5JTapr3+Z9w4tzeOuLNY6BXDQR6BdnzIlXnCGAzsk/ICHBLVWQ== +"@babel/plugin-transform-modules-commonjs@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.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.0" + "@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.0": - version "7.23.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.23.0.tgz#77591e126f3ff4132a40595a6cccd00a6b60d160" - integrity sha512-qBej6ctXZD2f+DhlOC9yO47yEYgUh5CZNz/aBoH4j/3NOlRfJXJbY7xDQCqQVf9KbrqGzIWER1f23doHGrIHFg== +"@babel/plugin-transform-modules-systemjs@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.23.3.tgz#fa7e62248931cb15b9404f8052581c302dd9de81" + integrity sha512-ZxyKGTkF9xT9YJuKQRo19ewf3pXpopuYQd8cDXqNzc3mUNbOME0RKMoZxviQk74hwzfQsEe66dE92MaZbdHKNQ== dependencies: "@babel/helper-hoist-variables" "^7.22.5" - "@babel/helper-module-transforms" "^7.23.0" + "@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.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.22.5.tgz#4694ae40a87b1745e3775b6a7fe96400315d4f98" - integrity sha512-+S6kzefN/E1vkSsKx8kmQuqeQsvCKCd1fraCM7zXm4SFoggI099Tr4G8U81+5gtMdUeMQ4ipdQffbKLX0/7dBQ== +"@babel/plugin-transform-modules-umd@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.23.3.tgz#5d4395fccd071dfefe6585a4411aa7d6b7d769e9" + integrity sha512-zHsy9iXX2nIsCBFPud3jKn1IRPWg3Ing1qOZgeKV39m1ZgIdpJqvlWVeiHBZC6ITRG0MfskhYe9cLgntfSFPIg== dependencies: - "@babel/helper-module-transforms" "^7.22.5" + "@babel/helper-module-transforms" "^7.23.3" "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-transform-named-capturing-groups-regex@^7.22.5": @@ -783,116 +843,156 @@ "@babel/helper-create-regexp-features-plugin" "^7.22.5" "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-new-target@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.22.5.tgz#1b248acea54ce44ea06dfd37247ba089fcf9758d" - integrity sha512-AsF7K0Fx/cNKVyk3a+DW0JLo+Ua598/NxMRvxDnkpCIGFh43+h/v2xyhRUYf6oD8gE4QtL83C7zZVghMjHd+iw== +"@babel/plugin-transform-new-target@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.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.22.11": - version "7.22.11" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.22.11.tgz#debef6c8ba795f5ac67cd861a81b744c5d38d9fc" - integrity sha512-YZWOw4HxXrotb5xsjMJUDlLgcDXSfO9eCmdl1bgW4+/lAGdkjaEvOnQ4p5WKKdUgSzO39dgPl0pTnfxm0OAXcg== +"@babel/plugin-transform-nullish-coalescing-operator@^7.23.3": + version "7.23.4" + resolved "https://registry.yarnpkg.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.22.11": - version "7.22.11" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.22.11.tgz#498d77dc45a6c6db74bb829c02a01c1d719cbfbd" - integrity sha512-3dzU4QGPsILdJbASKhF/V2TVP+gJya1PsueQCxIPCEcerqF21oEcrob4mzjsp2Py/1nLfF5m+xYNMDpmA8vffg== +"@babel/plugin-transform-numeric-separator@^7.23.3": + version "7.23.4" + resolved "https://registry.yarnpkg.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.22.15": - version "7.22.15" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.22.15.tgz#21a95db166be59b91cde48775310c0df6e1da56f" - integrity sha512-fEB+I1+gAmfAyxZcX1+ZUwLeAuuf8VIg67CTznZE0MqVFumWkh8xWtn58I4dxdVf080wn7gzWoF8vndOViJe9Q== +"@babel/plugin-transform-object-rest-spread@^7.23.3": + version "7.23.4" + resolved "https://registry.yarnpkg.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.22.9" + "@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.22.15" + "@babel/plugin-transform-parameters" "^7.23.3" -"@babel/plugin-transform-object-super@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.22.5.tgz#794a8d2fcb5d0835af722173c1a9d704f44e218c" - integrity sha512-klXqyaT9trSjIUrcsYIfETAzmOEZL3cBYqOYLJxBHfMFFggmXOv+NYSX/Jbs9mzMVESw/WycLFPRx8ba/b2Ipw== +"@babel/plugin-transform-object-super@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.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.5" + "@babel/helper-replace-supers" "^7.22.20" -"@babel/plugin-transform-optional-catch-binding@^7.22.11": - version "7.22.11" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.22.11.tgz#461cc4f578a127bb055527b3e77404cad38c08e0" - integrity sha512-rli0WxesXUeCJnMYhzAglEjLWVDF6ahb45HuprcmQuLidBJFWjNnOzssk2kuc6e33FlLaiZhG/kUIzUMWdBKaQ== +"@babel/plugin-transform-optional-catch-binding@^7.23.3": + version "7.23.4" + resolved "https://registry.yarnpkg.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.22.15", "@babel/plugin-transform-optional-chaining@^7.23.0": - version "7.23.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.23.0.tgz#73ff5fc1cf98f542f09f29c0631647d8ad0be158" - integrity sha512-sBBGXbLJjxTzLBF5rFWaikMnOGOk/BmK6vVByIdEggZ7Vn6CvWXZyRkkLFK6WE0IF8jSliyOkUN6SScFgzCM0g== +"@babel/plugin-transform-optional-chaining@^7.23.3": + version "7.23.4" + resolved "https://registry.yarnpkg.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.22.15": - version "7.22.15" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.22.15.tgz#719ca82a01d177af358df64a514d64c2e3edb114" - integrity sha512-hjk7qKIqhyzhhUvRT683TYQOFa/4cQKwQy7ALvTpODswN40MljzNDa0YldevS6tGbxwaEKVn502JmY0dP7qEtQ== +"@babel/plugin-transform-parameters@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.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.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.22.5.tgz#21c8af791f76674420a147ae62e9935d790f8722" - integrity sha512-PPjh4gyrQnGe97JTalgRGMuU4icsZFnWkzicB/fUtzlKUqvsWBKEpPPfr5a2JiyirZkHxnAqkQMO5Z5B2kK3fA== +"@babel/plugin-transform-private-methods@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.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.5" + "@babel/helper-create-class-features-plugin" "^7.22.15" "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-private-property-in-object@^7.22.11": - version "7.22.11" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.22.11.tgz#ad45c4fc440e9cb84c718ed0906d96cf40f9a4e1" - integrity sha512-sSCbqZDBKHetvjSwpyWzhuHkmW5RummxJBVbYLkGkaiTOWGxml7SXt0iWa03bzxFIx7wOj3g/ILRd0RcJKBeSQ== +"@babel/plugin-transform-private-property-in-object@^7.23.3": + version "7.23.4" + resolved "https://registry.yarnpkg.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.11" + "@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.22.5": +"@babel/plugin-transform-property-literals@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.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.21.3": + version "7.23.3" + resolved "https://registry.yarnpkg.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.yarnpkg.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.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.22.5.tgz#b5ddabd73a4f7f26cd0e20f5db48290b88732766" - integrity sha512-TiOArgddK3mK/x1Qwf5hay2pxI6wCZnvQqrFSqbtg1GLl2JcNMitVH/YnqjP+M31pLUeTfzY1HAXFDnUBV30rQ== + resolved "https://registry.yarnpkg.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.yarnpkg.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.yarnpkg.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.22.10": - version "7.22.10" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.22.10.tgz#8ceef3bd7375c4db7652878b0241b2be5d0c3cca" - integrity sha512-F28b1mDt8KcT5bUyJc/U9nwzw6cV+UmTeRlXYIl2TNqMMJif0Jeey9/RQ3C4NOd2zp0/TRsDns9ttj2L523rsw== +"@babel/plugin-transform-regenerator@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.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.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.22.5.tgz#832cd35b81c287c4bcd09ce03e22199641f964fb" - integrity sha512-DTtGKFRQUDm8svigJzZHzb/2xatPc6TzNvAIJ5GqOKDsGFYgAskjRulbR/vGsPKq3OPqtexnz327qYpP57RFyA== +"@babel/plugin-transform-reserved-words@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.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-runtime@^7.15.0": - version "7.23.2" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.23.2.tgz#c956a3f8d1aa50816ff6c30c6288d66635c12990" - integrity sha512-XOntj6icgzMS58jPVtQpiuF6ZFWxQiJavISGx5KGjRj+3gqZr8+N6Kx+N9BApWzgS+DOjIZfXXj0ZesenOWDyA== +"@babel/plugin-transform-runtime@^7.22.9": + version "7.23.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.23.4.tgz#5132b388580002fc5cb7c84eccfb968acdc231cb" + integrity sha512-ITwqpb6V4btwUG0YJR82o2QvmWrLgDnx/p2A3CTPYGaRgULkDiC0DRA2C4jlRB9uXGUEfaSS/IGHfVW+ohzYDw== dependencies: "@babel/helper-module-imports" "^7.22.15" "@babel/helper-plugin-utils" "^7.22.5" @@ -901,102 +1001,103 @@ babel-plugin-polyfill-regenerator "^0.5.3" semver "^6.3.1" -"@babel/plugin-transform-shorthand-properties@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.22.5.tgz#6e277654be82b5559fc4b9f58088507c24f0c624" - integrity sha512-vM4fq9IXHscXVKzDv5itkO1X52SmdFBFcMIBZ2FRn2nqVYqw6dBexUgMvAjHW+KXpPPViD/Yo3GrDEBaRC0QYA== +"@babel/plugin-transform-shorthand-properties@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.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.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.22.5.tgz#6487fd29f229c95e284ba6c98d65eafb893fea6b" - integrity sha512-5ZzDQIGyvN4w8+dMmpohL6MBo+l2G7tfC/O2Dg7/hjpgeWvUx8FzfeOKxGog9IimPa4YekaQ9PlDqTLOljkcxg== +"@babel/plugin-transform-spread@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.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.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.22.5.tgz#295aba1595bfc8197abd02eae5fc288c0deb26aa" - integrity sha512-zf7LuNpHG0iEeiyCNwX4j3gDg1jgt1k3ZdXBKbZSoA3BbGQGvMiSvfbZRR3Dr3aeJe3ooWFZxOOG3IRStYp2Bw== +"@babel/plugin-transform-sticky-regex@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.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.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.22.5.tgz#8f38cf291e5f7a8e60e9f733193f0bcc10909bff" - integrity sha512-5ciOehRNf+EyUeewo8NkbQiUs4d6ZxiHo6BcBcnFlgiJfu16q0bQUw9Jvo0b0gBKFG1SMhDSjeKXSYuJLeFSMA== +"@babel/plugin-transform-template-literals@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.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.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.22.5.tgz#5e2ba478da4b603af8673ff7c54f75a97b716b34" - integrity sha512-bYkI5lMzL4kPii4HHEEChkD0rkc+nvnlR6+o/qdqR6zrm0Sv/nodmyLhlq2DO0YKLUNd2VePmPRjJXSBh9OIdA== +"@babel/plugin-transform-typeof-symbol@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.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.22.15": - version "7.22.15" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.22.15.tgz#15adef906451d86349eb4b8764865c960eb54127" - integrity sha512-1uirS0TnijxvQLnlv5wQBwOX3E1wCFX7ITv+9pBV2wKEk4K+M5tqDaoNXnTH8tjEIYHLO98MwiTWO04Ggz4XuA== +"@babel/plugin-transform-typescript@^7.23.3": + version "7.23.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.23.4.tgz#da12914d17b3c4b307f32c5fd91fbfdf17d56f86" + integrity sha512-39hCCOl+YUAyMOu6B9SmUTiHUU0t/CxJNUmY3qRdJujbqi+lrQcL11ysYUsAvFWPBdhihrv1z0oRG84Yr3dODQ== 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-typescript" "^7.22.5" + "@babel/plugin-syntax-typescript" "^7.23.3" -"@babel/plugin-transform-unicode-escapes@^7.22.10": - version "7.22.10" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.22.10.tgz#c723f380f40a2b2f57a62df24c9005834c8616d9" - integrity sha512-lRfaRKGZCBqDlRU3UIFovdp9c9mEvlylmpod0/OatICsSfuQ9YFthRo1tpTkGsklEefZdqlEFdY4A2dwTb6ohg== +"@babel/plugin-transform-unicode-escapes@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.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.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.22.5.tgz#098898f74d5c1e86660dc112057b2d11227f1c81" - integrity sha512-HCCIb+CbJIAE6sXn5CjFQXMwkCClcOfPCzTlilJ8cUatfzwHlWQkbtV0zD338u9dZskwvuOYTuuaMaA8J5EI5A== +"@babel/plugin-transform-unicode-property-regex@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.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.5" + "@babel/helper-create-regexp-features-plugin" "^7.22.15" "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-unicode-regex@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.22.5.tgz#ce7e7bb3ef208c4ff67e02a22816656256d7a183" - integrity sha512-028laaOKptN5vHJf9/Arr/HiJekMd41hOEZYvNsrsXqJ7YPYuX2bQxh31fkZzGmq3YqHRJzYFFAVYvKfMPKqyg== +"@babel/plugin-transform-unicode-regex@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.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.5" + "@babel/helper-create-regexp-features-plugin" "^7.22.15" "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-unicode-sets-regex@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.22.5.tgz#77788060e511b708ffc7d42fdfbc5b37c3004e91" - integrity sha512-lhMfi4FC15j13eKrh3DnYHjpGj6UKQHtNKTbtc1igvAhRy4+kLhV07OpLcsN0VgDEw/MjAvJO4BdMJsHwMhzCg== +"@babel/plugin-transform-unicode-sets-regex@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.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.5" + "@babel/helper-create-regexp-features-plugin" "^7.22.15" "@babel/helper-plugin-utils" "^7.22.5" -"@babel/preset-env@^7.15.0": - version "7.23.2" - resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.23.2.tgz#1f22be0ff0e121113260337dbc3e58fafce8d059" - integrity sha512-BW3gsuDD+rvHL2VO2SjAUNTBe5YrjsTiDyqamPDWY723na3/yPQ65X5oQkFVJZ0o50/2d+svm1rkPoJeR1KxVQ== +"@babel/preset-env@^7.20.2", "@babel/preset-env@^7.22.9": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.23.3.tgz#d299e0140a7650684b95c62be2db0ef8c975143e" + integrity sha512-ovzGc2uuyNfNAs/jyjIGxS8arOHS5FENZaNn4rtE7UdKMMkqHCvboHfcuhWLZNX5cB44QfcGNWjaevxMzzMf+Q== dependencies: - "@babel/compat-data" "^7.23.2" + "@babel/compat-data" "^7.23.3" "@babel/helper-compilation-targets" "^7.22.15" "@babel/helper-plugin-utils" "^7.22.5" "@babel/helper-validator-option" "^7.22.15" - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.22.15" - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.22.15" + "@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.3" "@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.22.5" - "@babel/plugin-syntax-import-attributes" "^7.22.5" + "@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" @@ -1008,56 +1109,55 @@ "@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.22.5" - "@babel/plugin-transform-async-generator-functions" "^7.23.2" - "@babel/plugin-transform-async-to-generator" "^7.22.5" - "@babel/plugin-transform-block-scoped-functions" "^7.22.5" - "@babel/plugin-transform-block-scoping" "^7.23.0" - "@babel/plugin-transform-class-properties" "^7.22.5" - "@babel/plugin-transform-class-static-block" "^7.22.11" - "@babel/plugin-transform-classes" "^7.22.15" - "@babel/plugin-transform-computed-properties" "^7.22.5" - "@babel/plugin-transform-destructuring" "^7.23.0" - "@babel/plugin-transform-dotall-regex" "^7.22.5" - "@babel/plugin-transform-duplicate-keys" "^7.22.5" - "@babel/plugin-transform-dynamic-import" "^7.22.11" - "@babel/plugin-transform-exponentiation-operator" "^7.22.5" - "@babel/plugin-transform-export-namespace-from" "^7.22.11" - "@babel/plugin-transform-for-of" "^7.22.15" - "@babel/plugin-transform-function-name" "^7.22.5" - "@babel/plugin-transform-json-strings" "^7.22.11" - "@babel/plugin-transform-literals" "^7.22.5" - "@babel/plugin-transform-logical-assignment-operators" "^7.22.11" - "@babel/plugin-transform-member-expression-literals" "^7.22.5" - "@babel/plugin-transform-modules-amd" "^7.23.0" - "@babel/plugin-transform-modules-commonjs" "^7.23.0" - "@babel/plugin-transform-modules-systemjs" "^7.23.0" - "@babel/plugin-transform-modules-umd" "^7.22.5" + "@babel/plugin-transform-arrow-functions" "^7.23.3" + "@babel/plugin-transform-async-generator-functions" "^7.23.3" + "@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.3" + "@babel/plugin-transform-class-properties" "^7.23.3" + "@babel/plugin-transform-class-static-block" "^7.23.3" + "@babel/plugin-transform-classes" "^7.23.3" + "@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.3" + "@babel/plugin-transform-exponentiation-operator" "^7.23.3" + "@babel/plugin-transform-export-namespace-from" "^7.23.3" + "@babel/plugin-transform-for-of" "^7.23.3" + "@babel/plugin-transform-function-name" "^7.23.3" + "@babel/plugin-transform-json-strings" "^7.23.3" + "@babel/plugin-transform-literals" "^7.23.3" + "@babel/plugin-transform-logical-assignment-operators" "^7.23.3" + "@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.3" + "@babel/plugin-transform-modules-umd" "^7.23.3" "@babel/plugin-transform-named-capturing-groups-regex" "^7.22.5" - "@babel/plugin-transform-new-target" "^7.22.5" - "@babel/plugin-transform-nullish-coalescing-operator" "^7.22.11" - "@babel/plugin-transform-numeric-separator" "^7.22.11" - "@babel/plugin-transform-object-rest-spread" "^7.22.15" - "@babel/plugin-transform-object-super" "^7.22.5" - "@babel/plugin-transform-optional-catch-binding" "^7.22.11" - "@babel/plugin-transform-optional-chaining" "^7.23.0" - "@babel/plugin-transform-parameters" "^7.22.15" - "@babel/plugin-transform-private-methods" "^7.22.5" - "@babel/plugin-transform-private-property-in-object" "^7.22.11" - "@babel/plugin-transform-property-literals" "^7.22.5" - "@babel/plugin-transform-regenerator" "^7.22.10" - "@babel/plugin-transform-reserved-words" "^7.22.5" - "@babel/plugin-transform-shorthand-properties" "^7.22.5" - "@babel/plugin-transform-spread" "^7.22.5" - "@babel/plugin-transform-sticky-regex" "^7.22.5" - "@babel/plugin-transform-template-literals" "^7.22.5" - "@babel/plugin-transform-typeof-symbol" "^7.22.5" - "@babel/plugin-transform-unicode-escapes" "^7.22.10" - "@babel/plugin-transform-unicode-property-regex" "^7.22.5" - "@babel/plugin-transform-unicode-regex" "^7.22.5" - "@babel/plugin-transform-unicode-sets-regex" "^7.22.5" + "@babel/plugin-transform-new-target" "^7.23.3" + "@babel/plugin-transform-nullish-coalescing-operator" "^7.23.3" + "@babel/plugin-transform-numeric-separator" "^7.23.3" + "@babel/plugin-transform-object-rest-spread" "^7.23.3" + "@babel/plugin-transform-object-super" "^7.23.3" + "@babel/plugin-transform-optional-catch-binding" "^7.23.3" + "@babel/plugin-transform-optional-chaining" "^7.23.3" + "@babel/plugin-transform-parameters" "^7.23.3" + "@babel/plugin-transform-private-methods" "^7.23.3" + "@babel/plugin-transform-private-property-in-object" "^7.23.3" + "@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/types" "^7.23.0" babel-plugin-polyfill-corejs2 "^0.4.6" babel-plugin-polyfill-corejs3 "^0.8.5" babel-plugin-polyfill-regenerator "^0.5.3" @@ -1073,30 +1173,42 @@ "@babel/types" "^7.4.4" esutils "^2.0.2" -"@babel/preset-typescript@^7.15.0": - version "7.23.2" - resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.23.2.tgz#c8de488130b7081f7e1482936ad3de5b018beef4" - integrity sha512-u4UJc1XsS1GhIGteM8rnGiIvf9rJpiVgMEeCnwlLA7WJPC+jcXWJAGxYmeqs5hOZD8BbAfnV5ezBOxQbb4OUxA== +"@babel/preset-react@^7.14.5", "@babel/preset-react@^7.18.6": + version "7.23.3" + resolved "https://registry.yarnpkg.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.21.0", "@babel/preset-typescript@^7.22.5": + version "7.23.3" + resolved "https://registry.yarnpkg.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.22.5" - "@babel/plugin-transform-modules-commonjs" "^7.23.0" - "@babel/plugin-transform-typescript" "^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.yarnpkg.com/@babel/regjsgen/-/regjsgen-0.8.0.tgz#f0ba69b075e1f05fb2825b7fad991e7adbb18310" integrity sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA== -"@babel/runtime@^7.14.8", "@babel/runtime@^7.21.0", "@babel/runtime@^7.7.2", "@babel/runtime@^7.8.4": - version "7.23.2" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.23.2.tgz#062b0ac103261d68a966c4c7baf2ae3e62ec3885" - integrity sha512-mM8eg4yl5D6i3lu2QKPuPH4FArvJ8KhTofbE7jwMUv9KX5mBvwPAqnV3MlyBNqdp9RyRKP6Yck8TrfYrPvX3bg== +"@babel/runtime@^7.10.1", "@babel/runtime@^7.10.4", "@babel/runtime@^7.11.1", "@babel/runtime@^7.11.2", "@babel/runtime@^7.12.5", "@babel/runtime@^7.16.7", "@babel/runtime@^7.18.0", "@babel/runtime@^7.18.3", "@babel/runtime@^7.20.0", "@babel/runtime@^7.20.7", "@babel/runtime@^7.21.0", "@babel/runtime@^7.22.5", "@babel/runtime@^7.22.6", "@babel/runtime@^7.23.2", "@babel/runtime@^7.7.2", "@babel/runtime@^7.8.4": + version "7.23.4" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.23.4.tgz#36fa1d2b36db873d25ec631dcc4923fdc1cf2e2e" + integrity sha512-2Yv65nlWnWlSpe3fXEyX5i7fx5kIKo4Qbcj+hMO0odwaneFjfXw5fdum+4yL20O0QiaHpia0cYQ9xpNMqrBwHg== dependencies: regenerator-runtime "^0.14.0" -"@babel/template@^7.22.15", "@babel/template@^7.22.5", "@babel/template@^7.3.3": +"@babel/template@^7.22.15", "@babel/template@^7.3.3": version "7.22.15" resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.22.15.tgz#09576efc3830f0430f4548ef971dde1350ef2f38" integrity sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w== @@ -1105,28 +1217,28 @@ "@babel/parser" "^7.22.15" "@babel/types" "^7.22.15" -"@babel/traverse@^7.16.0", "@babel/traverse@^7.23.2": - version "7.23.2" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.23.2.tgz#329c7a06735e144a506bdb2cad0268b7f46f4ad8" - integrity sha512-azpe59SQ48qG6nu2CzcMLbxUudtN+dOM9kDbUqGq3HXUJRlo7i8fvPoxQUzYgLZ4cMVmuZgm8vvBpNeRhd6XSw== +"@babel/traverse@^7.16.0", "@babel/traverse@^7.23.3", "@babel/traverse@^7.23.4": + version "7.23.4" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.23.4.tgz#c2790f7edf106d059a0098770fe70801417f3f85" + integrity sha512-IYM8wSUwunWTB6tFC2dkKZhxbIjHoWemdK+3f8/wq8aKhbUscxD5MX72ubd90fxvFknaLPeGw5ycU84V1obHJg== dependencies: - "@babel/code-frame" "^7.22.13" - "@babel/generator" "^7.23.0" + "@babel/code-frame" "^7.23.4" + "@babel/generator" "^7.23.4" "@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.0" - "@babel/types" "^7.23.0" + "@babel/parser" "^7.23.4" + "@babel/types" "^7.23.4" debug "^4.1.0" globals "^11.1.0" -"@babel/types@^7.0.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.3.3", "@babel/types@^7.4.4": - version "7.23.0" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.23.0.tgz#8c1f020c9df0e737e4e247c0619f58c68458aaeb" - integrity sha512-0oIyUfKoI3mSqMvsxBdclDwxXKXAUA8v/apZbc+iSyARYou1o8ZGDxbUYyLFoW2arqS2jDGqJuZvv1d/io1axg== +"@babel/types@^7.0.0", "@babel/types@^7.20.7", "@babel/types@^7.21.3", "@babel/types@^7.22.15", "@babel/types@^7.22.19", "@babel/types@^7.22.5", "@babel/types@^7.23.0", "@babel/types@^7.23.3", "@babel/types@^7.23.4", "@babel/types@^7.3.3", "@babel/types@^7.4.4": + version "7.23.4" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.23.4.tgz#7206a1810fc512a7f7f7d4dace4cb4c1c9dbfb8e" + integrity sha512-7uIFwVYpoplT5jp/kVv6EF93VaJ8H+Yn5IczYiaAi98ajzjfoZfslet/e0sLh+wVBjb2qqIut1b0S26VSafsSQ== dependencies: - "@babel/helper-string-parser" "^7.22.5" + "@babel/helper-string-parser" "^7.23.4" "@babel/helper-validator-identifier" "^7.22.20" to-fast-properties "^2.0.0" @@ -1154,6 +1266,11 @@ dependencies: "@jridgewell/trace-mapping" "0.3.9" +"@ctrl/tinycolor@^3.4.0", "@ctrl/tinycolor@^3.6.0", "@ctrl/tinycolor@^3.6.1": + version "3.6.1" + resolved "https://registry.yarnpkg.com/@ctrl/tinycolor/-/tinycolor-3.6.1.tgz#b6c75a56a1947cc916ea058772d666a2c8932f31" + integrity sha512-SITSV6aIXsuVNV3f3O0f2n/cgyEDWoSqtZMYiAmcsYHydcKrOz3gUxB/iXd/Qf08+IZX4KpgNbvUdMBmWz+kcA== + "@digitalbazaar/security-context@^1.0.0": version "1.0.1" resolved "https://registry.yarnpkg.com/@digitalbazaar/security-context/-/security-context-1.0.1.tgz#badc4b8da03411a32d4e7321ce7c4b355776b410" @@ -1215,6 +1332,16 @@ "@digitalcredentials/jsonld-signatures" "^9.3.1" credentials-context "^2.0.0" +"@emotion/hash@^0.8.0": + version "0.8.0" + resolved "https://registry.yarnpkg.com/@emotion/hash/-/hash-0.8.0.tgz#bbbff68978fefdbe68ccb533bc8cbe1d1afb5413" + integrity sha512-kBJtf7PH6aWwZ6fka3zQ0p6SBYzx4fl1LoZXE2RrnYST9Xljm7WfKJrU4g/Xr3Beg72MLrp1AWNUmuYJTL7Cow== + +"@emotion/unitless@^0.7.5": + version "0.7.5" + resolved "https://registry.yarnpkg.com/@emotion/unitless/-/unitless-0.7.5.tgz#77211291c1900a700b8a78cfafda3160d76949ed" + integrity sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg== + "@eslint-community/eslint-utils@^4.2.0": version "4.4.0" resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz#a23514e8fb9af1269d5f7788aa556798d61c6b59" @@ -1223,9 +1350,9 @@ eslint-visitor-keys "^3.3.0" "@eslint-community/regexpp@^4.4.0": - version "4.9.1" - resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.9.1.tgz#449dfa81a57a1d755b09aa58d826c1262e4283b4" - integrity sha512-Y27x+MBLjXa+0JWDhykM3+JE+il3kHKAEqabfEWq3SDhZjLYb6/BHL/JKFnH3fe207JaXkyDo685Oc2Glt6ifA== + version "4.10.0" + resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.10.0.tgz#548f6de556857c8bb73bbee70c35dc82a2e74d63" + integrity sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA== "@eslint/eslintrc@^1.2.3": version "1.4.1" @@ -1242,6 +1369,16 @@ minimatch "^3.1.2" strip-json-comments "^3.1.1" +"@fontsource/roboto@^5.0.8": + version "5.0.8" + resolved "https://registry.yarnpkg.com/@fontsource/roboto/-/roboto-5.0.8.tgz#613b477a56f21b5705db1a67e995c033ef317f76" + integrity sha512-XxPltXs5R31D6UZeLIV1td3wTXU3jzd3f2DLsXI8tytMGBkIsGcc9sIyiupRtA8y73HAhuSCeweOoBqf6DbWCA== + +"@gar/promisify@^1.1.3": + version "1.1.3" + resolved "https://registry.yarnpkg.com/@gar/promisify/-/promisify-1.1.3.tgz#555193ab2e3bb3b6adc3d551c9c030d9e860daf6" + integrity sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw== + "@hapi/hoek@^9.0.0": version "9.3.0" resolved "https://registry.yarnpkg.com/@hapi/hoek/-/hoek-9.3.0.tgz#8368869dcb735be2e7f5cb7647de78e167a251fb" @@ -1627,6 +1764,20 @@ semver "^7.3.5" tar "^6.1.11" +"@mole-inc/bin-wrapper@^8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@mole-inc/bin-wrapper/-/bin-wrapper-8.0.1.tgz#d7fd0ceb1cfa8a855293a3ed9d7d135f4d442f0e" + integrity sha512-sTGoeZnjI8N4KS+sW2AN95gDBErhAguvkw/tWdCjeM8bvxpz5lqrnd0vOJABA1A+Ic3zED7PYoLP/RANLgVotA== + dependencies: + bin-check "^4.1.0" + bin-version-check "^5.0.0" + content-disposition "^0.5.4" + ext-name "^5.0.0" + file-type "^17.1.6" + filenamify "^5.0.2" + got "^11.8.5" + os-filter-obj "^2.0.0" + "@multiformats/base-x@^4.0.1": version "4.0.1" resolved "https://registry.yarnpkg.com/@multiformats/base-x/-/base-x-4.0.1.tgz#95ff0fa58711789d53aefb2590a8b7a4e715d121" @@ -1693,14 +1844,14 @@ tslib "2.5.3" "@nestjs/platform-ws@^10.1.3": - version "10.2.7" - resolved "https://registry.yarnpkg.com/@nestjs/platform-ws/-/platform-ws-10.2.7.tgz#287fab0ec5c070c22b3cdbe3633012616b3c63ac" - integrity sha512-4H4AeCQgM29Dju+zQb70Jt0JgWhQssOB8mh9n9icsSJ4B/joa+X7OiBBSjn72HZelj0tvX1gal6PaAhEaOdmGQ== + version "10.2.10" + resolved "https://registry.yarnpkg.com/@nestjs/platform-ws/-/platform-ws-10.2.10.tgz#d6a4df6bebcf85e27fd437cf764d29921a924889" + integrity sha512-x9L7jixAEtbNjP9hIm9Fmx+kL9ruFQLu2cUb0EdSNtwK/efAJZ3+Taz9T8g/Nm5DG4k0356X6hmRk74ChJHg9g== dependencies: tslib "2.6.2" ws "8.14.2" -"@nestjs/schematics@^9.0.0": +"@nestjs/schematics@^9.0.0", "@nestjs/schematics@^9.1.0": version "9.2.0" resolved "https://registry.yarnpkg.com/@nestjs/schematics/-/schematics-9.2.0.tgz#f840054b5ae4b0b4e70aa9f72c09c3cf388f2512" integrity sha512-wHpNJDPzM6XtZUOB3gW0J6mkFCSJilzCM3XrHI1o0C8vZmFE1snbmkIXNyoi1eV0Nxh1BMymcgz5vIMJgQtTqw== @@ -1818,6 +1969,14 @@ dependencies: ansi-styles "^4.3.0" +"@npmcli/fs@^2.1.0": + version "2.1.2" + resolved "https://registry.yarnpkg.com/@npmcli/fs/-/fs-2.1.2.tgz#a9e2541a4a2fec2e69c29b35e6060973da79b865" + integrity sha512-yOJKRvohFOaLqipNtwYB9WugyZKhC/DZC4VYPmpaCzDBrA8YpK3qHZ8/HGscMnE4GqbkLNuVcCnxkeQEdGt6LQ== + dependencies: + "@gar/promisify" "^1.1.3" + semver "^7.3.5" + "@npmcli/fs@^3.1.0": version "3.1.0" resolved "https://registry.yarnpkg.com/@npmcli/fs/-/fs-3.1.0.tgz#233d43a25a91d68c3a863ba0da6a3f00924a173e" @@ -1867,6 +2026,14 @@ pacote "^15.0.0" semver "^7.3.5" +"@npmcli/move-file@^2.0.0": + version "2.0.1" + resolved "https://registry.yarnpkg.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/name-from-folder@^2.0.0": version "2.0.0" resolved "https://registry.yarnpkg.com/@npmcli/name-from-folder/-/name-from-folder-2.0.0.tgz#c44d3a7c6d5c184bb6036f4d5995eee298945815" @@ -1915,75 +2082,90 @@ read-package-json-fast "^3.0.0" which "^3.0.0" -"@nrwl/devkit@16.0.1": - version "16.0.1" - resolved "https://registry.yarnpkg.com/@nrwl/devkit/-/devkit-16.0.1.tgz#9d41e6b5724b5fc72ba23c4036775e8aa06eedcc" - integrity sha512-UtyzIdYpi6pJfqbxUAb37MUisa5k9bcmd9Saqf1E34PmfFF3Ix6CTm19C29BgDfd8XHW3LRRtsdJhRirqmLmcw== +"@nrwl/devkit@16.10.0": + version "16.10.0" + resolved "https://registry.yarnpkg.com/@nrwl/devkit/-/devkit-16.10.0.tgz#ac8c5b4db00f12c4b817c937be2f7c4eb8f2593c" + integrity sha512-fRloARtsDQoQgQ7HKEy0RJiusg/HSygnmg4gX/0n/Z+SUS+4KoZzvHjXc6T5ZdEiSjvLypJ+HBM8dQzIcVACPQ== dependencies: - "@nx/devkit" "16.0.1" + "@nx/devkit" "16.10.0" -"@nrwl/eslint-plugin-nx@16.0.1": - version "16.0.1" - resolved "https://registry.yarnpkg.com/@nrwl/eslint-plugin-nx/-/eslint-plugin-nx-16.0.1.tgz#ca4bef3d4e89a121fb388a114959eb4dbf29c6ff" - integrity sha512-XbS4FlTOvtg5ElJu1zseQr+p1RyJjOaYvVXa+CgTISha/x0kFuOwGMX29zcGq4shJ2AyizMaeWrq6odJqSdWVg== +"@nrwl/eslint-plugin-nx@16.10.0": + version "16.10.0" + resolved "https://registry.yarnpkg.com/@nrwl/eslint-plugin-nx/-/eslint-plugin-nx-16.10.0.tgz#8a98e5a8408fecf0185649bb15c1568a1b233aeb" + integrity sha512-w8fHXEatdPHQeP/Yompsdrgz4BJ2BSVaaaulcovzTNJ9KrCCtDyTGY7sihU7qLVcbZtUVq9xoAsSeuTQuOCTDw== dependencies: - "@nx/eslint-plugin" "16.0.1" + "@nx/eslint-plugin" "16.10.0" -"@nrwl/jest@16.0.1": - version "16.0.1" - resolved "https://registry.yarnpkg.com/@nrwl/jest/-/jest-16.0.1.tgz#230a2b267c7af6b4b0b3ae19967457ab710f5fae" - integrity sha512-RCTEziX6PKsAAd95FevcWoRfb1cR6i5494nuRY9Krc9AAFYTz6YGaaGgRgKvHaTIfNY3Nl2Hgojhq5v5FzXaUA== +"@nrwl/jest@16.10.0": + version "16.10.0" + resolved "https://registry.yarnpkg.com/@nrwl/jest/-/jest-16.10.0.tgz#5c7cd692e7aacba43687271bb3528568c14c1239" + integrity sha512-hZuIK3xXh4HaE6/Ny8hGidjkJ4aLZjnQtPDxKD/423gznQe2FdHx3avoSlbOEOx5Oc6sJ9QGGZLcvckKQ5uWww== dependencies: - "@nx/jest" "16.0.1" + "@nx/jest" "16.10.0" -"@nrwl/js@16.0.1": - version "16.0.1" - resolved "https://registry.yarnpkg.com/@nrwl/js/-/js-16.0.1.tgz#c556ffa4711d7b4d0f0562210e2d662812379689" - integrity sha512-CCpOFstP3A+LYHA1HxxsVInToxZHRV3r5fSPBTli6N0ry+f8gID2RQS3hK/kl6U948kNDl4gGWVsocLPFYefow== +"@nrwl/js@16.10.0": + version "16.10.0" + resolved "https://registry.yarnpkg.com/@nrwl/js/-/js-16.10.0.tgz#2938144cfb5de1dc6b6b231e12cdd86858d31c62" + integrity sha512-asybPpyPrxLLDWWdYzFqbgubLmDKLEhoMz8x9MPOm3CH8v2vlIE6hD0JT19GdJArBPxRB33nhjtu8wmJGz5czw== dependencies: - "@nx/js" "16.0.1" + "@nx/js" "16.10.0" -"@nrwl/linter@16.0.1": - version "16.0.1" - resolved "https://registry.yarnpkg.com/@nrwl/linter/-/linter-16.0.1.tgz#e540325eb7346f8e8112c4712e72644bd37fc2b0" - integrity sha512-1z3czeyBJlm3JMPLD8l8W6wAPli6/xr8AnzowFH8UhuB6sXmozztM49RlFP4BbU1AqwYW9kxxgFKQB0Pu84Pew== +"@nrwl/linter@16.10.0": + version "16.10.0" + resolved "https://registry.yarnpkg.com/@nrwl/linter/-/linter-16.10.0.tgz#9f42df54431bb4194ede32e6b8254d2bec29a358" + integrity sha512-XvMuTeIc2I3630iaqhlV4w3qgABQIo+kv8mT0DbT1HfjjZDm4ST8hrvkdWSf9mCl24vShNL8GDVQVNOX0bZY5A== dependencies: - "@nx/linter" "16.0.1" + "@nx/linter" "16.10.0" -"@nrwl/nest@16.0.1": - version "16.0.1" - resolved "https://registry.yarnpkg.com/@nrwl/nest/-/nest-16.0.1.tgz#0007bf5e00f91595576c205c59c8ed0ef8228d8d" - integrity sha512-xKPkSWygEuQvwP70vlKDmpUUzGyr+nAIWguKfz96cKPGcrvY6ANkvgjn6lVTpQ6Z85D2+Uii8oyGww83osKjog== +"@nrwl/nest@16.10.0": + version "16.10.0" + resolved "https://registry.yarnpkg.com/@nrwl/nest/-/nest-16.10.0.tgz#638895e6b6ea8178f8994974d7fc27875ff15a96" + integrity sha512-ImIXV8bPhKq34xdfdz1kHnRZQ7QnbKqLB2pU9kfHDhbOfQUvy1L1UXAasBzS5qSsJtPljaXAe+nOxNu1nOlaZg== dependencies: - "@nx/nest" "16.0.1" + "@nx/nest" "16.10.0" -"@nrwl/node@16.0.1": - version "16.0.1" - resolved "https://registry.yarnpkg.com/@nrwl/node/-/node-16.0.1.tgz#6b779583cae951f7c4983e20a44bac6cba035aec" - integrity sha512-vg1EDdmCdbgyAPah9mcmS06uy2E1w9PGflmCh3R3S4MjhX2cnRGiGynIgTD/KCs98nrciRwdMcPmSu9FZb80xA== +"@nrwl/node@16.10.0": + version "16.10.0" + resolved "https://registry.yarnpkg.com/@nrwl/node/-/node-16.10.0.tgz#730e4a9d0fd41f48ea999ccd2a4c2fc9b721096b" + integrity sha512-UZ1s02f2IpFRXzVZIBuDLXXB+obyP280RFHV9smYruhOHrj8iA5wXNSXcJJGorwpKP3WCUS/+KS49oVSHOkLUA== dependencies: - "@nx/node" "16.0.1" + "@nx/node" "16.10.0" -"@nrwl/tao@16.0.1": - version "16.0.1" - resolved "https://registry.yarnpkg.com/@nrwl/tao/-/tao-16.0.1.tgz#9a00aa9b5312181f7a2630ee68ed3f5c53d7ba2d" - integrity sha512-mvY+hKJwismbZY9WIfyO8wAOm1xtHn7ibUgiP/mazJv5OM3lnDoSfE83YlCVuhW+KgNq9OHQwIiAU+Y+hFQvEQ== +"@nrwl/react@16.10.0": + version "16.10.0" + resolved "https://registry.yarnpkg.com/@nrwl/react/-/react-16.10.0.tgz#cac88dd29474681b8f3d062484abeac8dec7712e" + integrity sha512-00JmHuA97K7t2Z22fGvNqMZuhmRO/IpceLPdUhQOeAY/lb+e3ffVf+CDOBnTC/ISjrIoIyYcfmbAl4ZxxvvN7w== dependencies: - nx "16.0.1" + "@nx/react" "16.10.0" -"@nrwl/webpack@16.0.1": - version "16.0.1" - resolved "https://registry.yarnpkg.com/@nrwl/webpack/-/webpack-16.0.1.tgz#75b8b6c8953ea10305b50e32c4eb4ee06a5bc94e" - integrity sha512-f/GkkaosPdwTjFt3wCI3fE16SODWr3fR2/czHGwZDy0comSR7iqgmGfIqrhb8wOlv1pUbcJcW2xBq9xD6EABeA== +"@nrwl/tao@16.10.0": + version "16.10.0" + resolved "https://registry.yarnpkg.com/@nrwl/tao/-/tao-16.10.0.tgz#94642a0380709b8e387e1e33705a5a9624933375" + integrity sha512-QNAanpINbr+Pod6e1xNgFbzK1x5wmZl+jMocgiEFXZ67KHvmbD6MAQQr0MMz+GPhIu7EE4QCTLTyCEMlAG+K5Q== dependencies: - "@nx/webpack" "16.0.1" + nx "16.10.0" + tslib "^2.3.0" -"@nrwl/workspace@16.0.1": - version "16.0.1" - resolved "https://registry.yarnpkg.com/@nrwl/workspace/-/workspace-16.0.1.tgz#c808f130195b6695592e1378138542135f0f9d8f" - integrity sha512-jsnLcx/WVI/9ZkWx1iASu9s7YYAzXYRy5XEL2hiNEZGoM2pXoSe9IlmTeho6FAtImMOCFFbP2e51RSu8oOC9IA== +"@nrwl/web@16.10.0": + version "16.10.0" + resolved "https://registry.yarnpkg.com/@nrwl/web/-/web-16.10.0.tgz#f88d798ef7a24cc37c75ad36cd266998e4bd5dbc" + integrity sha512-BRQGOHiuEptVhjmXnlqM47epUL00RoUMjhcsfMNjyZ7WpdY0JjwJaNx4afylt3h28mSXVi4t008oE5FEC+YfYw== + dependencies: + "@nx/web" "16.10.0" + +"@nrwl/webpack@16.10.0": + version "16.10.0" + resolved "https://registry.yarnpkg.com/@nrwl/webpack/-/webpack-16.10.0.tgz#ba84f34f36499bdf176e7b71259150c1789a057c" + integrity sha512-oh/8jzytaU2YM6DOvEOt2CysKWpru+fc+M31JGj6gdq1c1wr4feSs1c/rmJ4jAfvYqejrJwyZK96XX1uRo+3RQ== + dependencies: + "@nx/webpack" "16.10.0" + +"@nrwl/workspace@16.10.0": + version "16.10.0" + resolved "https://registry.yarnpkg.com/@nrwl/workspace/-/workspace-16.10.0.tgz#0b75465c1887ef3953df32f0c234a9568c1504be" + integrity sha512-fZeNxhFs/2cm326NebfJIgSI3W4KZN94WGS46wlIBrUUGP5/vwHYsi09Kx6sG1kRkAuZVtgJ33uU2F6xcAWzUA== dependencies: - "@nx/workspace" "16.0.1" + "@nx/workspace" "16.10.0" "@nuxtjs/opencollective@0.3.2": version "0.3.2" @@ -1994,44 +2176,47 @@ consola "^2.15.0" node-fetch "^2.6.1" -"@nx/devkit@16.0.1": - version "16.0.1" - resolved "https://registry.yarnpkg.com/@nx/devkit/-/devkit-16.0.1.tgz#f6c580ab5e78812a6c970c2200998008d0937e21" - integrity sha512-6/cWPR9Y3qPPN7YGw64dB3gCLetLqUko+6G2VOUpBY4aqDI4oY3FXV/12DvXl343/pJi4ou64JfMDOpFq53wIA== +"@nx/devkit@16.10.0": + version "16.10.0" + resolved "https://registry.yarnpkg.com/@nx/devkit/-/devkit-16.10.0.tgz#7e466be2dee2dcb1ccaf286786ca2a0a639aa007" + integrity sha512-IvKQqRJFDDiaj33SPfGd3ckNHhHi6ceEoqCbAP4UuMXOPPVOX6H0KVk+9tknkPb48B7jWIw6/AgOeWkBxPRO5w== dependencies: - "@nrwl/devkit" "16.0.1" + "@nrwl/devkit" "16.10.0" ejs "^3.1.7" + enquirer "~2.3.6" ignore "^5.0.4" - semver "7.3.4" + semver "7.5.3" tmp "~0.2.1" tslib "^2.3.0" -"@nx/eslint-plugin@16.0.1": - version "16.0.1" - resolved "https://registry.yarnpkg.com/@nx/eslint-plugin/-/eslint-plugin-16.0.1.tgz#2c5eb552cffd9784ff6c24e45ce5119bdee77db6" - integrity sha512-55ORLmqmaqzDU5hu4B/DU648lMN4ap+XCIuiosyJ7Zw4yUX8ioABkrm+bMzgiZPCy/GXEACTMh9PVraBzkTsNg== +"@nx/eslint-plugin@16.10.0": + version "16.10.0" + resolved "https://registry.yarnpkg.com/@nx/eslint-plugin/-/eslint-plugin-16.10.0.tgz#da8aae489f10e13a30a184e1d4825e8541d27105" + integrity sha512-fdOlCrSJK6HfCs+FVXUxzS5gobnGymTU85B3vXPYkVpJwKmq9voX7HBhx9euScRGgXdO9335DIixc/QV6zGpKA== dependencies: - "@nrwl/eslint-plugin-nx" "16.0.1" - "@nx/devkit" "16.0.1" - "@nx/js" "16.0.1" - "@typescript-eslint/utils" "^5.58.0" + "@nrwl/eslint-plugin-nx" "16.10.0" + "@nx/devkit" "16.10.0" + "@nx/js" "16.10.0" + "@typescript-eslint/type-utils" "^5.60.1" + "@typescript-eslint/utils" "^5.60.1" chalk "^4.1.0" confusing-browser-globals "^1.0.9" - semver "7.3.4" + jsonc-eslint-parser "^2.1.0" + semver "7.5.3" + tslib "^2.3.0" -"@nx/jest@16.0.1": - version "16.0.1" - resolved "https://registry.yarnpkg.com/@nx/jest/-/jest-16.0.1.tgz#94b5bae1b6eeaa41c9a8f89b204445dd0d28670a" - integrity sha512-7WtNioN3+GMAv57zIncgnjMev/8dEIO1AiDYmwD7FtseZ8NZ1ndDDM0XZt/7NsWC1YiTJY3S3Ggr7yf4vYh3ug== +"@nx/jest@16.10.0": + version "16.10.0" + resolved "https://registry.yarnpkg.com/@nx/jest/-/jest-16.10.0.tgz#f3f15e777035877b5c37172c5611b53af9917310" + integrity sha512-QseeLjDrl4c9q9Dd/057SXYqd47JVLhD2VQlQDraYwjsHz3lWkzlGaaHy0ZrVu8LSzY7lUUhJMPyYO3qo8wT6A== dependencies: "@jest/reporters" "^29.4.1" "@jest/test-result" "^29.4.1" - "@nrwl/jest" "16.0.1" - "@nx/devkit" "16.0.1" - "@nx/js" "16.0.1" + "@nrwl/jest" "16.10.0" + "@nx/devkit" "16.10.0" + "@nx/js" "16.10.0" "@phenomnomnominal/tsquery" "~5.0.1" chalk "^4.1.0" - dotenv "~10.0.0" identity-obj-proxy "3.0.0" jest-config "^29.4.1" jest-resolve "^29.4.1" @@ -2039,138 +2224,181 @@ resolve.exports "1.1.0" tslib "^2.3.0" -"@nx/js@16.0.1": - version "16.0.1" - resolved "https://registry.yarnpkg.com/@nx/js/-/js-16.0.1.tgz#db4f8997f0ce170fbdc009fc5368c6056a49b5ba" - integrity sha512-n+ynbihIX6NC0o+kYdI3TdJhItlQwPxnX19+Fd3ZcvZVQVbzN5EN3ZHkVVaUtgJURZtjpXM6CAnNP2jRqe6dAA== - dependencies: - "@babel/core" "^7.15.0" - "@babel/plugin-proposal-class-properties" "^7.14.5" - "@babel/plugin-proposal-decorators" "^7.14.5" - "@babel/plugin-transform-runtime" "^7.15.0" - "@babel/preset-env" "^7.15.0" - "@babel/preset-typescript" "^7.15.0" - "@babel/runtime" "^7.14.8" - "@nrwl/js" "16.0.1" - "@nx/devkit" "16.0.1" - "@nx/workspace" "16.0.1" +"@nx/js@16.10.0": + version "16.10.0" + resolved "https://registry.yarnpkg.com/@nx/js/-/js-16.10.0.tgz#cf74fc8b8b1d958d4706f0ebba56ec6642e2bfc9" + integrity sha512-27AH0/+XTMzOxVS6oV8Zl7/Rr1UDMYsnCVqoCU9CXp087uxcD4VnBOEjsEUlJKh1RdwGE3K0hBkk7NC1LP+vYQ== + dependencies: + "@babel/core" "^7.22.9" + "@babel/plugin-proposal-class-properties" "^7.18.6" + "@babel/plugin-proposal-decorators" "^7.22.7" + "@babel/plugin-transform-runtime" "^7.22.9" + "@babel/preset-env" "^7.22.9" + "@babel/preset-typescript" "^7.22.5" + "@babel/runtime" "^7.22.6" + "@nrwl/js" "16.10.0" + "@nx/devkit" "16.10.0" + "@nx/workspace" "16.10.0" "@phenomnomnominal/tsquery" "~5.0.1" babel-plugin-const-enum "^1.0.1" babel-plugin-macros "^2.8.0" babel-plugin-transform-typescript-metadata "^0.3.1" chalk "^4.1.0" + columnify "^1.6.0" + detect-port "^1.5.1" fast-glob "3.2.7" fs-extra "^11.1.0" ignore "^5.0.4" js-tokens "^4.0.0" minimatch "3.0.5" + npm-package-arg "11.0.1" + npm-run-path "^4.0.1" + ora "5.3.0" + semver "7.5.3" source-map-support "0.5.19" - tree-kill "1.2.2" + ts-node "10.9.1" + tsconfig-paths "^4.1.2" tslib "^2.3.0" -"@nx/linter@16.0.1": - version "16.0.1" - resolved "https://registry.yarnpkg.com/@nx/linter/-/linter-16.0.1.tgz#ad8bee5628b50d740b696acd3c1907e7a5c30aef" - integrity sha512-Yr49aAgYCL8LfTtiQITaBCg8TE3OQWIhoRAclIRTjZl/MTyvtbLwCL4IfJMH+x0Isd1SMBQtAfmXRJdKnFa9GA== +"@nx/linter@16.10.0": + version "16.10.0" + resolved "https://registry.yarnpkg.com/@nx/linter/-/linter-16.10.0.tgz#6bfd4cf9b69f97a3630708482638e6a01a343b75" + integrity sha512-G6XBfuMHNHoJDc4n2Gip4fsa9KssT91V5PF2Rd4hILkg4YU8B8mlmHN71stpzwbEyUJtyhyJc5SGgVLrSpRQew== dependencies: - "@nrwl/linter" "16.0.1" - "@nx/devkit" "16.0.1" - "@nx/js" "16.0.1" + "@nrwl/linter" "16.10.0" + "@nx/devkit" "16.10.0" + "@nx/js" "16.10.0" "@phenomnomnominal/tsquery" "~5.0.1" tmp "~0.2.1" tslib "^2.3.0" - -"@nx/nest@16.0.1": - version "16.0.1" - resolved "https://registry.yarnpkg.com/@nx/nest/-/nest-16.0.1.tgz#98ec40c334f7e995b65812ee77daa4b4a9953412" - integrity sha512-eOdfubrp18d8V6j3auqFIvNGCmaO3ldHJHEA09gdA1giNNVEmh2gcQpD0gLot7ytZaBox0tuzslvfohQZZSCQw== - dependencies: - "@nestjs/schematics" "^9.0.0" - "@nrwl/nest" "16.0.1" - "@nx/devkit" "16.0.1" - "@nx/js" "16.0.1" - "@nx/linter" "16.0.1" - "@nx/node" "16.0.1" + typescript "~5.1.3" + +"@nx/nest@16.10.0": + version "16.10.0" + resolved "https://registry.yarnpkg.com/@nx/nest/-/nest-16.10.0.tgz#eea8bc58af0e200f9aaadacd4114f1a8d668678d" + integrity sha512-nrUDtzSmRU1qV8jboBdi+HzQ/bfwqfz7EhKtsP1fXKkQH8uicKsdzP6ToC+9qG6C+hd8v3Vhu1lDoJr5dyrHqQ== + dependencies: + "@nestjs/schematics" "^9.1.0" + "@nrwl/nest" "16.10.0" + "@nx/devkit" "16.10.0" + "@nx/js" "16.10.0" + "@nx/linter" "16.10.0" + "@nx/node" "16.10.0" + "@phenomnomnominal/tsquery" "~5.0.1" enquirer "~2.3.6" - -"@nx/node@16.0.1": - version "16.0.1" - resolved "https://registry.yarnpkg.com/@nx/node/-/node-16.0.1.tgz#265c21ec415590d3a3efff8c91fddc85f7cf2a15" - integrity sha512-3ZAT9WVLKsrpd3mqvsQq4NwJLK0Ojr7myKhzgKAUP2WwqHkb12XEkLSkc+VIxipvF1jBiNyq53VAtiq45VY6dQ== - dependencies: - "@nrwl/node" "16.0.1" - "@nx/devkit" "16.0.1" - "@nx/jest" "16.0.1" - "@nx/js" "16.0.1" - "@nx/linter" "16.0.1" - "@nx/workspace" "16.0.1" + semver "7.5.3" tslib "^2.3.0" -"@nx/nx-darwin-arm64@16.0.1": - version "16.0.1" - resolved "https://registry.yarnpkg.com/@nx/nx-darwin-arm64/-/nx-darwin-arm64-16.0.1.tgz#8961b507d0423c118dcf6c67c02af7d561827132" - integrity sha512-ezBykAa6etDIQdh0Rvl8AysJV7lU+/4Grxh0DYMWlVw9EsdJXh5ELr2NepnacdzML411cVSuo6m3SIT5NvMw2Q== - -"@nx/nx-darwin-x64@16.0.1": - version "16.0.1" - resolved "https://registry.yarnpkg.com/@nx/nx-darwin-x64/-/nx-darwin-x64-16.0.1.tgz#d54f0eb02e7fddea6812dbe1b6d7b646d5b37c8a" - integrity sha512-ZTFVN0E+02EeWvToyKu1lQWdKHzPbks4R90Pw0cdDgnOaaYj2Z9GQ1rBo+3hq6K2xQb8ONOtsV3uWvrLKoQKww== - -"@nx/nx-linux-arm-gnueabihf@16.0.1": - version "16.0.1" - resolved "https://registry.yarnpkg.com/@nx/nx-linux-arm-gnueabihf/-/nx-linux-arm-gnueabihf-16.0.1.tgz#325f124d8aa3c857a423a447db668f602afcdffa" - integrity sha512-WmmVXv5HBNRzn/vWUYapJC5+CPUBaIXo6O8Iz+bniiHtsXeV5W5aYwveF1QOkHePLwUtkE18V1LDIkYksOEHOQ== - -"@nx/nx-linux-arm64-gnu@16.0.1": - version "16.0.1" - resolved "https://registry.yarnpkg.com/@nx/nx-linux-arm64-gnu/-/nx-linux-arm64-gnu-16.0.1.tgz#9e0ed994e508c5b5dc453a96f9d940d3c481d1e3" - integrity sha512-G8tOXwi5qmeBcwDah/FB7ge25Iimyu6jXuB+zL/IBXgE98Q0JtWJF/VRI5x3eo7xGq0XWH1V7msgIXN17/RNbQ== - -"@nx/nx-linux-arm64-musl@16.0.1": - version "16.0.1" - resolved "https://registry.yarnpkg.com/@nx/nx-linux-arm64-musl/-/nx-linux-arm64-musl-16.0.1.tgz#9697f25bcef1d3c7d0888b88e17a61f437f8c1b0" - integrity sha512-wokwHMtvTzisw8G9VHgKAfPLtPsKlkJqOXJJpHkbxKXDZvwf/AQs03xDWCSV2P7B277VIPWJxuZ7pFqne0nRfw== - -"@nx/nx-linux-x64-gnu@16.0.1": - version "16.0.1" - resolved "https://registry.yarnpkg.com/@nx/nx-linux-x64-gnu/-/nx-linux-x64-gnu-16.0.1.tgz#2d0cb6f994ec7f0227dc82827d5036a11780d056" - integrity sha512-9GUs45JmqpGz14ZXt4636rxj6mul0UO9S6dJpJND7M3KPFbPELg0Urj9BUtXz4vhwL2lhKMcz6XvBpQSjyE2bg== - -"@nx/nx-linux-x64-musl@16.0.1": - version "16.0.1" - resolved "https://registry.yarnpkg.com/@nx/nx-linux-x64-musl/-/nx-linux-x64-musl-16.0.1.tgz#677ec1b91b6a7f24329f9c67adb428910c7d62d4" - integrity sha512-vGq6e6/v+/YiKZeyKNyTmYNavOFTSHRAyze9I4UGB0aRouYrEuuemBSdCff+IXtwvUZEgYkEW5vTJainRBG+ig== +"@nx/node@16.10.0": + version "16.10.0" + resolved "https://registry.yarnpkg.com/@nx/node/-/node-16.10.0.tgz#117490d96a8e1460cace475c78e6fbd3ec55a7b7" + integrity sha512-mOGxsZzLNg9kMy/FDkCQfhb/ig3WsttHxzG9+ynCHBV5svKOIqA3F+EUp1gre6wgRyi/qrEUhk6GER5ZTX2ygw== + dependencies: + "@nrwl/node" "16.10.0" + "@nx/devkit" "16.10.0" + "@nx/jest" "16.10.0" + "@nx/js" "16.10.0" + "@nx/linter" "16.10.0" + "@nx/workspace" "16.10.0" + tslib "^2.3.0" -"@nx/nx-win32-arm64-msvc@16.0.1": - version "16.0.1" - resolved "https://registry.yarnpkg.com/@nx/nx-win32-arm64-msvc/-/nx-win32-arm64-msvc-16.0.1.tgz#c619326a1e18dc728d1103ce876e2b245f5a38ee" - integrity sha512-3xROoV57qq6ibzmeTNcx8j7Rdj3hmSryzge2ynh9Zr+4dFT4WrsF72WRYQg/kbgNRhV+IfDNq5SMM2mPDl+aRw== +"@nx/nx-darwin-arm64@16.10.0": + version "16.10.0" + resolved "https://registry.yarnpkg.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.yarnpkg.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.yarnpkg.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.yarnpkg.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.yarnpkg.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.yarnpkg.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.yarnpkg.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.yarnpkg.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.yarnpkg.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.yarnpkg.com/@nx/nx-win32-x64-msvc/-/nx-win32-x64-msvc-16.10.0.tgz#7410a51d0f8be631eec9552f01b2e5946285927c" + integrity sha512-5iV2NKZnzxJwZZ4DM5JVbRG/nkhAbzEskKaLBB82PmYGKzaDHuMHP1lcPoD/rtYMlowZgNA/RQndfKvPBPwmXA== + +"@nx/react@16.10.0", "@nx/react@^16.10.0": + version "16.10.0" + resolved "https://registry.yarnpkg.com/@nx/react/-/react-16.10.0.tgz#37f23f58f524fbfeb6b50714638aaefa8cfd8cb9" + integrity sha512-WjiXImZWqXDXguHHONO/ANWl3BzqLt6pEvN+uhrRbJGBUWKJz95z8PQfZXeiK6UVY8RFHZXkHtklV3TvTvQ64w== + dependencies: + "@nrwl/react" "16.10.0" + "@nx/devkit" "16.10.0" + "@nx/js" "16.10.0" + "@nx/linter" "16.10.0" + "@nx/web" "16.10.0" + "@phenomnomnominal/tsquery" "~5.0.1" + "@svgr/webpack" "^8.0.1" + chalk "^4.1.0" + file-loader "^6.2.0" + minimatch "3.0.5" + tslib "^2.3.0" -"@nx/nx-win32-x64-msvc@16.0.1": - version "16.0.1" - resolved "https://registry.yarnpkg.com/@nx/nx-win32-x64-msvc/-/nx-win32-x64-msvc-16.0.1.tgz#ccdc365c0b5a2b1006ae546c4c1fec0ae3a7e061" - integrity sha512-7jkC3kukEBnV/1+YMFY0VjbGGlGihpQEj3LrgjVdM8+Uf1qcyKhmHlVV3iJ87Bix+wVG7TmsSJ+XPchh0FJlsw== +"@nx/web@16.10.0": + version "16.10.0" + resolved "https://registry.yarnpkg.com/@nx/web/-/web-16.10.0.tgz#b242a6403df8e54bdd22f6c19adff497bee2a726" + integrity sha512-UMGL7BOPyy6flJLePSG8JhEbfI9W4Y6oVqOziLbQODduU3HGr6woJCI38txnOX4nddbyEnL9tRuKkQ8u0YAYnw== + dependencies: + "@nrwl/web" "16.10.0" + "@nx/devkit" "16.10.0" + "@nx/js" "16.10.0" + chalk "^4.1.0" + detect-port "^1.5.1" + http-server "^14.1.0" + tslib "^2.3.0" -"@nx/webpack@16.0.1": - version "16.0.1" - resolved "https://registry.yarnpkg.com/@nx/webpack/-/webpack-16.0.1.tgz#97547e5e4cd13c2c47c0781c79bcb2a5814fcd8e" - integrity sha512-qArqDAc08EggonVKncYtN1X56G+QhkEKaz9mb1TFXVGj2VE5p0SY9uXd1b8I3mVG4iczs/zUXedvbIgbdexDYQ== +"@nx/webpack@16.10.0": + version "16.10.0" + resolved "https://registry.yarnpkg.com/@nx/webpack/-/webpack-16.10.0.tgz#13368e822b694c24f43e60035aa875724c40e49e" + integrity sha512-rKftYWh4kW6A7svMx73Zg3fJFDS3618cKTZsCkuQWeSE+RMQXjcefeCxYhwvHXc/ehoakCIIBx7jDCR+6NIlzQ== dependencies: - "@babel/core" "^7.15.0" - "@nrwl/webpack" "16.0.1" - "@nx/devkit" "16.0.1" - "@nx/js" "16.0.1" + "@babel/core" "^7.22.9" + "@nrwl/webpack" "16.10.0" + "@nx/devkit" "16.10.0" + "@nx/js" "16.10.0" autoprefixer "^10.4.9" babel-loader "^9.1.2" + browserslist "^4.21.4" chalk "^4.1.0" - chokidar "^3.5.1" copy-webpack-plugin "^10.2.4" css-loader "^6.4.0" - css-minimizer-webpack-plugin "^3.4.1" - dotenv "~10.0.0" - file-loader "^6.2.0" + css-minimizer-webpack-plugin "^5.0.0" fork-ts-checker-webpack-plugin "7.2.13" - ignore "^5.0.4" less "4.1.3" less-loader "11.1.0" license-webpack-plugin "^4.0.2" @@ -2180,48 +2408,35 @@ postcss "^8.4.14" postcss-import "~14.1.0" postcss-loader "^6.1.1" - rxjs "^6.5.4" + rxjs "^7.8.0" sass "^1.42.1" sass-loader "^12.2.0" source-map-loader "^3.0.0" style-loader "^3.3.0" - stylus "^0.55.0" + stylus "^0.59.0" stylus-loader "^7.1.0" terser-webpack-plugin "^5.3.3" ts-loader "^9.3.1" - ts-node "10.9.1" - tsconfig-paths "^4.1.2" tsconfig-paths-webpack-plugin "4.0.0" tslib "^2.3.0" - webpack "^5.75.0" + webpack "^5.80.0" webpack-dev-server "^4.9.3" webpack-node-externals "^3.0.0" webpack-subresource-integrity "^5.1.0" -"@nx/workspace@16.0.1": - version "16.0.1" - resolved "https://registry.yarnpkg.com/@nx/workspace/-/workspace-16.0.1.tgz#1e309f8e4b1999b34e135f4f44302f52268ad5ab" - integrity sha512-meN3VBJt4HCmNCGhroea0v8QhqV0X1UIE5hjHISvYcPRXcmYxhD3QwkhR0zuI8EeZyzX5MmyAZEispHNDTPZ+w== +"@nx/workspace@16.10.0": + version "16.10.0" + resolved "https://registry.yarnpkg.com/@nx/workspace/-/workspace-16.10.0.tgz#01d8679949b9a7637b756876e3a1f4853a94c230" + integrity sha512-95Eq36bzq2hb095Zvg+Ru8o9oIeOE62tNGGpohBkZPKoK2CUTYEq0AZtdj1suXS82ukCFCyyZ/c/fwxL62HRZA== dependencies: - "@nrwl/workspace" "16.0.1" - "@nx/devkit" "16.0.1" - "@parcel/watcher" "2.0.4" + "@nrwl/workspace" "16.10.0" + "@nx/devkit" "16.10.0" chalk "^4.1.0" - chokidar "^3.5.1" - cli-cursor "3.1.0" - cli-spinners "2.6.1" - dotenv "~10.0.0" - figures "3.2.0" - flat "^5.0.2" + enquirer "~2.3.6" ignore "^5.0.4" - minimatch "3.0.5" - npm-run-path "^4.0.1" - nx "16.0.1" - open "^8.4.0" - rxjs "^6.5.4" - tmp "~0.2.1" + nx "16.10.0" + rxjs "^7.8.0" tslib "^2.3.0" - yargs "^17.6.2" yargs-parser "21.1.1" "@octokit/auth-token@^4.0.0": @@ -2230,9 +2445,9 @@ integrity sha512-tY/msAuJo6ARbK6SPIxZrPBms3xPbfwBrulZe0Wtr/DIY9lje2HeV1uoebShn6mx7SjCHif6EjMvoREj+gZ+SA== "@octokit/core@^5.0.0": - version "5.0.1" - resolved "https://registry.yarnpkg.com/@octokit/core/-/core-5.0.1.tgz#865da2b30d54354cccb6e30861ddfa0e24494780" - integrity sha512-lyeeeZyESFo+ffI801SaBKmCfsvarO+dgV8/0gD8u1d87clbEdWsP5yC+dSj3zLhb2eIf5SJrn6vDz9AheETHw== + version "5.0.2" + resolved "https://registry.yarnpkg.com/@octokit/core/-/core-5.0.2.tgz#ae7c5d61fdd98ba348a27c3cc510879a130b1234" + integrity sha512-cZUy1gUvd4vttMic7C0lwPed8IYXWYp8kHIMatyhY8t8n3Cpw2ILczkV5pGMPqef7v0bLo0pOHrEHarsau2Ydg== dependencies: "@octokit/auth-token" "^4.0.0" "@octokit/graphql" "^7.0.0" @@ -2243,12 +2458,11 @@ universal-user-agent "^6.0.0" "@octokit/endpoint@^9.0.0": - version "9.0.1" - resolved "https://registry.yarnpkg.com/@octokit/endpoint/-/endpoint-9.0.1.tgz#c3f69d27accddcb04a3199fcef541804288149d2" - integrity sha512-hRlOKAovtINHQPYHZlfyFwaM8OyetxeoC81lAkBy34uLb8exrZB50SQdeW3EROqiY9G9yxQTpp5OHTV54QD+vA== + version "9.0.3" + resolved "https://registry.yarnpkg.com/@octokit/endpoint/-/endpoint-9.0.3.tgz#2a38b92766bd535775b1adc7b731458497433613" + integrity sha512-TXVX57fJV7SA6LvRkeXPIOBr8AKvKDlhwNVBP/26O9DjIFi+CkYZGFLP9WtPdVOicRIhqGHxBCC6Fdj5AWWGgQ== dependencies: "@octokit/types" "^12.0.0" - is-plain-object "^5.0.0" universal-user-agent "^6.0.0" "@octokit/graphql@^7.0.0": @@ -2260,17 +2474,17 @@ "@octokit/types" "^12.0.0" universal-user-agent "^6.0.0" -"@octokit/openapi-types@^19.0.0": - version "19.0.0" - resolved "https://registry.yarnpkg.com/@octokit/openapi-types/-/openapi-types-19.0.0.tgz#0101bf62ab14c1946149a0f8385440963e1253c4" - integrity sha512-PclQ6JGMTE9iUStpzMkwLCISFn/wDeRjkZFIKALpvJQNBGwDoYYi2fFvuHwssoQ1rXI5mfh6jgTgWuddeUzfWw== +"@octokit/openapi-types@^19.0.2": + version "19.0.2" + resolved "https://registry.yarnpkg.com/@octokit/openapi-types/-/openapi-types-19.0.2.tgz#d72778fe2f6151314b6f0201fbc771bb741276fc" + integrity sha512-8li32fUDUeml/ACRp/njCWTsk5t17cfTM1jp9n08pBrqs5cDFJubtjsSnuz56r5Tad6jdEPJld7LxNp9dNcyjQ== "@octokit/plugin-paginate-rest@^9.0.0": - version "9.0.0" - resolved "https://registry.yarnpkg.com/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-9.0.0.tgz#21fd12816c2dc158a775ed20be5abcbc61052a46" - integrity sha512-oIJzCpttmBTlEhBmRvb+b9rlnGpmFgDtZ0bB6nq39qIod6A5DP+7RkVLMOixIgRCYSHDTeayWqmiJ2SZ6xgfdw== + version "9.1.4" + resolved "https://registry.yarnpkg.com/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-9.1.4.tgz#9eca55e3e88f15b574e072732769e933bfa88d8b" + integrity sha512-MvZx4WvfhBnt7PtH5XE7HORsO7bBk4er1FgRIUr1qJ89NR2I6bWjGyKsxk8z42FPQ34hFQm0Baanh4gzdZR4gQ== dependencies: - "@octokit/types" "^12.0.0" + "@octokit/types" "^12.3.0" "@octokit/plugin-retry@^6.0.0": version "6.0.1" @@ -2282,11 +2496,11 @@ bottleneck "^2.15.3" "@octokit/plugin-throttling@^8.0.0": - version "8.0.1" - resolved "https://registry.yarnpkg.com/@octokit/plugin-throttling/-/plugin-throttling-8.0.1.tgz#df2df59d0be8ca8e4f30cc38e6b2bd3ccef5606c" - integrity sha512-i373s7TgaoAOlzOepjUTvyMXqjBu9b26SvLyLD5onBdgexIOeu43yOH1e3z3VPAzbEyRfKDHcqfAsOyKl7Jtxg== + version "8.1.3" + resolved "https://registry.yarnpkg.com/@octokit/plugin-throttling/-/plugin-throttling-8.1.3.tgz#7fb0e001c0cb9383c6be07740b8ec326ed990f6b" + integrity sha512-pfyqaqpc0EXh5Cn4HX9lWYsZ4gGbjnSmUILeu4u2gnuM50K/wIk9s1Pxt3lVeVwekmITgN/nJdoh43Ka+vye8A== dependencies: - "@octokit/types" "^12.0.0" + "@octokit/types" "^12.2.0" bottleneck "^2.15.3" "@octokit/request-error@^5.0.0": @@ -2299,22 +2513,21 @@ once "^1.4.0" "@octokit/request@^8.0.1", "@octokit/request@^8.0.2": - version "8.1.4" - resolved "https://registry.yarnpkg.com/@octokit/request/-/request-8.1.4.tgz#12dfaebdb2ea375eaabb41d39d45182531ac2857" - integrity sha512-M0aaFfpGPEKrg7XoA/gwgRvc9MSXHRO2Ioki1qrPDbl1e9YhjIwVoHE7HIKmv/m3idzldj//xBujcFNqGX6ENA== + version "8.1.6" + resolved "https://registry.yarnpkg.com/@octokit/request/-/request-8.1.6.tgz#a76a859c30421737a3918b40973c2ff369009571" + integrity sha512-YhPaGml3ncZC1NfXpP3WZ7iliL1ap6tLkAp6MvbK2fTTPytzVUyUesBBogcdMm86uRYO5rHaM1xIWxigWZ17MQ== dependencies: "@octokit/endpoint" "^9.0.0" "@octokit/request-error" "^5.0.0" "@octokit/types" "^12.0.0" - is-plain-object "^5.0.0" universal-user-agent "^6.0.0" -"@octokit/types@^12.0.0": - version "12.0.0" - resolved "https://registry.yarnpkg.com/@octokit/types/-/types-12.0.0.tgz#6b34309288b6f5ac9761d2589e3165cde1b95fee" - integrity sha512-EzD434aHTFifGudYAygnFlS1Tl6KhbTynEWELQXIbTY8Msvb5nEqTZIm7sbPEt4mQYLZwu3zPKVdeIrw0g7ovg== +"@octokit/types@^12.0.0", "@octokit/types@^12.2.0", "@octokit/types@^12.3.0": + version "12.3.0" + resolved "https://registry.yarnpkg.com/@octokit/types/-/types-12.3.0.tgz#e3f8bc53f65ef551e19cc1a0fea15adadec17d2d" + integrity sha512-nJ8X2HRr234q3w/FcovDlA+ttUU4m1eJAourvfUUtwAWeqL8AsyRqfnLvVnYn3NFbUnsmzQCzLNdFerPwdmcDQ== dependencies: - "@octokit/openapi-types" "^19.0.0" + "@octokit/openapi-types" "^19.0.2" "@parcel/watcher@2.0.4": version "2.0.4" @@ -2363,6 +2576,21 @@ resolved "https://registry.yarnpkg.com/@pkgjs/parseargs/-/parseargs-0.11.0.tgz#a77ea742fab25775145434eb1d2328cf5013ac33" integrity sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg== +"@pmmmwh/react-refresh-webpack-plugin@^0.5.7": + version "0.5.11" + resolved "https://registry.yarnpkg.com/@pmmmwh/react-refresh-webpack-plugin/-/react-refresh-webpack-plugin-0.5.11.tgz#7c2268cedaa0644d677e8c4f377bc8fb304f714a" + integrity sha512-7j/6vdTym0+qZ6u4XbSAxrWBGYSdCfTzySkj7WAFgDLmSyWlOrWvpyzxlFh5jtw9dn0oL/jtW+06XfFiisN3JQ== + dependencies: + ansi-html-community "^0.0.8" + common-path-prefix "^3.0.0" + 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" + source-map "^0.7.3" + "@pnpm/config.env-replace@^1.1.0": version "1.1.0" resolved "https://registry.yarnpkg.com/@pnpm/config.env-replace/-/config.env-replace-1.1.0.tgz#ab29da53df41e8948a00f2433f085f54de8b3a4c" @@ -2384,6 +2612,77 @@ "@pnpm/network.ca-file" "^1.0.1" config-chain "^1.1.11" +"@rc-component/color-picker@~1.4.1": + version "1.4.1" + resolved "https://registry.yarnpkg.com/@rc-component/color-picker/-/color-picker-1.4.1.tgz#dcab0b660e9c4ed63a7582db68ed4a77c862cb93" + integrity sha512-vh5EWqnsayZa/JwUznqDaPJz39jznx/YDbyBuVJntv735tKXKwEUZZb2jYEldOg+NKWZwtALjGMrNeGBmqFoEw== + dependencies: + "@babel/runtime" "^7.10.1" + "@ctrl/tinycolor" "^3.6.0" + classnames "^2.2.6" + rc-util "^5.30.0" + +"@rc-component/context@^1.4.0": + version "1.4.0" + resolved "https://registry.yarnpkg.com/@rc-component/context/-/context-1.4.0.tgz#dc6fb021d6773546af8f016ae4ce9aea088395e8" + integrity sha512-kFcNxg9oLRMoL3qki0OMxK+7g5mypjgaaJp/pkOis/6rVxma9nJBF/8kCIuTYHUQNr0ii7MxqE33wirPZLJQ2w== + dependencies: + "@babel/runtime" "^7.10.1" + rc-util "^5.27.0" + +"@rc-component/mini-decimal@^1.0.1": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@rc-component/mini-decimal/-/mini-decimal-1.1.0.tgz#7b7a362b14a0a54cb5bc6fd2b82731f29f11d9b0" + integrity sha512-jS4E7T9Li2GuYwI6PyiVXmxTiM6b07rlD9Ge8uGZSCz3WlzcG5ZK7g5bbuKNeZ9pgUuPK/5guV781ujdVpm4HQ== + dependencies: + "@babel/runtime" "^7.18.0" + +"@rc-component/mutate-observer@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@rc-component/mutate-observer/-/mutate-observer-1.1.0.tgz#ee53cc88b78aade3cd0653609215a44779386fd8" + integrity sha512-QjrOsDXQusNwGZPf4/qRQasg7UFEj06XiCJ8iuiq/Io7CrHrgVi6Uuetw60WAMG1799v+aM8kyc+1L/GBbHSlw== + dependencies: + "@babel/runtime" "^7.18.0" + classnames "^2.3.2" + rc-util "^5.24.4" + +"@rc-component/portal@^1.0.0-8", "@rc-component/portal@^1.0.0-9", "@rc-component/portal@^1.0.2", "@rc-component/portal@^1.1.0", "@rc-component/portal@^1.1.1": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@rc-component/portal/-/portal-1.1.2.tgz#55db1e51d784e034442e9700536faaa6ab63fc71" + integrity sha512-6f813C0IsasTZms08kfA8kPAGxbbkYToa8ALaiDIGGECU4i9hj8Plgbx0sNJDrey3EtHO30hmdaxtT0138xZcg== + dependencies: + "@babel/runtime" "^7.18.0" + classnames "^2.3.2" + rc-util "^5.24.4" + +"@rc-component/tour@~1.10.0": + version "1.10.0" + resolved "https://registry.yarnpkg.com/@rc-component/tour/-/tour-1.10.0.tgz#b05bc327438f1c583439e2d2dcc10ec0530aea19" + integrity sha512-voV0BKaTJbewB9LLgAHQ7tAGG7rgDkKQkZo82xw2gIk542hY+o7zwoqdN16oHhIKk7eG/xi+mdXrONT62Dt57A== + dependencies: + "@babel/runtime" "^7.18.0" + "@rc-component/portal" "^1.0.0-9" + "@rc-component/trigger" "^1.3.6" + classnames "^2.3.2" + rc-util "^5.24.4" + +"@rc-component/trigger@^1.17.0", "@rc-component/trigger@^1.18.0", "@rc-component/trigger@^1.18.2", "@rc-component/trigger@^1.3.6", "@rc-component/trigger@^1.5.0", "@rc-component/trigger@^1.7.0": + version "1.18.2" + resolved "https://registry.yarnpkg.com/@rc-component/trigger/-/trigger-1.18.2.tgz#dc52c4c66fa8aaccaf0710498f2429fc05454e3b" + integrity sha512-jRLYgFgjLEPq3MvS87fIhcfuywFSRDaDrYw1FLku7Cm4esszvzTbA0JBsyacAyLrK9rF3TiHFcvoEDMzoD3CTA== + dependencies: + "@babel/runtime" "^7.23.2" + "@rc-component/portal" "^1.1.0" + classnames "^2.3.2" + rc-motion "^2.0.0" + rc-resize-observer "^1.3.1" + rc-util "^5.38.0" + +"@remix-run/router@1.6.2": + version "1.6.2" + resolved "https://registry.yarnpkg.com/@remix-run/router/-/router-1.6.2.tgz#bbe75f8c59e0b7077584920ce2cc76f8f354934d" + integrity sha512-LzqpSrMK/3JBAVBI9u3NWtOhWNw5AMQfrUFYB0+bDHTSw17z++WJLsPsxAuK+oSddsxk4d7F/JcdDPM1M5YAhA== + "@semantic-release/changelog@^6.0.3": version "6.0.3" resolved "https://registry.yarnpkg.com/@semantic-release/changelog/-/changelog-6.0.3.tgz#6195630ecbeccad174461de727d5f975abc23eeb" @@ -2445,9 +2744,9 @@ p-reduce "^2.0.0" "@semantic-release/github@^9.0.0": - version "9.2.1" - resolved "https://registry.yarnpkg.com/@semantic-release/github/-/github-9.2.1.tgz#031a617d55f9a78ef5fc2dab4bb6e84d84b8cd37" - integrity sha512-fEn9uOe6jwWR6ro2Wh6YNBCBuZ5lRi8Myz+1j3KDTSt8OuUGlpVM4lFac/0bDrql2NOKrIEAMGCfWb9WMIdzIg== + version "9.2.3" + resolved "https://registry.yarnpkg.com/@semantic-release/github/-/github-9.2.3.tgz#d8eeba7c00bf3145cee1bb9b60940d475af3e9f9" + integrity sha512-FAjXb1F84CVI6IG8fWi+XS9ErYD+s3MHkP03zBa3+GyUrV4kqwYu/WPppIciHxujGFR51SAWPkOY5rnH6ZlrxA== dependencies: "@octokit/core" "^5.0.0" "@octokit/plugin-paginate-rest" "^9.0.0" @@ -2457,7 +2756,7 @@ aggregate-error "^5.0.0" debug "^4.3.4" dir-glob "^3.0.1" - globby "^13.1.4" + globby "^14.0.0" http-proxy-agent "^7.0.0" https-proxy-agent "^7.0.0" issue-parser "^6.0.0" @@ -2467,9 +2766,9 @@ url-join "^5.0.0" "@semantic-release/gitlab@^12.0.1": - version "12.0.6" - resolved "https://registry.yarnpkg.com/@semantic-release/gitlab/-/gitlab-12.0.6.tgz#00c9c1cf9e8781f88c39359b757c3b8c91957d59" - integrity sha512-NjGq+6cA64bQIyAjFSxzXxUJCS94fAtw8QMQSvuUycqhbQqXvjTKuknm9fS327leZURqslDMMKwEMuj0cHy31g== + version "12.1.1" + resolved "https://registry.yarnpkg.com/@semantic-release/gitlab/-/gitlab-12.1.1.tgz#00cbd31eddd512a7643c45745b61135e0534358c" + integrity sha512-vM8mqMmegRJB4+9MJCYeCt5Gn4C2rpF0bNOzKOHq1IaI4FleIV5sss0fn55jVCuVVztTnoPQylnti5Tkdg3uaw== dependencies: "@semantic-release/error" "^4.0.0" aggregate-error "^5.0.0" @@ -2478,7 +2777,7 @@ escape-string-regexp "^5.0.0" form-data "^4.0.0" fs-extra "^11.0.0" - globby "^11.0.0" + globby "^14.0.0" got "^13.0.0" hpagent "^1.0.0" lodash-es "^4.17.21" @@ -2571,11 +2870,21 @@ resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.27.8.tgz#6667fac16c436b5434a387a34dedb013198f6e6e" integrity sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA== +"@sindresorhus/is@^4.0.0": + version "4.6.0" + resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-4.6.0.tgz#3c7c9c46e678feefe7a2e5bb609d3dbd665ffb3f" + integrity sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw== + "@sindresorhus/is@^5.2.0": version "5.6.0" resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-5.6.0.tgz#41dd6093d34652cddb5d5bdeee04eafc33826668" integrity sha512-TV7t8GKYaJWsn00tFDqBw8+Uqmr8A0fRU1tvTQhyZzGv0sJCGRQL3JGMI3ucuKo3XIZdUP+Lx7/gh2t3lewy7g== +"@sindresorhus/merge-streams@^1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@sindresorhus/merge-streams/-/merge-streams-1.0.0.tgz#9cd84cc15bc865a5ca35fcaae198eb899f7b5c90" + integrity sha512-rUV5WyJrJLoloD4NDN1V1+LDMDWOa4OTsT4yYJwQNpTU6FWxkxHpL7eu4w+DmiH8x/EAM1otkPE1+LaspIbplw== + "@sinonjs/commons@^3.0.0": version "3.0.0" resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-3.0.0.tgz#beb434fe875d965265e04722ccfc21df7f755d72" @@ -2652,22 +2961,280 @@ resolved "https://registry.yarnpkg.com/@stablelib/wipe/-/wipe-1.0.1.tgz#d21401f1d59ade56a62e139462a97f104ed19a36" integrity sha512-WfqfX/eXGiAd3RJe4VU2snh/ZPwtSjLG4ynQ/vYzvghTh7dHFcI1wl+nrkWG6lGhukOxOsUHfv8dUXr58D0ayg== -"@szmarczak/http-timer@^5.0.1": - version "5.0.1" - resolved "https://registry.yarnpkg.com/@szmarczak/http-timer/-/http-timer-5.0.1.tgz#c7c1bf1141cdd4751b0399c8fc7b8b664cd5be3a" - integrity sha512-+PmQX0PiAYPMeVYe237LJAYvOMYW1j2rH5YROyS3b4CTVJum34HfRvKvAzozHAQG0TnHNdUfY9nCeUyRAs//cw== - dependencies: - defer-to-connect "^2.0.1" +"@svgr/babel-plugin-add-jsx-attribute@8.0.0": + version "8.0.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-8.0.0.tgz#4001f5d5dd87fa13303e36ee106e3ff3a7eb8b22" + integrity sha512-b9MIk7yhdS1pMCZM8VeNfUlSKVRhsHZNMl5O9SfaX0l0t5wjdgu4IDzGB8bpnGBBOjGST3rRFVsaaEtI4W6f7g== -"@tootallnate/once@2": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-2.0.0.tgz#f544a148d3ab35801c1f633a7441fd87c2e484bf" - integrity sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A== +"@svgr/babel-plugin-remove-jsx-attribute@8.0.0": + version "8.0.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-remove-jsx-attribute/-/babel-plugin-remove-jsx-attribute-8.0.0.tgz#69177f7937233caca3a1afb051906698f2f59186" + integrity sha512-BcCkm/STipKvbCl6b7QFrMh/vx00vIP63k2eM66MfHJzPr6O2U0jYEViXkHJWqXqQYjdeA9cuCl5KWmlwjDvbA== -"@trysound/sax@0.2.0": - version "0.2.0" - resolved "https://registry.yarnpkg.com/@trysound/sax/-/sax-0.2.0.tgz#cccaab758af56761eb7bf37af6f03f326dd798ad" - integrity sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA== +"@svgr/babel-plugin-remove-jsx-empty-expression@8.0.0": + version "8.0.0" + resolved "https://registry.yarnpkg.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@8.0.0": + version "8.0.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-8.0.0.tgz#8fbb6b2e91fa26ac5d4aa25c6b6e4f20f9c0ae27" + integrity sha512-KVQ+PtIjb1BuYT3ht8M5KbzWBhdAjjUPdlMtpuw/VjT8coTrItWX6Qafl9+ji831JaJcu6PJNKCV0bp01lBNzQ== + +"@svgr/babel-plugin-svg-dynamic-title@8.0.0": + version "8.0.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-8.0.0.tgz#1d5ba1d281363fc0f2f29a60d6d936f9bbc657b0" + integrity sha512-omNiKqwjNmOQJ2v6ge4SErBbkooV2aAWwaPFs2vUY7p7GhVkzRkJ00kILXQvRhA6miHnNpXv7MRnnSjdRjK8og== + +"@svgr/babel-plugin-svg-em-dimensions@8.0.0": + version "8.0.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-svg-em-dimensions/-/babel-plugin-svg-em-dimensions-8.0.0.tgz#35e08df300ea8b1d41cb8f62309c241b0369e501" + integrity sha512-mURHYnu6Iw3UBTbhGwE/vsngtCIbHE43xCRK7kCw4t01xyGqb2Pd+WXekRRoFOBIY29ZoOhUCTEweDMdrjfi9g== + +"@svgr/babel-plugin-transform-react-native-svg@8.1.0": + version "8.1.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-8.1.0.tgz#90a8b63998b688b284f255c6a5248abd5b28d754" + integrity sha512-Tx8T58CHo+7nwJ+EhUwx3LfdNSG9R2OKfaIXXs5soiy5HtgoAEkDay9LIimLOcG8dJQH1wPZp/cnAv6S9CrR1Q== + +"@svgr/babel-plugin-transform-svg-component@8.0.0": + version "8.0.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-8.0.0.tgz#013b4bfca88779711f0ed2739f3f7efcefcf4f7e" + integrity sha512-DFx8xa3cZXTdb/k3kfPeaixecQLgKh5NVBMwD0AQxOzcZawK4oo1Jh9LbrcACUivsCA7TLG8eeWgrDXjTMhRmw== + +"@svgr/babel-preset@8.1.0": + version "8.1.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-preset/-/babel-preset-8.1.0.tgz#0e87119aecdf1c424840b9d4565b7137cabf9ece" + integrity sha512-7EYDbHE7MxHpv4sxvnVPngw5fuR6pw79SkcrILHJ/iMpuKySNCl5W1qcwPEpU+LgyRXOaAFgH0KhwD18wwg6ug== + dependencies: + "@svgr/babel-plugin-add-jsx-attribute" "8.0.0" + "@svgr/babel-plugin-remove-jsx-attribute" "8.0.0" + "@svgr/babel-plugin-remove-jsx-empty-expression" "8.0.0" + "@svgr/babel-plugin-replace-jsx-attribute-value" "8.0.0" + "@svgr/babel-plugin-svg-dynamic-title" "8.0.0" + "@svgr/babel-plugin-svg-em-dimensions" "8.0.0" + "@svgr/babel-plugin-transform-react-native-svg" "8.1.0" + "@svgr/babel-plugin-transform-svg-component" "8.0.0" + +"@svgr/core@8.1.0": + version "8.1.0" + resolved "https://registry.yarnpkg.com/@svgr/core/-/core-8.1.0.tgz#41146f9b40b1a10beaf5cc4f361a16a3c1885e88" + integrity sha512-8QqtOQT5ACVlmsvKOJNEaWmRPmcojMOzCz4Hs2BGG/toAp/K38LcsMRyLp349glq5AzJbCEeimEoxaX6v/fLrA== + dependencies: + "@babel/core" "^7.21.3" + "@svgr/babel-preset" "8.1.0" + camelcase "^6.2.0" + cosmiconfig "^8.1.3" + snake-case "^3.0.4" + +"@svgr/hast-util-to-babel-ast@8.0.0": + version "8.0.0" + resolved "https://registry.yarnpkg.com/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-8.0.0.tgz#6952fd9ce0f470e1aded293b792a2705faf4ffd4" + integrity sha512-EbDKwO9GpfWP4jN9sGdYwPBU0kdomaPIL2Eu4YwmgP+sJeXT+L7bMwJUBnhzfH8Q2qMBqZ4fJwpCyYsAN3mt2Q== + dependencies: + "@babel/types" "^7.21.3" + entities "^4.4.0" + +"@svgr/plugin-jsx@8.1.0": + version "8.1.0" + resolved "https://registry.yarnpkg.com/@svgr/plugin-jsx/-/plugin-jsx-8.1.0.tgz#96969f04a24b58b174ee4cd974c60475acbd6928" + integrity sha512-0xiIyBsLlr8quN+WyuxooNW9RJ0Dpr8uOnH/xrCVO8GLUcwHISwj1AG0k+LFzteTkAA0GbX0kj9q6Dk70PTiPA== + dependencies: + "@babel/core" "^7.21.3" + "@svgr/babel-preset" "8.1.0" + "@svgr/hast-util-to-babel-ast" "8.0.0" + svg-parser "^2.0.4" + +"@svgr/plugin-svgo@8.1.0": + version "8.1.0" + resolved "https://registry.yarnpkg.com/@svgr/plugin-svgo/-/plugin-svgo-8.1.0.tgz#b115b7b967b564f89ac58feae89b88c3decd0f00" + integrity sha512-Ywtl837OGO9pTLIN/onoWLmDQ4zFUycI1g76vuKGEz6evR/ZTJlJuz3G/fIkb6OVBJ2g0o6CGJzaEjfmEo3AHA== + dependencies: + cosmiconfig "^8.1.3" + deepmerge "^4.3.1" + svgo "^3.0.2" + +"@svgr/webpack@^8.0.1": + version "8.1.0" + resolved "https://registry.yarnpkg.com/@svgr/webpack/-/webpack-8.1.0.tgz#16f1b5346f102f89fda6ec7338b96a701d8be0c2" + integrity sha512-LnhVjMWyMQV9ZmeEy26maJk+8HTIbd59cH4F2MJ439k9DqejRisfFNGAPvRYlKETuh9LrImlS8aKsBgKjMA8WA== + dependencies: + "@babel/core" "^7.21.3" + "@babel/plugin-transform-react-constant-elements" "^7.21.3" + "@babel/preset-env" "^7.20.2" + "@babel/preset-react" "^7.18.6" + "@babel/preset-typescript" "^7.21.0" + "@svgr/core" "8.1.0" + "@svgr/plugin-jsx" "8.1.0" + "@svgr/plugin-svgo" "8.1.0" + +"@swc-node/core@^1.10.6": + version "1.10.6" + resolved "https://registry.yarnpkg.com/@swc-node/core/-/core-1.10.6.tgz#5c2af68bd4c9c8f5d91178a724af341a4402f5b6" + integrity sha512-lDIi/rPosmKIknWzvs2/Fi9zWRtbkx8OJ9pQaevhsoGzJSal8Pd315k1W5AIrnknfdAB4HqRN12fk6AhqnrEEw== + +"@swc-node/register@^1.6.8": + version "1.6.8" + resolved "https://registry.yarnpkg.com/@swc-node/register/-/register-1.6.8.tgz#4e2402b42ae5b538d5041e0c4d86d9c3c8d5b323" + integrity sha512-74ijy7J9CWr1Z88yO+ykXphV29giCrSpANQPQRooE0bObpkTO1g4RzQovIfbIaniBiGDDVsYwDoQ3FIrCE8HcQ== + dependencies: + "@swc-node/core" "^1.10.6" + "@swc-node/sourcemap-support" "^0.3.0" + colorette "^2.0.19" + debug "^4.3.4" + pirates "^4.0.5" + tslib "^2.5.0" + +"@swc-node/sourcemap-support@^0.3.0": + version "0.3.0" + resolved "https://registry.yarnpkg.com/@swc-node/sourcemap-support/-/sourcemap-support-0.3.0.tgz#e8a0d139bd3e8db39635f63fde43dbe6c39237cc" + integrity sha512-gqBJSmJMWomZFxlppaKea7NeAqFrDrrS0RMt24No92M3nJWcyI9YKGEQKl+EyJqZ5gh6w1s0cTklMHMzRwA1NA== + dependencies: + source-map-support "^0.5.21" + tslib "^2.5.0" + +"@swc/cli@~0.1.62": + version "0.1.63" + resolved "https://registry.yarnpkg.com/@swc/cli/-/cli-0.1.63.tgz#b4ab850f8c285d06d593428b14ffa3df782adcbb" + integrity sha512-EM9oxxHzmmsprYRbGqsS2M4M/Gr5Gkcl0ROYYIdlUyTkhOiX822EQiRCpPCwdutdnzH2GyaTN7wc6i0Y+CKd3A== + dependencies: + "@mole-inc/bin-wrapper" "^8.0.1" + commander "^7.1.0" + fast-glob "^3.2.5" + semver "^7.3.8" + slash "3.0.0" + source-map "^0.7.3" + +"@swc/core-darwin-arm64@1.3.99": + version "1.3.99" + resolved "https://registry.yarnpkg.com/@swc/core-darwin-arm64/-/core-darwin-arm64-1.3.99.tgz#def204349ac645b8de21a800fa784907642a6c91" + integrity sha512-Qj7Jct68q3ZKeuJrjPx7k8SxzWN6PqLh+VFxzA+KwLDpQDPzOlKRZwkIMzuFjLhITO4RHgSnXoDk/Syz0ZeN+Q== + +"@swc/core-darwin-x64@1.3.99": + version "1.3.99" + resolved "https://registry.yarnpkg.com/@swc/core-darwin-x64/-/core-darwin-x64-1.3.99.tgz#2633f1ac1668ec569f34f86eb5250d56fcacd952" + integrity sha512-wR7m9QVJjgiBu1PSOHy7s66uJPa45Kf9bZExXUL+JAa9OQxt5y+XVzr+n+F045VXQOwdGWplgPnWjgbUUHEVyw== + +"@swc/core-linux-arm64-gnu@1.3.99": + version "1.3.99" + resolved "https://registry.yarnpkg.com/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.3.99.tgz#871c2f049a3a5d88bcc7317ac004230517a08ba4" + integrity sha512-gcGv1l5t0DScEONmw5OhdVmEI/o49HCe9Ik38zzH0NtDkc+PDYaCcXU5rvfZP2qJFaAAr8cua8iJcOunOSLmnA== + +"@swc/core-linux-arm64-musl@1.3.99": + version "1.3.99" + resolved "https://registry.yarnpkg.com/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.3.99.tgz#28ed1622e92bc13aab4b650f2af695af8695289b" + integrity sha512-XL1/eUsTO8BiKsWq9i3iWh7H99iPO61+9HYiWVKhSavknfj4Plbn+XyajDpxsauln5o8t+BRGitymtnAWJM4UQ== + +"@swc/core-linux-x64-gnu@1.3.99": + version "1.3.99" + resolved "https://registry.yarnpkg.com/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.3.99.tgz#8e07add9cc8b76d542959e3240340effa6c6e446" + integrity sha512-fGrXYE6DbTfGNIGQmBefYxSk3rp/1lgbD0nVg4rl4mfFRQPi7CgGhrrqSuqZ/ezXInUIgoCyvYGWFSwjLXt/Qg== + +"@swc/core-linux-x64-musl@1.3.99": + version "1.3.99" + resolved "https://registry.yarnpkg.com/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.3.99.tgz#677eb82d6862605cb0a81ec5b732bef2a9861b16" + integrity sha512-kvgZp/mqf3IJ806gUOL6gN6VU15+DfzM1Zv4Udn8GqgXiUAvbQehrtruid4Snn5pZTLj4PEpSCBbxgxK1jbssA== + +"@swc/core-win32-arm64-msvc@1.3.99": + version "1.3.99" + resolved "https://registry.yarnpkg.com/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.3.99.tgz#6c9bf96dd4cb81b5960884906766dc47a49efb0d" + integrity sha512-yt8RtZ4W/QgFF+JUemOUQAkVW58cCST7mbfKFZ1v16w3pl3NcWd9OrtppFIXpbjU1rrUX2zp2R7HZZzZ2Zk/aQ== + +"@swc/core-win32-ia32-msvc@1.3.99": + version "1.3.99" + resolved "https://registry.yarnpkg.com/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.3.99.tgz#6940a602b65137eee30f09ced7cd9fcb6e162b88" + integrity sha512-62p5fWnOJR/rlbmbUIpQEVRconICy5KDScWVuJg1v3GPLBrmacjphyHiJC1mp6dYvvoEWCk/77c/jcQwlXrDXw== + +"@swc/core-win32-x64-msvc@1.3.99": + version "1.3.99" + resolved "https://registry.yarnpkg.com/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.3.99.tgz#7fcdfe6577f015604f7e69f71dda99822e946385" + integrity sha512-PdppWhkoS45VGdMBxvClVgF1hVjqamtvYd82Gab1i4IV45OSym2KinoDCKE1b6j3LwBLOn2J9fvChGSgGfDCHQ== + +"@swc/core@^1.3.99": + version "1.3.99" + resolved "https://registry.yarnpkg.com/@swc/core/-/core-1.3.99.tgz#24a2ff0aaa1096b31046c8099b043936db0c4ca6" + integrity sha512-8O996RfuPC4ieb4zbYMfbyCU9k4gSOpyCNnr7qBQ+o7IEmh8JCV6B8wwu+fT/Om/6Lp34KJe1IpJ/24axKS6TQ== + dependencies: + "@swc/counter" "^0.1.1" + "@swc/types" "^0.1.5" + optionalDependencies: + "@swc/core-darwin-arm64" "1.3.99" + "@swc/core-darwin-x64" "1.3.99" + "@swc/core-linux-arm64-gnu" "1.3.99" + "@swc/core-linux-arm64-musl" "1.3.99" + "@swc/core-linux-x64-gnu" "1.3.99" + "@swc/core-linux-x64-musl" "1.3.99" + "@swc/core-win32-arm64-msvc" "1.3.99" + "@swc/core-win32-ia32-msvc" "1.3.99" + "@swc/core-win32-x64-msvc" "1.3.99" + +"@swc/counter@^0.1.1": + version "0.1.2" + resolved "https://registry.yarnpkg.com/@swc/counter/-/counter-0.1.2.tgz#bf06d0770e47c6f1102270b744e17b934586985e" + integrity sha512-9F4ys4C74eSTEUNndnER3VJ15oru2NumfQxS8geE+f3eB5xvfxpWyqE5XlVnxb/R14uoXi6SLbBwwiDSkv+XEw== + +"@swc/helpers@~0.5.2": + version "0.5.3" + resolved "https://registry.yarnpkg.com/@swc/helpers/-/helpers-0.5.3.tgz#98c6da1e196f5f08f977658b80d6bd941b5f294f" + integrity sha512-FaruWX6KdudYloq1AHD/4nU+UsMTdNE8CKyrseXWEcgjDAbvkwJg2QGPAnfIJLIWsjZOSPLOAykK6fuYp4vp4A== + dependencies: + tslib "^2.4.0" + +"@swc/types@^0.1.5": + version "0.1.5" + resolved "https://registry.yarnpkg.com/@swc/types/-/types-0.1.5.tgz#043b731d4f56a79b4897a3de1af35e75d56bc63a" + integrity sha512-myfUej5naTBWnqOCc/MdVOLVjXUXtIA+NpDrDBKJtLLg2shUjBu3cZmB/85RyitKc55+lUUyl7oRfLOvkr2hsw== + +"@szmarczak/http-timer@^4.0.5": + version "4.0.6" + resolved "https://registry.yarnpkg.com/@szmarczak/http-timer/-/http-timer-4.0.6.tgz#b4a914bb62e7c272d4e5989fe4440f812ab1d807" + integrity sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w== + dependencies: + defer-to-connect "^2.0.0" + +"@szmarczak/http-timer@^5.0.1": + version "5.0.1" + resolved "https://registry.yarnpkg.com/@szmarczak/http-timer/-/http-timer-5.0.1.tgz#c7c1bf1141cdd4751b0399c8fc7b8b664cd5be3a" + integrity sha512-+PmQX0PiAYPMeVYe237LJAYvOMYW1j2rH5YROyS3b4CTVJum34HfRvKvAzozHAQG0TnHNdUfY9nCeUyRAs//cw== + dependencies: + defer-to-connect "^2.0.1" + +"@testing-library/dom@^9.0.0": + version "9.3.3" + resolved "https://registry.yarnpkg.com/@testing-library/dom/-/dom-9.3.3.tgz#108c23a5b0ef51121c26ae92eb3179416b0434f5" + integrity sha512-fB0R+fa3AUqbLHWyxXa2kGVtf1Fe1ZZFr0Zp6AIbIAzXb2mKbEXl+PCQNUOaq5lbTab5tfctfXRNsWXxa2f7Aw== + dependencies: + "@babel/code-frame" "^7.10.4" + "@babel/runtime" "^7.12.5" + "@types/aria-query" "^5.0.1" + aria-query "5.1.3" + chalk "^4.1.0" + dom-accessibility-api "^0.5.9" + lz-string "^1.5.0" + pretty-format "^27.0.2" + +"@testing-library/react@14.0.0": + version "14.0.0" + resolved "https://registry.yarnpkg.com/@testing-library/react/-/react-14.0.0.tgz#59030392a6792450b9ab8e67aea5f3cc18d6347c" + integrity sha512-S04gSNJbYE30TlIMLTzv6QCTzt9AqIF5y6s6SzVFILNcNvbV/jU96GeiTPillGQo+Ny64M/5PV7klNYYgv5Dfg== + dependencies: + "@babel/runtime" "^7.12.5" + "@testing-library/dom" "^9.0.0" + "@types/react-dom" "^18.0.0" + +"@tokenizer/token@^0.3.0": + version "0.3.0" + resolved "https://registry.yarnpkg.com/@tokenizer/token/-/token-0.3.0.tgz#fe98a93fe789247e998c75e74e9c7c63217aa276" + integrity sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A== + +"@tootallnate/once@2": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-2.0.0.tgz#f544a148d3ab35801c1f633a7441fd87c2e484bf" + integrity sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A== + +"@trysound/sax@0.2.0": + version "0.2.0" + resolved "https://registry.yarnpkg.com/@trysound/sax/-/sax-0.2.0.tgz#cccaab758af56761eb7bf37af6f03f326dd798ad" + integrity sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA== "@tsconfig/node10@^1.0.7": version "1.0.9" @@ -2702,17 +3269,22 @@ "@tufjs/canonical-json" "1.0.0" minimatch "^9.0.0" +"@types/aria-query@^5.0.1": + version "5.0.4" + resolved "https://registry.yarnpkg.com/@types/aria-query/-/aria-query-5.0.4.tgz#1a31c3d378850d2778dabb6374d036dcba4ba708" + integrity sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw== + "@types/async-retry@^1.4.5": - version "1.4.7" - resolved "https://registry.yarnpkg.com/@types/async-retry/-/async-retry-1.4.7.tgz#2b2bbb44f6755f28eba367a6593d198f5e2cb45b" - integrity sha512-4NH5wuf9x7LZWD23/knI6RBywD1qCmLm7wNaqq0riy7hdDrCGGfkPOUvx0Cb78lVrFrEnCvocoL8+UcvSQlBDw== + version "1.4.8" + resolved "https://registry.yarnpkg.com/@types/async-retry/-/async-retry-1.4.8.tgz#eb32df13aceb9ba1a8a80e7fe518ff4e3fe46bb3" + integrity sha512-Qup/B5PWLe86yI5I3av6ePGaeQrIHNKCwbsQotD6aHQ6YkHsMUxVZkZsmx/Ry3VZQ6uysHwTjQ7666+k6UjVJA== dependencies: "@types/retry" "*" "@types/babel__core@^7.1.14": - version "7.20.3" - resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.20.3.tgz#d5625a50b6f18244425a1359a858c73d70340778" - integrity sha512-54fjTSeSHwfan8AyHWrKbfBWiEUrNTZsUwPTDSNaaP1QDQIZbeNUg3a59E9D+375MzUw/x1vx2/0F5LBz+AeYA== + version "7.20.5" + 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" "@babel/types" "^7.20.7" @@ -2721,82 +3293,92 @@ "@types/babel__traverse" "*" "@types/babel__generator@*": - version "7.6.6" - resolved "https://registry.yarnpkg.com/@types/babel__generator/-/babel__generator-7.6.6.tgz#676f89f67dc8ddaae923f70ebc5f1fa800c031a8" - integrity sha512-66BXMKb/sUWbMdBNdMvajU7i/44RkrA3z/Yt1c7R5xejt8qh84iU54yUWCtm0QwGJlDcf/gg4zd/x4mpLAlb/w== + version "7.6.7" + resolved "https://registry.yarnpkg.com/@types/babel__generator/-/babel__generator-7.6.7.tgz#a7aebf15c7bc0eb9abd638bdb5c0b8700399c9d0" + integrity sha512-6Sfsq+EaaLrw4RmdFWE9Onp63TOUue71AWb4Gpa6JxzgTYtimbM086WnYTy2U67AofR++QKCo08ZP6pwx8YFHQ== dependencies: "@babel/types" "^7.0.0" "@types/babel__template@*": - version "7.4.3" - resolved "https://registry.yarnpkg.com/@types/babel__template/-/babel__template-7.4.3.tgz#db9ac539a2fe05cfe9e168b24f360701bde41f5f" - integrity sha512-ciwyCLeuRfxboZ4isgdNZi/tkt06m8Tw6uGbBSBgWrnnZGNXiEyM27xc/PjXGQLqlZ6ylbgHMnm7ccF9tCkOeQ== + version "7.4.4" + 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.3" - resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.20.3.tgz#a971aa47441b28ef17884ff945d0551265a2d058" - integrity sha512-Lsh766rGEFbaxMIDH7Qa+Yha8cMVI3qAK6CHt3OR0YfxOIn5Z54iHiyDRycHrBqeIiqGa20Kpsv1cavfBKkRSw== + version "7.20.4" + resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.20.4.tgz#ec2c06fed6549df8bc0eb4615b683749a4a92e1b" + integrity sha512-mSM/iKUk5fDDrEV/e83qY+Cr3I1+Q3qqTuEn++HAWYjEa1+NxZr6CNrcJGf2ZTnq4HoFGC3zaTPZTobCzCFukA== dependencies: "@babel/types" "^7.20.7" "@types/body-parser@*": - version "1.19.4" - resolved "https://registry.yarnpkg.com/@types/body-parser/-/body-parser-1.19.4.tgz#78ad68f1f79eb851aa3634db0c7f57f6f601b462" - integrity sha512-N7UDG0/xiPQa2D/XrVJXjkWbpqHCd2sBaB32ggRF2l83RhPfamgKGF8gwwqyksS95qUS5ZYF9aF+lLPRlwI2UA== + version "1.19.5" + resolved "https://registry.yarnpkg.com/@types/body-parser/-/body-parser-1.19.5.tgz#04ce9a3b677dc8bd681a17da1ab9835dc9d3ede4" + integrity sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg== dependencies: "@types/connect" "*" "@types/node" "*" "@types/bonjour@^3.5.9": - version "3.5.12" - resolved "https://registry.yarnpkg.com/@types/bonjour/-/bonjour-3.5.12.tgz#49badafb988e6c433ca675a5fd769b93b7649fc8" - integrity sha512-ky0kWSqXVxSqgqJvPIkgFkcn4C8MnRog308Ou8xBBIVo39OmUFy+jqNe0nPwLCDFxUpmT9EvT91YzOJgkDRcFg== + version "3.5.13" + resolved "https://registry.yarnpkg.com/@types/bonjour/-/bonjour-3.5.13.tgz#adf90ce1a105e81dd1f9c61fdc5afda1bfb92956" + integrity sha512-z9fJ5Im06zvUL548KvYNecEVlA7cVDkGUi6kZusb04mpyEFKCIZJvloCcmpmLaIahDpOQGHaHmG6imtPMmPXGQ== + dependencies: + "@types/node" "*" + +"@types/cacheable-request@^6.0.1": + version "6.0.3" + resolved "https://registry.yarnpkg.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/connect-history-api-fallback@^1.3.5": - version "1.5.2" - resolved "https://registry.yarnpkg.com/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.5.2.tgz#acf51e088b3bb6507f7b093bd2b0de20940179cc" - integrity sha512-gX2j9x+NzSh4zOhnRPSdPPmTepS4DfxES0AvIFv3jGv5QyeAJf6u6dY5/BAoAJU9Qq1uTvwOku8SSC2GnCRl6Q== + version "1.5.4" + resolved "https://registry.yarnpkg.com/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.5.4.tgz#7de71645a103056b48ac3ce07b3520b819c1d5b3" + integrity sha512-n6Cr2xS1h4uAulPRdlw6Jl6s1oG8KrVilPN2yUITEs+K48EzMJJ3W1xy8K5eWuFvjp3R74AOIGSmp2UfBJ8HFw== dependencies: "@types/express-serve-static-core" "*" "@types/node" "*" "@types/connect@*": - version "3.4.37" - resolved "https://registry.yarnpkg.com/@types/connect/-/connect-3.4.37.tgz#c66a96689fd3127c8772eb3e9e5c6028ec1a9af5" - integrity sha512-zBUSRqkfZ59OcwXon4HVxhx5oWCJmc0OtBTK05M+p0dYjgN6iTwIL2T/WbsQZrEsdnwaF9cWQ+azOnpPvIqY3Q== + version "3.4.38" + resolved "https://registry.yarnpkg.com/@types/connect/-/connect-3.4.38.tgz#5ba7f3bc4fbbdeaff8dded952e5ff2cc53f8d858" + integrity sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug== dependencies: "@types/node" "*" "@types/eslint-scope@^3.7.3": - version "3.7.6" - resolved "https://registry.yarnpkg.com/@types/eslint-scope/-/eslint-scope-3.7.6.tgz#585578b368ed170e67de8aae7b93f54a1b2fdc26" - integrity sha512-zfM4ipmxVKWdxtDaJ3MP3pBurDXOCoyjvlpE3u6Qzrmw4BPbfm4/ambIeTk/r/J0iq/+2/xp0Fmt+gFvXJY2PQ== + version "3.7.7" + 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" "*" "@types/estree" "*" "@types/eslint@*": - version "8.44.6" - resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-8.44.6.tgz#60e564551966dd255f4c01c459f0b4fb87068603" - integrity sha512-P6bY56TVmX8y9J87jHNgQh43h6VVU+6H7oN7hgvivV81K2XY8qJZ5vqPy/HdUoVIelii2kChYVzQanlswPWVFw== + version "8.44.7" + resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-8.44.7.tgz#430b3cc96db70c81f405e6a08aebdb13869198f5" + integrity sha512-f5ORu2hcBbKei97U73mf+l9t4zTGl74IqZ0GQk4oVea/VS8tQZYkUveSYojk+frraAVYId0V2WC9O4PTNru2FQ== dependencies: "@types/estree" "*" "@types/json-schema" "*" "@types/estree@*", "@types/estree@^1.0.0": - version "1.0.3" - resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.3.tgz#2be19e759a3dd18c79f9f436bd7363556c1a73dd" - integrity sha512-CS2rOaoQ/eAgAfcTfq6amKG7bsN+EMcgGY4FAFQdvSj2y1ixvOZTUA9mOtCai7E1SYu283XNw7urKK30nP3wkQ== + version "1.0.5" + resolved "https://registry.yarnpkg.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": - version "4.17.39" - resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.17.39.tgz#2107afc0a4b035e6cb00accac3bdf2d76ae408c8" - integrity sha512-BiEUfAiGCOllomsRAZOiMFP7LAnrifHpt56pc4Z7l9K6ACyN06Ns1JLMBxwkfLOjJRlSf06NwWsT7yzfpaVpyQ== + version "4.17.41" + resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.17.41.tgz#5077defa630c2e8d28aa9ffc2c01c157c305bef6" + integrity sha512-OaJ7XLaelTgrvlZD8/aa0vvvxZdUmlCn6MtWeB7TkiKW70BQLc9XEPpDLPdbo52ZhXUCrznlWdCHWxJWtdyajA== dependencies: "@types/node" "*" "@types/qs" "*" @@ -2804,9 +3386,9 @@ "@types/send" "*" "@types/express@*", "@types/express@^4.17.13", "@types/express@^4.17.15": - version "4.17.20" - resolved "https://registry.yarnpkg.com/@types/express/-/express-4.17.20.tgz#e7c9b40276d29e38a4e3564d7a3d65911e2aa433" - integrity sha512-rOaqlkgEvOW495xErXMsmyX3WKBInbhG5eqojXYi3cGUaLoRDlXa5d52fkfWZT963AZ3v2eZ4MbKE6WpDAGVsw== + version "4.17.21" + resolved "https://registry.yarnpkg.com/@types/express/-/express-4.17.21.tgz#c26d4a151e60efe0084b23dc3369ebc631ed192d" + integrity sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ== dependencies: "@types/body-parser" "*" "@types/express-serve-static-core" "^4.17.33" @@ -2814,75 +3396,96 @@ "@types/serve-static" "*" "@types/graceful-fs@^4.1.3": - version "4.1.8" - resolved "https://registry.yarnpkg.com/@types/graceful-fs/-/graceful-fs-4.1.8.tgz#417e461e4dc79d957dc3107f45fe4973b09c2915" - integrity sha512-NhRH7YzWq8WiNKVavKPBmtLYZHxNY19Hh+az28O/phfp68CF45pMFud+ZzJ8ewnxnC5smIdF3dqFeiSUQ5I+pw== + version "4.1.9" + resolved "https://registry.yarnpkg.com/@types/graceful-fs/-/graceful-fs-4.1.9.tgz#2a06bc0f68a20ab37b3e36aa238be6abdf49e8b4" + integrity sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ== dependencies: "@types/node" "*" -"@types/http-cache-semantics@^4.0.2": - version "4.0.3" - resolved "https://registry.yarnpkg.com/@types/http-cache-semantics/-/http-cache-semantics-4.0.3.tgz#a3ff232bf7d5c55f38e4e45693eda2ebb545794d" - integrity sha512-V46MYLFp08Wf2mmaBhvgjStM3tPa+2GAdy/iqoX+noX1//zje2x4XmrIU0cAwyClATsTmahbtoQ2EwP7I5WSiA== +"@types/http-cache-semantics@*", "@types/http-cache-semantics@^4.0.2": + version "4.0.4" + resolved "https://registry.yarnpkg.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.3" - resolved "https://registry.yarnpkg.com/@types/http-errors/-/http-errors-2.0.3.tgz#c54e61f79b3947d040f150abd58f71efb422ff62" - integrity sha512-pP0P/9BnCj1OVvQR2lF41EkDG/lWWnDyA203b/4Fmi2eTyORnBtcDoKDwjWQthELrBvWkMOrvSOnZ8OVlW6tXA== + version "2.0.4" + resolved "https://registry.yarnpkg.com/@types/http-errors/-/http-errors-2.0.4.tgz#7eb47726c391b7345a6ec35ad7f4de469cf5ba4f" + integrity sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA== "@types/http-proxy@^1.17.8": - version "1.17.13" - resolved "https://registry.yarnpkg.com/@types/http-proxy/-/http-proxy-1.17.13.tgz#dd3a4da550580eb0557d4c7128a2ff1d1a38d465" - integrity sha512-GkhdWcMNiR5QSQRYnJ+/oXzu0+7JJEPC8vkWXK351BkhjraZF+1W13CUYARUvX9+NqIU2n6YHA4iwywsc/M6Sw== + version "1.17.14" + resolved "https://registry.yarnpkg.com/@types/http-proxy/-/http-proxy-1.17.14.tgz#57f8ccaa1c1c3780644f8a94f9c6b5000b5e2eec" + integrity sha512-SSrD0c1OQzlFX7pGu1eXxSEjemej64aaNPRhhVYUGqXh0BtldAAx37MG8btcumvpgKyZp1F5Gn3JkktdxiFv6w== dependencies: "@types/node" "*" "@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0", "@types/istanbul-lib-coverage@^2.0.1": - version "2.0.5" - resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.5.tgz#fdfdd69fa16d530047d9963635bd77c71a08c068" - integrity sha512-zONci81DZYCZjiLe0r6equvZut0b+dBRPBN5kBDjsONnutYNtJMoWQ9uR2RkL1gLG9NMTzvf+29e5RFfPbeKhQ== + version "2.0.6" + resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz#7739c232a1fee9b4d3ce8985f314c0c6d33549d7" + integrity sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w== "@types/istanbul-lib-report@*": - version "3.0.2" - resolved "https://registry.yarnpkg.com/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.2.tgz#394798d5f727402eb5ec99eb9618ffcd2b7645a1" - integrity sha512-8toY6FgdltSdONav1XtUHl4LN1yTmLza+EuDazb/fEmRNCwjyqNVIQWs2IfC74IqjHkREs/nQ2FWq5kZU9IC0w== + version "3.0.3" + resolved "https://registry.yarnpkg.com/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz#53047614ae72e19fc0401d872de3ae2b4ce350bf" + integrity sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA== dependencies: "@types/istanbul-lib-coverage" "*" "@types/istanbul-reports@^3.0.0": - version "3.0.3" - resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-3.0.3.tgz#0313e2608e6d6955d195f55361ddeebd4b74c6e7" - integrity sha512-1nESsePMBlf0RPRffLZi5ujYh7IH1BWL4y9pr+Bn3cJBdxz+RTP8bUFljLz9HvzhhOSWKdyBZ4DIivdL6rvgZg== + version "3.0.4" + resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz#0f03e3d2f670fbdac586e34b433783070cc16f54" + integrity sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ== dependencies: "@types/istanbul-lib-report" "*" "@types/jest@^29.4.0": - version "29.5.6" - resolved "https://registry.yarnpkg.com/@types/jest/-/jest-29.5.6.tgz#f4cf7ef1b5b0bfc1aa744e41b24d9cc52533130b" - integrity sha512-/t9NnzkOpXb4Nfvg17ieHE6EeSjDS2SGSpNYfoLbUAeL/EOueU/RSdOWFpfQTXBEM7BguYW1XQ0EbM+6RlIh6w== + version "29.5.10" + resolved "https://registry.yarnpkg.com/@types/jest/-/jest-29.5.10.tgz#a10fc5bab9e426081c12b2ef73d24d4f0c9b7f50" + integrity sha512-tE4yxKEphEyxj9s4inideLHktW/x6DwesIwWZ9NN1FKf9zbJYsnhBoA9vrHA/IuIOKwPa5PcFBNV4lpMIOEzyQ== dependencies: expect "^29.0.0" pretty-format "^29.0.0" +"@types/jsdom@^20.0.0": + version "20.0.1" + 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.8", "@types/json-schema@^7.0.9": - version "7.0.14" - resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.14.tgz#74a97a5573980802f32c8e47b663530ab3b6b7d1" - integrity sha512-U3PUjAudAdJBeC2pgN8uTIKgxrb4nlDF3SF0++EldXQvQBGkpFZMSnwQiIoDU77tv45VgNkl/L4ouD+rEomujw== + version "7.0.15" + resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.15.tgz#596a1747233694d50f6ad8a7869fcb6f56cf5841" + integrity sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA== + +"@types/json5@^0.0.29": + version "0.0.29" + resolved "https://registry.yarnpkg.com/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee" + integrity sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ== + +"@types/keyv@^3.1.4": + version "3.1.4" + resolved "https://registry.yarnpkg.com/@types/keyv/-/keyv-3.1.4.tgz#3ccdb1c6751b0c7e52300bcdacd5bcbf8faa75b6" + integrity sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg== + dependencies: + "@types/node" "*" "@types/mime@*": - version "3.0.3" - resolved "https://registry.yarnpkg.com/@types/mime/-/mime-3.0.3.tgz#886674659ce55fe7c6c06ec5ca7c0eb276a08f91" - integrity sha512-i8MBln35l856k5iOhKk2XJ4SeAWg75mLIpZB4v6imOagKL6twsukBZGDMNhdOVk7yRFTMPpfILocMos59Q1otQ== + version "3.0.4" + resolved "https://registry.yarnpkg.com/@types/mime/-/mime-3.0.4.tgz#2198ac274de6017b44d941e00261d5bc6a0e0a45" + integrity sha512-iJt33IQnVRkqeqC7PzBHPTC6fDlRNRW8vjrgqtScAhrmMwe8c4Eo7+fUGTa+XdWrpEgpyKWMYmi2dIwMAYRzPw== "@types/mime@^1": - version "1.3.4" - resolved "https://registry.yarnpkg.com/@types/mime/-/mime-1.3.4.tgz#a4ed836e069491414bab92c31fdea9e557aca0d9" - integrity sha512-1Gjee59G25MrQGk8bsNvC6fxNiRgUlGn2wlhGf95a59DrprnnHk80FIMMFG9XHMdrfsuA119ht06QPDXA1Z7tw== + version "1.3.5" + resolved "https://registry.yarnpkg.com/@types/mime/-/mime-1.3.5.tgz#1ef302e01cf7d2b5a0fa526790c9123bf1d06690" + integrity sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w== "@types/minimist@^1.2.0": - version "1.2.4" - resolved "https://registry.yarnpkg.com/@types/minimist/-/minimist-1.2.4.tgz#81f886786411c45bba3f33e781ab48bd56bfca2e" - integrity sha512-Kfe/D3hxHTusnPNRbycJE1N77WHDsdS4AjUYIzlDzhDrS47NrwuL3YW4VITxwR7KCVpzwgy4Rbj829KSSQmwXQ== + version "1.2.5" + resolved "https://registry.yarnpkg.com/@types/minimist/-/minimist-1.2.5.tgz#ec10755e871497bcd83efe927e43ec46e8c0747e" + integrity sha512-hov8bUuiLiyFPGyFPE1lwWhmzYbirOXQNNo40+y3zow8aFVTeyn3VWL0VFFfdNddA8S4Vf0Tc062rzyNr7Paag== "@types/node-fetch@2.6.2": version "2.6.2" @@ -2892,156 +3495,222 @@ "@types/node" "*" form-data "^3.0.0" +"@types/node-forge@^1.3.0": + version "1.3.10" + resolved "https://registry.yarnpkg.com/@types/node-forge/-/node-forge-1.3.10.tgz#62a19d4f75a8b03290578c2b04f294b1a5a71b07" + integrity sha512-y6PJDYN4xYBxwd22l+OVH35N+1fCYWiuC3aiP2SlXVE6Lo7SS+rSx9r89hLxrP4pn6n1lBGhHJ12pj3F3Mpttw== + dependencies: + "@types/node" "*" + "@types/node@*": - version "20.8.7" - resolved "https://registry.yarnpkg.com/@types/node/-/node-20.8.7.tgz#ad23827850843de973096edfc5abc9e922492a25" - integrity sha512-21TKHHh3eUHIi2MloeptJWALuCu5H7HQTdTrWIFReA8ad+aggoX+lRes3ex7/FtpC+sVUpFMQ+QTfYr74mruiQ== + version "20.10.0" + resolved "https://registry.yarnpkg.com/@types/node/-/node-20.10.0.tgz#16ddf9c0a72b832ec4fcce35b8249cf149214617" + integrity sha512-D0WfRmU9TQ8I9PFx9Yc+EBHw+vSpIub4IDvQivcp26PtPrdMGAq5SDcpXEo/epqa/DXotVpekHiLNTg3iaKXBQ== dependencies: - undici-types "~5.25.1" + undici-types "~5.26.4" -"@types/node@~18.7.1": - version "18.7.23" - resolved "https://registry.yarnpkg.com/@types/node/-/node-18.7.23.tgz#75c580983846181ebe5f4abc40fe9dfb2d65665f" - integrity sha512-DWNcCHolDq0ZKGizjx2DZjR/PqsYwAcYUJmfMWqtVU2MBMG5Mo+xFZrhGId5r/O5HOuMPyQEcM6KUBp5lBZZBg== +"@types/node@18.14.2": + version "18.14.2" + resolved "https://registry.yarnpkg.com/@types/node/-/node-18.14.2.tgz#c076ed1d7b6095078ad3cf21dfeea951842778b1" + integrity sha512-1uEQxww3DaghA0RxqHx0O0ppVlo43pJhepY51OxuQIKHpjbnYLA7vcdwioNPzIqmC2u3I/dmylcqjlh0e7AyUA== "@types/normalize-package-data@^2.4.0", "@types/normalize-package-data@^2.4.1": - version "2.4.3" - resolved "https://registry.yarnpkg.com/@types/normalize-package-data/-/normalize-package-data-2.4.3.tgz#291c243e4b94dbfbc0c0ee26b7666f1d5c030e2c" - integrity sha512-ehPtgRgaULsFG8x0NeYJvmyH1hmlfsNLujHe9dQEia/7MAJYdzMSi19JtchUHjmBA6XC/75dK55mzZH+RyieSg== + version "2.4.4" + resolved "https://registry.yarnpkg.com/@types/normalize-package-data/-/normalize-package-data-2.4.4.tgz#56e2cc26c397c038fab0e3a917a12d5c5909e901" + integrity sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA== "@types/parse-json@^4.0.0": - version "4.0.1" - resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.1.tgz#27f7559836ad796cea31acb63163b203756a5b4e" - integrity sha512-3YmXzzPAdOTVljVMkTMBdBEvlOLg2cDQaDhnnhT3nT9uDbnJzjWhKlzb+desT12Y7tGqaN6d+AbozcKzyL36Ng== + version "4.0.2" + resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.2.tgz#5950e50960793055845e956c427fc2b0d70c5239" + integrity sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw== "@types/passport-http@^0.3.9": - version "0.3.10" - resolved "https://registry.yarnpkg.com/@types/passport-http/-/passport-http-0.3.10.tgz#dede6cbf9d75c853134a026d879f6bededb7faba" - integrity sha512-/QvcXAyamDdIohnZ8bqZtrpl9RhvEjDqVx0tDudDXf8eZCHH9yzYYmTiFDb7qIyK2Ae3Ke2yNbf8h7dwwGbuQQ== + version "0.3.11" + resolved "https://registry.yarnpkg.com/@types/passport-http/-/passport-http-0.3.11.tgz#6977ed7f6f734f8887966ef3d7e52d828d927412" + integrity sha512-FO0rDRYtuha9m2ZgRx5+jrgrrkAnUzgzdItFI0dwKBC6k9pArK677Gtan67u6+Qah2nXVP3M1uZ5p90SpBT5Zg== dependencies: "@types/express" "*" "@types/passport" "*" "@types/passport-local@^1.0.35": - version "1.0.37" - resolved "https://registry.yarnpkg.com/@types/passport-local/-/passport-local-1.0.37.tgz#97f6a60873b551f08c3a251043eb1662ecc546f7" - integrity sha512-c57CwMHhMP2BBiOLyQZGRP43F8JtC84H976YVJdiU4EIWvqRCZ3F7QtsEgksOEIgMOk1Kz3EEKGA93OiDPQtRQ== + version "1.0.38" + resolved "https://registry.yarnpkg.com/@types/passport-local/-/passport-local-1.0.38.tgz#8073758188645dde3515808999b1c218a6fe7141" + integrity sha512-nsrW4A963lYE7lNTv9cr5WmiUD1ibYJvWrpE13oxApFsRt77b0RdtZvKbCdNIY4v/QZ6TRQWaDDEwV1kCTmcXg== dependencies: "@types/express" "*" "@types/passport" "*" "@types/passport-strategy" "*" "@types/passport-strategy@*": - version "0.2.37" - resolved "https://registry.yarnpkg.com/@types/passport-strategy/-/passport-strategy-0.2.37.tgz#c1f2bc6c24c79a22ddd4693904b544837908a9eb" - integrity sha512-ltgwLnwHVfpjK7/66lpv43hiz90nIVb36JmeB0iF3FAZoHX6+LbkY5Ey97Bm8Jr0uGhQyDFEsSOOfejp5PJehg== + version "0.2.38" + resolved "https://registry.yarnpkg.com/@types/passport-strategy/-/passport-strategy-0.2.38.tgz#482abba0b165cd4553ec8b748f30b022bd6c04d3" + integrity sha512-GC6eMqqojOooq993Tmnmp7AUTbbQSgilyvpCYQjT+H6JfG/g6RGc7nXEniZlp0zyKJ0WUdOiZWLBZft9Yug1uA== dependencies: "@types/express" "*" "@types/passport" "*" "@types/passport@*": - version "1.0.14" - resolved "https://registry.yarnpkg.com/@types/passport/-/passport-1.0.14.tgz#7ca891b04ae08d7ca4dbf30fece7c86174a16db9" - integrity sha512-D6p2ygR2S7Cq5PO7iUaEIQu/5WrM0tONu6Lxgk0C9r3lafQIlVpWCo3V/KI9To3OqHBxcfQaOeK+8AvwW5RYmw== + version "1.0.16" + resolved "https://registry.yarnpkg.com/@types/passport/-/passport-1.0.16.tgz#5a2918b180a16924c4d75c31254c31cdca5ce6cf" + integrity sha512-FD0qD5hbPWQzaM0wHUnJ/T0BBCJBxCeemtnCwc/ThhTg3x9jfrAcRUmj5Dopza+MfFS9acTe3wk7rcVnRIp/0A== dependencies: "@types/express" "*" +"@types/prop-types@*": + version "15.7.11" + resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.11.tgz#2596fb352ee96a1379c657734d4b913a613ad563" + integrity sha512-ga8y9v9uyeiLdpKddhxYQkxNDrfvuPrlFb0N1qnZZByvcElJaXthF1UhvCh9TLWJBEHeNtdnbysW7Y6Uq8CVng== + "@types/qs@*": - version "6.9.9" - resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.9.9.tgz#66f7b26288f6799d279edf13da7ccd40d2fa9197" - integrity sha512-wYLxw35euwqGvTDx6zfY1vokBFnsK0HNrzc6xNHchxfO2hpuRg74GbkEW7e3sSmPvj0TjCDT1VCa6OtHXnubsg== + version "6.9.10" + resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.9.10.tgz#0af26845b5067e1c9a622658a51f60a3934d51e8" + integrity sha512-3Gnx08Ns1sEoCrWssEgTSJs/rsT2vhGP+Ja9cnnk9k4ALxinORlQneLXFeFKOTJMOeZUFD1s7w+w2AphTpvzZw== "@types/range-parser@*": - version "1.2.6" - resolved "https://registry.yarnpkg.com/@types/range-parser/-/range-parser-1.2.6.tgz#7cb33992049fd7340d5b10c0098e104184dfcd2a" - integrity sha512-+0autS93xyXizIYiyL02FCY8N+KkKPhILhcUSA276HxzreZ16kl+cmwvV2qAM/PuCCwPXzOXOWhiPcw20uSFcA== + version "1.2.7" + resolved "https://registry.yarnpkg.com/@types/range-parser/-/range-parser-1.2.7.tgz#50ae4353eaaddc04044279812f52c8c65857dbcb" + integrity sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ== + +"@types/react-dom@18.2.9": + version "18.2.9" + resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-18.2.9.tgz#c4ce3c7c91a134e1bff58692aa2d2f2f4029c38b" + integrity sha512-6nNhVzZ9joQ6F7lozrASuQKC0Kf6ArYMU+DqA2ZrUbB+d+9lC6ZLn1GxiEBI1edmAwvTULtuJ6uPZpv3XudwUg== + dependencies: + "@types/react" "*" + +"@types/react-dom@^18.0.0": + version "18.2.17" + resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-18.2.17.tgz#375c55fab4ae671bd98448dcfa153268d01d6f64" + integrity sha512-rvrT/M7Df5eykWFxn6MYt5Pem/Dbyc1N8Y0S9Mrkw2WFCRiqUgw9P7ul2NpwsXCSM1DVdENzdG9J5SreqfAIWg== + dependencies: + "@types/react" "*" + +"@types/react@*": + version "18.2.38" + resolved "https://registry.yarnpkg.com/@types/react/-/react-18.2.38.tgz#3605ca41d3daff2c434e0b98d79a2469d4c2dd52" + integrity sha512-cBBXHzuPtQK6wNthuVMV6IjHAFkdl/FOPFIlkd81/Cd1+IqkHu/A+w4g43kaQQoYHik/ruaQBDL72HyCy1vuMw== + dependencies: + "@types/prop-types" "*" + "@types/scheduler" "*" + csstype "^3.0.2" + +"@types/react@18.2.24": + version "18.2.24" + resolved "https://registry.yarnpkg.com/@types/react/-/react-18.2.24.tgz#3c7d68c02e0205a472f04abe4a0c1df35d995c05" + integrity sha512-Ee0Jt4sbJxMu1iDcetZEIKQr99J1Zfb6D4F3qfUWoR1JpInkY1Wdg4WwCyBjL257D0+jGqSl1twBjV8iCaC0Aw== + dependencies: + "@types/prop-types" "*" + "@types/scheduler" "*" + csstype "^3.0.2" "@types/ref-array-di@^1.2.5": - version "1.2.7" - resolved "https://registry.yarnpkg.com/@types/ref-array-di/-/ref-array-di-1.2.7.tgz#83f0cdade1fe3b0c4b66e908097f6372489ed080" - integrity sha512-gqvEQaQwlud0A5/prOH6Sn4woq8GMZSosfD2+ES5QstRW4+v/6gzG3mRTtMzT7do5W9EWXrwCQUF+bl9FMCtlw== + version "1.2.8" + resolved "https://registry.yarnpkg.com/@types/ref-array-di/-/ref-array-di-1.2.8.tgz#2b44567b8eaae72c59db68a482f5d26297e955be" + integrity sha512-+re5xrhRXDUR3sicMvN9N3C+6mklq5kd7FkN3ciRWio3BAvUDh2OEUTTG+619r10dqc6de25LIDtgpHtXCKGbA== dependencies: "@types/ref-napi" "*" "@types/ref-napi@*": - version "3.0.9" - resolved "https://registry.yarnpkg.com/@types/ref-napi/-/ref-napi-3.0.9.tgz#abab7c6e66107e041340ccac1ee2d372b2f89bdc" - integrity sha512-1bkJnz0UTmqvh0IsLUoNhqZkurO+mShFwybDoQ2pXHe74ypvNIVEXzLFgkpXxYBt3PEDy757eX+z/MtakzN1QQ== + version "3.0.12" + resolved "https://registry.yarnpkg.com/@types/ref-napi/-/ref-napi-3.0.12.tgz#2ddde995ecf769f1e5da01604e468348949c72c3" + integrity sha512-UZPKghRaLlWx2lPAphpdtYe62TbGBaPeqUM6gF1vI6FPRIu/Tff/WMAzpJRFU3jJIiD8HiXpVt2RjcFHtA6YRg== + dependencies: + "@types/node" "*" + +"@types/responselike@^1.0.0": + version "1.0.3" + resolved "https://registry.yarnpkg.com/@types/responselike/-/responselike-1.0.3.tgz#cc29706f0a397cfe6df89debfe4bf5cea159db50" + integrity sha512-H/+L+UkTV33uf49PH5pCAUBVPNj2nDBXTN+qS1dOwyyg24l3CcicicCA7ca+HMvJBZcFgl5r8e+RR6elsb4Lyw== dependencies: "@types/node" "*" "@types/retry@*": - version "0.12.4" - resolved "https://registry.yarnpkg.com/@types/retry/-/retry-0.12.4.tgz#67d65e2df7a82b0b0ec0ba7fb2711c50c2adf1f4" - integrity sha512-l1YzFLj8Y6OhLdt7HKXlz56DoEmksB7qR8KVk+MpFsS4duwnoszLgDlLxJB0vgSqtg/rAS5gmYg5Bjw2sMJ8Ew== + version "0.12.5" + resolved "https://registry.yarnpkg.com/@types/retry/-/retry-0.12.5.tgz#f090ff4bd8d2e5b940ff270ab39fd5ca1834a07e" + integrity sha512-3xSjTp3v03X/lSQLkczaN9UIEwJMoMCA1+Nb5HfbJEQWogdeQIyVtTvxPXDQjZ5zws8rFQfVfRdz03ARihPJgw== "@types/retry@0.12.0": version "0.12.0" resolved "https://registry.yarnpkg.com/@types/retry/-/retry-0.12.0.tgz#2b35eccfcee7d38cd72ad99232fbd58bffb3c84d" integrity sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA== +"@types/scheduler@*": + 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": - version "7.5.4" - resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.5.4.tgz#0a41252ad431c473158b22f9bfb9a63df7541cff" - integrity sha512-MMzuxN3GdFwskAnb6fz0orFvhfqi752yjaXylr0Rp4oDg5H0Zn1IuyRhDVvYOwAXoJirx2xuS16I3WjxnAIHiQ== + version "7.5.6" + resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.5.6.tgz#c65b2bfce1bec346582c07724e3f8c1017a20339" + integrity sha512-dn1l8LaMea/IjDoHNd9J52uBbInB796CDffS6VdIxvqYCPSG0V0DzHp76GpaWnlhg88uYyPbXCDIowa86ybd5A== "@types/send@*": - version "0.17.3" - resolved "https://registry.yarnpkg.com/@types/send/-/send-0.17.3.tgz#81b2ea5a3a18aad357405af2d643ccbe5a09020b" - integrity sha512-/7fKxvKUoETxjFUsuFlPB9YndePpxxRAOfGC/yJdc9kTjTeP5kRCTzfnE8kPUKCeyiyIZu0YQ76s50hCedI1ug== + version "0.17.4" + resolved "https://registry.yarnpkg.com/@types/send/-/send-0.17.4.tgz#6619cd24e7270793702e4e6a4b958a9010cfc57a" + integrity sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA== dependencies: "@types/mime" "^1" "@types/node" "*" "@types/serve-index@^1.9.1": - version "1.9.3" - resolved "https://registry.yarnpkg.com/@types/serve-index/-/serve-index-1.9.3.tgz#af9403916eb6fbf7d6ec6f47b2a4c46eb3222cc9" - integrity sha512-4KG+yMEuvDPRrYq5fyVm/I2uqAJSAwZK9VSa+Zf+zUq9/oxSSvy3kkIqyL+jjStv6UCVi8/Aho0NHtB1Fwosrg== + version "1.9.4" + resolved "https://registry.yarnpkg.com/@types/serve-index/-/serve-index-1.9.4.tgz#e6ae13d5053cb06ed36392110b4f9a49ac4ec898" + integrity sha512-qLpGZ/c2fhSs5gnYsQxtDEq3Oy8SXPClIXkW5ghvAvsNuVSA8k+gCONcUCS/UjLEYvYps+e8uBtfgXgvhwfNug== dependencies: "@types/express" "*" "@types/serve-static@*", "@types/serve-static@^1.13.10": - version "1.15.4" - resolved "https://registry.yarnpkg.com/@types/serve-static/-/serve-static-1.15.4.tgz#44b5895a68ca637f06c229119e1c774ca88f81b2" - integrity sha512-aqqNfs1XTF0HDrFdlY//+SGUxmdSUbjeRXb5iaZc3x0/vMbYmdw9qvOgHWOyyLFxSSRnUuP5+724zBgfw8/WAw== + version "1.15.5" + resolved "https://registry.yarnpkg.com/@types/serve-static/-/serve-static-1.15.5.tgz#15e67500ec40789a1e8c9defc2d32a896f05b033" + integrity sha512-PDRk21MnK70hja/YF8AHfC7yIsiQHn1rcXx7ijCFBX/k+XQJhQT/gw3xekXKJvx+5SXaMMS8oqQy09Mzvz2TuQ== dependencies: "@types/http-errors" "*" "@types/mime" "*" "@types/node" "*" "@types/sockjs@^0.3.33": - version "0.3.35" - resolved "https://registry.yarnpkg.com/@types/sockjs/-/sockjs-0.3.35.tgz#f4a568c73d2a8071944bd6ffdca0d4e66810cd21" - integrity sha512-tIF57KB+ZvOBpAQwSaACfEu7htponHXaFzP7RfKYgsOS0NoYnn+9+jzp7bbq4fWerizI3dTB4NfAZoyeQKWJLw== + version "0.3.36" + resolved "https://registry.yarnpkg.com/@types/sockjs/-/sockjs-0.3.36.tgz#ce322cf07bcc119d4cbf7f88954f3a3bd0f67535" + integrity sha512-MK9V6NzAS1+Ud7JV9lJLFqW85VbC9dq3LmwZCuBe4wBDgKC0Kj/jd8Xl+nSviU+Qc3+m7umHHyHg//2KSa0a0Q== dependencies: "@types/node" "*" "@types/stack-utils@^2.0.0": - version "2.0.2" - resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-2.0.2.tgz#01284dde9ef4e6d8cef6422798d9a3ad18a66f8b" - integrity sha512-g7CK9nHdwjK2n0ymT2CW698FuWJRIx+RP6embAzZ2Qi8/ilIrA1Imt2LVSeHUzKvpoi7BhmmQcXz95eS0f2JXw== + version "2.0.3" + resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-2.0.3.tgz#6209321eb2c1712a7e7466422b8cb1fc0d9dd5d8" + integrity sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw== + +"@types/tough-cookie@*": + version "4.0.5" + resolved "https://registry.yarnpkg.com/@types/tough-cookie/-/tough-cookie-4.0.5.tgz#cb6e2a691b70cb177c6e3ae9c1d2e8b2ea8cd304" + integrity sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA== + +"@types/uuid@^9.0.6": + version "9.0.7" + resolved "https://registry.yarnpkg.com/@types/uuid/-/uuid-9.0.7.tgz#b14cebc75455eeeb160d5fe23c2fcc0c64f724d8" + integrity sha512-WUtIVRUZ9i5dYXefDEAI7sh9/O7jGvHg7Df/5O/gtH3Yabe5odI3UWopVR1qbPXQtvOxWu3mM4XxlYeZtMWF4g== "@types/validator@^13.7.10": - version "13.11.5" - resolved "https://registry.yarnpkg.com/@types/validator/-/validator-13.11.5.tgz#1911964fd5556b08d3479d1ded977c06f89a44a7" - integrity sha512-xW4qsT4UIYILu+7ZrBnfQdBYniZrMLYYK3wN9M/NdeIHgBN5pZI2/8Q7UfdWIcr5RLJv/OGENsx91JIpUUoC7Q== + version "13.11.7" + resolved "https://registry.yarnpkg.com/@types/validator/-/validator-13.11.7.tgz#99e19760297667ae46b7069ec8b96cbfe0a08b98" + integrity sha512-q0JomTsJ2I5Mv7dhHhQLGjMvX0JJm5dyZ1DXQySIUzU1UlwzB8bt+R6+LODUbz0UDIOvEzGc28tk27gBJw2N8Q== "@types/ws@^8.5.4", "@types/ws@^8.5.5": - version "8.5.8" - resolved "https://registry.yarnpkg.com/@types/ws/-/ws-8.5.8.tgz#13efec7bd439d0bdf2af93030804a94f163b1430" - integrity sha512-flUksGIQCnJd6sZ1l5dqCEG/ksaoAg/eUwiLAGTJQcfgvZJKF++Ta4bJA6A5aPSJmsr+xlseHn4KLgVlNnvPTg== + version "8.5.10" + resolved "https://registry.yarnpkg.com/@types/ws/-/ws-8.5.10.tgz#4acfb517970853fa6574a3a6886791d04a396787" + integrity sha512-vmQSUcfalpIq0R9q7uTo2lXs6eGIpt9wtnLdMv9LVpIjCA/+ufZRozlVoVelIYixx1ugCBKDhn89vnsEGOCx9A== dependencies: "@types/node" "*" "@types/yargs-parser@*": - version "21.0.2" - resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-21.0.2.tgz#7bd04c5da378496ef1695a1008bf8f71847a8b8b" - integrity sha512-5qcvofLPbfjmBfKaLfj/+f+Sbd6pN4zl7w7VSVI5uz7m9QZTuB2aZAa2uo1wHFBNN2x6g/SoTkXmd8mQnQF2Cw== + version "21.0.3" + resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-21.0.3.tgz#815e30b786d2e8f0dcd85fd5bcf5e1a04d008f15" + integrity sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ== "@types/yargs@^17.0.8": - version "17.0.29" - resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-17.0.29.tgz#06aabc72497b798c643c812a8b561537fea760cf" - integrity sha512-nacjqA3ee9zRF/++a3FUY1suHTFKZeHba2n8WeDw9cCVdmzmHpIxyzOJBcpHvvEmS8E9KqWlSnWHUkOrkhWcvA== + version "17.0.32" + resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-17.0.32.tgz#030774723a2f7faafebf645f4e5a48371dca6229" + integrity sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog== dependencies: "@types/yargs-parser" "*" @@ -3079,7 +3748,7 @@ "@typescript-eslint/types" "5.62.0" "@typescript-eslint/visitor-keys" "5.62.0" -"@typescript-eslint/type-utils@5.62.0": +"@typescript-eslint/type-utils@5.62.0", "@typescript-eslint/type-utils@^5.60.1": version "5.62.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-5.62.0.tgz#286f0389c41681376cdad96b309cedd17d70346a" integrity sha512-xsSQreu+VnfbqQpW5vnCJdq1Z3Q0U31qiWmRhr98ONQmcp/yhiPJFPq8MXiJVLiksmOKSjIldZzkebzHuCGzew== @@ -3107,7 +3776,7 @@ semver "^7.3.7" tsutils "^3.21.0" -"@typescript-eslint/utils@5.62.0", "@typescript-eslint/utils@^5.58.0": +"@typescript-eslint/utils@5.62.0", "@typescript-eslint/utils@^5.60.1": version "5.62.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.62.0.tgz#141e809c71636e4a75daa39faed2fb5f4b10df86" integrity sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ== @@ -3280,10 +3949,10 @@ resolved "https://registry.yarnpkg.com/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz#e77a97fbd345b76d83245edcd17d393b1b41fb31" integrity sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ== -"@yarnpkg/parsers@^3.0.0-rc.18": - version "3.0.0" - resolved "https://registry.yarnpkg.com/@yarnpkg/parsers/-/parsers-3.0.0.tgz#a43136f094bca5dcc1ae784c296446a85211cc62" - integrity sha512-jVZa3njBv6tcOUw34nlUdUM/40wwtm/gnVF8rtk0tA6vNcokqYI8CFU1BZjlpFwUSZaXxYkrtuPE/f2MMFlTxQ== +"@yarnpkg/parsers@3.0.0-rc.46": + version "3.0.0-rc.46" + resolved "https://registry.yarnpkg.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" @@ -3303,7 +3972,7 @@ JSONStream@^1.0.4, JSONStream@^1.3.5: jsonparse "^1.2.0" through ">=2.2.7 <3" -abab@^2.0.5: +abab@^2.0.5, abab@^2.0.6: version "2.0.6" resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.6.tgz#41b80f2c871d19686216b82309231cfd3cb3d291" integrity sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA== @@ -3333,6 +4002,14 @@ accepts@~1.3.4, accepts@~1.3.5, accepts@~1.3.8: mime-types "~2.1.34" negotiator "0.6.3" +acorn-globals@^7.0.0: + version "7.0.1" + 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.yarnpkg.com/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz#507276249d684797c84e0734ef84860334cfb1ac" @@ -3343,21 +4020,26 @@ acorn-jsx@^5.3.2: resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== -acorn-walk@^8.1.1: - version "8.2.0" - resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.2.0.tgz#741210f2e2426454508853a2f44d0ab83b7f69c1" - integrity sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA== +acorn-walk@^8.0.2, acorn-walk@^8.1.1: + version "8.3.0" + resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.3.0.tgz#2097665af50fd0cf7a2dfccd2b9368964e66540f" + integrity sha512-FS7hV565M5l1R08MXqo8odwMTB02C2UqzB17RVgu9EyuYFBqJZ3/ZY97sQD5FewVu1UyDFc1yztUDrAwT0EypA== -acorn@^8.4.1, acorn@^8.7.1, acorn@^8.8.2, acorn@^8.9.0: - version "8.10.0" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.10.0.tgz#8be5b3907a67221a81ab23c7889c4c5526b62ec5" - integrity sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw== +acorn@^8.1.0, acorn@^8.4.1, acorn@^8.5.0, acorn@^8.7.1, acorn@^8.8.1, acorn@^8.8.2, acorn@^8.9.0: + version "8.11.2" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.11.2.tgz#ca0d78b51895be5390a5903c5b3bdcdaf78ae40b" + integrity sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w== add-stream@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/add-stream/-/add-stream-1.0.0.tgz#6a7990437ca736d5e1288db92bd3266d5f5cb2aa" integrity sha512-qQLMr+8o0WC4FZGQTcJiKBVC59JylcPSrTtk6usvmIDFUOCKegapy1VHQwRbFMOFyb/inzUVqHs+eMYKDM1YeQ== +address@^1.0.1: + version "1.2.2" + resolved "https://registry.yarnpkg.com/address/-/address-1.2.2.tgz#2b5248dac5485a6390532c6a517fda2e3faac89e" + integrity sha512-4B/qKCfeE/ODUaAUpSwfzazo5x29WD4r3vXiWsB7I2mSDAihwEqKO+g8GELZUQSSAo5e1XTYh3ZVfLyxBc12nA== + agent-base@6, agent-base@^6.0.2: version "6.0.2" resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77" @@ -3505,6 +4187,60 @@ ansicolors@~0.3.2: resolved "https://registry.yarnpkg.com/ansicolors/-/ansicolors-0.3.2.tgz#665597de86a9ffe3aa9bfbe6cae5c6ea426b4979" integrity sha512-QXu7BPrP29VllRxH8GwB7x5iX5qWKAAMLqKQGWTeLWVlNHNOpVMJ91dsxQAIWXpjuW5wqvxu3Jd/nRjrJ+0pqg== +antd@^5.10.1: + version "5.11.4" + resolved "https://registry.yarnpkg.com/antd/-/antd-5.11.4.tgz#7c4c7254a0424573c095d20d997d2e34763e67f2" + integrity sha512-FuaV/viyZiMlCL1JzdQpSlzPcWcBlGYDAbtj3FM4BgwAso+ge3d4tXkZZG4yZkktUoLvWrcaJObs3Nk32Oiwuw== + dependencies: + "@ant-design/colors" "^7.0.0" + "@ant-design/cssinjs" "^1.17.5" + "@ant-design/icons" "^5.2.6" + "@ant-design/react-slick" "~1.0.2" + "@babel/runtime" "^7.18.3" + "@ctrl/tinycolor" "^3.6.1" + "@rc-component/color-picker" "~1.4.1" + "@rc-component/mutate-observer" "^1.1.0" + "@rc-component/tour" "~1.10.0" + "@rc-component/trigger" "^1.18.2" + classnames "^2.3.2" + copy-to-clipboard "^3.3.3" + dayjs "^1.11.1" + qrcode.react "^3.1.0" + rc-cascader "~3.20.0" + rc-checkbox "~3.1.0" + rc-collapse "~3.7.1" + rc-dialog "~9.3.4" + rc-drawer "~6.5.2" + rc-dropdown "~4.1.0" + rc-field-form "~1.40.0" + rc-image "~7.5.1" + rc-input "~1.3.6" + rc-input-number "~8.4.0" + rc-mentions "~2.9.1" + rc-menu "~9.12.2" + rc-motion "^2.9.0" + rc-notification "~5.3.0" + rc-pagination "~3.7.0" + rc-picker "~3.14.6" + rc-progress "~3.5.1" + rc-rate "~2.12.0" + rc-resize-observer "^1.4.0" + rc-segmented "~2.2.2" + rc-select "~14.10.0" + rc-slider "~10.4.0" + rc-steps "~6.0.1" + rc-switch "~4.1.0" + rc-table "~7.36.0" + rc-tabs "~12.13.1" + rc-textarea "~1.5.3" + rc-tooltip "~6.1.2" + rc-tree "~5.8.2" + rc-tree-select "~5.15.0" + rc-upload "~4.3.5" + rc-util "^5.38.1" + scroll-into-view-if-needed "^3.1.0" + throttle-debounce "^5.0.0" + anymatch@^3.0.3, anymatch@~3.1.2: version "3.1.3" resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e" @@ -3523,6 +4259,11 @@ append-field@^1.0.0: resolved "https://registry.yarnpkg.com/aproba/-/aproba-2.0.0.tgz#52520b8ae5b569215b354efc0caa3fe1e45a8adc" integrity sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ== +arch@^2.1.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/arch/-/arch-2.2.0.tgz#1bc47818f305764f23ab3306b0bfc086c5a29d11" + integrity sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ== + archy@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/archy/-/archy-1.0.0.tgz#f9c8c13757cc1dd7bc379ac77b2c62a5c2868c40" @@ -3574,6 +4315,28 @@ argv-formatter@~1.0.0: resolved "https://registry.yarnpkg.com/argv-formatter/-/argv-formatter-1.0.0.tgz#a0ca0cbc29a5b73e836eebe1cbf6c5e0e4eb82f9" integrity sha512-F2+Hkm9xFaRg+GkaNnbwXNDV5O6pnCFEmqyhvfC/Ic5LbgOWjJh3L+mN/s91rxVL3znE7DYVpW0GJFT+4YBgWw== +aria-query@5.1.3: + version "5.1.3" + resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-5.1.3.tgz#19db27cd101152773631396f7a95a3b58c22c35e" + integrity sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ== + dependencies: + deep-equal "^2.0.5" + +aria-query@^5.1.3: + version "5.3.0" + resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-5.3.0.tgz#650c569e41ad90b51b3d7df5e5eed1c7549c103e" + integrity sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A== + dependencies: + dequal "^2.0.3" + +array-buffer-byte-length@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz#fabe8bc193fea865f317fe7807085ee0dee5aead" + integrity sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A== + dependencies: + call-bind "^1.0.2" + is-array-buffer "^3.0.1" + array-flatten@1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" @@ -3589,6 +4352,17 @@ array-ify@^1.0.0: resolved "https://registry.yarnpkg.com/array-ify/-/array-ify-1.0.0.tgz#9e528762b4a9066ad163a6962a364418e9626ece" integrity sha512-c5AMf34bKdvPhQ7tBGhqkgKNUzMr4WUs+WDtC2ZUGOUncbxKMTvqxYctiseW3+L4bA8ec+GcZ6/A/FW4m8ukng== +array-includes@^3.1.6: + version "3.1.7" + resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.7.tgz#8cd2e01b26f7a3086cbc87271593fe921c62abda" + integrity sha512-dlcsNBIiWhPkHdOEEKnehA+RNUWDc4UqFtnIXU4uuYDPtA4LDkr7qip2p0VvFAEXNDr0yWZ9PJyIRiGjRLQzwQ== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + get-intrinsic "^1.2.1" + is-string "^1.0.7" + array-index@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/array-index/-/array-index-1.0.0.tgz#ec56a749ee103e4e08c790b9c353df16055b97f9" @@ -3597,6 +4371,11 @@ array-index@^1.0.0: debug "^2.2.0" es6-symbol "^3.0.2" +array-tree-filter@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/array-tree-filter/-/array-tree-filter-2.1.0.tgz#873ac00fec83749f255ac8dd083814b4f6329190" + integrity sha512-4ROwICNlNw/Hqa9v+rk5h22KjmzB1JGTMVKP2AKJBOCgb0yL0ASf0+YvCcLNNwquOHNX48jkeZIJ3a+oOQqKcw== + array-union@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" @@ -3607,6 +4386,50 @@ array-union@^3.0.1: resolved "https://registry.yarnpkg.com/array-union/-/array-union-3.0.1.tgz#da52630d327f8b88cfbfb57728e2af5cd9b6b975" integrity sha512-1OvF9IbWwaeiM9VhzYXVQacMibxpXOMYVNIvMtKRyX9SImBXpKcFr8XvFDeEslCyuH/t6KRt7HEO94AlP8Iatw== +array.prototype.flat@^1.3.1: + version "1.3.2" + resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz#1476217df8cff17d72ee8f3ba06738db5b387d18" + integrity sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + es-shim-unscopables "^1.0.0" + +array.prototype.flatmap@^1.3.1: + version "1.3.2" + resolved "https://registry.yarnpkg.com/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz#c9a7c6831db8e719d6ce639190146c24bbd3e527" + integrity sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + es-shim-unscopables "^1.0.0" + +array.prototype.tosorted@^1.1.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/array.prototype.tosorted/-/array.prototype.tosorted-1.1.2.tgz#620eff7442503d66c799d95503f82b475745cefd" + integrity sha512-HuQCHOlk1Weat5jzStICBCd83NxiIMwqDg/dHEsoefabn/hJRj5pVdWcPUSpRrwhwxZOsQassMpgN/xRYFBMIg== + 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" + +arraybuffer.prototype.slice@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.2.tgz#98bd561953e3e74bb34938e77647179dfe6e9f12" + integrity sha512-yMBKppFur/fbHu9/6USUe03bZ4knMYiwFBcyiaXB8Go0qNehwX6inYPzK9U0NeQvGxKthcmHcaR8P5MStSRBAw== + dependencies: + array-buffer-byte-length "^1.0.0" + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + get-intrinsic "^1.2.1" + is-array-buffer "^3.0.2" + is-shared-array-buffer "^1.0.2" + arrify@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" @@ -3626,6 +4449,11 @@ asn1js@^3.0.1, asn1js@^3.0.5: pvutils "^1.1.3" tslib "^2.4.0" +ast-types-flow@^0.0.7: + version "0.0.7" + resolved "https://registry.yarnpkg.com/ast-types-flow/-/ast-types-flow-0.0.7.tgz#f70b735c6bca1a5c9c22d982c3e39e7feba3bdad" + integrity sha512-eBvWn1lvIApYMhzQMsu9ciLfkBY499mFZlNqG+/9WR7PVlroQw0vG30cOQQbaKz3sCEc44TAOu2ykzqXSNnwag== + async-retry@^1.3.3: version "1.3.3" resolved "https://registry.yarnpkg.com/async-retry/-/async-retry-1.3.3.tgz#0e7f36c04d8478e7a58bdbed80cedf977785f280" @@ -3633,10 +4461,22 @@ async-retry@^1.3.3: dependencies: retry "0.13.1" +async-validator@^4.1.0: + version "4.2.5" + resolved "https://registry.yarnpkg.com/async-validator/-/async-validator-4.2.5.tgz#c96ea3332a521699d0afaaceed510a54656c6339" + integrity sha512-7HhHjtERjqlNbZtqNqy2rckN/SpOOlmDliet+lP7k+eKZEjPk3DgyeU9lIXLdeLz0uBbbVp+9Qdow9wJWgwwfg== + +async@^2.6.4: + version "2.6.4" + resolved "https://registry.yarnpkg.com/async/-/async-2.6.4.tgz#706b7ff6084664cd7eae713f6f965433b5504221" + integrity sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA== + dependencies: + lodash "^4.17.14" + async@^3.2.3: - version "3.2.4" - resolved "https://registry.yarnpkg.com/async/-/async-3.2.4.tgz#2d22e00f8cddeb5fde5dd33522b56d1cf569a81c" - integrity sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ== + version "3.2.5" + resolved "https://registry.yarnpkg.com/async/-/async-3.2.5.tgz#ebd52a8fdaf7a2289a24df399f8d8485c8a46b66" + integrity sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg== asynckit@^0.4.0: version "0.4.0" @@ -3648,11 +4488,6 @@ at-least-node@^1.0.0: resolved "https://registry.yarnpkg.com/at-least-node/-/at-least-node-1.0.0.tgz#602cd4b46e844ad4effc92a8011a3c46e0238dc2" integrity sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg== -atob@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" - integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== - autoprefixer@^10.4.9: version "10.4.16" resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-10.4.16.tgz#fad1411024d8670880bdece3970aa72e3572feb8" @@ -3670,15 +4505,27 @@ available-typed-arrays@^1.0.5: resolved "https://registry.yarnpkg.com/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz#92f95616501069d07d10edb2fc37d3e1c65123b7" integrity sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw== +axe-core@^4.6.2: + version "4.8.2" + resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-4.8.2.tgz#2f6f3cde40935825cf4465e3c1c9e77b240ff6ae" + integrity sha512-/dlp0fxyM3R8YW7MFzaHWXrf4zzbr0vaYb23VBFCl83R7nWNPg/yaQw2Dc8jzCMmDVLhSdzH8MjrsuIUuvX+6g== + axios@^1.0.0: - version "1.5.1" - resolved "https://registry.yarnpkg.com/axios/-/axios-1.5.1.tgz#11fbaa11fc35f431193a9564109c88c1f27b585f" - integrity sha512-Q28iYCWzNHjAm+yEAot5QaAMxhMghWLFVf7rRdwhUI+c2jix2DUXjAHXVi+s1ibs3mjPO/cCgbA++3BjD0vP/A== + version "1.6.2" + resolved "https://registry.yarnpkg.com/axios/-/axios-1.6.2.tgz#de67d42c755b571d3e698df1b6504cde9b0ee9f2" + integrity sha512-7i24Ri4pmDRfJTR7LDBhsOTtcm+9kjX5WiY1X3wIisx6G9So3pfMkEiU7emUBe46oceVImccTEM3k6C5dbVW8A== dependencies: follow-redirects "^1.15.0" form-data "^4.0.0" proxy-from-env "^1.1.0" +axobject-query@^3.1.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/axobject-query/-/axobject-query-3.2.1.tgz#39c378a6e3b06ca679f29138151e45b2b32da62a" + integrity sha512-jsyHu61e6N4Vbz/v18DHwWYKK0bSWLqn47eeDSKPB7m8tqMHF9YJ+mhIk2lVteyZrY8tnSj/jHOv4YiTCuCJgg== + dependencies: + dequal "^2.0.3" + b64-lite@^1.3.1, b64-lite@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/b64-lite/-/b64-lite-1.4.0.tgz#e62442de11f1f21c60e38b74f111ac0242283d3d" @@ -3693,7 +4540,7 @@ b64u-lite@^1.0.1: dependencies: b64-lite "^1.4.0" -babel-jest@^29.7.0: +babel-jest@^29.4.1, babel-jest@^29.7.0: version "29.7.0" resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-29.7.0.tgz#f4369919225b684c56085998ac63dbd05be020d5" integrity sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg== @@ -3763,12 +4610,12 @@ babel-plugin-polyfill-corejs2@^0.4.6: semver "^6.3.1" babel-plugin-polyfill-corejs3@^0.8.5: - version "0.8.5" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.8.5.tgz#a75fa1b0c3fc5bd6837f9ec465c0f48031b8cab1" - integrity sha512-Q6CdATeAvbScWPNLB8lzSO7fgUVBkQt6zLgNlfyeCr/EQaEQR+bWiBYYPYAFyE528BMjRhL+1QBMOI4jc/c5TA== + version "0.8.6" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.8.6.tgz#25c2d20002da91fe328ff89095c85a391d6856cf" + integrity sha512-leDIc4l4tUgU7str5BWLS2h8q2N4Nf6lGZP6UrNDxdtfF2g69eJ5L0H7S8A5Ln/arfFAfHor5InAdZuIOwZdgQ== dependencies: "@babel/helper-define-polyfill-provider" "^0.4.3" - core-js-compat "^3.32.2" + core-js-compat "^3.33.1" babel-plugin-polyfill-regenerator@^0.5.3: version "0.5.3" @@ -3825,6 +4672,13 @@ base64-js@*, base64-js@^1.3.0, base64-js@^1.3.1: resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== +basic-auth@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/basic-auth/-/basic-auth-2.0.1.tgz#b998279bf47ce38344b4f3cf916d4679bbf51e3a" + integrity sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg== + dependencies: + safe-buffer "5.1.2" + batch@0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/batch/-/batch-0.6.1.tgz#dc34314f4e679318093fc760272525f94bf25c16" @@ -3836,9 +4690,9 @@ before-after-hook@^2.2.0: integrity sha512-NzUnlZexiaH/46WDhANlyR2bXRopNg4F/zuSA3OpZnllCUgRaOF2znDioDWrmbNVsuZk6l9pMquQB38cfBZwkQ== big-integer@^1.6.51: - version "1.6.51" - resolved "https://registry.yarnpkg.com/big-integer/-/big-integer-1.6.51.tgz#0df92a5d9880560d3ff2d5fd20245c889d130686" - integrity sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg== + version "1.6.52" + resolved "https://registry.yarnpkg.com/big-integer/-/big-integer-1.6.52.tgz#60a887f3047614a8e1bffe5d7173490a97dc8c85" + integrity sha512-QxD8cf2eVqJOOz63z6JIN9BzvVs/dlySa5HGSBH5xtR8dPteIRQnBxxKqkNTiT6jbDTF6jAfrd4oMcND9RGbQg== big.js@^5.2.2: version "5.2.2" @@ -3850,6 +4704,14 @@ bignumber.js@^9.0.0: resolved "https://registry.yarnpkg.com/bignumber.js/-/bignumber.js-9.1.2.tgz#b7c4242259c008903b13707983b5f4bbd31eda0c" integrity sha512-2/mKyZH9K85bzOEfhXDBFZTGd1CTs+5IHpeFQo9luiBG7hghdC851Pj2WAhb6E3R6b9tZj/XKhbg4fum+Kepug== +bin-check@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/bin-check/-/bin-check-4.1.0.tgz#fc495970bdc88bb1d5a35fc17e65c4a149fc4a49" + integrity sha512-b6weQyEUKsDGFlACWSIOfveEnImkJyK/FGW6FAG42loyoquvjdtOIqO6yBFzHyqyVVhNgNkQxxx09SFLK28YnA== + dependencies: + execa "^0.7.0" + executable "^4.1.0" + bin-links@^4.0.1: version "4.0.3" resolved "https://registry.yarnpkg.com/bin-links/-/bin-links-4.0.3.tgz#9e4a3c5900830aee3d7f52178b65e01dcdde64a5" @@ -3860,6 +4722,23 @@ bin-links@^4.0.1: read-cmd-shim "^4.0.0" write-file-atomic "^5.0.0" +bin-version-check@^5.0.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/bin-version-check/-/bin-version-check-5.1.0.tgz#788e80e036a87313f8be7908bc20e5abe43f0837" + integrity sha512-bYsvMqJ8yNGILLz1KP9zKLzQ6YpljV3ln1gqhuLkUtyfGi3qXKGuK2p+U4NAvjVFzDFiBBtOpCOSFNuYYEGZ5g== + dependencies: + bin-version "^6.0.0" + semver "^7.5.3" + semver-truncate "^3.0.0" + +bin-version@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/bin-version/-/bin-version-6.0.0.tgz#08ecbe5fc87898b441425e145f9e105064d00315" + integrity sha512-nk5wEsP4RiKjG+vF+uG8lFsEn4d7Y6FVDamzzftSunXOoOcOOkzcWdKVlGgFFwlUQCj63SgnUkLLGF8v7lufhw== + dependencies: + execa "^5.0.0" + find-versions "^5.0.0" + binary-extensions@^2.0.0, binary-extensions@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" @@ -4039,6 +4918,30 @@ bytes@3.1.2: resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5" integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg== +cacache@^16.1.0: + version "16.1.3" + resolved "https://registry.yarnpkg.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, cacache@^17.0.4, cacache@^17.1.3: version "17.1.4" resolved "https://registry.yarnpkg.com/cacache/-/cacache-17.1.4.tgz#b3ff381580b47e85c6e64f801101508e26604b35" @@ -4057,6 +4960,11 @@ cacache@^17.0.0, cacache@^17.0.4, cacache@^17.1.3: tar "^6.1.11" unique-filename "^3.0.0" +cacheable-lookup@^5.0.3: + version "5.0.4" + resolved "https://registry.yarnpkg.com/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz#5a6b865b2c44357be3d5ebc2a467b032719a7005" + integrity sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA== + cacheable-lookup@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/cacheable-lookup/-/cacheable-lookup-7.0.0.tgz#3476a8215d046e5a3202a9209dd13fec1f933a27" @@ -4075,7 +4983,20 @@ cacheable-request@^10.2.8: normalize-url "^8.0.0" responselike "^3.0.0" -call-bind@^1.0.0, call-bind@^1.0.2, call-bind@^1.0.4: +cacheable-request@^7.0.2: + version "7.0.4" + resolved "https://registry.yarnpkg.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@^1.0.0, call-bind@^1.0.2, call-bind@^1.0.4, call-bind@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.5.tgz#6fa2b7845ce0ea49bf4d8b9ef64727a2c2e2e513" integrity sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ== @@ -4119,9 +5040,9 @@ caniuse-api@^3.0.0: lodash.uniq "^4.5.0" caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001538, caniuse-lite@^1.0.30001541: - version "1.0.30001553" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001553.tgz#e64e7dc8fd4885cd246bb476471420beb5e474b5" - integrity sha512-N0ttd6TrFfuqKNi+pMgWJTb9qrdJu4JSpgPFLe/lrD19ugC6fZgF0pUewRowDwzdDnb9V41mFcdlYgl/PyKf4A== + version "1.0.30001565" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001565.tgz#a528b253c8a2d95d2b415e11d8b9942acc100c4f" + integrity sha512-xrE//a3O7TP0vaJ8ikzkD2c2NgcVUvsEe2IvFTntV4Yd1Z9FVzh+gW+enX96L0psrbaFMcVcH2l90xNuGDWc8w== canonicalize@^1.0.1: version "1.0.8" @@ -4163,7 +5084,7 @@ char-regex@^1.0.2: resolved "https://registry.yarnpkg.com/char-regex/-/char-regex-1.0.2.tgz#d744358226217f981ed58f479b1d6bcc29545dcf" integrity sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw== -"chokidar@>=3.0.0 <4.0.0", chokidar@^3.5.1, chokidar@^3.5.3: +"chokidar@>=3.0.0 <4.0.0", chokidar@^3.5.3: version "3.5.3" resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd" integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw== @@ -4219,6 +5140,11 @@ class-validator@0.14.0, class-validator@^0.14.0: libphonenumber-js "^1.10.14" validator "^13.7.0" +classnames@2.x, classnames@^2.2.1, classnames@^2.2.3, classnames@^2.2.5, classnames@^2.2.6, classnames@^2.3.1, classnames@^2.3.2: + version "2.3.2" + resolved "https://registry.yarnpkg.com/classnames/-/classnames-2.3.2.tgz#351d813bf0137fcc6a76a16b88208d2560a0d924" + integrity sha512-CSbhY4cFEJRe6/GQzIk5qXZ4Jeg5pcsP7b5peFSDpffpe1cqjASH/n9UTjBwOp6XpMSTwQ8Za2K5V02ueA7Tmw== + clean-stack@^2.0.0: version "2.2.0" resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b" @@ -4259,9 +5185,9 @@ cli-spinners@2.6.1: integrity sha512-x/5fWmGMnbKQAaNwN+UZlV79qBLM9JFnJuJ03gIi5whrob0xV0ofNVHy9DhwGdsMJQc2OKv0oGmLzvaqvAVv+g== cli-spinners@^2.5.0: - version "2.9.1" - resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-2.9.1.tgz#9c0b9dad69a6d47cbb4333c14319b060ed395a35" - integrity sha512-jHgecW0pxkonBJdrKsqxgRX9AcG+u/5k0Q7WPDfi8AogLAdwxEkyYYNWwZ5GvVFoFx2uiY1eNcSK00fh+1+FyQ== + version "2.9.2" + resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-2.9.2.tgz#1773a8f4b9c4d6ac31563df53b3fc1d79462fe41" + integrity sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg== cli-table3@^0.6.3: version "0.6.3" @@ -4290,6 +5216,13 @@ cliui@^8.0.1: strip-ansi "^6.0.1" wrap-ansi "^7.0.0" +clone-response@^1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.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.yarnpkg.com/clone/-/clone-2.1.2.tgz#1b7f4b9f591f1e8f83670401600345a02887435f" @@ -4312,6 +5245,11 @@ cloudevents@^7.0.0: util "^0.12.4" uuid "^8.3.2" +clsx@^1.1.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/clsx/-/clsx-1.2.1.tgz#0ddc4a20a549b59c93a4116bb26f5294ca17dc12" + integrity sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg== + cmd-shim@^6.0.0: version "6.0.2" resolved "https://registry.yarnpkg.com/cmd-shim/-/cmd-shim-6.0.2.tgz#435fd9e5c95340e61715e19f90209ed6fcd9e0a4" @@ -4361,7 +5299,7 @@ colord@^2.9.1: resolved "https://registry.yarnpkg.com/colord/-/colord-2.9.3.tgz#4f8ce919de456f1d5c1c368c307fe20f3e59fb43" integrity sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw== -colorette@^2.0.10: +colorette@^2.0.10, colorette@^2.0.19: version "2.0.20" resolved "https://registry.yarnpkg.com/colorette/-/colorette-2.0.20.tgz#9eb793e6833067f7235902fcd3b09917a000a95a" integrity sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w== @@ -4386,7 +5324,7 @@ commander@^2.15.0, commander@^2.20.0: resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== -commander@^7.2.0: +commander@^7.1.0, commander@^7.2.0: version "7.2.0" resolved "https://registry.yarnpkg.com/commander/-/commander-7.2.0.tgz#a36cb57d0b501ce108e4d20559a150a391d97ab7" integrity sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw== @@ -4434,6 +5372,11 @@ compression@^1.7.4: safe-buffer "5.1.2" vary "~1.1.2" +compute-scroll-into-view@^3.0.2: + version "3.1.0" + resolved "https://registry.yarnpkg.com/compute-scroll-into-view/-/compute-scroll-into-view-3.1.0.tgz#753f11d972596558d8fe7c6bcbc8497690ab4c87" + integrity sha512-rj8l8pD4bJ1nx+dAkMhV1xB5RuZEyVysfxJqB1pRchh1KVvwOv9b7CGB8ZfjTImVv2oF+sYMUkMZq6Na5Ftmbg== + concat-map@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" @@ -4492,7 +5435,7 @@ console-control-strings@^1.0.0, console-control-strings@^1.1.0: resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" integrity sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ== -content-disposition@0.5.4: +content-disposition@0.5.4, content-disposition@^0.5.4: version "0.5.4" resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.4.tgz#8b82b4efac82512a02bb0b1dcec9d2c5e8eb5bfe" integrity sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ== @@ -4648,6 +5591,13 @@ copy-anything@^2.0.1: dependencies: is-what "^3.14.1" +copy-to-clipboard@^3.3.3: + version "3.3.3" + resolved "https://registry.yarnpkg.com/copy-to-clipboard/-/copy-to-clipboard-3.3.3.tgz#55ac43a1db8ae639a4bd99511c148cdd1b83a1b0" + integrity sha512-2KV8NhB5JqC3ky0r9PMCAZKbUHSwtEo4CwCs0KXgruG43gX5PMqDEBbVU4OUzw2MuAWUfsuFmWvEKG5QRfSnJA== + dependencies: + toggle-selection "^1.0.6" + copy-webpack-plugin@^10.2.4: version "10.2.4" resolved "https://registry.yarnpkg.com/copy-webpack-plugin/-/copy-webpack-plugin-10.2.4.tgz#6c854be3fdaae22025da34b9112ccf81c63308fe" @@ -4660,13 +5610,18 @@ copy-webpack-plugin@^10.2.4: schema-utils "^4.0.0" serialize-javascript "^6.0.0" -core-js-compat@^3.31.0, core-js-compat@^3.32.2: - version "3.33.1" - resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.33.1.tgz#debe80464107d75419e00c2ee29f35982118ff84" - integrity sha512-6pYKNOgD/j/bkC5xS5IIg6bncid3rfrI42oBH1SQJbsmYPKF7rhzcFzYCcxYMmNQQ0rCEB8WqpW7QHndOggaeQ== +core-js-compat@^3.31.0, core-js-compat@^3.33.1: + version "3.33.3" + resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.33.3.tgz#ec678b772c5a2d8a7c60a91c3a81869aa704ae01" + integrity sha512-cNzGqFsh3Ot+529GIXacjTJ7kegdt5fPXxCBVS1G0iaZpuo/tBz399ymceLJveQhFFZ8qThHiP3fzuoQjKN2ow== dependencies: browserslist "^4.22.1" +core-js-pure@^3.23.3: + version "3.33.3" + resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.33.3.tgz#cbf9180ac4c4653823d784862bfb5c77eac0bf98" + integrity sha512-taJ00IDOP+XYQEA2dAe4ESkmHt1fL8wzYDo3mRWQey8uO9UojlBFMneA65kMyxfYP7106c6LzWaq7/haDT6BCQ== + core-util-is@~1.0.0: version "1.0.3" resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85" @@ -4680,6 +5635,11 @@ cors@2.8.5: object-assign "^4" vary "^1" +corser@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/corser/-/corser-2.0.1.tgz#8eda252ecaab5840dcd975ceb90d9370c819ff87" + integrity sha512-utCYNzRSQIZNPIcGZdQc92UVJYAhtGAteCFg0yRaFm8f0P+CPtyGyHXJcGXnffjCybUCEx3FQ2G7U3/o9eIkVQ== + cosmiconfig@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-6.0.0.tgz#da4fee853c52f6b1e6935f41c1a2fc50bd4a9982" @@ -4702,7 +5662,7 @@ cosmiconfig@^7.0.0, cosmiconfig@^7.0.1: path-type "^4.0.0" yaml "^1.10.0" -cosmiconfig@^8.0.0: +cosmiconfig@^8.0.0, cosmiconfig@^8.1.3: version "8.3.6" resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-8.3.6.tgz#060a2b871d66dba6c8538ea1118ba1ac16f5fae3" integrity sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA== @@ -4742,6 +5702,15 @@ cross-fetch@^4.0.0: dependencies: node-fetch "^2.6.12" +cross-spawn@^5.0.1: + version "5.1.0" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-5.1.0.tgz#e8bd0efee58fcff6f8f94510a0a554bbfa235449" + integrity sha512-pTgQJ5KC0d2hcY8eyL1IzlBPYjTkyH72XRZPnLyKus2mBfNjQs3klqbJU2VILqZryAZUt9JOb3h/mWMy23/f5A== + dependencies: + lru-cache "^4.0.1" + shebang-command "^1.2.0" + which "^1.2.9" + cross-spawn@^7.0.0, cross-spawn@^7.0.2, cross-spawn@^7.0.3: version "7.0.3" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" @@ -4777,111 +5746,131 @@ css-loader@^6.4.0: postcss-value-parser "^4.2.0" semver "^7.3.8" -css-minimizer-webpack-plugin@^3.4.1: - version "3.4.1" - resolved "https://registry.yarnpkg.com/css-minimizer-webpack-plugin/-/css-minimizer-webpack-plugin-3.4.1.tgz#ab78f781ced9181992fe7b6e4f3422e76429878f" - integrity sha512-1u6D71zeIfgngN2XNRJefc/hY7Ybsxd74Jm4qngIXyUEk7fss3VUzuHxLAq/R8NAba4QU9OUSaMZlbpRc7bM4Q== +css-minimizer-webpack-plugin@^5.0.0: + version "5.0.1" + resolved "https://registry.yarnpkg.com/css-minimizer-webpack-plugin/-/css-minimizer-webpack-plugin-5.0.1.tgz#33effe662edb1a0bf08ad633c32fa75d0f7ec565" + integrity sha512-3caImjKFQkS+ws1TGcFn0V1HyDJFq1Euy589JlD6/3rV2kj+w7r5G9WDMgSHvpvXHNZ2calVypZWuEDQd9wfLg== dependencies: - cssnano "^5.0.6" - jest-worker "^27.0.2" - postcss "^8.3.5" - schema-utils "^4.0.0" - serialize-javascript "^6.0.0" - source-map "^0.6.1" + "@jridgewell/trace-mapping" "^0.3.18" + cssnano "^6.0.1" + jest-worker "^29.4.3" + postcss "^8.4.24" + schema-utils "^4.0.1" + serialize-javascript "^6.0.1" -css-select@^4.1.3: - version "4.3.0" - resolved "https://registry.yarnpkg.com/css-select/-/css-select-4.3.0.tgz#db7129b2846662fd8628cfc496abb2b59e41529b" - integrity sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ== +css-select@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/css-select/-/css-select-5.1.0.tgz#b8ebd6554c3637ccc76688804ad3f6a6fdaea8a6" + integrity sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg== dependencies: boolbase "^1.0.0" - css-what "^6.0.1" - domhandler "^4.3.1" - domutils "^2.8.0" + css-what "^6.1.0" + domhandler "^5.0.2" + domutils "^3.0.1" nth-check "^2.0.1" -css-tree@^1.1.2, css-tree@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.1.3.tgz#eb4870fb6fd7707327ec95c2ff2ab09b5e8db91d" - integrity sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q== +css-tree@^2.2.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-2.3.1.tgz#10264ce1e5442e8572fc82fbe490644ff54b5c20" + integrity sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw== dependencies: - mdn-data "2.0.14" - source-map "^0.6.1" + mdn-data "2.0.30" + source-map-js "^1.0.1" -css-what@^6.0.1: - version "6.1.0" - resolved "https://registry.yarnpkg.com/css-what/-/css-what-6.1.0.tgz#fb5effcf76f1ddea2c81bdfaa4de44e79bac70f4" - integrity sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw== - -css@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/css/-/css-3.0.0.tgz#4447a4d58fdd03367c516ca9f64ae365cee4aa5d" - integrity sha512-DG9pFfwOrzc+hawpmqX/dHYHJG+Bsdb0klhyi1sDneOgGOXy9wQIC8hzyVp1e4NRYDBdxcylvywPkkXCHAzTyQ== +css-tree@~2.2.0: + version "2.2.1" + resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-2.2.1.tgz#36115d382d60afd271e377f9c5f67d02bd48c032" + integrity sha512-OA0mILzGc1kCOCSJerOeqDxDQ4HOh+G8NbOJFOTgOCzpw7fCBubk0fEyxp8AgOL/jvLgYA/uV0cMbe43ElF1JA== dependencies: - inherits "^2.0.4" - source-map "^0.6.1" - source-map-resolve "^0.6.0" + mdn-data "2.0.28" + source-map-js "^1.0.1" + +css-what@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/css-what/-/css-what-6.1.0.tgz#fb5effcf76f1ddea2c81bdfaa4de44e79bac70f4" + integrity sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw== cssesc@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee" integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== -cssnano-preset-default@^5.2.14: - version "5.2.14" - resolved "https://registry.yarnpkg.com/cssnano-preset-default/-/cssnano-preset-default-5.2.14.tgz#309def4f7b7e16d71ab2438052093330d9ab45d8" - integrity sha512-t0SFesj/ZV2OTylqQVOrFgEh5uanxbO6ZAdeCrNsUQ6fVuXwYTxJPNAGvGTxHbD68ldIJNec7PyYZDBrfDQ+6A== +cssnano-preset-default@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/cssnano-preset-default/-/cssnano-preset-default-6.0.1.tgz#2a93247140d214ddb9f46bc6a3562fa9177fe301" + integrity sha512-7VzyFZ5zEB1+l1nToKyrRkuaJIx0zi/1npjvZfbBwbtNTzhLtlvYraK/7/uqmX2Wb2aQtd983uuGw79jAjLSuQ== dependencies: css-declaration-sorter "^6.3.1" - cssnano-utils "^3.1.0" - postcss-calc "^8.2.3" - postcss-colormin "^5.3.1" - postcss-convert-values "^5.1.3" - postcss-discard-comments "^5.1.2" - postcss-discard-duplicates "^5.1.0" - postcss-discard-empty "^5.1.1" - postcss-discard-overridden "^5.1.0" - postcss-merge-longhand "^5.1.7" - postcss-merge-rules "^5.1.4" - postcss-minify-font-values "^5.1.0" - postcss-minify-gradients "^5.1.1" - postcss-minify-params "^5.1.4" - postcss-minify-selectors "^5.2.1" - postcss-normalize-charset "^5.1.0" - postcss-normalize-display-values "^5.1.0" - postcss-normalize-positions "^5.1.1" - postcss-normalize-repeat-style "^5.1.1" - postcss-normalize-string "^5.1.0" - postcss-normalize-timing-functions "^5.1.0" - postcss-normalize-unicode "^5.1.1" - postcss-normalize-url "^5.1.0" - postcss-normalize-whitespace "^5.1.1" - postcss-ordered-values "^5.1.3" - postcss-reduce-initial "^5.1.2" - postcss-reduce-transforms "^5.1.0" - postcss-svgo "^5.1.0" - postcss-unique-selectors "^5.1.1" - -cssnano-utils@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/cssnano-utils/-/cssnano-utils-3.1.0.tgz#95684d08c91511edfc70d2636338ca37ef3a6861" - integrity sha512-JQNR19/YZhz4psLX/rQ9M83e3z2Wf/HdJbryzte4a3NSuafyp9w/I4U+hx5C2S9g41qlstH7DEWnZaaj83OuEA== + cssnano-utils "^4.0.0" + postcss-calc "^9.0.0" + postcss-colormin "^6.0.0" + postcss-convert-values "^6.0.0" + postcss-discard-comments "^6.0.0" + postcss-discard-duplicates "^6.0.0" + postcss-discard-empty "^6.0.0" + postcss-discard-overridden "^6.0.0" + postcss-merge-longhand "^6.0.0" + postcss-merge-rules "^6.0.1" + postcss-minify-font-values "^6.0.0" + postcss-minify-gradients "^6.0.0" + postcss-minify-params "^6.0.0" + postcss-minify-selectors "^6.0.0" + postcss-normalize-charset "^6.0.0" + postcss-normalize-display-values "^6.0.0" + postcss-normalize-positions "^6.0.0" + postcss-normalize-repeat-style "^6.0.0" + postcss-normalize-string "^6.0.0" + postcss-normalize-timing-functions "^6.0.0" + postcss-normalize-unicode "^6.0.0" + postcss-normalize-url "^6.0.0" + postcss-normalize-whitespace "^6.0.0" + postcss-ordered-values "^6.0.0" + postcss-reduce-initial "^6.0.0" + postcss-reduce-transforms "^6.0.0" + postcss-svgo "^6.0.0" + postcss-unique-selectors "^6.0.0" + +cssnano-utils@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/cssnano-utils/-/cssnano-utils-4.0.0.tgz#d1da885ec04003ab19505ff0e62e029708d36b08" + integrity sha512-Z39TLP+1E0KUcd7LGyF4qMfu8ZufI0rDzhdyAMsa/8UyNUU8wpS0fhdBxbQbv32r64ea00h4878gommRVg2BHw== -cssnano@^5.0.6: - version "5.1.15" - resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-5.1.15.tgz#ded66b5480d5127fcb44dac12ea5a983755136bf" - integrity sha512-j+BKgDcLDQA+eDifLx0EO4XSA56b7uut3BQFH+wbSaSTuGLuiyTa/wbRYthUXX8LC9mLg+WWKe8h+qJuwTAbHw== +cssnano@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-6.0.1.tgz#87c38c4cd47049c735ab756d7e77ac3ca855c008" + integrity sha512-fVO1JdJ0LSdIGJq68eIxOqFpIJrZqXUsBt8fkrBcztCQqAjQD51OhZp7tc0ImcbwXD4k7ny84QTV90nZhmqbkg== dependencies: - cssnano-preset-default "^5.2.14" - lilconfig "^2.0.3" - yaml "^1.10.2" + cssnano-preset-default "^6.0.1" + lilconfig "^2.1.0" -csso@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/csso/-/csso-4.2.0.tgz#ea3a561346e8dc9f546d6febedd50187cf389529" - integrity sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA== +csso@5.0.5: + version "5.0.5" + resolved "https://registry.yarnpkg.com/csso/-/csso-5.0.5.tgz#f9b7fe6cc6ac0b7d90781bb16d5e9874303e2ca6" + integrity sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ== + dependencies: + css-tree "~2.2.0" + +cssom@^0.5.0: + version "0.5.0" + 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.yarnpkg.com/cssom/-/cssom-0.3.8.tgz#9f1276f5b2b463f2114d3f2c75250af8c1a36f4a" + integrity sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg== + +cssstyle@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-2.3.0.tgz#ff665a0ddbdc31864b09647f34163443d90b0852" + integrity sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A== dependencies: - css-tree "^1.1.2" + cssom "~0.3.6" + +csstype@^3.0.10, csstype@^3.0.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.1.2.tgz#1d4bf9d572f11c14031f0436e1c10bc1f571f50b" + integrity sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ== d@1, d@^1.0.1: version "1.0.1" @@ -4891,6 +5880,11 @@ d@1, d@^1.0.1: es5-ext "^0.10.50" type "^1.0.1" +damerau-levenshtein@^1.0.8: + version "1.0.8" + resolved "https://registry.yarnpkg.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.yarnpkg.com/dargs/-/dargs-7.0.0.tgz#04015c41de0bcb69ec84050f3d9be0caf8d6d5cc" @@ -4901,6 +5895,15 @@ data-uri-to-buffer@^3.0.1: resolved "https://registry.yarnpkg.com/data-uri-to-buffer/-/data-uri-to-buffer-3.0.1.tgz#594b8973938c5bc2c33046535785341abc4f3636" integrity sha512-WboRycPNsVw3B3TL559F7kuBUM4d8CgMEvk6xEJlOp7OBPjt6G7z8WMWlD2rOFZLk6OYfFIUGsCOWzcQH9K2og== +data-urls@^3.0.2: + version "3.0.2" + 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" + date-fns@^2.30.0: version "2.30.0" resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-2.30.0.tgz#f367e644839ff57894ec6ac480de40cae4b0f4d0" @@ -4913,6 +5916,11 @@ dateformat@^3.0.0, dateformat@^3.0.3: resolved "https://registry.yarnpkg.com/dateformat/-/dateformat-3.0.3.tgz#a6e37499a4d9a9cf85ef5872044d62901c9889ae" integrity sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q== +dayjs@^1.11.1: + version "1.11.10" + resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.11.10.tgz#68acea85317a6e164457d6d6947564029a6a16a0" + integrity sha512-vjAczensTgRcqDERK0SR2XMwsF/tSvnvlv6VcF2GIhg6Sx4yOIt/irsr1RDJsKiIyBzJDpCoXiWWq28MqH2cnQ== + debug@2.6.9, debug@^2.2.0: version "2.6.9" resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" @@ -4927,20 +5935,13 @@ debug@4, debug@^4.0.0, debug@^4.1.0, debug@^4.1.1, debug@^4.3.2, debug@^4.3.3, d dependencies: ms "2.1.2" -debug@^3.1.0, debug@^3.2.6: +debug@^3.1.0, debug@^3.2.6, debug@^3.2.7: version "3.2.7" resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== 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.yarnpkg.com/decamelize-keys/-/decamelize-keys-1.1.1.tgz#04a2d523b2f18d80d0158a43b895d56dff8d19d8" @@ -4954,7 +5955,12 @@ decamelize@^1.1.0: resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" integrity sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA== -decode-uri-component@^0.2.0, decode-uri-component@^0.2.2: +decimal.js@^10.4.2: + version "10.4.3" + resolved "https://registry.yarnpkg.com/decimal.js/-/decimal.js-10.4.3.tgz#1044092884d245d1b7f65725fa4ad4c6f781cc23" + integrity sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA== + +decode-uri-component@^0.2.2: version "0.2.2" resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.2.tgz#e69dbe25d37941171dd540e024c444cd5188e1e9" integrity sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ== @@ -4971,6 +5977,30 @@ dedent@^1.0.0: resolved "https://registry.yarnpkg.com/dedent/-/dedent-1.5.1.tgz#4f3fc94c8b711e9bb2800d185cd6ad20f2a90aff" integrity sha512-+LxW+KLWxu3HW3M2w2ympwtqPrqYRzU8fqi6Fhd18fBALe15blJPI/I4+UHveMVG6lJqB4JNd4UG0S5cnVHwIg== +deep-equal@^2.0.5: + version "2.2.3" + resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-2.2.3.tgz#af89dafb23a396c7da3e862abc0be27cf51d56e1" + integrity sha512-ZIwpnevOurS8bpT4192sqAowWM76JDKSHYzMLty3BZGSswgq6pBaH3DhCSW5xVAZICZyKdOBPjwww5wfgT/6PA== + dependencies: + array-buffer-byte-length "^1.0.0" + call-bind "^1.0.5" + es-get-iterator "^1.1.3" + get-intrinsic "^1.2.2" + is-arguments "^1.1.1" + is-array-buffer "^3.0.2" + is-date-object "^1.0.5" + is-regex "^1.1.4" + is-shared-array-buffer "^1.0.2" + isarray "^2.0.5" + object-is "^1.1.5" + object-keys "^1.1.1" + object.assign "^4.1.4" + regexp.prototype.flags "^1.5.1" + side-channel "^1.0.4" + which-boxed-primitive "^1.0.2" + which-collection "^1.0.1" + which-typed-array "^1.1.13" + deep-extend@^0.6.0: version "0.6.0" resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" @@ -4981,7 +6011,7 @@ deep-is@^0.1.3: resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== -deepmerge@^4.2.2: +deepmerge@^4.2.2, deepmerge@^4.3.1: version "4.3.1" resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.3.1.tgz#44b5f2147cd3b00d4b56137685966f26fd25dd4a" integrity sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A== @@ -5000,12 +6030,12 @@ defaults@^1.0.3: dependencies: clone "^1.0.2" -defer-to-connect@^2.0.1: +defer-to-connect@^2.0.0, defer-to-connect@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/defer-to-connect/-/defer-to-connect-2.0.1.tgz#8016bdb4143e4632b77a3449c6236277de520587" integrity sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg== -define-data-property@^1.1.1: +define-data-property@^1.0.1, define-data-property@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/define-data-property/-/define-data-property-1.1.1.tgz#c35f7cd0ab09883480d12ac5cb213715587800b3" integrity sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ== @@ -5019,6 +6049,15 @@ define-lazy-prop@^2.0.0: resolved "https://registry.yarnpkg.com/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz#3f7ae421129bcaaac9bc74905c98a0009ec9ee7f" integrity sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og== +define-properties@^1.1.3, define-properties@^1.1.4, define-properties@^1.2.0: + version "1.2.1" + resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.2.1.tgz#10781cc616eb951a80a034bafcaa7377f6af2b6c" + integrity sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg== + dependencies: + define-data-property "^1.0.1" + has-property-descriptors "^1.0.0" + object-keys "^1.1.1" + delayed-stream@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" @@ -5044,6 +6083,11 @@ deprecation@^2.0.0: resolved "https://registry.yarnpkg.com/deprecation/-/deprecation-2.3.1.tgz#6368cbdb40abf3373b525ac87e4a260c3a700919" integrity sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ== +dequal@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/dequal/-/dequal-2.0.3.tgz#2644214f1997d39ed0ee0ece72335490a7ac67be" + integrity sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA== + destroy@1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.2.0.tgz#4803735509ad8be552934c67df614f94e66fa015" @@ -5064,6 +6108,14 @@ detect-node@^2.0.4: resolved "https://registry.yarnpkg.com/detect-node/-/detect-node-2.1.0.tgz#c9c70775a49c3d03bc2c06d9a73be550f978f8b1" integrity sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g== +detect-port@^1.5.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/detect-port/-/detect-port-1.5.1.tgz#451ca9b6eaf20451acb0799b8ab40dff7718727b" + integrity sha512-aBzdj76lueB6uUst5iAs7+0H/oOjqI5D16XUWxlWMIMROhcM0rfsNVk93zTngq1dDNpoXRr++Sus7ETAExppAQ== + dependencies: + address "^1.0.1" + debug "4" + did-resolver@^4.0.0, did-resolver@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/did-resolver/-/did-resolver-4.1.0.tgz#740852083c4fd5bf9729d528eca5d105aff45eb6" @@ -5103,6 +6155,13 @@ dns-packet@^5.2.2: dependencies: "@leichtgewicht/ip-codec" "^2.0.1" +doctrine@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d" + integrity sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw== + dependencies: + esutils "^2.0.2" + doctrine@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" @@ -5110,35 +6169,55 @@ doctrine@^3.0.0: dependencies: esutils "^2.0.2" -dom-serializer@^1.0.1: - version "1.4.1" - resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-1.4.1.tgz#de5d41b1aea290215dc45a6dae8adcf1d32e2d30" - integrity sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag== +dom-accessibility-api@^0.5.9: + version "0.5.16" + resolved "https://registry.yarnpkg.com/dom-accessibility-api/-/dom-accessibility-api-0.5.16.tgz#5a7429e6066eb3664d911e33fb0e45de8eb08453" + integrity sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg== + +dom-serializer@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-2.0.0.tgz#e41b802e1eedf9f6cae183ce5e622d789d7d8e53" + integrity sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg== dependencies: - domelementtype "^2.0.1" - domhandler "^4.2.0" - entities "^2.0.0" + domelementtype "^2.3.0" + domhandler "^5.0.2" + entities "^4.2.0" -domelementtype@^2.0.1, domelementtype@^2.2.0: +domelementtype@^2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.3.0.tgz#5c45e8e869952626331d7aab326d01daf65d589d" integrity sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw== -domhandler@^4.2.0, domhandler@^4.3.1: - version "4.3.1" - resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-4.3.1.tgz#8d792033416f59d68bc03a5aa7b018c1ca89279c" - integrity sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ== +domexception@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/domexception/-/domexception-4.0.0.tgz#4ad1be56ccadc86fc76d033353999a8037d03673" + integrity sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw== dependencies: - domelementtype "^2.2.0" + webidl-conversions "^7.0.0" -domutils@^2.8.0: - version "2.8.0" - resolved "https://registry.yarnpkg.com/domutils/-/domutils-2.8.0.tgz#4437def5db6e2d1f5d6ee859bd95ca7d02048135" - integrity sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A== +domhandler@^5.0.2, domhandler@^5.0.3: + version "5.0.3" + resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-5.0.3.tgz#cc385f7f751f1d1fc650c21374804254538c7d31" + integrity sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w== + dependencies: + domelementtype "^2.3.0" + +domutils@^3.0.1: + version "3.1.0" + resolved "https://registry.yarnpkg.com/domutils/-/domutils-3.1.0.tgz#c47f551278d3dc4b0b1ab8cbb42d751a6f0d824e" + integrity sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA== dependencies: - dom-serializer "^1.0.1" - domelementtype "^2.2.0" - domhandler "^4.2.0" + dom-serializer "^2.0.0" + domelementtype "^2.3.0" + domhandler "^5.0.3" + +dot-case@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/dot-case/-/dot-case-3.0.4.tgz#9b2b670d00a431667a8a75ba29cd1b98809ce751" + integrity sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w== + dependencies: + no-case "^3.0.4" + tslib "^2.0.3" dot-prop@^5.1.0: version "5.3.0" @@ -5147,7 +6226,7 @@ dot-prop@^5.1.0: dependencies: is-obj "^2.0.0" -dotenv-expand@10.0.0: +dotenv-expand@10.0.0, dotenv-expand@~10.0.0: version "10.0.0" resolved "https://registry.yarnpkg.com/dotenv-expand/-/dotenv-expand-10.0.0.tgz#12605d00fb0af6d0a592e6558585784032e4ef37" integrity sha512-GopVGCpVS1UKH75VKHGuQFqS1Gusej0z4FyQkPdwjil2gNIv+LNsqBlboOzpJFZKVT95GkCyWJbBSdFEFUWI2A== @@ -5157,10 +6236,10 @@ dotenv@16.1.4: resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-16.1.4.tgz#67ac1a10cd9c25f5ba604e4e08bc77c0ebe0ca8c" integrity sha512-m55RtE8AsPeJBpOIFKihEmqUcoVncQIwo7x9U8ZwLEZw9ZpXboz2c+rvog+jUaJvVrZ5kBOeYQBX5+8Aa/OZQw== -dotenv@~10.0.0: - version "10.0.0" - resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-10.0.0.tgz#3d4227b8fb95f81096cdd2b66653fb2c7085ba81" - integrity sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q== +dotenv@~16.3.1: + version "16.3.1" + resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-16.3.1.tgz#369034de7d7e5b120972693352a3bf112172cc3e" + integrity sha512-IPzF4w4/Rd94bA9imS68tZBaYyBWSCE47V1RGuMrB94iyTOIEwRmVL2x/4An+6mETpLrKJ5hQkB8W4kFAadeIQ== duplexer2@~0.1.0: version "0.1.4" @@ -5192,9 +6271,9 @@ ejs@^3.1.7: jake "^10.8.5" electron-to-chromium@^1.4.535: - version "1.4.563" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.563.tgz#dabb424202754c1fed2d2938ff564b23d3bbf0d3" - integrity sha512-dg5gj5qOgfZNkPNeyKBZQAQitIQ/xwfIDmEQJHCbXaD9ebTZxwJXUsDYcBlAvZGZLi+/354l35J1wkmP6CqYaw== + version "1.4.594" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.594.tgz#f69f207fba80735a44a988df42f3f439115d0515" + integrity sha512-xT1HVAu5xFn7bDfkjGQi9dNpMqGchUkebwf1GL7cZN32NSwwlHRPMSDJ1KN6HkS0bWUtndbSQZqvpQftKG2uFQ== emittery@^0.13.1: version "0.13.1" @@ -5228,7 +6307,7 @@ encoding@^0.1.13: dependencies: iconv-lite "^0.6.2" -end-of-stream@^1.4.1: +end-of-stream@^1.1.0, end-of-stream@^1.4.1: version "1.4.4" resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== @@ -5250,10 +6329,10 @@ enquirer@~2.3.6: dependencies: ansi-colors "^4.1.1" -entities@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/entities/-/entities-2.2.0.tgz#098dc90ebb83d8dffa089d55256b351d34c4da55" - integrity sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A== +entities@^4.2.0, entities@^4.4.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/entities/-/entities-4.5.0.tgz#5d268ea5e7113ec74c4d033b79ea5a35a488fb48" + integrity sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw== env-ci@^9.0.0: version "9.1.1" @@ -5287,10 +6366,102 @@ error-ex@^1.3.1, error-ex@^1.3.2: dependencies: is-arrayish "^0.2.1" +error-stack-parser@^2.0.6: + version "2.1.4" + resolved "https://registry.yarnpkg.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.22.1: + version "1.22.3" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.22.3.tgz#48e79f5573198de6dee3589195727f4f74bc4f32" + integrity sha512-eiiY8HQeYfYH2Con2berK+To6GrK2RxbPawDkGq4UiCQQfZHb6wX9qQqkbpPqaxQFcl8d9QzZqo0tGE0VcrdwA== + dependencies: + array-buffer-byte-length "^1.0.0" + arraybuffer.prototype.slice "^1.0.2" + available-typed-arrays "^1.0.5" + call-bind "^1.0.5" + es-set-tostringtag "^2.0.1" + es-to-primitive "^1.2.1" + function.prototype.name "^1.1.6" + get-intrinsic "^1.2.2" + get-symbol-description "^1.0.0" + globalthis "^1.0.3" + gopd "^1.0.1" + has-property-descriptors "^1.0.0" + has-proto "^1.0.1" + has-symbols "^1.0.3" + hasown "^2.0.0" + internal-slot "^1.0.5" + is-array-buffer "^3.0.2" + is-callable "^1.2.7" + is-negative-zero "^2.0.2" + is-regex "^1.1.4" + is-shared-array-buffer "^1.0.2" + is-string "^1.0.7" + is-typed-array "^1.1.12" + is-weakref "^1.0.2" + object-inspect "^1.13.1" + object-keys "^1.1.1" + object.assign "^4.1.4" + regexp.prototype.flags "^1.5.1" + safe-array-concat "^1.0.1" + safe-regex-test "^1.0.0" + string.prototype.trim "^1.2.8" + string.prototype.trimend "^1.0.7" + string.prototype.trimstart "^1.0.7" + typed-array-buffer "^1.0.0" + typed-array-byte-length "^1.0.0" + typed-array-byte-offset "^1.0.0" + typed-array-length "^1.0.4" + unbox-primitive "^1.0.2" + which-typed-array "^1.1.13" + +es-get-iterator@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/es-get-iterator/-/es-get-iterator-1.1.3.tgz#3ef87523c5d464d41084b2c3c9c214f1199763d6" + integrity sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.1.3" + has-symbols "^1.0.3" + is-arguments "^1.1.1" + is-map "^2.0.2" + is-set "^2.0.2" + is-string "^1.0.7" + isarray "^2.0.5" + stop-iteration-iterator "^1.0.0" + es-module-lexer@^1.2.1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-1.3.1.tgz#c1b0dd5ada807a3b3155315911f364dc4e909db1" - integrity sha512-JUFAyicQV9mXc3YRxPnDlrfBKpqt6hUYzz9/boprUJHs4e4KVr3XwOF70doO6gwXUor6EWZJAyWAfKki84t20Q== + version "1.4.1" + resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-1.4.1.tgz#41ea21b43908fe6a287ffcbe4300f790555331f5" + integrity sha512-cXLGjP0c4T3flZJKQSuziYoq7MlT+rnvfZjfp7h+I7K9BNX54kP9nyWvdbwjQ4u1iWbOL4u96fgeZLToQlZC7w== + +es-set-tostringtag@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/es-set-tostringtag/-/es-set-tostringtag-2.0.2.tgz#11f7cc9f63376930a5f20be4915834f4bc74f9c9" + integrity sha512-BuDyupZt65P9D2D2vA/zqcI3G5xRsklm5N3xCwuiy+/vKy8i0ifdsQP1sLgO4tZDSCaQUSnmC48khknGMV3D2Q== + dependencies: + get-intrinsic "^1.2.2" + has-tostringtag "^1.0.0" + hasown "^2.0.0" + +es-shim-unscopables@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz#1f6942e71ecc7835ed1c8a83006d8771a63a3763" + integrity sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw== + dependencies: + hasown "^2.0.0" + +es-to-primitive@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" + integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA== + dependencies: + is-callable "^1.1.4" + is-date-object "^1.0.1" + is-symbol "^1.0.2" es5-ext@^0.10.35, es5-ext@^0.10.50: version "0.10.62" @@ -5348,11 +6519,81 @@ escape-string-regexp@^4.0.0: resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== +escodegen@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-2.1.0.tgz#ba93bbb7a43986d29d6041f99f5262da773e2e17" + integrity sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w== + dependencies: + esprima "^4.0.1" + estraverse "^5.2.0" + esutils "^2.0.2" + optionalDependencies: + source-map "~0.6.1" + eslint-config-prettier@8.1.0: version "8.1.0" resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-8.1.0.tgz#4ef1eaf97afe5176e6a75ddfb57c335121abc5a6" integrity sha512-oKMhGv3ihGbCIimCAjqkdzx2Q+jthoqnXSP+d86M9tptwugycmTFdVR4IpLgq2c4SHifbwO90z2fQ8/Aio73yw== +eslint-import-resolver-node@^0.3.7: + version "0.3.9" + resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz#d4eaac52b8a2e7c3cd1903eb00f7e053356118ac" + integrity sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g== + dependencies: + debug "^3.2.7" + is-core-module "^2.13.0" + resolve "^1.22.4" + +eslint-module-utils@^2.7.4: + version "2.8.0" + resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.8.0.tgz#e439fee65fc33f6bba630ff621efc38ec0375c49" + integrity sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw== + dependencies: + debug "^3.2.7" + +eslint-plugin-import@2.27.5: + version "2.27.5" + resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.27.5.tgz#876a6d03f52608a3e5bb439c2550588e51dd6c65" + integrity sha512-LmEt3GVofgiGuiE+ORpnvP+kAm3h6MLZJ4Q5HCyHADofsb4VzXFsRiWj3c0OFiV+3DWFh0qg3v9gcPlfc3zRow== + dependencies: + array-includes "^3.1.6" + array.prototype.flat "^1.3.1" + array.prototype.flatmap "^1.3.1" + debug "^3.2.7" + doctrine "^2.1.0" + eslint-import-resolver-node "^0.3.7" + eslint-module-utils "^2.7.4" + has "^1.0.3" + is-core-module "^2.11.0" + is-glob "^4.0.3" + minimatch "^3.1.2" + object.values "^1.1.6" + resolve "^1.22.1" + semver "^6.3.0" + tsconfig-paths "^3.14.1" + +eslint-plugin-jsx-a11y@6.7.1: + version "6.7.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.7.1.tgz#fca5e02d115f48c9a597a6894d5bcec2f7a76976" + integrity sha512-63Bog4iIethyo8smBklORknVjB0T2dwB8Mr/hIC+fBS0uyHdYYpzM/Ed+YC8VxTjlXHEWFOdmgwcDn1U2L9VCA== + dependencies: + "@babel/runtime" "^7.20.7" + aria-query "^5.1.3" + array-includes "^3.1.6" + array.prototype.flatmap "^1.3.1" + ast-types-flow "^0.0.7" + axe-core "^4.6.2" + axobject-query "^3.1.1" + damerau-levenshtein "^1.0.8" + emoji-regex "^9.2.2" + has "^1.0.3" + jsx-ast-utils "^3.3.3" + language-tags "=1.0.5" + minimatch "^3.1.2" + object.entries "^1.1.6" + object.fromentries "^2.0.6" + semver "^6.3.0" + eslint-plugin-prettier@^4.2.1: version "4.2.1" resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-4.2.1.tgz#651cbb88b1dab98bfd42f017a12fa6b2d993f94b" @@ -5360,6 +6601,32 @@ eslint-plugin-prettier@^4.2.1: dependencies: prettier-linter-helpers "^1.0.0" +eslint-plugin-react-hooks@4.6.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.0.tgz#4c3e697ad95b77e93f8646aaa1630c1ba607edd3" + integrity sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g== + +eslint-plugin-react@7.32.2: + version "7.32.2" + resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.32.2.tgz#e71f21c7c265ebce01bcbc9d0955170c55571f10" + integrity sha512-t2fBMa+XzonrrNkyVirzKlvn5RXzzPwRHtMvLAtVZrt8oxgnTQaYbU6SXTOO1mwQgp1y5+toMSKInnzGr0Knqg== + dependencies: + array-includes "^3.1.6" + array.prototype.flatmap "^1.3.1" + array.prototype.tosorted "^1.1.1" + doctrine "^2.1.0" + estraverse "^5.3.0" + jsx-ast-utils "^2.4.1 || ^3.0.0" + minimatch "^3.1.2" + object.entries "^1.1.6" + object.fromentries "^2.0.6" + object.hasown "^1.1.2" + object.values "^1.1.6" + prop-types "^15.8.1" + resolve "^2.0.0-next.4" + semver "^6.3.0" + string.prototype.matchall "^4.0.8" + eslint-scope@5.1.1, eslint-scope@^5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" @@ -5388,7 +6655,7 @@ eslint-visitor-keys@^2.0.0: resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz#f65328259305927392c938ed44eb0a5c9b2bd303" integrity sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw== -eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.1: +eslint-visitor-keys@^3.0.0, eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.1: version "3.4.3" resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz#0cd72fe8550e3c2eae156a96a4dddcd1c8ac5800" integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag== @@ -5434,7 +6701,7 @@ eslint@~8.15.0: text-table "^0.2.0" v8-compile-cache "^2.0.3" -espree@^9.3.2, espree@^9.4.0: +espree@^9.0.0, espree@^9.3.2, espree@^9.4.0: version "9.6.1" resolved "https://registry.yarnpkg.com/espree/-/espree-9.6.1.tgz#a2a17b8e434690a5432f2f8018ce71d331a48c6f" integrity sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ== @@ -5443,7 +6710,7 @@ espree@^9.3.2, espree@^9.4.0: acorn-jsx "^5.3.2" eslint-visitor-keys "^3.4.1" -esprima@^4.0.0, esprima@~4.0.0: +esprima@^4.0.0, esprima@^4.0.1, esprima@~4.0.0: version "4.0.1" resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== @@ -5467,7 +6734,7 @@ estraverse@^4.1.1: resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== -estraverse@^5.1.0, estraverse@^5.2.0: +estraverse@^5.1.0, estraverse@^5.2.0, estraverse@^5.3.0: version "5.3.0" resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== @@ -5497,6 +6764,19 @@ events@^3.2.0, events@^3.3.0: resolved "https://registry.yarnpkg.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400" integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q== +execa@^0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/execa/-/execa-0.7.0.tgz#944becd34cc41ee32a63a9faf27ad5a65fc59777" + integrity sha512-RztN09XglpYI7aBBrJCPW95jEH7YF1UEPOoX9yDhUTPdp7mK+CQvnLTuD10BNXZ3byLTu2uehZ8EcKT/4CGiFw== + dependencies: + cross-spawn "^5.0.1" + get-stream "^3.0.0" + is-stream "^1.1.0" + npm-run-path "^2.0.0" + p-finally "^1.0.0" + signal-exit "^3.0.0" + strip-eof "^1.0.0" + execa@^5.0.0: version "5.1.1" resolved "https://registry.yarnpkg.com/execa/-/execa-5.1.1.tgz#f80ad9cbf4298f7bd1d4c9555c21e93741c411dd" @@ -5542,6 +6822,13 @@ execa@^8.0.0: signal-exit "^4.1.0" strip-final-newline "^3.0.0" +executable@^4.1.0: + version "4.1.1" + resolved "https://registry.yarnpkg.com/executable/-/executable-4.1.1.tgz#41532bff361d3e57af4d763b70582db18f5d133c" + integrity sha512-8iA79xD3uAch729dUG8xaaBBFGaEa0wdD2VkYLFHwlqosEj/jT66AzcreRDSgV7ehnNLBW2WR5jIXwGKjVdTLg== + dependencies: + pify "^2.2.0" + exit@^0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" @@ -5618,6 +6905,21 @@ express@4.18.2, express@^4.17.1, express@^4.17.3: utils-merge "1.0.1" vary "~1.1.2" +ext-list@^2.0.0: + version "2.2.2" + resolved "https://registry.yarnpkg.com/ext-list/-/ext-list-2.2.2.tgz#0b98e64ed82f5acf0f2931babf69212ef52ddd37" + integrity sha512-u+SQgsubraE6zItfVA0tBuCBhfU9ogSRnsvygI7wht9TS510oLkBRXBsqopeUG/GBOIQyKZO9wjTqIu/sf5zFA== + dependencies: + mime-db "^1.28.0" + +ext-name@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/ext-name/-/ext-name-5.0.0.tgz#70781981d183ee15d13993c8822045c506c8f0a6" + integrity sha512-yblEwXAbGv1VQDmow7s38W77hzAgJAO50ztBLMcUyUBfxv1HC+LGwtiEN+Co6LtlqT/5uwVOxsD4TNIilWhwdQ== + dependencies: + ext-list "^2.0.0" + sort-keys-length "^1.0.0" + ext@^1.1.2: version "1.7.0" resolved "https://registry.yarnpkg.com/ext/-/ext-1.7.0.tgz#0ea4383c0103d60e70be99e9a7f11027a33c4f5f" @@ -5646,10 +6948,10 @@ fast-glob@3.2.7: merge2 "^1.3.0" micromatch "^4.0.4" -fast-glob@^3.2.12, fast-glob@^3.2.5, fast-glob@^3.2.7, fast-glob@^3.2.9, fast-glob@^3.3.0: - version "3.3.1" - resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.1.tgz#784b4e897340f3dbbef17413b3f11acf03c874c4" - integrity sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg== +fast-glob@^3.2.12, fast-glob@^3.2.5, fast-glob@^3.2.7, fast-glob@^3.2.9, fast-glob@^3.3.2: + version "3.3.2" + resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.2.tgz#a904501e57cfdd2ffcded45e99a54fef55e46129" + integrity sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow== dependencies: "@nodelib/fs.stat" "^2.0.2" "@nodelib/fs.walk" "^1.2.3" @@ -5757,6 +7059,15 @@ file-loader@^6.2.0: loader-utils "^2.0.0" schema-utils "^3.0.0" +file-type@^17.1.6: + version "17.1.6" + resolved "https://registry.yarnpkg.com/file-type/-/file-type-17.1.6.tgz#18669e0577a4849ef6e73a41f8bdf1ab5ae21023" + integrity sha512-hlDw5Ev+9e883s0pwUsuuYNu4tD7GgpUnOvykjv1Gya0ZIjuKumthDRua90VUn6/nlRKAjcxLUnHNTIUWwWIiw== + dependencies: + readable-web-to-node-stream "^3.0.2" + strtok3 "^7.0.0-alpha.9" + token-types "^5.0.0-alpha.2" + filelist@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/filelist/-/filelist-1.0.4.tgz#f78978a1e944775ff9e62e744424f215e58352b5" @@ -5764,6 +7075,20 @@ filelist@^1.0.4: dependencies: minimatch "^5.0.1" +filename-reserved-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/filename-reserved-regex/-/filename-reserved-regex-3.0.0.tgz#3d5dd6d4e2d73a3fed2ebc4cd0b3448869a081f7" + integrity sha512-hn4cQfU6GOT/7cFHXBqeBg2TbrMBgdD0kcjLhvSQYYwm3s4B6cjvBfb7nBALJLAXqmU5xajSa7X2NnUud/VCdw== + +filenamify@^5.0.2: + version "5.1.1" + resolved "https://registry.yarnpkg.com/filenamify/-/filenamify-5.1.1.tgz#a1ccc5ae678a5e34f578afcb9b72898264d166d2" + integrity sha512-M45CbrJLGACfrPOkrTp3j2EcO9OBkKUYME0eiqOCa7i2poaklU0jhlIaMlr8ijLorT0uLAzrn3qXOp5684CkfA== + dependencies: + filename-reserved-regex "^3.0.0" + strip-outer "^2.0.0" + trim-repeated "^2.0.0" + fill-range@^7.0.1: version "7.0.1" resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" @@ -5812,6 +7137,14 @@ find-up@^4.0.0, find-up@^4.1.0: locate-path "^5.0.0" path-exists "^4.0.0" +find-up@^5.0.0, find-up@~5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" + integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== + dependencies: + locate-path "^6.0.0" + path-exists "^4.0.0" + find-up@^6.3.0: version "6.3.0" resolved "https://registry.yarnpkg.com/find-up/-/find-up-6.3.0.tgz#2abab3d3280b2dc7ac10199ef324c4e002c8c790" @@ -5820,15 +7153,7 @@ find-up@^6.3.0: locate-path "^7.1.0" path-exists "^5.0.0" -find-up@~5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" - integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== - dependencies: - locate-path "^6.0.0" - path-exists "^4.0.0" - -find-versions@^5.1.0: +find-versions@^5.0.0, find-versions@^5.1.0: version "5.1.0" resolved "https://registry.yarnpkg.com/find-versions/-/find-versions-5.1.0.tgz#973f6739ce20f5e439a27eba8542a4b236c8e685" integrity sha512-+iwzCJ7C5v5KgcBuueqVoNiHVoQpwiUK5XFLjf0affFTep+Wcw93tPvmb8tqujDNmzhBDPddnWV/qgWSXgq+Hg== @@ -5836,9 +7161,9 @@ find-versions@^5.1.0: semver-regex "^4.0.5" flat-cache@^3.0.4: - version "3.1.1" - resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.1.1.tgz#a02a15fdec25a8f844ff7cc658f03dd99eb4609b" - integrity sha512-/qM2b3LUIaIgviBQovTLvijfyOQXPtSRnRK26ksj2J7rzPIecePUIpJsZ4T02Qg+xiAEKIs5K8dsHEd+VaKa/Q== + version "3.2.0" + resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.2.0.tgz#2c0c2d5040c99b1632771a9d105725c0115363ee" + integrity sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw== dependencies: flatted "^3.2.9" keyv "^4.5.3" @@ -5978,7 +7303,7 @@ fs-extra@^9.1.0: jsonfile "^6.0.1" universalify "^2.0.0" -fs-minipass@^2.0.0: +fs-minipass@^2.0.0, fs-minipass@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-2.1.0.tgz#7f5036fdbf12c63c169190cbe4199c852271f9fb" integrity sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg== @@ -6012,11 +7337,26 @@ function-bind@^1.1.2: resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c" integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA== +function.prototype.name@^1.1.6: + version "1.1.6" + resolved "https://registry.yarnpkg.com/function.prototype.name/-/function.prototype.name-1.1.6.tgz#cdf315b7d90ee77a4c6ee216c3c3362da07533fd" + integrity sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + functions-have-names "^1.2.3" + functional-red-black-tree@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" integrity sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g== +functions-have-names@^1.2.3: + version "1.2.3" + resolved "https://registry.yarnpkg.com/functions-have-names/-/functions-have-names-1.2.3.tgz#0404fe4ee2ba2f607f0e0ec3c80bae994133b834" + integrity sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ== + gauge@^3.0.0: version "3.0.2" resolved "https://registry.yarnpkg.com/gauge/-/gauge-3.0.2.tgz#03bf4441c044383908bcfa0656ad91803259b395" @@ -6070,7 +7410,7 @@ get-caller-file@^2.0.5: resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== -get-intrinsic@^1.0.2, get-intrinsic@^1.1.3, get-intrinsic@^1.2.1, get-intrinsic@^1.2.2: +get-intrinsic@^1.0.2, get-intrinsic@^1.1.1, get-intrinsic@^1.1.3, get-intrinsic@^1.2.0, get-intrinsic@^1.2.1, get-intrinsic@^1.2.2: version "1.2.2" resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.2.tgz#281b7622971123e1ef4b3c90fd7539306da93f3b" integrity sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA== @@ -6095,6 +7435,18 @@ get-pkg-repo@^4.0.0: through2 "^2.0.0" yargs "^16.2.0" +get-stream@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14" + integrity sha512-GlhdIUuVakc8SJ6kK0zAFbiGzRFzNnY4jUuEbV9UROo4Y+0Ny4fjvcZFVTeDA4odpFyOQzaw6hXukJSq/f28sQ== + +get-stream@^5.1.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.2.0.tgz#4966a1795ee5ace65e706c4b7beb71257d6e22d3" + integrity sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA== + dependencies: + pump "^3.0.0" + get-stream@^6.0.0, get-stream@^6.0.1: version "6.0.1" resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" @@ -6110,6 +7462,14 @@ get-stream@^8.0.1: resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-8.0.1.tgz#def9dfd71742cd7754a7761ed43749a27d02eca2" integrity sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA== +get-symbol-description@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/get-symbol-description/-/get-symbol-description-1.0.0.tgz#7fdb81c900101fbd564dd5f1a30af5aadc1e58d6" + integrity sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.1.1" + get-symbol-from-current-process-h@^1.0.1, get-symbol-from-current-process-h@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/get-symbol-from-current-process-h/-/get-symbol-from-current-process-h-1.0.2.tgz#510af52eaef873f7028854c3377f47f7bb200265" @@ -6222,6 +7582,17 @@ glob@^7.1.3, glob@^7.1.4, glob@^7.1.6: once "^1.3.0" path-is-absolute "^1.0.0" +glob@^8.0.1: + version "8.1.0" + resolved "https://registry.yarnpkg.com/glob/-/glob-8.1.0.tgz#d388f656593ef708ee3e34640fdfb99a9fd1c33e" + integrity sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^5.0.1" + once "^1.3.0" + globals@^11.1.0: version "11.12.0" resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" @@ -6234,7 +7605,14 @@ globals@^13.19.0, globals@^13.6.0: dependencies: type-fest "^0.20.2" -globby@^11.0.0, globby@^11.1.0: +globalthis@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/globalthis/-/globalthis-1.0.3.tgz#5852882a52b80dc301b0660273e1ed082f0b6ccf" + integrity sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA== + dependencies: + define-properties "^1.1.3" + +globby@^11.1.0: version "11.1.0" resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b" integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== @@ -6258,16 +7636,17 @@ globby@^12.0.2: merge2 "^1.4.1" slash "^4.0.0" -globby@^13.1.4: - version "13.2.2" - resolved "https://registry.yarnpkg.com/globby/-/globby-13.2.2.tgz#63b90b1bf68619c2135475cbd4e71e66aa090592" - integrity sha512-Y1zNGV+pzQdh7H39l9zgB4PJqjRNqydvdYCDG4HFXM4XuvSaQQlEc91IU1yALL8gUTDomgBAfz3XJdmUS+oo0w== +globby@^14.0.0: + version "14.0.0" + resolved "https://registry.yarnpkg.com/globby/-/globby-14.0.0.tgz#ea9c062a3614e33f516804e778590fcf055256b9" + integrity sha512-/1WM/LNHRAOH9lZta77uGbq0dAEQM+XjNesWwhlERDVenqothRbnzTrL3/LrIoEPPjeUHC3vrS6TwoyxeHs7MQ== dependencies: - dir-glob "^3.0.1" - fast-glob "^3.3.0" + "@sindresorhus/merge-streams" "^1.0.0" + fast-glob "^3.3.2" ignore "^5.2.4" - merge2 "^1.4.1" - slash "^4.0.0" + path-type "^5.0.0" + slash "^5.1.0" + unicorn-magic "^0.1.0" gopd@^1.0.1: version "1.0.1" @@ -6276,6 +7655,23 @@ gopd@^1.0.1: dependencies: get-intrinsic "^1.1.3" +got@^11.8.5: + version "11.8.6" + resolved "https://registry.yarnpkg.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" + got@^13.0.0: version "13.0.0" resolved "https://registry.yarnpkg.com/got/-/got-13.0.0.tgz#a2402862cef27a5d0d1b07c0fb25d12b58175422" @@ -6335,6 +7731,11 @@ harmony-reflect@^1.4.6: resolved "https://registry.yarnpkg.com/harmony-reflect/-/harmony-reflect-1.6.2.tgz#31ecbd32e648a34d030d86adb67d4d47547fe710" integrity sha512-HIp/n38R9kQjDEziXyDTuW3vvoxxyxjxFzXLrBr18uB47GnSt+G9D29fqrpM5ZkspMcPICud3XsBJQ4Y2URg8g== +has-bigints@^1.0.1, has-bigints@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.0.2.tgz#0871bd3e3d51626f6ca0966668ba35d5602d6eaa" + integrity sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ== + has-flag@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" @@ -6374,6 +7775,11 @@ has-unicode@^2.0.1: resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" integrity sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ== +has@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/has/-/has-1.0.4.tgz#2eb2860e000011dae4f1406a86fe80e530fb2ec6" + integrity sha512-qdSAmqLF6209RFj4VVItywPMbm3vWylknmB3nvNiUIs72xAimcM8nVYxYr7ncvZq5qzk9MKIZR8ijqD/1QuYjQ== + hasown@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.0.tgz#f4c513d454a57b7c7e1650778de226b11700546c" @@ -6381,6 +7787,11 @@ hasown@^2.0.0: dependencies: function-bind "^1.1.2" +he@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" + integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== + hook-std@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/hook-std/-/hook-std-3.0.0.tgz#47038a01981e07ce9d83a6a3b2eb98cad0f7bd58" @@ -6427,7 +7838,14 @@ hpagent@^1.0.0: resolved "https://registry.yarnpkg.com/hpagent/-/hpagent-1.2.0.tgz#0ae417895430eb3770c03443456b8d90ca464903" integrity sha512-A91dYTeIB6NoXG+PxTQpCCDDnfHsW9kc06Lvpu1TEe9gnd6ZFeiBoRO9JvzEv6xK7EX97/dUE8g/vBMTqTS3CA== -html-entities@^2.3.2: +html-encoding-sniffer@^3.0.0: + version "3.0.0" + 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-entities@^2.1.0, html-entities@^2.3.2: version "2.4.0" resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-2.4.0.tgz#edd0cee70402584c8c76cc2c0556db09d1f45061" integrity sha512-igBTJcNNNhvZFRtm8uA6xMY6xYleeDwn3PeBCkDz7tHttv4F2hsDI2aPgNERWzvRcNYHNT3ymRaQzllmXj4YsQ== @@ -6437,7 +7855,7 @@ html-escaper@^2.0.0: resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453" integrity sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg== -http-cache-semantics@^4.1.1: +http-cache-semantics@^4.0.0, http-cache-semantics@^4.1.0, http-cache-semantics@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz#abe02fcb2985460bf0323be664436ec3476a6d5a" integrity sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ== @@ -6510,15 +7928,42 @@ http-proxy@^1.18.1: follow-redirects "^1.0.0" requires-port "^1.0.0" +http-server@^14.1.0: + version "14.1.1" + resolved "https://registry.yarnpkg.com/http-server/-/http-server-14.1.1.tgz#d60fbb37d7c2fdff0f0fbff0d0ee6670bd285e2e" + integrity sha512-+cbxadF40UXd9T01zUHgA+rlo2Bg1Srer4+B4NwIHdaGxAGGv59nYRnGGDJ9LBk7alpS0US+J+bLLdQOOkJq4A== + dependencies: + basic-auth "^2.0.1" + chalk "^4.1.2" + corser "^2.0.1" + he "^1.2.0" + html-encoding-sniffer "^3.0.0" + http-proxy "^1.18.1" + mime "^1.6.0" + minimist "^1.2.6" + opener "^1.5.1" + portfinder "^1.0.28" + secure-compare "3.0.1" + union "~0.5.0" + url-join "^4.0.1" + +http2-wrapper@^1.0.0-beta.5.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/http2-wrapper/-/http2-wrapper-1.0.3.tgz#b8f55e0c1f25d4ebd08b3b0c2c079f9590800b3d" + integrity sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg== + dependencies: + quick-lru "^5.1.1" + resolve-alpn "^1.0.0" + http2-wrapper@^2.1.10: - version "2.2.0" - resolved "https://registry.yarnpkg.com/http2-wrapper/-/http2-wrapper-2.2.0.tgz#b80ad199d216b7d3680195077bd7b9060fa9d7f3" - integrity sha512-kZB0wxMo0sh1PehyjJUWRFEd99KC5TLjZ2cULC4f9iqJBAmKQQXEICjxl5iPJRwP40dpeHFqqhm7tYCvODpqpQ== + 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.2.0" -https-proxy-agent@^5.0.0: +https-proxy-agent@^5.0.0, https-proxy-agent@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz#c59ef224a04fe8b754f3db0063a25ea30d0005d6" integrity sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA== @@ -6563,7 +8008,7 @@ iconv-lite@0.4.24: dependencies: safer-buffer ">= 2.1.2 < 3" -iconv-lite@^0.6.2, iconv-lite@^0.6.3: +iconv-lite@0.6.3, iconv-lite@^0.6.2, iconv-lite@^0.6.3: version "0.6.3" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.6.3.tgz#a52f80bf38da1952eb5c681790719871a1a72501" integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw== @@ -6595,9 +8040,9 @@ ignore-walk@^6.0.0: minimatch "^9.0.0" ignore@^5.0.4, ignore@^5.1.9, ignore@^5.2.0, ignore@^5.2.4: - version "5.2.4" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.4.tgz#a291c0c6178ff1b960befe47fcdec301674a6324" - integrity sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ== + version "5.3.0" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.3.0.tgz#67418ae40d34d6999c95ff56016759c718c82f78" + integrity sha512-g7dmpshy+gD7mh88OC9NwSGTKoc3kyLAZQRU1mt53Aw/vnvfXnbC+F/7F7QoYVKbV+KNvJx8wArewKy1vXMtlg== image-size@~0.5.0: version "0.5.5" @@ -6645,6 +8090,11 @@ indent-string@^5.0.0: resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-5.0.0.tgz#4fd2980fccaf8622d14c64d694f4cf33c81951a5" integrity sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg== +infer-owner@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/infer-owner/-/infer-owner-1.0.4.tgz#c4cefcaa8e51051c2a40ba2ce8a3d27295af9467" + integrity sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A== + inflight@^1.0.4: version "1.0.6" resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" @@ -6686,6 +8136,15 @@ init-package-json@^5.0.0: validate-npm-package-license "^3.0.4" validate-npm-package-name "^5.0.0" +internal-slot@^1.0.4, internal-slot@^1.0.5: + version "1.0.6" + resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.6.tgz#37e756098c4911c5e912b8edbf71ed3aa116f930" + integrity sha512-Xj6dv+PsbtwyPpEflsejS+oIZxmMlV44zAhG479uYu89MsjcYOhCFnNyKrkJrihbsiasQyY0afoCl/9BLR65bg== + dependencies: + get-intrinsic "^1.2.2" + hasown "^2.0.0" + side-channel "^1.0.4" + into-stream@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/into-stream/-/into-stream-7.0.0.tgz#d1a211e146be8acfdb84dabcbf00fe8205e72936" @@ -6721,7 +8180,7 @@ ipaddr.js@^2.0.1: resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-2.1.0.tgz#2119bc447ff8c257753b196fc5f1ce08a4cdf39f" integrity sha512-LlbxQ7xKzfBusov6UMi4MFpEg0m+mAm9xyNGEduwXMEDuf4WfzB/RZwMVYEd7IKGvh4IUkEXYxtAVu9T3OelJQ== -is-arguments@^1.0.4: +is-arguments@^1.0.4, is-arguments@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.1.1.tgz#15b3f88fda01f2a97fec84ca761a560f123efa9b" integrity sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA== @@ -6729,11 +8188,27 @@ is-arguments@^1.0.4: call-bind "^1.0.2" has-tostringtag "^1.0.0" +is-array-buffer@^3.0.1, is-array-buffer@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/is-array-buffer/-/is-array-buffer-3.0.2.tgz#f2653ced8412081638ecb0ebbd0c41c6e0aecbbe" + integrity sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.2.0" + is-typed-array "^1.1.10" + is-arrayish@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" integrity sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg== +is-bigint@^1.0.1: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-bigint/-/is-bigint-1.0.4.tgz#08147a1875bc2b32005d41ccd8291dffc6691df3" + integrity sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg== + dependencies: + has-bigints "^1.0.1" + is-binary-path@~2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" @@ -6741,7 +8216,15 @@ is-binary-path@~2.1.0: dependencies: binary-extensions "^2.0.0" -is-callable@^1.1.3: +is-boolean-object@^1.1.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.1.2.tgz#5c6dc200246dd9321ae4b885a114bb1f75f63719" + integrity sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA== + dependencies: + call-bind "^1.0.2" + has-tostringtag "^1.0.0" + +is-callable@^1.1.3, is-callable@^1.1.4, is-callable@^1.2.7: version "1.2.7" resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.7.tgz#3bc2a85ea742d9e36205dcacdd72ca1fdc51b055" integrity sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA== @@ -6753,13 +8236,20 @@ is-cidr@^4.0.2: dependencies: cidr-regex "^3.1.1" -is-core-module@^2.13.0, is-core-module@^2.5.0, is-core-module@^2.8.1: +is-core-module@^2.11.0, is-core-module@^2.13.0, is-core-module@^2.5.0, is-core-module@^2.8.1: version "2.13.1" resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.13.1.tgz#ad0d7532c6fea9da1ebdc82742d74525c6273384" integrity sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw== dependencies: hasown "^2.0.0" +is-date-object@^1.0.1, is-date-object@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.5.tgz#0841d5536e724c25597bf6ea62e1bd38298df31f" + integrity sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ== + dependencies: + has-tostringtag "^1.0.0" + is-docker@^2.0.0, is-docker@^2.1.1: version "2.2.1" resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-2.2.1.tgz#33eeabe23cfe86f14bde4408a02c0cfb853acdaa" @@ -6804,6 +8294,23 @@ is-lambda@^1.0.1: resolved "https://registry.yarnpkg.com/is-lambda/-/is-lambda-1.0.1.tgz#3d9877899e6a53efc0160504cde15f82e6f061d5" integrity sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ== +is-map@^2.0.1, is-map@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/is-map/-/is-map-2.0.2.tgz#00922db8c9bf73e81b7a335827bc2a43f2b91127" + integrity sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg== + +is-negative-zero@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.2.tgz#7bf6f03a28003b8b3965de3ac26f664d765f3150" + integrity sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA== + +is-number-object@^1.0.4: + version "1.0.7" + resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.7.tgz#59d50ada4c45251784e9904f5246c742f07a42fc" + integrity sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ== + dependencies: + has-tostringtag "^1.0.0" + is-number@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" @@ -6814,7 +8321,7 @@ is-obj@^2.0.0: resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-2.0.0.tgz#473fb05d973705e3fd9620545018ca8e22ef4982" integrity sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w== -is-plain-obj@^1.1.0: +is-plain-obj@^1.0.0, is-plain-obj@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" integrity sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg== @@ -6824,10 +8331,35 @@ is-plain-obj@^3.0.0: resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-3.0.0.tgz#af6f2ea14ac5a646183a5bbdb5baabbc156ad9d7" integrity sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA== -is-plain-object@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-5.0.0.tgz#4427f50ab3429e9025ea7d52e9043a9ef4159344" - integrity sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q== +is-potential-custom-element-name@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz#171ed6f19e3ac554394edf78caa05784a45bebb5" + integrity sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ== + +is-regex@^1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.4.tgz#eef5663cd59fa4c0ae339505323df6854bb15958" + integrity sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg== + dependencies: + call-bind "^1.0.2" + has-tostringtag "^1.0.0" + +is-set@^2.0.1, is-set@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/is-set/-/is-set-2.0.2.tgz#90755fa4c2562dc1c5d4024760d6119b94ca18ec" + integrity sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g== + +is-shared-array-buffer@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.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" + +is-stream@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" + integrity sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ== is-stream@^2.0.0: version "2.0.1" @@ -6839,6 +8371,20 @@ is-stream@^3.0.0: resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-3.0.0.tgz#e6bfd7aa6bef69f4f472ce9bb681e3e57b4319ac" integrity sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA== +is-string@^1.0.5, is-string@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.7.tgz#0dd12bf2006f255bb58f695110eff7491eebc0fd" + integrity sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg== + dependencies: + has-tostringtag "^1.0.0" + +is-symbol@^1.0.2, is-symbol@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.4.tgz#a6dac93b635b063ca6872236de88910a57af139c" + integrity sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg== + dependencies: + has-symbols "^1.0.2" + is-text-path@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/is-text-path/-/is-text-path-1.0.1.tgz#4e1aa0fb51bfbcb3e92688001397202c1775b66e" @@ -6853,7 +8399,7 @@ is-text-path@^2.0.0: dependencies: text-extensions "^2.0.0" -is-typed-array@^1.1.3: +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" resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.12.tgz#d0bab5686ef4a76f7a73097b95470ab199c57d4a" integrity sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg== @@ -6870,6 +8416,26 @@ is-unicode-supported@^1.2.0: resolved "https://registry.yarnpkg.com/is-unicode-supported/-/is-unicode-supported-1.3.0.tgz#d824984b616c292a2e198207d4a609983842f714" integrity sha512-43r2mRvz+8JRIKnWJ+3j8JtjRKZ6GmjzfaE/qiBJnikNnYv/6bagRJ1kUhNk8R5EX/GkobD+r+sfxCPJsiKBLQ== +is-weakmap@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/is-weakmap/-/is-weakmap-2.0.1.tgz#5008b59bdc43b698201d18f62b37b2ca243e8cf2" + integrity sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA== + +is-weakref@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-weakref/-/is-weakref-1.0.2.tgz#9529f383a9338205e89765e0392efc2f100f06f2" + integrity sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ== + dependencies: + call-bind "^1.0.2" + +is-weakset@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/is-weakset/-/is-weakset-2.0.2.tgz#4569d67a747a1ce5a994dfd4ef6dcea76e7c0a1d" + integrity sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.1.1" + is-what@^3.14.1: version "3.14.1" resolved "https://registry.yarnpkg.com/is-what/-/is-what-3.14.1.tgz#e1222f46ddda85dead0fd1c9df131760e77755c1" @@ -6882,6 +8448,11 @@ is-wsl@^2.2.0: dependencies: is-docker "^2.0.0" +isarray@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.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.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" @@ -6927,9 +8498,9 @@ issue-parser@^6.0.0: lodash.uniqby "^4.7.0" istanbul-lib-coverage@^3.0.0, istanbul-lib-coverage@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz#189e7909d0a39fa5a3dfad5b03f71947770191d3" - integrity sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw== + version "3.2.2" + 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" @@ -7088,7 +8659,7 @@ jest-config@^29.4.1, jest-config@^29.7.0: slash "^3.0.0" strip-json-comments "^3.1.1" -jest-diff@^29.7.0: +jest-diff@^29.4.1, jest-diff@^29.7.0: version "29.7.0" resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-29.7.0.tgz#017934a66ebb7ecf6f205e84699be10afd70458a" integrity sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw== @@ -7114,7 +8685,21 @@ jest-each@^29.7.0: chalk "^4.0.0" jest-get-type "^29.6.3" jest-util "^29.7.0" - pretty-format "^29.7.0" + pretty-format "^29.7.0" + +jest-environment-jsdom@^29.4.1: + version "29.7.0" + 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" + "@jest/fake-timers" "^29.7.0" + "@jest/types" "^29.6.3" + "@types/jsdom" "^20.0.0" + "@types/node" "*" + jest-mock "^29.7.0" + jest-util "^29.7.0" + jsdom "^20.0.0" jest-environment-node@^29.4.1, jest-environment-node@^29.7.0: version "29.7.0" @@ -7346,7 +8931,7 @@ jest-watcher@^29.7.0: jest-util "^29.7.0" string-length "^4.0.1" -jest-worker@^27.0.2, jest-worker@^27.4.5: +jest-worker@^27.4.5: version "27.5.1" resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-27.5.1.tgz#8d146f0900e8973b106b6f73cc1e9a8cb86f8db0" integrity sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg== @@ -7355,7 +8940,7 @@ jest-worker@^27.0.2, jest-worker@^27.4.5: merge-stream "^2.0.0" supports-color "^8.0.0" -jest-worker@^29.7.0: +jest-worker@^29.4.3, jest-worker@^29.7.0: version "29.7.0" resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-29.7.0.tgz#acad073acbbaeb7262bd5389e1bcf43e10058d4a" integrity sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw== @@ -7406,6 +8991,38 @@ js-yaml@^3.10.0, js-yaml@^3.13.1: argparse "^1.0.7" esprima "^4.0.0" +jsdom@^20.0.0: + version "20.0.3" + resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-20.0.3.tgz#886a41ba1d4726f67a8858028c99489fed6ad4db" + integrity sha512-SYhBvTh89tTfCD/CRdSOm13mOBa42iTaTyfyEWBdKcGdPxPtLFBXuHR8XHb33YNYaP+lLbmSvBTsnoesCNJEsQ== + dependencies: + abab "^2.0.6" + acorn "^8.8.1" + acorn-globals "^7.0.0" + cssom "^0.5.0" + cssstyle "^2.3.0" + data-urls "^3.0.2" + decimal.js "^10.4.2" + domexception "^4.0.0" + escodegen "^2.0.0" + form-data "^4.0.0" + html-encoding-sniffer "^3.0.0" + http-proxy-agent "^5.0.0" + https-proxy-agent "^5.0.1" + is-potential-custom-element-name "^1.0.1" + nwsapi "^2.2.2" + parse5 "^7.1.1" + saxes "^6.0.0" + symbol-tree "^3.2.4" + tough-cookie "^4.1.2" + w3c-xmlserializer "^4.0.0" + webidl-conversions "^7.0.0" + whatwg-encoding "^2.0.0" + whatwg-mimetype "^3.0.0" + whatwg-url "^11.0.0" + ws "^8.11.0" + xml-name-validator "^4.0.0" + jsesc@^2.5.1: version "2.5.2" resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" @@ -7475,11 +9092,35 @@ json-text-sequence@~0.3.0: dependencies: "@sovpro/delimited-stream" "^1.1.0" +json2mq@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/json2mq/-/json2mq-0.2.0.tgz#b637bd3ba9eabe122c83e9720483aeb10d2c904a" + integrity sha512-SzoRg7ux5DWTII9J2qkrZrqV1gt+rTaoufMxEzXbS26Uid0NwaJd123HcoB80TgubEppxxIGdNxCx50fEoEWQA== + dependencies: + string-convert "^0.2.0" + +json5@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.2.tgz#63d98d60f21b313b77c4d6da18bfa69d80e1d593" + integrity sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA== + dependencies: + minimist "^1.2.0" + json5@^2.1.2, json5@^2.2.2, json5@^2.2.3: version "2.2.3" resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283" integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== +jsonc-eslint-parser@^2.1.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/jsonc-eslint-parser/-/jsonc-eslint-parser-2.4.0.tgz#74ded53f9d716e8d0671bd167bf5391f452d5461" + integrity sha512-WYDyuc/uFcGp6YtM2H0uKmUwieOuzeE/5YocFJLnLfclZ4inf3mRn8ZVy1s7Hxji7Jxm6Ss8gqpexD/GlKoGgg== + dependencies: + acorn "^8.5.0" + eslint-visitor-keys "^3.0.0" + espree "^9.0.0" + semver "^7.3.5" + jsonc-parser@3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/jsonc-parser/-/jsonc-parser-3.2.0.tgz#31ff3f4c2b9793f89c67212627c51c6394f88e76" @@ -7499,6 +9140,16 @@ jsonparse@^1.2.0, jsonparse@^1.3.1: resolved "https://registry.yarnpkg.com/jsonparse/-/jsonparse-1.3.1.tgz#3f4dae4a91fac315f71062f8521cc239f1366280" integrity sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg== +"jsx-ast-utils@^2.4.1 || ^3.0.0", jsx-ast-utils@^3.3.3: + version "3.3.5" + resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz#4766bd05a8e2a11af222becd19e15575e52a853a" + integrity sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ== + dependencies: + array-includes "^3.1.6" + array.prototype.flat "^1.3.1" + object.assign "^4.1.4" + object.values "^1.1.6" + just-diff-apply@^5.2.0: version "5.5.0" resolved "https://registry.yarnpkg.com/just-diff-apply/-/just-diff-apply-5.5.0.tgz#771c2ca9fa69f3d2b54e7c3f5c1dfcbcc47f9f0f" @@ -7509,7 +9160,7 @@ just-diff@^6.0.0: resolved "https://registry.yarnpkg.com/just-diff/-/just-diff-6.0.2.tgz#03b65908543ac0521caf6d8eb85035f7d27ea285" integrity sha512-S59eriX5u3/QhMNq3v/gm8Kd0w8OS6Tz2FS1NG4blv+z0MuQcBRJyFWjdovM0Rad4/P4aUPFtnkNjMjyMlMSYA== -keyv@^4.5.3: +keyv@^4.0.0, keyv@^4.5.3: version "4.5.4" resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.5.4.tgz#a879a99e29452f942439f2a405e3af8b31d4de93" integrity sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw== @@ -7544,6 +9195,18 @@ ky@^0.25.1: resolved "https://registry.yarnpkg.com/ky/-/ky-0.25.1.tgz#0df0bd872a9cc57e31acd5dbc1443547c881bfbc" integrity sha512-PjpCEWlIU7VpiMVrTwssahkYXX1by6NCT0fhTUX34F3DTinARlgMpriuroolugFPcMgpPWrOW4mTb984Qm1RXA== +language-subtag-registry@~0.3.2: + version "0.3.22" + resolved "https://registry.yarnpkg.com/language-subtag-registry/-/language-subtag-registry-0.3.22.tgz#2e1500861b2e457eba7e7ae86877cbd08fa1fd1d" + integrity sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w== + +language-tags@=1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/language-tags/-/language-tags-1.0.5.tgz#d321dbc4da30ba8bf3024e040fa5c14661f9193a" + integrity sha512-qJhlO9cGXi6hBGKoxEG/sKZDAHD5Hnu9Hs4WbOY3pCWXDhw0N8x1NenNzm2EnNLkLkk7J2SdxAkDSbb6ftT+UQ== + dependencies: + language-subtag-registry "~0.3.2" + launch-editor@^2.6.0: version "2.6.1" resolved "https://registry.yarnpkg.com/launch-editor/-/launch-editor-2.6.1.tgz#f259c9ef95cbc9425620bbbd14b468fcdb4ffe3c" @@ -7662,10 +9325,10 @@ libnpmpack@^5.0.20: npm-package-arg "^10.1.0" pacote "^15.0.8" -libnpmpublish@^7.5.0: - version "7.5.0" - resolved "https://registry.yarnpkg.com/libnpmpublish/-/libnpmpublish-7.5.0.tgz#a118c8fdc680947c960648ed8b4c94d15e42e0ab" - integrity sha512-zctH6QcTJ093lpxmkufr2zr3AJ9V90hcRilDFNin6n91ODj+S28RdyMFFJpa9NwyztmyV2hlWLyZv0GaOQBDyA== +libnpmpublish@^7.5.1: + version "7.5.1" + resolved "https://registry.yarnpkg.com/libnpmpublish/-/libnpmpublish-7.5.1.tgz#80f0b5d30210156af7a1b98b1a7bff06bd868684" + integrity sha512-z/7HYMtuRrNgcftrI9ILXezZWHYHG0RaIZFfUvcLktE75vrScE3zOO+qvAbvQodQi4YvYoOGF1ySQ8tdbDCYQQ== dependencies: ci-info "^3.6.1" normalize-package-data "^5.0.0" @@ -7703,9 +9366,9 @@ libnpmversion@^4.0.2: semver "^7.3.7" libphonenumber-js@^1.10.14: - version "1.10.48" - resolved "https://registry.yarnpkg.com/libphonenumber-js/-/libphonenumber-js-1.10.48.tgz#3c426b4aa21dfe3210bfbda47d208acffa3631bf" - integrity sha512-Vvcgt4+o8+puIBJZLdMshPYx9nRN3/kTT7HPtOyfYrSQuN9PGBF1KUv0g07fjNzt4E4GuA7FnsLb+WeAMzyRQg== + version "1.10.51" + resolved "https://registry.yarnpkg.com/libphonenumber-js/-/libphonenumber-js-1.10.51.tgz#a3b8c15db2721c3e5f7fe6759e2a524712b578e6" + integrity sha512-vY2I+rQwrDQzoPds0JeTEpeWzbUJgqoV0O4v31PauHBb/e+1KCXKylHcDnBMgJZ9fH9mErsEbROJY3Z3JtqEmg== license-webpack-plugin@^4.0.2: version "4.0.2" @@ -7714,7 +9377,7 @@ license-webpack-plugin@^4.0.2: dependencies: webpack-sources "^3.0.0" -lilconfig@^2.0.3: +lilconfig@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-2.1.0.tgz#78e23ac89ebb7e1bfbf25b18043de756548e7f52" integrity sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ== @@ -7725,9 +9388,9 @@ lines-and-columns@^1.1.6: integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== lines-and-columns@^2.0.3, lines-and-columns@~2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-2.0.3.tgz#b2f0badedb556b747020ab8ea7f0373e22efac1b" - integrity sha512-cNOjgCnLB+FnvWWtyRTzmB3POJ+cXxTA81LoW7u8JdmhfXzriropYwpjShnz1QLLWsQwY7nIxoDmcPTwphDK9w== + version "2.0.4" + resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-2.0.4.tgz#d00318855905d2660d8c0822e3f5a4715855fc42" + integrity sha512-wM1+Z03eypVAVUCE7QdSqpVIvelbOakn1M0bPDoA4SGWPx3sNDVUiMo3L6To6WWGClB7VyXnhQ4Sn7gxiJbE6A== load-json-file@^4.0.0: version "4.0.0" @@ -7744,7 +9407,7 @@ loader-runner@^4.2.0: resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-4.3.0.tgz#c1b4a163b99f614830353b16755e7149ac2314e1" integrity sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg== -loader-utils@^2.0.0, loader-utils@^2.0.3: +loader-utils@^2.0.0, loader-utils@^2.0.3, loader-utils@^2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-2.0.4.tgz#8b5cb38b5c34a9a018ee1fc0e6a066d1dfcc528c" integrity sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw== @@ -7837,12 +9500,12 @@ lodash.uniqby@^4.7.0: resolved "https://registry.yarnpkg.com/lodash.uniqby/-/lodash.uniqby-4.7.0.tgz#d99c07a669e9e6d24e1362dfe266c67616af1302" integrity sha512-e/zcLx6CSbmaEgFHCA7BnoQKyCtKMxnuWrJygbwPs/AIn+IMKl66L8/s+wBUn5LRw2pZx3bUHibiV1b6aTWIww== -lodash@4.17.21, lodash@^4.17.15, lodash@^4.17.21, lodash@^4.17.4: +lodash@4.17.21, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.21, lodash@^4.17.4: version "4.17.21" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== -log-symbols@^4.1.0: +log-symbols@^4.0.0, log-symbols@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-4.1.0.tgz#3fbdbb95b4683ac9fc785111e792e558d4abd503" integrity sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg== @@ -7850,22 +9513,42 @@ log-symbols@^4.1.0: chalk "^4.1.0" is-unicode-supported "^0.1.0" -loose-envify@^1.0.0: +loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== dependencies: js-tokens "^3.0.0 || ^4.0.0" +lower-case@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-2.0.2.tgz#6fa237c63dbdc4a82ca0fd882e4722dc5e634e28" + integrity sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg== + dependencies: + tslib "^2.0.3" + +lowercase-keys@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-2.0.0.tgz#2603e78b7b4b0006cbca2fbcc8a3202558ac9479" + integrity sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA== + lowercase-keys@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-3.0.0.tgz#c5e7d442e37ead247ae9db117a9d0a467c89d4f2" integrity sha512-ozCC6gdQ+glXOQsveKD0YsDy8DSQFjDTz4zyzEHNV5+JP5D62LmfDZ6o1cycFx9ouG940M5dE8C8CTewdj2YWQ== lru-cache@^10.0.1, "lru-cache@^9.1.1 || ^10.0.0": - version "10.0.1" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-10.0.1.tgz#0a3be479df549cca0e5d693ac402ff19537a6b7a" - integrity sha512-IJ4uwUTi2qCccrioU6g9g/5rvvVl13bsdczUUcqbciD9iLr095yj8DQKdObriEvuNSx325N1rV1O0sJFszx75g== + version "10.1.0" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-10.1.0.tgz#2098d41c2dc56500e6c88584aa656c84de7d0484" + integrity sha512-/1clY/ui8CzjKFyjdvwPWJUYKiFVXG2I2cY0ssG7h4+hwk+XOIX7ZSG9Q7TW8TW3Kp3BUSqgFWBLgL4PJ+Blag== + +lru-cache@^4.0.1: + version "4.1.5" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.5.tgz#8bbe50ea85bed59bc9e33dcab8235ee9bcf443cd" + integrity sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g== + dependencies: + pseudomap "^1.0.2" + yallist "^2.1.2" lru-cache@^5.1.1: version "5.1.1" @@ -7892,9 +9575,14 @@ lru_map@^0.4.1: integrity sha512-I+lBvqMMFfqaV8CJCISjI3wbjmwVu/VyOoU7+qtu9d7ioW5klMgsTTiUOUp+DJvfTTzKXoPbyC6YfgkNcyPSOg== luxon@^3.3.0: - version "3.4.3" - resolved "https://registry.yarnpkg.com/luxon/-/luxon-3.4.3.tgz#8ddf0358a9492267ffec6a13675fbaab5551315d" - integrity sha512-tFWBiv3h7z+T/tDaoxA8rqTxy1CHV6gHS//QdaH4pulbq/JuBSGgQspQQqcgnwdAx6pNI7cmvz5Sv/addzHmUg== + version "3.4.4" + resolved "https://registry.yarnpkg.com/luxon/-/luxon-3.4.4.tgz#cf20dc27dc532ba41a169c43fdcc0063601577af" + integrity sha512-zobTr7akeGHnv7eBOXcRgMeCP6+uyYsczwmeRCauvpvaAltgNyTbLH/+VaEAPUeWBT+1GuNmz4wC/6jtQzbbVA== + +lz-string@^1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/lz-string/-/lz-string-1.5.0.tgz#c1ab50f77887b712621201ba9fd4e3a6ed099941" + integrity sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ== magic-string@0.30.0: version "0.30.0" @@ -7930,7 +9618,29 @@ make-error@1.x, make-error@^1.1.1, make-error@^1.3.6: resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2" integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== -make-fetch-happen@^11.0.0, make-fetch-happen@^11.0.1, make-fetch-happen@^11.0.3, make-fetch-happen@^11.1.1: +make-fetch-happen@^10.0.3: + version "10.2.1" + resolved "https://registry.yarnpkg.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.yarnpkg.com/make-fetch-happen/-/make-fetch-happen-11.1.1.tgz#85ceb98079584a9523d4bf71d32996e7e208549f" integrity sha512-rLWS7GCSTcEujjVBs2YqG7Y4643u8ucvCJeSRqiLYhesrDuzeuFIk37xREzAsfQaqzl8b9rNCE4m6J8tvX4Q8w== @@ -7985,10 +9695,15 @@ marked@^5.0.0: resolved "https://registry.yarnpkg.com/marked/-/marked-5.1.2.tgz#62b5ccfc75adf72ca3b64b2879b551d89e77677f" integrity sha512-ahRPGXJpjMjwSOlBoTMZAK7ATXkli5qCPxZ21TG44rx1KEo44bii4ekgTDQPNRQ4Kh7JMb9Ub1PVk1NxRSsorg== -mdn-data@2.0.14: - version "2.0.14" - resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.14.tgz#7113fc4281917d63ce29b43446f701e68c25ba50" - integrity sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow== +mdn-data@2.0.28: + version "2.0.28" + resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.28.tgz#5ec48e7bef120654539069e1ae4ddc81ca490eba" + integrity sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g== + +mdn-data@2.0.30: + version "2.0.30" + resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.30.tgz#ce4df6f80af6cfbe218ecd5c552ba13c4dfa08cc" + integrity sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA== media-typer@0.3.0: version "0.3.0" @@ -8052,7 +9767,7 @@ micromatch@^4.0.0, micromatch@^4.0.2, micromatch@^4.0.4: braces "^3.0.2" picomatch "^2.3.1" -mime-db@1.52.0, "mime-db@>= 1.43.0 < 2": +mime-db@1.52.0, "mime-db@>= 1.43.0 < 2", mime-db@^1.28.0: version "1.52.0" resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== @@ -8064,7 +9779,7 @@ mime-types@^2.1.12, mime-types@^2.1.27, mime-types@^2.1.31, mime-types@~2.1.17, dependencies: mime-db "1.52.0" -mime@1.6.0, mime@^1.4.1: +mime@1.6.0, mime@^1.4.1, mime@^1.6.0: version "1.6.0" resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== @@ -8084,6 +9799,11 @@ mimic-fn@^4.0.0: resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-4.0.0.tgz#60a90550d5cb0b239cca65d893b1a53b29871ecc" integrity sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw== +mimic-response@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.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.yarnpkg.com/mimic-response/-/mimic-response-3.1.0.tgz#2d1d59af9c1b129815accc2c46a022a5ce1fa3c9" @@ -8160,6 +9880,17 @@ minipass-collect@^1.0.2: dependencies: minipass "^3.0.0" +minipass-fetch@^2.0.3: + version "2.1.2" + resolved "https://registry.yarnpkg.com/minipass-fetch/-/minipass-fetch-2.1.2.tgz#95560b50c472d81a3bc76f20ede80eaed76d8add" + integrity sha512-LT49Zi2/WMROHYoqGgdlQIZh8mLPZmOrN2NdJjMXxYe4nkN6FUyuPuOAOedNJDrx0IRGg9+4guZewtp8hE6TxA== + dependencies: + minipass "^3.1.6" + minipass-sized "^1.0.3" + minizlib "^2.1.2" + optionalDependencies: + encoding "^0.1.13" + minipass-fetch@^3.0.0: version "3.0.4" resolved "https://registry.yarnpkg.com/minipass-fetch/-/minipass-fetch-3.0.4.tgz#4d4d9b9f34053af6c6e597a64be8e66e42bf45b7" @@ -8200,7 +9931,7 @@ minipass-sized@^1.0.3: dependencies: minipass "^3.0.0" -minipass@^3.0.0: +minipass@^3.0.0, minipass@^3.1.1, minipass@^3.1.6: version "3.3.6" resolved "https://registry.yarnpkg.com/minipass/-/minipass-3.3.6.tgz#7bba384db3a1520d18c9c0e5251c3444e95dd94a" integrity sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw== @@ -8225,18 +9956,37 @@ minizlib@^2.1.1, minizlib@^2.1.2: minipass "^3.0.0" yallist "^4.0.0" -mkdirp@^0.5.4: +mkdirp@^0.5.4, mkdirp@^0.5.6: version "0.5.6" resolved "https://registry.yarnpkg.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, mkdirp@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== +mobx-react-lite@^4.0.4: + version "4.0.5" + resolved "https://registry.yarnpkg.com/mobx-react-lite/-/mobx-react-lite-4.0.5.tgz#e2cb98f813e118917bcc463638f5bf6ea053a67b" + integrity sha512-StfB2wxE8imKj1f6T8WWPf4lVMx3cYH9Iy60bbKXEs21+HQ4tvvfIBZfSmMXgQAefi8xYEwQIz4GN9s0d2h7dg== + dependencies: + use-sync-external-store "^1.2.0" + +mobx-react@^9.0.1: + version "9.1.0" + resolved "https://registry.yarnpkg.com/mobx-react/-/mobx-react-9.1.0.tgz#5e54919ca27ffad5f2c0d835148a1f681cebdbc1" + integrity sha512-DeDRTYw4AlgHw8xEXtiZdKKEnp+c5/jeUgTbTQXEqnAzfkrgYRWP3p3Nv3Whc2CEcM/mDycbDWGjxKokQdlffg== + dependencies: + mobx-react-lite "^4.0.4" + +mobx@^6.10.2: + version "6.12.0" + resolved "https://registry.yarnpkg.com/mobx/-/mobx-6.12.0.tgz#72b2685ca5af031aaa49e77a4d76ed67fcbf9135" + integrity sha512-Mn6CN6meXEnMa0a5u6a5+RKrqRedHBhZGd15AWLk9O6uFY4KYHzImdt8JI8WODo1bjTSRnwXhJox+FCUZhCKCQ== + modify-values@^1.0.0, modify-values@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/modify-values/-/modify-values-1.0.1.tgz#b3939fa605546474e3e3e3c63d64bd43b4ee6022" @@ -8289,14 +10039,14 @@ mute-stream@~1.0.0: integrity sha512-avsJQhyd+680gKXyG/sQc0nXaC6rBkPOfyHYcFb9+hdkqQkR9bdnkJ0AMZhke0oesPqIO+mFFJ+IdBc7mst4IA== nanoid@^3.3.6: - version "3.3.6" - resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.6.tgz#443380c856d6e9f9824267d960b4236ad583ea4c" - integrity sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA== + version "3.3.7" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.7.tgz#d0c301a691bc8d54efa0a2226ccf3fe2fd656bd8" + integrity sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g== nats@^2.14.0: - version "2.17.0" - resolved "https://registry.yarnpkg.com/nats/-/nats-2.17.0.tgz#1f6ffa5d89bb8ea4549e205f42601dbf66c4561e" - integrity sha512-749TtweWL6bc9R9yNra4a+tuk8J0bqurxcPV/9R2D+WPTplY4PPde/LPSXspqR/eCCTxiM80/AjVlfboEafRxA== + version "2.18.0" + resolved "https://registry.yarnpkg.com/nats/-/nats-2.18.0.tgz#a82b263ed71be0f8518af4313e2339055e5d946b" + integrity sha512-zZF004ejzf67Za0Tva+xphxoxBMNc5IMLqbZ7Ho0j9TMuisjpo+qCd1EktXRCLNxmrZ8O6Tbm1dBsZYNF6yR1A== dependencies: nkeys.js "1.0.5" @@ -8346,6 +10096,14 @@ nkeys.js@1.0.5: dependencies: tweetnacl "1.0.3" +no-case@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/no-case/-/no-case-3.0.4.tgz#d361fd5c9800f558551a8369fc0dcd4662b6124d" + integrity sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg== + dependencies: + lower-case "^2.0.2" + tslib "^2.0.3" + node-abort-controller@^3.0.1: version "3.1.1" resolved "https://registry.yarnpkg.com/node-abort-controller/-/node-abort-controller-3.1.1.tgz#a94377e964a9a37ac3976d848cb5c765833b8548" @@ -8391,20 +10149,20 @@ node-forge@^1: integrity sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA== node-gyp-build@^4.2.1, node-gyp-build@^4.3.0: - version "4.6.1" - resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-4.6.1.tgz#24b6d075e5e391b8d5539d98c7fc5c210cac8a3e" - integrity sha512-24vnklJmyRS8ViBNI8KbtK/r/DmXQMRiOMXTNz2nrTnAYUwjmEEbnnpB/+kt+yWRv73bPsSPRFddrcIbAxSiMQ== + version "4.7.1" + resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-4.7.1.tgz#cd7d2eb48e594874053150a9418ac85af83ca8f7" + integrity sha512-wTSrZ+8lsRRa3I3H8Xr65dLWSgCvY2l4AOnaeKdPA9TB/WYMPaTcrzf3rXvFoVvjKNVnu0CcWSx54qq9GKRUYg== node-gyp@^9.0.0, node-gyp@^9.4.0: - version "9.4.0" - resolved "https://registry.yarnpkg.com/node-gyp/-/node-gyp-9.4.0.tgz#2a7a91c7cba4eccfd95e949369f27c9ba704f369" - integrity sha512-dMXsYP6gc9rRbejLXmTbVRYjAHw7ppswsKyMxuxJxxOHzluIO1rGp9TOQgjFJ+2MCqcOcQTOPB/8Xwhr+7s4Eg== + version "9.4.1" + resolved "https://registry.yarnpkg.com/node-gyp/-/node-gyp-9.4.1.tgz#8a1023e0d6766ecb52764cc3a734b36ff275e185" + integrity sha512-OQkWKbjQKbGkMf/xqI1jjy3oCTgMKJac58G2+bjZb3fza6gW2YrCSdMQYaoTb70crvE//Gngr4f0AgVHmqHvBQ== dependencies: env-paths "^2.2.0" exponential-backoff "^3.1.1" glob "^7.1.4" graceful-fs "^4.2.6" - make-fetch-happen "^11.0.3" + make-fetch-happen "^10.0.3" nopt "^6.0.0" npmlog "^6.0.0" rimraf "^3.0.2" @@ -8417,6 +10175,11 @@ node-int64@^0.4.0: resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" integrity sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw== +node-machine-id@1.1.12: + version "1.1.12" + resolved "https://registry.yarnpkg.com/node-machine-id/-/node-machine-id-1.1.12.tgz#37904eee1e59b320bb9c5d6c0a59f3b469cb6267" + integrity sha512-QNABxbrPa3qEIfrE6GOJ7BYIuignnJw7iQ2YPbc3Nla1HzRJjXzZOiikfF8m7eAMfichLt3M4VgLOetqgDmgGQ== + node-releases@^2.0.13: version "2.0.13" resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.13.tgz#d5ed1627c23e3461e819b02e57b75e4899b1c81d" @@ -8503,6 +10266,11 @@ normalize-url@^8.0.0: resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-8.0.0.tgz#593dbd284f743e8dcf6a5ddf8fadff149c82701a" integrity sha512-uVFpKhj5MheNBJRTiMZ9pE/7hD1QTeEvugSJW/OmLzAp78PB5O6adfMNTvmfKhXBkvCzC+rqifWcVYpGFwTjnw== +normalize.css@^8.0.1: + version "8.0.1" + resolved "https://registry.yarnpkg.com/normalize.css/-/normalize.css-8.0.1.tgz#9b98a208738b9cc2634caacbc42d131c97487bf3" + integrity sha512-qizSNPO93t1YUuUhP22btGOo3chcvDFqFaj2TRybP0DMxkHOCTYwp3n34fel4a31ORXy4m1Xq0Gyqpb5m33qIg== + npm-audit-report@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/npm-audit-report/-/npm-audit-report-5.0.0.tgz#83ac14aeff249484bde81eff53c3771d5048cf95" @@ -8527,6 +10295,16 @@ npm-normalize-package-bin@^3.0.0: resolved "https://registry.yarnpkg.com/npm-normalize-package-bin/-/npm-normalize-package-bin-3.0.1.tgz#25447e32a9a7de1f51362c61a559233b89947832" integrity sha512-dMxCf+zZ+3zeQZXKxmyuCKlIDPGuv8EF940xbkC4kQVDTtqoh6rJFO+JTKSA6/Rwi0getWmtuy4Itup0AMcaDQ== +npm-package-arg@11.0.1: + version "11.0.1" + resolved "https://registry.yarnpkg.com/npm-package-arg/-/npm-package-arg-11.0.1.tgz#f208b0022c29240a1c532a449bdde3f0a4708ebc" + integrity sha512-M7s1BD4NxdAvBKUPqqRW957Xwcl/4Zvo8Aj+ANrzvIPzGJZElrH7Z//rSaec2ORcND6FHHLnZeY8qgTpXDMFQQ== + dependencies: + hosted-git-info "^7.0.0" + proc-log "^3.0.0" + semver "^7.3.5" + validate-npm-package-name "^5.0.0" + npm-package-arg@^10.0.0, npm-package-arg@^10.1.0: version "10.1.0" resolved "https://registry.yarnpkg.com/npm-package-arg/-/npm-package-arg-10.1.0.tgz#827d1260a683806685d17193073cc152d3c7e9b1" @@ -8575,6 +10353,13 @@ npm-registry-fetch@^14.0.0, npm-registry-fetch@^14.0.3, npm-registry-fetch@^14.0 npm-package-arg "^10.0.0" proc-log "^3.0.0" +npm-run-path@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" + integrity sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw== + dependencies: + path-key "^2.0.0" + npm-run-path@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea" @@ -8595,9 +10380,9 @@ npm-user-validate@^2.0.0: integrity sha512-sSWeqAYJ2dUPStJB+AEj0DyLRltr/f6YNcvCA7phkB8/RMLMnVsQ41GMwHo/ERZLYNDsyB2wPm7pZo1mqPOl7Q== npm@^9.5.0: - version "9.9.0" - resolved "https://registry.yarnpkg.com/npm/-/npm-9.9.0.tgz#ea4ecdbdf85dc4cedf9365f6d201990100430bb5" - integrity sha512-wkd7sjz4KmdmddYQcd0aTP73P1cEuPlekeulz4jTDeMVx/Zo5XZ5KQ1z3eUzV3Q/WZpEO0NJXTrD5FNFe6fhCA== + version "9.9.2" + resolved "https://registry.yarnpkg.com/npm/-/npm-9.9.2.tgz#28133f81643bce36c1c8bcb57b51e1ee53583df7" + integrity sha512-D3tV+W0PzJOlwo8YmO6fNzaB1CrMVYd1V+2TURF6lbCbmZKqMsYgeQfPVvqiM3zbNSJPhFEnmlEXIogH2Vq7PQ== dependencies: "@isaacs/string-locale-compare" "^1.1.0" "@npmcli/arborist" "^6.5.0" @@ -8631,7 +10416,7 @@ npm@^9.5.0: libnpmhook "^9.0.3" libnpmorg "^5.0.4" libnpmpack "^5.0.20" - libnpmpublish "^7.5.0" + libnpmpublish "^7.5.1" libnpmsearch "^6.0.2" libnpmteam "^5.0.3" libnpmversion "^4.0.2" @@ -8712,36 +10497,43 @@ null-check@^1.0.0: resolved "https://registry.yarnpkg.com/null-check/-/null-check-1.0.0.tgz#977dffd7176012b9ec30d2a39db5cf72a0439edd" integrity sha512-j8ZNHg19TyIQOWCGeeQJBuu6xZYIEurf8M1Qsfd8mFrGEfIZytbw18YjKWg+LcO25NowXGZXZpKAx+Ui3TFfDw== -nx@16.0.1: - version "16.0.1" - resolved "https://registry.yarnpkg.com/nx/-/nx-16.0.1.tgz#d3f1f9e3e56262d8bd4876bd2126cfe4ab0fdddb" - integrity sha512-x1NUs3ZGRWI3CdY1Qt4JdB9fOpjNkfP064HI3P6YjmHYSilbkVF7xe9bxOptjwCgMlTE3kOa66qC2fI5bKvG4w== +nwsapi@^2.2.2: + version "2.2.7" + resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.2.7.tgz#738e0707d3128cb750dddcfe90e4610482df0f30" + integrity sha512-ub5E4+FBPKwAZx0UwIQOjYWGHTEq5sPqHQNRN8Z9e4A7u3Tj1weLJsL59yH9vmvqEtBHaOmT6cYQKIZOxp35FQ== + +nx@16.10.0: + version "16.10.0" + resolved "https://registry.yarnpkg.com/nx/-/nx-16.10.0.tgz#b070461f7de0a3d7988bd78558ea84cda3543ace" + integrity sha512-gZl4iCC0Hx0Qe1VWmO4Bkeul2nttuXdPpfnlcDKSACGu3ZIo+uySqwOF8yBAxSTIf8xe2JRhgzJN1aFkuezEBg== dependencies: - "@nrwl/tao" "16.0.1" + "@nrwl/tao" "16.10.0" "@parcel/watcher" "2.0.4" "@yarnpkg/lockfile" "^1.1.0" - "@yarnpkg/parsers" "^3.0.0-rc.18" + "@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 "^7.0.2" - dotenv "~10.0.0" + cliui "^8.0.1" + dotenv "~16.3.1" + dotenv-expand "~10.0.0" enquirer "~2.3.6" - fast-glob "3.2.7" 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.3.4" + semver "7.5.3" string-width "^4.2.3" strong-log-transformer "^2.1.0" tar-stream "~2.2.0" @@ -8752,15 +10544,16 @@ nx@16.0.1: yargs "^17.6.2" yargs-parser "21.1.1" optionalDependencies: - "@nx/nx-darwin-arm64" "16.0.1" - "@nx/nx-darwin-x64" "16.0.1" - "@nx/nx-linux-arm-gnueabihf" "16.0.1" - "@nx/nx-linux-arm64-gnu" "16.0.1" - "@nx/nx-linux-arm64-musl" "16.0.1" - "@nx/nx-linux-x64-gnu" "16.0.1" - "@nx/nx-linux-x64-musl" "16.0.1" - "@nx/nx-win32-arm64-msvc" "16.0.1" - "@nx/nx-win32-x64-msvc" "16.0.1" + "@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" object-assign@^4, object-assign@^4.1.1: version "4.1.1" @@ -8772,11 +10565,69 @@ object-hash@3.0.0: resolved "https://registry.yarnpkg.com/object-hash/-/object-hash-3.0.0.tgz#73f97f753e7baffc0e2cc9d6e079079744ac82e9" integrity sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw== -object-inspect@^1.10.3, object-inspect@^1.9.0: +object-inspect@^1.10.3, object-inspect@^1.13.1, object-inspect@^1.9.0: version "1.13.1" resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.13.1.tgz#b96c6109324ccfef6b12216a956ca4dc2ff94bc2" integrity sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ== +object-is@^1.1.5: + version "1.1.5" + resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.1.5.tgz#b9deeaa5fc7f1846a0faecdceec138e5778f53ac" + integrity sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + +object-keys@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" + integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== + +object.assign@^4.1.4: + version "4.1.4" + resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.4.tgz#9673c7c7c351ab8c4d0b516f4343ebf4dfb7799f" + integrity sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.4" + has-symbols "^1.0.3" + object-keys "^1.1.1" + +object.entries@^1.1.6: + version "1.1.7" + resolved "https://registry.yarnpkg.com/object.entries/-/object.entries-1.1.7.tgz#2b47760e2a2e3a752f39dd874655c61a7f03c131" + integrity sha512-jCBs/0plmPsOnrKAfFQXRG2NFjlhZgjjcBLSmTnEhU8U6vVTsVe8ANeQJCHTl3gSsI4J+0emOoCgoKlmQPMgmA== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + +object.fromentries@^2.0.6: + version "2.0.7" + resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.7.tgz#71e95f441e9a0ea6baf682ecaaf37fa2a8d7e616" + integrity sha512-UPbPHML6sL8PI/mOqPwsH4G6iyXcCGzLin8KvEPenOZN5lpCNBZZQ+V62vdjB1mQHrmqGQt5/OJzemUA+KJmEA== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + +object.hasown@^1.1.2: + version "1.1.3" + resolved "https://registry.yarnpkg.com/object.hasown/-/object.hasown-1.1.3.tgz#6a5f2897bb4d3668b8e79364f98ccf971bda55ae" + integrity sha512-fFI4VcYpRHvSLXxP7yiZOMAd331cPfd2p7PFDVbgUsYOfCT3tICVqXWngbjr4m49OvsBwUBQ6O2uQoJvy3RexA== + dependencies: + define-properties "^1.2.0" + es-abstract "^1.22.1" + +object.values@^1.1.6: + version "1.1.7" + resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.7.tgz#617ed13272e7e1071b43973aa1655d9291b8442a" + integrity sha512-aU6xnDFYT3x17e/f0IiiwlGPTy2jzMySGfUB4fq6z7CV8l85CWHDk5ErhyhpfDHhrOMwGFhSQkhMGHaIotA6Ng== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + obuf@^1.0.0, obuf@^1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/obuf/-/obuf-1.1.2.tgz#09bea3343d41859ebd446292d11c9d4db619084e" @@ -8794,7 +10645,7 @@ on-headers@~1.0.2: resolved "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.2.tgz#772b0ae6aaa525c399e489adfad90c403eb3c28f" integrity sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA== -once@^1.3.0, once@^1.4.0: +once@^1.3.0, once@^1.3.1, once@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== @@ -8824,6 +10675,11 @@ open@^8.0.9, open@^8.4.0: is-docker "^2.1.1" is-wsl "^2.2.0" +opener@^1.5.1: + version "1.5.2" + resolved "https://registry.yarnpkg.com/opener/-/opener-1.5.2.tgz#5d37e1f35077b9dcac4301372271afdeb2a13598" + integrity sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A== + optionator@^0.9.1: version "0.9.3" resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.3.tgz#007397d44ed1872fdc6ed31360190f81814e2c64" @@ -8836,6 +10692,20 @@ optionator@^0.9.1: prelude-ls "^1.2.1" type-check "^0.4.0" +ora@5.3.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/ora/-/ora-5.3.0.tgz#fb832899d3a1372fe71c8b2c534bbfe74961bb6f" + integrity sha512-zAKMgGXUim0Jyd6CXK9lraBnD3H5yPGBPPOkC23a2BG6hsm4Zu6OQSjQuEtV0BHDf4aKHcUFvJiGRrFuW3MG8g== + dependencies: + bl "^4.0.3" + chalk "^4.1.0" + cli-cursor "^3.1.0" + cli-spinners "^2.5.0" + is-interactive "^1.0.0" + log-symbols "^4.0.0" + strip-ansi "^6.0.0" + wcwidth "^1.0.1" + ora@5.4.1: version "5.4.1" resolved "https://registry.yarnpkg.com/ora/-/ora-5.4.1.tgz#1b2678426af4ac4a509008e5e4ac9e9959db9e18" @@ -8851,6 +10721,18 @@ ora@5.4.1: strip-ansi "^6.0.0" wcwidth "^1.0.1" +os-filter-obj@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/os-filter-obj/-/os-filter-obj-2.0.0.tgz#1c0b62d5f3a2442749a2d139e6dddee6e81d8d16" + integrity sha512-uksVLsqG3pVdzzPvmAHpBK0wKxYItuzZr7SziusRPoz67tGV8rL1szZ6IdeUrbqLjGDwApBtN29eEE3IqGHOjg== + dependencies: + arch "^2.1.0" + +p-cancelable@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-2.1.1.tgz#aab7fbd416582fa32a3db49859c122487c5ed2cf" + integrity sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg== + p-cancelable@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-3.0.0.tgz#63826694b54d61ca1c20ebcb6d3ecf5e14cd8050" @@ -8868,6 +10750,11 @@ p-filter@^3.0.0: dependencies: p-map "^5.1.0" +p-finally@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" + integrity sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow== + p-is-promise@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/p-is-promise/-/p-is-promise-3.0.0.tgz#58e78c7dfe2e163cf2a04ff869e7c1dba64a5971" @@ -9030,9 +10917,9 @@ parse-json@^5.0.0, parse-json@^5.2.0: lines-and-columns "^1.1.6" parse-json@^7.0.0: - version "7.1.0" - resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-7.1.0.tgz#4cffd0ee00ffa597b995fd70a9811993c4f95023" - integrity sha512-ihtdrgbqdONYD156Ap6qTcaGcGdkdAxodO1wLqQ/j7HP1u2sFYppINiq4jyC8F+Nm+4fVufylCV00QmkTHkSUg== + version "7.1.1" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-7.1.1.tgz#68f7e6f0edf88c54ab14c00eb700b753b14e2120" + integrity sha512-SgOTCX/EZXtZxBE5eJ97P4yGM5n37BwRU+YMsH4vNzFqJV/oWFXXCmwFlgWUM4PrakybVOueJJ6pwHqSVhTFDw== dependencies: "@babel/code-frame" "^7.21.4" error-ex "^1.3.2" @@ -9064,6 +10951,13 @@ parse5@4.0.0: resolved "https://registry.yarnpkg.com/parse5/-/parse5-4.0.0.tgz#6d78656e3da8d78b4ec0b906f7c08ef1dfe3f608" integrity sha512-VrZ7eOd3T1Fk4XWNXMgiGBK/z0MG48BWG2uQNU4I72fkQuKUTZpl+u9k+CxEG0twMVzSmXEEz12z5Fnw1jIQFA== +parse5@^7.0.0, parse5@^7.1.1: + version "7.1.2" + resolved "https://registry.yarnpkg.com/parse5/-/parse5-7.1.2.tgz#0736bebbfd77793823240a23b7fc5e010b7f8e32" + integrity sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw== + dependencies: + entities "^4.4.0" + parseurl@~1.3.2, parseurl@~1.3.3: version "1.3.3" resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" @@ -9117,6 +11011,11 @@ path-is-absolute@^1.0.0: resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== +path-key@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" + integrity sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw== + path-key@^3.0.0, path-key@^3.1.0: version "3.1.1" resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" @@ -9162,11 +11061,21 @@ path-type@^4.0.0: resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== +path-type@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-5.0.0.tgz#14b01ed7aea7ddf9c7c3f46181d4d04f9c785bb8" + integrity sha512-5HviZNaZcfqP95rwpv+1HDgUamezbqdSYTyzjTvwtJSnIH+3vnbmWsItli8OFEndS984VT55M3jduxZbX351gg== + pause@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/pause/-/pause-0.0.1.tgz#1d408b3fdb76923b9543d96fb4c9dfd535d9cb5d" integrity sha512-KG8UEiEVkR3wGEb4m5yZkVCzigAD+cVEJck2CzYZO37ZGJfctvVptVO192MwrtPhzONn6go8ylnOdMhKqi4nfg== +peek-readable@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/peek-readable/-/peek-readable-5.0.0.tgz#7ead2aff25dc40458c60347ea76cfdfd63efdfec" + integrity sha512-YtCKvLUOvwtMGmrniQPdO7MwPjgkFBtFIrmfSbYmYuq3tKDV/mcfAhBth1+C3ru7uXIZasc/pHnb+YDYNkkj4A== + picocolors@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" @@ -9177,7 +11086,7 @@ picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.3, picomatch@^2.3.1: resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== -pify@^2.3.0: +pify@^2.2.0, pify@^2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" integrity sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog== @@ -9192,7 +11101,7 @@ pify@^4.0.1: resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231" integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g== -pirates@^4.0.4: +pirates@^4.0.4, pirates@^4.0.5: version "4.0.6" resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.6.tgz#3018ae32ecfcff6c29ba2267cbf21166ac1f36b9" integrity sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg== @@ -9224,51 +11133,60 @@ pluralize@8.0.0: resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-8.0.0.tgz#1a6fa16a38d12a1901e0320fa017051c539ce3b1" integrity sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA== -postcss-calc@^8.2.3: - version "8.2.4" - resolved "https://registry.yarnpkg.com/postcss-calc/-/postcss-calc-8.2.4.tgz#77b9c29bfcbe8a07ff6693dc87050828889739a5" - integrity sha512-SmWMSJmB8MRnnULldx0lQIyhSNvuDl9HfrZkaqqE/WHAhToYsAvDq+yAsA/kIyINDszOp3Rh0GFoNuH5Ypsm3Q== +portfinder@^1.0.28: + version "1.0.32" + resolved "https://registry.yarnpkg.com/portfinder/-/portfinder-1.0.32.tgz#2fe1b9e58389712429dc2bea5beb2146146c7f81" + integrity sha512-on2ZJVVDXRADWE6jnQaX0ioEylzgBpQk8r55NE4wjXW1ZxO+BgDlY6DXwj20i0V8eB4SenDQ00WEaxfiIQPcxg== + dependencies: + async "^2.6.4" + debug "^3.2.7" + mkdirp "^0.5.6" + +postcss-calc@^9.0.0: + version "9.0.1" + resolved "https://registry.yarnpkg.com/postcss-calc/-/postcss-calc-9.0.1.tgz#a744fd592438a93d6de0f1434c572670361eb6c6" + integrity sha512-TipgjGyzP5QzEhsOZUaIkeO5mKeMFpebWzRogWG/ysonUlnHcq5aJe0jOjpfzUU8PeSaBQnrE8ehR0QA5vs8PQ== dependencies: - postcss-selector-parser "^6.0.9" + postcss-selector-parser "^6.0.11" postcss-value-parser "^4.2.0" -postcss-colormin@^5.3.1: - version "5.3.1" - resolved "https://registry.yarnpkg.com/postcss-colormin/-/postcss-colormin-5.3.1.tgz#86c27c26ed6ba00d96c79e08f3ffb418d1d1988f" - integrity sha512-UsWQG0AqTFQmpBegeLLc1+c3jIqBNB0zlDGRWR+dQ3pRKJL1oeMzyqmH3o2PIfn9MBdNrVPWhDbT769LxCTLJQ== +postcss-colormin@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/postcss-colormin/-/postcss-colormin-6.0.0.tgz#d4250652e952e1c0aca70c66942da93d3cdeaafe" + integrity sha512-EuO+bAUmutWoZYgHn2T1dG1pPqHU6L4TjzPlu4t1wZGXQ/fxV16xg2EJmYi0z+6r+MGV1yvpx1BHkUaRrPa2bw== dependencies: browserslist "^4.21.4" caniuse-api "^3.0.0" colord "^2.9.1" postcss-value-parser "^4.2.0" -postcss-convert-values@^5.1.3: - version "5.1.3" - resolved "https://registry.yarnpkg.com/postcss-convert-values/-/postcss-convert-values-5.1.3.tgz#04998bb9ba6b65aa31035d669a6af342c5f9d393" - integrity sha512-82pC1xkJZtcJEfiLw6UXnXVXScgtBrjlO5CBmuDQc+dlb88ZYheFsjTn40+zBVi3DkfF7iezO0nJUPLcJK3pvA== +postcss-convert-values@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/postcss-convert-values/-/postcss-convert-values-6.0.0.tgz#ec94a954957e5c3f78f0e8f65dfcda95280b8996" + integrity sha512-U5D8QhVwqT++ecmy8rnTb+RL9n/B806UVaS3m60lqle4YDFcpbS3ae5bTQIh3wOGUSDHSEtMYLs/38dNG7EYFw== dependencies: browserslist "^4.21.4" postcss-value-parser "^4.2.0" -postcss-discard-comments@^5.1.2: - version "5.1.2" - resolved "https://registry.yarnpkg.com/postcss-discard-comments/-/postcss-discard-comments-5.1.2.tgz#8df5e81d2925af2780075840c1526f0660e53696" - integrity sha512-+L8208OVbHVF2UQf1iDmRcbdjJkuBF6IS29yBDSiWUIzpYaAhtNl6JYnYm12FnkeCwQqF5LeklOu6rAqgfBZqQ== +postcss-discard-comments@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/postcss-discard-comments/-/postcss-discard-comments-6.0.0.tgz#9ca335e8b68919f301b24ba47dde226a42e535fe" + integrity sha512-p2skSGqzPMZkEQvJsgnkBhCn8gI7NzRH2683EEjrIkoMiwRELx68yoUJ3q3DGSGuQ8Ug9Gsn+OuDr46yfO+eFw== -postcss-discard-duplicates@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/postcss-discard-duplicates/-/postcss-discard-duplicates-5.1.0.tgz#9eb4fe8456706a4eebd6d3b7b777d07bad03e848" - integrity sha512-zmX3IoSI2aoenxHV6C7plngHWWhUOV3sP1T8y2ifzxzbtnuhk1EdPwm0S1bIUNaJ2eNbWeGLEwzw8huPD67aQw== +postcss-discard-duplicates@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/postcss-discard-duplicates/-/postcss-discard-duplicates-6.0.0.tgz#c26177a6c33070922e67e9a92c0fd23d443d1355" + integrity sha512-bU1SXIizMLtDW4oSsi5C/xHKbhLlhek/0/yCnoMQany9k3nPBq+Ctsv/9oMmyqbR96HYHxZcHyK2HR5P/mqoGA== -postcss-discard-empty@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/postcss-discard-empty/-/postcss-discard-empty-5.1.1.tgz#e57762343ff7f503fe53fca553d18d7f0c369c6c" - integrity sha512-zPz4WljiSuLWsI0ir4Mcnr4qQQ5e1Ukc3i7UfE2XcrwKK2LIPIqE5jxMRxO6GbI3cv//ztXDsXwEWT3BHOGh3A== +postcss-discard-empty@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/postcss-discard-empty/-/postcss-discard-empty-6.0.0.tgz#06c1c4fce09e22d2a99e667c8550eb8a3a1b9aee" + integrity sha512-b+h1S1VT6dNhpcg+LpyiUrdnEZfICF0my7HAKgJixJLW7BnNmpRH34+uw/etf5AhOlIhIAuXApSzzDzMI9K/gQ== -postcss-discard-overridden@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/postcss-discard-overridden/-/postcss-discard-overridden-5.1.0.tgz#7e8c5b53325747e9d90131bb88635282fb4a276e" - integrity sha512-21nOL7RqWR1kasIVdKs8HNqQJhFxLsyRfAnUDm4Fe4t4mCWL9OJiHvlHPjcd8zc5Myu89b/7wZDnOSjFgeWRtw== +postcss-discard-overridden@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/postcss-discard-overridden/-/postcss-discard-overridden-6.0.0.tgz#49c5262db14e975e349692d9024442de7cd8e234" + integrity sha512-4VELwssYXDFigPYAZ8vL4yX4mUepF/oCBeeIT4OXsJPYOtvJumyz9WflmJWTfDwCUcpDR+z0zvCWBXgTx35SVw== postcss-import@~14.1.0: version "14.1.0" @@ -9288,53 +11206,53 @@ postcss-loader@^6.1.1: klona "^2.0.5" semver "^7.3.5" -postcss-merge-longhand@^5.1.7: - version "5.1.7" - resolved "https://registry.yarnpkg.com/postcss-merge-longhand/-/postcss-merge-longhand-5.1.7.tgz#24a1bdf402d9ef0e70f568f39bdc0344d568fb16" - integrity sha512-YCI9gZB+PLNskrK0BB3/2OzPnGhPkBEwmwhfYk1ilBHYVAZB7/tkTHFBAnCrvBBOmeYyMYw3DMjT55SyxMBzjQ== +postcss-merge-longhand@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/postcss-merge-longhand/-/postcss-merge-longhand-6.0.0.tgz#6f627b27db939bce316eaa97e22400267e798d69" + integrity sha512-4VSfd1lvGkLTLYcxFuISDtWUfFS4zXe0FpF149AyziftPFQIWxjvFSKhA4MIxMe4XM3yTDgQMbSNgzIVxChbIg== dependencies: postcss-value-parser "^4.2.0" - stylehacks "^5.1.1" + stylehacks "^6.0.0" -postcss-merge-rules@^5.1.4: - version "5.1.4" - resolved "https://registry.yarnpkg.com/postcss-merge-rules/-/postcss-merge-rules-5.1.4.tgz#2f26fa5cacb75b1402e213789f6766ae5e40313c" - integrity sha512-0R2IuYpgU93y9lhVbO/OylTtKMVcHb67zjWIfCiKR9rWL3GUk1677LAqD/BcHizukdZEjT8Ru3oHRoAYoJy44g== +postcss-merge-rules@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/postcss-merge-rules/-/postcss-merge-rules-6.0.1.tgz#39f165746404e646c0f5c510222ccde4824a86aa" + integrity sha512-a4tlmJIQo9SCjcfiCcCMg/ZCEe0XTkl/xK0XHBs955GWg9xDX3NwP9pwZ78QUOWB8/0XCjZeJn98Dae0zg6AAw== dependencies: browserslist "^4.21.4" caniuse-api "^3.0.0" - cssnano-utils "^3.1.0" + cssnano-utils "^4.0.0" postcss-selector-parser "^6.0.5" -postcss-minify-font-values@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/postcss-minify-font-values/-/postcss-minify-font-values-5.1.0.tgz#f1df0014a726083d260d3bd85d7385fb89d1f01b" - integrity sha512-el3mYTgx13ZAPPirSVsHqFzl+BBBDrXvbySvPGFnQcTI4iNslrPaFq4muTkLZmKlGk4gyFAYUBMH30+HurREyA== +postcss-minify-font-values@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/postcss-minify-font-values/-/postcss-minify-font-values-6.0.0.tgz#68d4a028f9fa5f61701974724b2cc9445d8e6070" + integrity sha512-zNRAVtyh5E8ndZEYXA4WS8ZYsAp798HiIQ1V2UF/C/munLp2r1UGHwf1+6JFu7hdEhJFN+W1WJQKBrtjhFgEnA== dependencies: postcss-value-parser "^4.2.0" -postcss-minify-gradients@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/postcss-minify-gradients/-/postcss-minify-gradients-5.1.1.tgz#f1fe1b4f498134a5068240c2f25d46fcd236ba2c" - integrity sha512-VGvXMTpCEo4qHTNSa9A0a3D+dxGFZCYwR6Jokk+/3oB6flu2/PnPXAh2x7x52EkY5xlIHLm+Le8tJxe/7TNhzw== +postcss-minify-gradients@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/postcss-minify-gradients/-/postcss-minify-gradients-6.0.0.tgz#22b5c88cc63091dadbad34e31ff958404d51d679" + integrity sha512-wO0F6YfVAR+K1xVxF53ueZJza3L+R3E6cp0VwuXJQejnNUH0DjcAFe3JEBeTY1dLwGa0NlDWueCA1VlEfiKgAA== dependencies: colord "^2.9.1" - cssnano-utils "^3.1.0" + cssnano-utils "^4.0.0" postcss-value-parser "^4.2.0" -postcss-minify-params@^5.1.4: - version "5.1.4" - resolved "https://registry.yarnpkg.com/postcss-minify-params/-/postcss-minify-params-5.1.4.tgz#c06a6c787128b3208b38c9364cfc40c8aa5d7352" - integrity sha512-+mePA3MgdmVmv6g+30rn57USjOGSAyuxUmkfiWpzalZ8aiBkdPYjXWtHuwJGm1v5Ojy0Z0LaSYhHaLJQB0P8Jw== +postcss-minify-params@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/postcss-minify-params/-/postcss-minify-params-6.0.0.tgz#2b3a85a9e3b990d7a16866f430f5fd1d5961b539" + integrity sha512-Fz/wMQDveiS0n5JPcvsMeyNXOIMrwF88n7196puSuQSWSa+/Ofc1gDOSY2xi8+A4PqB5dlYCKk/WfqKqsI+ReQ== dependencies: browserslist "^4.21.4" - cssnano-utils "^3.1.0" + cssnano-utils "^4.0.0" postcss-value-parser "^4.2.0" -postcss-minify-selectors@^5.2.1: - version "5.2.1" - resolved "https://registry.yarnpkg.com/postcss-minify-selectors/-/postcss-minify-selectors-5.2.1.tgz#d4e7e6b46147b8117ea9325a915a801d5fe656c6" - integrity sha512-nPJu7OjZJTsVUmPdm2TcaiohIwxP+v8ha9NehQ2ye9szv4orirRU3SDdtUmKH+10nzn0bAyOXZ0UEr7OpvLehg== +postcss-minify-selectors@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/postcss-minify-selectors/-/postcss-minify-selectors-6.0.0.tgz#5046c5e8680a586e5a0cad52cc9aa36d6be5bda2" + integrity sha512-ec/q9JNCOC2CRDNnypipGfOhbYPuUkewGwLnbv6omue/PSASbHSU7s6uSQ0tcFRVv731oMIx8k0SP4ZX6be/0g== dependencies: postcss-selector-parser "^6.0.5" @@ -9366,93 +11284,92 @@ postcss-modules-values@^4.0.0: dependencies: icss-utils "^5.0.0" -postcss-normalize-charset@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/postcss-normalize-charset/-/postcss-normalize-charset-5.1.0.tgz#9302de0b29094b52c259e9b2cf8dc0879879f0ed" - integrity sha512-mSgUJ+pd/ldRGVx26p2wz9dNZ7ji6Pn8VWBajMXFf8jk7vUoSrZ2lt/wZR7DtlZYKesmZI680qjr2CeFF2fbUg== +postcss-normalize-charset@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/postcss-normalize-charset/-/postcss-normalize-charset-6.0.0.tgz#36cc12457259064969fb96f84df491652a4b0975" + integrity sha512-cqundwChbu8yO/gSWkuFDmKrCZ2vJzDAocheT2JTd0sFNA4HMGoKMfbk2B+J0OmO0t5GUkiAkSM5yF2rSLUjgQ== -postcss-normalize-display-values@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/postcss-normalize-display-values/-/postcss-normalize-display-values-5.1.0.tgz#72abbae58081960e9edd7200fcf21ab8325c3da8" - integrity sha512-WP4KIM4o2dazQXWmFaqMmcvsKmhdINFblgSeRgn8BJ6vxaMyaJkwAzpPpuvSIoG/rmX3M+IrRZEz2H0glrQNEA== +postcss-normalize-display-values@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/postcss-normalize-display-values/-/postcss-normalize-display-values-6.0.0.tgz#8d2961415078644d8c6bbbdaf9a2fdd60f546cd4" + integrity sha512-Qyt5kMrvy7dJRO3OjF7zkotGfuYALETZE+4lk66sziWSPzlBEt7FrUshV6VLECkI4EN8Z863O6Nci4NXQGNzYw== dependencies: postcss-value-parser "^4.2.0" -postcss-normalize-positions@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/postcss-normalize-positions/-/postcss-normalize-positions-5.1.1.tgz#ef97279d894087b59325b45c47f1e863daefbb92" - integrity sha512-6UpCb0G4eofTCQLFVuI3EVNZzBNPiIKcA1AKVka+31fTVySphr3VUgAIULBhxZkKgwLImhzMR2Bw1ORK+37INg== +postcss-normalize-positions@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/postcss-normalize-positions/-/postcss-normalize-positions-6.0.0.tgz#25b96df99a69f8925f730eaee0be74416865e301" + integrity sha512-mPCzhSV8+30FZyWhxi6UoVRYd3ZBJgTRly4hOkaSifo0H+pjDYcii/aVT4YE6QpOil15a5uiv6ftnY3rm0igPg== dependencies: postcss-value-parser "^4.2.0" -postcss-normalize-repeat-style@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-5.1.1.tgz#e9eb96805204f4766df66fd09ed2e13545420fb2" - integrity sha512-mFpLspGWkQtBcWIRFLmewo8aC3ImN2i/J3v8YCFUwDnPu3Xz4rLohDO26lGjwNsQxB3YF0KKRwspGzE2JEuS0g== +postcss-normalize-repeat-style@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-6.0.0.tgz#ddf30ad8762feb5b1eb97f39f251acd7b8353299" + integrity sha512-50W5JWEBiOOAez2AKBh4kRFm2uhrT3O1Uwdxz7k24aKtbD83vqmcVG7zoIwo6xI2FZ/HDlbrCopXhLeTpQib1A== dependencies: postcss-value-parser "^4.2.0" -postcss-normalize-string@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/postcss-normalize-string/-/postcss-normalize-string-5.1.0.tgz#411961169e07308c82c1f8c55f3e8a337757e228" - integrity sha512-oYiIJOf4T9T1N4i+abeIc7Vgm/xPCGih4bZz5Nm0/ARVJ7K6xrDlLwvwqOydvyL3RHNf8qZk6vo3aatiw/go3w== +postcss-normalize-string@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/postcss-normalize-string/-/postcss-normalize-string-6.0.0.tgz#948282647a51e409d69dde7910f0ac2ff97cb5d8" + integrity sha512-KWkIB7TrPOiqb8ZZz6homet2KWKJwIlysF5ICPZrXAylGe2hzX/HSf4NTX2rRPJMAtlRsj/yfkrWGavFuB+c0w== dependencies: postcss-value-parser "^4.2.0" -postcss-normalize-timing-functions@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-5.1.0.tgz#d5614410f8f0b2388e9f240aa6011ba6f52dafbb" - integrity sha512-DOEkzJ4SAXv5xkHl0Wa9cZLF3WCBhF3o1SKVxKQAa+0pYKlueTpCgvkFAHfk+Y64ezX9+nITGrDZeVGgITJXjg== +postcss-normalize-timing-functions@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-6.0.0.tgz#5f13e650b8c43351989fc5de694525cc2539841c" + integrity sha512-tpIXWciXBp5CiFs8sem90IWlw76FV4oi6QEWfQwyeREVwUy39VSeSqjAT7X0Qw650yAimYW5gkl2Gd871N5SQg== dependencies: postcss-value-parser "^4.2.0" -postcss-normalize-unicode@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/postcss-normalize-unicode/-/postcss-normalize-unicode-5.1.1.tgz#f67297fca3fea7f17e0d2caa40769afc487aa030" - integrity sha512-qnCL5jzkNUmKVhZoENp1mJiGNPcsJCs1aaRmURmeJGES23Z/ajaln+EPTD+rBeNkSryI+2WTdW+lwcVdOikrpA== +postcss-normalize-unicode@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/postcss-normalize-unicode/-/postcss-normalize-unicode-6.0.0.tgz#741b3310f874616bdcf07764f5503695d3604730" + integrity sha512-ui5crYkb5ubEUDugDc786L/Me+DXp2dLg3fVJbqyAl0VPkAeALyAijF2zOsnZyaS1HyfPuMH0DwyY18VMFVNkg== dependencies: browserslist "^4.21.4" postcss-value-parser "^4.2.0" -postcss-normalize-url@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/postcss-normalize-url/-/postcss-normalize-url-5.1.0.tgz#ed9d88ca82e21abef99f743457d3729a042adcdc" - integrity sha512-5upGeDO+PVthOxSmds43ZeMeZfKH+/DKgGRD7TElkkyS46JXAUhMzIKiCa7BabPeIy3AQcTkXwVVN7DbqsiCew== +postcss-normalize-url@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/postcss-normalize-url/-/postcss-normalize-url-6.0.0.tgz#d0a31e962a16401fb7deb7754b397a323fb650b4" + integrity sha512-98mvh2QzIPbb02YDIrYvAg4OUzGH7s1ZgHlD3fIdTHLgPLRpv1ZTKJDnSAKr4Rt21ZQFzwhGMXxpXlfrUBKFHw== dependencies: - normalize-url "^6.0.1" postcss-value-parser "^4.2.0" -postcss-normalize-whitespace@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/postcss-normalize-whitespace/-/postcss-normalize-whitespace-5.1.1.tgz#08a1a0d1ffa17a7cc6efe1e6c9da969cc4493cfa" - integrity sha512-83ZJ4t3NUDETIHTa3uEg6asWjSBYL5EdkVB0sDncx9ERzOKBVJIUeDO9RyA9Zwtig8El1d79HBp0JEi8wvGQnA== +postcss-normalize-whitespace@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/postcss-normalize-whitespace/-/postcss-normalize-whitespace-6.0.0.tgz#accb961caa42e25ca4179b60855b79b1f7129d4d" + integrity sha512-7cfE1AyLiK0+ZBG6FmLziJzqQCpTQY+8XjMhMAz8WSBSCsCNNUKujgIgjCAmDT3cJ+3zjTXFkoD15ZPsckArVw== dependencies: postcss-value-parser "^4.2.0" -postcss-ordered-values@^5.1.3: - version "5.1.3" - resolved "https://registry.yarnpkg.com/postcss-ordered-values/-/postcss-ordered-values-5.1.3.tgz#b6fd2bd10f937b23d86bc829c69e7732ce76ea38" - integrity sha512-9UO79VUhPwEkzbb3RNpqqghc6lcYej1aveQteWY+4POIwlqkYE21HKWaLDF6lWNuqCobEAyTovVhtI32Rbv2RQ== +postcss-ordered-values@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/postcss-ordered-values/-/postcss-ordered-values-6.0.0.tgz#374704cdff25560d44061d17ba3c6308837a3218" + integrity sha512-K36XzUDpvfG/nWkjs6d1hRBydeIxGpKS2+n+ywlKPzx1nMYDYpoGbcjhj5AwVYJK1qV2/SDoDEnHzlPD6s3nMg== dependencies: - cssnano-utils "^3.1.0" + cssnano-utils "^4.0.0" postcss-value-parser "^4.2.0" -postcss-reduce-initial@^5.1.2: - version "5.1.2" - resolved "https://registry.yarnpkg.com/postcss-reduce-initial/-/postcss-reduce-initial-5.1.2.tgz#798cd77b3e033eae7105c18c9d371d989e1382d6" - integrity sha512-dE/y2XRaqAi6OvjzD22pjTUQ8eOfc6m/natGHgKFBK9DxFmIm69YmaRVQrGgFlEfc1HePIurY0TmDeROK05rIg== +postcss-reduce-initial@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/postcss-reduce-initial/-/postcss-reduce-initial-6.0.0.tgz#7d16e83e60e27e2fa42f56ec0b426f1da332eca7" + integrity sha512-s2UOnidpVuXu6JiiI5U+fV2jamAw5YNA9Fdi/GRK0zLDLCfXmSGqQtzpUPtfN66RtCbb9fFHoyZdQaxOB3WxVA== dependencies: browserslist "^4.21.4" caniuse-api "^3.0.0" -postcss-reduce-transforms@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/postcss-reduce-transforms/-/postcss-reduce-transforms-5.1.0.tgz#333b70e7758b802f3dd0ddfe98bb1ccfef96b6e9" - integrity sha512-2fbdbmgir5AvpW9RLtdONx1QoYG2/EtqpNQbFASDlixBbAYuTcJ0dECwlqNqH7VbaUnEnh8SrxOe2sRIn24XyQ== +postcss-reduce-transforms@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/postcss-reduce-transforms/-/postcss-reduce-transforms-6.0.0.tgz#28ff2601a6d9b96a2f039b3501526e1f4d584a46" + integrity sha512-FQ9f6xM1homnuy1wLe9lP1wujzxnwt1EwiigtWwuyf8FsqqXUDUp2Ulxf9A5yjlUOTdCJO6lonYjg1mgqIIi2w== dependencies: postcss-value-parser "^4.2.0" -postcss-selector-parser@^6.0.10, postcss-selector-parser@^6.0.2, postcss-selector-parser@^6.0.4, postcss-selector-parser@^6.0.5, postcss-selector-parser@^6.0.9: +postcss-selector-parser@^6.0.10, postcss-selector-parser@^6.0.11, postcss-selector-parser@^6.0.2, postcss-selector-parser@^6.0.4, postcss-selector-parser@^6.0.5: version "6.0.13" resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.13.tgz#d05d8d76b1e8e173257ef9d60b706a8e5e99bf1b" integrity sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ== @@ -9460,18 +11377,18 @@ postcss-selector-parser@^6.0.10, postcss-selector-parser@^6.0.2, postcss-selecto cssesc "^3.0.0" util-deprecate "^1.0.2" -postcss-svgo@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/postcss-svgo/-/postcss-svgo-5.1.0.tgz#0a317400ced789f233a28826e77523f15857d80d" - integrity sha512-D75KsH1zm5ZrHyxPakAxJWtkyXew5qwS70v56exwvw542d9CRtTo78K0WeFxZB4G7JXKKMbEZtZayTGdIky/eA== +postcss-svgo@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/postcss-svgo/-/postcss-svgo-6.0.0.tgz#7b18742d38d4505a0455bbe70d52b49f00eaf69d" + integrity sha512-r9zvj/wGAoAIodn84dR/kFqwhINp5YsJkLoujybWG59grR/IHx+uQ2Zo+IcOwM0jskfYX3R0mo+1Kip1VSNcvw== dependencies: postcss-value-parser "^4.2.0" - svgo "^2.7.0" + svgo "^3.0.2" -postcss-unique-selectors@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/postcss-unique-selectors/-/postcss-unique-selectors-5.1.1.tgz#a9f273d1eacd09e9aa6088f4b0507b18b1b541b6" - integrity sha512-5JiODlELrz8L2HwxfPnhOWZYWDxVHWL83ufOv84NrcgipI7TaeRsatAhK4Tr2/ZiYldpK/wBvw5BD3qfaK96GA== +postcss-unique-selectors@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/postcss-unique-selectors/-/postcss-unique-selectors-6.0.0.tgz#c94e9b0f7bffb1203894e42294b5a1b3fb34fbe1" + integrity sha512-EPQzpZNxOxP7777t73RQpZE5e9TrnCrkvp7AH7a0l89JmZiPnS82y216JowHXwpBCQitfyxrof9TK3rYbi7/Yw== dependencies: postcss-selector-parser "^6.0.5" @@ -9480,7 +11397,7 @@ postcss-value-parser@^4.0.0, postcss-value-parser@^4.1.0, postcss-value-parser@^ resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514" integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== -postcss@^8.3.5, postcss@^8.4.14, postcss@^8.4.21: +postcss@^8.4.14, postcss@^8.4.21, postcss@^8.4.24: version "8.4.31" resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.31.tgz#92b451050a9f914da6755af352bdc0192508656d" integrity sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ== @@ -9506,6 +11423,15 @@ prettier@^2.6.2: resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.8.8.tgz#e8c5d7e98a4305ffe3de2e1fc4aca1a71c28b1da" integrity sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q== +pretty-format@^27.0.2: + version "27.5.1" + resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-27.5.1.tgz#2181879fdea51a7a5851fb39d920faa63f01d88e" + integrity sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ== + dependencies: + ansi-regex "^5.0.1" + ansi-styles "^5.0.0" + react-is "^17.0.1" + pretty-format@^29.0.0, pretty-format@^29.7.0: version "29.7.0" resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-29.7.0.tgz#ca42c758310f365bfa71a0bda0a807160b776812" @@ -9568,6 +11494,15 @@ promzard@^1.0.0: dependencies: read "^2.0.0" +prop-types@^15.8.1: + version "15.8.1" + resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.8.1.tgz#67d87bf1a694f48435cf332c24af10214a3140b5" + integrity sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg== + dependencies: + loose-envify "^1.4.0" + object-assign "^4.1.1" + react-is "^16.13.1" + proto-list@~1.2.1: version "1.2.4" resolved "https://registry.yarnpkg.com/proto-list/-/proto-list-1.2.4.tgz#212d5bfe1318306a420f6402b8e26ff39647a849" @@ -9596,10 +11531,28 @@ prr@~1.0.1: resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476" integrity sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw== -punycode@^2.1.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.0.tgz#f67fa67c94da8f4d0cfff981aee4118064199b8f" - integrity sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA== +pseudomap@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" + integrity sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ== + +psl@^1.1.33: + version "1.9.0" + resolved "https://registry.yarnpkg.com/psl/-/psl-1.9.0.tgz#d0df2a137f00794565fcaf3b2c00cd09f8d5a5a7" + integrity sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag== + +pump@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" + integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== + dependencies: + end-of-stream "^1.1.0" + once "^1.3.1" + +punycode@^2.1.0, punycode@^2.1.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.1.tgz#027422e2faec0b25e1549c3e1bd8309b9133b6e5" + integrity sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg== pure-rand@^6.0.0: version "6.0.4" @@ -9628,6 +11581,11 @@ qrcode-terminal@^0.12.0: resolved "https://registry.yarnpkg.com/qrcode-terminal/-/qrcode-terminal-0.12.0.tgz#bb5b699ef7f9f0505092a3748be4464fe71b5819" integrity sha512-EXtzRZmC+YGmGlDFbXKxQiMZNwCLEO6BANKXG4iCtSIM0yqc/pappSx3RIKr4r0uh5JsBckOXeKrB3Iz7mdQpQ== +qrcode.react@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/qrcode.react/-/qrcode.react-3.1.0.tgz#5c91ddc0340f768316fbdb8fff2765134c2aecd8" + integrity sha512-oyF+Urr3oAMUG/OiOuONL3HXM+53wvuH3mtIWQrYmsXoAq0DkvZp2RYUWFSMFtbdOpuS++9v+WAkzNVkMlNW6Q== + qs@6.11.0: version "6.11.0" resolved "https://registry.yarnpkg.com/qs/-/qs-6.11.0.tgz#fd0d963446f7a65e1367e01abd85429453f0c37a" @@ -9635,6 +11593,13 @@ qs@6.11.0: dependencies: side-channel "^1.0.4" +qs@^6.4.0: + version "6.11.2" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.11.2.tgz#64bea51f12c1f5da1bc01496f48ffcff7c69d7d9" + integrity sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA== + dependencies: + side-channel "^1.0.4" + query-string@^7.0.1: version "7.1.3" resolved "https://registry.yarnpkg.com/query-string/-/query-string-7.1.3.tgz#a1cf90e994abb113a325804a972d98276fe02328" @@ -9645,6 +11610,11 @@ query-string@^7.0.1: split-on-first "^1.0.0" strict-uri-encode "^2.0.0" +querystringify@^2.1.1: + version "2.2.0" + resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-2.2.0.tgz#3345941b4153cb9d082d8eee4cda2016a9aef7f6" + integrity sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ== + queue-microtask@^1.2.2: version "1.2.3" resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" @@ -9677,20 +11647,369 @@ raw-body@2.5.1: resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.5.1.tgz#fe1b1628b181b700215e5fd42389f98b71392857" integrity sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig== dependencies: - bytes "3.1.2" - http-errors "2.0.0" - iconv-lite "0.4.24" - unpipe "1.0.0" + bytes "3.1.2" + http-errors "2.0.0" + iconv-lite "0.4.24" + unpipe "1.0.0" + +raw-body@2.5.2: + version "2.5.2" + resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.5.2.tgz#99febd83b90e08975087e8f1f9419a149366b68a" + integrity sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA== + dependencies: + bytes "3.1.2" + http-errors "2.0.0" + iconv-lite "0.4.24" + unpipe "1.0.0" + +rc-cascader@~3.20.0: + version "3.20.0" + resolved "https://registry.yarnpkg.com/rc-cascader/-/rc-cascader-3.20.0.tgz#b270f9d84ed83417ee7309ef5e56e415f1586076" + integrity sha512-lkT9EEwOcYdjZ/jvhLoXGzprK1sijT3/Tp4BLxQQcHDZkkOzzwYQC9HgmKoJz0K7CukMfgvO9KqHeBdgE+pELw== + dependencies: + "@babel/runtime" "^7.12.5" + array-tree-filter "^2.1.0" + classnames "^2.3.1" + rc-select "~14.10.0" + rc-tree "~5.8.1" + rc-util "^5.37.0" + +rc-checkbox@~3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/rc-checkbox/-/rc-checkbox-3.1.0.tgz#6be0d9d8de2cc96fb5e37f9036a1c3e360d0a42d" + integrity sha512-PAwpJFnBa3Ei+5pyqMMXdcKYKNBMS+TvSDiLdDnARnMJHC8ESxwPfm4Ao1gJiKtWLdmGfigascnCpwrHFgoOBQ== + dependencies: + "@babel/runtime" "^7.10.1" + classnames "^2.3.2" + rc-util "^5.25.2" + +rc-collapse@~3.7.1: + version "3.7.1" + resolved "https://registry.yarnpkg.com/rc-collapse/-/rc-collapse-3.7.1.tgz#bda1f7f80adccf3433c1c15d4d9f9ca09910c727" + integrity sha512-N/7ejyiTf3XElNJBBpxqnZBUuMsQWEOPjB2QkfNvZ/Ca54eAvJXuOD1EGbCWCk2m7v/MSxku7mRpdeaLOCd4Gg== + dependencies: + "@babel/runtime" "^7.10.1" + classnames "2.x" + rc-motion "^2.3.4" + rc-util "^5.27.0" + +rc-dialog@~9.3.4: + version "9.3.4" + resolved "https://registry.yarnpkg.com/rc-dialog/-/rc-dialog-9.3.4.tgz#e0decb3d4a0dbe36524a67ed2f8fe2daa4b7b73c" + integrity sha512-975X3018GhR+EjZFbxA2Z57SX5rnu0G0/OxFgMMvZK4/hQWEm3MHaNvP4wXpxYDoJsp+xUvVW+GB9CMMCm81jA== + dependencies: + "@babel/runtime" "^7.10.1" + "@rc-component/portal" "^1.0.0-8" + classnames "^2.2.6" + rc-motion "^2.3.0" + rc-util "^5.21.0" + +rc-drawer@~6.5.2: + version "6.5.2" + resolved "https://registry.yarnpkg.com/rc-drawer/-/rc-drawer-6.5.2.tgz#49c1f279261992f6d4653d32a03b14acd436d610" + integrity sha512-QckxAnQNdhh4vtmKN0ZwDf3iakO83W9eZcSKWYYTDv4qcD2fHhRAZJJ/OE6v2ZlQ2kSqCJX5gYssF4HJFvsEPQ== + dependencies: + "@babel/runtime" "^7.10.1" + "@rc-component/portal" "^1.1.1" + classnames "^2.2.6" + rc-motion "^2.6.1" + rc-util "^5.36.0" + +rc-dropdown@~4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/rc-dropdown/-/rc-dropdown-4.1.0.tgz#418a68939631520de80d0865d02b440eeeb4168e" + integrity sha512-VZjMunpBdlVzYpEdJSaV7WM7O0jf8uyDjirxXLZRNZ+tAC+NzD3PXPEtliFwGzVwBBdCmGuSqiS9DWcOLxQ9tw== + dependencies: + "@babel/runtime" "^7.18.3" + "@rc-component/trigger" "^1.7.0" + classnames "^2.2.6" + rc-util "^5.17.0" + +rc-field-form@~1.40.0: + version "1.40.0" + resolved "https://registry.yarnpkg.com/rc-field-form/-/rc-field-form-1.40.0.tgz#808dce06ebae1c3aea574e672b673533fc98f11f" + integrity sha512-OM3N01X2BYFGJDJcwpk9/BBtlwgveE7eh2SQAKIxVCt9KVWlODYJ9ypTHQdxchfDbeJKJKxMBFXlLAmyvlgPHg== + dependencies: + "@babel/runtime" "^7.18.0" + async-validator "^4.1.0" + rc-util "^5.32.2" + +rc-image@~7.5.1: + version "7.5.1" + resolved "https://registry.yarnpkg.com/rc-image/-/rc-image-7.5.1.tgz#39a93354e14fe3e5eaafd9c9464e8fe3c6c171a0" + integrity sha512-Z9loECh92SQp0nSipc0MBuf5+yVC05H/pzC+Nf8xw1BKDFUJzUeehYBjaWlxly8VGBZJcTHYri61Fz9ng1G3Ag== + dependencies: + "@babel/runtime" "^7.11.2" + "@rc-component/portal" "^1.0.2" + classnames "^2.2.6" + rc-dialog "~9.3.4" + rc-motion "^2.6.2" + rc-util "^5.34.1" + +rc-input-number@~8.4.0: + version "8.4.0" + resolved "https://registry.yarnpkg.com/rc-input-number/-/rc-input-number-8.4.0.tgz#f0d0caa2ce3a4e37f062556f9cb4c08c8c23322d" + integrity sha512-B6rziPOLRmeP7kcS5qbdC5hXvvDHYKV4vUxmahevYx2E6crS2bRi0xLDjhJ0E1HtOWo8rTmaE2EBJAkTCZOLdA== + dependencies: + "@babel/runtime" "^7.10.1" + "@rc-component/mini-decimal" "^1.0.1" + classnames "^2.2.5" + rc-input "~1.3.5" + rc-util "^5.28.0" + +rc-input@~1.3.5, rc-input@~1.3.6: + version "1.3.6" + resolved "https://registry.yarnpkg.com/rc-input/-/rc-input-1.3.6.tgz#038b74779b6c8b688ff60a41c3976d1db7a1d7d6" + integrity sha512-/HjTaKi8/Ts4zNbYaB5oWCquxFyFQO4Co1MnMgoCeGJlpe7k8Eir2HN0a0F9IHDmmo+GYiGgPpz7w/d/krzsJA== + dependencies: + "@babel/runtime" "^7.11.1" + classnames "^2.2.1" + rc-util "^5.18.1" + +rc-mentions@~2.9.1: + version "2.9.1" + resolved "https://registry.yarnpkg.com/rc-mentions/-/rc-mentions-2.9.1.tgz#cfe55913fd5bc156ef9814f38c1a2ceefee032ce" + integrity sha512-cZuElWr/5Ws0PXx1uxobxfYh4mqUw2FitfabR62YnWgm+WAfDyXZXqZg5DxXW+M1cgVvntrQgDDd9LrihrXzew== + dependencies: + "@babel/runtime" "^7.22.5" + "@rc-component/trigger" "^1.5.0" + classnames "^2.2.6" + rc-input "~1.3.5" + rc-menu "~9.12.0" + rc-textarea "~1.5.0" + rc-util "^5.34.1" + +rc-menu@~9.12.0, rc-menu@~9.12.2: + version "9.12.2" + resolved "https://registry.yarnpkg.com/rc-menu/-/rc-menu-9.12.2.tgz#1bab34646421224eff5c5b7de993f8ea1238418e" + integrity sha512-NzloFH2pRUYmQ3S/YbJAvRkgCZaLvq0sRa5rgJtuIHLfPPprNHNyepeSlT64+dbVqI4qRWL44VN0lUCldCbbfg== + dependencies: + "@babel/runtime" "^7.10.1" + "@rc-component/trigger" "^1.17.0" + classnames "2.x" + rc-motion "^2.4.3" + rc-overflow "^1.3.1" + rc-util "^5.27.0" + +rc-motion@^2.0.0, rc-motion@^2.0.1, rc-motion@^2.3.0, rc-motion@^2.3.4, rc-motion@^2.4.3, rc-motion@^2.4.4, rc-motion@^2.6.1, rc-motion@^2.6.2, rc-motion@^2.9.0: + version "2.9.0" + resolved "https://registry.yarnpkg.com/rc-motion/-/rc-motion-2.9.0.tgz#9e18a1b8d61e528a97369cf9a7601e9b29205710" + integrity sha512-XIU2+xLkdIr1/h6ohPZXyPBMvOmuyFZQ/T0xnawz+Rh+gh4FINcnZmMT5UTIj6hgI0VLDjTaPeRd+smJeSPqiQ== + dependencies: + "@babel/runtime" "^7.11.1" + classnames "^2.2.1" + rc-util "^5.21.0" + +rc-notification@~5.3.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/rc-notification/-/rc-notification-5.3.0.tgz#e31c86fe2350598ade8cff383babd1befa7a94fe" + integrity sha512-WCf0uCOkZ3HGfF0p1H4Sgt7aWfipxORWTPp7o6prA3vxwtWhtug3GfpYls1pnBp4WA+j8vGIi5c2/hQRpGzPcQ== + dependencies: + "@babel/runtime" "^7.10.1" + classnames "2.x" + rc-motion "^2.9.0" + rc-util "^5.20.1" + +rc-overflow@^1.3.1: + version "1.3.2" + resolved "https://registry.yarnpkg.com/rc-overflow/-/rc-overflow-1.3.2.tgz#72ee49e85a1308d8d4e3bd53285dc1f3e0bcce2c" + integrity sha512-nsUm78jkYAoPygDAcGZeC2VwIg/IBGSodtOY3pMof4W3M9qRJgqaDYm03ZayHlde3I6ipliAxbN0RUcGf5KOzw== + dependencies: + "@babel/runtime" "^7.11.1" + classnames "^2.2.1" + rc-resize-observer "^1.0.0" + rc-util "^5.37.0" + +rc-pagination@~3.7.0: + version "3.7.0" + resolved "https://registry.yarnpkg.com/rc-pagination/-/rc-pagination-3.7.0.tgz#4c4332800688ec0fd3b2435c4772f7f8d4d7b50e" + integrity sha512-IxSzKapd13L91/195o1TPkKnCNw8gIR25UP1GCW/7c7n/slhld4npu2j2PB9IWjXm4SssaAaSAt2lscYog7wzg== + dependencies: + "@babel/runtime" "^7.10.1" + classnames "^2.2.1" + rc-util "^5.32.2" + +rc-picker@~3.14.6: + version "3.14.6" + resolved "https://registry.yarnpkg.com/rc-picker/-/rc-picker-3.14.6.tgz#60fc34f9883272e10f6c593fa6d82e7e7a70781b" + integrity sha512-AdKKW0AqMwZsKvIpwUWDUnpuGKZVrbxVTZTNjcO+pViGkjC1EBcjMgxVe8tomOEaIHJL5Gd13vS8Rr3zzxWmag== + dependencies: + "@babel/runtime" "^7.10.1" + "@rc-component/trigger" "^1.5.0" + classnames "^2.2.1" + rc-util "^5.30.0" + +rc-progress@~3.5.1: + version "3.5.1" + resolved "https://registry.yarnpkg.com/rc-progress/-/rc-progress-3.5.1.tgz#a3cdfd2fe04eb5c3d43fa1c69e7dd70c73b102ae" + integrity sha512-V6Amx6SbLRwPin/oD+k1vbPrO8+9Qf8zW1T8A7o83HdNafEVvAxPV5YsgtKFP+Ud5HghLj33zKOcEHrcrUGkfw== + dependencies: + "@babel/runtime" "^7.10.1" + classnames "^2.2.6" + rc-util "^5.16.1" + +rc-rate@~2.12.0: + version "2.12.0" + resolved "https://registry.yarnpkg.com/rc-rate/-/rc-rate-2.12.0.tgz#0182deffed3b009cdcc61660da8746c39ed91ed5" + integrity sha512-g092v5iZCdVzbjdn28FzvWebK2IutoVoiTeqoLTj9WM7SjA/gOJIw5/JFZMRyJYYVe1jLAU2UhAfstIpCNRozg== + dependencies: + "@babel/runtime" "^7.10.1" + classnames "^2.2.5" + rc-util "^5.0.1" + +rc-resize-observer@^1.0.0, rc-resize-observer@^1.1.0, rc-resize-observer@^1.3.1, rc-resize-observer@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/rc-resize-observer/-/rc-resize-observer-1.4.0.tgz#7bba61e6b3c604834980647cce6451914750d0cc" + integrity sha512-PnMVyRid9JLxFavTjeDXEXo65HCRqbmLBw9xX9gfC4BZiSzbLXKzW3jPz+J0P71pLbD5tBMTT+mkstV5gD0c9Q== + dependencies: + "@babel/runtime" "^7.20.7" + classnames "^2.2.1" + rc-util "^5.38.0" + resize-observer-polyfill "^1.5.1" + +rc-segmented@~2.2.2: + version "2.2.2" + resolved "https://registry.yarnpkg.com/rc-segmented/-/rc-segmented-2.2.2.tgz#a34f12ce6c0975fc3042ae7656bcd18e1744798e" + integrity sha512-Mq52M96QdHMsNdE/042ibT5vkcGcD5jxKp7HgPC2SRofpia99P5fkfHy1pEaajLMF/kj0+2Lkq1UZRvqzo9mSA== + dependencies: + "@babel/runtime" "^7.11.1" + classnames "^2.2.1" + rc-motion "^2.4.4" + rc-util "^5.17.0" + +rc-select@~14.10.0: + version "14.10.0" + resolved "https://registry.yarnpkg.com/rc-select/-/rc-select-14.10.0.tgz#5f60e61ed7c9a83c8591616b1174a1c4ab2de0cd" + integrity sha512-TsIJTYafTTapCA32LLNpx/AD6ntepR1TG8jEVx35NiAAWCPymhUfuca8kRcUNd3WIGVMDcMKn9kkphoxEz+6Ag== + dependencies: + "@babel/runtime" "^7.10.1" + "@rc-component/trigger" "^1.5.0" + classnames "2.x" + rc-motion "^2.0.1" + rc-overflow "^1.3.1" + rc-util "^5.16.1" + rc-virtual-list "^3.5.2" + +rc-slider@~10.4.0: + version "10.4.0" + resolved "https://registry.yarnpkg.com/rc-slider/-/rc-slider-10.4.0.tgz#efc016583fdea5f5dfb4f3dc61b6755a19e5f453" + integrity sha512-ZlpWjFhOlEf0w4Ng31avFBkXNNBj60NAcTPaIoiCxBkJ29wOtHSPMqv9PZeEoqmx64bpJkgK7kPa47HG4LPzww== + dependencies: + "@babel/runtime" "^7.10.1" + classnames "^2.2.5" + rc-util "^5.27.0" + +rc-steps@~6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/rc-steps/-/rc-steps-6.0.1.tgz#c2136cd0087733f6d509209a84a5c80dc29a274d" + integrity sha512-lKHL+Sny0SeHkQKKDJlAjV5oZ8DwCdS2hFhAkIjuQt1/pB81M0cA0ErVFdHq9+jmPmFw1vJB2F5NBzFXLJxV+g== + dependencies: + "@babel/runtime" "^7.16.7" + classnames "^2.2.3" + rc-util "^5.16.1" -raw-body@2.5.2: - version "2.5.2" - resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.5.2.tgz#99febd83b90e08975087e8f1f9419a149366b68a" - integrity sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA== +rc-switch@~4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/rc-switch/-/rc-switch-4.1.0.tgz#f37d81b4e0c5afd1274fd85367b17306bf25e7d7" + integrity sha512-TI8ufP2Az9oEbvyCeVE4+90PDSljGyuwix3fV58p7HV2o4wBnVToEyomJRVyTaZeqNPAp+vqeo4Wnj5u0ZZQBg== dependencies: - bytes "3.1.2" - http-errors "2.0.0" - iconv-lite "0.4.24" - unpipe "1.0.0" + "@babel/runtime" "^7.21.0" + classnames "^2.2.1" + rc-util "^5.30.0" + +rc-table@~7.36.0: + version "7.36.0" + resolved "https://registry.yarnpkg.com/rc-table/-/rc-table-7.36.0.tgz#95e50805392b6a723105c3eb77eefb1e14ba1ced" + integrity sha512-3xVcdCC5OLeOOhaCg+5Lps2oPreM/GWXmUXWTSX4p6vF7F76ABM4dfPpMJ9Dnf5yGRyh+8pe7FRyhRVnWw2H/w== + dependencies: + "@babel/runtime" "^7.10.1" + "@rc-component/context" "^1.4.0" + classnames "^2.2.5" + rc-resize-observer "^1.1.0" + rc-util "^5.37.0" + rc-virtual-list "^3.11.1" + +rc-tabs@~12.13.1: + version "12.13.1" + resolved "https://registry.yarnpkg.com/rc-tabs/-/rc-tabs-12.13.1.tgz#e28c5652dfed4e72eb27a75a2691754afd3e5f68" + integrity sha512-83u3l2QkO0UznCzdBLEk9WnNcT+imtmDmMT993sUUEOGnNQAmqOdev0XjeqrcvsAMe9CDpAWDFd7L/RZw+LVJQ== + dependencies: + "@babel/runtime" "^7.11.2" + classnames "2.x" + rc-dropdown "~4.1.0" + rc-menu "~9.12.0" + rc-motion "^2.6.2" + rc-resize-observer "^1.0.0" + rc-util "^5.34.1" + +rc-textarea@~1.5.0, rc-textarea@~1.5.3: + version "1.5.3" + resolved "https://registry.yarnpkg.com/rc-textarea/-/rc-textarea-1.5.3.tgz#513e837d308584996c05f540f4f58645a3a8c89a" + integrity sha512-oH682ghHx++stFNYrosPRBfwsypywrTXpaD0/5Z8MPkUOnyOQUaY9ueL9tMu6BP1LfsuYQ1VLpg5OtshViLNgA== + dependencies: + "@babel/runtime" "^7.10.1" + classnames "^2.2.1" + rc-input "~1.3.5" + rc-resize-observer "^1.0.0" + rc-util "^5.27.0" + +rc-tooltip@~6.1.2: + version "6.1.2" + resolved "https://registry.yarnpkg.com/rc-tooltip/-/rc-tooltip-6.1.2.tgz#33923ecfb2cf24347975093cbd0b048ab33c9567" + integrity sha512-89zwvybvCxGJu3+gGF8w5AXd4HHk6hIN7K0vZbkzjilVaEAIWPqc1fcyeUeP71n3VCcw7pTL9LyFupFbrx8gHw== + dependencies: + "@babel/runtime" "^7.11.2" + "@rc-component/trigger" "^1.18.0" + classnames "^2.3.1" + +rc-tree-select@~5.15.0: + version "5.15.0" + resolved "https://registry.yarnpkg.com/rc-tree-select/-/rc-tree-select-5.15.0.tgz#8591f1dd28b043dde6fa1ca30c7acb198b160a42" + integrity sha512-YJHfdO6azFnR0/JuNBZLDptGE4/RGfVeHAafUIYcm2T3RBkL1O8aVqiHvwIyLzdK59ry0NLrByd+3TkfpRM+9Q== + dependencies: + "@babel/runtime" "^7.10.1" + classnames "2.x" + rc-select "~14.10.0" + rc-tree "~5.8.1" + rc-util "^5.16.1" + +rc-tree@~5.8.1, rc-tree@~5.8.2: + version "5.8.2" + resolved "https://registry.yarnpkg.com/rc-tree/-/rc-tree-5.8.2.tgz#ed3a3f7c56597bbeab3303407a9e1739bbf15621" + integrity sha512-xH/fcgLHWTLmrSuNphU8XAqV7CdaOQgm4KywlLGNoTMhDAcNR3GVNP6cZzb0GrKmIZ9yae+QLot/cAgUdPRMzg== + dependencies: + "@babel/runtime" "^7.10.1" + classnames "2.x" + rc-motion "^2.0.1" + rc-util "^5.16.1" + rc-virtual-list "^3.5.1" + +rc-upload@~4.3.5: + version "4.3.5" + resolved "https://registry.yarnpkg.com/rc-upload/-/rc-upload-4.3.5.tgz#12fc69b2af74d08646a104828831bcaf44076eda" + integrity sha512-EHlKJbhkgFSQHliTj9v/2K5aEuFwfUQgZARzD7AmAPOneZEPiCNF3n6PEWIuqz9h7oq6FuXgdR67sC5BWFxJbA== + dependencies: + "@babel/runtime" "^7.18.3" + classnames "^2.2.5" + rc-util "^5.2.0" + +rc-util@^5.0.1, rc-util@^5.16.1, rc-util@^5.17.0, rc-util@^5.18.1, rc-util@^5.2.0, rc-util@^5.20.1, rc-util@^5.21.0, rc-util@^5.24.4, rc-util@^5.25.2, rc-util@^5.27.0, rc-util@^5.28.0, rc-util@^5.30.0, rc-util@^5.31.1, rc-util@^5.32.2, rc-util@^5.34.1, rc-util@^5.35.0, rc-util@^5.36.0, rc-util@^5.37.0, rc-util@^5.38.0, rc-util@^5.38.1: + version "5.38.1" + resolved "https://registry.yarnpkg.com/rc-util/-/rc-util-5.38.1.tgz#4915503b89855f5c5cd9afd4c72a7a17568777bb" + integrity sha512-e4ZMs7q9XqwTuhIK7zBIVFltUtMSjphuPPQXHoHlzRzNdOwUxDejo0Zls5HYaJfRKNURcsS/ceKVULlhjBrxng== + dependencies: + "@babel/runtime" "^7.18.3" + react-is "^18.2.0" + +rc-virtual-list@^3.11.1, rc-virtual-list@^3.5.1, rc-virtual-list@^3.5.2: + version "3.11.3" + resolved "https://registry.yarnpkg.com/rc-virtual-list/-/rc-virtual-list-3.11.3.tgz#77d4e12e20c1ba314b43c0e37e118296674c5401" + integrity sha512-tu5UtrMk/AXonHwHxUogdXAWynaXsrx1i6dsgg+lOo/KJSF8oBAcprh1z5J3xgnPJD5hXxTL58F8s8onokdt0Q== + dependencies: + "@babel/runtime" "^7.20.0" + classnames "^2.2.6" + rc-resize-observer "^1.0.0" + rc-util "^5.36.0" rc@^1.2.8: version "1.2.8" @@ -9702,7 +12021,25 @@ rc@^1.2.8: minimist "^1.2.0" strip-json-comments "~2.0.1" -react-is@^18.0.0: +react-dom@18.2.0: + version "18.2.0" + resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-18.2.0.tgz#22aaf38708db2674ed9ada224ca4aa708d821e3d" + integrity sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g== + dependencies: + loose-envify "^1.1.0" + scheduler "^0.23.0" + +react-is@^16.13.1: + version "16.13.1" + resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" + integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== + +react-is@^17.0.1: + version "17.0.2" + resolved "https://registry.yarnpkg.com/react-is/-/react-is-17.0.2.tgz#e691d4a8e9c789365655539ab372762b0efb54f0" + integrity sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w== + +react-is@^18.0.0, react-is@^18.2.0: version "18.2.0" resolved "https://registry.yarnpkg.com/react-is/-/react-is-18.2.0.tgz#199431eeaaa2e09f86427efbb4f1473edb47609b" integrity sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w== @@ -9714,6 +12051,40 @@ react-native-securerandom@^0.1.1: dependencies: base64-js "*" +react-refresh@^0.10.0: + version "0.10.0" + resolved "https://registry.yarnpkg.com/react-refresh/-/react-refresh-0.10.0.tgz#2f536c9660c0b9b1d500684d9e52a65e7404f7e3" + integrity sha512-PgidR3wST3dDYKr6b4pJoqQFpPGNKDSCDx4cZoshjXipw3LzO7mG1My2pwEzz2JVkF+inx3xRpDeQLFQGH/hsQ== + +react-router-dom@6.11.2: + version "6.11.2" + resolved "https://registry.yarnpkg.com/react-router-dom/-/react-router-dom-6.11.2.tgz#324d55750ffe2ecd54ca4ec6b7bc7ab01741f170" + integrity sha512-JNbKtAeh1VSJQnH6RvBDNhxNwemRj7KxCzc5jb7zvDSKRnPWIFj9pO+eXqjM69gQJ0r46hSz1x4l9y0651DKWw== + dependencies: + "@remix-run/router" "1.6.2" + react-router "6.11.2" + +react-router@6.11.2: + version "6.11.2" + resolved "https://registry.yarnpkg.com/react-router/-/react-router-6.11.2.tgz#006301c4da1a173d7ad76b7ecd2da01b9dd3837a" + integrity sha512-74z9xUSaSX07t3LM+pS6Un0T55ibUE/79CzfZpy5wsPDZaea1F8QkrsiyRnA2YQ7LwE/umaydzXZV80iDCPkMg== + dependencies: + "@remix-run/router" "1.6.2" + +react-toastify@^9.1.3: + version "9.1.3" + resolved "https://registry.yarnpkg.com/react-toastify/-/react-toastify-9.1.3.tgz#1e798d260d606f50e0fab5ee31daaae1d628c5ff" + integrity sha512-fPfb8ghtn/XMxw3LkxQBk3IyagNpF/LIKjOBflbexr2AWxAH1MJgvnESwEwBn9liLFXgTKWgBSdZpw9m4OTHTg== + dependencies: + clsx "^1.1.1" + +react@18.2.0: + version "18.2.0" + resolved "https://registry.yarnpkg.com/react/-/react-18.2.0.tgz#555bd98592883255fa00de14f1151a917b5d77d5" + integrity sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ== + dependencies: + loose-envify "^1.1.0" + read-cache@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/read-cache/-/read-cache-1.0.0.tgz#e664ef31161166c9751cdbe8dbcf86b5fb58f774" @@ -9839,6 +12210,13 @@ readable-stream@^4.1.0: process "^0.11.10" string_decoder "^1.3.0" +readable-web-to-node-stream@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/readable-web-to-node-stream/-/readable-web-to-node-stream-3.0.2.tgz#5d52bb5df7b54861fd48d015e93a2cb87b3ee0bb" + integrity sha512-ePeK6cc1EcKLEhJFt/AebMCLL+GgSKhuygrZ/GLaKZYEecIgIECf4UaUuaByiGtzckwR4ain9VzUh95T1exYGw== + dependencies: + readable-stream "^3.6.0" + readdirp@~3.6.0: version "3.6.0" resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" @@ -9915,6 +12293,15 @@ regenerator-transform@^0.15.2: dependencies: "@babel/runtime" "^7.8.4" +regexp.prototype.flags@^1.5.0, regexp.prototype.flags@^1.5.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.5.1.tgz#90ce989138db209f81492edd734183ce99f9677e" + integrity sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + set-function-name "^2.0.0" + regexpp@^3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.2.0.tgz#0425a2768d8f23bad70ca4b90461fa2f1213e1b2" @@ -9961,7 +12348,12 @@ requires-port@^1.0.0: resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" integrity sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ== -resolve-alpn@^1.2.0: +resize-observer-polyfill@^1.5.1: + version "1.5.1" + resolved "https://registry.yarnpkg.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.yarnpkg.com/resolve-alpn/-/resolve-alpn-1.2.1.tgz#b7adbdac3546aaaec20b45e7d8265927072726f9" integrity sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g== @@ -9993,7 +12385,7 @@ resolve.exports@^2.0.0: resolved "https://registry.yarnpkg.com/resolve.exports/-/resolve.exports-2.0.2.tgz#f8c934b8e6a13f539e38b7098e2e36134f01e800" integrity sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg== -resolve@^1.1.7, resolve@^1.10.0, resolve@^1.12.0, resolve@^1.14.2, resolve@^1.20.0: +resolve@^1.1.7, resolve@^1.10.0, resolve@^1.12.0, resolve@^1.14.2, resolve@^1.20.0, resolve@^1.22.1, resolve@^1.22.4: version "1.22.8" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.8.tgz#b6c87a9f2aa06dfab52e3d70ac8cde321fa5a48d" integrity sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw== @@ -10002,6 +12394,22 @@ resolve@^1.1.7, resolve@^1.10.0, resolve@^1.12.0, resolve@^1.14.2, 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.yarnpkg.com/resolve/-/resolve-2.0.0-next.5.tgz#6b0ec3107e671e52b68cd068ef327173b90dc03c" + integrity sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA== + dependencies: + is-core-module "^2.13.0" + path-parse "^1.0.7" + supports-preserve-symlinks-flag "^1.0.0" + +responselike@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/responselike/-/responselike-2.0.1.tgz#9a0bc8fdc252f3fb1cca68b016591059ba1422bc" + integrity sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw== + dependencies: + lowercase-keys "^2.0.0" + responselike@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/responselike/-/responselike-3.0.0.tgz#20decb6c298aff0dbee1c355ca95461d42823626" @@ -10046,19 +12454,22 @@ run-parallel@^1.1.9: dependencies: queue-microtask "^1.2.2" -rxjs@7.8.1, rxjs@^7.0.0, rxjs@^7.2.0, rxjs@^7.8.1: +rxjs@7.8.1, rxjs@^7.0.0, rxjs@^7.2.0, rxjs@^7.8.0, rxjs@^7.8.1: version "7.8.1" resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-7.8.1.tgz#6f6f3d99ea8044291efd92e7c7fcf562c4057543" integrity sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg== dependencies: tslib "^2.1.0" -rxjs@^6.5.4: - version "6.6.7" - resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.6.7.tgz#90ac018acabf491bf65044235d5863c4dab804c9" - integrity sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ== +safe-array-concat@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/safe-array-concat/-/safe-array-concat-1.0.1.tgz#91686a63ce3adbea14d61b14c99572a8ff84754c" + integrity sha512-6XbUAseYE2KtOuGueyeobCySj9L4+66Tn6KQMOPQJrAJEowYKW/YR/MGJZl7FdydUdaFu4LYyDZjxf4/Nmo23Q== dependencies: - tslib "^1.9.0" + call-bind "^1.0.2" + get-intrinsic "^1.2.1" + has-symbols "^1.0.3" + isarray "^2.0.5" safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: version "5.1.2" @@ -10070,7 +12481,16 @@ safe-buffer@5.2.1, safe-buffer@>=5.1.0, safe-buffer@^5.1.0, safe-buffer@~5.2.0: resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== -"safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0", safer-buffer@^2.1.2: +safe-regex-test@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/safe-regex-test/-/safe-regex-test-1.0.0.tgz#793b874d524eb3640d1873aad03596db2d4f2295" + integrity sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.1.3" + is-regex "^1.1.4" + +"safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0": version "2.1.2" resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== @@ -10084,9 +12504,9 @@ sass-loader@^12.2.0: neo-async "^2.6.2" sass@^1.42.1: - version "1.69.4" - resolved "https://registry.yarnpkg.com/sass/-/sass-1.69.4.tgz#10c735f55e3ea0b7742c6efa940bce30e07fbca2" - integrity sha512-+qEreVhqAy8o++aQfCJwp0sklr2xyEzkm9Pp/Igu9wNPoe7EZEQ8X/MBvvXggI2ql607cxKg/RKOwDj6pp2XDA== + version "1.69.5" + resolved "https://registry.yarnpkg.com/sass/-/sass-1.69.5.tgz#23e18d1c757a35f2e52cc81871060b9ad653dfde" + integrity sha512-qg2+UCJibLr2LCVOt3OlPhr/dqVHWOa9XtZf2OjbLs/T4VPSJ00udtgJxH3neXZm+QqX8B+3cU7RaLqp1iVfcQ== dependencies: chokidar ">=3.0.0 <4.0.0" immutable "^4.0.0" @@ -10102,6 +12522,20 @@ sax@~1.2.4: resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== +saxes@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/saxes/-/saxes-6.0.0.tgz#fe5b4a4768df4f14a201b1ba6a65c1f3d9988cc5" + integrity sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA== + dependencies: + xmlchars "^2.2.0" + +scheduler@^0.23.0: + version "0.23.0" + resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.23.0.tgz#ba8041afc3d30eb206a487b6b384002e4e61fdfe" + integrity sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw== + dependencies: + loose-envify "^1.1.0" + schema-utils@^3.0.0, schema-utils@^3.1.1, schema-utils@^3.2.0: version "3.3.0" resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-3.3.0.tgz#f50a88877c3c01652a15b622ae9e9795df7a60fe" @@ -10111,7 +12545,7 @@ schema-utils@^3.0.0, schema-utils@^3.1.1, schema-utils@^3.2.0: ajv "^6.12.5" ajv-keywords "^3.5.2" -schema-utils@^4.0.0: +schema-utils@^4.0.0, schema-utils@^4.0.1: version "4.2.0" resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-4.2.0.tgz#70d7c93e153a273a805801882ebd3bff20d89c8b" integrity sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw== @@ -10121,16 +12555,29 @@ schema-utils@^4.0.0: ajv-formats "^2.1.1" ajv-keywords "^5.1.0" +scroll-into-view-if-needed@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/scroll-into-view-if-needed/-/scroll-into-view-if-needed-3.1.0.tgz#fa9524518c799b45a2ef6bbffb92bcad0296d01f" + integrity sha512-49oNpRjWRvnU8NyGVmUaYG4jtTkNonFZI86MmGRDqBphEK2EXT9gdEUoQPZhuBM8yWHxCWbobltqYO5M4XrUvQ== + dependencies: + compute-scroll-into-view "^3.0.2" + +secure-compare@3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/secure-compare/-/secure-compare-3.0.1.tgz#f1a0329b308b221fae37b9974f3d578d0ca999e3" + integrity sha512-AckIIV90rPDcBcglUwXPF3kg0P0qmPsPXAj6BBEENQE1p5yA1xfmDJzfi1Tappj37Pv2mVbKpL3Z1T+Nn7k1Qw== + select-hose@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/select-hose/-/select-hose-2.0.0.tgz#625d8658f865af43ec962bfc376a37359a4994ca" integrity sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg== selfsigned@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/selfsigned/-/selfsigned-2.1.1.tgz#18a7613d714c0cd3385c48af0075abf3f266af61" - integrity sha512-GSL3aowiF7wa/WtSFwnUrludWFoNhftq8bUkH9pkzjpN2XSPOAYEgg6e0sS9s0rZwgJzJiQRPU18A6clnoW5wQ== + version "2.4.1" + resolved "https://registry.yarnpkg.com/selfsigned/-/selfsigned-2.4.1.tgz#560d90565442a3ed35b674034cec4e95dceb4ae0" + integrity sha512-th5B4L2U+eGLq1TVh7zNRGBapioSORUeymIydxgFpwww9d2qyKvtuPU2jJuHvYAwwqi2Y596QBL3eEqcPEYL8Q== dependencies: + "@types/node-forge" "^1.3.0" node-forge "^1" semantic-release@^21.0.2: @@ -10179,15 +12626,22 @@ semver-regex@^4.0.5: resolved "https://registry.yarnpkg.com/semver-regex/-/semver-regex-4.0.5.tgz#fbfa36c7ba70461311f5debcb3928821eb4f9180" integrity sha512-hunMQrEy1T6Jr2uEVjrAIqjwWcQTgOAcIM52C8MY1EZSD3DDNft04XzvYKPqjED65bNVVko0YI38nYeEHCX3yw== +semver-truncate@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/semver-truncate/-/semver-truncate-3.0.0.tgz#0e3b4825d4a4225d8ae6e7c72231182b42edba40" + integrity sha512-LJWA9kSvMolR51oDE6PN3kALBNaUdkxzAGcexw8gjMA8xr5zUqK0JiR3CgARSqanYF3Z1YHvsErb1KDgh+v7Rg== + dependencies: + semver "^7.3.5" + "semver@2 || 3 || 4 || 5", semver@^5.6.0: version "5.7.2" resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.2.tgz#48d55db737c3287cd4835e17fa13feace1c41ef8" integrity sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g== -semver@7.3.4: - version "7.3.4" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.4.tgz#27aaa7d2e4ca76452f98d3add093a72c943edc97" - integrity sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw== +semver@7.5.3: + version "7.5.3" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.5.3.tgz#161ce8c2c6b4b3bdca6caadc9fa3317a4c4fe88e" + integrity sha512-QBlUtyVk/5EeHbi7X0fw6liDZc7BBmEaSYn01fMU1OUYbf6GPsbTtd8WmnqbI20SeycoHSeiybkE/q1Q+qlThQ== dependencies: lru-cache "^6.0.0" @@ -10274,6 +12728,15 @@ set-function-length@^1.1.1: gopd "^1.0.1" has-property-descriptors "^1.0.0" +set-function-name@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/set-function-name/-/set-function-name-2.0.1.tgz#12ce38b7954310b9f61faa12701620a0c882793a" + integrity sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA== + dependencies: + define-data-property "^1.0.1" + functions-have-names "^1.2.3" + has-property-descriptors "^1.0.0" + setprototypeof@1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656" @@ -10284,6 +12747,13 @@ setprototypeof@1.2.0: resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424" integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw== +shebang-command@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" + integrity sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg== + dependencies: + shebang-regex "^1.0.0" + shebang-command@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" @@ -10291,6 +12761,11 @@ shebang-command@^2.0.0: dependencies: shebang-regex "^3.0.0" +shebang-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" + integrity sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ== + shebang-regex@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" @@ -10345,7 +12820,7 @@ sisteransi@^1.0.5: resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed" integrity sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg== -slash@^3.0.0: +slash@3.0.0, slash@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== @@ -10355,11 +12830,24 @@ slash@^4.0.0: resolved "https://registry.yarnpkg.com/slash/-/slash-4.0.0.tgz#2422372176c4c6c5addb5e2ada885af984b396a7" integrity sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew== +slash@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-5.1.0.tgz#be3adddcdf09ac38eebe8dcdc7b1a57a75b095ce" + integrity sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg== + smart-buffer@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/smart-buffer/-/smart-buffer-4.2.0.tgz#6e1d71fa4f18c05f7d0ff216dd16a481d0e8d9ae" integrity sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg== +snake-case@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/snake-case/-/snake-case-3.0.4.tgz#4f2bbd568e9935abdfd593f34c691dadb49c452c" + integrity sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg== + dependencies: + dot-case "^3.0.4" + tslib "^2.0.3" + sockjs@^0.3.24: version "0.3.24" resolved "https://registry.yarnpkg.com/sockjs/-/sockjs-0.3.24.tgz#c9bc8995f33a111bea0395ec30aa3206bdb5ccce" @@ -10386,6 +12874,20 @@ socks@^2.6.2: ip "^2.0.0" smart-buffer "^4.2.0" +sort-keys-length@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/sort-keys-length/-/sort-keys-length-1.0.1.tgz#9cb6f4f4e9e48155a6aa0671edd336ff1479a188" + integrity sha512-GRbEOUqCxemTAk/b32F2xa8wDTs+Z1QHOkbhJDQTvv/6G3ZkbJ+frYWsTcc7cBB3Fu4wy4XlLCuNtJuMn7Gsvw== + dependencies: + sort-keys "^1.0.0" + +sort-keys@^1.0.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/sort-keys/-/sort-keys-1.1.2.tgz#441b6d4d346798f1b4e49e8920adfba0e543f9ad" + integrity sha512-vzn8aSqKgytVik0iwdBEi+zevbTYZogewTUM6dtpmGwEcdzbub/TX4bCzRhebDCRC3QzXgJsLRKB2V/Oof7HXg== + dependencies: + is-plain-obj "^1.0.0" + "source-map-js@>=0.6.2 <2.0.0", source-map-js@^1.0.1, source-map-js@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.0.2.tgz#adbc361d9c62df380125e7f161f71c826f1e490c" @@ -10400,14 +12902,6 @@ source-map-loader@^3.0.0: iconv-lite "^0.6.3" source-map-js "^1.0.1" -source-map-resolve@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.6.0.tgz#3d9df87e236b53f16d01e58150fc7711138e5ed2" - integrity sha512-KXBr9d/fO/bWo97NXsPIAW1bFSBOuCnjbNTBMO7N59hsv5i9yzRDfcYwwt0l04+VqnKC+EwzvJZIP/qkuMgR/w== - dependencies: - atob "^2.1.2" - decode-uri-component "^0.2.0" - source-map-support@0.5.13: version "0.5.13" resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.13.tgz#31b24a9c2e73c2de85066c0feb7d44767ed52932" @@ -10424,7 +12918,7 @@ source-map-support@0.5.19: buffer-from "^1.0.0" source-map "^0.6.0" -source-map-support@~0.5.20: +source-map-support@^0.5.21, source-map-support@~0.5.20: version "0.5.21" resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f" integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== @@ -10437,7 +12931,7 @@ source-map@0.7.4, source-map@^0.7.3, source-map@^0.7.4: resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.4.tgz#a9bbe705c9d8846f4e08ff6765acf0f1b0898656" integrity sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA== -source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.0: +source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.0, source-map@~0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== @@ -10549,10 +13043,12 @@ ssri@^10.0.0, ssri@^10.0.1, ssri@^10.0.4: dependencies: minipass "^7.0.3" -stable@^0.1.8: - version "0.1.8" - resolved "https://registry.yarnpkg.com/stable/-/stable-0.1.8.tgz#836eb3c8382fe2936feaf544631017ce7d47a3cf" - integrity sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w== +ssri@^9.0.0: + version "9.0.1" + resolved "https://registry.yarnpkg.com/ssri/-/ssri-9.0.1.tgz#544d4c357a8d7b71a19700074b6883fcb4eae057" + integrity sha512-o57Wcn66jMQvfHG1FlYbWeZWW/dHZhJXjpIcTfXldXEk5nz5lStPo3mK0OJQfGR3RbZUlbISexbljkJzuEj/8Q== + dependencies: + minipass "^3.1.1" stack-utils@^2.0.3: version "2.0.6" @@ -10561,6 +13057,11 @@ stack-utils@^2.0.3: dependencies: escape-string-regexp "^2.0.0" +stackframe@^1.3.4: + version "1.3.4" + resolved "https://registry.yarnpkg.com/stackframe/-/stackframe-1.3.4.tgz#b881a004c8c149a5e8efef37d51b16e412943310" + integrity sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw== + standard-changelog@^2.0.27: version "2.0.27" resolved "https://registry.yarnpkg.com/standard-changelog/-/standard-changelog-2.0.27.tgz#6249ab788979fe15573d5f521b6c504199ea1ef4" @@ -10588,6 +13089,13 @@ statuses@2.0.1: resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" integrity sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA== +stop-iteration-iterator@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/stop-iteration-iterator/-/stop-iteration-iterator-1.0.0.tgz#6a60be0b4ee757d1ed5254858ec66b10c49285e4" + integrity sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ== + dependencies: + internal-slot "^1.0.4" + str2buf@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/str2buf/-/str2buf-1.3.0.tgz#a4172afff4310e67235178e738a2dbb573abead0" @@ -10611,6 +13119,11 @@ strict-uri-encode@^2.0.0: resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz#b9c7330c7042862f6b142dc274bbcc5866ce3546" integrity sha512-QwiXZgpRcKkhTj2Scnn++4PKtWsH0kpzZ62L2R6c/LUVYv7hVnZqcg2+sMuT6R7Jusu1vviK/MFsu6kNJfWlEQ== +string-convert@^0.2.0: + version "0.2.1" + resolved "https://registry.yarnpkg.com/string-convert/-/string-convert-0.2.1.tgz#6982cc3049fbb4cd85f8b24568b9d9bf39eeff97" + integrity sha512-u/1tdPl4yQnPBjnVrmdLo9gtuLvELKsAoRapekWggdiQNvvvum+jYF329d84NAa660KQw7pB2n36KrIKVoXa3A== + string-length@^4.0.1: version "4.0.2" resolved "https://registry.yarnpkg.com/string-length/-/string-length-4.0.2.tgz#a8a8dc7bd5c1a82b9b3c8b87e125f66871b6e57a" @@ -10637,6 +13150,48 @@ 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.yarnpkg.com/string.prototype.matchall/-/string.prototype.matchall-4.0.10.tgz#a1553eb532221d4180c51581d6072cd65d1ee100" + integrity sha512-rGXbGmOEosIQi6Qva94HUjgPs9vKW+dkG7Y8Q5O2OYkWL6wFaTRZO8zM4mhP94uX55wgyrXzfS2aGtGzUL7EJQ== + 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" + +string.prototype.trim@^1.2.8: + version "1.2.8" + resolved "https://registry.yarnpkg.com/string.prototype.trim/-/string.prototype.trim-1.2.8.tgz#f9ac6f8af4bd55ddfa8895e6aea92a96395393bd" + integrity sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + +string.prototype.trimend@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.7.tgz#1bb3afc5008661d73e2dc015cd4853732d6c471e" + integrity sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + +string.prototype.trimstart@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.7.tgz#d4cdb44b83a4737ffbac2d406e405d43d0184298" + integrity sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + string_decoder@^1.1.1, string_decoder@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" @@ -10675,6 +13230,11 @@ strip-bom@^4.0.0: resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-4.0.0.tgz#9c3505c1db45bcedca3d9cf7a16f5c5aa3901878" integrity sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w== +strip-eof@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" + integrity sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q== + strip-final-newline@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" @@ -10702,6 +13262,11 @@ strip-json-comments@~2.0.1: resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" integrity sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ== +strip-outer@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/strip-outer/-/strip-outer-2.0.0.tgz#c45c724ed9b1ff6be5f660503791404f4714084b" + integrity sha512-A21Xsm1XzUkK0qK1ZrytDUvqsQWict2Cykhvi0fBQntGG5JSprESasEyV1EZ/4CiR5WB5KjzLTrP/bO37B0wPg== + strong-log-transformer@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/strong-log-transformer/-/strong-log-transformer-2.1.0.tgz#0f5ed78d325e0421ac6f90f7f10e691d6ae3ae10" @@ -10711,19 +13276,32 @@ strong-log-transformer@^2.1.0: minimist "^1.2.0" through "^2.3.4" +strtok3@^7.0.0-alpha.9: + version "7.0.0" + resolved "https://registry.yarnpkg.com/strtok3/-/strtok3-7.0.0.tgz#868c428b4ade64a8fd8fee7364256001c1a4cbe5" + integrity sha512-pQ+V+nYQdC5H3Q7qBZAz/MO6lwGhoC2gOAjuouGf/VO0m7vQRh8QNMl2Uf6SwAtzZ9bOw3UIeBukEGNJl5dtXQ== + dependencies: + "@tokenizer/token" "^0.3.0" + peek-readable "^5.0.0" + style-loader@^3.3.0: version "3.3.3" resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-3.3.3.tgz#bba8daac19930169c0c9c96706749a597ae3acff" integrity sha512-53BiGLXAcll9maCYtZi2RCQZKa8NQQai5C4horqKyRmHj9H7QmcUyucrH+4KW/gBQbXM2AsB0axoEcFZPlfPcw== -stylehacks@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/stylehacks/-/stylehacks-5.1.1.tgz#7934a34eb59d7152149fa69d6e9e56f2fc34bcc9" - integrity sha512-sBpcd5Hx7G6seo7b1LkpttvTz7ikD0LlH5RmdcBNb6fFR0Fl7LQwHDFr300q4cwUqi+IYrFGmsIHieMBfnN/Bw== +stylehacks@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/stylehacks/-/stylehacks-6.0.0.tgz#9fdd7c217660dae0f62e14d51c89f6c01b3cb738" + integrity sha512-+UT589qhHPwz6mTlCLSt/vMNTJx8dopeJlZAlBMJPWA3ORqu6wmQY7FBXf+qD+FsqoBJODyqNxOUP3jdntFRdw== dependencies: browserslist "^4.21.4" postcss-selector-parser "^6.0.4" +stylis@^4.0.13: + version "4.3.0" + resolved "https://registry.yarnpkg.com/stylis/-/stylis-4.3.0.tgz#abe305a669fc3d8777e10eefcfc73ad861c5588c" + integrity sha512-E87pIogpwUsUwXw7dNyU4QDjdgVMy52m+XEOPEKUn161cCzWjjhPSQhByfd1CcNvrOLnXQ6OnnZDwnJrz/Z4YQ== + stylus-loader@^7.1.0: version "7.1.3" resolved "https://registry.yarnpkg.com/stylus-loader/-/stylus-loader-7.1.3.tgz#1fdfa0d34e8c05a569bc0902e1ecdb857d764964" @@ -10732,18 +13310,15 @@ stylus-loader@^7.1.0: fast-glob "^3.2.12" normalize-path "^3.0.0" -stylus@^0.55.0: - version "0.55.0" - resolved "https://registry.yarnpkg.com/stylus/-/stylus-0.55.0.tgz#bd404a36dd93fa87744a9dd2d2b1b8450345e5fc" - integrity sha512-MuzIIVRSbc8XxHH7FjkvWqkIcr1BvoMZoR/oFuAJDlh7VSaNJzrB4uJ38GRQa+mWjLXODAMzeDe0xi9GYbGwnw== +stylus@^0.59.0: + version "0.59.0" + resolved "https://registry.yarnpkg.com/stylus/-/stylus-0.59.0.tgz#a344d5932787142a141946536d6e24e6a6be7aa6" + integrity sha512-lQ9w/XIOH5ZHVNuNbWW8D822r+/wBSO/d6XvtyHLF7LW4KaCIDeVbvn5DF8fGCJAUCwVhVi/h6J0NUcnylUEjg== dependencies: - css "^3.0.0" - debug "~3.1.0" + "@adobe/css-tools" "^4.0.1" + debug "^4.3.2" glob "^7.1.6" - mkdirp "~1.0.4" - safer-buffer "^2.1.2" sax "~1.2.4" - semver "^6.3.0" source-map "^0.7.3" supports-color@^5.3.0: @@ -10785,24 +13360,34 @@ supports-preserve-symlinks-flag@^1.0.0: resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== -svgo@^2.7.0: - version "2.8.0" - resolved "https://registry.yarnpkg.com/svgo/-/svgo-2.8.0.tgz#4ff80cce6710dc2795f0c7c74101e6764cfccd24" - integrity sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg== +svg-parser@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/svg-parser/-/svg-parser-2.0.4.tgz#fdc2e29e13951736140b76cb122c8ee6630eb6b5" + integrity sha512-e4hG1hRwoOdRb37cIMSgzNsxyzKfayW6VOflrwvR+/bzrkyxY/31WkbgnQpgtrNp1SdpJvpUAGTa/ZoiPNDuRQ== + +svgo@^3.0.2: + version "3.0.4" + resolved "https://registry.yarnpkg.com/svgo/-/svgo-3.0.4.tgz#67b40a710743e358e8d19ec288de8f1e388afbb4" + integrity sha512-T+Xul3JwuJ6VGXKo/p2ndqx1ibxNKnLTvRc1ZTWKCfyKS/GgNjRZcYsK84fxTsy/izr91g/Rwx6fGnVgaFSI5g== dependencies: "@trysound/sax" "0.2.0" commander "^7.2.0" - css-select "^4.1.3" - css-tree "^1.1.3" - csso "^4.2.0" + css-select "^5.1.0" + css-tree "^2.2.1" + css-what "^6.1.0" + csso "5.0.5" picocolors "^1.0.0" - stable "^0.1.8" swagger-ui-dist@4.18.2: version "4.18.2" resolved "https://registry.yarnpkg.com/swagger-ui-dist/-/swagger-ui-dist-4.18.2.tgz#323308f1c1d87a7c22ce3e273c31835eb680a71b" integrity sha512-oVBoBl9Dg+VJw8uRWDxlyUyHoNEDC0c1ysT6+Boy6CTgr2rUcLcfPon4RvxgS2/taNW6O0+US+Z/dlAsWFjOAQ== +symbol-tree@^3.2.4: + version "3.2.4" + resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2" + integrity sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw== + tapable@^2.1.1, tapable@^2.2.0, tapable@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.2.1.tgz#1967a73ef4060a82f12ab96af86d52fdb76eeca0" @@ -10871,9 +13456,9 @@ terser-webpack-plugin@^5.3.3, terser-webpack-plugin@^5.3.7: terser "^5.16.8" terser@^5.16.8: - version "5.22.0" - resolved "https://registry.yarnpkg.com/terser/-/terser-5.22.0.tgz#4f18103f84c5c9437aafb7a14918273310a8a49d" - integrity sha512-hHZVLgRA2z4NWcN6aS5rQDc+7Dcy58HOf2zbYwmFcQ+ua3h6eEFf5lIDKTzbWwlazPyOZsFQO8V80/IjVNExEw== + version "5.24.0" + resolved "https://registry.yarnpkg.com/terser/-/terser-5.24.0.tgz#4ae50302977bca4831ccc7b4fef63a3c04228364" + integrity sha512-ZpGR4Hy3+wBEzVEnHvstMvqpD/nABNelQn/z2r0fjVWGQsN3bpOLzQlqDxmb4CDZnXq5lpjnQ+mHQLAOpfM5iw== dependencies: "@jridgewell/source-map" "^0.3.3" acorn "^8.8.2" @@ -10904,6 +13489,11 @@ text-table@^0.2.0, text-table@~0.2.0: resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw== +throttle-debounce@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/throttle-debounce/-/throttle-debounce-5.0.0.tgz#a17a4039e82a2ed38a5e7268e4132d6960d41933" + integrity sha512-2iQTSgkkc1Zyk0MeVrt/3BvuOXYPl/R8Z0U2xxo9rjwNciaHDG3R+Lm6dh4EeUci49DanvBnuqI6jshoQQRGEg== + through2@^2.0.0, through2@~2.0.0: version "2.0.5" resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd" @@ -10958,11 +13548,41 @@ to-regex-range@^5.0.1: dependencies: is-number "^7.0.0" +toggle-selection@^1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/toggle-selection/-/toggle-selection-1.0.6.tgz#6e45b1263f2017fa0acc7d89d78b15b8bf77da32" + integrity sha512-BiZS+C1OS8g/q2RRbJmy59xpyghNBqrr6k5L/uKBGRsTfxmu3ffiRnd8mlGPUVayg8pvfi5urfnu8TU7DVOkLQ== + toidentifier@1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.1.tgz#3be34321a88a820ed1bd80dfaa33e479fbb8dd35" integrity sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA== +token-types@^5.0.0-alpha.2: + version "5.0.1" + resolved "https://registry.yarnpkg.com/token-types/-/token-types-5.0.1.tgz#aa9d9e6b23c420a675e55413b180635b86a093b4" + integrity sha512-Y2fmSnZjQdDb9W4w4r1tswlMHylzWIeOKpx0aZH9BgGtACHhrk3OkT52AzwcuqTRBZtvvnTjDBh8eynMulu8Vg== + dependencies: + "@tokenizer/token" "^0.3.0" + ieee754 "^1.2.1" + +tough-cookie@^4.1.2: + version "4.1.3" + resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-4.1.3.tgz#97b9adb0728b42280aa3d814b6b999b2ff0318bf" + integrity sha512-aX/y5pVRkfRnfmuX+OdbSdXvPe6ieKX/G2s7e98f4poJHnqH3281gDPm/metm6E/WRamfx7WC4HUqkWHfQHprw== + dependencies: + psl "^1.1.33" + punycode "^2.1.1" + universalify "^0.2.0" + url-parse "^1.5.3" + +tr46@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/tr46/-/tr46-3.0.0.tgz#555c4e297a950617e8eeddef633c87d4d9d6cbf9" + integrity sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA== + dependencies: + punycode "^2.1.1" + tr46@~0.0.3: version "0.0.3" resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" @@ -10973,7 +13593,7 @@ traverse@~0.6.6: resolved "https://registry.yarnpkg.com/traverse/-/traverse-0.6.7.tgz#46961cd2d57dd8706c36664acde06a248f1173fe" integrity sha512-/y956gpUo9ZNCb99YjxG7OaslxZWHfCHAUUfshwqOXmxUIvqLjVO581BT+gM59+QV9tFe6/CGG53tsA1Y7RSdg== -tree-kill@1.2.2, tree-kill@^1.2.2: +tree-kill@^1.2.2: version "1.2.2" resolved "https://registry.yarnpkg.com/tree-kill/-/tree-kill-1.2.2.tgz#4ca09a9092c88b73a7cdc5e8a01b507b0790a0cc" integrity sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A== @@ -10988,6 +13608,13 @@ trim-newlines@^3.0.0: resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-3.0.1.tgz#260a5d962d8b752425b32f3a7db0dcacd176c144" integrity sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw== +trim-repeated@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/trim-repeated/-/trim-repeated-2.0.0.tgz#5d60556d6d40d9461b7c7e06c3ac20b6b1d50090" + integrity sha512-QUHBFTJGdOwmp0tbOG505xAgOp/YliZP/6UgafFXYZ26WT1bvQmSMJUvkeVSASuJJHbqsFbynTvkd5W8RBTipg== + dependencies: + escape-string-regexp "^5.0.0" + ts-jest@^29.1.0: version "29.1.1" resolved "https://registry.yarnpkg.com/ts-jest/-/ts-jest-29.1.1.tgz#f58fe62c63caf7bfcc5cc6472082f79180f0815b" @@ -11003,9 +13630,9 @@ ts-jest@^29.1.0: yargs-parser "^21.0.1" ts-loader@^9.3.1: - version "9.5.0" - resolved "https://registry.yarnpkg.com/ts-loader/-/ts-loader-9.5.0.tgz#f0a51dda37cc4d8e43e6cb14edebbc599b0c3aa2" - integrity sha512-LLlB/pkB4q9mW2yLdFMnK3dEHbrBjeZTYguaaIfusyojBgAGf5kF+O6KcWqiGzWqHk0LBsoolrp4VftEURhybg== + version "9.5.1" + resolved "https://registry.yarnpkg.com/ts-loader/-/ts-loader-9.5.1.tgz#63d5912a86312f1fbe32cef0859fb8b2193d9b89" + integrity sha512-rNH3sK9kGZcH9dYzC7CewQm4NtxJTjSEVRJ2DyBZR7f8/wcta+iV44UPCXc5+nzDzivKtlzV6c9P4e+oFhDLYg== dependencies: chalk "^4.1.0" enhanced-resolve "^5.0.0" @@ -11041,6 +13668,16 @@ tsconfig-paths-webpack-plugin@4.0.0: enhanced-resolve "^5.7.0" tsconfig-paths "^4.0.0" +tsconfig-paths@^3.14.1: + version "3.14.2" + resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.14.2.tgz#6e32f1f79412decd261f92d633a9dc1cfa99f088" + integrity sha512-o/9iXgCYc5L/JxCHPe3Hvh8Q/2xm5Z+p18PESBU6Ff33695QnCHBEjcytY2q19ua7Mbl/DavtBOLq+oG0RCL+g== + dependencies: + "@types/json5" "^0.0.29" + json5 "^1.0.2" + minimist "^1.2.6" + strip-bom "^3.0.0" + tsconfig-paths@^4.0.0, tsconfig-paths@^4.1.2: version "4.2.0" resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-4.2.0.tgz#ef78e19039133446d244beac0fd6a1632e2d107c" @@ -11055,12 +13692,12 @@ tslib@2.5.3: resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.5.3.tgz#24944ba2d990940e6e982c4bea147aba80209913" integrity sha512-mSxlJJwl3BMEQCUNnxXBU9jP4JBktcEGhURcPR6VQVlnP0FdDEsIaz0C35dXNGLyRfrATNofF0F5p2KPxQgB+w== -tslib@2.6.2, tslib@^2.0.0, tslib@^2.1.0, tslib@^2.3.0, tslib@^2.4.0, tslib@^2.5.0, tslib@^2.6.1, tslib@^2.6.2: +tslib@2.6.2, tslib@^2.0.0, tslib@^2.0.3, tslib@^2.1.0, tslib@^2.3.0, tslib@^2.4.0, tslib@^2.5.0, tslib@^2.6.1, tslib@^2.6.2: version "2.6.2" resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.2.tgz#703ac29425e7b37cd6fd456e92404d46d1f3e4ae" integrity sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q== -tslib@^1.8.1, tslib@^1.9.0, tslib@^1.9.3: +tslib@^1.8.1, tslib@^1.9.3: version "1.14.1" resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== @@ -11146,9 +13783,9 @@ type-fest@^3.0.0, type-fest@^3.8.0: integrity sha512-tLq3bSNx+xSpwvAJnzrK0Ep5CLNWjvFTOp71URMaAEWBfRb9nnJiBoUe0tF8bI4ZFO3omgBR6NvnbzVUT3Ly4g== type-fest@^4.2.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-4.5.0.tgz#79208f4dbb8a9946a55889e9f482b95a3292ee41" - integrity sha512-diLQivFzddJl4ylL3jxSkEc39Tpw7o1QeEHIPxVwryDK2lpB7Nqhzhuo6v5/Ls08Z0yPSAhsyAWlv1/H0ciNmw== + version "4.8.2" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-4.8.2.tgz#20d4cc287745723dbabf925de644eeb7de0349c1" + integrity sha512-mcvrCjixA5166hSrUoJgGb9gBQN4loMYyj9zxuMs/66ibHNEFd5JXMw37YVDx58L4/QID9jIzdTBB4mDwDJ6KQ== type-is@^1.6.4, type-is@~1.6.18: version "1.6.18" @@ -11168,6 +13805,45 @@ type@^2.7.2: resolved "https://registry.yarnpkg.com/type/-/type-2.7.2.tgz#2376a15a3a28b1efa0f5350dcf72d24df6ef98d0" integrity sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw== +typed-array-buffer@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/typed-array-buffer/-/typed-array-buffer-1.0.0.tgz#18de3e7ed7974b0a729d3feecb94338d1472cd60" + integrity sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.2.1" + is-typed-array "^1.1.10" + +typed-array-byte-length@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/typed-array-byte-length/-/typed-array-byte-length-1.0.0.tgz#d787a24a995711611fb2b87a4052799517b230d0" + integrity sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA== + dependencies: + call-bind "^1.0.2" + for-each "^0.3.3" + has-proto "^1.0.1" + is-typed-array "^1.1.10" + +typed-array-byte-offset@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/typed-array-byte-offset/-/typed-array-byte-offset-1.0.0.tgz#cbbe89b51fdef9cd6aaf07ad4707340abbc4ea0b" + integrity sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg== + dependencies: + available-typed-arrays "^1.0.5" + call-bind "^1.0.2" + for-each "^0.3.3" + has-proto "^1.0.1" + is-typed-array "^1.1.10" + +typed-array-length@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/typed-array-length/-/typed-array-length-1.0.4.tgz#89d83785e5c4098bec72e08b319651f0eac9c1bb" + integrity sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng== + dependencies: + call-bind "^1.0.2" + for-each "^0.3.3" + is-typed-array "^1.1.9" + typed-assert@^1.0.8: version "1.0.9" resolved "https://registry.yarnpkg.com/typed-assert/-/typed-assert-1.0.9.tgz#8af9d4f93432c4970ec717e3006f33f135b06213" @@ -11183,6 +13859,11 @@ typescript@~4.9.5: resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.9.5.tgz#095979f9bcc0d09da324d58d03ce8f8374cbe65a" integrity sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g== +typescript@~5.1.3: + version "5.1.6" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.1.6.tgz#02f8ac202b6dad2c0dd5e0913745b47a37998274" + integrity sha512-zaWCozRZ6DLEWAWFrVDz1H6FVXzUSfTy5FUMWsQlU8Ym5JP9eO4xkTIROFCQvhQf61z6O/G6ugw3SgAnvvm+HA== + uglify-js@^3.1.4: version "3.17.4" resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.17.4.tgz#61678cf5fa3f5b7eb789bb345df29afb8257c22c" @@ -11195,10 +13876,20 @@ uid@2.0.2: dependencies: "@lukeed/csprng" "^1.0.0" -undici-types@~5.25.1: - version "5.25.3" - resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-5.25.3.tgz#e044115914c85f0bcbb229f346ab739f064998c3" - integrity sha512-Ga1jfYwRn7+cP9v8auvEXN1rX3sWqlayd4HP7OKk4mZWylEmu3KzXDUGrQUN6Ol7qo1gPvB2e5gX6udnyEPgdA== +unbox-primitive@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/unbox-primitive/-/unbox-primitive-1.0.2.tgz#29032021057d5e6cdbd08c5129c226dff8ed6f9e" + integrity sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw== + dependencies: + call-bind "^1.0.2" + has-bigints "^1.0.2" + has-symbols "^1.0.3" + which-boxed-primitive "^1.0.2" + +undici-types@~5.26.4: + version "5.26.5" + resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-5.26.5.tgz#bcd539893d00b56e964fd2657a4866b221a65617" + integrity sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA== unicode-canonical-property-names-ecmascript@^2.0.0: version "2.0.0" @@ -11223,6 +13914,25 @@ unicode-property-aliases-ecmascript@^2.0.0: resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz#43d41e3be698bd493ef911077c9b131f827e8ccd" integrity sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w== +unicorn-magic@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/unicorn-magic/-/unicorn-magic-0.1.0.tgz#1bb9a51c823aaf9d73a8bfcd3d1a23dde94b0ce4" + integrity sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ== + +union@~0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/union/-/union-0.5.0.tgz#b2c11be84f60538537b846edb9ba266ba0090075" + integrity sha512-N6uOhuW6zO95P3Mel2I2zMsbsanvvtgn6jVqJv4vbVcz/JN0OkL9suomjQGmWtxJQXOCqUJvquc1sMeNz/IwlA== + dependencies: + qs "^6.4.0" + +unique-filename@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.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.yarnpkg.com/unique-filename/-/unique-filename-3.0.0.tgz#48ba7a5a16849f5080d26c760c86cf5cf05770ea" @@ -11230,6 +13940,13 @@ unique-filename@^3.0.0: dependencies: unique-slug "^4.0.0" +unique-slug@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.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.yarnpkg.com/unique-slug/-/unique-slug-4.0.0.tgz#6bae6bb16be91351badd24cdce741f892a6532e3" @@ -11245,14 +13962,19 @@ unique-string@^3.0.0: crypto-random-string "^4.0.0" universal-user-agent@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/universal-user-agent/-/universal-user-agent-6.0.0.tgz#3381f8503b251c0d9cd21bc1de939ec9df5480ee" - integrity sha512-isyNax3wXoKaulPDZWHQqbmIx1k2tb9fb3GGDBRxCscfYV2Ch7WxPArBsFEG8s/safwXTT7H4QGhaIkTp9447w== + version "6.0.1" + resolved "https://registry.yarnpkg.com/universal-user-agent/-/universal-user-agent-6.0.1.tgz#15f20f55da3c930c57bddbf1734c6654d5fd35aa" + integrity sha512-yCzhz6FN2wU1NiiQRogkTQszlQSlpWaw8SvVegAc+bDxbzHgh1vX8uIe8OYyMH6DwH+sdTJsgMl36+mSMdRJIQ== + +universalify@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.2.0.tgz#6451760566fa857534745ab1dde952d1b1761be0" + integrity sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg== universalify@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717" - integrity sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ== + version "2.0.1" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.1.tgz#168efc2180964e6386d061e094df61afe239b18d" + integrity sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw== unpipe@1.0.0, unpipe@~1.0.0: version "1.0.0" @@ -11274,7 +13996,7 @@ uri-js@^4.2.2: dependencies: punycode "^2.1.0" -url-join@^4.0.0: +url-join@^4.0.0, url-join@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/url-join/-/url-join-4.0.1.tgz#b642e21a2646808ffa178c4c5fda39844e12cde7" integrity sha512-jk1+QP6ZJqyOiuEI9AEWQfju/nB2Pw466kbA0LEZljHwKeMgd9WrAEgEGxjPDD2+TNbbb37rTyhEfrCXfuKXnA== @@ -11284,6 +14006,28 @@ url-join@^5.0.0: resolved "https://registry.yarnpkg.com/url-join/-/url-join-5.0.0.tgz#c2f1e5cbd95fa91082a93b58a1f42fecb4bdbcf1" integrity sha512-n2huDr9h9yzd6exQVnH/jU5mr+Pfx08LRXXZhkLLetAMESRj+anQsTAh940iMrIetKAmry9coFuZQ2jY8/p3WA== +url-loader@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/url-loader/-/url-loader-4.1.1.tgz#28505e905cae158cf07c92ca622d7f237e70a4e2" + integrity sha512-3BTV812+AVHHOJQO8O5MkWgZ5aosP7GnROJwvzLS9hWDj00lZ6Z0wNak423Lp9PBZN05N+Jk/N5Si8jRAlGyWA== + dependencies: + loader-utils "^2.0.0" + mime-types "^2.1.27" + schema-utils "^3.0.0" + +url-parse@^1.5.3: + version "1.5.10" + resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.5.10.tgz#9d3c2f736c1d75dd3bd2be507dcc111f1e2ea9c1" + integrity sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ== + dependencies: + querystringify "^2.1.1" + requires-port "^1.0.0" + +use-sync-external-store@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/use-sync-external-store/-/use-sync-external-store-1.2.0.tgz#7dbefd6ef3fe4e767a0cf5d7287aacfb5846928a" + integrity sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA== + util-deprecate@^1.0.1, util-deprecate@^1.0.2, util-deprecate@~1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" @@ -11341,9 +14085,9 @@ v8-compile-cache@^2.0.3: integrity sha512-ocyWc3bAHBB/guyqJQVI5o4BZkPhznPYUG2ea80Gond/BgNWpap8TOmLSeeQG7bnh2KMISxskdADG59j7zruhw== v8-to-istanbul@^9.0.1: - version "9.1.3" - resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-9.1.3.tgz#ea456604101cd18005ac2cae3cdd1aa058a6306b" - integrity sha512-9lDD+EVI2fjFsMWXc6dy5JJzBsVTcQ2fVkfBvncZ6xJWG9wtBhOldG+mHkSL0+V1K/xgZz0JDO5UT5hFwHUghg== + version "9.2.0" + resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-9.2.0.tgz#2ed7644a245cddd83d4e087b9b33b3e62dfd10ad" + integrity sha512-/EH/sDgxU2eGxajKdwLCDmQ4FWq+kpi3uCmBGpw1xJtnAxEjlD8j8PEiGWpCIMIs3ciNAgH0d3TTJiUkYzyZjA== dependencies: "@jridgewell/trace-mapping" "^0.3.12" "@types/istanbul-lib-coverage" "^2.0.1" @@ -11379,6 +14123,13 @@ vary@^1, vary@~1.1.2: resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" integrity sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg== +w3c-xmlserializer@^4.0.0: + version "4.0.0" + 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" + walk-up-path@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/walk-up-path/-/walk-up-path-3.0.1.tgz#c8d78d5375b4966c717eb17ada73dbd41490e886" @@ -11442,6 +14193,11 @@ webidl-conversions@^3.0.0: resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" integrity sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ== +webidl-conversions@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-7.0.0.tgz#256b4e1882be7debbf01d05f0aa2039778ea080a" + integrity sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g== + webpack-dev-middleware@^5.3.1: version "5.3.3" resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-5.3.3.tgz#efae67c2793908e7311f1d9b06f2a08dcc97e51f" @@ -11506,7 +14262,7 @@ webpack-subresource-integrity@^5.1.0: dependencies: typed-assert "^1.0.8" -webpack@^5.75.0: +webpack@^5.80.0: version "5.89.0" resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.89.0.tgz#56b8bf9a34356e93a6625770006490bf3a7f32dc" integrity sha512-qyfIC10pOr70V+jkmud8tMfajraGCZMBWJtrmuBymQKCrLTRejBI8STDp1MCyZu/QTdZSeacCQYpYNQVOzX5kw== @@ -11550,6 +14306,26 @@ websocket-extensions@>=0.1.1: resolved "https://registry.yarnpkg.com/websocket-extensions/-/websocket-extensions-0.1.4.tgz#7f8473bc839dfd87608adb95d7eb075211578a42" integrity sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg== +whatwg-encoding@^2.0.0: + version "2.0.0" + 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@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-3.0.0.tgz#5fa1a7623867ff1af6ca3dc72ad6b8a4208beba7" + integrity sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q== + +whatwg-url@^11.0.0: + version "11.0.0" + 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@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d" @@ -11558,7 +14334,28 @@ whatwg-url@^5.0.0: tr46 "~0.0.3" webidl-conversions "^3.0.0" -which-typed-array@^1.1.11, which-typed-array@^1.1.2: +which-boxed-primitive@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz#13757bc89b209b049fe5d86430e21cf40a89a8e6" + integrity sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg== + dependencies: + is-bigint "^1.0.1" + is-boolean-object "^1.1.0" + is-number-object "^1.0.4" + is-string "^1.0.5" + is-symbol "^1.0.3" + +which-collection@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/which-collection/-/which-collection-1.0.1.tgz#70eab71ebbbd2aefaf32f917082fc62cdcb70906" + integrity sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A== + dependencies: + is-map "^2.0.1" + is-set "^2.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: version "1.1.13" resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.13.tgz#870cd5be06ddb616f504e7b039c4c24898184d36" integrity sha512-P5Nra0qjSncduVPEAr7xhoF5guty49ArDTwzJ/yNuPIbZppyRxFQsRCWrocxIY+CnMVG+qfbU2FmDKyvSGClow== @@ -11569,6 +14366,13 @@ which-typed-array@^1.1.11, which-typed-array@^1.1.2: gopd "^1.0.1" has-tostringtag "^1.0.0" +which@^1.2.9: + version "1.3.1" + resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" + integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== + dependencies: + isexe "^2.0.0" + which@^2.0.1, which@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" @@ -11634,11 +14438,21 @@ write-file-atomic@^5.0.0, write-file-atomic@^5.0.1: imurmurhash "^0.1.4" signal-exit "^4.0.1" -ws@8.14.2, ws@^8.13.0: +ws@8.14.2, ws@^8.11.0, ws@^8.13.0: version "8.14.2" resolved "https://registry.yarnpkg.com/ws/-/ws-8.14.2.tgz#6c249a806eb2db7a20d26d51e7709eab7b2e6c7f" integrity sha512-wEBG1ftX4jcglPxgFCMJmZ2PLtSbJ2Peg6TmpJFTbe9GZYOQCDPdMYu/Tm0/bGZkw8paZnJY45J4K2PZrLYq8g== +xml-name-validator@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-4.0.0.tgz#79a006e2e63149a8600f15430f0a4725d1524835" + integrity sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw== + +xmlchars@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/xmlchars/-/xmlchars-2.2.0.tgz#060fe1bcb7f9c76fe2a17db86a9bc3ab894210cb" + integrity sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw== + xtend@^4.0.0, xtend@~4.0.1: version "4.0.2" resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" @@ -11649,6 +14463,11 @@ y18n@^5.0.5: resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== +yallist@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" + integrity sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A== + yallist@^3.0.2: version "3.1.1" resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" @@ -11659,7 +14478,7 @@ yallist@^4.0.0: resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== -yaml@^1.10.0, yaml@^1.10.2, yaml@^1.7.2: +yaml@^1.10.0, yaml@^1.7.2: version "1.10.2" resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b" integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==