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 ( ); + if (displayStyle === 'box') { return (

diff --git a/packages/next/app/components/streams-table.tsx b/packages/next/app/components/streams-table.tsx index a8b352b..c4aef6b 100644 --- a/packages/next/app/components/streams-table.tsx +++ b/packages/next/app/components/streams-table.tsx @@ -93,7 +93,7 @@ export default function StreamsTable() { accessorFn: d => [ (d.attributes.isChaturbateStream && 'CB'), (d.attributes.isFanslyStream && 'Fansly') - ].filter(Boolean).join(' ') || '???' + ].filter(Boolean).join(', ') || '???' }, { header: 'Status', diff --git a/packages/next/app/lib/streams.ts b/packages/next/app/lib/streams.ts index 329976d..67b7c83 100644 --- a/packages/next/app/lib/streams.ts +++ b/packages/next/app/lib/streams.ts @@ -277,7 +277,7 @@ export async function getAllStreamsForVtuber(vtuberId: number, archiveStatuses = }, }); - console.log(`strapiUrl=${strapiUrl}`) + // console.log(`strapiUrl=${strapiUrl}`) const response = await fetch(`${strapiUrl}/api/streams?${query}`, fetchStreamsOptions) if (response.status !== 200) { @@ -371,13 +371,13 @@ export async function getStreamCountForVtuber(vtuberId: number, archiveStatuses ) const res = await fetch(`${strapiUrl}/api/streams?${query}`, fetchStreamsOptions) const data = await res.json() - console.log(`getStreamCountForVtuber with archiveStatuses=${archiveStatuses}`) - console.log(JSON.stringify(data, null, 2)) + // console.log(`getStreamCountForVtuber with archiveStatuses=${archiveStatuses}`) + // console.log(JSON.stringify(data, null, 2)) return data.meta.pagination.total } export async function getStreamsForVtuber(vtuberId: number, page: number = 1, pageSize: number = 25, sortDesc = true): Promise { - console.log(`getStreamsForVtuber() with strapiUrl=${strapiUrl}`) + // console.log(`getStreamsForVtuber() with strapiUrl=${strapiUrl}`) const query = qs.stringify( { populate: { @@ -405,7 +405,7 @@ export async function getStreamsForVtuber(vtuberId: number, page: number = 1, pa ) const res = await fetch(`${strapiUrl}/api/streams?${query}`, fetchStreamsOptions) const data = await res.json() - console.log(data) + // console.log(data) return data } diff --git a/packages/next/app/page.tsx b/packages/next/app/page.tsx index 9c19ef0..6ef5323 100644 --- a/packages/next/app/page.tsx +++ b/packages/next/app/page.tsx @@ -11,8 +11,16 @@ import { notFound } from "next/navigation"; export default async function Page() { const vods = await getVods(1, 9, true); + console.log('vods as follows') + console.log(JSON.stringify(vods, null, 2)) + + const vtubers = await getVtubers(); if (!vtubers) notFound(); + console.log(`vtubers as follows`) + console.log(JSON.stringify(vtubers, null, 2)) + + // 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 ( + + + {formatMessage({ + id: 'users-permissions.BoundRoute.title', + defaultMessage: 'Bound route to', + })} +   + {controller} + + .{action} + + + + + + {method} + + + + {map(formattedRoute, (value) => ( + + /{value} + + ))} + + + + ); +} + +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 ( + { + 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 ( + + + + {headerBreadcrumbs.map((crumb, index, arr) => ( + + {crumb} + + ))} + + + onSubmit(values)} + initialValues={initialData} + validationSchema={layout.schema} + validateOnChange={false} + > + {({ errors, handleChange, values }) => { + return ( +
+ + + + {layout.form.map((row) => { + return row.map((input) => { + return ( + + + + ); + }); + })} + + + + + {formatMessage({ + id: 'app.components.Button.cancel', + defaultMessage: 'Cancel', + })} + + } + endActions={ + + } + /> + + ); + }} +
+
+ ); +}; + +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 ( + + + + + {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} + + + + + ); + })} + + + + ); +}; + +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 ( + + {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) => ( + handleToggle(index)} + key={collapse.name} + variant={index % 2 === 0 ? 'secondary' : undefined} + > + + + + + + + + ))} + + ); +}; + +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 ( + + {selectedAction ? ( + + {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", + })} + + + )} + + ); +}; + +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 ( + + + + + + + {formatMessage({ + id: getTrad('Plugins.header.title'), + defaultMessage: 'Permissions', + })} + + + {formatMessage({ + id: getTrad('Plugins.header.description'), + defaultMessage: 'Only actions bound by a route are listed below.', + })} + + + + + + + + + ); +}); + +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 {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 ( +
+ + + {({ errors, values, handleChange, isSubmitting }) => { + return ( +
+ } + size="S" + > + {formatMessage({ id: 'global.save', defaultMessage: 'Save' })} + + } + /> + + + + + {formatMessage({ + id: 'global.settings', + defaultMessage: 'Settings', + })} + + + + + + {layout.map((input) => { + let value = values[input.name]; + + if (!value) { + value = input.type === 'bool' ? false : ''; + } + + 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 ( + + + + + {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 ( +
+ + + + + + + + + + + + + + + +