diff --git a/.dokku/README.md b/.dokku/README.md deleted file mode 100644 index de1395d..0000000 --- a/.dokku/README.md +++ /dev/null @@ -1,3 +0,0 @@ -https://dokku.com/docs/advanced-usage/deployment-tasks/?h=monorepo#changing-the-appjson-location - -https://dokku.com/docs/deployment/builders/dockerfiles/ \ No newline at end of file diff --git a/.dokku/next.app.json b/.dokku/next.app.json deleted file mode 100644 index 52a68e0..0000000 --- a/.dokku/next.app.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "scripts": { - "dokku": { - "predeploy": "echo hello-world-predeploy", - "postdeploy": "echo hello-world-postdeploy" - } - } -} \ No newline at end of file diff --git a/README.md b/README.md index 21b498e..f013ab0 100644 --- a/README.md +++ b/README.md @@ -4,10 +4,3 @@ Source Code for https://futureporn.net See ./ARCHITECTURE.md for overview - -## Jun update todo list - -* [x] external-dns gameplan -* [ ] traefik well understood -* [ ] staging test with *.futureporn.net domains - diff --git a/charts/fp/README.md b/charts/fp/README.md index a1eab55..cdbf4eb 100644 --- a/charts/fp/README.md +++ b/charts/fp/README.md @@ -1,9 +1,5 @@ -This chart was originally created by Kompose. +# Futureporn helm chart -Then I realized I don't understand kubernetes. +This is the chart with templates that define Futureporn kubernetes cluster -It was too complex. - -I needed to start over, understand each piece before moving on. - -so we're starting small, incrementally migrating services to the cluster. \ No newline at end of file +https://helm.sh/docs/topics/charts/ \ No newline at end of file diff --git a/charts/fp/templates/echo.yaml b/charts/fp/templates/echo.yaml index 40dbef3..dd1545f 100644 --- a/charts/fp/templates/echo.yaml +++ b/charts/fp/templates/echo.yaml @@ -108,6 +108,9 @@ spec: routes: - match: Host(`echo.fp.sbtp.xyz`) kind: Rule + middlewares: + - name: redirect + namespace: futureporn services: - name: echo namespace: futureporn @@ -127,9 +130,6 @@ spec: routes: - match: Host(`echo.fp.sbtp.xyz`) kind: Rule - middlewares: - - name: redirect - namespace: futureporn services: - name: echo namespace: futureporn diff --git a/charts/fp/templates/scout.yaml b/charts/fp/templates/scout.yaml index db1a08d..21c2365 100644 --- a/charts/fp/templates/scout.yaml +++ b/charts/fp/templates/scout.yaml @@ -33,7 +33,7 @@ spec: - name: CDN_BUCKET_URL value: "{{ .Values.scout.cdnBucketUrl }}" - name: STRAPI_URL - value: https://strapi.piko.sbtp.xyz + value: https://strapi.fp.sbtp.xyz - name: S3_BUCKET_APPLICATION_KEY valueFrom: secretKeyRef: @@ -156,7 +156,7 @@ spec: # - name: CDN_BUCKET_URL # value: "{{ .Values.scout.cdnBucketUrl }}" # - name: STRAPI_URL - # value: https://strapi.piko.sbtp.xyz + # value: https://strapi.fp.sbtp.xyz # - name: SCOUT_NITTER_ACCESS_KEY # valueFrom: # secretKeyRef: diff --git a/charts/fp/templates/strapi.yaml b/charts/fp/templates/strapi.yaml index 8d3fac9..7d3e5bc 100644 --- a/charts/fp/templates/strapi.yaml +++ b/charts/fp/templates/strapi.yaml @@ -116,13 +116,13 @@ spec: secretKeyRef: name: strapi key: sendgridApiKey - - name: STRAPI_URL - value: "{{ .Values.strapi.url }}" - name: TRANSFER_TOKEN_SALT valueFrom: secretKeyRef: name: strapi key: transferTokenSalt + - name: STRAPI_URL + value: "{{ .Values.strapi.url }}" - name: PORT value: "{{ .Values.strapi.port }}" resources: diff --git a/d.next.dockerfile b/d.next.dockerfile index a58836d..2a2fe7a 100644 --- a/d.next.dockerfile +++ b/d.next.dockerfile @@ -18,6 +18,7 @@ ENV NEXT_PUBLIC_SITE_URL ${NEXT_PUBLIC_SITE_URL} ENV NEXT_PUBLIC_STRAPI_URL ${NEXT_PUBLIC_STRAPI_URL} ENV NEXT_PUBLIC_UPPY_COMPANION_URL ${NEXT_PUBLIC_UPPY_COMPANION_URL} ENV NEXT_TELEMETRY_DISABLED 1 +ENV NODE_EXTRA_CA_CERTS "/app/letsencrypt-stg-root-x1.pem" COPY pnpm-lock.yaml ./ RUN pnpm fetch COPY ./packages/next /app diff --git a/d.realtime.dockerfile b/d.realtime.dockerfile deleted file mode 100644 index 0368a93..0000000 --- a/d.realtime.dockerfile +++ /dev/null @@ -1,14 +0,0 @@ -FROM node:20-alpine -WORKDIR /app -ENV PNPM_HOME="/pnpm" -ENV PATH="$PNPM_HOME:$PATH" -RUN corepack enable -RUN apk update - -ENV NODE_ENV=production -COPY pnpm-lock.yaml ./ -RUN pnpm fetch -COPY ./packages/realtime /app - -ENTRYPOINT ["pnpm"] -CMD ["run", "start"] diff --git a/d.strapi-app.dockerfile b/d.strapi-app.dockerfile deleted file mode 100644 index 335c6d8..0000000 --- a/d.strapi-app.dockerfile +++ /dev/null @@ -1,19 +0,0 @@ -FROM node:18-alpine3.18 -# Installing libvips-dev for sharp Compatibility -RUN apk update && apk add --no-cache build-base gcc autoconf automake zlib-dev libpng-dev nasm bash vips-dev git -ARG NODE_ENV=development -ENV NODE_ENV=${NODE_ENV} - -WORKDIR /opt/ -COPY ./packages/strapi-app/package.json ./packages/strapi-app/yarn.lock ./ -RUN yarn global add node-gyp -RUN yarn config set network-timeout 600000 -g && yarn install -ENV PATH /opt/node_modules/.bin:$PATH - -WORKDIR /opt/app -COPY ./packages/strapi-app/ . -RUN chown -R node:node /opt/app -USER node -RUN ["yarn", "build"] -EXPOSE 1338 -CMD ["yarn", "develop", "--debug"] \ No newline at end of file diff --git a/d.strapi.dev.dockerfile b/d.strapi.dev.dockerfile new file mode 100644 index 0000000..3bd3844 --- /dev/null +++ b/d.strapi.dev.dockerfile @@ -0,0 +1,22 @@ +FROM node:18 +# Installing libvips-dev for sharp Compatibility +# RUN apk update && apk add --no-cache build-base gcc autoconf automake zlib-dev libpng-dev nasm bash vips-dev git +RUN corepack enable +ENV PNPM_HOME="/pnpm" +ENV PATH="$PNPM_HOME:$PATH" +ARG NODE_ENV=development +ENV NODE_ENV=${NODE_ENV} + +WORKDIR /opt/ +COPY ./packages/strapi/package.json ./packages/strapi/pnpm-lock.yaml ./ +RUN --mount=type=cache,id=pnpm,target=/pnpm/store pnpm install -g node-gyp +RUN --mount=type=cache,id=pnpm,target=/pnpm/store pnpm install --frozen-lockfile +ENV PATH /opt/node_modules/.bin:$PATH + +WORKDIR /opt/app +COPY ./packages/strapi/. . +RUN chown -R node:node /opt/app +USER node +RUN ["pnpm", "run", "build"] +EXPOSE 1339 +CMD ["pnpm", "run", "develop"] diff --git a/d.strapi.dockerfile b/d.strapi.dockerfile index 0c74988..4600e42 100644 --- a/d.strapi.dockerfile +++ b/d.strapi.dockerfile @@ -7,4 +7,4 @@ COPY ./packages/strapi/package.json ./packages/strapi/pnpm-lock.yaml . RUN --mount=type=cache,id=pnpm,target=/pnpm/store pnpm install --frozen-lockfile COPY ./packages/strapi/ . RUN ["pnpm", "run", "build"] -CMD ["pnpm", "run", "dev"] +CMD ["pnpm", "run", "develop"] diff --git a/d.strapi.dockerfile.idk2 b/d.strapi.dockerfile.idk2 deleted file mode 100644 index bd7ade9..0000000 --- a/d.strapi.dockerfile.idk2 +++ /dev/null @@ -1,24 +0,0 @@ -FROM node:20-alpine as base -WORKDIR /app -ENV PNPM_HOME="/pnpm" -ENV PATH="$PNPM_HOME:$PATH" -RUN corepack enable -RUN apk update && apk add --no-cache build-base gcc autoconf automake zlib-dev libpng-dev vips-dev libc6-compat git nasm bash gcompat - -FROM base AS install -COPY ./packages/strapi/pnpm-lock.yaml ./packages/strapi/package.json ./ -RUN pnpm install --prod --shamefully-hoist && pnpm run build -COPY ./packages/strapi . -RUN chown -R node:node /app -USER node - - -FROM install AS dev -ENV NODE_ENV=development -ENTRYPOINT ["pnpm"] -CMD ["run", "dev"] - -FROM install AS release -ENV NODE_ENV=production -ENTRYPOINT ["pnpm"] -CMD ["run", "start"] \ No newline at end of file diff --git a/d.strapi.dockerfile.yarn b/d.strapi.dockerfile.yarn deleted file mode 100644 index 3d6193b..0000000 --- a/d.strapi.dockerfile.yarn +++ /dev/null @@ -1,20 +0,0 @@ -FROM node:18-alpine3.18 -RUN echo "do a rebuild, yuou fucking shit!" -# Installing libvips-dev for sharp Compatibility -RUN apk update && apk add --no-cache build-base gcc autoconf automake zlib-dev libpng-dev nasm bash vips-dev git -ARG NODE_ENV=development -ENV NODE_ENV=${NODE_ENV} - -WORKDIR /opt/ -COPY package.json yarn.lock ./ -RUN yarn global add node-gyp -RUN yarn config set network-timeout 600000 -g && yarn install -ENV PATH /opt/node_modules/.bin:$PATH - -WORKDIR /opt/app -COPY . . -RUN chown -R node:node /opt/app -USER node -RUN ["yarn", "build"] -EXPOSE 1339 -CMD ["yarn", "start"] \ No newline at end of file diff --git a/flux/README.md b/flux/README.md new file mode 100644 index 0000000..8d52bed --- /dev/null +++ b/flux/README.md @@ -0,0 +1,3 @@ +# Futureporn flux + +Gitops https://fluxcd.io/flux/get-started/ \ No newline at end of file diff --git a/apps/base/fp/kustomization.yaml b/flux/apps/base/fp/kustomization.yaml similarity index 100% rename from apps/base/fp/kustomization.yaml rename to flux/apps/base/fp/kustomization.yaml diff --git a/apps/base/fp/release.yaml b/flux/apps/base/fp/release.yaml similarity index 100% rename from apps/base/fp/release.yaml rename to flux/apps/base/fp/release.yaml diff --git a/apps/base/fp/repository.yaml b/flux/apps/base/fp/repository.yaml similarity index 100% rename from apps/base/fp/repository.yaml rename to flux/apps/base/fp/repository.yaml diff --git a/apps/base/podinfo/kustomization.yaml b/flux/apps/base/podinfo/kustomization.yaml similarity index 100% rename from apps/base/podinfo/kustomization.yaml rename to flux/apps/base/podinfo/kustomization.yaml diff --git a/apps/base/podinfo/namespace.yaml b/flux/apps/base/podinfo/namespace.yaml similarity index 100% rename from apps/base/podinfo/namespace.yaml rename to flux/apps/base/podinfo/namespace.yaml diff --git a/apps/base/podinfo/release.yaml b/flux/apps/base/podinfo/release.yaml similarity index 100% rename from apps/base/podinfo/release.yaml rename to flux/apps/base/podinfo/release.yaml diff --git a/apps/base/podinfo/repository.yaml b/flux/apps/base/podinfo/repository.yaml similarity index 100% rename from apps/base/podinfo/repository.yaml rename to flux/apps/base/podinfo/repository.yaml diff --git a/apps/base/temporal/kustomization.yaml b/flux/apps/base/temporal/kustomization.yaml similarity index 100% rename from apps/base/temporal/kustomization.yaml rename to flux/apps/base/temporal/kustomization.yaml diff --git a/apps/base/temporal/release.yaml b/flux/apps/base/temporal/release.yaml similarity index 100% rename from apps/base/temporal/release.yaml rename to flux/apps/base/temporal/release.yaml diff --git a/apps/base/temporal/repository.yaml b/flux/apps/base/temporal/repository.yaml similarity index 100% rename from apps/base/temporal/repository.yaml rename to flux/apps/base/temporal/repository.yaml diff --git a/apps/production/fp-values.yaml b/flux/apps/production/fp-values.yaml similarity index 100% rename from apps/production/fp-values.yaml rename to flux/apps/production/fp-values.yaml diff --git a/apps/production/kustomization.yaml b/flux/apps/production/kustomization.yaml similarity index 100% rename from apps/production/kustomization.yaml rename to flux/apps/production/kustomization.yaml diff --git a/apps/staging/fp-values.yaml b/flux/apps/staging/fp-values.yaml similarity index 100% rename from apps/staging/fp-values.yaml rename to flux/apps/staging/fp-values.yaml diff --git a/apps/staging/kustomization.yaml b/flux/apps/staging/kustomization.yaml similarity index 100% rename from apps/staging/kustomization.yaml rename to flux/apps/staging/kustomization.yaml diff --git a/apps/staging/podinfo-values.yaml b/flux/apps/staging/podinfo-values.yaml similarity index 100% rename from apps/staging/podinfo-values.yaml rename to flux/apps/staging/podinfo-values.yaml diff --git a/clusters/production/apps.yaml b/flux/clusters/production/apps.yaml similarity index 100% rename from clusters/production/apps.yaml rename to flux/clusters/production/apps.yaml diff --git a/clusters/production/flux-system/gotk-components.yaml b/flux/clusters/production/flux-system/gotk-components.yaml similarity index 100% rename from clusters/production/flux-system/gotk-components.yaml rename to flux/clusters/production/flux-system/gotk-components.yaml diff --git a/clusters/production/flux-system/gotk-sync.yaml b/flux/clusters/production/flux-system/gotk-sync.yaml similarity index 100% rename from clusters/production/flux-system/gotk-sync.yaml rename to flux/clusters/production/flux-system/gotk-sync.yaml diff --git a/clusters/production/flux-system/kustomization.yaml b/flux/clusters/production/flux-system/kustomization.yaml similarity index 100% rename from clusters/production/flux-system/kustomization.yaml rename to flux/clusters/production/flux-system/kustomization.yaml diff --git a/clusters/production/infrastructure.yaml b/flux/clusters/production/infrastructure.yaml similarity index 100% rename from clusters/production/infrastructure.yaml rename to flux/clusters/production/infrastructure.yaml diff --git a/clusters/staging/apps.yaml b/flux/clusters/staging/apps.yaml similarity index 100% rename from clusters/staging/apps.yaml rename to flux/clusters/staging/apps.yaml diff --git a/clusters/staging/flux-system/gotk-components.yaml b/flux/clusters/staging/flux-system/gotk-components.yaml similarity index 100% rename from clusters/staging/flux-system/gotk-components.yaml rename to flux/clusters/staging/flux-system/gotk-components.yaml diff --git a/clusters/staging/flux-system/gotk-sync.yaml b/flux/clusters/staging/flux-system/gotk-sync.yaml similarity index 100% rename from clusters/staging/flux-system/gotk-sync.yaml rename to flux/clusters/staging/flux-system/gotk-sync.yaml diff --git a/clusters/staging/flux-system/kustomization.yaml b/flux/clusters/staging/flux-system/kustomization.yaml similarity index 100% rename from clusters/staging/flux-system/kustomization.yaml rename to flux/clusters/staging/flux-system/kustomization.yaml diff --git a/clusters/staging/infrastructure.yaml b/flux/clusters/staging/infrastructure.yaml similarity index 100% rename from clusters/staging/infrastructure.yaml rename to flux/clusters/staging/infrastructure.yaml diff --git a/infrastructure/configs/cluster-issuers.yaml b/flux/infrastructure/configs/cluster-issuers.yaml similarity index 100% rename from infrastructure/configs/cluster-issuers.yaml rename to flux/infrastructure/configs/cluster-issuers.yaml diff --git a/infrastructure/configs/kustomization.yaml b/flux/infrastructure/configs/kustomization.yaml similarity index 100% rename from infrastructure/configs/kustomization.yaml rename to flux/infrastructure/configs/kustomization.yaml diff --git a/infrastructure/controllers/cert-manager.yaml b/flux/infrastructure/controllers/cert-manager.yaml similarity index 100% rename from infrastructure/controllers/cert-manager.yaml rename to flux/infrastructure/controllers/cert-manager.yaml diff --git a/infrastructure/controllers/grafana-k8s-dashboards.yaml b/flux/infrastructure/controllers/grafana-k8s-dashboards.yaml similarity index 100% rename from infrastructure/controllers/grafana-k8s-dashboards.yaml rename to flux/infrastructure/controllers/grafana-k8s-dashboards.yaml diff --git a/infrastructure/controllers/ingress-nginx.yaml b/flux/infrastructure/controllers/ingress-nginx.yaml similarity index 100% rename from infrastructure/controllers/ingress-nginx.yaml rename to flux/infrastructure/controllers/ingress-nginx.yaml diff --git a/infrastructure/controllers/ingress-traefik.yaml b/flux/infrastructure/controllers/ingress-traefik.yaml similarity index 100% rename from infrastructure/controllers/ingress-traefik.yaml rename to flux/infrastructure/controllers/ingress-traefik.yaml diff --git a/infrastructure/controllers/kube-prometheus-stack.yaml b/flux/infrastructure/controllers/kube-prometheus-stack.yaml similarity index 100% rename from infrastructure/controllers/kube-prometheus-stack.yaml rename to flux/infrastructure/controllers/kube-prometheus-stack.yaml diff --git a/infrastructure/controllers/kustomization.yaml b/flux/infrastructure/controllers/kustomization.yaml similarity index 100% rename from infrastructure/controllers/kustomization.yaml rename to flux/infrastructure/controllers/kustomization.yaml diff --git a/packages/README.md b/packages/README.md new file mode 100644 index 0000000..fd025e7 --- /dev/null +++ b/packages/README.md @@ -0,0 +1,5 @@ +# Futureporn node packages + +Each folder here is an individual node package + +See https://pnpm.io/workspaces \ No newline at end of file diff --git a/packages/next/app/components/archive-progress.tsx b/packages/next/app/components/archive-progress.tsx index 61dcf56..1a6d84e 100644 --- a/packages/next/app/components/archive-progress.tsx +++ b/packages/next/app/components/archive-progress.tsx @@ -14,7 +14,7 @@ export default async function ArchiveProgress ({ vtuber }: IArchiveProgressProps const issueStreams = await getStreamCountForVtuber(vtuber.id, ['issue']) const totalStreams = await getStreamCountForVtuber(vtuber.id) const eligibleStreams = goodStreams+issueStreams - const completedPercentage = (eligibleStreams / totalStreams) * 100 + const completedPercentage = Math.floor((eligibleStreams / totalStreams) * 100) return (
diff --git a/packages/next/app/components/auth.tsx b/packages/next/app/components/auth.tsx
index e732be5..bd57301 100644
--- a/packages/next/app/components/auth.tsx
+++ b/packages/next/app/components/auth.tsx
@@ -7,7 +7,9 @@ import { faPatreon } from '@fortawesome/free-brands-svg-icons';
import { useLocalStorageValue } from '@react-hookz/web';
import { faRightFromBracket } from '@fortawesome/free-solid-svg-icons';
import Skeleton from 'react-loading-skeleton';
-import { strapiUrl } from '@/lib/constants';
+import { strapiUrl } from '@/lib/constants';
+// import NextAuth from 'next-auth'; // this is (pipedream) wishlist
+// import Providers from 'next-auth/providers';
export interface IJWT {
jwt: string;
diff --git a/packages/next/app/components/patrons-list.tsx b/packages/next/app/components/patrons-list.tsx
index f54961e..bb2539b 100644
--- a/packages/next/app/components/patrons-list.tsx
+++ b/packages/next/app/components/patrons-list.tsx
@@ -10,11 +10,15 @@ interface PatronsListProps {
export default async function PatronsList({ displayStyle }: PatronsListProps) {
const patrons = await getPatrons()
+ console.log(`patrons are as follows`)
+ console.log(patrons)
+
if (!patrons) return (
diff --git a/packages/next/package.json b/packages/next/package.json index 3d4d219..7c54289 100644 --- a/packages/next/package.json +++ b/packages/next/package.json @@ -16,47 +16,47 @@ "@fortawesome/free-solid-svg-icons": "^6.5.2", "@fortawesome/react-fontawesome": "^0.2.2", "@hookform/error-message": "^2.0.1", - "@hookform/resolvers": "^3.6.0", + "@hookform/resolvers": "^3.7.0", "@mux/blurhash": "^0.1.2", "@mux/mux-player": "^2.7.0", "@mux/mux-player-react": "^2.7.0", "@paralleldrive/cuid2": "^2.2.2", "@react-hookz/web": "^24.0.4", - "@tanstack/react-query": "^5.40.1", - "@tanstack/react-table": "^8.17.3", - "@types/lodash": "^4.17.4", + "@tanstack/react-query": "^5.49.2", + "@tanstack/react-table": "^8.19.2", + "@types/lodash": "^4.17.6", "@types/qs": "^6.9.15", "@types/react": "^18.3.3", "@types/react-dom": "^18.3.0", "@uppy/aws-s3": "^3.6.2", "@uppy/aws-s3-multipart": "^3.12.0", - "@uppy/core": "^3.12.0", - "@uppy/dashboard": "^3.8.3", + "@uppy/core": "^3.13.0", + "@uppy/dashboard": "^3.9.1", "@uppy/drag-drop": "^3.1.0", "@uppy/file-input": "^3.1.2", "@uppy/progress-bar": "^3.1.1", - "@uppy/react": "^3.3.1", - "@uppy/remote-sources": "^1.2.0", + "@uppy/react": "^3.4.0", + "@uppy/remote-sources": "^1.3.0", "bulma": "^1.0.1", "date-fns": "^2.30.0", "date-fns-tz": "^2.0.1", "dayjs": "^1.11.11", "feed": "^4.2.2", "gray-matter": "^4.0.3", - "hls.js": "^1.5.11", + "hls.js": "^1.5.12", "lodash": "^4.17.21", "lunarphase-js": "^2.0.3", - "multiformats": "^13.1.1", + "multiformats": "^13.1.3", "next": "14.0.4", "next-goatcounter": "^1.0.5", "nextjs-toploader": "^1.6.12", "plyr": "^3.7.8", "prism-react-renderer": "^2.3.1", - "qs": "^6.12.1", + "qs": "^6.12.2", "react": "^18.3.1", "react-data-table-component": "^7.6.2", "react-dom": "^18.3.1", - "react-hook-form": "^7.51.5", + "react-hook-form": "^7.52.1", "react-loading-skeleton": "^3.4.0", "react-toastify": "^9.1.3", "sharp": "^0.33.4", @@ -65,7 +65,7 @@ "yup": "^1.4.0" }, "devDependencies": { - "@types/node": "^20.14.2", + "@types/node": "^20.14.9", "eslint": "^8.57.0", "eslint-config-next": "14.0.4", "tsc": "^2.0.4", diff --git a/packages/next/pnpm-lock.yaml b/packages/next/pnpm-lock.yaml index ea687ff..6bb7a55 100644 --- a/packages/next/pnpm-lock.yaml +++ b/packages/next/pnpm-lock.yaml @@ -25,10 +25,10 @@ importers: version: 0.2.2(@fortawesome/fontawesome-svg-core@6.5.2)(react@18.3.1) '@hookform/error-message': specifier: ^2.0.1 - version: 2.0.1(react-dom@18.3.1(react@18.3.1))(react-hook-form@7.51.5(react@18.3.1))(react@18.3.1) + version: 2.0.1(react-dom@18.3.1(react@18.3.1))(react-hook-form@7.52.1(react@18.3.1))(react@18.3.1) '@hookform/resolvers': - specifier: ^3.6.0 - version: 3.6.0(react-hook-form@7.51.5(react@18.3.1)) + specifier: ^3.7.0 + version: 3.7.0(react-hook-form@7.52.1(react@18.3.1)) '@mux/blurhash': specifier: ^0.1.2 version: 0.1.2 @@ -45,14 +45,14 @@ importers: specifier: ^24.0.4 version: 24.0.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@tanstack/react-query': - specifier: ^5.40.1 - version: 5.40.1(react@18.3.1) + specifier: ^5.49.2 + version: 5.49.2(react@18.3.1) '@tanstack/react-table': - specifier: ^8.17.3 - version: 8.17.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + specifier: ^8.19.2 + version: 8.19.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@types/lodash': - specifier: ^4.17.4 - version: 4.17.4 + specifier: ^4.17.6 + version: 4.17.6 '@types/qs': specifier: ^6.9.15 version: 6.9.15 @@ -64,31 +64,31 @@ importers: version: 18.3.0 '@uppy/aws-s3': specifier: ^3.6.2 - version: 3.6.2(@uppy/core@3.12.0) + version: 3.6.2(@uppy/core@3.13.0) '@uppy/aws-s3-multipart': specifier: ^3.12.0 - version: 3.12.0(@uppy/core@3.12.0) + version: 3.12.0(@uppy/core@3.13.0) '@uppy/core': - specifier: ^3.12.0 - version: 3.12.0 + specifier: ^3.13.0 + version: 3.13.0 '@uppy/dashboard': - specifier: ^3.8.3 - version: 3.8.3(@uppy/core@3.12.0) + specifier: ^3.9.1 + version: 3.9.1(@uppy/core@3.13.0) '@uppy/drag-drop': specifier: ^3.1.0 - version: 3.1.0(@uppy/core@3.12.0) + version: 3.1.0(@uppy/core@3.13.0) '@uppy/file-input': specifier: ^3.1.2 - version: 3.1.2(@uppy/core@3.12.0) + version: 3.1.2(@uppy/core@3.13.0) '@uppy/progress-bar': specifier: ^3.1.1 - version: 3.1.1(@uppy/core@3.12.0) + version: 3.1.1(@uppy/core@3.13.0) '@uppy/react': - specifier: ^3.3.1 - version: 3.3.1(@uppy/core@3.12.0)(@uppy/dashboard@3.8.3(@uppy/core@3.12.0))(@uppy/drag-drop@3.1.0(@uppy/core@3.12.0))(@uppy/file-input@3.1.2(@uppy/core@3.12.0))(@uppy/progress-bar@3.1.1(@uppy/core@3.12.0))(@uppy/status-bar@3.3.3(@uppy/core@3.12.0))(react@18.3.1) + specifier: ^3.4.0 + version: 3.4.0(@uppy/core@3.13.0)(@uppy/dashboard@3.9.1(@uppy/core@3.13.0))(@uppy/drag-drop@3.1.0(@uppy/core@3.13.0))(@uppy/file-input@3.1.2(@uppy/core@3.13.0))(@uppy/progress-bar@3.1.1(@uppy/core@3.13.0))(@uppy/status-bar@3.3.3(@uppy/core@3.13.0))(react@18.3.1) '@uppy/remote-sources': - specifier: ^1.2.0 - version: 1.2.0(@uppy/core@3.12.0) + specifier: ^1.3.0 + version: 1.3.0(@uppy/core@3.13.0) bulma: specifier: ^1.0.1 version: 1.0.1 @@ -108,8 +108,8 @@ importers: specifier: ^4.0.3 version: 4.0.3 hls.js: - specifier: ^1.5.11 - version: 1.5.11 + specifier: ^1.5.12 + version: 1.5.12 lodash: specifier: ^4.17.21 version: 4.17.21 @@ -117,8 +117,8 @@ importers: specifier: ^2.0.3 version: 2.0.3 multiformats: - specifier: ^13.1.1 - version: 13.1.1 + specifier: ^13.1.3 + version: 13.1.3 next: specifier: 14.0.4 version: 14.0.4(@babel/core@7.24.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.74.1) @@ -135,8 +135,8 @@ importers: specifier: ^2.3.1 version: 2.3.1(react@18.3.1) qs: - specifier: ^6.12.1 - version: 6.12.1 + specifier: ^6.12.2 + version: 6.12.2 react: specifier: ^18.3.1 version: 18.3.1 @@ -147,8 +147,8 @@ importers: specifier: ^18.3.1 version: 18.3.1(react@18.3.1) react-hook-form: - specifier: ^7.51.5 - version: 7.51.5(react@18.3.1) + specifier: ^7.52.1 + version: 7.52.1(react@18.3.1) react-loading-skeleton: specifier: ^3.4.0 version: 3.4.0(react@18.3.1) @@ -169,8 +169,8 @@ importers: version: 1.4.0 devDependencies: '@types/node': - specifier: ^20.14.2 - version: 20.14.2 + specifier: ^20.14.9 + version: 20.14.9 eslint: specifier: ^8.57.0 version: 8.57.0 @@ -316,8 +316,8 @@ packages: peerDependencies: eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 - '@eslint-community/regexpp@4.10.1': - resolution: {integrity: sha512-Zm2NGpWELsQAD1xsJzGQpYfvICSsFkEpU0jxBjfdC6uNEWXcHnfs9hScFWtXVDVl+rBQJGrl4g1vcKIejpH9dA==} + '@eslint-community/regexpp@4.11.0': + resolution: {integrity: sha512-G/M/tIiMrTAxEWRfLfQJMmGNX28IxBg4PBz8XqQhqUHLFI6TL2htpIB1iQCj144V5ee/JaKyT9/WZ0MGZWfA7A==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} '@eslint/eslintrc@2.1.4': @@ -361,14 +361,15 @@ packages: react-dom: '>=16.8.0' react-hook-form: ^7.0.0 - '@hookform/resolvers@3.6.0': - resolution: {integrity: sha512-UBcpyOX3+RR+dNnqBd0lchXpoL8p4xC21XP8H6Meb8uve5Br1GCnmg0PcBoKKqPKgGu9GHQ/oygcmPrQhetwqw==} + '@hookform/resolvers@3.7.0': + resolution: {integrity: sha512-42p5X18noBV3xqOpTlf2V5qJZwzNgO4eLzHzmKGh/w7z4+4XqRw5AsESVkqE+qwAuRRlg2QG12EVEjPkrRIbeg==} peerDependencies: react-hook-form: ^7.0.0 '@humanwhocodes/config-array@0.11.14': resolution: {integrity: sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==} engines: {node: '>=10.10.0'} + deprecated: Use @eslint/config-array instead '@humanwhocodes/module-importer@1.0.1': resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} @@ -376,6 +377,7 @@ packages: '@humanwhocodes/object-schema@2.0.3': resolution: {integrity: sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==} + deprecated: Use @eslint/object-schema instead '@img/sharp-darwin-arm64@0.33.4': resolution: {integrity: sha512-p0suNqXufJs9t3RqLBO6vvrgr5OhgbWp76s5gTRvdmxmuv9E1rcaqGUsl3l4mKVmXPkTkTErXediAui4x+8PSA==} @@ -632,23 +634,23 @@ packages: '@swc/helpers@0.5.2': resolution: {integrity: sha512-E4KcWTpoLHqwPHLxidpOqQbcrZVgi0rsmmZXUle1jXmJfuIf/UWpczUJ7MZZ5tlxytgJXyp0w4PGkkeLiuIdZw==} - '@tanstack/query-core@5.40.0': - resolution: {integrity: sha512-eD8K8jsOIq0Z5u/QbvOmfvKKE/XC39jA7yv4hgpl/1SRiU+J8QCIwgM/mEHuunQsL87dcvnHqSVLmf9pD4CiaA==} + '@tanstack/query-core@5.49.1': + resolution: {integrity: sha512-JnC9ndmD1KKS01Rt/ovRUB1tmwO7zkyXAyIxN9mznuJrcNtOrkmOnQqdJF2ib9oHzc2VxHomnEG7xyfo54Npkw==} - '@tanstack/react-query@5.40.1': - resolution: {integrity: sha512-gOcmu+gpFd2taHrrgMM9RemLYYEDYfsCqszxCC0xtx+csDa4R8t7Hr7SfWXQP13S2sF+mOxySo/+FNXJFYBqcA==} + '@tanstack/react-query@5.49.2': + resolution: {integrity: sha512-6rfwXDK9BvmHISbNFuGd+wY3P44lyW7lWiA9vIFGT/T0P9aHD1VkjTvcM4SDAIbAQ9ygEZZoLt7dlU1o3NjMVA==} peerDependencies: react: ^18.0.0 - '@tanstack/react-table@8.17.3': - resolution: {integrity: sha512-5gwg5SvPD3lNAXPuJJz1fOCEZYk9/GeBFH3w/hCgnfyszOIzwkwgp5I7Q4MJtn0WECp84b5STQUDdmvGi8m3nA==} + '@tanstack/react-table@8.19.2': + resolution: {integrity: sha512-itoSIAkA/Vsg+bjY23FSemcTyPhc5/1YjYyaMsr9QSH/cdbZnQxHVWrpWn0Sp2BWN71qkzR7e5ye8WuMmwyOjg==} engines: {node: '>=12'} peerDependencies: react: '>=16.8' react-dom: '>=16.8' - '@tanstack/table-core@8.17.3': - resolution: {integrity: sha512-mPBodDGVL+fl6d90wUREepHa/7lhsghg2A3vFpakEhrhtbIlgNAZiMr7ccTgak5qbHqF14Fwy+W1yFWQt+WmYQ==} + '@tanstack/table-core@8.19.2': + resolution: {integrity: sha512-KpRjhgehIhbfH78ARm/GJDXGnpdw4bCg3qas6yjWSi7czJhI/J6pWln7NHtmBkGE9ZbohiiNtLqwGzKmBfixig==} engines: {node: '>=12'} '@transloadit/prettier-bytes@0.3.4': @@ -657,11 +659,11 @@ packages: '@types/json5@0.0.29': resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} - '@types/lodash@4.17.4': - resolution: {integrity: sha512-wYCP26ZLxaT3R39kiN2+HcJ4kTd3U1waI/cY7ivWYqFP6pW3ZNpvi6Wd6PHZx7T/t8z0vlkXMg3QYLa7DZ/IJQ==} + '@types/lodash@4.17.6': + resolution: {integrity: sha512-OpXEVoCKSS3lQqjx9GGGOapBeuW5eUboYHRlHP9urXPX25IKZ6AnP5ZRxtVf63iieUbsHxLn8NQ5Nlftc6yzAA==} - '@types/node@20.14.2': - resolution: {integrity: sha512-xyu6WAMVwv6AKFLB+e/7ySZVr/0zLCzOa7rSpq6jNwpqOrUbcACDWC+53d4n2QHOnDou0fbIsg8wZu/sxrnI4Q==} + '@types/node@20.14.9': + resolution: {integrity: sha512-06OCtnTXtWOZBJlRApleWndH4JsRVs1pDCc8dLSQp+7PpUpX3ePdHyeNSFTeSe7FtKyQkrlPvHwJOW3SLd8Oyg==} '@types/prismjs@1.26.4': resolution: {integrity: sha512-rlAnzkW2sZOjbqZ743IHUhFcvzaGbqijwOu8QZnZCjfQzBqFE3s4lOTJEsxikImav9uzz/42I+O7YUs1mWgMlg==} @@ -725,33 +727,33 @@ packages: peerDependencies: '@uppy/core': ^3.9.1 - '@uppy/box@2.3.1': - resolution: {integrity: sha512-OWjomMuLpsubDvCg5JiqjBZxZZuq3zh8laZ86WFzHlO84r+OoMt/Bo/4bEde4qimN3I8okCRXFm1z4IV0VqtoA==} + '@uppy/box@2.4.0': + resolution: {integrity: sha512-7KEXzljhYcw0dMycJ4rEvLc6wkH9+yLmRQ69PQ+iPYzWe4q27DD7ux3lAhEqRocRFqqzFCt6M3pW79WfnqjkCA==} peerDependencies: - '@uppy/core': ^3.11.0 + '@uppy/core': ^3.13.0 '@uppy/companion-client@3.8.1': resolution: {integrity: sha512-A1k9cOgGMsJNx1lI0Lj2ZaLAH3WIL3xImi2EPXuAHgL1uBZqjuffP2P9XK4nr+KVc+PBivOxH7MoiYpJm97/xw==} peerDependencies: '@uppy/core': ^3.11.0 - '@uppy/core@3.12.0': - resolution: {integrity: sha512-kLkbJfDvJsjR2fIJdEFtLLVGNVxQS+Gtm1z4SxYVmJEm7ZNePsVsDABHasr2CI0jWKcq0PEQACr7wRBpNDkpKA==} + '@uppy/core@3.13.0': + resolution: {integrity: sha512-qyht4dJ72AGWriwyy14h0wesrizgMEAU8Y6U3GKZYj6vfPOeEN0VbrbrkqlLxsczB5uyuUbhrPkPRU7srGDvtg==} - '@uppy/dashboard@3.8.3': - resolution: {integrity: sha512-R55GliI6I/8G1o0s834+XDFeGTKRFgPQr2KVkHNA0bzU/eYPE+jPW+UtZchaZDUfMMjIjwDEiYtobhcPsukGxg==} + '@uppy/dashboard@3.9.1': + resolution: {integrity: sha512-zZp+5Dwqu1jUdAZEu0Os2kC/8bF3cdrkve8CYEwqP/12yjNe8PF+XUQKF1RCYITjDE4hPSXcTh0MWw6t2LONuw==} peerDependencies: - '@uppy/core': ^3.11.2 + '@uppy/core': ^3.13.0 '@uppy/drag-drop@3.1.0': resolution: {integrity: sha512-9TINGQ9R5xmu7rvd3MpxNv/E6W28VkmSDhl91l8IOcxCU44psctuvgt57TB5ArLKfICljDBJzs/6dCU38U1CuA==} peerDependencies: '@uppy/core': ^3.10.0 - '@uppy/dropbox@3.3.1': - resolution: {integrity: sha512-iDEg8O99RYTqUN1qIrE+aWbXYCQgSa+rKFdvMqjHHNX4YTfoMFKpDXelGExYuRXioaxD1CaHGBjM3CXw+DMSTw==} + '@uppy/dropbox@3.4.0': + resolution: {integrity: sha512-KcYb40b5qCnOJVB+2wNHG+DY/s2sLtW6vyp7jJNrQR87AtNaLXd1dIoYXgM5HrCTJ52IrnfrTgNcUb+EhaRisw==} peerDependencies: - '@uppy/core': ^3.11.0 + '@uppy/core': ^3.13.0 '@uppy/facebook@3.3.1': resolution: {integrity: sha512-AUZKJc8XrGaAcCos8XFCvx5hsAO6cGNXJkxjFJrkMsj7z+dUCxkVumAlztZh/5SYyhymZj20Y8cUIjRI0gvpiw==} @@ -763,10 +765,15 @@ packages: peerDependencies: '@uppy/core': ^3.11.0 - '@uppy/google-drive@3.5.1': - resolution: {integrity: sha512-FOMy9AzaVZpiSdPy1FjGRy/DoWe4pAUiKQHOwrKmv6px1B88RsUM665GPQc5AWBhDHfFVUM1EIX5hxEDB/QRHQ==} + '@uppy/google-drive@3.6.0': + resolution: {integrity: sha512-7Db98dJW/7ajvKUjJxQbL7D5MarJHG7T958jZhmy0jRugx19r9HqBcM88bsIn+A3ljmnrqzb9IfsRwTZ2W6D5A==} peerDependencies: - '@uppy/core': ^3.11.0 + '@uppy/core': ^3.13.0 + + '@uppy/google-photos@0.1.0': + resolution: {integrity: sha512-Ia61UjMJxItZXkPBZiSCXvr2tCHq5s4GTUdWFKAe+nDzNndcO0J4FvGR0wFq5lA7yJ0lGofIq7yvVGk3G64/nQ==} + peerDependencies: + '@uppy/core': ^3.13.0 '@uppy/informer@3.1.0': resolution: {integrity: sha512-vmpTLqzSLmZSuIVDZV0o19yXVqyTh5/uCbKUEiyfBhR726kQiuYQLP/ZHaKcvW3c1ESQGbNg53iNHbFBqF681w==} @@ -778,30 +785,30 @@ packages: peerDependencies: '@uppy/core': ^3.11.0 - '@uppy/onedrive@3.3.1': - resolution: {integrity: sha512-ett2WVDSgQm/bwMmFKPZcxdV0WI8Rs8zIsGQeBvyHskEWNySR2nZ5kbvonlMeyAEoXdd3VLkoiH8TdAQkf6qBw==} + '@uppy/onedrive@3.4.0': + resolution: {integrity: sha512-UXNdvL62aT8RTYCK3rUVwtWapRP5UIJad/TRmkllavr9cLkhLnAd8jZNXjru2P2l7sRO6Zcd44EwMTHij0Aa8A==} peerDependencies: - '@uppy/core': ^3.11.0 + '@uppy/core': ^3.13.0 '@uppy/progress-bar@3.1.1': resolution: {integrity: sha512-c7Wcv6/gvrdxICnZUaU/cZG6wUtS0V/GYGssGFQ6OW84h0smuzGGA+KOh9zKqr6HBHxgKRxmCDtrlTlSSvAuQQ==} peerDependencies: '@uppy/core': ^3.10.0 - '@uppy/provider-views@3.12.0': - resolution: {integrity: sha512-ctDfuEhBqUJRk3P6C9UfQI07OcV++TJPUrzf5TRgdueFa/vkKb/IVTWpNy2J0fV0POw51pUI2jf9CLUpSnXFng==} + '@uppy/provider-views@3.13.0': + resolution: {integrity: sha512-Z2oI88A+GC2zIPk8beoeFN/miHKkhtF58mYjvb5miGCMMZM7p7LRj98sgb5OOdKsGrfeiuTavtgL424BvcVd8w==} peerDependencies: - '@uppy/core': ^3.11.0 + '@uppy/core': ^3.13.0 - '@uppy/react@3.3.1': - resolution: {integrity: sha512-9BTbWgix4Ob4HyaT2+PJWSLfCCJRqyozDQRREMOBTGL0aVwLlcXyXEZZFyI/LMA0Cstt86rO0xVPAW9ugNepDw==} + '@uppy/react@3.4.0': + resolution: {integrity: sha512-UIDLIDKH4Hfy8OsEipwP6Q6cAzP55k/+I63UImcqerEyFnw4OxaV1POfVnmgp2AOLph9xmi3S2KQzJYfUENbpg==} peerDependencies: - '@uppy/core': ^3.11.0 - '@uppy/dashboard': ^3.8.2 + '@uppy/core': ^3.13.0 + '@uppy/dashboard': ^3.9.0 '@uppy/drag-drop': ^3.1.0 '@uppy/file-input': ^3.1.2 '@uppy/progress-bar': ^3.1.1 - '@uppy/status-bar': ^3.3.2 + '@uppy/status-bar': ^3.3.3 react: ^16.0.0 || ^17.0.0 || ^18.0.0 peerDependenciesMeta: '@uppy/dashboard': @@ -815,10 +822,10 @@ packages: '@uppy/status-bar': optional: true - '@uppy/remote-sources@1.2.0': - resolution: {integrity: sha512-M8ZL0F3C72UtjGXJS58njbC3MB8qv+3uPFlNgcKndTZZltR4njM1dD9nTvuNeUpE3JmX9n0CElYLFX8sc47wkw==} + '@uppy/remote-sources@1.3.0': + resolution: {integrity: sha512-jhxnwCvj5LYCPWd7k5dGFKlBcJqITG4GhZfZaWszRDYHtpYSC5blw+5AxKkBitvERoXk/su17x3VFo8jkiCG0g==} peerDependencies: - '@uppy/core': ^3.10.0 + '@uppy/core': ^3.13.0 '@uppy/status-bar@3.3.3': resolution: {integrity: sha512-TCcnBjTDbq/AmnGOcWbCpQNsv05Z6Y36zdmTCt/xNe2/gTVAYAzGRoGOrkeb6jf/E4AAi25VyOolSqL2ibB8Kw==} @@ -846,10 +853,10 @@ packages: '@uppy/utils@5.9.0': resolution: {integrity: sha512-9Ubddd3orCOLYjf0KobwgJ+aTrABSxk9t4X/QdM4qJHVZuMIftkaMplrViRUO+kvIBCXEZDIP2AmS060siDNGw==} - '@uppy/xhr-upload@3.6.7': - resolution: {integrity: sha512-xd8PA6gz8/usm7wpI6w8zOjnw5KnE/Yt7fWknFubMFCbP0yutWbStgeFAj5AMdLjLQpGveGb/OVWHhBfy2LwlA==} + '@uppy/xhr-upload@3.6.8': + resolution: {integrity: sha512-zr3OHrIdo08jmCqTYKS0C7o3E0XQpjtZI40wmB6VvXYzu4x/aZankG9QqKxLiY0n8KbZ9aCIvO8loxBGoL7Kaw==} peerDependencies: - '@uppy/core': ^3.11.3 + '@uppy/core': ^3.13.0 '@uppy/zoom@2.3.1': resolution: {integrity: sha512-rhoNua3zAXt2grzHha09N2pGKyZdnI9h/TLHU8X/LQTswdIhxNmr772AVci2R2p/IwO18xGXB/VXIkh4t3/Nww==} @@ -861,8 +868,8 @@ packages: peerDependencies: acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 - acorn@8.11.3: - resolution: {integrity: sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==} + acorn@8.12.0: + resolution: {integrity: sha512-RTvkC4w+KNXrM39/lWCUaG0IbRkWdCv7W/IOW9oU6SawyxulvkQy5HQPVTKxEjczcUvapcrw3cFx/60VN/NRNw==} engines: {node: '>=0.4.0'} hasBin: true @@ -891,8 +898,8 @@ packages: argparse@2.0.1: resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} - aria-query@5.3.0: - resolution: {integrity: sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==} + aria-query@5.1.3: + resolution: {integrity: sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ==} array-buffer-byte-length@1.0.1: resolution: {integrity: sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==} @@ -940,12 +947,12 @@ packages: resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==} engines: {node: '>= 0.4'} - axe-core@4.7.0: - resolution: {integrity: sha512-M0JtH+hlOL5pLQwHOLNYZaXuhqmvS8oExsqB1SBYgA4Dk7u/xx+YdGHXaK5pyUfed5mYXdlYiphWq3G8cRi5JQ==} + axe-core@4.9.1: + resolution: {integrity: sha512-QbUdXJVTpvUTHU7871ppZkdOLBeGUKBQWHkHrvN2V9IQWGMt61zf3B45BtzjxEJzYuj0JBjBZP/hmYS/R9pmAw==} engines: {node: '>=4'} - axobject-query@3.2.1: - resolution: {integrity: sha512-jsyHu61e6N4Vbz/v18DHwWYKK0bSWLqn47eeDSKPB7m8tqMHF9YJ+mhIk2lVteyZrY8tnSj/jHOv4YiTCuCJgg==} + axobject-query@3.1.1: + resolution: {integrity: sha512-goKlv8DZrK9hUh975fnHzhNIO4jUnFCfv/dszV5VwUGDFjI6vQ2VwoyjYjYNEbBE8AH87TduWP5uyDR1D+Iteg==} babel-plugin-styled-components@2.1.4: resolution: {integrity: sha512-Xgp9g+A/cG47sUyRwwYxGM4bR/jDRg5N6it/8+HxCnbT5XNKSKDT9xm4oag/osgqjC2It/vH0yXsomOG6k558g==} @@ -978,8 +985,8 @@ packages: resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} engines: {node: '>=8'} - browserslist@4.23.0: - resolution: {integrity: sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==} + browserslist@4.23.1: + resolution: {integrity: sha512-TUfofFo/KsK/bWZ9TWQ5O26tsWW4Uhmt8IYklbnUa70udB6P2wA7w7o4PY4muaEPBQaAX+CEnmmIA41NVHtPVw==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true @@ -1004,11 +1011,11 @@ packages: camelize@1.0.1: resolution: {integrity: sha512-dU+Tx2fsypxTgtLoE36npi3UqcjSSMNYfkqgmoEhtZrraP5VWq0K7FkWVTYa8eMPtnU/G2txVsfdCJTn9uzpuQ==} - caniuse-lite@1.0.30001628: - resolution: {integrity: sha512-S3BnR4Kh26TBxbi5t5kpbcUlLJb9lhtDXISDPwOfI+JoC+ik0QksvkZtUVyikw3hjnkgkMPSJ8oIM9yMm9vflA==} + caniuse-lite@1.0.30001639: + resolution: {integrity: sha512-eFHflNTBIlFwP2AIKaYuBQN/apnUoKNhBdza8ZnW/h2di4LCZ4xFqYlxUxo+LQ76KFI1PGcC1QDxMbxTZpSCAg==} - castable-video@1.0.9: - resolution: {integrity: sha512-VOdme8f2FPSj7Ej+xC/zy1pRlngbqdz/IGHB36dAfj5RNiMCU2eLfVAKN+fi/wSz0+f1PTvee/bM54SaNBV8QQ==} + castable-video@1.0.10: + resolution: {integrity: sha512-tJgUv+8/zE191y8EKojvB0eKIyKA9obIttd6Wpdm6x2qBmuwZ7wDgzVCSmf5cN2v9jBiuu0s7O5poz8a8cFX/w==} chalk@2.4.2: resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} @@ -1088,8 +1095,8 @@ packages: custom-media-element@1.2.3: resolution: {integrity: sha512-xr9Hbrslkjm1fapJP5hL98pySeZmNepBSefQS/XTxynamqPTfRBK5MnhReMOiAj8xvJApVPrVnlYxIrknay8jg==} - custom-media-element@1.3.1: - resolution: {integrity: sha512-SOBa/dtxVgEoEu0JMictlnXx0nNUgvuTuZ7ggFeOIzJWmQUPF4gQ/fsvEZycIyQ7JEnwfyEn74+n1a+mzU3A9A==} + custom-media-element@1.3.2: + resolution: {integrity: sha512-nDyMobZgoAVqz7mA8rsn7i1/6bjH6N9ab2Ge7LyyNxrvxAq7zQJPg8i3u2VH7wEB+Y1T1+C3/h1G774/D+ZLag==} damerau-levenshtein@1.0.8: resolution: {integrity: sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==} @@ -1139,6 +1146,10 @@ packages: resolution: {integrity: sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==} engines: {node: '>=10'} + deep-equal@2.2.3: + resolution: {integrity: sha512-ZIwpnevOurS8bpT4192sqAowWM76JDKSHYzMLty3BZGSswgq6pBaH3DhCSW5xVAZICZyKdOBPjwww5wfgT/6PA==} + engines: {node: '>= 0.4'} + deep-extend@0.6.0: resolution: {integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==} engines: {node: '>=4.0.0'} @@ -1158,10 +1169,6 @@ packages: resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} engines: {node: '>= 0.4'} - dequal@2.0.3: - resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} - engines: {node: '>=6'} - detect-libc@2.0.3: resolution: {integrity: sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==} engines: {node: '>=8'} @@ -1178,8 +1185,8 @@ packages: resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} engines: {node: '>=6.0.0'} - electron-to-chromium@1.4.790: - resolution: {integrity: sha512-eVGeQxpaBYbomDBa/Mehrs28MdvCXfJmEFzaMFsv8jH/MJDLIylJN81eTJ5kvx7B7p18OiPK0BkC06lydEy63A==} + electron-to-chromium@1.4.816: + resolution: {integrity: sha512-EKH5X5oqC6hLmiS7/vYtZHZFTNdhsYG5NVPRN6Yn0kQHNBlT59+xSM8HBy66P5fxWpKgZbPqb+diC64ng295Jw==} emoji-regex@9.2.2: resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} @@ -1203,6 +1210,9 @@ packages: resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} engines: {node: '>= 0.4'} + es-get-iterator@1.1.3: + resolution: {integrity: sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw==} + es-iterator-helpers@1.0.19: resolution: {integrity: sha512-zoMwbCcH5hwUkKJkT8kDIBZSz9I6mVG//+lDCinLCGov4+r7NIy0ld8o03M0cJxl2spVf6ESYVS6/gpIfq1FFw==} engines: {node: '>= 0.4'} @@ -1284,8 +1294,8 @@ packages: '@typescript-eslint/parser': optional: true - eslint-plugin-jsx-a11y@6.8.0: - resolution: {integrity: sha512-Hdh937BS3KdwwbBaKd5+PLCOmYY6U4f2h9Z2ktwtNKvIdIEu137rjYbcb9ApSbVJfWxANNuiKTD/9tOKjK9qOA==} + eslint-plugin-jsx-a11y@6.9.0: + resolution: {integrity: sha512-nOFOCaJG2pYqORjK19lqPqxMO/JpvdCZdPtNdxY3kvom3jTvkAbOvQvD8wuD0G8BYR0IGAGYDlzqWJOh/ybn2g==} engines: {node: '>=4.0'} peerDependencies: eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 @@ -1296,8 +1306,8 @@ packages: peerDependencies: eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 - eslint-plugin-react@7.34.2: - resolution: {integrity: sha512-2HCmrU+/JNigDN6tg55cRDKCQWicYAPB38JGSFDQt95jDm8rrvSUo7YPkOIm5l6ts1j1zCvysNcasvfTMQzUOw==} + eslint-plugin-react@7.34.3: + resolution: {integrity: sha512-aoW4MV891jkUulwDApQbPYTVZmeuSyFrudpbTAQuj5Fv8VL+o6df2xIGpw8B0hPjAaih1/Fb0om9grCdyFYemA==} engines: {node: '>=4'} peerDependencies: eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 @@ -1513,8 +1523,8 @@ packages: resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} engines: {node: '>= 0.4'} - hls.js@1.5.11: - resolution: {integrity: sha512-q3We1izi2+qkOO+TvZdHv+dx6aFzdtk3xc1/Qesrvto4thLTT/x/1FK85c5h1qZE4MmMBNgKg+MIW8nxQfxwBw==} + hls.js@1.5.12: + resolution: {integrity: sha512-QxBMsawjqIPNfgAzaFFVJu0t8OwOyFXK3cuj9MX5L7byZZL+n9PeJXtIMu2FS0026Dt/hBAz9u2sDLZ4bQdv6w==} hoist-non-react-statics@3.3.2: resolution: {integrity: sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==} @@ -1551,6 +1561,10 @@ packages: resolution: {integrity: sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==} engines: {node: '>= 0.4'} + is-arguments@1.1.1: + resolution: {integrity: sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==} + engines: {node: '>= 0.4'} + is-array-buffer@3.0.4: resolution: {integrity: sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==} engines: {node: '>= 0.4'} @@ -1577,8 +1591,9 @@ packages: resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} engines: {node: '>= 0.4'} - is-core-module@2.13.1: - resolution: {integrity: sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==} + is-core-module@2.14.0: + resolution: {integrity: sha512-a5dFJih5ZLYlRtDc0dZWP7RiKr6xIKzmn/oAYCDvdLThadVgyJwlaoQPmRtMSpz+rk0OGAgIu+TcM9HUF0fk1A==} + engines: {node: '>= 0.4'} is-data-view@1.0.1: resolution: {integrity: sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==} @@ -1760,8 +1775,8 @@ packages: media-chrome@3.2.3: resolution: {integrity: sha512-DlOlyciT5YgOn5cwGvLWz+OVUVgvyxsRLtfpIQJ11F10+Ix7tDjEqMWsnkL81be9iD3uh/SN35TIk2pRvvEAig==} - media-tracks@0.3.2: - resolution: {integrity: sha512-qz1MLcXPm0DuzeKm5vWm0kxHROSbwJJw/01h+pvanMAEwR8K4z3tzpLTZoF8sNNa1cy0FbQ8QzNDNU3Hwh0kJw==} + media-tracks@0.3.3: + resolution: {integrity: sha512-9P2FuUHnZZ3iji+2RQk7Zkh5AmZTnOG5fODACnjhCVveX1McY3jmCRHofIEI+yTBqplz7LXy48c7fQ3Uigp88w==} memoize-one@6.0.0: resolution: {integrity: sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw==} @@ -1800,8 +1815,8 @@ packages: ms@2.1.3: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} - multiformats@13.1.1: - resolution: {integrity: sha512-JiptvwMmlxlzIlLLwhCi/srf/nk409UL0eUBr0kioRJq15hqqKyg68iftrBvhCRjR6Rw4fkNnSc4ZJXJDuta/Q==} + multiformats@13.1.3: + resolution: {integrity: sha512-CZPi9lFZCM/+7oRolWYsvalsyWQGFo+GpdaTmjxXXomC+nP/W1Rnxb9sUgjvmNmRZ5bOPqRAl4nuK+Ydw/4tGw==} mux-embed@5.2.1: resolution: {integrity: sha512-NukHw91xeEVDBeXVDBpi2BvXNix7gSuvdtyvOph5yR/ROn1hHbTlcYWoKQyCyJX9frsF00UROEul+S8wPzU3aQ==} @@ -1854,8 +1869,8 @@ packages: react: '>= 16.0.0' react-dom: '>= 16.0.0' - node-abi@3.63.0: - resolution: {integrity: sha512-vAszCsOUrUxjGAmdnM/pq7gUgie0IRteCQMX6d4A534fQCR93EJU5qgzBvU6EkFfK27s0T3HEV3BOyJIr7OMYw==} + node-abi@3.65.0: + resolution: {integrity: sha512-ThjYBfoDNr08AWx6hGaRbfPwxKV9kVzAzOzlLKbk2CuqXE2xnCh+cbAGnwM3t8Lq4v9rUB7VfondlkBckcJrVA==} engines: {node: '>=10'} node-addon-api@5.1.0: @@ -1875,8 +1890,13 @@ packages: resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} engines: {node: '>=0.10.0'} - object-inspect@1.13.1: - resolution: {integrity: sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==} + object-inspect@1.13.2: + resolution: {integrity: sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==} + engines: {node: '>= 0.4'} + + object-is@1.1.6: + resolution: {integrity: sha512-F8cZ+KfGlSGi09lJT7/Nd6KJZ9ygtvYC0/UYYLI9nmQKLMnydpB9yvbv9K1uSkEu7FU9vYPmVwLg328tX+ot3Q==} + engines: {node: '>= 0.4'} object-keys@1.1.1: resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} @@ -1977,8 +1997,8 @@ packages: resolution: {integrity: sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==} engines: {node: ^10 || ^12 || >=14} - preact@10.22.0: - resolution: {integrity: sha512-RRurnSjJPj4rp5K6XoP45Ui33ncb7e4H7WiOHVpjbkvqvA3U+N8Z6Qbo0AE6leGYBV66n8EhEaFixvIu3SkxFw==} + preact@10.22.1: + resolution: {integrity: sha512-jRYbDDgMpIb5LHq3hkI0bbl+l/TQ9UnkdQ0ww+lp+4MMOdqaUYdFc5qeyP+IV8FAd/2Em7drVPeKdQxsiWCf/A==} prebuild-install@7.1.2: resolution: {integrity: sha512-UnNke3IQb6sgarcZIDU3gbMeTp/9SSU1DAIkil7PrqG1vZlBtY5msYccSKSHDqa3hNg436IXK+SNImReuA1wEQ==} @@ -2007,8 +2027,8 @@ packages: resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} engines: {node: '>=6'} - qs@6.12.1: - resolution: {integrity: sha512-zWmv4RSuB9r2mYQw3zxQuHWeU+42aKi1wWig/j4ele4ygELZ7PEO6MM7rim9oAQH2A5MWfsAVf/jPvTPgCbvUQ==} + qs@6.12.2: + resolution: {integrity: sha512-x+NLUpx9SYrcwXtX7ob1gnkSems4i/mGZX5SlYxwIau6RrUSODO89TR/XDGGpn5RPWSYIB+aSfuSlV5+CmbTBg==} engines: {node: '>=0.6'} queue-microtask@1.2.3: @@ -2032,11 +2052,11 @@ packages: peerDependencies: react: ^18.3.1 - react-hook-form@7.51.5: - resolution: {integrity: sha512-J2ILT5gWx1XUIJRETiA7M19iXHlG74+6O3KApzvqB/w8S5NQR7AbU8HVZrMALdmDgWpRPYiZJl0zx8Z4L2mP6Q==} + react-hook-form@7.52.1: + resolution: {integrity: sha512-uNKIhaoICJ5KQALYZ4TOaOLElyM+xipord+Ha3crEFhTntdLvWZqVY49Wqd/0GiVCA/f9NjemLeiNPjG7Hpurg==} engines: {node: '>=12.22.0'} peerDependencies: - react: ^16.8.0 || ^17 || ^18 + react: ^16.8.0 || ^17 || ^18 || ^19 react-is@16.13.1: resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} @@ -2196,10 +2216,17 @@ packages: sprintf-js@1.0.3: resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} + stop-iteration-iterator@1.0.0: + resolution: {integrity: sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ==} + engines: {node: '>= 0.4'} + streamsearch@1.1.0: resolution: {integrity: sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==} engines: {node: '>=10.0.0'} + string.prototype.includes@2.0.0: + resolution: {integrity: sha512-E34CkBgyeqNDcrbU76cDjL5JLcVrtSdYq0MEh/B10r17pRP4ciHLwTgnuLV8Ay6cgEMLkcBkFCKyFZ43YldYzg==} + string.prototype.matchall@4.0.11: resolution: {integrity: sha512-NUdh0aDavY2og7IbBPenWqR9exH+E26Sv8e0/eTe1tltDGZL+GtBkDAnnyBtmekfK6/Dq3MkcGtzXFEd1LQrtg==} engines: {node: '>= 0.4'} @@ -2469,7 +2496,7 @@ snapshots: dependencies: '@babel/compat-data': 7.24.7 '@babel/helper-validator-option': 7.24.7 - browserslist: 4.23.0 + browserslist: 4.23.1 lru-cache: 5.1.1 semver: 6.3.1 @@ -2595,7 +2622,7 @@ snapshots: eslint: 8.57.0 eslint-visitor-keys: 3.4.3 - '@eslint-community/regexpp@4.10.1': {} + '@eslint-community/regexpp@4.11.0': {} '@eslint/eslintrc@2.1.4': dependencies: @@ -2635,15 +2662,15 @@ snapshots: prop-types: 15.8.1 react: 18.3.1 - '@hookform/error-message@2.0.1(react-dom@18.3.1(react@18.3.1))(react-hook-form@7.51.5(react@18.3.1))(react@18.3.1)': + '@hookform/error-message@2.0.1(react-dom@18.3.1(react@18.3.1))(react-hook-form@7.52.1(react@18.3.1))(react@18.3.1)': dependencies: react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - react-hook-form: 7.51.5(react@18.3.1) + react-hook-form: 7.52.1(react@18.3.1) - '@hookform/resolvers@3.6.0(react-hook-form@7.51.5(react@18.3.1))': + '@hookform/resolvers@3.7.0(react-hook-form@7.52.1(react@18.3.1))': dependencies: - react-hook-form: 7.51.5(react@18.3.1) + react-hook-form: 7.52.1(react@18.3.1) '@humanwhocodes/config-array@0.11.14': dependencies: @@ -2774,13 +2801,13 @@ snapshots: '@mux/mux-video@0.19.0': dependencies: '@mux/playback-core': 0.24.0 - castable-video: 1.0.9 + castable-video: 1.0.10 custom-media-element: 1.2.3 - media-tracks: 0.3.2 + media-tracks: 0.3.3 '@mux/playback-core@0.24.0': dependencies: - hls.js: 1.5.11 + hls.js: 1.5.12 mux-embed: 5.2.1 '@next/env@14.0.4': {} @@ -2848,28 +2875,28 @@ snapshots: dependencies: tslib: 2.6.3 - '@tanstack/query-core@5.40.0': {} + '@tanstack/query-core@5.49.1': {} - '@tanstack/react-query@5.40.1(react@18.3.1)': + '@tanstack/react-query@5.49.2(react@18.3.1)': dependencies: - '@tanstack/query-core': 5.40.0 + '@tanstack/query-core': 5.49.1 react: 18.3.1 - '@tanstack/react-table@8.17.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@tanstack/react-table@8.19.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@tanstack/table-core': 8.17.3 + '@tanstack/table-core': 8.19.2 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - '@tanstack/table-core@8.17.3': {} + '@tanstack/table-core@8.19.2': {} '@transloadit/prettier-bytes@0.3.4': {} '@types/json5@0.0.29': {} - '@types/lodash@4.17.4': {} + '@types/lodash@4.17.6': {} - '@types/node@20.14.2': + '@types/node@20.14.9': dependencies: undici-types: 5.26.5 @@ -2932,37 +2959,37 @@ snapshots: '@ungap/structured-clone@1.2.0': {} - '@uppy/aws-s3-multipart@3.12.0(@uppy/core@3.12.0)': + '@uppy/aws-s3-multipart@3.12.0(@uppy/core@3.13.0)': dependencies: - '@uppy/companion-client': 3.8.1(@uppy/core@3.12.0) - '@uppy/core': 3.12.0 + '@uppy/companion-client': 3.8.1(@uppy/core@3.13.0) + '@uppy/core': 3.13.0 '@uppy/utils': 5.9.0 - '@uppy/aws-s3@3.6.2(@uppy/core@3.12.0)': + '@uppy/aws-s3@3.6.2(@uppy/core@3.13.0)': dependencies: - '@uppy/aws-s3-multipart': 3.12.0(@uppy/core@3.12.0) - '@uppy/companion-client': 3.8.1(@uppy/core@3.12.0) - '@uppy/core': 3.12.0 + '@uppy/aws-s3-multipart': 3.12.0(@uppy/core@3.13.0) + '@uppy/companion-client': 3.8.1(@uppy/core@3.13.0) + '@uppy/core': 3.13.0 '@uppy/utils': 5.9.0 - '@uppy/xhr-upload': 3.6.7(@uppy/core@3.12.0) + '@uppy/xhr-upload': 3.6.8(@uppy/core@3.13.0) nanoid: 4.0.2 - '@uppy/box@2.3.1(@uppy/core@3.12.0)': + '@uppy/box@2.4.0(@uppy/core@3.13.0)': dependencies: - '@uppy/companion-client': 3.8.1(@uppy/core@3.12.0) - '@uppy/core': 3.12.0 - '@uppy/provider-views': 3.12.0(@uppy/core@3.12.0) + '@uppy/companion-client': 3.8.1(@uppy/core@3.13.0) + '@uppy/core': 3.13.0 + '@uppy/provider-views': 3.13.0(@uppy/core@3.13.0) '@uppy/utils': 5.9.0 - preact: 10.22.0 + preact: 10.22.1 - '@uppy/companion-client@3.8.1(@uppy/core@3.12.0)': + '@uppy/companion-client@3.8.1(@uppy/core@3.13.0)': dependencies: - '@uppy/core': 3.12.0 + '@uppy/core': 3.13.0 '@uppy/utils': 5.9.0 namespace-emitter: 2.0.1 p-retry: 6.2.0 - '@uppy/core@3.12.0': + '@uppy/core@3.13.0': dependencies: '@transloadit/prettier-bytes': 0.3.4 '@uppy/store-default': 3.2.2 @@ -2971,180 +2998,189 @@ snapshots: mime-match: 1.0.2 namespace-emitter: 2.0.1 nanoid: 4.0.2 - preact: 10.22.0 + preact: 10.22.1 - '@uppy/dashboard@3.8.3(@uppy/core@3.12.0)': + '@uppy/dashboard@3.9.1(@uppy/core@3.13.0)': dependencies: '@transloadit/prettier-bytes': 0.3.4 - '@uppy/core': 3.12.0 - '@uppy/informer': 3.1.0(@uppy/core@3.12.0) - '@uppy/provider-views': 3.12.0(@uppy/core@3.12.0) - '@uppy/status-bar': 3.3.3(@uppy/core@3.12.0) - '@uppy/thumbnail-generator': 3.1.0(@uppy/core@3.12.0) + '@uppy/core': 3.13.0 + '@uppy/informer': 3.1.0(@uppy/core@3.13.0) + '@uppy/provider-views': 3.13.0(@uppy/core@3.13.0) + '@uppy/status-bar': 3.3.3(@uppy/core@3.13.0) + '@uppy/thumbnail-generator': 3.1.0(@uppy/core@3.13.0) '@uppy/utils': 5.9.0 classnames: 2.5.1 is-shallow-equal: 1.0.1 lodash: 4.17.21 memoize-one: 6.0.0 nanoid: 4.0.2 - preact: 10.22.0 + preact: 10.22.1 - '@uppy/drag-drop@3.1.0(@uppy/core@3.12.0)': + '@uppy/drag-drop@3.1.0(@uppy/core@3.13.0)': dependencies: - '@uppy/core': 3.12.0 + '@uppy/core': 3.13.0 '@uppy/utils': 5.9.0 - preact: 10.22.0 + preact: 10.22.1 - '@uppy/dropbox@3.3.1(@uppy/core@3.12.0)': + '@uppy/dropbox@3.4.0(@uppy/core@3.13.0)': dependencies: - '@uppy/companion-client': 3.8.1(@uppy/core@3.12.0) - '@uppy/core': 3.12.0 - '@uppy/provider-views': 3.12.0(@uppy/core@3.12.0) + '@uppy/companion-client': 3.8.1(@uppy/core@3.13.0) + '@uppy/core': 3.13.0 + '@uppy/provider-views': 3.13.0(@uppy/core@3.13.0) '@uppy/utils': 5.9.0 - preact: 10.22.0 + preact: 10.22.1 - '@uppy/facebook@3.3.1(@uppy/core@3.12.0)': + '@uppy/facebook@3.3.1(@uppy/core@3.13.0)': dependencies: - '@uppy/companion-client': 3.8.1(@uppy/core@3.12.0) - '@uppy/core': 3.12.0 - '@uppy/provider-views': 3.12.0(@uppy/core@3.12.0) + '@uppy/companion-client': 3.8.1(@uppy/core@3.13.0) + '@uppy/core': 3.13.0 + '@uppy/provider-views': 3.13.0(@uppy/core@3.13.0) '@uppy/utils': 5.9.0 - preact: 10.22.0 + preact: 10.22.1 - '@uppy/file-input@3.1.2(@uppy/core@3.12.0)': + '@uppy/file-input@3.1.2(@uppy/core@3.13.0)': dependencies: - '@uppy/core': 3.12.0 + '@uppy/core': 3.13.0 '@uppy/utils': 5.9.0 - preact: 10.22.0 + preact: 10.22.1 - '@uppy/google-drive@3.5.1(@uppy/core@3.12.0)': + '@uppy/google-drive@3.6.0(@uppy/core@3.13.0)': dependencies: - '@uppy/companion-client': 3.8.1(@uppy/core@3.12.0) - '@uppy/core': 3.12.0 - '@uppy/provider-views': 3.12.0(@uppy/core@3.12.0) + '@uppy/companion-client': 3.8.1(@uppy/core@3.13.0) + '@uppy/core': 3.13.0 + '@uppy/provider-views': 3.13.0(@uppy/core@3.13.0) '@uppy/utils': 5.9.0 - preact: 10.22.0 + preact: 10.22.1 - '@uppy/informer@3.1.0(@uppy/core@3.12.0)': + '@uppy/google-photos@0.1.0(@uppy/core@3.13.0)': dependencies: - '@uppy/core': 3.12.0 + '@uppy/companion-client': 3.8.1(@uppy/core@3.13.0) + '@uppy/core': 3.13.0 + '@uppy/provider-views': 3.13.0(@uppy/core@3.13.0) '@uppy/utils': 5.9.0 - preact: 10.22.0 + preact: 10.22.1 - '@uppy/instagram@3.3.1(@uppy/core@3.12.0)': + '@uppy/informer@3.1.0(@uppy/core@3.13.0)': dependencies: - '@uppy/companion-client': 3.8.1(@uppy/core@3.12.0) - '@uppy/core': 3.12.0 - '@uppy/provider-views': 3.12.0(@uppy/core@3.12.0) + '@uppy/core': 3.13.0 '@uppy/utils': 5.9.0 - preact: 10.22.0 + preact: 10.22.1 - '@uppy/onedrive@3.3.1(@uppy/core@3.12.0)': + '@uppy/instagram@3.3.1(@uppy/core@3.13.0)': dependencies: - '@uppy/companion-client': 3.8.1(@uppy/core@3.12.0) - '@uppy/core': 3.12.0 - '@uppy/provider-views': 3.12.0(@uppy/core@3.12.0) + '@uppy/companion-client': 3.8.1(@uppy/core@3.13.0) + '@uppy/core': 3.13.0 + '@uppy/provider-views': 3.13.0(@uppy/core@3.13.0) '@uppy/utils': 5.9.0 - preact: 10.22.0 + preact: 10.22.1 - '@uppy/progress-bar@3.1.1(@uppy/core@3.12.0)': + '@uppy/onedrive@3.4.0(@uppy/core@3.13.0)': dependencies: - '@uppy/core': 3.12.0 + '@uppy/companion-client': 3.8.1(@uppy/core@3.13.0) + '@uppy/core': 3.13.0 + '@uppy/provider-views': 3.13.0(@uppy/core@3.13.0) '@uppy/utils': 5.9.0 - preact: 10.22.0 + preact: 10.22.1 - '@uppy/provider-views@3.12.0(@uppy/core@3.12.0)': + '@uppy/progress-bar@3.1.1(@uppy/core@3.13.0)': dependencies: - '@uppy/core': 3.12.0 + '@uppy/core': 3.13.0 + '@uppy/utils': 5.9.0 + preact: 10.22.1 + + '@uppy/provider-views@3.13.0(@uppy/core@3.13.0)': + dependencies: + '@uppy/core': 3.13.0 '@uppy/utils': 5.9.0 classnames: 2.5.1 nanoid: 4.0.2 p-queue: 7.4.1 - preact: 10.22.0 + preact: 10.22.1 - '@uppy/react@3.3.1(@uppy/core@3.12.0)(@uppy/dashboard@3.8.3(@uppy/core@3.12.0))(@uppy/drag-drop@3.1.0(@uppy/core@3.12.0))(@uppy/file-input@3.1.2(@uppy/core@3.12.0))(@uppy/progress-bar@3.1.1(@uppy/core@3.12.0))(@uppy/status-bar@3.3.3(@uppy/core@3.12.0))(react@18.3.1)': + '@uppy/react@3.4.0(@uppy/core@3.13.0)(@uppy/dashboard@3.9.1(@uppy/core@3.13.0))(@uppy/drag-drop@3.1.0(@uppy/core@3.13.0))(@uppy/file-input@3.1.2(@uppy/core@3.13.0))(@uppy/progress-bar@3.1.1(@uppy/core@3.13.0))(@uppy/status-bar@3.3.3(@uppy/core@3.13.0))(react@18.3.1)': dependencies: - '@uppy/core': 3.12.0 + '@uppy/core': 3.13.0 '@uppy/utils': 5.9.0 prop-types: 15.8.1 react: 18.3.1 optionalDependencies: - '@uppy/dashboard': 3.8.3(@uppy/core@3.12.0) - '@uppy/drag-drop': 3.1.0(@uppy/core@3.12.0) - '@uppy/file-input': 3.1.2(@uppy/core@3.12.0) - '@uppy/progress-bar': 3.1.1(@uppy/core@3.12.0) - '@uppy/status-bar': 3.3.3(@uppy/core@3.12.0) + '@uppy/dashboard': 3.9.1(@uppy/core@3.13.0) + '@uppy/drag-drop': 3.1.0(@uppy/core@3.13.0) + '@uppy/file-input': 3.1.2(@uppy/core@3.13.0) + '@uppy/progress-bar': 3.1.1(@uppy/core@3.13.0) + '@uppy/status-bar': 3.3.3(@uppy/core@3.13.0) - '@uppy/remote-sources@1.2.0(@uppy/core@3.12.0)': + '@uppy/remote-sources@1.3.0(@uppy/core@3.13.0)': dependencies: - '@uppy/box': 2.3.1(@uppy/core@3.12.0) - '@uppy/core': 3.12.0 - '@uppy/dashboard': 3.8.3(@uppy/core@3.12.0) - '@uppy/dropbox': 3.3.1(@uppy/core@3.12.0) - '@uppy/facebook': 3.3.1(@uppy/core@3.12.0) - '@uppy/google-drive': 3.5.1(@uppy/core@3.12.0) - '@uppy/instagram': 3.3.1(@uppy/core@3.12.0) - '@uppy/onedrive': 3.3.1(@uppy/core@3.12.0) - '@uppy/unsplash': 3.3.1(@uppy/core@3.12.0) - '@uppy/url': 3.6.1(@uppy/core@3.12.0) - '@uppy/zoom': 2.3.1(@uppy/core@3.12.0) + '@uppy/box': 2.4.0(@uppy/core@3.13.0) + '@uppy/core': 3.13.0 + '@uppy/dashboard': 3.9.1(@uppy/core@3.13.0) + '@uppy/dropbox': 3.4.0(@uppy/core@3.13.0) + '@uppy/facebook': 3.3.1(@uppy/core@3.13.0) + '@uppy/google-drive': 3.6.0(@uppy/core@3.13.0) + '@uppy/google-photos': 0.1.0(@uppy/core@3.13.0) + '@uppy/instagram': 3.3.1(@uppy/core@3.13.0) + '@uppy/onedrive': 3.4.0(@uppy/core@3.13.0) + '@uppy/unsplash': 3.3.1(@uppy/core@3.13.0) + '@uppy/url': 3.6.1(@uppy/core@3.13.0) + '@uppy/zoom': 2.3.1(@uppy/core@3.13.0) - '@uppy/status-bar@3.3.3(@uppy/core@3.12.0)': + '@uppy/status-bar@3.3.3(@uppy/core@3.13.0)': dependencies: '@transloadit/prettier-bytes': 0.3.4 - '@uppy/core': 3.12.0 + '@uppy/core': 3.13.0 '@uppy/utils': 5.9.0 classnames: 2.5.1 - preact: 10.22.0 + preact: 10.22.1 '@uppy/store-default@3.2.2': {} - '@uppy/thumbnail-generator@3.1.0(@uppy/core@3.12.0)': + '@uppy/thumbnail-generator@3.1.0(@uppy/core@3.13.0)': dependencies: - '@uppy/core': 3.12.0 + '@uppy/core': 3.13.0 '@uppy/utils': 5.9.0 exifr: 7.1.3 - '@uppy/unsplash@3.3.1(@uppy/core@3.12.0)': + '@uppy/unsplash@3.3.1(@uppy/core@3.13.0)': dependencies: - '@uppy/companion-client': 3.8.1(@uppy/core@3.12.0) - '@uppy/core': 3.12.0 - '@uppy/provider-views': 3.12.0(@uppy/core@3.12.0) + '@uppy/companion-client': 3.8.1(@uppy/core@3.13.0) + '@uppy/core': 3.13.0 + '@uppy/provider-views': 3.13.0(@uppy/core@3.13.0) '@uppy/utils': 5.9.0 - preact: 10.22.0 + preact: 10.22.1 - '@uppy/url@3.6.1(@uppy/core@3.12.0)': + '@uppy/url@3.6.1(@uppy/core@3.13.0)': dependencies: - '@uppy/companion-client': 3.8.1(@uppy/core@3.12.0) - '@uppy/core': 3.12.0 + '@uppy/companion-client': 3.8.1(@uppy/core@3.13.0) + '@uppy/core': 3.13.0 '@uppy/utils': 5.9.0 nanoid: 4.0.2 - preact: 10.22.0 + preact: 10.22.1 '@uppy/utils@5.9.0': dependencies: lodash: 4.17.21 - preact: 10.22.0 + preact: 10.22.1 - '@uppy/xhr-upload@3.6.7(@uppy/core@3.12.0)': + '@uppy/xhr-upload@3.6.8(@uppy/core@3.13.0)': dependencies: - '@uppy/companion-client': 3.8.1(@uppy/core@3.12.0) - '@uppy/core': 3.12.0 + '@uppy/companion-client': 3.8.1(@uppy/core@3.13.0) + '@uppy/core': 3.13.0 '@uppy/utils': 5.9.0 - '@uppy/zoom@2.3.1(@uppy/core@3.12.0)': + '@uppy/zoom@2.3.1(@uppy/core@3.13.0)': dependencies: - '@uppy/companion-client': 3.8.1(@uppy/core@3.12.0) - '@uppy/core': 3.12.0 - '@uppy/provider-views': 3.12.0(@uppy/core@3.12.0) + '@uppy/companion-client': 3.8.1(@uppy/core@3.13.0) + '@uppy/core': 3.13.0 + '@uppy/provider-views': 3.13.0(@uppy/core@3.13.0) '@uppy/utils': 5.9.0 - preact: 10.22.0 + preact: 10.22.1 - acorn-jsx@5.3.2(acorn@8.11.3): + acorn-jsx@5.3.2(acorn@8.12.0): dependencies: - acorn: 8.11.3 + acorn: 8.12.0 - acorn@8.11.3: {} + acorn@8.12.0: {} ajv@6.12.6: dependencies: @@ -3175,9 +3211,9 @@ snapshots: argparse@2.0.1: {} - aria-query@5.3.0: + aria-query@5.1.3: dependencies: - dequal: 2.0.3 + deep-equal: 2.2.3 array-buffer-byte-length@1.0.1: dependencies: @@ -3259,11 +3295,11 @@ snapshots: dependencies: possible-typed-array-names: 1.0.0 - axe-core@4.7.0: {} + axe-core@4.9.1: {} - axobject-query@3.2.1: + axobject-query@3.1.1: dependencies: - dequal: 2.0.3 + deep-equal: 2.2.3 babel-plugin-styled-components@2.1.4(@babel/core@7.24.5)(styled-components@5.3.3(@babel/core@7.24.5)(react-dom@18.3.1(react@18.3.1))(react-is@16.13.1)(react@18.3.1))(supports-color@5.5.0): dependencies: @@ -3305,12 +3341,12 @@ snapshots: dependencies: fill-range: 7.1.1 - browserslist@4.23.0: + browserslist@4.23.1: dependencies: - caniuse-lite: 1.0.30001628 - electron-to-chromium: 1.4.790 + caniuse-lite: 1.0.30001639 + electron-to-chromium: 1.4.816 node-releases: 2.0.14 - update-browserslist-db: 1.0.16(browserslist@4.23.0) + update-browserslist-db: 1.0.16(browserslist@4.23.1) buffer@5.7.1: dependencies: @@ -3335,11 +3371,11 @@ snapshots: camelize@1.0.1: {} - caniuse-lite@1.0.30001628: {} + caniuse-lite@1.0.30001639: {} - castable-video@1.0.9: + castable-video@1.0.10: dependencies: - custom-media-element: 1.3.1 + custom-media-element: 1.3.2 chalk@2.4.2: dependencies: @@ -3423,7 +3459,7 @@ snapshots: custom-media-element@1.2.3: {} - custom-media-element@1.3.1: {} + custom-media-element@1.3.2: {} damerau-levenshtein@1.0.8: {} @@ -3469,6 +3505,27 @@ snapshots: dependencies: mimic-response: 3.1.0 + deep-equal@2.2.3: + dependencies: + array-buffer-byte-length: 1.0.1 + call-bind: 1.0.7 + es-get-iterator: 1.1.3 + get-intrinsic: 1.2.4 + is-arguments: 1.1.1 + is-array-buffer: 3.0.4 + is-date-object: 1.0.5 + is-regex: 1.1.4 + is-shared-array-buffer: 1.0.3 + isarray: 2.0.5 + object-is: 1.1.6 + object-keys: 1.1.1 + object.assign: 4.1.5 + regexp.prototype.flags: 1.5.2 + side-channel: 1.0.6 + which-boxed-primitive: 1.0.2 + which-collection: 1.0.2 + which-typed-array: 1.1.15 + deep-extend@0.6.0: {} deep-is@0.1.4: {} @@ -3487,8 +3544,6 @@ snapshots: has-property-descriptors: 1.0.2 object-keys: 1.1.1 - dequal@2.0.3: {} - detect-libc@2.0.3: {} dir-glob@3.0.1: @@ -3503,7 +3558,7 @@ snapshots: dependencies: esutils: 2.0.3 - electron-to-chromium@1.4.790: {} + electron-to-chromium@1.4.816: {} emoji-regex@9.2.2: {} @@ -3549,7 +3604,7 @@ snapshots: is-string: 1.0.7 is-typed-array: 1.1.13 is-weakref: 1.0.2 - object-inspect: 1.13.1 + object-inspect: 1.13.2 object-keys: 1.1.1 object.assign: 4.1.5 regexp.prototype.flags: 1.5.2 @@ -3571,6 +3626,18 @@ snapshots: es-errors@1.3.0: {} + es-get-iterator@1.1.3: + dependencies: + call-bind: 1.0.7 + get-intrinsic: 1.2.4 + has-symbols: 1.0.3 + is-arguments: 1.1.1 + is-map: 2.0.3 + is-set: 2.0.3 + is-string: 1.0.7 + isarray: 2.0.5 + stop-iteration-iterator: 1.0.0 + es-iterator-helpers@1.0.19: dependencies: call-bind: 1.0.7 @@ -3623,8 +3690,8 @@ snapshots: eslint-import-resolver-node: 0.3.9 eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.3.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1(eslint@8.57.0))(eslint@8.57.0) eslint-plugin-import: 2.29.1(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.3.3))(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0) - eslint-plugin-jsx-a11y: 6.8.0(eslint@8.57.0) - eslint-plugin-react: 7.34.2(eslint@8.57.0) + eslint-plugin-jsx-a11y: 6.9.0(eslint@8.57.0) + eslint-plugin-react: 7.34.3(eslint@8.57.0) eslint-plugin-react-hooks: 4.6.2(eslint@8.57.0) optionalDependencies: typescript: 5.3.3 @@ -3635,7 +3702,7 @@ snapshots: eslint-import-resolver-node@0.3.9: dependencies: debug: 3.2.7 - is-core-module: 2.13.1 + is-core-module: 2.14.0 resolve: 1.22.8 transitivePeerDependencies: - supports-color @@ -3649,7 +3716,7 @@ snapshots: eslint-plugin-import: 2.29.1(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.3.3))(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0) fast-glob: 3.3.2 get-tsconfig: 4.7.5 - is-core-module: 2.13.1 + is-core-module: 2.14.0 is-glob: 4.0.3 transitivePeerDependencies: - '@typescript-eslint/parser' @@ -3680,7 +3747,7 @@ snapshots: eslint-import-resolver-node: 0.3.9 eslint-module-utils: 2.8.1(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.3.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.3.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1(eslint@8.57.0))(eslint@8.57.0))(eslint@8.57.0) hasown: 2.0.2 - is-core-module: 2.13.1 + is-core-module: 2.14.0 is-glob: 4.0.3 minimatch: 3.1.2 object.fromentries: 2.0.8 @@ -3695,15 +3762,14 @@ snapshots: - eslint-import-resolver-webpack - supports-color - eslint-plugin-jsx-a11y@6.8.0(eslint@8.57.0): + eslint-plugin-jsx-a11y@6.9.0(eslint@8.57.0): dependencies: - '@babel/runtime': 7.24.7 - aria-query: 5.3.0 + aria-query: 5.1.3 array-includes: 3.1.8 array.prototype.flatmap: 1.3.2 ast-types-flow: 0.0.8 - axe-core: 4.7.0 - axobject-query: 3.2.1 + axe-core: 4.9.1 + axobject-query: 3.1.1 damerau-levenshtein: 1.0.8 emoji-regex: 9.2.2 es-iterator-helpers: 1.0.19 @@ -3712,14 +3778,15 @@ snapshots: jsx-ast-utils: 3.3.5 language-tags: 1.0.9 minimatch: 3.1.2 - object.entries: 1.1.8 object.fromentries: 2.0.8 + safe-regex-test: 1.0.3 + string.prototype.includes: 2.0.0 eslint-plugin-react-hooks@4.6.2(eslint@8.57.0): dependencies: eslint: 8.57.0 - eslint-plugin-react@7.34.2(eslint@8.57.0): + eslint-plugin-react@7.34.3(eslint@8.57.0): dependencies: array-includes: 3.1.8 array.prototype.findlast: 1.2.5 @@ -3751,7 +3818,7 @@ snapshots: eslint@8.57.0: dependencies: '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) - '@eslint-community/regexpp': 4.10.1 + '@eslint-community/regexpp': 4.11.0 '@eslint/eslintrc': 2.1.4 '@eslint/js': 8.57.0 '@humanwhocodes/config-array': 0.11.14 @@ -3793,8 +3860,8 @@ snapshots: espree@9.6.1: dependencies: - acorn: 8.11.3 - acorn-jsx: 5.3.2(acorn@8.11.3) + acorn: 8.12.0 + acorn-jsx: 5.3.2(acorn@8.12.0) eslint-visitor-keys: 3.4.3 esprima@4.0.1: {} @@ -3993,7 +4060,7 @@ snapshots: dependencies: function-bind: 1.1.2 - hls.js@1.5.11: {} + hls.js@1.5.12: {} hoist-non-react-statics@3.3.2: dependencies: @@ -4028,6 +4095,11 @@ snapshots: hasown: 2.0.2 side-channel: 1.0.6 + is-arguments@1.1.1: + dependencies: + call-bind: 1.0.7 + has-tostringtag: 1.0.2 + is-array-buffer@3.0.4: dependencies: call-bind: 1.0.7 @@ -4055,7 +4127,7 @@ snapshots: is-callable@1.2.7: {} - is-core-module@2.13.1: + is-core-module@2.14.0: dependencies: hasown: 2.0.2 @@ -4216,7 +4288,7 @@ snapshots: media-chrome@3.2.3: {} - media-tracks@0.3.2: {} + media-tracks@0.3.3: {} memoize-one@6.0.0: {} @@ -4249,7 +4321,7 @@ snapshots: ms@2.1.3: {} - multiformats@13.1.1: {} + multiformats@13.1.3: {} mux-embed@5.2.1: {} @@ -4274,7 +4346,7 @@ snapshots: '@next/env': 14.0.4 '@swc/helpers': 0.5.2 busboy: 1.6.0 - caniuse-lite: 1.0.30001628 + caniuse-lite: 1.0.30001639 graceful-fs: 4.2.11 postcss: 8.4.31 react: 18.3.1 @@ -4304,7 +4376,7 @@ snapshots: react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - node-abi@3.63.0: + node-abi@3.65.0: dependencies: semver: 7.6.2 @@ -4319,7 +4391,12 @@ snapshots: object-assign@4.1.1: {} - object-inspect@1.13.1: {} + object-inspect@1.13.2: {} + + object-is@1.1.6: + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 object-keys@1.1.1: {} @@ -4431,7 +4508,7 @@ snapshots: picocolors: 1.0.1 source-map-js: 1.2.0 - preact@10.22.0: {} + preact@10.22.1: {} prebuild-install@7.1.2: dependencies: @@ -4441,7 +4518,7 @@ snapshots: minimist: 1.2.8 mkdirp-classic: 0.5.3 napi-build-utils: 1.0.2 - node-abi: 3.63.0 + node-abi: 3.65.0 pump: 3.0.0 rc: 1.2.8 simple-get: 4.0.1 @@ -4471,7 +4548,7 @@ snapshots: punycode@2.3.1: {} - qs@6.12.1: + qs@6.12.2: dependencies: side-channel: 1.0.6 @@ -4498,7 +4575,7 @@ snapshots: react: 18.3.1 scheduler: 0.23.2 - react-hook-form@7.51.5(react@18.3.1): + react-hook-form@7.52.1(react@18.3.1): dependencies: react: 18.3.1 @@ -4554,13 +4631,13 @@ snapshots: resolve@1.22.8: dependencies: - is-core-module: 2.13.1 + is-core-module: 2.14.0 path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 resolve@2.0.0-next.5: dependencies: - is-core-module: 2.13.1 + is-core-module: 2.14.0 path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 @@ -4679,7 +4756,7 @@ snapshots: call-bind: 1.0.7 es-errors: 1.3.0 get-intrinsic: 1.2.4 - object-inspect: 1.13.1 + object-inspect: 1.13.2 simple-concat@1.0.1: {} @@ -4701,8 +4778,17 @@ snapshots: sprintf-js@1.0.3: {} + stop-iteration-iterator@1.0.0: + dependencies: + internal-slot: 1.0.7 + streamsearch@1.1.0: {} + string.prototype.includes@2.0.0: + dependencies: + define-properties: 1.2.1 + es-abstract: 1.23.3 + string.prototype.matchall@4.0.11: dependencies: call-bind: 1.0.7 @@ -4887,9 +4973,9 @@ snapshots: undici-types@5.26.5: {} - update-browserslist-db@1.0.16(browserslist@4.23.0): + update-browserslist-db@1.0.16(browserslist@4.23.1): dependencies: - browserslist: 4.23.0 + browserslist: 4.23.1 escalade: 3.1.2 picocolors: 1.0.1 diff --git a/packages/scout/src/index.ts b/packages/scout/src/index.ts index 15ef8ad..4b3e9d2 100644 --- a/packages/scout/src/index.ts +++ b/packages/scout/src/index.ts @@ -55,6 +55,6 @@ async function handleMessage({ email, msg }: { email: Email, msg: FetchMessageOb (async () => { const email = new Email() - email.on('message', (msg: FetchMessageObject) => handleMessage({ email, msg })) + email.once('message', (msg: FetchMessageObject) => handleMessage({ email, msg })) await email.connect() })() \ No newline at end of file diff --git a/packages/strapi/.dockerignore b/packages/strapi-borked/.dockerignore similarity index 100% rename from packages/strapi/.dockerignore rename to packages/strapi-borked/.dockerignore diff --git a/packages/strapi-borked/.gitignore b/packages/strapi-borked/.gitignore new file mode 100644 index 0000000..afa1f1d --- /dev/null +++ b/packages/strapi-borked/.gitignore @@ -0,0 +1,118 @@ +.env* +tunnel.conf + +############################ +# OS X +############################ + +.DS_Store +.AppleDouble +.LSOverride +Icon +.Spotlight-V100 +.Trashes +._* + + +############################ +# Linux +############################ + +*~ + + +############################ +# Windows +############################ + +Thumbs.db +ehthumbs.db +Desktop.ini +$RECYCLE.BIN/ +*.cab +*.msi +*.msm +*.msp + + +############################ +# Packages +############################ + +*.7z +*.csv +*.dat +*.dmg +*.gz +*.iso +*.jar +*.rar +*.tar +*.zip +*.com +*.class +*.dll +*.exe +*.o +*.seed +*.so +*.swo +*.swp +*.swn +*.swm +*.out +*.pid + + +############################ +# Logs and databases +############################ + +.tmp +*.log +*.sql +*.sqlite +*.sqlite3 + + +############################ +# Misc. +############################ + +*# +ssl +.idea +nbproject +public/uploads/* +!public/uploads/.gitkeep + +############################ +# Node.js +############################ + +lib-cov +lcov.info +pids +logs +results +node_modules +.node_history + +############################ +# Tests +############################ + +testApp +coverage + +############################ +# Strapi +############################ + +.env +license.txt +exports +*.cache +dist +build +.strapi-updater.json diff --git a/packages/strapi/.npmrc b/packages/strapi-borked/.npmrc similarity index 100% rename from packages/strapi/.npmrc rename to packages/strapi-borked/.npmrc diff --git a/packages/strapi-borked/.strapi/client/app.js b/packages/strapi-borked/.strapi/client/app.js new file mode 100644 index 0000000..e0f39d0 --- /dev/null +++ b/packages/strapi-borked/.strapi/client/app.js @@ -0,0 +1,14 @@ +/** + * This file was automatically generated by Strapi. + * Any modifications made will be discarded. + */ +import i18N from "@strapi/plugin-i18n/strapi-admin"; +import usersPermissions from "@strapi/plugin-users-permissions/strapi-admin"; +import { renderAdmin } from "@strapi/strapi/admin"; + +renderAdmin(document.getElementById("strapi"), { + plugins: { + i18n: i18N, + "users-permissions": usersPermissions, + }, +}); diff --git a/packages/strapi-borked/.strapi/client/index.html b/packages/strapi-borked/.strapi/client/index.html new file mode 100644 index 0000000..08d9c27 --- /dev/null +++ b/packages/strapi-borked/.strapi/client/index.html @@ -0,0 +1,62 @@ + + + + + + + + +Strapi Admin + + + + + + + diff --git a/packages/strapi-borked/README.md b/packages/strapi-borked/README.md new file mode 100644 index 0000000..5259892 --- /dev/null +++ b/packages/strapi-borked/README.md @@ -0,0 +1,13 @@ +## dev notes + +### patreon campaign benefit ids + + * ironmouse "Thank you" (for testing): 4760169 + * cj_clippy "Full library access" (for production): 9380584 + * cj_clippy "Your URL displayed on Futureporn.net": 10663202 + +### Content-Type Builder (Docker caveat) + +Don't use the web UI to create or update Content-Types! The changes will be lost. This is a side-effect of our hacked together solution for Strapi with pnpm in docker. + +Instead, content-type schemas must be hand-edited in ./src/api/(...). For the changes to take effect, trigger a strapi resource update in Tilt. \ No newline at end of file diff --git a/packages/strapi/backup/Dockerfile.1704607848934 b/packages/strapi-borked/backup/Dockerfile.1704607848934 similarity index 100% rename from packages/strapi/backup/Dockerfile.1704607848934 rename to packages/strapi-borked/backup/Dockerfile.1704607848934 diff --git a/packages/strapi-borked/config/admin.js b/packages/strapi-borked/config/admin.js new file mode 100644 index 0000000..92f535b --- /dev/null +++ b/packages/strapi-borked/config/admin.js @@ -0,0 +1,13 @@ +module.exports = ({ env }) => ({ + auth: { + secret: env('ADMIN_JWT_SECRET'), + }, + apiToken: { + salt: env('API_TOKEN_SALT'), + }, + transfer: { + token: { + salt: env('TRANSFER_TOKEN_SALT'), + }, + }, +}); diff --git a/packages/strapi-borked/config/api.js b/packages/strapi-borked/config/api.js new file mode 100644 index 0000000..62f8b65 --- /dev/null +++ b/packages/strapi-borked/config/api.js @@ -0,0 +1,7 @@ +module.exports = { + rest: { + defaultLimit: 25, + maxLimit: 100, + withCount: true, + }, +}; diff --git a/packages/strapi-borked/config/database.js b/packages/strapi-borked/config/database.js new file mode 100644 index 0000000..63290e0 --- /dev/null +++ b/packages/strapi-borked/config/database.js @@ -0,0 +1,49 @@ +const path = require('path'); + +module.exports = ({ env }) => { + const client = env('DATABASE_CLIENT', 'postgres'); + + const connections = { + postgres: { + connection: { + connectionString: env('DATABASE_URL'), + host: env('DATABASE_HOST', 'localhost'), + port: env.int('DATABASE_PORT', 5432), + database: env('DATABASE_NAME', 'strapi'), + user: env('DATABASE_USERNAME', 'strapi'), + password: env('DATABASE_PASSWORD', 'strapi'), + ssl: env.bool('DATABASE_SSL', false) && { + key: env('DATABASE_SSL_KEY', undefined), + cert: env('DATABASE_SSL_CERT', undefined), + ca: env('DATABASE_SSL_CA', undefined), + capath: env('DATABASE_SSL_CAPATH', undefined), + cipher: env('DATABASE_SSL_CIPHER', undefined), + rejectUnauthorized: env.bool( + 'DATABASE_SSL_REJECT_UNAUTHORIZED', + true + ), + }, + schema: env('DATABASE_SCHEMA', 'public'), + }, + pool: { min: env.int('DATABASE_POOL_MIN', 2), max: env.int('DATABASE_POOL_MAX', 10) }, + }, + sqlite: { + connection: { + filename: path.join( + __dirname, + '..', + env('DATABASE_FILENAME', 'data.db') + ), + }, + useNullAsDefault: true, + }, + }; + + return { + connection: { + client, + ...connections[client], + acquireConnectionTimeout: env.int('DATABASE_CONNECTION_TIMEOUT', 60000), + }, + }; +}; diff --git a/packages/strapi-borked/config/middlewares.js b/packages/strapi-borked/config/middlewares.js new file mode 100644 index 0000000..9dcfed6 --- /dev/null +++ b/packages/strapi-borked/config/middlewares.js @@ -0,0 +1,26 @@ +module.exports = [ + 'strapi::logger', + 'strapi::errors', + { + name: 'strapi::security', + config: { + contentSecurityPolicy: { + useDefaults: true, + directives: { + 'connect-src': ["'self'", 'https:'], + 'img-src': ["'self'", 'data:', 'blob:', 'dl.airtable.com', 'res.cloudinary.com'], + 'media-src': ["'self'", 'data:', 'blob:', 'dl.airtable.com', 'res.cloudinary.com'], + upgradeInsecureRequests: null, + }, + }, + }, + }, + + 'strapi::cors', + 'strapi::poweredBy', + 'strapi::query', + 'strapi::body', + 'strapi::session', + 'strapi::favicon', + 'strapi::public', +]; diff --git a/packages/strapi-borked/config/plugins.js b/packages/strapi-borked/config/plugins.js new file mode 100644 index 0000000..a47d2a5 --- /dev/null +++ b/packages/strapi-borked/config/plugins.js @@ -0,0 +1,75 @@ +module.exports = ({ + env +}) => ({ + 'fuzzy-search': { + enabled: true, + config: { + contentTypes: [{ + uid: 'api::tag.tag', + modelName: 'tag', + transliterate: false, + queryConstraints: { + where: { + '$and': [ + { + publishedAt: { + '$notNull': true + } + }, + ] + } + }, + fuzzysortOptions: { + characterLimit: 32, + threshold: -600, + limit: 10, + keys: [{ + name: 'name', + weight: 100 + }] + } + }] + } + }, + upload: { + config: { + provider: 'cloudinary', + providerOptions: { + cloud_name: env('CLOUDINARY_NAME'), + api_key: env('CLOUDINARY_KEY'), + api_secret: env('CLOUDINARY_SECRET'), + }, + actionOptions: { + upload: {}, + uploadStream: {}, + delete: {}, + }, + } + }, + email: { + config: { + provider: 'sendgrid', + providerOptions: { + apiKey: env('SENDGRID_API_KEY'), + }, + settings: { + defaultFrom: 'welcome@futureporn.net', + defaultReplyTo: 'cj@futureporn.net', + testAddress: 'grimtech@fastmail.com', + }, + }, + }, + "users-permissions": { + config: { + register: { + allowedFields: [ + "isNamePublic", + "isLinkPublic", + "avatar", + "vanityLink", + "patreonBenefits" + ] + } + } + } +}); \ No newline at end of file diff --git a/packages/strapi-borked/config/server.js b/packages/strapi-borked/config/server.js new file mode 100644 index 0000000..26a385f --- /dev/null +++ b/packages/strapi-borked/config/server.js @@ -0,0 +1,15 @@ +// greets some + +module.exports = ({ env }) => ({ + host: env('HOST', '0.0.0.0'), + port: env.int('PORT', 1337), + proxy: true, + app: { + keys: env.array('APP_KEYS'), + }, + webhooks: { + populateRelations: env.bool('WEBHOOKS_POPULATE_RELATIONS', false) + }, + url: env('STRAPI_URL', 'https://portal.futureporn.net') +}); + diff --git a/packages/strapi-borked/database/daily-backup.sh b/packages/strapi-borked/database/daily-backup.sh new file mode 100644 index 0000000..1ee0aeb --- /dev/null +++ b/packages/strapi-borked/database/daily-backup.sh @@ -0,0 +1,13 @@ +#!/bin/bash + +# daily-backup.sh +# useful for the dokku server +# dokku's backup feature is broken atm https://github.com/dokku/dokku-postgres/issues/274 +# backups are exported from dokku:postgres plugin before being sent to b2 + + +filename="$(date +'%Y-%m-%d_%H-%M-%S').psql" + +dokku postgres:export futureporn-db > "${filename}" +b2-linux upload-file futureporn-db-backup "./${filename}" "${filename}" + diff --git a/packages/strapi-borked/database/devDb.sh b/packages/strapi-borked/database/devDb.sh new file mode 100755 index 0000000..d33e117 --- /dev/null +++ b/packages/strapi-borked/database/devDb.sh @@ -0,0 +1,21 @@ +#!/bin/bash + + +# Check if the containers already exist +pgadmin_exists=$(docker ps -a --filter "name=pgadmin" --format '{{.Names}}') +strapi_postgres_exists=$(docker ps -a --filter "name=strapi-postgres" --format '{{.Names}}') + +# Run strapi-postgres container if it doesn't exist or is not running +if [ -z "$strapi_postgres_exists" ]; then + docker run -d --name strapi-postgres -p 5432:5432 -e POSTGRES_PASSWORD=$POSTGRES_PASSWORD postgres:14.7 + echo "strapi-postgres container created and started." +else + container_status=$(docker inspect -f '{{.State.Status}}' strapi-postgres) + + if [ "$container_status" != "running" ]; then + docker start strapi-postgres + echo "strapi-postgres container started." + else + echo "strapi-postgres container already exists and is running. Skipping creation." + fi +fi diff --git a/packages/strapi-borked/database/migrations/.gitkeep b/packages/strapi-borked/database/migrations/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/packages/strapi-borked/database/migrations/2023-08-01-relate-vods-to-vtubers-part2.js b/packages/strapi-borked/database/migrations/2023-08-01-relate-vods-to-vtubers-part2.js new file mode 100644 index 0000000..795adca --- /dev/null +++ b/packages/strapi-borked/database/migrations/2023-08-01-relate-vods-to-vtubers-part2.js @@ -0,0 +1,25 @@ +module.exports = { + async up(knex) { + // ... (Create vods_vtuber_links table if not already created) + + // Get vtuber ID for ProjektMelody (assuming it's 1) + const vtuberId = 1; + + // Get all VODs from the database + const vods = await knex.select('*').from('vods'); + + // For each VOD, associate it with the vtuber (vtuber with ID 1) if not already associated + for (const [index, vod] of vods.entries()) { + const existingAssociation = await knex('vods_vtuber_links') + .where({ vtuber_id: vtuberId, vod_id: vod.id }) + .first(); + if (!existingAssociation) { + await knex('vods_vtuber_links').insert({ + vtuber_id: vtuberId, + vod_id: vod.id, + vod_order: index + 1, // Auto-increment the vod_order number + }); + } + } + } +}; diff --git a/packages/strapi-borked/database/migrations/2023-08-17-reformat-cdnUrl.js b/packages/strapi-borked/database/migrations/2023-08-17-reformat-cdnUrl.js new file mode 100644 index 0000000..c090e12 --- /dev/null +++ b/packages/strapi-borked/database/migrations/2023-08-17-reformat-cdnUrl.js @@ -0,0 +1,18 @@ +module.exports = { + async up(knex) { + + // Get all B2 Files from the database + const files = await knex.select('*').from('b2_files'); + + // For each B2 File, update cdnUrl + // we do this to change + // erroneous https://futureporn-b2.b-cdn.net/futureporn/:key + // to https://futureporn-b2.b-cdn.net/:key + for (const [index, file] of files.entries()) { + const key = file.key; + const cdnUrl = `https://futureporn-b2.b-cdn.net/${key}`; + await knex('b2_files').update({ cdn_url: cdnUrl }).where({ id: file.id }); + } + }, + }; + \ No newline at end of file diff --git a/packages/strapi-borked/database/migrations/2023-08-20-strip-query-string-from-cid.js b/packages/strapi-borked/database/migrations/2023-08-20-strip-query-string-from-cid.js new file mode 100644 index 0000000..0a254f2 --- /dev/null +++ b/packages/strapi-borked/database/migrations/2023-08-20-strip-query-string-from-cid.js @@ -0,0 +1,23 @@ +const stripQueryString = function (text) { + if (!text) return ''; + return text.split(/[?#]/)[0]; +} + +module.exports = { + async up(knex) { + + // Get all vods + const vods = await knex.select('*').from('vods'); + + // For each vod, update videoSrcHash and video240Hash + // we remove any existing ?filename(...) qs from the cid + for (const [index, vod] of vods.entries()) { + const strippedVideoSrcHash = stripQueryString(vod.video_src_hash) + const strippedVideo240Hash = stripQueryString(vod.video_240_hash) + await knex('vods').update({ video_src_hash: strippedVideoSrcHash }).where({ id: vod.id }); + await knex('vods').update({ video_240_hash: strippedVideo240Hash }).where({ id: vod.id }); + } + + }, + }; + \ No newline at end of file diff --git a/packages/strapi-borked/database/migrations/2023-08-30-remove-cloudinary.js b/packages/strapi-borked/database/migrations/2023-08-30-remove-cloudinary.js new file mode 100644 index 0000000..6f1f5a7 --- /dev/null +++ b/packages/strapi-borked/database/migrations/2023-08-30-remove-cloudinary.js @@ -0,0 +1,13 @@ +module.exports = { + async up(knex) { + + const toys = await knex.select('*').from('toys'); + for (const [index, toy] of toys.entries()) { + if (toy.image_2) { + const existingImageFilename = new URL(toy.image_2).pathname.split('/').at(-1) + await knex('toys').update({ image_2: `https://futureporn-b2.b-cdn.net/${existingImageFilename}` }).where({ id: toy.id }); + } + } + }, + }; + \ No newline at end of file diff --git a/packages/strapi-borked/database/migrations/2023-08-30-toy-image-field-simplify.js b/packages/strapi-borked/database/migrations/2023-08-30-toy-image-field-simplify.js new file mode 100644 index 0000000..66ab1de --- /dev/null +++ b/packages/strapi-borked/database/migrations/2023-08-30-toy-image-field-simplify.js @@ -0,0 +1,33 @@ +module.exports = { + async up(knex) { + // Add the `image2` field (column) as a short text field + await knex.schema.table('toys', (table) => { + table.string('image_2', 512); + }); + + // Get all toys + const toys = await knex.select('*').from('toys'); + + // Update the image2 field with the previous image URLs + for (const toy of toys) { + // lookup the file morph which maps toy to (image) file + const imageFileId = (await knex.select('file_id').from('files_related_morphs').where({ related_id: toy.id }))[0].file_id + + // get the image data from the file + const imageUrl = (await knex.select('url').from('files').where({ id: imageFileId }))[0].url + + if (!imageUrl) continue; + + // Copy the values from image to image2 + await knex('toys').update({ image_2: imageUrl }).where({ id: toy.id }); + } + + const hasImageColumn = await knex.schema.hasColumn('toys', 'image'); + if (hasImageColumn) { + // Drop the `image` column + table.dropColumn('image'); + } + + + }, +}; diff --git a/packages/strapi-borked/database/migrations/2023-09-08-change-date-to-string.js b/packages/strapi-borked/database/migrations/2023-09-08-change-date-to-string.js new file mode 100644 index 0000000..3b03cc0 --- /dev/null +++ b/packages/strapi-borked/database/migrations/2023-09-08-change-date-to-string.js @@ -0,0 +1,23 @@ +module.exports = { + async up(knex) { + // Check if the 'date_2' column exists in the 'vods' table + const hasDate2Column = await knex.schema.hasColumn('vods', 'date_2'); + + if (!hasDate2Column) { + // Add the new 'date_2' column as a string if it doesn't exist + await knex.schema.table('vods', (table) => { + table.string('date_2'); + }); + + // Fetch all existing rows from the 'vods' table + const existingVods = await knex.select('id', 'date').from('vods'); + + // Loop through each row and update 'date_2' with the date value + for (const vod of existingVods) { + await knex('vods') + .where({ id: vod.id }) + .update({ date_2: vod.date.toISOString() }); + } + } + }, +}; diff --git a/packages/strapi-borked/database/migrations/2023-09-08-drop-toys-image.js b/packages/strapi-borked/database/migrations/2023-09-08-drop-toys-image.js new file mode 100644 index 0000000..2119714 --- /dev/null +++ b/packages/strapi-borked/database/migrations/2023-09-08-drop-toys-image.js @@ -0,0 +1,11 @@ +module.exports = { + async up(knex) { + const hasColumn = await knex.schema.hasColumn('toys', 'image'); + + if (hasColumn) { + await knex.schema.table('toys', (table) => { + table.dropColumn('image'); + }); + } + } +}; diff --git a/packages/strapi-borked/database/migrations/2023-09-08-drop-vod-videosrc.js b/packages/strapi-borked/database/migrations/2023-09-08-drop-vod-videosrc.js new file mode 100644 index 0000000..8d1f878 --- /dev/null +++ b/packages/strapi-borked/database/migrations/2023-09-08-drop-vod-videosrc.js @@ -0,0 +1,11 @@ +module.exports = { + async up(knex) { + const hasColumn = await knex.schema.hasColumn('vods', 'video_src'); + + if (hasColumn) { + await knex.schema.table('vods', (table) => { + table.dropColumn('video_src'); + }); + } + } +}; diff --git a/packages/strapi-borked/database/migrations/2023-12-24-add-cuid-to-vods.js b/packages/strapi-borked/database/migrations/2023-12-24-add-cuid-to-vods.js new file mode 100644 index 0000000..5590b99 --- /dev/null +++ b/packages/strapi-borked/database/migrations/2023-12-24-add-cuid-to-vods.js @@ -0,0 +1,31 @@ + +const generateCuid = require('../../misc/generateCuid'); + +module.exports = { + async up(knex) { + + console.log(`MIGRATION-- 2023-12-24-add-cuid-to-vods.js`); + + // Check if the 'cuid' column already exists in the 'vods' table + const hasCuidColumn = await knex.schema.hasColumn('vods', 'cuid'); + + if (!hasCuidColumn) { + // Add the 'cuid' column to the 'vods' table + await knex.schema.table('vods', (table) => { + table.string('cuid'); + }); + } + + // Get all vods from the database + const vods = await knex.select('*').from('vods'); + + // For each vod, populate cuid if it's null or undefined + for (const [index, vod] of vods.entries()) { + if (!vod.cuid) { + await knex('vods').update({ cuid: generateCuid() }).where({ id: vod.id }); + } + } + + }, +}; + diff --git a/packages/strapi-borked/database/migrations/2023-12-26-add-cuid-to-streams.js b/packages/strapi-borked/database/migrations/2023-12-26-add-cuid-to-streams.js new file mode 100644 index 0000000..942854b --- /dev/null +++ b/packages/strapi-borked/database/migrations/2023-12-26-add-cuid-to-streams.js @@ -0,0 +1,33 @@ + +const { init } = require('@paralleldrive/cuid2'); + +module.exports = { + async up(knex) { + + console.log(`MIGRATION-- 2023-12-26-add-cuid-to-streams.js`); + + // Check if the 'cuid' column already exists in the 'streams' table + const hasCuidColumn = await knex.schema.hasColumn('streams', 'cuid'); + + if (!hasCuidColumn) { + // Add the 'cuid' column to the 'streams' table + await knex.schema.table('streams', (table) => { + table.string('cuid'); + }); + } + + // Get all streams from the database + const streams = await knex.select('*').from('streams'); + + // For each stream, populate cuid if it's null or undefined + for (const [index, stream] of streams.entries()) { + if (!stream.cuid) { + const length = 10; + const genCuid = init({ length }); + await knex('streams').update({ cuid: genCuid() }).where({ id: stream.id }); + } + } + + }, +}; + diff --git a/packages/strapi-borked/database/migrations/2023-12-27-relate-vods-to-streams.js b/packages/strapi-borked/database/migrations/2023-12-27-relate-vods-to-streams.js new file mode 100644 index 0000000..703275d --- /dev/null +++ b/packages/strapi-borked/database/migrations/2023-12-27-relate-vods-to-streams.js @@ -0,0 +1,35 @@ + +const { sub, add } = require('date-fns'); + + +module.exports = { + async up(knex) { + console.log(`MIGRATION-- 2023-12-27-relate-vods-to-streams.js`); + + // Get all VODs from the database + const vods = await knex.select('*').from('vods'); + + // For each VOD, associate it with the stream with the nearest date (if not already associated) + for (const [index, vod] of vods.entries()) { + const existingAssociation = await knex('vods_stream_links') + .where({ vod_id: vod.id }) + .first(); + + if (!existingAssociation) { + // get nearest stream within +/- 3 hours + const date2 = new Date(vod.date_2); + const startDate = sub(date2, { hours: 3 }) + const endDate = add(date2, { hours: 3 }); + console.log(`vod.id=${vod.id}, vod.date_2=${vod.date_2}, date2=${date2}, startDate=${startDate}, endDate=${endDate}`) + const stream = await knex('streams') + .whereBetween('date', [startDate, endDate]) + + await knex('vods_stream_links').insert({ + stream_id: stream.id, + vod_id: vod.id, + vod_order: 1, + }); + } + } + }, +}; diff --git a/packages/strapi-borked/database/migrations/2023.05.09-video-src-sanity.js.noexec b/packages/strapi-borked/database/migrations/2023.05.09-video-src-sanity.js.noexec new file mode 100644 index 0000000..cda7f9d --- /dev/null +++ b/packages/strapi-borked/database/migrations/2023.05.09-video-src-sanity.js.noexec @@ -0,0 +1,26 @@ + +const fetch = require('node-fetch') + +let problemUrls = [] + +async function checkUrl(url) { + const res = await fetch(url); + if (!res.ok || !res?.headers?.get('x-bz-file-name') || !res?.headers?.get('x-bz-file-id')) problemUrls.push(url) +} + + + +module.exports = { + async up(knex) { + + // Get all VODs from the database + const vods = await knex.select('*').from('vods'); + + // sanity check every B2 URL + for (const vod of vods) { + await checkUrl(vod.video_src) + } + + process.exit(5923423) + }, +}; \ No newline at end of file diff --git a/packages/strapi-borked/database/migrations/2023.05.11T12.32.00.convert-to-video-src-b2.js.noexec b/packages/strapi-borked/database/migrations/2023.05.11T12.32.00.convert-to-video-src-b2.js.noexec new file mode 100644 index 0000000..41d8608 --- /dev/null +++ b/packages/strapi-borked/database/migrations/2023.05.11T12.32.00.convert-to-video-src-b2.js.noexec @@ -0,0 +1,98 @@ + +const fetch = require('node-fetch') + +// greets chatgpt +async function getFileDetailsFromUrl(url) { + const controller = new AbortController(); + const signal = controller.signal; + + const options = { + signal, + }; + + let retries = 10; + + while (retries) { + console.log(`fetching ${url}`); + const timeoutId = setTimeout(() => { + console.log('fetch timed out, aborting...'); + controller.abort(); + }, 5000); + + try { + const res = await fetch(url, options); + + clearTimeout(timeoutId); + + console.log('finished fetch'); + if (!res.ok) throw new Error(`problem while getting file from url with url ${url}`); + if (!res?.headers?.get('x-bz-file-name')) throw new Error(`${url} did not have a x-bz-file-name in the response headers`); + if (!res?.headers?.get('x-bz-file-id')) throw new Error(`${url} did not have a x-bz-file-id in the response headers`); + + return { + key: res.headers.get('x-bz-file-name'), + url: url, + uploadId: res.headers.get('x-bz-file-id'), + }; + } catch (err) { + clearTimeout(timeoutId); + retries--; + + if (retries === 0) { + console.error(`Could not fetch file details from URL: ${url}.`); + throw err; + } + + console.warn(`Retrying fetch (${retries} attempts left)`); + } + } +} + + + + +module.exports = { + async up(knex) { + // You have full access to the Knex.js API with an already initialized connection to the database + + // Get all VODs from the database + const vods = await knex.select('*').from('vods'); + + + // Process each VOD + for (const vod of vods) { + + // courtesy timer + await new Promise((resolve) => setTimeout(resolve, 1000)) + + console.log(vod) + // Get the file details from the VOD's video source URL + if (vod?.video_src) { + try { + const fileDetails = await getFileDetailsFromUrl(vod.video_src); + + // Insert the B2 file into the database + const [file] = await knex('b2_files').insert({ + url: fileDetails.url, + key: fileDetails.key, + upload_id: fileDetails.uploadId, + }).returning('id'); + + console.log(file) + console.log(`attempting to insert vod_id:${vod.id}, b_2_file_id:${file.id} for videoSrcB2`) + + // Link the B2 file to the VOD + await knex('vods_video_src_b_2_links').insert({ + vod_id: vod.id, + b_2_file_id: file.id, + }); + } catch (e) { + console.error(e) + console.log(`there was an error so we are skipping vod ${vod.id}`) + } + } else { + console.log(`${vod.id} has no video_src. skipping.`) + } + } + }, +}; \ No newline at end of file diff --git a/packages/strapi-borked/database/migrations/2023.05.14T00.42.00.000Z.migrate-tags-to-tag-vod-relations.js b/packages/strapi-borked/database/migrations/2023.05.14T00.42.00.000Z.migrate-tags-to-tag-vod-relations.js new file mode 100644 index 0000000..7c3e24a --- /dev/null +++ b/packages/strapi-borked/database/migrations/2023.05.14T00.42.00.000Z.migrate-tags-to-tag-vod-relations.js @@ -0,0 +1,43 @@ + +// up until now, tags have been attached directly to each vod object. +// now, tags are not attached to vods. +// instead, tag-vod-relations are used to associate a tag with a vod + +// what we need to do in this migration is +// * create a new tag-vod-relation for each tag in each vod +// * delete tags field in vods + +module.exports = { + async up(knex) { + + console.log('2023.05.14 - migrate tags to tag_vod_relations') + + // get all tags_vods_links + // for each, create a tag-vod-relation + const tagsVodsLinks = await knex.select('*').from('tags_vods_links') + + for (const tvl of tagsVodsLinks) { + // Create a tag-vod-relation entry for each tag + const tvr = await knex('tag_vod_relations') + .insert({ + created_at: new Date(), + updated_at: new Date(), + creator_id: 1 + }) + .returning( + ['id'] + ) + + await knex('tag_vod_relations_tag_links').insert({ + tag_vod_relation_id: tvr[0].id, + tag_id: tvl.tag_id + }) + + await knex('tag_vod_relations_vod_links').insert({ + tag_vod_relation_id: tvr[0].id, + vod_id: tvl.vod_id + }) + } + + }, +}; \ No newline at end of file diff --git a/packages/strapi-borked/database/migrations/2023.05.15T02.44.00.000Z.drop-vod-tags.js b/packages/strapi-borked/database/migrations/2023.05.15T02.44.00.000Z.drop-vod-tags.js new file mode 100644 index 0000000..15fc208 --- /dev/null +++ b/packages/strapi-borked/database/migrations/2023.05.15T02.44.00.000Z.drop-vod-tags.js @@ -0,0 +1,12 @@ + +// previously, we tagged vods directly on the vod content-type +// now, we use tag-vod-relation to relate tags to vods. +// thus, we want to get rid of vod.tags +// and also tag.vods + +module.exports = { + async up(knex) { + console.log('2023.05.15 - drop tags_vods_links') + await knex.schema.dropTable('tags_vods_links') + } +} \ No newline at end of file diff --git a/packages/strapi-borked/database/migrations/2023.05.25-gimme-the-tags.js.noexec b/packages/strapi-borked/database/migrations/2023.05.25-gimme-the-tags.js.noexec new file mode 100644 index 0000000..65af409 --- /dev/null +++ b/packages/strapi-borked/database/migrations/2023.05.25-gimme-the-tags.js.noexec @@ -0,0 +1,110 @@ + +// const fetch = require('node-fetch') + +// // greets chatgpt +// async function getFileDetailsFromUrl(url) { +// const controller = new AbortController(); +// const signal = controller.signal; + +// const options = { +// signal, +// }; + +// let retries = 10; + +// while (retries) { +// console.log(`fetching ${url}`); +// const timeoutId = setTimeout(() => { +// console.log('fetch timed out, aborting...'); +// controller.abort(); +// }, 5000); + +// try { +// const res = await fetch(url, options); + +// clearTimeout(timeoutId); + +// console.log('finished fetch'); +// if (!res.ok) throw new Error(`problem while getting file from url with url ${url}`); +// if (!res?.headers?.get('x-bz-file-name')) throw new Error(`${url} did not have a x-bz-file-name in the response headers`); +// if (!res?.headers?.get('x-bz-file-id')) throw new Error(`${url} did not have a x-bz-file-id in the response headers`); + +// return { +// key: res.headers.get('x-bz-file-name'), +// url: url, +// uploadId: res.headers.get('x-bz-file-id'), +// }; +// } catch (err) { +// clearTimeout(timeoutId); +// retries--; + +// if (retries === 0) { +// console.error(`Could not fetch file details from URL: ${url}.`); +// throw err; +// } + +// console.warn(`Retrying fetch (${retries} attempts left)`); +// } +// } +// } + + + + +module.exports = { + async up(knex) { + // You have full access to the Knex.js API with an already initialized connection to the database + + + // we iterate through the local, non-strapi backup db first. + // get list of all tags + // for each tag + // * get list of related vods + // * create relation in Strapi + // * + + + + // Get all VODs from the database + const vods = await knex.select('*').from('vods'); + + + // Process each VOD + for (const vod of vods) { + + // courtesy timer + await new Promise((resolve) => setTimeout(resolve, 10)) + + // @todo + + console.log(vod) + // Get the file details from the VOD's video source URL + if (vod?.video_src) { + try { + const fileDetails = await getFileDetailsFromUrl(vod.video_src); + + // Insert the B2 file into the database + const [file] = await knex('b2_files').insert({ + url: fileDetails.url, + key: fileDetails.key, + upload_id: fileDetails.uploadId, + }).returning('id'); + + console.log(file) + console.log(`attempting to insert vod_id:${vod.id}, b_2_file_id:${file.id} for videoSrcB2`) + + // Link the B2 file to the VOD + await knex('vods_video_src_b_2_links').insert({ + vod_id: vod.id, + b_2_file_id: file.id, + }); + } catch (e) { + console.error(e) + console.log(`there was an error so we are skipping vod ${vod.id}`) + } + } else { + console.log(`${vod.id} has no video_src. skipping.`) + } + } + }, +}; \ No newline at end of file diff --git a/packages/strapi-borked/database/migrations/2023.05.25T20.44.00.000Z.get-the-og-tags.js b/packages/strapi-borked/database/migrations/2023.05.25T20.44.00.000Z.get-the-og-tags.js new file mode 100644 index 0000000..a211ebb --- /dev/null +++ b/packages/strapi-borked/database/migrations/2023.05.25T20.44.00.000Z.get-the-og-tags.js @@ -0,0 +1,124 @@ +'use strict' + + +require('dotenv').config() + +const { Client } = require('pg') +const fetch = require('node-fetch') +const _ = require('lodash'); +const ogVods = require('../og-tags.json') + + +// const slugify = require('slugify') + + +// function slugifyString (str) { +// return slugify(str, { +// replacement: '-', // replace spaces with replacement character, defaults to `-` +// remove: undefined, // remove characters that match regex, defaults to `undefined` +// lower: true, // convert to lower case, defaults to `false` +// strict: true, // strip special characters except replacement, defaults to `false` +// locale: 'en', // language code of the locale to use +// trim: true // trim leading and trailing replacement chars, defaults to `true` +// }) +// } + + +async function associateTagWithVodsInStrapi (tagId, vodsIds) { + const res = await fetch(`${process.env.STRAPI_URL}/api/tags/${tagId}`, { + method: 'PUT', + headers: { + 'authorization': `Bearer ${process.env.STRAPI_API_KEY}` + }, + data: { + vods: [vodsIds] + } + }) + const json = await res.json() + + + if (!res.ok) throw new Error(JSON.stringify(json)) +} + + + +async function associateVodWithTagsInStrapi (knex, vodId, tagsIds) { + console.log(`updating vodId:${vodId} with tagsIds:${tagsIds}`) + for (const tagId of tagsIds) { + // see if it exists already + const rows = await knex.select('*').from('tags_vods_links').where({ + 'vod_id': vodId, + 'tag_id': tagId + }) + if (rows.length === 0) { + await knex('tags_vods_links').insert({ + vod_id: vodId, + tag_id: tagId + }); + } + } +} + +async function getStrapiVodByAnnounceUrl (knex, announceUrl) { + const rows = await knex.select('*').from('vods').where('announce_url', announceUrl) + return (rows[0]) +} + + + + +async function getStrapiTagByName (knex, tag) { + const rows = await knex.select('*').from('tags').where({ 'name': tag }) + return rows[0] +} + + + + + +module.exports = { + async up(knex) { + // You have full access to the Knex.js API with an already initialized connection to the database + + for (const vod of ogVods) { + // get matching vod in strapi + console.log(vod) + if (vod.announceUrl) { + const strapiVod = await getStrapiVodByAnnounceUrl(knex, vod.announceUrl) + + if (strapiVod) { + // we've got a matching vod + + if (vod.tags) { + console.log(`source vod has tags: ${vod.tags}`) + + let strapiTagsIds = [] + + // for each tag, get the matching strapi tag ID + for (const tag of vod.tags) { + // lookup the strapi tag id + const strapiTag = await getStrapiTagByName(knex, tag) + if (!!strapiTag) { + strapiTagsIds.push(strapiTag.id) + } + } + + console.log(`we are adding the following strapiTagsIds to vod ID ${strapiVod.id}: ${strapiTagsIds}`) + + // create relations between matching vod and the tags + await associateVodWithTagsInStrapi(knex, strapiVod.id, strapiTagsIds) + + } + } + } + } + + // Get all VODs from the database + const vods = await knex.select('*').from('vods'); + + // Process each VOD + for (const vod of vods) { + + } + } +} diff --git a/packages/strapi-borked/database/migrations/2023.07.17.relate-vods-to-vtubers.js b/packages/strapi-borked/database/migrations/2023.07.17.relate-vods-to-vtubers.js new file mode 100644 index 0000000..5f035a1 --- /dev/null +++ b/packages/strapi-borked/database/migrations/2023.07.17.relate-vods-to-vtubers.js @@ -0,0 +1,70 @@ +module.exports = { + async up(knex) { + + console.log('Create vtubers table') + await knex.schema.createTable('vtubers', (table) => { + table.increments('id').primary(); + table.string('displayName').notNullable(); + table.string('chaturbate'); + table.string('twitter'); + table.string('patreon'); + table.string('twitch'); + table.string('tiktok'); + table.string('onlyfans'); + table.string('youtube'); + table.string('linktree'); + table.string('carrd'); + table.string('fansly'); + table.string('pornhub'); + table.string('discord'); + table.string('reddit'); + table.string('throne'); + table.string('instagram'); + table.string('facebook'); + table.string('merch'); + table.string('slug').notNullable(); + table.text('description1').notNullable(); + table.text('description2'); + table.string('image').notNullable(); + }); + + console.log('Create vods_vtuber_links table') + await knex.schema.createTable('vods_vtuber_links', (table) => { + table.increments('id').primary(); + table.integer('vod_id').unsigned().references('vods.id'); + table.integer('vtuber_id').unsigned().references('vtubers.id'); + table.integer('vod_order').notNullable(); + }); + + + console.log('Create a vtuber entry for ProjektMelody') + const projektMelody = { + displayName: 'ProjektMelody', + slug: 'projektmelody', // You can customize the slug based on your preference + description1: 'Description for ProjektMelody', // Add your vtuber's description here + image: 'http://futureporn-b2.b-cdn.net/futureporn/projekt-melody.jpg', // Replace with the image filename for ProjektMelody + }; + + console.log('Get all VODs from the database') + const vods = await knex.select('*').from('vods'); + + console.log('get projektmelody id') + // const [projektMelodyId] = await knex('vtubers').insert(projektMelody); + const projektMelodyId = 1 + + console.log(`projektmelodyId is : ${projektMelodyId}`) + + console.log(`For each VOD, associate ProjektMelody vtuber.`) + for (const [index, vod] of vods.entries()) { + console.log(`Check if vtuber_id exists in the vtubers table`) + const vtuber = await knex('vtubers').where('id', projektMelodyId).first(); + if (vtuber) { + await knex('vods_vtuber_links').insert({ + vtuber_id: projektMelodyId, + vod_id: vod.id, + vod_order: index + 1, // Auto-increment the vod_order number + }); + } + } + }, +}; diff --git a/packages/strapi-borked/database/migrations/2023.07.31.add-b2-file-cdnUrl.js b/packages/strapi-borked/database/migrations/2023.07.31.add-b2-file-cdnUrl.js new file mode 100644 index 0000000..308f159 --- /dev/null +++ b/packages/strapi-borked/database/migrations/2023.07.31.add-b2-file-cdnUrl.js @@ -0,0 +1,18 @@ +module.exports = { + async up(knex) { + // Add the 'cdn_url' column to the 'b2_files' table + await knex.schema.table('b2_files', (table) => { + table.string('cdn_url'); // Change the data type if needed (e.g., text, varchar, etc.) + }); + + // Get all B2 Files from the database + const files = await knex.select('*').from('b2_files'); + + // For each B2 File, create cdnUrl + for (const [index, file] of files.entries()) { + const key = file.key; + const cdnUrl = `https://futureporn-b2.b-cdn.net/futureporn/${key}`; + await knex('b2_files').update({ cdn_url: cdnUrl }).where({ id: file.id }); + } + }, +}; diff --git a/packages/strapi-borked/database/migrations/2024-01-08-add-streams.js.noexec b/packages/strapi-borked/database/migrations/2024-01-08-add-streams.js.noexec new file mode 100644 index 0000000..d354107 --- /dev/null +++ b/packages/strapi-borked/database/migrations/2024-01-08-add-streams.js.noexec @@ -0,0 +1,30 @@ +module.exports = { + async up(knex) { + + await knex.schema.createTable('streams', (table) => { + table.increments('id').primary(); + table.string('date_str').notNullable(); + table.string('vods'); + table.string('vtuber'); + table.string('tweet'); + table.string('date'); + table.string('cuid'); + }); + + + // Add the 'cdn_url' column to the 'b2_files' table + await knex.schema.table('b2_files', (table) => { + table.string('cdn_url'); // Change the data type if needed (e.g., text, varchar, etc.) + }); + + // Get all B2 Files from the database + const files = await knex.select('*').from('b2_files'); + + // For each B2 File, create cdnUrl + for (const [index, file] of files.entries()) { + const key = file.key; + const cdnUrl = `https://futureporn-b2.b-cdn.net/futureporn/${key}`; + await knex('b2_files').update({ cdn_url: cdnUrl }).where({ id: file.id }); + } + }, +}; diff --git a/packages/strapi-borked/database/migrations/2024-01-14-add-date2-to-streams.js b/packages/strapi-borked/database/migrations/2024-01-14-add-date2-to-streams.js new file mode 100644 index 0000000..5cbd5cf --- /dev/null +++ b/packages/strapi-borked/database/migrations/2024-01-14-add-date2-to-streams.js @@ -0,0 +1,29 @@ + +module.exports = { + async up(knex) { + + console.log(`MIGRATION-- 2024-01-14-add-date2-to-streams.js`); + + // Check if the 'date_2' column already exists in the 'streams' table + const hasColumn = await knex.schema.hasColumn('streams', 'date_2'); + + if (!hasColumn) { + console.log(`Adding the 'date_2' column to the 'streams' table`); + await knex.schema.table('streams', (table) => { + table.string('date_2'); + }); + } + + // Get all streams from the database + const streams = await knex.select('*').from('streams'); + + // For each stream, populate date_2 if it's null or undefined + for (const [index, stream] of streams.entries()) { + if (stream.date_2 === null && stream.date_str !== null) { + const result = await knex('streams').update({ date_2: stream.date_str }).where({ id: stream.id }); + } + } + + }, +}; + diff --git a/packages/strapi-borked/database/migrations/2024-01-15-add-platform-to-streams.js b/packages/strapi-borked/database/migrations/2024-01-15-add-platform-to-streams.js new file mode 100644 index 0000000..a1632e9 --- /dev/null +++ b/packages/strapi-borked/database/migrations/2024-01-15-add-platform-to-streams.js @@ -0,0 +1,49 @@ + +module.exports = { + async up(knex) { + + console.log(`MIGRATION-- 2024-01-15-add-platform-streams.js`); + + // Check if the 'platform' column already exists in the 'streams' table + const hasColumn = await knex.schema.hasColumn('streams', 'platform'); + + if (!hasColumn) { + console.log(`Adding the 'platform' column to the 'streams' table`); + await knex.schema.table('streams', (table) => { + table.string('platform'); + }); + } + + // Get all streams from the database + const streams = await knex.select('*').from('streams'); + + // For each stream, populate platform based on the related tweet data + for (const [index, stream] of streams.entries()) { + + const tweetLink = await knex('streams_tweet_links') + .where({ stream_id: stream.id }) + .first(); + + if (tweetLink) { + console.log(tweetLink); + + const tweet = await knex('tweets') + .where({ id: tweetLink.tweet_id }) + .first(); + + console.log(tweet); + + if (!!tweet) { + console.log(`stream ${stream.id} tweet tweet.is_chaturbate_invite=${tweet.is_chaturbate_invite}, tweet.is_fansly_invite=${tweet.is_fansly_invite}`); + await knex('streams').update({ + is_chaturbate_stream: !!tweet.is_chaturbate_invite, + is_fansly_stream: !!tweet.is_fansly_invite + }).where({ id: stream.id }); + } + } + + } + + }, +}; + diff --git a/packages/strapi-borked/database/og-tags.json b/packages/strapi-borked/database/og-tags.json new file mode 100644 index 0000000..7d838af --- /dev/null +++ b/packages/strapi-borked/database/og-tags.json @@ -0,0 +1,1009 @@ +[{ + "tags": null, + "date": "2020-02-09T18:14:25.000Z", + "announceUrl": "https://twitter.com/ProjektMelody/status/1226570058073362438" +}, { + "tags": null, + "date": "2020-02-10T02:15:55.000Z", + "announceUrl": "https://twitter.com/ProjektMelody/status/1226691233659183104" +}, { + "tags": null, + "date": "2020-02-12T01:11:48.000Z", + "announceUrl": "https://twitter.com/ProjektMelody/status/1227399871734468610" +}, { + "tags": null, + "date": "2020-02-12T17:14:12.000Z", + "announceUrl": "https://twitter.com/ProjektMelody/status/1227642067733618691" +}, { + "tags": null, + "date": "2020-02-13T02:09:11.000Z", + "announceUrl": "https://twitter.com/ProjektMelody/status/1227776703415693312" +}, { + "tags": null, + "date": "2020-02-15T02:13:56.000Z", + "announceUrl": "https://twitter.com/ProjektMelody/status/1228502672246005760" +}, { + "tags": null, + "date": "2020-02-18T21:17:28.000Z", + "announceUrl": "https://twitter.com/ProjektMelody/status/1229877618067025923" +}, { + "tags": null, + "date": "2020-02-20T01:06:47.000Z", + "announceUrl": "https://twitter.com/ProjektMelody/status/1230297714719674368" +}, { + "tags": null, + "date": "2020-02-22T02:13:38.000Z", + "announceUrl": "https://twitter.com/ProjektMelody/status/1231039313300901889" +}, { + "tags": null, + "date": "2023-02-19T00:15:09.000Z", + "announceUrl": "https://twitter.com/ProjektMelody/status/1627099434508075008" +}, { + "tags": null, + "date": "2020-02-09T01:40:10.000Z", + "announceUrl": "https://twitter.com/ProjektMelody/status/1226319848411717632" +}, { + "tags": null, + "date": "2020-02-21T16:25:47.000Z", + "announceUrl": "https://twitter.com/ProjektMelody/status/1230891377422192641" +}, { + "tags": null, + "date": "2020-03-03T21:06:17.000Z", + "announceUrl": "https://twitter.com/ProjektMelody/status/1234948231311876096" +}, { + "tags": null, + "date": "2020-03-05T01:18:07.000Z", + "announceUrl": "https://twitter.com/ProjektMelody/status/1235373996906078208" +}, { + "tags": null, + "date": "2020-03-07T02:40:52.000Z", + "announceUrl": "https://twitter.com/ProjektMelody/status/1236119594995245057" +}, { + "tags": null, + "date": "2020-03-12T00:01:06.000Z", + "announceUrl": "https://twitter.com/ProjektMelody/status/1237891327922016258" +}, { + "tags": null, + "date": "2020-03-15T20:22:40.000Z", + "announceUrl": "https://twitter.com/ProjektMelody/status/1239285911201988609" +}, { + "tags": null, + "date": "2020-03-17T19:55:46.000Z", + "announceUrl": "https://twitter.com/ProjektMelody/status/1240003917355921412" +}, { + "tags": null, + "date": "2020-03-22T00:11:12.000Z", + "announceUrl": "https://twitter.com/ProjektMelody/status/1241517748276154371" +}, { + "tags": null, + "date": "2020-03-26T00:14:56.000Z", + "announceUrl": "https://twitter.com/ProjektMelody/status/1242968240894234627" +}, { + "tags": null, + "date": "2020-03-01T21:06:17.000Z", + "announceUrl": "https://twitter.com/ProjektMelody/status/1234223457723961344" +}, { + "tags": ["anal", "deep throat", "vore", "stuck in wall", "choking", "puddle", "squirting"], + "date": "2020-02-08T16:12:42.000Z", + "announceUrl": "https://twitter.com/ProjektMelody/status/1226177041109786625" +}, { + "tags": null, + "date": "2020-02-28T16:38:43.000Z", + "announceUrl": "https://twitter.com/ProjektMelody/status/1233431346112061441" +}, { + "tags": null, + "date": "2020-04-14T19:57:03.000Z", + "announceUrl": "https://twitter.com/ProjektMelody/status/1250151101174816769" +}, { + "tags": null, + "date": "2020-04-24T00:55:16.000Z", + "announceUrl": "https://twitter.com/ProjektMelody/status/1253487639430410240" +}, { + "tags": null, + "date": "2020-04-25T23:05:42.000Z", + "announceUrl": "https://twitter.com/ProjektMelody/status/1254184839684726786" +}, { + "tags": null, + "date": "2020-04-26T22:54:50.000Z", + "announceUrl": "https://twitter.com/ProjektMelody/status/1254544493849739264" +}, { + "tags": null, + "date": "2020-05-09T21:59:16.000Z", + "announceUrl": "https://twitter.com/ProjektMelody/status/1259241552016216065" +}, { + "tags": null, + "date": "2020-05-12T19:01:53.000Z", + "announceUrl": "https://twitter.com/ProjektMelody/status/1260284077011238912" +}, { + "tags": null, + "date": "2020-06-27T00:06:39.000Z", + "announceUrl": "https://twitter.com/ProjektMelody/status/1276668227767144452" +}, { + "tags": null, + "date": "2020-02-17T01:05:40.000Z", + "announceUrl": "https://twitter.com/ProjektMelody/status/1229210268447715328" +}, { + "tags": null, + "date": "2020-04-05T22:55:16.000Z", + "announceUrl": "https://twitter.com/ProjektMelody/status/1246934456927215617" +}, { + "tags": null, + "date": "2020-05-05T19:00:56.000Z", + "announceUrl": "https://twitter.com/ProjektMelody/status/1257747123682119680" +}, { + "tags": null, + "date": "2020-05-28T19:57:30.000Z", + "announceUrl": "https://twitter.com/ProjektMelody/status/1266096281002356736" +}, { + "tags": null, + "date": "2020-05-29T23:02:07.000Z", + "announceUrl": "https://twitter.com/ProjektMelody/status/1266505128426815488" +}, { + "tags": null, + "date": "2020-06-01T00:13:53.000Z", + "announceUrl": "https://twitter.com/ProjektMelody/status/1267247965464297473" +}, { + "tags": null, + "date": "2020-06-06T00:02:11.000Z", + "announceUrl": "https://twitter.com/ProjektMelody/status/1269056957295583240" +}, { + "tags": null, + "date": "2020-06-16T18:55:04.000Z", + "announceUrl": "https://twitter.com/ProjektMelody/status/1272965936685953024" +}, { + "tags": null, + "date": "2020-06-18T23:37:57.000Z", + "announceUrl": "https://twitter.com/ProjektMelody/status/1273761903664336897" +}, { + "tags": null, + "date": "2020-06-21T00:09:09.000Z", + "announceUrl": "https://twitter.com/ProjektMelody/status/1274494531312984064" +}, { + "tags": null, + "date": "2020-06-23T20:00:12.000Z", + "announceUrl": "https://twitter.com/ProjektMelody/status/1275519042955153409" +}, { + "tags": null, + "date": "2020-02-27T01:10:55.000Z", + "announceUrl": "https://twitter.com/ProjektMelody/status/1232835470712803328" +}, { + "tags": null, + "date": "2020-05-23T00:02:55.000Z", + "announceUrl": "https://twitter.com/ProjektMelody/status/1263983714893279233" +}, { + "tags": null, + "date": "2020-07-15T00:25:49.000Z", + "announceUrl": "https://twitter.com/ProjektMelody/status/1283196031648358400" +}, { + "tags": null, + "date": "2020-07-18T01:14:51.000Z", + "announceUrl": "https://twitter.com/ProjektMelody/status/1284295535751499776" +}, { + "tags": null, + "date": "2020-07-25T00:00:05.000Z", + "announceUrl": "https://twitter.com/ProjektMelody/status/1286813436119220225" +}, { + "tags": null, + "date": "2020-07-29T20:03:40.000Z", + "announceUrl": "https://twitter.com/ProjektMelody/status/1288565878502699008" +}, { + "tags": null, + "date": "2020-08-01T00:00:00.000Z", + "announceUrl": "https://twitter.com/ProjektMelody/status/1289350128436838400" +}, { + "tags": null, + "date": "2020-08-05T19:52:40.000Z", + "announceUrl": "https://twitter.com/ProjektMelody/status/1291099825396748292" +}, { + "tags": null, + "date": "2020-08-14T22:21:59.000Z", + "announceUrl": "https://twitter.com/ProjektMelody/status/1294398894466629634" +}, { + "tags": null, + "date": "2020-08-19T21:00:11.000Z", + "announceUrl": "https://twitter.com/ProjektMelody/status/1296190247957659649" +}, { + "tags": null, + "date": "2020-03-14T01:38:59.000Z", + "announceUrl": "https://twitter.com/ProjektMelody/status/1238640737668997120" +}, { + "tags": null, + "date": "2020-07-10T23:59:34.000Z", + "announceUrl": "https://twitter.com/ProjektMelody/status/1281739875319009280" +}, { + "tags": null, + "date": "2020-09-11T18:02:31.000Z", + "announceUrl": "https://twitter.com/ProjektMelody/status/1304480454242861056" +}, { + "tags": null, + "date": "2020-09-13T23:00:49.000Z", + "announceUrl": "https://twitter.com/ProjektMelody/status/1305280300130406402" +}, { + "tags": null, + "date": "2020-09-18T22:55:13.000Z", + "announceUrl": "https://twitter.com/ProjektMelody/status/1307090831011205120" +}, { + "tags": null, + "date": "2020-09-28T20:14:36.000Z", + "announceUrl": "https://twitter.com/ProjektMelody/status/1310674290744995843" +}, { + "tags": null, + "date": "2020-10-02T23:48:02.000Z", + "announceUrl": "https://twitter.com/ProjektMelody/status/1312177554824990720" +}, { + "tags": null, + "date": "2020-10-06T22:59:13.000Z", + "announceUrl": "https://twitter.com/ProjektMelody/status/1313614818713231360" +}, { + "tags": null, + "date": "2020-10-09T18:01:05.000Z", + "announceUrl": "https://twitter.com/ProjektMelody/status/1314626953803161601" +}, { + "tags": null, + "date": "2020-04-02T00:11:39.000Z", + "announceUrl": "https://twitter.com/ProjektMelody/status/1245504130753404931" +}, { + "tags": null, + "date": "2020-08-23T22:59:21.000Z", + "announceUrl": "https://twitter.com/ProjektMelody/status/1297669785883484160" +}, { + "tags": null, + "date": "2020-09-20T20:00:12.000Z", + "announceUrl": "https://twitter.com/ProjektMelody/status/1307771561651441665" +}, { + "tags": null, + "date": "2020-10-31T23:03:57.000Z", + "announceUrl": "https://twitter.com/ProjektMelody/status/1322675709379334146" +}, { + "tags": null, + "date": "2020-11-18T21:28:43.000Z", + "announceUrl": "https://twitter.com/ProjektMelody/status/1329174724790915075" +}, { + "tags": null, + "date": "2020-11-23T23:56:04.000Z", + "announceUrl": "https://twitter.com/ProjektMelody/status/1331023742693232646" +}, { + "tags": null, + "date": "2020-11-26T22:03:19.000Z", + "announceUrl": "https://twitter.com/ProjektMelody/status/1332082533526360066" +}, { + "tags": null, + "date": "2020-12-04T21:18:42.000Z", + "announceUrl": "https://twitter.com/ProjektMelody/status/1334970406025965571" +}, { + "tags": null, + "date": "2020-12-07T23:56:41.000Z", + "announceUrl": "https://twitter.com/ProjektMelody/status/1336097330483916800" +}, { + "tags": null, + "date": "2020-04-09T00:06:24.000Z", + "announceUrl": "https://twitter.com/ProjektMelody/status/1248039525215080449" +}, { + "tags": null, + "date": "2020-10-18T18:59:38.000Z", + "announceUrl": "https://twitter.com/ProjektMelody/status/1317903180148166657" +}, { + "tags": null, + "date": "2020-10-29T19:58:10.000Z", + "announceUrl": "https://twitter.com/ProjektMelody/status/1321904176637595648" +}, { + "tags": null, + "date": "2021-01-05T23:07:36.000Z", + "announceUrl": "https://twitter.com/ProjektMelody/status/1346594227233427459" +}, { + "tags": null, + "date": "2021-01-08T23:03:45.000Z", + "announceUrl": "https://twitter.com/ProjektMelody/status/1347680421920862209" +}, { + "tags": null, + "date": "2021-01-12T23:03:22.000Z", + "announceUrl": "https://twitter.com/ProjektMelody/status/1349129873068068873" +}, { + "tags": null, + "date": "2021-01-16T01:01:22.000Z", + "announceUrl": "https://twitter.com/ProjektMelody/status/1350246732391706624" +}, { + "tags": null, + "date": "2021-01-22T23:02:24.000Z", + "announceUrl": "https://twitter.com/ProjektMelody/status/1352753509045776384" +}, { + "tags": null, + "date": "2021-01-26T23:02:21.000Z", + "announceUrl": "https://twitter.com/ProjektMelody/status/1354203048491544581" +}, { + "tags": null, + "date": "2021-02-03T23:00:44.000Z", + "announceUrl": "https://twitter.com/ProjektMelody/status/1357101745961328645" +}, { + "tags": null, + "date": "2020-12-21T21:01:24.000Z", + "announceUrl": "https://twitter.com/ProjektMelody/status/1341126649329410050" +}, { + "tags": null, + "date": "2020-12-28T23:20:13.000Z", + "announceUrl": "https://twitter.com/ProjektMelody/status/1343698295563153408" +}, { + "tags": null, + "date": "2021-02-14T21:13:33.000Z", + "announceUrl": "https://twitter.com/ProjektMelody/status/1361061038620364812" +}, { + "tags": null, + "date": "2021-02-18T00:01:18.000Z", + "announceUrl": "https://twitter.com/ProjektMelody/status/1362190417631076352" +}, { + "tags": null, + "date": "2021-02-20T00:59:31.000Z", + "announceUrl": "https://twitter.com/ProjektMelody/status/1362929843759943681" +}, { + "tags": null, + "date": "2021-02-24T23:01:00.000Z", + "announceUrl": "https://twitter.com/ProjektMelody/status/1364711958105194498" +}, { + "tags": null, + "date": "2021-03-02T23:07:27.000Z", + "announceUrl": "https://twitter.com/ProjektMelody/status/1366887909241012233" +}, { + "tags": null, + "date": "2021-03-12T22:53:59.000Z", + "announceUrl": "https://twitter.com/ProjektMelody/status/1370508398081540098" +}, { + "tags": null, + "date": "2021-03-13T20:58:44.000Z", + "announceUrl": "https://twitter.com/ProjektMelody/status/1370841782506901516" +}, { + "tags": null, + "date": "2021-03-20T21:54:09.000Z", + "announceUrl": "https://twitter.com/ProjektMelody/status/1373392441257103368" +}, { + "tags": null, + "date": "2021-03-22T22:05:15.000Z", + "announceUrl": "https://twitter.com/ProjektMelody/status/1374120011854397442" +}, { + "tags": null, + "date": "2021-02-10T23:26:55.000Z", + "announceUrl": "https://twitter.com/ProjektMelody/status/1359645050792206337" +}, { + "tags": null, + "date": "2021-02-25T00:00:00.000Z", + "announceUrl": null +}, { + "tags": null, + "date": "2021-04-03T01:26:21.000Z", + "announceUrl": "https://twitter.com/ProjektMelody/status/1378156887884005378" +}, { + "tags": null, + "date": "2021-04-03T19:55:31.000Z", + "announceUrl": "https://twitter.com/ProjektMelody/status/1378436020081950726" +}, { + "tags": null, + "date": "2021-04-12T23:11:23.000Z", + "announceUrl": "https://twitter.com/ProjektMelody/status/1381746799506030593" +}, { + "tags": null, + "date": "2021-04-24T17:31:05.000Z", + "announceUrl": "https://twitter.com/ProjektMelody/status/1386009816443805699" +}, { + "tags": null, + "date": "2021-05-01T16:59:01.000Z", + "announceUrl": "https://twitter.com/ProjektMelody/status/1388538459816595463" +}, { + "tags": null, + "date": "2021-05-14T15:53:36.000Z", + "announceUrl": "https://twitter.com/ProjektMelody/status/1393233038298001411" +}, { + "tags": null, + "date": "2021-05-21T22:59:03.000Z", + "announceUrl": "https://twitter.com/ProjektMelody/status/1395876824865988611" +}, { + "tags": null, + "date": "2021-05-25T22:04:21.000Z", + "announceUrl": "https://twitter.com/ProjektMelody/status/1397312608454258690" +}, { + "tags": null, + "date": "2021-06-05T22:02:00.000Z", + "announceUrl": "https://twitter.com/ProjektMelody/status/1401298283499298817" +}, { + "tags": null, + "date": "2021-06-12T22:56:31.000Z", + "announceUrl": "https://twitter.com/ProjektMelody/status/1403848719695482888" +}, { + "tags": null, + "date": "2022-01-09T23:32:49.000Z", + "announceUrl": "https://twitter.com/ProjektMelody/status/1480321695315640328" +}, { + "tags": null, + "date": "2021-06-26T20:08:24.000Z", + "announceUrl": "https://twitter.com/ProjektMelody/status/1408879841315860486" +}, { + "tags": null, + "date": "2021-07-03T22:04:50.000Z", + "announceUrl": "https://twitter.com/ProjektMelody/status/1411445858244169728" +}, { + "tags": null, + "date": "2021-07-07T19:04:50.000Z", + "announceUrl": "https://twitter.com/ProjektMelody/status/1412850109608566786" +}, { + "tags": null, + "date": "2021-07-13T19:52:08.000Z", + "announceUrl": "https://twitter.com/ProjektMelody/status/1415036340580884482" +}, { + "tags": null, + "date": "2021-07-17T20:05:10.000Z", + "announceUrl": "https://twitter.com/ProjektMelody/status/1416489172311887876" +}, { + "tags": null, + "date": "2021-08-04T23:11:38.000Z", + "announceUrl": "https://twitter.com/ProjektMelody/status/1423059078381719564" +}, { + "tags": null, + "date": "2021-08-08T20:26:41.000Z", + "announceUrl": "http://twitter.com/ProjektMelody/status/1424467119006261249" +}, { + "tags": null, + "date": "2021-08-12T19:57:20.000Z", + "announceUrl": "https://twitter.com/ProjektMelody/status/1425909284940955648" +}, { + "tags": null, + "date": "2021-08-17T23:16:50.000Z", + "announceUrl": "https://twitter.com/ProjektMelody/status/1427771428833738755" +}, { + "tags": null, + "date": "2021-08-21T20:13:36.000Z", + "announceUrl": "https://twitter.com/ProjektMelody/status/1429174868935856133" +}, { + "tags": null, + "date": "2022-05-13T19:19:42.000Z", + "announceUrl": "https://twitter.com/ProjektMelody/status/1525194090299670528" +}, { + "tags": null, + "date": "2021-09-09T23:01:37.000Z", + "announceUrl": "https://twitter.com/ProjektMelody/status/1436102522201116673" +}, { + "tags": null, + "date": "2021-09-12T22:03:47.000Z", + "announceUrl": "http://twitter.com/ProjektMelody/status/1437175131223302146" +}, { + "tags": null, + "date": "2021-09-19T19:47:34.000Z", + "announceUrl": "https://twitter.com/ProjektMelody/status/1439677566739259395" +}, { + "tags": null, + "date": "2021-09-21T21:56:01.000Z", + "announceUrl": "https://twitter.com/ProjektMelody/status/1440434669305012228" +}, { + "tags": null, + "date": "2021-09-29T18:55:41.000Z", + "announceUrl": "https://twitter.com/ProjektMelody/status/1443288390007508995" +}, { + "tags": null, + "date": "2021-10-09T20:09:55.000Z", + "announceUrl": "https://twitter.com/ProjektMelody/status/1446930950332506117" +}, { + "tags": null, + "date": "2021-10-11T22:06:20.000Z", + "announceUrl": "https://twitter.com/ProjektMelody/status/1447685023059128320" +}, { + "tags": null, + "date": "2021-10-23T20:18:46.000Z", + "announceUrl": "https://twitter.com/ProjektMelody/status/1452006607626412038" +}, { + "tags": null, + "date": "2021-11-04T22:03:43.000Z", + "announceUrl": "https://twitter.com/ProjektMelody/status/1456381673235492878" +}, { + "tags": null, + "date": "2023-04-04T23:43:09.000Z", + "announceUrl": "https://twitter.com/ProjektMelody/status/1643398832485482497" +}, { + "tags": null, + "date": "2022-09-07T23:13:00.000Z", + "announceUrl": null +}, { + "tags": null, + "date": "2021-11-12T00:08:21.000Z", + "announceUrl": "https://twitter.com/ProjektMelody/status/1458949749986443268" +}, { + "tags": null, + "date": "2021-11-19T20:01:27.000Z", + "announceUrl": "https://twitter.com/ProjektMelody/status/1461786722337972235" +}, { + "tags": null, + "date": "2021-12-06T20:10:31.000Z", + "announceUrl": "https://twitter.com/ProjektMelody/status/1467949594252398599" +}, { + "tags": null, + "date": "2021-12-12T23:12:01.000Z", + "announceUrl": "https://twitter.com/ProjektMelody/status/1470169597546479617" +}, { + "tags": null, + "date": "2021-12-15T23:04:14.000Z", + "announceUrl": "https://twitter.com/ProjektMelody/status/1471254803451887625" +}, { + "tags": null, + "date": "2021-12-17T23:05:54.000Z", + "announceUrl": "https://twitter.com/ProjektMelody/status/1471979997426589699" +}, { + "tags": null, + "date": "2021-12-25T22:34:35.000Z", + "announceUrl": "https://twitter.com/ProjektMelody/status/1474871219610603526" +}, { + "tags": null, + "date": "2021-12-30T23:17:45.000Z", + "announceUrl": "https://twitter.com/ProjektMelody/status/1476694022408261640" +}, { + "tags": null, + "date": "2022-01-03T23:10:33.000Z", + "announceUrl": "https://twitter.com/ProjektMelody/status/1478141764741611527" +}, { + "tags": null, + "date": "2022-01-13T00:03:21.000Z", + "announceUrl": "https://twitter.com/ProjektMelody/status/1481416541493153795" +}, { + "tags": null, + "date": "2022-01-22T22:59:59.000Z", + "announceUrl": "https://twitter.com/ProjektMelody/status/1485024472105164805" +}, { + "tags": null, + "date": "2022-01-26T01:57:25.000Z", + "announceUrl": "https://twitter.com/ProjektMelody/status/1486156290585882626" +}, { + "tags": null, + "date": "2022-02-02T21:48:11.000Z", + "announceUrl": "https://twitter.com/ProjektMelody/status/1488992672022945793" +}, { + "tags": null, + "date": "2022-02-16T23:00:32.000Z", + "announceUrl": "https://twitter.com/ProjektMelody/status/1494084309958987782" +}, { + "tags": null, + "date": "2022-02-18T20:01:16.000Z", + "announceUrl": "https://twitter.com/ProjektMelody/status/1494763968535179274" +}, { + "tags": null, + "date": "2022-03-10T23:02:20.000Z", + "announceUrl": "https://twitter.com/ProjektMelody/status/1502057294246424600" +}, { + "tags": null, + "date": "2022-03-18T01:35:11.000Z", + "announceUrl": "https://twitter.com/ProjektMelody/status/1504632475804446721" +}, { + "tags": null, + "date": "2022-04-06T00:02:17.000Z", + "announceUrl": "https://twitter.com/ProjektMelody/status/1511494467097870340" +}, { + "tags": null, + "date": "2022-04-10T00:12:41.000Z", + "announceUrl": "https://twitter.com/ProjektMelody/status/1512946635655065602" +}, { + "tags": null, + "date": "2022-04-16T23:09:42.000Z", + "announceUrl": "https://twitter.com/ProjektMelody/status/1515467499642531845" +}, { + "tags": null, + "date": "2022-04-22T23:14:35.000Z", + "announceUrl": "https://twitter.com/ProjektMelody/status/1517643056228487168" +}, { + "tags": null, + "date": "2022-05-06T22:59:23.000Z", + "announceUrl": "https://twitter.com/ProjektMelody/status/1522712662349656064" +}, { + "tags": null, + "date": "2022-05-08T22:51:40.000Z", + "announceUrl": "https://twitter.com/ProjektMelody/status/1523435492657664000" +}, { + "tags": null, + "date": "2022-05-19T00:44:58.000Z", + "announceUrl": "https://twitter.com/ProjektMelody/status/1527087885693878275" +}, { + "tags": null, + "date": "2022-05-25T02:06:07.000Z", + "announceUrl": "https://twitter.com/ProjektMelody/status/1529282633762492417" +}, { + "tags": null, + "date": "2022-06-05T23:30:37.000Z", + "announceUrl": "https://twitter.com/ProjektMelody/status/1533592158179139585" +}, { + "tags": null, + "date": "2022-06-09T21:10:03.000Z", + "announceUrl": "https://twitter.com/ProjektMelody/status/1535006331119222784" +}, { + "tags": null, + "date": "2022-06-22T23:46:31.000Z", + "announceUrl": "https://twitter.com/ProjektMelody/status/1539756753147117568" +}, { + "tags": null, + "date": "2022-07-19T03:48:05.000Z", + "announceUrl": "https://twitter.com/ProjektMelody/status/1549239628418490368" +}, { + "tags": null, + "date": "2022-08-03T23:32:24.000Z", + "announceUrl": "https://twitter.com/ProjektMelody/status/1554973488871530501" +}, { + "tags": null, + "date": "2022-08-05T23:15:33.000Z", + "announceUrl": "https://twitter.com/ProjektMelody/status/1555694026376060966" +}, { + "tags": null, + "date": "2022-08-11T20:31:00.000Z", + "announceUrl": "https://twitter.com/ProjektMelody/status/1557827065101127680#m" +}, { + "tags": null, + "date": "2022-08-23T23:28:21.000Z", + "announceUrl": "https://twitter.com/ProjektMelody/status/1562220295683014657" +}, { + "tags": null, + "date": "2022-09-10T21:03:36.000Z", + "announceUrl": "https://twitter.com/ProjektMelody/status/1568706781806821377" +}, { + "tags": null, + "date": "2022-06-18T23:07:00.000Z", + "announceUrl": null +}, { + "tags": null, + "date": "2022-09-13T23:26:31.000Z", + "announceUrl": "https://twitter.com/ProjektMelody/status/1569829911057031170" +}, { + "tags": null, + "date": "2022-09-21T23:38:26.000Z", + "announceUrl": "https://twitter.com/ProjektMelody/status/1572732011529506817" +}, { + "tags": null, + "date": "2022-10-02T02:05:22.000Z", + "announceUrl": "https://twitter.com/ProjektMelody/status/1576392868201365504" +}, { + "tags": null, + "date": "2022-10-04T23:15:33.000Z", + "announceUrl": "http://twitter.com/ProjektMelody/status/1577437242716741632" +}, { + "tags": null, + "date": "2022-10-13T02:22:45.000Z", + "announceUrl": "https://twitter.com/ProjektMelody/status/1580383510908399616" +}, { + "tags": null, + "date": "2022-10-15T00:31:27.000Z", + "announceUrl": "https://twitter.com/ProjektMelody/status/1581080275546537984" +}, { + "tags": ["squirting", "toy", "lovense-lush", "fantasy-for-her-suction", "crave-vesper-necklace", "womanizer-duo", "twitching", "licking", "unboxing", "suction", "review", "orgasm", "tongue", "vibrator", "cum-eating", "pussy-milking", "torture", "rope", "restraint", "bondage", "chains", "dildo", "deep-breathing"], + "date": "2022-10-20T23:21:15.000Z", + "announceUrl": "https://twitter.com/ProjektMelody/status/1583236936445353985" +}, { + "tags": ["jumpsuit", "3d", "new-outfit", "pole-dancing", "lovense-lush", "lovense-hyfy", "blowjob", "bottomless", "ass", "dancing", "pool", "precum", "pussy"], + "date": "2022-11-04T20:29:53.000Z", + "announceUrl": "https://twitter.com/ProjektMelody/status/1588629627907473409" +}, { + "tags": ["video-game", "hentai", "eroge", "daraku-gear", "mobile-game", "buffering", "sponsored", "lovense-lush", "storytime", "hentai", "games", "gacha", "waifu", "womb-tattoo", "bondage", "mind-break", "squirting", "nipple-clamps", "handcuffs", "suction-cups", "prisoner", "slave", "big-brother", "master", "hitachi-magic-wand", "double-penetration", "confusion", "cock-block", "crying", "edging", "cum", "pasties", "robocock", "milking", "hose", "self-censorship", "threesome", "blowjob", "spanking", "cucking", "feet", "sex-training"], + "date": "2022-12-14T00:01:45.000Z", + "announceUrl": "https://twitter.com/ProjektMelody/status/1602816075304935425" +}, { + "tags": ["japan", "monokini", "outfit", "game-of-thrones", "gundam", "growling", "grinding", "flooring", "pool", "lovense-lush", "heavy-breathing", "moaning", "naked", "edging", "womb-tattoo", "pelvic-thrusting", "missionary", "fingering", "cum-drunk", "laughing", "c2c", "self-censorship", "sex-ed", "sex-stories", "glory-hole", "texting", "ass", "2-cooms", "orgasm", "selfie-cam", "non-euclidian", "silly-dancing"], + "date": "2022-12-16T00:30:34.000Z", + "announceUrl": "https://twitter.com/ProjektMelody/status/1603548101561696261" +}, { + "tags": ["silly-music", "guest-dj", "lovense-lush", "3d", "original-outfit", "step-brother", "buffering", "screen-recording", "coffee", "anime-discussion", "monday", "topless", "pasties", "just-chatting", "moaning", "countdown", "orgasm", "hands-free-cum", "yandere", "all-fours", "malfunctioning-hand", "bed", "high-heels", "boobs", "twerking", "factoid", "cowgirl", "unzip", "belly", "femdom", "gamer-chair", "selfie-camera", "pussy-licking", "pussy-closeup", "fingering", "aftershocks", "dakimakura-discussion", "2000s-music", "ghost-in-the-shell", "lgbtq", "spread-legs", "feet", "footjob", "tit-belt"], + "date": "2020-05-17T00:07:30.000Z", + "announceUrl": "https://twitter.com/ProjektMelody/status/1261810539442946049" +}, { + "tags": null, + "date": "2020-05-20T01:16:56.000Z", + "announceUrl": "https://twitter.com/ProjektMelody/status/1262915175037927425" +}, { + "tags": null, + "date": "2020-07-05T00:02:06.000Z", + "announceUrl": "https://twitter.com/ProjektMelody/status/1279566184690659330" +}, { + "tags": ["just-chatting", "chastity", "recovery", "live-2d", "fetish-research", "house-party", "video-game"], + "date": "2023-01-05T20:58:29.000Z", + "announceUrl": "https://twitter.com/ProjektMelody/status/1611104872484556805" +}, { + "tags": ["singing", "christmas", "karaoke", "just-chatting", "holiday", "lovense-lush", "tomboy", "live2d", "debut", "pegging", "asmr", "strapon-dildo", "erotic-roleplay", "edging"], + "date": "2023-01-13T18:21:13.000Z", + "announceUrl": "https://twitter.com/ProjektMelody/status/1613964398506147853" +}, { + "tags": ["just-chatting", "twintails", "g-string", "swimming-pool", "lovense-lush", "3d", "leap-motion", "orgasm-denial", "moaning", "bad-audio", "toilet", "bidet", "succubus-lingerie", "womb-tattoo", "dressup", "tv-discussion", "states-discussion", "naked", "experimental-lighting", "handjob", "asmr-discussion", "tease"], + "date": "2023-01-20T00:37:06.000Z", + "announceUrl": "https://twitter.com/ProjektMelody/status/1616233319439515648" +}, { + "tags": null, + "date": "2020-07-06T20:03:01.000Z", + "announceUrl": "https://twitter.com/ProjektMelody/status/1280230795085578247" +}, { + "tags": null, + "date": "2020-07-07T20:59:26.000Z", + "announceUrl": "https://twitter.com/ProjektMelody/status/1280607381605449729" +}, { + "tags": null, + "date": "2020-08-22T00:03:48.000Z", + "announceUrl": "https://twitter.com/ProjektMelody/status/1296961229475512323" +}, { + "tags": ["asmr", "3dio", "dominatrix", "submission", "breeding", "ai-dungeon", "tentacles", "anal", "fantasy-writing", "moaning", "cum-ban", "heavy-breathing", "orgasm", "denial", "cum-drunk"], + "date": "2023-01-21T20:36:06.000Z", + "announceUrl": "https://twitter.com/ProjektMelody/status/1616897448890273807" +}, { + "tags": null, + "date": "2020-09-05T23:08:12.000Z", + "announceUrl": "https://twitter.com/ProjektMelody/status/1302383058247614465" +}, { + "tags": null, + "date": "2021-07-04T18:50:39.000Z", + "announceUrl": "https://twitter.com/ProjektMelody/status/1411759377816690696" +}, { + "tags": ["bepis", "pasties", "recovery", "hentai-discussion", "topless", "boobs", "live2d", "handjob", "lovense-lush", "guilty-fap", "train-molestation", "sex-dungeon", "bdsm", "santa", "moaning", "mel-noises", "rickroll", "cucked", "cbat", "punishment2-cum", "orgasm", "milking-device", "cumdrunk", "panting", "heat", "feral", "deep-breathing", "monster-girl", "roleplay", "fucking", "gratitude", "snack", "meltys-quest", "eroge", "fat-bastard", "voiceover", "girl-on-girl", "thirsty", "slut", "good-audio", "love"], + "date": "2023-02-17T02:10:04.000Z", + "announceUrl": "https://twitter.com/ProjektMelody/status/1626403575642353665" +}, { + "tags": ["social-media", "aspirations", "first-time", "lovense-lush", "bad-audio", "ahegao", "3d", "lonely", "friends", "dab", "tag-discussion", "deep-breathing", "jerk-off-gesture", "gratitude", "cat-girls", "plexstorm", "hentai-game", "cute-pussy", "origin", "moaning", "twerking", "dancing", "shaking", "strip-tease", "anime-discussion", "video-game-discussion", "ass", "pasties", "high-heels", "harness", "thong", "leggings", "technical-difficulties", "panic-attack", "meditation", "just-chatting", "masturbation", "nipples"], + "date": "2020-02-07T23:21:48.000Z", + "announceUrl": "https://twitter.com/ProjektMelody/status/1225922638687752192" +}, { + "tags": null, + "date": "2020-10-16T23:32:50.000Z", + "announceUrl": "https://twitter.com/ProjektMelody/status/1317247159478136832" +}, { + "tags": ["bad-audio", "new-outfit", "anniversary", "bunny-outfit", "3d", "sexmachine", "raul", "recovery", "bunny-suit", "sit-on-face", "naked", "jacket", "mel-noises", "rickroll", "frickenator", "standing-cum", "legwarmers", "bunny-ears", "ass", "leg-shaking", "glitch", "doggy-style", "breeding", "dirty-talk", "cum-drunk", "trouble-walking", "slut", "food", "masturbation", "dick-sucking", "t1m", "lovense-lush", "pool", "flooring"], + "date": "2023-02-12T23:07:09.000Z", + "announceUrl": "https://twitter.com/ProjektMelody/status/1624907994671489026" +}, { + "tags": ["mel-noises", "crying", "good-audio", "live2d", "moaning", "dildo", "masturbation", "glass-dildo", "teaser", "sex-stories", "horny", "script-writing", "joi", "topless", "pasties", "naked", "asmr", "just-chatting", "self-care", "deep-breathing", "guided-meditation", "tantric-sex", "slut", "orgasm", "hentai-game", "caring"], + "date": "2023-02-09T00:25:47.000Z", + "announceUrl": "https://twitter.com/ProjektMelody/status/1623478232036122624" +}, { + "tags": ["just-chatting", "community", "anxiety", "dork", "live2d", "nut-between-worlds", "pro-social-behavior", "topless", "pasties", "harness", "boobs", "moaning", "blowjob"], + "date": "2023-02-13T03:07:00.000Z", + "announceUrl": "https://twitter.com/ProjektMelody/status/1624907994671489026" +}, { + "tags": null, + "date": "2020-03-01T01:14:02.000Z", + "announceUrl": "https://twitter.com/ProjektMelody/status/1233923415964340225" +}, { + "tags": null, + "date": "2020-03-28T01:42:21.000Z", + "announceUrl": "https://twitter.com/ProjektMelody/status/1243715015829585925" +}, { + "tags": null, + "date": "2020-04-01T00:13:26.000Z", + "announceUrl": "https://twitter.com/ProjektMelody/status/1245142190952796167" +}, { + "tags": null, + "date": "2020-05-02T22:01:33.000Z", + "announceUrl": "https://twitter.com/ProjektMelody/status/1256705414663725058" +}, { + "tags": null, + "date": "2020-06-10T18:58:26.000Z", + "announceUrl": "https://twitter.com/ProjektMelody/status/1270792457941368832" +}, { + "tags": null, + "date": "2020-06-28T00:10:07.000Z", + "announceUrl": "https://twitter.com/ProjektMelody/status/1277031489205678083" +}, { + "tags": null, + "date": "2020-02-25T21:31:41.000Z", + "announceUrl": "https://twitter.com/ProjektMelody/status/1232417908678168576" +}, { + "tags": null, + "date": "2020-03-10T22:00:51.000Z", + "announceUrl": "https://twitter.com/ProjektMelody/status/1237498680690855939" +}, { + "tags": null, + "date": "2020-03-20T15:41:36.000Z", + "announceUrl": "https://twitter.com/ProjektMelody/status/1241027117284044801" +}, { + "tags": null, + "date": "2020-08-28T23:03:16.000Z", + "announceUrl": "https://twitter.com/ProjektMelody/status/1299482712869306368" +}, { + "tags": null, + "date": "2020-09-24T23:25:58.000Z", + "announceUrl": "https://twitter.com/ProjektMelody/status/1309272896456527872" +}, { + "tags": null, + "date": "2020-10-13T23:03:14.000Z", + "announceUrl": "https://twitter.com/ProjektMelody/status/1316152545732157448" +}, { + "tags": null, + "date": "2020-10-23T18:55:31.000Z", + "announceUrl": "https://twitter.com/ProjektMelody/status/1319714083462107139" +}, { + "tags": ["just-chatting", "lovense-lush", "mel-noises", "pro-social-behavior", "topless", "g-string", "thong", "high-heels", "selfie-camera", "ass", "porn-discussion", "panties", "no-nut-november", "moaning", "feet", "feet-licking", "vtuber-discussion", "gamer-chair", "naked", "stretching", "flexibility", "orgasm", "masturbation"], + "date": "2020-11-09T00:55:59.000Z", + "announceUrl": "https://twitter.com/ProjektMelody/status/1325603004695842816" +}, { + "tags": null, + "date": "2020-12-14T21:46:27.000Z", + "announceUrl": "https://twitter.com/ProjektMelody/status/1338601272354758656" +}, { + "tags": null, + "date": "2020-12-24T23:02:13.000Z", + "announceUrl": "https://twitter.com/ProjektMelody/status/1342244216731275265" +}, { + "tags": null, + "date": "2020-08-11T23:01:22.000Z", + "announceUrl": "https://twitter.com/ProjektMelody/status/1293321639728492544" +}, { + "tags": null, + "date": "2020-10-11T22:05:30.000Z", + "announceUrl": "https://twitter.com/ProjektMelody/status/1315413239556190211" +}, { + "tags": null, + "date": "2021-03-03T23:03:48.000Z", + "announceUrl": "https://twitter.com/ProjektMelody/status/1367249376675041285" +}, { + "tags": null, + "date": "2021-04-18T00:30:03.000Z", + "announceUrl": "https://twitter.com/ProjektMelody/status/1383578535340634120" +}, { + "tags": null, + "date": "2021-04-23T23:01:52.000Z", + "announceUrl": "https://twitter.com/ProjektMelody/status/1385730672661303296" +}, { + "tags": null, + "date": "2021-06-06T20:55:39.000Z", + "announceUrl": "https://twitter.com/ProjektMelody/status/1401643974922838019" +}, { + "tags": null, + "date": "2021-06-15T22:57:44.000Z", + "announceUrl": "https://twitter.com/ProjektMelody/status/1404936189946236930" +}, { + "tags": null, + "date": "2021-07-27T23:04:15.000Z", + "announceUrl": "https://twitter.com/ProjektMelody/status/1420158120370872320" +}, { + "tags": null, + "date": "2021-08-30T23:08:30.000Z", + "announceUrl": "https://twitter.com/ProjektMelody/status/1432480377302552587" +}, { + "tags": null, + "date": "2021-09-03T21:59:09.000Z", + "announceUrl": "https://twitter.com/ProjektMelody/status/1433912474542264321" +}, { + "tags": null, + "date": "2021-02-05T22:57:21.000Z", + "announceUrl": "https://twitter.com/ProjektMelody/status/1357825669024120841" +}, { + "tags": null, + "date": "2021-10-04T22:20:50.000Z", + "announceUrl": "http://twitter.com/ProjektMelody/status/1445151953764458501" +}, { + "tags": null, + "date": "2021-11-16T23:07:06.000Z", + "announceUrl": "https://twitter.com/ProjektMelody/status/1460746277717782528" +}, { + "tags": null, + "date": "2021-12-22T23:58:43.000Z", + "announceUrl": "https://twitter.com/ProjektMelody/status/1473805228537438209" +}, { + "tags": null, + "date": "2022-01-15T20:53:35.000Z", + "announceUrl": "https://twitter.com/ProjektMelody/status/1482455948459450369" +}, { + "tags": null, + "date": "2022-01-28T22:13:21.000Z", + "announceUrl": "https://twitter.com/ProjektMelody/status/1487187063048921093" +}, { + "tags": null, + "date": "2022-02-13T21:17:23.000Z", + "announceUrl": "https://twitter.com/ProjektMelody/status/1492971187047374849" +}, { + "tags": null, + "date": "2022-04-13T20:10:50.000Z", + "announceUrl": "https://twitter.com/ProjektMelody/status/1514335322527649798" +}, { + "tags": null, + "date": "2022-05-14T23:02:18.000Z", + "announceUrl": "https://twitter.com/ProjektMelody/status/1525612497935507457" +}, { + "tags": null, + "date": "2022-05-26T18:31:28.000Z", + "announceUrl": "https://twitter.com/ProjektMelody/status/1529892992818876417" +}, { + "tags": null, + "date": "2022-08-01T19:28:31.000Z", + "announceUrl": "https://twitter.com/ProjektMelody/status/1554187338804338696" +}, { + "tags": null, + "date": "2022-09-02T20:06:16.000Z", + "announceUrl": "https://twitter.com/ProjektMelody/status/1565793017960828931" +}, { + "tags": null, + "date": "2022-09-23T23:38:18.000Z", + "announceUrl": "https://twitter.com/ProjektMelody/status/1573456755236954114" +}, { + "tags": ["memes", "anime", "bdsm", "orgasm", "moaning", "laughing", "cum-drunk", "lovense-lush"], + "date": "2022-10-27T23:20:05.000Z", + "announceUrl": "https://twitter.com/ProjektMelody/status/1585773359379677184" +}, { + "tags": ["lovense-hyphy", "lovense-lush", "whispering", "asmr", "sportscar", "pee", "sick", "coughing", "shaking", "cum", "orgasm", "brainfrog", "oral", "sucking", "sex-toy", "cum-drunk", "moaning", "twitching", "thrusting", "grinding", "objectification", "flooring", "keyboard-clicking", "mocap-failure", "muted", "charades", "posing", "riding", "dry-humping", "ass", "high-heels", "legs", "hip-sway", "plug-suit", "chest-harness", "naked", "womb-tattoo", "sexy-dance", "slav-squat", "tail", "pole-dance", "clipping", "licking", "glowing", "dab"], + "date": "2022-11-12T00:13:40.000Z", + "announceUrl": "https://twitter.com/ProjektMelody/status/1591222662487236609" +}, { + "tags": ["eroge", "video-game", "orc", "moaning", "cyber", "cum-drunk", "orgasm", "towel", "petting", "massage", "accupressure", "lingerie", "ass", "thong", "pasties", "adhesive-bandage", "monster-girls", "texting", "lovense-lush", "lovense-hyphy", "broken-toy", "tail", "live2d", "food-porn", "self-care", "aromatherapy", "monster-dick", "hot-sluts", "monster", "fantasy", "cock-sleeve", "feet", "footjob", "fingering", "elf", "cum-whore", "panties", "cum"], + "date": "2022-11-19T22:35:57.000Z", + "announceUrl": "https://twitter.com/ProjektMelody/status/1594097172689166337" +}, { + "tags": ["ass", "tail", "lovense-lush", "conversation", "grinding", "flooring", "going-away", "humping", "laughing", "eating", "harness", "boobs", "toes", "cum-drunk", "aftershocks", "dancing", "pole-dancing", "moaning", "feet", "stepping", "cock-abuse", "extreme-closeup", "butthole", "panties", "shaking", "pussy-licking", "singing", "hentai", "carnival", "fingering", "wedgie", "fetishwear", "watch-along", "pasties", "creampie", "rude-sex", "cumming", "g-string", "idol", "voyeurism", "condom", "gay", "spitting", "pervert", "edging", "mutual-masturbation", "sniffing"], + "date": "2022-11-22T23:04:43.000Z", + "announceUrl": "https://twitter.com/ProjektMelody/status/1595191577068044289" +}, { + "tags": ["hentai", "eroge", "dohna-dohna", "orgasm-denial", "chastity", "video-game", "live2d", "ovulation", "feet", "horny", "dream", "vampire", "just-chatting", "numi", "game-of-thrones", "recovery", "bad-audio", "yandere", "storytime", "spontaneous-song", "crushes"], + "date": "2023-01-01T22:03:49.000Z", + "announceUrl": "https://twitter.com/ProjektMelody/status/1609671764514164737" +}, { + "tags": null, + "date": "2021-09-07T22:01:24.000Z", + "announceUrl": "https://twitter.com/ProjektMelody/status/1435362590893527040" +}, { + "tags": null, + "date": "2021-09-16T20:00:39.000Z", + "announceUrl": "https://twitter.com/ProjektMelody/status/1438593697445302274" +}, { + "tags": null, + "date": "2022-02-07T23:27:14.000Z", + "announceUrl": "https://twitter.com/ProjektMelody/status/1490829536316985348" +}, { + "tags": ["lawnmower", "motorbunny", "bad-audio", "3d", "lovense-lush", "pussy-to-mouth", "screaming", "swimming-pool", "moaning", "deep-breathing", "cock-riding", "mel-noises", "mind-break", "technical-difficulties", "yelling", "echo", "reverse-cowgirl", "muffled-screams", "orgasm", "no-face-tracking", "swearing", "chaturbate-compliance", "spit", "messy", "cum-drinking", "clit-milking-device", "multiple-orgasms", "4-cum", "squirting", "loud-orgasm", "cum-chalice", "schlorp", "sksksksk"], + "date": "2023-01-25T00:19:39.000Z", + "announceUrl": "https://twitter.com/ProjektMelody/status/1618040869587947521" +}, { + "tags": ["lovense-lush", "lovense-hush", "tail", "butt-plug", "double-penetration", "moaning", "blushing", "manual-masturbation", "embarrasment", "orgasm", "just-chatting", "shorts", "stripping", "jiggle-physics", "3d", "boobs", "pasties", "dancing", "swearing", "vtuber-discussion", "t-pose", "ass", "anime-discussion", "selfie-camera", "edging", "jojo-posing", "anal-fingering", "fingering"], + "date": "2020-11-18T01:59:20.000Z", + "announceUrl": "https://twitter.com/ProjektMelody/status/1328880436551049217" +}, { + "tags": null, + "date": "2021-01-03T23:01:53.000Z", + "announceUrl": "https://twitter.com/ProjektMelody/status/1345868009483735042" +}, { + "tags": null, + "date": "2021-01-10T19:57:37.000Z", + "announceUrl": "https://twitter.com/ProjektMelody/status/1348358353676873729" +}, { + "tags": null, + "date": "2021-02-07T23:04:03.000Z", + "announceUrl": "https://twitter.com/ProjektMelody/status/1358552132295798787" +}, { + "tags": ["boobs", "porn-game", "video-game", "bondage", "mobile-game", "android", "moaning", "bikini", "blowjob", "doggy-style", "3d", "sponsored"], + "date": "2022-11-18T01:03:45.000Z", + "announceUrl": "https://twitter.com/ProjektMelody/status/1593409592477638656" +}, { + "tags": ["lovense-lush", "spanking", "ass", "stripping", "bottom-bitch", "permission", "cum-slut", "blowjob", "grinding", "yoga", "cyber", "kegel", "conversation", "bend-over", "squirming", "horny", "dildo-choking", "deep-throating", "finger-stimulation", "begging", "hummer", "orgasm", "cum-drunk", "laughing", "gratitude", "teasing", "crying", "bullying", "moaning", "feet-licking", "womb-tattoo", "harness", "boobs", "vagina", "drugs", "interpretive-dance", "sexy-dancing", "pole-dancing", "flooring", "jig", "silly-dancing", "tail"], + "date": "2022-11-22T01:15:55.000Z", + "announceUrl": "https://twitter.com/ProjektMelody/status/1594862203546501121" +}, { + "tags": ["love-drunk", "noises", "x-mas", "technical-difficulties", "horny", "chat-analytics", "chat-roast", "lovense-lush", "moaning", "self-deprecation-humor", "edging", "just-chatting", "orgasm", "2-cum", "cum-drunk", "multiple-orgasms", "hands-free-cum", "handcuffs", "butt-plug", "anal", "chastity-device", "bdsm", "ball-gag", "collar", "heavy-breathing", "big-o", "snacking", "fat-bastard", "airplane", "mile-high-club", "dirty-talk", "video-game", "malady", "hime-hajime", "big-bang-studios", "a-nut-between-worlds"], + "date": "2022-12-17T22:14:20.000Z", + "announceUrl": "https://twitter.com/ProjektMelody/status/1604238592389238784" +}, { + "tags": ["video-game", "recovery", "bad-audio", "technical-difficulties", "just-chatting", "purino-party", "zooted", "medication", null], + "date": "2023-01-05T02:07:18.000Z", + "announceUrl": "https://twitter.com/ProjektMelody/status/1610820355895037955" +}, { + "tags": ["cum-ban", "soaking", "semantics", "lovense-lush", "dildo", "pussy-noises", "relaxation", "meditation", "games", "meltys-quest", "wet", "asmr", "messy", "moaning", "horny", "blowjob", "doctor-defiance", "cum-brain", "mind-break", "giggles", "mel-noises", "hentai-game", "prank", "ear-rape", "live2d", "voice-acting", "goblin-sex", "drake__selfsuck"], + "date": "2023-01-09T23:07:18.000Z", + "announceUrl": "https://twitter.com/ProjektMelody/status/1612586844298018817" +}, { + "tags": ["bondage", "digital-art", "lovense-lush", "mel-noises", "moaning", "hucow", "pussy-milking", "browser-wars", "edging", "daddy-play", "orgasm", "feet", "live2d", "rapping", "singing", "vibrator", "good-audio", "vibrator-asmr", "spreader-bars", "precum", "puddle", "bdsm", "restraint", "slut", "cum-drunk", "loud-orgasm", "multiple-orgasms", "screaming", "begging", "cum-inside", "mind-break", "aftershocks", "labia-spreader"], + "date": "2023-01-29T22:06:21.000Z", + "announceUrl": "https://twitter.com/ProjektMelody/status/1619819262125944832" +}, { + "tags": ["pasties", "topless", "live2d", "lovense-lush", "lovense-osci", "orgasm", "cum-drunk", "mind-break", "moaning", "mel-noises", "multiple-orgasms", "hentai-watch-along", "dirty-talk", "blowjob", "horny", "tentacles", "double-penetration", "fantasy"], + "date": "2023-02-01T01:38:32.000Z", + "announceUrl": "https://twitter.com/ProjektMelody/status/1620597436988411907" +}, { + "tags": ["cooking", "onigiri", "seiso", "irl", "bad-audio", "rickroll", "dirty-slut", "crepe", "jokes", "just-chatting", "sex-toy-discussion", "booli", "femdom", "topless", "apron", "boobs", "nipples", "bacon", "innuendo", "dirty-talk", "parenting", "stories"], + "date": "2023-02-24T00:17:38.000Z", + "announceUrl": "https://twitter.com/ProjektMelody/status/1628911998787362817" +}, { + "tags": ["3d", "lovense-lush", "lovense-sex-machine", "pool", "dancing", "sway", "ass", "shorts", "leggings", "middrift", "mel-noises", "pig-latin", "moaning", "topless", "bra", "bottomless", "good-audio", "kneeling", "legs-spread", "t1m", "pussy", "grinding", "shaking", "missionary-style", "first-time", "lovense-hyphy", "cum", "orgasm", "multiple-orgasms", "begging", "prone-bone", "daddy", "dirty-talk", "shibari", "closeup", "pov", "6-cums"], + "date": "2023-03-04T02:28:14.000Z", + "announceUrl": "https://twitter.com/ProjektMelody/status/1631843966843863040" +}, { + "tags": ["anime-girl", "horny", "baka", "lovense-lush", "boobs", "harness", "pasties", "cum", "orgasm", "edging", "gunrun", "hormones", "subathon", "fantasy", "sake", "ntrpg", "game-night", "toilet", "ntr", "elderly", "fatherboard", "sneeze", "dream-daddy", "futa-fix-dick-dine-and-dash", "futanari", "asmr", "lovense-hush", "anal", "begging"], + "date": "2023-03-03T02:04:05.000Z", + "announceUrl": "https://twitter.com/ProjektMelody/status/1631475499753979908" +}, { + "tags": ["lovense-partnership", "big-bang-a-nut-between-worlds", "selfcest", "cuck", "video-game", "sponsored-stream", "finger-blasting", "blowjob", "handjob"], + "date": "2023-03-24T21:13:29.000Z", + "announceUrl": "https://twitter.com/ProjektMelody/status/1639374902246404102" +}, { + "tags": ["bikini", "womb-tattoo", "pool", "lovense-lush", "japan", "adhd", "edging", "permission", "cum-slut", "mel-noises", "moaning", "begging", "yelling", "mindbreak", "cum-drunk", "dirty-talk", "bbc", "dildo", "death", "lovense-sex-machine", "bakery", "orgasms", "multiple-orgasms", "ejaculate", "blowjob", "just-chatting", "choking", "joi", "slave", "master", "deepthroat", "sloppy", "3d", "goblin", "anal-breeding", "rapping", "dj", "dancing", "hime-hajime", "bad-audio", "voice-acting", "alto"], + "date": "2023-03-23T21:13:04.000Z", + "announceUrl": "https://twitter.com/ProjektMelody/status/1639012409175072769" +}] \ No newline at end of file diff --git a/packages/strapi-borked/favicon.png b/packages/strapi-borked/favicon.png new file mode 100644 index 0000000..df668a8 Binary files /dev/null and b/packages/strapi-borked/favicon.png differ diff --git a/packages/strapi/misc/2023-05-26-export-og-tags.js b/packages/strapi-borked/misc/2023-05-26-export-og-tags.js similarity index 100% rename from packages/strapi/misc/2023-05-26-export-og-tags.js rename to packages/strapi-borked/misc/2023-05-26-export-og-tags.js diff --git a/packages/strapi-borked/misc/generateCuid.js b/packages/strapi-borked/misc/generateCuid.js new file mode 100644 index 0000000..c049924 --- /dev/null +++ b/packages/strapi-borked/misc/generateCuid.js @@ -0,0 +1,7 @@ +const { init } = require('@paralleldrive/cuid2'); + +module.exports = function() { + const length = 10; + const genCuid = init({ length }); + return genCuid(); +} \ No newline at end of file diff --git a/packages/strapi-borked/package.json b/packages/strapi-borked/package.json new file mode 100644 index 0000000..2026b2e --- /dev/null +++ b/packages/strapi-borked/package.json @@ -0,0 +1,84 @@ +{ + "name": "@futureporn/strapi", + "private": true, + "version": "0.4.0", + "description": "Backend API for https://futureporn.net", + "scripts": { + "dev": "strapi develop", + "dev:c": "concurrently \"npm:tunnel\" \"npm:dev:strapi\"", + "tunnel": "ngrok start futureporn-strapi", + "chisel": "bash ./chisel.sh", + "db": "bash ./database/devDb.sh", + "start": "strapi start", + "build": "strapi build", + "strapi": "strapi" + }, + "dependencies": { + "@11ty/eleventy-fetch": "^4.0.1", + "@aws-sdk/client-s3": "^3.583.0", + "@esm2cjs/execa": "6.1.1-cjs.1", + "@mux/mux-node": "^7.3.5", + "@paralleldrive/cuid2": "^2.2.2", + "@radix-ui/react-use-callback-ref": "^1.0.1", + "@strapi/plugin-i18n": "4.25.0", + "@strapi/plugin-users-permissions": "4.25.0", + "@strapi/provider-email-sendgrid": "4.25.0", + "@strapi/provider-upload-cloudinary": "4.25.0", + "@strapi/strapi": "4.25.0", + "@strapi/utils": "4.25.0", + "@testing-library/dom": "8.19.0", + "@testing-library/react": "12.1.4", + "@testing-library/react-hooks": "8.0.1", + "@testing-library/user-event": "14.4.3", + "aws-sdk": "^2.1628.0", + "bcryptjs": "2.4.3", + "better-sqlite3": "8.0.1", + "canvas": "^2.11.2", + "codemirror": "^6.0.1", + "css-loader": "^6.11.0", + "date-fns": "^3.6.0", + "formik": "2.2.9", + "fuzzy-search": "^3.2.1", + "grant-koa": "5.4.8", + "history": "^4.10.1", + "immer": "9.0.19", + "jsonwebtoken": "9.0.0", + "jwk-to-pem": "2.0.5", + "koa": "^2.15.3", + "koa2-ratelimit": "^1.1.3", + "lodash": "4.17.21", + "match-sorter": "^4.2.1", + "msw": "1.0.1", + "node-abort-controller": "^3.1.1", + "object-assign": "^4.1.1", + "pg": "^8.11.5", + "prop-types": "^15.8.1", + "purest": "4.0.2", + "react": "^18.3.1", + "react-dom": "^18.0.0", + "react-intl": "6.3.2", + "react-query": "3.24.3", + "react-redux": "8.0.5", + "react-router-dom": "5.3.4", + "react-test-renderer": "^18.3.1", + "semver": "^7.6.2", + "sharp": "0.32.6", + "strapi-plugin-fuzzy-search": "^2.2.1", + "styled-components": "5.3.3", + "typescript": "^4.7", + "url-join": "4.0.1", + "yallist": "^4.0.0", + "yup": "^0.32.11" + }, + "devDependencies": { + "concurrently": "^8.2.2" + }, + "author": { + "name": "@CJ_Clippy" + }, + "packageManager": "pnpm@9.2.0", + "license": "MIT", + "strapi": { + "uuid": false + } +} diff --git a/packages/strapi-borked/pnpm-lock.yaml b/packages/strapi-borked/pnpm-lock.yaml new file mode 100644 index 0000000..f0acd75 --- /dev/null +++ b/packages/strapi-borked/pnpm-lock.yaml @@ -0,0 +1,14978 @@ +lockfileVersion: '9.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +importers: + + .: + dependencies: + '@11ty/eleventy-fetch': + specifier: ^4.0.1 + version: 4.0.1 + '@aws-sdk/client-s3': + specifier: ^3.583.0 + version: 3.600.0 + '@esm2cjs/execa': + specifier: 6.1.1-cjs.1 + version: 6.1.1-cjs.1 + '@mux/mux-node': + specifier: ^7.3.5 + version: 7.3.5 + '@paralleldrive/cuid2': + specifier: ^2.2.2 + version: 2.2.2 + '@radix-ui/react-use-callback-ref': + specifier: ^1.0.1 + version: 1.0.1(react@18.3.1) + '@strapi/plugin-i18n': + specifier: 4.25.0 + version: 4.25.0(@babel/runtime@7.24.7)(@codemirror/autocomplete@6.16.2(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.1)(@lezer/common@1.2.1))(@codemirror/language@6.10.2)(@codemirror/lint@6.8.0)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.28.1)(@strapi/strapi@4.25.0(@babel/runtime@7.24.7)(@codemirror/autocomplete@6.16.2(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.1)(@lezer/common@1.2.1))(@codemirror/language@6.10.2)(@codemirror/lint@6.8.0)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.28.1)(@swc/helpers@0.5.11)(@types/hoist-non-react-statics@3.3.5)(@types/node@20.14.5)(@types/react-dom@18.3.0)(better-sqlite3@8.0.1)(codemirror@6.0.1(@lezer/common@1.2.1))(pg@8.12.0)(react-dom@18.3.1(react@18.3.1))(react-router-dom@5.3.4(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1))(terser@5.31.1)(type-fest@2.19.0))(@types/react-dom@18.3.0)(codemirror@6.0.1(@lezer/common@1.2.1))(react-dom@18.3.1(react@18.3.1))(react-router-dom@5.3.4(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1))(typescript@4.9.5) + '@strapi/plugin-users-permissions': + specifier: 4.25.0 + version: 4.25.0(@babel/runtime@7.24.7)(@codemirror/autocomplete@6.16.2(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.1)(@lezer/common@1.2.1))(@codemirror/language@6.10.2)(@codemirror/lint@6.8.0)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.28.1)(@strapi/strapi@4.25.0(@babel/runtime@7.24.7)(@codemirror/autocomplete@6.16.2(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.1)(@lezer/common@1.2.1))(@codemirror/language@6.10.2)(@codemirror/lint@6.8.0)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.28.1)(@swc/helpers@0.5.11)(@types/hoist-non-react-statics@3.3.5)(@types/node@20.14.5)(@types/react-dom@18.3.0)(better-sqlite3@8.0.1)(codemirror@6.0.1(@lezer/common@1.2.1))(pg@8.12.0)(react-dom@18.3.1(react@18.3.1))(react-router-dom@5.3.4(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1))(terser@5.31.1)(type-fest@2.19.0))(@types/react-dom@18.3.0)(codemirror@6.0.1(@lezer/common@1.2.1))(react-dom@18.3.1(react@18.3.1))(react-router-dom@5.3.4(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1))(typescript@4.9.5) + '@strapi/provider-email-sendgrid': + specifier: 4.25.0 + version: 4.25.0 + '@strapi/provider-upload-cloudinary': + specifier: 4.25.0 + version: 4.25.0 + '@strapi/strapi': + specifier: 4.25.0 + version: 4.25.0(@babel/runtime@7.24.7)(@codemirror/autocomplete@6.16.2(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.1)(@lezer/common@1.2.1))(@codemirror/language@6.10.2)(@codemirror/lint@6.8.0)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.28.1)(@swc/helpers@0.5.11)(@types/hoist-non-react-statics@3.3.5)(@types/node@20.14.5)(@types/react-dom@18.3.0)(better-sqlite3@8.0.1)(codemirror@6.0.1(@lezer/common@1.2.1))(pg@8.12.0)(react-dom@18.3.1(react@18.3.1))(react-router-dom@5.3.4(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1))(terser@5.31.1)(type-fest@2.19.0) + '@strapi/utils': + specifier: 4.25.0 + version: 4.25.0 + '@testing-library/dom': + specifier: 8.19.0 + version: 8.19.0 + '@testing-library/react': + specifier: 12.1.4 + version: 12.1.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@testing-library/react-hooks': + specifier: 8.0.1 + version: 8.0.1(react-dom@18.3.1(react@18.3.1))(react-test-renderer@18.3.1(react@18.3.1))(react@18.3.1) + '@testing-library/user-event': + specifier: 14.4.3 + version: 14.4.3(@testing-library/dom@8.19.0) + aws-sdk: + specifier: ^2.1628.0 + version: 2.1644.0 + bcryptjs: + specifier: 2.4.3 + version: 2.4.3 + better-sqlite3: + specifier: 8.0.1 + version: 8.0.1 + canvas: + specifier: ^2.11.2 + version: 2.11.2 + codemirror: + specifier: ^6.0.1 + version: 6.0.1(@lezer/common@1.2.1) + css-loader: + specifier: ^6.11.0 + version: 6.11.0(webpack@5.92.0(esbuild@0.19.11)) + date-fns: + specifier: ^3.6.0 + version: 3.6.0 + formik: + specifier: 2.2.9 + version: 2.2.9(react@18.3.1) + fuzzy-search: + specifier: ^3.2.1 + version: 3.2.1 + grant-koa: + specifier: 5.4.8 + version: 5.4.8(koa@2.15.3) + history: + specifier: ^4.10.1 + version: 4.10.1 + immer: + specifier: 9.0.19 + version: 9.0.19 + jsonwebtoken: + specifier: 9.0.0 + version: 9.0.0 + jwk-to-pem: + specifier: 2.0.5 + version: 2.0.5 + koa: + specifier: ^2.15.3 + version: 2.15.3 + koa2-ratelimit: + specifier: ^1.1.3 + version: 1.1.3 + lodash: + specifier: 4.17.21 + version: 4.17.21 + match-sorter: + specifier: ^4.2.1 + version: 4.2.1 + msw: + specifier: 1.0.1 + version: 1.0.1(typescript@4.9.5) + node-abort-controller: + specifier: ^3.1.1 + version: 3.1.1 + object-assign: + specifier: ^4.1.1 + version: 4.1.1 + pg: + specifier: ^8.11.5 + version: 8.12.0 + prop-types: + specifier: ^15.8.1 + version: 15.8.1 + purest: + specifier: 4.0.2 + version: 4.0.2 + react: + specifier: ^18.3.1 + version: 18.3.1 + react-dom: + specifier: ^18.0.0 + version: 18.3.1(react@18.3.1) + react-intl: + specifier: 6.3.2 + version: 6.3.2(react@18.3.1)(typescript@4.9.5) + react-query: + specifier: 3.24.3 + version: 3.24.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react-redux: + specifier: 8.0.5 + version: 8.0.5(@types/react-dom@18.3.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(redux@4.2.1) + react-router-dom: + specifier: 5.3.4 + version: 5.3.4(react@18.3.1) + react-test-renderer: + specifier: ^18.3.1 + version: 18.3.1(react@18.3.1) + semver: + specifier: ^7.6.2 + version: 7.6.2 + sharp: + specifier: 0.32.6 + version: 0.32.6 + strapi-plugin-fuzzy-search: + specifier: ^2.2.1 + version: 2.2.1(@strapi/strapi@4.25.0(@babel/runtime@7.24.7)(@codemirror/autocomplete@6.16.2(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.1)(@lezer/common@1.2.1))(@codemirror/language@6.10.2)(@codemirror/lint@6.8.0)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.28.1)(@swc/helpers@0.5.11)(@types/hoist-non-react-statics@3.3.5)(@types/node@20.14.5)(@types/react-dom@18.3.0)(better-sqlite3@8.0.1)(codemirror@6.0.1(@lezer/common@1.2.1))(pg@8.12.0)(react-dom@18.3.1(react@18.3.1))(react-router-dom@5.3.4(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1))(terser@5.31.1)(type-fest@2.19.0))(@strapi/utils@4.25.0)(yup@0.32.11) + styled-components: + specifier: 5.3.3 + version: 5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1) + typescript: + specifier: ^4.7 + version: 4.9.5 + url-join: + specifier: 4.0.1 + version: 4.0.1 + yallist: + specifier: ^4.0.0 + version: 4.0.0 + yup: + specifier: ^0.32.11 + version: 0.32.11 + devDependencies: + concurrently: + specifier: ^8.2.2 + version: 8.2.2 + +packages: + + '@11ty/eleventy-fetch@4.0.1': + resolution: {integrity: sha512-yIiLM5ziBmg86i4TlXpBdcIygJHvh/GgPJyAiFOckO9H4y9cQDM8eIcJCUQ4Mum0NEVui/OjhEut2R08xw0vlQ==} + engines: {node: '>=14'} + + '@ampproject/remapping@2.3.0': + resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} + engines: {node: '>=6.0.0'} + + '@aws-crypto/crc32@5.2.0': + resolution: {integrity: sha512-nLbCWqQNgUiwwtFsen1AdzAtvuLRsQS8rYgMuxCrdKf9kOssamGLuPwyTY9wyYblNr9+1XM8v6zoDTPPSIeANg==} + engines: {node: '>=16.0.0'} + + '@aws-crypto/crc32c@5.2.0': + resolution: {integrity: sha512-+iWb8qaHLYKrNvGRbiYRHSdKRWhto5XlZUEBwDjYNf+ly5SVYG6zEoYIdxvf5R3zyeP16w4PLBn3rH1xc74Rag==} + + '@aws-crypto/sha1-browser@5.2.0': + resolution: {integrity: sha512-OH6lveCFfcDjX4dbAvCFSYUjJZjDr/3XJ3xHtjn3Oj5b9RjojQo8npoLeA/bNwkOkrSQ0wgrHzXk4tDRxGKJeg==} + + '@aws-crypto/sha256-browser@5.2.0': + resolution: {integrity: sha512-AXfN/lGotSQwu6HNcEsIASo7kWXZ5HYWvfOmSNKDsEqC4OashTp8alTmaz+F7TC2L083SFv5RdB+qU3Vs1kZqw==} + + '@aws-crypto/sha256-js@5.2.0': + resolution: {integrity: sha512-FFQQyu7edu4ufvIZ+OadFpHHOt+eSTBaYaki44c+akjg7qZg9oOQeLlk77F6tSYqjDAFClrHJk9tMf0HdVyOvA==} + engines: {node: '>=16.0.0'} + + '@aws-crypto/supports-web-crypto@5.2.0': + resolution: {integrity: sha512-iAvUotm021kM33eCdNfwIN//F77/IADDSs58i+MDaOqFrVjZo9bAal0NK7HurRuWLLpF1iLX7gbWrjHjeo+YFg==} + + '@aws-crypto/util@5.2.0': + resolution: {integrity: sha512-4RkU9EsI6ZpBve5fseQlGNUWKMa1RLPQ1dnjnQoe07ldfIzcsGb5hC5W0Dm7u423KWzawlrpbjXBrXCEv9zazQ==} + + '@aws-sdk/client-s3@3.600.0': + resolution: {integrity: sha512-iYoKbJTputbf+ubkX6gSK/y/4uJEBRaXZ18jykLdBQ8UJuGrk2gqvV8h7OlGAhToCeysmmMqM0vDWyLt6lP8nw==} + engines: {node: '>=16.0.0'} + + '@aws-sdk/client-sso-oidc@3.600.0': + resolution: {integrity: sha512-7+I8RWURGfzvChyNQSyj5/tKrqRbzRl7H+BnTOf/4Vsw1nFOi5ROhlhD4X/Y0QCTacxnaoNcIrqnY7uGGvVRzw==} + engines: {node: '>=16.0.0'} + + '@aws-sdk/client-sso@3.598.0': + resolution: {integrity: sha512-nOI5lqPYa+YZlrrzwAJywJSw3MKVjvu6Ge2fCqQUNYMfxFB0NAaDFnl0EPjXi+sEbtCuz/uWE77poHbqiZ+7Iw==} + engines: {node: '>=16.0.0'} + + '@aws-sdk/client-sts@3.600.0': + resolution: {integrity: sha512-KQG97B7LvTtTiGmjlrG1LRAY8wUvCQzrmZVV5bjrJ/1oXAU7DITYwVbSJeX9NWg6hDuSk0VE3MFwIXS2SvfLIA==} + engines: {node: '>=16.0.0'} + + '@aws-sdk/core@3.598.0': + resolution: {integrity: sha512-HaSjt7puO5Cc7cOlrXFCW0rtA0BM9lvzjl56x0A20Pt+0wxXGeTOZZOkXQIepbrFkV2e/HYukuT9e99vXDm59g==} + engines: {node: '>=16.0.0'} + + '@aws-sdk/credential-provider-env@3.598.0': + resolution: {integrity: sha512-vi1khgn7yXzLCcgSIzQrrtd2ilUM0dWodxj3PQ6BLfP0O+q1imO3hG1nq7DVyJtq7rFHs6+9N8G4mYvTkxby2w==} + engines: {node: '>=16.0.0'} + + '@aws-sdk/credential-provider-http@3.598.0': + resolution: {integrity: sha512-N7cIafi4HVlQvEgvZSo1G4T9qb/JMLGMdBsDCT5XkeJrF0aptQWzTFH0jIdZcLrMYvzPcuEyO3yCBe6cy/ba0g==} + engines: {node: '>=16.0.0'} + + '@aws-sdk/credential-provider-ini@3.598.0': + resolution: {integrity: sha512-/ppcIVUbRwDIwJDoYfp90X3+AuJo2mvE52Y1t2VSrvUovYn6N4v95/vXj6LS8CNDhz2jvEJYmu+0cTMHdhI6eA==} + engines: {node: '>=16.0.0'} + peerDependencies: + '@aws-sdk/client-sts': ^3.598.0 + + '@aws-sdk/credential-provider-node@3.600.0': + resolution: {integrity: sha512-1pC7MPMYD45J7yFjA90SxpR0yaSvy+yZiq23aXhAPZLYgJBAxHLu0s0mDCk/piWGPh8+UGur5K0bVdx4B1D5hw==} + engines: {node: '>=16.0.0'} + + '@aws-sdk/credential-provider-process@3.598.0': + resolution: {integrity: sha512-rM707XbLW8huMk722AgjVyxu2tMZee++fNA8TJVNgs1Ma02Wx6bBrfIvlyK0rCcIRb0WdQYP6fe3Xhiu4e8IBA==} + engines: {node: '>=16.0.0'} + + '@aws-sdk/credential-provider-sso@3.598.0': + resolution: {integrity: sha512-5InwUmrAuqQdOOgxTccRayMMkSmekdLk6s+az9tmikq0QFAHUCtofI+/fllMXSR9iL6JbGYi1940+EUmS4pHJA==} + engines: {node: '>=16.0.0'} + + '@aws-sdk/credential-provider-web-identity@3.598.0': + resolution: {integrity: sha512-GV5GdiMbz5Tz9JO4NJtRoFXjW0GPEujA0j+5J/B723rTN+REHthJu48HdBKouHGhdzkDWkkh1bu52V02Wprw8w==} + engines: {node: '>=16.0.0'} + peerDependencies: + '@aws-sdk/client-sts': ^3.598.0 + + '@aws-sdk/middleware-bucket-endpoint@3.598.0': + resolution: {integrity: sha512-PM7BcFfGUSkmkT6+LU9TyJiB4S8yI7dfuKQDwK5ZR3P7MKaK4Uj4yyDiv0oe5xvkF6+O2+rShj+eh8YuWkOZ/Q==} + engines: {node: '>=16.0.0'} + + '@aws-sdk/middleware-expect-continue@3.598.0': + resolution: {integrity: sha512-ZuHW18kaeHR8TQyhEOYMr8VwiIh0bMvF7J1OTqXHxDteQIavJWA3CbfZ9sgS4XGtrBZDyHJhjZKeCfLhN2rq3w==} + engines: {node: '>=16.0.0'} + + '@aws-sdk/middleware-flexible-checksums@3.598.0': + resolution: {integrity: sha512-xukAzds0GQXvMEY9G6qt+CzwVzTx8NyKKh04O2Q+nOch6QQ8Rs+2kTRy3Z4wQmXq2pK9hlOWb5nXA7HWpmz6Ng==} + engines: {node: '>=16.0.0'} + + '@aws-sdk/middleware-host-header@3.598.0': + resolution: {integrity: sha512-WiaG059YBQwQraNejLIi0gMNkX7dfPZ8hDIhvMr5aVPRbaHH8AYF3iNSsXYCHvA2Cfa1O9haYXsuMF9flXnCmA==} + engines: {node: '>=16.0.0'} + + '@aws-sdk/middleware-location-constraint@3.598.0': + resolution: {integrity: sha512-8oybQxN3F1ISOMULk7JKJz5DuAm5hCUcxMW9noWShbxTJuStNvuHf/WLUzXrf8oSITyYzIHPtf8VPlKR7I3orQ==} + engines: {node: '>=16.0.0'} + + '@aws-sdk/middleware-logger@3.598.0': + resolution: {integrity: sha512-bxBjf/VYiu3zfu8SYM2S9dQQc3tz5uBAOcPz/Bt8DyyK3GgOpjhschH/2XuUErsoUO1gDJqZSdGOmuHGZQn00Q==} + engines: {node: '>=16.0.0'} + + '@aws-sdk/middleware-recursion-detection@3.598.0': + resolution: {integrity: sha512-vjT9BeFY9FeN0f8hm2l6F53tI0N5bUq6RcDkQXKNabXBnQxKptJRad6oP2X5y3FoVfBLOuDkQgiC2940GIPxtQ==} + engines: {node: '>=16.0.0'} + + '@aws-sdk/middleware-sdk-s3@3.598.0': + resolution: {integrity: sha512-5AGtLAh9wyK6ANPYfaKTqJY1IFJyePIxsEbxa7zS6REheAqyVmgJFaGu3oQ5XlxfGr5Uq59tFTRkyx26G1HkHA==} + engines: {node: '>=16.0.0'} + + '@aws-sdk/middleware-signing@3.598.0': + resolution: {integrity: sha512-XKb05DYx/aBPqz6iCapsCbIl8aD8EihTuPCs51p75QsVfbQoVr4TlFfIl5AooMSITzojdAQqxt021YtvxjtxIQ==} + engines: {node: '>=16.0.0'} + + '@aws-sdk/middleware-ssec@3.598.0': + resolution: {integrity: sha512-f0p2xP8IC1uJ5e/tND1l81QxRtRFywEdnbtKCE0H6RSn4UIt2W3Dohe1qQDbnh27okF0PkNW6BJGdSAz3p7qbA==} + engines: {node: '>=16.0.0'} + + '@aws-sdk/middleware-user-agent@3.598.0': + resolution: {integrity: sha512-4tjESlHG5B5MdjUaLK7tQs/miUtHbb6deauQx8ryqSBYOhfHVgb1ZnzvQR0bTrhpqUg0WlybSkDaZAICf9xctg==} + engines: {node: '>=16.0.0'} + + '@aws-sdk/region-config-resolver@3.598.0': + resolution: {integrity: sha512-oYXhmTokSav4ytmWleCr3rs/1nyvZW/S0tdi6X7u+dLNL5Jee+uMxWGzgOrWK6wrQOzucLVjS4E/wA11Kv2GTw==} + engines: {node: '>=16.0.0'} + + '@aws-sdk/signature-v4-multi-region@3.598.0': + resolution: {integrity: sha512-1r/EyTrO1gSa1FirnR8V7mabr7gk+l+HkyTI0fcTSr8ucB7gmYyW6WjkY8JCz13VYHFK62usCEDS7yoJoJOzTA==} + engines: {node: '>=16.0.0'} + + '@aws-sdk/token-providers@3.598.0': + resolution: {integrity: sha512-TKY1EVdHVBnZqpyxyTHdpZpa1tUpb6nxVeRNn1zWG8QB5MvH4ALLd/jR+gtmWDNQbIG4cVuBOZFVL8hIYicKTA==} + engines: {node: '>=16.0.0'} + peerDependencies: + '@aws-sdk/client-sso-oidc': ^3.598.0 + + '@aws-sdk/types@3.598.0': + resolution: {integrity: sha512-742uRl6z7u0LFmZwDrFP6r1wlZcgVPw+/TilluDJmCAR8BgRw3IR+743kUXKBGd8QZDRW2n6v/PYsi/AWCDDMQ==} + engines: {node: '>=16.0.0'} + + '@aws-sdk/util-arn-parser@3.568.0': + resolution: {integrity: sha512-XUKJWWo+KOB7fbnPP0+g/o5Ulku/X53t7i/h+sPHr5xxYTJJ9CYnbToo95mzxe7xWvkLrsNtJ8L+MnNn9INs2w==} + engines: {node: '>=16.0.0'} + + '@aws-sdk/util-endpoints@3.598.0': + resolution: {integrity: sha512-Qo9UoiVVZxcOEdiOMZg3xb1mzkTxrhd4qSlg5QQrfWPJVx/QOg+Iy0NtGxPtHtVZNHZxohYwDwV/tfsnDSE2gQ==} + engines: {node: '>=16.0.0'} + + '@aws-sdk/util-locate-window@3.568.0': + resolution: {integrity: sha512-3nh4TINkXYr+H41QaPelCceEB2FXP3fxp93YZXB/kqJvX0U9j0N0Uk45gvsjmEPzG8XxkPEeLIfT2I1M7A6Lig==} + engines: {node: '>=16.0.0'} + + '@aws-sdk/util-user-agent-browser@3.598.0': + resolution: {integrity: sha512-36Sxo6F+ykElaL1mWzWjlg+1epMpSe8obwhCN1yGE7Js9ywy5U6k6l+A3q3YM9YRbm740sNxncbwLklMvuhTKw==} + + '@aws-sdk/util-user-agent-node@3.598.0': + resolution: {integrity: sha512-oyWGcOlfTdzkC6SVplyr0AGh54IMrDxbhg5RxJ5P+V4BKfcDoDcZV9xenUk9NsOi9MuUjxMumb9UJGkDhM1m0A==} + engines: {node: '>=16.0.0'} + peerDependencies: + aws-crt: '>=1.0.0' + peerDependenciesMeta: + aws-crt: + optional: true + + '@aws-sdk/xml-builder@3.598.0': + resolution: {integrity: sha512-ZIa2RK7CHFTZ4gwK77WRtsZ6vF7xwRXxJ8KQIxK2duhoTVcn0xYxpFLdW9WZZZvdP9GIF3Loqvf8DRdeU5Jc7Q==} + engines: {node: '>=16.0.0'} + + '@babel/code-frame@7.24.7': + resolution: {integrity: sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==} + engines: {node: '>=6.9.0'} + + '@babel/compat-data@7.24.7': + resolution: {integrity: sha512-qJzAIcv03PyaWqxRgO4mSU3lihncDT296vnyuE2O8uA4w3UHWI4S3hgeZd1L8W1Bft40w9JxJ2b412iDUFFRhw==} + engines: {node: '>=6.9.0'} + + '@babel/core@7.24.7': + resolution: {integrity: sha512-nykK+LEK86ahTkX/3TgauT0ikKoNCfKHEaZYTUVupJdTLzGNvrblu4u6fa7DhZONAltdf8e662t/abY8idrd/g==} + engines: {node: '>=6.9.0'} + + '@babel/generator@7.24.7': + resolution: {integrity: sha512-oipXieGC3i45Y1A41t4tAqpnEZWgB/lC6Ehh6+rOviR5XWpTtMmLN+fGjz9vOiNRt0p6RtO6DtD0pdU3vpqdSA==} + engines: {node: '>=6.9.0'} + + '@babel/helper-annotate-as-pure@7.24.7': + resolution: {integrity: sha512-BaDeOonYvhdKw+JoMVkAixAAJzG2jVPIwWoKBPdYuY9b452e2rPuI9QPYh3KpofZ3pW2akOmwZLOiOsHMiqRAg==} + engines: {node: '>=6.9.0'} + + '@babel/helper-compilation-targets@7.24.7': + resolution: {integrity: sha512-ctSdRHBi20qWOfy27RUb4Fhp07KSJ3sXcuSvTrXrc4aG8NSYDo1ici3Vhg9bg69y5bj0Mr1lh0aeEgTvc12rMg==} + engines: {node: '>=6.9.0'} + + '@babel/helper-environment-visitor@7.24.7': + resolution: {integrity: sha512-DoiN84+4Gnd0ncbBOM9AZENV4a5ZiL39HYMyZJGZ/AZEykHYdJw0wW3kdcsh9/Kn+BRXHLkkklZ51ecPKmI1CQ==} + engines: {node: '>=6.9.0'} + + '@babel/helper-function-name@7.24.7': + resolution: {integrity: sha512-FyoJTsj/PEUWu1/TYRiXTIHc8lbw+TDYkZuoE43opPS5TrI7MyONBE1oNvfguEXAD9yhQRrVBnXdXzSLQl9XnA==} + engines: {node: '>=6.9.0'} + + '@babel/helper-hoist-variables@7.24.7': + resolution: {integrity: sha512-MJJwhkoGy5c4ehfoRyrJ/owKeMl19U54h27YYftT0o2teQ3FJ3nQUf/I3LlJsX4l3qlw7WRXUmiyajvHXoTubQ==} + engines: {node: '>=6.9.0'} + + '@babel/helper-module-imports@7.24.7': + resolution: {integrity: sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA==} + engines: {node: '>=6.9.0'} + + '@babel/helper-module-transforms@7.24.7': + resolution: {integrity: sha512-1fuJEwIrp+97rM4RWdO+qrRsZlAeL1lQJoPqtCYWv0NL115XM93hIH4CSRln2w52SqvmY5hqdtauB6QFCDiZNQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-plugin-utils@7.24.7': + resolution: {integrity: sha512-Rq76wjt7yz9AAc1KnlRKNAi/dMSVWgDRx43FHoJEbcYU6xOWaE2dVPwcdTukJrjxS65GITyfbvEYHvkirZ6uEg==} + engines: {node: '>=6.9.0'} + + '@babel/helper-simple-access@7.24.7': + resolution: {integrity: sha512-zBAIvbCMh5Ts+b86r/CjU+4XGYIs+R1j951gxI3KmmxBMhCg4oQMsv6ZXQ64XOm/cvzfU1FmoCyt6+owc5QMYg==} + engines: {node: '>=6.9.0'} + + '@babel/helper-split-export-declaration@7.24.7': + resolution: {integrity: sha512-oy5V7pD+UvfkEATUKvIjvIAH/xCzfsFVw7ygW2SI6NClZzquT+mwdTfgfdbUiceh6iQO0CHtCPsyze/MZ2YbAA==} + engines: {node: '>=6.9.0'} + + '@babel/helper-string-parser@7.24.7': + resolution: {integrity: sha512-7MbVt6xrwFQbunH2DNQsAP5sTGxfqQtErvBIvIMi6EQnbgUOuVYanvREcmFrOPhoXBrTtjhhP+lW+o5UfK+tDg==} + engines: {node: '>=6.9.0'} + + '@babel/helper-validator-identifier@7.24.7': + resolution: {integrity: sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==} + engines: {node: '>=6.9.0'} + + '@babel/helper-validator-option@7.24.7': + resolution: {integrity: sha512-yy1/KvjhV/ZCL+SM7hBrvnZJ3ZuT9OuZgIJAGpPEToANvc3iM6iDvBnRjtElWibHU6n8/LPR/EjX9EtIEYO3pw==} + engines: {node: '>=6.9.0'} + + '@babel/helpers@7.24.7': + resolution: {integrity: sha512-NlmJJtvcw72yRJRcnCmGvSi+3jDEg8qFu3z0AFoymmzLx5ERVWyzd9kVXr7Th9/8yIJi2Zc6av4Tqz3wFs8QWg==} + engines: {node: '>=6.9.0'} + + '@babel/highlight@7.24.7': + resolution: {integrity: sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==} + engines: {node: '>=6.9.0'} + + '@babel/parser@7.24.7': + resolution: {integrity: sha512-9uUYRm6OqQrCqQdG1iCBwBPZgN8ciDBro2nIOFaiRz1/BCxaI7CNvQbDHvsArAC7Tw9Hda/B3U+6ui9u4HWXPw==} + engines: {node: '>=6.0.0'} + hasBin: true + + '@babel/plugin-syntax-jsx@7.24.7': + resolution: {integrity: sha512-6ddciUPe/mpMnOKv/U+RSd2vvVy+Yw/JfBB0ZHYjEZt9NLHmCUylNYlsbqCCS1Bffjlb0fCwC9Vqz+sBz6PsiQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/runtime-corejs3@7.24.7': + resolution: {integrity: sha512-eytSX6JLBY6PVAeQa2bFlDx/7Mmln/gaEpsit5a3WEvjGfiIytEsgAwuIXCPM0xvw0v0cJn3ilq0/TvXrW0kgA==} + engines: {node: '>=6.9.0'} + + '@babel/runtime@7.24.7': + resolution: {integrity: sha512-UwgBRMjJP+xv857DCngvqXI3Iq6J4v0wXmwc6sapg+zyhbwmQX67LUEFrkK5tbyJ30jGuG3ZvWpBiB9LCy1kWw==} + engines: {node: '>=6.9.0'} + + '@babel/template@7.24.7': + resolution: {integrity: sha512-jYqfPrU9JTF0PmPy1tLYHW4Mp4KlgxJD9l2nP9fD6yT/ICi554DmrWBAEYpIelzjHf1msDP3PxJIRt/nFNfBig==} + engines: {node: '>=6.9.0'} + + '@babel/traverse@7.24.7': + resolution: {integrity: sha512-yb65Ed5S/QAcewNPh0nZczy9JdYXkkAbIsEo+P7BE7yO3txAY30Y/oPa3QkQ5It3xVG2kpKMg9MsdxZaO31uKA==} + engines: {node: '>=6.9.0'} + + '@babel/types@7.24.7': + resolution: {integrity: sha512-XEFXSlxiG5td2EJRe8vOmRbaXVgfcBlszKujvVmWIK/UpywWljQCfzAv3RQCGujWQ1RD4YYWEAqDXfuJiy8f5Q==} + engines: {node: '>=6.9.0'} + + '@casl/ability@6.5.0': + resolution: {integrity: sha512-3guc94ugr5ylZQIpJTLz0CDfwNi0mxKVECj1vJUPAvs+Lwunh/dcuUjwzc4MHM9D8JOYX0XUZMEPedpB3vIbOw==} + + '@codemirror/autocomplete@6.16.2': + resolution: {integrity: sha512-MjfDrHy0gHKlPWsvSsikhO1+BOh+eBHNgfH1OXs1+DAf30IonQldgMM3kxLDTG9ktE7kDLaA1j/l7KMPA4KNfw==} + peerDependencies: + '@codemirror/language': ^6.0.0 + '@codemirror/state': ^6.0.0 + '@codemirror/view': ^6.0.0 + '@lezer/common': ^1.0.0 + + '@codemirror/commands@6.6.0': + resolution: {integrity: sha512-qnY+b7j1UNcTS31Eenuc/5YJB6gQOzkUoNmJQc0rznwqSRpeaWWpjkWy2C/MPTcePpsKJEM26hXrOXl1+nceXg==} + + '@codemirror/lang-json@6.0.1': + resolution: {integrity: sha512-+T1flHdgpqDDlJZ2Lkil/rLiRy684WMLc74xUnjJH48GQdfJo/pudlTRreZmKwzP8/tGdKf83wlbAdOCzlJOGQ==} + + '@codemirror/language@6.10.2': + resolution: {integrity: sha512-kgbTYTo0Au6dCSc/TFy7fK3fpJmgHDv1sG1KNQKJXVi+xBTEeBPY/M30YXiU6mMXeH+YIDLsbrT4ZwNRdtF+SA==} + + '@codemirror/lint@6.8.0': + resolution: {integrity: sha512-lsFofvaw0lnPRJlQylNsC4IRt/1lI4OD/yYslrSGVndOJfStc58v+8p9dgGiD90ktOfL7OhBWns1ZETYgz0EJA==} + + '@codemirror/search@6.5.6': + resolution: {integrity: sha512-rpMgcsh7o0GuCDUXKPvww+muLA1pDJaFrpq/CCHtpQJYz8xopu4D1hPcKRoDD0YlF8gZaqTNIRa4VRBWyhyy7Q==} + + '@codemirror/state@6.4.1': + resolution: {integrity: sha512-QkEyUiLhsJoZkbumGZlswmAhA7CBU02Wrz7zvH4SrcifbsqwlXShVXg65f3v/ts57W3dqyamEriMhij1Z3Zz4A==} + + '@codemirror/theme-one-dark@6.1.2': + resolution: {integrity: sha512-F+sH0X16j/qFLMAfbciKTxVOwkdAS336b7AXTKOZhy8BR3eH/RelsnLgLFINrpST63mmN2OuwUt0W2ndUgYwUA==} + + '@codemirror/view@6.28.1': + resolution: {integrity: sha512-BUWr+zCJpMkA/u69HlJmR+YkV4yPpM81HeMkOMZuwFa8iM5uJdEPKAs1icIRZKkKmy0Ub1x9/G3PQLTXdpBxrQ==} + + '@colors/colors@1.5.0': + resolution: {integrity: sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==} + engines: {node: '>=0.1.90'} + + '@colors/colors@1.6.0': + resolution: {integrity: sha512-Ir+AOibqzrIsL6ajt3Rz3LskB7OiMVHqltZmspbW/TJuTVuyOMirVqAkjfY6JISiLHgyNqicAC8AyHHGzNd/dA==} + engines: {node: '>=0.1.90'} + + '@dabh/diagnostics@2.0.3': + resolution: {integrity: sha512-hrlQOIi7hAfzsMqlGSFyVucrx38O+j6wiGOf//H2ecvIEqYN4ADBSS2iLMh5UFyDunCNniUIPk/q3riFv45xRA==} + + '@discoveryjs/json-ext@0.5.7': + resolution: {integrity: sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==} + engines: {node: '>=10.0.0'} + + '@emotion/babel-plugin@11.11.0': + resolution: {integrity: sha512-m4HEDZleaaCH+XgDDsPF15Ht6wTLsgDTeR3WYj9Q/k76JtWhrJjcP4+/XlG8LGT/Rol9qUfOIztXeA84ATpqPQ==} + + '@emotion/cache@11.11.0': + resolution: {integrity: sha512-P34z9ssTCBi3e9EI1ZsWpNHcfY1r09ZO0rZbRO2ob3ZQMnFI35jB536qoXbkdesr5EUhYi22anuEJuyxifaqAQ==} + + '@emotion/hash@0.9.1': + resolution: {integrity: sha512-gJB6HLm5rYwSLI6PQa+X1t5CFGrv1J1TWG+sOyMCeKz2ojaj6Fnl/rZEspogG+cvqbt4AE/2eIyD2QfLKTBNlQ==} + + '@emotion/is-prop-valid@0.8.8': + resolution: {integrity: sha512-u5WtneEAr5IDG2Wv65yhunPSMLIpuKsbuOktRojfrEiEvRyC85LgPMZI63cr7NUqT8ZIGdSVg8ZKGxIug4lXcA==} + + '@emotion/memoize@0.7.4': + resolution: {integrity: sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw==} + + '@emotion/memoize@0.8.1': + resolution: {integrity: sha512-W2P2c/VRW1/1tLox0mVUalvnWXxavmv/Oum2aPsRcoDJuob75FC3Y8FbpfLwUegRcxINtGUMPq0tFCvYNTBXNA==} + + '@emotion/react@11.11.4': + resolution: {integrity: sha512-t8AjMlF0gHpvvxk5mAtCqR4vmxiGHCeJBaQO6gncUSdklELOgtwjerNY2yuJNfwnc6vi16U/+uMF+afIawJ9iw==} + peerDependencies: + '@types/react': '*' + react: '>=16.8.0' + peerDependenciesMeta: + '@types/react': + optional: true + + '@emotion/serialize@1.1.4': + resolution: {integrity: sha512-RIN04MBT8g+FnDwgvIUi8czvr1LU1alUMI05LekWB5DGyTm8cCBMCRpq3GqaiyEDRptEXOyXnvZ58GZYu4kBxQ==} + + '@emotion/sheet@1.2.2': + resolution: {integrity: sha512-0QBtGvaqtWi+nx6doRwDdBIzhNdZrXUppvTM4dtZZWEGTXL/XE/yJxLMGlDT1Gt+UHH5IX1n+jkXyytE/av7OA==} + + '@emotion/stylis@0.8.5': + resolution: {integrity: sha512-h6KtPihKFn3T9fuIrwvXXUOwlx3rfUvfZIcP5a6rh8Y7zjE3O06hT5Ss4S/YI1AYhuZ1kjaE/5EaOOI2NqSylQ==} + + '@emotion/unitless@0.7.5': + resolution: {integrity: sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg==} + + '@emotion/unitless@0.8.1': + resolution: {integrity: sha512-KOEGMu6dmJZtpadb476IsZBclKvILjopjUii3V+7MnXIQCYh8W3NgNcgwo21n9LXZX6EDIKvqfjYxXebDwxKmQ==} + + '@emotion/use-insertion-effect-with-fallbacks@1.0.1': + resolution: {integrity: sha512-jT/qyKZ9rzLErtrjGgdkMBn2OP8wl0G3sQlBb3YPryvKHsjvINUhVaPFfP+fpBcOkmrVOVEEHQFJ7nbj2TH2gw==} + peerDependencies: + react: '>=16.8.0' + + '@emotion/utils@1.2.1': + resolution: {integrity: sha512-Y2tGf3I+XVnajdItskUCn6LX+VUDmP6lTL4fcqsXAv43dnlbZiuW4MWQW38rW/BVWSE7Q/7+XQocmpnRYILUmg==} + + '@emotion/weak-memoize@0.3.1': + resolution: {integrity: sha512-EsBwpc7hBUJWAsNPBmJy4hxWx12v6bshQsldrVmjxJoc3isbxhOrF2IcCpaXxfvq03NwkI7sbsOLXbYuqF/8Ww==} + + '@esbuild/aix-ppc64@0.19.11': + resolution: {integrity: sha512-FnzU0LyE3ySQk7UntJO4+qIiQgI7KoODnZg5xzXIrFJlKd2P2gwHsHY4927xj9y5PJmJSzULiUCWmv7iWnNa7g==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [aix] + + '@esbuild/android-arm64@0.16.17': + resolution: {integrity: sha512-MIGl6p5sc3RDTLLkYL1MyL8BMRN4tLMRCn+yRJJmEDvYZ2M7tmAf80hx1kbNEUX2KJ50RRtxZ4JHLvCfuB6kBg==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + + '@esbuild/android-arm64@0.19.11': + resolution: {integrity: sha512-aiu7K/5JnLj//KOnOfEZ0D90obUkRzDMyqd/wNAUQ34m4YUPVhRZpnqKV9uqDGxT7cToSDnIHsGooyIczu9T+Q==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + + '@esbuild/android-arm@0.16.17': + resolution: {integrity: sha512-N9x1CMXVhtWEAMS7pNNONyA14f71VPQN9Cnavj1XQh6T7bskqiLLrSca4O0Vr8Wdcga943eThxnVp3JLnBMYtw==} + engines: {node: '>=12'} + cpu: [arm] + os: [android] + + '@esbuild/android-arm@0.19.11': + resolution: {integrity: sha512-5OVapq0ClabvKvQ58Bws8+wkLCV+Rxg7tUVbo9xu034Nm536QTII4YzhaFriQ7rMrorfnFKUsArD2lqKbFY4vw==} + engines: {node: '>=12'} + cpu: [arm] + os: [android] + + '@esbuild/android-x64@0.16.17': + resolution: {integrity: sha512-a3kTv3m0Ghh4z1DaFEuEDfz3OLONKuFvI4Xqczqx4BqLyuFaFkuaG4j2MtA6fuWEFeC5x9IvqnX7drmRq/fyAQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + + '@esbuild/android-x64@0.19.11': + resolution: {integrity: sha512-eccxjlfGw43WYoY9QgB82SgGgDbibcqyDTlk3l3C0jOVHKxrjdc9CTwDUQd0vkvYg5um0OH+GpxYvp39r+IPOg==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + + '@esbuild/darwin-arm64@0.16.17': + resolution: {integrity: sha512-/2agbUEfmxWHi9ARTX6OQ/KgXnOWfsNlTeLcoV7HSuSTv63E4DqtAc+2XqGw1KHxKMHGZgbVCZge7HXWX9Vn+w==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + + '@esbuild/darwin-arm64@0.19.11': + resolution: {integrity: sha512-ETp87DRWuSt9KdDVkqSoKoLFHYTrkyz2+65fj9nfXsaV3bMhTCjtQfw3y+um88vGRKRiF7erPrh/ZuIdLUIVxQ==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + + '@esbuild/darwin-x64@0.16.17': + resolution: {integrity: sha512-2By45OBHulkd9Svy5IOCZt376Aa2oOkiE9QWUK9fe6Tb+WDr8hXL3dpqi+DeLiMed8tVXspzsTAvd0jUl96wmg==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + + '@esbuild/darwin-x64@0.19.11': + resolution: {integrity: sha512-fkFUiS6IUK9WYUO/+22omwetaSNl5/A8giXvQlcinLIjVkxwTLSktbF5f/kJMftM2MJp9+fXqZ5ezS7+SALp4g==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + + '@esbuild/freebsd-arm64@0.16.17': + resolution: {integrity: sha512-mt+cxZe1tVx489VTb4mBAOo2aKSnJ33L9fr25JXpqQqzbUIw/yzIzi+NHwAXK2qYV1lEFp4OoVeThGjUbmWmdw==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + + '@esbuild/freebsd-arm64@0.19.11': + resolution: {integrity: sha512-lhoSp5K6bxKRNdXUtHoNc5HhbXVCS8V0iZmDvyWvYq9S5WSfTIHU2UGjcGt7UeS6iEYp9eeymIl5mJBn0yiuxA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + + '@esbuild/freebsd-x64@0.16.17': + resolution: {integrity: sha512-8ScTdNJl5idAKjH8zGAsN7RuWcyHG3BAvMNpKOBaqqR7EbUhhVHOqXRdL7oZvz8WNHL2pr5+eIT5c65kA6NHug==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + + '@esbuild/freebsd-x64@0.19.11': + resolution: {integrity: sha512-JkUqn44AffGXitVI6/AbQdoYAq0TEullFdqcMY/PCUZ36xJ9ZJRtQabzMA+Vi7r78+25ZIBosLTOKnUXBSi1Kw==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + + '@esbuild/linux-arm64@0.16.17': + resolution: {integrity: sha512-7S8gJnSlqKGVJunnMCrXHU9Q8Q/tQIxk/xL8BqAP64wchPCTzuM6W3Ra8cIa1HIflAvDnNOt2jaL17vaW+1V0g==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + + '@esbuild/linux-arm64@0.19.11': + resolution: {integrity: sha512-LneLg3ypEeveBSMuoa0kwMpCGmpu8XQUh+mL8XXwoYZ6Be2qBnVtcDI5azSvh7vioMDhoJFZzp9GWp9IWpYoUg==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + + '@esbuild/linux-arm@0.16.17': + resolution: {integrity: sha512-iihzrWbD4gIT7j3caMzKb/RsFFHCwqqbrbH9SqUSRrdXkXaygSZCZg1FybsZz57Ju7N/SHEgPyaR0LZ8Zbe9gQ==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + + '@esbuild/linux-arm@0.19.11': + resolution: {integrity: sha512-3CRkr9+vCV2XJbjwgzjPtO8T0SZUmRZla+UL1jw+XqHZPkPgZiyWvbDvl9rqAN8Zl7qJF0O/9ycMtjU67HN9/Q==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + + '@esbuild/linux-ia32@0.16.17': + resolution: {integrity: sha512-kiX69+wcPAdgl3Lonh1VI7MBr16nktEvOfViszBSxygRQqSpzv7BffMKRPMFwzeJGPxcio0pdD3kYQGpqQ2SSg==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + + '@esbuild/linux-ia32@0.19.11': + resolution: {integrity: sha512-caHy++CsD8Bgq2V5CodbJjFPEiDPq8JJmBdeyZ8GWVQMjRD0sU548nNdwPNvKjVpamYYVL40AORekgfIubwHoA==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + + '@esbuild/linux-loong64@0.16.17': + resolution: {integrity: sha512-dTzNnQwembNDhd654cA4QhbS9uDdXC3TKqMJjgOWsC0yNCbpzfWoXdZvp0mY7HU6nzk5E0zpRGGx3qoQg8T2DQ==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + + '@esbuild/linux-loong64@0.19.11': + resolution: {integrity: sha512-ppZSSLVpPrwHccvC6nQVZaSHlFsvCQyjnvirnVjbKSHuE5N24Yl8F3UwYUUR1UEPaFObGD2tSvVKbvR+uT1Nrg==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + + '@esbuild/linux-mips64el@0.16.17': + resolution: {integrity: sha512-ezbDkp2nDl0PfIUn0CsQ30kxfcLTlcx4Foz2kYv8qdC6ia2oX5Q3E/8m6lq84Dj/6b0FrkgD582fJMIfHhJfSw==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + + '@esbuild/linux-mips64el@0.19.11': + resolution: {integrity: sha512-B5x9j0OgjG+v1dF2DkH34lr+7Gmv0kzX6/V0afF41FkPMMqaQ77pH7CrhWeR22aEeHKaeZVtZ6yFwlxOKPVFyg==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + + '@esbuild/linux-ppc64@0.16.17': + resolution: {integrity: sha512-dzS678gYD1lJsW73zrFhDApLVdM3cUF2MvAa1D8K8KtcSKdLBPP4zZSLy6LFZ0jYqQdQ29bjAHJDgz0rVbLB3g==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + + '@esbuild/linux-ppc64@0.19.11': + resolution: {integrity: sha512-MHrZYLeCG8vXblMetWyttkdVRjQlQUb/oMgBNurVEnhj4YWOr4G5lmBfZjHYQHHN0g6yDmCAQRR8MUHldvvRDA==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + + '@esbuild/linux-riscv64@0.16.17': + resolution: {integrity: sha512-ylNlVsxuFjZK8DQtNUwiMskh6nT0vI7kYl/4fZgV1llP5d6+HIeL/vmmm3jpuoo8+NuXjQVZxmKuhDApK0/cKw==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + + '@esbuild/linux-riscv64@0.19.11': + resolution: {integrity: sha512-f3DY++t94uVg141dozDu4CCUkYW+09rWtaWfnb3bqe4w5NqmZd6nPVBm+qbz7WaHZCoqXqHz5p6CM6qv3qnSSQ==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + + '@esbuild/linux-s390x@0.16.17': + resolution: {integrity: sha512-gzy7nUTO4UA4oZ2wAMXPNBGTzZFP7mss3aKR2hH+/4UUkCOyqmjXiKpzGrY2TlEUhbbejzXVKKGazYcQTZWA/w==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + + '@esbuild/linux-s390x@0.19.11': + resolution: {integrity: sha512-A5xdUoyWJHMMlcSMcPGVLzYzpcY8QP1RtYzX5/bS4dvjBGVxdhuiYyFwp7z74ocV7WDc0n1harxmpq2ePOjI0Q==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + + '@esbuild/linux-x64@0.16.17': + resolution: {integrity: sha512-mdPjPxfnmoqhgpiEArqi4egmBAMYvaObgn4poorpUaqmvzzbvqbowRllQ+ZgzGVMGKaPkqUmPDOOFQRUFDmeUw==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + + '@esbuild/linux-x64@0.19.11': + resolution: {integrity: sha512-grbyMlVCvJSfxFQUndw5mCtWs5LO1gUlwP4CDi4iJBbVpZcqLVT29FxgGuBJGSzyOxotFG4LoO5X+M1350zmPA==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + + '@esbuild/netbsd-x64@0.16.17': + resolution: {integrity: sha512-/PzmzD/zyAeTUsduZa32bn0ORug+Jd1EGGAUJvqfeixoEISYpGnAezN6lnJoskauoai0Jrs+XSyvDhppCPoKOA==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + + '@esbuild/netbsd-x64@0.19.11': + resolution: {integrity: sha512-13jvrQZJc3P230OhU8xgwUnDeuC/9egsjTkXN49b3GcS5BKvJqZn86aGM8W9pd14Kd+u7HuFBMVtrNGhh6fHEQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + + '@esbuild/openbsd-x64@0.16.17': + resolution: {integrity: sha512-2yaWJhvxGEz2RiftSk0UObqJa/b+rIAjnODJgv2GbGGpRwAfpgzyrg1WLK8rqA24mfZa9GvpjLcBBg8JHkoodg==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + + '@esbuild/openbsd-x64@0.19.11': + resolution: {integrity: sha512-ysyOGZuTp6SNKPE11INDUeFVVQFrhcNDVUgSQVDzqsqX38DjhPEPATpid04LCoUr2WXhQTEZ8ct/EgJCUDpyNw==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + + '@esbuild/sunos-x64@0.16.17': + resolution: {integrity: sha512-xtVUiev38tN0R3g8VhRfN7Zl42YCJvyBhRKw1RJjwE1d2emWTVToPLNEQj/5Qxc6lVFATDiy6LjVHYhIPrLxzw==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + + '@esbuild/sunos-x64@0.19.11': + resolution: {integrity: sha512-Hf+Sad9nVwvtxy4DXCZQqLpgmRTQqyFyhT3bZ4F2XlJCjxGmRFF0Shwn9rzhOYRB61w9VMXUkxlBy56dk9JJiQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + + '@esbuild/win32-arm64@0.16.17': + resolution: {integrity: sha512-ga8+JqBDHY4b6fQAmOgtJJue36scANy4l/rL97W+0wYmijhxKetzZdKOJI7olaBaMhWt8Pac2McJdZLxXWUEQw==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + + '@esbuild/win32-arm64@0.19.11': + resolution: {integrity: sha512-0P58Sbi0LctOMOQbpEOvOL44Ne0sqbS0XWHMvvrg6NE5jQ1xguCSSw9jQeUk2lfrXYsKDdOe6K+oZiwKPilYPQ==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + + '@esbuild/win32-ia32@0.16.17': + resolution: {integrity: sha512-WnsKaf46uSSF/sZhwnqE4L/F89AYNMiD4YtEcYekBt9Q7nj0DiId2XH2Ng2PHM54qi5oPrQ8luuzGszqi/veig==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + + '@esbuild/win32-ia32@0.19.11': + resolution: {integrity: sha512-6YOrWS+sDJDmshdBIQU+Uoyh7pQKrdykdefC1avn76ss5c+RN6gut3LZA4E2cH5xUEp5/cA0+YxRaVtRAb0xBg==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + + '@esbuild/win32-x64@0.16.17': + resolution: {integrity: sha512-y+EHuSchhL7FjHgvQL/0fnnFmO4T1bhvWANX6gcnqTjtnKWbTvUMCpGnv2+t+31d7RzyEAYAd4u2fnIhHL6N/Q==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + + '@esbuild/win32-x64@0.19.11': + resolution: {integrity: sha512-vfkhltrjCAb603XaFhqhAF4LGDi2M4OrCRrFusyQ+iTLQ/o60QQXxc9cZC/FFpihBI9N1Grn6SMKVJ4KP7Fuiw==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + + '@esm2cjs/execa@6.1.1-cjs.1': + resolution: {integrity: sha512-FHxfnmuDIjY1VS/BLzDkL8EkbcFvi8s6x1nYQ1Nyu0An0n88EJcGhDBcRWLFwt3C3nT7xwI+MwHRH1TZcAFW2w==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + '@esm2cjs/human-signals@3.0.1': + resolution: {integrity: sha512-QZme4eF/PwTpeSbMB4AaWGQ4VSygzE30jI+Oas1NPTtZQAgcHwWVDOQpIW8FUmtzn5Q+2cS7AjnTzbtqtc5P6g==} + engines: {node: '>=12.20.0'} + + '@esm2cjs/is-stream@3.0.0': + resolution: {integrity: sha512-qcBscHlJpZFOD5nnmMHkzOrq2xyvsp9fbVreQLS8x2LOs8N3CrNi3fqvFY0GVJR+YSOHscwhG9T5t4Ck7R7QGw==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + '@esm2cjs/mimic-fn@4.0.0': + resolution: {integrity: sha512-LIIAjcpjLr4rcbYmRQ+eRu55Upy/MMB78seIlwqbnyiA+cTa1/pxWnJ1NHJQrw6tx2wMQmlYoJj+wf16NjWH6Q==} + engines: {node: '>=12'} + + '@esm2cjs/npm-run-path@5.1.1-cjs.0': + resolution: {integrity: sha512-CWeAIyE8iNSCgP2ItPE8iPgS+lACqgH+MuFRaWOIl2T7hnHqPFfhAJJ/LcLJJ/RMIxNMeenjFMwc91HW7NWr1A==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + '@esm2cjs/onetime@6.0.1-cjs.0': + resolution: {integrity: sha512-MkZMZSxrSC/6yUuAw6Azc56XOgwHQQIsNDlO/zgFmOcycJBhRwRuc/gdYUUOFNZIh7y+f0JSIxkNdJPFvJ5W0w==} + engines: {node: '>=12'} + + '@esm2cjs/path-key@4.0.0': + resolution: {integrity: sha512-fKzZ3uIIP4j+7WfyG0MEkomGHL0hUXWCx1kY2Zct3GTdl4pyY+3k5lCUxjgdDa2Ld1BCjMNorXnRHiBP6jW6CQ==} + engines: {node: '>=12'} + + '@esm2cjs/strip-final-newline@3.0.1-cjs.0': + resolution: {integrity: sha512-o41riCGPiOEStayoikBCAqwa6igbv9L9rP+k5UCfQ24EJD/wGrdDs/KTNwkHG5JzDK3T60D5dMkWkLKEPy8gjA==} + engines: {node: '>=12'} + + '@floating-ui/core@1.6.2': + resolution: {integrity: sha512-+2XpQV9LLZeanU4ZevzRnGFg2neDeKHgFLjP6YLW+tly0IvrhqT4u8enLGjLH3qeh85g19xY5rsAusfwTdn5lg==} + + '@floating-ui/dom@1.6.5': + resolution: {integrity: sha512-Nsdud2X65Dz+1RHjAIP0t8z5e2ff/IRbei6BqFrl1urT8sDVzM1HMQ+R0XcU5ceRfyO3I6ayeqIfh+6Wb8LGTw==} + + '@floating-ui/react-dom@2.1.0': + resolution: {integrity: sha512-lNzj5EQmEKn5FFKc04+zasr09h/uX8RtJRNj5gUXsSQIXHVWTVh+hVAg1vOMCexkX8EgvemMvIFpQfkosnVNyA==} + peerDependencies: + react: '>=16.8.0' + react-dom: '>=16.8.0' + + '@floating-ui/utils@0.2.2': + resolution: {integrity: sha512-J4yDIIthosAsRZ5CPYP/jQvUAQtlZTTD/4suA08/FEnlxqW3sKS9iAhgsa9VYLZ6vDHn/ixJgIqRQPotoBjxIw==} + + '@formatjs/ecma402-abstract@1.14.3': + resolution: {integrity: sha512-SlsbRC/RX+/zg4AApWIFNDdkLtFbkq3LNoZWXZCE/nHVKqoIJyaoQyge/I0Y38vLxowUn9KTtXgusLD91+orbg==} + + '@formatjs/fast-memoize@2.0.1': + resolution: {integrity: sha512-M2GgV+qJn5WJQAYewz7q2Cdl6fobQa69S1AzSM2y0P68ZDbK5cWrJIcPCO395Of1ksftGZoOt4LYCO/j9BKBSA==} + + '@formatjs/icu-messageformat-parser@2.3.0': + resolution: {integrity: sha512-xqtlqYAbfJDF4b6e4O828LBNOWXrFcuYadqAbYORlDRwhyJ2bH+xpUBPldZbzRGUN2mxlZ4Ykhm7jvERtmI8NQ==} + + '@formatjs/icu-messageformat-parser@2.3.1': + resolution: {integrity: sha512-knF2AkAKN4Upv4oIiKY4Wd/dLH68TNMPgV/tJMu/T6FP9aQwbv8fpj7U3lkyniPaNVxvia56Gxax8MKOjtxLSQ==} + + '@formatjs/icu-skeleton-parser@1.3.18': + resolution: {integrity: sha512-ND1ZkZfmLPcHjAH1sVpkpQxA+QYfOX3py3SjKWMUVGDow18gZ0WPqz3F+pJLYQMpS2LnnQ5zYR2jPVYTbRwMpg==} + + '@formatjs/intl-displaynames@6.2.6': + resolution: {integrity: sha512-scf5AQTk9EjpvPhboo5sizVOvidTdMOnajv9z+0cejvl7JNl9bl/aMrNBgC72UH+bP3l45usPUKAGskV6sNIrA==} + + '@formatjs/intl-displaynames@6.3.1': + resolution: {integrity: sha512-TlxguMDUbnFrJ4NA8fSyqXC62M7czvlRJ5mrJgtB91JVA+QPjjNdcRm1qPIC/DcU/pGUDcEzThn/x5A+jp15gg==} + + '@formatjs/intl-listformat@7.1.9': + resolution: {integrity: sha512-5YikxwRqRXTVWVujhswDOTCq6gs+m9IcNbNZLa6FLtyBStAjEsuE2vAU+lPsbz9ZTST57D5fodjIh2JXT6sMWQ==} + + '@formatjs/intl-listformat@7.2.1': + resolution: {integrity: sha512-fRJFWLrGa7d25I4JSxNjKX29oXGcIXx8fJjgURnvs2C3ijS4gurUgFrUwLbv/2KfPfyJ5g567pz2INelNJZBdw==} + + '@formatjs/intl-localematcher@0.2.32': + resolution: {integrity: sha512-k/MEBstff4sttohyEpXxCmC3MqbUn9VvHGlZ8fauLzkbwXmVrEeyzS+4uhrvAk9DWU9/7otYWxyDox4nT/KVLQ==} + + '@formatjs/intl@2.6.9': + resolution: {integrity: sha512-EtcMZ9O24YSASu/jGOaTQtArx7XROjlKiO4KmkxJ/3EyAQLCr5hrS+KKvNud0a7GIwBucOb3IFrZ7WiSm2A/Cw==} + peerDependencies: + typescript: ^4.7 + peerDependenciesMeta: + typescript: + optional: true + + '@formatjs/intl@2.7.1': + resolution: {integrity: sha512-se6vxidsN3PCmzqTsDd3YDT4IX9ZySPy39LYhF7x2ssNvlGMOuW3umkrIhKkXB7ZskqsJGY53LVCdiHsSwhGng==} + peerDependencies: + typescript: ^4.7 || 5 + peerDependenciesMeta: + typescript: + optional: true + + '@hapi/bourne@3.0.0': + resolution: {integrity: sha512-Waj1cwPXJDucOib4a3bAISsKJVb15MKi9IvmTI/7ssVEm6sywXGjVJDhl6/umt1pK1ZS7PacXU3A1PmFKHEZ2w==} + + '@internationalized/date@3.5.4': + resolution: {integrity: sha512-qoVJVro+O0rBaw+8HPjUB1iH8Ihf8oziEnqMnvhJUSuVIrHOuZ6eNLHNvzXJKUvAtaDiqMnRlg8Z2mgh09BlUw==} + + '@internationalized/number@3.5.3': + resolution: {integrity: sha512-rd1wA3ebzlp0Mehj5YTuTI50AQEx80gWFyHcQu+u91/5NgdwBecO8BH6ipPfE+lmQ9d63vpB3H9SHoIUiupllw==} + + '@jridgewell/gen-mapping@0.3.5': + resolution: {integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==} + engines: {node: '>=6.0.0'} + + '@jridgewell/resolve-uri@3.1.2': + resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} + engines: {node: '>=6.0.0'} + + '@jridgewell/set-array@1.2.1': + resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==} + engines: {node: '>=6.0.0'} + + '@jridgewell/source-map@0.3.6': + resolution: {integrity: sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==} + + '@jridgewell/sourcemap-codec@1.4.15': + resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} + + '@jridgewell/trace-mapping@0.3.25': + resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} + + '@juggle/resize-observer@3.4.0': + resolution: {integrity: sha512-dfLbk+PwWvFzSxwk3n5ySL0hfBog779o8h68wK/7/APo/7cgyWp5jcXockbxdk5kFRkbeXWm4Fbi9FrdN381sA==} + + '@koa/cors@5.0.0': + resolution: {integrity: sha512-x/iUDjcS90W69PryLDIMgFyV21YLTnG9zOpPXS7Bkt2b8AsY3zZsIpOLBkYr9fBcF3HbkKaER5hOBZLfpLgYNw==} + engines: {node: '>= 14.0.0'} + + '@koa/router@10.1.1': + resolution: {integrity: sha512-ORNjq5z4EmQPriKbR0ER3k4Gh7YGNhWDL7JBW+8wXDrHLbWYKYSJaOJ9aN06npF5tbTxe2JBOsurpJDAvjiXKw==} + engines: {node: '>= 8.0.0'} + deprecated: '**IMPORTANT 10x+ PERFORMANCE UPGRADE**: Please upgrade to v12.0.1+ as we have fixed an issue with debuglog causing 10x slower router benchmark performance, see https://github.com/koajs/router/pull/173' + + '@lezer/common@1.2.1': + resolution: {integrity: sha512-yemX0ZD2xS/73llMZIK6KplkjIjf2EvAHcinDi/TfJ9hS25G0388+ClHt6/3but0oOxinTcQHJLDXh6w1crzFQ==} + + '@lezer/highlight@1.2.0': + resolution: {integrity: sha512-WrS5Mw51sGrpqjlh3d4/fOwpEV2Hd3YOkp9DBt4k8XZQcoTHZFB7sx030A6OcahF4J1nDQAa3jXlTVVYH50IFA==} + + '@lezer/json@1.0.2': + resolution: {integrity: sha512-xHT2P4S5eeCYECyKNPhr4cbEL9tc8w83SPwRC373o9uEdrvGKTZoJVAGxpOsZckMlEh9W23Pc72ew918RWQOBQ==} + + '@lezer/lr@1.4.1': + resolution: {integrity: sha512-CHsKq8DMKBf9b3yXPDIU4DbH+ZJd/sJdYOW2llbW/HudP5u0VS6Bfq1hLYfgU7uAYGFIyGGQIsSOXGPEErZiJw==} + + '@mapbox/node-pre-gyp@1.0.11': + resolution: {integrity: sha512-Yhlar6v9WQgUp/He7BdgzOz8lqMQ8sU+jkCq7Wx8Myc5YFJLbEe7lgui/V7G1qB1DJykHSGwreceSaD60Y0PUQ==} + hasBin: true + + '@mswjs/cookies@0.2.2': + resolution: {integrity: sha512-mlN83YSrcFgk7Dm1Mys40DLssI1KdJji2CMKN8eOlBqsTADYzj2+jWzsANsUTFbxDMWPD5e9bfA1RGqBpS3O1g==} + engines: {node: '>=14'} + + '@mswjs/interceptors@0.17.10': + resolution: {integrity: sha512-N8x7eSLGcmUFNWZRxT1vsHvypzIRgQYdG0rJey/rZCy6zT/30qDt8Joj7FxzGNLSwXbeZqJOMqDurp7ra4hgbw==} + engines: {node: '>=14'} + + '@mux/mux-node@7.3.5': + resolution: {integrity: sha512-lM0DIKiNAQoT0jBCuOfbzwfky4UYrF9h2xbidEYT/I2ftO2q4891+5dFXDUmi1IJtsdIxRARsggZKqrwdsd4Eg==} + engines: {node: '>=14'} + + '@noble/hashes@1.4.0': + resolution: {integrity: sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg==} + engines: {node: '>= 16'} + + '@nodelib/fs.scandir@2.1.5': + resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} + engines: {node: '>= 8'} + + '@nodelib/fs.stat@2.0.5': + resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} + engines: {node: '>= 8'} + + '@nodelib/fs.walk@1.2.8': + resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} + engines: {node: '>= 8'} + + '@open-draft/until@1.0.3': + resolution: {integrity: sha512-Aq58f5HiWdyDlFffbbSjAlv596h/cOnt2DO1w3DOC7OJ5EHs0hd/nycJfiu9RJbT6Yk6F1knnRRXNSpxoIVZ9Q==} + + '@paralleldrive/cuid2@2.2.2': + resolution: {integrity: sha512-ZOBkgDwEdoYVlSeRbYYXs0S9MejQofiVYoTbKzy/6GQa39/q5tQU2IX46+shYnUkpEl3wc+J6wRlar7r2EK2xA==} + + '@pkgr/utils@2.4.2': + resolution: {integrity: sha512-POgTXhjrTfbTV63DiFXav4lBHiICLKKwDeaKn9Nphwj7WH6m0hMMCaJkMyRWjgtPFyRKRVoMXXjczsTQRDEhYw==} + engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} + + '@pmmmwh/react-refresh-webpack-plugin@0.5.11': + resolution: {integrity: sha512-7j/6vdTym0+qZ6u4XbSAxrWBGYSdCfTzySkj7WAFgDLmSyWlOrWvpyzxlFh5jtw9dn0oL/jtW+06XfFiisN3JQ==} + engines: {node: '>= 10.13'} + peerDependencies: + '@types/webpack': 4.x || 5.x + react-refresh: '>=0.10.0 <1.0.0' + sockjs-client: ^1.4.0 + type-fest: '>=0.17.0 <5.0.0' + webpack: '>=4.43.0 <6.0.0' + webpack-dev-server: 3.x || 4.x + webpack-hot-middleware: 2.x + webpack-plugin-serve: 0.x || 1.x + peerDependenciesMeta: + '@types/webpack': + optional: true + sockjs-client: + optional: true + type-fest: + optional: true + webpack-dev-server: + optional: true + webpack-hot-middleware: + optional: true + webpack-plugin-serve: + optional: true + + '@pnpm/config.env-replace@1.1.0': + resolution: {integrity: sha512-htyl8TWnKL7K/ESFa1oW2UB5lVDxuF5DpM7tBi6Hu2LNL3mWkIzNLG6N4zoCUP1lCKNxWy/3iu8mS8MvToGd6w==} + engines: {node: '>=12.22.0'} + + '@pnpm/network.ca-file@1.0.2': + resolution: {integrity: sha512-YcPQ8a0jwYU9bTdJDpXjMi7Brhkr1mXsXrUJvjqM2mQDgkRiz8jFaQGOdaLxgjtUfQgZhKy/O3cG/YwmgKaxLA==} + engines: {node: '>=12.22.0'} + + '@pnpm/npm-conf@2.2.2': + resolution: {integrity: sha512-UA91GwWPhFExt3IizW6bOeY/pQ0BkuNwKjk9iQW9KqxluGCrg4VenZ0/L+2Y0+ZOtme72EVvg6v0zo3AMQRCeA==} + engines: {node: '>=12'} + + '@polka/url@1.0.0-next.25': + resolution: {integrity: sha512-j7P6Rgr3mmtdkeDGTe0E/aYyWEWVtc5yFXtHCRHs28/jptDEWfaVOc5T7cblqy1XKPPfCxJc/8DwQ5YgLOZOVQ==} + + '@radix-ui/number@1.0.1': + resolution: {integrity: sha512-T5gIdVO2mmPW3NNhjNgEP3cqMXjXL9UbO0BzWcXfvdBs+BohbQxvd/K5hSVKmn9/lbTdsQVKbUcP5WLCwvUbBg==} + + '@radix-ui/primitive@1.0.1': + resolution: {integrity: sha512-yQ8oGX2GVsEYMWGxcovu1uGWPCxV5BFfeeYxqPmuAzUyLT9qmaMXSAhXpb0WrspIeqYzdJpkh2vHModJPgRIaw==} + + '@radix-ui/react-arrow@1.0.3': + resolution: {integrity: sha512-wSP+pHsB/jQRaL6voubsQ/ZlrGBHHrOjmBnr19hxYgtS0WvAFwZhK2WP/YY5yF9uKECCEEDGxuLxq1NBK51wFA==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-collection@1.0.3': + resolution: {integrity: sha512-3SzW+0PW7yBBoQlT8wNcGtaxaD0XSu0uLUFgrtHY08Acx05TaHaOmVLR73c0j/cqpDy53KBMO7s0dx2wmOIDIA==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-compose-refs@1.0.1': + resolution: {integrity: sha512-fDSBgd44FKHa1FRMU59qBMPFcl2PZE+2nmqunj+BWFyYYjnhIDWL2ItDs3rrbJDQOtzt5nIebLCQc4QRfz6LJw==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-context@1.0.1': + resolution: {integrity: sha512-ebbrdFoYTcuZ0v4wG5tedGnp9tzcV8awzsxYph7gXUyvnNLuTIcCk1q17JEbnVhXAKG9oX3KtchwiMIAYp9NLg==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-direction@1.0.1': + resolution: {integrity: sha512-RXcvnXgyvYvBEOhCBuddKecVkoMiI10Jcm5cTI7abJRAHYfFxeu+FBQs/DvdxSYucxR5mna0dNsL6QFlds5TMA==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-dismissable-layer@1.0.5': + resolution: {integrity: sha512-aJeDjQhywg9LBu2t/At58hCvr7pEm0o2Ke1x33B+MhjNmmZ17sy4KImo0KPLgsnc/zN7GPdce8Cnn0SWvwZO7g==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-dropdown-menu@2.0.6': + resolution: {integrity: sha512-i6TuFOoWmLWq+M/eCLGd/bQ2HfAX1RJgvrBQ6AQLmzfvsLdefxbWu8G9zczcPFfcSPehz9GcpF6K9QYreFV8hA==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-focus-guards@1.0.1': + resolution: {integrity: sha512-Rect2dWbQ8waGzhMavsIbmSVCgYxkXLxxR3ZvCX79JOglzdEy4JXMb98lq4hPxUbLr77nP0UOGf4rcMU+s1pUA==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-focus-scope@1.0.4': + resolution: {integrity: sha512-sL04Mgvf+FmyvZeYfNu1EPAaaxD+aw7cYeIB9L9Fvq8+urhltTRaEo5ysKOpHuKPclsZcSUMKlN05x4u+CINpA==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-id@1.0.1': + resolution: {integrity: sha512-tI7sT/kqYp8p96yGWY1OAnLHrqDgzHefRBKQ2YAkBS5ja7QLcZ9Z/uY7bEjPUatf8RomoXM8/1sMj1IJaE5UzQ==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-menu@2.0.6': + resolution: {integrity: sha512-BVkFLS+bUC8HcImkRKPSiVumA1VPOOEC5WBMiT+QAVsPzW1FJzI9KnqgGxVDPBcql5xXrHkD3JOVoXWEXD8SYA==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-popper@1.1.3': + resolution: {integrity: sha512-cKpopj/5RHZWjrbF2846jBNacjQVwkP068DfmgrNJXpvVWrOvlAmE9xSiy5OqeE+Gi8D9fP+oDhUnPqNMY8/5w==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-portal@1.0.4': + resolution: {integrity: sha512-Qki+C/EuGUVCQTOTD5vzJzJuMUlewbzuKyUy+/iHM2uwGiru9gZeBJtHAPKAEkB5KWGi9mP/CHKcY0wt1aW45Q==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-presence@1.0.1': + resolution: {integrity: sha512-UXLW4UAbIY5ZjcvzjfRFo5gxva8QirC9hF7wRE4U5gz+TP0DbRk+//qyuAQ1McDxBt1xNMBTaciFGvEmJvAZCg==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-primitive@1.0.3': + resolution: {integrity: sha512-yi58uVyoAcK/Nq1inRY56ZSjKypBNKTa/1mcL8qdl6oJeEaDbOldlzrGn7P6Q3Id5d+SYNGc5AJgc4vGhjs5+g==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-roving-focus@1.0.4': + resolution: {integrity: sha512-2mUg5Mgcu001VkGy+FfzZyzbmuUWzgWkj3rvv4yu+mLw03+mTzbxZHvfcGyFp2b8EkQeMkpRQ5FiA2Vr2O6TeQ==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-separator@1.0.3': + resolution: {integrity: sha512-itYmTy/kokS21aiV5+Z56MZB54KrhPgn6eHDKkFeOLR34HMN2s8PaN47qZZAGnvupcjxHaFZnW4pQEh0BvvVuw==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-slot@1.0.2': + resolution: {integrity: sha512-YeTpuq4deV+6DusvVUW4ivBgnkHwECUu0BiN43L5UCDFgdhsRUWAghhTF5MbvNTPzmiFOx90asDSUjWuCNapwg==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-toggle-group@1.0.4': + resolution: {integrity: sha512-Uaj/M/cMyiyT9Bx6fOZO0SAG4Cls0GptBWiBmBxofmDbNVnYYoyRWj/2M/6VCi/7qcXFWnHhRUfdfZFvvkuu8A==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-toggle@1.0.3': + resolution: {integrity: sha512-Pkqg3+Bc98ftZGsl60CLANXQBBQ4W3mTFS9EJvNxKMZ7magklKV69/id1mlAlOFDDfHvlCms0fx8fA4CMKDJHg==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-toolbar@1.0.4': + resolution: {integrity: sha512-tBgmM/O7a07xbaEkYJWYTXkIdU/1pW4/KZORR43toC/4XWyBCURK0ei9kMUdp+gTPPKBgYLxXmRSH1EVcIDp8Q==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-use-callback-ref@1.0.1': + resolution: {integrity: sha512-D94LjX4Sp0xJFVaoQOd3OO9k7tpBYNOXdVhkltUbGv2Qb9OXdrg/CpsjlZv7ia14Sylv398LswWBVVu5nqKzAQ==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-controllable-state@1.0.1': + resolution: {integrity: sha512-Svl5GY5FQeN758fWKrjM6Qb7asvXeiZltlT4U2gVfl8Gx5UAv2sMR0LWo8yhsIZh2oQ0eFdZ59aoOOMV7b47VA==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-escape-keydown@1.0.3': + resolution: {integrity: sha512-vyL82j40hcFicA+M4Ex7hVkB9vHgSse1ZWomAqV2Je3RleKGO5iM8KMOEtfoSB0PnIelMd2lATjTGMYqN5ylTg==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-layout-effect@1.0.1': + resolution: {integrity: sha512-v/5RegiJWYdoCvMnITBkNNx6bCj20fiaJnWtRkU18yITptraXjffz5Qbn05uOiQnOvi+dbkznkoaMltz1GnszQ==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-previous@1.0.1': + resolution: {integrity: sha512-cV5La9DPwiQ7S0gf/0qiD6YgNqM5Fk97Kdrlc5yBcrF3jyEZQwm7vYFqMo4IfeHgJXsRaMvLABFtd0OVEmZhDw==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-rect@1.0.1': + resolution: {integrity: sha512-Cq5DLuSiuYVKNU8orzJMbl15TXilTnJKUCltMVQg53BQOF1/C5toAaGrowkgksdBQ9H+SRL23g0HDmg9tvmxXw==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-size@1.0.1': + resolution: {integrity: sha512-ibay+VqrgcaI6veAojjofPATwledXiSmX+C0KrBk/xgpX9rBzPV3OsfwlhQdUOFbh+LKQorLYT+xTXW9V8yd0g==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-visually-hidden@1.0.3': + resolution: {integrity: sha512-D4w41yN5YRKtu464TLnByKzMDG/JlMPHtfZgQAu9v6mNakUqGUI9vUrfQKz8NK41VMm/xbZbh76NUTVtIYqOMA==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/rect@1.0.1': + resolution: {integrity: sha512-fyrgCaedtvMg9NK3en0pnOYJdtfwxUcNolezkNPUsoX57X8oQk+NkqcvzHXD2uKNij6GXmWU9NDru2IWjrO4BQ==} + + '@react-dnd/asap@5.0.2': + resolution: {integrity: sha512-WLyfoHvxhs0V9U+GTsGilGgf2QsPl6ZZ44fnv0/b8T3nQyvzxidxsg/ZltbWssbsRDlYW8UKSQMTGotuTotZ6A==} + + '@react-dnd/invariant@4.0.2': + resolution: {integrity: sha512-xKCTqAK/FFauOM9Ta2pswIyT3D8AQlfrYdOi/toTPEhqCuAs1v5tcJ3Y08Izh1cJ5Jchwy9SeAXmMg6zrKs2iw==} + + '@react-dnd/shallowequal@4.0.2': + resolution: {integrity: sha512-/RVXdLvJxLg4QKvMoM5WlwNR9ViO9z8B/qPcc+C0Sa/teJY7QG7kJ441DwzOjMYEY7GmU4dj5EcGHIkKZiQZCA==} + + '@reduxjs/toolkit@1.9.7': + resolution: {integrity: sha512-t7v8ZPxhhKgOKtU+uyJT13lu4vL7az5aFi4IdoDs/eS548edn2M8Ik9h8fxgvMjGoAUVFSt6ZC1P5cWmQ014QQ==} + peerDependencies: + react: ^16.9.0 || ^17.0.0 || ^18 + react-redux: ^7.2.1 || ^8.0.2 + peerDependenciesMeta: + react: + optional: true + react-redux: + optional: true + + '@rollup/rollup-android-arm-eabi@4.18.0': + resolution: {integrity: sha512-Tya6xypR10giZV1XzxmH5wr25VcZSncG0pZIjfePT0OVBvqNEurzValetGNarVrGiq66EBVAFn15iYX4w6FKgQ==} + cpu: [arm] + os: [android] + + '@rollup/rollup-android-arm64@4.18.0': + resolution: {integrity: sha512-avCea0RAP03lTsDhEyfy+hpfr85KfyTctMADqHVhLAF3MlIkq83CP8UfAHUssgXTYd+6er6PaAhx/QGv4L1EiA==} + cpu: [arm64] + os: [android] + + '@rollup/rollup-darwin-arm64@4.18.0': + resolution: {integrity: sha512-IWfdwU7KDSm07Ty0PuA/W2JYoZ4iTj3TUQjkVsO/6U+4I1jN5lcR71ZEvRh52sDOERdnNhhHU57UITXz5jC1/w==} + cpu: [arm64] + os: [darwin] + + '@rollup/rollup-darwin-x64@4.18.0': + resolution: {integrity: sha512-n2LMsUz7Ynu7DoQrSQkBf8iNrjOGyPLrdSg802vk6XT3FtsgX6JbE8IHRvposskFm9SNxzkLYGSq9QdpLYpRNA==} + cpu: [x64] + os: [darwin] + + '@rollup/rollup-linux-arm-gnueabihf@4.18.0': + resolution: {integrity: sha512-C/zbRYRXFjWvz9Z4haRxcTdnkPt1BtCkz+7RtBSuNmKzMzp3ZxdM28Mpccn6pt28/UWUCTXa+b0Mx1k3g6NOMA==} + cpu: [arm] + os: [linux] + + '@rollup/rollup-linux-arm-musleabihf@4.18.0': + resolution: {integrity: sha512-l3m9ewPgjQSXrUMHg93vt0hYCGnrMOcUpTz6FLtbwljo2HluS4zTXFy2571YQbisTnfTKPZ01u/ukJdQTLGh9A==} + cpu: [arm] + os: [linux] + + '@rollup/rollup-linux-arm64-gnu@4.18.0': + resolution: {integrity: sha512-rJ5D47d8WD7J+7STKdCUAgmQk49xuFrRi9pZkWoRD1UeSMakbcepWXPF8ycChBoAqs1pb2wzvbY6Q33WmN2ftw==} + cpu: [arm64] + os: [linux] + + '@rollup/rollup-linux-arm64-musl@4.18.0': + resolution: {integrity: sha512-be6Yx37b24ZwxQ+wOQXXLZqpq4jTckJhtGlWGZs68TgdKXJgw54lUUoFYrg6Zs/kjzAQwEwYbp8JxZVzZLRepQ==} + cpu: [arm64] + os: [linux] + + '@rollup/rollup-linux-powerpc64le-gnu@4.18.0': + resolution: {integrity: sha512-hNVMQK+qrA9Todu9+wqrXOHxFiD5YmdEi3paj6vP02Kx1hjd2LLYR2eaN7DsEshg09+9uzWi2W18MJDlG0cxJA==} + cpu: [ppc64] + os: [linux] + + '@rollup/rollup-linux-riscv64-gnu@4.18.0': + resolution: {integrity: sha512-ROCM7i+m1NfdrsmvwSzoxp9HFtmKGHEqu5NNDiZWQtXLA8S5HBCkVvKAxJ8U+CVctHwV2Gb5VUaK7UAkzhDjlg==} + cpu: [riscv64] + os: [linux] + + '@rollup/rollup-linux-s390x-gnu@4.18.0': + resolution: {integrity: sha512-0UyyRHyDN42QL+NbqevXIIUnKA47A+45WyasO+y2bGJ1mhQrfrtXUpTxCOrfxCR4esV3/RLYyucGVPiUsO8xjg==} + cpu: [s390x] + os: [linux] + + '@rollup/rollup-linux-x64-gnu@4.18.0': + resolution: {integrity: sha512-xuglR2rBVHA5UsI8h8UbX4VJ470PtGCf5Vpswh7p2ukaqBGFTnsfzxUBetoWBWymHMxbIG0Cmx7Y9qDZzr648w==} + cpu: [x64] + os: [linux] + + '@rollup/rollup-linux-x64-musl@4.18.0': + resolution: {integrity: sha512-LKaqQL9osY/ir2geuLVvRRs+utWUNilzdE90TpyoX0eNqPzWjRm14oMEE+YLve4k/NAqCdPkGYDaDF5Sw+xBfg==} + cpu: [x64] + os: [linux] + + '@rollup/rollup-win32-arm64-msvc@4.18.0': + resolution: {integrity: sha512-7J6TkZQFGo9qBKH0pk2cEVSRhJbL6MtfWxth7Y5YmZs57Pi+4x6c2dStAUvaQkHQLnEQv1jzBUW43GvZW8OFqA==} + cpu: [arm64] + os: [win32] + + '@rollup/rollup-win32-ia32-msvc@4.18.0': + resolution: {integrity: sha512-Txjh+IxBPbkUB9+SXZMpv+b/vnTEtFyfWZgJ6iyCmt2tdx0OF5WhFowLmnh8ENGNpfUlUZkdI//4IEmhwPieNg==} + cpu: [ia32] + os: [win32] + + '@rollup/rollup-win32-x64-msvc@4.18.0': + resolution: {integrity: sha512-UOo5FdvOL0+eIVTgS4tIdbW+TtnBLWg1YBCcU2KWM7nuNwRz9bksDX1bekJJCpu25N1DVWaCwnT39dVQxzqS8g==} + cpu: [x64] + os: [win32] + + '@rushstack/node-core-library@5.4.1': + resolution: {integrity: sha512-WNnwdS8r9NZ/2K3u29tNoSRldscFa7SxU0RT+82B6Dy2I4Hl2MeCSKm4EXLXPKeNzLGvJ1cqbUhTLviSF8E6iA==} + peerDependencies: + '@types/node': '*' + peerDependenciesMeta: + '@types/node': + optional: true + + '@rushstack/terminal@0.13.0': + resolution: {integrity: sha512-Ou44Q2s81BqJu3dpYedAX54am9vn245F0HzqVrfJCMQk5pGgoKKOBOjkbfZC9QKcGNaECh6pwH2s5noJt7X6ew==} + peerDependencies: + '@types/node': '*' + peerDependenciesMeta: + '@types/node': + optional: true + + '@rushstack/ts-command-line@4.22.0': + resolution: {integrity: sha512-Qj28t6MO3HRgAZ72FDeFsrpdE6wBWxF3VENgvrXh7JF2qIT+CrXiOJIesW80VFZB9QwObSpkB1ilx794fGQg6g==} + + '@sendgrid/client@7.7.0': + resolution: {integrity: sha512-SxH+y8jeAQSnDavrTD0uGDXYIIkFylCo+eDofVmZLQ0f862nnqbC3Vd1ej6b7Le7lboyzQF6F7Fodv02rYspuA==} + engines: {node: 6.* || 8.* || >=10.*} + + '@sendgrid/helpers@7.7.0': + resolution: {integrity: sha512-3AsAxfN3GDBcXoZ/y1mzAAbKzTtUZ5+ZrHOmWQ279AuaFXUNCh9bPnRpN504bgveTqoW+11IzPg3I0WVgDINpw==} + engines: {node: '>= 6.0.0'} + + '@sendgrid/mail@7.7.0': + resolution: {integrity: sha512-5+nApPE9wINBvHSUxwOxkkQqM/IAAaBYoP9hw7WwgDNQPxraruVqHizeTitVtKGiqWCKm2mnjh4XGN3fvFLqaw==} + engines: {node: 6.* || 8.* || >=10.*} + + '@sentry/core@6.19.7': + resolution: {integrity: sha512-tOfZ/umqB2AcHPGbIrsFLcvApdTm9ggpi/kQZFkej7kMphjT+SGBiQfYtjyg9jcRW+ilAR4JXC9BGKsdEQ+8Vw==} + engines: {node: '>=6'} + + '@sentry/hub@6.19.7': + resolution: {integrity: sha512-y3OtbYFAqKHCWezF0EGGr5lcyI2KbaXW2Ik7Xp8Mu9TxbSTuwTe4rTntwg8ngPjUQU3SUHzgjqVB8qjiGqFXCA==} + engines: {node: '>=6'} + + '@sentry/minimal@6.19.7': + resolution: {integrity: sha512-wcYmSJOdvk6VAPx8IcmZgN08XTXRwRtB1aOLZm+MVHjIZIhHoBGZJYTVQS/BWjldsamj2cX3YGbGXNunaCfYJQ==} + engines: {node: '>=6'} + + '@sentry/node@6.19.7': + resolution: {integrity: sha512-gtmRC4dAXKODMpHXKfrkfvyBL3cI8y64vEi3fDD046uqYcrWdgoQsffuBbxMAizc6Ez1ia+f0Flue6p15Qaltg==} + engines: {node: '>=6'} + + '@sentry/types@6.19.7': + resolution: {integrity: sha512-jH84pDYE+hHIbVnab3Hr+ZXr1v8QABfhx39KknxqKWr2l0oEItzepV0URvbEhB446lk/S/59230dlUUIBGsXbg==} + engines: {node: '>=6'} + + '@sentry/utils@6.19.7': + resolution: {integrity: sha512-z95ECmE3i9pbWoXQrD/7PgkBAzJYR+iXtPuTkpBjDKs86O3mT+PXOT3BAn79w2wkn7/i3vOGD2xVr1uiMl26dA==} + engines: {node: '>=6'} + + '@simov/deep-extend@1.0.0': + resolution: {integrity: sha512-Arv8/ZPcdKAMJnNF8cks35mPq1y3JnwH1lWpfWDKlJoj+Vw2xmA4+oL7m9GVHTgdX0mGFR7bCPTBTGbxhnfJJw==} + engines: {node: '>=4.0.0'} + + '@sindresorhus/is@4.6.0': + resolution: {integrity: sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==} + engines: {node: '>=10'} + + '@sindresorhus/slugify@1.1.0': + resolution: {integrity: sha512-ujZRbmmizX26yS/HnB3P9QNlNa4+UvHh+rIse3RbOXLp8yl6n1TxB4t7NHggtVgS8QmmOtzXo48kCxZGACpkPw==} + engines: {node: '>=10'} + + '@sindresorhus/transliterate@0.1.2': + resolution: {integrity: sha512-5/kmIOY9FF32nicXH+5yLNTX4NJ4atl7jRgqAJuIn/iyDFXBktOKDxCvyGE/EzmF4ngSUvjXxQUQlQiZ5lfw+w==} + engines: {node: '>=10'} + + '@smithy/abort-controller@3.1.0': + resolution: {integrity: sha512-XOm4LkuC0PsK1sf2bBJLIlskn5ghmVxiEBVlo/jg0R8hxASBKYYgOoJEhKWgOr4vWGkN+5rC+oyBAqHYtxjnwQ==} + engines: {node: '>=16.0.0'} + + '@smithy/chunked-blob-reader-native@3.0.0': + resolution: {integrity: sha512-VDkpCYW+peSuM4zJip5WDfqvg2Mo/e8yxOv3VF1m11y7B8KKMKVFtmZWDe36Fvk8rGuWrPZHHXZ7rR7uM5yWyg==} + + '@smithy/chunked-blob-reader@3.0.0': + resolution: {integrity: sha512-sbnURCwjF0gSToGlsBiAmd1lRCmSn72nu9axfJu5lIx6RUEgHu6GwTMbqCdhQSi0Pumcm5vFxsi9XWXb2mTaoA==} + + '@smithy/config-resolver@3.0.3': + resolution: {integrity: sha512-4wHqCMkdfVDP4qmr4fVPYOFOH+vKhOv3X4e6KEU9wIC8xXUQ24tnF4CW+sddGDX1zU86GGyQ7A+rg2xmUD6jpQ==} + engines: {node: '>=16.0.0'} + + '@smithy/core@2.2.3': + resolution: {integrity: sha512-SpyLOL2vgE6sUYM6nQfu82OirCPkCDKctyG3aMgjMlDPTJpUlmlNH0ttu9ZWwzEjrzzr8uABmPjJTRI7gk1HFQ==} + engines: {node: '>=16.0.0'} + + '@smithy/credential-provider-imds@3.1.2': + resolution: {integrity: sha512-gqVmUaNoeqyrOAjgZg+rTmFLsphh/vS59LCMdFfVpthVS0jbfBzvBmEPktBd+y9ME4DYMGHFAMSYJDK8q0noOQ==} + engines: {node: '>=16.0.0'} + + '@smithy/eventstream-codec@3.1.1': + resolution: {integrity: sha512-s29NxV/ng1KXn6wPQ4qzJuQDjEtxLdS0+g5PQFirIeIZrp66FXVJ5IpZRowbt/42zB5dY8TqJ0G0L9KkgtsEZg==} + + '@smithy/eventstream-serde-browser@3.0.3': + resolution: {integrity: sha512-ZXKmNAHl6SWKYuVmtoEc/hBQ7Nym/rbAx2SrqoJHn0i9QopIP7fG1AWmoFIeS5R3/VL6AwUIZMR0g8qnjjVRRA==} + engines: {node: '>=16.0.0'} + + '@smithy/eventstream-serde-config-resolver@3.0.2': + resolution: {integrity: sha512-QbE3asvvBUZr7PwbOaxkSfKDjTAmWZkqh2G7pkYlD4jRkT1Y9nufeyu0OBPlLoF4+gl3YMpSVO7TESe8bVkD+g==} + engines: {node: '>=16.0.0'} + + '@smithy/eventstream-serde-node@3.0.3': + resolution: {integrity: sha512-v61Ftn7x/ubWFqH7GHFAL/RaU7QZImTbuV95DYugYYItzpO7KaHYEuO8EskCaBpZEfzOxhUGKm4teS9YUSt69Q==} + engines: {node: '>=16.0.0'} + + '@smithy/eventstream-serde-universal@3.0.3': + resolution: {integrity: sha512-YXYt3Cjhu9tRrahbTec2uOjwOSeCNfQurcWPGNEUspBhqHoA3KrDrVj+jGbCLWvwkwhzqDnnaeHAxm+IxAjOAQ==} + engines: {node: '>=16.0.0'} + + '@smithy/fetch-http-handler@3.1.0': + resolution: {integrity: sha512-s7oQjEOUH9TYjctpITtWF4qxOdg7pBrP9eigEQ8SBsxF3dRFV0S28pGMllC83DUr7ECmErhO/BUwnULfoNhKgQ==} + + '@smithy/hash-blob-browser@3.1.1': + resolution: {integrity: sha512-8RwdPG7arvL5pfMAFsH6jfBVcC7MDR1LYHjKevZPHREkVtORIQkRfm2K8px7giJt7x0zzQJnWamrsDM4ig8nTQ==} + + '@smithy/hash-node@3.0.2': + resolution: {integrity: sha512-43uGA6o6QJQdXwAogybdTDHDd3SCdKyoiHIHb8PpdE2rKmVicjG9b1UgVwdgO8QPytmVqHFaUw27M3LZKwu8Yg==} + engines: {node: '>=16.0.0'} + + '@smithy/hash-stream-node@3.1.1': + resolution: {integrity: sha512-+uvJHPrFNE9crkh3INVS9FmDcx1DoywDgIzlRWlPy7gqoD8jG14os9ATIFY7wN/ARPz1EWlkCHUap70oXxMmjA==} + engines: {node: '>=16.0.0'} + + '@smithy/invalid-dependency@3.0.2': + resolution: {integrity: sha512-+BAY3fMhomtq470tswXyrdVBSUhiLuhBVT+rOmpbz5e04YX+s1dX4NxTLzZGwBjCpeWZNtTxP8zbIvvFk81gUg==} + + '@smithy/is-array-buffer@2.2.0': + resolution: {integrity: sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA==} + engines: {node: '>=14.0.0'} + + '@smithy/is-array-buffer@3.0.0': + resolution: {integrity: sha512-+Fsu6Q6C4RSJiy81Y8eApjEB5gVtM+oFKTffg+jSuwtvomJJrhUJBu2zS8wjXSgH/g1MKEWrzyChTBe6clb5FQ==} + engines: {node: '>=16.0.0'} + + '@smithy/md5-js@3.0.2': + resolution: {integrity: sha512-WlSK9br7fkVucTkCXporwuOttCR3cJ1GV70J8ENYXGNc0nUTPzMdWCyHztgnbbKoekVMjGZOEu+8I52nOdzqwQ==} + + '@smithy/middleware-content-length@3.0.2': + resolution: {integrity: sha512-/Havz3PkYIEmwpqkyRTR21yJsWnFbD1ec4H1pUL+TkDnE7RCQkAVUQepLL/UeCaZeCBXvfdoKbOjSbV01xIinQ==} + engines: {node: '>=16.0.0'} + + '@smithy/middleware-endpoint@3.0.3': + resolution: {integrity: sha512-ARAXHodhj4tttKa9y75zvENdSoHq6VGsSi7XS3+yLutrnxttJs6N10UMInCC1yi3/bopT8xug3iOP/y9R6sKJQ==} + engines: {node: '>=16.0.0'} + + '@smithy/middleware-retry@3.0.6': + resolution: {integrity: sha512-ICsFKp8eAyIMmxN5UT3IU37S6886L879TKtgxPsn/VD/laYNwqTLmJaCAn5//+2fRIrV0dnHp6LFlMwdXlWoUQ==} + engines: {node: '>=16.0.0'} + + '@smithy/middleware-serde@3.0.2': + resolution: {integrity: sha512-oT2abV5zLhBucJe1LIIFEcRgIBDbZpziuMPswTMbBQNcaEUycLFvX63zsFmqfwG+/ZQKsNx+BSE8W51CMuK7Yw==} + engines: {node: '>=16.0.0'} + + '@smithy/middleware-stack@3.0.2': + resolution: {integrity: sha512-6fRcxomlNKBPIy/YjcnC7YHpMAjRvGUYlYVJAfELqZjkW0vQegNcImjY7T1HgYA6u3pAcCxKVBLYnkTw8z/l0A==} + engines: {node: '>=16.0.0'} + + '@smithy/node-config-provider@3.1.2': + resolution: {integrity: sha512-388fEAa7+6ORj/BDC70peg3fyFBTTXJyXfXJ0Bwd6FYsRltePr2oGzIcm5AuC1WUSLtZ/dF+hYOnfTMs04rLvA==} + engines: {node: '>=16.0.0'} + + '@smithy/node-http-handler@3.1.0': + resolution: {integrity: sha512-pOpgB6B+VLXLwAyyvRz+ZAVXABlbAsJ2xvn3WZvrppAPImxwQOPFbeSUzWYMhpC8Tr7yQ3R8fG990QDhskkf1Q==} + engines: {node: '>=16.0.0'} + + '@smithy/property-provider@3.1.2': + resolution: {integrity: sha512-Hzp32BpeFFexBpO1z+ts8okbq/VLzJBadxanJAo/Wf2CmvXMBp6Q/TLWr7Js6IbMEcr0pDZ02V3u1XZkuQUJaA==} + engines: {node: '>=16.0.0'} + + '@smithy/protocol-http@4.0.2': + resolution: {integrity: sha512-X/90xNWIOqSR2tLUyWxVIBdatpm35DrL44rI/xoeBWUuanE0iyCXJpTcnqlOpnEzgcu0xCKE06+g70TTu2j7RQ==} + engines: {node: '>=16.0.0'} + + '@smithy/querystring-builder@3.0.2': + resolution: {integrity: sha512-xhv1+HacDYsOLdNt7zW+8Fe779KYAzmWvzs9bC5NlKM8QGYCwwuFwDBynhlU4D5twgi2pZ14Lm4h6RiAazCtmA==} + engines: {node: '>=16.0.0'} + + '@smithy/querystring-parser@3.0.2': + resolution: {integrity: sha512-C5hyRKgrZGPNh5QqIWzXnW+LXVrPmVQO0iJKjHeb5v3C61ZkP9QhrKmbfchcTyg/VnaE0tMNf/nmLpQlWuiqpg==} + engines: {node: '>=16.0.0'} + + '@smithy/service-error-classification@3.0.2': + resolution: {integrity: sha512-cu0WV2XRttItsuXlcM0kq5MKdphbMMmSd2CXF122dJ75NrFE0o7rruXFGfxAp3BKzgF/DMxX+PllIA/cj4FHMw==} + engines: {node: '>=16.0.0'} + + '@smithy/shared-ini-file-loader@3.1.2': + resolution: {integrity: sha512-tgnXrXbLMO8vo6VeuqabMw/eTzQHlLmZx0TC0TjtjJghnD0Xl4pEnJtBjTJr6XF5fHMNrt5BcczDXHJT9yNQnA==} + engines: {node: '>=16.0.0'} + + '@smithy/signature-v4@3.1.1': + resolution: {integrity: sha512-2/vlG86Sr489XX8TA/F+VDA+P04ESef04pSz0wRtlQBExcSPjqO08rvrkcas2zLnJ51i+7ukOURCkgqixBYjSQ==} + engines: {node: '>=16.0.0'} + + '@smithy/smithy-client@3.1.4': + resolution: {integrity: sha512-y6xJROGrIoitjpwXLY7P9luDHvuT9jWpAluliuSFdBymFxcl6iyQjo9U/JhYfRHFNTruqsvKOrOESVuPGEcRmQ==} + engines: {node: '>=16.0.0'} + + '@smithy/types@3.2.0': + resolution: {integrity: sha512-cKyeKAPazZRVqm7QPvcPD2jEIt2wqDPAL1KJKb0f/5I7uhollvsWZuZKLclmyP6a+Jwmr3OV3t+X0pZUUHS9BA==} + engines: {node: '>=16.0.0'} + + '@smithy/url-parser@3.0.2': + resolution: {integrity: sha512-pRiPHrgibeAr4avtXDoBHmTLtthwA4l8jKYRfZjNgp+bBPyxDMPRg2TMJaYxqbKemvrOkHu9MIBTv2RkdNfD6w==} + + '@smithy/util-base64@3.0.0': + resolution: {integrity: sha512-Kxvoh5Qtt0CDsfajiZOCpJxgtPHXOKwmM+Zy4waD43UoEMA+qPxxa98aE/7ZhdnBFZFXMOiBR5xbcaMhLtznQQ==} + engines: {node: '>=16.0.0'} + + '@smithy/util-body-length-browser@3.0.0': + resolution: {integrity: sha512-cbjJs2A1mLYmqmyVl80uoLTJhAcfzMOyPgjwAYusWKMdLeNtzmMz9YxNl3/jRLoxSS3wkqkf0jwNdtXWtyEBaQ==} + + '@smithy/util-body-length-node@3.0.0': + resolution: {integrity: sha512-Tj7pZ4bUloNUP6PzwhN7K386tmSmEET9QtQg0TgdNOnxhZvCssHji+oZTUIuzxECRfG8rdm2PMw2WCFs6eIYkA==} + engines: {node: '>=16.0.0'} + + '@smithy/util-buffer-from@2.2.0': + resolution: {integrity: sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA==} + engines: {node: '>=14.0.0'} + + '@smithy/util-buffer-from@3.0.0': + resolution: {integrity: sha512-aEOHCgq5RWFbP+UDPvPot26EJHjOC+bRgse5A8V3FSShqd5E5UN4qc7zkwsvJPPAVsf73QwYcHN1/gt/rtLwQA==} + engines: {node: '>=16.0.0'} + + '@smithy/util-config-provider@3.0.0': + resolution: {integrity: sha512-pbjk4s0fwq3Di/ANL+rCvJMKM5bzAQdE5S/6RL5NXgMExFAi6UgQMPOm5yPaIWPpr+EOXKXRonJ3FoxKf4mCJQ==} + engines: {node: '>=16.0.0'} + + '@smithy/util-defaults-mode-browser@3.0.6': + resolution: {integrity: sha512-tAgoc++Eq+KL7g55+k108pn7nAob3GLWNEMbXhZIQyBcBNaE/o3+r4AEbae0A8bWvLRvArVsjeiuhMykGa04/A==} + engines: {node: '>= 10.0.0'} + + '@smithy/util-defaults-mode-node@3.0.6': + resolution: {integrity: sha512-UNerul6/E8aiCyFTBHk+RSIZCo7m96d/N5K3FeO/wFeZP6oy5HAicLzxqa85Wjv7MkXSxSySX29L/LwTV/QMag==} + engines: {node: '>= 10.0.0'} + + '@smithy/util-endpoints@2.0.3': + resolution: {integrity: sha512-Dyi+pfLglDHSGsKSYunuUUSFM5V0tz7UDgv1Ex97yg+Xkn0Eb0rH0rcvl1n0MaJ11fac3HKDOH0DkALyQYCQag==} + engines: {node: '>=16.0.0'} + + '@smithy/util-hex-encoding@3.0.0': + resolution: {integrity: sha512-eFndh1WEK5YMUYvy3lPlVmYY/fZcQE1D8oSf41Id2vCeIkKJXPcYDCZD+4+xViI6b1XSd7tE+s5AmXzz5ilabQ==} + engines: {node: '>=16.0.0'} + + '@smithy/util-middleware@3.0.2': + resolution: {integrity: sha512-7WW5SD0XVrpfqljBYzS5rLR+EiDzl7wCVJZ9Lo6ChNFV4VYDk37Z1QI5w/LnYtU/QKnSawYoHRd7VjSyC8QRQQ==} + engines: {node: '>=16.0.0'} + + '@smithy/util-retry@3.0.2': + resolution: {integrity: sha512-HUVOb1k8p/IH6WFUjsLa+L9H1Zi/FAAB2CDOpWuffI1b2Txi6sknau8kNfC46Xrt39P1j2KDzCE1UlLa2eW5+A==} + engines: {node: '>=16.0.0'} + + '@smithy/util-stream@3.0.4': + resolution: {integrity: sha512-CcMioiaOOsEVdb09pS7ux1ij7QcQ2jE/cE1+iin1DXMeRgAEQN/47m7Xztu7KFQuQsj0A5YwB2UN45q97CqKCg==} + engines: {node: '>=16.0.0'} + + '@smithy/util-uri-escape@3.0.0': + resolution: {integrity: sha512-LqR7qYLgZTD7nWLBecUi4aqolw8Mhza9ArpNEQ881MJJIU2sE5iHCK6TdyqqzcDLy0OPe10IY4T8ctVdtynubg==} + engines: {node: '>=16.0.0'} + + '@smithy/util-utf8@2.3.0': + resolution: {integrity: sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A==} + engines: {node: '>=14.0.0'} + + '@smithy/util-utf8@3.0.0': + resolution: {integrity: sha512-rUeT12bxFnplYDe815GXbq/oixEGHfRFFtcTF3YdDi/JaENIM6aSYYLJydG83UNzLXeRI5K8abYd/8Sp/QM0kA==} + engines: {node: '>=16.0.0'} + + '@smithy/util-waiter@3.1.0': + resolution: {integrity: sha512-5OVcC5ZcmmutY208ADY/l2eB4H4DVXs+hPUo/M1spF4/YEmF9DdLkfwBvohej2dIeVJayKY7hMlD0X8j3F3/Uw==} + engines: {node: '>=16.0.0'} + + '@strapi/admin@4.25.0': + resolution: {integrity: sha512-xV3O3+SYCKS62xXAj1Sh5tQJfOFcIoiDlETn754fML5HCSsg4LM7Sb22lDVStewxq/71Lur2yE0nM0jNy2Fa5Q==} + engines: {node: '>=18.0.0 <=20.x.x', npm: '>=6.0.0'} + peerDependencies: + '@strapi/data-transfer': ^4.16.0 + '@strapi/strapi': ^4.3.4 + react: ^17.0.0 || ^18.0.0 + react-dom: ^17.0.0 || ^18.0.0 + react-router-dom: ^5.2.0 + styled-components: ^5.2.1 + + '@strapi/cloud-cli@4.25.0': + resolution: {integrity: sha512-CDXStCgNvV3F5K4Z8d9GiHuNcheGPbcv3pFk/eZZW3YtsCLXvCbFG+3vB9Tah5ROzjq38X8Fa5VxCfXOvzAMwg==} + engines: {node: '>=18.0.0 <=20.x.x', npm: '>=6.0.0'} + hasBin: true + + '@strapi/content-releases@4.25.0': + resolution: {integrity: sha512-bHNuI+LoRmlW6dfQ24nRZh2g/sZ1XoXLtZpOzhTFQwWlWAY6DlpgtMDYeFwYaAOo/PSxGSZD9IFDaCfImRA9Nw==} + engines: {node: '>=16.0.0 <=20.x.x', npm: '>=6.0.0'} + peerDependencies: + '@strapi/admin': ^4.19.0 + '@strapi/strapi': ^4.15.1 + react: ^17.0.0 || ^18.0.0 + react-dom: ^17.0.0 || ^18.0.0 + react-router-dom: 5.3.4 + styled-components: 5.3.3 + + '@strapi/data-transfer@4.25.0': + resolution: {integrity: sha512-a4cmk6yqgaTs9kRjjklBTEdYV8LX/PpOG5PQBTdatRVGXCHwbTIifeYFpl4armCyBDeZFZE3cNWjFghwMO0t7A==} + engines: {node: '>=18.0.0 <=20.x.x', npm: '>=6.0.0'} + peerDependencies: + '@strapi/strapi': ^4.14.4 + + '@strapi/database@4.25.0': + resolution: {integrity: sha512-xsOy02B7A67go57hCGZSKhX5lSx6gU04oWJYFfeRg11krO9LZvB6hiXFCifB1xnDWtX985RCDvBrIPhscGH05A==} + engines: {node: '>=18.0.0 <=20.x.x', npm: '>=6.0.0'} + + '@strapi/design-system@1.19.0': + resolution: {integrity: sha512-kEQNaRztIcr6I5Zh6mxtE/Nmkk1mylCS5s56ySKDdqOjWZw2BCbS72/J9k6r1RF1TLIDSXJN9r5dHR0ZKtWvBQ==} + peerDependencies: + '@strapi/icons': ^1.5.0 + react: ^17.0.0 || ^18.0.0 + react-dom: ^17.0.0 || ^18.0.0 + react-router-dom: ^5.2.0 + styled-components: ^5.2.1 + + '@strapi/generate-new@4.25.0': + resolution: {integrity: sha512-LUH9ssT56KNqt7IbRf/L2ZN9Qiif9/4wn3LU3CU1J3ecL+GMHGSDDf291xQcynIzLZAwDDcMHTyeSp813I4Q2g==} + engines: {node: '>=18.0.0 <=20.x.x', npm: '>=6.0.0'} + + '@strapi/generators@4.25.0': + resolution: {integrity: sha512-01I2qEguDr5vWninACr7H2rRcospplBXUXdEanS6D/3/vB+MbDYb/fWH2bC3Yeh/3zsQlrcxzVQCVCJ9j0xNOA==} + engines: {node: '>=18.0.0 <=20.x.x', npm: '>=6.0.0'} + + '@strapi/helper-plugin@4.25.0': + resolution: {integrity: sha512-mR+M5E6DR7uJ9z8gIgkp/3Gq5HQyjwzti29mQrd70ux46FfLN5fkwH1Pb3NRBWBSW7PQOczSeCJtnKkTZZn3pQ==} + engines: {node: '>=18.0.0 <=20.x.x', npm: '>=6.0.0'} + peerDependencies: + '@strapi/design-system': 1.19.0 + '@strapi/icons': 1.19.0 + react: ^17.0.0 || ^18.0.0 + react-dom: ^17.0.0 || ^18.0.0 + react-router-dom: ^5.2.0 + styled-components: ^5.2.1 + + '@strapi/icons@1.19.0': + resolution: {integrity: sha512-jcS7n3Ps+73fYGadxdaD6owazoDJKN1fHSG9dp8RX4RqkP6BfoHOX5j3aodVLmDX57Ksg6gy5JXf9xEml7nMpQ==} + peerDependencies: + react: ^17.0.0 || ^18.0.0 + react-dom: ^17.0.0 || ^18.0.0 + + '@strapi/logger@4.25.0': + resolution: {integrity: sha512-zBqm/9qCnJhfJOu9GwXMh0ytnXbVLgW7fHIHUESgFSkYBW0C3UO3ih6PhefVgq4NyrKQMH/pTr3msWRSzdRWNg==} + engines: {node: '>=18.0.0 <=20.x.x', npm: '>=6.0.0'} + + '@strapi/pack-up@4.23.0': + resolution: {integrity: sha512-hiSqUEEzks2JDai6bfvtvPHYaPhI6UnSifx9ZqBdC9Q551BYm1xt+1K7HJVeW0IPI4zLckZvCcGPHh/NeYyTPw==} + engines: {node: '>=18.0.0 <=20.x.x', npm: '>=6.0.0'} + hasBin: true + + '@strapi/permissions@4.25.0': + resolution: {integrity: sha512-K3md9MDUa4E6WajD+bt3RGZMvsjbpymEzwWNF0HAPJxXtwZX+rWYj4BS2DGlQi/t+vDl1jYr3XP/5re9V72tPw==} + engines: {node: '>=18.0.0 <=20.x.x', npm: '>=6.0.0'} + + '@strapi/plugin-content-manager@4.25.0': + resolution: {integrity: sha512-VnSwmQ0aPEOZk9jDJTe30hOJqUJ6sx1DyRA4ulDgrNhVImbJ0tKM/or3rFR6SpfxWXcQyNgVvNRA2E6IEEf2WA==} + engines: {node: '>=18.0.0 <=20.x.x', npm: '>=6.0.0'} + + '@strapi/plugin-content-type-builder@4.25.0': + resolution: {integrity: sha512-CO0YYxPRiNnx0EObmXoBAoNLg/4DJihTTsEYDSw4cfGHyFwYFJ0hUM/ubbnBML9g8n0oCDmc19P1jp+Lga1QWg==} + engines: {node: '>=18.0.0 <=20.x.x', npm: '>=6.0.0'} + peerDependencies: + '@strapi/strapi': ^4.0.0 + react: ^17.0.0 || ^18.0.0 + react-dom: ^17.0.0 || ^18.0.0 + react-router-dom: ^5.2.0 + styled-components: ^5.2.1 + + '@strapi/plugin-email@4.25.0': + resolution: {integrity: sha512-j4nB4Xl5kEhszwXOQzROcihhFgLbwRJ/ANkhtAYi4EVESVDiBQ0fPfR7VJwtVxwX5yH3/XUlu5az8WmcdIyQKw==} + engines: {node: '>=18.0.0 <=20.x.x', npm: '>=6.0.0'} + peerDependencies: + koa: 2.13.4 + react: ^17.0.0 || ^18.0.0 + react-dom: ^17.0.0 || ^18.0.0 + react-router-dom: ^5.2.0 + styled-components: ^5.2.1 + + '@strapi/plugin-i18n@4.25.0': + resolution: {integrity: sha512-CywTsYJMIC/Bubam5mTCNdScwYGGjpZOqwm8EwEmSx5dONP1WdSoCilGdhNtcKIvmOQY1zkFc54l/S7ncxkXVw==} + engines: {node: '>=18.0.0 <=20.x.x', npm: '>=6.0.0'} + peerDependencies: + '@strapi/strapi': ^4.0.0 + react: ^17.0.0 || ^18.0.0 + react-dom: ^17.0.0 || ^18.0.0 + react-router-dom: ^5.2.0 + styled-components: ^5.2.1 + + '@strapi/plugin-upload@4.25.0': + resolution: {integrity: sha512-ZZOaw5yELX2duJc3iF94hq6lNPw92/huQGtkj6E0cR2GX8KZYCJg2hVtCctIpuYE6cLxNPzuHfy4WCa/oUOQ6g==} + engines: {node: '>=18.0.0 <=20.x.x', npm: '>=6.0.0'} + peerDependencies: + '@strapi/strapi': ^4.0.0 + react: ^17.0.0 || ^18.0.0 + react-dom: ^17.0.0 || ^18.0.0 + react-router-dom: ^5.2.0 + styled-components: ^5.2.1 + + '@strapi/plugin-users-permissions@4.25.0': + resolution: {integrity: sha512-4I20YTZHZjEtoFDVzVdO3JWpJddrYrg8EM0I+KEKJBivP+kWH06K02mN0jlAyH6hirreAQ3MA65oWtv0FokStw==} + engines: {node: '>=18.0.0 <=20.x.x', npm: '>=6.0.0'} + peerDependencies: + '@strapi/strapi': ^4.0.0 + react: ^17.0.0 || ^18.0.0 + react-dom: ^17.0.0 || ^18.0.0 + react-router-dom: ^5.2.0 + styled-components: ^5.2.1 + + '@strapi/provider-audit-logs-local@4.25.0': + resolution: {integrity: sha512-J5C8geJ/+l7p3wAjZA73blbkc0XXerud9zlsg1GYB4+WIPiK8T5VUfEtKFybJdo2FiDHZha6wVzydWk3ZGDw9w==} + engines: {node: '>=18.0.0 <=20.x.x', npm: '>=6.0.0'} + + '@strapi/provider-email-sendgrid@4.25.0': + resolution: {integrity: sha512-hc03EVU99bGkJ1Ea+2sbExNkCWCItc4ZMPU/QP4O0rAAiNo4KlUUvvSvSttUW/JkXYouFSvP8wNoJwAHjr3CJw==} + engines: {node: '>=18.0.0 <=20.x.x', npm: '>=6.0.0'} + + '@strapi/provider-email-sendmail@4.25.0': + resolution: {integrity: sha512-xScb1IsuQBkh65CunGFzLxdqenNo0ZMAEBI0Z95EAoXvHavPklAQUzd/LekVz9hUaUxQeV5B8bBSPSX0OGMofg==} + engines: {node: '>=18.0.0 <=20.x.x', npm: '>=6.0.0'} + + '@strapi/provider-upload-cloudinary@4.25.0': + resolution: {integrity: sha512-3y/G7GGMvJIfDTBtm/zst1AN22c5/WgacO5nSJU/01u9j9znRipjJJaySkco6BDeHKxbxgZ64xLdQgMAejeIFA==} + engines: {node: '>=18.0.0 <=20.x.x', npm: '>=6.0.0'} + + '@strapi/provider-upload-local@4.25.0': + resolution: {integrity: sha512-NUt1VnN6B9AULWI+4lsBtd1+Zmw9u21CkPF5JFPvd+v+3a6bkHOZ38H2IlFi48v30uU5ZpB7LgKpR54K8sqaCg==} + engines: {node: '>=18.0.0 <=20.x.x', npm: '>=6.0.0'} + + '@strapi/strapi@4.25.0': + resolution: {integrity: sha512-9tlKpP70nJzyYzXbMLTZ/sCjlA8xi15H4ZJweEFQvkkEkce8NiGzFNcKMLEEarfgLS4HybLC3wh9fmsFbsz4Og==} + engines: {node: '>=18.0.0 <=20.x.x', npm: '>=6.0.0'} + hasBin: true + + '@strapi/types@4.25.0': + resolution: {integrity: sha512-moWOcm1fLQTYE4KErytnUifiN3gBj41ZZBvkbS2mJ2HYnuyau04q2upZQ9UA3uD/Nz/TGIJrtH6OXp33XPqadA==} + engines: {node: '>=18.0.0 <=20.x.x', npm: '>=6.0.0'} + + '@strapi/typescript-utils@4.25.0': + resolution: {integrity: sha512-5PrGGDIcpIUpgTFi9/d7mIBk+2aJQ1sqrOeQetUs6IU9jEa9qfyhCQ+xXWHlqea/RUKe9/8uv1HEkm+cDsbzXQ==} + engines: {node: '>=18.0.0 <=20.x.x', npm: '>=6.0.0'} + + '@strapi/ui-primitives@1.19.0': + resolution: {integrity: sha512-dEpmI0PpSH6VWuP/bBvRKI5lUpazdDAcxOpukoq2QDwUFbuZWywgW7a6O5nMnD4bLQtyNeYwd52J8Jqr9pNoQA==} + peerDependencies: + react: ^17.0.0 || ^18.0.0 + react-dom: ^17.0.0 || ^18.0.0 + + '@strapi/utils@4.25.0': + resolution: {integrity: sha512-CXhdbtkL+gXKJxxd64AsTrUvjqcP/J12szt03/mmIzCxs6GsRSsQkcUNfnfvD5AJ2VNzA5xh00iD9SFokWwpdA==} + engines: {node: '>=18.0.0 <=20.x.x', npm: '>=6.0.0'} + + '@swc/core-darwin-arm64@1.6.1': + resolution: {integrity: sha512-u6GdwOXsOEdNAdSI6nWq6G2BQw5HiSNIZVcBaH1iSvBnxZvWbnIKyDiZKaYnDwTLHLzig2GuUjjE2NaCJPy4jg==} + engines: {node: '>=10'} + cpu: [arm64] + os: [darwin] + + '@swc/core-darwin-x64@1.6.1': + resolution: {integrity: sha512-/tXwQibkDNLVbAtr7PUQI0iQjoB708fjhDDDfJ6WILSBVZ3+qs/LHjJ7jHwumEYxVq1XA7Fv2Q7SE/ZSQoWHcQ==} + engines: {node: '>=10'} + cpu: [x64] + os: [darwin] + + '@swc/core-linux-arm-gnueabihf@1.6.1': + resolution: {integrity: sha512-aDgipxhJTms8iH78emHVutFR2c16LNhO+NTRCdYi+X4PyIn58/DyYTH6VDZ0AeEcS5f132ZFldU5AEgExwihXA==} + engines: {node: '>=10'} + cpu: [arm] + os: [linux] + + '@swc/core-linux-arm64-gnu@1.6.1': + resolution: {integrity: sha512-XkJ+eO4zUKG5g458RyhmKPyBGxI0FwfWFgpfIj5eDybxYJ6s4HBT5MoxyBLorB5kMlZ0XoY/usUMobPVY3nL0g==} + engines: {node: '>=10'} + cpu: [arm64] + os: [linux] + + '@swc/core-linux-arm64-musl@1.6.1': + resolution: {integrity: sha512-dr6YbLBg/SsNxs1hDqJhxdcrS8dGMlOXJwXIrUvACiA8jAd6S5BxYCaqsCefLYXtaOmu0bbx1FB/evfodqB70Q==} + engines: {node: '>=10'} + cpu: [arm64] + os: [linux] + + '@swc/core-linux-x64-gnu@1.6.1': + resolution: {integrity: sha512-A0b/3V+yFy4LXh3O9umIE7LXPC7NBWdjl6AQYqymSMcMu0EOb1/iygA6s6uWhz9y3e172Hpb9b/CGsuD8Px/bg==} + engines: {node: '>=10'} + cpu: [x64] + os: [linux] + + '@swc/core-linux-x64-musl@1.6.1': + resolution: {integrity: sha512-5dJjlzZXhC87nZZZWbpiDP8kBIO0ibis893F/rtPIQBI5poH+iJuA32EU3wN4/WFHeK4et8z6SGSVghPtWyk4g==} + engines: {node: '>=10'} + cpu: [x64] + os: [linux] + + '@swc/core-win32-arm64-msvc@1.6.1': + resolution: {integrity: sha512-HBi1ZlwvfcUibLtT3g/lP57FaDPC799AD6InolB2KSgkqyBbZJ9wAXM8/CcH67GLIP0tZ7FqblrJTzGXxetTJQ==} + engines: {node: '>=10'} + cpu: [arm64] + os: [win32] + + '@swc/core-win32-ia32-msvc@1.6.1': + resolution: {integrity: sha512-AKqHohlWERclexar5y6ux4sQ8yaMejEXNxeKXm7xPhXrp13/1p4/I3E5bPVX/jMnvpm4HpcKSP0ee2WsqmhhPw==} + engines: {node: '>=10'} + cpu: [ia32] + os: [win32] + + '@swc/core-win32-x64-msvc@1.6.1': + resolution: {integrity: sha512-0dLdTLd+ONve8kgC5T6VQ2Y5G+OZ7y0ujjapnK66wpvCBM6BKYGdT/OKhZKZydrC5gUKaxFN6Y5oOt9JOFUrOQ==} + engines: {node: '>=10'} + cpu: [x64] + os: [win32] + + '@swc/core@1.6.1': + resolution: {integrity: sha512-Yz5uj5hNZpS5brLtBvKY0L4s2tBAbQ4TjmW8xF1EC3YLFxQRrUjMP49Zm1kp/KYyYvTkSaG48Ffj2YWLu9nChw==} + engines: {node: '>=10'} + peerDependencies: + '@swc/helpers': '*' + peerDependenciesMeta: + '@swc/helpers': + optional: true + + '@swc/counter@0.1.3': + resolution: {integrity: sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==} + + '@swc/helpers@0.5.11': + resolution: {integrity: sha512-YNlnKRWF2sVojTpIyzwou9XoTNbzbzONwRhOoniEioF1AtaitTvVZblaQRrAzChWQ1bLYyYSWzM18y4WwgzJ+A==} + + '@swc/types@0.1.8': + resolution: {integrity: sha512-RNFA3+7OJFNYY78x0FYwi1Ow+iF1eF5WvmfY1nXPOEH4R2p/D4Cr1vzje7dNAI2aLFqpv8Wyz4oKSWqIZArpQA==} + + '@szmarczak/http-timer@4.0.6': + resolution: {integrity: sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w==} + engines: {node: '>=10'} + + '@testing-library/dom@8.19.0': + resolution: {integrity: sha512-6YWYPPpxG3e/xOo6HIWwB/58HukkwIVTOaZ0VwdMVjhRUX/01E4FtQbck9GazOOj7MXHc5RBzMrU86iBJHbI+A==} + engines: {node: '>=12'} + + '@testing-library/react-hooks@8.0.1': + resolution: {integrity: sha512-Aqhl2IVmLt8IovEVarNDFuJDVWVvhnr9/GCU6UUnrYXwgDFF9h2L2o2P9KBni1AST5sT6riAyoukFLyjQUgD/g==} + engines: {node: '>=12'} + peerDependencies: + '@types/react': ^16.9.0 || ^17.0.0 + react: ^16.9.0 || ^17.0.0 + react-dom: ^16.9.0 || ^17.0.0 + react-test-renderer: ^16.9.0 || ^17.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + react-dom: + optional: true + react-test-renderer: + optional: true + + '@testing-library/react@12.1.4': + resolution: {integrity: sha512-jiPKOm7vyUw311Hn/HlNQ9P8/lHNtArAx0PisXyFixDDvfl8DbD6EUdbshK5eqauvBSvzZd19itqQ9j3nferJA==} + engines: {node: '>=12'} + peerDependencies: + react: '*' + react-dom: '*' + + '@testing-library/user-event@14.4.3': + resolution: {integrity: sha512-kCUc5MEwaEMakkO5x7aoD+DLi02ehmEM2QCGWvNqAS1dV/fAvORWEjnjsEIvml59M7Y5kCkWN6fCCyPOe8OL6Q==} + engines: {node: '>=12', npm: '>=6'} + peerDependencies: + '@testing-library/dom': '>=7.21.4' + + '@types/argparse@1.0.38': + resolution: {integrity: sha512-ebDJ9b0e702Yr7pWgB0jzm+CX4Srzz8RcXtLJDJB+BSccqMa36uyH/zUsSYao5+BD1ytv3k3rPYCq4mAE1hsXA==} + + '@types/aria-query@4.2.2': + resolution: {integrity: sha512-HnYpAE1Y6kRyKM/XkEuiRQhTHvkzMBurTHnpFLYLBGPIylZNPs9jJcuOOYWxPLJCSEtmZT0Y8rHDokKN7rRTig==} + + '@types/body-parser@1.19.5': + resolution: {integrity: sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==} + + '@types/cacheable-request@6.0.3': + resolution: {integrity: sha512-IQ3EbTzGxIigb1I3qPZc1rWJnH0BmSKv5QYTalEwweFvyBDLSAe24zP0le/hyi7ecGfZVlIVAg4BZqb8WBwKqw==} + + '@types/connect@3.4.38': + resolution: {integrity: sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==} + + '@types/cookie@0.4.1': + resolution: {integrity: sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q==} + + '@types/debug@4.1.12': + resolution: {integrity: sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==} + + '@types/eslint-scope@3.7.7': + resolution: {integrity: sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==} + + '@types/eslint@8.56.10': + resolution: {integrity: sha512-Shavhk87gCtY2fhXDctcfS3e6FdxWkCx1iUZ9eEUbh7rTqlZT0/IzOkCOVt0fCjcFuZ9FPYfuezTBImfHCDBGQ==} + + '@types/estree@1.0.5': + resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==} + + '@types/express-serve-static-core@4.19.5': + resolution: {integrity: sha512-y6W03tvrACO72aijJ5uF02FRq5cgDR9lUxddQ8vyF+GvmjJQqbzDcJngEjURc+ZsG31VI3hODNZJ2URj86pzmg==} + + '@types/express@4.17.21': + resolution: {integrity: sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==} + + '@types/fined@1.1.5': + resolution: {integrity: sha512-2N93vadEGDFhASTIRbizbl4bNqpMOId5zZfj6hHqYZfEzEfO9onnU4Im8xvzo8uudySDveDHBOOSlTWf38ErfQ==} + + '@types/formidable@1.2.8': + resolution: {integrity: sha512-6psvrUy5VDYb+yaPJReF1WrRsz+FBwyJutK9Twz1Efa27tm07bARNIkK2B8ZPWq80dXqpKfrxTO96xrtPp+AuA==} + + '@types/glob@7.2.0': + resolution: {integrity: sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==} + + '@types/hoist-non-react-statics@3.3.5': + resolution: {integrity: sha512-SbcrWzkKBw2cdwRTwQAswfpB9g9LJWfjtUeW/jvNwbhC8cpmmNYVePa+ncbUe0rGTQ7G3Ff6mYUN2VMfLVr+Sg==} + + '@types/html-minifier-terser@6.1.0': + resolution: {integrity: sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg==} + + '@types/http-cache-semantics@4.0.4': + resolution: {integrity: sha512-1m0bIFVc7eJWyve9S0RnuRgcQqF/Xd5QsUZAZeQFr1Q3/p9JWoQQEqmVy+DPTNpGXwhgIetAoYF8JSc33q29QA==} + + '@types/http-errors@2.0.4': + resolution: {integrity: sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==} + + '@types/inquirer@6.5.0': + resolution: {integrity: sha512-rjaYQ9b9y/VFGOpqBEXRavc3jh0a+e6evAbI31tMda8VlPaSy0AZJfXsvmIe3wklc7W6C3zCSfleuMXR7NOyXw==} + + '@types/interpret@1.1.3': + resolution: {integrity: sha512-uBaBhj/BhilG58r64mtDb/BEdH51HIQLgP5bmWzc5qCtFMja8dCk/IOJmk36j0lbi9QHwI6sbtUNGuqXdKCAtQ==} + + '@types/is-hotkey@0.1.10': + resolution: {integrity: sha512-RvC8KMw5BCac1NvRRyaHgMMEtBaZ6wh0pyPTBu7izn4Sj/AX9Y4aXU5c7rX8PnM/knsuUpC1IeoBkANtxBypsQ==} + + '@types/js-levenshtein@1.1.3': + resolution: {integrity: sha512-jd+Q+sD20Qfu9e2aEXogiO3vpOC1PYJOUdyN9gvs4Qrvkg4wF43L5OhqrPeokdv8TL0/mXoYfpkcoGZMNN2pkQ==} + + '@types/json-schema@7.0.15': + resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} + + '@types/jsonwebtoken@9.0.6': + resolution: {integrity: sha512-/5hndP5dCjloafCXns6SZyESp3Ldq7YjH3zwzwczYnjxIT0Fqzk5ROSYVGfFyczIue7IUEj8hkvLbPoLQ18vQw==} + + '@types/keyv@3.1.4': + resolution: {integrity: sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==} + + '@types/liftoff@2.5.1': + resolution: {integrity: sha512-nB3R6Q9CZcM07JgiTK6ibxqrG1reiHE+UX7em/W1DKwVBxDlfKWOefQjk4jubY5xX+GDxVsWR2KD1SenPby8ow==} + + '@types/lodash@4.17.5': + resolution: {integrity: sha512-MBIOHVZqVqgfro1euRDWX7OO0fBVUUMrN6Pwm8LQsz8cWhEpihlvR70ENj3f40j58TNxZaWv2ndSkInykNBBJw==} + + '@types/mime@1.3.5': + resolution: {integrity: sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==} + + '@types/minimatch@5.1.2': + resolution: {integrity: sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==} + + '@types/ms@0.7.34': + resolution: {integrity: sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==} + + '@types/node@20.14.5': + resolution: {integrity: sha512-aoRR+fJkZT2l0aGOJhuA8frnCSoNX6W7U2mpNq63+BxBIj5BQFt8rHy627kijCmm63ijdSdwvGgpUsU6MBsZZA==} + + '@types/normalize-package-data@2.4.4': + resolution: {integrity: sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==} + + '@types/parse-json@4.0.2': + resolution: {integrity: sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==} + + '@types/prop-types@15.7.12': + resolution: {integrity: sha512-5zvhXYtRNRluoE/jAp4GVsSduVUzNWKkOZrCDBWYtE7biZywwdC2AcEzg+cSMLFRfVgeAFqpfNabiPjxFddV1Q==} + + '@types/qs@6.9.15': + resolution: {integrity: sha512-uXHQKES6DQKKCLh441Xv/dwxOq1TVS3JPUMlEqoEglvlhR6Mxnlew/Xq/LRVHpLyk7iK3zODe1qYHIMltO7XGg==} + + '@types/range-parser@1.2.7': + resolution: {integrity: sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==} + + '@types/react-dom@18.3.0': + resolution: {integrity: sha512-EhwApuTmMBmXuFOikhQLIBUn6uFg81SwLMOAUgodJF14SOBOCMdU04gDoYi0WOJJHD144TL32z4yDqCW3dnkQg==} + + '@types/react-transition-group@4.4.10': + resolution: {integrity: sha512-hT/+s0VQs2ojCX823m60m5f0sL5idt9SO6Tj6Dg+rdphGPIeJbJ6CxvBYkgkGKrYeDjvIpKTR38UzmtHJOGW3Q==} + + '@types/react@18.3.3': + resolution: {integrity: sha512-hti/R0pS0q1/xx+TsI73XIqk26eBsISZ2R0wUijXIngRK9R/e7Xw/cXVxQK7R5JjW+SV4zGcn5hXjudkN/pLIw==} + + '@types/responselike@1.0.3': + resolution: {integrity: sha512-H/+L+UkTV33uf49PH5pCAUBVPNj2nDBXTN+qS1dOwyyg24l3CcicicCA7ca+HMvJBZcFgl5r8e+RR6elsb4Lyw==} + + '@types/send@0.17.4': + resolution: {integrity: sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==} + + '@types/serve-static@1.15.7': + resolution: {integrity: sha512-W8Ym+h8nhuRwaKPaDw34QUkwsGi6Rc4yYqvKFo5rm2FUEhCFbzVWrxXUxuKK8TASjWsysJY0nsmNCGhCOIsrOw==} + + '@types/set-cookie-parser@2.4.9': + resolution: {integrity: sha512-bCorlULvl0xTdjj4BPUHX4cqs9I+go2TfW/7Do1nnFYWS0CPP429Qr1AY42kiFhCwLpvAkWFr1XIBHd8j6/MCQ==} + + '@types/through@0.0.33': + resolution: {integrity: sha512-HsJ+z3QuETzP3cswwtzt2vEIiHBk/dCcHGhbmG5X3ecnwFD/lPrMpliGXxSCg03L9AhrdwA4Oz/qfspkDW+xGQ==} + + '@types/triple-beam@1.3.5': + resolution: {integrity: sha512-6WaYesThRMCl19iryMYP7/x2OVgCtbIVflDGFpWnb9irXI3UjYE4AzmYuiUKY1AJstGijoY+MgUszMgRxIYTYw==} + + '@types/use-sync-external-store@0.0.3': + resolution: {integrity: sha512-EwmlvuaxPNej9+T4v5AuBPJa2x2UOJVdjCtDHgcDqitUeOtjnJKJ+apYjVcAoBEMjKW1VVFGZLUb5+qqa09XFA==} + + '@ucast/core@1.10.2': + resolution: {integrity: sha512-ons5CwXZ/51wrUPfoduC+cO7AS1/wRb0ybpQJ9RrssossDxVy4t49QxWoWgfBDvVKsz9VXzBk9z0wqTdZ+Cq8g==} + + '@ucast/js@3.0.4': + resolution: {integrity: sha512-TgG1aIaCMdcaEyckOZKQozn1hazE0w90SVdlpIJ/er8xVumE11gYAtSbw/LBeUnA4fFnFWTcw3t6reqseeH/4Q==} + + '@ucast/mongo2js@1.3.4': + resolution: {integrity: sha512-ahazOr1HtelA5AC1KZ9x0UwPMqqimvfmtSm/PRRSeKKeE5G2SCqTgwiNzO7i9jS8zA3dzXpKVPpXMkcYLnyItA==} + + '@ucast/mongo@2.4.3': + resolution: {integrity: sha512-XcI8LclrHWP83H+7H2anGCEeDq0n+12FU2mXCTz6/Tva9/9ddK/iacvvhCyW6cijAAOILmt0tWplRyRhVyZLsA==} + + '@uiw/codemirror-extensions-basic-setup@4.22.2': + resolution: {integrity: sha512-zcHGkldLFN3cGoI5XdOGAkeW24yaAgrDEYoyPyWHODmPiNwybQQoZGnH3qUdzZwUaXtAcLWoAeOPzfNRW2yGww==} + peerDependencies: + '@codemirror/autocomplete': '>=6.0.0' + '@codemirror/commands': '>=6.0.0' + '@codemirror/language': '>=6.0.0' + '@codemirror/lint': '>=6.0.0' + '@codemirror/search': '>=6.0.0' + '@codemirror/state': '>=6.0.0' + '@codemirror/view': '>=6.0.0' + + '@uiw/react-codemirror@4.22.2': + resolution: {integrity: sha512-okCSl+WJG63gRx8Fdz7v0C6RakBQnbb3pHhuzIgDB+fwhipgFodSnu2n9oOsQesJ5YQ7mSOcKMgX0JEsu4nnfQ==} + peerDependencies: + '@babel/runtime': '>=7.11.0' + '@codemirror/state': '>=6.0.0' + '@codemirror/theme-one-dark': '>=6.0.0' + '@codemirror/view': '>=6.0.0' + codemirror: '>=6.0.0' + react: '>=16.8.0' + react-dom: '>=16.8.0' + + '@vitejs/plugin-react-swc@3.5.0': + resolution: {integrity: sha512-1PrOvAaDpqlCV+Up8RkAh9qaiUjoDUcjtttyhXDKw53XA6Ve16SOp6cCOpRs8Dj8DqUQs6eTW5YkLcLJjrXAig==} + peerDependencies: + vite: ^4 || ^5 + + '@webassemblyjs/ast@1.12.1': + resolution: {integrity: sha512-EKfMUOPRRUTy5UII4qJDGPpqfwjOmZ5jeGFwid9mnoqIFK+e0vqoi1qH56JpmZSzEL53jKnNzScdmftJyG5xWg==} + + '@webassemblyjs/floating-point-hex-parser@1.11.6': + resolution: {integrity: sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==} + + '@webassemblyjs/helper-api-error@1.11.6': + resolution: {integrity: sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==} + + '@webassemblyjs/helper-buffer@1.12.1': + resolution: {integrity: sha512-nzJwQw99DNDKr9BVCOZcLuJJUlqkJh+kVzVl6Fmq/tI5ZtEyWT1KZMyOXltXLZJmDtvLCDgwsyrkohEtopTXCw==} + + '@webassemblyjs/helper-numbers@1.11.6': + resolution: {integrity: sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==} + + '@webassemblyjs/helper-wasm-bytecode@1.11.6': + resolution: {integrity: sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==} + + '@webassemblyjs/helper-wasm-section@1.12.1': + resolution: {integrity: sha512-Jif4vfB6FJlUlSbgEMHUyk1j234GTNG9dBJ4XJdOySoj518Xj0oGsNi59cUQF4RRMS9ouBUxDDdyBVfPTypa5g==} + + '@webassemblyjs/ieee754@1.11.6': + resolution: {integrity: sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==} + + '@webassemblyjs/leb128@1.11.6': + resolution: {integrity: sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==} + + '@webassemblyjs/utf8@1.11.6': + resolution: {integrity: sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==} + + '@webassemblyjs/wasm-edit@1.12.1': + resolution: {integrity: sha512-1DuwbVvADvS5mGnXbE+c9NfA8QRcZ6iKquqjjmR10k6o+zzsRVesil54DKexiowcFCPdr/Q0qaMgB01+SQ1u6g==} + + '@webassemblyjs/wasm-gen@1.12.1': + resolution: {integrity: sha512-TDq4Ojh9fcohAw6OIMXqiIcTq5KUXTGRkVxbSo1hQnSy6lAM5GSdfwWeSxpAo0YzgsgF182E/U0mDNhuA0tW7w==} + + '@webassemblyjs/wasm-opt@1.12.1': + resolution: {integrity: sha512-Jg99j/2gG2iaz3hijw857AVYekZe2SAskcqlWIZXjji5WStnOpVoat3gQfT/Q5tb2djnCjBtMocY/Su1GfxPBg==} + + '@webassemblyjs/wasm-parser@1.12.1': + resolution: {integrity: sha512-xikIi7c2FHXysxXe3COrVUPSheuBtpcfhbpFj4gmu7KRLYOzANztwUU0IbsqvMqzuNK2+glRGWCEqZo1WCLyAQ==} + + '@webassemblyjs/wast-printer@1.12.1': + resolution: {integrity: sha512-+X4WAlOisVWQMikjbcvY2e0rwPsKQ9F688lksZhBcPycBBuii3O7m8FACbDMWDojpAqvjIncrG8J0XHKyQfVeA==} + + '@xmldom/xmldom@0.8.10': + resolution: {integrity: sha512-2WALfTl4xo2SkGCYRt6rDTFfk9R1czmBvUQy12gK2KuRKIpWEhcbbzy8EZXtz/jkRqHX8bFEc6FC1HjX4TUWYw==} + engines: {node: '>=10.0.0'} + + '@xtuc/ieee754@1.2.0': + resolution: {integrity: sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==} + + '@xtuc/long@4.2.2': + resolution: {integrity: sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==} + + '@zxing/text-encoding@0.9.0': + resolution: {integrity: sha512-U/4aVJ2mxI0aDNI8Uq0wEhMgY+u4CNtEb0om3+y3+niDAsoTCOB33UF0sxpzqzdqXLqmvc+vZyAt4O8pPdfkwA==} + + abbrev@1.1.1: + resolution: {integrity: sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==} + + accepts@1.3.8: + resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==} + engines: {node: '>= 0.6'} + + acorn-import-attributes@1.9.5: + resolution: {integrity: sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ==} + peerDependencies: + acorn: ^8 + + acorn-walk@8.3.3: + resolution: {integrity: sha512-MxXdReSRhGO7VlFe1bRG/oI7/mdLV9B9JJT0N8vZOhF7gFRR5l3M8W9G8JxmKV+JC5mGqJ0QvqfSOLsCPa4nUw==} + engines: {node: '>=0.4.0'} + + acorn@8.12.0: + resolution: {integrity: sha512-RTvkC4w+KNXrM39/lWCUaG0IbRkWdCv7W/IOW9oU6SawyxulvkQy5HQPVTKxEjczcUvapcrw3cFx/60VN/NRNw==} + engines: {node: '>=0.4.0'} + hasBin: true + + addressparser@1.0.1: + resolution: {integrity: sha512-aQX7AISOMM7HFE0iZ3+YnD07oIeJqWGVnJ+ZIKaBZAk03ftmVYVqsGas/rbXKR21n4D/hKCSHypvcyOkds/xzg==} + + agent-base@6.0.2: + resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} + engines: {node: '>= 6.0.0'} + + aggregate-error@3.1.0: + resolution: {integrity: sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==} + engines: {node: '>=8'} + + ajv-draft-04@1.0.0: + resolution: {integrity: sha512-mv00Te6nmYbRp5DCwclxtt7yV/joXJPGS7nM+97GdxvuttCOfgI3K4U25zboyeX0O+myI8ERluxQe5wljMmVIw==} + peerDependencies: + ajv: ^8.5.0 + peerDependenciesMeta: + ajv: + optional: true + + ajv-formats@2.1.1: + resolution: {integrity: sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==} + peerDependencies: + ajv: ^8.0.0 + peerDependenciesMeta: + ajv: + optional: true + + ajv-formats@3.0.1: + resolution: {integrity: sha512-8iUql50EUR+uUcdRQ3HDqa6EVyo3docL8g5WJ3FNcWmu62IbkGUue/pEyLBW8VGKKucTPgqeks4fIU1DA4yowQ==} + peerDependencies: + ajv: ^8.0.0 + peerDependenciesMeta: + ajv: + optional: true + + ajv-keywords@3.5.2: + resolution: {integrity: sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==} + peerDependencies: + ajv: ^6.9.1 + + ajv-keywords@5.1.0: + resolution: {integrity: sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==} + peerDependencies: + ajv: ^8.8.2 + + ajv@6.12.6: + resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} + + ajv@8.13.0: + resolution: {integrity: sha512-PRA911Blj99jR5RMeTunVbNXMF6Lp4vZXnk5GQjcnUWUTsrXtekg/pnmFFI2u/I36Y/2bITGS30GZCXei6uNkA==} + + ajv@8.16.0: + resolution: {integrity: sha512-F0twR8U1ZU67JIEtekUcLkXkoO5mMMmgGD8sK/xUFzJ805jxHQl92hImFAqqXMyMYjSPOyUPAwHYhB72g5sTXw==} + + ansi-align@3.0.1: + resolution: {integrity: sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==} + + ansi-escapes@4.3.2: + resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} + engines: {node: '>=8'} + + ansi-html-community@0.0.8: + resolution: {integrity: sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==} + engines: {'0': node >= 0.8.0} + hasBin: true + + ansi-regex@2.1.1: + resolution: {integrity: sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==} + engines: {node: '>=0.10.0'} + + ansi-regex@4.1.1: + resolution: {integrity: sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==} + engines: {node: '>=6'} + + ansi-regex@5.0.1: + resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} + engines: {node: '>=8'} + + ansi-styles@2.2.1: + resolution: {integrity: sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==} + engines: {node: '>=0.10.0'} + + ansi-styles@3.2.1: + resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} + engines: {node: '>=4'} + + ansi-styles@4.3.0: + resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} + engines: {node: '>=8'} + + ansi-styles@5.2.0: + resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} + engines: {node: '>=10'} + + any-promise@1.3.0: + resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} + + anymatch@3.1.3: + resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} + engines: {node: '>= 8'} + + aproba@2.0.0: + resolution: {integrity: sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==} + + are-we-there-yet@2.0.0: + resolution: {integrity: sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==} + engines: {node: '>=10'} + deprecated: This package is no longer supported. + + argparse@1.0.10: + resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} + + argparse@2.0.1: + resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} + + aria-hidden@1.2.4: + resolution: {integrity: sha512-y+CcFFwelSXpLZk/7fMB2mUbGtX9lKycf1MWJ7CaTIERyitVlyQx6C+sxcROU2BAJ24OiZyK+8wj2i8AlBoS3A==} + engines: {node: '>=10'} + + aria-query@5.3.0: + resolution: {integrity: sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==} + + arr-diff@4.0.0: + resolution: {integrity: sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA==} + engines: {node: '>=0.10.0'} + + arr-flatten@1.1.0: + resolution: {integrity: sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==} + engines: {node: '>=0.10.0'} + + arr-union@3.1.0: + resolution: {integrity: sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q==} + engines: {node: '>=0.10.0'} + + array-each@1.0.1: + resolution: {integrity: sha512-zHjL5SZa68hkKHBFBK6DJCTtr9sfTCPCaph/L7tMSLcTFgy+zX7E+6q5UArbtOtMBCtxdICpfTCspRse+ywyXA==} + engines: {node: '>=0.10.0'} + + array-slice@1.1.0: + resolution: {integrity: sha512-B1qMD3RBP7O8o0H2KbrXDyB0IccejMF15+87Lvlor12ONPRHP6gTjXMNkt/d3ZuOGbAe66hFmaCfECI24Ufp6w==} + engines: {node: '>=0.10.0'} + + array-union@2.1.0: + resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} + engines: {node: '>=8'} + + array-unique@0.3.2: + resolution: {integrity: sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ==} + engines: {node: '>=0.10.0'} + + asn1.js@5.4.1: + resolution: {integrity: sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==} + + assign-symbols@1.0.0: + resolution: {integrity: sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw==} + engines: {node: '>=0.10.0'} + + async@3.2.5: + resolution: {integrity: sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg==} + + asynckit@0.4.0: + resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} + + atob@2.1.2: + resolution: {integrity: sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==} + engines: {node: '>= 4.5.0'} + hasBin: true + + available-typed-arrays@1.0.7: + resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==} + engines: {node: '>= 0.4'} + + aws-sdk@2.1644.0: + resolution: {integrity: sha512-9DkVmQWrL766uxeag6wLbXNahwodrIvxZlh1JZ6bzMoNXLCx38GhQfdtLhCoqK7+k0c5QIzHhjPqyqwPM4ohJw==} + engines: {node: '>= 10.0.0'} + + axios@0.26.1: + resolution: {integrity: sha512-fPwcX4EvnSHuInCMItEhAGnaSEXRBjtzh9fOtsE6E1G6p7vl7edEeZe11QHf18+6+9gR5PbKV/sGKNaD8YaMeA==} + + axios@1.6.0: + resolution: {integrity: sha512-EZ1DYihju9pwVB+jg67ogm+Tmqc6JmhamRN6I4Zt8DfZu5lbcQGw3ozH9lFejSJgs/ibaef3A9PMXPLeefFGJg==} + + axios@1.7.2: + resolution: {integrity: sha512-2A8QhOMrbomlDuiLeK9XibIBzuHeRcqqNOHp0Cyp5EoJ1IFDh+XZH3A6BkXtv0K4gFGCI0Y4BM7B1wOEi0Rmgw==} + + b4a@1.6.6: + resolution: {integrity: sha512-5Tk1HLk6b6ctmjIkAcU/Ujv/1WqiDl0F0JdRCR80VsOcUlHcu7pWeWRlOqQLHfDEsVx9YH/aif5AG4ehoCtTmg==} + + babel-plugin-macros@3.1.0: + resolution: {integrity: sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==} + engines: {node: '>=10', npm: '>=6'} + + babel-plugin-styled-components@2.1.4: + resolution: {integrity: sha512-Xgp9g+A/cG47sUyRwwYxGM4bR/jDRg5N6it/8+HxCnbT5XNKSKDT9xm4oag/osgqjC2It/vH0yXsomOG6k558g==} + peerDependencies: + styled-components: '>= 2' + + balanced-match@1.0.2: + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + + bare-events@2.4.2: + resolution: {integrity: sha512-qMKFd2qG/36aA4GwvKq8MxnPgCQAmBWmSyLWsJcbn8v03wvIPQ/hG1Ms8bPzndZxMDoHpxez5VOS+gC9Yi24/Q==} + + bare-fs@2.3.1: + resolution: {integrity: sha512-W/Hfxc/6VehXlsgFtbB5B4xFcsCl+pAh30cYhoFyXErf6oGrwjh8SwiPAdHgpmWonKuYpZgGywN0SXt7dgsADA==} + + bare-os@2.4.0: + resolution: {integrity: sha512-v8DTT08AS/G0F9xrhyLtepoo9EJBJ85FRSMbu1pQUlAf6A8T0tEEQGMVObWeqpjhSPXsE0VGlluFBJu2fdoTNg==} + + bare-path@2.1.3: + resolution: {integrity: sha512-lh/eITfU8hrj9Ru5quUp0Io1kJWIk1bTjzo7JH1P5dWmQ2EL4hFUlfI8FonAhSlgIfhn63p84CDY/x+PisgcXA==} + + bare-stream@2.1.3: + resolution: {integrity: sha512-tiDAH9H/kP+tvNO5sczyn9ZAA7utrSMobyDchsnyyXBuUe2FSQWbxhtuHB8jwpHYYevVo2UJpcmvvjrbHboUUQ==} + + base64-js@1.5.1: + resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} + + base@0.11.2: + resolution: {integrity: sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==} + engines: {node: '>=0.10.0'} + + bcryptjs@2.4.3: + resolution: {integrity: sha512-V/Hy/X9Vt7f3BbPJEi8BdVFMByHi+jNXrYkW3huaybV/kQ0KJg0Y6PkEMbn+zeT+i+SiKZ/HMqJGIIt4LZDqNQ==} + + better-sqlite3@8.0.1: + resolution: {integrity: sha512-JhTZjpyapA1icCEjIZB4TSSgkGdFgpWZA2Wszg7Cf4JwJwKQmbvuNnJBeR+EYG/Z29OXvR4G//Rbg31BW/Z7Yg==} + + big-integer@1.6.52: + resolution: {integrity: sha512-QxD8cf2eVqJOOz63z6JIN9BzvVs/dlySa5HGSBH5xtR8dPteIRQnBxxKqkNTiT6jbDTF6jAfrd4oMcND9RGbQg==} + engines: {node: '>=0.6'} + + big.js@5.2.2: + resolution: {integrity: sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==} + + binary-extensions@2.3.0: + resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} + engines: {node: '>=8'} + + bindings@1.5.0: + resolution: {integrity: sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==} + + bl@4.1.0: + resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} + + bn.js@4.12.0: + resolution: {integrity: sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==} + + boolbase@1.0.0: + resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} + + bowser@2.11.0: + resolution: {integrity: sha512-AlcaJBi/pqqJBIQ8U9Mcpc9i8Aqxn88Skv5d+xBX006BY5u8N3mGLHa5Lgppa7L/HfwgwLgZ6NYs+Ag6uUmJRA==} + + boxen@5.1.2: + resolution: {integrity: sha512-9gYgQKXx+1nP8mP7CzFyaUARhg7D3n1dF/FnErWmu9l6JvGpNUN278h0aSb+QjoiKSWG+iZ3uHrcqk0qrY9RQQ==} + engines: {node: '>=10'} + + bplist-parser@0.2.0: + resolution: {integrity: sha512-z0M+byMThzQmD9NILRniCUXYsYpjwnlO8N5uCFaCqIOpqRsJCrQL9NK3JsD67CN5a08nF5oIL2bD6loTdHOuKw==} + engines: {node: '>= 5.10.0'} + + brace-expansion@1.1.11: + resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} + + brace-expansion@2.0.1: + resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} + + braces@2.3.2: + resolution: {integrity: sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==} + engines: {node: '>=0.10.0'} + + braces@3.0.3: + resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} + engines: {node: '>=8'} + + broadcast-channel@3.7.0: + resolution: {integrity: sha512-cIAKJXAxGJceNZGTZSBzMxzyOn72cVgPnKx4dc6LRjQgbaJUQqhy5rzL3zbMxkMWsGKkv2hSFkPRMEXfoMZ2Mg==} + + brorand@1.1.0: + resolution: {integrity: sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==} + + browserslist-to-esbuild@1.2.0: + resolution: {integrity: sha512-ftrrbI/VHBgEnmnSyhkqvQVMp6jAKybfs0qMIlm7SLBrQTGMsdCIP4q3BoKeLsZTBQllIQtY9kbxgRYV2WU47g==} + engines: {node: '>=12'} + + browserslist@4.23.1: + resolution: {integrity: sha512-TUfofFo/KsK/bWZ9TWQ5O26tsWW4Uhmt8IYklbnUa70udB6P2wA7w7o4PY4muaEPBQaAX+CEnmmIA41NVHtPVw==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + + buffer-equal-constant-time@1.0.1: + resolution: {integrity: sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==} + + buffer-from@1.1.2: + resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} + + buffer@4.9.2: + resolution: {integrity: sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==} + + buffer@5.7.1: + resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} + + buildmail@3.10.0: + resolution: {integrity: sha512-6e5sDN/pl3en5Klqdfyir7LEIBiFr9oqZuvYaEyVwjxpIbBZN+98e0j87Fz2Ukl8ud32rbk9VGOZAnsOZ7pkaA==} + deprecated: This project is unmaintained + + bundle-name@3.0.0: + resolution: {integrity: sha512-PKA4BeSvBpQKQ8iPOGCSiell+N8P+Tf1DlwqmYhpe2gAhKPHn8EYOxVT+ShuGmhg8lN8XiSlS80yiExKXrURlw==} + engines: {node: '>=12'} + + byte-size@7.0.1: + resolution: {integrity: sha512-crQdqyCwhokxwV1UyDzLZanhkugAgft7vt0qbbdt60C6Zf3CAiGmtUCylbtYwrU6loOUw3euGrNtW1J651ot1A==} + engines: {node: '>=10'} + + bytes@3.1.2: + resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} + engines: {node: '>= 0.8'} + + cache-base@1.0.1: + resolution: {integrity: sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==} + engines: {node: '>=0.10.0'} + + cache-content-type@1.0.1: + resolution: {integrity: sha512-IKufZ1o4Ut42YUrZSo8+qnMTrFuKkvyoLXUywKz9GJ5BrhOFGhLdkx9sG4KAnVvbY6kEcSFjLQul+DVmBm2bgA==} + engines: {node: '>= 6.0.0'} + + cacheable-lookup@5.0.4: + resolution: {integrity: sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA==} + engines: {node: '>=10.6.0'} + + cacheable-request@7.0.4: + resolution: {integrity: sha512-v+p6ongsrp0yTGbJXjgxPow2+DL93DASP4kXCDKb8/bwRtt9OEF3whggkkDkGNzgcWy2XaF4a8nZglC7uElscg==} + engines: {node: '>=8'} + + call-bind@1.0.7: + resolution: {integrity: sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==} + engines: {node: '>= 0.4'} + + callsites@3.1.0: + resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} + engines: {node: '>=6'} + + camel-case@3.0.0: + resolution: {integrity: sha512-+MbKztAYHXPr1jNTSKQF52VpcFjwY5RkR7fxksV8Doo4KAYc5Fl4UJRgthBbTmEx8C54DqahhbLJkDwjI3PI/w==} + + camel-case@4.1.2: + resolution: {integrity: sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==} + + camelcase@6.3.0: + resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} + engines: {node: '>=10'} + + camelize@1.0.1: + resolution: {integrity: sha512-dU+Tx2fsypxTgtLoE36npi3UqcjSSMNYfkqgmoEhtZrraP5VWq0K7FkWVTYa8eMPtnU/G2txVsfdCJTn9uzpuQ==} + + caniuse-lite@1.0.30001636: + resolution: {integrity: sha512-bMg2vmr8XBsbL6Lr0UHXy/21m84FTxDLWn2FSqMd5PrlbMxwJlQnC2YWYxVgp66PZE+BBNF2jYQUBKCo1FDeZg==} + + canvas@2.11.2: + resolution: {integrity: sha512-ItanGBMrmRV7Py2Z+Xhs7cT+FNt5K0vPL4p9EZ/UX/Mu7hFbkxSjKF2KVtPwX7UYWp7dRKnrTvReflgrItJbdw==} + engines: {node: '>=6'} + + chalk@1.1.3: + resolution: {integrity: sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==} + engines: {node: '>=0.10.0'} + + chalk@2.4.2: + resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} + engines: {node: '>=4'} + + chalk@4.1.1: + resolution: {integrity: sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==} + engines: {node: '>=10'} + + chalk@4.1.2: + resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} + engines: {node: '>=10'} + + change-case@3.1.0: + resolution: {integrity: sha512-2AZp7uJZbYEzRPsFoa+ijKdvp9zsrnnt6+yFokfwEpeJm0xuJDVoxiRCAaTzyJND8GJkofo2IcKWaUZ/OECVzw==} + + chardet@0.7.0: + resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==} + + chokidar@3.5.3: + resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==} + engines: {node: '>= 8.10.0'} + + chokidar@3.6.0: + resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} + engines: {node: '>= 8.10.0'} + + chownr@1.1.4: + resolution: {integrity: sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==} + + chownr@2.0.0: + resolution: {integrity: sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==} + engines: {node: '>=10'} + + chrome-trace-event@1.0.4: + resolution: {integrity: sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==} + engines: {node: '>=6.0'} + + ci-info@3.8.0: + resolution: {integrity: sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==} + engines: {node: '>=8'} + + class-utils@0.3.6: + resolution: {integrity: sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==} + engines: {node: '>=0.10.0'} + + clean-css@5.3.3: + resolution: {integrity: sha512-D5J+kHaVb/wKSFcyyV75uCn8fiY4sV38XJoe4CUyGQ+mOU/fMVYUdH1hJC+CJQ5uY3EnW27SbJYS4X8BiLrAFg==} + engines: {node: '>= 10.0'} + + clean-stack@2.2.0: + resolution: {integrity: sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==} + engines: {node: '>=6'} + + cli-boxes@2.2.1: + resolution: {integrity: sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw==} + engines: {node: '>=6'} + + cli-cursor@2.1.0: + resolution: {integrity: sha512-8lgKz8LmCRYZZQDpRyT2m5rKJ08TnU4tR9FFFW2rxpxR1FzWi4PQ/NfyODchAatHaUgnSPVcx/R5w6NuTBzFiw==} + engines: {node: '>=4'} + + cli-cursor@3.1.0: + resolution: {integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==} + engines: {node: '>=8'} + + cli-progress@3.12.0: + resolution: {integrity: sha512-tRkV3HJ1ASwm19THiiLIXLO7Im7wlTuKnvkYaTkyoAPefqjNg7W7DHKUlGRxy9vxDvbyCYQkQozvptuMkGCg8A==} + engines: {node: '>=4'} + + cli-spinners@2.9.2: + resolution: {integrity: sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==} + engines: {node: '>=6'} + + cli-table3@0.6.2: + resolution: {integrity: sha512-QyavHCaIC80cMivimWu4aWHilIpiDpfm3hGmqAmXVL1UsnbLuBSMd21hTX6VY4ZSDSM73ESLeF8TOYId3rBTbw==} + engines: {node: 10.* || >= 12.*} + + cli-width@3.0.0: + resolution: {integrity: sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==} + engines: {node: '>= 10'} + + cliui@7.0.4: + resolution: {integrity: sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==} + + cliui@8.0.1: + resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} + engines: {node: '>=12'} + + clone-response@1.0.3: + resolution: {integrity: sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==} + + clone@1.0.4: + resolution: {integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==} + engines: {node: '>=0.8'} + + cloudinary-core@2.13.1: + resolution: {integrity: sha512-z53GPNWnvU0Zi+ns8CIVbZBfj7ps/++zDvwIyiFuq5p1MoK+KUCg0k5mBceDDHTnx1gHmHUd9aohS+gDxPNt6w==} + peerDependencies: + lodash: '>=4.0' + + cloudinary@1.41.3: + resolution: {integrity: sha512-4o84y+E7dbif3lMns+p3UW6w6hLHEifbX/7zBJvaih1E9QNMZITENQ14GPYJC4JmhygYXsuuBb9bRA3xWEoOfg==} + engines: {node: '>=0.6'} + + co-body@5.2.0: + resolution: {integrity: sha512-sX/LQ7LqUhgyaxzbe7IqwPeTr2yfpfUIQ/dgpKo6ZI4y4lpQA0YxAomWIY+7I7rHWcG02PG+OuPREzMW/5tszQ==} + + co-body@6.2.0: + resolution: {integrity: sha512-Kbpv2Yd1NdL1V/V4cwLVxraHDV6K8ayohr2rmH0J87Er8+zJjcTa6dAn9QMPC9CRgU8+aNajKbSf1TzDB1yKPA==} + engines: {node: '>=8.0.0'} + + co@4.6.0: + resolution: {integrity: sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==} + engines: {iojs: '>= 1.0.0', node: '>= 0.12.0'} + + codemirror@5.65.16: + resolution: {integrity: sha512-br21LjYmSlVL0vFCPWPfhzUCT34FM/pAdK7rRIZwa0rrtrIdotvP4Oh4GUHsu2E3IrQMCfRkL/fN3ytMNxVQvg==} + + codemirror@6.0.1: + resolution: {integrity: sha512-J8j+nZ+CdWmIeFIGXEFbFPtpiYacFMDR8GlHK3IyHQJMCaVRfGx9NT+Hxivv1ckLWPvNdZqndbr/7lVhrf/Svg==} + + collection-visit@1.0.0: + resolution: {integrity: sha512-lNkKvzEeMBBjUGHZ+q6z9pSJla0KWAQPvtzhEV9+iGyQYG+pBpl7xKDhxoNSOZH2hhv0v5k0y2yAM4o4SjoSkw==} + engines: {node: '>=0.10.0'} + + color-convert@1.9.3: + resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} + + color-convert@2.0.1: + resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} + engines: {node: '>=7.0.0'} + + color-name@1.1.3: + resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} + + color-name@1.1.4: + resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + + color-string@1.9.1: + resolution: {integrity: sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==} + + color-support@1.1.3: + resolution: {integrity: sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==} + hasBin: true + + color@3.2.1: + resolution: {integrity: sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA==} + + color@4.2.3: + resolution: {integrity: sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==} + engines: {node: '>=12.5.0'} + + colorette@2.0.19: + resolution: {integrity: sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ==} + + colorette@2.0.20: + resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==} + + colorspace@1.1.4: + resolution: {integrity: sha512-BgvKJiuVu1igBUF2kEjRCZXol6wiiGbY5ipL/oVPwm0BL9sIpMIzM8IK7vwuxIIzOXMV3Ey5w+vxhm0rR/TN8w==} + + combined-stream@1.0.8: + resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} + engines: {node: '>= 0.8'} + + commander@10.0.1: + resolution: {integrity: sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==} + engines: {node: '>=14'} + + commander@2.20.3: + resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} + + commander@7.2.0: + resolution: {integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==} + engines: {node: '>= 10'} + + commander@8.3.0: + resolution: {integrity: sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==} + engines: {node: '>= 12'} + + common-path-prefix@3.0.0: + resolution: {integrity: sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==} + + component-emitter@1.3.1: + resolution: {integrity: sha512-T0+barUSQRTUQASh8bx02dl+DhF54GtIDY13Y3m9oWTklKbb3Wv974meRpeZ3lp1JpLVECWWNHC4vaG2XHXouQ==} + + compressible@2.0.18: + resolution: {integrity: sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==} + engines: {node: '>= 0.6'} + + compute-scroll-into-view@1.0.20: + resolution: {integrity: sha512-UCB0ioiyj8CRjtrvaceBLqqhZCVP+1B8+NWQhmdsm0VXOJtobBCf1dBQmebCCo34qZmUwZfIH2MZLqNHazrfjg==} + + compute-scroll-into-view@3.1.0: + resolution: {integrity: sha512-rj8l8pD4bJ1nx+dAkMhV1xB5RuZEyVysfxJqB1pRchh1KVvwOv9b7CGB8ZfjTImVv2oF+sYMUkMZq6Na5Ftmbg==} + + concat-map@0.0.1: + resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + + concurrently@8.2.2: + resolution: {integrity: sha512-1dP4gpXFhei8IOtlXRE/T/4H88ElHgTiUzh71YUmtjTEHMSRS2Z/fgOxHSxxusGHogsRfxNq1vyAwxSC+EVyDg==} + engines: {node: ^14.13.0 || >=16.0.0} + hasBin: true + + config-chain@1.1.13: + resolution: {integrity: sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==} + + configstore@5.0.1: + resolution: {integrity: sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA==} + engines: {node: '>=8'} + + console-control-strings@1.1.0: + resolution: {integrity: sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==} + + constant-case@2.0.0: + resolution: {integrity: sha512-eS0N9WwmjTqrOmR3o83F5vW8Z+9R1HnVz3xmzT2PMFug9ly+Au/fxRWlEBSb6LcZwspSsEn9Xs1uw9YgzAg1EQ==} + + content-disposition@0.5.4: + resolution: {integrity: sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==} + engines: {node: '>= 0.6'} + + content-type@1.0.5: + resolution: {integrity: sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==} + engines: {node: '>= 0.6'} + + convert-source-map@1.9.0: + resolution: {integrity: sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==} + + convert-source-map@2.0.0: + resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} + + cookie-signature@1.2.1: + resolution: {integrity: sha512-78KWk9T26NhzXtuL26cIJ8/qNHANyJ/ZYrmEXFzUmhZdjpBv+DlWlOANRTGBt48YcyslsLrj0bMLFTmXvLRCOw==} + engines: {node: '>=6.6.0'} + + cookie@0.4.2: + resolution: {integrity: sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==} + engines: {node: '>= 0.6'} + + cookie@0.5.0: + resolution: {integrity: sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==} + engines: {node: '>= 0.6'} + + cookies@0.8.0: + resolution: {integrity: sha512-8aPsApQfebXnuI+537McwYsDtjVxGm8gTIzQI3FDW6t5t/DAhERxtnbEPN/8RX+uZthoz4eCOgloXaE5cYyNow==} + engines: {node: '>= 0.8'} + + cookies@0.9.1: + resolution: {integrity: sha512-TG2hpqe4ELx54QER/S3HQ9SRVnQnGBtKUz5bLQWtYAQ+o6GpgMs6sYUvaiJjVxb+UXwhRhAEP3m7LbsIZ77Hmw==} + engines: {node: '>= 0.8'} + + copy-descriptor@0.1.1: + resolution: {integrity: sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw==} + engines: {node: '>=0.10.0'} + + copy-to@2.0.1: + resolution: {integrity: sha512-3DdaFaU/Zf1AnpLiFDeNCD4TOWe3Zl2RZaTzUvWiIk5ERzcCodOE20Vqq4fzCbNoHURFHT4/us/Lfq+S2zyY4w==} + + copyfiles@2.4.1: + resolution: {integrity: sha512-fereAvAvxDrQDOXybk3Qu3dPbOoKoysFMWtkY3mv5BsL8//OSZVL5DCLYqgRfY5cWirgRzlC+WSrxp6Bo3eNZg==} + hasBin: true + + core-js-pure@3.37.1: + resolution: {integrity: sha512-J/r5JTHSmzTxbiYYrzXg9w1VpqrYt+gexenBE9pugeyhwPZTAEJddyiReJWsLO6uNQ8xJZFbod6XC7KKwatCiA==} + + core-js@3.37.1: + resolution: {integrity: sha512-Xn6qmxrQZyB0FFY8E3bgRXei3lWDJHhvI+u0q9TKIYM49G8pAr0FgnnrFRAmsbptZL1yxRADVXn+x5AGsbBfyw==} + + core-util-is@1.0.3: + resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} + + cosmiconfig@7.1.0: + resolution: {integrity: sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==} + engines: {node: '>=10'} + + cosmiconfig@8.3.6: + resolution: {integrity: sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==} + engines: {node: '>=14'} + peerDependencies: + typescript: '>=4.9.5' + peerDependenciesMeta: + typescript: + optional: true + + crc@3.8.0: + resolution: {integrity: sha512-iX3mfgcTMIq3ZKLIsVFAbv7+Mc10kxabAGQb8HvjA1o3T1PIYprbakQ65d3I+2HGHt6nSKkM9PYjgoJO2KcFBQ==} + + crelt@1.0.6: + resolution: {integrity: sha512-VQ2MBenTq1fWZUH9DJNGti7kKv6EeAuYr3cLwxUWhIu1baTaXh4Ib5W2CqHVqib4/MqbYGJqiL3Zb8GJZr3l4g==} + + cron-parser@3.5.0: + resolution: {integrity: sha512-wyVZtbRs6qDfFd8ap457w3XVntdvqcwBGxBoTvJQH9KGVKL/fB+h2k3C8AqiVxvUQKN1Ps/Ns46CNViOpVDhfQ==} + engines: {node: '>=0.8'} + + cropperjs@1.6.0: + resolution: {integrity: sha512-BzLU/ecrfsbflwxgu+o7sQTrTlo52pVRZkTVrugEK5uyj6n8qKwAHP4s6+DWHqlXLqQ5B9+cM2MKeXiNfAsF6Q==} + + cross-env@7.0.3: + resolution: {integrity: sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==} + engines: {node: '>=10.14', npm: '>=6', yarn: '>=1'} + hasBin: true + + cross-spawn@7.0.3: + resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} + engines: {node: '>= 8'} + + crypto-random-string@2.0.0: + resolution: {integrity: sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==} + engines: {node: '>=8'} + + css-color-keywords@1.0.0: + resolution: {integrity: sha512-FyyrDHZKEjXDpNJYvVsV960FiqQyXc/LlYmsxl2BcdMb2WPx0OGRVgTg55rPSyLSNMqP52R9r8geSp7apN3Ofg==} + engines: {node: '>=4'} + + css-loader@6.11.0: + resolution: {integrity: sha512-CTJ+AEQJjq5NzLga5pE39qdiSV56F8ywCIsqNIRF0r7BDgWsN25aazToqAFg7ZrtA/U016xudB3ffgweORxX7g==} + engines: {node: '>= 12.13.0'} + peerDependencies: + '@rspack/core': 0.x || 1.x + webpack: ^5.0.0 + peerDependenciesMeta: + '@rspack/core': + optional: true + webpack: + optional: true + + css-select@4.3.0: + resolution: {integrity: sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==} + + css-to-react-native@3.2.0: + resolution: {integrity: sha512-e8RKaLXMOFii+02mOlqwjbD00KSEKqblnpO9e++1aXS1fPQOpS1YoqdVHBqPjHNoxeF2mimzVqawm2KCbEdtHQ==} + + css-what@6.1.0: + resolution: {integrity: sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==} + engines: {node: '>= 6'} + + cssesc@3.0.0: + resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} + engines: {node: '>=4'} + hasBin: true + + csstype@3.1.3: + resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} + + date-fns-tz@2.0.0: + resolution: {integrity: sha512-OAtcLdB9vxSXTWHdT8b398ARImVwQMyjfYGkKD2zaGpHseG2UPHbHjXELReErZFxWdSLph3c2zOaaTyHfOhERQ==} + peerDependencies: + date-fns: '>=2.0.0' + + date-fns@2.30.0: + resolution: {integrity: sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==} + engines: {node: '>=0.11'} + + date-fns@3.6.0: + resolution: {integrity: sha512-fRHTG8g/Gif+kSh50gaGEdToemgfj74aRX3swtiouboip5JDLAyDE9F11nHMIcvOaXeOC6D7SpNhi7uFyB7Uww==} + + debounce@1.2.1: + resolution: {integrity: sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug==} + + debug@2.6.9: + resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + debug@3.2.7: + resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + debug@4.3.4: + resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + debug@4.3.5: + resolution: {integrity: sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + decode-uri-component@0.2.2: + resolution: {integrity: sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==} + engines: {node: '>=0.10'} + + decompress-response@4.2.1: + resolution: {integrity: sha512-jOSne2qbyE+/r8G1VU+G/82LBs2Fs4LAsTiLSHOCOMZQl2OKZ6i8i4IyHemTe+/yIXOtTcRQMzPcgyhoFlqPkw==} + engines: {node: '>=8'} + + decompress-response@6.0.0: + resolution: {integrity: sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==} + engines: {node: '>=10'} + + decompress-response@7.0.0: + resolution: {integrity: sha512-6IvPrADQyyPGLpMnUh6kfKiqy7SrbXbjoUuZ90WMBJKErzv2pCiwlGEXjRX9/54OnTq+XFVnkOnOMzclLI5aEA==} + engines: {node: '>=10'} + + deep-equal@1.0.1: + resolution: {integrity: sha512-bHtC0iYvWhyaTzvV3CZgPeZQqCOBGyGsVV7v4eevpdkLHfiSrXUdBG+qAuSz4RI70sszvjQ1QSZ98An1yNwpSw==} + + deep-extend@0.6.0: + resolution: {integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==} + engines: {node: '>=4.0.0'} + + deepmerge@2.2.1: + resolution: {integrity: sha512-R9hc1Xa/NOBi9WRVUWg19rl1UB7Tt4kuPd+thNJgFZoxXsTz7ncaPaeIm+40oSGuP33DfMb4sZt1QIGiJzC4EA==} + engines: {node: '>=0.10.0'} + + deepmerge@4.3.1: + resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} + engines: {node: '>=0.10.0'} + + default-browser-id@3.0.0: + resolution: {integrity: sha512-OZ1y3y0SqSICtE8DE4S8YOE9UZOJ8wO16fKWVP5J1Qz42kV9jcnMVFrEE/noXb/ss3Q4pZIH79kxofzyNNtUNA==} + engines: {node: '>=12'} + + default-browser@4.0.0: + resolution: {integrity: sha512-wX5pXO1+BrhMkSbROFsyxUm0i/cJEScyNhA4PPxc41ICuv05ZZB/MX28s8aZx6xjmatvebIapF6hLEKEcpneUA==} + engines: {node: '>=14.16'} + + defaults@1.0.4: + resolution: {integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==} + + defer-to-connect@2.0.1: + resolution: {integrity: sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==} + engines: {node: '>=10'} + + define-data-property@1.1.4: + resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==} + engines: {node: '>= 0.4'} + + define-lazy-prop@2.0.0: + resolution: {integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==} + engines: {node: '>=8'} + + define-lazy-prop@3.0.0: + resolution: {integrity: sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==} + engines: {node: '>=12'} + + define-properties@1.2.1: + resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} + engines: {node: '>= 0.4'} + + define-property@0.2.5: + resolution: {integrity: sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==} + engines: {node: '>=0.10.0'} + + define-property@1.0.0: + resolution: {integrity: sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==} + engines: {node: '>=0.10.0'} + + define-property@2.0.2: + resolution: {integrity: sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==} + engines: {node: '>=0.10.0'} + + del@5.1.0: + resolution: {integrity: sha512-wH9xOVHnczo9jN2IW68BabcecVPxacIA3g/7z6vhSU/4stOKQzeCRK0yD0A24WiAAUJmmVpWqrERcTxnLo3AnA==} + engines: {node: '>=8'} + + delayed-stream@1.0.0: + resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} + engines: {node: '>=0.4.0'} + + delegates@1.0.0: + resolution: {integrity: sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==} + + depd@1.1.2: + resolution: {integrity: sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==} + engines: {node: '>= 0.6'} + + depd@2.0.0: + resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} + engines: {node: '>= 0.8'} + + dequal@2.0.3: + resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} + engines: {node: '>=6'} + + destroy@1.2.0: + resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==} + engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} + + detect-file@1.0.0: + resolution: {integrity: sha512-DtCOLG98P007x7wiiOmfI0fi3eIKyWiLTGJ2MDnVi/E04lWGbf+JzrRHMm0rgIIZJGtHpKpbVgLWHrv8xXpc3Q==} + engines: {node: '>=0.10.0'} + + detect-indent@6.1.0: + resolution: {integrity: sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==} + engines: {node: '>=8'} + + detect-indent@7.0.1: + resolution: {integrity: sha512-Mc7QhQ8s+cLrnUfU/Ji94vG/r8M26m8f++vyres4ZoojaRDpZ1eSIh/EpzLNwlWuvzSZ3UbDFspjFvTDXe6e/g==} + engines: {node: '>=12.20'} + + detect-libc@2.0.3: + resolution: {integrity: sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==} + engines: {node: '>=8'} + + detect-newline@4.0.1: + resolution: {integrity: sha512-qE3Veg1YXzGHQhlA6jzebZN2qVf6NX+A7m7qlhCGG30dJixrAQhYOsJjsnBjJkCSmuOPpCk30145fr8FV0bzog==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + detect-node-es@1.1.0: + resolution: {integrity: sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==} + + detect-node@2.1.0: + resolution: {integrity: sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==} + + dir-glob@3.0.1: + resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} + engines: {node: '>=8'} + + direction@1.0.4: + resolution: {integrity: sha512-GYqKi1aH7PJXxdhTeZBFrg8vUBeKXi+cNprXsC1kpJcbcVnV9wBsrOu1cQEdG0WeQwlfHiy3XvnKfIrJ2R0NzQ==} + hasBin: true + + dkim-signer@0.2.2: + resolution: {integrity: sha512-24OZ3cCA30UTRz+Plpg+ibfPq3h7tDtsJRg75Bo0pGakZePXcPBddY80bKi1Bi7Jsz7tL5Cw527mhCRDvNFgfg==} + + dnd-core@16.0.1: + resolution: {integrity: sha512-HK294sl7tbw6F6IeuK16YSBUoorvHpY8RHO+9yFfaJyCDVb6n7PRcezrOEOa2SBCqiYpemh5Jx20ZcjKdFAVng==} + + dom-accessibility-api@0.5.16: + resolution: {integrity: sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==} + + dom-converter@0.2.0: + resolution: {integrity: sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==} + + dom-helpers@5.2.1: + resolution: {integrity: sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==} + + dom-serializer@1.4.1: + resolution: {integrity: sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==} + + dom-serializer@2.0.0: + resolution: {integrity: sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==} + + domelementtype@2.3.0: + resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==} + + domhandler@4.3.1: + resolution: {integrity: sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==} + engines: {node: '>= 4'} + + domhandler@5.0.3: + resolution: {integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==} + engines: {node: '>= 4'} + + domutils@2.8.0: + resolution: {integrity: sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==} + + domutils@3.1.0: + resolution: {integrity: sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==} + + dot-case@2.1.1: + resolution: {integrity: sha512-HnM6ZlFqcajLsyudHq7LeeLDr2rFAVYtDv/hV5qchQEidSck8j9OPUsXY9KwJv/lHMtYlX4DjRQqwFYa+0r8Ug==} + + dot-case@3.0.4: + resolution: {integrity: sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==} + + dot-prop@5.3.0: + resolution: {integrity: sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==} + engines: {node: '>=8'} + + dotenv@14.2.0: + resolution: {integrity: sha512-05POuPJyPpO6jqzTNweQFfAyMSD4qa4lvsMOWyTRTdpHKy6nnnN+IYWaXF+lHivhBH/ufDKlR4IWCAN3oPnHuw==} + engines: {node: '>=12'} + + duplexer@0.1.2: + resolution: {integrity: sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==} + + ecdsa-sig-formatter@1.0.11: + resolution: {integrity: sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==} + + ee-first@1.1.1: + resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} + + electron-to-chromium@1.4.805: + resolution: {integrity: sha512-8W4UJwX/w9T0QSzINJckTKG6CYpAUTqsaWcWIsdud3I1FYJcMgW9QqT1/4CBff/pP/TihWh13OmiyY8neto6vw==} + + elliptic@6.5.5: + resolution: {integrity: sha512-7EjbcmUm17NQFu4Pmgmq2olYMj8nwMnpcddByChSUjArp8F5DQWcIcpriwO4ZToLNAJig0yiyjswfyGNje/ixw==} + + emittery@0.12.1: + resolution: {integrity: sha512-pYyW59MIZo0HxPFf+Vb3+gacUu0gxVS3TZwB2ClwkEZywgF9f9OJDoVmNLojTn0vKX3tO9LC+pdQEcLP4Oz/bQ==} + engines: {node: '>=12'} + + emoji-regex@8.0.0: + resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} + + emojis-list@3.0.0: + resolution: {integrity: sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==} + engines: {node: '>= 4'} + + enabled@2.0.0: + resolution: {integrity: sha512-AKrN98kuwOzMIdAizXGI86UFBoo26CL21UM763y1h/GMSJ4/OHU9k2YlsmBpyScFo/wbLzWQJBMCW4+IO3/+OQ==} + + encodeurl@1.0.2: + resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==} + engines: {node: '>= 0.8'} + + end-of-stream@1.4.4: + resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} + + enhanced-resolve@5.17.0: + resolution: {integrity: sha512-dwDPwZL0dmye8Txp2gzFmA6sxALaSvdRDjPH0viLcKrtlOL3tw62nWWweVD1SdILDTJrbrL6tdWVN58Wo6U3eA==} + engines: {node: '>=10.13.0'} + + entities@2.1.0: + resolution: {integrity: sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w==} + + entities@2.2.0: + resolution: {integrity: sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==} + + entities@4.5.0: + resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} + engines: {node: '>=0.12'} + + error-ex@1.3.2: + resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} + + error-stack-parser@2.1.4: + resolution: {integrity: sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==} + + es-define-property@1.0.0: + resolution: {integrity: sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==} + engines: {node: '>= 0.4'} + + es-errors@1.3.0: + resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} + engines: {node: '>= 0.4'} + + es-module-lexer@1.5.3: + resolution: {integrity: sha512-i1gCgmR9dCl6Vil6UKPI/trA69s08g/syhiDK9TG0Nf1RJjjFI+AzoWW7sPufzkgYAn861skuCwJa0pIIHYxvg==} + + esbuild-loader@2.21.0: + resolution: {integrity: sha512-k7ijTkCT43YBSZ6+fBCW1Gin7s46RrJ0VQaM8qA7lq7W+OLsGgtLyFV8470FzYi/4TeDexniTBTPTwZUnXXR5g==} + peerDependencies: + webpack: ^4.40.0 || ^5.0.0 + + esbuild-register@3.5.0: + resolution: {integrity: sha512-+4G/XmakeBAsvJuDugJvtyF1x+XJT4FMocynNpxrvEBViirpfUn2PgNpCHedfWhF4WokNsO/OvMKrmJOIJsI5A==} + peerDependencies: + esbuild: '>=0.12 <1' + + esbuild@0.16.17: + resolution: {integrity: sha512-G8LEkV0XzDMNwXKgM0Jwu3nY3lSTwSGY6XbxM9cr9+s0T/qSV1q1JVPBGzm3dcjhCic9+emZDmMffkwgPeOeLg==} + engines: {node: '>=12'} + hasBin: true + + esbuild@0.19.11: + resolution: {integrity: sha512-HJ96Hev2hX/6i5cDVwcqiJBBtuo9+FeIJOtZ9W1kA5M6AMJRHUZlpYZ1/SbEwtO0ioNAW8rUooVpC/WehY2SfA==} + engines: {node: '>=12'} + hasBin: true + + escalade@3.1.2: + resolution: {integrity: sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==} + engines: {node: '>=6'} + + escape-html@1.0.3: + resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==} + + escape-string-regexp@1.0.5: + resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} + engines: {node: '>=0.8.0'} + + escape-string-regexp@2.0.0: + resolution: {integrity: sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==} + engines: {node: '>=8'} + + escape-string-regexp@4.0.0: + resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} + engines: {node: '>=10'} + + esdoc-ecmascript-proposal-plugin@1.0.0: + resolution: {integrity: sha512-PuaU/O8d+Sb0J6qQdyhmy74h/2cp/2kqsvPuoCiK+50Rw54nlGqXxvWNaaNikS5qntE0FfssnwZtUPa6q4RiXg==} + engines: {node: '>= 6.0.0'} + + eslint-scope@5.1.1: + resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} + engines: {node: '>=8.0.0'} + + esm@3.2.25: + resolution: {integrity: sha512-U1suiZ2oDVWv4zPO56S0NcR5QriEahGtdN2OR6FiOG4WJvcjBVFB0qI4+eKoWFH483PKGuLuu6V8Z4T5g63UVA==} + engines: {node: '>=6'} + + esrecurse@4.3.0: + resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} + engines: {node: '>=4.0'} + + estraverse@4.3.0: + resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==} + engines: {node: '>=4.0'} + + estraverse@5.3.0: + resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} + engines: {node: '>=4.0'} + + eventemitter3@4.0.7: + resolution: {integrity: sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==} + + events@1.1.1: + resolution: {integrity: sha512-kEcvvCBByWXGnZy6JUlgAp2gBIUjfCAV6P6TgT1/aaQKcmuAEC4OZTV1I4EWQLz2gxZw76atuVyvHhTxvi0Flw==} + engines: {node: '>=0.4.x'} + + events@3.3.0: + resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} + engines: {node: '>=0.8.x'} + + eventsource@2.0.2: + resolution: {integrity: sha512-IzUmBGPR3+oUG9dUeXynyNmf91/3zUSJg1lCktzKw47OXuhco54U3r9B7O4XX+Rb1Itm9OZ2b0RkTs10bICOxA==} + engines: {node: '>=12.0.0'} + + execa@5.1.1: + resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} + engines: {node: '>=10'} + + execa@7.2.0: + resolution: {integrity: sha512-UduyVP7TLB5IcAQl+OzLyLcS/l32W/GLg+AhHJ+ow40FOk2U3SAllPwR44v4vmdFwIWqpdwxxpQbF1n5ta9seA==} + engines: {node: ^14.18.0 || ^16.14.0 || >=18.0.0} + + expand-brackets@2.1.4: + resolution: {integrity: sha512-w/ozOKR9Obk3qoWeY/WDi6MFta9AoMR+zud60mdnbniMcBxRuFJyDt2LdX/14A1UABeqk+Uk+LDfUpvoGKppZA==} + engines: {node: '>=0.10.0'} + + expand-template@2.0.3: + resolution: {integrity: sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==} + engines: {node: '>=6'} + + expand-tilde@2.0.2: + resolution: {integrity: sha512-A5EmesHW6rfnZ9ysHQjPdJRni0SRar0tjtG5MNtm9n5TUvsYU8oozprtRD4AqHxcZWWlVuAmQo2nWKfN9oyjTw==} + engines: {node: '>=0.10.0'} + + extend-shallow@2.0.1: + resolution: {integrity: sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==} + engines: {node: '>=0.10.0'} + + extend-shallow@3.0.2: + resolution: {integrity: sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==} + engines: {node: '>=0.10.0'} + + extend@3.0.2: + resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} + + external-editor@3.1.0: + resolution: {integrity: sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==} + engines: {node: '>=4'} + + extglob@2.0.4: + resolution: {integrity: sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==} + engines: {node: '>=0.10.0'} + + fast-deep-equal@3.1.3: + resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} + + fast-fifo@1.3.2: + resolution: {integrity: sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==} + + fast-glob@3.3.2: + resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==} + engines: {node: '>=8.6.0'} + + fast-json-stable-stringify@2.1.0: + resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} + + fast-safe-stringify@2.1.1: + resolution: {integrity: sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==} + + fast-xml-parser@4.2.5: + resolution: {integrity: sha512-B9/wizE4WngqQftFPmdaMYlXoJlJOYxGQOanC77fq9k8+Z0v5dDSVh+3glErdIROP//s/jgb7ZuxKfB8nVyo0g==} + hasBin: true + + fastq@1.17.1: + resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==} + + fecha@4.2.3: + resolution: {integrity: sha512-OP2IUU6HeYKJi3i0z4A19kHMQoLVs4Hc+DPqqxI2h/DPZHTm/vjsfC6P0b4jCMy14XizLBqvndQ+UilD7707Jw==} + + figures@3.2.0: + resolution: {integrity: sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==} + engines: {node: '>=8'} + + file-uri-to-path@1.0.0: + resolution: {integrity: sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==} + + fill-range@4.0.0: + resolution: {integrity: sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==} + engines: {node: '>=0.10.0'} + + fill-range@7.1.1: + resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} + engines: {node: '>=8'} + + find-root@1.1.0: + resolution: {integrity: sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==} + + find-up@3.0.0: + resolution: {integrity: sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==} + engines: {node: '>=6'} + + find-up@4.1.0: + resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} + engines: {node: '>=8'} + + find-up@5.0.0: + resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} + engines: {node: '>=10'} + + findup-sync@2.0.0: + resolution: {integrity: sha512-vs+3unmJT45eczmcAZ6zMJtxN3l/QXeccaXQx5cu/MeJMhewVfoWZqibRkOxPnmoR59+Zy5hjabfQc6JLSah4g==} + engines: {node: '>= 0.10'} + + fined@1.2.0: + resolution: {integrity: sha512-ZYDqPLGxDkDhDZBjZBb+oD1+j0rA4E0pXY50eplAAOPg2N/gUBSSk5IM1/QhPfyVo19lJ+CvXpqfvk+b2p/8Ng==} + engines: {node: '>= 0.10'} + + flagged-respawn@1.0.1: + resolution: {integrity: sha512-lNaHNVymajmk0OJMBn8fVUAU1BtDeKIqKoVhk4xAALB57aALg6b4W0MfJ/cUE0g9YBXy5XhSlPIpYIJ7HaY/3Q==} + engines: {node: '>= 0.10'} + + flat-cache@3.2.0: + resolution: {integrity: sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==} + engines: {node: ^10.12.0 || >=12.0.0} + + flatted@3.3.1: + resolution: {integrity: sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==} + + fn.name@1.1.0: + resolution: {integrity: sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw==} + + follow-redirects@1.15.6: + resolution: {integrity: sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==} + engines: {node: '>=4.0'} + peerDependencies: + debug: '*' + peerDependenciesMeta: + debug: + optional: true + + for-each@0.3.3: + resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==} + + for-in@1.0.2: + resolution: {integrity: sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==} + engines: {node: '>=0.10.0'} + + for-own@1.0.0: + resolution: {integrity: sha512-0OABksIGrxKK8K4kynWkQ7y1zounQxP+CWnyclVwj81KW3vlLlGUx57DKGcP/LH216GzqnstnPocF16Nxs0Ycg==} + engines: {node: '>=0.10.0'} + + fork-ts-checker-webpack-plugin@9.0.2: + resolution: {integrity: sha512-Uochze2R8peoN1XqlSi/rGUkDQpRogtLFocP9+PGu68zk1BDAKXfdeCdyVZpgTk8V8WFVQXdEz426VKjXLO1Gg==} + engines: {node: '>=12.13.0', yarn: '>=1.0.0'} + peerDependencies: + typescript: '>3.6.0' + webpack: ^5.11.0 + + form-data@4.0.0: + resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==} + engines: {node: '>= 6'} + + formidable@1.2.6: + resolution: {integrity: sha512-KcpbcpuLNOwrEjnbpMC0gS+X8ciDoZE1kkqzat4a8vrprf+s9pKNQ/QIwWfbfs4ltgmFl3MD177SNTkve3BwGQ==} + deprecated: 'Please upgrade to latest, formidable@v2 or formidable@v3! Check these notes: https://bit.ly/2ZEqIau' + + formik@2.2.9: + resolution: {integrity: sha512-LQLcISMmf1r5at4/gyJigGn0gOwFbeEAlji+N9InZF6LIMXnFNkO42sCI8Jt84YZggpD4cPWObAZaxpEFtSzNA==} + peerDependencies: + react: '>=16.8.0' + + formik@2.4.0: + resolution: {integrity: sha512-QZiWztt9fD84EYcF7Bmr431ZhIm1xUVgBACbTuJ6azPrUpVp7o6q+t9HJaIQsFZrMfcBPNBotYtDgyDpzQ3z0Q==} + peerDependencies: + react: '>=16.8.0' + + fractional-indexing@3.2.0: + resolution: {integrity: sha512-PcOxmqwYCW7O2ovKRU8OoQQj2yqTfEB/yeTYk4gPid6dN5ODRfU1hXd9tTVZzax/0NkO7AxpHykvZnT1aYp/BQ==} + engines: {node: ^14.13.1 || >=16.0.0} + + fragment-cache@0.2.1: + resolution: {integrity: sha512-GMBAbW9antB8iZRHLoGw0b3HANt57diZYFO/HL1JGIC1MjKrdmhxvrJbupnVvpys0zsz7yBApXdQyfepKly2kA==} + engines: {node: '>=0.10.0'} + + fresh@0.5.2: + resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==} + engines: {node: '>= 0.6'} + + from2@2.3.0: + resolution: {integrity: sha512-OMcX/4IC/uqEPVgGeyfN22LJk6AZrMkRZHxcHBMBvHScDGgwTm2GT2Wkgtocyd3JfZffjj2kYUDXXII0Fk9W0g==} + + fs-constants@1.0.0: + resolution: {integrity: sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==} + + fs-extra@10.0.0: + resolution: {integrity: sha512-C5owb14u9eJwizKGdchcDUQeFtlSHHthBk8pbX9Vc1PFZrLombudjDnNns88aYslCyF6IY5SUw3Roz6xShcEIQ==} + engines: {node: '>=12'} + + fs-extra@7.0.1: + resolution: {integrity: sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==} + engines: {node: '>=6 <7 || >=8'} + + fs-extra@8.1.0: + resolution: {integrity: sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==} + engines: {node: '>=6 <7 || >=8'} + + fs-jetpack@4.3.1: + resolution: {integrity: sha512-dbeOK84F6BiQzk2yqqCVwCPWTxAvVGJ3fMQc6E2wuEohS28mR6yHngbrKuVCK1KHRx/ccByDylqu4H5PCP2urQ==} + + fs-minipass@2.1.0: + resolution: {integrity: sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==} + engines: {node: '>= 8'} + + fs-monkey@1.0.6: + resolution: {integrity: sha512-b1FMfwetIKymC0eioW7mTywihSQE4oLzQn1dB6rZB5fx/3NpNEdAWeCSMB+60/AeT0TCXsxzAlcYVEFCTAksWg==} + + fs.realpath@1.0.0: + resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} + + fsevents@2.3.3: + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + + function-bind@1.1.2: + resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} + + fuzzy-search@3.2.1: + resolution: {integrity: sha512-vAcPiyomt1ioKAsAL2uxSABHJ4Ju/e4UeDM+g1OlR0vV4YhLGMNsdLNvZTpEDY4JCSt0E4hASCNM5t2ETtsbyg==} + + fuzzysort@2.0.4: + resolution: {integrity: sha512-Api1mJL+Ad7W7vnDZnWq5pGaXJjyencT+iKGia2PlHUcSsSzWwIQ3S1isiMpwpavjYtGd2FzhUIhnnhOULZgDw==} + + gauge@3.0.2: + resolution: {integrity: sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==} + engines: {node: '>=10'} + deprecated: This package is no longer supported. + + gensync@1.0.0-beta.2: + resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} + engines: {node: '>=6.9.0'} + + get-caller-file@2.0.5: + resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} + engines: {node: 6.* || 8.* || >= 10.*} + + get-intrinsic@1.2.4: + resolution: {integrity: sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==} + engines: {node: '>= 0.4'} + + get-it@8.6.1: + resolution: {integrity: sha512-fCK6M+WkN1TuXzYac0RYk9OK4VdJKV1xG3fe9D3TU2is/G8ofz6/+hRBCiddO/eNPhnhMBpYIk2kNx1S4NRdsg==} + engines: {node: '>=14.0.0'} + + get-latest-version@5.1.0: + resolution: {integrity: sha512-Q6IBWr/zzw57zIkJmNhI23eRTw3nZ4BWWK034meLwOYU9L3J3IpXiyM73u2pYUwN6U7ahkerCwg2T0jlxiLwsw==} + engines: {node: '>=14.18'} + + get-nonce@1.0.1: + resolution: {integrity: sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==} + engines: {node: '>=6'} + + get-package-type@0.1.0: + resolution: {integrity: sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==} + engines: {node: '>=8.0.0'} + + get-stdin@9.0.0: + resolution: {integrity: sha512-dVKBjfWisLAicarI2Sf+JuBE/DghV4UzNAVe9yhEJuzeREd3JhOTE9cUaJTeSa77fsbQUK3pcOpJfM59+VKZaA==} + engines: {node: '>=12'} + + get-stream@5.2.0: + resolution: {integrity: sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==} + engines: {node: '>=8'} + + get-stream@6.0.1: + resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} + engines: {node: '>=10'} + + get-value@2.0.6: + resolution: {integrity: sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA==} + engines: {node: '>=0.10.0'} + + getopts@2.3.0: + resolution: {integrity: sha512-5eDf9fuSXwxBL6q5HX+dhDj+dslFGWzU5thZ9kNKUkcPtaPdatmUFKwHFrLb/uf/WpA4BHET+AX3Scl56cAjpA==} + + git-hooks-list@3.1.0: + resolution: {integrity: sha512-LF8VeHeR7v+wAbXqfgRlTSX/1BJR9Q1vEMR8JAz1cEg6GX07+zyj3sAdDvYjj/xnlIfVuGgj4qBei1K3hKH+PA==} + + git-up@7.0.0: + resolution: {integrity: sha512-ONdIrbBCFusq1Oy0sC71F5azx8bVkvtZtMJAsv+a6lz5YAmbNnLD6HAB4gptHZVLPR8S2/kVN6Gab7lryq5+lQ==} + + git-url-parse@13.1.0: + resolution: {integrity: sha512-5FvPJP/70WkIprlUZ33bm4UAaFdjcLkJLpWft1BeZKqwR0uhhNGoKwlUaPtVb4LxCSQ++erHapRak9kWGj+FCA==} + + github-from-package@0.0.0: + resolution: {integrity: sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==} + + glob-parent@5.1.2: + resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} + engines: {node: '>= 6'} + + glob-to-regexp@0.4.1: + resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==} + + glob@7.2.3: + resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} + deprecated: Glob versions prior to v9 are no longer supported + + glob@8.1.0: + resolution: {integrity: sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==} + engines: {node: '>=12'} + deprecated: Glob versions prior to v9 are no longer supported + + global-modules@1.0.0: + resolution: {integrity: sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==} + engines: {node: '>=0.10.0'} + + global-prefix@1.0.2: + resolution: {integrity: sha512-5lsx1NUDHtSjfg0eHlmYvZKv8/nVqX4ckFbM+FrGcQ+04KWcWFo9P5MxPZYSzUvyzmdTbI7Eix8Q4IbELDqzKg==} + engines: {node: '>=0.10.0'} + + globals@11.12.0: + resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} + engines: {node: '>=4'} + + globby@10.0.2: + resolution: {integrity: sha512-7dUi7RvCoT/xast/o/dLN53oqND4yk0nsHkhRgn9w65C4PofCLOoJ39iSOg+qVDdWQPIEj+eszMHQ+aLVwwQSg==} + engines: {node: '>=8'} + + globby@13.2.2: + resolution: {integrity: sha512-Y1zNGV+pzQdh7H39l9zgB4PJqjRNqydvdYCDG4HFXM4XuvSaQQlEc91IU1yALL8gUTDomgBAfz3XJdmUS+oo0w==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + gopd@1.0.1: + resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} + + got@11.8.6: + resolution: {integrity: sha512-6tfZ91bOr7bOXnK7PRDCGBLa1H4U080YHNaAQ2KsMGlLEzRbk44nsZF2E1IeRc3vtJHPVbKCYgdFbaGO2ljd8g==} + engines: {node: '>=10.19.0'} + + graceful-fs@4.2.10: + resolution: {integrity: sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==} + + graceful-fs@4.2.11: + resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} + + grant-koa@5.4.8: + resolution: {integrity: sha512-Kw8np9AL3Z3mZuvoSUklHJpTe3xx7iLBDauRyIwwbDLRr/5Ll6APmOFHixXj+Vw+LGEnreTxO35CyhAf9oBUMA==} + engines: {node: '>=8.0.0'} + peerDependencies: + koa: '>=2.0.0' + + grant@5.4.22: + resolution: {integrity: sha512-DEi+/JjXT84mmFYhSmv+SX14v+3Z7vuCIYAMwtdPCTXHMSLhWqSYqWAMXDUQZuV7yaJv2d84AYnkCFNooLKBsA==} + engines: {node: '>=12.0.0'} + + graphql@16.8.2: + resolution: {integrity: sha512-cvVIBILwuoSyD54U4cF/UXDh5yAobhNV/tPygI4lZhgOIJQE/WLWC4waBRb4I6bDVYb3OVx3lfHbaQOEoUD5sg==} + engines: {node: ^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0} + + gzip-size@6.0.0: + resolution: {integrity: sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q==} + engines: {node: '>=10'} + + handlebars@4.7.8: + resolution: {integrity: sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ==} + engines: {node: '>=0.4.7'} + hasBin: true + + has-ansi@2.0.0: + resolution: {integrity: sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg==} + engines: {node: '>=0.10.0'} + + has-flag@3.0.0: + resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} + engines: {node: '>=4'} + + has-flag@4.0.0: + resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} + engines: {node: '>=8'} + + has-property-descriptors@1.0.2: + resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==} + + has-proto@1.0.3: + resolution: {integrity: sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==} + engines: {node: '>= 0.4'} + + has-symbols@1.0.3: + resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} + engines: {node: '>= 0.4'} + + has-tostringtag@1.0.2: + resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} + engines: {node: '>= 0.4'} + + has-unicode@2.0.1: + resolution: {integrity: sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==} + + has-value@0.3.1: + resolution: {integrity: sha512-gpG936j8/MzaeID5Yif+577c17TxaDmhuyVgSwtnL/q8UUTySg8Mecb+8Cf1otgLoD7DDH75axp86ER7LFsf3Q==} + engines: {node: '>=0.10.0'} + + has-value@1.0.0: + resolution: {integrity: sha512-IBXk4GTsLYdQ7Rvt+GRBrFSVEkmuOUy4re0Xjd9kJSUQpnTrWR4/y9RpfexN9vkAPMFuQoeWKwqzPozRTlasGw==} + engines: {node: '>=0.10.0'} + + has-values@0.1.4: + resolution: {integrity: sha512-J8S0cEdWuQbqD9//tlZxiMuMNmxB8PlEwvYwuxsTmR1G5RXUePEX/SJn7aD0GMLieuZYSwNH0cQuJGwnYunXRQ==} + engines: {node: '>=0.10.0'} + + has-values@1.0.0: + resolution: {integrity: sha512-ODYZC64uqzmtfGMEAX/FvZiRyWLpAC3vYnNunURUnkGVTS+mI0smVsWaPydRBsE3g+ok7h960jChO8mFcWlHaQ==} + engines: {node: '>=0.10.0'} + + hash.js@1.1.7: + resolution: {integrity: sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==} + + hasown@2.0.2: + resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} + engines: {node: '>= 0.4'} + + he@1.2.0: + resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==} + hasBin: true + + header-case@1.0.1: + resolution: {integrity: sha512-i0q9mkOeSuhXw6bGgiQCCBgY/jlZuV/7dZXyZ9c6LcBrqwvT8eT719E9uxE5LiZftdl+z81Ugbg/VvXV4OJOeQ==} + + headers-polyfill@3.2.5: + resolution: {integrity: sha512-tUCGvt191vNSQgttSyJoibR+VO+I6+iCHIUdhzEMJKE+EAL8BwCN7fUOZlY4ofOelNHsK+gEjxB/B+9N3EWtdA==} + + headers-polyfill@3.3.0: + resolution: {integrity: sha512-5e57etwBpNcDc0b6KCVWEh/Ro063OxPvzVimUdM0/tsYM/T7Hfy3kknIGj78SFTOhNd8AZY41U8mOHoO4LzmIQ==} + + helmet@6.2.0: + resolution: {integrity: sha512-DWlwuXLLqbrIOltR6tFQXShj/+7Cyp0gLi6uAb8qMdFh/YBBFbKSgQ6nbXmScYd8emMctuthmgIa7tUfo9Rtyg==} + engines: {node: '>=14.0.0'} + + highlight.js@10.7.3: + resolution: {integrity: sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A==} + + history@4.10.1: + resolution: {integrity: sha512-36nwAD620w12kuzPAsyINPWJqlNbij+hpK1k9XRloDtym8mxzGYl2c17LnV6IAGB2Dmg4tEa7G7DlawS0+qjew==} + + hmac-drbg@1.0.1: + resolution: {integrity: sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==} + + hoist-non-react-statics@3.3.2: + resolution: {integrity: sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==} + + homedir-polyfill@1.0.3: + resolution: {integrity: sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==} + engines: {node: '>=0.10.0'} + + hosted-git-info@2.8.9: + resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==} + + html-entities@2.5.2: + resolution: {integrity: sha512-K//PSRMQk4FZ78Kyau+mZurHn3FH0Vwr+H36eE0rPbeYkRRi9YxceYPhuN60UwWorxyKHhqoAJl2OFKa4BVtaA==} + + html-escaper@2.0.2: + resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} + + html-minifier-terser@6.1.0: + resolution: {integrity: sha512-YXxSlJBZTP7RS3tWnQw74ooKa6L9b9i9QYXY21eUEvhZ3u9XLfv6OnFsQq6RxkhHygsaUMvYsZRV5rU/OVNZxw==} + engines: {node: '>=12'} + hasBin: true + + html-webpack-plugin@5.6.0: + resolution: {integrity: sha512-iwaY4wzbe48AfKLZ/Cc8k0L+FKG6oSNRaZ8x5A/T/IVDGyXcbHncM9TdDa93wn0FsSm82FhTKW7f3vS61thXAw==} + engines: {node: '>=10.13.0'} + peerDependencies: + '@rspack/core': 0.x || 1.x + webpack: ^5.20.0 + peerDependenciesMeta: + '@rspack/core': + optional: true + webpack: + optional: true + + htmlparser2@6.1.0: + resolution: {integrity: sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==} + + htmlparser2@8.0.2: + resolution: {integrity: sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==} + + http-assert@1.5.0: + resolution: {integrity: sha512-uPpH7OKX4H25hBmU6G1jWNaqJGpTXxey+YOUizJUAgu0AjLUeC8D73hTrhvDS5D+GJN1DN1+hhc/eF/wpxtp0w==} + engines: {node: '>= 0.8'} + + http-cache-semantics@4.1.1: + resolution: {integrity: sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==} + + http-errors@1.6.3: + resolution: {integrity: sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==} + engines: {node: '>= 0.6'} + + http-errors@1.8.1: + resolution: {integrity: sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==} + engines: {node: '>= 0.6'} + + http-errors@2.0.0: + resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==} + engines: {node: '>= 0.8'} + + http2-wrapper@1.0.3: + resolution: {integrity: sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg==} + engines: {node: '>=10.19.0'} + + https-proxy-agent@5.0.1: + resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==} + engines: {node: '>= 6'} + + human-signals@2.1.0: + resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} + engines: {node: '>=10.17.0'} + + human-signals@4.3.1: + resolution: {integrity: sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ==} + engines: {node: '>=14.18.0'} + + iconv-lite@0.4.13: + resolution: {integrity: sha512-QwVuTNQv7tXC5mMWFX5N5wGjmybjNBBD8P3BReTkPmipoxTUFgWM2gXNvldHQr6T14DH0Dh6qBVg98iJt7u4mQ==} + engines: {node: '>=0.8.0'} + + iconv-lite@0.4.15: + resolution: {integrity: sha512-RGR+c9Lm+tLsvU57FTJJtdbv2hQw42Yl2n26tVIBaYmZzLN+EGfroUugN/z9nJf9kOXd49hBmpoGr4FEm+A4pw==} + engines: {node: '>=0.10.0'} + + iconv-lite@0.4.24: + resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} + engines: {node: '>=0.10.0'} + + icss-utils@5.1.0: + resolution: {integrity: sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==} + engines: {node: ^10 || ^12 || >= 14} + peerDependencies: + postcss: ^8.1.0 + + ieee754@1.1.13: + resolution: {integrity: sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==} + + ieee754@1.2.1: + resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} + + ignore-by-default@1.0.1: + resolution: {integrity: sha512-Ius2VYcGNk7T90CppJqcIkS5ooHUZyIQK+ClZfMfMNFEF9VSE73Fq+906u/CWu92x4gzZMWOwfFYckPObzdEbA==} + + ignore-walk@3.0.4: + resolution: {integrity: sha512-PY6Ii8o1jMRA1z4F2hRkH/xN59ox43DavKvD3oDpfurRlOJyAHpifIwpbdv1n4jt4ov0jSpw3kQ4GhJnpBL6WQ==} + + ignore@5.3.1: + resolution: {integrity: sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==} + engines: {node: '>= 4'} + + immer@9.0.19: + resolution: {integrity: sha512-eY+Y0qcsB4TZKwgQzLaE/lqYMlKhv5J9dyd2RhhtGhNo2njPXDqU9XPfcNfa3MIDsdtZt5KlkIsirlo4dHsWdQ==} + + immer@9.0.21: + resolution: {integrity: sha512-bc4NBHqOqSfRW7POMkHd51LvClaeMXpm8dx0e8oE2GORbq5aRK7Bxl4FyzVLdGtLmvLKL7BTDBG5ACQm4HWjTA==} + + import-fresh@3.3.0: + resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} + engines: {node: '>=6'} + + import-lazy@4.0.0: + resolution: {integrity: sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw==} + engines: {node: '>=8'} + + imurmurhash@0.1.4: + resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} + engines: {node: '>=0.8.19'} + + indent-string@4.0.0: + resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==} + engines: {node: '>=8'} + + inflation@2.1.0: + resolution: {integrity: sha512-t54PPJHG1Pp7VQvxyVCJ9mBbjG3Hqryges9bXoOO6GExCPa+//i/d5GSuFtpx3ALLd7lgIAur6zrIlBQyJuMlQ==} + engines: {node: '>= 0.8.0'} + + inflight@1.0.6: + resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} + deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. + + inherits@2.0.3: + resolution: {integrity: sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==} + + inherits@2.0.4: + resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + + ini@1.3.8: + resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} + + ini@2.0.0: + resolution: {integrity: sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==} + engines: {node: '>=10'} + + ini@4.1.1: + resolution: {integrity: sha512-QQnnxNyfvmHFIsj7gkPcYymR8Jdw/o7mp5ZFihxn6h8Ci6fh3Dx4E1gPjpQEpIuPo9XVNY/ZUwh4BPMjGyL01g==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + + inquirer@7.3.3: + resolution: {integrity: sha512-JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA==} + engines: {node: '>=8.0.0'} + + inquirer@8.2.5: + resolution: {integrity: sha512-QAgPDQMEgrDssk1XiwwHoOGYF9BAbUcc1+j+FhEvaOt8/cKRqyLn0U5qA6F74fGhTMGxf92pOvPBeh29jQJDTQ==} + engines: {node: '>=12.0.0'} + + inquirer@8.2.6: + resolution: {integrity: sha512-M1WuAmb7pn9zdFRtQYk26ZBoY043Sse0wVDdk4Bppr+JOXyQYybdtvK+l9wUibhtjdjvtoiNy8tk+EgsYIUqKg==} + engines: {node: '>=12.0.0'} + + interpret@1.4.0: + resolution: {integrity: sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==} + engines: {node: '>= 0.10'} + + interpret@2.2.0: + resolution: {integrity: sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw==} + engines: {node: '>= 0.10'} + + intl-messageformat@10.3.3: + resolution: {integrity: sha512-un/f07/g2e/3Q8e1ghDKET+el22Bi49M7O/rHxd597R+oLpPOMykSv5s51cABVfu3FZW+fea4hrzf2MHu1W4hw==} + + intl-messageformat@10.3.4: + resolution: {integrity: sha512-/FxUIrlbPtuykSNX85CB5sp2FjLVeTmdD7TfRkVFPft2n4FgcSlAcilFytYiFAEmPHc+0PvpLCIPXeaGFzIvOg==} + + into-stream@5.1.1: + resolution: {integrity: sha512-krrAJ7McQxGGmvaYbB7Q1mcA+cRwg9Ij2RfWIeVesNBgVDZmzY/Fa4IpZUT3bmdRzMzdf/mzltCG2Dq99IZGBA==} + engines: {node: '>=8'} + + invariant@2.2.4: + resolution: {integrity: sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==} + + is-absolute@1.0.0: + resolution: {integrity: sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA==} + engines: {node: '>=0.10.0'} + + is-accessor-descriptor@1.0.1: + resolution: {integrity: sha512-YBUanLI8Yoihw923YeFUS5fs0fF2f5TSFTNiYAAzhhDscDa3lEqYuz1pDOEP5KvX94I9ey3vsqjJcLVFVU+3QA==} + engines: {node: '>= 0.10'} + + is-arguments@1.1.1: + resolution: {integrity: sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==} + engines: {node: '>= 0.4'} + + is-arrayish@0.2.1: + resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} + + is-arrayish@0.3.2: + resolution: {integrity: sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==} + + is-binary-path@2.1.0: + resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} + engines: {node: '>=8'} + + is-buffer@1.1.6: + resolution: {integrity: sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==} + + is-callable@1.2.7: + resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} + engines: {node: '>= 0.4'} + + is-class-hotfix@0.0.6: + resolution: {integrity: sha512-0n+pzCC6ICtVr/WXnN2f03TK/3BfXY7me4cjCAqT8TYXEl0+JBRoqBo94JJHXcyDSLUeWbNX8Fvy5g5RJdAstQ==} + + is-core-module@2.13.1: + resolution: {integrity: sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==} + + is-data-descriptor@1.0.1: + resolution: {integrity: sha512-bc4NlCDiCr28U4aEsQ3Qs2491gVq4V8G7MQyws968ImqjKuYtTJXrl7Vq7jsN7Ly/C3xj5KWFrY7sHNeDkAzXw==} + engines: {node: '>= 0.4'} + + is-descriptor@0.1.7: + resolution: {integrity: sha512-C3grZTvObeN1xud4cRWl366OMXZTj0+HGyk4hvfpx4ZHt1Pb60ANSXqCK7pdOTeUQpRzECBSTphqvD7U+l22Eg==} + engines: {node: '>= 0.4'} + + is-descriptor@1.0.3: + resolution: {integrity: sha512-JCNNGbwWZEVaSPtS45mdtrneRWJFp07LLmykxeFV5F6oBvNF8vHSfJuJgoT472pSfk+Mf8VnlrspaFBHWM8JAw==} + engines: {node: '>= 0.4'} + + is-docker@2.2.1: + resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==} + engines: {node: '>=8'} + hasBin: true + + is-docker@3.0.0: + resolution: {integrity: sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + hasBin: true + + is-extendable@0.1.1: + resolution: {integrity: sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==} + engines: {node: '>=0.10.0'} + + is-extendable@1.0.1: + resolution: {integrity: sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==} + engines: {node: '>=0.10.0'} + + is-extglob@2.1.1: + resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} + engines: {node: '>=0.10.0'} + + is-fullwidth-code-point@3.0.0: + resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} + engines: {node: '>=8'} + + is-generator-function@1.0.10: + resolution: {integrity: sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==} + engines: {node: '>= 0.4'} + + is-glob@3.1.0: + resolution: {integrity: sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==} + engines: {node: '>=0.10.0'} + + is-glob@4.0.3: + resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} + engines: {node: '>=0.10.0'} + + is-hotkey@0.1.8: + resolution: {integrity: sha512-qs3NZ1INIS+H+yeo7cD9pDfwYV/jqRh1JG9S9zYrNudkoUQg7OL7ziXqRKu+InFjUIDoP2o6HIkLYMh1pcWgyQ==} + + is-inside-container@1.0.0: + resolution: {integrity: sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==} + engines: {node: '>=14.16'} + hasBin: true + + is-interactive@1.0.0: + resolution: {integrity: sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==} + engines: {node: '>=8'} + + is-lower-case@1.1.3: + resolution: {integrity: sha512-+5A1e/WJpLLXZEDlgz4G//WYSHyQBD32qa4Jd3Lw06qQlv3fJHnp3YIHjTQSGzHMgzmVKz2ZP3rBxTHkPw/lxA==} + + is-nan@1.3.2: + resolution: {integrity: sha512-E+zBKpQ2t6MEo1VsonYmluk9NxGrbzpeeLC2xIViuO2EjU2xsXsBPwTr3Ykv9l08UYEVEdWeRZNouaZqF6RN0w==} + engines: {node: '>= 0.4'} + + is-node-process@1.2.0: + resolution: {integrity: sha512-Vg4o6/fqPxIjtxgUH5QLJhwZ7gW5diGCVlXpuUfELC62CuxM1iHcRe51f2W1FDy04Ai4KJkagKjx3XaqyfRKXw==} + + is-number@3.0.0: + resolution: {integrity: sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==} + engines: {node: '>=0.10.0'} + + is-number@7.0.0: + resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} + engines: {node: '>=0.12.0'} + + is-obj@2.0.0: + resolution: {integrity: sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==} + engines: {node: '>=8'} + + is-path-cwd@2.2.0: + resolution: {integrity: sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==} + engines: {node: '>=6'} + + is-path-inside@3.0.3: + resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} + engines: {node: '>=8'} + + is-plain-obj@4.1.0: + resolution: {integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==} + engines: {node: '>=12'} + + is-plain-object@2.0.4: + resolution: {integrity: sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==} + engines: {node: '>=0.10.0'} + + is-plain-object@5.0.0: + resolution: {integrity: sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==} + engines: {node: '>=0.10.0'} + + is-relative@1.0.0: + resolution: {integrity: sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA==} + engines: {node: '>=0.10.0'} + + is-retry-allowed@2.2.0: + resolution: {integrity: sha512-XVm7LOeLpTW4jV19QSH38vkswxoLud8sQ57YwJVTPWdiaI9I8keEhGFpBlslyVsgdQy4Opg8QOLb8YRgsyZiQg==} + engines: {node: '>=10'} + + is-ssh@1.4.0: + resolution: {integrity: sha512-x7+VxdxOdlV3CYpjvRLBv5Lo9OJerlYanjwFrPR9fuGPjCiNiCzFgAWpiLAohSbsnH4ZAys3SBh+hq5rJosxUQ==} + + is-stream@2.0.1: + resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} + engines: {node: '>=8'} + + is-stream@3.0.0: + resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + is-type-of@1.4.0: + resolution: {integrity: sha512-EddYllaovi5ysMLMEN7yzHEKh8A850cZ7pykrY1aNRQGn/CDjRDE9qEWbIdt7xGEVJmjBXzU/fNnC4ABTm8tEQ==} + + is-typed-array@1.1.13: + resolution: {integrity: sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==} + engines: {node: '>= 0.4'} + + is-typedarray@1.0.0: + resolution: {integrity: sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==} + + is-unc-path@1.0.0: + resolution: {integrity: sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ==} + engines: {node: '>=0.10.0'} + + is-unicode-supported@0.1.0: + resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==} + engines: {node: '>=10'} + + is-upper-case@1.1.2: + resolution: {integrity: sha512-GQYSJMgfeAmVwh9ixyk888l7OIhNAGKtY6QA+IrWlu9MDTCaXmeozOZ2S9Knj7bQwBO/H6J2kb+pbyTUiMNbsw==} + + is-windows@1.0.2: + resolution: {integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==} + engines: {node: '>=0.10.0'} + + is-wsl@2.2.0: + resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==} + engines: {node: '>=8'} + + isarray@0.0.1: + resolution: {integrity: sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==} + + isarray@1.0.0: + resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} + + isbinaryfile@4.0.10: + resolution: {integrity: sha512-iHrqe5shvBUcFbmZq9zOQHBoeOhZJu6RQGrDpBgenUm/Am+F3JM2MgQj+rK3Z601fzrL5gLZWtAPH2OBaSVcyw==} + engines: {node: '>= 8.0.0'} + + isexe@2.0.0: + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + + isobject@2.1.0: + resolution: {integrity: sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA==} + engines: {node: '>=0.10.0'} + + isobject@3.0.1: + resolution: {integrity: sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==} + engines: {node: '>=0.10.0'} + + isstream@0.1.2: + resolution: {integrity: sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==} + + jest-worker@27.5.1: + resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==} + engines: {node: '>= 10.13.0'} + + jju@1.4.0: + resolution: {integrity: sha512-8wb9Yw966OSxApiCt0K3yNJL8pnNeIv+OEq2YMidz4FKP6nonSRoOXc80iXY4JaN2FC11B9qsNmDsm+ZOfMROA==} + + jmespath@0.16.0: + resolution: {integrity: sha512-9FzQjJ7MATs1tSpnco1K6ayiYE3figslrXA72G2HQ/n76RzvYlofyi5QM+iX4YRs/pu3yzxlVQSST23+dMDknw==} + engines: {node: '>= 0.6.0'} + + jose@4.15.7: + resolution: {integrity: sha512-L7ioP+JAuZe8v+T5+zVI9Tx8LtU8BL7NxkyDFVMv+Qr3JW0jSoYDedLtodaXwfqMpeCyx4WXFNyu9tJt4WvC1A==} + + joycon@3.1.1: + resolution: {integrity: sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw==} + engines: {node: '>=10'} + + js-cookie@2.2.1: + resolution: {integrity: sha512-HvdH2LzI/EAZcUwA8+0nKNtWHqS+ZmijLA30RwZA0bo7ToCckjK5MkGhjED9KoRcXO6BaGI3I9UIzSA1FKFPOQ==} + + js-levenshtein@1.1.6: + resolution: {integrity: sha512-X2BB11YZtrRqY4EnQcLX5Rh373zbK4alC1FW7D7MBhL2gtcC17cTnr6DmfHZeS0s2rTHjUTMMHfG7gO8SSdw+g==} + engines: {node: '>=0.10.0'} + + js-sha3@0.8.0: + resolution: {integrity: sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==} + + js-tokens@4.0.0: + resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + + js-yaml@4.1.0: + resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} + hasBin: true + + jsesc@2.5.2: + resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} + engines: {node: '>=4'} + hasBin: true + + json-buffer@3.0.1: + resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} + + json-parse-even-better-errors@2.3.1: + resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} + + json-schema-traverse@0.4.1: + resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} + + json-schema-traverse@1.0.0: + resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} + + json5@2.2.3: + resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} + engines: {node: '>=6'} + hasBin: true + + jsonfile@4.0.0: + resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==} + + jsonfile@6.1.0: + resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} + + jsonwebtoken@9.0.0: + resolution: {integrity: sha512-tuGfYXxkQGDPnLJ7SibiQgVgeDgfbPq2k2ICcbgqW8WxWLBAxKQM/ZCu/IT8SOSwmaYl4dpTFCW5xZv7YbbWUw==} + engines: {node: '>=12', npm: '>=6'} + + jwa@1.4.1: + resolution: {integrity: sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==} + + jwa@2.0.0: + resolution: {integrity: sha512-jrZ2Qx916EA+fq9cEAeCROWPTfCwi1IVHqT2tapuqLEVVDKFDENFw1oL+MwrTvH6msKxsd1YTDVw6uKEcsrLEA==} + + jwk-to-pem@2.0.5: + resolution: {integrity: sha512-L90jwellhO8jRKYwbssU9ifaMVqajzj3fpRjDKcsDzrslU9syRbFqfkXtT4B89HYAap+xsxNcxgBSB09ig+a7A==} + + jwks-rsa@3.1.0: + resolution: {integrity: sha512-v7nqlfezb9YfHHzYII3ef2a2j1XnGeSE/bK3WfumaYCqONAIstJbrEGapz4kadScZzEt7zYCN7bucj8C0Mv/Rg==} + engines: {node: '>=14'} + + jws@3.2.2: + resolution: {integrity: sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==} + + jws@4.0.0: + resolution: {integrity: sha512-KDncfTmOZoOMTFG4mBlG0qUIOlc03fmzH+ru6RgYVZhPkyiy/92Owlt/8UEN+a4TXR1FQetfIpJE8ApdvdVxTg==} + + keygrip@1.1.0: + resolution: {integrity: sha512-iYSchDJ+liQ8iwbSI2QqsQOvqv58eJCEanyJPJi+Khyu8smkcKSFUCbPwzFcL7YVtZ6eONjqRX/38caJ7QjRAQ==} + engines: {node: '>= 0.6'} + + keyv@4.5.4: + resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} + + kind-of@3.2.2: + resolution: {integrity: sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==} + engines: {node: '>=0.10.0'} + + kind-of@4.0.0: + resolution: {integrity: sha512-24XsCxmEbRwEDbz/qz3stgin8TTzZ1ESR56OMCN0ujYg+vRutNSiOj9bHH9u85DKgXguraugV5sFuvbD4FW/hw==} + engines: {node: '>=0.10.0'} + + kind-of@6.0.3: + resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} + engines: {node: '>=0.10.0'} + + kleur@3.0.3: + resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==} + engines: {node: '>=6'} + + knex@2.5.0: + resolution: {integrity: sha512-h6Ru3PJmZjCDUEqLgwQ/RJUu06Bz7MTzY6sD90udLIa9qwtC7Rnicr7TBiWSaswZmDqk4EZ8xysdg1fkvhYM6w==} + engines: {node: '>=12'} + hasBin: true + peerDependencies: + better-sqlite3: '*' + mysql: '*' + mysql2: '*' + pg: '*' + pg-native: '*' + sqlite3: '*' + tedious: '*' + peerDependenciesMeta: + better-sqlite3: + optional: true + mysql: + optional: true + mysql2: + optional: true + pg: + optional: true + pg-native: + optional: true + sqlite3: + optional: true + tedious: + optional: true + + koa-body@4.2.0: + resolution: {integrity: sha512-wdGu7b9amk4Fnk/ytH8GuWwfs4fsB5iNkY8kZPpgQVb04QZSv85T0M8reb+cJmvLE8cjPYvBzRikD3s6qz8OoA==} + + koa-bodyparser@4.4.1: + resolution: {integrity: sha512-kBH3IYPMb+iAXnrxIhXnW+gXV8OTzCu8VPDqvcDHW9SQrbkHmqPQtiZwrltNmSq6/lpipHnT7k7PsjlVD7kK0w==} + engines: {node: '>=8.0.0'} + + koa-compose@4.1.0: + resolution: {integrity: sha512-8ODW8TrDuMYvXRwra/Kh7/rJo9BtOfPc6qO8eAfC80CnCvSjSl0bkRM24X6/XBBEyj0v1nRUQ1LyOy3dbqOWXw==} + + koa-compress@5.1.0: + resolution: {integrity: sha512-G3Ppo9jrUwlchp6qdoRgQNMiGZtM0TAHkxRZQ7EoVvIG8E47J4nAsMJxXHAUQ+0oc7t0MDxSdONWTFcbzX7/Bg==} + engines: {node: '>= 8.0.0'} + + koa-convert@2.0.0: + resolution: {integrity: sha512-asOvN6bFlSnxewce2e/DK3p4tltyfC4VM7ZwuTuepI7dEQVcvpyFuBcEARu1+Hxg8DIwytce2n7jrZtRlPrARA==} + engines: {node: '>= 10'} + + koa-favicon@2.1.0: + resolution: {integrity: sha512-LvukcooYjxKtnZq0RXdBup+JDhaHwLgnLlDHB/xvjwQEjbc4rbp/0WkmOzpOvaHujc+fIwPear0dpKX1V+dHVg==} + + koa-helmet@7.0.2: + resolution: {integrity: sha512-AvzS6VuEfFgbAm0mTUnkk/BpMarMcs5A56g+f0sfrJ6m63wII48d2GDrnUQGp0Nj+RR950vNtgqXm9UJSe7GOg==} + engines: {node: '>= 14.0.0'} + + koa-ip@2.1.3: + resolution: {integrity: sha512-QLVBByImwDq9enZXVOD3Astk876B7N0IYta7Kik4iyNB462rVzBB1/LD0Ek1F+v9nGUTHBFyhh8043EIlskK9Q==} + + koa-is-json@1.0.0: + resolution: {integrity: sha512-+97CtHAlWDx0ndt0J8y3P12EWLwTLMXIfMnYDev3wOTwH/RpBGMlfn4bDXlMEg1u73K6XRE9BbUp+5ZAYoRYWw==} + + koa-passport@5.0.0: + resolution: {integrity: sha512-eNGg3TGgZ4ydm9DYCOqaa0ySSA/44BS6X+v4CKjP/nHOoXlADRonHsZvS3QWok6EV0ZL0V7FhfWxRYfD2B5kTQ==} + engines: {node: '>= 4'} + + koa-range@0.3.0: + resolution: {integrity: sha512-Ich3pCz6RhtbajYXRWjIl6O5wtrLs6kE3nkXc9XmaWe+MysJyZO7K4L3oce1Jpg/iMgCbj+5UCiMm/rqVtcDIg==} + engines: {node: '>=7'} + + koa-send@5.0.1: + resolution: {integrity: sha512-tmcyQ/wXXuxpDxyNXv5yNNkdAMdFRqwtegBXUaowiQzUKqJehttS0x2j0eOZDQAyloAth5w6wwBImnFzkUz3pQ==} + engines: {node: '>= 8'} + + koa-session@6.4.0: + resolution: {integrity: sha512-h/dxmSOvNEXpHQPRs4TV03TZVFyZIjmYQiTAW5JBFTYBOZ0VdpZ8QEE6Dud75g8z9JNGXi3m++VqRmqToB+c2A==} + engines: {node: '>=8.0.0'} + + koa-static@5.0.0: + resolution: {integrity: sha512-UqyYyH5YEXaJrf9S8E23GoJFQZXkBVJ9zYYMPGz919MSX1KuvAcycIuS0ci150HCoPf4XQVhQ84Qf8xRPWxFaQ==} + engines: {node: '>= 7.6.0'} + + koa2-ratelimit@1.1.3: + resolution: {integrity: sha512-gdrIw6m/D7pmScScL4dz50qLbRR3UGqvO1Vuy2dc7hVIuFAl1OVTnu6WFyEJ5GbfyLZFaCMWzRw6t4krvzvUTg==} + engines: {node: '>=7.10.1'} + peerDependencies: + mongoose: '>= 5' + redis: '>= 4.0.0' + sequelize: '>=5.8.7' + peerDependenciesMeta: + mongoose: + optional: true + redis: + optional: true + sequelize: + optional: true + + koa@2.13.4: + resolution: {integrity: sha512-43zkIKubNbnrULWlHdN5h1g3SEKXOEzoAlRsHOTFpnlDu8JlAOZSMJBLULusuXRequboiwJcj5vtYXKB3k7+2g==} + engines: {node: ^4.8.4 || ^6.10.1 || ^7.10.1 || >= 8.1.4} + + koa@2.15.3: + resolution: {integrity: sha512-j/8tY9j5t+GVMLeioLaxweJiKUayFhlGqNTzf2ZGwL0ZCQijd2RLHK0SLW5Tsko8YyyqCZC2cojIb0/s62qTAg==} + engines: {node: ^4.8.4 || ^6.10.1 || ^7.10.1 || >= 8.1.4} + + kuler@2.0.0: + resolution: {integrity: sha512-Xq9nH7KlWZmXAtodXDDRE7vs6DU1gTU8zYDHDiWLSip45Egwq3plLHzPn27NgvzL2r1LMPC1vdqh98sQxtqj4A==} + + libbase64@0.1.0: + resolution: {integrity: sha512-B91jifmFw1DKEqEWstSpg1PbtUbBzR4yQAPT86kCQXBtud1AJVA+Z6RSklSrqmKe4q2eiEufgnhqJKPgozzfIQ==} + + libmime@2.1.0: + resolution: {integrity: sha512-4be2R6/jOasyPTw0BkpIZBVk2cElqjdIdS0PRPhbOCV4wWuL/ZcYYpN1BCTVB+6eIQ0uuAwp5hQTHFrM5Joa8w==} + + libmime@2.1.3: + resolution: {integrity: sha512-ABr2f4O+K99sypmkF/yPz2aXxUFHEZzv+iUkxItCeKZWHHXdQPpDXd6rV1kBBwL4PserzLU09EIzJ2lxC9hPfQ==} + + libqp@1.1.0: + resolution: {integrity: sha512-4Rgfa0hZpG++t1Vi2IiqXG9Ad1ig4QTmtuZF946QJP4bPqOYC78ixUXgz5TW/wE7lNaNKlplSYTxQ+fR2KZ0EA==} + + liftoff@2.5.0: + resolution: {integrity: sha512-01zfGFqfORP1CGmZZP2Zn51zsqz4RltDi0RDOhbGoLYdUT5Lw+I2gX6QdwXhPITF6hPOHEOp+At6/L24hIg9WQ==} + engines: {node: '>= 0.8'} + + limiter@1.1.5: + resolution: {integrity: sha512-FWWMIEOxz3GwUI4Ts/IvgVy6LPvoMPgjMdQ185nN6psJyBJ4yOpzqm695/h5umdLJg2vW3GR5iG11MAkR2AzJA==} + + lines-and-columns@1.2.4: + resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} + + linkify-it@3.0.3: + resolution: {integrity: sha512-ynTsyrFSdE5oZ/O9GEf00kPngmOfVwazR5GKDq6EYfhlpFug3J2zybX56a2PRRpc9P+FuSoGNAwjlbDs9jJBPQ==} + + loader-runner@4.3.0: + resolution: {integrity: sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==} + engines: {node: '>=6.11.5'} + + loader-utils@2.0.4: + resolution: {integrity: sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==} + engines: {node: '>=8.9.0'} + + locate-path@3.0.0: + resolution: {integrity: sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==} + engines: {node: '>=6'} + + locate-path@5.0.0: + resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} + engines: {node: '>=8'} + + locate-path@6.0.0: + resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} + engines: {node: '>=10'} + + lodash-es@4.17.21: + resolution: {integrity: sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==} + + lodash.clonedeep@4.5.0: + resolution: {integrity: sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==} + + lodash.deburr@4.1.0: + resolution: {integrity: sha512-m/M1U1f3ddMCs6Hq2tAsYThTBDaAKFDX3dwDo97GEYzamXi9SqUpjWi/Rrj/gf3X2n8ktwgZrlP1z6E3v/IExQ==} + + lodash.get@4.4.2: + resolution: {integrity: sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==} + + lodash.isplainobject@4.0.6: + resolution: {integrity: sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==} + + lodash@4.17.21: + resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} + + log-symbols@2.2.0: + resolution: {integrity: sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==} + engines: {node: '>=4'} + + log-symbols@4.1.0: + resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==} + engines: {node: '>=10'} + + logform@2.6.0: + resolution: {integrity: sha512-1ulHeNPp6k/LD8H91o7VYFBng5i1BDE7HoKxVbZiGFidS1Rj65qcywLxX+pVfAPoQJEjRdvKcusKwOupHCVOVQ==} + engines: {node: '>= 12.0.0'} + + long-timeout@0.1.1: + resolution: {integrity: sha512-BFRuQUqc7x2NWxfJBCyUrN8iYUYznzL9JROmRz1gZ6KlOIgmoD+njPVbb+VNn2nGMKggMsK79iUNErillsrx7w==} + + loose-envify@1.4.0: + resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} + hasBin: true + + lower-case-first@1.0.2: + resolution: {integrity: sha512-UuxaYakO7XeONbKrZf5FEgkantPf5DUqDayzP5VXZrtRPdH86s4kN47I8B3TW10S4QKiE3ziHNf3kRN//okHjA==} + + lower-case@1.1.4: + resolution: {integrity: sha512-2Fgx1Ycm599x+WGpIYwJOvsjmXFzTSc34IwDWALRA/8AopUKAVPwfJ+h5+f85BCp0PWmmJcWzEpxOpoXycMpdA==} + + lower-case@2.0.2: + resolution: {integrity: sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==} + + lowercase-keys@2.0.0: + resolution: {integrity: sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==} + engines: {node: '>=8'} + + lru-cache@5.1.1: + resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} + + lru-cache@6.0.0: + resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} + engines: {node: '>=10'} + + lru-memoizer@2.3.0: + resolution: {integrity: sha512-GXn7gyHAMhO13WSKrIiNfztwxodVsP8IoZ3XfrJV4yH2x0/OeTO/FIaAHTY5YekdGgW94njfuKmyyt1E0mR6Ug==} + + lru_map@0.3.3: + resolution: {integrity: sha512-Pn9cox5CsMYngeDbmChANltQl+5pi6XmTrraMSzhPmMBbmgcxmqWry0U3PGapCU1yB4/LqCcom7qhHZiF/jGfQ==} + + luxon@1.28.1: + resolution: {integrity: sha512-gYHAa180mKrNIUJCbwpmD0aTu9kV0dREDrwNnuyFAsO1Wt0EVYSZelPnJlbj9HplzXX/YWXHFTL45kvZ53M0pw==} + + lz-string@1.5.0: + resolution: {integrity: sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==} + hasBin: true + + mailcomposer@3.12.0: + resolution: {integrity: sha512-zBeDoKUTNI8IAsazoMQFt3eVSVRtDtgrvBjBVdBjxDEX+5KLlKtEFCrBXnxPhs8aTYufUS1SmbFnGpjHS53deg==} + deprecated: This project is unmaintained + + make-dir@3.1.0: + resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==} + engines: {node: '>=8'} + + make-iterator@1.0.1: + resolution: {integrity: sha512-pxiuXh0iVEq7VM7KMIhs5gxsfxCux2URptUQaXo4iZZJxBAzTPOLE2BumO5dbfVYq/hBJFBR/a1mFDmOx5AGmw==} + engines: {node: '>=0.10.0'} + + map-cache@0.2.2: + resolution: {integrity: sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg==} + engines: {node: '>=0.10.0'} + + map-visit@1.0.0: + resolution: {integrity: sha512-4y7uGv8bd2WdM9vpQsiQNo41Ln1NvhvDRuVt0k2JZQ+ezN2uaQes7lZeZ+QQUHOLQAtDaBJ+7wCbi+ab/KFs+w==} + engines: {node: '>=0.10.0'} + + markdown-it-abbr@1.0.4: + resolution: {integrity: sha512-ZeA4Z4SaBbYysZap5iZcxKmlPL6bYA8grqhzJIHB1ikn7njnzaP8uwbtuXc4YXD5LicI4/2Xmc0VwmSiFV04gg==} + + markdown-it-container@3.0.0: + resolution: {integrity: sha512-y6oKTq4BB9OQuY/KLfk/O3ysFhB3IMYoIWhGJEidXt1NQFocFK2sA2t0NYZAMyMShAGL6x5OPIbrmXPIqaN9rw==} + + markdown-it-deflist@2.1.0: + resolution: {integrity: sha512-3OuqoRUlSxJiuQYu0cWTLHNhhq2xtoSFqsZK8plANg91+RJQU1ziQ6lA2LzmFAEes18uPBsHZpcX6We5l76Nzg==} + + markdown-it-emoji@2.0.2: + resolution: {integrity: sha512-zLftSaNrKuYl0kR5zm4gxXjHaOI3FAOEaloKmRA5hijmJZvSjmxcokOLlzycb/HXlUFWzXqpIEoyEMCE4i9MvQ==} + + markdown-it-footnote@3.0.3: + resolution: {integrity: sha512-YZMSuCGVZAjzKMn+xqIco9d1cLGxbELHZ9do/TSYVzraooV8ypsppKNmUJ0fVH5ljkCInQAtFpm8Rb3eXSrt5w==} + + markdown-it-ins@3.0.1: + resolution: {integrity: sha512-32SSfZqSzqyAmmQ4SHvhxbFqSzPDqsZgMHDwxqPzp+v+t8RsmqsBZRG+RfRQskJko9PfKC2/oxyOs4Yg/CfiRw==} + + markdown-it-mark@3.0.1: + resolution: {integrity: sha512-HyxjAu6BRsdt6Xcv6TKVQnkz/E70TdGXEFHRYBGLncRE9lBFwDNLVtFojKxjJWgJ+5XxUwLaHXy+2sGBbDn+4A==} + + markdown-it-sub@1.0.0: + resolution: {integrity: sha512-z2Rm/LzEE1wzwTSDrI+FlPEveAAbgdAdPhdWarq/ZGJrGW/uCQbKAnhoCsE4hAbc3SEym26+W2z/VQB0cQiA9Q==} + + markdown-it-sup@1.0.0: + resolution: {integrity: sha512-E32m0nV9iyhRR7CrhnzL5msqic7rL1juWre6TQNxsnApg7Uf+F97JOKxUijg5YwXz86lZ0mqfOnutoryyNdntQ==} + + markdown-it@12.3.2: + resolution: {integrity: sha512-TchMembfxfNVpHkbtriWltGWc+m3xszaRD0CZup7GFFhzIgQqxIfn3eGj1yZpfuflzPvfkt611B2Q/Bsk1YnGg==} + hasBin: true + + match-sorter@4.2.1: + resolution: {integrity: sha512-s+3h9TiZU9U1pWhIERHf8/f4LmBN6IXaRgo2CI17+XGByGS1GvG5VvXK9pcGyCjGe3WM3mSYRC3ipGrd5UEVgw==} + + match-sorter@6.3.4: + resolution: {integrity: sha512-jfZW7cWS5y/1xswZo8VBOdudUiSd9nifYRWphc9M5D/ee4w4AoXLgBEdRbgVaxbMuagBPeUC5y2Hi8DO6o9aDg==} + + mdurl@1.0.1: + resolution: {integrity: sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g==} + + media-typer@0.3.0: + resolution: {integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==} + engines: {node: '>= 0.6'} + + memfs@3.5.3: + resolution: {integrity: sha512-UERzLsxzllchadvbPs5aolHh65ISpKpM+ccLbOJ8/vvpBKmAWf+la7dXFy7Mr0ySHbdHrFv5kGFCUHHe6GFEmw==} + engines: {node: '>= 4.0.0'} + + memoize-one@5.2.1: + resolution: {integrity: sha512-zYiwtZUcYyXKo/np96AGZAckk+FWWsUdJ3cHGGmld7+AhvcWmQyGCYUh1hc4Q/pkOhb65dQR/pqCyK0cOaHz4Q==} + + memoize-one@6.0.0: + resolution: {integrity: sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw==} + + merge-stream@2.0.0: + resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} + + merge2@1.4.1: + resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} + engines: {node: '>= 8'} + + methods@1.1.2: + resolution: {integrity: sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==} + engines: {node: '>= 0.6'} + + micromatch@3.1.10: + resolution: {integrity: sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==} + engines: {node: '>=0.10.0'} + + micromatch@4.0.7: + resolution: {integrity: sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==} + engines: {node: '>=8.6'} + + microseconds@0.2.0: + resolution: {integrity: sha512-n7DHHMjR1avBbSpsTBj6fmMGh2AGrifVV4e+WYc3Q9lO+xnSZ3NyhcBND3vzzatt05LFhoKFRxrIyklmLlUtyA==} + + mime-db@1.52.0: + resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} + engines: {node: '>= 0.6'} + + mime-types@2.1.35: + resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} + engines: {node: '>= 0.6'} + + mimic-fn@1.2.0: + resolution: {integrity: sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==} + engines: {node: '>=4'} + + mimic-fn@2.1.0: + resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} + engines: {node: '>=6'} + + mimic-fn@4.0.0: + resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} + engines: {node: '>=12'} + + mimic-response@1.0.1: + resolution: {integrity: sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==} + engines: {node: '>=4'} + + mimic-response@2.1.0: + resolution: {integrity: sha512-wXqjST+SLt7R009ySCglWBCFpjUygmCIfD790/kVbiGmUgfYGuB14PiTd5DwVxSV4NcYHjzMkoj5LjQZwTQLEA==} + engines: {node: '>=8'} + + mimic-response@3.1.0: + resolution: {integrity: sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==} + engines: {node: '>=10'} + + mini-css-extract-plugin@2.7.7: + resolution: {integrity: sha512-+0n11YGyRavUR3IlaOzJ0/4Il1avMvJ1VJfhWfCn24ITQXhRr1gghbhhrda6tgtNcpZaWKdSuwKq20Jb7fnlyw==} + engines: {node: '>= 12.13.0'} + peerDependencies: + webpack: ^5.0.0 + + minimalistic-assert@1.0.1: + resolution: {integrity: sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==} + + minimalistic-crypto-utils@1.0.1: + resolution: {integrity: sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==} + + minimatch@3.1.2: + resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} + + minimatch@5.1.6: + resolution: {integrity: sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==} + engines: {node: '>=10'} + + minimatch@9.0.3: + resolution: {integrity: sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==} + engines: {node: '>=16 || 14 >=14.17'} + + minimist@1.2.8: + resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} + + minipass@3.3.6: + resolution: {integrity: sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==} + engines: {node: '>=8'} + + minipass@4.2.8: + resolution: {integrity: sha512-fNzuVyifolSLFL4NzpF+wEF4qrgqaaKX0haXPQEdQ7NKAN+WecoKMHV09YcuL/DHxrUsYQOK3MiuDf7Ip2OXfQ==} + engines: {node: '>=8'} + + minipass@5.0.0: + resolution: {integrity: sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==} + engines: {node: '>=8'} + + minizlib@2.1.2: + resolution: {integrity: sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==} + engines: {node: '>= 8'} + + mixin-deep@1.3.2: + resolution: {integrity: sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==} + engines: {node: '>=0.10.0'} + + mkdirp-classic@0.5.3: + resolution: {integrity: sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==} + + mkdirp@0.5.6: + resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==} + hasBin: true + + mkdirp@1.0.4: + resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==} + engines: {node: '>=10'} + hasBin: true + + mrmime@2.0.0: + resolution: {integrity: sha512-eu38+hdgojoyq63s+yTpN4XMBdt5l8HhMhc4VKLO9KM5caLIBvUm4thi7fFaxyTmCKeNnXZ5pAlBwCUnhA09uw==} + engines: {node: '>=10'} + + ms@2.0.0: + resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} + + ms@2.1.2: + resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} + + ms@2.1.3: + resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + + msw@1.0.1: + resolution: {integrity: sha512-fBwQRCmf+jh0zlGlasBfpCaxLqb4QLMsY1Q+nkXkO0nnUYopl50NcNRvP4V+TAiqOwJSd0LrQ5NcJqwbrnTBqw==} + engines: {node: '>=14'} + hasBin: true + peerDependencies: + typescript: '>= 4.4.x <= 4.9.x' + peerDependenciesMeta: + typescript: + optional: true + + multistream@4.1.0: + resolution: {integrity: sha512-J1XDiAmmNpRCBfIWJv+n0ymC4ABcf/Pl+5YvC5B/D2f/2+8PtHvCNxMPKiQcZyi922Hq69J2YOpb1pTywfifyw==} + + mute-stream@0.0.8: + resolution: {integrity: sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==} + + mz@2.7.0: + resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} + + nan@2.20.0: + resolution: {integrity: sha512-bk3gXBZDGILuuo/6sKtr0DQmSThYHLtNCdSdXk9YkxD/jK6X2vmCyyXBBxyqZ4XcnzTyYEAThfX3DCEnLf6igw==} + + nano-time@1.0.0: + resolution: {integrity: sha512-flnngywOoQ0lLQOTRNexn2gGSNuM9bKj9RZAWSzhQ+UJYaAFG9bac4DW9VHjUAzrOaIcajHybCTHe/bkvozQqA==} + + nanoclone@0.2.1: + resolution: {integrity: sha512-wynEP02LmIbLpcYw8uBKpcfF6dmg2vcpKqxeH5UcoKEYdExslsdUA4ugFauuaeYdTB76ez6gJW8XAZ6CgkXYxA==} + + nanoid@3.3.7: + resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + + nanomatch@1.2.13: + resolution: {integrity: sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==} + engines: {node: '>=0.10.0'} + + napi-build-utils@1.0.2: + resolution: {integrity: sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==} + + negotiator@0.6.3: + resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==} + engines: {node: '>= 0.6'} + + neo-async@2.6.2: + resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} + + no-case@2.3.2: + resolution: {integrity: sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==} + + no-case@3.0.4: + resolution: {integrity: sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==} + + node-abi@3.65.0: + resolution: {integrity: sha512-ThjYBfoDNr08AWx6hGaRbfPwxKV9kVzAzOzlLKbk2CuqXE2xnCh+cbAGnwM3t8Lq4v9rUB7VfondlkBckcJrVA==} + engines: {node: '>=10'} + + node-abort-controller@3.1.1: + resolution: {integrity: sha512-AGK2yQKIjRuqnc6VkX2Xj5d+QW8xZ87pa1UK6yA6ouUyuxfHuMP6umE5QK7UmTeOAymo+Zx1Fxiuw9rVx8taHQ==} + + node-addon-api@6.1.0: + resolution: {integrity: sha512-+eawOlIgy680F0kBzPUNFhMZGtJ1YmqM6l4+Crf4IkImjYrO/mqPwRMh352g23uIaQKFItcQ64I7KMaJxHgAVA==} + + node-fetch@2.7.0: + resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==} + engines: {node: 4.x || >=6.0.0} + peerDependencies: + encoding: ^0.1.0 + peerDependenciesMeta: + encoding: + optional: true + + node-machine-id@1.1.12: + resolution: {integrity: sha512-QNABxbrPa3qEIfrE6GOJ7BYIuignnJw7iQ2YPbc3Nla1HzRJjXzZOiikfF8m7eAMfichLt3M4VgLOetqgDmgGQ==} + + node-plop@0.26.3: + resolution: {integrity: sha512-Cov028YhBZ5aB7MdMWJEmwyBig43aGL5WT4vdoB28Oitau1zZAcHUn8Sgfk9HM33TqhtLJ9PlM/O0Mv+QpV/4Q==} + engines: {node: '>=8.9.4'} + + node-releases@2.0.14: + resolution: {integrity: sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==} + + node-schedule@2.1.0: + resolution: {integrity: sha512-nl4JTiZ7ZQDc97MmpTq9BQjYhq7gOtoh7SiPH069gBFBj0PzD8HI7zyFs6rzqL8Y5tTiEEYLxgtbx034YPrbyQ==} + engines: {node: '>=6'} + + nodemailer-fetch@1.6.0: + resolution: {integrity: sha512-P7S5CEVGAmDrrpn351aXOLYs1R/7fD5NamfMCHyi6WIkbjS2eeZUB/TkuvpOQr0bvRZicVqo59+8wbhR3yrJbQ==} + + nodemailer-shared@1.1.0: + resolution: {integrity: sha512-68xW5LSyPWv8R0GLm6veAvm7E+XFXkVgvE3FW0FGxNMMZqMkPFeGDVALfR1DPdSfcoO36PnW7q5AAOgFImEZGg==} + + nodemon@3.0.2: + resolution: {integrity: sha512-9qIN2LNTrEzpOPBaWHTm4Asy1LxXLSickZStAQ4IZe7zsoIpD/A7LWxhZV3t4Zu352uBcqVnRsDXSMR2Sc3lTA==} + engines: {node: '>=10'} + hasBin: true + + noms@0.0.0: + resolution: {integrity: sha512-lNDU9VJaOPxUmXcLb+HQFeUgQQPtMI24Gt6hgfuMHRJgMRHMF/qZ4HJD3GDru4sSw9IQl2jPjAYnQrdIeLbwow==} + + nopt@5.0.0: + resolution: {integrity: sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==} + engines: {node: '>=6'} + hasBin: true + + normalize-package-data@2.5.0: + resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} + + normalize-path@3.0.0: + resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} + engines: {node: '>=0.10.0'} + + normalize-url@6.1.0: + resolution: {integrity: sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==} + engines: {node: '>=10'} + + npm-bundled@1.1.2: + resolution: {integrity: sha512-x5DHup0SuyQcmL3s7Rx/YQ8sbw/Hzg0rj48eN0dV7hf5cmQq5PXIeioroH3raV1QC1yh3uTYuMThvEQF3iKgGQ==} + + npm-normalize-package-bin@1.0.1: + resolution: {integrity: sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA==} + + npm-packlist@2.2.2: + resolution: {integrity: sha512-Jt01acDvJRhJGthnUJVF/w6gumWOZxO7IkpY/lsX9//zqQgnF7OJaxgQXcerd4uQOLu7W5bkb4mChL9mdfm+Zg==} + engines: {node: '>=10'} + hasBin: true + + npm-run-path@4.0.1: + resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} + engines: {node: '>=8'} + + npm-run-path@5.3.0: + resolution: {integrity: sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + npmlog@5.0.1: + resolution: {integrity: sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==} + deprecated: This package is no longer supported. + + nth-check@2.1.1: + resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} + + oauth-sign@0.9.0: + resolution: {integrity: sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==} + + object-assign@4.1.1: + resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} + engines: {node: '>=0.10.0'} + + object-copy@0.1.0: + resolution: {integrity: sha512-79LYn6VAb63zgtmAteVOWo9Vdj71ZVBy3Pbse+VqxDpEP83XuujMrGqHIwAXJ5I/aM0zU7dIyIAhifVTPrNItQ==} + engines: {node: '>=0.10.0'} + + object-inspect@1.13.1: + resolution: {integrity: sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==} + + object-keys@1.1.1: + resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} + engines: {node: '>= 0.4'} + + object-visit@1.0.1: + resolution: {integrity: sha512-GBaMwwAVK9qbQN3Scdo0OyvgPW7l3lnaVMj84uTOZlswkX0KpF6fyDBJhtTthf7pymztoN36/KEr1DyhF96zEA==} + engines: {node: '>=0.10.0'} + + object.defaults@1.1.0: + resolution: {integrity: sha512-c/K0mw/F11k4dEUBMW8naXUuBuhxRCfG7W+yFy8EcijU/rSmazOUd1XAEEe6bC0OuXY4HUKjTJv7xbxIMqdxrA==} + engines: {node: '>=0.10.0'} + + object.map@1.0.1: + resolution: {integrity: sha512-3+mAJu2PLfnSVGHwIWubpOFLscJANBKuB/6A4CxBstc4aqwQY0FWcsppuy4jU5GSB95yES5JHSI+33AWuS4k6w==} + engines: {node: '>=0.10.0'} + + object.pick@1.3.0: + resolution: {integrity: sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ==} + engines: {node: '>=0.10.0'} + + oblivious-set@1.0.0: + resolution: {integrity: sha512-z+pI07qxo4c2CulUHCDf9lcqDlMSo72N/4rLUpRXf6fu+q8vjt8y0xS+Tlf8NTJDdTXHbdeO1n3MlbctwEoXZw==} + + on-finished@2.4.1: + resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==} + engines: {node: '>= 0.8'} + + once@1.4.0: + resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} + + one-time@1.0.0: + resolution: {integrity: sha512-5DXOiRKwuSEcQ/l0kGCF6Q3jcADFv5tSmRaJck/OqkVFcOzutB134KRSfF0xDrL39MNnqxbHBbUUcjZIhTgb2g==} + + onetime@2.0.1: + resolution: {integrity: sha512-oyyPpiMaKARvvcgip+JV+7zci5L8D1W9RZIz2l1o08AM3pfspitVWnPt3mzHcBPp12oYMTy0pqrFs/C+m3EwsQ==} + engines: {node: '>=4'} + + onetime@5.1.2: + resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} + engines: {node: '>=6'} + + onetime@6.0.0: + resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==} + engines: {node: '>=12'} + + only@0.0.2: + resolution: {integrity: sha512-Fvw+Jemq5fjjyWz6CpKx6w9s7xxqo3+JCyM0WXWeCSOboZ8ABkyvP8ID4CZuChA/wxSx+XSJmdOm8rGVyJ1hdQ==} + + open@8.4.0: + resolution: {integrity: sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q==} + engines: {node: '>=12'} + + open@9.1.0: + resolution: {integrity: sha512-OS+QTnw1/4vrf+9hh1jc1jnYjzSG4ttTBB8UxOwAnInG3Uo4ssetzC1ihqaIHjLJnA5GGlRl6QlZXOTQhRBUvg==} + engines: {node: '>=14.16'} + + opener@1.5.2: + resolution: {integrity: sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==} + hasBin: true + + ora@3.4.0: + resolution: {integrity: sha512-eNwHudNbO1folBP3JsZ19v9azXWtQZjICdr3Q0TDPIaeBQ3mXLrh54wM+er0+hSp+dWKf+Z8KM58CYzEyIYxYg==} + engines: {node: '>=6'} + + ora@5.4.1: + resolution: {integrity: sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==} + engines: {node: '>=10'} + + os-paths@7.4.0: + resolution: {integrity: sha512-Ux1J4NUqC6tZayBqLN1kUlDAEvLiQlli/53sSddU4IN+h+3xxnv2HmRSMpVSvr1hvJzotfMs3ERvETGK+f4OwA==} + engines: {node: '>= 4.0'} + + os-tmpdir@1.0.2: + resolution: {integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==} + engines: {node: '>=0.10.0'} + + outdent@0.8.0: + resolution: {integrity: sha512-KiOAIsdpUTcAXuykya5fnVVT+/5uS0Q1mrkRHcF89tpieSmY33O/tmc54CqwA+bfhbtEfZUNLHaPUiB9X3jt1A==} + + outvariant@1.4.2: + resolution: {integrity: sha512-Ou3dJ6bA/UJ5GVHxah4LnqDwZRwAmWxrG3wtrHrbGnP4RnLCtA64A4F+ae7Y8ww660JaddSoArUR5HjipWSHAQ==} + + p-cancelable@2.1.1: + resolution: {integrity: sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==} + engines: {node: '>=8'} + + p-finally@1.0.0: + resolution: {integrity: sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==} + engines: {node: '>=4'} + + p-is-promise@3.0.0: + resolution: {integrity: sha512-Wo8VsW4IRQSKVXsJCn7TomUaVtyfjVDn3nUP7kE967BQk0CwFpdbZs0X0uk5sW9mkBa9eNM7hCMaG93WUAwxYQ==} + engines: {node: '>=8'} + + p-limit@2.3.0: + resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} + engines: {node: '>=6'} + + p-limit@3.1.0: + resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} + engines: {node: '>=10'} + + p-locate@3.0.0: + resolution: {integrity: sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==} + engines: {node: '>=6'} + + p-locate@4.1.0: + resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} + engines: {node: '>=8'} + + p-locate@5.0.0: + resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} + engines: {node: '>=10'} + + p-map@3.0.0: + resolution: {integrity: sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ==} + engines: {node: '>=8'} + + p-map@4.0.0: + resolution: {integrity: sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==} + engines: {node: '>=10'} + + p-queue@6.6.2: + resolution: {integrity: sha512-RwFpb72c/BhQLEXIZ5K2e+AhgNVmIejGlTgiB9MzZ0e93GRvqZ7uSi0dvRF7/XIXDeNkra2fNHBxTyPDGySpjQ==} + engines: {node: '>=8'} + + p-timeout@3.2.0: + resolution: {integrity: sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==} + engines: {node: '>=8'} + + p-try@2.2.0: + resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} + engines: {node: '>=6'} + + package-json@7.0.0: + resolution: {integrity: sha512-CHJqc94AA8YfSLHGQT3DbvSIuE12NLFekpM4n7LRrAd3dOJtA911+4xe9q6nC3/jcKraq7nNS9VxgtT0KC+diA==} + engines: {node: '>=12'} + + param-case@2.1.1: + resolution: {integrity: sha512-eQE845L6ot89sk2N8liD8HAuH4ca6Vvr7VWAWwt7+kvvG5aBcPmmphQ68JsEG2qa9n1TykS2DLeMt363AAH8/w==} + + param-case@3.0.4: + resolution: {integrity: sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==} + + parent-module@1.0.1: + resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} + engines: {node: '>=6'} + + parse-filepath@1.0.2: + resolution: {integrity: sha512-FwdRXKCohSVeXqwtYonZTXtbGJKrn+HNyWDYVcp5yuJlesTwNH4rsmRZ+GrKAPJ5bLpRxESMeS+Rl0VCHRvB2Q==} + engines: {node: '>=0.8'} + + parse-json@5.2.0: + resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} + engines: {node: '>=8'} + + parse-passwd@1.0.0: + resolution: {integrity: sha512-1Y1A//QUXEZK7YKz+rD9WydcE1+EuPr6ZBgKecAB8tmoW6UFv0NREVJe1p+jRxtThkcbbKkfwIbWJe/IeE6m2Q==} + engines: {node: '>=0.10.0'} + + parse-path@7.0.0: + resolution: {integrity: sha512-Euf9GG8WT9CdqwuWJGdf3RkUcTBArppHABkO7Lm8IzRQp0e2r/kkFnmhu4TSK30Wcu5rVAZLmfPKSBBi9tWFog==} + + parse-srcset@1.0.2: + resolution: {integrity: sha512-/2qh0lav6CmI15FzA3i/2Bzk2zCgQhGMkvhOhKNcBVQ1ldgpbfiNTVslmooUmWJcADi1f1kIeynbDRVzNlfR6Q==} + + parse-url@8.1.0: + resolution: {integrity: sha512-xDvOoLU5XRrcOZvnI6b8zA6n9O9ejNk/GExuz1yBuWUGn9KA97GI6HTs6u02wKara1CeVmZhH+0TZFdWScR89w==} + + parseurl@1.3.3: + resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==} + engines: {node: '>= 0.8'} + + pascal-case@2.0.1: + resolution: {integrity: sha512-qjS4s8rBOJa2Xm0jmxXiyh1+OFf6ekCWOvUaRgAQSktzlTbMotS0nmG9gyYAybCWBcuP4fsBeRCKNwGBnMe2OQ==} + + pascal-case@3.1.2: + resolution: {integrity: sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==} + + pascalcase@0.1.1: + resolution: {integrity: sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw==} + engines: {node: '>=0.10.0'} + + passport-local@1.0.0: + resolution: {integrity: sha512-9wCE6qKznvf9mQYYbgJ3sVOHmCWoUNMVFoZzNoznmISbhnNNPhN9xfY3sLmScHMetEJeoY7CXwfhCe7argfQow==} + engines: {node: '>= 0.4.0'} + + passport-strategy@1.0.0: + resolution: {integrity: sha512-CB97UUvDKJde2V0KDWWB3lyf6PC3FaZP7YxZ2G8OAtn9p4HI9j9JLP9qjOGZFvyl8uwNT8qM+hGnz/n16NI7oA==} + engines: {node: '>= 0.4.0'} + + passport@0.6.0: + resolution: {integrity: sha512-0fe+p3ZnrWRW74fe8+SvCyf4a3Pb2/h7gFkQ8yTJpAO50gDzlfjZUZTO1k5Eg9kUct22OxHLqDZoKUWRHOh9ug==} + engines: {node: '>= 0.4.0'} + + path-case@2.1.1: + resolution: {integrity: sha512-Ou0N05MioItesaLr9q8TtHVWmJ6fxWdqKB2RohFmNWVyJ+2zeKIeDNWAN6B/Pe7wpzWChhZX6nONYmOnMeJQ/Q==} + + path-exists@3.0.0: + resolution: {integrity: sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==} + engines: {node: '>=4'} + + path-exists@4.0.0: + resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} + engines: {node: '>=8'} + + path-is-absolute@1.0.1: + resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} + engines: {node: '>=0.10.0'} + + path-key@3.1.1: + resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} + engines: {node: '>=8'} + + path-key@4.0.0: + resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==} + engines: {node: '>=12'} + + path-parse@1.0.7: + resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} + + path-root-regex@0.1.2: + resolution: {integrity: sha512-4GlJ6rZDhQZFE0DPVKh0e9jmZ5egZfxTkp7bcRDuPlJXbAwhxcl2dINPUAsjLdejqaLsCeg8axcLjIbvBjN4pQ==} + engines: {node: '>=0.10.0'} + + path-root@0.1.1: + resolution: {integrity: sha512-QLcPegTHF11axjfojBIoDygmS2E3Lf+8+jI6wOVmNVenrKSo3mFdSGiIgdSHenczw3wPtlVMQaFVwGmM7BJdtg==} + engines: {node: '>=0.10.0'} + + path-to-regexp@1.8.0: + resolution: {integrity: sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA==} + + path-to-regexp@6.2.2: + resolution: {integrity: sha512-GQX3SSMokngb36+whdpRXE+3f9V8UzyAorlYvOGx87ufGHehNTn5lCxrKtLyZ4Yl/wEKnNnr98ZzOwwDZV5ogw==} + + path-type@4.0.0: + resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} + engines: {node: '>=8'} + + pause@0.0.1: + resolution: {integrity: sha512-KG8UEiEVkR3wGEb4m5yZkVCzigAD+cVEJck2CzYZO37ZGJfctvVptVO192MwrtPhzONn6go8ylnOdMhKqi4nfg==} + + pg-cloudflare@1.1.1: + resolution: {integrity: sha512-xWPagP/4B6BgFO+EKz3JONXv3YDgvkbVrGw2mTo3D6tVDQRh1e7cqVGvyR3BE+eQgAvx1XhW/iEASj4/jCWl3Q==} + + pg-connection-string@2.6.1: + resolution: {integrity: sha512-w6ZzNu6oMmIzEAYVw+RLK0+nqHPt8K3ZnknKi+g48Ak2pr3dtljJW3o+D/n2zzCG07Zoe9VOX3aiKpj+BN0pjg==} + + pg-connection-string@2.6.4: + resolution: {integrity: sha512-v+Z7W/0EO707aNMaAEfiGnGL9sxxumwLl2fJvCQtMn9Fxsg+lPpPkdcyBSv/KFgpGdYkMfn+EI1Or2EHjpgLCA==} + + pg-int8@1.0.1: + resolution: {integrity: sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw==} + engines: {node: '>=4.0.0'} + + pg-pool@3.6.2: + resolution: {integrity: sha512-Htjbg8BlwXqSBQ9V8Vjtc+vzf/6fVUuak/3/XXKA9oxZprwW3IMDQTGHP+KDmVL7rtd+R1QjbnCFPuTHm3G4hg==} + peerDependencies: + pg: '>=8.0' + + pg-protocol@1.6.1: + resolution: {integrity: sha512-jPIlvgoD63hrEuihvIg+tJhoGjUsLPn6poJY9N5CnlPd91c2T18T/9zBtLxZSb1EhYxBRoZJtzScCaWlYLtktg==} + + pg-types@2.2.0: + resolution: {integrity: sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA==} + engines: {node: '>=4'} + + pg@8.12.0: + resolution: {integrity: sha512-A+LHUSnwnxrnL/tZ+OLfqR1SxLN3c/pgDztZ47Rpbsd4jUytsTtwQo/TLPRzPJMp/1pbhYVhH9cuSZLAajNfjQ==} + engines: {node: '>= 8.0.0'} + peerDependencies: + pg-native: '>=3.0.1' + peerDependenciesMeta: + pg-native: + optional: true + + pgpass@1.0.5: + resolution: {integrity: sha512-FdW9r/jQZhSeohs1Z3sI1yxFQNFvMcnmfuj4WBMUTxOrAyLMaTcE1aAMBiTlbMNaXvBCQuVi0R7hd8udDSP7ug==} + + picocolors@1.0.1: + resolution: {integrity: sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==} + + picomatch@2.3.1: + resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} + engines: {node: '>=8.6'} + + pkg-up@3.1.0: + resolution: {integrity: sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA==} + engines: {node: '>=8'} + + plop@2.7.6: + resolution: {integrity: sha512-IgnYAsC3Ni7t1cDU7wH2151CD22YhMxH8PFh+iPzCf+WuGEWXslJ5t1Tpr0N/gjL23CAV/HbLAWug2IPM2YrHg==} + engines: {node: '>=8.9.4'} + hasBin: true + + pluralize@8.0.0: + resolution: {integrity: sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==} + engines: {node: '>=4'} + + pony-cause@2.1.11: + resolution: {integrity: sha512-M7LhCsdNbNgiLYiP4WjsfLUuFmCfnjdF6jKe2R9NKl4WFN+HZPGHJZ9lnLP7f9ZnKe3U9nuWD0szirmj+migUg==} + engines: {node: '>=12.0.0'} + + posix-character-classes@0.1.1: + resolution: {integrity: sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg==} + engines: {node: '>=0.10.0'} + + possible-typed-array-names@1.0.0: + resolution: {integrity: sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==} + engines: {node: '>= 0.4'} + + postcss-modules-extract-imports@3.1.0: + resolution: {integrity: sha512-k3kNe0aNFQDAZGbin48pL2VNidTF0w4/eASDsxlyspobzU3wZQLOGj7L9gfRe0Jo9/4uud09DsjFNH7winGv8Q==} + engines: {node: ^10 || ^12 || >= 14} + peerDependencies: + postcss: ^8.1.0 + + postcss-modules-local-by-default@4.0.5: + resolution: {integrity: sha512-6MieY7sIfTK0hYfafw1OMEG+2bg8Q1ocHCpoWLqOKj3JXlKu4G7btkmM/B7lFubYkYWmRSPLZi5chid63ZaZYw==} + engines: {node: ^10 || ^12 || >= 14} + peerDependencies: + postcss: ^8.1.0 + + postcss-modules-scope@3.2.0: + resolution: {integrity: sha512-oq+g1ssrsZOsx9M96c5w8laRmvEu9C3adDSjI8oTcbfkrTE8hx/zfyobUoWIxaKPO8bt6S62kxpw5GqypEw1QQ==} + engines: {node: ^10 || ^12 || >= 14} + peerDependencies: + postcss: ^8.1.0 + + postcss-modules-values@4.0.0: + resolution: {integrity: sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==} + engines: {node: ^10 || ^12 || >= 14} + peerDependencies: + postcss: ^8.1.0 + + postcss-selector-parser@6.1.0: + resolution: {integrity: sha512-UMz42UD0UY0EApS0ZL9o1XnLhSTtvvvLe5Dc2H2O56fvRZi+KulDyf5ctDhhtYJBGKStV2FL1fy6253cmLgqVQ==} + engines: {node: '>=4'} + + postcss-value-parser@4.2.0: + resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} + + postcss@8.4.38: + resolution: {integrity: sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==} + engines: {node: ^10 || ^12 || >=14} + + postgres-array@2.0.0: + resolution: {integrity: sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA==} + engines: {node: '>=4'} + + postgres-bytea@1.0.0: + resolution: {integrity: sha512-xy3pmLuQqRBZBXDULy7KbaitYqLcmxigw14Q5sj8QBVLqEwXfeybIKVWiqAXTlcvdvb0+xkOtDbfQMOf4lST1w==} + engines: {node: '>=0.10.0'} + + postgres-date@1.0.7: + resolution: {integrity: sha512-suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q==} + engines: {node: '>=0.10.0'} + + postgres-interval@1.2.0: + resolution: {integrity: sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ==} + engines: {node: '>=0.10.0'} + + prebuild-install@7.1.2: + resolution: {integrity: sha512-UnNke3IQb6sgarcZIDU3gbMeTp/9SSU1DAIkil7PrqG1vZlBtY5msYccSKSHDqa3hNg436IXK+SNImReuA1wEQ==} + engines: {node: '>=10'} + hasBin: true + + prettier-plugin-packagejson@2.4.5: + resolution: {integrity: sha512-glG71jE1gO3y5+JNAhC8X+4yrlN28rub6Aj461SKbaPie9RgMiHKcInH2Moi2VGOfkTXaEHBhg4uVMBqa+kBUA==} + peerDependencies: + prettier: '>= 1.16.0' + peerDependenciesMeta: + prettier: + optional: true + + prettier@2.8.4: + resolution: {integrity: sha512-vIS4Rlc2FNh0BySk3Wkd6xmwxB0FpOndW5fisM5H8hsZSxU2VWVB5CWIkIjWvrHjIhxk2g3bfMKM87zNTrZddw==} + engines: {node: '>=10.13.0'} + hasBin: true + + pretty-error@4.0.0: + resolution: {integrity: sha512-AoJ5YMAcXKYxKhuJGdcvse+Voc6v1RgnsR3nWcYU7q4t6z0Q6T86sv5Zq8VIRbOWWFpvdGE83LtdSMNd+6Y0xw==} + + pretty-format@27.5.1: + resolution: {integrity: sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + process-nextick-args@2.0.1: + resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} + + progress-stream@2.0.0: + resolution: {integrity: sha512-xJwOWR46jcXUq6EH9yYyqp+I52skPySOeHfkxOZ2IY1AiBi/sFJhbhAKHoV3OTw/omQ45KTio9215dRJ2Yxd3Q==} + + prompts@2.4.2: + resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==} + engines: {node: '>= 6'} + + prop-types@15.8.1: + resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} + + property-expr@2.0.6: + resolution: {integrity: sha512-SVtmxhRE/CGkn3eZY1T6pC8Nln6Fr/lu1mKSgRud0eC73whjGfoAogbn78LkD8aFL0zz3bAFerKSnOl7NlErBA==} + + proto-list@1.2.4: + resolution: {integrity: sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==} + + protocols@2.0.1: + resolution: {integrity: sha512-/XJ368cyBJ7fzLMwLKv1e4vLxOju2MNAIokcr7meSaNcVbWz/CPcW22cP04mwxOErdA5mwjA8Q6w/cdAQxVn7Q==} + + proxy-from-env@1.1.0: + resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} + + pstree.remy@1.1.8: + resolution: {integrity: sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w==} + + pump@3.0.0: + resolution: {integrity: sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==} + + punycode@1.3.2: + resolution: {integrity: sha512-RofWgt/7fL5wP1Y7fxE7/EmTLzQVnB0ycyibJ0OOHIlJqTNzglYFxVwETOcIoJqJmpDXJ9xImDv+Fq34F/d4Dw==} + + punycode@2.3.1: + resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} + engines: {node: '>=6'} + + purest@4.0.2: + resolution: {integrity: sha512-Uq6kdia8zGVHOb/0zAOb7FvKFMKeyeTZTLEwpO0JR3cIFEkpH6asv3ls9M9URDjHiYIdgAPmht5ecSbvPacfyg==} + engines: {node: '>=12.0.0'} + + q@1.5.1: + resolution: {integrity: sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw==} + engines: {node: '>=0.6.0', teleport: '>=0.2.0'} + deprecated: |- + You or someone you depend on is using Q, the JavaScript Promise library that gave JavaScript developers strong feelings about promises. They can almost certainly migrate to the native JavaScript promise now. Thank you literally everyone for joining me in this bet against the odds. Be excellent to each other. + + (For a CapTP with native promises, see @endo/eventual-send and @endo/captp) + + qs@6.11.1: + resolution: {integrity: sha512-0wsrzgTz/kAVIeuxSjnpGC56rzYtr6JT/2BwEvMaPhFIoYa1aGO8LbzuU1R0uUYQkLpWBTOj0l/CLAJB64J6nQ==} + engines: {node: '>=0.6'} + + qs@6.12.1: + resolution: {integrity: sha512-zWmv4RSuB9r2mYQw3zxQuHWeU+42aKi1wWig/j4ele4ygELZ7PEO6MM7rim9oAQH2A5MWfsAVf/jPvTPgCbvUQ==} + engines: {node: '>=0.6'} + + querystring@0.2.0: + resolution: {integrity: sha512-X/xY82scca2tau62i9mDyU9K+I+djTMUsvwf7xnUX5GLvVzgJybOJf4Y6o9Zx3oJK/LSXg5tTZBjwzqVPaPO2g==} + engines: {node: '>=0.4.x'} + deprecated: The querystring API is considered Legacy. new code should use the URLSearchParams API instead. + + queue-microtask@1.2.3: + resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} + + queue-tick@1.0.1: + resolution: {integrity: sha512-kJt5qhMxoszgU/62PLP1CJytzd2NKetjSRnyuj31fDd3Rlcz3fzlFdFLD1SItunPwyqEOkca6GbV612BWfaBag==} + + quick-lru@5.1.1: + resolution: {integrity: sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==} + engines: {node: '>=10'} + + randombytes@2.1.0: + resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} + + range-parser@1.2.1: + resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==} + engines: {node: '>= 0.6'} + + raw-body@2.5.2: + resolution: {integrity: sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==} + engines: {node: '>= 0.8'} + + rc@1.2.8: + resolution: {integrity: sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==} + hasBin: true + + react-dnd-html5-backend@16.0.1: + resolution: {integrity: sha512-Wu3dw5aDJmOGw8WjH1I1/yTH+vlXEL4vmjk5p+MHxP8HuHJS1lAGeIdG/hze1AvNeXWo/JgULV87LyQOr+r5jw==} + + react-dnd@16.0.1: + resolution: {integrity: sha512-QeoM/i73HHu2XF9aKksIUuamHPDvRglEwdHL4jsp784BgUuWcg6mzfxT0QDdQz8Wj0qyRKx2eMg8iZtWvU4E2Q==} + peerDependencies: + '@types/hoist-non-react-statics': '>= 3.3.1' + '@types/node': '>= 12' + '@types/react': '>= 16' + react: '>= 16.14' + peerDependenciesMeta: + '@types/hoist-non-react-statics': + optional: true + '@types/node': + optional: true + '@types/react': + optional: true + + react-dom@18.3.1: + resolution: {integrity: sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==} + peerDependencies: + react: ^18.3.1 + + react-error-boundary@3.1.4: + resolution: {integrity: sha512-uM9uPzZJTF6wRQORmSrvOIgt4lJ9MC1sNgEOj2XGsDTRE4kmpWxg7ENK9EWNKJRMAOY9z0MuF4yIfl6gp4sotA==} + engines: {node: '>=10', npm: '>=6'} + peerDependencies: + react: '>=16.13.1' + + react-fast-compare@2.0.4: + resolution: {integrity: sha512-suNP+J1VU1MWFKcyt7RtjiSWUjvidmQSlqu+eHslq+342xCbGTYmC0mEhPCOHxlW0CywylOC1u2DFAT+bv4dBw==} + + react-fast-compare@3.2.2: + resolution: {integrity: sha512-nsO+KSNgo1SbJqJEYRE9ERzo7YtYbou/OqjSQKxV7jcKox7+usiUVZOAC+XnDOABXggQTno0Y1CpVnuWEc1boQ==} + + react-helmet@6.1.0: + resolution: {integrity: sha512-4uMzEY9nlDlgxr61NL3XbKRy1hEkXmKNXhjbAIOVw5vcFrsdYbH2FEwcNyWvWinl103nXgzYNlns9ca+8kFiWw==} + peerDependencies: + react: '>=16.3.0' + + react-intl@6.3.2: + resolution: {integrity: sha512-NT03zOHRAFGcZdTx4cXcVKZtnWBOM6RfLPK8Q67eA+Ba+pHdYb+cmrahncqAnevZKgO1r/nEauiVFKwQeudLIw==} + peerDependencies: + react: ^16.6.0 || 17 || 18 + typescript: ^4.7 + peerDependenciesMeta: + typescript: + optional: true + + react-intl@6.4.1: + resolution: {integrity: sha512-/aT5595AEMZ+Pjmt8W2R5/ZkYJmyyd6jTzHzqhJ1LnfeG36+N5huBtykxYhHqLc1BrIRQ1fTX1orYC0Ej5ojtg==} + peerDependencies: + react: ^16.6.0 || 17 || 18 + typescript: ^4.7 || 5 + peerDependenciesMeta: + typescript: + optional: true + + react-is@16.13.1: + resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} + + react-is@17.0.2: + resolution: {integrity: sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==} + + react-is@18.3.1: + resolution: {integrity: sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==} + + react-query@3.24.3: + resolution: {integrity: sha512-JipKpn7XoDVvRWwXWXKSJU5SbNJKqspx9IRBntaQt1EQOBXe9314Z/8cV9YXXbZIhzrHAetT3X7tRClZaYk98g==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 + react-dom: '*' + react-native: '*' + peerDependenciesMeta: + react-dom: + optional: true + react-native: + optional: true + + react-query@3.39.3: + resolution: {integrity: sha512-nLfLz7GiohKTJDuT4us4X3h/8unOh+00MLb2yJoGTPjxKs2bc1iDhkNx2bd5MKklXnOD3NrVZ+J2UXujA5In4g==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + react-dom: '*' + react-native: '*' + peerDependenciesMeta: + react-dom: + optional: true + react-native: + optional: true + + react-redux@8.0.5: + resolution: {integrity: sha512-Q2f6fCKxPFpkXt1qNRZdEDLlScsDWyrgSj0mliK59qU6W5gvBiKkdMEG2lJzhd1rCctf0hb6EtePPLZ2e0m1uw==} + peerDependencies: + '@types/react': ^16.8 || ^17.0 || ^18.0 + '@types/react-dom': ^16.8 || ^17.0 || ^18.0 + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + react-native: '>=0.59' + redux: ^4 + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + react-dom: + optional: true + react-native: + optional: true + redux: + optional: true + + react-redux@8.1.1: + resolution: {integrity: sha512-5W0QaKtEhj+3bC0Nj0NkqkhIv8gLADH/2kYFMTHxCVqQILiWzLv6MaLuV5wJU3BQEdHKzTfcvPN0WMS6SC1oyA==} + peerDependencies: + '@types/react': ^16.8 || ^17.0 || ^18.0 + '@types/react-dom': ^16.8 || ^17.0 || ^18.0 + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + react-native: '>=0.59' + redux: ^4 || ^5.0.0-beta.0 + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + react-dom: + optional: true + react-native: + optional: true + redux: + optional: true + + react-refresh@0.14.0: + resolution: {integrity: sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ==} + engines: {node: '>=0.10.0'} + + react-remove-scroll-bar@2.3.6: + resolution: {integrity: sha512-DtSYaao4mBmX+HDo5YWYdBWQwYIQQshUV/dVxFxK+KM26Wjwp1gZ6rv6OC3oujI6Bfu6Xyg3TwK533AQutsn/g==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + + react-remove-scroll@2.5.10: + resolution: {integrity: sha512-m3zvBRANPBw3qxVVjEIPEQinkcwlFZ4qyomuWVpNJdv4c6MvHfXV0C3L9Jx5rr3HeBHKNRX+1jreB5QloDIJjA==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + + react-remove-scroll@2.5.5: + resolution: {integrity: sha512-ImKhrzJJsyXJfBZ4bzu8Bwpka14c/fQt0k+cyFp/PBhTfyDnU5hjOtM4AG/0AMyy8oKzOTR0lDgJIM7pYXI0kw==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + + react-router-dom@5.3.4: + resolution: {integrity: sha512-m4EqFMHv/Ih4kpcBCONHbkT68KoAeHN4p3lAGoNryfHi0dMy0kCzEZakiKRsvg5wHZ/JLrLW8o8KomWiz/qbYQ==} + peerDependencies: + react: '>=15' + + react-router@5.3.4: + resolution: {integrity: sha512-Ys9K+ppnJah3QuaRiLxk+jDWOR1MekYQrlytiXxC1RyfbdsZkS5pvKAzCCr031xHixZwpnsYNT5xysdFHQaYsA==} + peerDependencies: + react: '>=15' + + react-select@5.7.0: + resolution: {integrity: sha512-lJGiMxCa3cqnUr2Jjtg9YHsaytiZqeNOKeibv6WF5zbK/fPegZ1hg3y/9P1RZVLhqBTs0PfqQLKuAACednYGhQ==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + + react-shallow-renderer@16.15.0: + resolution: {integrity: sha512-oScf2FqQ9LFVQgA73vr86xl2NaOIX73rh+YFqcOp68CWj56tSfgtGKrEbyhCj0rSijyG9M1CYprTh39fBi5hzA==} + peerDependencies: + react: ^16.0.0 || ^17.0.0 || ^18.0.0 + + react-side-effect@2.1.2: + resolution: {integrity: sha512-PVjOcvVOyIILrYoyGEpDN3vmYNLdy1CajSFNt4TDsVQC5KpTijDvWVoR+/7Rz2xT978D8/ZtFceXxzsPwZEDvw==} + peerDependencies: + react: ^16.3.0 || ^17.0.0 || ^18.0.0 + + react-style-singleton@2.2.1: + resolution: {integrity: sha512-ZWj0fHEMyWkHzKYUr2Bs/4zU6XLmq9HsgBURm7g5pAVfyn49DgUiNgY2d4lXRlYSiCif9YBGpQleewkcqddc7g==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + + react-test-renderer@18.3.1: + resolution: {integrity: sha512-KkAgygexHUkQqtvvx/otwxtuFu5cVjfzTCtjXLH9boS19/Nbtg84zS7wIQn39G8IlrhThBpQsMKkq5ZHZIYFXA==} + peerDependencies: + react: ^18.3.1 + + react-transition-group@4.4.5: + resolution: {integrity: sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g==} + peerDependencies: + react: '>=16.6.0' + react-dom: '>=16.6.0' + + react-window@1.8.8: + resolution: {integrity: sha512-D4IiBeRtGXziZ1n0XklnFGu7h9gU684zepqyKzgPNzrsrk7xOCxni+TCckjg2Nr/DiaEEGVVmnhYSlT2rB47dQ==} + engines: {node: '>8.0.0'} + peerDependencies: + react: ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 + react-dom: ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 + + react@18.3.1: + resolution: {integrity: sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==} + engines: {node: '>=0.10.0'} + + read-pkg-up@7.0.1: + resolution: {integrity: sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==} + engines: {node: '>=8'} + + read-pkg@5.2.0: + resolution: {integrity: sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==} + engines: {node: '>=8'} + + readable-stream@1.0.34: + resolution: {integrity: sha512-ok1qVCJuRkNmvebYikljxJA/UEsKwLl2nI1OmaqAu4/UE+h0wKCHok4XkL/gvi39OacXvw59RJUOFUkDib2rHg==} + + readable-stream@2.3.8: + resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==} + + readable-stream@3.6.2: + resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} + engines: {node: '>= 6'} + + readdirp@3.6.0: + resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} + engines: {node: '>=8.10.0'} + + rechoir@0.6.2: + resolution: {integrity: sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==} + engines: {node: '>= 0.10'} + + rechoir@0.8.0: + resolution: {integrity: sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ==} + engines: {node: '>= 10.13.0'} + + redux-thunk@2.4.2: + resolution: {integrity: sha512-+P3TjtnP0k/FEjcBL5FZpoovtvrTNT/UXd4/sluaSyrURlSlhLSzEdfsTBW7WsKB6yPvgd7q/iZPICFjW4o57Q==} + peerDependencies: + redux: ^4 + + redux@4.2.1: + resolution: {integrity: sha512-LAUYz4lc+Do8/g7aeRa8JkyDErK6ekstQaqWQrNRW//MY1TvCEpMtpTWvlQ+FPbWCx+Xixu/6SHt5N0HR+SB4w==} + + regenerator-runtime@0.14.1: + resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==} + + regex-not@1.0.2: + resolution: {integrity: sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==} + engines: {node: '>=0.10.0'} + + registry-auth-token@4.2.2: + resolution: {integrity: sha512-PC5ZysNb42zpFME6D/XlIgtNGdTl8bBOCw90xQLVMpzuuubJKYDWFAEuUNc+Cn8Z8724tg2SDhDRrkVEsqfDMg==} + engines: {node: '>=6.0.0'} + + registry-auth-token@5.0.2: + resolution: {integrity: sha512-o/3ikDxtXaA59BmZuZrJZDJv8NMDGSj+6j6XaeBmHw8eY1i1qd9+6H+LjVvQXx3HN6aRCGa1cUdJ9RaJZUugnQ==} + engines: {node: '>=14'} + + registry-url@5.1.0: + resolution: {integrity: sha512-8acYXXTI0AkQv6RAOjE3vOaIXZkT9wo4LOFbBKYQEEnnMNBpKqdUrI6S4NT0KPIo/WVvJ5tE/X5LF/TQUf0ekw==} + engines: {node: '>=8'} + + relateurl@0.2.7: + resolution: {integrity: sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==} + engines: {node: '>= 0.10'} + + remove-accents@0.4.2: + resolution: {integrity: sha512-7pXIJqJOq5tFgG1A2Zxti3Ht8jJF337m4sowbuHsW30ZnkQFnDzy9qBNhgzX8ZLW4+UBcXiiR7SwR6pokHsxiA==} + + remove-accents@0.5.0: + resolution: {integrity: sha512-8g3/Otx1eJaVD12e31UbJj1YzdtVvzH85HV7t+9MJYk/u3XmkOUJ5Ys9wQrf9PCPK8+xn4ymzqYCiZl6QWKn+A==} + + renderkid@3.0.0: + resolution: {integrity: sha512-q/7VIQA8lmM1hF+jn+sFSPWGlMkSAeNYcPLmDQx2zzuiDfaLrOmumR8iaUKlenFgh0XRPIUeSPlH3A+AW3Z5pg==} + + repeat-element@1.1.4: + resolution: {integrity: sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==} + engines: {node: '>=0.10.0'} + + repeat-string@1.6.1: + resolution: {integrity: sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==} + engines: {node: '>=0.10'} + + request-compose@2.1.6: + resolution: {integrity: sha512-S07L+2VbJB32WddD/o/PnYGKym63zLVbymygVWXvt8L79VAngcjAxhHaGuFOICLxEV90EasEPzqPKKHPspXP8w==} + engines: {node: '>=12.0.0'} + + request-ip@3.3.0: + resolution: {integrity: sha512-cA6Xh6e0fDBBBwH77SLJaJPBmD3nWVAcF9/XAcsrIHdjhFzFiB5aNQFytdjCGPezU3ROwrR11IddKAM08vohxA==} + + request-multipart@1.0.0: + resolution: {integrity: sha512-dazx88T19dIKFNc0XdlZV8H46D2RmNFdR4mipcbrFOaN70PSSSMM3urVY+eVbrpraf/fHXccxFhLvG1wkSUtKQ==} + engines: {node: '>=8.0.0'} + + request-oauth@1.0.1: + resolution: {integrity: sha512-85THTg1RgOYtqQw42JON6AqvHLptlj1biw265Tsq4fD4cPdUvhDB2Qh9NTv17yCD322ROuO9aOmpc4GyayGVBA==} + engines: {node: '>=8.0.0'} + + require-directory@2.1.1: + resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} + engines: {node: '>=0.10.0'} + + require-from-string@2.0.2: + resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} + engines: {node: '>=0.10.0'} + + reselect@4.1.8: + resolution: {integrity: sha512-ab9EmR80F/zQTMNeneUr4cv+jSwPJgIlvEmVwLerwrWVbpLlBuls9XHzIeTFy4cegU2NHBp3va0LKOzU5qFEYQ==} + + resolve-alpn@1.2.1: + resolution: {integrity: sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==} + + resolve-cwd@3.0.0: + resolution: {integrity: sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==} + engines: {node: '>=8'} + + resolve-dir@1.0.1: + resolution: {integrity: sha512-R7uiTjECzvOsWSfdM0QKFNBVFcK27aHOUwdvK53BcW8zqnGdYp0Fbj82cy54+2A4P2tFM22J5kRfe1R+lM/1yg==} + engines: {node: '>=0.10.0'} + + resolve-from@4.0.0: + resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} + engines: {node: '>=4'} + + resolve-from@5.0.0: + resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} + engines: {node: '>=8'} + + resolve-path@1.4.0: + resolution: {integrity: sha512-i1xevIst/Qa+nA9olDxLWnLk8YZbi8R/7JPbCMcgyWaFR6bKWaexgJgEB5oc2PKMjYdrHynyz0NY+if+H98t1w==} + engines: {node: '>= 0.8'} + + resolve-pathname@3.0.0: + resolution: {integrity: sha512-C7rARubxI8bXFNB/hqcp/4iUeIXJhJZvFPFPiSPRnhU5UPxzMFIl+2E6yY6c4k9giDJAhtV+enfA+G89N6Csng==} + + resolve-url@0.2.1: + resolution: {integrity: sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg==} + deprecated: https://github.com/lydell/resolve-url#deprecated + + resolve@1.22.8: + resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==} + hasBin: true + + responselike@2.0.1: + resolution: {integrity: sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw==} + + restore-cursor@2.0.0: + resolution: {integrity: sha512-6IzJLuGi4+R14vwagDHX+JrXmPVtPpn4mffDJ1UdR7/Edm87fl6yi8mMBIVvFtJaNTUvjughmW4hwLhRG7gC1Q==} + engines: {node: '>=4'} + + restore-cursor@3.1.0: + resolution: {integrity: sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==} + engines: {node: '>=8'} + + ret@0.1.15: + resolution: {integrity: sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==} + engines: {node: '>=0.12'} + + reusify@1.0.4: + resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} + engines: {iojs: '>=1.0.0', node: '>=0.10.0'} + + rimraf@2.7.1: + resolution: {integrity: sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==} + deprecated: Rimraf versions prior to v4 are no longer supported + hasBin: true + + rimraf@3.0.2: + resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} + deprecated: Rimraf versions prior to v4 are no longer supported + hasBin: true + + rollup@4.18.0: + resolution: {integrity: sha512-QmJz14PX3rzbJCN1SG4Xe/bAAX2a6NpCP8ab2vfu2GiUr8AQcr2nCV/oEO3yneFarB67zk8ShlIyWb2LGTb3Sg==} + engines: {node: '>=18.0.0', npm: '>=8.0.0'} + hasBin: true + + run-applescript@5.0.0: + resolution: {integrity: sha512-XcT5rBksx1QdIhlFOCtgZkB99ZEouFZ1E2Kc2LHqNW13U3/74YGdkQRmThTwxy4QIyookibDKYZOPqX//6BlAg==} + engines: {node: '>=12'} + + run-async@2.4.1: + resolution: {integrity: sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==} + engines: {node: '>=0.12.0'} + + run-parallel@1.2.0: + resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} + + rxjs@6.6.7: + resolution: {integrity: sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==} + engines: {npm: '>=2.0.0'} + + rxjs@7.8.1: + resolution: {integrity: sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==} + + safe-buffer@5.1.2: + resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} + + safe-buffer@5.2.1: + resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} + + safe-regex@1.1.0: + resolution: {integrity: sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg==} + + safe-stable-stringify@2.4.3: + resolution: {integrity: sha512-e2bDA2WJT0wxseVd4lsDP4+3ONX6HpMXQa1ZhFQ7SU+GjvORCmShbCMltrtIDfkYhVHrOcPtj+KhmDBdPdZD1g==} + engines: {node: '>=10'} + + safer-buffer@2.1.2: + resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} + + sanitize-html@2.13.0: + resolution: {integrity: sha512-Xff91Z+4Mz5QiNSLdLWwjgBDm5b1RU6xBT0+12rapjiaR7SwfRdjw8f+6Rir2MXKLrDicRFHdb51hGOAxmsUIA==} + + sax@1.2.1: + resolution: {integrity: sha512-8I2a3LovHTOpm7NV5yOyO8IHqgVsfK4+UuySrXU8YXkSRX7k6hCV9b3HrkKCr3nMpgj+0bmocaJJWpvp1oc7ZA==} + + scheduler@0.23.2: + resolution: {integrity: sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==} + + schema-utils@3.3.0: + resolution: {integrity: sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==} + engines: {node: '>= 10.13.0'} + + schema-utils@4.2.0: + resolution: {integrity: sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==} + engines: {node: '>= 12.13.0'} + + scroll-into-view-if-needed@2.2.31: + resolution: {integrity: sha512-dGCXy99wZQivjmjIqihaBQNjryrz5rueJY7eHfTdyWEiR4ttYpsajb14rn9s5d4DY4EcY6+4+U/maARBXJedkA==} + + semver@5.7.2: + resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==} + hasBin: true + + semver@6.3.1: + resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} + hasBin: true + + semver@7.5.4: + resolution: {integrity: sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==} + engines: {node: '>=10'} + hasBin: true + + semver@7.6.2: + resolution: {integrity: sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==} + engines: {node: '>=10'} + hasBin: true + + sendmail@1.6.1: + resolution: {integrity: sha512-lIhvnjSi5e5jL8wA1GPP6j2QVlx6JOEfmdn0QIfmuJdmXYGmJ375kcOU0NSm/34J+nypm4sa1AXrYE5w3uNIIA==} + engines: {node: '>=6.0.0'} + + sentence-case@2.1.1: + resolution: {integrity: sha512-ENl7cYHaK/Ktwk5OTD+aDbQ3uC8IByu/6Bkg+HDv8Mm+XnBnppVNalcfJTNsp1ibstKh030/JKQQWglDvtKwEQ==} + + serialize-javascript@6.0.2: + resolution: {integrity: sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==} + + set-blocking@2.0.0: + resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==} + + set-cookie-parser@2.6.0: + resolution: {integrity: sha512-RVnVQxTXuerk653XfuliOxBP81Sf0+qfQE73LIYKcyMYHG94AuH0kgrQpRDuTZnSmjpysHmzxJXKNfa6PjFhyQ==} + + set-function-length@1.2.2: + resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==} + engines: {node: '>= 0.4'} + + set-value@2.0.1: + resolution: {integrity: sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==} + engines: {node: '>=0.10.0'} + + setprototypeof@1.1.0: + resolution: {integrity: sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==} + + setprototypeof@1.2.0: + resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} + + shallowequal@1.1.0: + resolution: {integrity: sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==} + + sharp@0.32.6: + resolution: {integrity: sha512-KyLTWwgcR9Oe4d9HwCwNM2l7+J0dUQwn/yf7S0EnTtb0eVS4RxO0eUSvxPtzT4F3SY+C4K6fqdv/DO27sJ/v/w==} + engines: {node: '>=14.15.0'} + + shebang-command@2.0.0: + resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} + engines: {node: '>=8'} + + shebang-regex@3.0.0: + resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} + engines: {node: '>=8'} + + shell-quote@1.8.1: + resolution: {integrity: sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==} + + side-channel@1.0.6: + resolution: {integrity: sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==} + engines: {node: '>= 0.4'} + + sift@16.0.1: + resolution: {integrity: sha512-Wv6BjQ5zbhW7VFefWusVP33T/EM0vYikCaQ2qR8yULbsilAT8/wQaXvuQ3ptGLpoKx+lihJE3y2UTgKDyyNHZQ==} + + signal-exit@3.0.7: + resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} + + simple-concat@1.0.1: + resolution: {integrity: sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==} + + simple-get@3.1.1: + resolution: {integrity: sha512-CQ5LTKGfCpvE1K0n2us+kuMPbk/q0EKl82s4aheV9oXjFEz6W/Y7oQFVJuU6QG77hRT4Ghb5RURteF5vnWjupA==} + + simple-get@4.0.1: + resolution: {integrity: sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==} + + simple-swizzle@0.2.2: + resolution: {integrity: sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==} + + simple-update-notifier@2.0.0: + resolution: {integrity: sha512-a2B9Y0KlNXl9u/vsW6sTIu9vGEpfKu2wRV6l1H3XEas/0gUIzGzBoP/IouTcUQbm9JWZLH3COxyn03TYlFax6w==} + engines: {node: '>=10'} + + sirv@2.0.4: + resolution: {integrity: sha512-94Bdh3cC2PKrbgSOUqTiGPWVZeSiXfKOVZNJniWoqrWrRkB1CJzBU3NEbiTsPcYy1lDsANA/THzS+9WBiy5nfQ==} + engines: {node: '>= 10'} + + sisteransi@1.0.5: + resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} + + slash@3.0.0: + resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} + engines: {node: '>=8'} + + slash@4.0.0: + resolution: {integrity: sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==} + engines: {node: '>=12'} + + slate-history@0.93.0: + resolution: {integrity: sha512-Gr1GMGPipRuxIz41jD2/rbvzPj8eyar56TVMyJBvBeIpQSSjNISssvGNDYfJlSWM8eaRqf6DAcxMKzsLCYeX6g==} + peerDependencies: + slate: '>=0.65.3' + + slate-react@0.98.3: + resolution: {integrity: sha512-p1BnF9eRyRM0i5hkgOb11KgmpWLQm9Zyp6jVkOAj5fPdIGheKhg48Z7aWKrayeJ4nmRyi/NjRZz/io5hQcphmw==} + peerDependencies: + react: '>=16.8.0' + react-dom: '>=16.8.0' + slate: '>=0.65.3' + + slate@0.94.1: + resolution: {integrity: sha512-GH/yizXr1ceBoZ9P9uebIaHe3dC/g6Plpf9nlUwnvoyf6V1UOYrRwkabtOCd3ZfIGxomY4P7lfgLr7FPH8/BKA==} + + snake-case@2.1.0: + resolution: {integrity: sha512-FMR5YoPFwOLuh4rRz92dywJjyKYZNLpMn1R5ujVpIYkbA9p01fq8RMg0FkO4M+Yobt4MjHeLTJVm5xFFBHSV2Q==} + + snapdragon-node@2.1.1: + resolution: {integrity: sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==} + engines: {node: '>=0.10.0'} + + snapdragon-util@3.0.1: + resolution: {integrity: sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==} + engines: {node: '>=0.10.0'} + + snapdragon@0.8.2: + resolution: {integrity: sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==} + engines: {node: '>=0.10.0'} + + sort-object-keys@1.1.3: + resolution: {integrity: sha512-855pvK+VkU7PaKYPc+Jjnmt4EzejQHyhhF33q31qG8x7maDzkeFhAAThdCYay11CISO+qAMwjOBP+fPZe0IPyg==} + + sort-package-json@2.5.1: + resolution: {integrity: sha512-vx/KoZxm8YNMUqdlw7SGTfqR5pqZ/sUfgOuRtDILiOy/3AvzhAibyUe2cY3OpLs3oRSow9up4yLVtQaM24rbDQ==} + hasBin: true + + sorted-array-functions@1.3.0: + resolution: {integrity: sha512-2sqgzeFlid6N4Z2fUQ1cvFmTOLRi/sEDzSQ0OKYchqgoPmQBVyM3959qYx3fpS6Esef80KjmpgPeEr028dP3OA==} + + source-list-map@2.0.1: + resolution: {integrity: sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==} + + source-map-js@1.2.0: + resolution: {integrity: sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==} + engines: {node: '>=0.10.0'} + + source-map-resolve@0.5.3: + resolution: {integrity: sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==} + deprecated: See https://github.com/lydell/source-map-resolve#deprecated + + source-map-support@0.5.21: + resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} + + source-map-url@0.4.1: + resolution: {integrity: sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==} + deprecated: See https://github.com/lydell/source-map-url#deprecated + + source-map@0.5.7: + resolution: {integrity: sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==} + engines: {node: '>=0.10.0'} + + source-map@0.6.1: + resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} + engines: {node: '>=0.10.0'} + + source-map@0.7.4: + resolution: {integrity: sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==} + engines: {node: '>= 8'} + + spawn-command@0.0.2: + resolution: {integrity: sha512-zC8zGoGkmc8J9ndvml8Xksr1Amk9qBujgbF0JAIWO7kXr43w0h/0GJNM/Vustixu+YE8N/MTrQ7N31FvHUACxQ==} + + spdx-correct@3.2.0: + resolution: {integrity: sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==} + + spdx-exceptions@2.5.0: + resolution: {integrity: sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==} + + spdx-expression-parse@3.0.1: + resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==} + + spdx-license-ids@3.0.18: + resolution: {integrity: sha512-xxRs31BqRYHwiMzudOrpSiHtZ8i/GeionCBDSilhYRj+9gIcI8wCZTlXZKu9vZIVqViP3dcp9qE5G6AlIaD+TQ==} + + speedometer@1.0.0: + resolution: {integrity: sha512-lgxErLl/7A5+vgIIXsh9MbeukOaCb2axgQ+bKCdIE+ibNT4XNYGNCR1qFEGq6F+YDASXK3Fh/c5FgtZchFolxw==} + + split-string@3.1.0: + resolution: {integrity: sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==} + engines: {node: '>=0.10.0'} + + split2@4.2.0: + resolution: {integrity: sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==} + engines: {node: '>= 10.x'} + + sprintf-js@1.0.3: + resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} + + stack-trace@0.0.10: + resolution: {integrity: sha512-KGzahc7puUKkzyMt+IqAep+TVNbKP+k2Lmwhub39m1AsTSkaDutx56aDCo+HLDzf/D26BIHTJWNiTG1KAJiQCg==} + + stackframe@1.3.4: + resolution: {integrity: sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==} + + static-extend@0.1.2: + resolution: {integrity: sha512-72E9+uLc27Mt718pMHt9VMNiAL4LMsmDbBva8mxWUCkT07fSzEGMYUCk0XWY6lp0j6RBAG4cJ3mWuZv2OE3s0g==} + engines: {node: '>=0.10.0'} + + statuses@1.5.0: + resolution: {integrity: sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==} + engines: {node: '>= 0.6'} + + statuses@2.0.1: + resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==} + engines: {node: '>= 0.8'} + + strapi-plugin-fuzzy-search@2.2.1: + resolution: {integrity: sha512-RCOKAShA4fZLDRuR+Y2XqM4Y99GbljmH4YEv7JiFJTTC7xh4Vt922pSmVcN90lyXtxZEtp8KrT6WmJrHvUfH5g==} + engines: {node: '>=18.x.x <=20.x.x', npm: '>=6.0.0'} + peerDependencies: + '@strapi/strapi': ^4.11.4 + '@strapi/utils': ^4.11.4 + yup: ^0.32.9 + + stream-chain@2.2.5: + resolution: {integrity: sha512-1TJmBx6aSWqZ4tx7aTpBDXK0/e2hhcNSTV8+CbFJtDjbb+I1mZ8lHit0Grw9GRT+6JbIrrDd8esncgBi8aBXGA==} + + stream-json@1.8.0: + resolution: {integrity: sha512-HZfXngYHUAr1exT4fxlbc1IOce1RYxp2ldeaf97LYCOPSoOqY/1Psp7iGvpb+6JIOgkra9zDYnPX01hGAHzEPw==} + + stream-slice@0.1.2: + resolution: {integrity: sha512-QzQxpoacatkreL6jsxnVb7X5R/pGw9OUv2qWTYWnmLpg4NdN31snPy/f3TdQE1ZUXaThRvj1Zw4/OGg0ZkaLMA==} + + streamx@2.18.0: + resolution: {integrity: sha512-LLUC1TWdjVdn1weXGcSxyTR3T4+acB6tVGXT95y0nGbca4t4o/ng1wKAGTljm9VicuCVLvRlqFYXYy5GwgM7sQ==} + + strict-event-emitter@0.2.8: + resolution: {integrity: sha512-KDf/ujU8Zud3YaLtMCcTI4xkZlZVIYxTLr+XIULexP+77EEVWixeXroLUXQXiVtH4XH2W7jr/3PT1v3zBuvc3A==} + + strict-event-emitter@0.4.6: + resolution: {integrity: sha512-12KWeb+wixJohmnwNFerbyiBrAlq5qJLwIt38etRtKtmmHyDSoGlIqFE9wx+4IwG0aDjI7GV8tc8ZccjWZZtTg==} + + string-argv@0.3.2: + resolution: {integrity: sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==} + engines: {node: '>=0.6.19'} + + string-width@4.2.3: + resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} + engines: {node: '>=8'} + + string_decoder@0.10.31: + resolution: {integrity: sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==} + + string_decoder@1.1.1: + resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} + + string_decoder@1.3.0: + resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} + + strip-ansi@3.0.1: + resolution: {integrity: sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==} + engines: {node: '>=0.10.0'} + + strip-ansi@5.2.0: + resolution: {integrity: sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==} + engines: {node: '>=6'} + + strip-ansi@6.0.1: + resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} + engines: {node: '>=8'} + + strip-final-newline@2.0.0: + resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} + engines: {node: '>=6'} + + strip-final-newline@3.0.0: + resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==} + engines: {node: '>=12'} + + strip-json-comments@2.0.1: + resolution: {integrity: sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==} + engines: {node: '>=0.10.0'} + + strnum@1.0.5: + resolution: {integrity: sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==} + + style-loader@3.3.4: + resolution: {integrity: sha512-0WqXzrsMTyb8yjZJHDqwmnwRJvhALK9LfRtRc6B4UTWe8AijYLZYZ9thuJTZc2VfQWINADW/j+LiJnfy2RoC1w==} + engines: {node: '>= 12.13.0'} + peerDependencies: + webpack: ^5.0.0 + + style-mod@4.1.2: + resolution: {integrity: sha512-wnD1HyVqpJUI2+eKZ+eo1UwghftP6yuFheBqqe+bWCotBjC2K1YnteJILRMs3SM4V/0dLEW1SC27MWP5y+mwmw==} + + styled-components@5.3.3: + resolution: {integrity: sha512-++4iHwBM7ZN+x6DtPPWkCI4vdtwumQ+inA/DdAsqYd4SVgUKJie5vXyzotA00ttcFdQkCng7zc6grwlfIfw+lw==} + engines: {node: '>=10'} + peerDependencies: + react: '>= 16.8.0' + react-dom: '>= 16.8.0' + react-is: '>= 16.8.0' + + stylis@4.2.0: + resolution: {integrity: sha512-Orov6g6BB1sDfYgzWfTHDOxamtX1bE/zo104Dh9e6fqJ3PooipYyfJ0pUmrZO2wAvO8YbEyeFrkV91XTsGMSrw==} + + supports-color@2.0.0: + resolution: {integrity: sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==} + engines: {node: '>=0.8.0'} + + supports-color@5.5.0: + resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} + engines: {node: '>=4'} + + supports-color@7.2.0: + resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} + engines: {node: '>=8'} + + supports-color@8.1.1: + resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} + engines: {node: '>=10'} + + supports-preserve-symlinks-flag@1.0.0: + resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} + engines: {node: '>= 0.4'} + + swap-case@1.1.2: + resolution: {integrity: sha512-BAmWG6/bx8syfc6qXPprof3Mn5vQgf5dwdUNJhsNqU9WdPt5P+ES/wQ5bxfijy8zwZgZZHslC3iAsxsuQMCzJQ==} + + synckit@0.8.5: + resolution: {integrity: sha512-L1dapNV6vu2s/4Sputv8xGsCdAVlb5nRDMFU/E27D44l5U6cw1g0dGd45uLc+OXjNMmF4ntiMdCimzcjFKQI8Q==} + engines: {node: ^14.18.0 || >=16.0.0} + + tapable@2.2.1: + resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} + engines: {node: '>=6'} + + tar-fs@2.1.1: + resolution: {integrity: sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==} + + tar-fs@3.0.6: + resolution: {integrity: sha512-iokBDQQkUyeXhgPYaZxmczGPhnhXZ0CmrqI+MOb/WFGS9DW5wnfrLgtjUJBvz50vQ3qfRwJ62QVoCFu8mPVu5w==} + + tar-stream@2.2.0: + resolution: {integrity: sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==} + engines: {node: '>=6'} + + tar-stream@3.1.7: + resolution: {integrity: sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ==} + + tar@6.1.13: + resolution: {integrity: sha512-jdIBIN6LTIe2jqzay/2vtYLlBHa3JF42ot3h1dW8Q0PaAG4v8rm0cvpVePtau5C6OKXGGcgO9q2AMNSWxiLqKw==} + engines: {node: '>=10'} + + tar@6.2.1: + resolution: {integrity: sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==} + engines: {node: '>=10'} + + tarn@3.0.2: + resolution: {integrity: sha512-51LAVKUSZSVfI05vjPESNc5vwqqZpbXCsU+/+wxlOrUjk2SnFTt97v9ZgQrD4YmxYW1Px6w2KjaDitCfkvgxMQ==} + engines: {node: '>=8.0.0'} + + terser-webpack-plugin@5.3.10: + resolution: {integrity: sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w==} + engines: {node: '>= 10.13.0'} + peerDependencies: + '@swc/core': '*' + esbuild: '*' + uglify-js: '*' + webpack: ^5.1.0 + peerDependenciesMeta: + '@swc/core': + optional: true + esbuild: + optional: true + uglify-js: + optional: true + + terser@5.31.1: + resolution: {integrity: sha512-37upzU1+viGvuFtBo9NPufCb9dwM0+l9hMxYyWfBA+fbwrPqNJAhbZ6W47bBFnZHKHTUBnMvi87434qq+qnxOg==} + engines: {node: '>=10'} + hasBin: true + + text-decoder@1.1.0: + resolution: {integrity: sha512-TmLJNj6UgX8xcUZo4UDStGQtDiTzF7BzWlzn9g7UWrjkpHr5uJTK1ld16wZ3LXb2vb6jH8qU89dW5whuMdXYdw==} + + text-hex@1.0.0: + resolution: {integrity: sha512-uuVGNWzgJ4yhRaNSiubPY7OjISw4sw4E5Uv0wbjp+OzcbmVU/rsT8ujgcXJhn9ypzsgr5vlzpPqP+MBBKcGvbg==} + + thenify-all@1.6.0: + resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==} + engines: {node: '>=0.8'} + + thenify@3.3.1: + resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} + + through2@2.0.5: + resolution: {integrity: sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==} + + through@2.3.8: + resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} + + tildify@2.0.0: + resolution: {integrity: sha512-Cc+OraorugtXNfs50hU9KS369rFXCfgGLpfCfvlc+Ud5u6VWmUQsOAa9HbTvheQdYnrdJqqv1e5oIqXppMYnSw==} + engines: {node: '>=8'} + + tiny-invariant@1.0.6: + resolution: {integrity: sha512-FOyLWWVjG+aC0UqG76V53yAWdXfH8bO6FNmyZOuUrzDzK8DI3/JRY25UD7+g49JWM1LXwymsKERB+DzI0dTEQA==} + + tiny-invariant@1.3.3: + resolution: {integrity: sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==} + + tiny-warning@1.0.3: + resolution: {integrity: sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==} + + title-case@2.1.1: + resolution: {integrity: sha512-EkJoZ2O3zdCz3zJsYCsxyq2OC5hrxR9mfdd5I+w8h/tmFfeOxJ+vvkxsKxdmN0WtS9zLdHEgfgVOiMVgv+Po4Q==} + + titleize@3.0.0: + resolution: {integrity: sha512-KxVu8EYHDPBdUYdKZdKtU2aj2XfEx9AfjXxE/Aj0vT06w2icA09Vus1rh6eSu1y01akYg6BjIK/hxyLJINoMLQ==} + engines: {node: '>=12'} + + tmp@0.0.33: + resolution: {integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==} + engines: {node: '>=0.6.0'} + + to-fast-properties@2.0.0: + resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} + engines: {node: '>=4'} + + to-object-path@0.3.0: + resolution: {integrity: sha512-9mWHdnGRuh3onocaHzukyvCZhzvr6tiflAy/JRFXcJX0TjgfWA9pk9t8CMbzmBE4Jfw58pXbkngtBtqYxzNEyg==} + engines: {node: '>=0.10.0'} + + to-regex-range@2.1.1: + resolution: {integrity: sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==} + engines: {node: '>=0.10.0'} + + to-regex-range@5.0.1: + resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} + engines: {node: '>=8.0'} + + to-regex@3.0.2: + resolution: {integrity: sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==} + engines: {node: '>=0.10.0'} + + toidentifier@1.0.1: + resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==} + engines: {node: '>=0.6'} + + toposort@2.0.2: + resolution: {integrity: sha512-0a5EOkAUp8D4moMi2W8ZF8jcga7BgZd91O/yabJCFY8az+XSzeGyTKs0Aoo897iV1Nj6guFq8orWDS96z91oGg==} + + totalist@3.0.1: + resolution: {integrity: sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==} + engines: {node: '>=6'} + + touch@3.1.1: + resolution: {integrity: sha512-r0eojU4bI8MnHr8c5bNo7lJDdI2qXlWWJk6a9EAFG7vbhTjElYhBVS3/miuE0uOuoLdb8Mc/rVfsmm6eo5o9GA==} + hasBin: true + + tr46@0.0.3: + resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} + + transliteration@2.3.5: + resolution: {integrity: sha512-HAGI4Lq4Q9dZ3Utu2phaWgtm3vB6PkLUFqWAScg/UW+1eZ/Tg6Exo4oC0/3VUol/w4BlefLhUUSVBr/9/ZGQOw==} + engines: {node: '>=6.0.0'} + hasBin: true + + tree-kill@1.2.2: + resolution: {integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==} + hasBin: true + + triple-beam@1.4.1: + resolution: {integrity: sha512-aZbgViZrg1QNcG+LULa7nhZpJTZSLm/mXnHXnbAbjmN5aSa0y7V+wvv6+4WaBtpISJzThKy+PIPxc1Nq1EJ9mg==} + engines: {node: '>= 14.0.0'} + + tslib@1.14.1: + resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} + + tslib@2.6.3: + resolution: {integrity: sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==} + + tsscmp@1.0.6: + resolution: {integrity: sha512-LxhtAkPDTkVCMQjt2h6eBVY28KCjikZqZfMcC15YBeNjkgUpdCfBu5HoiOTDu86v6smE8yOjyEktJ8hlbANHQA==} + engines: {node: '>=0.6.x'} + + tunnel-agent@0.6.0: + resolution: {integrity: sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==} + + type-fest@0.20.2: + resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} + engines: {node: '>=10'} + + type-fest@0.21.3: + resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} + engines: {node: '>=10'} + + type-fest@0.6.0: + resolution: {integrity: sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==} + engines: {node: '>=8'} + + type-fest@0.8.1: + resolution: {integrity: sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==} + engines: {node: '>=8'} + + type-fest@2.19.0: + resolution: {integrity: sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==} + engines: {node: '>=12.20'} + + type-is@1.6.18: + resolution: {integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==} + engines: {node: '>= 0.6'} + + typedarray-to-buffer@3.1.5: + resolution: {integrity: sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==} + + typescript@4.9.5: + resolution: {integrity: sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==} + engines: {node: '>=4.2.0'} + hasBin: true + + typescript@5.2.2: + resolution: {integrity: sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==} + engines: {node: '>=14.17'} + hasBin: true + + uc.micro@1.0.6: + resolution: {integrity: sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==} + + uglify-js@3.18.0: + resolution: {integrity: sha512-SyVVbcNBCk0dzr9XL/R/ySrmYf0s372K6/hFklzgcp2lBFyXtw4I7BOdDjlLhE1aVqaI/SHWXWmYdlZxuyF38A==} + engines: {node: '>=0.8.0'} + hasBin: true + + umzug@3.2.1: + resolution: {integrity: sha512-XyWQowvP9CKZycKc/Zg9SYWrAWX/gJCE799AUTFqk8yC3tp44K1xWr3LoFF0MNEjClKOo1suCr5ASnoy+KltdA==} + engines: {node: '>=12'} + + unc-path-regex@0.1.2: + resolution: {integrity: sha512-eXL4nmJT7oCpkZsHZUOJo8hcX3GbsiDOa0Qu9F646fi8dT3XuSVopVqAcEiVzSKKH7UoDti23wNX3qGFxcW5Qg==} + engines: {node: '>=0.10.0'} + + undefsafe@2.0.5: + resolution: {integrity: sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA==} + + undici-types@5.26.5: + resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} + + union-value@1.0.1: + resolution: {integrity: sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==} + engines: {node: '>=0.10.0'} + + unique-string@2.0.0: + resolution: {integrity: sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==} + engines: {node: '>=8'} + + universalify@0.1.2: + resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} + engines: {node: '>= 4.0.0'} + + universalify@2.0.1: + resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} + engines: {node: '>= 10.0.0'} + + unload@2.2.0: + resolution: {integrity: sha512-B60uB5TNBLtN6/LsgAf3udH9saB5p7gqJwcFfbOEZ8BcBHnGwCf6G/TGiEqkRAxX7zAFIUtzdrXQSdL3Q/wqNA==} + + unpipe@1.0.0: + resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} + engines: {node: '>= 0.8'} + + unset-value@1.0.0: + resolution: {integrity: sha512-PcA2tsuGSF9cnySLHTLSh2qrQiJ70mn+r+Glzxv2TWZblxsxCC52BDlZoPCsz7STd9pN7EZetkWZBAvk4cgZdQ==} + engines: {node: '>=0.10.0'} + + untildify@4.0.0: + resolution: {integrity: sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==} + engines: {node: '>=8'} + + update-browserslist-db@1.0.16: + resolution: {integrity: sha512-KVbTxlBYlckhF5wgfyZXTWnMn7MMZjMu9XG8bPlliUOP9ThaF4QnhP8qrjrH7DRzHfSk0oQv1wToW+iA5GajEQ==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' + + upper-case-first@1.1.2: + resolution: {integrity: sha512-wINKYvI3Db8dtjikdAqoBbZoP6Q+PZUyfMR7pmwHzjC2quzSkUq5DmPrTtPEqHaz8AGtmsB4TqwapMTM1QAQOQ==} + + upper-case@1.1.3: + resolution: {integrity: sha512-WRbjgmYzgXkCV7zNVpy5YgrHgbBv126rMALQQMrmzOVC4GM2waQ9x7xtm8VU+1yF2kWyPzI9zbZ48n4vSxwfSA==} + + uri-js@4.4.1: + resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} + + urix@0.1.0: + resolution: {integrity: sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg==} + deprecated: Please see https://github.com/lydell/urix#deprecated + + url-join@4.0.1: + resolution: {integrity: sha512-jk1+QP6ZJqyOiuEI9AEWQfju/nB2Pw466kbA0LEZljHwKeMgd9WrAEgEGxjPDD2+TNbbb37rTyhEfrCXfuKXnA==} + + url@0.10.3: + resolution: {integrity: sha512-hzSUW2q06EqL1gKM/a+obYHLIO6ct2hwPuviqTTOcfFVc61UbfJ2Q32+uGL/HCPxKqrdGB5QUwIe7UqlDgwsOQ==} + + use-callback-ref@1.3.2: + resolution: {integrity: sha512-elOQwe6Q8gqZgDA8mrh44qRTQqpIHDcZ3hXTLjBe1i4ph8XpNJnO+aQf3NaG+lriLopI4HMx9VjQLfPQ6vhnoA==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + + use-isomorphic-layout-effect@1.1.2: + resolution: {integrity: sha512-49L8yCO3iGT/ZF9QttjwLF/ZD9Iwto5LnH5LmEdk/6cFmXddqi2ulF0edxTwjj+7mqvpVVGQWvbXZdn32wRSHA==} + peerDependencies: + '@types/react': '*' + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + + use-sidecar@1.1.2: + resolution: {integrity: sha512-epTbsLuzZ7lPClpz2TyryBfztm7m+28DlEv2ZCQ3MDr5ssiwyOwGH/e5F9CkfWjJ1t4clvI58yF822/GUkjjhw==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': ^16.9.0 || ^17.0.0 || ^18.0.0 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + + use-sync-external-store@1.2.2: + resolution: {integrity: sha512-PElTlVMwpblvbNqQ82d2n6RjStvdSoNe9FG28kNfz3WiXilJm4DdNkEzRhCZuIDwY8U08WVihhGR5iRqAwfDiw==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + + use@3.1.1: + resolution: {integrity: sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==} + engines: {node: '>=0.10.0'} + + user-home@1.1.1: + resolution: {integrity: sha512-aggiKfEEubv3UwRNqTzLInZpAOmKzwdHqEBmW/hBA/mt99eg+b4VrX6i+IRLxU8+WJYfa33rGwRseg4eElUgsQ==} + engines: {node: '>=0.10.0'} + hasBin: true + + util-deprecate@1.0.2: + resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} + + util@0.12.5: + resolution: {integrity: sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==} + + utila@0.4.0: + resolution: {integrity: sha512-Z0DbgELS9/L/75wZbro8xAnT50pBVFQZ+hUEueGDU5FN51YSCYM+jdxsfCiHjwNP/4LCDD0i/graKpeBnOXKRA==} + + utils-merge@1.0.1: + resolution: {integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==} + engines: {node: '>= 0.4.0'} + + uuid@8.0.0: + resolution: {integrity: sha512-jOXGuXZAWdsTH7eZLtyXMqUb9EcWMGZNbL9YcGBJl4MH4nrxHmZJhEHvyLFrkxo+28uLb/NYRcStH48fnD0Vzw==} + hasBin: true + + uuid@8.3.2: + resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} + hasBin: true + + uuid@9.0.1: + resolution: {integrity: sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==} + hasBin: true + + v8flags@2.1.1: + resolution: {integrity: sha512-SKfhk/LlaXzvtowJabLZwD4K6SGRYeoxA7KJeISlUMAB/NT4CBkZjMq3WceX2Ckm4llwqYVo8TICgsDYCBU2tA==} + engines: {node: '>= 0.10.0'} + + validate-npm-package-license@3.0.4: + resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} + + value-equal@1.0.1: + resolution: {integrity: sha512-NOJ6JZCAWr0zlxZt+xqCHNTEKOsrks2HQd4MqhP1qy4z1SkbEP467eNx6TgDKXMvUOb+OENfJCZwM+16n7fRfw==} + + vary@1.1.2: + resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} + engines: {node: '>= 0.8'} + + vite@5.0.13: + resolution: {integrity: sha512-/9ovhv2M2dGTuA+dY93B9trfyWMDRQw2jdVBhHNP6wr0oF34wG2i/N55801iZIpgUpnHDm4F/FabGQLyc+eOgg==} + engines: {node: ^18.0.0 || >=20.0.0} + hasBin: true + peerDependencies: + '@types/node': ^18.0.0 || >=20.0.0 + less: '*' + lightningcss: ^1.21.0 + sass: '*' + stylus: '*' + sugarss: '*' + terser: ^5.4.0 + peerDependenciesMeta: + '@types/node': + optional: true + less: + optional: true + lightningcss: + optional: true + sass: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + + w3c-keyname@2.2.8: + resolution: {integrity: sha512-dpojBhNsCNN7T82Tm7k26A6G9ML3NkhDsnw9n/eoxSRlVBB4CEtIQ/KTCLI2Fwf3ataSXRhYFkQi3SlnFwPvPQ==} + + watchpack@2.4.1: + resolution: {integrity: sha512-8wrBCMtVhqcXP2Sup1ctSkga6uc2Bx0IIvKyT7yTFier5AXHooSI+QyQQAtTb7+E0IUCCKyTFmXqdqgum2XWGg==} + engines: {node: '>=10.13.0'} + + wcwidth@1.0.1: + resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==} + + web-encoding@1.1.5: + resolution: {integrity: sha512-HYLeVCdJ0+lBYV2FvNZmv3HJ2Nt0QYXqZojk3d9FJOLkwnuhzM9tmamh8d7HPM8QqjKH8DeHkFTx+CFlWpZZDA==} + + webidl-conversions@3.0.1: + resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} + + webpack-bundle-analyzer@4.10.2: + resolution: {integrity: sha512-vJptkMm9pk5si4Bv922ZbKLV8UTT4zib4FPgXMhgzUny0bfDDkLXAVQs3ly3fS4/TN9ROFtb0NFrm04UXFE/Vw==} + engines: {node: '>= 10.13.0'} + hasBin: true + + webpack-dev-middleware@6.1.2: + resolution: {integrity: sha512-Wu+EHmX326YPYUpQLKmKbTyZZJIB8/n6R09pTmB03kJmnMsVPTo9COzHZFr01txwaCAuZvfBJE4ZCHRcKs5JaQ==} + engines: {node: '>= 14.15.0'} + peerDependencies: + webpack: ^5.0.0 + peerDependenciesMeta: + webpack: + optional: true + + webpack-hot-middleware@2.26.0: + resolution: {integrity: sha512-okzjec5sAEy4t+7rzdT8eRyxsk0FDSmBPN2KwX4Qd+6+oQCfe5Ve07+u7cJvofgB+B4w5/4dO4Pz0jhhHyyPLQ==} + + webpack-sources@1.4.3: + resolution: {integrity: sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==} + + webpack-sources@3.2.3: + resolution: {integrity: sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==} + engines: {node: '>=10.13.0'} + + webpack@5.92.0: + resolution: {integrity: sha512-Bsw2X39MYIgxouNATyVpCNVWBCuUwDgWtN78g6lSdPJRLaQ/PUVm/oXcaRAyY/sMFoKFQrsPeqvTizWtq7QPCA==} + engines: {node: '>=10.13.0'} + hasBin: true + peerDependencies: + webpack-cli: '*' + peerDependenciesMeta: + webpack-cli: + optional: true + + whatwg-url@5.0.0: + resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} + + which-typed-array@1.1.15: + resolution: {integrity: sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==} + engines: {node: '>= 0.4'} + + which@1.3.1: + resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==} + hasBin: true + + which@2.0.2: + resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} + engines: {node: '>= 8'} + hasBin: true + + wide-align@1.1.5: + resolution: {integrity: sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==} + + widest-line@3.1.0: + resolution: {integrity: sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==} + engines: {node: '>=8'} + + winston-transport@4.7.0: + resolution: {integrity: sha512-ajBj65K5I7denzer2IYW6+2bNIVqLGDHqDw3Ow8Ohh+vdW+rv4MZ6eiDvHoKhfJFZ2auyN8byXieDDJ96ViONg==} + engines: {node: '>= 12.0.0'} + + winston@3.10.0: + resolution: {integrity: sha512-nT6SIDaE9B7ZRO0u3UvdrimG0HkB7dSTAgInQnNR2SOPJ4bvq5q79+pXLftKmP52lJGW15+H5MCK0nM9D3KB/g==} + engines: {node: '>= 12.0.0'} + + wordwrap@1.0.0: + resolution: {integrity: sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==} + + wrap-ansi@6.2.0: + resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==} + engines: {node: '>=8'} + + wrap-ansi@7.0.0: + resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} + engines: {node: '>=10'} + + wrappy@1.0.2: + resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + + write-file-atomic@3.0.3: + resolution: {integrity: sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==} + + ws@7.5.10: + resolution: {integrity: sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==} + engines: {node: '>=8.3.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: ^5.0.2 + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + + ws@8.13.0: + resolution: {integrity: sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==} + engines: {node: '>=10.0.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: '>=5.0.2' + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + + xdg-app-paths@8.3.0: + resolution: {integrity: sha512-mgxlWVZw0TNWHoGmXq+NC3uhCIc55dDpAlDkMQUaIAcQzysb0kxctwv//fvuW61/nAAeUBJMQ8mnZjMmuYwOcQ==} + engines: {node: '>= 4.0'} + + xdg-basedir@4.0.0: + resolution: {integrity: sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q==} + engines: {node: '>=8'} + + xdg-portable@10.6.0: + resolution: {integrity: sha512-xrcqhWDvtZ7WLmt8G4f3hHy37iK7D2idtosRgkeiSPZEPmBShp0VfmRBLWAPC6zLF48APJ21yfea+RfQMF4/Aw==} + engines: {node: '>= 4.0'} + + xml2js@0.6.2: + resolution: {integrity: sha512-T4rieHaC1EXcES0Kxxj4JWgaUQHDk+qwHcYOCFHfiwKz7tOVPLq7Hjq9dM1WCMhylqMEfP7hMcOIChvotiZegA==} + engines: {node: '>=4.0.0'} + + xmlbuilder@11.0.1: + resolution: {integrity: sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==} + engines: {node: '>=4.0'} + + xtend@4.0.2: + resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} + engines: {node: '>=0.4'} + + y18n@5.0.8: + resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} + engines: {node: '>=10'} + + yalc@1.0.0-pre.53: + resolution: {integrity: sha512-tpNqBCpTXplnduzw5XC+FF8zNJ9L/UXmvQyyQj7NKrDNavbJtHvzmZplL5ES/RCnjX7JR7W9wz5GVDXVP3dHUQ==} + hasBin: true + + yallist@3.1.1: + resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} + + yallist@4.0.0: + resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} + + yaml@1.10.2: + resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} + engines: {node: '>= 6'} + + yargs-parser@20.2.9: + resolution: {integrity: sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==} + engines: {node: '>=10'} + + yargs-parser@21.1.1: + resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} + engines: {node: '>=12'} + + yargs@16.2.0: + resolution: {integrity: sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==} + engines: {node: '>=10'} + + yargs@17.7.2: + resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} + engines: {node: '>=12'} + + ylru@1.4.0: + resolution: {integrity: sha512-2OQsPNEmBCvXuFlIni/a+Rn+R2pHW9INm0BxXJ4hVDA8TirqMj+J/Rp9ItLatT/5pZqWwefVrTQcHpixsxnVlA==} + engines: {node: '>= 4.0.0'} + + yocto-queue@0.1.0: + resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} + engines: {node: '>=10'} + + yup@0.32.11: + resolution: {integrity: sha512-Z2Fe1bn+eLstG8DRR6FTavGD+MeAwyfmouhHsIUgaADz8jvFKbO/fXc2trJKZg+5EBjh4gGm3iU/t3onKlXHIg==} + engines: {node: '>=10'} + + yup@0.32.9: + resolution: {integrity: sha512-Ci1qN+i2H0XpY7syDQ0k5zKQ/DoxO0LzPg8PAR/X4Mpj6DqaeCoIYEEjDJwhArh3Fa7GWbQQVDZKeXYlSH4JMg==} + engines: {node: '>=10'} + +snapshots: + + '@11ty/eleventy-fetch@4.0.1': + dependencies: + debug: 4.3.5(supports-color@5.5.0) + flat-cache: 3.2.0 + node-fetch: 2.7.0 + p-queue: 6.6.2 + transitivePeerDependencies: + - encoding + - supports-color + + '@ampproject/remapping@2.3.0': + dependencies: + '@jridgewell/gen-mapping': 0.3.5 + '@jridgewell/trace-mapping': 0.3.25 + + '@aws-crypto/crc32@5.2.0': + dependencies: + '@aws-crypto/util': 5.2.0 + '@aws-sdk/types': 3.598.0 + tslib: 2.6.3 + + '@aws-crypto/crc32c@5.2.0': + dependencies: + '@aws-crypto/util': 5.2.0 + '@aws-sdk/types': 3.598.0 + tslib: 2.6.3 + + '@aws-crypto/sha1-browser@5.2.0': + dependencies: + '@aws-crypto/supports-web-crypto': 5.2.0 + '@aws-crypto/util': 5.2.0 + '@aws-sdk/types': 3.598.0 + '@aws-sdk/util-locate-window': 3.568.0 + '@smithy/util-utf8': 2.3.0 + tslib: 2.6.3 + + '@aws-crypto/sha256-browser@5.2.0': + dependencies: + '@aws-crypto/sha256-js': 5.2.0 + '@aws-crypto/supports-web-crypto': 5.2.0 + '@aws-crypto/util': 5.2.0 + '@aws-sdk/types': 3.598.0 + '@aws-sdk/util-locate-window': 3.568.0 + '@smithy/util-utf8': 2.3.0 + tslib: 2.6.3 + + '@aws-crypto/sha256-js@5.2.0': + dependencies: + '@aws-crypto/util': 5.2.0 + '@aws-sdk/types': 3.598.0 + tslib: 2.6.3 + + '@aws-crypto/supports-web-crypto@5.2.0': + dependencies: + tslib: 2.6.3 + + '@aws-crypto/util@5.2.0': + dependencies: + '@aws-sdk/types': 3.598.0 + '@smithy/util-utf8': 2.3.0 + tslib: 2.6.3 + + '@aws-sdk/client-s3@3.600.0': + dependencies: + '@aws-crypto/sha1-browser': 5.2.0 + '@aws-crypto/sha256-browser': 5.2.0 + '@aws-crypto/sha256-js': 5.2.0 + '@aws-sdk/client-sso-oidc': 3.600.0 + '@aws-sdk/client-sts': 3.600.0(@aws-sdk/client-sso-oidc@3.600.0) + '@aws-sdk/core': 3.598.0 + '@aws-sdk/credential-provider-node': 3.600.0(@aws-sdk/client-sso-oidc@3.600.0)(@aws-sdk/client-sts@3.600.0(@aws-sdk/client-sso-oidc@3.600.0)) + '@aws-sdk/middleware-bucket-endpoint': 3.598.0 + '@aws-sdk/middleware-expect-continue': 3.598.0 + '@aws-sdk/middleware-flexible-checksums': 3.598.0 + '@aws-sdk/middleware-host-header': 3.598.0 + '@aws-sdk/middleware-location-constraint': 3.598.0 + '@aws-sdk/middleware-logger': 3.598.0 + '@aws-sdk/middleware-recursion-detection': 3.598.0 + '@aws-sdk/middleware-sdk-s3': 3.598.0 + '@aws-sdk/middleware-signing': 3.598.0 + '@aws-sdk/middleware-ssec': 3.598.0 + '@aws-sdk/middleware-user-agent': 3.598.0 + '@aws-sdk/region-config-resolver': 3.598.0 + '@aws-sdk/signature-v4-multi-region': 3.598.0 + '@aws-sdk/types': 3.598.0 + '@aws-sdk/util-endpoints': 3.598.0 + '@aws-sdk/util-user-agent-browser': 3.598.0 + '@aws-sdk/util-user-agent-node': 3.598.0 + '@aws-sdk/xml-builder': 3.598.0 + '@smithy/config-resolver': 3.0.3 + '@smithy/core': 2.2.3 + '@smithy/eventstream-serde-browser': 3.0.3 + '@smithy/eventstream-serde-config-resolver': 3.0.2 + '@smithy/eventstream-serde-node': 3.0.3 + '@smithy/fetch-http-handler': 3.1.0 + '@smithy/hash-blob-browser': 3.1.1 + '@smithy/hash-node': 3.0.2 + '@smithy/hash-stream-node': 3.1.1 + '@smithy/invalid-dependency': 3.0.2 + '@smithy/md5-js': 3.0.2 + '@smithy/middleware-content-length': 3.0.2 + '@smithy/middleware-endpoint': 3.0.3 + '@smithy/middleware-retry': 3.0.6 + '@smithy/middleware-serde': 3.0.2 + '@smithy/middleware-stack': 3.0.2 + '@smithy/node-config-provider': 3.1.2 + '@smithy/node-http-handler': 3.1.0 + '@smithy/protocol-http': 4.0.2 + '@smithy/smithy-client': 3.1.4 + '@smithy/types': 3.2.0 + '@smithy/url-parser': 3.0.2 + '@smithy/util-base64': 3.0.0 + '@smithy/util-body-length-browser': 3.0.0 + '@smithy/util-body-length-node': 3.0.0 + '@smithy/util-defaults-mode-browser': 3.0.6 + '@smithy/util-defaults-mode-node': 3.0.6 + '@smithy/util-endpoints': 2.0.3 + '@smithy/util-retry': 3.0.2 + '@smithy/util-stream': 3.0.4 + '@smithy/util-utf8': 3.0.0 + '@smithy/util-waiter': 3.1.0 + tslib: 2.6.3 + transitivePeerDependencies: + - aws-crt + + '@aws-sdk/client-sso-oidc@3.600.0': + dependencies: + '@aws-crypto/sha256-browser': 5.2.0 + '@aws-crypto/sha256-js': 5.2.0 + '@aws-sdk/client-sts': 3.600.0(@aws-sdk/client-sso-oidc@3.600.0) + '@aws-sdk/core': 3.598.0 + '@aws-sdk/credential-provider-node': 3.600.0(@aws-sdk/client-sso-oidc@3.600.0)(@aws-sdk/client-sts@3.600.0(@aws-sdk/client-sso-oidc@3.600.0)) + '@aws-sdk/middleware-host-header': 3.598.0 + '@aws-sdk/middleware-logger': 3.598.0 + '@aws-sdk/middleware-recursion-detection': 3.598.0 + '@aws-sdk/middleware-user-agent': 3.598.0 + '@aws-sdk/region-config-resolver': 3.598.0 + '@aws-sdk/types': 3.598.0 + '@aws-sdk/util-endpoints': 3.598.0 + '@aws-sdk/util-user-agent-browser': 3.598.0 + '@aws-sdk/util-user-agent-node': 3.598.0 + '@smithy/config-resolver': 3.0.3 + '@smithy/core': 2.2.3 + '@smithy/fetch-http-handler': 3.1.0 + '@smithy/hash-node': 3.0.2 + '@smithy/invalid-dependency': 3.0.2 + '@smithy/middleware-content-length': 3.0.2 + '@smithy/middleware-endpoint': 3.0.3 + '@smithy/middleware-retry': 3.0.6 + '@smithy/middleware-serde': 3.0.2 + '@smithy/middleware-stack': 3.0.2 + '@smithy/node-config-provider': 3.1.2 + '@smithy/node-http-handler': 3.1.0 + '@smithy/protocol-http': 4.0.2 + '@smithy/smithy-client': 3.1.4 + '@smithy/types': 3.2.0 + '@smithy/url-parser': 3.0.2 + '@smithy/util-base64': 3.0.0 + '@smithy/util-body-length-browser': 3.0.0 + '@smithy/util-body-length-node': 3.0.0 + '@smithy/util-defaults-mode-browser': 3.0.6 + '@smithy/util-defaults-mode-node': 3.0.6 + '@smithy/util-endpoints': 2.0.3 + '@smithy/util-middleware': 3.0.2 + '@smithy/util-retry': 3.0.2 + '@smithy/util-utf8': 3.0.0 + tslib: 2.6.3 + transitivePeerDependencies: + - aws-crt + + '@aws-sdk/client-sso@3.598.0': + dependencies: + '@aws-crypto/sha256-browser': 5.2.0 + '@aws-crypto/sha256-js': 5.2.0 + '@aws-sdk/core': 3.598.0 + '@aws-sdk/middleware-host-header': 3.598.0 + '@aws-sdk/middleware-logger': 3.598.0 + '@aws-sdk/middleware-recursion-detection': 3.598.0 + '@aws-sdk/middleware-user-agent': 3.598.0 + '@aws-sdk/region-config-resolver': 3.598.0 + '@aws-sdk/types': 3.598.0 + '@aws-sdk/util-endpoints': 3.598.0 + '@aws-sdk/util-user-agent-browser': 3.598.0 + '@aws-sdk/util-user-agent-node': 3.598.0 + '@smithy/config-resolver': 3.0.3 + '@smithy/core': 2.2.3 + '@smithy/fetch-http-handler': 3.1.0 + '@smithy/hash-node': 3.0.2 + '@smithy/invalid-dependency': 3.0.2 + '@smithy/middleware-content-length': 3.0.2 + '@smithy/middleware-endpoint': 3.0.3 + '@smithy/middleware-retry': 3.0.6 + '@smithy/middleware-serde': 3.0.2 + '@smithy/middleware-stack': 3.0.2 + '@smithy/node-config-provider': 3.1.2 + '@smithy/node-http-handler': 3.1.0 + '@smithy/protocol-http': 4.0.2 + '@smithy/smithy-client': 3.1.4 + '@smithy/types': 3.2.0 + '@smithy/url-parser': 3.0.2 + '@smithy/util-base64': 3.0.0 + '@smithy/util-body-length-browser': 3.0.0 + '@smithy/util-body-length-node': 3.0.0 + '@smithy/util-defaults-mode-browser': 3.0.6 + '@smithy/util-defaults-mode-node': 3.0.6 + '@smithy/util-endpoints': 2.0.3 + '@smithy/util-middleware': 3.0.2 + '@smithy/util-retry': 3.0.2 + '@smithy/util-utf8': 3.0.0 + tslib: 2.6.3 + transitivePeerDependencies: + - aws-crt + + '@aws-sdk/client-sts@3.600.0(@aws-sdk/client-sso-oidc@3.600.0)': + dependencies: + '@aws-crypto/sha256-browser': 5.2.0 + '@aws-crypto/sha256-js': 5.2.0 + '@aws-sdk/client-sso-oidc': 3.600.0 + '@aws-sdk/core': 3.598.0 + '@aws-sdk/credential-provider-node': 3.600.0(@aws-sdk/client-sso-oidc@3.600.0)(@aws-sdk/client-sts@3.600.0(@aws-sdk/client-sso-oidc@3.600.0)) + '@aws-sdk/middleware-host-header': 3.598.0 + '@aws-sdk/middleware-logger': 3.598.0 + '@aws-sdk/middleware-recursion-detection': 3.598.0 + '@aws-sdk/middleware-user-agent': 3.598.0 + '@aws-sdk/region-config-resolver': 3.598.0 + '@aws-sdk/types': 3.598.0 + '@aws-sdk/util-endpoints': 3.598.0 + '@aws-sdk/util-user-agent-browser': 3.598.0 + '@aws-sdk/util-user-agent-node': 3.598.0 + '@smithy/config-resolver': 3.0.3 + '@smithy/core': 2.2.3 + '@smithy/fetch-http-handler': 3.1.0 + '@smithy/hash-node': 3.0.2 + '@smithy/invalid-dependency': 3.0.2 + '@smithy/middleware-content-length': 3.0.2 + '@smithy/middleware-endpoint': 3.0.3 + '@smithy/middleware-retry': 3.0.6 + '@smithy/middleware-serde': 3.0.2 + '@smithy/middleware-stack': 3.0.2 + '@smithy/node-config-provider': 3.1.2 + '@smithy/node-http-handler': 3.1.0 + '@smithy/protocol-http': 4.0.2 + '@smithy/smithy-client': 3.1.4 + '@smithy/types': 3.2.0 + '@smithy/url-parser': 3.0.2 + '@smithy/util-base64': 3.0.0 + '@smithy/util-body-length-browser': 3.0.0 + '@smithy/util-body-length-node': 3.0.0 + '@smithy/util-defaults-mode-browser': 3.0.6 + '@smithy/util-defaults-mode-node': 3.0.6 + '@smithy/util-endpoints': 2.0.3 + '@smithy/util-middleware': 3.0.2 + '@smithy/util-retry': 3.0.2 + '@smithy/util-utf8': 3.0.0 + tslib: 2.6.3 + transitivePeerDependencies: + - '@aws-sdk/client-sso-oidc' + - aws-crt + + '@aws-sdk/core@3.598.0': + dependencies: + '@smithy/core': 2.2.3 + '@smithy/protocol-http': 4.0.2 + '@smithy/signature-v4': 3.1.1 + '@smithy/smithy-client': 3.1.4 + '@smithy/types': 3.2.0 + fast-xml-parser: 4.2.5 + tslib: 2.6.3 + + '@aws-sdk/credential-provider-env@3.598.0': + dependencies: + '@aws-sdk/types': 3.598.0 + '@smithy/property-provider': 3.1.2 + '@smithy/types': 3.2.0 + tslib: 2.6.3 + + '@aws-sdk/credential-provider-http@3.598.0': + dependencies: + '@aws-sdk/types': 3.598.0 + '@smithy/fetch-http-handler': 3.1.0 + '@smithy/node-http-handler': 3.1.0 + '@smithy/property-provider': 3.1.2 + '@smithy/protocol-http': 4.0.2 + '@smithy/smithy-client': 3.1.4 + '@smithy/types': 3.2.0 + '@smithy/util-stream': 3.0.4 + tslib: 2.6.3 + + '@aws-sdk/credential-provider-ini@3.598.0(@aws-sdk/client-sso-oidc@3.600.0)(@aws-sdk/client-sts@3.600.0(@aws-sdk/client-sso-oidc@3.600.0))': + dependencies: + '@aws-sdk/client-sts': 3.600.0(@aws-sdk/client-sso-oidc@3.600.0) + '@aws-sdk/credential-provider-env': 3.598.0 + '@aws-sdk/credential-provider-http': 3.598.0 + '@aws-sdk/credential-provider-process': 3.598.0 + '@aws-sdk/credential-provider-sso': 3.598.0(@aws-sdk/client-sso-oidc@3.600.0) + '@aws-sdk/credential-provider-web-identity': 3.598.0(@aws-sdk/client-sts@3.600.0(@aws-sdk/client-sso-oidc@3.600.0)) + '@aws-sdk/types': 3.598.0 + '@smithy/credential-provider-imds': 3.1.2 + '@smithy/property-provider': 3.1.2 + '@smithy/shared-ini-file-loader': 3.1.2 + '@smithy/types': 3.2.0 + tslib: 2.6.3 + transitivePeerDependencies: + - '@aws-sdk/client-sso-oidc' + - aws-crt + + '@aws-sdk/credential-provider-node@3.600.0(@aws-sdk/client-sso-oidc@3.600.0)(@aws-sdk/client-sts@3.600.0(@aws-sdk/client-sso-oidc@3.600.0))': + dependencies: + '@aws-sdk/credential-provider-env': 3.598.0 + '@aws-sdk/credential-provider-http': 3.598.0 + '@aws-sdk/credential-provider-ini': 3.598.0(@aws-sdk/client-sso-oidc@3.600.0)(@aws-sdk/client-sts@3.600.0(@aws-sdk/client-sso-oidc@3.600.0)) + '@aws-sdk/credential-provider-process': 3.598.0 + '@aws-sdk/credential-provider-sso': 3.598.0(@aws-sdk/client-sso-oidc@3.600.0) + '@aws-sdk/credential-provider-web-identity': 3.598.0(@aws-sdk/client-sts@3.600.0(@aws-sdk/client-sso-oidc@3.600.0)) + '@aws-sdk/types': 3.598.0 + '@smithy/credential-provider-imds': 3.1.2 + '@smithy/property-provider': 3.1.2 + '@smithy/shared-ini-file-loader': 3.1.2 + '@smithy/types': 3.2.0 + tslib: 2.6.3 + transitivePeerDependencies: + - '@aws-sdk/client-sso-oidc' + - '@aws-sdk/client-sts' + - aws-crt + + '@aws-sdk/credential-provider-process@3.598.0': + dependencies: + '@aws-sdk/types': 3.598.0 + '@smithy/property-provider': 3.1.2 + '@smithy/shared-ini-file-loader': 3.1.2 + '@smithy/types': 3.2.0 + tslib: 2.6.3 + + '@aws-sdk/credential-provider-sso@3.598.0(@aws-sdk/client-sso-oidc@3.600.0)': + dependencies: + '@aws-sdk/client-sso': 3.598.0 + '@aws-sdk/token-providers': 3.598.0(@aws-sdk/client-sso-oidc@3.600.0) + '@aws-sdk/types': 3.598.0 + '@smithy/property-provider': 3.1.2 + '@smithy/shared-ini-file-loader': 3.1.2 + '@smithy/types': 3.2.0 + tslib: 2.6.3 + transitivePeerDependencies: + - '@aws-sdk/client-sso-oidc' + - aws-crt + + '@aws-sdk/credential-provider-web-identity@3.598.0(@aws-sdk/client-sts@3.600.0(@aws-sdk/client-sso-oidc@3.600.0))': + dependencies: + '@aws-sdk/client-sts': 3.600.0(@aws-sdk/client-sso-oidc@3.600.0) + '@aws-sdk/types': 3.598.0 + '@smithy/property-provider': 3.1.2 + '@smithy/types': 3.2.0 + tslib: 2.6.3 + + '@aws-sdk/middleware-bucket-endpoint@3.598.0': + dependencies: + '@aws-sdk/types': 3.598.0 + '@aws-sdk/util-arn-parser': 3.568.0 + '@smithy/node-config-provider': 3.1.2 + '@smithy/protocol-http': 4.0.2 + '@smithy/types': 3.2.0 + '@smithy/util-config-provider': 3.0.0 + tslib: 2.6.3 + + '@aws-sdk/middleware-expect-continue@3.598.0': + dependencies: + '@aws-sdk/types': 3.598.0 + '@smithy/protocol-http': 4.0.2 + '@smithy/types': 3.2.0 + tslib: 2.6.3 + + '@aws-sdk/middleware-flexible-checksums@3.598.0': + dependencies: + '@aws-crypto/crc32': 5.2.0 + '@aws-crypto/crc32c': 5.2.0 + '@aws-sdk/types': 3.598.0 + '@smithy/is-array-buffer': 3.0.0 + '@smithy/protocol-http': 4.0.2 + '@smithy/types': 3.2.0 + '@smithy/util-utf8': 3.0.0 + tslib: 2.6.3 + + '@aws-sdk/middleware-host-header@3.598.0': + dependencies: + '@aws-sdk/types': 3.598.0 + '@smithy/protocol-http': 4.0.2 + '@smithy/types': 3.2.0 + tslib: 2.6.3 + + '@aws-sdk/middleware-location-constraint@3.598.0': + dependencies: + '@aws-sdk/types': 3.598.0 + '@smithy/types': 3.2.0 + tslib: 2.6.3 + + '@aws-sdk/middleware-logger@3.598.0': + dependencies: + '@aws-sdk/types': 3.598.0 + '@smithy/types': 3.2.0 + tslib: 2.6.3 + + '@aws-sdk/middleware-recursion-detection@3.598.0': + dependencies: + '@aws-sdk/types': 3.598.0 + '@smithy/protocol-http': 4.0.2 + '@smithy/types': 3.2.0 + tslib: 2.6.3 + + '@aws-sdk/middleware-sdk-s3@3.598.0': + dependencies: + '@aws-sdk/types': 3.598.0 + '@aws-sdk/util-arn-parser': 3.568.0 + '@smithy/node-config-provider': 3.1.2 + '@smithy/protocol-http': 4.0.2 + '@smithy/signature-v4': 3.1.1 + '@smithy/smithy-client': 3.1.4 + '@smithy/types': 3.2.0 + '@smithy/util-config-provider': 3.0.0 + tslib: 2.6.3 + + '@aws-sdk/middleware-signing@3.598.0': + dependencies: + '@aws-sdk/types': 3.598.0 + '@smithy/property-provider': 3.1.2 + '@smithy/protocol-http': 4.0.2 + '@smithy/signature-v4': 3.1.1 + '@smithy/types': 3.2.0 + '@smithy/util-middleware': 3.0.2 + tslib: 2.6.3 + + '@aws-sdk/middleware-ssec@3.598.0': + dependencies: + '@aws-sdk/types': 3.598.0 + '@smithy/types': 3.2.0 + tslib: 2.6.3 + + '@aws-sdk/middleware-user-agent@3.598.0': + dependencies: + '@aws-sdk/types': 3.598.0 + '@aws-sdk/util-endpoints': 3.598.0 + '@smithy/protocol-http': 4.0.2 + '@smithy/types': 3.2.0 + tslib: 2.6.3 + + '@aws-sdk/region-config-resolver@3.598.0': + dependencies: + '@aws-sdk/types': 3.598.0 + '@smithy/node-config-provider': 3.1.2 + '@smithy/types': 3.2.0 + '@smithy/util-config-provider': 3.0.0 + '@smithy/util-middleware': 3.0.2 + tslib: 2.6.3 + + '@aws-sdk/signature-v4-multi-region@3.598.0': + dependencies: + '@aws-sdk/middleware-sdk-s3': 3.598.0 + '@aws-sdk/types': 3.598.0 + '@smithy/protocol-http': 4.0.2 + '@smithy/signature-v4': 3.1.1 + '@smithy/types': 3.2.0 + tslib: 2.6.3 + + '@aws-sdk/token-providers@3.598.0(@aws-sdk/client-sso-oidc@3.600.0)': + dependencies: + '@aws-sdk/client-sso-oidc': 3.600.0 + '@aws-sdk/types': 3.598.0 + '@smithy/property-provider': 3.1.2 + '@smithy/shared-ini-file-loader': 3.1.2 + '@smithy/types': 3.2.0 + tslib: 2.6.3 + + '@aws-sdk/types@3.598.0': + dependencies: + '@smithy/types': 3.2.0 + tslib: 2.6.3 + + '@aws-sdk/util-arn-parser@3.568.0': + dependencies: + tslib: 2.6.3 + + '@aws-sdk/util-endpoints@3.598.0': + dependencies: + '@aws-sdk/types': 3.598.0 + '@smithy/types': 3.2.0 + '@smithy/util-endpoints': 2.0.3 + tslib: 2.6.3 + + '@aws-sdk/util-locate-window@3.568.0': + dependencies: + tslib: 2.6.3 + + '@aws-sdk/util-user-agent-browser@3.598.0': + dependencies: + '@aws-sdk/types': 3.598.0 + '@smithy/types': 3.2.0 + bowser: 2.11.0 + tslib: 2.6.3 + + '@aws-sdk/util-user-agent-node@3.598.0': + dependencies: + '@aws-sdk/types': 3.598.0 + '@smithy/node-config-provider': 3.1.2 + '@smithy/types': 3.2.0 + tslib: 2.6.3 + + '@aws-sdk/xml-builder@3.598.0': + dependencies: + '@smithy/types': 3.2.0 + tslib: 2.6.3 + + '@babel/code-frame@7.24.7': + dependencies: + '@babel/highlight': 7.24.7 + picocolors: 1.0.1 + + '@babel/compat-data@7.24.7': {} + + '@babel/core@7.24.7': + dependencies: + '@ampproject/remapping': 2.3.0 + '@babel/code-frame': 7.24.7 + '@babel/generator': 7.24.7 + '@babel/helper-compilation-targets': 7.24.7 + '@babel/helper-module-transforms': 7.24.7(@babel/core@7.24.7) + '@babel/helpers': 7.24.7 + '@babel/parser': 7.24.7 + '@babel/template': 7.24.7 + '@babel/traverse': 7.24.7(supports-color@5.5.0) + '@babel/types': 7.24.7 + convert-source-map: 2.0.0 + debug: 4.3.5(supports-color@5.5.0) + gensync: 1.0.0-beta.2 + json5: 2.2.3 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + '@babel/generator@7.24.7': + dependencies: + '@babel/types': 7.24.7 + '@jridgewell/gen-mapping': 0.3.5 + '@jridgewell/trace-mapping': 0.3.25 + jsesc: 2.5.2 + + '@babel/helper-annotate-as-pure@7.24.7': + dependencies: + '@babel/types': 7.24.7 + + '@babel/helper-compilation-targets@7.24.7': + dependencies: + '@babel/compat-data': 7.24.7 + '@babel/helper-validator-option': 7.24.7 + browserslist: 4.23.1 + lru-cache: 5.1.1 + semver: 6.3.1 + + '@babel/helper-environment-visitor@7.24.7': + dependencies: + '@babel/types': 7.24.7 + + '@babel/helper-function-name@7.24.7': + dependencies: + '@babel/template': 7.24.7 + '@babel/types': 7.24.7 + + '@babel/helper-hoist-variables@7.24.7': + dependencies: + '@babel/types': 7.24.7 + + '@babel/helper-module-imports@7.24.7(supports-color@5.5.0)': + dependencies: + '@babel/traverse': 7.24.7(supports-color@5.5.0) + '@babel/types': 7.24.7 + transitivePeerDependencies: + - supports-color + + '@babel/helper-module-transforms@7.24.7(@babel/core@7.24.7)': + dependencies: + '@babel/core': 7.24.7 + '@babel/helper-environment-visitor': 7.24.7 + '@babel/helper-module-imports': 7.24.7(supports-color@5.5.0) + '@babel/helper-simple-access': 7.24.7 + '@babel/helper-split-export-declaration': 7.24.7 + '@babel/helper-validator-identifier': 7.24.7 + transitivePeerDependencies: + - supports-color + + '@babel/helper-plugin-utils@7.24.7': {} + + '@babel/helper-simple-access@7.24.7': + dependencies: + '@babel/traverse': 7.24.7(supports-color@5.5.0) + '@babel/types': 7.24.7 + transitivePeerDependencies: + - supports-color + + '@babel/helper-split-export-declaration@7.24.7': + dependencies: + '@babel/types': 7.24.7 + + '@babel/helper-string-parser@7.24.7': {} + + '@babel/helper-validator-identifier@7.24.7': {} + + '@babel/helper-validator-option@7.24.7': {} + + '@babel/helpers@7.24.7': + dependencies: + '@babel/template': 7.24.7 + '@babel/types': 7.24.7 + + '@babel/highlight@7.24.7': + dependencies: + '@babel/helper-validator-identifier': 7.24.7 + chalk: 2.4.2 + js-tokens: 4.0.0 + picocolors: 1.0.1 + + '@babel/parser@7.24.7': + dependencies: + '@babel/types': 7.24.7 + + '@babel/plugin-syntax-jsx@7.24.7(@babel/core@7.24.7)': + dependencies: + '@babel/core': 7.24.7 + '@babel/helper-plugin-utils': 7.24.7 + + '@babel/runtime-corejs3@7.24.7': + dependencies: + core-js-pure: 3.37.1 + regenerator-runtime: 0.14.1 + + '@babel/runtime@7.24.7': + dependencies: + regenerator-runtime: 0.14.1 + + '@babel/template@7.24.7': + dependencies: + '@babel/code-frame': 7.24.7 + '@babel/parser': 7.24.7 + '@babel/types': 7.24.7 + + '@babel/traverse@7.24.7(supports-color@5.5.0)': + dependencies: + '@babel/code-frame': 7.24.7 + '@babel/generator': 7.24.7 + '@babel/helper-environment-visitor': 7.24.7 + '@babel/helper-function-name': 7.24.7 + '@babel/helper-hoist-variables': 7.24.7 + '@babel/helper-split-export-declaration': 7.24.7 + '@babel/parser': 7.24.7 + '@babel/types': 7.24.7 + debug: 4.3.5(supports-color@5.5.0) + globals: 11.12.0 + transitivePeerDependencies: + - supports-color + + '@babel/types@7.24.7': + dependencies: + '@babel/helper-string-parser': 7.24.7 + '@babel/helper-validator-identifier': 7.24.7 + to-fast-properties: 2.0.0 + + '@casl/ability@6.5.0': + dependencies: + '@ucast/mongo2js': 1.3.4 + + '@codemirror/autocomplete@6.16.2(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.1)(@lezer/common@1.2.1)': + dependencies: + '@codemirror/language': 6.10.2 + '@codemirror/state': 6.4.1 + '@codemirror/view': 6.28.1 + '@lezer/common': 1.2.1 + + '@codemirror/commands@6.6.0': + dependencies: + '@codemirror/language': 6.10.2 + '@codemirror/state': 6.4.1 + '@codemirror/view': 6.28.1 + '@lezer/common': 1.2.1 + + '@codemirror/lang-json@6.0.1': + dependencies: + '@codemirror/language': 6.10.2 + '@lezer/json': 1.0.2 + + '@codemirror/language@6.10.2': + dependencies: + '@codemirror/state': 6.4.1 + '@codemirror/view': 6.28.1 + '@lezer/common': 1.2.1 + '@lezer/highlight': 1.2.0 + '@lezer/lr': 1.4.1 + style-mod: 4.1.2 + + '@codemirror/lint@6.8.0': + dependencies: + '@codemirror/state': 6.4.1 + '@codemirror/view': 6.28.1 + crelt: 1.0.6 + + '@codemirror/search@6.5.6': + dependencies: + '@codemirror/state': 6.4.1 + '@codemirror/view': 6.28.1 + crelt: 1.0.6 + + '@codemirror/state@6.4.1': {} + + '@codemirror/theme-one-dark@6.1.2': + dependencies: + '@codemirror/language': 6.10.2 + '@codemirror/state': 6.4.1 + '@codemirror/view': 6.28.1 + '@lezer/highlight': 1.2.0 + + '@codemirror/view@6.28.1': + dependencies: + '@codemirror/state': 6.4.1 + style-mod: 4.1.2 + w3c-keyname: 2.2.8 + + '@colors/colors@1.5.0': {} + + '@colors/colors@1.6.0': {} + + '@dabh/diagnostics@2.0.3': + dependencies: + colorspace: 1.1.4 + enabled: 2.0.0 + kuler: 2.0.0 + + '@discoveryjs/json-ext@0.5.7': {} + + '@emotion/babel-plugin@11.11.0': + dependencies: + '@babel/helper-module-imports': 7.24.7(supports-color@5.5.0) + '@babel/runtime': 7.24.7 + '@emotion/hash': 0.9.1 + '@emotion/memoize': 0.8.1 + '@emotion/serialize': 1.1.4 + babel-plugin-macros: 3.1.0 + convert-source-map: 1.9.0 + escape-string-regexp: 4.0.0 + find-root: 1.1.0 + source-map: 0.5.7 + stylis: 4.2.0 + transitivePeerDependencies: + - supports-color + + '@emotion/cache@11.11.0': + dependencies: + '@emotion/memoize': 0.8.1 + '@emotion/sheet': 1.2.2 + '@emotion/utils': 1.2.1 + '@emotion/weak-memoize': 0.3.1 + stylis: 4.2.0 + + '@emotion/hash@0.9.1': {} + + '@emotion/is-prop-valid@0.8.8': + dependencies: + '@emotion/memoize': 0.7.4 + + '@emotion/memoize@0.7.4': {} + + '@emotion/memoize@0.8.1': {} + + '@emotion/react@11.11.4(react@18.3.1)': + dependencies: + '@babel/runtime': 7.24.7 + '@emotion/babel-plugin': 11.11.0 + '@emotion/cache': 11.11.0 + '@emotion/serialize': 1.1.4 + '@emotion/use-insertion-effect-with-fallbacks': 1.0.1(react@18.3.1) + '@emotion/utils': 1.2.1 + '@emotion/weak-memoize': 0.3.1 + hoist-non-react-statics: 3.3.2 + react: 18.3.1 + transitivePeerDependencies: + - supports-color + + '@emotion/serialize@1.1.4': + dependencies: + '@emotion/hash': 0.9.1 + '@emotion/memoize': 0.8.1 + '@emotion/unitless': 0.8.1 + '@emotion/utils': 1.2.1 + csstype: 3.1.3 + + '@emotion/sheet@1.2.2': {} + + '@emotion/stylis@0.8.5': {} + + '@emotion/unitless@0.7.5': {} + + '@emotion/unitless@0.8.1': {} + + '@emotion/use-insertion-effect-with-fallbacks@1.0.1(react@18.3.1)': + dependencies: + react: 18.3.1 + + '@emotion/utils@1.2.1': {} + + '@emotion/weak-memoize@0.3.1': {} + + '@esbuild/aix-ppc64@0.19.11': + optional: true + + '@esbuild/android-arm64@0.16.17': + optional: true + + '@esbuild/android-arm64@0.19.11': + optional: true + + '@esbuild/android-arm@0.16.17': + optional: true + + '@esbuild/android-arm@0.19.11': + optional: true + + '@esbuild/android-x64@0.16.17': + optional: true + + '@esbuild/android-x64@0.19.11': + optional: true + + '@esbuild/darwin-arm64@0.16.17': + optional: true + + '@esbuild/darwin-arm64@0.19.11': + optional: true + + '@esbuild/darwin-x64@0.16.17': + optional: true + + '@esbuild/darwin-x64@0.19.11': + optional: true + + '@esbuild/freebsd-arm64@0.16.17': + optional: true + + '@esbuild/freebsd-arm64@0.19.11': + optional: true + + '@esbuild/freebsd-x64@0.16.17': + optional: true + + '@esbuild/freebsd-x64@0.19.11': + optional: true + + '@esbuild/linux-arm64@0.16.17': + optional: true + + '@esbuild/linux-arm64@0.19.11': + optional: true + + '@esbuild/linux-arm@0.16.17': + optional: true + + '@esbuild/linux-arm@0.19.11': + optional: true + + '@esbuild/linux-ia32@0.16.17': + optional: true + + '@esbuild/linux-ia32@0.19.11': + optional: true + + '@esbuild/linux-loong64@0.16.17': + optional: true + + '@esbuild/linux-loong64@0.19.11': + optional: true + + '@esbuild/linux-mips64el@0.16.17': + optional: true + + '@esbuild/linux-mips64el@0.19.11': + optional: true + + '@esbuild/linux-ppc64@0.16.17': + optional: true + + '@esbuild/linux-ppc64@0.19.11': + optional: true + + '@esbuild/linux-riscv64@0.16.17': + optional: true + + '@esbuild/linux-riscv64@0.19.11': + optional: true + + '@esbuild/linux-s390x@0.16.17': + optional: true + + '@esbuild/linux-s390x@0.19.11': + optional: true + + '@esbuild/linux-x64@0.16.17': + optional: true + + '@esbuild/linux-x64@0.19.11': + optional: true + + '@esbuild/netbsd-x64@0.16.17': + optional: true + + '@esbuild/netbsd-x64@0.19.11': + optional: true + + '@esbuild/openbsd-x64@0.16.17': + optional: true + + '@esbuild/openbsd-x64@0.19.11': + optional: true + + '@esbuild/sunos-x64@0.16.17': + optional: true + + '@esbuild/sunos-x64@0.19.11': + optional: true + + '@esbuild/win32-arm64@0.16.17': + optional: true + + '@esbuild/win32-arm64@0.19.11': + optional: true + + '@esbuild/win32-ia32@0.16.17': + optional: true + + '@esbuild/win32-ia32@0.19.11': + optional: true + + '@esbuild/win32-x64@0.16.17': + optional: true + + '@esbuild/win32-x64@0.19.11': + optional: true + + '@esm2cjs/execa@6.1.1-cjs.1': + dependencies: + '@esm2cjs/human-signals': 3.0.1 + '@esm2cjs/is-stream': 3.0.0 + '@esm2cjs/npm-run-path': 5.1.1-cjs.0 + '@esm2cjs/onetime': 6.0.1-cjs.0 + '@esm2cjs/strip-final-newline': 3.0.1-cjs.0 + cross-spawn: 7.0.3 + get-stream: 6.0.1 + merge-stream: 2.0.0 + signal-exit: 3.0.7 + + '@esm2cjs/human-signals@3.0.1': {} + + '@esm2cjs/is-stream@3.0.0': {} + + '@esm2cjs/mimic-fn@4.0.0': {} + + '@esm2cjs/npm-run-path@5.1.1-cjs.0': + dependencies: + '@esm2cjs/path-key': 4.0.0 + + '@esm2cjs/onetime@6.0.1-cjs.0': + dependencies: + '@esm2cjs/mimic-fn': 4.0.0 + + '@esm2cjs/path-key@4.0.0': {} + + '@esm2cjs/strip-final-newline@3.0.1-cjs.0': {} + + '@floating-ui/core@1.6.2': + dependencies: + '@floating-ui/utils': 0.2.2 + + '@floating-ui/dom@1.6.5': + dependencies: + '@floating-ui/core': 1.6.2 + '@floating-ui/utils': 0.2.2 + + '@floating-ui/react-dom@2.1.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@floating-ui/dom': 1.6.5 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + + '@floating-ui/utils@0.2.2': {} + + '@formatjs/ecma402-abstract@1.14.3': + dependencies: + '@formatjs/intl-localematcher': 0.2.32 + tslib: 2.6.3 + + '@formatjs/fast-memoize@2.0.1': + dependencies: + tslib: 2.6.3 + + '@formatjs/icu-messageformat-parser@2.3.0': + dependencies: + '@formatjs/ecma402-abstract': 1.14.3 + '@formatjs/icu-skeleton-parser': 1.3.18 + tslib: 2.6.3 + + '@formatjs/icu-messageformat-parser@2.3.1': + dependencies: + '@formatjs/ecma402-abstract': 1.14.3 + '@formatjs/icu-skeleton-parser': 1.3.18 + tslib: 2.6.3 + + '@formatjs/icu-skeleton-parser@1.3.18': + dependencies: + '@formatjs/ecma402-abstract': 1.14.3 + tslib: 2.6.3 + + '@formatjs/intl-displaynames@6.2.6': + dependencies: + '@formatjs/ecma402-abstract': 1.14.3 + '@formatjs/intl-localematcher': 0.2.32 + tslib: 2.6.3 + + '@formatjs/intl-displaynames@6.3.1': + dependencies: + '@formatjs/ecma402-abstract': 1.14.3 + '@formatjs/intl-localematcher': 0.2.32 + tslib: 2.6.3 + + '@formatjs/intl-listformat@7.1.9': + dependencies: + '@formatjs/ecma402-abstract': 1.14.3 + '@formatjs/intl-localematcher': 0.2.32 + tslib: 2.6.3 + + '@formatjs/intl-listformat@7.2.1': + dependencies: + '@formatjs/ecma402-abstract': 1.14.3 + '@formatjs/intl-localematcher': 0.2.32 + tslib: 2.6.3 + + '@formatjs/intl-localematcher@0.2.32': + dependencies: + tslib: 2.6.3 + + '@formatjs/intl@2.6.9(typescript@4.9.5)': + dependencies: + '@formatjs/ecma402-abstract': 1.14.3 + '@formatjs/fast-memoize': 2.0.1 + '@formatjs/icu-messageformat-parser': 2.3.0 + '@formatjs/intl-displaynames': 6.2.6 + '@formatjs/intl-listformat': 7.1.9 + intl-messageformat: 10.3.3 + tslib: 2.6.3 + optionalDependencies: + typescript: 4.9.5 + + '@formatjs/intl@2.7.1(typescript@4.9.5)': + dependencies: + '@formatjs/ecma402-abstract': 1.14.3 + '@formatjs/fast-memoize': 2.0.1 + '@formatjs/icu-messageformat-parser': 2.3.1 + '@formatjs/intl-displaynames': 6.3.1 + '@formatjs/intl-listformat': 7.2.1 + intl-messageformat: 10.3.4 + tslib: 2.6.3 + optionalDependencies: + typescript: 4.9.5 + + '@formatjs/intl@2.7.1(typescript@5.2.2)': + dependencies: + '@formatjs/ecma402-abstract': 1.14.3 + '@formatjs/fast-memoize': 2.0.1 + '@formatjs/icu-messageformat-parser': 2.3.1 + '@formatjs/intl-displaynames': 6.3.1 + '@formatjs/intl-listformat': 7.2.1 + intl-messageformat: 10.3.4 + tslib: 2.6.3 + optionalDependencies: + typescript: 5.2.2 + + '@hapi/bourne@3.0.0': {} + + '@internationalized/date@3.5.4': + dependencies: + '@swc/helpers': 0.5.11 + + '@internationalized/number@3.5.3': + dependencies: + '@swc/helpers': 0.5.11 + + '@jridgewell/gen-mapping@0.3.5': + dependencies: + '@jridgewell/set-array': 1.2.1 + '@jridgewell/sourcemap-codec': 1.4.15 + '@jridgewell/trace-mapping': 0.3.25 + + '@jridgewell/resolve-uri@3.1.2': {} + + '@jridgewell/set-array@1.2.1': {} + + '@jridgewell/source-map@0.3.6': + dependencies: + '@jridgewell/gen-mapping': 0.3.5 + '@jridgewell/trace-mapping': 0.3.25 + + '@jridgewell/sourcemap-codec@1.4.15': {} + + '@jridgewell/trace-mapping@0.3.25': + dependencies: + '@jridgewell/resolve-uri': 3.1.2 + '@jridgewell/sourcemap-codec': 1.4.15 + + '@juggle/resize-observer@3.4.0': {} + + '@koa/cors@5.0.0': + dependencies: + vary: 1.1.2 + + '@koa/router@10.1.1': + dependencies: + debug: 4.3.5(supports-color@5.5.0) + http-errors: 1.8.1 + koa-compose: 4.1.0 + methods: 1.1.2 + path-to-regexp: 6.2.2 + transitivePeerDependencies: + - supports-color + + '@lezer/common@1.2.1': {} + + '@lezer/highlight@1.2.0': + dependencies: + '@lezer/common': 1.2.1 + + '@lezer/json@1.0.2': + dependencies: + '@lezer/common': 1.2.1 + '@lezer/highlight': 1.2.0 + '@lezer/lr': 1.4.1 + + '@lezer/lr@1.4.1': + dependencies: + '@lezer/common': 1.2.1 + + '@mapbox/node-pre-gyp@1.0.11': + dependencies: + detect-libc: 2.0.3 + https-proxy-agent: 5.0.1 + make-dir: 3.1.0 + node-fetch: 2.7.0 + nopt: 5.0.0 + npmlog: 5.0.1 + rimraf: 3.0.2 + semver: 7.6.2 + tar: 6.2.1 + transitivePeerDependencies: + - encoding + - supports-color + + '@mswjs/cookies@0.2.2': + dependencies: + '@types/set-cookie-parser': 2.4.9 + set-cookie-parser: 2.6.0 + + '@mswjs/interceptors@0.17.10': + dependencies: + '@open-draft/until': 1.0.3 + '@types/debug': 4.1.12 + '@xmldom/xmldom': 0.8.10 + debug: 4.3.5(supports-color@5.5.0) + headers-polyfill: 3.2.5 + outvariant: 1.4.2 + strict-event-emitter: 0.2.8 + web-encoding: 1.1.5 + transitivePeerDependencies: + - supports-color + + '@mux/mux-node@7.3.5': + dependencies: + axios: 1.7.2 + esdoc-ecmascript-proposal-plugin: 1.0.0 + jsonwebtoken: 9.0.0 + transitivePeerDependencies: + - debug + + '@noble/hashes@1.4.0': {} + + '@nodelib/fs.scandir@2.1.5': + dependencies: + '@nodelib/fs.stat': 2.0.5 + run-parallel: 1.2.0 + + '@nodelib/fs.stat@2.0.5': {} + + '@nodelib/fs.walk@1.2.8': + dependencies: + '@nodelib/fs.scandir': 2.1.5 + fastq: 1.17.1 + + '@open-draft/until@1.0.3': {} + + '@paralleldrive/cuid2@2.2.2': + dependencies: + '@noble/hashes': 1.4.0 + + '@pkgr/utils@2.4.2': + dependencies: + cross-spawn: 7.0.3 + fast-glob: 3.3.2 + is-glob: 4.0.3 + open: 9.1.0 + picocolors: 1.0.1 + tslib: 2.6.3 + + '@pmmmwh/react-refresh-webpack-plugin@0.5.11(react-refresh@0.14.0)(type-fest@2.19.0)(webpack-hot-middleware@2.26.0)(webpack@5.92.0(esbuild@0.19.11))': + dependencies: + ansi-html-community: 0.0.8 + common-path-prefix: 3.0.0 + core-js-pure: 3.37.1 + error-stack-parser: 2.1.4 + find-up: 5.0.0 + html-entities: 2.5.2 + loader-utils: 2.0.4 + react-refresh: 0.14.0 + schema-utils: 3.3.0 + source-map: 0.7.4 + webpack: 5.92.0(esbuild@0.19.11) + optionalDependencies: + type-fest: 2.19.0 + webpack-hot-middleware: 2.26.0 + + '@pnpm/config.env-replace@1.1.0': {} + + '@pnpm/network.ca-file@1.0.2': + dependencies: + graceful-fs: 4.2.10 + + '@pnpm/npm-conf@2.2.2': + dependencies: + '@pnpm/config.env-replace': 1.1.0 + '@pnpm/network.ca-file': 1.0.2 + config-chain: 1.1.13 + + '@polka/url@1.0.0-next.25': {} + + '@radix-ui/number@1.0.1': + dependencies: + '@babel/runtime': 7.24.7 + + '@radix-ui/primitive@1.0.1': + dependencies: + '@babel/runtime': 7.24.7 + + '@radix-ui/react-arrow@1.0.3(@types/react-dom@18.3.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@babel/runtime': 7.24.7 + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react-dom': 18.3.0 + + '@radix-ui/react-collection@1.0.3(@types/react-dom@18.3.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@babel/runtime': 7.24.7 + '@radix-ui/react-compose-refs': 1.0.1(react@18.3.1) + '@radix-ui/react-context': 1.0.1(react@18.3.1) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-slot': 1.0.2(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react-dom': 18.3.0 + + '@radix-ui/react-compose-refs@1.0.1(react@18.3.1)': + dependencies: + '@babel/runtime': 7.24.7 + react: 18.3.1 + + '@radix-ui/react-context@1.0.1(react@18.3.1)': + dependencies: + '@babel/runtime': 7.24.7 + react: 18.3.1 + + '@radix-ui/react-direction@1.0.1(react@18.3.1)': + dependencies: + '@babel/runtime': 7.24.7 + react: 18.3.1 + + '@radix-ui/react-dismissable-layer@1.0.5(@types/react-dom@18.3.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@babel/runtime': 7.24.7 + '@radix-ui/primitive': 1.0.1 + '@radix-ui/react-compose-refs': 1.0.1(react@18.3.1) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-callback-ref': 1.0.1(react@18.3.1) + '@radix-ui/react-use-escape-keydown': 1.0.3(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react-dom': 18.3.0 + + '@radix-ui/react-dropdown-menu@2.0.6(@types/react-dom@18.3.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@babel/runtime': 7.24.7 + '@radix-ui/primitive': 1.0.1 + '@radix-ui/react-compose-refs': 1.0.1(react@18.3.1) + '@radix-ui/react-context': 1.0.1(react@18.3.1) + '@radix-ui/react-id': 1.0.1(react@18.3.1) + '@radix-ui/react-menu': 2.0.6(@types/react-dom@18.3.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-controllable-state': 1.0.1(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react-dom': 18.3.0 + + '@radix-ui/react-focus-guards@1.0.1(react@18.3.1)': + dependencies: + '@babel/runtime': 7.24.7 + react: 18.3.1 + + '@radix-ui/react-focus-scope@1.0.4(@types/react-dom@18.3.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@babel/runtime': 7.24.7 + '@radix-ui/react-compose-refs': 1.0.1(react@18.3.1) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-callback-ref': 1.0.1(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react-dom': 18.3.0 + + '@radix-ui/react-id@1.0.1(react@18.3.1)': + dependencies: + '@babel/runtime': 7.24.7 + '@radix-ui/react-use-layout-effect': 1.0.1(react@18.3.1) + react: 18.3.1 + + '@radix-ui/react-menu@2.0.6(@types/react-dom@18.3.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@babel/runtime': 7.24.7 + '@radix-ui/primitive': 1.0.1 + '@radix-ui/react-collection': 1.0.3(@types/react-dom@18.3.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-compose-refs': 1.0.1(react@18.3.1) + '@radix-ui/react-context': 1.0.1(react@18.3.1) + '@radix-ui/react-direction': 1.0.1(react@18.3.1) + '@radix-ui/react-dismissable-layer': 1.0.5(@types/react-dom@18.3.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-focus-guards': 1.0.1(react@18.3.1) + '@radix-ui/react-focus-scope': 1.0.4(@types/react-dom@18.3.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-id': 1.0.1(react@18.3.1) + '@radix-ui/react-popper': 1.1.3(@types/react-dom@18.3.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-portal': 1.0.4(@types/react-dom@18.3.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-presence': 1.0.1(@types/react-dom@18.3.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-roving-focus': 1.0.4(@types/react-dom@18.3.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-slot': 1.0.2(react@18.3.1) + '@radix-ui/react-use-callback-ref': 1.0.1(react@18.3.1) + aria-hidden: 1.2.4 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + react-remove-scroll: 2.5.5(react@18.3.1) + optionalDependencies: + '@types/react-dom': 18.3.0 + + '@radix-ui/react-popper@1.1.3(@types/react-dom@18.3.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@babel/runtime': 7.24.7 + '@floating-ui/react-dom': 2.1.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-arrow': 1.0.3(@types/react-dom@18.3.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-compose-refs': 1.0.1(react@18.3.1) + '@radix-ui/react-context': 1.0.1(react@18.3.1) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-callback-ref': 1.0.1(react@18.3.1) + '@radix-ui/react-use-layout-effect': 1.0.1(react@18.3.1) + '@radix-ui/react-use-rect': 1.0.1(react@18.3.1) + '@radix-ui/react-use-size': 1.0.1(react@18.3.1) + '@radix-ui/rect': 1.0.1 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react-dom': 18.3.0 + + '@radix-ui/react-portal@1.0.4(@types/react-dom@18.3.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@babel/runtime': 7.24.7 + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react-dom': 18.3.0 + + '@radix-ui/react-presence@1.0.1(@types/react-dom@18.3.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@babel/runtime': 7.24.7 + '@radix-ui/react-compose-refs': 1.0.1(react@18.3.1) + '@radix-ui/react-use-layout-effect': 1.0.1(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react-dom': 18.3.0 + + '@radix-ui/react-primitive@1.0.3(@types/react-dom@18.3.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@babel/runtime': 7.24.7 + '@radix-ui/react-slot': 1.0.2(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react-dom': 18.3.0 + + '@radix-ui/react-roving-focus@1.0.4(@types/react-dom@18.3.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@babel/runtime': 7.24.7 + '@radix-ui/primitive': 1.0.1 + '@radix-ui/react-collection': 1.0.3(@types/react-dom@18.3.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-compose-refs': 1.0.1(react@18.3.1) + '@radix-ui/react-context': 1.0.1(react@18.3.1) + '@radix-ui/react-direction': 1.0.1(react@18.3.1) + '@radix-ui/react-id': 1.0.1(react@18.3.1) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-callback-ref': 1.0.1(react@18.3.1) + '@radix-ui/react-use-controllable-state': 1.0.1(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react-dom': 18.3.0 + + '@radix-ui/react-separator@1.0.3(@types/react-dom@18.3.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@babel/runtime': 7.24.7 + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react-dom': 18.3.0 + + '@radix-ui/react-slot@1.0.2(react@18.3.1)': + dependencies: + '@babel/runtime': 7.24.7 + '@radix-ui/react-compose-refs': 1.0.1(react@18.3.1) + react: 18.3.1 + + '@radix-ui/react-toggle-group@1.0.4(@types/react-dom@18.3.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@babel/runtime': 7.24.7 + '@radix-ui/primitive': 1.0.1 + '@radix-ui/react-context': 1.0.1(react@18.3.1) + '@radix-ui/react-direction': 1.0.1(react@18.3.1) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-roving-focus': 1.0.4(@types/react-dom@18.3.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-toggle': 1.0.3(@types/react-dom@18.3.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-controllable-state': 1.0.1(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react-dom': 18.3.0 + + '@radix-ui/react-toggle@1.0.3(@types/react-dom@18.3.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@babel/runtime': 7.24.7 + '@radix-ui/primitive': 1.0.1 + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-controllable-state': 1.0.1(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react-dom': 18.3.0 + + '@radix-ui/react-toolbar@1.0.4(@types/react-dom@18.3.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@babel/runtime': 7.24.7 + '@radix-ui/primitive': 1.0.1 + '@radix-ui/react-context': 1.0.1(react@18.3.1) + '@radix-ui/react-direction': 1.0.1(react@18.3.1) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-roving-focus': 1.0.4(@types/react-dom@18.3.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-separator': 1.0.3(@types/react-dom@18.3.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-toggle-group': 1.0.4(@types/react-dom@18.3.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react-dom': 18.3.0 + + '@radix-ui/react-use-callback-ref@1.0.1(react@18.3.1)': + dependencies: + '@babel/runtime': 7.24.7 + react: 18.3.1 + + '@radix-ui/react-use-controllable-state@1.0.1(react@18.3.1)': + dependencies: + '@babel/runtime': 7.24.7 + '@radix-ui/react-use-callback-ref': 1.0.1(react@18.3.1) + react: 18.3.1 + + '@radix-ui/react-use-escape-keydown@1.0.3(react@18.3.1)': + dependencies: + '@babel/runtime': 7.24.7 + '@radix-ui/react-use-callback-ref': 1.0.1(react@18.3.1) + react: 18.3.1 + + '@radix-ui/react-use-layout-effect@1.0.1(react@18.3.1)': + dependencies: + '@babel/runtime': 7.24.7 + react: 18.3.1 + + '@radix-ui/react-use-previous@1.0.1(react@18.3.1)': + dependencies: + '@babel/runtime': 7.24.7 + react: 18.3.1 + + '@radix-ui/react-use-rect@1.0.1(react@18.3.1)': + dependencies: + '@babel/runtime': 7.24.7 + '@radix-ui/rect': 1.0.1 + react: 18.3.1 + + '@radix-ui/react-use-size@1.0.1(react@18.3.1)': + dependencies: + '@babel/runtime': 7.24.7 + '@radix-ui/react-use-layout-effect': 1.0.1(react@18.3.1) + react: 18.3.1 + + '@radix-ui/react-visually-hidden@1.0.3(@types/react-dom@18.3.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@babel/runtime': 7.24.7 + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react-dom': 18.3.0 + + '@radix-ui/rect@1.0.1': + dependencies: + '@babel/runtime': 7.24.7 + + '@react-dnd/asap@5.0.2': {} + + '@react-dnd/invariant@4.0.2': {} + + '@react-dnd/shallowequal@4.0.2': {} + + '@reduxjs/toolkit@1.9.7(react-redux@8.1.1(@types/react-dom@18.3.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(redux@4.2.1))(react@18.3.1)': + dependencies: + immer: 9.0.21 + redux: 4.2.1 + redux-thunk: 2.4.2(redux@4.2.1) + reselect: 4.1.8 + optionalDependencies: + react: 18.3.1 + react-redux: 8.1.1(@types/react-dom@18.3.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(redux@4.2.1) + + '@rollup/rollup-android-arm-eabi@4.18.0': + optional: true + + '@rollup/rollup-android-arm64@4.18.0': + optional: true + + '@rollup/rollup-darwin-arm64@4.18.0': + optional: true + + '@rollup/rollup-darwin-x64@4.18.0': + optional: true + + '@rollup/rollup-linux-arm-gnueabihf@4.18.0': + optional: true + + '@rollup/rollup-linux-arm-musleabihf@4.18.0': + optional: true + + '@rollup/rollup-linux-arm64-gnu@4.18.0': + optional: true + + '@rollup/rollup-linux-arm64-musl@4.18.0': + optional: true + + '@rollup/rollup-linux-powerpc64le-gnu@4.18.0': + optional: true + + '@rollup/rollup-linux-riscv64-gnu@4.18.0': + optional: true + + '@rollup/rollup-linux-s390x-gnu@4.18.0': + optional: true + + '@rollup/rollup-linux-x64-gnu@4.18.0': + optional: true + + '@rollup/rollup-linux-x64-musl@4.18.0': + optional: true + + '@rollup/rollup-win32-arm64-msvc@4.18.0': + optional: true + + '@rollup/rollup-win32-ia32-msvc@4.18.0': + optional: true + + '@rollup/rollup-win32-x64-msvc@4.18.0': + optional: true + + '@rushstack/node-core-library@5.4.1(@types/node@20.14.5)': + dependencies: + ajv: 8.13.0 + ajv-draft-04: 1.0.0(ajv@8.13.0) + ajv-formats: 3.0.1(ajv@8.13.0) + fs-extra: 7.0.1 + import-lazy: 4.0.0 + jju: 1.4.0 + resolve: 1.22.8 + semver: 7.5.4 + optionalDependencies: + '@types/node': 20.14.5 + + '@rushstack/terminal@0.13.0(@types/node@20.14.5)': + dependencies: + '@rushstack/node-core-library': 5.4.1(@types/node@20.14.5) + supports-color: 8.1.1 + optionalDependencies: + '@types/node': 20.14.5 + + '@rushstack/ts-command-line@4.22.0(@types/node@20.14.5)': + dependencies: + '@rushstack/terminal': 0.13.0(@types/node@20.14.5) + '@types/argparse': 1.0.38 + argparse: 1.0.10 + string-argv: 0.3.2 + transitivePeerDependencies: + - '@types/node' + + '@sendgrid/client@7.7.0': + dependencies: + '@sendgrid/helpers': 7.7.0 + axios: 0.26.1 + transitivePeerDependencies: + - debug + + '@sendgrid/helpers@7.7.0': + dependencies: + deepmerge: 4.3.1 + + '@sendgrid/mail@7.7.0': + dependencies: + '@sendgrid/client': 7.7.0 + '@sendgrid/helpers': 7.7.0 + transitivePeerDependencies: + - debug + + '@sentry/core@6.19.7': + dependencies: + '@sentry/hub': 6.19.7 + '@sentry/minimal': 6.19.7 + '@sentry/types': 6.19.7 + '@sentry/utils': 6.19.7 + tslib: 1.14.1 + + '@sentry/hub@6.19.7': + dependencies: + '@sentry/types': 6.19.7 + '@sentry/utils': 6.19.7 + tslib: 1.14.1 + + '@sentry/minimal@6.19.7': + dependencies: + '@sentry/hub': 6.19.7 + '@sentry/types': 6.19.7 + tslib: 1.14.1 + + '@sentry/node@6.19.7': + dependencies: + '@sentry/core': 6.19.7 + '@sentry/hub': 6.19.7 + '@sentry/types': 6.19.7 + '@sentry/utils': 6.19.7 + cookie: 0.4.2 + https-proxy-agent: 5.0.1 + lru_map: 0.3.3 + tslib: 1.14.1 + transitivePeerDependencies: + - supports-color + + '@sentry/types@6.19.7': {} + + '@sentry/utils@6.19.7': + dependencies: + '@sentry/types': 6.19.7 + tslib: 1.14.1 + + '@simov/deep-extend@1.0.0': {} + + '@sindresorhus/is@4.6.0': {} + + '@sindresorhus/slugify@1.1.0': + dependencies: + '@sindresorhus/transliterate': 0.1.2 + escape-string-regexp: 4.0.0 + + '@sindresorhus/transliterate@0.1.2': + dependencies: + escape-string-regexp: 2.0.0 + lodash.deburr: 4.1.0 + + '@smithy/abort-controller@3.1.0': + dependencies: + '@smithy/types': 3.2.0 + tslib: 2.6.3 + + '@smithy/chunked-blob-reader-native@3.0.0': + dependencies: + '@smithy/util-base64': 3.0.0 + tslib: 2.6.3 + + '@smithy/chunked-blob-reader@3.0.0': + dependencies: + tslib: 2.6.3 + + '@smithy/config-resolver@3.0.3': + dependencies: + '@smithy/node-config-provider': 3.1.2 + '@smithy/types': 3.2.0 + '@smithy/util-config-provider': 3.0.0 + '@smithy/util-middleware': 3.0.2 + tslib: 2.6.3 + + '@smithy/core@2.2.3': + dependencies: + '@smithy/middleware-endpoint': 3.0.3 + '@smithy/middleware-retry': 3.0.6 + '@smithy/middleware-serde': 3.0.2 + '@smithy/protocol-http': 4.0.2 + '@smithy/smithy-client': 3.1.4 + '@smithy/types': 3.2.0 + '@smithy/util-middleware': 3.0.2 + tslib: 2.6.3 + + '@smithy/credential-provider-imds@3.1.2': + dependencies: + '@smithy/node-config-provider': 3.1.2 + '@smithy/property-provider': 3.1.2 + '@smithy/types': 3.2.0 + '@smithy/url-parser': 3.0.2 + tslib: 2.6.3 + + '@smithy/eventstream-codec@3.1.1': + dependencies: + '@aws-crypto/crc32': 5.2.0 + '@smithy/types': 3.2.0 + '@smithy/util-hex-encoding': 3.0.0 + tslib: 2.6.3 + + '@smithy/eventstream-serde-browser@3.0.3': + dependencies: + '@smithy/eventstream-serde-universal': 3.0.3 + '@smithy/types': 3.2.0 + tslib: 2.6.3 + + '@smithy/eventstream-serde-config-resolver@3.0.2': + dependencies: + '@smithy/types': 3.2.0 + tslib: 2.6.3 + + '@smithy/eventstream-serde-node@3.0.3': + dependencies: + '@smithy/eventstream-serde-universal': 3.0.3 + '@smithy/types': 3.2.0 + tslib: 2.6.3 + + '@smithy/eventstream-serde-universal@3.0.3': + dependencies: + '@smithy/eventstream-codec': 3.1.1 + '@smithy/types': 3.2.0 + tslib: 2.6.3 + + '@smithy/fetch-http-handler@3.1.0': + dependencies: + '@smithy/protocol-http': 4.0.2 + '@smithy/querystring-builder': 3.0.2 + '@smithy/types': 3.2.0 + '@smithy/util-base64': 3.0.0 + tslib: 2.6.3 + + '@smithy/hash-blob-browser@3.1.1': + dependencies: + '@smithy/chunked-blob-reader': 3.0.0 + '@smithy/chunked-blob-reader-native': 3.0.0 + '@smithy/types': 3.2.0 + tslib: 2.6.3 + + '@smithy/hash-node@3.0.2': + dependencies: + '@smithy/types': 3.2.0 + '@smithy/util-buffer-from': 3.0.0 + '@smithy/util-utf8': 3.0.0 + tslib: 2.6.3 + + '@smithy/hash-stream-node@3.1.1': + dependencies: + '@smithy/types': 3.2.0 + '@smithy/util-utf8': 3.0.0 + tslib: 2.6.3 + + '@smithy/invalid-dependency@3.0.2': + dependencies: + '@smithy/types': 3.2.0 + tslib: 2.6.3 + + '@smithy/is-array-buffer@2.2.0': + dependencies: + tslib: 2.6.3 + + '@smithy/is-array-buffer@3.0.0': + dependencies: + tslib: 2.6.3 + + '@smithy/md5-js@3.0.2': + dependencies: + '@smithy/types': 3.2.0 + '@smithy/util-utf8': 3.0.0 + tslib: 2.6.3 + + '@smithy/middleware-content-length@3.0.2': + dependencies: + '@smithy/protocol-http': 4.0.2 + '@smithy/types': 3.2.0 + tslib: 2.6.3 + + '@smithy/middleware-endpoint@3.0.3': + dependencies: + '@smithy/middleware-serde': 3.0.2 + '@smithy/node-config-provider': 3.1.2 + '@smithy/shared-ini-file-loader': 3.1.2 + '@smithy/types': 3.2.0 + '@smithy/url-parser': 3.0.2 + '@smithy/util-middleware': 3.0.2 + tslib: 2.6.3 + + '@smithy/middleware-retry@3.0.6': + dependencies: + '@smithy/node-config-provider': 3.1.2 + '@smithy/protocol-http': 4.0.2 + '@smithy/service-error-classification': 3.0.2 + '@smithy/smithy-client': 3.1.4 + '@smithy/types': 3.2.0 + '@smithy/util-middleware': 3.0.2 + '@smithy/util-retry': 3.0.2 + tslib: 2.6.3 + uuid: 9.0.1 + + '@smithy/middleware-serde@3.0.2': + dependencies: + '@smithy/types': 3.2.0 + tslib: 2.6.3 + + '@smithy/middleware-stack@3.0.2': + dependencies: + '@smithy/types': 3.2.0 + tslib: 2.6.3 + + '@smithy/node-config-provider@3.1.2': + dependencies: + '@smithy/property-provider': 3.1.2 + '@smithy/shared-ini-file-loader': 3.1.2 + '@smithy/types': 3.2.0 + tslib: 2.6.3 + + '@smithy/node-http-handler@3.1.0': + dependencies: + '@smithy/abort-controller': 3.1.0 + '@smithy/protocol-http': 4.0.2 + '@smithy/querystring-builder': 3.0.2 + '@smithy/types': 3.2.0 + tslib: 2.6.3 + + '@smithy/property-provider@3.1.2': + dependencies: + '@smithy/types': 3.2.0 + tslib: 2.6.3 + + '@smithy/protocol-http@4.0.2': + dependencies: + '@smithy/types': 3.2.0 + tslib: 2.6.3 + + '@smithy/querystring-builder@3.0.2': + dependencies: + '@smithy/types': 3.2.0 + '@smithy/util-uri-escape': 3.0.0 + tslib: 2.6.3 + + '@smithy/querystring-parser@3.0.2': + dependencies: + '@smithy/types': 3.2.0 + tslib: 2.6.3 + + '@smithy/service-error-classification@3.0.2': + dependencies: + '@smithy/types': 3.2.0 + + '@smithy/shared-ini-file-loader@3.1.2': + dependencies: + '@smithy/types': 3.2.0 + tslib: 2.6.3 + + '@smithy/signature-v4@3.1.1': + dependencies: + '@smithy/is-array-buffer': 3.0.0 + '@smithy/types': 3.2.0 + '@smithy/util-hex-encoding': 3.0.0 + '@smithy/util-middleware': 3.0.2 + '@smithy/util-uri-escape': 3.0.0 + '@smithy/util-utf8': 3.0.0 + tslib: 2.6.3 + + '@smithy/smithy-client@3.1.4': + dependencies: + '@smithy/middleware-endpoint': 3.0.3 + '@smithy/middleware-stack': 3.0.2 + '@smithy/protocol-http': 4.0.2 + '@smithy/types': 3.2.0 + '@smithy/util-stream': 3.0.4 + tslib: 2.6.3 + + '@smithy/types@3.2.0': + dependencies: + tslib: 2.6.3 + + '@smithy/url-parser@3.0.2': + dependencies: + '@smithy/querystring-parser': 3.0.2 + '@smithy/types': 3.2.0 + tslib: 2.6.3 + + '@smithy/util-base64@3.0.0': + dependencies: + '@smithy/util-buffer-from': 3.0.0 + '@smithy/util-utf8': 3.0.0 + tslib: 2.6.3 + + '@smithy/util-body-length-browser@3.0.0': + dependencies: + tslib: 2.6.3 + + '@smithy/util-body-length-node@3.0.0': + dependencies: + tslib: 2.6.3 + + '@smithy/util-buffer-from@2.2.0': + dependencies: + '@smithy/is-array-buffer': 2.2.0 + tslib: 2.6.3 + + '@smithy/util-buffer-from@3.0.0': + dependencies: + '@smithy/is-array-buffer': 3.0.0 + tslib: 2.6.3 + + '@smithy/util-config-provider@3.0.0': + dependencies: + tslib: 2.6.3 + + '@smithy/util-defaults-mode-browser@3.0.6': + dependencies: + '@smithy/property-provider': 3.1.2 + '@smithy/smithy-client': 3.1.4 + '@smithy/types': 3.2.0 + bowser: 2.11.0 + tslib: 2.6.3 + + '@smithy/util-defaults-mode-node@3.0.6': + dependencies: + '@smithy/config-resolver': 3.0.3 + '@smithy/credential-provider-imds': 3.1.2 + '@smithy/node-config-provider': 3.1.2 + '@smithy/property-provider': 3.1.2 + '@smithy/smithy-client': 3.1.4 + '@smithy/types': 3.2.0 + tslib: 2.6.3 + + '@smithy/util-endpoints@2.0.3': + dependencies: + '@smithy/node-config-provider': 3.1.2 + '@smithy/types': 3.2.0 + tslib: 2.6.3 + + '@smithy/util-hex-encoding@3.0.0': + dependencies: + tslib: 2.6.3 + + '@smithy/util-middleware@3.0.2': + dependencies: + '@smithy/types': 3.2.0 + tslib: 2.6.3 + + '@smithy/util-retry@3.0.2': + dependencies: + '@smithy/service-error-classification': 3.0.2 + '@smithy/types': 3.2.0 + tslib: 2.6.3 + + '@smithy/util-stream@3.0.4': + dependencies: + '@smithy/fetch-http-handler': 3.1.0 + '@smithy/node-http-handler': 3.1.0 + '@smithy/types': 3.2.0 + '@smithy/util-base64': 3.0.0 + '@smithy/util-buffer-from': 3.0.0 + '@smithy/util-hex-encoding': 3.0.0 + '@smithy/util-utf8': 3.0.0 + tslib: 2.6.3 + + '@smithy/util-uri-escape@3.0.0': + dependencies: + tslib: 2.6.3 + + '@smithy/util-utf8@2.3.0': + dependencies: + '@smithy/util-buffer-from': 2.2.0 + tslib: 2.6.3 + + '@smithy/util-utf8@3.0.0': + dependencies: + '@smithy/util-buffer-from': 3.0.0 + tslib: 2.6.3 + + '@smithy/util-waiter@3.1.0': + dependencies: + '@smithy/abort-controller': 3.1.0 + '@smithy/types': 3.2.0 + tslib: 2.6.3 + + ? '@strapi/admin@4.25.0(@babel/runtime@7.24.7)(@codemirror/autocomplete@6.16.2(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.1)(@lezer/common@1.2.1))(@codemirror/language@6.10.2)(@codemirror/lint@6.8.0)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.28.1)(@strapi/data-transfer@4.25.0(@strapi/strapi@4.25.0(@babel/runtime@7.24.7)(@codemirror/autocomplete@6.16.2(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.1)(@lezer/common@1.2.1))(@codemirror/language@6.10.2)(@codemirror/lint@6.8.0)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.28.1)(@swc/helpers@0.5.11)(@types/hoist-non-react-statics@3.3.5)(@types/node@20.14.5)(@types/react-dom@18.3.0)(better-sqlite3@8.0.1)(codemirror@6.0.1(@lezer/common@1.2.1))(pg@8.12.0)(react-dom@18.3.1(react@18.3.1))(react-router-dom@5.3.4(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1))(terser@5.31.1)(type-fest@2.19.0))(@types/node@20.14.5)(better-sqlite3@8.0.1)(pg@8.12.0))(@strapi/strapi@4.25.0(@babel/runtime@7.24.7)(@codemirror/autocomplete@6.16.2(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.1)(@lezer/common@1.2.1))(@codemirror/language@6.10.2)(@codemirror/lint@6.8.0)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.28.1)(@swc/helpers@0.5.11)(@types/hoist-non-react-statics@3.3.5)(@types/node@20.14.5)(@types/react-dom@18.3.0)(better-sqlite3@8.0.1)(codemirror@6.0.1(@lezer/common@1.2.1))(pg@8.12.0)(react-dom@18.3.1(react@18.3.1))(react-router-dom@5.3.4(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1))(terser@5.31.1)(type-fest@2.19.0))(@swc/helpers@0.5.11)(@types/hoist-non-react-statics@3.3.5)(@types/node@20.14.5)(@types/react-dom@18.3.0)(better-sqlite3@8.0.1)(codemirror@6.0.1(@lezer/common@1.2.1))(debug@4.3.4)(pg@8.12.0)(react-dom@18.3.1(react@18.3.1))(react-router-dom@5.3.4(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1))(terser@5.31.1)(type-fest@2.19.0)' + : dependencies: + '@casl/ability': 6.5.0 + '@pmmmwh/react-refresh-webpack-plugin': 0.5.11(react-refresh@0.14.0)(type-fest@2.19.0)(webpack-hot-middleware@2.26.0)(webpack@5.92.0(esbuild@0.19.11)) + '@radix-ui/react-context': 1.0.1(react@18.3.1) + '@radix-ui/react-toolbar': 1.0.4(@types/react-dom@18.3.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@reduxjs/toolkit': 1.9.7(react-redux@8.1.1(@types/react-dom@18.3.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(redux@4.2.1))(react@18.3.1) + '@strapi/data-transfer': 4.25.0(@strapi/strapi@4.25.0(@babel/runtime@7.24.7)(@codemirror/autocomplete@6.16.2(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.1)(@lezer/common@1.2.1))(@codemirror/language@6.10.2)(@codemirror/lint@6.8.0)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.28.1)(@swc/helpers@0.5.11)(@types/hoist-non-react-statics@3.3.5)(@types/node@20.14.5)(@types/react-dom@18.3.0)(better-sqlite3@8.0.1)(codemirror@6.0.1(@lezer/common@1.2.1))(pg@8.12.0)(react-dom@18.3.1(react@18.3.1))(react-router-dom@5.3.4(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1))(terser@5.31.1)(type-fest@2.19.0))(@types/node@20.14.5)(better-sqlite3@8.0.1)(pg@8.12.0) + '@strapi/design-system': 1.19.0(@babel/runtime@7.24.7)(@codemirror/autocomplete@6.16.2(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.1)(@lezer/common@1.2.1))(@codemirror/language@6.10.2)(@codemirror/lint@6.8.0)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.28.1)(@strapi/icons@1.19.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react-dom@18.3.0)(codemirror@6.0.1(@lezer/common@1.2.1))(react-dom@18.3.1(react@18.3.1))(react-router-dom@5.3.4(react@18.3.1))(react@18.3.1)(styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1)) + '@strapi/helper-plugin': 4.25.0(@strapi/design-system@1.19.0(@babel/runtime@7.24.7)(@codemirror/autocomplete@6.16.2(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.1)(@lezer/common@1.2.1))(@codemirror/language@6.10.2)(@codemirror/lint@6.8.0)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.28.1)(@strapi/icons@1.19.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react-dom@18.3.0)(codemirror@6.0.1(@lezer/common@1.2.1))(react-dom@18.3.1(react@18.3.1))(react-router-dom@5.3.4(react@18.3.1))(react@18.3.1)(styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1)))(@strapi/icons@1.19.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(debug@4.3.4)(react-dom@18.3.1(react@18.3.1))(react-router-dom@5.3.4(react@18.3.1))(react@18.3.1)(styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1))(typescript@5.2.2) + '@strapi/icons': 1.19.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@strapi/permissions': 4.25.0 + '@strapi/provider-audit-logs-local': 4.25.0 + '@strapi/strapi': 4.25.0(@babel/runtime@7.24.7)(@codemirror/autocomplete@6.16.2(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.1)(@lezer/common@1.2.1))(@codemirror/language@6.10.2)(@codemirror/lint@6.8.0)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.28.1)(@swc/helpers@0.5.11)(@types/hoist-non-react-statics@3.3.5)(@types/node@20.14.5)(@types/react-dom@18.3.0)(better-sqlite3@8.0.1)(codemirror@6.0.1(@lezer/common@1.2.1))(pg@8.12.0)(react-dom@18.3.1(react@18.3.1))(react-router-dom@5.3.4(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1))(terser@5.31.1)(type-fest@2.19.0) + '@strapi/types': 4.25.0(@types/node@20.14.5)(better-sqlite3@8.0.1)(pg@8.12.0) + '@strapi/typescript-utils': 4.25.0 + '@strapi/utils': 4.25.0 + '@vitejs/plugin-react-swc': 3.5.0(@swc/helpers@0.5.11)(vite@5.0.13(@types/node@20.14.5)(terser@5.31.1)) + axios: 1.6.0(debug@4.3.4) + bcryptjs: 2.4.3 + boxen: 5.1.2 + browserslist: 4.23.1 + browserslist-to-esbuild: 1.2.0 + chalk: 4.1.2 + chokidar: 3.5.3 + codemirror5: codemirror@5.65.16 + cross-env: 7.0.3 + css-loader: 6.11.0(webpack@5.92.0(esbuild@0.19.11)) + date-fns: 2.30.0 + dotenv: 14.2.0 + esbuild: 0.19.11 + esbuild-loader: 2.21.0(webpack@5.92.0(esbuild@0.19.11)) + esbuild-register: 3.5.0(esbuild@0.19.11) + execa: 5.1.1 + fast-deep-equal: 3.1.3 + find-root: 1.1.0 + fork-ts-checker-webpack-plugin: 9.0.2(typescript@5.2.2)(webpack@5.92.0(esbuild@0.19.11)) + formik: 2.4.0(react@18.3.1) + fractional-indexing: 3.2.0 + fs-extra: 10.0.0 + highlight.js: 10.7.3 + history: 4.10.1 + html-webpack-plugin: 5.6.0(webpack@5.92.0(esbuild@0.19.11)) + immer: 9.0.19 + inquirer: 8.2.5 + invariant: 2.2.4 + js-cookie: 2.2.1 + jsonwebtoken: 9.0.0 + koa: 2.13.4 + koa-bodyparser: 4.4.1 + koa-compose: 4.1.0 + koa-passport: 5.0.0 + koa-static: 5.0.0 + koa2-ratelimit: 1.1.3 + lodash: 4.17.21 + markdown-it: 12.3.2 + markdown-it-abbr: 1.0.4 + markdown-it-container: 3.0.0 + markdown-it-deflist: 2.1.0 + markdown-it-emoji: 2.0.2 + markdown-it-footnote: 3.0.3 + markdown-it-ins: 3.0.1 + markdown-it-mark: 3.0.1 + markdown-it-sub: 1.0.0 + markdown-it-sup: 1.0.0 + mini-css-extract-plugin: 2.7.7(webpack@5.92.0(esbuild@0.19.11)) + node-schedule: 2.1.0 + ora: 5.4.1 + outdent: 0.8.0 + p-map: 4.0.0 + passport-local: 1.0.0 + pluralize: 8.0.0 + prettier: 2.8.4 + prop-types: 15.8.1 + qs: 6.11.1 + react: 18.3.1 + react-dnd: 16.0.1(@types/hoist-non-react-statics@3.3.5)(@types/node@20.14.5)(react@18.3.1) + react-dnd-html5-backend: 16.0.1 + react-dom: 18.3.1(react@18.3.1) + react-error-boundary: 3.1.4(react@18.3.1) + react-helmet: 6.1.0(react@18.3.1) + react-intl: 6.4.1(react@18.3.1)(typescript@5.2.2) + react-is: 18.3.1 + react-query: 3.39.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react-redux: 8.1.1(@types/react-dom@18.3.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(redux@4.2.1) + react-refresh: 0.14.0 + react-router-dom: 5.3.4(react@18.3.1) + react-select: 5.7.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react-window: 1.8.8(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + read-pkg-up: 7.0.1 + resolve-from: 5.0.0 + rimraf: 3.0.2 + sanitize-html: 2.13.0 + semver: 7.5.4 + sift: 16.0.1 + slate: 0.94.1 + slate-history: 0.93.0(slate@0.94.1) + slate-react: 0.98.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.94.1) + style-loader: 3.3.4(webpack@5.92.0(esbuild@0.19.11)) + styled-components: 5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1) + typescript: 5.2.2 + vite: 5.0.13(@types/node@20.14.5)(terser@5.31.1) + webpack: 5.92.0(esbuild@0.19.11) + webpack-bundle-analyzer: 4.10.2 + webpack-dev-middleware: 6.1.2(webpack@5.92.0(esbuild@0.19.11)) + webpack-hot-middleware: 2.26.0 + yup: 0.32.9 + transitivePeerDependencies: + - '@babel/runtime' + - '@codemirror/autocomplete' + - '@codemirror/language' + - '@codemirror/lint' + - '@codemirror/search' + - '@codemirror/state' + - '@codemirror/theme-one-dark' + - '@codemirror/view' + - '@rspack/core' + - '@swc/core' + - '@swc/helpers' + - '@types/hoist-non-react-statics' + - '@types/node' + - '@types/react' + - '@types/react-dom' + - '@types/webpack' + - better-sqlite3 + - bufferutil + - codemirror + - debug + - encoding + - less + - lightningcss + - mongoose + - mysql + - mysql2 + - pg + - pg-native + - react-native + - redis + - redux + - sass + - sequelize + - sockjs-client + - sqlite3 + - stylus + - sugarss + - supports-color + - tedious + - terser + - type-fest + - uglify-js + - utf-8-validate + - webpack-cli + - webpack-dev-server + - webpack-plugin-serve + + '@strapi/cloud-cli@4.25.0(debug@4.3.4)': + dependencies: + '@strapi/utils': 4.25.0 + axios: 1.6.0(debug@4.3.4) + chalk: 4.1.2 + cli-progress: 3.12.0 + commander: 8.3.0 + eventsource: 2.0.2 + fast-safe-stringify: 2.1.1 + fs-extra: 10.0.0 + inquirer: 8.2.5 + jsonwebtoken: 9.0.0 + jwks-rsa: 3.1.0 + lodash: 4.17.21 + minimatch: 9.0.3 + open: 8.4.0 + ora: 5.4.1 + pkg-up: 3.1.0 + tar: 6.1.13 + xdg-app-paths: 8.3.0 + yup: 0.32.9 + transitivePeerDependencies: + - debug + - supports-color + + ? '@strapi/content-releases@4.25.0(@babel/runtime@7.24.7)(@codemirror/autocomplete@6.16.2(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.1)(@lezer/common@1.2.1))(@codemirror/language@6.10.2)(@codemirror/lint@6.8.0)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.28.1)(@strapi/admin@4.25.0(@babel/runtime@7.24.7)(@codemirror/autocomplete@6.16.2(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.1)(@lezer/common@1.2.1))(@codemirror/language@6.10.2)(@codemirror/lint@6.8.0)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.28.1)(@strapi/data-transfer@4.25.0(@strapi/strapi@4.25.0(@babel/runtime@7.24.7)(@codemirror/autocomplete@6.16.2(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.1)(@lezer/common@1.2.1))(@codemirror/language@6.10.2)(@codemirror/lint@6.8.0)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.28.1)(@swc/helpers@0.5.11)(@types/hoist-non-react-statics@3.3.5)(@types/node@20.14.5)(@types/react-dom@18.3.0)(better-sqlite3@8.0.1)(codemirror@6.0.1(@lezer/common@1.2.1))(pg@8.12.0)(react-dom@18.3.1(react@18.3.1))(react-router-dom@5.3.4(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1))(terser@5.31.1)(type-fest@2.19.0))(@types/node@20.14.5)(better-sqlite3@8.0.1)(pg@8.12.0))(@strapi/strapi@4.25.0(@babel/runtime@7.24.7)(@codemirror/autocomplete@6.16.2(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.1)(@lezer/common@1.2.1))(@codemirror/language@6.10.2)(@codemirror/lint@6.8.0)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.28.1)(@swc/helpers@0.5.11)(@types/hoist-non-react-statics@3.3.5)(@types/node@20.14.5)(@types/react-dom@18.3.0)(better-sqlite3@8.0.1)(codemirror@6.0.1(@lezer/common@1.2.1))(pg@8.12.0)(react-dom@18.3.1(react@18.3.1))(react-router-dom@5.3.4(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1))(terser@5.31.1)(type-fest@2.19.0))(@swc/helpers@0.5.11)(@types/hoist-non-react-statics@3.3.5)(@types/node@20.14.5)(@types/react-dom@18.3.0)(better-sqlite3@8.0.1)(codemirror@6.0.1(@lezer/common@1.2.1))(debug@4.3.4)(pg@8.12.0)(react-dom@18.3.1(react@18.3.1))(react-router-dom@5.3.4(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1))(terser@5.31.1)(type-fest@2.19.0))(@strapi/strapi@4.25.0(@babel/runtime@7.24.7)(@codemirror/autocomplete@6.16.2(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.1)(@lezer/common@1.2.1))(@codemirror/language@6.10.2)(@codemirror/lint@6.8.0)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.28.1)(@swc/helpers@0.5.11)(@types/hoist-non-react-statics@3.3.5)(@types/node@20.14.5)(@types/react-dom@18.3.0)(better-sqlite3@8.0.1)(codemirror@6.0.1(@lezer/common@1.2.1))(pg@8.12.0)(react-dom@18.3.1(react@18.3.1))(react-router-dom@5.3.4(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1))(terser@5.31.1)(type-fest@2.19.0))(@types/node@20.14.5)(@types/react-dom@18.3.0)(better-sqlite3@8.0.1)(codemirror@6.0.1(@lezer/common@1.2.1))(debug@4.3.4)(pg@8.12.0)(react-dom@18.3.1(react@18.3.1))(react-router-dom@5.3.4(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1))(typescript@5.2.2)' + : dependencies: + '@reduxjs/toolkit': 1.9.7(react-redux@8.1.1(@types/react-dom@18.3.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(redux@4.2.1))(react@18.3.1) + '@strapi/admin': 4.25.0(@babel/runtime@7.24.7)(@codemirror/autocomplete@6.16.2(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.1)(@lezer/common@1.2.1))(@codemirror/language@6.10.2)(@codemirror/lint@6.8.0)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.28.1)(@strapi/data-transfer@4.25.0(@strapi/strapi@4.25.0(@babel/runtime@7.24.7)(@codemirror/autocomplete@6.16.2(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.1)(@lezer/common@1.2.1))(@codemirror/language@6.10.2)(@codemirror/lint@6.8.0)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.28.1)(@swc/helpers@0.5.11)(@types/hoist-non-react-statics@3.3.5)(@types/node@20.14.5)(@types/react-dom@18.3.0)(better-sqlite3@8.0.1)(codemirror@6.0.1(@lezer/common@1.2.1))(pg@8.12.0)(react-dom@18.3.1(react@18.3.1))(react-router-dom@5.3.4(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1))(terser@5.31.1)(type-fest@2.19.0))(@types/node@20.14.5)(better-sqlite3@8.0.1)(pg@8.12.0))(@strapi/strapi@4.25.0(@babel/runtime@7.24.7)(@codemirror/autocomplete@6.16.2(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.1)(@lezer/common@1.2.1))(@codemirror/language@6.10.2)(@codemirror/lint@6.8.0)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.28.1)(@swc/helpers@0.5.11)(@types/hoist-non-react-statics@3.3.5)(@types/node@20.14.5)(@types/react-dom@18.3.0)(better-sqlite3@8.0.1)(codemirror@6.0.1(@lezer/common@1.2.1))(pg@8.12.0)(react-dom@18.3.1(react@18.3.1))(react-router-dom@5.3.4(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1))(terser@5.31.1)(type-fest@2.19.0))(@swc/helpers@0.5.11)(@types/hoist-non-react-statics@3.3.5)(@types/node@20.14.5)(@types/react-dom@18.3.0)(better-sqlite3@8.0.1)(codemirror@6.0.1(@lezer/common@1.2.1))(debug@4.3.4)(pg@8.12.0)(react-dom@18.3.1(react@18.3.1))(react-router-dom@5.3.4(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1))(terser@5.31.1)(type-fest@2.19.0) + '@strapi/design-system': 1.19.0(@babel/runtime@7.24.7)(@codemirror/autocomplete@6.16.2(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.1)(@lezer/common@1.2.1))(@codemirror/language@6.10.2)(@codemirror/lint@6.8.0)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.28.1)(@strapi/icons@1.19.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react-dom@18.3.0)(codemirror@6.0.1(@lezer/common@1.2.1))(react-dom@18.3.1(react@18.3.1))(react-router-dom@5.3.4(react@18.3.1))(react@18.3.1)(styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1)) + '@strapi/helper-plugin': 4.25.0(@strapi/design-system@1.19.0(@babel/runtime@7.24.7)(@codemirror/autocomplete@6.16.2(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.1)(@lezer/common@1.2.1))(@codemirror/language@6.10.2)(@codemirror/lint@6.8.0)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.28.1)(@strapi/icons@1.19.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react-dom@18.3.0)(codemirror@6.0.1(@lezer/common@1.2.1))(react-dom@18.3.1(react@18.3.1))(react-router-dom@5.3.4(react@18.3.1))(react@18.3.1)(styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1)))(@strapi/icons@1.19.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(debug@4.3.4)(react-dom@18.3.1(react@18.3.1))(react-router-dom@5.3.4(react@18.3.1))(react@18.3.1)(styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1))(typescript@5.2.2) + '@strapi/icons': 1.19.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@strapi/strapi': 4.25.0(@babel/runtime@7.24.7)(@codemirror/autocomplete@6.16.2(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.1)(@lezer/common@1.2.1))(@codemirror/language@6.10.2)(@codemirror/lint@6.8.0)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.28.1)(@swc/helpers@0.5.11)(@types/hoist-non-react-statics@3.3.5)(@types/node@20.14.5)(@types/react-dom@18.3.0)(better-sqlite3@8.0.1)(codemirror@6.0.1(@lezer/common@1.2.1))(pg@8.12.0)(react-dom@18.3.1(react@18.3.1))(react-router-dom@5.3.4(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1))(terser@5.31.1)(type-fest@2.19.0) + '@strapi/types': 4.25.0(@types/node@20.14.5)(better-sqlite3@8.0.1)(pg@8.12.0) + '@strapi/utils': 4.25.0 + axios: 1.6.0(debug@4.3.4) + date-fns: 2.30.0 + date-fns-tz: 2.0.0(date-fns@2.30.0) + formik: 2.4.0(react@18.3.1) + lodash: 4.17.21 + node-schedule: 2.1.0 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + react-intl: 6.4.1(react@18.3.1)(typescript@5.2.2) + react-redux: 8.1.1(@types/react-dom@18.3.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(redux@4.2.1) + react-router-dom: 5.3.4(react@18.3.1) + styled-components: 5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1) + yup: 0.32.9 + transitivePeerDependencies: + - '@babel/runtime' + - '@codemirror/autocomplete' + - '@codemirror/language' + - '@codemirror/lint' + - '@codemirror/search' + - '@codemirror/state' + - '@codemirror/theme-one-dark' + - '@codemirror/view' + - '@types/node' + - '@types/react' + - '@types/react-dom' + - better-sqlite3 + - codemirror + - debug + - encoding + - mysql + - mysql2 + - pg + - pg-native + - react-native + - redux + - sqlite3 + - supports-color + - tedious + - typescript + + '@strapi/data-transfer@4.25.0(@strapi/strapi@4.25.0(@babel/runtime@7.24.7)(@codemirror/autocomplete@6.16.2(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.1)(@lezer/common@1.2.1))(@codemirror/language@6.10.2)(@codemirror/lint@6.8.0)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.28.1)(@swc/helpers@0.5.11)(@types/hoist-non-react-statics@3.3.5)(@types/node@20.14.5)(@types/react-dom@18.3.0)(better-sqlite3@8.0.1)(codemirror@6.0.1(@lezer/common@1.2.1))(pg@8.12.0)(react-dom@18.3.1(react@18.3.1))(react-router-dom@5.3.4(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1))(terser@5.31.1)(type-fest@2.19.0))(@types/node@20.14.5)(better-sqlite3@8.0.1)(pg@8.12.0)': + dependencies: + '@strapi/logger': 4.25.0 + '@strapi/strapi': 4.25.0(@babel/runtime@7.24.7)(@codemirror/autocomplete@6.16.2(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.1)(@lezer/common@1.2.1))(@codemirror/language@6.10.2)(@codemirror/lint@6.8.0)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.28.1)(@swc/helpers@0.5.11)(@types/hoist-non-react-statics@3.3.5)(@types/node@20.14.5)(@types/react-dom@18.3.0)(better-sqlite3@8.0.1)(codemirror@6.0.1(@lezer/common@1.2.1))(pg@8.12.0)(react-dom@18.3.1(react@18.3.1))(react-router-dom@5.3.4(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1))(terser@5.31.1)(type-fest@2.19.0) + '@strapi/types': 4.25.0(@types/node@20.14.5)(better-sqlite3@8.0.1)(pg@8.12.0) + '@strapi/utils': 4.25.0 + chalk: 4.1.2 + cli-table3: 0.6.2 + commander: 8.3.0 + fs-extra: 10.0.0 + inquirer: 8.2.5 + lodash: 4.17.21 + ora: 5.4.1 + resolve-cwd: 3.0.0 + semver: 7.5.4 + stream-chain: 2.2.5 + stream-json: 1.8.0 + tar: 6.1.13 + tar-stream: 2.2.0 + ws: 8.13.0 + transitivePeerDependencies: + - '@types/node' + - better-sqlite3 + - bufferutil + - encoding + - mysql + - mysql2 + - pg + - pg-native + - sqlite3 + - supports-color + - tedious + - utf-8-validate + + '@strapi/database@4.25.0(@types/node@20.14.5)(better-sqlite3@8.0.1)(pg@8.12.0)': + dependencies: + '@strapi/utils': 4.25.0 + date-fns: 2.30.0 + debug: 4.3.4 + fs-extra: 10.0.0 + knex: 2.5.0(better-sqlite3@8.0.1)(pg@8.12.0) + lodash: 4.17.21 + semver: 7.5.4 + umzug: 3.2.1(@types/node@20.14.5) + transitivePeerDependencies: + - '@types/node' + - better-sqlite3 + - mysql + - mysql2 + - pg + - pg-native + - sqlite3 + - supports-color + - tedious + + '@strapi/design-system@1.19.0(@babel/runtime@7.24.7)(@codemirror/autocomplete@6.16.2(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.1)(@lezer/common@1.2.1))(@codemirror/language@6.10.2)(@codemirror/lint@6.8.0)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.28.1)(@strapi/icons@1.19.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react-dom@18.3.0)(codemirror@6.0.1(@lezer/common@1.2.1))(react-dom@18.3.1(react@18.3.1))(react-router-dom@5.3.4(react@18.3.1))(react@18.3.1)(styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1))': + dependencies: + '@codemirror/lang-json': 6.0.1 + '@floating-ui/react-dom': 2.1.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@internationalized/date': 3.5.4 + '@internationalized/number': 3.5.3 + '@radix-ui/react-dismissable-layer': 1.0.5(@types/react-dom@18.3.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-dropdown-menu': 2.0.6(@types/react-dom@18.3.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-focus-scope': 1.0.4(@types/react-dom@18.3.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@strapi/icons': 1.19.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@strapi/ui-primitives': 1.19.0(@types/react-dom@18.3.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@uiw/react-codemirror': 4.22.2(@babel/runtime@7.24.7)(@codemirror/autocomplete@6.16.2(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.1)(@lezer/common@1.2.1))(@codemirror/language@6.10.2)(@codemirror/lint@6.8.0)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.28.1)(codemirror@6.0.1(@lezer/common@1.2.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + aria-hidden: 1.2.4 + compute-scroll-into-view: 3.1.0 + prop-types: 15.8.1 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + react-remove-scroll: 2.5.10(react@18.3.1) + react-router-dom: 5.3.4(react@18.3.1) + styled-components: 5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1) + transitivePeerDependencies: + - '@babel/runtime' + - '@codemirror/autocomplete' + - '@codemirror/language' + - '@codemirror/lint' + - '@codemirror/search' + - '@codemirror/state' + - '@codemirror/theme-one-dark' + - '@codemirror/view' + - '@types/react' + - '@types/react-dom' + - codemirror + + '@strapi/generate-new@4.25.0': + dependencies: + '@sentry/node': 6.19.7 + chalk: 4.1.2 + execa: 5.1.1 + fs-extra: 10.0.0 + inquirer: 8.2.5 + lodash: 4.17.21 + node-fetch: 2.7.0 + node-machine-id: 1.1.12 + ora: 5.4.1 + semver: 7.5.4 + tar: 6.1.13 + transitivePeerDependencies: + - encoding + - supports-color + + '@strapi/generators@4.25.0': + dependencies: + '@sindresorhus/slugify': 1.1.0 + '@strapi/typescript-utils': 4.25.0 + '@strapi/utils': 4.25.0 + chalk: 4.1.2 + copyfiles: 2.4.1 + fs-extra: 10.0.0 + node-plop: 0.26.3 + plop: 2.7.6 + pluralize: 8.0.0 + transitivePeerDependencies: + - supports-color + + '@strapi/helper-plugin@4.25.0(@strapi/design-system@1.19.0(@babel/runtime@7.24.7)(@codemirror/autocomplete@6.16.2(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.1)(@lezer/common@1.2.1))(@codemirror/language@6.10.2)(@codemirror/lint@6.8.0)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.28.1)(@strapi/icons@1.19.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react-dom@18.3.0)(codemirror@6.0.1(@lezer/common@1.2.1))(react-dom@18.3.1(react@18.3.1))(react-router-dom@5.3.4(react@18.3.1))(react@18.3.1)(styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1)))(@strapi/icons@1.19.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(debug@4.3.4)(react-dom@18.3.1(react@18.3.1))(react-router-dom@5.3.4(react@18.3.1))(react@18.3.1)(styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1))(typescript@5.2.2)': + dependencies: + '@strapi/design-system': 1.19.0(@babel/runtime@7.24.7)(@codemirror/autocomplete@6.16.2(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.1)(@lezer/common@1.2.1))(@codemirror/language@6.10.2)(@codemirror/lint@6.8.0)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.28.1)(@strapi/icons@1.19.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react-dom@18.3.0)(codemirror@6.0.1(@lezer/common@1.2.1))(react-dom@18.3.1(react@18.3.1))(react-router-dom@5.3.4(react@18.3.1))(react@18.3.1)(styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1)) + '@strapi/icons': 1.19.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + axios: 1.6.0(debug@4.3.4) + date-fns: 2.30.0 + formik: 2.4.0(react@18.3.1) + immer: 9.0.19 + lodash: 4.17.21 + qs: 6.11.1 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + react-helmet: 6.1.0(react@18.3.1) + react-intl: 6.4.1(react@18.3.1)(typescript@5.2.2) + react-query: 3.39.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react-router-dom: 5.3.4(react@18.3.1) + react-select: 5.7.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + styled-components: 5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1) + transitivePeerDependencies: + - '@types/react' + - debug + - react-native + - supports-color + - typescript + + '@strapi/helper-plugin@4.25.0(@strapi/design-system@1.19.0(@babel/runtime@7.24.7)(@codemirror/autocomplete@6.16.2(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.1)(@lezer/common@1.2.1))(@codemirror/language@6.10.2)(@codemirror/lint@6.8.0)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.28.1)(@strapi/icons@1.19.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react-dom@18.3.0)(codemirror@6.0.1(@lezer/common@1.2.1))(react-dom@18.3.1(react@18.3.1))(react-router-dom@5.3.4(react@18.3.1))(react@18.3.1)(styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1)))(@strapi/icons@1.19.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react-router-dom@5.3.4(react@18.3.1))(react@18.3.1)(styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1))(typescript@4.9.5)': + dependencies: + '@strapi/design-system': 1.19.0(@babel/runtime@7.24.7)(@codemirror/autocomplete@6.16.2(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.1)(@lezer/common@1.2.1))(@codemirror/language@6.10.2)(@codemirror/lint@6.8.0)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.28.1)(@strapi/icons@1.19.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react-dom@18.3.0)(codemirror@6.0.1(@lezer/common@1.2.1))(react-dom@18.3.1(react@18.3.1))(react-router-dom@5.3.4(react@18.3.1))(react@18.3.1)(styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1)) + '@strapi/icons': 1.19.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + axios: 1.6.0(debug@4.3.4) + date-fns: 2.30.0 + formik: 2.4.0(react@18.3.1) + immer: 9.0.19 + lodash: 4.17.21 + qs: 6.11.1 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + react-helmet: 6.1.0(react@18.3.1) + react-intl: 6.4.1(react@18.3.1)(typescript@4.9.5) + react-query: 3.39.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react-router-dom: 5.3.4(react@18.3.1) + react-select: 5.7.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + styled-components: 5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1) + transitivePeerDependencies: + - '@types/react' + - debug + - react-native + - supports-color + - typescript + + '@strapi/icons@1.19.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + + '@strapi/logger@4.25.0': + dependencies: + lodash: 4.17.21 + winston: 3.10.0 + + '@strapi/pack-up@4.23.0(@swc/helpers@0.5.11)(@types/node@20.14.5)(debug@4.3.4)(terser@5.31.1)': + dependencies: + '@vitejs/plugin-react-swc': 3.5.0(@swc/helpers@0.5.11)(vite@5.0.13(@types/node@20.14.5)(terser@5.31.1)) + boxen: 5.1.2 + browserslist-to-esbuild: 1.2.0 + chalk: 4.1.2 + chokidar: 3.5.3 + commander: 8.3.0 + esbuild: 0.19.11 + esbuild-register: 3.5.0(esbuild@0.19.11) + get-latest-version: 5.1.0(debug@4.3.4) + git-url-parse: 13.1.0 + ini: 4.1.1 + ora: 5.4.1 + outdent: 0.8.0 + pkg-up: 3.1.0 + prettier: 2.8.4 + prettier-plugin-packagejson: 2.4.5(prettier@2.8.4) + prompts: 2.4.2 + rxjs: 7.8.1 + typescript: 5.2.2 + vite: 5.0.13(@types/node@20.14.5)(terser@5.31.1) + yup: 0.32.9 + transitivePeerDependencies: + - '@swc/helpers' + - '@types/node' + - debug + - less + - lightningcss + - sass + - stylus + - sugarss + - supports-color + - terser + + '@strapi/permissions@4.25.0': + dependencies: + '@casl/ability': 6.5.0 + '@strapi/utils': 4.25.0 + lodash: 4.17.21 + qs: 6.11.1 + sift: 16.0.1 + + '@strapi/plugin-content-manager@4.25.0(@types/node@20.14.5)(better-sqlite3@8.0.1)(pg@8.12.0)': + dependencies: + '@sindresorhus/slugify': 1.1.0 + '@strapi/types': 4.25.0(@types/node@20.14.5)(better-sqlite3@8.0.1)(pg@8.12.0) + '@strapi/utils': 4.25.0 + koa: 2.13.4 + koa-bodyparser: 4.4.1 + lodash: 4.17.21 + qs: 6.11.1 + transitivePeerDependencies: + - '@types/node' + - better-sqlite3 + - encoding + - mysql + - mysql2 + - pg + - pg-native + - sqlite3 + - supports-color + - tedious + + ? '@strapi/plugin-content-type-builder@4.25.0(@babel/runtime@7.24.7)(@codemirror/autocomplete@6.16.2(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.1)(@lezer/common@1.2.1))(@codemirror/language@6.10.2)(@codemirror/lint@6.8.0)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.28.1)(@strapi/strapi@4.25.0(@babel/runtime@7.24.7)(@codemirror/autocomplete@6.16.2(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.1)(@lezer/common@1.2.1))(@codemirror/language@6.10.2)(@codemirror/lint@6.8.0)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.28.1)(@swc/helpers@0.5.11)(@types/hoist-non-react-statics@3.3.5)(@types/node@20.14.5)(@types/react-dom@18.3.0)(better-sqlite3@8.0.1)(codemirror@6.0.1(@lezer/common@1.2.1))(pg@8.12.0)(react-dom@18.3.1(react@18.3.1))(react-router-dom@5.3.4(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1))(terser@5.31.1)(type-fest@2.19.0))(@types/react-dom@18.3.0)(codemirror@6.0.1(@lezer/common@1.2.1))(debug@4.3.4)(react-dom@18.3.1(react@18.3.1))(react-router-dom@5.3.4(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1))(typescript@5.2.2)' + : dependencies: + '@reduxjs/toolkit': 1.9.7(react-redux@8.1.1(@types/react-dom@18.3.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(redux@4.2.1))(react@18.3.1) + '@sindresorhus/slugify': 1.1.0 + '@strapi/design-system': 1.19.0(@babel/runtime@7.24.7)(@codemirror/autocomplete@6.16.2(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.1)(@lezer/common@1.2.1))(@codemirror/language@6.10.2)(@codemirror/lint@6.8.0)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.28.1)(@strapi/icons@1.19.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react-dom@18.3.0)(codemirror@6.0.1(@lezer/common@1.2.1))(react-dom@18.3.1(react@18.3.1))(react-router-dom@5.3.4(react@18.3.1))(react@18.3.1)(styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1)) + '@strapi/generators': 4.25.0 + '@strapi/helper-plugin': 4.25.0(@strapi/design-system@1.19.0(@babel/runtime@7.24.7)(@codemirror/autocomplete@6.16.2(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.1)(@lezer/common@1.2.1))(@codemirror/language@6.10.2)(@codemirror/lint@6.8.0)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.28.1)(@strapi/icons@1.19.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react-dom@18.3.0)(codemirror@6.0.1(@lezer/common@1.2.1))(react-dom@18.3.1(react@18.3.1))(react-router-dom@5.3.4(react@18.3.1))(react@18.3.1)(styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1)))(@strapi/icons@1.19.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(debug@4.3.4)(react-dom@18.3.1(react@18.3.1))(react-router-dom@5.3.4(react@18.3.1))(react@18.3.1)(styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1))(typescript@5.2.2) + '@strapi/icons': 1.19.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@strapi/strapi': 4.25.0(@babel/runtime@7.24.7)(@codemirror/autocomplete@6.16.2(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.1)(@lezer/common@1.2.1))(@codemirror/language@6.10.2)(@codemirror/lint@6.8.0)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.28.1)(@swc/helpers@0.5.11)(@types/hoist-non-react-statics@3.3.5)(@types/node@20.14.5)(@types/react-dom@18.3.0)(better-sqlite3@8.0.1)(codemirror@6.0.1(@lezer/common@1.2.1))(pg@8.12.0)(react-dom@18.3.1(react@18.3.1))(react-router-dom@5.3.4(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1))(terser@5.31.1)(type-fest@2.19.0) + '@strapi/utils': 4.25.0 + fs-extra: 10.0.0 + immer: 9.0.19 + koa-bodyparser: 4.4.1 + lodash: 4.17.21 + pluralize: 8.0.0 + prop-types: 15.8.1 + qs: 6.11.1 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + react-helmet: 6.1.0(react@18.3.1) + react-intl: 6.4.1(react@18.3.1)(typescript@5.2.2) + react-redux: 8.1.1(@types/react-dom@18.3.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(redux@4.2.1) + react-router-dom: 5.3.4(react@18.3.1) + styled-components: 5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1) + yup: 0.32.9 + transitivePeerDependencies: + - '@babel/runtime' + - '@codemirror/autocomplete' + - '@codemirror/language' + - '@codemirror/lint' + - '@codemirror/search' + - '@codemirror/state' + - '@codemirror/theme-one-dark' + - '@codemirror/view' + - '@types/react' + - '@types/react-dom' + - codemirror + - debug + - react-native + - redux + - supports-color + - typescript + + '@strapi/plugin-email@4.25.0(@babel/runtime@7.24.7)(@codemirror/autocomplete@6.16.2(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.1)(@lezer/common@1.2.1))(@codemirror/language@6.10.2)(@codemirror/lint@6.8.0)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.28.1)(@types/react-dom@18.3.0)(codemirror@6.0.1(@lezer/common@1.2.1))(debug@4.3.4)(koa@2.13.4)(react-dom@18.3.1(react@18.3.1))(react-router-dom@5.3.4(react@18.3.1))(react@18.3.1)(styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1))(typescript@5.2.2)': + dependencies: + '@strapi/design-system': 1.19.0(@babel/runtime@7.24.7)(@codemirror/autocomplete@6.16.2(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.1)(@lezer/common@1.2.1))(@codemirror/language@6.10.2)(@codemirror/lint@6.8.0)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.28.1)(@strapi/icons@1.19.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react-dom@18.3.0)(codemirror@6.0.1(@lezer/common@1.2.1))(react-dom@18.3.1(react@18.3.1))(react-router-dom@5.3.4(react@18.3.1))(react@18.3.1)(styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1)) + '@strapi/helper-plugin': 4.25.0(@strapi/design-system@1.19.0(@babel/runtime@7.24.7)(@codemirror/autocomplete@6.16.2(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.1)(@lezer/common@1.2.1))(@codemirror/language@6.10.2)(@codemirror/lint@6.8.0)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.28.1)(@strapi/icons@1.19.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react-dom@18.3.0)(codemirror@6.0.1(@lezer/common@1.2.1))(react-dom@18.3.1(react@18.3.1))(react-router-dom@5.3.4(react@18.3.1))(react@18.3.1)(styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1)))(@strapi/icons@1.19.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(debug@4.3.4)(react-dom@18.3.1(react@18.3.1))(react-router-dom@5.3.4(react@18.3.1))(react@18.3.1)(styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1))(typescript@5.2.2) + '@strapi/icons': 1.19.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@strapi/provider-email-sendmail': 4.25.0 + '@strapi/utils': 4.25.0 + koa: 2.13.4 + lodash: 4.17.21 + prop-types: 15.8.1 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + react-intl: 6.4.1(react@18.3.1)(typescript@5.2.2) + react-query: 3.39.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react-router-dom: 5.3.4(react@18.3.1) + styled-components: 5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1) + yup: 0.32.9 + transitivePeerDependencies: + - '@babel/runtime' + - '@codemirror/autocomplete' + - '@codemirror/language' + - '@codemirror/lint' + - '@codemirror/search' + - '@codemirror/state' + - '@codemirror/theme-one-dark' + - '@codemirror/view' + - '@types/react' + - '@types/react-dom' + - codemirror + - debug + - react-native + - supports-color + - typescript + + ? '@strapi/plugin-i18n@4.25.0(@babel/runtime@7.24.7)(@codemirror/autocomplete@6.16.2(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.1)(@lezer/common@1.2.1))(@codemirror/language@6.10.2)(@codemirror/lint@6.8.0)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.28.1)(@strapi/strapi@4.25.0(@babel/runtime@7.24.7)(@codemirror/autocomplete@6.16.2(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.1)(@lezer/common@1.2.1))(@codemirror/language@6.10.2)(@codemirror/lint@6.8.0)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.28.1)(@swc/helpers@0.5.11)(@types/hoist-non-react-statics@3.3.5)(@types/node@20.14.5)(@types/react-dom@18.3.0)(better-sqlite3@8.0.1)(codemirror@6.0.1(@lezer/common@1.2.1))(pg@8.12.0)(react-dom@18.3.1(react@18.3.1))(react-router-dom@5.3.4(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1))(terser@5.31.1)(type-fest@2.19.0))(@types/react-dom@18.3.0)(codemirror@6.0.1(@lezer/common@1.2.1))(react-dom@18.3.1(react@18.3.1))(react-router-dom@5.3.4(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1))(typescript@4.9.5)' + : dependencies: + '@reduxjs/toolkit': 1.9.7(react-redux@8.1.1(@types/react-dom@18.3.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(redux@4.2.1))(react@18.3.1) + '@strapi/design-system': 1.19.0(@babel/runtime@7.24.7)(@codemirror/autocomplete@6.16.2(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.1)(@lezer/common@1.2.1))(@codemirror/language@6.10.2)(@codemirror/lint@6.8.0)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.28.1)(@strapi/icons@1.19.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react-dom@18.3.0)(codemirror@6.0.1(@lezer/common@1.2.1))(react-dom@18.3.1(react@18.3.1))(react-router-dom@5.3.4(react@18.3.1))(react@18.3.1)(styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1)) + '@strapi/helper-plugin': 4.25.0(@strapi/design-system@1.19.0(@babel/runtime@7.24.7)(@codemirror/autocomplete@6.16.2(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.1)(@lezer/common@1.2.1))(@codemirror/language@6.10.2)(@codemirror/lint@6.8.0)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.28.1)(@strapi/icons@1.19.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react-dom@18.3.0)(codemirror@6.0.1(@lezer/common@1.2.1))(react-dom@18.3.1(react@18.3.1))(react-router-dom@5.3.4(react@18.3.1))(react@18.3.1)(styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1)))(@strapi/icons@1.19.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react-router-dom@5.3.4(react@18.3.1))(react@18.3.1)(styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1))(typescript@4.9.5) + '@strapi/icons': 1.19.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@strapi/strapi': 4.25.0(@babel/runtime@7.24.7)(@codemirror/autocomplete@6.16.2(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.1)(@lezer/common@1.2.1))(@codemirror/language@6.10.2)(@codemirror/lint@6.8.0)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.28.1)(@swc/helpers@0.5.11)(@types/hoist-non-react-statics@3.3.5)(@types/node@20.14.5)(@types/react-dom@18.3.0)(better-sqlite3@8.0.1)(codemirror@6.0.1(@lezer/common@1.2.1))(pg@8.12.0)(react-dom@18.3.1(react@18.3.1))(react-router-dom@5.3.4(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1))(terser@5.31.1)(type-fest@2.19.0) + '@strapi/utils': 4.25.0 + axios: 1.6.0(debug@4.3.4) + formik: 2.4.0(react@18.3.1) + immer: 9.0.19 + lodash: 4.17.21 + prop-types: 15.8.1 + qs: 6.11.1 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + react-intl: 6.4.1(react@18.3.1)(typescript@4.9.5) + react-query: 3.39.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react-redux: 8.1.1(@types/react-dom@18.3.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(redux@4.2.1) + react-router-dom: 5.3.4(react@18.3.1) + styled-components: 5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1) + yup: 0.32.9 + transitivePeerDependencies: + - '@babel/runtime' + - '@codemirror/autocomplete' + - '@codemirror/language' + - '@codemirror/lint' + - '@codemirror/search' + - '@codemirror/state' + - '@codemirror/theme-one-dark' + - '@codemirror/view' + - '@types/react' + - '@types/react-dom' + - codemirror + - debug + - react-native + - redux + - supports-color + - typescript + + ? '@strapi/plugin-upload@4.25.0(@babel/runtime@7.24.7)(@codemirror/autocomplete@6.16.2(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.1)(@lezer/common@1.2.1))(@codemirror/language@6.10.2)(@codemirror/lint@6.8.0)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.28.1)(@strapi/strapi@4.25.0(@babel/runtime@7.24.7)(@codemirror/autocomplete@6.16.2(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.1)(@lezer/common@1.2.1))(@codemirror/language@6.10.2)(@codemirror/lint@6.8.0)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.28.1)(@swc/helpers@0.5.11)(@types/hoist-non-react-statics@3.3.5)(@types/node@20.14.5)(@types/react-dom@18.3.0)(better-sqlite3@8.0.1)(codemirror@6.0.1(@lezer/common@1.2.1))(pg@8.12.0)(react-dom@18.3.1(react@18.3.1))(react-router-dom@5.3.4(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1))(terser@5.31.1)(type-fest@2.19.0))(@types/hoist-non-react-statics@3.3.5)(@types/node@20.14.5)(@types/react-dom@18.3.0)(codemirror@6.0.1(@lezer/common@1.2.1))(debug@4.3.4)(react-dom@18.3.1(react@18.3.1))(react-router-dom@5.3.4(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1))(typescript@5.2.2)' + : dependencies: + '@strapi/design-system': 1.19.0(@babel/runtime@7.24.7)(@codemirror/autocomplete@6.16.2(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.1)(@lezer/common@1.2.1))(@codemirror/language@6.10.2)(@codemirror/lint@6.8.0)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.28.1)(@strapi/icons@1.19.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react-dom@18.3.0)(codemirror@6.0.1(@lezer/common@1.2.1))(react-dom@18.3.1(react@18.3.1))(react-router-dom@5.3.4(react@18.3.1))(react@18.3.1)(styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1)) + '@strapi/helper-plugin': 4.25.0(@strapi/design-system@1.19.0(@babel/runtime@7.24.7)(@codemirror/autocomplete@6.16.2(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.1)(@lezer/common@1.2.1))(@codemirror/language@6.10.2)(@codemirror/lint@6.8.0)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.28.1)(@strapi/icons@1.19.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react-dom@18.3.0)(codemirror@6.0.1(@lezer/common@1.2.1))(react-dom@18.3.1(react@18.3.1))(react-router-dom@5.3.4(react@18.3.1))(react@18.3.1)(styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1)))(@strapi/icons@1.19.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(debug@4.3.4)(react-dom@18.3.1(react@18.3.1))(react-router-dom@5.3.4(react@18.3.1))(react@18.3.1)(styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1))(typescript@5.2.2) + '@strapi/icons': 1.19.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@strapi/provider-upload-local': 4.25.0 + '@strapi/strapi': 4.25.0(@babel/runtime@7.24.7)(@codemirror/autocomplete@6.16.2(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.1)(@lezer/common@1.2.1))(@codemirror/language@6.10.2)(@codemirror/lint@6.8.0)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.28.1)(@swc/helpers@0.5.11)(@types/hoist-non-react-statics@3.3.5)(@types/node@20.14.5)(@types/react-dom@18.3.0)(better-sqlite3@8.0.1)(codemirror@6.0.1(@lezer/common@1.2.1))(pg@8.12.0)(react-dom@18.3.1(react@18.3.1))(react-router-dom@5.3.4(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1))(terser@5.31.1)(type-fest@2.19.0) + '@strapi/utils': 4.25.0 + axios: 1.6.0(debug@4.3.4) + byte-size: 7.0.1 + cropperjs: 1.6.0 + date-fns: 2.30.0 + formik: 2.4.0(react@18.3.1) + fs-extra: 10.0.0 + immer: 9.0.19 + koa-range: 0.3.0 + koa-static: 5.0.0 + lodash: 4.17.21 + mime-types: 2.1.35 + prop-types: 15.8.1 + qs: 6.11.1 + react: 18.3.1 + react-dnd: 16.0.1(@types/hoist-non-react-statics@3.3.5)(@types/node@20.14.5)(react@18.3.1) + react-dom: 18.3.1(react@18.3.1) + react-helmet: 6.1.0(react@18.3.1) + react-intl: 6.4.1(react@18.3.1)(typescript@5.2.2) + react-query: 3.39.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react-redux: 8.1.1(@types/react-dom@18.3.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(redux@4.2.1) + react-router-dom: 5.3.4(react@18.3.1) + react-select: 5.7.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + sharp: 0.32.6 + styled-components: 5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1) + yup: 0.32.9 + transitivePeerDependencies: + - '@babel/runtime' + - '@codemirror/autocomplete' + - '@codemirror/language' + - '@codemirror/lint' + - '@codemirror/search' + - '@codemirror/state' + - '@codemirror/theme-one-dark' + - '@codemirror/view' + - '@types/hoist-non-react-statics' + - '@types/node' + - '@types/react' + - '@types/react-dom' + - codemirror + - debug + - react-native + - redux + - supports-color + - typescript + + ? '@strapi/plugin-users-permissions@4.25.0(@babel/runtime@7.24.7)(@codemirror/autocomplete@6.16.2(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.1)(@lezer/common@1.2.1))(@codemirror/language@6.10.2)(@codemirror/lint@6.8.0)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.28.1)(@strapi/strapi@4.25.0(@babel/runtime@7.24.7)(@codemirror/autocomplete@6.16.2(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.1)(@lezer/common@1.2.1))(@codemirror/language@6.10.2)(@codemirror/lint@6.8.0)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.28.1)(@swc/helpers@0.5.11)(@types/hoist-non-react-statics@3.3.5)(@types/node@20.14.5)(@types/react-dom@18.3.0)(better-sqlite3@8.0.1)(codemirror@6.0.1(@lezer/common@1.2.1))(pg@8.12.0)(react-dom@18.3.1(react@18.3.1))(react-router-dom@5.3.4(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1))(terser@5.31.1)(type-fest@2.19.0))(@types/react-dom@18.3.0)(codemirror@6.0.1(@lezer/common@1.2.1))(react-dom@18.3.1(react@18.3.1))(react-router-dom@5.3.4(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1))(typescript@4.9.5)' + : dependencies: + '@strapi/design-system': 1.19.0(@babel/runtime@7.24.7)(@codemirror/autocomplete@6.16.2(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.1)(@lezer/common@1.2.1))(@codemirror/language@6.10.2)(@codemirror/lint@6.8.0)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.28.1)(@strapi/icons@1.19.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react-dom@18.3.0)(codemirror@6.0.1(@lezer/common@1.2.1))(react-dom@18.3.1(react@18.3.1))(react-router-dom@5.3.4(react@18.3.1))(react@18.3.1)(styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1)) + '@strapi/helper-plugin': 4.25.0(@strapi/design-system@1.19.0(@babel/runtime@7.24.7)(@codemirror/autocomplete@6.16.2(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.1)(@lezer/common@1.2.1))(@codemirror/language@6.10.2)(@codemirror/lint@6.8.0)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.28.1)(@strapi/icons@1.19.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react-dom@18.3.0)(codemirror@6.0.1(@lezer/common@1.2.1))(react-dom@18.3.1(react@18.3.1))(react-router-dom@5.3.4(react@18.3.1))(react@18.3.1)(styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1)))(@strapi/icons@1.19.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react-router-dom@5.3.4(react@18.3.1))(react@18.3.1)(styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1))(typescript@4.9.5) + '@strapi/icons': 1.19.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@strapi/strapi': 4.25.0(@babel/runtime@7.24.7)(@codemirror/autocomplete@6.16.2(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.1)(@lezer/common@1.2.1))(@codemirror/language@6.10.2)(@codemirror/lint@6.8.0)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.28.1)(@swc/helpers@0.5.11)(@types/hoist-non-react-statics@3.3.5)(@types/node@20.14.5)(@types/react-dom@18.3.0)(better-sqlite3@8.0.1)(codemirror@6.0.1(@lezer/common@1.2.1))(pg@8.12.0)(react-dom@18.3.1(react@18.3.1))(react-router-dom@5.3.4(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1))(terser@5.31.1)(type-fest@2.19.0) + '@strapi/utils': 4.25.0 + bcryptjs: 2.4.3 + formik: 2.4.0(react@18.3.1) + grant-koa: 5.4.8(koa@2.13.4) + immer: 9.0.19 + jsonwebtoken: 9.0.0 + jwk-to-pem: 2.0.5 + koa: 2.13.4 + koa2-ratelimit: 1.1.3 + lodash: 4.17.21 + prop-types: 15.8.1 + purest: 4.0.2 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + react-intl: 6.4.1(react@18.3.1)(typescript@4.9.5) + react-query: 3.39.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react-redux: 8.1.1(@types/react-dom@18.3.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(redux@4.2.1) + react-router-dom: 5.3.4(react@18.3.1) + styled-components: 5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1) + url-join: 4.0.1 + yup: 0.32.9 + transitivePeerDependencies: + - '@babel/runtime' + - '@codemirror/autocomplete' + - '@codemirror/language' + - '@codemirror/lint' + - '@codemirror/search' + - '@codemirror/state' + - '@codemirror/theme-one-dark' + - '@codemirror/view' + - '@types/react' + - '@types/react-dom' + - codemirror + - debug + - mongoose + - react-native + - redis + - redux + - sequelize + - supports-color + - typescript + + '@strapi/provider-audit-logs-local@4.25.0': {} + + '@strapi/provider-email-sendgrid@4.25.0': + dependencies: + '@sendgrid/mail': 7.7.0 + '@strapi/utils': 4.25.0 + transitivePeerDependencies: + - debug + + '@strapi/provider-email-sendmail@4.25.0': + dependencies: + '@strapi/utils': 4.25.0 + sendmail: 1.6.1 + + '@strapi/provider-upload-cloudinary@4.25.0': + dependencies: + '@strapi/utils': 4.25.0 + cloudinary: 1.41.3 + into-stream: 5.1.1 + + '@strapi/provider-upload-local@4.25.0': + dependencies: + '@strapi/utils': 4.25.0 + fs-extra: 10.0.0 + + '@strapi/strapi@4.25.0(@babel/runtime@7.24.7)(@codemirror/autocomplete@6.16.2(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.1)(@lezer/common@1.2.1))(@codemirror/language@6.10.2)(@codemirror/lint@6.8.0)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.28.1)(@swc/helpers@0.5.11)(@types/hoist-non-react-statics@3.3.5)(@types/node@20.14.5)(@types/react-dom@18.3.0)(better-sqlite3@8.0.1)(codemirror@6.0.1(@lezer/common@1.2.1))(pg@8.12.0)(react-dom@18.3.1(react@18.3.1))(react-router-dom@5.3.4(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1))(terser@5.31.1)(type-fest@2.19.0)': + dependencies: + '@koa/cors': 5.0.0 + '@koa/router': 10.1.1 + '@strapi/admin': 4.25.0(@babel/runtime@7.24.7)(@codemirror/autocomplete@6.16.2(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.1)(@lezer/common@1.2.1))(@codemirror/language@6.10.2)(@codemirror/lint@6.8.0)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.28.1)(@strapi/data-transfer@4.25.0(@strapi/strapi@4.25.0(@babel/runtime@7.24.7)(@codemirror/autocomplete@6.16.2(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.1)(@lezer/common@1.2.1))(@codemirror/language@6.10.2)(@codemirror/lint@6.8.0)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.28.1)(@swc/helpers@0.5.11)(@types/hoist-non-react-statics@3.3.5)(@types/node@20.14.5)(@types/react-dom@18.3.0)(better-sqlite3@8.0.1)(codemirror@6.0.1(@lezer/common@1.2.1))(pg@8.12.0)(react-dom@18.3.1(react@18.3.1))(react-router-dom@5.3.4(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1))(terser@5.31.1)(type-fest@2.19.0))(@types/node@20.14.5)(better-sqlite3@8.0.1)(pg@8.12.0))(@strapi/strapi@4.25.0(@babel/runtime@7.24.7)(@codemirror/autocomplete@6.16.2(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.1)(@lezer/common@1.2.1))(@codemirror/language@6.10.2)(@codemirror/lint@6.8.0)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.28.1)(@swc/helpers@0.5.11)(@types/hoist-non-react-statics@3.3.5)(@types/node@20.14.5)(@types/react-dom@18.3.0)(better-sqlite3@8.0.1)(codemirror@6.0.1(@lezer/common@1.2.1))(pg@8.12.0)(react-dom@18.3.1(react@18.3.1))(react-router-dom@5.3.4(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1))(terser@5.31.1)(type-fest@2.19.0))(@swc/helpers@0.5.11)(@types/hoist-non-react-statics@3.3.5)(@types/node@20.14.5)(@types/react-dom@18.3.0)(better-sqlite3@8.0.1)(codemirror@6.0.1(@lezer/common@1.2.1))(debug@4.3.4)(pg@8.12.0)(react-dom@18.3.1(react@18.3.1))(react-router-dom@5.3.4(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1))(terser@5.31.1)(type-fest@2.19.0) + '@strapi/cloud-cli': 4.25.0(debug@4.3.4) + '@strapi/content-releases': 4.25.0(@babel/runtime@7.24.7)(@codemirror/autocomplete@6.16.2(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.1)(@lezer/common@1.2.1))(@codemirror/language@6.10.2)(@codemirror/lint@6.8.0)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.28.1)(@strapi/admin@4.25.0(@babel/runtime@7.24.7)(@codemirror/autocomplete@6.16.2(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.1)(@lezer/common@1.2.1))(@codemirror/language@6.10.2)(@codemirror/lint@6.8.0)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.28.1)(@strapi/data-transfer@4.25.0(@strapi/strapi@4.25.0(@babel/runtime@7.24.7)(@codemirror/autocomplete@6.16.2(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.1)(@lezer/common@1.2.1))(@codemirror/language@6.10.2)(@codemirror/lint@6.8.0)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.28.1)(@swc/helpers@0.5.11)(@types/hoist-non-react-statics@3.3.5)(@types/node@20.14.5)(@types/react-dom@18.3.0)(better-sqlite3@8.0.1)(codemirror@6.0.1(@lezer/common@1.2.1))(pg@8.12.0)(react-dom@18.3.1(react@18.3.1))(react-router-dom@5.3.4(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1))(terser@5.31.1)(type-fest@2.19.0))(@types/node@20.14.5)(better-sqlite3@8.0.1)(pg@8.12.0))(@strapi/strapi@4.25.0(@babel/runtime@7.24.7)(@codemirror/autocomplete@6.16.2(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.1)(@lezer/common@1.2.1))(@codemirror/language@6.10.2)(@codemirror/lint@6.8.0)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.28.1)(@swc/helpers@0.5.11)(@types/hoist-non-react-statics@3.3.5)(@types/node@20.14.5)(@types/react-dom@18.3.0)(better-sqlite3@8.0.1)(codemirror@6.0.1(@lezer/common@1.2.1))(pg@8.12.0)(react-dom@18.3.1(react@18.3.1))(react-router-dom@5.3.4(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1))(terser@5.31.1)(type-fest@2.19.0))(@swc/helpers@0.5.11)(@types/hoist-non-react-statics@3.3.5)(@types/node@20.14.5)(@types/react-dom@18.3.0)(better-sqlite3@8.0.1)(codemirror@6.0.1(@lezer/common@1.2.1))(debug@4.3.4)(pg@8.12.0)(react-dom@18.3.1(react@18.3.1))(react-router-dom@5.3.4(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1))(terser@5.31.1)(type-fest@2.19.0))(@strapi/strapi@4.25.0(@babel/runtime@7.24.7)(@codemirror/autocomplete@6.16.2(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.1)(@lezer/common@1.2.1))(@codemirror/language@6.10.2)(@codemirror/lint@6.8.0)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.28.1)(@swc/helpers@0.5.11)(@types/hoist-non-react-statics@3.3.5)(@types/node@20.14.5)(@types/react-dom@18.3.0)(better-sqlite3@8.0.1)(codemirror@6.0.1(@lezer/common@1.2.1))(pg@8.12.0)(react-dom@18.3.1(react@18.3.1))(react-router-dom@5.3.4(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1))(terser@5.31.1)(type-fest@2.19.0))(@types/node@20.14.5)(@types/react-dom@18.3.0)(better-sqlite3@8.0.1)(codemirror@6.0.1(@lezer/common@1.2.1))(debug@4.3.4)(pg@8.12.0)(react-dom@18.3.1(react@18.3.1))(react-router-dom@5.3.4(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1))(typescript@5.2.2) + '@strapi/data-transfer': 4.25.0(@strapi/strapi@4.25.0(@babel/runtime@7.24.7)(@codemirror/autocomplete@6.16.2(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.1)(@lezer/common@1.2.1))(@codemirror/language@6.10.2)(@codemirror/lint@6.8.0)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.28.1)(@swc/helpers@0.5.11)(@types/hoist-non-react-statics@3.3.5)(@types/node@20.14.5)(@types/react-dom@18.3.0)(better-sqlite3@8.0.1)(codemirror@6.0.1(@lezer/common@1.2.1))(pg@8.12.0)(react-dom@18.3.1(react@18.3.1))(react-router-dom@5.3.4(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1))(terser@5.31.1)(type-fest@2.19.0))(@types/node@20.14.5)(better-sqlite3@8.0.1)(pg@8.12.0) + '@strapi/database': 4.25.0(@types/node@20.14.5)(better-sqlite3@8.0.1)(pg@8.12.0) + '@strapi/generate-new': 4.25.0 + '@strapi/generators': 4.25.0 + '@strapi/logger': 4.25.0 + '@strapi/pack-up': 4.23.0(@swc/helpers@0.5.11)(@types/node@20.14.5)(debug@4.3.4)(terser@5.31.1) + '@strapi/permissions': 4.25.0 + '@strapi/plugin-content-manager': 4.25.0(@types/node@20.14.5)(better-sqlite3@8.0.1)(pg@8.12.0) + '@strapi/plugin-content-type-builder': 4.25.0(@babel/runtime@7.24.7)(@codemirror/autocomplete@6.16.2(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.1)(@lezer/common@1.2.1))(@codemirror/language@6.10.2)(@codemirror/lint@6.8.0)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.28.1)(@strapi/strapi@4.25.0(@babel/runtime@7.24.7)(@codemirror/autocomplete@6.16.2(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.1)(@lezer/common@1.2.1))(@codemirror/language@6.10.2)(@codemirror/lint@6.8.0)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.28.1)(@swc/helpers@0.5.11)(@types/hoist-non-react-statics@3.3.5)(@types/node@20.14.5)(@types/react-dom@18.3.0)(better-sqlite3@8.0.1)(codemirror@6.0.1(@lezer/common@1.2.1))(pg@8.12.0)(react-dom@18.3.1(react@18.3.1))(react-router-dom@5.3.4(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1))(terser@5.31.1)(type-fest@2.19.0))(@types/react-dom@18.3.0)(codemirror@6.0.1(@lezer/common@1.2.1))(debug@4.3.4)(react-dom@18.3.1(react@18.3.1))(react-router-dom@5.3.4(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1))(typescript@5.2.2) + '@strapi/plugin-email': 4.25.0(@babel/runtime@7.24.7)(@codemirror/autocomplete@6.16.2(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.1)(@lezer/common@1.2.1))(@codemirror/language@6.10.2)(@codemirror/lint@6.8.0)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.28.1)(@types/react-dom@18.3.0)(codemirror@6.0.1(@lezer/common@1.2.1))(debug@4.3.4)(koa@2.13.4)(react-dom@18.3.1(react@18.3.1))(react-router-dom@5.3.4(react@18.3.1))(react@18.3.1)(styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1))(typescript@5.2.2) + '@strapi/plugin-upload': 4.25.0(@babel/runtime@7.24.7)(@codemirror/autocomplete@6.16.2(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.1)(@lezer/common@1.2.1))(@codemirror/language@6.10.2)(@codemirror/lint@6.8.0)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.28.1)(@strapi/strapi@4.25.0(@babel/runtime@7.24.7)(@codemirror/autocomplete@6.16.2(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.1)(@lezer/common@1.2.1))(@codemirror/language@6.10.2)(@codemirror/lint@6.8.0)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.28.1)(@swc/helpers@0.5.11)(@types/hoist-non-react-statics@3.3.5)(@types/node@20.14.5)(@types/react-dom@18.3.0)(better-sqlite3@8.0.1)(codemirror@6.0.1(@lezer/common@1.2.1))(pg@8.12.0)(react-dom@18.3.1(react@18.3.1))(react-router-dom@5.3.4(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1))(terser@5.31.1)(type-fest@2.19.0))(@types/hoist-non-react-statics@3.3.5)(@types/node@20.14.5)(@types/react-dom@18.3.0)(codemirror@6.0.1(@lezer/common@1.2.1))(debug@4.3.4)(react-dom@18.3.1(react@18.3.1))(react-router-dom@5.3.4(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1))(typescript@5.2.2) + '@strapi/types': 4.25.0(@types/node@20.14.5)(better-sqlite3@8.0.1)(pg@8.12.0) + '@strapi/typescript-utils': 4.25.0 + '@strapi/utils': 4.25.0 + bcryptjs: 2.4.3 + boxen: 5.1.2 + chalk: 4.1.2 + ci-info: 3.8.0 + cli-progress: 3.12.0 + cli-table3: 0.6.2 + commander: 8.3.0 + concurrently: 8.2.2 + configstore: 5.0.1 + copyfiles: 2.4.1 + debug: 4.3.4 + delegates: 1.0.0 + dotenv: 14.2.0 + execa: 5.1.1 + fs-extra: 10.0.0 + get-latest-version: 5.1.0(debug@4.3.4) + git-url-parse: 13.1.0 + glob: 7.2.3 + http-errors: 1.8.1 + https-proxy-agent: 5.0.1 + inquirer: 8.2.5 + is-docker: 2.2.1 + koa: 2.13.4 + koa-body: 4.2.0 + koa-compose: 4.1.0 + koa-compress: 5.1.0 + koa-favicon: 2.1.0 + koa-helmet: 7.0.2 + koa-ip: 2.1.3 + koa-session: 6.4.0 + koa-static: 5.0.0 + lodash: 4.17.21 + mime-types: 2.1.35 + node-fetch: 2.7.0 + node-machine-id: 1.1.12 + node-schedule: 2.1.0 + nodemon: 3.0.2 + open: 8.4.0 + ora: 5.4.1 + outdent: 0.8.0 + package-json: 7.0.0 + pkg-up: 3.1.0 + qs: 6.11.1 + semver: 7.5.4 + statuses: 2.0.1 + typescript: 5.2.2 + yalc: 1.0.0-pre.53 + yup: 0.32.9 + transitivePeerDependencies: + - '@babel/runtime' + - '@codemirror/autocomplete' + - '@codemirror/language' + - '@codemirror/lint' + - '@codemirror/search' + - '@codemirror/state' + - '@codemirror/theme-one-dark' + - '@codemirror/view' + - '@rspack/core' + - '@swc/core' + - '@swc/helpers' + - '@types/hoist-non-react-statics' + - '@types/node' + - '@types/react' + - '@types/react-dom' + - '@types/webpack' + - better-sqlite3 + - bufferutil + - codemirror + - encoding + - less + - lightningcss + - mongoose + - mysql + - mysql2 + - pg + - pg-native + - react + - react-dom + - react-native + - react-router-dom + - redis + - redux + - sass + - sequelize + - sockjs-client + - sqlite3 + - styled-components + - stylus + - sugarss + - supports-color + - tedious + - terser + - type-fest + - uglify-js + - utf-8-validate + - webpack-cli + - webpack-dev-server + - webpack-plugin-serve + + '@strapi/types@4.25.0(@types/node@20.14.5)(better-sqlite3@8.0.1)(pg@8.12.0)': + dependencies: + '@casl/ability': 6.5.0 + '@koa/cors': 5.0.0 + '@koa/router': 10.1.1 + '@strapi/database': 4.25.0(@types/node@20.14.5)(better-sqlite3@8.0.1)(pg@8.12.0) + '@strapi/logger': 4.25.0 + '@strapi/permissions': 4.25.0 + '@strapi/utils': 4.25.0 + commander: 8.3.0 + https-proxy-agent: 5.0.1 + koa: 2.13.4 + node-fetch: 2.7.0 + node-schedule: 2.1.0 + transitivePeerDependencies: + - '@types/node' + - better-sqlite3 + - encoding + - mysql + - mysql2 + - pg + - pg-native + - sqlite3 + - supports-color + - tedious + + '@strapi/typescript-utils@4.25.0': + dependencies: + chalk: 4.1.2 + cli-table3: 0.6.2 + fs-extra: 10.0.0 + lodash: 4.17.21 + prettier: 2.8.4 + typescript: 5.2.2 + + '@strapi/ui-primitives@1.19.0(@types/react-dom@18.3.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/number': 1.0.1 + '@radix-ui/primitive': 1.0.1 + '@radix-ui/react-collection': 1.0.3(@types/react-dom@18.3.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-compose-refs': 1.0.1(react@18.3.1) + '@radix-ui/react-context': 1.0.1(react@18.3.1) + '@radix-ui/react-direction': 1.0.1(react@18.3.1) + '@radix-ui/react-dismissable-layer': 1.0.5(@types/react-dom@18.3.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-focus-guards': 1.0.1(react@18.3.1) + '@radix-ui/react-focus-scope': 1.0.4(@types/react-dom@18.3.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-id': 1.0.1(react@18.3.1) + '@radix-ui/react-popper': 1.1.3(@types/react-dom@18.3.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-portal': 1.0.4(@types/react-dom@18.3.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-slot': 1.0.2(react@18.3.1) + '@radix-ui/react-use-callback-ref': 1.0.1(react@18.3.1) + '@radix-ui/react-use-controllable-state': 1.0.1(react@18.3.1) + '@radix-ui/react-use-layout-effect': 1.0.1(react@18.3.1) + '@radix-ui/react-use-previous': 1.0.1(react@18.3.1) + '@radix-ui/react-visually-hidden': 1.0.3(@types/react-dom@18.3.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + aria-hidden: 1.2.4 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + react-remove-scroll: 2.5.10(react@18.3.1) + transitivePeerDependencies: + - '@types/react' + - '@types/react-dom' + + '@strapi/utils@4.25.0': + dependencies: + '@sindresorhus/slugify': 1.1.0 + date-fns: 2.30.0 + http-errors: 1.8.1 + lodash: 4.17.21 + p-map: 4.0.0 + yup: 0.32.9 + + '@swc/core-darwin-arm64@1.6.1': + optional: true + + '@swc/core-darwin-x64@1.6.1': + optional: true + + '@swc/core-linux-arm-gnueabihf@1.6.1': + optional: true + + '@swc/core-linux-arm64-gnu@1.6.1': + optional: true + + '@swc/core-linux-arm64-musl@1.6.1': + optional: true + + '@swc/core-linux-x64-gnu@1.6.1': + optional: true + + '@swc/core-linux-x64-musl@1.6.1': + optional: true + + '@swc/core-win32-arm64-msvc@1.6.1': + optional: true + + '@swc/core-win32-ia32-msvc@1.6.1': + optional: true + + '@swc/core-win32-x64-msvc@1.6.1': + optional: true + + '@swc/core@1.6.1(@swc/helpers@0.5.11)': + dependencies: + '@swc/counter': 0.1.3 + '@swc/types': 0.1.8 + optionalDependencies: + '@swc/core-darwin-arm64': 1.6.1 + '@swc/core-darwin-x64': 1.6.1 + '@swc/core-linux-arm-gnueabihf': 1.6.1 + '@swc/core-linux-arm64-gnu': 1.6.1 + '@swc/core-linux-arm64-musl': 1.6.1 + '@swc/core-linux-x64-gnu': 1.6.1 + '@swc/core-linux-x64-musl': 1.6.1 + '@swc/core-win32-arm64-msvc': 1.6.1 + '@swc/core-win32-ia32-msvc': 1.6.1 + '@swc/core-win32-x64-msvc': 1.6.1 + '@swc/helpers': 0.5.11 + + '@swc/counter@0.1.3': {} + + '@swc/helpers@0.5.11': + dependencies: + tslib: 2.6.3 + + '@swc/types@0.1.8': + dependencies: + '@swc/counter': 0.1.3 + + '@szmarczak/http-timer@4.0.6': + dependencies: + defer-to-connect: 2.0.1 + + '@testing-library/dom@8.19.0': + dependencies: + '@babel/code-frame': 7.24.7 + '@babel/runtime': 7.24.7 + '@types/aria-query': 4.2.2 + aria-query: 5.3.0 + chalk: 4.1.2 + dom-accessibility-api: 0.5.16 + lz-string: 1.5.0 + pretty-format: 27.5.1 + + '@testing-library/react-hooks@8.0.1(react-dom@18.3.1(react@18.3.1))(react-test-renderer@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@babel/runtime': 7.24.7 + react: 18.3.1 + react-error-boundary: 3.1.4(react@18.3.1) + optionalDependencies: + react-dom: 18.3.1(react@18.3.1) + react-test-renderer: 18.3.1(react@18.3.1) + + '@testing-library/react@12.1.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@babel/runtime': 7.24.7 + '@testing-library/dom': 8.19.0 + '@types/react-dom': 18.3.0 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + + '@testing-library/user-event@14.4.3(@testing-library/dom@8.19.0)': + dependencies: + '@testing-library/dom': 8.19.0 + + '@types/argparse@1.0.38': {} + + '@types/aria-query@4.2.2': {} + + '@types/body-parser@1.19.5': + dependencies: + '@types/connect': 3.4.38 + '@types/node': 20.14.5 + + '@types/cacheable-request@6.0.3': + dependencies: + '@types/http-cache-semantics': 4.0.4 + '@types/keyv': 3.1.4 + '@types/node': 20.14.5 + '@types/responselike': 1.0.3 + + '@types/connect@3.4.38': + dependencies: + '@types/node': 20.14.5 + + '@types/cookie@0.4.1': {} + + '@types/debug@4.1.12': + dependencies: + '@types/ms': 0.7.34 + + '@types/eslint-scope@3.7.7': + dependencies: + '@types/eslint': 8.56.10 + '@types/estree': 1.0.5 + + '@types/eslint@8.56.10': + dependencies: + '@types/estree': 1.0.5 + '@types/json-schema': 7.0.15 + + '@types/estree@1.0.5': {} + + '@types/express-serve-static-core@4.19.5': + dependencies: + '@types/node': 20.14.5 + '@types/qs': 6.9.15 + '@types/range-parser': 1.2.7 + '@types/send': 0.17.4 + + '@types/express@4.17.21': + dependencies: + '@types/body-parser': 1.19.5 + '@types/express-serve-static-core': 4.19.5 + '@types/qs': 6.9.15 + '@types/serve-static': 1.15.7 + + '@types/fined@1.1.5': {} + + '@types/formidable@1.2.8': + dependencies: + '@types/node': 20.14.5 + + '@types/glob@7.2.0': + dependencies: + '@types/minimatch': 5.1.2 + '@types/node': 20.14.5 + + '@types/hoist-non-react-statics@3.3.5': + dependencies: + '@types/react': 18.3.3 + hoist-non-react-statics: 3.3.2 + + '@types/html-minifier-terser@6.1.0': {} + + '@types/http-cache-semantics@4.0.4': {} + + '@types/http-errors@2.0.4': {} + + '@types/inquirer@6.5.0': + dependencies: + '@types/through': 0.0.33 + rxjs: 6.6.7 + + '@types/interpret@1.1.3': + dependencies: + '@types/node': 20.14.5 + + '@types/is-hotkey@0.1.10': {} + + '@types/js-levenshtein@1.1.3': {} + + '@types/json-schema@7.0.15': {} + + '@types/jsonwebtoken@9.0.6': + dependencies: + '@types/node': 20.14.5 + + '@types/keyv@3.1.4': + dependencies: + '@types/node': 20.14.5 + + '@types/liftoff@2.5.1': + dependencies: + '@types/fined': 1.1.5 + '@types/interpret': 1.1.3 + '@types/node': 20.14.5 + + '@types/lodash@4.17.5': {} + + '@types/mime@1.3.5': {} + + '@types/minimatch@5.1.2': {} + + '@types/ms@0.7.34': {} + + '@types/node@20.14.5': + dependencies: + undici-types: 5.26.5 + + '@types/normalize-package-data@2.4.4': {} + + '@types/parse-json@4.0.2': {} + + '@types/prop-types@15.7.12': {} + + '@types/qs@6.9.15': {} + + '@types/range-parser@1.2.7': {} + + '@types/react-dom@18.3.0': + dependencies: + '@types/react': 18.3.3 + + '@types/react-transition-group@4.4.10': + dependencies: + '@types/react': 18.3.3 + + '@types/react@18.3.3': + dependencies: + '@types/prop-types': 15.7.12 + csstype: 3.1.3 + + '@types/responselike@1.0.3': + dependencies: + '@types/node': 20.14.5 + + '@types/send@0.17.4': + dependencies: + '@types/mime': 1.3.5 + '@types/node': 20.14.5 + + '@types/serve-static@1.15.7': + dependencies: + '@types/http-errors': 2.0.4 + '@types/node': 20.14.5 + '@types/send': 0.17.4 + + '@types/set-cookie-parser@2.4.9': + dependencies: + '@types/node': 20.14.5 + + '@types/through@0.0.33': + dependencies: + '@types/node': 20.14.5 + + '@types/triple-beam@1.3.5': {} + + '@types/use-sync-external-store@0.0.3': {} + + '@ucast/core@1.10.2': {} + + '@ucast/js@3.0.4': + dependencies: + '@ucast/core': 1.10.2 + + '@ucast/mongo2js@1.3.4': + dependencies: + '@ucast/core': 1.10.2 + '@ucast/js': 3.0.4 + '@ucast/mongo': 2.4.3 + + '@ucast/mongo@2.4.3': + dependencies: + '@ucast/core': 1.10.2 + + '@uiw/codemirror-extensions-basic-setup@4.22.2(@codemirror/autocomplete@6.16.2(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.1)(@lezer/common@1.2.1))(@codemirror/commands@6.6.0)(@codemirror/language@6.10.2)(@codemirror/lint@6.8.0)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/view@6.28.1)': + dependencies: + '@codemirror/autocomplete': 6.16.2(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.1)(@lezer/common@1.2.1) + '@codemirror/commands': 6.6.0 + '@codemirror/language': 6.10.2 + '@codemirror/lint': 6.8.0 + '@codemirror/search': 6.5.6 + '@codemirror/state': 6.4.1 + '@codemirror/view': 6.28.1 + + '@uiw/react-codemirror@4.22.2(@babel/runtime@7.24.7)(@codemirror/autocomplete@6.16.2(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.1)(@lezer/common@1.2.1))(@codemirror/language@6.10.2)(@codemirror/lint@6.8.0)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.28.1)(codemirror@6.0.1(@lezer/common@1.2.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@babel/runtime': 7.24.7 + '@codemirror/commands': 6.6.0 + '@codemirror/state': 6.4.1 + '@codemirror/theme-one-dark': 6.1.2 + '@codemirror/view': 6.28.1 + '@uiw/codemirror-extensions-basic-setup': 4.22.2(@codemirror/autocomplete@6.16.2(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.1)(@lezer/common@1.2.1))(@codemirror/commands@6.6.0)(@codemirror/language@6.10.2)(@codemirror/lint@6.8.0)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/view@6.28.1) + codemirror: 6.0.1(@lezer/common@1.2.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + transitivePeerDependencies: + - '@codemirror/autocomplete' + - '@codemirror/language' + - '@codemirror/lint' + - '@codemirror/search' + + '@vitejs/plugin-react-swc@3.5.0(@swc/helpers@0.5.11)(vite@5.0.13(@types/node@20.14.5)(terser@5.31.1))': + dependencies: + '@swc/core': 1.6.1(@swc/helpers@0.5.11) + vite: 5.0.13(@types/node@20.14.5)(terser@5.31.1) + transitivePeerDependencies: + - '@swc/helpers' + + '@webassemblyjs/ast@1.12.1': + dependencies: + '@webassemblyjs/helper-numbers': 1.11.6 + '@webassemblyjs/helper-wasm-bytecode': 1.11.6 + + '@webassemblyjs/floating-point-hex-parser@1.11.6': {} + + '@webassemblyjs/helper-api-error@1.11.6': {} + + '@webassemblyjs/helper-buffer@1.12.1': {} + + '@webassemblyjs/helper-numbers@1.11.6': + dependencies: + '@webassemblyjs/floating-point-hex-parser': 1.11.6 + '@webassemblyjs/helper-api-error': 1.11.6 + '@xtuc/long': 4.2.2 + + '@webassemblyjs/helper-wasm-bytecode@1.11.6': {} + + '@webassemblyjs/helper-wasm-section@1.12.1': + dependencies: + '@webassemblyjs/ast': 1.12.1 + '@webassemblyjs/helper-buffer': 1.12.1 + '@webassemblyjs/helper-wasm-bytecode': 1.11.6 + '@webassemblyjs/wasm-gen': 1.12.1 + + '@webassemblyjs/ieee754@1.11.6': + dependencies: + '@xtuc/ieee754': 1.2.0 + + '@webassemblyjs/leb128@1.11.6': + dependencies: + '@xtuc/long': 4.2.2 + + '@webassemblyjs/utf8@1.11.6': {} + + '@webassemblyjs/wasm-edit@1.12.1': + dependencies: + '@webassemblyjs/ast': 1.12.1 + '@webassemblyjs/helper-buffer': 1.12.1 + '@webassemblyjs/helper-wasm-bytecode': 1.11.6 + '@webassemblyjs/helper-wasm-section': 1.12.1 + '@webassemblyjs/wasm-gen': 1.12.1 + '@webassemblyjs/wasm-opt': 1.12.1 + '@webassemblyjs/wasm-parser': 1.12.1 + '@webassemblyjs/wast-printer': 1.12.1 + + '@webassemblyjs/wasm-gen@1.12.1': + dependencies: + '@webassemblyjs/ast': 1.12.1 + '@webassemblyjs/helper-wasm-bytecode': 1.11.6 + '@webassemblyjs/ieee754': 1.11.6 + '@webassemblyjs/leb128': 1.11.6 + '@webassemblyjs/utf8': 1.11.6 + + '@webassemblyjs/wasm-opt@1.12.1': + dependencies: + '@webassemblyjs/ast': 1.12.1 + '@webassemblyjs/helper-buffer': 1.12.1 + '@webassemblyjs/wasm-gen': 1.12.1 + '@webassemblyjs/wasm-parser': 1.12.1 + + '@webassemblyjs/wasm-parser@1.12.1': + dependencies: + '@webassemblyjs/ast': 1.12.1 + '@webassemblyjs/helper-api-error': 1.11.6 + '@webassemblyjs/helper-wasm-bytecode': 1.11.6 + '@webassemblyjs/ieee754': 1.11.6 + '@webassemblyjs/leb128': 1.11.6 + '@webassemblyjs/utf8': 1.11.6 + + '@webassemblyjs/wast-printer@1.12.1': + dependencies: + '@webassemblyjs/ast': 1.12.1 + '@xtuc/long': 4.2.2 + + '@xmldom/xmldom@0.8.10': {} + + '@xtuc/ieee754@1.2.0': {} + + '@xtuc/long@4.2.2': {} + + '@zxing/text-encoding@0.9.0': + optional: true + + abbrev@1.1.1: {} + + accepts@1.3.8: + dependencies: + mime-types: 2.1.35 + negotiator: 0.6.3 + + acorn-import-attributes@1.9.5(acorn@8.12.0): + dependencies: + acorn: 8.12.0 + + acorn-walk@8.3.3: + dependencies: + acorn: 8.12.0 + + acorn@8.12.0: {} + + addressparser@1.0.1: {} + + agent-base@6.0.2: + dependencies: + debug: 4.3.4 + transitivePeerDependencies: + - supports-color + + aggregate-error@3.1.0: + dependencies: + clean-stack: 2.2.0 + indent-string: 4.0.0 + + ajv-draft-04@1.0.0(ajv@8.13.0): + optionalDependencies: + ajv: 8.13.0 + + ajv-formats@2.1.1(ajv@8.16.0): + optionalDependencies: + ajv: 8.16.0 + + ajv-formats@3.0.1(ajv@8.13.0): + optionalDependencies: + ajv: 8.13.0 + + ajv-keywords@3.5.2(ajv@6.12.6): + dependencies: + ajv: 6.12.6 + + ajv-keywords@5.1.0(ajv@8.16.0): + dependencies: + ajv: 8.16.0 + fast-deep-equal: 3.1.3 + + ajv@6.12.6: + dependencies: + fast-deep-equal: 3.1.3 + fast-json-stable-stringify: 2.1.0 + json-schema-traverse: 0.4.1 + uri-js: 4.4.1 + + ajv@8.13.0: + dependencies: + fast-deep-equal: 3.1.3 + json-schema-traverse: 1.0.0 + require-from-string: 2.0.2 + uri-js: 4.4.1 + + ajv@8.16.0: + dependencies: + fast-deep-equal: 3.1.3 + json-schema-traverse: 1.0.0 + require-from-string: 2.0.2 + uri-js: 4.4.1 + + ansi-align@3.0.1: + dependencies: + string-width: 4.2.3 + + ansi-escapes@4.3.2: + dependencies: + type-fest: 0.21.3 + + ansi-html-community@0.0.8: {} + + ansi-regex@2.1.1: {} + + ansi-regex@4.1.1: {} + + ansi-regex@5.0.1: {} + + ansi-styles@2.2.1: {} + + ansi-styles@3.2.1: + dependencies: + color-convert: 1.9.3 + + ansi-styles@4.3.0: + dependencies: + color-convert: 2.0.1 + + ansi-styles@5.2.0: {} + + any-promise@1.3.0: {} + + anymatch@3.1.3: + dependencies: + normalize-path: 3.0.0 + picomatch: 2.3.1 + + aproba@2.0.0: {} + + are-we-there-yet@2.0.0: + dependencies: + delegates: 1.0.0 + readable-stream: 3.6.2 + + argparse@1.0.10: + dependencies: + sprintf-js: 1.0.3 + + argparse@2.0.1: {} + + aria-hidden@1.2.4: + dependencies: + tslib: 2.6.3 + + aria-query@5.3.0: + dependencies: + dequal: 2.0.3 + + arr-diff@4.0.0: {} + + arr-flatten@1.1.0: {} + + arr-union@3.1.0: {} + + array-each@1.0.1: {} + + array-slice@1.1.0: {} + + array-union@2.1.0: {} + + array-unique@0.3.2: {} + + asn1.js@5.4.1: + dependencies: + bn.js: 4.12.0 + inherits: 2.0.4 + minimalistic-assert: 1.0.1 + safer-buffer: 2.1.2 + + assign-symbols@1.0.0: {} + + async@3.2.5: {} + + asynckit@0.4.0: {} + + atob@2.1.2: {} + + available-typed-arrays@1.0.7: + dependencies: + possible-typed-array-names: 1.0.0 + + aws-sdk@2.1644.0: + dependencies: + buffer: 4.9.2 + events: 1.1.1 + ieee754: 1.1.13 + jmespath: 0.16.0 + querystring: 0.2.0 + sax: 1.2.1 + url: 0.10.3 + util: 0.12.5 + uuid: 8.0.0 + xml2js: 0.6.2 + + axios@0.26.1: + dependencies: + follow-redirects: 1.15.6(debug@4.3.4) + transitivePeerDependencies: + - debug + + axios@1.6.0(debug@4.3.4): + dependencies: + follow-redirects: 1.15.6(debug@4.3.4) + form-data: 4.0.0 + proxy-from-env: 1.1.0 + transitivePeerDependencies: + - debug + + axios@1.7.2: + dependencies: + follow-redirects: 1.15.6(debug@4.3.4) + form-data: 4.0.0 + proxy-from-env: 1.1.0 + transitivePeerDependencies: + - debug + + b4a@1.6.6: {} + + babel-plugin-macros@3.1.0: + dependencies: + '@babel/runtime': 7.24.7 + cosmiconfig: 7.1.0 + resolve: 1.22.8 + + babel-plugin-styled-components@2.1.4(@babel/core@7.24.7)(styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1))(supports-color@5.5.0): + dependencies: + '@babel/helper-annotate-as-pure': 7.24.7 + '@babel/helper-module-imports': 7.24.7(supports-color@5.5.0) + '@babel/plugin-syntax-jsx': 7.24.7(@babel/core@7.24.7) + lodash: 4.17.21 + picomatch: 2.3.1 + styled-components: 5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1) + transitivePeerDependencies: + - '@babel/core' + - supports-color + + balanced-match@1.0.2: {} + + bare-events@2.4.2: + optional: true + + bare-fs@2.3.1: + dependencies: + bare-events: 2.4.2 + bare-path: 2.1.3 + bare-stream: 2.1.3 + optional: true + + bare-os@2.4.0: + optional: true + + bare-path@2.1.3: + dependencies: + bare-os: 2.4.0 + optional: true + + bare-stream@2.1.3: + dependencies: + streamx: 2.18.0 + optional: true + + base64-js@1.5.1: {} + + base@0.11.2: + dependencies: + cache-base: 1.0.1 + class-utils: 0.3.6 + component-emitter: 1.3.1 + define-property: 1.0.0 + isobject: 3.0.1 + mixin-deep: 1.3.2 + pascalcase: 0.1.1 + + bcryptjs@2.4.3: {} + + better-sqlite3@8.0.1: + dependencies: + bindings: 1.5.0 + prebuild-install: 7.1.2 + + big-integer@1.6.52: {} + + big.js@5.2.2: {} + + binary-extensions@2.3.0: {} + + bindings@1.5.0: + dependencies: + file-uri-to-path: 1.0.0 + + bl@4.1.0: + dependencies: + buffer: 5.7.1 + inherits: 2.0.4 + readable-stream: 3.6.2 + + bn.js@4.12.0: {} + + boolbase@1.0.0: {} + + bowser@2.11.0: {} + + boxen@5.1.2: + dependencies: + ansi-align: 3.0.1 + camelcase: 6.3.0 + chalk: 4.1.2 + cli-boxes: 2.2.1 + string-width: 4.2.3 + type-fest: 0.20.2 + widest-line: 3.1.0 + wrap-ansi: 7.0.0 + + bplist-parser@0.2.0: + dependencies: + big-integer: 1.6.52 + + brace-expansion@1.1.11: + dependencies: + balanced-match: 1.0.2 + concat-map: 0.0.1 + + brace-expansion@2.0.1: + dependencies: + balanced-match: 1.0.2 + + braces@2.3.2: + dependencies: + arr-flatten: 1.1.0 + array-unique: 0.3.2 + extend-shallow: 2.0.1 + fill-range: 4.0.0 + isobject: 3.0.1 + repeat-element: 1.1.4 + snapdragon: 0.8.2 + snapdragon-node: 2.1.1 + split-string: 3.1.0 + to-regex: 3.0.2 + transitivePeerDependencies: + - supports-color + + braces@3.0.3: + dependencies: + fill-range: 7.1.1 + + broadcast-channel@3.7.0: + dependencies: + '@babel/runtime': 7.24.7 + detect-node: 2.1.0 + js-sha3: 0.8.0 + microseconds: 0.2.0 + nano-time: 1.0.0 + oblivious-set: 1.0.0 + rimraf: 3.0.2 + unload: 2.2.0 + + brorand@1.1.0: {} + + browserslist-to-esbuild@1.2.0: + dependencies: + browserslist: 4.23.1 + + browserslist@4.23.1: + dependencies: + caniuse-lite: 1.0.30001636 + electron-to-chromium: 1.4.805 + node-releases: 2.0.14 + update-browserslist-db: 1.0.16(browserslist@4.23.1) + + buffer-equal-constant-time@1.0.1: {} + + buffer-from@1.1.2: {} + + buffer@4.9.2: + dependencies: + base64-js: 1.5.1 + ieee754: 1.1.13 + isarray: 1.0.0 + + buffer@5.7.1: + dependencies: + base64-js: 1.5.1 + ieee754: 1.2.1 + + buildmail@3.10.0: + dependencies: + addressparser: 1.0.1 + libbase64: 0.1.0 + libmime: 2.1.0 + libqp: 1.1.0 + nodemailer-fetch: 1.6.0 + nodemailer-shared: 1.1.0 + + bundle-name@3.0.0: + dependencies: + run-applescript: 5.0.0 + + byte-size@7.0.1: {} + + bytes@3.1.2: {} + + cache-base@1.0.1: + dependencies: + collection-visit: 1.0.0 + component-emitter: 1.3.1 + get-value: 2.0.6 + has-value: 1.0.0 + isobject: 3.0.1 + set-value: 2.0.1 + to-object-path: 0.3.0 + union-value: 1.0.1 + unset-value: 1.0.0 + + cache-content-type@1.0.1: + dependencies: + mime-types: 2.1.35 + ylru: 1.4.0 + + cacheable-lookup@5.0.4: {} + + cacheable-request@7.0.4: + dependencies: + clone-response: 1.0.3 + get-stream: 5.2.0 + http-cache-semantics: 4.1.1 + keyv: 4.5.4 + lowercase-keys: 2.0.0 + normalize-url: 6.1.0 + responselike: 2.0.1 + + call-bind@1.0.7: + dependencies: + es-define-property: 1.0.0 + es-errors: 1.3.0 + function-bind: 1.1.2 + get-intrinsic: 1.2.4 + set-function-length: 1.2.2 + + callsites@3.1.0: {} + + camel-case@3.0.0: + dependencies: + no-case: 2.3.2 + upper-case: 1.1.3 + + camel-case@4.1.2: + dependencies: + pascal-case: 3.1.2 + tslib: 2.6.3 + + camelcase@6.3.0: {} + + camelize@1.0.1: {} + + caniuse-lite@1.0.30001636: {} + + canvas@2.11.2: + dependencies: + '@mapbox/node-pre-gyp': 1.0.11 + nan: 2.20.0 + simple-get: 3.1.1 + transitivePeerDependencies: + - encoding + - supports-color + + chalk@1.1.3: + dependencies: + ansi-styles: 2.2.1 + escape-string-regexp: 1.0.5 + has-ansi: 2.0.0 + strip-ansi: 3.0.1 + supports-color: 2.0.0 + + chalk@2.4.2: + dependencies: + ansi-styles: 3.2.1 + escape-string-regexp: 1.0.5 + supports-color: 5.5.0 + + chalk@4.1.1: + dependencies: + ansi-styles: 4.3.0 + supports-color: 7.2.0 + + chalk@4.1.2: + dependencies: + ansi-styles: 4.3.0 + supports-color: 7.2.0 + + change-case@3.1.0: + dependencies: + camel-case: 3.0.0 + constant-case: 2.0.0 + dot-case: 2.1.1 + header-case: 1.0.1 + is-lower-case: 1.1.3 + is-upper-case: 1.1.2 + lower-case: 1.1.4 + lower-case-first: 1.0.2 + no-case: 2.3.2 + param-case: 2.1.1 + pascal-case: 2.0.1 + path-case: 2.1.1 + sentence-case: 2.1.1 + snake-case: 2.1.0 + swap-case: 1.1.2 + title-case: 2.1.1 + upper-case: 1.1.3 + upper-case-first: 1.1.2 + + chardet@0.7.0: {} + + chokidar@3.5.3: + dependencies: + anymatch: 3.1.3 + braces: 3.0.3 + glob-parent: 5.1.2 + is-binary-path: 2.1.0 + is-glob: 4.0.3 + normalize-path: 3.0.0 + readdirp: 3.6.0 + optionalDependencies: + fsevents: 2.3.3 + + chokidar@3.6.0: + dependencies: + anymatch: 3.1.3 + braces: 3.0.3 + glob-parent: 5.1.2 + is-binary-path: 2.1.0 + is-glob: 4.0.3 + normalize-path: 3.0.0 + readdirp: 3.6.0 + optionalDependencies: + fsevents: 2.3.3 + + chownr@1.1.4: {} + + chownr@2.0.0: {} + + chrome-trace-event@1.0.4: {} + + ci-info@3.8.0: {} + + class-utils@0.3.6: + dependencies: + arr-union: 3.1.0 + define-property: 0.2.5 + isobject: 3.0.1 + static-extend: 0.1.2 + + clean-css@5.3.3: + dependencies: + source-map: 0.6.1 + + clean-stack@2.2.0: {} + + cli-boxes@2.2.1: {} + + cli-cursor@2.1.0: + dependencies: + restore-cursor: 2.0.0 + + cli-cursor@3.1.0: + dependencies: + restore-cursor: 3.1.0 + + cli-progress@3.12.0: + dependencies: + string-width: 4.2.3 + + cli-spinners@2.9.2: {} + + cli-table3@0.6.2: + dependencies: + string-width: 4.2.3 + optionalDependencies: + '@colors/colors': 1.5.0 + + cli-width@3.0.0: {} + + cliui@7.0.4: + dependencies: + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi: 7.0.0 + + cliui@8.0.1: + dependencies: + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi: 7.0.0 + + clone-response@1.0.3: + dependencies: + mimic-response: 1.0.1 + + clone@1.0.4: {} + + cloudinary-core@2.13.1(lodash@4.17.21): + dependencies: + lodash: 4.17.21 + + cloudinary@1.41.3: + dependencies: + cloudinary-core: 2.13.1(lodash@4.17.21) + core-js: 3.37.1 + lodash: 4.17.21 + q: 1.5.1 + + co-body@5.2.0: + dependencies: + inflation: 2.1.0 + qs: 6.12.1 + raw-body: 2.5.2 + type-is: 1.6.18 + + co-body@6.2.0: + dependencies: + '@hapi/bourne': 3.0.0 + inflation: 2.1.0 + qs: 6.12.1 + raw-body: 2.5.2 + type-is: 1.6.18 + + co@4.6.0: {} + + codemirror@5.65.16: {} + + codemirror@6.0.1(@lezer/common@1.2.1): + dependencies: + '@codemirror/autocomplete': 6.16.2(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.1)(@lezer/common@1.2.1) + '@codemirror/commands': 6.6.0 + '@codemirror/language': 6.10.2 + '@codemirror/lint': 6.8.0 + '@codemirror/search': 6.5.6 + '@codemirror/state': 6.4.1 + '@codemirror/view': 6.28.1 + transitivePeerDependencies: + - '@lezer/common' + + collection-visit@1.0.0: + dependencies: + map-visit: 1.0.0 + object-visit: 1.0.1 + + color-convert@1.9.3: + dependencies: + color-name: 1.1.3 + + color-convert@2.0.1: + dependencies: + color-name: 1.1.4 + + color-name@1.1.3: {} + + color-name@1.1.4: {} + + color-string@1.9.1: + dependencies: + color-name: 1.1.4 + simple-swizzle: 0.2.2 + + color-support@1.1.3: {} + + color@3.2.1: + dependencies: + color-convert: 1.9.3 + color-string: 1.9.1 + + color@4.2.3: + dependencies: + color-convert: 2.0.1 + color-string: 1.9.1 + + colorette@2.0.19: {} + + colorette@2.0.20: {} + + colorspace@1.1.4: + dependencies: + color: 3.2.1 + text-hex: 1.0.0 + + combined-stream@1.0.8: + dependencies: + delayed-stream: 1.0.0 + + commander@10.0.1: {} + + commander@2.20.3: {} + + commander@7.2.0: {} + + commander@8.3.0: {} + + common-path-prefix@3.0.0: {} + + component-emitter@1.3.1: {} + + compressible@2.0.18: + dependencies: + mime-db: 1.52.0 + + compute-scroll-into-view@1.0.20: {} + + compute-scroll-into-view@3.1.0: {} + + concat-map@0.0.1: {} + + concurrently@8.2.2: + dependencies: + chalk: 4.1.2 + date-fns: 2.30.0 + lodash: 4.17.21 + rxjs: 7.8.1 + shell-quote: 1.8.1 + spawn-command: 0.0.2 + supports-color: 8.1.1 + tree-kill: 1.2.2 + yargs: 17.7.2 + + config-chain@1.1.13: + dependencies: + ini: 1.3.8 + proto-list: 1.2.4 + + configstore@5.0.1: + dependencies: + dot-prop: 5.3.0 + graceful-fs: 4.2.11 + make-dir: 3.1.0 + unique-string: 2.0.0 + write-file-atomic: 3.0.3 + xdg-basedir: 4.0.0 + + console-control-strings@1.1.0: {} + + constant-case@2.0.0: + dependencies: + snake-case: 2.1.0 + upper-case: 1.1.3 + + content-disposition@0.5.4: + dependencies: + safe-buffer: 5.2.1 + + content-type@1.0.5: {} + + convert-source-map@1.9.0: {} + + convert-source-map@2.0.0: {} + + cookie-signature@1.2.1: + optional: true + + cookie@0.4.2: {} + + cookie@0.5.0: + optional: true + + cookies@0.8.0: + dependencies: + depd: 2.0.0 + keygrip: 1.1.0 + + cookies@0.9.1: + dependencies: + depd: 2.0.0 + keygrip: 1.1.0 + + copy-descriptor@0.1.1: {} + + copy-to@2.0.1: {} + + copyfiles@2.4.1: + dependencies: + glob: 7.2.3 + minimatch: 3.1.2 + mkdirp: 1.0.4 + noms: 0.0.0 + through2: 2.0.5 + untildify: 4.0.0 + yargs: 16.2.0 + + core-js-pure@3.37.1: {} + + core-js@3.37.1: {} + + core-util-is@1.0.3: {} + + cosmiconfig@7.1.0: + dependencies: + '@types/parse-json': 4.0.2 + import-fresh: 3.3.0 + parse-json: 5.2.0 + path-type: 4.0.0 + yaml: 1.10.2 + + cosmiconfig@8.3.6(typescript@5.2.2): + dependencies: + import-fresh: 3.3.0 + js-yaml: 4.1.0 + parse-json: 5.2.0 + path-type: 4.0.0 + optionalDependencies: + typescript: 5.2.2 + + crc@3.8.0: + dependencies: + buffer: 5.7.1 + + crelt@1.0.6: {} + + cron-parser@3.5.0: + dependencies: + is-nan: 1.3.2 + luxon: 1.28.1 + + cropperjs@1.6.0: {} + + cross-env@7.0.3: + dependencies: + cross-spawn: 7.0.3 + + cross-spawn@7.0.3: + dependencies: + path-key: 3.1.1 + shebang-command: 2.0.0 + which: 2.0.2 + + crypto-random-string@2.0.0: {} + + css-color-keywords@1.0.0: {} + + css-loader@6.11.0(webpack@5.92.0(esbuild@0.19.11)): + dependencies: + icss-utils: 5.1.0(postcss@8.4.38) + postcss: 8.4.38 + postcss-modules-extract-imports: 3.1.0(postcss@8.4.38) + postcss-modules-local-by-default: 4.0.5(postcss@8.4.38) + postcss-modules-scope: 3.2.0(postcss@8.4.38) + postcss-modules-values: 4.0.0(postcss@8.4.38) + postcss-value-parser: 4.2.0 + semver: 7.6.2 + optionalDependencies: + webpack: 5.92.0(esbuild@0.19.11) + + css-select@4.3.0: + dependencies: + boolbase: 1.0.0 + css-what: 6.1.0 + domhandler: 4.3.1 + domutils: 2.8.0 + nth-check: 2.1.1 + + css-to-react-native@3.2.0: + dependencies: + camelize: 1.0.1 + css-color-keywords: 1.0.0 + postcss-value-parser: 4.2.0 + + css-what@6.1.0: {} + + cssesc@3.0.0: {} + + csstype@3.1.3: {} + + date-fns-tz@2.0.0(date-fns@2.30.0): + dependencies: + date-fns: 2.30.0 + + date-fns@2.30.0: + dependencies: + '@babel/runtime': 7.24.7 + + date-fns@3.6.0: {} + + debounce@1.2.1: {} + + debug@2.6.9: + dependencies: + ms: 2.0.0 + + debug@3.2.7: + dependencies: + ms: 2.1.3 + + debug@4.3.4: + dependencies: + ms: 2.1.2 + + debug@4.3.5(supports-color@5.5.0): + dependencies: + ms: 2.1.2 + optionalDependencies: + supports-color: 5.5.0 + + decode-uri-component@0.2.2: {} + + decompress-response@4.2.1: + dependencies: + mimic-response: 2.1.0 + + decompress-response@6.0.0: + dependencies: + mimic-response: 3.1.0 + + decompress-response@7.0.0: + dependencies: + mimic-response: 3.1.0 + + deep-equal@1.0.1: {} + + deep-extend@0.6.0: {} + + deepmerge@2.2.1: {} + + deepmerge@4.3.1: {} + + default-browser-id@3.0.0: + dependencies: + bplist-parser: 0.2.0 + untildify: 4.0.0 + + default-browser@4.0.0: + dependencies: + bundle-name: 3.0.0 + default-browser-id: 3.0.0 + execa: 7.2.0 + titleize: 3.0.0 + + defaults@1.0.4: + dependencies: + clone: 1.0.4 + + defer-to-connect@2.0.1: {} + + define-data-property@1.1.4: + dependencies: + es-define-property: 1.0.0 + es-errors: 1.3.0 + gopd: 1.0.1 + + define-lazy-prop@2.0.0: {} + + define-lazy-prop@3.0.0: {} + + define-properties@1.2.1: + dependencies: + define-data-property: 1.1.4 + has-property-descriptors: 1.0.2 + object-keys: 1.1.1 + + define-property@0.2.5: + dependencies: + is-descriptor: 0.1.7 + + define-property@1.0.0: + dependencies: + is-descriptor: 1.0.3 + + define-property@2.0.2: + dependencies: + is-descriptor: 1.0.3 + isobject: 3.0.1 + + del@5.1.0: + dependencies: + globby: 10.0.2 + graceful-fs: 4.2.11 + is-glob: 4.0.3 + is-path-cwd: 2.2.0 + is-path-inside: 3.0.3 + p-map: 3.0.0 + rimraf: 3.0.2 + slash: 3.0.0 + + delayed-stream@1.0.0: {} + + delegates@1.0.0: {} + + depd@1.1.2: {} + + depd@2.0.0: {} + + dequal@2.0.3: {} + + destroy@1.2.0: {} + + detect-file@1.0.0: {} + + detect-indent@6.1.0: {} + + detect-indent@7.0.1: {} + + detect-libc@2.0.3: {} + + detect-newline@4.0.1: {} + + detect-node-es@1.1.0: {} + + detect-node@2.1.0: {} + + dir-glob@3.0.1: + dependencies: + path-type: 4.0.0 + + direction@1.0.4: {} + + dkim-signer@0.2.2: + dependencies: + libmime: 2.1.3 + + dnd-core@16.0.1: + dependencies: + '@react-dnd/asap': 5.0.2 + '@react-dnd/invariant': 4.0.2 + redux: 4.2.1 + + dom-accessibility-api@0.5.16: {} + + dom-converter@0.2.0: + dependencies: + utila: 0.4.0 + + dom-helpers@5.2.1: + dependencies: + '@babel/runtime': 7.24.7 + csstype: 3.1.3 + + dom-serializer@1.4.1: + dependencies: + domelementtype: 2.3.0 + domhandler: 4.3.1 + entities: 2.2.0 + + dom-serializer@2.0.0: + dependencies: + domelementtype: 2.3.0 + domhandler: 5.0.3 + entities: 4.5.0 + + domelementtype@2.3.0: {} + + domhandler@4.3.1: + dependencies: + domelementtype: 2.3.0 + + domhandler@5.0.3: + dependencies: + domelementtype: 2.3.0 + + domutils@2.8.0: + dependencies: + dom-serializer: 1.4.1 + domelementtype: 2.3.0 + domhandler: 4.3.1 + + domutils@3.1.0: + dependencies: + dom-serializer: 2.0.0 + domelementtype: 2.3.0 + domhandler: 5.0.3 + + dot-case@2.1.1: + dependencies: + no-case: 2.3.2 + + dot-case@3.0.4: + dependencies: + no-case: 3.0.4 + tslib: 2.6.3 + + dot-prop@5.3.0: + dependencies: + is-obj: 2.0.0 + + dotenv@14.2.0: {} + + duplexer@0.1.2: {} + + ecdsa-sig-formatter@1.0.11: + dependencies: + safe-buffer: 5.2.1 + + ee-first@1.1.1: {} + + electron-to-chromium@1.4.805: {} + + elliptic@6.5.5: + dependencies: + bn.js: 4.12.0 + brorand: 1.1.0 + hash.js: 1.1.7 + hmac-drbg: 1.0.1 + inherits: 2.0.4 + minimalistic-assert: 1.0.1 + minimalistic-crypto-utils: 1.0.1 + + emittery@0.12.1: {} + + emoji-regex@8.0.0: {} + + emojis-list@3.0.0: {} + + enabled@2.0.0: {} + + encodeurl@1.0.2: {} + + end-of-stream@1.4.4: + dependencies: + once: 1.4.0 + + enhanced-resolve@5.17.0: + dependencies: + graceful-fs: 4.2.11 + tapable: 2.2.1 + + entities@2.1.0: {} + + entities@2.2.0: {} + + entities@4.5.0: {} + + error-ex@1.3.2: + dependencies: + is-arrayish: 0.2.1 + + error-stack-parser@2.1.4: + dependencies: + stackframe: 1.3.4 + + es-define-property@1.0.0: + dependencies: + get-intrinsic: 1.2.4 + + es-errors@1.3.0: {} + + es-module-lexer@1.5.3: {} + + esbuild-loader@2.21.0(webpack@5.92.0(esbuild@0.19.11)): + dependencies: + esbuild: 0.16.17 + joycon: 3.1.1 + json5: 2.2.3 + loader-utils: 2.0.4 + tapable: 2.2.1 + webpack: 5.92.0(esbuild@0.19.11) + webpack-sources: 1.4.3 + + esbuild-register@3.5.0(esbuild@0.19.11): + dependencies: + debug: 4.3.5(supports-color@5.5.0) + esbuild: 0.19.11 + transitivePeerDependencies: + - supports-color + + esbuild@0.16.17: + optionalDependencies: + '@esbuild/android-arm': 0.16.17 + '@esbuild/android-arm64': 0.16.17 + '@esbuild/android-x64': 0.16.17 + '@esbuild/darwin-arm64': 0.16.17 + '@esbuild/darwin-x64': 0.16.17 + '@esbuild/freebsd-arm64': 0.16.17 + '@esbuild/freebsd-x64': 0.16.17 + '@esbuild/linux-arm': 0.16.17 + '@esbuild/linux-arm64': 0.16.17 + '@esbuild/linux-ia32': 0.16.17 + '@esbuild/linux-loong64': 0.16.17 + '@esbuild/linux-mips64el': 0.16.17 + '@esbuild/linux-ppc64': 0.16.17 + '@esbuild/linux-riscv64': 0.16.17 + '@esbuild/linux-s390x': 0.16.17 + '@esbuild/linux-x64': 0.16.17 + '@esbuild/netbsd-x64': 0.16.17 + '@esbuild/openbsd-x64': 0.16.17 + '@esbuild/sunos-x64': 0.16.17 + '@esbuild/win32-arm64': 0.16.17 + '@esbuild/win32-ia32': 0.16.17 + '@esbuild/win32-x64': 0.16.17 + + esbuild@0.19.11: + optionalDependencies: + '@esbuild/aix-ppc64': 0.19.11 + '@esbuild/android-arm': 0.19.11 + '@esbuild/android-arm64': 0.19.11 + '@esbuild/android-x64': 0.19.11 + '@esbuild/darwin-arm64': 0.19.11 + '@esbuild/darwin-x64': 0.19.11 + '@esbuild/freebsd-arm64': 0.19.11 + '@esbuild/freebsd-x64': 0.19.11 + '@esbuild/linux-arm': 0.19.11 + '@esbuild/linux-arm64': 0.19.11 + '@esbuild/linux-ia32': 0.19.11 + '@esbuild/linux-loong64': 0.19.11 + '@esbuild/linux-mips64el': 0.19.11 + '@esbuild/linux-ppc64': 0.19.11 + '@esbuild/linux-riscv64': 0.19.11 + '@esbuild/linux-s390x': 0.19.11 + '@esbuild/linux-x64': 0.19.11 + '@esbuild/netbsd-x64': 0.19.11 + '@esbuild/openbsd-x64': 0.19.11 + '@esbuild/sunos-x64': 0.19.11 + '@esbuild/win32-arm64': 0.19.11 + '@esbuild/win32-ia32': 0.19.11 + '@esbuild/win32-x64': 0.19.11 + + escalade@3.1.2: {} + + escape-html@1.0.3: {} + + escape-string-regexp@1.0.5: {} + + escape-string-regexp@2.0.0: {} + + escape-string-regexp@4.0.0: {} + + esdoc-ecmascript-proposal-plugin@1.0.0: {} + + eslint-scope@5.1.1: + dependencies: + esrecurse: 4.3.0 + estraverse: 4.3.0 + + esm@3.2.25: {} + + esrecurse@4.3.0: + dependencies: + estraverse: 5.3.0 + + estraverse@4.3.0: {} + + estraverse@5.3.0: {} + + eventemitter3@4.0.7: {} + + events@1.1.1: {} + + events@3.3.0: {} + + eventsource@2.0.2: {} + + execa@5.1.1: + dependencies: + cross-spawn: 7.0.3 + get-stream: 6.0.1 + human-signals: 2.1.0 + is-stream: 2.0.1 + merge-stream: 2.0.0 + npm-run-path: 4.0.1 + onetime: 5.1.2 + signal-exit: 3.0.7 + strip-final-newline: 2.0.0 + + execa@7.2.0: + dependencies: + cross-spawn: 7.0.3 + get-stream: 6.0.1 + human-signals: 4.3.1 + is-stream: 3.0.0 + merge-stream: 2.0.0 + npm-run-path: 5.3.0 + onetime: 6.0.0 + signal-exit: 3.0.7 + strip-final-newline: 3.0.0 + + expand-brackets@2.1.4: + dependencies: + debug: 2.6.9 + define-property: 0.2.5 + extend-shallow: 2.0.1 + posix-character-classes: 0.1.1 + regex-not: 1.0.2 + snapdragon: 0.8.2 + to-regex: 3.0.2 + transitivePeerDependencies: + - supports-color + + expand-template@2.0.3: {} + + expand-tilde@2.0.2: + dependencies: + homedir-polyfill: 1.0.3 + + extend-shallow@2.0.1: + dependencies: + is-extendable: 0.1.1 + + extend-shallow@3.0.2: + dependencies: + assign-symbols: 1.0.0 + is-extendable: 1.0.1 + + extend@3.0.2: {} + + external-editor@3.1.0: + dependencies: + chardet: 0.7.0 + iconv-lite: 0.4.24 + tmp: 0.0.33 + + extglob@2.0.4: + dependencies: + array-unique: 0.3.2 + define-property: 1.0.0 + expand-brackets: 2.1.4 + extend-shallow: 2.0.1 + fragment-cache: 0.2.1 + regex-not: 1.0.2 + snapdragon: 0.8.2 + to-regex: 3.0.2 + transitivePeerDependencies: + - supports-color + + fast-deep-equal@3.1.3: {} + + fast-fifo@1.3.2: {} + + fast-glob@3.3.2: + dependencies: + '@nodelib/fs.stat': 2.0.5 + '@nodelib/fs.walk': 1.2.8 + glob-parent: 5.1.2 + merge2: 1.4.1 + micromatch: 4.0.7 + + fast-json-stable-stringify@2.1.0: {} + + fast-safe-stringify@2.1.1: {} + + fast-xml-parser@4.2.5: + dependencies: + strnum: 1.0.5 + + fastq@1.17.1: + dependencies: + reusify: 1.0.4 + + fecha@4.2.3: {} + + figures@3.2.0: + dependencies: + escape-string-regexp: 1.0.5 + + file-uri-to-path@1.0.0: {} + + fill-range@4.0.0: + dependencies: + extend-shallow: 2.0.1 + is-number: 3.0.0 + repeat-string: 1.6.1 + to-regex-range: 2.1.1 + + fill-range@7.1.1: + dependencies: + to-regex-range: 5.0.1 + + find-root@1.1.0: {} + + find-up@3.0.0: + dependencies: + locate-path: 3.0.0 + + find-up@4.1.0: + dependencies: + locate-path: 5.0.0 + path-exists: 4.0.0 + + find-up@5.0.0: + dependencies: + locate-path: 6.0.0 + path-exists: 4.0.0 + + findup-sync@2.0.0: + dependencies: + detect-file: 1.0.0 + is-glob: 3.1.0 + micromatch: 3.1.10 + resolve-dir: 1.0.1 + transitivePeerDependencies: + - supports-color + + fined@1.2.0: + dependencies: + expand-tilde: 2.0.2 + is-plain-object: 2.0.4 + object.defaults: 1.1.0 + object.pick: 1.3.0 + parse-filepath: 1.0.2 + + flagged-respawn@1.0.1: {} + + flat-cache@3.2.0: + dependencies: + flatted: 3.3.1 + keyv: 4.5.4 + rimraf: 3.0.2 + + flatted@3.3.1: {} + + fn.name@1.1.0: {} + + follow-redirects@1.15.6(debug@4.3.4): + optionalDependencies: + debug: 4.3.4 + + for-each@0.3.3: + dependencies: + is-callable: 1.2.7 + + for-in@1.0.2: {} + + for-own@1.0.0: + dependencies: + for-in: 1.0.2 + + fork-ts-checker-webpack-plugin@9.0.2(typescript@5.2.2)(webpack@5.92.0(esbuild@0.19.11)): + dependencies: + '@babel/code-frame': 7.24.7 + chalk: 4.1.2 + chokidar: 3.6.0 + cosmiconfig: 8.3.6(typescript@5.2.2) + deepmerge: 4.3.1 + fs-extra: 10.0.0 + memfs: 3.5.3 + minimatch: 3.1.2 + node-abort-controller: 3.1.1 + schema-utils: 3.3.0 + semver: 7.6.2 + tapable: 2.2.1 + typescript: 5.2.2 + webpack: 5.92.0(esbuild@0.19.11) + + form-data@4.0.0: + dependencies: + asynckit: 0.4.0 + combined-stream: 1.0.8 + mime-types: 2.1.35 + + formidable@1.2.6: {} + + formik@2.2.9(react@18.3.1): + dependencies: + deepmerge: 2.2.1 + hoist-non-react-statics: 3.3.2 + lodash: 4.17.21 + lodash-es: 4.17.21 + react: 18.3.1 + react-fast-compare: 2.0.4 + tiny-warning: 1.0.3 + tslib: 1.14.1 + + formik@2.4.0(react@18.3.1): + dependencies: + deepmerge: 2.2.1 + hoist-non-react-statics: 3.3.2 + lodash: 4.17.21 + lodash-es: 4.17.21 + react: 18.3.1 + react-fast-compare: 2.0.4 + tiny-warning: 1.0.3 + tslib: 1.14.1 + + fractional-indexing@3.2.0: {} + + fragment-cache@0.2.1: + dependencies: + map-cache: 0.2.2 + + fresh@0.5.2: {} + + from2@2.3.0: + dependencies: + inherits: 2.0.4 + readable-stream: 2.3.8 + + fs-constants@1.0.0: {} + + fs-extra@10.0.0: + dependencies: + graceful-fs: 4.2.11 + jsonfile: 6.1.0 + universalify: 2.0.1 + + fs-extra@7.0.1: + dependencies: + graceful-fs: 4.2.11 + jsonfile: 4.0.0 + universalify: 0.1.2 + + fs-extra@8.1.0: + dependencies: + graceful-fs: 4.2.11 + jsonfile: 4.0.0 + universalify: 0.1.2 + + fs-jetpack@4.3.1: + dependencies: + minimatch: 3.1.2 + rimraf: 2.7.1 + + fs-minipass@2.1.0: + dependencies: + minipass: 3.3.6 + + fs-monkey@1.0.6: {} + + fs.realpath@1.0.0: {} + + fsevents@2.3.3: + optional: true + + function-bind@1.1.2: {} + + fuzzy-search@3.2.1: {} + + fuzzysort@2.0.4: {} + + gauge@3.0.2: + dependencies: + aproba: 2.0.0 + color-support: 1.1.3 + console-control-strings: 1.1.0 + has-unicode: 2.0.1 + object-assign: 4.1.1 + signal-exit: 3.0.7 + string-width: 4.2.3 + strip-ansi: 6.0.1 + wide-align: 1.1.5 + + gensync@1.0.0-beta.2: {} + + get-caller-file@2.0.5: {} + + get-intrinsic@1.2.4: + dependencies: + es-errors: 1.3.0 + function-bind: 1.1.2 + has-proto: 1.0.3 + has-symbols: 1.0.3 + hasown: 2.0.2 + + get-it@8.6.1(debug@4.3.4): + dependencies: + decompress-response: 7.0.0 + follow-redirects: 1.15.6(debug@4.3.4) + is-retry-allowed: 2.2.0 + progress-stream: 2.0.0 + tunnel-agent: 0.6.0 + transitivePeerDependencies: + - debug + + get-latest-version@5.1.0(debug@4.3.4): + dependencies: + get-it: 8.6.1(debug@4.3.4) + registry-auth-token: 5.0.2 + registry-url: 5.1.0 + semver: 7.6.2 + transitivePeerDependencies: + - debug + + get-nonce@1.0.1: {} + + get-package-type@0.1.0: {} + + get-stdin@9.0.0: {} + + get-stream@5.2.0: + dependencies: + pump: 3.0.0 + + get-stream@6.0.1: {} + + get-value@2.0.6: {} + + getopts@2.3.0: {} + + git-hooks-list@3.1.0: {} + + git-up@7.0.0: + dependencies: + is-ssh: 1.4.0 + parse-url: 8.1.0 + + git-url-parse@13.1.0: + dependencies: + git-up: 7.0.0 + + github-from-package@0.0.0: {} + + glob-parent@5.1.2: + dependencies: + is-glob: 4.0.3 + + glob-to-regexp@0.4.1: {} + + glob@7.2.3: + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 3.1.2 + once: 1.4.0 + path-is-absolute: 1.0.1 + + glob@8.1.0: + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 5.1.6 + once: 1.4.0 + + global-modules@1.0.0: + dependencies: + global-prefix: 1.0.2 + is-windows: 1.0.2 + resolve-dir: 1.0.1 + + global-prefix@1.0.2: + dependencies: + expand-tilde: 2.0.2 + homedir-polyfill: 1.0.3 + ini: 1.3.8 + is-windows: 1.0.2 + which: 1.3.1 + + globals@11.12.0: {} + + globby@10.0.2: + dependencies: + '@types/glob': 7.2.0 + array-union: 2.1.0 + dir-glob: 3.0.1 + fast-glob: 3.3.2 + glob: 7.2.3 + ignore: 5.3.1 + merge2: 1.4.1 + slash: 3.0.0 + + globby@13.2.2: + dependencies: + dir-glob: 3.0.1 + fast-glob: 3.3.2 + ignore: 5.3.1 + merge2: 1.4.1 + slash: 4.0.0 + + gopd@1.0.1: + dependencies: + get-intrinsic: 1.2.4 + + got@11.8.6: + dependencies: + '@sindresorhus/is': 4.6.0 + '@szmarczak/http-timer': 4.0.6 + '@types/cacheable-request': 6.0.3 + '@types/responselike': 1.0.3 + cacheable-lookup: 5.0.4 + cacheable-request: 7.0.4 + decompress-response: 6.0.0 + http2-wrapper: 1.0.3 + lowercase-keys: 2.0.0 + p-cancelable: 2.1.1 + responselike: 2.0.1 + + graceful-fs@4.2.10: {} + + graceful-fs@4.2.11: {} + + grant-koa@5.4.8(koa@2.13.4): + dependencies: + grant: 5.4.22 + koa: 2.13.4 + + grant-koa@5.4.8(koa@2.15.3): + dependencies: + grant: 5.4.22 + koa: 2.15.3 + + grant@5.4.22: + dependencies: + qs: 6.12.1 + request-compose: 2.1.6 + request-oauth: 1.0.1 + optionalDependencies: + cookie: 0.5.0 + cookie-signature: 1.2.1 + jwk-to-pem: 2.0.5 + jws: 4.0.0 + + graphql@16.8.2: {} + + gzip-size@6.0.0: + dependencies: + duplexer: 0.1.2 + + handlebars@4.7.8: + dependencies: + minimist: 1.2.8 + neo-async: 2.6.2 + source-map: 0.6.1 + wordwrap: 1.0.0 + optionalDependencies: + uglify-js: 3.18.0 + + has-ansi@2.0.0: + dependencies: + ansi-regex: 2.1.1 + + has-flag@3.0.0: {} + + has-flag@4.0.0: {} + + has-property-descriptors@1.0.2: + dependencies: + es-define-property: 1.0.0 + + has-proto@1.0.3: {} + + has-symbols@1.0.3: {} + + has-tostringtag@1.0.2: + dependencies: + has-symbols: 1.0.3 + + has-unicode@2.0.1: {} + + has-value@0.3.1: + dependencies: + get-value: 2.0.6 + has-values: 0.1.4 + isobject: 2.1.0 + + has-value@1.0.0: + dependencies: + get-value: 2.0.6 + has-values: 1.0.0 + isobject: 3.0.1 + + has-values@0.1.4: {} + + has-values@1.0.0: + dependencies: + is-number: 3.0.0 + kind-of: 4.0.0 + + hash.js@1.1.7: + dependencies: + inherits: 2.0.4 + minimalistic-assert: 1.0.1 + + hasown@2.0.2: + dependencies: + function-bind: 1.1.2 + + he@1.2.0: {} + + header-case@1.0.1: + dependencies: + no-case: 2.3.2 + upper-case: 1.1.3 + + headers-polyfill@3.2.5: {} + + headers-polyfill@3.3.0: {} + + helmet@6.2.0: {} + + highlight.js@10.7.3: {} + + history@4.10.1: + dependencies: + '@babel/runtime': 7.24.7 + loose-envify: 1.4.0 + resolve-pathname: 3.0.0 + tiny-invariant: 1.3.3 + tiny-warning: 1.0.3 + value-equal: 1.0.1 + + hmac-drbg@1.0.1: + dependencies: + hash.js: 1.1.7 + minimalistic-assert: 1.0.1 + minimalistic-crypto-utils: 1.0.1 + + hoist-non-react-statics@3.3.2: + dependencies: + react-is: 16.13.1 + + homedir-polyfill@1.0.3: + dependencies: + parse-passwd: 1.0.0 + + hosted-git-info@2.8.9: {} + + html-entities@2.5.2: {} + + html-escaper@2.0.2: {} + + html-minifier-terser@6.1.0: + dependencies: + camel-case: 4.1.2 + clean-css: 5.3.3 + commander: 8.3.0 + he: 1.2.0 + param-case: 3.0.4 + relateurl: 0.2.7 + terser: 5.31.1 + + html-webpack-plugin@5.6.0(webpack@5.92.0(esbuild@0.19.11)): + dependencies: + '@types/html-minifier-terser': 6.1.0 + html-minifier-terser: 6.1.0 + lodash: 4.17.21 + pretty-error: 4.0.0 + tapable: 2.2.1 + optionalDependencies: + webpack: 5.92.0(esbuild@0.19.11) + + htmlparser2@6.1.0: + dependencies: + domelementtype: 2.3.0 + domhandler: 4.3.1 + domutils: 2.8.0 + entities: 2.2.0 + + htmlparser2@8.0.2: + dependencies: + domelementtype: 2.3.0 + domhandler: 5.0.3 + domutils: 3.1.0 + entities: 4.5.0 + + http-assert@1.5.0: + dependencies: + deep-equal: 1.0.1 + http-errors: 1.8.1 + + http-cache-semantics@4.1.1: {} + + http-errors@1.6.3: + dependencies: + depd: 1.1.2 + inherits: 2.0.3 + setprototypeof: 1.1.0 + statuses: 1.5.0 + + http-errors@1.8.1: + dependencies: + depd: 1.1.2 + inherits: 2.0.4 + setprototypeof: 1.2.0 + statuses: 1.5.0 + toidentifier: 1.0.1 + + http-errors@2.0.0: + dependencies: + depd: 2.0.0 + inherits: 2.0.4 + setprototypeof: 1.2.0 + statuses: 2.0.1 + toidentifier: 1.0.1 + + http2-wrapper@1.0.3: + dependencies: + quick-lru: 5.1.1 + resolve-alpn: 1.2.1 + + https-proxy-agent@5.0.1: + dependencies: + agent-base: 6.0.2 + debug: 4.3.4 + transitivePeerDependencies: + - supports-color + + human-signals@2.1.0: {} + + human-signals@4.3.1: {} + + iconv-lite@0.4.13: {} + + iconv-lite@0.4.15: {} + + iconv-lite@0.4.24: + dependencies: + safer-buffer: 2.1.2 + + icss-utils@5.1.0(postcss@8.4.38): + dependencies: + postcss: 8.4.38 + + ieee754@1.1.13: {} + + ieee754@1.2.1: {} + + ignore-by-default@1.0.1: {} + + ignore-walk@3.0.4: + dependencies: + minimatch: 3.1.2 + + ignore@5.3.1: {} + + immer@9.0.19: {} + + immer@9.0.21: {} + + import-fresh@3.3.0: + dependencies: + parent-module: 1.0.1 + resolve-from: 4.0.0 + + import-lazy@4.0.0: {} + + imurmurhash@0.1.4: {} + + indent-string@4.0.0: {} + + inflation@2.1.0: {} + + inflight@1.0.6: + dependencies: + once: 1.4.0 + wrappy: 1.0.2 + + inherits@2.0.3: {} + + inherits@2.0.4: {} + + ini@1.3.8: {} + + ini@2.0.0: {} + + ini@4.1.1: {} + + inquirer@7.3.3: + dependencies: + ansi-escapes: 4.3.2 + chalk: 4.1.2 + cli-cursor: 3.1.0 + cli-width: 3.0.0 + external-editor: 3.1.0 + figures: 3.2.0 + lodash: 4.17.21 + mute-stream: 0.0.8 + run-async: 2.4.1 + rxjs: 6.6.7 + string-width: 4.2.3 + strip-ansi: 6.0.1 + through: 2.3.8 + + inquirer@8.2.5: + dependencies: + ansi-escapes: 4.3.2 + chalk: 4.1.2 + cli-cursor: 3.1.0 + cli-width: 3.0.0 + external-editor: 3.1.0 + figures: 3.2.0 + lodash: 4.17.21 + mute-stream: 0.0.8 + ora: 5.4.1 + run-async: 2.4.1 + rxjs: 7.8.1 + string-width: 4.2.3 + strip-ansi: 6.0.1 + through: 2.3.8 + wrap-ansi: 7.0.0 + + inquirer@8.2.6: + dependencies: + ansi-escapes: 4.3.2 + chalk: 4.1.1 + cli-cursor: 3.1.0 + cli-width: 3.0.0 + external-editor: 3.1.0 + figures: 3.2.0 + lodash: 4.17.21 + mute-stream: 0.0.8 + ora: 5.4.1 + run-async: 2.4.1 + rxjs: 7.8.1 + string-width: 4.2.3 + strip-ansi: 6.0.1 + through: 2.3.8 + wrap-ansi: 6.2.0 + + interpret@1.4.0: {} + + interpret@2.2.0: {} + + intl-messageformat@10.3.3: + dependencies: + '@formatjs/ecma402-abstract': 1.14.3 + '@formatjs/fast-memoize': 2.0.1 + '@formatjs/icu-messageformat-parser': 2.3.0 + tslib: 2.6.3 + + intl-messageformat@10.3.4: + dependencies: + '@formatjs/ecma402-abstract': 1.14.3 + '@formatjs/fast-memoize': 2.0.1 + '@formatjs/icu-messageformat-parser': 2.3.1 + tslib: 2.6.3 + + into-stream@5.1.1: + dependencies: + from2: 2.3.0 + p-is-promise: 3.0.0 + + invariant@2.2.4: + dependencies: + loose-envify: 1.4.0 + + is-absolute@1.0.0: + dependencies: + is-relative: 1.0.0 + is-windows: 1.0.2 + + is-accessor-descriptor@1.0.1: + dependencies: + hasown: 2.0.2 + + is-arguments@1.1.1: + dependencies: + call-bind: 1.0.7 + has-tostringtag: 1.0.2 + + is-arrayish@0.2.1: {} + + is-arrayish@0.3.2: {} + + is-binary-path@2.1.0: + dependencies: + binary-extensions: 2.3.0 + + is-buffer@1.1.6: {} + + is-callable@1.2.7: {} + + is-class-hotfix@0.0.6: {} + + is-core-module@2.13.1: + dependencies: + hasown: 2.0.2 + + is-data-descriptor@1.0.1: + dependencies: + hasown: 2.0.2 + + is-descriptor@0.1.7: + dependencies: + is-accessor-descriptor: 1.0.1 + is-data-descriptor: 1.0.1 + + is-descriptor@1.0.3: + dependencies: + is-accessor-descriptor: 1.0.1 + is-data-descriptor: 1.0.1 + + is-docker@2.2.1: {} + + is-docker@3.0.0: {} + + is-extendable@0.1.1: {} + + is-extendable@1.0.1: + dependencies: + is-plain-object: 2.0.4 + + is-extglob@2.1.1: {} + + is-fullwidth-code-point@3.0.0: {} + + is-generator-function@1.0.10: + dependencies: + has-tostringtag: 1.0.2 + + is-glob@3.1.0: + dependencies: + is-extglob: 2.1.1 + + is-glob@4.0.3: + dependencies: + is-extglob: 2.1.1 + + is-hotkey@0.1.8: {} + + is-inside-container@1.0.0: + dependencies: + is-docker: 3.0.0 + + is-interactive@1.0.0: {} + + is-lower-case@1.1.3: + dependencies: + lower-case: 1.1.4 + + is-nan@1.3.2: + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + + is-node-process@1.2.0: {} + + is-number@3.0.0: + dependencies: + kind-of: 3.2.2 + + is-number@7.0.0: {} + + is-obj@2.0.0: {} + + is-path-cwd@2.2.0: {} + + is-path-inside@3.0.3: {} + + is-plain-obj@4.1.0: {} + + is-plain-object@2.0.4: + dependencies: + isobject: 3.0.1 + + is-plain-object@5.0.0: {} + + is-relative@1.0.0: + dependencies: + is-unc-path: 1.0.0 + + is-retry-allowed@2.2.0: {} + + is-ssh@1.4.0: + dependencies: + protocols: 2.0.1 + + is-stream@2.0.1: {} + + is-stream@3.0.0: {} + + is-type-of@1.4.0: + dependencies: + core-util-is: 1.0.3 + is-class-hotfix: 0.0.6 + isstream: 0.1.2 + + is-typed-array@1.1.13: + dependencies: + which-typed-array: 1.1.15 + + is-typedarray@1.0.0: {} + + is-unc-path@1.0.0: + dependencies: + unc-path-regex: 0.1.2 + + is-unicode-supported@0.1.0: {} + + is-upper-case@1.1.2: + dependencies: + upper-case: 1.1.3 + + is-windows@1.0.2: {} + + is-wsl@2.2.0: + dependencies: + is-docker: 2.2.1 + + isarray@0.0.1: {} + + isarray@1.0.0: {} + + isbinaryfile@4.0.10: {} + + isexe@2.0.0: {} + + isobject@2.1.0: + dependencies: + isarray: 1.0.0 + + isobject@3.0.1: {} + + isstream@0.1.2: {} + + jest-worker@27.5.1: + dependencies: + '@types/node': 20.14.5 + merge-stream: 2.0.0 + supports-color: 8.1.1 + + jju@1.4.0: {} + + jmespath@0.16.0: {} + + jose@4.15.7: {} + + joycon@3.1.1: {} + + js-cookie@2.2.1: {} + + js-levenshtein@1.1.6: {} + + js-sha3@0.8.0: {} + + js-tokens@4.0.0: {} + + js-yaml@4.1.0: + dependencies: + argparse: 2.0.1 + + jsesc@2.5.2: {} + + json-buffer@3.0.1: {} + + json-parse-even-better-errors@2.3.1: {} + + json-schema-traverse@0.4.1: {} + + json-schema-traverse@1.0.0: {} + + json5@2.2.3: {} + + jsonfile@4.0.0: + optionalDependencies: + graceful-fs: 4.2.11 + + jsonfile@6.1.0: + dependencies: + universalify: 2.0.1 + optionalDependencies: + graceful-fs: 4.2.11 + + jsonwebtoken@9.0.0: + dependencies: + jws: 3.2.2 + lodash: 4.17.21 + ms: 2.1.3 + semver: 7.6.2 + + jwa@1.4.1: + dependencies: + buffer-equal-constant-time: 1.0.1 + ecdsa-sig-formatter: 1.0.11 + safe-buffer: 5.2.1 + + jwa@2.0.0: + dependencies: + buffer-equal-constant-time: 1.0.1 + ecdsa-sig-formatter: 1.0.11 + safe-buffer: 5.2.1 + optional: true + + jwk-to-pem@2.0.5: + dependencies: + asn1.js: 5.4.1 + elliptic: 6.5.5 + safe-buffer: 5.2.1 + + jwks-rsa@3.1.0: + dependencies: + '@types/express': 4.17.21 + '@types/jsonwebtoken': 9.0.6 + debug: 4.3.5(supports-color@5.5.0) + jose: 4.15.7 + limiter: 1.1.5 + lru-memoizer: 2.3.0 + transitivePeerDependencies: + - supports-color + + jws@3.2.2: + dependencies: + jwa: 1.4.1 + safe-buffer: 5.2.1 + + jws@4.0.0: + dependencies: + jwa: 2.0.0 + safe-buffer: 5.2.1 + optional: true + + keygrip@1.1.0: + dependencies: + tsscmp: 1.0.6 + + keyv@4.5.4: + dependencies: + json-buffer: 3.0.1 + + kind-of@3.2.2: + dependencies: + is-buffer: 1.1.6 + + kind-of@4.0.0: + dependencies: + is-buffer: 1.1.6 + + kind-of@6.0.3: {} + + kleur@3.0.3: {} + + knex@2.5.0(better-sqlite3@8.0.1)(pg@8.12.0): + dependencies: + colorette: 2.0.19 + commander: 10.0.1 + debug: 4.3.4 + escalade: 3.1.2 + esm: 3.2.25 + get-package-type: 0.1.0 + getopts: 2.3.0 + interpret: 2.2.0 + lodash: 4.17.21 + pg-connection-string: 2.6.1 + rechoir: 0.8.0 + resolve-from: 5.0.0 + tarn: 3.0.2 + tildify: 2.0.0 + optionalDependencies: + better-sqlite3: 8.0.1 + pg: 8.12.0 + transitivePeerDependencies: + - supports-color + + koa-body@4.2.0: + dependencies: + '@types/formidable': 1.2.8 + co-body: 5.2.0 + formidable: 1.2.6 + + koa-bodyparser@4.4.1: + dependencies: + co-body: 6.2.0 + copy-to: 2.0.1 + type-is: 1.6.18 + + koa-compose@4.1.0: {} + + koa-compress@5.1.0: + dependencies: + bytes: 3.1.2 + compressible: 2.0.18 + http-errors: 1.8.1 + koa-is-json: 1.0.0 + statuses: 2.0.1 + + koa-convert@2.0.0: + dependencies: + co: 4.6.0 + koa-compose: 4.1.0 + + koa-favicon@2.1.0: + dependencies: + mz: 2.7.0 + + koa-helmet@7.0.2: + dependencies: + helmet: 6.2.0 + + koa-ip@2.1.3: + dependencies: + debug: 4.3.4 + lodash.isplainobject: 4.0.6 + request-ip: 3.3.0 + transitivePeerDependencies: + - supports-color + + koa-is-json@1.0.0: {} + + koa-passport@5.0.0: + dependencies: + passport: 0.6.0 + + koa-range@0.3.0: + dependencies: + stream-slice: 0.1.2 + + koa-send@5.0.1: + dependencies: + debug: 4.3.5(supports-color@5.5.0) + http-errors: 1.8.1 + resolve-path: 1.4.0 + transitivePeerDependencies: + - supports-color + + koa-session@6.4.0: + dependencies: + crc: 3.8.0 + debug: 4.3.5(supports-color@5.5.0) + is-type-of: 1.4.0 + uuid: 8.3.2 + transitivePeerDependencies: + - supports-color + + koa-static@5.0.0: + dependencies: + debug: 3.2.7 + koa-send: 5.0.1 + transitivePeerDependencies: + - supports-color + + koa2-ratelimit@1.1.3: {} + + koa@2.13.4: + dependencies: + accepts: 1.3.8 + cache-content-type: 1.0.1 + content-disposition: 0.5.4 + content-type: 1.0.5 + cookies: 0.8.0 + debug: 4.3.5(supports-color@5.5.0) + delegates: 1.0.0 + depd: 2.0.0 + destroy: 1.2.0 + encodeurl: 1.0.2 + escape-html: 1.0.3 + fresh: 0.5.2 + http-assert: 1.5.0 + http-errors: 1.8.1 + is-generator-function: 1.0.10 + koa-compose: 4.1.0 + koa-convert: 2.0.0 + on-finished: 2.4.1 + only: 0.0.2 + parseurl: 1.3.3 + statuses: 1.5.0 + type-is: 1.6.18 + vary: 1.1.2 + transitivePeerDependencies: + - supports-color + + koa@2.15.3: + dependencies: + accepts: 1.3.8 + cache-content-type: 1.0.1 + content-disposition: 0.5.4 + content-type: 1.0.5 + cookies: 0.9.1 + debug: 4.3.5(supports-color@5.5.0) + delegates: 1.0.0 + depd: 2.0.0 + destroy: 1.2.0 + encodeurl: 1.0.2 + escape-html: 1.0.3 + fresh: 0.5.2 + http-assert: 1.5.0 + http-errors: 1.8.1 + is-generator-function: 1.0.10 + koa-compose: 4.1.0 + koa-convert: 2.0.0 + on-finished: 2.4.1 + only: 0.0.2 + parseurl: 1.3.3 + statuses: 1.5.0 + type-is: 1.6.18 + vary: 1.1.2 + transitivePeerDependencies: + - supports-color + + kuler@2.0.0: {} + + libbase64@0.1.0: {} + + libmime@2.1.0: + dependencies: + iconv-lite: 0.4.13 + libbase64: 0.1.0 + libqp: 1.1.0 + + libmime@2.1.3: + dependencies: + iconv-lite: 0.4.15 + libbase64: 0.1.0 + libqp: 1.1.0 + + libqp@1.1.0: {} + + liftoff@2.5.0: + dependencies: + extend: 3.0.2 + findup-sync: 2.0.0 + fined: 1.2.0 + flagged-respawn: 1.0.1 + is-plain-object: 2.0.4 + object.map: 1.0.1 + rechoir: 0.6.2 + resolve: 1.22.8 + transitivePeerDependencies: + - supports-color + + limiter@1.1.5: {} + + lines-and-columns@1.2.4: {} + + linkify-it@3.0.3: + dependencies: + uc.micro: 1.0.6 + + loader-runner@4.3.0: {} + + loader-utils@2.0.4: + dependencies: + big.js: 5.2.2 + emojis-list: 3.0.0 + json5: 2.2.3 + + locate-path@3.0.0: + dependencies: + p-locate: 3.0.0 + path-exists: 3.0.0 + + locate-path@5.0.0: + dependencies: + p-locate: 4.1.0 + + locate-path@6.0.0: + dependencies: + p-locate: 5.0.0 + + lodash-es@4.17.21: {} + + lodash.clonedeep@4.5.0: {} + + lodash.deburr@4.1.0: {} + + lodash.get@4.4.2: {} + + lodash.isplainobject@4.0.6: {} + + lodash@4.17.21: {} + + log-symbols@2.2.0: + dependencies: + chalk: 2.4.2 + + log-symbols@4.1.0: + dependencies: + chalk: 4.1.2 + is-unicode-supported: 0.1.0 + + logform@2.6.0: + dependencies: + '@colors/colors': 1.6.0 + '@types/triple-beam': 1.3.5 + fecha: 4.2.3 + ms: 2.1.3 + safe-stable-stringify: 2.4.3 + triple-beam: 1.4.1 + + long-timeout@0.1.1: {} + + loose-envify@1.4.0: + dependencies: + js-tokens: 4.0.0 + + lower-case-first@1.0.2: + dependencies: + lower-case: 1.1.4 + + lower-case@1.1.4: {} + + lower-case@2.0.2: + dependencies: + tslib: 2.6.3 + + lowercase-keys@2.0.0: {} + + lru-cache@5.1.1: + dependencies: + yallist: 3.1.1 + + lru-cache@6.0.0: + dependencies: + yallist: 4.0.0 + + lru-memoizer@2.3.0: + dependencies: + lodash.clonedeep: 4.5.0 + lru-cache: 6.0.0 + + lru_map@0.3.3: {} + + luxon@1.28.1: {} + + lz-string@1.5.0: {} + + mailcomposer@3.12.0: + dependencies: + buildmail: 3.10.0 + libmime: 2.1.0 + + make-dir@3.1.0: + dependencies: + semver: 6.3.1 + + make-iterator@1.0.1: + dependencies: + kind-of: 6.0.3 + + map-cache@0.2.2: {} + + map-visit@1.0.0: + dependencies: + object-visit: 1.0.1 + + markdown-it-abbr@1.0.4: {} + + markdown-it-container@3.0.0: {} + + markdown-it-deflist@2.1.0: {} + + markdown-it-emoji@2.0.2: {} + + markdown-it-footnote@3.0.3: {} + + markdown-it-ins@3.0.1: {} + + markdown-it-mark@3.0.1: {} + + markdown-it-sub@1.0.0: {} + + markdown-it-sup@1.0.0: {} + + markdown-it@12.3.2: + dependencies: + argparse: 2.0.1 + entities: 2.1.0 + linkify-it: 3.0.3 + mdurl: 1.0.1 + uc.micro: 1.0.6 + + match-sorter@4.2.1: + dependencies: + '@babel/runtime': 7.24.7 + remove-accents: 0.4.2 + + match-sorter@6.3.4: + dependencies: + '@babel/runtime': 7.24.7 + remove-accents: 0.5.0 + + mdurl@1.0.1: {} + + media-typer@0.3.0: {} + + memfs@3.5.3: + dependencies: + fs-monkey: 1.0.6 + + memoize-one@5.2.1: {} + + memoize-one@6.0.0: {} + + merge-stream@2.0.0: {} + + merge2@1.4.1: {} + + methods@1.1.2: {} + + micromatch@3.1.10: + dependencies: + arr-diff: 4.0.0 + array-unique: 0.3.2 + braces: 2.3.2 + define-property: 2.0.2 + extend-shallow: 3.0.2 + extglob: 2.0.4 + fragment-cache: 0.2.1 + kind-of: 6.0.3 + nanomatch: 1.2.13 + object.pick: 1.3.0 + regex-not: 1.0.2 + snapdragon: 0.8.2 + to-regex: 3.0.2 + transitivePeerDependencies: + - supports-color + + micromatch@4.0.7: + dependencies: + braces: 3.0.3 + picomatch: 2.3.1 + + microseconds@0.2.0: {} + + mime-db@1.52.0: {} + + mime-types@2.1.35: + dependencies: + mime-db: 1.52.0 + + mimic-fn@1.2.0: {} + + mimic-fn@2.1.0: {} + + mimic-fn@4.0.0: {} + + mimic-response@1.0.1: {} + + mimic-response@2.1.0: {} + + mimic-response@3.1.0: {} + + mini-css-extract-plugin@2.7.7(webpack@5.92.0(esbuild@0.19.11)): + dependencies: + schema-utils: 4.2.0 + webpack: 5.92.0(esbuild@0.19.11) + + minimalistic-assert@1.0.1: {} + + minimalistic-crypto-utils@1.0.1: {} + + minimatch@3.1.2: + dependencies: + brace-expansion: 1.1.11 + + minimatch@5.1.6: + dependencies: + brace-expansion: 2.0.1 + + minimatch@9.0.3: + dependencies: + brace-expansion: 2.0.1 + + minimist@1.2.8: {} + + minipass@3.3.6: + dependencies: + yallist: 4.0.0 + + minipass@4.2.8: {} + + minipass@5.0.0: {} + + minizlib@2.1.2: + dependencies: + minipass: 3.3.6 + yallist: 4.0.0 + + mixin-deep@1.3.2: + dependencies: + for-in: 1.0.2 + is-extendable: 1.0.1 + + mkdirp-classic@0.5.3: {} + + mkdirp@0.5.6: + dependencies: + minimist: 1.2.8 + + mkdirp@1.0.4: {} + + mrmime@2.0.0: {} + + ms@2.0.0: {} + + ms@2.1.2: {} + + ms@2.1.3: {} + + msw@1.0.1(typescript@4.9.5): + dependencies: + '@mswjs/cookies': 0.2.2 + '@mswjs/interceptors': 0.17.10 + '@open-draft/until': 1.0.3 + '@types/cookie': 0.4.1 + '@types/js-levenshtein': 1.1.3 + chalk: 4.1.1 + chokidar: 3.6.0 + cookie: 0.4.2 + graphql: 16.8.2 + headers-polyfill: 3.3.0 + inquirer: 8.2.6 + is-node-process: 1.2.0 + js-levenshtein: 1.1.6 + node-fetch: 2.7.0 + outvariant: 1.4.2 + path-to-regexp: 6.2.2 + strict-event-emitter: 0.4.6 + type-fest: 2.19.0 + yargs: 17.7.2 + optionalDependencies: + typescript: 4.9.5 + transitivePeerDependencies: + - encoding + - supports-color + + multistream@4.1.0: + dependencies: + once: 1.4.0 + readable-stream: 3.6.2 + + mute-stream@0.0.8: {} + + mz@2.7.0: + dependencies: + any-promise: 1.3.0 + object-assign: 4.1.1 + thenify-all: 1.6.0 + + nan@2.20.0: {} + + nano-time@1.0.0: + dependencies: + big-integer: 1.6.52 + + nanoclone@0.2.1: {} + + nanoid@3.3.7: {} + + nanomatch@1.2.13: + dependencies: + arr-diff: 4.0.0 + array-unique: 0.3.2 + define-property: 2.0.2 + extend-shallow: 3.0.2 + fragment-cache: 0.2.1 + is-windows: 1.0.2 + kind-of: 6.0.3 + object.pick: 1.3.0 + regex-not: 1.0.2 + snapdragon: 0.8.2 + to-regex: 3.0.2 + transitivePeerDependencies: + - supports-color + + napi-build-utils@1.0.2: {} + + negotiator@0.6.3: {} + + neo-async@2.6.2: {} + + no-case@2.3.2: + dependencies: + lower-case: 1.1.4 + + no-case@3.0.4: + dependencies: + lower-case: 2.0.2 + tslib: 2.6.3 + + node-abi@3.65.0: + dependencies: + semver: 7.6.2 + + node-abort-controller@3.1.1: {} + + node-addon-api@6.1.0: {} + + node-fetch@2.7.0: + dependencies: + whatwg-url: 5.0.0 + + node-machine-id@1.1.12: {} + + node-plop@0.26.3: + dependencies: + '@babel/runtime-corejs3': 7.24.7 + '@types/inquirer': 6.5.0 + change-case: 3.1.0 + del: 5.1.0 + globby: 10.0.2 + handlebars: 4.7.8 + inquirer: 7.3.3 + isbinaryfile: 4.0.10 + lodash.get: 4.4.2 + mkdirp: 0.5.6 + resolve: 1.22.8 + + node-releases@2.0.14: {} + + node-schedule@2.1.0: + dependencies: + cron-parser: 3.5.0 + long-timeout: 0.1.1 + sorted-array-functions: 1.3.0 + + nodemailer-fetch@1.6.0: {} + + nodemailer-shared@1.1.0: + dependencies: + nodemailer-fetch: 1.6.0 + + nodemon@3.0.2: + dependencies: + chokidar: 3.6.0 + debug: 4.3.5(supports-color@5.5.0) + ignore-by-default: 1.0.1 + minimatch: 3.1.2 + pstree.remy: 1.1.8 + semver: 7.6.2 + simple-update-notifier: 2.0.0 + supports-color: 5.5.0 + touch: 3.1.1 + undefsafe: 2.0.5 + + noms@0.0.0: + dependencies: + inherits: 2.0.4 + readable-stream: 1.0.34 + + nopt@5.0.0: + dependencies: + abbrev: 1.1.1 + + normalize-package-data@2.5.0: + dependencies: + hosted-git-info: 2.8.9 + resolve: 1.22.8 + semver: 5.7.2 + validate-npm-package-license: 3.0.4 + + normalize-path@3.0.0: {} + + normalize-url@6.1.0: {} + + npm-bundled@1.1.2: + dependencies: + npm-normalize-package-bin: 1.0.1 + + npm-normalize-package-bin@1.0.1: {} + + npm-packlist@2.2.2: + dependencies: + glob: 7.2.3 + ignore-walk: 3.0.4 + npm-bundled: 1.1.2 + npm-normalize-package-bin: 1.0.1 + + npm-run-path@4.0.1: + dependencies: + path-key: 3.1.1 + + npm-run-path@5.3.0: + dependencies: + path-key: 4.0.0 + + npmlog@5.0.1: + dependencies: + are-we-there-yet: 2.0.0 + console-control-strings: 1.1.0 + gauge: 3.0.2 + set-blocking: 2.0.0 + + nth-check@2.1.1: + dependencies: + boolbase: 1.0.0 + + oauth-sign@0.9.0: {} + + object-assign@4.1.1: {} + + object-copy@0.1.0: + dependencies: + copy-descriptor: 0.1.1 + define-property: 0.2.5 + kind-of: 3.2.2 + + object-inspect@1.13.1: {} + + object-keys@1.1.1: {} + + object-visit@1.0.1: + dependencies: + isobject: 3.0.1 + + object.defaults@1.1.0: + dependencies: + array-each: 1.0.1 + array-slice: 1.1.0 + for-own: 1.0.0 + isobject: 3.0.1 + + object.map@1.0.1: + dependencies: + for-own: 1.0.0 + make-iterator: 1.0.1 + + object.pick@1.3.0: + dependencies: + isobject: 3.0.1 + + oblivious-set@1.0.0: {} + + on-finished@2.4.1: + dependencies: + ee-first: 1.1.1 + + once@1.4.0: + dependencies: + wrappy: 1.0.2 + + one-time@1.0.0: + dependencies: + fn.name: 1.1.0 + + onetime@2.0.1: + dependencies: + mimic-fn: 1.2.0 + + onetime@5.1.2: + dependencies: + mimic-fn: 2.1.0 + + onetime@6.0.0: + dependencies: + mimic-fn: 4.0.0 + + only@0.0.2: {} + + open@8.4.0: + dependencies: + define-lazy-prop: 2.0.0 + is-docker: 2.2.1 + is-wsl: 2.2.0 + + open@9.1.0: + dependencies: + default-browser: 4.0.0 + define-lazy-prop: 3.0.0 + is-inside-container: 1.0.0 + is-wsl: 2.2.0 + + opener@1.5.2: {} + + ora@3.4.0: + dependencies: + chalk: 2.4.2 + cli-cursor: 2.1.0 + cli-spinners: 2.9.2 + log-symbols: 2.2.0 + strip-ansi: 5.2.0 + wcwidth: 1.0.1 + + ora@5.4.1: + dependencies: + bl: 4.1.0 + chalk: 4.1.2 + cli-cursor: 3.1.0 + cli-spinners: 2.9.2 + is-interactive: 1.0.0 + is-unicode-supported: 0.1.0 + log-symbols: 4.1.0 + strip-ansi: 6.0.1 + wcwidth: 1.0.1 + + os-paths@7.4.0: + optionalDependencies: + fsevents: 2.3.3 + + os-tmpdir@1.0.2: {} + + outdent@0.8.0: {} + + outvariant@1.4.2: {} + + p-cancelable@2.1.1: {} + + p-finally@1.0.0: {} + + p-is-promise@3.0.0: {} + + p-limit@2.3.0: + dependencies: + p-try: 2.2.0 + + p-limit@3.1.0: + dependencies: + yocto-queue: 0.1.0 + + p-locate@3.0.0: + dependencies: + p-limit: 2.3.0 + + p-locate@4.1.0: + dependencies: + p-limit: 2.3.0 + + p-locate@5.0.0: + dependencies: + p-limit: 3.1.0 + + p-map@3.0.0: + dependencies: + aggregate-error: 3.1.0 + + p-map@4.0.0: + dependencies: + aggregate-error: 3.1.0 + + p-queue@6.6.2: + dependencies: + eventemitter3: 4.0.7 + p-timeout: 3.2.0 + + p-timeout@3.2.0: + dependencies: + p-finally: 1.0.0 + + p-try@2.2.0: {} + + package-json@7.0.0: + dependencies: + got: 11.8.6 + registry-auth-token: 4.2.2 + registry-url: 5.1.0 + semver: 7.6.2 + + param-case@2.1.1: + dependencies: + no-case: 2.3.2 + + param-case@3.0.4: + dependencies: + dot-case: 3.0.4 + tslib: 2.6.3 + + parent-module@1.0.1: + dependencies: + callsites: 3.1.0 + + parse-filepath@1.0.2: + dependencies: + is-absolute: 1.0.0 + map-cache: 0.2.2 + path-root: 0.1.1 + + parse-json@5.2.0: + dependencies: + '@babel/code-frame': 7.24.7 + error-ex: 1.3.2 + json-parse-even-better-errors: 2.3.1 + lines-and-columns: 1.2.4 + + parse-passwd@1.0.0: {} + + parse-path@7.0.0: + dependencies: + protocols: 2.0.1 + + parse-srcset@1.0.2: {} + + parse-url@8.1.0: + dependencies: + parse-path: 7.0.0 + + parseurl@1.3.3: {} + + pascal-case@2.0.1: + dependencies: + camel-case: 3.0.0 + upper-case-first: 1.1.2 + + pascal-case@3.1.2: + dependencies: + no-case: 3.0.4 + tslib: 2.6.3 + + pascalcase@0.1.1: {} + + passport-local@1.0.0: + dependencies: + passport-strategy: 1.0.0 + + passport-strategy@1.0.0: {} + + passport@0.6.0: + dependencies: + passport-strategy: 1.0.0 + pause: 0.0.1 + utils-merge: 1.0.1 + + path-case@2.1.1: + dependencies: + no-case: 2.3.2 + + path-exists@3.0.0: {} + + path-exists@4.0.0: {} + + path-is-absolute@1.0.1: {} + + path-key@3.1.1: {} + + path-key@4.0.0: {} + + path-parse@1.0.7: {} + + path-root-regex@0.1.2: {} + + path-root@0.1.1: + dependencies: + path-root-regex: 0.1.2 + + path-to-regexp@1.8.0: + dependencies: + isarray: 0.0.1 + + path-to-regexp@6.2.2: {} + + path-type@4.0.0: {} + + pause@0.0.1: {} + + pg-cloudflare@1.1.1: + optional: true + + pg-connection-string@2.6.1: {} + + pg-connection-string@2.6.4: {} + + pg-int8@1.0.1: {} + + pg-pool@3.6.2(pg@8.12.0): + dependencies: + pg: 8.12.0 + + pg-protocol@1.6.1: {} + + pg-types@2.2.0: + dependencies: + pg-int8: 1.0.1 + postgres-array: 2.0.0 + postgres-bytea: 1.0.0 + postgres-date: 1.0.7 + postgres-interval: 1.2.0 + + pg@8.12.0: + dependencies: + pg-connection-string: 2.6.4 + pg-pool: 3.6.2(pg@8.12.0) + pg-protocol: 1.6.1 + pg-types: 2.2.0 + pgpass: 1.0.5 + optionalDependencies: + pg-cloudflare: 1.1.1 + + pgpass@1.0.5: + dependencies: + split2: 4.2.0 + + picocolors@1.0.1: {} + + picomatch@2.3.1: {} + + pkg-up@3.1.0: + dependencies: + find-up: 3.0.0 + + plop@2.7.6: + dependencies: + '@types/liftoff': 2.5.1 + chalk: 1.1.3 + interpret: 1.4.0 + liftoff: 2.5.0 + minimist: 1.2.8 + node-plop: 0.26.3 + ora: 3.4.0 + v8flags: 2.1.1 + transitivePeerDependencies: + - supports-color + + pluralize@8.0.0: {} + + pony-cause@2.1.11: {} + + posix-character-classes@0.1.1: {} + + possible-typed-array-names@1.0.0: {} + + postcss-modules-extract-imports@3.1.0(postcss@8.4.38): + dependencies: + postcss: 8.4.38 + + postcss-modules-local-by-default@4.0.5(postcss@8.4.38): + dependencies: + icss-utils: 5.1.0(postcss@8.4.38) + postcss: 8.4.38 + postcss-selector-parser: 6.1.0 + postcss-value-parser: 4.2.0 + + postcss-modules-scope@3.2.0(postcss@8.4.38): + dependencies: + postcss: 8.4.38 + postcss-selector-parser: 6.1.0 + + postcss-modules-values@4.0.0(postcss@8.4.38): + dependencies: + icss-utils: 5.1.0(postcss@8.4.38) + postcss: 8.4.38 + + postcss-selector-parser@6.1.0: + dependencies: + cssesc: 3.0.0 + util-deprecate: 1.0.2 + + postcss-value-parser@4.2.0: {} + + postcss@8.4.38: + dependencies: + nanoid: 3.3.7 + picocolors: 1.0.1 + source-map-js: 1.2.0 + + postgres-array@2.0.0: {} + + postgres-bytea@1.0.0: {} + + postgres-date@1.0.7: {} + + postgres-interval@1.2.0: + dependencies: + xtend: 4.0.2 + + prebuild-install@7.1.2: + dependencies: + detect-libc: 2.0.3 + expand-template: 2.0.3 + github-from-package: 0.0.0 + minimist: 1.2.8 + mkdirp-classic: 0.5.3 + napi-build-utils: 1.0.2 + node-abi: 3.65.0 + pump: 3.0.0 + rc: 1.2.8 + simple-get: 4.0.1 + tar-fs: 2.1.1 + tunnel-agent: 0.6.0 + + prettier-plugin-packagejson@2.4.5(prettier@2.8.4): + dependencies: + sort-package-json: 2.5.1 + synckit: 0.8.5 + optionalDependencies: + prettier: 2.8.4 + + prettier@2.8.4: {} + + pretty-error@4.0.0: + dependencies: + lodash: 4.17.21 + renderkid: 3.0.0 + + pretty-format@27.5.1: + dependencies: + ansi-regex: 5.0.1 + ansi-styles: 5.2.0 + react-is: 17.0.2 + + process-nextick-args@2.0.1: {} + + progress-stream@2.0.0: + dependencies: + speedometer: 1.0.0 + through2: 2.0.5 + + prompts@2.4.2: + dependencies: + kleur: 3.0.3 + sisteransi: 1.0.5 + + prop-types@15.8.1: + dependencies: + loose-envify: 1.4.0 + object-assign: 4.1.1 + react-is: 16.13.1 + + property-expr@2.0.6: {} + + proto-list@1.2.4: {} + + protocols@2.0.1: {} + + proxy-from-env@1.1.0: {} + + pstree.remy@1.1.8: {} + + pump@3.0.0: + dependencies: + end-of-stream: 1.4.4 + once: 1.4.0 + + punycode@1.3.2: {} + + punycode@2.3.1: {} + + purest@4.0.2: + dependencies: + '@simov/deep-extend': 1.0.0 + qs: 6.12.1 + request-compose: 2.1.6 + request-multipart: 1.0.0 + request-oauth: 1.0.1 + + q@1.5.1: {} + + qs@6.11.1: + dependencies: + side-channel: 1.0.6 + + qs@6.12.1: + dependencies: + side-channel: 1.0.6 + + querystring@0.2.0: {} + + queue-microtask@1.2.3: {} + + queue-tick@1.0.1: {} + + quick-lru@5.1.1: {} + + randombytes@2.1.0: + dependencies: + safe-buffer: 5.2.1 + + range-parser@1.2.1: {} + + raw-body@2.5.2: + dependencies: + bytes: 3.1.2 + http-errors: 2.0.0 + iconv-lite: 0.4.24 + unpipe: 1.0.0 + + rc@1.2.8: + dependencies: + deep-extend: 0.6.0 + ini: 1.3.8 + minimist: 1.2.8 + strip-json-comments: 2.0.1 + + react-dnd-html5-backend@16.0.1: + dependencies: + dnd-core: 16.0.1 + + react-dnd@16.0.1(@types/hoist-non-react-statics@3.3.5)(@types/node@20.14.5)(react@18.3.1): + dependencies: + '@react-dnd/invariant': 4.0.2 + '@react-dnd/shallowequal': 4.0.2 + dnd-core: 16.0.1 + fast-deep-equal: 3.1.3 + hoist-non-react-statics: 3.3.2 + react: 18.3.1 + optionalDependencies: + '@types/hoist-non-react-statics': 3.3.5 + '@types/node': 20.14.5 + + react-dom@18.3.1(react@18.3.1): + dependencies: + loose-envify: 1.4.0 + react: 18.3.1 + scheduler: 0.23.2 + + react-error-boundary@3.1.4(react@18.3.1): + dependencies: + '@babel/runtime': 7.24.7 + react: 18.3.1 + + react-fast-compare@2.0.4: {} + + react-fast-compare@3.2.2: {} + + react-helmet@6.1.0(react@18.3.1): + dependencies: + object-assign: 4.1.1 + prop-types: 15.8.1 + react: 18.3.1 + react-fast-compare: 3.2.2 + react-side-effect: 2.1.2(react@18.3.1) + + react-intl@6.3.2(react@18.3.1)(typescript@4.9.5): + dependencies: + '@formatjs/ecma402-abstract': 1.14.3 + '@formatjs/icu-messageformat-parser': 2.3.0 + '@formatjs/intl': 2.6.9(typescript@4.9.5) + '@formatjs/intl-displaynames': 6.2.6 + '@formatjs/intl-listformat': 7.1.9 + '@types/hoist-non-react-statics': 3.3.5 + '@types/react': 18.3.3 + hoist-non-react-statics: 3.3.2 + intl-messageformat: 10.3.3 + react: 18.3.1 + tslib: 2.6.3 + optionalDependencies: + typescript: 4.9.5 + + react-intl@6.4.1(react@18.3.1)(typescript@4.9.5): + dependencies: + '@formatjs/ecma402-abstract': 1.14.3 + '@formatjs/icu-messageformat-parser': 2.3.1 + '@formatjs/intl': 2.7.1(typescript@4.9.5) + '@formatjs/intl-displaynames': 6.3.1 + '@formatjs/intl-listformat': 7.2.1 + '@types/hoist-non-react-statics': 3.3.5 + '@types/react': 18.3.3 + hoist-non-react-statics: 3.3.2 + intl-messageformat: 10.3.4 + react: 18.3.1 + tslib: 2.6.3 + optionalDependencies: + typescript: 4.9.5 + + react-intl@6.4.1(react@18.3.1)(typescript@5.2.2): + dependencies: + '@formatjs/ecma402-abstract': 1.14.3 + '@formatjs/icu-messageformat-parser': 2.3.1 + '@formatjs/intl': 2.7.1(typescript@5.2.2) + '@formatjs/intl-displaynames': 6.3.1 + '@formatjs/intl-listformat': 7.2.1 + '@types/hoist-non-react-statics': 3.3.5 + '@types/react': 18.3.3 + hoist-non-react-statics: 3.3.2 + intl-messageformat: 10.3.4 + react: 18.3.1 + tslib: 2.6.3 + optionalDependencies: + typescript: 5.2.2 + + react-is@16.13.1: {} + + react-is@17.0.2: {} + + react-is@18.3.1: {} + + react-query@3.24.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + dependencies: + '@babel/runtime': 7.24.7 + broadcast-channel: 3.7.0 + match-sorter: 6.3.4 + react: 18.3.1 + optionalDependencies: + react-dom: 18.3.1(react@18.3.1) + + react-query@3.39.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + dependencies: + '@babel/runtime': 7.24.7 + broadcast-channel: 3.7.0 + match-sorter: 6.3.4 + react: 18.3.1 + optionalDependencies: + react-dom: 18.3.1(react@18.3.1) + + react-redux@8.0.5(@types/react-dom@18.3.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(redux@4.2.1): + dependencies: + '@babel/runtime': 7.24.7 + '@types/hoist-non-react-statics': 3.3.5 + '@types/use-sync-external-store': 0.0.3 + hoist-non-react-statics: 3.3.2 + react: 18.3.1 + react-is: 18.3.1 + use-sync-external-store: 1.2.2(react@18.3.1) + optionalDependencies: + '@types/react-dom': 18.3.0 + react-dom: 18.3.1(react@18.3.1) + redux: 4.2.1 + + react-redux@8.1.1(@types/react-dom@18.3.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(redux@4.2.1): + dependencies: + '@babel/runtime': 7.24.7 + '@types/hoist-non-react-statics': 3.3.5 + '@types/use-sync-external-store': 0.0.3 + hoist-non-react-statics: 3.3.2 + react: 18.3.1 + react-is: 18.3.1 + use-sync-external-store: 1.2.2(react@18.3.1) + optionalDependencies: + '@types/react-dom': 18.3.0 + react-dom: 18.3.1(react@18.3.1) + redux: 4.2.1 + + react-refresh@0.14.0: {} + + react-remove-scroll-bar@2.3.6(react@18.3.1): + dependencies: + react: 18.3.1 + react-style-singleton: 2.2.1(react@18.3.1) + tslib: 2.6.3 + + react-remove-scroll@2.5.10(react@18.3.1): + dependencies: + react: 18.3.1 + react-remove-scroll-bar: 2.3.6(react@18.3.1) + react-style-singleton: 2.2.1(react@18.3.1) + tslib: 2.6.3 + use-callback-ref: 1.3.2(react@18.3.1) + use-sidecar: 1.1.2(react@18.3.1) + + react-remove-scroll@2.5.5(react@18.3.1): + dependencies: + react: 18.3.1 + react-remove-scroll-bar: 2.3.6(react@18.3.1) + react-style-singleton: 2.2.1(react@18.3.1) + tslib: 2.6.3 + use-callback-ref: 1.3.2(react@18.3.1) + use-sidecar: 1.1.2(react@18.3.1) + + react-router-dom@5.3.4(react@18.3.1): + dependencies: + '@babel/runtime': 7.24.7 + history: 4.10.1 + loose-envify: 1.4.0 + prop-types: 15.8.1 + react: 18.3.1 + react-router: 5.3.4(react@18.3.1) + tiny-invariant: 1.3.3 + tiny-warning: 1.0.3 + + react-router@5.3.4(react@18.3.1): + dependencies: + '@babel/runtime': 7.24.7 + history: 4.10.1 + hoist-non-react-statics: 3.3.2 + loose-envify: 1.4.0 + path-to-regexp: 1.8.0 + prop-types: 15.8.1 + react: 18.3.1 + react-is: 16.13.1 + tiny-invariant: 1.3.3 + tiny-warning: 1.0.3 + + react-select@5.7.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + dependencies: + '@babel/runtime': 7.24.7 + '@emotion/cache': 11.11.0 + '@emotion/react': 11.11.4(react@18.3.1) + '@floating-ui/dom': 1.6.5 + '@types/react-transition-group': 4.4.10 + memoize-one: 6.0.0 + prop-types: 15.8.1 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + react-transition-group: 4.4.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + use-isomorphic-layout-effect: 1.1.2(react@18.3.1) + transitivePeerDependencies: + - '@types/react' + - supports-color + + react-shallow-renderer@16.15.0(react@18.3.1): + dependencies: + object-assign: 4.1.1 + react: 18.3.1 + react-is: 18.3.1 + + react-side-effect@2.1.2(react@18.3.1): + dependencies: + react: 18.3.1 + + react-style-singleton@2.2.1(react@18.3.1): + dependencies: + get-nonce: 1.0.1 + invariant: 2.2.4 + react: 18.3.1 + tslib: 2.6.3 + + react-test-renderer@18.3.1(react@18.3.1): + dependencies: + react: 18.3.1 + react-is: 18.3.1 + react-shallow-renderer: 16.15.0(react@18.3.1) + scheduler: 0.23.2 + + react-transition-group@4.4.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + dependencies: + '@babel/runtime': 7.24.7 + dom-helpers: 5.2.1 + loose-envify: 1.4.0 + prop-types: 15.8.1 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + + react-window@1.8.8(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + dependencies: + '@babel/runtime': 7.24.7 + memoize-one: 5.2.1 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + + react@18.3.1: + dependencies: + loose-envify: 1.4.0 + + read-pkg-up@7.0.1: + dependencies: + find-up: 4.1.0 + read-pkg: 5.2.0 + type-fest: 0.8.1 + + read-pkg@5.2.0: + dependencies: + '@types/normalize-package-data': 2.4.4 + normalize-package-data: 2.5.0 + parse-json: 5.2.0 + type-fest: 0.6.0 + + readable-stream@1.0.34: + dependencies: + core-util-is: 1.0.3 + inherits: 2.0.4 + isarray: 0.0.1 + string_decoder: 0.10.31 + + readable-stream@2.3.8: + dependencies: + core-util-is: 1.0.3 + inherits: 2.0.4 + isarray: 1.0.0 + process-nextick-args: 2.0.1 + safe-buffer: 5.1.2 + string_decoder: 1.1.1 + util-deprecate: 1.0.2 + + readable-stream@3.6.2: + dependencies: + inherits: 2.0.4 + string_decoder: 1.3.0 + util-deprecate: 1.0.2 + + readdirp@3.6.0: + dependencies: + picomatch: 2.3.1 + + rechoir@0.6.2: + dependencies: + resolve: 1.22.8 + + rechoir@0.8.0: + dependencies: + resolve: 1.22.8 + + redux-thunk@2.4.2(redux@4.2.1): + dependencies: + redux: 4.2.1 + + redux@4.2.1: + dependencies: + '@babel/runtime': 7.24.7 + + regenerator-runtime@0.14.1: {} + + regex-not@1.0.2: + dependencies: + extend-shallow: 3.0.2 + safe-regex: 1.1.0 + + registry-auth-token@4.2.2: + dependencies: + rc: 1.2.8 + + registry-auth-token@5.0.2: + dependencies: + '@pnpm/npm-conf': 2.2.2 + + registry-url@5.1.0: + dependencies: + rc: 1.2.8 + + relateurl@0.2.7: {} + + remove-accents@0.4.2: {} + + remove-accents@0.5.0: {} + + renderkid@3.0.0: + dependencies: + css-select: 4.3.0 + dom-converter: 0.2.0 + htmlparser2: 6.1.0 + lodash: 4.17.21 + strip-ansi: 6.0.1 + + repeat-element@1.1.4: {} + + repeat-string@1.6.1: {} + + request-compose@2.1.6: {} + + request-ip@3.3.0: {} + + request-multipart@1.0.0: + dependencies: + bl: 4.1.0 + isstream: 0.1.2 + mime-types: 2.1.35 + multistream: 4.1.0 + uuid: 8.3.2 + + request-oauth@1.0.1: + dependencies: + oauth-sign: 0.9.0 + qs: 6.12.1 + uuid: 8.3.2 + + require-directory@2.1.1: {} + + require-from-string@2.0.2: {} + + reselect@4.1.8: {} + + resolve-alpn@1.2.1: {} + + resolve-cwd@3.0.0: + dependencies: + resolve-from: 5.0.0 + + resolve-dir@1.0.1: + dependencies: + expand-tilde: 2.0.2 + global-modules: 1.0.0 + + resolve-from@4.0.0: {} + + resolve-from@5.0.0: {} + + resolve-path@1.4.0: + dependencies: + http-errors: 1.6.3 + path-is-absolute: 1.0.1 + + resolve-pathname@3.0.0: {} + + resolve-url@0.2.1: {} + + resolve@1.22.8: + dependencies: + is-core-module: 2.13.1 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + + responselike@2.0.1: + dependencies: + lowercase-keys: 2.0.0 + + restore-cursor@2.0.0: + dependencies: + onetime: 2.0.1 + signal-exit: 3.0.7 + + restore-cursor@3.1.0: + dependencies: + onetime: 5.1.2 + signal-exit: 3.0.7 + + ret@0.1.15: {} + + reusify@1.0.4: {} + + rimraf@2.7.1: + dependencies: + glob: 7.2.3 + + rimraf@3.0.2: + dependencies: + glob: 7.2.3 + + rollup@4.18.0: + dependencies: + '@types/estree': 1.0.5 + optionalDependencies: + '@rollup/rollup-android-arm-eabi': 4.18.0 + '@rollup/rollup-android-arm64': 4.18.0 + '@rollup/rollup-darwin-arm64': 4.18.0 + '@rollup/rollup-darwin-x64': 4.18.0 + '@rollup/rollup-linux-arm-gnueabihf': 4.18.0 + '@rollup/rollup-linux-arm-musleabihf': 4.18.0 + '@rollup/rollup-linux-arm64-gnu': 4.18.0 + '@rollup/rollup-linux-arm64-musl': 4.18.0 + '@rollup/rollup-linux-powerpc64le-gnu': 4.18.0 + '@rollup/rollup-linux-riscv64-gnu': 4.18.0 + '@rollup/rollup-linux-s390x-gnu': 4.18.0 + '@rollup/rollup-linux-x64-gnu': 4.18.0 + '@rollup/rollup-linux-x64-musl': 4.18.0 + '@rollup/rollup-win32-arm64-msvc': 4.18.0 + '@rollup/rollup-win32-ia32-msvc': 4.18.0 + '@rollup/rollup-win32-x64-msvc': 4.18.0 + fsevents: 2.3.3 + + run-applescript@5.0.0: + dependencies: + execa: 5.1.1 + + run-async@2.4.1: {} + + run-parallel@1.2.0: + dependencies: + queue-microtask: 1.2.3 + + rxjs@6.6.7: + dependencies: + tslib: 1.14.1 + + rxjs@7.8.1: + dependencies: + tslib: 2.6.3 + + safe-buffer@5.1.2: {} + + safe-buffer@5.2.1: {} + + safe-regex@1.1.0: + dependencies: + ret: 0.1.15 + + safe-stable-stringify@2.4.3: {} + + safer-buffer@2.1.2: {} + + sanitize-html@2.13.0: + dependencies: + deepmerge: 4.3.1 + escape-string-regexp: 4.0.0 + htmlparser2: 8.0.2 + is-plain-object: 5.0.0 + parse-srcset: 1.0.2 + postcss: 8.4.38 + + sax@1.2.1: {} + + scheduler@0.23.2: + dependencies: + loose-envify: 1.4.0 + + schema-utils@3.3.0: + dependencies: + '@types/json-schema': 7.0.15 + ajv: 6.12.6 + ajv-keywords: 3.5.2(ajv@6.12.6) + + schema-utils@4.2.0: + dependencies: + '@types/json-schema': 7.0.15 + ajv: 8.16.0 + ajv-formats: 2.1.1(ajv@8.16.0) + ajv-keywords: 5.1.0(ajv@8.16.0) + + scroll-into-view-if-needed@2.2.31: + dependencies: + compute-scroll-into-view: 1.0.20 + + semver@5.7.2: {} + + semver@6.3.1: {} + + semver@7.5.4: + dependencies: + lru-cache: 6.0.0 + + semver@7.6.2: {} + + sendmail@1.6.1: + dependencies: + dkim-signer: 0.2.2 + mailcomposer: 3.12.0 + + sentence-case@2.1.1: + dependencies: + no-case: 2.3.2 + upper-case-first: 1.1.2 + + serialize-javascript@6.0.2: + dependencies: + randombytes: 2.1.0 + + set-blocking@2.0.0: {} + + set-cookie-parser@2.6.0: {} + + set-function-length@1.2.2: + dependencies: + define-data-property: 1.1.4 + es-errors: 1.3.0 + function-bind: 1.1.2 + get-intrinsic: 1.2.4 + gopd: 1.0.1 + has-property-descriptors: 1.0.2 + + set-value@2.0.1: + dependencies: + extend-shallow: 2.0.1 + is-extendable: 0.1.1 + is-plain-object: 2.0.4 + split-string: 3.1.0 + + setprototypeof@1.1.0: {} + + setprototypeof@1.2.0: {} + + shallowequal@1.1.0: {} + + sharp@0.32.6: + dependencies: + color: 4.2.3 + detect-libc: 2.0.3 + node-addon-api: 6.1.0 + prebuild-install: 7.1.2 + semver: 7.6.2 + simple-get: 4.0.1 + tar-fs: 3.0.6 + tunnel-agent: 0.6.0 + + shebang-command@2.0.0: + dependencies: + shebang-regex: 3.0.0 + + shebang-regex@3.0.0: {} + + shell-quote@1.8.1: {} + + side-channel@1.0.6: + dependencies: + call-bind: 1.0.7 + es-errors: 1.3.0 + get-intrinsic: 1.2.4 + object-inspect: 1.13.1 + + sift@16.0.1: {} + + signal-exit@3.0.7: {} + + simple-concat@1.0.1: {} + + simple-get@3.1.1: + dependencies: + decompress-response: 4.2.1 + once: 1.4.0 + simple-concat: 1.0.1 + + simple-get@4.0.1: + dependencies: + decompress-response: 6.0.0 + once: 1.4.0 + simple-concat: 1.0.1 + + simple-swizzle@0.2.2: + dependencies: + is-arrayish: 0.3.2 + + simple-update-notifier@2.0.0: + dependencies: + semver: 7.6.2 + + sirv@2.0.4: + dependencies: + '@polka/url': 1.0.0-next.25 + mrmime: 2.0.0 + totalist: 3.0.1 + + sisteransi@1.0.5: {} + + slash@3.0.0: {} + + slash@4.0.0: {} + + slate-history@0.93.0(slate@0.94.1): + dependencies: + is-plain-object: 5.0.0 + slate: 0.94.1 + + slate-react@0.98.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.94.1): + dependencies: + '@juggle/resize-observer': 3.4.0 + '@types/is-hotkey': 0.1.10 + '@types/lodash': 4.17.5 + direction: 1.0.4 + is-hotkey: 0.1.8 + is-plain-object: 5.0.0 + lodash: 4.17.21 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + scroll-into-view-if-needed: 2.2.31 + slate: 0.94.1 + tiny-invariant: 1.0.6 + + slate@0.94.1: + dependencies: + immer: 9.0.19 + is-plain-object: 5.0.0 + tiny-warning: 1.0.3 + + snake-case@2.1.0: + dependencies: + no-case: 2.3.2 + + snapdragon-node@2.1.1: + dependencies: + define-property: 1.0.0 + isobject: 3.0.1 + snapdragon-util: 3.0.1 + + snapdragon-util@3.0.1: + dependencies: + kind-of: 3.2.2 + + snapdragon@0.8.2: + dependencies: + base: 0.11.2 + debug: 2.6.9 + define-property: 0.2.5 + extend-shallow: 2.0.1 + map-cache: 0.2.2 + source-map: 0.5.7 + source-map-resolve: 0.5.3 + use: 3.1.1 + transitivePeerDependencies: + - supports-color + + sort-object-keys@1.1.3: {} + + sort-package-json@2.5.1: + dependencies: + detect-indent: 7.0.1 + detect-newline: 4.0.1 + get-stdin: 9.0.0 + git-hooks-list: 3.1.0 + globby: 13.2.2 + is-plain-obj: 4.1.0 + sort-object-keys: 1.1.3 + + sorted-array-functions@1.3.0: {} + + source-list-map@2.0.1: {} + + source-map-js@1.2.0: {} + + source-map-resolve@0.5.3: + dependencies: + atob: 2.1.2 + decode-uri-component: 0.2.2 + resolve-url: 0.2.1 + source-map-url: 0.4.1 + urix: 0.1.0 + + source-map-support@0.5.21: + dependencies: + buffer-from: 1.1.2 + source-map: 0.6.1 + + source-map-url@0.4.1: {} + + source-map@0.5.7: {} + + source-map@0.6.1: {} + + source-map@0.7.4: {} + + spawn-command@0.0.2: {} + + spdx-correct@3.2.0: + dependencies: + spdx-expression-parse: 3.0.1 + spdx-license-ids: 3.0.18 + + spdx-exceptions@2.5.0: {} + + spdx-expression-parse@3.0.1: + dependencies: + spdx-exceptions: 2.5.0 + spdx-license-ids: 3.0.18 + + spdx-license-ids@3.0.18: {} + + speedometer@1.0.0: {} + + split-string@3.1.0: + dependencies: + extend-shallow: 3.0.2 + + split2@4.2.0: {} + + sprintf-js@1.0.3: {} + + stack-trace@0.0.10: {} + + stackframe@1.3.4: {} + + static-extend@0.1.2: + dependencies: + define-property: 0.2.5 + object-copy: 0.1.0 + + statuses@1.5.0: {} + + statuses@2.0.1: {} + + strapi-plugin-fuzzy-search@2.2.1(@strapi/strapi@4.25.0(@babel/runtime@7.24.7)(@codemirror/autocomplete@6.16.2(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.1)(@lezer/common@1.2.1))(@codemirror/language@6.10.2)(@codemirror/lint@6.8.0)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.28.1)(@swc/helpers@0.5.11)(@types/hoist-non-react-statics@3.3.5)(@types/node@20.14.5)(@types/react-dom@18.3.0)(better-sqlite3@8.0.1)(codemirror@6.0.1(@lezer/common@1.2.1))(pg@8.12.0)(react-dom@18.3.1(react@18.3.1))(react-router-dom@5.3.4(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1))(terser@5.31.1)(type-fest@2.19.0))(@strapi/utils@4.25.0)(yup@0.32.11): + dependencies: + '@strapi/strapi': 4.25.0(@babel/runtime@7.24.7)(@codemirror/autocomplete@6.16.2(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.1)(@lezer/common@1.2.1))(@codemirror/language@6.10.2)(@codemirror/lint@6.8.0)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.28.1)(@swc/helpers@0.5.11)(@types/hoist-non-react-statics@3.3.5)(@types/node@20.14.5)(@types/react-dom@18.3.0)(better-sqlite3@8.0.1)(codemirror@6.0.1(@lezer/common@1.2.1))(pg@8.12.0)(react-dom@18.3.1(react@18.3.1))(react-router-dom@5.3.4(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1))(terser@5.31.1)(type-fest@2.19.0) + '@strapi/utils': 4.25.0 + fuzzysort: 2.0.4 + transliteration: 2.3.5 + yup: 0.32.11 + + stream-chain@2.2.5: {} + + stream-json@1.8.0: + dependencies: + stream-chain: 2.2.5 + + stream-slice@0.1.2: {} + + streamx@2.18.0: + dependencies: + fast-fifo: 1.3.2 + queue-tick: 1.0.1 + text-decoder: 1.1.0 + optionalDependencies: + bare-events: 2.4.2 + + strict-event-emitter@0.2.8: + dependencies: + events: 3.3.0 + + strict-event-emitter@0.4.6: {} + + string-argv@0.3.2: {} + + string-width@4.2.3: + dependencies: + emoji-regex: 8.0.0 + is-fullwidth-code-point: 3.0.0 + strip-ansi: 6.0.1 + + string_decoder@0.10.31: {} + + string_decoder@1.1.1: + dependencies: + safe-buffer: 5.1.2 + + string_decoder@1.3.0: + dependencies: + safe-buffer: 5.2.1 + + strip-ansi@3.0.1: + dependencies: + ansi-regex: 2.1.1 + + strip-ansi@5.2.0: + dependencies: + ansi-regex: 4.1.1 + + strip-ansi@6.0.1: + dependencies: + ansi-regex: 5.0.1 + + strip-final-newline@2.0.0: {} + + strip-final-newline@3.0.0: {} + + strip-json-comments@2.0.1: {} + + strnum@1.0.5: {} + + style-loader@3.3.4(webpack@5.92.0(esbuild@0.19.11)): + dependencies: + webpack: 5.92.0(esbuild@0.19.11) + + style-mod@4.1.2: {} + + styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1): + dependencies: + '@babel/helper-module-imports': 7.24.7(supports-color@5.5.0) + '@babel/traverse': 7.24.7(supports-color@5.5.0) + '@emotion/is-prop-valid': 0.8.8 + '@emotion/stylis': 0.8.5 + '@emotion/unitless': 0.7.5 + babel-plugin-styled-components: 2.1.4(@babel/core@7.24.7)(styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1))(supports-color@5.5.0) + css-to-react-native: 3.2.0 + hoist-non-react-statics: 3.3.2 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + react-is: 18.3.1 + shallowequal: 1.1.0 + supports-color: 5.5.0 + transitivePeerDependencies: + - '@babel/core' + + stylis@4.2.0: {} + + supports-color@2.0.0: {} + + supports-color@5.5.0: + dependencies: + has-flag: 3.0.0 + + supports-color@7.2.0: + dependencies: + has-flag: 4.0.0 + + supports-color@8.1.1: + dependencies: + has-flag: 4.0.0 + + supports-preserve-symlinks-flag@1.0.0: {} + + swap-case@1.1.2: + dependencies: + lower-case: 1.1.4 + upper-case: 1.1.3 + + synckit@0.8.5: + dependencies: + '@pkgr/utils': 2.4.2 + tslib: 2.6.3 + + tapable@2.2.1: {} + + tar-fs@2.1.1: + dependencies: + chownr: 1.1.4 + mkdirp-classic: 0.5.3 + pump: 3.0.0 + tar-stream: 2.2.0 + + tar-fs@3.0.6: + dependencies: + pump: 3.0.0 + tar-stream: 3.1.7 + optionalDependencies: + bare-fs: 2.3.1 + bare-path: 2.1.3 + + tar-stream@2.2.0: + dependencies: + bl: 4.1.0 + end-of-stream: 1.4.4 + fs-constants: 1.0.0 + inherits: 2.0.4 + readable-stream: 3.6.2 + + tar-stream@3.1.7: + dependencies: + b4a: 1.6.6 + fast-fifo: 1.3.2 + streamx: 2.18.0 + + tar@6.1.13: + dependencies: + chownr: 2.0.0 + fs-minipass: 2.1.0 + minipass: 4.2.8 + minizlib: 2.1.2 + mkdirp: 1.0.4 + yallist: 4.0.0 + + tar@6.2.1: + dependencies: + chownr: 2.0.0 + fs-minipass: 2.1.0 + minipass: 5.0.0 + minizlib: 2.1.2 + mkdirp: 1.0.4 + yallist: 4.0.0 + + tarn@3.0.2: {} + + terser-webpack-plugin@5.3.10(esbuild@0.19.11)(webpack@5.92.0(esbuild@0.19.11)): + dependencies: + '@jridgewell/trace-mapping': 0.3.25 + jest-worker: 27.5.1 + schema-utils: 3.3.0 + serialize-javascript: 6.0.2 + terser: 5.31.1 + webpack: 5.92.0(esbuild@0.19.11) + optionalDependencies: + esbuild: 0.19.11 + + terser@5.31.1: + dependencies: + '@jridgewell/source-map': 0.3.6 + acorn: 8.12.0 + commander: 2.20.3 + source-map-support: 0.5.21 + + text-decoder@1.1.0: + dependencies: + b4a: 1.6.6 + + text-hex@1.0.0: {} + + thenify-all@1.6.0: + dependencies: + thenify: 3.3.1 + + thenify@3.3.1: + dependencies: + any-promise: 1.3.0 + + through2@2.0.5: + dependencies: + readable-stream: 2.3.8 + xtend: 4.0.2 + + through@2.3.8: {} + + tildify@2.0.0: {} + + tiny-invariant@1.0.6: {} + + tiny-invariant@1.3.3: {} + + tiny-warning@1.0.3: {} + + title-case@2.1.1: + dependencies: + no-case: 2.3.2 + upper-case: 1.1.3 + + titleize@3.0.0: {} + + tmp@0.0.33: + dependencies: + os-tmpdir: 1.0.2 + + to-fast-properties@2.0.0: {} + + to-object-path@0.3.0: + dependencies: + kind-of: 3.2.2 + + to-regex-range@2.1.1: + dependencies: + is-number: 3.0.0 + repeat-string: 1.6.1 + + to-regex-range@5.0.1: + dependencies: + is-number: 7.0.0 + + to-regex@3.0.2: + dependencies: + define-property: 2.0.2 + extend-shallow: 3.0.2 + regex-not: 1.0.2 + safe-regex: 1.1.0 + + toidentifier@1.0.1: {} + + toposort@2.0.2: {} + + totalist@3.0.1: {} + + touch@3.1.1: {} + + tr46@0.0.3: {} + + transliteration@2.3.5: + dependencies: + yargs: 17.7.2 + + tree-kill@1.2.2: {} + + triple-beam@1.4.1: {} + + tslib@1.14.1: {} + + tslib@2.6.3: {} + + tsscmp@1.0.6: {} + + tunnel-agent@0.6.0: + dependencies: + safe-buffer: 5.2.1 + + type-fest@0.20.2: {} + + type-fest@0.21.3: {} + + type-fest@0.6.0: {} + + type-fest@0.8.1: {} + + type-fest@2.19.0: {} + + type-is@1.6.18: + dependencies: + media-typer: 0.3.0 + mime-types: 2.1.35 + + typedarray-to-buffer@3.1.5: + dependencies: + is-typedarray: 1.0.0 + + typescript@4.9.5: {} + + typescript@5.2.2: {} + + uc.micro@1.0.6: {} + + uglify-js@3.18.0: + optional: true + + umzug@3.2.1(@types/node@20.14.5): + dependencies: + '@rushstack/ts-command-line': 4.22.0(@types/node@20.14.5) + emittery: 0.12.1 + fs-jetpack: 4.3.1 + glob: 8.1.0 + pony-cause: 2.1.11 + type-fest: 2.19.0 + transitivePeerDependencies: + - '@types/node' + + unc-path-regex@0.1.2: {} + + undefsafe@2.0.5: {} + + undici-types@5.26.5: {} + + union-value@1.0.1: + dependencies: + arr-union: 3.1.0 + get-value: 2.0.6 + is-extendable: 0.1.1 + set-value: 2.0.1 + + unique-string@2.0.0: + dependencies: + crypto-random-string: 2.0.0 + + universalify@0.1.2: {} + + universalify@2.0.1: {} + + unload@2.2.0: + dependencies: + '@babel/runtime': 7.24.7 + detect-node: 2.1.0 + + unpipe@1.0.0: {} + + unset-value@1.0.0: + dependencies: + has-value: 0.3.1 + isobject: 3.0.1 + + untildify@4.0.0: {} + + update-browserslist-db@1.0.16(browserslist@4.23.1): + dependencies: + browserslist: 4.23.1 + escalade: 3.1.2 + picocolors: 1.0.1 + + upper-case-first@1.1.2: + dependencies: + upper-case: 1.1.3 + + upper-case@1.1.3: {} + + uri-js@4.4.1: + dependencies: + punycode: 2.3.1 + + urix@0.1.0: {} + + url-join@4.0.1: {} + + url@0.10.3: + dependencies: + punycode: 1.3.2 + querystring: 0.2.0 + + use-callback-ref@1.3.2(react@18.3.1): + dependencies: + react: 18.3.1 + tslib: 2.6.3 + + use-isomorphic-layout-effect@1.1.2(react@18.3.1): + dependencies: + react: 18.3.1 + + use-sidecar@1.1.2(react@18.3.1): + dependencies: + detect-node-es: 1.1.0 + react: 18.3.1 + tslib: 2.6.3 + + use-sync-external-store@1.2.2(react@18.3.1): + dependencies: + react: 18.3.1 + + use@3.1.1: {} + + user-home@1.1.1: {} + + util-deprecate@1.0.2: {} + + util@0.12.5: + dependencies: + inherits: 2.0.4 + is-arguments: 1.1.1 + is-generator-function: 1.0.10 + is-typed-array: 1.1.13 + which-typed-array: 1.1.15 + + utila@0.4.0: {} + + utils-merge@1.0.1: {} + + uuid@8.0.0: {} + + uuid@8.3.2: {} + + uuid@9.0.1: {} + + v8flags@2.1.1: + dependencies: + user-home: 1.1.1 + + validate-npm-package-license@3.0.4: + dependencies: + spdx-correct: 3.2.0 + spdx-expression-parse: 3.0.1 + + value-equal@1.0.1: {} + + vary@1.1.2: {} + + vite@5.0.13(@types/node@20.14.5)(terser@5.31.1): + dependencies: + esbuild: 0.19.11 + postcss: 8.4.38 + rollup: 4.18.0 + optionalDependencies: + '@types/node': 20.14.5 + fsevents: 2.3.3 + terser: 5.31.1 + + w3c-keyname@2.2.8: {} + + watchpack@2.4.1: + dependencies: + glob-to-regexp: 0.4.1 + graceful-fs: 4.2.11 + + wcwidth@1.0.1: + dependencies: + defaults: 1.0.4 + + web-encoding@1.1.5: + dependencies: + util: 0.12.5 + optionalDependencies: + '@zxing/text-encoding': 0.9.0 + + webidl-conversions@3.0.1: {} + + webpack-bundle-analyzer@4.10.2: + dependencies: + '@discoveryjs/json-ext': 0.5.7 + acorn: 8.12.0 + acorn-walk: 8.3.3 + commander: 7.2.0 + debounce: 1.2.1 + escape-string-regexp: 4.0.0 + gzip-size: 6.0.0 + html-escaper: 2.0.2 + opener: 1.5.2 + picocolors: 1.0.1 + sirv: 2.0.4 + ws: 7.5.10 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + + webpack-dev-middleware@6.1.2(webpack@5.92.0(esbuild@0.19.11)): + dependencies: + colorette: 2.0.20 + memfs: 3.5.3 + mime-types: 2.1.35 + range-parser: 1.2.1 + schema-utils: 4.2.0 + optionalDependencies: + webpack: 5.92.0(esbuild@0.19.11) + + webpack-hot-middleware@2.26.0: + dependencies: + ansi-html-community: 0.0.8 + html-entities: 2.5.2 + strip-ansi: 6.0.1 + + webpack-sources@1.4.3: + dependencies: + source-list-map: 2.0.1 + source-map: 0.6.1 + + webpack-sources@3.2.3: {} + + webpack@5.92.0(esbuild@0.19.11): + dependencies: + '@types/eslint-scope': 3.7.7 + '@types/estree': 1.0.5 + '@webassemblyjs/ast': 1.12.1 + '@webassemblyjs/wasm-edit': 1.12.1 + '@webassemblyjs/wasm-parser': 1.12.1 + acorn: 8.12.0 + acorn-import-attributes: 1.9.5(acorn@8.12.0) + browserslist: 4.23.1 + chrome-trace-event: 1.0.4 + enhanced-resolve: 5.17.0 + es-module-lexer: 1.5.3 + eslint-scope: 5.1.1 + events: 3.3.0 + glob-to-regexp: 0.4.1 + graceful-fs: 4.2.11 + json-parse-even-better-errors: 2.3.1 + loader-runner: 4.3.0 + mime-types: 2.1.35 + neo-async: 2.6.2 + schema-utils: 3.3.0 + tapable: 2.2.1 + terser-webpack-plugin: 5.3.10(esbuild@0.19.11)(webpack@5.92.0(esbuild@0.19.11)) + watchpack: 2.4.1 + webpack-sources: 3.2.3 + transitivePeerDependencies: + - '@swc/core' + - esbuild + - uglify-js + + whatwg-url@5.0.0: + dependencies: + tr46: 0.0.3 + webidl-conversions: 3.0.1 + + which-typed-array@1.1.15: + dependencies: + available-typed-arrays: 1.0.7 + call-bind: 1.0.7 + for-each: 0.3.3 + gopd: 1.0.1 + has-tostringtag: 1.0.2 + + which@1.3.1: + dependencies: + isexe: 2.0.0 + + which@2.0.2: + dependencies: + isexe: 2.0.0 + + wide-align@1.1.5: + dependencies: + string-width: 4.2.3 + + widest-line@3.1.0: + dependencies: + string-width: 4.2.3 + + winston-transport@4.7.0: + dependencies: + logform: 2.6.0 + readable-stream: 3.6.2 + triple-beam: 1.4.1 + + winston@3.10.0: + dependencies: + '@colors/colors': 1.5.0 + '@dabh/diagnostics': 2.0.3 + async: 3.2.5 + is-stream: 2.0.1 + logform: 2.6.0 + one-time: 1.0.0 + readable-stream: 3.6.2 + safe-stable-stringify: 2.4.3 + stack-trace: 0.0.10 + triple-beam: 1.4.1 + winston-transport: 4.7.0 + + wordwrap@1.0.0: {} + + wrap-ansi@6.2.0: + dependencies: + ansi-styles: 4.3.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + + wrap-ansi@7.0.0: + dependencies: + ansi-styles: 4.3.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + + wrappy@1.0.2: {} + + write-file-atomic@3.0.3: + dependencies: + imurmurhash: 0.1.4 + is-typedarray: 1.0.0 + signal-exit: 3.0.7 + typedarray-to-buffer: 3.1.5 + + ws@7.5.10: {} + + ws@8.13.0: {} + + xdg-app-paths@8.3.0: + dependencies: + xdg-portable: 10.6.0 + optionalDependencies: + fsevents: 2.3.3 + + xdg-basedir@4.0.0: {} + + xdg-portable@10.6.0: + dependencies: + os-paths: 7.4.0 + optionalDependencies: + fsevents: 2.3.3 + + xml2js@0.6.2: + dependencies: + sax: 1.2.1 + xmlbuilder: 11.0.1 + + xmlbuilder@11.0.1: {} + + xtend@4.0.2: {} + + y18n@5.0.8: {} + + yalc@1.0.0-pre.53: + dependencies: + chalk: 4.1.2 + detect-indent: 6.1.0 + fs-extra: 8.1.0 + glob: 7.2.3 + ignore: 5.3.1 + ini: 2.0.0 + npm-packlist: 2.2.2 + yargs: 16.2.0 + + yallist@3.1.1: {} + + yallist@4.0.0: {} + + yaml@1.10.2: {} + + yargs-parser@20.2.9: {} + + yargs-parser@21.1.1: {} + + yargs@16.2.0: + dependencies: + cliui: 7.0.4 + escalade: 3.1.2 + get-caller-file: 2.0.5 + require-directory: 2.1.1 + string-width: 4.2.3 + y18n: 5.0.8 + yargs-parser: 20.2.9 + + yargs@17.7.2: + dependencies: + cliui: 8.0.1 + escalade: 3.1.2 + get-caller-file: 2.0.5 + require-directory: 2.1.1 + string-width: 4.2.3 + y18n: 5.0.8 + yargs-parser: 21.1.1 + + ylru@1.4.0: {} + + yocto-queue@0.1.0: {} + + yup@0.32.11: + dependencies: + '@babel/runtime': 7.24.7 + '@types/lodash': 4.17.5 + lodash: 4.17.21 + lodash-es: 4.17.21 + nanoclone: 0.2.1 + property-expr: 2.0.6 + toposort: 2.0.2 + + yup@0.32.9: + dependencies: + '@babel/runtime': 7.24.7 + '@types/lodash': 4.17.5 + lodash: 4.17.21 + lodash-es: 4.17.21 + nanoclone: 0.2.1 + property-expr: 2.0.6 + toposort: 2.0.2 diff --git a/packages/strapi-borked/public/robots.txt b/packages/strapi-borked/public/robots.txt new file mode 100644 index 0000000..ff5d316 --- /dev/null +++ b/packages/strapi-borked/public/robots.txt @@ -0,0 +1,3 @@ +# To prevent search engines from seeing the site altogether, uncomment the next two lines: +# User-Agent: * +# Disallow: / diff --git a/packages/strapi-borked/public/uploads/.gitkeep b/packages/strapi-borked/public/uploads/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/packages/strapi-borked/src/admin/app.example.js b/packages/strapi-borked/src/admin/app.example.js new file mode 100644 index 0000000..45cad61 --- /dev/null +++ b/packages/strapi-borked/src/admin/app.example.js @@ -0,0 +1,39 @@ +const config = { + locales: [ + // 'ar', + // 'fr', + // 'cs', + // 'de', + // 'dk', + // 'es', + // 'he', + // 'id', + // 'it', + // 'ja', + // 'ko', + // 'ms', + // 'nl', + // 'no', + // 'pl', + // 'pt-BR', + // 'pt', + // 'ru', + // 'sk', + // 'sv', + // 'th', + // 'tr', + // 'uk', + // 'vi', + // 'zh-Hans', + // 'zh', + ], +}; + +const bootstrap = (app) => { + console.log(app); +}; + +export default { + config, + bootstrap, +}; diff --git a/packages/strapi-borked/src/admin/webpack.config.example.js b/packages/strapi-borked/src/admin/webpack.config.example.js new file mode 100644 index 0000000..1ca45c2 --- /dev/null +++ b/packages/strapi-borked/src/admin/webpack.config.example.js @@ -0,0 +1,9 @@ +'use strict'; + +/* eslint-disable no-unused-vars */ +module.exports = (config, webpack) => { + // Note: we provide webpack above so you should not `require` it + // Perform customizations to webpack config + // Important: return the modified config + return config; +}; diff --git a/packages/strapi-borked/src/api/.gitkeep b/packages/strapi-borked/src/api/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/packages/strapi-borked/src/api/b2-file/content-types/b2-file/schema.json b/packages/strapi-borked/src/api/b2-file/content-types/b2-file/schema.json new file mode 100644 index 0000000..ba68a4c --- /dev/null +++ b/packages/strapi-borked/src/api/b2-file/content-types/b2-file/schema.json @@ -0,0 +1,36 @@ +{ + "kind": "collectionType", + "collectionName": "b2_files", + "info": { + "singularName": "b2-file", + "pluralName": "b2-files", + "displayName": "B2 File", + "description": "" + }, + "options": { + "draftAndPublish": false + }, + "pluginOptions": {}, + "attributes": { + "url": { + "type": "string", + "required": false, + "unique": false + }, + "key": { + "type": "string", + "unique": true, + "required": true + }, + "uploadId": { + "type": "string", + "unique": true, + "required": true + }, + "cdnUrl": { + "type": "string", + "unique": true, + "required": true + } + } +} diff --git a/packages/strapi-borked/src/api/b2-file/controllers/b2-file.js b/packages/strapi-borked/src/api/b2-file/controllers/b2-file.js new file mode 100644 index 0000000..65f936a --- /dev/null +++ b/packages/strapi-borked/src/api/b2-file/controllers/b2-file.js @@ -0,0 +1,9 @@ +'use strict'; + +/** + * b2-file controller + */ + +const { createCoreController } = require('@strapi/strapi').factories; + +module.exports = createCoreController('api::b2-file.b2-file'); diff --git a/packages/strapi-borked/src/api/b2-file/routes/b2-file.js b/packages/strapi-borked/src/api/b2-file/routes/b2-file.js new file mode 100644 index 0000000..a74a8d9 --- /dev/null +++ b/packages/strapi-borked/src/api/b2-file/routes/b2-file.js @@ -0,0 +1,9 @@ +'use strict'; + +/** + * b2-file router + */ + +const { createCoreRouter } = require('@strapi/strapi').factories; + +module.exports = createCoreRouter('api::b2-file.b2-file'); diff --git a/packages/strapi-borked/src/api/b2-file/services/b2-file.js b/packages/strapi-borked/src/api/b2-file/services/b2-file.js new file mode 100644 index 0000000..03e2bdf --- /dev/null +++ b/packages/strapi-borked/src/api/b2-file/services/b2-file.js @@ -0,0 +1,9 @@ +'use strict'; + +/** + * b2-file service + */ + +const { createCoreService } = require('@strapi/strapi').factories; + +module.exports = createCoreService('api::b2-file.b2-file'); diff --git a/packages/strapi-borked/src/api/contributor/content-types/contributor/schema.json b/packages/strapi-borked/src/api/contributor/content-types/contributor/schema.json new file mode 100644 index 0000000..3cc046c --- /dev/null +++ b/packages/strapi-borked/src/api/contributor/content-types/contributor/schema.json @@ -0,0 +1,30 @@ +{ + "kind": "collectionType", + "collectionName": "contributors", + "info": { + "singularName": "contributor", + "pluralName": "contributors", + "displayName": "Contributor", + "description": "" + }, + "options": { + "draftAndPublish": false + }, + "pluginOptions": {}, + "attributes": { + "name": { + "type": "string", + "required": true + }, + "url": { + "type": "string" + }, + "isFinancialDonor": { + "type": "boolean", + "default": false + }, + "isVodProvider": { + "type": "boolean" + } + } +} diff --git a/packages/strapi-borked/src/api/contributor/controllers/contributor.js b/packages/strapi-borked/src/api/contributor/controllers/contributor.js new file mode 100644 index 0000000..22b9cf6 --- /dev/null +++ b/packages/strapi-borked/src/api/contributor/controllers/contributor.js @@ -0,0 +1,9 @@ +'use strict'; + +/** + * contributor controller + */ + +const { createCoreController } = require('@strapi/strapi').factories; + +module.exports = createCoreController('api::contributor.contributor'); diff --git a/packages/strapi-borked/src/api/contributor/routes/contributor.js b/packages/strapi-borked/src/api/contributor/routes/contributor.js new file mode 100644 index 0000000..cf61a59 --- /dev/null +++ b/packages/strapi-borked/src/api/contributor/routes/contributor.js @@ -0,0 +1,9 @@ +'use strict'; + +/** + * contributor router + */ + +const { createCoreRouter } = require('@strapi/strapi').factories; + +module.exports = createCoreRouter('api::contributor.contributor'); diff --git a/packages/strapi-borked/src/api/contributor/services/contributor.js b/packages/strapi-borked/src/api/contributor/services/contributor.js new file mode 100644 index 0000000..ca75442 --- /dev/null +++ b/packages/strapi-borked/src/api/contributor/services/contributor.js @@ -0,0 +1,9 @@ +'use strict'; + +/** + * contributor service + */ + +const { createCoreService } = require('@strapi/strapi').factories; + +module.exports = createCoreService('api::contributor.contributor'); diff --git a/packages/strapi-borked/src/api/discord-interaction/content-types/discord-interaction/schema.json b/packages/strapi-borked/src/api/discord-interaction/content-types/discord-interaction/schema.json new file mode 100644 index 0000000..f36a2ed --- /dev/null +++ b/packages/strapi-borked/src/api/discord-interaction/content-types/discord-interaction/schema.json @@ -0,0 +1,26 @@ +{ + "kind": "collectionType", + "collectionName": "discord_interactions", + "info": { + "singularName": "discord-interaction", + "pluralName": "discord-interactions", + "displayName": "Discord Interaction", + "description": "" + }, + "options": { + "draftAndPublish": false + }, + "pluginOptions": {}, + "attributes": { + "interactionId": { + "type": "string", + "required": true + }, + "userSubmittedContent": { + "type": "relation", + "relation": "oneToOne", + "target": "api::user-submitted-content.user-submitted-content", + "inversedBy": "discordInteraction" + } + } +} diff --git a/packages/strapi-borked/src/api/discord-interaction/controllers/discord-interaction.js b/packages/strapi-borked/src/api/discord-interaction/controllers/discord-interaction.js new file mode 100644 index 0000000..cdd8502 --- /dev/null +++ b/packages/strapi-borked/src/api/discord-interaction/controllers/discord-interaction.js @@ -0,0 +1,9 @@ +'use strict'; + +/** + * discord-interaction controller + */ + +const { createCoreController } = require('@strapi/strapi').factories; + +module.exports = createCoreController('api::discord-interaction.discord-interaction'); diff --git a/packages/strapi-borked/src/api/discord-interaction/routes/discord-interaction.js b/packages/strapi-borked/src/api/discord-interaction/routes/discord-interaction.js new file mode 100644 index 0000000..65807ee --- /dev/null +++ b/packages/strapi-borked/src/api/discord-interaction/routes/discord-interaction.js @@ -0,0 +1,9 @@ +'use strict'; + +/** + * discord-interaction router + */ + +const { createCoreRouter } = require('@strapi/strapi').factories; + +module.exports = createCoreRouter('api::discord-interaction.discord-interaction'); diff --git a/packages/strapi-borked/src/api/discord-interaction/services/discord-interaction.js b/packages/strapi-borked/src/api/discord-interaction/services/discord-interaction.js new file mode 100644 index 0000000..59f8199 --- /dev/null +++ b/packages/strapi-borked/src/api/discord-interaction/services/discord-interaction.js @@ -0,0 +1,9 @@ +'use strict'; + +/** + * discord-interaction service + */ + +const { createCoreService } = require('@strapi/strapi').factories; + +module.exports = createCoreService('api::discord-interaction.discord-interaction'); diff --git a/packages/strapi-borked/src/api/goal/content-types/goal/schema.json b/packages/strapi-borked/src/api/goal/content-types/goal/schema.json new file mode 100644 index 0000000..0580c6f --- /dev/null +++ b/packages/strapi-borked/src/api/goal/content-types/goal/schema.json @@ -0,0 +1,30 @@ +{ + "kind": "collectionType", + "collectionName": "goals", + "info": { + "singularName": "goal", + "pluralName": "goals", + "displayName": "Goal", + "description": "" + }, + "options": { + "draftAndPublish": false + }, + "pluginOptions": {}, + "attributes": { + "amountCents": { + "type": "string", + "required": true, + "unique": true + }, + "description": { + "type": "string", + "required": true, + "unique": true + }, + "name": { + "type": "string", + "unique": true + } + } +} diff --git a/packages/strapi-borked/src/api/goal/controllers/goal.js b/packages/strapi-borked/src/api/goal/controllers/goal.js new file mode 100644 index 0000000..2b8e3a3 --- /dev/null +++ b/packages/strapi-borked/src/api/goal/controllers/goal.js @@ -0,0 +1,9 @@ +'use strict'; + +/** + * goal controller + */ + +const { createCoreController } = require('@strapi/strapi').factories; + +module.exports = createCoreController('api::goal.goal'); diff --git a/packages/strapi-borked/src/api/goal/routes/goal.js b/packages/strapi-borked/src/api/goal/routes/goal.js new file mode 100644 index 0000000..e836728 --- /dev/null +++ b/packages/strapi-borked/src/api/goal/routes/goal.js @@ -0,0 +1,9 @@ +'use strict'; + +/** + * goal router + */ + +const { createCoreRouter } = require('@strapi/strapi').factories; + +module.exports = createCoreRouter('api::goal.goal'); diff --git a/packages/strapi-borked/src/api/goal/services/goal.js b/packages/strapi-borked/src/api/goal/services/goal.js new file mode 100644 index 0000000..6c047ac --- /dev/null +++ b/packages/strapi-borked/src/api/goal/services/goal.js @@ -0,0 +1,11 @@ +'use strict'; + +/** + * goal service + */ + +const { createCoreService } = require('@strapi/strapi').factories; + +module.exports = createCoreService('api::goal.goal'); + + diff --git a/packages/strapi-borked/src/api/gogs/content-types/gogs/schema.json b/packages/strapi-borked/src/api/gogs/content-types/gogs/schema.json new file mode 100644 index 0000000..d933d5d --- /dev/null +++ b/packages/strapi-borked/src/api/gogs/content-types/gogs/schema.json @@ -0,0 +1,24 @@ +{ + "kind": "singleType", + "collectionName": "gogss", + "info": { + "singularName": "gogs", + "pluralName": "gogss", + "displayName": "Gogs" + }, + "options": { + "draftAndPublish": false + }, + "pluginOptions": {}, + "attributes": { + "apiKey": { + "type": "string", + "required": true + }, + "url": { + "type": "string", + "required": true, + "default": "https://git.futureporn.net" + } + } +} diff --git a/packages/strapi-borked/src/api/gogs/controllers/gogs.js b/packages/strapi-borked/src/api/gogs/controllers/gogs.js new file mode 100644 index 0000000..5d83874 --- /dev/null +++ b/packages/strapi-borked/src/api/gogs/controllers/gogs.js @@ -0,0 +1,29 @@ +'use strict'; + +/** + * gogs controller + */ + +const { createCoreController } = require('@strapi/strapi').factories; + +module.exports = createCoreController('api::gogs.gogs', ({ strapi }) => ({ + issues: async (ctx) => { + try { + // Fetch the 'gogs' single type from Strapi + const gogsConfig = await strapi.query('api::gogs.gogs').findOne(); + + if (!gogsConfig) { + return ctx.badRequest('Gogs configuration not found'); + } + + const { url, apiKey } = gogsConfig; + const openIssues = await strapi.service('api::gogs.gogs').fetchAllPagesFromGogsAPI(`${url}/api/v1/repos/futureporn/pm/issues?state=open`, apiKey) + const closedIssues = await strapi.service('api::gogs.gogs').fetchAllPagesFromGogsAPI(`${url}/api/v1/repos/futureporn/pm/issues?state=closed`, apiKey) + + return { openIssues, closedIssues } + } catch (error) { + console.error('Error fetching Gogs issues:', error); + return ctx.badRequest('Failed to fetch issues from Gogs'); + } + } +})); \ No newline at end of file diff --git a/packages/strapi-borked/src/api/gogs/routes/gogs.js b/packages/strapi-borked/src/api/gogs/routes/gogs.js new file mode 100644 index 0000000..50c6544 --- /dev/null +++ b/packages/strapi-borked/src/api/gogs/routes/gogs.js @@ -0,0 +1,34 @@ +'use strict'; + +/** + * gogs router + */ + +const { createCoreRouter } = require('@strapi/strapi').factories; + +const defaultRouter = createCoreRouter('api::gogs.gogs'); + +// greets https://forum.strapi.io/t/how-to-add-custom-routes-to-core-routes-in-strapi-4/14070/7 +const customRouter = (innerRouter, extraRoutes = []) => { + let routes; + return { + get prefix() { + return innerRouter.prefix; + }, + get routes() { + if (!routes) routes = extraRoutes.concat(innerRouter.routes) + return routes; + }, + }; +}; + +const myExtraRoutes = [ + { + method: "GET", + path: "/gogs/issues", + handler: "api::gogs.gogs.issues" + } +]; + +module.exports = customRouter(defaultRouter, myExtraRoutes); + diff --git a/packages/strapi-borked/src/api/gogs/services/gogs.js b/packages/strapi-borked/src/api/gogs/services/gogs.js new file mode 100644 index 0000000..13afb2f --- /dev/null +++ b/packages/strapi-borked/src/api/gogs/services/gogs.js @@ -0,0 +1,42 @@ +'use strict'; + +/** + * gogs service + */ + +const { createCoreService } = require('@strapi/strapi').factories; + + + +module.exports = createCoreService('api::gogs.gogs', ({ strapi }) => ({ + + async fetchAllPagesFromGogsAPI(url, apiKey) { + + // Fetch the first page + const response = await fetch(url, { + headers: { + 'Authorization': `token ${apiKey}` + } + }); + + if (!response.ok) { + throw new Error(`Request failed with status: ${response.status}`); + } + + const data = await response.json(); + + // Check if there are more pages available + if (response.headers.has('link')) { + const linkHeader = response.headers.get('link'); + const nextPageMatch = /<([^>]+)>;\s*rel="next"/.exec(linkHeader); + + if (nextPageMatch) { + const nextPageUrl = nextPageMatch[1]; + const nextPageData = await this.fetchAllPagesFromGogsAPI(nextPageUrl, apiKey); + return [...data, ...nextPageData]; + } + } + + return data; + } +})) \ No newline at end of file diff --git a/packages/strapi-borked/src/api/issue/content-types/issue/schema.json b/packages/strapi-borked/src/api/issue/content-types/issue/schema.json new file mode 100644 index 0000000..b8c6768 --- /dev/null +++ b/packages/strapi-borked/src/api/issue/content-types/issue/schema.json @@ -0,0 +1,36 @@ +{ + "kind": "collectionType", + "collectionName": "issues", + "info": { + "singularName": "issue", + "pluralName": "issues", + "displayName": "issue", + "description": "" + }, + "options": { + "draftAndPublish": false + }, + "pluginOptions": {}, + "attributes": { + "url": { + "type": "string", + "required": true + }, + "sla": { + "type": "enumeration", + "enum": [ + "public", + "patron", + "authenticated" + ], + "default": "public", + "required": true + }, + "type": { + "type": "enumeration", + "enum": [ + "stall" + ] + } + } +} diff --git a/packages/strapi-borked/src/api/issue/controllers/issue.js b/packages/strapi-borked/src/api/issue/controllers/issue.js new file mode 100644 index 0000000..a9c83e3 --- /dev/null +++ b/packages/strapi-borked/src/api/issue/controllers/issue.js @@ -0,0 +1,9 @@ +'use strict'; + +/** + * issue controller + */ + +const { createCoreController } = require('@strapi/strapi').factories; + +module.exports = createCoreController('api::issue.issue'); diff --git a/packages/strapi-borked/src/api/issue/routes/issue.js b/packages/strapi-borked/src/api/issue/routes/issue.js new file mode 100644 index 0000000..146d9fe --- /dev/null +++ b/packages/strapi-borked/src/api/issue/routes/issue.js @@ -0,0 +1,9 @@ +'use strict'; + +/** + * issue router + */ + +const { createCoreRouter } = require('@strapi/strapi').factories; + +module.exports = createCoreRouter('api::issue.issue'); diff --git a/packages/strapi-borked/src/api/issue/services/issue.js b/packages/strapi-borked/src/api/issue/services/issue.js new file mode 100644 index 0000000..9782a38 --- /dev/null +++ b/packages/strapi-borked/src/api/issue/services/issue.js @@ -0,0 +1,9 @@ +'use strict'; + +/** + * issue service + */ + +const { createCoreService } = require('@strapi/strapi').factories; + +module.exports = createCoreService('api::issue.issue'); diff --git a/packages/strapi-borked/src/api/mux-asset/content-types/mux-asset/schema.json b/packages/strapi-borked/src/api/mux-asset/content-types/mux-asset/schema.json new file mode 100644 index 0000000..736ba34 --- /dev/null +++ b/packages/strapi-borked/src/api/mux-asset/content-types/mux-asset/schema.json @@ -0,0 +1,28 @@ +{ + "kind": "collectionType", + "collectionName": "mux_assets", + "info": { + "singularName": "mux-asset", + "pluralName": "mux-assets", + "displayName": "Mux Asset", + "description": "" + }, + "options": { + "draftAndPublish": false + }, + "pluginOptions": {}, + "attributes": { + "playbackId": { + "type": "string", + "required": false, + "unique": true + }, + "assetId": { + "type": "string", + "unique": true + }, + "deletionQueuedAt": { + "type": "datetime" + } + } +} diff --git a/packages/strapi-borked/src/api/mux-asset/controllers/mux-asset.js b/packages/strapi-borked/src/api/mux-asset/controllers/mux-asset.js new file mode 100644 index 0000000..e02adbc --- /dev/null +++ b/packages/strapi-borked/src/api/mux-asset/controllers/mux-asset.js @@ -0,0 +1,56 @@ +'use strict'; + +const { JWT } = require('@mux/mux-node'); + +const MUX_SIGNING_KEY_ID = process.env.MUX_SIGNING_KEY_ID; +const MUX_SIGNING_KEY_PRIVATE_KEY = process.env.MUX_SIGNING_KEY_PRIVATE_KEY; +const MUX_PLAYBACK_RESTRICTION_ID = process.env.MUX_PLAYBACK_RESTRICTION_ID + +if (!MUX_SIGNING_KEY_PRIVATE_KEY) throw new Error('MUX_SIGNING_KEY_PRIVATE_KEY must be defined in env'); +if (!MUX_SIGNING_KEY_ID) throw new Error('MUX_SIGNING_KEY_ID must be defined in env'); +if (!MUX_PLAYBACK_RESTRICTION_ID) throw new Error('MUX_PLAYBACK_RESTRICTION_ID must be defined in env'); + + +/** + * mux-asset controller + */ + +const { createCoreController } = require('@strapi/strapi').factories; + +module.exports = createCoreController('api::mux-asset.mux-asset', ({ strapi }) => ({ + + async secure (ctx, next) { + + if (ctx?.query?.id === undefined) { + ctx.throw(400, 'id query param was missing!') + return + } + + const tokens = {} + + tokens.playbackToken = JWT.signPlaybackId(ctx.query.id, { + keyId: MUX_SIGNING_KEY_ID, + keySecret: MUX_SIGNING_KEY_PRIVATE_KEY, + params: { + playback_restriction_id: MUX_PLAYBACK_RESTRICTION_ID + }, + }) + + + tokens.storyboardToken = JWT.signPlaybackId(ctx.query.id, { + keyId: MUX_SIGNING_KEY_ID, + keySecret: MUX_SIGNING_KEY_PRIVATE_KEY, + type: 'storyboard' + }) + + tokens.thumbnailToken = JWT.signPlaybackId(ctx.query.id, { + keyId: MUX_SIGNING_KEY_ID, + keySecret: MUX_SIGNING_KEY_PRIVATE_KEY, + type: 'thumbnail' + }) + + + ctx.body = tokens + } +})) + diff --git a/packages/strapi-borked/src/api/mux-asset/routes/mux-asset.js b/packages/strapi-borked/src/api/mux-asset/routes/mux-asset.js new file mode 100644 index 0000000..2dc38eb --- /dev/null +++ b/packages/strapi-borked/src/api/mux-asset/routes/mux-asset.js @@ -0,0 +1,33 @@ +'use strict'; + +/** + * mux-asset router + */ + +const { createCoreRouter } = require('@strapi/strapi').factories; + +const defaultRouter = createCoreRouter('api::mux-asset.mux-asset'); + +// greets https://forum.strapi.io/t/how-to-add-custom-routes-to-core-routes-in-strapi-4/14070/7 +const customRouter = (innerRouter, extraRoutes = []) => { + let routes; + return { + get prefix() { + return innerRouter.prefix; + }, + get routes() { + if (!routes) routes = extraRoutes.concat(innerRouter.routes) + return routes; + }, + }; +}; + +const myExtraRoutes = [ + { + method: "GET", + path: "/mux-asset/secure", + handler: "mux-asset.secure" + } +]; + +module.exports = customRouter(defaultRouter, myExtraRoutes); \ No newline at end of file diff --git a/packages/strapi-borked/src/api/mux-asset/services/mux-asset.js b/packages/strapi-borked/src/api/mux-asset/services/mux-asset.js new file mode 100644 index 0000000..a4cbcb5 --- /dev/null +++ b/packages/strapi-borked/src/api/mux-asset/services/mux-asset.js @@ -0,0 +1,78 @@ +'use strict'; + +const { JWT } = require('@mux/mux-node'); +const { createCoreService } = require('@strapi/strapi').factories; + +/** + * mux-asset service + */ + + +module.exports = createCoreService('api::mux-asset.mux-asset', ({strapi}) => ({ + + + /** + * reference: https://docs.mux.com/guides/video/secure-video-playback#4-generate-a-json-web-token-jwt + * reference: https://docs.mux.com/guides/video/secure-video-playback#5-sign-the-json-web-token-jwt + * + * @param {String} playbackId - signed playback ID + * @param {String} keyId - signing key ID + * @param {String} keySecret - base64 encoded private key + * @param {String} playbackRestructionId - https://docs.mux.com/guides/video/secure-video-playback#create-a-playback-restriction + * @returns {Object} jwt - + * @returns {String} jwt.token - + * @returns {String} jwt.gifToken - + * @returns {String} jwt.thumbnailToken - + */ + async signJwt (playbackId, keyId, keySecret, playbackRestrictionId) { + // Set some base options we can use for a few different signing types + // Type can be either video, thumbnail, gif, or storyboard + let baseOptions = { + keyId: keyId, // Enter your signing key id here + keySecret: keySecret, // Enter your base64 encoded private key here + expiration: '7d' // E.g 60, "2 days", "10h", "7d", numeric value interpreted as seconds + }; + + const playbackToken = JWT.signPlaybackId(playbackId, { + ...baseOptions , + type: 'video', + params: { playback_restriction_id: playbackRestrictionId } + }); + + // Now the signed playback url should look like this: + // https://stream.mux.com/${playbackId}.m3u8?token=${token} + + // If you wanted to pass in params for something like a gif, use the + // params key in the options object + // const gifToken = JWT.signPlaybackId(playbackId, { + // ...baseOptions, + // type: 'gif', + // params: { time: 10 }, + // }) + + const thumbnailToken = JWT.signPlaybackId(playbackId, { + type: 'thumbnail', + params: { playback_restriction_id: playbackRestrictionId }, + }) + + // Then, use this token in a URL like this: + // https://image.mux.com/${playbackId}/animated.gif?token=${gifToken} + + // A final example, if you wanted to sign a thumbnail url with a playback restriction + const storyboardToken = JWT.sign(playbackId, { + ...baseOptions, + type: 'storyboard', + params: { playback_restriction_id: playbackRestrictionId }, + }) + + // When used in a URL, it should look like this: + // https://image.mux.com/${playbackId}/thumbnail.png?token=${thumbnailToken} + + return { + playbackToken, + storyboardToken, + thumbnailToken + } + }, + +})); \ No newline at end of file diff --git a/packages/strapi-borked/src/api/patreon/content-types/patreon/schema.json b/packages/strapi-borked/src/api/patreon/content-types/patreon/schema.json new file mode 100644 index 0000000..a76213c --- /dev/null +++ b/packages/strapi-borked/src/api/patreon/content-types/patreon/schema.json @@ -0,0 +1,39 @@ +{ + "kind": "singleType", + "collectionName": "patreons", + "info": { + "singularName": "patreon", + "pluralName": "patreons", + "displayName": "Patreon", + "description": "" + }, + "options": { + "draftAndPublish": false + }, + "pluginOptions": {}, + "attributes": { + "benefitId": { + "type": "string", + "required": true, + "default": "4760169" + }, + "accessToken": { + "type": "string" + }, + "refreshToken": { + "type": "string" + }, + "campaignId": { + "type": "string", + "required": true + }, + "muxAllocationCostCents": { + "type": "integer", + "default": 50, + "required": true + }, + "membershipId": { + "type": "string" + } + } +} diff --git a/packages/strapi-borked/src/api/patreon/controllers/patreon.js b/packages/strapi-borked/src/api/patreon/controllers/patreon.js new file mode 100644 index 0000000..c06944a --- /dev/null +++ b/packages/strapi-borked/src/api/patreon/controllers/patreon.js @@ -0,0 +1,37 @@ +'use strict'; + +/** + * patreon controller + */ + +const { createCoreController } = require('@strapi/strapi').factories; + +module.exports = createCoreController('api::patreon.patreon', ({ strapi }) => ({ + async getPublicPatrons(ctx) { + const patrons = await strapi.entityService.findMany('plugin::users-permissions.user', { + fields: ['username', 'vanityLink', 'isNamePublic', 'isLinkPublic', 'patreonBenefits'], + }) + + let publicPatrons = [] + for (const patron of patrons) { + let publicPatron = {} + let benefits = (!!patron?.patreonBenefits) ? patron.patreonBenefits.split(',') : [] + if (patron.isNamePublic) publicPatron.username = patron.username; + + // if patron has "Your URL displayed on Futureporn.net" benefit, + // publically share their link if they want it shared + if (benefits.includes('10663202')) { + if (patron.isLinkPublic) publicPatron.vanityLink = patron.vanityLink; + } + + if (!!publicPatron.username || !!publicPatron.vanityLink) publicPatrons.push(publicPatron); + } + + return publicPatrons + }, + async muxAllocationCount(ctx) { + const count = await strapi.service('api::patreon.patreon').getMuxAllocationCount() + return count + } +})); + diff --git a/packages/strapi-borked/src/api/patreon/routes/patreon.js b/packages/strapi-borked/src/api/patreon/routes/patreon.js new file mode 100644 index 0000000..52af951 --- /dev/null +++ b/packages/strapi-borked/src/api/patreon/routes/patreon.js @@ -0,0 +1,37 @@ +'use strict'; + +/** + * patreon router + */ + +const { createCoreRouter } = require('@strapi/strapi').factories; + +const defaultRouter = createCoreRouter('api::patreon.patreon'); + +// greets https://forum.strapi.io/t/how-to-add-custom-routes-to-core-routes-in-strapi-4/14070/7 +const customRouter = (innerRouter, extraRoutes = []) => { + let routes; + return { + get prefix() { + return innerRouter.prefix; + }, + get routes() { + if (!routes) routes = extraRoutes.concat(innerRouter.routes) + return routes; + }, + }; +}; + +const myExtraRoutes = [ + { + method: "GET", + path: "/patreon/patrons", + handler: "api::patreon.patreon.getPublicPatrons" + }, { + method: 'GET', + path: '/patreon/muxAllocationCount', + handler: 'api::patreon.patreon.muxAllocationCount' + } +]; + +module.exports = customRouter(defaultRouter, myExtraRoutes); \ No newline at end of file diff --git a/packages/strapi-borked/src/api/patreon/services/patreon.js b/packages/strapi-borked/src/api/patreon/services/patreon.js new file mode 100644 index 0000000..147d2a4 --- /dev/null +++ b/packages/strapi-borked/src/api/patreon/services/patreon.js @@ -0,0 +1,45 @@ +'use strict'; + +/** + * patreon service + */ + +const EleventyFetch = require("@11ty/eleventy-fetch"); +const { createCoreService } = require('@strapi/strapi').factories; + + + +module.exports = createCoreService('api::patreon.patreon', ({strapi}) => ({ + + + async getPatreonCampaign() { + return EleventyFetch('https://www.patreon.com/api/campaigns/8012692', { + duration: "12h", + type: "json", + }) + }, + + + async getPatreonCampaignPledgeSum() { + const campaign = await this.getPatreonCampaign() + return campaign.data.attributes.pledge_sum + }, + + + /** + * Calculate how many mux allocations the site should have, based on the dollar amount of pledges from patreon + * + * @param {Number} pledgeSum - USD cents + */ + async getMuxAllocationCount() { + const patreonData = await strapi.entityService.findMany('api::patreon.patreon', { + fields: ['muxAllocationCostCents'] + }) + if (!patreonData) throw new Error('patreonData in Strapi was missing'); + const muxAllocationCostCents = patreonData.muxAllocationCostCents + const pledgeSum = await this.getPatreonCampaignPledgeSum() + const muxAllocationCount = Math.floor(pledgeSum / muxAllocationCostCents); // calculate the number of mux allocations required + return muxAllocationCount; + } +})); + diff --git a/packages/strapi-borked/src/api/platform-notification/content-types/platform-notification/schema.json b/packages/strapi-borked/src/api/platform-notification/content-types/platform-notification/schema.json new file mode 100644 index 0000000..c5561e6 --- /dev/null +++ b/packages/strapi-borked/src/api/platform-notification/content-types/platform-notification/schema.json @@ -0,0 +1,56 @@ +{ + "kind": "collectionType", + "collectionName": "platform_notifications", + "info": { + "singularName": "platform-notification", + "pluralName": "platform-notifications", + "displayName": "Platform Notification", + "description": "" + }, + "options": { + "draftAndPublish": false + }, + "pluginOptions": {}, + "attributes": { + "source": { + "type": "enumeration", + "enum": [ + "email", + "manual" + ], + "default": "manual", + "required": true + }, + "platform": { + "type": "enumeration", + "enum": [ + "fansly", + "chaturbate" + ], + "default": "chaturbate", + "required": true + }, + "date": { + "type": "datetime", + "required": true, + "unique": false + }, + "date2": { + "type": "string", + "required": true, + "unique": false, + "regex": "\\d{4}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d:[0-5]\\d\\.\\d+([+-][0-2]\\d:[0-5]\\d|Z)" + }, + "vtuber": { + "type": "relation", + "relation": "oneToOne", + "target": "api::vtuber.vtuber" + }, + "stream": { + "type": "relation", + "relation": "manyToOne", + "target": "api::stream.stream", + "inversedBy": "platformNotifications" + } + } +} \ No newline at end of file diff --git a/packages/strapi-borked/src/api/platform-notification/controllers/platform-notification.js b/packages/strapi-borked/src/api/platform-notification/controllers/platform-notification.js new file mode 100644 index 0000000..b845147 --- /dev/null +++ b/packages/strapi-borked/src/api/platform-notification/controllers/platform-notification.js @@ -0,0 +1,9 @@ +'use strict'; + +/** + * platform-notification controller + */ + +const { createCoreController } = require('@strapi/strapi').factories; + +module.exports = createCoreController('api::platform-notification.platform-notification'); diff --git a/packages/strapi-borked/src/api/platform-notification/routes/platform-notification.js b/packages/strapi-borked/src/api/platform-notification/routes/platform-notification.js new file mode 100644 index 0000000..1bc4837 --- /dev/null +++ b/packages/strapi-borked/src/api/platform-notification/routes/platform-notification.js @@ -0,0 +1,9 @@ +'use strict'; + +/** + * platform-notification router + */ + +const { createCoreRouter } = require('@strapi/strapi').factories; + +module.exports = createCoreRouter('api::platform-notification.platform-notification'); diff --git a/packages/strapi-borked/src/api/platform-notification/services/platform-notification.js b/packages/strapi-borked/src/api/platform-notification/services/platform-notification.js new file mode 100644 index 0000000..a505fc9 --- /dev/null +++ b/packages/strapi-borked/src/api/platform-notification/services/platform-notification.js @@ -0,0 +1,9 @@ +'use strict'; + +/** + * platform-notification service + */ + +const { createCoreService } = require('@strapi/strapi').factories; + +module.exports = createCoreService('api::platform-notification.platform-notification'); diff --git a/packages/strapi-borked/src/api/profile/controllers/profile.js b/packages/strapi-borked/src/api/profile/controllers/profile.js new file mode 100644 index 0000000..610a88d --- /dev/null +++ b/packages/strapi-borked/src/api/profile/controllers/profile.js @@ -0,0 +1,21 @@ +'use strict'; + + + +module.exports = { + update: async (ctx, next) => { + const update = strapi.plugin('users-permissions').controllers.user.update + await update(ctx); + }, + me: async (ctx) => { + const userId = ctx?.state?.user?.id; + if (!userId) return ctx.badRequest("There was no user id in the request!"); + const user = await strapi.entityService.findOne('plugin::users-permissions.user', userId, { + populate: 'role' + }); + return user + }, + test: async (ctx) => { + return 'blah' + } +}; diff --git a/packages/strapi-borked/src/api/profile/routes/profile.js b/packages/strapi-borked/src/api/profile/routes/profile.js new file mode 100644 index 0000000..7a33f1c --- /dev/null +++ b/packages/strapi-borked/src/api/profile/routes/profile.js @@ -0,0 +1,23 @@ +module.exports = { + routes: [ + { + method: 'PUT', + path: '/profile/:id', + handler: 'profile.update', + config: { + prefix: '', + policies: ['global::updateOwnerOnly'] + }, + }, + { + method: 'GET', + path: '/profile/me', + handler: 'profile.me' + }, + { + method: 'GET', + path: '/profile/test', + handler: 'profile.test' + } + ], +}; diff --git a/packages/strapi-borked/src/api/profile/services/profile.js b/packages/strapi-borked/src/api/profile/services/profile.js new file mode 100644 index 0000000..56ac091 --- /dev/null +++ b/packages/strapi-borked/src/api/profile/services/profile.js @@ -0,0 +1,7 @@ +'use strict'; + +/** + * profile service + */ + +module.exports = () => ({}); diff --git a/packages/strapi-borked/src/api/stream/content-types/stream/lifecycles.js b/packages/strapi-borked/src/api/stream/content-types/stream/lifecycles.js new file mode 100644 index 0000000..852633c --- /dev/null +++ b/packages/strapi-borked/src/api/stream/content-types/stream/lifecycles.js @@ -0,0 +1,119 @@ +const { init } = require('@paralleldrive/cuid2'); + + + +module.exports = { + async beforeUpdate(event) { + const { data } = event.params; + if (!data.cuid) { + const length = 10; // 50% odds of collision after ~51,386,368 ids + const cuid = init({ length }); + event.params.data.cuid = cuid(); + } + /** + * Here we set the stream platform based on related platformNotifications. + * For example, if there is a related fansly platformNotification, we set isFanslyStream to true. + */ + console.log('hello my good sir, we are about to set the stream platform based on related platformNotifications.') + console.log('in order to make sure we have the data we need, let us console log the data.') + console.log(data) + + }, + async afterUpdate(event) { + + + + console.log(`>>>>>>>>>>>>>> STREAM is afterUpdate !!!!!!!!!!!!`); + const { data, where, select, populate } = event.params; + console.log(data); + const id = where.id; + + + /** + * This is where we populate the archiveStatus, based on the vods we have (or do not have.) + * We do this to display to the visitor the archival state of this stream. + * This state is what populates the any% archival speedrun on the `/vt/:slug` pages. + * + * Vods with a note are automatically considered, 'issue' + * A stream with no vods is considered, 'missing' + * At least 1 vod with no notes is considred, 'good' + * + * greets https://forum.strapi.io/t/how-to-get-previous-component-data-in-lifecycle-hook/25892/4?u=ggr247 + */ + const existingData = await strapi.entityService.findOne("api::stream.stream", id, { + populate: ['vods', 'tweet'] + }) + + // Initialize archiveStatus to a default value + let archiveStatus = 'missing'; + + // Iterate through all vods to determine archiveStatus + for (const vod of existingData.vods) { + if (!!vod.videoSrcHash) { + if (!!vod.note) { + // If a vod has both videoSrcHash and note, set archiveStatus to 'issue' + archiveStatus = 'issue'; + break; // No need to check further + } else { + // If a vod has videoSrcHash but no note, set archiveStatus to 'good' + archiveStatus = 'good'; + } + } + } + + // we can't use query engine here, because that would trigger an infinite loop + // where this + // instead we access knex instance + await strapi.db.connection("streams").where({ id: id }).update({ + archive_status: archiveStatus, + }); + + + + + /** + * This is where we populate platform, based on the related platformNotification content-types. + * We do this so the UI has the data it needs to display the platform on which the stream took place. + * + * If any platformNotification is from fansly, isFanslyStream is set to true. + * If any platformNotification is from chaturbate, isChaturbateStream is set to true. + */ + const existingData2 = await strapi.entityService.findOne("api::stream.stream", id, { + populate: {'platformNotifications': true} + }) + + let isFanslyStream = false + let isChaturbateStream = false + + console.log(`lets find the platformNotifications`) + console.log(JSON.stringify(existingData2, null, 2)) + + // Iterate through all platformNotifications to determine platform + if (existingData2?.platformNotifications) { + for (const pn of existingData2.platformNotifications) { + if (pn.platform === 'fansly') { + isFanslyStream = true + } else if (pn.platform === 'chaturbate') { + isChaturbateStream = true + } + } + } + + // we can't use query engine here, because that would trigger an infinite loop + // where this + // instead we access knex instance + await strapi.db.connection("streams").where({ id: id }).update({ + is_fansly_stream: isFanslyStream, + is_chaturbate_stream: isChaturbateStream + }); + + // Old way, @deprecated. keeping as a comment until I'm sure I don't need it + // if (!!existingData.tweet) { + // await strapi.db.connection("streams").where({ id: id }).update({ + // is_chaturbate_stream: existingData.tweet.isChaturbateInvite, + // is_fansly_stream: existingData.tweet.isFanslyInvite + // }); + // } + + } +}; \ No newline at end of file diff --git a/packages/strapi-borked/src/api/stream/content-types/stream/schema.json b/packages/strapi-borked/src/api/stream/content-types/stream/schema.json new file mode 100644 index 0000000..63fab1f --- /dev/null +++ b/packages/strapi-borked/src/api/stream/content-types/stream/schema.json @@ -0,0 +1,79 @@ +{ + "kind": "collectionType", + "collectionName": "streams", + "info": { + "singularName": "stream", + "pluralName": "streams", + "displayName": "Stream", + "description": "" + }, + "options": { + "draftAndPublish": false + }, + "pluginOptions": {}, + "attributes": { + "platformNotifications": { + "type": "relation", + "relation": "oneToMany", + "target": "api::platform-notification.platform-notification", + "mappedBy": "stream" + }, + "date_str": { + "type": "string", + "required": true, + "unique": true, + "regex": "\\d{4}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d:[0-5]\\d\\.\\d+([+-][0-2]\\d:[0-5]\\d|Z)" + }, + "date2": { + "type": "string", + "required": true, + "unique": true, + "regex": "\\d{4}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d:[0-5]\\d\\.\\d+([+-][0-2]\\d:[0-5]\\d|Z)" + }, + "vods": { + "type": "relation", + "relation": "oneToMany", + "target": "api::vod.vod", + "mappedBy": "stream" + }, + "vtuber": { + "type": "relation", + "relation": "manyToOne", + "target": "api::vtuber.vtuber", + "inversedBy": "streams" + }, + "tweet": { + "type": "relation", + "relation": "oneToOne", + "target": "api::tweet.tweet" + }, + "date": { + "type": "datetime", + "required": true, + "unique": true + }, + "archiveStatus": { + "type": "enumeration", + "enum": [ + "missing", + "issue", + "good" + ], + "required": true, + "default": "missing" + }, + "cuid": { + "type": "string", + "unique": true, + "required": false + }, + "isChaturbateStream": { + "type": "boolean", + "default": false + }, + "isFanslyStream": { + "type": "boolean", + "default": false + } + } +} diff --git a/packages/strapi-borked/src/api/stream/controllers/stream.js b/packages/strapi-borked/src/api/stream/controllers/stream.js new file mode 100644 index 0000000..aaee46e --- /dev/null +++ b/packages/strapi-borked/src/api/stream/controllers/stream.js @@ -0,0 +1,9 @@ +'use strict'; + +/** + * stream controller + */ + +const { createCoreController } = require('@strapi/strapi').factories; + +module.exports = createCoreController('api::stream.stream'); diff --git a/packages/strapi-borked/src/api/stream/routes/stream.js b/packages/strapi-borked/src/api/stream/routes/stream.js new file mode 100644 index 0000000..6af6923 --- /dev/null +++ b/packages/strapi-borked/src/api/stream/routes/stream.js @@ -0,0 +1,9 @@ +'use strict'; + +/** + * stream router + */ + +const { createCoreRouter } = require('@strapi/strapi').factories; + +module.exports = createCoreRouter('api::stream.stream'); diff --git a/packages/strapi-borked/src/api/stream/services/stream.js b/packages/strapi-borked/src/api/stream/services/stream.js new file mode 100644 index 0000000..b0311da --- /dev/null +++ b/packages/strapi-borked/src/api/stream/services/stream.js @@ -0,0 +1,9 @@ +'use strict'; + +/** + * stream service + */ + +const { createCoreService } = require('@strapi/strapi').factories; + +module.exports = createCoreService('api::stream.stream'); diff --git a/packages/strapi-borked/src/api/tag-vod-relation/content-types/tag-vod-relation/schema.json b/packages/strapi-borked/src/api/tag-vod-relation/content-types/tag-vod-relation/schema.json new file mode 100644 index 0000000..129ef5a --- /dev/null +++ b/packages/strapi-borked/src/api/tag-vod-relation/content-types/tag-vod-relation/schema.json @@ -0,0 +1,39 @@ +{ + "kind": "collectionType", + "collectionName": "tag_vod_relations", + "info": { + "singularName": "tag-vod-relation", + "pluralName": "tag-vod-relations", + "displayName": "Tag Vod Relation", + "description": "" + }, + "options": { + "draftAndPublish": false + }, + "pluginOptions": {}, + "attributes": { + "votes": { + "type": "integer" + }, + "creator": { + "type": "relation", + "relation": "oneToOne", + "target": "plugin::users-permissions.user" + }, + "tag": { + "type": "relation", + "relation": "oneToOne", + "target": "api::tag.tag" + }, + "creatorId": { + "type": "integer", + "required": true + }, + "vod": { + "type": "relation", + "relation": "manyToOne", + "target": "api::vod.vod", + "inversedBy": "tagVodRelations" + } + } +} diff --git a/packages/strapi-borked/src/api/tag-vod-relation/controllers/tag-vod-relation.js b/packages/strapi-borked/src/api/tag-vod-relation/controllers/tag-vod-relation.js new file mode 100644 index 0000000..8face45 --- /dev/null +++ b/packages/strapi-borked/src/api/tag-vod-relation/controllers/tag-vod-relation.js @@ -0,0 +1,222 @@ +'use strict'; + +/** + * tag-vod-relation controller + */ + +const { createCoreController } = require('@strapi/strapi').factories; + +module.exports = createCoreController('api::tag-vod-relation.tag-vod-relation', ({ strapi }) => ({ + async relate(ctx) { + + const userId = ctx?.state?.user?.id; + if (!userId) return ctx.badRequest("There was no user id in the request!"); + if (!ctx.request.body.data) return ctx.badRequest('data was missing from body'); + if (!ctx.request.body.data.tag) return ctx.badRequest('tag was missing from data'); + if (!ctx.request.body.data.vod) return ctx.badRequest('vod was missing from data'); + + const { tag: tagId, vod: vodId } = ctx.request.body.data; + + const tagVodRelation = await strapi.entityService.create('api::tag-vod-relation.tag-vod-relation', { + data: { + vod: vodId, + tag: tagId, + creator: userId, + creatorId: userId, + publishedAt: new Date(), + votes: 2 + } + }) + + return tagVodRelation + }, + async vote(ctx) { + // @todo + }, + + // // greets https://docs.strapi.io/dev-docs/backend-customization/controllers#extending-core-controllers + // // greets https://docs.strapi.io/dev-docs/backend-customization/controllers#adding-a-new-controller + // // Method 2: Wrapping a core action (leaves core logic in place) + // async find(ctx) { + // // // some custom logic here + // // ctx.query = { ...ctx.query, local: 'en' } + + // const userId = ctx?.state?.user?.id; + // if (!userId) return ctx.badRequest("There was no user id in the request!"); + + + + // // Calling the default core action + // const { data, meta } = await super.find(ctx); + + // // add isCreator if the tvr was created by this user + // let dataWithCreator = data.map((d) => { + // if (d.data.attributes.) + // }) + + // // // some more custom logic + // // meta.date = Date.now() + + // return { data, meta }; + // }, + + // greets https://docs.strapi.io/dev-docs/backend-customization/controllers#extending-core-controllers + // greets https://docs.strapi.io/dev-docs/backend-customization/controllers#adding-a-new-controller + // Method 2: Wrapping a core action (leaves core logic in place) + async create(ctx) { + console.log('>> create a tag vod relation') + // only allow unique tag, vod combos + + const { query } = ctx.request; + + const userId = ctx?.state?.user?.id; + if (!userId) return ctx.badRequest("There was no user id in the request!"); + if (!ctx.request.body.data) return ctx.badRequest('data was missing from body'); + if (!ctx.request.body.data.tag) return ctx.badRequest('tag was missing from data'); + if (!ctx.request.body.data.vod) return ctx.badRequest('vod was missing from data'); + + const { tag: tagId, vod: vodId } = ctx.request.body.data; + + console.log(`lets make a combo entityService.findMany`) + const combo = await strapi.entityService.findMany('api::tag-vod-relation.tag-vod-relation', { + populate: ['tag', 'vod'], + filters: { + $and: [{ + tag: { + id: { + $eq: ctx.request.body.data.tag + } + } + }, { + vod: { + id: { + $eq: ctx.request.body.data.vod + } + } + }] + } + }) + + if (combo.length > 0) { + return ctx.badRequest('this vod already has that tag'); + } + + // @todo add votes and creator + ctx.request.body.data.creator = userId + ctx.request.body.data.votes = 2 + + const parseBody = (ctx) => { + if (ctx.is('multipart')) { + return parseMultipartData(ctx); + } + + const { data } = ctx.request.body || {}; + + return { data }; + }; + + + const sanitizedInputData = { + vod: vodId, + tag: tagId, + publishedAt: new Date(), + creator: userId, + creatorId: userId, + votes: 2 + } + + + + + + const entity = await strapi + .service('api::tag-vod-relation.tag-vod-relation') + .create({ + ...query, + data: sanitizedInputData, + populate: { vod: true, tag: true } + }); + + const sanitizedEntity = await this.sanitizeOutput(entity, ctx); + + return this.transformResponse({ ...sanitizedEntity }); + }, + + + async tagVod (ctx) { + + // create tag if needed + const userId = ctx?.state?.user?.id; + if (!userId) return ctx.badRequest("There was no user id in the request!"); + if (!ctx.request.body.data) return ctx.badRequest('data was missing from body'); + if (!ctx.request.body.data.tagName) return ctx.badRequest('tagName was missing from data'); + if (!ctx.request.body.data.vodId) return ctx.badRequest('vodId was missing from data'); + + const { tagName, vodId } = ctx.request.body.data; + + + const tag = await strapi.service('api::tag.tag').assertTag(tagName, userId); + + + try { + const tvr = await strapi.service('api::tag-vod-relation.tag-vod-relation').assertTvr(tag.id, vodId, userId); + + + const sanitizedEntity = await this.sanitizeOutput(tvr, ctx); + return this.transformResponse({ ...sanitizedEntity }); + } catch (e) { + console.error(e) + ctx.badRequest('Vod Tag could not be created.') + } + + }, + + async deleteMine (ctx) { + // // some custom logic here + // ctx.query = { ...ctx.query, local: 'en' } + + + + const userId = ctx?.state?.user?.id; + if (!userId) return ctx.badRequest("There was no user id in the request!"); + if (!ctx.request.params.id) return ctx.badRequest('id was missing from params'); + const { id } = ctx.request.params; + + // constraints + // only able to delete tagVodRelation if + // * creator + // * publishedAt isBefore(now-24h) + + + // get the tvr the user wants to delete + const tvrToDelete = await strapi.entityService.findOne('api::tag-vod-relation.tag-vod-relation', id, { + populate: { + tag: true, + vod: true, + creator: true, + } + }) + + if (!tvrToDelete) return ctx.badRequest('Tag to be deleted does not exist.'); + + if (tvrToDelete.creator.id !== userId) + ctx.forbidden('only the creator of the tag can delete it'); + + if ((new Date(tvrToDelete.createdAt).valueOf()+86400000) < new Date().valueOf()) + ctx.forbidden('cannot delete tags older than 24 hours') + + // Calling the default core action + const { data, meta } = await super.delete(ctx); + + // delete the related tag if it has no other vod + // @todo?? or maybe this is handled by lifecycle hook? + + // // some more custom logic + // meta.date = Date.now() + + return { data, meta }; + } + + +})); + diff --git a/packages/strapi-borked/src/api/tag-vod-relation/routes/tag-vod-relation.js b/packages/strapi-borked/src/api/tag-vod-relation/routes/tag-vod-relation.js new file mode 100644 index 0000000..2564f0f --- /dev/null +++ b/packages/strapi-borked/src/api/tag-vod-relation/routes/tag-vod-relation.js @@ -0,0 +1,51 @@ +'use strict'; + +/** + * tag-vod-relation router + */ + +const { createCoreRouter } = require('@strapi/strapi').factories; + +const defaultRouter = createCoreRouter('api::tag-vod-relation.tag-vod-relation'); + +// greets https://forum.strapi.io/t/how-to-add-custom-routes-to-core-routes-in-strapi-4/14070/7 +const customRouter = (innerRouter, extraRoutes = []) => { + let routes; + return { + get prefix() { + return innerRouter.prefix; + }, + get routes() { + if (!routes) routes = extraRoutes.concat(innerRouter.routes) + return routes; + }, + }; +}; + +const myExtraRoutes = [ + { + method: "POST", + path: "/tag-vod-relations/relate", + handler: "api::tag-vod-relation.tag-vod-relation.relate" + }, + // { + // method: 'GET', + // path: '/tag-vod-relations', + // handler: 'api::tag-vod-relation.tag-vod-relation.find' + // }, + { + method: "PUT", + path: "/tag-vod-relations/vote", + handler: "api::tag-vod-relation.tag-vod-relation.vote" + }, { + method: 'POST', + path: '/tag-vod-relations/tag', + handler: 'api::tag-vod-relation.tag-vod-relation.tagVod' + }, { + method: 'DELETE', + path: '/tag-vod-relations/deleteMine/:id', + handler: 'api::tag-vod-relation.tag-vod-relation.deleteMine' + } +]; + +module.exports = customRouter(defaultRouter, myExtraRoutes); \ No newline at end of file diff --git a/packages/strapi-borked/src/api/tag-vod-relation/services/tag-vod-relation.js b/packages/strapi-borked/src/api/tag-vod-relation/services/tag-vod-relation.js new file mode 100644 index 0000000..e958bbc --- /dev/null +++ b/packages/strapi-borked/src/api/tag-vod-relation/services/tag-vod-relation.js @@ -0,0 +1,69 @@ +'use strict'; + +/** + * tag-vod-relation service + */ + +const { createCoreService } = require('@strapi/strapi').factories; + +module.exports = createCoreService('api::tag-vod-relation.tag-vod-relation', ({ strapi }) => ({ + + + async assertTvr(tagId, vodId, userId) { + + if (!tagId) throw new Error('tagId was missing in request'); + if (!vodId) throw new Error('vodId was missing in request'); + if (!userId) throw new Error('userId was missing in request'); + + + + let existingTvr; + existingTvr = await strapi.entityService + .findMany('api::tag-vod-relation.tag-vod-relation', { + limit: 1, + filters: { + $and: [ + { + tag: { + id: tagId, + }, + }, + { + vod: { + id: vodId + } + } + ] + }, + populate: ['tag', 'vod'] + }) + + + if (existingTvr.length === 0) { + const newTvr = await strapi.entityService.create('api::tag-vod-relation.tag-vod-relation', { + data: { + tag: tagId, + vod: vodId, + creator: userId, + creatorId: userId, + }, + populate: { + tag: true, + vod: true + } + }) + + // trigger data revalidation in next.js server + // fetch(`${nextJsServerUrl}/`) + return newTvr; + } else { + + return existingTvr[0]; + } + + + }, + +})); + + diff --git a/packages/strapi-borked/src/api/tag/content-types/tag/schema.json b/packages/strapi-borked/src/api/tag/content-types/tag/schema.json new file mode 100644 index 0000000..2884619 --- /dev/null +++ b/packages/strapi-borked/src/api/tag/content-types/tag/schema.json @@ -0,0 +1,38 @@ +{ + "kind": "collectionType", + "collectionName": "tags", + "info": { + "singularName": "tag", + "pluralName": "tags", + "displayName": "Tag", + "description": "" + }, + "options": { + "draftAndPublish": true + }, + "pluginOptions": {}, + "attributes": { + "name": { + "type": "string", + "unique": true, + "required": true + }, + "toy": { + "type": "relation", + "relation": "manyToOne", + "target": "api::toy.toy", + "inversedBy": "tags" + }, + "vods": { + "type": "relation", + "relation": "manyToMany", + "target": "api::vod.vod", + "inversedBy": "tags" + }, + "creator": { + "type": "relation", + "relation": "oneToOne", + "target": "plugin::users-permissions.user" + } + } +} diff --git a/packages/strapi-borked/src/api/tag/controllers/tag.js b/packages/strapi-borked/src/api/tag/controllers/tag.js new file mode 100644 index 0000000..51669a9 --- /dev/null +++ b/packages/strapi-borked/src/api/tag/controllers/tag.js @@ -0,0 +1,87 @@ +'use strict'; + +/** + * tag controller + */ + +const { createCoreController } = require('@strapi/strapi').factories; +const { sanitize } = require('@strapi/utils'); + + +module.exports = createCoreController('api::tag.tag', ({ strapi }) => ({ + + async random(ctx) { + const numberOfTags = 10; // Change this number to the desired number of random tags + const contentType = strapi.contentType('api::vod.vod'); + + // Fetch only the 'id' field of all tags + const tagIds = (await strapi.entityService.findMany( + "api::tag.tag", + { + fields: ['id'], + } + )).map(tag => tag.id); + + + const selectedTags = []; + + // Randomly select the specified number of tag IDs + for (let i = 0; i < numberOfTags; i++) { + const randomIndex = Math.floor(Math.random() * tagIds.length); + const randomTagId = tagIds[randomIndex]; + + + // Fetch the full details of the randomly selected tag using its ID + const rawTag = await strapi.entityService.findOne( + "api::tag.tag", + randomTagId, // Use the tag's ID + { + filter: { + publishedAt: { + $notNull: true, + }, + }, + fields: ['id', 'name'] + } + ); + + selectedTags.push(await sanitize.contentAPI.output(rawTag, contentType, { auth: ctx.state.auth })); + + // Remove the selected tag ID from the array to avoid duplicates + tagIds.splice(randomIndex, 1); + } + + ctx.body = selectedTags; + }, + + + + async createTagRelation(ctx) { + + // we have this controller which associates a tag with a vod + // this exists so users can indirectly update vod records which they dont have permissions to update + // first we need to get the user's request. + // they are telling us a vod ID and a tag ID + // our job is to get a reference to the vod, and add the tag relation. + + if (!ctx.request.body.data) return ctx.badRequest('data was missing from body'); + if (!ctx.request.body.data.tag) return ctx.badRequest('tag was missing from data'); + if (!ctx.request.body.data.vod) return ctx.badRequest('vod was missing from data'); + + const { tag, vod: vodId } = ctx.request.body.data; + + + + await strapi.entityService.update('api::vod.vod', vodId, { + data: { + tags: { + connect: [tag] + } + } + }) + + return 'OK' + + }, +})); + diff --git a/packages/strapi-borked/src/api/tag/routes/tag.js b/packages/strapi-borked/src/api/tag/routes/tag.js new file mode 100644 index 0000000..db82f8f --- /dev/null +++ b/packages/strapi-borked/src/api/tag/routes/tag.js @@ -0,0 +1,37 @@ +'use strict'; + +/** + * tag router + */ + +const { createCoreRouter } = require('@strapi/strapi').factories; +const defaultRouter = createCoreRouter('api::tag.tag'); + +// greets https://forum.strapi.io/t/how-to-add-custom-routes-to-core-routes-in-strapi-4/14070/7 +const customRouter = (innerRouter, extraRoutes = []) => { + let routes; + return { + get prefix() { + return innerRouter.prefix; + }, + get routes() { + if (!routes) routes = extraRoutes.concat(innerRouter.routes) + return routes; + }, + }; +}; + +const myExtraRoutes = [ + { + method: "POST", + path: "/tag/tagRelation", + handler: "api::tag.tag.createTagRelation" + }, + { + method: 'GET', + path: '/tag/random', + handler: 'api::tag.tag.random' + } +]; + +module.exports = customRouter(defaultRouter, myExtraRoutes) diff --git a/packages/strapi-borked/src/api/tag/services/tag.js b/packages/strapi-borked/src/api/tag/services/tag.js new file mode 100644 index 0000000..538bebc --- /dev/null +++ b/packages/strapi-borked/src/api/tag/services/tag.js @@ -0,0 +1,46 @@ +'use strict'; + +/** + * tag service + */ + +const { createCoreService } = require('@strapi/strapi').factories; + +module.exports = createCoreService('api::tag.tag', ({ strapi }) => ({ + async assertTag(tagName, userId) { + + if (!tagName) throw new Error('tagName was missing from request'); + if (!userId) throw new Error('userId was missing from request'); + + let tagEntry; + + // does the named tag already exist? + // tagEntry = await strapi.db.query('api::tag.tag') + // .findOne({ where: { name: tagName } }); + tagEntry = (await strapi.entityService.findMany('api::tag.tag', { + limit: 1, + filters: { + $and: [ + { + publishedAt: { $notNull: true }, + }, + { + name: tagName + } + ] + } + }))[0] + + if (!tagEntry) { + tagEntry = await strapi.entityService.create('api::tag.tag', { + data: { + name: tagName, + creator: userId, + publishedAt: new Date(), + } + }) + } + + return tagEntry; + }, +})); diff --git a/packages/strapi-borked/src/api/timestamp/content-types/timestamp/schema.json b/packages/strapi-borked/src/api/timestamp/content-types/timestamp/schema.json new file mode 100644 index 0000000..71b8ffb --- /dev/null +++ b/packages/strapi-borked/src/api/timestamp/content-types/timestamp/schema.json @@ -0,0 +1,47 @@ +{ + "kind": "collectionType", + "collectionName": "timestamps", + "info": { + "singularName": "timestamp", + "pluralName": "timestamps", + "displayName": "Timestamp", + "description": "" + }, + "options": { + "draftAndPublish": false, + "populateCreatorFields": true + }, + "pluginOptions": {}, + "attributes": { + "time": { + "type": "integer", + "required": true + }, + "tag": { + "type": "relation", + "relation": "oneToOne", + "target": "api::tag.tag", + "required": true + }, + "vod": { + "type": "relation", + "relation": "manyToOne", + "target": "api::vod.vod", + "inversedBy": "timestamps" + }, + "creatorId": { + "type": "integer", + "required": true + }, + "upvoters": { + "type": "relation", + "relation": "oneToMany", + "target": "plugin::users-permissions.user" + }, + "downvoters": { + "type": "relation", + "relation": "oneToMany", + "target": "plugin::users-permissions.user" + } + } +} diff --git a/packages/strapi-borked/src/api/timestamp/controllers/timestamp.js b/packages/strapi-borked/src/api/timestamp/controllers/timestamp.js new file mode 100644 index 0000000..a131f44 --- /dev/null +++ b/packages/strapi-borked/src/api/timestamp/controllers/timestamp.js @@ -0,0 +1,166 @@ +'use strict'; + +/** + * timestamp controller + */ + +const { createCoreController } = require('@strapi/strapi').factories; + +module.exports = createCoreController('api::timestamp.timestamp', ({ strapi }) => ({ + + + async find(ctx) { + const { data, meta } = await super.find(ctx); + + // Iterate over each timestamp in the data array + const timestampsWithVotes = await Promise.all(data.map(async (timestamp) => { + // Retrieve the upvoters count for the current timestamp + // Retrieve the downvoters count for the current timestamp + const entry = await strapi.db + .query('api::timestamp.timestamp') + .findOne({ + populate: ['upvoters', 'downvoters'], + where: { + id: timestamp.id + } + }); + + const upvotesCount = entry.upvoters.length + const downvotesCount = entry.downvoters.length + + // Create new properties "upvotes" and "downvotes" on the timestamp object + timestamp.attributes.upvotes = upvotesCount; + timestamp.attributes.downvotes = downvotesCount; + + return timestamp; + })); + + + return { data: timestampsWithVotes, meta }; + }, + + + async assert(ctx) { + const userId = ctx?.state?.user?.id; + if (!userId) return ctx.badRequest("There was no user id in the request!"); + if (!ctx.request.body.data) return ctx.badRequest('data was missing from body'); + if (!ctx.request.body.data.tagId) return ctx.badRequest('tagId was missing from data'); + if (ctx.request.body.data.time === undefined || ctx.request.body.data.time === null || ctx.request.body.data.time < 0) return ctx.badRequest('time was missing from data'); + if (!ctx.request.body.data.vodId) return ctx.badRequest('vodId was missing from data'); + const { time, tagId, vodId } = ctx.request.body.data; + const timestamp = await strapi.service('api::timestamp.timestamp').assertTimestamp(userId, tagId, vodId, time); + return timestamp; + }, + + + // greets https://docs.strapi.io/dev-docs/backend-customization/controllers#extending-core-controllers + // greets https://docs.strapi.io/dev-docs/backend-customization/controllers#adding-a-new-controller + // Method 2: Wrapping a core action (leaves core logic in place) + async create(ctx) { + // add creatorId to the record + const userId = ctx?.state?.user?.id; + if (!userId) return ctx.badRequest("There was no user id in the request!"); + if (!ctx.request.body.data) return ctx.badRequest('data was missing from body'); + if (!ctx.request.body.data.tag) return ctx.badRequest('tag was missing from data'); + const { time, tag } = ctx.request.body.data; + + ctx.request.body.data.creatorId = userId + + // does the timestamp already exist with same combination of time+tag? + const duplicate = await strapi.db.query('api::timestamp.timestamp') + .findOne({ where: { time, tag }}) + + if (!!duplicate) return ctx.badRequest('A duplicate timestamp already exists!'); + + // Calling the default core action + const res = await super.create(ctx); + + return res + }, + + + async vote(ctx) { + const userId = ctx?.state?.user?.id; + const { direction } = ctx.request.body.data; + if (!ctx.request.params.id) return ctx.badRequest('id was missing from params'); + const { id } = ctx.request.params; + // get the ts to be voted on + const ts = await strapi.entityService.findOne('api::timestamp.timestamp', id) + if (!ts) return ctx.badRequest('timestamp does not exist'); + const res = await strapi.entityService.update('api::timestamp.timestamp', id, { + data: { + upvoters: direction === 1 ? { connect: [userId] } : { disconnect: [userId] }, + downvoters: direction === 1 ? { disconnect: [userId] } : { connect: [userId] } + } + }); + return res; + }, + + + + async delete(ctx) { + const userId = ctx?.state?.user?.id; + const { id } = ctx.request.params; + + // get the ts to be deleted + const ts = await strapi.entityService.findOne('api::timestamp.timestamp', id) + if (!ts) return ctx.badRequest('Timestamp does not exist') + + + // Refuse to delete if not the tag creator + if (ts.creatorId !== userId) return ctx.forbidden('Only the timestamp creator can delete the timestamp.') + + + const res = await super.delete(ctx) + return res + + }, + + + async deleteMine (ctx) { + // // some custom logic here + // ctx.query = { ...ctx.query, local: 'en' } + + const userId = ctx?.state?.user?.id; + if (!userId) return ctx.badRequest("There was no user id in the request!"); + if (!ctx.request.params.id) return ctx.badRequest('id was missing from params'); + const { id } = ctx.request.params; + + // constraints + // only able to delete tagVodRelation if + // * creator + // * publishedAt isBefore(now-24h) + + + // get the tvr the user wants to delete + const timestampToDelete = await strapi.entityService.findOne('api::timestamp.timestamp', id, { + populate: { + tag: true, + vod: true + } + }) + + if (!timestampToDelete) return ctx.badRequest('Timestamp to be deleted does not exist.'); + + + if (timestampToDelete.creatorId !== userId) + ctx.forbidden('only the creator of the timestamp can delete it'); + + if ((new Date(timestampToDelete.createdAt).valueOf()+86400000) < new Date().valueOf()) + ctx.forbidden('cannot delete tags older than 24 hours') + + // Calling the default core action + const { data, meta } = await super.delete(ctx); + + // delete the related tag if it has no other vod + // @todo?? or maybe this is handled by lifecycle hook? + + // // some more custom logic + // meta.date = Date.now() + + return { data, meta }; + } + + +})) + diff --git a/packages/strapi-borked/src/api/timestamp/routes/timestamp.js b/packages/strapi-borked/src/api/timestamp/routes/timestamp.js new file mode 100644 index 0000000..1c8e7c6 --- /dev/null +++ b/packages/strapi-borked/src/api/timestamp/routes/timestamp.js @@ -0,0 +1,53 @@ +'use strict'; + +/** + * timestamp router + */ + +const { createCoreRouter } = require('@strapi/strapi').factories; + + +const defaultRouter = createCoreRouter('api::timestamp.timestamp'); + +// greets https://forum.strapi.io/t/how-to-add-custom-routes-to-core-routes-in-strapi-4/14070/7 +const customRouter = (innerRouter, extraRoutes = []) => { + let routes; + return { + get prefix() { + return innerRouter.prefix; + }, + get routes() { + if (!routes) routes = extraRoutes.concat(innerRouter.routes) + return routes; + }, + }; +}; + + + +const myExtraRoutes = [ + { + method: 'POST', + path: '/timestamps/assert', + handler: 'api::timestamp.timestamp.assert' + }, + { + method: "PUT", + path: "/timestamps/:id/vote", + handler: "api::timestamp.timestamp.vote" + }, + { + method: 'DELETE', + path: '/timestamps/:id', + handler: 'api::timestamp.timestamp.delete' + }, + { + method: 'DELETE', + path: '/timestamps/deleteMine/:id', + handler: 'api::timestamp.timestamp.deleteMine' + } +]; + +module.exports = customRouter(defaultRouter, myExtraRoutes); + + diff --git a/packages/strapi-borked/src/api/timestamp/services/timestamp.js b/packages/strapi-borked/src/api/timestamp/services/timestamp.js new file mode 100644 index 0000000..bfa84c2 --- /dev/null +++ b/packages/strapi-borked/src/api/timestamp/services/timestamp.js @@ -0,0 +1,44 @@ +'use strict'; + +/** + * timestamp service + */ + +const { createCoreService } = require('@strapi/strapi').factories; + +module.exports = createCoreService('api::timestamp.timestamp', ({ strapi }) => ({ + async assertTimestamp(userId, tagId, vodId, time) { + const existingTimestamp = await strapi.entityService.findMany('api::timestamp.timestamp', { + populate: ['vod', 'tag'], + filters: { + $and: [ + { + tag: { + id: tagId + } + }, + { + vod: { + id: vodId + } + }, + { + time: parseInt(time) + } + ] + }, + limit: 1 + }) + if (existingTimestamp.length > 0) return existingTimestamp[0]; + const newTimestamp = await strapi.entityService.create('api::timestamp.timestamp', { + data: { + tag: tagId, + vod: vodId, + creatorId: userId, + time: time, + } + }); + + return newTimestamp; + } +})); diff --git a/packages/strapi-borked/src/api/toy/content-types/toy/schema.json b/packages/strapi-borked/src/api/toy/content-types/toy/schema.json new file mode 100644 index 0000000..4e2baba --- /dev/null +++ b/packages/strapi-borked/src/api/toy/content-types/toy/schema.json @@ -0,0 +1,51 @@ +{ + "kind": "collectionType", + "collectionName": "toys", + "info": { + "singularName": "toy", + "pluralName": "toys", + "displayName": "Toy", + "description": "" + }, + "options": { + "draftAndPublish": false + }, + "pluginOptions": {}, + "attributes": { + "tags": { + "type": "relation", + "relation": "oneToMany", + "target": "api::tag.tag", + "mappedBy": "toy" + }, + "make": { + "type": "string", + "required": true + }, + "model": { + "type": "string", + "required": true + }, + "aspectRatio": { + "type": "string", + "default": "2:1", + "required": true + }, + "image2": { + "type": "string", + "default": "https://futureporn-b2.b-cdn.net/default-thumbnail.webp", + "required": true + }, + "linkTag": { + "type": "relation", + "relation": "oneToOne", + "target": "api::tag.tag" + }, + "vtubers": { + "type": "relation", + "relation": "oneToMany", + "target": "api::vtuber.vtuber", + "mappedBy": "toy" + } + } +} diff --git a/packages/strapi-borked/src/api/toy/controllers/toy.js b/packages/strapi-borked/src/api/toy/controllers/toy.js new file mode 100644 index 0000000..32bae69 --- /dev/null +++ b/packages/strapi-borked/src/api/toy/controllers/toy.js @@ -0,0 +1,9 @@ +'use strict'; + +/** + * toy controller + */ + +const { createCoreController } = require('@strapi/strapi').factories; + +module.exports = createCoreController('api::toy.toy'); diff --git a/packages/strapi-borked/src/api/toy/routes/toy.js b/packages/strapi-borked/src/api/toy/routes/toy.js new file mode 100644 index 0000000..21d9d6a --- /dev/null +++ b/packages/strapi-borked/src/api/toy/routes/toy.js @@ -0,0 +1,9 @@ +'use strict'; + +/** + * toy router + */ + +const { createCoreRouter } = require('@strapi/strapi').factories; + +module.exports = createCoreRouter('api::toy.toy'); diff --git a/packages/strapi-borked/src/api/toy/services/toy.js b/packages/strapi-borked/src/api/toy/services/toy.js new file mode 100644 index 0000000..cd2dd6d --- /dev/null +++ b/packages/strapi-borked/src/api/toy/services/toy.js @@ -0,0 +1,9 @@ +'use strict'; + +/** + * toy service + */ + +const { createCoreService } = require('@strapi/strapi').factories; + +module.exports = createCoreService('api::toy.toy'); diff --git a/packages/strapi-borked/src/api/tweet/content-types/tweet/lifecycles.js b/packages/strapi-borked/src/api/tweet/content-types/tweet/lifecycles.js new file mode 100644 index 0000000..b92154a --- /dev/null +++ b/packages/strapi-borked/src/api/tweet/content-types/tweet/lifecycles.js @@ -0,0 +1,136 @@ +const generateCuid = require('../../../../../misc/generateCuid.js'); + +const cbUrlRegex = /chaturbate\.com/i; +const fanslyUrlRegex = /https?:\/\/(?:www\.)?fans(?:\.ly|ly\.com)\/r\/[a-zA-Z0-9_]+/; + +const cbAlternativeUrls = [ + 'shorturl.at/tNUVY' // used by ProjektMelody in the early days +] + + +/** + * Returns true if the tweet contains a chaturbate.com link + * + * @param {Object} tweet + * @returns {Boolean} + */ +const containsCBInviteLink = (tweet) => { + const containsCbUrl = (link) => { + if (!link?.url) return false; + const isCbUrl = cbUrlRegex.test(link.url); + const isAlternativeCbUrl = cbAlternativeUrls.some(alternativeUrl => link.url.includes(alternativeUrl)); + return isCbUrl || isAlternativeCbUrl; + } + try { + if (!tweet?.links) return false; + return tweet.links.some(containsCbUrl) + } catch (e) { + logger.log({ level: 'error', message: 'ERROR ERROR ERROR ERROR ERROR ERROR ERROR ERROR ERROR ERROR ERROR ERROR ERROR ERROR ERROR ERROR ERROR ERROR' }); + logger.log({ level: 'error', message: e }); + return false; + } +}; + +const containsFanslyInviteLink = (tweet) => { + const containsFanslyUrl = (link) => { + if (!link?.url) return false; + return (fanslyUrlRegex.test(link?.url)) + } + try { + if (!tweet?.links) return false; + return tweet.links.some(containsFanslyUrl) + } catch (e) { + logger.log({ level: 'error', message: 'ERROR ERROR ERROR ERROR ERROR ERROR ERROR ERROR ERROR ERROR ERROR ERROR ERROR ERROR ERROR ERROR ERROR ERROR' }); + logger.log({ level: 'error', message: e }); + return false; + } +}; + + +const deriveTitle = (text) => { + // greetz https://www.urlregex.com/ + const urlRegex = /((([A-Za-z]{3,9}:(?:\/\/)?)(?:[\-;:&=\+\$,\w]+@)?[A-Za-z0-9\.\-]+|(?:www\.|[\-;:&=\+\$,\w]+@)[A-Za-z0-9\.\-]+)((?:\/[\+~%\/\.\w\-_]*)?\??(?:[\-\+=&;%@\.\w_]*)#?(?:[\.\!\/\\\w]*))?)/g; + let title = text + .replace(urlRegex, '') // remove urls + .replace(/\n/g, ' ') // replace newlines with spaces + .replace(/>/g, '>') // gimme dem greater-than brackets + .replace(/</g, '<') // i want them less-thans too + .replace(/&/g, '&') // ampersands are sexy + .replace(/\s+$/, ''); // remove trailing whitespace + return title; +}; + + + + +module.exports = { + async afterCreate(event) { + // * [ ] Create Stream + const id = event.result.id; + console.log(`>>> tweet afterCreate id=${id}`); + const { data } = event.params; + + console.log(data); + + // IF this tweet was a fansly or chaturbate invite, create & associate Stream + if (data.isChaturbateInvite || data.isFanslyInvite) { + const stream = await strapi.entityService.create('api::stream.stream', { + data: { + tweet: id, + vtuber: data.vtuber, + date: data.date, + date_str: data.date, + date2: data.date, + archiveStatus: 'missing', + cuid: generateCuid() + } + }); + + // console.log(data) + console.log(`stream.id=${stream.id}`); + + // const existingData = await strapi.entityService.findOne("api::stream.stream", id, { + // populate: ['vods'] + // }) + } + }, + async beforeCreate(event) { + // * [x] Set platform to CB or Fansly + // * [x] Set vtuber + // * [x] Set date + // * [x] Set id_str + // * [x] Set url + + const { data, where, select, populate } = event.params; + console.log('>>> tweet beforeCreate!'); + + const tweet = JSON.parse(data.json); + // console.log(tweet); + console.log(`containsCBInviteLink=${containsCBInviteLink(tweet)}, containsFanslyInviteLink=${containsFanslyInviteLink(tweet)}`); + + + data.isChaturbateInvite = containsCBInviteLink(tweet); + data.isFanslyInvite = containsFanslyInviteLink(tweet); + + const tweetDate = new Date(tweet.date).toISOString(); + data.id_str = tweet.id_str; + data.date = tweetDate; + data.date2 = tweetDate; + data.url = tweet.url; + + // Set VTuber + const twitterUsername = tweet.user.username; + const vtuberRecords = await strapi.entityService.findMany("api::vtuber.vtuber", { + fields: ['displayName', 'slug', 'id'], + filters: { + twitter: { + $endsWithi: twitterUsername + } + } + }); + if (!!vtuberRecords[0]) data.vtuber = vtuberRecords[0].id; + + + + } +} \ No newline at end of file diff --git a/packages/strapi-borked/src/api/tweet/content-types/tweet/schema.json b/packages/strapi-borked/src/api/tweet/content-types/tweet/schema.json new file mode 100644 index 0000000..3d94b7c --- /dev/null +++ b/packages/strapi-borked/src/api/tweet/content-types/tweet/schema.json @@ -0,0 +1,49 @@ +{ + "kind": "collectionType", + "collectionName": "tweets", + "info": { + "singularName": "tweet", + "pluralName": "tweets", + "displayName": "Tweet", + "description": "" + }, + "options": { + "draftAndPublish": false + }, + "pluginOptions": {}, + "attributes": { + "id_str": { + "type": "string", + "required": false, + "unique": true + }, + "url": { + "type": "string", + "required": false + }, + "date2": { + "type": "string", + "required": false, + "unique": true + }, + "json": { + "type": "text", + "required": true + }, + "vtuber": { + "type": "relation", + "relation": "oneToOne", + "target": "api::vtuber.vtuber" + }, + "isChaturbateInvite": { + "type": "boolean" + }, + "isFanslyInvite": { + "type": "boolean" + }, + "date": { + "type": "datetime", + "unique": true + } + } +} diff --git a/packages/strapi-borked/src/api/tweet/controllers/tweet.js b/packages/strapi-borked/src/api/tweet/controllers/tweet.js new file mode 100644 index 0000000..bbb1fed --- /dev/null +++ b/packages/strapi-borked/src/api/tweet/controllers/tweet.js @@ -0,0 +1,9 @@ +'use strict'; + +/** + * tweet controller + */ + +const { createCoreController } = require('@strapi/strapi').factories; + +module.exports = createCoreController('api::tweet.tweet'); diff --git a/packages/strapi-borked/src/api/tweet/routes/tweet.js b/packages/strapi-borked/src/api/tweet/routes/tweet.js new file mode 100644 index 0000000..efce886 --- /dev/null +++ b/packages/strapi-borked/src/api/tweet/routes/tweet.js @@ -0,0 +1,9 @@ +'use strict'; + +/** + * tweet router + */ + +const { createCoreRouter } = require('@strapi/strapi').factories; + +module.exports = createCoreRouter('api::tweet.tweet'); diff --git a/packages/strapi-borked/src/api/tweet/services/tweet.js b/packages/strapi-borked/src/api/tweet/services/tweet.js new file mode 100644 index 0000000..9be1baf --- /dev/null +++ b/packages/strapi-borked/src/api/tweet/services/tweet.js @@ -0,0 +1,9 @@ +'use strict'; + +/** + * tweet service + */ + +const { createCoreService } = require('@strapi/strapi').factories; + +module.exports = createCoreService('api::tweet.tweet'); diff --git a/packages/strapi-borked/src/api/user-submitted-content/content-types/user-submitted-content/lifecycles.js b/packages/strapi-borked/src/api/user-submitted-content/content-types/user-submitted-content/lifecycles.js new file mode 100644 index 0000000..0b4ed24 --- /dev/null +++ b/packages/strapi-borked/src/api/user-submitted-content/content-types/user-submitted-content/lifecycles.js @@ -0,0 +1,57 @@ +const { S3Client, DeleteObjectCommand } = require("@aws-sdk/client-s3"); +require('dotenv').config() + +if (!process.env.S3_USC_BUCKET_NAME) throw new Error('S3_USC_BUCKET_NAME must be defined in env'); +if (!process.env.S3_USC_BUCKET_ENDPOINT) throw new Error('S3_USC_BUCKET_ENDPOINT must be defined in env'); +if (!process.env.S3_USC_BUCKET_REGION) throw new Error('S3_USC_BUCKET_REGION must be defined in env'); + +// AWS.config.loadFromPath('./credentials-ehl.json'); + + + +module.exports = { + + + // when strapi deletes a USC, we delete the related files in the S3 bucket. + async afterDelete(event) { + + console.log('>>> afterDelete'); + console.log(event); + + const { result } = event; + + + + // a client can be shared by different commands. + const client = new S3Client({ + endpoint: process.env.S3_USC_BUCKET_ENDPOINT, + region: process.env.S3_USC_BUCKET_REGION + }); + // https://fp-usc-dev.s3.us-west-000.backblazeb2.com/GEB7_QcaUAAQ29O.jpg + + for (const file of result.files) { + console.log(`deleting ${file.key}`); + const res = await client.send(new DeleteObjectCommand({ + Bucket: process.env.S3_USC_BUCKET_NAME, + Key: file.key + })); + + console.log(res); + } + + + + // var s3 = new S3(); + // var params = { Bucket: process.env.S3_USC_BUCKET, Key: 'your object' }; + + // const res = await s3.deleteObject(params).promise(); + + // console.log('deletion complete.'); + // console.log(res); + + // , function(err, data) { + // if (err) console.log(err, err.stack); // error + // else console.log(); // deleted + // }); + } +} \ No newline at end of file diff --git a/packages/strapi-borked/src/api/user-submitted-content/content-types/user-submitted-content/schema.json b/packages/strapi-borked/src/api/user-submitted-content/content-types/user-submitted-content/schema.json new file mode 100644 index 0000000..e0e5896 --- /dev/null +++ b/packages/strapi-borked/src/api/user-submitted-content/content-types/user-submitted-content/schema.json @@ -0,0 +1,57 @@ +{ + "kind": "collectionType", + "collectionName": "user_submitted_contents", + "info": { + "singularName": "user-submitted-content", + "pluralName": "user-submitted-contents", + "displayName": "User Submitted Content", + "description": "" + }, + "options": { + "draftAndPublish": false + }, + "pluginOptions": {}, + "attributes": { + "uploader": { + "type": "relation", + "relation": "oneToOne", + "target": "plugin::users-permissions.user" + }, + "attribution": { + "type": "boolean", + "default": false + }, + "date": { + "type": "string", + "required": true + }, + "notes": { + "type": "richtext" + }, + "files": { + "type": "json", + "required": true + }, + "approved": { + "type": "boolean", + "default": false + }, + "vtuber": { + "type": "relation", + "relation": "oneToOne", + "target": "api::vtuber.vtuber" + }, + "uploaderId": { + "type": "integer" + }, + "streamCuid": { + "type": "string" + }, + "discordInteraction": { + "type": "relation", + "relation": "oneToOne", + "target": "api::discord-interaction.discord-interaction", + "mappedBy": "userSubmittedContent" + } + } +} diff --git a/packages/strapi-borked/src/api/user-submitted-content/controllers/user-submitted-content.js b/packages/strapi-borked/src/api/user-submitted-content/controllers/user-submitted-content.js new file mode 100644 index 0000000..cda33f8 --- /dev/null +++ b/packages/strapi-borked/src/api/user-submitted-content/controllers/user-submitted-content.js @@ -0,0 +1,64 @@ + +'use strict'; + +require('dotenv').config() + +if (!process.env.CDN_BUCKET_USC_URL) throw new Error('CDN_BUCKET_USC_URL environment variable is required!'); + +/** + * user-submitted-content controller + */ + +const { createCoreController } = require('@strapi/strapi').factories; + +// greets https://docs.strapi.io/dev-docs/backend-customization/controllers#adding-a-new-controller +module.exports = createCoreController('api::user-submitted-content.user-submitted-content', ({ strapi }) => ({ + + async createFromUppy(ctx) { + try { + // Destructure data from the request body + const { data } = ctx.request.body; + + console.log(data); + + // Check for required fields in the data + const requiredFields = ['files', 'vtuber', 'date', 'notes', 'attribution']; + if (!data) { + return ctx.badRequest('ctx.request.body.data was missing.'); + } + for (const field of requiredFields) { + console.log(`checking field=${field} data[field]=${data[field]}`); + if (data[field] === undefined || data[field] === null) { + return ctx.badRequest(`${field} was missing from request data.`); + } + } + + // Extract relevant data + const { files, vtuber, streamCuid, date, notes, attribution } = data; + const uploader = ctx.state.user.id; + const uploaderId = ctx.state.user.id; + + console.log('Creating user-submitted content'); + const usc = await strapi.entityService.create('api::user-submitted-content.user-submitted-content', { + data: { + uploader, + uploaderId, + files: files.map((f) => ({ ...f, cdnUrl: `${process.env.CDN_BUCKET_USC_URL}/${f.key}` })), + vtuber, + streamCuid, + date, + notes, + attribution, + } + }); + + return usc; + } catch (error) { + // Handle unexpected errors + console.error(error); + return ctx.badRequest('An error occurred while processing the request'); + } + } + + })); + \ No newline at end of file diff --git a/packages/strapi-borked/src/api/user-submitted-content/routes/user-submitted-content.js b/packages/strapi-borked/src/api/user-submitted-content/routes/user-submitted-content.js new file mode 100644 index 0000000..ed91c49 --- /dev/null +++ b/packages/strapi-borked/src/api/user-submitted-content/routes/user-submitted-content.js @@ -0,0 +1,33 @@ +'use strict'; + +/** + * user-submitted-content router + */ + +const { createCoreRouter } = require('@strapi/strapi').factories; + +const defaultRouter = createCoreRouter('api::user-submitted-content.user-submitted-content'); + +// greets https://forum.strapi.io/t/how-to-add-custom-routes-to-core-routes-in-strapi-4/14070/7 +const customRouter = (innerRouter, extraRoutes = []) => { + let routes; + return { + get prefix() { + return innerRouter.prefix; + }, + get routes() { + if (!routes) routes = extraRoutes.concat(innerRouter.routes) + return routes; + }, + }; +}; + +const myExtraRoutes = [ + { + method: "POST", + path: "/user-submitted-contents/createFromUppy", + handler: "api::user-submitted-content.user-submitted-content.createFromUppy" + } +]; + +module.exports = customRouter(defaultRouter, myExtraRoutes); \ No newline at end of file diff --git a/packages/strapi-borked/src/api/user-submitted-content/services/user-submitted-content.js b/packages/strapi-borked/src/api/user-submitted-content/services/user-submitted-content.js new file mode 100644 index 0000000..9c176aa --- /dev/null +++ b/packages/strapi-borked/src/api/user-submitted-content/services/user-submitted-content.js @@ -0,0 +1,9 @@ +'use strict'; + +/** + * user-submitted-content service + */ + +const { createCoreService } = require('@strapi/strapi').factories; + +module.exports = createCoreService('api::user-submitted-content.user-submitted-content'); diff --git a/packages/strapi-borked/src/api/vod/content-types/lifecycles.js b/packages/strapi-borked/src/api/vod/content-types/lifecycles.js new file mode 100644 index 0000000..03c64dd --- /dev/null +++ b/packages/strapi-borked/src/api/vod/content-types/lifecycles.js @@ -0,0 +1,25 @@ +const { init } = require('@paralleldrive/cuid2'); + +function generateCuid(event) { + const { data } = event.params; + if (!data.cuid) { + const length = 10; // 50% odds of collision after ~51,386,368 ids + const cuid = init({ length }); + event.params.data.cuid = cuid(); + } +} + +module.exports = { + async beforeUpdate(event) { + generateCuid(event); + }, + async beforeCreate(event) { + console.log(`>> beforeCreate! We are generating a CUID`); + console.log(`>> beforeCreate! We are generating a CUID`); + generateCuid(event); + }, + async afterCreate(event) { + console.log(`>> afterCreate! We are generating a CUID`); + generateCuid(event); + } +} \ No newline at end of file diff --git a/packages/strapi-borked/src/api/vod/content-types/vod/schema.json b/packages/strapi-borked/src/api/vod/content-types/vod/schema.json new file mode 100644 index 0000000..2446a76 --- /dev/null +++ b/packages/strapi-borked/src/api/vod/content-types/vod/schema.json @@ -0,0 +1,142 @@ +{ + "kind": "collectionType", + "collectionName": "vods", + "info": { + "singularName": "vod", + "pluralName": "vods", + "displayName": "VOD", + "description": "" + }, + "options": { + "draftAndPublish": true + }, + "pluginOptions": {}, + "attributes": { + "videoSrcHash": { + "type": "string", + "regex": "Qm[1-9A-HJ-NP-Za-km-z]{44,}|b[A-Za-z2-7]{58,}|B[A-Z2-7]{58,}|z[1-9A-HJ-NP-Za-km-z]{48,}|F[0-9A-F]{50,}", + "required": false, + "unique": true + }, + "video720Hash": { + "type": "string", + "unique": true, + "regex": "Qm[1-9A-HJ-NP-Za-km-z]{44,}|b[A-Za-z2-7]{58,}|B[A-Z2-7]{58,}|z[1-9A-HJ-NP-Za-km-z]{48,}|F[0-9A-F]{50,}" + }, + "video480Hash": { + "type": "string", + "regex": "Qm[1-9A-HJ-NP-Za-km-z]{44,}|b[A-Za-z2-7]{58,}|B[A-Z2-7]{58,}|z[1-9A-HJ-NP-Za-km-z]{48,}|F[0-9A-F]{50,}", + "unique": true + }, + "video360Hash": { + "type": "string", + "regex": "Qm[1-9A-HJ-NP-Za-km-z]{44,}|b[A-Za-z2-7]{58,}|B[A-Z2-7]{58,}|z[1-9A-HJ-NP-Za-km-z]{48,}|F[0-9A-F]{50,}", + "unique": true + }, + "video240Hash": { + "type": "string", + "regex": "Qm[1-9A-HJ-NP-Za-km-z]{44,}|b[A-Za-z2-7]{58,}|B[A-Z2-7]{58,}|z[1-9A-HJ-NP-Za-km-z]{48,}|F[0-9A-F]{50,}", + "unique": true + }, + "thinHash": { + "type": "string", + "regex": "Qm[1-9A-HJ-NP-Za-km-z]{44,}|b[A-Za-z2-7]{58,}|B[A-Z2-7]{58,}|z[1-9A-HJ-NP-Za-km-z]{48,}|F[0-9A-F]{50,}", + "unique": true + }, + "thiccHash": { + "type": "string", + "regex": "Qm[1-9A-HJ-NP-Za-km-z]{44,}|b[A-Za-z2-7]{58,}|B[A-Z2-7]{58,}|z[1-9A-HJ-NP-Za-km-z]{48,}|F[0-9A-F]{50,}", + "unique": true + }, + "announceTitle": { + "type": "string" + }, + "announceUrl": { + "type": "string", + "unique": false + }, + "note": { + "type": "text" + }, + "date": { + "type": "datetime" + }, + "date2": { + "type": "string", + "required": true + }, + "spoilers": { + "type": "richtext" + }, + "title": { + "type": "string" + }, + "uploader": { + "type": "relation", + "relation": "oneToOne", + "target": "plugin::users-permissions.user" + }, + "muxAsset": { + "type": "relation", + "relation": "oneToOne", + "target": "api::mux-asset.mux-asset" + }, + "videoSrcB2": { + "type": "relation", + "relation": "oneToOne", + "target": "api::b2-file.b2-file" + }, + "thumbnail": { + "type": "relation", + "relation": "oneToOne", + "target": "api::b2-file.b2-file" + }, + "chatLog": { + "type": "richtext" + }, + "tags": { + "type": "relation", + "relation": "manyToMany", + "target": "api::tag.tag", + "mappedBy": "vods" + }, + "timestamps": { + "type": "relation", + "relation": "oneToMany", + "target": "api::timestamp.timestamp", + "mappedBy": "vod" + }, + "tagVodRelations": { + "type": "relation", + "relation": "oneToMany", + "target": "api::tag-vod-relation.tag-vod-relation", + "mappedBy": "vod" + }, + "vtuber": { + "type": "relation", + "relation": "manyToOne", + "target": "api::vtuber.vtuber", + "inversedBy": "vods" + }, + "stream": { + "type": "relation", + "relation": "manyToOne", + "target": "api::stream.stream", + "inversedBy": "vods" + }, + "archiveStatus": { + "type": "enumeration", + "enum": [ + "missing", + "issue", + "good" + ], + "required": false, + "default": "issue" + }, + "cuid": { + "type": "string", + "unique": true + } + } +} diff --git a/packages/strapi-borked/src/api/vod/controllers/vod.js b/packages/strapi-borked/src/api/vod/controllers/vod.js new file mode 100644 index 0000000..9dc9ff2 --- /dev/null +++ b/packages/strapi-borked/src/api/vod/controllers/vod.js @@ -0,0 +1,85 @@ +'use strict'; + + +const { sanitize } = require('@strapi/utils'); + +if (!process.env.CDN_BUCKET_USC_URL) throw new Error('CDN_BUCKET_USC_URL environment variable is required!'); + +/** + * vod controller + */ + +const { createCoreController } = require('@strapi/strapi').factories; + +// greets https://docs.strapi.io/dev-docs/backend-customization/controllers#adding-a-new-controller +module.exports = createCoreController('api::vod.vod', ({ strapi }) => ({ + + async createFromUppy(ctx) { + + const uploaderId = ctx.state.user.id; + + if (!ctx.request.body.data) return ctx.badRequest("data was missing in request body"); + if (!ctx.request.body.data.date) return ctx.badRequest("date was missing"); + if (!ctx.request.body.data.b2Key) return ctx.badRequest("b2Key was missing"); + if (!ctx.request.body.data.b2UploadId) return ctx.badRequest("b2UploadId was missing"); + + + const videoSrcB2 = await strapi.entityService.create('api::b2-file.b2-file', { + data: { + url: `https://f000.backblazeb2.com/b2api/v1/b2_download_file_by_id?fileId=${ctx.request.body.data.b2UploadId}`, + key: ctx.request.body.data.b2Key, + uploadId: ctx.request.body.data.b2UploadId, + cdnUrl: `${process.env.CDN_BUCKET_USC_URL}/${ctx.request.body.data.b2Key}` + } + }); + + const vod = await strapi.entityService.create('api::vod.vod', { + data: { + notes: ctx.request.body.data.notes, + date: ctx.request.body.data.date, + videoSrcB2: videoSrcB2.id, + publishedAt: null, + uploader: uploaderId, + } + }); + + return vod; + }, + + // greets https://stackoverflow.com/a/73929966/1004931 + async random(ctx) { + const numberOfEntries = 1; + const contentType = strapi.contentType('api::vod.vod') + + // Fetch only the 'id' field of all VODs + const entries = await strapi.entityService.findMany( + "api::vod.vod", + { + fields: ['id'], + filters: { + publishedAt: { + $notNull: true, + }, + } + } + ); + + // Randomly select one entry + const randomEntry = entries[Math.floor(Math.random() * entries.length)]; + + // Fetch the full details of the randomly selected VOD + const rawVod = await strapi.entityService.findOne( + "api::vod.vod", + randomEntry.id, + { + populate: '*', + }, + ); + + const sanitizedOutput = await sanitize.contentAPI.output(rawVod, contentType, { auth: ctx.state.auth }); + + ctx.body = sanitizedOutput; + } + + }) +) \ No newline at end of file diff --git a/packages/strapi-borked/src/api/vod/routes/vod.js b/packages/strapi-borked/src/api/vod/routes/vod.js new file mode 100644 index 0000000..132dacf --- /dev/null +++ b/packages/strapi-borked/src/api/vod/routes/vod.js @@ -0,0 +1,38 @@ +'use strict'; + +/** + * vod router + */ + +const { createCoreRouter } = require('@strapi/strapi').factories; + +const defaultRouter = createCoreRouter('api::vod.vod'); + +// greets https://forum.strapi.io/t/how-to-add-custom-routes-to-core-routes-in-strapi-4/14070/7 +const customRouter = (innerRouter, extraRoutes = []) => { + let routes; + return { + get prefix() { + return innerRouter.prefix; + }, + get routes() { + if (!routes) routes = extraRoutes.concat(innerRouter.routes) + return routes; + }, + }; +}; + +const myExtraRoutes = [ + { + method: "POST", + path: "/vods/createFromUppy", + handler: "api::vod.vod.createFromUppy" + }, + { + method: "GET", + path: "/vods/random", + handler: "api::vod.vod.random" + } +]; + +module.exports = customRouter(defaultRouter, myExtraRoutes); \ No newline at end of file diff --git a/packages/strapi-borked/src/api/vod/services/vod.js b/packages/strapi-borked/src/api/vod/services/vod.js new file mode 100644 index 0000000..56fcec1 --- /dev/null +++ b/packages/strapi-borked/src/api/vod/services/vod.js @@ -0,0 +1,9 @@ +'use strict'; + +/** + * vod service + */ + +const { createCoreService } = require('@strapi/strapi').factories; + +module.exports = createCoreService('api::vod.vod'); diff --git a/packages/strapi-borked/src/api/vtuber/content-types/vtuber/lifecycles.js b/packages/strapi-borked/src/api/vtuber/content-types/vtuber/lifecycles.js new file mode 100644 index 0000000..2be365a --- /dev/null +++ b/packages/strapi-borked/src/api/vtuber/content-types/vtuber/lifecycles.js @@ -0,0 +1,23 @@ +const { createCanvas } = require('canvas'); + +function hexColorToBase64Image(hexColor) { + const canvas = createCanvas(1, 1); // Create a canvas + const ctx = canvas.getContext('2d'); + // Draw a rectangle filled with the hex color + ctx.fillStyle = hexColor; + ctx.fillRect(0, 0, canvas.width, canvas.height); + // Convert canvas content to base64 encoded image + const base64Image = canvas.toDataURL('image/png'); + return base64Image; +} + + + +module.exports = { + beforeUpdate(event) { + const { data, where, select, populate } = event.params; + const themeColor = event.params.data.themeColor; + const imageBlur = hexColorToBase64Image(themeColor); + event.params.data.imageBlur = imageBlur; + } +}; \ No newline at end of file diff --git a/packages/strapi-borked/src/api/vtuber/content-types/vtuber/schema.json b/packages/strapi-borked/src/api/vtuber/content-types/vtuber/schema.json new file mode 100644 index 0000000..4c64af0 --- /dev/null +++ b/packages/strapi-borked/src/api/vtuber/content-types/vtuber/schema.json @@ -0,0 +1,127 @@ +{ + "kind": "collectionType", + "collectionName": "vtubers", + "info": { + "singularName": "vtuber", + "pluralName": "vtubers", + "displayName": "Vtuber", + "description": "" + }, + "options": { + "draftAndPublish": true + }, + "pluginOptions": {}, + "attributes": { + "displayName": { + "type": "string", + "required": true + }, + "chaturbate": { + "type": "string" + }, + "twitter": { + "type": "string" + }, + "patreon": { + "type": "string" + }, + "twitch": { + "type": "string" + }, + "tiktok": { + "type": "string" + }, + "onlyfans": { + "type": "string" + }, + "youtube": { + "type": "string" + }, + "linktree": { + "type": "string" + }, + "carrd": { + "type": "string" + }, + "fansly": { + "type": "string" + }, + "pornhub": { + "type": "string" + }, + "discord": { + "type": "string" + }, + "reddit": { + "type": "string" + }, + "throne": { + "type": "string" + }, + "instagram": { + "type": "string" + }, + "facebook": { + "type": "string" + }, + "merch": { + "type": "string" + }, + "slug": { + "type": "string", + "required": true + }, + "vods": { + "type": "relation", + "relation": "oneToMany", + "target": "api::vod.vod", + "mappedBy": "vtuber" + }, + "description1": { + "type": "text", + "required": false + }, + "description2": { + "type": "text" + }, + "image": { + "type": "string", + "required": true + }, + "themeColor": { + "type": "string", + "default": "#353FFF", + "required": true + }, + "imageBlur": { + "type": "string", + "default": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAABmJLR0QA/wD/AP+gvaeTAAAADUlEQVQImWMwtf//HwAEkwJzh0T9qwAAAABJRU5ErkJggg==" + }, + "toys": { + "type": "relation", + "relation": "oneToMany", + "target": "api::toy.toy" + }, + "toy": { + "type": "relation", + "relation": "manyToOne", + "target": "api::toy.toy", + "inversedBy": "vtubers" + }, + "streams": { + "type": "relation", + "relation": "oneToMany", + "target": "api::stream.stream", + "mappedBy": "vtuber" + }, + "fanslyId": { + "type": "string" + }, + "chaturbateId": { + "type": "string" + }, + "twitterId": { + "type": "string" + } + } +} diff --git a/packages/strapi-borked/src/api/vtuber/controllers/vtuber.js b/packages/strapi-borked/src/api/vtuber/controllers/vtuber.js new file mode 100644 index 0000000..e13bb5e --- /dev/null +++ b/packages/strapi-borked/src/api/vtuber/controllers/vtuber.js @@ -0,0 +1,9 @@ +'use strict'; + +/** + * vtuber controller + */ + +const { createCoreController } = require('@strapi/strapi').factories; + +module.exports = createCoreController('api::vtuber.vtuber'); diff --git a/packages/strapi-borked/src/api/vtuber/routes/vtuber.js b/packages/strapi-borked/src/api/vtuber/routes/vtuber.js new file mode 100644 index 0000000..8936096 --- /dev/null +++ b/packages/strapi-borked/src/api/vtuber/routes/vtuber.js @@ -0,0 +1,9 @@ +'use strict'; + +/** + * vtuber router + */ + +const { createCoreRouter } = require('@strapi/strapi').factories; + +module.exports = createCoreRouter('api::vtuber.vtuber'); diff --git a/packages/strapi-borked/src/api/vtuber/services/vtuber.js b/packages/strapi-borked/src/api/vtuber/services/vtuber.js new file mode 100644 index 0000000..c792042 --- /dev/null +++ b/packages/strapi-borked/src/api/vtuber/services/vtuber.js @@ -0,0 +1,9 @@ +'use strict'; + +/** + * vtuber service + */ + +const { createCoreService } = require('@strapi/strapi').factories; + +module.exports = createCoreService('api::vtuber.vtuber'); diff --git a/packages/strapi-borked/src/extensions/.gitkeep b/packages/strapi-borked/src/extensions/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/packages/strapi-borked/src/extensions/users-permissions/.eslintignore b/packages/strapi-borked/src/extensions/users-permissions/.eslintignore new file mode 100644 index 0000000..1723d82 --- /dev/null +++ b/packages/strapi-borked/src/extensions/users-permissions/.eslintignore @@ -0,0 +1,2 @@ +node_modules/ +.eslintrc.js diff --git a/packages/strapi-borked/src/extensions/users-permissions/.eslintrc.js b/packages/strapi-borked/src/extensions/users-permissions/.eslintrc.js new file mode 100644 index 0000000..a6c2c1e --- /dev/null +++ b/packages/strapi-borked/src/extensions/users-permissions/.eslintrc.js @@ -0,0 +1,14 @@ +module.exports = { + root: true, + overrides: [ + { + files: ['admin/**/*'], + extends: ['custom/front'], + }, + { + files: ['**/*'], + excludedFiles: ['admin/**/*'], + extends: ['custom/back'], + }, + ], +}; diff --git a/packages/strapi-borked/src/extensions/users-permissions/LICENSE b/packages/strapi-borked/src/extensions/users-permissions/LICENSE new file mode 100644 index 0000000..638baf8 --- /dev/null +++ b/packages/strapi-borked/src/extensions/users-permissions/LICENSE @@ -0,0 +1,22 @@ +Copyright (c) 2015-present Strapi Solutions SAS + +Portions of the Strapi software are licensed as follows: + +* All software that resides under an "ee/" directory (the “EE Software”), if that directory exists, is licensed under the license defined in "ee/LICENSE". + +* All software outside of the above-mentioned directories or restrictions above is available under the "MIT Expat" license as set forth below. + +MIT Expat License + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. \ No newline at end of file diff --git a/packages/strapi-borked/src/extensions/users-permissions/README.md b/packages/strapi-borked/src/extensions/users-permissions/README.md new file mode 100644 index 0000000..af1f65a --- /dev/null +++ b/packages/strapi-borked/src/extensions/users-permissions/README.md @@ -0,0 +1 @@ +# Strapi plugin diff --git a/packages/strapi-borked/src/extensions/users-permissions/admin/src/components/BoundRoute/getMethodColor.js b/packages/strapi-borked/src/extensions/users-permissions/admin/src/components/BoundRoute/getMethodColor.js new file mode 100644 index 0000000..1ad903b --- /dev/null +++ b/packages/strapi-borked/src/extensions/users-permissions/admin/src/components/BoundRoute/getMethodColor.js @@ -0,0 +1,41 @@ +const getMethodColor = (verb) => { + switch (verb) { + case 'POST': { + return { + text: 'success600', + border: 'success200', + background: 'success100', + }; + } + case 'GET': { + return { + text: 'secondary600', + border: 'secondary200', + background: 'secondary100', + }; + } + case 'PUT': { + return { + text: 'warning600', + border: 'warning200', + background: 'warning100', + }; + } + case 'DELETE': { + return { + text: 'danger600', + border: 'danger200', + background: 'danger100', + }; + } + default: { + return { + text: 'neutral600', + border: 'neutral200', + background: 'neutral100', + }; + } + } +}; + +export default getMethodColor; diff --git a/packages/strapi-borked/src/extensions/users-permissions/admin/src/components/BoundRoute/index.js b/packages/strapi-borked/src/extensions/users-permissions/admin/src/components/BoundRoute/index.js new file mode 100644 index 0000000..7680ff0 --- /dev/null +++ b/packages/strapi-borked/src/extensions/users-permissions/admin/src/components/BoundRoute/index.js @@ -0,0 +1,72 @@ +import React from 'react'; + +import { Box, Flex, Typography } from '@strapi/design-system'; +import map from 'lodash/map'; +import tail from 'lodash/tail'; +import PropTypes from 'prop-types'; +import { useIntl } from 'react-intl'; +import styled from 'styled-components'; + +import getMethodColor from './getMethodColor'; + +const MethodBox = styled(Box)` + margin: -1px; + border-radius: ${({ theme }) => theme.spaces[1]} 0 0 ${({ theme }) => theme.spaces[1]}; +`; + +function BoundRoute({ route }) { + const { formatMessage } = useIntl(); + + const { method, handler: title, path } = route; + const formattedRoute = path ? tail(path.split('/')) : []; + const [controller = '', action = ''] = title ? title.split('.') : []; + const colors = getMethodColor(route.method); + + return ( ++ + ); +} + +BoundRoute.defaultProps = { + route: { + handler: 'Nocontroller.error', + method: 'GET', + path: '/there-is-no-path', + }, +}; + +BoundRoute.propTypes = { + route: PropTypes.shape({ + handler: PropTypes.string, + method: PropTypes.string, + path: PropTypes.string, + }), +}; + +export default BoundRoute; diff --git a/packages/strapi-borked/src/extensions/users-permissions/admin/src/components/FormModal/Input/index.js b/packages/strapi-borked/src/extensions/users-permissions/admin/src/components/FormModal/Input/index.js new file mode 100644 index 0000000..e5eaf94 --- /dev/null +++ b/packages/strapi-borked/src/extensions/users-permissions/admin/src/components/FormModal/Input/index.js @@ -0,0 +1,123 @@ +/** + * + * Input + * + */ + +import React from 'react'; + +import { TextInput, ToggleInput } from '@strapi/design-system'; +import PropTypes from 'prop-types'; +import { useIntl } from 'react-intl'; + +const Input = ({ + description, + disabled, + intlLabel, + error, + name, + onChange, + placeholder, + providerToEditName, + type, + value, +}) => { + const { formatMessage } = useIntl(); + const inputValue = + name === 'noName' + ? `${window.strapi.backendURL}/api/connect/${providerToEditName}/callback` + : value; + + const label = formatMessage( + { id: intlLabel.id, defaultMessage: intlLabel.defaultMessage }, + { provider: providerToEditName, ...intlLabel.values } + ); + const hint = description + ? formatMessage( + { id: description.id, defaultMessage: description.defaultMessage }, + { provider: providerToEditName, ...description.values } + ) + : ''; + + if (type === 'bool') { + return ( ++ {formatMessage({ + id: 'users-permissions.BoundRoute.title', + defaultMessage: 'Bound route to', + })} + + {controller} + ++ .{action} + ++ ++ ++ {method} + ++ {map(formattedRoute, (value) => ( + ++ /{value} + + ))} +{ + onChange({ target: { name, value: e.target.checked } }); + }} + /> + ); + } + + const formattedPlaceholder = placeholder + ? formatMessage( + { id: placeholder.id, defaultMessage: placeholder.defaultMessage }, + { ...placeholder.values } + ) + : ''; + + const errorMessage = error ? formatMessage({ id: error, defaultMessage: error }) : ''; + + return ( + + ); +}; + +Input.defaultProps = { + description: null, + disabled: false, + error: '', + placeholder: null, + value: '', +}; + +Input.propTypes = { + description: PropTypes.shape({ + id: PropTypes.string.isRequired, + defaultMessage: PropTypes.string.isRequired, + values: PropTypes.object, + }), + disabled: PropTypes.bool, + error: PropTypes.string, + intlLabel: PropTypes.shape({ + id: PropTypes.string.isRequired, + defaultMessage: PropTypes.string.isRequired, + values: PropTypes.object, + }).isRequired, + name: PropTypes.string.isRequired, + onChange: PropTypes.func.isRequired, + placeholder: PropTypes.shape({ + id: PropTypes.string.isRequired, + defaultMessage: PropTypes.string.isRequired, + values: PropTypes.object, + }), + providerToEditName: PropTypes.string.isRequired, + type: PropTypes.string.isRequired, + value: PropTypes.oneOfType([PropTypes.bool, PropTypes.string]), +}; + +export default Input; diff --git a/packages/strapi-borked/src/extensions/users-permissions/admin/src/components/FormModal/index.js b/packages/strapi-borked/src/extensions/users-permissions/admin/src/components/FormModal/index.js new file mode 100644 index 0000000..83c0592 --- /dev/null +++ b/packages/strapi-borked/src/extensions/users-permissions/admin/src/components/FormModal/index.js @@ -0,0 +1,126 @@ +/** + * + * FormModal + * + */ + +import React from 'react'; + +import { + Button, + Flex, + Grid, + GridItem, + ModalBody, + ModalFooter, + ModalHeader, + ModalLayout, +} from '@strapi/design-system'; +import { Breadcrumbs, Crumb } from '@strapi/design-system/v2'; +import { Form } from '@strapi/helper-plugin'; +import { Formik } from 'formik'; +import PropTypes from 'prop-types'; +import { useIntl } from 'react-intl'; + +import Input from './Input'; + +const FormModal = ({ + headerBreadcrumbs, + initialData, + isSubmiting, + layout, + isOpen, + onSubmit, + onToggle, + providerToEditName, +}) => { + const { formatMessage } = useIntl(); + + if (!isOpen) { + return null; + } + + return ( + + + ); +}; + +FormModal.defaultProps = { + initialData: null, + providerToEditName: null, +}; + +FormModal.propTypes = { + headerBreadcrumbs: PropTypes.arrayOf(PropTypes.string).isRequired, + initialData: PropTypes.object, + layout: PropTypes.shape({ + form: PropTypes.arrayOf(PropTypes.array), + schema: PropTypes.object, + }).isRequired, + isOpen: PropTypes.bool.isRequired, + isSubmiting: PropTypes.bool.isRequired, + onSubmit: PropTypes.func.isRequired, + onToggle: PropTypes.func.isRequired, + providerToEditName: PropTypes.string, +}; + +export default FormModal; diff --git a/packages/strapi-borked/src/extensions/users-permissions/admin/src/components/Permissions/PermissionRow/CheckboxWrapper.js b/packages/strapi-borked/src/extensions/users-permissions/admin/src/components/Permissions/PermissionRow/CheckboxWrapper.js new file mode 100644 index 0000000..e3165e2 --- /dev/null +++ b/packages/strapi-borked/src/extensions/users-permissions/admin/src/components/Permissions/PermissionRow/CheckboxWrapper.js @@ -0,0 +1,30 @@ +import { Box } from '@strapi/design-system'; +import styled, { css } from 'styled-components'; + +const activeCheckboxWrapperStyles = css` + background: ${(props) => props.theme.colors.primary100}; + svg { + opacity: 1; + } +`; + +const CheckboxWrapper = styled(Box)` + display: flex; + justify-content: space-between; + align-items: center; + + svg { + opacity: 0; + path { + fill: ${(props) => props.theme.colors.primary600}; + } + } + + /* Show active style both on hover and when the action is selected */ + ${(props) => props.isActive && activeCheckboxWrapperStyles} + &:hover { + ${activeCheckboxWrapperStyles} + } +`; + +export default CheckboxWrapper; diff --git a/packages/strapi-borked/src/extensions/users-permissions/admin/src/components/Permissions/PermissionRow/SubCategory.js b/packages/strapi-borked/src/extensions/users-permissions/admin/src/components/Permissions/PermissionRow/SubCategory.js new file mode 100644 index 0000000..a9a91bd --- /dev/null +++ b/packages/strapi-borked/src/extensions/users-permissions/admin/src/components/Permissions/PermissionRow/SubCategory.js @@ -0,0 +1,131 @@ +import React, { useCallback, useMemo } from 'react'; + +import { + Box, + Checkbox, + Flex, + Typography, + Grid, + GridItem, + VisuallyHidden, +} from '@strapi/design-system'; +import { Cog as CogIcon } from '@strapi/icons'; +import get from 'lodash/get'; +import PropTypes from 'prop-types'; +import { useIntl } from 'react-intl'; +import styled from 'styled-components'; + +import { useUsersPermissions } from '../../../contexts/UsersPermissionsContext'; + +import CheckboxWrapper from './CheckboxWrapper'; + +const Border = styled.div` + flex: 1; + align-self: center; + border-top: 1px solid ${({ theme }) => theme.colors.neutral150}; +`; + +const SubCategory = ({ subCategory }) => { + const { formatMessage } = useIntl(); + const { onChange, onChangeSelectAll, onSelectedAction, selectedAction, modifiedData } = + useUsersPermissions(); + + const currentScopedModifiedData = useMemo(() => { + return get(modifiedData, subCategory.name, {}); + }, [modifiedData, subCategory]); + + const hasAllActionsSelected = useMemo(() => { + return Object.values(currentScopedModifiedData).every((action) => action.enabled === true); + }, [currentScopedModifiedData]); + + const hasSomeActionsSelected = useMemo(() => { + return ( + Object.values(currentScopedModifiedData).some((action) => action.enabled === true) && + !hasAllActionsSelected + ); + }, [currentScopedModifiedData, hasAllActionsSelected]); + + const handleChangeSelectAll = useCallback( + ({ target: { name } }) => { + onChangeSelectAll({ target: { name, value: !hasAllActionsSelected } }); + }, + [hasAllActionsSelected, onChangeSelectAll] + ); + + const isActionSelected = useCallback( + (actionName) => { + return selectedAction === actionName; + }, + [selectedAction] + ); + + return ( ++ ++ {headerBreadcrumbs.map((crumb, index, arr) => ( + ++ {crumb} + + ))} +onSubmit(values)} + initialValues={initialData} + validationSchema={layout.schema} + validateOnChange={false} + > + {({ errors, handleChange, values }) => { + return ( + + ); + }} + ++ + ); +}; + +SubCategory.propTypes = { + subCategory: PropTypes.object.isRequired, +}; + +export default SubCategory; diff --git a/packages/strapi-borked/src/extensions/users-permissions/admin/src/components/Permissions/PermissionRow/index.js b/packages/strapi-borked/src/extensions/users-permissions/admin/src/components/Permissions/PermissionRow/index.js new file mode 100644 index 0000000..08ff3ff --- /dev/null +++ b/packages/strapi-borked/src/extensions/users-permissions/admin/src/components/Permissions/PermissionRow/index.js @@ -0,0 +1,55 @@ +import React, { useMemo } from 'react'; + +import { Box } from '@strapi/design-system'; +import sortBy from 'lodash/sortBy'; +import PropTypes from 'prop-types'; + +import SubCategory from './SubCategory'; + +const PermissionRow = ({ name, permissions }) => { + const subCategories = useMemo(() => { + return sortBy( + Object.values(permissions.controllers).reduce((acc, curr, index) => { + const currentName = `${name}.controllers.${Object.keys(permissions.controllers)[index]}`; + const actions = sortBy( + Object.keys(curr).reduce((acc, current) => { + return [ + ...acc, + { + ...curr[current], + label: current, + name: `${currentName}.${current}`, + }, + ]; + }, []), + 'label' + ); + + return [ + ...acc, + { + actions, + label: Object.keys(permissions.controllers)[index], + name: currentName, + }, + ]; + }, []), + 'label' + ); + }, [name, permissions]); + + return ( ++ ++ ++ {subCategory.label} + ++ + ++ handleChangeSelectAll({ target: { name: subCategory.name, value } }) + } + indeterminate={hasSomeActionsSelected} + > + {formatMessage({ id: 'app.utils.select-all', defaultMessage: 'Select all' })} + ++ ++ {subCategory.actions.map((action) => { + const name = `${action.name}.enabled`; + + return ( + ++ + ); + })} ++ +onChange({ target: { name, value } })} + > + {action.label} + + ++ {subCategories.map((subCategory) => ( + + ); +}; + +PermissionRow.propTypes = { + name: PropTypes.string.isRequired, + permissions: PropTypes.object.isRequired, +}; + +export default PermissionRow; diff --git a/packages/strapi-borked/src/extensions/users-permissions/admin/src/components/Permissions/index.js b/packages/strapi-borked/src/extensions/users-permissions/admin/src/components/Permissions/index.js new file mode 100644 index 0000000..260ae00 --- /dev/null +++ b/packages/strapi-borked/src/extensions/users-permissions/admin/src/components/Permissions/index.js @@ -0,0 +1,57 @@ +import React, { useReducer } from 'react'; + +import { Accordion, AccordionContent, AccordionToggle, Box, Flex } from '@strapi/design-system'; +import { useIntl } from 'react-intl'; + +import { useUsersPermissions } from '../../contexts/UsersPermissionsContext'; +import formatPluginName from '../../utils/formatPluginName'; + +import init from './init'; +import PermissionRow from './PermissionRow'; +import { initialState, reducer } from './reducer'; + +const Permissions = () => { + const { modifiedData } = useUsersPermissions(); + const { formatMessage } = useIntl(); + const [{ collapses }, dispatch] = useReducer(reducer, initialState, (state) => + init(state, modifiedData) + ); + + const handleToggle = (index) => + dispatch({ + type: 'TOGGLE_COLLAPSE', + index, + }); + + return ( ++ ))} + + {collapses.map((collapse, index) => ( + + ); +}; + +export default Permissions; diff --git a/packages/strapi-borked/src/extensions/users-permissions/admin/src/components/Permissions/init.js b/packages/strapi-borked/src/extensions/users-permissions/admin/src/components/Permissions/init.js new file mode 100644 index 0000000..4125920 --- /dev/null +++ b/packages/strapi-borked/src/extensions/users-permissions/admin/src/components/Permissions/init.js @@ -0,0 +1,9 @@ +const init = (initialState, permissions) => { + const collapses = Object.keys(permissions) + .sort() + .map((name) => ({ name, isOpen: false })); + + return { ...initialState, collapses }; +}; + +export default init; diff --git a/packages/strapi-borked/src/extensions/users-permissions/admin/src/components/Permissions/reducer.js b/packages/strapi-borked/src/extensions/users-permissions/admin/src/components/Permissions/reducer.js new file mode 100644 index 0000000..705e580 --- /dev/null +++ b/packages/strapi-borked/src/extensions/users-permissions/admin/src/components/Permissions/reducer.js @@ -0,0 +1,27 @@ +import produce from 'immer'; + +const initialState = { + collapses: [], +}; + +const reducer = (state, action) => + // eslint-disable-next-line consistent-return + produce(state, (draftState) => { + switch (action.type) { + case 'TOGGLE_COLLAPSE': { + draftState.collapses = state.collapses.map((collapse, index) => { + if (index === action.index) { + return { ...collapse, isOpen: !collapse.isOpen }; + } + + return { ...collapse, isOpen: false }; + }); + + break; + } + default: + return draftState; + } + }); + +export { initialState, reducer }; diff --git a/packages/strapi-borked/src/extensions/users-permissions/admin/src/components/Policies/index.js b/packages/strapi-borked/src/extensions/users-permissions/admin/src/components/Policies/index.js new file mode 100644 index 0000000..e9c53b3 --- /dev/null +++ b/packages/strapi-borked/src/extensions/users-permissions/admin/src/components/Policies/index.js @@ -0,0 +1,62 @@ +import React from 'react'; + +import { Flex, GridItem, Typography } from '@strapi/design-system'; +import get from 'lodash/get'; +import isEmpty from 'lodash/isEmpty'; +import without from 'lodash/without'; +import { useIntl } from 'react-intl'; + +import { useUsersPermissions } from '../../contexts/UsersPermissionsContext'; +import BoundRoute from '../BoundRoute'; + +const Policies = () => { + const { formatMessage } = useIntl(); + const { selectedAction, routes } = useUsersPermissions(); + + const path = without(selectedAction.split('.'), 'controllers'); + const controllerRoutes = get(routes, path[0]); + const pathResolved = path.slice(1).join('.'); + + const displayedRoutes = isEmpty(controllerRoutes) + ? [] + : controllerRoutes.filter((o) => o.handler.endsWith(pathResolved)); + + return ( +handleToggle(index)} + key={collapse.name} + variant={index % 2 === 0 ? 'secondary' : undefined} + > + + ))} ++ + ++ ++ + {selectedAction ? ( + + ); +}; + +export default Policies; diff --git a/packages/strapi-borked/src/extensions/users-permissions/admin/src/components/UsersPermissions/index.js b/packages/strapi-borked/src/extensions/users-permissions/admin/src/components/UsersPermissions/index.js new file mode 100644 index 0000000..6f40fa3 --- /dev/null +++ b/packages/strapi-borked/src/extensions/users-permissions/admin/src/components/UsersPermissions/index.js @@ -0,0 +1,95 @@ +import React, { forwardRef, memo, useImperativeHandle, useReducer } from 'react'; + +import { Flex, Grid, GridItem, Typography } from '@strapi/design-system'; +import PropTypes from 'prop-types'; +import { useIntl } from 'react-intl'; + +import { UsersPermissionsProvider } from '../../contexts/UsersPermissionsContext'; +import getTrad from '../../utils/getTrad'; +import Permissions from '../Permissions'; +import Policies from '../Policies'; + +import init from './init'; +import reducer, { initialState } from './reducer'; + +const UsersPermissions = forwardRef(({ permissions, routes }, ref) => { + const { formatMessage } = useIntl(); + const [state, dispatch] = useReducer(reducer, initialState, (state) => + init(state, permissions, routes) + ); + + useImperativeHandle(ref, () => ({ + getPermissions() { + return { + permissions: state.modifiedData, + }; + }, + resetForm() { + dispatch({ type: 'ON_RESET' }); + }, + setFormAfterSubmit() { + dispatch({ type: 'ON_SUBMIT_SUCCEEDED' }); + }, + })); + + const handleChange = ({ target: { name, value } }) => + dispatch({ + type: 'ON_CHANGE', + keys: name.split('.'), + value: value === 'empty__string_value' ? '' : value, + }); + + const handleChangeSelectAll = ({ target: { name, value } }) => + dispatch({ + type: 'ON_CHANGE_SELECT_ALL', + keys: name.split('.'), + value, + }); + + const handleSelectedAction = (actionToSelect) => + dispatch({ + type: 'SELECT_ACTION', + actionToSelect, + }); + + const providerValue = { + ...state, + onChange: handleChange, + onChangeSelectAll: handleChangeSelectAll, + onSelectedAction: handleSelectedAction, + }; + + return ( ++ {displayedRoutes.map((route, key) => ( + // eslint-disable-next-line react/no-array-index-key + + ) : ( ++ ))} + + + )} ++ {formatMessage({ + id: 'users-permissions.Policies.header.title', + defaultMessage: 'Advanced settings', + })} + ++ {formatMessage({ + id: 'users-permissions.Policies.header.hint', + defaultMessage: + "Select the application's actions or the plugin's actions and click on the cog icon to display the bound route", + })} + ++ + ); +}); + +UsersPermissions.propTypes = { + permissions: PropTypes.object.isRequired, + routes: PropTypes.object.isRequired, +}; + +export default memo(UsersPermissions); diff --git a/packages/strapi-borked/src/extensions/users-permissions/admin/src/components/UsersPermissions/init.js b/packages/strapi-borked/src/extensions/users-permissions/admin/src/components/UsersPermissions/init.js new file mode 100644 index 0000000..e124042 --- /dev/null +++ b/packages/strapi-borked/src/extensions/users-permissions/admin/src/components/UsersPermissions/init.js @@ -0,0 +1,10 @@ +const init = (state, permissions, routes) => { + return { + ...state, + initialData: permissions, + modifiedData: permissions, + routes, + }; +}; + +export default init; diff --git a/packages/strapi-borked/src/extensions/users-permissions/admin/src/components/UsersPermissions/reducer.js b/packages/strapi-borked/src/extensions/users-permissions/admin/src/components/UsersPermissions/reducer.js new file mode 100644 index 0000000..8a03a18 --- /dev/null +++ b/packages/strapi-borked/src/extensions/users-permissions/admin/src/components/UsersPermissions/reducer.js @@ -0,0 +1,62 @@ +/* eslint-disable consistent-return */ +import produce from 'immer'; +import get from 'lodash/get'; +import set from 'lodash/set'; +import take from 'lodash/take'; + +export const initialState = { + initialData: {}, + modifiedData: {}, + routes: {}, + selectedAction: '', + policies: [], +}; + +const reducer = (state, action) => + produce(state, (draftState) => { + switch (action.type) { + case 'ON_CHANGE': { + const keysLength = action.keys.length; + const isChangingCheckbox = action.keys[keysLength - 1] === 'enabled'; + + if (action.value && isChangingCheckbox) { + const selectedAction = take(action.keys, keysLength - 1).join('.'); + draftState.selectedAction = selectedAction; + } + + set(draftState, ['modifiedData', ...action.keys], action.value); + break; + } + case 'ON_CHANGE_SELECT_ALL': { + const pathToValue = ['modifiedData', ...action.keys]; + const oldValues = get(state, pathToValue, {}); + const updatedValues = Object.keys(oldValues).reduce((acc, current) => { + acc[current] = { ...oldValues[current], enabled: action.value }; + + return acc; + }, {}); + + set(draftState, pathToValue, updatedValues); + + break; + } + case 'ON_RESET': { + draftState.modifiedData = state.initialData; + break; + } + case 'ON_SUBMIT_SUCCEEDED': { + draftState.initialData = state.modifiedData; + break; + } + + case 'SELECT_ACTION': { + const { actionToSelect } = action; + draftState.selectedAction = actionToSelect === state.selectedAction ? '' : actionToSelect; + break; + } + default: + return draftState; + } + }); + +export default reducer; diff --git a/packages/strapi-borked/src/extensions/users-permissions/admin/src/contexts/UsersPermissionsContext/index.js b/packages/strapi-borked/src/extensions/users-permissions/admin/src/contexts/UsersPermissionsContext/index.js new file mode 100644 index 0000000..ce66c34 --- /dev/null +++ b/packages/strapi-borked/src/extensions/users-permissions/admin/src/contexts/UsersPermissionsContext/index.js @@ -0,0 +1,18 @@ +import React, { createContext, useContext } from 'react'; + +import PropTypes from 'prop-types'; + +const UsersPermissions = createContext({}); + +const UsersPermissionsProvider = ({ children, value }) => { + return+ ++ ++ ++ ++ {formatMessage({ + id: getTrad('Plugins.header.title'), + defaultMessage: 'Permissions', + })} + ++ {formatMessage({ + id: getTrad('Plugins.header.description'), + defaultMessage: 'Only actions bound by a route are listed below.', + })} + ++ + {children} ; +}; + +const useUsersPermissions = () => useContext(UsersPermissions); + +UsersPermissionsProvider.propTypes = { + children: PropTypes.node.isRequired, + value: PropTypes.object.isRequired, +}; + +export { UsersPermissions, UsersPermissionsProvider, useUsersPermissions }; diff --git a/packages/strapi-borked/src/extensions/users-permissions/admin/src/hooks/index.js b/packages/strapi-borked/src/extensions/users-permissions/admin/src/hooks/index.js new file mode 100644 index 0000000..9988733 --- /dev/null +++ b/packages/strapi-borked/src/extensions/users-permissions/admin/src/hooks/index.js @@ -0,0 +1,5 @@ +// eslint-disable-next-line import/prefer-default-export +export { default as useForm } from './useForm'; +export { default as useRolesList } from './useRolesList'; +export * from './usePlugins'; +export { default as useFetchRole } from './useFetchRole'; diff --git a/packages/strapi-borked/src/extensions/users-permissions/admin/src/hooks/useFetchRole/index.js b/packages/strapi-borked/src/extensions/users-permissions/admin/src/hooks/useFetchRole/index.js new file mode 100644 index 0000000..629e001 --- /dev/null +++ b/packages/strapi-borked/src/extensions/users-permissions/admin/src/hooks/useFetchRole/index.js @@ -0,0 +1,67 @@ +import { useCallback, useEffect, useReducer, useRef } from 'react'; + +import { useFetchClient, useNotification } from '@strapi/helper-plugin'; + +import pluginId from '../../pluginId'; + +import reducer, { initialState } from './reducer'; + +const useFetchRole = (id) => { + const [state, dispatch] = useReducer(reducer, initialState); + const toggleNotification = useNotification(); + const isMounted = useRef(null); + const { get } = useFetchClient(); + + useEffect(() => { + isMounted.current = true; + + if (id) { + fetchRole(id); + } else { + dispatch({ + type: 'GET_DATA_SUCCEEDED', + role: {}, + }); + } + + return () => (isMounted.current = false); + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [id]); + + const fetchRole = async (roleId) => { + try { + const { + data: { role }, + } = await get(`/${pluginId}/roles/${roleId}`); + + // Prevent updating state on an unmounted component + if (isMounted.current) { + dispatch({ + type: 'GET_DATA_SUCCEEDED', + role, + }); + } + } catch (err) { + console.error(err); + + dispatch({ + type: 'GET_DATA_ERROR', + }); + toggleNotification({ + type: 'warning', + message: { id: 'notification.error' }, + }); + } + }; + + const handleSubmitSucceeded = useCallback((data) => { + dispatch({ + type: 'ON_SUBMIT_SUCCEEDED', + ...data, + }); + }, []); + + return { ...state, onSubmitSucceeded: handleSubmitSucceeded }; +}; + +export default useFetchRole; diff --git a/packages/strapi-borked/src/extensions/users-permissions/admin/src/hooks/useFetchRole/reducer.js b/packages/strapi-borked/src/extensions/users-permissions/admin/src/hooks/useFetchRole/reducer.js new file mode 100644 index 0000000..99dcf0d --- /dev/null +++ b/packages/strapi-borked/src/extensions/users-permissions/admin/src/hooks/useFetchRole/reducer.js @@ -0,0 +1,31 @@ +/* eslint-disable consistent-return */ +import produce from 'immer'; + +export const initialState = { + role: {}, + isLoading: true, +}; + +const reducer = (state, action) => + produce(state, (draftState) => { + switch (action.type) { + case 'GET_DATA_SUCCEEDED': { + draftState.role = action.role; + draftState.isLoading = false; + break; + } + case 'GET_DATA_ERROR': { + draftState.isLoading = false; + break; + } + case 'ON_SUBMIT_SUCCEEDED': { + draftState.role.name = action.name; + draftState.role.description = action.description; + break; + } + default: + return draftState; + } + }); + +export default reducer; diff --git a/packages/strapi-borked/src/extensions/users-permissions/admin/src/hooks/useForm/index.js b/packages/strapi-borked/src/extensions/users-permissions/admin/src/hooks/useForm/index.js new file mode 100644 index 0000000..0cf0ef6 --- /dev/null +++ b/packages/strapi-borked/src/extensions/users-permissions/admin/src/hooks/useForm/index.js @@ -0,0 +1,70 @@ +import { useCallback, useEffect, useReducer, useRef } from 'react'; + +import { useFetchClient, useNotification, useRBAC } from '@strapi/helper-plugin'; + +import { getRequestURL } from '../../utils'; + +import reducer, { initialState } from './reducer'; + +const useUserForm = (endPoint, permissions) => { + const { isLoading: isLoadingForPermissions, allowedActions } = useRBAC(permissions); + const [{ isLoading, modifiedData }, dispatch] = useReducer(reducer, initialState); + const toggleNotification = useNotification(); + const isMounted = useRef(true); + + const { get } = useFetchClient(); + + useEffect(() => { + const getData = async () => { + try { + dispatch({ + type: 'GET_DATA', + }); + + const { data } = await get(getRequestURL(endPoint)); + + dispatch({ + type: 'GET_DATA_SUCCEEDED', + data, + }); + } catch (err) { + // The user aborted the request + if (isMounted.current) { + dispatch({ + type: 'GET_DATA_ERROR', + }); + console.error(err); + toggleNotification({ + type: 'warning', + message: { id: 'notification.error' }, + }); + } + } + }; + + if (!isLoadingForPermissions) { + getData(); + } + + return () => { + isMounted.current = false; + }; + }, [isLoadingForPermissions, endPoint, get, toggleNotification]); + + const dispatchSubmitSucceeded = useCallback((data) => { + dispatch({ + type: 'ON_SUBMIT_SUCCEEDED', + data, + }); + }, []); + + return { + allowedActions, + dispatchSubmitSucceeded, + isLoading, + isLoadingForPermissions, + modifiedData, + }; +}; + +export default useUserForm; diff --git a/packages/strapi-borked/src/extensions/users-permissions/admin/src/hooks/useForm/reducer.js b/packages/strapi-borked/src/extensions/users-permissions/admin/src/hooks/useForm/reducer.js new file mode 100644 index 0000000..1d05786 --- /dev/null +++ b/packages/strapi-borked/src/extensions/users-permissions/admin/src/hooks/useForm/reducer.js @@ -0,0 +1,40 @@ +import produce from 'immer'; + +const initialState = { + isLoading: true, + modifiedData: {}, +}; + +const reducer = (state, action) => + // eslint-disable-next-line consistent-return + produce(state, (draftState) => { + switch (action.type) { + case 'GET_DATA': { + draftState.isLoading = true; + draftState.modifiedData = {}; + + break; + } + case 'GET_DATA_SUCCEEDED': { + draftState.isLoading = false; + draftState.modifiedData = action.data; + + break; + } + case 'GET_DATA_ERROR': { + draftState.isLoading = true; + break; + } + case 'ON_SUBMIT_SUCCEEDED': { + draftState.modifiedData = action.data; + + break; + } + default: { + return draftState; + } + } + }); + +export default reducer; +export { initialState }; diff --git a/packages/strapi-borked/src/extensions/users-permissions/admin/src/hooks/usePlugins.js b/packages/strapi-borked/src/extensions/users-permissions/admin/src/hooks/usePlugins.js new file mode 100644 index 0000000..ce1f0e8 --- /dev/null +++ b/packages/strapi-borked/src/extensions/users-permissions/admin/src/hooks/usePlugins.js @@ -0,0 +1,71 @@ +import { useEffect } from 'react'; + +import { useNotification, useFetchClient, useAPIErrorHandler } from '@strapi/helper-plugin'; +import { useQueries } from 'react-query'; + +import pluginId from '../pluginId'; +import { cleanPermissions, getTrad } from '../utils'; + +export const usePlugins = () => { + const toggleNotification = useNotification(); + const { get } = useFetchClient(); + const { formatAPIError } = useAPIErrorHandler(getTrad); + + const [ + { + data: permissions, + isLoading: isLoadingPermissions, + error: permissionsError, + refetch: refetchPermissions, + }, + { data: routes, isLoading: isLoadingRoutes, error: routesError, refetch: refetchRoutes }, + ] = useQueries([ + { + queryKey: [pluginId, 'permissions'], + async queryFn() { + const res = await get(`/${pluginId}/permissions`); + + return res.data.permissions; + }, + }, + { + queryKey: [pluginId, 'routes'], + async queryFn() { + const res = await get(`/${pluginId}/routes`); + + return res.data.routes; + }, + }, + ]); + + const refetchQueries = async () => { + await Promise.all([refetchPermissions(), refetchRoutes()]); + }; + + useEffect(() => { + if (permissionsError) { + toggleNotification({ + type: 'warning', + message: formatAPIError(permissionsError), + }); + } + }, [toggleNotification, permissionsError, formatAPIError]); + + useEffect(() => { + if (routesError) { + toggleNotification({ + type: 'warning', + message: formatAPIError(routesError), + }); + } + }, [toggleNotification, routesError, formatAPIError]); + + const isLoading = isLoadingPermissions || isLoadingRoutes; + + return { + permissions: permissions ? cleanPermissions(permissions) : {}, + routes: routes ?? {}, + getData: refetchQueries, + isLoading, + }; +}; diff --git a/packages/strapi-borked/src/extensions/users-permissions/admin/src/hooks/useRolesList/index.js b/packages/strapi-borked/src/extensions/users-permissions/admin/src/hooks/useRolesList/index.js new file mode 100644 index 0000000..aae9175 --- /dev/null +++ b/packages/strapi-borked/src/extensions/users-permissions/admin/src/hooks/useRolesList/index.js @@ -0,0 +1,65 @@ +import { useCallback, useEffect, useReducer, useRef } from 'react'; + +import { useFetchClient, useNotification } from '@strapi/helper-plugin'; +import get from 'lodash/get'; + +import pluginId from '../../pluginId'; + +import init from './init'; +import reducer, { initialState } from './reducer'; + +const useRolesList = (shouldFetchData = true) => { + const [{ roles, isLoading }, dispatch] = useReducer(reducer, initialState, () => + init(initialState, shouldFetchData) + ); + const toggleNotification = useNotification(); + + const isMounted = useRef(true); + const fetchClient = useFetchClient(); + + const fetchRolesList = useCallback(async () => { + try { + dispatch({ + type: 'GET_DATA', + }); + + const { + data: { roles }, + } = await fetchClient.get(`/${pluginId}/roles`); + + dispatch({ + type: 'GET_DATA_SUCCEEDED', + data: roles, + }); + } catch (err) { + const message = get(err, ['response', 'payload', 'message'], 'An error occured'); + + if (isMounted.current) { + dispatch({ + type: 'GET_DATA_ERROR', + }); + + if (message !== 'Forbidden') { + toggleNotification({ + type: 'warning', + message, + }); + } + } + } + }, [fetchClient, toggleNotification]); + + useEffect(() => { + if (shouldFetchData) { + fetchRolesList(); + } + + return () => { + isMounted.current = false; + }; + }, [shouldFetchData, fetchRolesList]); + + return { roles, isLoading, getData: fetchRolesList }; +}; + +export default useRolesList; diff --git a/packages/strapi-borked/src/extensions/users-permissions/admin/src/hooks/useRolesList/init.js b/packages/strapi-borked/src/extensions/users-permissions/admin/src/hooks/useRolesList/init.js new file mode 100644 index 0000000..dfe71d9 --- /dev/null +++ b/packages/strapi-borked/src/extensions/users-permissions/admin/src/hooks/useRolesList/init.js @@ -0,0 +1,5 @@ +const init = (initialState, shouldFetchData) => { + return { ...initialState, isLoading: shouldFetchData }; +}; + +export default init; diff --git a/packages/strapi-borked/src/extensions/users-permissions/admin/src/hooks/useRolesList/reducer.js b/packages/strapi-borked/src/extensions/users-permissions/admin/src/hooks/useRolesList/reducer.js new file mode 100644 index 0000000..a6d347b --- /dev/null +++ b/packages/strapi-borked/src/extensions/users-permissions/admin/src/hooks/useRolesList/reducer.js @@ -0,0 +1,31 @@ +/* eslint-disable consistent-return */ +import produce from 'immer'; + +export const initialState = { + roles: [], + isLoading: true, +}; + +const reducer = (state, action) => + produce(state, (draftState) => { + switch (action.type) { + case 'GET_DATA': { + draftState.isLoading = true; + draftState.roles = []; + break; + } + case 'GET_DATA_SUCCEEDED': { + draftState.roles = action.data; + draftState.isLoading = false; + break; + } + case 'GET_DATA_ERROR': { + draftState.isLoading = false; + break; + } + default: + return draftState; + } + }); + +export default reducer; diff --git a/packages/strapi-borked/src/extensions/users-permissions/admin/src/index.js b/packages/strapi-borked/src/extensions/users-permissions/admin/src/index.js new file mode 100644 index 0000000..ba721ed --- /dev/null +++ b/packages/strapi-borked/src/extensions/users-permissions/admin/src/index.js @@ -0,0 +1,125 @@ +// NOTE TO PLUGINS DEVELOPERS: +// If you modify this file by adding new options to the plugin entry point +// Here's the file: strapi/docs/3.0.0-beta.x/plugin-development/frontend-field-api.md +// Here's the file: strapi/docs/3.0.0-beta.x/guides/registering-a-field-in-admin.md +// Also the strapi-generate-plugins/files/admin/src/index.js needs to be updated +// IF THE DOC IS NOT UPDATED THE PULL REQUEST WILL NOT BE MERGED +import { prefixPluginTranslations } from '@strapi/helper-plugin'; + +import pluginPkg from '../../package.json'; + +import pluginPermissions from './permissions'; +import pluginId from './pluginId'; +import getTrad from './utils/getTrad'; + +const name = pluginPkg.strapi.name; + +export default { + register(app) { + // Create the plugin's settings section + app.createSettingSection( + { + id: pluginId, + intlLabel: { + id: getTrad('Settings.section-label'), + defaultMessage: 'Users & Permissions plugin', + }, + }, + [ + { + intlLabel: { + id: 'global.roles', + defaultMessage: 'Roles', + }, + id: 'roles', + to: `/settings/${pluginId}/roles`, + async Component() { + const component = await import( + /* webpackChunkName: "users-roles-settings-page" */ './pages/Roles' + ); + + return component; + }, + permissions: pluginPermissions.accessRoles, + }, + { + intlLabel: { + id: getTrad('HeaderNav.link.providers'), + defaultMessage: 'Providers', + }, + id: 'providers', + to: `/settings/${pluginId}/providers`, + async Component() { + const component = await import( + /* webpackChunkName: "users-providers-settings-page" */ './pages/Providers' + ); + + return component; + }, + permissions: pluginPermissions.readProviders, + }, + { + intlLabel: { + id: getTrad('HeaderNav.link.emailTemplates'), + defaultMessage: 'Email templates', + }, + id: 'email-templates', + to: `/settings/${pluginId}/email-templates`, + async Component() { + const component = await import( + /* webpackChunkName: "users-email-settings-page" */ './pages/EmailTemplates' + ); + + return component; + }, + permissions: pluginPermissions.readEmailTemplates, + }, + { + intlLabel: { + id: getTrad('HeaderNav.link.advancedSettings'), + defaultMessage: 'Advanced Settings', + }, + id: 'advanced-settings', + to: `/settings/${pluginId}/advanced-settings`, + async Component() { + const component = await import( + /* webpackChunkName: "users-advanced-settings-page" */ './pages/AdvancedSettings' + ); + + return component; + }, + permissions: pluginPermissions.readAdvancedSettings, + }, + ] + ); + + app.registerPlugin({ + id: pluginId, + name, + }); + }, + bootstrap() {}, + async registerTrads({ locales }) { + const importedTrads = await Promise.all( + locales.map((locale) => { + return import( + /* webpackChunkName: "users-permissions-translation-[request]" */ `./translations/${locale}.json` + ) + .then(({ default: data }) => { + return { + data: prefixPluginTranslations(data, pluginId), + locale, + }; + }) + .catch(() => { + return { + data: {}, + locale, + }; + }); + }) + ); + + return Promise.resolve(importedTrads); + }, +}; diff --git a/packages/strapi-borked/src/extensions/users-permissions/admin/src/pages/AdvancedSettings/index.js b/packages/strapi-borked/src/extensions/users-permissions/admin/src/pages/AdvancedSettings/index.js new file mode 100644 index 0000000..3f0726f --- /dev/null +++ b/packages/strapi-borked/src/extensions/users-permissions/admin/src/pages/AdvancedSettings/index.js @@ -0,0 +1,246 @@ +import React, { useMemo } from 'react'; + +import { + Box, + Button, + ContentLayout, + Flex, + Grid, + GridItem, + HeaderLayout, + Main, + Option, + Select, + Typography, + useNotifyAT, +} from '@strapi/design-system'; +import { + CheckPagePermissions, + Form, + GenericInput, + LoadingIndicatorPage, + SettingsPageTitle, + useFocusWhenNavigate, + useNotification, + useOverlayBlocker, + useRBAC, +} from '@strapi/helper-plugin'; +import { Check } from '@strapi/icons'; +import { Formik } from 'formik'; +import { useIntl } from 'react-intl'; +import { useMutation, useQuery, useQueryClient } from 'react-query'; + +import pluginPermissions from '../../permissions'; +import { getTrad } from '../../utils'; + +import { fetchData, putAdvancedSettings } from './utils/api'; +import layout from './utils/layout'; +import schema from './utils/schema'; + +const ProtectedAdvancedSettingsPage = () => ( ++ +); + +const AdvancedSettingsPage = () => { + const { formatMessage } = useIntl(); + const toggleNotification = useNotification(); + const { lockApp, unlockApp } = useOverlayBlocker(); + const { notifyStatus } = useNotifyAT(); + const queryClient = useQueryClient(); + useFocusWhenNavigate(); + + const updatePermissions = useMemo( + () => ({ update: pluginPermissions.updateAdvancedSettings }), + [] + ); + const { + isLoading: isLoadingForPermissions, + allowedActions: { canUpdate }, + } = useRBAC(updatePermissions); + + const { status: isLoadingData, data } = useQuery('advanced', () => fetchData(), { + onSuccess() { + notifyStatus( + formatMessage({ + id: getTrad('Form.advancedSettings.data.loaded'), + defaultMessage: 'Advanced settings data has been loaded', + }) + ); + }, + onError() { + toggleNotification({ + type: 'warning', + message: { id: getTrad('notification.error'), defaultMessage: 'An error occured' }, + }); + }, + }); + + const isLoading = isLoadingForPermissions || isLoadingData !== 'success'; + + const submitMutation = useMutation((body) => putAdvancedSettings(body), { + async onSuccess() { + await queryClient.invalidateQueries('advanced'); + toggleNotification({ + type: 'success', + message: { id: getTrad('notification.success.saved'), defaultMessage: 'Saved' }, + }); + + unlockApp(); + }, + onError() { + toggleNotification({ + type: 'warning', + message: { id: getTrad('notification.error'), defaultMessage: 'An error occured' }, + }); + unlockApp(); + }, + refetchActive: true, + }); + + const { isLoading: isSubmittingForm } = submitMutation; + + const handleSubmit = async (body) => { + lockApp(); + + const urlConfirmation = body.email_confirmation ? body.email_confirmation_redirection : ''; + + await submitMutation.mutateAsync({ ...body, email_confirmation_redirection: urlConfirmation }); + }; + + if (isLoading) { + return ( ++ + + ); + } + + return ( ++ + + ++ + + ); +}; + +export default ProtectedAdvancedSettingsPage; diff --git a/packages/strapi-borked/src/extensions/users-permissions/admin/src/pages/AdvancedSettings/utils/api.js b/packages/strapi-borked/src/extensions/users-permissions/admin/src/pages/AdvancedSettings/utils/api.js new file mode 100644 index 0000000..238862a --- /dev/null +++ b/packages/strapi-borked/src/extensions/users-permissions/admin/src/pages/AdvancedSettings/utils/api.js @@ -0,0 +1,18 @@ +import { getFetchClient } from '@strapi/helper-plugin'; + +import { getRequestURL } from '../../../utils'; + +const fetchData = async () => { + const { get } = getFetchClient(); + const { data } = await get(getRequestURL('advanced')); + + return data; +}; + +const putAdvancedSettings = (body) => { + const { put } = getFetchClient(); + + return put(getRequestURL('advanced'), body); +}; + +export { fetchData, putAdvancedSettings }; diff --git a/packages/strapi-borked/src/extensions/users-permissions/admin/src/pages/AdvancedSettings/utils/layout.js b/packages/strapi-borked/src/extensions/users-permissions/admin/src/pages/AdvancedSettings/utils/layout.js new file mode 100644 index 0000000..094e5a6 --- /dev/null +++ b/packages/strapi-borked/src/extensions/users-permissions/admin/src/pages/AdvancedSettings/utils/layout.js @@ -0,0 +1,96 @@ +import { getTrad } from '../../../utils'; + +const layout = [ + { + intlLabel: { + id: getTrad('EditForm.inputToggle.label.email'), + defaultMessage: 'One account per email address', + }, + description: { + id: getTrad('EditForm.inputToggle.description.email'), + defaultMessage: + 'Disallow the user to create multiple accounts using the same email address with different authentication providers.', + }, + name: 'unique_email', + type: 'bool', + size: { + col: 12, + xs: 12, + }, + }, + { + intlLabel: { + id: getTrad('EditForm.inputToggle.label.sign-up'), + defaultMessage: 'Enable sign-ups', + }, + description: { + id: getTrad('EditForm.inputToggle.description.sign-up'), + defaultMessage: + 'When disabled (OFF), the registration process is forbidden. No one can subscribe anymore no matter the used provider.', + }, + name: 'allow_register', + type: 'bool', + size: { + col: 12, + xs: 12, + }, + }, + { + intlLabel: { + id: getTrad('EditForm.inputToggle.label.email-reset-password'), + defaultMessage: 'Reset password page', + }, + description: { + id: getTrad('EditForm.inputToggle.description.email-reset-password'), + defaultMessage: "URL of your application's reset password page.", + }, + placeholder: { + id: getTrad('EditForm.inputToggle.placeholder.email-reset-password'), + defaultMessage: 'ex: https://youtfrontend.com/reset-password', + }, + name: 'email_reset_password', + type: 'text', + size: { + col: 6, + xs: 12, + }, + }, + { + intlLabel: { + id: getTrad('EditForm.inputToggle.label.email-confirmation'), + defaultMessage: 'Enable email confirmation', + }, + description: { + id: getTrad('EditForm.inputToggle.description.email-confirmation'), + defaultMessage: 'When enabled (ON), new registered users receive a confirmation email.', + }, + name: 'email_confirmation', + type: 'bool', + size: { + col: 12, + xs: 12, + }, + }, + { + intlLabel: { + id: getTrad('EditForm.inputToggle.label.email-confirmation-redirection'), + defaultMessage: 'Redirection url', + }, + description: { + id: getTrad('EditForm.inputToggle.description.email-confirmation-redirection'), + defaultMessage: 'After you confirmed your email, choose where you will be redirected.', + }, + placeholder: { + id: getTrad('EditForm.inputToggle.placeholder.email-confirmation-redirection'), + defaultMessage: 'ex: https://youtfrontend.com/email-confirmation', + }, + name: 'email_confirmation_redirection', + type: 'text', + size: { + col: 6, + xs: 12, + }, + }, +]; + +export default layout; diff --git a/packages/strapi-borked/src/extensions/users-permissions/admin/src/pages/AdvancedSettings/utils/schema.js b/packages/strapi-borked/src/extensions/users-permissions/admin/src/pages/AdvancedSettings/utils/schema.js new file mode 100644 index 0000000..b8958a8 --- /dev/null +++ b/packages/strapi-borked/src/extensions/users-permissions/admin/src/pages/AdvancedSettings/utils/schema.js @@ -0,0 +1,19 @@ +import { translatedErrors } from '@strapi/helper-plugin'; +import * as yup from 'yup'; + +// eslint-disable-next-line prefer-regex-literals +const URL_REGEX = new RegExp('(^$)|((.+:\\/\\/.*)(d*)\\/?(.*))'); + +const schema = yup.object().shape({ + email_confirmation_redirection: yup.mixed().when('email_confirmation', { + is: true, + then: yup.string().matches(URL_REGEX).required(), + otherwise: yup.string().nullable(), + }), + email_reset_password: yup + .string(translatedErrors.string) + .matches(URL_REGEX, translatedErrors.regex) + .nullable(), +}); + +export default schema; diff --git a/packages/strapi-borked/src/extensions/users-permissions/admin/src/pages/EmailTemplates/components/EmailForm.js b/packages/strapi-borked/src/extensions/users-permissions/admin/src/pages/EmailTemplates/components/EmailForm.js new file mode 100644 index 0000000..5d98122 --- /dev/null +++ b/packages/strapi-borked/src/extensions/users-permissions/admin/src/pages/EmailTemplates/components/EmailForm.js @@ -0,0 +1,176 @@ +import React from 'react'; + +import { + Button, + Grid, + GridItem, + ModalBody, + ModalFooter, + ModalHeader, + ModalLayout, + Textarea, +} from '@strapi/design-system'; +import { Breadcrumbs, Crumb } from '@strapi/design-system/v2'; +import { Form, GenericInput } from '@strapi/helper-plugin'; +import { Formik } from 'formik'; +import PropTypes from 'prop-types'; +import { useIntl } from 'react-intl'; + +import { getTrad } from '../../../utils'; +import schema from '../utils/schema'; + +const EmailForm = ({ template, onToggle, onSubmit }) => { + const { formatMessage } = useIntl(); + + return ( ++ + {({ errors, values, handleChange, isSubmitting }) => { + return ( + + ); + }} + ++ + ); +}; + +EmailForm.propTypes = { + template: PropTypes.shape({ + display: PropTypes.string, + icon: PropTypes.string, + options: PropTypes.shape({ + from: PropTypes.shape({ + name: PropTypes.string, + email: PropTypes.string, + }), + message: PropTypes.string, + object: PropTypes.string, + response_email: PropTypes.string, + }), + }).isRequired, + onSubmit: PropTypes.func.isRequired, + onToggle: PropTypes.func.isRequired, +}; + +export default EmailForm; diff --git a/packages/strapi-borked/src/extensions/users-permissions/admin/src/pages/EmailTemplates/components/EmailTable.js b/packages/strapi-borked/src/extensions/users-permissions/admin/src/pages/EmailTemplates/components/EmailTable.js new file mode 100644 index 0000000..6562324 --- /dev/null +++ b/packages/strapi-borked/src/extensions/users-permissions/admin/src/pages/EmailTemplates/components/EmailTable.js @@ -0,0 +1,128 @@ +import React from 'react'; + +import { + Icon, + IconButton, + Table, + Tbody, + Td, + Th, + Thead, + Tr, + Typography, + VisuallyHidden, +} from '@strapi/design-system'; +import { onRowClick, stopPropagation } from '@strapi/helper-plugin'; +import { Check, Pencil, Refresh } from '@strapi/icons'; +import PropTypes from 'prop-types'; +import { useIntl } from 'react-intl'; + +import { getTrad } from '../../../utils'; + +const EmailTable = ({ canUpdate, onEditClick }) => { + const { formatMessage } = useIntl(); + + return ( ++ ++ ++ {formatMessage({ + id: getTrad('PopUpForm.header.edit.email-templates'), + defaultMessage: 'Edit email template', + })} + ++ {formatMessage({ id: getTrad(template.display), defaultMessage: template.display })} + ++ {({ errors, values, handleChange, isSubmitting }) => { + return ( + + ); + }} + ++ +
+ ); +}; + +EmailTable.propTypes = { + canUpdate: PropTypes.bool.isRequired, + onEditClick: PropTypes.func.isRequired, +}; + +export default EmailTable; diff --git a/packages/strapi-borked/src/extensions/users-permissions/admin/src/pages/EmailTemplates/index.js b/packages/strapi-borked/src/extensions/users-permissions/admin/src/pages/EmailTemplates/index.js new file mode 100644 index 0000000..3c3887c --- /dev/null +++ b/packages/strapi-borked/src/extensions/users-permissions/admin/src/pages/EmailTemplates/index.js @@ -0,0 +1,163 @@ +import React, { useMemo, useRef, useState } from 'react'; + +import { ContentLayout, HeaderLayout, Main, useNotifyAT } from '@strapi/design-system'; +import { + CheckPagePermissions, + LoadingIndicatorPage, + SettingsPageTitle, + useFocusWhenNavigate, + useNotification, + useOverlayBlocker, + useRBAC, + useTracking, +} from '@strapi/helper-plugin'; +import { useIntl } from 'react-intl'; +import { useMutation, useQuery, useQueryClient } from 'react-query'; + +import pluginPermissions from '../../permissions'; +import { getTrad } from '../../utils'; + +import EmailForm from './components/EmailForm'; +import EmailTable from './components/EmailTable'; +import { fetchData, putEmailTemplate } from './utils/api'; + +const ProtectedEmailTemplatesPage = () => ( ++ + + ++ ++ {formatMessage({ + id: getTrad('Email.template.table.icon.label'), + defaultMessage: 'icon', + })} + ++ ++ {formatMessage({ + id: getTrad('Email.template.table.name.label'), + defaultMessage: 'name', + })} + ++ ++ {formatMessage({ + id: getTrad('Email.template.table.action.label'), + defaultMessage: 'action', + })} + +onEditClick('reset_password') })}> + ++ ++ ++ + ++ {formatMessage({ + id: 'global.reset-password', + defaultMessage: 'Reset password', + })} + ++ +onEditClick('reset_password')} + label={formatMessage({ + id: getTrad('Email.template.form.edit.label'), + defaultMessage: 'Edit a template', + })} + noBorder + icon={canUpdate && } + /> + onEditClick('email_confirmation') })}> + + ++ ++ ++ + ++ {formatMessage({ + id: getTrad('Email.template.email_confirmation'), + defaultMessage: 'Email address confirmation', + })} + ++ +onEditClick('email_confirmation')} + label={formatMessage({ + id: getTrad('Email.template.form.edit.label'), + defaultMessage: 'Edit a template', + })} + noBorder + icon={canUpdate && } + /> + + +); + +const EmailTemplatesPage = () => { + const { formatMessage } = useIntl(); + const { trackUsage } = useTracking(); + const { notifyStatus } = useNotifyAT(); + const toggleNotification = useNotification(); + const { lockApp, unlockApp } = useOverlayBlocker(); + const trackUsageRef = useRef(trackUsage); + const queryClient = useQueryClient(); + useFocusWhenNavigate(); + + const [isModalOpen, setIsModalOpen] = useState(false); + const [templateToEdit, setTemplateToEdit] = useState(null); + + const updatePermissions = useMemo(() => { + return { update: pluginPermissions.updateEmailTemplates }; + }, []); + + const { + isLoading: isLoadingForPermissions, + allowedActions: { canUpdate }, + } = useRBAC(updatePermissions); + + const { status: isLoadingData, data } = useQuery('email-templates', () => fetchData(), { + onSuccess() { + notifyStatus( + formatMessage({ + id: getTrad('Email.template.data.loaded'), + defaultMessage: 'Email templates has been loaded', + }) + ); + }, + onError() { + toggleNotification({ + type: 'warning', + message: { id: 'notification.error', defaultMessage: 'An error occured' }, + }); + }, + }); + + const isLoading = isLoadingForPermissions || isLoadingData !== 'success'; + + const handleToggle = () => { + setIsModalOpen((prev) => !prev); + }; + + const handleEditClick = (template) => { + setTemplateToEdit(template); + handleToggle(); + }; + + const submitMutation = useMutation((body) => putEmailTemplate({ 'email-templates': body }), { + async onSuccess() { + await queryClient.invalidateQueries('email-templates'); + + toggleNotification({ + type: 'success', + message: { id: 'notification.success.saved', defaultMessage: 'Saved' }, + }); + + trackUsageRef.current('didEditEmailTemplates'); + + unlockApp(); + handleToggle(); + }, + onError() { + toggleNotification({ + type: 'warning', + message: { id: 'notification.error', defaultMessage: 'An error occured' }, + }); + unlockApp(); + }, + refetchActive: true, + }); + const { isLoading: isSubmittingForm } = submitMutation; + + const handleSubmit = (body) => { + lockApp(); + trackUsageRef.current('willEditEmailTemplates'); + + const editedTemplates = { ...data, [templateToEdit]: body }; + submitMutation.mutate(editedTemplates); + }; + + if (isLoading) { + return ( ++ + + ); + } + + return ( ++ + + ++ + + ); +}; + +export default ProtectedEmailTemplatesPage; diff --git a/packages/strapi-borked/src/extensions/users-permissions/admin/src/pages/EmailTemplates/utils/api.js b/packages/strapi-borked/src/extensions/users-permissions/admin/src/pages/EmailTemplates/utils/api.js new file mode 100644 index 0000000..46aef9f --- /dev/null +++ b/packages/strapi-borked/src/extensions/users-permissions/admin/src/pages/EmailTemplates/utils/api.js @@ -0,0 +1,18 @@ +import { getFetchClient } from '@strapi/helper-plugin'; + +import { getRequestURL } from '../../../utils'; + +const fetchData = async () => { + const { get } = getFetchClient(); + const { data } = await get(getRequestURL('email-templates')); + + return data; +}; + +const putEmailTemplate = (body) => { + const { put } = getFetchClient(); + + return put(getRequestURL('email-templates'), body); +}; + +export { fetchData, putEmailTemplate }; diff --git a/packages/strapi-borked/src/extensions/users-permissions/admin/src/pages/EmailTemplates/utils/schema.js b/packages/strapi-borked/src/extensions/users-permissions/admin/src/pages/EmailTemplates/utils/schema.js new file mode 100644 index 0000000..33ca121 --- /dev/null +++ b/packages/strapi-borked/src/extensions/users-permissions/admin/src/pages/EmailTemplates/utils/schema.js @@ -0,0 +1,22 @@ +import { translatedErrors } from '@strapi/helper-plugin'; +import * as yup from 'yup'; + +const schema = yup.object().shape({ + options: yup + .object() + .shape({ + from: yup + .object() + .shape({ + name: yup.string().required(translatedErrors.required), + email: yup.string().email(translatedErrors.email).required(translatedErrors.required), + }) + .required(), + response_email: yup.string().email(translatedErrors.email), + object: yup.string().required(translatedErrors.required), + message: yup.string().required(translatedErrors.required), + }) + .required(translatedErrors.required), +}); + +export default schema; diff --git a/packages/strapi-borked/src/extensions/users-permissions/admin/src/pages/Providers/index.js b/packages/strapi-borked/src/extensions/users-permissions/admin/src/pages/Providers/index.js new file mode 100644 index 0000000..c492f2d --- /dev/null +++ b/packages/strapi-borked/src/extensions/users-permissions/admin/src/pages/Providers/index.js @@ -0,0 +1,275 @@ +import React, { useMemo, useRef, useState } from 'react'; + +import { + ContentLayout, + HeaderLayout, + IconButton, + Layout, + Main, + Table, + Tbody, + Td, + Th, + Thead, + Tr, + Typography, + useNotifyAT, + VisuallyHidden, +} from '@strapi/design-system'; +import { + CheckPagePermissions, + LoadingIndicatorPage, + onRowClick, + SettingsPageTitle, + stopPropagation, + useFocusWhenNavigate, + useNotification, + useOverlayBlocker, + useRBAC, + useTracking, +} from '@strapi/helper-plugin'; +import { Pencil } from '@strapi/icons'; +import has from 'lodash/has'; +import upperFirst from 'lodash/upperFirst'; +import { useIntl } from 'react-intl'; +import { useMutation, useQuery, useQueryClient } from 'react-query'; + +import FormModal from '../../components/FormModal'; +import pluginPermissions from '../../permissions'; +import { getTrad } from '../../utils'; + +import { fetchData, putProvider } from './utils/api'; +import createProvidersArray from './utils/createProvidersArray'; +import forms from './utils/forms'; + +export const ProvidersPage = () => { + const { formatMessage } = useIntl(); + useFocusWhenNavigate(); + const { notifyStatus } = useNotifyAT(); + const queryClient = useQueryClient(); + const { trackUsage } = useTracking(); + const trackUsageRef = useRef(trackUsage); + const [isOpen, setIsOpen] = useState(false); + const [isSubmiting, setIsSubmiting] = useState(false); + const [providerToEditName, setProviderToEditName] = useState(null); + const toggleNotification = useNotification(); + const { lockApp, unlockApp } = useOverlayBlocker(); + + const updatePermissions = useMemo(() => { + return { update: pluginPermissions.updateProviders }; + }, []); + + const { + isLoading: isLoadingForPermissions, + allowedActions: { canUpdate }, + } = useRBAC(updatePermissions); + + const { + isLoading: isLoadingForData, + data: modifiedData, + isFetching, + } = useQuery('get-providers', () => fetchData(toggleNotification), { + onSuccess() { + notifyStatus( + formatMessage({ + id: getTrad('Providers.data.loaded'), + defaultMessage: 'Providers have been loaded', + }) + ); + }, + initialData: {}, + }); + + const isLoading = isLoadingForData || isFetching; + + const submitMutation = useMutation(putProvider, { + async onSuccess() { + await queryClient.invalidateQueries('get-providers'); + toggleNotification({ + type: 'info', + message: { id: getTrad('notification.success.submit') }, + }); + + trackUsageRef.current('didEditAuthenticationProvider'); + setIsSubmiting(false); + handleToggleModal(); + unlockApp(); + }, + onError() { + toggleNotification({ + type: 'warning', + message: { id: 'notification.error' }, + }); + unlockApp(); + setIsSubmiting(false); + }, + refetchActive: false, + }); + + const providers = useMemo(() => createProvidersArray(modifiedData), [modifiedData]); + + const rowCount = providers.length; + + const isProviderWithSubdomain = useMemo(() => { + if (!providerToEditName) { + return false; + } + + const providerToEdit = providers.find((obj) => obj.name === providerToEditName); + + return has(providerToEdit, 'subdomain'); + }, [providers, providerToEditName]); + + const pageTitle = formatMessage({ + id: getTrad('HeaderNav.link.providers'), + defaultMessage: 'Providers', + }); + + const layoutToRender = useMemo(() => { + if (providerToEditName === 'email') { + return forms.email; + } + + if (isProviderWithSubdomain) { + return forms.providersWithSubdomain; + } + + return forms.providers; + }, [providerToEditName, isProviderWithSubdomain]); + + const handleToggleModal = () => { + setIsOpen((prev) => !prev); + }; + + const handleClickEdit = (provider) => { + if (canUpdate) { + setProviderToEditName(provider.name); + handleToggleModal(); + } + }; + + const handleSubmit = async (values) => { + setIsSubmiting(true); + + lockApp(); + + trackUsageRef.current('willEditAuthenticationProvider'); + + const body = { ...modifiedData, [providerToEditName]: values }; + + submitMutation.mutate({ providers: body }); + }; + + return ( ++ + + ++ {isModalOpen && ( + + )} + + + ); +}; + +const ProtectedProvidersPage = () => ( ++ + ++ {isLoading || isLoadingForPermissions ? ( + + ) : ( + + + )} ++ +
++ + + + {providers.map((provider) => ( ++ ++ {formatMessage({ id: 'global.name', defaultMessage: 'Name' })} + ++ ++ {formatMessage({ id: getTrad('Providers.status'), defaultMessage: 'Status' })} + ++ ++ ++ {formatMessage({ + id: 'global.settings', + defaultMessage: 'Settings', + })} + +handleClickEdit(provider), + condition: canUpdate, + })} + > + + ))} + ++ ++ {provider.name} + ++ ++ {provider.enabled + ? formatMessage({ + id: 'global.enabled', + defaultMessage: 'Enabled', + }) + : formatMessage({ + id: 'global.disabled', + defaultMessage: 'Disabled', + })} + ++ {canUpdate && ( + +handleClickEdit(provider)} + noBorder + icon={ } + label="Edit" + /> + )} + + + +); + +export default ProtectedProvidersPage; diff --git a/packages/strapi-borked/src/extensions/users-permissions/admin/src/pages/Providers/reducer.js b/packages/strapi-borked/src/extensions/users-permissions/admin/src/pages/Providers/reducer.js new file mode 100644 index 0000000..fe6f7d5 --- /dev/null +++ b/packages/strapi-borked/src/extensions/users-permissions/admin/src/pages/Providers/reducer.js @@ -0,0 +1,54 @@ +import produce from 'immer'; +import set from 'lodash/set'; + +const initialState = { + formErrors: {}, + isLoading: true, + initialData: {}, + modifiedData: {}, +}; + +const reducer = (state, action) => + // eslint-disable-next-line consistent-return + produce(state, (draftState) => { + switch (action.type) { + case 'GET_DATA': { + draftState.isLoading = true; + draftState.initialData = {}; + draftState.modifiedData = {}; + + break; + } + + case 'GET_DATA_SUCCEEDED': { + draftState.isLoading = false; + draftState.initialData = action.data; + draftState.modifiedData = action.data; + + break; + } + case 'GET_DATA_ERROR': { + draftState.isLoading = true; + break; + } + case 'ON_CHANGE': { + set(draftState, ['modifiedData', ...action.keys.split('.')], action.value); + break; + } + case 'RESET_FORM': { + draftState.modifiedData = state.initialData; + draftState.formErrors = {}; + break; + } + case 'SET_ERRORS': { + draftState.formErrors = action.errors; + break; + } + default: { + return draftState; + } + } + }); + +export default reducer; +export { initialState }; diff --git a/packages/strapi-borked/src/extensions/users-permissions/admin/src/pages/Providers/utils/api.js b/packages/strapi-borked/src/extensions/users-permissions/admin/src/pages/Providers/utils/api.js new file mode 100644 index 0000000..0401426 --- /dev/null +++ b/packages/strapi-borked/src/extensions/users-permissions/admin/src/pages/Providers/utils/api.js @@ -0,0 +1,26 @@ +import { getFetchClient } from '@strapi/helper-plugin'; + +import { getRequestURL } from '../../../utils'; + +// eslint-disable-next-line import/prefer-default-export +export const fetchData = async (toggleNotification) => { + try { + const { get } = getFetchClient(); + const { data } = await get(getRequestURL('providers')); + + return data; + } catch (err) { + toggleNotification({ + type: 'warning', + message: { id: 'notification.error' }, + }); + + throw new Error('error'); + } +}; + +export const putProvider = (body) => { + const { put } = getFetchClient(); + + return put(getRequestURL('providers'), body); +}; diff --git a/packages/strapi-borked/src/extensions/users-permissions/admin/src/pages/Providers/utils/createProvidersArray.js b/packages/strapi-borked/src/extensions/users-permissions/admin/src/pages/Providers/utils/createProvidersArray.js new file mode 100644 index 0000000..4e4be3d --- /dev/null +++ b/packages/strapi-borked/src/extensions/users-permissions/admin/src/pages/Providers/utils/createProvidersArray.js @@ -0,0 +1,21 @@ +import sortBy from 'lodash/sortBy'; + +const createProvidersArray = (data) => { + return sortBy( + Object.keys(data).reduce((acc, current) => { + const { icon: iconName, enabled, subdomain } = data[current]; + const icon = iconName === 'envelope' ? ['fas', 'envelope'] : ['fab', iconName]; + + if (subdomain !== undefined) { + acc.push({ name: current, icon, enabled, subdomain }); + } else { + acc.push({ name: current, icon, enabled }); + } + + return acc; + }, []), + 'name' + ); +}; + +export default createProvidersArray; diff --git a/packages/strapi-borked/src/extensions/users-permissions/admin/src/pages/Providers/utils/forms.js b/packages/strapi-borked/src/extensions/users-permissions/admin/src/pages/Providers/utils/forms.js new file mode 100644 index 0000000..08d2859 --- /dev/null +++ b/packages/strapi-borked/src/extensions/users-permissions/admin/src/pages/Providers/utils/forms.js @@ -0,0 +1,259 @@ +import { translatedErrors } from '@strapi/helper-plugin'; +import * as yup from 'yup'; + +import { getTrad } from '../../../utils'; + +const callbackLabel = { + id: getTrad('PopUpForm.Providers.redirectURL.front-end.label'), + defaultMessage: 'The redirect URL to your front-end app', +}; +const callbackPlaceholder = { + id: 'http://www.client-app.com', + defaultMessage: 'http://www.client-app.com', +}; +const enabledDescription = { + id: getTrad('PopUpForm.Providers.enabled.description'), + defaultMessage: "If disabled, users won't be able to use this provider.", +}; +const enabledLabel = { + id: getTrad('PopUpForm.Providers.enabled.label'), + defaultMessage: 'Enable', +}; +const keyLabel = { id: getTrad('PopUpForm.Providers.key.label'), defaultMessage: 'Client ID' }; +const hintLabel = { + id: getTrad('PopUpForm.Providers.redirectURL.label'), + defaultMessage: 'The redirect URL to add in your {provider} application configurations', +}; +const textPlaceholder = { + id: getTrad('PopUpForm.Providers.key.placeholder'), + defaultMessage: 'TEXT', +}; + +const secretLabel = { + id: getTrad('PopUpForm.Providers.secret.label'), + defaultMessage: 'Client Secret', +}; + +const forms = { + email: { + form: [ + [ + { + intlLabel: enabledLabel, + name: 'enabled', + type: 'bool', + description: enabledDescription, + size: 6, + // TODO check if still needed + // validations: { + // required: true, + // }, + }, + ], + ], + schema: yup.object().shape({ + enabled: yup.bool().required(translatedErrors.required), + }), + }, + providers: { + form: [ + [ + { + intlLabel: enabledLabel, + name: 'enabled', + type: 'bool', + description: enabledDescription, + size: 6, + validations: { + required: true, + }, + }, + ], + [ + { + intlLabel: keyLabel, + name: 'key', + type: 'text', + placeholder: textPlaceholder, + size: 12, + validations: { + required: true, + }, + }, + ], + [ + { + intlLabel: secretLabel, + name: 'secret', + type: 'text', + placeholder: textPlaceholder, + size: 12, + validations: { + required: true, + }, + }, + ], + [ + { + intlLabel: callbackLabel, + placeholder: callbackPlaceholder, + name: 'callback', + type: 'text', + size: 12, + validations: { + required: true, + }, + }, + ], + [ + { + intlLabel: hintLabel, + name: 'noName', + type: 'text', + validations: {}, + size: 12, + disabled: true, + }, + ], + ], + schema: yup.object().shape({ + enabled: yup.bool().required(translatedErrors.required), + key: yup.string().when('enabled', { + is: true, + then: yup.string().required(translatedErrors.required), + otherwise: yup.string(), + }), + secret: yup.string().when('enabled', { + is: true, + then: yup.string().required(translatedErrors.required), + otherwise: yup.string(), + }), + callback: yup.string().when('enabled', { + is: true, + then: yup.string().required(translatedErrors.required), + otherwise: yup.string(), + }), + }), + }, + providersWithSubdomain: { + form: [ + [ + { + intlLabel: enabledLabel, + name: 'enabled', + type: 'bool', + description: enabledDescription, + size: 6, + validations: { + required: true, + }, + }, + ], + [ + { + intlLabel: keyLabel, + name: 'key', + type: 'text', + placeholder: textPlaceholder, + size: 12, + validations: { + required: true, + }, + }, + ], + [ + { + intlLabel: secretLabel, + name: 'secret', + type: 'text', + placeholder: textPlaceholder, + size: 12, + validations: { + required: true, + }, + }, + ], + [ + { + intlLabel: { + id: getTrad({ id: 'PopUpForm.Providers.jwksurl.label' }), + defaultMessage: 'JWKS URL', + }, + name: 'jwksurl', + type: 'text', + placeholder: textPlaceholder, + size: 12, + validations: { + required: false, + }, + }, + ], + + [ + { + intlLabel: { + id: getTrad('PopUpForm.Providers.subdomain.label'), + defaultMessage: 'Host URI (Subdomain)', + }, + name: 'subdomain', + type: 'text', + placeholder: { + id: getTrad('PopUpForm.Providers.subdomain.placeholder'), + defaultMessage: 'my.subdomain.com', + }, + size: 12, + validations: { + required: true, + }, + }, + ], + [ + { + intlLabel: callbackLabel, + placeholder: callbackPlaceholder, + name: 'callback', + type: 'text', + size: 12, + validations: { + required: true, + }, + }, + ], + [ + { + intlLabel: hintLabel, + name: 'noName', + type: 'text', + validations: {}, + size: 12, + disabled: true, + }, + ], + ], + schema: yup.object().shape({ + enabled: yup.bool().required(translatedErrors.required), + key: yup.string().when('enabled', { + is: true, + then: yup.string().required(translatedErrors.required), + otherwise: yup.string(), + }), + secret: yup.string().when('enabled', { + is: true, + then: yup.string().required(translatedErrors.required), + otherwise: yup.string(), + }), + subdomain: yup.string().when('enabled', { + is: true, + then: yup.string().required(translatedErrors.required), + otherwise: yup.string(), + }), + callback: yup.string().when('enabled', { + is: true, + then: yup.string().required(translatedErrors.required), + otherwise: yup.string(), + }), + }), + }, +}; + +export default forms; diff --git a/packages/strapi-borked/src/extensions/users-permissions/admin/src/pages/Roles/CreatePage.js b/packages/strapi-borked/src/extensions/users-permissions/admin/src/pages/Roles/CreatePage.js new file mode 100644 index 0000000..15888f7 --- /dev/null +++ b/packages/strapi-borked/src/extensions/users-permissions/admin/src/pages/Roles/CreatePage.js @@ -0,0 +1,185 @@ +import React, { useRef, useState } from 'react'; + +import { + Box, + Button, + ContentLayout, + Flex, + Grid, + GridItem, + HeaderLayout, + Main, + Textarea, + TextInput, + Typography, +} from '@strapi/design-system'; +import { + Form, + SettingsPageTitle, + useFetchClient, + useNotification, + useOverlayBlocker, + useTracking, +} from '@strapi/helper-plugin'; +import { Check } from '@strapi/icons'; +import { Formik } from 'formik'; +import { useIntl } from 'react-intl'; +import { useHistory } from 'react-router-dom'; + +import UsersPermissions from '../../components/UsersPermissions'; +import { usePlugins } from '../../hooks'; +import pluginId from '../../pluginId'; +import getTrad from '../../utils/getTrad'; + +import { createRoleSchema } from './constants'; + +const CreatePage = () => { + const { formatMessage } = useIntl(); + const [isSubmitting, setIsSubmitting] = useState(false); + const toggleNotification = useNotification(); + const { goBack } = useHistory(); + const { lockApp, unlockApp } = useOverlayBlocker(); + const { isLoading: isLoadingPlugins, permissions, routes } = usePlugins(); + const { trackUsage } = useTracking(); + const permissionsRef = useRef(); + const { post } = useFetchClient(); + + const handleCreateRoleSubmit = async (data) => { + // Set loading state + lockApp(); + setIsSubmitting(true); + try { + const permissions = permissionsRef.current.getPermissions(); + // Update role in Strapi + await post(`/${pluginId}/roles`, { ...data, ...permissions, users: [] }); + // Notify success + trackUsage('didCreateRole'); + toggleNotification({ + type: 'success', + message: { + id: getTrad('Settings.roles.created'), + defaultMessage: 'Role created', + }, + }); + // Forcing redirecting since we don't have the id in the response + goBack(); + } catch (err) { + console.error(err); + toggleNotification({ + type: 'warning', + message: { + id: 'notification.error', + defaultMessage: 'An error occurred', + }, + }); + } + // Unset loading state + setIsSubmitting(false); + unlockApp(); + }; + + return ( ++ + + ); +}; + +export default CreatePage; diff --git a/packages/strapi-borked/src/extensions/users-permissions/admin/src/pages/Roles/EditPage.js b/packages/strapi-borked/src/extensions/users-permissions/admin/src/pages/Roles/EditPage.js new file mode 100644 index 0000000..9a88716 --- /dev/null +++ b/packages/strapi-borked/src/extensions/users-permissions/admin/src/pages/Roles/EditPage.js @@ -0,0 +1,197 @@ +import React, { useRef, useState } from 'react'; + +import { + ContentLayout, + HeaderLayout, + Main, + Button, + Flex, + Box, + TextInput, + Textarea, + Typography, + GridItem, + Grid, +} from '@strapi/design-system'; +import { + useFetchClient, + useOverlayBlocker, + SettingsPageTitle, + LoadingIndicatorPage, + Form, + useNotification, + Link, +} from '@strapi/helper-plugin'; +import { ArrowLeft, Check } from '@strapi/icons'; +import { Formik } from 'formik'; +import { useIntl } from 'react-intl'; +import { useRouteMatch } from 'react-router-dom'; + +import UsersPermissions from '../../components/UsersPermissions'; +import { usePlugins, useFetchRole } from '../../hooks'; +import pluginId from '../../pluginId'; +import getTrad from '../../utils/getTrad'; + +import { createRoleSchema } from './constants'; + +const EditPage = () => { + const { formatMessage } = useIntl(); + const [isSubmitting, setIsSubmitting] = useState(false); + const toggleNotification = useNotification(); + const { lockApp, unlockApp } = useOverlayBlocker(); + const { + params: { id }, + } = useRouteMatch(`/settings/${pluginId}/roles/:id`); + const { isLoading: isLoadingPlugins, routes } = usePlugins(); + const { role, onSubmitSucceeded, isLoading: isLoadingRole } = useFetchRole(id); + const permissionsRef = useRef(); + const { put } = useFetchClient(); + + const handleEditRoleSubmit = async (data) => { + // Set loading state + lockApp(); + setIsSubmitting(true); + try { + const permissions = permissionsRef.current.getPermissions(); + // Update role in Strapi + await put(`/${pluginId}/roles/${id}`, { ...data, ...permissions, users: [] }); + // Notify success + onSubmitSucceeded({ name: data.name, description: data.description }); + toggleNotification({ + type: 'success', + message: { + id: getTrad('Settings.roles.edited'), + defaultMessage: 'Role edited', + }, + }); + } catch (err) { + console.error(err); + toggleNotification({ + type: 'warning', + message: { + id: 'notification.error', + defaultMessage: 'An error occurred', + }, + }); + } + // Unset loading state + setIsSubmitting(false); + unlockApp(); + }; + + if (isLoadingRole) { + return+ + {({ handleSubmit, values, handleChange, errors }) => ( + + )} + +; + } + + return ( + + + ); +}; + +export default EditPage; diff --git a/packages/strapi-borked/src/extensions/users-permissions/admin/src/pages/Roles/ListPage/components/TableBody.js b/packages/strapi-borked/src/extensions/users-permissions/admin/src/pages/Roles/ListPage/components/TableBody.js new file mode 100644 index 0000000..a27b892 --- /dev/null +++ b/packages/strapi-borked/src/extensions/users-permissions/admin/src/pages/Roles/ListPage/components/TableBody.js @@ -0,0 +1,93 @@ +import React from 'react'; + +import { Flex, IconButton, Tbody, Td, Tr, Typography } from '@strapi/design-system'; +import { CheckPermissions, onRowClick, stopPropagation } from '@strapi/helper-plugin'; +import { Pencil, Trash } from '@strapi/icons'; +import PropTypes from 'prop-types'; +import { useIntl } from 'react-intl'; +import { useHistory } from 'react-router-dom'; + +import pluginId from '../../../../pluginId'; + +const TableBody = ({ sortedRoles, canDelete, permissions, setRoleToDelete, onDelete }) => { + const { formatMessage } = useIntl(); + const { push } = useHistory(); + const [showConfirmDelete, setShowConfirmDelete] = onDelete; + + const checkCanDeleteRole = (role) => + canDelete && !['public', 'authenticated'].includes(role.type); + + const handleClickDelete = (id) => { + setRoleToDelete(id); + setShowConfirmDelete(!showConfirmDelete); + }; + + const handleClickEdit = (id) => { + push(`/settings/${pluginId}/roles/${id}`); + }; + + return ( + + {sortedRoles?.map((role) => ( ++ + {({ handleSubmit, values, handleChange, errors }) => ( + + )} + +handleClickEdit(role.id) })}> + + ))} + + ); +}; + +export default TableBody; + +TableBody.defaultProps = { + canDelete: false, +}; + +TableBody.propTypes = { + onDelete: PropTypes.array.isRequired, + permissions: PropTypes.object.isRequired, + setRoleToDelete: PropTypes.func.isRequired, + sortedRoles: PropTypes.array.isRequired, + canDelete: PropTypes.bool, +}; diff --git a/packages/strapi-borked/src/extensions/users-permissions/admin/src/pages/Roles/ListPage/index.js b/packages/strapi-borked/src/extensions/users-permissions/admin/src/pages/Roles/ListPage/index.js new file mode 100644 index 0000000..2326f2b --- /dev/null +++ b/packages/strapi-borked/src/extensions/users-permissions/admin/src/pages/Roles/ListPage/index.js @@ -0,0 +1,243 @@ +import React, { useMemo, useState } from 'react'; + +import { + ActionLayout, + Button, + ContentLayout, + HeaderLayout, + Layout, + Main, + Table, + Th, + Thead, + Tr, + Typography, + useNotifyAT, + VisuallyHidden, +} from '@strapi/design-system'; +import { + CheckPermissions, + ConfirmDialog, + EmptyStateLayout, + LoadingIndicatorPage, + NoPermissions, + SearchURLQuery, + SettingsPageTitle, + useCollator, + useFilter, + useFocusWhenNavigate, + useNotification, + useQueryParams, + useRBAC, + useTracking, +} from '@strapi/helper-plugin'; +import { Plus } from '@strapi/icons'; +import { useIntl } from 'react-intl'; +import { useMutation, useQuery, useQueryClient } from 'react-query'; +import { useHistory } from 'react-router-dom'; + +import permissions from '../../../permissions'; +import pluginId from '../../../pluginId'; +import { getTrad } from '../../../utils'; + +import TableBody from './components/TableBody'; +import { deleteData, fetchData } from './utils/api'; + +const RoleListPage = () => { + const { trackUsage } = useTracking(); + const { formatMessage, locale } = useIntl(); + const { push } = useHistory(); + const toggleNotification = useNotification(); + const { notifyStatus } = useNotifyAT(); + const [{ query }] = useQueryParams(); + const _q = query?._q || ''; + const [showConfirmDelete, setShowConfirmDelete] = useState(false); + const [isConfirmButtonLoading, setIsConfirmButtonLoading] = useState(false); + const [roleToDelete, setRoleToDelete] = useState(); + useFocusWhenNavigate(); + + const queryClient = useQueryClient(); + + const updatePermissions = useMemo(() => { + return { + create: permissions.createRole, + read: permissions.readRoles, + update: permissions.updateRole, + delete: permissions.deleteRole, + }; + }, []); + + const { + isLoading: isLoadingForPermissions, + allowedActions: { canRead, canDelete }, + } = useRBAC(updatePermissions); + + const { + isLoading: isLoadingForData, + data: { roles }, + isFetching, + } = useQuery('get-roles', () => fetchData(toggleNotification, notifyStatus), { + initialData: {}, + enabled: canRead, + }); + + const { includes } = useFilter(locale, { + sensitivity: 'base', + }); + + /** + * @type {Intl.Collator} + */ + const formatter = useCollator(locale, { + sensitivity: 'base', + }); + + const isLoading = isLoadingForData || isFetching; + + const handleNewRoleClick = () => { + trackUsage('willCreateRole'); + push(`/settings/${pluginId}/roles/new`); + }; + + const handleShowConfirmDelete = () => { + setShowConfirmDelete(!showConfirmDelete); + }; + + const emptyLayout = { + roles: { + id: getTrad('Roles.empty'), + defaultMessage: "You don't have any roles yet.", + }, + search: { + id: getTrad('Roles.empty.search'), + defaultMessage: 'No roles match the search.', + }, + }; + + const pageTitle = formatMessage({ + id: 'global.roles', + defaultMessage: 'Roles', + }); + + const deleteMutation = useMutation((id) => deleteData(id, toggleNotification), { + async onSuccess() { + await queryClient.invalidateQueries('get-roles'); + }, + }); + + const handleConfirmDelete = async () => { + setIsConfirmButtonLoading(true); + await deleteMutation.mutateAsync(roleToDelete); + setShowConfirmDelete(!showConfirmDelete); + setIsConfirmButtonLoading(false); + }; + + const sortedRoles = (roles || []) + .filter((role) => includes(role.name, _q) || includes(role.description, _q)) + .sort( + (a, b) => formatter.compare(a.name, b.name) || formatter.compare(a.description, b.description) + ); + + const emptyContent = _q && !sortedRoles.length ? 'search' : 'roles'; + + const colCount = 4; + const rowCount = (roles?.length || 0) + 1; + + return ( ++ +{role.name} ++ +{role.description} ++ ++ {`${role.nb_users} ${formatMessage({ + id: 'global.users', + defaultMessage: 'users', + }).toLowerCase()}`} + ++ ++ ++ + {checkCanDeleteRole(role) && ( +handleClickEdit(role.id)} + noBorder + icon={ } + label={formatMessage( + { id: 'app.component.table.edit', defaultMessage: 'Edit {target}' }, + { target: `${role.name}` } + )} + /> + + + )} +handleClickDelete(role.id)} + noBorder + icon={ } + label={formatMessage( + { id: 'global.delete-target', defaultMessage: 'Delete {target}' }, + { target: `${role.name}` } + )} + /> + + + ); +}; + +export default RoleListPage; diff --git a/packages/strapi-borked/src/extensions/users-permissions/admin/src/pages/Roles/ListPage/utils/api.js b/packages/strapi-borked/src/extensions/users-permissions/admin/src/pages/Roles/ListPage/utils/api.js new file mode 100644 index 0000000..67fb5e7 --- /dev/null +++ b/packages/strapi-borked/src/extensions/users-permissions/admin/src/pages/Roles/ListPage/utils/api.js @@ -0,0 +1,32 @@ +import { getFetchClient } from '@strapi/helper-plugin'; + +import { getRequestURL } from '../../../../utils'; + +export const fetchData = async (toggleNotification, notifyStatus) => { + try { + const { get } = getFetchClient(); + const { data } = await get(getRequestURL('roles')); + notifyStatus('The roles have loaded successfully'); + + return data; + } catch (err) { + toggleNotification({ + type: 'warning', + message: { id: 'notification.error' }, + }); + + throw new Error(err); + } +}; + +export const deleteData = async (id, toggleNotification) => { + try { + const { del } = getFetchClient(); + await del(`${getRequestURL('roles')}/${id}`); + } catch (error) { + toggleNotification({ + type: 'warning', + message: { id: 'notification.error', defaultMessage: 'An error occured' }, + }); + } +}; diff --git a/packages/strapi-borked/src/extensions/users-permissions/admin/src/pages/Roles/ProtectedCreatePage.js b/packages/strapi-borked/src/extensions/users-permissions/admin/src/pages/Roles/ProtectedCreatePage.js new file mode 100644 index 0000000..be2a0d1 --- /dev/null +++ b/packages/strapi-borked/src/extensions/users-permissions/admin/src/pages/Roles/ProtectedCreatePage.js @@ -0,0 +1,15 @@ +import React from 'react'; + +import { CheckPagePermissions } from '@strapi/helper-plugin'; + +import pluginPermissions from '../../permissions'; + +import RolesCreatePage from './CreatePage'; + +const ProtectedRolesCreatePage = () => ( ++ + ++ } size="S"> + {formatMessage({ + id: getTrad('List.button.roles'), + defaultMessage: 'Add new role', + })} + + + } + /> + + + } + /> + + + {!canRead && +} + {(isLoading || isLoadingForPermissions) && } + {canRead && sortedRoles && sortedRoles?.length ? ( + + +
+ ) : ( ++ + ++ ++ {formatMessage({ id: 'global.name', defaultMessage: 'Name' })} + ++ ++ {formatMessage({ + id: 'global.description', + defaultMessage: 'Description', + })} + ++ ++ {formatMessage({ + id: 'global.users', + defaultMessage: 'Users', + })} + ++ ++ {formatMessage({ + id: 'global.actions', + defaultMessage: 'Actions', + })} + ++ + )} + + + +); + +export default ProtectedRolesCreatePage; diff --git a/packages/strapi-borked/src/extensions/users-permissions/admin/src/pages/Roles/ProtectedEditPage.js b/packages/strapi-borked/src/extensions/users-permissions/admin/src/pages/Roles/ProtectedEditPage.js new file mode 100644 index 0000000..c3e0691 --- /dev/null +++ b/packages/strapi-borked/src/extensions/users-permissions/admin/src/pages/Roles/ProtectedEditPage.js @@ -0,0 +1,15 @@ +import React from 'react'; + +import { CheckPagePermissions } from '@strapi/helper-plugin'; + +import pluginPermissions from '../../permissions'; + +import RolesEditPage from './EditPage'; + +const ProtectedRolesEditPage = () => ( ++ + +); + +export default ProtectedRolesEditPage; diff --git a/packages/strapi-borked/src/extensions/users-permissions/admin/src/pages/Roles/ProtectedListPage.js b/packages/strapi-borked/src/extensions/users-permissions/admin/src/pages/Roles/ProtectedListPage.js new file mode 100644 index 0000000..867a72b --- /dev/null +++ b/packages/strapi-borked/src/extensions/users-permissions/admin/src/pages/Roles/ProtectedListPage.js @@ -0,0 +1,17 @@ +import React from 'react'; + +import { CheckPagePermissions } from '@strapi/helper-plugin'; + +import pluginPermissions from '../../permissions'; + +import RolesListPage from './ListPage'; + +const ProtectedRolesListPage = () => { + return ( ++ + + ); +}; + +export default ProtectedRolesListPage; diff --git a/packages/strapi-borked/src/extensions/users-permissions/admin/src/pages/Roles/constants.js b/packages/strapi-borked/src/extensions/users-permissions/admin/src/pages/Roles/constants.js new file mode 100644 index 0000000..51bd2c3 --- /dev/null +++ b/packages/strapi-borked/src/extensions/users-permissions/admin/src/pages/Roles/constants.js @@ -0,0 +1,7 @@ +import { translatedErrors } from '@strapi/helper-plugin'; +import * as yup from 'yup'; + +export const createRoleSchema = yup.object().shape({ + name: yup.string().required(translatedErrors.required), + description: yup.string().required(translatedErrors.required), +}); diff --git a/packages/strapi-borked/src/extensions/users-permissions/admin/src/pages/Roles/index.js b/packages/strapi-borked/src/extensions/users-permissions/admin/src/pages/Roles/index.js new file mode 100644 index 0000000..d23637b --- /dev/null +++ b/packages/strapi-borked/src/extensions/users-permissions/admin/src/pages/Roles/index.js @@ -0,0 +1,30 @@ +import React from 'react'; + +import { AnErrorOccurred, CheckPagePermissions } from '@strapi/helper-plugin'; +import { Route, Switch } from 'react-router-dom'; + +import pluginPermissions from '../../permissions'; +import pluginId from '../../pluginId'; + +import ProtectedRolesCreatePage from './ProtectedCreatePage'; +import ProtectedRolesEditPage from './ProtectedEditPage'; +import ProtectedRolesListPage from './ProtectedListPage'; + +const Roles = () => { + return ( ++ + + ); +}; + +export default Roles; diff --git a/packages/strapi-borked/src/extensions/users-permissions/admin/src/permissions.js b/packages/strapi-borked/src/extensions/users-permissions/admin/src/permissions.js new file mode 100644 index 0000000..4ab7e71 --- /dev/null +++ b/packages/strapi-borked/src/extensions/users-permissions/admin/src/permissions.js @@ -0,0 +1,31 @@ +const pluginPermissions = { + // Roles + accessRoles: [ + { action: 'plugin::users-permissions.roles.create', subject: null }, + { action: 'plugin::users-permissions.roles.read', subject: null }, + ], + createRole: [{ action: 'plugin::users-permissions.roles.create', subject: null }], + deleteRole: [{ action: 'plugin::users-permissions.roles.delete', subject: null }], + readRoles: [{ action: 'plugin::users-permissions.roles.read', subject: null }], + updateRole: [{ action: 'plugin::users-permissions.roles.update', subject: null }], + + // AdvancedSettings + readAdvancedSettings: [ + { action: 'plugin::users-permissions.advanced-settings.read', subject: null }, + ], + updateAdvancedSettings: [ + { action: 'plugin::users-permissions.advanced-settings.update', subject: null }, + ], + + // Emails + readEmailTemplates: [{ action: 'plugin::users-permissions.email-templates.read', subject: null }], + updateEmailTemplates: [ + { action: 'plugin::users-permissions.email-templates.update', subject: null }, + ], + + // Providers + readProviders: [{ action: 'plugin::users-permissions.providers.read', subject: null }], + updateProviders: [{ action: 'plugin::users-permissions.providers.update', subject: null }], +}; + +export default pluginPermissions; diff --git a/packages/strapi-borked/src/extensions/users-permissions/admin/src/pluginId.js b/packages/strapi-borked/src/extensions/users-permissions/admin/src/pluginId.js new file mode 100644 index 0000000..791a679 --- /dev/null +++ b/packages/strapi-borked/src/extensions/users-permissions/admin/src/pluginId.js @@ -0,0 +1,5 @@ +import pluginPkg from '../../package.json'; + +const pluginId = pluginPkg.name.replace(/^@strapi\/plugin-/i, ''); + +export default pluginId; diff --git a/packages/strapi-borked/src/extensions/users-permissions/admin/src/translations/ar.json b/packages/strapi-borked/src/extensions/users-permissions/admin/src/translations/ar.json new file mode 100644 index 0000000..d72ac92 --- /dev/null +++ b/packages/strapi-borked/src/extensions/users-permissions/admin/src/translations/ar.json @@ -0,0 +1,40 @@ +{ + "BoundRoute.title": "Bound route to", + "EditForm.inputSelect.description.role": "سيتم إرفاق المستخدم المصادق الجديد بالدور المحدد.", + "EditForm.inputSelect.label.role": "الدور الافتراضي للمستخدمين المصادقين", + "EditForm.inputToggle.description.email": "عدم السماح للمستخدم بإنشاء حسابات متعددة باستخدام نفس عنوان البريد الإلكتروني مع موفري مصادقة مختلفين.", + "EditForm.inputToggle.description.sign-up": "عند تعطيل (OFF) ، يتم حظر عملية التسجيل. لا أحد يستطيع الاشتراك بعد الآن بغض النظر عن المزود المستخدم.", + "EditForm.inputToggle.label.email": "حساب واحد لكل بريد الاكتروني", + "EditForm.inputToggle.label.sign-up": "تفعيل التسجيل", + "HeaderNav.link.advancedSettings": "إعدادات متقدمة", + "HeaderNav.link.emailTemplates": "قوالب الإيميل", + "HeaderNav.link.providers": "مزودين", + "Plugin.permissions.plugins.description": "حدد جميع الإجراءات المسموح بها للإضافة {name}.", + "Plugins.header.description": "يتم سرد الإجراءات المحددة المرتبطة بالمسار أدناه.", + "Plugins.header.title": "الصلاحيات", + "Policies.header.hint": "حدد إجراءات التطبيق أو إجراءات الإضافة وانقر على رمز الترس لعرض المسار المرتبط", + "Policies.header.title": "إعدادات متقدمة", + "PopUpForm.Email.email_templates.inputDescription": "إذا كنت غير متأكد من كيفية استخدام المتغيرات ، {link}", + "PopUpForm.Email.options.from.email.label": "البريد الإلكتروني للشاحن", + "PopUpForm.Email.options.from.email.placeholder": "kai@doe.com", + "PopUpForm.Email.options.from.name.label": "أسم المورد", + "PopUpForm.Email.options.from.name.placeholder": "Kai Doe", + "PopUpForm.Email.options.message.label": "الرسالة", + "PopUpForm.Email.options.object.label": "موضوع", + "PopUpForm.Email.options.response_email.label": "البريد الإلكتروني للاستجابة", + "PopUpForm.Email.options.response_email.placeholder": "kai@doe.com", + "PopUpForm.Providers.enabled.description": "في حالة التعطيل ، لن يتمكن المستخدمون من استخدام هذا الموفر.", + "PopUpForm.Providers.enabled.label": "مفعل", + "PopUpForm.Providers.key.label": "معرف العميل", + "PopUpForm.Providers.key.placeholder": "نص", + "PopUpForm.Providers.redirectURL.front-end.label": "عنوان URL لإعادة التوجيه إلى تطبيق الواجهة الأمامية (front-end)", + "PopUpForm.Providers.secret.label": "سر العميل (Client Secret)", + "PopUpForm.Providers.secret.placeholder": "نص", + "PopUpForm.Providers.subdomain.label": "Host URI (Subdomain)", + "PopUpForm.Providers.subdomain.placeholder": "my.subdomain.com", + "PopUpForm.header.edit.email-templates": "تحرير قوالب البريد الإلكتروني", + "notification.success.submit": "تم تحديث الإعدادات", + "plugin.description.long": "حماية الـAPI الخاص بك مع عملية مصادقة كاملة استناداً إلى JWT. يأتي هذا الملحق أيضًا مع إستراتيجية ACL التي تسمح لك بإدارة الأذونات بين مجموعات المستخدمين.", + "plugin.description.short": "حماية الـAPI الخاص بك مع عملية مصادقة كاملة استناداً إلى JWT", + "plugin.name": "الأدوار والصلاحية" +} diff --git a/packages/strapi-borked/src/extensions/users-permissions/admin/src/translations/cs.json b/packages/strapi-borked/src/extensions/users-permissions/admin/src/translations/cs.json new file mode 100644 index 0000000..9edd07b --- /dev/null +++ b/packages/strapi-borked/src/extensions/users-permissions/admin/src/translations/cs.json @@ -0,0 +1,46 @@ +{ + "BoundRoute.title": "Spojit adresu s", + "EditForm.inputSelect.description.role": "Připojí nově autentifikovaného uživatele ke svolené roli.", + "EditForm.inputSelect.label.role": "Výchozí role pro autentifikovaného uživatele", + "EditForm.inputToggle.description.email": "Zabránit uživateli vytvářet různé účty se stejným e-mailem a jinými poskytovateli autentifikace.", + "EditForm.inputToggle.description.email-confirmation": "Pokud je tato funkce povolena (ON), nově registrovaní uživatelé dostanou potvrzující e-mail.", + "EditForm.inputToggle.description.email-confirmation-redirection": "Po potvrzení e-mailu, zvolte kam budete přesměrováni.", + "EditForm.inputToggle.description.email-reset-password": "Adresa stránky obnovení hesla vaší aplikace", + "EditForm.inputToggle.description.sign-up": "Pokud je tato možnost zakázána (OFF), není možno projít registrací. Nikdo se již nemůže připojit, bez ohledu jakého použije poskytovatele.", + "EditForm.inputToggle.label.email": "Jeden účet na e-mail", + "EditForm.inputToggle.label.email-confirmation": "Povolit potvrzení z e-mailu", + "EditForm.inputToggle.label.email-confirmation-redirection": "Adresa pro přesměrování", + "EditForm.inputToggle.label.email-reset-password": "Stránka pro obnovení hesla", + "EditForm.inputToggle.label.sign-up": "Povolit registrace", + "HeaderNav.link.advancedSettings": "Pokročilá nastavení", + "HeaderNav.link.emailTemplates": "E-mailové šablony", + "HeaderNav.link.providers": "Poskytovatelé", + "Plugin.permissions.plugins.description": "Nastavit všechny akce pro zásuvný modul {name}.", + "Plugins.header.description": "Pouze akce spojené s adresou jsou vypsány níže.", + "Plugins.header.title": "Povolení", + "Policies.header.hint": "Vyberte akce aplikace, nebo akce zásuvného modulu a klikněte na ikonku ozubeného kolečka pro zobrazení adresy s nimi spojenou.", + "Policies.header.title": "Pokročilá nastavení", + "PopUpForm.Email.email_templates.inputDescription": "Pokud si nejste jisti jak používat proměnné, {link}", + "PopUpForm.Email.options.from.email.label": "Odesilatelův e-mail", + "PopUpForm.Email.options.from.email.placeholder": "jannovak@gmail.com", + "PopUpForm.Email.options.from.name.label": "Jméno odesilatele", + "PopUpForm.Email.options.from.name.placeholder": "Jan Novák", + "PopUpForm.Email.options.message.label": "Zpráva", + "PopUpForm.Email.options.object.label": "Předmět", + "PopUpForm.Email.options.response_email.label": "Response e-mail", + "PopUpForm.Email.options.response_email.placeholder": "jannovak@gmail.com", + "PopUpForm.Providers.enabled.description": "If disabled, users won't be able to use this provider.", + "PopUpForm.Providers.enabled.label": "Povolit", + "PopUpForm.Providers.key.label": "Client ID", + "PopUpForm.Providers.key.placeholder": "TEXT", + "PopUpForm.Providers.redirectURL.front-end.label": "Adresa pro přesměrování na vaši front-end aplikaci", + "PopUpForm.Providers.secret.label": "Client Secret", + "PopUpForm.Providers.secret.placeholder": "TEXT", + "PopUpForm.Providers.subdomain.label": "Host URI (Subdomain)", + "PopUpForm.Providers.subdomain.placeholder": "my.subdomain.com", + "PopUpForm.header.edit.email-templates": "Upravit e-mailové šablony", + "notification.success.submit": "Nastavení bylo aktualizování", + "plugin.description.long": "Chraňte své API pomocí kompletního autentifikačního procesu, založeného na JWT. Tento zásuvný modul obsahuje ACL strategii, která vám umožní spravovat oprávnění mezi skupinami uživatelů.", + "plugin.description.short": "Chraňte své API pomocí kompletního autentifikačního procesu, založeného na JWT", + "plugin.name": "Role a oprávnění" +} diff --git a/packages/strapi-borked/src/extensions/users-permissions/admin/src/translations/de.json b/packages/strapi-borked/src/extensions/users-permissions/admin/src/translations/de.json new file mode 100644 index 0000000..be2f6d3 --- /dev/null +++ b/packages/strapi-borked/src/extensions/users-permissions/admin/src/translations/de.json @@ -0,0 +1,58 @@ +{ + "BoundRoute.title": "Pfad gebunden an", + "EditForm.inputSelect.description.role": "Die Rolle, die neu authentifizierten Benutzern automatisch zugewiesen wird.", + "EditForm.inputSelect.label.role": "Standardrolle für authentifizierte Benutzer", + "EditForm.inputToggle.description.email": "Verbiete das Anlegen verschiedener Accounts mit der gleichen E-Mail-Adresse bei unterschiedlichen Anmeldemethoden.", + "EditForm.inputToggle.description.email-confirmation": "Wenn aktiviert (ON) erhalten neu registrierte Benutzer eine Bestätigungs-E-Mail.", + "EditForm.inputToggle.description.email-confirmation-redirection": "Nachdem Sie die E-Mail bestätigt haben, wähle wohin sie weitergeleitet wird.", + "EditForm.inputToggle.description.email-reset-password": "URL deiner Passwort-Zurücksetzen-Seite deiner Anwendung", + "EditForm.inputToggle.description.sign-up": "Wenn deaktiviert (OFF), wird der Registrationsprozess unterbunden. Niemand kann sich mehr registrieren.", + "EditForm.inputToggle.label.email": "Ein Account pro E-Mail-Adresse", + "EditForm.inputToggle.label.email-confirmation": "Aktiviere E-Mail Benachrichtigungen", + "EditForm.inputToggle.label.email-confirmation-redirection": "Weiterleitungs-URL", + "EditForm.inputToggle.label.email-reset-password": "Passwort-Zurücksetzen-Seite", + "EditForm.inputToggle.label.sign-up": "Registration ermöglichen", + "Email.template.email_confirmation": "Bestätigung der E-Mail-Addresse", + "HeaderNav.link.advancedSettings": "Erweiterte Einstellungen", + "HeaderNav.link.emailTemplates": "E-Mail-Templates", + "HeaderNav.link.providers": "Methoden", + "Plugin.permissions.plugins.description": "Definiere die möglichen Aktionen des {name} Plugins.", + "Plugins.header.description": "Nur Aktionen, die an einen Pfad gebunden sind, werden hier gelistet.", + "Plugins.header.title": "Berechtigungen", + "Policies.header.hint": "Wähle eine Aktion aus und klicke auf das Zahnrad, um den an diese Aktion gebundenen Pfad anzuzeigen", + "Policies.header.title": "Fortgeschrittene Einstellungen", + "PopUpForm.Email.email_templates.inputDescription": "{link} für mehr Informationen", + "PopUpForm.Email.link.documentation": "Lies die Dokumentation", + "PopUpForm.Email.options.from.email.label": "E-Mail-Adresse des Absenders", + "PopUpForm.Email.options.from.email.placeholder": "kai@doe.com", + "PopUpForm.Email.options.from.name.label": "Name des Absenders", + "PopUpForm.Email.options.from.name.placeholder": "Kai Doe", + "PopUpForm.Email.options.message.label": "Nachricht", + "PopUpForm.Email.options.object.label": "Betreff", + "PopUpForm.Email.options.object.placeholder": "Bitte bestätige deine E-Mail-Adresse für %APP_NAME%", + "PopUpForm.Email.options.response_email.label": "Antwort E-Mail-Adresse", + "PopUpForm.Email.options.response_email.placeholder": "kai@doe.com", + "PopUpForm.Providers.enabled.description": "Wenn deaktiviert, kann diese Methode nicht verwendet werden.", + "PopUpForm.Providers.enabled.label": "Aktivieren", + "PopUpForm.Providers.key.label": "Client ID", + "PopUpForm.Providers.key.placeholder": "TEXT", + "PopUpForm.Providers.redirectURL.front-end.label": "Die URL zur Weiterleitung zu deiner Frontend-App", + "PopUpForm.Providers.redirectURL.label": "Die Weiterleitungs-URL für die App-Einstellungen von {provider}", + "PopUpForm.Providers.secret.label": "Client Secret", + "PopUpForm.Providers.secret.placeholder": "TEXT", + "PopUpForm.Providers.subdomain.label": "Host URI (Subdomain)", + "PopUpForm.Providers.subdomain.placeholder": "my.subdomain.com", + "PopUpForm.header.edit.email-templates": "E-Mail-Templates bearbeiten", + "PopUpForm.header.edit.providers": "Anbieter bearbeiten", + "Settings.roles.deleted": "Rolle gelöscht", + "Settings.roles.edited": "Rolle bearbeitet", + "Settings.section-label": "Nutzer- & Berechtigungen-Plugin", + "notification.success.submit": "Einstellungen aktualisiert", + "plugin.description.long": "Beschütze deine API mit einem vollständigen Authentifikationsprozess basierend auf JWT. Zudem bietet dieses Plugin eine ACL-Strategie, die erlaubt, die Berechtigungen für Benutzergruppen festzulegen.", + "plugin.description.short": "Beschütze deine API mit einem vollständigen Authentifikationsprozess basierend auf JWT.", + "plugin.name": "Nutzer- & Berechtigungen-Plugin", + "popUpWarning.button.cancel": "Abbrechen", + "popUpWarning.button.confirm": "Bestätigen", + "popUpWarning.title": "Bitte bestätigen", + "popUpWarning.warning.cancel": "Willst du wirklich alle deine Änderungen verwerfen?" +} diff --git a/packages/strapi-borked/src/extensions/users-permissions/admin/src/translations/dk.json b/packages/strapi-borked/src/extensions/users-permissions/admin/src/translations/dk.json new file mode 100644 index 0000000..5465bd6 --- /dev/null +++ b/packages/strapi-borked/src/extensions/users-permissions/admin/src/translations/dk.json @@ -0,0 +1,82 @@ +{ + "BoundRoute.title": "Bundet rute til", + "EditForm.inputSelect.description.role": "Den vil tilknytte den nye godkendte bruger til den valgte rolle.", + "EditForm.inputSelect.label.role": "Standard rolle for godkendte brugere", + "EditForm.inputToggle.description.email": "Tillad IKKE brugere at oprette flere brugere med den samme e-mail-adresse med forskellige godkendelsesudbydere.", + "EditForm.inputToggle.description.email-confirmation": "Når aktiv (TIL), modtager nye registrerede brugere en bekræftelses e-mail.", + "EditForm.inputToggle.description.email-confirmation-redirection": "Efter bekræftet email, vælg hvor du vil omdirigeres til.", + "EditForm.inputToggle.description.email-reset-password": "URL til din apps nulstil kodeord side", + "EditForm.inputToggle.description.sign-up": "Når deaktiveret (FRA), er registrering forbudt. Ingen kan subscribe uanset udbyder.", + "EditForm.inputToggle.label.email": "En bruger pr. e-mail", + "EditForm.inputToggle.label.email-confirmation": "Aktivér e-mail bekræftelse", + "EditForm.inputToggle.label.email-confirmation-redirection": "Omdirigerings URL", + "EditForm.inputToggle.label.email-reset-password": "Nulstil kodeord side", + "EditForm.inputToggle.label.sign-up": "Aktivér oprettelser", + "EditForm.inputToggle.placeholder.email-confirmation-redirection": "f.eks. https://hjemmeside.dk/nulstil-kodeord", + "EditForm.inputToggle.placeholder.email-reset-password": "f.eks. https://hjemmeside.dk/nulstil-kodeord", + "EditPage.form.roles": "Rolle detaljer", + "Email.template.data.loaded": "E-mail skabeloner er hentet", + "Email.template.email_confirmation": "E-mail adresse bekræftelse", + "Email.template.form.edit.label": "Redigér en skabelon", + "Email.template.table.action.label": "handling", + "Email.template.table.icon.label": "ikon", + "Email.template.table.name.label": "navn", + "Form.advancedSettings.data.loaded": "Avancerede indstillinger hentet", + "HeaderNav.link.advancedSettings": "Advancerede indstillinger", + "HeaderNav.link.emailTemplates": "E-mail skabeloner", + "HeaderNav.link.providers": "Udbydere", + "Plugin.permissions.plugins.description": "Definér alle tilladte handlinger for {name} plugin.", + "Plugins.header.description": "Kunne handlinger tilknyttet en rute er vist nedenfor.", + "Plugins.header.title": "Rettigheder", + "Policies.header.hint": "Vælg applikationens handlinger eller plugin handlinger og klik på tandhjulet for at vise den bunde rute", + "Policies.header.title": "Advancerede indstillinger", + "PopUpForm.Email.email_templates.inputDescription": "Hvis du er usikker på brugen af variabler, {link}", + "PopUpForm.Email.link.documentation": "tjek vores dokumentation.", + "PopUpForm.Email.options.from.email.label": "Afsender e-mail", + "PopUpForm.Email.options.from.email.placeholder": "johndoe@gmail.com", + "PopUpForm.Email.options.from.name.label": "Afsender name", + "PopUpForm.Email.options.from.name.placeholder": "John Doe", + "PopUpForm.Email.options.message.label": "Besked", + "PopUpForm.Email.options.object.label": "Emne", + "PopUpForm.Email.options.object.placeholder": "Bekræft venligst din e-mail adresse for %APP_NAME%", + "PopUpForm.Email.options.response_email.label": "Svar e-mail", + "PopUpForm.Email.options.response_email.placeholder": "johndoe@gmail.com", + "PopUpForm.Providers.enabled.description": "Hvis deaktiveret, kan brugere ikke bruge denne udbyder.", + "PopUpForm.Providers.enabled.label": "Aktivér", + "PopUpForm.Providers.key.label": "Klient ID", + "PopUpForm.Providers.key.placeholder": "TEKST", + "PopUpForm.Providers.redirectURL.front-end.label": "Omstillings URL til din font-end app", + "PopUpForm.Providers.redirectURL.label": "Omstillings URL som tilføjes til din {provider} applikation konfigurationer", + "PopUpForm.Providers.secret.label": "Klient hemmelighed", + "PopUpForm.Providers.secret.placeholder": "TEKST", + "PopUpForm.Providers.subdomain.label": "Host URI (Subdomain)", + "PopUpForm.Providers.subdomain.placeholder": "mit.subdomain.dk", + "PopUpForm.header.edit.email-templates": "Redigér e-mail skabeloner", + "PopUpForm.header.edit.providers": "Redigér udbydere", + "Providers.data.loaded": "Providers hentet", + "Providers.status": "Status", + "Roles.empty": "Du har endnu ingen roller.", + "Roles.empty.search": "Ingen roller matcher søgningen.", + "Settings.roles.deleted": "Rolle slettet", + "Settings.roles.edited": "Rolle redigeret", + "Settings.section-label": "Brugere & Tilladelser plugin", + "components.Input.error.validation.email": "Dette er en ugyldig e.mail", + "components.Input.error.validation.json": "Dette stemmer ikke med JSON formatet", + "components.Input.error.validation.max": "Værdien er for høj.", + "components.Input.error.validation.maxLength": "Værdien er for lang.", + "components.Input.error.validation.min": "Værdien er for lav.", + "components.Input.error.validation.minLength": "Værdien er for kort.", + "components.Input.error.validation.minSupMax": "Kan ikke være overlegen", + "components.Input.error.validation.regex": "Værdien stemmer ikke overens med regex.", + "components.Input.error.validation.required": "Værdien er påkrævet.", + "components.Input.error.validation.unique": "Værdien er allerede brugt.", + "notification.success.submit": "Indstillingerne er blevet opdateret", + "page.title": "Indstillinger - Roller", + "plugin.description.long": "Beskyt din API med fuld godkendelse med JWT. Dette plugin kommer også med en ACL strategi som tillader dig at håndtere rettigeheder mellem grupper af brugere.", + "plugin.description.short": "Beskyt din API med fuld godkendelse med JWT", + "plugin.name": "Roller & rettigheder", + "popUpWarning.button.cancel": "Annuller", + "popUpWarning.button.confirm": "Bekræft", + "popUpWarning.title": "Bekræft venligst", + "popUpWarning.warning.cancel": "Er du sikker på at du vil annullere dine ændringer?" +} diff --git a/packages/strapi-borked/src/extensions/users-permissions/admin/src/translations/en.json b/packages/strapi-borked/src/extensions/users-permissions/admin/src/translations/en.json new file mode 100644 index 0000000..62f0438 --- /dev/null +++ b/packages/strapi-borked/src/extensions/users-permissions/admin/src/translations/en.json @@ -0,0 +1,82 @@ +{ + "BoundRoute.title": "Bound route to", + "EditForm.inputSelect.description.role": "It will attach the new authenticated user to the selected role.", + "EditForm.inputSelect.label.role": "Default role for authenticated users", + "EditForm.inputToggle.description.email": "Disallow the user to create multiple accounts using the same email address with different authentication providers.", + "EditForm.inputToggle.description.email-confirmation": "When enabled (ON), new registered users receive a confirmation email.", + "EditForm.inputToggle.description.email-confirmation-redirection": "After you confirmed your email, choose where you will be redirected.", + "EditForm.inputToggle.description.email-reset-password": "URL of your application's reset password page", + "EditForm.inputToggle.description.sign-up": "When disabled (OFF), the registration process is forbidden. No one can subscribe anymore no matter the used provider.", + "EditForm.inputToggle.label.email": "One account per email address", + "EditForm.inputToggle.label.email-confirmation": "Enable email confirmation", + "EditForm.inputToggle.label.email-confirmation-redirection": "Redirection url", + "EditForm.inputToggle.label.email-reset-password": "Reset password page", + "EditForm.inputToggle.label.sign-up": "Enable sign-ups", + "EditForm.inputToggle.placeholder.email-confirmation-redirection": "ex: https://yourfrontend.com/email-confirmation-redirection", + "EditForm.inputToggle.placeholder.email-reset-password": "ex: https://yourfrontend.com/reset-password", + "EditPage.form.roles": "Role details", + "Email.template.data.loaded": "Email templates has been loaded", + "Email.template.email_confirmation": "Email address confirmation", + "Email.template.form.edit.label": "Edit a template", + "Email.template.table.action.label": "action", + "Email.template.table.icon.label": "icon", + "Email.template.table.name.label": "name", + "Form.advancedSettings.data.loaded": "Advanced settings data has been loaded", + "HeaderNav.link.advancedSettings": "Advanced settings", + "HeaderNav.link.emailTemplates": "Email templates", + "HeaderNav.link.providers": "Providers", + "Plugin.permissions.plugins.description": "Define all allowed actions for the {name} plugin.", + "Plugins.header.description": "Only actions bound by a route are listed below.", + "Plugins.header.title": "Permissions", + "Policies.header.hint": "Select the application's actions or the plugin's actions and click on the cog icon to display the bound route", + "Policies.header.title": "Advanced settings", + "PopUpForm.Email.email_templates.inputDescription": "If you're unsure how to use variables, {link}", + "PopUpForm.Email.link.documentation": "check out our documentation.", + "PopUpForm.Email.options.from.email.label": "Shipper email", + "PopUpForm.Email.options.from.email.placeholder": "kai@doe.com", + "PopUpForm.Email.options.from.name.label": "Shipper name", + "PopUpForm.Email.options.from.name.placeholder": "Kai Doe", + "PopUpForm.Email.options.message.label": "Message", + "PopUpForm.Email.options.object.label": "Subject", + "PopUpForm.Email.options.object.placeholder": "Please confirm your email address for %APP_NAME%", + "PopUpForm.Email.options.response_email.label": "Response email", + "PopUpForm.Email.options.response_email.placeholder": "kai@doe.com", + "PopUpForm.Providers.enabled.description": "If disabled, users won't be able to use this provider.", + "PopUpForm.Providers.enabled.label": "Enable", + "PopUpForm.Providers.key.label": "Client ID", + "PopUpForm.Providers.key.placeholder": "TEXT", + "PopUpForm.Providers.redirectURL.front-end.label": "The redirect URL to your front-end app", + "PopUpForm.Providers.redirectURL.label": "The redirect URL to add in your {provider} application configurations", + "PopUpForm.Providers.secret.label": "Client Secret", + "PopUpForm.Providers.secret.placeholder": "TEXT", + "PopUpForm.Providers.subdomain.label": "Host URI (Subdomain)", + "PopUpForm.Providers.subdomain.placeholder": "my.subdomain.com", + "PopUpForm.header.edit.email-templates": "Edit email template", + "PopUpForm.header.edit.providers": "Edit Provider", + "Providers.data.loaded": "Providers have been loaded", + "Providers.status": "Status", + "Roles.empty": "You don't have any roles yet.", + "Roles.empty.search": "No roles match the search.", + "Settings.roles.deleted": "Role deleted", + "Settings.roles.edited": "Role edited", + "Settings.section-label": "Users & Permissions plugin", + "components.Input.error.validation.email": "This is an invalid email", + "components.Input.error.validation.json": "This doesn't match the JSON format", + "components.Input.error.validation.max": "The value is too high.", + "components.Input.error.validation.maxLength": "The value is too long.", + "components.Input.error.validation.min": "The value is too low.", + "components.Input.error.validation.minLength": "The value is too short.", + "components.Input.error.validation.minSupMax": "Can't be superior", + "components.Input.error.validation.regex": "The value does not match the regex.", + "components.Input.error.validation.required": "This value is required.", + "components.Input.error.validation.unique": "This value is already used.", + "notification.success.submit": "Settings have been updated", + "page.title": "Settings - Roles", + "plugin.description.long": "Protect your API with a full authentication process based on JWT. This plugin comes also with an ACL strategy that allows you to manage the permissions between the groups of users.", + "plugin.description.short": "Protect your API with a full authentication process based on JWT.", + "plugin.name": "Users & Permissions Plugin", + "popUpWarning.button.cancel": "Cancel", + "popUpWarning.button.confirm": "Confirm", + "popUpWarning.title": "Please confirm", + "popUpWarning.warning.cancel": "Are you sure you want to cancel your modifications?" +} diff --git a/packages/strapi-borked/src/extensions/users-permissions/admin/src/translations/es.json b/packages/strapi-borked/src/extensions/users-permissions/admin/src/translations/es.json new file mode 100644 index 0000000..d709dea --- /dev/null +++ b/packages/strapi-borked/src/extensions/users-permissions/admin/src/translations/es.json @@ -0,0 +1,82 @@ +{ + "BoundRoute.title": "Ruta enlazada a", + "EditForm.inputSelect.description.role": "Adjuntará el nuevo usuario autenticado al rol seleccionado.", + "EditForm.inputSelect.label.role": "Rol predeterminado para usuarios autenticados", + "EditForm.inputToggle.description.email": "No permita que el usuario cree varias cuentas utilizando la misma dirección de correo electrónico con distintos proveedores de autenticación.", + "EditForm.inputToggle.description.email-confirmation": "Estando habilitado (ON), nuevos usuarios registrados reciben un correo de confirmación.", + "EditForm.inputToggle.description.email-confirmation-redirection": "After confirmed your email, chose where you will be redirected.", + "EditForm.inputToggle.description.email-reset-password": "URL de la página de restablecimiento de contraseña de su aplicación", + "EditForm.inputToggle.description.sign-up": "Cuando está desactivado (OFF), el proceso de registro está prohibido. Nadie puede suscribirse sin importar el proveedor utilizado.", + "EditForm.inputToggle.label.email": "Una cuenta por dirección de correo electrónico", + "EditForm.inputToggle.label.email-confirmation": "Habilitar confirmación de correo", + "EditForm.inputToggle.label.email-confirmation-redirection": "URL de redirección", + "EditForm.inputToggle.label.email-reset-password": "Página de reestablecer la contraseña", + "EditForm.inputToggle.label.sign-up": "Habilitar inscripciones", + "EditForm.inputToggle.placeholder.email-confirmation-redirection": "ej: https://tufrontend.com/restablecer-contrasena", + "EditForm.inputToggle.placeholder.email-reset-password": "ej: https://tufrontend.com/restablecer-contrasena", + "EditPage.form.roles": "Detalles del rol", + "Email.template.data.loaded": "Se han cargado las plantillas de correo electrónico", + "Email.template.email_confirmation": "Confirmación de dirección de correo electrónico", + "Email.template.form.edit.label": "Editar una plantilla", + "Email.template.table.action.label": "acción", + "Email.template.table.icon.label": "icono", + "Email.template.table.name.label": "nombre", + "Form.advancedSettings.data.loaded": "Se han cargado los datos de configuración avanzada", + "HeaderNav.link.advancedSettings": "Ajustes avanzados", + "HeaderNav.link.emailTemplates": "Plantillas de email", + "HeaderNav.link.providers": "Proveedores", + "Plugin.permissions.plugins.description": "Defina todas las acciones permitidas para el plugin {name}.", + "Plugins.header.description": "Sólo las acciones vinculadas a una ruta se enumeran a continuación.", + "Plugins.header.title": "Permisos", + "Policies.header.hint": "Seleccione las acciones de la aplicación o las acciones del plugin y haga clic en el icono del engranaje para ver la ruta vinculada", + "Policies.header.title": "Ajustes avanzados", + "PopUpForm.Email.email_templates.inputDescription": "Si no estás seguro de cómo usar las variables, {link}", + "PopUpForm.Email.link.documentation": "consulte nuestra documentación.", + "PopUpForm.Email.options.from.email.label": "Email del remitente", + "PopUpForm.Email.options.from.email.placeholder": "kai@doe.com", + "PopUpForm.Email.options.from.name.label": "Nombre del remitente", + "PopUpForm.Email.options.from.name.placeholder": "Kai Doe", + "PopUpForm.Email.options.message.label": "Mensaje", + "PopUpForm.Email.options.object.label": "Tema", + "PopUpForm.Email.options.object.placeholder": "Confirma tu dirección de correo electrónico para %APP_NAME%", + "PopUpForm.Email.options.response_email.label": "Email de respuesta", + "PopUpForm.Email.options.response_email.placeholder": "kai@doe.com", + "PopUpForm.Providers.enabled.description": "Si está desactivado, los usuarios no podrán utilizar este proveedor.", + "PopUpForm.Providers.enabled.label": "Habilitar", + "PopUpForm.Providers.key.label": "ID de cliente", + "PopUpForm.Providers.key.placeholder": "TEXTO", + "PopUpForm.Providers.redirectURL.front-end.label": "La URL de redireccionamiento a su aplicación front-end", + "PopUpForm.Providers.redirectURL.label": "La URL de redireccionamiento para agregar en las configuraciones de su aplicación de {proveedor}", + "PopUpForm.Providers.secret.label": "Secreto Cliente", + "PopUpForm.Providers.secret.placeholder": "TEXTO", + "PopUpForm.Providers.subdomain.label": "URI de host (subdominio)", + "PopUpForm.Providers.subdomain.placeholder": "mi.subdominio.com", + "PopUpForm.header.edit.email-templates": "Editar Plantillas de Email", + "PopUpForm.header.edit.providers": "Editar proveedor", + "Providers.data.loaded": "Los proveedores se han cargado", + "Providers.status": "Estado", + "Roles.empty": "Aún no tienes ningún rol.", + "Roles.empty.search": "Ningún rol coincide con la búsqueda.", + "Settings.roles.deleted": "Rol eliminado", + "Settings.roles.edited": "Rol editado", + "Settings.section-label": "Plugin de Usuarios y Permisos", + "components.Input.error.validation.email": "El correo electrónico inválido", + "components.Input.error.validation.json": "No coincide con el formato JSON", + "components.Input.error.validation.max": "El valor es demasiado alto.", + "components.Input.error.validation.maxLength": "El valor es demasiado largo.", + "components.Input.error.validation.min": "El valor es demasiado bajo.", + "components.Input.error.validation.minLength": "El valor es demasiado corto.", + "components.Input.error.validation.minSupMax": "No puede ser superior", + "components.Input.error.validation.regex": "El valor no coincide con la expresión regular.", + "components.Input.error.validation.required": "Este valor es obligatorio.", + "components.Input.error.validation.unique": "Este valor ya se utiliza.", + "notification.success.submit": "Los ajustes se han actualizado", + "page.title": "Configuración - Roles", + "plugin.description.long": "Proteja su API con un proceso de autenticación completo basado en JWT. Este plugin viene también con una estrategia ACL que le permite administrar los permisos entre los grupos de usuarios.", + "plugin.description.short": "Proteja su API con un proceso de autenticación completo basado en JWT", + "plugin.name": "Roles y Permisos", + "popUpWarning.button.cancel": "Cancelar", + "popUpWarning.button.confirm": "Confirmar", + "popUpWarning.title": "Por favor confirme", + "popUpWarning.warning.cancel": "¿Está seguro de que desea cancelar sus modificaciones?" +} diff --git a/packages/strapi-borked/src/extensions/users-permissions/admin/src/translations/fr.json b/packages/strapi-borked/src/extensions/users-permissions/admin/src/translations/fr.json new file mode 100644 index 0000000..4234a5d --- /dev/null +++ b/packages/strapi-borked/src/extensions/users-permissions/admin/src/translations/fr.json @@ -0,0 +1,46 @@ +{ + "BoundRoute.title": "Route associée à", + "EditForm.inputSelect.description.role": "Choisissez le rôle qui sera lié aux utilisateurs lors de leur enregistrement.", + "EditForm.inputSelect.label.role": "Rôle par defaut pour les nouveaux utilisateurs", + "EditForm.inputToggle.description.email": "Interdire l'utilisateur de créer de multiple comptes avec la même adresse e-mail avec des providers différents", + "EditForm.inputToggle.description.email-confirmation": "Quand cette option est activée (ON), les nouveaux utilisateurs enregistrés reçoivent un e-mail de confirmation.", + "EditForm.inputToggle.description.email-confirmation-redirection": "Après confirmation de votre e-mail, choisissez où vous allez être redirigé.", + "EditForm.inputToggle.description.email-reset-password": "URL de la page de réinitialisation de mot de passe.", + "EditForm.inputToggle.description.sign-up": "Quand l'inscription est désactivée (OFF), aucun utilisateur ne peut s'inscrire qu'importe le provider", + "EditForm.inputToggle.label.email": "Un compte par adresse e-mail", + "EditForm.inputToggle.label.email-confirmation": "Activer l'e-mail de confirmation", + "EditForm.inputToggle.label.email-confirmation-redirection": "Redirection de l'URL", + "EditForm.inputToggle.label.email-reset-password": "Page de réinitialisation de mot de passe", + "EditForm.inputToggle.label.sign-up": "Activer l'inscription", + "HeaderNav.link.advancedSettings": "Paramètres avancés", + "HeaderNav.link.emailTemplates": "Templates d'e-mail", + "HeaderNav.link.providers": "Fournisseurs", + "Plugin.permissions.plugins.description": "Définissez les actions autorisées dans le {name} plugin.", + "Plugins.header.description": "Sont listés uniquement les actions associées à une route.", + "Plugins.header.title": "Permissions", + "Policies.header.hint": "Sélectionnez les actions de l'application ou d'un plugin et cliquer sur l'icon de paramètres pour voir les routes associées à cette action", + "Policies.header.title": "Paramètres avancés", + "PopUpForm.Email.email_templates.inputDescription": "Regardez la documentation des variables, {link}", + "PopUpForm.Email.options.from.email.label": "E-mail de l'envoyeur", + "PopUpForm.Email.options.from.email.placeholder": "arthurdupont@gmail.com", + "PopUpForm.Email.options.from.name.label": "Nom de l'envoyeur", + "PopUpForm.Email.options.from.name.placeholder": "Arthur Dupont", + "PopUpForm.Email.options.message.label": "Message", + "PopUpForm.Email.options.object.label": "Objet", + "PopUpForm.Email.options.response_email.label": "E-mail de réponse", + "PopUpForm.Email.options.response_email.placeholder": "arthurdupont@gmail.com", + "PopUpForm.Providers.enabled.description": "S'il est désactivé les utilisateurs ne pourront pas utiliser ce provider.", + "PopUpForm.Providers.enabled.label": "Activer", + "PopUpForm.Providers.key.label": "Client ID", + "PopUpForm.Providers.key.placeholder": "TEXT", + "PopUpForm.Providers.redirectURL.front-end.label": "L'URL de redirection de votre app front-end", + "PopUpForm.Providers.secret.label": "Client Secret", + "PopUpForm.Providers.secret.placeholder": "TEXT", + "PopUpForm.Providers.subdomain.label": "Host URI (Subdomain)", + "PopUpForm.Providers.subdomain.placeholder": "my.subdomain.com", + "PopUpForm.header.edit.email-templates": "Editer E-mail Templates", + "notification.success.submit": "Les configurations ont bien été sauvegardés", + "plugin.description.long": "Protégez votre API avec un système d'authentification complet basé sur JWT (JSON Web Token). Ce plugin ajoute aussi une stratégie ACL (Access Control Layer) qui vous permet de gérer les permissions entre les groupes d'utilisateurs.", + "plugin.description.short": "Protégez votre API avec un système d'authentification complet basé sur JWT.", + "plugin.name": "Rôles et autorisations" +} diff --git a/packages/strapi-borked/src/extensions/users-permissions/admin/src/translations/id.json b/packages/strapi-borked/src/extensions/users-permissions/admin/src/translations/id.json new file mode 100644 index 0000000..6119c97 --- /dev/null +++ b/packages/strapi-borked/src/extensions/users-permissions/admin/src/translations/id.json @@ -0,0 +1,58 @@ +{ + "BoundRoute.title": "Rute terikat ke", + "EditForm.inputSelect.description.role": "Ini akan melampirkan pengguna baru yang diautentikasi ke peran yang dipilih.", + "EditForm.inputSelect.label.role": "Peran default untuk pengguna yang diautentikasi", + "EditForm.inputToggle.description.email": "Larang pengguna membuat beberapa akun menggunakan alamat email yang sama dengan penyedia otentikasi yang berbeda.", + "EditForm.inputToggle.description.email-confirmation": "Saat diaktifkan (ON), pengguna baru yang terdaftar menerima email konfirmasi.", + "EditForm.inputToggle.description.email-confirmation-redirection": "Setelah Anda mengkonfirmasi email Anda, pilih ke mana Anda akan diarahkan.", + "EditForm.inputToggle.description.email-reset-password": "URL halaman setel ulang sandi aplikasi Anda", + "EditForm.inputToggle.description.sign-up": "Saat dinonaktifkan (OFF), proses pendaftaran dilarang. Tidak ada yang bisa berlangganan lagi tidak peduli penyedia yang digunakan.", + "EditForm.inputToggle.label.email": "Satu akun per alamat email", + "EditForm.inputToggle.label.email-confirmation": "Aktifkan konfirmasi email", + "EditForm.inputToggle.label.email-confirmation-redirection": "URL pengalihan", + "EditForm.inputToggle.label.email-reset-password": "Atur ulang halaman kata sandi", + "EditForm.inputToggle.label.sign-up": "Aktifkan pendaftaran", + "Email.template.email_confirmation": "Konfirmasi alamat email", + "HeaderNav.link.advancedSettings": "Pengaturan lanjutan", + "HeaderNav.link.emailTemplates": "Template email", + "HeaderNav.link.providers": "Penyedia", + "Plugin.permissions.plugins.description": "Tentukan semua tindakan yang diizinkan untuk plugin {name}.", + "Plugins.header.description": "Hanya tindakan yang terikat oleh rute yang dicantumkan di bawah.", + "Plugins.header.title": "Izin", + "Policies.header.hint": "Pilih tindakan aplikasi atau tindakan plugin dan klik ikon roda gigi untuk menampilkan rute terikat", + "Policies.header.title": "Pengaturan lanjutan", + "PopUpForm.Email.email_templates.inputDescription": "Jika Anda tidak yakin bagaimana menggunakan variabel, {link}", + "PopUpForm.Email.link.documentation": "lihat dokumentasi kami.", + "PopUpForm.Email.options.from.email.label": "Email pengirim", + "PopUpForm.Email.options.from.email.placeholder": "kai@doe.com", + "PopUpForm.Email.options.from.name.label": "Nama pengirim", + "PopUpForm.Email.options.from.name.placeholder": "Kai Doe", + "PopUpForm.Email.options.message.label": "Pesan", + "PopUpForm.Email.options.object.label": "Subyek", + "PopUpForm.Email.options.object.placeholder": "Harap konfirmasi alamat email Anda untuk% APP_NAME%", + "PopUpForm.Email.options.response_email.label": "Email tanggapan", + "PopUpForm.Email.options.response_email.placeholder": "kai@doe.com", + "PopUpForm.Providers.enabled.description": "Jika dinonaktifkan, pengguna tidak akan dapat menggunakan penyedia ini.", + "PopUpForm.Providers.enabled.label": "Memungkinkan", + "PopUpForm.Providers.key.label": "ID Klien", + "PopUpForm.Providers.key.placeholder": "TEKS", + "PopUpForm.Providers.redirectURL.front-end.label": "URL pengalihan ke aplikasi front-end Anda", + "PopUpForm.Providers.redirectURL.label": "URL pengalihan yang akan ditambahkan dalam konfigurasi aplikasi {provider} Anda", + "PopUpForm.Providers.secret.label": "Client Secret", + "PopUpForm.Providers.secret.placeholder": "TEKS", + "PopUpForm.Providers.subdomain.label": "URI Host (Subdomain)", + "PopUpForm.Providers.subdomain.placeholder": "saya.subdomain.com", + "PopUpForm.header.edit.email-templates": "Edit Template Email", + "PopUpForm.header.edit.providers": "Edit Penyedia", + "Settings.roles.deleted": "Peran dihapus", + "Settings.roles.edited": "Peran diedit", + "Settings.section-label": "Plugin Pengguna & Izin", + "notification.success.submit": "Pengaturan telah diperbarui", + "plugin.description.long": "Lindungi API Anda dengan proses otentikasi penuh berdasarkan JWT. Plugin ini juga dilengkapi dengan strategi ACL yang memungkinkan Anda untuk mengelola izin di antara grup pengguna.", + "plugin.description.short": "Lindungi API Anda dengan proses otentikasi penuh berdasarkan JWT", + "plugin.name": "Plugin Pengguna & Izin", + "popUpWarning.button.cancel": "Batalkan", + "popUpWarning.button.confirm": "Konfirmasi", + "popUpWarning.title": "Harap konfirmasi", + "popUpWarning.warning.cancel": "Anda yakin ingin membatalkan modifikasi Anda?" +} diff --git a/packages/strapi-borked/src/extensions/users-permissions/admin/src/translations/it.json b/packages/strapi-borked/src/extensions/users-permissions/admin/src/translations/it.json new file mode 100644 index 0000000..83100f2 --- /dev/null +++ b/packages/strapi-borked/src/extensions/users-permissions/admin/src/translations/it.json @@ -0,0 +1,58 @@ +{ + "BoundRoute.title": "Vincola route a", + "EditForm.inputSelect.description.role": "Questa operazione assocerà i nuovi utenti autenticati al ruolo selezionato.", + "EditForm.inputSelect.label.role": "Ruolo di default per gli utenti registrati", + "EditForm.inputToggle.description.email": "Non consentire all'utente di creare account multipli usando lo stesso indirizzo email con provider di autenticazione diversi.", + "EditForm.inputToggle.description.email-confirmation": "Quando abilitato (ON), i nuovi utenti registrati riceveranno una richiesta di conferma via email.", + "EditForm.inputToggle.description.email-confirmation-redirection": "Scegli dove redirigere gli utenti che completano la conferma dell'indirizzo email.", + "EditForm.inputToggle.description.email-reset-password": "URL della pagina per il reset della password della tua applicazione", + "EditForm.inputToggle.description.sign-up": "Quando disabilitata (OFF), il processo di registrazione è proibito. Nessuno può iscriversi indipendentemente dal provider utilizzato.", + "EditForm.inputToggle.label.email": "Un solo account per indirizzo email", + "EditForm.inputToggle.label.email-confirmation": "Abilita conferma email", + "EditForm.inputToggle.label.email-confirmation-redirection": "URL di reindirizzamento", + "EditForm.inputToggle.label.email-reset-password": "Pagina reset password", + "EditForm.inputToggle.label.sign-up": "Abilita registrazione", + "Email.template.email_confirmation": "Conferma dell'indirizzo Email", + "HeaderNav.link.advancedSettings": "Impostazioni avanzate", + "HeaderNav.link.emailTemplates": "Template delle Email", + "HeaderNav.link.providers": "Provider", + "Plugin.permissions.plugins.description": "Definisce tutte le azioni consentite per il plugin {name}.", + "Plugins.header.description": "Di seguito sono elencate solo le azioni vincolate da una route.", + "Plugins.header.title": "Permessi", + "Policies.header.hint": "Seleziona le azioni dell'applicazione o del plugin e clicca sull'ingranaggio per mostrare il percorso corrispondente", + "Policies.header.title": "Impostazioni avanzate", + "PopUpForm.Email.email_templates.inputDescription": "Se non sai bene come usare le variabili, {link}", + "PopUpForm.Email.link.documentation": "controlla la nostra documentazione.", + "PopUpForm.Email.options.from.email.label": "Email del mittente", + "PopUpForm.Email.options.from.email.placeholder": "kai@doe.com", + "PopUpForm.Email.options.from.name.label": "Nome del mittente", + "PopUpForm.Email.options.from.name.placeholder": "Kai Doe", + "PopUpForm.Email.options.message.label": "Messaggio", + "PopUpForm.Email.options.object.label": "Oggetto", + "PopUpForm.Email.options.object.placeholder": "Conferma il tuo indirizzo email per %APP_NAME%", + "PopUpForm.Email.options.response_email.label": "Email di risposta", + "PopUpForm.Email.options.response_email.placeholder": "kai@doe.com", + "PopUpForm.Providers.enabled.description": "Se disabilitato, gli utenti non potranno usare questo provider.", + "PopUpForm.Providers.enabled.label": "Abilita", + "PopUpForm.Providers.key.label": "Client ID", + "PopUpForm.Providers.key.placeholder": "TEXT", + "PopUpForm.Providers.redirectURL.front-end.label": "L'URL di reindirizzamento per la tua app di front-end", + "PopUpForm.Providers.redirectURL.label": "L'URL di reindirizzamento da aggiungere nelle impostazioni dell'applicazione di {provider}", + "PopUpForm.Providers.secret.label": "Client Secret", + "PopUpForm.Providers.secret.placeholder": "TEXT", + "PopUpForm.Providers.subdomain.label": "Host URI (Sottodominio)", + "PopUpForm.Providers.subdomain.placeholder": "my.subdomain.com", + "PopUpForm.header.edit.email-templates": "Modifica i Template Email", + "PopUpForm.header.edit.providers": "Modifica Provider", + "Settings.roles.deleted": "Ruolo eliminato", + "Settings.roles.edited": "Ruolo modificato", + "Settings.section-label": "Plugin Utenti & Permessi", + "notification.success.submit": "Impostazioni aggiornate", + "plugin.description.long": "Proteggi le tue API con un processo di autenticazione completo basato su JWT. Questo plugin è implementato con una strategia ACL che ti consente di gestire i permessi tra i gruppi di utenti.", + "plugin.description.short": "Proteggi le tue API con un processo di autenticazione completo basato su JWT", + "plugin.name": "Plugin Utenti & Permessi", + "popUpWarning.button.cancel": "Annulla", + "popUpWarning.button.confirm": "Conferma", + "popUpWarning.title": "Si prega di confermare", + "popUpWarning.warning.cancel": "Sei sicuro di voler annullare le tue modifiche?" +} diff --git a/packages/strapi-borked/src/extensions/users-permissions/admin/src/translations/ja.json b/packages/strapi-borked/src/extensions/users-permissions/admin/src/translations/ja.json new file mode 100644 index 0000000..e84a39d --- /dev/null +++ b/packages/strapi-borked/src/extensions/users-permissions/admin/src/translations/ja.json @@ -0,0 +1,44 @@ +{ + "BoundRoute.title": "Bound route to", + "EditForm.inputSelect.description.role": "新しい認証されたユーザーが選択された役割にアタッチされます。", + "EditForm.inputSelect.label.role": "認証されたユーザーのデフォルトの役割", + "EditForm.inputToggle.description.email": "ユーザーが異なる認証プロバイダで同じ電子メールアドレスを使用して複数のアカウントを作成できないようにします。", + "EditForm.inputToggle.description.email-confirmation": "有効(ON)にすると、新しい登録ユーザーに確認メールが送信されます。", + "EditForm.inputToggle.description.email-confirmation-redirection": "あなたのEメールを確認したら、リダイレクト先を選択してください。", + "EditForm.inputToggle.description.sign-up": "あなたの電子メールを確認した後、リダイレクト先を選択しました。", + "EditForm.inputToggle.label.email": "メールアドレスごとに1つのアカウント", + "EditForm.inputToggle.label.email-confirmation": "Eメールの確認を有効にする", + "EditForm.inputToggle.label.email-confirmation-redirection": "リダイレクトURL", + "EditForm.inputToggle.label.sign-up": "申し込みを有効にする", + "HeaderNav.link.advancedSettings": "高度な設定", + "HeaderNav.link.emailTemplates": "メールテンプレート", + "HeaderNav.link.providers": "プロバイダー", + "Plugin.permissions.plugins.description": "{name} 個のプラグインに対して許可されたすべてのアクションを定義する", + "Plugins.header.description": "ルートにバインドされたアクションのみが以下にリストされています", + "Plugins.header.title": "権限", + "Policies.header.hint": "アプリケーションのアクションまたはプラグインのアクションを選択し、コグアイコンをクリックしてバインドされたルートを表示します", + "Policies.header.title": "高度な設定", + "PopUpForm.Email.email_templates.inputDescription": "変数の使用方法がわからない場合は、{link}", + "PopUpForm.Email.options.from.email.label": "送信者Eメール", + "PopUpForm.Email.options.from.email.placeholder": "kai@doe.com", + "PopUpForm.Email.options.from.name.label": "送信者名", + "PopUpForm.Email.options.from.name.placeholder": "Kai Doe", + "PopUpForm.Email.options.message.label": "メッセージ", + "PopUpForm.Email.options.object.label": "件名", + "PopUpForm.Email.options.response_email.label": "応答メール", + "PopUpForm.Email.options.response_email.placeholder": "kai@doe.com", + "PopUpForm.Providers.enabled.description": "無効にすると、ユーザーはこのプロバイダを使用できなくなります。", + "PopUpForm.Providers.enabled.label": "有効にする", + "PopUpForm.Providers.key.label": "クライアントID", + "PopUpForm.Providers.key.placeholder": "TEXT", + "PopUpForm.Providers.redirectURL.front-end.label": "フロントエンドアプリへのリダイレクトURL", + "PopUpForm.Providers.secret.label": "クライアントの秘密", + "PopUpForm.Providers.secret.placeholder": "TEXT", + "PopUpForm.Providers.subdomain.label": "Host URI (Subdomain)", + "PopUpForm.Providers.subdomain.placeholder": "my.subdomain.com", + "PopUpForm.header.edit.email-templates": "メールテンプレートの編集", + "notification.success.submit": "設定が更新されました", + "plugin.description.long": "JWTに基づいた完全な認証プロセスでAPIを保護します。このプラグインには、ユーザーのグループ間で権限を管理できるACL戦略もあります。", + "plugin.description.short": "JWTに基づく完全な認証プロセスでAPIを保護する", + "plugin.name": "ロールと権限" +} diff --git a/packages/strapi-borked/src/extensions/users-permissions/admin/src/translations/ko.json b/packages/strapi-borked/src/extensions/users-permissions/admin/src/translations/ko.json new file mode 100644 index 0000000..fb18847 --- /dev/null +++ b/packages/strapi-borked/src/extensions/users-permissions/admin/src/translations/ko.json @@ -0,0 +1,82 @@ +{ + "BoundRoute.title": "라우트(bound route)", + "EditForm.inputSelect.description.role": "인증된 사용자에 선택한 역할(role)을 부여합니다.", + "EditForm.inputSelect.label.role": "인증된 사용자의 기본 역할(role)", + "EditForm.inputToggle.description.email": "사용자가 동일한 이메일 주소를 사용해 여러 계정을 만들지 못하게 합니다.", + "EditForm.inputToggle.description.email-confirmation": "(ON)이 활성화되면, 새로 가입하는 사용자는 인증 메일을 받게됩니다.", + "EditForm.inputToggle.description.email-confirmation-redirection": "이메일 인증완료 후 리다이렉트 될 주소", + "EditForm.inputToggle.description.email-reset-password": "애플리케이션의 비밀번호 재설정 URL 페이지", + "EditForm.inputToggle.description.sign-up": "비활성(OFF)일 경우, 등록 프로세스를 금지합니다. 사용하는 프로바이더(provider)에 관계 없이 누구도 가입할 수 없습니다.", + "EditForm.inputToggle.label.email": "이메일 주소 당 하나의 계정", + "EditForm.inputToggle.label.email-confirmation": "이메일 인증 활성화", + "EditForm.inputToggle.label.email-confirmation-redirection": "리다이렉션 url", + "EditForm.inputToggle.label.email-reset-password": "패스워드 재설정 페이지", + "EditForm.inputToggle.label.sign-up": "사용자 등록", + "EditForm.inputToggle.placeholder.email-confirmation-redirection": "예: https://yourfrontend.com/reset-password", + "EditForm.inputToggle.placeholder.email-reset-password": "예: https://yourfrontend.com/reset-password", + "EditPage.form.roles": "역할 상세정보", + "Email.template.data.loaded": "이메일 템플릿을 불러왔습니다.", + "Email.template.email_confirmation": "이메일 주소 확인", + "Email.template.form.edit.label": "템플릿 수정", + "Email.template.table.action.label": "action", + "Email.template.table.icon.label": "icon", + "Email.template.table.name.label": "name", + "Form.advancedSettings.data.loaded": "고급 설정 정보를 불러왔습니다.", + "HeaderNav.link.advancedSettings": "고급 설정", + "HeaderNav.link.emailTemplates": "이메일 템플릿", + "HeaderNav.link.providers": "프로바이더(Providers)", + "Plugin.permissions.plugins.description": "{name} 플러그인에서 허용할 액션을 설정합니다.", + "Plugins.header.description": "라우트(route)에 연결된 액션만 표시됩니다.", + "Plugins.header.title": "권한(Permissions)", + "Policies.header.hint": "애플리케이션 또는 플러그인을 선택하고 항목을 클릭하면 바인딩 된 경로를 표시할 수 있습니다.", + "Policies.header.title": "고급 설정", + "PopUpForm.Email.email_templates.inputDescription": "이메일 템플릿 문법은 이 {link}를 확인하세요.", + "PopUpForm.Email.link.documentation": "check out our documentation.", + "PopUpForm.Email.options.from.email.label": "보내는 이메일", + "PopUpForm.Email.options.from.email.placeholder": "kai@doe.com", + "PopUpForm.Email.options.from.name.label": "보내는 사람", + "PopUpForm.Email.options.from.name.placeholder": "Kai Doe", + "PopUpForm.Email.options.message.label": "내용", + "PopUpForm.Email.options.object.label": "제목", + "PopUpForm.Email.options.object.placeholder": "Please confirm your email address for %APP_NAME%", + "PopUpForm.Email.options.response_email.label": "응답받을 이메일", + "PopUpForm.Email.options.response_email.placeholder": "kai@doe.com", + "PopUpForm.Providers.enabled.description": "사용하지 않을 경우 이 프로바이더(provider) 기능을 이용할 수 없습니다.", + "PopUpForm.Providers.enabled.label": "사용", + "PopUpForm.Providers.key.label": "클라이언트 ID(Client ID)", + "PopUpForm.Providers.key.placeholder": "텍스트", + "PopUpForm.Providers.redirectURL.front-end.label": "프론트엔드 애플리케이션 리다이렉트 URL", + "PopUpForm.Providers.redirectURL.label": "{provider} 애플리케이션 구성에 추가할 리디렉션 URL", + "PopUpForm.Providers.secret.label": "클라이언트 시크릿(Client Secret)", + "PopUpForm.Providers.secret.placeholder": "텍스트", + "PopUpForm.Providers.subdomain.label": "Host URI (Subdomain)", + "PopUpForm.Providers.subdomain.placeholder": "my.subdomain.com", + "PopUpForm.header.edit.email-templates": "이메일 템플릿 수정", + "PopUpForm.header.edit.providers": "프로바이더 수정", + "Providers.data.loaded": "프로바이더를 불러왔습니다.", + "Providers.status": "상태", + "Roles.empty": "아직 역할이 없습니다.", + "Roles.empty.search": "검색과 일치하는 역할이 없습니다.", + "Settings.roles.deleted": "Role deleted", + "Settings.roles.edited": "Role edited", + "Settings.section-label": "사용자 & 권한 플러그인", + "components.Input.error.validation.email": "유효하지 않은 이메일입니다.", + "components.Input.error.validation.json": "JSON 형식과 일치하지 않습니다.", + "components.Input.error.validation.max": "값이 너무 큽니다.", + "components.Input.error.validation.maxLength": "값이 너무 깁니다.", + "components.Input.error.validation.min": "값이 너무 작습니다.", + "components.Input.error.validation.minLength": "값이 너무 짧습니다.", + "components.Input.error.validation.minSupMax": "이보다 클 수 없습니다.", + "components.Input.error.validation.regex": "값이 정규식과 일치하지 않습니다.", + "components.Input.error.validation.required": "필수 항목입니다.", + "components.Input.error.validation.unique": "이 값은 이미 사용되고 있습니다.", + "notification.success.submit": "설정을 업데이트했습니다.", + "page.title": "설정 - 역할", + "plugin.description.long": "JWT 기반의 인증 프로세스로 API를 보호하세요. 이 플러그인에서 사용자 그룹간 권한을 관리할 수 있는 ACL 전략도 설정할 수 있습니다.", + "plugin.description.short": "JWT 기반의 인증 프로세스로 API를 보호하세요.", + "plugin.name": "역할(roles) & 권한(permissions)", + "popUpWarning.button.cancel": "취소", + "popUpWarning.button.confirm": "확인", + "popUpWarning.title": "Please confirm", + "popUpWarning.warning.cancel": "수정 사항을 취소하시겠습니까?" +} diff --git a/packages/strapi-borked/src/extensions/users-permissions/admin/src/translations/ms.json b/packages/strapi-borked/src/extensions/users-permissions/admin/src/translations/ms.json new file mode 100644 index 0000000..b596fdb --- /dev/null +++ b/packages/strapi-borked/src/extensions/users-permissions/admin/src/translations/ms.json @@ -0,0 +1,45 @@ +{ + "BoundRoute.title": "Ikat laluan ke", + "EditForm.inputSelect.description.role": "Ini akan meletakkan peranan yang dipilih pada pengguna baru.", + "EditForm.inputSelect.label.role": "Peranan asal untuk pengguna yang disahkan", + "EditForm.inputToggle.description.email": "Tidak membenarkan pengguna membuat beberapa akaun menggunakan alamat e-mel yang sama dengan pembekal pengesahan yang berbeza.", + "EditForm.inputToggle.description.email-confirmation": "Apabila diaktifkan (ON), pengguna berdaftar baru akan menerima e-mel pengesahan.", + "EditForm.inputToggle.description.email-confirmation-redirection": "Setelah mengesahkan e-mel anda, pilih di mana anda akan di redirect kan.", + "EditForm.inputToggle.description.email-reset-password": "URL halaman kata laluan tetapan semula untuk aplikasi anda", + "EditForm.inputToggle.description.sign-up": "Apabila dinyahaktifkan (MATI), proses pendaftaran tidak dibenarkan. Tidak ada yang boleh melanggan lagi tidak kira pembekal telah dipakai.", + "EditForm.inputToggle.label.email": "Satu akaun setiap alamat e-mel", + "EditForm.inputToggle.label.email-confirmation": "Aktifkan pengesahan e-mel", + "EditForm.inputToggle.label.email-confirmation-redirection": "Redirection url", + "EditForm.inputToggle.label.email-reset-password": "Halaman tetapan semula kata laluan", + "EditForm.inputToggle.label.sign-up": "Aktifkan pendaftaran", + "HeaderNav.link.advancedSettings": "Tetapan lanjut", + "HeaderNav.link.emailTemplates": "Templat e-mel", + "HeaderNav.link.providers": "Pembekal", + "Plugin.permissions.plugins.description": "Pilih arahan yang dibenarkan untuk plugin {name}.", + "Plugins.header.description": "Hanya arahan yang terpasang dengan laluan sahaja yang tersenarai di bawah.", + "Plugins.header.title": "Keizinan", + "Policies.header.hint": "Pilih tindakan aplikasi atau plugin dan klik pada ikon gear untuk melihat laluan yang terpasang", + "Policies.header.title": "Tetapan lanjut", + "PopUpForm.Email.email_templates.inputDescription": "Sekiranya anda tidak pasti cara menggunakan pemboleh ubah, {link} ", + "PopUpForm.Email.options.from.email.label": "E-mel penghantar", + "PopUpForm.Email.options.from.email.placeholder": "kai@doe.com", + "PopUpForm.Email.options.from.name.label": "Nama pengirim", + "PopUpForm.Email.options.from.name.placeholder": "Kai Doe", + "PopUpForm.Email.options.message.label": "Mesej", + "PopUpForm.Email.options.object.label": "Subjek", + "PopUpForm.Email.options.response_email.label": "E-mel jawapan", + "PopUpForm.Email.options.response_email.placeholder": "kai@doe.com", + "PopUpForm.Providers.enabled.description": "Sekiranya dinyahaktifkan, pengguna tidak akan dapat menggunakan pembekal ini.", + "PopUpForm.Providers.enabled.label": "Aktifkan", + "PopUpForm.Providers.key.label": "ID Pelanggan", + "PopUpForm.Providers.key.placeholder": "TEKS", + "PopUpForm.Providers.redirectURL.front-end.label": "URL pengubah hala ke aplikasi 'front-end' anda", + "PopUpForm.Providers.secret.label": "Client Secret", + "PopUpForm.Providers.secret.placeholder": "TEKS", + "PopUpForm.Providers.subdomain.label": "Host URI (Subdomain)", + "PopUpForm.Providers.subdomain.placeholder": "my.subdomain.com", + "PopUpForm.header.edit.email-templates": "Edit Templat E-mel", + "notification.success.submit": "Tetapan telah dikemas kini", + "plugin.description.long": "Lindungi API anda dengan proses pengesahan penuh berdasarkan JWT. Plugin ini juga dilengkapi dengan strategi ACL yang membolehkan anda mengurus pengizinan antara kumpulan pengguna.", + "plugin.description.short": "Lindungi API anda dengan proses pengesahan penuh berdasarkan JWT" +} diff --git a/packages/strapi-borked/src/extensions/users-permissions/admin/src/translations/nl.json b/packages/strapi-borked/src/extensions/users-permissions/admin/src/translations/nl.json new file mode 100644 index 0000000..784c262 --- /dev/null +++ b/packages/strapi-borked/src/extensions/users-permissions/admin/src/translations/nl.json @@ -0,0 +1,44 @@ +{ + "BoundRoute.title": "Gebonden route naar", + "EditForm.inputSelect.description.role": "Het zal de nieuwe geautoriseerde gebruiker aan de geselecteerde rol verbinden.", + "EditForm.inputSelect.label.role": "Standaard rol voor geautoriseerde gebruikers", + "EditForm.inputToggle.description.email": "Zorg ervoor dat de gebruiker niet meerdere accounts kan maken met hetzelfde e-mailadres maar met verschillende leveranciers.", + "EditForm.inputToggle.description.email-confirmation": "Wanneer ingeschakeld (ON), ontvangen nieuw geregistreerde gebruikers een bevestigingsmail.", + "EditForm.inputToggle.description.email-confirmation-redirection": "Na het bevestigen van je e-mail, kies naar waar je doorgestuurd zal worden.", + "EditForm.inputToggle.description.sign-up": "Wanneer uitgeschakeld (OFF), is registratie verboden. Niemand kan abonneren ongeacht de leverancier", + "EditForm.inputToggle.label.email": "Één account per e-mailadres.", + "EditForm.inputToggle.label.email-confirmation": "Schakel emailbevestiging in", + "EditForm.inputToggle.label.email-confirmation-redirection": "Doorstuur URL", + "EditForm.inputToggle.label.sign-up": "Registratie inschakelen", + "HeaderNav.link.advancedSettings": "Geavanceerde instellingen", + "HeaderNav.link.emailTemplates": "E-mail sjabloon", + "HeaderNav.link.providers": "Leveranciers", + "Plugin.permissions.plugins.description": "Voer alle toegestane acties in voor extensie {name}.", + "Plugins.header.description": "Alleen acties gekoppeld aan een route worden hieronder weergegeven.", + "Plugins.header.title": "Permissies", + "Policies.header.hint": "Selecteer de actie van de applicatie of de acties van de extensie en klik op het tandwiel icoontje om de gekoppelde route weer te geven", + "Policies.header.title": "Geavanceerde instellingen", + "PopUpForm.Email.email_templates.inputDescription": "Als je niet zeker weet hoe je variabelen moet gebruiken, {link}", + "PopUpForm.Email.options.from.email.label": "Afzender e-mail", + "PopUpForm.Email.options.from.email.placeholder": "kai@doe.com", + "PopUpForm.Email.options.from.name.label": "Afzender naam", + "PopUpForm.Email.options.from.name.placeholder": "Kai Doe", + "PopUpForm.Email.options.message.label": "Bericht", + "PopUpForm.Email.options.object.label": "Onderwerp", + "PopUpForm.Email.options.response_email.label": "Antwoord e-mail", + "PopUpForm.Email.options.response_email.placeholder": "kai@doe.com", + "PopUpForm.Providers.enabled.description": "Als deze uitgeschakeld is kunnen gebruikers geen gebruik maken van deze leverancier.", + "PopUpForm.Providers.enabled.label": "Inschakelen", + "PopUpForm.Providers.key.label": "Client ID", + "PopUpForm.Providers.key.placeholder": "TEXT", + "PopUpForm.Providers.redirectURL.front-end.label": "De doorstuur URL voor jouw front-end app", + "PopUpForm.Providers.secret.label": "Client Secret", + "PopUpForm.Providers.secret.placeholder": "TEXT", + "PopUpForm.Providers.subdomain.label": "Host URI (Subdomain)", + "PopUpForm.Providers.subdomain.placeholder": "my.subdomain.com", + "PopUpForm.header.edit.email-templates": "E-mail sjablonen aanpassen", + "notification.success.submit": "Instellingen zijn geüpdatet", + "plugin.description.long": "Beveilig je API met een volledig authenticatie proces op JWT. Deze extensie komt ook met een ACL strategie welke ervoor zorgt dat je de permissies tussen groepen van gebruikers kan beheren.", + "plugin.description.short": "Beveilig je API met een volledig authenticatie proces op JWT", + "plugin.name": "Rollen & Permissies" +} diff --git a/packages/strapi-borked/src/extensions/users-permissions/admin/src/translations/pl.json b/packages/strapi-borked/src/extensions/users-permissions/admin/src/translations/pl.json new file mode 100644 index 0000000..945d494 --- /dev/null +++ b/packages/strapi-borked/src/extensions/users-permissions/admin/src/translations/pl.json @@ -0,0 +1,82 @@ +{ + "BoundRoute.title": "Wywoływanie", + "EditForm.inputSelect.description.role": "Połączy nowego uwierzytelnionego użytkownika z wybraną rolą.", + "EditForm.inputSelect.label.role": "Domyślna rola dla uwierzytelnionych użytkowników", + "EditForm.inputToggle.description.email": "Nie zezwalaj użytkownikowi na tworzenie wielu kont za pomocą tego samego adresu e-mail u różnych dostawców uwierzytelniania.", + "EditForm.inputToggle.description.email-confirmation": "Gdy włączone (ON), nowo zarejestrowani uzytkownicy otrzymają wiadomość potwierdzającą.", + "EditForm.inputToggle.description.email-confirmation-redirection": "Po potwierdzeniu adresu email, wybierz gdzie zostaniesz przekierowany.", + "EditForm.inputToggle.description.email-reset-password": "Adres URL strony resetowania hasła aplikacji", + "EditForm.inputToggle.description.sign-up": "Po wyłączeniu (OFF) proces rejestracji jest zabroniony. Nikt nie może już dołączyć bez względu na używanego dostawcę.", + "EditForm.inputToggle.label.email": "Jedno konto na adres email", + "EditForm.inputToggle.label.email-confirmation": "Zezwól na potwierdzenie adresu email", + "EditForm.inputToggle.label.email-confirmation-redirection": "Url przekierowania", + "EditForm.inputToggle.label.email-reset-password": "Strona resetowania hasła", + "EditForm.inputToggle.label.sign-up": "Włącz możliwość rejestracji", + "EditForm.inputToggle.placeholder.email-confirmation-redirection": "ex: https://yourfrontend.com/confirmation-redirection", + "EditForm.inputToggle.placeholder.email-reset-password": "ex: https://yourfrontend.com/reset-password", + "EditPage.form.roles": "Szczegóły roli", + "Email.template.data.loaded": "Szablon email został załadowany", + "Email.template.email_confirmation": "Potwierdzenie adresu email", + "Email.template.form.edit.label": "Edytuj szablon", + "Email.template.table.action.label": "akcja", + "Email.template.table.icon.label": "ikonka", + "Email.template.table.name.label": "nazwa", + "Form.advancedSettings.data.loaded": "Ustawienia zaawansowane zostały załadowane", + "HeaderNav.link.advancedSettings": "Zaawansowane", + "HeaderNav.link.emailTemplates": "Szablony e-mail", + "HeaderNav.link.providers": "Dostawcy", + "Plugin.permissions.plugins.description": "Określ dozwolone działania dla pluginu {name}.", + "Plugins.header.description": "Jedynie akcje związane z wywoływaniami są wymienione poniżej.", + "Plugins.header.title": "Uprawnienia", + "Policies.header.hint": "Wybierz działania aplikacji lub działania pluginu i kliknij ikonę koła zębatego, aby wyświetlić wywoływania", + "Policies.header.title": "Zaawansowane", + "PopUpForm.Email.email_templates.inputDescription": "Nie wiesz jak skonfigurować zmienne? {link}", + "PopUpForm.Email.link.documentation": "sprawdź dokumentację.", + "PopUpForm.Email.options.from.email.label": "Email nadawcy", + "PopUpForm.Email.options.from.email.placeholder": "jannowak@gmail.com", + "PopUpForm.Email.options.from.name.label": "Nazwa nadawcy", + "PopUpForm.Email.options.from.name.placeholder": "Jan Nowak", + "PopUpForm.Email.options.message.label": "Wiadomość", + "PopUpForm.Email.options.object.label": "Temat", + "PopUpForm.Email.options.object.placeholder": "Proszę potwierdź adres email dla %APP_NAME%", + "PopUpForm.Email.options.response_email.label": "Email zwrotny", + "PopUpForm.Email.options.response_email.placeholder": "jannowak@gmail.com", + "PopUpForm.Providers.enabled.description": "W przypadku wyłączenia, użytkownicy nie będą mogli skorzystać z tego dostawcy.", + "PopUpForm.Providers.enabled.label": "Włączony", + "PopUpForm.Providers.key.label": "ID klienta", + "PopUpForm.Providers.key.placeholder": "TEKST", + "PopUpForm.Providers.redirectURL.front-end.label": "Adres przekierowania do własnej aplikacji", + "PopUpForm.Providers.redirectURL.label": "Adres przekierowania do dodania w twoich ustawieniach aplikacji: {provider}", + "PopUpForm.Providers.secret.label": "Klucz sekretny klienta", + "PopUpForm.Providers.secret.placeholder": "TEKST", + "PopUpForm.Providers.subdomain.label": "Host URI (Subdomain)", + "PopUpForm.Providers.subdomain.placeholder": "my.subdomain.com", + "PopUpForm.header.edit.email-templates": "Zmień szablony e-mail", + "PopUpForm.header.edit.providers": "Edytuj dostawcę", + "Providers.data.loaded": "Dostawcy zostali załadowani", + "Providers.status": "Status", + "Roles.empty": "Nie masz jeszcze żadnych ról.", + "Roles.empty.search": "Żadne role nie pasują do wyszukiwania.", + "Settings.roles.deleted": "Rola usunięta", + "Settings.roles.edited": "Rola edytowana", + "Settings.section-label": "Użytkownicy i Uprawnienia", + "components.Input.error.validation.email": "Ten email jest niepoprawny", + "components.Input.error.validation.json": "Nie pasuje do formatu JSON", + "components.Input.error.validation.max": "Wartość zbyt duża.", + "components.Input.error.validation.maxLength": "Wartość zbyt długa.", + "components.Input.error.validation.min": "Wartość zbyt mała.", + "components.Input.error.validation.minLength": "Wartość zbyt krótka.", + "components.Input.error.validation.minSupMax": "Nie może być wyższy", + "components.Input.error.validation.regex": "Wartość nie pasuje do regexa.", + "components.Input.error.validation.required": "Wartość wymagana.", + "components.Input.error.validation.unique": "Wartość już używana.", + "notification.success.submit": "Ustawienia zostały zaktualizowane", + "page.title": "Ustawienia - Role", + "plugin.description.long": "Chroń API za pomocą procesu pełnego uwierzytelniania opartego na JWT. Ten plugin zawiera również strategię ACL, która pozwala zarządzać uprawnieniami między grupami użytkowników.", + "plugin.description.short": "Chroń API za pomocą procesu pełnego uwierzytelniania opartego na JWT", + "plugin.name": "Role i Uprawnienia", + "popUpWarning.button.cancel": "Anuluj", + "popUpWarning.button.confirm": "Potwierdź", + "popUpWarning.title": "Proszę potwierdź", + "popUpWarning.warning.cancel": "Czy jesteś pewny, że chcesz anulować zmiany?" +} diff --git a/packages/strapi-borked/src/extensions/users-permissions/admin/src/translations/pt-BR.json b/packages/strapi-borked/src/extensions/users-permissions/admin/src/translations/pt-BR.json new file mode 100644 index 0000000..b6ee10f --- /dev/null +++ b/packages/strapi-borked/src/extensions/users-permissions/admin/src/translations/pt-BR.json @@ -0,0 +1,40 @@ +{ + "BoundRoute.title": "Rota definida para", + "EditForm.inputSelect.description.role": "Ele anexará o novo usuário autenticado ao nível selecionado.", + "EditForm.inputSelect.label.role": "Nível padrão para usuários autenticados", + "EditForm.inputToggle.description.email": "Não permitir que o usuário crie várias contas usando o mesmo endereço de e-mail com diferentes provedores de autenticação.", + "EditForm.inputToggle.description.sign-up": "Quando desativado (OFF), o processo de registro é proibido. Nenhum novo usuário poderá se registrar, não importa o provedor usado.", + "EditForm.inputToggle.label.email": "Limitar 1 conta por endereço de email", + "EditForm.inputToggle.label.sign-up": "Ativar registro de usuários", + "HeaderNav.link.advancedSettings": "Configurações avançadas", + "HeaderNav.link.emailTemplates": "Modelos de email", + "HeaderNav.link.providers": "Provedores", + "Plugin.permissions.plugins.description": "Defina todas as ações permitidas para o plugin {name}.", + "Plugins.header.description": "Somente ações vinculadas por uma rota estão listadas abaixo.", + "Plugins.header.title": "Permissões", + "Policies.header.hint": "Selecione as ações do aplicativo ou as ações do plugin e clique no ícone do cog para exibir a rota", + "Policies.header.title": "Configurações avançadas", + "PopUpForm.Email.email_templates.inputDescription": "Se não tiver certeza de como usar variáveis, {link}", + "PopUpForm.Email.options.from.email.label": "Email do remetente", + "PopUpForm.Email.options.from.email.placeholder": "kai@doe.com", + "PopUpForm.Email.options.from.name.label": "Nome do remetente", + "PopUpForm.Email.options.from.name.placeholder": "Kai Doe", + "PopUpForm.Email.options.message.label": "Mensagem", + "PopUpForm.Email.options.object.label": "Assunto", + "PopUpForm.Email.options.response_email.label": "Email de resposta", + "PopUpForm.Email.options.response_email.placeholder": "kai@doe.com", + "PopUpForm.Providers.enabled.description": "Se desativado, os usuários não poderão usar este provedor", + "PopUpForm.Providers.enabled.label": "Ativar", + "PopUpForm.Providers.key.label": "ID do cliente", + "PopUpForm.Providers.key.placeholder": "TEXT", + "PopUpForm.Providers.redirectURL.front-end.label": "O URL de redirecionamento para seu aplicativo front-end", + "PopUpForm.Providers.secret.label": "Segredo do Cliente", + "PopUpForm.Providers.secret.placeholder": "TEXT", + "PopUpForm.Providers.subdomain.label": "Host URI (Subdomain)", + "PopUpForm.Providers.subdomain.placeholder": "my.subdomain.com", + "PopUpForm.header.edit.email-templates": "Editar modelos de email", + "notification.success.submit": "As configurações foram atualizadas", + "plugin.description.long": "Proteja sua API com um processo de autenticação completo baseado no JWT. Esse plugin também vem com uma estratégia de ACL que permite gerenciar as permissões entre os grupos de usuários.", + "plugin.description.short": "Proteja sua API com um processo de autenticação completo baseado no JWT", + "plugin.name": "Papéis e permissões" +} diff --git a/packages/strapi-borked/src/extensions/users-permissions/admin/src/translations/pt.json b/packages/strapi-borked/src/extensions/users-permissions/admin/src/translations/pt.json new file mode 100644 index 0000000..a2d2d4b --- /dev/null +++ b/packages/strapi-borked/src/extensions/users-permissions/admin/src/translations/pt.json @@ -0,0 +1,44 @@ +{ + "BoundRoute.title": "Ligar rota a", + "EditForm.inputSelect.description.role": "Vai atribuir o grupo selecionado ao novo utilizador autenticado.", + "EditForm.inputSelect.label.role": "Grupo por defeito para utilizadores autenticados", + "EditForm.inputToggle.description.email": "Proibir a criação de múltiplas contas com o mesmo email por serviços de autenticação diferentes.", + "EditForm.inputToggle.description.email-confirmation": "Quando ativado (ON), os novos utilizadores recebem um email de confirmação.", + "EditForm.inputToggle.description.email-confirmation-redirection": "Após confirmar o seu email, escolha para onde vai ser redirecionado.", + "EditForm.inputToggle.description.sign-up": "Quando desativado (OFF), o processo de registo está proibido. Ninguém se consegue registar mais, independentemente do serviço de authenticação.", + "EditForm.inputToggle.label.email": "Uma conta por endereço de email", + "EditForm.inputToggle.label.email-confirmation": "Ativar email de confirmação", + "EditForm.inputToggle.label.email-confirmation-redirection": "Endereço de redirecionamento (URL)", + "EditForm.inputToggle.label.sign-up": "Ativar registos", + "HeaderNav.link.advancedSettings": "Configurações avançadas", + "HeaderNav.link.emailTemplates": "Modelos de email", + "HeaderNav.link.providers": "Serviços de autenticação", + "Plugin.permissions.plugins.description": "Defina todas as ações permitidas para o plugin {name}.", + "Plugins.header.description": "Todas as ações associadas a uma rota estão listadas abaixo.", + "Plugins.header.title": "Permissões", + "Policies.header.hint": "Selecione as ações da aplicação ou dos plugins e clique no ícone para mostrar as rotas associadas", + "Policies.header.title": "Configurações avançadas", + "PopUpForm.Email.email_templates.inputDescription": "Se não tem a certeza de como usar as variáveis, {link}", + "PopUpForm.Email.options.from.email.label": "Shipper email", + "PopUpForm.Email.options.from.email.placeholder": "kai@doe.com", + "PopUpForm.Email.options.from.name.label": "Shipper name", + "PopUpForm.Email.options.from.name.placeholder": "Kai Doe", + "PopUpForm.Email.options.message.label": "Mensagem", + "PopUpForm.Email.options.object.label": "Assunto", + "PopUpForm.Email.options.response_email.label": "Email de resposta", + "PopUpForm.Email.options.response_email.placeholder": "kai@doe.com", + "PopUpForm.Providers.enabled.description": "Se desativado, os utilizadores não conseguirão utilizar este serviço de autenticação.", + "PopUpForm.Providers.enabled.label": "Ativar", + "PopUpForm.Providers.key.label": "ID de Client", + "PopUpForm.Providers.key.placeholder": "TEXTO", + "PopUpForm.Providers.redirectURL.front-end.label": "Endereço de redirecionamento para a sua aplicação de front-end", + "PopUpForm.Providers.secret.label": "Segredo de cliente", + "PopUpForm.Providers.secret.placeholder": "TEXTO", + "PopUpForm.Providers.subdomain.label": "Host URI (Subdomain)", + "PopUpForm.Providers.subdomain.placeholder": "my.subdomain.com", + "PopUpForm.header.edit.email-templates": "Editar Modelos de Email", + "notification.success.submit": "As configurações foram atualizadas", + "plugin.description.long": "Proteja a sua API com um processo completo de autenticação baseado em JWT. Este plugin também vem com estratégia de ACL que permite gerir permissões entre grupos de utilizadores.", + "plugin.description.short": "Proteja a sua API com um processo completo de autenticação baseado em JWT", + "plugin.name": "Grupos & Permissões" +} diff --git a/packages/strapi-borked/src/extensions/users-permissions/admin/src/translations/ru.json b/packages/strapi-borked/src/extensions/users-permissions/admin/src/translations/ru.json new file mode 100644 index 0000000..b0e5787 --- /dev/null +++ b/packages/strapi-borked/src/extensions/users-permissions/admin/src/translations/ru.json @@ -0,0 +1,82 @@ +{ + "BoundRoute.title": "Связать путь с", + "EditForm.inputSelect.description.role": "При регистрации пользователи будут иметь выбранную роль.", + "EditForm.inputSelect.label.role": "Роль по умолчанию для новых пользователей", + "EditForm.inputToggle.description.email": "Запретить пользователю создавать несколько учётных записей, используя один и тот же адрес электронной почты, у разных поставщиков аутентификации.", + "EditForm.inputToggle.description.email-confirmation": "Если включено (ON), при регистрации пользователи будут получать письмо для подтверждения адреса электронной почты.", + "EditForm.inputToggle.description.email-confirmation-redirection": "Укажите URL-адрес для перенаправления пользователей после подтверждения адреса электронной почты.", + "EditForm.inputToggle.description.email-reset-password": "URL-адрес страницы для сброса пароля учётной записи пользователя", + "EditForm.inputToggle.description.sign-up": "Если выключено (OFF), процесс регистрации пользователей запрещен. Никто не может зарегистрироваться, независимо от провайдера.", + "EditForm.inputToggle.label.email": "Одна учётная запись на один адрес электронной почты", + "EditForm.inputToggle.label.email-confirmation": "Включить подтверждение по электронной почте", + "EditForm.inputToggle.label.email-confirmation-redirection": "URL-адрес для перенаправления", + "EditForm.inputToggle.label.email-reset-password": "Страница сброса пароля", + "EditForm.inputToggle.label.sign-up": "Включить регистрации", + "EditForm.inputToggle.placeholder.email-confirmation-redirection": "например: https://yourfrontend.com/email-confirmation-redirection", + "EditForm.inputToggle.placeholder.email-reset-password": "например: https://yourfrontend.com/reset-password", + "EditPage.form.roles": "Сведения о роли", + "Email.template.data.loaded": "Шаблоны автоматических писем для электронной почты были загружены", + "Email.template.email_confirmation": "Адреса электронной почты с письмом о подтверждении", + "Email.template.form.edit.label": "Редактировать шаблон", + "Email.template.table.action.label": "действие", + "Email.template.table.icon.label": "иконка", + "Email.template.table.name.label": "название", + "Form.advancedSettings.data.loaded": "Данные расширенных настроек были загружены", + "HeaderNav.link.advancedSettings": "Расширенные настройки", + "HeaderNav.link.emailTemplates": "Шаблоны писем", + "HeaderNav.link.providers": "Провайдеры", + "Plugin.permissions.plugins.description": "Определите все разрешенные действия для плагина {name}.", + "Plugins.header.description": "Ниже перечислены только действия, связанные с путём.", + "Plugins.header.title": "Разрешения", + "Policies.header.hint": "Выберите действия приложения или плагина и нажмите на значок шестерёнки, чтобы отобразить связанный путь", + "Policies.header.title": "Расширенные настройки", + "PopUpForm.Email.email_templates.inputDescription": "Если вы не уверены, как использовать переменные — {link}", + "PopUpForm.Email.link.documentation": "ознакомьтесь с нашей документацией.", + "PopUpForm.Email.options.from.email.label": "Электронная почта отправителя", + "PopUpForm.Email.options.from.email.placeholder": "kai@doe.com", + "PopUpForm.Email.options.from.name.label": "Имя отправителя", + "PopUpForm.Email.options.from.name.placeholder": "Kai Doe", + "PopUpForm.Email.options.message.label": "Сообщение", + "PopUpForm.Email.options.object.label": "Тема", + "PopUpForm.Email.options.object.placeholder": "Пожалуйста, подтвердите свой адрес электронной почты для %APP_NAME%", + "PopUpForm.Email.options.response_email.label": "Электронная почта для ответов", + "PopUpForm.Email.options.response_email.placeholder": "paul@example.com", + "PopUpForm.Providers.enabled.description": "Если этот параметр отключен, пользователи не смогут использовать этого поставщика.", + "PopUpForm.Providers.enabled.label": "Включено", + "PopUpForm.Providers.key.label": "ID клиента", + "PopUpForm.Providers.key.placeholder": "TEXT", + "PopUpForm.Providers.redirectURL.front-end.label": "URL-адрес перенаправления на ваше приложение", + "PopUpForm.Providers.redirectURL.label": "URL-адрес перенаправления, который нужно добавить в {provider} конфигурации приложения", + "PopUpForm.Providers.secret.label": "Client Secret", + "PopUpForm.Providers.secret.placeholder": "TEXT", + "PopUpForm.Providers.subdomain.label": "Хост URI (Поддомен)", + "PopUpForm.Providers.subdomain.placeholder": "my.subdomain.com", + "PopUpForm.header.edit.email-templates": "Редактировать шаблон письма", + "PopUpForm.header.edit.providers": "Редактировать провайдера", + "Providers.data.loaded": "Провайдеры были загружены", + "Providers.status": "Статус", + "Roles.empty": "У вас пока нет никаких ролей.", + "Roles.empty.search": "Ни одна роль не соответствует поисковому запросу.", + "Settings.roles.deleted": "Роль удалена", + "Settings.roles.edited": "Роль отредактирована", + "Settings.section-label": "Плагин «Пользователи и Разрешения»", + "components.Input.error.validation.email": "Неверный адрес электронной почты", + "components.Input.error.validation.json": "Это не соответствует формату JSON", + "components.Input.error.validation.max": "Значение слишком велико.", + "components.Input.error.validation.maxLength": "Значение слишком длинное.", + "components.Input.error.validation.min": "Значение слишком мало.", + "components.Input.error.validation.minLength": "Значение слишком короткое.", + "components.Input.error.validation.minSupMax": "Не может быть выше", + "components.Input.error.validation.regex": "Значение не соответствует регулярному выражению.", + "components.Input.error.validation.required": "Это значение является обязательным.", + "components.Input.error.validation.unique": "Это значение уже используется.", + "notification.success.submit": "Настройки были обновлены", + "page.title": "Настройки — Роли", + "plugin.description.long": "Защитите свой API с помощью полноценного процесса аутентификации, основанного на JWT. Этот плагин также имеет настройки стратегии ACL, которые позволяют вам управлять разрешениями между группами пользователей.", + "plugin.description.short": "Защитите свой API с помощью полноценного процесса аутентификации, основанного на JWT.", + "plugin.name": "Пользователи и Разрешения", + "popUpWarning.button.cancel": "Отменить", + "popUpWarning.button.confirm": "Подтвердить", + "popUpWarning.title": "Пожалуйста подтвердите", + "popUpWarning.warning.cancel": "Вы уверены, что хотите отменить свои изменения?" +} diff --git a/packages/strapi-borked/src/extensions/users-permissions/admin/src/translations/sk.json b/packages/strapi-borked/src/extensions/users-permissions/admin/src/translations/sk.json new file mode 100644 index 0000000..ca70fe4 --- /dev/null +++ b/packages/strapi-borked/src/extensions/users-permissions/admin/src/translations/sk.json @@ -0,0 +1,46 @@ +{ + "BoundRoute.title": "URL endpoint naviazaný k", + "EditForm.inputSelect.description.role": "Pridá rolu k používateľovi.", + "EditForm.inputSelect.label.role": "Predvolená rola pre autorizovaných používateľov", + "EditForm.inputToggle.description.email": "Zakázať používateľovi vytvoriť viac účtov s rovnakou e-mailovou adresou pre rôznych poskytovateľov.", + "EditForm.inputToggle.description.email-confirmation": "Ak je povolené (ON), registrovaní používatelia dostanú potvrdzovací e-mail.", + "EditForm.inputToggle.description.email-confirmation-redirection": "URL na ktorú bude používateľ presmerovaný po potvrdení e-mailu.", + "EditForm.inputToggle.description.email-reset-password": "URL pre nastavenie nového hesla", + "EditForm.inputToggle.description.sign-up": "Ak je zakázané (OFF), registrácie nebudú povolené. Nikto sa nebude môcť registrovať bez ohľadu na zvoleného poskytovateľa.", + "EditForm.inputToggle.label.email": "Iba jedno konto pre jednu e-mailovú adresu", + "EditForm.inputToggle.label.email-confirmation": "Povoliť potvrdzovanie e-mailových adries", + "EditForm.inputToggle.label.email-confirmation-redirection": "URL pre potvrdenie e-mailovej adresy", + "EditForm.inputToggle.label.email-reset-password": "URL pre obnovu hesla", + "EditForm.inputToggle.label.sign-up": "Povoliť registrácie", + "HeaderNav.link.advancedSettings": "Pokročilé nastavenia", + "HeaderNav.link.emailTemplates": "Šablóny emailov", + "HeaderNav.link.providers": "Poskytovatelia", + "Plugin.permissions.plugins.description": "Zvoľte akcie, ktoré majú byť povolené pre plugin {name}.", + "Plugins.header.description": "Zobrazujú sa iba akcie naviazané na URL endpoint.", + "Plugins.header.title": "Oprávnenia", + "Policies.header.hint": "Vyberte akciu a kliknite na ikonku nastavení pre zobrazenie naviazanej URL", + "Policies.header.title": "Pokročilé nastavenia", + "PopUpForm.Email.email_templates.inputDescription": "Ak si nie ste istý ako používať premenné, {link}", + "PopUpForm.Email.options.from.email.label": "E-mail odosielateľa", + "PopUpForm.Email.options.from.email.placeholder": "janko.hrasko@gmail.com", + "PopUpForm.Email.options.from.name.label": "Meno odosielateľa", + "PopUpForm.Email.options.from.name.placeholder": "Janko Hraško", + "PopUpForm.Email.options.message.label": "Obsah e-mailu", + "PopUpForm.Email.options.object.label": "Predmet", + "PopUpForm.Email.options.response_email.label": "Odpovedať na e-mail", + "PopUpForm.Email.options.response_email.placeholder": "janko.hrasko@gmail.com", + "PopUpForm.Providers.enabled.description": "Ak je zakázané, používatelia nebudú môcť použiť tohto poskytovateľa.", + "PopUpForm.Providers.enabled.label": "Povoliť", + "PopUpForm.Providers.key.label": "Client ID", + "PopUpForm.Providers.key.placeholder": "TEXT", + "PopUpForm.Providers.redirectURL.front-end.label": "URL presmerovania do vašej aplikácie", + "PopUpForm.Providers.secret.label": "Client Secret", + "PopUpForm.Providers.secret.placeholder": "TEXT", + "PopUpForm.Providers.subdomain.label": "Host URI (Subdomain)", + "PopUpForm.Providers.subdomain.placeholder": "my.subdomain.com", + "PopUpForm.header.edit.email-templates": "Upraviť šablóny e-mailov", + "notification.success.submit": "Nastavenia boli uložené", + "plugin.description.long": "Zabezpečte vaše API pomocou JWT tokenov. Tento plugin taktiež podporuje ACL záznamy, ktoré umožňujú spravovať oprávnenia v rámci skupín používateľov.", + "plugin.description.short": "Zabezpečte vaše API pomocou JWT tokenov", + "plugin.name": "Roly a oprávnenia" +} diff --git a/packages/strapi-borked/src/extensions/users-permissions/admin/src/translations/sv.json b/packages/strapi-borked/src/extensions/users-permissions/admin/src/translations/sv.json new file mode 100644 index 0000000..285c935 --- /dev/null +++ b/packages/strapi-borked/src/extensions/users-permissions/admin/src/translations/sv.json @@ -0,0 +1,82 @@ +{ + "BoundRoute.title": "Bind rutt till", + "EditForm.inputSelect.description.role": "Den bifogar den nya autentiserade användaren till den valda rollen.", + "EditForm.inputSelect.label.role": "Standardroll för autentiserade användare", + "EditForm.inputToggle.description.email": "Tillåt ej användaren att skapa flera konton med samma e-postadress med olika autentiseringstjänster.", + "EditForm.inputToggle.description.email-confirmation": "När aktiverat (PÅ) får nya registrerade användare ett bekräftelsemeddelande.", + "EditForm.inputToggle.description.email-confirmation-redirection": "När du har bekräftat din e-post väljer du var du ska omdirigeras.", + "EditForm.inputToggle.description.email-reset-password": "URL:en till din applikations sida för återställning av lösenord", + "EditForm.inputToggle.description.sign-up": "När inaktiverad (AV) är registreringsprocessen förbjuden. Ingen kan prenumerera längre oavsett vilken autentiseringstjänst som används.", + "EditForm.inputToggle.label.email": "Ett konto per e-postadress", + "EditForm.inputToggle.label.email-confirmation": "Aktivera e-postbekräftelse", + "EditForm.inputToggle.label.email-confirmation-redirection": "Omdirigerings-url", + "EditForm.inputToggle.label.email-reset-password": "Återställ lösenordssidan", + "EditForm.inputToggle.label.sign-up": "Tillåt registreringar", + "EditForm.inputToggle.placeholder.email-confirmation-redirection": "t.ex: https://yourfrontend.com/email-confirmation-redirection", + "EditForm.inputToggle.placeholder.email-reset-password": "t.ex: https://yourfrontend.com/reset-password", + "EditPage.form.roles": "Rolldetaljer", + "Email.template.data.loaded": "E-postmallar har laddats", + "Email.template.email_confirmation": "Bekräftelse av e-postadress", + "Email.template.form.edit.label": "Redigera en mall", + "Email.template.table.action.label": "händelse", + "Email.template.table.icon.label": "ikon", + "Email.template.table.name.label": "namn", + "Form.advancedSettings.data.loaded": "Data för avancerade inställningar har laddats", + "HeaderNav.link.advancedSettings": "Avancerade inställningar", + "HeaderNav.link.emailTemplates": "E-postmall", + "HeaderNav.link.providers": "Autentiseringstjänster", + "Plugin.permissions.plugins.description": "Definiera alla tillåtna åtgärder för {name} plugin.", + "Plugins.header.description": "Endast åtgärder som är bundna av en rutt listas nedan.", + "Plugins.header.title": "Behörigheter", + "Policies.header.hint": "Välj programmets åtgärder eller plugins åtgärder och klicka på kugghjulsikonen för att visa den bundna rutten", + "Policies.header.title": "Avancerade inställningar", + "PopUpForm.Email.email_templates.inputDescription": "Om du är osäker på hur du använder variabler, {link}", + "PopUpForm.Email.link.documentation": "Kolla in vår dokumentation.", + "PopUpForm.Email.options.from.email.label": "Avsändarens e-postadress", + "PopUpForm.Email.options.from.email.placeholder": "kai@doe.com", + "PopUpForm.Email.options.from.name.label": "Avsändarens namn", + "PopUpForm.Email.options.from.name.placeholder": "Kai Doe", + "PopUpForm.Email.options.message.label": "Meddelande", + "PopUpForm.Email.options.object.label": "Ämne", + "PopUpForm.Email.options.object.placeholder": "Bekräfta din e-postadress för %APP_NAME%", + "PopUpForm.Email.options.response_email.label": "Svarsmail", + "PopUpForm.Email.options.response_email.placeholder": "kai@doe.com", + "PopUpForm.Providers.enabled.description": "Om inaktiverat kan användarna inte använda den här tjänsten.", + "PopUpForm.Providers.enabled.label": "Tillåt", + "PopUpForm.Providers.key.label": "Klient ID", + "PopUpForm.Providers.key.placeholder": "TEXT", + "PopUpForm.Providers.redirectURL.front-end.label": "Omdirigerings-URL: en till din front-end-app", + "PopUpForm.Providers.redirectURL.label": "Webbadressen för omdirigering som ska läggas till i {Provider} applikationskonfigurationer", + "PopUpForm.Providers.secret.label": "Klient hemlighet", + "PopUpForm.Providers.secret.placeholder": "TEXT", + "PopUpForm.Providers.subdomain.label": "Host URI (Subdomän)", + "PopUpForm.Providers.subdomain.placeholder": "min.subdoman.com", + "PopUpForm.header.edit.email-templates": "Redigera e-postmallar", + "PopUpForm.header.edit.providers": "Redigera tjänst", + "Providers.data.loaded": "Tjänster har laddats in", + "Providers.status": "Status", + "Roles.empty": "Du har inga roller än.", + "Roles.empty.search": "Inga roller matchar sökningen.", + "Settings.roles.deleted": "Roll borttagen", + "Settings.roles.edited": "Roll redigerad", + "Settings.section-label": "Roller och behörigheter", + "components.Input.error.validation.email": "E-postadressen är ogiltig", + "components.Input.error.validation.json": "Detta är inte giltig JSON", + "components.Input.error.validation.max": "Värdet är för högt.", + "components.Input.error.validation.maxLength": "Värdet är för långt.", + "components.Input.error.validation.min": "Värdet är för lågt.", + "components.Input.error.validation.minLength": "Värdet är för kort.", + "components.Input.error.validation.minSupMax": "Minsta värdet är större än maximalt värde.", + "components.Input.error.validation.regex": "Värdet matchar inte regex-mönstret.", + "components.Input.error.validation.required": "Värdet är obligatoriskt.", + "components.Input.error.validation.unique": "Detta värdet är redan använt.", + "notification.success.submit": "Inställningar har uppdaterats", + "page.title": "Inställningar - Roller", + "plugin.description.long": "Skydda ditt API med en fullständig autentiseringsprocess baserad på JWT. Detta plugin har också en ACL-strategi som låter dig hantera behörigheterna mellan användargrupperna.", + "plugin.description.short": "Skydda ditt API med en fullständig autentiseringsprocess baserad på JWT", + "plugin.name": "Roller och behörigheter", + "popUpWarning.button.cancel": "Avbryt", + "popUpWarning.button.confirm": "Bekräfta", + "popUpWarning.title": "Var god bekräfta", + "popUpWarning.warning.cancel": "Är du säker att du vill avbryta dina ändringar?" +} diff --git a/packages/strapi-borked/src/extensions/users-permissions/admin/src/translations/th.json b/packages/strapi-borked/src/extensions/users-permissions/admin/src/translations/th.json new file mode 100644 index 0000000..f457d86 --- /dev/null +++ b/packages/strapi-borked/src/extensions/users-permissions/admin/src/translations/th.json @@ -0,0 +1,56 @@ +{ + "BoundRoute.title": "กำหนดเส้นทางไปยัง", + "EditForm.inputSelect.description.role": "แนบผู้ใช้ที่พิสูจน์ตัวตนใหม่ไปยังบทบาทที่เลือก", + "EditForm.inputSelect.label.role": "บทบาทพื้นฐานสำหรับผู้ใช้ที่พิสูจน์ตัวตน", + "EditForm.inputToggle.description.email": "ไม่อนุญาตให้ผู้ใช้สร้างหลายแอคเคาต์ โดยใช้อีเมลเดียวกันกับผู้ให้บริการการพิสูจน์ตัวตนที่ต่างกัน", + "EditForm.inputToggle.description.email-confirmation": "เมื่อเปิดใช้งาน (เปิด) ผู้ใช้สีแดงที่ลงทะเบียนใหม่จะได้รับอีเมลยืนยัน", + "EditForm.inputToggle.description.email-confirmation-redirection": "หลังจากยืนยันอีเมลของคุณแล้ว, ให้เลือกตำแหน่งที่คุณจะเปลี่ยนทิศทาง", + "EditForm.inputToggle.description.email-reset-password": "URL ของเพจรีเซ็ตรหัสผ่านแอปพลิเคชันของคุณ", + "EditForm.inputToggle.description.sign-up": "เมื่อปิดใช้งาน (OFF) กระบวนการลงทะเบียนจะถูกห้าม ไม่มีใครสามารถสมัครสมาชิกได้อีกต่อไปไม่ว่าจะเป็นผู้ให้บริการที่ใช้", + "EditForm.inputToggle.label.email": "หนึ่งแอคเคาต์ต่ออีเมลแอดเดรส", + "EditForm.inputToggle.label.email-confirmation": "เปิดใช้งานการยืนยันอีเมล", + "EditForm.inputToggle.label.email-confirmation-redirection": "Url การเปลี่ยนทิศทาง", + "EditForm.inputToggle.label.email-reset-password": "หน้ารีเซ็ตรหัสผ่าน", + "EditForm.inputToggle.label.sign-up": "เปิดใช้งานการลงทะเบียน", + "Email.template.email_confirmation": "ยืนยันอีเมลแอดเดรส", + "HeaderNav.link.advancedSettings": "การตั้งค่าขั้นสูง", + "HeaderNav.link.emailTemplates": "เท็มเพลตอีเมล", + "HeaderNav.link.providers": "ผู้ให้บริการ", + "Plugin.permissions.plugins.description": "กำหนดการดำเนินการที่อนุญาตทั้งหมดสำหรับปลั๊กอิน {name}", + "Plugins.header.description": "เฉพาะการดำเนินการที่โยงโดยเราต์จะถูกแสดงด้านล่าง", + "Plugins.header.title": "สิทธิการใช้งาน", + "Policies.header.hint": "เลือกแอ็คชันของแอปพลิเคชันหรือแอ็คชันของปลั๊กอินและคลิกบนไอคอนฟันเฟือง เพื่อแสดงเส้นทางที่โยงไว้", + "Policies.header.title": "การตั้งค่าขั้นสูง", + "PopUpForm.Email.email_templates.inputDescription": "ถ้าคุณไม่แน่ใจว่าจะใช้ตัวแปรอย่างไร {link}", + "PopUpForm.Email.link.documentation": "ดูเอกสารของเราสิ", + "PopUpForm.Email.options.from.email.label": "อีเมล Shipper", + "PopUpForm.Email.options.from.email.placeholder": "kai@doe.com", + "PopUpForm.Email.options.from.name.label": "ชื่อ Shipper", + "PopUpForm.Email.options.from.name.placeholder": "Kai Doe", + "PopUpForm.Email.options.message.label": "ข้อความ", + "PopUpForm.Email.options.object.label": "เรื่อง", + "PopUpForm.Email.options.object.placeholder": "โปรดยืนยันอีเมลแอดเดรสของคุณสำหรับ % APP _ NAME %", + "PopUpForm.Email.options.response_email.label": "อีเมลตอบกลับ", + "PopUpForm.Email.options.response_email.placeholder": "kai@doe.com", + "PopUpForm.Providers.enabled.description": "ถ้าปิดใช้งาน, ผู้ใช้จะไม่สามารถใช้ผู้ให้บริการนี้ได้", + "PopUpForm.Providers.enabled.label": "เปิดใช้งาน", + "PopUpForm.Providers.key.label": "ID ไคลเอ็นต์", + "PopUpForm.Providers.key.placeholder": "ข้อความ", + "PopUpForm.Providers.redirectURL.front-end.label": "เปลี่ยนทิศทาง URL ไปยังแอป front-end ของคุณ", + "PopUpForm.Providers.redirectURL.label": "เปลี่ยนทิศทาง URL เพื่อเพิ่มในตั้งค่าแอปพลิเคชัน {provider} ของคุณ", + "PopUpForm.Providers.secret.label": "Secret ไคลเอ็นต์", + "PopUpForm.Providers.secret.placeholder": "ข้อความ", + "PopUpForm.header.edit.email-templates": "แก้ไขเทมเพลตอีเมล", + "PopUpForm.header.edit.providers": "แก้ไขผู้ให้บริการ", + "Settings.roles.deleted": "ลบบทบาทแล้ว", + "Settings.roles.edited": "บทบาทที่แก้ไข", + "Settings.section-label": "ปลั๊กอินผู้ใช้ & สิทธิ", + "notification.success.submit": "อัปเดตการตั้งค่าแล้ว", + "plugin.description.long": "ป้องกัน API ของคุณด้วยกระบวนการพิสูจน์ตัวตนแบบสมบูรณ์โดยอิงจาก JWT ปลั๊กอินนี้มาพร้อมกับกลยุทธ์ ACL ที่อนุญาตให้คุณจัดการกับสิทธิระหว่างกลุ่มของผู้ใช้ได้ด้วย", + "plugin.description.short": "ปกป้อง API ของคุณที่มีกระบวนการพิสูจน์ตัวตนแบบสมบูรณ์โดยอิงจาก JWT", + "plugin.name": "ปลั๊กอิน ผู้ใช้ & การอนุญาต", + "popUpWarning.button.cancel": "ยกเลิก", + "popUpWarning.button.confirm": "ยืนยัน", + "popUpWarning.title": "โปรดยืนยัน", + "popUpWarning.warning.cancel": "คุณแน่ใจว่าต้องการยกเลิกการแก้ไขของคุณหรือไม่?" +} diff --git a/packages/strapi-borked/src/extensions/users-permissions/admin/src/translations/tr.json b/packages/strapi-borked/src/extensions/users-permissions/admin/src/translations/tr.json new file mode 100644 index 0000000..76a2331 --- /dev/null +++ b/packages/strapi-borked/src/extensions/users-permissions/admin/src/translations/tr.json @@ -0,0 +1,81 @@ +{ + "BoundRoute.title": "Bağlı rota", + "EditForm.inputSelect.description.role": "Yeni kimliği doğrulanmış kullanıcıyı seçilen rolü ekler.", + "EditForm.inputSelect.label.role": "Kimliği doğrulanmış kullanıcılar için varsayılan rol", + "EditForm.inputToggle.description.email": "Kullanıcıyı, farklı kimlik doğrulama sağlayıcılarıyla aynı e-posta adresini kullanarak birden fazla hesap oluşturmasına izin vermeyin.", + "EditForm.inputToggle.description.email-confirmation": "Etkinleştirildiğinde yeni kayıtlı kullanıcılar bir onay e-postası alır.", + "EditForm.inputToggle.description.email-confirmation-redirection": "E-postanızı onayladıktan sonra, yönlendirileceğiniz yeri seçin.", + "EditForm.inputToggle.description.sign-up": "Devre dışı bırakıldığında (KAPALI), kayıt işlemi yasaktır. Artık kullanılan sağlayıcı ne olursa olsun hiç kimse abone olamaz.", + "EditForm.inputToggle.label.email": "E-posta adresi başına bir hesap", + "EditForm.inputToggle.label.email-confirmation": "E-posta onayını etkinleştir", + "EditForm.inputToggle.label.email-confirmation-redirection": "Yönlendirme URL'si", + "EditForm.inputToggle.label.sign-up": "Kayıtları etkinleştir", + "EditForm.inputToggle.placeholder.email-confirmation-redirection": "ör: https://yourfrontend.com/email-confirmation-redirection", + "EditForm.inputToggle.placeholder.email-reset-password": "ör: https://yourfrontend.com/reset-password", + "EditPage.form.roles": "Rol detayları", + "Email.template.data.loaded": "E-posta şablonları yüklendi", + "Email.template.email_confirmation": "E-posta adresi doğrulaması", + "Email.template.form.edit.label": "Şablonu düzenle", + "Email.template.table.action.label": "eylem", + "Email.template.table.icon.label": "ikon", + "Email.template.table.name.label": "ad", + "Form.advancedSettings.data.loaded": "Gelişmiş ayarlar verisi yüklendi", + "HeaderNav.link.advancedSettings": "Gelişmiş Ayarlar", + "HeaderNav.link.emailTemplates": "E-posta Şablonları", + "HeaderNav.link.providers": "Sağlayıcıları", + "Plugin.permissions.plugins.description": "{name} eklentisi için izin verilen tüm eylemleri tanımlayın.", + "Plugins.header.description": "Yalnızca bir güzergahla sınırlandırılan işlemler aşağıda listelenmiştir.", + "Plugins.header.title": "İzinler", + "Policies.header.hint": "Uygulamanın eylemlerini veya eklentinin eylemlerini seçin ve bağlı rotayı görüntülemek için dişli çark simgesini tıklayın", + "Policies.header.title": "Gelişmiş Ayarlar", + "PopUpForm.Email.email_templates.inputDescription": "Değişkenleri nasıl kullanacağınızdan emin değilseniz, {link}", + "PopUpForm.Email.link.documentation": "dokümantasyonu kontrol et.", + "PopUpForm.Email.options.from.email.label": "Gönderenin E-posta", + "PopUpForm.Email.options.from.email.placeholder": "kai@doe.com", + "PopUpForm.Email.options.from.name.label": "Gönderenin adı", + "PopUpForm.Email.options.from.name.placeholder": "Kai Doe", + "PopUpForm.Email.options.message.label": "Mesaj", + "PopUpForm.Email.options.object.label": "Konu", + "PopUpForm.Email.options.object.placeholder": "%APP_NAME% için e-posta adresini doğrula", + "PopUpForm.Email.options.response_email.label": "Yanıt e-postası", + "PopUpForm.Email.options.response_email.placeholder": "kai@doe.com", + "PopUpForm.Providers.enabled.description": "Devre dışı bırakıldıysa kullanıcılar bu sağlayıcıyı kullanamaz.", + "PopUpForm.Providers.enabled.label": "Etkinleştirme", + "PopUpForm.Providers.key.label": "Web istemcisi ID", + "PopUpForm.Providers.key.placeholder": "METİN", + "PopUpForm.Providers.redirectURL.front-end.label": "Arayüz uygulamanızın yönlendirme URL'si", + "PopUpForm.Providers.redirectURL.label": "{provider} uygulama ayarlarına ekleyeceğin yönlendirme URLi", + "PopUpForm.Providers.secret.label": "Web istemcisi Secret", + "PopUpForm.Providers.secret.placeholder": "METİN", + "PopUpForm.Providers.subdomain.label": "Host URI (Subdomain)", + "PopUpForm.Providers.subdomain.placeholder": "my.subdomain.com", + "PopUpForm.header.edit.email-templates": "E-posta Şablonlarını Düzenle", + "PopUpForm.header.edit.providers": "Sağlayıcıyı Düzenle", + "Providers.data.loaded": "Sağlayıcılar yüklendi", + "Providers.image": "Görsel", + "Providers.status": "Durum", + "Roles.empty": "Henüz hiç rolün yok.", + "Roles.empty.search": "Aramaya uygun rol bulunmadı.", + "Settings.roles.deleted": "Rol silindi", + "Settings.roles.edited": "Rol düzenlendi", + "Settings.section-label": "Kullanıcılar ve İzinler eklentisi", + "components.Input.error.validation.email": "Bu geçersiz bir e-posta", + "components.Input.error.validation.json": "Bu JSON biçimine uymuyor", + "components.Input.error.validation.max": "Değer çok yüksek.", + "components.Input.error.validation.maxLength": "Değer çok uzun.", + "components.Input.error.validation.min": "Değer çok düşük.", + "components.Input.error.validation.minLength": "Değer çok kısa.", + "components.Input.error.validation.minSupMax": "Üst olamaz", + "components.Input.error.validation.regex": "Değer RegExp'e uymuyor.", + "components.Input.error.validation.required": "Değer gerekli.", + "components.Input.error.validation.unique": "Değer zaten kullanılıyor.", + "notification.success.submit": "Ayarlar güncellendi", + "page.title": "Ayarlar - Roller", + "plugin.description.long": "Servisinizi JWT'ye dayalı tam bir kimlik doğrulama işlemi ile koruyun. Bu eklenti, kullanıcı grupları arasındaki izinleri yönetmenize izin veren bir ACL stratejisiyle de gelir.", + "plugin.description.short": "Servisinizi JWT'ye dayalı tam bir kimlik doğrulama işlemi ile koruyun", + "plugin.name": "Roller ve İzinler", + "popUpWarning.button.cancel": "İptal Et", + "popUpWarning.button.confirm": "Onayla", + "popUpWarning.title": "Lütfen onayla", + "popUpWarning.warning.cancel": "Değişiklikleri iptal etmek istediğinden emin misin?" +} diff --git a/packages/strapi-borked/src/extensions/users-permissions/admin/src/translations/uk.json b/packages/strapi-borked/src/extensions/users-permissions/admin/src/translations/uk.json new file mode 100644 index 0000000..8896d5e --- /dev/null +++ b/packages/strapi-borked/src/extensions/users-permissions/admin/src/translations/uk.json @@ -0,0 +1,45 @@ +{ + "BoundRoute.title": "Пов'язано з", + "EditForm.inputSelect.description.role": "Підключає нового автентифікованого користувача до вибраної ролі.", + "EditForm.inputSelect.label.role": "Роль за замовчуванням для автентифікованих користувачів", + "EditForm.inputToggle.description.email": "Не дозволяти користувачам створювати кілька аккаунтів з тим самим email, але різним провайдером автентифікації.", + "EditForm.inputToggle.description.email-confirmation": "Якщо увімкнено (ON), щойно зареєстровані користувачі отримують листа для підтверждення.", + "EditForm.inputToggle.description.email-confirmation-redirection": "Куди ви будете перенаправлені після підтвердження свого email.", + "EditForm.inputToggle.description.email-reset-password": "URL-адреса сторінки скидання пароля вашого додатку", + "EditForm.inputToggle.description.sign-up": "Якщо вимкнено (OFF), реєстрація заборонена. Незалежно від використовуваного провайдера більше ніхто не зможе приєднатись.", + "EditForm.inputToggle.label.email": "Один аккаунт на email", + "EditForm.inputToggle.label.email-confirmation": "Увімкнути підтверження email", + "EditForm.inputToggle.label.email-confirmation-redirection": "URL для перенаправлення", + "EditForm.inputToggle.label.email-reset-password": "Сторінка скидання пароля", + "EditForm.inputToggle.label.sign-up": "Увімкнути реєстрацію", + "HeaderNav.link.advancedSettings": "Розширені налаштування", + "HeaderNav.link.emailTemplates": "Шаблони листів", + "HeaderNav.link.providers": "Провайдери", + "Plugin.permissions.plugins.description": "Встановіть всі дозволені дії у плаґіні {name}.", + "Plugins.header.description": "Нижче перераховано лише дії, пов'язані з маршрутом.", + "Plugins.header.title": "Дозволи", + "Policies.header.hint": "Виберіть дії вашого додатку або дії плаґіну та натисніть на значок шестірні, щоб відобразити пов'язаний маршрут", + "Policies.header.title": "Розширені налашрування", + "PopUpForm.Email.email_templates.inputDescription": "Якщо ви не впевнені, як використовувати змінні, {link}", + "PopUpForm.Email.options.from.email.label": "Email відправника", + "PopUpForm.Email.options.from.email.placeholder": "kai@doe.com", + "PopUpForm.Email.options.from.name.label": "Ім'я відправника", + "PopUpForm.Email.options.from.name.placeholder": "Kai Doe", + "PopUpForm.Email.options.message.label": "Повідомлення", + "PopUpForm.Email.options.object.label": "Тема", + "PopUpForm.Email.options.response_email.label": "Email для відповіді", + "PopUpForm.Email.options.response_email.placeholder": "kai@doe.com", + "PopUpForm.Providers.enabled.description": "Якщо вимкнуто, користувачі не зможуть вікористати цей провайдер.", + "PopUpForm.Providers.enabled.label": "Увімкнути", + "PopUpForm.Providers.key.label": "Client ID", + "PopUpForm.Providers.key.placeholder": "TEXT", + "PopUpForm.Providers.redirectURL.front-end.label": "URL переадресації для вашего front-end додатку", + "PopUpForm.Providers.secret.label": "Client Secret", + "PopUpForm.Providers.secret.placeholder": "TEXT", + "PopUpForm.Providers.subdomain.label": "Host URI (Subdomain)", + "PopUpForm.Providers.subdomain.placeholder": "my.subdomain.com", + "PopUpForm.header.edit.email-templates": "Редагування шаблони листів", + "notification.success.submit": "Налаштування оновлено", + "plugin.description.long": "Захистіть API за допомогою процесу аутентифікації на основі JWT. Цей плагін також включає можливості ACL, які дозволяють керувати дозволами між групами користувачів.", + "plugin.description.short": "Захистіть API за допомогою процесу аутентифікації на основі JWT" +} diff --git a/packages/strapi-borked/src/extensions/users-permissions/admin/src/translations/vi.json b/packages/strapi-borked/src/extensions/users-permissions/admin/src/translations/vi.json new file mode 100644 index 0000000..6673b05 --- /dev/null +++ b/packages/strapi-borked/src/extensions/users-permissions/admin/src/translations/vi.json @@ -0,0 +1,46 @@ +{ + "BoundRoute.title": "Đến tới", + "EditForm.inputSelect.description.role": "Đính kèm người dùng mới đã được xác thực vào quyền được chọn.", + "EditForm.inputSelect.label.role": "Quyền mặc định cho các người dùng đã được chứng thực", + "EditForm.inputToggle.description.email": "Không cho phép người dùng tạo nhiều tài khoản có cùng địa chỉ email với nhiều nhà cung cấp chứng thực.", + "EditForm.inputToggle.description.email-confirmation": "Khi được kích hoạt (ON), người dùng đăng ký mới nhận được một email xác nhận.", + "EditForm.inputToggle.description.email-confirmation-redirection": "Sau khi xác nhận email của bạn, chọn nơi bạn sẽ được đưa về.", + "EditForm.inputToggle.description.email-reset-password": "URL của trang lấy lại mật khẩu của ứng dụng của bạn", + "EditForm.inputToggle.description.sign-up": "Khi không kích hoạt (OFF), quá trình đăng ký bị cấm. Không ai có thể đăng ký thêm dù dùng bất kỳ nhà cung cấp nào.", + "EditForm.inputToggle.label.email": "Một tài khoản trên một địa chỉ email", + "EditForm.inputToggle.label.email-confirmation": "Kích hoạt email xác nhận", + "EditForm.inputToggle.label.email-confirmation-redirection": "URL đưa về", + "EditForm.inputToggle.label.email-reset-password": "Trang lấy lại mật khẩu", + "EditForm.inputToggle.label.sign-up": "Kích hoạt đăng ký", + "HeaderNav.link.advancedSettings": "Cài đặt nâng cao", + "HeaderNav.link.emailTemplates": "Mẫu email", + "HeaderNav.link.providers": "Các nhà cung cấp", + "Plugin.permissions.plugins.description": "Định nghĩa tất cả hành động được phép cho {name} plugin.", + "Plugins.header.description": "Chỉ các hành động đến bởi một đường dẫn được liệt kê bên dưới.", + "Plugins.header.title": "Các Quyền", + "Policies.header.hint": "Chọn các hành động của ứng dựng hoặc hành động của plugin và nhấn vào biểu tượng bánh răng để hiển thị đường đến", + "Policies.header.title": "Các cài đặt nâng cao", + "PopUpForm.Email.email_templates.inputDescription": "Nếu bạn không chắc sử dụng các biến như thế nào, {link}", + "PopUpForm.Email.options.from.email.label": "Email người gửi", + "PopUpForm.Email.options.from.email.placeholder": "kai@doe.com", + "PopUpForm.Email.options.from.name.label": "Tên người gửi", + "PopUpForm.Email.options.from.name.placeholder": "Kai Doe", + "PopUpForm.Email.options.message.label": "Thông điệp", + "PopUpForm.Email.options.object.label": "Chủ đề", + "PopUpForm.Email.options.response_email.label": "Email phản hồi", + "PopUpForm.Email.options.response_email.placeholder": "kai@doe.com", + "PopUpForm.Providers.enabled.description": "Nếu không kích hoạt, người dùng sẽ không thể dùng nhà cung cấp này.", + "PopUpForm.Providers.enabled.label": "Kích hoạt", + "PopUpForm.Providers.key.label": "Client ID", + "PopUpForm.Providers.key.placeholder": "VĂN BẢN", + "PopUpForm.Providers.redirectURL.front-end.label": "URL chuyển tiếp đến ứng dụng bên ngoài của bạn", + "PopUpForm.Providers.secret.label": "Client Secret", + "PopUpForm.Providers.secret.placeholder": "VĂN BẢN", + "PopUpForm.Providers.subdomain.label": "Host URI (Subdomain)", + "PopUpForm.Providers.subdomain.placeholder": "my.subdomain.com", + "PopUpForm.header.edit.email-templates": "Sửa Các Mẫu Email", + "notification.success.submit": "Các cấu hình đã được cập nhật", + "plugin.description.long": "Bảo vệ API của bạn với quá trình chứng thực đầy đủ dựa trên JWT. Plugin này cũng kèm với chiến lược ACL cho phép bạn quản lý quyền giữa các nhóm người dùng.", + "plugin.description.short": "Bảo vệ API của bạn với quá trình chứng thực đầy đủ dựa trên JWT", + "plugin.name": "Vai trò và Quyền" +} diff --git a/packages/strapi-borked/src/extensions/users-permissions/admin/src/translations/zh-Hans.json b/packages/strapi-borked/src/extensions/users-permissions/admin/src/translations/zh-Hans.json new file mode 100644 index 0000000..f1b5688 --- /dev/null +++ b/packages/strapi-borked/src/extensions/users-permissions/admin/src/translations/zh-Hans.json @@ -0,0 +1,82 @@ +{ + "BoundRoute.title": "绑定路由到", + "EditForm.inputSelect.description.role": "新验证身份的用户将被赋予所选角色。", + "EditForm.inputSelect.label.role": "认证用户的默认角色", + "EditForm.inputToggle.description.email": "不允许用户使用不同的认证提供者(绑定的相同的电子邮件地址)来创建多个帐户。", + "EditForm.inputToggle.description.email-confirmation": "启用(ON)后,新注册的用户会收到一封确认电子邮件。", + "EditForm.inputToggle.description.email-confirmation-redirection": "确认您的电子邮件后,选择将您重定向到的位置。", + "EditForm.inputToggle.description.email-reset-password": "应用程序的重置密码页面的 URL", + "EditForm.inputToggle.description.sign-up": "当禁用(OFF)时,注册过程将被禁止。任何人无论使用任何的供应商都不可以订阅。", + "EditForm.inputToggle.label.email": "每个电子邮件地址一个帐户", + "EditForm.inputToggle.label.email-confirmation": "启用电子邮件确认", + "EditForm.inputToggle.label.email-confirmation-redirection": "重定向 URL", + "EditForm.inputToggle.label.email-reset-password": "重置密码页面 URL", + "EditForm.inputToggle.label.sign-up": "启用注册", + "EditForm.inputToggle.placeholder.email-confirmation-redirection": "例如: https://yourfrontend.com/reset-password", + "EditForm.inputToggle.placeholder.email-reset-password": "例如: https://yourfrontend.com/reset-password", + "EditPage.form.roles": "角色详情", + "Email.template.data.loaded": "电子邮件模板已加载", + "Email.template.email_confirmation": "邮箱地址确认", + "Email.template.form.edit.label": "编辑模板", + "Email.template.table.action.label": "操作", + "Email.template.table.icon.label": "图标", + "Email.template.table.name.label": "名称", + "Form.advancedSettings.data.loaded": "高级设置数据已加载", + "HeaderNav.link.advancedSettings": "高级设置", + "HeaderNav.link.emailTemplates": "电子邮件模板", + "HeaderNav.link.providers": "提供者", + "Plugin.permissions.plugins.description": "定义 {name} 插件所有允许的操作。", + "Plugins.header.description": "下面只列出路由绑定的操作。", + "Plugins.header.title": "权限", + "Policies.header.hint": "选择应用程序或插件的操作,然后点击 COG 图标显示绑定的路由", + "Policies.header.title": "高级设置", + "PopUpForm.Email.email_templates.inputDescription": "如果你不确定如何使用变量, {link}", + "PopUpForm.Email.link.documentation": "查看我们的文档", + "PopUpForm.Email.options.from.email.label": "发件人地址", + "PopUpForm.Email.options.from.email.placeholder": "kai@doe.com", + "PopUpForm.Email.options.from.name.label": "发件人名称", + "PopUpForm.Email.options.from.name.placeholder": "Kai Doe", + "PopUpForm.Email.options.message.label": "消息", + "PopUpForm.Email.options.object.label": "主题", + "PopUpForm.Email.options.object.placeholder": "请为%APP_NAME%确认邮箱地址", + "PopUpForm.Email.options.response_email.label": "回复邮件", + "PopUpForm.Email.options.response_email.placeholder": "kai@doe.com", + "PopUpForm.Providers.enabled.description": "如果禁用,用户将无法使用此供应商。", + "PopUpForm.Providers.enabled.label": "启用", + "PopUpForm.Providers.key.label": "客户端 ID", + "PopUpForm.Providers.key.placeholder": "文本", + "PopUpForm.Providers.redirectURL.front-end.label": "重定向 URL", + "PopUpForm.Providers.redirectURL.label": "添加到{provider}应用配置的跳转URL", + "PopUpForm.Providers.secret.label": "客户端秘钥", + "PopUpForm.Providers.secret.placeholder": "文本", + "PopUpForm.Providers.subdomain.label": "主机URI(子域名)", + "PopUpForm.Providers.subdomain.placeholder": "my.subdomain.com", + "PopUpForm.header.edit.email-templates": "编辑电子邮件模版", + "PopUpForm.header.edit.providers": "编辑提供商", + "Providers.data.loaded": "提供商已加载", + "Providers.status": "状态", + "Roles.empty": "您还没有任何角色。", + "Roles.empty.search": "没有与搜索相匹配的角色。", + "Settings.roles.deleted": "角色已被删除", + "Settings.roles.edited": "角色编辑完成", + "Settings.section-label": "用户及权限插件", + "components.Input.error.validation.email": "这是一个无效的电子邮件", + "components.Input.error.validation.json": "这不符合JSON格式", + "components.Input.error.validation.max": "值过高。", + "components.Input.error.validation.maxLength": "值过长。", + "components.Input.error.validation.min": "值太低。", + "components.Input.error.validation.minLength": "值太短。", + "components.Input.error.validation.minSupMax": "不能超过上限", + "components.Input.error.validation.regex": "该值不符合正则表达式。", + "components.Input.error.validation.required": "该值为必填项。", + "components.Input.error.validation.unique": "该值已被使用。", + "notification.success.submit": "设置已被更新", + "page.title": "设置 - 角色", + "plugin.description.long": "使用基于 JWT 的完整身份验证过程来保护 API。这个插件还有一个 ACL 策略,允许你管理用户组之间的权限。", + "plugin.description.short": "使用基于 JWT 的完整身份验证过程保护 API", + "plugin.name": "角色及权限", + "popUpWarning.button.cancel": "取消", + "popUpWarning.button.confirm": "确认", + "popUpWarning.title": "请确认", + "popUpWarning.warning.cancel": "你确定你要取消你的修改?" +} diff --git a/packages/strapi-borked/src/extensions/users-permissions/admin/src/translations/zh.json b/packages/strapi-borked/src/extensions/users-permissions/admin/src/translations/zh.json new file mode 100644 index 0000000..72d0624 --- /dev/null +++ b/packages/strapi-borked/src/extensions/users-permissions/admin/src/translations/zh.json @@ -0,0 +1,82 @@ +{ + "BoundRoute.title": "綁定路徑到", + "EditForm.inputSelect.description.role": "將新的驗證使用者加入此身份。", + "EditForm.inputSelect.label.role": "驗證使用者預設身份", + "EditForm.inputToggle.description.email": "禁止使用者使用同一個電子郵件地址 + 不同的驗證方式註冊多個帳號", + "EditForm.inputToggle.description.email-confirmation": "當啟用後,新註冊的使用者將會收到一封認證郵件。", + "EditForm.inputToggle.description.email-confirmation-redirection": "認證完後後,使用者被重新導向的網址。", + "EditForm.inputToggle.description.email-reset-password": "您的應用程式的重設密碼頁面的網址", + "EditForm.inputToggle.description.sign-up": "當停用後,不論使用任何驗證方式使用者將無法註冊。", + "EditForm.inputToggle.label.email": "電子郵件地址單一帳號限制", + "EditForm.inputToggle.label.email-confirmation": "啟用電子郵件地址驗證", + "EditForm.inputToggle.label.email-confirmation-redirection": "重新導向網址", + "EditForm.inputToggle.label.email-reset-password": "密碼重設頁面", + "EditForm.inputToggle.label.sign-up": "啟用註冊", + "EditForm.inputToggle.placeholder.email-confirmation-redirection": "例如:https://yourfrontend.com/email-confirmation-redirection", + "EditForm.inputToggle.placeholder.email-reset-password": "例如:https://yourfrontend.com/reset-password", + "EditPage.form.roles": "角色詳細資訊", + "Email.template.data.loaded": "已載入電子郵件範本", + "Email.template.email_confirmation": "電子郵件地址確認", + "Email.template.form.edit.label": "編輯範本", + "Email.template.table.action.label": "操作", + "Email.template.table.icon.label": "圖示", + "Email.template.table.name.label": "名稱", + "Form.advancedSettings.data.loaded": "已載入進階設定資料", + "HeaderNav.link.advancedSettings": "進階設定", + "HeaderNav.link.emailTemplates": "郵件範本", + "HeaderNav.link.providers": "驗證方式", + "Plugin.permissions.plugins.description": "為 {name} 擴充功能定義所有可用的操作", + "Plugins.header.description": "只有綁定路徑的操作會顯示在下方", + "Plugins.header.title": "權限", + "Policies.header.hint": "選取應用程式或擴充功能的操作然後點擊齒輪圖示以顯示綁定路徑", + "Policies.header.title": "進階設定", + "PopUpForm.Email.email_templates.inputDescription": "如果您不確定要怎麼使用變數,請 {link}", + "PopUpForm.Email.link.documentation": "查閱我們的說明文件。", + "PopUpForm.Email.options.from.email.label": "寄件人地址", + "PopUpForm.Email.options.from.email.placeholder": "kai@doe.com", + "PopUpForm.Email.options.from.name.label": "寄件人名稱", + "PopUpForm.Email.options.from.name.placeholder": "Kai Doe", + "PopUpForm.Email.options.message.label": "訊息", + "PopUpForm.Email.options.object.label": "主旨", + "PopUpForm.Email.options.object.placeholder": "請驗證 %APP_NAME% 的電子郵件地址", + "PopUpForm.Email.options.response_email.label": "回覆地址", + "PopUpForm.Email.options.response_email.placeholder": "kai@doe.com", + "PopUpForm.Providers.enabled.description": "如果停用,使用者將無法使用這個驗證方式", + "PopUpForm.Providers.enabled.label": "啟用", + "PopUpForm.Providers.key.label": "客戶端 ID", + "PopUpForm.Providers.key.placeholder": "TEXT", + "PopUpForm.Providers.redirectURL.front-end.label": "您應用程式的前端頁面網址", + "PopUpForm.Providers.redirectURL.label": "The redirect URL to add in your {provider} application configurations", + "PopUpForm.Providers.secret.label": "客戶端密鑰", + "PopUpForm.Providers.secret.placeholder": "TEXT", + "PopUpForm.Providers.subdomain.label": "Host URI (子網域)", + "PopUpForm.Providers.subdomain.placeholder": "my.subdomain.com", + "PopUpForm.header.edit.email-templates": "編輯郵件範本", + "PopUpForm.header.edit.providers": "編輯供應者", + "Providers.data.loaded": "已載入供應者", + "Providers.status": "狀態", + "Roles.empty": "您目前沒有任何角色。", + "Roles.empty.search": "沒有符合搜尋的角色。", + "Settings.roles.deleted": "已刪除角色", + "Settings.roles.edited": "已編輯角色", + "Settings.section-label": "使用者與權限外掛程式", + "components.Input.error.validation.email": "此電子郵件地址無效", + "components.Input.error.validation.json": "不符合 JSON 格式", + "components.Input.error.validation.max": "數值過高。", + "components.Input.error.validation.maxLength": "數值過長。", + "components.Input.error.validation.min": "數值過低。", + "components.Input.error.validation.minLength": "數值過短。", + "components.Input.error.validation.minSupMax": "Can't be superior", + "components.Input.error.validation.regex": "數值與 regex 不符。", + "components.Input.error.validation.required": "此數值為必填。", + "components.Input.error.validation.unique": "此值已被使用。", + "notification.success.submit": "設定已更新", + "page.title": "設定 - 角色", + "plugin.description.long": "使用 JWT 認證保護您的 API。這個擴充功能也使用 ACL 來讓你管理不同群組使用者的權限。", + "plugin.description.short": "使用 JWT 認證保護您的 API", + "plugin.name": "身份與權限", + "popUpWarning.button.cancel": "取消", + "popUpWarning.button.confirm": "確認", + "popUpWarning.title": "請確認", + "popUpWarning.warning.cancel": "您確定要取消變更嗎?" +} diff --git a/packages/strapi-borked/src/extensions/users-permissions/admin/src/utils/cleanPermissions.js b/packages/strapi-borked/src/extensions/users-permissions/admin/src/utils/cleanPermissions.js new file mode 100644 index 0000000..b50159a --- /dev/null +++ b/packages/strapi-borked/src/extensions/users-permissions/admin/src/utils/cleanPermissions.js @@ -0,0 +1,25 @@ +import isEmpty from 'lodash/isEmpty'; + +const cleanPermissions = (permissions) => + Object.keys(permissions).reduce((acc, current) => { + const currentPermission = permissions[current].controllers; + const cleanedControllers = Object.keys(currentPermission).reduce((acc2, curr) => { + if (isEmpty(currentPermission[curr])) { + return acc2; + } + + acc2[curr] = currentPermission[curr]; + + return acc2; + }, {}); + + if (isEmpty(cleanedControllers)) { + return acc; + } + + acc[current] = { controllers: cleanedControllers }; + + return acc; + }, {}); + +export default cleanPermissions; diff --git a/packages/strapi-borked/src/extensions/users-permissions/admin/src/utils/formatPluginName.js b/packages/strapi-borked/src/extensions/users-permissions/admin/src/utils/formatPluginName.js new file mode 100644 index 0000000..4dc7814 --- /dev/null +++ b/packages/strapi-borked/src/extensions/users-permissions/admin/src/utils/formatPluginName.js @@ -0,0 +1,26 @@ +import upperFirst from 'lodash/upperFirst'; + +function formatPluginName(pluginSlug) { + switch (pluginSlug) { + case 'application': + return 'Application'; + case 'plugin::content-manager': + return 'Content manager'; + case 'plugin::content-type-builder': + return 'Content types builder'; + case 'plugin::documentation': + return 'Documentation'; + case 'plugin::email': + return 'Email'; + case 'plugin::i18n': + return 'i18n'; + case 'plugin::upload': + return 'Upload'; + case 'plugin::users-permissions': + return 'Users-permissions'; + default: + return upperFirst(pluginSlug.replace('api::', '').replace('plugin::', '')); + } +} + +export default formatPluginName; diff --git a/packages/strapi-borked/src/extensions/users-permissions/admin/src/utils/formatPolicies.js b/packages/strapi-borked/src/extensions/users-permissions/admin/src/utils/formatPolicies.js new file mode 100644 index 0000000..8511f6b --- /dev/null +++ b/packages/strapi-borked/src/extensions/users-permissions/admin/src/utils/formatPolicies.js @@ -0,0 +1,8 @@ +const formatPolicies = (policies) => + policies.reduce((acc, current) => { + acc.push({ label: current, value: current }); + + return acc; + }, []); + +export default formatPolicies; diff --git a/packages/strapi-borked/src/extensions/users-permissions/admin/src/utils/getRequestURL.js b/packages/strapi-borked/src/extensions/users-permissions/admin/src/utils/getRequestURL.js new file mode 100644 index 0000000..226cfc2 --- /dev/null +++ b/packages/strapi-borked/src/extensions/users-permissions/admin/src/utils/getRequestURL.js @@ -0,0 +1,5 @@ +import pluginId from '../pluginId'; + +const getRequestURL = (endPoint) => `/${pluginId}/${endPoint}`; + +export default getRequestURL; diff --git a/packages/strapi-borked/src/extensions/users-permissions/admin/src/utils/getTrad.js b/packages/strapi-borked/src/extensions/users-permissions/admin/src/utils/getTrad.js new file mode 100644 index 0000000..d0a071b --- /dev/null +++ b/packages/strapi-borked/src/extensions/users-permissions/admin/src/utils/getTrad.js @@ -0,0 +1,5 @@ +import pluginId from '../pluginId'; + +const getTrad = (id) => `${pluginId}.${id}`; + +export default getTrad; diff --git a/packages/strapi-borked/src/extensions/users-permissions/admin/src/utils/index.js b/packages/strapi-borked/src/extensions/users-permissions/admin/src/utils/index.js new file mode 100644 index 0000000..61137b9 --- /dev/null +++ b/packages/strapi-borked/src/extensions/users-permissions/admin/src/utils/index.js @@ -0,0 +1,4 @@ +export { default as cleanPermissions } from './cleanPermissions'; +export { default as formatPolicies } from './formatPolicies'; +export { default as getRequestURL } from './getRequestURL'; +export { default as getTrad } from './getTrad'; diff --git a/packages/strapi-borked/src/extensions/users-permissions/content-types/user/schema.json b/packages/strapi-borked/src/extensions/users-permissions/content-types/user/schema.json new file mode 100644 index 0000000..a156044 --- /dev/null +++ b/packages/strapi-borked/src/extensions/users-permissions/content-types/user/schema.json @@ -0,0 +1,88 @@ +{ + "kind": "collectionType", + "collectionName": "up_users", + "info": { + "name": "user", + "description": "", + "singularName": "user", + "pluralName": "users", + "displayName": "User" + }, + "options": { + "draftAndPublish": false + }, + "attributes": { + "username": { + "type": "string", + "minLength": 3, + "unique": true, + "configurable": false, + "required": true + }, + "email": { + "type": "email", + "minLength": 6, + "configurable": false, + "required": true + }, + "provider": { + "type": "string", + "configurable": false + }, + "password": { + "type": "password", + "minLength": 6, + "configurable": false, + "private": true, + "searchable": false + }, + "resetPasswordToken": { + "type": "string", + "configurable": false, + "private": true, + "searchable": false + }, + "confirmationToken": { + "type": "string", + "configurable": false, + "private": true, + "searchable": false + }, + "confirmed": { + "type": "boolean", + "default": false, + "configurable": false + }, + "blocked": { + "type": "boolean", + "default": false, + "configurable": false + }, + "role": { + "type": "relation", + "relation": "manyToOne", + "target": "plugin::users-permissions.role", + "inversedBy": "users", + "configurable": false + }, + "isNamePublic": { + "type": "boolean", + "default": false + }, + "avatar": { + "type": "string", + "default": "http://placekitten.com/32/32" + }, + "isLinkPublic": { + "type": "boolean", + "default": false + }, + "vanityLink": { + "type": "string", + "maxLength": 256 + }, + "patreonBenefits": { + "type": "text" + } + } +} diff --git a/packages/strapi-borked/src/extensions/users-permissions/documentation/content-api.yaml b/packages/strapi-borked/src/extensions/users-permissions/documentation/content-api.yaml new file mode 100644 index 0000000..f00eb90 --- /dev/null +++ b/packages/strapi-borked/src/extensions/users-permissions/documentation/content-api.yaml @@ -0,0 +1,878 @@ +tags: + - name: 'Users-Permissions - Auth' + description: 'Authentication endpoints' + externalDocs: + description: 'Find out more' + url: 'https://docs.strapi.io/developer-docs/latest/plugins/users-permissions.html' + + - name: 'Users-Permissions - Users & Roles' + description: 'Users, roles, and permissions endpoints' + externalDocs: + description: 'Find out more' + url: 'https://docs.strapi.io/developer-docs/latest/plugins/users-permissions.html' + +paths: + /connect/{provider}: + get: + parameters: + - name: provider + in: path + required: true + description: Provider name + schema: + type: string + pattern: '.*' + tags: + - Users-Permissions - Auth + summary: Login with a provider + description: Redirects to provider login before being redirect to /auth/{provider}/callback + responses: + 301: + description: Redirect response + default: + description: Error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + /auth/local: + post: + tags: + - Users-Permissions - Auth + summary: Local login + description: Returns a jwt token and user info + requestBody: + content: + application/json: + schema: + type: object + properties: + identifier: + type: string + password: + type: string + example: + identifier: foobar + password: Test1234 + required: true + responses: + 200: + description: Connection + content: + application/json: + schema: + $ref: '#/components/schemas/Users-Permissions-UserRegistration' + default: + description: Error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + /auth/local/register: + post: + tags: + - Users-Permissions - Auth + summary: Register a user + description: Returns a jwt token and user info + requestBody: + content: + application/json: + schema: + type: object + properties: + username: + type: string + email: + type: string + password: + type: string + example: + username: foobar + email: foo.bar@strapi.io + password: Test1234 + required: true + responses: + 200: + description: Successfull registration + content: + application/json: + schema: + $ref: '#/components/schemas/Users-Permissions-UserRegistration' + default: + description: Error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + + /auth/{provider}/callback: + get: + tags: + - Users-Permissions - Auth + summary: Default Callback from provider auth + parameters: + - name: provider + in: path + required: true + description: Provider name + schema: + type: string + responses: + 200: + description: Returns a jwt token and user info + content: + application/json: + schema: + $ref: '#/components/schemas/Users-Permissions-UserRegistration' + default: + description: Error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + + /auth/forgot-password: + post: + tags: + - Users-Permissions - Auth + summary: Send rest password email + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + email: + type: string + example: + email: foo.bar@strapi.io + responses: + 200: + description: Returns ok + content: + application/json: + schema: + type: object + properties: + ok: + type: string + enum: [true] + default: + description: Error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + /auth/reset-password: + post: + tags: + - Users-Permissions - Auth + summary: Rest user password + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + password: + type: string + passwordConfirmation: + type: string + code: + type: string + example: + password: Test1234 + passwordConfirmation: Test1234 + code: zertyoaizndoianzodianzdonaizdoinaozdnia + responses: + 200: + description: Returns a jwt token and user info + content: + application/json: + schema: + $ref: '#/components/schemas/Users-Permissions-UserRegistration' + default: + description: Error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + + /auth/change-password: + post: + tags: + - Users-Permissions - Auth + summary: Update user's own password + requestBody: + required: true + content: + application/json: + schema: + type: object + required: + - password + - currentPassword + - passwordConfirmation + properties: + password: + type: string + currentPassword: + type: string + passwordConfirmation: + type: string + responses: + 200: + description: Returns a jwt token and user info + content: + application/json: + schema: + $ref: '#/components/schemas/Users-Permissions-UserRegistration' + default: + description: Error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + /auth/email-confirmation: + get: + tags: + - Users-Permissions - Auth + summary: Confirm user email + parameters: + - in: query + name: confirmation + schema: + type: string + description: confirmation token received by email + responses: + 301: + description: Redirects to the configure email confirmation redirect url + default: + description: Error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + + /auth/send-email-confirmation: + post: + tags: + - Users-Permissions - Auth + summary: Send confirmation email + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + email: + type: string + responses: + 200: + description: Returns email and boolean to confirm email was sent + content: + application/json: + schema: + type: object + properties: + email: + type: string + sent: + type: string + enum: [true] + default: + description: Error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + + /users-permissions/permissions: + get: + tags: + - Users-Permissions - Users & Roles + summary: Get default generated permissions + responses: + 200: + description: Returns the permissions tree + content: + application/json: + schema: + type: object + properties: + permissions: + $ref: '#/components/schemas/Users-Permissions-PermissionsTree' + example: + permissions: + api::content-type.content-type: + controllers: + controllerA: + find: + enabled: false + policy: '' + findOne: + enabled: false + policy: '' + create: + enabled: false + policy: '' + controllerB: + find: + enabled: false + policy: '' + findOne: + enabled: false + policy: '' + create: + enabled: false + policy: '' + default: + description: Error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + /users-permissions/roles: + get: + tags: + - Users-Permissions - Users & Roles + summary: List roles + responses: + 200: + description: Returns list of roles + content: + application/json: + schema: + type: object + properties: + roles: + type: array + items: + allOf: + - $ref: '#/components/schemas/Users-Permissions-Role' + - type: object + properties: + nb_users: + type: number + example: + roles: + - id: 1 + name: Public + description: Default role given to unauthenticated user. + type: public + createdAt: 2022-05-19T17:35:35.097Z + updatedAt: 2022-05-31T16:05:36.603Z + nb_users: 0 + + default: + description: Error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + + post: + tags: + - Users-Permissions - Users & Roles + summary: Create a role + requestBody: + $ref: '#/components/requestBodies/Users-Permissions-RoleRequest' + responses: + 200: + description: Returns ok if the role was create + content: + application/json: + schema: + type: object + properties: + ok: + type: string + enum: [true] + default: + description: Error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + + /users-permissions/roles/{id}: + get: + tags: + - Users-Permissions - Users & Roles + summary: Get a role + parameters: + - in: path + name: id + required: true + schema: + type: string + description: role Id + responses: + 200: + description: Returns the role + content: + application/json: + schema: + type: object + properties: + role: + $ref: '#/components/schemas/Users-Permissions-Role' + example: + role: + id: 1 + name: Public + description: Default role given to unauthenticated user. + type: public + createdAt: 2022-05-19T17:35:35.097Z + updatedAt: 2022-05-31T16:05:36.603Z + permissions: + api::content-type.content-type: + controllers: + controllerA: + find: + enabled: true + default: + description: Error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + + /users-permissions/roles/{role}: + put: + tags: + - Users-Permissions - Users & Roles + summary: Update a role + parameters: + - in: path + name: role + required: true + schema: + type: string + description: role Id + requestBody: + $ref: '#/components/requestBodies/Users-Permissions-RoleRequest' + responses: + 200: + description: Returns ok if the role was udpated + content: + application/json: + schema: + type: object + properties: + ok: + type: string + enum: [true] + default: + description: Error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + + delete: + tags: + - Users-Permissions - Users & Roles + summary: Delete a role + parameters: + - in: path + name: role + required: true + schema: + type: string + description: role Id + responses: + 200: + description: Returns ok if the role was delete + content: + application/json: + schema: + type: object + properties: + ok: + type: string + enum: [true] + default: + description: Error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + + /users: + get: + tags: + - Users-Permissions - Users & Roles + summary: Get list of users + responses: + 200: + description: Returns an array of users + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/Users-Permissions-User' + example: + - id: 9 + username: foao@strapi.io + email: foao@strapi.io + provider: local + confirmed: false + blocked: false + createdAt: 2022-06-01T18:32:35.211Z + updatedAt: 2022-06-01T18:32:35.217Z + default: + description: Error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + + post: + tags: + - Users-Permissions - Users & Roles + summary: Create a user + requestBody: + required: true + content: + application/json: + schema: + type: object + required: + - username + - email + - password + properties: + email: + type: string + username: + type: string + password: + type: string + example: + username: foo + email: foo@strapi.io + password: foo-password + responses: + 201: + description: Returns created user info + content: + application/json: + schema: + allOf: + - $ref: '#/components/schemas/Users-Permissions-User' + - type: object + properties: + role: + $ref: '#/components/schemas/Users-Permissions-Role' + example: + id: 1 + username: foo + email: foo@strapi.io + provider: local + confirmed: false + blocked: false + createdAt: 2022-05-19T17:35:35.096Z + updatedAt: 2022-05-19T17:35:35.096Z + role: + id: 1 + name: X + description: Default role given to authenticated user. + type: authenticated + createdAt: 2022-05-19T17:35:35.096Z + updatedAt: 2022-06-04T07:11:59.551Z + default: + description: Error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + /users/{id}: + get: + tags: + - Users-Permissions - Users & Roles + summary: Get a user + parameters: + - in: path + name: id + required: true + schema: + type: string + description: user Id + responses: + 200: + description: Returns a user + content: + application/json: + schema: + $ref: '#/components/schemas/Users-Permissions-User' + example: + id: 1 + username: foo + email: foo@strapi.io + provider: local + confirmed: false + blocked: false + createdAt: 2022-05-19T17:35:35.096Z + updatedAt: 2022-05-19T17:35:35.096Z + default: + description: Error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + put: + tags: + - Users-Permissions - Users & Roles + summary: Update a user + parameters: + - in: path + name: id + required: true + schema: + type: string + description: user Id + requestBody: + required: true + content: + application/json: + schema: + type: object + required: + - username + - email + - password + properties: + email: + type: string + username: + type: string + password: + type: string + example: + username: foo + email: foo@strapi.io + password: foo-password + responses: + 200: + description: Returns updated user info + content: + application/json: + schema: + allOf: + - $ref: '#/components/schemas/Users-Permissions-User' + - type: object + properties: + role: + $ref: '#/components/schemas/Users-Permissions-Role' + example: + id: 1 + username: foo + email: foo@strapi.io + provider: local + confirmed: false + blocked: false + createdAt: 2022-05-19T17:35:35.096Z + updatedAt: 2022-05-19T17:35:35.096Z + role: + id: 1 + name: X + description: Default role given to authenticated user. + type: authenticated + createdAt: 2022-05-19T17:35:35.096Z + updatedAt: 2022-06-04T07:11:59.551Z + default: + description: Error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + delete: + tags: + - Users-Permissions - Users & Roles + summary: Delete a user + parameters: + - in: path + name: id + required: true + schema: + type: string + description: user Id + responses: + '200': + description: Returns deleted user info + content: + application/json: + schema: + allOf: + - $ref: '#/components/schemas/Users-Permissions-User' + example: + id: 1 + username: foo + email: foo@strapi.io + provider: local + confirmed: false + blocked: false + createdAt: 2022-05-19T17:35:35.096Z + updatedAt: 2022-05-19T17:35:35.096Z + default: + description: Error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + /users/me: + get: + tags: + - Users-Permissions - Users & Roles + summary: Get authenticated user info + responses: + 200: + description: Returns user info + content: + application/json: + schema: + $ref: '#/components/schemas/Users-Permissions-User' + example: + id: 1 + username: foo + email: foo@strapi.io + provider: local + confirmed: false + blocked: false + createdAt: 2022-05-19T17:35:35.096Z + updatedAt: 2022-05-19T17:35:35.096Z + default: + description: Error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + + /users/count: + get: + tags: + - Users-Permissions - Users & Roles + summary: Get user count + responses: + 200: + description: Returns a number + content: + application/json: + schema: + type: number + example: 1 + default: + description: Error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + +components: + schemas: + Users-Permissions-Role: + type: object + properties: + id: + type: number + name: + type: string + description: + type: string + type: + type: string + createdAt: + type: string + format: date-time + updatedAt: + type: string + format: date-time + + Users-Permissions-User: + type: object + properties: + id: + type: number + example: 1 + username: + type: string + example: 'foo.bar' + email: + type: string + example: 'foo.bar@strapi.io' + provider: + type: string + example: 'local' + confirmed: + type: boolean + example: true + blocked: + type: boolean + example: false + createdAt: + type: string + format: date-time + example: '2022-06-02T08:32:06.258Z' + updatedAt: + type: string + format: date-time + example: '2022-06-02T08:32:06.267Z' + + Users-Permissions-UserRegistration: + type: object + properties: + jwt: + type: string + example: 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c' + user: + $ref: '#/components/schemas/Users-Permissions-User' + + Users-Permissions-PermissionsTree: + type: object + additionalProperties: + type: object + description: every api + properties: + controllers: + description: every controller of the api + type: object + additionalProperties: + type: object + additionalProperties: + description: every action of every controller + type: object + properties: + enabled: + type: boolean + policy: + type: string + requestBodies: + Users-Permissions-RoleRequest: + required: true + content: + application/json: + schema: + type: object + properties: + name: + type: string + description: + type: string + type: + type: string + permissions: + $ref: '#/components/schemas/Users-Permissions-PermissionsTree' + example: + name: foo + description: role foo + permissions: + api::content-type.content-type: + controllers: + controllerA: + find: + enabled: true diff --git a/packages/strapi-borked/src/extensions/users-permissions/jest.config.front.js b/packages/strapi-borked/src/extensions/users-permissions/jest.config.front.js new file mode 100644 index 0000000..3e8054a --- /dev/null +++ b/packages/strapi-borked/src/extensions/users-permissions/jest.config.front.js @@ -0,0 +1,7 @@ +'use strict'; + +module.exports = { + preset: '../../../jest-preset.front.js', + displayName: 'Users & Permissions plugin', + setupFilesAfterEnv: ['./tests/setup.js'], +}; diff --git a/packages/strapi-borked/src/extensions/users-permissions/package.json b/packages/strapi-borked/src/extensions/users-permissions/package.json new file mode 100644 index 0000000..5305e84 --- /dev/null +++ b/packages/strapi-borked/src/extensions/users-permissions/package.json @@ -0,0 +1,81 @@ +{ + "name": "@strapi/plugin-users-permissions", + "version": "4.11.2", + "description": "Protect your API with a full-authentication process based on JWT", + "repository": { + "type": "git", + "url": "git://github.com/strapi/strapi.git" + }, + "license": "SEE LICENSE IN LICENSE", + "author": { + "name": "Strapi Solutions SAS", + "email": "hi@strapi.io", + "url": "https://strapi.io" + }, + "maintainers": [ + { + "name": "Strapi Solutions SAS", + "email": "hi@strapi.io", + "url": "https://strapi.io" + } + ], + "scripts": { + "test:unit": "run -T jest", + "test:unit:watch": "run -T jest --watch", + "test:front": "run -T cross-env IS_EE=true jest --config ./jest.config.front.js", + "test:front:watch": "run -T cross-env IS_EE=true jest --config ./jest.config.front.js --watchAll", + "test:front:ce": "run -T cross-env IS_EE=false jest --config ./jest.config.front.js", + "test:front:watch:ce": "run -T cross-env IS_EE=false jest --config ./jest.config.front.js --watchAll", + "lint": "run -T eslint ." + }, + "dependencies": { + "@strapi/design-system": "1.8.0", + "@strapi/helper-plugin": "4.11.2", + "@strapi/icons": "1.8.0", + "@strapi/utils": "4.11.2", + "bcryptjs": "2.4.3", + "formik": "2.4.0", + "grant-koa": "5.4.8", + "immer": "9.0.19", + "jsonwebtoken": "9.0.0", + "jwk-to-pem": "2.0.5", + "koa": "^2.13.4", + "koa2-ratelimit": "^1.1.2", + "lodash": "4.17.21", + "prop-types": "^15.8.1", + "purest": "4.0.2", + "react-intl": "6.4.1", + "react-query": "3.39.3", + "react-redux": "8.0.5", + "url-join": "4.0.1", + "yup": "^0.32.9" + }, + "devDependencies": { + "@testing-library/dom": "9.2.0", + "@testing-library/react": "14.0.0", + "@testing-library/user-event": "14.4.3", + "msw": "1.2.1", + "react": "^18.2.0", + "react-dom": "^18.2.0", + "react-router-dom": "5.3.4", + "styled-components": "5.3.3" + }, + "peerDependencies": { + "react": "^17.0.0 || ^18.0.0", + "react-dom": "^17.0.0 || ^18.0.0", + "react-router-dom": "5.3.4", + "styled-components": "5.3.3" + }, + "engines": { + "node": ">=14.19.1 <=18.x.x", + "npm": ">=6.0.0" + }, + "strapi": { + "displayName": "Roles & Permissions", + "name": "users-permissions", + "description": "Protect your API with a full authentication process based on JWT. This plugin comes also with an ACL strategy that allows you to manage the permissions between the groups of users.", + "required": true, + "kind": "plugin" + }, + "gitHead": "6f7c815c2bbe41dda7d77136eb8df736c028ff67" +} diff --git a/packages/strapi-borked/src/extensions/users-permissions/server/bootstrap/grant-config.js b/packages/strapi-borked/src/extensions/users-permissions/server/bootstrap/grant-config.js new file mode 100644 index 0000000..31c612c --- /dev/null +++ b/packages/strapi-borked/src/extensions/users-permissions/server/bootstrap/grant-config.js @@ -0,0 +1,131 @@ +'use strict'; + +module.exports = (baseURL) => ({ + email: { + enabled: true, + icon: 'envelope', + }, + discord: { + enabled: false, + icon: 'discord', + key: '', + secret: '', + callback: `${baseURL}/discord/callback`, + scope: ['identify', 'email'], + }, + facebook: { + enabled: false, + icon: 'facebook-square', + key: '', + secret: '', + callback: `${baseURL}/facebook/callback`, + scope: ['email'], + }, + google: { + enabled: false, + icon: 'google', + key: '', + secret: '', + callback: `${baseURL}/google/callback`, + scope: ['email'], + }, + github: { + enabled: false, + icon: 'github', + key: '', + secret: '', + callback: `${baseURL}/github/callback`, + scope: ['user', 'user:email'], + }, + microsoft: { + enabled: false, + icon: 'windows', + key: '', + secret: '', + callback: `${baseURL}/microsoft/callback`, + scope: ['user.read'], + }, + twitter: { + enabled: false, + icon: 'twitter', + key: '', + secret: '', + callback: `${baseURL}/twitter/callback`, + }, + instagram: { + enabled: false, + icon: 'instagram', + key: '', + secret: '', + callback: `${baseURL}/instagram/callback`, + scope: ['user_profile'], + }, + vk: { + enabled: false, + icon: 'vk', + key: '', + secret: '', + callback: `${baseURL}/vk/callback`, + scope: ['email'], + }, + twitch: { + enabled: false, + icon: 'twitch', + key: '', + secret: '', + callback: `${baseURL}/twitch/callback`, + scope: ['user:read:email'], + }, + linkedin: { + enabled: false, + icon: 'linkedin', + key: '', + secret: '', + callback: `${baseURL}/linkedin/callback`, + scope: ['r_liteprofile', 'r_emailaddress'], + }, + cognito: { + enabled: false, + icon: 'aws', + key: '', + secret: '', + subdomain: 'my.subdomain.com', + callback: `${baseURL}/cognito/callback`, + scope: ['email', 'openid', 'profile'], + }, + reddit: { + enabled: false, + icon: 'reddit', + key: '', + secret: '', + state: true, + callback: `${baseURL}/reddit/callback`, + scope: ['identity'], + }, + auth0: { + enabled: false, + icon: '', + key: '', + secret: '', + subdomain: 'my-tenant.eu', + callback: `${baseURL}/auth0/callback`, + scope: ['openid', 'email', 'profile'], + }, + cas: { + enabled: false, + icon: 'book', + key: '', + secret: '', + callback: `${baseURL}/cas/callback`, + scope: ['openid email'], // scopes should be space delimited + subdomain: 'my.subdomain.com/cas', + }, + patreon: { + enabled: false, + icon: '', + key: '', + secret: '', + callback: `${baseURL}/patreon/callback`, + scope: ['identity', 'identity[email]'], + }, +}); diff --git a/packages/strapi-borked/src/extensions/users-permissions/server/bootstrap/index.js b/packages/strapi-borked/src/extensions/users-permissions/server/bootstrap/index.js new file mode 100644 index 0000000..8d3f020 --- /dev/null +++ b/packages/strapi-borked/src/extensions/users-permissions/server/bootstrap/index.js @@ -0,0 +1,133 @@ +'use strict'; + +/** + * An asynchronous bootstrap function that runs before + * your application gets started. + * + * This gives you an opportunity to set up your data model, + * run jobs, or perform some special logic. + */ +const crypto = require('crypto'); +const _ = require('lodash'); +const urljoin = require('url-join'); +const { getService } = require('../utils'); +const getGrantConfig = require('./grant-config'); + +const usersPermissionsActions = require('./users-permissions-actions'); + +const initGrant = async (pluginStore) => { + const apiPrefix = strapi.config.get('api.rest.prefix'); + const baseURL = urljoin(strapi.config.server.url, apiPrefix, 'auth'); + + const grantConfig = getGrantConfig(baseURL); + + const prevGrantConfig = (await pluginStore.get({ key: 'grant' })) || {}; + // store grant auth config to db + // when plugin_users-permissions_grant is not existed in db + // or we have added/deleted provider here. + if (!prevGrantConfig || !_.isEqual(_.keys(prevGrantConfig), _.keys(grantConfig))) { + // merge with the previous provider config. + _.keys(grantConfig).forEach((key) => { + if (key in prevGrantConfig) { + grantConfig[key] = _.merge(grantConfig[key], prevGrantConfig[key]); + } + }); + await pluginStore.set({ key: 'grant', value: grantConfig }); + } +}; + +const initEmails = async (pluginStore) => { + if (!(await pluginStore.get({ key: 'email' }))) { + const value = { + reset_password: { + display: 'Email.template.reset_password', + icon: 'sync', + options: { + from: { + name: 'Administration Panel', + email: 'no-reply@strapi.io', + }, + response_email: '', + object: 'Reset password', + message: `+ ++ + + + We heard that you lost your password. Sorry about that!
+ +But don’t worry! You can use the following link to reset your password:
+<%= URL %>?code=<%= TOKEN %>
+ +Thanks.
`, + }, + }, + email_confirmation: { + display: 'Email.template.email_confirmation', + icon: 'check-square', + options: { + from: { + name: 'Administration Panel', + email: 'no-reply@strapi.io', + }, + response_email: '', + object: 'Account confirmation', + message: `Thank you for registering!
+ +You have to confirm your email address. Please click on the link below.
+ +<%= URL %>?confirmation=<%= CODE %>
+ +Thanks.
`, + }, + }, + }; + + await pluginStore.set({ key: 'email', value }); + } +}; + +const initAdvancedOptions = async (pluginStore) => { + if (!(await pluginStore.get({ key: 'advanced' }))) { + const value = { + unique_email: true, + allow_register: true, + email_confirmation: false, + email_reset_password: null, + email_confirmation_redirection: null, + default_role: 'authenticated', + }; + + await pluginStore.set({ key: 'advanced', value }); + } +}; + +module.exports = async ({ strapi }) => { + const pluginStore = strapi.store({ type: 'plugin', name: 'users-permissions' }); + + await initGrant(pluginStore); + await initEmails(pluginStore); + await initAdvancedOptions(pluginStore); + + await strapi.admin.services.permission.actionProvider.registerMany( + usersPermissionsActions.actions + ); + + await getService('users-permissions').initialize(); + + if (!strapi.config.get('plugin.users-permissions.jwtSecret')) { + if (process.env.NODE_ENV !== 'development') { + throw new Error( + `Missing jwtSecret. Please, set configuration variable "jwtSecret" for the users-permissions plugin in config/plugins.js (ex: you can generate one using Node with \`crypto.randomBytes(16).toString('base64')\`). +For security reasons, prefer storing the secret in an environment variable and read it in config/plugins.js. See https://docs.strapi.io/developer-docs/latest/setup-deployment-guides/configurations/optional/environment.html#configuration-using-environment-variables.` + ); + } + + const jwtSecret = crypto.randomBytes(16).toString('base64'); + + strapi.config.set('plugin.users-permissions.jwtSecret', jwtSecret); + + if (!process.env.JWT_SECRET) { + const envPath = process.env.ENV_PATH || '.env'; + strapi.fs.appendFile(envPath, `JWT_SECRET=${jwtSecret}\n`); + strapi.log.info( + `The Users & Permissions plugin automatically generated a jwt secret and stored it in ${envPath} under the name JWT_SECRET.` + ); + } + } +}; diff --git a/packages/strapi-borked/src/extensions/users-permissions/server/bootstrap/users-permissions-actions.js b/packages/strapi-borked/src/extensions/users-permissions/server/bootstrap/users-permissions-actions.js new file mode 100644 index 0000000..f017103 --- /dev/null +++ b/packages/strapi-borked/src/extensions/users-permissions/server/bootstrap/users-permissions-actions.js @@ -0,0 +1,80 @@ +'use strict'; + +module.exports = { + actions: [ + { + // Roles + section: 'plugins', + displayName: 'Create', + uid: 'roles.create', + subCategory: 'roles', + pluginName: 'users-permissions', + }, + { + section: 'plugins', + displayName: 'Read', + uid: 'roles.read', + subCategory: 'roles', + pluginName: 'users-permissions', + }, + { + section: 'plugins', + displayName: 'Update', + uid: 'roles.update', + subCategory: 'roles', + pluginName: 'users-permissions', + }, + { + section: 'plugins', + displayName: 'Delete', + uid: 'roles.delete', + subCategory: 'roles', + pluginName: 'users-permissions', + }, + { + // providers + section: 'plugins', + displayName: 'Read', + uid: 'providers.read', + subCategory: 'providers', + pluginName: 'users-permissions', + }, + { + section: 'plugins', + displayName: 'Edit', + uid: 'providers.update', + subCategory: 'providers', + pluginName: 'users-permissions', + }, + { + // emailTemplates + section: 'plugins', + displayName: 'Read', + uid: 'email-templates.read', + subCategory: 'emailTemplates', + pluginName: 'users-permissions', + }, + { + section: 'plugins', + displayName: 'Edit', + uid: 'email-templates.update', + subCategory: 'emailTemplates', + pluginName: 'users-permissions', + }, + { + // advancedSettings + section: 'plugins', + displayName: 'Read', + uid: 'advanced-settings.read', + subCategory: 'advancedSettings', + pluginName: 'users-permissions', + }, + { + section: 'plugins', + displayName: 'Edit', + uid: 'advanced-settings.update', + subCategory: 'advancedSettings', + pluginName: 'users-permissions', + }, + ], +}; diff --git a/packages/strapi-borked/src/extensions/users-permissions/server/config.js b/packages/strapi-borked/src/extensions/users-permissions/server/config.js new file mode 100644 index 0000000..05b16a8 --- /dev/null +++ b/packages/strapi-borked/src/extensions/users-permissions/server/config.js @@ -0,0 +1,23 @@ +'use strict'; + +module.exports = { + default: ({ env }) => ({ + jwtSecret: env('JWT_SECRET'), + jwt: { + expiresIn: '30d', + }, + ratelimit: { + interval: 60000, + max: 10, + }, + layout: { + user: { + actions: { + create: 'contentManagerUser.create', // Use the User plugin's controller. + update: 'contentManagerUser.update', + }, + }, + }, + }), + validator() {}, +}; diff --git a/packages/strapi-borked/src/extensions/users-permissions/server/content-types/index.js b/packages/strapi-borked/src/extensions/users-permissions/server/content-types/index.js new file mode 100644 index 0000000..8476e7d --- /dev/null +++ b/packages/strapi-borked/src/extensions/users-permissions/server/content-types/index.js @@ -0,0 +1,11 @@ +'use strict'; + +const permission = require('./permission'); +const role = require('./role'); +const user = require('./user'); + +module.exports = { + permission: { schema: permission }, + role: { schema: role }, + user: { schema: user }, +}; diff --git a/packages/strapi-borked/src/extensions/users-permissions/server/content-types/permission/index.js b/packages/strapi-borked/src/extensions/users-permissions/server/content-types/permission/index.js new file mode 100644 index 0000000..70648c8 --- /dev/null +++ b/packages/strapi-borked/src/extensions/users-permissions/server/content-types/permission/index.js @@ -0,0 +1,34 @@ +'use strict'; + +module.exports = { + collectionName: 'up_permissions', + info: { + name: 'permission', + description: '', + singularName: 'permission', + pluralName: 'permissions', + displayName: 'Permission', + }, + pluginOptions: { + 'content-manager': { + visible: false, + }, + 'content-type-builder': { + visible: false, + }, + }, + attributes: { + action: { + type: 'string', + required: true, + configurable: false, + }, + role: { + type: 'relation', + relation: 'manyToOne', + target: 'plugin::users-permissions.role', + inversedBy: 'permissions', + configurable: false, + }, + }, +}; diff --git a/packages/strapi-borked/src/extensions/users-permissions/server/content-types/role/index.js b/packages/strapi-borked/src/extensions/users-permissions/server/content-types/role/index.js new file mode 100644 index 0000000..ceb45c6 --- /dev/null +++ b/packages/strapi-borked/src/extensions/users-permissions/server/content-types/role/index.js @@ -0,0 +1,51 @@ +'use strict'; + +module.exports = { + collectionName: 'up_roles', + info: { + name: 'role', + description: '', + singularName: 'role', + pluralName: 'roles', + displayName: 'Role', + }, + pluginOptions: { + 'content-manager': { + visible: false, + }, + 'content-type-builder': { + visible: false, + }, + }, + attributes: { + name: { + type: 'string', + minLength: 3, + required: true, + configurable: false, + }, + description: { + type: 'string', + configurable: false, + }, + type: { + type: 'string', + unique: true, + configurable: false, + }, + permissions: { + type: 'relation', + relation: 'oneToMany', + target: 'plugin::users-permissions.permission', + mappedBy: 'role', + configurable: false, + }, + users: { + type: 'relation', + relation: 'oneToMany', + target: 'plugin::users-permissions.user', + mappedBy: 'role', + configurable: false, + }, + }, +}; diff --git a/packages/strapi-borked/src/extensions/users-permissions/server/content-types/user/index.js b/packages/strapi-borked/src/extensions/users-permissions/server/content-types/user/index.js new file mode 100644 index 0000000..d999d98 --- /dev/null +++ b/packages/strapi-borked/src/extensions/users-permissions/server/content-types/user/index.js @@ -0,0 +1,75 @@ +'use strict'; + +const schemaConfig = require('./schema-config'); + +module.exports = { + collectionName: 'up_users', + info: { + name: 'user', + description: '', + singularName: 'user', + pluralName: 'users', + displayName: 'User', + }, + options: { + draftAndPublish: false, + timestamps: true, + }, + attributes: { + username: { + type: 'string', + minLength: 3, + unique: true, + configurable: false, + required: true, + }, + email: { + type: 'email', + minLength: 6, + configurable: false, + required: true, + }, + provider: { + type: 'string', + configurable: false, + }, + password: { + type: 'password', + minLength: 6, + configurable: false, + private: true, + searchable: false, + }, + resetPasswordToken: { + type: 'string', + configurable: false, + private: true, + searchable: false, + }, + confirmationToken: { + type: 'string', + configurable: false, + private: true, + searchable: false, + }, + confirmed: { + type: 'boolean', + default: false, + configurable: false, + }, + blocked: { + type: 'boolean', + default: false, + configurable: false, + }, + role: { + type: 'relation', + relation: 'manyToOne', + target: 'plugin::users-permissions.role', + inversedBy: 'users', + configurable: false, + }, + }, + + config: schemaConfig, // TODO: to move to content-manager options +}; diff --git a/packages/strapi-borked/src/extensions/users-permissions/server/content-types/user/schema-config.js b/packages/strapi-borked/src/extensions/users-permissions/server/content-types/user/schema-config.js new file mode 100644 index 0000000..7442cd1 --- /dev/null +++ b/packages/strapi-borked/src/extensions/users-permissions/server/content-types/user/schema-config.js @@ -0,0 +1,15 @@ +'use strict'; + +module.exports = { + attributes: { + resetPasswordToken: { + hidden: true, + }, + confirmationToken: { + hidden: true, + }, + provider: { + hidden: true, + }, + }, +}; diff --git a/packages/strapi-borked/src/extensions/users-permissions/server/controllers/auth.js b/packages/strapi-borked/src/extensions/users-permissions/server/controllers/auth.js new file mode 100644 index 0000000..02821f7 --- /dev/null +++ b/packages/strapi-borked/src/extensions/users-permissions/server/controllers/auth.js @@ -0,0 +1,416 @@ +'use strict'; + +/** + * Auth.js controller + * + * @description: A set of functions called "actions" for managing `Auth`. + */ + +/* eslint-disable no-useless-escape */ +const crypto = require('crypto'); +const _ = require('lodash'); +const utils = require('@strapi/utils'); +const { getService } = require('../utils'); +const { + validateCallbackBody, + validateRegisterBody, + validateSendEmailConfirmationBody, + validateForgotPasswordBody, + validateResetPasswordBody, + validateEmailConfirmationBody, + validateChangePasswordBody, +} = require('./validation/auth'); + +const { getAbsoluteAdminUrl, getAbsoluteServerUrl, sanitize } = utils; +const { ApplicationError, ValidationError } = utils.errors; + +const sanitizeUser = (user, ctx) => { + const { auth } = ctx.state; + const userSchema = strapi.getModel('plugin::users-permissions.user'); + + return sanitize.contentAPI.output(user, userSchema, { auth }); +}; + +module.exports = { + async callback(ctx) { + const provider = ctx.params.provider || 'local'; + const params = ctx.request.body; + + const store = strapi.store({ type: 'plugin', name: 'users-permissions' }); + const grantSettings = await store.get({ key: 'grant' }); + + const grantProvider = provider === 'local' ? 'email' : provider; + + if (!_.get(grantSettings, [grantProvider, 'enabled'])) { + throw new ApplicationError('This provider is disabled'); + } + + if (provider === 'local') { + await validateCallbackBody(params); + + const { identifier } = params; + + // Check if the user exists. + const user = await strapi.query('plugin::users-permissions.user').findOne({ + where: { + provider, + $or: [{ email: identifier.toLowerCase() }, { username: identifier }], + }, + }); + + if (!user) { + throw new ValidationError('Invalid identifier or password'); + } + + if (!user.password) { + throw new ValidationError('Invalid identifier or password'); + } + + const validPassword = await getService('user').validatePassword( + params.password, + user.password + ); + + if (!validPassword) { + throw new ValidationError('Invalid identifier or password'); + } + + const advancedSettings = await store.get({ key: 'advanced' }); + const requiresConfirmation = _.get(advancedSettings, 'email_confirmation'); + + if (requiresConfirmation && user.confirmed !== true) { + throw new ApplicationError('Your account email is not confirmed'); + } + + if (user.blocked === true) { + throw new ApplicationError('Your account has been blocked by an administrator'); + } + + return ctx.send({ + jwt: getService('jwt').issue({ id: user.id }), + user: await sanitizeUser(user, ctx), + }); + } + + // Connect the user with the third-party provider. + try { + const user = await getService('providers').connect(provider, ctx.query); + + return ctx.send({ + jwt: getService('jwt').issue({ id: user.id }), + user: await sanitizeUser(user, ctx), + }); + } catch (error) { + throw new ApplicationError(error.message); + } + }, + + async changePassword(ctx) { + if (!ctx.state.user) { + throw new ApplicationError('You must be authenticated to reset your password'); + } + + const { currentPassword, password } = await validateChangePasswordBody(ctx.request.body); + + const user = await strapi.entityService.findOne( + 'plugin::users-permissions.user', + ctx.state.user.id + ); + + const validPassword = await getService('user').validatePassword(currentPassword, user.password); + + if (!validPassword) { + throw new ValidationError('The provided current password is invalid'); + } + + if (currentPassword === password) { + throw new ValidationError('Your new password must be different than your current password'); + } + + await getService('user').edit(user.id, { password }); + + ctx.send({ + jwt: getService('jwt').issue({ id: user.id }), + user: await sanitizeUser(user, ctx), + }); + }, + + async resetPassword(ctx) { + const { password, passwordConfirmation, code } = await validateResetPasswordBody( + ctx.request.body + ); + + if (password !== passwordConfirmation) { + throw new ValidationError('Passwords do not match'); + } + + const user = await strapi + .query('plugin::users-permissions.user') + .findOne({ where: { resetPasswordToken: code } }); + + if (!user) { + throw new ValidationError('Incorrect code provided'); + } + + await getService('user').edit(user.id, { + resetPasswordToken: null, + password, + }); + + // Update the user. + ctx.send({ + jwt: getService('jwt').issue({ id: user.id }), + user: await sanitizeUser(user, ctx), + }); + }, + + async connect(ctx, next) { + const grant = require('grant-koa'); + + const providers = await strapi + .store({ type: 'plugin', name: 'users-permissions', key: 'grant' }) + .get(); + + const apiPrefix = strapi.config.get('api.rest.prefix'); + const grantConfig = { + defaults: { + prefix: `${apiPrefix}/connect`, + }, + ...providers, + }; + + const [requestPath] = ctx.request.url.split('?'); + const provider = requestPath.split('/connect/')[1].split('/')[0]; + + if (!_.get(grantConfig[provider], 'enabled')) { + throw new ApplicationError('This provider is disabled'); + } + + if (!strapi.config.server.url.startsWith('http')) { + strapi.log.warn( + 'You are using a third party provider for login. Make sure to set an absolute url in config/server.js. More info here: https://docs.strapi.io/developer-docs/latest/plugins/users-permissions.html#setting-up-the-server-url' + ); + } + + // Ability to pass OAuth callback dynamically + grantConfig[provider].callback = + _.get(ctx, 'query.callback') || + _.get(ctx, 'session.grant.dynamic.callback') || + grantConfig[provider].callback; + grantConfig[provider].redirect_uri = getService('providers').buildRedirectUri(provider); + + return grant(grantConfig)(ctx, next); + }, + + async forgotPassword(ctx) { + const { email } = await validateForgotPasswordBody(ctx.request.body); + + const pluginStore = await strapi.store({ type: 'plugin', name: 'users-permissions' }); + + const emailSettings = await pluginStore.get({ key: 'email' }); + const advancedSettings = await pluginStore.get({ key: 'advanced' }); + + // Find the user by email. + const user = await strapi + .query('plugin::users-permissions.user') + .findOne({ where: { email: email.toLowerCase() } }); + + if (!user || user.blocked) { + return ctx.send({ ok: true }); + } + + // Generate random token. + const userInfo = await sanitizeUser(user, ctx); + + const resetPasswordToken = crypto.randomBytes(64).toString('hex'); + + const resetPasswordSettings = _.get(emailSettings, 'reset_password.options', {}); + const emailBody = await getService('users-permissions').template( + resetPasswordSettings.message, + { + URL: advancedSettings.email_reset_password, + SERVER_URL: getAbsoluteServerUrl(strapi.config), + ADMIN_URL: getAbsoluteAdminUrl(strapi.config), + USER: userInfo, + TOKEN: resetPasswordToken, + } + ); + + const emailObject = await getService('users-permissions').template( + resetPasswordSettings.object, + { + USER: userInfo, + } + ); + + const emailToSend = { + to: user.email, + from: + resetPasswordSettings.from.email || resetPasswordSettings.from.name + ? `${resetPasswordSettings.from.name} <${resetPasswordSettings.from.email}>` + : undefined, + replyTo: resetPasswordSettings.response_email, + subject: emailObject, + text: emailBody, + html: emailBody, + }; + + // NOTE: Update the user before sending the email so an Admin can generate the link if the email fails + await getService('user').edit(user.id, { resetPasswordToken }); + + // Send an email to the user. + await strapi.plugin('email').service('email').send(emailToSend); + + ctx.send({ ok: true }); + }, + + async register(ctx) { + const pluginStore = await strapi.store({ type: 'plugin', name: 'users-permissions' }); + + const settings = await pluginStore.get({ key: 'advanced' }); + + if (!settings.allow_register) { + throw new ApplicationError('Register action is currently disabled'); + } + + const params = { + ..._.omit(ctx.request.body, [ + 'confirmed', + 'blocked', + 'confirmationToken', + 'resetPasswordToken', + 'provider', + 'id', + 'createdAt', + 'updatedAt', + 'createdBy', + 'updatedBy', + 'role', + ]), + provider: 'local', + }; + + await validateRegisterBody(params); + + const role = await strapi + .query('plugin::users-permissions.role') + .findOne({ where: { type: settings.default_role } }); + + if (!role) { + throw new ApplicationError('Impossible to find the default role'); + } + + const { email, username, provider } = params; + + const identifierFilter = { + $or: [ + { email: email.toLowerCase() }, + { username: email.toLowerCase() }, + { username }, + { email: username }, + ], + }; + + const conflictingUserCount = await strapi.query('plugin::users-permissions.user').count({ + where: { ...identifierFilter, provider }, + }); + + if (conflictingUserCount > 0) { + throw new ApplicationError('Email or Username are already taken'); + } + + if (settings.unique_email) { + const conflictingUserCount = await strapi.query('plugin::users-permissions.user').count({ + where: { ...identifierFilter }, + }); + + if (conflictingUserCount > 0) { + throw new ApplicationError('Email or Username are already taken'); + } + } + + const newUser = { + ...params, + role: role.id, + email: email.toLowerCase(), + username, + confirmed: !settings.email_confirmation, + }; + + const user = await getService('user').add(newUser); + + const sanitizedUser = await sanitizeUser(user, ctx); + + if (settings.email_confirmation) { + try { + await getService('user').sendConfirmationEmail(sanitizedUser); + } catch (err) { + throw new ApplicationError(err.message); + } + + return ctx.send({ user: sanitizedUser }); + } + + const jwt = getService('jwt').issue(_.pick(user, ['id'])); + + return ctx.send({ + jwt, + user: sanitizedUser, + }); + }, + + async emailConfirmation(ctx, next, returnUser) { + const { confirmation: confirmationToken } = await validateEmailConfirmationBody(ctx.query); + + const userService = getService('user'); + const jwtService = getService('jwt'); + + const [user] = await userService.fetchAll({ filters: { confirmationToken } }); + + if (!user) { + throw new ValidationError('Invalid token'); + } + + await userService.edit(user.id, { confirmed: true, confirmationToken: null }); + + if (returnUser) { + ctx.send({ + jwt: jwtService.issue({ id: user.id }), + user: await sanitizeUser(user, ctx), + }); + } else { + const settings = await strapi + .store({ type: 'plugin', name: 'users-permissions', key: 'advanced' }) + .get(); + + ctx.redirect(settings.email_confirmation_redirection || '/'); + } + }, + + async sendEmailConfirmation(ctx) { + const { email } = await validateSendEmailConfirmationBody(ctx.request.body); + + const user = await strapi.query('plugin::users-permissions.user').findOne({ + where: { email: email.toLowerCase() }, + }); + + if (!user) { + return ctx.send({ email, sent: true }); + } + + if (user.confirmed) { + throw new ApplicationError('Already confirmed'); + } + + if (user.blocked) { + throw new ApplicationError('User blocked'); + } + + await getService('user').sendConfirmationEmail(user); + + ctx.send({ + email: user.email, + sent: true, + }); + }, +}; diff --git a/packages/strapi-borked/src/extensions/users-permissions/server/controllers/content-manager-user.js b/packages/strapi-borked/src/extensions/users-permissions/server/controllers/content-manager-user.js new file mode 100644 index 0000000..f003a2f --- /dev/null +++ b/packages/strapi-borked/src/extensions/users-permissions/server/controllers/content-manager-user.js @@ -0,0 +1,178 @@ +'use strict'; + +const _ = require('lodash'); +const { contentTypes: contentTypesUtils } = require('@strapi/utils'); +const { ApplicationError, ValidationError, NotFoundError, ForbiddenError } = + require('@strapi/utils').errors; +const { validateCreateUserBody, validateUpdateUserBody } = require('./validation/user'); + +const { UPDATED_BY_ATTRIBUTE, CREATED_BY_ATTRIBUTE } = contentTypesUtils.constants; + +console.log(`>>>> Hey, it's me. Your sleep paralysis demon. I wanted to take this moment to console.log contentTypes in this content-manager-user.js file, because I'm having to debug this little shit of a program, Strapi js. (contentTypes is as follows)`) +console.log(contentTypes) + +const userModel = 'plugin::users-permissions.user'; +const ACTIONS = { + read: 'plugin::content-manager.explorer.read', + create: 'plugin::content-manager.explorer.create', + edit: 'plugin::content-manager.explorer.update', + delete: 'plugin::content-manager.explorer.delete', +}; + +const findEntityAndCheckPermissions = async (ability, action, model, id) => { + const entity = await strapi.query(userModel).findOne({ + where: { id }, + populate: [`${CREATED_BY_ATTRIBUTE}.roles`], + }); + + if (_.isNil(entity)) { + throw new NotFoundError(); + } + + const pm = strapi.admin.services.permission.createPermissionsManager({ ability, action, model }); + + if (pm.ability.cannot(pm.action, pm.toSubject(entity))) { + throw new ForbiddenError(); + } + + const entityWithoutCreatorRoles = _.omit(entity, `${CREATED_BY_ATTRIBUTE}.roles`); + + return { pm, entity: entityWithoutCreatorRoles }; +}; + +module.exports = { + /** + * Create a/an user record. + * @return {Object} + */ + async create(ctx) { + const { body } = ctx.request; + const { user: admin, userAbility } = ctx.state; + + const { email, username } = body; + + const pm = strapi.admin.services.permission.createPermissionsManager({ + ability: userAbility, + action: ACTIONS.create, + model: userModel, + }); + + if (!pm.isAllowed) { + return ctx.forbidden(); + } + + const sanitizedBody = await pm.pickPermittedFieldsOf(body, { subject: userModel }); + + const advanced = await strapi + .store({ type: 'plugin', name: 'users-permissions', key: 'advanced' }) + .get(); + + await validateCreateUserBody(ctx.request.body); + + const userWithSameUsername = await strapi + .query('plugin::users-permissions.user') + .findOne({ where: { username } }); + + if (userWithSameUsername) { + throw new ApplicationError('Username already taken'); + } + + if (advanced.unique_email) { + const userWithSameEmail = await strapi + .query('plugin::users-permissions.user') + .findOne({ where: { email: email.toLowerCase() } }); + + if (userWithSameEmail) { + throw new ApplicationError('Email already taken'); + } + } + + const user = { + ...sanitizedBody, + provider: 'local', + [CREATED_BY_ATTRIBUTE]: admin.id, + [UPDATED_BY_ATTRIBUTE]: admin.id, + }; + + user.email = _.toLower(user.email); + + if (!user.role) { + const defaultRole = await strapi + .query('plugin::users-permissions.role') + .findOne({ where: { type: advanced.default_role } }); + + user.role = defaultRole.id; + } + + try { + const data = await strapi + .service('plugin::content-manager.entity-manager') + .create(user, userModel); + const sanitizedData = await pm.sanitizeOutput(data, { action: ACTIONS.read }); + + ctx.created(sanitizedData); + } catch (error) { + throw new ApplicationError(error.message); + } + }, + /** + * Update a/an user record. + * @return {Object} + */ + + async update(ctx) { + const { id } = ctx.params; + const { body } = ctx.request; + const { user: admin, userAbility } = ctx.state; + + const advancedConfigs = await strapi + .store({ type: 'plugin', name: 'users-permissions', key: 'advanced' }) + .get(); + + const { email, username, password } = body; + + const { pm, entity } = await findEntityAndCheckPermissions( + userAbility, + ACTIONS.edit, + userModel, + id + ); + const user = entity; + + await validateUpdateUserBody(ctx.request.body); + + if (_.has(body, 'password') && !password && user.provider === 'local') { + throw new ValidationError('password.notNull'); + } + + if (_.has(body, 'username')) { + const userWithSameUsername = await strapi + .query('plugin::users-permissions.user') + .findOne({ where: { username } }); + + if (userWithSameUsername && _.toString(userWithSameUsername.id) !== _.toString(id)) { + throw new ApplicationError('Username already taken'); + } + } + + if (_.has(body, 'email') && advancedConfigs.unique_email) { + const userWithSameEmail = await strapi + .query('plugin::users-permissions.user') + .findOne({ where: { email: _.toLower(email) } }); + + if (userWithSameEmail && _.toString(userWithSameEmail.id) !== _.toString(id)) { + throw new ApplicationError('Email already taken'); + } + body.email = _.toLower(body.email); + } + + const sanitizedData = await pm.pickPermittedFieldsOf(body, { subject: pm.toSubject(user) }); + const updateData = _.omit({ ...sanitizedData, updatedBy: admin.id }, 'createdBy'); + + const data = await strapi + .service('plugin::content-manager.entity-manager') + .update({ id }, updateData, userModel); + + ctx.body = await pm.sanitizeOutput(data, { action: ACTIONS.read }); + }, +}; diff --git a/packages/strapi-borked/src/extensions/users-permissions/server/controllers/index.js b/packages/strapi-borked/src/extensions/users-permissions/server/controllers/index.js new file mode 100644 index 0000000..8a02508 --- /dev/null +++ b/packages/strapi-borked/src/extensions/users-permissions/server/controllers/index.js @@ -0,0 +1,17 @@ +'use strict'; + +const auth = require('./auth'); +const user = require('./user'); +const role = require('./role'); +const permissions = require('./permissions'); +const settings = require('./settings'); +const contentmanageruser = require('./content-manager-user'); + +module.exports = { + auth, + user, + role, + permissions, + settings, + contentmanageruser, +}; diff --git a/packages/strapi-borked/src/extensions/users-permissions/server/controllers/permissions.js b/packages/strapi-borked/src/extensions/users-permissions/server/controllers/permissions.js new file mode 100644 index 0000000..3213215 --- /dev/null +++ b/packages/strapi-borked/src/extensions/users-permissions/server/controllers/permissions.js @@ -0,0 +1,26 @@ +'use strict'; + +const _ = require('lodash'); +const { getService } = require('../utils'); + +module.exports = { + async getPermissions(ctx) { + const permissions = await getService('users-permissions').getActions(); + + ctx.send({ permissions }); + }, + + async getPolicies(ctx) { + const policies = _.keys(strapi.plugin('users-permissions').policies); + + ctx.send({ + policies: _.without(policies, 'permissions'), + }); + }, + + async getRoutes(ctx) { + const routes = await getService('users-permissions').getRoutes(); + + ctx.send({ routes }); + }, +}; diff --git a/packages/strapi-borked/src/extensions/users-permissions/server/controllers/role.js b/packages/strapi-borked/src/extensions/users-permissions/server/controllers/role.js new file mode 100644 index 0000000..a31c86f --- /dev/null +++ b/packages/strapi-borked/src/extensions/users-permissions/server/controllers/role.js @@ -0,0 +1,77 @@ +'use strict'; + +const _ = require('lodash'); +const { ApplicationError, ValidationError } = require('@strapi/utils').errors; +const { getService } = require('../utils'); +const { validateDeleteRoleBody } = require('./validation/user'); + +module.exports = { + /** + * Default action. + * + * @return {Object} + */ + async createRole(ctx) { + if (_.isEmpty(ctx.request.body)) { + throw new ValidationError('Request body cannot be empty'); + } + + await getService('role').createRole(ctx.request.body); + + ctx.send({ ok: true }); + }, + + async findOne(ctx) { + const { id } = ctx.params; + + const role = await getService('role').findOne(id); + + if (!role) { + return ctx.notFound(); + } + + ctx.send({ role }); + }, + + async find(ctx) { + const roles = await getService('role').find(); + + ctx.send({ roles }); + }, + + async updateRole(ctx) { + const roleID = ctx.params.role; + + if (_.isEmpty(ctx.request.body)) { + throw new ValidationError('Request body cannot be empty'); + } + + await getService('role').updateRole(roleID, ctx.request.body); + + ctx.send({ ok: true }); + }, + + async deleteRole(ctx) { + const roleID = ctx.params.role; + + if (!roleID) { + await validateDeleteRoleBody(ctx.params); + } + + // Fetch public role. + const publicRole = await strapi + .query('plugin::users-permissions.role') + .findOne({ where: { type: 'public' } }); + + const publicRoleID = publicRole.id; + + // Prevent from removing the public role. + if (roleID.toString() === publicRoleID.toString()) { + throw new ApplicationError('Cannot delete public role'); + } + + await getService('role').deleteRole(roleID, publicRoleID); + + ctx.send({ ok: true }); + }, +}; diff --git a/packages/strapi-borked/src/extensions/users-permissions/server/controllers/settings.js b/packages/strapi-borked/src/extensions/users-permissions/server/controllers/settings.js new file mode 100644 index 0000000..1ae8ab2 --- /dev/null +++ b/packages/strapi-borked/src/extensions/users-permissions/server/controllers/settings.js @@ -0,0 +1,85 @@ +'use strict'; + +const _ = require('lodash'); +const { ValidationError } = require('@strapi/utils').errors; +const { getService } = require('../utils'); +const { isValidEmailTemplate } = require('./validation/email-template'); + +module.exports = { + async getEmailTemplate(ctx) { + ctx.send(await strapi.store({ type: 'plugin', name: 'users-permissions', key: 'email' }).get()); + }, + + async updateEmailTemplate(ctx) { + if (_.isEmpty(ctx.request.body)) { + throw new ValidationError('Request body cannot be empty'); + } + + const emailTemplates = ctx.request.body['email-templates']; + + for (const key of Object.keys(emailTemplates)) { + const template = emailTemplates[key].options.message; + + if (!isValidEmailTemplate(template)) { + throw new ValidationError('Invalid template'); + } + } + + await strapi + .store({ type: 'plugin', name: 'users-permissions', key: 'email' }) + .set({ value: emailTemplates }); + + ctx.send({ ok: true }); + }, + + async getAdvancedSettings(ctx) { + const settings = await strapi + .store({ type: 'plugin', name: 'users-permissions', key: 'advanced' }) + .get(); + + const roles = await getService('role').find(); + + ctx.send({ settings, roles }); + }, + + async updateAdvancedSettings(ctx) { + if (_.isEmpty(ctx.request.body)) { + throw new ValidationError('Request body cannot be empty'); + } + + await strapi + .store({ type: 'plugin', name: 'users-permissions', key: 'advanced' }) + .set({ value: ctx.request.body }); + + ctx.send({ ok: true }); + }, + + async getProviders(ctx) { + const providers = await strapi + .store({ type: 'plugin', name: 'users-permissions', key: 'grant' }) + .get(); + + for (const provider in providers) { + if (provider !== 'email') { + providers[provider].redirectUri = strapi + .plugin('users-permissions') + .service('providers') + .buildRedirectUri(provider); + } + } + + ctx.send(providers); + }, + + async updateProviders(ctx) { + if (_.isEmpty(ctx.request.body)) { + throw new ValidationError('Request body cannot be empty'); + } + + await strapi + .store({ type: 'plugin', name: 'users-permissions', key: 'grant' }) + .set({ value: ctx.request.body.providers }); + + ctx.send({ ok: true }); + }, +}; diff --git a/packages/strapi-borked/src/extensions/users-permissions/server/controllers/user.js b/packages/strapi-borked/src/extensions/users-permissions/server/controllers/user.js new file mode 100644 index 0000000..1b45e05 --- /dev/null +++ b/packages/strapi-borked/src/extensions/users-permissions/server/controllers/user.js @@ -0,0 +1,209 @@ +'use strict'; + +/** + * User.js controller + * + * @description: A set of functions called "actions" for managing `User`. + */ + +const _ = require('lodash'); +const utils = require('@strapi/utils'); +const { getService } = require('../utils'); +const { validateCreateUserBody, validateUpdateUserBody } = require('./validation/user'); + +const { sanitize } = utils; +const { ApplicationError, ValidationError, NotFoundError } = utils.errors; + +const sanitizeOutput = async (user, ctx) => { + const schema = strapi.getModel('plugin::users-permissions.user'); + const { auth } = ctx.state; + + return sanitize.contentAPI.output(user, schema, { auth }); +}; + +const sanitizeQuery = async (query, ctx) => { + const schema = strapi.getModel('plugin::users-permissions.user'); + const { auth } = ctx.state; + + return sanitize.contentAPI.query(query, schema, { auth }); +}; + +module.exports = { + /** + * Create a/an user record. + * @return {Object} + */ + async create(ctx) { + const advanced = await strapi + .store({ type: 'plugin', name: 'users-permissions', key: 'advanced' }) + .get(); + + await validateCreateUserBody(ctx.request.body); + + const { email, username, role } = ctx.request.body; + + const userWithSameUsername = await strapi + .query('plugin::users-permissions.user') + .findOne({ where: { username } }); + + if (userWithSameUsername) { + if (!email) throw new ApplicationError('Username already taken'); + } + + if (advanced.unique_email) { + const userWithSameEmail = await strapi + .query('plugin::users-permissions.user') + .findOne({ where: { email: email.toLowerCase() } }); + + if (userWithSameEmail) { + throw new ApplicationError('Email already taken'); + } + } + + const user = { + ...ctx.request.body, + email: email.toLowerCase(), + provider: 'local', + }; + + if (!role) { + const defaultRole = await strapi + .query('plugin::users-permissions.role') + .findOne({ where: { type: advanced.default_role } }); + + user.role = defaultRole.id; + } + + try { + const data = await getService('user').add(user); + const sanitizedData = await sanitizeOutput(data, ctx); + + ctx.created(sanitizedData); + } catch (error) { + throw new ApplicationError(error.message); + } + }, + + /** + * Update a/an user record. + * @return {Object} + */ + async update(ctx) { + const advancedConfigs = await strapi + .store({ type: 'plugin', name: 'users-permissions', key: 'advanced' }) + .get(); + + const { id } = ctx.params; + const { email, username, password } = ctx.request.body; + + const user = await getService('user').fetch(id); + if (!user) { + throw new NotFoundError(`User not found`); + } + + await validateUpdateUserBody(ctx.request.body); + + if (user.provider === 'local' && _.has(ctx.request.body, 'password') && !password) { + throw new ValidationError('password.notNull'); + } + + if (_.has(ctx.request.body, 'username')) { + const userWithSameUsername = await strapi + .query('plugin::users-permissions.user') + .findOne({ where: { username } }); + + if (userWithSameUsername && _.toString(userWithSameUsername.id) !== _.toString(id)) { + throw new ApplicationError('Username already taken'); + } + } + + if (_.has(ctx.request.body, 'email') && advancedConfigs.unique_email) { + const userWithSameEmail = await strapi + .query('plugin::users-permissions.user') + .findOne({ where: { email: email.toLowerCase() } }); + + if (userWithSameEmail && _.toString(userWithSameEmail.id) !== _.toString(id)) { + throw new ApplicationError('Email already taken'); + } + ctx.request.body.email = ctx.request.body.email.toLowerCase(); + } + + const updateData = { + ...ctx.request.body, + }; + + const data = await getService('user').edit(user.id, updateData); + const sanitizedData = await sanitizeOutput(data, ctx); + + ctx.send(sanitizedData); + }, + + /** + * Retrieve user records. + * @return {Object|Array} + */ + async find(ctx) { + const sanitizedQuery = await sanitizeQuery(ctx.query, ctx); + const users = await getService('user').fetchAll(sanitizedQuery); + + ctx.body = await Promise.all(users.map((user) => sanitizeOutput(user, ctx))); + }, + + /** + * Retrieve a user record. + * @return {Object} + */ + async findOne(ctx) { + const { id } = ctx.params; + const sanitizedQuery = await sanitizeQuery(ctx.query, ctx); + + let data = await getService('user').fetch(id, sanitizedQuery); + + if (data) { + data = await sanitizeOutput(data, ctx); + } + + ctx.body = data; + }, + + /** + * Retrieve user count. + * @return {Number} + */ + async count(ctx) { + const sanitizedQuery = await sanitizeQuery(ctx.query, ctx); + + ctx.body = await getService('user').count(sanitizedQuery); + }, + + /** + * Destroy a/an user record. + * @return {Object} + */ + async destroy(ctx) { + const { id } = ctx.params; + + const data = await getService('user').remove({ id }); + const sanitizedUser = await sanitizeOutput(data, ctx); + + ctx.send(sanitizedUser); + }, + + /** + * Retrieve authenticated user. + * @return {Object|Array} + */ + async me(ctx) { + const authUser = ctx.state.user; + const { query } = ctx; + + if (!authUser) { + return ctx.unauthorized(); + } + + const sanitizedQuery = await sanitizeQuery(query, ctx); + const user = await getService('user').fetch(authUser.id, sanitizedQuery); + + ctx.body = await sanitizeOutput(user, ctx); + }, +}; diff --git a/packages/strapi-borked/src/extensions/users-permissions/server/controllers/validation/auth.js b/packages/strapi-borked/src/extensions/users-permissions/server/controllers/validation/auth.js new file mode 100644 index 0000000..fdb4ac0 --- /dev/null +++ b/packages/strapi-borked/src/extensions/users-permissions/server/controllers/validation/auth.js @@ -0,0 +1,57 @@ +'use strict'; + +const { yup, validateYupSchema } = require('@strapi/utils'); + +const callbackSchema = yup.object({ + identifier: yup.string().required(), + password: yup.string().required(), +}); + +const registerSchema = yup.object({ + email: yup.string().email().required(), + username: yup.string().required(), + password: yup.string().required(), +}); + +const sendEmailConfirmationSchema = yup.object({ + email: yup.string().email().required(), +}); + +const validateEmailConfirmationSchema = yup.object({ + confirmation: yup.string().required(), +}); + +const forgotPasswordSchema = yup + .object({ + email: yup.string().email().required(), + }) + .noUnknown(); + +const resetPasswordSchema = yup + .object({ + password: yup.string().required(), + passwordConfirmation: yup.string().required(), + code: yup.string().required(), + }) + .noUnknown(); + +const changePasswordSchema = yup + .object({ + password: yup.string().required(), + passwordConfirmation: yup + .string() + .required() + .oneOf([yup.ref('password')], 'Passwords do not match'), + currentPassword: yup.string().required(), + }) + .noUnknown(); + +module.exports = { + validateCallbackBody: validateYupSchema(callbackSchema), + validateRegisterBody: validateYupSchema(registerSchema), + validateSendEmailConfirmationBody: validateYupSchema(sendEmailConfirmationSchema), + validateEmailConfirmationBody: validateYupSchema(validateEmailConfirmationSchema), + validateForgotPasswordBody: validateYupSchema(forgotPasswordSchema), + validateResetPasswordBody: validateYupSchema(resetPasswordSchema), + validateChangePasswordBody: validateYupSchema(changePasswordSchema), +}; diff --git a/packages/strapi-borked/src/extensions/users-permissions/server/controllers/validation/email-template.js b/packages/strapi-borked/src/extensions/users-permissions/server/controllers/validation/email-template.js new file mode 100644 index 0000000..49b3f76 --- /dev/null +++ b/packages/strapi-borked/src/extensions/users-permissions/server/controllers/validation/email-template.js @@ -0,0 +1,74 @@ +'use strict'; + +const { trim } = require('lodash/fp'); +const { + template: { createLooseInterpolationRegExp, createStrictInterpolationRegExp }, +} = require('@strapi/utils'); + +const invalidPatternsRegexes = [ + // Ignore "evaluation" patterns: <% ... %> + /<%[^=]([\s\S]*?)%>/m, + // Ignore basic string interpolations + /\${([^{}]*)}/m, +]; + +const authorizedKeys = [ + 'URL', + 'ADMIN_URL', + 'SERVER_URL', + 'CODE', + 'USER', + 'USER.email', + 'USER.username', + 'TOKEN', +]; + +const matchAll = (pattern, src) => { + const matches = []; + let match; + + const regexPatternWithGlobal = RegExp(pattern, 'g'); + + // eslint-disable-next-line no-cond-assign + while ((match = regexPatternWithGlobal.exec(src))) { + const [, group] = match; + + matches.push(trim(group)); + } + + return matches; +}; + +const isValidEmailTemplate = (template) => { + // Check for known invalid patterns + for (const reg of invalidPatternsRegexes) { + if (reg.test(template)) { + return false; + } + } + + const interpolation = { + // Strict interpolation pattern to match only valid groups + strict: createStrictInterpolationRegExp(authorizedKeys), + // Weak interpolation pattern to match as many group as possible. + loose: createLooseInterpolationRegExp(), + }; + + // Compute both strict & loose matches + const strictMatches = matchAll(interpolation.strict, template); + const looseMatches = matchAll(interpolation.loose, template); + + // If we have more matches with the loose RegExp than with the strict one, + // then it means that at least one of the interpolation group is invalid + // Note: In the future, if we wanted to give more details for error formatting + // purposes, we could return the difference between the two arrays + if (looseMatches.length > strictMatches.length) { + return false; + } + + return true; +}; + +module.exports = { + isValidEmailTemplate, +}; diff --git a/packages/strapi-borked/src/extensions/users-permissions/server/controllers/validation/user.js b/packages/strapi-borked/src/extensions/users-permissions/server/controllers/validation/user.js new file mode 100644 index 0000000..d62f3f7 --- /dev/null +++ b/packages/strapi-borked/src/extensions/users-permissions/server/controllers/validation/user.js @@ -0,0 +1,59 @@ +'use strict'; + +const { yup, validateYupSchema } = require('@strapi/utils'); + +const deleteRoleSchema = yup.object().shape({ + role: yup.strapiID().required(), +}); + +const createUserBodySchema = yup.object().shape({ + email: yup.string().email().required(), + username: yup.string().min(1).required(), + password: yup.string().min(1).required(), + role: yup.lazy((value) => + typeof value === 'object' + ? yup + .object() + .shape({ + connect: yup + .array() + .of(yup.object().shape({ id: yup.strapiID().required() })) + .min(1, 'Users must have a role') + .required(), + }) + .required() + : yup.strapiID().required() + ), +}); + +const updateUserBodySchema = yup.object().shape({ + email: yup.string().email().min(1), + username: yup.string().min(1), + password: yup.string().min(1), + role: yup.lazy((value) => + typeof value === 'object' + ? yup.object().shape({ + connect: yup + .array() + .of(yup.object().shape({ id: yup.strapiID().required() })) + .required(), + disconnect: yup + .array() + .test('CheckDisconnect', 'Cannot remove role', function test(disconnectValue) { + if (value.connect.length === 0 && disconnectValue.length > 0) { + return false; + } + + return true; + }) + .required(), + }) + : yup.strapiID() + ), +}); + +module.exports = { + validateCreateUserBody: validateYupSchema(createUserBodySchema), + validateUpdateUserBody: validateYupSchema(updateUserBodySchema), + validateDeleteRoleBody: validateYupSchema(deleteRoleSchema), +}; diff --git a/packages/strapi-borked/src/extensions/users-permissions/server/graphql/index.js b/packages/strapi-borked/src/extensions/users-permissions/server/graphql/index.js new file mode 100644 index 0000000..4780f32 --- /dev/null +++ b/packages/strapi-borked/src/extensions/users-permissions/server/graphql/index.js @@ -0,0 +1,44 @@ +'use strict'; + +const getTypes = require('./types'); +const getQueries = require('./queries'); +const getMutations = require('./mutations'); +const getResolversConfig = require('./resolvers-configs'); + +module.exports = ({ strapi }) => { + const { config: graphQLConfig } = strapi.plugin('graphql'); + const extensionService = strapi.plugin('graphql').service('extension'); + + const isShadowCRUDEnabled = graphQLConfig('shadowCRUD', true); + + if (!isShadowCRUDEnabled) { + return; + } + + // Disable Permissions queries & mutations but allow the + // type to be used/selected in filters or nested resolvers + extensionService + .shadowCRUD('plugin::users-permissions.permission') + .disableQueries() + .disableMutations(); + + // Disable User & Role's Create/Update/Delete actions so they can be replaced + const actionsToDisable = ['create', 'update', 'delete']; + + extensionService.shadowCRUD('plugin::users-permissions.user').disableActions(actionsToDisable); + extensionService.shadowCRUD('plugin::users-permissions.role').disableActions(actionsToDisable); + + // Register new types & resolvers config + extensionService.use(({ nexus }) => { + const types = getTypes({ strapi, nexus }); + const queries = getQueries({ strapi, nexus }); + const mutations = getMutations({ strapi, nexus }); + const resolversConfig = getResolversConfig({ strapi }); + + return { + types: [types, queries, mutations], + + resolversConfig, + }; + }); +}; diff --git a/packages/strapi-borked/src/extensions/users-permissions/server/graphql/mutations/auth/change-password.js b/packages/strapi-borked/src/extensions/users-permissions/server/graphql/mutations/auth/change-password.js new file mode 100644 index 0000000..956d7b7 --- /dev/null +++ b/packages/strapi-borked/src/extensions/users-permissions/server/graphql/mutations/auth/change-password.js @@ -0,0 +1,38 @@ +'use strict'; + +const { toPlainObject } = require('lodash/fp'); + +const { checkBadRequest } = require('../../utils'); + +module.exports = ({ nexus, strapi }) => { + const { nonNull } = nexus; + + return { + type: 'UsersPermissionsLoginPayload', + + args: { + currentPassword: nonNull('String'), + password: nonNull('String'), + passwordConfirmation: nonNull('String'), + }, + + description: 'Change user password. Confirm with the current password.', + + async resolve(parent, args, context) { + const { koaContext } = context; + + koaContext.request.body = toPlainObject(args); + + await strapi.plugin('users-permissions').controller('auth').changePassword(koaContext); + + const output = koaContext.body; + + checkBadRequest(output); + + return { + user: output.user || output, + jwt: output.jwt, + }; + }, + }; +}; diff --git a/packages/strapi-borked/src/extensions/users-permissions/server/graphql/mutations/auth/email-confirmation.js b/packages/strapi-borked/src/extensions/users-permissions/server/graphql/mutations/auth/email-confirmation.js new file mode 100644 index 0000000..1e97f9a --- /dev/null +++ b/packages/strapi-borked/src/extensions/users-permissions/server/graphql/mutations/auth/email-confirmation.js @@ -0,0 +1,39 @@ +'use strict'; + +const { toPlainObject } = require('lodash/fp'); + +const { checkBadRequest } = require('../../utils'); + +module.exports = ({ nexus, strapi }) => { + const { nonNull } = nexus; + + return { + type: 'UsersPermissionsLoginPayload', + + args: { + confirmation: nonNull('String'), + }, + + description: 'Confirm an email users email address', + + async resolve(parent, args, context) { + const { koaContext } = context; + + koaContext.query = toPlainObject(args); + + await strapi + .plugin('users-permissions') + .controller('auth') + .emailConfirmation(koaContext, null, true); + + const output = koaContext.body; + + checkBadRequest(output); + + return { + user: output.user || output, + jwt: output.jwt, + }; + }, + }; +}; diff --git a/packages/strapi-borked/src/extensions/users-permissions/server/graphql/mutations/auth/forgot-password.js b/packages/strapi-borked/src/extensions/users-permissions/server/graphql/mutations/auth/forgot-password.js new file mode 100644 index 0000000..ceea19a --- /dev/null +++ b/packages/strapi-borked/src/extensions/users-permissions/server/graphql/mutations/auth/forgot-password.js @@ -0,0 +1,35 @@ +'use strict'; + +const { toPlainObject } = require('lodash/fp'); + +const { checkBadRequest } = require('../../utils'); + +module.exports = ({ nexus, strapi }) => { + const { nonNull } = nexus; + + return { + type: 'UsersPermissionsPasswordPayload', + + args: { + email: nonNull('String'), + }, + + description: 'Request a reset password token', + + async resolve(parent, args, context) { + const { koaContext } = context; + + koaContext.request.body = toPlainObject(args); + + await strapi.plugin('users-permissions').controller('auth').forgotPassword(koaContext); + + const output = koaContext.body; + + checkBadRequest(output); + + return { + ok: output.ok || output, + }; + }, + }; +}; diff --git a/packages/strapi-borked/src/extensions/users-permissions/server/graphql/mutations/auth/login.js b/packages/strapi-borked/src/extensions/users-permissions/server/graphql/mutations/auth/login.js new file mode 100644 index 0000000..cc0f0de --- /dev/null +++ b/packages/strapi-borked/src/extensions/users-permissions/server/graphql/mutations/auth/login.js @@ -0,0 +1,35 @@ +'use strict'; + +const { toPlainObject } = require('lodash/fp'); + +const { checkBadRequest } = require('../../utils'); + +module.exports = ({ nexus, strapi }) => { + const { nonNull } = nexus; + + return { + type: nonNull('UsersPermissionsLoginPayload'), + + args: { + input: nonNull('UsersPermissionsLoginInput'), + }, + + async resolve(parent, args, context) { + const { koaContext } = context; + + koaContext.params = { provider: args.input.provider }; + koaContext.request.body = toPlainObject(args.input); + + await strapi.plugin('users-permissions').controller('auth').callback(koaContext); + + const output = koaContext.body; + + checkBadRequest(output); + + return { + user: output.user || output, + jwt: output.jwt, + }; + }, + }; +}; diff --git a/packages/strapi-borked/src/extensions/users-permissions/server/graphql/mutations/auth/register.js b/packages/strapi-borked/src/extensions/users-permissions/server/graphql/mutations/auth/register.js new file mode 100644 index 0000000..296d967 --- /dev/null +++ b/packages/strapi-borked/src/extensions/users-permissions/server/graphql/mutations/auth/register.js @@ -0,0 +1,36 @@ +'use strict'; + +const { toPlainObject } = require('lodash/fp'); + +const { checkBadRequest } = require('../../utils'); + +module.exports = ({ nexus, strapi }) => { + const { nonNull } = nexus; + + return { + type: nonNull('UsersPermissionsLoginPayload'), + + args: { + input: nonNull('UsersPermissionsRegisterInput'), + }, + + description: 'Register a user', + + async resolve(parent, args, context) { + const { koaContext } = context; + + koaContext.request.body = toPlainObject(args.input); + + await strapi.plugin('users-permissions').controller('auth').register(koaContext); + + const output = koaContext.body; + + checkBadRequest(output); + + return { + user: output.user || output, + jwt: output.jwt, + }; + }, + }; +}; diff --git a/packages/strapi-borked/src/extensions/users-permissions/server/graphql/mutations/auth/reset-password.js b/packages/strapi-borked/src/extensions/users-permissions/server/graphql/mutations/auth/reset-password.js new file mode 100644 index 0000000..65251c7 --- /dev/null +++ b/packages/strapi-borked/src/extensions/users-permissions/server/graphql/mutations/auth/reset-password.js @@ -0,0 +1,38 @@ +'use strict'; + +const { toPlainObject } = require('lodash/fp'); + +const { checkBadRequest } = require('../../utils'); + +module.exports = ({ nexus, strapi }) => { + const { nonNull } = nexus; + + return { + type: 'UsersPermissionsLoginPayload', + + args: { + password: nonNull('String'), + passwordConfirmation: nonNull('String'), + code: nonNull('String'), + }, + + description: 'Reset user password. Confirm with a code (resetToken from forgotPassword)', + + async resolve(parent, args, context) { + const { koaContext } = context; + + koaContext.request.body = toPlainObject(args); + + await strapi.plugin('users-permissions').controller('auth').resetPassword(koaContext); + + const output = koaContext.body; + + checkBadRequest(output); + + return { + user: output.user || output, + jwt: output.jwt, + }; + }, + }; +}; diff --git a/packages/strapi-borked/src/extensions/users-permissions/server/graphql/mutations/crud/role/create-role.js b/packages/strapi-borked/src/extensions/users-permissions/server/graphql/mutations/crud/role/create-role.js new file mode 100644 index 0000000..3dd0fed --- /dev/null +++ b/packages/strapi-borked/src/extensions/users-permissions/server/graphql/mutations/crud/role/create-role.js @@ -0,0 +1,34 @@ +'use strict'; + +const { toPlainObject } = require('lodash/fp'); + +const usersPermissionsRoleUID = 'plugin::users-permissions.role'; + +module.exports = ({ nexus, strapi }) => { + const { getContentTypeInputName } = strapi.plugin('graphql').service('utils').naming; + const { nonNull } = nexus; + + const roleContentType = strapi.getModel(usersPermissionsRoleUID); + + const roleInputName = getContentTypeInputName(roleContentType); + + return { + type: 'UsersPermissionsCreateRolePayload', + + args: { + data: nonNull(roleInputName), + }, + + description: 'Create a new role', + + async resolve(parent, args, context) { + const { koaContext } = context; + + koaContext.request.body = toPlainObject(args.data); + + await strapi.plugin('users-permissions').controller('role').createRole(koaContext); + + return { ok: true }; + }, + }; +}; diff --git a/packages/strapi-borked/src/extensions/users-permissions/server/graphql/mutations/crud/role/delete-role.js b/packages/strapi-borked/src/extensions/users-permissions/server/graphql/mutations/crud/role/delete-role.js new file mode 100644 index 0000000..154bbd8 --- /dev/null +++ b/packages/strapi-borked/src/extensions/users-permissions/server/graphql/mutations/crud/role/delete-role.js @@ -0,0 +1,25 @@ +'use strict'; + +module.exports = ({ nexus, strapi }) => { + const { nonNull } = nexus; + + return { + type: 'UsersPermissionsDeleteRolePayload', + + args: { + id: nonNull('ID'), + }, + + description: 'Delete an existing role', + + async resolve(parent, args, context) { + const { koaContext } = context; + + koaContext.params = { role: args.id }; + + await strapi.plugin('users-permissions').controller('role').deleteRole(koaContext); + + return { ok: true }; + }, + }; +}; diff --git a/packages/strapi-borked/src/extensions/users-permissions/server/graphql/mutations/crud/role/update-role.js b/packages/strapi-borked/src/extensions/users-permissions/server/graphql/mutations/crud/role/update-role.js new file mode 100644 index 0000000..4d22a01 --- /dev/null +++ b/packages/strapi-borked/src/extensions/users-permissions/server/graphql/mutations/crud/role/update-role.js @@ -0,0 +1,35 @@ +'use strict'; + +const usersPermissionsRoleUID = 'plugin::users-permissions.role'; + +module.exports = ({ nexus, strapi }) => { + const { getContentTypeInputName } = strapi.plugin('graphql').service('utils').naming; + const { nonNull } = nexus; + + const roleContentType = strapi.getModel(usersPermissionsRoleUID); + + const roleInputName = getContentTypeInputName(roleContentType); + + return { + type: 'UsersPermissionsUpdateRolePayload', + + args: { + id: nonNull('ID'), + data: nonNull(roleInputName), + }, + + description: 'Update an existing role', + + async resolve(parent, args, context) { + const { koaContext } = context; + + koaContext.params = { role: args.id }; + koaContext.request.body = args.data; + koaContext.request.body.role = args.id; + + await strapi.plugin('users-permissions').controller('role').updateRole(koaContext); + + return { ok: true }; + }, + }; +}; diff --git a/packages/strapi-borked/src/extensions/users-permissions/server/graphql/mutations/crud/user/create-user.js b/packages/strapi-borked/src/extensions/users-permissions/server/graphql/mutations/crud/user/create-user.js new file mode 100644 index 0000000..7c1526e --- /dev/null +++ b/packages/strapi-borked/src/extensions/users-permissions/server/graphql/mutations/crud/user/create-user.js @@ -0,0 +1,45 @@ +'use strict'; + +const { toPlainObject } = require('lodash/fp'); + +const { checkBadRequest } = require('../../../utils'); + +const usersPermissionsUserUID = 'plugin::users-permissions.user'; + +module.exports = ({ nexus, strapi }) => { + const { nonNull } = nexus; + const { getContentTypeInputName, getEntityResponseName } = strapi + .plugin('graphql') + .service('utils').naming; + + const userContentType = strapi.getModel(usersPermissionsUserUID); + + const userInputName = getContentTypeInputName(userContentType); + const responseName = getEntityResponseName(userContentType); + + return { + type: nonNull(responseName), + + args: { + data: nonNull(userInputName), + }, + + description: 'Create a new user', + + async resolve(parent, args, context) { + const { koaContext } = context; + + koaContext.params = {}; + koaContext.request.body = toPlainObject(args.data); + + await strapi.plugin('users-permissions').controller('user').create(koaContext); + + checkBadRequest(koaContext.body); + + return { + value: koaContext.body, + info: { args, resourceUID: 'plugin::users-permissions.user' }, + }; + }, + }; +}; diff --git a/packages/strapi-borked/src/extensions/users-permissions/server/graphql/mutations/crud/user/delete-user.js b/packages/strapi-borked/src/extensions/users-permissions/server/graphql/mutations/crud/user/delete-user.js new file mode 100644 index 0000000..500834e --- /dev/null +++ b/packages/strapi-borked/src/extensions/users-permissions/server/graphql/mutations/crud/user/delete-user.js @@ -0,0 +1,39 @@ +'use strict'; + +const { checkBadRequest } = require('../../../utils'); + +const usersPermissionsUserUID = 'plugin::users-permissions.user'; + +module.exports = ({ nexus, strapi }) => { + const { nonNull } = nexus; + const { getEntityResponseName } = strapi.plugin('graphql').service('utils').naming; + + const userContentType = strapi.getModel(usersPermissionsUserUID); + + const responseName = getEntityResponseName(userContentType); + + return { + type: nonNull(responseName), + + args: { + id: nonNull('ID'), + }, + + description: 'Delete an existing user', + + async resolve(parent, args, context) { + const { koaContext } = context; + + koaContext.params = { id: args.id }; + + await strapi.plugin('users-permissions').controller('user').destroy(koaContext); + + checkBadRequest(koaContext.body); + + return { + value: koaContext.body, + info: { args, resourceUID: 'plugin::users-permissions.user' }, + }; + }, + }; +}; diff --git a/packages/strapi-borked/src/extensions/users-permissions/server/graphql/mutations/crud/user/update-user.js b/packages/strapi-borked/src/extensions/users-permissions/server/graphql/mutations/crud/user/update-user.js new file mode 100644 index 0000000..a89cb3e --- /dev/null +++ b/packages/strapi-borked/src/extensions/users-permissions/server/graphql/mutations/crud/user/update-user.js @@ -0,0 +1,46 @@ +'use strict'; + +const { toPlainObject } = require('lodash/fp'); + +const { checkBadRequest } = require('../../../utils'); + +const usersPermissionsUserUID = 'plugin::users-permissions.user'; + +module.exports = ({ nexus, strapi }) => { + const { nonNull } = nexus; + const { getContentTypeInputName, getEntityResponseName } = strapi + .plugin('graphql') + .service('utils').naming; + + const userContentType = strapi.getModel(usersPermissionsUserUID); + + const userInputName = getContentTypeInputName(userContentType); + const responseName = getEntityResponseName(userContentType); + + return { + type: nonNull(responseName), + + args: { + id: nonNull('ID'), + data: nonNull(userInputName), + }, + + description: 'Update an existing user', + + async resolve(parent, args, context) { + const { koaContext } = context; + + koaContext.params = { id: args.id }; + koaContext.request.body = toPlainObject(args.data); + + await strapi.plugin('users-permissions').controller('user').update(koaContext); + + checkBadRequest(koaContext.body); + + return { + value: koaContext.body, + info: { args, resourceUID: 'plugin::users-permissions.user' }, + }; + }, + }; +}; diff --git a/packages/strapi-borked/src/extensions/users-permissions/server/graphql/mutations/index.js b/packages/strapi-borked/src/extensions/users-permissions/server/graphql/mutations/index.js new file mode 100644 index 0000000..801d1f3 --- /dev/null +++ b/packages/strapi-borked/src/extensions/users-permissions/server/graphql/mutations/index.js @@ -0,0 +1,43 @@ +'use strict'; + +const userUID = 'plugin::users-permissions.user'; +const roleUID = 'plugin::users-permissions.role'; + +module.exports = (context) => { + const { nexus, strapi } = context; + + const { naming } = strapi.plugin('graphql').service('utils'); + + const user = strapi.getModel(userUID); + const role = strapi.getModel(roleUID); + + const mutations = { + // CRUD (user & role) + [naming.getCreateMutationTypeName(role)]: require('./crud/role/create-role'), + [naming.getUpdateMutationTypeName(role)]: require('./crud/role/update-role'), + [naming.getDeleteMutationTypeName(role)]: require('./crud/role/delete-role'), + [naming.getCreateMutationTypeName(user)]: require('./crud/user/create-user'), + [naming.getUpdateMutationTypeName(user)]: require('./crud/user/update-user'), + [naming.getDeleteMutationTypeName(user)]: require('./crud/user/delete-user'), + + // Other mutations + login: require('./auth/login'), + register: require('./auth/register'), + forgotPassword: require('./auth/forgot-password'), + resetPassword: require('./auth/reset-password'), + changePassword: require('./auth/change-password'), + emailConfirmation: require('./auth/email-confirmation'), + }; + + return nexus.extendType({ + type: 'Mutation', + + definition(t) { + for (const [name, getConfig] of Object.entries(mutations)) { + const config = getConfig(context); + + t.field(name, config); + } + }, + }); +}; diff --git a/packages/strapi-borked/src/extensions/users-permissions/server/graphql/queries/index.js b/packages/strapi-borked/src/extensions/users-permissions/server/graphql/queries/index.js new file mode 100644 index 0000000..d45d0f2 --- /dev/null +++ b/packages/strapi-borked/src/extensions/users-permissions/server/graphql/queries/index.js @@ -0,0 +1,13 @@ +'use strict'; + +const me = require('./me'); + +module.exports = ({ nexus }) => { + return nexus.extendType({ + type: 'Query', + + definition(t) { + t.field('me', me({ nexus })); + }, + }); +}; diff --git a/packages/strapi-borked/src/extensions/users-permissions/server/graphql/queries/me.js b/packages/strapi-borked/src/extensions/users-permissions/server/graphql/queries/me.js new file mode 100644 index 0000000..0835ad6 --- /dev/null +++ b/packages/strapi-borked/src/extensions/users-permissions/server/graphql/queries/me.js @@ -0,0 +1,17 @@ +'use strict'; + +module.exports = () => ({ + type: 'UsersPermissionsMe', + + args: {}, + + resolve(parent, args, context) { + const { user } = context.state; + + if (!user) { + throw new Error('Authentication requested'); + } + + return user; + }, +}); diff --git a/packages/strapi-borked/src/extensions/users-permissions/server/graphql/resolvers-configs.js b/packages/strapi-borked/src/extensions/users-permissions/server/graphql/resolvers-configs.js new file mode 100644 index 0000000..f149df2 --- /dev/null +++ b/packages/strapi-borked/src/extensions/users-permissions/server/graphql/resolvers-configs.js @@ -0,0 +1,42 @@ +'use strict'; + +const userUID = 'plugin::users-permissions.user'; +const roleUID = 'plugin::users-permissions.role'; + +module.exports = ({ strapi }) => { + const { naming } = strapi.plugin('graphql').service('utils'); + + const user = strapi.getModel(userUID); + const role = strapi.getModel(roleUID); + + const createRole = naming.getCreateMutationTypeName(role); + const updateRole = naming.getUpdateMutationTypeName(role); + const deleteRole = naming.getDeleteMutationTypeName(role); + const createUser = naming.getCreateMutationTypeName(user); + const updateUser = naming.getUpdateMutationTypeName(user); + const deleteUser = naming.getDeleteMutationTypeName(user); + + return { + // Disabled auth for some operations + 'Mutation.login': { auth: false }, + 'Mutation.register': { auth: false }, + 'Mutation.forgotPassword': { auth: false }, + 'Mutation.resetPassword': { auth: false }, + 'Mutation.emailConfirmation': { auth: false }, + 'Mutation.changePassword': { + auth: { + scope: 'plugin::users-permissions.auth.changePassword', + }, + }, + + // Scoped auth for replaced CRUD operations + // Role + [`Mutation.${createRole}`]: { auth: { scope: [`${roleUID}.createRole`] } }, + [`Mutation.${updateRole}`]: { auth: { scope: [`${roleUID}.updateRole`] } }, + [`Mutation.${deleteRole}`]: { auth: { scope: [`${roleUID}.deleteRole`] } }, + // User + [`Mutation.${createUser}`]: { auth: { scope: [`${userUID}.create`] } }, + [`Mutation.${updateUser}`]: { auth: { scope: [`${userUID}.update`] } }, + [`Mutation.${deleteUser}`]: { auth: { scope: [`${userUID}.destroy`] } }, + }; +}; diff --git a/packages/strapi-borked/src/extensions/users-permissions/server/graphql/types/create-role-payload.js b/packages/strapi-borked/src/extensions/users-permissions/server/graphql/types/create-role-payload.js new file mode 100644 index 0000000..33b5c47 --- /dev/null +++ b/packages/strapi-borked/src/extensions/users-permissions/server/graphql/types/create-role-payload.js @@ -0,0 +1,11 @@ +'use strict'; + +module.exports = ({ nexus }) => { + return nexus.objectType({ + name: 'UsersPermissionsCreateRolePayload', + + definition(t) { + t.nonNull.boolean('ok'); + }, + }); +}; diff --git a/packages/strapi-borked/src/extensions/users-permissions/server/graphql/types/delete-role-payload.js b/packages/strapi-borked/src/extensions/users-permissions/server/graphql/types/delete-role-payload.js new file mode 100644 index 0000000..7e06005 --- /dev/null +++ b/packages/strapi-borked/src/extensions/users-permissions/server/graphql/types/delete-role-payload.js @@ -0,0 +1,11 @@ +'use strict'; + +module.exports = ({ nexus }) => { + return nexus.objectType({ + name: 'UsersPermissionsDeleteRolePayload', + + definition(t) { + t.nonNull.boolean('ok'); + }, + }); +}; diff --git a/packages/strapi-borked/src/extensions/users-permissions/server/graphql/types/index.js b/packages/strapi-borked/src/extensions/users-permissions/server/graphql/types/index.js new file mode 100644 index 0000000..7888e84 --- /dev/null +++ b/packages/strapi-borked/src/extensions/users-permissions/server/graphql/types/index.js @@ -0,0 +1,21 @@ +'use strict'; + +const typesFactories = [ + require('./me'), + require('./me-role'), + require('./register-input'), + require('./login-input'), + require('./password-payload'), + require('./login-payload'), + require('./create-role-payload'), + require('./update-role-payload'), + require('./delete-role-payload'), +]; + +/** + * @param {object} context + * @param {object} context.nexus + * @param {object} context.strapi + * @return {any[]} + */ +module.exports = (context) => typesFactories.map((factory) => factory(context)); diff --git a/packages/strapi-borked/src/extensions/users-permissions/server/graphql/types/login-input.js b/packages/strapi-borked/src/extensions/users-permissions/server/graphql/types/login-input.js new file mode 100644 index 0000000..b8d7f41 --- /dev/null +++ b/packages/strapi-borked/src/extensions/users-permissions/server/graphql/types/login-input.js @@ -0,0 +1,13 @@ +'use strict'; + +module.exports = ({ nexus }) => { + return nexus.inputObjectType({ + name: 'UsersPermissionsLoginInput', + + definition(t) { + t.nonNull.string('identifier'); + t.nonNull.string('password'); + t.nonNull.string('provider', { default: 'local' }); + }, + }); +}; diff --git a/packages/strapi-borked/src/extensions/users-permissions/server/graphql/types/login-payload.js b/packages/strapi-borked/src/extensions/users-permissions/server/graphql/types/login-payload.js new file mode 100644 index 0000000..65f8ec4 --- /dev/null +++ b/packages/strapi-borked/src/extensions/users-permissions/server/graphql/types/login-payload.js @@ -0,0 +1,12 @@ +'use strict'; + +module.exports = ({ nexus }) => { + return nexus.objectType({ + name: 'UsersPermissionsLoginPayload', + + definition(t) { + t.string('jwt'); + t.nonNull.field('user', { type: 'UsersPermissionsMe' }); + }, + }); +}; diff --git a/packages/strapi-borked/src/extensions/users-permissions/server/graphql/types/me-role.js b/packages/strapi-borked/src/extensions/users-permissions/server/graphql/types/me-role.js new file mode 100644 index 0000000..485fedb --- /dev/null +++ b/packages/strapi-borked/src/extensions/users-permissions/server/graphql/types/me-role.js @@ -0,0 +1,14 @@ +'use strict'; + +module.exports = ({ nexus }) => { + return nexus.objectType({ + name: 'UsersPermissionsMeRole', + + definition(t) { + t.nonNull.id('id'); + t.nonNull.string('name'); + t.string('description'); + t.string('type'); + }, + }); +}; diff --git a/packages/strapi-borked/src/extensions/users-permissions/server/graphql/types/me.js b/packages/strapi-borked/src/extensions/users-permissions/server/graphql/types/me.js new file mode 100644 index 0000000..d3a8aee --- /dev/null +++ b/packages/strapi-borked/src/extensions/users-permissions/server/graphql/types/me.js @@ -0,0 +1,16 @@ +'use strict'; + +module.exports = ({ nexus }) => { + return nexus.objectType({ + name: 'UsersPermissionsMe', + + definition(t) { + t.nonNull.id('id'); + t.nonNull.string('username'); + t.string('email'); + t.boolean('confirmed'); + t.boolean('blocked'); + t.field('role', { type: 'UsersPermissionsMeRole' }); + }, + }); +}; diff --git a/packages/strapi-borked/src/extensions/users-permissions/server/graphql/types/password-payload.js b/packages/strapi-borked/src/extensions/users-permissions/server/graphql/types/password-payload.js new file mode 100644 index 0000000..5d68c8e --- /dev/null +++ b/packages/strapi-borked/src/extensions/users-permissions/server/graphql/types/password-payload.js @@ -0,0 +1,11 @@ +'use strict'; + +module.exports = ({ nexus }) => { + return nexus.objectType({ + name: 'UsersPermissionsPasswordPayload', + + definition(t) { + t.nonNull.boolean('ok'); + }, + }); +}; diff --git a/packages/strapi-borked/src/extensions/users-permissions/server/graphql/types/register-input.js b/packages/strapi-borked/src/extensions/users-permissions/server/graphql/types/register-input.js new file mode 100644 index 0000000..1585761 --- /dev/null +++ b/packages/strapi-borked/src/extensions/users-permissions/server/graphql/types/register-input.js @@ -0,0 +1,13 @@ +'use strict'; + +module.exports = ({ nexus }) => { + return nexus.inputObjectType({ + name: 'UsersPermissionsRegisterInput', + + definition(t) { + t.nonNull.string('username'); + t.nonNull.string('email'); + t.nonNull.string('password'); + }, + }); +}; diff --git a/packages/strapi-borked/src/extensions/users-permissions/server/graphql/types/update-role-payload.js b/packages/strapi-borked/src/extensions/users-permissions/server/graphql/types/update-role-payload.js new file mode 100644 index 0000000..cea281d --- /dev/null +++ b/packages/strapi-borked/src/extensions/users-permissions/server/graphql/types/update-role-payload.js @@ -0,0 +1,11 @@ +'use strict'; + +module.exports = ({ nexus }) => { + return nexus.objectType({ + name: 'UsersPermissionsUpdateRolePayload', + + definition(t) { + t.nonNull.boolean('ok'); + }, + }); +}; diff --git a/packages/strapi-borked/src/extensions/users-permissions/server/graphql/utils.js b/packages/strapi-borked/src/extensions/users-permissions/server/graphql/utils.js new file mode 100644 index 0000000..8439021 --- /dev/null +++ b/packages/strapi-borked/src/extensions/users-permissions/server/graphql/utils.js @@ -0,0 +1,27 @@ +'use strict'; + +const { getOr } = require('lodash/fp'); + +/** + * Throws an ApolloError if context body contains a bad request + * @param contextBody - body of the context object given to the resolver + * @throws ApolloError if the body is a bad request + */ +function checkBadRequest(contextBody) { + const statusCode = getOr(200, 'statusCode', contextBody); + + if (statusCode !== 200) { + const errorMessage = getOr('Bad Request', 'error', contextBody); + + const exception = new Error(errorMessage); + + exception.code = statusCode || 400; + exception.data = contextBody; + + throw exception; + } +} + +module.exports = { + checkBadRequest, +}; diff --git a/packages/strapi-borked/src/extensions/users-permissions/server/index.js b/packages/strapi-borked/src/extensions/users-permissions/server/index.js new file mode 100644 index 0000000..14629aa --- /dev/null +++ b/packages/strapi-borked/src/extensions/users-permissions/server/index.js @@ -0,0 +1,21 @@ +'use strict'; + +const register = require('./register'); +const bootstrap = require('./bootstrap'); +const contentTypes = require('./content-types'); +const middlewares = require('./middlewares'); +const services = require('./services'); +const routes = require('./routes'); +const controllers = require('./controllers'); +const config = require('./config'); + +module.exports = () => ({ + register, + bootstrap, + config, + routes, + controllers, + contentTypes, + middlewares, + services, +}); diff --git a/packages/strapi-borked/src/extensions/users-permissions/server/middlewares/index.js b/packages/strapi-borked/src/extensions/users-permissions/server/middlewares/index.js new file mode 100644 index 0000000..2abf96c --- /dev/null +++ b/packages/strapi-borked/src/extensions/users-permissions/server/middlewares/index.js @@ -0,0 +1,7 @@ +'use strict'; + +const rateLimit = require('./rateLimit'); + +module.exports = { + rateLimit, +}; diff --git a/packages/strapi-borked/src/extensions/users-permissions/server/middlewares/rateLimit.js b/packages/strapi-borked/src/extensions/users-permissions/server/middlewares/rateLimit.js new file mode 100644 index 0000000..9880aa7 --- /dev/null +++ b/packages/strapi-borked/src/extensions/users-permissions/server/middlewares/rateLimit.js @@ -0,0 +1,27 @@ +'use strict'; + +module.exports = + (config, { strapi }) => + async (ctx, next) => { + const ratelimit = require('koa2-ratelimit').RateLimit; + + const message = [ + { + messages: [ + { + id: 'Auth.form.error.ratelimit', + message: 'Too many attempts, please try again in a minute.', + }, + ], + }, + ]; + + return ratelimit.middleware({ + interval: 1 * 60 * 1000, + max: 5, + prefixKey: `${ctx.request.path}:${ctx.request.ip}`, + message, + ...strapi.config.get('plugin.users-permissions.ratelimit'), + ...config, + })(ctx, next); + }; diff --git a/packages/strapi-borked/src/extensions/users-permissions/server/register.js b/packages/strapi-borked/src/extensions/users-permissions/server/register.js new file mode 100644 index 0000000..214fe30 --- /dev/null +++ b/packages/strapi-borked/src/extensions/users-permissions/server/register.js @@ -0,0 +1,29 @@ +'use strict'; + +const fs = require('fs'); +const path = require('path'); + +const authStrategy = require('./strategies/users-permissions'); +const sanitizers = require('./utils/sanitize/sanitizers'); + +module.exports = ({ strapi }) => { + strapi.container.get('auth').register('content-api', authStrategy); + strapi.sanitizers.add('content-api.output', sanitizers.defaultSanitizeOutput); + + if (strapi.plugin('graphql')) { + require('./graphql')({ strapi }); + } + + if (strapi.plugin('documentation')) { + const specPath = path.join(__dirname, '../documentation/content-api.yaml'); + const spec = fs.readFileSync(specPath, 'utf8'); + + strapi + .plugin('documentation') + .service('override') + .registerOverride(spec, { + pluginOrigin: 'users-permissions', + excludeFromGeneration: ['users-permissions'], + }); + } +}; diff --git a/packages/strapi-borked/src/extensions/users-permissions/server/routes/admin/index.js b/packages/strapi-borked/src/extensions/users-permissions/server/routes/admin/index.js new file mode 100644 index 0000000..3ae910e --- /dev/null +++ b/packages/strapi-borked/src/extensions/users-permissions/server/routes/admin/index.js @@ -0,0 +1,10 @@ +'use strict'; + +const permissionsRoutes = require('./permissions'); +const settingsRoutes = require('./settings'); +const roleRoutes = require('./role'); + +module.exports = { + type: 'admin', + routes: [...roleRoutes, ...settingsRoutes, ...permissionsRoutes], +}; diff --git a/packages/strapi-borked/src/extensions/users-permissions/server/routes/admin/permissions.js b/packages/strapi-borked/src/extensions/users-permissions/server/routes/admin/permissions.js new file mode 100644 index 0000000..7ad462f --- /dev/null +++ b/packages/strapi-borked/src/extensions/users-permissions/server/routes/admin/permissions.js @@ -0,0 +1,20 @@ +'use strict'; + +module.exports = [ + { + method: 'GET', + path: '/permissions', + handler: 'permissions.getPermissions', + }, + { + method: 'GET', + path: '/policies', + handler: 'permissions.getPolicies', + }, + + { + method: 'GET', + path: '/routes', + handler: 'permissions.getRoutes', + }, +]; diff --git a/packages/strapi-borked/src/extensions/users-permissions/server/routes/admin/role.js b/packages/strapi-borked/src/extensions/users-permissions/server/routes/admin/role.js new file mode 100644 index 0000000..4bdbbda --- /dev/null +++ b/packages/strapi-borked/src/extensions/users-permissions/server/routes/admin/role.js @@ -0,0 +1,79 @@ +'use strict'; + +module.exports = [ + { + method: 'GET', + path: '/roles/:id', + handler: 'role.findOne', + config: { + policies: [ + { + name: 'admin::hasPermissions', + config: { + actions: ['plugin::users-permissions.roles.read'], + }, + }, + ], + }, + }, + { + method: 'GET', + path: '/roles', + handler: 'role.find', + config: { + policies: [ + { + name: 'admin::hasPermissions', + config: { + actions: ['plugin::users-permissions.roles.read'], + }, + }, + ], + }, + }, + { + method: 'POST', + path: '/roles', + handler: 'role.createRole', + config: { + policies: [ + { + name: 'admin::hasPermissions', + config: { + actions: ['plugin::users-permissions.roles.create'], + }, + }, + ], + }, + }, + { + method: 'PUT', + path: '/roles/:role', + handler: 'role.updateRole', + config: { + policies: [ + { + name: 'admin::hasPermissions', + config: { + actions: ['plugin::users-permissions.roles.update'], + }, + }, + ], + }, + }, + { + method: 'DELETE', + path: '/roles/:role', + handler: 'role.deleteRole', + config: { + policies: [ + { + name: 'admin::hasPermissions', + config: { + actions: ['plugin::users-permissions.roles.delete'], + }, + }, + ], + }, + }, +]; diff --git a/packages/strapi-borked/src/extensions/users-permissions/server/routes/admin/settings.js b/packages/strapi-borked/src/extensions/users-permissions/server/routes/admin/settings.js new file mode 100644 index 0000000..7ac31f6 --- /dev/null +++ b/packages/strapi-borked/src/extensions/users-permissions/server/routes/admin/settings.js @@ -0,0 +1,95 @@ +'use strict'; + +module.exports = [ + { + method: 'GET', + path: '/email-templates', + handler: 'settings.getEmailTemplate', + config: { + policies: [ + { + name: 'admin::hasPermissions', + config: { + actions: ['plugin::users-permissions.email-templates.read'], + }, + }, + ], + }, + }, + { + method: 'PUT', + path: '/email-templates', + handler: 'settings.updateEmailTemplate', + config: { + policies: [ + { + name: 'admin::hasPermissions', + config: { + actions: ['plugin::users-permissions.email-templates.update'], + }, + }, + ], + }, + }, + { + method: 'GET', + path: '/advanced', + handler: 'settings.getAdvancedSettings', + config: { + policies: [ + { + name: 'admin::hasPermissions', + config: { + actions: ['plugin::users-permissions.advanced-settings.read'], + }, + }, + ], + }, + }, + { + method: 'PUT', + path: '/advanced', + handler: 'settings.updateAdvancedSettings', + config: { + policies: [ + { + name: 'admin::hasPermissions', + config: { + actions: ['plugin::users-permissions.advanced-settings.update'], + }, + }, + ], + }, + }, + { + method: 'GET', + path: '/providers', + handler: 'settings.getProviders', + config: { + policies: [ + { + name: 'admin::hasPermissions', + config: { + actions: ['plugin::users-permissions.providers.read'], + }, + }, + ], + }, + }, + + { + method: 'PUT', + path: '/providers', + handler: 'settings.updateProviders', + config: { + policies: [ + { + name: 'admin::hasPermissions', + config: { + actions: ['plugin::users-permissions.providers.update'], + }, + }, + ], + }, + }, +]; diff --git a/packages/strapi-borked/src/extensions/users-permissions/server/routes/content-api/auth.js b/packages/strapi-borked/src/extensions/users-permissions/server/routes/content-api/auth.js new file mode 100644 index 0000000..bb34782 --- /dev/null +++ b/packages/strapi-borked/src/extensions/users-permissions/server/routes/content-api/auth.js @@ -0,0 +1,82 @@ +'use strict'; + +module.exports = [ + { + method: 'GET', + path: '/connect/(.*)', + handler: 'auth.connect', + config: { + middlewares: ['plugin::users-permissions.rateLimit'], + prefix: '', + }, + }, + { + method: 'POST', + path: '/auth/local', + handler: 'auth.callback', + config: { + middlewares: ['plugin::users-permissions.rateLimit'], + prefix: '', + }, + }, + { + method: 'POST', + path: '/auth/local/register', + handler: 'auth.register', + config: { + middlewares: ['plugin::users-permissions.rateLimit'], + prefix: '', + }, + }, + { + method: 'GET', + path: '/auth/:provider/callback', + handler: 'auth.callback', + config: { + prefix: '', + }, + }, + { + method: 'POST', + path: '/auth/forgot-password', + handler: 'auth.forgotPassword', + config: { + middlewares: ['plugin::users-permissions.rateLimit'], + prefix: '', + }, + }, + { + method: 'POST', + path: '/auth/reset-password', + handler: 'auth.resetPassword', + config: { + middlewares: ['plugin::users-permissions.rateLimit'], + prefix: '', + }, + }, + { + method: 'GET', + path: '/auth/email-confirmation', + handler: 'auth.emailConfirmation', + config: { + prefix: '', + }, + }, + { + method: 'POST', + path: '/auth/send-email-confirmation', + handler: 'auth.sendEmailConfirmation', + config: { + prefix: '', + }, + }, + { + method: 'POST', + path: '/auth/change-password', + handler: 'auth.changePassword', + config: { + middlewares: ['plugin::users-permissions.rateLimit'], + prefix: '', + }, + }, +]; diff --git a/packages/strapi-borked/src/extensions/users-permissions/server/routes/content-api/index.js b/packages/strapi-borked/src/extensions/users-permissions/server/routes/content-api/index.js new file mode 100644 index 0000000..b23adf5 --- /dev/null +++ b/packages/strapi-borked/src/extensions/users-permissions/server/routes/content-api/index.js @@ -0,0 +1,11 @@ +'use strict'; + +const authRoutes = require('./auth'); +const userRoutes = require('./user'); +const roleRoutes = require('./role'); +const permissionsRoutes = require('./permissions'); + +module.exports = { + type: 'content-api', + routes: [...authRoutes, ...userRoutes, ...roleRoutes, ...permissionsRoutes], +}; diff --git a/packages/strapi-borked/src/extensions/users-permissions/server/routes/content-api/permissions.js b/packages/strapi-borked/src/extensions/users-permissions/server/routes/content-api/permissions.js new file mode 100644 index 0000000..f6cf4a0 --- /dev/null +++ b/packages/strapi-borked/src/extensions/users-permissions/server/routes/content-api/permissions.js @@ -0,0 +1,9 @@ +'use strict'; + +module.exports = [ + { + method: 'GET', + path: '/permissions', + handler: 'permissions.getPermissions', + }, +]; diff --git a/packages/strapi-borked/src/extensions/users-permissions/server/routes/content-api/role.js b/packages/strapi-borked/src/extensions/users-permissions/server/routes/content-api/role.js new file mode 100644 index 0000000..ca72365 --- /dev/null +++ b/packages/strapi-borked/src/extensions/users-permissions/server/routes/content-api/role.js @@ -0,0 +1,29 @@ +'use strict'; + +module.exports = [ + { + method: 'GET', + path: '/roles/:id', + handler: 'role.findOne', + }, + { + method: 'GET', + path: '/roles', + handler: 'role.find', + }, + { + method: 'POST', + path: '/roles', + handler: 'role.createRole', + }, + { + method: 'PUT', + path: '/roles/:role', + handler: 'role.updateRole', + }, + { + method: 'DELETE', + path: '/roles/:role', + handler: 'role.deleteRole', + }, +]; diff --git a/packages/strapi-borked/src/extensions/users-permissions/server/routes/content-api/user.js b/packages/strapi-borked/src/extensions/users-permissions/server/routes/content-api/user.js new file mode 100644 index 0000000..a573a1e --- /dev/null +++ b/packages/strapi-borked/src/extensions/users-permissions/server/routes/content-api/user.js @@ -0,0 +1,60 @@ +'use strict'; + +module.exports = [ + { + method: 'GET', + path: '/users/count', + handler: 'user.count', + config: { + prefix: '', + }, + }, + { + method: 'GET', + path: '/users', + handler: 'user.find', + config: { + prefix: '', + }, + }, + { + method: 'GET', + path: '/users/me', + handler: 'user.me', + config: { + prefix: '', + }, + }, + { + method: 'GET', + path: '/users/:id', + handler: 'user.findOne', + config: { + prefix: '', + }, + }, + { + method: 'POST', + path: '/users', + handler: 'user.create', + config: { + prefix: '', + }, + }, + { + method: 'PUT', + path: '/users/:id', + handler: 'user.update', + config: { + prefix: '', + }, + }, + { + method: 'DELETE', + path: '/users/:id', + handler: 'user.destroy', + config: { + prefix: '', + }, + }, +]; diff --git a/packages/strapi-borked/src/extensions/users-permissions/server/routes/index.js b/packages/strapi-borked/src/extensions/users-permissions/server/routes/index.js new file mode 100644 index 0000000..6939f2d --- /dev/null +++ b/packages/strapi-borked/src/extensions/users-permissions/server/routes/index.js @@ -0,0 +1,6 @@ +'use strict'; + +module.exports = { + admin: require('./admin'), + 'content-api': require('./content-api'), +}; diff --git a/packages/strapi-borked/src/extensions/users-permissions/server/services/index.js b/packages/strapi-borked/src/extensions/users-permissions/server/services/index.js new file mode 100644 index 0000000..3df8e27 --- /dev/null +++ b/packages/strapi-borked/src/extensions/users-permissions/server/services/index.js @@ -0,0 +1,19 @@ +'use strict'; + +const jwt = require('./jwt'); +const providers = require('./providers'); +const user = require('./user'); +const role = require('./role'); +const usersPermissions = require('./users-permissions'); +const providersRegistry = require('./providers-registry'); +const permission = require('./permission'); + +module.exports = { + jwt, + providers, + 'providers-registry': providersRegistry, + role, + user, + 'users-permissions': usersPermissions, + permission, +}; diff --git a/packages/strapi-borked/src/extensions/users-permissions/server/services/jwt.js b/packages/strapi-borked/src/extensions/users-permissions/server/services/jwt.js new file mode 100644 index 0000000..e5b300a --- /dev/null +++ b/packages/strapi-borked/src/extensions/users-permissions/server/services/jwt.js @@ -0,0 +1,79 @@ +'use strict'; + +/** + * Jwt.js service + * + * @description: A set of functions similar to controller's actions to avoid code duplication. + */ + +const _ = require('lodash'); +const jwt = require('jsonwebtoken'); + +module.exports = ({ strapi }) => ({ + getToken(ctx) { + let token; + + if (ctx.request && ctx.request.header && ctx.request.header.authorization) { + const parts = ctx.request.header.authorization.split(/\s+/); + + if (parts[0].toLowerCase() !== 'bearer' || parts.length !== 2) { + return null; + } + + token = parts[1]; + } else { + return null; + } + + return this.verify(token); + }, + + issue(payload, jwtOptions = {}) { + _.defaults(jwtOptions, strapi.config.get('plugin.users-permissions.jwt')); + + // jwt.issue and jwt.verify are modified from stock strapi code because I believe there is an issue with how stock strapi handles JWT. + // see https://github.com/auth0/node-jsonwebtoken/issues/208#issuecomment-231861138 + // console.log(`>>> JWT ISSUE invoked!!! jwtSecret:${strapi.config.get('plugin.users-permissions.jwtSecret')}`) + + // const jwtOne = jwt.sign( + // _.clone(payload), + // strapi.config.get('plugin.users-permissions.jwtSecret'), + // jwtOptions + // ) + + // const jwtTwo = jwt.sign( + // _.clone(payload), + // new Buffer.from(strapi.config.get('plugin.users-permissions.jwtSecret'), 'base64'), + // jwtOptions + // ) + + // console.log(`ok so lets do the thing. here is jwtOne:${jwtOne}`) + // console.log(`ok so lets do the thing. here is jwtTwo:${jwtTwo}`) + + + return jwt.sign( + _.clone(payload.toJSON ? payload.toJSON() : payload), + new Buffer.from(strapi.config.get('plugin.users-permissions.jwtSecret'), 'base64'), + jwtOptions + ); + }, + + verify(token) { + return new Promise((resolve, reject) => { + // jwt.issue and jwt.verify are modified from stock strapi code because I believe there is an issue with how stock strapi handles JWT. + // see https://github.com/auth0/node-jsonwebtoken/issues/208#issuecomment-231861138 + + jwt.verify( + token, + new Buffer.from(strapi.config.get('plugin.users-permissions.jwtSecret'), 'base64'), + {}, + (err, tokenPayload = {}) => { + if (err) { + return reject(new Error('Invalid token.')); + } + resolve(tokenPayload); + } + ); + }); + }, +}); diff --git a/packages/strapi-borked/src/extensions/users-permissions/server/services/permission.js b/packages/strapi-borked/src/extensions/users-permissions/server/services/permission.js new file mode 100644 index 0000000..fbcdd2d --- /dev/null +++ b/packages/strapi-borked/src/extensions/users-permissions/server/services/permission.js @@ -0,0 +1,45 @@ +'use strict'; + +const PUBLIC_ROLE_FILTER = { role: { type: 'public' } }; + +module.exports = ({ strapi }) => ({ + /** + * Find permissions associated to a specific role ID + * + * @param {number} roleID + * + * @return {object[]} + */ + async findRolePermissions(roleID) { + return strapi.entityService.load( + 'plugin::users-permissions.role', + { id: roleID }, + 'permissions' + ); + }, + + /** + * Find permissions for the public role + * + * @return {object[]} + */ + async findPublicPermissions() { + return strapi.entityService.findMany('plugin::users-permissions.permission', { + filters: PUBLIC_ROLE_FILTER, + }); + }, + + /** + * Transform a Users-Permissions' action into a content API one + * + * @param {object} permission + * @param {string} permission.action + * + * @return {{ action: string }} + */ + toContentAPIPermission(permission) { + const { action } = permission; + + return { action }; + }, +}); diff --git a/packages/strapi-borked/src/extensions/users-permissions/server/services/providers-registry.js b/packages/strapi-borked/src/extensions/users-permissions/server/services/providers-registry.js new file mode 100644 index 0000000..fe9490a --- /dev/null +++ b/packages/strapi-borked/src/extensions/users-permissions/server/services/providers-registry.js @@ -0,0 +1,382 @@ +'use strict'; + +const { strict: assert } = require('assert'); +const jwt = require('jsonwebtoken'); +const jwkToPem = require('jwk-to-pem'); + +const getCognitoPayload = async ({ idToken, jwksUrl, purest }) => { + const { + header: { kid }, + payload, + } = jwt.decode(idToken, { complete: true }); + + if (!payload || !kid) { + throw new Error('The provided token is not valid'); + } + + const config = { + cognito: { + discovery: { + origin: jwksUrl.origin, + path: jwksUrl.pathname, + }, + }, + }; + try { + const cognito = purest({ provider: 'cognito', config }); + // get the JSON Web Key (JWK) for the user pool + const { body: jwk } = await cognito('discovery').request(); + // Get the key with the same Key ID as the provided token + const key = jwk.keys.find(({ kid: jwkKid }) => jwkKid === kid); + const pem = jwkToPem(key); + + // https://docs.aws.amazon.com/cognito/latest/developerguide/amazon-cognito-user-pools-using-tokens-verifying-a-jwt.html + const decodedToken = await new Promise((resolve, reject) => { + jwt.verify(idToken, pem, { algorithms: ['RS256'] }, (err, decodedToken) => { + if (err) { + reject(); + } + resolve(decodedToken); + }); + }); + return decodedToken; + } catch (err) { + throw new Error('There was an error verifying the token'); + } +}; + +const getInitialProviders = ({ purest }) => ({ + async discord({ accessToken }) { + const discord = purest({ provider: 'discord' }); + + return discord + .get('users/@me') + .auth(accessToken) + .request() + .then(({ body }) => { + // Combine username and discriminator because discord username is not unique + const username = `${body.username}#${body.discriminator}`; + return { + username, + email: body.email, + }; + }); + }, + async cognito({ query, providers }) { + const jwksUrl = new URL(providers.cognito.jwksurl); + const idToken = query.id_token; + const tokenPayload = await getCognitoPayload({ idToken, jwksUrl, purest }); + return { + username: tokenPayload['cognito:username'], + email: tokenPayload.email, + }; + }, + async facebook({ accessToken }) { + const facebook = purest({ provider: 'facebook' }); + + return facebook + .get('me') + .auth(accessToken) + .qs({ fields: 'name,email' }) + .request() + .then(({ body }) => ({ + username: body.name, + email: body.email, + })); + }, + async google({ accessToken }) { + const google = purest({ provider: 'google' }); + + return google + .query('oauth') + .get('tokeninfo') + .qs({ accessToken }) + .request() + .then(({ body }) => ({ + username: body.email.split('@')[0], + email: body.email, + })); + }, + async github({ accessToken }) { + const github = purest({ + provider: 'github', + defaults: { + headers: { + 'user-agent': 'strapi', + }, + }, + }); + + const { body: userBody } = await github.get('user').auth(accessToken).request(); + + // This is the public email on the github profile + if (userBody.email) { + return { + username: userBody.login, + email: userBody.email, + }; + } + // Get the email with Github's user/emails API + const { body: emailBody } = await github.get('user/emails').auth(accessToken).request(); + + return { + username: userBody.login, + email: Array.isArray(emailBody) + ? emailBody.find((email) => email.primary === true).email + : null, + }; + }, + async microsoft({ accessToken }) { + const microsoft = purest({ provider: 'microsoft' }); + + return microsoft + .get('me') + .auth(accessToken) + .request() + .then(({ body }) => ({ + username: body.userPrincipalName, + email: body.userPrincipalName, + })); + }, + async twitter({ accessToken, query, providers }) { + const twitter = purest({ + provider: 'twitter', + defaults: { + oauth: { + consumer_key: providers.twitter.key, + consumer_secret: providers.twitter.secret, + }, + }, + }); + + return twitter + .get('account/verify_credentials') + .auth(accessToken, query.access_secret) + .qs({ screen_name: query['raw[screen_name]'], include_email: 'true' }) + .request() + .then(({ body }) => ({ + username: body.screen_name, + email: body.email, + })); + }, + async instagram({ accessToken }) { + const instagram = purest({ provider: 'instagram' }); + + return instagram + .get('me') + .auth(accessToken) + .qs({ fields: 'id,username' }) + .request() + .then(({ body }) => ({ + username: body.username, + email: `${body.username}@strapi.io`, // dummy email as Instagram does not provide user email + })); + }, + async vk({ accessToken, query }) { + const vk = purest({ provider: 'vk' }); + + return vk + .get('users') + .auth(accessToken) + .qs({ id: query.raw.user_id, v: '5.122' }) + .request() + .then(({ body }) => ({ + username: `${body.response[0].last_name} ${body.response[0].first_name}`, + email: query.raw.email, + })); + }, + async twitch({ accessToken, providers }) { + const twitch = purest({ + provider: 'twitch', + config: { + twitch: { + default: { + origin: 'https://api.twitch.tv', + path: 'helix/{path}', + headers: { + Authorization: 'Bearer {auth}', + 'Client-Id': '{auth}', + }, + }, + }, + }, + }); + + return twitch + .get('users') + .auth(accessToken, providers.twitch.key) + .request() + .then(({ body }) => ({ + username: body.data[0].login, + email: body.data[0].email, + })); + }, + async linkedin({ accessToken }) { + const linkedIn = purest({ provider: 'linkedin' }); + const { + body: { localizedFirstName }, + } = await linkedIn.get('me').auth(accessToken).request(); + const { + body: { elements }, + } = await linkedIn + .get('emailAddress?q=members&projection=(elements*(handle~))') + .auth(accessToken) + .request(); + + const email = elements[0]['handle~']; + + return { + username: localizedFirstName, + email: email.emailAddress, + }; + }, + async reddit({ accessToken }) { + const reddit = purest({ + provider: 'reddit', + config: { + reddit: { + default: { + origin: 'https://oauth.reddit.com', + path: 'api/{version}/{path}', + version: 'v1', + headers: { + Authorization: 'Bearer {auth}', + 'user-agent': 'strapi', + }, + }, + }, + }, + }); + + return reddit + .get('me') + .auth(accessToken) + .request() + .then(({ body }) => ({ + username: body.name, + email: `${body.name}@strapi.io`, // dummy email as Reddit does not provide user email + })); + }, + async auth0({ accessToken, providers }) { + const auth0 = purest({ provider: 'auth0' }); + + return auth0 + .get('userinfo') + .subdomain(providers.auth0.subdomain) + .auth(accessToken) + .request() + .then(({ body }) => { + const username = body.username || body.nickname || body.name || body.email.split('@')[0]; + const email = body.email || `${username.replace(/\s+/g, '.')}@strapi.io`; + + return { + username, + email, + }; + }); + }, + async cas({ accessToken, providers }) { + const cas = purest({ provider: 'cas' }); + + return cas + .get('oidc/profile') + .subdomain(providers.cas.subdomain) + .auth(accessToken) + .request() + .then(({ body }) => { + // CAS attribute may be in body.attributes or "FLAT", depending on CAS config + const username = body.attributes + ? body.attributes.strapiusername || body.id || body.sub + : body.strapiusername || body.id || body.sub; + const email = body.attributes + ? body.attributes.strapiemail || body.attributes.email + : body.strapiemail || body.email; + if (!username || !email) { + strapi.log.warn( + `CAS Response Body did not contain required attributes: ${JSON.stringify(body)}` + ); + } + return { + username, + email, + }; + }); + }, + async patreon({ accessToken }) { + const patreon = purest({ + provider: 'patreon', + config: { + patreon: { + default: { + origin: 'https://www.patreon.com', + path: 'api/oauth2/{path}', + headers: { + authorization: 'Bearer {auth}', + }, + }, + }, + }, + }); + + return patreon + .get('v2/identity') + .auth(accessToken) + .qs(new URLSearchParams({ + 'include': 'memberships,memberships.currently_entitled_tiers,memberships.currently_entitled_tiers.benefits,memberships.campaign', + 'fields[user]': 'full_name,email', + 'fields[member]': 'full_name,is_follower,patron_status,currently_entitled_amount_cents,campaign_lifetime_support_cents', + 'fields[tier]': 'title', + 'fields[benefit]': 'title', + }).toString()) + .request() + .then(({ body }) => { + const patreonData = body.data.attributes; + + let memberships = [] + let benefits = [] + if (body?.included !== undefined) { + memberships = body.included + .filter((i) => i.type === 'member') + .filter((i) => i.attributes.patron_status === 'active_patron') + .map((i) => i.id) + + benefits = body.included + .filter((i) => i.type === 'benefit') + .map((i) => i.id) + } + + + return { + username: patreonData.full_name, + email: patreonData.email, + memberships: memberships, + benefits: benefits, + }; + }); + }, +}); + +module.exports = () => { + const purest = require('purest'); + + const providersCallbacks = getInitialProviders({ purest }); + + return { + register(providerName, provider) { + assert(typeof providerName === 'string', 'Provider name must be a string'); + assert(typeof provider === 'function', 'Provider callback must be a function'); + + providersCallbacks[providerName] = provider({ purest }); + }, + + async run({ provider, accessToken, query, providers }) { + if (!providersCallbacks[provider]) { + throw new Error('Unknown provider.'); + } + + const providerCb = providersCallbacks[provider]; + + return providerCb({ accessToken, query, providers }); + }, + }; +}; diff --git a/packages/strapi-borked/src/extensions/users-permissions/server/services/providers.js b/packages/strapi-borked/src/extensions/users-permissions/server/services/providers.js new file mode 100644 index 0000000..e5f919e --- /dev/null +++ b/packages/strapi-borked/src/extensions/users-permissions/server/services/providers.js @@ -0,0 +1,156 @@ +'use strict'; + +/** + * Module dependencies + */ + +// Public node modules. +const _ = require('lodash'); +const urlJoin = require('url-join'); + +const { getAbsoluteServerUrl } = require('@strapi/utils'); +const { getService } = require('../utils'); + +module.exports = ({ strapi }) => { + /** + * Helper to get profiles + * + * @param {String} provider + */ + + const getProfile = async (provider, query) => { + const accessToken = query.access_token || query.code || query.oauth_token; + + const providers = await strapi + .store({ type: 'plugin', name: 'users-permissions', key: 'grant' }) + .get(); + + return getService('providers-registry').run({ + provider, + query, + accessToken, + providers, + }); + }; + + /** + * Connect thanks to a third-party provider. + * + * + * @param {String} provider + * @param {String} accessToken + * + * @return {*} + */ + + const connect = async (provider, query) => { + const accessToken = query.access_token || query.code || query.oauth_token; + + if (!accessToken) { + throw new Error('No access_token.'); + } + + // Get the profile. + const profile = await getProfile(provider, query); + + const email = _.toLower(profile.email); + + // We need at least the mail. + if (!email) { + throw new Error('Email was not available.'); + } + + const users = await strapi.query('plugin::users-permissions.user').findMany({ + where: { email }, + }); + + const advancedSettings = await strapi + .store({ type: 'plugin', name: 'users-permissions', key: 'advanced' }) + .get(); + + const user = _.find(users, { provider }); + + if (_.isEmpty(user) && !advancedSettings.allow_register) { + throw new Error('Register action is actually not available.'); + } + + if (!_.isEmpty(user)) { + console.log(`>>> welcome back, user!`) + console.log(user) + } + + + // Retrieve default role. + const defaultRole = await strapi + .query('plugin::users-permissions.role') + .findOne({ where: { type: advancedSettings.default_role } }); + + const patronRole = await strapi + .query('plugin::users-permissions.role') + .findOne({ where: { name: 'Patron' }}); + + if (_.isEmpty(patronRole)) throw new Error('Patron role is missing in Strapi. Please create it in users-permissions plugin.'); + + const patreonModel = await strapi + .query('api::patreon.patreon') + .findOne({ select: ['id', 'accessToken', 'benefitId'], where: { id: 1 } }); + + console.log(` >> patreon model`) + console.log(patreonModel) + console.log(` >> patreon:${patreonModel.id}`) + + // get the user's patron status + console.log(` >> HERE is the user's patreon profile`) + const isPatron = profile.benefits.includes(patreonModel.benefitId) + const patreonBenefits = profile.benefits.join(',') + console.log(`isPatron:${isPatron}`) + + + // Update the user's role to match their patron status + const selectedRole = (isPatron) ? patronRole : defaultRole + + + if (!_.isEmpty(user)) { + const updatedUser = await strapi + .query('plugin::users-permissions.user') + .update({ + where: { email }, + data: { + ...user, + role: selectedRole.id, + patreonBenefits + } + }) + return updatedUser; + } + + if (users.length && advancedSettings.unique_email) { + throw new Error('Email is already taken.'); + } + + // Create the new user. + const newUser = { + ...profile, + email, // overwrite with lowercased email + provider, + role: selectedRole.id, + confirmed: true, + }; + + const createdUser = await strapi + .query('plugin::users-permissions.user') + .create({ data: newUser }); + + return createdUser; + }; + + const buildRedirectUri = (provider = '') => { + const apiPrefix = strapi.config.get('api.rest.prefix'); + return urlJoin(getAbsoluteServerUrl(strapi.config), apiPrefix, 'connect', provider, 'callback'); + }; + + return { + connect, + buildRedirectUri, + }; +}; diff --git a/packages/strapi-borked/src/extensions/users-permissions/server/services/role.js b/packages/strapi-borked/src/extensions/users-permissions/server/services/role.js new file mode 100644 index 0000000..7b2ab81 --- /dev/null +++ b/packages/strapi-borked/src/extensions/users-permissions/server/services/role.js @@ -0,0 +1,177 @@ +'use strict'; + +const _ = require('lodash'); +const { NotFoundError } = require('@strapi/utils').errors; +const { getService } = require('../utils'); + +module.exports = ({ strapi }) => ({ + async createRole(params) { + if (!params.type) { + params.type = _.snakeCase(_.deburr(_.toLower(params.name))); + } + + const role = await strapi + .query('plugin::users-permissions.role') + .create({ data: _.omit(params, ['users', 'permissions']) }); + + const createPromises = _.flatMap(params.permissions, (type, typeName) => { + return _.flatMap(type.controllers, (controller, controllerName) => { + return _.reduce( + controller, + (acc, action, actionName) => { + const { enabled /* policy */ } = action; + + if (enabled) { + const actionID = `${typeName}.${controllerName}.${actionName}`; + + acc.push( + strapi + .query('plugin::users-permissions.permission') + .create({ data: { action: actionID, role: role.id } }) + ); + } + + return acc; + }, + [] + ); + }); + }); + + await Promise.all(createPromises); + }, + + async findOne(roleID) { + const role = await strapi + .query('plugin::users-permissions.role') + .findOne({ where: { id: roleID }, populate: ['permissions'] }); + + if (!role) { + throw new NotFoundError('Role not found'); + } + + const allActions = getService('users-permissions').getActions(); + + // Group by `type`. + role.permissions.forEach((permission) => { + const [type, controller, action] = permission.action.split('.'); + + _.set(allActions, `${type}.controllers.${controller}.${action}`, { + enabled: true, + policy: '', + }); + }); + + return { + ...role, + permissions: allActions, + }; + }, + + async find() { + const roles = await strapi.query('plugin::users-permissions.role').findMany({ sort: ['name'] }); + + for (const role of roles) { + role.nb_users = await strapi + .query('plugin::users-permissions.user') + .count({ where: { role: { id: role.id } } }); + } + + return roles; + }, + + async updateRole(roleID, data) { + const role = await strapi + .query('plugin::users-permissions.role') + .findOne({ where: { id: roleID }, populate: ['permissions'] }); + + if (!role) { + throw new NotFoundError('Role not found'); + } + + await strapi.query('plugin::users-permissions.role').update({ + where: { id: roleID }, + data: _.pick(data, ['name', 'description']), + }); + + const { permissions } = data; + + const newActions = _.flatMap(permissions, (type, typeName) => { + return _.flatMap(type.controllers, (controller, controllerName) => { + return _.reduce( + controller, + (acc, action, actionName) => { + const { enabled /* policy */ } = action; + + if (enabled) { + acc.push(`${typeName}.${controllerName}.${actionName}`); + } + + return acc; + }, + [] + ); + }); + }); + + const oldActions = role.permissions.map(({ action }) => action); + + const toDelete = role.permissions.reduce((acc, permission) => { + if (!newActions.includes(permission.action)) { + acc.push(permission); + } + return acc; + }, []); + + const toCreate = newActions + .filter((action) => !oldActions.includes(action)) + .map((action) => ({ action, role: role.id })); + + await Promise.all( + toDelete.map((permission) => + strapi + .query('plugin::users-permissions.permission') + .delete({ where: { id: permission.id } }) + ) + ); + + await Promise.all( + toCreate.map((permissionInfo) => + strapi.query('plugin::users-permissions.permission').create({ data: permissionInfo }) + ) + ); + }, + + async deleteRole(roleID, publicRoleID) { + const role = await strapi + .query('plugin::users-permissions.role') + .findOne({ where: { id: roleID }, populate: ['users', 'permissions'] }); + + if (!role) { + throw new NotFoundError('Role not found'); + } + + // Move users to guest role. + await Promise.all( + role.users.map((user) => { + return strapi.query('plugin::users-permissions.user').update({ + where: { id: user.id }, + data: { role: publicRoleID }, + }); + }) + ); + + // Remove permissions related to this role. + // TODO: use delete many + await Promise.all( + role.permissions.map((permission) => { + return strapi.query('plugin::users-permissions.permission').delete({ + where: { id: permission.id }, + }); + }) + ); + + // Delete the role. + await strapi.query('plugin::users-permissions.role').delete({ where: { id: roleID } }); + }, +}); diff --git a/packages/strapi-borked/src/extensions/users-permissions/server/services/user.js b/packages/strapi-borked/src/extensions/users-permissions/server/services/user.js new file mode 100644 index 0000000..27cf71a --- /dev/null +++ b/packages/strapi-borked/src/extensions/users-permissions/server/services/user.js @@ -0,0 +1,148 @@ +'use strict'; + +/** + * User.js service + * + * @description: A set of functions similar to controller's actions to avoid code duplication. + */ + +const crypto = require('crypto'); +const bcrypt = require('bcryptjs'); +const urlJoin = require('url-join'); + +const { getAbsoluteAdminUrl, getAbsoluteServerUrl, sanitize } = require('@strapi/utils'); +const { getService } = require('../utils'); + +module.exports = ({ strapi }) => ({ + /** + * Promise to count users + * + * @return {Promise} + */ + + count(params) { + return strapi.query('plugin::users-permissions.user').count({ where: params }); + }, + + /** + * Promise to search count users + * + * @return {Promise} + */ + + /** + * Promise to add a/an user. + * @return {Promise} + */ + async add(values) { + return strapi.entityService.create('plugin::users-permissions.user', { + data: values, + populate: ['role'], + }); + }, + + /** + * Promise to edit a/an user. + * @param {string} userId + * @param {object} params + * @return {Promise} + */ + async edit(userId, params = {}) { + return strapi.entityService.update('plugin::users-permissions.user', userId, { + data: params, + populate: ['role'], + }); + }, + + /** + * Promise to fetch a/an user. + * @return {Promise} + */ + fetch(id, params) { + return strapi.entityService.findOne('plugin::users-permissions.user', id, params); + }, + + /** + * Promise to fetch authenticated user. + * @return {Promise} + */ + fetchAuthenticatedUser(id) { + return strapi + .query('plugin::users-permissions.user') + .findOne({ where: { id }, populate: ['role'] }); + }, + + /** + * Promise to fetch all users. + * @return {Promise} + */ + fetchAll(params) { + return strapi.entityService.findMany('plugin::users-permissions.user', params); + }, + + /** + * Promise to remove a/an user. + * @return {Promise} + */ + async remove(params) { + return strapi.query('plugin::users-permissions.user').delete({ where: params }); + }, + + validatePassword(password, hash) { + return bcrypt.compare(password, hash); + }, + + async sendConfirmationEmail(user) { + const userPermissionService = getService('users-permissions'); + const pluginStore = await strapi.store({ type: 'plugin', name: 'users-permissions' }); + const userSchema = strapi.getModel('plugin::users-permissions.user'); + + const settings = await pluginStore + .get({ key: 'email' }) + .then((storeEmail) => storeEmail.email_confirmation.options); + + // Sanitize the template's user information + const sanitizedUserInfo = await sanitize.sanitizers.defaultSanitizeOutput(userSchema, user); + + const confirmationToken = crypto.randomBytes(20).toString('hex'); + + await this.edit(user.id, { confirmationToken }); + + const apiPrefix = strapi.config.get('api.rest.prefix'); + + try { + settings.message = await userPermissionService.template(settings.message, { + URL: urlJoin(getAbsoluteServerUrl(strapi.config), apiPrefix, '/auth/email-confirmation'), + SERVER_URL: getAbsoluteServerUrl(strapi.config), + ADMIN_URL: getAbsoluteAdminUrl(strapi.config), + USER: sanitizedUserInfo, + CODE: confirmationToken, + }); + + settings.object = await userPermissionService.template(settings.object, { + USER: sanitizedUserInfo, + }); + } catch { + strapi.log.error( + '[plugin::users-permissions.sendConfirmationEmail]: Failed to generate a template for "user confirmation email". Please make sure your email template is valid and does not contain invalid characters or patterns' + ); + return; + } + + // Send an email to the user. + await strapi + .plugin('email') + .service('email') + .send({ + to: user.email, + from: + settings.from.email && settings.from.name + ? `${settings.from.name} <${settings.from.email}>` + : undefined, + replyTo: settings.response_email, + subject: settings.object, + text: settings.message, + html: settings.message, + }); + }, +}); diff --git a/packages/strapi-borked/src/extensions/users-permissions/server/services/users-permissions.js b/packages/strapi-borked/src/extensions/users-permissions/server/services/users-permissions.js new file mode 100644 index 0000000..3389cdb --- /dev/null +++ b/packages/strapi-borked/src/extensions/users-permissions/server/services/users-permissions.js @@ -0,0 +1,249 @@ +'use strict'; + +const _ = require('lodash'); +const { filter, map, pipe, prop } = require('lodash/fp'); +const urlJoin = require('url-join'); +const { + template: { createStrictInterpolationRegExp }, + errors, + keysDeep, +} = require('@strapi/utils'); + +const { getService } = require('../utils'); + +const DEFAULT_PERMISSIONS = [ + { action: 'plugin::users-permissions.auth.callback', roleType: 'public' }, + { action: 'plugin::users-permissions.auth.connect', roleType: 'public' }, + { action: 'plugin::users-permissions.auth.forgotPassword', roleType: 'public' }, + { action: 'plugin::users-permissions.auth.resetPassword', roleType: 'public' }, + { action: 'plugin::users-permissions.auth.register', roleType: 'public' }, + { action: 'plugin::users-permissions.auth.emailConfirmation', roleType: 'public' }, + { action: 'plugin::users-permissions.auth.sendEmailConfirmation', roleType: 'public' }, + { action: 'plugin::users-permissions.user.me', roleType: 'authenticated' }, + { action: 'plugin::users-permissions.auth.changePassword', roleType: 'authenticated' }, +]; + +const transformRoutePrefixFor = (pluginName) => (route) => { + const prefix = route.config && route.config.prefix; + const path = prefix !== undefined ? `${prefix}${route.path}` : `/${pluginName}${route.path}`; + + return { + ...route, + path, + }; +}; + +module.exports = ({ strapi }) => ({ + getActions({ defaultEnable = false } = {}) { + const actionMap = {}; + + const isContentApi = (action) => { + if (!_.has(action, Symbol.for('__type__'))) { + return false; + } + + return action[Symbol.for('__type__')].includes('content-api'); + }; + + _.forEach(strapi.api, (api, apiName) => { + const controllers = _.reduce( + api.controllers, + (acc, controller, controllerName) => { + const contentApiActions = _.pickBy(controller, isContentApi); + + if (_.isEmpty(contentApiActions)) { + return acc; + } + + acc[controllerName] = _.mapValues(contentApiActions, () => { + return { + enabled: defaultEnable, + policy: '', + }; + }); + + return acc; + }, + {} + ); + + if (!_.isEmpty(controllers)) { + actionMap[`api::${apiName}`] = { controllers }; + } + }); + + _.forEach(strapi.plugins, (plugin, pluginName) => { + const controllers = _.reduce( + plugin.controllers, + (acc, controller, controllerName) => { + const contentApiActions = _.pickBy(controller, isContentApi); + + if (_.isEmpty(contentApiActions)) { + return acc; + } + + acc[controllerName] = _.mapValues(contentApiActions, () => { + return { + enabled: defaultEnable, + policy: '', + }; + }); + + return acc; + }, + {} + ); + + if (!_.isEmpty(controllers)) { + actionMap[`plugin::${pluginName}`] = { controllers }; + } + }); + + return actionMap; + }, + + async getRoutes() { + const routesMap = {}; + + _.forEach(strapi.api, (api, apiName) => { + const routes = _.flatMap(api.routes, (route) => { + if (_.has(route, 'routes')) { + return route.routes; + } + + return route; + }).filter((route) => route.info.type === 'content-api'); + + if (routes.length === 0) { + return; + } + + const apiPrefix = strapi.config.get('api.rest.prefix'); + routesMap[`api::${apiName}`] = routes.map((route) => ({ + ...route, + path: urlJoin(apiPrefix, route.path), + })); + }); + + _.forEach(strapi.plugins, (plugin, pluginName) => { + const transformPrefix = transformRoutePrefixFor(pluginName); + + const routes = _.flatMap(plugin.routes, (route) => { + if (_.has(route, 'routes')) { + return route.routes.map(transformPrefix); + } + + return transformPrefix(route); + }).filter((route) => route.info.type === 'content-api'); + + if (routes.length === 0) { + return; + } + + const apiPrefix = strapi.config.get('api.rest.prefix'); + routesMap[`plugin::${pluginName}`] = routes.map((route) => ({ + ...route, + path: urlJoin(apiPrefix, route.path), + })); + }); + + return routesMap; + }, + + async syncPermissions() { + const roles = await strapi.query('plugin::users-permissions.role').findMany(); + const dbPermissions = await strapi.query('plugin::users-permissions.permission').findMany(); + + const permissionsFoundInDB = _.uniq(_.map(dbPermissions, 'action')); + + const appActions = _.flatMap(strapi.api, (api, apiName) => { + return _.flatMap(api.controllers, (controller, controllerName) => { + return _.keys(controller).map((actionName) => { + return `api::${apiName}.${controllerName}.${actionName}`; + }); + }); + }); + + const pluginsActions = _.flatMap(strapi.plugins, (plugin, pluginName) => { + return _.flatMap(plugin.controllers, (controller, controllerName) => { + return _.keys(controller).map((actionName) => { + return `plugin::${pluginName}.${controllerName}.${actionName}`; + }); + }); + }); + + const allActions = [...appActions, ...pluginsActions]; + + const toDelete = _.difference(permissionsFoundInDB, allActions); + + await Promise.all( + toDelete.map((action) => { + return strapi.query('plugin::users-permissions.permission').delete({ where: { action } }); + }) + ); + + if (permissionsFoundInDB.length === 0) { + // create default permissions + for (const role of roles) { + const toCreate = pipe( + filter(({ roleType }) => roleType === role.type || roleType === null), + map(prop('action')) + )(DEFAULT_PERMISSIONS); + + await Promise.all( + toCreate.map((action) => { + return strapi.query('plugin::users-permissions.permission').create({ + data: { + action, + role: role.id, + }, + }); + }) + ); + } + } + }, + + async initialize() { + const roleCount = await strapi.query('plugin::users-permissions.role').count(); + + if (roleCount === 0) { + await strapi.query('plugin::users-permissions.role').create({ + data: { + name: 'Authenticated', + description: 'Default role given to authenticated user.', + type: 'authenticated', + }, + }); + + await strapi.query('plugin::users-permissions.role').create({ + data: { + name: 'Public', + description: 'Default role given to unauthenticated user.', + type: 'public', + }, + }); + } + + return getService('users-permissions').syncPermissions(); + }, + + async updateUserRole(user, role) { + return strapi + .query('plugin::users-permissions.user') + .update({ where: { id: user.id }, data: { role } }); + }, + + template(layout, data) { + const allowedTemplateVariables = keysDeep(data); + + // Create a strict interpolation RegExp based on possible variable names + const interpolate = createStrictInterpolationRegExp(allowedTemplateVariables, 'g'); + + try { + return _.template(layout, { interpolate, evaluate: false, escape: false })(data); + } catch (e) { + throw new errors.ApplicationError('Invalid email template'); + } + }, +}); diff --git a/packages/strapi-borked/src/extensions/users-permissions/server/strategies/users-permissions.js b/packages/strapi-borked/src/extensions/users-permissions/server/strategies/users-permissions.js new file mode 100644 index 0000000..7ff3421 --- /dev/null +++ b/packages/strapi-borked/src/extensions/users-permissions/server/strategies/users-permissions.js @@ -0,0 +1,114 @@ +'use strict'; + +const { castArray, map, every, pipe } = require('lodash/fp'); +const { ForbiddenError, UnauthorizedError } = require('@strapi/utils').errors; + +const { getService } = require('../utils'); + +const getAdvancedSettings = () => { + return strapi.store({ type: 'plugin', name: 'users-permissions' }).get({ key: 'advanced' }); +}; + +const authenticate = async (ctx) => { + try { + const token = await getService('jwt').getToken(ctx); + + if (token) { + const { id } = token; + + // Invalid token + if (id === undefined) { + return { authenticated: false }; + } + + const user = await getService('user').fetchAuthenticatedUser(id); + + // No user associated to the token + if (!user) { + return { error: 'Invalid credentials' }; + } + + const advancedSettings = await getAdvancedSettings(); + + // User not confirmed + if (advancedSettings.email_confirmation && !user.confirmed) { + return { error: 'Invalid credentials' }; + } + + // User blocked + if (user.blocked) { + return { error: 'Invalid credentials' }; + } + + // Fetch user's permissions + const permissions = await Promise.resolve(user.role.id) + .then(getService('permission').findRolePermissions) + .then(map(getService('permission').toContentAPIPermission)); + + // Generate an ability (content API engine) based on the given permissions + const ability = await strapi.contentAPI.permissions.engine.generateAbility(permissions); + + ctx.state.user = user; + + return { + authenticated: true, + credentials: user, + ability, + }; + } + + const publicPermissions = await getService('permission') + .findPublicPermissions() + .then(map(getService('permission').toContentAPIPermission)); + + if (publicPermissions.length === 0) { + return { authenticated: false }; + } + + const ability = await strapi.contentAPI.permissions.engine.generateAbility(publicPermissions); + + return { + authenticated: true, + credentials: null, + ability, + }; + } catch (err) { + return { authenticated: false }; + } +}; + +const verify = async (auth, config) => { + const { credentials: user, ability } = auth; + + if (!config.scope) { + if (!user) { + // A non authenticated user cannot access routes that do not have a scope + throw new UnauthorizedError(); + } else { + // An authenticated user can access non scoped routes + return; + } + } + + // If no ability have been generated, then consider auth is missing + if (!ability) { + throw new UnauthorizedError(); + } + + const isAllowed = pipe( + // Make sure we're dealing with an array + castArray, + // Transform the scope array into an action array + every((scope) => ability.can(scope)) + )(config.scope); + + if (!isAllowed) { + throw new ForbiddenError(); + } +}; + +module.exports = { + name: 'users-permissions', + authenticate, + verify, +}; diff --git a/packages/strapi-borked/src/extensions/users-permissions/server/utils/index.d.ts b/packages/strapi-borked/src/extensions/users-permissions/server/utils/index.d.ts new file mode 100644 index 0000000..b9d7e20 --- /dev/null +++ b/packages/strapi-borked/src/extensions/users-permissions/server/utils/index.d.ts @@ -0,0 +1,18 @@ +import * as usersPermissions from '../services/users-permissions'; +import * as user from '../services/user'; +import * as role from '../services/role'; +import * as jwt from '../services/jwt'; +import * as providers from '../services/providers'; +import * as permission from '../services/permission'; + +type S = { + ['users-permissions']: typeof usersPermissions; + ['role']: typeof role; + user: typeof user; + jwt: typeof jwt; + providers: typeof providers; + ['providers-registry']: typeof providers; + permission: typeof permission; +}; + +export function getService(name: T): ReturnType ; diff --git a/packages/strapi-borked/src/extensions/users-permissions/server/utils/index.js b/packages/strapi-borked/src/extensions/users-permissions/server/utils/index.js new file mode 100644 index 0000000..c87a858 --- /dev/null +++ b/packages/strapi-borked/src/extensions/users-permissions/server/utils/index.js @@ -0,0 +1,12 @@ +'use strict'; + +const sanitize = require('./sanitize'); + +const getService = (name) => { + return strapi.plugin('users-permissions').service(name); +}; + +module.exports = { + getService, + sanitize, +}; diff --git a/packages/strapi-borked/src/extensions/users-permissions/server/utils/sanitize/index.js b/packages/strapi-borked/src/extensions/users-permissions/server/utils/sanitize/index.js new file mode 100644 index 0000000..db0884f --- /dev/null +++ b/packages/strapi-borked/src/extensions/users-permissions/server/utils/sanitize/index.js @@ -0,0 +1,9 @@ +'use strict'; + +const visitors = require('./visitors'); +const sanitizers = require('./sanitizers'); + +module.exports = { + sanitizers, + visitors, +}; diff --git a/packages/strapi-borked/src/extensions/users-permissions/server/utils/sanitize/sanitizers.js b/packages/strapi-borked/src/extensions/users-permissions/server/utils/sanitize/sanitizers.js new file mode 100644 index 0000000..940dbd0 --- /dev/null +++ b/packages/strapi-borked/src/extensions/users-permissions/server/utils/sanitize/sanitizers.js @@ -0,0 +1,19 @@ +'use strict'; + +const { curry } = require('lodash/fp'); +const { traverseEntity, pipeAsync } = require('@strapi/utils'); + +const { removeUserRelationFromRoleEntities } = require('./visitors'); + +const sanitizeUserRelationFromRoleEntities = curry((schema, entity) => { + return traverseEntity(removeUserRelationFromRoleEntities, { schema }, entity); +}); + +const defaultSanitizeOutput = curry((schema, entity) => { + return pipeAsync(sanitizeUserRelationFromRoleEntities(schema))(entity); +}); + +module.exports = { + sanitizeUserRelationFromRoleEntities, + defaultSanitizeOutput, +}; diff --git a/packages/strapi-borked/src/extensions/users-permissions/server/utils/sanitize/visitors/index.js b/packages/strapi-borked/src/extensions/users-permissions/server/utils/sanitize/visitors/index.js new file mode 100644 index 0000000..bc20d0f --- /dev/null +++ b/packages/strapi-borked/src/extensions/users-permissions/server/utils/sanitize/visitors/index.js @@ -0,0 +1,5 @@ +'use strict'; + +module.exports = { + removeUserRelationFromRoleEntities: require('./remove-user-relation-from-role-entities'), +}; diff --git a/packages/strapi-borked/src/extensions/users-permissions/server/utils/sanitize/visitors/remove-user-relation-from-role-entities.js b/packages/strapi-borked/src/extensions/users-permissions/server/utils/sanitize/visitors/remove-user-relation-from-role-entities.js new file mode 100644 index 0000000..e20f85a --- /dev/null +++ b/packages/strapi-borked/src/extensions/users-permissions/server/utils/sanitize/visitors/remove-user-relation-from-role-entities.js @@ -0,0 +1,11 @@ +'use strict'; + +module.exports = ({ schema, key, attribute }, { remove }) => { + if ( + attribute.type === 'relation' && + attribute.target === 'plugin::users-permissions.user' && + schema.uid === 'plugin::users-permissions.role' + ) { + remove(key); + } +}; diff --git a/packages/strapi-borked/src/extensions/users-permissions/strapi-admin.js b/packages/strapi-borked/src/extensions/users-permissions/strapi-admin.js new file mode 100644 index 0000000..2d1a3d9 --- /dev/null +++ b/packages/strapi-borked/src/extensions/users-permissions/strapi-admin.js @@ -0,0 +1,3 @@ +'use strict'; + +module.exports = require('./admin/src').default; diff --git a/packages/strapi-borked/src/extensions/users-permissions/strapi-server.js b/packages/strapi-borked/src/extensions/users-permissions/strapi-server.js new file mode 100644 index 0000000..74205c9 --- /dev/null +++ b/packages/strapi-borked/src/extensions/users-permissions/strapi-server.js @@ -0,0 +1,12 @@ +'use strict'; + +// Yes, this file is custom. +module.exports = (plugin) => { + plugin.bootstrap = require('./server/bootstrap'); + plugin.services['providers'] = require('./server/services/providers'); + plugin.services['providers-registry'] = require('./server/services/providers-registry'); + plugin.services['jwt'] = require('./server/services/jwt'); + return plugin; +} + + diff --git a/packages/strapi-borked/src/index.js b/packages/strapi-borked/src/index.js new file mode 100644 index 0000000..316be2c --- /dev/null +++ b/packages/strapi-borked/src/index.js @@ -0,0 +1,80 @@ +'use strict'; + + + +// const purest = require('purest'); + +// const patreon = async function patreon({ accessToken }) { +// console.log(` >> patreon callback ascivated with accessToken:${accessToken}`) +// const patreon = purest({ +// provider: 'patreon', +// config: { +// patreon: { +// default: { +// origin: 'https://www.patreon.com', +// path: 'api/oauth2/{path}', +// headers: { +// authorization: 'Bearer {auth}', +// }, +// }, +// }, +// }, +// }); + +// return patreon +// .get('v2/identity') +// .auth(accessToken) +// .qs(new URLSearchParams({ +// "include": "memberships,memberships.currently_entitled_tiers,memberships.currently_entitled_tiers.benefits,memberships.campaign", +// "fields[member]": "full_name,is_follower,patron_status,currently_entitled_amount_cents,campaign_lifetime_support_cents", +// 'fields[user]': 'full_name', +// }).toString()) +// .request() +// .then(({ body }) => { +// const patreonData = body.data.attributes; +// console.log(` >> patreonData`) +// console.log(patreonData) +// return { +// username: patreonData.full_name, +// memberships: patreonData +// }; +// }); +// } + + +module.exports = { + /** + * An asynchronous register function that runs before + * your application is initialized. + * + * This gives you an opportunity to extend code. + */ + register({ strapi }) { + + // console.log(strapi.plugin('users-permissions').service('providers-registry')) + // strapi.plugin('users-permissions').service('providers-registry').register('taco', patreon) + }, + + /** + * An asynchronous bootstrap function that runs before + * your application gets started. + * + * This gives you an opportunity to set up your data model, + * run jobs, or perform some special logic. + */ + bootstrap(/*{ strapi }*/) { + + }, +}; + + + + +// module.exports = async () => { +// await strapi.admin.services.permission.conditionProvider.register({ +// displayName: 'Billing amount under 10K', +// name: 'billing-amount-under-10k', +// plugin: 'admin', +// handler: { amount: { $lt: 10000 } }, +// }); +// }; \ No newline at end of file diff --git a/packages/strapi-borked/src/policies/updateOwnerOnly.js b/packages/strapi-borked/src/policies/updateOwnerOnly.js new file mode 100644 index 0000000..86d2786 --- /dev/null +++ b/packages/strapi-borked/src/policies/updateOwnerOnly.js @@ -0,0 +1,34 @@ +'use strict'; + +/** + * `updateOwnerOnly` policy. + */ +module.exports = (policyContext, config, { strapi }) => { + const { PolicyError } = require("@strapi/utils").errors; + + if (policyContext.state.auth.strategy.name === "api-token") { + if (policyContext.state.auth.credentials.type === "full-access") + return true; + } else if ( + policyContext.state.auth.strategy.name === "users-permissions" + ) { + + // Skip for admins + if (policyContext.state.auth.credentials.role.type === "admin") { + return true; + } + + const currentUserId = policyContext.state.auth.credentials.id; + const userToUpdate = policyContext.params.id; + + // Unable that an user can update another user + if (currentUserId != userToUpdate) { + strapi.log.info(`WARNING: User ${currentUserId} tried to edit user ${userToUpdate}`); + throw new PolicyError('Unable to edit this user ID'); + } + + return true + } + + return false; +}; \ No newline at end of file diff --git a/packages/strapi/.editorconfig b/packages/strapi/.editorconfig new file mode 100644 index 0000000..473e451 --- /dev/null +++ b/packages/strapi/.editorconfig @@ -0,0 +1,16 @@ +root = true + +[*] +indent_style = space +indent_size = 2 +end_of_line = lf +charset = utf-8 +trim_trailing_whitespace = true +insert_final_newline = true + +[{package.json,*.yml}] +indent_style = space +indent_size = 2 + +[*.md] +trim_trailing_whitespace = false diff --git a/packages/strapi/.eslintignore b/packages/strapi/.eslintignore new file mode 100644 index 0000000..90759a5 --- /dev/null +++ b/packages/strapi/.eslintignore @@ -0,0 +1,3 @@ +.cache +build +**/node_modules/** diff --git a/packages/strapi/.eslintrc b/packages/strapi/.eslintrc new file mode 100644 index 0000000..b2ca93b --- /dev/null +++ b/packages/strapi/.eslintrc @@ -0,0 +1,27 @@ +{ + "parser": "babel-eslint", + "extends": "eslint:recommended", + "env": { + "commonjs": true, + "es6": true, + "node": true, + "browser": false + }, + "parserOptions": { + "ecmaFeatures": { + "experimentalObjectRestSpread": true, + "jsx": false + }, + "sourceType": "module" + }, + "globals": { + "strapi": true + }, + "rules": { + "indent": ["error", 2, { "SwitchCase": 1 }], + "linebreak-style": ["error", "unix"], + "no-console": 0, + "quotes": ["error", "single"], + "semi": ["error", "always"] + } +} diff --git a/packages/strapi/.gitignore b/packages/strapi/.gitignore index afa1f1d..91e0eb7 100644 --- a/packages/strapi/.gitignore +++ b/packages/strapi/.gitignore @@ -1,6 +1,3 @@ -.env* -tunnel.conf - ############################ # OS X ############################ @@ -102,7 +99,6 @@ node_modules # Tests ############################ -testApp coverage ############################ @@ -112,7 +108,8 @@ coverage .env license.txt exports -*.cache +.strapi dist build .strapi-updater.json +.strapi-cloud.json diff --git a/packages/strapi/.strapi/client/app.js b/packages/strapi/.strapi/client/app.js index e0f39d0..7dba764 100644 --- a/packages/strapi/.strapi/client/app.js +++ b/packages/strapi/.strapi/client/app.js @@ -2,13 +2,15 @@ * This file was automatically generated by Strapi. * Any modifications made will be discarded. */ -import i18N from "@strapi/plugin-i18n/strapi-admin"; import usersPermissions from "@strapi/plugin-users-permissions/strapi-admin"; +import i18N from "@strapi/plugin-i18n/strapi-admin"; +import strapiCloud from "@strapi/plugin-cloud/strapi-admin"; import { renderAdmin } from "@strapi/strapi/admin"; renderAdmin(document.getElementById("strapi"), { plugins: { - i18n: i18N, "users-permissions": usersPermissions, + i18n: i18N, + "strapi-cloud": strapiCloud, }, }); diff --git a/packages/strapi/README.md b/packages/strapi/README.md index 5259892..879d89b 100644 --- a/packages/strapi/README.md +++ b/packages/strapi/README.md @@ -1,13 +1,57 @@ -## dev notes +# 🚀 Getting started with Strapi -### patreon campaign benefit ids +Strapi comes with a full featured [Command Line Interface](https://docs.strapi.io/dev-docs/cli) (CLI) which lets you scaffold and manage your project in seconds. - * ironmouse "Thank you" (for testing): 4760169 - * cj_clippy "Full library access" (for production): 9380584 - * cj_clippy "Your URL displayed on Futureporn.net": 10663202 +### `develop` -### Content-Type Builder (Docker caveat) +Start your Strapi application with autoReload enabled. [Learn more](https://docs.strapi.io/dev-docs/cli#strapi-develop) -Don't use the web UI to create or update Content-Types! The changes will be lost. This is a side-effect of our hacked together solution for Strapi with pnpm in docker. +``` +npm run develop +# or +yarn develop +``` -Instead, content-type schemas must be hand-edited in ./src/api/(...). For the changes to take effect, trigger a strapi resource update in Tilt. \ No newline at end of file +### `start` + +Start your Strapi application with autoReload disabled. [Learn more](https://docs.strapi.io/dev-docs/cli#strapi-start) + +``` +npm run start +# or +yarn start +``` + +### `build` + +Build your admin panel. [Learn more](https://docs.strapi.io/dev-docs/cli#strapi-build) + +``` +npm run build +# or +yarn build +``` + +## ⚙️ Deployment + +Strapi gives you many possible deployment options for your project including [Strapi Cloud](https://cloud.strapi.io). Browse the [deployment section of the documentation](https://docs.strapi.io/dev-docs/deployment) to find the best solution for your use case. + +## 📚 Learn more + +- [Resource center](https://strapi.io/resource-center) - Strapi resource center. +- [Strapi documentation](https://docs.strapi.io) - Official Strapi documentation. +- [Strapi tutorials](https://strapi.io/tutorials) - List of tutorials made by the core team and the community. +- [Strapi blog](https://strapi.io/blog) - Official Strapi blog containing articles made by the Strapi team and the community. +- [Changelog](https://strapi.io/changelog) - Find out about the Strapi product updates, new features and general improvements. + +Feel free to check out the [Strapi GitHub repository](https://github.com/strapi/strapi). Your feedback and contributions are welcome! + +## ✨ Community + +- [Discord](https://discord.strapi.io) - Come chat with the Strapi community including the core team. +- [Forum](https://forum.strapi.io/) - Place to discuss, ask questions and find answers, show your Strapi project and get feedback or just talk with other Community members. +- [Awesome Strapi](https://github.com/strapi/awesome-strapi) - A curated list of awesome things related to Strapi. + +--- + +🤫 Psst! [Strapi is hiring](https://strapi.io/careers). diff --git a/packages/strapi/config/admin.js b/packages/strapi/config/admin.js index 92f535b..fa18851 100644 --- a/packages/strapi/config/admin.js +++ b/packages/strapi/config/admin.js @@ -10,4 +10,8 @@ module.exports = ({ env }) => ({ salt: env('TRANSFER_TOKEN_SALT'), }, }, + flags: { + nps: env.bool('FLAG_NPS', true), + promoteEE: env.bool('FLAG_PROMOTE_EE', true), + }, }); diff --git a/packages/strapi/config/database.js b/packages/strapi/config/database.js index 63290e0..63a17c3 100644 --- a/packages/strapi/config/database.js +++ b/packages/strapi/config/database.js @@ -1,9 +1,52 @@ const path = require('path'); module.exports = ({ env }) => { - const client = env('DATABASE_CLIENT', 'postgres'); + const client = env('DATABASE_CLIENT', 'sqlite'); const connections = { + mysql: { + connection: { + connectionString: env('DATABASE_URL'), + host: env('DATABASE_HOST', 'localhost'), + port: env.int('DATABASE_PORT', 3306), + database: env('DATABASE_NAME', 'strapi'), + user: env('DATABASE_USERNAME', 'strapi'), + password: env('DATABASE_PASSWORD', 'strapi'), + ssl: env.bool('DATABASE_SSL', false) && { + key: env('DATABASE_SSL_KEY', undefined), + cert: env('DATABASE_SSL_CERT', undefined), + ca: env('DATABASE_SSL_CA', undefined), + capath: env('DATABASE_SSL_CAPATH', undefined), + cipher: env('DATABASE_SSL_CIPHER', undefined), + rejectUnauthorized: env.bool( + 'DATABASE_SSL_REJECT_UNAUTHORIZED', + true + ), + }, + }, + pool: { min: env.int('DATABASE_POOL_MIN', 2), max: env.int('DATABASE_POOL_MAX', 10) }, + }, + mysql2: { + connection: { + host: env('DATABASE_HOST', 'localhost'), + port: env.int('DATABASE_PORT', 3306), + database: env('DATABASE_NAME', 'strapi'), + user: env('DATABASE_USERNAME', 'strapi'), + password: env('DATABASE_PASSWORD', 'strapi'), + ssl: env.bool('DATABASE_SSL', false) && { + key: env('DATABASE_SSL_KEY', undefined), + cert: env('DATABASE_SSL_CERT', undefined), + ca: env('DATABASE_SSL_CA', undefined), + capath: env('DATABASE_SSL_CAPATH', undefined), + cipher: env('DATABASE_SSL_CIPHER', undefined), + rejectUnauthorized: env.bool( + 'DATABASE_SSL_REJECT_UNAUTHORIZED', + true + ), + }, + }, + pool: { min: env.int('DATABASE_POOL_MIN', 2), max: env.int('DATABASE_POOL_MAX', 10) }, + }, postgres: { connection: { connectionString: env('DATABASE_URL'), @@ -32,7 +75,7 @@ module.exports = ({ env }) => { filename: path.join( __dirname, '..', - env('DATABASE_FILENAME', 'data.db') + env('DATABASE_FILENAME', '.tmp/data.db') ), }, useNullAsDefault: true, diff --git a/packages/strapi/config/middlewares.js b/packages/strapi/config/middlewares.js index 9dcfed6..6eaf586 100644 --- a/packages/strapi/config/middlewares.js +++ b/packages/strapi/config/middlewares.js @@ -1,21 +1,7 @@ module.exports = [ 'strapi::logger', 'strapi::errors', - { - name: 'strapi::security', - config: { - contentSecurityPolicy: { - useDefaults: true, - directives: { - 'connect-src': ["'self'", 'https:'], - 'img-src': ["'self'", 'data:', 'blob:', 'dl.airtable.com', 'res.cloudinary.com'], - 'media-src': ["'self'", 'data:', 'blob:', 'dl.airtable.com', 'res.cloudinary.com'], - upgradeInsecureRequests: null, - }, - }, - }, - }, - + 'strapi::security', 'strapi::cors', 'strapi::poweredBy', 'strapi::query', diff --git a/packages/strapi/config/plugins.js b/packages/strapi/config/plugins.js index a47d2a5..5b3cfd1 100644 --- a/packages/strapi/config/plugins.js +++ b/packages/strapi/config/plugins.js @@ -1,75 +1,45 @@ -module.exports = ({ - env -}) => ({ - 'fuzzy-search': { - enabled: true, - config: { - contentTypes: [{ - uid: 'api::tag.tag', - modelName: 'tag', - transliterate: false, - queryConstraints: { - where: { - '$and': [ - { - publishedAt: { - '$notNull': true +module.exports = () => ({ + 'fuzzy-search': { + enabled: true, + config: { + contentTypes: [{ + uid: 'api::tag.tag', + modelName: 'tag', + transliterate: false, + queryConstraints: { + where: { + '$and': [ + { + publishedAt: { + '$notNull': true + } + }, + ] + } + }, + fuzzysortOptions: { + characterLimit: 32, + threshold: -600, + limit: 10, + keys: [{ + name: 'name', + weight: 100 + }] } - }, - ] - } - }, - fuzzysortOptions: { - characterLimit: 32, - threshold: -600, - limit: 10, - keys: [{ - name: 'name', - weight: 100 - }] + }] } - }] - } - }, - upload: { - config: { - provider: 'cloudinary', - providerOptions: { - cloud_name: env('CLOUDINARY_NAME'), - api_key: env('CLOUDINARY_KEY'), - api_secret: env('CLOUDINARY_SECRET'), - }, - actionOptions: { - upload: {}, - uploadStream: {}, - delete: {}, - }, - } - }, - email: { - config: { - provider: 'sendgrid', - providerOptions: { - apiKey: env('SENDGRID_API_KEY'), - }, - settings: { - defaultFrom: 'welcome@futureporn.net', - defaultReplyTo: 'cj@futureporn.net', - testAddress: 'grimtech@fastmail.com', - }, }, - }, - "users-permissions": { - config: { - register: { - allowedFields: [ - "isNamePublic", - "isLinkPublic", - "avatar", - "vanityLink", - "patreonBenefits" - ] - } + "users-permissions": { + config: { + register: { + allowedFields: [ + "isNamePublic", + "isLinkPublic", + "avatar", + "vanityLink", + "patreonBenefits" + ] + } + } } - } -}); \ No newline at end of file +}); diff --git a/packages/strapi/config/server.js b/packages/strapi/config/server.js index 26a385f..668244e 100644 --- a/packages/strapi/config/server.js +++ b/packages/strapi/config/server.js @@ -1,15 +1,11 @@ -// greets some - module.exports = ({ env }) => ({ host: env('HOST', '0.0.0.0'), port: env.int('PORT', 1337), - proxy: true, app: { keys: env.array('APP_KEYS'), }, webhooks: { - populateRelations: env.bool('WEBHOOKS_POPULATE_RELATIONS', false) + populateRelations: env.bool('WEBHOOKS_POPULATE_RELATIONS', false), }, - url: env('STRAPI_URL', 'https://portal.futureporn.net') + url: env('STRAPI_URL', 'http://localhost:1337'), }); - diff --git a/packages/strapi/database/migrations/2024-07-04-add-fansly-id-to-vtuber.js b/packages/strapi/database/migrations/2024-07-04-add-fansly-id-to-vtuber.js new file mode 100644 index 0000000..3314815 --- /dev/null +++ b/packages/strapi/database/migrations/2024-07-04-add-fansly-id-to-vtuber.js @@ -0,0 +1,28 @@ +module.exports = { + async up(knex) { + + console.log(`MIGRATION-- 2024-07-04-add-fansly-id-to-vtuber.js`); + + // Check if the 'fansly_id' column already exists in the 'vtubers' table + const hasColumn = await knex.schema.hasColumn('vtubers', 'fansly_id'); + + if (!hasColumn) { + console.log(`Adding the 'fansly_id' column to the 'vtubers' table`); + await knex.schema.table('vtubers', (table) => { + table.string('fansly_id'); + }); + } + + // Get all vtubers from the database + const vtubers = await knex.select('*').from('vtubers'); + + // For each vtuber, populate fansly_id if it's null or undefined + for (const [_, vtuber] of vtubers.entries()) { + if (!vtuber.fansly_id) { + await knex('vtubers').update({ fansly_id: '' }).where({ id: vtuber.id }); + } + } + + }, +}; + diff --git a/packages/strapi/jsconfig.json b/packages/strapi/jsconfig.json new file mode 100644 index 0000000..4ebd927 --- /dev/null +++ b/packages/strapi/jsconfig.json @@ -0,0 +1,8 @@ +{ + "compilerOptions": { + "moduleResolution": "nodenext", + "target": "ES2021", + "checkJs": true, + "allowJs": true + } +} diff --git a/packages/strapi/package.json b/packages/strapi/package.json index 63baa24..69bf4c9 100644 --- a/packages/strapi/package.json +++ b/packages/strapi/package.json @@ -1,84 +1,41 @@ { - "name": "@futureporn/strapi", + "name": "strapi", "private": true, - "version": "0.3.0", + "version": "0.1.0", "description": "A Strapi application", "scripts": { - "dev": "strapi develop", - "dev:c": "concurrently \"npm:tunnel\" \"npm:dev:strapi\"", - "tunnel": "ngrok start futureporn-strapi", - "chisel": "bash ./chisel.sh", - "db": "bash ./database/devDb.sh", + "develop": "strapi develop", "start": "strapi start", "build": "strapi build", - "strapi": "strapi" + "strapi": "strapi", + "deploy": "strapi deploy" }, "dependencies": { "@11ty/eleventy-fetch": "^4.0.1", "@aws-sdk/client-s3": "^3.583.0", - "@esm2cjs/execa": "6.1.1-cjs.1", "@mux/mux-node": "^7.3.5", "@paralleldrive/cuid2": "^2.2.2", - "@radix-ui/react-use-callback-ref": "^1.0.1", - "@strapi/plugin-i18n": "4.24.5", - "@strapi/plugin-users-permissions": "4.24.5", - "@strapi/provider-email-sendgrid": "4.24.5", - "@strapi/provider-upload-cloudinary": "4.24.5", - "@strapi/strapi": "4.24.5", - "@strapi/utils": "4.24.5", - "@testing-library/dom": "8.19.0", - "@testing-library/react": "12.1.4", - "@testing-library/react-hooks": "8.0.1", - "@testing-library/user-event": "14.4.3", - "aws-sdk": "^2.1628.0", - "bcryptjs": "2.4.3", - "better-sqlite3": "8.0.1", + "@strapi/plugin-cloud": "4.25.1", + "@strapi/plugin-i18n": "4.25.1", + "@strapi/plugin-users-permissions": "4.25.1", + "@strapi/strapi": "4.25.1", "canvas": "^2.11.2", - "codemirror": "^6.0.1", - "css-loader": "^6.11.0", - "date-fns": "^3.6.0", - "formik": "2.2.9", - "fuzzy-search": "^3.2.1", - "grant-koa": "5.4.8", - "history": "^4.10.1", - "immer": "9.0.19", - "jsonwebtoken": "9.0.0", - "jwk-to-pem": "2.0.5", - "koa": "^2.15.3", - "koa2-ratelimit": "^1.1.3", - "lodash": "4.17.21", - "match-sorter": "^4.2.1", - "msw": "1.0.1", - "node-abort-controller": "^3.1.1", - "object-assign": "^4.1.1", - "pg": "^8.11.5", - "prop-types": "^15.8.1", - "purest": "4.0.2", - "react": "^18.3.1", + "pg": "8.8.0", + "react": "^18.0.0", "react-dom": "^18.0.0", - "react-intl": "6.3.2", - "react-query": "3.24.3", - "react-redux": "8.0.5", "react-router-dom": "5.3.4", - "react-test-renderer": "^18.3.1", - "semver": "^7.6.2", - "sharp": "0.32.6", "strapi-plugin-fuzzy-search": "^2.2.1", - "styled-components": "5.3.3", - "typescript": "^4.7", - "url-join": "4.0.1", - "yallist": "^4.0.0", - "yup": "^0.32.11" - }, - "devDependencies": { - "concurrently": "^8.2.2" + "styled-components": "5.3.3" }, "author": { - "name": "@CJ_Clippy" + "name": "A Strapi developer" }, - "packageManager": "pnpm@9.2.0", - "license": "MIT", "strapi": { - "uuid": false - } + "uuid": "de6744d2-f4ac-43cf-aeba-224639f274d1" + }, + "engines": { + "node": ">=18.0.0 <=20.x.x", + "npm": ">=6.0.0" + }, + "license": "MIT" } diff --git a/packages/strapi/pnpm-lock.yaml b/packages/strapi/pnpm-lock.yaml index 3e6ce7b..b4935c7 100644 --- a/packages/strapi/pnpm-lock.yaml +++ b/packages/strapi/pnpm-lock.yaml @@ -13,170 +13,46 @@ importers: version: 4.0.1 '@aws-sdk/client-s3': specifier: ^3.583.0 - version: 3.600.0 - '@esm2cjs/execa': - specifier: 6.1.1-cjs.1 - version: 6.1.1-cjs.1 + version: 3.609.0 '@mux/mux-node': specifier: ^7.3.5 version: 7.3.5 '@paralleldrive/cuid2': specifier: ^2.2.2 version: 2.2.2 - '@radix-ui/react-use-callback-ref': - specifier: ^1.0.1 - version: 1.0.1(react@18.3.1) + '@strapi/plugin-cloud': + specifier: 4.25.1 + version: 4.25.1(@babel/runtime@7.24.7)(@codemirror/autocomplete@6.16.3(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.3)(@lezer/common@1.2.1))(@codemirror/language@6.10.2)(@codemirror/lint@6.8.1)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.28.3)(@strapi/strapi@4.25.1(@babel/runtime@7.24.7)(@codemirror/autocomplete@6.16.3(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.3)(@lezer/common@1.2.1))(@codemirror/language@6.10.2)(@codemirror/lint@6.8.1)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.28.3)(@swc/helpers@0.5.11)(@types/hoist-non-react-statics@3.3.5)(@types/node@20.14.9)(@types/react@18.3.3)(codemirror@5.65.16)(pg@8.8.0)(react-dom@18.3.1(react@18.3.1))(react-router-dom@5.3.4(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1))(terser@5.31.1)(type-fest@2.19.0))(@types/react@18.3.3)(codemirror@5.65.16)(react-dom@18.3.1(react@18.3.1))(react-router-dom@5.3.4(react@18.3.1))(react@18.3.1)(styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1))(typescript@5.2.2) '@strapi/plugin-i18n': - specifier: 4.24.5 - version: 4.24.5(@babel/runtime@7.24.7)(@codemirror/autocomplete@6.16.2(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.1)(@lezer/common@1.2.1))(@codemirror/language@6.10.2)(@codemirror/lint@6.8.0)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.28.1)(@strapi/strapi@4.24.5(@babel/runtime@7.24.7)(@codemirror/autocomplete@6.16.2(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.1)(@lezer/common@1.2.1))(@codemirror/language@6.10.2)(@codemirror/lint@6.8.0)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.28.1)(@swc/helpers@0.5.11)(@types/hoist-non-react-statics@3.3.5)(@types/node@20.14.5)(@types/react-dom@18.3.0)(better-sqlite3@8.0.1)(codemirror@6.0.1(@lezer/common@1.2.1))(pg@8.12.0)(react-dom@18.3.1(react@18.3.1))(react-router-dom@5.3.4(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1))(terser@5.31.1)(type-fest@2.19.0))(@types/react-dom@18.3.0)(codemirror@6.0.1(@lezer/common@1.2.1))(react-dom@18.3.1(react@18.3.1))(react-router-dom@5.3.4(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1))(typescript@4.9.5) + specifier: 4.25.1 + version: 4.25.1(@babel/runtime@7.24.7)(@codemirror/autocomplete@6.16.3(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.3)(@lezer/common@1.2.1))(@codemirror/language@6.10.2)(@codemirror/lint@6.8.1)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.28.3)(@strapi/strapi@4.25.1(@babel/runtime@7.24.7)(@codemirror/autocomplete@6.16.3(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.3)(@lezer/common@1.2.1))(@codemirror/language@6.10.2)(@codemirror/lint@6.8.1)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.28.3)(@swc/helpers@0.5.11)(@types/hoist-non-react-statics@3.3.5)(@types/node@20.14.9)(@types/react@18.3.3)(codemirror@5.65.16)(pg@8.8.0)(react-dom@18.3.1(react@18.3.1))(react-router-dom@5.3.4(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1))(terser@5.31.1)(type-fest@2.19.0))(@types/react@18.3.3)(codemirror@5.65.16)(react-dom@18.3.1(react@18.3.1))(react-router-dom@5.3.4(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1))(typescript@5.2.2) '@strapi/plugin-users-permissions': - specifier: 4.24.5 - version: 4.24.5(@babel/runtime@7.24.7)(@codemirror/autocomplete@6.16.2(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.1)(@lezer/common@1.2.1))(@codemirror/language@6.10.2)(@codemirror/lint@6.8.0)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.28.1)(@strapi/strapi@4.24.5(@babel/runtime@7.24.7)(@codemirror/autocomplete@6.16.2(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.1)(@lezer/common@1.2.1))(@codemirror/language@6.10.2)(@codemirror/lint@6.8.0)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.28.1)(@swc/helpers@0.5.11)(@types/hoist-non-react-statics@3.3.5)(@types/node@20.14.5)(@types/react-dom@18.3.0)(better-sqlite3@8.0.1)(codemirror@6.0.1(@lezer/common@1.2.1))(pg@8.12.0)(react-dom@18.3.1(react@18.3.1))(react-router-dom@5.3.4(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1))(terser@5.31.1)(type-fest@2.19.0))(@types/react-dom@18.3.0)(codemirror@6.0.1(@lezer/common@1.2.1))(react-dom@18.3.1(react@18.3.1))(react-router-dom@5.3.4(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1))(typescript@4.9.5) - '@strapi/provider-email-sendgrid': - specifier: 4.24.5 - version: 4.24.5 - '@strapi/provider-upload-cloudinary': - specifier: 4.24.5 - version: 4.24.5 + specifier: 4.25.1 + version: 4.25.1(@babel/runtime@7.24.7)(@codemirror/autocomplete@6.16.3(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.3)(@lezer/common@1.2.1))(@codemirror/language@6.10.2)(@codemirror/lint@6.8.1)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.28.3)(@strapi/strapi@4.25.1(@babel/runtime@7.24.7)(@codemirror/autocomplete@6.16.3(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.3)(@lezer/common@1.2.1))(@codemirror/language@6.10.2)(@codemirror/lint@6.8.1)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.28.3)(@swc/helpers@0.5.11)(@types/hoist-non-react-statics@3.3.5)(@types/node@20.14.9)(@types/react@18.3.3)(codemirror@5.65.16)(pg@8.8.0)(react-dom@18.3.1(react@18.3.1))(react-router-dom@5.3.4(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1))(terser@5.31.1)(type-fest@2.19.0))(@types/react@18.3.3)(codemirror@5.65.16)(react-dom@18.3.1(react@18.3.1))(react-router-dom@5.3.4(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1))(typescript@5.2.2) '@strapi/strapi': - specifier: 4.24.5 - version: 4.24.5(@babel/runtime@7.24.7)(@codemirror/autocomplete@6.16.2(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.1)(@lezer/common@1.2.1))(@codemirror/language@6.10.2)(@codemirror/lint@6.8.0)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.28.1)(@swc/helpers@0.5.11)(@types/hoist-non-react-statics@3.3.5)(@types/node@20.14.5)(@types/react-dom@18.3.0)(better-sqlite3@8.0.1)(codemirror@6.0.1(@lezer/common@1.2.1))(pg@8.12.0)(react-dom@18.3.1(react@18.3.1))(react-router-dom@5.3.4(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1))(terser@5.31.1)(type-fest@2.19.0) - '@strapi/utils': - specifier: 4.24.5 - version: 4.24.5 - '@testing-library/dom': - specifier: 8.19.0 - version: 8.19.0 - '@testing-library/react': - specifier: 12.1.4 - version: 12.1.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@testing-library/react-hooks': - specifier: 8.0.1 - version: 8.0.1(react-dom@18.3.1(react@18.3.1))(react-test-renderer@18.3.1(react@18.3.1))(react@18.3.1) - '@testing-library/user-event': - specifier: 14.4.3 - version: 14.4.3(@testing-library/dom@8.19.0) - aws-sdk: - specifier: ^2.1628.0 - version: 2.1644.0 - bcryptjs: - specifier: 2.4.3 - version: 2.4.3 - better-sqlite3: - specifier: 8.0.1 - version: 8.0.1 + specifier: 4.25.1 + version: 4.25.1(@babel/runtime@7.24.7)(@codemirror/autocomplete@6.16.3(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.3)(@lezer/common@1.2.1))(@codemirror/language@6.10.2)(@codemirror/lint@6.8.1)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.28.3)(@swc/helpers@0.5.11)(@types/hoist-non-react-statics@3.3.5)(@types/node@20.14.9)(@types/react@18.3.3)(codemirror@5.65.16)(pg@8.8.0)(react-dom@18.3.1(react@18.3.1))(react-router-dom@5.3.4(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1))(terser@5.31.1)(type-fest@2.19.0) canvas: specifier: ^2.11.2 version: 2.11.2 - codemirror: - specifier: ^6.0.1 - version: 6.0.1(@lezer/common@1.2.1) - css-loader: - specifier: ^6.11.0 - version: 6.11.0(webpack@5.92.0(esbuild@0.19.11)) - date-fns: - specifier: ^3.6.0 - version: 3.6.0 - formik: - specifier: 2.2.9 - version: 2.2.9(react@18.3.1) - fuzzy-search: - specifier: ^3.2.1 - version: 3.2.1 - grant-koa: - specifier: 5.4.8 - version: 5.4.8(koa@2.15.3) - history: - specifier: ^4.10.1 - version: 4.10.1 - immer: - specifier: 9.0.19 - version: 9.0.19 - jsonwebtoken: - specifier: 9.0.0 - version: 9.0.0 - jwk-to-pem: - specifier: 2.0.5 - version: 2.0.5 - koa: - specifier: ^2.15.3 - version: 2.15.3 - koa2-ratelimit: - specifier: ^1.1.3 - version: 1.1.3 - lodash: - specifier: 4.17.21 - version: 4.17.21 - match-sorter: - specifier: ^4.2.1 - version: 4.2.1 - msw: - specifier: 1.0.1 - version: 1.0.1(typescript@4.9.5) - node-abort-controller: - specifier: ^3.1.1 - version: 3.1.1 - object-assign: - specifier: ^4.1.1 - version: 4.1.1 pg: - specifier: ^8.11.5 - version: 8.12.0 - prop-types: - specifier: ^15.8.1 - version: 15.8.1 - purest: - specifier: 4.0.2 - version: 4.0.2 + specifier: 8.8.0 + version: 8.8.0 react: - specifier: ^18.3.1 + specifier: ^18.0.0 version: 18.3.1 react-dom: specifier: ^18.0.0 version: 18.3.1(react@18.3.1) - react-intl: - specifier: 6.3.2 - version: 6.3.2(react@18.3.1)(typescript@4.9.5) - react-query: - specifier: 3.24.3 - version: 3.24.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - react-redux: - specifier: 8.0.5 - version: 8.0.5(@types/react-dom@18.3.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(redux@4.2.1) react-router-dom: specifier: 5.3.4 version: 5.3.4(react@18.3.1) - react-test-renderer: - specifier: ^18.3.1 - version: 18.3.1(react@18.3.1) - semver: - specifier: ^7.6.2 - version: 7.6.2 - sharp: - specifier: 0.32.6 - version: 0.32.6 strapi-plugin-fuzzy-search: specifier: ^2.2.1 - version: 2.2.1(@strapi/strapi@4.24.5(@babel/runtime@7.24.7)(@codemirror/autocomplete@6.16.2(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.1)(@lezer/common@1.2.1))(@codemirror/language@6.10.2)(@codemirror/lint@6.8.0)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.28.1)(@swc/helpers@0.5.11)(@types/hoist-non-react-statics@3.3.5)(@types/node@20.14.5)(@types/react-dom@18.3.0)(better-sqlite3@8.0.1)(codemirror@6.0.1(@lezer/common@1.2.1))(pg@8.12.0)(react-dom@18.3.1(react@18.3.1))(react-router-dom@5.3.4(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1))(terser@5.31.1)(type-fest@2.19.0))(@strapi/utils@4.24.5)(yup@0.32.11) + version: 2.2.1(@strapi/strapi@4.25.1(@babel/runtime@7.24.7)(@codemirror/autocomplete@6.16.3(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.3)(@lezer/common@1.2.1))(@codemirror/language@6.10.2)(@codemirror/lint@6.8.1)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.28.3)(@swc/helpers@0.5.11)(@types/hoist-non-react-statics@3.3.5)(@types/node@20.14.9)(@types/react@18.3.3)(codemirror@5.65.16)(pg@8.8.0)(react-dom@18.3.1(react@18.3.1))(react-router-dom@5.3.4(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1))(terser@5.31.1)(type-fest@2.19.0))(@strapi/utils@4.25.1)(yup@0.32.9) styled-components: specifier: 5.3.3 version: 5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1) - typescript: - specifier: ^4.7 - version: 4.9.5 - url-join: - specifier: 4.0.1 - version: 4.0.1 - yallist: - specifier: ^4.0.0 - version: 4.0.0 - yup: - specifier: ^0.32.11 - version: 0.32.11 - devDependencies: - concurrently: - specifier: ^8.2.2 - version: 8.2.2 packages: @@ -211,137 +87,139 @@ packages: '@aws-crypto/util@5.2.0': resolution: {integrity: sha512-4RkU9EsI6ZpBve5fseQlGNUWKMa1RLPQ1dnjnQoe07ldfIzcsGb5hC5W0Dm7u423KWzawlrpbjXBrXCEv9zazQ==} - '@aws-sdk/client-s3@3.600.0': - resolution: {integrity: sha512-iYoKbJTputbf+ubkX6gSK/y/4uJEBRaXZ18jykLdBQ8UJuGrk2gqvV8h7OlGAhToCeysmmMqM0vDWyLt6lP8nw==} + '@aws-sdk/client-s3@3.609.0': + resolution: {integrity: sha512-lh8NxL9qm8eSphEcsTGjNMArYRlga4yTZCr3d7UPCRFiV1oz3e0EIA5EnxSriYi9P5Houi5d9GSWtPOel2mAow==} engines: {node: '>=16.0.0'} - '@aws-sdk/client-sso-oidc@3.600.0': - resolution: {integrity: sha512-7+I8RWURGfzvChyNQSyj5/tKrqRbzRl7H+BnTOf/4Vsw1nFOi5ROhlhD4X/Y0QCTacxnaoNcIrqnY7uGGvVRzw==} - engines: {node: '>=16.0.0'} - - '@aws-sdk/client-sso@3.598.0': - resolution: {integrity: sha512-nOI5lqPYa+YZlrrzwAJywJSw3MKVjvu6Ge2fCqQUNYMfxFB0NAaDFnl0EPjXi+sEbtCuz/uWE77poHbqiZ+7Iw==} - engines: {node: '>=16.0.0'} - - '@aws-sdk/client-sts@3.600.0': - resolution: {integrity: sha512-KQG97B7LvTtTiGmjlrG1LRAY8wUvCQzrmZVV5bjrJ/1oXAU7DITYwVbSJeX9NWg6hDuSk0VE3MFwIXS2SvfLIA==} - engines: {node: '>=16.0.0'} - - '@aws-sdk/core@3.598.0': - resolution: {integrity: sha512-HaSjt7puO5Cc7cOlrXFCW0rtA0BM9lvzjl56x0A20Pt+0wxXGeTOZZOkXQIepbrFkV2e/HYukuT9e99vXDm59g==} - engines: {node: '>=16.0.0'} - - '@aws-sdk/credential-provider-env@3.598.0': - resolution: {integrity: sha512-vi1khgn7yXzLCcgSIzQrrtd2ilUM0dWodxj3PQ6BLfP0O+q1imO3hG1nq7DVyJtq7rFHs6+9N8G4mYvTkxby2w==} - engines: {node: '>=16.0.0'} - - '@aws-sdk/credential-provider-http@3.598.0': - resolution: {integrity: sha512-N7cIafi4HVlQvEgvZSo1G4T9qb/JMLGMdBsDCT5XkeJrF0aptQWzTFH0jIdZcLrMYvzPcuEyO3yCBe6cy/ba0g==} - engines: {node: '>=16.0.0'} - - '@aws-sdk/credential-provider-ini@3.598.0': - resolution: {integrity: sha512-/ppcIVUbRwDIwJDoYfp90X3+AuJo2mvE52Y1t2VSrvUovYn6N4v95/vXj6LS8CNDhz2jvEJYmu+0cTMHdhI6eA==} + '@aws-sdk/client-sso-oidc@3.609.0': + resolution: {integrity: sha512-0bNPAyPdkWkS9EGB2A9BZDkBNrnVCBzk5lYRezoT4K3/gi9w1DTYH5tuRdwaTZdxW19U1mq7CV0YJJARKO1L9Q==} engines: {node: '>=16.0.0'} peerDependencies: - '@aws-sdk/client-sts': ^3.598.0 + '@aws-sdk/client-sts': ^3.609.0 - '@aws-sdk/credential-provider-node@3.600.0': - resolution: {integrity: sha512-1pC7MPMYD45J7yFjA90SxpR0yaSvy+yZiq23aXhAPZLYgJBAxHLu0s0mDCk/piWGPh8+UGur5K0bVdx4B1D5hw==} + '@aws-sdk/client-sso@3.609.0': + resolution: {integrity: sha512-gqXGFDkIpKHCKAbeJK4aIDt3tiwJ26Rf5Tqw9JS6BYXsdMeOB8FTzqD9R+Yc1epHd8s5L94sdqXT5PapgxFZrg==} engines: {node: '>=16.0.0'} - '@aws-sdk/credential-provider-process@3.598.0': - resolution: {integrity: sha512-rM707XbLW8huMk722AgjVyxu2tMZee++fNA8TJVNgs1Ma02Wx6bBrfIvlyK0rCcIRb0WdQYP6fe3Xhiu4e8IBA==} + '@aws-sdk/client-sts@3.609.0': + resolution: {integrity: sha512-A0B3sDKFoFlGo8RYRjDBWHXpbgirer2bZBkCIzhSPHc1vOFHt/m2NcUoE2xnBKXJFrptL1xDkvo1P+XYp/BfcQ==} engines: {node: '>=16.0.0'} - '@aws-sdk/credential-provider-sso@3.598.0': - resolution: {integrity: sha512-5InwUmrAuqQdOOgxTccRayMMkSmekdLk6s+az9tmikq0QFAHUCtofI+/fllMXSR9iL6JbGYi1940+EUmS4pHJA==} + '@aws-sdk/core@3.609.0': + resolution: {integrity: sha512-ptqw+DTxLr01+pKjDUuo53SEDzI+7nFM3WfQaEo0yhDg8vWw8PER4sWj1Ysx67ksctnZesPUjqxd5SHbtdBxiA==} engines: {node: '>=16.0.0'} - '@aws-sdk/credential-provider-web-identity@3.598.0': - resolution: {integrity: sha512-GV5GdiMbz5Tz9JO4NJtRoFXjW0GPEujA0j+5J/B723rTN+REHthJu48HdBKouHGhdzkDWkkh1bu52V02Wprw8w==} + '@aws-sdk/credential-provider-env@3.609.0': + resolution: {integrity: sha512-v69ZCWcec2iuV9vLVJMa6fAb5xwkzN4jYIT8yjo2c4Ia/j976Q+TPf35Pnz5My48Xr94EFcaBazrWedF+kwfuQ==} + engines: {node: '>=16.0.0'} + + '@aws-sdk/credential-provider-http@3.609.0': + resolution: {integrity: sha512-GQQfB9Mk4XUZwaPsk4V3w8MqleS6ApkZKVQn3vTLAKa8Y7B2Imcpe5zWbKYjDd8MPpMWjHcBGFTVlDRFP4zwSQ==} + engines: {node: '>=16.0.0'} + + '@aws-sdk/credential-provider-ini@3.609.0': + resolution: {integrity: sha512-hwaBfXuBTv6/eAdEsDfGcteYUW6Km7lvvubbxEdxIuJNF3vswR7RMGIXaEC37hhPkTTgd3H0TONammhwZIfkog==} engines: {node: '>=16.0.0'} peerDependencies: - '@aws-sdk/client-sts': ^3.598.0 + '@aws-sdk/client-sts': ^3.609.0 - '@aws-sdk/middleware-bucket-endpoint@3.598.0': - resolution: {integrity: sha512-PM7BcFfGUSkmkT6+LU9TyJiB4S8yI7dfuKQDwK5ZR3P7MKaK4Uj4yyDiv0oe5xvkF6+O2+rShj+eh8YuWkOZ/Q==} + '@aws-sdk/credential-provider-node@3.609.0': + resolution: {integrity: sha512-4J8/JRuqfxJDGD9jTHVCBxCvYt7/Vgj2Stlhj930mrjFPO/yRw8ilAAZxBWe0JHPX3QwepCmh4ErZe53F5ysxQ==} engines: {node: '>=16.0.0'} - '@aws-sdk/middleware-expect-continue@3.598.0': - resolution: {integrity: sha512-ZuHW18kaeHR8TQyhEOYMr8VwiIh0bMvF7J1OTqXHxDteQIavJWA3CbfZ9sgS4XGtrBZDyHJhjZKeCfLhN2rq3w==} + '@aws-sdk/credential-provider-process@3.609.0': + resolution: {integrity: sha512-Ux35nGOSJKZWUIM3Ny0ROZ8cqPRUEkh+tR3X2o9ydEbFiLq3eMMyEnHJqx4EeUjLRchidlm4CCid9GxMe5/gdw==} engines: {node: '>=16.0.0'} - '@aws-sdk/middleware-flexible-checksums@3.598.0': - resolution: {integrity: sha512-xukAzds0GQXvMEY9G6qt+CzwVzTx8NyKKh04O2Q+nOch6QQ8Rs+2kTRy3Z4wQmXq2pK9hlOWb5nXA7HWpmz6Ng==} + '@aws-sdk/credential-provider-sso@3.609.0': + resolution: {integrity: sha512-oQPGDKMMIxjvTcm86g07RPYeC7mCNk+29dPpY15ZAPRpAF7F0tircsC3wT9fHzNaKShEyK5LuI5Kg/uxsdy+Iw==} engines: {node: '>=16.0.0'} - '@aws-sdk/middleware-host-header@3.598.0': - resolution: {integrity: sha512-WiaG059YBQwQraNejLIi0gMNkX7dfPZ8hDIhvMr5aVPRbaHH8AYF3iNSsXYCHvA2Cfa1O9haYXsuMF9flXnCmA==} - engines: {node: '>=16.0.0'} - - '@aws-sdk/middleware-location-constraint@3.598.0': - resolution: {integrity: sha512-8oybQxN3F1ISOMULk7JKJz5DuAm5hCUcxMW9noWShbxTJuStNvuHf/WLUzXrf8oSITyYzIHPtf8VPlKR7I3orQ==} - engines: {node: '>=16.0.0'} - - '@aws-sdk/middleware-logger@3.598.0': - resolution: {integrity: sha512-bxBjf/VYiu3zfu8SYM2S9dQQc3tz5uBAOcPz/Bt8DyyK3GgOpjhschH/2XuUErsoUO1gDJqZSdGOmuHGZQn00Q==} - engines: {node: '>=16.0.0'} - - '@aws-sdk/middleware-recursion-detection@3.598.0': - resolution: {integrity: sha512-vjT9BeFY9FeN0f8hm2l6F53tI0N5bUq6RcDkQXKNabXBnQxKptJRad6oP2X5y3FoVfBLOuDkQgiC2940GIPxtQ==} - engines: {node: '>=16.0.0'} - - '@aws-sdk/middleware-sdk-s3@3.598.0': - resolution: {integrity: sha512-5AGtLAh9wyK6ANPYfaKTqJY1IFJyePIxsEbxa7zS6REheAqyVmgJFaGu3oQ5XlxfGr5Uq59tFTRkyx26G1HkHA==} - engines: {node: '>=16.0.0'} - - '@aws-sdk/middleware-signing@3.598.0': - resolution: {integrity: sha512-XKb05DYx/aBPqz6iCapsCbIl8aD8EihTuPCs51p75QsVfbQoVr4TlFfIl5AooMSITzojdAQqxt021YtvxjtxIQ==} - engines: {node: '>=16.0.0'} - - '@aws-sdk/middleware-ssec@3.598.0': - resolution: {integrity: sha512-f0p2xP8IC1uJ5e/tND1l81QxRtRFywEdnbtKCE0H6RSn4UIt2W3Dohe1qQDbnh27okF0PkNW6BJGdSAz3p7qbA==} - engines: {node: '>=16.0.0'} - - '@aws-sdk/middleware-user-agent@3.598.0': - resolution: {integrity: sha512-4tjESlHG5B5MdjUaLK7tQs/miUtHbb6deauQx8ryqSBYOhfHVgb1ZnzvQR0bTrhpqUg0WlybSkDaZAICf9xctg==} - engines: {node: '>=16.0.0'} - - '@aws-sdk/region-config-resolver@3.598.0': - resolution: {integrity: sha512-oYXhmTokSav4ytmWleCr3rs/1nyvZW/S0tdi6X7u+dLNL5Jee+uMxWGzgOrWK6wrQOzucLVjS4E/wA11Kv2GTw==} - engines: {node: '>=16.0.0'} - - '@aws-sdk/signature-v4-multi-region@3.598.0': - resolution: {integrity: sha512-1r/EyTrO1gSa1FirnR8V7mabr7gk+l+HkyTI0fcTSr8ucB7gmYyW6WjkY8JCz13VYHFK62usCEDS7yoJoJOzTA==} - engines: {node: '>=16.0.0'} - - '@aws-sdk/token-providers@3.598.0': - resolution: {integrity: sha512-TKY1EVdHVBnZqpyxyTHdpZpa1tUpb6nxVeRNn1zWG8QB5MvH4ALLd/jR+gtmWDNQbIG4cVuBOZFVL8hIYicKTA==} + '@aws-sdk/credential-provider-web-identity@3.609.0': + resolution: {integrity: sha512-U+PG8NhlYYF45zbr1km3ROtBMYqyyj/oK8NRp++UHHeuavgrP+4wJ4wQnlEaKvJBjevfo3+dlIBcaeQ7NYejWg==} engines: {node: '>=16.0.0'} peerDependencies: - '@aws-sdk/client-sso-oidc': ^3.598.0 + '@aws-sdk/client-sts': ^3.609.0 - '@aws-sdk/types@3.598.0': - resolution: {integrity: sha512-742uRl6z7u0LFmZwDrFP6r1wlZcgVPw+/TilluDJmCAR8BgRw3IR+743kUXKBGd8QZDRW2n6v/PYsi/AWCDDMQ==} + '@aws-sdk/middleware-bucket-endpoint@3.609.0': + resolution: {integrity: sha512-QhHRfr4e7FqaMUAnOAFdQVOR3yDLw40i1IZPo+TeiKyev9LEyYEX2l6DbdaIwAztofOpAxfFNj/IJ0V/efzz/w==} + engines: {node: '>=16.0.0'} + + '@aws-sdk/middleware-expect-continue@3.609.0': + resolution: {integrity: sha512-+zeg//mSer4JZRxOB/4mUOMUJyuYPwATnIC5moBB8P8Xe+mJaVRFy8qlCtzYNj2TycnlsBPzTK0j7P1yvDh97w==} + engines: {node: '>=16.0.0'} + + '@aws-sdk/middleware-flexible-checksums@3.609.0': + resolution: {integrity: sha512-TJ4WE+ehT+qcrhr7/yJCzmJJPmUoPPWIbCnFzqGxauH/dpVBCslmd1vZg3h2VnfRiaDkc6f68dqYVc29CaurhQ==} + engines: {node: '>=16.0.0'} + + '@aws-sdk/middleware-host-header@3.609.0': + resolution: {integrity: sha512-iTKfo158lc4jLDfYeZmYMIBHsn8m6zX+XB6birCSNZ/rrlzAkPbGE43CNdKfvjyWdqgLMRXF+B+OcZRvqhMXPQ==} + engines: {node: '>=16.0.0'} + + '@aws-sdk/middleware-location-constraint@3.609.0': + resolution: {integrity: sha512-xzsdoTkszGVqGVPjUmgoP7TORiByLueMHieI1fhQL888WPdqctwAx3ES6d/bA9Q/i8jnc6hs+Fjhy8UvBTkE9A==} + engines: {node: '>=16.0.0'} + + '@aws-sdk/middleware-logger@3.609.0': + resolution: {integrity: sha512-S62U2dy4jMDhDFDK5gZ4VxFdWzCtLzwbYyFZx2uvPYTECkepLUfzLic2BHg2Qvtu4QjX+oGE3P/7fwaGIsGNuQ==} + engines: {node: '>=16.0.0'} + + '@aws-sdk/middleware-recursion-detection@3.609.0': + resolution: {integrity: sha512-6sewsYB7/o/nbUfA99Aa/LokM+a/u4Wpm/X2o0RxOsDtSB795ObebLJe2BxY5UssbGaWkn7LswyfvrdZNXNj1w==} + engines: {node: '>=16.0.0'} + + '@aws-sdk/middleware-sdk-s3@3.609.0': + resolution: {integrity: sha512-kvwjL6OJFhAGWoYaIWR7HmILjiVk6xVj6QEU6qZMA7FtGgvlKi4pLfs8Of+hQqo+2TEhUoxG/5t6WqwB8uxjsw==} + engines: {node: '>=16.0.0'} + + '@aws-sdk/middleware-signing@3.609.0': + resolution: {integrity: sha512-2w3dBLjQVKIajYzokO4hduq8/0hSMUYHHmIo1Kdl+MSY8uwRBt12bLL6pyreobTcRMxizvn2ph/CQ9I1ST/WGQ==} + engines: {node: '>=16.0.0'} + + '@aws-sdk/middleware-ssec@3.609.0': + resolution: {integrity: sha512-GZSD1s7+JswWOTamVap79QiDaIV7byJFssBW68GYjyRS5EBjNfwA/8s+6uE6g39R3ojyTbYOmvcANoZEhSULXg==} + engines: {node: '>=16.0.0'} + + '@aws-sdk/middleware-user-agent@3.609.0': + resolution: {integrity: sha512-nbq7MXRmeXm4IDqh+sJRAxGPAq0OfGmGIwKvJcw66hLoG8CmhhVMZmIAEBDFr57S+YajGwnLLRt+eMI05MMeVA==} + engines: {node: '>=16.0.0'} + + '@aws-sdk/region-config-resolver@3.609.0': + resolution: {integrity: sha512-lMHBG8zg9GWYBc9/XVPKyuAUd7iKqfPP7z04zGta2kGNOKbUTeqmAdc1gJGku75p4kglIPlGBorOxti8DhRmKw==} + engines: {node: '>=16.0.0'} + + '@aws-sdk/signature-v4-multi-region@3.609.0': + resolution: {integrity: sha512-FJs0BxVMyYOKNu7nzFI1kehfgWoYmdto5B8BSS29geUACF7jlOoeCfNZWVrnMjvAxVlSQ5O7Mr575932BnsycA==} + engines: {node: '>=16.0.0'} + + '@aws-sdk/token-providers@3.609.0': + resolution: {integrity: sha512-WvhW/7XSf+H7YmtiIigQxfDVZVZI7mbKikQ09YpzN7FeN3TmYib1+0tB+EE9TbICkwssjiFc71FEBEh4K9grKQ==} + engines: {node: '>=16.0.0'} + peerDependencies: + '@aws-sdk/client-sso-oidc': ^3.609.0 + + '@aws-sdk/types@3.609.0': + resolution: {integrity: sha512-+Tqnh9w0h2LcrUsdXyT1F8mNhXz+tVYBtP19LpeEGntmvHwa2XzvLUCWpoIAIVsHp5+HdB2X9Sn0KAtmbFXc2Q==} engines: {node: '>=16.0.0'} '@aws-sdk/util-arn-parser@3.568.0': resolution: {integrity: sha512-XUKJWWo+KOB7fbnPP0+g/o5Ulku/X53t7i/h+sPHr5xxYTJJ9CYnbToo95mzxe7xWvkLrsNtJ8L+MnNn9INs2w==} engines: {node: '>=16.0.0'} - '@aws-sdk/util-endpoints@3.598.0': - resolution: {integrity: sha512-Qo9UoiVVZxcOEdiOMZg3xb1mzkTxrhd4qSlg5QQrfWPJVx/QOg+Iy0NtGxPtHtVZNHZxohYwDwV/tfsnDSE2gQ==} + '@aws-sdk/util-endpoints@3.609.0': + resolution: {integrity: sha512-Rh+3V8dOvEeE1aQmUy904DYWtLUEJ7Vf5XBPlQ6At3pBhp+zpXbsnpZzVL33c8lW1xfj6YPwtO6gOeEsl1juCQ==} engines: {node: '>=16.0.0'} '@aws-sdk/util-locate-window@3.568.0': resolution: {integrity: sha512-3nh4TINkXYr+H41QaPelCceEB2FXP3fxp93YZXB/kqJvX0U9j0N0Uk45gvsjmEPzG8XxkPEeLIfT2I1M7A6Lig==} engines: {node: '>=16.0.0'} - '@aws-sdk/util-user-agent-browser@3.598.0': - resolution: {integrity: sha512-36Sxo6F+ykElaL1mWzWjlg+1epMpSe8obwhCN1yGE7Js9ywy5U6k6l+A3q3YM9YRbm740sNxncbwLklMvuhTKw==} + '@aws-sdk/util-user-agent-browser@3.609.0': + resolution: {integrity: sha512-fojPU+mNahzQ0YHYBsx0ZIhmMA96H+ZIZ665ObU9tl+SGdbLneVZVikGve+NmHTQwHzwkFsZYYnVKAkreJLAtA==} - '@aws-sdk/util-user-agent-node@3.598.0': - resolution: {integrity: sha512-oyWGcOlfTdzkC6SVplyr0AGh54IMrDxbhg5RxJ5P+V4BKfcDoDcZV9xenUk9NsOi9MuUjxMumb9UJGkDhM1m0A==} + '@aws-sdk/util-user-agent-node@3.609.0': + resolution: {integrity: sha512-DlZBwQ/HkZyf3pOWc7+wjJRk5R7x9YxHhs2szHwtv1IW30KMabjjjX0GMlGJ9LLkBHkbaaEY/w9Tkj12XRLhRg==} engines: {node: '>=16.0.0'} peerDependencies: aws-crt: '>=1.0.0' @@ -349,8 +227,8 @@ packages: aws-crt: optional: true - '@aws-sdk/xml-builder@3.598.0': - resolution: {integrity: sha512-ZIa2RK7CHFTZ4gwK77WRtsZ6vF7xwRXxJ8KQIxK2duhoTVcn0xYxpFLdW9WZZZvdP9GIF3Loqvf8DRdeU5Jc7Q==} + '@aws-sdk/xml-builder@3.609.0': + resolution: {integrity: sha512-l9XxNcA4HX98rwCC2/KoiWcmEiRfZe4G+mYwDbCFT87JIMj6GBhLDkAzr/W8KAaA2IDr8Vc6J8fZPgVulxxfMA==} engines: {node: '>=16.0.0'} '@babel/code-frame@7.24.7': @@ -465,8 +343,8 @@ packages: '@casl/ability@6.5.0': resolution: {integrity: sha512-3guc94ugr5ylZQIpJTLz0CDfwNi0mxKVECj1vJUPAvs+Lwunh/dcuUjwzc4MHM9D8JOYX0XUZMEPedpB3vIbOw==} - '@codemirror/autocomplete@6.16.2': - resolution: {integrity: sha512-MjfDrHy0gHKlPWsvSsikhO1+BOh+eBHNgfH1OXs1+DAf30IonQldgMM3kxLDTG9ktE7kDLaA1j/l7KMPA4KNfw==} + '@codemirror/autocomplete@6.16.3': + resolution: {integrity: sha512-Vl/tIeRVVUCRDuOG48lttBasNQu8usGgXQawBXI7WJAiUDSFOfzflmEsZFZo48mAvAaa4FZ/4/yLLxFtdJaKYA==} peerDependencies: '@codemirror/language': ^6.0.0 '@codemirror/state': ^6.0.0 @@ -482,8 +360,8 @@ packages: '@codemirror/language@6.10.2': resolution: {integrity: sha512-kgbTYTo0Au6dCSc/TFy7fK3fpJmgHDv1sG1KNQKJXVi+xBTEeBPY/M30YXiU6mMXeH+YIDLsbrT4ZwNRdtF+SA==} - '@codemirror/lint@6.8.0': - resolution: {integrity: sha512-lsFofvaw0lnPRJlQylNsC4IRt/1lI4OD/yYslrSGVndOJfStc58v+8p9dgGiD90ktOfL7OhBWns1ZETYgz0EJA==} + '@codemirror/lint@6.8.1': + resolution: {integrity: sha512-IZ0Y7S4/bpaunwggW2jYqwLuHj0QtESf5xcROewY6+lDNwZ/NzvR4t+vpYgg9m7V8UXLPYqG+lu3DF470E5Oxg==} '@codemirror/search@6.5.6': resolution: {integrity: sha512-rpMgcsh7o0GuCDUXKPvww+muLA1pDJaFrpq/CCHtpQJYz8xopu4D1hPcKRoDD0YlF8gZaqTNIRa4VRBWyhyy7Q==} @@ -494,8 +372,8 @@ packages: '@codemirror/theme-one-dark@6.1.2': resolution: {integrity: sha512-F+sH0X16j/qFLMAfbciKTxVOwkdAS336b7AXTKOZhy8BR3eH/RelsnLgLFINrpST63mmN2OuwUt0W2ndUgYwUA==} - '@codemirror/view@6.28.1': - resolution: {integrity: sha512-BUWr+zCJpMkA/u69HlJmR+YkV4yPpM81HeMkOMZuwFa8iM5uJdEPKAs1icIRZKkKmy0Ub1x9/G3PQLTXdpBxrQ==} + '@codemirror/view@6.28.3': + resolution: {integrity: sha512-QVqP+ko078/h9yrW+u5grX3rQhC+BkGKADRrlDaJznfPngJOv5zObiVf0+SgAWhL/Yt0nvZ+10rO3L+gU5IbFw==} '@colors/colors@1.5.0': resolution: {integrity: sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==} @@ -835,52 +713,20 @@ packages: cpu: [x64] os: [win32] - '@esm2cjs/execa@6.1.1-cjs.1': - resolution: {integrity: sha512-FHxfnmuDIjY1VS/BLzDkL8EkbcFvi8s6x1nYQ1Nyu0An0n88EJcGhDBcRWLFwt3C3nT7xwI+MwHRH1TZcAFW2w==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + '@floating-ui/core@1.6.4': + resolution: {integrity: sha512-a4IowK4QkXl4SCWTGUR0INAfEOX3wtsYw3rKK5InQEHMGObkR8Xk44qYQD9P4r6HHw0iIfK6GUKECmY8sTkqRA==} - '@esm2cjs/human-signals@3.0.1': - resolution: {integrity: sha512-QZme4eF/PwTpeSbMB4AaWGQ4VSygzE30jI+Oas1NPTtZQAgcHwWVDOQpIW8FUmtzn5Q+2cS7AjnTzbtqtc5P6g==} - engines: {node: '>=12.20.0'} + '@floating-ui/dom@1.6.7': + resolution: {integrity: sha512-wmVfPG5o2xnKDU4jx/m4w5qva9FWHcnZ8BvzEe90D/RpwsJaTAVYPEPdQ8sbr/N8zZTAHlZUTQdqg8ZUbzHmng==} - '@esm2cjs/is-stream@3.0.0': - resolution: {integrity: sha512-qcBscHlJpZFOD5nnmMHkzOrq2xyvsp9fbVreQLS8x2LOs8N3CrNi3fqvFY0GVJR+YSOHscwhG9T5t4Ck7R7QGw==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - - '@esm2cjs/mimic-fn@4.0.0': - resolution: {integrity: sha512-LIIAjcpjLr4rcbYmRQ+eRu55Upy/MMB78seIlwqbnyiA+cTa1/pxWnJ1NHJQrw6tx2wMQmlYoJj+wf16NjWH6Q==} - engines: {node: '>=12'} - - '@esm2cjs/npm-run-path@5.1.1-cjs.0': - resolution: {integrity: sha512-CWeAIyE8iNSCgP2ItPE8iPgS+lACqgH+MuFRaWOIl2T7hnHqPFfhAJJ/LcLJJ/RMIxNMeenjFMwc91HW7NWr1A==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - - '@esm2cjs/onetime@6.0.1-cjs.0': - resolution: {integrity: sha512-MkZMZSxrSC/6yUuAw6Azc56XOgwHQQIsNDlO/zgFmOcycJBhRwRuc/gdYUUOFNZIh7y+f0JSIxkNdJPFvJ5W0w==} - engines: {node: '>=12'} - - '@esm2cjs/path-key@4.0.0': - resolution: {integrity: sha512-fKzZ3uIIP4j+7WfyG0MEkomGHL0hUXWCx1kY2Zct3GTdl4pyY+3k5lCUxjgdDa2Ld1BCjMNorXnRHiBP6jW6CQ==} - engines: {node: '>=12'} - - '@esm2cjs/strip-final-newline@3.0.1-cjs.0': - resolution: {integrity: sha512-o41riCGPiOEStayoikBCAqwa6igbv9L9rP+k5UCfQ24EJD/wGrdDs/KTNwkHG5JzDK3T60D5dMkWkLKEPy8gjA==} - engines: {node: '>=12'} - - '@floating-ui/core@1.6.2': - resolution: {integrity: sha512-+2XpQV9LLZeanU4ZevzRnGFg2neDeKHgFLjP6YLW+tly0IvrhqT4u8enLGjLH3qeh85g19xY5rsAusfwTdn5lg==} - - '@floating-ui/dom@1.6.5': - resolution: {integrity: sha512-Nsdud2X65Dz+1RHjAIP0t8z5e2ff/IRbei6BqFrl1urT8sDVzM1HMQ+R0XcU5ceRfyO3I6ayeqIfh+6Wb8LGTw==} - - '@floating-ui/react-dom@2.1.0': - resolution: {integrity: sha512-lNzj5EQmEKn5FFKc04+zasr09h/uX8RtJRNj5gUXsSQIXHVWTVh+hVAg1vOMCexkX8EgvemMvIFpQfkosnVNyA==} + '@floating-ui/react-dom@2.1.1': + resolution: {integrity: sha512-4h84MJt3CHrtG18mGsXuLCHMrug49d7DFkU0RMIyshRveBeyV2hmV/pDaF2Uxtu8kgq5r46llp5E5FQiR0K2Yg==} peerDependencies: react: '>=16.8.0' react-dom: '>=16.8.0' - '@floating-ui/utils@0.2.2': - resolution: {integrity: sha512-J4yDIIthosAsRZ5CPYP/jQvUAQtlZTTD/4suA08/FEnlxqW3sKS9iAhgsa9VYLZ6vDHn/ixJgIqRQPotoBjxIw==} + '@floating-ui/utils@0.2.4': + resolution: {integrity: sha512-dWO2pw8hhi+WrXq1YJy2yCuWoL20PddgGaqTgVe4cOS9Q6qklXCiA1tJEqX6BEwRNSCP84/afac9hd4MS+zEUA==} '@formatjs/ecma402-abstract@1.14.3': resolution: {integrity: sha512-SlsbRC/RX+/zg4AApWIFNDdkLtFbkq3LNoZWXZCE/nHVKqoIJyaoQyge/I0Y38vLxowUn9KTtXgusLD91+orbg==} @@ -888,38 +734,21 @@ packages: '@formatjs/fast-memoize@2.0.1': resolution: {integrity: sha512-M2GgV+qJn5WJQAYewz7q2Cdl6fobQa69S1AzSM2y0P68ZDbK5cWrJIcPCO395Of1ksftGZoOt4LYCO/j9BKBSA==} - '@formatjs/icu-messageformat-parser@2.3.0': - resolution: {integrity: sha512-xqtlqYAbfJDF4b6e4O828LBNOWXrFcuYadqAbYORlDRwhyJ2bH+xpUBPldZbzRGUN2mxlZ4Ykhm7jvERtmI8NQ==} - '@formatjs/icu-messageformat-parser@2.3.1': resolution: {integrity: sha512-knF2AkAKN4Upv4oIiKY4Wd/dLH68TNMPgV/tJMu/T6FP9aQwbv8fpj7U3lkyniPaNVxvia56Gxax8MKOjtxLSQ==} '@formatjs/icu-skeleton-parser@1.3.18': resolution: {integrity: sha512-ND1ZkZfmLPcHjAH1sVpkpQxA+QYfOX3py3SjKWMUVGDow18gZ0WPqz3F+pJLYQMpS2LnnQ5zYR2jPVYTbRwMpg==} - '@formatjs/intl-displaynames@6.2.6': - resolution: {integrity: sha512-scf5AQTk9EjpvPhboo5sizVOvidTdMOnajv9z+0cejvl7JNl9bl/aMrNBgC72UH+bP3l45usPUKAGskV6sNIrA==} - '@formatjs/intl-displaynames@6.3.1': resolution: {integrity: sha512-TlxguMDUbnFrJ4NA8fSyqXC62M7czvlRJ5mrJgtB91JVA+QPjjNdcRm1qPIC/DcU/pGUDcEzThn/x5A+jp15gg==} - '@formatjs/intl-listformat@7.1.9': - resolution: {integrity: sha512-5YikxwRqRXTVWVujhswDOTCq6gs+m9IcNbNZLa6FLtyBStAjEsuE2vAU+lPsbz9ZTST57D5fodjIh2JXT6sMWQ==} - '@formatjs/intl-listformat@7.2.1': resolution: {integrity: sha512-fRJFWLrGa7d25I4JSxNjKX29oXGcIXx8fJjgURnvs2C3ijS4gurUgFrUwLbv/2KfPfyJ5g567pz2INelNJZBdw==} '@formatjs/intl-localematcher@0.2.32': resolution: {integrity: sha512-k/MEBstff4sttohyEpXxCmC3MqbUn9VvHGlZ8fauLzkbwXmVrEeyzS+4uhrvAk9DWU9/7otYWxyDox4nT/KVLQ==} - '@formatjs/intl@2.6.9': - resolution: {integrity: sha512-EtcMZ9O24YSASu/jGOaTQtArx7XROjlKiO4KmkxJ/3EyAQLCr5hrS+KKvNud0a7GIwBucOb3IFrZ7WiSm2A/Cw==} - peerDependencies: - typescript: ^4.7 - peerDependenciesMeta: - typescript: - optional: true - '@formatjs/intl@2.7.1': resolution: {integrity: sha512-se6vxidsN3PCmzqTsDd3YDT4IX9ZySPy39LYhF7x2ssNvlGMOuW3umkrIhKkXB7ZskqsJGY53LVCdiHsSwhGng==} peerDependencies: @@ -986,14 +815,6 @@ packages: resolution: {integrity: sha512-Yhlar6v9WQgUp/He7BdgzOz8lqMQ8sU+jkCq7Wx8Myc5YFJLbEe7lgui/V7G1qB1DJykHSGwreceSaD60Y0PUQ==} hasBin: true - '@mswjs/cookies@0.2.2': - resolution: {integrity: sha512-mlN83YSrcFgk7Dm1Mys40DLssI1KdJji2CMKN8eOlBqsTADYzj2+jWzsANsUTFbxDMWPD5e9bfA1RGqBpS3O1g==} - engines: {node: '>=14'} - - '@mswjs/interceptors@0.17.10': - resolution: {integrity: sha512-N8x7eSLGcmUFNWZRxT1vsHvypzIRgQYdG0rJey/rZCy6zT/30qDt8Joj7FxzGNLSwXbeZqJOMqDurp7ra4hgbw==} - engines: {node: '>=14'} - '@mux/mux-node@7.3.5': resolution: {integrity: sha512-lM0DIKiNAQoT0jBCuOfbzwfky4UYrF9h2xbidEYT/I2ftO2q4891+5dFXDUmi1IJtsdIxRARsggZKqrwdsd4Eg==} engines: {node: '>=14'} @@ -1014,9 +835,6 @@ packages: resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} engines: {node: '>= 8'} - '@open-draft/until@1.0.3': - resolution: {integrity: sha512-Aq58f5HiWdyDlFffbbSjAlv596h/cOnt2DO1w3DOC7OJ5EHs0hd/nycJfiu9RJbT6Yk6F1knnRRXNSpxoIVZ9Q==} - '@paralleldrive/cuid2@2.2.2': resolution: {integrity: sha512-ZOBkgDwEdoYVlSeRbYYXs0S9MejQofiVYoTbKzy/6GQa39/q5tQU2IX46+shYnUkpEl3wc+J6wRlar7r2EK2xA==} @@ -1065,19 +883,22 @@ packages: '@polka/url@1.0.0-next.25': resolution: {integrity: sha512-j7P6Rgr3mmtdkeDGTe0E/aYyWEWVtc5yFXtHCRHs28/jptDEWfaVOc5T7cblqy1XKPPfCxJc/8DwQ5YgLOZOVQ==} - '@radix-ui/number@1.0.1': - resolution: {integrity: sha512-T5gIdVO2mmPW3NNhjNgEP3cqMXjXL9UbO0BzWcXfvdBs+BohbQxvd/K5hSVKmn9/lbTdsQVKbUcP5WLCwvUbBg==} + '@radix-ui/number@1.1.0': + resolution: {integrity: sha512-V3gRzhVNU1ldS5XhAPTom1fOIo4ccrjjJgmE+LI2h/WaFpHmx0MQApT+KZHnx8abG6Avtfcz4WoEciMnpFT3HQ==} '@radix-ui/primitive@1.0.1': resolution: {integrity: sha512-yQ8oGX2GVsEYMWGxcovu1uGWPCxV5BFfeeYxqPmuAzUyLT9qmaMXSAhXpb0WrspIeqYzdJpkh2vHModJPgRIaw==} - '@radix-ui/react-arrow@1.0.3': - resolution: {integrity: sha512-wSP+pHsB/jQRaL6voubsQ/ZlrGBHHrOjmBnr19hxYgtS0WvAFwZhK2WP/YY5yF9uKECCEEDGxuLxq1NBK51wFA==} + '@radix-ui/primitive@1.1.0': + resolution: {integrity: sha512-4Z8dn6Upk0qk4P74xBhZ6Hd/w0mPEzOOLxy4xiPXOXqjF7jZS0VAKk7/x/H6FyY2zCkYJqePf1G5KmkmNJ4RBA==} + + '@radix-ui/react-arrow@1.1.0': + resolution: {integrity: sha512-FmlW1rCg7hBpEBwFbjHwCW6AmWLQM6g/v0Sn8XbP9NvmSZ2San1FpQeyPtufzOMSIx7Y4dzjlHoifhp+7NkZhw==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: '@types/react': optional: true @@ -1097,6 +918,19 @@ packages: '@types/react-dom': optional: true + '@radix-ui/react-collection@1.1.0': + resolution: {integrity: sha512-GZsZslMJEyo1VKm5L1ZJY8tGDxZNPAoUeQUIbKeJfoi7Q4kmig5AsgLMYYuyYbfjd8fBmFORAIwYAkXMnXZgZw==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + '@radix-ui/react-compose-refs@1.0.1': resolution: {integrity: sha512-fDSBgd44FKHa1FRMU59qBMPFcl2PZE+2nmqunj+BWFyYYjnhIDWL2ItDs3rrbJDQOtzt5nIebLCQc4QRfz6LJw==} peerDependencies: @@ -1106,6 +940,15 @@ packages: '@types/react': optional: true + '@radix-ui/react-compose-refs@1.1.0': + resolution: {integrity: sha512-b4inOtiaOnYf9KWyO3jAeeCG6FeyfY6ldiEPanbUjWd+xIk5wZeHa8yVwmrJ2vderhu/BQvzCrJI0lHd+wIiqw==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@radix-ui/react-context@1.0.1': resolution: {integrity: sha512-ebbrdFoYTcuZ0v4wG5tedGnp9tzcV8awzsxYph7gXUyvnNLuTIcCk1q17JEbnVhXAKG9oX3KtchwiMIAYp9NLg==} peerDependencies: @@ -1115,6 +958,15 @@ packages: '@types/react': optional: true + '@radix-ui/react-context@1.1.0': + resolution: {integrity: sha512-OKrckBy+sMEgYM/sMmqmErVn0kZqrHPJze+Ql3DzYsDDp0hl0L62nx/2122/Bvps1qz645jlcu2tD9lrRSdf8A==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@radix-ui/react-direction@1.0.1': resolution: {integrity: sha512-RXcvnXgyvYvBEOhCBuddKecVkoMiI10Jcm5cTI7abJRAHYfFxeu+FBQs/DvdxSYucxR5mna0dNsL6QFlds5TMA==} peerDependencies: @@ -1124,26 +976,35 @@ packages: '@types/react': optional: true - '@radix-ui/react-dismissable-layer@1.0.5': - resolution: {integrity: sha512-aJeDjQhywg9LBu2t/At58hCvr7pEm0o2Ke1x33B+MhjNmmZ17sy4KImo0KPLgsnc/zN7GPdce8Cnn0SWvwZO7g==} + '@radix-ui/react-direction@1.1.0': + resolution: {integrity: sha512-BUuBvgThEiAXh2DWu93XsT+a3aWrGqolGlqqw5VU1kG7p/ZH2cuDlM1sRLNnY3QcBS69UIz2mcKhMxDsdewhjg==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-dismissable-layer@1.1.0': + resolution: {integrity: sha512-/UovfmmXGptwGcBQawLzvn2jOfM0t4z3/uKffoBlj724+n3FvBbZ7M0aaBOmkp6pqFYpO4yx8tSVJjx3Fl2jig==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: '@types/react': optional: true '@types/react-dom': optional: true - '@radix-ui/react-dropdown-menu@2.0.6': - resolution: {integrity: sha512-i6TuFOoWmLWq+M/eCLGd/bQ2HfAX1RJgvrBQ6AQLmzfvsLdefxbWu8G9zczcPFfcSPehz9GcpF6K9QYreFV8hA==} + '@radix-ui/react-dropdown-menu@2.1.1': + resolution: {integrity: sha512-y8E+x9fBq9qvteD2Zwa4397pUVhYsh9iq44b5RD5qu1GMJWBCBuVg1hMyItbc6+zH00TxGRqd9Iot4wzf3OoBQ==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: '@types/react': optional: true @@ -1159,6 +1020,15 @@ packages: '@types/react': optional: true + '@radix-ui/react-focus-guards@1.1.0': + resolution: {integrity: sha512-w6XZNUPVv6xCpZUqb/yN9DL6auvpGX3C/ee6Hdi16v2UUy25HV2Q5bcflsiDyT/g5RwbPQ/GIT1vLkeRb+ITBw==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@radix-ui/react-focus-scope@1.0.4': resolution: {integrity: sha512-sL04Mgvf+FmyvZeYfNu1EPAaaxD+aw7cYeIB9L9Fvq8+urhltTRaEo5ysKOpHuKPclsZcSUMKlN05x4u+CINpA==} peerDependencies: @@ -1172,6 +1042,19 @@ packages: '@types/react-dom': optional: true + '@radix-ui/react-focus-scope@1.1.0': + resolution: {integrity: sha512-200UD8zylvEyL8Bx+z76RJnASR2gRMuxlgFCPAe/Q/679a/r0eK3MBVYMb7vZODZcffZBdob1EGnky78xmVvcA==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + '@radix-ui/react-id@1.0.1': resolution: {integrity: sha512-tI7sT/kqYp8p96yGWY1OAnLHrqDgzHefRBKQ2YAkBS5ja7QLcZ9Z/uY7bEjPUatf8RomoXM8/1sMj1IJaE5UzQ==} peerDependencies: @@ -1181,52 +1064,61 @@ packages: '@types/react': optional: true - '@radix-ui/react-menu@2.0.6': - resolution: {integrity: sha512-BVkFLS+bUC8HcImkRKPSiVumA1VPOOEC5WBMiT+QAVsPzW1FJzI9KnqgGxVDPBcql5xXrHkD3JOVoXWEXD8SYA==} + '@radix-ui/react-id@1.1.0': + resolution: {integrity: sha512-EJUrI8yYh7WOjNOqpoJaf1jlFIH2LvtgAl+YcFqNCa+4hj64ZXmPkAKOFs/ukjz3byN6bdb/AVUqHkI8/uWWMA==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-menu@2.1.1': + resolution: {integrity: sha512-oa3mXRRVjHi6DZu/ghuzdylyjaMXLymx83irM7hTxutQbD+7IhPKdMdRHD26Rm+kHRrWcrUkkRPv5pd47a2xFQ==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: '@types/react': optional: true '@types/react-dom': optional: true - '@radix-ui/react-popper@1.1.3': - resolution: {integrity: sha512-cKpopj/5RHZWjrbF2846jBNacjQVwkP068DfmgrNJXpvVWrOvlAmE9xSiy5OqeE+Gi8D9fP+oDhUnPqNMY8/5w==} + '@radix-ui/react-popper@1.2.0': + resolution: {integrity: sha512-ZnRMshKF43aBxVWPWvbj21+7TQCvhuULWJ4gNIKYpRlQt5xGRhLx66tMp8pya2UkGHTSlhpXwmjqltDYHhw7Vg==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: '@types/react': optional: true '@types/react-dom': optional: true - '@radix-ui/react-portal@1.0.4': - resolution: {integrity: sha512-Qki+C/EuGUVCQTOTD5vzJzJuMUlewbzuKyUy+/iHM2uwGiru9gZeBJtHAPKAEkB5KWGi9mP/CHKcY0wt1aW45Q==} + '@radix-ui/react-portal@1.1.1': + resolution: {integrity: sha512-A3UtLk85UtqhzFqtoC8Q0KvR2GbXF3mtPgACSazajqq6A41mEQgo53iPzY4i6BwDxlIFqWIhiQ2G729n+2aw/g==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: '@types/react': optional: true '@types/react-dom': optional: true - '@radix-ui/react-presence@1.0.1': - resolution: {integrity: sha512-UXLW4UAbIY5ZjcvzjfRFo5gxva8QirC9hF7wRE4U5gz+TP0DbRk+//qyuAQ1McDxBt1xNMBTaciFGvEmJvAZCg==} + '@radix-ui/react-presence@1.1.0': + resolution: {integrity: sha512-Gq6wuRN/asf9H/E/VzdKoUtT8GC9PQc9z40/vEr0VCJ4u5XvvhWIrSsCB6vD2/cH7ugTdSfYq9fLJCcM00acrQ==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: '@types/react': optional: true @@ -1246,6 +1138,19 @@ packages: '@types/react-dom': optional: true + '@radix-ui/react-primitive@2.0.0': + resolution: {integrity: sha512-ZSpFm0/uHa8zTvKBDjLFWLo8dkr4MBsiDLz0g3gMUwqgLHz9rTaRRGYDgvZPtBJgYCBKXkS9fzmoySgr8CO6Cw==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + '@radix-ui/react-roving-focus@1.0.4': resolution: {integrity: sha512-2mUg5Mgcu001VkGy+FfzZyzbmuUWzgWkj3rvv4yu+mLw03+mTzbxZHvfcGyFp2b8EkQeMkpRQ5FiA2Vr2O6TeQ==} peerDependencies: @@ -1259,6 +1164,19 @@ packages: '@types/react-dom': optional: true + '@radix-ui/react-roving-focus@1.1.0': + resolution: {integrity: sha512-EA6AMGeq9AEeQDeSH0aZgG198qkfHSbvWTf1HvoDmOB5bBG/qTxjYMWUKMnYiV6J/iP/J8MEFSuB2zRU2n7ODA==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + '@radix-ui/react-separator@1.0.3': resolution: {integrity: sha512-itYmTy/kokS21aiV5+Z56MZB54KrhPgn6eHDKkFeOLR34HMN2s8PaN47qZZAGnvupcjxHaFZnW4pQEh0BvvVuw==} peerDependencies: @@ -1281,6 +1199,15 @@ packages: '@types/react': optional: true + '@radix-ui/react-slot@1.1.0': + resolution: {integrity: sha512-FUCf5XMfmW4dtYl69pdS4DbxKy8nj4M7SafBgPllysxmdachynNflAdp/gCsnYWNDnge6tI9onzMp5ARYc1KNw==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@radix-ui/react-toggle-group@1.0.4': resolution: {integrity: sha512-Uaj/M/cMyiyT9Bx6fOZO0SAG4Cls0GptBWiBmBxofmDbNVnYYoyRWj/2M/6VCi/7qcXFWnHhRUfdfZFvvkuu8A==} peerDependencies: @@ -1329,6 +1256,15 @@ packages: '@types/react': optional: true + '@radix-ui/react-use-callback-ref@1.1.0': + resolution: {integrity: sha512-CasTfvsy+frcFkbXtSJ2Zu9JHpN8TYKxkgJGWbjiZhFivxaeW7rMeZt7QELGVLaYVfFMsKHjb7Ak0nMEe+2Vfw==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@radix-ui/react-use-controllable-state@1.0.1': resolution: {integrity: sha512-Svl5GY5FQeN758fWKrjM6Qb7asvXeiZltlT4U2gVfl8Gx5UAv2sMR0LWo8yhsIZh2oQ0eFdZ59aoOOMV7b47VA==} peerDependencies: @@ -1338,11 +1274,20 @@ packages: '@types/react': optional: true - '@radix-ui/react-use-escape-keydown@1.0.3': - resolution: {integrity: sha512-vyL82j40hcFicA+M4Ex7hVkB9vHgSse1ZWomAqV2Je3RleKGO5iM8KMOEtfoSB0PnIelMd2lATjTGMYqN5ylTg==} + '@radix-ui/react-use-controllable-state@1.1.0': + resolution: {integrity: sha512-MtfMVJiSr2NjzS0Aa90NPTnvTSg6C/JLCV7ma0W6+OMV78vd8OyRpID+Ng9LxzsPbLeuBnWBA1Nq30AtBIDChw==} peerDependencies: '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-escape-keydown@1.1.0': + resolution: {integrity: sha512-L7vwWlR1kTTQ3oh7g1O0CBF3YCyyTj8NmhLR+phShpyA50HCfBFKVJTpshm9PzLiKmehsrQzTYTpX9HvmC9rhw==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: '@types/react': optional: true @@ -1356,48 +1301,57 @@ packages: '@types/react': optional: true - '@radix-ui/react-use-previous@1.0.1': - resolution: {integrity: sha512-cV5La9DPwiQ7S0gf/0qiD6YgNqM5Fk97Kdrlc5yBcrF3jyEZQwm7vYFqMo4IfeHgJXsRaMvLABFtd0OVEmZhDw==} + '@radix-ui/react-use-layout-effect@1.1.0': + resolution: {integrity: sha512-+FPE0rOdziWSrH9athwI1R0HDVbWlEhd+FR+aSDk4uWGmSJ9Z54sdZVDQPZAinJhJXwfT+qnj969mCsT2gfm5w==} peerDependencies: '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: '@types/react': optional: true - '@radix-ui/react-use-rect@1.0.1': - resolution: {integrity: sha512-Cq5DLuSiuYVKNU8orzJMbl15TXilTnJKUCltMVQg53BQOF1/C5toAaGrowkgksdBQ9H+SRL23g0HDmg9tvmxXw==} + '@radix-ui/react-use-previous@1.1.0': + resolution: {integrity: sha512-Z/e78qg2YFnnXcW88A4JmTtm4ADckLno6F7OXotmkQfeuCVaKuYzqAATPhVzl3delXE7CxIV8shofPn3jPc5Og==} peerDependencies: '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: '@types/react': optional: true - '@radix-ui/react-use-size@1.0.1': - resolution: {integrity: sha512-ibay+VqrgcaI6veAojjofPATwledXiSmX+C0KrBk/xgpX9rBzPV3OsfwlhQdUOFbh+LKQorLYT+xTXW9V8yd0g==} + '@radix-ui/react-use-rect@1.1.0': + resolution: {integrity: sha512-0Fmkebhr6PiseyZlYAOtLS+nb7jLmpqTrJyv61Pe68MKYW6OWdRE2kI70TaYY27u7H0lajqM3hSMMLFq18Z7nQ==} peerDependencies: '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: '@types/react': optional: true - '@radix-ui/react-visually-hidden@1.0.3': - resolution: {integrity: sha512-D4w41yN5YRKtu464TLnByKzMDG/JlMPHtfZgQAu9v6mNakUqGUI9vUrfQKz8NK41VMm/xbZbh76NUTVtIYqOMA==} + '@radix-ui/react-use-size@1.1.0': + resolution: {integrity: sha512-XW3/vWuIXHa+2Uwcc2ABSfcCledmXhhQPlGbfcRXbiUQI5Icjcg19BGCZVKKInYbvUCut/ufbbLLPFC5cbb1hw==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-visually-hidden@1.1.0': + resolution: {integrity: sha512-N8MDZqtgCgG5S3aV60INAB475osJousYpZ4cTJ2cFbMpdHS5Y6loLTH8LPtkj2QN0x93J30HT/M3qJXM0+lyeQ==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: '@types/react': optional: true '@types/react-dom': optional: true - '@radix-ui/rect@1.0.1': - resolution: {integrity: sha512-fyrgCaedtvMg9NK3en0pnOYJdtfwxUcNolezkNPUsoX57X8oQk+NkqcvzHXD2uKNij6GXmWU9NDru2IWjrO4BQ==} + '@radix-ui/rect@1.1.0': + resolution: {integrity: sha512-A9+lCBZoaMJlVKcRBz2YByCG+Cp2t6nAnMnNba+XiWxnj6r4JUFqfsgwocMBZU9LPtdxC6wB56ySYpc7LQIoJg==} '@react-dnd/asap@5.0.2': resolution: {integrity: sha512-WLyfoHvxhs0V9U+GTsGilGgf2QsPl6ZZ44fnv0/b8T3nQyvzxidxsg/ZltbWssbsRDlYW8UKSQMTGotuTotZ6A==} @@ -1518,18 +1472,6 @@ packages: '@rushstack/ts-command-line@4.22.0': resolution: {integrity: sha512-Qj28t6MO3HRgAZ72FDeFsrpdE6wBWxF3VENgvrXh7JF2qIT+CrXiOJIesW80VFZB9QwObSpkB1ilx794fGQg6g==} - '@sendgrid/client@7.7.0': - resolution: {integrity: sha512-SxH+y8jeAQSnDavrTD0uGDXYIIkFylCo+eDofVmZLQ0f862nnqbC3Vd1ej6b7Le7lboyzQF6F7Fodv02rYspuA==} - engines: {node: 6.* || 8.* || >=10.*} - - '@sendgrid/helpers@7.7.0': - resolution: {integrity: sha512-3AsAxfN3GDBcXoZ/y1mzAAbKzTtUZ5+ZrHOmWQ279AuaFXUNCh9bPnRpN504bgveTqoW+11IzPg3I0WVgDINpw==} - engines: {node: '>= 6.0.0'} - - '@sendgrid/mail@7.7.0': - resolution: {integrity: sha512-5+nApPE9wINBvHSUxwOxkkQqM/IAAaBYoP9hw7WwgDNQPxraruVqHizeTitVtKGiqWCKm2mnjh4XGN3fvFLqaw==} - engines: {node: 6.* || 8.* || >=10.*} - '@sentry/core@6.19.7': resolution: {integrity: sha512-tOfZ/umqB2AcHPGbIrsFLcvApdTm9ggpi/kQZFkej7kMphjT+SGBiQfYtjyg9jcRW+ilAR4JXC9BGKsdEQ+8Vw==} engines: {node: '>=6'} @@ -1570,8 +1512,8 @@ packages: resolution: {integrity: sha512-5/kmIOY9FF32nicXH+5yLNTX4NJ4atl7jRgqAJuIn/iyDFXBktOKDxCvyGE/EzmF4ngSUvjXxQUQlQiZ5lfw+w==} engines: {node: '>=10'} - '@smithy/abort-controller@3.1.0': - resolution: {integrity: sha512-XOm4LkuC0PsK1sf2bBJLIlskn5ghmVxiEBVlo/jg0R8hxASBKYYgOoJEhKWgOr4vWGkN+5rC+oyBAqHYtxjnwQ==} + '@smithy/abort-controller@3.1.1': + resolution: {integrity: sha512-MBJBiidoe+0cTFhyxT8g+9g7CeVccLM0IOKKUMCNQ1CNMJ/eIfoo0RTfVrXOONEI1UCN1W+zkiHSbzUNE9dZtQ==} engines: {node: '>=16.0.0'} '@smithy/chunked-blob-reader-native@3.0.0': @@ -1580,53 +1522,53 @@ packages: '@smithy/chunked-blob-reader@3.0.0': resolution: {integrity: sha512-sbnURCwjF0gSToGlsBiAmd1lRCmSn72nu9axfJu5lIx6RUEgHu6GwTMbqCdhQSi0Pumcm5vFxsi9XWXb2mTaoA==} - '@smithy/config-resolver@3.0.3': - resolution: {integrity: sha512-4wHqCMkdfVDP4qmr4fVPYOFOH+vKhOv3X4e6KEU9wIC8xXUQ24tnF4CW+sddGDX1zU86GGyQ7A+rg2xmUD6jpQ==} + '@smithy/config-resolver@3.0.4': + resolution: {integrity: sha512-VwiOk7TwXoE7NlNguV/aPq1hFH72tqkHCw8eWXbr2xHspRyyv9DLpLXhq+Ieje+NwoqXrY0xyQjPXdOE6cGcHA==} engines: {node: '>=16.0.0'} - '@smithy/core@2.2.3': - resolution: {integrity: sha512-SpyLOL2vgE6sUYM6nQfu82OirCPkCDKctyG3aMgjMlDPTJpUlmlNH0ttu9ZWwzEjrzzr8uABmPjJTRI7gk1HFQ==} + '@smithy/core@2.2.4': + resolution: {integrity: sha512-qdY3LpMOUyLM/gfjjMQZui+UTNS7kBRDWlvyIhVOql5dn2J3isk9qUTBtQ1CbDH8MTugHis1zu3h4rH+Qmmh4g==} engines: {node: '>=16.0.0'} - '@smithy/credential-provider-imds@3.1.2': - resolution: {integrity: sha512-gqVmUaNoeqyrOAjgZg+rTmFLsphh/vS59LCMdFfVpthVS0jbfBzvBmEPktBd+y9ME4DYMGHFAMSYJDK8q0noOQ==} + '@smithy/credential-provider-imds@3.1.3': + resolution: {integrity: sha512-U1Yrv6hx/mRK6k8AncuI6jLUx9rn0VVSd9NPEX6pyYFBfkSkChOc/n4zUb8alHUVg83TbI4OdZVo1X0Zfj3ijA==} engines: {node: '>=16.0.0'} - '@smithy/eventstream-codec@3.1.1': - resolution: {integrity: sha512-s29NxV/ng1KXn6wPQ4qzJuQDjEtxLdS0+g5PQFirIeIZrp66FXVJ5IpZRowbt/42zB5dY8TqJ0G0L9KkgtsEZg==} + '@smithy/eventstream-codec@3.1.2': + resolution: {integrity: sha512-0mBcu49JWt4MXhrhRAlxASNy0IjDRFU+aWNDRal9OtUJvJNiwDuyKMUONSOjLjSCeGwZaE0wOErdqULer8r7yw==} - '@smithy/eventstream-serde-browser@3.0.3': - resolution: {integrity: sha512-ZXKmNAHl6SWKYuVmtoEc/hBQ7Nym/rbAx2SrqoJHn0i9QopIP7fG1AWmoFIeS5R3/VL6AwUIZMR0g8qnjjVRRA==} + '@smithy/eventstream-serde-browser@3.0.4': + resolution: {integrity: sha512-Eo4anLZX6ltGJTZ5yJMc80gZPYYwBn44g0h7oFq6et+TYr5dUsTpIcDbz2evsOKIZhZ7zBoFWHtBXQ4QQeb5xA==} engines: {node: '>=16.0.0'} - '@smithy/eventstream-serde-config-resolver@3.0.2': - resolution: {integrity: sha512-QbE3asvvBUZr7PwbOaxkSfKDjTAmWZkqh2G7pkYlD4jRkT1Y9nufeyu0OBPlLoF4+gl3YMpSVO7TESe8bVkD+g==} + '@smithy/eventstream-serde-config-resolver@3.0.3': + resolution: {integrity: sha512-NVTYjOuYpGfrN/VbRQgn31x73KDLfCXCsFdad8DiIc3IcdxL+dYA9zEQPyOP7Fy2QL8CPy2WE4WCUD+ZsLNfaQ==} engines: {node: '>=16.0.0'} - '@smithy/eventstream-serde-node@3.0.3': - resolution: {integrity: sha512-v61Ftn7x/ubWFqH7GHFAL/RaU7QZImTbuV95DYugYYItzpO7KaHYEuO8EskCaBpZEfzOxhUGKm4teS9YUSt69Q==} + '@smithy/eventstream-serde-node@3.0.4': + resolution: {integrity: sha512-mjlG0OzGAYuUpdUpflfb9zyLrBGgmQmrobNT8b42ZTsGv/J03+t24uhhtVEKG/b2jFtPIHF74Bq+VUtbzEKOKg==} engines: {node: '>=16.0.0'} - '@smithy/eventstream-serde-universal@3.0.3': - resolution: {integrity: sha512-YXYt3Cjhu9tRrahbTec2uOjwOSeCNfQurcWPGNEUspBhqHoA3KrDrVj+jGbCLWvwkwhzqDnnaeHAxm+IxAjOAQ==} + '@smithy/eventstream-serde-universal@3.0.4': + resolution: {integrity: sha512-Od9dv8zh3PgOD7Vj4T3HSuox16n0VG8jJIM2gvKASL6aCtcS8CfHZDWe1Ik3ZXW6xBouU+45Q5wgoliWDZiJ0A==} engines: {node: '>=16.0.0'} - '@smithy/fetch-http-handler@3.1.0': - resolution: {integrity: sha512-s7oQjEOUH9TYjctpITtWF4qxOdg7pBrP9eigEQ8SBsxF3dRFV0S28pGMllC83DUr7ECmErhO/BUwnULfoNhKgQ==} + '@smithy/fetch-http-handler@3.2.0': + resolution: {integrity: sha512-vFvDxMrc6sO5Atec8PaISckMcAwsCrRhYxwUylg97bRT2KZoumOF7qk5+6EVUtuM1IG9AJV5aqXnHln9ZdXHpg==} - '@smithy/hash-blob-browser@3.1.1': - resolution: {integrity: sha512-8RwdPG7arvL5pfMAFsH6jfBVcC7MDR1LYHjKevZPHREkVtORIQkRfm2K8px7giJt7x0zzQJnWamrsDM4ig8nTQ==} + '@smithy/hash-blob-browser@3.1.2': + resolution: {integrity: sha512-hAbfqN2UbISltakCC2TP0kx4LqXBttEv2MqSPE98gVuDFMf05lU+TpC41QtqGP3Ff5A3GwZMPfKnEy0VmEUpmg==} - '@smithy/hash-node@3.0.2': - resolution: {integrity: sha512-43uGA6o6QJQdXwAogybdTDHDd3SCdKyoiHIHb8PpdE2rKmVicjG9b1UgVwdgO8QPytmVqHFaUw27M3LZKwu8Yg==} + '@smithy/hash-node@3.0.3': + resolution: {integrity: sha512-2ctBXpPMG+B3BtWSGNnKELJ7SH9e4TNefJS0cd2eSkOOROeBnnVBnAy9LtJ8tY4vUEoe55N4CNPxzbWvR39iBw==} engines: {node: '>=16.0.0'} - '@smithy/hash-stream-node@3.1.1': - resolution: {integrity: sha512-+uvJHPrFNE9crkh3INVS9FmDcx1DoywDgIzlRWlPy7gqoD8jG14os9ATIFY7wN/ARPz1EWlkCHUap70oXxMmjA==} + '@smithy/hash-stream-node@3.1.2': + resolution: {integrity: sha512-PBgDMeEdDzi6JxKwbfBtwQG9eT9cVwsf0dZzLXoJF4sHKHs5HEo/3lJWpn6jibfJwT34I1EBXpBnZE8AxAft6g==} engines: {node: '>=16.0.0'} - '@smithy/invalid-dependency@3.0.2': - resolution: {integrity: sha512-+BAY3fMhomtq470tswXyrdVBSUhiLuhBVT+rOmpbz5e04YX+s1dX4NxTLzZGwBjCpeWZNtTxP8zbIvvFk81gUg==} + '@smithy/invalid-dependency@3.0.3': + resolution: {integrity: sha512-ID1eL/zpDULmHJbflb864k72/SNOZCADRc9i7Exq3RUNJw6raWUSlFEQ+3PX3EYs++bTxZB2dE9mEHTQLv61tw==} '@smithy/is-array-buffer@2.2.0': resolution: {integrity: sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA==} @@ -1636,75 +1578,75 @@ packages: resolution: {integrity: sha512-+Fsu6Q6C4RSJiy81Y8eApjEB5gVtM+oFKTffg+jSuwtvomJJrhUJBu2zS8wjXSgH/g1MKEWrzyChTBe6clb5FQ==} engines: {node: '>=16.0.0'} - '@smithy/md5-js@3.0.2': - resolution: {integrity: sha512-WlSK9br7fkVucTkCXporwuOttCR3cJ1GV70J8ENYXGNc0nUTPzMdWCyHztgnbbKoekVMjGZOEu+8I52nOdzqwQ==} + '@smithy/md5-js@3.0.3': + resolution: {integrity: sha512-O/SAkGVwpWmelpj/8yDtsaVe6sINHLB1q8YE/+ZQbDxIw3SRLbTZuRaI10K12sVoENdnHqzPp5i3/H+BcZ3m3Q==} - '@smithy/middleware-content-length@3.0.2': - resolution: {integrity: sha512-/Havz3PkYIEmwpqkyRTR21yJsWnFbD1ec4H1pUL+TkDnE7RCQkAVUQepLL/UeCaZeCBXvfdoKbOjSbV01xIinQ==} + '@smithy/middleware-content-length@3.0.3': + resolution: {integrity: sha512-Dbz2bzexReYIQDWMr+gZhpwBetNXzbhnEMhYKA6urqmojO14CsXjnsoPYO8UL/xxcawn8ZsuVU61ElkLSltIUQ==} engines: {node: '>=16.0.0'} - '@smithy/middleware-endpoint@3.0.3': - resolution: {integrity: sha512-ARAXHodhj4tttKa9y75zvENdSoHq6VGsSi7XS3+yLutrnxttJs6N10UMInCC1yi3/bopT8xug3iOP/y9R6sKJQ==} + '@smithy/middleware-endpoint@3.0.4': + resolution: {integrity: sha512-whUJMEPwl3ANIbXjBXZVdJNgfV2ZU8ayln7xUM47rXL2txuenI7jQ/VFFwCzy5lCmXScjp6zYtptW5Evud8e9g==} engines: {node: '>=16.0.0'} - '@smithy/middleware-retry@3.0.6': - resolution: {integrity: sha512-ICsFKp8eAyIMmxN5UT3IU37S6886L879TKtgxPsn/VD/laYNwqTLmJaCAn5//+2fRIrV0dnHp6LFlMwdXlWoUQ==} + '@smithy/middleware-retry@3.0.7': + resolution: {integrity: sha512-f5q7Y09G+2h5ivkSx5CHvlAT4qRR3jBFEsfXyQ9nFNiWQlr8c48blnu5cmbTQ+p1xmIO14UXzKoF8d7Tm0Gsjw==} engines: {node: '>=16.0.0'} - '@smithy/middleware-serde@3.0.2': - resolution: {integrity: sha512-oT2abV5zLhBucJe1LIIFEcRgIBDbZpziuMPswTMbBQNcaEUycLFvX63zsFmqfwG+/ZQKsNx+BSE8W51CMuK7Yw==} + '@smithy/middleware-serde@3.0.3': + resolution: {integrity: sha512-puUbyJQBcg9eSErFXjKNiGILJGtiqmuuNKEYNYfUD57fUl4i9+mfmThtQhvFXU0hCVG0iEJhvQUipUf+/SsFdA==} engines: {node: '>=16.0.0'} - '@smithy/middleware-stack@3.0.2': - resolution: {integrity: sha512-6fRcxomlNKBPIy/YjcnC7YHpMAjRvGUYlYVJAfELqZjkW0vQegNcImjY7T1HgYA6u3pAcCxKVBLYnkTw8z/l0A==} + '@smithy/middleware-stack@3.0.3': + resolution: {integrity: sha512-r4klY9nFudB0r9UdSMaGSyjyQK5adUyPnQN/ZM6M75phTxOdnc/AhpvGD1fQUvgmqjQEBGCwpnPbDm8pH5PapA==} engines: {node: '>=16.0.0'} - '@smithy/node-config-provider@3.1.2': - resolution: {integrity: sha512-388fEAa7+6ORj/BDC70peg3fyFBTTXJyXfXJ0Bwd6FYsRltePr2oGzIcm5AuC1WUSLtZ/dF+hYOnfTMs04rLvA==} + '@smithy/node-config-provider@3.1.3': + resolution: {integrity: sha512-rxdpAZczzholz6CYZxtqDu/aKTxATD5DAUDVj7HoEulq+pDSQVWzbg0btZDlxeFfa6bb2b5tUvgdX5+k8jUqcg==} engines: {node: '>=16.0.0'} - '@smithy/node-http-handler@3.1.0': - resolution: {integrity: sha512-pOpgB6B+VLXLwAyyvRz+ZAVXABlbAsJ2xvn3WZvrppAPImxwQOPFbeSUzWYMhpC8Tr7yQ3R8fG990QDhskkf1Q==} + '@smithy/node-http-handler@3.1.1': + resolution: {integrity: sha512-L71NLyPeP450r2J/mfu1jMc//Z1YnqJt2eSNw7uhiItaONnBLDA68J5jgxq8+MBDsYnFwNAIc7dBG1ImiWBiwg==} engines: {node: '>=16.0.0'} - '@smithy/property-provider@3.1.2': - resolution: {integrity: sha512-Hzp32BpeFFexBpO1z+ts8okbq/VLzJBadxanJAo/Wf2CmvXMBp6Q/TLWr7Js6IbMEcr0pDZ02V3u1XZkuQUJaA==} + '@smithy/property-provider@3.1.3': + resolution: {integrity: sha512-zahyOVR9Q4PEoguJ/NrFP4O7SMAfYO1HLhB18M+q+Z4KFd4V2obiMnlVoUFzFLSPeVt1POyNWneHHrZaTMoc/g==} engines: {node: '>=16.0.0'} - '@smithy/protocol-http@4.0.2': - resolution: {integrity: sha512-X/90xNWIOqSR2tLUyWxVIBdatpm35DrL44rI/xoeBWUuanE0iyCXJpTcnqlOpnEzgcu0xCKE06+g70TTu2j7RQ==} + '@smithy/protocol-http@4.0.3': + resolution: {integrity: sha512-x5jmrCWwQlx+Zv4jAtc33ijJ+vqqYN+c/ZkrnpvEe/uDas7AT7A/4Rc2CdfxgWv4WFGmEqODIrrUToPN6DDkGw==} engines: {node: '>=16.0.0'} - '@smithy/querystring-builder@3.0.2': - resolution: {integrity: sha512-xhv1+HacDYsOLdNt7zW+8Fe779KYAzmWvzs9bC5NlKM8QGYCwwuFwDBynhlU4D5twgi2pZ14Lm4h6RiAazCtmA==} + '@smithy/querystring-builder@3.0.3': + resolution: {integrity: sha512-vyWckeUeesFKzCDaRwWLUA1Xym9McaA6XpFfAK5qI9DKJ4M33ooQGqvM4J+LalH4u/Dq9nFiC8U6Qn1qi0+9zw==} engines: {node: '>=16.0.0'} - '@smithy/querystring-parser@3.0.2': - resolution: {integrity: sha512-C5hyRKgrZGPNh5QqIWzXnW+LXVrPmVQO0iJKjHeb5v3C61ZkP9QhrKmbfchcTyg/VnaE0tMNf/nmLpQlWuiqpg==} + '@smithy/querystring-parser@3.0.3': + resolution: {integrity: sha512-zahM1lQv2YjmznnfQsWbYojFe55l0SLG/988brlLv1i8z3dubloLF+75ATRsqPBboUXsW6I9CPGE5rQgLfY0vQ==} engines: {node: '>=16.0.0'} - '@smithy/service-error-classification@3.0.2': - resolution: {integrity: sha512-cu0WV2XRttItsuXlcM0kq5MKdphbMMmSd2CXF122dJ75NrFE0o7rruXFGfxAp3BKzgF/DMxX+PllIA/cj4FHMw==} + '@smithy/service-error-classification@3.0.3': + resolution: {integrity: sha512-Jn39sSl8cim/VlkLsUhRFq/dKDnRUFlfRkvhOJaUbLBXUsLRLNf9WaxDv/z9BjuQ3A6k/qE8af1lsqcwm7+DaQ==} engines: {node: '>=16.0.0'} - '@smithy/shared-ini-file-loader@3.1.2': - resolution: {integrity: sha512-tgnXrXbLMO8vo6VeuqabMw/eTzQHlLmZx0TC0TjtjJghnD0Xl4pEnJtBjTJr6XF5fHMNrt5BcczDXHJT9yNQnA==} + '@smithy/shared-ini-file-loader@3.1.3': + resolution: {integrity: sha512-Z8Y3+08vgoDgl4HENqNnnzSISAaGrF2RoKupoC47u2wiMp+Z8P/8mDh1CL8+8ujfi2U5naNvopSBmP/BUj8b5w==} engines: {node: '>=16.0.0'} - '@smithy/signature-v4@3.1.1': - resolution: {integrity: sha512-2/vlG86Sr489XX8TA/F+VDA+P04ESef04pSz0wRtlQBExcSPjqO08rvrkcas2zLnJ51i+7ukOURCkgqixBYjSQ==} + '@smithy/signature-v4@3.1.2': + resolution: {integrity: sha512-3BcPylEsYtD0esM4Hoyml/+s7WP2LFhcM3J2AGdcL2vx9O60TtfpDOL72gjb4lU8NeRPeKAwR77YNyyGvMbuEA==} engines: {node: '>=16.0.0'} - '@smithy/smithy-client@3.1.4': - resolution: {integrity: sha512-y6xJROGrIoitjpwXLY7P9luDHvuT9jWpAluliuSFdBymFxcl6iyQjo9U/JhYfRHFNTruqsvKOrOESVuPGEcRmQ==} + '@smithy/smithy-client@3.1.5': + resolution: {integrity: sha512-x9bL9Mx2CT2P1OiUlHM+ZNpbVU6TgT32f9CmTRzqIHA7M4vYrROCWEoC3o4xHNJASoGd4Opos3cXYPgh+/m4Ww==} engines: {node: '>=16.0.0'} - '@smithy/types@3.2.0': - resolution: {integrity: sha512-cKyeKAPazZRVqm7QPvcPD2jEIt2wqDPAL1KJKb0f/5I7uhollvsWZuZKLclmyP6a+Jwmr3OV3t+X0pZUUHS9BA==} + '@smithy/types@3.3.0': + resolution: {integrity: sha512-IxvBBCTFDHbVoK7zIxqA1ZOdc4QfM5HM7rGleCuHi7L1wnKv5Pn69xXJQ9hgxH60ZVygH9/JG0jRgtUncE3QUA==} engines: {node: '>=16.0.0'} - '@smithy/url-parser@3.0.2': - resolution: {integrity: sha512-pRiPHrgibeAr4avtXDoBHmTLtthwA4l8jKYRfZjNgp+bBPyxDMPRg2TMJaYxqbKemvrOkHu9MIBTv2RkdNfD6w==} + '@smithy/url-parser@3.0.3': + resolution: {integrity: sha512-pw3VtZtX2rg+s6HMs6/+u9+hu6oY6U7IohGhVNnjbgKy86wcIsSZwgHrFR+t67Uyxvp4Xz3p3kGXXIpTNisq8A==} '@smithy/util-base64@3.0.0': resolution: {integrity: sha512-Kxvoh5Qtt0CDsfajiZOCpJxgtPHXOKwmM+Zy4waD43UoEMA+qPxxa98aE/7ZhdnBFZFXMOiBR5xbcaMhLtznQQ==} @@ -1729,32 +1671,32 @@ packages: resolution: {integrity: sha512-pbjk4s0fwq3Di/ANL+rCvJMKM5bzAQdE5S/6RL5NXgMExFAi6UgQMPOm5yPaIWPpr+EOXKXRonJ3FoxKf4mCJQ==} engines: {node: '>=16.0.0'} - '@smithy/util-defaults-mode-browser@3.0.6': - resolution: {integrity: sha512-tAgoc++Eq+KL7g55+k108pn7nAob3GLWNEMbXhZIQyBcBNaE/o3+r4AEbae0A8bWvLRvArVsjeiuhMykGa04/A==} + '@smithy/util-defaults-mode-browser@3.0.7': + resolution: {integrity: sha512-Q2txLyvQyGfmjsaDbVV7Sg8psefpFcrnlGapDzXGFRPFKRBeEg6OvFK8FljqjeHSaCZ6/UuzQExUPqBR/2qlDA==} engines: {node: '>= 10.0.0'} - '@smithy/util-defaults-mode-node@3.0.6': - resolution: {integrity: sha512-UNerul6/E8aiCyFTBHk+RSIZCo7m96d/N5K3FeO/wFeZP6oy5HAicLzxqa85Wjv7MkXSxSySX29L/LwTV/QMag==} + '@smithy/util-defaults-mode-node@3.0.7': + resolution: {integrity: sha512-F4Qcj1fG6MGi2BSWCslfsMSwllws/WzYONBGtLybyY+halAcXdWhcew+mej8M5SKd5hqPYp4f7b+ABQEaeytgg==} engines: {node: '>= 10.0.0'} - '@smithy/util-endpoints@2.0.3': - resolution: {integrity: sha512-Dyi+pfLglDHSGsKSYunuUUSFM5V0tz7UDgv1Ex97yg+Xkn0Eb0rH0rcvl1n0MaJ11fac3HKDOH0DkALyQYCQag==} + '@smithy/util-endpoints@2.0.4': + resolution: {integrity: sha512-ZAtNf+vXAsgzgRutDDiklU09ZzZiiV/nATyqde4Um4priTmasDH+eLpp3tspL0hS2dEootyFMhu1Y6Y+tzpWBQ==} engines: {node: '>=16.0.0'} '@smithy/util-hex-encoding@3.0.0': resolution: {integrity: sha512-eFndh1WEK5YMUYvy3lPlVmYY/fZcQE1D8oSf41Id2vCeIkKJXPcYDCZD+4+xViI6b1XSd7tE+s5AmXzz5ilabQ==} engines: {node: '>=16.0.0'} - '@smithy/util-middleware@3.0.2': - resolution: {integrity: sha512-7WW5SD0XVrpfqljBYzS5rLR+EiDzl7wCVJZ9Lo6ChNFV4VYDk37Z1QI5w/LnYtU/QKnSawYoHRd7VjSyC8QRQQ==} + '@smithy/util-middleware@3.0.3': + resolution: {integrity: sha512-l+StyYYK/eO3DlVPbU+4Bi06Jjal+PFLSMmlWM1BEwyLxZ3aKkf1ROnoIakfaA7mC6uw3ny7JBkau4Yc+5zfWw==} engines: {node: '>=16.0.0'} - '@smithy/util-retry@3.0.2': - resolution: {integrity: sha512-HUVOb1k8p/IH6WFUjsLa+L9H1Zi/FAAB2CDOpWuffI1b2Txi6sknau8kNfC46Xrt39P1j2KDzCE1UlLa2eW5+A==} + '@smithy/util-retry@3.0.3': + resolution: {integrity: sha512-AFw+hjpbtVApzpNDhbjNG5NA3kyoMs7vx0gsgmlJF4s+yz1Zlepde7J58zpIRIsdjc+emhpAITxA88qLkPF26w==} engines: {node: '>=16.0.0'} - '@smithy/util-stream@3.0.4': - resolution: {integrity: sha512-CcMioiaOOsEVdb09pS7ux1ij7QcQ2jE/cE1+iin1DXMeRgAEQN/47m7Xztu7KFQuQsj0A5YwB2UN45q97CqKCg==} + '@smithy/util-stream@3.0.5': + resolution: {integrity: sha512-xC3L5PKMAT/Bh8fmHNXP9sdQ4+4aKVUU3EEJ2CF/lLk7R+wtMJM+v/1B4en7jO++Wa5spGzFDBCl0QxgbUc5Ug==} engines: {node: '>=16.0.0'} '@smithy/util-uri-escape@3.0.0': @@ -1769,12 +1711,12 @@ packages: resolution: {integrity: sha512-rUeT12bxFnplYDe815GXbq/oixEGHfRFFtcTF3YdDi/JaENIM6aSYYLJydG83UNzLXeRI5K8abYd/8Sp/QM0kA==} engines: {node: '>=16.0.0'} - '@smithy/util-waiter@3.1.0': - resolution: {integrity: sha512-5OVcC5ZcmmutY208ADY/l2eB4H4DVXs+hPUo/M1spF4/YEmF9DdLkfwBvohej2dIeVJayKY7hMlD0X8j3F3/Uw==} + '@smithy/util-waiter@3.1.2': + resolution: {integrity: sha512-4pP0EV3iTsexDx+8PPGAKCQpd/6hsQBaQhqWzU4hqKPHN5epPsxKbvUTIiYIHTxaKt6/kEaqPBpu/ufvfbrRzw==} engines: {node: '>=16.0.0'} - '@strapi/admin@4.24.5': - resolution: {integrity: sha512-tV8Ln5d92EwW+3+5APBSVguPOcwxcJZTbd81gAIYDF5Qkj9mEVLO1zps3Tzrtxv6/YLgf1kENu6IWFQwXs63yA==} + '@strapi/admin@4.25.1': + resolution: {integrity: sha512-e63UVE9SQA1ggCGK7U4Z37SzLirLmEJERTrhaPkPBg2SkYwUgYSMRVZlgwjmEthOtmwFLG8J6qOtklzltN8FYA==} engines: {node: '>=18.0.0 <=20.x.x', npm: '>=6.0.0'} peerDependencies: '@strapi/data-transfer': ^4.16.0 @@ -1784,8 +1726,13 @@ packages: react-router-dom: ^5.2.0 styled-components: ^5.2.1 - '@strapi/content-releases@4.24.5': - resolution: {integrity: sha512-5/TzgwGSnnCxJ/wtT53Gsc6koLuwvDxXs1nu9GFLct3A0bNPe7MyEUv8vdcdlW7UAD8IIdJnRixoJahnStagxQ==} + '@strapi/cloud-cli@4.25.1': + resolution: {integrity: sha512-5S6Dz3LAH4nlm37P/C+pMyOBvt0+LSea0DB0usd1RTA4rVv/chURrIW+qNEDztGabt3Co8PgWIPF1m+LgSO8pQ==} + engines: {node: '>=18.0.0 <=20.x.x', npm: '>=6.0.0'} + hasBin: true + + '@strapi/content-releases@4.25.1': + resolution: {integrity: sha512-HpXcNkS3XWyfghXlnFPYFbonSs3+SM8HnoKrzki5U+6WTpe6mi2A/EYR2h/+L1r8HTB2H1cs+2J54b5OspNvzA==} engines: {node: '>=16.0.0 <=20.x.x', npm: '>=6.0.0'} peerDependencies: '@strapi/admin': ^4.19.0 @@ -1795,14 +1742,14 @@ packages: react-router-dom: 5.3.4 styled-components: 5.3.3 - '@strapi/data-transfer@4.24.5': - resolution: {integrity: sha512-1GCrAFr2YhlL+TX31/nsEemXwoAUoTwUfxm0D+rAzAd5rvAoIpMB3nrU2JCdioLuxVSZk7U5ztIvk0ccclmpBg==} + '@strapi/data-transfer@4.25.1': + resolution: {integrity: sha512-vu23DfwY4gVQg79MHViBA2mHoTcnt5n4E+9QvW6WyeFiRMXnu1pv7JwDxYXudhQh24j/1GqGI6PIjnovdewisw==} engines: {node: '>=18.0.0 <=20.x.x', npm: '>=6.0.0'} peerDependencies: '@strapi/strapi': ^4.14.4 - '@strapi/database@4.24.5': - resolution: {integrity: sha512-7zy1phi9VTZt8w+5ciRMKYjKBth0qmyc9wbd6ib4siD7o3KwcAUvnZtbdxuU4WHxOqMKid8KOUXA/z9QXftcQg==} + '@strapi/database@4.25.1': + resolution: {integrity: sha512-pkapnhmIUFau+NrF4rJAoImCBJElgXmYyVqz+8Zz2JMjyyDwtDTBu9OIQEo6AXuDU8bf1Q+knv1ejEETwKD30A==} engines: {node: '>=18.0.0 <=20.x.x', npm: '>=6.0.0'} '@strapi/design-system@1.19.0': @@ -1814,16 +1761,16 @@ packages: react-router-dom: ^5.2.0 styled-components: ^5.2.1 - '@strapi/generate-new@4.24.5': - resolution: {integrity: sha512-C5F10jbMbjilnBimXKc33e1sZ/77Iy/+GGZSjyFSGtE3SEijIZy70eJKoAcLuHZBodKIsLxlfaXgGIkgUFmW/Q==} + '@strapi/generate-new@4.25.1': + resolution: {integrity: sha512-k4qp6muCVpdUl8hmGLN444PWMirXaYEmjbuIB7h30+Z9TBO03XqWYqK20yX6u4Y8Jjpc8/WkIyFQ9GDCPL8V7Q==} engines: {node: '>=18.0.0 <=20.x.x', npm: '>=6.0.0'} - '@strapi/generators@4.24.5': - resolution: {integrity: sha512-OieQurvT+k5wo1aau2NOcyiCUrHRWUN8MWZVUyCAEQ39AZtjCCZ8qRYbWd2cjQFtPv7z3iOszos1+SLX0kcWhA==} + '@strapi/generators@4.25.1': + resolution: {integrity: sha512-rfQ3+tWwLDJBjt/Q3PuHyrjlzPAkQOrDi3s6CirXPzrpZMX9QDZzzf0PIZiKthEsP9vQYbmppe2FOU4YRB8uIQ==} engines: {node: '>=18.0.0 <=20.x.x', npm: '>=6.0.0'} - '@strapi/helper-plugin@4.24.5': - resolution: {integrity: sha512-UgLpivDE2KbxuhvuJpwN8+tFYRR8GnMyWvq9jxPUe0FwNzMcKo0sCBPplA1mJO/whQqmJH2CwEHWfaN34lqdYg==} + '@strapi/helper-plugin@4.25.1': + resolution: {integrity: sha512-mBWwKjh2OmvwvUPECaRcNf6+IicE6D3OqtlqFXzQsJqHw5Dv6l6WFFh2/rEsjK93Qh5xAkvHqxaRNYJF2QIBFg==} engines: {node: '>=18.0.0 <=20.x.x', npm: '>=6.0.0'} peerDependencies: '@strapi/design-system': 1.19.0 @@ -1839,8 +1786,8 @@ packages: react: ^17.0.0 || ^18.0.0 react-dom: ^17.0.0 || ^18.0.0 - '@strapi/logger@4.24.5': - resolution: {integrity: sha512-cVZ9yjNdv7i+36ErMNrXW+g0Ldsq5WqDgo4uitkpT8o7+N7PbDPU+a+CqRx6TEQQTNwCmprfBDvX+5eBAxjP9Q==} + '@strapi/logger@4.25.1': + resolution: {integrity: sha512-sDY1goEbqXxtrMIyMGmYysSrehRsHhTekDA4KjmbYHWbE3D6G38zA0jU9kstCr3pixO4nZ67hw5wWrJTeOhj2A==} engines: {node: '>=18.0.0 <=20.x.x', npm: '>=6.0.0'} '@strapi/pack-up@4.23.0': @@ -1848,16 +1795,26 @@ packages: engines: {node: '>=18.0.0 <=20.x.x', npm: '>=6.0.0'} hasBin: true - '@strapi/permissions@4.24.5': - resolution: {integrity: sha512-5uwWnYyn7Sjbz3Oqp6wogzmUjIuxwuk9UPZyDljPZKABYVPud9pHAcQxrXPeZrJsPGu59eBLekFBIlorjYYWzg==} + '@strapi/permissions@4.25.1': + resolution: {integrity: sha512-PPpRMSC8fOyRv0PJK62T67woo6SILKlJQk+cMmC3CYZpFlUYkmSU5EufSD8Znx56j0XsATvvJ98IQ/3hveAEIg==} engines: {node: '>=18.0.0 <=20.x.x', npm: '>=6.0.0'} - '@strapi/plugin-content-manager@4.24.5': - resolution: {integrity: sha512-sSqtUwpAITcKjPcB6io7RZ/yUyTc8bwt+pWq4EnAn/Y2SVt+Z9YqboobSGhRx6PXLMQ6DjG5YkpMcc4lvzQgVA==} + '@strapi/plugin-cloud@4.25.1': + resolution: {integrity: sha512-JrVvaqKXhkhfVenP2ojL59p0xBZG7RaALWQmaDD55/JdQ2hkH5VWbnUPM57qZfAUi5I9YbAWUcremWJ07hpr2w==} + engines: {node: '>=18.0.0 <=20.x.x', npm: '>=6.0.0'} + peerDependencies: + '@strapi/strapi': ^4.4.0 + react: ^17.0.0 || ^18.0.0 + react-dom: ^17.0.0 || ^18.0.0 + react-router-dom: 5.3.4 + styled-components: 5.3.3 + + '@strapi/plugin-content-manager@4.25.1': + resolution: {integrity: sha512-WqOXfhKN6L09PBcSmMS6burof4VHOAK24RWTrMcazgidA57GZ003lqW5dw2ashJ71s2p3YU83lzKVxztoswboQ==} engines: {node: '>=18.0.0 <=20.x.x', npm: '>=6.0.0'} - '@strapi/plugin-content-type-builder@4.24.5': - resolution: {integrity: sha512-siBbl4V8p75Icdr1Up7E5nMt2auZ21bndhzpZieEwuFzm0kpzQrFGKkQueu3+JV4Hbg4bE/q51erOv136DIrGg==} + '@strapi/plugin-content-type-builder@4.25.1': + resolution: {integrity: sha512-mWpRjiXoVlbSEnQ6ANRLiDloZTP14hDH5Mrc2mP2plgBl/zqm/QgE9sifaDUh6cqqTDV2+UWFvCGuT+1JqyGwQ==} engines: {node: '>=18.0.0 <=20.x.x', npm: '>=6.0.0'} peerDependencies: '@strapi/strapi': ^4.0.0 @@ -1866,8 +1823,8 @@ packages: react-router-dom: ^5.2.0 styled-components: ^5.2.1 - '@strapi/plugin-email@4.24.5': - resolution: {integrity: sha512-Q93LRFE9bSppSCMgYpYF3TD2AVLey1j4K6HpKk/g+rGtpaiSx4pk/ULrnzFXWuqAg/y58qmlk+oduJIG9NXC7g==} + '@strapi/plugin-email@4.25.1': + resolution: {integrity: sha512-VESF5M97hFsrdToW7rsrkpbOZqnT7C8RH8Z9MgYokxk3lJ/LJwpFLypB8X52QnK9XmdR8wNAbZgm+rxyPOmSvA==} engines: {node: '>=18.0.0 <=20.x.x', npm: '>=6.0.0'} peerDependencies: koa: 2.13.4 @@ -1876,8 +1833,8 @@ packages: react-router-dom: ^5.2.0 styled-components: ^5.2.1 - '@strapi/plugin-i18n@4.24.5': - resolution: {integrity: sha512-RtFD1MmeHB/qTTOT4TUkFDSpEP62B4s93CNO0GsklSzvt2slKqaqKtALug8J9PcgGRN/yroqgwqHpptLKOtPcQ==} + '@strapi/plugin-i18n@4.25.1': + resolution: {integrity: sha512-nzKRwnliUnkvi7Z5FtA/ldQlFfFGcuGkKhGc9Z3D0D3bZFoOm5wQf8Q+jyQ8sWPv7yBXLF+mv68QpoB8pmGr9g==} engines: {node: '>=18.0.0 <=20.x.x', npm: '>=6.0.0'} peerDependencies: '@strapi/strapi': ^4.0.0 @@ -1886,8 +1843,8 @@ packages: react-router-dom: ^5.2.0 styled-components: ^5.2.1 - '@strapi/plugin-upload@4.24.5': - resolution: {integrity: sha512-lgMYA9SOQy05oKh9TGgyB/Pc+qt/uxAXQE6NB6kqZw26i+sE4X9C14tT0D0wGf2//FJQe5gbuyIGk3DJyGYVgQ==} + '@strapi/plugin-upload@4.25.1': + resolution: {integrity: sha512-0wfEJldvRTyvNIqEM/FKojnlQcFlt/+GAhn/OyPqbS66e0fbCvzugEvIi/mRhx+jmLc25lJMazSjFZ/ELZxFCQ==} engines: {node: '>=18.0.0 <=20.x.x', npm: '>=6.0.0'} peerDependencies: '@strapi/strapi': ^4.0.0 @@ -1896,8 +1853,8 @@ packages: react-router-dom: ^5.2.0 styled-components: ^5.2.1 - '@strapi/plugin-users-permissions@4.24.5': - resolution: {integrity: sha512-OqjlwVH1WGfCEy8lUxXyK3LbyBKRshhvLHUycmegnUi5HG3WzKwO2mNb9cOCI+VLnCaSl79DAdV0byAfuJLIFA==} + '@strapi/plugin-users-permissions@4.25.1': + resolution: {integrity: sha512-jTrsy1GSEU0mkuOwKvaSfKo8ow0NuWYIJljptC45AnyVFt0L0duej61EhrMci1xe0235teeN7K6WshF6lFdrPw==} engines: {node: '>=18.0.0 <=20.x.x', npm: '>=6.0.0'} peerDependencies: '@strapi/strapi': ^4.0.0 @@ -1906,37 +1863,29 @@ packages: react-router-dom: ^5.2.0 styled-components: ^5.2.1 - '@strapi/provider-audit-logs-local@4.24.5': - resolution: {integrity: sha512-MM6NkmgmDSmzntJpRF5uXUc7UIk7fcg622xydNKaD7oenFYjgZY5+d/rr7lftIInEZ795GhWgqWiJ2WUC7jcDQ==} + '@strapi/provider-audit-logs-local@4.25.1': + resolution: {integrity: sha512-R1wdAMgW15q4rG3PD6tT1fI5Jf+/eP5uhnT0nEZIH2ws1rJ/r8A4qk0hCAUYH1OUR1xVn+3oJ/xqln26MPLA/Q==} engines: {node: '>=18.0.0 <=20.x.x', npm: '>=6.0.0'} - '@strapi/provider-email-sendgrid@4.24.5': - resolution: {integrity: sha512-wPNAd4EQ5C5Rpy65Hkv4ZaWVO6dhiUol8AFyHlAKhBkF0UH0Y/B0JAKS+oSW2F/xzjpSsvmfdj7Pj6E8OF6SBw==} + '@strapi/provider-email-sendmail@4.25.1': + resolution: {integrity: sha512-eKp912Q0nIZOKEivgOpyFV9OAurNU+oJV/00eh9Q2uDWdtSl/Z7pO481XyFan7Jthn7aB2J5C50xzhQrsFaggA==} engines: {node: '>=18.0.0 <=20.x.x', npm: '>=6.0.0'} - '@strapi/provider-email-sendmail@4.24.5': - resolution: {integrity: sha512-yZ4Szrxk1WMz9G+wJi2YKew1AgVe1xcR7TjEIrgONSSAZUag5B+rNEIAUEsMywINT5rswduW3S0lNbTpF+swdw==} + '@strapi/provider-upload-local@4.25.1': + resolution: {integrity: sha512-jkTfHfFPwE5PMWvU/yUHfyv9rI5D+OcUVtzKFmkkVs/l6T6UAWSWh+26kZYJ4fpotfNWX6XNHtgtvQXS+08uVw==} engines: {node: '>=18.0.0 <=20.x.x', npm: '>=6.0.0'} - '@strapi/provider-upload-cloudinary@4.24.5': - resolution: {integrity: sha512-vjKgW5wH/HR1BGQOtH8/+hFdsrmQgAdjU/wLraSwiCdk1hU+882gGqxTTh9wtADSzkqgN1DDnFncpqlHufqKNw==} - engines: {node: '>=18.0.0 <=20.x.x', npm: '>=6.0.0'} - - '@strapi/provider-upload-local@4.24.5': - resolution: {integrity: sha512-mMmZ2t5KNSse6HuxBnp3rlyUfGRNeNAIkU3Ju1MUyER+5bWxibX4NplyTWXwE1GRIGlXE4a5AXGpYOZdRnFuOA==} - engines: {node: '>=18.0.0 <=20.x.x', npm: '>=6.0.0'} - - '@strapi/strapi@4.24.5': - resolution: {integrity: sha512-xL24x/fBDWoOWkVkspxAIkn9t3t8UhYyQ0WrkuM5lD9IzfVeEJXquwryAQGmmCuF7XYzNmx0kQWLSdx/vytJew==} + '@strapi/strapi@4.25.1': + resolution: {integrity: sha512-GzsIArE/jkK78v7w/gQXQ02lfb1cnb0qyvTUotSOwh9FzZhV+nGURkNYvlSooyEtDxOIimD1RnkRP11iOW0kHA==} engines: {node: '>=18.0.0 <=20.x.x', npm: '>=6.0.0'} hasBin: true - '@strapi/types@4.24.5': - resolution: {integrity: sha512-E54Jh+CpbdBlRIK/DIKYliq4tLy4OBBh6qRc6JLpl3WvZsfxRgP2lDafHYGPnR32WZcrTsyUwlF/5lgOSre1ag==} + '@strapi/types@4.25.1': + resolution: {integrity: sha512-Sr89A4LiQQN6p5jnMbfarknJ6KUr2Hp8fd2QNtOXLRwyrL3sPEZYlm7JRr2QoK0fT2QRh83iKdYsiA18J33Qww==} engines: {node: '>=18.0.0 <=20.x.x', npm: '>=6.0.0'} - '@strapi/typescript-utils@4.24.5': - resolution: {integrity: sha512-xI+5CuRtJjlEaUmeZE+tXP1lX7UfN3XbFHxG7D5zLP7gB2HSG7ai2d0V7XXqbrN7QDVXn8zkFVzZypCDnyTU4g==} + '@strapi/typescript-utils@4.25.1': + resolution: {integrity: sha512-hXu3rxHaNH+FUCYar1vj6mTdIvMstkPhfo1+AOusdLtsSWVPA7+J5+dB4IKtjM72MVU0hiF3Q63SR6BCcsdC0Q==} engines: {node: '>=18.0.0 <=20.x.x', npm: '>=6.0.0'} '@strapi/ui-primitives@1.19.0': @@ -1945,72 +1894,72 @@ packages: react: ^17.0.0 || ^18.0.0 react-dom: ^17.0.0 || ^18.0.0 - '@strapi/utils@4.24.5': - resolution: {integrity: sha512-KPhzgXaJFC2y5JVW1RGVxmkSzLdhIdoVgMTCRf90veyfwkedHXC5iQ0qCvxRvMuvnfw6DqMaqewHGEkt1COM4g==} + '@strapi/utils@4.25.1': + resolution: {integrity: sha512-QuvGfAbHU2I1ebZThoF3GzAtLQVClP9VKrL3IaSy3MfKbH9xzLpg+ROiwUAawgR7Qi/zF8865VCCe4tdqJUB7Q==} engines: {node: '>=18.0.0 <=20.x.x', npm: '>=6.0.0'} - '@swc/core-darwin-arm64@1.6.1': - resolution: {integrity: sha512-u6GdwOXsOEdNAdSI6nWq6G2BQw5HiSNIZVcBaH1iSvBnxZvWbnIKyDiZKaYnDwTLHLzig2GuUjjE2NaCJPy4jg==} + '@swc/core-darwin-arm64@1.6.6': + resolution: {integrity: sha512-5DA8NUGECcbcK1YLKJwNDKqdtTYDVnkfDU1WvQSXq/rU+bjYCLtn5gCe8/yzL7ISXA6rwqPU1RDejhbNt4ARLQ==} engines: {node: '>=10'} cpu: [arm64] os: [darwin] - '@swc/core-darwin-x64@1.6.1': - resolution: {integrity: sha512-/tXwQibkDNLVbAtr7PUQI0iQjoB708fjhDDDfJ6WILSBVZ3+qs/LHjJ7jHwumEYxVq1XA7Fv2Q7SE/ZSQoWHcQ==} + '@swc/core-darwin-x64@1.6.6': + resolution: {integrity: sha512-2nbh/RHpweNRsJiYDFk1KcX7UtaKgzzTNUjwtvK5cp0wWrpbXmPvdlWOx3yzwoiSASDFx78242JHHXCIOlEdsw==} engines: {node: '>=10'} cpu: [x64] os: [darwin] - '@swc/core-linux-arm-gnueabihf@1.6.1': - resolution: {integrity: sha512-aDgipxhJTms8iH78emHVutFR2c16LNhO+NTRCdYi+X4PyIn58/DyYTH6VDZ0AeEcS5f132ZFldU5AEgExwihXA==} + '@swc/core-linux-arm-gnueabihf@1.6.6': + resolution: {integrity: sha512-YgytuyUfR7b0z0SRHKV+ylr83HmgnROgeT7xryEkth6JGpAEHooCspQ4RrWTU8+WKJ7aXiZlGXPgybQ4TiS+TA==} engines: {node: '>=10'} cpu: [arm] os: [linux] - '@swc/core-linux-arm64-gnu@1.6.1': - resolution: {integrity: sha512-XkJ+eO4zUKG5g458RyhmKPyBGxI0FwfWFgpfIj5eDybxYJ6s4HBT5MoxyBLorB5kMlZ0XoY/usUMobPVY3nL0g==} + '@swc/core-linux-arm64-gnu@1.6.6': + resolution: {integrity: sha512-yGwx9fddzEE0iURqRVwKBQ4IwRHE6hNhl15WliHpi/PcYhzmYkUIpcbRXjr0dssubXAVPVnx6+jZVDSbutvnfg==} engines: {node: '>=10'} cpu: [arm64] os: [linux] - '@swc/core-linux-arm64-musl@1.6.1': - resolution: {integrity: sha512-dr6YbLBg/SsNxs1hDqJhxdcrS8dGMlOXJwXIrUvACiA8jAd6S5BxYCaqsCefLYXtaOmu0bbx1FB/evfodqB70Q==} + '@swc/core-linux-arm64-musl@1.6.6': + resolution: {integrity: sha512-a6fMbqzSAsS5KCxFJyg1mD5kwN3ZFO8qQLyJ75R/htZP/eCt05jrhmOI7h2n+1HjiG332jLnZ9S8lkVE5O8Nqw==} engines: {node: '>=10'} cpu: [arm64] os: [linux] - '@swc/core-linux-x64-gnu@1.6.1': - resolution: {integrity: sha512-A0b/3V+yFy4LXh3O9umIE7LXPC7NBWdjl6AQYqymSMcMu0EOb1/iygA6s6uWhz9y3e172Hpb9b/CGsuD8Px/bg==} + '@swc/core-linux-x64-gnu@1.6.6': + resolution: {integrity: sha512-hRGsUKNzzZle28YF0dYIpN0bt9PceR9LaVBq7x8+l9TAaDLFbgksSxcnU/ubTtsy+WsYSYGn+A83w3xWC0O8CQ==} engines: {node: '>=10'} cpu: [x64] os: [linux] - '@swc/core-linux-x64-musl@1.6.1': - resolution: {integrity: sha512-5dJjlzZXhC87nZZZWbpiDP8kBIO0ibis893F/rtPIQBI5poH+iJuA32EU3wN4/WFHeK4et8z6SGSVghPtWyk4g==} + '@swc/core-linux-x64-musl@1.6.6': + resolution: {integrity: sha512-NokIUtFxJDVv3LzGeEtYMTV3j2dnGKLac59luTeq36DQLZdJQawQIdTbzzWl2jE7lxxTZme+dhsVOH9LxE3ceg==} engines: {node: '>=10'} cpu: [x64] os: [linux] - '@swc/core-win32-arm64-msvc@1.6.1': - resolution: {integrity: sha512-HBi1ZlwvfcUibLtT3g/lP57FaDPC799AD6InolB2KSgkqyBbZJ9wAXM8/CcH67GLIP0tZ7FqblrJTzGXxetTJQ==} + '@swc/core-win32-arm64-msvc@1.6.6': + resolution: {integrity: sha512-lzYdI4qb4k1dFG26yv+9Jaq/bUMAhgs/2JsrLncGjLof86+uj74wKYCQnbzKAsq2hDtS5DqnHnl+//J+miZfGA==} engines: {node: '>=10'} cpu: [arm64] os: [win32] - '@swc/core-win32-ia32-msvc@1.6.1': - resolution: {integrity: sha512-AKqHohlWERclexar5y6ux4sQ8yaMejEXNxeKXm7xPhXrp13/1p4/I3E5bPVX/jMnvpm4HpcKSP0ee2WsqmhhPw==} + '@swc/core-win32-ia32-msvc@1.6.6': + resolution: {integrity: sha512-bvl7FMaXIJQ76WZU0ER4+RyfKIMGb6S2MgRkBhJOOp0i7VFx4WLOnrmMzaeoPJaJSkityVKAftfNh7NBzTIydQ==} engines: {node: '>=10'} cpu: [ia32] os: [win32] - '@swc/core-win32-x64-msvc@1.6.1': - resolution: {integrity: sha512-0dLdTLd+ONve8kgC5T6VQ2Y5G+OZ7y0ujjapnK66wpvCBM6BKYGdT/OKhZKZydrC5gUKaxFN6Y5oOt9JOFUrOQ==} + '@swc/core-win32-x64-msvc@1.6.6': + resolution: {integrity: sha512-WAP0JoCTfgeYKgOeYJoJV4ZS0sQUmU3OwvXa2dYYtMLF7zsNqOiW4niU7QlThBHgUv/qNZm2p6ITEgh3w1cltw==} engines: {node: '>=10'} cpu: [x64] os: [win32] - '@swc/core@1.6.1': - resolution: {integrity: sha512-Yz5uj5hNZpS5brLtBvKY0L4s2tBAbQ4TjmW8xF1EC3YLFxQRrUjMP49Zm1kp/KYyYvTkSaG48Ffj2YWLu9nChw==} + '@swc/core@1.6.6': + resolution: {integrity: sha512-sHfmIUPUXNrQTwFMVCY5V5Ena2GTOeaWjS2GFUpjLhAgVfP90OP67DWow7+cYrfFtqBdILHuWnjkTcd0+uPKlg==} engines: {node: '>=10'} peerDependencies: '@swc/helpers': '*' @@ -2024,60 +1973,24 @@ packages: '@swc/helpers@0.5.11': resolution: {integrity: sha512-YNlnKRWF2sVojTpIyzwou9XoTNbzbzONwRhOoniEioF1AtaitTvVZblaQRrAzChWQ1bLYyYSWzM18y4WwgzJ+A==} - '@swc/types@0.1.8': - resolution: {integrity: sha512-RNFA3+7OJFNYY78x0FYwi1Ow+iF1eF5WvmfY1nXPOEH4R2p/D4Cr1vzje7dNAI2aLFqpv8Wyz4oKSWqIZArpQA==} + '@swc/types@0.1.9': + resolution: {integrity: sha512-qKnCno++jzcJ4lM4NTfYifm1EFSCeIfKiAHAfkENZAV5Kl9PjJIyd2yeeVv6c/2CckuLyv2NmRC5pv6pm2WQBg==} '@szmarczak/http-timer@4.0.6': resolution: {integrity: sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w==} engines: {node: '>=10'} - '@testing-library/dom@8.19.0': - resolution: {integrity: sha512-6YWYPPpxG3e/xOo6HIWwB/58HukkwIVTOaZ0VwdMVjhRUX/01E4FtQbck9GazOOj7MXHc5RBzMrU86iBJHbI+A==} - engines: {node: '>=12'} - - '@testing-library/react-hooks@8.0.1': - resolution: {integrity: sha512-Aqhl2IVmLt8IovEVarNDFuJDVWVvhnr9/GCU6UUnrYXwgDFF9h2L2o2P9KBni1AST5sT6riAyoukFLyjQUgD/g==} - engines: {node: '>=12'} - peerDependencies: - '@types/react': ^16.9.0 || ^17.0.0 - react: ^16.9.0 || ^17.0.0 - react-dom: ^16.9.0 || ^17.0.0 - react-test-renderer: ^16.9.0 || ^17.0.0 - peerDependenciesMeta: - '@types/react': - optional: true - react-dom: - optional: true - react-test-renderer: - optional: true - - '@testing-library/react@12.1.4': - resolution: {integrity: sha512-jiPKOm7vyUw311Hn/HlNQ9P8/lHNtArAx0PisXyFixDDvfl8DbD6EUdbshK5eqauvBSvzZd19itqQ9j3nferJA==} - engines: {node: '>=12'} - peerDependencies: - react: '*' - react-dom: '*' - - '@testing-library/user-event@14.4.3': - resolution: {integrity: sha512-kCUc5MEwaEMakkO5x7aoD+DLi02ehmEM2QCGWvNqAS1dV/fAvORWEjnjsEIvml59M7Y5kCkWN6fCCyPOe8OL6Q==} - engines: {node: '>=12', npm: '>=6'} - peerDependencies: - '@testing-library/dom': '>=7.21.4' - '@types/argparse@1.0.38': resolution: {integrity: sha512-ebDJ9b0e702Yr7pWgB0jzm+CX4Srzz8RcXtLJDJB+BSccqMa36uyH/zUsSYao5+BD1ytv3k3rPYCq4mAE1hsXA==} - '@types/aria-query@4.2.2': - resolution: {integrity: sha512-HnYpAE1Y6kRyKM/XkEuiRQhTHvkzMBurTHnpFLYLBGPIylZNPs9jJcuOOYWxPLJCSEtmZT0Y8rHDokKN7rRTig==} + '@types/body-parser@1.19.5': + resolution: {integrity: sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==} '@types/cacheable-request@6.0.3': resolution: {integrity: sha512-IQ3EbTzGxIigb1I3qPZc1rWJnH0BmSKv5QYTalEwweFvyBDLSAe24zP0le/hyi7ecGfZVlIVAg4BZqb8WBwKqw==} - '@types/cookie@0.4.1': - resolution: {integrity: sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q==} - - '@types/debug@4.1.12': - resolution: {integrity: sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==} + '@types/connect@3.4.38': + resolution: {integrity: sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==} '@types/eslint-scope@3.7.7': resolution: {integrity: sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==} @@ -2088,6 +2001,12 @@ packages: '@types/estree@1.0.5': resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==} + '@types/express-serve-static-core@4.19.5': + resolution: {integrity: sha512-y6W03tvrACO72aijJ5uF02FRq5cgDR9lUxddQ8vyF+GvmjJQqbzDcJngEjURc+ZsG31VI3hODNZJ2URj86pzmg==} + + '@types/express@4.17.21': + resolution: {integrity: sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==} + '@types/fined@1.1.5': resolution: {integrity: sha512-2N93vadEGDFhASTIRbizbl4bNqpMOId5zZfj6hHqYZfEzEfO9onnU4Im8xvzo8uudySDveDHBOOSlTWf38ErfQ==} @@ -2106,6 +2025,9 @@ packages: '@types/http-cache-semantics@4.0.4': resolution: {integrity: sha512-1m0bIFVc7eJWyve9S0RnuRgcQqF/Xd5QsUZAZeQFr1Q3/p9JWoQQEqmVy+DPTNpGXwhgIetAoYF8JSc33q29QA==} + '@types/http-errors@2.0.4': + resolution: {integrity: sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==} + '@types/inquirer@6.5.0': resolution: {integrity: sha512-rjaYQ9b9y/VFGOpqBEXRavc3jh0a+e6evAbI31tMda8VlPaSy0AZJfXsvmIe3wklc7W6C3zCSfleuMXR7NOyXw==} @@ -2115,29 +2037,29 @@ packages: '@types/is-hotkey@0.1.10': resolution: {integrity: sha512-RvC8KMw5BCac1NvRRyaHgMMEtBaZ6wh0pyPTBu7izn4Sj/AX9Y4aXU5c7rX8PnM/knsuUpC1IeoBkANtxBypsQ==} - '@types/js-levenshtein@1.1.3': - resolution: {integrity: sha512-jd+Q+sD20Qfu9e2aEXogiO3vpOC1PYJOUdyN9gvs4Qrvkg4wF43L5OhqrPeokdv8TL0/mXoYfpkcoGZMNN2pkQ==} - '@types/json-schema@7.0.15': resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} + '@types/jsonwebtoken@9.0.6': + resolution: {integrity: sha512-/5hndP5dCjloafCXns6SZyESp3Ldq7YjH3zwzwczYnjxIT0Fqzk5ROSYVGfFyczIue7IUEj8hkvLbPoLQ18vQw==} + '@types/keyv@3.1.4': resolution: {integrity: sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==} '@types/liftoff@2.5.1': resolution: {integrity: sha512-nB3R6Q9CZcM07JgiTK6ibxqrG1reiHE+UX7em/W1DKwVBxDlfKWOefQjk4jubY5xX+GDxVsWR2KD1SenPby8ow==} - '@types/lodash@4.17.5': - resolution: {integrity: sha512-MBIOHVZqVqgfro1euRDWX7OO0fBVUUMrN6Pwm8LQsz8cWhEpihlvR70ENj3f40j58TNxZaWv2ndSkInykNBBJw==} + '@types/lodash@4.17.6': + resolution: {integrity: sha512-OpXEVoCKSS3lQqjx9GGGOapBeuW5eUboYHRlHP9urXPX25IKZ6AnP5ZRxtVf63iieUbsHxLn8NQ5Nlftc6yzAA==} + + '@types/mime@1.3.5': + resolution: {integrity: sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==} '@types/minimatch@5.1.2': resolution: {integrity: sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==} - '@types/ms@0.7.34': - resolution: {integrity: sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==} - - '@types/node@20.14.5': - resolution: {integrity: sha512-aoRR+fJkZT2l0aGOJhuA8frnCSoNX6W7U2mpNq63+BxBIj5BQFt8rHy627kijCmm63ijdSdwvGgpUsU6MBsZZA==} + '@types/node@20.14.9': + resolution: {integrity: sha512-06OCtnTXtWOZBJlRApleWndH4JsRVs1pDCc8dLSQp+7PpUpX3ePdHyeNSFTeSe7FtKyQkrlPvHwJOW3SLd8Oyg==} '@types/normalize-package-data@2.4.4': resolution: {integrity: sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==} @@ -2148,8 +2070,11 @@ packages: '@types/prop-types@15.7.12': resolution: {integrity: sha512-5zvhXYtRNRluoE/jAp4GVsSduVUzNWKkOZrCDBWYtE7biZywwdC2AcEzg+cSMLFRfVgeAFqpfNabiPjxFddV1Q==} - '@types/react-dom@18.3.0': - resolution: {integrity: sha512-EhwApuTmMBmXuFOikhQLIBUn6uFg81SwLMOAUgodJF14SOBOCMdU04gDoYi0WOJJHD144TL32z4yDqCW3dnkQg==} + '@types/qs@6.9.15': + resolution: {integrity: sha512-uXHQKES6DQKKCLh441Xv/dwxOq1TVS3JPUMlEqoEglvlhR6Mxnlew/Xq/LRVHpLyk7iK3zODe1qYHIMltO7XGg==} + + '@types/range-parser@1.2.7': + resolution: {integrity: sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==} '@types/react-transition-group@4.4.10': resolution: {integrity: sha512-hT/+s0VQs2ojCX823m60m5f0sL5idt9SO6Tj6Dg+rdphGPIeJbJ6CxvBYkgkGKrYeDjvIpKTR38UzmtHJOGW3Q==} @@ -2160,8 +2085,11 @@ packages: '@types/responselike@1.0.3': resolution: {integrity: sha512-H/+L+UkTV33uf49PH5pCAUBVPNj2nDBXTN+qS1dOwyyg24l3CcicicCA7ca+HMvJBZcFgl5r8e+RR6elsb4Lyw==} - '@types/set-cookie-parser@2.4.9': - resolution: {integrity: sha512-bCorlULvl0xTdjj4BPUHX4cqs9I+go2TfW/7Do1nnFYWS0CPP429Qr1AY42kiFhCwLpvAkWFr1XIBHd8j6/MCQ==} + '@types/send@0.17.4': + resolution: {integrity: sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==} + + '@types/serve-static@1.15.7': + resolution: {integrity: sha512-W8Ym+h8nhuRwaKPaDw34QUkwsGi6Rc4yYqvKFo5rm2FUEhCFbzVWrxXUxuKK8TASjWsysJY0nsmNCGhCOIsrOw==} '@types/through@0.0.33': resolution: {integrity: sha512-HsJ+z3QuETzP3cswwtzt2vEIiHBk/dCcHGhbmG5X3ecnwFD/lPrMpliGXxSCg03L9AhrdwA4Oz/qfspkDW+xGQ==} @@ -2256,19 +2184,12 @@ packages: '@webassemblyjs/wast-printer@1.12.1': resolution: {integrity: sha512-+X4WAlOisVWQMikjbcvY2e0rwPsKQ9F688lksZhBcPycBBuii3O7m8FACbDMWDojpAqvjIncrG8J0XHKyQfVeA==} - '@xmldom/xmldom@0.8.10': - resolution: {integrity: sha512-2WALfTl4xo2SkGCYRt6rDTFfk9R1czmBvUQy12gK2KuRKIpWEhcbbzy8EZXtz/jkRqHX8bFEc6FC1HjX4TUWYw==} - engines: {node: '>=10.0.0'} - '@xtuc/ieee754@1.2.0': resolution: {integrity: sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==} '@xtuc/long@4.2.2': resolution: {integrity: sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==} - '@zxing/text-encoding@0.9.0': - resolution: {integrity: sha512-U/4aVJ2mxI0aDNI8Uq0wEhMgY+u4CNtEb0om3+y3+niDAsoTCOB33UF0sxpzqzdqXLqmvc+vZyAt4O8pPdfkwA==} - abbrev@1.1.1: resolution: {integrity: sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==} @@ -2380,10 +2301,6 @@ packages: resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} engines: {node: '>=8'} - ansi-styles@5.2.0: - resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} - engines: {node: '>=10'} - any-promise@1.3.0: resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} @@ -2409,9 +2326,6 @@ packages: resolution: {integrity: sha512-y+CcFFwelSXpLZk/7fMB2mUbGtX9lKycf1MWJ7CaTIERyitVlyQx6C+sxcROU2BAJ24OiZyK+8wj2i8AlBoS3A==} engines: {node: '>=10'} - aria-query@5.3.0: - resolution: {integrity: sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==} - arr-diff@4.0.0: resolution: {integrity: sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA==} engines: {node: '>=0.10.0'} @@ -2458,23 +2372,9 @@ packages: engines: {node: '>= 4.5.0'} hasBin: true - available-typed-arrays@1.0.7: - resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==} - engines: {node: '>= 0.4'} - - aws-sdk@2.1644.0: - resolution: {integrity: sha512-9DkVmQWrL766uxeag6wLbXNahwodrIvxZlh1JZ6bzMoNXLCx38GhQfdtLhCoqK7+k0c5QIzHhjPqyqwPM4ohJw==} - engines: {node: '>= 10.0.0'} - - axios@0.26.1: - resolution: {integrity: sha512-fPwcX4EvnSHuInCMItEhAGnaSEXRBjtzh9fOtsE6E1G6p7vl7edEeZe11QHf18+6+9gR5PbKV/sGKNaD8YaMeA==} - axios@1.6.0: resolution: {integrity: sha512-EZ1DYihju9pwVB+jg67ogm+Tmqc6JmhamRN6I4Zt8DfZu5lbcQGw3ozH9lFejSJgs/ibaef3A9PMXPLeefFGJg==} - axios@1.7.2: - resolution: {integrity: sha512-2A8QhOMrbomlDuiLeK9XibIBzuHeRcqqNOHp0Cyp5EoJ1IFDh+XZH3A6BkXtv0K4gFGCI0Y4BM7B1wOEi0Rmgw==} - b4a@1.6.6: resolution: {integrity: sha512-5Tk1HLk6b6ctmjIkAcU/Ujv/1WqiDl0F0JdRCR80VsOcUlHcu7pWeWRlOqQLHfDEsVx9YH/aif5AG4ehoCtTmg==} @@ -2515,9 +2415,6 @@ packages: bcryptjs@2.4.3: resolution: {integrity: sha512-V/Hy/X9Vt7f3BbPJEi8BdVFMByHi+jNXrYkW3huaybV/kQ0KJg0Y6PkEMbn+zeT+i+SiKZ/HMqJGIIt4LZDqNQ==} - better-sqlite3@8.0.1: - resolution: {integrity: sha512-JhTZjpyapA1icCEjIZB4TSSgkGdFgpWZA2Wszg7Cf4JwJwKQmbvuNnJBeR+EYG/Z29OXvR4G//Rbg31BW/Z7Yg==} - big-integer@1.6.52: resolution: {integrity: sha512-QxD8cf2eVqJOOz63z6JIN9BzvVs/dlySa5HGSBH5xtR8dPteIRQnBxxKqkNTiT6jbDTF6jAfrd4oMcND9RGbQg==} engines: {node: '>=0.6'} @@ -2529,9 +2426,6 @@ packages: resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} engines: {node: '>=8'} - bindings@1.5.0: - resolution: {integrity: sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==} - bl@4.1.0: resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} @@ -2587,8 +2481,9 @@ packages: buffer-from@1.1.2: resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} - buffer@4.9.2: - resolution: {integrity: sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==} + buffer-writer@2.0.0: + resolution: {integrity: sha512-a7ZpuTZU1TRtnwyCNW3I5dc0wWNC3VR9S++Ewyk2HHZdrO3CQJqSpd+95Us590V6AL7JqUAH2IwZ/398PmNFgw==} + engines: {node: '>=4'} buffer@5.7.1: resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} @@ -2646,8 +2541,8 @@ packages: camelize@1.0.1: resolution: {integrity: sha512-dU+Tx2fsypxTgtLoE36npi3UqcjSSMNYfkqgmoEhtZrraP5VWq0K7FkWVTYa8eMPtnU/G2txVsfdCJTn9uzpuQ==} - caniuse-lite@1.0.30001636: - resolution: {integrity: sha512-bMg2vmr8XBsbL6Lr0UHXy/21m84FTxDLWn2FSqMd5PrlbMxwJlQnC2YWYxVgp66PZE+BBNF2jYQUBKCo1FDeZg==} + caniuse-lite@1.0.30001639: + resolution: {integrity: sha512-eFHflNTBIlFwP2AIKaYuBQN/apnUoKNhBdza8ZnW/h2di4LCZ4xFqYlxUxo+LQ76KFI1PGcC1QDxMbxTZpSCAg==} canvas@2.11.2: resolution: {integrity: sha512-ItanGBMrmRV7Py2Z+Xhs7cT+FNt5K0vPL4p9EZ/UX/Mu7hFbkxSjKF2KVtPwX7UYWp7dRKnrTvReflgrItJbdw==} @@ -2661,10 +2556,6 @@ packages: resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} engines: {node: '>=4'} - chalk@4.1.1: - resolution: {integrity: sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==} - engines: {node: '>=10'} - chalk@4.1.2: resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} engines: {node: '>=10'} @@ -2722,6 +2613,10 @@ packages: resolution: {integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==} engines: {node: '>=8'} + cli-progress@3.12.0: + resolution: {integrity: sha512-tRkV3HJ1ASwm19THiiLIXLO7Im7wlTuKnvkYaTkyoAPefqjNg7W7DHKUlGRxy9vxDvbyCYQkQozvptuMkGCg8A==} + engines: {node: '>=4'} + cli-spinners@2.9.2: resolution: {integrity: sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==} engines: {node: '>=6'} @@ -2748,15 +2643,6 @@ packages: resolution: {integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==} engines: {node: '>=0.8'} - cloudinary-core@2.13.1: - resolution: {integrity: sha512-z53GPNWnvU0Zi+ns8CIVbZBfj7ps/++zDvwIyiFuq5p1MoK+KUCg0k5mBceDDHTnx1gHmHUd9aohS+gDxPNt6w==} - peerDependencies: - lodash: '>=4.0' - - cloudinary@1.41.3: - resolution: {integrity: sha512-4o84y+E7dbif3lMns+p3UW6w6hLHEifbX/7zBJvaih1E9QNMZITENQ14GPYJC4JmhygYXsuuBb9bRA3xWEoOfg==} - engines: {node: '>=0.6'} - co-body@5.2.0: resolution: {integrity: sha512-sX/LQ7LqUhgyaxzbe7IqwPeTr2yfpfUIQ/dgpKo6ZI4y4lpQA0YxAomWIY+7I7rHWcG02PG+OuPREzMW/5tszQ==} @@ -2771,9 +2657,6 @@ packages: codemirror@5.65.16: resolution: {integrity: sha512-br21LjYmSlVL0vFCPWPfhzUCT34FM/pAdK7rRIZwa0rrtrIdotvP4Oh4GUHsu2E3IrQMCfRkL/fN3ytMNxVQvg==} - codemirror@6.0.1: - resolution: {integrity: sha512-J8j+nZ+CdWmIeFIGXEFbFPtpiYacFMDR8GlHK3IyHQJMCaVRfGx9NT+Hxivv1ckLWPvNdZqndbr/7lVhrf/Svg==} - collection-visit@1.0.0: resolution: {integrity: sha512-lNkKvzEeMBBjUGHZ+q6z9pSJla0KWAQPvtzhEV9+iGyQYG+pBpl7xKDhxoNSOZH2hhv0v5k0y2yAM4o4SjoSkw==} engines: {node: '>=0.10.0'} @@ -2900,10 +2783,6 @@ packages: resolution: {integrity: sha512-8aPsApQfebXnuI+537McwYsDtjVxGm8gTIzQI3FDW6t5t/DAhERxtnbEPN/8RX+uZthoz4eCOgloXaE5cYyNow==} engines: {node: '>= 0.8'} - cookies@0.9.1: - resolution: {integrity: sha512-TG2hpqe4ELx54QER/S3HQ9SRVnQnGBtKUz5bLQWtYAQ+o6GpgMs6sYUvaiJjVxb+UXwhRhAEP3m7LbsIZ77Hmw==} - engines: {node: '>= 0.8'} - copy-descriptor@0.1.1: resolution: {integrity: sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw==} engines: {node: '>=0.10.0'} @@ -2918,9 +2797,6 @@ packages: core-js-pure@3.37.1: resolution: {integrity: sha512-J/r5JTHSmzTxbiYYrzXg9w1VpqrYt+gexenBE9pugeyhwPZTAEJddyiReJWsLO6uNQ8xJZFbod6XC7KKwatCiA==} - core-js@3.37.1: - resolution: {integrity: sha512-Xn6qmxrQZyB0FFY8E3bgRXei3lWDJHhvI+u0q9TKIYM49G8pAr0FgnnrFRAmsbptZL1yxRADVXn+x5AGsbBfyw==} - core-util-is@1.0.3: resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} @@ -3006,9 +2882,6 @@ packages: resolution: {integrity: sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==} engines: {node: '>=0.11'} - date-fns@3.6.0: - resolution: {integrity: sha512-fRHTG8g/Gif+kSh50gaGEdToemgfj74aRX3swtiouboip5JDLAyDE9F11nHMIcvOaXeOC6D7SpNhi7uFyB7Uww==} - debounce@1.2.1: resolution: {integrity: sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug==} @@ -3139,10 +3012,6 @@ packages: resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} engines: {node: '>= 0.8'} - dequal@2.0.3: - resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} - engines: {node: '>=6'} - destroy@1.2.0: resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==} engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} @@ -3187,9 +3056,6 @@ packages: dnd-core@16.0.1: resolution: {integrity: sha512-HK294sl7tbw6F6IeuK16YSBUoorvHpY8RHO+9yFfaJyCDVb6n7PRcezrOEOa2SBCqiYpemh5Jx20ZcjKdFAVng==} - dom-accessibility-api@0.5.16: - resolution: {integrity: sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==} - dom-converter@0.2.0: resolution: {integrity: sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==} @@ -3242,8 +3108,8 @@ packages: ee-first@1.1.1: resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} - electron-to-chromium@1.4.805: - resolution: {integrity: sha512-8W4UJwX/w9T0QSzINJckTKG6CYpAUTqsaWcWIsdud3I1FYJcMgW9QqT1/4CBff/pP/TihWh13OmiyY8neto6vw==} + electron-to-chromium@1.4.816: + resolution: {integrity: sha512-EKH5X5oqC6hLmiS7/vYtZHZFTNdhsYG5NVPRN6Yn0kQHNBlT59+xSM8HBy66P5fxWpKgZbPqb+diC64ng295Jw==} elliptic@6.5.5: resolution: {integrity: sha512-7EjbcmUm17NQFu4Pmgmq2olYMj8nwMnpcddByChSUjArp8F5DQWcIcpriwO4ZToLNAJig0yiyjswfyGNje/ixw==} @@ -3297,8 +3163,8 @@ packages: resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} engines: {node: '>= 0.4'} - es-module-lexer@1.5.3: - resolution: {integrity: sha512-i1gCgmR9dCl6Vil6UKPI/trA69s08g/syhiDK9TG0Nf1RJjjFI+AzoWW7sPufzkgYAn861skuCwJa0pIIHYxvg==} + es-module-lexer@1.5.4: + resolution: {integrity: sha512-MVNK56NiMrOwitFB7cqDwq0CQutbw+0BvLshJSse0MUNU+y1FC3bUS/AQg7oUng+/wKrrki7JfmwtVHkVfPLlw==} esbuild-loader@2.21.0: resolution: {integrity: sha512-k7ijTkCT43YBSZ6+fBCW1Gin7s46RrJ0VQaM8qA7lq7W+OLsGgtLyFV8470FzYi/4TeDexniTBTPTwZUnXXR5g==} @@ -3366,14 +3232,14 @@ packages: eventemitter3@4.0.7: resolution: {integrity: sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==} - events@1.1.1: - resolution: {integrity: sha512-kEcvvCBByWXGnZy6JUlgAp2gBIUjfCAV6P6TgT1/aaQKcmuAEC4OZTV1I4EWQLz2gxZw76atuVyvHhTxvi0Flw==} - engines: {node: '>=0.4.x'} - events@3.3.0: resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} engines: {node: '>=0.8.x'} + eventsource@2.0.2: + resolution: {integrity: sha512-IzUmBGPR3+oUG9dUeXynyNmf91/3zUSJg1lCktzKw47OXuhco54U3r9B7O4XX+Rb1Itm9OZ2b0RkTs10bICOxA==} + engines: {node: '>=12.0.0'} + execa@5.1.1: resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} engines: {node: '>=10'} @@ -3426,6 +3292,9 @@ packages: fast-json-stable-stringify@2.1.0: resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} + fast-safe-stringify@2.1.1: + resolution: {integrity: sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==} + fast-xml-parser@4.2.5: resolution: {integrity: sha512-B9/wizE4WngqQftFPmdaMYlXoJlJOYxGQOanC77fq9k8+Z0v5dDSVh+3glErdIROP//s/jgb7ZuxKfB8nVyo0g==} hasBin: true @@ -3440,9 +3309,6 @@ packages: resolution: {integrity: sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==} engines: {node: '>=8'} - file-uri-to-path@1.0.0: - resolution: {integrity: sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==} - fill-range@4.0.0: resolution: {integrity: sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==} engines: {node: '>=0.10.0'} @@ -3497,9 +3363,6 @@ packages: debug: optional: true - for-each@0.3.3: - resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==} - for-in@1.0.2: resolution: {integrity: sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==} engines: {node: '>=0.10.0'} @@ -3523,11 +3386,6 @@ packages: resolution: {integrity: sha512-KcpbcpuLNOwrEjnbpMC0gS+X8ciDoZE1kkqzat4a8vrprf+s9pKNQ/QIwWfbfs4ltgmFl3MD177SNTkve3BwGQ==} deprecated: 'Please upgrade to latest, formidable@v2 or formidable@v3! Check these notes: https://bit.ly/2ZEqIau' - formik@2.2.9: - resolution: {integrity: sha512-LQLcISMmf1r5at4/gyJigGn0gOwFbeEAlji+N9InZF6LIMXnFNkO42sCI8Jt84YZggpD4cPWObAZaxpEFtSzNA==} - peerDependencies: - react: '>=16.8.0' - formik@2.4.0: resolution: {integrity: sha512-QZiWztt9fD84EYcF7Bmr431ZhIm1xUVgBACbTuJ6azPrUpVp7o6q+t9HJaIQsFZrMfcBPNBotYtDgyDpzQ3z0Q==} peerDependencies: @@ -3545,9 +3403,6 @@ packages: resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==} engines: {node: '>= 0.6'} - from2@2.3.0: - resolution: {integrity: sha512-OMcX/4IC/uqEPVgGeyfN22LJk6AZrMkRZHxcHBMBvHScDGgwTm2GT2Wkgtocyd3JfZffjj2kYUDXXII0Fk9W0g==} - fs-constants@1.0.0: resolution: {integrity: sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==} @@ -3584,9 +3439,6 @@ packages: function-bind@1.1.2: resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} - fuzzy-search@3.2.1: - resolution: {integrity: sha512-vAcPiyomt1ioKAsAL2uxSABHJ4Ju/e4UeDM+g1OlR0vV4YhLGMNsdLNvZTpEDY4JCSt0E4hASCNM5t2ETtsbyg==} - fuzzysort@2.0.4: resolution: {integrity: sha512-Api1mJL+Ad7W7vnDZnWq5pGaXJjyencT+iKGia2PlHUcSsSzWwIQ3S1isiMpwpavjYtGd2FzhUIhnnhOULZgDw==} @@ -3607,8 +3459,8 @@ packages: resolution: {integrity: sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==} engines: {node: '>= 0.4'} - get-it@8.6.1: - resolution: {integrity: sha512-fCK6M+WkN1TuXzYac0RYk9OK4VdJKV1xG3fe9D3TU2is/G8ofz6/+hRBCiddO/eNPhnhMBpYIk2kNx1S4NRdsg==} + get-it@8.6.2: + resolution: {integrity: sha512-yZNwjgWGc1bmu+NGlb834A5SpfJAlVubOmyMjnwMnGdO4dpCshAFahFTC9Ct123FSf9cY1aSVPLJS2/BKaQ+GA==} engines: {node: '>=14.0.0'} get-latest-version@5.1.0: @@ -3713,10 +3565,6 @@ packages: resolution: {integrity: sha512-DEi+/JjXT84mmFYhSmv+SX14v+3Z7vuCIYAMwtdPCTXHMSLhWqSYqWAMXDUQZuV7yaJv2d84AYnkCFNooLKBsA==} engines: {node: '>=12.0.0'} - graphql@16.8.2: - resolution: {integrity: sha512-cvVIBILwuoSyD54U4cF/UXDh5yAobhNV/tPygI4lZhgOIJQE/WLWC4waBRb4I6bDVYb3OVx3lfHbaQOEoUD5sg==} - engines: {node: ^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0} - gzip-size@6.0.0: resolution: {integrity: sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q==} engines: {node: '>=10'} @@ -3786,12 +3634,6 @@ packages: header-case@1.0.1: resolution: {integrity: sha512-i0q9mkOeSuhXw6bGgiQCCBgY/jlZuV/7dZXyZ9c6LcBrqwvT8eT719E9uxE5LiZftdl+z81Ugbg/VvXV4OJOeQ==} - headers-polyfill@3.2.5: - resolution: {integrity: sha512-tUCGvt191vNSQgttSyJoibR+VO+I6+iCHIUdhzEMJKE+EAL8BwCN7fUOZlY4ofOelNHsK+gEjxB/B+9N3EWtdA==} - - headers-polyfill@3.3.0: - resolution: {integrity: sha512-5e57etwBpNcDc0b6KCVWEh/Ro063OxPvzVimUdM0/tsYM/T7Hfy3kknIGj78SFTOhNd8AZY41U8mOHoO4LzmIQ==} - helmet@6.2.0: resolution: {integrity: sha512-DWlwuXLLqbrIOltR6tFQXShj/+7Cyp0gLi6uAb8qMdFh/YBBFbKSgQ6nbXmScYd8emMctuthmgIa7tUfo9Rtyg==} engines: {node: '>=14.0.0'} @@ -3897,9 +3739,6 @@ packages: peerDependencies: postcss: ^8.1.0 - ieee754@1.1.13: - resolution: {integrity: sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==} - ieee754@1.2.1: resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} @@ -3968,10 +3807,6 @@ packages: resolution: {integrity: sha512-QAgPDQMEgrDssk1XiwwHoOGYF9BAbUcc1+j+FhEvaOt8/cKRqyLn0U5qA6F74fGhTMGxf92pOvPBeh29jQJDTQ==} engines: {node: '>=12.0.0'} - inquirer@8.2.6: - resolution: {integrity: sha512-M1WuAmb7pn9zdFRtQYk26ZBoY043Sse0wVDdk4Bppr+JOXyQYybdtvK+l9wUibhtjdjvtoiNy8tk+EgsYIUqKg==} - engines: {node: '>=12.0.0'} - interpret@1.4.0: resolution: {integrity: sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==} engines: {node: '>= 0.10'} @@ -3980,16 +3815,9 @@ packages: resolution: {integrity: sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw==} engines: {node: '>= 0.10'} - intl-messageformat@10.3.3: - resolution: {integrity: sha512-un/f07/g2e/3Q8e1ghDKET+el22Bi49M7O/rHxd597R+oLpPOMykSv5s51cABVfu3FZW+fea4hrzf2MHu1W4hw==} - intl-messageformat@10.3.4: resolution: {integrity: sha512-/FxUIrlbPtuykSNX85CB5sp2FjLVeTmdD7TfRkVFPft2n4FgcSlAcilFytYiFAEmPHc+0PvpLCIPXeaGFzIvOg==} - into-stream@5.1.1: - resolution: {integrity: sha512-krrAJ7McQxGGmvaYbB7Q1mcA+cRwg9Ij2RfWIeVesNBgVDZmzY/Fa4IpZUT3bmdRzMzdf/mzltCG2Dq99IZGBA==} - engines: {node: '>=8'} - invariant@2.2.4: resolution: {integrity: sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==} @@ -4001,10 +3829,6 @@ packages: resolution: {integrity: sha512-YBUanLI8Yoihw923YeFUS5fs0fF2f5TSFTNiYAAzhhDscDa3lEqYuz1pDOEP5KvX94I9ey3vsqjJcLVFVU+3QA==} engines: {node: '>= 0.10'} - is-arguments@1.1.1: - resolution: {integrity: sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==} - engines: {node: '>= 0.4'} - is-arrayish@0.2.1: resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} @@ -4018,15 +3842,12 @@ packages: is-buffer@1.1.6: resolution: {integrity: sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==} - is-callable@1.2.7: - resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} - engines: {node: '>= 0.4'} - is-class-hotfix@0.0.6: resolution: {integrity: sha512-0n+pzCC6ICtVr/WXnN2f03TK/3BfXY7me4cjCAqT8TYXEl0+JBRoqBo94JJHXcyDSLUeWbNX8Fvy5g5RJdAstQ==} - is-core-module@2.13.1: - resolution: {integrity: sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==} + is-core-module@2.14.0: + resolution: {integrity: sha512-a5dFJih5ZLYlRtDc0dZWP7RiKr6xIKzmn/oAYCDvdLThadVgyJwlaoQPmRtMSpz+rk0OGAgIu+TcM9HUF0fk1A==} + engines: {node: '>= 0.4'} is-data-descriptor@1.0.1: resolution: {integrity: sha512-bc4NlCDiCr28U4aEsQ3Qs2491gVq4V8G7MQyws968ImqjKuYtTJXrl7Vq7jsN7Ly/C3xj5KWFrY7sHNeDkAzXw==} @@ -4097,9 +3918,6 @@ packages: resolution: {integrity: sha512-E+zBKpQ2t6MEo1VsonYmluk9NxGrbzpeeLC2xIViuO2EjU2xsXsBPwTr3Ykv9l08UYEVEdWeRZNouaZqF6RN0w==} engines: {node: '>= 0.4'} - is-node-process@1.2.0: - resolution: {integrity: sha512-Vg4o6/fqPxIjtxgUH5QLJhwZ7gW5diGCVlXpuUfELC62CuxM1iHcRe51f2W1FDy04Ai4KJkagKjx3XaqyfRKXw==} - is-number@3.0.0: resolution: {integrity: sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==} engines: {node: '>=0.10.0'} @@ -4154,10 +3972,6 @@ packages: is-type-of@1.4.0: resolution: {integrity: sha512-EddYllaovi5ysMLMEN7yzHEKh8A850cZ7pykrY1aNRQGn/CDjRDE9qEWbIdt7xGEVJmjBXzU/fNnC4ABTm8tEQ==} - is-typed-array@1.1.13: - resolution: {integrity: sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==} - engines: {node: '>= 0.4'} - is-typedarray@1.0.0: resolution: {integrity: sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==} @@ -4211,9 +4025,8 @@ packages: jju@1.4.0: resolution: {integrity: sha512-8wb9Yw966OSxApiCt0K3yNJL8pnNeIv+OEq2YMidz4FKP6nonSRoOXc80iXY4JaN2FC11B9qsNmDsm+ZOfMROA==} - jmespath@0.16.0: - resolution: {integrity: sha512-9FzQjJ7MATs1tSpnco1K6ayiYE3figslrXA72G2HQ/n76RzvYlofyi5QM+iX4YRs/pu3yzxlVQSST23+dMDknw==} - engines: {node: '>= 0.6.0'} + jose@4.15.7: + resolution: {integrity: sha512-L7ioP+JAuZe8v+T5+zVI9Tx8LtU8BL7NxkyDFVMv+Qr3JW0jSoYDedLtodaXwfqMpeCyx4WXFNyu9tJt4WvC1A==} joycon@3.1.1: resolution: {integrity: sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw==} @@ -4222,10 +4035,6 @@ packages: js-cookie@2.2.1: resolution: {integrity: sha512-HvdH2LzI/EAZcUwA8+0nKNtWHqS+ZmijLA30RwZA0bo7ToCckjK5MkGhjED9KoRcXO6BaGI3I9UIzSA1FKFPOQ==} - js-levenshtein@1.1.6: - resolution: {integrity: sha512-X2BB11YZtrRqY4EnQcLX5Rh373zbK4alC1FW7D7MBhL2gtcC17cTnr6DmfHZeS0s2rTHjUTMMHfG7gO8SSdw+g==} - engines: {node: '>=0.10.0'} - js-sha3@0.8.0: resolution: {integrity: sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==} @@ -4277,6 +4086,10 @@ packages: jwk-to-pem@2.0.5: resolution: {integrity: sha512-L90jwellhO8jRKYwbssU9ifaMVqajzj3fpRjDKcsDzrslU9syRbFqfkXtT4B89HYAap+xsxNcxgBSB09ig+a7A==} + jwks-rsa@3.1.0: + resolution: {integrity: sha512-v7nqlfezb9YfHHzYII3ef2a2j1XnGeSE/bK3WfumaYCqONAIstJbrEGapz4kadScZzEt7zYCN7bucj8C0Mv/Rg==} + engines: {node: '>=14'} + jws@3.2.2: resolution: {integrity: sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==} @@ -4404,10 +4217,6 @@ packages: resolution: {integrity: sha512-43zkIKubNbnrULWlHdN5h1g3SEKXOEzoAlRsHOTFpnlDu8JlAOZSMJBLULusuXRequboiwJcj5vtYXKB3k7+2g==} engines: {node: ^4.8.4 || ^6.10.1 || ^7.10.1 || >= 8.1.4} - koa@2.15.3: - resolution: {integrity: sha512-j/8tY9j5t+GVMLeioLaxweJiKUayFhlGqNTzf2ZGwL0ZCQijd2RLHK0SLW5Tsko8YyyqCZC2cojIb0/s62qTAg==} - engines: {node: ^4.8.4 || ^6.10.1 || ^7.10.1 || >= 8.1.4} - kuler@2.0.0: resolution: {integrity: sha512-Xq9nH7KlWZmXAtodXDDRE7vs6DU1gTU8zYDHDiWLSip45Egwq3plLHzPn27NgvzL2r1LMPC1vdqh98sQxtqj4A==} @@ -4427,6 +4236,9 @@ packages: resolution: {integrity: sha512-01zfGFqfORP1CGmZZP2Zn51zsqz4RltDi0RDOhbGoLYdUT5Lw+I2gX6QdwXhPITF6hPOHEOp+At6/L24hIg9WQ==} engines: {node: '>= 0.8'} + limiter@1.1.5: + resolution: {integrity: sha512-FWWMIEOxz3GwUI4Ts/IvgVy6LPvoMPgjMdQ185nN6psJyBJ4yOpzqm695/h5umdLJg2vW3GR5iG11MAkR2AzJA==} + lines-and-columns@1.2.4: resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} @@ -4456,6 +4268,9 @@ packages: lodash-es@4.17.21: resolution: {integrity: sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==} + lodash.clonedeep@4.5.0: + resolution: {integrity: sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==} + lodash.deburr@4.1.0: resolution: {integrity: sha512-m/M1U1f3ddMCs6Hq2tAsYThTBDaAKFDX3dwDo97GEYzamXi9SqUpjWi/Rrj/gf3X2n8ktwgZrlP1z6E3v/IExQ==} @@ -4507,16 +4322,15 @@ packages: resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} engines: {node: '>=10'} + lru-memoizer@2.3.0: + resolution: {integrity: sha512-GXn7gyHAMhO13WSKrIiNfztwxodVsP8IoZ3XfrJV4yH2x0/OeTO/FIaAHTY5YekdGgW94njfuKmyyt1E0mR6Ug==} + lru_map@0.3.3: resolution: {integrity: sha512-Pn9cox5CsMYngeDbmChANltQl+5pi6XmTrraMSzhPmMBbmgcxmqWry0U3PGapCU1yB4/LqCcom7qhHZiF/jGfQ==} luxon@1.28.1: resolution: {integrity: sha512-gYHAa180mKrNIUJCbwpmD0aTu9kV0dREDrwNnuyFAsO1Wt0EVYSZelPnJlbj9HplzXX/YWXHFTL45kvZ53M0pw==} - lz-string@1.5.0: - resolution: {integrity: sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==} - hasBin: true - mailcomposer@3.12.0: resolution: {integrity: sha512-zBeDoKUTNI8IAsazoMQFt3eVSVRtDtgrvBjBVdBjxDEX+5KLlKtEFCrBXnxPhs8aTYufUS1SmbFnGpjHS53deg==} deprecated: This project is unmaintained @@ -4568,9 +4382,6 @@ packages: resolution: {integrity: sha512-TchMembfxfNVpHkbtriWltGWc+m3xszaRD0CZup7GFFhzIgQqxIfn3eGj1yZpfuflzPvfkt611B2Q/Bsk1YnGg==} hasBin: true - match-sorter@4.2.1: - resolution: {integrity: sha512-s+3h9TiZU9U1pWhIERHf8/f4LmBN6IXaRgo2CI17+XGByGS1GvG5VvXK9pcGyCjGe3WM3mSYRC3ipGrd5UEVgw==} - match-sorter@6.3.4: resolution: {integrity: sha512-jfZW7cWS5y/1xswZo8VBOdudUiSd9nifYRWphc9M5D/ee4w4AoXLgBEdRbgVaxbMuagBPeUC5y2Hi8DO6o9aDg==} @@ -4664,6 +4475,10 @@ packages: resolution: {integrity: sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==} engines: {node: '>=10'} + minimatch@9.0.3: + resolution: {integrity: sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==} + engines: {node: '>=16 || 14 >=14.17'} + minimist@1.2.8: resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} @@ -4675,10 +4490,6 @@ packages: resolution: {integrity: sha512-fNzuVyifolSLFL4NzpF+wEF4qrgqaaKX0haXPQEdQ7NKAN+WecoKMHV09YcuL/DHxrUsYQOK3MiuDf7Ip2OXfQ==} engines: {node: '>=8'} - minipass@5.0.0: - resolution: {integrity: sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==} - engines: {node: '>=8'} - minizlib@2.1.2: resolution: {integrity: sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==} engines: {node: '>= 8'} @@ -4712,16 +4523,6 @@ packages: ms@2.1.3: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} - msw@1.0.1: - resolution: {integrity: sha512-fBwQRCmf+jh0zlGlasBfpCaxLqb4QLMsY1Q+nkXkO0nnUYopl50NcNRvP4V+TAiqOwJSd0LrQ5NcJqwbrnTBqw==} - engines: {node: '>=14'} - hasBin: true - peerDependencies: - typescript: '>= 4.4.x <= 4.9.x' - peerDependenciesMeta: - typescript: - optional: true - multistream@4.1.0: resolution: {integrity: sha512-J1XDiAmmNpRCBfIWJv+n0ymC4ABcf/Pl+5YvC5B/D2f/2+8PtHvCNxMPKiQcZyi922Hq69J2YOpb1pTywfifyw==} @@ -4865,8 +4666,9 @@ packages: resolution: {integrity: sha512-79LYn6VAb63zgtmAteVOWo9Vdj71ZVBy3Pbse+VqxDpEP83XuujMrGqHIwAXJ5I/aM0zU7dIyIAhifVTPrNItQ==} engines: {node: '>=0.10.0'} - object-inspect@1.13.1: - resolution: {integrity: sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==} + object-inspect@1.13.2: + resolution: {integrity: sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==} + engines: {node: '>= 0.4'} object-keys@1.1.1: resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} @@ -4936,6 +4738,10 @@ packages: resolution: {integrity: sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==} engines: {node: '>=10'} + os-paths@7.4.0: + resolution: {integrity: sha512-Ux1J4NUqC6tZayBqLN1kUlDAEvLiQlli/53sSddU4IN+h+3xxnv2HmRSMpVSvr1hvJzotfMs3ERvETGK+f4OwA==} + engines: {node: '>= 4.0'} + os-tmpdir@1.0.2: resolution: {integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==} engines: {node: '>=0.10.0'} @@ -4943,9 +4749,6 @@ packages: outdent@0.8.0: resolution: {integrity: sha512-KiOAIsdpUTcAXuykya5fnVVT+/5uS0Q1mrkRHcF89tpieSmY33O/tmc54CqwA+bfhbtEfZUNLHaPUiB9X3jt1A==} - outvariant@1.4.2: - resolution: {integrity: sha512-Ou3dJ6bA/UJ5GVHxah4LnqDwZRwAmWxrG3wtrHrbGnP4RnLCtA64A4F+ae7Y8ww660JaddSoArUR5HjipWSHAQ==} - p-cancelable@2.1.1: resolution: {integrity: sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==} engines: {node: '>=8'} @@ -4954,10 +4757,6 @@ packages: resolution: {integrity: sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==} engines: {node: '>=4'} - p-is-promise@3.0.0: - resolution: {integrity: sha512-Wo8VsW4IRQSKVXsJCn7TomUaVtyfjVDn3nUP7kE967BQk0CwFpdbZs0X0uk5sW9mkBa9eNM7hCMaG93WUAwxYQ==} - engines: {node: '>=8'} - p-limit@2.3.0: resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} engines: {node: '>=6'} @@ -5002,6 +4801,9 @@ packages: resolution: {integrity: sha512-CHJqc94AA8YfSLHGQT3DbvSIuE12NLFekpM4n7LRrAd3dOJtA911+4xe9q6nC3/jcKraq7nNS9VxgtT0KC+diA==} engines: {node: '>=12'} + packet-reader@1.0.0: + resolution: {integrity: sha512-HAKu/fG3HpHFO0AA8WE8q2g+gBJaZ9MG7fcKk+IJPLTGAD6Psw4443l+9DGRbOIh3/aXr7Phy0TjilYivJo5XQ==} + param-case@2.1.1: resolution: {integrity: sha512-eQE845L6ot89sk2N8liD8HAuH4ca6Vvr7VWAWwt7+kvvG5aBcPmmphQ68JsEG2qa9n1TykS2DLeMt363AAH8/w==} @@ -5106,9 +4908,6 @@ packages: pause@0.0.1: resolution: {integrity: sha512-KG8UEiEVkR3wGEb4m5yZkVCzigAD+cVEJck2CzYZO37ZGJfctvVptVO192MwrtPhzONn6go8ylnOdMhKqi4nfg==} - pg-cloudflare@1.1.1: - resolution: {integrity: sha512-xWPagP/4B6BgFO+EKz3JONXv3YDgvkbVrGw2mTo3D6tVDQRh1e7cqVGvyR3BE+eQgAvx1XhW/iEASj4/jCWl3Q==} - pg-connection-string@2.6.1: resolution: {integrity: sha512-w6ZzNu6oMmIzEAYVw+RLK0+nqHPt8K3ZnknKi+g48Ak2pr3dtljJW3o+D/n2zzCG07Zoe9VOX3aiKpj+BN0pjg==} @@ -5131,8 +4930,8 @@ packages: resolution: {integrity: sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA==} engines: {node: '>=4'} - pg@8.12.0: - resolution: {integrity: sha512-A+LHUSnwnxrnL/tZ+OLfqR1SxLN3c/pgDztZ47Rpbsd4jUytsTtwQo/TLPRzPJMp/1pbhYVhH9cuSZLAajNfjQ==} + pg@8.8.0: + resolution: {integrity: sha512-UXYN0ziKj+AeNNP7VDMwrehpACThH7LUl/p8TDFpEUuSejCUIwGSfxpHsPvtM6/WXFy6SU4E5RG4IJV/TZAGjw==} engines: {node: '>= 8.0.0'} peerDependencies: pg-native: '>=3.0.1' @@ -5171,10 +4970,6 @@ packages: resolution: {integrity: sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg==} engines: {node: '>=0.10.0'} - possible-typed-array-names@1.0.0: - resolution: {integrity: sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==} - engines: {node: '>= 0.4'} - postcss-modules-extract-imports@3.1.0: resolution: {integrity: sha512-k3kNe0aNFQDAZGbin48pL2VNidTF0w4/eASDsxlyspobzU3wZQLOGj7L9gfRe0Jo9/4uud09DsjFNH7winGv8Q==} engines: {node: ^10 || ^12 || >= 14} @@ -5206,8 +5001,8 @@ packages: postcss-value-parser@4.2.0: resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} - postcss@8.4.38: - resolution: {integrity: sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==} + postcss@8.4.39: + resolution: {integrity: sha512-0vzE+lAiG7hZl1/9I8yzKLx3aR9Xbof3fBHKunvMfOCYAtMhrsnccJY2iTURb9EZd5+pLuiNV9/c/GZJOHsgIw==} engines: {node: ^10 || ^12 || >=14} postgres-array@2.0.0: @@ -5247,10 +5042,6 @@ packages: pretty-error@4.0.0: resolution: {integrity: sha512-AoJ5YMAcXKYxKhuJGdcvse+Voc6v1RgnsR3nWcYU7q4t6z0Q6T86sv5Zq8VIRbOWWFpvdGE83LtdSMNd+6Y0xw==} - pretty-format@27.5.1: - resolution: {integrity: sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - process-nextick-args@2.0.1: resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} @@ -5282,9 +5073,6 @@ packages: pump@3.0.0: resolution: {integrity: sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==} - punycode@1.3.2: - resolution: {integrity: sha512-RofWgt/7fL5wP1Y7fxE7/EmTLzQVnB0ycyibJ0OOHIlJqTNzglYFxVwETOcIoJqJmpDXJ9xImDv+Fq34F/d4Dw==} - punycode@2.3.1: resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} engines: {node: '>=6'} @@ -5293,27 +5081,14 @@ packages: resolution: {integrity: sha512-Uq6kdia8zGVHOb/0zAOb7FvKFMKeyeTZTLEwpO0JR3cIFEkpH6asv3ls9M9URDjHiYIdgAPmht5ecSbvPacfyg==} engines: {node: '>=12.0.0'} - q@1.5.1: - resolution: {integrity: sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw==} - engines: {node: '>=0.6.0', teleport: '>=0.2.0'} - deprecated: |- - You or someone you depend on is using Q, the JavaScript Promise library that gave JavaScript developers strong feelings about promises. They can almost certainly migrate to the native JavaScript promise now. Thank you literally everyone for joining me in this bet against the odds. Be excellent to each other. - - (For a CapTP with native promises, see @endo/eventual-send and @endo/captp) - qs@6.11.1: resolution: {integrity: sha512-0wsrzgTz/kAVIeuxSjnpGC56rzYtr6JT/2BwEvMaPhFIoYa1aGO8LbzuU1R0uUYQkLpWBTOj0l/CLAJB64J6nQ==} engines: {node: '>=0.6'} - qs@6.12.1: - resolution: {integrity: sha512-zWmv4RSuB9r2mYQw3zxQuHWeU+42aKi1wWig/j4ele4ygELZ7PEO6MM7rim9oAQH2A5MWfsAVf/jPvTPgCbvUQ==} + qs@6.12.2: + resolution: {integrity: sha512-x+NLUpx9SYrcwXtX7ob1gnkSems4i/mGZX5SlYxwIau6RrUSODO89TR/XDGGpn5RPWSYIB+aSfuSlV5+CmbTBg==} engines: {node: '>=0.6'} - querystring@0.2.0: - resolution: {integrity: sha512-X/xY82scca2tau62i9mDyU9K+I+djTMUsvwf7xnUX5GLvVzgJybOJf4Y6o9Zx3oJK/LSXg5tTZBjwzqVPaPO2g==} - engines: {node: '>=0.4.x'} - deprecated: The querystring API is considered Legacy. new code should use the URLSearchParams API instead. - queue-microtask@1.2.3: resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} @@ -5379,15 +5154,6 @@ packages: peerDependencies: react: '>=16.3.0' - react-intl@6.3.2: - resolution: {integrity: sha512-NT03zOHRAFGcZdTx4cXcVKZtnWBOM6RfLPK8Q67eA+Ba+pHdYb+cmrahncqAnevZKgO1r/nEauiVFKwQeudLIw==} - peerDependencies: - react: ^16.6.0 || 17 || 18 - typescript: ^4.7 - peerDependenciesMeta: - typescript: - optional: true - react-intl@6.4.1: resolution: {integrity: sha512-/aT5595AEMZ+Pjmt8W2R5/ZkYJmyyd6jTzHzqhJ1LnfeG36+N5huBtykxYhHqLc1BrIRQ1fTX1orYC0Ej5ojtg==} peerDependencies: @@ -5400,24 +5166,9 @@ packages: react-is@16.13.1: resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} - react-is@17.0.2: - resolution: {integrity: sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==} - react-is@18.3.1: resolution: {integrity: sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==} - react-query@3.24.3: - resolution: {integrity: sha512-JipKpn7XoDVvRWwXWXKSJU5SbNJKqspx9IRBntaQt1EQOBXe9314Z/8cV9YXXbZIhzrHAetT3X7tRClZaYk98g==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 - react-dom: '*' - react-native: '*' - peerDependenciesMeta: - react-dom: - optional: true - react-native: - optional: true - react-query@3.39.3: resolution: {integrity: sha512-nLfLz7GiohKTJDuT4us4X3h/8unOh+00MLb2yJoGTPjxKs2bc1iDhkNx2bd5MKklXnOD3NrVZ+J2UXujA5In4g==} peerDependencies: @@ -5430,27 +5181,6 @@ packages: react-native: optional: true - react-redux@8.0.5: - resolution: {integrity: sha512-Q2f6fCKxPFpkXt1qNRZdEDLlScsDWyrgSj0mliK59qU6W5gvBiKkdMEG2lJzhd1rCctf0hb6EtePPLZ2e0m1uw==} - peerDependencies: - '@types/react': ^16.8 || ^17.0 || ^18.0 - '@types/react-dom': ^16.8 || ^17.0 || ^18.0 - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 - react-native: '>=0.59' - redux: ^4 - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true - react-dom: - optional: true - react-native: - optional: true - redux: - optional: true - react-redux@8.1.1: resolution: {integrity: sha512-5W0QaKtEhj+3bC0Nj0NkqkhIv8gLADH/2kYFMTHxCVqQILiWzLv6MaLuV5wJU3BQEdHKzTfcvPN0WMS6SC1oyA==} peerDependencies: @@ -5496,8 +5226,8 @@ packages: '@types/react': optional: true - react-remove-scroll@2.5.5: - resolution: {integrity: sha512-ImKhrzJJsyXJfBZ4bzu8Bwpka14c/fQt0k+cyFp/PBhTfyDnU5hjOtM4AG/0AMyy8oKzOTR0lDgJIM7pYXI0kw==} + react-remove-scroll@2.5.7: + resolution: {integrity: sha512-FnrTWO4L7/Bhhf3CYBNArEG/yROV0tKmTv7/3h9QCFvH6sndeFf1wPqOcbFVu5VAulS5dV1wGT3GZZ/1GawqiA==} engines: {node: '>=10'} peerDependencies: '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 @@ -5522,11 +5252,6 @@ packages: react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-shallow-renderer@16.15.0: - resolution: {integrity: sha512-oScf2FqQ9LFVQgA73vr86xl2NaOIX73rh+YFqcOp68CWj56tSfgtGKrEbyhCj0rSijyG9M1CYprTh39fBi5hzA==} - peerDependencies: - react: ^16.0.0 || ^17.0.0 || ^18.0.0 - react-side-effect@2.1.2: resolution: {integrity: sha512-PVjOcvVOyIILrYoyGEpDN3vmYNLdy1CajSFNt4TDsVQC5KpTijDvWVoR+/7Rz2xT978D8/ZtFceXxzsPwZEDvw==} peerDependencies: @@ -5542,11 +5267,6 @@ packages: '@types/react': optional: true - react-test-renderer@18.3.1: - resolution: {integrity: sha512-KkAgygexHUkQqtvvx/otwxtuFu5cVjfzTCtjXLH9boS19/Nbtg84zS7wIQn39G8IlrhThBpQsMKkq5ZHZIYFXA==} - peerDependencies: - react: ^18.3.1 - react-transition-group@4.4.5: resolution: {integrity: sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g==} peerDependencies: @@ -5625,9 +5345,6 @@ packages: resolution: {integrity: sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==} engines: {node: '>= 0.10'} - remove-accents@0.4.2: - resolution: {integrity: sha512-7pXIJqJOq5tFgG1A2Zxti3Ht8jJF337m4sowbuHsW30ZnkQFnDzy9qBNhgzX8ZLW4+UBcXiiR7SwR6pokHsxiA==} - remove-accents@0.5.0: resolution: {integrity: sha512-8g3/Otx1eJaVD12e31UbJj1YzdtVvzH85HV7t+9MJYk/u3XmkOUJ5Ys9wQrf9PCPK8+xn4ymzqYCiZl6QWKn+A==} @@ -5773,9 +5490,6 @@ packages: sanitize-html@2.13.0: resolution: {integrity: sha512-Xff91Z+4Mz5QiNSLdLWwjgBDm5b1RU6xBT0+12rapjiaR7SwfRdjw8f+6Rir2MXKLrDicRFHdb51hGOAxmsUIA==} - sax@1.2.1: - resolution: {integrity: sha512-8I2a3LovHTOpm7NV5yOyO8IHqgVsfK4+UuySrXU8YXkSRX7k6hCV9b3HrkKCr3nMpgj+0bmocaJJWpvp1oc7ZA==} - scheduler@0.23.2: resolution: {integrity: sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==} @@ -5821,9 +5535,6 @@ packages: set-blocking@2.0.0: resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==} - set-cookie-parser@2.6.0: - resolution: {integrity: sha512-RVnVQxTXuerk653XfuliOxBP81Sf0+qfQE73LIYKcyMYHG94AuH0kgrQpRDuTZnSmjpysHmzxJXKNfa6PjFhyQ==} - set-function-length@1.2.2: resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==} engines: {node: '>= 0.4'} @@ -6034,12 +5745,6 @@ packages: streamx@2.18.0: resolution: {integrity: sha512-LLUC1TWdjVdn1weXGcSxyTR3T4+acB6tVGXT95y0nGbca4t4o/ng1wKAGTljm9VicuCVLvRlqFYXYy5GwgM7sQ==} - strict-event-emitter@0.2.8: - resolution: {integrity: sha512-KDf/ujU8Zud3YaLtMCcTI4xkZlZVIYxTLr+XIULexP+77EEVWixeXroLUXQXiVtH4XH2W7jr/3PT1v3zBuvc3A==} - - strict-event-emitter@0.4.6: - resolution: {integrity: sha512-12KWeb+wixJohmnwNFerbyiBrAlq5qJLwIt38etRtKtmmHyDSoGlIqFE9wx+4IwG0aDjI7GV8tc8ZccjWZZtTg==} - string-argv@0.3.2: resolution: {integrity: sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==} engines: {node: '>=0.6.19'} @@ -6152,10 +5857,6 @@ packages: resolution: {integrity: sha512-jdIBIN6LTIe2jqzay/2vtYLlBHa3JF42ot3h1dW8Q0PaAG4v8rm0cvpVePtau5C6OKXGGcgO9q2AMNSWxiLqKw==} engines: {node: '>=10'} - tar@6.2.1: - resolution: {integrity: sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==} - engines: {node: '>=10'} - tarn@3.0.2: resolution: {integrity: sha512-51LAVKUSZSVfI05vjPESNc5vwqqZpbXCsU+/+wxlOrUjk2SnFTt97v9ZgQrD4YmxYW1Px6w2KjaDitCfkvgxMQ==} engines: {node: '>=8.0.0'} @@ -6315,11 +6016,6 @@ packages: typedarray-to-buffer@3.1.5: resolution: {integrity: sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==} - typescript@4.9.5: - resolution: {integrity: sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==} - engines: {node: '>=4.2.0'} - hasBin: true - typescript@5.2.2: resolution: {integrity: sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==} engines: {node: '>=14.17'} @@ -6378,8 +6074,8 @@ packages: resolution: {integrity: sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==} engines: {node: '>=8'} - update-browserslist-db@1.0.16: - resolution: {integrity: sha512-KVbTxlBYlckhF5wgfyZXTWnMn7MMZjMu9XG8bPlliUOP9ThaF4QnhP8qrjrH7DRzHfSk0oQv1wToW+iA5GajEQ==} + update-browserslist-db@1.1.0: + resolution: {integrity: sha512-EdRAaAyk2cUE1wOf2DkEhzxqOQvFOoRJFNS6NeyJ01Gp2beMRpBAINjM2iDXE3KCuKhwnvHIQCJm6ThL2Z+HzQ==} hasBin: true peerDependencies: browserslist: '>= 4.21.0' @@ -6400,9 +6096,6 @@ packages: url-join@4.0.1: resolution: {integrity: sha512-jk1+QP6ZJqyOiuEI9AEWQfju/nB2Pw466kbA0LEZljHwKeMgd9WrAEgEGxjPDD2+TNbbb37rTyhEfrCXfuKXnA==} - url@0.10.3: - resolution: {integrity: sha512-hzSUW2q06EqL1gKM/a+obYHLIO6ct2hwPuviqTTOcfFVc61UbfJ2Q32+uGL/HCPxKqrdGB5QUwIe7UqlDgwsOQ==} - use-callback-ref@1.3.2: resolution: {integrity: sha512-elOQwe6Q8gqZgDA8mrh44qRTQqpIHDcZ3hXTLjBe1i4ph8XpNJnO+aQf3NaG+lriLopI4HMx9VjQLfPQ6vhnoA==} engines: {node: '>=10'} @@ -6449,9 +6142,6 @@ packages: util-deprecate@1.0.2: resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} - util@0.12.5: - resolution: {integrity: sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==} - utila@0.4.0: resolution: {integrity: sha512-Z0DbgELS9/L/75wZbro8xAnT50pBVFQZ+hUEueGDU5FN51YSCYM+jdxsfCiHjwNP/4LCDD0i/graKpeBnOXKRA==} @@ -6459,10 +6149,6 @@ packages: resolution: {integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==} engines: {node: '>= 0.4.0'} - uuid@8.0.0: - resolution: {integrity: sha512-jOXGuXZAWdsTH7eZLtyXMqUb9EcWMGZNbL9YcGBJl4MH4nrxHmZJhEHvyLFrkxo+28uLb/NYRcStH48fnD0Vzw==} - hasBin: true - uuid@8.3.2: resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} hasBin: true @@ -6523,9 +6209,6 @@ packages: wcwidth@1.0.1: resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==} - web-encoding@1.1.5: - resolution: {integrity: sha512-HYLeVCdJ0+lBYV2FvNZmv3HJ2Nt0QYXqZojk3d9FJOLkwnuhzM9tmamh8d7HPM8QqjKH8DeHkFTx+CFlWpZZDA==} - webidl-conversions@3.0.1: resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} @@ -6553,8 +6236,8 @@ packages: resolution: {integrity: sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==} engines: {node: '>=10.13.0'} - webpack@5.92.0: - resolution: {integrity: sha512-Bsw2X39MYIgxouNATyVpCNVWBCuUwDgWtN78g6lSdPJRLaQ/PUVm/oXcaRAyY/sMFoKFQrsPeqvTizWtq7QPCA==} + webpack@5.92.1: + resolution: {integrity: sha512-JECQ7IwJb+7fgUFBlrJzbyu3GEuNBcdqr1LD7IbSzwkSmIevTm8PF+wej3Oxuz/JFBUZ6O1o43zsPkwm1C4TmA==} engines: {node: '>=10.13.0'} hasBin: true peerDependencies: @@ -6566,10 +6249,6 @@ packages: whatwg-url@5.0.0: resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} - which-typed-array@1.1.15: - resolution: {integrity: sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==} - engines: {node: '>= 0.4'} - which@1.3.1: resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==} hasBin: true @@ -6597,10 +6276,6 @@ packages: wordwrap@1.0.0: resolution: {integrity: sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==} - wrap-ansi@6.2.0: - resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==} - engines: {node: '>=8'} - wrap-ansi@7.0.0: resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} engines: {node: '>=10'} @@ -6635,17 +6310,17 @@ packages: utf-8-validate: optional: true + xdg-app-paths@8.3.0: + resolution: {integrity: sha512-mgxlWVZw0TNWHoGmXq+NC3uhCIc55dDpAlDkMQUaIAcQzysb0kxctwv//fvuW61/nAAeUBJMQ8mnZjMmuYwOcQ==} + engines: {node: '>= 4.0'} + xdg-basedir@4.0.0: resolution: {integrity: sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q==} engines: {node: '>=8'} - xml2js@0.6.2: - resolution: {integrity: sha512-T4rieHaC1EXcES0Kxxj4JWgaUQHDk+qwHcYOCFHfiwKz7tOVPLq7Hjq9dM1WCMhylqMEfP7hMcOIChvotiZegA==} - engines: {node: '>=4.0.0'} - - xmlbuilder@11.0.1: - resolution: {integrity: sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==} - engines: {node: '>=4.0'} + xdg-portable@10.6.0: + resolution: {integrity: sha512-xrcqhWDvtZ7WLmt8G4f3hHy37iK7D2idtosRgkeiSPZEPmBShp0VfmRBLWAPC6zLF48APJ21yfea+RfQMF4/Aw==} + engines: {node: '>= 4.0'} xtend@4.0.2: resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} @@ -6693,10 +6368,6 @@ packages: resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} engines: {node: '>=10'} - yup@0.32.11: - resolution: {integrity: sha512-Z2Fe1bn+eLstG8DRR6FTavGD+MeAwyfmouhHsIUgaADz8jvFKbO/fXc2trJKZg+5EBjh4gGm3iU/t3onKlXHIg==} - engines: {node: '>=10'} - yup@0.32.9: resolution: {integrity: sha512-Ci1qN+i2H0XpY7syDQ0k5zKQ/DoxO0LzPg8PAR/X4Mpj6DqaeCoIYEEjDJwhArh3Fa7GWbQQVDZKeXYlSH4JMg==} engines: {node: '>=10'} @@ -6721,20 +6392,20 @@ snapshots: '@aws-crypto/crc32@5.2.0': dependencies: '@aws-crypto/util': 5.2.0 - '@aws-sdk/types': 3.598.0 + '@aws-sdk/types': 3.609.0 tslib: 2.6.3 '@aws-crypto/crc32c@5.2.0': dependencies: '@aws-crypto/util': 5.2.0 - '@aws-sdk/types': 3.598.0 + '@aws-sdk/types': 3.609.0 tslib: 2.6.3 '@aws-crypto/sha1-browser@5.2.0': dependencies: '@aws-crypto/supports-web-crypto': 5.2.0 '@aws-crypto/util': 5.2.0 - '@aws-sdk/types': 3.598.0 + '@aws-sdk/types': 3.609.0 '@aws-sdk/util-locate-window': 3.568.0 '@smithy/util-utf8': 2.3.0 tslib: 2.6.3 @@ -6744,7 +6415,7 @@ snapshots: '@aws-crypto/sha256-js': 5.2.0 '@aws-crypto/supports-web-crypto': 5.2.0 '@aws-crypto/util': 5.2.0 - '@aws-sdk/types': 3.598.0 + '@aws-sdk/types': 3.609.0 '@aws-sdk/util-locate-window': 3.568.0 '@smithy/util-utf8': 2.3.0 tslib: 2.6.3 @@ -6752,7 +6423,7 @@ snapshots: '@aws-crypto/sha256-js@5.2.0': dependencies: '@aws-crypto/util': 5.2.0 - '@aws-sdk/types': 3.598.0 + '@aws-sdk/types': 3.609.0 tslib: 2.6.3 '@aws-crypto/supports-web-crypto@5.2.0': @@ -6761,456 +6432,455 @@ snapshots: '@aws-crypto/util@5.2.0': dependencies: - '@aws-sdk/types': 3.598.0 + '@aws-sdk/types': 3.609.0 '@smithy/util-utf8': 2.3.0 tslib: 2.6.3 - '@aws-sdk/client-s3@3.600.0': + '@aws-sdk/client-s3@3.609.0': dependencies: '@aws-crypto/sha1-browser': 5.2.0 '@aws-crypto/sha256-browser': 5.2.0 '@aws-crypto/sha256-js': 5.2.0 - '@aws-sdk/client-sso-oidc': 3.600.0 - '@aws-sdk/client-sts': 3.600.0(@aws-sdk/client-sso-oidc@3.600.0) - '@aws-sdk/core': 3.598.0 - '@aws-sdk/credential-provider-node': 3.600.0(@aws-sdk/client-sso-oidc@3.600.0)(@aws-sdk/client-sts@3.600.0(@aws-sdk/client-sso-oidc@3.600.0)) - '@aws-sdk/middleware-bucket-endpoint': 3.598.0 - '@aws-sdk/middleware-expect-continue': 3.598.0 - '@aws-sdk/middleware-flexible-checksums': 3.598.0 - '@aws-sdk/middleware-host-header': 3.598.0 - '@aws-sdk/middleware-location-constraint': 3.598.0 - '@aws-sdk/middleware-logger': 3.598.0 - '@aws-sdk/middleware-recursion-detection': 3.598.0 - '@aws-sdk/middleware-sdk-s3': 3.598.0 - '@aws-sdk/middleware-signing': 3.598.0 - '@aws-sdk/middleware-ssec': 3.598.0 - '@aws-sdk/middleware-user-agent': 3.598.0 - '@aws-sdk/region-config-resolver': 3.598.0 - '@aws-sdk/signature-v4-multi-region': 3.598.0 - '@aws-sdk/types': 3.598.0 - '@aws-sdk/util-endpoints': 3.598.0 - '@aws-sdk/util-user-agent-browser': 3.598.0 - '@aws-sdk/util-user-agent-node': 3.598.0 - '@aws-sdk/xml-builder': 3.598.0 - '@smithy/config-resolver': 3.0.3 - '@smithy/core': 2.2.3 - '@smithy/eventstream-serde-browser': 3.0.3 - '@smithy/eventstream-serde-config-resolver': 3.0.2 - '@smithy/eventstream-serde-node': 3.0.3 - '@smithy/fetch-http-handler': 3.1.0 - '@smithy/hash-blob-browser': 3.1.1 - '@smithy/hash-node': 3.0.2 - '@smithy/hash-stream-node': 3.1.1 - '@smithy/invalid-dependency': 3.0.2 - '@smithy/md5-js': 3.0.2 - '@smithy/middleware-content-length': 3.0.2 - '@smithy/middleware-endpoint': 3.0.3 - '@smithy/middleware-retry': 3.0.6 - '@smithy/middleware-serde': 3.0.2 - '@smithy/middleware-stack': 3.0.2 - '@smithy/node-config-provider': 3.1.2 - '@smithy/node-http-handler': 3.1.0 - '@smithy/protocol-http': 4.0.2 - '@smithy/smithy-client': 3.1.4 - '@smithy/types': 3.2.0 - '@smithy/url-parser': 3.0.2 + '@aws-sdk/client-sso-oidc': 3.609.0(@aws-sdk/client-sts@3.609.0) + '@aws-sdk/client-sts': 3.609.0 + '@aws-sdk/core': 3.609.0 + '@aws-sdk/credential-provider-node': 3.609.0(@aws-sdk/client-sso-oidc@3.609.0(@aws-sdk/client-sts@3.609.0))(@aws-sdk/client-sts@3.609.0) + '@aws-sdk/middleware-bucket-endpoint': 3.609.0 + '@aws-sdk/middleware-expect-continue': 3.609.0 + '@aws-sdk/middleware-flexible-checksums': 3.609.0 + '@aws-sdk/middleware-host-header': 3.609.0 + '@aws-sdk/middleware-location-constraint': 3.609.0 + '@aws-sdk/middleware-logger': 3.609.0 + '@aws-sdk/middleware-recursion-detection': 3.609.0 + '@aws-sdk/middleware-sdk-s3': 3.609.0 + '@aws-sdk/middleware-signing': 3.609.0 + '@aws-sdk/middleware-ssec': 3.609.0 + '@aws-sdk/middleware-user-agent': 3.609.0 + '@aws-sdk/region-config-resolver': 3.609.0 + '@aws-sdk/signature-v4-multi-region': 3.609.0 + '@aws-sdk/types': 3.609.0 + '@aws-sdk/util-endpoints': 3.609.0 + '@aws-sdk/util-user-agent-browser': 3.609.0 + '@aws-sdk/util-user-agent-node': 3.609.0 + '@aws-sdk/xml-builder': 3.609.0 + '@smithy/config-resolver': 3.0.4 + '@smithy/core': 2.2.4 + '@smithy/eventstream-serde-browser': 3.0.4 + '@smithy/eventstream-serde-config-resolver': 3.0.3 + '@smithy/eventstream-serde-node': 3.0.4 + '@smithy/fetch-http-handler': 3.2.0 + '@smithy/hash-blob-browser': 3.1.2 + '@smithy/hash-node': 3.0.3 + '@smithy/hash-stream-node': 3.1.2 + '@smithy/invalid-dependency': 3.0.3 + '@smithy/md5-js': 3.0.3 + '@smithy/middleware-content-length': 3.0.3 + '@smithy/middleware-endpoint': 3.0.4 + '@smithy/middleware-retry': 3.0.7 + '@smithy/middleware-serde': 3.0.3 + '@smithy/middleware-stack': 3.0.3 + '@smithy/node-config-provider': 3.1.3 + '@smithy/node-http-handler': 3.1.1 + '@smithy/protocol-http': 4.0.3 + '@smithy/smithy-client': 3.1.5 + '@smithy/types': 3.3.0 + '@smithy/url-parser': 3.0.3 '@smithy/util-base64': 3.0.0 '@smithy/util-body-length-browser': 3.0.0 '@smithy/util-body-length-node': 3.0.0 - '@smithy/util-defaults-mode-browser': 3.0.6 - '@smithy/util-defaults-mode-node': 3.0.6 - '@smithy/util-endpoints': 2.0.3 - '@smithy/util-retry': 3.0.2 - '@smithy/util-stream': 3.0.4 + '@smithy/util-defaults-mode-browser': 3.0.7 + '@smithy/util-defaults-mode-node': 3.0.7 + '@smithy/util-endpoints': 2.0.4 + '@smithy/util-retry': 3.0.3 + '@smithy/util-stream': 3.0.5 '@smithy/util-utf8': 3.0.0 - '@smithy/util-waiter': 3.1.0 + '@smithy/util-waiter': 3.1.2 tslib: 2.6.3 transitivePeerDependencies: - aws-crt - '@aws-sdk/client-sso-oidc@3.600.0': + '@aws-sdk/client-sso-oidc@3.609.0(@aws-sdk/client-sts@3.609.0)': dependencies: '@aws-crypto/sha256-browser': 5.2.0 '@aws-crypto/sha256-js': 5.2.0 - '@aws-sdk/client-sts': 3.600.0(@aws-sdk/client-sso-oidc@3.600.0) - '@aws-sdk/core': 3.598.0 - '@aws-sdk/credential-provider-node': 3.600.0(@aws-sdk/client-sso-oidc@3.600.0)(@aws-sdk/client-sts@3.600.0(@aws-sdk/client-sso-oidc@3.600.0)) - '@aws-sdk/middleware-host-header': 3.598.0 - '@aws-sdk/middleware-logger': 3.598.0 - '@aws-sdk/middleware-recursion-detection': 3.598.0 - '@aws-sdk/middleware-user-agent': 3.598.0 - '@aws-sdk/region-config-resolver': 3.598.0 - '@aws-sdk/types': 3.598.0 - '@aws-sdk/util-endpoints': 3.598.0 - '@aws-sdk/util-user-agent-browser': 3.598.0 - '@aws-sdk/util-user-agent-node': 3.598.0 - '@smithy/config-resolver': 3.0.3 - '@smithy/core': 2.2.3 - '@smithy/fetch-http-handler': 3.1.0 - '@smithy/hash-node': 3.0.2 - '@smithy/invalid-dependency': 3.0.2 - '@smithy/middleware-content-length': 3.0.2 - '@smithy/middleware-endpoint': 3.0.3 - '@smithy/middleware-retry': 3.0.6 - '@smithy/middleware-serde': 3.0.2 - '@smithy/middleware-stack': 3.0.2 - '@smithy/node-config-provider': 3.1.2 - '@smithy/node-http-handler': 3.1.0 - '@smithy/protocol-http': 4.0.2 - '@smithy/smithy-client': 3.1.4 - '@smithy/types': 3.2.0 - '@smithy/url-parser': 3.0.2 + '@aws-sdk/client-sts': 3.609.0 + '@aws-sdk/core': 3.609.0 + '@aws-sdk/credential-provider-node': 3.609.0(@aws-sdk/client-sso-oidc@3.609.0(@aws-sdk/client-sts@3.609.0))(@aws-sdk/client-sts@3.609.0) + '@aws-sdk/middleware-host-header': 3.609.0 + '@aws-sdk/middleware-logger': 3.609.0 + '@aws-sdk/middleware-recursion-detection': 3.609.0 + '@aws-sdk/middleware-user-agent': 3.609.0 + '@aws-sdk/region-config-resolver': 3.609.0 + '@aws-sdk/types': 3.609.0 + '@aws-sdk/util-endpoints': 3.609.0 + '@aws-sdk/util-user-agent-browser': 3.609.0 + '@aws-sdk/util-user-agent-node': 3.609.0 + '@smithy/config-resolver': 3.0.4 + '@smithy/core': 2.2.4 + '@smithy/fetch-http-handler': 3.2.0 + '@smithy/hash-node': 3.0.3 + '@smithy/invalid-dependency': 3.0.3 + '@smithy/middleware-content-length': 3.0.3 + '@smithy/middleware-endpoint': 3.0.4 + '@smithy/middleware-retry': 3.0.7 + '@smithy/middleware-serde': 3.0.3 + '@smithy/middleware-stack': 3.0.3 + '@smithy/node-config-provider': 3.1.3 + '@smithy/node-http-handler': 3.1.1 + '@smithy/protocol-http': 4.0.3 + '@smithy/smithy-client': 3.1.5 + '@smithy/types': 3.3.0 + '@smithy/url-parser': 3.0.3 '@smithy/util-base64': 3.0.0 '@smithy/util-body-length-browser': 3.0.0 '@smithy/util-body-length-node': 3.0.0 - '@smithy/util-defaults-mode-browser': 3.0.6 - '@smithy/util-defaults-mode-node': 3.0.6 - '@smithy/util-endpoints': 2.0.3 - '@smithy/util-middleware': 3.0.2 - '@smithy/util-retry': 3.0.2 + '@smithy/util-defaults-mode-browser': 3.0.7 + '@smithy/util-defaults-mode-node': 3.0.7 + '@smithy/util-endpoints': 2.0.4 + '@smithy/util-middleware': 3.0.3 + '@smithy/util-retry': 3.0.3 '@smithy/util-utf8': 3.0.0 tslib: 2.6.3 transitivePeerDependencies: - aws-crt - '@aws-sdk/client-sso@3.598.0': + '@aws-sdk/client-sso@3.609.0': dependencies: '@aws-crypto/sha256-browser': 5.2.0 '@aws-crypto/sha256-js': 5.2.0 - '@aws-sdk/core': 3.598.0 - '@aws-sdk/middleware-host-header': 3.598.0 - '@aws-sdk/middleware-logger': 3.598.0 - '@aws-sdk/middleware-recursion-detection': 3.598.0 - '@aws-sdk/middleware-user-agent': 3.598.0 - '@aws-sdk/region-config-resolver': 3.598.0 - '@aws-sdk/types': 3.598.0 - '@aws-sdk/util-endpoints': 3.598.0 - '@aws-sdk/util-user-agent-browser': 3.598.0 - '@aws-sdk/util-user-agent-node': 3.598.0 - '@smithy/config-resolver': 3.0.3 - '@smithy/core': 2.2.3 - '@smithy/fetch-http-handler': 3.1.0 - '@smithy/hash-node': 3.0.2 - '@smithy/invalid-dependency': 3.0.2 - '@smithy/middleware-content-length': 3.0.2 - '@smithy/middleware-endpoint': 3.0.3 - '@smithy/middleware-retry': 3.0.6 - '@smithy/middleware-serde': 3.0.2 - '@smithy/middleware-stack': 3.0.2 - '@smithy/node-config-provider': 3.1.2 - '@smithy/node-http-handler': 3.1.0 - '@smithy/protocol-http': 4.0.2 - '@smithy/smithy-client': 3.1.4 - '@smithy/types': 3.2.0 - '@smithy/url-parser': 3.0.2 + '@aws-sdk/core': 3.609.0 + '@aws-sdk/middleware-host-header': 3.609.0 + '@aws-sdk/middleware-logger': 3.609.0 + '@aws-sdk/middleware-recursion-detection': 3.609.0 + '@aws-sdk/middleware-user-agent': 3.609.0 + '@aws-sdk/region-config-resolver': 3.609.0 + '@aws-sdk/types': 3.609.0 + '@aws-sdk/util-endpoints': 3.609.0 + '@aws-sdk/util-user-agent-browser': 3.609.0 + '@aws-sdk/util-user-agent-node': 3.609.0 + '@smithy/config-resolver': 3.0.4 + '@smithy/core': 2.2.4 + '@smithy/fetch-http-handler': 3.2.0 + '@smithy/hash-node': 3.0.3 + '@smithy/invalid-dependency': 3.0.3 + '@smithy/middleware-content-length': 3.0.3 + '@smithy/middleware-endpoint': 3.0.4 + '@smithy/middleware-retry': 3.0.7 + '@smithy/middleware-serde': 3.0.3 + '@smithy/middleware-stack': 3.0.3 + '@smithy/node-config-provider': 3.1.3 + '@smithy/node-http-handler': 3.1.1 + '@smithy/protocol-http': 4.0.3 + '@smithy/smithy-client': 3.1.5 + '@smithy/types': 3.3.0 + '@smithy/url-parser': 3.0.3 '@smithy/util-base64': 3.0.0 '@smithy/util-body-length-browser': 3.0.0 '@smithy/util-body-length-node': 3.0.0 - '@smithy/util-defaults-mode-browser': 3.0.6 - '@smithy/util-defaults-mode-node': 3.0.6 - '@smithy/util-endpoints': 2.0.3 - '@smithy/util-middleware': 3.0.2 - '@smithy/util-retry': 3.0.2 + '@smithy/util-defaults-mode-browser': 3.0.7 + '@smithy/util-defaults-mode-node': 3.0.7 + '@smithy/util-endpoints': 2.0.4 + '@smithy/util-middleware': 3.0.3 + '@smithy/util-retry': 3.0.3 '@smithy/util-utf8': 3.0.0 tslib: 2.6.3 transitivePeerDependencies: - aws-crt - '@aws-sdk/client-sts@3.600.0(@aws-sdk/client-sso-oidc@3.600.0)': + '@aws-sdk/client-sts@3.609.0': dependencies: '@aws-crypto/sha256-browser': 5.2.0 '@aws-crypto/sha256-js': 5.2.0 - '@aws-sdk/client-sso-oidc': 3.600.0 - '@aws-sdk/core': 3.598.0 - '@aws-sdk/credential-provider-node': 3.600.0(@aws-sdk/client-sso-oidc@3.600.0)(@aws-sdk/client-sts@3.600.0(@aws-sdk/client-sso-oidc@3.600.0)) - '@aws-sdk/middleware-host-header': 3.598.0 - '@aws-sdk/middleware-logger': 3.598.0 - '@aws-sdk/middleware-recursion-detection': 3.598.0 - '@aws-sdk/middleware-user-agent': 3.598.0 - '@aws-sdk/region-config-resolver': 3.598.0 - '@aws-sdk/types': 3.598.0 - '@aws-sdk/util-endpoints': 3.598.0 - '@aws-sdk/util-user-agent-browser': 3.598.0 - '@aws-sdk/util-user-agent-node': 3.598.0 - '@smithy/config-resolver': 3.0.3 - '@smithy/core': 2.2.3 - '@smithy/fetch-http-handler': 3.1.0 - '@smithy/hash-node': 3.0.2 - '@smithy/invalid-dependency': 3.0.2 - '@smithy/middleware-content-length': 3.0.2 - '@smithy/middleware-endpoint': 3.0.3 - '@smithy/middleware-retry': 3.0.6 - '@smithy/middleware-serde': 3.0.2 - '@smithy/middleware-stack': 3.0.2 - '@smithy/node-config-provider': 3.1.2 - '@smithy/node-http-handler': 3.1.0 - '@smithy/protocol-http': 4.0.2 - '@smithy/smithy-client': 3.1.4 - '@smithy/types': 3.2.0 - '@smithy/url-parser': 3.0.2 + '@aws-sdk/client-sso-oidc': 3.609.0(@aws-sdk/client-sts@3.609.0) + '@aws-sdk/core': 3.609.0 + '@aws-sdk/credential-provider-node': 3.609.0(@aws-sdk/client-sso-oidc@3.609.0(@aws-sdk/client-sts@3.609.0))(@aws-sdk/client-sts@3.609.0) + '@aws-sdk/middleware-host-header': 3.609.0 + '@aws-sdk/middleware-logger': 3.609.0 + '@aws-sdk/middleware-recursion-detection': 3.609.0 + '@aws-sdk/middleware-user-agent': 3.609.0 + '@aws-sdk/region-config-resolver': 3.609.0 + '@aws-sdk/types': 3.609.0 + '@aws-sdk/util-endpoints': 3.609.0 + '@aws-sdk/util-user-agent-browser': 3.609.0 + '@aws-sdk/util-user-agent-node': 3.609.0 + '@smithy/config-resolver': 3.0.4 + '@smithy/core': 2.2.4 + '@smithy/fetch-http-handler': 3.2.0 + '@smithy/hash-node': 3.0.3 + '@smithy/invalid-dependency': 3.0.3 + '@smithy/middleware-content-length': 3.0.3 + '@smithy/middleware-endpoint': 3.0.4 + '@smithy/middleware-retry': 3.0.7 + '@smithy/middleware-serde': 3.0.3 + '@smithy/middleware-stack': 3.0.3 + '@smithy/node-config-provider': 3.1.3 + '@smithy/node-http-handler': 3.1.1 + '@smithy/protocol-http': 4.0.3 + '@smithy/smithy-client': 3.1.5 + '@smithy/types': 3.3.0 + '@smithy/url-parser': 3.0.3 '@smithy/util-base64': 3.0.0 '@smithy/util-body-length-browser': 3.0.0 '@smithy/util-body-length-node': 3.0.0 - '@smithy/util-defaults-mode-browser': 3.0.6 - '@smithy/util-defaults-mode-node': 3.0.6 - '@smithy/util-endpoints': 2.0.3 - '@smithy/util-middleware': 3.0.2 - '@smithy/util-retry': 3.0.2 + '@smithy/util-defaults-mode-browser': 3.0.7 + '@smithy/util-defaults-mode-node': 3.0.7 + '@smithy/util-endpoints': 2.0.4 + '@smithy/util-middleware': 3.0.3 + '@smithy/util-retry': 3.0.3 '@smithy/util-utf8': 3.0.0 tslib: 2.6.3 transitivePeerDependencies: - - '@aws-sdk/client-sso-oidc' - aws-crt - '@aws-sdk/core@3.598.0': + '@aws-sdk/core@3.609.0': dependencies: - '@smithy/core': 2.2.3 - '@smithy/protocol-http': 4.0.2 - '@smithy/signature-v4': 3.1.1 - '@smithy/smithy-client': 3.1.4 - '@smithy/types': 3.2.0 + '@smithy/core': 2.2.4 + '@smithy/protocol-http': 4.0.3 + '@smithy/signature-v4': 3.1.2 + '@smithy/smithy-client': 3.1.5 + '@smithy/types': 3.3.0 fast-xml-parser: 4.2.5 tslib: 2.6.3 - '@aws-sdk/credential-provider-env@3.598.0': + '@aws-sdk/credential-provider-env@3.609.0': dependencies: - '@aws-sdk/types': 3.598.0 - '@smithy/property-provider': 3.1.2 - '@smithy/types': 3.2.0 + '@aws-sdk/types': 3.609.0 + '@smithy/property-provider': 3.1.3 + '@smithy/types': 3.3.0 tslib: 2.6.3 - '@aws-sdk/credential-provider-http@3.598.0': + '@aws-sdk/credential-provider-http@3.609.0': dependencies: - '@aws-sdk/types': 3.598.0 - '@smithy/fetch-http-handler': 3.1.0 - '@smithy/node-http-handler': 3.1.0 - '@smithy/property-provider': 3.1.2 - '@smithy/protocol-http': 4.0.2 - '@smithy/smithy-client': 3.1.4 - '@smithy/types': 3.2.0 - '@smithy/util-stream': 3.0.4 + '@aws-sdk/types': 3.609.0 + '@smithy/fetch-http-handler': 3.2.0 + '@smithy/node-http-handler': 3.1.1 + '@smithy/property-provider': 3.1.3 + '@smithy/protocol-http': 4.0.3 + '@smithy/smithy-client': 3.1.5 + '@smithy/types': 3.3.0 + '@smithy/util-stream': 3.0.5 tslib: 2.6.3 - '@aws-sdk/credential-provider-ini@3.598.0(@aws-sdk/client-sso-oidc@3.600.0)(@aws-sdk/client-sts@3.600.0(@aws-sdk/client-sso-oidc@3.600.0))': + '@aws-sdk/credential-provider-ini@3.609.0(@aws-sdk/client-sso-oidc@3.609.0(@aws-sdk/client-sts@3.609.0))(@aws-sdk/client-sts@3.609.0)': dependencies: - '@aws-sdk/client-sts': 3.600.0(@aws-sdk/client-sso-oidc@3.600.0) - '@aws-sdk/credential-provider-env': 3.598.0 - '@aws-sdk/credential-provider-http': 3.598.0 - '@aws-sdk/credential-provider-process': 3.598.0 - '@aws-sdk/credential-provider-sso': 3.598.0(@aws-sdk/client-sso-oidc@3.600.0) - '@aws-sdk/credential-provider-web-identity': 3.598.0(@aws-sdk/client-sts@3.600.0(@aws-sdk/client-sso-oidc@3.600.0)) - '@aws-sdk/types': 3.598.0 - '@smithy/credential-provider-imds': 3.1.2 - '@smithy/property-provider': 3.1.2 - '@smithy/shared-ini-file-loader': 3.1.2 - '@smithy/types': 3.2.0 + '@aws-sdk/client-sts': 3.609.0 + '@aws-sdk/credential-provider-env': 3.609.0 + '@aws-sdk/credential-provider-http': 3.609.0 + '@aws-sdk/credential-provider-process': 3.609.0 + '@aws-sdk/credential-provider-sso': 3.609.0(@aws-sdk/client-sso-oidc@3.609.0(@aws-sdk/client-sts@3.609.0)) + '@aws-sdk/credential-provider-web-identity': 3.609.0(@aws-sdk/client-sts@3.609.0) + '@aws-sdk/types': 3.609.0 + '@smithy/credential-provider-imds': 3.1.3 + '@smithy/property-provider': 3.1.3 + '@smithy/shared-ini-file-loader': 3.1.3 + '@smithy/types': 3.3.0 tslib: 2.6.3 transitivePeerDependencies: - '@aws-sdk/client-sso-oidc' - aws-crt - '@aws-sdk/credential-provider-node@3.600.0(@aws-sdk/client-sso-oidc@3.600.0)(@aws-sdk/client-sts@3.600.0(@aws-sdk/client-sso-oidc@3.600.0))': + '@aws-sdk/credential-provider-node@3.609.0(@aws-sdk/client-sso-oidc@3.609.0(@aws-sdk/client-sts@3.609.0))(@aws-sdk/client-sts@3.609.0)': dependencies: - '@aws-sdk/credential-provider-env': 3.598.0 - '@aws-sdk/credential-provider-http': 3.598.0 - '@aws-sdk/credential-provider-ini': 3.598.0(@aws-sdk/client-sso-oidc@3.600.0)(@aws-sdk/client-sts@3.600.0(@aws-sdk/client-sso-oidc@3.600.0)) - '@aws-sdk/credential-provider-process': 3.598.0 - '@aws-sdk/credential-provider-sso': 3.598.0(@aws-sdk/client-sso-oidc@3.600.0) - '@aws-sdk/credential-provider-web-identity': 3.598.0(@aws-sdk/client-sts@3.600.0(@aws-sdk/client-sso-oidc@3.600.0)) - '@aws-sdk/types': 3.598.0 - '@smithy/credential-provider-imds': 3.1.2 - '@smithy/property-provider': 3.1.2 - '@smithy/shared-ini-file-loader': 3.1.2 - '@smithy/types': 3.2.0 + '@aws-sdk/credential-provider-env': 3.609.0 + '@aws-sdk/credential-provider-http': 3.609.0 + '@aws-sdk/credential-provider-ini': 3.609.0(@aws-sdk/client-sso-oidc@3.609.0(@aws-sdk/client-sts@3.609.0))(@aws-sdk/client-sts@3.609.0) + '@aws-sdk/credential-provider-process': 3.609.0 + '@aws-sdk/credential-provider-sso': 3.609.0(@aws-sdk/client-sso-oidc@3.609.0(@aws-sdk/client-sts@3.609.0)) + '@aws-sdk/credential-provider-web-identity': 3.609.0(@aws-sdk/client-sts@3.609.0) + '@aws-sdk/types': 3.609.0 + '@smithy/credential-provider-imds': 3.1.3 + '@smithy/property-provider': 3.1.3 + '@smithy/shared-ini-file-loader': 3.1.3 + '@smithy/types': 3.3.0 tslib: 2.6.3 transitivePeerDependencies: - '@aws-sdk/client-sso-oidc' - '@aws-sdk/client-sts' - aws-crt - '@aws-sdk/credential-provider-process@3.598.0': + '@aws-sdk/credential-provider-process@3.609.0': dependencies: - '@aws-sdk/types': 3.598.0 - '@smithy/property-provider': 3.1.2 - '@smithy/shared-ini-file-loader': 3.1.2 - '@smithy/types': 3.2.0 + '@aws-sdk/types': 3.609.0 + '@smithy/property-provider': 3.1.3 + '@smithy/shared-ini-file-loader': 3.1.3 + '@smithy/types': 3.3.0 tslib: 2.6.3 - '@aws-sdk/credential-provider-sso@3.598.0(@aws-sdk/client-sso-oidc@3.600.0)': + '@aws-sdk/credential-provider-sso@3.609.0(@aws-sdk/client-sso-oidc@3.609.0(@aws-sdk/client-sts@3.609.0))': dependencies: - '@aws-sdk/client-sso': 3.598.0 - '@aws-sdk/token-providers': 3.598.0(@aws-sdk/client-sso-oidc@3.600.0) - '@aws-sdk/types': 3.598.0 - '@smithy/property-provider': 3.1.2 - '@smithy/shared-ini-file-loader': 3.1.2 - '@smithy/types': 3.2.0 + '@aws-sdk/client-sso': 3.609.0 + '@aws-sdk/token-providers': 3.609.0(@aws-sdk/client-sso-oidc@3.609.0(@aws-sdk/client-sts@3.609.0)) + '@aws-sdk/types': 3.609.0 + '@smithy/property-provider': 3.1.3 + '@smithy/shared-ini-file-loader': 3.1.3 + '@smithy/types': 3.3.0 tslib: 2.6.3 transitivePeerDependencies: - '@aws-sdk/client-sso-oidc' - aws-crt - '@aws-sdk/credential-provider-web-identity@3.598.0(@aws-sdk/client-sts@3.600.0(@aws-sdk/client-sso-oidc@3.600.0))': + '@aws-sdk/credential-provider-web-identity@3.609.0(@aws-sdk/client-sts@3.609.0)': dependencies: - '@aws-sdk/client-sts': 3.600.0(@aws-sdk/client-sso-oidc@3.600.0) - '@aws-sdk/types': 3.598.0 - '@smithy/property-provider': 3.1.2 - '@smithy/types': 3.2.0 + '@aws-sdk/client-sts': 3.609.0 + '@aws-sdk/types': 3.609.0 + '@smithy/property-provider': 3.1.3 + '@smithy/types': 3.3.0 tslib: 2.6.3 - '@aws-sdk/middleware-bucket-endpoint@3.598.0': + '@aws-sdk/middleware-bucket-endpoint@3.609.0': dependencies: - '@aws-sdk/types': 3.598.0 + '@aws-sdk/types': 3.609.0 '@aws-sdk/util-arn-parser': 3.568.0 - '@smithy/node-config-provider': 3.1.2 - '@smithy/protocol-http': 4.0.2 - '@smithy/types': 3.2.0 + '@smithy/node-config-provider': 3.1.3 + '@smithy/protocol-http': 4.0.3 + '@smithy/types': 3.3.0 '@smithy/util-config-provider': 3.0.0 tslib: 2.6.3 - '@aws-sdk/middleware-expect-continue@3.598.0': + '@aws-sdk/middleware-expect-continue@3.609.0': dependencies: - '@aws-sdk/types': 3.598.0 - '@smithy/protocol-http': 4.0.2 - '@smithy/types': 3.2.0 + '@aws-sdk/types': 3.609.0 + '@smithy/protocol-http': 4.0.3 + '@smithy/types': 3.3.0 tslib: 2.6.3 - '@aws-sdk/middleware-flexible-checksums@3.598.0': + '@aws-sdk/middleware-flexible-checksums@3.609.0': dependencies: '@aws-crypto/crc32': 5.2.0 '@aws-crypto/crc32c': 5.2.0 - '@aws-sdk/types': 3.598.0 + '@aws-sdk/types': 3.609.0 '@smithy/is-array-buffer': 3.0.0 - '@smithy/protocol-http': 4.0.2 - '@smithy/types': 3.2.0 + '@smithy/protocol-http': 4.0.3 + '@smithy/types': 3.3.0 '@smithy/util-utf8': 3.0.0 tslib: 2.6.3 - '@aws-sdk/middleware-host-header@3.598.0': + '@aws-sdk/middleware-host-header@3.609.0': dependencies: - '@aws-sdk/types': 3.598.0 - '@smithy/protocol-http': 4.0.2 - '@smithy/types': 3.2.0 + '@aws-sdk/types': 3.609.0 + '@smithy/protocol-http': 4.0.3 + '@smithy/types': 3.3.0 tslib: 2.6.3 - '@aws-sdk/middleware-location-constraint@3.598.0': + '@aws-sdk/middleware-location-constraint@3.609.0': dependencies: - '@aws-sdk/types': 3.598.0 - '@smithy/types': 3.2.0 + '@aws-sdk/types': 3.609.0 + '@smithy/types': 3.3.0 tslib: 2.6.3 - '@aws-sdk/middleware-logger@3.598.0': + '@aws-sdk/middleware-logger@3.609.0': dependencies: - '@aws-sdk/types': 3.598.0 - '@smithy/types': 3.2.0 + '@aws-sdk/types': 3.609.0 + '@smithy/types': 3.3.0 tslib: 2.6.3 - '@aws-sdk/middleware-recursion-detection@3.598.0': + '@aws-sdk/middleware-recursion-detection@3.609.0': dependencies: - '@aws-sdk/types': 3.598.0 - '@smithy/protocol-http': 4.0.2 - '@smithy/types': 3.2.0 + '@aws-sdk/types': 3.609.0 + '@smithy/protocol-http': 4.0.3 + '@smithy/types': 3.3.0 tslib: 2.6.3 - '@aws-sdk/middleware-sdk-s3@3.598.0': + '@aws-sdk/middleware-sdk-s3@3.609.0': dependencies: - '@aws-sdk/types': 3.598.0 + '@aws-sdk/types': 3.609.0 '@aws-sdk/util-arn-parser': 3.568.0 - '@smithy/node-config-provider': 3.1.2 - '@smithy/protocol-http': 4.0.2 - '@smithy/signature-v4': 3.1.1 - '@smithy/smithy-client': 3.1.4 - '@smithy/types': 3.2.0 + '@smithy/node-config-provider': 3.1.3 + '@smithy/protocol-http': 4.0.3 + '@smithy/signature-v4': 3.1.2 + '@smithy/smithy-client': 3.1.5 + '@smithy/types': 3.3.0 '@smithy/util-config-provider': 3.0.0 tslib: 2.6.3 - '@aws-sdk/middleware-signing@3.598.0': + '@aws-sdk/middleware-signing@3.609.0': dependencies: - '@aws-sdk/types': 3.598.0 - '@smithy/property-provider': 3.1.2 - '@smithy/protocol-http': 4.0.2 - '@smithy/signature-v4': 3.1.1 - '@smithy/types': 3.2.0 - '@smithy/util-middleware': 3.0.2 + '@aws-sdk/types': 3.609.0 + '@smithy/property-provider': 3.1.3 + '@smithy/protocol-http': 4.0.3 + '@smithy/signature-v4': 3.1.2 + '@smithy/types': 3.3.0 + '@smithy/util-middleware': 3.0.3 tslib: 2.6.3 - '@aws-sdk/middleware-ssec@3.598.0': + '@aws-sdk/middleware-ssec@3.609.0': dependencies: - '@aws-sdk/types': 3.598.0 - '@smithy/types': 3.2.0 + '@aws-sdk/types': 3.609.0 + '@smithy/types': 3.3.0 tslib: 2.6.3 - '@aws-sdk/middleware-user-agent@3.598.0': + '@aws-sdk/middleware-user-agent@3.609.0': dependencies: - '@aws-sdk/types': 3.598.0 - '@aws-sdk/util-endpoints': 3.598.0 - '@smithy/protocol-http': 4.0.2 - '@smithy/types': 3.2.0 + '@aws-sdk/types': 3.609.0 + '@aws-sdk/util-endpoints': 3.609.0 + '@smithy/protocol-http': 4.0.3 + '@smithy/types': 3.3.0 tslib: 2.6.3 - '@aws-sdk/region-config-resolver@3.598.0': + '@aws-sdk/region-config-resolver@3.609.0': dependencies: - '@aws-sdk/types': 3.598.0 - '@smithy/node-config-provider': 3.1.2 - '@smithy/types': 3.2.0 + '@aws-sdk/types': 3.609.0 + '@smithy/node-config-provider': 3.1.3 + '@smithy/types': 3.3.0 '@smithy/util-config-provider': 3.0.0 - '@smithy/util-middleware': 3.0.2 + '@smithy/util-middleware': 3.0.3 tslib: 2.6.3 - '@aws-sdk/signature-v4-multi-region@3.598.0': + '@aws-sdk/signature-v4-multi-region@3.609.0': dependencies: - '@aws-sdk/middleware-sdk-s3': 3.598.0 - '@aws-sdk/types': 3.598.0 - '@smithy/protocol-http': 4.0.2 - '@smithy/signature-v4': 3.1.1 - '@smithy/types': 3.2.0 + '@aws-sdk/middleware-sdk-s3': 3.609.0 + '@aws-sdk/types': 3.609.0 + '@smithy/protocol-http': 4.0.3 + '@smithy/signature-v4': 3.1.2 + '@smithy/types': 3.3.0 tslib: 2.6.3 - '@aws-sdk/token-providers@3.598.0(@aws-sdk/client-sso-oidc@3.600.0)': + '@aws-sdk/token-providers@3.609.0(@aws-sdk/client-sso-oidc@3.609.0(@aws-sdk/client-sts@3.609.0))': dependencies: - '@aws-sdk/client-sso-oidc': 3.600.0 - '@aws-sdk/types': 3.598.0 - '@smithy/property-provider': 3.1.2 - '@smithy/shared-ini-file-loader': 3.1.2 - '@smithy/types': 3.2.0 + '@aws-sdk/client-sso-oidc': 3.609.0(@aws-sdk/client-sts@3.609.0) + '@aws-sdk/types': 3.609.0 + '@smithy/property-provider': 3.1.3 + '@smithy/shared-ini-file-loader': 3.1.3 + '@smithy/types': 3.3.0 tslib: 2.6.3 - '@aws-sdk/types@3.598.0': + '@aws-sdk/types@3.609.0': dependencies: - '@smithy/types': 3.2.0 + '@smithy/types': 3.3.0 tslib: 2.6.3 '@aws-sdk/util-arn-parser@3.568.0': dependencies: tslib: 2.6.3 - '@aws-sdk/util-endpoints@3.598.0': + '@aws-sdk/util-endpoints@3.609.0': dependencies: - '@aws-sdk/types': 3.598.0 - '@smithy/types': 3.2.0 - '@smithy/util-endpoints': 2.0.3 + '@aws-sdk/types': 3.609.0 + '@smithy/types': 3.3.0 + '@smithy/util-endpoints': 2.0.4 tslib: 2.6.3 '@aws-sdk/util-locate-window@3.568.0': dependencies: tslib: 2.6.3 - '@aws-sdk/util-user-agent-browser@3.598.0': + '@aws-sdk/util-user-agent-browser@3.609.0': dependencies: - '@aws-sdk/types': 3.598.0 - '@smithy/types': 3.2.0 + '@aws-sdk/types': 3.609.0 + '@smithy/types': 3.3.0 bowser: 2.11.0 tslib: 2.6.3 - '@aws-sdk/util-user-agent-node@3.598.0': + '@aws-sdk/util-user-agent-node@3.609.0': dependencies: - '@aws-sdk/types': 3.598.0 - '@smithy/node-config-provider': 3.1.2 - '@smithy/types': 3.2.0 + '@aws-sdk/types': 3.609.0 + '@smithy/node-config-provider': 3.1.3 + '@smithy/types': 3.3.0 tslib: 2.6.3 - '@aws-sdk/xml-builder@3.598.0': + '@aws-sdk/xml-builder@3.609.0': dependencies: - '@smithy/types': 3.2.0 + '@smithy/types': 3.3.0 tslib: 2.6.3 '@babel/code-frame@7.24.7': @@ -7370,18 +7040,18 @@ snapshots: dependencies: '@ucast/mongo2js': 1.3.4 - '@codemirror/autocomplete@6.16.2(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.1)(@lezer/common@1.2.1)': + '@codemirror/autocomplete@6.16.3(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.3)(@lezer/common@1.2.1)': dependencies: '@codemirror/language': 6.10.2 '@codemirror/state': 6.4.1 - '@codemirror/view': 6.28.1 + '@codemirror/view': 6.28.3 '@lezer/common': 1.2.1 '@codemirror/commands@6.6.0': dependencies: '@codemirror/language': 6.10.2 '@codemirror/state': 6.4.1 - '@codemirror/view': 6.28.1 + '@codemirror/view': 6.28.3 '@lezer/common': 1.2.1 '@codemirror/lang-json@6.0.1': @@ -7392,22 +7062,22 @@ snapshots: '@codemirror/language@6.10.2': dependencies: '@codemirror/state': 6.4.1 - '@codemirror/view': 6.28.1 + '@codemirror/view': 6.28.3 '@lezer/common': 1.2.1 '@lezer/highlight': 1.2.0 '@lezer/lr': 1.4.1 style-mod: 4.1.2 - '@codemirror/lint@6.8.0': + '@codemirror/lint@6.8.1': dependencies: '@codemirror/state': 6.4.1 - '@codemirror/view': 6.28.1 + '@codemirror/view': 6.28.3 crelt: 1.0.6 '@codemirror/search@6.5.6': dependencies: '@codemirror/state': 6.4.1 - '@codemirror/view': 6.28.1 + '@codemirror/view': 6.28.3 crelt: 1.0.6 '@codemirror/state@6.4.1': {} @@ -7416,10 +7086,10 @@ snapshots: dependencies: '@codemirror/language': 6.10.2 '@codemirror/state': 6.4.1 - '@codemirror/view': 6.28.1 + '@codemirror/view': 6.28.3 '@lezer/highlight': 1.2.0 - '@codemirror/view@6.28.1': + '@codemirror/view@6.28.3': dependencies: '@codemirror/state': 6.4.1 style-mod: 4.1.2 @@ -7471,7 +7141,7 @@ snapshots: '@emotion/memoize@0.8.1': {} - '@emotion/react@11.11.4(react@18.3.1)': + '@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1)': dependencies: '@babel/runtime': 7.24.7 '@emotion/babel-plugin': 11.11.0 @@ -7482,6 +7152,8 @@ snapshots: '@emotion/weak-memoize': 0.3.1 hoist-non-react-statics: 3.3.2 react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.3 transitivePeerDependencies: - supports-color @@ -7644,52 +7316,22 @@ snapshots: '@esbuild/win32-x64@0.19.11': optional: true - '@esm2cjs/execa@6.1.1-cjs.1': + '@floating-ui/core@1.6.4': dependencies: - '@esm2cjs/human-signals': 3.0.1 - '@esm2cjs/is-stream': 3.0.0 - '@esm2cjs/npm-run-path': 5.1.1-cjs.0 - '@esm2cjs/onetime': 6.0.1-cjs.0 - '@esm2cjs/strip-final-newline': 3.0.1-cjs.0 - cross-spawn: 7.0.3 - get-stream: 6.0.1 - merge-stream: 2.0.0 - signal-exit: 3.0.7 + '@floating-ui/utils': 0.2.4 - '@esm2cjs/human-signals@3.0.1': {} - - '@esm2cjs/is-stream@3.0.0': {} - - '@esm2cjs/mimic-fn@4.0.0': {} - - '@esm2cjs/npm-run-path@5.1.1-cjs.0': + '@floating-ui/dom@1.6.7': dependencies: - '@esm2cjs/path-key': 4.0.0 + '@floating-ui/core': 1.6.4 + '@floating-ui/utils': 0.2.4 - '@esm2cjs/onetime@6.0.1-cjs.0': + '@floating-ui/react-dom@2.1.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@esm2cjs/mimic-fn': 4.0.0 - - '@esm2cjs/path-key@4.0.0': {} - - '@esm2cjs/strip-final-newline@3.0.1-cjs.0': {} - - '@floating-ui/core@1.6.2': - dependencies: - '@floating-ui/utils': 0.2.2 - - '@floating-ui/dom@1.6.5': - dependencies: - '@floating-ui/core': 1.6.2 - '@floating-ui/utils': 0.2.2 - - '@floating-ui/react-dom@2.1.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': - dependencies: - '@floating-ui/dom': 1.6.5 + '@floating-ui/dom': 1.6.7 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - '@floating-ui/utils@0.2.2': {} + '@floating-ui/utils@0.2.4': {} '@formatjs/ecma402-abstract@1.14.3': dependencies: @@ -7700,12 +7342,6 @@ snapshots: dependencies: tslib: 2.6.3 - '@formatjs/icu-messageformat-parser@2.3.0': - dependencies: - '@formatjs/ecma402-abstract': 1.14.3 - '@formatjs/icu-skeleton-parser': 1.3.18 - tslib: 2.6.3 - '@formatjs/icu-messageformat-parser@2.3.1': dependencies: '@formatjs/ecma402-abstract': 1.14.3 @@ -7717,24 +7353,12 @@ snapshots: '@formatjs/ecma402-abstract': 1.14.3 tslib: 2.6.3 - '@formatjs/intl-displaynames@6.2.6': - dependencies: - '@formatjs/ecma402-abstract': 1.14.3 - '@formatjs/intl-localematcher': 0.2.32 - tslib: 2.6.3 - '@formatjs/intl-displaynames@6.3.1': dependencies: '@formatjs/ecma402-abstract': 1.14.3 '@formatjs/intl-localematcher': 0.2.32 tslib: 2.6.3 - '@formatjs/intl-listformat@7.1.9': - dependencies: - '@formatjs/ecma402-abstract': 1.14.3 - '@formatjs/intl-localematcher': 0.2.32 - tslib: 2.6.3 - '@formatjs/intl-listformat@7.2.1': dependencies: '@formatjs/ecma402-abstract': 1.14.3 @@ -7745,30 +7369,6 @@ snapshots: dependencies: tslib: 2.6.3 - '@formatjs/intl@2.6.9(typescript@4.9.5)': - dependencies: - '@formatjs/ecma402-abstract': 1.14.3 - '@formatjs/fast-memoize': 2.0.1 - '@formatjs/icu-messageformat-parser': 2.3.0 - '@formatjs/intl-displaynames': 6.2.6 - '@formatjs/intl-listformat': 7.1.9 - intl-messageformat: 10.3.3 - tslib: 2.6.3 - optionalDependencies: - typescript: 4.9.5 - - '@formatjs/intl@2.7.1(typescript@4.9.5)': - dependencies: - '@formatjs/ecma402-abstract': 1.14.3 - '@formatjs/fast-memoize': 2.0.1 - '@formatjs/icu-messageformat-parser': 2.3.1 - '@formatjs/intl-displaynames': 6.3.1 - '@formatjs/intl-listformat': 7.2.1 - intl-messageformat: 10.3.4 - tslib: 2.6.3 - optionalDependencies: - typescript: 4.9.5 - '@formatjs/intl@2.7.1(typescript@5.2.2)': dependencies: '@formatjs/ecma402-abstract': 1.14.3 @@ -7855,32 +7455,14 @@ snapshots: npmlog: 5.0.1 rimraf: 3.0.2 semver: 7.6.2 - tar: 6.2.1 + tar: 6.1.13 transitivePeerDependencies: - encoding - supports-color - '@mswjs/cookies@0.2.2': - dependencies: - '@types/set-cookie-parser': 2.4.9 - set-cookie-parser: 2.6.0 - - '@mswjs/interceptors@0.17.10': - dependencies: - '@open-draft/until': 1.0.3 - '@types/debug': 4.1.12 - '@xmldom/xmldom': 0.8.10 - debug: 4.3.5(supports-color@5.5.0) - headers-polyfill: 3.2.5 - outvariant: 1.4.2 - strict-event-emitter: 0.2.8 - web-encoding: 1.1.5 - transitivePeerDependencies: - - supports-color - '@mux/mux-node@7.3.5': dependencies: - axios: 1.7.2 + axios: 1.6.0(debug@4.3.4) esdoc-ecmascript-proposal-plugin: 1.0.0 jsonwebtoken: 9.0.0 transitivePeerDependencies: @@ -7900,8 +7482,6 @@ snapshots: '@nodelib/fs.scandir': 2.1.5 fastq: 1.17.1 - '@open-draft/until@1.0.3': {} - '@paralleldrive/cuid2@2.2.2': dependencies: '@noble/hashes': 1.4.0 @@ -7915,7 +7495,7 @@ snapshots: picocolors: 1.0.1 tslib: 2.6.3 - '@pmmmwh/react-refresh-webpack-plugin@0.5.11(react-refresh@0.14.0)(type-fest@2.19.0)(webpack-hot-middleware@2.26.0)(webpack@5.92.0(esbuild@0.19.11))': + '@pmmmwh/react-refresh-webpack-plugin@0.5.11(react-refresh@0.14.0)(type-fest@2.19.0)(webpack-hot-middleware@2.26.0)(webpack@5.92.1(esbuild@0.19.11))': dependencies: ansi-html-community: 0.0.8 common-path-prefix: 3.0.0 @@ -7927,7 +7507,7 @@ snapshots: react-refresh: 0.14.0 schema-utils: 3.3.0 source-map: 0.7.4 - webpack: 5.92.0(esbuild@0.19.11) + webpack: 5.92.1(esbuild@0.19.11) optionalDependencies: type-fest: 2.19.0 webpack-hot-middleware: 2.26.0 @@ -7946,296 +7526,411 @@ snapshots: '@polka/url@1.0.0-next.25': {} - '@radix-ui/number@1.0.1': - dependencies: - '@babel/runtime': 7.24.7 + '@radix-ui/number@1.1.0': {} '@radix-ui/primitive@1.0.1': dependencies: '@babel/runtime': 7.24.7 - '@radix-ui/react-arrow@1.0.3(@types/react-dom@18.3.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@radix-ui/primitive@1.1.0': {} + + '@radix-ui/react-arrow@1.1.0(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@babel/runtime': 7.24.7 - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-primitive': 2.0.0(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) optionalDependencies: - '@types/react-dom': 18.3.0 + '@types/react': 18.3.3 - '@radix-ui/react-collection@1.0.3(@types/react-dom@18.3.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@radix-ui/react-collection@1.0.3(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: '@babel/runtime': 7.24.7 - '@radix-ui/react-compose-refs': 1.0.1(react@18.3.1) - '@radix-ui/react-context': 1.0.1(react@18.3.1) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-slot': 1.0.2(react@18.3.1) + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.3.3)(react@18.3.1) + '@radix-ui/react-context': 1.0.1(@types/react@18.3.3)(react@18.3.1) + '@radix-ui/react-primitive': 1.0.3(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-slot': 1.0.2(@types/react@18.3.3)(react@18.3.1) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) optionalDependencies: - '@types/react-dom': 18.3.0 + '@types/react': 18.3.3 - '@radix-ui/react-compose-refs@1.0.1(react@18.3.1)': + '@radix-ui/react-collection@1.1.0(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@babel/runtime': 7.24.7 - react: 18.3.1 - - '@radix-ui/react-context@1.0.1(react@18.3.1)': - dependencies: - '@babel/runtime': 7.24.7 - react: 18.3.1 - - '@radix-ui/react-direction@1.0.1(react@18.3.1)': - dependencies: - '@babel/runtime': 7.24.7 - react: 18.3.1 - - '@radix-ui/react-dismissable-layer@1.0.5(@types/react-dom@18.3.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': - dependencies: - '@babel/runtime': 7.24.7 - '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-compose-refs': 1.0.1(react@18.3.1) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-use-callback-ref': 1.0.1(react@18.3.1) - '@radix-ui/react-use-escape-keydown': 1.0.3(react@18.3.1) + '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.3)(react@18.3.1) + '@radix-ui/react-context': 1.1.0(@types/react@18.3.3)(react@18.3.1) + '@radix-ui/react-primitive': 2.0.0(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-slot': 1.1.0(@types/react@18.3.3)(react@18.3.1) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) optionalDependencies: - '@types/react-dom': 18.3.0 + '@types/react': 18.3.3 - '@radix-ui/react-dropdown-menu@2.0.6(@types/react-dom@18.3.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@radix-ui/react-compose-refs@1.0.1(@types/react@18.3.3)(react@18.3.1)': dependencies: '@babel/runtime': 7.24.7 - '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-compose-refs': 1.0.1(react@18.3.1) - '@radix-ui/react-context': 1.0.1(react@18.3.1) - '@radix-ui/react-id': 1.0.1(react@18.3.1) - '@radix-ui/react-menu': 2.0.6(@types/react-dom@18.3.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-use-controllable-state': 1.0.1(react@18.3.1) + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.3 + + '@radix-ui/react-compose-refs@1.1.0(@types/react@18.3.3)(react@18.3.1)': + dependencies: + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.3 + + '@radix-ui/react-context@1.0.1(@types/react@18.3.3)(react@18.3.1)': + dependencies: + '@babel/runtime': 7.24.7 + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.3 + + '@radix-ui/react-context@1.1.0(@types/react@18.3.3)(react@18.3.1)': + dependencies: + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.3 + + '@radix-ui/react-direction@1.0.1(@types/react@18.3.3)(react@18.3.1)': + dependencies: + '@babel/runtime': 7.24.7 + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.3 + + '@radix-ui/react-direction@1.1.0(@types/react@18.3.3)(react@18.3.1)': + dependencies: + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.3 + + '@radix-ui/react-dismissable-layer@1.1.0(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/primitive': 1.1.0 + '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.3)(react@18.3.1) + '@radix-ui/react-primitive': 2.0.0(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.3)(react@18.3.1) + '@radix-ui/react-use-escape-keydown': 1.1.0(@types/react@18.3.3)(react@18.3.1) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) optionalDependencies: - '@types/react-dom': 18.3.0 + '@types/react': 18.3.3 - '@radix-ui/react-focus-guards@1.0.1(react@18.3.1)': + '@radix-ui/react-dropdown-menu@2.1.1(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@babel/runtime': 7.24.7 - react: 18.3.1 - - '@radix-ui/react-focus-scope@1.0.4(@types/react-dom@18.3.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': - dependencies: - '@babel/runtime': 7.24.7 - '@radix-ui/react-compose-refs': 1.0.1(react@18.3.1) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-use-callback-ref': 1.0.1(react@18.3.1) + '@radix-ui/primitive': 1.1.0 + '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.3)(react@18.3.1) + '@radix-ui/react-context': 1.1.0(@types/react@18.3.3)(react@18.3.1) + '@radix-ui/react-id': 1.1.0(@types/react@18.3.3)(react@18.3.1) + '@radix-ui/react-menu': 2.1.1(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-primitive': 2.0.0(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.3.3)(react@18.3.1) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) optionalDependencies: - '@types/react-dom': 18.3.0 + '@types/react': 18.3.3 - '@radix-ui/react-id@1.0.1(react@18.3.1)': + '@radix-ui/react-focus-guards@1.0.1(@types/react@18.3.3)(react@18.3.1)': dependencies: '@babel/runtime': 7.24.7 - '@radix-ui/react-use-layout-effect': 1.0.1(react@18.3.1) react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.3 - '@radix-ui/react-menu@2.0.6(@types/react-dom@18.3.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@radix-ui/react-focus-guards@1.1.0(@types/react@18.3.3)(react@18.3.1)': + dependencies: + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.3 + + '@radix-ui/react-focus-scope@1.0.4(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: '@babel/runtime': 7.24.7 - '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-collection': 1.0.3(@types/react-dom@18.3.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-compose-refs': 1.0.1(react@18.3.1) - '@radix-ui/react-context': 1.0.1(react@18.3.1) - '@radix-ui/react-direction': 1.0.1(react@18.3.1) - '@radix-ui/react-dismissable-layer': 1.0.5(@types/react-dom@18.3.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-focus-guards': 1.0.1(react@18.3.1) - '@radix-ui/react-focus-scope': 1.0.4(@types/react-dom@18.3.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-id': 1.0.1(react@18.3.1) - '@radix-ui/react-popper': 1.1.3(@types/react-dom@18.3.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-portal': 1.0.4(@types/react-dom@18.3.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-presence': 1.0.1(@types/react-dom@18.3.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-roving-focus': 1.0.4(@types/react-dom@18.3.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-slot': 1.0.2(react@18.3.1) - '@radix-ui/react-use-callback-ref': 1.0.1(react@18.3.1) + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.3.3)(react@18.3.1) + '@radix-ui/react-primitive': 1.0.3(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.3.3)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.3 + + '@radix-ui/react-focus-scope@1.1.0(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.3)(react@18.3.1) + '@radix-ui/react-primitive': 2.0.0(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.3)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.3 + + '@radix-ui/react-id@1.0.1(@types/react@18.3.3)(react@18.3.1)': + dependencies: + '@babel/runtime': 7.24.7 + '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.3.3)(react@18.3.1) + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.3 + + '@radix-ui/react-id@1.1.0(@types/react@18.3.3)(react@18.3.1)': + dependencies: + '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.3.3)(react@18.3.1) + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.3 + + '@radix-ui/react-menu@2.1.1(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/primitive': 1.1.0 + '@radix-ui/react-collection': 1.1.0(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.3)(react@18.3.1) + '@radix-ui/react-context': 1.1.0(@types/react@18.3.3)(react@18.3.1) + '@radix-ui/react-direction': 1.1.0(@types/react@18.3.3)(react@18.3.1) + '@radix-ui/react-dismissable-layer': 1.1.0(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-focus-guards': 1.1.0(@types/react@18.3.3)(react@18.3.1) + '@radix-ui/react-focus-scope': 1.1.0(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-id': 1.1.0(@types/react@18.3.3)(react@18.3.1) + '@radix-ui/react-popper': 1.2.0(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-portal': 1.1.1(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-presence': 1.1.0(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-primitive': 2.0.0(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-roving-focus': 1.1.0(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-slot': 1.1.0(@types/react@18.3.3)(react@18.3.1) + '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.3)(react@18.3.1) aria-hidden: 1.2.4 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - react-remove-scroll: 2.5.5(react@18.3.1) + react-remove-scroll: 2.5.7(@types/react@18.3.3)(react@18.3.1) optionalDependencies: - '@types/react-dom': 18.3.0 + '@types/react': 18.3.3 - '@radix-ui/react-popper@1.1.3(@types/react-dom@18.3.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@radix-ui/react-popper@1.2.0(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@babel/runtime': 7.24.7 - '@floating-ui/react-dom': 2.1.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-arrow': 1.0.3(@types/react-dom@18.3.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-compose-refs': 1.0.1(react@18.3.1) - '@radix-ui/react-context': 1.0.1(react@18.3.1) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-use-callback-ref': 1.0.1(react@18.3.1) - '@radix-ui/react-use-layout-effect': 1.0.1(react@18.3.1) - '@radix-ui/react-use-rect': 1.0.1(react@18.3.1) - '@radix-ui/react-use-size': 1.0.1(react@18.3.1) - '@radix-ui/rect': 1.0.1 + '@floating-ui/react-dom': 2.1.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-arrow': 1.1.0(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.3)(react@18.3.1) + '@radix-ui/react-context': 1.1.0(@types/react@18.3.3)(react@18.3.1) + '@radix-ui/react-primitive': 2.0.0(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.3)(react@18.3.1) + '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.3.3)(react@18.3.1) + '@radix-ui/react-use-rect': 1.1.0(@types/react@18.3.3)(react@18.3.1) + '@radix-ui/react-use-size': 1.1.0(@types/react@18.3.3)(react@18.3.1) + '@radix-ui/rect': 1.1.0 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) optionalDependencies: - '@types/react-dom': 18.3.0 + '@types/react': 18.3.3 - '@radix-ui/react-portal@1.0.4(@types/react-dom@18.3.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@radix-ui/react-portal@1.1.1(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@babel/runtime': 7.24.7 - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-primitive': 2.0.0(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.3.3)(react@18.3.1) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) optionalDependencies: - '@types/react-dom': 18.3.0 + '@types/react': 18.3.3 - '@radix-ui/react-presence@1.0.1(@types/react-dom@18.3.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@radix-ui/react-presence@1.1.0(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@babel/runtime': 7.24.7 - '@radix-ui/react-compose-refs': 1.0.1(react@18.3.1) - '@radix-ui/react-use-layout-effect': 1.0.1(react@18.3.1) + '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.3)(react@18.3.1) + '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.3.3)(react@18.3.1) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) optionalDependencies: - '@types/react-dom': 18.3.0 + '@types/react': 18.3.3 - '@radix-ui/react-primitive@1.0.3(@types/react-dom@18.3.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@radix-ui/react-primitive@1.0.3(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: '@babel/runtime': 7.24.7 - '@radix-ui/react-slot': 1.0.2(react@18.3.1) + '@radix-ui/react-slot': 1.0.2(@types/react@18.3.3)(react@18.3.1) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) optionalDependencies: - '@types/react-dom': 18.3.0 + '@types/react': 18.3.3 - '@radix-ui/react-roving-focus@1.0.4(@types/react-dom@18.3.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@radix-ui/react-primitive@2.0.0(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/react-slot': 1.1.0(@types/react@18.3.3)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.3 + + '@radix-ui/react-roving-focus@1.0.4(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: '@babel/runtime': 7.24.7 '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-collection': 1.0.3(@types/react-dom@18.3.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-compose-refs': 1.0.1(react@18.3.1) - '@radix-ui/react-context': 1.0.1(react@18.3.1) - '@radix-ui/react-direction': 1.0.1(react@18.3.1) - '@radix-ui/react-id': 1.0.1(react@18.3.1) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-use-callback-ref': 1.0.1(react@18.3.1) - '@radix-ui/react-use-controllable-state': 1.0.1(react@18.3.1) + '@radix-ui/react-collection': 1.0.3(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.3.3)(react@18.3.1) + '@radix-ui/react-context': 1.0.1(@types/react@18.3.3)(react@18.3.1) + '@radix-ui/react-direction': 1.0.1(@types/react@18.3.3)(react@18.3.1) + '@radix-ui/react-id': 1.0.1(@types/react@18.3.3)(react@18.3.1) + '@radix-ui/react-primitive': 1.0.3(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.3.3)(react@18.3.1) + '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.3.3)(react@18.3.1) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) optionalDependencies: - '@types/react-dom': 18.3.0 + '@types/react': 18.3.3 - '@radix-ui/react-separator@1.0.3(@types/react-dom@18.3.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@radix-ui/react-roving-focus@1.1.0(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@babel/runtime': 7.24.7 - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/primitive': 1.1.0 + '@radix-ui/react-collection': 1.1.0(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.3)(react@18.3.1) + '@radix-ui/react-context': 1.1.0(@types/react@18.3.3)(react@18.3.1) + '@radix-ui/react-direction': 1.1.0(@types/react@18.3.3)(react@18.3.1) + '@radix-ui/react-id': 1.1.0(@types/react@18.3.3)(react@18.3.1) + '@radix-ui/react-primitive': 2.0.0(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.3)(react@18.3.1) + '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.3.3)(react@18.3.1) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) optionalDependencies: - '@types/react-dom': 18.3.0 + '@types/react': 18.3.3 - '@radix-ui/react-slot@1.0.2(react@18.3.1)': + '@radix-ui/react-separator@1.0.3(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: '@babel/runtime': 7.24.7 - '@radix-ui/react-compose-refs': 1.0.1(react@18.3.1) + '@radix-ui/react-primitive': 1.0.3(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.3 - '@radix-ui/react-toggle-group@1.0.4(@types/react-dom@18.3.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@radix-ui/react-slot@1.0.2(@types/react@18.3.3)(react@18.3.1)': + dependencies: + '@babel/runtime': 7.24.7 + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.3.3)(react@18.3.1) + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.3 + + '@radix-ui/react-slot@1.1.0(@types/react@18.3.3)(react@18.3.1)': + dependencies: + '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.3)(react@18.3.1) + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.3 + + '@radix-ui/react-toggle-group@1.0.4(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: '@babel/runtime': 7.24.7 '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-context': 1.0.1(react@18.3.1) - '@radix-ui/react-direction': 1.0.1(react@18.3.1) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-roving-focus': 1.0.4(@types/react-dom@18.3.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-toggle': 1.0.3(@types/react-dom@18.3.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-use-controllable-state': 1.0.1(react@18.3.1) + '@radix-ui/react-context': 1.0.1(@types/react@18.3.3)(react@18.3.1) + '@radix-ui/react-direction': 1.0.1(@types/react@18.3.3)(react@18.3.1) + '@radix-ui/react-primitive': 1.0.3(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-roving-focus': 1.0.4(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-toggle': 1.0.3(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.3.3)(react@18.3.1) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) optionalDependencies: - '@types/react-dom': 18.3.0 + '@types/react': 18.3.3 - '@radix-ui/react-toggle@1.0.3(@types/react-dom@18.3.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@radix-ui/react-toggle@1.0.3(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: '@babel/runtime': 7.24.7 '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-use-controllable-state': 1.0.1(react@18.3.1) + '@radix-ui/react-primitive': 1.0.3(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.3.3)(react@18.3.1) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) optionalDependencies: - '@types/react-dom': 18.3.0 + '@types/react': 18.3.3 - '@radix-ui/react-toolbar@1.0.4(@types/react-dom@18.3.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@radix-ui/react-toolbar@1.0.4(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: '@babel/runtime': 7.24.7 '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-context': 1.0.1(react@18.3.1) - '@radix-ui/react-direction': 1.0.1(react@18.3.1) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-roving-focus': 1.0.4(@types/react-dom@18.3.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-separator': 1.0.3(@types/react-dom@18.3.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-toggle-group': 1.0.4(@types/react-dom@18.3.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-context': 1.0.1(@types/react@18.3.3)(react@18.3.1) + '@radix-ui/react-direction': 1.0.1(@types/react@18.3.3)(react@18.3.1) + '@radix-ui/react-primitive': 1.0.3(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-roving-focus': 1.0.4(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-separator': 1.0.3(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-toggle-group': 1.0.4(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) optionalDependencies: - '@types/react-dom': 18.3.0 + '@types/react': 18.3.3 - '@radix-ui/react-use-callback-ref@1.0.1(react@18.3.1)': + '@radix-ui/react-use-callback-ref@1.0.1(@types/react@18.3.3)(react@18.3.1)': dependencies: '@babel/runtime': 7.24.7 react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.3 - '@radix-ui/react-use-controllable-state@1.0.1(react@18.3.1)': + '@radix-ui/react-use-callback-ref@1.1.0(@types/react@18.3.3)(react@18.3.1)': + dependencies: + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.3 + + '@radix-ui/react-use-controllable-state@1.0.1(@types/react@18.3.3)(react@18.3.1)': dependencies: '@babel/runtime': 7.24.7 - '@radix-ui/react-use-callback-ref': 1.0.1(react@18.3.1) + '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.3.3)(react@18.3.1) react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.3 - '@radix-ui/react-use-escape-keydown@1.0.3(react@18.3.1)': + '@radix-ui/react-use-controllable-state@1.1.0(@types/react@18.3.3)(react@18.3.1)': dependencies: - '@babel/runtime': 7.24.7 - '@radix-ui/react-use-callback-ref': 1.0.1(react@18.3.1) + '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.3)(react@18.3.1) react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.3 - '@radix-ui/react-use-layout-effect@1.0.1(react@18.3.1)': + '@radix-ui/react-use-escape-keydown@1.1.0(@types/react@18.3.3)(react@18.3.1)': + dependencies: + '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.3)(react@18.3.1) + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.3 + + '@radix-ui/react-use-layout-effect@1.0.1(@types/react@18.3.3)(react@18.3.1)': dependencies: '@babel/runtime': 7.24.7 react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.3 - '@radix-ui/react-use-previous@1.0.1(react@18.3.1)': + '@radix-ui/react-use-layout-effect@1.1.0(@types/react@18.3.3)(react@18.3.1)': dependencies: - '@babel/runtime': 7.24.7 react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.3 - '@radix-ui/react-use-rect@1.0.1(react@18.3.1)': + '@radix-ui/react-use-previous@1.1.0(@types/react@18.3.3)(react@18.3.1)': dependencies: - '@babel/runtime': 7.24.7 - '@radix-ui/rect': 1.0.1 react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.3 - '@radix-ui/react-use-size@1.0.1(react@18.3.1)': + '@radix-ui/react-use-rect@1.1.0(@types/react@18.3.3)(react@18.3.1)': dependencies: - '@babel/runtime': 7.24.7 - '@radix-ui/react-use-layout-effect': 1.0.1(react@18.3.1) + '@radix-ui/rect': 1.1.0 react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.3 - '@radix-ui/react-visually-hidden@1.0.3(@types/react-dom@18.3.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@radix-ui/react-use-size@1.1.0(@types/react@18.3.3)(react@18.3.1)': dependencies: - '@babel/runtime': 7.24.7 - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.3.3)(react@18.3.1) + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.3 + + '@radix-ui/react-visually-hidden@1.1.0(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/react-primitive': 2.0.0(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) optionalDependencies: - '@types/react-dom': 18.3.0 + '@types/react': 18.3.3 - '@radix-ui/rect@1.0.1': - dependencies: - '@babel/runtime': 7.24.7 + '@radix-ui/rect@1.1.0': {} '@react-dnd/asap@5.0.2': {} @@ -8243,7 +7938,7 @@ snapshots: '@react-dnd/shallowequal@4.0.2': {} - '@reduxjs/toolkit@1.9.7(react-redux@8.1.1(@types/react-dom@18.3.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(redux@4.2.1))(react@18.3.1)': + '@reduxjs/toolkit@1.9.7(react-redux@8.1.1(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(redux@4.2.1))(react@18.3.1)': dependencies: immer: 9.0.21 redux: 4.2.1 @@ -8251,7 +7946,7 @@ snapshots: reselect: 4.1.8 optionalDependencies: react: 18.3.1 - react-redux: 8.1.1(@types/react-dom@18.3.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(redux@4.2.1) + react-redux: 8.1.1(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(redux@4.2.1) '@rollup/rollup-android-arm-eabi@4.18.0': optional: true @@ -8301,7 +7996,7 @@ snapshots: '@rollup/rollup-win32-x64-msvc@4.18.0': optional: true - '@rushstack/node-core-library@5.4.1(@types/node@20.14.5)': + '@rushstack/node-core-library@5.4.1(@types/node@20.14.9)': dependencies: ajv: 8.13.0 ajv-draft-04: 1.0.0(ajv@8.13.0) @@ -8312,42 +8007,24 @@ snapshots: resolve: 1.22.8 semver: 7.5.4 optionalDependencies: - '@types/node': 20.14.5 + '@types/node': 20.14.9 - '@rushstack/terminal@0.13.0(@types/node@20.14.5)': + '@rushstack/terminal@0.13.0(@types/node@20.14.9)': dependencies: - '@rushstack/node-core-library': 5.4.1(@types/node@20.14.5) + '@rushstack/node-core-library': 5.4.1(@types/node@20.14.9) supports-color: 8.1.1 optionalDependencies: - '@types/node': 20.14.5 + '@types/node': 20.14.9 - '@rushstack/ts-command-line@4.22.0(@types/node@20.14.5)': + '@rushstack/ts-command-line@4.22.0(@types/node@20.14.9)': dependencies: - '@rushstack/terminal': 0.13.0(@types/node@20.14.5) + '@rushstack/terminal': 0.13.0(@types/node@20.14.9) '@types/argparse': 1.0.38 argparse: 1.0.10 string-argv: 0.3.2 transitivePeerDependencies: - '@types/node' - '@sendgrid/client@7.7.0': - dependencies: - '@sendgrid/helpers': 7.7.0 - axios: 0.26.1 - transitivePeerDependencies: - - debug - - '@sendgrid/helpers@7.7.0': - dependencies: - deepmerge: 4.3.1 - - '@sendgrid/mail@7.7.0': - dependencies: - '@sendgrid/client': 7.7.0 - '@sendgrid/helpers': 7.7.0 - transitivePeerDependencies: - - debug - '@sentry/core@6.19.7': dependencies: '@sentry/hub': 6.19.7 @@ -8402,9 +8079,9 @@ snapshots: escape-string-regexp: 2.0.0 lodash.deburr: 4.1.0 - '@smithy/abort-controller@3.1.0': + '@smithy/abort-controller@3.1.1': dependencies: - '@smithy/types': 3.2.0 + '@smithy/types': 3.3.0 tslib: 2.6.3 '@smithy/chunked-blob-reader-native@3.0.0': @@ -8416,94 +8093,94 @@ snapshots: dependencies: tslib: 2.6.3 - '@smithy/config-resolver@3.0.3': + '@smithy/config-resolver@3.0.4': dependencies: - '@smithy/node-config-provider': 3.1.2 - '@smithy/types': 3.2.0 + '@smithy/node-config-provider': 3.1.3 + '@smithy/types': 3.3.0 '@smithy/util-config-provider': 3.0.0 - '@smithy/util-middleware': 3.0.2 + '@smithy/util-middleware': 3.0.3 tslib: 2.6.3 - '@smithy/core@2.2.3': + '@smithy/core@2.2.4': dependencies: - '@smithy/middleware-endpoint': 3.0.3 - '@smithy/middleware-retry': 3.0.6 - '@smithy/middleware-serde': 3.0.2 - '@smithy/protocol-http': 4.0.2 - '@smithy/smithy-client': 3.1.4 - '@smithy/types': 3.2.0 - '@smithy/util-middleware': 3.0.2 + '@smithy/middleware-endpoint': 3.0.4 + '@smithy/middleware-retry': 3.0.7 + '@smithy/middleware-serde': 3.0.3 + '@smithy/protocol-http': 4.0.3 + '@smithy/smithy-client': 3.1.5 + '@smithy/types': 3.3.0 + '@smithy/util-middleware': 3.0.3 tslib: 2.6.3 - '@smithy/credential-provider-imds@3.1.2': + '@smithy/credential-provider-imds@3.1.3': dependencies: - '@smithy/node-config-provider': 3.1.2 - '@smithy/property-provider': 3.1.2 - '@smithy/types': 3.2.0 - '@smithy/url-parser': 3.0.2 + '@smithy/node-config-provider': 3.1.3 + '@smithy/property-provider': 3.1.3 + '@smithy/types': 3.3.0 + '@smithy/url-parser': 3.0.3 tslib: 2.6.3 - '@smithy/eventstream-codec@3.1.1': + '@smithy/eventstream-codec@3.1.2': dependencies: '@aws-crypto/crc32': 5.2.0 - '@smithy/types': 3.2.0 + '@smithy/types': 3.3.0 '@smithy/util-hex-encoding': 3.0.0 tslib: 2.6.3 - '@smithy/eventstream-serde-browser@3.0.3': + '@smithy/eventstream-serde-browser@3.0.4': dependencies: - '@smithy/eventstream-serde-universal': 3.0.3 - '@smithy/types': 3.2.0 + '@smithy/eventstream-serde-universal': 3.0.4 + '@smithy/types': 3.3.0 tslib: 2.6.3 - '@smithy/eventstream-serde-config-resolver@3.0.2': + '@smithy/eventstream-serde-config-resolver@3.0.3': dependencies: - '@smithy/types': 3.2.0 + '@smithy/types': 3.3.0 tslib: 2.6.3 - '@smithy/eventstream-serde-node@3.0.3': + '@smithy/eventstream-serde-node@3.0.4': dependencies: - '@smithy/eventstream-serde-universal': 3.0.3 - '@smithy/types': 3.2.0 + '@smithy/eventstream-serde-universal': 3.0.4 + '@smithy/types': 3.3.0 tslib: 2.6.3 - '@smithy/eventstream-serde-universal@3.0.3': + '@smithy/eventstream-serde-universal@3.0.4': dependencies: - '@smithy/eventstream-codec': 3.1.1 - '@smithy/types': 3.2.0 + '@smithy/eventstream-codec': 3.1.2 + '@smithy/types': 3.3.0 tslib: 2.6.3 - '@smithy/fetch-http-handler@3.1.0': + '@smithy/fetch-http-handler@3.2.0': dependencies: - '@smithy/protocol-http': 4.0.2 - '@smithy/querystring-builder': 3.0.2 - '@smithy/types': 3.2.0 + '@smithy/protocol-http': 4.0.3 + '@smithy/querystring-builder': 3.0.3 + '@smithy/types': 3.3.0 '@smithy/util-base64': 3.0.0 tslib: 2.6.3 - '@smithy/hash-blob-browser@3.1.1': + '@smithy/hash-blob-browser@3.1.2': dependencies: '@smithy/chunked-blob-reader': 3.0.0 '@smithy/chunked-blob-reader-native': 3.0.0 - '@smithy/types': 3.2.0 + '@smithy/types': 3.3.0 tslib: 2.6.3 - '@smithy/hash-node@3.0.2': + '@smithy/hash-node@3.0.3': dependencies: - '@smithy/types': 3.2.0 + '@smithy/types': 3.3.0 '@smithy/util-buffer-from': 3.0.0 '@smithy/util-utf8': 3.0.0 tslib: 2.6.3 - '@smithy/hash-stream-node@3.1.1': + '@smithy/hash-stream-node@3.1.2': dependencies: - '@smithy/types': 3.2.0 + '@smithy/types': 3.3.0 '@smithy/util-utf8': 3.0.0 tslib: 2.6.3 - '@smithy/invalid-dependency@3.0.2': + '@smithy/invalid-dependency@3.0.3': dependencies: - '@smithy/types': 3.2.0 + '@smithy/types': 3.3.0 tslib: 2.6.3 '@smithy/is-array-buffer@2.2.0': @@ -8514,122 +8191,122 @@ snapshots: dependencies: tslib: 2.6.3 - '@smithy/md5-js@3.0.2': + '@smithy/md5-js@3.0.3': dependencies: - '@smithy/types': 3.2.0 + '@smithy/types': 3.3.0 '@smithy/util-utf8': 3.0.0 tslib: 2.6.3 - '@smithy/middleware-content-length@3.0.2': + '@smithy/middleware-content-length@3.0.3': dependencies: - '@smithy/protocol-http': 4.0.2 - '@smithy/types': 3.2.0 + '@smithy/protocol-http': 4.0.3 + '@smithy/types': 3.3.0 tslib: 2.6.3 - '@smithy/middleware-endpoint@3.0.3': + '@smithy/middleware-endpoint@3.0.4': dependencies: - '@smithy/middleware-serde': 3.0.2 - '@smithy/node-config-provider': 3.1.2 - '@smithy/shared-ini-file-loader': 3.1.2 - '@smithy/types': 3.2.0 - '@smithy/url-parser': 3.0.2 - '@smithy/util-middleware': 3.0.2 + '@smithy/middleware-serde': 3.0.3 + '@smithy/node-config-provider': 3.1.3 + '@smithy/shared-ini-file-loader': 3.1.3 + '@smithy/types': 3.3.0 + '@smithy/url-parser': 3.0.3 + '@smithy/util-middleware': 3.0.3 tslib: 2.6.3 - '@smithy/middleware-retry@3.0.6': + '@smithy/middleware-retry@3.0.7': dependencies: - '@smithy/node-config-provider': 3.1.2 - '@smithy/protocol-http': 4.0.2 - '@smithy/service-error-classification': 3.0.2 - '@smithy/smithy-client': 3.1.4 - '@smithy/types': 3.2.0 - '@smithy/util-middleware': 3.0.2 - '@smithy/util-retry': 3.0.2 + '@smithy/node-config-provider': 3.1.3 + '@smithy/protocol-http': 4.0.3 + '@smithy/service-error-classification': 3.0.3 + '@smithy/smithy-client': 3.1.5 + '@smithy/types': 3.3.0 + '@smithy/util-middleware': 3.0.3 + '@smithy/util-retry': 3.0.3 tslib: 2.6.3 uuid: 9.0.1 - '@smithy/middleware-serde@3.0.2': + '@smithy/middleware-serde@3.0.3': dependencies: - '@smithy/types': 3.2.0 + '@smithy/types': 3.3.0 tslib: 2.6.3 - '@smithy/middleware-stack@3.0.2': + '@smithy/middleware-stack@3.0.3': dependencies: - '@smithy/types': 3.2.0 + '@smithy/types': 3.3.0 tslib: 2.6.3 - '@smithy/node-config-provider@3.1.2': + '@smithy/node-config-provider@3.1.3': dependencies: - '@smithy/property-provider': 3.1.2 - '@smithy/shared-ini-file-loader': 3.1.2 - '@smithy/types': 3.2.0 + '@smithy/property-provider': 3.1.3 + '@smithy/shared-ini-file-loader': 3.1.3 + '@smithy/types': 3.3.0 tslib: 2.6.3 - '@smithy/node-http-handler@3.1.0': + '@smithy/node-http-handler@3.1.1': dependencies: - '@smithy/abort-controller': 3.1.0 - '@smithy/protocol-http': 4.0.2 - '@smithy/querystring-builder': 3.0.2 - '@smithy/types': 3.2.0 + '@smithy/abort-controller': 3.1.1 + '@smithy/protocol-http': 4.0.3 + '@smithy/querystring-builder': 3.0.3 + '@smithy/types': 3.3.0 tslib: 2.6.3 - '@smithy/property-provider@3.1.2': + '@smithy/property-provider@3.1.3': dependencies: - '@smithy/types': 3.2.0 + '@smithy/types': 3.3.0 tslib: 2.6.3 - '@smithy/protocol-http@4.0.2': + '@smithy/protocol-http@4.0.3': dependencies: - '@smithy/types': 3.2.0 + '@smithy/types': 3.3.0 tslib: 2.6.3 - '@smithy/querystring-builder@3.0.2': + '@smithy/querystring-builder@3.0.3': dependencies: - '@smithy/types': 3.2.0 + '@smithy/types': 3.3.0 '@smithy/util-uri-escape': 3.0.0 tslib: 2.6.3 - '@smithy/querystring-parser@3.0.2': + '@smithy/querystring-parser@3.0.3': dependencies: - '@smithy/types': 3.2.0 + '@smithy/types': 3.3.0 tslib: 2.6.3 - '@smithy/service-error-classification@3.0.2': + '@smithy/service-error-classification@3.0.3': dependencies: - '@smithy/types': 3.2.0 + '@smithy/types': 3.3.0 - '@smithy/shared-ini-file-loader@3.1.2': + '@smithy/shared-ini-file-loader@3.1.3': dependencies: - '@smithy/types': 3.2.0 + '@smithy/types': 3.3.0 tslib: 2.6.3 - '@smithy/signature-v4@3.1.1': + '@smithy/signature-v4@3.1.2': dependencies: '@smithy/is-array-buffer': 3.0.0 - '@smithy/types': 3.2.0 + '@smithy/types': 3.3.0 '@smithy/util-hex-encoding': 3.0.0 - '@smithy/util-middleware': 3.0.2 + '@smithy/util-middleware': 3.0.3 '@smithy/util-uri-escape': 3.0.0 '@smithy/util-utf8': 3.0.0 tslib: 2.6.3 - '@smithy/smithy-client@3.1.4': + '@smithy/smithy-client@3.1.5': dependencies: - '@smithy/middleware-endpoint': 3.0.3 - '@smithy/middleware-stack': 3.0.2 - '@smithy/protocol-http': 4.0.2 - '@smithy/types': 3.2.0 - '@smithy/util-stream': 3.0.4 + '@smithy/middleware-endpoint': 3.0.4 + '@smithy/middleware-stack': 3.0.3 + '@smithy/protocol-http': 4.0.3 + '@smithy/types': 3.3.0 + '@smithy/util-stream': 3.0.5 tslib: 2.6.3 - '@smithy/types@3.2.0': + '@smithy/types@3.3.0': dependencies: tslib: 2.6.3 - '@smithy/url-parser@3.0.2': + '@smithy/url-parser@3.0.3': dependencies: - '@smithy/querystring-parser': 3.0.2 - '@smithy/types': 3.2.0 + '@smithy/querystring-parser': 3.0.3 + '@smithy/types': 3.3.0 tslib: 2.6.3 '@smithy/util-base64@3.0.0': @@ -8660,50 +8337,50 @@ snapshots: dependencies: tslib: 2.6.3 - '@smithy/util-defaults-mode-browser@3.0.6': + '@smithy/util-defaults-mode-browser@3.0.7': dependencies: - '@smithy/property-provider': 3.1.2 - '@smithy/smithy-client': 3.1.4 - '@smithy/types': 3.2.0 + '@smithy/property-provider': 3.1.3 + '@smithy/smithy-client': 3.1.5 + '@smithy/types': 3.3.0 bowser: 2.11.0 tslib: 2.6.3 - '@smithy/util-defaults-mode-node@3.0.6': + '@smithy/util-defaults-mode-node@3.0.7': dependencies: - '@smithy/config-resolver': 3.0.3 - '@smithy/credential-provider-imds': 3.1.2 - '@smithy/node-config-provider': 3.1.2 - '@smithy/property-provider': 3.1.2 - '@smithy/smithy-client': 3.1.4 - '@smithy/types': 3.2.0 + '@smithy/config-resolver': 3.0.4 + '@smithy/credential-provider-imds': 3.1.3 + '@smithy/node-config-provider': 3.1.3 + '@smithy/property-provider': 3.1.3 + '@smithy/smithy-client': 3.1.5 + '@smithy/types': 3.3.0 tslib: 2.6.3 - '@smithy/util-endpoints@2.0.3': + '@smithy/util-endpoints@2.0.4': dependencies: - '@smithy/node-config-provider': 3.1.2 - '@smithy/types': 3.2.0 + '@smithy/node-config-provider': 3.1.3 + '@smithy/types': 3.3.0 tslib: 2.6.3 '@smithy/util-hex-encoding@3.0.0': dependencies: tslib: 2.6.3 - '@smithy/util-middleware@3.0.2': + '@smithy/util-middleware@3.0.3': dependencies: - '@smithy/types': 3.2.0 + '@smithy/types': 3.3.0 tslib: 2.6.3 - '@smithy/util-retry@3.0.2': + '@smithy/util-retry@3.0.3': dependencies: - '@smithy/service-error-classification': 3.0.2 - '@smithy/types': 3.2.0 + '@smithy/service-error-classification': 3.0.3 + '@smithy/types': 3.3.0 tslib: 2.6.3 - '@smithy/util-stream@3.0.4': + '@smithy/util-stream@3.0.5': dependencies: - '@smithy/fetch-http-handler': 3.1.0 - '@smithy/node-http-handler': 3.1.0 - '@smithy/types': 3.2.0 + '@smithy/fetch-http-handler': 3.2.0 + '@smithy/node-http-handler': 3.1.1 + '@smithy/types': 3.3.0 '@smithy/util-base64': 3.0.0 '@smithy/util-buffer-from': 3.0.0 '@smithy/util-hex-encoding': 3.0.0 @@ -8724,30 +8401,30 @@ snapshots: '@smithy/util-buffer-from': 3.0.0 tslib: 2.6.3 - '@smithy/util-waiter@3.1.0': + '@smithy/util-waiter@3.1.2': dependencies: - '@smithy/abort-controller': 3.1.0 - '@smithy/types': 3.2.0 + '@smithy/abort-controller': 3.1.1 + '@smithy/types': 3.3.0 tslib: 2.6.3 - ? '@strapi/admin@4.24.5(@babel/runtime@7.24.7)(@codemirror/autocomplete@6.16.2(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.1)(@lezer/common@1.2.1))(@codemirror/language@6.10.2)(@codemirror/lint@6.8.0)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.28.1)(@strapi/data-transfer@4.24.5(@strapi/strapi@4.24.5(@babel/runtime@7.24.7)(@codemirror/autocomplete@6.16.2(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.1)(@lezer/common@1.2.1))(@codemirror/language@6.10.2)(@codemirror/lint@6.8.0)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.28.1)(@swc/helpers@0.5.11)(@types/hoist-non-react-statics@3.3.5)(@types/node@20.14.5)(@types/react-dom@18.3.0)(better-sqlite3@8.0.1)(codemirror@6.0.1(@lezer/common@1.2.1))(pg@8.12.0)(react-dom@18.3.1(react@18.3.1))(react-router-dom@5.3.4(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1))(terser@5.31.1)(type-fest@2.19.0))(@types/node@20.14.5)(better-sqlite3@8.0.1)(pg@8.12.0))(@strapi/strapi@4.24.5(@babel/runtime@7.24.7)(@codemirror/autocomplete@6.16.2(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.1)(@lezer/common@1.2.1))(@codemirror/language@6.10.2)(@codemirror/lint@6.8.0)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.28.1)(@swc/helpers@0.5.11)(@types/hoist-non-react-statics@3.3.5)(@types/node@20.14.5)(@types/react-dom@18.3.0)(better-sqlite3@8.0.1)(codemirror@6.0.1(@lezer/common@1.2.1))(pg@8.12.0)(react-dom@18.3.1(react@18.3.1))(react-router-dom@5.3.4(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1))(terser@5.31.1)(type-fest@2.19.0))(@swc/helpers@0.5.11)(@types/hoist-non-react-statics@3.3.5)(@types/node@20.14.5)(@types/react-dom@18.3.0)(better-sqlite3@8.0.1)(codemirror@6.0.1(@lezer/common@1.2.1))(debug@4.3.4)(pg@8.12.0)(react-dom@18.3.1(react@18.3.1))(react-router-dom@5.3.4(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1))(terser@5.31.1)(type-fest@2.19.0)' + ? '@strapi/admin@4.25.1(@babel/runtime@7.24.7)(@codemirror/autocomplete@6.16.3(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.3)(@lezer/common@1.2.1))(@codemirror/language@6.10.2)(@codemirror/lint@6.8.1)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.28.3)(@strapi/data-transfer@4.25.1(@strapi/strapi@4.25.1(@babel/runtime@7.24.7)(@codemirror/autocomplete@6.16.3(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.3)(@lezer/common@1.2.1))(@codemirror/language@6.10.2)(@codemirror/lint@6.8.1)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.28.3)(@swc/helpers@0.5.11)(@types/hoist-non-react-statics@3.3.5)(@types/node@20.14.9)(@types/react@18.3.3)(codemirror@5.65.16)(pg@8.8.0)(react-dom@18.3.1(react@18.3.1))(react-router-dom@5.3.4(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1))(terser@5.31.1)(type-fest@2.19.0))(@types/node@20.14.9)(pg@8.8.0))(@strapi/strapi@4.25.1(@babel/runtime@7.24.7)(@codemirror/autocomplete@6.16.3(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.3)(@lezer/common@1.2.1))(@codemirror/language@6.10.2)(@codemirror/lint@6.8.1)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.28.3)(@swc/helpers@0.5.11)(@types/hoist-non-react-statics@3.3.5)(@types/node@20.14.9)(@types/react@18.3.3)(codemirror@5.65.16)(pg@8.8.0)(react-dom@18.3.1(react@18.3.1))(react-router-dom@5.3.4(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1))(terser@5.31.1)(type-fest@2.19.0))(@swc/helpers@0.5.11)(@types/hoist-non-react-statics@3.3.5)(@types/node@20.14.9)(@types/react@18.3.3)(codemirror@5.65.16)(debug@4.3.4)(pg@8.8.0)(react-dom@18.3.1(react@18.3.1))(react-router-dom@5.3.4(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1))(terser@5.31.1)(type-fest@2.19.0)' : dependencies: '@casl/ability': 6.5.0 - '@pmmmwh/react-refresh-webpack-plugin': 0.5.11(react-refresh@0.14.0)(type-fest@2.19.0)(webpack-hot-middleware@2.26.0)(webpack@5.92.0(esbuild@0.19.11)) - '@radix-ui/react-context': 1.0.1(react@18.3.1) - '@radix-ui/react-toolbar': 1.0.4(@types/react-dom@18.3.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@reduxjs/toolkit': 1.9.7(react-redux@8.1.1(@types/react-dom@18.3.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(redux@4.2.1))(react@18.3.1) - '@strapi/data-transfer': 4.24.5(@strapi/strapi@4.24.5(@babel/runtime@7.24.7)(@codemirror/autocomplete@6.16.2(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.1)(@lezer/common@1.2.1))(@codemirror/language@6.10.2)(@codemirror/lint@6.8.0)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.28.1)(@swc/helpers@0.5.11)(@types/hoist-non-react-statics@3.3.5)(@types/node@20.14.5)(@types/react-dom@18.3.0)(better-sqlite3@8.0.1)(codemirror@6.0.1(@lezer/common@1.2.1))(pg@8.12.0)(react-dom@18.3.1(react@18.3.1))(react-router-dom@5.3.4(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1))(terser@5.31.1)(type-fest@2.19.0))(@types/node@20.14.5)(better-sqlite3@8.0.1)(pg@8.12.0) - '@strapi/design-system': 1.19.0(@babel/runtime@7.24.7)(@codemirror/autocomplete@6.16.2(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.1)(@lezer/common@1.2.1))(@codemirror/language@6.10.2)(@codemirror/lint@6.8.0)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.28.1)(@strapi/icons@1.19.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react-dom@18.3.0)(codemirror@6.0.1(@lezer/common@1.2.1))(react-dom@18.3.1(react@18.3.1))(react-router-dom@5.3.4(react@18.3.1))(react@18.3.1)(styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1)) - '@strapi/helper-plugin': 4.24.5(@strapi/design-system@1.19.0(@babel/runtime@7.24.7)(@codemirror/autocomplete@6.16.2(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.1)(@lezer/common@1.2.1))(@codemirror/language@6.10.2)(@codemirror/lint@6.8.0)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.28.1)(@strapi/icons@1.19.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react-dom@18.3.0)(codemirror@6.0.1(@lezer/common@1.2.1))(react-dom@18.3.1(react@18.3.1))(react-router-dom@5.3.4(react@18.3.1))(react@18.3.1)(styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1)))(@strapi/icons@1.19.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(debug@4.3.4)(react-dom@18.3.1(react@18.3.1))(react-router-dom@5.3.4(react@18.3.1))(react@18.3.1)(styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1))(typescript@5.2.2) + '@pmmmwh/react-refresh-webpack-plugin': 0.5.11(react-refresh@0.14.0)(type-fest@2.19.0)(webpack-hot-middleware@2.26.0)(webpack@5.92.1(esbuild@0.19.11)) + '@radix-ui/react-context': 1.0.1(@types/react@18.3.3)(react@18.3.1) + '@radix-ui/react-toolbar': 1.0.4(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@reduxjs/toolkit': 1.9.7(react-redux@8.1.1(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(redux@4.2.1))(react@18.3.1) + '@strapi/data-transfer': 4.25.1(@strapi/strapi@4.25.1(@babel/runtime@7.24.7)(@codemirror/autocomplete@6.16.3(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.3)(@lezer/common@1.2.1))(@codemirror/language@6.10.2)(@codemirror/lint@6.8.1)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.28.3)(@swc/helpers@0.5.11)(@types/hoist-non-react-statics@3.3.5)(@types/node@20.14.9)(@types/react@18.3.3)(codemirror@5.65.16)(pg@8.8.0)(react-dom@18.3.1(react@18.3.1))(react-router-dom@5.3.4(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1))(terser@5.31.1)(type-fest@2.19.0))(@types/node@20.14.9)(pg@8.8.0) + '@strapi/design-system': 1.19.0(@babel/runtime@7.24.7)(@codemirror/autocomplete@6.16.3(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.3)(@lezer/common@1.2.1))(@codemirror/language@6.10.2)(@codemirror/lint@6.8.1)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.28.3)(@strapi/icons@1.19.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react@18.3.3)(codemirror@5.65.16)(react-dom@18.3.1(react@18.3.1))(react-router-dom@5.3.4(react@18.3.1))(react@18.3.1)(styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1)) + '@strapi/helper-plugin': 4.25.1(@strapi/design-system@1.19.0(@babel/runtime@7.24.7)(@codemirror/autocomplete@6.16.3(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.3)(@lezer/common@1.2.1))(@codemirror/language@6.10.2)(@codemirror/lint@6.8.1)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.28.3)(@strapi/icons@1.19.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react@18.3.3)(codemirror@5.65.16)(react-dom@18.3.1(react@18.3.1))(react-router-dom@5.3.4(react@18.3.1))(react@18.3.1)(styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1)))(@strapi/icons@1.19.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react@18.3.3)(debug@4.3.4)(react-dom@18.3.1(react@18.3.1))(react-router-dom@5.3.4(react@18.3.1))(react@18.3.1)(styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1))(typescript@5.2.2) '@strapi/icons': 1.19.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@strapi/permissions': 4.24.5 - '@strapi/provider-audit-logs-local': 4.24.5 - '@strapi/strapi': 4.24.5(@babel/runtime@7.24.7)(@codemirror/autocomplete@6.16.2(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.1)(@lezer/common@1.2.1))(@codemirror/language@6.10.2)(@codemirror/lint@6.8.0)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.28.1)(@swc/helpers@0.5.11)(@types/hoist-non-react-statics@3.3.5)(@types/node@20.14.5)(@types/react-dom@18.3.0)(better-sqlite3@8.0.1)(codemirror@6.0.1(@lezer/common@1.2.1))(pg@8.12.0)(react-dom@18.3.1(react@18.3.1))(react-router-dom@5.3.4(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1))(terser@5.31.1)(type-fest@2.19.0) - '@strapi/types': 4.24.5(@types/node@20.14.5)(better-sqlite3@8.0.1)(pg@8.12.0) - '@strapi/typescript-utils': 4.24.5 - '@strapi/utils': 4.24.5 - '@vitejs/plugin-react-swc': 3.5.0(@swc/helpers@0.5.11)(vite@5.0.13(@types/node@20.14.5)(terser@5.31.1)) + '@strapi/permissions': 4.25.1 + '@strapi/provider-audit-logs-local': 4.25.1 + '@strapi/strapi': 4.25.1(@babel/runtime@7.24.7)(@codemirror/autocomplete@6.16.3(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.3)(@lezer/common@1.2.1))(@codemirror/language@6.10.2)(@codemirror/lint@6.8.1)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.28.3)(@swc/helpers@0.5.11)(@types/hoist-non-react-statics@3.3.5)(@types/node@20.14.9)(@types/react@18.3.3)(codemirror@5.65.16)(pg@8.8.0)(react-dom@18.3.1(react@18.3.1))(react-router-dom@5.3.4(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1))(terser@5.31.1)(type-fest@2.19.0) + '@strapi/types': 4.25.1(@types/node@20.14.9)(pg@8.8.0) + '@strapi/typescript-utils': 4.25.1 + '@strapi/utils': 4.25.1 + '@vitejs/plugin-react-swc': 3.5.0(@swc/helpers@0.5.11)(vite@5.0.13(@types/node@20.14.9)(terser@5.31.1)) axios: 1.6.0(debug@4.3.4) bcryptjs: 2.4.3 boxen: 5.1.2 @@ -8757,22 +8434,22 @@ snapshots: chokidar: 3.5.3 codemirror5: codemirror@5.65.16 cross-env: 7.0.3 - css-loader: 6.11.0(webpack@5.92.0(esbuild@0.19.11)) + css-loader: 6.11.0(webpack@5.92.1(esbuild@0.19.11)) date-fns: 2.30.0 dotenv: 14.2.0 esbuild: 0.19.11 - esbuild-loader: 2.21.0(webpack@5.92.0(esbuild@0.19.11)) + esbuild-loader: 2.21.0(webpack@5.92.1(esbuild@0.19.11)) esbuild-register: 3.5.0(esbuild@0.19.11) execa: 5.1.1 fast-deep-equal: 3.1.3 find-root: 1.1.0 - fork-ts-checker-webpack-plugin: 9.0.2(typescript@5.2.2)(webpack@5.92.0(esbuild@0.19.11)) + fork-ts-checker-webpack-plugin: 9.0.2(typescript@5.2.2)(webpack@5.92.1(esbuild@0.19.11)) formik: 2.4.0(react@18.3.1) fractional-indexing: 3.2.0 fs-extra: 10.0.0 highlight.js: 10.7.3 history: 4.10.1 - html-webpack-plugin: 5.6.0(webpack@5.92.0(esbuild@0.19.11)) + html-webpack-plugin: 5.6.0(webpack@5.92.1(esbuild@0.19.11)) immer: 9.0.19 inquirer: 8.2.5 invariant: 2.2.4 @@ -8795,7 +8472,7 @@ snapshots: markdown-it-mark: 3.0.1 markdown-it-sub: 1.0.0 markdown-it-sup: 1.0.0 - mini-css-extract-plugin: 2.7.7(webpack@5.92.0(esbuild@0.19.11)) + mini-css-extract-plugin: 2.7.7(webpack@5.92.1(esbuild@0.19.11)) node-schedule: 2.1.0 ora: 5.4.1 outdent: 0.8.0 @@ -8806,7 +8483,7 @@ snapshots: prop-types: 15.8.1 qs: 6.11.1 react: 18.3.1 - react-dnd: 16.0.1(@types/hoist-non-react-statics@3.3.5)(@types/node@20.14.5)(react@18.3.1) + react-dnd: 16.0.1(@types/hoist-non-react-statics@3.3.5)(@types/node@20.14.9)(@types/react@18.3.3)(react@18.3.1) react-dnd-html5-backend: 16.0.1 react-dom: 18.3.1(react@18.3.1) react-error-boundary: 3.1.4(react@18.3.1) @@ -8814,10 +8491,10 @@ snapshots: react-intl: 6.4.1(react@18.3.1)(typescript@5.2.2) react-is: 18.3.1 react-query: 3.39.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - react-redux: 8.1.1(@types/react-dom@18.3.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(redux@4.2.1) + react-redux: 8.1.1(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(redux@4.2.1) react-refresh: 0.14.0 react-router-dom: 5.3.4(react@18.3.1) - react-select: 5.7.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react-select: 5.7.0(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) react-window: 1.8.8(react-dom@18.3.1(react@18.3.1))(react@18.3.1) read-pkg-up: 7.0.1 resolve-from: 5.0.0 @@ -8828,13 +8505,13 @@ snapshots: slate: 0.94.1 slate-history: 0.93.0(slate@0.94.1) slate-react: 0.98.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.94.1) - style-loader: 3.3.4(webpack@5.92.0(esbuild@0.19.11)) + style-loader: 3.3.4(webpack@5.92.1(esbuild@0.19.11)) styled-components: 5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1) typescript: 5.2.2 - vite: 5.0.13(@types/node@20.14.5)(terser@5.31.1) - webpack: 5.92.0(esbuild@0.19.11) + vite: 5.0.13(@types/node@20.14.9)(terser@5.31.1) + webpack: 5.92.1(esbuild@0.19.11) webpack-bundle-analyzer: 4.10.2 - webpack-dev-middleware: 6.1.2(webpack@5.92.0(esbuild@0.19.11)) + webpack-dev-middleware: 6.1.2(webpack@5.92.1(esbuild@0.19.11)) webpack-hot-middleware: 2.26.0 yup: 0.32.9 transitivePeerDependencies: @@ -8885,16 +8562,41 @@ snapshots: - webpack-dev-server - webpack-plugin-serve - ? '@strapi/content-releases@4.24.5(@babel/runtime@7.24.7)(@codemirror/autocomplete@6.16.2(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.1)(@lezer/common@1.2.1))(@codemirror/language@6.10.2)(@codemirror/lint@6.8.0)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.28.1)(@strapi/admin@4.24.5(@babel/runtime@7.24.7)(@codemirror/autocomplete@6.16.2(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.1)(@lezer/common@1.2.1))(@codemirror/language@6.10.2)(@codemirror/lint@6.8.0)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.28.1)(@strapi/data-transfer@4.24.5(@strapi/strapi@4.24.5(@babel/runtime@7.24.7)(@codemirror/autocomplete@6.16.2(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.1)(@lezer/common@1.2.1))(@codemirror/language@6.10.2)(@codemirror/lint@6.8.0)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.28.1)(@swc/helpers@0.5.11)(@types/hoist-non-react-statics@3.3.5)(@types/node@20.14.5)(@types/react-dom@18.3.0)(better-sqlite3@8.0.1)(codemirror@6.0.1(@lezer/common@1.2.1))(pg@8.12.0)(react-dom@18.3.1(react@18.3.1))(react-router-dom@5.3.4(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1))(terser@5.31.1)(type-fest@2.19.0))(@types/node@20.14.5)(better-sqlite3@8.0.1)(pg@8.12.0))(@strapi/strapi@4.24.5(@babel/runtime@7.24.7)(@codemirror/autocomplete@6.16.2(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.1)(@lezer/common@1.2.1))(@codemirror/language@6.10.2)(@codemirror/lint@6.8.0)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.28.1)(@swc/helpers@0.5.11)(@types/hoist-non-react-statics@3.3.5)(@types/node@20.14.5)(@types/react-dom@18.3.0)(better-sqlite3@8.0.1)(codemirror@6.0.1(@lezer/common@1.2.1))(pg@8.12.0)(react-dom@18.3.1(react@18.3.1))(react-router-dom@5.3.4(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1))(terser@5.31.1)(type-fest@2.19.0))(@swc/helpers@0.5.11)(@types/hoist-non-react-statics@3.3.5)(@types/node@20.14.5)(@types/react-dom@18.3.0)(better-sqlite3@8.0.1)(codemirror@6.0.1(@lezer/common@1.2.1))(debug@4.3.4)(pg@8.12.0)(react-dom@18.3.1(react@18.3.1))(react-router-dom@5.3.4(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1))(terser@5.31.1)(type-fest@2.19.0))(@strapi/strapi@4.24.5(@babel/runtime@7.24.7)(@codemirror/autocomplete@6.16.2(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.1)(@lezer/common@1.2.1))(@codemirror/language@6.10.2)(@codemirror/lint@6.8.0)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.28.1)(@swc/helpers@0.5.11)(@types/hoist-non-react-statics@3.3.5)(@types/node@20.14.5)(@types/react-dom@18.3.0)(better-sqlite3@8.0.1)(codemirror@6.0.1(@lezer/common@1.2.1))(pg@8.12.0)(react-dom@18.3.1(react@18.3.1))(react-router-dom@5.3.4(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1))(terser@5.31.1)(type-fest@2.19.0))(@types/node@20.14.5)(@types/react-dom@18.3.0)(better-sqlite3@8.0.1)(codemirror@6.0.1(@lezer/common@1.2.1))(debug@4.3.4)(pg@8.12.0)(react-dom@18.3.1(react@18.3.1))(react-router-dom@5.3.4(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1))(typescript@5.2.2)' + '@strapi/cloud-cli@4.25.1(debug@4.3.4)': + dependencies: + '@strapi/utils': 4.25.1 + axios: 1.6.0(debug@4.3.4) + chalk: 4.1.2 + cli-progress: 3.12.0 + commander: 8.3.0 + eventsource: 2.0.2 + fast-safe-stringify: 2.1.1 + fs-extra: 10.0.0 + inquirer: 8.2.5 + jsonwebtoken: 9.0.0 + jwks-rsa: 3.1.0 + lodash: 4.17.21 + minimatch: 9.0.3 + open: 8.4.0 + ora: 5.4.1 + pkg-up: 3.1.0 + tar: 6.1.13 + xdg-app-paths: 8.3.0 + yup: 0.32.9 + transitivePeerDependencies: + - debug + - supports-color + + ? '@strapi/content-releases@4.25.1(@babel/runtime@7.24.7)(@codemirror/autocomplete@6.16.3(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.3)(@lezer/common@1.2.1))(@codemirror/language@6.10.2)(@codemirror/lint@6.8.1)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.28.3)(@strapi/admin@4.25.1(@babel/runtime@7.24.7)(@codemirror/autocomplete@6.16.3(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.3)(@lezer/common@1.2.1))(@codemirror/language@6.10.2)(@codemirror/lint@6.8.1)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.28.3)(@strapi/data-transfer@4.25.1(@strapi/strapi@4.25.1(@babel/runtime@7.24.7)(@codemirror/autocomplete@6.16.3(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.3)(@lezer/common@1.2.1))(@codemirror/language@6.10.2)(@codemirror/lint@6.8.1)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.28.3)(@swc/helpers@0.5.11)(@types/hoist-non-react-statics@3.3.5)(@types/node@20.14.9)(@types/react@18.3.3)(codemirror@5.65.16)(pg@8.8.0)(react-dom@18.3.1(react@18.3.1))(react-router-dom@5.3.4(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1))(terser@5.31.1)(type-fest@2.19.0))(@types/node@20.14.9)(pg@8.8.0))(@strapi/strapi@4.25.1(@babel/runtime@7.24.7)(@codemirror/autocomplete@6.16.3(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.3)(@lezer/common@1.2.1))(@codemirror/language@6.10.2)(@codemirror/lint@6.8.1)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.28.3)(@swc/helpers@0.5.11)(@types/hoist-non-react-statics@3.3.5)(@types/node@20.14.9)(@types/react@18.3.3)(codemirror@5.65.16)(pg@8.8.0)(react-dom@18.3.1(react@18.3.1))(react-router-dom@5.3.4(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1))(terser@5.31.1)(type-fest@2.19.0))(@swc/helpers@0.5.11)(@types/hoist-non-react-statics@3.3.5)(@types/node@20.14.9)(@types/react@18.3.3)(codemirror@5.65.16)(debug@4.3.4)(pg@8.8.0)(react-dom@18.3.1(react@18.3.1))(react-router-dom@5.3.4(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1))(terser@5.31.1)(type-fest@2.19.0))(@strapi/strapi@4.25.1(@babel/runtime@7.24.7)(@codemirror/autocomplete@6.16.3(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.3)(@lezer/common@1.2.1))(@codemirror/language@6.10.2)(@codemirror/lint@6.8.1)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.28.3)(@swc/helpers@0.5.11)(@types/hoist-non-react-statics@3.3.5)(@types/node@20.14.9)(@types/react@18.3.3)(codemirror@5.65.16)(pg@8.8.0)(react-dom@18.3.1(react@18.3.1))(react-router-dom@5.3.4(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1))(terser@5.31.1)(type-fest@2.19.0))(@types/node@20.14.9)(@types/react@18.3.3)(codemirror@5.65.16)(debug@4.3.4)(pg@8.8.0)(react-dom@18.3.1(react@18.3.1))(react-router-dom@5.3.4(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1))(typescript@5.2.2)' : dependencies: - '@reduxjs/toolkit': 1.9.7(react-redux@8.1.1(@types/react-dom@18.3.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(redux@4.2.1))(react@18.3.1) - '@strapi/admin': 4.24.5(@babel/runtime@7.24.7)(@codemirror/autocomplete@6.16.2(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.1)(@lezer/common@1.2.1))(@codemirror/language@6.10.2)(@codemirror/lint@6.8.0)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.28.1)(@strapi/data-transfer@4.24.5(@strapi/strapi@4.24.5(@babel/runtime@7.24.7)(@codemirror/autocomplete@6.16.2(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.1)(@lezer/common@1.2.1))(@codemirror/language@6.10.2)(@codemirror/lint@6.8.0)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.28.1)(@swc/helpers@0.5.11)(@types/hoist-non-react-statics@3.3.5)(@types/node@20.14.5)(@types/react-dom@18.3.0)(better-sqlite3@8.0.1)(codemirror@6.0.1(@lezer/common@1.2.1))(pg@8.12.0)(react-dom@18.3.1(react@18.3.1))(react-router-dom@5.3.4(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1))(terser@5.31.1)(type-fest@2.19.0))(@types/node@20.14.5)(better-sqlite3@8.0.1)(pg@8.12.0))(@strapi/strapi@4.24.5(@babel/runtime@7.24.7)(@codemirror/autocomplete@6.16.2(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.1)(@lezer/common@1.2.1))(@codemirror/language@6.10.2)(@codemirror/lint@6.8.0)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.28.1)(@swc/helpers@0.5.11)(@types/hoist-non-react-statics@3.3.5)(@types/node@20.14.5)(@types/react-dom@18.3.0)(better-sqlite3@8.0.1)(codemirror@6.0.1(@lezer/common@1.2.1))(pg@8.12.0)(react-dom@18.3.1(react@18.3.1))(react-router-dom@5.3.4(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1))(terser@5.31.1)(type-fest@2.19.0))(@swc/helpers@0.5.11)(@types/hoist-non-react-statics@3.3.5)(@types/node@20.14.5)(@types/react-dom@18.3.0)(better-sqlite3@8.0.1)(codemirror@6.0.1(@lezer/common@1.2.1))(debug@4.3.4)(pg@8.12.0)(react-dom@18.3.1(react@18.3.1))(react-router-dom@5.3.4(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1))(terser@5.31.1)(type-fest@2.19.0) - '@strapi/design-system': 1.19.0(@babel/runtime@7.24.7)(@codemirror/autocomplete@6.16.2(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.1)(@lezer/common@1.2.1))(@codemirror/language@6.10.2)(@codemirror/lint@6.8.0)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.28.1)(@strapi/icons@1.19.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react-dom@18.3.0)(codemirror@6.0.1(@lezer/common@1.2.1))(react-dom@18.3.1(react@18.3.1))(react-router-dom@5.3.4(react@18.3.1))(react@18.3.1)(styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1)) - '@strapi/helper-plugin': 4.24.5(@strapi/design-system@1.19.0(@babel/runtime@7.24.7)(@codemirror/autocomplete@6.16.2(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.1)(@lezer/common@1.2.1))(@codemirror/language@6.10.2)(@codemirror/lint@6.8.0)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.28.1)(@strapi/icons@1.19.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react-dom@18.3.0)(codemirror@6.0.1(@lezer/common@1.2.1))(react-dom@18.3.1(react@18.3.1))(react-router-dom@5.3.4(react@18.3.1))(react@18.3.1)(styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1)))(@strapi/icons@1.19.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(debug@4.3.4)(react-dom@18.3.1(react@18.3.1))(react-router-dom@5.3.4(react@18.3.1))(react@18.3.1)(styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1))(typescript@5.2.2) + '@reduxjs/toolkit': 1.9.7(react-redux@8.1.1(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(redux@4.2.1))(react@18.3.1) + '@strapi/admin': 4.25.1(@babel/runtime@7.24.7)(@codemirror/autocomplete@6.16.3(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.3)(@lezer/common@1.2.1))(@codemirror/language@6.10.2)(@codemirror/lint@6.8.1)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.28.3)(@strapi/data-transfer@4.25.1(@strapi/strapi@4.25.1(@babel/runtime@7.24.7)(@codemirror/autocomplete@6.16.3(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.3)(@lezer/common@1.2.1))(@codemirror/language@6.10.2)(@codemirror/lint@6.8.1)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.28.3)(@swc/helpers@0.5.11)(@types/hoist-non-react-statics@3.3.5)(@types/node@20.14.9)(@types/react@18.3.3)(codemirror@5.65.16)(pg@8.8.0)(react-dom@18.3.1(react@18.3.1))(react-router-dom@5.3.4(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1))(terser@5.31.1)(type-fest@2.19.0))(@types/node@20.14.9)(pg@8.8.0))(@strapi/strapi@4.25.1(@babel/runtime@7.24.7)(@codemirror/autocomplete@6.16.3(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.3)(@lezer/common@1.2.1))(@codemirror/language@6.10.2)(@codemirror/lint@6.8.1)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.28.3)(@swc/helpers@0.5.11)(@types/hoist-non-react-statics@3.3.5)(@types/node@20.14.9)(@types/react@18.3.3)(codemirror@5.65.16)(pg@8.8.0)(react-dom@18.3.1(react@18.3.1))(react-router-dom@5.3.4(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1))(terser@5.31.1)(type-fest@2.19.0))(@swc/helpers@0.5.11)(@types/hoist-non-react-statics@3.3.5)(@types/node@20.14.9)(@types/react@18.3.3)(codemirror@5.65.16)(debug@4.3.4)(pg@8.8.0)(react-dom@18.3.1(react@18.3.1))(react-router-dom@5.3.4(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1))(terser@5.31.1)(type-fest@2.19.0) + '@strapi/design-system': 1.19.0(@babel/runtime@7.24.7)(@codemirror/autocomplete@6.16.3(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.3)(@lezer/common@1.2.1))(@codemirror/language@6.10.2)(@codemirror/lint@6.8.1)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.28.3)(@strapi/icons@1.19.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react@18.3.3)(codemirror@5.65.16)(react-dom@18.3.1(react@18.3.1))(react-router-dom@5.3.4(react@18.3.1))(react@18.3.1)(styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1)) + '@strapi/helper-plugin': 4.25.1(@strapi/design-system@1.19.0(@babel/runtime@7.24.7)(@codemirror/autocomplete@6.16.3(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.3)(@lezer/common@1.2.1))(@codemirror/language@6.10.2)(@codemirror/lint@6.8.1)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.28.3)(@strapi/icons@1.19.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react@18.3.3)(codemirror@5.65.16)(react-dom@18.3.1(react@18.3.1))(react-router-dom@5.3.4(react@18.3.1))(react@18.3.1)(styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1)))(@strapi/icons@1.19.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react@18.3.3)(debug@4.3.4)(react-dom@18.3.1(react@18.3.1))(react-router-dom@5.3.4(react@18.3.1))(react@18.3.1)(styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1))(typescript@5.2.2) '@strapi/icons': 1.19.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@strapi/strapi': 4.24.5(@babel/runtime@7.24.7)(@codemirror/autocomplete@6.16.2(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.1)(@lezer/common@1.2.1))(@codemirror/language@6.10.2)(@codemirror/lint@6.8.0)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.28.1)(@swc/helpers@0.5.11)(@types/hoist-non-react-statics@3.3.5)(@types/node@20.14.5)(@types/react-dom@18.3.0)(better-sqlite3@8.0.1)(codemirror@6.0.1(@lezer/common@1.2.1))(pg@8.12.0)(react-dom@18.3.1(react@18.3.1))(react-router-dom@5.3.4(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1))(terser@5.31.1)(type-fest@2.19.0) - '@strapi/types': 4.24.5(@types/node@20.14.5)(better-sqlite3@8.0.1)(pg@8.12.0) - '@strapi/utils': 4.24.5 + '@strapi/strapi': 4.25.1(@babel/runtime@7.24.7)(@codemirror/autocomplete@6.16.3(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.3)(@lezer/common@1.2.1))(@codemirror/language@6.10.2)(@codemirror/lint@6.8.1)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.28.3)(@swc/helpers@0.5.11)(@types/hoist-non-react-statics@3.3.5)(@types/node@20.14.9)(@types/react@18.3.3)(codemirror@5.65.16)(pg@8.8.0)(react-dom@18.3.1(react@18.3.1))(react-router-dom@5.3.4(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1))(terser@5.31.1)(type-fest@2.19.0) + '@strapi/types': 4.25.1(@types/node@20.14.9)(pg@8.8.0) + '@strapi/utils': 4.25.1 axios: 1.6.0(debug@4.3.4) date-fns: 2.30.0 date-fns-tz: 2.0.0(date-fns@2.30.0) @@ -8904,7 +8606,7 @@ snapshots: react: 18.3.1 react-dom: 18.3.1(react@18.3.1) react-intl: 6.4.1(react@18.3.1)(typescript@5.2.2) - react-redux: 8.1.1(@types/react-dom@18.3.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(redux@4.2.1) + react-redux: 8.1.1(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(redux@4.2.1) react-router-dom: 5.3.4(react@18.3.1) styled-components: 5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1) yup: 0.32.9 @@ -8935,12 +8637,12 @@ snapshots: - tedious - typescript - '@strapi/data-transfer@4.24.5(@strapi/strapi@4.24.5(@babel/runtime@7.24.7)(@codemirror/autocomplete@6.16.2(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.1)(@lezer/common@1.2.1))(@codemirror/language@6.10.2)(@codemirror/lint@6.8.0)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.28.1)(@swc/helpers@0.5.11)(@types/hoist-non-react-statics@3.3.5)(@types/node@20.14.5)(@types/react-dom@18.3.0)(better-sqlite3@8.0.1)(codemirror@6.0.1(@lezer/common@1.2.1))(pg@8.12.0)(react-dom@18.3.1(react@18.3.1))(react-router-dom@5.3.4(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1))(terser@5.31.1)(type-fest@2.19.0))(@types/node@20.14.5)(better-sqlite3@8.0.1)(pg@8.12.0)': + '@strapi/data-transfer@4.25.1(@strapi/strapi@4.25.1(@babel/runtime@7.24.7)(@codemirror/autocomplete@6.16.3(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.3)(@lezer/common@1.2.1))(@codemirror/language@6.10.2)(@codemirror/lint@6.8.1)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.28.3)(@swc/helpers@0.5.11)(@types/hoist-non-react-statics@3.3.5)(@types/node@20.14.9)(@types/react@18.3.3)(codemirror@5.65.16)(pg@8.8.0)(react-dom@18.3.1(react@18.3.1))(react-router-dom@5.3.4(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1))(terser@5.31.1)(type-fest@2.19.0))(@types/node@20.14.9)(pg@8.8.0)': dependencies: - '@strapi/logger': 4.24.5 - '@strapi/strapi': 4.24.5(@babel/runtime@7.24.7)(@codemirror/autocomplete@6.16.2(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.1)(@lezer/common@1.2.1))(@codemirror/language@6.10.2)(@codemirror/lint@6.8.0)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.28.1)(@swc/helpers@0.5.11)(@types/hoist-non-react-statics@3.3.5)(@types/node@20.14.5)(@types/react-dom@18.3.0)(better-sqlite3@8.0.1)(codemirror@6.0.1(@lezer/common@1.2.1))(pg@8.12.0)(react-dom@18.3.1(react@18.3.1))(react-router-dom@5.3.4(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1))(terser@5.31.1)(type-fest@2.19.0) - '@strapi/types': 4.24.5(@types/node@20.14.5)(better-sqlite3@8.0.1)(pg@8.12.0) - '@strapi/utils': 4.24.5 + '@strapi/logger': 4.25.1 + '@strapi/strapi': 4.25.1(@babel/runtime@7.24.7)(@codemirror/autocomplete@6.16.3(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.3)(@lezer/common@1.2.1))(@codemirror/language@6.10.2)(@codemirror/lint@6.8.1)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.28.3)(@swc/helpers@0.5.11)(@types/hoist-non-react-statics@3.3.5)(@types/node@20.14.9)(@types/react@18.3.3)(codemirror@5.65.16)(pg@8.8.0)(react-dom@18.3.1(react@18.3.1))(react-router-dom@5.3.4(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1))(terser@5.31.1)(type-fest@2.19.0) + '@strapi/types': 4.25.1(@types/node@20.14.9)(pg@8.8.0) + '@strapi/utils': 4.25.1 chalk: 4.1.2 cli-table3: 0.6.2 commander: 8.3.0 @@ -8969,16 +8671,16 @@ snapshots: - tedious - utf-8-validate - '@strapi/database@4.24.5(@types/node@20.14.5)(better-sqlite3@8.0.1)(pg@8.12.0)': + '@strapi/database@4.25.1(@types/node@20.14.9)(pg@8.8.0)': dependencies: - '@strapi/utils': 4.24.5 + '@strapi/utils': 4.25.1 date-fns: 2.30.0 debug: 4.3.4(supports-color@5.5.0) fs-extra: 10.0.0 - knex: 2.5.0(better-sqlite3@8.0.1)(pg@8.12.0) + knex: 2.5.0(pg@8.8.0) lodash: 4.17.21 semver: 7.5.4 - umzug: 3.2.1(@types/node@20.14.5) + umzug: 3.2.1(@types/node@20.14.9) transitivePeerDependencies: - '@types/node' - better-sqlite3 @@ -8990,24 +8692,24 @@ snapshots: - supports-color - tedious - '@strapi/design-system@1.19.0(@babel/runtime@7.24.7)(@codemirror/autocomplete@6.16.2(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.1)(@lezer/common@1.2.1))(@codemirror/language@6.10.2)(@codemirror/lint@6.8.0)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.28.1)(@strapi/icons@1.19.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react-dom@18.3.0)(codemirror@6.0.1(@lezer/common@1.2.1))(react-dom@18.3.1(react@18.3.1))(react-router-dom@5.3.4(react@18.3.1))(react@18.3.1)(styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1))': + '@strapi/design-system@1.19.0(@babel/runtime@7.24.7)(@codemirror/autocomplete@6.16.3(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.3)(@lezer/common@1.2.1))(@codemirror/language@6.10.2)(@codemirror/lint@6.8.1)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.28.3)(@strapi/icons@1.19.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react@18.3.3)(codemirror@5.65.16)(react-dom@18.3.1(react@18.3.1))(react-router-dom@5.3.4(react@18.3.1))(react@18.3.1)(styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1))': dependencies: '@codemirror/lang-json': 6.0.1 - '@floating-ui/react-dom': 2.1.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@floating-ui/react-dom': 2.1.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@internationalized/date': 3.5.4 '@internationalized/number': 3.5.3 - '@radix-ui/react-dismissable-layer': 1.0.5(@types/react-dom@18.3.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-dropdown-menu': 2.0.6(@types/react-dom@18.3.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-focus-scope': 1.0.4(@types/react-dom@18.3.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-dismissable-layer': 1.1.0(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-dropdown-menu': 2.1.1(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-focus-scope': 1.0.4(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@strapi/icons': 1.19.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@strapi/ui-primitives': 1.19.0(@types/react-dom@18.3.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@uiw/react-codemirror': 4.22.2(@babel/runtime@7.24.7)(@codemirror/autocomplete@6.16.2(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.1)(@lezer/common@1.2.1))(@codemirror/language@6.10.2)(@codemirror/lint@6.8.0)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.28.1)(codemirror@6.0.1(@lezer/common@1.2.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@strapi/ui-primitives': 1.19.0(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@uiw/react-codemirror': 4.22.2(@babel/runtime@7.24.7)(@codemirror/autocomplete@6.16.3(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.3)(@lezer/common@1.2.1))(@codemirror/language@6.10.2)(@codemirror/lint@6.8.1)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.28.3)(codemirror@5.65.16)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) aria-hidden: 1.2.4 compute-scroll-into-view: 3.1.0 prop-types: 15.8.1 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - react-remove-scroll: 2.5.10(react@18.3.1) + react-remove-scroll: 2.5.10(@types/react@18.3.3)(react@18.3.1) react-router-dom: 5.3.4(react@18.3.1) styled-components: 5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1) transitivePeerDependencies: @@ -9023,7 +8725,7 @@ snapshots: - '@types/react-dom' - codemirror - '@strapi/generate-new@4.24.5': + '@strapi/generate-new@4.25.1': dependencies: '@sentry/node': 6.19.7 chalk: 4.1.2 @@ -9040,11 +8742,11 @@ snapshots: - encoding - supports-color - '@strapi/generators@4.24.5': + '@strapi/generators@4.25.1': dependencies: '@sindresorhus/slugify': 1.1.0 - '@strapi/typescript-utils': 4.24.5 - '@strapi/utils': 4.24.5 + '@strapi/typescript-utils': 4.25.1 + '@strapi/utils': 4.25.1 chalk: 4.1.2 copyfiles: 2.4.1 fs-extra: 10.0.0 @@ -9054,9 +8756,9 @@ snapshots: transitivePeerDependencies: - supports-color - '@strapi/helper-plugin@4.24.5(@strapi/design-system@1.19.0(@babel/runtime@7.24.7)(@codemirror/autocomplete@6.16.2(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.1)(@lezer/common@1.2.1))(@codemirror/language@6.10.2)(@codemirror/lint@6.8.0)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.28.1)(@strapi/icons@1.19.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react-dom@18.3.0)(codemirror@6.0.1(@lezer/common@1.2.1))(react-dom@18.3.1(react@18.3.1))(react-router-dom@5.3.4(react@18.3.1))(react@18.3.1)(styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1)))(@strapi/icons@1.19.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(debug@4.3.4)(react-dom@18.3.1(react@18.3.1))(react-router-dom@5.3.4(react@18.3.1))(react@18.3.1)(styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1))(typescript@5.2.2)': + '@strapi/helper-plugin@4.25.1(@strapi/design-system@1.19.0(@babel/runtime@7.24.7)(@codemirror/autocomplete@6.16.3(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.3)(@lezer/common@1.2.1))(@codemirror/language@6.10.2)(@codemirror/lint@6.8.1)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.28.3)(@strapi/icons@1.19.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react@18.3.3)(codemirror@5.65.16)(react-dom@18.3.1(react@18.3.1))(react-router-dom@5.3.4(react@18.3.1))(react@18.3.1)(styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1)))(@strapi/icons@1.19.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react@18.3.3)(debug@4.3.4)(react-dom@18.3.1(react@18.3.1))(react-router-dom@5.3.4(react@18.3.1))(react@18.3.1)(styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1))(typescript@5.2.2)': dependencies: - '@strapi/design-system': 1.19.0(@babel/runtime@7.24.7)(@codemirror/autocomplete@6.16.2(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.1)(@lezer/common@1.2.1))(@codemirror/language@6.10.2)(@codemirror/lint@6.8.0)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.28.1)(@strapi/icons@1.19.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react-dom@18.3.0)(codemirror@6.0.1(@lezer/common@1.2.1))(react-dom@18.3.1(react@18.3.1))(react-router-dom@5.3.4(react@18.3.1))(react@18.3.1)(styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1)) + '@strapi/design-system': 1.19.0(@babel/runtime@7.24.7)(@codemirror/autocomplete@6.16.3(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.3)(@lezer/common@1.2.1))(@codemirror/language@6.10.2)(@codemirror/lint@6.8.1)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.28.3)(@strapi/icons@1.19.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react@18.3.3)(codemirror@5.65.16)(react-dom@18.3.1(react@18.3.1))(react-router-dom@5.3.4(react@18.3.1))(react@18.3.1)(styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1)) '@strapi/icons': 1.19.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) axios: 1.6.0(debug@4.3.4) date-fns: 2.30.0 @@ -9070,32 +8772,7 @@ snapshots: react-intl: 6.4.1(react@18.3.1)(typescript@5.2.2) react-query: 3.39.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1) react-router-dom: 5.3.4(react@18.3.1) - react-select: 5.7.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - styled-components: 5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1) - transitivePeerDependencies: - - '@types/react' - - debug - - react-native - - supports-color - - typescript - - '@strapi/helper-plugin@4.24.5(@strapi/design-system@1.19.0(@babel/runtime@7.24.7)(@codemirror/autocomplete@6.16.2(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.1)(@lezer/common@1.2.1))(@codemirror/language@6.10.2)(@codemirror/lint@6.8.0)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.28.1)(@strapi/icons@1.19.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react-dom@18.3.0)(codemirror@6.0.1(@lezer/common@1.2.1))(react-dom@18.3.1(react@18.3.1))(react-router-dom@5.3.4(react@18.3.1))(react@18.3.1)(styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1)))(@strapi/icons@1.19.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react-router-dom@5.3.4(react@18.3.1))(react@18.3.1)(styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1))(typescript@4.9.5)': - dependencies: - '@strapi/design-system': 1.19.0(@babel/runtime@7.24.7)(@codemirror/autocomplete@6.16.2(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.1)(@lezer/common@1.2.1))(@codemirror/language@6.10.2)(@codemirror/lint@6.8.0)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.28.1)(@strapi/icons@1.19.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react-dom@18.3.0)(codemirror@6.0.1(@lezer/common@1.2.1))(react-dom@18.3.1(react@18.3.1))(react-router-dom@5.3.4(react@18.3.1))(react@18.3.1)(styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1)) - '@strapi/icons': 1.19.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - axios: 1.6.0(debug@4.3.4) - date-fns: 2.30.0 - formik: 2.4.0(react@18.3.1) - immer: 9.0.19 - lodash: 4.17.21 - qs: 6.11.1 - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - react-helmet: 6.1.0(react@18.3.1) - react-intl: 6.4.1(react@18.3.1)(typescript@4.9.5) - react-query: 3.39.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - react-router-dom: 5.3.4(react@18.3.1) - react-select: 5.7.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react-select: 5.7.0(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) styled-components: 5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1) transitivePeerDependencies: - '@types/react' @@ -9109,14 +8786,14 @@ snapshots: react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - '@strapi/logger@4.24.5': + '@strapi/logger@4.25.1': dependencies: lodash: 4.17.21 winston: 3.10.0 - '@strapi/pack-up@4.23.0(@swc/helpers@0.5.11)(@types/node@20.14.5)(debug@4.3.4)(terser@5.31.1)': + '@strapi/pack-up@4.23.0(@swc/helpers@0.5.11)(@types/node@20.14.9)(debug@4.3.4)(terser@5.31.1)': dependencies: - '@vitejs/plugin-react-swc': 3.5.0(@swc/helpers@0.5.11)(vite@5.0.13(@types/node@20.14.5)(terser@5.31.1)) + '@vitejs/plugin-react-swc': 3.5.0(@swc/helpers@0.5.11)(vite@5.0.13(@types/node@20.14.9)(terser@5.31.1)) boxen: 5.1.2 browserslist-to-esbuild: 1.2.0 chalk: 4.1.2 @@ -9135,7 +8812,7 @@ snapshots: prompts: 2.4.2 rxjs: 7.8.1 typescript: 5.2.2 - vite: 5.0.13(@types/node@20.14.5)(terser@5.31.1) + vite: 5.0.13(@types/node@20.14.9)(terser@5.31.1) yup: 0.32.9 transitivePeerDependencies: - '@swc/helpers' @@ -9149,19 +8826,47 @@ snapshots: - supports-color - terser - '@strapi/permissions@4.24.5': + '@strapi/permissions@4.25.1': dependencies: '@casl/ability': 6.5.0 - '@strapi/utils': 4.24.5 + '@strapi/utils': 4.25.1 lodash: 4.17.21 qs: 6.11.1 sift: 16.0.1 - '@strapi/plugin-content-manager@4.24.5(@types/node@20.14.5)(better-sqlite3@8.0.1)(pg@8.12.0)': + ? '@strapi/plugin-cloud@4.25.1(@babel/runtime@7.24.7)(@codemirror/autocomplete@6.16.3(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.3)(@lezer/common@1.2.1))(@codemirror/language@6.10.2)(@codemirror/lint@6.8.1)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.28.3)(@strapi/strapi@4.25.1(@babel/runtime@7.24.7)(@codemirror/autocomplete@6.16.3(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.3)(@lezer/common@1.2.1))(@codemirror/language@6.10.2)(@codemirror/lint@6.8.1)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.28.3)(@swc/helpers@0.5.11)(@types/hoist-non-react-statics@3.3.5)(@types/node@20.14.9)(@types/react@18.3.3)(codemirror@5.65.16)(pg@8.8.0)(react-dom@18.3.1(react@18.3.1))(react-router-dom@5.3.4(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1))(terser@5.31.1)(type-fest@2.19.0))(@types/react@18.3.3)(codemirror@5.65.16)(react-dom@18.3.1(react@18.3.1))(react-router-dom@5.3.4(react@18.3.1))(react@18.3.1)(styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1))(typescript@5.2.2)' + : dependencies: + '@strapi/design-system': 1.19.0(@babel/runtime@7.24.7)(@codemirror/autocomplete@6.16.3(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.3)(@lezer/common@1.2.1))(@codemirror/language@6.10.2)(@codemirror/lint@6.8.1)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.28.3)(@strapi/icons@1.19.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react@18.3.3)(codemirror@5.65.16)(react-dom@18.3.1(react@18.3.1))(react-router-dom@5.3.4(react@18.3.1))(react@18.3.1)(styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1)) + '@strapi/helper-plugin': 4.25.1(@strapi/design-system@1.19.0(@babel/runtime@7.24.7)(@codemirror/autocomplete@6.16.3(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.3)(@lezer/common@1.2.1))(@codemirror/language@6.10.2)(@codemirror/lint@6.8.1)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.28.3)(@strapi/icons@1.19.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react@18.3.3)(codemirror@5.65.16)(react-dom@18.3.1(react@18.3.1))(react-router-dom@5.3.4(react@18.3.1))(react@18.3.1)(styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1)))(@strapi/icons@1.19.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react@18.3.3)(debug@4.3.4)(react-dom@18.3.1(react@18.3.1))(react-router-dom@5.3.4(react@18.3.1))(react@18.3.1)(styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1))(typescript@5.2.2) + '@strapi/icons': 1.19.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@strapi/strapi': 4.25.1(@babel/runtime@7.24.7)(@codemirror/autocomplete@6.16.3(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.3)(@lezer/common@1.2.1))(@codemirror/language@6.10.2)(@codemirror/lint@6.8.1)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.28.3)(@swc/helpers@0.5.11)(@types/hoist-non-react-statics@3.3.5)(@types/node@20.14.9)(@types/react@18.3.3)(codemirror@5.65.16)(pg@8.8.0)(react-dom@18.3.1(react@18.3.1))(react-router-dom@5.3.4(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1))(terser@5.31.1)(type-fest@2.19.0) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + react-intl: 6.4.1(react@18.3.1)(typescript@5.2.2) + react-router-dom: 5.3.4(react@18.3.1) + styled-components: 5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1) + transitivePeerDependencies: + - '@babel/runtime' + - '@codemirror/autocomplete' + - '@codemirror/language' + - '@codemirror/lint' + - '@codemirror/search' + - '@codemirror/state' + - '@codemirror/theme-one-dark' + - '@codemirror/view' + - '@types/react' + - '@types/react-dom' + - codemirror + - debug + - react-native + - supports-color + - typescript + + '@strapi/plugin-content-manager@4.25.1(@types/node@20.14.9)(pg@8.8.0)': dependencies: '@sindresorhus/slugify': 1.1.0 - '@strapi/types': 4.24.5(@types/node@20.14.5)(better-sqlite3@8.0.1)(pg@8.12.0) - '@strapi/utils': 4.24.5 + '@strapi/types': 4.25.1(@types/node@20.14.9)(pg@8.8.0) + '@strapi/utils': 4.25.1 koa: 2.13.4 koa-bodyparser: 4.4.1 lodash: 4.17.21 @@ -9178,16 +8883,16 @@ snapshots: - supports-color - tedious - ? '@strapi/plugin-content-type-builder@4.24.5(@babel/runtime@7.24.7)(@codemirror/autocomplete@6.16.2(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.1)(@lezer/common@1.2.1))(@codemirror/language@6.10.2)(@codemirror/lint@6.8.0)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.28.1)(@strapi/strapi@4.24.5(@babel/runtime@7.24.7)(@codemirror/autocomplete@6.16.2(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.1)(@lezer/common@1.2.1))(@codemirror/language@6.10.2)(@codemirror/lint@6.8.0)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.28.1)(@swc/helpers@0.5.11)(@types/hoist-non-react-statics@3.3.5)(@types/node@20.14.5)(@types/react-dom@18.3.0)(better-sqlite3@8.0.1)(codemirror@6.0.1(@lezer/common@1.2.1))(pg@8.12.0)(react-dom@18.3.1(react@18.3.1))(react-router-dom@5.3.4(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1))(terser@5.31.1)(type-fest@2.19.0))(@types/react-dom@18.3.0)(codemirror@6.0.1(@lezer/common@1.2.1))(debug@4.3.4)(react-dom@18.3.1(react@18.3.1))(react-router-dom@5.3.4(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1))(typescript@5.2.2)' + ? '@strapi/plugin-content-type-builder@4.25.1(@babel/runtime@7.24.7)(@codemirror/autocomplete@6.16.3(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.3)(@lezer/common@1.2.1))(@codemirror/language@6.10.2)(@codemirror/lint@6.8.1)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.28.3)(@strapi/strapi@4.25.1(@babel/runtime@7.24.7)(@codemirror/autocomplete@6.16.3(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.3)(@lezer/common@1.2.1))(@codemirror/language@6.10.2)(@codemirror/lint@6.8.1)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.28.3)(@swc/helpers@0.5.11)(@types/hoist-non-react-statics@3.3.5)(@types/node@20.14.9)(@types/react@18.3.3)(codemirror@5.65.16)(pg@8.8.0)(react-dom@18.3.1(react@18.3.1))(react-router-dom@5.3.4(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1))(terser@5.31.1)(type-fest@2.19.0))(@types/react@18.3.3)(codemirror@5.65.16)(debug@4.3.4)(react-dom@18.3.1(react@18.3.1))(react-router-dom@5.3.4(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1))(typescript@5.2.2)' : dependencies: - '@reduxjs/toolkit': 1.9.7(react-redux@8.1.1(@types/react-dom@18.3.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(redux@4.2.1))(react@18.3.1) + '@reduxjs/toolkit': 1.9.7(react-redux@8.1.1(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(redux@4.2.1))(react@18.3.1) '@sindresorhus/slugify': 1.1.0 - '@strapi/design-system': 1.19.0(@babel/runtime@7.24.7)(@codemirror/autocomplete@6.16.2(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.1)(@lezer/common@1.2.1))(@codemirror/language@6.10.2)(@codemirror/lint@6.8.0)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.28.1)(@strapi/icons@1.19.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react-dom@18.3.0)(codemirror@6.0.1(@lezer/common@1.2.1))(react-dom@18.3.1(react@18.3.1))(react-router-dom@5.3.4(react@18.3.1))(react@18.3.1)(styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1)) - '@strapi/generators': 4.24.5 - '@strapi/helper-plugin': 4.24.5(@strapi/design-system@1.19.0(@babel/runtime@7.24.7)(@codemirror/autocomplete@6.16.2(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.1)(@lezer/common@1.2.1))(@codemirror/language@6.10.2)(@codemirror/lint@6.8.0)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.28.1)(@strapi/icons@1.19.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react-dom@18.3.0)(codemirror@6.0.1(@lezer/common@1.2.1))(react-dom@18.3.1(react@18.3.1))(react-router-dom@5.3.4(react@18.3.1))(react@18.3.1)(styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1)))(@strapi/icons@1.19.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(debug@4.3.4)(react-dom@18.3.1(react@18.3.1))(react-router-dom@5.3.4(react@18.3.1))(react@18.3.1)(styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1))(typescript@5.2.2) + '@strapi/design-system': 1.19.0(@babel/runtime@7.24.7)(@codemirror/autocomplete@6.16.3(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.3)(@lezer/common@1.2.1))(@codemirror/language@6.10.2)(@codemirror/lint@6.8.1)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.28.3)(@strapi/icons@1.19.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react@18.3.3)(codemirror@5.65.16)(react-dom@18.3.1(react@18.3.1))(react-router-dom@5.3.4(react@18.3.1))(react@18.3.1)(styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1)) + '@strapi/generators': 4.25.1 + '@strapi/helper-plugin': 4.25.1(@strapi/design-system@1.19.0(@babel/runtime@7.24.7)(@codemirror/autocomplete@6.16.3(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.3)(@lezer/common@1.2.1))(@codemirror/language@6.10.2)(@codemirror/lint@6.8.1)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.28.3)(@strapi/icons@1.19.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react@18.3.3)(codemirror@5.65.16)(react-dom@18.3.1(react@18.3.1))(react-router-dom@5.3.4(react@18.3.1))(react@18.3.1)(styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1)))(@strapi/icons@1.19.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react@18.3.3)(debug@4.3.4)(react-dom@18.3.1(react@18.3.1))(react-router-dom@5.3.4(react@18.3.1))(react@18.3.1)(styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1))(typescript@5.2.2) '@strapi/icons': 1.19.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@strapi/strapi': 4.24.5(@babel/runtime@7.24.7)(@codemirror/autocomplete@6.16.2(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.1)(@lezer/common@1.2.1))(@codemirror/language@6.10.2)(@codemirror/lint@6.8.0)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.28.1)(@swc/helpers@0.5.11)(@types/hoist-non-react-statics@3.3.5)(@types/node@20.14.5)(@types/react-dom@18.3.0)(better-sqlite3@8.0.1)(codemirror@6.0.1(@lezer/common@1.2.1))(pg@8.12.0)(react-dom@18.3.1(react@18.3.1))(react-router-dom@5.3.4(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1))(terser@5.31.1)(type-fest@2.19.0) - '@strapi/utils': 4.24.5 + '@strapi/strapi': 4.25.1(@babel/runtime@7.24.7)(@codemirror/autocomplete@6.16.3(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.3)(@lezer/common@1.2.1))(@codemirror/language@6.10.2)(@codemirror/lint@6.8.1)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.28.3)(@swc/helpers@0.5.11)(@types/hoist-non-react-statics@3.3.5)(@types/node@20.14.9)(@types/react@18.3.3)(codemirror@5.65.16)(pg@8.8.0)(react-dom@18.3.1(react@18.3.1))(react-router-dom@5.3.4(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1))(terser@5.31.1)(type-fest@2.19.0) + '@strapi/utils': 4.25.1 fs-extra: 10.0.0 immer: 9.0.19 koa-bodyparser: 4.4.1 @@ -9199,7 +8904,7 @@ snapshots: react-dom: 18.3.1(react@18.3.1) react-helmet: 6.1.0(react@18.3.1) react-intl: 6.4.1(react@18.3.1)(typescript@5.2.2) - react-redux: 8.1.1(@types/react-dom@18.3.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(redux@4.2.1) + react-redux: 8.1.1(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(redux@4.2.1) react-router-dom: 5.3.4(react@18.3.1) styled-components: 5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1) yup: 0.32.9 @@ -9221,13 +8926,13 @@ snapshots: - supports-color - typescript - '@strapi/plugin-email@4.24.5(@babel/runtime@7.24.7)(@codemirror/autocomplete@6.16.2(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.1)(@lezer/common@1.2.1))(@codemirror/language@6.10.2)(@codemirror/lint@6.8.0)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.28.1)(@types/react-dom@18.3.0)(codemirror@6.0.1(@lezer/common@1.2.1))(debug@4.3.4)(koa@2.13.4)(react-dom@18.3.1(react@18.3.1))(react-router-dom@5.3.4(react@18.3.1))(react@18.3.1)(styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1))(typescript@5.2.2)': + '@strapi/plugin-email@4.25.1(@babel/runtime@7.24.7)(@codemirror/autocomplete@6.16.3(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.3)(@lezer/common@1.2.1))(@codemirror/language@6.10.2)(@codemirror/lint@6.8.1)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.28.3)(@types/react@18.3.3)(codemirror@5.65.16)(debug@4.3.4)(koa@2.13.4)(react-dom@18.3.1(react@18.3.1))(react-router-dom@5.3.4(react@18.3.1))(react@18.3.1)(styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1))(typescript@5.2.2)': dependencies: - '@strapi/design-system': 1.19.0(@babel/runtime@7.24.7)(@codemirror/autocomplete@6.16.2(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.1)(@lezer/common@1.2.1))(@codemirror/language@6.10.2)(@codemirror/lint@6.8.0)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.28.1)(@strapi/icons@1.19.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react-dom@18.3.0)(codemirror@6.0.1(@lezer/common@1.2.1))(react-dom@18.3.1(react@18.3.1))(react-router-dom@5.3.4(react@18.3.1))(react@18.3.1)(styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1)) - '@strapi/helper-plugin': 4.24.5(@strapi/design-system@1.19.0(@babel/runtime@7.24.7)(@codemirror/autocomplete@6.16.2(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.1)(@lezer/common@1.2.1))(@codemirror/language@6.10.2)(@codemirror/lint@6.8.0)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.28.1)(@strapi/icons@1.19.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react-dom@18.3.0)(codemirror@6.0.1(@lezer/common@1.2.1))(react-dom@18.3.1(react@18.3.1))(react-router-dom@5.3.4(react@18.3.1))(react@18.3.1)(styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1)))(@strapi/icons@1.19.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(debug@4.3.4)(react-dom@18.3.1(react@18.3.1))(react-router-dom@5.3.4(react@18.3.1))(react@18.3.1)(styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1))(typescript@5.2.2) + '@strapi/design-system': 1.19.0(@babel/runtime@7.24.7)(@codemirror/autocomplete@6.16.3(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.3)(@lezer/common@1.2.1))(@codemirror/language@6.10.2)(@codemirror/lint@6.8.1)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.28.3)(@strapi/icons@1.19.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react@18.3.3)(codemirror@5.65.16)(react-dom@18.3.1(react@18.3.1))(react-router-dom@5.3.4(react@18.3.1))(react@18.3.1)(styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1)) + '@strapi/helper-plugin': 4.25.1(@strapi/design-system@1.19.0(@babel/runtime@7.24.7)(@codemirror/autocomplete@6.16.3(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.3)(@lezer/common@1.2.1))(@codemirror/language@6.10.2)(@codemirror/lint@6.8.1)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.28.3)(@strapi/icons@1.19.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react@18.3.3)(codemirror@5.65.16)(react-dom@18.3.1(react@18.3.1))(react-router-dom@5.3.4(react@18.3.1))(react@18.3.1)(styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1)))(@strapi/icons@1.19.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react@18.3.3)(debug@4.3.4)(react-dom@18.3.1(react@18.3.1))(react-router-dom@5.3.4(react@18.3.1))(react@18.3.1)(styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1))(typescript@5.2.2) '@strapi/icons': 1.19.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@strapi/provider-email-sendmail': 4.24.5 - '@strapi/utils': 4.24.5 + '@strapi/provider-email-sendmail': 4.25.1 + '@strapi/utils': 4.25.1 koa: 2.13.4 lodash: 4.17.21 prop-types: 15.8.1 @@ -9255,14 +8960,14 @@ snapshots: - supports-color - typescript - ? '@strapi/plugin-i18n@4.24.5(@babel/runtime@7.24.7)(@codemirror/autocomplete@6.16.2(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.1)(@lezer/common@1.2.1))(@codemirror/language@6.10.2)(@codemirror/lint@6.8.0)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.28.1)(@strapi/strapi@4.24.5(@babel/runtime@7.24.7)(@codemirror/autocomplete@6.16.2(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.1)(@lezer/common@1.2.1))(@codemirror/language@6.10.2)(@codemirror/lint@6.8.0)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.28.1)(@swc/helpers@0.5.11)(@types/hoist-non-react-statics@3.3.5)(@types/node@20.14.5)(@types/react-dom@18.3.0)(better-sqlite3@8.0.1)(codemirror@6.0.1(@lezer/common@1.2.1))(pg@8.12.0)(react-dom@18.3.1(react@18.3.1))(react-router-dom@5.3.4(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1))(terser@5.31.1)(type-fest@2.19.0))(@types/react-dom@18.3.0)(codemirror@6.0.1(@lezer/common@1.2.1))(react-dom@18.3.1(react@18.3.1))(react-router-dom@5.3.4(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1))(typescript@4.9.5)' + ? '@strapi/plugin-i18n@4.25.1(@babel/runtime@7.24.7)(@codemirror/autocomplete@6.16.3(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.3)(@lezer/common@1.2.1))(@codemirror/language@6.10.2)(@codemirror/lint@6.8.1)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.28.3)(@strapi/strapi@4.25.1(@babel/runtime@7.24.7)(@codemirror/autocomplete@6.16.3(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.3)(@lezer/common@1.2.1))(@codemirror/language@6.10.2)(@codemirror/lint@6.8.1)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.28.3)(@swc/helpers@0.5.11)(@types/hoist-non-react-statics@3.3.5)(@types/node@20.14.9)(@types/react@18.3.3)(codemirror@5.65.16)(pg@8.8.0)(react-dom@18.3.1(react@18.3.1))(react-router-dom@5.3.4(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1))(terser@5.31.1)(type-fest@2.19.0))(@types/react@18.3.3)(codemirror@5.65.16)(react-dom@18.3.1(react@18.3.1))(react-router-dom@5.3.4(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1))(typescript@5.2.2)' : dependencies: - '@reduxjs/toolkit': 1.9.7(react-redux@8.1.1(@types/react-dom@18.3.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(redux@4.2.1))(react@18.3.1) - '@strapi/design-system': 1.19.0(@babel/runtime@7.24.7)(@codemirror/autocomplete@6.16.2(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.1)(@lezer/common@1.2.1))(@codemirror/language@6.10.2)(@codemirror/lint@6.8.0)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.28.1)(@strapi/icons@1.19.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react-dom@18.3.0)(codemirror@6.0.1(@lezer/common@1.2.1))(react-dom@18.3.1(react@18.3.1))(react-router-dom@5.3.4(react@18.3.1))(react@18.3.1)(styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1)) - '@strapi/helper-plugin': 4.24.5(@strapi/design-system@1.19.0(@babel/runtime@7.24.7)(@codemirror/autocomplete@6.16.2(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.1)(@lezer/common@1.2.1))(@codemirror/language@6.10.2)(@codemirror/lint@6.8.0)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.28.1)(@strapi/icons@1.19.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react-dom@18.3.0)(codemirror@6.0.1(@lezer/common@1.2.1))(react-dom@18.3.1(react@18.3.1))(react-router-dom@5.3.4(react@18.3.1))(react@18.3.1)(styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1)))(@strapi/icons@1.19.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react-router-dom@5.3.4(react@18.3.1))(react@18.3.1)(styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1))(typescript@4.9.5) + '@reduxjs/toolkit': 1.9.7(react-redux@8.1.1(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(redux@4.2.1))(react@18.3.1) + '@strapi/design-system': 1.19.0(@babel/runtime@7.24.7)(@codemirror/autocomplete@6.16.3(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.3)(@lezer/common@1.2.1))(@codemirror/language@6.10.2)(@codemirror/lint@6.8.1)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.28.3)(@strapi/icons@1.19.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react@18.3.3)(codemirror@5.65.16)(react-dom@18.3.1(react@18.3.1))(react-router-dom@5.3.4(react@18.3.1))(react@18.3.1)(styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1)) + '@strapi/helper-plugin': 4.25.1(@strapi/design-system@1.19.0(@babel/runtime@7.24.7)(@codemirror/autocomplete@6.16.3(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.3)(@lezer/common@1.2.1))(@codemirror/language@6.10.2)(@codemirror/lint@6.8.1)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.28.3)(@strapi/icons@1.19.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react@18.3.3)(codemirror@5.65.16)(react-dom@18.3.1(react@18.3.1))(react-router-dom@5.3.4(react@18.3.1))(react@18.3.1)(styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1)))(@strapi/icons@1.19.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react@18.3.3)(debug@4.3.4)(react-dom@18.3.1(react@18.3.1))(react-router-dom@5.3.4(react@18.3.1))(react@18.3.1)(styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1))(typescript@5.2.2) '@strapi/icons': 1.19.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@strapi/strapi': 4.24.5(@babel/runtime@7.24.7)(@codemirror/autocomplete@6.16.2(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.1)(@lezer/common@1.2.1))(@codemirror/language@6.10.2)(@codemirror/lint@6.8.0)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.28.1)(@swc/helpers@0.5.11)(@types/hoist-non-react-statics@3.3.5)(@types/node@20.14.5)(@types/react-dom@18.3.0)(better-sqlite3@8.0.1)(codemirror@6.0.1(@lezer/common@1.2.1))(pg@8.12.0)(react-dom@18.3.1(react@18.3.1))(react-router-dom@5.3.4(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1))(terser@5.31.1)(type-fest@2.19.0) - '@strapi/utils': 4.24.5 + '@strapi/strapi': 4.25.1(@babel/runtime@7.24.7)(@codemirror/autocomplete@6.16.3(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.3)(@lezer/common@1.2.1))(@codemirror/language@6.10.2)(@codemirror/lint@6.8.1)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.28.3)(@swc/helpers@0.5.11)(@types/hoist-non-react-statics@3.3.5)(@types/node@20.14.9)(@types/react@18.3.3)(codemirror@5.65.16)(pg@8.8.0)(react-dom@18.3.1(react@18.3.1))(react-router-dom@5.3.4(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1))(terser@5.31.1)(type-fest@2.19.0) + '@strapi/utils': 4.25.1 axios: 1.6.0(debug@4.3.4) formik: 2.4.0(react@18.3.1) immer: 9.0.19 @@ -9271,9 +8976,9 @@ snapshots: qs: 6.11.1 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - react-intl: 6.4.1(react@18.3.1)(typescript@4.9.5) + react-intl: 6.4.1(react@18.3.1)(typescript@5.2.2) react-query: 3.39.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - react-redux: 8.1.1(@types/react-dom@18.3.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(redux@4.2.1) + react-redux: 8.1.1(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(redux@4.2.1) react-router-dom: 5.3.4(react@18.3.1) styled-components: 5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1) yup: 0.32.9 @@ -9295,14 +9000,14 @@ snapshots: - supports-color - typescript - ? '@strapi/plugin-upload@4.24.5(@babel/runtime@7.24.7)(@codemirror/autocomplete@6.16.2(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.1)(@lezer/common@1.2.1))(@codemirror/language@6.10.2)(@codemirror/lint@6.8.0)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.28.1)(@strapi/strapi@4.24.5(@babel/runtime@7.24.7)(@codemirror/autocomplete@6.16.2(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.1)(@lezer/common@1.2.1))(@codemirror/language@6.10.2)(@codemirror/lint@6.8.0)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.28.1)(@swc/helpers@0.5.11)(@types/hoist-non-react-statics@3.3.5)(@types/node@20.14.5)(@types/react-dom@18.3.0)(better-sqlite3@8.0.1)(codemirror@6.0.1(@lezer/common@1.2.1))(pg@8.12.0)(react-dom@18.3.1(react@18.3.1))(react-router-dom@5.3.4(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1))(terser@5.31.1)(type-fest@2.19.0))(@types/hoist-non-react-statics@3.3.5)(@types/node@20.14.5)(@types/react-dom@18.3.0)(codemirror@6.0.1(@lezer/common@1.2.1))(debug@4.3.4)(react-dom@18.3.1(react@18.3.1))(react-router-dom@5.3.4(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1))(typescript@5.2.2)' + ? '@strapi/plugin-upload@4.25.1(@babel/runtime@7.24.7)(@codemirror/autocomplete@6.16.3(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.3)(@lezer/common@1.2.1))(@codemirror/language@6.10.2)(@codemirror/lint@6.8.1)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.28.3)(@strapi/strapi@4.25.1(@babel/runtime@7.24.7)(@codemirror/autocomplete@6.16.3(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.3)(@lezer/common@1.2.1))(@codemirror/language@6.10.2)(@codemirror/lint@6.8.1)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.28.3)(@swc/helpers@0.5.11)(@types/hoist-non-react-statics@3.3.5)(@types/node@20.14.9)(@types/react@18.3.3)(codemirror@5.65.16)(pg@8.8.0)(react-dom@18.3.1(react@18.3.1))(react-router-dom@5.3.4(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1))(terser@5.31.1)(type-fest@2.19.0))(@types/hoist-non-react-statics@3.3.5)(@types/node@20.14.9)(@types/react@18.3.3)(codemirror@5.65.16)(debug@4.3.4)(react-dom@18.3.1(react@18.3.1))(react-router-dom@5.3.4(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1))(typescript@5.2.2)' : dependencies: - '@strapi/design-system': 1.19.0(@babel/runtime@7.24.7)(@codemirror/autocomplete@6.16.2(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.1)(@lezer/common@1.2.1))(@codemirror/language@6.10.2)(@codemirror/lint@6.8.0)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.28.1)(@strapi/icons@1.19.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react-dom@18.3.0)(codemirror@6.0.1(@lezer/common@1.2.1))(react-dom@18.3.1(react@18.3.1))(react-router-dom@5.3.4(react@18.3.1))(react@18.3.1)(styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1)) - '@strapi/helper-plugin': 4.24.5(@strapi/design-system@1.19.0(@babel/runtime@7.24.7)(@codemirror/autocomplete@6.16.2(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.1)(@lezer/common@1.2.1))(@codemirror/language@6.10.2)(@codemirror/lint@6.8.0)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.28.1)(@strapi/icons@1.19.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react-dom@18.3.0)(codemirror@6.0.1(@lezer/common@1.2.1))(react-dom@18.3.1(react@18.3.1))(react-router-dom@5.3.4(react@18.3.1))(react@18.3.1)(styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1)))(@strapi/icons@1.19.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(debug@4.3.4)(react-dom@18.3.1(react@18.3.1))(react-router-dom@5.3.4(react@18.3.1))(react@18.3.1)(styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1))(typescript@5.2.2) + '@strapi/design-system': 1.19.0(@babel/runtime@7.24.7)(@codemirror/autocomplete@6.16.3(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.3)(@lezer/common@1.2.1))(@codemirror/language@6.10.2)(@codemirror/lint@6.8.1)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.28.3)(@strapi/icons@1.19.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react@18.3.3)(codemirror@5.65.16)(react-dom@18.3.1(react@18.3.1))(react-router-dom@5.3.4(react@18.3.1))(react@18.3.1)(styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1)) + '@strapi/helper-plugin': 4.25.1(@strapi/design-system@1.19.0(@babel/runtime@7.24.7)(@codemirror/autocomplete@6.16.3(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.3)(@lezer/common@1.2.1))(@codemirror/language@6.10.2)(@codemirror/lint@6.8.1)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.28.3)(@strapi/icons@1.19.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react@18.3.3)(codemirror@5.65.16)(react-dom@18.3.1(react@18.3.1))(react-router-dom@5.3.4(react@18.3.1))(react@18.3.1)(styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1)))(@strapi/icons@1.19.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react@18.3.3)(debug@4.3.4)(react-dom@18.3.1(react@18.3.1))(react-router-dom@5.3.4(react@18.3.1))(react@18.3.1)(styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1))(typescript@5.2.2) '@strapi/icons': 1.19.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@strapi/provider-upload-local': 4.24.5 - '@strapi/strapi': 4.24.5(@babel/runtime@7.24.7)(@codemirror/autocomplete@6.16.2(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.1)(@lezer/common@1.2.1))(@codemirror/language@6.10.2)(@codemirror/lint@6.8.0)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.28.1)(@swc/helpers@0.5.11)(@types/hoist-non-react-statics@3.3.5)(@types/node@20.14.5)(@types/react-dom@18.3.0)(better-sqlite3@8.0.1)(codemirror@6.0.1(@lezer/common@1.2.1))(pg@8.12.0)(react-dom@18.3.1(react@18.3.1))(react-router-dom@5.3.4(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1))(terser@5.31.1)(type-fest@2.19.0) - '@strapi/utils': 4.24.5 + '@strapi/provider-upload-local': 4.25.1 + '@strapi/strapi': 4.25.1(@babel/runtime@7.24.7)(@codemirror/autocomplete@6.16.3(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.3)(@lezer/common@1.2.1))(@codemirror/language@6.10.2)(@codemirror/lint@6.8.1)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.28.3)(@swc/helpers@0.5.11)(@types/hoist-non-react-statics@3.3.5)(@types/node@20.14.9)(@types/react@18.3.3)(codemirror@5.65.16)(pg@8.8.0)(react-dom@18.3.1(react@18.3.1))(react-router-dom@5.3.4(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1))(terser@5.31.1)(type-fest@2.19.0) + '@strapi/utils': 4.25.1 axios: 1.6.0(debug@4.3.4) byte-size: 7.0.1 cropperjs: 1.6.0 @@ -9317,14 +9022,14 @@ snapshots: prop-types: 15.8.1 qs: 6.11.1 react: 18.3.1 - react-dnd: 16.0.1(@types/hoist-non-react-statics@3.3.5)(@types/node@20.14.5)(react@18.3.1) + react-dnd: 16.0.1(@types/hoist-non-react-statics@3.3.5)(@types/node@20.14.9)(@types/react@18.3.3)(react@18.3.1) react-dom: 18.3.1(react@18.3.1) react-helmet: 6.1.0(react@18.3.1) react-intl: 6.4.1(react@18.3.1)(typescript@5.2.2) react-query: 3.39.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - react-redux: 8.1.1(@types/react-dom@18.3.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(redux@4.2.1) + react-redux: 8.1.1(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(redux@4.2.1) react-router-dom: 5.3.4(react@18.3.1) - react-select: 5.7.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react-select: 5.7.0(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) sharp: 0.32.6 styled-components: 5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1) yup: 0.32.9 @@ -9348,13 +9053,13 @@ snapshots: - supports-color - typescript - ? '@strapi/plugin-users-permissions@4.24.5(@babel/runtime@7.24.7)(@codemirror/autocomplete@6.16.2(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.1)(@lezer/common@1.2.1))(@codemirror/language@6.10.2)(@codemirror/lint@6.8.0)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.28.1)(@strapi/strapi@4.24.5(@babel/runtime@7.24.7)(@codemirror/autocomplete@6.16.2(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.1)(@lezer/common@1.2.1))(@codemirror/language@6.10.2)(@codemirror/lint@6.8.0)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.28.1)(@swc/helpers@0.5.11)(@types/hoist-non-react-statics@3.3.5)(@types/node@20.14.5)(@types/react-dom@18.3.0)(better-sqlite3@8.0.1)(codemirror@6.0.1(@lezer/common@1.2.1))(pg@8.12.0)(react-dom@18.3.1(react@18.3.1))(react-router-dom@5.3.4(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1))(terser@5.31.1)(type-fest@2.19.0))(@types/react-dom@18.3.0)(codemirror@6.0.1(@lezer/common@1.2.1))(react-dom@18.3.1(react@18.3.1))(react-router-dom@5.3.4(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1))(typescript@4.9.5)' + ? '@strapi/plugin-users-permissions@4.25.1(@babel/runtime@7.24.7)(@codemirror/autocomplete@6.16.3(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.3)(@lezer/common@1.2.1))(@codemirror/language@6.10.2)(@codemirror/lint@6.8.1)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.28.3)(@strapi/strapi@4.25.1(@babel/runtime@7.24.7)(@codemirror/autocomplete@6.16.3(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.3)(@lezer/common@1.2.1))(@codemirror/language@6.10.2)(@codemirror/lint@6.8.1)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.28.3)(@swc/helpers@0.5.11)(@types/hoist-non-react-statics@3.3.5)(@types/node@20.14.9)(@types/react@18.3.3)(codemirror@5.65.16)(pg@8.8.0)(react-dom@18.3.1(react@18.3.1))(react-router-dom@5.3.4(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1))(terser@5.31.1)(type-fest@2.19.0))(@types/react@18.3.3)(codemirror@5.65.16)(react-dom@18.3.1(react@18.3.1))(react-router-dom@5.3.4(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1))(typescript@5.2.2)' : dependencies: - '@strapi/design-system': 1.19.0(@babel/runtime@7.24.7)(@codemirror/autocomplete@6.16.2(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.1)(@lezer/common@1.2.1))(@codemirror/language@6.10.2)(@codemirror/lint@6.8.0)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.28.1)(@strapi/icons@1.19.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react-dom@18.3.0)(codemirror@6.0.1(@lezer/common@1.2.1))(react-dom@18.3.1(react@18.3.1))(react-router-dom@5.3.4(react@18.3.1))(react@18.3.1)(styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1)) - '@strapi/helper-plugin': 4.24.5(@strapi/design-system@1.19.0(@babel/runtime@7.24.7)(@codemirror/autocomplete@6.16.2(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.1)(@lezer/common@1.2.1))(@codemirror/language@6.10.2)(@codemirror/lint@6.8.0)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.28.1)(@strapi/icons@1.19.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react-dom@18.3.0)(codemirror@6.0.1(@lezer/common@1.2.1))(react-dom@18.3.1(react@18.3.1))(react-router-dom@5.3.4(react@18.3.1))(react@18.3.1)(styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1)))(@strapi/icons@1.19.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react-router-dom@5.3.4(react@18.3.1))(react@18.3.1)(styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1))(typescript@4.9.5) + '@strapi/design-system': 1.19.0(@babel/runtime@7.24.7)(@codemirror/autocomplete@6.16.3(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.3)(@lezer/common@1.2.1))(@codemirror/language@6.10.2)(@codemirror/lint@6.8.1)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.28.3)(@strapi/icons@1.19.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react@18.3.3)(codemirror@5.65.16)(react-dom@18.3.1(react@18.3.1))(react-router-dom@5.3.4(react@18.3.1))(react@18.3.1)(styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1)) + '@strapi/helper-plugin': 4.25.1(@strapi/design-system@1.19.0(@babel/runtime@7.24.7)(@codemirror/autocomplete@6.16.3(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.3)(@lezer/common@1.2.1))(@codemirror/language@6.10.2)(@codemirror/lint@6.8.1)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.28.3)(@strapi/icons@1.19.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react@18.3.3)(codemirror@5.65.16)(react-dom@18.3.1(react@18.3.1))(react-router-dom@5.3.4(react@18.3.1))(react@18.3.1)(styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1)))(@strapi/icons@1.19.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react@18.3.3)(debug@4.3.4)(react-dom@18.3.1(react@18.3.1))(react-router-dom@5.3.4(react@18.3.1))(react@18.3.1)(styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1))(typescript@5.2.2) '@strapi/icons': 1.19.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@strapi/strapi': 4.24.5(@babel/runtime@7.24.7)(@codemirror/autocomplete@6.16.2(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.1)(@lezer/common@1.2.1))(@codemirror/language@6.10.2)(@codemirror/lint@6.8.0)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.28.1)(@swc/helpers@0.5.11)(@types/hoist-non-react-statics@3.3.5)(@types/node@20.14.5)(@types/react-dom@18.3.0)(better-sqlite3@8.0.1)(codemirror@6.0.1(@lezer/common@1.2.1))(pg@8.12.0)(react-dom@18.3.1(react@18.3.1))(react-router-dom@5.3.4(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1))(terser@5.31.1)(type-fest@2.19.0) - '@strapi/utils': 4.24.5 + '@strapi/strapi': 4.25.1(@babel/runtime@7.24.7)(@codemirror/autocomplete@6.16.3(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.3)(@lezer/common@1.2.1))(@codemirror/language@6.10.2)(@codemirror/lint@6.8.1)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.28.3)(@swc/helpers@0.5.11)(@types/hoist-non-react-statics@3.3.5)(@types/node@20.14.9)(@types/react@18.3.3)(codemirror@5.65.16)(pg@8.8.0)(react-dom@18.3.1(react@18.3.1))(react-router-dom@5.3.4(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1))(terser@5.31.1)(type-fest@2.19.0) + '@strapi/utils': 4.25.1 bcryptjs: 2.4.3 formik: 2.4.0(react@18.3.1) grant-koa: 5.4.8(koa@2.13.4) @@ -9368,9 +9073,9 @@ snapshots: purest: 4.0.2 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - react-intl: 6.4.1(react@18.3.1)(typescript@4.9.5) + react-intl: 6.4.1(react@18.3.1)(typescript@5.2.2) react-query: 3.39.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - react-redux: 8.1.1(@types/react-dom@18.3.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(redux@4.2.1) + react-redux: 8.1.1(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(redux@4.2.1) react-router-dom: 5.3.4(react@18.3.1) styled-components: 5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1) url-join: 4.0.1 @@ -9396,55 +9101,44 @@ snapshots: - supports-color - typescript - '@strapi/provider-audit-logs-local@4.24.5': {} + '@strapi/provider-audit-logs-local@4.25.1': {} - '@strapi/provider-email-sendgrid@4.24.5': + '@strapi/provider-email-sendmail@4.25.1': dependencies: - '@sendgrid/mail': 7.7.0 - '@strapi/utils': 4.24.5 - transitivePeerDependencies: - - debug - - '@strapi/provider-email-sendmail@4.24.5': - dependencies: - '@strapi/utils': 4.24.5 + '@strapi/utils': 4.25.1 sendmail: 1.6.1 - '@strapi/provider-upload-cloudinary@4.24.5': + '@strapi/provider-upload-local@4.25.1': dependencies: - '@strapi/utils': 4.24.5 - cloudinary: 1.41.3 - into-stream: 5.1.1 - - '@strapi/provider-upload-local@4.24.5': - dependencies: - '@strapi/utils': 4.24.5 + '@strapi/utils': 4.25.1 fs-extra: 10.0.0 - '@strapi/strapi@4.24.5(@babel/runtime@7.24.7)(@codemirror/autocomplete@6.16.2(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.1)(@lezer/common@1.2.1))(@codemirror/language@6.10.2)(@codemirror/lint@6.8.0)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.28.1)(@swc/helpers@0.5.11)(@types/hoist-non-react-statics@3.3.5)(@types/node@20.14.5)(@types/react-dom@18.3.0)(better-sqlite3@8.0.1)(codemirror@6.0.1(@lezer/common@1.2.1))(pg@8.12.0)(react-dom@18.3.1(react@18.3.1))(react-router-dom@5.3.4(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1))(terser@5.31.1)(type-fest@2.19.0)': + '@strapi/strapi@4.25.1(@babel/runtime@7.24.7)(@codemirror/autocomplete@6.16.3(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.3)(@lezer/common@1.2.1))(@codemirror/language@6.10.2)(@codemirror/lint@6.8.1)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.28.3)(@swc/helpers@0.5.11)(@types/hoist-non-react-statics@3.3.5)(@types/node@20.14.9)(@types/react@18.3.3)(codemirror@5.65.16)(pg@8.8.0)(react-dom@18.3.1(react@18.3.1))(react-router-dom@5.3.4(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1))(terser@5.31.1)(type-fest@2.19.0)': dependencies: '@koa/cors': 5.0.0 '@koa/router': 10.1.1 - '@strapi/admin': 4.24.5(@babel/runtime@7.24.7)(@codemirror/autocomplete@6.16.2(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.1)(@lezer/common@1.2.1))(@codemirror/language@6.10.2)(@codemirror/lint@6.8.0)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.28.1)(@strapi/data-transfer@4.24.5(@strapi/strapi@4.24.5(@babel/runtime@7.24.7)(@codemirror/autocomplete@6.16.2(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.1)(@lezer/common@1.2.1))(@codemirror/language@6.10.2)(@codemirror/lint@6.8.0)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.28.1)(@swc/helpers@0.5.11)(@types/hoist-non-react-statics@3.3.5)(@types/node@20.14.5)(@types/react-dom@18.3.0)(better-sqlite3@8.0.1)(codemirror@6.0.1(@lezer/common@1.2.1))(pg@8.12.0)(react-dom@18.3.1(react@18.3.1))(react-router-dom@5.3.4(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1))(terser@5.31.1)(type-fest@2.19.0))(@types/node@20.14.5)(better-sqlite3@8.0.1)(pg@8.12.0))(@strapi/strapi@4.24.5(@babel/runtime@7.24.7)(@codemirror/autocomplete@6.16.2(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.1)(@lezer/common@1.2.1))(@codemirror/language@6.10.2)(@codemirror/lint@6.8.0)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.28.1)(@swc/helpers@0.5.11)(@types/hoist-non-react-statics@3.3.5)(@types/node@20.14.5)(@types/react-dom@18.3.0)(better-sqlite3@8.0.1)(codemirror@6.0.1(@lezer/common@1.2.1))(pg@8.12.0)(react-dom@18.3.1(react@18.3.1))(react-router-dom@5.3.4(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1))(terser@5.31.1)(type-fest@2.19.0))(@swc/helpers@0.5.11)(@types/hoist-non-react-statics@3.3.5)(@types/node@20.14.5)(@types/react-dom@18.3.0)(better-sqlite3@8.0.1)(codemirror@6.0.1(@lezer/common@1.2.1))(debug@4.3.4)(pg@8.12.0)(react-dom@18.3.1(react@18.3.1))(react-router-dom@5.3.4(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1))(terser@5.31.1)(type-fest@2.19.0) - '@strapi/content-releases': 4.24.5(@babel/runtime@7.24.7)(@codemirror/autocomplete@6.16.2(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.1)(@lezer/common@1.2.1))(@codemirror/language@6.10.2)(@codemirror/lint@6.8.0)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.28.1)(@strapi/admin@4.24.5(@babel/runtime@7.24.7)(@codemirror/autocomplete@6.16.2(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.1)(@lezer/common@1.2.1))(@codemirror/language@6.10.2)(@codemirror/lint@6.8.0)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.28.1)(@strapi/data-transfer@4.24.5(@strapi/strapi@4.24.5(@babel/runtime@7.24.7)(@codemirror/autocomplete@6.16.2(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.1)(@lezer/common@1.2.1))(@codemirror/language@6.10.2)(@codemirror/lint@6.8.0)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.28.1)(@swc/helpers@0.5.11)(@types/hoist-non-react-statics@3.3.5)(@types/node@20.14.5)(@types/react-dom@18.3.0)(better-sqlite3@8.0.1)(codemirror@6.0.1(@lezer/common@1.2.1))(pg@8.12.0)(react-dom@18.3.1(react@18.3.1))(react-router-dom@5.3.4(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1))(terser@5.31.1)(type-fest@2.19.0))(@types/node@20.14.5)(better-sqlite3@8.0.1)(pg@8.12.0))(@strapi/strapi@4.24.5(@babel/runtime@7.24.7)(@codemirror/autocomplete@6.16.2(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.1)(@lezer/common@1.2.1))(@codemirror/language@6.10.2)(@codemirror/lint@6.8.0)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.28.1)(@swc/helpers@0.5.11)(@types/hoist-non-react-statics@3.3.5)(@types/node@20.14.5)(@types/react-dom@18.3.0)(better-sqlite3@8.0.1)(codemirror@6.0.1(@lezer/common@1.2.1))(pg@8.12.0)(react-dom@18.3.1(react@18.3.1))(react-router-dom@5.3.4(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1))(terser@5.31.1)(type-fest@2.19.0))(@swc/helpers@0.5.11)(@types/hoist-non-react-statics@3.3.5)(@types/node@20.14.5)(@types/react-dom@18.3.0)(better-sqlite3@8.0.1)(codemirror@6.0.1(@lezer/common@1.2.1))(debug@4.3.4)(pg@8.12.0)(react-dom@18.3.1(react@18.3.1))(react-router-dom@5.3.4(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1))(terser@5.31.1)(type-fest@2.19.0))(@strapi/strapi@4.24.5(@babel/runtime@7.24.7)(@codemirror/autocomplete@6.16.2(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.1)(@lezer/common@1.2.1))(@codemirror/language@6.10.2)(@codemirror/lint@6.8.0)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.28.1)(@swc/helpers@0.5.11)(@types/hoist-non-react-statics@3.3.5)(@types/node@20.14.5)(@types/react-dom@18.3.0)(better-sqlite3@8.0.1)(codemirror@6.0.1(@lezer/common@1.2.1))(pg@8.12.0)(react-dom@18.3.1(react@18.3.1))(react-router-dom@5.3.4(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1))(terser@5.31.1)(type-fest@2.19.0))(@types/node@20.14.5)(@types/react-dom@18.3.0)(better-sqlite3@8.0.1)(codemirror@6.0.1(@lezer/common@1.2.1))(debug@4.3.4)(pg@8.12.0)(react-dom@18.3.1(react@18.3.1))(react-router-dom@5.3.4(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1))(typescript@5.2.2) - '@strapi/data-transfer': 4.24.5(@strapi/strapi@4.24.5(@babel/runtime@7.24.7)(@codemirror/autocomplete@6.16.2(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.1)(@lezer/common@1.2.1))(@codemirror/language@6.10.2)(@codemirror/lint@6.8.0)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.28.1)(@swc/helpers@0.5.11)(@types/hoist-non-react-statics@3.3.5)(@types/node@20.14.5)(@types/react-dom@18.3.0)(better-sqlite3@8.0.1)(codemirror@6.0.1(@lezer/common@1.2.1))(pg@8.12.0)(react-dom@18.3.1(react@18.3.1))(react-router-dom@5.3.4(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1))(terser@5.31.1)(type-fest@2.19.0))(@types/node@20.14.5)(better-sqlite3@8.0.1)(pg@8.12.0) - '@strapi/database': 4.24.5(@types/node@20.14.5)(better-sqlite3@8.0.1)(pg@8.12.0) - '@strapi/generate-new': 4.24.5 - '@strapi/generators': 4.24.5 - '@strapi/logger': 4.24.5 - '@strapi/pack-up': 4.23.0(@swc/helpers@0.5.11)(@types/node@20.14.5)(debug@4.3.4)(terser@5.31.1) - '@strapi/permissions': 4.24.5 - '@strapi/plugin-content-manager': 4.24.5(@types/node@20.14.5)(better-sqlite3@8.0.1)(pg@8.12.0) - '@strapi/plugin-content-type-builder': 4.24.5(@babel/runtime@7.24.7)(@codemirror/autocomplete@6.16.2(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.1)(@lezer/common@1.2.1))(@codemirror/language@6.10.2)(@codemirror/lint@6.8.0)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.28.1)(@strapi/strapi@4.24.5(@babel/runtime@7.24.7)(@codemirror/autocomplete@6.16.2(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.1)(@lezer/common@1.2.1))(@codemirror/language@6.10.2)(@codemirror/lint@6.8.0)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.28.1)(@swc/helpers@0.5.11)(@types/hoist-non-react-statics@3.3.5)(@types/node@20.14.5)(@types/react-dom@18.3.0)(better-sqlite3@8.0.1)(codemirror@6.0.1(@lezer/common@1.2.1))(pg@8.12.0)(react-dom@18.3.1(react@18.3.1))(react-router-dom@5.3.4(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1))(terser@5.31.1)(type-fest@2.19.0))(@types/react-dom@18.3.0)(codemirror@6.0.1(@lezer/common@1.2.1))(debug@4.3.4)(react-dom@18.3.1(react@18.3.1))(react-router-dom@5.3.4(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1))(typescript@5.2.2) - '@strapi/plugin-email': 4.24.5(@babel/runtime@7.24.7)(@codemirror/autocomplete@6.16.2(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.1)(@lezer/common@1.2.1))(@codemirror/language@6.10.2)(@codemirror/lint@6.8.0)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.28.1)(@types/react-dom@18.3.0)(codemirror@6.0.1(@lezer/common@1.2.1))(debug@4.3.4)(koa@2.13.4)(react-dom@18.3.1(react@18.3.1))(react-router-dom@5.3.4(react@18.3.1))(react@18.3.1)(styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1))(typescript@5.2.2) - '@strapi/plugin-upload': 4.24.5(@babel/runtime@7.24.7)(@codemirror/autocomplete@6.16.2(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.1)(@lezer/common@1.2.1))(@codemirror/language@6.10.2)(@codemirror/lint@6.8.0)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.28.1)(@strapi/strapi@4.24.5(@babel/runtime@7.24.7)(@codemirror/autocomplete@6.16.2(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.1)(@lezer/common@1.2.1))(@codemirror/language@6.10.2)(@codemirror/lint@6.8.0)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.28.1)(@swc/helpers@0.5.11)(@types/hoist-non-react-statics@3.3.5)(@types/node@20.14.5)(@types/react-dom@18.3.0)(better-sqlite3@8.0.1)(codemirror@6.0.1(@lezer/common@1.2.1))(pg@8.12.0)(react-dom@18.3.1(react@18.3.1))(react-router-dom@5.3.4(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1))(terser@5.31.1)(type-fest@2.19.0))(@types/hoist-non-react-statics@3.3.5)(@types/node@20.14.5)(@types/react-dom@18.3.0)(codemirror@6.0.1(@lezer/common@1.2.1))(debug@4.3.4)(react-dom@18.3.1(react@18.3.1))(react-router-dom@5.3.4(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1))(typescript@5.2.2) - '@strapi/types': 4.24.5(@types/node@20.14.5)(better-sqlite3@8.0.1)(pg@8.12.0) - '@strapi/typescript-utils': 4.24.5 - '@strapi/utils': 4.24.5 + '@strapi/admin': 4.25.1(@babel/runtime@7.24.7)(@codemirror/autocomplete@6.16.3(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.3)(@lezer/common@1.2.1))(@codemirror/language@6.10.2)(@codemirror/lint@6.8.1)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.28.3)(@strapi/data-transfer@4.25.1(@strapi/strapi@4.25.1(@babel/runtime@7.24.7)(@codemirror/autocomplete@6.16.3(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.3)(@lezer/common@1.2.1))(@codemirror/language@6.10.2)(@codemirror/lint@6.8.1)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.28.3)(@swc/helpers@0.5.11)(@types/hoist-non-react-statics@3.3.5)(@types/node@20.14.9)(@types/react@18.3.3)(codemirror@5.65.16)(pg@8.8.0)(react-dom@18.3.1(react@18.3.1))(react-router-dom@5.3.4(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1))(terser@5.31.1)(type-fest@2.19.0))(@types/node@20.14.9)(pg@8.8.0))(@strapi/strapi@4.25.1(@babel/runtime@7.24.7)(@codemirror/autocomplete@6.16.3(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.3)(@lezer/common@1.2.1))(@codemirror/language@6.10.2)(@codemirror/lint@6.8.1)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.28.3)(@swc/helpers@0.5.11)(@types/hoist-non-react-statics@3.3.5)(@types/node@20.14.9)(@types/react@18.3.3)(codemirror@5.65.16)(pg@8.8.0)(react-dom@18.3.1(react@18.3.1))(react-router-dom@5.3.4(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1))(terser@5.31.1)(type-fest@2.19.0))(@swc/helpers@0.5.11)(@types/hoist-non-react-statics@3.3.5)(@types/node@20.14.9)(@types/react@18.3.3)(codemirror@5.65.16)(debug@4.3.4)(pg@8.8.0)(react-dom@18.3.1(react@18.3.1))(react-router-dom@5.3.4(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1))(terser@5.31.1)(type-fest@2.19.0) + '@strapi/cloud-cli': 4.25.1(debug@4.3.4) + '@strapi/content-releases': 4.25.1(@babel/runtime@7.24.7)(@codemirror/autocomplete@6.16.3(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.3)(@lezer/common@1.2.1))(@codemirror/language@6.10.2)(@codemirror/lint@6.8.1)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.28.3)(@strapi/admin@4.25.1(@babel/runtime@7.24.7)(@codemirror/autocomplete@6.16.3(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.3)(@lezer/common@1.2.1))(@codemirror/language@6.10.2)(@codemirror/lint@6.8.1)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.28.3)(@strapi/data-transfer@4.25.1(@strapi/strapi@4.25.1(@babel/runtime@7.24.7)(@codemirror/autocomplete@6.16.3(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.3)(@lezer/common@1.2.1))(@codemirror/language@6.10.2)(@codemirror/lint@6.8.1)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.28.3)(@swc/helpers@0.5.11)(@types/hoist-non-react-statics@3.3.5)(@types/node@20.14.9)(@types/react@18.3.3)(codemirror@5.65.16)(pg@8.8.0)(react-dom@18.3.1(react@18.3.1))(react-router-dom@5.3.4(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1))(terser@5.31.1)(type-fest@2.19.0))(@types/node@20.14.9)(pg@8.8.0))(@strapi/strapi@4.25.1(@babel/runtime@7.24.7)(@codemirror/autocomplete@6.16.3(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.3)(@lezer/common@1.2.1))(@codemirror/language@6.10.2)(@codemirror/lint@6.8.1)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.28.3)(@swc/helpers@0.5.11)(@types/hoist-non-react-statics@3.3.5)(@types/node@20.14.9)(@types/react@18.3.3)(codemirror@5.65.16)(pg@8.8.0)(react-dom@18.3.1(react@18.3.1))(react-router-dom@5.3.4(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1))(terser@5.31.1)(type-fest@2.19.0))(@swc/helpers@0.5.11)(@types/hoist-non-react-statics@3.3.5)(@types/node@20.14.9)(@types/react@18.3.3)(codemirror@5.65.16)(debug@4.3.4)(pg@8.8.0)(react-dom@18.3.1(react@18.3.1))(react-router-dom@5.3.4(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1))(terser@5.31.1)(type-fest@2.19.0))(@strapi/strapi@4.25.1(@babel/runtime@7.24.7)(@codemirror/autocomplete@6.16.3(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.3)(@lezer/common@1.2.1))(@codemirror/language@6.10.2)(@codemirror/lint@6.8.1)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.28.3)(@swc/helpers@0.5.11)(@types/hoist-non-react-statics@3.3.5)(@types/node@20.14.9)(@types/react@18.3.3)(codemirror@5.65.16)(pg@8.8.0)(react-dom@18.3.1(react@18.3.1))(react-router-dom@5.3.4(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1))(terser@5.31.1)(type-fest@2.19.0))(@types/node@20.14.9)(@types/react@18.3.3)(codemirror@5.65.16)(debug@4.3.4)(pg@8.8.0)(react-dom@18.3.1(react@18.3.1))(react-router-dom@5.3.4(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1))(typescript@5.2.2) + '@strapi/data-transfer': 4.25.1(@strapi/strapi@4.25.1(@babel/runtime@7.24.7)(@codemirror/autocomplete@6.16.3(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.3)(@lezer/common@1.2.1))(@codemirror/language@6.10.2)(@codemirror/lint@6.8.1)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.28.3)(@swc/helpers@0.5.11)(@types/hoist-non-react-statics@3.3.5)(@types/node@20.14.9)(@types/react@18.3.3)(codemirror@5.65.16)(pg@8.8.0)(react-dom@18.3.1(react@18.3.1))(react-router-dom@5.3.4(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1))(terser@5.31.1)(type-fest@2.19.0))(@types/node@20.14.9)(pg@8.8.0) + '@strapi/database': 4.25.1(@types/node@20.14.9)(pg@8.8.0) + '@strapi/generate-new': 4.25.1 + '@strapi/generators': 4.25.1 + '@strapi/logger': 4.25.1 + '@strapi/pack-up': 4.23.0(@swc/helpers@0.5.11)(@types/node@20.14.9)(debug@4.3.4)(terser@5.31.1) + '@strapi/permissions': 4.25.1 + '@strapi/plugin-content-manager': 4.25.1(@types/node@20.14.9)(pg@8.8.0) + '@strapi/plugin-content-type-builder': 4.25.1(@babel/runtime@7.24.7)(@codemirror/autocomplete@6.16.3(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.3)(@lezer/common@1.2.1))(@codemirror/language@6.10.2)(@codemirror/lint@6.8.1)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.28.3)(@strapi/strapi@4.25.1(@babel/runtime@7.24.7)(@codemirror/autocomplete@6.16.3(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.3)(@lezer/common@1.2.1))(@codemirror/language@6.10.2)(@codemirror/lint@6.8.1)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.28.3)(@swc/helpers@0.5.11)(@types/hoist-non-react-statics@3.3.5)(@types/node@20.14.9)(@types/react@18.3.3)(codemirror@5.65.16)(pg@8.8.0)(react-dom@18.3.1(react@18.3.1))(react-router-dom@5.3.4(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1))(terser@5.31.1)(type-fest@2.19.0))(@types/react@18.3.3)(codemirror@5.65.16)(debug@4.3.4)(react-dom@18.3.1(react@18.3.1))(react-router-dom@5.3.4(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1))(typescript@5.2.2) + '@strapi/plugin-email': 4.25.1(@babel/runtime@7.24.7)(@codemirror/autocomplete@6.16.3(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.3)(@lezer/common@1.2.1))(@codemirror/language@6.10.2)(@codemirror/lint@6.8.1)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.28.3)(@types/react@18.3.3)(codemirror@5.65.16)(debug@4.3.4)(koa@2.13.4)(react-dom@18.3.1(react@18.3.1))(react-router-dom@5.3.4(react@18.3.1))(react@18.3.1)(styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1))(typescript@5.2.2) + '@strapi/plugin-upload': 4.25.1(@babel/runtime@7.24.7)(@codemirror/autocomplete@6.16.3(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.3)(@lezer/common@1.2.1))(@codemirror/language@6.10.2)(@codemirror/lint@6.8.1)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.28.3)(@strapi/strapi@4.25.1(@babel/runtime@7.24.7)(@codemirror/autocomplete@6.16.3(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.3)(@lezer/common@1.2.1))(@codemirror/language@6.10.2)(@codemirror/lint@6.8.1)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.28.3)(@swc/helpers@0.5.11)(@types/hoist-non-react-statics@3.3.5)(@types/node@20.14.9)(@types/react@18.3.3)(codemirror@5.65.16)(pg@8.8.0)(react-dom@18.3.1(react@18.3.1))(react-router-dom@5.3.4(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1))(terser@5.31.1)(type-fest@2.19.0))(@types/hoist-non-react-statics@3.3.5)(@types/node@20.14.9)(@types/react@18.3.3)(codemirror@5.65.16)(debug@4.3.4)(react-dom@18.3.1(react@18.3.1))(react-router-dom@5.3.4(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1))(typescript@5.2.2) + '@strapi/types': 4.25.1(@types/node@20.14.9)(pg@8.8.0) + '@strapi/typescript-utils': 4.25.1 + '@strapi/utils': 4.25.1 bcryptjs: 2.4.3 boxen: 5.1.2 chalk: 4.1.2 ci-info: 3.8.0 + cli-progress: 3.12.0 cli-table3: 0.6.2 commander: 8.3.0 concurrently: 8.2.2 @@ -9539,15 +9233,15 @@ snapshots: - webpack-dev-server - webpack-plugin-serve - '@strapi/types@4.24.5(@types/node@20.14.5)(better-sqlite3@8.0.1)(pg@8.12.0)': + '@strapi/types@4.25.1(@types/node@20.14.9)(pg@8.8.0)': dependencies: '@casl/ability': 6.5.0 '@koa/cors': 5.0.0 '@koa/router': 10.1.1 - '@strapi/database': 4.24.5(@types/node@20.14.5)(better-sqlite3@8.0.1)(pg@8.12.0) - '@strapi/logger': 4.24.5 - '@strapi/permissions': 4.24.5 - '@strapi/utils': 4.24.5 + '@strapi/database': 4.25.1(@types/node@20.14.9)(pg@8.8.0) + '@strapi/logger': 4.25.1 + '@strapi/permissions': 4.25.1 + '@strapi/utils': 4.25.1 commander: 8.3.0 https-proxy-agent: 5.0.1 koa: 2.13.4 @@ -9565,7 +9259,7 @@ snapshots: - supports-color - tedious - '@strapi/typescript-utils@4.24.5': + '@strapi/typescript-utils@4.25.1': dependencies: chalk: 4.1.2 cli-table3: 0.6.2 @@ -9574,36 +9268,36 @@ snapshots: prettier: 2.8.4 typescript: 5.2.2 - '@strapi/ui-primitives@1.19.0(@types/react-dom@18.3.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@strapi/ui-primitives@1.19.0(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@radix-ui/number': 1.0.1 - '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-collection': 1.0.3(@types/react-dom@18.3.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-compose-refs': 1.0.1(react@18.3.1) - '@radix-ui/react-context': 1.0.1(react@18.3.1) - '@radix-ui/react-direction': 1.0.1(react@18.3.1) - '@radix-ui/react-dismissable-layer': 1.0.5(@types/react-dom@18.3.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-focus-guards': 1.0.1(react@18.3.1) - '@radix-ui/react-focus-scope': 1.0.4(@types/react-dom@18.3.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-id': 1.0.1(react@18.3.1) - '@radix-ui/react-popper': 1.1.3(@types/react-dom@18.3.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-portal': 1.0.4(@types/react-dom@18.3.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-slot': 1.0.2(react@18.3.1) - '@radix-ui/react-use-callback-ref': 1.0.1(react@18.3.1) - '@radix-ui/react-use-controllable-state': 1.0.1(react@18.3.1) - '@radix-ui/react-use-layout-effect': 1.0.1(react@18.3.1) - '@radix-ui/react-use-previous': 1.0.1(react@18.3.1) - '@radix-ui/react-visually-hidden': 1.0.3(@types/react-dom@18.3.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/number': 1.1.0 + '@radix-ui/primitive': 1.1.0 + '@radix-ui/react-collection': 1.0.3(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.3)(react@18.3.1) + '@radix-ui/react-context': 1.1.0(@types/react@18.3.3)(react@18.3.1) + '@radix-ui/react-direction': 1.0.1(@types/react@18.3.3)(react@18.3.1) + '@radix-ui/react-dismissable-layer': 1.1.0(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-focus-guards': 1.0.1(@types/react@18.3.3)(react@18.3.1) + '@radix-ui/react-focus-scope': 1.0.4(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-id': 1.1.0(@types/react@18.3.3)(react@18.3.1) + '@radix-ui/react-popper': 1.2.0(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-portal': 1.1.1(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-primitive': 1.0.3(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-slot': 1.1.0(@types/react@18.3.3)(react@18.3.1) + '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.3)(react@18.3.1) + '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.3.3)(react@18.3.1) + '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.3.3)(react@18.3.1) + '@radix-ui/react-use-previous': 1.1.0(@types/react@18.3.3)(react@18.3.1) + '@radix-ui/react-visually-hidden': 1.1.0(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) aria-hidden: 1.2.4 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - react-remove-scroll: 2.5.10(react@18.3.1) + react-remove-scroll: 2.5.10(@types/react@18.3.3)(react@18.3.1) transitivePeerDependencies: - '@types/react' - '@types/react-dom' - '@strapi/utils@4.24.5': + '@strapi/utils@4.25.1': dependencies: '@sindresorhus/slugify': 1.1.0 date-fns: 2.30.0 @@ -9612,51 +9306,51 @@ snapshots: p-map: 4.0.0 yup: 0.32.9 - '@swc/core-darwin-arm64@1.6.1': + '@swc/core-darwin-arm64@1.6.6': optional: true - '@swc/core-darwin-x64@1.6.1': + '@swc/core-darwin-x64@1.6.6': optional: true - '@swc/core-linux-arm-gnueabihf@1.6.1': + '@swc/core-linux-arm-gnueabihf@1.6.6': optional: true - '@swc/core-linux-arm64-gnu@1.6.1': + '@swc/core-linux-arm64-gnu@1.6.6': optional: true - '@swc/core-linux-arm64-musl@1.6.1': + '@swc/core-linux-arm64-musl@1.6.6': optional: true - '@swc/core-linux-x64-gnu@1.6.1': + '@swc/core-linux-x64-gnu@1.6.6': optional: true - '@swc/core-linux-x64-musl@1.6.1': + '@swc/core-linux-x64-musl@1.6.6': optional: true - '@swc/core-win32-arm64-msvc@1.6.1': + '@swc/core-win32-arm64-msvc@1.6.6': optional: true - '@swc/core-win32-ia32-msvc@1.6.1': + '@swc/core-win32-ia32-msvc@1.6.6': optional: true - '@swc/core-win32-x64-msvc@1.6.1': + '@swc/core-win32-x64-msvc@1.6.6': optional: true - '@swc/core@1.6.1(@swc/helpers@0.5.11)': + '@swc/core@1.6.6(@swc/helpers@0.5.11)': dependencies: '@swc/counter': 0.1.3 - '@swc/types': 0.1.8 + '@swc/types': 0.1.9 optionalDependencies: - '@swc/core-darwin-arm64': 1.6.1 - '@swc/core-darwin-x64': 1.6.1 - '@swc/core-linux-arm-gnueabihf': 1.6.1 - '@swc/core-linux-arm64-gnu': 1.6.1 - '@swc/core-linux-arm64-musl': 1.6.1 - '@swc/core-linux-x64-gnu': 1.6.1 - '@swc/core-linux-x64-musl': 1.6.1 - '@swc/core-win32-arm64-msvc': 1.6.1 - '@swc/core-win32-ia32-msvc': 1.6.1 - '@swc/core-win32-x64-msvc': 1.6.1 + '@swc/core-darwin-arm64': 1.6.6 + '@swc/core-darwin-x64': 1.6.6 + '@swc/core-linux-arm-gnueabihf': 1.6.6 + '@swc/core-linux-arm64-gnu': 1.6.6 + '@swc/core-linux-arm64-musl': 1.6.6 + '@swc/core-linux-x64-gnu': 1.6.6 + '@swc/core-linux-x64-musl': 1.6.6 + '@swc/core-win32-arm64-msvc': 1.6.6 + '@swc/core-win32-ia32-msvc': 1.6.6 + '@swc/core-win32-x64-msvc': 1.6.6 '@swc/helpers': 0.5.11 '@swc/counter@0.1.3': {} @@ -9665,7 +9359,7 @@ snapshots: dependencies: tslib: 2.6.3 - '@swc/types@0.1.8': + '@swc/types@0.1.9': dependencies: '@swc/counter': 0.1.3 @@ -9673,54 +9367,23 @@ snapshots: dependencies: defer-to-connect: 2.0.1 - '@testing-library/dom@8.19.0': - dependencies: - '@babel/code-frame': 7.24.7 - '@babel/runtime': 7.24.7 - '@types/aria-query': 4.2.2 - aria-query: 5.3.0 - chalk: 4.1.2 - dom-accessibility-api: 0.5.16 - lz-string: 1.5.0 - pretty-format: 27.5.1 - - '@testing-library/react-hooks@8.0.1(react-dom@18.3.1(react@18.3.1))(react-test-renderer@18.3.1(react@18.3.1))(react@18.3.1)': - dependencies: - '@babel/runtime': 7.24.7 - react: 18.3.1 - react-error-boundary: 3.1.4(react@18.3.1) - optionalDependencies: - react-dom: 18.3.1(react@18.3.1) - react-test-renderer: 18.3.1(react@18.3.1) - - '@testing-library/react@12.1.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': - dependencies: - '@babel/runtime': 7.24.7 - '@testing-library/dom': 8.19.0 - '@types/react-dom': 18.3.0 - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - - '@testing-library/user-event@14.4.3(@testing-library/dom@8.19.0)': - dependencies: - '@testing-library/dom': 8.19.0 - '@types/argparse@1.0.38': {} - '@types/aria-query@4.2.2': {} + '@types/body-parser@1.19.5': + dependencies: + '@types/connect': 3.4.38 + '@types/node': 20.14.9 '@types/cacheable-request@6.0.3': dependencies: '@types/http-cache-semantics': 4.0.4 '@types/keyv': 3.1.4 - '@types/node': 20.14.5 + '@types/node': 20.14.9 '@types/responselike': 1.0.3 - '@types/cookie@0.4.1': {} - - '@types/debug@4.1.12': + '@types/connect@3.4.38': dependencies: - '@types/ms': 0.7.34 + '@types/node': 20.14.9 '@types/eslint-scope@3.7.7': dependencies: @@ -9734,16 +9397,30 @@ snapshots: '@types/estree@1.0.5': {} + '@types/express-serve-static-core@4.19.5': + dependencies: + '@types/node': 20.14.9 + '@types/qs': 6.9.15 + '@types/range-parser': 1.2.7 + '@types/send': 0.17.4 + + '@types/express@4.17.21': + dependencies: + '@types/body-parser': 1.19.5 + '@types/express-serve-static-core': 4.19.5 + '@types/qs': 6.9.15 + '@types/serve-static': 1.15.7 + '@types/fined@1.1.5': {} '@types/formidable@1.2.8': dependencies: - '@types/node': 20.14.5 + '@types/node': 20.14.9 '@types/glob@7.2.0': dependencies: '@types/minimatch': 5.1.2 - '@types/node': 20.14.5 + '@types/node': 20.14.9 '@types/hoist-non-react-statics@3.3.5': dependencies: @@ -9754,6 +9431,8 @@ snapshots: '@types/http-cache-semantics@4.0.4': {} + '@types/http-errors@2.0.4': {} + '@types/inquirer@6.5.0': dependencies: '@types/through': 0.0.33 @@ -9761,31 +9440,33 @@ snapshots: '@types/interpret@1.1.3': dependencies: - '@types/node': 20.14.5 + '@types/node': 20.14.9 '@types/is-hotkey@0.1.10': {} - '@types/js-levenshtein@1.1.3': {} - '@types/json-schema@7.0.15': {} + '@types/jsonwebtoken@9.0.6': + dependencies: + '@types/node': 20.14.9 + '@types/keyv@3.1.4': dependencies: - '@types/node': 20.14.5 + '@types/node': 20.14.9 '@types/liftoff@2.5.1': dependencies: '@types/fined': 1.1.5 '@types/interpret': 1.1.3 - '@types/node': 20.14.5 + '@types/node': 20.14.9 - '@types/lodash@4.17.5': {} + '@types/lodash@4.17.6': {} + + '@types/mime@1.3.5': {} '@types/minimatch@5.1.2': {} - '@types/ms@0.7.34': {} - - '@types/node@20.14.5': + '@types/node@20.14.9': dependencies: undici-types: 5.26.5 @@ -9795,9 +9476,9 @@ snapshots: '@types/prop-types@15.7.12': {} - '@types/react-dom@18.3.0': - dependencies: - '@types/react': 18.3.3 + '@types/qs@6.9.15': {} + + '@types/range-parser@1.2.7': {} '@types/react-transition-group@4.4.10': dependencies: @@ -9810,15 +9491,22 @@ snapshots: '@types/responselike@1.0.3': dependencies: - '@types/node': 20.14.5 + '@types/node': 20.14.9 - '@types/set-cookie-parser@2.4.9': + '@types/send@0.17.4': dependencies: - '@types/node': 20.14.5 + '@types/mime': 1.3.5 + '@types/node': 20.14.9 + + '@types/serve-static@1.15.7': + dependencies: + '@types/http-errors': 2.0.4 + '@types/node': 20.14.9 + '@types/send': 0.17.4 '@types/through@0.0.33': dependencies: - '@types/node': 20.14.5 + '@types/node': 20.14.9 '@types/triple-beam@1.3.5': {} @@ -9840,25 +9528,25 @@ snapshots: dependencies: '@ucast/core': 1.10.2 - '@uiw/codemirror-extensions-basic-setup@4.22.2(@codemirror/autocomplete@6.16.2(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.1)(@lezer/common@1.2.1))(@codemirror/commands@6.6.0)(@codemirror/language@6.10.2)(@codemirror/lint@6.8.0)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/view@6.28.1)': + '@uiw/codemirror-extensions-basic-setup@4.22.2(@codemirror/autocomplete@6.16.3(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.3)(@lezer/common@1.2.1))(@codemirror/commands@6.6.0)(@codemirror/language@6.10.2)(@codemirror/lint@6.8.1)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/view@6.28.3)': dependencies: - '@codemirror/autocomplete': 6.16.2(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.1)(@lezer/common@1.2.1) + '@codemirror/autocomplete': 6.16.3(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.3)(@lezer/common@1.2.1) '@codemirror/commands': 6.6.0 '@codemirror/language': 6.10.2 - '@codemirror/lint': 6.8.0 + '@codemirror/lint': 6.8.1 '@codemirror/search': 6.5.6 '@codemirror/state': 6.4.1 - '@codemirror/view': 6.28.1 + '@codemirror/view': 6.28.3 - '@uiw/react-codemirror@4.22.2(@babel/runtime@7.24.7)(@codemirror/autocomplete@6.16.2(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.1)(@lezer/common@1.2.1))(@codemirror/language@6.10.2)(@codemirror/lint@6.8.0)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.28.1)(codemirror@6.0.1(@lezer/common@1.2.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@uiw/react-codemirror@4.22.2(@babel/runtime@7.24.7)(@codemirror/autocomplete@6.16.3(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.3)(@lezer/common@1.2.1))(@codemirror/language@6.10.2)(@codemirror/lint@6.8.1)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.28.3)(codemirror@5.65.16)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: '@babel/runtime': 7.24.7 '@codemirror/commands': 6.6.0 '@codemirror/state': 6.4.1 '@codemirror/theme-one-dark': 6.1.2 - '@codemirror/view': 6.28.1 - '@uiw/codemirror-extensions-basic-setup': 4.22.2(@codemirror/autocomplete@6.16.2(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.1)(@lezer/common@1.2.1))(@codemirror/commands@6.6.0)(@codemirror/language@6.10.2)(@codemirror/lint@6.8.0)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/view@6.28.1) - codemirror: 6.0.1(@lezer/common@1.2.1) + '@codemirror/view': 6.28.3 + '@uiw/codemirror-extensions-basic-setup': 4.22.2(@codemirror/autocomplete@6.16.3(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.3)(@lezer/common@1.2.1))(@codemirror/commands@6.6.0)(@codemirror/language@6.10.2)(@codemirror/lint@6.8.1)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/view@6.28.3) + codemirror: 5.65.16 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) transitivePeerDependencies: @@ -9867,10 +9555,10 @@ snapshots: - '@codemirror/lint' - '@codemirror/search' - '@vitejs/plugin-react-swc@3.5.0(@swc/helpers@0.5.11)(vite@5.0.13(@types/node@20.14.5)(terser@5.31.1))': + '@vitejs/plugin-react-swc@3.5.0(@swc/helpers@0.5.11)(vite@5.0.13(@types/node@20.14.9)(terser@5.31.1))': dependencies: - '@swc/core': 1.6.1(@swc/helpers@0.5.11) - vite: 5.0.13(@types/node@20.14.5)(terser@5.31.1) + '@swc/core': 1.6.6(@swc/helpers@0.5.11) + vite: 5.0.13(@types/node@20.14.9)(terser@5.31.1) transitivePeerDependencies: - '@swc/helpers' @@ -9950,15 +9638,10 @@ snapshots: '@webassemblyjs/ast': 1.12.1 '@xtuc/long': 4.2.2 - '@xmldom/xmldom@0.8.10': {} - '@xtuc/ieee754@1.2.0': {} '@xtuc/long@4.2.2': {} - '@zxing/text-encoding@0.9.0': - optional: true - abbrev@1.1.1: {} accepts@1.3.8: @@ -10057,8 +9740,6 @@ snapshots: dependencies: color-convert: 2.0.1 - ansi-styles@5.2.0: {} - any-promise@1.3.0: {} anymatch@3.1.3: @@ -10083,10 +9764,6 @@ snapshots: dependencies: tslib: 2.6.3 - aria-query@5.3.0: - dependencies: - dequal: 2.0.3 - arr-diff@4.0.0: {} arr-flatten@1.1.0: {} @@ -10116,29 +9793,6 @@ snapshots: atob@2.1.2: {} - available-typed-arrays@1.0.7: - dependencies: - possible-typed-array-names: 1.0.0 - - aws-sdk@2.1644.0: - dependencies: - buffer: 4.9.2 - events: 1.1.1 - ieee754: 1.1.13 - jmespath: 0.16.0 - querystring: 0.2.0 - sax: 1.2.1 - url: 0.10.3 - util: 0.12.5 - uuid: 8.0.0 - xml2js: 0.6.2 - - axios@0.26.1: - dependencies: - follow-redirects: 1.15.6(debug@4.3.4) - transitivePeerDependencies: - - debug - axios@1.6.0(debug@4.3.4): dependencies: follow-redirects: 1.15.6(debug@4.3.4) @@ -10147,14 +9801,6 @@ snapshots: transitivePeerDependencies: - debug - axios@1.7.2: - dependencies: - follow-redirects: 1.15.6(debug@4.3.4) - form-data: 4.0.0 - proxy-from-env: 1.1.0 - transitivePeerDependencies: - - debug - b4a@1.6.6: {} babel-plugin-macros@3.1.0: @@ -10214,21 +9860,12 @@ snapshots: bcryptjs@2.4.3: {} - better-sqlite3@8.0.1: - dependencies: - bindings: 1.5.0 - prebuild-install: 7.1.2 - big-integer@1.6.52: {} big.js@5.2.2: {} binary-extensions@2.3.0: {} - bindings@1.5.0: - dependencies: - file-uri-to-path: 1.0.0 - bl@4.1.0: dependencies: buffer: 5.7.1 @@ -10303,20 +9940,16 @@ snapshots: browserslist@4.23.1: dependencies: - caniuse-lite: 1.0.30001636 - electron-to-chromium: 1.4.805 + caniuse-lite: 1.0.30001639 + electron-to-chromium: 1.4.816 node-releases: 2.0.14 - update-browserslist-db: 1.0.16(browserslist@4.23.1) + update-browserslist-db: 1.1.0(browserslist@4.23.1) buffer-equal-constant-time@1.0.1: {} buffer-from@1.1.2: {} - buffer@4.9.2: - dependencies: - base64-js: 1.5.1 - ieee754: 1.1.13 - isarray: 1.0.0 + buffer-writer@2.0.0: {} buffer@5.7.1: dependencies: @@ -10393,7 +10026,7 @@ snapshots: camelize@1.0.1: {} - caniuse-lite@1.0.30001636: {} + caniuse-lite@1.0.30001639: {} canvas@2.11.2: dependencies: @@ -10418,11 +10051,6 @@ snapshots: escape-string-regexp: 1.0.5 supports-color: 5.5.0 - chalk@4.1.1: - dependencies: - ansi-styles: 4.3.0 - supports-color: 7.2.0 - chalk@4.1.2: dependencies: ansi-styles: 4.3.0 @@ -10506,6 +10134,10 @@ snapshots: dependencies: restore-cursor: 3.1.0 + cli-progress@3.12.0: + dependencies: + string-width: 4.2.3 + cli-spinners@2.9.2: {} cli-table3@0.6.2: @@ -10534,17 +10166,6 @@ snapshots: clone@1.0.4: {} - cloudinary-core@2.13.1(lodash@4.17.21): - dependencies: - lodash: 4.17.21 - - cloudinary@1.41.3: - dependencies: - cloudinary-core: 2.13.1(lodash@4.17.21) - core-js: 3.37.1 - lodash: 4.17.21 - q: 1.5.1 - co-body@5.2.0: dependencies: inflation: 2.1.0 @@ -10564,18 +10185,6 @@ snapshots: codemirror@5.65.16: {} - codemirror@6.0.1(@lezer/common@1.2.1): - dependencies: - '@codemirror/autocomplete': 6.16.2(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.1)(@lezer/common@1.2.1) - '@codemirror/commands': 6.6.0 - '@codemirror/language': 6.10.2 - '@codemirror/lint': 6.8.0 - '@codemirror/search': 6.5.6 - '@codemirror/state': 6.4.1 - '@codemirror/view': 6.28.1 - transitivePeerDependencies: - - '@lezer/common' - collection-visit@1.0.0: dependencies: map-visit: 1.0.0 @@ -10701,11 +10310,6 @@ snapshots: depd: 2.0.0 keygrip: 1.1.0 - cookies@0.9.1: - dependencies: - depd: 2.0.0 - keygrip: 1.1.0 - copy-descriptor@0.1.1: {} copy-to@2.0.1: {} @@ -10722,8 +10326,6 @@ snapshots: core-js-pure@3.37.1: {} - core-js@3.37.1: {} - core-util-is@1.0.3: {} cosmiconfig@7.1.0: @@ -10770,18 +10372,18 @@ snapshots: css-color-keywords@1.0.0: {} - css-loader@6.11.0(webpack@5.92.0(esbuild@0.19.11)): + css-loader@6.11.0(webpack@5.92.1(esbuild@0.19.11)): dependencies: - icss-utils: 5.1.0(postcss@8.4.38) - postcss: 8.4.38 - postcss-modules-extract-imports: 3.1.0(postcss@8.4.38) - postcss-modules-local-by-default: 4.0.5(postcss@8.4.38) - postcss-modules-scope: 3.2.0(postcss@8.4.38) - postcss-modules-values: 4.0.0(postcss@8.4.38) + icss-utils: 5.1.0(postcss@8.4.39) + postcss: 8.4.39 + postcss-modules-extract-imports: 3.1.0(postcss@8.4.39) + postcss-modules-local-by-default: 4.0.5(postcss@8.4.39) + postcss-modules-scope: 3.2.0(postcss@8.4.39) + postcss-modules-values: 4.0.0(postcss@8.4.39) postcss-value-parser: 4.2.0 - semver: 7.6.2 + semver: 7.5.4 optionalDependencies: - webpack: 5.92.0(esbuild@0.19.11) + webpack: 5.92.1(esbuild@0.19.11) css-select@4.3.0: dependencies: @@ -10811,8 +10413,6 @@ snapshots: dependencies: '@babel/runtime': 7.24.7 - date-fns@3.6.0: {} - debounce@1.2.1: {} debug@2.6.9: @@ -10923,8 +10523,6 @@ snapshots: depd@2.0.0: {} - dequal@2.0.3: {} - destroy@1.2.0: {} detect-file@1.0.0: {} @@ -10957,8 +10555,6 @@ snapshots: '@react-dnd/invariant': 4.0.2 redux: 4.2.1 - dom-accessibility-api@0.5.16: {} - dom-converter@0.2.0: dependencies: utila: 0.4.0 @@ -11025,7 +10621,7 @@ snapshots: ee-first@1.1.1: {} - electron-to-chromium@1.4.805: {} + electron-to-chromium@1.4.816: {} elliptic@6.5.5: dependencies: @@ -11076,16 +10672,16 @@ snapshots: es-errors@1.3.0: {} - es-module-lexer@1.5.3: {} + es-module-lexer@1.5.4: {} - esbuild-loader@2.21.0(webpack@5.92.0(esbuild@0.19.11)): + esbuild-loader@2.21.0(webpack@5.92.1(esbuild@0.19.11)): dependencies: esbuild: 0.16.17 joycon: 3.1.1 json5: 2.2.3 loader-utils: 2.0.4 tapable: 2.2.1 - webpack: 5.92.0(esbuild@0.19.11) + webpack: 5.92.1(esbuild@0.19.11) webpack-sources: 1.4.3 esbuild-register@3.5.0(esbuild@0.19.11): @@ -11175,10 +10771,10 @@ snapshots: eventemitter3@4.0.7: {} - events@1.1.1: {} - events@3.3.0: {} + eventsource@2.0.2: {} + execa@5.1.1: dependencies: cross-spawn: 7.0.3 @@ -11265,6 +10861,8 @@ snapshots: fast-json-stable-stringify@2.1.0: {} + fast-safe-stringify@2.1.1: {} + fast-xml-parser@4.2.5: dependencies: strnum: 1.0.5 @@ -11279,8 +10877,6 @@ snapshots: dependencies: escape-string-regexp: 1.0.5 - file-uri-to-path@1.0.0: {} - fill-range@4.0.0: dependencies: extend-shallow: 2.0.1 @@ -11341,17 +10937,13 @@ snapshots: optionalDependencies: debug: 4.3.4(supports-color@5.5.0) - for-each@0.3.3: - dependencies: - is-callable: 1.2.7 - for-in@1.0.2: {} for-own@1.0.0: dependencies: for-in: 1.0.2 - fork-ts-checker-webpack-plugin@9.0.2(typescript@5.2.2)(webpack@5.92.0(esbuild@0.19.11)): + fork-ts-checker-webpack-plugin@9.0.2(typescript@5.2.2)(webpack@5.92.1(esbuild@0.19.11)): dependencies: '@babel/code-frame': 7.24.7 chalk: 4.1.2 @@ -11363,10 +10955,10 @@ snapshots: minimatch: 3.1.2 node-abort-controller: 3.1.1 schema-utils: 3.3.0 - semver: 7.6.2 + semver: 7.5.4 tapable: 2.2.1 typescript: 5.2.2 - webpack: 5.92.0(esbuild@0.19.11) + webpack: 5.92.1(esbuild@0.19.11) form-data@4.0.0: dependencies: @@ -11376,17 +10968,6 @@ snapshots: formidable@1.2.6: {} - formik@2.2.9(react@18.3.1): - dependencies: - deepmerge: 2.2.1 - hoist-non-react-statics: 3.3.2 - lodash: 4.17.21 - lodash-es: 4.17.21 - react: 18.3.1 - react-fast-compare: 2.0.4 - tiny-warning: 1.0.3 - tslib: 1.14.1 - formik@2.4.0(react@18.3.1): dependencies: deepmerge: 2.2.1 @@ -11406,11 +10987,6 @@ snapshots: fresh@0.5.2: {} - from2@2.3.0: - dependencies: - inherits: 2.0.4 - readable-stream: 2.3.8 - fs-constants@1.0.0: {} fs-extra@10.0.0: @@ -11449,8 +11025,6 @@ snapshots: function-bind@1.1.2: {} - fuzzy-search@3.2.1: {} - fuzzysort@2.0.4: {} gauge@3.0.2: @@ -11477,7 +11051,7 @@ snapshots: has-symbols: 1.0.3 hasown: 2.0.2 - get-it@8.6.1(debug@4.3.4): + get-it@8.6.2(debug@4.3.4): dependencies: decompress-response: 7.0.0 follow-redirects: 1.15.6(debug@4.3.4) @@ -11489,10 +11063,10 @@ snapshots: get-latest-version@5.1.0(debug@4.3.4): dependencies: - get-it: 8.6.1(debug@4.3.4) + get-it: 8.6.2(debug@4.3.4) registry-auth-token: 5.0.2 registry-url: 5.1.0 - semver: 7.6.2 + semver: 7.5.4 transitivePeerDependencies: - debug @@ -11610,14 +11184,9 @@ snapshots: grant: 5.4.22 koa: 2.13.4 - grant-koa@5.4.8(koa@2.15.3): - dependencies: - grant: 5.4.22 - koa: 2.15.3 - grant@5.4.22: dependencies: - qs: 6.12.1 + qs: 6.12.2 request-compose: 2.1.6 request-oauth: 1.0.1 optionalDependencies: @@ -11626,8 +11195,6 @@ snapshots: jwk-to-pem: 2.0.5 jws: 4.0.0 - graphql@16.8.2: {} - gzip-size@6.0.0: dependencies: duplexer: 0.1.2 @@ -11698,10 +11265,6 @@ snapshots: no-case: 2.3.2 upper-case: 1.1.3 - headers-polyfill@3.2.5: {} - - headers-polyfill@3.3.0: {} - helmet@6.2.0: {} highlight.js@10.7.3: {} @@ -11745,7 +11308,7 @@ snapshots: relateurl: 0.2.7 terser: 5.31.1 - html-webpack-plugin@5.6.0(webpack@5.92.0(esbuild@0.19.11)): + html-webpack-plugin@5.6.0(webpack@5.92.1(esbuild@0.19.11)): dependencies: '@types/html-minifier-terser': 6.1.0 html-minifier-terser: 6.1.0 @@ -11753,7 +11316,7 @@ snapshots: pretty-error: 4.0.0 tapable: 2.2.1 optionalDependencies: - webpack: 5.92.0(esbuild@0.19.11) + webpack: 5.92.1(esbuild@0.19.11) htmlparser2@6.1.0: dependencies: @@ -11823,11 +11386,9 @@ snapshots: dependencies: safer-buffer: 2.1.2 - icss-utils@5.1.0(postcss@8.4.38): + icss-utils@5.1.0(postcss@8.4.39): dependencies: - postcss: 8.4.38 - - ieee754@1.1.13: {} + postcss: 8.4.39 ieee754@1.2.1: {} @@ -11905,35 +11466,10 @@ snapshots: through: 2.3.8 wrap-ansi: 7.0.0 - inquirer@8.2.6: - dependencies: - ansi-escapes: 4.3.2 - chalk: 4.1.1 - cli-cursor: 3.1.0 - cli-width: 3.0.0 - external-editor: 3.1.0 - figures: 3.2.0 - lodash: 4.17.21 - mute-stream: 0.0.8 - ora: 5.4.1 - run-async: 2.4.1 - rxjs: 7.8.1 - string-width: 4.2.3 - strip-ansi: 6.0.1 - through: 2.3.8 - wrap-ansi: 6.2.0 - interpret@1.4.0: {} interpret@2.2.0: {} - intl-messageformat@10.3.3: - dependencies: - '@formatjs/ecma402-abstract': 1.14.3 - '@formatjs/fast-memoize': 2.0.1 - '@formatjs/icu-messageformat-parser': 2.3.0 - tslib: 2.6.3 - intl-messageformat@10.3.4: dependencies: '@formatjs/ecma402-abstract': 1.14.3 @@ -11941,11 +11477,6 @@ snapshots: '@formatjs/icu-messageformat-parser': 2.3.1 tslib: 2.6.3 - into-stream@5.1.1: - dependencies: - from2: 2.3.0 - p-is-promise: 3.0.0 - invariant@2.2.4: dependencies: loose-envify: 1.4.0 @@ -11959,11 +11490,6 @@ snapshots: dependencies: hasown: 2.0.2 - is-arguments@1.1.1: - dependencies: - call-bind: 1.0.7 - has-tostringtag: 1.0.2 - is-arrayish@0.2.1: {} is-arrayish@0.3.2: {} @@ -11974,11 +11500,9 @@ snapshots: is-buffer@1.1.6: {} - is-callable@1.2.7: {} - is-class-hotfix@0.0.6: {} - is-core-module@2.13.1: + is-core-module@2.14.0: dependencies: hasown: 2.0.2 @@ -12039,8 +11563,6 @@ snapshots: call-bind: 1.0.7 define-properties: 1.2.1 - is-node-process@1.2.0: {} - is-number@3.0.0: dependencies: kind-of: 3.2.2 @@ -12081,10 +11603,6 @@ snapshots: is-class-hotfix: 0.0.6 isstream: 0.1.2 - is-typed-array@1.1.13: - dependencies: - which-typed-array: 1.1.15 - is-typedarray@1.0.0: {} is-unc-path@1.0.0: @@ -12121,20 +11639,18 @@ snapshots: jest-worker@27.5.1: dependencies: - '@types/node': 20.14.5 + '@types/node': 20.14.9 merge-stream: 2.0.0 supports-color: 8.1.1 jju@1.4.0: {} - jmespath@0.16.0: {} + jose@4.15.7: {} joycon@3.1.1: {} js-cookie@2.2.1: {} - js-levenshtein@1.1.6: {} - js-sha3@0.8.0: {} js-tokens@4.0.0: {} @@ -12191,6 +11707,17 @@ snapshots: elliptic: 6.5.5 safe-buffer: 5.2.1 + jwks-rsa@3.1.0: + dependencies: + '@types/express': 4.17.21 + '@types/jsonwebtoken': 9.0.6 + debug: 4.3.4(supports-color@5.5.0) + jose: 4.15.7 + limiter: 1.1.5 + lru-memoizer: 2.3.0 + transitivePeerDependencies: + - supports-color + jws@3.2.2: dependencies: jwa: 1.4.1 @@ -12222,7 +11749,7 @@ snapshots: kleur@3.0.3: {} - knex@2.5.0(better-sqlite3@8.0.1)(pg@8.12.0): + knex@2.5.0(pg@8.8.0): dependencies: colorette: 2.0.19 commander: 10.0.1 @@ -12239,8 +11766,7 @@ snapshots: tarn: 3.0.2 tildify: 2.0.0 optionalDependencies: - better-sqlite3: 8.0.1 - pg: 8.12.0 + pg: 8.8.0 transitivePeerDependencies: - supports-color @@ -12330,35 +11856,7 @@ snapshots: content-disposition: 0.5.4 content-type: 1.0.5 cookies: 0.8.0 - debug: 4.3.5(supports-color@5.5.0) - delegates: 1.0.0 - depd: 2.0.0 - destroy: 1.2.0 - encodeurl: 1.0.2 - escape-html: 1.0.3 - fresh: 0.5.2 - http-assert: 1.5.0 - http-errors: 1.8.1 - is-generator-function: 1.0.10 - koa-compose: 4.1.0 - koa-convert: 2.0.0 - on-finished: 2.4.1 - only: 0.0.2 - parseurl: 1.3.3 - statuses: 1.5.0 - type-is: 1.6.18 - vary: 1.1.2 - transitivePeerDependencies: - - supports-color - - koa@2.15.3: - dependencies: - accepts: 1.3.8 - cache-content-type: 1.0.1 - content-disposition: 0.5.4 - content-type: 1.0.5 - cookies: 0.9.1 - debug: 4.3.5(supports-color@5.5.0) + debug: 4.3.4(supports-color@5.5.0) delegates: 1.0.0 depd: 2.0.0 destroy: 1.2.0 @@ -12410,6 +11908,8 @@ snapshots: transitivePeerDependencies: - supports-color + limiter@1.1.5: {} + lines-and-columns@1.2.4: {} linkify-it@3.0.3: @@ -12439,6 +11939,8 @@ snapshots: lodash-es@4.17.21: {} + lodash.clonedeep@4.5.0: {} + lodash.deburr@4.1.0: {} lodash.get@4.4.2: {} @@ -12491,12 +11993,15 @@ snapshots: dependencies: yallist: 4.0.0 + lru-memoizer@2.3.0: + dependencies: + lodash.clonedeep: 4.5.0 + lru-cache: 6.0.0 + lru_map@0.3.3: {} luxon@1.28.1: {} - lz-string@1.5.0: {} - mailcomposer@3.12.0: dependencies: buildmail: 3.10.0 @@ -12542,11 +12047,6 @@ snapshots: mdurl: 1.0.1 uc.micro: 1.0.6 - match-sorter@4.2.1: - dependencies: - '@babel/runtime': 7.24.7 - remove-accents: 0.4.2 - match-sorter@6.3.4: dependencies: '@babel/runtime': 7.24.7 @@ -12613,10 +12113,10 @@ snapshots: mimic-response@3.1.0: {} - mini-css-extract-plugin@2.7.7(webpack@5.92.0(esbuild@0.19.11)): + mini-css-extract-plugin@2.7.7(webpack@5.92.1(esbuild@0.19.11)): dependencies: schema-utils: 4.2.0 - webpack: 5.92.0(esbuild@0.19.11) + webpack: 5.92.1(esbuild@0.19.11) minimalistic-assert@1.0.1: {} @@ -12630,6 +12130,10 @@ snapshots: dependencies: brace-expansion: 2.0.1 + minimatch@9.0.3: + dependencies: + brace-expansion: 2.0.1 + minimist@1.2.8: {} minipass@3.3.6: @@ -12638,8 +12142,6 @@ snapshots: minipass@4.2.8: {} - minipass@5.0.0: {} - minizlib@2.1.2: dependencies: minipass: 3.3.6 @@ -12666,33 +12168,6 @@ snapshots: ms@2.1.3: {} - msw@1.0.1(typescript@4.9.5): - dependencies: - '@mswjs/cookies': 0.2.2 - '@mswjs/interceptors': 0.17.10 - '@open-draft/until': 1.0.3 - '@types/cookie': 0.4.1 - '@types/js-levenshtein': 1.1.3 - chalk: 4.1.1 - chokidar: 3.6.0 - cookie: 0.4.2 - graphql: 16.8.2 - headers-polyfill: 3.3.0 - inquirer: 8.2.6 - is-node-process: 1.2.0 - js-levenshtein: 1.1.6 - node-fetch: 2.7.0 - outvariant: 1.4.2 - path-to-regexp: 6.2.2 - strict-event-emitter: 0.4.6 - type-fest: 2.19.0 - yargs: 17.7.2 - optionalDependencies: - typescript: 4.9.5 - transitivePeerDependencies: - - encoding - - supports-color - multistream@4.1.0: dependencies: once: 1.4.0 @@ -12749,7 +12224,7 @@ snapshots: node-abi@3.65.0: dependencies: - semver: 7.6.2 + semver: 7.5.4 node-abort-controller@3.1.1: {} @@ -12796,7 +12271,7 @@ snapshots: ignore-by-default: 1.0.1 minimatch: 3.1.2 pstree.remy: 1.1.8 - semver: 7.6.2 + semver: 7.5.4 simple-update-notifier: 2.0.0 supports-color: 5.5.0 touch: 3.1.1 @@ -12864,7 +12339,7 @@ snapshots: define-property: 0.2.5 kind-of: 3.2.2 - object-inspect@1.13.1: {} + object-inspect@1.13.2: {} object-keys@1.1.1: {} @@ -12952,18 +12427,18 @@ snapshots: strip-ansi: 6.0.1 wcwidth: 1.0.1 + os-paths@7.4.0: + optionalDependencies: + fsevents: 2.3.3 + os-tmpdir@1.0.2: {} outdent@0.8.0: {} - outvariant@1.4.2: {} - p-cancelable@2.1.1: {} p-finally@1.0.0: {} - p-is-promise@3.0.0: {} - p-limit@2.3.0: dependencies: p-try: 2.2.0 @@ -13008,7 +12483,9 @@ snapshots: got: 11.8.6 registry-auth-token: 4.2.2 registry-url: 5.1.0 - semver: 7.6.2 + semver: 7.5.4 + + packet-reader@1.0.0: {} param-case@2.1.1: dependencies: @@ -13106,18 +12583,15 @@ snapshots: pause@0.0.1: {} - pg-cloudflare@1.1.1: - optional: true - pg-connection-string@2.6.1: {} pg-connection-string@2.6.4: {} pg-int8@1.0.1: {} - pg-pool@3.6.2(pg@8.12.0): + pg-pool@3.6.2(pg@8.8.0): dependencies: - pg: 8.12.0 + pg: 8.8.0 pg-protocol@1.6.1: {} @@ -13129,15 +12603,15 @@ snapshots: postgres-date: 1.0.7 postgres-interval: 1.2.0 - pg@8.12.0: + pg@8.8.0: dependencies: + buffer-writer: 2.0.0 + packet-reader: 1.0.0 pg-connection-string: 2.6.4 - pg-pool: 3.6.2(pg@8.12.0) + pg-pool: 3.6.2(pg@8.8.0) pg-protocol: 1.6.1 pg-types: 2.2.0 pgpass: 1.0.5 - optionalDependencies: - pg-cloudflare: 1.1.1 pgpass@1.0.5: dependencies: @@ -13170,28 +12644,26 @@ snapshots: posix-character-classes@0.1.1: {} - possible-typed-array-names@1.0.0: {} - - postcss-modules-extract-imports@3.1.0(postcss@8.4.38): + postcss-modules-extract-imports@3.1.0(postcss@8.4.39): dependencies: - postcss: 8.4.38 + postcss: 8.4.39 - postcss-modules-local-by-default@4.0.5(postcss@8.4.38): + postcss-modules-local-by-default@4.0.5(postcss@8.4.39): dependencies: - icss-utils: 5.1.0(postcss@8.4.38) - postcss: 8.4.38 + icss-utils: 5.1.0(postcss@8.4.39) + postcss: 8.4.39 postcss-selector-parser: 6.1.0 postcss-value-parser: 4.2.0 - postcss-modules-scope@3.2.0(postcss@8.4.38): + postcss-modules-scope@3.2.0(postcss@8.4.39): dependencies: - postcss: 8.4.38 + postcss: 8.4.39 postcss-selector-parser: 6.1.0 - postcss-modules-values@4.0.0(postcss@8.4.38): + postcss-modules-values@4.0.0(postcss@8.4.39): dependencies: - icss-utils: 5.1.0(postcss@8.4.38) - postcss: 8.4.38 + icss-utils: 5.1.0(postcss@8.4.39) + postcss: 8.4.39 postcss-selector-parser@6.1.0: dependencies: @@ -13200,7 +12672,7 @@ snapshots: postcss-value-parser@4.2.0: {} - postcss@8.4.38: + postcss@8.4.39: dependencies: nanoid: 3.3.7 picocolors: 1.0.1 @@ -13245,12 +12717,6 @@ snapshots: lodash: 4.17.21 renderkid: 3.0.0 - pretty-format@27.5.1: - dependencies: - ansi-regex: 5.0.1 - ansi-styles: 5.2.0 - react-is: 17.0.2 - process-nextick-args@2.0.1: {} progress-stream@2.0.0: @@ -13284,30 +12750,24 @@ snapshots: end-of-stream: 1.4.4 once: 1.4.0 - punycode@1.3.2: {} - punycode@2.3.1: {} purest@4.0.2: dependencies: '@simov/deep-extend': 1.0.0 - qs: 6.12.1 + qs: 6.12.2 request-compose: 2.1.6 request-multipart: 1.0.0 request-oauth: 1.0.1 - q@1.5.1: {} - qs@6.11.1: dependencies: side-channel: 1.0.6 - qs@6.12.1: + qs@6.12.2: dependencies: side-channel: 1.0.6 - querystring@0.2.0: {} - queue-microtask@1.2.3: {} queue-tick@1.0.1: {} @@ -13338,7 +12798,7 @@ snapshots: dependencies: dnd-core: 16.0.1 - react-dnd@16.0.1(@types/hoist-non-react-statics@3.3.5)(@types/node@20.14.5)(react@18.3.1): + react-dnd@16.0.1(@types/hoist-non-react-statics@3.3.5)(@types/node@20.14.9)(@types/react@18.3.3)(react@18.3.1): dependencies: '@react-dnd/invariant': 4.0.2 '@react-dnd/shallowequal': 4.0.2 @@ -13348,7 +12808,8 @@ snapshots: react: 18.3.1 optionalDependencies: '@types/hoist-non-react-statics': 3.3.5 - '@types/node': 20.14.5 + '@types/node': 20.14.9 + '@types/react': 18.3.3 react-dom@18.3.1(react@18.3.1): dependencies: @@ -13373,38 +12834,6 @@ snapshots: react-fast-compare: 3.2.2 react-side-effect: 2.1.2(react@18.3.1) - react-intl@6.3.2(react@18.3.1)(typescript@4.9.5): - dependencies: - '@formatjs/ecma402-abstract': 1.14.3 - '@formatjs/icu-messageformat-parser': 2.3.0 - '@formatjs/intl': 2.6.9(typescript@4.9.5) - '@formatjs/intl-displaynames': 6.2.6 - '@formatjs/intl-listformat': 7.1.9 - '@types/hoist-non-react-statics': 3.3.5 - '@types/react': 18.3.3 - hoist-non-react-statics: 3.3.2 - intl-messageformat: 10.3.3 - react: 18.3.1 - tslib: 2.6.3 - optionalDependencies: - typescript: 4.9.5 - - react-intl@6.4.1(react@18.3.1)(typescript@4.9.5): - dependencies: - '@formatjs/ecma402-abstract': 1.14.3 - '@formatjs/icu-messageformat-parser': 2.3.1 - '@formatjs/intl': 2.7.1(typescript@4.9.5) - '@formatjs/intl-displaynames': 6.3.1 - '@formatjs/intl-listformat': 7.2.1 - '@types/hoist-non-react-statics': 3.3.5 - '@types/react': 18.3.3 - hoist-non-react-statics: 3.3.2 - intl-messageformat: 10.3.4 - react: 18.3.1 - tslib: 2.6.3 - optionalDependencies: - typescript: 4.9.5 - react-intl@6.4.1(react@18.3.1)(typescript@5.2.2): dependencies: '@formatjs/ecma402-abstract': 1.14.3 @@ -13423,19 +12852,8 @@ snapshots: react-is@16.13.1: {} - react-is@17.0.2: {} - react-is@18.3.1: {} - react-query@3.24.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1): - dependencies: - '@babel/runtime': 7.24.7 - broadcast-channel: 3.7.0 - match-sorter: 6.3.4 - react: 18.3.1 - optionalDependencies: - react-dom: 18.3.1(react@18.3.1) - react-query@3.39.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1): dependencies: '@babel/runtime': 7.24.7 @@ -13445,7 +12863,7 @@ snapshots: optionalDependencies: react-dom: 18.3.1(react@18.3.1) - react-redux@8.0.5(@types/react-dom@18.3.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(redux@4.2.1): + react-redux@8.1.1(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(redux@4.2.1): dependencies: '@babel/runtime': 7.24.7 '@types/hoist-non-react-statics': 3.3.5 @@ -13455,49 +12873,41 @@ snapshots: react-is: 18.3.1 use-sync-external-store: 1.2.2(react@18.3.1) optionalDependencies: - '@types/react-dom': 18.3.0 - react-dom: 18.3.1(react@18.3.1) - redux: 4.2.1 - - react-redux@8.1.1(@types/react-dom@18.3.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(redux@4.2.1): - dependencies: - '@babel/runtime': 7.24.7 - '@types/hoist-non-react-statics': 3.3.5 - '@types/use-sync-external-store': 0.0.3 - hoist-non-react-statics: 3.3.2 - react: 18.3.1 - react-is: 18.3.1 - use-sync-external-store: 1.2.2(react@18.3.1) - optionalDependencies: - '@types/react-dom': 18.3.0 + '@types/react': 18.3.3 react-dom: 18.3.1(react@18.3.1) redux: 4.2.1 react-refresh@0.14.0: {} - react-remove-scroll-bar@2.3.6(react@18.3.1): + react-remove-scroll-bar@2.3.6(@types/react@18.3.3)(react@18.3.1): dependencies: react: 18.3.1 - react-style-singleton: 2.2.1(react@18.3.1) + react-style-singleton: 2.2.1(@types/react@18.3.3)(react@18.3.1) tslib: 2.6.3 + optionalDependencies: + '@types/react': 18.3.3 - react-remove-scroll@2.5.10(react@18.3.1): + react-remove-scroll@2.5.10(@types/react@18.3.3)(react@18.3.1): dependencies: react: 18.3.1 - react-remove-scroll-bar: 2.3.6(react@18.3.1) - react-style-singleton: 2.2.1(react@18.3.1) + react-remove-scroll-bar: 2.3.6(@types/react@18.3.3)(react@18.3.1) + react-style-singleton: 2.2.1(@types/react@18.3.3)(react@18.3.1) tslib: 2.6.3 - use-callback-ref: 1.3.2(react@18.3.1) - use-sidecar: 1.1.2(react@18.3.1) + use-callback-ref: 1.3.2(@types/react@18.3.3)(react@18.3.1) + use-sidecar: 1.1.2(@types/react@18.3.3)(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.3 - react-remove-scroll@2.5.5(react@18.3.1): + react-remove-scroll@2.5.7(@types/react@18.3.3)(react@18.3.1): dependencies: react: 18.3.1 - react-remove-scroll-bar: 2.3.6(react@18.3.1) - react-style-singleton: 2.2.1(react@18.3.1) + react-remove-scroll-bar: 2.3.6(@types/react@18.3.3)(react@18.3.1) + react-style-singleton: 2.2.1(@types/react@18.3.3)(react@18.3.1) tslib: 2.6.3 - use-callback-ref: 1.3.2(react@18.3.1) - use-sidecar: 1.1.2(react@18.3.1) + use-callback-ref: 1.3.2(@types/react@18.3.3)(react@18.3.1) + use-sidecar: 1.1.2(@types/react@18.3.3)(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.3 react-router-dom@5.3.4(react@18.3.1): dependencies: @@ -13523,46 +12933,35 @@ snapshots: tiny-invariant: 1.3.3 tiny-warning: 1.0.3 - react-select@5.7.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + react-select@5.7.0(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1): dependencies: '@babel/runtime': 7.24.7 '@emotion/cache': 11.11.0 - '@emotion/react': 11.11.4(react@18.3.1) - '@floating-ui/dom': 1.6.5 + '@emotion/react': 11.11.4(@types/react@18.3.3)(react@18.3.1) + '@floating-ui/dom': 1.6.7 '@types/react-transition-group': 4.4.10 memoize-one: 6.0.0 prop-types: 15.8.1 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) react-transition-group: 4.4.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - use-isomorphic-layout-effect: 1.1.2(react@18.3.1) + use-isomorphic-layout-effect: 1.1.2(@types/react@18.3.3)(react@18.3.1) transitivePeerDependencies: - '@types/react' - supports-color - react-shallow-renderer@16.15.0(react@18.3.1): - dependencies: - object-assign: 4.1.1 - react: 18.3.1 - react-is: 18.3.1 - react-side-effect@2.1.2(react@18.3.1): dependencies: react: 18.3.1 - react-style-singleton@2.2.1(react@18.3.1): + react-style-singleton@2.2.1(@types/react@18.3.3)(react@18.3.1): dependencies: get-nonce: 1.0.1 invariant: 2.2.4 react: 18.3.1 tslib: 2.6.3 - - react-test-renderer@18.3.1(react@18.3.1): - dependencies: - react: 18.3.1 - react-is: 18.3.1 - react-shallow-renderer: 16.15.0(react@18.3.1) - scheduler: 0.23.2 + optionalDependencies: + '@types/react': 18.3.3 react-transition-group@4.4.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1): dependencies: @@ -13661,8 +13060,6 @@ snapshots: relateurl@0.2.7: {} - remove-accents@0.4.2: {} - remove-accents@0.5.0: {} renderkid@3.0.0: @@ -13692,7 +13089,7 @@ snapshots: request-oauth@1.0.1: dependencies: oauth-sign: 0.9.0 - qs: 6.12.1 + qs: 6.12.2 uuid: 8.3.2 require-directory@2.1.1: {} @@ -13727,7 +13124,7 @@ snapshots: resolve@1.22.8: dependencies: - is-core-module: 2.13.1 + is-core-module: 2.14.0 path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 @@ -13816,9 +13213,7 @@ snapshots: htmlparser2: 8.0.2 is-plain-object: 5.0.0 parse-srcset: 1.0.2 - postcss: 8.4.38 - - sax@1.2.1: {} + postcss: 8.4.39 scheduler@0.23.2: dependencies: @@ -13867,8 +13262,6 @@ snapshots: set-blocking@2.0.0: {} - set-cookie-parser@2.6.0: {} - set-function-length@1.2.2: dependencies: define-data-property: 1.1.4 @@ -13897,7 +13290,7 @@ snapshots: detect-libc: 2.0.3 node-addon-api: 6.1.0 prebuild-install: 7.1.2 - semver: 7.6.2 + semver: 7.5.4 simple-get: 4.0.1 tar-fs: 3.0.6 tunnel-agent: 0.6.0 @@ -13915,7 +13308,7 @@ snapshots: call-bind: 1.0.7 es-errors: 1.3.0 get-intrinsic: 1.2.4 - object-inspect: 1.13.1 + object-inspect: 1.13.2 sift@16.0.1: {} @@ -13941,7 +13334,7 @@ snapshots: simple-update-notifier@2.0.0: dependencies: - semver: 7.6.2 + semver: 7.5.4 sirv@2.0.4: dependencies: @@ -13964,7 +13357,7 @@ snapshots: dependencies: '@juggle/resize-observer': 3.4.0 '@types/is-hotkey': 0.1.10 - '@types/lodash': 4.17.5 + '@types/lodash': 4.17.6 direction: 1.0.4 is-hotkey: 0.1.8 is-plain-object: 5.0.0 @@ -14086,13 +13479,13 @@ snapshots: statuses@2.0.1: {} - strapi-plugin-fuzzy-search@2.2.1(@strapi/strapi@4.24.5(@babel/runtime@7.24.7)(@codemirror/autocomplete@6.16.2(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.1)(@lezer/common@1.2.1))(@codemirror/language@6.10.2)(@codemirror/lint@6.8.0)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.28.1)(@swc/helpers@0.5.11)(@types/hoist-non-react-statics@3.3.5)(@types/node@20.14.5)(@types/react-dom@18.3.0)(better-sqlite3@8.0.1)(codemirror@6.0.1(@lezer/common@1.2.1))(pg@8.12.0)(react-dom@18.3.1(react@18.3.1))(react-router-dom@5.3.4(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1))(terser@5.31.1)(type-fest@2.19.0))(@strapi/utils@4.24.5)(yup@0.32.11): + strapi-plugin-fuzzy-search@2.2.1(@strapi/strapi@4.25.1(@babel/runtime@7.24.7)(@codemirror/autocomplete@6.16.3(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.3)(@lezer/common@1.2.1))(@codemirror/language@6.10.2)(@codemirror/lint@6.8.1)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.28.3)(@swc/helpers@0.5.11)(@types/hoist-non-react-statics@3.3.5)(@types/node@20.14.9)(@types/react@18.3.3)(codemirror@5.65.16)(pg@8.8.0)(react-dom@18.3.1(react@18.3.1))(react-router-dom@5.3.4(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1))(terser@5.31.1)(type-fest@2.19.0))(@strapi/utils@4.25.1)(yup@0.32.9): dependencies: - '@strapi/strapi': 4.24.5(@babel/runtime@7.24.7)(@codemirror/autocomplete@6.16.2(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.1)(@lezer/common@1.2.1))(@codemirror/language@6.10.2)(@codemirror/lint@6.8.0)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.28.1)(@swc/helpers@0.5.11)(@types/hoist-non-react-statics@3.3.5)(@types/node@20.14.5)(@types/react-dom@18.3.0)(better-sqlite3@8.0.1)(codemirror@6.0.1(@lezer/common@1.2.1))(pg@8.12.0)(react-dom@18.3.1(react@18.3.1))(react-router-dom@5.3.4(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1))(terser@5.31.1)(type-fest@2.19.0) - '@strapi/utils': 4.24.5 + '@strapi/strapi': 4.25.1(@babel/runtime@7.24.7)(@codemirror/autocomplete@6.16.3(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.3)(@lezer/common@1.2.1))(@codemirror/language@6.10.2)(@codemirror/lint@6.8.1)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.28.3)(@swc/helpers@0.5.11)(@types/hoist-non-react-statics@3.3.5)(@types/node@20.14.9)(@types/react@18.3.3)(codemirror@5.65.16)(pg@8.8.0)(react-dom@18.3.1(react@18.3.1))(react-router-dom@5.3.4(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@5.3.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1))(terser@5.31.1)(type-fest@2.19.0) + '@strapi/utils': 4.25.1 fuzzysort: 2.0.4 transliteration: 2.3.5 - yup: 0.32.11 + yup: 0.32.9 stream-chain@2.2.5: {} @@ -14110,12 +13503,6 @@ snapshots: optionalDependencies: bare-events: 2.4.2 - strict-event-emitter@0.2.8: - dependencies: - events: 3.3.0 - - strict-event-emitter@0.4.6: {} - string-argv@0.3.2: {} string-width@4.2.3: @@ -14154,9 +13541,9 @@ snapshots: strnum@1.0.5: {} - style-loader@3.3.4(webpack@5.92.0(esbuild@0.19.11)): + style-loader@3.3.4(webpack@5.92.1(esbuild@0.19.11)): dependencies: - webpack: 5.92.0(esbuild@0.19.11) + webpack: 5.92.1(esbuild@0.19.11) style-mod@4.1.2: {} @@ -14246,25 +13633,16 @@ snapshots: mkdirp: 1.0.4 yallist: 4.0.0 - tar@6.2.1: - dependencies: - chownr: 2.0.0 - fs-minipass: 2.1.0 - minipass: 5.0.0 - minizlib: 2.1.2 - mkdirp: 1.0.4 - yallist: 4.0.0 - tarn@3.0.2: {} - terser-webpack-plugin@5.3.10(esbuild@0.19.11)(webpack@5.92.0(esbuild@0.19.11)): + terser-webpack-plugin@5.3.10(esbuild@0.19.11)(webpack@5.92.1(esbuild@0.19.11)): dependencies: '@jridgewell/trace-mapping': 0.3.25 jest-worker: 27.5.1 schema-utils: 3.3.0 serialize-javascript: 6.0.2 terser: 5.31.1 - webpack: 5.92.0(esbuild@0.19.11) + webpack: 5.92.1(esbuild@0.19.11) optionalDependencies: esbuild: 0.19.11 @@ -14384,8 +13762,6 @@ snapshots: dependencies: is-typedarray: 1.0.0 - typescript@4.9.5: {} - typescript@5.2.2: {} uc.micro@1.0.6: {} @@ -14393,9 +13769,9 @@ snapshots: uglify-js@3.18.0: optional: true - umzug@3.2.1(@types/node@20.14.5): + umzug@3.2.1(@types/node@20.14.9): dependencies: - '@rushstack/ts-command-line': 4.22.0(@types/node@20.14.5) + '@rushstack/ts-command-line': 4.22.0(@types/node@20.14.9) emittery: 0.12.1 fs-jetpack: 4.3.1 glob: 8.1.0 @@ -14439,7 +13815,7 @@ snapshots: untildify@4.0.0: {} - update-browserslist-db@1.0.16(browserslist@4.23.1): + update-browserslist-db@1.1.0(browserslist@4.23.1): dependencies: browserslist: 4.23.1 escalade: 3.1.2 @@ -14459,25 +13835,26 @@ snapshots: url-join@4.0.1: {} - url@0.10.3: - dependencies: - punycode: 1.3.2 - querystring: 0.2.0 - - use-callback-ref@1.3.2(react@18.3.1): + use-callback-ref@1.3.2(@types/react@18.3.3)(react@18.3.1): dependencies: react: 18.3.1 tslib: 2.6.3 + optionalDependencies: + '@types/react': 18.3.3 - use-isomorphic-layout-effect@1.1.2(react@18.3.1): + use-isomorphic-layout-effect@1.1.2(@types/react@18.3.3)(react@18.3.1): dependencies: react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.3 - use-sidecar@1.1.2(react@18.3.1): + use-sidecar@1.1.2(@types/react@18.3.3)(react@18.3.1): dependencies: detect-node-es: 1.1.0 react: 18.3.1 tslib: 2.6.3 + optionalDependencies: + '@types/react': 18.3.3 use-sync-external-store@1.2.2(react@18.3.1): dependencies: @@ -14489,20 +13866,10 @@ snapshots: util-deprecate@1.0.2: {} - util@0.12.5: - dependencies: - inherits: 2.0.4 - is-arguments: 1.1.1 - is-generator-function: 1.0.10 - is-typed-array: 1.1.13 - which-typed-array: 1.1.15 - utila@0.4.0: {} utils-merge@1.0.1: {} - uuid@8.0.0: {} - uuid@8.3.2: {} uuid@9.0.1: {} @@ -14520,13 +13887,13 @@ snapshots: vary@1.1.2: {} - vite@5.0.13(@types/node@20.14.5)(terser@5.31.1): + vite@5.0.13(@types/node@20.14.9)(terser@5.31.1): dependencies: esbuild: 0.19.11 - postcss: 8.4.38 + postcss: 8.4.39 rollup: 4.18.0 optionalDependencies: - '@types/node': 20.14.5 + '@types/node': 20.14.9 fsevents: 2.3.3 terser: 5.31.1 @@ -14541,12 +13908,6 @@ snapshots: dependencies: defaults: 1.0.4 - web-encoding@1.1.5: - dependencies: - util: 0.12.5 - optionalDependencies: - '@zxing/text-encoding': 0.9.0 - webidl-conversions@3.0.1: {} webpack-bundle-analyzer@4.10.2: @@ -14567,7 +13928,7 @@ snapshots: - bufferutil - utf-8-validate - webpack-dev-middleware@6.1.2(webpack@5.92.0(esbuild@0.19.11)): + webpack-dev-middleware@6.1.2(webpack@5.92.1(esbuild@0.19.11)): dependencies: colorette: 2.0.20 memfs: 3.5.3 @@ -14575,7 +13936,7 @@ snapshots: range-parser: 1.2.1 schema-utils: 4.2.0 optionalDependencies: - webpack: 5.92.0(esbuild@0.19.11) + webpack: 5.92.1(esbuild@0.19.11) webpack-hot-middleware@2.26.0: dependencies: @@ -14590,7 +13951,7 @@ snapshots: webpack-sources@3.2.3: {} - webpack@5.92.0(esbuild@0.19.11): + webpack@5.92.1(esbuild@0.19.11): dependencies: '@types/eslint-scope': 3.7.7 '@types/estree': 1.0.5 @@ -14602,7 +13963,7 @@ snapshots: browserslist: 4.23.1 chrome-trace-event: 1.0.4 enhanced-resolve: 5.17.0 - es-module-lexer: 1.5.3 + es-module-lexer: 1.5.4 eslint-scope: 5.1.1 events: 3.3.0 glob-to-regexp: 0.4.1 @@ -14613,7 +13974,7 @@ snapshots: neo-async: 2.6.2 schema-utils: 3.3.0 tapable: 2.2.1 - terser-webpack-plugin: 5.3.10(esbuild@0.19.11)(webpack@5.92.0(esbuild@0.19.11)) + terser-webpack-plugin: 5.3.10(esbuild@0.19.11)(webpack@5.92.1(esbuild@0.19.11)) watchpack: 2.4.1 webpack-sources: 3.2.3 transitivePeerDependencies: @@ -14626,14 +13987,6 @@ snapshots: tr46: 0.0.3 webidl-conversions: 3.0.1 - which-typed-array@1.1.15: - dependencies: - available-typed-arrays: 1.0.7 - call-bind: 1.0.7 - for-each: 0.3.3 - gopd: 1.0.1 - has-tostringtag: 1.0.2 - which@1.3.1: dependencies: isexe: 2.0.0 @@ -14672,12 +14025,6 @@ snapshots: wordwrap@1.0.0: {} - wrap-ansi@6.2.0: - dependencies: - ansi-styles: 4.3.0 - string-width: 4.2.3 - strip-ansi: 6.0.1 - wrap-ansi@7.0.0: dependencies: ansi-styles: 4.3.0 @@ -14697,14 +14044,19 @@ snapshots: ws@8.13.0: {} + xdg-app-paths@8.3.0: + dependencies: + xdg-portable: 10.6.0 + optionalDependencies: + fsevents: 2.3.3 + xdg-basedir@4.0.0: {} - xml2js@0.6.2: + xdg-portable@10.6.0: dependencies: - sax: 1.2.1 - xmlbuilder: 11.0.1 - - xmlbuilder@11.0.1: {} + os-paths: 7.4.0 + optionalDependencies: + fsevents: 2.3.3 xtend@4.0.2: {} @@ -14755,20 +14107,10 @@ snapshots: yocto-queue@0.1.0: {} - yup@0.32.11: - dependencies: - '@babel/runtime': 7.24.7 - '@types/lodash': 4.17.5 - lodash: 4.17.21 - lodash-es: 4.17.21 - nanoclone: 0.2.1 - property-expr: 2.0.6 - toposort: 2.0.2 - yup@0.32.9: dependencies: '@babel/runtime': 7.24.7 - '@types/lodash': 4.17.5 + '@types/lodash': 4.17.6 lodash: 4.17.21 lodash-es: 4.17.21 nanoclone: 0.2.1 diff --git a/packages/strapi/src/index.js b/packages/strapi/src/index.js index 316be2c..ac5feae 100644 --- a/packages/strapi/src/index.js +++ b/packages/strapi/src/index.js @@ -1,47 +1,5 @@ 'use strict'; - - -// const purest = require('purest'); - -// const patreon = async function patreon({ accessToken }) { -// console.log(` >> patreon callback ascivated with accessToken:${accessToken}`) -// const patreon = purest({ -// provider: 'patreon', -// config: { -// patreon: { -// default: { -// origin: 'https://www.patreon.com', -// path: 'api/oauth2/{path}', -// headers: { -// authorization: 'Bearer {auth}', -// }, -// }, -// }, -// }, -// }); - -// return patreon -// .get('v2/identity') -// .auth(accessToken) -// .qs(new URLSearchParams({ -// "include": "memberships,memberships.currently_entitled_tiers,memberships.currently_entitled_tiers.benefits,memberships.campaign", -// "fields[member]": "full_name,is_follower,patron_status,currently_entitled_amount_cents,campaign_lifetime_support_cents", -// 'fields[user]': 'full_name', -// }).toString()) -// .request() -// .then(({ body }) => { -// const patreonData = body.data.attributes; -// console.log(` >> patreonData`) -// console.log(patreonData) -// return { -// username: patreonData.full_name, -// memberships: patreonData -// }; -// }); -// } - - module.exports = { /** * An asynchronous register function that runs before @@ -49,11 +7,7 @@ module.exports = { * * This gives you an opportunity to extend code. */ - register({ strapi }) { - - // console.log(strapi.plugin('users-permissions').service('providers-registry')) - // strapi.plugin('users-permissions').service('providers-registry').register('taco', patreon) - }, + register(/*{ strapi }*/) {}, /** * An asynchronous bootstrap function that runs before @@ -62,19 +16,5 @@ module.exports = { * This gives you an opportunity to set up your data model, * run jobs, or perform some special logic. */ - bootstrap(/*{ strapi }*/) { - - }, + bootstrap(/*{ strapi }*/) {}, }; - - - - -// module.exports = async () => { -// await strapi.admin.services.permission.conditionProvider.register({ -// displayName: 'Billing amount under 10K', -// name: 'billing-amount-under-10k', -// plugin: 'admin', -// handler: { amount: { $lt: 10000 } }, -// }); -// }; \ No newline at end of file diff --git a/scripts/flux-bootstrap-staging.expect b/scripts/flux-bootstrap-staging.expect deleted file mode 100755 index 884bf28..0000000 --- a/scripts/flux-bootstrap-staging.expect +++ /dev/null @@ -1,6 +0,0 @@ -#!/usr/bin/expect - -spawn ./flux-bootstrap-staging.sh -expect -re ".*Please give the key access to your repository\?.*\[y/N\]" -send -- "y\r" -interact \ No newline at end of file diff --git a/scripts/flux-bootstrap.sh b/scripts/flux-bootstrap.sh index caae54d..74a889b 100755 --- a/scripts/flux-bootstrap.sh +++ b/scripts/flux-bootstrap.sh @@ -20,7 +20,7 @@ fi ## --silent avoids the [Yes|no] prompt flux bootstrap git \ --silent \ - --url="ssh://git@gitea.futureporn.net:2222/futureporn/fp" \ + --url="ssh://git@gitea.futureporn.net:2222/futureporn/fp/flux" \ --branch=main \ --path="clusters/$ENV" \ --private-key-file=/home/cj/.ssh/fp-flux \ No newline at end of file diff --git a/scripts/postgres-create.sh b/scripts/postgres-create.sh old mode 100644 new mode 100755 index b994c96..482166c --- a/scripts/postgres-create.sh +++ b/scripts/postgres-create.sh @@ -1,7 +1,8 @@ #!/bin/sh -bindir=$(dirname "$(readlink -fm "$0")") -source "${bindir}/../.env" +# bindir=$(dirname "$(readlink -fm "$0")") +# source "${bindir}/../.env" + if [ -z $POSTGRES_REALTIME_PASSWORD ]; then echo "POSTGRES_REALTIME_PASSWORD was missing in env" diff --git a/t.harness.tiltfile b/t.harness.tiltfile deleted file mode 100644 index 187eeb4..0000000 --- a/t.harness.tiltfile +++ /dev/null @@ -1,21 +0,0 @@ -# This starts ArgoCD in local kind cluster. -# Meant for validating cluster behavior before committing infrastructure to git -# We run ArgoCD in production so here we can test that everything works locally - -load('ext://namespace', 'namespace_create') - -k8s_namespace='fp' -namespace_create(k8s_namespace) -k8s_resource( - objects=[k8s_namespace + ':namespace'], - labels=["localdev"], - new_name='k8s:namespace' -) -k8s_context=k8s_context() - - -# Load ArgoCD Tiltfile -load('./localdev/argocd/Tiltfile', 'deploy_argo', 'delete_argocd_apps_on_tilt_down', 'force_argocd_cleanup_on_tilt_down') -# make sure apps get removed (cleanly) before ArgoCD is shutdown -delete_argocd_apps_on_tilt_down() -deploy_argo() \ No newline at end of file diff --git a/t.kustomize.tiltfile b/t.kustomize.tiltfile deleted file mode 100644 index 2ca2e21..0000000 --- a/t.kustomize.tiltfile +++ /dev/null @@ -1 +0,0 @@ -kustomize ( './clusters/production' ) \ No newline at end of file diff --git a/t.wip.tiltfile b/t.wip.tiltfile index 8b3a32e..b28762e 100644 --- a/t.wip.tiltfile +++ b/t.wip.tiltfile @@ -146,30 +146,20 @@ k8s_yaml(helm( docker_build( 'fp/strapi', '.', - build_args={ - 'NODE_ENV': 'development', - }, only=['./packages/strapi'], - dockerfile='./d.strapi.dockerfile', + dockerfile='./d.strapi.dev.dockerfile', live_update=[ sync('./packages/strapi', '/app') ] ) -# docker_build( -# 'fp/strapi-app', -# '.', -# only=["./packages/strapi-app"], -# dockerfile='d.strapi-app.dockerfile', -# live_update=[ -# sync('./packages/strapi-app', '/app') -# ] -# ) + + load('ext://uibutton', 'cmd_button') cmd_button('postgres:create', - argv=['sh', './scripts/postgres-create.sh'], + argv=['dotenvx', 'run', '-f', '.env.development', '--', 'sh', './scripts/postgres-create.sh'], resource='postgres', icon_name='dataset', text='create (empty) databases', @@ -271,12 +261,11 @@ docker_build( # ) k8s_resource( workload='echo', - port_forwards=['8001'], links=[ link('https://echo.fp.sbtp.xyz'), link('http://echo.futureporn.svc.cluster.local:8001') ], - labels='debug' + labels='frontend' ) @@ -286,7 +275,8 @@ k8s_resource( links=[ link('https://next.fp.sbtp.xyz'), ], - resource_deps=['strapi', 'postgres'] + resource_deps=['strapi', 'postgres'], + labels=['frontend'], ) k8s_resource( workload='strapi', @@ -295,12 +285,14 @@ k8s_resource( link('http://localhost:1339/admin'), link('https://strapi.fp.sbtp.xyz'), ], - resource_deps=['postgres'] + resource_deps=['postgres'], + labels=['backend'], ) k8s_resource( workload='postgres', port_forwards=['5432'], + labels=['backend'], ) k8s_resource( @@ -309,18 +301,21 @@ k8s_resource( links=[ link('http://localhost:9000/dashboard') ], + labels=['networking'], ) -# k8s_resource( -# workload='scout-worker', -# resource_deps=['postgres', 'strapi', 'temporal-frontend', 'scout-manager'] -# ) +k8s_resource( + workload='scout-worker', + resource_deps=['postgres', 'strapi', 'temporal-frontend', 'scout-manager'], + labels=['backend'], +) -# k8s_resource( -# workload='scout-manager', -# resource_deps=['postgres', 'strapi', 'temporal-frontend'] -# ) +k8s_resource( + workload='scout-manager', + resource_deps=['postgres', 'strapi', 'temporal-frontend'], + labels=['backend'], +) # k8s_resource( # workload='pgadmin', @@ -333,92 +328,123 @@ k8s_resource( # port_forwards=['6060:10606'], # ) - +# temporarily disabled to save CPU resources # helm_remote( -# 'temporal', -# repo_name='temporal', -# repo_url='https://charts.lemontech.engineering', +# 'kube-prometheus-stack', +# repo_name='kube-prometheus-stack', +# repo_url='https://prometheus-community.github.io/helm-charts', # namespace='futureporn', -# version='0.37.0', +# version='61.1.1', # set=[ -# 'admintools.image.tag=1.24.1-tctl-1.18.1-cli-0.12.0', -# 'web.image.tag=2.27.2', -# 'prometheus.enabled=false', -# 'grafana.enabled=false', -# 'elasticsearch.enabled=false', -# 'web.config.auth.enabled=true', -# 'cassandra.enabled=false', -# 'server.config.persistence.default.driver=sql', -# 'server.config.persistence.default.sql.driver=postgres12', -# 'server.config.persistence.default.sql.host=%s' % os.getenv('POSTGRES_HOST'), -# 'server.config.persistence.default.sql.port=5432', -# 'server.config.persistence.default.sql.user=%s' % os.getenv('POSTGRES_USER'), -# 'server.config.persistence.default.sql.password=%s' % os.getenv('POSTGRES_PASSWORD'), -# 'server.config.persistence.visibility.driver=sql', -# 'server.config.persistence.visibility.sql.driver=postgres12', -# 'server.config.persistence.visibility.sql.host=%s' % os.getenv('POSTGRES_HOST'), -# 'server.config.persistence.visibility.sql.port=5432', -# 'server.config.persistence.visibility.sql.user=%s' % os.getenv('POSTGRES_USER'), -# 'server.config.persistence.visibility.sql.password=%s' % os.getenv('POSTGRES_PASSWORD'), +# 'prometheus.prometheusSpec.storageSpec.volumeClaimTemplate.spec.storageClassName=vultr-block-storage', +# 'admin.existingSecret=grafana', +# 'sidecar.dashboards.enabled=true', +# 'grafana.admin.existingSecret=grafana', +# 'grafana.sidecar.dashboards.enabled=true', +# 'grafana.sidecar.dashboards.defaultFolderName=balls', +# 'grafana.sidecar.dashboards.label=grafana_dashboard', +# 'grafana.sidecar.dashboards.provider.foldersFromFileStructure=true' # ] # ) -# k8s_resource( -# workload='temporal-admintools', -# labels='temporal', -# resource_deps=[ -# 'postgres', -# 'strapi' -# ]) -# k8s_resource( -# workload='temporal-frontend', -# labels='temporal', port_forwards=['7233'], -# resource_deps=[ -# 'postgres', -# 'strapi' -# ]) -# k8s_resource( -# workload='temporal-history', -# labels='temporal', -# resource_deps=[ -# 'postgres', -# 'strapi' -# ]) -# k8s_resource( -# workload='temporal-worker', -# labels='temporal', -# resource_deps=[ -# 'postgres', -# 'strapi' -# ]) -# k8s_resource( -# workload='temporal-web', -# labels='temporal', port_forwards=['8080'], -# resource_deps=[ -# 'postgres', -# 'strapi' -# ]) -# k8s_resource( -# workload='temporal-schema-setup', -# labels='temporal', -# resource_deps=[ -# 'postgres', -# 'strapi' -# ]) -# k8s_resource( -# workload='temporal-schema-update', -# labels='temporal', -# resource_deps=[ -# 'postgres', -# 'strapi' -# ]) -# k8s_resource( -# workload='temporal-matching', -# labels='temporal', -# resource_deps=[ -# 'postgres', -# 'strapi' -# ]) +helm_remote( + 'temporal', + repo_name='temporal', + repo_url='https://charts.lemontech.engineering', + namespace='futureporn', + version='0.37.0', + set=[ + 'admintools.image.tag=1.24.1-tctl-1.18.1-cli-0.12.0', + 'web.image.tag=2.27.2', + 'prometheus.enabled=false', + 'grafana.enabled=false', + 'elasticsearch.enabled=false', + 'web.config.auth.enabled=true', + 'cassandra.enabled=false', + 'server.config.persistence.default.driver=sql', + 'server.config.persistence.default.sql.driver=postgres12', + 'server.config.persistence.default.sql.existingSecret=postgres', + 'server.config.persistence.default.sql.secretName=postgres', + 'server.config.persistence.default.sql.secretKey=password', + 'server.config.persistence.default.sql.host=postgres.futureporn.svc.cluster.local', + 'server.config.persistence.default.sql.port=5432', + 'server.config.persistence.default.sql.user=postgres', + 'server.config.persistence.visibility.driver=sql', + 'server.config.persistence.visibility.sql.driver=postgres12', + 'server.config.persistence.visibility.sql.host=postgres.futureporn.svc.cluster.local', + 'server.config.persistence.visibility.sql.port=5432', + 'server.config.persistence.visibility.sql.user=postgres', + 'server.config.persistence.visibility.sql.existingSecret=postgres', + 'server.config.persistence.visibility.sql.secretName=postgres', + 'server.config.persistence.visibility.sql.secretKey=password', + ] +) +k8s_resource( + workload='temporal-admintools', + labels='temporal', + resource_deps=[ + 'postgres', + 'strapi' + ]) +k8s_resource( + workload='temporal-frontend', + labels='temporal', port_forwards=['7233'], + resource_deps=[ + 'postgres', + 'strapi' + ]) +k8s_resource( + workload='temporal-history', + labels='temporal', + resource_deps=[ + 'postgres', + 'strapi' + ]) +k8s_resource( + workload='temporal-worker', + labels='temporal', + resource_deps=[ + 'postgres', + 'strapi' + ]) +k8s_resource( + workload='temporal-web', + labels='temporal', port_forwards=['8080'], + resource_deps=[ + 'postgres', + 'strapi' + ]) +k8s_resource( + workload='temporal-schema-setup', + labels='temporal', + resource_deps=[ + 'postgres', + 'strapi' + ]) +k8s_resource( + workload='temporal-schema-update', + labels='temporal', + resource_deps=[ + 'postgres', + 'strapi' + ]) +k8s_resource( + workload='temporal-matching', + labels='temporal', + resource_deps=[ + 'postgres', + 'strapi' + ]) + +k8s_resource( + workload='external-dns', + labels=['networking'], +) + +k8s_resource( + workload='cert-manager-webhook-exoscale', + labels=['networking'], +) # k8s_resource( # workload='cert-manager', # labels='cert-manager' @@ -434,4 +460,4 @@ k8s_resource( # k8s_resource( # workload='cert-manager-startupapicheck', # labels='cert-manager' -# ) \ No newline at end of file +# )