From 682f8ecae4808d9f4e7c2734639494cf6d064351 Mon Sep 17 00:00:00 2001 From: Dan Ribbens Date: Thu, 29 Jun 2023 13:27:33 -0400 Subject: [PATCH] wip merge master --- .github/ISSUE_TEMPLATE/1.bug_report.yml | 2 +- .github/workflows/tests.yml | 2 +- CHANGELOG.md | 71 + README.md | 4 +- contributing.md | 4 +- docs/authentication/config.mdx | 10 +- docs/authentication/using-middleware.mdx | 38 +- docs/fields/blocks.mdx | 58 +- docs/fields/number.mdx | 3 + docs/fields/relationship.mdx | 4 +- docs/getting-started/concepts.mdx | 2 +- docs/getting-started/what-is-payload.mdx | 2 +- docs/integrations/vercel-visual-editing.mdx | 104 + docs/rest-api/overview.mdx | 18 +- examples/auth/cms/package.json | 2 +- examples/auth/cms/src/payload-types.ts | 2 +- examples/auth/nextjs/payload-types.ts | 2 +- examples/email/src/payload-types.ts | 2 +- .../form-builder/cms/src/payload-types.ts | 2 +- examples/form-builder/nextjs/payload-types.ts | 2 +- examples/multi-tenant/src/payload-types.ts | 2 +- examples/preview/cms/package.json | 2 +- examples/preview/cms/src/payload-types.ts | 2 +- examples/preview/nextjs/payload-types.ts | 74 +- examples/redirects/cms/src/payload-types.ts | 2 +- examples/redirects/nextjs/payload-types.ts | 2 +- package.json | 10 +- playwright.config.ts | 2 +- src/admin/components/Routes.tsx | 2 +- .../components/elements/Autosave/index.tsx | 7 +- .../useDraggableSortable/index.tsx | 2 +- .../elements/ReactSelect/Control/index.tsx | 10 +- .../elements/ReactSelect/MultiValue/index.tsx | 10 +- .../ReactSelect/MultiValueLabel/index.tsx | 8 +- .../ReactSelect/ValueContainer/index.scss | 1 + .../ReactSelect/ValueContainer/index.tsx | 4 +- .../components/elements/ReactSelect/index.tsx | 85 +- .../components/elements/ReactSelect/types.ts | 7 + .../components/forms/Form/fieldReducer.ts | 2 +- .../forms/field-types/Number/index.scss | 6 +- .../forms/field-types/Number/index.tsx | 102 +- .../forms/field-types/Relationship/index.scss | 5 +- .../forms/field-types/Relationship/index.tsx | 239 +- .../MultiValueLabel/index.tsx | 10 +- .../select-components/SingleValue/index.scss | 5 + .../select-components/SingleValue/index.tsx | 12 +- .../forms/withCondition/WatchCondition.tsx | 57 + .../components/forms/withCondition/index.tsx | 63 +- .../components/templates/Default/index.tsx | 4 +- src/admin/components/utilities/Auth/index.tsx | 4 +- src/admin/components/views/Login/index.tsx | 10 +- src/admin/components/views/Logout/index.tsx | 7 +- .../views/Version/Compare/index.tsx | 2 +- .../RenderFieldsToDiff/fields/styles.ts | 12 + src/admin/scss/app.scss | 2 +- src/auth/operations/forgotPassword.ts | 4 + src/auth/operations/local/forgotPassword.ts | 2 +- src/auth/operations/local/login.ts | 2 +- src/auth/operations/local/resetPassword.ts | 2 +- src/auth/operations/local/unlock.ts | 2 +- src/auth/operations/resetPassword.ts | 1 - src/auth/operations/unlock.ts | 4 + src/bin/build.ts | 9 +- src/bin/generateTypes.ts | 30 +- src/collections/config/types.ts | 2 +- src/collections/operations/find.ts | 10 +- src/collections/operations/findVersions.ts | 10 +- src/collections/operations/local/create.ts | 2 +- src/collections/operations/local/find.ts | 2 +- src/collections/operations/local/findByID.ts | 2 +- .../operations/local/findVersionByID.ts | 2 +- src/collections/operations/update.ts | 10 +- src/config/types.ts | 4 +- src/database/types.ts | 27 +- src/email/defaults.ts | 2 +- src/fields/config/sanitize.ts | 11 + src/fields/config/schema.ts | 19 +- src/fields/config/types.ts | 44 +- src/fields/validations.spec.ts | 29 +- src/fields/validations.ts | 60 +- src/globals/config/types.ts | 2 +- src/globals/operations/findVersions.ts | 10 +- src/graphql/schema/buildMutationInputType.ts | 2 +- src/graphql/schema/buildObjectType.ts | 11 +- src/graphql/schema/withOperators.ts | 13 +- src/mongoose/buildQuery.ts | 0 src/mongoose/find.ts | 32 +- src/mongoose/findGlobalVersions.ts | 28 +- src/mongoose/findVersions.ts | 27 +- src/mongoose/models/buildSchema.ts | 2 +- src/mongoose/queries/buildSearchParams.ts | 66 +- src/mongoose/queries/buildSortParam.ts | 13 +- src/mongoose/queries/sanitizeQueryValue.ts | 20 +- src/mongoose/queryDrafts.ts | 33 +- src/translations/ar.json | 5 +- src/translations/bg.json | 5 +- src/translations/cs.json | 5 +- src/translations/de.json | 5 +- src/translations/en.json | 5 +- src/translations/es.json | 5 +- src/translations/fa.json | 5 +- src/translations/fr.json | 5 +- src/translations/hr.json | 7 +- src/translations/hu.json | 689 +- src/translations/it.json | 5 +- src/translations/ja.json | 5 +- src/translations/my.json | 5 +- src/translations/nb.json | 5 +- src/translations/nl.json | 5 +- src/translations/pl.json | 5 +- src/translations/pt.json | 5 +- src/translations/ro.json | 5 +- src/translations/ru.json | 5 +- src/translations/sv.json | 5 +- src/translations/th.json | 5 +- src/translations/tr.json | 5 +- src/translations/translation-schema.json | 15 +- src/translations/ua.json | 5 +- src/translations/vi.json | 5 +- src/translations/zh.json | 5 +- src/uploads/unlinkTempFiles.ts | 2 +- ...ema.spec.ts => configToJSONSchema.spec.ts} | 9 +- ...yToJSONSchema.ts => configToJSONSchema.ts} | 179 +- src/utilities/isNumber.ts | 6 +- .../drafts/replaceWithDraftIfAvailable.ts | 5 +- src/versions/enforceMaxVersions.ts | 10 +- src/versions/getLatestCollectionVersion.ts | 5 +- src/versions/getLatestGlobalVersion.ts | 2 +- src/versions/saveVersion.ts | 5 +- src/webpack/getBaseConfig.ts | 2 +- templates/blank/.env.example | 2 + templates/blank/.gitignore | 6 + templates/blank/Dockerfile | 26 + templates/blank/README.md | 42 + templates/blank/docker-compose.yml | 32 + templates/blank/nodemon.json | 4 + templates/blank/package.json | 31 + templates/blank/src/collections/Users.ts | 18 + templates/blank/src/payload.config.ts | 22 + templates/blank/src/server.ts | 28 + templates/blank/tsconfig.json | 34 + templates/blank/yarn.lock | 7491 +++++++++++++++++ test/_community/payload-types.ts | 2 +- test/access-control/payload-types.ts | 2 +- test/admin/config.ts | 2 +- test/admin/payload-types.ts | 2 +- test/array-update/payload-types.ts | 2 +- test/auth/payload-types.ts | 2 +- test/collections-graphql/config.ts | 51 + test/collections-graphql/int.spec.ts | 20 + test/collections-graphql/payload-types.ts | 2 +- test/collections-rest/int.spec.ts | 80 + test/collections-rest/payload-types.ts | 2 +- test/dataloader/payload-types.ts | 2 +- test/endpoints/payload-types.ts | 2 +- test/fields-relationship/payload-types.ts | 2 +- .../collections/ConditionalLogic/index.ts | 61 + test/fields/collections/Number/index.ts | 27 + test/fields/collections/Relationship/index.ts | 10 +- test/fields/e2e.spec.ts | 93 +- test/fields/int.spec.ts | 19 + test/fields/payload-types.ts | 79 +- test/globals/payload-types.ts | 2 +- .../generated-schema.graphql | 1852 ---- test/hooks/payload-types.ts | 2 +- test/localization/payload-types.ts | 2 +- test/relationships/payload-types.ts | 2 +- test/uploads/payload-types.ts | 2 +- test/versions/e2e.spec.ts | 38 +- test/versions/payload-types.ts | 2 +- utilities.d.ts | 2 +- utilities.js | 2 +- yarn.lock | 10 +- 173 files changed, 9894 insertions(+), 2930 deletions(-) create mode 100644 docs/integrations/vercel-visual-editing.mdx create mode 100644 src/admin/components/forms/withCondition/WatchCondition.tsx create mode 100644 src/mongoose/buildQuery.ts rename src/utilities/{entityToJSONSchema.spec.ts => configToJSONSchema.spec.ts} (85%) rename src/utilities/{entityToJSONSchema.ts => configToJSONSchema.ts} (71%) create mode 100644 templates/blank/.env.example create mode 100644 templates/blank/.gitignore create mode 100644 templates/blank/Dockerfile create mode 100644 templates/blank/README.md create mode 100644 templates/blank/docker-compose.yml create mode 100644 templates/blank/nodemon.json create mode 100644 templates/blank/package.json create mode 100644 templates/blank/src/collections/Users.ts create mode 100644 templates/blank/src/payload.config.ts create mode 100644 templates/blank/src/server.ts create mode 100644 templates/blank/tsconfig.json create mode 100644 templates/blank/yarn.lock delete mode 100644 test/graphql-schema-gen/generated-schema.graphql diff --git a/.github/ISSUE_TEMPLATE/1.bug_report.yml b/.github/ISSUE_TEMPLATE/1.bug_report.yml index 6063bc5375..4aa924616b 100644 --- a/.github/ISSUE_TEMPLATE/1.bug_report.yml +++ b/.github/ISSUE_TEMPLATE/1.bug_report.yml @@ -1,5 +1,5 @@ name: Bug Report -description: Create a bug report for the Payload CMS +description: Create a bug report for Payload labels: ["possible-bug"] body: - type: markdown diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 82ebcaf04f..1363f638c5 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -83,6 +83,6 @@ jobs: ${{ runner.os }}-npm-${{ env.cache-name }}- ${{ runner.os }}-npm- ${{ runner.os }}- - - run: npm install --legacy-peer-deps + - run: npm install env: NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} diff --git a/CHANGELOG.md b/CHANGELOG.md index a5afa7f35b..c717d013e8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,76 @@ +## [1.10.2](https://github.com/payloadcms/payload/compare/v1.10.1...v1.10.2) (2023-06-26) + + +### Bug Fixes + +* adjusts swc loader to only exclude non ts/tsx files - [#2888](https://github.com/payloadcms/payload/issues/2888) ([#2907](https://github.com/payloadcms/payload/issues/2907)) ([a2d9ef3](https://github.com/payloadcms/payload/commit/a2d9ef3ca618934df58102a7e02e86dbe0ed63da)) +* autosave on localized fields, adds test ([6893231](https://github.com/payloadcms/payload/commit/6893231f85f702189089a6d78d3f3af63aaa0d82)) +* broken export of entityToJSONSchema ([#2894](https://github.com/payloadcms/payload/issues/2894)) ([837dccc](https://github.com/payloadcms/payload/commit/837dcccefeffe7bb6e674713b4184c4eb92db8dc)) +* correctly scopes data variable within bulk update - [#2901](https://github.com/payloadcms/payload/issues/2901) ([#2904](https://github.com/payloadcms/payload/issues/2904)) ([f627277](https://github.com/payloadcms/payload/commit/f627277479e6a4a847e79f54c545712a7186abb9)) +* safely check for tempFilePath when updating media document ([#2899](https://github.com/payloadcms/payload/issues/2899)) ([8206c0f](https://github.com/payloadcms/payload/commit/8206c0fe8be78a5e0f7c8e64996d73d135b1fcc2)) + +## [1.10.1](https://github.com/payloadcms/payload/compare/v1.10.0...v1.10.1) (2023-06-22) + + +### Bug Fixes + +* conditional fields perf bug - [#2886](https://github.com/payloadcms/payload/issues/2886) ([#2890](https://github.com/payloadcms/payload/issues/2890)) ([b83d788](https://github.com/payloadcms/payload/commit/b83d788d3cfe12f87dcd63a9df20b939a6f4681e)) +* cutoff tooltips in relationship field ([#2873](https://github.com/payloadcms/payload/issues/2873)) ([09c6cad](https://github.com/payloadcms/payload/commit/09c6cad3e8462dc3d8b1b6424aafd336c1d7828c)) +* Relationship hasMany and filterOptions fails above 10 items ([#2891](https://github.com/payloadcms/payload/issues/2891)) ([8128de6](https://github.com/payloadcms/payload/commit/8128de64dff98fdbcf053faef9de3c3f9a733071)) + +# [1.10.0](https://github.com/payloadcms/payload/compare/v1.9.5...v1.10.0) (2023-06-20) + + +### Bug Fixes + +* [#2831](https://github.com/payloadcms/payload/issues/2831), persists payloadAPI through local operations that accept req ([85d2467](https://github.com/payloadcms/payload/commit/85d2467d73582a372ee34e3ce93403847a1f0689)) +* [#2842](https://github.com/payloadcms/payload/issues/2842), querying number custom ids with in ([116e9ff](https://github.com/payloadcms/payload/commit/116e9ffe81f44c4b40fa578b4a8fe4bb70fd110c)) +* default sort with near operator ([#2862](https://github.com/payloadcms/payload/issues/2862)) ([99f3809](https://github.com/payloadcms/payload/commit/99f38098dd4a386437c469becc975ca86c54601f)) +* deprecate min/max in exchange for minRows and maxRows for relationship field ([#2826](https://github.com/payloadcms/payload/issues/2826)) ([0d8d7f3](https://github.com/payloadcms/payload/commit/0d8d7f358d390184f6f888d77858b4a145e94214)) +* drawer close on backspace ([#2869](https://github.com/payloadcms/payload/issues/2869)) ([a110ba2](https://github.com/payloadcms/payload/commit/a110ba2dc09cd0824a9b1eb8e011604388277bd8)) +* drawer fields are read-only if opened from a hasMany relationship ([#2843](https://github.com/payloadcms/payload/issues/2843)) ([542b536](https://github.com/payloadcms/payload/commit/542b5362d3ec8741aff6b1672fab7d2250e7b854)) +* fields in relationship drawer not usable [#2815](https://github.com/payloadcms/payload/issues/2815) ([#2870](https://github.com/payloadcms/payload/issues/2870)) ([8626dc6](https://github.com/payloadcms/payload/commit/8626dc6b1a926143e7ba505f3edd924432168675)) +* mobile loading overlay width [#2866](https://github.com/payloadcms/payload/issues/2866) ([#2867](https://github.com/payloadcms/payload/issues/2867)) ([ba9d633](https://github.com/payloadcms/payload/commit/ba9d6336acc779cfec0db312c8e2da912ce58cd4)) +* near query sorting by distance and pagination ([#2861](https://github.com/payloadcms/payload/issues/2861)) ([1611896](https://github.com/payloadcms/payload/commit/16118960aa6d63f7a429f168ff4305f336b1b1e6)) +* relationship field query pagination ([#2871](https://github.com/payloadcms/payload/issues/2871)) ([ce84174](https://github.com/payloadcms/payload/commit/ce84174554d9d828cbaaaa9548e5defc0feb4e2b)) +* slow like queries with lots of records ([4dd703a](https://github.com/payloadcms/payload/commit/4dd703a6bff0ab7d06af234baa975553bd62f176)) + + +### Features + +* automatically redirect a user back to their originally requested URL after login ([#2838](https://github.com/payloadcms/payload/issues/2838)) ([e910688](https://github.com/payloadcms/payload/commit/e9106882f721d43bcc05a1690bda7754b450404e)) +* hasMany for number field ([#2517](https://github.com/payloadcms/payload/issues/2517)) ([8f086e3](https://github.com/payloadcms/payload/commit/8f086e315cb30be9d399fd3022c16952fb81cb2e)), closes [#2812](https://github.com/payloadcms/payload/issues/2812) [#2821](https://github.com/payloadcms/payload/issues/2821) [#2823](https://github.com/payloadcms/payload/issues/2823) [#2824](https://github.com/payloadcms/payload/issues/2824) [#2814](https://github.com/payloadcms/payload/issues/2814) [#2793](https://github.com/payloadcms/payload/issues/2793) [#2835](https://github.com/payloadcms/payload/issues/2835) +* optimizes conditional logic performance ([967f217](https://github.com/payloadcms/payload/commit/967f21734600de1fec8c1227a354ef5a417e54c5)) + +## [1.9.5](https://github.com/payloadcms/payload/compare/v1.9.4...v1.9.5) (2023-06-16) + +## [1.9.4](https://github.com/payloadcms/payload/compare/v1.9.3...v1.9.4) (2023-06-16) + + +### Bug Fixes + +* incorrectly return totalDocs=1 instead of the correct count when pagination=false ([2e73938](https://github.com/payloadcms/payload/commit/2e7393853447d2da41ddef79f73e9026719a674b)) + +## [1.9.3](https://github.com/payloadcms/payload/compare/v1.9.2...v1.9.3) (2023-06-16) + + +### Bug Fixes + +* adds custom property to ui field in joi validation ([#2835](https://github.com/payloadcms/payload/issues/2835)) ([56d7745](https://github.com/payloadcms/payload/commit/56d7745139e31c5d42c5191477f409f12589a952)) +* ensures relations to object ids can be queried on ([c3d6e1b](https://github.com/payloadcms/payload/commit/c3d6e1b490a69f0aadb00e54e46a8774732e6658)) + +## [1.9.2](https://github.com/payloadcms/payload/compare/v1.9.1...v1.9.2) (2023-06-14) + + +### Bug Fixes + +* [#2821](https://github.com/payloadcms/payload/issues/2821) i18n ui field label ([#2823](https://github.com/payloadcms/payload/issues/2823)) ([63cd7fb](https://github.com/payloadcms/payload/commit/63cd7fbd0c91bbf5120e95fd33388a38e593b341)) +* adds missing dark-mode styles for version differences view ([#2812](https://github.com/payloadcms/payload/issues/2812)) ([346a48f](https://github.com/payloadcms/payload/commit/346a48f871e09a3d5e25b7ff9e45689a104b0f9f)) +* sanitize reset password result - [#2805](https://github.com/payloadcms/payload/issues/2805) ([#2808](https://github.com/payloadcms/payload/issues/2808)) ([46a5f41](https://github.com/payloadcms/payload/commit/46a5f417217313b049f4b412abb3319634f27262)) +* user can be created without having to specify an email - [#2801](https://github.com/payloadcms/payload/issues/2801) ([abe3852](https://github.com/payloadcms/payload/commit/abe38520aaaefdfaea4c47130eea04a42a82627b)) + ## [1.9.1](https://github.com/payloadcms/payload/compare/v1.9.0...v1.9.1) (2023-06-09) diff --git a/README.md b/README.md index 6c16475062..19950fcfdc 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ - payload cms logo + Payload Logo

@@ -41,7 +41,7 @@   - Payload CMS Twitter + Payload Twitter

diff --git a/contributing.md b/contributing.md index 34d1aa0de0..a07ea3b596 100644 --- a/contributing.md +++ b/contributing.md @@ -1,6 +1,6 @@ -# Contributing to Payload CMS +# Contributing to Payload -Below you'll find a set of guidelines for how to contribute to Payload CMS. +Below you'll find a set of guidelines for how to contribute to Payload. ## Opening issues diff --git a/docs/authentication/config.mdx b/docs/authentication/config.mdx index 0aa9d59b67..5fc2e6b790 100644 --- a/docs/authentication/config.mdx +++ b/docs/authentication/config.mdx @@ -17,7 +17,7 @@ To enable Authentication on a collection, define an `auth` property and set it t | **`useAPIKey`** | Payload Authentication provides for API keys to be set on each user within an Authentication-enabled Collection. [More](/docs/authentication/config#api-keys) | | **`tokenExpiration`** | How long (in seconds) to keep the user logged in. JWTs and HTTP-only cookies will both expire at the same time. | | **`maxLoginAttempts`** | Only allow a user to attempt logging in X amount of times. Automatically locks out a user from authenticating if this limit is passed. Set to `0` to disable. | -| **`lockTime`** | Set the time (in milliseconds) that a user should be locked out if they fail authentication more times than `maxLoginAttempts` allows for. | +| **`lockTime`** | Set the time (in milliseconds) that a user should be locked out if they fail authentication more times than `maxLoginAttempts` allows for. | | **`depth`** | How many levels deep a `user` document should be populated when creating the JWT and binding the `user` to the express `req`. Defaults to `0` and should only be modified if absolutely necessary, as this will affect performance. | | **`cookies`** | Set cookie options, including `secure`, `sameSite`, and `domain`. For advanced users. | | **`forgotPassword`** | Customize the way that the `forgotPassword` operation functions. [More](/docs/authentication/config#forgot-password) | @@ -29,10 +29,12 @@ To enable Authentication on a collection, define an `auth` property and set it t To integrate with third-party APIs or services, you might need the ability to generate API keys that can be used to identify as a certain user within Payload. +In Payload, users are essentially documents within a collection. Just like you can authenticate as a user with an email and password, which is considered as our default local auth strategy, you can also authenticate as a user with an API key. API keys are generated on a user-by-user basis, similar to email and passwords, and are meant to represent a single user. + For example, if you have a third-party service or external app that needs to be able to perform protected actions at its discretion, you have two options: 1. Create a user for the third-party app, and log in each time to receive a token before you attempt to access any protected actions -1. Enable API key support for the Collection, where you can generate a non-expiring API key per user in the collection +1. Enable API key support for the Collection, where you can generate a non-expiring API key per user in the collection. This is particularly useful as you can create a "user" that reflects an integration with a specific external service and assign a "role" or specific access only needed by that service/integration. Alternatively, you could create a "super admin" user and assign an API key to that user so that any requests made with that API key are considered as being made by that super user. Technically, both of these options will work for third-party integrations but the second option with API key is simpler, because it reduces the amount of work that your integrations need to do to be authenticated properly. @@ -45,7 +47,7 @@ To enable API keys on a collection, set the `useAPIKey` auth option to `true`. F #### Authenticating via API Key -To authenticate REST or GraphQL API requests using an API key, set the `Authorization` header. The header is case-sensitive and needs the slug of the `auth.useAPIKey` enabled collection, then " API-Key ", followed by the `apiKey` that has been assigned. Payload's built-in middleware will then assign the user document to `req.user` and handle requests with the proper access control. +To authenticate REST or GraphQL API requests using an API key, set the `Authorization` header. The header is case-sensitive and needs the slug of the `auth.useAPIKey` enabled collection, then " API-Key ", followed by the `apiKey` that has been assigned. Payload's built-in middleware will then assign the user document to `req.user` and handle requests with the proper access control. By doing this, Payload recognizes the request being made as a request by the user associated with that API key. **For example, using Fetch:** @@ -59,6 +61,8 @@ const response = await fetch("http://localhost:3000/api/pages", { }); ``` +Payload ensures that the same, uniform access control is used across all authentication strategies. This enables you to utilize your existing access control configurations with both API keys and the standard email/password authentication. This consistency can aid in maintaining granular control over your API keys. + ### Forgot Password You can customize how the Forgot Password workflow operates with the following options on the `auth.forgotPassword` property: diff --git a/docs/authentication/using-middleware.mdx b/docs/authentication/using-middleware.mdx index a2061f442f..945c0a7355 100644 --- a/docs/authentication/using-middleware.mdx +++ b/docs/authentication/using-middleware.mdx @@ -29,28 +29,30 @@ import payload from "payload"; const app = express(); -payload.init({ - secret: "PAYLOAD_SECRET_KEY", - mongoURL: "mongodb://localhost/payload", - express: app, -}); +const start = async () => { + await payload.init({ + secret: "PAYLOAD_SECRET_KEY", + mongoURL: "mongodb://localhost/payload", + express: app, + }); -const router = express.Router(); + const router = express.Router(); -// Note: Payload must be initialized before the `payload.authenticate` middleware can be used -router.use(payload.authenticate); // highlight-line + // Note: Payload must be initialized before the `payload.authenticate` middleware can be used + router.use(payload.authenticate); // highlight-line -router.get("/", (req, res) => { - if (req.user) { - return res.send(`Authenticated successfully as ${req.user.email}.`); - } + router.get("/", (req, res) => { + if (req.user) { + return res.send(`Authenticated successfully as ${req.user.email}.`); + } - return res.send("Not authenticated"); -}); + return res.send("Not authenticated"); + }); -app.use("/some-route-here", router); + app.use("/some-route-here", router); -app.listen(3000, async () => { - payload.logger.info(`listening on ${3000}...`); -}); + app.listen(3000); +}; + +start(); ``` diff --git a/docs/fields/blocks.mdx b/docs/fields/blocks.mdx index 80333b41a9..64cb66e89d 100644 --- a/docs/fields/blocks.mdx +++ b/docs/fields/blocks.mdx @@ -24,22 +24,22 @@ _Admin panel screenshot of a Blocks field type with Call to Action and Number bl ### Field config -| Option | Description | -| ------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --- | -------------- | ----------------------------------- | -| **`name`** \* | To be used as the property name when stored and retrieved from the database. [More](/docs/fields/overview#field-names) | -| **`label`** | Text used as the heading in the Admin panel or an object with keys for each language. Auto-generated from name if not defined. | -| **`blocks`** \* | Array of [block configs](/docs/fields/blocks#block-configs) to be made available to this field. | -| **`validate`** | Provide a custom validation function that will be executed on both the Admin panel and the backend. [More](/docs/fields/overview#validation) | -| **`saveToJWT`** | If this field is top-level and nested in a config supporting [Authentication](/docs/authentication/config), include its data in the user JWT. | -| **`hooks`** | Provide field-level hooks to control logic for this field. [More](/docs/fields/overview#field-level-hooks) | -| **`access`** | Provide field-level access control to denote what users can see and do with this field's data. [More](/docs/fields/overview#field-level-access-control) | -| **`hidden`** | Restrict this field's visibility from all APIs entirely. Will still be saved to the database, but will not appear in any API response or the Admin panel. | -| **`defaultValue`** | Provide an array of block data to be used for this field's default value. [More](/docs/fields/overview#default-values) | -| **`localized`** | Enable localization for this field. Requires [localization to be enabled](/docs/configuration/localization) in the Base config. If enabled, a separate, localized set of all data within this field will be kept, so there is no need to specify each nested field as `localized`. | | **`required`** | Require this field to have a value. | -| **`unique`** | Enforce that each entry in the Collection has a unique value for this field. | -| **`labels`** | Customize the block row labels appearing in the Admin dashboard. | -| **`admin`** | Admin-specific configuration. See below for [more detail](#admin-config). | -| **`custom`** | Extension point for adding custom data (e.g. for plugins) | +| Option | Description | +|-------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| **`name`** * | To be used as the property name when stored and retrieved from the database. [More](/docs/fields/overview#field-names) | +| **`label`** | Text used as the heading in the Admin panel or an object with keys for each language. Auto-generated from name if not defined. | +| **`blocks`** * | Array of [block configs](/docs/fields/blocks#block-configs) to be made available to this field. | +| **`validate`** | Provide a custom validation function that will be executed on both the Admin panel and the backend. [More](/docs/fields/overview#validation) | +| **`saveToJWT`** | If this field is top-level and nested in a config supporting [Authentication](/docs/authentication/config), include its data in the user JWT. | +| **`hooks`** | Provide field-level hooks to control logic for this field. [More](/docs/fields/overview#field-level-hooks) | +| **`access`** | Provide field-level access control to denote what users can see and do with this field's data. [More](/docs/fields/overview#field-level-access-control) | +| **`hidden`** | Restrict this field's visibility from all APIs entirely. Will still be saved to the database, but will not appear in any API response or the Admin panel. | +| **`defaultValue`** | Provide an array of block data to be used for this field's default value. [More](/docs/fields/overview#default-values) | +| **`localized`** | Enable localization for this field. Requires [localization to be enabled](/docs/configuration/localization) in the Base config. If enabled, a separate, localized set of all data within this field will be kept, so there is no need to specify each nested field as `localized`. | +| **`unique`** | Enforce that each entry in the Collection has a unique value for this field. | +| **`labels`** | Customize the block row labels appearing in the Admin dashboard. | +| **`admin`** | Admin-specific configuration. See below for [more detail](#admin-config). | +| **`custom`** | Extension point for adding custom data (e.g. for plugins) | _\* An asterisk denotes that a property is required._ @@ -93,33 +93,33 @@ The Admin panel provides each block with a `blockName` field which optionally al `collections/ExampleCollection.js` ```ts -import { Block, CollectionConfig } from "payload/types"; +import { Block, CollectionConfig } from 'payload/types'; const QuoteBlock: Block = { - slug: "Quote", // required - imageURL: "https://google.com/path/to/image.jpg", - imageAltText: "A nice thumbnail image to show what this block looks like", - interfaceName: "QuoteBlock", // optional + slug: 'Quote', // required + imageURL: 'https://google.com/path/to/image.jpg', + imageAltText: 'A nice thumbnail image to show what this block looks like', + interfaceName: 'QuoteBlock', // optional fields: [ // required { - name: "quoteHeader", - type: "text", + name: 'quoteHeader', + type: 'text', required: true, }, { - name: "quoteText", - type: "text", + name: 'quoteText', + type: 'text', }, ], }; export const ExampleCollection: CollectionConfig = { - slug: "example-collection", + slug: 'example-collection', fields: [ { - name: "layout", // required - type: "blocks", // required + name: 'layout', // required + type: 'blocks', // required minRows: 1, maxRows: 20, blocks: [ @@ -136,5 +136,5 @@ export const ExampleCollection: CollectionConfig = { As you build your own Block configs, you might want to store them in separate files but retain typing accordingly. To do so, you can import and use Payload's `Block` type: ```ts -import type { Block } from "payload/types"; +import type { Block } from 'payload/types'; ``` diff --git a/docs/fields/number.mdx b/docs/fields/number.mdx index 263c88cbcb..b446c0d18e 100644 --- a/docs/fields/number.mdx +++ b/docs/fields/number.mdx @@ -18,6 +18,9 @@ keywords: number, fields, config, configuration, documentation, Content Manageme | **`label`** | Text used as a field label in the Admin panel or an object with keys for each language. | | **`min`** | Minimum value accepted. Used in the default `validation` function. | | **`max`** | Maximum value accepted. Used in the default `validation` function. | +| **`hasMany`** | Makes this field an ordered array of numbers instead of just a single number. | +| **`minRows`** | Minimum number of numbers in the numbers array, if `hasMany` is set to true. | +| **`maxRows`** | Maximum number of numbers in the numbers array, if `hasMany` is set to true. | | **`unique`** | Enforce that each entry in the Collection has a unique value for this field. | | **`index`** | Build a [MongoDB index](https://docs.mongodb.com/manual/indexes/) for this field to produce faster queries. Set this field to `true` if your users will perform queries on this field's data often. | | **`validate`** | Provide a custom validation function that will be executed on both the Admin panel and the backend. [More](/docs/fields/overview#validation) | diff --git a/docs/fields/relationship.mdx b/docs/fields/relationship.mdx index f42f848935..bb7975e385 100644 --- a/docs/fields/relationship.mdx +++ b/docs/fields/relationship.mdx @@ -25,8 +25,8 @@ keywords: relationship, fields, config, configuration, documentation, Content Ma | **`relationTo`** \* | Provide one or many collection `slug`s to be able to assign relationships to. | | **`filterOptions`** | A query to filter which options appear in the UI and validate against. [More](#filtering-relationship-options). | | **`hasMany`** | Boolean when, if set to `true`, allows this field to have many relations instead of only one. | -| **`min`** | A number for the fewest allowed items during validation when a value is present. Used with `hasMany`. | -| **`max`** | A number for the most allowed items during validation when a value is present. Used with `hasMany`. | +| **`minRows`** | A number for the fewest allowed items during validation when a value is present. Used with `hasMany`. | +| **`maxRows`** | A number for the most allowed items during validation when a value is present. Used with `hasMany`. | | **`maxDepth`** | Sets a number limit on iterations of related documents to populate when queried. [Depth](/docs/getting-started/concepts#depth) | | **`label`** | Text used as a field label in the Admin panel or an object with keys for each language. | | **`unique`** | Enforce that each entry in the Collection has a unique value for this field. | diff --git a/docs/getting-started/concepts.mdx b/docs/getting-started/concepts.mdx index 129f5908dc..ef88409bcc 100644 --- a/docs/getting-started/concepts.mdx +++ b/docs/getting-started/concepts.mdx @@ -117,7 +117,7 @@ It is also possible to limit the depth for specific `relation` and `upload` fiel } ``` -If you were to query the Posts endpoint at, say, `http://localhost:3000/api/posts?depth=1`, you will retrieve Posts with populations one level deep. A returned result may look like the following: +If you were to query the Posts endpoint at, say, `http://localhost:3000/api/posts?depth=1`, you will retrieve Posts with populations one level deep. This depth parameter can be thought of as N, where N is the number of levels you want to populate. To populate one level further, you would simply specify N+1 as the depth. A returned result may look like the following: ``` // ?depth=1 diff --git a/docs/getting-started/what-is-payload.mdx b/docs/getting-started/what-is-payload.mdx index a6fe0d787f..3a2f4ea07a 100644 --- a/docs/getting-started/what-is-payload.mdx +++ b/docs/getting-started/what-is-payload.mdx @@ -8,7 +8,7 @@ keywords: documentation, getting started, guide, Content Management System, cms, diff --git a/docs/integrations/vercel-visual-editing.mdx b/docs/integrations/vercel-visual-editing.mdx new file mode 100644 index 0000000000..101b0100b9 --- /dev/null +++ b/docs/integrations/vercel-visual-editing.mdx @@ -0,0 +1,104 @@ +--- +title: Vercel Visual Editing +label: Vercel Visual Editing +order: 10 +desc: Payload + Vercel Visual Editing allows yours editors to navigate directly from the content rendered on your front-end to the fields in Payload that control it. +keywords: vercel, vercel visual editing, visual editing, content source maps, Content Management System, cms, headless, javascript, node, react, express +--- + +[Vercel Visual Editing](https://vercel.com/docs/workflow-collaboration/visual-editing) will allow your editors to navigate directly from the content rendered on your front-end to the fields in Payload that control it. This requires no changes to your front-end code and very few changes to your Payload config. + +![Versions](/images/docs/vercel-visual-editing.jpg) + + + Vercel Visual Editing is an enterprise-only feature and only available for + deployments hosted on Vercel. If you are an existing enterprise customer, + [contact our sales team](https://payloadcms.com/for-enterprise) for help with + your integration. + + +### How it works + +To power Vercel Visual Editing, Payload embeds Content Source Maps into its API responses. Content Source Maps are invisible, encoded JSON values that include a link back to the field in the CMS that generated the content. When rendered on the page, Vercel detects and decodes these values to display the Visual Editing interface. + +For full details on how the encoding and decoding algorithm works, check out [`@vercel/stega`](https://www.npmjs.com/package/@vercel/stega). + +### Getting Started + +Setting up Payload with Vercel Visual Editing is easy. First, install the `@payloadcms/plugin-csm` plugin into your project. This plugin requires an API key to install, [contact our sales team](https://payloadcms.com/for-enterprise) if you don't already have one. + +```bash +npm i @payloadcms/plugin-csm +``` + +Then in the `plugins` array of your Payload config, call the plugin and enable any collections that require Content Source Maps. + +```ts +import { buildConfig } from "payload/config" +import contentSourceMaps from "@payloadcms/plugin-csm" + +const config = buildConfig({ + collections: [ + { + slug: "pages", + fields: [ + { + name: 'slug', + type: 'text', + }, + { + name: 'title,' + type: 'text', + }, + ], + }, + ], + plugins: [ + contentSourceMaps({ + collections: ["pages"], + }), + ], +}) + +export default config +``` + +Now in your Next.js app, include the `?encodeSourceMaps=true` parameter in any of your API requests. For performance reasons, this should only be done when in draft mode or on preview deployments. + +```ts +if (isDraftMode || process.env.VERCEL_ENV === "preview") { + const res = await fetch( + `${process.env.NEXT_PUBLIC_PAYLOAD_CMS_URL}/api/pages?where[slug][equals]=${slug}&encodeSourceMaps=true` + ); +} +``` + +And that's it! You are now ready to enter Edit Mode and begin visually editing your content. + +##### Edit Mode + +To see Visual Editing on your site, you first need to visit any preview deployment on Vercel and login using the Vercel Toolbar. When Content Source Maps are detected on the page, a pencil icon will appear in the toolbar. Clicking this icon will enable Edit Mode, highlighting all editable fields on the page in blue. + +![Versions](/images/docs/vercel-toolbar.jpg) + +### Troubleshooting + +##### Dates + +The plugin does not encode `date` fields by default, but for some cases like text that uses negative CSS letter-spacing, it may be necessary to split the encoded data out from the rendered text. This way you can safely use the cleaned data as expected. + +```ts +import { vercelStegaSplit } from "@vercel/stega"; +const { cleaned, encoded } = vercelStegaSplit(text); +``` + +##### Blocks + +All `blocks` fields by definition do not have plain text strings to encode. For this reason, blocks are given an additional `encodedSourceMap` key, which you can use to enable Visual Editing on entire sections of your site. You can then specify the editing container by adding the `data-vercel-edit-target` HTML attribute to any top-level element of your block. + +```ts +
+ {encodedSourceMap} + {children} +
+``` diff --git a/docs/rest-api/overview.mdx b/docs/rest-api/overview.mdx index fcdcfda6fa..81d9f65bb6 100644 --- a/docs/rest-api/overview.mdx +++ b/docs/rest-api/overview.mdx @@ -99,6 +99,7 @@ Note: Collection slugs must be formatted in kebab-case example: { slug: "createDocument", req: { + credentials: true, headers: true, body: { title: "New page", @@ -126,6 +127,7 @@ Note: Collection slugs must be formatted in kebab-case example: { slug: "updateDocument", req: { + credentials: true, query: true, headers: true, body: { @@ -155,6 +157,7 @@ Note: Collection slugs must be formatted in kebab-case example: { slug: "updateDocumentByID", req: { + credentials: true, headers: true, body: { title: "I have been updated by ID!", @@ -199,6 +202,7 @@ Note: Collection slugs must be formatted in kebab-case example: { slug: "deleteDocuments", req: { + credentials: true, query: true, headers: true, }, @@ -225,6 +229,7 @@ Note: Collection slugs must be formatted in kebab-case example: { slug: "deleteByID", req: { + credentials: true, headers: true, }, res: { @@ -255,6 +260,7 @@ Auth enabled collections are also given the following endpoints: example: { slug: "login", req: { + credentials: true, headers: true, body: { email: "dev@payloadcms.com", @@ -284,6 +290,7 @@ Auth enabled collections are also given the following endpoints: slug: "logout", req: { headers: true, + credentials: true, }, res: { message: "You have been logged out successfully.", @@ -298,6 +305,7 @@ Auth enabled collections are also given the following endpoints: example: { slug: "unlockCollection", req: { + credentials: true, headers: true, body: { email: "dev@payloadcms.com", @@ -316,6 +324,7 @@ Auth enabled collections are also given the following endpoints: example: { slug: "refreshToken", req: { + credentials: true, headers: true, }, res: { @@ -338,7 +347,7 @@ Auth enabled collections are also given the following endpoints: example: { slug: "verifyUser", req: { - prop: "token: string, user-collection: string", + credentials: true, headers: true, }, res: { @@ -354,6 +363,7 @@ Auth enabled collections are also given the following endpoints: example: { slug: "currentUser", req: { + credentials: true, headers: true, }, res: { @@ -380,6 +390,7 @@ Auth enabled collections are also given the following endpoints: slug: "forgotPassword", req: { headers: true, + credentials: true, body: { email: "dev@payloadcms.com", }, @@ -397,6 +408,7 @@ Auth enabled collections are also given the following endpoints: example: { slug: "resetPassword", req: { + credentials: true, headers: true, body: { token: "7eac3830ffcfc7f9f66c00315dabeb11575dba91", @@ -434,6 +446,7 @@ Globals cannot be created or deleted, so there are only two REST endpoints opene example: { slug: "getGlobal", req: { + credentials: true, headers: true, }, res: { @@ -454,6 +467,7 @@ Globals cannot be created or deleted, so there are only two REST endpoints opene slug: "updateGlobal", req: { headers: true, + credentials: true, body: { announcement: "Paging Doctor Scrunt", }, @@ -485,6 +499,7 @@ In addition to the dynamically generated endpoints above Payload also has REST e slug: "getPreference", req: { headers: true, + credentials: true, }, res: { _id: "644bb7a8307b3d363c6edf2c", @@ -507,6 +522,7 @@ In addition to the dynamically generated endpoints above Payload also has REST e slug: "createPreference", req: { headers: true, + credentials: true, body: { value: "Europe/London", }, diff --git a/examples/auth/cms/package.json b/examples/auth/cms/package.json index edebfb7b51..91e6148d69 100644 --- a/examples/auth/cms/package.json +++ b/examples/auth/cms/package.json @@ -1,6 +1,6 @@ { "name": "payload-example-auth", - "description": "Payload CMS authentication example.", + "description": "Payload authentication example.", "version": "1.0.0", "main": "dist/server.js", "license": "MIT", diff --git a/examples/auth/cms/src/payload-types.ts b/examples/auth/cms/src/payload-types.ts index 5396e1ab4c..0af85b65f1 100644 --- a/examples/auth/cms/src/payload-types.ts +++ b/examples/auth/cms/src/payload-types.ts @@ -1,6 +1,6 @@ /* tslint:disable */ /** - * This file was automatically generated by Payload CMS. + * This file was automatically generated by Payload. * DO NOT MODIFY IT BY HAND. Instead, modify your source Payload config, * and re-run `payload generate:types` to regenerate this file. */ diff --git a/examples/auth/nextjs/payload-types.ts b/examples/auth/nextjs/payload-types.ts index 5eede4b683..29edd0377d 100644 --- a/examples/auth/nextjs/payload-types.ts +++ b/examples/auth/nextjs/payload-types.ts @@ -1,6 +1,6 @@ /* tslint:disable */ /** - * This file was automatically generated by Payload CMS. + * This file was automatically generated by Payload. * DO NOT MODIFY IT BY HAND. Instead, modify your source Payload config, * and re-run `payload generate:types` to regenerate this file. */ diff --git a/examples/email/src/payload-types.ts b/examples/email/src/payload-types.ts index d600d53b68..95dee33a71 100644 --- a/examples/email/src/payload-types.ts +++ b/examples/email/src/payload-types.ts @@ -1,6 +1,6 @@ /* tslint:disable */ /** - * This file was automatically generated by Payload CMS. + * This file was automatically generated by Payload. * DO NOT MODIFY IT BY HAND. Instead, modify your source Payload config, * and re-run `payload generate:types` to regenerate this file. */ diff --git a/examples/form-builder/cms/src/payload-types.ts b/examples/form-builder/cms/src/payload-types.ts index 893187f858..3addd97794 100644 --- a/examples/form-builder/cms/src/payload-types.ts +++ b/examples/form-builder/cms/src/payload-types.ts @@ -1,6 +1,6 @@ /* tslint:disable */ /** - * This file was automatically generated by Payload CMS. + * This file was automatically generated by Payload. * DO NOT MODIFY IT BY HAND. Instead, modify your source Payload config, * and re-run `payload generate:types` to regenerate this file. */ diff --git a/examples/form-builder/nextjs/payload-types.ts b/examples/form-builder/nextjs/payload-types.ts index 893187f858..3addd97794 100644 --- a/examples/form-builder/nextjs/payload-types.ts +++ b/examples/form-builder/nextjs/payload-types.ts @@ -1,6 +1,6 @@ /* tslint:disable */ /** - * This file was automatically generated by Payload CMS. + * This file was automatically generated by Payload. * DO NOT MODIFY IT BY HAND. Instead, modify your source Payload config, * and re-run `payload generate:types` to regenerate this file. */ diff --git a/examples/multi-tenant/src/payload-types.ts b/examples/multi-tenant/src/payload-types.ts index e79efafe6e..2a2360b66a 100644 --- a/examples/multi-tenant/src/payload-types.ts +++ b/examples/multi-tenant/src/payload-types.ts @@ -1,6 +1,6 @@ /* tslint:disable */ /** - * This file was automatically generated by Payload CMS. + * This file was automatically generated by Payload. * DO NOT MODIFY IT BY HAND. Instead, modify your source Payload config, * and re-run `payload generate:types` to regenerate this file. */ diff --git a/examples/preview/cms/package.json b/examples/preview/cms/package.json index fc7be8ebd4..82979dfcfc 100644 --- a/examples/preview/cms/package.json +++ b/examples/preview/cms/package.json @@ -1,6 +1,6 @@ { "name": "payload-example-preview", - "description": "Payload CMS preview example.", + "description": "Payload preview example.", "version": "1.0.0", "main": "dist/server.js", "license": "MIT", diff --git a/examples/preview/cms/src/payload-types.ts b/examples/preview/cms/src/payload-types.ts index 3477b83ccf..6e1e2bf5ed 100644 --- a/examples/preview/cms/src/payload-types.ts +++ b/examples/preview/cms/src/payload-types.ts @@ -1,6 +1,6 @@ /* tslint:disable */ /** - * This file was automatically generated by Payload CMS. + * This file was automatically generated by Payload. * DO NOT MODIFY IT BY HAND. Instead, modify your source Payload config, * and re-run `payload generate:types` to regenerate this file. */ diff --git a/examples/preview/nextjs/payload-types.ts b/examples/preview/nextjs/payload-types.ts index 1222aa6652..6e1e2bf5ed 100644 --- a/examples/preview/nextjs/payload-types.ts +++ b/examples/preview/nextjs/payload-types.ts @@ -1,55 +1,55 @@ /* tslint:disable */ /** - * This file was automatically generated by Payload CMS. + * This file was automatically generated by Payload. * DO NOT MODIFY IT BY HAND. Instead, modify your source Payload config, * and re-run `payload generate:types` to regenerate this file. */ export interface Config { collections: { - pages: Page; - users: User; - }; + pages: Page + users: User + } globals: { - 'main-menu': MainMenu; - }; + 'main-menu': MainMenu + } } export interface Page { - id: string; - title: string; - slug?: string; - richText: { - [k: string]: unknown; - }[]; - _status?: 'draft' | 'published'; - createdAt: string; - updatedAt: string; - password?: string; + id: string + title: string + slug?: string + richText: Array<{ + [k: string]: unknown + }> + _status?: 'draft' | 'published' + createdAt: string + updatedAt: string + password?: string } export interface User { - id: string; - email?: string; - resetPasswordToken?: string; - resetPasswordExpiration?: string; - loginAttempts?: number; - lockUntil?: string; - createdAt: string; - updatedAt: string; - password?: string; + id: string + email?: string + resetPasswordToken?: string + resetPasswordExpiration?: string + loginAttempts?: number + lockUntil?: string + createdAt: string + updatedAt: string + password?: string } export interface MainMenu { - id: string; - navItems: { + id: string + navItems: Array<{ link: { - type?: 'reference' | 'custom'; - newTab?: boolean; + type?: 'reference' | 'custom' + newTab?: boolean reference: { - value: string | Page; - relationTo: 'pages'; - }; - url: string; - label: string; - }; - id?: string; - }[]; + value: string | Page + relationTo: 'pages' + } + url: string + label: string + } + id?: string + }> } diff --git a/examples/redirects/cms/src/payload-types.ts b/examples/redirects/cms/src/payload-types.ts index 792f4aa362..04ae8acac9 100644 --- a/examples/redirects/cms/src/payload-types.ts +++ b/examples/redirects/cms/src/payload-types.ts @@ -1,6 +1,6 @@ /* tslint:disable */ /** - * This file was automatically generated by Payload CMS. + * This file was automatically generated by Payload. * DO NOT MODIFY IT BY HAND. Instead, modify your source Payload config, * and re-run `payload generate:types` to regenerate this file. */ diff --git a/examples/redirects/nextjs/payload-types.ts b/examples/redirects/nextjs/payload-types.ts index 9ee62e5a6d..190bb6a519 100644 --- a/examples/redirects/nextjs/payload-types.ts +++ b/examples/redirects/nextjs/payload-types.ts @@ -1,6 +1,6 @@ /* tslint:disable */ /** - * This file was automatically generated by Payload CMS. + * This file was automatically generated by Payload. * DO NOT MODIFY IT BY HAND. Instead, modify your source Payload config, * and re-run `payload generate:types` to regenerate this file. */ diff --git a/package.json b/package.json index 3e9fa8d4fb..8d67a46f0f 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "payload", - "version": "1.9.1", + "version": "1.10.2", "description": "Node, React and MongoDB Headless CMS and Application Framework", "license": "MIT", "engines": { @@ -9,12 +9,12 @@ }, "author": { "email": "info@payloadcms.com", - "name": "Payload CMS", + "name": "Payload", "url": "https://payloadcms.com" }, "maintainers": [ { - "name": "Payload CMS", + "name": "Payload", "email": "info@payloadcms.com", "url": "https://payloadcms.com" } @@ -194,7 +194,7 @@ "webpack-hot-middleware": "^2.25.3" }, "devDependencies": { - "@playwright/test": "^1.32.3", + "@playwright/test": "1.33.0", "@release-it/conventional-changelog": "^5.1.1", "@swc/jest": "^0.2.24", "@testing-library/jest-dom": "^5.16.5", @@ -262,7 +262,7 @@ "eslint-plugin-jest-dom": "^4.0.3", "eslint-plugin-jsx-a11y": "^6.7.1", "eslint-plugin-node": "^11.1.0", - "eslint-plugin-playwright": "^0.11.2", + "eslint-plugin-playwright": "^0.12.0", "eslint-plugin-react": "^7.32.2", "eslint-plugin-react-hooks": "^4.6.0", "form-data": "^3.0.1", diff --git a/playwright.config.ts b/playwright.config.ts index 73cd5b7dfc..655d8f6c64 100644 --- a/playwright.config.ts +++ b/playwright.config.ts @@ -1,7 +1,7 @@ import type { PlaywrightTestConfig } from '@playwright/test'; const config: PlaywrightTestConfig = { - // Look for test files in the "tests" directory, relative to this configuration file + // Look for test files in the "test" directory, relative to this configuration file testDir: 'test', testMatch: '*e2e.spec.ts', workers: 999, diff --git a/src/admin/components/Routes.tsx b/src/admin/components/Routes.tsx index 422ec3a67a..9bab1d07f4 100644 --- a/src/admin/components/Routes.tsx +++ b/src/admin/components/Routes.tsx @@ -315,7 +315,7 @@ const Routes: React.FC = () => { )} - ) : } + ) : } diff --git a/src/admin/components/elements/Autosave/index.tsx b/src/admin/components/elements/Autosave/index.tsx index 71706806e4..d9c387a848 100644 --- a/src/admin/components/elements/Autosave/index.tsx +++ b/src/admin/components/elements/Autosave/index.tsx @@ -32,6 +32,7 @@ const Autosave: React.FC = ({ collection, global, id, publishedDocUpdated const debouncedFields = useDebounce(fields, interval); const fieldRef = useRef(fields); const modifiedRef = useRef(modified); + const localeRef = useRef(locale); // Store fields in ref so the autosave func // can always retrieve the most to date copies @@ -85,12 +86,12 @@ const Autosave: React.FC = ({ collection, global, id, publishedDocUpdated let method: string; if (collection && id) { - url = `${serverURL}${api}/${collection.slug}/${id}?draft=true&autosave=true&locale=${locale}`; + url = `${serverURL}${api}/${collection.slug}/${id}?draft=true&autosave=true&locale=${localeRef.current}`; method = 'PATCH'; } if (global) { - url = `${serverURL}${api}/globals/${global.slug}?draft=true&autosave=true&locale=${locale}`; + url = `${serverURL}${api}/globals/${global.slug}?draft=true&autosave=true&locale=${localeRef.current}`; method = 'POST'; } @@ -125,7 +126,7 @@ const Autosave: React.FC = ({ collection, global, id, publishedDocUpdated }; autosave(); - }, [i18n, debouncedFields, modified, serverURL, api, collection, global, id, getVersions, locale, modifiedRef]); + }, [i18n, debouncedFields, modified, serverURL, api, collection, global, id, getVersions, localeRef, modifiedRef]); useEffect(() => { if (versions?.docs?.[0]) { diff --git a/src/admin/components/elements/DraggableSortable/useDraggableSortable/index.tsx b/src/admin/components/elements/DraggableSortable/useDraggableSortable/index.tsx index c54b756039..49e644eac5 100644 --- a/src/admin/components/elements/DraggableSortable/useDraggableSortable/index.tsx +++ b/src/admin/components/elements/DraggableSortable/useDraggableSortable/index.tsx @@ -23,6 +23,6 @@ export const useDraggableSortable = (props: UseDraggableArguments): UseDraggable isDragging, listeners, setNodeRef, - transform: transform && `translate3d(${transform.x}px, ${transform.y}px, 0)`, + transform: transform && `translate3d(${transform.x}px, ${transform.y}px, 0)`, // translate3d is faster than translate in most browsers }; }; diff --git a/src/admin/components/elements/ReactSelect/Control/index.tsx b/src/admin/components/elements/ReactSelect/Control/index.tsx index a1f9da0470..fe45d832ae 100644 --- a/src/admin/components/elements/ReactSelect/Control/index.tsx +++ b/src/admin/components/elements/ReactSelect/Control/index.tsx @@ -1,14 +1,16 @@ import React from 'react'; import { components as SelectComponents, ControlProps } from 'react-select'; -import { Option } from '../../../forms/field-types/Relationship/types'; +import type { Option } from '../types'; export const Control: React.FC> = (props) => { const { children, innerProps, - customProps: { - disableMouseDown, - disableKeyDown, + selectProps: { + customProps: { + disableMouseDown, + disableKeyDown, + } = {}, } = {}, } = props; diff --git a/src/admin/components/elements/ReactSelect/MultiValue/index.tsx b/src/admin/components/elements/ReactSelect/MultiValue/index.tsx index d3f22800db..67360037dd 100644 --- a/src/admin/components/elements/ReactSelect/MultiValue/index.tsx +++ b/src/admin/components/elements/ReactSelect/MultiValue/index.tsx @@ -4,12 +4,12 @@ import { components as SelectComponents, } from 'react-select'; import { useDraggableSortable } from '../../DraggableSortable/useDraggableSortable'; -import { Option as OptionType } from '../types'; +import type { Option } from '../types'; import './index.scss'; const baseClass = 'multi-value'; -export const MultiValue: React.FC> = (props) => { +export const MultiValue: React.FC> = (props) => { const { className, isDisabled, @@ -17,8 +17,10 @@ export const MultiValue: React.FC> = (props) => { data: { value, }, - customProps: { - disableMouseDown, + selectProps: { + customProps: { + disableMouseDown, + } = {}, } = {}, } = props; diff --git a/src/admin/components/elements/ReactSelect/MultiValueLabel/index.tsx b/src/admin/components/elements/ReactSelect/MultiValueLabel/index.tsx index 65f6ae0422..4feafc164e 100644 --- a/src/admin/components/elements/ReactSelect/MultiValueLabel/index.tsx +++ b/src/admin/components/elements/ReactSelect/MultiValueLabel/index.tsx @@ -1,14 +1,16 @@ import React from 'react'; import { components as SelectComponents, MultiValueProps } from 'react-select'; -import { Option } from '../../../forms/field-types/Relationship/types'; +import type { Option } from '../types'; import './index.scss'; const baseClass = 'multi-value-label'; export const MultiValueLabel: React.FC> = (props) => { const { - customProps: { - draggableProps, + selectProps: { + customProps: { + draggableProps, + } = {}, } = {}, } = props; diff --git a/src/admin/components/elements/ReactSelect/ValueContainer/index.scss b/src/admin/components/elements/ReactSelect/ValueContainer/index.scss index d2ac7a5d65..3202c44741 100644 --- a/src/admin/components/elements/ReactSelect/ValueContainer/index.scss +++ b/src/admin/components/elements/ReactSelect/ValueContainer/index.scss @@ -2,6 +2,7 @@ .value-container { flex-grow: 1; + min-width: 0; .rs__value-container { padding: base(.25) 0; diff --git a/src/admin/components/elements/ReactSelect/ValueContainer/index.tsx b/src/admin/components/elements/ReactSelect/ValueContainer/index.tsx index cccd786519..aaf4703476 100644 --- a/src/admin/components/elements/ReactSelect/ValueContainer/index.tsx +++ b/src/admin/components/elements/ReactSelect/ValueContainer/index.tsx @@ -8,7 +8,9 @@ const baseClass = 'value-container'; export const ValueContainer: React.FC> = (props) => { const { - customProps, + selectProps: { + customProps, + } = {}, } = props; return ( diff --git a/src/admin/components/elements/ReactSelect/index.tsx b/src/admin/components/elements/ReactSelect/index.tsx index 1bc314e1b9..5a9f989177 100644 --- a/src/admin/components/elements/ReactSelect/index.tsx +++ b/src/admin/components/elements/ReactSelect/index.tsx @@ -1,5 +1,6 @@ -import React from 'react'; +import React, { KeyboardEventHandler } from 'react'; import Select from 'react-select'; +import CreatableSelect from 'react-select/creatable'; import { useTranslation } from 'react-i18next'; import { arrayMove } from '@dnd-kit/sortable'; import { Props as ReactSelectAdapterProps } from './types'; @@ -13,11 +14,20 @@ import { ClearIndicator } from './ClearIndicator'; import { MultiValueRemove } from './MultiValueRemove'; import { Control } from './Control'; import DraggableSortable from '../DraggableSortable'; +import type { Option } from './types'; import './index.scss'; + +const createOption = (label: string) => ({ + label, + value: label, +}); + + const SelectAdapter: React.FC = (props) => { const { t, i18n } = useTranslation(); + const [inputValue, setInputValue] = React.useState(''); // for creatable select const { className, @@ -30,9 +40,12 @@ const SelectAdapter: React.FC = (props) => { isSearchable = true, isClearable = true, filterOption = undefined, + numberOnly = false, isLoading, onMenuOpen, components, + isCreatable, + selectProps, } = props; const classes = [ @@ -41,12 +54,73 @@ const SelectAdapter: React.FC = (props) => { showError && 'react-select--error', ].filter(Boolean).join(' '); + if (!isCreatable) { + return ( + = (props) => { filterOption={filterOption} onMenuOpen={onMenuOpen} menuPlacement="auto" + inputValue={inputValue} + onInputChange={(newValue) => setInputValue(newValue)} + onKeyDown={handleKeyDown} components={{ ValueContainer, SingleValue, @@ -79,8 +156,10 @@ const SortableSelect: React.FC = (props) => { value, } = props; + let ids: string[] = []; - if (value) ids = Array.isArray(value) ? value.map((item) => item?.value as string) : [value?.value as string]; // TODO: fix these types + if (value) ids = Array.isArray(value) ? value.map((item) => item?.id ?? `${item?.value}` as string) : [value?.id || `${value?.value}` as string]; + return ( boolean) | undefined, + numberOnly?: boolean, components?: { [key: string]: React.FC } selectProps?: CustomSelectProps + backspaceRemovesValue?: boolean } diff --git a/src/admin/components/forms/Form/fieldReducer.ts b/src/admin/components/forms/Form/fieldReducer.ts index d268b36d4a..f6ff5a1010 100644 --- a/src/admin/components/forms/Form/fieldReducer.ts +++ b/src/admin/components/forms/Form/fieldReducer.ts @@ -49,7 +49,7 @@ export function fieldReducer(state: Fields, action: FieldAction): Fields { // Besides those who still fail their own conditions if (passesCondition && field.condition) { - passesCondition = field.condition(reduceFieldsToValues(state), getSiblingData(state, path), { user }); + passesCondition = field.condition(reduceFieldsToValues(state, true), getSiblingData(state, path), { user }); } return { diff --git a/src/admin/components/forms/field-types/Number/index.scss b/src/admin/components/forms/field-types/Number/index.scss index 2f29ff77b8..054b853bd8 100644 --- a/src/admin/components/forms/field-types/Number/index.scss +++ b/src/admin/components/forms/field-types/Number/index.scss @@ -4,8 +4,10 @@ position: relative; margin-bottom: $baseline; - input { - @include formInput; + &:not(.has-many) { + input { + @include formInput; + } } &.error { diff --git a/src/admin/components/forms/field-types/Number/index.tsx b/src/admin/components/forms/field-types/Number/index.tsx index 10fb897601..27837a1168 100644 --- a/src/admin/components/forms/field-types/Number/index.tsx +++ b/src/admin/components/forms/field-types/Number/index.tsx @@ -1,4 +1,4 @@ -import React, { useCallback } from 'react'; +import React, { useCallback, useEffect, useState } from 'react'; import { useTranslation } from 'react-i18next'; import useField from '../../useField'; import Label from '../../Label'; @@ -8,8 +8,11 @@ import withCondition from '../../withCondition'; import { number } from '../../../../../fields/validations'; import { Props } from './types'; import { getTranslation } from '../../../../../utilities/getTranslation'; +import { Option } from '../../../elements/ReactSelect/types'; +import ReactSelect from '../../../elements/ReactSelect'; import './index.scss'; +import { isNumber } from '../../../../../utilities/isNumber'; const NumberField: React.FC = (props) => { const { @@ -20,6 +23,9 @@ const NumberField: React.FC = (props) => { label, max, min, + hasMany, + minRows, + maxRows, admin: { readOnly, style, @@ -32,7 +38,7 @@ const NumberField: React.FC = (props) => { } = {}, } = props; - const { i18n } = useTranslation(); + const { t, i18n } = useTranslation(); const path = pathFromProps || name; @@ -45,7 +51,7 @@ const NumberField: React.FC = (props) => { showError, setValue, errorMessage, - } = useField({ + } = useField({ path, validate: memoizedValidate, condition, @@ -67,8 +73,46 @@ const NumberField: React.FC = (props) => { className, showError && 'error', readOnly && 'read-only', + hasMany && 'has-many', ].filter(Boolean).join(' '); + const [valueToRender, setValueToRender] = useState<{label: string, value: {value: number}, id: string}[]>([]); // Only for hasMany + + const handleHasManyChange = useCallback((selectedOption) => { + if (!readOnly) { + let newValue; + if (!selectedOption) { + newValue = []; + } else if (Array.isArray(selectedOption)) { + newValue = selectedOption.map((option) => Number(option.value?.value || option.value)); + } else { + newValue = [Number(selectedOption.value?.value || selectedOption.value)]; + } + + setValue(newValue); + } + }, [ + readOnly, + setValue, + ]); + + // useeffect update valueToRender: + useEffect(() => { + if (hasMany && Array.isArray(value)) { + setValueToRender(value.map((val, index) => { + return { + label: `${val}`, + value: { + value: (val as any)?.value || val, + toString: () => `${val}${index}`, + }, // You're probably wondering, why the hell is this done that way? Well, React-select automatically uses "label-value" as a key, so we will get that react duplicate key warning if we just pass in the value as multiple values can be the same. So we need to append the index to the toString() of the value to avoid that warning, as it uses that as the key. + id: `${val}${index}`, // append index to avoid duplicate keys but allow duplicate numbers + }; + })); + } + }, [value, hasMany]); + + return (
= (props) => { label={label} required={required} /> - { - // eslint-disable-next-line @typescript-eslint/ban-ts-comment - // @ts-ignore - e.target.blur(); - }} - /> + {hasMany ? ( + { + // eslint-disable-next-line no-restricted-globals + return isNumber(rawInput) + }} + numberOnly + /> + ) : ( + { + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-ignore + e.target.blur(); + }} + /> + )} + = (props) => { const [drawerIsOpen, setDrawerIsOpen] = useState(false); - const getResults: GetResults = useCallback(async ({ - lastFullyLoadedRelation: lastFullyLoadedRelationArg, - search: searchArg, - value: valueArg, - sort, - onSuccess, - }) => { - if (!permissions) { - return; - } - const lastFullyLoadedRelationToUse = typeof lastFullyLoadedRelationArg !== 'undefined' ? lastFullyLoadedRelationArg : -1; - - const relations = Array.isArray(relationTo) ? relationTo : [relationTo]; - const relationsToFetch = lastFullyLoadedRelationToUse === -1 ? relations : relations.slice(lastFullyLoadedRelationToUse + 1); - - let resultsFetched = 0; - const relationMap = createRelationMap({ - hasMany, - relationTo, + const getResults: GetResults = useCallback( + async ({ + lastFullyLoadedRelation: lastFullyLoadedRelationArg, + search: searchArg, value: valueArg, - }); + sort, + onSuccess, + }) => { + if (!permissions) { + return; + } + const lastFullyLoadedRelationToUse = typeof lastFullyLoadedRelationArg !== 'undefined' + ? lastFullyLoadedRelationArg + : -1; - if (!errorLoading) { - relationsToFetch.reduce(async (priorRelation, relation) => { - const lastLoadedPageToUse = (lastLoadedPage[relation] + 1) || 1; - await priorRelation; + const relations = Array.isArray(relationTo) ? relationTo : [relationTo]; + const relationsToFetch = lastFullyLoadedRelationToUse === -1 + ? relations + : relations.slice(lastFullyLoadedRelationToUse + 1); - if (resultsFetched < 10) { - const collection = collections.find((coll) => coll.slug === relation); - const fieldToSearch = collection?.admin?.useAsTitle || 'id'; + let resultsFetched = 0; + const relationMap = createRelationMap({ + hasMany, + relationTo, + value: valueArg, + }); - const query: { - [key: string]: unknown - where: Where - } = { - where: { - and: [ - { - id: { - not_in: relationMap[relation], + if (!errorLoading) { + relationsToFetch.reduce(async (priorRelation, relation) => { + let lastLoadedPageToUse; + if (search !== searchArg) { + lastLoadedPageToUse = 1; + } else { + lastLoadedPageToUse = lastLoadedPage[relation] + 1; + } + await priorRelation; + + if (resultsFetched < 10) { + const collection = collections.find( + (coll) => coll.slug === relation, + ); + const fieldToSearch = collection?.admin?.useAsTitle || 'id'; + + const query: { + [key: string]: unknown; + where: Where; + } = { + where: { + and: [ + { + id: { + not_in: relationMap[relation], + }, }, - }, - ], - }, - limit: maxResultsPerRequest, - page: lastLoadedPageToUse, - sort: fieldToSearch, - locale, - depth: 0, - }; - - if (searchArg) { - query.where.and.push({ - [fieldToSearch]: { - like: searchArg, + ], }, - }); - } + limit: maxResultsPerRequest, + page: lastLoadedPageToUse, + sort: fieldToSearch, + locale, + depth: 0, + }; - if (filterOptionsResult?.[relation]) { - query.where.and.push(filterOptionsResult[relation]); - } - - const response = await fetch(`${serverURL}${api}/${relation}?${qs.stringify(query)}`, { - credentials: 'include', - headers: { - 'Accept-Language': i18n.language, - }, - }); - - if (response.ok) { - const data: PaginatedDocs = await response.json(); - - setLastLoadedPage((prevState) => ({ - ...prevState, - [relation]: lastLoadedPageToUse, - })); - - if (!data.nextPage) { - setLastFullyLoadedRelation(relations.indexOf(relation)); + if (searchArg) { + query.where.and.push({ + [fieldToSearch]: { + like: searchArg, + }, + }); } - if (data.docs.length > 0) { - resultsFetched += data.docs.length; + if (filterOptionsResult?.[relation]) { + query.where.and.push(filterOptionsResult[relation]); + } + const response = await fetch( + `${serverURL}${api}/${relation}?${qs.stringify(query)}`, + { + credentials: 'include', + headers: { + 'Accept-Language': i18n.language, + }, + }, + ); + + if (response.ok) { + const data: PaginatedDocs = await response.json(); + setLastLoadedPage((prevState) => { + return { + ...prevState, + [relation]: lastLoadedPageToUse, + }; + }); + + if (!data.nextPage) { + setLastFullyLoadedRelation(relations.indexOf(relation)); + } + + if (data.docs.length > 0) { + resultsFetched += data.docs.length; + + dispatchOptions({ + type: 'ADD', + docs: data.docs, + collection, + sort, + i18n, + config, + }); + } + } else if (response.status === 403) { + setLastFullyLoadedRelation(relations.indexOf(relation)); dispatchOptions({ type: 'ADD', - docs: data.docs, + docs: [], collection, sort, + ids: relationMap[relation], i18n, config, }); + } else { + setErrorLoading(t('error:unspecific')); } - } else if (response.status === 403) { - setLastFullyLoadedRelation(relations.indexOf(relation)); - dispatchOptions({ - type: 'ADD', - docs: [], - collection, - sort, - ids: relationMap[relation], - i18n, - config, - }); - } else { - setErrorLoading(t('error:unspecific')); } - } - }, Promise.resolve()); + }, Promise.resolve()); - if (typeof onSuccess === 'function') onSuccess(); - } - }, [ - lastLoadedPage, - permissions, - relationTo, - hasMany, - errorLoading, - collections, - filterOptionsResult, - serverURL, - api, - t, - i18n, - locale, - config, - ]); + if (typeof onSuccess === 'function') onSuccess(); + } + }, + [ + permissions, + relationTo, + hasMany, + errorLoading, + search, + lastLoadedPage, + collections, + locale, + filterOptionsResult, + serverURL, + api, + i18n, + config, + t, + ], + ); const updateSearch = useDebouncedCallback((searchArg: string, valueArg: Value | Value[]) => { getResults({ search: searchArg, value: valueArg, sort: true }); setSearch(searchArg); - }, [getResults]); + }, 300); const handleInputChange = useCallback((searchArg: string, valueArg: Value | Value[]) => { if (search !== searchArg) { + setLastLoadedPage({}); updateSearch(searchArg, valueArg); } }, [search, updateSearch]); @@ -375,6 +395,7 @@ const Relationship: React.FC = (props) => { {!errorLoading && (
handleInputChange(newSearch, value)} onChange={!readOnly ? (selected) => { diff --git a/src/admin/components/forms/field-types/Relationship/select-components/MultiValueLabel/index.tsx b/src/admin/components/forms/field-types/Relationship/select-components/MultiValueLabel/index.tsx index ad02713458..27d3af21a7 100644 --- a/src/admin/components/forms/field-types/Relationship/select-components/MultiValueLabel/index.tsx +++ b/src/admin/components/forms/field-types/Relationship/select-components/MultiValueLabel/index.tsx @@ -17,10 +17,12 @@ export const MultiValueLabel: React.FC> = (props) => { relationTo, label, }, - customProps: { - setDrawerIsOpen, - draggableProps, - onSave, + selectProps: { + customProps: { + setDrawerIsOpen, + draggableProps, + onSave, + } = {}, } = {}, } = props; diff --git a/src/admin/components/forms/field-types/Relationship/select-components/SingleValue/index.scss b/src/admin/components/forms/field-types/Relationship/select-components/SingleValue/index.scss index c5aff998c9..fc4e162e42 100644 --- a/src/admin/components/forms/field-types/Relationship/select-components/SingleValue/index.scss +++ b/src/admin/components/forms/field-types/Relationship/select-components/SingleValue/index.scss @@ -2,6 +2,11 @@ .relationship--single-value { + &.rs__single-value { + overflow: visible; + min-width: 0; + } + &__label-text { max-width: unset; display: flex; diff --git a/src/admin/components/forms/field-types/Relationship/select-components/SingleValue/index.tsx b/src/admin/components/forms/field-types/Relationship/select-components/SingleValue/index.tsx index 17ef16cab3..53c8cee6bf 100644 --- a/src/admin/components/forms/field-types/Relationship/select-components/SingleValue/index.tsx +++ b/src/admin/components/forms/field-types/Relationship/select-components/SingleValue/index.tsx @@ -18,9 +18,11 @@ export const SingleValue: React.FC> = (props) => { label, }, children, - customProps: { - setDrawerIsOpen, - onSave, + selectProps: { + customProps: { + setDrawerIsOpen, + onSave, + } = {}, } = {}, } = props; @@ -35,7 +37,9 @@ export const SingleValue: React.FC> = (props) => { }); useEffect(() => { - if (typeof setDrawerIsOpen === 'function') setDrawerIsOpen(isDrawerOpen); + if (typeof setDrawerIsOpen === 'function') { + setDrawerIsOpen(isDrawerOpen); + } }, [isDrawerOpen, setDrawerIsOpen]); return ( diff --git a/src/admin/components/forms/withCondition/WatchCondition.tsx b/src/admin/components/forms/withCondition/WatchCondition.tsx new file mode 100644 index 0000000000..d9deb0fb5a --- /dev/null +++ b/src/admin/components/forms/withCondition/WatchCondition.tsx @@ -0,0 +1,57 @@ +import React, { useEffect } from 'react'; +import { useAuth } from '../../utilities/Auth'; +import { useAllFormFields } from '../Form/context'; +import { useDocumentInfo } from '../../utilities/DocumentInfo'; +import reduceFieldsToValues from '../Form/reduceFieldsToValues'; +import getSiblingData from '../Form/getSiblingData'; +import { Condition } from '../../../../fields/config/types'; + +type Props = { + path?: string + name: string + condition: Condition + setShowField: (isVisible: boolean) => void +} + +export const WatchCondition: React.FC = ({ + path: pathFromProps, + name, + condition, + setShowField, +}) => { + const path = typeof pathFromProps === 'string' ? pathFromProps : name; + + const { user } = useAuth(); + const [fields, dispatchFields] = useAllFormFields(); + const { id } = useDocumentInfo(); + + const data = reduceFieldsToValues(fields, true); + const siblingData = getSiblingData(fields, path); + + // Manually provide ID to `data` + data.id = id; + + const hasCondition = Boolean(condition); + const isPassingCondition = hasCondition ? condition(data, siblingData, { user }) : true; + const field = fields[path]; + + const wasPassingCondition = field?.passesCondition; + + useEffect(() => { + if (hasCondition) { + if (isPassingCondition && !wasPassingCondition) { + dispatchFields({ type: 'MODIFY_CONDITION', path, result: true, user }); + } + + if (!isPassingCondition && (wasPassingCondition || typeof wasPassingCondition === 'undefined')) { + dispatchFields({ type: 'MODIFY_CONDITION', path, result: false, user }); + } + } + }, [isPassingCondition, wasPassingCondition, dispatchFields, path, hasCondition, user, setShowField]); + + useEffect(() => { + setShowField(isPassingCondition); + }, [setShowField, isPassingCondition]); + + return null; +}; diff --git a/src/admin/components/forms/withCondition/index.tsx b/src/admin/components/forms/withCondition/index.tsx index 490cbe4b68..5b7b6875b6 100644 --- a/src/admin/components/forms/withCondition/index.tsx +++ b/src/admin/components/forms/withCondition/index.tsx @@ -1,12 +1,8 @@ 'use client'; -import React, { useEffect } from 'react'; +import React from 'react'; import { FieldBase } from '../../../../fields/config/types'; -import { useAllFormFields } from '../Form/context'; -import getSiblingData from '../Form/getSiblingData'; -import reduceFieldsToValues from '../Form/reduceFieldsToValues'; -import { useDocumentInfo } from '../../utilities/DocumentInfo'; -import { useAuth } from '../../utilities/Auth'; +import { WatchCondition } from './WatchCondition'; const withCondition =

>(Field: React.ComponentType

): React.FC

=> { const CheckForCondition: React.FC

= (props) => { @@ -26,7 +22,7 @@ const withCondition =

>(Field: React.Component const WithCondition: React.FC

= (props) => { const { name, - path: pathFromProps, + path, admin: { condition, } = {}, @@ -34,41 +30,30 @@ const withCondition =

>(Field: React.Component path?: string }; - const path = typeof pathFromProps === 'string' ? pathFromProps : name; + const [showField, setShowField] = React.useState(false); - const { user } = useAuth(); - const [fields, dispatchFields] = useAllFormFields(); - const { id } = useDocumentInfo(); - - const data = reduceFieldsToValues(fields, true); - const siblingData = getSiblingData(fields, path); - - // Manually provide ID to `data` - data.id = id; - - const hasCondition = Boolean(condition); - const currentlyPassesCondition = hasCondition ? condition(data, siblingData, { user }) : true; - const field = fields[path]; - const existingConditionPasses = field?.passesCondition; - - - useEffect(() => { - if (hasCondition) { - if (!existingConditionPasses && currentlyPassesCondition) { - dispatchFields({ type: 'MODIFY_CONDITION', path, result: true, user }); - } - - if (!currentlyPassesCondition && (existingConditionPasses || typeof existingConditionPasses === 'undefined')) { - dispatchFields({ type: 'MODIFY_CONDITION', path, result: false, user }); - } - } - }, [currentlyPassesCondition, existingConditionPasses, dispatchFields, path, hasCondition, user]); - - if (currentlyPassesCondition) { - return ; + if (showField) { + return ( + + + + + ); } - return null; + return ( + + ); }; return CheckForCondition; diff --git a/src/admin/components/templates/Default/index.tsx b/src/admin/components/templates/Default/index.tsx index a5d32da903..7060af12e8 100644 --- a/src/admin/components/templates/Default/index.tsx +++ b/src/admin/components/templates/Default/index.tsx @@ -31,8 +31,8 @@ const Default: React.FC = ({ children, className }) => {

= ({ children setUser(json.user); } else { setUser(null); - push(`${admin}${logoutInactivityRoute}`); + push(`${admin}${logoutInactivityRoute}?redirect=${encodeURIComponent(window.location.pathname)}`); } }, 1000); } @@ -159,7 +159,7 @@ export const AuthProvider: React.FC<{ children: React.ReactNode }> = ({ children if (remainingTime > 0) { forceLogOut = setTimeout(() => { setUser(null); - push(`${admin}${logoutInactivityRoute}`); + push(`${admin}${logoutInactivityRoute}?redirect=${encodeURIComponent(window.location.pathname)}`); closeAllModals(); }, Math.min(remainingTime * 1000, maxTimeoutTime)); } diff --git a/src/admin/components/views/Login/index.tsx b/src/admin/components/views/Login/index.tsx index f0c7db151a..02bb399e37 100644 --- a/src/admin/components/views/Login/index.tsx +++ b/src/admin/components/views/Login/index.tsx @@ -1,5 +1,5 @@ import React from 'react'; -import { Link, useHistory } from 'react-router-dom'; +import { Link, useHistory, useLocation } from 'react-router-dom'; import { Trans, useTranslation } from 'react-i18next'; import { useConfig } from '../../utilities/Config'; import { useAuth } from '../../utilities/Auth'; @@ -41,10 +41,16 @@ const Login: React.FC = () => { const collection = collections.find(({ slug }) => slug === userSlug); + // Fetch 'redirect' from the query string which denotes the URL the user originally tried to visit. This is set in the Routes.tsx file when a user tries to access a protected route and is redirected to the login screen. + const query = new URLSearchParams(useLocation().search); + const redirect = query.get('redirect'); + + const onSuccess = (data) => { if (data.token) { setToken(data.token); - history.push(admin); + + history.push(redirect || admin); } }; diff --git a/src/admin/components/views/Logout/index.tsx b/src/admin/components/views/Logout/index.tsx index 58c3bafe40..8ae0cdc9d1 100644 --- a/src/admin/components/views/Logout/index.tsx +++ b/src/admin/components/views/Logout/index.tsx @@ -1,5 +1,6 @@ import React, { useEffect } from 'react'; import { useTranslation } from 'react-i18next'; +import { useLocation } from 'react-router-dom'; import { useConfig } from '../../utilities/Config'; import { useAuth } from '../../utilities/Auth'; import Minimal from '../../templates/Minimal'; @@ -17,6 +18,10 @@ const Logout: React.FC<{inactivity?: boolean}> = (props) => { const { routes: { admin } } = useConfig(); const { t } = useTranslation('authentication'); + // Fetch 'redirect' from the query string which denotes the URL the user originally tried to visit. This is set in the Routes.tsx file when a user tries to access a protected route and is redirected to the login screen. + const query = new URLSearchParams(useLocation().search); + const redirect = query.get('redirect'); + useEffect(() => { logOut(); }, [logOut]); @@ -39,7 +44,7 @@ const Logout: React.FC<{inactivity?: boolean}> = (props) => { diff --git a/src/admin/components/views/Version/Compare/index.tsx b/src/admin/components/views/Version/Compare/index.tsx index 8052db6c9e..60cbca0b2c 100644 --- a/src/admin/components/views/Version/Compare/index.tsx +++ b/src/admin/components/views/Version/Compare/index.tsx @@ -76,7 +76,7 @@ const CompareVersion: React.FC = (props) => { setOptions((existingOptions) => [ ...existingOptions, ...data.docs.map((doc) => ({ - label: formatDate(doc.createdAt, dateFormat, i18n?.language), + label: formatDate(doc.updatedAt, dateFormat, i18n?.language), value: doc.id, })), ]); diff --git a/src/admin/components/views/Version/RenderFieldsToDiff/fields/styles.ts b/src/admin/components/views/Version/RenderFieldsToDiff/fields/styles.ts index d20e43f6a0..f6cab44c79 100644 --- a/src/admin/components/views/Version/RenderFieldsToDiff/fields/styles.ts +++ b/src/admin/components/views/Version/RenderFieldsToDiff/fields/styles.ts @@ -2,6 +2,7 @@ export const diffStyles = { variables: { light: { diffViewerBackground: 'transparent', + diffViewerColor: 'var(--theme-text)', addedBackground: 'var(--theme-success-100)', addedColor: 'var(--theme-success-900)', removedBackground: 'var(--theme-error-100)', @@ -10,5 +11,16 @@ export const diffStyles = { wordRemovedBackground: 'var(--theme-error-200)', emptyLineBackground: 'var(--theme-elevation-50)', }, + dark: { + diffViewerBackground: 'transparent', + diffViewerColor: 'var(--theme-text)', + addedBackground: 'var(--theme-success-900)', + addedColor: 'var(--theme-success-100)', + removedBackground: 'var(--theme-error-900)', + removedColor: 'var(--theme-error-100)', + wordAddedBackground: 'var(--theme-success-800)', + wordRemovedBackground: 'var(--theme-error-800)', + emptyLineBackground: 'var(--theme-elevation-50)', + }, }, }; diff --git a/src/admin/scss/app.scss b/src/admin/scss/app.scss index ebdf23015f..1d48f0b858 100644 --- a/src/admin/scss/app.scss +++ b/src/admin/scss/app.scss @@ -34,7 +34,7 @@ @include mid-break { --gutter-h: #{base(2)}; - --nav-width: 0; + --nav-width: 0px; } @include small-break { diff --git a/src/auth/operations/forgotPassword.ts b/src/auth/operations/forgotPassword.ts index 2d8e45a656..51493fdbc6 100644 --- a/src/auth/operations/forgotPassword.ts +++ b/src/auth/operations/forgotPassword.ts @@ -68,6 +68,10 @@ async function forgotPassword(incomingArgs: Arguments): Promise { resetPasswordExpiration?: Date, } + if (!data.email) { + throw new APIError('Missing email.'); + } + let user = await payload.db.findOne({ collection: collectionConfig.slug, where: { email: { equals: (data.email as string).toLowerCase() } }, diff --git a/src/auth/operations/local/forgotPassword.ts b/src/auth/operations/local/forgotPassword.ts index dc43ad7826..6a6ff74554 100644 --- a/src/auth/operations/local/forgotPassword.ts +++ b/src/auth/operations/local/forgotPassword.ts @@ -34,7 +34,7 @@ async function localForgotPassword( throw new APIError(`The collection with slug ${String(collectionSlug)} can't be found.`); } - req.payloadAPI = 'local'; + req.payloadAPI = req.payloadAPI || 'local'; req.payload = payload; req.i18n = i18n(payload.config.i18n); req.locale = undefined; diff --git a/src/auth/operations/local/resetPassword.ts b/src/auth/operations/local/resetPassword.ts index 1f6466ca28..7e061caa5f 100644 --- a/src/auth/operations/local/resetPassword.ts +++ b/src/auth/operations/local/resetPassword.ts @@ -34,7 +34,7 @@ async function localResetPassword } req.payload = payload; - req.payloadAPI = 'local'; + req.payloadAPI = req.payloadAPI || 'local'; req.i18n = i18n(payload.config.i18n); if (!req.t) req.t = req.i18n.t; diff --git a/src/auth/operations/local/unlock.ts b/src/auth/operations/local/unlock.ts index 70c448cab9..1080c546e7 100644 --- a/src/auth/operations/local/unlock.ts +++ b/src/auth/operations/local/unlock.ts @@ -33,7 +33,7 @@ async function localUnlock( } req.payload = payload; - req.payloadAPI = 'local'; + req.payloadAPI = req.payloadAPI || 'local'; req.i18n = i18n(payload.config.i18n); if (!req.t) req.t = req.i18n.t; diff --git a/src/auth/operations/resetPassword.ts b/src/auth/operations/resetPassword.ts index 70b3d44b8f..79ab83f159 100644 --- a/src/auth/operations/resetPassword.ts +++ b/src/auth/operations/resetPassword.ts @@ -7,7 +7,6 @@ import { fieldAffectsData } from '../../fields/config/types'; import { PayloadRequest } from '../../express/types'; import { authenticateLocalStrategy } from '../strategies/local/authenticate'; import { generatePasswordSaltHash } from '../strategies/local/generatePasswordSaltHash'; -import sanitizeInternalFields from '../../utilities/sanitizeInternalFields'; export type Result = { token: string diff --git a/src/auth/operations/unlock.ts b/src/auth/operations/unlock.ts index d08410bd93..4428ad39eb 100644 --- a/src/auth/operations/unlock.ts +++ b/src/auth/operations/unlock.ts @@ -45,6 +45,10 @@ async function unlock(args: Args): Promise { // Unlock // ///////////////////////////////////// + if (!data.email) { + throw new APIError('Missing email.'); + } + const user = await req.payload.db.findOne({ collection: collectionConfig.slug, where: { email: { equals: data.email.toLowerCase() } }, diff --git a/src/bin/build.ts b/src/bin/build.ts index 7271485757..87508fa089 100755 --- a/src/bin/build.ts +++ b/src/bin/build.ts @@ -2,15 +2,12 @@ /* eslint-disable global-require */ import webpack from 'webpack'; import getWebpackProdConfig from '../webpack/getProdConfig'; -import findConfig from '../config/find'; import loadConfig from '../config/load'; -const rawConfigPath = findConfig(); - export const build = async (): Promise => { - try { - const config = await loadConfig(); + const config = await loadConfig(); // Will throw its own error if it fails + try { const webpackProdConfig = getWebpackProdConfig(config); webpack(webpackProdConfig, (err, stats) => { // Stats Object @@ -29,7 +26,7 @@ export const build = async (): Promise => { }); } catch (err) { console.error(err); - throw new Error(`Error: can't find the configuration file located at ${rawConfigPath}.`); + throw new Error('Error: there was an error building the webpack config.'); } }; diff --git a/src/bin/generateTypes.ts b/src/bin/generateTypes.ts index c3fef65b76..10551e3d27 100644 --- a/src/bin/generateTypes.ts +++ b/src/bin/generateTypes.ts @@ -1,33 +1,9 @@ /* eslint-disable no-nested-ternary */ import fs from 'fs'; -import type { JSONSchema4 } from 'json-schema'; import { compile } from 'json-schema-to-typescript'; import Logger from '../utilities/logger'; -import { SanitizedConfig } from '../config/types'; import loadConfig from '../config/load'; -import { entityToJSONSchema, generateEntitySchemas } from '../utilities/entityToJSONSchema'; - -type DefinitionsType = { [k: string]: JSONSchema4 }; - -function configToJsonSchema(config: SanitizedConfig): JSONSchema4 { - const fieldDefinitionsMap: Map = new Map(); // mutable - const entityDefinitions: DefinitionsType = [...config.globals, ...config.collections].reduce((acc, entity) => { - acc[entity.slug] = entityToJSONSchema(config, entity, fieldDefinitionsMap); - return acc; - }, {}); - - return { - title: 'Config', - type: 'object', - additionalProperties: false, - properties: { - collections: generateEntitySchemas(config.collections), - globals: generateEntitySchemas(config.globals), - }, - required: ['collections', 'globals'], - definitions: { ...entityDefinitions, ...Object.fromEntries(fieldDefinitionsMap) }, - }; -} +import { configToJSONSchema } from '../utilities/configToJSONSchema'; export async function generateTypes(): Promise { const logger = Logger(); @@ -36,10 +12,10 @@ export async function generateTypes(): Promise { logger.info('Compiling TS types for Collections and Globals...'); - const jsonSchema = configToJsonSchema(config); + const jsonSchema = configToJSONSchema(config); compile(jsonSchema, 'Config', { - bannerComment: '/* tslint:disable */\n/**\n* This file was automatically generated by Payload CMS.\n* DO NOT MODIFY IT BY HAND. Instead, modify your source Payload config,\n* and re-run `payload generate:types` to regenerate this file.\n*/', + bannerComment: '/* tslint:disable */\n/* eslint-disable */\n/**\n* This file was automatically generated by Payload.\n* DO NOT MODIFY IT BY HAND. Instead, modify your source Payload config,\n* and re-run `payload generate:types` to regenerate this file.\n*/', style: { singleQuote: true, }, diff --git a/src/collections/config/types.ts b/src/collections/config/types.ts index e8debd6a86..e95df59592 100644 --- a/src/collections/config/types.ts +++ b/src/collections/config/types.ts @@ -348,7 +348,7 @@ export type CollectionConfig = { * @default true */ timestamps?: boolean - /** Extension point to add your custom data. */ + /** Extension point to add your custom data. */ custom?: Record; }; diff --git a/src/collections/operations/find.ts b/src/collections/operations/find.ts index bed5bfbcca..bb80b98e2f 100644 --- a/src/collections/operations/find.ts +++ b/src/collections/operations/find.ts @@ -3,7 +3,6 @@ import { PayloadRequest } from '../../express/types'; import executeAccess from '../../auth/executeAccess'; import { Collection, TypeWithID } from '../config/types'; import { PaginatedDocs } from '../../mongoose/types'; -import { buildSortParam } from '../../mongoose/queries/buildSortParam'; import { AccessResult } from '../../config/types'; import { afterRead } from '../../fields/hooks/afterRead'; import { validateQueryPaths } from '../../database/queryValidation/validateQueryPaths'; @@ -56,6 +55,7 @@ async function find>( collection: { config: collectionConfig, }, + sort, req, req: { locale, @@ -97,14 +97,6 @@ async function find>( // Find // ///////////////////////////////////// - const sort = buildSortParam({ - sort: args.sort ?? collectionConfig.defaultSort, - config: payload.config, - fields: collectionConfig.fields, - timestamps: collectionConfig.timestamps, - locale, - }); - const usePagination = pagination && limit !== 0; const sanitizedLimit = limit ?? (usePagination ? 10 : 0); const sanitizedPage = page || 1; diff --git a/src/collections/operations/findVersions.ts b/src/collections/operations/findVersions.ts index b6fa13529c..760a71365e 100644 --- a/src/collections/operations/findVersions.ts +++ b/src/collections/operations/findVersions.ts @@ -3,7 +3,6 @@ import { PayloadRequest } from '../../express/types'; import executeAccess from '../../auth/executeAccess'; import sanitizeInternalFields from '../../utilities/sanitizeInternalFields'; import { Collection } from '../config/types'; -import { buildSortParam } from '../../mongoose/queries/buildSortParam'; import { PaginatedDocs } from '../../mongoose/types'; import { TypeWithVersion } from '../../versions/types'; import { afterRead } from '../../fields/hooks/afterRead'; @@ -34,6 +33,7 @@ async function findVersions>( collection: { config: collectionConfig, }, + sort, req, req: { locale, @@ -69,14 +69,6 @@ async function findVersions>( // Find // ///////////////////////////////////// - const sort = buildSortParam({ - sort: args.sort || '-updatedAt', - fields: versionFields, - timestamps: true, - config: payload.config, - locale, - }); - const paginatedDocs = await payload.db.findVersions({ where: fullWhere, page: page || 1, diff --git a/src/collections/operations/local/create.ts b/src/collections/operations/local/create.ts index 9f0f740570..e1fcd4abc6 100644 --- a/src/collections/operations/local/create.ts +++ b/src/collections/operations/local/create.ts @@ -56,7 +56,7 @@ export default async function createLocal( throw new APIError('Missing \'where\' query of documents to update.', httpStatus.BAD_REQUEST); } - let { data } = args; + const { data: bulkUpdateData } = args; const shouldSaveDraft = Boolean(draftArg && collectionConfig.versions.drafts); // ///////////////////////////////////// @@ -146,17 +146,19 @@ async function update( config, collection, req, - data, + data: bulkUpdateData, throwOnMissingFile: false, overwriteExistingFiles, }); - data = newFileData; - const errors = []; const promises = docs.map(async (doc) => { const { id } = doc; + let data = { + ...newFileData, + ...bulkUpdateData, + }; try { const originalDoc = await afterRead({ diff --git a/src/config/types.ts b/src/config/types.ts index 2ca1d010c6..643f0ba89f 100644 --- a/src/config/types.ts +++ b/src/config/types.ts @@ -195,7 +195,7 @@ export type Endpoint = { * @default false */ root?: boolean; - /** Extension point to add your custom data. */ + /** Extension point to add your custom data. */ custom?: Record; }; @@ -529,7 +529,7 @@ export type Config = { telemetry?: boolean; /** A function that is called immediately following startup that receives the Payload instance as its only argument. */ onInit?: (payload: Payload) => Promise | void; - /** Extension point to add your custom data. */ + /** Extension point to add your custom data. */ custom?: Record; /** Pass in a database adapter for use on this project. */ db?: DatabaseAdapter diff --git a/src/database/types.ts b/src/database/types.ts index 3fae757984..2fda3510cb 100644 --- a/src/database/types.ts +++ b/src/database/types.ts @@ -1,6 +1,6 @@ import type { SchemaOptions } from 'mongoose'; import type { Configuration } from 'webpack'; -import type { Config, SanitizedConfig } from '../config/types'; +import type { SanitizedConfig } from '../config/types'; import type { ArrayField, BlockField, @@ -148,7 +148,7 @@ export type QueryDraftsArgs = { page?: number limit?: number pagination?: boolean - sort?: SortArgs + sort?: string locale?: string } @@ -172,7 +172,7 @@ export type FindArgs = { /** Setting limit to 1 is equal to the previous Model.findOne(). Setting limit to 0 disables the limit */ limit?: number pagination?: boolean - sort?: SortArgs + sort?: string locale?: string } @@ -186,7 +186,7 @@ export type FindVersionsArgs = { versions?: boolean limit?: number pagination?: boolean - sort?: SortArgs + sort?: string locale?: string } @@ -201,7 +201,7 @@ export type FindGlobalVersionsArgs = { versions?: boolean limit?: number pagination?: boolean - sort?: SortArgs + sort?: string locale?: string } @@ -298,16 +298,6 @@ export type BuildSchemaOptions = { indexSortableFields?: boolean } -export type BuildSortParam = (args: { - sort: string - config: Config - fields: Field[] - timestamps: boolean - locale: string -}) => { - sort?: SortArgs -} - export type PaginatedDocs = { docs: T[] totalDocs: number @@ -379,10 +369,3 @@ export type FieldGenerator = { config: SanitizedConfig, options: BuildSchemaOptions, } - -export type SortArgs = { - property: string - direction: SortDirection -}[] - -export type SortDirection = 'asc' | 'desc'; diff --git a/src/email/defaults.ts b/src/email/defaults.ts index f88a57a8c6..225c6463f6 100644 --- a/src/email/defaults.ts +++ b/src/email/defaults.ts @@ -1,6 +1,6 @@ import { EmailOptions } from '../config/types'; export const defaults: EmailOptions = { - fromName: 'Payload CMS', + fromName: 'Payload', fromAddress: 'info@payloadcms.com', }; diff --git a/src/fields/config/sanitize.ts b/src/fields/config/sanitize.ts index 4709d2b05c..56a23de91e 100644 --- a/src/fields/config/sanitize.ts +++ b/src/fields/config/sanitize.ts @@ -35,6 +35,17 @@ const sanitizeFields = (fields: Field[], validRelationships: string[]): Field[] throw new InvalidFieldRelationship(field, relationship); } }); + + if (field.type === 'relationship') { + if (field.min && !field.minRows) { + console.warn(`(payload): The "min" property is deprecated for the Relationship field "${field.name}" and will be removed in a future version. Please use "minRows" instead.`); + } + if (field.max && !field.maxRows) { + console.warn(`(payload): The "max" property is deprecated for the Relationship field "${field.name}" and will be removed in a future version. Please use "maxRows" instead.`); + } + field.minRows = field.minRows || field.min; + field.maxRows = field.maxRows || field.max; + } } if (field.type === 'blocks' && field.blocks) { diff --git a/src/fields/config/schema.ts b/src/fields/config/schema.ts index 2cdb928e0a..2d1f2dd732 100644 --- a/src/fields/config/schema.ts +++ b/src/fields/config/schema.ts @@ -94,6 +94,11 @@ export const number = baseField.keys({ autoComplete: joi.string(), step: joi.number(), }), + hasMany: joi.boolean().default(false), + minRows: joi.number() + .when('hasMany', { is: joi.not(true), then: joi.forbidden() }), + maxRows: joi.number() + .when('hasMany', { is: joi.not(true), then: joi.forbidden() }), }); export const textarea = baseField.keys({ @@ -336,8 +341,14 @@ export const relationship = baseField.keys({ allowCreate: joi.boolean().default(true), }), min: joi.number() - .when('hasMany', { is: joi.not(true), then: joi.forbidden() }), + .when('hasMany', { is: joi.not(true), then: joi.forbidden() }) + .warning('deprecated', { message: 'Use minRows instead.' }), max: joi.number() + .when('hasMany', { is: joi.not(true), then: joi.forbidden() }) + .warning('deprecated', { message: 'Use maxRows instead.' }), + minRows: joi.number() + .when('hasMany', { is: joi.not(true), then: joi.forbidden() }), + maxRows: joi.number() .when('hasMany', { is: joi.not(true), then: joi.forbidden() }), }); @@ -455,7 +466,10 @@ export const date = baseField.keys({ export const ui = joi.object().keys({ name: joi.string().required(), - label: joi.string(), + label: joi.alternatives().try( + joi.string(), + joi.object().pattern(joi.string(), [joi.string()]), + ), type: joi.string().valid('ui').required(), admin: joi.object().keys({ position: joi.string().valid('sidebar'), @@ -466,6 +480,7 @@ export const ui = joi.object().keys({ Field: componentSchema, }).default({}), }).default(), + custom: joi.object().pattern(joi.string(), joi.any()), }); const fieldSchema = joi.alternatives() diff --git a/src/fields/config/types.ts b/src/fields/config/types.ts index 7247322fe6..80e9bcd278 100644 --- a/src/fields/config/types.ts +++ b/src/fields/config/types.ts @@ -122,20 +122,40 @@ export interface FieldBase { read?: FieldAccess; update?: FieldAccess; }; - /** Extension point to add your custom data. */ + /** Extension point to add your custom data. */ custom?: Record; } export type NumberField = FieldBase & { type: 'number'; admin?: Admin & { + /** Set this property to a string that will be used for browser autocomplete. */ autoComplete?: string + /** Set this property to define a placeholder string for the field. */ placeholder?: Record | string + /** Set a value for the number field to increment / decrement using browser controls. */ step?: number } + /** Minimum value accepted. Used in the default `validation` function. */ min?: number + /** Maximum value accepted. Used in the default `validation` function. */ max?: number -} +} & ({ + /** Makes this field an ordered array of numbers instead of just a single number. */ + hasMany: true + /** Minimum number of numbers in the numbers array, if `hasMany` is set to true. */ + minRows?: number + /** Maximum number of numbers in the numbers array, if `hasMany` is set to true. */ + maxRows?: number +} | { + /** Makes this field an ordered array of numbers instead of just a single number. */ + hasMany?: false | undefined + /** Minimum number of numbers in the numbers array, if `hasMany` is set to true. */ + minRows?: undefined + /** Maximum number of numbers in the numbers array, if `hasMany` is set to true. */ + maxRows?: undefined +}) + export type TextField = FieldBase & { type: 'text'; @@ -261,7 +281,7 @@ export type UIField = { } } type: 'ui'; - /** Extension point to add your custom data. */ + /** Extension point to add your custom data. */ custom?: Record; } @@ -312,15 +332,31 @@ export type RelationshipField = FieldBase & { admin?: Admin & { isSortable?: boolean; allowCreate?: boolean; - } + }, } & ({ hasMany: true + /** + * @deprecated Use 'minRows' instead + */ min?: number + /** + * @deprecated Use 'maxRows' instead + */ max?: number + minRows?: number + maxRows?: number } | { hasMany?: false | undefined + /** + * @deprecated Use 'minRows' instead + */ min?: undefined + /** + * @deprecated Use 'maxRows' instead + */ max?: undefined + minRows?: undefined + maxRows?: undefined }) export type ValueWithRelation = { diff --git a/src/fields/validations.spec.ts b/src/fields/validations.spec.ts index edfd95d190..36753b16dc 100644 --- a/src/fields/validations.spec.ts +++ b/src/fields/validations.spec.ts @@ -223,7 +223,7 @@ describe('Field Validations', () => { const minOptions = { ...relationshipOptions, hasMany: true, - min: 2, + minRows: 2, }; const val = ['a']; @@ -237,7 +237,7 @@ describe('Field Validations', () => { it('should enforce hasMany max', async () => { const maxOptions = { ...relationshipOptions, - max: 2, + maxRows: 2, hasMany: true, }; let val = ['a', 'b', 'c']; @@ -424,5 +424,30 @@ describe('Field Validations', () => { const result = number(val, { ...numberOptions, max: 1 }); expect(result).toBe('validation:greaterThanMax'); }); + it('should validate an array of numbers', async () => { + const val = [1.25, 2.5]; + const result = number(val, { ...numberOptions, hasMany: true }); + expect(result).toBe(true); + }); + it('should validate an array of numbers using min', async () => { + const val = [1.25, 2.5]; + const result = number(val, { ...numberOptions, hasMany: true, min: 3 }); + expect(result).toBe('validation:lessThanMin'); + }); + it('should validate an array of numbers using max', async () => { + const val = [1.25, 2.5]; + const result = number(val, { ...numberOptions, hasMany: true, max: 1 }); + expect(result).toBe('validation:greaterThanMax'); + }); + it('should validate an array of numbers using minRows', async () => { + const val = [1.25, 2.5]; + const result = number(val, { ...numberOptions, hasMany: true, minRows: 4 }); + expect(result).toBe('validation:lessThanMin'); + }); + it('should validate an array of numbers using maxRows', async () => { + const val = [1.25, 2.5, 3.5]; + const result = number(val, { ...numberOptions, hasMany: true, maxRows: 2 }); + expect(result).toBe('validation:greaterThanMax'); + }); }); }); diff --git a/src/fields/validations.ts b/src/fields/validations.ts index 7da22d442b..245925bb30 100644 --- a/src/fields/validations.ts +++ b/src/fields/validations.ts @@ -24,25 +24,45 @@ import canUseDOM from '../utilities/canUseDOM'; import { isValidID } from '../utilities/isValidID'; import { getIDType } from '../utilities/getIDType'; -export const number: Validate = (value: string, { t, required, min, max }) => { - const parsedValue = parseFloat(value); +export const number: Validate = (value: number | number[], { t, required, min, max, minRows, maxRows, hasMany }) => { + const toValidate: number[] = Array.isArray(value) ? value : [value]; - if ((value && typeof parsedValue !== 'number') || (required && Number.isNaN(parsedValue)) || (value && Number.isNaN(parsedValue))) { - return t('validation:enterNumber'); + // eslint-disable-next-line no-restricted-syntax + for (const valueToValidate of toValidate) { + const floatValue = parseFloat(valueToValidate as unknown as string); + if ((value && typeof floatValue !== 'number') || (required && Number.isNaN(floatValue)) || (value && Number.isNaN(floatValue))) { + return t('validation:enterNumber'); + } + + if (typeof max === 'number' && floatValue > max) { + return t('validation:greaterThanMax', { value, max, label: t('value') }); + } + + if (typeof min === 'number' && floatValue < min) { + return t('validation:lessThanMin', { value, min, label: t('value') }); + } + + if (required && typeof floatValue !== 'number') { + return t('validation:required'); + } } - if (typeof max === 'number' && parsedValue > max) { - return t('validation:greaterThanMax', { value, max }); - } - - if (typeof min === 'number' && parsedValue < min) { - return t('validation:lessThanMin', { value, min }); - } - - if (required && typeof parsedValue !== 'number') { + if (required && toValidate.length === 0) { return t('validation:required'); } + + if (hasMany === true) { + if (minRows && toValidate.length < minRows) { + return t('validation:lessThanMin', { value: toValidate.length, min: minRows, label: t('rows') }); + } + + if (maxRows && toValidate.length > maxRows) { + return t('validation:greaterThanMax', { value: toValidate.length, max: maxRows, label: t('rows') }); + } + } + + return true; }; @@ -214,6 +234,8 @@ const validateFilterOptions: Validate = async (value, { t, filterOptions, id, us const result = await payload.find({ collection, depth: 0, + limit: 0, + pagination: false, where: { and: [ { id: { in: valueIDs } }, @@ -277,8 +299,8 @@ export const upload: Validate = (value: string, o export const relationship: Validate = async (value: RelationshipValue, options) => { const { required, - min, - max, + minRows, + maxRows, relationTo, payload, t, @@ -289,12 +311,12 @@ export const relationship: Validate = async } if (Array.isArray(value)) { - if (min && value.length < min) { - return t('validation:lessThanMin', { count: min, label: t('rows') }); + if (minRows && value.length < minRows) { + return t('validation:lessThanMin', { value: value.length, min: minRows, label: t('rows') }); } - if (max && value.length > max) { - return t('validation:greaterThanMax', { count: max, label: t('rows') }); + if (maxRows && value.length > maxRows) { + return t('validation:greaterThanMax', { value: value.length, max: maxRows, label: t('rows') }); } } diff --git a/src/globals/config/types.ts b/src/globals/config/types.ts index fef421f486..60554d30c7 100644 --- a/src/globals/config/types.ts +++ b/src/globals/config/types.ts @@ -138,7 +138,7 @@ export type GlobalConfig = { } fields: Field[]; admin?: GlobalAdminOptions - /** Extension point to add your custom data. */ + /** Extension point to add your custom data. */ custom?: Record; } diff --git a/src/globals/operations/findVersions.ts b/src/globals/operations/findVersions.ts index c3c342dc73..e4ea756da2 100644 --- a/src/globals/operations/findVersions.ts +++ b/src/globals/operations/findVersions.ts @@ -3,7 +3,6 @@ import { PayloadRequest } from '../../express/types'; import executeAccess from '../../auth/executeAccess'; import sanitizeInternalFields from '../../utilities/sanitizeInternalFields'; import { PaginatedDocs } from '../../mongoose/types'; -import { buildSortParam } from '../../mongoose/queries/buildSortParam'; import { SanitizedGlobalConfig } from '../config/types'; import { afterRead } from '../../fields/hooks/afterRead'; import { buildVersionGlobalFields } from '../../versions/buildGlobalFields'; @@ -32,6 +31,7 @@ async function findVersions>( limit, depth, globalConfig, + sort, req, req: { locale, @@ -63,14 +63,6 @@ async function findVersions>( // Find // ///////////////////////////////////// - const sort = buildSortParam({ - sort: args.sort || '-updatedAt', - fields: versionFields, - timestamps: true, - config: payload.config, - locale, - }); - const paginatedDocs = await payload.db.findGlobalVersions({ where: fullWhere, page: page || 1, diff --git a/src/graphql/schema/buildMutationInputType.ts b/src/graphql/schema/buildMutationInputType.ts index 3e0cab49ba..464c1334b4 100644 --- a/src/graphql/schema/buildMutationInputType.ts +++ b/src/graphql/schema/buildMutationInputType.ts @@ -43,7 +43,7 @@ function buildMutationInputType(payload: Payload, name: string, fields: Field[], const type = field.name === 'id' ? GraphQLInt : GraphQLFloat; return { ...inputObjectTypeConfig, - [field.name]: { type: withNullableType(field, type, forceNullable) }, + [field.name]: { type: withNullableType(field, field.hasMany === true ? new GraphQLList(type) : type, forceNullable) }, }; }, text: (inputObjectTypeConfig: InputObjectTypeConfig, field: TextField) => ({ diff --git a/src/graphql/schema/buildObjectType.ts b/src/graphql/schema/buildObjectType.ts index de24ebeb42..892f3d0b9e 100644 --- a/src/graphql/schema/buildObjectType.ts +++ b/src/graphql/schema/buildObjectType.ts @@ -84,10 +84,13 @@ function buildObjectType({ forceNullable, }: Args): GraphQLObjectType { const fieldToSchemaMap = { - number: (objectTypeConfig: ObjectTypeConfig, field: NumberField) => ({ - ...objectTypeConfig, - [field.name]: { type: withNullableType(field, GraphQLFloat, forceNullable) }, - }), + number: (objectTypeConfig: ObjectTypeConfig, field: NumberField) => { + const type = field?.name === 'id' ? GraphQLInt : GraphQLFloat; + return ({ + ...objectTypeConfig, + [field.name]: { type: withNullableType(field, field?.hasMany === true ? new GraphQLList(type) : type, forceNullable) }, + }); + }, text: (objectTypeConfig: ObjectTypeConfig, field: TextField) => ({ ...objectTypeConfig, [field.name]: { type: withNullableType(field, GraphQLString, forceNullable) }, diff --git a/src/graphql/schema/withOperators.ts b/src/graphql/schema/withOperators.ts index 9ae2c5c781..91243e1193 100644 --- a/src/graphql/schema/withOperators.ts +++ b/src/graphql/schema/withOperators.ts @@ -1,8 +1,8 @@ -import { GraphQLBoolean, GraphQLInputObjectType, GraphQLString, GraphQLList, GraphQLFloat, GraphQLEnumType } from 'graphql'; +import { GraphQLBoolean, GraphQLInputObjectType, GraphQLString, GraphQLList, GraphQLFloat, GraphQLEnumType, GraphQLInt } from 'graphql'; import type { GraphQLType } from 'graphql'; import { GraphQLJSON } from 'graphql-type-json'; import { DateTimeResolver, EmailAddressResolver } from 'graphql-scalars'; -import { FieldAffectingData, RadioField, SelectField, optionIsObject } from '../../fields/config/types'; +import { FieldAffectingData, NumberField, RadioField, RelationshipField, SelectField, optionIsObject } from '../../fields/config/types'; import combineParentName from '../utilities/combineParentName'; import formatName from '../utilities/formatName'; import operators from './operators'; @@ -27,7 +27,10 @@ type DefaultsType = { const defaults: DefaultsType = { number: { - type: GraphQLFloat, + type: (field: NumberField): GraphQLType => { + const type = field?.name === 'id' ? GraphQLInt : GraphQLFloat; + return field?.hasMany === true ? new GraphQLList(type) : type; + }, operators: [...operators.equality, ...operators.comparison], }, text: { @@ -86,7 +89,9 @@ const defaults: DefaultsType = { operators: [...operators.equality, ...operators.comparison, ...operators.geo], }, relationship: { - type: GraphQLString, + type: (field: RelationshipField): GraphQLType => { + return field?.hasMany === true ? new GraphQLList(GraphQLString) : GraphQLString; + }, operators: [...operators.equality, ...operators.contains], }, upload: { diff --git a/src/mongoose/buildQuery.ts b/src/mongoose/buildQuery.ts new file mode 100644 index 0000000000..e69de29bb2 diff --git a/src/mongoose/find.ts b/src/mongoose/find.ts index 9292508a05..3d040059f0 100644 --- a/src/mongoose/find.ts +++ b/src/mongoose/find.ts @@ -3,17 +3,31 @@ import type { MongooseAdapter } from '.'; import type { Find } from '../database/types'; import sanitizeInternalFields from '../utilities/sanitizeInternalFields'; import flattenWhereToOperators from '../database/flattenWhereToOperators'; +import { buildSortParam } from './queries/buildSortParam'; - -export const find: Find = async function find(this: MongooseAdapter, - { collection, where, page, limit, sort, locale, pagination }) { +export const find: Find = async function find( + this: MongooseAdapter, + { collection, where, page, limit, sort: sortArg, locale, pagination }, +) { const Model = this.collections[collection]; + const collectionConfig = this.payload.collections[collection].config; - let useEstimatedCount = false; + let hasNearConstraint = false; if (where) { const constraints = flattenWhereToOperators(where); - useEstimatedCount = constraints.some((prop) => Object.keys(prop).some((key) => key === 'near')); + hasNearConstraint = constraints.some((prop) => Object.keys(prop).some((key) => key === 'near')); + } + + let sort; + if (!hasNearConstraint) { + sort = buildSortParam({ + sort: sortArg || collectionConfig.defaultSort, + fields: collectionConfig.fields, + timestamps: true, + config: this.payload.config, + locale, + }); } const query = await Model.buildQuery({ @@ -24,14 +38,12 @@ export const find: Find = async function find(this: MongooseAdapter, const paginationOptions: PaginateOptions = { page, - sort: sort ? sort.reduce((acc, cur) => { - acc[cur.property] = cur.direction; - return acc; - }, {}) : undefined, + sort, limit, lean: true, leanWithId: true, - useEstimatedCount, + useEstimatedCount: hasNearConstraint, + forceCountFn: hasNearConstraint, pagination, options: { // limit must also be set here, it's ignored when pagination is false diff --git a/src/mongoose/findGlobalVersions.ts b/src/mongoose/findGlobalVersions.ts index d03906f67f..8617242cc3 100644 --- a/src/mongoose/findGlobalVersions.ts +++ b/src/mongoose/findGlobalVersions.ts @@ -2,16 +2,30 @@ import type { MongooseAdapter } from '.'; import type { FindGlobalVersions } from '../database/types'; import sanitizeInternalFields from '../utilities/sanitizeInternalFields'; import flattenWhereToOperators from '../database/flattenWhereToOperators'; +import { buildSortParam } from './queries/buildSortParam'; +import { buildVersionGlobalFields } from '../versions/buildGlobalFields'; export const findGlobalVersions: FindGlobalVersions = async function findGlobalVersions(this: MongooseAdapter, - { global, where, page, limit, sort, locale, pagination, skip }) { + { global, where, page, limit, sort: sortArg, locale, pagination, skip }) { const Model = this.versions[global]; + const versionFields = buildVersionGlobalFields(this.payload.globals.config[global]); - let useEstimatedCount = false; + let hasNearConstraint = false; if (where) { const constraints = flattenWhereToOperators(where); - useEstimatedCount = constraints.some((prop) => Object.keys(prop).some((key) => key === 'near')); + hasNearConstraint = constraints.some((prop) => Object.keys(prop).some((key) => key === 'near')); + } + + let sort; + if (!hasNearConstraint) { + sort = buildSortParam({ + sort: sortArg || '-updatedAt', + fields: versionFields, + timestamps: true, + config: this.payload.config, + locale, + }); } const query = await Model.buildQuery({ @@ -23,16 +37,14 @@ export const findGlobalVersions: FindGlobalVersions = async function findGlobalV const paginationOptions = { page, - sort: sort ? sort.reduce((acc, cur) => { - acc[cur.property] = cur.direction; - return acc; - }, {}) : undefined, + sort, limit, lean: true, leanWithId: true, pagination, offset: skip, - useEstimatedCount, + useEstimatedCount: hasNearConstraint, + forceCountFn: hasNearConstraint, options: { // limit must also be set here, it's ignored when pagination is false limit, diff --git a/src/mongoose/findVersions.ts b/src/mongoose/findVersions.ts index aaf882d2bd..1a78f42710 100644 --- a/src/mongoose/findVersions.ts +++ b/src/mongoose/findVersions.ts @@ -2,16 +2,29 @@ import type { MongooseAdapter } from '.'; import type { FindVersions } from '../database/types'; import sanitizeInternalFields from '../utilities/sanitizeInternalFields'; import flattenWhereToOperators from '../database/flattenWhereToOperators'; +import { buildSortParam } from './queries/buildSortParam'; export const findVersions: FindVersions = async function findVersions(this: MongooseAdapter, - { collection, where, page, limit, sort, locale, pagination, skip }) { + { collection, where, page, limit, sort: sortArg, locale, pagination, skip }) { const Model = this.versions[collection]; + const collectionConfig = this.payload.collections[collection].config; - let useEstimatedCount = false; + let hasNearConstraint = false; if (where) { const constraints = flattenWhereToOperators(where); - useEstimatedCount = constraints.some((prop) => Object.keys(prop).some((key) => key === 'near')); + hasNearConstraint = constraints.some((prop) => Object.keys(prop).some((key) => key === 'near')); + } + + let sort; + if (!hasNearConstraint) { + sort = buildSortParam({ + sort: sortArg || collectionConfig.defaultSort, + fields: collectionConfig.fields, + timestamps: true, + config: this.payload.config, + locale, + }); } const query = await Model.buildQuery({ @@ -22,16 +35,14 @@ export const findVersions: FindVersions = async function findVersions(this: Mong const paginationOptions = { page, - sort: sort ? sort.reduce((acc, cur) => { - acc[cur.property] = cur.direction; - return acc; - }, {}) : undefined, + sort, limit, lean: true, leanWithId: true, pagination, offset: skip, - useEstimatedCount, + useEstimatedCount: hasNearConstraint, + forceCountFn: hasNearConstraint, options: { // limit must also be set here, it's ignored when pagination is false limit, diff --git a/src/mongoose/models/buildSchema.ts b/src/mongoose/models/buildSchema.ts index ba16e7fa99..3564a147d4 100644 --- a/src/mongoose/models/buildSchema.ts +++ b/src/mongoose/models/buildSchema.ts @@ -114,7 +114,7 @@ const buildSchema = (config: SanitizedConfig, configFields: Field[], buildSchema const fieldToSchemaMap: Record = { number: (field: NumberField, schema: Schema, config: SanitizedConfig, buildSchemaOptions: BuildSchemaOptions): void => { - const baseSchema = { ...formatBaseSchema(field, buildSchemaOptions), type: Number }; + const baseSchema = { ...formatBaseSchema(field, buildSchemaOptions), type: field.hasMany ? [Number] : Number }; schema.add({ [field.name]: localizeSchema(field, baseSchema, config.localization), diff --git a/src/mongoose/queries/buildSearchParams.ts b/src/mongoose/queries/buildSearchParams.ts index 11045150a1..15ef316e45 100644 --- a/src/mongoose/queries/buildSearchParams.ts +++ b/src/mongoose/queries/buildSearchParams.ts @@ -1,3 +1,5 @@ +import mongoose from 'mongoose'; +import objectID from 'bson-objectid'; import { Field, fieldAffectsData } from '../../fields/config/types'; import { operatorMap } from './operatorMap'; import { getLocalizedPaths } from './getLocalizedPaths'; @@ -63,7 +65,7 @@ export async function buildSearchParam({ field: { name: 'id', type: idFieldType, - }, + } as Field, complete: true, collectionSlug, }); @@ -127,7 +129,16 @@ export async function buildSearchParam({ const result = await SubModel.find(subQuery, subQueryOptions); - const $in = result.map((doc) => doc._id.toString()); + const $in: unknown[] = []; + + result.forEach((doc) => { + const stringID = doc._id.toString(); + $in.push(stringID); + + if (mongoose.Types.ObjectId.isValid(stringID)) { + $in.push(doc._id); + } + }); if (pathsToQuery.length === 1) { return { @@ -170,6 +181,57 @@ export async function buildSearchParam({ if (operator && validOperators.includes(operator)) { const operatorKey = operatorMap[operator]; + if (field.type === 'relationship' || field.type === 'upload') { + let hasNumberIDRelation; + + const result = { + value: { + $or: [ + { [path]: { [operatorKey]: formattedValue } }, + ], + }, + }; + + if (typeof formattedValue === 'string') { + if (mongoose.Types.ObjectId.isValid(formattedValue)) { + result.value.$or.push({ [path]: { [operatorKey]: objectID(formattedValue) } }); + } else { + (Array.isArray(field.relationTo) ? field.relationTo : [field.relationTo]).forEach((relationTo) => { + const isRelatedToCustomNumberID = payload.collections[relationTo]?.config?.fields.find((relatedField) => { + return fieldAffectsData(relatedField) && relatedField.name === 'id' && relatedField.type === 'number'; + }); + + if (isRelatedToCustomNumberID) { + if (isRelatedToCustomNumberID.type === 'number') hasNumberIDRelation = true; + } + }); + + if (hasNumberIDRelation) result.value.$or.push({ [path]: { [operatorKey]: parseFloat(formattedValue) } }); + } + } + + if (result.value.$or.length > 1) { + return result; + } + } + + if (operator === 'like' && typeof formattedValue === 'string') { + const words = formattedValue.split(' '); + + const result = { + value: { + $and: words.map((word) => ({ + [path]: { + $regex: word.replace(/[\\^$*+?\\.()|[\]{}]/g, '\\$&'), + $options: 'i', + }, + })), + }, + }; + + return result; + } + // Some operators like 'near' need to define a full query // so if there is no operator key, just return the value if (!operatorKey) { diff --git a/src/mongoose/queries/buildSortParam.ts b/src/mongoose/queries/buildSortParam.ts index ecb2979591..188ad89e24 100644 --- a/src/mongoose/queries/buildSortParam.ts +++ b/src/mongoose/queries/buildSortParam.ts @@ -1,7 +1,7 @@ +import { PaginateOptions } from 'mongoose'; import { Config } from '../../config/types'; import { getLocalizedSortProperty } from './getLocalizedSortProperty'; import { Field } from '../../fields/config/types'; -import type { SortArgs, SortDirection } from '../../database/types'; type Args = { sort: string @@ -11,7 +11,14 @@ type Args = { locale: string } -export const buildSortParam = ({ sort, config, fields, timestamps, locale }: Args): SortArgs => { +export type SortArgs = { + property: string + direction: SortDirection +}[] + +export type SortDirection = 'asc' | 'desc'; + +export const buildSortParam = ({ sort, config, fields, timestamps, locale }: Args): PaginateOptions['sort'] => { let sortProperty: string; let sortDirection: SortDirection = 'desc'; @@ -39,5 +46,5 @@ export const buildSortParam = ({ sort, config, fields, timestamps, locale }: Arg }); } - return [{ property: sortProperty, direction: sortDirection }]; + return { [sortProperty]: sortDirection }; }; diff --git a/src/mongoose/queries/sanitizeQueryValue.ts b/src/mongoose/queries/sanitizeQueryValue.ts index 1f70728956..fd02ce1b1a 100644 --- a/src/mongoose/queries/sanitizeQueryValue.ts +++ b/src/mongoose/queries/sanitizeQueryValue.ts @@ -1,6 +1,5 @@ import mongoose from 'mongoose'; import { createArrayFromCommaDelineated } from '../../utilities/createArrayFromCommaDelineated'; -import wordBoundariesRegex from '../../utilities/wordBoundariesRegex'; import { Field, TabAsField } from '../../fields/config/types'; type SanitizeQueryValueArgs = { @@ -39,7 +38,15 @@ export const sanitizeQueryValue = ({ field, path, operator, val, hasCustomID }: if (val.toLowerCase() === 'false') formattedValue = false; } - if (field.type === 'number' && typeof val === 'string') { + if (['all', 'not_in', 'in'].includes(operator) && typeof formattedValue === 'string') { + formattedValue = createArrayFromCommaDelineated(formattedValue); + + if (field.type === 'number') { + formattedValue = formattedValue.map((arrayVal) => parseFloat(arrayVal)); + } + } + + if (field.type === 'number' && typeof formattedValue === 'string') { formattedValue = Number(val); } @@ -99,19 +106,10 @@ export const sanitizeQueryValue = ({ field, path, operator, val, hasCustomID }: } } - if (['all', 'not_in', 'in'].includes(operator) && typeof formattedValue === 'string') { - formattedValue = createArrayFromCommaDelineated(formattedValue); - } - if (path !== '_id' || (path === '_id' && hasCustomID && field.type === 'text')) { if (operator === 'contains') { formattedValue = { $regex: formattedValue, $options: 'i' }; } - - if (operator === 'like' && typeof formattedValue === 'string') { - const $regex = wordBoundariesRegex(formattedValue); - formattedValue = { $regex }; - } } if (operator === 'exists') { diff --git a/src/mongoose/queryDrafts.ts b/src/mongoose/queryDrafts.ts index 1b0d9f25b5..5e89a2748f 100644 --- a/src/mongoose/queryDrafts.ts +++ b/src/mongoose/queryDrafts.ts @@ -2,6 +2,7 @@ import type { MongooseAdapter } from '.'; import type { QueryDrafts } from '../database/types'; import flattenWhereToOperators from '../database/flattenWhereToOperators'; import sanitizeInternalFields from '../utilities/sanitizeInternalFields'; +import { buildSortParam } from './queries/buildSortParam'; type AggregateVersion = { _id: string @@ -11,8 +12,9 @@ type AggregateVersion = { } export const queryDrafts: QueryDrafts = async function queryDrafts(this: MongooseAdapter, - { collection, where, page, limit, sort, locale, pagination }) { + { collection, where, page, limit, sort: sortArg, locale, pagination }) { const VersionModel = this.versions[collection]; + const collectionConfig = this.payload.collections[collection].config; const versionQuery = await VersionModel.buildQuery({ where, @@ -20,6 +22,24 @@ export const queryDrafts: QueryDrafts = async function queryDrafts(this: Mong payload: this.payload, }); + let hasNearConstraint = false; + + if (where) { + const constraints = flattenWhereToOperators(where); + hasNearConstraint = constraints.some((prop) => Object.keys(prop).some((key) => key === 'near')); + } + + let sort; + if (!hasNearConstraint) { + sort = buildSortParam({ + sort: sortArg || collectionConfig.defaultSort, + fields: collectionConfig.fields, + timestamps: true, + config: this.payload.config, + locale, + }); + } + const aggregate = VersionModel.aggregate>([ // Sort so that newest are first { $sort: { updatedAt: -1 } }, @@ -61,16 +81,7 @@ export const queryDrafts: QueryDrafts = async function queryDrafts(this: Mong options: { limit, }, - sort: sort ? sort.reduce((acc, cur) => { - let sanitizedSortProperty = cur.property; - const sanitizedSortOrder = cur.direction === 'asc' ? 1 : -1; - - if (!['createdAt', 'updatedAt', '_id'].includes(cur.property)) { - sanitizedSortProperty = `version.${cur.property}`; - } - acc[sanitizedSortProperty] = sanitizedSortOrder; - return acc; - }, {}) : undefined, + sort, }; result = await VersionModel.aggregatePaginate(aggregate, aggregatePaginateOptions); diff --git a/src/translations/ar.json b/src/translations/ar.json index add5fa0666..640fdf34b7 100644 --- a/src/translations/ar.json +++ b/src/translations/ar.json @@ -241,6 +241,7 @@ "uploading": "جار الرفع", "user": "المستخدم", "users": "المستخدمين", + "value": "القيمة", "welcome": "مرحبًا" }, "operators": { @@ -274,11 +275,11 @@ "emailAddress": "يرجى إدخال عنوان بريد إلكتروني صحيح.", "enterNumber": "يرجى إدخال رقم صحيح.", "fieldHasNo": "هذا الحقل ليس لديه {{label}}", - "greaterThanMax": "\"{{value}}\" أكبر من الحد الأقصى المسموح به {{max}}.", + "greaterThanMax": "{{value}} أكبر من الحد الأقصى المسموح به {{label}} الذي يبلغ {{max}}.", "invalidInput": "هذا الحقل لديه إدخال غير صالح.", "invalidSelection": "هذا الحقل لديه اختيار غير صالح.", "invalidSelections": "هذا الحقل لديه الاختيارات الغير صالحة التالية:", - "lessThanMin": "\"{{value}}\" أقل من الحد الأدنى المسموح به {{min}}.", + "lessThanMin": "{{value}} أقل من الحد الأدنى المسموح به {{label}} الذي يبلغ {{min}}.", "longerThanMin": "يجب أن يكون هذا القيمة أطول من الحد الأدنى للطول الذي هو {{minLength}} أحرف.", "notValidDate": "\"{{value}}\" ليس تاريخا صالحا.", "required": "هذا الحقل مطلوب.", diff --git a/src/translations/bg.json b/src/translations/bg.json index ec841d6b2d..03703d643b 100644 --- a/src/translations/bg.json +++ b/src/translations/bg.json @@ -241,6 +241,7 @@ "uploading": "Качва се", "user": "Потребител", "users": "Потребители", + "value": "Стойност", "welcome": "Добре дошъл" }, "operators": { @@ -274,11 +275,11 @@ "emailAddress": "Моля, въведи валиден имейл адрес.", "enterNumber": "Моля, въведи валиден номер.", "fieldHasNo": "Това поле няма {{label}}", - "greaterThanMax": "\"{{value}}\" е по-голямо от максималната позволена големина {{max}}.", + "greaterThanMax": "{{value}} е по-голямо от максимално допустимото {{label}} от {{max}}.", "invalidInput": "Това поле има невалиден вход.", "invalidSelection": "Това поле има невалидна селекция.", "invalidSelections": "Това поле има следните невалидни селекции:", - "lessThanMin": "\"{{value}}\" е по-малко от минималната позволена големина {{min}}.", + "lessThanMin": "{{value}} е по-малко от минимално допустимото {{label}} от {{min}}.", "longerThanMin": "Тази стойност трябва да е по-голяма от минималната стойност от {{minLength}} символа.", "notValidDate": "\"{{value}}\" не е валидна дата.", "required": "Това поле е задължително.", diff --git a/src/translations/cs.json b/src/translations/cs.json index fe2fd818ae..b4922e6c56 100644 --- a/src/translations/cs.json +++ b/src/translations/cs.json @@ -238,6 +238,7 @@ "uploading": "Nahrávání", "user": "Uživatel", "users": "Uživatelé", + "value": "Hodnota", "welcome": "Vítejte" }, "operators": { @@ -271,11 +272,11 @@ "emailAddress": "Zadejte prosím platnou e-mailovou adresu.", "enterNumber": "Zadejte prosím platné číslo.", "fieldHasNo": "Toto pole nemá {{label}}", - "greaterThanMax": "\"{{value}}\" je větší než maximální povolená hodnota {{max}}.", + "greaterThanMax": "{{value}} je vyšší než maximálně povolená {{label}} {{max}}.", "invalidInput": "Toto pole má neplatný vstup.", "invalidSelection": "Toto pole má neplatný výběr.", "invalidSelections": "Toto pole má následující neplatné výběry:", - "lessThanMin": "\"{{value}}\" je menší než minimální povolená hodnota {{min}}.", + "lessThanMin": "{{value}} je nižší než minimálně povolená {{label}} {{min}}.", "longerThanMin": "Tato hodnota musí být delší než minimální délka {{minLength}} znaků.", "notValidDate": "\"{{value}}\" není platné datum.", "required": "Toto pole je povinné.", diff --git a/src/translations/de.json b/src/translations/de.json index b86c47b367..a52b321055 100644 --- a/src/translations/de.json +++ b/src/translations/de.json @@ -241,6 +241,7 @@ "uploading": "Hochladen", "user": "Benutzer", "users": "Benutzer", + "value": "Wert", "welcome": "Willkommen" }, "operators": { @@ -274,11 +275,11 @@ "emailAddress": "Bitte gib eine korrekte E-Mail-Adresse an.", "enterNumber": "Bitte gib eine gültige Nummer an,", "fieldHasNo": "Dieses Feld hat kein {{label}}", - "greaterThanMax": "\"{{value}}\" ist größer als der maximal erlaubte Wert von {{max}}.", + "greaterThanMax": "{{value}} ist größer als der maximal erlaubte {{label}} von {{max}}.", "invalidInput": "Dieses Feld hat einen inkorrekten Wert.", "invalidSelection": "Dieses Feld hat eine inkorrekte Auswahl.", "invalidSelections": "'Dieses Feld enthält die folgenden inkorrekten Auswahlen:'", - "lessThanMin": "\"{{value}}\" ist weniger als der minimale erlaubte Wert von {{min}}.", + "lessThanMin": "{{value}} ist kleiner als der minimal erlaubte {{label}} von {{min}}.", "longerThanMin": "Dieser Wert muss länger als die minimale Länge von {{minLength}} Zeichen sein.", "notValidDate": "\"{{value}}\" ist kein gültiges Datum.", "required": "Pflichtfeld", diff --git a/src/translations/en.json b/src/translations/en.json index c447aa242d..33b8f00aec 100644 --- a/src/translations/en.json +++ b/src/translations/en.json @@ -241,6 +241,7 @@ "uploading": "Uploading", "user": "User", "users": "Users", + "value": "Value", "welcome": "Welcome" }, "operators": { @@ -274,11 +275,11 @@ "emailAddress": "Please enter a valid email address.", "enterNumber": "Please enter a valid number.", "fieldHasNo": "This field has no {{label}}", - "greaterThanMax": "\"{{value}}\" is greater than the max allowed value of {{max}}.", + "greaterThanMax": "{{value}} is greater than the max allowed {{label}} of {{max}}.", "invalidInput": "This field has an invalid input.", "invalidSelection": "This field has an invalid selection.", "invalidSelections": "This field has the following invalid selections:", - "lessThanMin": "\"{{value}}\" is less than the min allowed value of {{min}}.", + "lessThanMin": "{{value}} is less than the min allowed {{label}} of {{min}}.", "longerThanMin": "This value must be longer than the minimum length of {{minLength}} characters.", "notValidDate": "\"{{value}}\" is not a valid date.", "required": "This field is required.", diff --git a/src/translations/es.json b/src/translations/es.json index bf427cd180..d3e14c67c8 100644 --- a/src/translations/es.json +++ b/src/translations/es.json @@ -241,6 +241,7 @@ "uploading": "Subiendo", "user": "Usuario", "users": "Usuarios", + "value": "Valor", "welcome": "Bienvenido" }, "operators": { @@ -274,11 +275,11 @@ "emailAddress": "Por favor introduce un correo electrónico válido.", "enterNumber": "Por favor introduce un número válido.", "fieldHasNo": "Este campo no tiene {{label}}", - "greaterThanMax": "\"{{value}}\" es mayor que el valor máximo permitido de {{max}}.", + "greaterThanMax": "{{value}} es mayor que el {{label}} máximo permitido de {{max}}.", "invalidInput": "La información en este campo es inválida.", "invalidSelection": "La selección en este campo es inválida.", "invalidSelections": "Este campo tiene las siguientes selecciones inválidas:", - "lessThanMin": "\"{{value}}\" es menor que el valor mínimo permitido de {{min}}.", + "lessThanMin": "{{value}} es menor que el {{label}} mínimo permitido de {{min}}.", "longerThanMin": "Este dato debe ser más largo que el mínimo de {{minLength}} caracteres.", "notValidDate": "\"{{value}}\" es una fecha inválida.", "required": "Este campo es obligatorio.", diff --git a/src/translations/fa.json b/src/translations/fa.json index f907fa1e2b..b812611b32 100644 --- a/src/translations/fa.json +++ b/src/translations/fa.json @@ -241,6 +241,7 @@ "uploading": "در حال بارگذاری", "user": "کاربر", "users": "کاربران", + "value": "مقدار", "welcome": "خوش‌آمدید" }, "operators": { @@ -274,11 +275,11 @@ "emailAddress": "لطفاً یک نشانی رایانامه معتبر وارد کنید.", "enterNumber": "لطفاً یک شماره درست وارد کنید.", "fieldHasNo": "این کادر شامل هیچ {{label}} نمی‌شود", - "greaterThanMax": "\"{{value}}\" بیش‌تر از حد مجاز است {{max}}.", + "greaterThanMax": "{{value}} بیشتر از حداکثر مجاز برای {{label}} است که {{max}} است.", "invalidInput": "این کادر دارای ورودی نامعتبر است.", "invalidSelection": "این کادر دارای یک انتخاب نامعتبر است.", "invalidSelections": "این کادر دارای انتخاب‌های نامعتبر زیر است:", - "lessThanMin": "\"{{value}}\" کم‌تر از مقدار مجاز است {{min}}.", + "lessThanMin": "{{value}} کمتر از حداقل مجاز برای {{label}} است که {{min}} است.", "longerThanMin": "ورودی باید بیش از حداقل {{minLength}} واژه باشد.", "notValidDate": "\"{{value}}\" یک تاریخ معتبر نیست.", "required": "این کادر اجباری است.", diff --git a/src/translations/fr.json b/src/translations/fr.json index 0bcd4d2eca..3ce3e01301 100644 --- a/src/translations/fr.json +++ b/src/translations/fr.json @@ -241,6 +241,7 @@ "uploading": "Téléchargement", "user": "Utilisateur", "users": "Utilisateurs", + "value": "Valeur", "welcome": "Bienvenu(e)" }, "operators": { @@ -274,11 +275,11 @@ "emailAddress": "S'il vous plaît, veuillez entrer une adresse e-mail valide.", "enterNumber": "S'il vous plait, veuillez entrer un nombre valide.", "fieldHasNo": "Ce champ n'a pas de {{label}}", - "greaterThanMax": "\"{{value}}\" est supérieur à la valeur maximale autorisée de {{max}}.", + "greaterThanMax": "{{value}} est supérieur au max autorisé {{label}} de {{max}}.", "invalidInput": "Ce champ a une entrée invalide.", "invalidSelection": "Ce champ a une sélection invalide.", "invalidSelections": "Ce champ contient des sélections invalides suivantes :", - "lessThanMin": "\"{{value}}\" est inférieur à la valeur minimale autorisée de {{min}}.", + "lessThanMin": "{{value}} est inférieur au min autorisé {{label}} de {{min}}.", "longerThanMin": "Cette valeur doit être supérieure à la longueur minimale de {{minLength}} caractères.", "notValidDate": "\"{{value}}\" n'est pas une date valide.", "required": "Ce champ est requis.", diff --git a/src/translations/hr.json b/src/translations/hr.json index d381a34b8c..4dcc98c811 100644 --- a/src/translations/hr.json +++ b/src/translations/hr.json @@ -241,6 +241,7 @@ "uploading": "Prijenos", "user": "Korisnik", "users": "Korisnici", + "value": "Attribute", "welcome": "Dobrodošli" }, "operators": { @@ -274,11 +275,11 @@ "emailAddress": "Molim unestie valjanu email adresu.", "enterNumber": "Molim unesite valjani broj.", "fieldHasNo": "Ovo polje nema {{label}}", - "greaterThanMax": "\"{{value}}\" je veće od maksimalne dopuštene vrijednosti od {{max}}.", + "greaterThanMax": "{{value}} exceeds the maximum allowable {{label}} limit of {{max}}.", "invalidInput": "Ovo polje ima nevaljan unos.", "invalidSelection": "Ovo polje ima nevaljan odabir.", "invalidSelections": "Ovo polje ima sljedeće nevaljane odabire:", - "lessThanMin": "\"{{value}}\" je manja od minimalne dopuštene vrijednost od {{min}}.", + "lessThanMin": "{{value}} is below the minimum allowable {{label}} limit of {{min}}.", "longerThanMin": "Ova vrijednost mora biti duža od minimalne dužine od {{minLength}} znakova", "notValidDate": "\"{{value}}\" nije valjan datum.", "required": "Ovo polje je obvezno.", @@ -343,4 +344,4 @@ "viewingVersions": "Pregled verzija za {{entityLabel}} {{documentTitle}}", "viewingVersionsGlobal": "Pregled verzije za globalni {{entityLabel}}" } -} +} \ No newline at end of file diff --git a/src/translations/hu.json b/src/translations/hu.json index c205cda4db..2618644364 100644 --- a/src/translations/hu.json +++ b/src/translations/hu.json @@ -1,346 +1,347 @@ { - "$schema": "./translation-schema.json", - "authentication": { - "account": "Fiók", - "accountOfCurrentUser": "Az aktuális felhasználó fiókja", - "alreadyActivated": "Már aktiválva van", - "alreadyLoggedIn": "Már bejelentkezett", - "apiKey": "API-kulcs", - "backToLogin": "Vissza a bejelentkezéshez", - "beginCreateFirstUser": "Kezdésként hozza létre az első felhasználót.", - "changePassword": "Jelszó módosítása", - "checkYourEmailForPasswordReset": "Ellenőrizze az e-mailjét, a linkért, amellyel biztonságosan visszaállíthatja jelszavát.", - "confirmGeneration": "Generálás megerősítése", - "confirmPassword": "Jelszó megerősítése", - "createFirstUser": "Első felhasználó létrehozása", - "emailNotValid": "A megadott e-mail cím érvénytelen", - "emailSent": "E-mail elküldve", - "enableAPIKey": "API-kulcs engedélyezése", - "failedToUnlock": "Nem sikerült feloldani", - "forceUnlock": "Kényszerített feloldás", - "forgotPassword": "Elfelejtett jelszó", - "forgotPasswordEmailInstructions": "Kérjük, adja meg e-mail címét alább. Kapni fog egy e-mail üzenetet a jelszó visszaállításához szükséges utasításokkal.", - "forgotPasswordQuestion": "Elfelejtette jelszavát?", - "generate": "Generálás", - "generateNewAPIKey": "Új API-kulcs generálása", - "generatingNewAPIKeyWillInvalidate": "Az új API-kulcs generálása <1>érvényteleníti az előző kulcsot. Biztos, hogy folytatni szeretné?", - "lockUntil": "Zárolás eddig", - "logBackIn": "Jelentkezzen be újra", - "logOut": "Kijelentkezés", - "loggedIn": "Ha egy másik felhasználóval szeretne bejelentkezni, először <0>ki kell jelentkeznie.", - "loggedInChangePassword": "Jelszavának megváltoztatásához lépjen be <0>fiókjába, és ott szerkessze jelszavát.", - "loggedOutInactivity": "Inaktivitás miatt kijelentkeztünk.", - "loggedOutSuccessfully": "Sikeresen kijelentkezett.", - "login": "Bejelentkezés", - "loginAttempts": "Bejelentkezési kísérletek", - "loginUser": "Bejelentkezés felhasználó", - "loginWithAnotherUser": "Ha egy másik felhasználóval szeretne bejelentkezni, először <0>ki kell jelentkeznie.", - "logout": "Kijelentkezés", - "logoutUser": "Felhasználó kijelentkezése", - "newAPIKeyGenerated": "Új API-kulcs generálva.", - "newAccountCreated": "Létrehoztunk egy új fiókot, amellyel hozzáférhet a következőhöz {{serverURL}} Kérjük, kattintson a következő linkre, vagy illessze be az alábbi URL-t a böngészőbe az e-mail-cím ellenőrzéséhez : {{verificationURL}}
Az e-mail-cím ellenőrzése után sikeresen be tud majd jelentkezni.", - "newPassword": "Új jelszó", - "resetPassword": "Jelszó visszaállítása", - "resetPasswordExpiration": "Jelszóvisszaállítás lejárata", - "resetPasswordToken": "Jelszóvisszaállító token", - "resetYourPassword": "Jelszó visszaállítása", - "stayLoggedIn": "Maradjon bejelentkezve", - "successfullyUnlocked": "Sikeresen feloldva", - "unableToVerify": "Sikertelen megerősítés", - "verified": "Megerősítve", - "verifiedSuccessfully": "Sikeresen megerősítve", - "verify": "Megerősítés", - "verifyUser": "Felhasználó megerősítése", - "verifyYourEmail": "Erősítse meg az e-mail címét", - "youAreInactive": "Már egy ideje nem volt aktív, és hamarosan automatikusan kijelentkeztetjük saját biztonsága érdekében. Szeretne bejelentkezve maradni?", - "youAreReceivingResetPassword": "Ezt azért kapja, mert Ön (vagy valaki más) kérte fiókja jelszavának visszaállítását. A folyamat befejezéséhez kattintson a következő linkre, vagy illessze be böngészőjébe:", - "youDidNotRequestPassword": "Ha nem Ön kérte ezt, kérjük, hagyja figyelmen kívül ezt az e-mailt, és jelszava változatlan marad." - }, - "error": { - "accountAlreadyActivated": "Ez a fiók már aktiválva van.", - "autosaving": "Hiba történt a dokumentum automatikus mentése közben.", - "correctInvalidFields": "Kérjük, javítsa ki az érvénytelen mezőket.", - "deletingFile": "Hiba történt a fájl törlésekor.", - "deletingTitle": "Hiba történt a {{title}} törlése közben. Kérjük, ellenőrizze a kapcsolatot, és próbálja meg újra.", - "emailOrPasswordIncorrect": "A megadott e-mail-cím vagy jelszó helytelen.", - "followingFieldsInvalid_many": "A következő mezők érvénytelenek:", - "followingFieldsInvalid_one": "A következő mező érvénytelen:", - "incorrectCollection": "Helytelen gyűjtemény", - "invalidFileType": "Érvénytelen fájltípus", - "invalidFileTypeValue": "Érvénytelen fájltípus: {{value}}", - "loadingDocument": "Hiba történt a {{id}} azonosítójú dokumentum betöltésekor.", - "missingEmail": "Hiányzó e-mail.", - "missingIDOfDocument": "Hiányzik a frissítendő dokumentum azonosítója.", - "missingIDOfVersion": "A verzió azonosítója hiányzik.", - "missingRequiredData": "Hiányoznak kötelező adatok.", - "noFilesUploaded": "Nem került fájl feltöltésre.", - "noMatchedField": "Nem található egyező mező a következőhöz: \"{{label}}\"", - "noUser": "Nincs felhasználó", - "notAllowedToAccessPage": "Ehhez az oldalhoz nem férhet hozzá.", - "notAllowedToPerformAction": "Ezt a műveletet nem hajthatja végre.", - "notFound": "A kért erőforrás nem található.", - "previewing": "Hiba történt a dokumentum előnézetének megtekintése közben.", - "problemUploadingFile": "Hiba történt a fájl feltöltése közben.", - "tokenInvalidOrExpired": "A token érvénytelen vagy lejárt.", - "unPublishingDocument": "Hiba történt a dokumentum közzétételének visszavonása közben.", - "unableToDeleteCount": "Nem sikerült törölni {{count}}/{{total}} {{label}}.", - "unableToUpdateCount": "Nem sikerült frissíteni {{count}}/{{total}} {{label}}.", - "unauthorized": "Jogosulatlan, a kéréshez be kell jelentkeznie.", - "unknown": "Ismeretlen hiba történt.", - "unspecific": "Hiba történt.", - "userLocked": "Ez a felhasználó túl sok sikertelen bejelentkezési kísérlet miatt zárolva van.", - "valueMustBeUnique": "Az értéknek egyedinek kell lennie", - "verificationTokenInvalid": "Az ellenőrző token érvénytelen." - }, - "fields": { - "addLabel": "{{label}} hozzáadása", - "addLink": "Link hozzáadása", - "addNew": "Új hozzáadása", - "addNewLabel": "Új {{label}} hozzáadása", - "addRelationship": "Kapcsolat hozzáadása", - "addUpload": "Feltöltés hozzáadása", - "block": "blokk", - "blockType": "Blokk típusa", - "blocks": "blokkok", - "chooseBetweenCustomTextOrDocument": "Válasszon egy egyéni szöveges URL-cím megadása vagy egy másik dokumentumra való hivatkozás között.", - "chooseDocumentToLink": "Válassza ki a dokumentumot, amelyre hivatkozni kíván", - "chooseFromExisting": "Válasszon a meglévők közül", - "chooseLabel": "Válassza ki a {{label}}", - "collapseAll": "Mindet összecsuk", - "customURL": "Egyéni URL", - "editLabelData": "{{label}} adatok szerkesztése", - "editLink": "Link szerkesztése", - "editRelationship": "Kapcsolat hozzáadása", - "enterURL": "Adjon meg egy URL-t", - "internalLink": "Belső link", - "itemsAndMore": "{{items}} és további {{count}}", - "labelRelationship": "{{label}} Kapcsolat", - "latitude": "Szélesség", - "linkType": "Link típusa", - "linkedTo": "Kapcsolódik a <0>{{label}}", - "longitude": "Hosszúság", - "newLabel": "Új {{label}}", - "openInNewTab": "Megnyitás új lapon", - "passwordsDoNotMatch": "A jelszavak nem egyeznek.", - "relatedDocument": "Kapcsolódó dokumentum", - "relationTo": "Kapcsolat a következővel:", - "removeRelationship": "Kapcsolat eltávolítása", - "removeUpload": "Feltöltés eltávolítása", - "saveChanges": "Módosítások mentése", - "searchForBlock": "Blokk keresése", - "selectExistingLabel": "Meglévő {{label}} kiválasztása", - "selectFieldsToEdit": "Válassza ki a szerkeszteni kívánt mezőket", - "showAll": "Az összes megjelenítése", - "swapRelationship": "Kapcsolat csere", - "swapUpload": "Feltöltés csere", - "textToDisplay": "Megjelenítendő szöveg", - "toggleBlock": "Blokk kinyitása", - "uploadNewLabel": "Új {{label}} feltöltése" - }, - "general": { - "aboutToDelete": "A {{label}} <1>{{title}} törlésére készül. Biztos benne?", - "aboutToDeleteCount_many": "Törölni készül {{count}} {{label}}", - "aboutToDeleteCount_one": "Törölni készül {{count}} {{label}}", - "aboutToDeleteCount_other": "Törölni készül {{count}} {{label}}", - "addBelow": "Hozzáadás lent", - "addFilter": "Szűrő hozzáadása", - "adminTheme": "Admin téma", - "and": "És", - "ascending": "Növekvő", - "automatic": "Automatikus", - "backToDashboard": "Vissza az irányítópultra", - "cancel": "Mégsem", - "changesNotSaved": "A módosítások nem lettek mentve. Ha most távozik, elveszíti a változtatásokat.", - "close": "Bezárás", - "collections": "Gyűjtemények", - "columnToSort": "Rendezendő oszlop", - "columns": "Oszlopok", - "confirm": "Megerősítés", - "confirmDeletion": "Törlés megerősítése", - "confirmDuplication": "Duplikáció megerősítése", - "copied": "Másolva", - "copy": "Másolás", - "create": "Létrehozás", - "createNew": "Új létrehozása", - "createNewLabel": "Új {{label}} létrehozása", - "created": "Létrehozva", - "createdAt": "Létrehozva:", - "creating": "Létrehozás", - "dark": "Sötét", - "dashboard": "Irányítópult", - "delete": "Törlés", - "deletedCountSuccessfully": "{{count}} {{label}} sikeresen törölve.", - "deletedSuccessfully": "Sikeresen törölve.", - "deleting": "Törlés...", - "descending": "Csökkenő", - "duplicate": "Duplikálás", - "duplicateWithoutSaving": "Duplikálás a módosítások mentése nélkül", - "edit": "Szerkesztés", - "editLabel": "{{label}} szerkesztése", - "editing": "Szerkesztés", - "editingLabel_many": "{{count}} {{label}} szerkesztése", - "editingLabel_one": "{{count}} {{label}} szerkesztése", - "editingLabel_other": "{{count}} {{label}} szerkesztése", - "email": "E-mail", - "emailAddress": "E-mail cím", - "enterAValue": "Adjon meg egy értéket", - "fallbackToDefaultLocale": "Visszatérés az alapértelmezett nyelvhez", - "filter": "Szűrő", - "filterWhere": "Szűrő {{label}} ahol", - "filters": "Szűrők", - "globals": "Globálisok", - "language": "Nyelv", - "lastModified": "Utoljára módosítva", - "leaveAnyway": "Távozás mindenképp", - "leaveWithoutSaving": "Távozás mentés nélkül", - "light": "Világos", - "loading": "Betöltés", - "locales": "Nyelvek", - "moveDown": "Mozgatás lefelé", - "moveUp": "Mozgatás felfelé", - "newPassword": "Új jelszó", - "noFiltersSet": "Nincs beállítva szűrő", - "noLabel": "", - "noResults": "Nem találtunk {{label}}. Vagy még nem létezik {{label}}, vagy egyik sem felel meg a fent megadott szűrőknek.", - "noValue": "Nincs érték", - "none": "Semmi", - "notFound": "Nem található", - "nothingFound": "Nincs találat", - "of": "a", - "or": "Vagy", - "order": "Sorrend", - "pageNotFound": "Az oldal nem található", - "password": "Jelszó", - "payloadSettings": "Payload beállítások", - "perPage": "Oldalanként: {{limit}}", - "remove": "Törlés", - "row": "Sor", - "rows": "Sorok", - "save": "Mentés", - "saving": "Mentés...", - "searchBy": "Keresés a következő szerint: {{label}}", - "selectAll": "Az összes kijelölése: {{count}} {{label}}", - "selectValue": "Válasszon ki egy értéket", - "selectedCount": "{{count}} {{label}} kiválasztva", - "sorryNotFound": "Sajnáljuk – nincs semmi, ami megfelelne a kérésének.", - "sort": "Rendezés", - "stayOnThisPage": "Maradjon ezen az oldalon", - "submissionSuccessful": "Beküldés sikeres.", - "submit": "Beküldés", - "successfullyCreated": "{{label}} sikeresen létrehozva.", - "successfullyDuplicated": "{{label}} sikeresen duplikálódott.", - "thisLanguage": "Magyar", - "titleDeleted": "{{label}} \"{{title}}\" sikeresen törölve.", - "unauthorized": "Jogosulatlan", - "unsavedChangesDuplicate": "Nem mentett módosításai vannak. Szeretné folytatni a duplikációt?", - "untitled": "Névtelen", - "updatedAt": "Frissítve:", - "updatedCountSuccessfully": "{{count}} {{label}} sikeresen frissítve.", - "updatedSuccessfully": "Sikeresen frissítve.", - "updating": "Frissítés", - "uploading": "Feltöltés", - "user": "Felhasználó", - "users": "Felhasználók", - "welcome": "Üdvözöljük" - }, - "operators": { - "equals": "egyenlő", - "isNotEqualTo": "nem egyenlő", - "isIn": "benne van", - "isNotIn": "nincs benne", - "exists": "létezik", - "isGreaterThan": "nagyobb, mint", - "isLessThan": "kisebb, mint", - "isLessThanOrEqualTo": "kisebb vagy egyenlő, mint", - "isGreaterThanOrEqualTo": "nagyobb vagy egyenlő, mint", - "near": "közel", - "isLike": "olyan, mint", - "contains": "tartalmaz" - }, - "upload": { - "dragAndDropHere": "vagy húzzon ide egy fájlt", - "fileName": "Fájlnév", - "fileSize": "Fájl mérete", - "height": "Magasság", - "lessInfo": "Kevesebb információ", - "moreInfo": "További információ", - "selectCollectionToBrowse": "Válassza ki a böngészni kívánt gyűjteményt", - "selectFile": "Válasszon ki egy fájlt", - "dragAndDrop": "Húzzon ide egy fájlt", - "sizes": "Méretek", - "width": "Szélesség" - }, - "validation": { - "emailAddress": "Kérjük, adjon meg egy érvényes e-mail címet.", - "enterNumber": "Kérjük, adjon meg egy érvényes számot.", - "fieldHasNo": "Ennek a mezőnek nincs {{label}}", - "greaterThanMax": "\"{{value}}\" nagyobb, mint a megengedett maximális érték {{max}}.", - "invalidInput": "Ez a mező érvénytelen értéket tartalmaz.", - "invalidSelection": "Ez a mező érvénytelen kijelöléssel rendelkezik.", - "invalidSelections": "Ez a mező a következő érvénytelen kijelöléseket tartalmazza:", - "lessThanMin": "\"{{value}}\" kisebb, mint a megengedett minimális érték {{min}}.", - "longerThanMin": "Ennek az értéknek hosszabbnak kell lennie, mint a minimális {{minLength}} karakter hosszúság.", - "notValidDate": "\" {{value}} \" nem érvényes dátum.", - "required": "Ez a mező kötelező.", - "requiresAtLeast": "Ehhez a mezőhöz legalább {{count}} {{label}} szükséges.", - "requiresNoMoreThan": "Ehhez a mezőhöz legfeljebb {{count}} {{label}} szükséges.", - "requiresTwoNumbers": "Ehhez a mezőhöz két szám szükséges.", - "shorterThanMax": "Ennek az értéknek rövidebbnek kell lennie, mint a maximálisan megengedett {{maxLength}} karakter.", - "trueOrFalse": "Ez a mező csak igaz vagy hamis lehet.", - "validUploadID": "Ez a mező nem érvényes feltöltési azonosító." - }, - "version": { - "aboutToPublishSelection": "Arra készül, hogy az összes {{label}} elemet közzétegye a kijelölésben. biztos vagy ebben?", - "aboutToRestore": "Arra készül, hogy visszaállítsa ezt a {{label}} dokumentumot arra az állapotra, amelyben {{versionDate}} napon volt.", - "aboutToRestoreGlobal": "Arra készül, hogy visszaállítsa a {{label}} arra az állapotra, amelyben {{versionDate}} napon volt.", - "aboutToRevertToPublished": "Arra készül, hogy visszaállítsa a dokumentum módosításait a közzétett állapotába. Biztos benne?", - "aboutToUnpublish": "A dokumentum közzétételének visszavonására készül. Biztos benne?", - "aboutToUnpublishSelection": "Arra készül, hogy visszavonja a kijelölésben szereplő összes {{label}} közzétételét. biztos vagy ebben?", - "autosave": "Automatikus mentés", - "autosavedSuccessfully": "Automatikus mentés sikeres.", - "autosavedVersion": "Automatikusan mentett verzió", - "changed": "Megváltozott", - "compareVersion": "Hasonlítsa össze a verziót a következőkkel:", - "confirmPublish": "A közzététel megerősítése", - "confirmRevertToSaved": "Erősítse meg a mentett verzióra való visszatérést", - "confirmUnpublish": "A közzététel visszavonásának megerősítése", - "confirmVersionRestoration": "Verzió-visszaállítás megerősítése", - "currentDocumentStatus": "Jelenlegi {{docStatus}} dokumentum", - "draft": "Piszkozat", - "draftSavedSuccessfully": "A piszkozat sikeresen mentve.", - "lastSavedAgo": "Utoljára mentve {{distance, relativetime(minutes)}}", - "noFurtherVersionsFound": "További verziók nem találhatók", - "noRowsFound": "Nem található {{label}}", - "preview": "Előnézet", - "problemRestoringVersion": "Hiba történt a verzió visszaállításakor", - "publish": "Közzététel", - "publishChanges": "Módosítások közzététele", - "published": "Közzétett", - "restoreThisVersion": "A verzió visszaállítása", - "restoredSuccessfully": "Sikeresen visszaállítva.", - "restoring": "Visszaállítás...", - "revertToPublished": "Visszatérés a közzétetthez", - "reverting": "Visszaállítás...", - "saveDraft": "Piszkozat mentése", - "selectLocales": "Megjelenítendő nyelvek kiválasztása", - "selectVersionToCompare": "Válassza ki az összehasonlítani kívánt verziót", - "showLocales": "Nyelvek megjelenítése:", - "showingVersionsFor": "Verziók megjelenítése a következőkhöz:", - "status": "Állapot", - "type": "Típus", - "unpublish": "Közzététel visszavonása", - "unpublishing": "Közzététel visszavonása...", - "version": "Verzió", - "versionCount_many": "{{count}} verzió található", - "versionCount_none": "Nem található verzió", - "versionCount_one": "{{count}} verzió található", - "versionCount_other": "{{count}} verzió található", - "versionCreatedOn": "{{version}} létrehozva:", - "versionID": "Verzióazonosító", - "versions": "Verziók", - "viewingVersion": "A(z) {{entityLabel}} {{documentTitle}} verziójának megtekintése", - "viewingVersionGlobal": "A globális {{entityLabel}} verziójának megtekintése", - "viewingVersions": "A {{entityLabel}} {{documentTitle}} verzióinak megtekintése", - "viewingVersionsGlobal": "A globális {{entityLabel}} verzióinak megtekintése" - } + "$schema": "./translation-schema.json", + "authentication": { + "account": "Fiók", + "accountOfCurrentUser": "Az aktuális felhasználó fiókja", + "alreadyActivated": "Már aktiválva van", + "alreadyLoggedIn": "Már bejelentkezett", + "apiKey": "API-kulcs", + "backToLogin": "Vissza a bejelentkezéshez", + "beginCreateFirstUser": "Kezdésként hozza létre az első felhasználót.", + "changePassword": "Jelszó módosítása", + "checkYourEmailForPasswordReset": "Ellenőrizze az e-mailjét, a linkért, amellyel biztonságosan visszaállíthatja jelszavát.", + "confirmGeneration": "Generálás megerősítése", + "confirmPassword": "Jelszó megerősítése", + "createFirstUser": "Első felhasználó létrehozása", + "emailNotValid": "A megadott e-mail cím érvénytelen", + "emailSent": "E-mail elküldve", + "enableAPIKey": "API-kulcs engedélyezése", + "failedToUnlock": "Nem sikerült feloldani", + "forceUnlock": "Kényszerített feloldás", + "forgotPassword": "Elfelejtett jelszó", + "forgotPasswordEmailInstructions": "Kérjük, adja meg e-mail címét alább. Kapni fog egy e-mail üzenetet a jelszó visszaállításához szükséges utasításokkal.", + "forgotPasswordQuestion": "Elfelejtette jelszavát?", + "generate": "Generálás", + "generateNewAPIKey": "Új API-kulcs generálása", + "generatingNewAPIKeyWillInvalidate": "Az új API-kulcs generálása <1>érvényteleníti az előző kulcsot. Biztos, hogy folytatni szeretné?", + "lockUntil": "Zárolás eddig", + "logBackIn": "Jelentkezzen be újra", + "logOut": "Kijelentkezés", + "loggedIn": "Ha egy másik felhasználóval szeretne bejelentkezni, először <0>ki kell jelentkeznie.", + "loggedInChangePassword": "Jelszavának megváltoztatásához lépjen be <0>fiókjába, és ott szerkessze jelszavát.", + "loggedOutInactivity": "Inaktivitás miatt kijelentkeztünk.", + "loggedOutSuccessfully": "Sikeresen kijelentkezett.", + "login": "Bejelentkezés", + "loginAttempts": "Bejelentkezési kísérletek", + "loginUser": "Bejelentkezés felhasználó", + "loginWithAnotherUser": "Ha egy másik felhasználóval szeretne bejelentkezni, először <0>ki kell jelentkeznie.", + "logout": "Kijelentkezés", + "logoutUser": "Felhasználó kijelentkezése", + "newAPIKeyGenerated": "Új API-kulcs generálva.", + "newAccountCreated": "Létrehoztunk egy új fiókot, amellyel hozzáférhet a következőhöz {{serverURL}} Kérjük, kattintson a következő linkre, vagy illessze be az alábbi URL-t a böngészőbe az e-mail-cím ellenőrzéséhez : {{verificationURL}}
Az e-mail-cím ellenőrzése után sikeresen be tud majd jelentkezni.", + "newPassword": "Új jelszó", + "resetPassword": "Jelszó visszaállítása", + "resetPasswordExpiration": "Jelszóvisszaállítás lejárata", + "resetPasswordToken": "Jelszóvisszaállító token", + "resetYourPassword": "Jelszó visszaállítása", + "stayLoggedIn": "Maradjon bejelentkezve", + "successfullyUnlocked": "Sikeresen feloldva", + "unableToVerify": "Sikertelen megerősítés", + "verified": "Megerősítve", + "verifiedSuccessfully": "Sikeresen megerősítve", + "verify": "Megerősítés", + "verifyUser": "Felhasználó megerősítése", + "verifyYourEmail": "Erősítse meg az e-mail címét", + "youAreInactive": "Már egy ideje nem volt aktív, és hamarosan automatikusan kijelentkeztetjük saját biztonsága érdekében. Szeretne bejelentkezve maradni?", + "youAreReceivingResetPassword": "Ezt azért kapja, mert Ön (vagy valaki más) kérte fiókja jelszavának visszaállítását. A folyamat befejezéséhez kattintson a következő linkre, vagy illessze be böngészőjébe:", + "youDidNotRequestPassword": "Ha nem Ön kérte ezt, kérjük, hagyja figyelmen kívül ezt az e-mailt, és jelszava változatlan marad." + }, + "error": { + "accountAlreadyActivated": "Ez a fiók már aktiválva van.", + "autosaving": "Hiba történt a dokumentum automatikus mentése közben.", + "correctInvalidFields": "Kérjük, javítsa ki az érvénytelen mezőket.", + "deletingFile": "Hiba történt a fájl törlésekor.", + "deletingTitle": "Hiba történt a {{title}} törlése közben. Kérjük, ellenőrizze a kapcsolatot, és próbálja meg újra.", + "emailOrPasswordIncorrect": "A megadott e-mail-cím vagy jelszó helytelen.", + "followingFieldsInvalid_many": "A következő mezők érvénytelenek:", + "followingFieldsInvalid_one": "A következő mező érvénytelen:", + "incorrectCollection": "Helytelen gyűjtemény", + "invalidFileType": "Érvénytelen fájltípus", + "invalidFileTypeValue": "Érvénytelen fájltípus: {{value}}", + "loadingDocument": "Hiba történt a {{id}} azonosítójú dokumentum betöltésekor.", + "missingEmail": "Hiányzó e-mail.", + "missingIDOfDocument": "Hiányzik a frissítendő dokumentum azonosítója.", + "missingIDOfVersion": "A verzió azonosítója hiányzik.", + "missingRequiredData": "Hiányoznak kötelező adatok.", + "noFilesUploaded": "Nem került fájl feltöltésre.", + "noMatchedField": "Nem található egyező mező a következőhöz: \"{{label}}\"", + "noUser": "Nincs felhasználó", + "notAllowedToAccessPage": "Ehhez az oldalhoz nem férhet hozzá.", + "notAllowedToPerformAction": "Ezt a műveletet nem hajthatja végre.", + "notFound": "A kért erőforrás nem található.", + "previewing": "Hiba történt a dokumentum előnézetének megtekintése közben.", + "problemUploadingFile": "Hiba történt a fájl feltöltése közben.", + "tokenInvalidOrExpired": "A token érvénytelen vagy lejárt.", + "unPublishingDocument": "Hiba történt a dokumentum közzétételének visszavonása közben.", + "unableToDeleteCount": "Nem sikerült törölni {{count}}/{{total}} {{label}}.", + "unableToUpdateCount": "Nem sikerült frissíteni {{count}}/{{total}} {{label}}.", + "unauthorized": "Jogosulatlan, a kéréshez be kell jelentkeznie.", + "unknown": "Ismeretlen hiba történt.", + "unspecific": "Hiba történt.", + "userLocked": "Ez a felhasználó túl sok sikertelen bejelentkezési kísérlet miatt zárolva van.", + "valueMustBeUnique": "Az értéknek egyedinek kell lennie", + "verificationTokenInvalid": "Az ellenőrző token érvénytelen." + }, + "fields": { + "addLabel": "{{label}} hozzáadása", + "addLink": "Link hozzáadása", + "addNew": "Új hozzáadása", + "addNewLabel": "Új {{label}} hozzáadása", + "addRelationship": "Kapcsolat hozzáadása", + "addUpload": "Feltöltés hozzáadása", + "block": "blokk", + "blockType": "Blokk típusa", + "blocks": "blokkok", + "chooseBetweenCustomTextOrDocument": "Válasszon egy egyéni szöveges URL-cím megadása vagy egy másik dokumentumra való hivatkozás között.", + "chooseDocumentToLink": "Válassza ki a dokumentumot, amelyre hivatkozni kíván", + "chooseFromExisting": "Válasszon a meglévők közül", + "chooseLabel": "Válassza ki a {{label}}", + "collapseAll": "Mindet összecsuk", + "customURL": "Egyéni URL", + "editLabelData": "{{label}} adatok szerkesztése", + "editLink": "Link szerkesztése", + "editRelationship": "Kapcsolat hozzáadása", + "enterURL": "Adjon meg egy URL-t", + "internalLink": "Belső link", + "itemsAndMore": "{{items}} és további {{count}}", + "labelRelationship": "{{label}} Kapcsolat", + "latitude": "Szélesség", + "linkType": "Link típusa", + "linkedTo": "Kapcsolódik a <0>{{label}}", + "longitude": "Hosszúság", + "newLabel": "Új {{label}}", + "openInNewTab": "Megnyitás új lapon", + "passwordsDoNotMatch": "A jelszavak nem egyeznek.", + "relatedDocument": "Kapcsolódó dokumentum", + "relationTo": "Kapcsolat a következővel:", + "removeRelationship": "Kapcsolat eltávolítása", + "removeUpload": "Feltöltés eltávolítása", + "saveChanges": "Módosítások mentése", + "searchForBlock": "Blokk keresése", + "selectExistingLabel": "Meglévő {{label}} kiválasztása", + "selectFieldsToEdit": "Válassza ki a szerkeszteni kívánt mezőket", + "showAll": "Az összes megjelenítése", + "swapRelationship": "Kapcsolat csere", + "swapUpload": "Feltöltés csere", + "textToDisplay": "Megjelenítendő szöveg", + "toggleBlock": "Blokk kinyitása", + "uploadNewLabel": "Új {{label}} feltöltése" + }, + "general": { + "aboutToDelete": "A {{label}} <1>{{title}} törlésére készül. Biztos benne?", + "aboutToDeleteCount_many": "Törölni készül {{count}} {{label}}", + "aboutToDeleteCount_one": "Törölni készül {{count}} {{label}}", + "aboutToDeleteCount_other": "Törölni készül {{count}} {{label}}", + "addBelow": "Hozzáadás lent", + "addFilter": "Szűrő hozzáadása", + "adminTheme": "Admin téma", + "and": "És", + "ascending": "Növekvő", + "automatic": "Automatikus", + "backToDashboard": "Vissza az irányítópultra", + "cancel": "Mégsem", + "changesNotSaved": "A módosítások nem lettek mentve. Ha most távozik, elveszíti a változtatásokat.", + "close": "Bezárás", + "collections": "Gyűjtemények", + "columnToSort": "Rendezendő oszlop", + "columns": "Oszlopok", + "confirm": "Megerősítés", + "confirmDeletion": "Törlés megerősítése", + "confirmDuplication": "Duplikáció megerősítése", + "copied": "Másolva", + "copy": "Másolás", + "create": "Létrehozás", + "createNew": "Új létrehozása", + "createNewLabel": "Új {{label}} létrehozása", + "created": "Létrehozva", + "createdAt": "Létrehozva:", + "creating": "Létrehozás", + "dark": "Sötét", + "dashboard": "Irányítópult", + "delete": "Törlés", + "deletedCountSuccessfully": "{{count}} {{label}} sikeresen törölve.", + "deletedSuccessfully": "Sikeresen törölve.", + "deleting": "Törlés...", + "descending": "Csökkenő", + "duplicate": "Duplikálás", + "duplicateWithoutSaving": "Duplikálás a módosítások mentése nélkül", + "edit": "Szerkesztés", + "editLabel": "{{label}} szerkesztése", + "editing": "Szerkesztés", + "editingLabel_many": "{{count}} {{label}} szerkesztése", + "editingLabel_one": "{{count}} {{label}} szerkesztése", + "editingLabel_other": "{{count}} {{label}} szerkesztése", + "email": "E-mail", + "emailAddress": "E-mail cím", + "enterAValue": "Adjon meg egy értéket", + "fallbackToDefaultLocale": "Visszatérés az alapértelmezett nyelvhez", + "filter": "Szűrő", + "filterWhere": "Szűrő {{label}} ahol", + "filters": "Szűrők", + "globals": "Globálisok", + "language": "Nyelv", + "lastModified": "Utoljára módosítva", + "leaveAnyway": "Távozás mindenképp", + "leaveWithoutSaving": "Távozás mentés nélkül", + "light": "Világos", + "loading": "Betöltés", + "locales": "Nyelvek", + "moveDown": "Mozgatás lefelé", + "moveUp": "Mozgatás felfelé", + "newPassword": "Új jelszó", + "noFiltersSet": "Nincs beállítva szűrő", + "noLabel": "", + "noResults": "Nem találtunk {{label}}. Vagy még nem létezik {{label}}, vagy egyik sem felel meg a fent megadott szűrőknek.", + "noValue": "Nincs érték", + "none": "Semmi", + "notFound": "Nem található", + "nothingFound": "Nincs találat", + "of": "a", + "or": "Vagy", + "order": "Sorrend", + "pageNotFound": "Az oldal nem található", + "password": "Jelszó", + "payloadSettings": "Payload beállítások", + "perPage": "Oldalanként: {{limit}}", + "remove": "Törlés", + "row": "Sor", + "rows": "Sorok", + "save": "Mentés", + "saving": "Mentés...", + "searchBy": "Keresés a következő szerint: {{label}}", + "selectAll": "Az összes kijelölése: {{count}} {{label}}", + "selectValue": "Válasszon ki egy értéket", + "selectedCount": "{{count}} {{label}} kiválasztva", + "sorryNotFound": "Sajnáljuk – nincs semmi, ami megfelelne a kérésének.", + "sort": "Rendezés", + "stayOnThisPage": "Maradjon ezen az oldalon", + "submissionSuccessful": "Beküldés sikeres.", + "submit": "Beküldés", + "successfullyCreated": "{{label}} sikeresen létrehozva.", + "successfullyDuplicated": "{{label}} sikeresen duplikálódott.", + "thisLanguage": "Magyar", + "titleDeleted": "{{label}} \"{{title}}\" sikeresen törölve.", + "unauthorized": "Jogosulatlan", + "unsavedChangesDuplicate": "Nem mentett módosításai vannak. Szeretné folytatni a duplikációt?", + "untitled": "Névtelen", + "updatedAt": "Frissítve:", + "updatedCountSuccessfully": "{{count}} {{label}} sikeresen frissítve.", + "updatedSuccessfully": "Sikeresen frissítve.", + "updating": "Frissítés", + "uploading": "Feltöltés", + "user": "Felhasználó", + "users": "Felhasználók", + "value": "Érték", + "welcome": "Üdvözöljük" + }, + "operators": { + "equals": "egyenlő", + "isNotEqualTo": "nem egyenlő", + "isIn": "benne van", + "isNotIn": "nincs benne", + "exists": "létezik", + "isGreaterThan": "nagyobb, mint", + "isLessThan": "kisebb, mint", + "isLessThanOrEqualTo": "kisebb vagy egyenlő, mint", + "isGreaterThanOrEqualTo": "nagyobb vagy egyenlő, mint", + "near": "közel", + "isLike": "olyan, mint", + "contains": "tartalmaz" + }, + "upload": { + "dragAndDropHere": "vagy húzzon ide egy fájlt", + "fileName": "Fájlnév", + "fileSize": "Fájl mérete", + "height": "Magasság", + "lessInfo": "Kevesebb információ", + "moreInfo": "További információ", + "selectCollectionToBrowse": "Válassza ki a böngészni kívánt gyűjteményt", + "selectFile": "Válasszon ki egy fájlt", + "dragAndDrop": "Húzzon ide egy fájlt", + "sizes": "Méretek", + "width": "Szélesség" + }, + "validation": { + "emailAddress": "Kérjük, adjon meg egy érvényes e-mail címet.", + "enterNumber": "Kérjük, adjon meg egy érvényes számot.", + "fieldHasNo": "Ennek a mezőnek nincs {{label}}", + "greaterThanMax": "{{value}} nagyobb, mint a megengedett maximum {{label}} érték, ami {{max}}.", + "invalidInput": "Ez a mező érvénytelen értéket tartalmaz.", + "invalidSelection": "Ez a mező érvénytelen kijelöléssel rendelkezik.", + "invalidSelections": "Ez a mező a következő érvénytelen kijelöléseket tartalmazza:", + "lessThanMin": "{{value}} kisebb, mint a megengedett minimum {{label}} érték, ami {{min}}.", + "longerThanMin": "Ennek az értéknek hosszabbnak kell lennie, mint a minimális {{minLength}} karakter hosszúság.", + "notValidDate": "\" {{value}} \" nem érvényes dátum.", + "required": "Ez a mező kötelező.", + "requiresAtLeast": "Ehhez a mezőhöz legalább {{count}} {{label}} szükséges.", + "requiresNoMoreThan": "Ehhez a mezőhöz legfeljebb {{count}} {{label}} szükséges.", + "requiresTwoNumbers": "Ehhez a mezőhöz két szám szükséges.", + "shorterThanMax": "Ennek az értéknek rövidebbnek kell lennie, mint a maximálisan megengedett {{maxLength}} karakter.", + "trueOrFalse": "Ez a mező csak igaz vagy hamis lehet.", + "validUploadID": "Ez a mező nem érvényes feltöltési azonosító." + }, + "version": { + "aboutToPublishSelection": "Arra készül, hogy az összes {{label}} elemet közzétegye a kijelölésben. biztos vagy ebben?", + "aboutToRestore": "Arra készül, hogy visszaállítsa ezt a {{label}} dokumentumot arra az állapotra, amelyben {{versionDate}} napon volt.", + "aboutToRestoreGlobal": "Arra készül, hogy visszaállítsa a {{label}} arra az állapotra, amelyben {{versionDate}} napon volt.", + "aboutToRevertToPublished": "Arra készül, hogy visszaállítsa a dokumentum módosításait a közzétett állapotába. Biztos benne?", + "aboutToUnpublish": "A dokumentum közzétételének visszavonására készül. Biztos benne?", + "aboutToUnpublishSelection": "Arra készül, hogy visszavonja a kijelölésben szereplő összes {{label}} közzétételét. biztos vagy ebben?", + "autosave": "Automatikus mentés", + "autosavedSuccessfully": "Automatikus mentés sikeres.", + "autosavedVersion": "Automatikusan mentett verzió", + "changed": "Megváltozott", + "compareVersion": "Hasonlítsa össze a verziót a következőkkel:", + "confirmPublish": "A közzététel megerősítése", + "confirmRevertToSaved": "Erősítse meg a mentett verzióra való visszatérést", + "confirmUnpublish": "A közzététel visszavonásának megerősítése", + "confirmVersionRestoration": "Verzió-visszaállítás megerősítése", + "currentDocumentStatus": "Jelenlegi {{docStatus}} dokumentum", + "draft": "Piszkozat", + "draftSavedSuccessfully": "A piszkozat sikeresen mentve.", + "lastSavedAgo": "Utoljára mentve {{distance, relativetime(minutes)}}", + "noFurtherVersionsFound": "További verziók nem találhatók", + "noRowsFound": "Nem található {{label}}", + "preview": "Előnézet", + "problemRestoringVersion": "Hiba történt a verzió visszaállításakor", + "publish": "Közzététel", + "publishChanges": "Módosítások közzététele", + "published": "Közzétett", + "restoreThisVersion": "A verzió visszaállítása", + "restoredSuccessfully": "Sikeresen visszaállítva.", + "restoring": "Visszaállítás...", + "revertToPublished": "Visszatérés a közzétetthez", + "reverting": "Visszaállítás...", + "saveDraft": "Piszkozat mentése", + "selectLocales": "Megjelenítendő nyelvek kiválasztása", + "selectVersionToCompare": "Válassza ki az összehasonlítani kívánt verziót", + "showLocales": "Nyelvek megjelenítése:", + "showingVersionsFor": "Verziók megjelenítése a következőkhöz:", + "status": "Állapot", + "type": "Típus", + "unpublish": "Közzététel visszavonása", + "unpublishing": "Közzététel visszavonása...", + "version": "Verzió", + "versionCount_many": "{{count}} verzió található", + "versionCount_none": "Nem található verzió", + "versionCount_one": "{{count}} verzió található", + "versionCount_other": "{{count}} verzió található", + "versionCreatedOn": "{{version}} létrehozva:", + "versionID": "Verzióazonosító", + "versions": "Verziók", + "viewingVersion": "A(z) {{entityLabel}} {{documentTitle}} verziójának megtekintése", + "viewingVersionGlobal": "A globális {{entityLabel}} verziójának megtekintése", + "viewingVersions": "A {{entityLabel}} {{documentTitle}} verzióinak megtekintése", + "viewingVersionsGlobal": "A globális {{entityLabel}} verzióinak megtekintése" + } } diff --git a/src/translations/it.json b/src/translations/it.json index 6e4e2ac6e0..eb7ba272b5 100644 --- a/src/translations/it.json +++ b/src/translations/it.json @@ -241,6 +241,7 @@ "uploading": "Caricamento", "user": "Utente", "users": "Utenti", + "value": "Valore", "welcome": "Benvenuto" }, "operators": { @@ -274,11 +275,11 @@ "emailAddress": "Si prega di inserire un indirizzo email valido.", "enterNumber": "Si prega di inserire un numero valido.", "fieldHasNo": "Questo campo non ha {{label}}", - "greaterThanMax": "\"{{value}}\" è maggiore del valore massimo consentito di {{max}}.", + "greaterThanMax": "{{value}} è superiore al massimo consentito {{label}} di {{max}}.", "invalidInput": "Questo campo ha un input non valido.", "invalidSelection": "Questo campo ha una selezione non valida.", "invalidSelections": "'In questo campo sono presenti le seguenti selezioni non valide:'", - "lessThanMin": "\"{{value}}\" è inferiore al valore minimo consentito di {{min}}.", + "lessThanMin": "{{value}} è inferiore al minimo consentito {{label}} di {{min}}.", "longerThanMin": "Questo valore deve essere più lungo della lunghezza minima di {{minLength}} caratteri.", "notValidDate": "\"{{value}}\" non è una data valida.", "required": "Questo campo è obbligatorio.", diff --git a/src/translations/ja.json b/src/translations/ja.json index f1f9e9fe1e..b902324479 100644 --- a/src/translations/ja.json +++ b/src/translations/ja.json @@ -230,6 +230,7 @@ "uploading": "アップロード中", "user": "ユーザー", "users": "ユーザー", + "value": "値", "welcome": "ようこそ" }, "operators": { @@ -263,11 +264,11 @@ "emailAddress": "有効なメールアドレスを入力してください。", "enterNumber": "有効な数値を入力してください。", "fieldHasNo": "{{label}} が必要です。", - "greaterThanMax": "\"{{value}}\" ではなく、{{max}} 以下の値にする必要があります。", + "greaterThanMax": "{{value}}は許容最大{{label}}の{{max}}を超えています。", "invalidInput": "無効な入力値です。", "invalidSelection": "無効な選択です。", "invalidSelections": "次の無効な選択があります: ", - "lessThanMin": "\"{{value}}\" ではなく、{{min}} 以上の値にする必要があります。", + "lessThanMin": "{{value}}は許容最小{{label}}の{{min}}未満です。", "longerThanMin": "{{minLength}} 文字以上にする必要があります。", "notValidDate": "\"{{value}}\" は有効な日付ではありません。", "required": "必須フィールドです。", diff --git a/src/translations/my.json b/src/translations/my.json index a1c88cd206..572fa72067 100644 --- a/src/translations/my.json +++ b/src/translations/my.json @@ -241,6 +241,7 @@ "uploading": "တင်ပေးနေသည်", "user": "အသုံးပြုသူ", "users": "အသုံးပြုသူများ", + "value": "တန်ဖိုး", "welcome": "ကြိုဆိုပါတယ်။" }, "operators": { @@ -274,11 +275,11 @@ "emailAddress": "မှန်ကန်သော အီးမေးလ်လိပ်စာကို ထည့်သွင်းပါ။", "enterNumber": "မှန်ကန်သောနံပါတ်တစ်ခုထည့်ပါ။", "fieldHasNo": "ဤအကွက်တွင် {{label}} မရှိပါ။", - "greaterThanMax": "\"{{value}}\" သည် {{max}} ၏ အများဆုံးခွင့်ပြုထားသော တန်ဖိုးထက် ကြီးသည်။", + "greaterThanMax": "{{value}} သည် {{max}} ထက် ပိုမိုကြီးသည်။ ဤသည်ဖြင့် {{label}} အများဆုံးခွင့်ပြုထားသော တန်ဖိုးထက် ကြီးသည်။", "invalidInput": "ဤအကွက်တွင် မမှန်ကန်သော ထည့်သွင်းမှုတစ်ခုရှိသည်။", "invalidSelection": "ဤအကွက်တွင် မမှန်ကန်သော ရွေးချယ်မှုတစ်ခုရှိသည်။", "invalidSelections": "ဤအကွက်တွင် အောက်ပါ မမှန်ကန်သော ရွေးချယ်မှုများ ရှိသည်", - "lessThanMin": "\"{{value}}\" သည် {{min}} ၏ အနည်းဆုံးခွင့်ပြုထားသော တန်ဖိုးထက်နည်းသည်။", + "lessThanMin": "{{value}} သည် {{min}} ထက် ပိုမိုနိမ့်သည်။ ဤသည်ဖြင့် {{label}} အနည်းဆုံးခွင့်ပြုထားသော တန်ဖိုးထက် နိမ့်သည်။", "longerThanMin": "ဤတန်ဖိုးသည် အနိမ့်ဆုံးအရှည် {{minLength}} စာလုံးထက် ပိုရှည်ရမည်။", "notValidDate": "\"{{value}}\" သည် တရားဝင်ရက်စွဲမဟုတ်ပါ။", "required": "ဤအကွက်ကို လိုအပ်သည်။", diff --git a/src/translations/nb.json b/src/translations/nb.json index aa6745758e..c1f174ee0f 100644 --- a/src/translations/nb.json +++ b/src/translations/nb.json @@ -241,6 +241,7 @@ "uploading": "Opplasting", "user": "Bruker", "users": "Brukere", + "value": "Verdi", "welcome": "Velkommen" }, "operators": { @@ -274,11 +275,11 @@ "emailAddress": "Vennligst skriv inn en gyldig e-postadresse.", "enterNumber": "Vennligst skriv inn et gyldig tall.", "fieldHasNo": "Dette feltet har ingen {{label}}", - "greaterThanMax": "\"{{value}}\" er større enn det maksimale tillatte verdien av {{max}}.", + "greaterThanMax": "{{value}} er større enn den tillatte maksimale {{label}} på {{max}}.", "invalidInput": "Dette feltet har en ugyldig inndata.", "invalidSelection": "Dette feltet har en ugyldig utvalg.", "invalidSelections": "Dette feltet har følgende ugyldige utvalg:", - "lessThanMin": "\"{{value}}\" er mindre enn det minste tillatte verdien av {{min}}.", + "lessThanMin": "{{value}} er mindre enn den tillatte minimale {{label}} på {{min}}.", "longerThanMin": "Denne verdien må være lengre enn minimumslengden på {{minLength}} tegn.", "notValidDate": "\"{{value}}\" er ikke en gyldig dato.", "required": "Dette feltet er påkrevd.", diff --git a/src/translations/nl.json b/src/translations/nl.json index 2b175cad2f..870cf345c8 100644 --- a/src/translations/nl.json +++ b/src/translations/nl.json @@ -241,6 +241,7 @@ "uploading": "Uploaden", "user": "Gebruiker", "users": "Gebruikers", + "value": "Waarde", "welcome": "Welkom" }, "operators": { @@ -274,11 +275,11 @@ "emailAddress": "Voer een geldig e-mailadres in.", "enterNumber": "Voer een geldig nummer in.", "fieldHasNo": "Dit veld heeft geen {{label}}", - "greaterThanMax": "\"{{value}}\" is groter dan de maximaal toegestane waarde van {{max}}.", + "greaterThanMax": "{{value}} is groter dan de maximaal toegestane {{label}} van {{max}}.", "invalidInput": "Dit veld heeft een ongeldige invoer.", "invalidSelection": "Dit veld heeft een ongeldige selectie.", "invalidSelections": "Dit veld heeft de volgende ongeldige selecties:", - "lessThanMin": "\"{{value}}\" is kleiner dan de minimaal toegestande waarde van {{min}}.", + "lessThanMin": "{{value}} is kleiner dan de minimaal toegestane {{label}} van {{min}}.", "longerThanMin": "Deze waarde moet langer zijn dan de minimale lengte van {{minLength}} tekens.", "notValidDate": "\"{{value}}\" is geen geldige datum.", "required": "Dit veld is verplicht.", diff --git a/src/translations/pl.json b/src/translations/pl.json index ca1110e9a6..9de0569aab 100644 --- a/src/translations/pl.json +++ b/src/translations/pl.json @@ -241,6 +241,7 @@ "uploading": "Wgrywanie", "user": "użytkownik", "users": "użytkownicy", + "value": "Wartość", "welcome": "Witaj" }, "operators": { @@ -274,11 +275,11 @@ "emailAddress": "Wprowadź poprawny adres email.", "enterNumber": "Wprowadź poprawny numer telefonu.", "fieldHasNo": "To pole nie posiada {{label}}", - "greaterThanMax": "Wartość \"{{value}}\" przekracza maksymalną, dozwoloną liczbę {{max}} znaków.", + "greaterThanMax": "{{value}} jest większe niż maksymalnie dozwolony {{label}} wynoszący {{max}}.", "invalidInput": "To pole zawiera nieprawidłowe dane.", "invalidSelection": "To pole ma nieprawidłowy wybór.", "invalidSelections": "To pole zawiera następujące, nieprawidłowe wybory:", - "lessThanMin": "Wartość \"{{value}}\" jest mniejsza niż dozwolona, minimalna wartość: {{min}}.", + "lessThanMin": "{{value}} jest mniejsze niż minimalnie dozwolony {{label}} wynoszący {{min}}.", "longerThanMin": "Ta wartość musi być dłuższa niż minimalna długość znaków: {{minLength}}.", "notValidDate": "\"{{value}}\" nie jest prawidłową datą.", "required": "To pole jest wymagane.", diff --git a/src/translations/pt.json b/src/translations/pt.json index 7de5ab5cb5..3fda7fdb75 100644 --- a/src/translations/pt.json +++ b/src/translations/pt.json @@ -241,6 +241,7 @@ "uploading": "Fazendo upload", "user": "usuário", "users": "usuários", + "value": "Valor", "welcome": "Boas vindas" }, "operators": { @@ -274,11 +275,11 @@ "emailAddress": "Por favor, insira um endereço de email válido.", "enterNumber": "Por favor, insira um número válido.", "fieldHasNo": "Esse campo não contém {{label}}", - "greaterThanMax": "\"{{value}}\" é maior do que o valor máximo permitido de {{max}}.", + "greaterThanMax": "{{value}} é maior que o máximo permitido de {{label}} que é {{max}}.", "invalidInput": "Esse campo tem um conteúdo inválido.", "invalidSelection": "Esse campo tem uma seleção inválida.", "invalidSelections": "'Esse campo tem as seguintes seleções inválidas:'", - "lessThanMin": "\"{{value}}\" é menor do que o valor mínimo permitido de {{min}}.", + "lessThanMin": "{{value}} é menor que o mínimo permitido de {{label}} que é {{min}}.", "longerThanMin": "Esse valor deve ser maior do que o mínimo de {{minLength}} characters.", "notValidDate": "\"{{value}}\" não é uma data válida.", "required": "Esse campo é obrigatório.", diff --git a/src/translations/ro.json b/src/translations/ro.json index 075a4974f6..5aa1eb00b7 100644 --- a/src/translations/ro.json +++ b/src/translations/ro.json @@ -241,6 +241,7 @@ "uploading": "Încărcare", "user": "Utilizator", "users": "Utilizatori", + "value": "Valoare", "welcome": "Bine ați venit" }, "operators": { @@ -274,11 +275,11 @@ "emailAddress": "Vă rugăm să introduceți o adresă de email validă.", "enterNumber": "Vă rugăm să introduceți un număr valid.", "fieldHasNo": "Acest câmp nu are un {{label}}", - "greaterThanMax": "\"{{value}}\" este mai mare decât valoarea maximă permisă de {{max}}.", + "greaterThanMax": "{{value}} este mai mare decât valoarea maximă permisă pentru {{label}} de {{max}}.", "invalidInput": "Acest câmp are o intrare invalidă.", "invalidSelection": "Acest câmp are o selecție invalidă.", "invalidSelections": "Acest câmp are următoarele selecții invalide:", - "lessThanMin": "\"{{value}}\" este mai mică decât valoarea minimă permisă de {{min}}.", + "lessThanMin": "{{value}} este mai mic decât valoarea minimă permisă pentru {{label}} de {{min}}.", "longerThanMin": "Această valoare trebuie să fie mai mare decât lungimea minimă de {{minLength}} caractere.", "notValidDate": "\"{{value}}\" nu este o dată valabilă.", "required": "Acest câmp este obligatoriu.", diff --git a/src/translations/ru.json b/src/translations/ru.json index b941893cc9..b12e5f492f 100644 --- a/src/translations/ru.json +++ b/src/translations/ru.json @@ -241,6 +241,7 @@ "uploading": "Загрузка", "user": "пользователь", "users": "пользователи", + "value": "Значение", "welcome": "Добро пожаловать" }, "operators": { @@ -274,11 +275,11 @@ "emailAddress": "Пожалуйста, введите корректный адрес email.", "enterNumber": "Пожалуйста, введите корректный номер.", "fieldHasNo": "У этого поля нет {{label}}", - "greaterThanMax": "\"{{value}}\" больше максимально допустимого значения {{max}}.", + "greaterThanMax": "{{value}} больше максимально допустимого значения {{label}} {{max}}.", "invalidInput": "Это поле имеет недопустимое значение.", "invalidSelection": "В этом поле выбран недопустимый вариант.", "invalidSelections": "'Это поле содержит следующие неправильные варианты:'", - "lessThanMin": "\"{{value}}\" меньше минимально допустимого значения {{min}}.", + "lessThanMin": "{{value}} меньше минимально допустимого значения {{label}} {{min}}.", "longerThanMin": "Это значение должно быть больше минимальной длины символов: {{minLength}}.", "notValidDate": "\"{{value}}\" это не действительная дата.", "required": "Это обязательное поле.", diff --git a/src/translations/sv.json b/src/translations/sv.json index 1f2122a632..f43674212a 100644 --- a/src/translations/sv.json +++ b/src/translations/sv.json @@ -241,6 +241,7 @@ "uploading": "Uppladdning", "user": "Användare", "users": "Användare", + "value": "Värde", "welcome": "Välkommen" }, "operators": { @@ -274,11 +275,11 @@ "emailAddress": "Vänligen ange en giltig e-postadress.", "enterNumber": "Vänligen skriv in ett giltigt nummer.", "fieldHasNo": "Detta fält har ingen {{label}}", - "greaterThanMax": "\"{{value}}\" är större än det högsta tillåtna värdet på {{max}}.", + "greaterThanMax": "{{value}} är större än den maximalt tillåtna {{label}} av {{max}}.", "invalidInput": "Det här fältet har en ogiltig inmatning.", "invalidSelection": "Det här fältet har ett ogiltigt urval.", "invalidSelections": "Det här fältet har följande ogiltiga val:", - "lessThanMin": "\"{{value}}\" är mindre än det lägsta tillåtna värdet på {{min}}.", + "lessThanMin": "{{value}} är mindre än den minst tillåtna {{label}} av {{min}}.", "longerThanMin": "Detta värde måste vara längre än minimilängden på {{minLength}} tecken.", "notValidDate": "\"{{value}}\" är inte ett giltigt datum.", "required": "Detta fält är obligatoriskt.", diff --git a/src/translations/th.json b/src/translations/th.json index d8c58ec501..83c2f02fb4 100644 --- a/src/translations/th.json +++ b/src/translations/th.json @@ -241,6 +241,7 @@ "uploading": "กำลังอัปโหลด", "user": "ผู้ใช้", "users": "ผู้ใช้", + "value": "ค่า", "welcome": "ยินดีต้อนรับ" }, "operators": { @@ -274,11 +275,11 @@ "emailAddress": "กรุณาระบุอีเมลที่ถูกต้อง", "enterNumber": "กรุณาระบุตัวเลขที่ถูกต้อง", "fieldHasNo": "ช่องนี้ไม่มี {{label}}", - "greaterThanMax": "\"{{value}}\" มีค่ามากกว่าค่าสูงสุดที่กำหนดคือ {{max}}", + "greaterThanMax": "{{value}} มากกว่าค่าสูงสุดที่อนุญาตของ {{label}} ซึ่งคือ {{max}}.", "invalidInput": "ข้อมูลไม่ถูกต้อง", "invalidSelection": "ค่าที่เลือกไม่ถูกต้อง", "invalidSelections": "ค่าที่เลือกไม่ถูกต้องดังนี้:", - "lessThanMin": "\"{{value}}\" มีค่าน้อยกว่าค่าต่ำสุดที่กำหนดคือ {{min}}", + "lessThanMin": "{{value}} น้อยกว่าค่าต่ำสุดที่อนุญาตของ {{label}} ซึ่งคือ {{min}}.", "longerThanMin": "ค่าต้องมีความยาวมากกว่า {{minLength}} ตัวอักษร", "notValidDate": "วันที่ \"{{value}}\" ไม่ถูกต้อง", "required": "จำเป็นต้องระบุค่า", diff --git a/src/translations/tr.json b/src/translations/tr.json index d972486ac5..7b23909d21 100644 --- a/src/translations/tr.json +++ b/src/translations/tr.json @@ -241,6 +241,7 @@ "uploading": "Yükleniyor", "user": "kullanıcı", "users": "kullanıcı", + "value": "Değer", "welcome": "Hoşgeldiniz" }, "operators": { @@ -274,11 +275,11 @@ "emailAddress": "Lütfen geçerli bir e-posta adresi girin.", "enterNumber": "Lütfen geçerli bir sayı girin.", "fieldHasNo": "Bu alanda {{label}} girili değil.", - "greaterThanMax": "\"{{value}}\", izin verilen maksimum değerden ({{max}}) fazla.", + "greaterThanMax": "{{value}} izin verilen maksimum {{label}} değerinden daha büyük.", "invalidInput": "Bu alanda geçersiz bir giriş mevcut.", "invalidSelection": "Bu alanda geçersiz bir seçim mevcut.", "invalidSelections": "'Bu alan şu geçersiz seçimlere sahip:'", - "lessThanMin": "\"{{value}}\", belirlenen minimum değerden ({{min}}) az.", + "lessThanMin": "{{value}} izin verilen minimum {{label}} değerinden daha küçük.", "longerThanMin": "Bu değer minimum {{minLength}} karakterden uzun olmalıdır.", "notValidDate": "\"{{value}}\" geçerli bir tarih değil.", "required": "Bu alan gereklidir.", diff --git a/src/translations/translation-schema.json b/src/translations/translation-schema.json index e7f9a64709..e79c1a0421 100644 --- a/src/translations/translation-schema.json +++ b/src/translations/translation-schema.json @@ -863,6 +863,9 @@ "users": { "type": "string" }, + "value": { + "type": "string" + }, "welcome": { "type": "string" } @@ -976,37 +979,37 @@ "equals": { "type": "string" }, - "isNotEqualTo":{ + "isNotEqualTo": { "type": "string" }, "isIn": { "type": "string" }, - "isNotIn":{ + "isNotIn": { "type": "string" }, "exists": { "type": "string" }, - "isGreaterThan":{ + "isGreaterThan": { "type": "string" }, "isLessThan": { "type": "string" }, - "isLessThanOrEqualTo":{ + "isLessThanOrEqualTo": { "type": "string" }, "isGreaterThanOrEqualTo": { "type": "string" }, - "near":{ + "near": { "type": "string" }, "isLike": { "type": "string" }, - "contains":{ + "contains": { "type": "string" } }, diff --git a/src/translations/ua.json b/src/translations/ua.json index 613f63e757..dbb8d48cdd 100644 --- a/src/translations/ua.json +++ b/src/translations/ua.json @@ -237,6 +237,7 @@ "uploading": "завантаження", "user": "Користувач", "users": "Користувачі", + "value": "Значення", "welcome": "Вітаю" }, "operators": { @@ -270,11 +271,11 @@ "emailAddress": "Будь ласка, введіть валідну email адресу.", "enterNumber": "Будь ласка, введіть валідний номер.", "fieldHasNo": "В цього поля немає {{label}}", - "greaterThanMax": "\"{{value}}\" більше максимального значення {{max}}.", + "greaterThanMax": "{{value}} більше, ніж дозволено максимуму {{label}} в {{max}}.", "invalidInput": "У цьому полі введено некоректне значення.", "invalidSelection": "Це поле має некоректний вибір.", "invalidSelections": "Це поле має наступні невірні варіанти вибору:", - "lessThanMin": "\"{{value}}\" менше мінімально допустимого значення {{min}}.", + "lessThanMin": "{{value}} менше, ніж дозволено мінімуму {{label}} в {{min}}.", "longerThanMin": "Це значення має бути більше, ніж мінімальна довжина {{minLength}} characters.", "notValidDate": "\"{{value}}\" - некоректна дата.", "required": "Це поле є обов'язковим.", diff --git a/src/translations/vi.json b/src/translations/vi.json index 0526325a2a..d38462eabf 100644 --- a/src/translations/vi.json +++ b/src/translations/vi.json @@ -240,6 +240,7 @@ "uploading": "Đang tải lên", "user": "Người dùng", "users": "Người dùng", + "value": "Giá trị", "welcome": "Xin chào" }, "operators": { @@ -273,11 +274,11 @@ "emailAddress": "Địa chỉ email không hợp lệ.", "enterNumber": "Vui lòng nhập số.", "fieldHasNo": "Field này không có: {{label}}", - "greaterThanMax": "\"{{value}}\" đã vượt quá giá trị tối đa: {{max}}.", + "greaterThanMax": "{{value}} lớn hơn giá trị tối đa cho phép của {{label}} là {{max}}.", "invalidInput": "Dữ liệu nhập vào không hợp lệ.", "invalidSelection": "Lựa chọn ở field này không hợp lệ.", "invalidSelections": "'Field này có những lựa chọn không hợp lệ sau:'", - "lessThanMin": "\"{{value}}\" đang thấp hơn giá trị tối thiểu: {{min}}.", + "lessThanMin": "{{value}} nhỏ hơn giá trị tối thiểu cho phép của {{label}} là {{min}}.", "longerThanMin": "Giá trị này cần có độ dài tối thiểu {{minLength}} ký tự.", "notValidDate": "\"{{value}}\" không phải là một ngày (date) hợp lệ.", "required": "Field này cần được diền.", diff --git a/src/translations/zh.json b/src/translations/zh.json index c5fe340c64..04e1e6cc18 100644 --- a/src/translations/zh.json +++ b/src/translations/zh.json @@ -239,6 +239,7 @@ "updatedSuccessfully": "更新成功。", "user": "用户", "users": "用户", + "value": "值", "welcome": "欢迎" }, "operators": { @@ -272,11 +273,11 @@ "emailAddress": "请输入一个有效的电子邮件地址。", "enterNumber": "请输入一个有效的号码。", "fieldHasNo": "这个字段没有{{label}}", - "greaterThanMax": "\"{{value}}\"大于{{max}}的最大允许值", + "greaterThanMax": "{{value}}超过了允许的最大{{label}},该最大值为{{max}}。", "invalidInput": "这个字段有一个无效的输入。", "invalidSelection": "这个字段有一个无效的选择。", "invalidSelections": "这个字段有以下无效的选择:", - "lessThanMin": "{{value}}小于{{min}}的最小允许值", + "lessThanMin": "{{value}}小于允许的最小{{label}},该最小值为{{min}}。", "longerThanMin": "该值必须大于{{minLength}}字符的最小长度", "notValidDate": "\"{{value}}\"不是一个有效的日期。", "required": "该字段为必填项目。", diff --git a/src/uploads/unlinkTempFiles.ts b/src/uploads/unlinkTempFiles.ts index 8a1444cdc0..d16ae73e8b 100644 --- a/src/uploads/unlinkTempFiles.ts +++ b/src/uploads/unlinkTempFiles.ts @@ -25,7 +25,7 @@ export const unlinkTempFiles: (args: Args) => Promise = async ({ const fileArray = Array.isArray(files) ? files : [files]; await mapAsync(fileArray, async ({ file }) => { // Still need this check because this will not be populated if using local API - if (file.tempFilePath) { + if (file?.tempFilePath) { await unlinkFile(file.tempFilePath); } }); diff --git a/src/utilities/entityToJSONSchema.spec.ts b/src/utilities/configToJSONSchema.spec.ts similarity index 85% rename from src/utilities/entityToJSONSchema.spec.ts rename to src/utilities/configToJSONSchema.spec.ts index 3ef3e4f5c7..6362a3694d 100644 --- a/src/utilities/entityToJSONSchema.spec.ts +++ b/src/utilities/configToJSONSchema.spec.ts @@ -1,8 +1,8 @@ import sanitizeConfig from '../config/sanitize'; import { Config } from '../config/types'; -import { entityToJSONSchema } from './entityToJSONSchema'; +import { configToJSONSchema } from './configToJSONSchema'; -describe('entityToJSONSchema', () => { +describe('configToJSONSchema', () => { it('should handle optional arrays with required fields', () => { const config: Config = { collections: [ @@ -27,9 +27,8 @@ describe('entityToJSONSchema', () => { }; const sanitizedConfig = sanitizeConfig(config); - const schema = entityToJSONSchema(sanitizedConfig, sanitizedConfig.collections[0]); - - expect(schema).toStrictEqual({ + const schema = configToJSONSchema(sanitizedConfig); + expect(schema?.definitions?.test).toStrictEqual({ title: 'Test', type: 'object', additionalProperties: false, diff --git a/src/utilities/entityToJSONSchema.ts b/src/utilities/configToJSONSchema.ts similarity index 71% rename from src/utilities/entityToJSONSchema.ts rename to src/utilities/configToJSONSchema.ts index 6e0cf73fe8..4ef85feb01 100644 --- a/src/utilities/entityToJSONSchema.ts +++ b/src/utilities/configToJSONSchema.ts @@ -22,17 +22,6 @@ const propertyIsRequired = (field: Field) => { return false; }; -function getCollectionIDType(collections: SanitizedCollectionConfig[], slug: string): 'string' | 'number' { - const matchedCollection = collections.find((collection) => collection.slug === slug); - const customIdField = matchedCollection.fields.find((field) => 'name' in field && field.name === 'id'); - - if (customIdField && customIdField.type === 'number') { - return 'number'; - } - - return 'string'; -} - function returnOptionEnums(options: Option[]): string[] { return options.map((option) => { if (typeof option === 'object' && 'value' in option) { @@ -43,7 +32,27 @@ function returnOptionEnums(options: Option[]): string[] { }); } -function entityFieldsToJSONSchema(config: SanitizedConfig, fields: Field[], fieldDefinitionsMap: Map): { +/** + * This is used for generating the TypeScript types (payload-types.ts) with the payload generate:types command. + */ +function generateEntitySchemas(entities: (SanitizedCollectionConfig | SanitizedGlobalConfig)[]): JSONSchema4 { + const properties = [...entities].reduce((acc, { slug }) => { + acc[slug] = { + $ref: `#/definitions/${slug}`, + }; + + return acc; + }, {}); + + return { + type: 'object', + properties, + required: Object.keys(properties), + additionalProperties: false, + }; +} + +function fieldsToJSONSchema(collectionIDFieldTypes: { [key: string]: 'string' | 'number' }, fields: Field[], interfaceNameDefinitions: Map): { properties: { [k: string]: JSONSchema4; } @@ -53,7 +62,7 @@ function entityFieldsToJSONSchema(config: SanitizedConfig, fields: Field[], fiel const requiredFields = new Set(fields.filter(propertyIsRequired).map((field) => (fieldAffectsData(field) ? field.name : ''))); return { - properties: Object.fromEntries(fields.reduce((acc, field) => { + properties: Object.fromEntries(fields.reduce((fieldSchemas, field) => { let fieldSchema: JSONSchema4; switch (field.type) { case 'text': @@ -66,7 +75,11 @@ function entityFieldsToJSONSchema(config: SanitizedConfig, fields: Field[], fiel } case 'number': { - fieldSchema = { type: 'number' }; + if (field.hasMany === true) { + fieldSchema = { type: 'array', items: { type: 'number' } }; + } else { + fieldSchema = { type: 'number' }; + } break; } @@ -154,14 +167,12 @@ function entityFieldsToJSONSchema(config: SanitizedConfig, fields: Field[], fiel type: 'array', items: { oneOf: field.relationTo.map((relation) => { - const idFieldType = getCollectionIDType(config.collections, relation); - return { type: 'object', additionalProperties: false, properties: { value: { - type: idFieldType, + type: collectionIDFieldTypes[relation], }, relationTo: { const: relation, @@ -197,8 +208,6 @@ function entityFieldsToJSONSchema(config: SanitizedConfig, fields: Field[], fiel } else { fieldSchema = { oneOf: field.relationTo.map((relation) => { - const idFieldType = getCollectionIDType(config.collections, relation); - return { type: 'object', additionalProperties: false, @@ -206,7 +215,7 @@ function entityFieldsToJSONSchema(config: SanitizedConfig, fields: Field[], fiel value: { oneOf: [ { - type: idFieldType, + type: collectionIDFieldTypes[relation], }, { $ref: `#/definitions/${relation}`, @@ -222,50 +231,44 @@ function entityFieldsToJSONSchema(config: SanitizedConfig, fields: Field[], fiel }), }; } - } else { - const idFieldType = getCollectionIDType(config.collections, field.relationTo); - - if (field.hasMany) { - fieldSchema = { - oneOf: [ - { - type: 'array', - items: { - type: idFieldType, - }, + } else if (field.hasMany) { + fieldSchema = { + oneOf: [ + { + type: 'array', + items: { + type: collectionIDFieldTypes[field.relationTo], }, - { - type: 'array', - items: { - $ref: `#/definitions/${field.relationTo}`, - }, - }, - ], - }; - } else { - fieldSchema = { - oneOf: [ - { - type: idFieldType, - }, - { + }, + { + type: 'array', + items: { $ref: `#/definitions/${field.relationTo}`, }, - ], - }; - } + }, + ], + }; + } else { + fieldSchema = { + oneOf: [ + { + type: collectionIDFieldTypes[field.relationTo], + }, + { + $ref: `#/definitions/${field.relationTo}`, + }, + ], + }; } break; } case 'upload': { - const idFieldType = getCollectionIDType(config.collections, field.relationTo); - fieldSchema = { oneOf: [ { - type: idFieldType, + type: collectionIDFieldTypes[field.relationTo], }, { $ref: `#/definitions/${field.relationTo}`, @@ -280,7 +283,7 @@ function entityFieldsToJSONSchema(config: SanitizedConfig, fields: Field[], fiel type: 'array', items: { oneOf: field.blocks.map((block) => { - const blockFieldSchemas = entityFieldsToJSONSchema(config, block.fields, fieldDefinitionsMap); + const blockFieldSchemas = fieldsToJSONSchema(collectionIDFieldTypes, block.fields, interfaceNameDefinitions); const blockSchema: JSONSchema4 = { type: 'object', @@ -298,7 +301,7 @@ function entityFieldsToJSONSchema(config: SanitizedConfig, fields: Field[], fiel }; if (block.interfaceName) { - fieldDefinitionsMap.set(block.interfaceName, blockSchema); + interfaceNameDefinitions.set(block.interfaceName, blockSchema); return { $ref: `#/definitions/${block.interfaceName}`, @@ -318,12 +321,12 @@ function entityFieldsToJSONSchema(config: SanitizedConfig, fields: Field[], fiel items: { type: 'object', additionalProperties: false, - ...entityFieldsToJSONSchema(config, field.fields, fieldDefinitionsMap), + ...fieldsToJSONSchema(collectionIDFieldTypes, field.fields, interfaceNameDefinitions), }, }; if (field.interfaceName) { - fieldDefinitionsMap.set(field.interfaceName, fieldSchema); + interfaceNameDefinitions.set(field.interfaceName, fieldSchema); fieldSchema = { $ref: `#/definitions/${field.interfaceName}`, @@ -334,9 +337,9 @@ function entityFieldsToJSONSchema(config: SanitizedConfig, fields: Field[], fiel case 'row': case 'collapsible': { - const childSchema = entityFieldsToJSONSchema(config, field.fields, fieldDefinitionsMap); + const childSchema = fieldsToJSONSchema(collectionIDFieldTypes, field.fields, interfaceNameDefinitions); Object.entries(childSchema.properties).forEach(([propName, propSchema]) => { - acc.set(propName, propSchema); + fieldSchemas.set(propName, propSchema); }); childSchema.required.forEach((propName) => { requiredFields.add(propName); @@ -346,10 +349,10 @@ function entityFieldsToJSONSchema(config: SanitizedConfig, fields: Field[], fiel case 'tabs': { field.tabs.forEach((tab) => { - const childSchema = entityFieldsToJSONSchema(config, tab.fields, fieldDefinitionsMap); + const childSchema = fieldsToJSONSchema(collectionIDFieldTypes, tab.fields, interfaceNameDefinitions); if (tabHasName(tab)) { // could have interface - acc.set(tab.name, { + fieldSchemas.set(tab.name, { type: 'object', additionalProperties: false, ...childSchema, @@ -357,7 +360,7 @@ function entityFieldsToJSONSchema(config: SanitizedConfig, fields: Field[], fiel requiredFields.add(tab.name); } else { Object.entries(childSchema.properties).forEach(([propName, propSchema]) => { - acc.set(propName, propSchema); + fieldSchemas.set(propName, propSchema); }); childSchema.required.forEach((propName) => { requiredFields.add(propName); @@ -371,11 +374,11 @@ function entityFieldsToJSONSchema(config: SanitizedConfig, fields: Field[], fiel fieldSchema = { type: 'object', additionalProperties: false, - ...entityFieldsToJSONSchema(config, field.fields, fieldDefinitionsMap), + ...fieldsToJSONSchema(collectionIDFieldTypes, field.fields, interfaceNameDefinitions), }; if (field.interfaceName) { - fieldDefinitionsMap.set(field.interfaceName, fieldSchema); + interfaceNameDefinitions.set(field.interfaceName, fieldSchema); fieldSchema = { $ref: `#/definitions/${field.interfaceName}`, @@ -390,16 +393,17 @@ function entityFieldsToJSONSchema(config: SanitizedConfig, fields: Field[], fiel } if (fieldSchema && fieldAffectsData(field)) { - acc.set(field.name, fieldSchema); + fieldSchemas.set(field.name, fieldSchema); } - return acc; + return fieldSchemas; }, new Map())), required: Array.from(requiredFields), }; } -export function entityToJSONSchema(config: SanitizedConfig, incomingEntity: SanitizedCollectionConfig | SanitizedGlobalConfig, fieldDefinitionsMap: Map): JSONSchema4 { +// This function is part of the public API and is exported through payload/utilities +export function entityToJSONSchema(config: SanitizedConfig, incomingEntity: SanitizedCollectionConfig | SanitizedGlobalConfig, interfaceNameDefinitions: Map): JSONSchema4 { const entity: SanitizedCollectionConfig | SanitizedGlobalConfig = deepCopyObject(incomingEntity); const title = entity.typescript?.interface ? entity.typescript.interface : singular(toWords(entity.slug, true)); @@ -432,27 +436,42 @@ export function entityToJSONSchema(config: SanitizedConfig, incomingEntity: Sani }); } - return { - title, - type: 'object', - additionalProperties: false, - ...entityFieldsToJSONSchema(config, entity.fields, fieldDefinitionsMap), - }; -} + // used for relationship fields, to determine whether to use a string or number type for the ID + const collectionIDFieldTypes: { [key: string]: 'string' | 'number' } = config.collections.reduce((acc, collection) => { + const customCollectionIdField = collection.fields.find((field) => 'name' in field && field.name === 'id'); -export function generateEntitySchemas(entities: (SanitizedCollectionConfig | SanitizedGlobalConfig)[]): JSONSchema4 { - const properties = [...entities].reduce((acc, { slug }) => { - acc[slug] = { - $ref: `#/definitions/${slug}`, - }; + acc[collection.slug] = customCollectionIdField?.type === 'number' + ? 'number' + : 'string'; return acc; }, {}); return { + title, type: 'object', - properties, - required: Object.keys(properties), additionalProperties: false, + ...fieldsToJSONSchema(collectionIDFieldTypes, entity.fields, interfaceNameDefinitions), + }; +} + +export function configToJSONSchema(config: SanitizedConfig): JSONSchema4 { + // a mutable Map to store custom top-level `interfaceName` types + const interfaceNameDefinitions: Map = new Map(); + const entityDefinitions: { [k: string]: JSONSchema4 } = [...config.globals, ...config.collections].reduce((acc, entity) => { + acc[entity.slug] = entityToJSONSchema(config, entity, interfaceNameDefinitions); + return acc; + }, {}); + + return { + title: 'Config', + type: 'object', + additionalProperties: false, + properties: { + collections: generateEntitySchemas(config.collections), + globals: generateEntitySchemas(config.globals), + }, + required: ['collections', 'globals'], + definitions: { ...entityDefinitions, ...Object.fromEntries(interfaceNameDefinitions) }, }; } diff --git a/src/utilities/isNumber.ts b/src/utilities/isNumber.ts index 1604de7ff2..051e9251c6 100644 --- a/src/utilities/isNumber.ts +++ b/src/utilities/isNumber.ts @@ -1,3 +1,7 @@ export function isNumber(value: unknown): boolean { + if (typeof value === 'string' && value.trim() === ''){ + return false + } + return !Number.isNaN(Number(value)); -} +} \ No newline at end of file diff --git a/src/versions/drafts/replaceWithDraftIfAvailable.ts b/src/versions/drafts/replaceWithDraftIfAvailable.ts index 4df11c0c23..d57afa5a8b 100644 --- a/src/versions/drafts/replaceWithDraftIfAvailable.ts +++ b/src/versions/drafts/replaceWithDraftIfAvailable.ts @@ -62,10 +62,7 @@ const replaceWithDraftIfAvailable = async ({ where: combineQueries(queryToBuild, versionAccessResult), collection: entity.slug, limit: 1, - sort: [{ - property: 'updatedAt', - direction: 'desc', - }], + sort: '-updatedAt', }; const { docs: versionDocs } = await req.payload.db.findVersions(findVersionsArgs); diff --git a/src/versions/enforceMaxVersions.ts b/src/versions/enforceMaxVersions.ts index 2dd673b928..4110c1eb82 100644 --- a/src/versions/enforceMaxVersions.ts +++ b/src/versions/enforceMaxVersions.ts @@ -34,10 +34,7 @@ export const enforceMaxVersions = async ({ where, collection: collection.slug, skip: max, - sort: [{ - property: 'updatedAt', - direction: 'desc', - }], + sort: '-updatedAt', pagination: false, }); @@ -47,10 +44,7 @@ export const enforceMaxVersions = async ({ where, global: global.slug, skip: max, - sort: [{ - property: 'updatedAt', - direction: 'desc', - }], + sort: '-updatedAt', }); [oldestAllowedDoc] = query.docs; diff --git a/src/versions/getLatestCollectionVersion.ts b/src/versions/getLatestCollectionVersion.ts index e9903e042f..6fcf17ce7b 100644 --- a/src/versions/getLatestCollectionVersion.ts +++ b/src/versions/getLatestCollectionVersion.ts @@ -23,10 +23,7 @@ export const getLatestCollectionVersion = async ({ const { docs } = await payload.db.findVersions({ collection: config.slug, where: { parent: { equals: id } }, - sort: [{ - property: 'updatedAt', - direction: 'desc', - }], + sort: '-updatedAt', }); [latestVersion] = docs; } diff --git a/src/versions/getLatestGlobalVersion.ts b/src/versions/getLatestGlobalVersion.ts index 06060b94cf..642a76409e 100644 --- a/src/versions/getLatestGlobalVersion.ts +++ b/src/versions/getLatestGlobalVersion.ts @@ -24,7 +24,7 @@ export const getLatestGlobalVersion = async ({ latestVersion = (await payload.db.findGlobalVersions({ global: slug, limit: 1, - sort: [{ property: 'updatedAt', direction: 'desc' }], + sort: '-updatedAt', locale, })).docs[0]; } diff --git a/src/versions/saveVersion.ts b/src/versions/saveVersion.ts index caf2cacfbf..cb7d0b0cd1 100644 --- a/src/versions/saveVersion.ts +++ b/src/versions/saveVersion.ts @@ -52,10 +52,7 @@ export const saveVersion = async ({ equals: id, }, }, - sort: [{ - property: 'updatedAt', - direction: 'desc', - }], + sort: '-updatedAt', }); const [latestVersion] = docs; diff --git a/src/webpack/getBaseConfig.ts b/src/webpack/getBaseConfig.ts index 987d9bab7d..49f25e53f8 100644 --- a/src/webpack/getBaseConfig.ts +++ b/src/webpack/getBaseConfig.ts @@ -19,7 +19,7 @@ export default (config: SanitizedConfig): Configuration => ({ rules: [ { test: /\.(t|j)sx?$/, - exclude: /node_modules/, + exclude: /\/node_modules\/(?!.+\.tsx?$).*$/, use: [ { loader: require.resolve('swc-loader'), diff --git a/templates/blank/.env.example b/templates/blank/.env.example new file mode 100644 index 0000000000..0ce32f8b16 --- /dev/null +++ b/templates/blank/.env.example @@ -0,0 +1,2 @@ +MONGODB_URI=mongodb://127.0.0.1/payload-template-blank +PAYLOAD_SECRET=YOUR_SECRET_HERE diff --git a/templates/blank/.gitignore b/templates/blank/.gitignore new file mode 100644 index 0000000000..9353310c2c --- /dev/null +++ b/templates/blank/.gitignore @@ -0,0 +1,6 @@ +build +dist +/media +node_modules +.DS_Store +.env diff --git a/templates/blank/Dockerfile b/templates/blank/Dockerfile new file mode 100644 index 0000000000..2544c839bb --- /dev/null +++ b/templates/blank/Dockerfile @@ -0,0 +1,26 @@ +FROM node:18.8-alpine as base + +FROM base as builder + +WORKDIR /home/node/app +COPY package*.json ./ + +COPY . . +RUN yarn install +RUN yarn build + +FROM base as runtime + +ENV NODE_ENV=production +ENV PAYLOAD_CONFIG_PATH=dist/payload.config.js + +WORKDIR /home/node/app +COPY package*.json ./ + +RUN yarn install --production +COPY --from=builder /home/node/app/dist ./dist +COPY --from=builder /home/node/app/build ./build + +EXPOSE 3000 + +CMD ["node", "dist/server.js"] diff --git a/templates/blank/README.md b/templates/blank/README.md new file mode 100644 index 0000000000..b1ef01c96d --- /dev/null +++ b/templates/blank/README.md @@ -0,0 +1,42 @@ +# Payload Blank Template + +A blank template for [Payload](https://github.com/payloadcms/payload) to help you get up and running quickly. This repo may have been created by running `npx create-payload-app` and selecting the "blank" template or by cloning this template on [Payload Cloud](https://payloadcms.com/new/clone/blank). + +See the official [Examples Directory](https://github.com/payloadcms/payload/tree/master/examples) for details on how to use Payload in a variety of different ways. + +## Development + +To spin up the project locally, follow these steps: + +1. First clone the repo +1. Then `cd YOUR_PROJECT_REPO && cp .env.example .env` +1. Next `yarn && yarn dev` (or `docker-compose up`, see [Docker](#docker)) +1. Now `open http://localhost:8000/admin` to access the admin panel +1. Create your first admin user using the form on the page + +That's it! Changes made in `./src` will be reflected in your app. + +### Docker + +Alternatively, you can use [Docker](https://www.docker.com) to spin up this project locally. To do so, follow these steps: + +1. Follow [steps 1 and 2 from above](#development), the docker-compose file will automatically use the `.env` file in your project root +1. Next run `docker-compose up` +1. Follow [steps 4 and 5 from above](#development) to login and create your first admin user + +That's it! The Docker instance will help you get up and running quickly while also standardizing the development environment across your teams. + +## Production + +To run Payload in production, you need to build and serve the Admin panel. To do so, follow these steps: + +1. First invoke the `payload build` script by running `yarn build` or `npm run build` in your project root. This creates a `./build` directory with a production-ready admin bundle. +1. Then run `yarn serve` or `npm run serve` to run Node in production and serve Payload from the `./build` directory. + +### Deployment + +The easiest way to deploy your project is to use [Payload Cloud](https://payloadcms.com/new/import), a one-click hosting solution to deploy production-ready instances of your Payload apps directly from your GitHub repo. You can also deploy your app manually, check out the [deployment documentation](https://payloadcms.com/docs/production/deployment) for full details. + +## Questions + +If you have any issues or questions, reach out to us on [Discord](https://discord.com/invite/payload) or start a [GitHub discussion](https://github.com/payloadcms/payload/discussions). diff --git a/templates/blank/docker-compose.yml b/templates/blank/docker-compose.yml new file mode 100644 index 0000000000..4846251925 --- /dev/null +++ b/templates/blank/docker-compose.yml @@ -0,0 +1,32 @@ +version: '3' + +services: + + payload: + image: node:18-alpine + ports: + - "3000:3000" + volumes: + - .:/home/node/app + - node_modules:/home/node/app/node_modules + working_dir: /home/node/app/ + command: sh -c "yarn install && yarn dev" + depends_on: + - mongo + env_file: + - .env + + mongo: + image: mongo:latest + ports: + - "27017:27017" + command: + - --storageEngine=wiredTiger + volumes: + - data:/data/db + logging: + driver: none + +volumes: + data: + node_modules: diff --git a/templates/blank/nodemon.json b/templates/blank/nodemon.json new file mode 100644 index 0000000000..ed1a1850d3 --- /dev/null +++ b/templates/blank/nodemon.json @@ -0,0 +1,4 @@ +{ + "ext": "ts", + "exec": "ts-node src/server.ts" +} diff --git a/templates/blank/package.json b/templates/blank/package.json new file mode 100644 index 0000000000..25a53962b2 --- /dev/null +++ b/templates/blank/package.json @@ -0,0 +1,31 @@ +{ + "name": "template-blank", + "description": "A blank template to get started with Payload", + "version": "1.0.0", + "main": "dist/server.js", + "license": "MIT", + "scripts": { + "dev": "cross-env PAYLOAD_CONFIG_PATH=src/payload.config.ts nodemon", + "build:payload": "cross-env PAYLOAD_CONFIG_PATH=src/payload.config.ts payload build", + "build:server": "tsc", + "build": "yarn copyfiles && yarn build:payload && yarn build:server", + "serve": "cross-env PAYLOAD_CONFIG_PATH=dist/payload.config.js NODE_ENV=production node dist/server.js", + "copyfiles": "copyfiles -u 1 \"src/**/*.{html,css,scss,ttf,woff,woff2,eot,svg,jpg,png}\" dist/", + "generate:types": "cross-env PAYLOAD_CONFIG_PATH=src/payload.config.ts payload generate:types", + "generate:graphQLSchema": "cross-env PAYLOAD_CONFIG_PATH=src/payload.config.ts payload generate:graphQLSchema" + }, + "dependencies": { + "@payloadcms/plugin-cloud": "^0.0.10", + "dotenv": "^8.2.0", + "express": "^4.17.1", + "payload": "^1.7.2" + }, + "devDependencies": { + "@types/express": "^4.17.9", + "copyfiles": "^2.4.1", + "cross-env": "^7.0.3", + "nodemon": "^2.0.6", + "ts-node": "^9.1.1", + "typescript": "^4.8.4" + } +} diff --git a/templates/blank/src/collections/Users.ts b/templates/blank/src/collections/Users.ts new file mode 100644 index 0000000000..e5d661c9ae --- /dev/null +++ b/templates/blank/src/collections/Users.ts @@ -0,0 +1,18 @@ +import { CollectionConfig } from 'payload/types'; + +const Users: CollectionConfig = { + slug: 'users', + auth: true, + admin: { + useAsTitle: 'email', + }, + access: { + read: () => true, + }, + fields: [ + // Email added by default + // Add more fields as needed + ], +}; + +export default Users; \ No newline at end of file diff --git a/templates/blank/src/payload.config.ts b/templates/blank/src/payload.config.ts new file mode 100644 index 0000000000..e44f1e70b1 --- /dev/null +++ b/templates/blank/src/payload.config.ts @@ -0,0 +1,22 @@ +import { buildConfig } from 'payload/config'; +import path from 'path'; +import Users from './collections/Users'; +import { payloadCloud } from '@payloadcms/plugin-cloud'; + +export default buildConfig({ + admin: { + user: Users.slug, + }, + collections: [ + Users, + ], + typescript: { + outputFile: path.resolve(__dirname, 'payload-types.ts'), + }, + graphQL: { + schemaOutputFile: path.resolve(__dirname, 'generated-schema.graphql'), + }, + plugins: [ + payloadCloud() + ] +}); diff --git a/templates/blank/src/server.ts b/templates/blank/src/server.ts new file mode 100644 index 0000000000..e6d29f1881 --- /dev/null +++ b/templates/blank/src/server.ts @@ -0,0 +1,28 @@ +import express from 'express'; +import payload from 'payload'; + +require('dotenv').config(); +const app = express(); + +// Redirect root to Admin panel +app.get('/', (_, res) => { + res.redirect('/admin'); +}); + +const start = async () => { + // Initialize Payload + await payload.init({ + secret: process.env.PAYLOAD_SECRET, + mongoURL: process.env.MONGODB_URI, + express: app, + onInit: async () => { + payload.logger.info(`Payload Admin URL: ${payload.getAdminURL()}`) + }, + }) + + // Add your own express routes here + + app.listen(3000); +} + +start(); diff --git a/templates/blank/tsconfig.json b/templates/blank/tsconfig.json new file mode 100644 index 0000000000..7bf8e87d0c --- /dev/null +++ b/templates/blank/tsconfig.json @@ -0,0 +1,34 @@ +{ + "compilerOptions": { + "target": "es5", + "lib": [ + "dom", + "dom.iterable", + "esnext" + ], + "allowJs": true, + "strict": false, + "esModuleInterop": true, + "skipLibCheck": true, + "outDir": "./dist", + "rootDir": "./src", + "jsx": "react", + "paths": { + "payload/generated-types": [ + "./src/payload-types.ts", + ], + } + }, + "include": [ + "src" + ], + "exclude": [ + "node_modules", + "dist", + "build", + ], + "ts-node": { + "transpileOnly": true, + "swc": true, + } +} diff --git a/templates/blank/yarn.lock b/templates/blank/yarn.lock new file mode 100644 index 0000000000..0786fff3af --- /dev/null +++ b/templates/blank/yarn.lock @@ -0,0 +1,7491 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@aws-crypto/crc32@3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@aws-crypto/crc32/-/crc32-3.0.0.tgz#07300eca214409c33e3ff769cd5697b57fdd38fa" + integrity sha512-IzSgsrxUcsrejQbPVilIKy16kAT52EwB6zSaI+M3xxIhKh5+aldEyvI+z6erM7TCLB2BJsFrtHjp6/4/sr+3dA== + dependencies: + "@aws-crypto/util" "^3.0.0" + "@aws-sdk/types" "^3.222.0" + tslib "^1.11.1" + +"@aws-crypto/crc32c@3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@aws-crypto/crc32c/-/crc32c-3.0.0.tgz#016c92da559ef638a84a245eecb75c3e97cb664f" + integrity sha512-ENNPPManmnVJ4BTXlOjAgD7URidbAznURqD0KvfREyc4o20DPYdEldU1f5cQ7Jbj0CJJSPaMIk/9ZshdB3210w== + dependencies: + "@aws-crypto/util" "^3.0.0" + "@aws-sdk/types" "^3.222.0" + tslib "^1.11.1" + +"@aws-crypto/ie11-detection@^3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@aws-crypto/ie11-detection/-/ie11-detection-3.0.0.tgz#640ae66b4ec3395cee6a8e94ebcd9f80c24cd688" + integrity sha512-341lBBkiY1DfDNKai/wXM3aujNBkXR7tq1URPQDL9wi3AUbI80NR74uF1TXHMm7po1AcnFk8iu2S2IeU/+/A+Q== + dependencies: + tslib "^1.11.1" + +"@aws-crypto/sha1-browser@3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@aws-crypto/sha1-browser/-/sha1-browser-3.0.0.tgz#f9083c00782b24714f528b1a1fef2174002266a3" + integrity sha512-NJth5c997GLHs6nOYTzFKTbYdMNA6/1XlKVgnZoaZcQ7z7UJlOgj2JdbHE8tiYLS3fzXNCguct77SPGat2raSw== + dependencies: + "@aws-crypto/ie11-detection" "^3.0.0" + "@aws-crypto/supports-web-crypto" "^3.0.0" + "@aws-crypto/util" "^3.0.0" + "@aws-sdk/types" "^3.222.0" + "@aws-sdk/util-locate-window" "^3.0.0" + "@aws-sdk/util-utf8-browser" "^3.0.0" + tslib "^1.11.1" + +"@aws-crypto/sha256-browser@3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@aws-crypto/sha256-browser/-/sha256-browser-3.0.0.tgz#05f160138ab893f1c6ba5be57cfd108f05827766" + integrity sha512-8VLmW2B+gjFbU5uMeqtQM6Nj0/F1bro80xQXCW6CQBWgosFWXTx77aeOF5CAIAmbOK64SdMBJdNr6J41yP5mvQ== + dependencies: + "@aws-crypto/ie11-detection" "^3.0.0" + "@aws-crypto/sha256-js" "^3.0.0" + "@aws-crypto/supports-web-crypto" "^3.0.0" + "@aws-crypto/util" "^3.0.0" + "@aws-sdk/types" "^3.222.0" + "@aws-sdk/util-locate-window" "^3.0.0" + "@aws-sdk/util-utf8-browser" "^3.0.0" + tslib "^1.11.1" + +"@aws-crypto/sha256-js@1.2.2": + version "1.2.2" + resolved "https://registry.yarnpkg.com/@aws-crypto/sha256-js/-/sha256-js-1.2.2.tgz#02acd1a1fda92896fc5a28ec7c6e164644ea32fc" + integrity sha512-Nr1QJIbW/afYYGzYvrF70LtaHrIRtd4TNAglX8BvlfxJLZ45SAmueIKYl5tWoNBPzp65ymXGFK0Bb1vZUpuc9g== + dependencies: + "@aws-crypto/util" "^1.2.2" + "@aws-sdk/types" "^3.1.0" + tslib "^1.11.1" + +"@aws-crypto/sha256-js@3.0.0", "@aws-crypto/sha256-js@^3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@aws-crypto/sha256-js/-/sha256-js-3.0.0.tgz#f06b84d550d25521e60d2a0e2a90139341e007c2" + integrity sha512-PnNN7os0+yd1XvXAy23CFOmTbMaDxgxXtTKHybrJ39Y8kGzBATgBFibWJKH6BhytLI/Zyszs87xCOBNyBig6vQ== + dependencies: + "@aws-crypto/util" "^3.0.0" + "@aws-sdk/types" "^3.222.0" + tslib "^1.11.1" + +"@aws-crypto/supports-web-crypto@^3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@aws-crypto/supports-web-crypto/-/supports-web-crypto-3.0.0.tgz#5d1bf825afa8072af2717c3e455f35cda0103ec2" + integrity sha512-06hBdMwUAb2WFTuGG73LSC0wfPu93xWwo5vL2et9eymgmu3Id5vFAHBbajVWiGhPO37qcsdCap/FqXvJGJWPIg== + dependencies: + tslib "^1.11.1" + +"@aws-crypto/util@^1.2.2": + version "1.2.2" + resolved "https://registry.yarnpkg.com/@aws-crypto/util/-/util-1.2.2.tgz#b28f7897730eb6538b21c18bd4de22d0ea09003c" + integrity sha512-H8PjG5WJ4wz0UXAFXeJjWCW1vkvIJ3qUUD+rGRwJ2/hj+xT58Qle2MTql/2MGzkU+1JLAFuR6aJpLAjHwhmwwg== + dependencies: + "@aws-sdk/types" "^3.1.0" + "@aws-sdk/util-utf8-browser" "^3.0.0" + tslib "^1.11.1" + +"@aws-crypto/util@^3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@aws-crypto/util/-/util-3.0.0.tgz#1c7ca90c29293f0883468ad48117937f0fe5bfb0" + integrity sha512-2OJlpeJpCR48CC8r+uKVChzs9Iungj9wkZrl8Z041DWEWvyIHILYKCPNzJghKsivj+S3mLo6BVc7mBNzdxA46w== + dependencies: + "@aws-sdk/types" "^3.222.0" + "@aws-sdk/util-utf8-browser" "^3.0.0" + tslib "^1.11.1" + +"@aws-sdk/abort-controller@3.357.0": + version "3.357.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/abort-controller/-/abort-controller-3.357.0.tgz#5c5336d18b97781d0b940700375d825f9e20d9be" + integrity sha512-nQYDJon87quPwt2JZJwUN2GFKJnvE5kWb6tZP4xb5biSGUKBqDQo06oYed7yokatCuCMouIXV462aN0fWODtOw== + dependencies: + "@aws-sdk/types" "3.357.0" + tslib "^2.5.0" + +"@aws-sdk/chunked-blob-reader@3.310.0": + version "3.310.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/chunked-blob-reader/-/chunked-blob-reader-3.310.0.tgz#2ada1b024a2745c2fe7e869606fab781325f981e" + integrity sha512-CrJS3exo4mWaLnWxfCH+w88Ou0IcAZSIkk4QbmxiHl/5Dq705OLoxf4385MVyExpqpeVJYOYQ2WaD8i/pQZ2fg== + dependencies: + tslib "^2.5.0" + +"@aws-sdk/client-cognito-identity@3.360.0", "@aws-sdk/client-cognito-identity@^3.289.0": + version "3.360.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/client-cognito-identity/-/client-cognito-identity-3.360.0.tgz#c7d904d3b03e03f0530edd4704326c9a7991014b" + integrity sha512-9ZORXlW52GTUqM0M0a+49yH4a1kxk5HKyvzXHKttQEiml1EKrteVsvU5zDvcY6v6y3QwDeT4nDuXbb7NVB7glQ== + dependencies: + "@aws-crypto/sha256-browser" "3.0.0" + "@aws-crypto/sha256-js" "3.0.0" + "@aws-sdk/client-sts" "3.360.0" + "@aws-sdk/config-resolver" "3.357.0" + "@aws-sdk/credential-provider-node" "3.360.0" + "@aws-sdk/fetch-http-handler" "3.357.0" + "@aws-sdk/hash-node" "3.357.0" + "@aws-sdk/invalid-dependency" "3.357.0" + "@aws-sdk/middleware-content-length" "3.357.0" + "@aws-sdk/middleware-endpoint" "3.357.0" + "@aws-sdk/middleware-host-header" "3.357.0" + "@aws-sdk/middleware-logger" "3.357.0" + "@aws-sdk/middleware-recursion-detection" "3.357.0" + "@aws-sdk/middleware-retry" "3.357.0" + "@aws-sdk/middleware-serde" "3.357.0" + "@aws-sdk/middleware-signing" "3.357.0" + "@aws-sdk/middleware-stack" "3.357.0" + "@aws-sdk/middleware-user-agent" "3.357.0" + "@aws-sdk/node-config-provider" "3.357.0" + "@aws-sdk/node-http-handler" "3.360.0" + "@aws-sdk/smithy-client" "3.360.0" + "@aws-sdk/types" "3.357.0" + "@aws-sdk/url-parser" "3.357.0" + "@aws-sdk/util-base64" "3.310.0" + "@aws-sdk/util-body-length-browser" "3.310.0" + "@aws-sdk/util-body-length-node" "3.310.0" + "@aws-sdk/util-defaults-mode-browser" "3.360.0" + "@aws-sdk/util-defaults-mode-node" "3.360.0" + "@aws-sdk/util-endpoints" "3.357.0" + "@aws-sdk/util-retry" "3.357.0" + "@aws-sdk/util-user-agent-browser" "3.357.0" + "@aws-sdk/util-user-agent-node" "3.357.0" + "@aws-sdk/util-utf8" "3.310.0" + "@smithy/protocol-http" "^1.0.1" + "@smithy/types" "^1.0.0" + tslib "^2.5.0" + +"@aws-sdk/client-s3@^3.142.0": + version "3.360.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/client-s3/-/client-s3-3.360.0.tgz#07bfcbcd6c46f221552941bf32742b8c7a669baa" + integrity sha512-6URI0ZWk5ar0atJ8xTxD2u/oLWwBlosLTyqNpsMe7DKvZQ5DgUfLw3BHeC2d4FQID1I74rkGCdHLtRe4MOiIfA== + dependencies: + "@aws-crypto/sha1-browser" "3.0.0" + "@aws-crypto/sha256-browser" "3.0.0" + "@aws-crypto/sha256-js" "3.0.0" + "@aws-sdk/client-sts" "3.360.0" + "@aws-sdk/config-resolver" "3.357.0" + "@aws-sdk/credential-provider-node" "3.360.0" + "@aws-sdk/eventstream-serde-browser" "3.357.0" + "@aws-sdk/eventstream-serde-config-resolver" "3.357.0" + "@aws-sdk/eventstream-serde-node" "3.357.0" + "@aws-sdk/fetch-http-handler" "3.357.0" + "@aws-sdk/hash-blob-browser" "3.357.0" + "@aws-sdk/hash-node" "3.357.0" + "@aws-sdk/hash-stream-node" "3.357.0" + "@aws-sdk/invalid-dependency" "3.357.0" + "@aws-sdk/md5-js" "3.357.0" + "@aws-sdk/middleware-bucket-endpoint" "3.357.0" + "@aws-sdk/middleware-content-length" "3.357.0" + "@aws-sdk/middleware-endpoint" "3.357.0" + "@aws-sdk/middleware-expect-continue" "3.357.0" + "@aws-sdk/middleware-flexible-checksums" "3.357.0" + "@aws-sdk/middleware-host-header" "3.357.0" + "@aws-sdk/middleware-location-constraint" "3.357.0" + "@aws-sdk/middleware-logger" "3.357.0" + "@aws-sdk/middleware-recursion-detection" "3.357.0" + "@aws-sdk/middleware-retry" "3.357.0" + "@aws-sdk/middleware-sdk-s3" "3.357.0" + "@aws-sdk/middleware-serde" "3.357.0" + "@aws-sdk/middleware-signing" "3.357.0" + "@aws-sdk/middleware-ssec" "3.357.0" + "@aws-sdk/middleware-stack" "3.357.0" + "@aws-sdk/middleware-user-agent" "3.357.0" + "@aws-sdk/node-config-provider" "3.357.0" + "@aws-sdk/node-http-handler" "3.360.0" + "@aws-sdk/signature-v4-multi-region" "3.357.0" + "@aws-sdk/smithy-client" "3.360.0" + "@aws-sdk/types" "3.357.0" + "@aws-sdk/url-parser" "3.357.0" + "@aws-sdk/util-base64" "3.310.0" + "@aws-sdk/util-body-length-browser" "3.310.0" + "@aws-sdk/util-body-length-node" "3.310.0" + "@aws-sdk/util-defaults-mode-browser" "3.360.0" + "@aws-sdk/util-defaults-mode-node" "3.360.0" + "@aws-sdk/util-endpoints" "3.357.0" + "@aws-sdk/util-retry" "3.357.0" + "@aws-sdk/util-stream" "3.360.0" + "@aws-sdk/util-user-agent-browser" "3.357.0" + "@aws-sdk/util-user-agent-node" "3.357.0" + "@aws-sdk/util-utf8" "3.310.0" + "@aws-sdk/util-waiter" "3.357.0" + "@aws-sdk/xml-builder" "3.310.0" + "@smithy/protocol-http" "^1.0.1" + "@smithy/types" "^1.0.0" + fast-xml-parser "4.2.5" + tslib "^2.5.0" + +"@aws-sdk/client-sso-oidc@3.360.0": + version "3.360.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/client-sso-oidc/-/client-sso-oidc-3.360.0.tgz#7964cc6334822b955dd0ba3b749f62feb55cebcc" + integrity sha512-czIpPt75fS3gH3vgFz76+WTaKcvPxC/DnPuqVyHdihMmP0UuwGPU9jn+Xx9RdUw7Yay3+rJRe3AYgBn4Xb220g== + dependencies: + "@aws-crypto/sha256-browser" "3.0.0" + "@aws-crypto/sha256-js" "3.0.0" + "@aws-sdk/config-resolver" "3.357.0" + "@aws-sdk/fetch-http-handler" "3.357.0" + "@aws-sdk/hash-node" "3.357.0" + "@aws-sdk/invalid-dependency" "3.357.0" + "@aws-sdk/middleware-content-length" "3.357.0" + "@aws-sdk/middleware-endpoint" "3.357.0" + "@aws-sdk/middleware-host-header" "3.357.0" + "@aws-sdk/middleware-logger" "3.357.0" + "@aws-sdk/middleware-recursion-detection" "3.357.0" + "@aws-sdk/middleware-retry" "3.357.0" + "@aws-sdk/middleware-serde" "3.357.0" + "@aws-sdk/middleware-stack" "3.357.0" + "@aws-sdk/middleware-user-agent" "3.357.0" + "@aws-sdk/node-config-provider" "3.357.0" + "@aws-sdk/node-http-handler" "3.360.0" + "@aws-sdk/smithy-client" "3.360.0" + "@aws-sdk/types" "3.357.0" + "@aws-sdk/url-parser" "3.357.0" + "@aws-sdk/util-base64" "3.310.0" + "@aws-sdk/util-body-length-browser" "3.310.0" + "@aws-sdk/util-body-length-node" "3.310.0" + "@aws-sdk/util-defaults-mode-browser" "3.360.0" + "@aws-sdk/util-defaults-mode-node" "3.360.0" + "@aws-sdk/util-endpoints" "3.357.0" + "@aws-sdk/util-retry" "3.357.0" + "@aws-sdk/util-user-agent-browser" "3.357.0" + "@aws-sdk/util-user-agent-node" "3.357.0" + "@aws-sdk/util-utf8" "3.310.0" + "@smithy/protocol-http" "^1.0.1" + "@smithy/types" "^1.0.0" + tslib "^2.5.0" + +"@aws-sdk/client-sso@3.360.0": + version "3.360.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/client-sso/-/client-sso-3.360.0.tgz#8238f6adfac0977c9321efca3a82ca696cbf7753" + integrity sha512-0f6eG+6XFbDxrma5xxNGg/FJxh/OHC6h8AkfNms9Lv1gBoQSagpcTor+ax0z9F6lypOjaelX6k4DpeKAp4PZeA== + dependencies: + "@aws-crypto/sha256-browser" "3.0.0" + "@aws-crypto/sha256-js" "3.0.0" + "@aws-sdk/config-resolver" "3.357.0" + "@aws-sdk/fetch-http-handler" "3.357.0" + "@aws-sdk/hash-node" "3.357.0" + "@aws-sdk/invalid-dependency" "3.357.0" + "@aws-sdk/middleware-content-length" "3.357.0" + "@aws-sdk/middleware-endpoint" "3.357.0" + "@aws-sdk/middleware-host-header" "3.357.0" + "@aws-sdk/middleware-logger" "3.357.0" + "@aws-sdk/middleware-recursion-detection" "3.357.0" + "@aws-sdk/middleware-retry" "3.357.0" + "@aws-sdk/middleware-serde" "3.357.0" + "@aws-sdk/middleware-stack" "3.357.0" + "@aws-sdk/middleware-user-agent" "3.357.0" + "@aws-sdk/node-config-provider" "3.357.0" + "@aws-sdk/node-http-handler" "3.360.0" + "@aws-sdk/smithy-client" "3.360.0" + "@aws-sdk/types" "3.357.0" + "@aws-sdk/url-parser" "3.357.0" + "@aws-sdk/util-base64" "3.310.0" + "@aws-sdk/util-body-length-browser" "3.310.0" + "@aws-sdk/util-body-length-node" "3.310.0" + "@aws-sdk/util-defaults-mode-browser" "3.360.0" + "@aws-sdk/util-defaults-mode-node" "3.360.0" + "@aws-sdk/util-endpoints" "3.357.0" + "@aws-sdk/util-retry" "3.357.0" + "@aws-sdk/util-user-agent-browser" "3.357.0" + "@aws-sdk/util-user-agent-node" "3.357.0" + "@aws-sdk/util-utf8" "3.310.0" + "@smithy/protocol-http" "^1.0.1" + "@smithy/types" "^1.0.0" + tslib "^2.5.0" + +"@aws-sdk/client-sts@3.360.0": + version "3.360.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/client-sts/-/client-sts-3.360.0.tgz#a505cbac3af8753e445723a8a9deeba105f3dcd0" + integrity sha512-ORRwSdwlSYGHfhQCXKtr1eJeTjI14l5IZRJbRDgXs46y4/GQj/rt/2Q6WGjVMfM1ZRRiEII2/vK7mU7IJcWkFw== + dependencies: + "@aws-crypto/sha256-browser" "3.0.0" + "@aws-crypto/sha256-js" "3.0.0" + "@aws-sdk/config-resolver" "3.357.0" + "@aws-sdk/credential-provider-node" "3.360.0" + "@aws-sdk/fetch-http-handler" "3.357.0" + "@aws-sdk/hash-node" "3.357.0" + "@aws-sdk/invalid-dependency" "3.357.0" + "@aws-sdk/middleware-content-length" "3.357.0" + "@aws-sdk/middleware-endpoint" "3.357.0" + "@aws-sdk/middleware-host-header" "3.357.0" + "@aws-sdk/middleware-logger" "3.357.0" + "@aws-sdk/middleware-recursion-detection" "3.357.0" + "@aws-sdk/middleware-retry" "3.357.0" + "@aws-sdk/middleware-sdk-sts" "3.357.0" + "@aws-sdk/middleware-serde" "3.357.0" + "@aws-sdk/middleware-signing" "3.357.0" + "@aws-sdk/middleware-stack" "3.357.0" + "@aws-sdk/middleware-user-agent" "3.357.0" + "@aws-sdk/node-config-provider" "3.357.0" + "@aws-sdk/node-http-handler" "3.360.0" + "@aws-sdk/smithy-client" "3.360.0" + "@aws-sdk/types" "3.357.0" + "@aws-sdk/url-parser" "3.357.0" + "@aws-sdk/util-base64" "3.310.0" + "@aws-sdk/util-body-length-browser" "3.310.0" + "@aws-sdk/util-body-length-node" "3.310.0" + "@aws-sdk/util-defaults-mode-browser" "3.360.0" + "@aws-sdk/util-defaults-mode-node" "3.360.0" + "@aws-sdk/util-endpoints" "3.357.0" + "@aws-sdk/util-retry" "3.357.0" + "@aws-sdk/util-user-agent-browser" "3.357.0" + "@aws-sdk/util-user-agent-node" "3.357.0" + "@aws-sdk/util-utf8" "3.310.0" + "@smithy/protocol-http" "^1.0.1" + "@smithy/types" "^1.0.0" + fast-xml-parser "4.2.5" + tslib "^2.5.0" + +"@aws-sdk/config-resolver@3.357.0": + version "3.357.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/config-resolver/-/config-resolver-3.357.0.tgz#7672b3f446ed64025d1763efea0289f7f49833a1" + integrity sha512-cukfg0nX7Tzx/xFyH5F4Eyb8DA1ITCGtSQv4vnEjgUop+bkzckuGLKEeBcBhyZY+aw+2C9CVwIHwIMhRm0ul5w== + dependencies: + "@aws-sdk/types" "3.357.0" + "@aws-sdk/util-config-provider" "3.310.0" + "@aws-sdk/util-middleware" "3.357.0" + tslib "^2.5.0" + +"@aws-sdk/credential-provider-cognito-identity@3.360.0": + version "3.360.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-cognito-identity/-/credential-provider-cognito-identity-3.360.0.tgz#699502e18b7457dda12a5402ce6700037cfce218" + integrity sha512-84710lUaDBc7jujf8WnvBAcFt7gmOPQXkwNe6M4STMDG6HTvbOc2jRzjIu0iOTz8lNCt5A4+mdOl31JgfBF/LA== + dependencies: + "@aws-sdk/client-cognito-identity" "3.360.0" + "@aws-sdk/property-provider" "3.357.0" + "@aws-sdk/types" "3.357.0" + tslib "^2.5.0" + +"@aws-sdk/credential-provider-env@3.357.0": + version "3.357.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-env/-/credential-provider-env-3.357.0.tgz#9746b9f958f490db5b1502d36cba7da43da460cb" + integrity sha512-UOecwfqvXgJVqhfWSZ2S44v2Nq2oceW0PQVQp0JAa9opc2rxSVIfyOhPr0yMoPmpyNcP22rgeg6ce70KULYwiA== + dependencies: + "@aws-sdk/property-provider" "3.357.0" + "@aws-sdk/types" "3.357.0" + tslib "^2.5.0" + +"@aws-sdk/credential-provider-imds@3.357.0": + version "3.357.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-imds/-/credential-provider-imds-3.357.0.tgz#6b5317c79e15a059a2f71623ec673bea03af04f6" + integrity sha512-upw/bfsl7/WydT6gM0lBuR4Ipp4fzYm/E3ObFr0Mg5OkgVPt5ZJE+eeFTvwCpDdBSTKs4JfrK6/iEK8A23Q1jQ== + dependencies: + "@aws-sdk/node-config-provider" "3.357.0" + "@aws-sdk/property-provider" "3.357.0" + "@aws-sdk/types" "3.357.0" + "@aws-sdk/url-parser" "3.357.0" + tslib "^2.5.0" + +"@aws-sdk/credential-provider-ini@3.360.0": + version "3.360.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.360.0.tgz#1d984cfa414dcbfc8ae1a252a1b87b5f2f4b1707" + integrity sha512-pWuLTq+yjSFssPGhDJ8oxvZsu7/F1KissGRt65G4qrfxHhoiMRcLF1GtFJueDQpitZ1i3mZXHVn/OSv4LPQ1Lw== + dependencies: + "@aws-sdk/credential-provider-env" "3.357.0" + "@aws-sdk/credential-provider-imds" "3.357.0" + "@aws-sdk/credential-provider-process" "3.357.0" + "@aws-sdk/credential-provider-sso" "3.360.0" + "@aws-sdk/credential-provider-web-identity" "3.357.0" + "@aws-sdk/property-provider" "3.357.0" + "@aws-sdk/shared-ini-file-loader" "3.357.0" + "@aws-sdk/types" "3.357.0" + tslib "^2.5.0" + +"@aws-sdk/credential-provider-node@3.360.0": + version "3.360.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-node/-/credential-provider-node-3.360.0.tgz#aa5fbb0f47fdb9c0e069760f8a18eebd2d6e47e1" + integrity sha512-j4Lu5vXkdzz/L6fGKKxnL0vcwAGHlwFHjTg9nRagMn1lvaVjtktXeM30duHTBQq9i+ejdFxpVNWYrmHGaWPNdg== + dependencies: + "@aws-sdk/credential-provider-env" "3.357.0" + "@aws-sdk/credential-provider-imds" "3.357.0" + "@aws-sdk/credential-provider-ini" "3.360.0" + "@aws-sdk/credential-provider-process" "3.357.0" + "@aws-sdk/credential-provider-sso" "3.360.0" + "@aws-sdk/credential-provider-web-identity" "3.357.0" + "@aws-sdk/property-provider" "3.357.0" + "@aws-sdk/shared-ini-file-loader" "3.357.0" + "@aws-sdk/types" "3.357.0" + tslib "^2.5.0" + +"@aws-sdk/credential-provider-process@3.357.0": + version "3.357.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-process/-/credential-provider-process-3.357.0.tgz#5e661bd4431a171ee862bb60ff0054d11dea150a" + integrity sha512-qFWWilFPsc2hR7O0KIhwcE78w+pVIK+uQR6MQMfdRyxUndgiuCorJwVjedc3yZtmnoELHF34j+m8whTBXv9E7Q== + dependencies: + "@aws-sdk/property-provider" "3.357.0" + "@aws-sdk/shared-ini-file-loader" "3.357.0" + "@aws-sdk/types" "3.357.0" + tslib "^2.5.0" + +"@aws-sdk/credential-provider-sso@3.360.0": + version "3.360.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.360.0.tgz#7db96614bb2dcd630412e991ce25257a8f42b0e7" + integrity sha512-kW0FR8AbMQrJxADxIqYSjHVN2RXwHmA5DzogYm1AjOkYRMN9JHDVOMQP2K2M6FCynZqTYsKW5lzjPOjS0fu8Dw== + dependencies: + "@aws-sdk/client-sso" "3.360.0" + "@aws-sdk/property-provider" "3.357.0" + "@aws-sdk/shared-ini-file-loader" "3.357.0" + "@aws-sdk/token-providers" "3.360.0" + "@aws-sdk/types" "3.357.0" + tslib "^2.5.0" + +"@aws-sdk/credential-provider-web-identity@3.357.0": + version "3.357.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.357.0.tgz#32765fc53779d84c078d20e4e1585b8fedfcf61f" + integrity sha512-0KRRAFrXy5HJe2vqnCWCoCS+fQw7IoIj3KQsuURJMW4F+ifisxCgEsh3brJ2LQlN4ElWTRJhlrDHNZ/pd61D4w== + dependencies: + "@aws-sdk/property-provider" "3.357.0" + "@aws-sdk/types" "3.357.0" + tslib "^2.5.0" + +"@aws-sdk/credential-providers@^3.289.0": + version "3.360.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-providers/-/credential-providers-3.360.0.tgz#32f3d21f50fbbfd8fac9b184f757c8e751d29223" + integrity sha512-Bw7EmOAy30c/zspotzmQG4oJMQyRdNrsDyI99bb7GALwZhXgqh90hYw+HCz0Rq8W5H5BT3pBjby68PoYW4Av7w== + dependencies: + "@aws-sdk/client-cognito-identity" "3.360.0" + "@aws-sdk/client-sso" "3.360.0" + "@aws-sdk/client-sts" "3.360.0" + "@aws-sdk/credential-provider-cognito-identity" "3.360.0" + "@aws-sdk/credential-provider-env" "3.357.0" + "@aws-sdk/credential-provider-imds" "3.357.0" + "@aws-sdk/credential-provider-ini" "3.360.0" + "@aws-sdk/credential-provider-node" "3.360.0" + "@aws-sdk/credential-provider-process" "3.357.0" + "@aws-sdk/credential-provider-sso" "3.360.0" + "@aws-sdk/credential-provider-web-identity" "3.357.0" + "@aws-sdk/property-provider" "3.357.0" + "@aws-sdk/types" "3.357.0" + tslib "^2.5.0" + +"@aws-sdk/eventstream-codec@3.357.0": + version "3.357.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/eventstream-codec/-/eventstream-codec-3.357.0.tgz#32b6f0d97f3ea6e479e0d59c0a9b625faf3f887b" + integrity sha512-bqenTHG6GH6aCk/Il+ooWXVVAZuc8lOgVEy9bE2hI49oVqT8zSuXxQB+w1WWyZoAOPcelsjayB1wfPub8VDBxQ== + dependencies: + "@aws-crypto/crc32" "3.0.0" + "@aws-sdk/types" "3.357.0" + "@aws-sdk/util-hex-encoding" "3.310.0" + tslib "^2.5.0" + +"@aws-sdk/eventstream-serde-browser@3.357.0": + version "3.357.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/eventstream-serde-browser/-/eventstream-serde-browser-3.357.0.tgz#fc2074bb7a9d8a358b9e0fb601924094af33c133" + integrity sha512-hBabtmwuspVHGSKnUccDiSIbg+IVoBThx6wYt6i4edbWAITHF3ADVKXy7icV400CAyG0XTZgxjE6FKpiDxj9rQ== + dependencies: + "@aws-sdk/eventstream-serde-universal" "3.357.0" + "@aws-sdk/types" "3.357.0" + tslib "^2.5.0" + +"@aws-sdk/eventstream-serde-config-resolver@3.357.0": + version "3.357.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/eventstream-serde-config-resolver/-/eventstream-serde-config-resolver-3.357.0.tgz#d5db248a17fb22bc95d3088b7d840a065f015251" + integrity sha512-E6rwk+1KFXhKmJ+v7JW5Uyyda1yN5XRVupCnCrtFsHFmhVGQxFacoUZIee3bfuCpC58dLSyESggxGpUd3XOSsw== + dependencies: + "@aws-sdk/types" "3.357.0" + tslib "^2.5.0" + +"@aws-sdk/eventstream-serde-node@3.357.0": + version "3.357.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/eventstream-serde-node/-/eventstream-serde-node-3.357.0.tgz#4fc79eea9eb85c173f44ad8e37550231e81cf144" + integrity sha512-boXDy+JWcPfHc9OIKV6I4Bh2XrLcg+eac+/LldNZFcDIB33/gHIM2CJw8u565Iebdz1NKEkP/QPPZbk2y+abPA== + dependencies: + "@aws-sdk/eventstream-serde-universal" "3.357.0" + "@aws-sdk/types" "3.357.0" + tslib "^2.5.0" + +"@aws-sdk/eventstream-serde-universal@3.357.0": + version "3.357.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/eventstream-serde-universal/-/eventstream-serde-universal-3.357.0.tgz#b83fb0bbc9623eb3e5a698cb3bfd1b8c502fd351" + integrity sha512-9/Wcdxx38XQAturqOAGYNCaLOzFVnW+xwxd4af9eNOfZfZ5PP5PRKBIpvKDsN26e3l4f3GodHx7MS1WB7BBc2w== + dependencies: + "@aws-sdk/eventstream-codec" "3.357.0" + "@aws-sdk/types" "3.357.0" + tslib "^2.5.0" + +"@aws-sdk/fetch-http-handler@3.357.0": + version "3.357.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/fetch-http-handler/-/fetch-http-handler-3.357.0.tgz#8b33b8cefe036fd932b694242893ef3db1a74f02" + integrity sha512-5sPloTO8y8fAnS/6/Sfp/aVoL9zuhzkLdWBORNzMazdynVNEzWKWCPZ27RQpgkaCDHiXjqUY4kfuFXAGkvFfDQ== + dependencies: + "@aws-sdk/protocol-http" "3.357.0" + "@aws-sdk/querystring-builder" "3.357.0" + "@aws-sdk/types" "3.357.0" + "@aws-sdk/util-base64" "3.310.0" + tslib "^2.5.0" + +"@aws-sdk/hash-blob-browser@3.357.0": + version "3.357.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/hash-blob-browser/-/hash-blob-browser-3.357.0.tgz#e507929499fe0fe128664b67cd26f63f16ed4d25" + integrity sha512-RDd6UgrGHDmleTnXM9LRSSVa69euSAG2mlNhZMEDWk3OFseXVYqBDaqroVbQ01rM2UAe8MeBFchlV9OmxuVgvw== + dependencies: + "@aws-sdk/chunked-blob-reader" "3.310.0" + "@aws-sdk/types" "3.357.0" + tslib "^2.5.0" + +"@aws-sdk/hash-node@3.357.0": + version "3.357.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/hash-node/-/hash-node-3.357.0.tgz#70666b0d6a49191cf33ef32b235c33b242de36ce" + integrity sha512-fq3LS9AxHKb7dTZkm6iM1TrGk6XOTZz96iEZPME1+vjiSEXGWuebHt87q92n+KozVGRypn9MId3lHOPBBjygNQ== + dependencies: + "@aws-sdk/types" "3.357.0" + "@aws-sdk/util-buffer-from" "3.310.0" + "@aws-sdk/util-utf8" "3.310.0" + tslib "^2.5.0" + +"@aws-sdk/hash-stream-node@3.357.0": + version "3.357.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/hash-stream-node/-/hash-stream-node-3.357.0.tgz#a78c6d1ae1c78cb52854311bad50988e8fc12142" + integrity sha512-KZjN1VAw1KHNp+xKVOWBGS+MpaYQTjZFD5f+7QQqW4TfbAkFFwIAEYIHq5Q8Gw+jVh0h61OrV/LyW3J2PVzc+w== + dependencies: + "@aws-sdk/types" "3.357.0" + "@aws-sdk/util-utf8" "3.310.0" + tslib "^2.5.0" + +"@aws-sdk/invalid-dependency@3.357.0": + version "3.357.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/invalid-dependency/-/invalid-dependency-3.357.0.tgz#4e86c689a6b0c4d0fe43ba335218d67e9aa652a6" + integrity sha512-HnCYZczf0VdyxMVMMxmA3QJAyyPSFbcMtZzgKbxVTWTG7GKpQe0psWZu/7O2Nk31mKg6vEUdiP1FylqLBsgMOA== + dependencies: + "@aws-sdk/types" "3.357.0" + tslib "^2.5.0" + +"@aws-sdk/is-array-buffer@3.310.0": + version "3.310.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/is-array-buffer/-/is-array-buffer-3.310.0.tgz#f87a79f1b858c88744f07e8d8d0a791df204017e" + integrity sha512-urnbcCR+h9NWUnmOtet/s4ghvzsidFmspfhYaHAmSRdy9yDjdjBJMFjjsn85A1ODUktztm+cVncXjQ38WCMjMQ== + dependencies: + tslib "^2.5.0" + +"@aws-sdk/lib-storage@^3.267.0": + version "3.360.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/lib-storage/-/lib-storage-3.360.0.tgz#56d29aedd10d49fcc7e6c032cf766cabad45fddc" + integrity sha512-3x3glxHaXj9C/pq8hHNafnhSibdCgud6/7NI7A/CcyarHg6OIj1FVuYWzGMtN028wyOkoDfnfceaaMJdQJQ3WA== + dependencies: + "@aws-sdk/middleware-endpoint" "3.357.0" + "@aws-sdk/smithy-client" "3.360.0" + buffer "5.6.0" + events "3.3.0" + stream-browserify "3.0.0" + tslib "^2.5.0" + +"@aws-sdk/md5-js@3.357.0": + version "3.357.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/md5-js/-/md5-js-3.357.0.tgz#61853f562e71af0ec58aeede7883de122177ed55" + integrity sha512-to42sFAL7KgV/X9X40LLfEaNMHMGQL6/7mPMVCL/W2BZf3zw5OTl3lAaNyjXA+gO5Uo4lFEiQKAQVKNbr8b8Nw== + dependencies: + "@aws-sdk/types" "3.357.0" + "@aws-sdk/util-utf8" "3.310.0" + tslib "^2.5.0" + +"@aws-sdk/middleware-bucket-endpoint@3.357.0": + version "3.357.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-bucket-endpoint/-/middleware-bucket-endpoint-3.357.0.tgz#9d19ba4a7971c5302e32d024e477755a1f6185ff" + integrity sha512-ep2T0FJXRDl6nffLqiVZUYfDocZ3B72wvHeozckkLVRX0TK91WEpzv4Zz2vdeBp6CGkM3g8oGjbb6ZqllUZ6TA== + dependencies: + "@aws-sdk/protocol-http" "3.357.0" + "@aws-sdk/types" "3.357.0" + "@aws-sdk/util-arn-parser" "3.310.0" + "@aws-sdk/util-config-provider" "3.310.0" + tslib "^2.5.0" + +"@aws-sdk/middleware-content-length@3.357.0": + version "3.357.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-content-length/-/middleware-content-length-3.357.0.tgz#eafad2db1816cb5d91cd1e090211f040f29bbdaa" + integrity sha512-zQOFEyzOXAgN4M54tYNWGxKxnyzY0WwYDTFzh9riJRmxN1hTEKHUKmze4nILIf5rkQmOG4kTf1qmfazjkvZAhw== + dependencies: + "@aws-sdk/protocol-http" "3.357.0" + "@aws-sdk/types" "3.357.0" + tslib "^2.5.0" + +"@aws-sdk/middleware-endpoint@3.357.0": + version "3.357.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-endpoint/-/middleware-endpoint-3.357.0.tgz#bc94bbf55339aa5220011f4ae8e03a7966ce28be" + integrity sha512-ScJi0SL8X/Lyi0Fp5blg0QN/Z6PoRwV/ZJXd8dQkXSznkbSvJHfqPP0xk/w3GcQ1TKsu5YEPfeYy8ejcq+7Pgg== + dependencies: + "@aws-sdk/middleware-serde" "3.357.0" + "@aws-sdk/types" "3.357.0" + "@aws-sdk/url-parser" "3.357.0" + "@aws-sdk/util-middleware" "3.357.0" + tslib "^2.5.0" + +"@aws-sdk/middleware-expect-continue@3.357.0": + version "3.357.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-expect-continue/-/middleware-expect-continue-3.357.0.tgz#c392c4f31300695158070223f1e337c7503aca92" + integrity sha512-KeizuiiDmdLeAbiNsJt/rZENY5iJo4wCTl7h81htDC60wSwVwFG03IdgvZlFH6jktYRh4mUDD/6Oljme6yPNxw== + dependencies: + "@aws-sdk/protocol-http" "3.357.0" + "@aws-sdk/types" "3.357.0" + tslib "^2.5.0" + +"@aws-sdk/middleware-flexible-checksums@3.357.0": + version "3.357.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-flexible-checksums/-/middleware-flexible-checksums-3.357.0.tgz#957a383dc66942e63493d2ba182ee775e8139507" + integrity sha512-NNQ/iPN6YyzqgVaV8AeYQMZ8y1OmUW27vmt0R66UUw5H5THGc6X9QXoKfie7OHn80Qv1S8P5jw8z5MpvDtjSnQ== + dependencies: + "@aws-crypto/crc32" "3.0.0" + "@aws-crypto/crc32c" "3.0.0" + "@aws-sdk/is-array-buffer" "3.310.0" + "@aws-sdk/protocol-http" "3.357.0" + "@aws-sdk/types" "3.357.0" + "@aws-sdk/util-utf8" "3.310.0" + tslib "^2.5.0" + +"@aws-sdk/middleware-host-header@3.357.0": + version "3.357.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-host-header/-/middleware-host-header-3.357.0.tgz#9d4f803fc7d9b1f5582a62844b1d841b3c849fe0" + integrity sha512-HuGLcP7JP1qJ5wGT9GSlEknDaTSnOzHY4T6IPFuvFjAy3PvY5siQNm6+VRqdVS+n6/kzpL3JP5sAVM3aoxHT6Q== + dependencies: + "@aws-sdk/protocol-http" "3.357.0" + "@aws-sdk/types" "3.357.0" + tslib "^2.5.0" + +"@aws-sdk/middleware-location-constraint@3.357.0": + version "3.357.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-location-constraint/-/middleware-location-constraint-3.357.0.tgz#b147973f70c82cf06d3bafcf32b6b826203bcb69" + integrity sha512-4IsIHhwZ2/o7yjLI1XtGMkJ442cbIN5/NtI/Ml0G5UHYviUm8sqvH2vldFBMK5bPuVdk6GpqXpy6wYc9rLJj2w== + dependencies: + "@aws-sdk/types" "3.357.0" + tslib "^2.5.0" + +"@aws-sdk/middleware-logger@3.357.0": + version "3.357.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-logger/-/middleware-logger-3.357.0.tgz#851a44a934ad8f33465ae4665a6c07ac967a8bbb" + integrity sha512-dncT3tr+lZ9+duZo52rASgO6AKVwRcsc2/T93gmaYVrJqI6WWAwQ7yML5s72l9ZjQ5LZ+4jjrgtlufavAS0eCg== + dependencies: + "@aws-sdk/types" "3.357.0" + tslib "^2.5.0" + +"@aws-sdk/middleware-recursion-detection@3.357.0": + version "3.357.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.357.0.tgz#2d7a8cf43f1299c1ff1e113988bd801e7f527401" + integrity sha512-AXC54IeDS3jC1dbbkYHML4STvBPcKZ4IJTWdjEK1RCOgqXd0Ze1cE1e21wyj1tM6prF03zLyvpBd+3TS++nqfA== + dependencies: + "@aws-sdk/protocol-http" "3.357.0" + "@aws-sdk/types" "3.357.0" + tslib "^2.5.0" + +"@aws-sdk/middleware-retry@3.357.0": + version "3.357.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-retry/-/middleware-retry-3.357.0.tgz#6dfbd4ddc62c415b6b6de16d3a37ad4d69c8a10c" + integrity sha512-ZCbXCYv3nglQqwREYxxpclrnR9MYPAnHlLcC8e9PbApqxGnaZdhoywxoqbgqT3hf/RM7kput4vEHDl1fyymcRQ== + dependencies: + "@aws-sdk/protocol-http" "3.357.0" + "@aws-sdk/service-error-classification" "3.357.0" + "@aws-sdk/types" "3.357.0" + "@aws-sdk/util-middleware" "3.357.0" + "@aws-sdk/util-retry" "3.357.0" + tslib "^2.5.0" + uuid "^8.3.2" + +"@aws-sdk/middleware-sdk-s3@3.357.0": + version "3.357.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-sdk-s3/-/middleware-sdk-s3-3.357.0.tgz#3962e60183930b497599357f42f531578544eb18" + integrity sha512-EFQaPD8SoXcK7RiEOZz0zIX9owQW6txu8vrOOVva9xMts36z/3E7b4FVsgEJ53Ixa1x38ddPJxp4U8EIaf+pvQ== + dependencies: + "@aws-sdk/protocol-http" "3.357.0" + "@aws-sdk/types" "3.357.0" + "@aws-sdk/util-arn-parser" "3.310.0" + tslib "^2.5.0" + +"@aws-sdk/middleware-sdk-sts@3.357.0": + version "3.357.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-sdk-sts/-/middleware-sdk-sts-3.357.0.tgz#8f9be3db8f4fd8563baf66925ee326f579b6ae4d" + integrity sha512-Ng2VjLrPiL02QOcs1qs9jG2boO4Gn+v3VIbOJLG4zXcfbSq55iIWtlmr2ljfw9vP5aLhWtcODfmKHS5Bp+019Q== + dependencies: + "@aws-sdk/middleware-signing" "3.357.0" + "@aws-sdk/types" "3.357.0" + tslib "^2.5.0" + +"@aws-sdk/middleware-serde@3.357.0": + version "3.357.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-serde/-/middleware-serde-3.357.0.tgz#2614031c81981580bce4bee502985e28e51dadb2" + integrity sha512-bGI4kYuuEsFjlANbyJLyy4AovETnyf/SukgLOG7Qjbua+ZGuzvRhMsk21mBKKGrnsTO4PmtieJo6xClThGAN8g== + dependencies: + "@aws-sdk/types" "3.357.0" + tslib "^2.5.0" + +"@aws-sdk/middleware-signing@3.357.0": + version "3.357.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-signing/-/middleware-signing-3.357.0.tgz#9aee1ad571b092ad0bbd63e0b551ffb575220688" + integrity sha512-yB9ewEqI6Fw1OrmKFrUypbCqN5ijk06UGPochybamMuPxxkwMT3bnrm7eezsCA+TZbJyKhpffpyobwuv+xGNrA== + dependencies: + "@aws-sdk/property-provider" "3.357.0" + "@aws-sdk/protocol-http" "3.357.0" + "@aws-sdk/signature-v4" "3.357.0" + "@aws-sdk/types" "3.357.0" + "@aws-sdk/util-middleware" "3.357.0" + tslib "^2.5.0" + +"@aws-sdk/middleware-ssec@3.357.0": + version "3.357.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-ssec/-/middleware-ssec-3.357.0.tgz#c99b9b457cfaee32796110b324d2d5056c86b4df" + integrity sha512-uE3nNvJclcY7SgGoOgDCUgfc7ElXQmWVpks8AZzAjJj7bG5j6Bv3FOOYtGtvtxUzTHaOdn+yQwjssV1cZ6GTQw== + dependencies: + "@aws-sdk/types" "3.357.0" + tslib "^2.5.0" + +"@aws-sdk/middleware-stack@3.357.0": + version "3.357.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-stack/-/middleware-stack-3.357.0.tgz#51f181691e8c76694b6583561ba0a0a14472506c" + integrity sha512-nNV+jfwGwmbOGZujAY/U8AW3EbVlxa9DJDLz3TPp/39o6Vu5KEzHJyDDNreo2k9V/TMvV+nOzHafufgPdagv7w== + dependencies: + tslib "^2.5.0" + +"@aws-sdk/middleware-user-agent@3.357.0": + version "3.357.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.357.0.tgz#d4d27549bbcfdc03f5a8db74435a345b05b40373" + integrity sha512-M/CsAXjGblZS4rEbMb0Dn9IXbfq4EjVaTHBfvuILU/dKRppWvjnm2lRtqCZ+LIT3ATbAjA3/dY7dWsjxQWwijA== + dependencies: + "@aws-sdk/protocol-http" "3.357.0" + "@aws-sdk/types" "3.357.0" + "@aws-sdk/util-endpoints" "3.357.0" + tslib "^2.5.0" + +"@aws-sdk/node-config-provider@3.357.0": + version "3.357.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/node-config-provider/-/node-config-provider-3.357.0.tgz#2e47aa36e5efae89b65c79b8c27180d3d8a2d901" + integrity sha512-kwBIzKCaW3UWqLdELhy7TcN8itNMOjbzga530nalFILMvn2IxrkdKQhNgxGBXy6QK6kCOtH6OmcrG3/oZkLwig== + dependencies: + "@aws-sdk/property-provider" "3.357.0" + "@aws-sdk/shared-ini-file-loader" "3.357.0" + "@aws-sdk/types" "3.357.0" + tslib "^2.5.0" + +"@aws-sdk/node-http-handler@3.360.0": + version "3.360.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/node-http-handler/-/node-http-handler-3.360.0.tgz#6f762b57f98887b5173886f890669e6a60bf792c" + integrity sha512-oMsXdMmNwHpUbebETO44bq0N4SocEMGfPjYNUTRs8md7ita5fuFd2qFuvf+ZRt6iVcGWluIqmF8DidD+b7d+TA== + dependencies: + "@aws-sdk/abort-controller" "3.357.0" + "@aws-sdk/protocol-http" "3.357.0" + "@aws-sdk/querystring-builder" "3.357.0" + "@aws-sdk/types" "3.357.0" + tslib "^2.5.0" + +"@aws-sdk/property-provider@3.357.0": + version "3.357.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/property-provider/-/property-provider-3.357.0.tgz#4c1639c2d52aefab4040c2247c126c11b19d8be9" + integrity sha512-im4W0u8WaYxG7J7ko4Xl3OEzK3Mrm1Rz6/txTGe6hTIHlyUISu1ekOQJXK6XYPqNMn8v1G3BiQREoRXUEJFbHg== + dependencies: + "@aws-sdk/types" "3.357.0" + tslib "^2.5.0" + +"@aws-sdk/protocol-http@3.357.0": + version "3.357.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/protocol-http/-/protocol-http-3.357.0.tgz#cd47413d6c1ed2d27bc30c7e9da3b262c8804cf4" + integrity sha512-w1JHiI50VEea7duDeAspUiKJmmdIQblvRyjVMOqWA6FIQAyDVuEiPX7/MdQr0ScxhtRQxHbP0I4MFyl7ctRQvA== + dependencies: + "@aws-sdk/types" "3.357.0" + tslib "^2.5.0" + +"@aws-sdk/querystring-builder@3.357.0": + version "3.357.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/querystring-builder/-/querystring-builder-3.357.0.tgz#0d4627620eba4d3cc523c2e1da88dfa561617599" + integrity sha512-aQcicqB6Y2cNaXPPwunz612a01SMiQQPsdz632F/3Lzn0ua82BJKobHOtaiTUlmVJ5Q4/EAeNfwZgL7tTUNtDQ== + dependencies: + "@aws-sdk/types" "3.357.0" + "@aws-sdk/util-uri-escape" "3.310.0" + tslib "^2.5.0" + +"@aws-sdk/querystring-parser@3.357.0": + version "3.357.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/querystring-parser/-/querystring-parser-3.357.0.tgz#6dfeb42930b2241cda43646d7c1d16ca886c78af" + integrity sha512-Svvq+atRNP9s2VxiklcUNgCzmt3T5kfs7X2C+yjmxHvOQTPjLNaNGbfC/vhjOK7aoXw0h+lBac48r5ymx1PbQA== + dependencies: + "@aws-sdk/types" "3.357.0" + tslib "^2.5.0" + +"@aws-sdk/service-error-classification@3.357.0": + version "3.357.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/service-error-classification/-/service-error-classification-3.357.0.tgz#1c6f6e436997a1886d55cfec6d4796129b789076" + integrity sha512-VuXeL4g5vKO9HjgCZlxmH8Uv1FcqUSjmbPpQkbNtYIDck6u0qzM0rG+n0/1EjyQbPSr3MhW/pkWs5nx2Nljlyg== + +"@aws-sdk/shared-ini-file-loader@3.357.0": + version "3.357.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/shared-ini-file-loader/-/shared-ini-file-loader-3.357.0.tgz#af503df79e05bb9ee0e5d689319c9b52cefe1801" + integrity sha512-ceyqM4XxQe0Plb/oQAD2t1UOV2Iy4PFe1oAGM8dfJzYrRKu7zvMwru7/WaB3NYq+/mIY6RU+jjhRmjQ3GySVqA== + dependencies: + "@aws-sdk/types" "3.357.0" + tslib "^2.5.0" + +"@aws-sdk/signature-v4-multi-region@3.357.0": + version "3.357.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/signature-v4-multi-region/-/signature-v4-multi-region-3.357.0.tgz#100c573029e2b30a65634090e55be4beb50e16a1" + integrity sha512-eyO3GibYLNCPZ/YxM/ZVDh1fTMKvIUj4fpVo0bxQTKNlqNkVumAIOVLoH5um1A9FN7nDdz+40a7jwYSPlkxW6A== + dependencies: + "@aws-sdk/protocol-http" "3.357.0" + "@aws-sdk/signature-v4" "3.357.0" + "@aws-sdk/types" "3.357.0" + tslib "^2.5.0" + +"@aws-sdk/signature-v4@3.357.0": + version "3.357.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/signature-v4/-/signature-v4-3.357.0.tgz#31093e87fda10bee92b6b2784cdba9af9af89e7d" + integrity sha512-itt4/Jh9FqnzK30qIjXFBvM4J7zN4S/AAqsRMnaX7U4f/MV+1YxQHmzimpdMnsCXXs2jqFqKVRu6DewxJ3nbxg== + dependencies: + "@aws-sdk/eventstream-codec" "3.357.0" + "@aws-sdk/is-array-buffer" "3.310.0" + "@aws-sdk/types" "3.357.0" + "@aws-sdk/util-hex-encoding" "3.310.0" + "@aws-sdk/util-middleware" "3.357.0" + "@aws-sdk/util-uri-escape" "3.310.0" + "@aws-sdk/util-utf8" "3.310.0" + tslib "^2.5.0" + +"@aws-sdk/smithy-client@3.360.0": + version "3.360.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/smithy-client/-/smithy-client-3.360.0.tgz#59d55eb41eccc22ca2d3d32c11b60135f882e66d" + integrity sha512-R7wbT2SkgWNEAxMekOTNcPcvBszabW2+qHjrcelbbVJNjx/2yK+MbpZI4WRSncByQMeeoW+aSUP+JgsbpiOWfw== + dependencies: + "@aws-sdk/middleware-stack" "3.357.0" + "@aws-sdk/types" "3.357.0" + "@aws-sdk/util-stream" "3.360.0" + "@smithy/types" "^1.0.0" + tslib "^2.5.0" + +"@aws-sdk/token-providers@3.360.0": + version "3.360.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/token-providers/-/token-providers-3.360.0.tgz#f4343caef536a96e39d4e79fff604868036247a0" + integrity sha512-gtnCmn2NL7uSwadqQPeU74Wo7Wf1NMJtui+KSWPYpc3joRZqIYj0kL5w0IT2S9tPQwCFerWVfhkvRkSGJ4nZ/g== + dependencies: + "@aws-sdk/client-sso-oidc" "3.360.0" + "@aws-sdk/property-provider" "3.357.0" + "@aws-sdk/shared-ini-file-loader" "3.357.0" + "@aws-sdk/types" "3.357.0" + tslib "^2.5.0" + +"@aws-sdk/types@3.357.0", "@aws-sdk/types@^3.1.0", "@aws-sdk/types@^3.222.0": + version "3.357.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/types/-/types-3.357.0.tgz#8491da71a4291cc2661c26a75089e86532b6a3b5" + integrity sha512-/riCRaXg3p71BeWnShrai0y0QTdXcouPSM0Cn1olZbzTf7s71aLEewrc96qFrL70XhY4XvnxMpqQh+r43XIL3g== + dependencies: + tslib "^2.5.0" + +"@aws-sdk/url-parser@3.357.0": + version "3.357.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/url-parser/-/url-parser-3.357.0.tgz#1b197f252d008e201d1e301c8024bed770ef0b2c" + integrity sha512-fAaU6cFsaAba01lCRsRJiYR/LfXvX2wudyEyutBVglE4dWSoSeu3QJNxImIzTBULfbiFhz59++NQ1JUVx88IVg== + dependencies: + "@aws-sdk/querystring-parser" "3.357.0" + "@aws-sdk/types" "3.357.0" + tslib "^2.5.0" + +"@aws-sdk/util-arn-parser@3.310.0": + version "3.310.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-arn-parser/-/util-arn-parser-3.310.0.tgz#861ff8810851be52a320ec9e4786f15b5fc74fba" + integrity sha512-jL8509owp/xB9+Or0pvn3Fe+b94qfklc2yPowZZIFAkFcCSIdkIglz18cPDWnYAcy9JGewpMS1COXKIUhZkJsA== + dependencies: + tslib "^2.5.0" + +"@aws-sdk/util-base64@3.310.0": + version "3.310.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-base64/-/util-base64-3.310.0.tgz#d0fd49aff358c5a6e771d0001c63b1f97acbe34c" + integrity sha512-v3+HBKQvqgdzcbL+pFswlx5HQsd9L6ZTlyPVL2LS9nNXnCcR3XgGz9jRskikRUuUvUXtkSG1J88GAOnJ/apTPg== + dependencies: + "@aws-sdk/util-buffer-from" "3.310.0" + tslib "^2.5.0" + +"@aws-sdk/util-body-length-browser@3.310.0": + version "3.310.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-body-length-browser/-/util-body-length-browser-3.310.0.tgz#3fca9d2f73c058edf1907e4a1d99a392fdd23eca" + integrity sha512-sxsC3lPBGfpHtNTUoGXMQXLwjmR0zVpx0rSvzTPAuoVILVsp5AU/w5FphNPxD5OVIjNbZv9KsKTuvNTiZjDp9g== + dependencies: + tslib "^2.5.0" + +"@aws-sdk/util-body-length-node@3.310.0": + version "3.310.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-body-length-node/-/util-body-length-node-3.310.0.tgz#4846ae72834ab0636f29f89fc1878520f6543fed" + integrity sha512-2tqGXdyKhyA6w4zz7UPoS8Ip+7sayOg9BwHNidiGm2ikbDxm1YrCfYXvCBdwaJxa4hJfRVz+aL9e+d3GqPI9pQ== + dependencies: + tslib "^2.5.0" + +"@aws-sdk/util-buffer-from@3.310.0": + version "3.310.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-buffer-from/-/util-buffer-from-3.310.0.tgz#7a72cb965984d3c6a7e256ae6cf1621f52e54a57" + integrity sha512-i6LVeXFtGih5Zs8enLrt+ExXY92QV25jtEnTKHsmlFqFAuL3VBeod6boeMXkN2p9lbSVVQ1sAOOYZOHYbYkntw== + dependencies: + "@aws-sdk/is-array-buffer" "3.310.0" + tslib "^2.5.0" + +"@aws-sdk/util-config-provider@3.310.0": + version "3.310.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-config-provider/-/util-config-provider-3.310.0.tgz#ff21f73d4774cfd7bd16ae56f905828600dda95f" + integrity sha512-xIBaYo8dwiojCw8vnUcIL4Z5tyfb1v3yjqyJKJWV/dqKUFOOS0U591plmXbM+M/QkXyML3ypon1f8+BoaDExrg== + dependencies: + tslib "^2.5.0" + +"@aws-sdk/util-defaults-mode-browser@3.360.0": + version "3.360.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-defaults-mode-browser/-/util-defaults-mode-browser-3.360.0.tgz#fced018e4990220dc31881a5b2b3e425fe08e970" + integrity sha512-/GR8VlK9xo1Q5WbVYuNaZ+XfoCFdWNb4z4mpoEgvEgBH4R0GjqiAqLftUA8Ykq1tJuDAKPYVzUNzK8DC0pt7/g== + dependencies: + "@aws-sdk/property-provider" "3.357.0" + "@aws-sdk/types" "3.357.0" + bowser "^2.11.0" + tslib "^2.5.0" + +"@aws-sdk/util-defaults-mode-node@3.360.0": + version "3.360.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-defaults-mode-node/-/util-defaults-mode-node-3.360.0.tgz#83e2812474d8807d6d220c5064576e63e4ea8306" + integrity sha512-gR3Ctqpyl7SgStDJ1Jlq6qQDuw/rS9AgbAXx+s3wsmm3fm8lHKkXkDPYVvNDqd6dVXRO6q8MRx00lwkGI4qrpQ== + dependencies: + "@aws-sdk/config-resolver" "3.357.0" + "@aws-sdk/credential-provider-imds" "3.357.0" + "@aws-sdk/node-config-provider" "3.357.0" + "@aws-sdk/property-provider" "3.357.0" + "@aws-sdk/types" "3.357.0" + tslib "^2.5.0" + +"@aws-sdk/util-endpoints@3.357.0": + version "3.357.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-endpoints/-/util-endpoints-3.357.0.tgz#eaa7b4481bbd9fc8f13412b308ba4129d8fa2004" + integrity sha512-XHKyS5JClT9su9hDif715jpZiWHQF9gKZXER8tW0gOizU3R9cyWc9EsJ2BRhFNhi7nt/JF/CLUEc5qDx3ETbUw== + dependencies: + "@aws-sdk/types" "3.357.0" + tslib "^2.5.0" + +"@aws-sdk/util-hex-encoding@3.310.0": + version "3.310.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-hex-encoding/-/util-hex-encoding-3.310.0.tgz#19294c78986c90ae33f04491487863dc1d33bd87" + integrity sha512-sVN7mcCCDSJ67pI1ZMtk84SKGqyix6/0A1Ab163YKn+lFBQRMKexleZzpYzNGxYzmQS6VanP/cfU7NiLQOaSfA== + dependencies: + tslib "^2.5.0" + +"@aws-sdk/util-locate-window@^3.0.0": + version "3.310.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-locate-window/-/util-locate-window-3.310.0.tgz#b071baf050301adee89051032bd4139bba32cc40" + integrity sha512-qo2t/vBTnoXpjKxlsC2e1gBrRm80M3bId27r0BRB2VniSSe7bL1mmzM+/HFtujm0iAxtPM+aLEflLJlJeDPg0w== + dependencies: + tslib "^2.5.0" + +"@aws-sdk/util-middleware@3.357.0": + version "3.357.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-middleware/-/util-middleware-3.357.0.tgz#1ba478dde5df4e53b231ec6651b8d44c9187f66d" + integrity sha512-pV1krjZs7BdahZBfsCJMatE8kcor7GFsBOWrQgQDm9T0We5b5xPpOO2vxAD0RytBpY8Ky2ELs/+qXMv7l5fWIA== + dependencies: + tslib "^2.5.0" + +"@aws-sdk/util-retry@3.357.0": + version "3.357.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-retry/-/util-retry-3.357.0.tgz#25e12e2882b2bbc5a6531c1d9344cb0c93103b3b" + integrity sha512-SUqYJE9msbuOVq+vnUy+t0LH7XuYNFz66dSF8q6tedsbJK4j8tgya0I1Ct3m06ynGrXDJMaj39I7AXCyW9bjtw== + dependencies: + "@aws-sdk/service-error-classification" "3.357.0" + tslib "^2.5.0" + +"@aws-sdk/util-stream@3.360.0": + version "3.360.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-stream/-/util-stream-3.360.0.tgz#a6cf43cf594540e9d1a4e19b9acbc5c34b3a1225" + integrity sha512-t3naBfNesXwLis29pzSfLx2ifCn2180GiPjRaIsQP14IiVCBOeT1xaU6Dpyk7WeR/jW4cu7wGl+kbeyfNF6QmQ== + dependencies: + "@aws-sdk/fetch-http-handler" "3.357.0" + "@aws-sdk/node-http-handler" "3.360.0" + "@aws-sdk/types" "3.357.0" + "@aws-sdk/util-base64" "3.310.0" + "@aws-sdk/util-buffer-from" "3.310.0" + "@aws-sdk/util-hex-encoding" "3.310.0" + "@aws-sdk/util-utf8" "3.310.0" + tslib "^2.5.0" + +"@aws-sdk/util-uri-escape@3.310.0": + version "3.310.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-uri-escape/-/util-uri-escape-3.310.0.tgz#9f942f09a715d8278875013a416295746b6085ba" + integrity sha512-drzt+aB2qo2LgtDoiy/3sVG8w63cgLkqFIa2NFlGpUgHFWTXkqtbgf4L5QdjRGKWhmZsnqkbtL7vkSWEcYDJ4Q== + dependencies: + tslib "^2.5.0" + +"@aws-sdk/util-user-agent-browser@3.357.0": + version "3.357.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.357.0.tgz#21c3e6c1a3d610dd279952d3ce00909775019be5" + integrity sha512-JHaWlNIUkPNvXkqeDOrqFzAlAgdwZK5mZw7FQnCRvf8tdSogpGZSkuyb9Z6rLD9gC40Srbc2nepO1cFpeMsDkA== + dependencies: + "@aws-sdk/types" "3.357.0" + bowser "^2.11.0" + tslib "^2.5.0" + +"@aws-sdk/util-user-agent-node@3.357.0": + version "3.357.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.357.0.tgz#a656cebce558b602e753e45a3b8174dc7c0f1fcf" + integrity sha512-RdpQoaJWQvcS99TVgSbT451iGrlH4qpWUWFA9U1IRhxOSsmC1hz8ME7xc8nci9SREx/ZlfT3ai6LpoAzAtIEMA== + dependencies: + "@aws-sdk/node-config-provider" "3.357.0" + "@aws-sdk/types" "3.357.0" + tslib "^2.5.0" + +"@aws-sdk/util-utf8-browser@^3.0.0": + version "3.259.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-utf8-browser/-/util-utf8-browser-3.259.0.tgz#3275a6f5eb334f96ca76635b961d3c50259fd9ff" + integrity sha512-UvFa/vR+e19XookZF8RzFZBrw2EUkQWxiBW0yYQAhvk3C+QVGl0H3ouca8LDBlBfQKXwmW3huo/59H8rwb1wJw== + dependencies: + tslib "^2.3.1" + +"@aws-sdk/util-utf8@3.310.0": + version "3.310.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-utf8/-/util-utf8-3.310.0.tgz#4a7b9dcebb88e830d3811aeb21e9a6df4273afb4" + integrity sha512-DnLfFT8uCO22uOJc0pt0DsSNau1GTisngBCDw8jQuWT5CqogMJu4b/uXmwEqfj8B3GX6Xsz8zOd6JpRlPftQoA== + dependencies: + "@aws-sdk/util-buffer-from" "3.310.0" + tslib "^2.5.0" + +"@aws-sdk/util-waiter@3.357.0": + version "3.357.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-waiter/-/util-waiter-3.357.0.tgz#31fdaf289ed60a633178b39e3b258f9b42a1cbe3" + integrity sha512-jQQGA5G8bm0JP5C4U85VzMpkFHdeeT7fOSUncXLG9Sh8Ambzi4XTud8m5/dA7aNJkvPwZeIF9QdgWCOzpkp1xA== + dependencies: + "@aws-sdk/abort-controller" "3.357.0" + "@aws-sdk/types" "3.357.0" + tslib "^2.5.0" + +"@aws-sdk/xml-builder@3.310.0": + version "3.310.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/xml-builder/-/xml-builder-3.310.0.tgz#f0236f2103b438d16117e0939a6305ad69b7ff76" + integrity sha512-TqELu4mOuSIKQCqj63fGVs86Yh+vBx5nHRpWKNUNhB2nPTpfbziTs5c1X358be3peVWA4wPxW7Nt53KIg1tnNw== + dependencies: + tslib "^2.5.0" + +"@babel/code-frame@^7.0.0": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.22.5.tgz#234d98e1551960604f1246e6475891a570ad5658" + integrity sha512-Xmwn266vad+6DAqEB2A6V/CcZVp62BbwVmcOJc2RPuwih1kw02TjQvWVWlcKGbBPd+8/0V5DEkOcizRGYsspYQ== + dependencies: + "@babel/highlight" "^7.22.5" + +"@babel/helper-module-imports@^7.16.7": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.22.5.tgz#1a8f4c9f4027d23f520bd76b364d44434a72660c" + integrity sha512-8Dl6+HD/cKifutF5qGd/8ZJi84QeAKh+CEe1sBzz8UayBBGg1dAIJrdHOcOM5b2MpzWL2yuotJTtGjETq0qjXg== + dependencies: + "@babel/types" "^7.22.5" + +"@babel/helper-string-parser@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz#533f36457a25814cf1df6488523ad547d784a99f" + integrity sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw== + +"@babel/helper-validator-identifier@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.5.tgz#9544ef6a33999343c8740fa51350f30eeaaaf193" + integrity sha512-aJXu+6lErq8ltp+JhkJUfk1MTGyuA4v7f3pA+BJ5HLfNC6nAQ0Cpi9uOquUj8Hehg0aUiHzWQbOVJGao6ztBAQ== + +"@babel/highlight@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.22.5.tgz#aa6c05c5407a67ebce408162b7ede789b4d22031" + integrity sha512-BSKlD1hgnedS5XRnGOljZawtag7H1yPfQp0tdNJCHoH6AZ+Pcm9VvkrK59/Yy593Ypg0zMxH2BxD1VPYUQ7UIw== + dependencies: + "@babel/helper-validator-identifier" "^7.22.5" + chalk "^2.0.0" + js-tokens "^4.0.0" + +"@babel/runtime@^7.1.2", "@babel/runtime@^7.12.0", "@babel/runtime@^7.12.13", "@babel/runtime@^7.12.5", "@babel/runtime@^7.14.5", "@babel/runtime@^7.18.3", "@babel/runtime@^7.19.0", "@babel/runtime@^7.20.6", "@babel/runtime@^7.21.0", "@babel/runtime@^7.5.5", "@babel/runtime@^7.8.7": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.22.5.tgz#8564dd588182ce0047d55d7a75e93921107b57ec" + integrity sha512-ecjvYlnAaZ/KVneE/OdKYBYfgXV3Ptu6zQWmgEF7vwKhQnvVS6bjMD2XYgj+SNvQ1GfK/pjgokfPkC/2CO8CuA== + dependencies: + regenerator-runtime "^0.13.11" + +"@babel/types@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.22.5.tgz#cd93eeaab025880a3a47ec881f4b096a5b786fbe" + integrity sha512-zo3MIHGOkPOfoRXitsgHLjEXmlDaD/5KU1Uzuc9GNiZPhSqVxVRtxuPaSBZDsYZ9qV88AjtMtWW7ww98loJ9KA== + dependencies: + "@babel/helper-string-parser" "^7.22.5" + "@babel/helper-validator-identifier" "^7.22.5" + to-fast-properties "^2.0.0" + +"@bcherny/json-schema-ref-parser@9.0.9": + version "9.0.9" + resolved "https://registry.yarnpkg.com/@bcherny/json-schema-ref-parser/-/json-schema-ref-parser-9.0.9.tgz#09899d405bc708c0acac0066ae8db5b94d465ca4" + integrity sha512-vmEmnJCfpkLdas++9OYg6riIezTYqTHpqUTODJzHLzs5UnXujbOJW9VwcVCnyo1mVRt32FRr23iXBx/sX8YbeQ== + dependencies: + "@jsdevtools/ono" "^7.1.3" + "@types/json-schema" "^7.0.6" + call-me-maybe "^1.0.1" + js-yaml "^4.1.0" + +"@csstools/postcss-cascade-layers@^1.1.1": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@csstools/postcss-cascade-layers/-/postcss-cascade-layers-1.1.1.tgz#8a997edf97d34071dd2e37ea6022447dd9e795ad" + integrity sha512-+KdYrpKC5TgomQr2DlZF4lDEpHcoxnj5IGddYYfBWJAKfj1JtuHUIqMa+E1pJJ+z3kvDViWMqyqPlG4Ja7amQA== + dependencies: + "@csstools/selector-specificity" "^2.0.2" + postcss-selector-parser "^6.0.10" + +"@csstools/postcss-color-function@^1.1.1": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@csstools/postcss-color-function/-/postcss-color-function-1.1.1.tgz#2bd36ab34f82d0497cfacdc9b18d34b5e6f64b6b" + integrity sha512-Bc0f62WmHdtRDjf5f3e2STwRAl89N2CLb+9iAwzrv4L2hncrbDwnQD9PCq0gtAt7pOI2leIV08HIBUd4jxD8cw== + dependencies: + "@csstools/postcss-progressive-custom-properties" "^1.1.0" + postcss-value-parser "^4.2.0" + +"@csstools/postcss-font-format-keywords@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@csstools/postcss-font-format-keywords/-/postcss-font-format-keywords-1.0.1.tgz#677b34e9e88ae997a67283311657973150e8b16a" + integrity sha512-ZgrlzuUAjXIOc2JueK0X5sZDjCtgimVp/O5CEqTcs5ShWBa6smhWYbS0x5cVc/+rycTDbjjzoP0KTDnUneZGOg== + dependencies: + postcss-value-parser "^4.2.0" + +"@csstools/postcss-hwb-function@^1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@csstools/postcss-hwb-function/-/postcss-hwb-function-1.0.2.tgz#ab54a9fce0ac102c754854769962f2422ae8aa8b" + integrity sha512-YHdEru4o3Rsbjmu6vHy4UKOXZD+Rn2zmkAmLRfPet6+Jz4Ojw8cbWxe1n42VaXQhD3CQUXXTooIy8OkVbUcL+w== + dependencies: + postcss-value-parser "^4.2.0" + +"@csstools/postcss-ic-unit@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@csstools/postcss-ic-unit/-/postcss-ic-unit-1.0.1.tgz#28237d812a124d1a16a5acc5c3832b040b303e58" + integrity sha512-Ot1rcwRAaRHNKC9tAqoqNZhjdYBzKk1POgWfhN4uCOE47ebGcLRqXjKkApVDpjifL6u2/55ekkpnFcp+s/OZUw== + dependencies: + "@csstools/postcss-progressive-custom-properties" "^1.1.0" + postcss-value-parser "^4.2.0" + +"@csstools/postcss-is-pseudo-class@^2.0.7": + version "2.0.7" + resolved "https://registry.yarnpkg.com/@csstools/postcss-is-pseudo-class/-/postcss-is-pseudo-class-2.0.7.tgz#846ae6c0d5a1eaa878fce352c544f9c295509cd1" + integrity sha512-7JPeVVZHd+jxYdULl87lvjgvWldYu+Bc62s9vD/ED6/QTGjy0jy0US/f6BG53sVMTBJ1lzKZFpYmofBN9eaRiA== + dependencies: + "@csstools/selector-specificity" "^2.0.0" + postcss-selector-parser "^6.0.10" + +"@csstools/postcss-nested-calc@^1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@csstools/postcss-nested-calc/-/postcss-nested-calc-1.0.0.tgz#d7e9d1d0d3d15cf5ac891b16028af2a1044d0c26" + integrity sha512-JCsQsw1wjYwv1bJmgjKSoZNvf7R6+wuHDAbi5f/7MbFhl2d/+v+TvBTU4BJH3G1X1H87dHl0mh6TfYogbT/dJQ== + dependencies: + postcss-value-parser "^4.2.0" + +"@csstools/postcss-normalize-display-values@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@csstools/postcss-normalize-display-values/-/postcss-normalize-display-values-1.0.1.tgz#15da54a36e867b3ac5163ee12c1d7f82d4d612c3" + integrity sha512-jcOanIbv55OFKQ3sYeFD/T0Ti7AMXc9nM1hZWu8m/2722gOTxFg7xYu4RDLJLeZmPUVQlGzo4jhzvTUq3x4ZUw== + dependencies: + postcss-value-parser "^4.2.0" + +"@csstools/postcss-oklab-function@^1.1.1": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@csstools/postcss-oklab-function/-/postcss-oklab-function-1.1.1.tgz#88cee0fbc8d6df27079ebd2fa016ee261eecf844" + integrity sha512-nJpJgsdA3dA9y5pgyb/UfEzE7W5Ka7u0CX0/HIMVBNWzWemdcTH3XwANECU6anWv/ao4vVNLTMxhiPNZsTK6iA== + dependencies: + "@csstools/postcss-progressive-custom-properties" "^1.1.0" + postcss-value-parser "^4.2.0" + +"@csstools/postcss-progressive-custom-properties@^1.1.0", "@csstools/postcss-progressive-custom-properties@^1.3.0": + version "1.3.0" + resolved "https://registry.yarnpkg.com/@csstools/postcss-progressive-custom-properties/-/postcss-progressive-custom-properties-1.3.0.tgz#542292558384361776b45c85226b9a3a34f276fa" + integrity sha512-ASA9W1aIy5ygskZYuWams4BzafD12ULvSypmaLJT2jvQ8G0M3I8PRQhC0h7mG0Z3LI05+agZjqSR9+K9yaQQjA== + dependencies: + postcss-value-parser "^4.2.0" + +"@csstools/postcss-stepped-value-functions@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@csstools/postcss-stepped-value-functions/-/postcss-stepped-value-functions-1.0.1.tgz#f8772c3681cc2befed695e2b0b1d68e22f08c4f4" + integrity sha512-dz0LNoo3ijpTOQqEJLY8nyaapl6umbmDcgj4AD0lgVQ572b2eqA1iGZYTTWhrcrHztWDDRAX2DGYyw2VBjvCvQ== + dependencies: + postcss-value-parser "^4.2.0" + +"@csstools/postcss-text-decoration-shorthand@^1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@csstools/postcss-text-decoration-shorthand/-/postcss-text-decoration-shorthand-1.0.0.tgz#ea96cfbc87d921eca914d3ad29340d9bcc4c953f" + integrity sha512-c1XwKJ2eMIWrzQenN0XbcfzckOLLJiczqy+YvfGmzoVXd7pT9FfObiSEfzs84bpE/VqfpEuAZ9tCRbZkZxxbdw== + dependencies: + postcss-value-parser "^4.2.0" + +"@csstools/postcss-trigonometric-functions@^1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@csstools/postcss-trigonometric-functions/-/postcss-trigonometric-functions-1.0.2.tgz#94d3e4774c36d35dcdc88ce091336cb770d32756" + integrity sha512-woKaLO///4bb+zZC2s80l+7cm07M7268MsyG3M0ActXXEFi6SuhvriQYcb58iiKGbjwwIU7n45iRLEHypB47Og== + dependencies: + postcss-value-parser "^4.2.0" + +"@csstools/postcss-unset-value@^1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@csstools/postcss-unset-value/-/postcss-unset-value-1.0.2.tgz#c99bb70e2cdc7312948d1eb41df2412330b81f77" + integrity sha512-c8J4roPBILnelAsdLr4XOAR/GsTm0GJi4XpcfvoWk3U6KiTCqiFYc63KhRMQQX35jYMp4Ao8Ij9+IZRgMfJp1g== + +"@csstools/selector-specificity@^2.0.0", "@csstools/selector-specificity@^2.0.2": + version "2.2.0" + resolved "https://registry.yarnpkg.com/@csstools/selector-specificity/-/selector-specificity-2.2.0.tgz#2cbcf822bf3764c9658c4d2e568bd0c0cb748016" + integrity sha512-+OJ9konv95ClSTOJCmMZqpd5+YGsB2S+x6w3E1oaM8UuR5j8nTNHYSz8c9BEPGDOCMQYIEEGlVPj/VY64iTbGw== + +"@date-io/core@^2.16.0": + version "2.16.0" + resolved "https://registry.yarnpkg.com/@date-io/core/-/core-2.16.0.tgz#7871bfc1d9bca9aa35ad444a239505589d0f22f6" + integrity sha512-DYmSzkr+jToahwWrsiRA2/pzMEtz9Bq1euJwoOuYwuwIYXnZFtHajY2E6a1VNVDc9jP8YUXK1BvnZH9mmT19Zg== + +"@date-io/date-fns@^2.16.0": + version "2.16.0" + resolved "https://registry.yarnpkg.com/@date-io/date-fns/-/date-fns-2.16.0.tgz#bd5e09b6ecb47ee55e593fc3a87e7b2caaa3da40" + integrity sha512-bfm5FJjucqlrnQcXDVU5RD+nlGmL3iWgkHTq3uAZWVIuBu6dDmGa3m8a6zo2VQQpu8ambq9H22UyUpn7590joA== + dependencies: + "@date-io/core" "^2.16.0" + +"@discoveryjs/json-ext@0.5.7", "@discoveryjs/json-ext@^0.5.0": + version "0.5.7" + resolved "https://registry.yarnpkg.com/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz#1d572bfbbe14b7704e0ba0f39b74815b84870d70" + integrity sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw== + +"@dnd-kit/accessibility@^3.0.0": + version "3.0.1" + resolved "https://registry.yarnpkg.com/@dnd-kit/accessibility/-/accessibility-3.0.1.tgz#3ccbefdfca595b0a23a5dc57d3de96bc6935641c" + integrity sha512-HXRrwS9YUYQO9lFRc/49uO/VICbM+O+ZRpFDe9Pd1rwVv2PCNkRiTZRdxrDgng/UkvdC3Re9r2vwPpXXrWeFzg== + dependencies: + tslib "^2.0.0" + +"@dnd-kit/core@^6.0.7": + version "6.0.8" + resolved "https://registry.yarnpkg.com/@dnd-kit/core/-/core-6.0.8.tgz#040ae13fea9787ee078e5f0361f3b49b07f3f005" + integrity sha512-lYaoP8yHTQSLlZe6Rr9qogouGUz9oRUj4AHhDQGQzq/hqaJRpFo65X+JKsdHf8oUFBzx5A+SJPUvxAwTF2OabA== + dependencies: + "@dnd-kit/accessibility" "^3.0.0" + "@dnd-kit/utilities" "^3.2.1" + tslib "^2.0.0" + +"@dnd-kit/sortable@^7.0.2": + version "7.0.2" + resolved "https://registry.yarnpkg.com/@dnd-kit/sortable/-/sortable-7.0.2.tgz#791d550872457f3f3c843e00d159b640f982011c" + integrity sha512-wDkBHHf9iCi1veM834Gbk1429bd4lHX4RpAwT0y2cHLf246GAvU2sVw/oxWNpPKQNQRQaeGXhAVgrOl1IT+iyA== + dependencies: + "@dnd-kit/utilities" "^3.2.0" + tslib "^2.0.0" + +"@dnd-kit/utilities@^3.2.0", "@dnd-kit/utilities@^3.2.1": + version "3.2.1" + resolved "https://registry.yarnpkg.com/@dnd-kit/utilities/-/utilities-3.2.1.tgz#53f9e2016fd2506ec49e404c289392cfff30332a" + integrity sha512-OOXqISfvBw/1REtkSK2N3Fi2EQiLMlWUlqnOK/UpOISqBZPWpE6TqL+jcPtMOkE8TqYGiURvRdPSI9hltNUjEA== + dependencies: + tslib "^2.0.0" + +"@emotion/babel-plugin@^11.11.0": + version "11.11.0" + resolved "https://registry.yarnpkg.com/@emotion/babel-plugin/-/babel-plugin-11.11.0.tgz#c2d872b6a7767a9d176d007f5b31f7d504bb5d6c" + integrity sha512-m4HEDZleaaCH+XgDDsPF15Ht6wTLsgDTeR3WYj9Q/k76JtWhrJjcP4+/XlG8LGT/Rol9qUfOIztXeA84ATpqPQ== + dependencies: + "@babel/helper-module-imports" "^7.16.7" + "@babel/runtime" "^7.18.3" + "@emotion/hash" "^0.9.1" + "@emotion/memoize" "^0.8.1" + "@emotion/serialize" "^1.1.2" + babel-plugin-macros "^3.1.0" + convert-source-map "^1.5.0" + escape-string-regexp "^4.0.0" + find-root "^1.1.0" + source-map "^0.5.7" + stylis "4.2.0" + +"@emotion/cache@^11.11.0", "@emotion/cache@^11.4.0": + version "11.11.0" + resolved "https://registry.yarnpkg.com/@emotion/cache/-/cache-11.11.0.tgz#809b33ee6b1cb1a625fef7a45bc568ccd9b8f3ff" + integrity sha512-P34z9ssTCBi3e9EI1ZsWpNHcfY1r09ZO0rZbRO2ob3ZQMnFI35jB536qoXbkdesr5EUhYi22anuEJuyxifaqAQ== + 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/css@^11.10.5": + version "11.11.2" + resolved "https://registry.yarnpkg.com/@emotion/css/-/css-11.11.2.tgz#e5fa081d0c6e335352e1bc2b05953b61832dca5a" + integrity sha512-VJxe1ucoMYMS7DkiMdC2T7PWNbrEI0a39YRiyDvK2qq4lXwjRbVP/z4lpG+odCsRzadlR+1ywwrTzhdm5HNdew== + dependencies: + "@emotion/babel-plugin" "^11.11.0" + "@emotion/cache" "^11.11.0" + "@emotion/serialize" "^1.1.2" + "@emotion/sheet" "^1.2.2" + "@emotion/utils" "^1.2.1" + +"@emotion/hash@^0.9.1": + version "0.9.1" + resolved "https://registry.yarnpkg.com/@emotion/hash/-/hash-0.9.1.tgz#4ffb0055f7ef676ebc3a5a91fb621393294e2f43" + integrity sha512-gJB6HLm5rYwSLI6PQa+X1t5CFGrv1J1TWG+sOyMCeKz2ojaj6Fnl/rZEspogG+cvqbt4AE/2eIyD2QfLKTBNlQ== + +"@emotion/memoize@^0.8.1": + version "0.8.1" + resolved "https://registry.yarnpkg.com/@emotion/memoize/-/memoize-0.8.1.tgz#c1ddb040429c6d21d38cc945fe75c818cfb68e17" + integrity sha512-W2P2c/VRW1/1tLox0mVUalvnWXxavmv/Oum2aPsRcoDJuob75FC3Y8FbpfLwUegRcxINtGUMPq0tFCvYNTBXNA== + +"@emotion/react@^11.8.1": + version "11.11.1" + resolved "https://registry.yarnpkg.com/@emotion/react/-/react-11.11.1.tgz#b2c36afac95b184f73b08da8c214fdf861fa4157" + integrity sha512-5mlW1DquU5HaxjLkfkGN1GA/fvVGdyHURRiX/0FHl2cfIfRxSOfmxEH5YS43edp0OldZrZ+dkBKbngxcNCdZvA== + dependencies: + "@babel/runtime" "^7.18.3" + "@emotion/babel-plugin" "^11.11.0" + "@emotion/cache" "^11.11.0" + "@emotion/serialize" "^1.1.2" + "@emotion/use-insertion-effect-with-fallbacks" "^1.0.1" + "@emotion/utils" "^1.2.1" + "@emotion/weak-memoize" "^0.3.1" + hoist-non-react-statics "^3.3.1" + +"@emotion/serialize@^1.1.2": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@emotion/serialize/-/serialize-1.1.2.tgz#017a6e4c9b8a803bd576ff3d52a0ea6fa5a62b51" + integrity sha512-zR6a/fkFP4EAcCMQtLOhIgpprZOwNmCldtpaISpvz348+DP4Mz8ZoKaGGCQpbzepNIUWbq4w6hNZkwDyKoS+HA== + dependencies: + "@emotion/hash" "^0.9.1" + "@emotion/memoize" "^0.8.1" + "@emotion/unitless" "^0.8.1" + "@emotion/utils" "^1.2.1" + csstype "^3.0.2" + +"@emotion/sheet@^1.2.2": + version "1.2.2" + resolved "https://registry.yarnpkg.com/@emotion/sheet/-/sheet-1.2.2.tgz#d58e788ee27267a14342303e1abb3d508b6d0fec" + integrity sha512-0QBtGvaqtWi+nx6doRwDdBIzhNdZrXUppvTM4dtZZWEGTXL/XE/yJxLMGlDT1Gt+UHH5IX1n+jkXyytE/av7OA== + +"@emotion/unitless@^0.8.1": + version "0.8.1" + resolved "https://registry.yarnpkg.com/@emotion/unitless/-/unitless-0.8.1.tgz#182b5a4704ef8ad91bde93f7a860a88fd92c79a3" + integrity sha512-KOEGMu6dmJZtpadb476IsZBclKvILjopjUii3V+7MnXIQCYh8W3NgNcgwo21n9LXZX6EDIKvqfjYxXebDwxKmQ== + +"@emotion/use-insertion-effect-with-fallbacks@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@emotion/use-insertion-effect-with-fallbacks/-/use-insertion-effect-with-fallbacks-1.0.1.tgz#08de79f54eb3406f9daaf77c76e35313da963963" + integrity sha512-jT/qyKZ9rzLErtrjGgdkMBn2OP8wl0G3sQlBb3YPryvKHsjvINUhVaPFfP+fpBcOkmrVOVEEHQFJ7nbj2TH2gw== + +"@emotion/utils@^1.2.1": + version "1.2.1" + resolved "https://registry.yarnpkg.com/@emotion/utils/-/utils-1.2.1.tgz#bbab58465738d31ae4cb3dbb6fc00a5991f755e4" + integrity sha512-Y2tGf3I+XVnajdItskUCn6LX+VUDmP6lTL4fcqsXAv43dnlbZiuW4MWQW38rW/BVWSE7Q/7+XQocmpnRYILUmg== + +"@emotion/weak-memoize@^0.3.1": + version "0.3.1" + resolved "https://registry.yarnpkg.com/@emotion/weak-memoize/-/weak-memoize-0.3.1.tgz#d0fce5d07b0620caa282b5131c297bb60f9d87e6" + integrity sha512-EsBwpc7hBUJWAsNPBmJy4hxWx12v6bshQsldrVmjxJoc3isbxhOrF2IcCpaXxfvq03NwkI7sbsOLXbYuqF/8Ww== + +"@faceless-ui/modal@^2.0.1": + version "2.0.1" + resolved "https://registry.yarnpkg.com/@faceless-ui/modal/-/modal-2.0.1.tgz#8a47299442eff450c09432cfaef35c5471becad6" + integrity sha512-z1PaaLxwuX+1In4vhUxODZndGKdCY+WIqzvtnas3CaYGGCVJBSJ4jfv9UEEGZzcahmSy+71bEL89cUT6d36j1Q== + dependencies: + body-scroll-lock "^3.1.5" + focus-trap "^6.9.2" + qs "^6.9.1" + react-transition-group "^4.4.2" + +"@faceless-ui/scroll-info@^1.3.0": + version "1.3.0" + resolved "https://registry.yarnpkg.com/@faceless-ui/scroll-info/-/scroll-info-1.3.0.tgz#4d9f76afa4c004018697424f77f8bc362ccaae08" + integrity sha512-X+doJMzQqyVGpwV/YgXUAalNWepP2W8ThgZspKZLFG43zTYLVTU17BYCjjY+ggKuA3b0W3JyXZ2M8f247AdmHw== + +"@faceless-ui/window-info@^2.1.1": + version "2.1.1" + resolved "https://registry.yarnpkg.com/@faceless-ui/window-info/-/window-info-2.1.1.tgz#ed1474a60ab794295bca4c29e295b1e11a584d22" + integrity sha512-gMAgda7beR4CNpBIXjgRVn97ek0LG3PAj9lxmoYdg574IEzLFZAh3eAYtTaS2XLKgb4+IHhsuBzlGmHbeOo2Aw== + +"@floating-ui/core@^1.3.1": + version "1.3.1" + resolved "https://registry.yarnpkg.com/@floating-ui/core/-/core-1.3.1.tgz#4d795b649cc3b1cbb760d191c80dcb4353c9a366" + integrity sha512-Bu+AMaXNjrpjh41znzHqaz3r2Nr8hHuHZT6V2LBKMhyMl0FgKA62PNYbqnfgmzOhoWZj70Zecisbo4H1rotP5g== + +"@floating-ui/dom@^1.0.1": + version "1.4.2" + resolved "https://registry.yarnpkg.com/@floating-ui/dom/-/dom-1.4.2.tgz#eb3a37f7506c4f95ef735967dc3496b5012e11cb" + integrity sha512-VKmvHVatWnewmGGy+7Mdy4cTJX71Pli6v/Wjb5RQBuq5wjUYx+Ef+kRThi8qggZqDgD8CogCpqhRoVp3+yQk+g== + dependencies: + "@floating-ui/core" "^1.3.1" + +"@hapi/hoek@^9.0.0": + version "9.3.0" + resolved "https://registry.yarnpkg.com/@hapi/hoek/-/hoek-9.3.0.tgz#8368869dcb735be2e7f5cb7647de78e167a251fb" + integrity sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ== + +"@hapi/topo@^5.0.0": + version "5.1.0" + resolved "https://registry.yarnpkg.com/@hapi/topo/-/topo-5.1.0.tgz#dc448e332c6c6e37a4dc02fd84ba8d44b9afb012" + integrity sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg== + dependencies: + "@hapi/hoek" "^9.0.0" + +"@jest/schemas@^29.4.3": + version "29.4.3" + resolved "https://registry.yarnpkg.com/@jest/schemas/-/schemas-29.4.3.tgz#39cf1b8469afc40b6f5a2baaa146e332c4151788" + integrity sha512-VLYKXQmtmuEz6IxJsrZwzG9NvtkQsWNnWMsKxqWNu3+CnfzJQhp0WDDKWLVV9hLKr0l3SLLFRqcYHjhtyuDVxg== + dependencies: + "@sinclair/typebox" "^0.25.16" + +"@jest/types@^29.5.0": + version "29.5.0" + resolved "https://registry.yarnpkg.com/@jest/types/-/types-29.5.0.tgz#f59ef9b031ced83047c67032700d8c807d6e1593" + integrity sha512-qbu7kN6czmVRc3xWFQcAN03RAUamgppVUdXrvl1Wr3jlNF93o9mJbGcDWrwGB6ht44u7efB1qCFgVQmca24Uog== + dependencies: + "@jest/schemas" "^29.4.3" + "@types/istanbul-lib-coverage" "^2.0.0" + "@types/istanbul-reports" "^3.0.0" + "@types/node" "*" + "@types/yargs" "^17.0.8" + chalk "^4.0.0" + +"@jridgewell/gen-mapping@^0.3.0": + version "0.3.3" + resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz#7e02e6eb5df901aaedb08514203b096614024098" + integrity sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ== + dependencies: + "@jridgewell/set-array" "^1.0.1" + "@jridgewell/sourcemap-codec" "^1.4.10" + "@jridgewell/trace-mapping" "^0.3.9" + +"@jridgewell/resolve-uri@3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz#2203b118c157721addfe69d47b70465463066d78" + integrity sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w== + +"@jridgewell/set-array@^1.0.1": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.1.2.tgz#7c6cf998d6d20b914c0a55a91ae928ff25965e72" + integrity sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw== + +"@jridgewell/source-map@^0.3.3": + version "0.3.3" + resolved "https://registry.yarnpkg.com/@jridgewell/source-map/-/source-map-0.3.3.tgz#8108265659d4c33e72ffe14e33d6cc5eb59f2fda" + integrity sha512-b+fsZXeLYi9fEULmfBrhxn4IrPlINf8fiNarzTof004v3lFdntdwa9PF7vFJqm3mg7s+ScJMxXaE3Acp1irZcg== + dependencies: + "@jridgewell/gen-mapping" "^0.3.0" + "@jridgewell/trace-mapping" "^0.3.9" + +"@jridgewell/sourcemap-codec@1.4.14": + version "1.4.14" + resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz#add4c98d341472a289190b424efbdb096991bb24" + integrity sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw== + +"@jridgewell/sourcemap-codec@^1.4.10": + version "1.4.15" + resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz#d7c6e6755c78567a951e04ab52ef0fd26de59f32" + integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg== + +"@jridgewell/trace-mapping@^0.3.17", "@jridgewell/trace-mapping@^0.3.18", "@jridgewell/trace-mapping@^0.3.9": + version "0.3.18" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.18.tgz#25783b2086daf6ff1dcb53c9249ae480e4dd4cd6" + integrity sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA== + dependencies: + "@jridgewell/resolve-uri" "3.1.0" + "@jridgewell/sourcemap-codec" "1.4.14" + +"@jsdevtools/ono@^7.1.3": + version "7.1.3" + resolved "https://registry.yarnpkg.com/@jsdevtools/ono/-/ono-7.1.3.tgz#9df03bbd7c696a5c58885c34aa06da41c8543796" + integrity sha512-4JQNk+3mVzK3xh2rqd6RB4J46qUR19azEHBneZyTZM+c456qOrbbM/5xcR8huNCCcbVt7+UmizG6GuUvPvKUYg== + +"@juggle/resize-observer@^3.4.0": + version "3.4.0" + resolved "https://registry.yarnpkg.com/@juggle/resize-observer/-/resize-observer-3.4.0.tgz#08d6c5e20cf7e4cc02fd181c4b0c225cd31dbb60" + integrity sha512-dfLbk+PwWvFzSxwk3n5ySL0hfBog779o8h68wK/7/APo/7cgyWp5jcXockbxdk5kFRkbeXWm4Fbi9FrdN381sA== + +"@monaco-editor/loader@^1.3.3": + version "1.3.3" + resolved "https://registry.yarnpkg.com/@monaco-editor/loader/-/loader-1.3.3.tgz#7f1742bd3cc21c0362a46a4056317f6e5215cfca" + integrity sha512-6KKF4CTzcJiS8BJwtxtfyYt9shBiEv32ateQ9T4UVogwn4HM/uPo9iJd2Dmbkpz8CM6Y0PDUpjnZzCwC+eYo2Q== + dependencies: + state-local "^1.0.6" + +"@monaco-editor/react@^4.5.1": + version "4.5.1" + resolved "https://registry.yarnpkg.com/@monaco-editor/react/-/react-4.5.1.tgz#fbc76c692aee9a33b9ab24ae0c5f219b8f002fdb" + integrity sha512-NNDFdP+2HojtNhCkRfE6/D6ro6pBNihaOzMbGK84lNWzRu+CfBjwzGt4jmnqimLuqp5yE5viHS2vi+QOAnD5FQ== + dependencies: + "@monaco-editor/loader" "^1.3.3" + +"@payloadcms/plugin-cloud@^0.0.10": + version "0.0.10" + resolved "https://registry.yarnpkg.com/@payloadcms/plugin-cloud/-/plugin-cloud-0.0.10.tgz#410e31db7457681e262be2873efdeb4c704b4293" + integrity sha512-ektfntigEImbLrRQszrB5fHI5AFx7W9hcqEwQ89lCliiV5YJyFDAhHjaqUnKjPWpNaOnhiOMTV84rjHgdds5hA== + dependencies: + "@aws-sdk/client-cognito-identity" "^3.289.0" + "@aws-sdk/client-s3" "^3.142.0" + "@aws-sdk/credential-providers" "^3.289.0" + "@aws-sdk/lib-storage" "^3.267.0" + amazon-cognito-identity-js "^6.1.2" + resend "^0.12.0" + +"@polka/url@^1.0.0-next.20": + version "1.0.0-next.21" + resolved "https://registry.yarnpkg.com/@polka/url/-/url-1.0.0-next.21.tgz#5de5a2385a35309427f6011992b544514d559aa1" + integrity sha512-a5Sab1C4/icpTZVzZc5Ghpz88yQtGOyNqYXcZgOssB2uuAr+wF/MvN6bgtW32q7HHrvBki+BsZ0OuNv6EV3K9g== + +"@popperjs/core@^2.9.2": + version "2.11.8" + resolved "https://registry.yarnpkg.com/@popperjs/core/-/core-2.11.8.tgz#6b79032e760a0899cd4204710beede972a3a185f" + integrity sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A== + +"@react-email/render@0.0.6": + version "0.0.6" + resolved "https://registry.yarnpkg.com/@react-email/render/-/render-0.0.6.tgz#4e47ee6df226c86d548c38f96e34844acb944160" + integrity sha512-6zs7WZbd37TcPT1OmMPH/kcBpv0QSi+k3om7LyDnbdIcrbwOO/OstVwUaa/6zgvDvnq9Y2wOosbru7j5kUrW9A== + dependencies: + html-to-text "9.0.3" + pretty "2.0.0" + react "18.2.0" + react-dom "18.2.0" + +"@selderee/plugin-htmlparser2@^0.10.0": + version "0.10.0" + resolved "https://registry.yarnpkg.com/@selderee/plugin-htmlparser2/-/plugin-htmlparser2-0.10.0.tgz#8a304d18df907e086f3cfc71ea0ced52d6524430" + integrity sha512-gW69MEamZ4wk1OsOq1nG1jcyhXIQcnrsX5JwixVw/9xaiav8TCyjESAruu1Rz9yyInhgBXxkNwMeygKnN2uxNA== + dependencies: + domhandler "^5.0.3" + selderee "^0.10.0" + +"@sideway/address@^4.1.3": + version "4.1.4" + resolved "https://registry.yarnpkg.com/@sideway/address/-/address-4.1.4.tgz#03dccebc6ea47fdc226f7d3d1ad512955d4783f0" + integrity sha512-7vwq+rOHVWjyXxVlR76Agnvhy8I9rpzjosTESvmhNeXOXdZZB15Fl+TI9x1SiHZH5Jv2wTGduSxFDIaq0m3DUw== + dependencies: + "@hapi/hoek" "^9.0.0" + +"@sideway/formula@^3.0.1": + version "3.0.1" + resolved "https://registry.yarnpkg.com/@sideway/formula/-/formula-3.0.1.tgz#80fcbcbaf7ce031e0ef2dd29b1bfc7c3f583611f" + integrity sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg== + +"@sideway/pinpoint@^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@sideway/pinpoint/-/pinpoint-2.0.0.tgz#cff8ffadc372ad29fd3f78277aeb29e632cc70df" + integrity sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ== + +"@sinclair/typebox@^0.25.16": + version "0.25.24" + resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.25.24.tgz#8c7688559979f7079aacaf31aa881c3aa410b718" + integrity sha512-XJfwUVUKDHF5ugKwIcxEgc9k8b7HbznCp6eUfWgu710hMPNIO4aw4/zB5RogDQz8nd6gyCDpU9O/m6qYEWY6yQ== + +"@smithy/protocol-http@^1.0.1": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@smithy/protocol-http/-/protocol-http-1.1.0.tgz#caf22e01cb825d7490a4915e03d6fa64954ff535" + integrity sha512-H5y/kZOqfJSqRkwtcAoVbqONmhdXwSgYNJ1Glk5Ry8qlhVVy5qUzD9EklaCH8/XLnoCsLO/F/Giee8MIvaBRkg== + dependencies: + "@smithy/types" "^1.1.0" + tslib "^2.5.0" + +"@smithy/types@^1.0.0", "@smithy/types@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@smithy/types/-/types-1.1.0.tgz#f30a23202c97634cca5c1ac955a9bf149c955226" + integrity sha512-KzmvisMmuwD2jZXuC9e65JrgsZM97y5NpDU7g347oB+Q+xQLU6hQZ5zFNNbEfwwOJHoOvEVTna+dk1h/lW7alw== + dependencies: + tslib "^2.5.0" + +"@swc/core-darwin-arm64@1.3.66": + version "1.3.66" + resolved "https://registry.yarnpkg.com/@swc/core-darwin-arm64/-/core-darwin-arm64-1.3.66.tgz#b34a396479ca8fc82876d6dfb28c78a51010e6ce" + integrity sha512-UijJsvuLy73vxeVYEy7urIHksXS+3BdvJ9s9AY+bRMSQW483NO7RLp8g4FdTyJbRaN0BH15SQnY0dcjQBkVuHw== + +"@swc/core-darwin-x64@1.3.66": + version "1.3.66" + resolved "https://registry.yarnpkg.com/@swc/core-darwin-x64/-/core-darwin-x64-1.3.66.tgz#b778e434d29652eae6da6ee7ed335605f7cfd866" + integrity sha512-xGsHKvViQnwTNLF30Y/5OqWdnN6RsiyUI8awZXfz1sHcXCEaLe+v+WLQ+/E8sgw0YUkYVHzzfV/sAN2CezJK5Q== + +"@swc/core-linux-arm-gnueabihf@1.3.66": + version "1.3.66" + resolved "https://registry.yarnpkg.com/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.3.66.tgz#a7ab556dc9fc770069fea292ff5551161df83a70" + integrity sha512-gNbLcSIV2pq90BkMSpzvK4xPXOl8GEF3YR4NaqF0CYSzQsVXXTTqMuX/r26xNYudBKzH0345S1MpoRk2qricnA== + +"@swc/core-linux-arm64-gnu@1.3.66": + version "1.3.66" + resolved "https://registry.yarnpkg.com/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.3.66.tgz#00591f5fd0d9f1d1ed565329936451eb6d0d5433" + integrity sha512-cJSQ0oplyWbJqy4rzVcnBYLAi6z1QT3QCcR7iAey0aAmCvfRBZJfXlyjggMjn4iosuadkauwCZR1xYNhBDRn7w== + +"@swc/core-linux-arm64-musl@1.3.66": + version "1.3.66" + resolved "https://registry.yarnpkg.com/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.3.66.tgz#dd8e5e7b1154b5a42a32d57914e0de2cef6686ff" + integrity sha512-GDQZpcB9aGxG9PTA2shdIkoMZlGK5omJ8NR49uoBTtLBVYiGeXAwV0U1Uaw8kXEZj9i7wZDkvjzjSaNH3evRsg== + +"@swc/core-linux-x64-gnu@1.3.66": + version "1.3.66" + resolved "https://registry.yarnpkg.com/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.3.66.tgz#35de4b88e3f256e7923503a8031569c733859b68" + integrity sha512-lg8E4O/Pd9KfK0lajdinVMuGME8dSv7V9arhEpmlfGE2eXSDCWqDn5Htk5QVBstt9lt1lsRhWHJ/YYc2eQY30Q== + +"@swc/core-linux-x64-musl@1.3.66": + version "1.3.66" + resolved "https://registry.yarnpkg.com/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.3.66.tgz#623de62c638a31cda5d44014b981290e3f79f6de" + integrity sha512-lo8ZcAO/zL2pZWH+LZIyge8u2MklaeuT6+FpVVpBFktMVdYXbaVtzpvWbgRFBZHvL3SRDF+u8jxjtkXhvGUpTw== + +"@swc/core-win32-arm64-msvc@1.3.66": + version "1.3.66" + resolved "https://registry.yarnpkg.com/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.3.66.tgz#49a432f43a314666e681a98801d7b2d303e5ef75" + integrity sha512-cQoVwBuJY5WkHbfpCOlndNwYr1ZThatRjQQvKy540NUIeAEk9Fa6ozlDBtU75UdaWKtUG6YQ/bWz+KTemheVxw== + +"@swc/core-win32-ia32-msvc@1.3.66": + version "1.3.66" + resolved "https://registry.yarnpkg.com/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.3.66.tgz#80c8af627b46de67fbac05908025e764194669ad" + integrity sha512-y/FrAIINK4UBeUQQknGlWXEyjo+MBvjF7WkUf2KP7sNr9EHHy8+dXohAGd5Anz0eJrqOM1ZXR/GEjxRp7bGQ1Q== + +"@swc/core-win32-x64-msvc@1.3.66": + version "1.3.66" + resolved "https://registry.yarnpkg.com/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.3.66.tgz#7984da6bf1f1a5410c2e6514dc2814abb2e6c91a" + integrity sha512-yI64ACzS14qFLrfyO12qW+f/UROTotzDeEbuyJAaPD2IZexoT1cICznI3sBmIfrSt33mVuW8eF5m3AG/NUImzw== + +"@swc/core@^1.3.26": + version "1.3.66" + resolved "https://registry.yarnpkg.com/@swc/core/-/core-1.3.66.tgz#d07e4c9cd49205881171ee1ffd04f824ecea2f25" + integrity sha512-Hpf91kH5ly7fHkWnApwryTQryT+TO4kMMPH3WyciUSQOWLE3UuQz1PtETHQQk7PZ/b1QF0qQurJrgfBr5bSKUA== + optionalDependencies: + "@swc/core-darwin-arm64" "1.3.66" + "@swc/core-darwin-x64" "1.3.66" + "@swc/core-linux-arm-gnueabihf" "1.3.66" + "@swc/core-linux-arm64-gnu" "1.3.66" + "@swc/core-linux-arm64-musl" "1.3.66" + "@swc/core-linux-x64-gnu" "1.3.66" + "@swc/core-linux-x64-musl" "1.3.66" + "@swc/core-win32-arm64-msvc" "1.3.66" + "@swc/core-win32-ia32-msvc" "1.3.66" + "@swc/core-win32-x64-msvc" "1.3.66" + +"@swc/register@^0.1.10": + version "0.1.10" + resolved "https://registry.yarnpkg.com/@swc/register/-/register-0.1.10.tgz#74a20b7559669e03479b05e9e5c6d1524d4d92a2" + integrity sha512-6STwH/q4dc3pitXLVkV7sP0Hiy+zBsU2wOF1aXpXR95pnH3RYHKIsDC+gvesfyB7jxNT9OOZgcqOp9RPxVTx9A== + dependencies: + lodash.clonedeep "^4.5.0" + pirates "^4.0.1" + source-map-support "^0.5.13" + +"@tokenizer/token@^0.3.0": + version "0.3.0" + resolved "https://registry.yarnpkg.com/@tokenizer/token/-/token-0.3.0.tgz#fe98a93fe789247e998c75e74e9c7c63217aa276" + integrity sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A== + +"@trysound/sax@0.2.0": + version "0.2.0" + resolved "https://registry.yarnpkg.com/@trysound/sax/-/sax-0.2.0.tgz#cccaab758af56761eb7bf37af6f03f326dd798ad" + integrity sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA== + +"@types/body-parser@*": + version "1.19.2" + resolved "https://registry.yarnpkg.com/@types/body-parser/-/body-parser-1.19.2.tgz#aea2059e28b7658639081347ac4fab3de166e6f0" + integrity sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g== + dependencies: + "@types/connect" "*" + "@types/node" "*" + +"@types/connect@*": + version "3.4.35" + resolved "https://registry.yarnpkg.com/@types/connect/-/connect-3.4.35.tgz#5fcf6ae445e4021d1fc2219a4873cc73a3bb2ad1" + integrity sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ== + dependencies: + "@types/node" "*" + +"@types/eslint-scope@^3.7.3": + version "3.7.4" + resolved "https://registry.yarnpkg.com/@types/eslint-scope/-/eslint-scope-3.7.4.tgz#37fc1223f0786c39627068a12e94d6e6fc61de16" + integrity sha512-9K4zoImiZc3HlIp6AVUDE4CWYx22a+lhSZMYNpbjW04+YF0KWj4pJXnEMjdnFTiQibFFmElcsasJXDbdI/EPhA== + dependencies: + "@types/eslint" "*" + "@types/estree" "*" + +"@types/eslint@*": + version "8.40.2" + resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-8.40.2.tgz#2833bc112d809677864a4b0e7d1de4f04d7dac2d" + integrity sha512-PRVjQ4Eh9z9pmmtaq8nTjZjQwKFk7YIHIud3lRoKRBgUQjgjRmoGxxGEPXQkF+lH7QkHJRNr5F4aBgYCW0lqpQ== + dependencies: + "@types/estree" "*" + "@types/json-schema" "*" + +"@types/estree@*", "@types/estree@^1.0.0": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.1.tgz#aa22750962f3bf0e79d753d3cc067f010c95f194" + integrity sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA== + +"@types/express-serve-static-core@^4.17.33": + version "4.17.35" + resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.17.35.tgz#c95dd4424f0d32e525d23812aa8ab8e4d3906c4f" + integrity sha512-wALWQwrgiB2AWTT91CB62b6Yt0sNHpznUXeZEcnPU3DRdlDIz74x8Qg1UUYKSVFi+va5vKOLYRBI1bRKiLLKIg== + dependencies: + "@types/node" "*" + "@types/qs" "*" + "@types/range-parser" "*" + "@types/send" "*" + +"@types/express@^4.17.9": + version "4.17.17" + resolved "https://registry.yarnpkg.com/@types/express/-/express-4.17.17.tgz#01d5437f6ef9cfa8668e616e13c2f2ac9a491ae4" + integrity sha512-Q4FmmuLGBG58btUnfS1c1r/NQdlp3DMfGDGig8WhfpA2YRUtEkxAjkZb0yvplJGYdF1fsQ81iMDcH24sSCNC/Q== + dependencies: + "@types/body-parser" "*" + "@types/express-serve-static-core" "^4.17.33" + "@types/qs" "*" + "@types/serve-static" "*" + +"@types/glob@^7.1.3": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@types/glob/-/glob-7.2.0.tgz#bc1b5bf3aa92f25bd5dd39f35c57361bdce5b2eb" + integrity sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA== + dependencies: + "@types/minimatch" "*" + "@types/node" "*" + +"@types/html-minifier-terser@^6.0.0": + version "6.1.0" + resolved "https://registry.yarnpkg.com/@types/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz#4fc33a00c1d0c16987b1a20cf92d20614c55ac35" + integrity sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg== + +"@types/http-errors@*": + version "2.0.1" + resolved "https://registry.yarnpkg.com/@types/http-errors/-/http-errors-2.0.1.tgz#20172f9578b225f6c7da63446f56d4ce108d5a65" + integrity sha512-/K3ds8TRAfBvi5vfjuz8y6+GiAYBZ0x4tXv1Av6CWBWn0IlADc+ZX9pMq7oU0fNQPnBwIZl3rmeLp6SBApbxSQ== + +"@types/is-hotkey@^0.1.1": + version "0.1.7" + resolved "https://registry.yarnpkg.com/@types/is-hotkey/-/is-hotkey-0.1.7.tgz#30ec6d4234895230b576728ef77e70a52962f3b3" + integrity sha512-yB5C7zcOM7idwYZZ1wKQ3pTfjA9BbvFqRWvKB46GFddxnJtHwi/b9y84ykQtxQPg5qhdpg4Q/kWU3EGoCTmLzQ== + +"@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0": + version "2.0.4" + resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz#8467d4b3c087805d63580480890791277ce35c44" + integrity sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g== + +"@types/istanbul-lib-report@*": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz#c14c24f18ea8190c118ee7562b7ff99a36552686" + integrity sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg== + dependencies: + "@types/istanbul-lib-coverage" "*" + +"@types/istanbul-reports@^3.0.0": + version "3.0.1" + resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz#9153fe98bba2bd565a63add9436d6f0d7f8468ff" + integrity sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw== + dependencies: + "@types/istanbul-lib-report" "*" + +"@types/json-schema@*", "@types/json-schema@^7.0.11", "@types/json-schema@^7.0.6", "@types/json-schema@^7.0.8", "@types/json-schema@^7.0.9": + version "7.0.12" + resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.12.tgz#d70faba7039d5fca54c83c7dbab41051d2b6f6cb" + integrity sha512-Hr5Jfhc9eYOQNPYO5WLDq/n4jqijdHNlDXjuAQkkt+mWdQR+XJToOHrsD4cPaMXpn6KO7y2+wM8AZEs8VpBLVA== + +"@types/lodash@^4.14.149", "@types/lodash@^4.14.182": + version "4.14.195" + resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.195.tgz#bafc975b252eb6cea78882ce8a7b6bf22a6de632" + integrity sha512-Hwx9EUgdwf2GLarOjQp5ZH8ZmblzcbTBC2wtQWNKARBSxM9ezRIAUpeDTgoQRAFB0+8CNWXVA9+MaSOzOF3nPg== + +"@types/mime@*": + version "3.0.1" + resolved "https://registry.yarnpkg.com/@types/mime/-/mime-3.0.1.tgz#5f8f2bca0a5863cb69bc0b0acd88c96cb1d4ae10" + integrity sha512-Y4XFY5VJAuw0FgAqPNd6NNoV44jbq9Bz2L7Rh/J6jLTiHBSBJa9fxqQIvkIld4GsoDOcCbvzOUAbLPsSKKg+uA== + +"@types/mime@^1": + version "1.3.2" + resolved "https://registry.yarnpkg.com/@types/mime/-/mime-1.3.2.tgz#93e25bf9ee75fe0fd80b594bc4feb0e862111b5a" + integrity sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw== + +"@types/minimatch@*": + version "5.1.2" + resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-5.1.2.tgz#07508b45797cb81ec3f273011b054cd0755eddca" + integrity sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA== + +"@types/node@*": + version "20.3.2" + resolved "https://registry.yarnpkg.com/@types/node/-/node-20.3.2.tgz#fa6a90f2600e052a03c18b8cb3fd83dd4e599898" + integrity sha512-vOBLVQeCQfIcF/2Y7eKFTqrMnizK5lRNQ7ykML/5RuwVXVWxYkgwS7xbt4B6fKCUPgbSL5FSsjHQpaGQP/dQmw== + +"@types/parse-json@^4.0.0": + version "4.0.0" + resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.0.tgz#2f8bb441434d163b35fb8ffdccd7138927ffb8c0" + integrity sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA== + +"@types/prettier@^2.6.1": + version "2.7.3" + resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-2.7.3.tgz#3e51a17e291d01d17d3fc61422015a933af7a08f" + integrity sha512-+68kP9yzs4LMp7VNh8gdzMSPZFL44MLGqiHWvttYJe+6qnuVr4Ek9wSBQoveqY/r+LwjCcU29kNVkidwim+kYA== + +"@types/prop-types@*": + version "15.7.5" + resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.5.tgz#5f19d2b85a98e9558036f6a3cacc8819420f05cf" + integrity sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w== + +"@types/qs@*": + version "6.9.7" + resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.9.7.tgz#63bb7d067db107cc1e457c303bc25d511febf6cb" + integrity sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw== + +"@types/range-parser@*": + version "1.2.4" + resolved "https://registry.yarnpkg.com/@types/range-parser/-/range-parser-1.2.4.tgz#cd667bcfdd025213aafb7ca5915a932590acdcdc" + integrity sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw== + +"@types/react-transition-group@^4.4.0": + version "4.4.6" + resolved "https://registry.yarnpkg.com/@types/react-transition-group/-/react-transition-group-4.4.6.tgz#18187bcda5281f8e10dfc48f0943e2fdf4f75e2e" + integrity sha512-VnCdSxfcm08KjsJVQcfBmhEQAPnLB8G08hAxn39azX1qYBQ/5RVQuoHuKIcfKOdncuaUvEpFKFzEvbtIMsfVew== + dependencies: + "@types/react" "*" + +"@types/react@*": + version "18.2.14" + resolved "https://registry.yarnpkg.com/@types/react/-/react-18.2.14.tgz#fa7a6fecf1ce35ca94e74874f70c56ce88f7a127" + integrity sha512-A0zjq+QN/O0Kpe30hA1GidzyFjatVvrpIvWLxD+xv67Vt91TWWgco9IvrJBkeyHm1trGaFS/FSGqPlhyeZRm0g== + dependencies: + "@types/prop-types" "*" + "@types/scheduler" "*" + csstype "^3.0.2" + +"@types/scheduler@*": + version "0.16.3" + resolved "https://registry.yarnpkg.com/@types/scheduler/-/scheduler-0.16.3.tgz#cef09e3ec9af1d63d2a6cc5b383a737e24e6dcf5" + integrity sha512-5cJ8CB4yAx7BH1oMvdU0Jh9lrEXyPkar6F9G/ERswkCuvP4KQZfZkSjcMbAICCpQTN4OuZn8tz0HiKv9TGZgrQ== + +"@types/send@*": + version "0.17.1" + resolved "https://registry.yarnpkg.com/@types/send/-/send-0.17.1.tgz#ed4932b8a2a805f1fe362a70f4e62d0ac994e301" + integrity sha512-Cwo8LE/0rnvX7kIIa3QHCkcuF21c05Ayb0ZfxPiv0W8VRiZiNW/WuRupHKpqqGVGf7SUA44QSOUKaEd9lIrd/Q== + dependencies: + "@types/mime" "^1" + "@types/node" "*" + +"@types/serve-static@*": + version "1.15.2" + resolved "https://registry.yarnpkg.com/@types/serve-static/-/serve-static-1.15.2.tgz#3e5419ecd1e40e7405d34093f10befb43f63381a" + integrity sha512-J2LqtvFYCzaj8pVYKw8klQXrLLk7TBZmQ4ShlcdkELFKGwGMfevMLneMMRkMgZxotOD9wg497LpC7O8PcvAmfw== + dependencies: + "@types/http-errors" "*" + "@types/mime" "*" + "@types/node" "*" + +"@types/sharp@^0.31.1": + version "0.31.1" + resolved "https://registry.yarnpkg.com/@types/sharp/-/sharp-0.31.1.tgz#db768461455dbcf9ff11d69277fd70564483c4df" + integrity sha512-5nWwamN9ZFHXaYEincMSuza8nNfOof8nmO+mcI+Agx1uMUk4/pQnNIcix+9rLPXzKrm1pS34+6WRDbDV0Jn7ag== + dependencies: + "@types/node" "*" + +"@types/webidl-conversions@*": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@types/webidl-conversions/-/webidl-conversions-7.0.0.tgz#2b8e60e33906459219aa587e9d1a612ae994cfe7" + integrity sha512-xTE1E+YF4aWPJJeUzaZI5DRntlkY3+BCVJi0axFptnjGmAoWxkyREIh/XMrfxVLejwQxMCfDXdICo0VLxThrog== + +"@types/whatwg-url@^8.2.1": + version "8.2.2" + resolved "https://registry.yarnpkg.com/@types/whatwg-url/-/whatwg-url-8.2.2.tgz#749d5b3873e845897ada99be4448041d4cc39e63" + integrity sha512-FtQu10RWgn3D9U4aazdwIE2yzphmTJREDqNdODHrbrZmmMqI0vMheC/6NE/J1Yveaj8H+ela+YwWTjq5PGmuhA== + dependencies: + "@types/node" "*" + "@types/webidl-conversions" "*" + +"@types/yargs-parser@*": + version "21.0.0" + resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-21.0.0.tgz#0c60e537fa790f5f9472ed2776c2b71ec117351b" + integrity sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA== + +"@types/yargs@^17.0.8": + version "17.0.24" + resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-17.0.24.tgz#b3ef8d50ad4aa6aecf6ddc97c580a00f5aa11902" + integrity sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw== + dependencies: + "@types/yargs-parser" "*" + +"@webassemblyjs/ast@1.11.6", "@webassemblyjs/ast@^1.11.5": + version "1.11.6" + resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.11.6.tgz#db046555d3c413f8966ca50a95176a0e2c642e24" + integrity sha512-IN1xI7PwOvLPgjcf180gC1bqn3q/QaOCwYUahIOhbYUu8KA/3tw2RT/T0Gidi1l7Hhj5D/INhJxiICObqpMu4Q== + dependencies: + "@webassemblyjs/helper-numbers" "1.11.6" + "@webassemblyjs/helper-wasm-bytecode" "1.11.6" + +"@webassemblyjs/floating-point-hex-parser@1.11.6": + version "1.11.6" + resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz#dacbcb95aff135c8260f77fa3b4c5fea600a6431" + integrity sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw== + +"@webassemblyjs/helper-api-error@1.11.6": + version "1.11.6" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz#6132f68c4acd59dcd141c44b18cbebbd9f2fa768" + integrity sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q== + +"@webassemblyjs/helper-buffer@1.11.6": + version "1.11.6" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.6.tgz#b66d73c43e296fd5e88006f18524feb0f2c7c093" + integrity sha512-z3nFzdcp1mb8nEOFFk8DrYLpHvhKC3grJD2ardfKOzmbmJvEf/tPIqCY+sNcwZIY8ZD7IkB2l7/pqhUhqm7hLA== + +"@webassemblyjs/helper-numbers@1.11.6": + version "1.11.6" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz#cbce5e7e0c1bd32cf4905ae444ef64cea919f1b5" + integrity sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g== + 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": + version "1.11.6" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz#bb2ebdb3b83aa26d9baad4c46d4315283acd51e9" + integrity sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA== + +"@webassemblyjs/helper-wasm-section@1.11.6": + version "1.11.6" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.6.tgz#ff97f3863c55ee7f580fd5c41a381e9def4aa577" + integrity sha512-LPpZbSOwTpEC2cgn4hTydySy1Ke+XEu+ETXuoyvuyezHO3Kjdu90KK95Sh9xTbmjrCsUwvWwCOQQNta37VrS9g== + dependencies: + "@webassemblyjs/ast" "1.11.6" + "@webassemblyjs/helper-buffer" "1.11.6" + "@webassemblyjs/helper-wasm-bytecode" "1.11.6" + "@webassemblyjs/wasm-gen" "1.11.6" + +"@webassemblyjs/ieee754@1.11.6": + version "1.11.6" + resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz#bb665c91d0b14fffceb0e38298c329af043c6e3a" + integrity sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg== + dependencies: + "@xtuc/ieee754" "^1.2.0" + +"@webassemblyjs/leb128@1.11.6": + version "1.11.6" + resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.11.6.tgz#70e60e5e82f9ac81118bc25381a0b283893240d7" + integrity sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ== + dependencies: + "@xtuc/long" "4.2.2" + +"@webassemblyjs/utf8@1.11.6": + version "1.11.6" + resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.11.6.tgz#90f8bc34c561595fe156603be7253cdbcd0fab5a" + integrity sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA== + +"@webassemblyjs/wasm-edit@^1.11.5": + version "1.11.6" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.6.tgz#c72fa8220524c9b416249f3d94c2958dfe70ceab" + integrity sha512-Ybn2I6fnfIGuCR+Faaz7YcvtBKxvoLV3Lebn1tM4o/IAJzmi9AWYIPWpyBfU8cC+JxAO57bk4+zdsTjJR+VTOw== + dependencies: + "@webassemblyjs/ast" "1.11.6" + "@webassemblyjs/helper-buffer" "1.11.6" + "@webassemblyjs/helper-wasm-bytecode" "1.11.6" + "@webassemblyjs/helper-wasm-section" "1.11.6" + "@webassemblyjs/wasm-gen" "1.11.6" + "@webassemblyjs/wasm-opt" "1.11.6" + "@webassemblyjs/wasm-parser" "1.11.6" + "@webassemblyjs/wast-printer" "1.11.6" + +"@webassemblyjs/wasm-gen@1.11.6": + version "1.11.6" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.6.tgz#fb5283e0e8b4551cc4e9c3c0d7184a65faf7c268" + integrity sha512-3XOqkZP/y6B4F0PBAXvI1/bky7GryoogUtfwExeP/v7Nzwo1QLcq5oQmpKlftZLbT+ERUOAZVQjuNVak6UXjPA== + dependencies: + "@webassemblyjs/ast" "1.11.6" + "@webassemblyjs/helper-wasm-bytecode" "1.11.6" + "@webassemblyjs/ieee754" "1.11.6" + "@webassemblyjs/leb128" "1.11.6" + "@webassemblyjs/utf8" "1.11.6" + +"@webassemblyjs/wasm-opt@1.11.6": + version "1.11.6" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.6.tgz#d9a22d651248422ca498b09aa3232a81041487c2" + integrity sha512-cOrKuLRE7PCe6AsOVl7WasYf3wbSo4CeOk6PkrjS7g57MFfVUF9u6ysQBBODX0LdgSvQqRiGz3CXvIDKcPNy4g== + dependencies: + "@webassemblyjs/ast" "1.11.6" + "@webassemblyjs/helper-buffer" "1.11.6" + "@webassemblyjs/wasm-gen" "1.11.6" + "@webassemblyjs/wasm-parser" "1.11.6" + +"@webassemblyjs/wasm-parser@1.11.6", "@webassemblyjs/wasm-parser@^1.11.5": + version "1.11.6" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.6.tgz#bb85378c527df824004812bbdb784eea539174a1" + integrity sha512-6ZwPeGzMJM3Dqp3hCsLgESxBGtT/OeCvCZ4TA1JUPYgmhAx38tTPR9JaKy0S5H3evQpO/h2uWs2j6Yc/fjkpTQ== + dependencies: + "@webassemblyjs/ast" "1.11.6" + "@webassemblyjs/helper-api-error" "1.11.6" + "@webassemblyjs/helper-wasm-bytecode" "1.11.6" + "@webassemblyjs/ieee754" "1.11.6" + "@webassemblyjs/leb128" "1.11.6" + "@webassemblyjs/utf8" "1.11.6" + +"@webassemblyjs/wast-printer@1.11.6": + version "1.11.6" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.11.6.tgz#a7bf8dd7e362aeb1668ff43f35cb849f188eff20" + integrity sha512-JM7AhRcE+yW2GWYaKeHL5vt4xqee5N2WcezptmgyhNS+ScggqcT1OtXykhAb13Sn5Yas0j2uv9tHgrjwvzAP4A== + dependencies: + "@webassemblyjs/ast" "1.11.6" + "@xtuc/long" "4.2.2" + +"@webpack-cli/configtest@^1.2.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@webpack-cli/configtest/-/configtest-1.2.0.tgz#7b20ce1c12533912c3b217ea68262365fa29a6f5" + integrity sha512-4FB8Tj6xyVkyqjj1OaTqCjXYULB9FMkqQ8yGrZjRDrYh0nOE+7Lhs45WioWQQMV+ceFlE368Ukhe6xdvJM9Egg== + +"@webpack-cli/info@^1.5.0": + version "1.5.0" + resolved "https://registry.yarnpkg.com/@webpack-cli/info/-/info-1.5.0.tgz#6c78c13c5874852d6e2dd17f08a41f3fe4c261b1" + integrity sha512-e8tSXZpw2hPl2uMJY6fsMswaok5FdlGNRTktvFk2sD8RjH0hE2+XistawJx1vmKteh4NmGmNUrp+Tb2w+udPcQ== + dependencies: + envinfo "^7.7.3" + +"@webpack-cli/serve@^1.7.0": + version "1.7.0" + resolved "https://registry.yarnpkg.com/@webpack-cli/serve/-/serve-1.7.0.tgz#e1993689ac42d2b16e9194376cfb6753f6254db1" + integrity sha512-oxnCNGj88fL+xzV+dacXs44HcDwf1ovs3AuEzvP7mqXw7fQntqIhQ1BRmynh4qEKQSSSRSWVyXRjmTbZIX9V2Q== + +"@xtuc/ieee754@^1.2.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@xtuc/ieee754/-/ieee754-1.2.0.tgz#eef014a3145ae477a1cbc00cd1e552336dceb790" + integrity sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA== + +"@xtuc/long@4.2.2": + version "4.2.2" + resolved "https://registry.yarnpkg.com/@xtuc/long/-/long-4.2.2.tgz#d291c6a4e97989b5c61d9acf396ae4fe133a718d" + integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ== + +abbrev@1, abbrev@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" + integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== + +abort-controller@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/abort-controller/-/abort-controller-3.0.0.tgz#eaf54d53b62bae4138e809ca225c8439a6efb392" + integrity sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg== + dependencies: + event-target-shim "^5.0.0" + +accepts@~1.3.5, accepts@~1.3.8: + version "1.3.8" + resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.8.tgz#0bf0be125b67014adcb0b0921e62db7bffe16b2e" + integrity sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw== + dependencies: + mime-types "~2.1.34" + negotiator "0.6.3" + +acorn-import-assertions@^1.9.0: + version "1.9.0" + resolved "https://registry.yarnpkg.com/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz#507276249d684797c84e0734ef84860334cfb1ac" + integrity sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA== + +acorn-walk@^8.0.0: + version "8.2.0" + resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.2.0.tgz#741210f2e2426454508853a2f44d0ab83b7f69c1" + integrity sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA== + +acorn@^8.0.4, acorn@^8.7.1, acorn@^8.8.2: + version "8.9.0" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.9.0.tgz#78a16e3b2bcc198c10822786fa6679e245db5b59" + integrity sha512-jaVNAFBHNLXspO543WnNNPZFRtavh3skAkITqD0/2aeMkKZTN+254PyhwxFYrk3vQ1xfY+2wbesJMs/JC8/PwQ== + +ajv-formats@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/ajv-formats/-/ajv-formats-2.1.1.tgz#6e669400659eb74973bbf2e33327180a0996b520" + integrity sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA== + dependencies: + ajv "^8.0.0" + +ajv-keywords@^3.5.2: + version "3.5.2" + resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.5.2.tgz#31f29da5ab6e00d1c2d329acf7b5929614d5014d" + integrity sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ== + +ajv-keywords@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-5.1.0.tgz#69d4d385a4733cdbeab44964a1170a88f87f0e16" + integrity sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw== + dependencies: + fast-deep-equal "^3.1.3" + +ajv@^6.12.5: + version "6.12.6" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" + integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== + dependencies: + fast-deep-equal "^3.1.1" + fast-json-stable-stringify "^2.0.0" + json-schema-traverse "^0.4.1" + uri-js "^4.2.2" + +ajv@^8.0.0, ajv@^8.6.3, ajv@^8.9.0: + version "8.12.0" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.12.0.tgz#d1a0527323e22f53562c567c00991577dfbe19d1" + integrity sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA== + dependencies: + fast-deep-equal "^3.1.1" + json-schema-traverse "^1.0.0" + require-from-string "^2.0.2" + uri-js "^4.2.2" + +amazon-cognito-identity-js@^6.1.2: + version "6.3.1" + resolved "https://registry.yarnpkg.com/amazon-cognito-identity-js/-/amazon-cognito-identity-js-6.3.1.tgz#d9a4c1a92f4b059330df8ea075f65106d2605409" + integrity sha512-PxBdufgS8uZShrcIFAsRjmqNXsh/4fXOWUGQOUhKLHWWK1pcp/y+VeFF48avXIWefM8XwsT3JlN6m9J2eHt4LA== + dependencies: + "@aws-crypto/sha256-js" "1.2.2" + buffer "4.9.2" + fast-base64-decode "^1.0.0" + isomorphic-unfetch "^3.0.0" + js-cookie "^2.2.1" + +ansi-html-community@0.0.8: + version "0.0.8" + resolved "https://registry.yarnpkg.com/ansi-html-community/-/ansi-html-community-0.0.8.tgz#69fbc4d6ccbe383f9736934ae34c3f8290f1bf41" + integrity sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw== + +ansi-regex@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" + integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== + +ansi-styles@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" + integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== + dependencies: + color-convert "^1.9.0" + +ansi-styles@^4.0.0, ansi-styles@^4.1.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" + integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== + dependencies: + color-convert "^2.0.1" + +any-promise@^1.0.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/any-promise/-/any-promise-1.3.0.tgz#abc6afeedcea52e809cdc0376aed3ce39635d17f" + integrity sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A== + +anymatch@~3.1.2: + version "3.1.3" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e" + integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw== + dependencies: + normalize-path "^3.0.0" + picomatch "^2.0.4" + +arg@^4.1.0: + version "4.1.3" + resolved "https://registry.yarnpkg.com/arg/-/arg-4.1.3.tgz#269fc7ad5b8e42cb63c896d5666017261c144089" + integrity sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA== + +argparse@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" + integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== + +array-buffer-byte-length@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz#fabe8bc193fea865f317fe7807085ee0dee5aead" + integrity sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A== + dependencies: + call-bind "^1.0.2" + is-array-buffer "^3.0.1" + +array-flatten@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" + integrity sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg== + +asynckit@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" + integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q== + +atomic-sleep@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/atomic-sleep/-/atomic-sleep-1.0.0.tgz#eb85b77a601fc932cfe432c5acd364a9e2c9075b" + integrity sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ== + +atomically@^1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/atomically/-/atomically-1.7.0.tgz#c07a0458432ea6dbc9a3506fffa424b48bccaafe" + integrity sha512-Xcz9l0z7y9yQ9rdDaxlmaI4uJHf/T8g9hOEzJcsEqX2SjCj4J20uK7+ldkDHMbpJDK76wF7xEIgxc/vSlsfw5w== + +autoprefixer@^10.4.13: + version "10.4.14" + resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-10.4.14.tgz#e28d49902f8e759dd25b153264e862df2705f79d" + integrity sha512-FQzyfOsTlwVzjHxKEqRIAdJx9niO6VCBCoEwax/VLSoQF29ggECcPuBqUMZ+u8jCZOPSy8b8/8KnuFbp0SaFZQ== + dependencies: + browserslist "^4.21.5" + caniuse-lite "^1.0.30001464" + fraction.js "^4.2.0" + normalize-range "^0.1.2" + picocolors "^1.0.0" + postcss-value-parser "^4.2.0" + +available-typed-arrays@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz#92f95616501069d07d10edb2fc37d3e1c65123b7" + integrity sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw== + +axios@1.3.4: + version "1.3.4" + resolved "https://registry.yarnpkg.com/axios/-/axios-1.3.4.tgz#f5760cefd9cfb51fd2481acf88c05f67c4523024" + integrity sha512-toYm+Bsyl6VC5wSkfkbbNB6ROv7KY93PEBBL6xyDczaIHasAiv4wPqQ/c4RjoQzipxRD2W5g21cOqQulZ7rHwQ== + dependencies: + follow-redirects "^1.15.0" + form-data "^4.0.0" + proxy-from-env "^1.1.0" + +babel-plugin-macros@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/babel-plugin-macros/-/babel-plugin-macros-3.1.0.tgz#9ef6dc74deb934b4db344dc973ee851d148c50c1" + integrity sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg== + dependencies: + "@babel/runtime" "^7.12.5" + cosmiconfig "^7.0.0" + resolve "^1.19.0" + +balanced-match@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" + integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== + +base64-js@^1.0.2, base64-js@^1.3.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" + integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== + +big.js@^5.2.2: + version "5.2.2" + resolved "https://registry.yarnpkg.com/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328" + integrity sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ== + +binary-extensions@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" + integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== + +bl@^4.0.3: + version "4.1.0" + resolved "https://registry.yarnpkg.com/bl/-/bl-4.1.0.tgz#451535264182bec2fbbc83a62ab98cf11d9f7b3a" + integrity sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w== + dependencies: + buffer "^5.5.0" + inherits "^2.0.4" + readable-stream "^3.4.0" + +body-parser@1.20.1: + version "1.20.1" + resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.1.tgz#b1812a8912c195cd371a3ee5e66faa2338a5c668" + integrity sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw== + dependencies: + bytes "3.1.2" + content-type "~1.0.4" + debug "2.6.9" + depd "2.0.0" + destroy "1.2.0" + http-errors "2.0.0" + iconv-lite "0.4.24" + on-finished "2.4.1" + qs "6.11.0" + raw-body "2.5.1" + type-is "~1.6.18" + unpipe "1.0.0" + +body-parser@^1.20.1: + version "1.20.2" + resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.2.tgz#6feb0e21c4724d06de7ff38da36dad4f57a747fd" + integrity sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA== + dependencies: + bytes "3.1.2" + content-type "~1.0.5" + debug "2.6.9" + depd "2.0.0" + destroy "1.2.0" + http-errors "2.0.0" + iconv-lite "0.4.24" + on-finished "2.4.1" + qs "6.11.0" + raw-body "2.5.2" + type-is "~1.6.18" + unpipe "1.0.0" + +body-scroll-lock@^3.1.5: + version "3.1.5" + resolved "https://registry.yarnpkg.com/body-scroll-lock/-/body-scroll-lock-3.1.5.tgz#c1392d9217ed2c3e237fee1e910f6cdd80b7aaec" + integrity sha512-Yi1Xaml0EvNA0OYWxXiYNqY24AfWkbA6w5vxE7GWxtKfzIbZM+Qw+aSmkgsbWzbHiy/RCSkUZBplVxTA+E4jJg== + +boolbase@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" + integrity sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww== + +bowser@^2.11.0: + version "2.11.0" + resolved "https://registry.yarnpkg.com/bowser/-/bowser-2.11.0.tgz#5ca3c35757a7aa5771500c70a73a9f91ef420a8f" + integrity sha512-AlcaJBi/pqqJBIQ8U9Mcpc9i8Aqxn88Skv5d+xBX006BY5u8N3mGLHa5Lgppa7L/HfwgwLgZ6NYs+Ag6uUmJRA== + +brace-expansion@^1.1.7: + version "1.1.11" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" + integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== + dependencies: + balanced-match "^1.0.0" + concat-map "0.0.1" + +brace-expansion@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.0.1.tgz#1edc459e0f0c548486ecf9fc99f2221364b9a0ae" + integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA== + dependencies: + balanced-match "^1.0.0" + +braces@~3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" + integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== + dependencies: + fill-range "^7.0.1" + +browserslist@^4.0.0, browserslist@^4.14.5, browserslist@^4.21.4, browserslist@^4.21.5: + version "4.21.9" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.21.9.tgz#e11bdd3c313d7e2a9e87e8b4b0c7872b13897635" + integrity sha512-M0MFoZzbUrRU4KNfCrDLnvyE7gub+peetoTid3TBIqtunaDJyXlwhakT+/VkvSXcfIzFfK/nkCs4nmyTmxdNSg== + dependencies: + caniuse-lite "^1.0.30001503" + electron-to-chromium "^1.4.431" + node-releases "^2.0.12" + update-browserslist-db "^1.0.11" + +bson-objectid@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/bson-objectid/-/bson-objectid-2.0.4.tgz#339211572ef97dc98f2d68eaee7b99b7be59a089" + integrity sha512-vgnKAUzcDoa+AeyYwXCoHyF2q6u/8H46dxu5JN+4/TZeq/Dlinn0K6GvxsCLb3LHUJl0m/TLiEK31kUwtgocMQ== + +bson@^4.6.5: + version "4.7.2" + resolved "https://registry.yarnpkg.com/bson/-/bson-4.7.2.tgz#320f4ad0eaf5312dd9b45dc369cc48945e2a5f2e" + integrity sha512-Ry9wCtIZ5kGqkJoi6aD8KjxFZEx78guTQDnpXWiNthsxzrxAK/i8E6pCHAIZTbaEFWcOCvbecMukfK7XUvyLpQ== + dependencies: + buffer "^5.6.0" + +buffer-equal-constant-time@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz#f8e71132f7ffe6e01a5c9697a4c6f3e48d5cc819" + integrity sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA== + +buffer-from@^1.0.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" + integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== + +buffer@4.9.2: + version "4.9.2" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-4.9.2.tgz#230ead344002988644841ab0244af8c44bbe3ef8" + integrity sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg== + dependencies: + base64-js "^1.0.2" + ieee754 "^1.1.4" + isarray "^1.0.0" + +buffer@5.6.0: + version "5.6.0" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.6.0.tgz#a31749dc7d81d84db08abf937b6b8c4033f62786" + integrity sha512-/gDYp/UtU0eA1ys8bOs9J6a+E/KWIY+DZ+Q2WESNUA0jFRsJOc0SNUO6xJ5SGA1xueg3NL65W6s+NY5l9cunuw== + dependencies: + base64-js "^1.0.2" + ieee754 "^1.1.4" + +buffer@^5.5.0, buffer@^5.6.0: + version "5.7.1" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0" + integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ== + dependencies: + base64-js "^1.3.1" + ieee754 "^1.1.13" + +buffer@^6.0.3: + version "6.0.3" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-6.0.3.tgz#2ace578459cc8fbe2a70aaa8f52ee63b6a74c6c6" + integrity sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA== + dependencies: + base64-js "^1.3.1" + ieee754 "^1.2.1" + +busboy@^1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/busboy/-/busboy-1.6.0.tgz#966ea36a9502e43cdb9146962523b92f531f6893" + integrity sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA== + dependencies: + streamsearch "^1.1.0" + +bytes@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048" + integrity sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw== + +bytes@3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5" + integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg== + +call-bind@^1.0.0, call-bind@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c" + integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== + dependencies: + function-bind "^1.1.1" + get-intrinsic "^1.0.2" + +call-me-maybe@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/call-me-maybe/-/call-me-maybe-1.0.2.tgz#03f964f19522ba643b1b0693acb9152fe2074baa" + integrity sha512-HpX65o1Hnr9HH25ojC1YGs7HCQLq0GCOibSaWER0eNpgJ/Z1MZv2mTc7+xh6WOPxbRVcmgbv4hGU+uSQ/2xFZQ== + +callsites@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" + integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== + +camel-case@^4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/camel-case/-/camel-case-4.1.2.tgz#9728072a954f805228225a6deea6b38461e1bd5a" + integrity sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw== + dependencies: + pascal-case "^3.1.2" + tslib "^2.0.3" + +caniuse-api@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/caniuse-api/-/caniuse-api-3.0.0.tgz#5e4d90e2274961d46291997df599e3ed008ee4c0" + integrity sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw== + dependencies: + browserslist "^4.0.0" + caniuse-lite "^1.0.0" + lodash.memoize "^4.1.2" + lodash.uniq "^4.5.0" + +caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001464, caniuse-lite@^1.0.30001503: + version "1.0.30001508" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001508.tgz#4461bbc895c692a96da399639cc1e146e7302a33" + integrity sha512-sdQZOJdmt3GJs1UMNpCCCyeuS2IEGLXnHyAo9yIO5JJDjbjoVRij4M1qep6P6gFpptD1PqIYgzM+gwJbOi92mw== + +chalk@^2.0.0: + version "2.4.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" + integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== + dependencies: + ansi-styles "^3.2.1" + escape-string-regexp "^1.0.5" + supports-color "^5.3.0" + +chalk@^4.0.0, chalk@^4.1.0: + version "4.1.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" + integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + +charenc@0.0.2: + version "0.0.2" + resolved "https://registry.yarnpkg.com/charenc/-/charenc-0.0.2.tgz#c0a1d2f3a7092e03774bfa83f14c0fc5790a8667" + integrity sha512-yrLQ/yVUFXkzg7EDQsPieE/53+0RlaWTs+wBrvW36cyilJ2SaDWfl4Yj7MtLTXleV9uEKefbAGUPv2/iWSooRA== + +"chokidar@>=3.0.0 <4.0.0", chokidar@^3.5.2: + version "3.5.3" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd" + integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw== + dependencies: + anymatch "~3.1.2" + braces "~3.0.2" + glob-parent "~5.1.2" + is-binary-path "~2.1.0" + is-glob "~4.0.1" + normalize-path "~3.0.0" + readdirp "~3.6.0" + optionalDependencies: + fsevents "~2.3.2" + +chownr@^1.1.1: + version "1.1.4" + resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b" + integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg== + +chrome-trace-event@^1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz#1015eced4741e15d06664a957dbbf50d041e26ac" + integrity sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg== + +ci-info@^3.2.0: + version "3.8.0" + resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.8.0.tgz#81408265a5380c929f0bc665d62256628ce9ef91" + integrity sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw== + +classnames@^2.2.5, classnames@^2.2.6, classnames@^2.3.1: + version "2.3.2" + resolved "https://registry.yarnpkg.com/classnames/-/classnames-2.3.2.tgz#351d813bf0137fcc6a76a16b88208d2560a0d924" + integrity sha512-CSbhY4cFEJRe6/GQzIk5qXZ4Jeg5pcsP7b5peFSDpffpe1cqjASH/n9UTjBwOp6XpMSTwQ8Za2K5V02ueA7Tmw== + +clean-css@^5.2.2: + version "5.3.2" + resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-5.3.2.tgz#70ecc7d4d4114921f5d298349ff86a31a9975224" + integrity sha512-JVJbM+f3d3Q704rF4bqQ5UUyTtuJ0JRKNbTKVEeujCCBoMdkEi+V+e8oktO9qGQNSvHrFTM6JZRXrUvGR1czww== + dependencies: + source-map "~0.6.0" + +cli-color@^2.0.2: + version "2.0.3" + resolved "https://registry.yarnpkg.com/cli-color/-/cli-color-2.0.3.tgz#73769ba969080629670f3f2ef69a4bf4e7cc1879" + integrity sha512-OkoZnxyC4ERN3zLzZaY9Emb7f/MhBOIpePv0Ycok0fJYT+Ouo00UBEIwsVsr0yoow++n5YWlSUgST9GKhNHiRQ== + dependencies: + d "^1.0.1" + es5-ext "^0.10.61" + es6-iterator "^2.0.3" + memoizee "^0.4.15" + timers-ext "^0.1.7" + +cliui@^7.0.2: + version "7.0.4" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f" + integrity sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ== + dependencies: + string-width "^4.2.0" + strip-ansi "^6.0.0" + wrap-ansi "^7.0.0" + +clone-deep@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/clone-deep/-/clone-deep-4.0.1.tgz#c19fd9bdbbf85942b4fd979c84dcf7d5f07c2387" + integrity sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ== + dependencies: + is-plain-object "^2.0.4" + kind-of "^6.0.2" + shallow-clone "^3.0.0" + +clsx@^1.1.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/clsx/-/clsx-1.2.1.tgz#0ddc4a20a549b59c93a4116bb26f5294ca17dc12" + integrity sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg== + +color-convert@^1.9.0: + version "1.9.3" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" + integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== + dependencies: + color-name "1.1.3" + +color-convert@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" + integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== + dependencies: + color-name "~1.1.4" + +color-name@1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" + integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== + +color-name@^1.0.0, color-name@~1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" + integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== + +color-string@^1.9.0: + version "1.9.1" + resolved "https://registry.yarnpkg.com/color-string/-/color-string-1.9.1.tgz#4467f9146f036f855b764dfb5bf8582bf342c7a4" + integrity sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg== + dependencies: + color-name "^1.0.0" + simple-swizzle "^0.2.2" + +color@^4.2.3: + version "4.2.3" + resolved "https://registry.yarnpkg.com/color/-/color-4.2.3.tgz#d781ecb5e57224ee43ea9627560107c0e0c6463a" + integrity sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A== + dependencies: + color-convert "^2.0.1" + color-string "^1.9.0" + +colord@^2.9.1: + version "2.9.3" + resolved "https://registry.yarnpkg.com/colord/-/colord-2.9.3.tgz#4f8ce919de456f1d5c1c368c307fe20f3e59fb43" + integrity sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw== + +colorette@^2.0.10, colorette@^2.0.14, colorette@^2.0.7: + version "2.0.20" + resolved "https://registry.yarnpkg.com/colorette/-/colorette-2.0.20.tgz#9eb793e6833067f7235902fcd3b09917a000a95a" + integrity sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w== + +combined-stream@^1.0.8: + version "1.0.8" + resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" + integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== + dependencies: + delayed-stream "~1.0.0" + +commander@^2.19.0, commander@^2.20.0, commander@^2.20.3: + version "2.20.3" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" + integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== + +commander@^7.0.0, commander@^7.2.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-7.2.0.tgz#a36cb57d0b501ce108e4d20559a150a391d97ab7" + integrity sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw== + +commander@^8.3.0: + version "8.3.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-8.3.0.tgz#4837ea1b2da67b9c616a67afbb0fafee567bca66" + integrity sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww== + +compressible@~2.0.16: + version "2.0.18" + resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.18.tgz#af53cca6b070d4c3c0750fbd77286a6d7cc46fba" + integrity sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg== + dependencies: + mime-db ">= 1.43.0 < 2" + +compression@^1.7.4: + version "1.7.4" + resolved "https://registry.yarnpkg.com/compression/-/compression-1.7.4.tgz#95523eff170ca57c29a0ca41e6fe131f41e5bb8f" + integrity sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ== + dependencies: + accepts "~1.3.5" + bytes "3.0.0" + compressible "~2.0.16" + debug "2.6.9" + on-headers "~1.0.2" + safe-buffer "5.1.2" + vary "~1.1.2" + +compute-scroll-into-view@^1.0.20: + version "1.0.20" + resolved "https://registry.yarnpkg.com/compute-scroll-into-view/-/compute-scroll-into-view-1.0.20.tgz#1768b5522d1172754f5d0c9b02de3af6be506a43" + integrity sha512-UCB0ioiyj8CRjtrvaceBLqqhZCVP+1B8+NWQhmdsm0VXOJtobBCf1dBQmebCCo34qZmUwZfIH2MZLqNHazrfjg== + +concat-map@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== + +condense-newlines@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/condense-newlines/-/condense-newlines-0.2.1.tgz#3de985553139475d32502c83b02f60684d24c55f" + integrity sha512-P7X+QL9Hb9B/c8HI5BFFKmjgBu2XpQuF98WZ9XkO+dBGgk5XgwiQz7o1SmpglNWId3581UcS0SFAWfoIhMHPfg== + dependencies: + extend-shallow "^2.0.1" + is-whitespace "^0.3.0" + kind-of "^3.0.2" + +conf@^10.2.0: + version "10.2.0" + resolved "https://registry.yarnpkg.com/conf/-/conf-10.2.0.tgz#838e757be963f1a2386dfe048a98f8f69f7b55d6" + integrity sha512-8fLl9F04EJqjSqH+QjITQfJF8BrOVaYr1jewVgSRAEWePfxT0sku4w2hrGQ60BC/TNLGQ2pgxNlTbWQmMPFvXg== + dependencies: + ajv "^8.6.3" + ajv-formats "^2.1.1" + atomically "^1.7.0" + debounce-fn "^4.0.0" + dot-prop "^6.0.1" + env-paths "^2.2.1" + json-schema-typed "^7.0.3" + onetime "^5.1.2" + pkg-up "^3.1.0" + semver "^7.3.5" + +config-chain@^1.1.13: + version "1.1.13" + resolved "https://registry.yarnpkg.com/config-chain/-/config-chain-1.1.13.tgz#fad0795aa6a6cdaff9ed1b68e9dff94372c232f4" + integrity sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ== + dependencies: + ini "^1.3.4" + proto-list "~1.2.1" + +connect-history-api-fallback@^1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz#8b32089359308d111115d81cad3fceab888f97bc" + integrity sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg== + +content-disposition@0.5.4: + version "0.5.4" + resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.4.tgz#8b82b4efac82512a02bb0b1dcec9d2c5e8eb5bfe" + integrity sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ== + dependencies: + safe-buffer "5.2.1" + +content-type@~1.0.4, content-type@~1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.5.tgz#8b773162656d1d1086784c8f23a54ce6d73d7918" + integrity sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA== + +convert-source-map@^1.5.0: + version "1.9.0" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.9.0.tgz#7faae62353fb4213366d0ca98358d22e8368b05f" + integrity sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A== + +cookie-signature@1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" + integrity sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ== + +cookie@0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.5.0.tgz#d1f5d71adec6558c58f389987c366aa47e994f8b" + integrity sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw== + +copyfiles@^2.4.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/copyfiles/-/copyfiles-2.4.1.tgz#d2dcff60aaad1015f09d0b66e7f0f1c5cd3c5da5" + integrity sha512-fereAvAvxDrQDOXybk3Qu3dPbOoKoysFMWtkY3mv5BsL8//OSZVL5DCLYqgRfY5cWirgRzlC+WSrxp6Bo3eNZg== + dependencies: + glob "^7.0.5" + minimatch "^3.0.3" + mkdirp "^1.0.4" + noms "0.0.0" + through2 "^2.0.1" + untildify "^4.0.0" + yargs "^16.1.0" + +core-util-is@~1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85" + integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ== + +cosmiconfig@^7.0.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-7.1.0.tgz#1443b9afa596b670082ea46cbd8f6a62b84635f6" + integrity sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA== + dependencies: + "@types/parse-json" "^4.0.0" + import-fresh "^3.2.1" + parse-json "^5.0.0" + path-type "^4.0.0" + yaml "^1.10.0" + +create-require@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/create-require/-/create-require-1.1.1.tgz#c1d7e8f1e5f6cfc9ff65f9cd352d37348756c333" + integrity sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ== + +cross-env@^7.0.3: + version "7.0.3" + resolved "https://registry.yarnpkg.com/cross-env/-/cross-env-7.0.3.tgz#865264b29677dc015ba8418918965dd232fc54cf" + integrity sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw== + dependencies: + cross-spawn "^7.0.1" + +cross-spawn@^7.0.1, cross-spawn@^7.0.3: + version "7.0.3" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" + integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== + dependencies: + path-key "^3.1.0" + shebang-command "^2.0.0" + which "^2.0.1" + +crypt@0.0.2: + version "0.0.2" + resolved "https://registry.yarnpkg.com/crypt/-/crypt-0.0.2.tgz#88d7ff7ec0dfb86f713dc87bbb42d044d3e6c41b" + integrity sha512-mCxBlsHFYh9C+HVpiEacem8FEBnMXgU9gy4zmNC+SXAZNB/1idgp/aulFJ4FgCi7GPEVbfyng092GqL2k2rmow== + +css-blank-pseudo@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/css-blank-pseudo/-/css-blank-pseudo-3.0.3.tgz#36523b01c12a25d812df343a32c322d2a2324561" + integrity sha512-VS90XWtsHGqoM0t4KpH053c4ehxZ2E6HtGI7x68YFV0pTo/QmkV/YFA+NnlvK8guxZVNWGQhVNJGC39Q8XF4OQ== + dependencies: + postcss-selector-parser "^6.0.9" + +css-declaration-sorter@^6.3.1: + version "6.4.0" + resolved "https://registry.yarnpkg.com/css-declaration-sorter/-/css-declaration-sorter-6.4.0.tgz#630618adc21724484b3e9505bce812def44000ad" + integrity sha512-jDfsatwWMWN0MODAFuHszfjphEXfNw9JUAhmY4pLu3TyTU+ohUpsbVtbU+1MZn4a47D9kqh03i4eyOm+74+zew== + +css-has-pseudo@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/css-has-pseudo/-/css-has-pseudo-3.0.4.tgz#57f6be91ca242d5c9020ee3e51bbb5b89fc7af73" + integrity sha512-Vse0xpR1K9MNlp2j5w1pgWIJtm1a8qS0JwS9goFYcImjlHEmywP9VUF05aGBXzGpDJF86QXk4L0ypBmwPhGArw== + dependencies: + postcss-selector-parser "^6.0.9" + +css-loader@^5.2.7: + version "5.2.7" + resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-5.2.7.tgz#9b9f111edf6fb2be5dc62525644cbc9c232064ae" + integrity sha512-Q7mOvpBNBG7YrVGMxRxcBJZFL75o+cH2abNASdibkj/fffYD8qWbInZrD0S9ccI6vZclF3DsHE7njGlLtaHbhg== + dependencies: + icss-utils "^5.1.0" + loader-utils "^2.0.0" + postcss "^8.2.15" + postcss-modules-extract-imports "^3.0.0" + postcss-modules-local-by-default "^4.0.0" + postcss-modules-scope "^3.0.0" + postcss-modules-values "^4.0.0" + postcss-value-parser "^4.1.0" + schema-utils "^3.0.0" + semver "^7.3.5" + +css-minimizer-webpack-plugin@^5.0.0: + version "5.0.1" + resolved "https://registry.yarnpkg.com/css-minimizer-webpack-plugin/-/css-minimizer-webpack-plugin-5.0.1.tgz#33effe662edb1a0bf08ad633c32fa75d0f7ec565" + integrity sha512-3caImjKFQkS+ws1TGcFn0V1HyDJFq1Euy589JlD6/3rV2kj+w7r5G9WDMgSHvpvXHNZ2calVypZWuEDQd9wfLg== + dependencies: + "@jridgewell/trace-mapping" "^0.3.18" + cssnano "^6.0.1" + jest-worker "^29.4.3" + postcss "^8.4.24" + schema-utils "^4.0.1" + serialize-javascript "^6.0.1" + +css-prefers-color-scheme@^6.0.3: + version "6.0.3" + resolved "https://registry.yarnpkg.com/css-prefers-color-scheme/-/css-prefers-color-scheme-6.0.3.tgz#ca8a22e5992c10a5b9d315155e7caee625903349" + integrity sha512-4BqMbZksRkJQx2zAjrokiGMd07RqOa2IxIrrN10lyBe9xhn9DEvjUK79J6jkeiv9D9hQFXKb6g1jwU62jziJZA== + +css-select@^4.1.3: + version "4.3.0" + resolved "https://registry.yarnpkg.com/css-select/-/css-select-4.3.0.tgz#db7129b2846662fd8628cfc496abb2b59e41529b" + integrity sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ== + dependencies: + boolbase "^1.0.0" + css-what "^6.0.1" + domhandler "^4.3.1" + domutils "^2.8.0" + nth-check "^2.0.1" + +css-select@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/css-select/-/css-select-5.1.0.tgz#b8ebd6554c3637ccc76688804ad3f6a6fdaea8a6" + integrity sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg== + dependencies: + boolbase "^1.0.0" + css-what "^6.1.0" + domhandler "^5.0.2" + domutils "^3.0.1" + nth-check "^2.0.1" + +css-tree@^2.2.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-2.3.1.tgz#10264ce1e5442e8572fc82fbe490644ff54b5c20" + integrity sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw== + dependencies: + mdn-data "2.0.30" + source-map-js "^1.0.1" + +css-tree@~2.2.0: + version "2.2.1" + resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-2.2.1.tgz#36115d382d60afd271e377f9c5f67d02bd48c032" + integrity sha512-OA0mILzGc1kCOCSJerOeqDxDQ4HOh+G8NbOJFOTgOCzpw7fCBubk0fEyxp8AgOL/jvLgYA/uV0cMbe43ElF1JA== + dependencies: + mdn-data "2.0.28" + source-map-js "^1.0.1" + +css-what@^6.0.1, css-what@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/css-what/-/css-what-6.1.0.tgz#fb5effcf76f1ddea2c81bdfaa4de44e79bac70f4" + integrity sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw== + +cssdb@^7.1.0: + version "7.6.0" + resolved "https://registry.yarnpkg.com/cssdb/-/cssdb-7.6.0.tgz#beac8f7a5f676db62d3c33da517ef4c9eb008f8b" + integrity sha512-Nna7rph8V0jC6+JBY4Vk4ndErUmfJfV6NJCaZdurL0omggabiy+QB2HCQtu5c/ACLZ0I7REv7A4QyPIoYzZx0w== + +cssesc@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee" + integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== + +cssfilter@0.0.10: + version "0.0.10" + resolved "https://registry.yarnpkg.com/cssfilter/-/cssfilter-0.0.10.tgz#c6d2672632a2e5c83e013e6864a42ce8defd20ae" + integrity sha512-FAaLDaplstoRsDR8XGYH51znUN0UY7nMc6Z9/fvE8EXGwvJE9hu7W2vHwx1+bd6gCYnln9nLbzxFTrcO9YQDZw== + +cssnano-preset-default@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/cssnano-preset-default/-/cssnano-preset-default-6.0.1.tgz#2a93247140d214ddb9f46bc6a3562fa9177fe301" + integrity sha512-7VzyFZ5zEB1+l1nToKyrRkuaJIx0zi/1npjvZfbBwbtNTzhLtlvYraK/7/uqmX2Wb2aQtd983uuGw79jAjLSuQ== + dependencies: + css-declaration-sorter "^6.3.1" + cssnano-utils "^4.0.0" + postcss-calc "^9.0.0" + postcss-colormin "^6.0.0" + postcss-convert-values "^6.0.0" + postcss-discard-comments "^6.0.0" + postcss-discard-duplicates "^6.0.0" + postcss-discard-empty "^6.0.0" + postcss-discard-overridden "^6.0.0" + postcss-merge-longhand "^6.0.0" + postcss-merge-rules "^6.0.1" + postcss-minify-font-values "^6.0.0" + postcss-minify-gradients "^6.0.0" + postcss-minify-params "^6.0.0" + postcss-minify-selectors "^6.0.0" + postcss-normalize-charset "^6.0.0" + postcss-normalize-display-values "^6.0.0" + postcss-normalize-positions "^6.0.0" + postcss-normalize-repeat-style "^6.0.0" + postcss-normalize-string "^6.0.0" + postcss-normalize-timing-functions "^6.0.0" + postcss-normalize-unicode "^6.0.0" + postcss-normalize-url "^6.0.0" + postcss-normalize-whitespace "^6.0.0" + postcss-ordered-values "^6.0.0" + postcss-reduce-initial "^6.0.0" + postcss-reduce-transforms "^6.0.0" + postcss-svgo "^6.0.0" + postcss-unique-selectors "^6.0.0" + +cssnano-utils@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/cssnano-utils/-/cssnano-utils-4.0.0.tgz#d1da885ec04003ab19505ff0e62e029708d36b08" + integrity sha512-Z39TLP+1E0KUcd7LGyF4qMfu8ZufI0rDzhdyAMsa/8UyNUU8wpS0fhdBxbQbv32r64ea00h4878gommRVg2BHw== + +cssnano@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-6.0.1.tgz#87c38c4cd47049c735ab756d7e77ac3ca855c008" + integrity sha512-fVO1JdJ0LSdIGJq68eIxOqFpIJrZqXUsBt8fkrBcztCQqAjQD51OhZp7tc0ImcbwXD4k7ny84QTV90nZhmqbkg== + dependencies: + cssnano-preset-default "^6.0.1" + lilconfig "^2.1.0" + +csso@^5.0.5: + version "5.0.5" + resolved "https://registry.yarnpkg.com/csso/-/csso-5.0.5.tgz#f9b7fe6cc6ac0b7d90781bb16d5e9874303e2ca6" + integrity sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ== + dependencies: + css-tree "~2.2.0" + +csstype@^3.0.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.1.2.tgz#1d4bf9d572f11c14031f0436e1c10bc1f571f50b" + integrity sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ== + +d@1, d@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/d/-/d-1.0.1.tgz#8698095372d58dbee346ffd0c7093f99f8f9eb5a" + integrity sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA== + dependencies: + es5-ext "^0.10.50" + type "^1.0.1" + +dataloader@^2.1.0: + version "2.2.2" + resolved "https://registry.yarnpkg.com/dataloader/-/dataloader-2.2.2.tgz#216dc509b5abe39d43a9b9d97e6e5e473dfbe3e0" + integrity sha512-8YnDaaf7N3k/q5HnTJVuzSyLETjoZjVmHc4AeKAzOvKHEFQKcn64OKBfzHYtE9zGjctNM7V9I0MfnUVLpi7M5g== + +date-fns@^2.24.0, date-fns@^2.29.3: + version "2.30.0" + resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-2.30.0.tgz#f367e644839ff57894ec6ac480de40cae4b0f4d0" + integrity sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw== + dependencies: + "@babel/runtime" "^7.21.0" + +dateformat@^4.6.3: + version "4.6.3" + resolved "https://registry.yarnpkg.com/dateformat/-/dateformat-4.6.3.tgz#556fa6497e5217fedb78821424f8a1c22fa3f4b5" + integrity sha512-2P0p0pFGzHS5EMnhdxQi7aJN+iMheud0UhG4dlE1DLAlvL8JHjJJTX/CSm4JXwV0Ka5nGk3zC5mcb5bUQUxxMA== + +debounce-fn@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/debounce-fn/-/debounce-fn-4.0.0.tgz#ed76d206d8a50e60de0dd66d494d82835ffe61c7" + integrity sha512-8pYCQiL9Xdcg0UPSD3d+0KMlOjp+KGU5EPwYddgzQ7DATsg4fuUDjQtsYLmWjnk2obnNHgV3vE2Y4jejSOJVBQ== + dependencies: + mimic-fn "^3.0.0" + +debug@2, debug@2.6.9: + version "2.6.9" + resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" + integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== + dependencies: + ms "2.0.0" + +debug@3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" + integrity sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g== + dependencies: + ms "2.0.0" + +debug@4.x: + version "4.3.4" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" + integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== + dependencies: + ms "2.1.2" + +debug@^3.2.6, debug@^3.2.7: + version "3.2.7" + resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" + integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== + dependencies: + ms "^2.1.1" + +decompress-response@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-6.0.0.tgz#ca387612ddb7e104bd16d85aab00d5ecf09c66fc" + integrity sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ== + dependencies: + mimic-response "^3.1.0" + +deep-equal@^2.2.0: + version "2.2.1" + resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-2.2.1.tgz#c72ab22f3a7d3503a4ca87dde976fe9978816739" + integrity sha512-lKdkdV6EOGoVn65XaOsPdH4rMxTZOnmFyuIkMjM1i5HHCbfjC97dawgTAy0deYNfuqUqW+Q5VrVaQYtUpSd6yQ== + dependencies: + array-buffer-byte-length "^1.0.0" + call-bind "^1.0.2" + es-get-iterator "^1.1.3" + get-intrinsic "^1.2.0" + is-arguments "^1.1.1" + is-array-buffer "^3.0.2" + is-date-object "^1.0.5" + is-regex "^1.1.4" + is-shared-array-buffer "^1.0.2" + isarray "^2.0.5" + object-is "^1.1.5" + object-keys "^1.1.1" + object.assign "^4.1.4" + regexp.prototype.flags "^1.5.0" + side-channel "^1.0.4" + which-boxed-primitive "^1.0.2" + which-collection "^1.0.1" + which-typed-array "^1.1.9" + +deep-extend@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" + integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== + +deepmerge@^4.0.0, deepmerge@^4.2.2: + version "4.3.1" + resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.3.1.tgz#44b5f2147cd3b00d4b56137685966f26fd25dd4a" + integrity sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A== + +define-properties@^1.1.3, define-properties@^1.1.4, define-properties@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.2.0.tgz#52988570670c9eacedd8064f4a990f2405849bd5" + integrity sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA== + dependencies: + has-property-descriptors "^1.0.0" + object-keys "^1.1.1" + +delayed-stream@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" + integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== + +denque@^2.0.1: + version "2.1.0" + resolved "https://registry.yarnpkg.com/denque/-/denque-2.1.0.tgz#e93e1a6569fb5e66f16a3c2a2964617d349d6ab1" + integrity sha512-HVQE3AAb/pxF8fQAoiqpvg9i3evqug3hoiwakOyZAwJm+6vZehbkYXZ0l4JxS+I3QxM97v5aaRNhj8v5oBhekw== + +depd@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df" + integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== + +destroy@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.2.0.tgz#4803735509ad8be552934c67df614f94e66fa015" + integrity sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg== + +detect-libc@^2.0.0, detect-libc@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-2.0.1.tgz#e1897aa88fa6ad197862937fbc0441ef352ee0cd" + integrity sha512-463v3ZeIrcWtdgIg6vI6XUncguvr2TnGl4SzDXinkt9mSLpBJKXT3mW6xT3VQdDN11+WVs29pgvivTc4Lp8v+w== + +diff@^4.0.1: + version "4.0.2" + resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d" + integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A== + +diff@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/diff/-/diff-5.1.0.tgz#bc52d298c5ea8df9194800224445ed43ffc87e40" + integrity sha512-D+mk+qE8VC/PAUrlAU34N+VfXev0ghe5ywmpqrawphmVZc1bEfn56uo9qpyGp1p4xpzOHkSW4ztBd6L7Xx4ACw== + +direction@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/direction/-/direction-1.0.4.tgz#2b86fb686967e987088caf8b89059370d4837442" + integrity sha512-GYqKi1aH7PJXxdhTeZBFrg8vUBeKXi+cNprXsC1kpJcbcVnV9wBsrOu1cQEdG0WeQwlfHiy3XvnKfIrJ2R0NzQ== + +dom-converter@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/dom-converter/-/dom-converter-0.2.0.tgz#6721a9daee2e293682955b6afe416771627bb768" + integrity sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA== + dependencies: + utila "~0.4" + +dom-helpers@^5.0.1: + version "5.2.1" + resolved "https://registry.yarnpkg.com/dom-helpers/-/dom-helpers-5.2.1.tgz#d9400536b2bf8225ad98fe052e029451ac40e902" + integrity sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA== + dependencies: + "@babel/runtime" "^7.8.7" + csstype "^3.0.2" + +dom-serializer@^1.0.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-1.4.1.tgz#de5d41b1aea290215dc45a6dae8adcf1d32e2d30" + integrity sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag== + dependencies: + domelementtype "^2.0.1" + domhandler "^4.2.0" + entities "^2.0.0" + +dom-serializer@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-2.0.0.tgz#e41b802e1eedf9f6cae183ce5e622d789d7d8e53" + integrity sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg== + dependencies: + domelementtype "^2.3.0" + domhandler "^5.0.2" + entities "^4.2.0" + +domelementtype@^2.0.1, domelementtype@^2.2.0, domelementtype@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.3.0.tgz#5c45e8e869952626331d7aab326d01daf65d589d" + integrity sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw== + +domhandler@^4.0.0, domhandler@^4.2.0, domhandler@^4.3.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-4.3.1.tgz#8d792033416f59d68bc03a5aa7b018c1ca89279c" + integrity sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ== + dependencies: + domelementtype "^2.2.0" + +domhandler@^5.0.2, domhandler@^5.0.3: + version "5.0.3" + resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-5.0.3.tgz#cc385f7f751f1d1fc650c21374804254538c7d31" + integrity sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w== + dependencies: + domelementtype "^2.3.0" + +domutils@^2.5.2, domutils@^2.8.0: + version "2.8.0" + resolved "https://registry.yarnpkg.com/domutils/-/domutils-2.8.0.tgz#4437def5db6e2d1f5d6ee859bd95ca7d02048135" + integrity sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A== + dependencies: + dom-serializer "^1.0.1" + domelementtype "^2.2.0" + domhandler "^4.2.0" + +domutils@^3.0.1: + version "3.1.0" + resolved "https://registry.yarnpkg.com/domutils/-/domutils-3.1.0.tgz#c47f551278d3dc4b0b1ab8cbb42d751a6f0d824e" + integrity sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA== + dependencies: + dom-serializer "^2.0.0" + domelementtype "^2.3.0" + domhandler "^5.0.3" + +dot-case@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/dot-case/-/dot-case-3.0.4.tgz#9b2b670d00a431667a8a75ba29cd1b98809ce751" + integrity sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w== + dependencies: + no-case "^3.0.4" + tslib "^2.0.3" + +dot-prop@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-6.0.1.tgz#fc26b3cf142b9e59b74dbd39ed66ce620c681083" + integrity sha512-tE7ztYzXHIeyvc7N+hR3oi7FIbf/NIjVP9hmAt3yMXzrQ072/fpjGLx2GxNxGxUl5V73MEqYzioOMoVhGMJ5cA== + dependencies: + is-obj "^2.0.0" + +dotenv@^8.2.0, dotenv@^8.6.0: + version "8.6.0" + resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-8.6.0.tgz#061af664d19f7f4d8fc6e4ff9b584ce237adcb8b" + integrity sha512-IrPdXQsk2BbzvCBGBOTmmSH5SodmqZNt4ERAZDmW4CT+tL8VtvinqywuANaFu4bOMWki16nqf0e4oC0QIaDr/g== + +duplexer@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.2.tgz#3abe43aef3835f8ae077d136ddce0f276b0400e6" + integrity sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg== + +ecdsa-sig-formatter@1.0.11: + version "1.0.11" + resolved "https://registry.yarnpkg.com/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz#ae0f0fa2d85045ef14a817daa3ce9acd0489e5bf" + integrity sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ== + dependencies: + safe-buffer "^5.0.1" + +editorconfig@^0.15.3: + version "0.15.3" + resolved "https://registry.yarnpkg.com/editorconfig/-/editorconfig-0.15.3.tgz#bef84c4e75fb8dcb0ce5cee8efd51c15999befc5" + integrity sha512-M9wIMFx96vq0R4F+gRpY3o2exzb8hEj/n9S8unZtHSvYjibBp/iMufSzvmOcV/laG0ZtuTVGtiJggPOSW2r93g== + dependencies: + commander "^2.19.0" + lru-cache "^4.1.5" + semver "^5.6.0" + sigmund "^1.0.1" + +ee-first@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" + integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== + +electron-to-chromium@^1.4.431: + version "1.4.442" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.442.tgz#455f4c5bd6ae73afb634dcffee6f356c26c8e294" + integrity sha512-RkrZF//Ya+0aJq2NM3OdisNh5ZodZq1rdXOS96G8DdDgpDKqKE81yTbbQ3F/4CKm1JBPsGu1Lp/akkna2xO06Q== + +emoji-regex@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" + integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== + +emojis-list@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-3.0.0.tgz#5570662046ad29e2e916e71aae260abdff4f6a78" + integrity sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q== + +encodeurl@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" + integrity sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w== + +end-of-stream@^1.1.0, end-of-stream@^1.4.1: + version "1.4.4" + resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" + integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== + dependencies: + once "^1.4.0" + +enhanced-resolve@^5.15.0: + version "5.15.0" + resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.15.0.tgz#1af946c7d93603eb88e9896cee4904dc012e9c35" + integrity sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg== + dependencies: + graceful-fs "^4.2.4" + tapable "^2.2.0" + +entities@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/entities/-/entities-2.2.0.tgz#098dc90ebb83d8dffa089d55256b351d34c4da55" + integrity sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A== + +entities@^4.2.0, entities@^4.4.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/entities/-/entities-4.5.0.tgz#5d268ea5e7113ec74c4d033b79ea5a35a488fb48" + integrity sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw== + +env-paths@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/env-paths/-/env-paths-2.2.1.tgz#420399d416ce1fbe9bc0a07c62fa68d67fd0f8f2" + integrity sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A== + +envinfo@^7.7.3: + version "7.10.0" + resolved "https://registry.yarnpkg.com/envinfo/-/envinfo-7.10.0.tgz#55146e3909cc5fe63c22da63fb15b05aeac35b13" + integrity sha512-ZtUjZO6l5mwTHvc1L9+1q5p/R3wTopcfqMW8r5t8SJSKqeVI/LtajORwRFEKpEFuekjD0VBjwu1HMxL4UalIRw== + +error-ex@^1.3.1: + version "1.3.2" + resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" + integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== + dependencies: + is-arrayish "^0.2.1" + +es-get-iterator@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/es-get-iterator/-/es-get-iterator-1.1.3.tgz#3ef87523c5d464d41084b2c3c9c214f1199763d6" + integrity sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.1.3" + has-symbols "^1.0.3" + is-arguments "^1.1.1" + is-map "^2.0.2" + is-set "^2.0.2" + is-string "^1.0.7" + isarray "^2.0.5" + stop-iteration-iterator "^1.0.0" + +es-module-lexer@^1.2.1: + version "1.3.0" + resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-1.3.0.tgz#6be9c9e0b4543a60cd166ff6f8b4e9dae0b0c16f" + integrity sha512-vZK7T0N2CBmBOixhmjdqx2gWVbFZ4DXZ/NyRMZVlJXPa7CyFS+/a4QQsDGDQy9ZfEzxFuNEsMLeQJnKP2p5/JA== + +es5-ext@^0.10.35, es5-ext@^0.10.46, es5-ext@^0.10.50, es5-ext@^0.10.53, es5-ext@^0.10.61, es5-ext@~0.10.14, es5-ext@~0.10.2, es5-ext@~0.10.46: + version "0.10.62" + resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.62.tgz#5e6adc19a6da524bf3d1e02bbc8960e5eb49a9a5" + integrity sha512-BHLqn0klhEpnOKSrzn/Xsz2UIW8j+cGmo9JLzr8BiUapV8hPL9+FliFqjwr9ngW7jWdnxv6eO+/LqyhJVqgrjA== + dependencies: + es6-iterator "^2.0.3" + es6-symbol "^3.1.3" + next-tick "^1.1.0" + +es6-iterator@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/es6-iterator/-/es6-iterator-2.0.3.tgz#a7de889141a05a94b0854403b2d0a0fbfa98f3b7" + integrity sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g== + dependencies: + d "1" + es5-ext "^0.10.35" + es6-symbol "^3.1.1" + +es6-symbol@^3.1.1, es6-symbol@^3.1.3: + version "3.1.3" + resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.3.tgz#bad5d3c1bcdac28269f4cb331e431c78ac705d18" + integrity sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA== + dependencies: + d "^1.0.1" + ext "^1.1.2" + +es6-weak-map@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/es6-weak-map/-/es6-weak-map-2.0.3.tgz#b6da1f16cc2cc0d9be43e6bdbfc5e7dfcdf31d53" + integrity sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA== + dependencies: + d "1" + es5-ext "^0.10.46" + es6-iterator "^2.0.3" + es6-symbol "^3.1.1" + +escalade@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" + integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== + +escape-html@~1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" + integrity sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow== + +escape-string-regexp@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" + integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== + +escape-string-regexp@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" + integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== + +eslint-scope@5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" + integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== + dependencies: + esrecurse "^4.3.0" + estraverse "^4.1.1" + +esrecurse@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" + integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== + dependencies: + estraverse "^5.2.0" + +estraverse@^4.1.1: + version "4.3.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" + integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== + +estraverse@^5.2.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" + integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== + +etag@~1.8.1: + version "1.8.1" + resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" + integrity sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg== + +event-emitter@^0.3.5: + version "0.3.5" + resolved "https://registry.yarnpkg.com/event-emitter/-/event-emitter-0.3.5.tgz#df8c69eef1647923c7157b9ce83840610b02cc39" + integrity sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA== + dependencies: + d "1" + es5-ext "~0.10.14" + +event-target-shim@^5.0.0: + version "5.0.1" + resolved "https://registry.yarnpkg.com/event-target-shim/-/event-target-shim-5.0.1.tgz#5d4d3ebdf9583d63a5333ce2deb7480ab2b05789" + integrity sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ== + +events@3.3.0, events@^3.2.0, events@^3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400" + integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q== + +expand-template@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/expand-template/-/expand-template-2.0.3.tgz#6e14b3fcee0f3a6340ecb57d2e8918692052a47c" + integrity sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg== + +express-fileupload@1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/express-fileupload/-/express-fileupload-1.4.0.tgz#be9d70a881d6c2b1ce668df86e4f89ddbf238ec7" + integrity sha512-RjzLCHxkv3umDeZKeFeMg8w7qe0V09w3B7oGZprr/oO2H/ISCgNzuqzn7gV3HRWb37GjRk429CCpSLS2KNTqMQ== + dependencies: + busboy "^1.6.0" + +express-rate-limit@^5.5.1: + version "5.5.1" + resolved "https://registry.yarnpkg.com/express-rate-limit/-/express-rate-limit-5.5.1.tgz#110c23f6a65dfa96ab468eda95e71697bc6987a2" + integrity sha512-MTjE2eIbHv5DyfuFz4zLYWxpqVhEhkTiwFGuB74Q9CSou2WHO52nlE5y3Zlg6SIsiYUIPj6ifFxnkPz6O3sIUg== + +express@^4.17.1, express@^4.18.2: + version "4.18.2" + resolved "https://registry.yarnpkg.com/express/-/express-4.18.2.tgz#3fabe08296e930c796c19e3c516979386ba9fd59" + integrity sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ== + dependencies: + accepts "~1.3.8" + array-flatten "1.1.1" + body-parser "1.20.1" + content-disposition "0.5.4" + content-type "~1.0.4" + cookie "0.5.0" + cookie-signature "1.0.6" + debug "2.6.9" + depd "2.0.0" + encodeurl "~1.0.2" + escape-html "~1.0.3" + etag "~1.8.1" + finalhandler "1.2.0" + fresh "0.5.2" + http-errors "2.0.0" + merge-descriptors "1.0.1" + methods "~1.1.2" + on-finished "2.4.1" + parseurl "~1.3.3" + path-to-regexp "0.1.7" + proxy-addr "~2.0.7" + qs "6.11.0" + range-parser "~1.2.1" + safe-buffer "5.2.1" + send "0.18.0" + serve-static "1.15.0" + setprototypeof "1.2.0" + statuses "2.0.1" + type-is "~1.6.18" + utils-merge "1.0.1" + vary "~1.1.2" + +ext@^1.1.2: + version "1.7.0" + resolved "https://registry.yarnpkg.com/ext/-/ext-1.7.0.tgz#0ea4383c0103d60e70be99e9a7f11027a33c4f5f" + integrity sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw== + dependencies: + type "^2.7.2" + +extend-shallow@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" + integrity sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug== + dependencies: + is-extendable "^0.1.0" + +fast-base64-decode@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fast-base64-decode/-/fast-base64-decode-1.0.0.tgz#b434a0dd7d92b12b43f26819300d2dafb83ee418" + integrity sha512-qwaScUgUGBYeDNRnbc/KyllVU88Jk1pRHPStuF/lO7B0/RTRLj7U0lkdTAutlBblY08rwZDff6tNU9cjv6j//Q== + +fast-copy@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/fast-copy/-/fast-copy-3.0.1.tgz#9e89ef498b8c04c1cd76b33b8e14271658a732aa" + integrity sha512-Knr7NOtK3HWRYGtHoJrjkaWepqT8thIVGAwt0p0aUs1zqkAzXZV4vo9fFNwyb5fcqK1GKYFYxldQdIDVKhUAfA== + +fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: + version "3.1.3" + resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" + integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== + +fast-json-stable-stringify@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" + integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== + +fast-redact@^3.0.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/fast-redact/-/fast-redact-3.2.0.tgz#b1e2d39bc731376d28bde844454fa23e26919987" + integrity sha512-zaTadChr+NekyzallAMXATXLOR8MNx3zqpZ0MUF2aGf4EathnG0f32VLODNlY8IuGY3HoRO2L6/6fSzNsLaHIw== + +fast-safe-stringify@^2.0.8, fast-safe-stringify@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz#c406a83b6e70d9e35ce3b30a81141df30aeba884" + integrity sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA== + +fast-xml-parser@4.2.5: + version "4.2.5" + resolved "https://registry.yarnpkg.com/fast-xml-parser/-/fast-xml-parser-4.2.5.tgz#a6747a09296a6cb34f2ae634019bf1738f3b421f" + integrity sha512-B9/wizE4WngqQftFPmdaMYlXoJlJOYxGQOanC77fq9k8+Z0v5dDSVh+3glErdIROP//s/jgb7ZuxKfB8nVyo0g== + dependencies: + strnum "^1.0.5" + +fastest-levenshtein@^1.0.12: + version "1.0.16" + resolved "https://registry.yarnpkg.com/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz#210e61b6ff181de91ea9b3d1b84fdedd47e034e5" + integrity sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg== + +file-loader@^6.2.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-6.2.0.tgz#baef7cf8e1840df325e4390b4484879480eebe4d" + integrity sha512-qo3glqyTa61Ytg4u73GultjHGjdRyig3tG6lPtyX/jOEJvHif9uB0/OCI2Kif6ctF3caQTW2G5gym21oAsI4pw== + dependencies: + loader-utils "^2.0.0" + schema-utils "^3.0.0" + +file-type@16.5.4: + version "16.5.4" + resolved "https://registry.yarnpkg.com/file-type/-/file-type-16.5.4.tgz#474fb4f704bee427681f98dd390058a172a6c2fd" + integrity sha512-/yFHK0aGjFEgDJjEKP0pWCplsPFPhwyfwevf/pVxiN0tmE4L9LmwWxWukdJSHdoCli4VgQLehjJtwQBnqmsKcw== + dependencies: + readable-web-to-node-stream "^3.0.0" + strtok3 "^6.2.4" + token-types "^4.1.1" + +fill-range@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" + integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== + dependencies: + to-regex-range "^5.0.1" + +finalhandler@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.2.0.tgz#7d23fe5731b207b4640e4fcd00aec1f9207a7b32" + integrity sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg== + dependencies: + debug "2.6.9" + encodeurl "~1.0.2" + escape-html "~1.0.3" + on-finished "2.4.1" + parseurl "~1.3.3" + statuses "2.0.1" + unpipe "~1.0.0" + +find-root@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/find-root/-/find-root-1.1.0.tgz#abcfc8ba76f708c42a97b3d685b7e9450bfb9ce4" + integrity sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng== + +find-up@4.1.0, find-up@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" + integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== + dependencies: + locate-path "^5.0.0" + path-exists "^4.0.0" + +find-up@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" + integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg== + dependencies: + locate-path "^3.0.0" + +flatley@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/flatley/-/flatley-5.2.0.tgz#3a645837c669be8d978335e37ae3afffcfbdedb7" + integrity sha512-vsb0/03uIHu7/3jRqABweblFUJMLokz1uMrcgFlvx6OAr6V3FiSic2iXeiJCj+cciTiQeumSDsIFAAnN1yvu4w== + dependencies: + is-buffer "^1.1.6" + +flatstr@^1.0.12: + version "1.0.12" + resolved "https://registry.yarnpkg.com/flatstr/-/flatstr-1.0.12.tgz#c2ba6a08173edbb6c9640e3055b95e287ceb5931" + integrity sha512-4zPxDyhCyiN2wIAtSLI6gc82/EjqZc1onI4Mz/l0pWrAlsSfYH/2ZIcU+e3oA2wDwbzIWNKwa23F8rh6+DRWkw== + +focus-trap@^6.9.2: + version "6.9.4" + resolved "https://registry.yarnpkg.com/focus-trap/-/focus-trap-6.9.4.tgz#436da1a1d935c48b97da63cd8f361c6f3aa16444" + integrity sha512-v2NTsZe2FF59Y+sDykKY+XjqZ0cPfhq/hikWVL88BqLivnNiEffAsac6rP6H45ff9wG9LL5ToiDqrLEP9GX9mw== + dependencies: + tabbable "^5.3.3" + +follow-redirects@^1.15.0: + version "1.15.2" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.2.tgz#b460864144ba63f2681096f274c4e57026da2c13" + integrity sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA== + +for-each@^0.3.3: + version "0.3.3" + resolved "https://registry.yarnpkg.com/for-each/-/for-each-0.3.3.tgz#69b447e88a0a5d32c3e7084f3f1710034b21376e" + integrity sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw== + dependencies: + is-callable "^1.1.3" + +form-data@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.0.tgz#93919daeaf361ee529584b9b31664dc12c9fa452" + integrity sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww== + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.8" + mime-types "^2.1.12" + +forwarded@0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.2.0.tgz#2269936428aad4c15c7ebe9779a84bf0b2a81811" + integrity sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow== + +fraction.js@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/fraction.js/-/fraction.js-4.2.0.tgz#448e5109a313a3527f5a3ab2119ec4cf0e0e2950" + integrity sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA== + +fresh@0.5.2: + version "0.5.2" + resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" + integrity sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q== + +fs-constants@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs-constants/-/fs-constants-1.0.0.tgz#6be0de9be998ce16af8afc24497b9ee9b7ccd9ad" + integrity sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow== + +fs-extra@^10.1.0: + version "10.1.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-10.1.0.tgz#02873cfbc4084dde127eaa5f9905eef2325d1abf" + integrity sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ== + dependencies: + graceful-fs "^4.2.0" + jsonfile "^6.0.1" + universalify "^2.0.0" + +fs-monkey@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/fs-monkey/-/fs-monkey-1.0.4.tgz#ee8c1b53d3fe8bb7e5d2c5c5dfc0168afdd2f747" + integrity sha512-INM/fWAxMICjttnD0DX1rBvinKskj5G1w+oy/pnm9u/tSlnBrzFonJMcalKJ30P8RRsPzKcCG7Q8l0jx5Fh9YQ== + +fs.realpath@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" + integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== + +fsevents@~2.3.2: + version "2.3.2" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" + integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== + +function-bind@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" + integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== + +functions-have-names@^1.2.3: + version "1.2.3" + resolved "https://registry.yarnpkg.com/functions-have-names/-/functions-have-names-1.2.3.tgz#0404fe4ee2ba2f607f0e0ec3c80bae994133b834" + integrity sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ== + +get-caller-file@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" + integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== + +get-intrinsic@^1.0.2, get-intrinsic@^1.1.1, get-intrinsic@^1.1.3, get-intrinsic@^1.2.0: + version "1.2.1" + resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.1.tgz#d295644fed4505fc9cde952c37ee12b477a83d82" + integrity sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw== + dependencies: + function-bind "^1.1.1" + has "^1.0.3" + has-proto "^1.0.1" + has-symbols "^1.0.3" + +get-stdin@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-8.0.0.tgz#cbad6a73feb75f6eeb22ba9e01f89aa28aa97a53" + integrity sha512-sY22aA6xchAzprjyqmSEQv4UbAAzRN0L2dQB0NlN5acTTK9Don6nhoc3eAbUnpZiCANAMfd/+40kVdKfFygohg== + +get-tsconfig@^4.4.0: + version "4.6.2" + resolved "https://registry.yarnpkg.com/get-tsconfig/-/get-tsconfig-4.6.2.tgz#831879a5e6c2aa24fe79b60340e2233a1e0f472e" + integrity sha512-E5XrT4CbbXcXWy+1jChlZmrmCwd5KGx502kDCXJJ7y898TtWW9FwoG5HfOLVRKmlmDGkWN2HM9Ho+/Y8F0sJDg== + dependencies: + resolve-pkg-maps "^1.0.0" + +github-from-package@0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/github-from-package/-/github-from-package-0.0.0.tgz#97fb5d96bfde8973313f20e8288ef9a167fa64ce" + integrity sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw== + +glob-parent@~5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" + integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== + dependencies: + is-glob "^4.0.1" + +glob-promise@^4.2.2: + version "4.2.2" + resolved "https://registry.yarnpkg.com/glob-promise/-/glob-promise-4.2.2.tgz#15f44bcba0e14219cd93af36da6bb905ff007877" + integrity sha512-xcUzJ8NWN5bktoTIX7eOclO1Npxd/dyVqUJxlLIDasT4C7KZyqlPIwkdJ0Ypiy3p2ZKahTjK4M9uC3sNSfNMzw== + dependencies: + "@types/glob" "^7.1.3" + +glob-to-regexp@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz#c75297087c851b9a578bd217dd59a92f59fe546e" + integrity sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw== + +glob@^7.0.5, glob@^7.1.6: + version "7.2.3" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" + integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.1.1" + once "^1.3.0" + path-is-absolute "^1.0.0" + +glob@^8.0.0, glob@^8.1.0: + version "8.1.0" + resolved "https://registry.yarnpkg.com/glob/-/glob-8.1.0.tgz#d388f656593ef708ee3e34640fdfb99a9fd1c33e" + integrity sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^5.0.1" + once "^1.3.0" + +gopd@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/gopd/-/gopd-1.0.1.tgz#29ff76de69dac7489b7c0918a5788e56477c332c" + integrity sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA== + dependencies: + get-intrinsic "^1.1.3" + +graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.4, graceful-fs@^4.2.9: + version "4.2.11" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" + integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== + +graphql-http@^1.17.1: + version "1.19.0" + resolved "https://registry.yarnpkg.com/graphql-http/-/graphql-http-1.19.0.tgz#6f0fff0dbd9a8e797c99b5ac0ca160566e7927da" + integrity sha512-fOD3hfp/G+Lhx2FWW5HsfmtJSsw6CikcpOboG7/mFo/pPUzn3yOwKdTFRnJ8MVY4ru69MT1nSPr/1gI/iuGNlw== + +graphql-playground-html@^1.6.30: + version "1.6.30" + resolved "https://registry.yarnpkg.com/graphql-playground-html/-/graphql-playground-html-1.6.30.tgz#14c2a8eb7fc17bfeb1a746bbb28a11e34bf0b391" + integrity sha512-tpCujhsJMva4aqE8ULnF7/l3xw4sNRZcSHu+R00VV+W0mfp+Q20Plvcrp+5UXD+2yS6oyCXncA+zoQJQqhGCEw== + dependencies: + xss "^1.0.6" + +graphql-playground-middleware-express@^1.7.23: + version "1.7.23" + resolved "https://registry.yarnpkg.com/graphql-playground-middleware-express/-/graphql-playground-middleware-express-1.7.23.tgz#95aba44d801ff3c08b2246917d2901d2e7c35d3d" + integrity sha512-M/zbTyC1rkgiQjFSgmzAv6umMHOphYLNWZp6Ye5QrD77WfGOOoSqDsVmGUczc2pDkEPEzzGB/bvBO5rdzaTRgw== + dependencies: + graphql-playground-html "^1.6.30" + +graphql-query-complexity@^0.12.0: + version "0.12.0" + resolved "https://registry.yarnpkg.com/graphql-query-complexity/-/graphql-query-complexity-0.12.0.tgz#5f636ccc54da82225f31e898e7f27192fe074b4c" + integrity sha512-fWEyuSL6g/+nSiIRgIipfI6UXTI7bAxrpPlCY1c0+V3pAEUo1ybaKmSBgNr1ed2r+agm1plJww8Loig9y6s2dw== + dependencies: + lodash.get "^4.4.2" + +graphql-scalars@^1.20.1: + version "1.22.2" + resolved "https://registry.yarnpkg.com/graphql-scalars/-/graphql-scalars-1.22.2.tgz#6326e6fe2d0ad4228a9fea72a977e2bf26b86362" + integrity sha512-my9FB4GtghqXqi/lWSVAOPiTzTnnEzdOXCsAC2bb5V7EFNQjVjwy3cSSbUvgYOtDuDibd+ZsCDhz+4eykYOlhQ== + dependencies: + tslib "^2.5.0" + +graphql-type-json@^0.3.2: + version "0.3.2" + resolved "https://registry.yarnpkg.com/graphql-type-json/-/graphql-type-json-0.3.2.tgz#f53a851dbfe07bd1c8157d24150064baab41e115" + integrity sha512-J+vjof74oMlCWXSvt0DOf2APEdZOCdubEvGDUAlqH//VBYcOYsGgRW7Xzorr44LvkjiuvecWc8fChxuZZbChtg== + +graphql@^16.6.0: + version "16.7.1" + resolved "https://registry.yarnpkg.com/graphql/-/graphql-16.7.1.tgz#11475b74a7bff2aefd4691df52a0eca0abd9b642" + integrity sha512-DRYR9tf+UGU0KOsMcKAlXeFfX89UiiIZ0dRU3mR0yJfu6OjZqUcp68NnFLnqQU5RexygFoDy1EW+ccOYcPfmHg== + +gzip-size@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/gzip-size/-/gzip-size-6.0.0.tgz#065367fd50c239c0671cbcbad5be3e2eeb10e462" + integrity sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q== + dependencies: + duplexer "^0.1.2" + +has-bigints@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.0.2.tgz#0871bd3e3d51626f6ca0966668ba35d5602d6eaa" + integrity sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ== + +has-flag@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" + integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw== + +has-flag@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" + integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== + +has-property-descriptors@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz#610708600606d36961ed04c196193b6a607fa861" + integrity sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ== + dependencies: + get-intrinsic "^1.1.1" + +has-proto@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/has-proto/-/has-proto-1.0.1.tgz#1885c1305538958aff469fef37937c22795408e0" + integrity sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg== + +has-symbols@^1.0.2, has-symbols@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8" + integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A== + +has-tostringtag@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-tostringtag/-/has-tostringtag-1.0.0.tgz#7e133818a7d394734f941e73c3d3f9291e658b25" + integrity sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ== + dependencies: + has-symbols "^1.0.2" + +has@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" + integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== + dependencies: + function-bind "^1.1.1" + +he@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" + integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== + +help-me@^4.0.1: + version "4.2.0" + resolved "https://registry.yarnpkg.com/help-me/-/help-me-4.2.0.tgz#50712bfd799ff1854ae1d312c36eafcea85b0563" + integrity sha512-TAOnTB8Tz5Dw8penUuzHVrKNKlCIbwwbHnXraNJxPwf8LRtE2HlM84RYuezMFcwOJmoYOCWVDyJ8TQGxn9PgxA== + dependencies: + glob "^8.0.0" + readable-stream "^3.6.0" + +history@^4.9.0: + version "4.10.1" + resolved "https://registry.yarnpkg.com/history/-/history-4.10.1.tgz#33371a65e3a83b267434e2b3f3b1b4c58aad4cf3" + integrity sha512-36nwAD620w12kuzPAsyINPWJqlNbij+hpK1k9XRloDtym8mxzGYl2c17LnV6IAGB2Dmg4tEa7G7DlawS0+qjew== + dependencies: + "@babel/runtime" "^7.1.2" + loose-envify "^1.2.0" + resolve-pathname "^3.0.0" + tiny-invariant "^1.0.2" + tiny-warning "^1.0.0" + value-equal "^1.0.1" + +hoist-non-react-statics@^3.1.0, hoist-non-react-statics@^3.3.1: + version "3.3.2" + resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz#ece0acaf71d62c2969c2ec59feff42a4b1a85b45" + integrity sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw== + dependencies: + react-is "^16.7.0" + +html-entities@^2.1.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-2.4.0.tgz#edd0cee70402584c8c76cc2c0556db09d1f45061" + integrity sha512-igBTJcNNNhvZFRtm8uA6xMY6xYleeDwn3PeBCkDz7tHttv4F2hsDI2aPgNERWzvRcNYHNT3ymRaQzllmXj4YsQ== + +html-minifier-terser@^6.0.2: + version "6.1.0" + resolved "https://registry.yarnpkg.com/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz#bfc818934cc07918f6b3669f5774ecdfd48f32ab" + integrity sha512-YXxSlJBZTP7RS3tWnQw74ooKa6L9b9i9QYXY21eUEvhZ3u9XLfv6OnFsQq6RxkhHygsaUMvYsZRV5rU/OVNZxw== + dependencies: + camel-case "^4.1.2" + clean-css "^5.2.2" + commander "^8.3.0" + he "^1.2.0" + param-case "^3.0.4" + relateurl "^0.2.7" + terser "^5.10.0" + +html-parse-stringify@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/html-parse-stringify/-/html-parse-stringify-3.0.1.tgz#dfc1017347ce9f77c8141a507f233040c59c55d2" + integrity sha512-KknJ50kTInJ7qIScF3jeaFRpMpE8/lfiTdzf/twXyPBLAGrLRTmkz3AdTnKeh40X8k9L2fdYwEp/42WGXIRGcg== + dependencies: + void-elements "3.1.0" + +html-to-text@9.0.3: + version "9.0.3" + resolved "https://registry.yarnpkg.com/html-to-text/-/html-to-text-9.0.3.tgz#331368f32fcb270c59dbd3a7fdb32813d2a490bc" + integrity sha512-hxDF1kVCF2uw4VUJ3vr2doc91pXf2D5ngKcNviSitNkhP9OMOaJkDrFIFL6RMvko7NisWTEiqGpQ9LAxcVok1w== + dependencies: + "@selderee/plugin-htmlparser2" "^0.10.0" + deepmerge "^4.2.2" + dom-serializer "^2.0.0" + htmlparser2 "^8.0.1" + selderee "^0.10.0" + +html-webpack-plugin@^5.5.0: + version "5.5.3" + resolved "https://registry.yarnpkg.com/html-webpack-plugin/-/html-webpack-plugin-5.5.3.tgz#72270f4a78e222b5825b296e5e3e1328ad525a3e" + integrity sha512-6YrDKTuqaP/TquFH7h4srYWsZx+x6k6+FbsTm0ziCwGHDP78Unr1r9F/H4+sGmMbX08GQcJ+K64x55b+7VM/jg== + dependencies: + "@types/html-minifier-terser" "^6.0.0" + html-minifier-terser "^6.0.2" + lodash "^4.17.21" + pretty-error "^4.0.0" + tapable "^2.0.0" + +htmlparser2@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-6.1.0.tgz#c4d762b6c3371a05dbe65e94ae43a9f845fb8fb7" + integrity sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A== + dependencies: + domelementtype "^2.0.1" + domhandler "^4.0.0" + domutils "^2.5.2" + entities "^2.0.0" + +htmlparser2@^8.0.1: + version "8.0.2" + resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-8.0.2.tgz#f002151705b383e62433b5cf466f5b716edaec21" + integrity sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA== + dependencies: + domelementtype "^2.3.0" + domhandler "^5.0.3" + domutils "^3.0.1" + entities "^4.4.0" + +http-errors@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-2.0.0.tgz#b7774a1486ef73cf7667ac9ae0858c012c57b9d3" + integrity sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ== + dependencies: + depd "2.0.0" + inherits "2.0.4" + setprototypeof "1.2.0" + statuses "2.0.1" + toidentifier "1.0.1" + +http-status@^1.6.2: + version "1.6.2" + resolved "https://registry.yarnpkg.com/http-status/-/http-status-1.6.2.tgz#6dc05188a9856d67d96e48e8b4fd645c719ce82a" + integrity sha512-oUExvfNckrpTpDazph7kNG8sQi5au3BeTo0idaZFXEhTaJKu7GNJCLHI0rYY2wljm548MSTM+Ljj/c6anqu2zQ== + +i18next-browser-languagedetector@^6.1.8: + version "6.1.8" + resolved "https://registry.yarnpkg.com/i18next-browser-languagedetector/-/i18next-browser-languagedetector-6.1.8.tgz#8e9c61b32a4dfe9b959b38bc9d2a8b95f799b27c" + integrity sha512-Svm+MduCElO0Meqpj1kJAriTC6OhI41VhlT/A0UPjGoPZBhAHIaGE5EfsHlTpgdH09UVX7rcc72pSDDBeKSQQA== + dependencies: + "@babel/runtime" "^7.19.0" + +i18next-http-middleware@^3.2.2: + version "3.3.2" + resolved "https://registry.yarnpkg.com/i18next-http-middleware/-/i18next-http-middleware-3.3.2.tgz#6a24fee6bde44952a5af24364d43fa32f6c1b9b6" + integrity sha512-PSeLXQXr9Qiv9Q3GCWCoIJenKVbxCcVsXb7VMp/mOprV4gu+AMJT7VHw4+QEf6oYW6GU31QSLnfDpLNoSMtx3g== + +i18next@^22.4.9: + version "22.5.1" + resolved "https://registry.yarnpkg.com/i18next/-/i18next-22.5.1.tgz#99df0b318741a506000c243429a7352e5f44d424" + integrity sha512-8TGPgM3pAD+VRsMtUMNknRz3kzqwp/gPALrWMsDnmC1mKqJwpWyooQRLMcbTwq8z8YwSmuj+ZYvc+xCuEpkssA== + dependencies: + "@babel/runtime" "^7.20.6" + +iconv-lite@0.4.24, iconv-lite@^0.4.4: + version "0.4.24" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" + integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== + dependencies: + safer-buffer ">= 2.1.2 < 3" + +icss-utils@^5.0.0, icss-utils@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/icss-utils/-/icss-utils-5.1.0.tgz#c6be6858abd013d768e98366ae47e25d5887b1ae" + integrity sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA== + +ieee754@^1.1.13, ieee754@^1.1.4, ieee754@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" + integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== + +ignore-by-default@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/ignore-by-default/-/ignore-by-default-1.0.1.tgz#48ca6d72f6c6a3af00a9ad4ae6876be3889e2b09" + integrity sha512-Ius2VYcGNk7T90CppJqcIkS5ooHUZyIQK+ClZfMfMNFEF9VSE73Fq+906u/CWu92x4gzZMWOwfFYckPObzdEbA== + +immer@^9.0.6: + version "9.0.21" + resolved "https://registry.yarnpkg.com/immer/-/immer-9.0.21.tgz#1e025ea31a40f24fb064f1fef23e931496330176" + integrity sha512-bc4NBHqOqSfRW7POMkHd51LvClaeMXpm8dx0e8oE2GORbq5aRK7Bxl4FyzVLdGtLmvLKL7BTDBG5ACQm4HWjTA== + +immutable@^4.0.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/immutable/-/immutable-4.3.0.tgz#eb1738f14ffb39fd068b1dbe1296117484dd34be" + integrity sha512-0AOCmOip+xgJwEVTQj1EfiDDOkPmuyllDuTuEX+DDXUgapLAsBIfkg3sxCYyCEA8mQqZrrxPUGjcOQ2JS3WLkg== + +import-fresh@^3.2.1: + version "3.3.0" + resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" + integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== + dependencies: + parent-module "^1.0.0" + resolve-from "^4.0.0" + +import-local@^3.0.2: + version "3.1.0" + resolved "https://registry.yarnpkg.com/import-local/-/import-local-3.1.0.tgz#b4479df8a5fd44f6cdce24070675676063c95cb4" + integrity sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg== + dependencies: + pkg-dir "^4.2.0" + resolve-cwd "^3.0.0" + +inflight@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" + integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== + dependencies: + once "^1.3.0" + wrappy "1" + +inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.1, inherits@~2.0.3, inherits@~2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" + integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== + +ini@^1.3.4, ini@~1.3.0: + version "1.3.8" + resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c" + integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== + +internal-slot@^1.0.4: + version "1.0.5" + resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.5.tgz#f2a2ee21f668f8627a4667f309dc0f4fb6674986" + integrity sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ== + dependencies: + get-intrinsic "^1.2.0" + has "^1.0.3" + side-channel "^1.0.4" + +interpret@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/interpret/-/interpret-2.2.0.tgz#1a78a0b5965c40a5416d007ad6f50ad27c417df9" + integrity sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw== + +ip@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ip/-/ip-2.0.0.tgz#4cf4ab182fee2314c75ede1276f8c80b479936da" + integrity sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ== + +ipaddr.js@1.9.1: + version "1.9.1" + resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3" + integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== + +is-arguments@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.1.1.tgz#15b3f88fda01f2a97fec84ca761a560f123efa9b" + integrity sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA== + dependencies: + call-bind "^1.0.2" + has-tostringtag "^1.0.0" + +is-array-buffer@^3.0.1, is-array-buffer@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/is-array-buffer/-/is-array-buffer-3.0.2.tgz#f2653ced8412081638ecb0ebbd0c41c6e0aecbbe" + integrity sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.2.0" + is-typed-array "^1.1.10" + +is-arrayish@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" + integrity sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg== + +is-arrayish@^0.3.1: + version "0.3.2" + resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.3.2.tgz#4574a2ae56f7ab206896fb431eaeed066fdf8f03" + integrity sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ== + +is-bigint@^1.0.1: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-bigint/-/is-bigint-1.0.4.tgz#08147a1875bc2b32005d41ccd8291dffc6691df3" + integrity sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg== + dependencies: + has-bigints "^1.0.1" + +is-binary-path@~2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" + integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== + dependencies: + binary-extensions "^2.0.0" + +is-boolean-object@^1.1.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.1.2.tgz#5c6dc200246dd9321ae4b885a114bb1f75f63719" + integrity sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA== + dependencies: + call-bind "^1.0.2" + has-tostringtag "^1.0.0" + +is-buffer@^1.1.5, is-buffer@^1.1.6, is-buffer@~1.1.6: + version "1.1.6" + resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" + integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== + +is-callable@^1.1.3: + version "1.2.7" + resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.7.tgz#3bc2a85ea742d9e36205dcacdd72ca1fdc51b055" + integrity sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA== + +is-core-module@^2.11.0: + version "2.12.1" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.12.1.tgz#0c0b6885b6f80011c71541ce15c8d66cf5a4f9fd" + integrity sha512-Q4ZuBAe2FUsKtyQJoQHlvP8OvBERxO3jEmy1I7hcRXcJBGGHFh/aJBswbXuS9sgrDH2QUO8ilkwNPHvHMd8clg== + dependencies: + has "^1.0.3" + +is-date-object@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.5.tgz#0841d5536e724c25597bf6ea62e1bd38298df31f" + integrity sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ== + dependencies: + has-tostringtag "^1.0.0" + +is-extendable@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" + integrity sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw== + +is-extglob@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" + integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== + +is-fullwidth-code-point@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" + integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== + +is-glob@^4.0.1, is-glob@^4.0.3, is-glob@~4.0.1: + version "4.0.3" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" + integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== + dependencies: + is-extglob "^2.1.1" + +is-hotkey@^0.1.6: + version "0.1.8" + resolved "https://registry.yarnpkg.com/is-hotkey/-/is-hotkey-0.1.8.tgz#6b1f4b2d0e5639934e20c05ed24d623a21d36d25" + integrity sha512-qs3NZ1INIS+H+yeo7cD9pDfwYV/jqRh1JG9S9zYrNudkoUQg7OL7ziXqRKu+InFjUIDoP2o6HIkLYMh1pcWgyQ== + +is-hotkey@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/is-hotkey/-/is-hotkey-0.2.0.tgz#1835a68171a91e5c9460869d96336947c8340cef" + integrity sha512-UknnZK4RakDmTgz4PI1wIph5yxSs/mvChWs9ifnlXsKuXgWmOkY/hAE0H/k2MIqH0RlRye0i1oC07MCRSD28Mw== + +is-map@^2.0.1, is-map@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/is-map/-/is-map-2.0.2.tgz#00922db8c9bf73e81b7a335827bc2a43f2b91127" + integrity sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg== + +is-number-object@^1.0.4: + version "1.0.7" + resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.7.tgz#59d50ada4c45251784e9904f5246c742f07a42fc" + integrity sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ== + dependencies: + has-tostringtag "^1.0.0" + +is-number@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" + integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== + +is-obj@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-2.0.0.tgz#473fb05d973705e3fd9620545018ca8e22ef4982" + integrity sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w== + +is-plain-object@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" + integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== + dependencies: + isobject "^3.0.1" + +is-plain-object@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-5.0.0.tgz#4427f50ab3429e9025ea7d52e9043a9ef4159344" + integrity sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q== + +is-promise@^2.2.2: + version "2.2.2" + resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.2.2.tgz#39ab959ccbf9a774cf079f7b40c7a26f763135f1" + integrity sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ== + +is-regex@^1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.4.tgz#eef5663cd59fa4c0ae339505323df6854bb15958" + integrity sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg== + dependencies: + call-bind "^1.0.2" + has-tostringtag "^1.0.0" + +is-set@^2.0.1, is-set@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/is-set/-/is-set-2.0.2.tgz#90755fa4c2562dc1c5d4024760d6119b94ca18ec" + integrity sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g== + +is-shared-array-buffer@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz#8f259c573b60b6a32d4058a1a07430c0a7344c79" + integrity sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA== + dependencies: + call-bind "^1.0.2" + +is-string@^1.0.5, is-string@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.7.tgz#0dd12bf2006f255bb58f695110eff7491eebc0fd" + integrity sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg== + dependencies: + has-tostringtag "^1.0.0" + +is-symbol@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.4.tgz#a6dac93b635b063ca6872236de88910a57af139c" + integrity sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg== + dependencies: + has-symbols "^1.0.2" + +is-typed-array@^1.1.10: + version "1.1.10" + resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.10.tgz#36a5b5cb4189b575d1a3e4b08536bfb485801e3f" + integrity sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A== + dependencies: + available-typed-arrays "^1.0.5" + call-bind "^1.0.2" + for-each "^0.3.3" + gopd "^1.0.1" + has-tostringtag "^1.0.0" + +is-weakmap@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/is-weakmap/-/is-weakmap-2.0.1.tgz#5008b59bdc43b698201d18f62b37b2ca243e8cf2" + integrity sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA== + +is-weakset@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/is-weakset/-/is-weakset-2.0.2.tgz#4569d67a747a1ce5a994dfd4ef6dcea76e7c0a1d" + integrity sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.1.1" + +is-whitespace@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/is-whitespace/-/is-whitespace-0.3.0.tgz#1639ecb1be036aec69a54cbb401cfbed7114ab7f" + integrity sha512-RydPhl4S6JwAyj0JJjshWJEFG6hNye3pZFBRZaTUfZFwGHxzppNaNOVgQuS/E/SlhrApuMXrpnK1EEIXfdo3Dg== + +isarray@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" + integrity sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ== + +isarray@^1.0.0, isarray@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" + integrity sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ== + +isarray@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-2.0.5.tgz#8af1e4c1221244cc62459faf38940d4e644a5723" + integrity sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw== + +isexe@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" + integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== + +isobject@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" + integrity sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg== + +isomorphic-fetch@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/isomorphic-fetch/-/isomorphic-fetch-3.0.0.tgz#0267b005049046d2421207215d45d6a262b8b8b4" + integrity sha512-qvUtwJ3j6qwsF3jLxkZ72qCgjMysPzDfeV240JHiGZsANBYd+EEuu35v7dfrJ9Up0Ak07D7GGSkGhCHTqg/5wA== + dependencies: + node-fetch "^2.6.1" + whatwg-fetch "^3.4.1" + +isomorphic-unfetch@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/isomorphic-unfetch/-/isomorphic-unfetch-3.1.0.tgz#87341d5f4f7b63843d468438128cb087b7c3e98f" + integrity sha512-geDJjpoZ8N0kWexiwkX8F9NkTsXhetLPVbZFQ+JTW239QNOwvB0gniuR1Wc6f0AMTn7/mFGyXvHTifrCp/GH8Q== + dependencies: + node-fetch "^2.6.1" + unfetch "^4.2.0" + +jest-util@^29.5.0: + version "29.5.0" + resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-29.5.0.tgz#24a4d3d92fc39ce90425311b23c27a6e0ef16b8f" + integrity sha512-RYMgG/MTadOr5t8KdhejfvUU82MxsCu5MF6KuDUHl+NuwzUt+Sm6jJWxTJVrDR1j5M/gJVCPKQEpWXY+yIQ6lQ== + dependencies: + "@jest/types" "^29.5.0" + "@types/node" "*" + chalk "^4.0.0" + ci-info "^3.2.0" + graceful-fs "^4.2.9" + picomatch "^2.2.3" + +jest-worker@^27.4.5: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-27.5.1.tgz#8d146f0900e8973b106b6f73cc1e9a8cb86f8db0" + integrity sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg== + dependencies: + "@types/node" "*" + merge-stream "^2.0.0" + supports-color "^8.0.0" + +jest-worker@^29.4.3: + version "29.5.0" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-29.5.0.tgz#bdaefb06811bd3384d93f009755014d8acb4615d" + integrity sha512-NcrQnevGoSp4b5kg+akIpthoAFHxPBcb5P6mYPY0fUNT+sSvmtu6jlkEle3anczUKIKEbMxFimk9oTP/tpIPgA== + dependencies: + "@types/node" "*" + jest-util "^29.5.0" + merge-stream "^2.0.0" + supports-color "^8.0.0" + +joi@^17.7.0: + version "17.9.2" + resolved "https://registry.yarnpkg.com/joi/-/joi-17.9.2.tgz#8b2e4724188369f55451aebd1d0b1d9482470690" + integrity sha512-Itk/r+V4Dx0V3c7RLFdRh12IOjySm2/WGPMubBT92cQvRfYZhPM2W0hZlctjj72iES8jsRCwp7S/cRmWBnJ4nw== + dependencies: + "@hapi/hoek" "^9.0.0" + "@hapi/topo" "^5.0.0" + "@sideway/address" "^4.1.3" + "@sideway/formula" "^3.0.1" + "@sideway/pinpoint" "^2.0.0" + +joycon@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/joycon/-/joycon-3.1.1.tgz#bce8596d6ae808f8b68168f5fc69280996894f03" + integrity sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw== + +js-beautify@^1.6.12: + version "1.14.8" + resolved "https://registry.yarnpkg.com/js-beautify/-/js-beautify-1.14.8.tgz#e0c570c15b5445b006de6d9a3e70fb62f9e408e9" + integrity sha512-4S7HFeI9YfRvRgKnEweohs0tgJj28InHVIj4Nl8Htf96Y6pHg3+tJrmo4ucAM9f7l4SHbFI3IvFAZ2a1eQPbyg== + dependencies: + config-chain "^1.1.13" + editorconfig "^0.15.3" + glob "^8.1.0" + nopt "^6.0.0" + +js-cookie@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/js-cookie/-/js-cookie-2.2.1.tgz#69e106dc5d5806894562902aa5baec3744e9b2b8" + integrity sha512-HvdH2LzI/EAZcUwA8+0nKNtWHqS+ZmijLA30RwZA0bo7ToCckjK5MkGhjED9KoRcXO6BaGI3I9UIzSA1FKFPOQ== + +"js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" + integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== + +js-yaml@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" + integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== + dependencies: + argparse "^2.0.1" + +json-parse-even-better-errors@^2.3.0, json-parse-even-better-errors@^2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" + integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== + +json-schema-to-typescript@11.0.3: + version "11.0.3" + resolved "https://registry.yarnpkg.com/json-schema-to-typescript/-/json-schema-to-typescript-11.0.3.tgz#9b401c2b78329959f1c4c4e0639a6bdcf6a6ed77" + integrity sha512-EaEE9Y4VZ8b9jW5zce5a9L3+p4C9AqgIRHbNVDJahfMnoKzcd4sDb98BLxLdQhJEuRAXyKLg4H66NKm80W8ilg== + dependencies: + "@bcherny/json-schema-ref-parser" "9.0.9" + "@types/json-schema" "^7.0.11" + "@types/lodash" "^4.14.182" + "@types/prettier" "^2.6.1" + cli-color "^2.0.2" + get-stdin "^8.0.0" + glob "^7.1.6" + glob-promise "^4.2.2" + is-glob "^4.0.3" + lodash "^4.17.21" + minimist "^1.2.6" + mkdirp "^1.0.4" + mz "^2.7.0" + prettier "^2.6.2" + +json-schema-traverse@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" + integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== + +json-schema-traverse@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#ae7bcb3656ab77a73ba5c49bf654f38e6b6860e2" + integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug== + +json-schema-typed@^7.0.3: + version "7.0.3" + resolved "https://registry.yarnpkg.com/json-schema-typed/-/json-schema-typed-7.0.3.tgz#23ff481b8b4eebcd2ca123b4fa0409e66469a2d9" + integrity sha512-7DE8mpG+/fVw+dTpjbxnx47TaMnDfOI1jwft9g1VybltZCduyRQPJPvc+zzKY9WPHxhPWczyFuYa6I8Mw4iU5A== + +json5@^2.1.2: + version "2.2.3" + resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283" + integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== + +jsonfile@^6.0.1: + version "6.1.0" + resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.1.0.tgz#bc55b2634793c679ec6403094eb13698a6ec0aae" + integrity sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ== + dependencies: + universalify "^2.0.0" + optionalDependencies: + graceful-fs "^4.1.6" + +jsonwebtoken@^9.0.0: + version "9.0.0" + resolved "https://registry.yarnpkg.com/jsonwebtoken/-/jsonwebtoken-9.0.0.tgz#d0faf9ba1cc3a56255fe49c0961a67e520c1926d" + integrity sha512-tuGfYXxkQGDPnLJ7SibiQgVgeDgfbPq2k2ICcbgqW8WxWLBAxKQM/ZCu/IT8SOSwmaYl4dpTFCW5xZv7YbbWUw== + dependencies: + jws "^3.2.2" + lodash "^4.17.21" + ms "^2.1.1" + semver "^7.3.8" + +jwa@^1.4.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/jwa/-/jwa-1.4.1.tgz#743c32985cb9e98655530d53641b66c8645b039a" + integrity sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA== + dependencies: + buffer-equal-constant-time "1.0.1" + ecdsa-sig-formatter "1.0.11" + safe-buffer "^5.0.1" + +jws@^3.2.2: + version "3.2.2" + resolved "https://registry.yarnpkg.com/jws/-/jws-3.2.2.tgz#001099f3639468c9414000e99995fa52fb478304" + integrity sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA== + dependencies: + jwa "^1.4.1" + safe-buffer "^5.0.1" + +jwt-decode@^3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/jwt-decode/-/jwt-decode-3.1.2.tgz#3fb319f3675a2df0c2895c8f5e9fa4b67b04ed59" + integrity sha512-UfpWE/VZn0iP50d8cz9NrZLM9lSWhcJ+0Gt/nm4by88UL+J1SiKN8/5dkjMmbEzwL2CAe+67GsegCbIKtbp75A== + +kareem@2.4.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/kareem/-/kareem-2.4.1.tgz#7d81ec518204a48c1cb16554af126806c3cd82b0" + integrity sha512-aJ9opVoXroQUPfovYP5kaj2lM7Jn02Gw13bL0lg9v0V7SaUc0qavPs0Eue7d2DcC3NjqI6QAUElXNsuZSeM+EA== + +kind-of@^3.0.2: + version "3.2.2" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" + integrity sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ== + dependencies: + is-buffer "^1.1.5" + +kind-of@^6.0.2: + version "6.0.3" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" + integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== + +klona@^2.0.4, klona@^2.0.5: + version "2.0.6" + resolved "https://registry.yarnpkg.com/klona/-/klona-2.0.6.tgz#85bffbf819c03b2f53270412420a4555ef882e22" + integrity sha512-dhG34DXATL5hSxJbIexCft8FChFXtmskoZYnoPWjXQuebWYCNkVeV3KkGegCK9CP1oswI/vQibS2GY7Em/sJJA== + +leac@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/leac/-/leac-0.6.0.tgz#dcf136e382e666bd2475f44a1096061b70dc0912" + integrity sha512-y+SqErxb8h7nE/fiEX07jsbuhrpO9lL8eca7/Y1nuWV2moNlXhyd59iDGcRf6moVyDMbmTNzL40SUyrFU/yDpg== + +lilconfig@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-2.1.0.tgz#78e23ac89ebb7e1bfbf25b18043de756548e7f52" + integrity sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ== + +lines-and-columns@^1.1.6: + version "1.2.4" + resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" + integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== + +loader-runner@^4.2.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-4.3.0.tgz#c1b4a163b99f614830353b16755e7149ac2314e1" + integrity sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg== + +loader-utils@^2.0.0: + version "2.0.4" + resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-2.0.4.tgz#8b5cb38b5c34a9a018ee1fc0e6a066d1dfcc528c" + integrity sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw== + dependencies: + big.js "^5.2.2" + emojis-list "^3.0.0" + json5 "^2.1.2" + +locate-path@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e" + integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A== + dependencies: + p-locate "^3.0.0" + path-exists "^3.0.0" + +locate-path@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" + integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== + dependencies: + p-locate "^4.1.0" + +lodash.clonedeep@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef" + integrity sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ== + +lodash.get@^4.4.2: + version "4.4.2" + resolved "https://registry.yarnpkg.com/lodash.get/-/lodash.get-4.4.2.tgz#2d177f652fa31e939b4438d5341499dfa3825e99" + integrity sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ== + +lodash.memoize@^4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" + integrity sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag== + +lodash.uniq@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" + integrity sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ== + +lodash@^4.17.15, lodash@^4.17.20, lodash@^4.17.21, lodash@^4.17.4: + version "4.17.21" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" + integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== + +loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.2.0, loose-envify@^1.3.1, loose-envify@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" + integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== + dependencies: + js-tokens "^3.0.0 || ^4.0.0" + +lower-case@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-2.0.2.tgz#6fa237c63dbdc4a82ca0fd882e4722dc5e634e28" + integrity sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg== + dependencies: + tslib "^2.0.3" + +lru-cache@^4.1.5: + version "4.1.5" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.5.tgz#8bbe50ea85bed59bc9e33dcab8235ee9bcf443cd" + integrity sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g== + dependencies: + pseudomap "^1.0.2" + yallist "^2.1.2" + +lru-cache@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" + integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== + dependencies: + yallist "^4.0.0" + +lru-queue@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/lru-queue/-/lru-queue-0.1.0.tgz#2738bd9f0d3cf4f84490c5736c48699ac632cda3" + integrity sha512-BpdYkt9EvGl8OfWHDQPISVpcl5xZthb+XPsbELj5AQXxIC8IriDZIQYjBJPEm5rS420sjZ0TLEzRcq5KdBhYrQ== + dependencies: + es5-ext "~0.10.2" + +make-error@^1.1.1: + version "1.3.6" + resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2" + integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== + +md5@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/md5/-/md5-2.3.0.tgz#c3da9a6aae3a30b46b7b0c349b87b110dc3bda4f" + integrity sha512-T1GITYmFaKuO91vxyoQMFETst+O71VUPEU3ze5GNzDm0OWdP8v1ziTaAEPUr/3kLsY3Sftgz242A1SetQiDL7g== + dependencies: + charenc "0.0.2" + crypt "0.0.2" + is-buffer "~1.1.6" + +mdn-data@2.0.28: + version "2.0.28" + resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.28.tgz#5ec48e7bef120654539069e1ae4ddc81ca490eba" + integrity sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g== + +mdn-data@2.0.30: + version "2.0.30" + resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.30.tgz#ce4df6f80af6cfbe218ecd5c552ba13c4dfa08cc" + integrity sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA== + +media-typer@0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" + integrity sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ== + +memfs@^3.4.12: + version "3.6.0" + resolved "https://registry.yarnpkg.com/memfs/-/memfs-3.6.0.tgz#d7a2110f86f79dd950a8b6df6d57bc984aa185f6" + integrity sha512-EGowvkkgbMcIChjMTMkESFDbZeSh8xZ7kNSF0hAiAN4Jh6jgHCRS0Ga/+C8y6Au+oqpezRHCfPsmJ2+DwAgiwQ== + dependencies: + fs-monkey "^1.0.4" + +memoize-one@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/memoize-one/-/memoize-one-6.0.0.tgz#b2591b871ed82948aee4727dc6abceeeac8c1045" + integrity sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw== + +memoizee@^0.4.15: + version "0.4.15" + resolved "https://registry.yarnpkg.com/memoizee/-/memoizee-0.4.15.tgz#e6f3d2da863f318d02225391829a6c5956555b72" + integrity sha512-UBWmJpLZd5STPm7PMUlOw/TSy972M+z8gcyQ5veOnSDRREz/0bmpyTfKt3/51DhEBqCZQn1udM/5flcSPYhkdQ== + dependencies: + d "^1.0.1" + es5-ext "^0.10.53" + es6-weak-map "^2.0.3" + event-emitter "^0.3.5" + is-promise "^2.2.2" + lru-queue "^0.1.0" + next-tick "^1.1.0" + timers-ext "^0.1.7" + +memory-pager@^1.0.2: + version "1.5.0" + resolved "https://registry.yarnpkg.com/memory-pager/-/memory-pager-1.5.0.tgz#d8751655d22d384682741c972f2c3d6dfa3e66b5" + integrity sha512-ZS4Bp4r/Zoeq6+NLJpP+0Zzm0pR8whtGPf1XExKLJBAczGMnSi3It14OiNCStjQjM6NU1okjQGSxgEZN8eBYKg== + +merge-descriptors@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" + integrity sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w== + +merge-stream@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" + integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== + +method-override@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/method-override/-/method-override-3.0.0.tgz#6ab0d5d574e3208f15b0c9cf45ab52000468d7a2" + integrity sha512-IJ2NNN/mSl9w3kzWB92rcdHpz+HjkxhDJWNDBqSlas+zQdP8wBiJzITPg08M/k2uVvMow7Sk41atndNtt/PHSA== + dependencies: + debug "3.1.0" + methods "~1.1.2" + parseurl "~1.3.2" + vary "~1.1.2" + +methods@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" + integrity sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w== + +micro-memoize@^4.0.14: + version "4.1.2" + resolved "https://registry.yarnpkg.com/micro-memoize/-/micro-memoize-4.1.2.tgz#ce719c1ba1e41592f1cd91c64c5f41dcbf135f36" + integrity sha512-+HzcV2H+rbSJzApgkj0NdTakkC+bnyeiUxgT6/m7mjcz1CmM22KYFKp+EVj1sWe4UYcnriJr5uqHQD/gMHLD+g== + +mime-db@1.52.0, "mime-db@>= 1.43.0 < 2": + version "1.52.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" + integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== + +mime-types@^2.1.12, mime-types@^2.1.27, mime-types@^2.1.31, mime-types@~2.1.24, mime-types@~2.1.34: + version "2.1.35" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" + integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== + dependencies: + mime-db "1.52.0" + +mime@1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" + integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== + +mimic-fn@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" + integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== + +mimic-fn@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-3.1.0.tgz#65755145bbf3e36954b949c16450427451d5ca74" + integrity sha512-Ysbi9uYW9hFyfrThdDEQuykN4Ey6BuwPD2kpI5ES/nFTDn/98yxYNLZJcgUAKPT/mcrLLKaGzJR9YVxJrIdASQ== + +mimic-response@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-3.1.0.tgz#2d1d59af9c1b129815accc2c46a022a5ce1fa3c9" + integrity sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ== + +mini-css-extract-plugin@1.6.2: + version "1.6.2" + resolved "https://registry.yarnpkg.com/mini-css-extract-plugin/-/mini-css-extract-plugin-1.6.2.tgz#83172b4fd812f8fc4a09d6f6d16f924f53990ca8" + integrity sha512-WhDvO3SjGm40oV5y26GjMJYjd2UMqrLAGKy5YS2/3QKJy2F7jgynuHTir/tgUUOiNQu5saXHdc8reo7YuhhT4Q== + dependencies: + loader-utils "^2.0.0" + schema-utils "^3.0.0" + webpack-sources "^1.1.0" + +minimatch@^3.0.3, minimatch@^3.1.1, minimatch@^3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" + integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== + dependencies: + brace-expansion "^1.1.7" + +minimatch@^5.0.1: + version "5.1.6" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.1.6.tgz#1cfcb8cf5522ea69952cd2af95ae09477f122a96" + integrity sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g== + dependencies: + brace-expansion "^2.0.1" + +minimist@^1.2.0, minimist@^1.2.3, minimist@^1.2.6, minimist@^1.2.7: + version "1.2.8" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" + integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== + +mkdirp-classic@^0.5.2, mkdirp-classic@^0.5.3: + version "0.5.3" + resolved "https://registry.yarnpkg.com/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz#fa10c9115cc6d8865be221ba47ee9bed78601113" + integrity sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A== + +mkdirp@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" + integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== + +monaco-editor@^0.38.0: + version "0.38.0" + resolved "https://registry.yarnpkg.com/monaco-editor/-/monaco-editor-0.38.0.tgz#7b3cd16f89b1b8867fcd3c96e67fccee791ff05c" + integrity sha512-11Fkh6yzEmwx7O0YoLxeae0qEGFwmyPRlVxpg7oF9czOOCB/iCjdJrG5I67da5WiXK3YJCxoz9TJFE8Tfq/v9A== + +mongodb-connection-string-url@^2.5.2: + version "2.6.0" + resolved "https://registry.yarnpkg.com/mongodb-connection-string-url/-/mongodb-connection-string-url-2.6.0.tgz#57901bf352372abdde812c81be47b75c6b2ec5cf" + integrity sha512-WvTZlI9ab0QYtTYnuMLgobULWhokRjtC7db9LtcVfJ+Hsnyr5eo6ZtNAt3Ly24XZScGMelOcGtm7lSn0332tPQ== + dependencies: + "@types/whatwg-url" "^8.2.1" + whatwg-url "^11.0.0" + +mongodb@4.8.1: + version "4.8.1" + resolved "https://registry.yarnpkg.com/mongodb/-/mongodb-4.8.1.tgz#596de88ff4519128266d9254dbe5b781c4005796" + integrity sha512-/NyiM3Ox9AwP5zrfT9TXjRKDJbXlLaUDQ9Rg//2lbg8D2A8GXV0VidYYnA/gfdK6uwbnL4FnAflH7FbGw3TS7w== + dependencies: + bson "^4.6.5" + denque "^2.0.1" + mongodb-connection-string-url "^2.5.2" + socks "^2.6.2" + optionalDependencies: + saslprep "^1.0.3" + +mongoose-aggregate-paginate-v2@^1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/mongoose-aggregate-paginate-v2/-/mongoose-aggregate-paginate-v2-1.0.6.tgz#fd2f2564d1bbf52f49a196f0b7b03675913dacca" + integrity sha512-UuALu+mjhQa1K9lMQvjLL3vm3iALvNw8PQNIh2gp1b+tO5hUa0NC0Wf6/8QrT9PSJVTihXaD8hQVy3J4e0jO0Q== + +mongoose-paginate-v2@^1.6.1: + version "1.7.1" + resolved "https://registry.yarnpkg.com/mongoose-paginate-v2/-/mongoose-paginate-v2-1.7.1.tgz#0b390f5eb8e5dca55ffcb1fd7b4d8078636cb8f1" + integrity sha512-J8DJw3zRXcXOKoZv+RvO9tt5HotRnbo2iCR3lke+TtsQsYwQvbY3EgUkPqZXw6qCX2IByvXrW5SGNdAB0od/Cw== + +mongoose@6.5.0: + version "6.5.0" + resolved "https://registry.yarnpkg.com/mongoose/-/mongoose-6.5.0.tgz#5c71aa8d4027e50bfe8d29d6e955e378e010d174" + integrity sha512-swOX8ZEbmCeJaEs29B1j67StBIhuOccNNkipbVhsnLYYCDpNE7heM9W54MFGwN5es9tGGoxINHSzOhJ9kTOZGg== + dependencies: + bson "^4.6.5" + kareem "2.4.1" + mongodb "4.8.1" + mpath "0.9.0" + mquery "4.0.3" + ms "2.1.3" + sift "16.0.0" + +mpath@0.9.0: + version "0.9.0" + resolved "https://registry.yarnpkg.com/mpath/-/mpath-0.9.0.tgz#0c122fe107846e31fc58c75b09c35514b3871904" + integrity sha512-ikJRQTk8hw5DEoFVxHG1Gn9T/xcjtdnOKIU1JTmGjZZlg9LST2mBLmcX3/ICIbgJydT2GOc15RnNy5mHmzfSew== + +mquery@4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/mquery/-/mquery-4.0.3.tgz#4d15f938e6247d773a942c912d9748bd1965f89d" + integrity sha512-J5heI+P08I6VJ2Ky3+33IpCdAvlYGTSUjwTPxkAr8i8EoduPMBX2OY/wa3IKZIQl7MU4SbFk8ndgSKyB/cl1zA== + dependencies: + debug "4.x" + +mrmime@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/mrmime/-/mrmime-1.0.1.tgz#5f90c825fad4bdd41dc914eff5d1a8cfdaf24f27" + integrity sha512-hzzEagAgDyoU1Q6yg5uI+AorQgdvMCur3FcKf7NhMKWsaYg+RnbTyHRa/9IlLF9rf455MOCtcqqrQQ83pPP7Uw== + +ms@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" + integrity sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A== + +ms@2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" + integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== + +ms@2.1.3, ms@^2.1.1: + version "2.1.3" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" + integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== + +mz@^2.7.0: + version "2.7.0" + resolved "https://registry.yarnpkg.com/mz/-/mz-2.7.0.tgz#95008057a56cafadc2bc63dde7f9ff6955948e32" + integrity sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q== + dependencies: + any-promise "^1.0.0" + object-assign "^4.0.1" + thenify-all "^1.0.0" + +nanoid@^3.3.6: + version "3.3.6" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.6.tgz#443380c856d6e9f9824267d960b4236ad583ea4c" + integrity sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA== + +napi-build-utils@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/napi-build-utils/-/napi-build-utils-1.0.2.tgz#b1fddc0b2c46e380a0b7a76f984dd47c41a13806" + integrity sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg== + +needle@^2.5.2: + version "2.9.1" + resolved "https://registry.yarnpkg.com/needle/-/needle-2.9.1.tgz#22d1dffbe3490c2b83e301f7709b6736cd8f2684" + integrity sha512-6R9fqJ5Zcmf+uYaFgdIHmLwNldn5HbK8L5ybn7Uz+ylX/rnOsSp1AHcvQSrCaFN+qNM1wpymHqD7mVasEOlHGQ== + dependencies: + debug "^3.2.6" + iconv-lite "^0.4.4" + sax "^1.2.4" + +negotiator@0.6.3: + version "0.6.3" + resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.3.tgz#58e323a72fedc0d6f9cd4d31fe49f51479590ccd" + integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg== + +neo-async@^2.6.2: + version "2.6.2" + resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" + integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== + +next-tick@1, next-tick@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/next-tick/-/next-tick-1.1.0.tgz#1836ee30ad56d67ef281b22bd199f709449b35eb" + integrity sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ== + +no-case@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/no-case/-/no-case-3.0.4.tgz#d361fd5c9800f558551a8369fc0dcd4662b6124d" + integrity sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg== + dependencies: + lower-case "^2.0.2" + tslib "^2.0.3" + +node-abi@^3.3.0: + version "3.45.0" + resolved "https://registry.yarnpkg.com/node-abi/-/node-abi-3.45.0.tgz#f568f163a3bfca5aacfce1fbeee1fa2cc98441f5" + integrity sha512-iwXuFrMAcFVi/ZoZiqq8BzAdsLw9kxDfTC0HMyjXfSL/6CSDAGD5UmR7azrAgWV1zKYq7dUUMj4owusBWKLsiQ== + dependencies: + semver "^7.3.5" + +node-addon-api@^5.0.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-5.1.0.tgz#49da1ca055e109a23d537e9de43c09cca21eb762" + integrity sha512-eh0GgfEkpnoWDq+VY8OyvYhFEzBk6jIYbRKdIlyTiAXIVJ8PyBaKb0rp7oDtoddbdoHWhq8wwr+XZ81F1rpNdA== + +node-fetch@^2.6.1: + version "2.6.11" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.11.tgz#cde7fc71deef3131ef80a738919f999e6edfff25" + integrity sha512-4I6pdBY1EthSqDmJkiNk3JIT8cswwR9nfeW/cPdUagJYEQG7R95WRH74wpz7ma8Gh/9dI9FP+OU+0E4FvtA55w== + dependencies: + whatwg-url "^5.0.0" + +node-releases@^2.0.12: + version "2.0.12" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.12.tgz#35627cc224a23bfb06fb3380f2b3afaaa7eb1039" + integrity sha512-QzsYKWhXTWx8h1kIvqfnC++o0pEmpRQA/aenALsL2F4pqNVr7YzcdMlDij5WBnwftRbJCNJL/O7zdKaxKPHqgQ== + +nodemailer@^6.9.0: + version "6.9.3" + resolved "https://registry.yarnpkg.com/nodemailer/-/nodemailer-6.9.3.tgz#e4425b85f05d83c43c5cd81bf84ab968f8ef5cbe" + integrity sha512-fy9v3NgTzBngrMFkDsKEj0r02U7jm6XfC3b52eoNV+GCrGj+s8pt5OqhiJdWKuw51zCTdiNR/IUD1z33LIIGpg== + +nodemon@^2.0.6: + version "2.0.22" + resolved "https://registry.yarnpkg.com/nodemon/-/nodemon-2.0.22.tgz#182c45c3a78da486f673d6c1702e00728daf5258" + integrity sha512-B8YqaKMmyuCO7BowF1Z1/mkPqLk6cs/l63Ojtd6otKjMx47Dq1utxfRxcavH1I7VSaL8n5BUaoutadnsX3AAVQ== + dependencies: + chokidar "^3.5.2" + debug "^3.2.7" + ignore-by-default "^1.0.1" + minimatch "^3.1.2" + pstree.remy "^1.1.8" + semver "^5.7.1" + simple-update-notifier "^1.0.7" + supports-color "^5.5.0" + touch "^3.1.0" + undefsafe "^2.0.5" + +noms@0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/noms/-/noms-0.0.0.tgz#da8ebd9f3af9d6760919b27d9cdc8092a7332859" + integrity sha512-lNDU9VJaOPxUmXcLb+HQFeUgQQPtMI24Gt6hgfuMHRJgMRHMF/qZ4HJD3GDru4sSw9IQl2jPjAYnQrdIeLbwow== + dependencies: + inherits "^2.0.1" + readable-stream "~1.0.31" + +nopt@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/nopt/-/nopt-6.0.0.tgz#245801d8ebf409c6df22ab9d95b65e1309cdb16d" + integrity sha512-ZwLpbTgdhuZUnZzjd7nb1ZV+4DoiC6/sfiVKok72ym/4Tlf+DFdlHYmT2JPmcNNWV6Pi3SDf1kT+A4r9RTuT9g== + dependencies: + abbrev "^1.0.0" + +nopt@~1.0.10: + version "1.0.10" + resolved "https://registry.yarnpkg.com/nopt/-/nopt-1.0.10.tgz#6ddd21bd2a31417b92727dd585f8a6f37608ebee" + integrity sha512-NWmpvLSqUrgrAC9HCuxEvb+PSloHpqVu+FqcO4eeF2h5qYRhA7ev6KvelyQAKtegUbC6RypJnlEOhd8vloNKYg== + dependencies: + abbrev "1" + +normalize-path@^3.0.0, normalize-path@~3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" + integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== + +normalize-range@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942" + integrity sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA== + +nth-check@^2.0.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-2.1.1.tgz#c9eab428effce36cd6b92c924bdb000ef1f1ed1d" + integrity sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w== + dependencies: + boolbase "^1.0.0" + +object-assign@^4.0.1, object-assign@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" + integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== + +object-inspect@^1.9.0: + version "1.12.3" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.12.3.tgz#ba62dffd67ee256c8c086dfae69e016cd1f198b9" + integrity sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g== + +object-is@^1.1.5: + version "1.1.5" + resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.1.5.tgz#b9deeaa5fc7f1846a0faecdceec138e5778f53ac" + integrity sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + +object-keys@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" + integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== + +object-to-formdata@^4.4.2: + version "4.5.1" + resolved "https://registry.yarnpkg.com/object-to-formdata/-/object-to-formdata-4.5.1.tgz#b6955a9c505b58df15852fee5f844b418b3eb6fe" + integrity sha512-QiM9D0NiU5jV6J6tjE1g7b4Z2tcUnKs1OPUi4iMb2zH+7jwlcUrASghgkFk9GtzqNNq8rTQJtT8AzjBAvLoNMw== + +object.assign@^4.1.4: + version "4.1.4" + resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.4.tgz#9673c7c7c351ab8c4d0b516f4343ebf4dfb7799f" + integrity sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.4" + has-symbols "^1.0.3" + object-keys "^1.1.1" + +on-exit-leak-free@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/on-exit-leak-free/-/on-exit-leak-free-2.1.0.tgz#5c703c968f7e7f851885f6459bf8a8a57edc9cc4" + integrity sha512-VuCaZZAjReZ3vUwgOB8LxAosIurDiAW0s13rI1YwmaP++jvcxP77AWoQvenZebpCA2m8WC1/EosPYPMjnRAp/w== + +on-finished@2.4.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.4.1.tgz#58c8c44116e54845ad57f14ab10b03533184ac3f" + integrity sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg== + dependencies: + ee-first "1.1.1" + +on-headers@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.2.tgz#772b0ae6aaa525c399e489adfad90c403eb3c28f" + integrity sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA== + +once@^1.3.0, once@^1.3.1, once@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== + dependencies: + wrappy "1" + +onetime@^5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" + integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== + dependencies: + mimic-fn "^2.1.0" + +opener@^1.5.2: + version "1.5.2" + resolved "https://registry.yarnpkg.com/opener/-/opener-1.5.2.tgz#5d37e1f35077b9dcac4301372271afdeb2a13598" + integrity sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A== + +p-limit@^2.0.0, p-limit@^2.2.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" + integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== + dependencies: + p-try "^2.0.0" + +p-locate@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4" + integrity sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ== + dependencies: + p-limit "^2.0.0" + +p-locate@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" + integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== + dependencies: + p-limit "^2.2.0" + +p-try@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" + integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== + +param-case@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/param-case/-/param-case-3.0.4.tgz#7d17fe4aa12bde34d4a77d91acfb6219caad01c5" + integrity sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A== + dependencies: + dot-case "^3.0.4" + tslib "^2.0.3" + +parent-module@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" + integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== + dependencies: + callsites "^3.0.0" + +parse-json@^5.0.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd" + integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg== + dependencies: + "@babel/code-frame" "^7.0.0" + error-ex "^1.3.1" + json-parse-even-better-errors "^2.3.0" + lines-and-columns "^1.1.6" + +parseley@^0.11.0: + version "0.11.0" + resolved "https://registry.yarnpkg.com/parseley/-/parseley-0.11.0.tgz#1ff817c829a02fcc214c9cc0d96b126d772ee814" + integrity sha512-VfcwXlBWgTF+unPcr7yu3HSSA6QUdDaDnrHcytVfj5Z8azAyKBDrYnSIfeSxlrEayndNcLmrXzg+Vxbo6DWRXQ== + dependencies: + leac "^0.6.0" + peberminta "^0.8.0" + +parseurl@~1.3.2, parseurl@~1.3.3: + version "1.3.3" + resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" + integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== + +pascal-case@^3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/pascal-case/-/pascal-case-3.1.2.tgz#b48e0ef2b98e205e7c1dae747d0b1508237660eb" + integrity sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g== + dependencies: + no-case "^3.0.4" + tslib "^2.0.3" + +passport-anonymous@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/passport-anonymous/-/passport-anonymous-1.0.1.tgz#241e37274ec44dfb7f6cad234b41c438386bc117" + integrity sha512-Mk2dls97nLTzHpsWCYQ54IVGucWaiWSHHr3+IhWYAebg4dRgRQIfyoeYrixoxB2z2z4+EM7p9yjC+a3yMB5z5A== + dependencies: + passport-strategy "1.x.x" + +passport-headerapikey@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/passport-headerapikey/-/passport-headerapikey-1.2.2.tgz#b71960523999c9864151b8535c919e3ff5ba75ce" + integrity sha512-4BvVJRrWsNJPrd3UoZfcnnl4zvUWYKEtfYkoDsaOKBsrWHYmzTApCjs7qUbncOLexE9ul0IRiYBFfBG0y9IVQA== + dependencies: + lodash "^4.17.15" + passport-strategy "^1.0.0" + +passport-jwt@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/passport-jwt/-/passport-jwt-4.0.1.tgz#c443795eff322c38d173faa0a3c481479646ec3d" + integrity sha512-UCKMDYhNuGOBE9/9Ycuoyh7vP6jpeTp/+sfMJl7nLff/t6dps+iaeE0hhNkKN8/HZHcJ7lCdOyDxHdDoxoSvdQ== + dependencies: + jsonwebtoken "^9.0.0" + passport-strategy "^1.0.0" + +passport-local@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/passport-local/-/passport-local-1.0.0.tgz#1fe63268c92e75606626437e3b906662c15ba6ee" + integrity sha512-9wCE6qKznvf9mQYYbgJ3sVOHmCWoUNMVFoZzNoznmISbhnNNPhN9xfY3sLmScHMetEJeoY7CXwfhCe7argfQow== + dependencies: + passport-strategy "1.x.x" + +passport-strategy@1.x.x, passport-strategy@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/passport-strategy/-/passport-strategy-1.0.0.tgz#b5539aa8fc225a3d1ad179476ddf236b440f52e4" + integrity sha512-CB97UUvDKJde2V0KDWWB3lyf6PC3FaZP7YxZ2G8OAtn9p4HI9j9JLP9qjOGZFvyl8uwNT8qM+hGnz/n16NI7oA== + +passport@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/passport/-/passport-0.6.0.tgz#e869579fab465b5c0b291e841e6cc95c005fac9d" + integrity sha512-0fe+p3ZnrWRW74fe8+SvCyf4a3Pb2/h7gFkQ8yTJpAO50gDzlfjZUZTO1k5Eg9kUct22OxHLqDZoKUWRHOh9ug== + dependencies: + passport-strategy "1.x.x" + pause "0.0.1" + utils-merge "^1.0.1" + +path-browserify@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-1.0.1.tgz#d98454a9c3753d5790860f16f68867b9e46be1fd" + integrity sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g== + +path-exists@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" + integrity sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ== + +path-exists@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" + integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== + +path-is-absolute@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" + integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== + +path-key@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" + integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== + +path-parse@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" + integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== + +path-to-regexp@0.1.7: + version "0.1.7" + resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" + integrity sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ== + +path-to-regexp@^1.7.0: + version "1.8.0" + resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-1.8.0.tgz#887b3ba9d84393e87a0a0b9f4cb756198b53548a" + integrity sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA== + dependencies: + isarray "0.0.1" + +path-type@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" + integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== + +pause@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/pause/-/pause-0.0.1.tgz#1d408b3fdb76923b9543d96fb4c9dfd535d9cb5d" + integrity sha512-KG8UEiEVkR3wGEb4m5yZkVCzigAD+cVEJck2CzYZO37ZGJfctvVptVO192MwrtPhzONn6go8ylnOdMhKqi4nfg== + +payload@^1.7.2: + version "1.10.2" + resolved "https://registry.yarnpkg.com/payload/-/payload-1.10.2.tgz#13f9fbc9d98b59a81d6b225ac21ad3da34066fbe" + integrity sha512-7Ie8WlcfDDKRVSAK4NGnMtEt8lNuCboYSHbERJMLYbtYNOyHXCmHiRgW3dWZeF+vTtpd8gRPyjwDWr+4hQQayQ== + dependencies: + "@date-io/date-fns" "^2.16.0" + "@dnd-kit/core" "^6.0.7" + "@dnd-kit/sortable" "^7.0.2" + "@faceless-ui/modal" "^2.0.1" + "@faceless-ui/scroll-info" "^1.3.0" + "@faceless-ui/window-info" "^2.1.1" + "@monaco-editor/react" "^4.5.1" + "@swc/core" "^1.3.26" + "@swc/register" "^0.1.10" + "@types/sharp" "^0.31.1" + body-parser "^1.20.1" + bson-objectid "^2.0.4" + compression "^1.7.4" + conf "^10.2.0" + connect-history-api-fallback "^1.6.0" + css-loader "^5.2.7" + css-minimizer-webpack-plugin "^5.0.0" + dataloader "^2.1.0" + date-fns "^2.29.3" + deep-equal "^2.2.0" + deepmerge "^4.2.2" + dotenv "^8.6.0" + express "^4.18.2" + express-fileupload "1.4.0" + express-rate-limit "^5.5.1" + file-loader "^6.2.0" + file-type "16.5.4" + find-up "4.1.0" + flatley "^5.2.0" + fs-extra "^10.1.0" + get-tsconfig "^4.4.0" + graphql "^16.6.0" + graphql-http "^1.17.1" + graphql-playground-middleware-express "^1.7.23" + graphql-query-complexity "^0.12.0" + graphql-scalars "^1.20.1" + graphql-type-json "^0.3.2" + html-webpack-plugin "^5.5.0" + http-status "^1.6.2" + i18next "^22.4.9" + i18next-browser-languagedetector "^6.1.8" + i18next-http-middleware "^3.2.2" + is-hotkey "^0.2.0" + is-plain-object "^5.0.0" + isomorphic-fetch "^3.0.0" + joi "^17.7.0" + json-schema-to-typescript "11.0.3" + jsonwebtoken "^9.0.0" + jwt-decode "^3.1.2" + md5 "^2.3.0" + method-override "^3.0.0" + micro-memoize "^4.0.14" + mini-css-extract-plugin "1.6.2" + minimist "^1.2.7" + mkdirp "^1.0.4" + monaco-editor "^0.38.0" + mongoose "6.5.0" + mongoose-aggregate-paginate-v2 "^1.0.6" + mongoose-paginate-v2 "^1.6.1" + nodemailer "^6.9.0" + object-to-formdata "^4.4.2" + passport "^0.6.0" + passport-anonymous "^1.0.1" + passport-headerapikey "^1.2.2" + passport-jwt "^4.0.1" + passport-local "^1.0.0" + path-browserify "^1.0.1" + pino "^6.4.1" + pino-pretty "^9.1.1" + pluralize "^8.0.0" + postcss "^8.4.21" + postcss-loader "^6.2.1" + postcss-preset-env "^7.8.3" + probe-image-size "^6.0.0" + process "^0.11.10" + qs "^6.11.0" + qs-middleware "^1.0.3" + react "^18.2.0" + react-animate-height "^2.1.2" + react-datepicker "^4.10.0" + react-diff-viewer-continued "^3.2.6" + react-dom "^18.2.0" + react-helmet "^6.1.0" + react-i18next "^11.18.6" + react-router-dom "^5.3.4" + react-router-navigation-prompt "^1.9.6" + react-select "^5.7.3" + react-toastify "^8.2.0" + sanitize-filename "^1.6.3" + sass "^1.57.1" + sass-loader "^12.6.0" + scheduler "^0.23.0" + scmp "^2.1.0" + sharp "^0.31.3" + slate "^0.91.4" + slate-history "^0.86.0" + slate-hyperscript "^0.81.3" + slate-react "^0.92.0" + style-loader "^2.0.0" + swc-loader "^0.2.3" + swc-minify-webpack-plugin "^2.1.0" + terser-webpack-plugin "^5.3.6" + ts-essentials "^7.0.3" + url-loader "^4.1.1" + use-context-selector "^1.4.1" + uuid "^8.3.2" + webpack "^5.78.0" + webpack-bundle-analyzer "^4.8.0" + webpack-cli "^4.10.0" + webpack-dev-middleware "6.0.1" + webpack-hot-middleware "^2.25.3" + +peberminta@^0.8.0: + version "0.8.0" + resolved "https://registry.yarnpkg.com/peberminta/-/peberminta-0.8.0.tgz#acf7b105f3d13c8ac28cad81f2f5fe4698507590" + integrity sha512-YYEs+eauIjDH5nUEGi18EohWE0nV2QbGTqmxQcqgZ/0g+laPCQmuIqq7EBLVi9uim9zMgfJv0QBZEnQ3uHw/Tw== + +peek-readable@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/peek-readable/-/peek-readable-4.1.0.tgz#4ece1111bf5c2ad8867c314c81356847e8a62e72" + integrity sha512-ZI3LnwUv5nOGbQzD9c2iDG6toheuXSZP5esSHBjopsXH4dg19soufvpUGA3uohi5anFtGb2lhAVdHzH6R/Evvg== + +picocolors@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" + integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== + +picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.3: + version "2.3.1" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" + integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== + +pino-abstract-transport@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/pino-abstract-transport/-/pino-abstract-transport-1.0.0.tgz#cc0d6955fffcadb91b7b49ef220a6cc111d48bb3" + integrity sha512-c7vo5OpW4wIS42hUVcT5REsL8ZljsUfBjqV/e2sFxmFEFZiq1XLUp5EYLtuDH6PEHq9W1egWqRbnLUP5FuZmOA== + dependencies: + readable-stream "^4.0.0" + split2 "^4.0.0" + +pino-pretty@^9.1.1: + version "9.4.0" + resolved "https://registry.yarnpkg.com/pino-pretty/-/pino-pretty-9.4.0.tgz#fc4026e83c87272cbdfb7afed121770e6000940c" + integrity sha512-NIudkNLxnl7MGj1XkvsqVyRgo6meFP82ECXF2PlOI+9ghmbGuBUUqKJ7IZPIxpJw4vhhSva0IuiDSAuGh6TV9g== + dependencies: + colorette "^2.0.7" + dateformat "^4.6.3" + fast-copy "^3.0.0" + fast-safe-stringify "^2.1.1" + help-me "^4.0.1" + joycon "^3.1.1" + minimist "^1.2.6" + on-exit-leak-free "^2.1.0" + pino-abstract-transport "^1.0.0" + pump "^3.0.0" + readable-stream "^4.0.0" + secure-json-parse "^2.4.0" + sonic-boom "^3.0.0" + strip-json-comments "^3.1.1" + +pino-std-serializers@^3.1.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/pino-std-serializers/-/pino-std-serializers-3.2.0.tgz#b56487c402d882eb96cd67c257868016b61ad671" + integrity sha512-EqX4pwDPrt3MuOAAUBMU0Tk5kR/YcCM5fNPEzgCO2zJ5HfX0vbiH9HbJglnyeQsN96Kznae6MWD47pZB5avTrg== + +pino@^6.4.1: + version "6.14.0" + resolved "https://registry.yarnpkg.com/pino/-/pino-6.14.0.tgz#b745ea87a99a6c4c9b374e4f29ca7910d4c69f78" + integrity sha512-iuhEDel3Z3hF9Jfe44DPXR8l07bhjuFY3GMHIXbjnY9XcafbyDDwl2sN2vw2GjMPf5Nkoe+OFao7ffn9SXaKDg== + dependencies: + fast-redact "^3.0.0" + fast-safe-stringify "^2.0.8" + flatstr "^1.0.12" + pino-std-serializers "^3.1.0" + process-warning "^1.0.0" + quick-format-unescaped "^4.0.3" + sonic-boom "^1.0.2" + +pirates@^4.0.1: + version "4.0.6" + resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.6.tgz#3018ae32ecfcff6c29ba2267cbf21166ac1f36b9" + integrity sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg== + +pkg-dir@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" + integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== + dependencies: + find-up "^4.0.0" + +pkg-up@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/pkg-up/-/pkg-up-3.1.0.tgz#100ec235cc150e4fd42519412596a28512a0def5" + integrity sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA== + dependencies: + find-up "^3.0.0" + +pluralize@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-8.0.0.tgz#1a6fa16a38d12a1901e0320fa017051c539ce3b1" + integrity sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA== + +postcss-attribute-case-insensitive@^5.0.2: + version "5.0.2" + resolved "https://registry.yarnpkg.com/postcss-attribute-case-insensitive/-/postcss-attribute-case-insensitive-5.0.2.tgz#03d761b24afc04c09e757e92ff53716ae8ea2741" + integrity sha512-XIidXV8fDr0kKt28vqki84fRK8VW8eTuIa4PChv2MqKuT6C9UjmSKzen6KaWhWEoYvwxFCa7n/tC1SZ3tyq4SQ== + dependencies: + postcss-selector-parser "^6.0.10" + +postcss-calc@^9.0.0: + version "9.0.1" + resolved "https://registry.yarnpkg.com/postcss-calc/-/postcss-calc-9.0.1.tgz#a744fd592438a93d6de0f1434c572670361eb6c6" + integrity sha512-TipgjGyzP5QzEhsOZUaIkeO5mKeMFpebWzRogWG/ysonUlnHcq5aJe0jOjpfzUU8PeSaBQnrE8ehR0QA5vs8PQ== + dependencies: + postcss-selector-parser "^6.0.11" + postcss-value-parser "^4.2.0" + +postcss-clamp@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/postcss-clamp/-/postcss-clamp-4.1.0.tgz#7263e95abadd8c2ba1bd911b0b5a5c9c93e02363" + integrity sha512-ry4b1Llo/9zz+PKC+030KUnPITTJAHeOwjfAyyB60eT0AorGLdzp52s31OsPRHRf8NchkgFoG2y6fCfn1IV1Ow== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-color-functional-notation@^4.2.4: + version "4.2.4" + resolved "https://registry.yarnpkg.com/postcss-color-functional-notation/-/postcss-color-functional-notation-4.2.4.tgz#21a909e8d7454d3612d1659e471ce4696f28caec" + integrity sha512-2yrTAUZUab9s6CpxkxC4rVgFEVaR6/2Pipvi6qcgvnYiVqZcbDHEoBDhrXzyb7Efh2CCfHQNtcqWcIruDTIUeg== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-color-hex-alpha@^8.0.4: + version "8.0.4" + resolved "https://registry.yarnpkg.com/postcss-color-hex-alpha/-/postcss-color-hex-alpha-8.0.4.tgz#c66e2980f2fbc1a63f5b079663340ce8b55f25a5" + integrity sha512-nLo2DCRC9eE4w2JmuKgVA3fGL3d01kGq752pVALF68qpGLmx2Qrk91QTKkdUqqp45T1K1XV8IhQpcu1hoAQflQ== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-color-rebeccapurple@^7.1.1: + version "7.1.1" + resolved "https://registry.yarnpkg.com/postcss-color-rebeccapurple/-/postcss-color-rebeccapurple-7.1.1.tgz#63fdab91d878ebc4dd4b7c02619a0c3d6a56ced0" + integrity sha512-pGxkuVEInwLHgkNxUc4sdg4g3py7zUeCQ9sMfwyHAT+Ezk8a4OaaVZ8lIY5+oNqA/BXXgLyXv0+5wHP68R79hg== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-colormin@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/postcss-colormin/-/postcss-colormin-6.0.0.tgz#d4250652e952e1c0aca70c66942da93d3cdeaafe" + integrity sha512-EuO+bAUmutWoZYgHn2T1dG1pPqHU6L4TjzPlu4t1wZGXQ/fxV16xg2EJmYi0z+6r+MGV1yvpx1BHkUaRrPa2bw== + dependencies: + browserslist "^4.21.4" + caniuse-api "^3.0.0" + colord "^2.9.1" + postcss-value-parser "^4.2.0" + +postcss-convert-values@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/postcss-convert-values/-/postcss-convert-values-6.0.0.tgz#ec94a954957e5c3f78f0e8f65dfcda95280b8996" + integrity sha512-U5D8QhVwqT++ecmy8rnTb+RL9n/B806UVaS3m60lqle4YDFcpbS3ae5bTQIh3wOGUSDHSEtMYLs/38dNG7EYFw== + dependencies: + browserslist "^4.21.4" + postcss-value-parser "^4.2.0" + +postcss-custom-media@^8.0.2: + version "8.0.2" + resolved "https://registry.yarnpkg.com/postcss-custom-media/-/postcss-custom-media-8.0.2.tgz#c8f9637edf45fef761b014c024cee013f80529ea" + integrity sha512-7yi25vDAoHAkbhAzX9dHx2yc6ntS4jQvejrNcC+csQJAXjj15e7VcWfMgLqBNAbOvqi5uIa9huOVwdHbf+sKqg== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-custom-properties@^12.1.10: + version "12.1.11" + resolved "https://registry.yarnpkg.com/postcss-custom-properties/-/postcss-custom-properties-12.1.11.tgz#d14bb9b3989ac4d40aaa0e110b43be67ac7845cf" + integrity sha512-0IDJYhgU8xDv1KY6+VgUwuQkVtmYzRwu+dMjnmdMafXYv86SWqfxkc7qdDvWS38vsjaEtv8e0vGOUQrAiMBLpQ== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-custom-selectors@^6.0.3: + version "6.0.3" + resolved "https://registry.yarnpkg.com/postcss-custom-selectors/-/postcss-custom-selectors-6.0.3.tgz#1ab4684d65f30fed175520f82d223db0337239d9" + integrity sha512-fgVkmyiWDwmD3JbpCmB45SvvlCD6z9CG6Ie6Iere22W5aHea6oWa7EM2bpnv2Fj3I94L3VbtvX9KqwSi5aFzSg== + dependencies: + postcss-selector-parser "^6.0.4" + +postcss-dir-pseudo-class@^6.0.5: + version "6.0.5" + resolved "https://registry.yarnpkg.com/postcss-dir-pseudo-class/-/postcss-dir-pseudo-class-6.0.5.tgz#2bf31de5de76added44e0a25ecf60ae9f7c7c26c" + integrity sha512-eqn4m70P031PF7ZQIvSgy9RSJ5uI2171O/OO/zcRNYpJbvaeKFUlar1aJ7rmgiQtbm0FSPsRewjpdS0Oew7MPA== + dependencies: + postcss-selector-parser "^6.0.10" + +postcss-discard-comments@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/postcss-discard-comments/-/postcss-discard-comments-6.0.0.tgz#9ca335e8b68919f301b24ba47dde226a42e535fe" + integrity sha512-p2skSGqzPMZkEQvJsgnkBhCn8gI7NzRH2683EEjrIkoMiwRELx68yoUJ3q3DGSGuQ8Ug9Gsn+OuDr46yfO+eFw== + +postcss-discard-duplicates@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/postcss-discard-duplicates/-/postcss-discard-duplicates-6.0.0.tgz#c26177a6c33070922e67e9a92c0fd23d443d1355" + integrity sha512-bU1SXIizMLtDW4oSsi5C/xHKbhLlhek/0/yCnoMQany9k3nPBq+Ctsv/9oMmyqbR96HYHxZcHyK2HR5P/mqoGA== + +postcss-discard-empty@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/postcss-discard-empty/-/postcss-discard-empty-6.0.0.tgz#06c1c4fce09e22d2a99e667c8550eb8a3a1b9aee" + integrity sha512-b+h1S1VT6dNhpcg+LpyiUrdnEZfICF0my7HAKgJixJLW7BnNmpRH34+uw/etf5AhOlIhIAuXApSzzDzMI9K/gQ== + +postcss-discard-overridden@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/postcss-discard-overridden/-/postcss-discard-overridden-6.0.0.tgz#49c5262db14e975e349692d9024442de7cd8e234" + integrity sha512-4VELwssYXDFigPYAZ8vL4yX4mUepF/oCBeeIT4OXsJPYOtvJumyz9WflmJWTfDwCUcpDR+z0zvCWBXgTx35SVw== + +postcss-double-position-gradients@^3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/postcss-double-position-gradients/-/postcss-double-position-gradients-3.1.2.tgz#b96318fdb477be95997e86edd29c6e3557a49b91" + integrity sha512-GX+FuE/uBR6eskOK+4vkXgT6pDkexLokPaz/AbJna9s5Kzp/yl488pKPjhy0obB475ovfT1Wv8ho7U/cHNaRgQ== + dependencies: + "@csstools/postcss-progressive-custom-properties" "^1.1.0" + postcss-value-parser "^4.2.0" + +postcss-env-function@^4.0.6: + version "4.0.6" + resolved "https://registry.yarnpkg.com/postcss-env-function/-/postcss-env-function-4.0.6.tgz#7b2d24c812f540ed6eda4c81f6090416722a8e7a" + integrity sha512-kpA6FsLra+NqcFnL81TnsU+Z7orGtDTxcOhl6pwXeEq1yFPpRMkCDpHhrz8CFQDr/Wfm0jLiNQ1OsGGPjlqPwA== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-focus-visible@^6.0.4: + version "6.0.4" + resolved "https://registry.yarnpkg.com/postcss-focus-visible/-/postcss-focus-visible-6.0.4.tgz#50c9ea9afa0ee657fb75635fabad25e18d76bf9e" + integrity sha512-QcKuUU/dgNsstIK6HELFRT5Y3lbrMLEOwG+A4s5cA+fx3A3y/JTq3X9LaOj3OC3ALH0XqyrgQIgey/MIZ8Wczw== + dependencies: + postcss-selector-parser "^6.0.9" + +postcss-focus-within@^5.0.4: + version "5.0.4" + resolved "https://registry.yarnpkg.com/postcss-focus-within/-/postcss-focus-within-5.0.4.tgz#5b1d2ec603195f3344b716c0b75f61e44e8d2e20" + integrity sha512-vvjDN++C0mu8jz4af5d52CB184ogg/sSxAFS+oUJQq2SuCe7T5U2iIsVJtsCp2d6R4j0jr5+q3rPkBVZkXD9fQ== + dependencies: + postcss-selector-parser "^6.0.9" + +postcss-font-variant@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/postcss-font-variant/-/postcss-font-variant-5.0.0.tgz#efd59b4b7ea8bb06127f2d031bfbb7f24d32fa66" + integrity sha512-1fmkBaCALD72CK2a9i468mA/+tr9/1cBxRRMXOUaZqO43oWPR5imcyPjXwuv7PXbCid4ndlP5zWhidQVVa3hmA== + +postcss-gap-properties@^3.0.5: + version "3.0.5" + resolved "https://registry.yarnpkg.com/postcss-gap-properties/-/postcss-gap-properties-3.0.5.tgz#f7e3cddcf73ee19e94ccf7cb77773f9560aa2fff" + integrity sha512-IuE6gKSdoUNcvkGIqdtjtcMtZIFyXZhmFd5RUlg97iVEvp1BZKV5ngsAjCjrVy+14uhGBQl9tzmi1Qwq4kqVOg== + +postcss-image-set-function@^4.0.7: + version "4.0.7" + resolved "https://registry.yarnpkg.com/postcss-image-set-function/-/postcss-image-set-function-4.0.7.tgz#08353bd756f1cbfb3b6e93182c7829879114481f" + integrity sha512-9T2r9rsvYzm5ndsBE8WgtrMlIT7VbtTfE7b3BQnudUqnBcBo7L758oc+o+pdj/dUV0l5wjwSdjeOH2DZtfv8qw== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-initial@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-initial/-/postcss-initial-4.0.1.tgz#529f735f72c5724a0fb30527df6fb7ac54d7de42" + integrity sha512-0ueD7rPqX8Pn1xJIjay0AZeIuDoF+V+VvMt/uOnn+4ezUKhZM/NokDeP6DwMNyIoYByuN/94IQnt5FEkaN59xQ== + +postcss-lab-function@^4.2.1: + version "4.2.1" + resolved "https://registry.yarnpkg.com/postcss-lab-function/-/postcss-lab-function-4.2.1.tgz#6fe4c015102ff7cd27d1bd5385582f67ebdbdc98" + integrity sha512-xuXll4isR03CrQsmxyz92LJB2xX9n+pZJ5jE9JgcnmsCammLyKdlzrBin+25dy6wIjfhJpKBAN80gsTlCgRk2w== + dependencies: + "@csstools/postcss-progressive-custom-properties" "^1.1.0" + postcss-value-parser "^4.2.0" + +postcss-loader@^6.2.1: + version "6.2.1" + resolved "https://registry.yarnpkg.com/postcss-loader/-/postcss-loader-6.2.1.tgz#0895f7346b1702103d30fdc66e4d494a93c008ef" + integrity sha512-WbbYpmAaKcux/P66bZ40bpWsBucjx/TTgVVzRZ9yUO8yQfVBlameJ0ZGVaPfH64hNSBh63a+ICP5nqOpBA0w+Q== + dependencies: + cosmiconfig "^7.0.0" + klona "^2.0.5" + semver "^7.3.5" + +postcss-logical@^5.0.4: + version "5.0.4" + resolved "https://registry.yarnpkg.com/postcss-logical/-/postcss-logical-5.0.4.tgz#ec75b1ee54421acc04d5921576b7d8db6b0e6f73" + integrity sha512-RHXxplCeLh9VjinvMrZONq7im4wjWGlRJAqmAVLXyZaXwfDWP73/oq4NdIp+OZwhQUMj0zjqDfM5Fj7qby+B4g== + +postcss-media-minmax@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/postcss-media-minmax/-/postcss-media-minmax-5.0.0.tgz#7140bddec173e2d6d657edbd8554a55794e2a5b5" + integrity sha512-yDUvFf9QdFZTuCUg0g0uNSHVlJ5X1lSzDZjPSFaiCWvjgsvu8vEVxtahPrLMinIDEEGnx6cBe6iqdx5YWz08wQ== + +postcss-merge-longhand@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/postcss-merge-longhand/-/postcss-merge-longhand-6.0.0.tgz#6f627b27db939bce316eaa97e22400267e798d69" + integrity sha512-4VSfd1lvGkLTLYcxFuISDtWUfFS4zXe0FpF149AyziftPFQIWxjvFSKhA4MIxMe4XM3yTDgQMbSNgzIVxChbIg== + dependencies: + postcss-value-parser "^4.2.0" + stylehacks "^6.0.0" + +postcss-merge-rules@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/postcss-merge-rules/-/postcss-merge-rules-6.0.1.tgz#39f165746404e646c0f5c510222ccde4824a86aa" + integrity sha512-a4tlmJIQo9SCjcfiCcCMg/ZCEe0XTkl/xK0XHBs955GWg9xDX3NwP9pwZ78QUOWB8/0XCjZeJn98Dae0zg6AAw== + dependencies: + browserslist "^4.21.4" + caniuse-api "^3.0.0" + cssnano-utils "^4.0.0" + postcss-selector-parser "^6.0.5" + +postcss-minify-font-values@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/postcss-minify-font-values/-/postcss-minify-font-values-6.0.0.tgz#68d4a028f9fa5f61701974724b2cc9445d8e6070" + integrity sha512-zNRAVtyh5E8ndZEYXA4WS8ZYsAp798HiIQ1V2UF/C/munLp2r1UGHwf1+6JFu7hdEhJFN+W1WJQKBrtjhFgEnA== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-minify-gradients@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/postcss-minify-gradients/-/postcss-minify-gradients-6.0.0.tgz#22b5c88cc63091dadbad34e31ff958404d51d679" + integrity sha512-wO0F6YfVAR+K1xVxF53ueZJza3L+R3E6cp0VwuXJQejnNUH0DjcAFe3JEBeTY1dLwGa0NlDWueCA1VlEfiKgAA== + dependencies: + colord "^2.9.1" + cssnano-utils "^4.0.0" + postcss-value-parser "^4.2.0" + +postcss-minify-params@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/postcss-minify-params/-/postcss-minify-params-6.0.0.tgz#2b3a85a9e3b990d7a16866f430f5fd1d5961b539" + integrity sha512-Fz/wMQDveiS0n5JPcvsMeyNXOIMrwF88n7196puSuQSWSa+/Ofc1gDOSY2xi8+A4PqB5dlYCKk/WfqKqsI+ReQ== + dependencies: + browserslist "^4.21.4" + cssnano-utils "^4.0.0" + postcss-value-parser "^4.2.0" + +postcss-minify-selectors@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/postcss-minify-selectors/-/postcss-minify-selectors-6.0.0.tgz#5046c5e8680a586e5a0cad52cc9aa36d6be5bda2" + integrity sha512-ec/q9JNCOC2CRDNnypipGfOhbYPuUkewGwLnbv6omue/PSASbHSU7s6uSQ0tcFRVv731oMIx8k0SP4ZX6be/0g== + dependencies: + postcss-selector-parser "^6.0.5" + +postcss-modules-extract-imports@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz#cda1f047c0ae80c97dbe28c3e76a43b88025741d" + integrity sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw== + +postcss-modules-local-by-default@^4.0.0: + version "4.0.3" + resolved "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.3.tgz#b08eb4f083050708998ba2c6061b50c2870ca524" + integrity sha512-2/u2zraspoACtrbFRnTijMiQtb4GW4BvatjaG/bCjYQo8kLTdevCUlwuBHx2sCnSyrI3x3qj4ZK1j5LQBgzmwA== + dependencies: + icss-utils "^5.0.0" + postcss-selector-parser "^6.0.2" + postcss-value-parser "^4.1.0" + +postcss-modules-scope@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-3.0.0.tgz#9ef3151456d3bbfa120ca44898dfca6f2fa01f06" + integrity sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg== + dependencies: + postcss-selector-parser "^6.0.4" + +postcss-modules-values@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz#d7c5e7e68c3bb3c9b27cbf48ca0bb3ffb4602c9c" + integrity sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ== + dependencies: + icss-utils "^5.0.0" + +postcss-nesting@^10.2.0: + version "10.2.0" + resolved "https://registry.yarnpkg.com/postcss-nesting/-/postcss-nesting-10.2.0.tgz#0b12ce0db8edfd2d8ae0aaf86427370b898890be" + integrity sha512-EwMkYchxiDiKUhlJGzWsD9b2zvq/r2SSubcRrgP+jujMXFzqvANLt16lJANC+5uZ6hjI7lpRmI6O8JIl+8l1KA== + dependencies: + "@csstools/selector-specificity" "^2.0.0" + postcss-selector-parser "^6.0.10" + +postcss-normalize-charset@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/postcss-normalize-charset/-/postcss-normalize-charset-6.0.0.tgz#36cc12457259064969fb96f84df491652a4b0975" + integrity sha512-cqundwChbu8yO/gSWkuFDmKrCZ2vJzDAocheT2JTd0sFNA4HMGoKMfbk2B+J0OmO0t5GUkiAkSM5yF2rSLUjgQ== + +postcss-normalize-display-values@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/postcss-normalize-display-values/-/postcss-normalize-display-values-6.0.0.tgz#8d2961415078644d8c6bbbdaf9a2fdd60f546cd4" + integrity sha512-Qyt5kMrvy7dJRO3OjF7zkotGfuYALETZE+4lk66sziWSPzlBEt7FrUshV6VLECkI4EN8Z863O6Nci4NXQGNzYw== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-normalize-positions@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/postcss-normalize-positions/-/postcss-normalize-positions-6.0.0.tgz#25b96df99a69f8925f730eaee0be74416865e301" + integrity sha512-mPCzhSV8+30FZyWhxi6UoVRYd3ZBJgTRly4hOkaSifo0H+pjDYcii/aVT4YE6QpOil15a5uiv6ftnY3rm0igPg== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-normalize-repeat-style@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-6.0.0.tgz#ddf30ad8762feb5b1eb97f39f251acd7b8353299" + integrity sha512-50W5JWEBiOOAez2AKBh4kRFm2uhrT3O1Uwdxz7k24aKtbD83vqmcVG7zoIwo6xI2FZ/HDlbrCopXhLeTpQib1A== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-normalize-string@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/postcss-normalize-string/-/postcss-normalize-string-6.0.0.tgz#948282647a51e409d69dde7910f0ac2ff97cb5d8" + integrity sha512-KWkIB7TrPOiqb8ZZz6homet2KWKJwIlysF5ICPZrXAylGe2hzX/HSf4NTX2rRPJMAtlRsj/yfkrWGavFuB+c0w== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-normalize-timing-functions@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-6.0.0.tgz#5f13e650b8c43351989fc5de694525cc2539841c" + integrity sha512-tpIXWciXBp5CiFs8sem90IWlw76FV4oi6QEWfQwyeREVwUy39VSeSqjAT7X0Qw650yAimYW5gkl2Gd871N5SQg== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-normalize-unicode@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/postcss-normalize-unicode/-/postcss-normalize-unicode-6.0.0.tgz#741b3310f874616bdcf07764f5503695d3604730" + integrity sha512-ui5crYkb5ubEUDugDc786L/Me+DXp2dLg3fVJbqyAl0VPkAeALyAijF2zOsnZyaS1HyfPuMH0DwyY18VMFVNkg== + dependencies: + browserslist "^4.21.4" + postcss-value-parser "^4.2.0" + +postcss-normalize-url@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/postcss-normalize-url/-/postcss-normalize-url-6.0.0.tgz#d0a31e962a16401fb7deb7754b397a323fb650b4" + integrity sha512-98mvh2QzIPbb02YDIrYvAg4OUzGH7s1ZgHlD3fIdTHLgPLRpv1ZTKJDnSAKr4Rt21ZQFzwhGMXxpXlfrUBKFHw== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-normalize-whitespace@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/postcss-normalize-whitespace/-/postcss-normalize-whitespace-6.0.0.tgz#accb961caa42e25ca4179b60855b79b1f7129d4d" + integrity sha512-7cfE1AyLiK0+ZBG6FmLziJzqQCpTQY+8XjMhMAz8WSBSCsCNNUKujgIgjCAmDT3cJ+3zjTXFkoD15ZPsckArVw== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-opacity-percentage@^1.1.2: + version "1.1.3" + resolved "https://registry.yarnpkg.com/postcss-opacity-percentage/-/postcss-opacity-percentage-1.1.3.tgz#5b89b35551a556e20c5d23eb5260fbfcf5245da6" + integrity sha512-An6Ba4pHBiDtyVpSLymUUERMo2cU7s+Obz6BTrS+gxkbnSBNKSuD0AVUc+CpBMrpVPKKfoVz0WQCX+Tnst0i4A== + +postcss-ordered-values@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/postcss-ordered-values/-/postcss-ordered-values-6.0.0.tgz#374704cdff25560d44061d17ba3c6308837a3218" + integrity sha512-K36XzUDpvfG/nWkjs6d1hRBydeIxGpKS2+n+ywlKPzx1nMYDYpoGbcjhj5AwVYJK1qV2/SDoDEnHzlPD6s3nMg== + dependencies: + cssnano-utils "^4.0.0" + postcss-value-parser "^4.2.0" + +postcss-overflow-shorthand@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/postcss-overflow-shorthand/-/postcss-overflow-shorthand-3.0.4.tgz#7ed6486fec44b76f0eab15aa4866cda5d55d893e" + integrity sha512-otYl/ylHK8Y9bcBnPLo3foYFLL6a6Ak+3EQBPOTR7luMYCOsiVTUk1iLvNf6tVPNGXcoL9Hoz37kpfriRIFb4A== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-page-break@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/postcss-page-break/-/postcss-page-break-3.0.4.tgz#7fbf741c233621622b68d435babfb70dd8c1ee5f" + integrity sha512-1JGu8oCjVXLa9q9rFTo4MbeeA5FMe00/9C7lN4va606Rdb+HkxXtXsmEDrIraQ11fGz/WvKWa8gMuCKkrXpTsQ== + +postcss-place@^7.0.5: + version "7.0.5" + resolved "https://registry.yarnpkg.com/postcss-place/-/postcss-place-7.0.5.tgz#95dbf85fd9656a3a6e60e832b5809914236986c4" + integrity sha512-wR8igaZROA6Z4pv0d+bvVrvGY4GVHihBCBQieXFY3kuSuMyOmEnnfFzHl/tQuqHZkfkIVBEbDvYcFfHmpSet9g== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-preset-env@^7.8.3: + version "7.8.3" + resolved "https://registry.yarnpkg.com/postcss-preset-env/-/postcss-preset-env-7.8.3.tgz#2a50f5e612c3149cc7af75634e202a5b2ad4f1e2" + integrity sha512-T1LgRm5uEVFSEF83vHZJV2z19lHg4yJuZ6gXZZkqVsqv63nlr6zabMH3l4Pc01FQCyfWVrh2GaUeCVy9Po+Aag== + dependencies: + "@csstools/postcss-cascade-layers" "^1.1.1" + "@csstools/postcss-color-function" "^1.1.1" + "@csstools/postcss-font-format-keywords" "^1.0.1" + "@csstools/postcss-hwb-function" "^1.0.2" + "@csstools/postcss-ic-unit" "^1.0.1" + "@csstools/postcss-is-pseudo-class" "^2.0.7" + "@csstools/postcss-nested-calc" "^1.0.0" + "@csstools/postcss-normalize-display-values" "^1.0.1" + "@csstools/postcss-oklab-function" "^1.1.1" + "@csstools/postcss-progressive-custom-properties" "^1.3.0" + "@csstools/postcss-stepped-value-functions" "^1.0.1" + "@csstools/postcss-text-decoration-shorthand" "^1.0.0" + "@csstools/postcss-trigonometric-functions" "^1.0.2" + "@csstools/postcss-unset-value" "^1.0.2" + autoprefixer "^10.4.13" + browserslist "^4.21.4" + css-blank-pseudo "^3.0.3" + css-has-pseudo "^3.0.4" + css-prefers-color-scheme "^6.0.3" + cssdb "^7.1.0" + postcss-attribute-case-insensitive "^5.0.2" + postcss-clamp "^4.1.0" + postcss-color-functional-notation "^4.2.4" + postcss-color-hex-alpha "^8.0.4" + postcss-color-rebeccapurple "^7.1.1" + postcss-custom-media "^8.0.2" + postcss-custom-properties "^12.1.10" + postcss-custom-selectors "^6.0.3" + postcss-dir-pseudo-class "^6.0.5" + postcss-double-position-gradients "^3.1.2" + postcss-env-function "^4.0.6" + postcss-focus-visible "^6.0.4" + postcss-focus-within "^5.0.4" + postcss-font-variant "^5.0.0" + postcss-gap-properties "^3.0.5" + postcss-image-set-function "^4.0.7" + postcss-initial "^4.0.1" + postcss-lab-function "^4.2.1" + postcss-logical "^5.0.4" + postcss-media-minmax "^5.0.0" + postcss-nesting "^10.2.0" + postcss-opacity-percentage "^1.1.2" + postcss-overflow-shorthand "^3.0.4" + postcss-page-break "^3.0.4" + postcss-place "^7.0.5" + postcss-pseudo-class-any-link "^7.1.6" + postcss-replace-overflow-wrap "^4.0.0" + postcss-selector-not "^6.0.1" + postcss-value-parser "^4.2.0" + +postcss-pseudo-class-any-link@^7.1.6: + version "7.1.6" + resolved "https://registry.yarnpkg.com/postcss-pseudo-class-any-link/-/postcss-pseudo-class-any-link-7.1.6.tgz#2693b221902da772c278def85a4d9a64b6e617ab" + integrity sha512-9sCtZkO6f/5ML9WcTLcIyV1yz9D1rf0tWc+ulKcvV30s0iZKS/ONyETvoWsr6vnrmW+X+KmuK3gV/w5EWnT37w== + dependencies: + postcss-selector-parser "^6.0.10" + +postcss-reduce-initial@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/postcss-reduce-initial/-/postcss-reduce-initial-6.0.0.tgz#7d16e83e60e27e2fa42f56ec0b426f1da332eca7" + integrity sha512-s2UOnidpVuXu6JiiI5U+fV2jamAw5YNA9Fdi/GRK0zLDLCfXmSGqQtzpUPtfN66RtCbb9fFHoyZdQaxOB3WxVA== + dependencies: + browserslist "^4.21.4" + caniuse-api "^3.0.0" + +postcss-reduce-transforms@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/postcss-reduce-transforms/-/postcss-reduce-transforms-6.0.0.tgz#28ff2601a6d9b96a2f039b3501526e1f4d584a46" + integrity sha512-FQ9f6xM1homnuy1wLe9lP1wujzxnwt1EwiigtWwuyf8FsqqXUDUp2Ulxf9A5yjlUOTdCJO6lonYjg1mgqIIi2w== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-replace-overflow-wrap@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/postcss-replace-overflow-wrap/-/postcss-replace-overflow-wrap-4.0.0.tgz#d2df6bed10b477bf9c52fab28c568b4b29ca4319" + integrity sha512-KmF7SBPphT4gPPcKZc7aDkweHiKEEO8cla/GjcBK+ckKxiZslIu3C4GCRW3DNfL0o7yW7kMQu9xlZ1kXRXLXtw== + +postcss-selector-not@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/postcss-selector-not/-/postcss-selector-not-6.0.1.tgz#8f0a709bf7d4b45222793fc34409be407537556d" + integrity sha512-1i9affjAe9xu/y9uqWH+tD4r6/hDaXJruk8xn2x1vzxC2U3J3LKO3zJW4CyxlNhA56pADJ/djpEwpH1RClI2rQ== + dependencies: + postcss-selector-parser "^6.0.10" + +postcss-selector-parser@^6.0.10, postcss-selector-parser@^6.0.11, postcss-selector-parser@^6.0.2, postcss-selector-parser@^6.0.4, postcss-selector-parser@^6.0.5, postcss-selector-parser@^6.0.9: + version "6.0.13" + resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.13.tgz#d05d8d76b1e8e173257ef9d60b706a8e5e99bf1b" + integrity sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ== + dependencies: + cssesc "^3.0.0" + util-deprecate "^1.0.2" + +postcss-svgo@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/postcss-svgo/-/postcss-svgo-6.0.0.tgz#7b18742d38d4505a0455bbe70d52b49f00eaf69d" + integrity sha512-r9zvj/wGAoAIodn84dR/kFqwhINp5YsJkLoujybWG59grR/IHx+uQ2Zo+IcOwM0jskfYX3R0mo+1Kip1VSNcvw== + dependencies: + postcss-value-parser "^4.2.0" + svgo "^3.0.2" + +postcss-unique-selectors@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/postcss-unique-selectors/-/postcss-unique-selectors-6.0.0.tgz#c94e9b0f7bffb1203894e42294b5a1b3fb34fbe1" + integrity sha512-EPQzpZNxOxP7777t73RQpZE5e9TrnCrkvp7AH7a0l89JmZiPnS82y216JowHXwpBCQitfyxrof9TK3rYbi7/Yw== + dependencies: + postcss-selector-parser "^6.0.5" + +postcss-value-parser@^4.1.0, postcss-value-parser@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514" + integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== + +postcss@^8.2.15, postcss@^8.4.21, postcss@^8.4.24: + version "8.4.24" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.24.tgz#f714dba9b2284be3cc07dbd2fc57ee4dc972d2df" + integrity sha512-M0RzbcI0sO/XJNucsGjvWU9ERWxb/ytp1w6dKtxTKgixdtQDq4rmx/g8W1hnaheq9jgwL/oyEdH5Bc4WwJKMqg== + dependencies: + nanoid "^3.3.6" + picocolors "^1.0.0" + source-map-js "^1.0.2" + +prebuild-install@^7.1.1: + version "7.1.1" + resolved "https://registry.yarnpkg.com/prebuild-install/-/prebuild-install-7.1.1.tgz#de97d5b34a70a0c81334fd24641f2a1702352e45" + integrity sha512-jAXscXWMcCK8GgCoHOfIr0ODh5ai8mj63L2nWrjuAgXE6tDyYGnx4/8o/rCgU+B4JSyZBKbeZqzhtwtC3ovxjw== + dependencies: + detect-libc "^2.0.0" + expand-template "^2.0.3" + github-from-package "0.0.0" + minimist "^1.2.3" + mkdirp-classic "^0.5.3" + napi-build-utils "^1.0.1" + node-abi "^3.3.0" + pump "^3.0.0" + rc "^1.2.7" + simple-get "^4.0.0" + tar-fs "^2.0.0" + tunnel-agent "^0.6.0" + +prettier@^2.6.2: + version "2.8.8" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.8.8.tgz#e8c5d7e98a4305ffe3de2e1fc4aca1a71c28b1da" + integrity sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q== + +pretty-error@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/pretty-error/-/pretty-error-4.0.0.tgz#90a703f46dd7234adb46d0f84823e9d1cb8f10d6" + integrity sha512-AoJ5YMAcXKYxKhuJGdcvse+Voc6v1RgnsR3nWcYU7q4t6z0Q6T86sv5Zq8VIRbOWWFpvdGE83LtdSMNd+6Y0xw== + dependencies: + lodash "^4.17.20" + renderkid "^3.0.0" + +pretty@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/pretty/-/pretty-2.0.0.tgz#adbc7960b7bbfe289a557dc5f737619a220d06a5" + integrity sha512-G9xUchgTEiNpormdYBl+Pha50gOUovT18IvAe7EYMZ1/f9W/WWMPRn+xI68yXNMUk3QXHDwo/1wV/4NejVNe1w== + dependencies: + condense-newlines "^0.2.1" + extend-shallow "^2.0.1" + js-beautify "^1.6.12" + +probe-image-size@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/probe-image-size/-/probe-image-size-6.0.0.tgz#4a85b19d5af4e29a8de7d53a9aa036f6fd02f5f4" + integrity sha512-99PZ5+RU4gqiTfK5ZDMDkZtn6eL4WlKfFyVJV7lFQvH3iGmQ85DqMTOdxorERO26LHkevR2qsxnHp0x/2UDJPA== + dependencies: + deepmerge "^4.0.0" + needle "^2.5.2" + stream-parser "~0.3.1" + +process-nextick-args@~2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" + integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== + +process-warning@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/process-warning/-/process-warning-1.0.0.tgz#980a0b25dc38cd6034181be4b7726d89066b4616" + integrity sha512-du4wfLyj4yCZq1VupnVSZmRsPJsNuxoDQFdCFHLaYiEbFBD7QE0a+I4D7hOxrVnh78QE/YipFAj9lXHiXocV+Q== + +process@^0.11.10: + version "0.11.10" + resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" + integrity sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A== + +prop-types@^15.6.0, prop-types@^15.6.1, prop-types@^15.6.2, prop-types@^15.7.2, prop-types@^15.8.1: + version "15.8.1" + resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.8.1.tgz#67d87bf1a694f48435cf332c24af10214a3140b5" + integrity sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg== + dependencies: + loose-envify "^1.4.0" + object-assign "^4.1.1" + react-is "^16.13.1" + +proto-list@~1.2.1: + version "1.2.4" + resolved "https://registry.yarnpkg.com/proto-list/-/proto-list-1.2.4.tgz#212d5bfe1318306a420f6402b8e26ff39647a849" + integrity sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA== + +proxy-addr@~2.0.7: + version "2.0.7" + resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.7.tgz#f19fe69ceab311eeb94b42e70e8c2070f9ba1025" + integrity sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg== + dependencies: + forwarded "0.2.0" + ipaddr.js "1.9.1" + +proxy-from-env@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz#e102f16ca355424865755d2c9e8ea4f24d58c3e2" + integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg== + +pseudomap@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" + integrity sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ== + +pstree.remy@^1.1.8: + version "1.1.8" + resolved "https://registry.yarnpkg.com/pstree.remy/-/pstree.remy-1.1.8.tgz#c242224f4a67c21f686839bbdb4ac282b8373d3a" + integrity sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w== + +pump@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" + integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== + dependencies: + end-of-stream "^1.1.0" + once "^1.3.1" + +punycode@^2.1.0, punycode@^2.1.1: + version "2.3.0" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.0.tgz#f67fa67c94da8f4d0cfff981aee4118064199b8f" + integrity sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA== + +qs-middleware@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/qs-middleware/-/qs-middleware-1.0.3.tgz#84f3535275ba20fd00c2122efacce6ab01092c19" + integrity sha512-ymlixxD/0Bj3BMY9x1z8ENdQdhkmsIbDNyVvfM8soHn5p/CRFlLPrmtxmE5aG//q1PzHHSGuLi+6QlHezivseg== + dependencies: + qs "~6.4.0" + +qs@6.11.0: + version "6.11.0" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.11.0.tgz#fd0d963446f7a65e1367e01abd85429453f0c37a" + integrity sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q== + dependencies: + side-channel "^1.0.4" + +qs@^6.11.0, qs@^6.9.1: + version "6.11.2" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.11.2.tgz#64bea51f12c1f5da1bc01496f48ffcff7c69d7d9" + integrity sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA== + dependencies: + side-channel "^1.0.4" + +qs@~6.4.0: + version "6.4.1" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.4.1.tgz#2bad97710a5b661c366b378b1e3a44a592ff45e6" + integrity sha512-LQy1Q1fcva/UsnP/6Iaa4lVeM49WiOitu2T4hZCyA/elLKu37L99qcBJk4VCCk+rdLvnMzfKyiN3SZTqdAZGSQ== + +quick-format-unescaped@^4.0.3: + version "4.0.4" + resolved "https://registry.yarnpkg.com/quick-format-unescaped/-/quick-format-unescaped-4.0.4.tgz#93ef6dd8d3453cbc7970dd614fad4c5954d6b5a7" + integrity sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg== + +randombytes@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" + integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== + dependencies: + safe-buffer "^5.1.0" + +range-parser@^1.2.1, range-parser@~1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" + integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== + +raw-body@2.5.1: + version "2.5.1" + resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.5.1.tgz#fe1b1628b181b700215e5fd42389f98b71392857" + integrity sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig== + dependencies: + bytes "3.1.2" + http-errors "2.0.0" + iconv-lite "0.4.24" + unpipe "1.0.0" + +raw-body@2.5.2: + version "2.5.2" + resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.5.2.tgz#99febd83b90e08975087e8f1f9419a149366b68a" + integrity sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA== + dependencies: + bytes "3.1.2" + http-errors "2.0.0" + iconv-lite "0.4.24" + unpipe "1.0.0" + +rc@^1.2.7: + version "1.2.8" + resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" + integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw== + dependencies: + deep-extend "^0.6.0" + ini "~1.3.0" + minimist "^1.2.0" + strip-json-comments "~2.0.1" + +react-animate-height@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/react-animate-height/-/react-animate-height-2.1.2.tgz#9b450fc64d46f10f5e07da8d0d5e2c47b9f15030" + integrity sha512-A9jfz/4CTdsIsE7WCQtO9UkOpMBcBRh8LxyHl2eoZz1ki02jpyUL5xt58gabd0CyeLQ8fRyQ+s2lyV2Ufu8Owg== + dependencies: + classnames "^2.2.5" + prop-types "^15.6.1" + +react-datepicker@^4.10.0: + version "4.14.1" + resolved "https://registry.yarnpkg.com/react-datepicker/-/react-datepicker-4.14.1.tgz#f9f7925d0a40e3195048bbd22a5faa635765163d" + integrity sha512-uiPfjD+25KI5WOfCAXlzQgSLyksTagk3wwKn1KGBdF19YtybFDregRmcoNNGveQHAbT10SJZdCvk/8pbc7zxJg== + dependencies: + "@popperjs/core" "^2.9.2" + classnames "^2.2.6" + date-fns "^2.24.0" + prop-types "^15.7.2" + react-onclickoutside "^6.12.2" + react-popper "^2.3.0" + +react-diff-viewer-continued@^3.2.6: + version "3.2.6" + resolved "https://registry.yarnpkg.com/react-diff-viewer-continued/-/react-diff-viewer-continued-3.2.6.tgz#96382463b5de6838d95323c407442349b1c3a26e" + integrity sha512-GrzyqQnjIMoej+jMjWvtVSsQqhXgzEGqpXlJ2dAGfOk7Q26qcm8Gu6xtI430PBUyZsERe8BJSQf+7VZZo8IBNQ== + dependencies: + "@emotion/css" "^11.10.5" + classnames "^2.3.1" + diff "^5.1.0" + memoize-one "^6.0.0" + prop-types "^15.8.1" + +react-dom@18.2.0, react-dom@^18.2.0: + version "18.2.0" + resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-18.2.0.tgz#22aaf38708db2674ed9ada224ca4aa708d821e3d" + integrity sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g== + dependencies: + loose-envify "^1.1.0" + scheduler "^0.23.0" + +react-fast-compare@^3.0.1, react-fast-compare@^3.1.1: + version "3.2.2" + resolved "https://registry.yarnpkg.com/react-fast-compare/-/react-fast-compare-3.2.2.tgz#929a97a532304ce9fee4bcae44234f1ce2c21d49" + integrity sha512-nsO+KSNgo1SbJqJEYRE9ERzo7YtYbou/OqjSQKxV7jcKox7+usiUVZOAC+XnDOABXggQTno0Y1CpVnuWEc1boQ== + +react-helmet@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/react-helmet/-/react-helmet-6.1.0.tgz#a750d5165cb13cf213e44747502652e794468726" + integrity sha512-4uMzEY9nlDlgxr61NL3XbKRy1hEkXmKNXhjbAIOVw5vcFrsdYbH2FEwcNyWvWinl103nXgzYNlns9ca+8kFiWw== + dependencies: + object-assign "^4.1.1" + prop-types "^15.7.2" + react-fast-compare "^3.1.1" + react-side-effect "^2.1.0" + +react-i18next@^11.18.6: + version "11.18.6" + resolved "https://registry.yarnpkg.com/react-i18next/-/react-i18next-11.18.6.tgz#e159c2960c718c1314f1e8fcaa282d1c8b167887" + integrity sha512-yHb2F9BiT0lqoQDt8loZ5gWP331GwctHz9tYQ8A2EIEUu+CcEdjBLQWli1USG3RdWQt3W+jqQLg/d4rrQR96LA== + dependencies: + "@babel/runtime" "^7.14.5" + html-parse-stringify "^3.0.1" + +react-is@^16.13.1, react-is@^16.6.0, react-is@^16.7.0: + version "16.13.1" + resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" + integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== + +react-onclickoutside@^6.12.2: + version "6.13.0" + resolved "https://registry.yarnpkg.com/react-onclickoutside/-/react-onclickoutside-6.13.0.tgz#e165ea4e5157f3da94f4376a3ab3e22a565f4ffc" + integrity sha512-ty8So6tcUpIb+ZE+1HAhbLROvAIJYyJe/1vRrrcmW+jLsaM+/powDRqxzo6hSh9CuRZGSL1Q8mvcF5WRD93a0A== + +react-popper@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/react-popper/-/react-popper-2.3.0.tgz#17891c620e1320dce318bad9fede46a5f71c70ba" + integrity sha512-e1hj8lL3uM+sgSR4Lxzn5h1GxBlpa4CQz0XLF8kx4MDrDRWY0Ena4c97PUeSX9i5W3UAfDP0z0FXCTQkoXUl3Q== + dependencies: + react-fast-compare "^3.0.1" + warning "^4.0.2" + +react-router-dom@^5.3.4: + version "5.3.4" + resolved "https://registry.yarnpkg.com/react-router-dom/-/react-router-dom-5.3.4.tgz#2ed62ffd88cae6db134445f4a0c0ae8b91d2e5e6" + integrity sha512-m4EqFMHv/Ih4kpcBCONHbkT68KoAeHN4p3lAGoNryfHi0dMy0kCzEZakiKRsvg5wHZ/JLrLW8o8KomWiz/qbYQ== + dependencies: + "@babel/runtime" "^7.12.13" + history "^4.9.0" + loose-envify "^1.3.1" + prop-types "^15.6.2" + react-router "5.3.4" + tiny-invariant "^1.0.2" + tiny-warning "^1.0.0" + +react-router-navigation-prompt@^1.9.6: + version "1.9.6" + resolved "https://registry.yarnpkg.com/react-router-navigation-prompt/-/react-router-navigation-prompt-1.9.6.tgz#a949252dfbae8c40508671beb6d5995f0b089ac4" + integrity sha512-l0sAtbroHK8i1/Eyy29XcrMpBEt0R08BaScgMUt8r5vWWbLz7G0ChOikayTCQm7QgDFsHw8gVnxDJb7TBZCAKg== + +react-router@5.3.4: + version "5.3.4" + resolved "https://registry.yarnpkg.com/react-router/-/react-router-5.3.4.tgz#8ca252d70fcc37841e31473c7a151cf777887bb5" + integrity sha512-Ys9K+ppnJah3QuaRiLxk+jDWOR1MekYQrlytiXxC1RyfbdsZkS5pvKAzCCr031xHixZwpnsYNT5xysdFHQaYsA== + dependencies: + "@babel/runtime" "^7.12.13" + history "^4.9.0" + hoist-non-react-statics "^3.1.0" + loose-envify "^1.3.1" + path-to-regexp "^1.7.0" + prop-types "^15.6.2" + react-is "^16.6.0" + tiny-invariant "^1.0.2" + tiny-warning "^1.0.0" + +react-select@^5.7.3: + version "5.7.3" + resolved "https://registry.yarnpkg.com/react-select/-/react-select-5.7.3.tgz#fa0dc9a23cad6ff3871ad3829f6083a4b54961a2" + integrity sha512-z8i3NCuFFWL3w27xq92rBkVI2onT0jzIIPe480HlBjXJ3b5o6Q+Clp4ydyeKrj9DZZ3lrjawwLC5NGl0FSvUDg== + dependencies: + "@babel/runtime" "^7.12.0" + "@emotion/cache" "^11.4.0" + "@emotion/react" "^11.8.1" + "@floating-ui/dom" "^1.0.1" + "@types/react-transition-group" "^4.4.0" + memoize-one "^6.0.0" + prop-types "^15.6.0" + react-transition-group "^4.3.0" + use-isomorphic-layout-effect "^1.1.2" + +react-side-effect@^2.1.0: + version "2.1.2" + resolved "https://registry.yarnpkg.com/react-side-effect/-/react-side-effect-2.1.2.tgz#dc6345b9e8f9906dc2eeb68700b615e0b4fe752a" + integrity sha512-PVjOcvVOyIILrYoyGEpDN3vmYNLdy1CajSFNt4TDsVQC5KpTijDvWVoR+/7Rz2xT978D8/ZtFceXxzsPwZEDvw== + +react-toastify@^8.2.0: + version "8.2.0" + resolved "https://registry.yarnpkg.com/react-toastify/-/react-toastify-8.2.0.tgz#ef7d56bdfdc6272ca6b228368ab564721c3a3244" + integrity sha512-Pg2Ju7NngAamarFvLwqrFomJ57u/Ay6i6zfLurt/qPynWkAkOthu6vxfqYpJCyNhHRhR4hu7+bySSeWWJu6PAg== + dependencies: + clsx "^1.1.1" + +react-transition-group@^4.3.0, react-transition-group@^4.4.2: + version "4.4.5" + resolved "https://registry.yarnpkg.com/react-transition-group/-/react-transition-group-4.4.5.tgz#e53d4e3f3344da8521489fbef8f2581d42becdd1" + integrity sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g== + dependencies: + "@babel/runtime" "^7.5.5" + dom-helpers "^5.0.1" + loose-envify "^1.4.0" + prop-types "^15.6.2" + +react@18.2.0, react@^18.2.0: + version "18.2.0" + resolved "https://registry.yarnpkg.com/react/-/react-18.2.0.tgz#555bd98592883255fa00de14f1151a917b5d77d5" + integrity sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ== + dependencies: + loose-envify "^1.1.0" + +readable-stream@^3.1.1, readable-stream@^3.4.0, readable-stream@^3.5.0, readable-stream@^3.6.0: + version "3.6.2" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.2.tgz#56a9b36ea965c00c5a93ef31eb111a0f11056967" + integrity sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA== + dependencies: + inherits "^2.0.3" + string_decoder "^1.1.1" + util-deprecate "^1.0.1" + +readable-stream@^4.0.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-4.4.0.tgz#55ce132d60a988c460d75c631e9ccf6a7229b468" + integrity sha512-kDMOq0qLtxV9f/SQv522h8cxZBqNZXuXNyjyezmfAAuribMyVXziljpQ/uQhfE1XLg2/TLTW2DsnoE4VAi/krg== + dependencies: + abort-controller "^3.0.0" + buffer "^6.0.3" + events "^3.3.0" + process "^0.11.10" + +readable-stream@~1.0.31: + version "1.0.34" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.0.34.tgz#125820e34bc842d2f2aaafafe4c2916ee32c157c" + integrity sha512-ok1qVCJuRkNmvebYikljxJA/UEsKwLl2nI1OmaqAu4/UE+h0wKCHok4XkL/gvi39OacXvw59RJUOFUkDib2rHg== + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.1" + isarray "0.0.1" + string_decoder "~0.10.x" + +readable-stream@~2.3.6: + version "2.3.8" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.8.tgz#91125e8042bba1b9887f49345f6277027ce8be9b" + integrity sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA== + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.3" + isarray "~1.0.0" + process-nextick-args "~2.0.0" + safe-buffer "~5.1.1" + string_decoder "~1.1.1" + util-deprecate "~1.0.1" + +readable-web-to-node-stream@^3.0.0: + version "3.0.2" + resolved "https://registry.yarnpkg.com/readable-web-to-node-stream/-/readable-web-to-node-stream-3.0.2.tgz#5d52bb5df7b54861fd48d015e93a2cb87b3ee0bb" + integrity sha512-ePeK6cc1EcKLEhJFt/AebMCLL+GgSKhuygrZ/GLaKZYEecIgIECf4UaUuaByiGtzckwR4ain9VzUh95T1exYGw== + dependencies: + readable-stream "^3.6.0" + +readdirp@~3.6.0: + version "3.6.0" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" + integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== + dependencies: + picomatch "^2.2.1" + +rechoir@^0.7.0: + version "0.7.1" + resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.7.1.tgz#9478a96a1ca135b5e88fc027f03ee92d6c645686" + integrity sha512-/njmZ8s1wVeR6pjTZ+0nCnv8SpZNRMT2D1RLOJQESlYFDBvwpTA4KWJpZ+sBJ4+vhjILRcK7JIFdGCdxEAAitg== + dependencies: + resolve "^1.9.0" + +regenerator-runtime@^0.13.11: + version "0.13.11" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz#f6dca3e7ceec20590d07ada785636a90cdca17f9" + integrity sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg== + +regexp.prototype.flags@^1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.5.0.tgz#fe7ce25e7e4cca8db37b6634c8a2c7009199b9cb" + integrity sha512-0SutC3pNudRKgquxGoRGIz946MZVHqbNfPjBdxeOhBrdgDKlRoXmYLQN9xRbrR09ZXWeGAdPuif7egofn6v5LA== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + functions-have-names "^1.2.3" + +relateurl@^0.2.7: + version "0.2.7" + resolved "https://registry.yarnpkg.com/relateurl/-/relateurl-0.2.7.tgz#54dbf377e51440aca90a4cd274600d3ff2d888a9" + integrity sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog== + +renderkid@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/renderkid/-/renderkid-3.0.0.tgz#5fd823e4d6951d37358ecc9a58b1f06836b6268a" + integrity sha512-q/7VIQA8lmM1hF+jn+sFSPWGlMkSAeNYcPLmDQx2zzuiDfaLrOmumR8iaUKlenFgh0XRPIUeSPlH3A+AW3Z5pg== + dependencies: + css-select "^4.1.3" + dom-converter "^0.2.0" + htmlparser2 "^6.1.0" + lodash "^4.17.21" + strip-ansi "^6.0.1" + +require-directory@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" + integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q== + +require-from-string@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909" + integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== + +resend@^0.12.0: + version "0.12.2" + resolved "https://registry.yarnpkg.com/resend/-/resend-0.12.2.tgz#32f61299aabdeae00d21c347f0ee856e8e839e16" + integrity sha512-T4+n1DgsmyQ+S2omb5xIyhoG0ppGEqq5itRsBrssrUTLI6xiEg0IuZJ3RbnPjnU3HR2jrVaOOvQIDuZXTm1bCg== + dependencies: + "@react-email/render" "0.0.6" + axios "1.3.4" + +resolve-cwd@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-3.0.0.tgz#0f0075f1bb2544766cf73ba6a6e2adfebcb13f2d" + integrity sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg== + dependencies: + resolve-from "^5.0.0" + +resolve-from@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" + integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== + +resolve-from@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" + integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== + +resolve-pathname@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/resolve-pathname/-/resolve-pathname-3.0.0.tgz#99d02224d3cf263689becbb393bc560313025dcd" + integrity sha512-C7rARubxI8bXFNB/hqcp/4iUeIXJhJZvFPFPiSPRnhU5UPxzMFIl+2E6yY6c4k9giDJAhtV+enfA+G89N6Csng== + +resolve-pkg-maps@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz#616b3dc2c57056b5588c31cdf4b3d64db133720f" + integrity sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw== + +resolve@^1.19.0, resolve@^1.9.0: + version "1.22.2" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.2.tgz#0ed0943d4e301867955766c9f3e1ae6d01c6845f" + integrity sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g== + dependencies: + is-core-module "^2.11.0" + path-parse "^1.0.7" + supports-preserve-symlinks-flag "^1.0.0" + +safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: + version "5.1.2" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" + integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== + +safe-buffer@5.2.1, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@~5.2.0: + version "5.2.1" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" + integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== + +"safer-buffer@>= 2.1.2 < 3": + version "2.1.2" + resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" + integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== + +sanitize-filename@^1.6.3: + version "1.6.3" + resolved "https://registry.yarnpkg.com/sanitize-filename/-/sanitize-filename-1.6.3.tgz#755ebd752045931977e30b2025d340d7c9090378" + integrity sha512-y/52Mcy7aw3gRm7IrcGDFx/bCk4AhRh2eI9luHOQM86nZsqwiRkkq2GekHXBBD+SmPidc8i2PqtYZl+pWJ8Oeg== + dependencies: + truncate-utf8-bytes "^1.0.0" + +saslprep@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/saslprep/-/saslprep-1.0.3.tgz#4c02f946b56cf54297e347ba1093e7acac4cf226" + integrity sha512-/MY/PEMbk2SuY5sScONwhUDsV2p77Znkb/q3nSVstq/yQzYJOH/Azh29p9oJLsl3LnQwSvZDKagDGBsBwSooag== + dependencies: + sparse-bitfield "^3.0.3" + +sass-loader@^12.6.0: + version "12.6.0" + resolved "https://registry.yarnpkg.com/sass-loader/-/sass-loader-12.6.0.tgz#5148362c8e2cdd4b950f3c63ac5d16dbfed37bcb" + integrity sha512-oLTaH0YCtX4cfnJZxKSLAyglED0naiYfNG1iXfU5w1LNZ+ukoA5DtyDIN5zmKVZwYNJP4KRc5Y3hkWga+7tYfA== + dependencies: + klona "^2.0.4" + neo-async "^2.6.2" + +sass@^1.57.1: + version "1.63.6" + resolved "https://registry.yarnpkg.com/sass/-/sass-1.63.6.tgz#481610e612902e0c31c46b46cf2dad66943283ea" + integrity sha512-MJuxGMHzaOW7ipp+1KdELtqKbfAWbH7OLIdoSMnVe3EXPMTmxTmlaZDCTsgIpPCs3w99lLo9/zDKkOrJuT5byw== + dependencies: + chokidar ">=3.0.0 <4.0.0" + immutable "^4.0.0" + source-map-js ">=0.6.2 <2.0.0" + +sax@^1.2.4: + version "1.2.4" + resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" + integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== + +scheduler@^0.23.0: + version "0.23.0" + resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.23.0.tgz#ba8041afc3d30eb206a487b6b384002e4e61fdfe" + integrity sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw== + dependencies: + loose-envify "^1.1.0" + +schema-utils@^3.0.0, schema-utils@^3.1.1, schema-utils@^3.2.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-3.3.0.tgz#f50a88877c3c01652a15b622ae9e9795df7a60fe" + integrity sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg== + dependencies: + "@types/json-schema" "^7.0.8" + ajv "^6.12.5" + ajv-keywords "^3.5.2" + +schema-utils@^4.0.0, schema-utils@^4.0.1: + version "4.2.0" + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-4.2.0.tgz#70d7c93e153a273a805801882ebd3bff20d89c8b" + integrity sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw== + dependencies: + "@types/json-schema" "^7.0.9" + ajv "^8.9.0" + ajv-formats "^2.1.1" + ajv-keywords "^5.1.0" + +scmp@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/scmp/-/scmp-2.1.0.tgz#37b8e197c425bdeb570ab91cc356b311a11f9c9a" + integrity sha512-o/mRQGk9Rcer/jEEw/yw4mwo3EU/NvYvp577/Btqrym9Qy5/MdWGBqipbALgd2lrdWTJ5/gqDusxfnQBxOxT2Q== + +scroll-into-view-if-needed@^2.2.20: + version "2.2.31" + resolved "https://registry.yarnpkg.com/scroll-into-view-if-needed/-/scroll-into-view-if-needed-2.2.31.tgz#d3c482959dc483e37962d1521254e3295d0d1587" + integrity sha512-dGCXy99wZQivjmjIqihaBQNjryrz5rueJY7eHfTdyWEiR4ttYpsajb14rn9s5d4DY4EcY6+4+U/maARBXJedkA== + dependencies: + compute-scroll-into-view "^1.0.20" + +secure-json-parse@^2.4.0: + version "2.7.0" + resolved "https://registry.yarnpkg.com/secure-json-parse/-/secure-json-parse-2.7.0.tgz#5a5f9cd6ae47df23dba3151edd06855d47e09862" + integrity sha512-6aU+Rwsezw7VR8/nyvKTx8QpWH9FrcYiXXlqC4z5d5XQBDRqtbfsRjnwGyqbi3gddNtWHuEk9OANUotL26qKUw== + +selderee@^0.10.0: + version "0.10.0" + resolved "https://registry.yarnpkg.com/selderee/-/selderee-0.10.0.tgz#ec83d6044d9026668dc9bd2561acfde99a4e3a1c" + integrity sha512-DEL/RW/f4qLw/NrVg97xKaEBC8IpzIG2fvxnzCp3Z4yk4jQ3MXom+Imav9wApjxX2dfS3eW7x0DXafJr85i39A== + dependencies: + parseley "^0.11.0" + +semver@^5.6.0, semver@^5.7.1: + version "5.7.1" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" + integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== + +semver@^7.3.5, semver@^7.3.8: + version "7.5.3" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.5.3.tgz#161ce8c2c6b4b3bdca6caadc9fa3317a4c4fe88e" + integrity sha512-QBlUtyVk/5EeHbi7X0fw6liDZc7BBmEaSYn01fMU1OUYbf6GPsbTtd8WmnqbI20SeycoHSeiybkE/q1Q+qlThQ== + dependencies: + lru-cache "^6.0.0" + +semver@~7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.0.0.tgz#5f3ca35761e47e05b206c6daff2cf814f0316b8e" + integrity sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A== + +send@0.18.0: + version "0.18.0" + resolved "https://registry.yarnpkg.com/send/-/send-0.18.0.tgz#670167cc654b05f5aa4a767f9113bb371bc706be" + integrity sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg== + dependencies: + debug "2.6.9" + depd "2.0.0" + destroy "1.2.0" + encodeurl "~1.0.2" + escape-html "~1.0.3" + etag "~1.8.1" + fresh "0.5.2" + http-errors "2.0.0" + mime "1.6.0" + ms "2.1.3" + on-finished "2.4.1" + range-parser "~1.2.1" + statuses "2.0.1" + +serialize-javascript@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-6.0.1.tgz#b206efb27c3da0b0ab6b52f48d170b7996458e5c" + integrity sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w== + dependencies: + randombytes "^2.1.0" + +serve-static@1.15.0: + version "1.15.0" + resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.15.0.tgz#faaef08cffe0a1a62f60cad0c4e513cff0ac9540" + integrity sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g== + dependencies: + encodeurl "~1.0.2" + escape-html "~1.0.3" + parseurl "~1.3.3" + send "0.18.0" + +setprototypeof@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424" + integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw== + +shallow-clone@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/shallow-clone/-/shallow-clone-3.0.1.tgz#8f2981ad92531f55035b01fb230769a40e02efa3" + integrity sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA== + dependencies: + kind-of "^6.0.2" + +sharp@^0.31.3: + version "0.31.3" + resolved "https://registry.yarnpkg.com/sharp/-/sharp-0.31.3.tgz#60227edc5c2be90e7378a210466c99aefcf32688" + integrity sha512-XcR4+FCLBFKw1bdB+GEhnUNXNXvnt0tDo4WsBsraKymuo/IAuPuCBVAL2wIkUw2r/dwFW5Q5+g66Kwl2dgDFVg== + dependencies: + color "^4.2.3" + detect-libc "^2.0.1" + node-addon-api "^5.0.0" + prebuild-install "^7.1.1" + semver "^7.3.8" + simple-get "^4.0.1" + tar-fs "^2.1.1" + tunnel-agent "^0.6.0" + +shebang-command@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" + integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== + dependencies: + shebang-regex "^3.0.0" + +shebang-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" + integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== + +side-channel@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf" + integrity sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw== + dependencies: + call-bind "^1.0.0" + get-intrinsic "^1.0.2" + object-inspect "^1.9.0" + +sift@16.0.0: + version "16.0.0" + resolved "https://registry.yarnpkg.com/sift/-/sift-16.0.0.tgz#447991577db61f1a8fab727a8a98a6db57a23eb8" + integrity sha512-ILTjdP2Mv9V1kIxWMXeMTIRbOBrqKc4JAXmFMnFq3fKeyQ2Qwa3Dw1ubcye3vR+Y6ofA0b9gNDr/y2t6eUeIzQ== + +sigmund@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/sigmund/-/sigmund-1.0.1.tgz#3ff21f198cad2175f9f3b781853fd94d0d19b590" + integrity sha512-fCvEXfh6NWpm+YSuY2bpXb/VIihqWA6hLsgboC+0nl71Q7N7o2eaCW8mJa/NLvQhs6jpd3VZV4UiUQlV6+lc8g== + +simple-concat@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/simple-concat/-/simple-concat-1.0.1.tgz#f46976082ba35c2263f1c8ab5edfe26c41c9552f" + integrity sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q== + +simple-get@^4.0.0, simple-get@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/simple-get/-/simple-get-4.0.1.tgz#4a39db549287c979d352112fa03fd99fd6bc3543" + integrity sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA== + dependencies: + decompress-response "^6.0.0" + once "^1.3.1" + simple-concat "^1.0.0" + +simple-swizzle@^0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/simple-swizzle/-/simple-swizzle-0.2.2.tgz#a4da6b635ffcccca33f70d17cb92592de95e557a" + integrity sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg== + dependencies: + is-arrayish "^0.3.1" + +simple-update-notifier@^1.0.7: + version "1.1.0" + resolved "https://registry.yarnpkg.com/simple-update-notifier/-/simple-update-notifier-1.1.0.tgz#67694c121de354af592b347cdba798463ed49c82" + integrity sha512-VpsrsJSUcJEseSbMHkrsrAVSdvVS5I96Qo1QAQ4FxQ9wXFcB+pjj7FB7/us9+GcgfW4ziHtYMc1J0PLczb55mg== + dependencies: + semver "~7.0.0" + +sirv@^1.0.7: + version "1.0.19" + resolved "https://registry.yarnpkg.com/sirv/-/sirv-1.0.19.tgz#1d73979b38c7fe91fcba49c85280daa9c2363b49" + integrity sha512-JuLThK3TnZG1TAKDwNIqNq6QA2afLOCcm+iE8D1Kj3GA40pSPsxQjjJl0J8X3tsR7T+CP1GavpzLwYkgVLWrZQ== + dependencies: + "@polka/url" "^1.0.0-next.20" + mrmime "^1.0.0" + totalist "^1.0.0" + +slate-history@^0.86.0: + version "0.86.0" + resolved "https://registry.yarnpkg.com/slate-history/-/slate-history-0.86.0.tgz#5554612271d2fc1018a7918be3961bb66e620c58" + integrity sha512-OxObL9tbhgwvSlnKSCpGIh7wnuaqvOj5jRExGjEyCU2Ke8ctf22HjT+jw7GEi9ttLzNTUmTEU3YIzqKGeqN+og== + dependencies: + is-plain-object "^5.0.0" + +slate-hyperscript@^0.81.3: + version "0.81.3" + resolved "https://registry.yarnpkg.com/slate-hyperscript/-/slate-hyperscript-0.81.3.tgz#0c8f446d6bef717d2fe855239fb86a000ba2d0d2" + integrity sha512-A/jvoLTAgeRcJaUPQCYOikCJxSws6+/jkL7mM+QuZljNd7EA5YqafGA7sVBJRFpcoSsDRUIah1yNiC/7vxZPYg== + dependencies: + is-plain-object "^5.0.0" + +slate-react@^0.92.0: + version "0.92.0" + resolved "https://registry.yarnpkg.com/slate-react/-/slate-react-0.92.0.tgz#eb158ac2a33d962f48c466c4c8cc7bc14c1c6633" + integrity sha512-xEDKu5RKw5f0N95l1UeNQnrB0Pxh4JPjpIZR/BVsMo0ININnLAknR99gLo46bl/Ffql4mr7LeaxQRoXxbFtJOQ== + dependencies: + "@juggle/resize-observer" "^3.4.0" + "@types/is-hotkey" "^0.1.1" + "@types/lodash" "^4.14.149" + direction "^1.0.3" + is-hotkey "^0.1.6" + is-plain-object "^5.0.0" + lodash "^4.17.4" + scroll-into-view-if-needed "^2.2.20" + tiny-invariant "1.0.6" + +slate@^0.91.4: + version "0.91.4" + resolved "https://registry.yarnpkg.com/slate/-/slate-0.91.4.tgz#759764d63c8a8a7aff29a29e598e593ed80277f9" + integrity sha512-aUJ3rpjrdi5SbJ5G1Qjr3arytfRkEStTmHjBfWq2A2Q8MybacIzkScSvGJjQkdTk3djCK9C9SEOt39sSeZFwTw== + dependencies: + immer "^9.0.6" + is-plain-object "^5.0.0" + tiny-warning "^1.0.3" + +smart-buffer@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/smart-buffer/-/smart-buffer-4.2.0.tgz#6e1d71fa4f18c05f7d0ff216dd16a481d0e8d9ae" + integrity sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg== + +socks@^2.6.2: + version "2.7.1" + resolved "https://registry.yarnpkg.com/socks/-/socks-2.7.1.tgz#d8e651247178fde79c0663043e07240196857d55" + integrity sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ== + dependencies: + ip "^2.0.0" + smart-buffer "^4.2.0" + +sonic-boom@^1.0.2: + version "1.4.1" + resolved "https://registry.yarnpkg.com/sonic-boom/-/sonic-boom-1.4.1.tgz#d35d6a74076624f12e6f917ade7b9d75e918f53e" + integrity sha512-LRHh/A8tpW7ru89lrlkU4AszXt1dbwSjVWguGrmlxE7tawVmDBlI1PILMkXAxJTwqhgsEeTHzj36D5CmHgQmNg== + dependencies: + atomic-sleep "^1.0.0" + flatstr "^1.0.12" + +sonic-boom@^3.0.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/sonic-boom/-/sonic-boom-3.3.0.tgz#cffab6dafee3b2bcb88d08d589394198bee1838c" + integrity sha512-LYxp34KlZ1a2Jb8ZQgFCK3niIHzibdwtwNUWKg0qQRzsDoJ3Gfgkf8KdBTFU3SkejDEIlWwnSnpVdOZIhFMl/g== + dependencies: + atomic-sleep "^1.0.0" + +source-list-map@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.1.tgz#3993bd873bfc48479cca9ea3a547835c7c154b34" + integrity sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw== + +"source-map-js@>=0.6.2 <2.0.0", source-map-js@^1.0.1, source-map-js@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.0.2.tgz#adbc361d9c62df380125e7f161f71c826f1e490c" + integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw== + +source-map-support@^0.5.13, source-map-support@^0.5.17, source-map-support@~0.5.20: + version "0.5.21" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f" + integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== + dependencies: + buffer-from "^1.0.0" + source-map "^0.6.0" + +source-map@^0.5.7: + version "0.5.7" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" + integrity sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ== + +source-map@^0.6.0, source-map@~0.6.0, source-map@~0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" + integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== + +sparse-bitfield@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/sparse-bitfield/-/sparse-bitfield-3.0.3.tgz#ff4ae6e68656056ba4b3e792ab3334d38273ca11" + integrity sha512-kvzhi7vqKTfkh0PZU+2D2PIllw2ymqJKujUcyPMd9Y75Nv4nPbGJZXNhxsgdQab2BmlDct1YnfQCguEvHr7VsQ== + dependencies: + memory-pager "^1.0.2" + +split2@^4.0.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/split2/-/split2-4.2.0.tgz#c9c5920904d148bab0b9f67145f245a86aadbfa4" + integrity sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg== + +state-local@^1.0.6: + version "1.0.7" + resolved "https://registry.yarnpkg.com/state-local/-/state-local-1.0.7.tgz#da50211d07f05748d53009bee46307a37db386d5" + integrity sha512-HTEHMNieakEnoe33shBYcZ7NX83ACUjCu8c40iOGEZsngj9zRnkqS9j1pqQPXwobB0ZcVTk27REb7COQ0UR59w== + +statuses@2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/statuses/-/statuses-2.0.1.tgz#55cb000ccf1d48728bd23c685a063998cf1a1b63" + integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ== + +stop-iteration-iterator@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/stop-iteration-iterator/-/stop-iteration-iterator-1.0.0.tgz#6a60be0b4ee757d1ed5254858ec66b10c49285e4" + integrity sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ== + dependencies: + internal-slot "^1.0.4" + +stream-browserify@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-3.0.0.tgz#22b0a2850cdf6503e73085da1fc7b7d0c2122f2f" + integrity sha512-H73RAHsVBapbim0tU2JwwOiXUj+fikfiaoYAKHF3VJfA0pe2BCzkhAHBlLG6REzE+2WNZcxOXjK7lkso+9euLA== + dependencies: + inherits "~2.0.4" + readable-stream "^3.5.0" + +stream-parser@~0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/stream-parser/-/stream-parser-0.3.1.tgz#1618548694420021a1182ff0af1911c129761773" + integrity sha512-bJ/HgKq41nlKvlhccD5kaCr/P+Hu0wPNKPJOH7en+YrJu/9EgqUF+88w5Jb6KNcjOFMhfX4B2asfeAtIGuHObQ== + dependencies: + debug "2" + +streamsearch@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/streamsearch/-/streamsearch-1.1.0.tgz#404dd1e2247ca94af554e841a8ef0eaa238da764" + integrity sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg== + +string-width@^4.1.0, string-width@^4.2.0: + version "4.2.3" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.1" + +string_decoder@^1.1.1: + version "1.3.0" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" + integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== + dependencies: + safe-buffer "~5.2.0" + +string_decoder@~0.10.x: + version "0.10.31" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94" + integrity sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ== + +string_decoder@~1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" + integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== + dependencies: + safe-buffer "~5.1.0" + +strip-ansi@^6.0.0, strip-ansi@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== + dependencies: + ansi-regex "^5.0.1" + +strip-json-comments@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" + integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== + +strip-json-comments@~2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" + integrity sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ== + +strnum@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/strnum/-/strnum-1.0.5.tgz#5c4e829fe15ad4ff0d20c3db5ac97b73c9b072db" + integrity sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA== + +strtok3@^6.2.4: + version "6.3.0" + resolved "https://registry.yarnpkg.com/strtok3/-/strtok3-6.3.0.tgz#358b80ffe6d5d5620e19a073aa78ce947a90f9a0" + integrity sha512-fZtbhtvI9I48xDSywd/somNqgUHl2L2cstmXCCif0itOf96jeW18MBSyrLuNicYQVkvpOxkZtkzujiTJ9LW5Jw== + dependencies: + "@tokenizer/token" "^0.3.0" + peek-readable "^4.1.0" + +style-loader@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-2.0.0.tgz#9669602fd4690740eaaec137799a03addbbc393c" + integrity sha512-Z0gYUJmzZ6ZdRUqpg1r8GsaFKypE+3xAzuFeMuoHgjc9KZv3wMyCRjQIWEbhoFSq7+7yoHXySDJyyWQaPajeiQ== + dependencies: + loader-utils "^2.0.0" + schema-utils "^3.0.0" + +stylehacks@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/stylehacks/-/stylehacks-6.0.0.tgz#9fdd7c217660dae0f62e14d51c89f6c01b3cb738" + integrity sha512-+UT589qhHPwz6mTlCLSt/vMNTJx8dopeJlZAlBMJPWA3ORqu6wmQY7FBXf+qD+FsqoBJODyqNxOUP3jdntFRdw== + dependencies: + browserslist "^4.21.4" + postcss-selector-parser "^6.0.4" + +stylis@4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/stylis/-/stylis-4.2.0.tgz#79daee0208964c8fe695a42fcffcac633a211a51" + integrity sha512-Orov6g6BB1sDfYgzWfTHDOxamtX1bE/zo104Dh9e6fqJ3PooipYyfJ0pUmrZO2wAvO8YbEyeFrkV91XTsGMSrw== + +supports-color@^5.3.0, supports-color@^5.5.0: + version "5.5.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" + integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== + dependencies: + has-flag "^3.0.0" + +supports-color@^7.1.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" + integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== + dependencies: + has-flag "^4.0.0" + +supports-color@^8.0.0: + version "8.1.1" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" + integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== + dependencies: + has-flag "^4.0.0" + +supports-preserve-symlinks-flag@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" + integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== + +svgo@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/svgo/-/svgo-3.0.2.tgz#5e99eeea42c68ee0dc46aa16da093838c262fe0a" + integrity sha512-Z706C1U2pb1+JGP48fbazf3KxHrWOsLme6Rv7imFBn5EnuanDW1GPaA/P1/dvObE670JDePC3mnj0k0B7P0jjQ== + dependencies: + "@trysound/sax" "0.2.0" + commander "^7.2.0" + css-select "^5.1.0" + css-tree "^2.2.1" + csso "^5.0.5" + picocolors "^1.0.0" + +swc-loader@^0.2.3: + version "0.2.3" + resolved "https://registry.yarnpkg.com/swc-loader/-/swc-loader-0.2.3.tgz#6792f1c2e4c9ae9bf9b933b3e010210e270c186d" + integrity sha512-D1p6XXURfSPleZZA/Lipb3A8pZ17fP4NObZvFCDjK/OKljroqDpPmsBdTraWhVBqUNpcWBQY1imWdoPScRlQ7A== + +swc-minify-webpack-plugin@^2.1.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/swc-minify-webpack-plugin/-/swc-minify-webpack-plugin-2.1.1.tgz#2c63fe592d49541733d7557b3af8f97c7ffa78b9" + integrity sha512-/9ud/libNWUC5p71vXWhW/O2Nc0essW8D9pY4P4ol0ceM8OcFbNr41R9YFqTkmktqUL2t0WwXau+FkR4T1+PJA== + +tabbable@^5.3.3: + version "5.3.3" + resolved "https://registry.yarnpkg.com/tabbable/-/tabbable-5.3.3.tgz#aac0ff88c73b22d6c3c5a50b1586310006b47fbf" + integrity sha512-QD9qKY3StfbZqWOPLp0++pOrAVb/HbUi5xCc8cUo4XjP19808oaMiDzn0leBY5mCespIBM0CIZePzZjgzR83kA== + +tapable@^2.0.0, tapable@^2.1.1, tapable@^2.2.0: + version "2.2.1" + resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.2.1.tgz#1967a73ef4060a82f12ab96af86d52fdb76eeca0" + integrity sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ== + +tar-fs@^2.0.0, tar-fs@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/tar-fs/-/tar-fs-2.1.1.tgz#489a15ab85f1f0befabb370b7de4f9eb5cbe8784" + integrity sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng== + dependencies: + chownr "^1.1.1" + mkdirp-classic "^0.5.2" + pump "^3.0.0" + tar-stream "^2.1.4" + +tar-stream@^2.1.4: + version "2.2.0" + resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-2.2.0.tgz#acad84c284136b060dc3faa64474aa9aebd77287" + integrity sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ== + dependencies: + bl "^4.0.3" + end-of-stream "^1.4.1" + fs-constants "^1.0.0" + inherits "^2.0.3" + readable-stream "^3.1.1" + +terser-webpack-plugin@^5.3.6, terser-webpack-plugin@^5.3.7: + version "5.3.9" + resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-5.3.9.tgz#832536999c51b46d468067f9e37662a3b96adfe1" + integrity sha512-ZuXsqE07EcggTWQjXUj+Aot/OMcD0bMKGgF63f7UxYcu5/AJF53aIpK1YoP5xR9l6s/Hy2b+t1AM0bLNPRuhwA== + dependencies: + "@jridgewell/trace-mapping" "^0.3.17" + jest-worker "^27.4.5" + schema-utils "^3.1.1" + serialize-javascript "^6.0.1" + terser "^5.16.8" + +terser@^5.10.0, terser@^5.16.8: + version "5.18.2" + resolved "https://registry.yarnpkg.com/terser/-/terser-5.18.2.tgz#ff3072a0faf21ffd38f99acc9a0ddf7b5f07b948" + integrity sha512-Ah19JS86ypbJzTzvUCX7KOsEIhDaRONungA4aYBjEP3JZRf4ocuDzTg4QWZnPn9DEMiMYGJPiSOy7aykoCc70w== + dependencies: + "@jridgewell/source-map" "^0.3.3" + acorn "^8.8.2" + commander "^2.20.0" + source-map-support "~0.5.20" + +thenify-all@^1.0.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/thenify-all/-/thenify-all-1.6.0.tgz#1a1918d402d8fc3f98fbf234db0bcc8cc10e9726" + integrity sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA== + dependencies: + thenify ">= 3.1.0 < 4" + +"thenify@>= 3.1.0 < 4": + version "3.3.1" + resolved "https://registry.yarnpkg.com/thenify/-/thenify-3.3.1.tgz#8932e686a4066038a016dd9e2ca46add9838a95f" + integrity sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw== + dependencies: + any-promise "^1.0.0" + +through2@^2.0.1: + version "2.0.5" + resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd" + integrity sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ== + dependencies: + readable-stream "~2.3.6" + xtend "~4.0.1" + +timers-ext@^0.1.7: + version "0.1.7" + resolved "https://registry.yarnpkg.com/timers-ext/-/timers-ext-0.1.7.tgz#6f57ad8578e07a3fb9f91d9387d65647555e25c6" + integrity sha512-b85NUNzTSdodShTIbky6ZF02e8STtVVfD+fu4aXXShEELpozH+bCpJLYMPZbsABN2wDH7fJpqIoXxJpzbf0NqQ== + dependencies: + es5-ext "~0.10.46" + next-tick "1" + +tiny-invariant@1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/tiny-invariant/-/tiny-invariant-1.0.6.tgz#b3f9b38835e36a41c843a3b0907a5a7b3755de73" + integrity sha512-FOyLWWVjG+aC0UqG76V53yAWdXfH8bO6FNmyZOuUrzDzK8DI3/JRY25UD7+g49JWM1LXwymsKERB+DzI0dTEQA== + +tiny-invariant@^1.0.2: + version "1.3.1" + resolved "https://registry.yarnpkg.com/tiny-invariant/-/tiny-invariant-1.3.1.tgz#8560808c916ef02ecfd55e66090df23a4b7aa642" + integrity sha512-AD5ih2NlSssTCwsMznbvwMZpJ1cbhkGd2uueNxzv2jDlEeZdU04JQfRnggJQ8DrcVBGjAsCKwFBbDlVNtEMlzw== + +tiny-warning@^1.0.0, tiny-warning@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/tiny-warning/-/tiny-warning-1.0.3.tgz#94a30db453df4c643d0fd566060d60a875d84754" + integrity sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA== + +to-fast-properties@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" + integrity sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog== + +to-regex-range@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" + integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== + dependencies: + is-number "^7.0.0" + +toidentifier@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.1.tgz#3be34321a88a820ed1bd80dfaa33e479fbb8dd35" + integrity sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA== + +token-types@^4.1.1: + version "4.2.1" + resolved "https://registry.yarnpkg.com/token-types/-/token-types-4.2.1.tgz#0f897f03665846982806e138977dbe72d44df753" + integrity sha512-6udB24Q737UD/SDsKAHI9FCRP7Bqc9D/MQUV02ORQg5iskjtLJlZJNdN4kKtcdtwCeWIwIHDGaUsTsCCAa8sFQ== + dependencies: + "@tokenizer/token" "^0.3.0" + ieee754 "^1.2.1" + +totalist@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/totalist/-/totalist-1.1.0.tgz#a4d65a3e546517701e3e5c37a47a70ac97fe56df" + integrity sha512-gduQwd1rOdDMGxFG1gEvhV88Oirdo2p+KjoYFU7k2g+i7n6AFFbDQ5kMPUsW0pNbfQsB/cwXvT1i4Bue0s9g5g== + +touch@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/touch/-/touch-3.1.0.tgz#fe365f5f75ec9ed4e56825e0bb76d24ab74af83b" + integrity sha512-WBx8Uy5TLtOSRtIq+M03/sKDrXCLHxwDcquSP2c43Le03/9serjQBIztjRz6FkJez9D/hleyAXTBGLwwZUw9lA== + dependencies: + nopt "~1.0.10" + +tr46@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/tr46/-/tr46-3.0.0.tgz#555c4e297a950617e8eeddef633c87d4d9d6cbf9" + integrity sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA== + dependencies: + punycode "^2.1.1" + +tr46@~0.0.3: + version "0.0.3" + resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" + integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw== + +truncate-utf8-bytes@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/truncate-utf8-bytes/-/truncate-utf8-bytes-1.0.2.tgz#405923909592d56f78a5818434b0b78489ca5f2b" + integrity sha512-95Pu1QXQvruGEhv62XCMO3Mm90GscOCClvrIUwCM0PYOXK3kaF3l3sIHxx71ThJfcbM2O5Au6SO3AWCSEfW4mQ== + dependencies: + utf8-byte-length "^1.0.1" + +ts-essentials@^7.0.3: + version "7.0.3" + resolved "https://registry.yarnpkg.com/ts-essentials/-/ts-essentials-7.0.3.tgz#686fd155a02133eedcc5362dc8b5056cde3e5a38" + integrity sha512-8+gr5+lqO3G84KdiTSMRLtuyJ+nTBVRKuCrK4lidMPdVeEp0uqC875uE5NMcaA7YYMN7XsNiFQuMvasF8HT/xQ== + +ts-node@^9.1.1: + version "9.1.1" + resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-9.1.1.tgz#51a9a450a3e959401bda5f004a72d54b936d376d" + integrity sha512-hPlt7ZACERQGf03M253ytLY3dHbGNGrAq9qIHWUY9XHYl1z7wYngSr3OQ5xmui8o2AaxsONxIzjafLUiWBo1Fg== + dependencies: + arg "^4.1.0" + create-require "^1.1.0" + diff "^4.0.1" + make-error "^1.1.1" + source-map-support "^0.5.17" + yn "3.1.1" + +tslib@^1.11.1: + version "1.14.1" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" + integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== + +tslib@^2.0.0, tslib@^2.0.3, tslib@^2.3.1, tslib@^2.5.0: + version "2.6.0" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.0.tgz#b295854684dbda164e181d259a22cd779dcd7bc3" + integrity sha512-7At1WUettjcSRHXCyYtTselblcHl9PJFFVKiCAy/bY97+BPZXSQ2wbq0P9s8tK2G7dFQfNnlJnPAiArVBVBsfA== + +tunnel-agent@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" + integrity sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w== + dependencies: + safe-buffer "^5.0.1" + +type-is@~1.6.18: + version "1.6.18" + resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" + integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g== + dependencies: + media-typer "0.3.0" + mime-types "~2.1.24" + +type@^1.0.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/type/-/type-1.2.0.tgz#848dd7698dafa3e54a6c479e759c4bc3f18847a0" + integrity sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg== + +type@^2.7.2: + version "2.7.2" + resolved "https://registry.yarnpkg.com/type/-/type-2.7.2.tgz#2376a15a3a28b1efa0f5350dcf72d24df6ef98d0" + integrity sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw== + +typescript@^4.8.4: + version "4.9.5" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.9.5.tgz#095979f9bcc0d09da324d58d03ce8f8374cbe65a" + integrity sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g== + +undefsafe@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/undefsafe/-/undefsafe-2.0.5.tgz#38733b9327bdcd226db889fb723a6efd162e6e2c" + integrity sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA== + +unfetch@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/unfetch/-/unfetch-4.2.0.tgz#7e21b0ef7d363d8d9af0fb929a5555f6ef97a3be" + integrity sha512-F9p7yYCn6cIW9El1zi0HI6vqpeIvBsr3dSuRO6Xuppb1u5rXpCPmMvLSyECLhybr9isec8Ohl0hPekMVrEinDA== + +universalify@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717" + integrity sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ== + +unpipe@1.0.0, unpipe@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" + integrity sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ== + +untildify@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/untildify/-/untildify-4.0.0.tgz#2bc947b953652487e4600949fb091e3ae8cd919b" + integrity sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw== + +update-browserslist-db@^1.0.11: + version "1.0.11" + resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.11.tgz#9a2a641ad2907ae7b3616506f4b977851db5b940" + integrity sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA== + dependencies: + escalade "^3.1.1" + picocolors "^1.0.0" + +uri-js@^4.2.2: + version "4.4.1" + resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" + integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== + dependencies: + punycode "^2.1.0" + +url-loader@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/url-loader/-/url-loader-4.1.1.tgz#28505e905cae158cf07c92ca622d7f237e70a4e2" + integrity sha512-3BTV812+AVHHOJQO8O5MkWgZ5aosP7GnROJwvzLS9hWDj00lZ6Z0wNak423Lp9PBZN05N+Jk/N5Si8jRAlGyWA== + dependencies: + loader-utils "^2.0.0" + mime-types "^2.1.27" + schema-utils "^3.0.0" + +use-context-selector@^1.4.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/use-context-selector/-/use-context-selector-1.4.1.tgz#eb96279965846b72915d7f899b8e6ef1d768b0ae" + integrity sha512-Io2ArvcRO+6MWIhkdfMFt+WKQX+Vb++W8DS2l03z/Vw/rz3BclKpM0ynr4LYGyU85Eke+Yx5oIhTY++QR0ZDoA== + +use-isomorphic-layout-effect@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/use-isomorphic-layout-effect/-/use-isomorphic-layout-effect-1.1.2.tgz#497cefb13d863d687b08477d9e5a164ad8c1a6fb" + integrity sha512-49L8yCO3iGT/ZF9QttjwLF/ZD9Iwto5LnH5LmEdk/6cFmXddqi2ulF0edxTwjj+7mqvpVVGQWvbXZdn32wRSHA== + +utf8-byte-length@^1.0.1: + version "1.0.4" + resolved "https://registry.yarnpkg.com/utf8-byte-length/-/utf8-byte-length-1.0.4.tgz#f45f150c4c66eee968186505ab93fcbb8ad6bf61" + integrity sha512-4+wkEYLBbWxqTahEsWrhxepcoVOJ+1z5PGIjPZxRkytcdSUaNjIjBM7Xn8E+pdSuV7SzvWovBFA54FO0JSoqhA== + +util-deprecate@^1.0.1, util-deprecate@^1.0.2, util-deprecate@~1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" + integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== + +utila@~0.4: + version "0.4.0" + resolved "https://registry.yarnpkg.com/utila/-/utila-0.4.0.tgz#8a16a05d445657a3aea5eecc5b12a4fa5379772c" + integrity sha512-Z0DbgELS9/L/75wZbro8xAnT50pBVFQZ+hUEueGDU5FN51YSCYM+jdxsfCiHjwNP/4LCDD0i/graKpeBnOXKRA== + +utils-merge@1.0.1, utils-merge@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" + integrity sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA== + +uuid@^8.3.2: + version "8.3.2" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" + integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== + +value-equal@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/value-equal/-/value-equal-1.0.1.tgz#1e0b794c734c5c0cade179c437d356d931a34d6c" + integrity sha512-NOJ6JZCAWr0zlxZt+xqCHNTEKOsrks2HQd4MqhP1qy4z1SkbEP467eNx6TgDKXMvUOb+OENfJCZwM+16n7fRfw== + +vary@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" + integrity sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg== + +void-elements@3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/void-elements/-/void-elements-3.1.0.tgz#614f7fbf8d801f0bb5f0661f5b2f5785750e4f09" + integrity sha512-Dhxzh5HZuiHQhbvTW9AMetFfBHDMYpo23Uo9btPXgdYP+3T5S+p+jgNy7spra+veYhBP2dCSgxR/i2Y02h5/6w== + +warning@^4.0.2: + version "4.0.3" + resolved "https://registry.yarnpkg.com/warning/-/warning-4.0.3.tgz#16e9e077eb8a86d6af7d64aa1e05fd85b4678ca3" + integrity sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w== + dependencies: + loose-envify "^1.0.0" + +watchpack@^2.4.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-2.4.0.tgz#fa33032374962c78113f93c7f2fb4c54c9862a5d" + integrity sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg== + dependencies: + glob-to-regexp "^0.4.1" + graceful-fs "^4.1.2" + +webidl-conversions@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" + integrity sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ== + +webidl-conversions@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-7.0.0.tgz#256b4e1882be7debbf01d05f0aa2039778ea080a" + integrity sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g== + +webpack-bundle-analyzer@^4.8.0: + version "4.9.0" + resolved "https://registry.yarnpkg.com/webpack-bundle-analyzer/-/webpack-bundle-analyzer-4.9.0.tgz#fc093c4ab174fd3dcbd1c30b763f56d10141209d" + integrity sha512-+bXGmO1LyiNx0i9enBu3H8mv42sj/BJWhZNFwjz92tVnBa9J3JMGo2an2IXlEleoDOPn/Hofl5hr/xCpObUDtw== + dependencies: + "@discoveryjs/json-ext" "0.5.7" + acorn "^8.0.4" + acorn-walk "^8.0.0" + chalk "^4.1.0" + commander "^7.2.0" + gzip-size "^6.0.0" + lodash "^4.17.20" + opener "^1.5.2" + sirv "^1.0.7" + ws "^7.3.1" + +webpack-cli@^4.10.0: + version "4.10.0" + resolved "https://registry.yarnpkg.com/webpack-cli/-/webpack-cli-4.10.0.tgz#37c1d69c8d85214c5a65e589378f53aec64dab31" + integrity sha512-NLhDfH/h4O6UOy+0LSso42xvYypClINuMNBVVzX4vX98TmTaTUxwRbXdhucbFMd2qLaCTcLq/PdYrvi8onw90w== + dependencies: + "@discoveryjs/json-ext" "^0.5.0" + "@webpack-cli/configtest" "^1.2.0" + "@webpack-cli/info" "^1.5.0" + "@webpack-cli/serve" "^1.7.0" + colorette "^2.0.14" + commander "^7.0.0" + cross-spawn "^7.0.3" + fastest-levenshtein "^1.0.12" + import-local "^3.0.2" + interpret "^2.2.0" + rechoir "^0.7.0" + webpack-merge "^5.7.3" + +webpack-dev-middleware@6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-6.0.1.tgz#fd585127ed44dab3f253daf0d98f4d58a5088cc2" + integrity sha512-PZPZ6jFinmqVPJZbisfggDiC+2EeGZ1ZByyMP5sOFJcPPWSexalISz+cvm+j+oYPT7FIJyxT76esjnw9DhE5sw== + dependencies: + colorette "^2.0.10" + memfs "^3.4.12" + mime-types "^2.1.31" + range-parser "^1.2.1" + schema-utils "^4.0.0" + +webpack-hot-middleware@^2.25.3: + version "2.25.4" + resolved "https://registry.yarnpkg.com/webpack-hot-middleware/-/webpack-hot-middleware-2.25.4.tgz#d8bc9e9cb664fc3105c8e83d2b9ed436bee4e193" + integrity sha512-IRmTspuHM06aZh98OhBJtqLpeWFM8FXJS5UYpKYxCJzyFoyWj1w6VGFfomZU7OPA55dMLrQK0pRT1eQ3PACr4w== + dependencies: + ansi-html-community "0.0.8" + html-entities "^2.1.0" + strip-ansi "^6.0.0" + +webpack-merge@^5.7.3: + version "5.9.0" + resolved "https://registry.yarnpkg.com/webpack-merge/-/webpack-merge-5.9.0.tgz#dc160a1c4cf512ceca515cc231669e9ddb133826" + integrity sha512-6NbRQw4+Sy50vYNTw7EyOn41OZItPiXB8GNv3INSoe3PSFaHJEz3SHTrYVaRm2LilNGnFUzh0FAwqPEmU/CwDg== + dependencies: + clone-deep "^4.0.1" + wildcard "^2.0.0" + +webpack-sources@^1.1.0: + version "1.4.3" + resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.4.3.tgz#eedd8ec0b928fbf1cbfe994e22d2d890f330a933" + integrity sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ== + dependencies: + source-list-map "^2.0.0" + source-map "~0.6.1" + +webpack-sources@^3.2.3: + version "3.2.3" + resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-3.2.3.tgz#2d4daab8451fd4b240cc27055ff6a0c2ccea0cde" + integrity sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w== + +webpack@^5.78.0: + version "5.88.0" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.88.0.tgz#a07aa2f8e7a64a8f1cec0c6c2e180e3cb34440c8" + integrity sha512-O3jDhG5e44qIBSi/P6KpcCcH7HD+nYIHVBhdWFxcLOcIGN8zGo5nqF3BjyNCxIh4p1vFdNnreZv2h2KkoAw3lw== + dependencies: + "@types/eslint-scope" "^3.7.3" + "@types/estree" "^1.0.0" + "@webassemblyjs/ast" "^1.11.5" + "@webassemblyjs/wasm-edit" "^1.11.5" + "@webassemblyjs/wasm-parser" "^1.11.5" + acorn "^8.7.1" + acorn-import-assertions "^1.9.0" + browserslist "^4.14.5" + chrome-trace-event "^1.0.2" + enhanced-resolve "^5.15.0" + es-module-lexer "^1.2.1" + eslint-scope "5.1.1" + events "^3.2.0" + glob-to-regexp "^0.4.1" + graceful-fs "^4.2.9" + json-parse-even-better-errors "^2.3.1" + loader-runner "^4.2.0" + mime-types "^2.1.27" + neo-async "^2.6.2" + schema-utils "^3.2.0" + tapable "^2.1.1" + terser-webpack-plugin "^5.3.7" + watchpack "^2.4.0" + webpack-sources "^3.2.3" + +whatwg-fetch@^3.4.1: + version "3.6.2" + resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-3.6.2.tgz#dced24f37f2624ed0281725d51d0e2e3fe677f8c" + integrity sha512-bJlen0FcuU/0EMLrdbJ7zOnW6ITZLrZMIarMUVmdKtsGvZna8vxKYaexICWPfZ8qwf9fzNq+UEIZrnSaApt6RA== + +whatwg-url@^11.0.0: + version "11.0.0" + resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-11.0.0.tgz#0a849eebb5faf2119b901bb76fd795c2848d4018" + integrity sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ== + dependencies: + tr46 "^3.0.0" + webidl-conversions "^7.0.0" + +whatwg-url@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d" + integrity sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw== + dependencies: + tr46 "~0.0.3" + webidl-conversions "^3.0.0" + +which-boxed-primitive@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz#13757bc89b209b049fe5d86430e21cf40a89a8e6" + integrity sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg== + dependencies: + is-bigint "^1.0.1" + is-boolean-object "^1.1.0" + is-number-object "^1.0.4" + is-string "^1.0.5" + is-symbol "^1.0.3" + +which-collection@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/which-collection/-/which-collection-1.0.1.tgz#70eab71ebbbd2aefaf32f917082fc62cdcb70906" + integrity sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A== + dependencies: + is-map "^2.0.1" + is-set "^2.0.1" + is-weakmap "^2.0.1" + is-weakset "^2.0.1" + +which-typed-array@^1.1.9: + version "1.1.9" + resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.9.tgz#307cf898025848cf995e795e8423c7f337efbde6" + integrity sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA== + dependencies: + available-typed-arrays "^1.0.5" + call-bind "^1.0.2" + for-each "^0.3.3" + gopd "^1.0.1" + has-tostringtag "^1.0.0" + is-typed-array "^1.1.10" + +which@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" + integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== + dependencies: + isexe "^2.0.0" + +wildcard@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/wildcard/-/wildcard-2.0.1.tgz#5ab10d02487198954836b6349f74fff961e10f67" + integrity sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ== + +wrap-ansi@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" + integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + +wrappy@1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== + +ws@^7.3.1: + version "7.5.9" + resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.9.tgz#54fa7db29f4c7cec68b1ddd3a89de099942bb591" + integrity sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q== + +xss@^1.0.6: + version "1.0.14" + resolved "https://registry.yarnpkg.com/xss/-/xss-1.0.14.tgz#4f3efbde75ad0d82e9921cc3c95e6590dd336694" + integrity sha512-og7TEJhXvn1a7kzZGQ7ETjdQVS2UfZyTlsEdDOqvQF7GoxNfY+0YLCzBy1kPdsDDx4QuNAonQPddpsn6Xl/7sw== + dependencies: + commander "^2.20.3" + cssfilter "0.0.10" + +xtend@~4.0.1: + version "4.0.2" + resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" + integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== + +y18n@^5.0.5: + version "5.0.8" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" + integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== + +yallist@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" + integrity sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A== + +yallist@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" + integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== + +yaml@^1.10.0: + version "1.10.2" + resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b" + integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg== + +yargs-parser@^20.2.2: + version "20.2.9" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee" + integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w== + +yargs@^16.1.0: + version "16.2.0" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66" + integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw== + dependencies: + cliui "^7.0.2" + escalade "^3.1.1" + get-caller-file "^2.0.5" + require-directory "^2.1.1" + string-width "^4.2.0" + y18n "^5.0.5" + yargs-parser "^20.2.2" + +yn@3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/yn/-/yn-3.1.1.tgz#1e87401a09d767c1d5eab26a6e4c185182d2eb50" + integrity sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q== diff --git a/test/_community/payload-types.ts b/test/_community/payload-types.ts index 3e4dd3acd6..f6aac91776 100644 --- a/test/_community/payload-types.ts +++ b/test/_community/payload-types.ts @@ -1,6 +1,6 @@ /* tslint:disable */ /** - * This file was automatically generated by Payload CMS. + * This file was automatically generated by Payload. * DO NOT MODIFY IT BY HAND. Instead, modify your source Payload config, * and re-run `payload generate:types` to regenerate this file. */ diff --git a/test/access-control/payload-types.ts b/test/access-control/payload-types.ts index b4df1d4b89..9a2d667d1d 100644 --- a/test/access-control/payload-types.ts +++ b/test/access-control/payload-types.ts @@ -1,6 +1,6 @@ /* tslint:disable */ /** - * This file was automatically generated by Payload CMS. + * This file was automatically generated by Payload. * DO NOT MODIFY IT BY HAND. Instead, modify your source Payload config, * and re-run `payload generate:types` to regenerate this file. */ diff --git a/test/admin/config.ts b/test/admin/config.ts index 22d2f01114..b0c84184b3 100644 --- a/test/admin/config.ts +++ b/test/admin/config.ts @@ -128,7 +128,7 @@ export default buildConfig({ { type: 'ui', name: 'demoUIField', - label: 'Demo UI Field', + label: { en: 'Demo UI Field', de: 'Demo UI Field de' }, admin: { components: { Field: DemoUIFieldField, diff --git a/test/admin/payload-types.ts b/test/admin/payload-types.ts index 5d9d139568..07353901ba 100644 --- a/test/admin/payload-types.ts +++ b/test/admin/payload-types.ts @@ -1,6 +1,6 @@ /* tslint:disable */ /** - * This file was automatically generated by Payload CMS. + * This file was automatically generated by Payload. * DO NOT MODIFY IT BY HAND. Instead, modify your source Payload config, * and re-run `payload generate:types` to regenerate this file. */ diff --git a/test/array-update/payload-types.ts b/test/array-update/payload-types.ts index 4e850b84c3..3d8633ab94 100644 --- a/test/array-update/payload-types.ts +++ b/test/array-update/payload-types.ts @@ -1,6 +1,6 @@ /* tslint:disable */ /** - * This file was automatically generated by Payload CMS. + * This file was automatically generated by Payload. * DO NOT MODIFY IT BY HAND. Instead, modify your source Payload config, * and re-run `payload generate:types` to regenerate this file. */ diff --git a/test/auth/payload-types.ts b/test/auth/payload-types.ts index 197be73123..5f1feda915 100644 --- a/test/auth/payload-types.ts +++ b/test/auth/payload-types.ts @@ -1,6 +1,6 @@ /* tslint:disable */ /** - * This file was automatically generated by Payload CMS. + * This file was automatically generated by Payload. * DO NOT MODIFY IT BY HAND. Instead, modify your source Payload config, * and re-run `payload generate:types` to regenerate this file. */ diff --git a/test/collections-graphql/config.ts b/test/collections-graphql/config.ts index 110262a17d..7d948ecbba 100644 --- a/test/collections-graphql/config.ts +++ b/test/collections-graphql/config.ts @@ -242,6 +242,45 @@ export default buildConfig({ }, collectionWithName(relationSlug), collectionWithName('dummy'), + { + slug: 'payload-api-test-ones', + access: { + read: () => true, + }, + fields: [ + { + name: 'payloadAPI', + type: 'text', + hooks: { + afterRead: [ + ({ req }) => req.payloadAPI, + ], + }, + }, + ], + }, + { + slug: 'payload-api-test-twos', + access: { + read: () => true, + }, + fields: [ + { + name: 'payloadAPI', + type: 'text', + hooks: { + afterRead: [ + ({ req }) => req.payloadAPI, + ], + }, + }, + { + name: 'relation', + type: 'relationship', + relationTo: 'payload-api-test-ones', + }, + ], + }, ], onInit: async (payload) => { await payload.create({ @@ -363,5 +402,17 @@ export default buildConfig({ ], }, }); + + const payloadAPITest1 = await payload.create({ + collection: 'payload-api-test-ones', + data: {}, + }); + + await payload.create({ + collection: 'payload-api-test-twos', + data: { + relation: payloadAPITest1.id, + }, + }); }, }); diff --git a/test/collections-graphql/int.spec.ts b/test/collections-graphql/int.spec.ts index 09759e79c3..0230f64e99 100644 --- a/test/collections-graphql/int.spec.ts +++ b/test/collections-graphql/int.spec.ts @@ -86,6 +86,26 @@ describe('collections-graphql', () => { expect(docs).toContainEqual(expect.objectContaining({ id: existingDoc.id })); }); + it('should retain payload api', async () => { + const query = ` + query { + PayloadApiTestTwos { + docs { + payloadAPI + relation { + payloadAPI + } + } + } + } + `; + + const response = await client.request(query); + const res = response.PayloadApiTestTwos; + + expect(res.docs[0].relation.payloadAPI).toStrictEqual('GraphQL'); + }); + it('should update existing', async () => { const updatedTitle = 'updated title'; diff --git a/test/collections-graphql/payload-types.ts b/test/collections-graphql/payload-types.ts index 433926f087..1e14ed8bf0 100644 --- a/test/collections-graphql/payload-types.ts +++ b/test/collections-graphql/payload-types.ts @@ -1,6 +1,6 @@ /* tslint:disable */ /** - * This file was automatically generated by Payload CMS. + * This file was automatically generated by Payload. * DO NOT MODIFY IT BY HAND. Instead, modify your source Payload config, * and re-run `payload generate:types` to regenerate this file. */ diff --git a/test/collections-rest/int.spec.ts b/test/collections-rest/int.spec.ts index 0715c105fc..30304c7f35 100644 --- a/test/collections-rest/int.spec.ts +++ b/test/collections-rest/int.spec.ts @@ -62,6 +62,22 @@ describe('collections-rest', () => { expect(result.docs[0].id).toEqual(post1.id); }); + it('should find with pagination false', async () => { + const post1 = await createPost(); + const post2 = await createPost(); + + const { docs, totalDocs } = await payload.find({ + collection: slug, + pagination: false, + }); + + const expectedDocs = [post1, post2]; + expect(docs).toHaveLength(expectedDocs.length); + expect(docs).toEqual(expect.arrayContaining(expectedDocs)); + + expect(totalDocs).toEqual(2); + }); + it('should update existing', async () => { const { id, @@ -310,6 +326,22 @@ describe('collections-rest', () => { const { doc: updatedDoc } = await client.update({ slug: customIdNumberSlug, id: doc.id, data: { name: 'updated' } }); expect(updatedDoc.name).toEqual('updated'); }); + + it('should allow querying by in', async () => { + const id = 98234698237; + await client.create({ slug: customIdNumberSlug, data: { id, name: 'query using in operator' } }); + + const { result: { docs } } = await client.find({ + slug: customIdNumberSlug, + query: { + id: { + in: `${id}, ${2349856723948764}`, + }, + }, + }); + + expect(docs).toHaveLength(1); + }); }); }); @@ -632,6 +664,22 @@ describe('collections-rest', () => { expect(result.totalDocs).toEqual(1); }); + it('like - cyrillic characters in multiple words', async () => { + const post1 = await createPost({ title: 'привет, это тест полезной нагрузки' }); + + const { status, result } = await client.find({ + query: { + title: { + like: 'привет нагрузки', + }, + }, + }); + + expect(status).toEqual(200); + expect(result.docs).toEqual([post1]); + expect(result.totalDocs).toEqual(1); + }); + it('like - partial word match', async () => { const post = await createPost({ title: 'separate words should partially match' }); @@ -781,6 +829,38 @@ describe('collections-rest', () => { expect(status).toEqual(200); expect(result.docs).toHaveLength(0); }); + + it('should sort find results by nearest distance', async () => { + // creating twice as many records as we are querying to get a random sample + await mapAsync([...Array(10)], async () => { + // setTimeout used to randomize the creation timestamp + setTimeout(async () => { + await payload.create({ + collection: pointSlug, + data: { + // only randomize longitude to make distance comparison easy + point: [Math.random(), 0], + }, + }); + }, Math.random()); + }); + + const { result } = await client.find({ + slug: pointSlug, + query: { + // querying large enough range to include all docs + point: { near: '0, 0, 100000, 0' }, + }, + limit: 5, + }); + const { docs } = result; + let previous = 0; + docs.forEach((({ point: coordinates }) => { + // the next document point should always be greater than the one before + expect(previous).toBeLessThanOrEqual(coordinates[0]); + [previous] = coordinates; + })); + }); }); it('or', async () => { diff --git a/test/collections-rest/payload-types.ts b/test/collections-rest/payload-types.ts index 05006dc269..a1507d02f0 100644 --- a/test/collections-rest/payload-types.ts +++ b/test/collections-rest/payload-types.ts @@ -1,6 +1,6 @@ /* tslint:disable */ /** - * This file was automatically generated by Payload CMS. + * This file was automatically generated by Payload. * DO NOT MODIFY IT BY HAND. Instead, modify your source Payload config, * and re-run `payload generate:types` to regenerate this file. */ diff --git a/test/dataloader/payload-types.ts b/test/dataloader/payload-types.ts index 6a77cff1be..53e3df12ba 100644 --- a/test/dataloader/payload-types.ts +++ b/test/dataloader/payload-types.ts @@ -1,6 +1,6 @@ /* tslint:disable */ /** - * This file was automatically generated by Payload CMS. + * This file was automatically generated by Payload. * DO NOT MODIFY IT BY HAND. Instead, modify your source Payload config, * and re-run `payload generate:types` to regenerate this file. */ diff --git a/test/endpoints/payload-types.ts b/test/endpoints/payload-types.ts index cfed8f71c2..dbd2df8ea1 100644 --- a/test/endpoints/payload-types.ts +++ b/test/endpoints/payload-types.ts @@ -1,6 +1,6 @@ /* tslint:disable */ /** - * This file was automatically generated by Payload CMS. + * This file was automatically generated by Payload. * DO NOT MODIFY IT BY HAND. Instead, modify your source Payload config, * and re-run `payload generate:types` to regenerate this file. */ diff --git a/test/fields-relationship/payload-types.ts b/test/fields-relationship/payload-types.ts index bc8c33f262..995055a7da 100644 --- a/test/fields-relationship/payload-types.ts +++ b/test/fields-relationship/payload-types.ts @@ -1,6 +1,6 @@ /* tslint:disable */ /** - * This file was automatically generated by Payload CMS. + * This file was automatically generated by Payload. * DO NOT MODIFY IT BY HAND. Instead, modify your source Payload config, * and re-run `payload generate:types` to regenerate this file. */ diff --git a/test/fields/collections/ConditionalLogic/index.ts b/test/fields/collections/ConditionalLogic/index.ts index ce0cf80be4..2f64ba1a28 100644 --- a/test/fields/collections/ConditionalLogic/index.ts +++ b/test/fields/collections/ConditionalLogic/index.ts @@ -32,6 +32,67 @@ const ConditionalLogic: CollectionConfig = { }, }, }, + { + name: 'parentGroup', + type: 'group', + fields: [ + { + name: 'enableParentGroupFields', + type: 'checkbox', + defaultValue: false, + }, + { + name: 'siblingField', + type: 'text', + admin: { + description: 'Ensures we can rely on nested fields within `data`.', + condition: ({ parentGroup }) => Boolean(parentGroup?.enableParentGroupFields), + }, + }, + ], + }, + { + name: 'reliesOnParentGroup', + type: 'text', + admin: { + description: 'Ensures we can rely on nested fields within `siblingsData`.', + condition: (_, { parentGroup }) => Boolean(parentGroup?.enableParentGroupFields), + }, + }, + { + name: 'groupSelection', + type: 'select', + options: [ + 'group1', + 'group2', + ], + }, + { + name: 'group1', + type: 'group', + fields: [ + { + name: 'group1Field', + type: 'text', + }, + ], + admin: { + condition: ({ groupSelection }) => groupSelection === 'group1', + }, + }, + { + name: 'group2', + type: 'group', + fields: [ + { + name: 'group2Field', + type: 'text', + }, + ], + admin: { + condition: ({ groupSelection }) => groupSelection === 'group2', + }, + }, ], }; diff --git a/test/fields/collections/Number/index.ts b/test/fields/collections/Number/index.ts index 34bc86a3a2..f15ba3d2a7 100644 --- a/test/fields/collections/Number/index.ts +++ b/test/fields/collections/Number/index.ts @@ -47,6 +47,30 @@ const NumberFields: CollectionConfig = { type: 'number', defaultValue: defaultNumber, }, + { + name: 'hasMany', + type: 'number', + hasMany: true, + min: 5, + max: 100, + }, + { + name: 'validatesHasMany', + type: 'number', + hasMany: true, + validate: (value: number[]) => { + if (value && !Array.isArray(value)) { + return 'value should be an array'; + } + return true; + }, + }, + { + name: 'localizedHasMany', + type: 'number', + hasMany: true, + localized: true, + }, ], }; @@ -58,6 +82,9 @@ export const numberDoc = { negativeNumber: -5, decimalMin: 1.25, decimalMax: 0.25, + hasMany: [5, 10, 15], + validatesHasMany: [5], + localizedHasMany: [10], }; export default NumberFields; diff --git a/test/fields/collections/Relationship/index.ts b/test/fields/collections/Relationship/index.ts index 2a58ddcb71..686b61d9d4 100644 --- a/test/fields/collections/Relationship/index.ts +++ b/test/fields/collections/Relationship/index.ts @@ -44,14 +44,20 @@ const RelationshipFields: CollectionConfig = { type: 'relationship', relationTo: 'text-fields', hasMany: true, - min: 2, + minRows: 2, }, { name: 'relationshipWithMax', type: 'relationship', relationTo: 'text-fields', hasMany: true, - max: 2, + maxRows: 2, + }, + { + name: 'relationshipHasMany', + type: 'relationship', + relationTo: 'text-fields', + hasMany: true, }, ], }; diff --git a/test/fields/e2e.spec.ts b/test/fields/e2e.spec.ts index 65f1031455..292d0afecf 100644 --- a/test/fields/e2e.spec.ts +++ b/test/fields/e2e.spec.ts @@ -12,6 +12,7 @@ import { tabsSlug } from './collections/Tabs'; import { collapsibleFieldsSlug } from './collections/Collapsible'; import wait from '../../src/utilities/wait'; import { jsonDoc } from './collections/JSON'; +import { numberDoc } from './collections/Number'; const { beforeAll, describe } = test; @@ -67,6 +68,42 @@ describe('fields', () => { }); }); + describe('number', () => { + let url: AdminUrlUtil; + beforeAll(() => { + url = new AdminUrlUtil(serverURL, 'number-fields'); + }); + + test('should display field in list view', async () => { + await page.goto(url.list); + const textCell = page.locator('.row-1 .cell-number'); + await expect(textCell) + .toHaveText(String(numberDoc.number)); + }); + + test('should create', async () => { + const input = 5; + + await page.goto(url.create); + const field = page.locator('#field-number'); + await field.fill(String(input)); + await saveDocAndAssert(page); + await expect(await field.inputValue()).toEqual(String(input)); + }); + + test('should create hasMany', async () => { + const input = 5; + + await page.goto(url.create); + const field = page.locator('.field-hasMany'); + await field.click(); + await page.keyboard.type(String(input)); + await page.keyboard.press('Enter'); + await saveDocAndAssert(page); + await expect(field.locator('.rs__value-container')).toContainText(String(input)); + }); + }); + describe('json', () => { let url: AdminUrlUtil; beforeAll(() => { @@ -838,6 +875,36 @@ describe('fields', () => { await page.locator('.rs__option:has-text("Seeded text document")').click(); await saveDocAndAssert(page); }); + + // Related issue: https://github.com/payloadcms/payload/issues/2815 + test('should modify fields in relationship drawer', async () => { + await page.goto(url.create); + + // Create a new doc for the `relationshipHasMany` field + await page.locator('#field-relationshipHasMany button.relationship-add-new__add-button').click(); + const textField2 = page.locator('[id^=doc-drawer_text-fields_1_] #field-text'); + const value = 'Hello, world!'; + await textField2.fill(value); + + // Save and close the drawer + await page.locator('[id^=doc-drawer_text-fields_1_] #action-save').click(); + await expect(page.locator('.Toastify')).toContainText('successfully'); + await page.locator('[id^=close-drawer__doc-drawer_text-fields_1_]').click(); + + // Now open the drawer again to edit the `text` field _using the keyboard_ + await page.locator('#field-relationshipHasMany button.relationship--multi-value-label__drawer-toggler').click(); + const textField3 = page.locator('[id^=doc-drawer_text-fields_1_] #field-text'); + await textField3.click(); + await page.keyboard.down('1'); + await page.keyboard.down('2'); + await page.keyboard.down('3'); + await page.locator('[id^=doc-drawer_text-fields_1_] #action-save').click(); + await expect(page.locator('.Toastify')).toContainText('successfully'); + // TODO: uncomment this when the drawer is fixed + // await page.locator('[id^=close-drawer__doc-drawer_text-fields_1_]').click(); + // await expect(page.locator('#field-relationshipHasMany .relationship--multi-value-label__text')).toContainText(`${value}123`); + await expect(page.locator('#field-relationshipHasMany .relationship--multi-value-label__text')).toContainText(value); + }); }); describe('upload', () => { @@ -972,10 +1039,34 @@ describe('fields', () => { await expect(fieldToToggle).toBeVisible(); }); - test('should show conditionl field based on user data', async () => { + test('should show conditional field based on user data', async () => { await page.goto(url.create); const userConditional = page.locator('input#field-userConditional'); await expect(userConditional).toBeVisible(); }); + + test('should show conditional field based on fields nested within data', async () => { + await page.goto(url.create); + + const parentGroupFields = page.locator('div#field-parentGroup > .group-field__wrap > .render-fields'); + await expect(parentGroupFields).toHaveCount(1); + + const toggle = page.locator('label[for=field-parentGroup__enableParentGroupFields]'); + await toggle.click(); + + const toggledField = page.locator('input#field-parentGroup__siblingField'); + + await expect(toggledField).toBeVisible(); + }); + + test('should show conditional field based on fields nested within siblingData', async () => { + await page.goto(url.create); + + const toggle = page.locator('label[for=field-parentGroup__enableParentGroupFields]'); + await toggle.click(); + + const fieldRelyingOnSiblingData = page.locator('input#field-reliesOnParentGroup'); + await expect(fieldRelyingOnSiblingData).toBeVisible(); + }); }); }); diff --git a/test/fields/int.spec.ts b/test/fields/int.spec.ts index 21351d4e63..854fde7f2c 100644 --- a/test/fields/int.spec.ts +++ b/test/fields/int.spec.ts @@ -194,6 +194,25 @@ describe('Fields', () => { }, })).rejects.toThrow('The following field is invalid: decimalMax'); }); + it('should localize an array of numbers using hasMany', async () => { + const localizedHasMany = [5, 10]; + const { id } = await payload.create({ + collection: 'number-fields', + locale: 'en', + data: { + localizedHasMany, + }, + }); + const localizedDoc = await payload.findByID({ + collection: 'number-fields', + locale: 'all', + id, + }); + + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-ignore + expect(localizedDoc.localizedHasMany.en).toEqual(localizedHasMany); + }); }); describe('indexes', () => { diff --git a/test/fields/payload-types.ts b/test/fields/payload-types.ts index b02d199d0d..a94f8e40b6 100644 --- a/test/fields/payload-types.ts +++ b/test/fields/payload-types.ts @@ -1,6 +1,6 @@ /* tslint:disable */ /** - * This file was automatically generated by Payload CMS. + * This file was automatically generated by Payload. * DO NOT MODIFY IT BY HAND. Instead, modify your source Payload config, * and re-run `payload generate:types` to regenerate this file. */ @@ -35,13 +35,15 @@ export interface Config { export interface User { id: string; canViewConditionalField?: boolean; - email?: string; + updatedAt: string; + createdAt: string; + email: string; resetPasswordToken?: string; resetPasswordExpiration?: string; + salt?: string; + hash?: string; loginAttempts?: number; lockUntil?: string; - createdAt: string; - updatedAt: string; password?: string; } export interface ArrayField { @@ -50,7 +52,7 @@ export interface ArrayField { text: string; id?: string; }[]; - collapsedArray: { + collapsedArray?: { text: string; id?: string; }[]; @@ -74,8 +76,8 @@ export interface ArrayField { title?: string; id?: string; }[]; - createdAt: string; updatedAt: string; + createdAt: string; } export interface BlockField { id: string; @@ -214,8 +216,8 @@ export interface BlockField { blockName?: string; blockType: 'text'; }[]; - createdAt: string; updatedAt: string; + createdAt: string; } export interface CodeField { id: string; @@ -224,8 +226,8 @@ export interface CodeField { json?: string; html?: string; css?: string; - createdAt: string; updatedAt: string; + createdAt: string; } export interface CollapsibleField { id: string; @@ -244,8 +246,8 @@ export interface CollapsibleField { innerCollapsible?: string; id?: string; }[]; - createdAt: string; updatedAt: string; + createdAt: string; } export interface ConditionalLogic { id: string; @@ -253,8 +255,8 @@ export interface ConditionalLogic { toggleField?: boolean; fieldToToggle: string; userConditional?: string; - createdAt: string; updatedAt: string; + createdAt: string; } export interface DateField { id: string; @@ -263,14 +265,14 @@ export interface DateField { dayOnly?: string; dayAndTime?: string; monthOnly?: string; - createdAt: string; updatedAt: string; + createdAt: string; } export interface RadioField { id: string; radio?: 'one' | 'two' | 'three'; - createdAt: string; updatedAt: string; + createdAt: string; } export interface GroupField { id: string; @@ -300,14 +302,27 @@ export interface GroupField { nestedField?: string; }; }; - createdAt: string; + groups: { + groupInRow?: { + field?: string; + secondField?: string; + thirdField?: string; + }; + secondGroupInRow?: { + field?: string; + nestedGroup?: { + nestedField?: string; + }; + }; + }; updatedAt: string; + createdAt: string; } export interface RowField { id: string; title: string; - createdAt: string; updatedAt: string; + createdAt: string; } export interface IndexedField { id: string; @@ -330,8 +345,8 @@ export interface IndexedField { collapsibleTextUnique?: string; partOne?: string; partTwo?: string; - createdAt: string; updatedAt: string; + createdAt: string; } export interface JsonField { id: string; @@ -344,8 +359,8 @@ export interface JsonField { | number | boolean | null; - createdAt: string; updatedAt: string; + createdAt: string; } export interface NumberField { id: string; @@ -357,8 +372,11 @@ export interface NumberField { decimalMin?: number; decimalMax?: number; defaultNumber?: number; - createdAt: string; + hasMany?: number[]; + validatesHasMany?: number[]; + localizedHasMany?: number[]; updatedAt: string; + createdAt: string; } export interface PointField { id: string; @@ -379,8 +397,8 @@ export interface PointField { */ point?: [number, number]; }; - createdAt: string; updatedAt: string; + createdAt: string; } export interface RelationshipField { id: string; @@ -402,8 +420,8 @@ export interface RelationshipField { }; relationshipWithMin?: string[] | TextField[]; relationshipWithMax?: string[] | TextField[]; - createdAt: string; updatedAt: string; + createdAt: string; } export interface TextField { id: string; @@ -413,8 +431,8 @@ export interface TextField { defaultFunction?: string; defaultAsync?: string; overrideLength?: string; - createdAt: string; updatedAt: string; + createdAt: string; } export interface RichTextField { id: string; @@ -423,11 +441,14 @@ export interface RichTextField { richText: { [k: string]: unknown; }[]; + richTextCustomFields?: { + [k: string]: unknown; + }[]; richTextReadOnly?: { [k: string]: unknown; }[]; - createdAt: string; updatedAt: string; + createdAt: string; } export interface SelectField { id: string; @@ -437,8 +458,8 @@ export interface SelectField { selectHasManyLocalized?: ('one' | 'two')[]; selectI18n?: 'one' | 'two' | 'three'; simple?: 'One' | 'Two' | 'Three'; - createdAt: string; updatedAt: string; + createdAt: string; } export interface TabsField { id: string; @@ -522,8 +543,8 @@ export interface TabsField { nestedTab: { text?: string; }; - createdAt: string; updatedAt: string; + createdAt: string; } export interface Upload { id: string; @@ -532,27 +553,27 @@ export interface Upload { richText?: { [k: string]: unknown; }[]; + updatedAt: string; + createdAt: string; url?: string; filename?: string; mimeType?: string; filesize?: number; width?: number; height?: number; - createdAt: string; - updatedAt: string; } export interface Uploads2 { id: string; text?: string; media?: string | Uploads2; + updatedAt: string; + createdAt: string; url?: string; filename?: string; mimeType?: string; filesize?: number; width?: number; height?: number; - createdAt: string; - updatedAt: string; } export interface Uploads3 { id: string; @@ -560,12 +581,12 @@ export interface Uploads3 { richText?: { [k: string]: unknown; }[]; + updatedAt: string; + createdAt: string; url?: string; filename?: string; mimeType?: string; filesize?: number; width?: number; height?: number; - createdAt: string; - updatedAt: string; } diff --git a/test/globals/payload-types.ts b/test/globals/payload-types.ts index a73ed769e2..09e2fd95af 100644 --- a/test/globals/payload-types.ts +++ b/test/globals/payload-types.ts @@ -1,6 +1,6 @@ /* tslint:disable */ /** - * This file was automatically generated by Payload CMS. + * This file was automatically generated by Payload. * DO NOT MODIFY IT BY HAND. Instead, modify your source Payload config, * and re-run `payload generate:types` to regenerate this file. */ diff --git a/test/graphql-schema-gen/generated-schema.graphql b/test/graphql-schema-gen/generated-schema.graphql deleted file mode 100644 index 75267a107d..0000000000 --- a/test/graphql-schema-gen/generated-schema.graphql +++ /dev/null @@ -1,1852 +0,0 @@ -type Query { - Post(id: String!, draft: Boolean): Post - Posts(where: Post_where, draft: Boolean, page: Int, limit: Int, sort: String): Posts - docAccessPost(id: String!): postsDocAccess - Relation(id: String!, draft: Boolean): Relation - Relations(where: Relation_where, draft: Boolean, page: Int, limit: Int, sort: String): Relations - docAccessRelation(id: String!): relationDocAccess - Dummy(id: String!, draft: Boolean): Dummy - Dummies(where: Dummy_where, draft: Boolean, page: Int, limit: Int, sort: String): Dummies - docAccessDummy(id: String!): dummyDocAccess - User(id: String!, draft: Boolean): User - Users(where: User_where, draft: Boolean, page: Int, limit: Int, sort: String): Users - docAccessUser(id: String!): usersDocAccess - meUser: usersMe - initializedUser: Boolean - Preference(key: String): Preference - Access: Access -} - -type Post { - id: String - title: String - description: String - number: Float - relationField: Relation - relationHasManyField: [Relation!] - relationMultiRelationTo: Post_RelationMultiRelationTo_Relationship - relationMultiRelationToHasMany: [Post_RelationMultiRelationToHasMany_Relationship!] - updatedAt: DateTime - createdAt: DateTime -} - -type Relation { - id: String - name: String - updatedAt: DateTime - createdAt: DateTime -} - -""" -A date-time string at UTC, such as 2007-12-03T10:15:30Z, compliant with the `date-time` format outlined in section 5.6 of the RFC 3339 profile of the ISO 8601 standard for representation of dates and times using the Gregorian calendar. -""" -scalar DateTime - -type Post_RelationMultiRelationTo_Relationship { - relationTo: Post_RelationMultiRelationTo_RelationTo - value: Post_RelationMultiRelationTo -} - -enum Post_RelationMultiRelationTo_RelationTo { - relation - dummy -} - -union Post_RelationMultiRelationTo = Relation | Dummy - -type Dummy { - id: String - name: String - updatedAt: DateTime - createdAt: DateTime -} - -type Post_RelationMultiRelationToHasMany_Relationship { - relationTo: Post_RelationMultiRelationToHasMany_RelationTo - value: Post_RelationMultiRelationToHasMany -} - -enum Post_RelationMultiRelationToHasMany_RelationTo { - relation - dummy -} - -union Post_RelationMultiRelationToHasMany = Relation | Dummy - -type Posts { - docs: [Post] - totalDocs: Int - offset: Int - limit: Int - totalPages: Int - page: Int - pagingCounter: Int - hasPrevPage: Boolean - hasNextPage: Boolean - prevPage: Int - nextPage: Int -} - -input Post_where { - title: Post_title_operator - description: Post_description_operator - number: Post_number_operator - relationField: Post_relationField_operator - relationHasManyField: Post_relationHasManyField_operator - relationMultiRelationTo: Post_relationMultiRelationTo_Relation - relationMultiRelationToHasMany: Post_relationMultiRelationToHasMany_Relation - updatedAt: Post_updatedAt_operator - createdAt: Post_createdAt_operator - id: Post_id_operator - OR: [Post_where_or] - AND: [Post_where_and] -} - -input Post_title_operator { - equals: String - not_equals: String - like: String - contains: String - in: [String] - not_in: [String] - all: [String] - exists: Boolean -} - -input Post_description_operator { - equals: String - not_equals: String - like: String - contains: String - in: [String] - not_in: [String] - all: [String] - exists: Boolean -} - -input Post_number_operator { - equals: Float - not_equals: Float - greater_than_equal: Float - greater_than: Float - less_than_equal: Float - less_than: Float - exists: Boolean -} - -input Post_relationField_operator { - equals: String - not_equals: String - in: [String] - not_in: [String] - all: [String] - exists: Boolean -} - -input Post_relationHasManyField_operator { - equals: String - not_equals: String - in: [String] - not_in: [String] - all: [String] - exists: Boolean -} - -input Post_relationMultiRelationTo_Relation { - relationTo: Post_relationMultiRelationTo_Relation_RelationTo - value: String -} - -enum Post_relationMultiRelationTo_Relation_RelationTo { - relation - dummy -} - -input Post_relationMultiRelationToHasMany_Relation { - relationTo: Post_relationMultiRelationToHasMany_Relation_RelationTo - value: String -} - -enum Post_relationMultiRelationToHasMany_Relation_RelationTo { - relation - dummy -} - -input Post_updatedAt_operator { - equals: DateTime - not_equals: DateTime - greater_than_equal: DateTime - greater_than: DateTime - less_than_equal: DateTime - less_than: DateTime - like: DateTime - exists: Boolean -} - -input Post_createdAt_operator { - equals: DateTime - not_equals: DateTime - greater_than_equal: DateTime - greater_than: DateTime - less_than_equal: DateTime - less_than: DateTime - like: DateTime - exists: Boolean -} - -input Post_id_operator { - equals: String - not_equals: String - like: String - contains: String - in: [String] - not_in: [String] - all: [String] - exists: Boolean -} - -input Post_where_or { - title: Post_title_operator - description: Post_description_operator - number: Post_number_operator - relationField: Post_relationField_operator - relationHasManyField: Post_relationHasManyField_operator - relationMultiRelationTo: Post_relationMultiRelationTo_Relation - relationMultiRelationToHasMany: Post_relationMultiRelationToHasMany_Relation - updatedAt: Post_updatedAt_operator - createdAt: Post_createdAt_operator - id: Post_id_operator -} - -input Post_where_and { - title: Post_title_operator - description: Post_description_operator - number: Post_number_operator - relationField: Post_relationField_operator - relationHasManyField: Post_relationHasManyField_operator - relationMultiRelationTo: Post_relationMultiRelationTo_Relation - relationMultiRelationToHasMany: Post_relationMultiRelationToHasMany_Relation - updatedAt: Post_updatedAt_operator - createdAt: Post_createdAt_operator - id: Post_id_operator -} - -type postsDocAccess { - fields: PostsDocAccessFields - create: PostsCreateDocAccess - read: PostsReadDocAccess - update: PostsUpdateDocAccess - delete: PostsDeleteDocAccess -} - -type PostsDocAccessFields { - title: PostsDocAccessFields_title - description: PostsDocAccessFields_description - number: PostsDocAccessFields_number - relationField: PostsDocAccessFields_relationField - relationHasManyField: PostsDocAccessFields_relationHasManyField - relationMultiRelationTo: PostsDocAccessFields_relationMultiRelationTo - relationMultiRelationToHasMany: PostsDocAccessFields_relationMultiRelationToHasMany - updatedAt: PostsDocAccessFields_updatedAt - createdAt: PostsDocAccessFields_createdAt -} - -type PostsDocAccessFields_title { - create: PostsDocAccessFields_title_Create - read: PostsDocAccessFields_title_Read - update: PostsDocAccessFields_title_Update - delete: PostsDocAccessFields_title_Delete -} - -type PostsDocAccessFields_title_Create { - permission: Boolean! -} - -type PostsDocAccessFields_title_Read { - permission: Boolean! -} - -type PostsDocAccessFields_title_Update { - permission: Boolean! -} - -type PostsDocAccessFields_title_Delete { - permission: Boolean! -} - -type PostsDocAccessFields_description { - create: PostsDocAccessFields_description_Create - read: PostsDocAccessFields_description_Read - update: PostsDocAccessFields_description_Update - delete: PostsDocAccessFields_description_Delete -} - -type PostsDocAccessFields_description_Create { - permission: Boolean! -} - -type PostsDocAccessFields_description_Read { - permission: Boolean! -} - -type PostsDocAccessFields_description_Update { - permission: Boolean! -} - -type PostsDocAccessFields_description_Delete { - permission: Boolean! -} - -type PostsDocAccessFields_number { - create: PostsDocAccessFields_number_Create - read: PostsDocAccessFields_number_Read - update: PostsDocAccessFields_number_Update - delete: PostsDocAccessFields_number_Delete -} - -type PostsDocAccessFields_number_Create { - permission: Boolean! -} - -type PostsDocAccessFields_number_Read { - permission: Boolean! -} - -type PostsDocAccessFields_number_Update { - permission: Boolean! -} - -type PostsDocAccessFields_number_Delete { - permission: Boolean! -} - -type PostsDocAccessFields_relationField { - create: PostsDocAccessFields_relationField_Create - read: PostsDocAccessFields_relationField_Read - update: PostsDocAccessFields_relationField_Update - delete: PostsDocAccessFields_relationField_Delete -} - -type PostsDocAccessFields_relationField_Create { - permission: Boolean! -} - -type PostsDocAccessFields_relationField_Read { - permission: Boolean! -} - -type PostsDocAccessFields_relationField_Update { - permission: Boolean! -} - -type PostsDocAccessFields_relationField_Delete { - permission: Boolean! -} - -type PostsDocAccessFields_relationHasManyField { - create: PostsDocAccessFields_relationHasManyField_Create - read: PostsDocAccessFields_relationHasManyField_Read - update: PostsDocAccessFields_relationHasManyField_Update - delete: PostsDocAccessFields_relationHasManyField_Delete -} - -type PostsDocAccessFields_relationHasManyField_Create { - permission: Boolean! -} - -type PostsDocAccessFields_relationHasManyField_Read { - permission: Boolean! -} - -type PostsDocAccessFields_relationHasManyField_Update { - permission: Boolean! -} - -type PostsDocAccessFields_relationHasManyField_Delete { - permission: Boolean! -} - -type PostsDocAccessFields_relationMultiRelationTo { - create: PostsDocAccessFields_relationMultiRelationTo_Create - read: PostsDocAccessFields_relationMultiRelationTo_Read - update: PostsDocAccessFields_relationMultiRelationTo_Update - delete: PostsDocAccessFields_relationMultiRelationTo_Delete -} - -type PostsDocAccessFields_relationMultiRelationTo_Create { - permission: Boolean! -} - -type PostsDocAccessFields_relationMultiRelationTo_Read { - permission: Boolean! -} - -type PostsDocAccessFields_relationMultiRelationTo_Update { - permission: Boolean! -} - -type PostsDocAccessFields_relationMultiRelationTo_Delete { - permission: Boolean! -} - -type PostsDocAccessFields_relationMultiRelationToHasMany { - create: PostsDocAccessFields_relationMultiRelationToHasMany_Create - read: PostsDocAccessFields_relationMultiRelationToHasMany_Read - update: PostsDocAccessFields_relationMultiRelationToHasMany_Update - delete: PostsDocAccessFields_relationMultiRelationToHasMany_Delete -} - -type PostsDocAccessFields_relationMultiRelationToHasMany_Create { - permission: Boolean! -} - -type PostsDocAccessFields_relationMultiRelationToHasMany_Read { - permission: Boolean! -} - -type PostsDocAccessFields_relationMultiRelationToHasMany_Update { - permission: Boolean! -} - -type PostsDocAccessFields_relationMultiRelationToHasMany_Delete { - permission: Boolean! -} - -type PostsDocAccessFields_updatedAt { - create: PostsDocAccessFields_updatedAt_Create - read: PostsDocAccessFields_updatedAt_Read - update: PostsDocAccessFields_updatedAt_Update - delete: PostsDocAccessFields_updatedAt_Delete -} - -type PostsDocAccessFields_updatedAt_Create { - permission: Boolean! -} - -type PostsDocAccessFields_updatedAt_Read { - permission: Boolean! -} - -type PostsDocAccessFields_updatedAt_Update { - permission: Boolean! -} - -type PostsDocAccessFields_updatedAt_Delete { - permission: Boolean! -} - -type PostsDocAccessFields_createdAt { - create: PostsDocAccessFields_createdAt_Create - read: PostsDocAccessFields_createdAt_Read - update: PostsDocAccessFields_createdAt_Update - delete: PostsDocAccessFields_createdAt_Delete -} - -type PostsDocAccessFields_createdAt_Create { - permission: Boolean! -} - -type PostsDocAccessFields_createdAt_Read { - permission: Boolean! -} - -type PostsDocAccessFields_createdAt_Update { - permission: Boolean! -} - -type PostsDocAccessFields_createdAt_Delete { - permission: Boolean! -} - -type PostsCreateDocAccess { - permission: Boolean! - where: JSONObject -} - -""" -The `JSONObject` scalar type represents JSON objects as specified by [ECMA-404](http://www.ecma-international.org/publications/files/ECMA-ST/ECMA-404.pdf). -""" -scalar JSONObject - -type PostsReadDocAccess { - permission: Boolean! - where: JSONObject -} - -type PostsUpdateDocAccess { - permission: Boolean! - where: JSONObject -} - -type PostsDeleteDocAccess { - permission: Boolean! - where: JSONObject -} - -type Relations { - docs: [Relation] - totalDocs: Int - offset: Int - limit: Int - totalPages: Int - page: Int - pagingCounter: Int - hasPrevPage: Boolean - hasNextPage: Boolean - prevPage: Int - nextPage: Int -} - -input Relation_where { - name: Relation_name_operator - updatedAt: Relation_updatedAt_operator - createdAt: Relation_createdAt_operator - id: Relation_id_operator - OR: [Relation_where_or] - AND: [Relation_where_and] -} - -input Relation_name_operator { - equals: String - not_equals: String - like: String - contains: String - in: [String] - not_in: [String] - all: [String] - exists: Boolean -} - -input Relation_updatedAt_operator { - equals: DateTime - not_equals: DateTime - greater_than_equal: DateTime - greater_than: DateTime - less_than_equal: DateTime - less_than: DateTime - like: DateTime - exists: Boolean -} - -input Relation_createdAt_operator { - equals: DateTime - not_equals: DateTime - greater_than_equal: DateTime - greater_than: DateTime - less_than_equal: DateTime - less_than: DateTime - like: DateTime - exists: Boolean -} - -input Relation_id_operator { - equals: String - not_equals: String - like: String - contains: String - in: [String] - not_in: [String] - all: [String] - exists: Boolean -} - -input Relation_where_or { - name: Relation_name_operator - updatedAt: Relation_updatedAt_operator - createdAt: Relation_createdAt_operator - id: Relation_id_operator -} - -input Relation_where_and { - name: Relation_name_operator - updatedAt: Relation_updatedAt_operator - createdAt: Relation_createdAt_operator - id: Relation_id_operator -} - -type relationDocAccess { - fields: RelationDocAccessFields - create: RelationCreateDocAccess - read: RelationReadDocAccess - update: RelationUpdateDocAccess - delete: RelationDeleteDocAccess -} - -type RelationDocAccessFields { - name: RelationDocAccessFields_name - updatedAt: RelationDocAccessFields_updatedAt - createdAt: RelationDocAccessFields_createdAt -} - -type RelationDocAccessFields_name { - create: RelationDocAccessFields_name_Create - read: RelationDocAccessFields_name_Read - update: RelationDocAccessFields_name_Update - delete: RelationDocAccessFields_name_Delete -} - -type RelationDocAccessFields_name_Create { - permission: Boolean! -} - -type RelationDocAccessFields_name_Read { - permission: Boolean! -} - -type RelationDocAccessFields_name_Update { - permission: Boolean! -} - -type RelationDocAccessFields_name_Delete { - permission: Boolean! -} - -type RelationDocAccessFields_updatedAt { - create: RelationDocAccessFields_updatedAt_Create - read: RelationDocAccessFields_updatedAt_Read - update: RelationDocAccessFields_updatedAt_Update - delete: RelationDocAccessFields_updatedAt_Delete -} - -type RelationDocAccessFields_updatedAt_Create { - permission: Boolean! -} - -type RelationDocAccessFields_updatedAt_Read { - permission: Boolean! -} - -type RelationDocAccessFields_updatedAt_Update { - permission: Boolean! -} - -type RelationDocAccessFields_updatedAt_Delete { - permission: Boolean! -} - -type RelationDocAccessFields_createdAt { - create: RelationDocAccessFields_createdAt_Create - read: RelationDocAccessFields_createdAt_Read - update: RelationDocAccessFields_createdAt_Update - delete: RelationDocAccessFields_createdAt_Delete -} - -type RelationDocAccessFields_createdAt_Create { - permission: Boolean! -} - -type RelationDocAccessFields_createdAt_Read { - permission: Boolean! -} - -type RelationDocAccessFields_createdAt_Update { - permission: Boolean! -} - -type RelationDocAccessFields_createdAt_Delete { - permission: Boolean! -} - -type RelationCreateDocAccess { - permission: Boolean! - where: JSONObject -} - -type RelationReadDocAccess { - permission: Boolean! - where: JSONObject -} - -type RelationUpdateDocAccess { - permission: Boolean! - where: JSONObject -} - -type RelationDeleteDocAccess { - permission: Boolean! - where: JSONObject -} - -type Dummies { - docs: [Dummy] - totalDocs: Int - offset: Int - limit: Int - totalPages: Int - page: Int - pagingCounter: Int - hasPrevPage: Boolean - hasNextPage: Boolean - prevPage: Int - nextPage: Int -} - -input Dummy_where { - name: Dummy_name_operator - updatedAt: Dummy_updatedAt_operator - createdAt: Dummy_createdAt_operator - id: Dummy_id_operator - OR: [Dummy_where_or] - AND: [Dummy_where_and] -} - -input Dummy_name_operator { - equals: String - not_equals: String - like: String - contains: String - in: [String] - not_in: [String] - all: [String] - exists: Boolean -} - -input Dummy_updatedAt_operator { - equals: DateTime - not_equals: DateTime - greater_than_equal: DateTime - greater_than: DateTime - less_than_equal: DateTime - less_than: DateTime - like: DateTime - exists: Boolean -} - -input Dummy_createdAt_operator { - equals: DateTime - not_equals: DateTime - greater_than_equal: DateTime - greater_than: DateTime - less_than_equal: DateTime - less_than: DateTime - like: DateTime - exists: Boolean -} - -input Dummy_id_operator { - equals: String - not_equals: String - like: String - contains: String - in: [String] - not_in: [String] - all: [String] - exists: Boolean -} - -input Dummy_where_or { - name: Dummy_name_operator - updatedAt: Dummy_updatedAt_operator - createdAt: Dummy_createdAt_operator - id: Dummy_id_operator -} - -input Dummy_where_and { - name: Dummy_name_operator - updatedAt: Dummy_updatedAt_operator - createdAt: Dummy_createdAt_operator - id: Dummy_id_operator -} - -type dummyDocAccess { - fields: DummyDocAccessFields - create: DummyCreateDocAccess - read: DummyReadDocAccess - update: DummyUpdateDocAccess - delete: DummyDeleteDocAccess -} - -type DummyDocAccessFields { - name: DummyDocAccessFields_name - updatedAt: DummyDocAccessFields_updatedAt - createdAt: DummyDocAccessFields_createdAt -} - -type DummyDocAccessFields_name { - create: DummyDocAccessFields_name_Create - read: DummyDocAccessFields_name_Read - update: DummyDocAccessFields_name_Update - delete: DummyDocAccessFields_name_Delete -} - -type DummyDocAccessFields_name_Create { - permission: Boolean! -} - -type DummyDocAccessFields_name_Read { - permission: Boolean! -} - -type DummyDocAccessFields_name_Update { - permission: Boolean! -} - -type DummyDocAccessFields_name_Delete { - permission: Boolean! -} - -type DummyDocAccessFields_updatedAt { - create: DummyDocAccessFields_updatedAt_Create - read: DummyDocAccessFields_updatedAt_Read - update: DummyDocAccessFields_updatedAt_Update - delete: DummyDocAccessFields_updatedAt_Delete -} - -type DummyDocAccessFields_updatedAt_Create { - permission: Boolean! -} - -type DummyDocAccessFields_updatedAt_Read { - permission: Boolean! -} - -type DummyDocAccessFields_updatedAt_Update { - permission: Boolean! -} - -type DummyDocAccessFields_updatedAt_Delete { - permission: Boolean! -} - -type DummyDocAccessFields_createdAt { - create: DummyDocAccessFields_createdAt_Create - read: DummyDocAccessFields_createdAt_Read - update: DummyDocAccessFields_createdAt_Update - delete: DummyDocAccessFields_createdAt_Delete -} - -type DummyDocAccessFields_createdAt_Create { - permission: Boolean! -} - -type DummyDocAccessFields_createdAt_Read { - permission: Boolean! -} - -type DummyDocAccessFields_createdAt_Update { - permission: Boolean! -} - -type DummyDocAccessFields_createdAt_Delete { - permission: Boolean! -} - -type DummyCreateDocAccess { - permission: Boolean! - where: JSONObject -} - -type DummyReadDocAccess { - permission: Boolean! - where: JSONObject -} - -type DummyUpdateDocAccess { - permission: Boolean! - where: JSONObject -} - -type DummyDeleteDocAccess { - permission: Boolean! - where: JSONObject -} - -type User { - id: String - updatedAt: DateTime - createdAt: DateTime - email: EmailAddress - resetPasswordToken: String - resetPasswordExpiration: DateTime - loginAttempts: Float - lockUntil: DateTime - password: String! -} - -""" -A field whose value conforms to the standard internet email address format as specified in HTML Spec: https://html.spec.whatwg.org/multipage/input.html#valid-e-mail-address. -""" -scalar EmailAddress @specifiedBy(url: "https://html.spec.whatwg.org/multipage/input.html#valid-e-mail-address") - -type Users { - docs: [User] - totalDocs: Int - offset: Int - limit: Int - totalPages: Int - page: Int - pagingCounter: Int - hasPrevPage: Boolean - hasNextPage: Boolean - prevPage: Int - nextPage: Int -} - -input User_where { - updatedAt: User_updatedAt_operator - createdAt: User_createdAt_operator - email: User_email_operator - id: User_id_operator - OR: [User_where_or] - AND: [User_where_and] -} - -input User_updatedAt_operator { - equals: DateTime - not_equals: DateTime - greater_than_equal: DateTime - greater_than: DateTime - less_than_equal: DateTime - less_than: DateTime - like: DateTime - exists: Boolean -} - -input User_createdAt_operator { - equals: DateTime - not_equals: DateTime - greater_than_equal: DateTime - greater_than: DateTime - less_than_equal: DateTime - less_than: DateTime - like: DateTime - exists: Boolean -} - -input User_email_operator { - equals: EmailAddress - not_equals: EmailAddress - like: EmailAddress - contains: EmailAddress - in: [EmailAddress] - not_in: [EmailAddress] - all: [EmailAddress] - exists: Boolean -} - -input User_id_operator { - equals: String - not_equals: String - like: String - contains: String - in: [String] - not_in: [String] - all: [String] - exists: Boolean -} - -input User_where_or { - updatedAt: User_updatedAt_operator - createdAt: User_createdAt_operator - email: User_email_operator - id: User_id_operator -} - -input User_where_and { - updatedAt: User_updatedAt_operator - createdAt: User_createdAt_operator - email: User_email_operator - id: User_id_operator -} - -type usersDocAccess { - fields: UsersDocAccessFields - create: UsersCreateDocAccess - read: UsersReadDocAccess - update: UsersUpdateDocAccess - delete: UsersDeleteDocAccess - unlock: UsersUnlockDocAccess -} - -type UsersDocAccessFields { - updatedAt: UsersDocAccessFields_updatedAt - createdAt: UsersDocAccessFields_createdAt - email: UsersDocAccessFields_email - password: UsersDocAccessFields_password -} - -type UsersDocAccessFields_updatedAt { - create: UsersDocAccessFields_updatedAt_Create - read: UsersDocAccessFields_updatedAt_Read - update: UsersDocAccessFields_updatedAt_Update - delete: UsersDocAccessFields_updatedAt_Delete -} - -type UsersDocAccessFields_updatedAt_Create { - permission: Boolean! -} - -type UsersDocAccessFields_updatedAt_Read { - permission: Boolean! -} - -type UsersDocAccessFields_updatedAt_Update { - permission: Boolean! -} - -type UsersDocAccessFields_updatedAt_Delete { - permission: Boolean! -} - -type UsersDocAccessFields_createdAt { - create: UsersDocAccessFields_createdAt_Create - read: UsersDocAccessFields_createdAt_Read - update: UsersDocAccessFields_createdAt_Update - delete: UsersDocAccessFields_createdAt_Delete -} - -type UsersDocAccessFields_createdAt_Create { - permission: Boolean! -} - -type UsersDocAccessFields_createdAt_Read { - permission: Boolean! -} - -type UsersDocAccessFields_createdAt_Update { - permission: Boolean! -} - -type UsersDocAccessFields_createdAt_Delete { - permission: Boolean! -} - -type UsersDocAccessFields_email { - create: UsersDocAccessFields_email_Create - read: UsersDocAccessFields_email_Read - update: UsersDocAccessFields_email_Update - delete: UsersDocAccessFields_email_Delete -} - -type UsersDocAccessFields_email_Create { - permission: Boolean! -} - -type UsersDocAccessFields_email_Read { - permission: Boolean! -} - -type UsersDocAccessFields_email_Update { - permission: Boolean! -} - -type UsersDocAccessFields_email_Delete { - permission: Boolean! -} - -type UsersDocAccessFields_password { - create: UsersDocAccessFields_password_Create - read: UsersDocAccessFields_password_Read - update: UsersDocAccessFields_password_Update - delete: UsersDocAccessFields_password_Delete -} - -type UsersDocAccessFields_password_Create { - permission: Boolean! -} - -type UsersDocAccessFields_password_Read { - permission: Boolean! -} - -type UsersDocAccessFields_password_Update { - permission: Boolean! -} - -type UsersDocAccessFields_password_Delete { - permission: Boolean! -} - -type UsersCreateDocAccess { - permission: Boolean! - where: JSONObject -} - -type UsersReadDocAccess { - permission: Boolean! - where: JSONObject -} - -type UsersUpdateDocAccess { - permission: Boolean! - where: JSONObject -} - -type UsersDeleteDocAccess { - permission: Boolean! - where: JSONObject -} - -type UsersUnlockDocAccess { - permission: Boolean! - where: JSONObject -} - -type usersMe { - token: String - user: User - exp: Int - collection: String -} - -type Preference { - key: String! - value: JSON - createdAt: DateTime! - updatedAt: DateTime! -} - -""" -The `JSON` scalar type represents JSON values as specified by [ECMA-404](http://www.ecma-international.org/publications/files/ECMA-ST/ECMA-404.pdf). -""" -scalar JSON - -type Access { - canAccessAdmin: Boolean! - posts: postsAccess - relation: relationAccess - dummy: dummyAccess - users: usersAccess -} - -type postsAccess { - fields: PostsFields - create: PostsCreateAccess - read: PostsReadAccess - update: PostsUpdateAccess - delete: PostsDeleteAccess -} - -type PostsFields { - title: PostsFields_title - description: PostsFields_description - number: PostsFields_number - relationField: PostsFields_relationField - relationHasManyField: PostsFields_relationHasManyField - relationMultiRelationTo: PostsFields_relationMultiRelationTo - relationMultiRelationToHasMany: PostsFields_relationMultiRelationToHasMany - updatedAt: PostsFields_updatedAt - createdAt: PostsFields_createdAt -} - -type PostsFields_title { - create: PostsFields_title_Create - read: PostsFields_title_Read - update: PostsFields_title_Update - delete: PostsFields_title_Delete -} - -type PostsFields_title_Create { - permission: Boolean! -} - -type PostsFields_title_Read { - permission: Boolean! -} - -type PostsFields_title_Update { - permission: Boolean! -} - -type PostsFields_title_Delete { - permission: Boolean! -} - -type PostsFields_description { - create: PostsFields_description_Create - read: PostsFields_description_Read - update: PostsFields_description_Update - delete: PostsFields_description_Delete -} - -type PostsFields_description_Create { - permission: Boolean! -} - -type PostsFields_description_Read { - permission: Boolean! -} - -type PostsFields_description_Update { - permission: Boolean! -} - -type PostsFields_description_Delete { - permission: Boolean! -} - -type PostsFields_number { - create: PostsFields_number_Create - read: PostsFields_number_Read - update: PostsFields_number_Update - delete: PostsFields_number_Delete -} - -type PostsFields_number_Create { - permission: Boolean! -} - -type PostsFields_number_Read { - permission: Boolean! -} - -type PostsFields_number_Update { - permission: Boolean! -} - -type PostsFields_number_Delete { - permission: Boolean! -} - -type PostsFields_relationField { - create: PostsFields_relationField_Create - read: PostsFields_relationField_Read - update: PostsFields_relationField_Update - delete: PostsFields_relationField_Delete -} - -type PostsFields_relationField_Create { - permission: Boolean! -} - -type PostsFields_relationField_Read { - permission: Boolean! -} - -type PostsFields_relationField_Update { - permission: Boolean! -} - -type PostsFields_relationField_Delete { - permission: Boolean! -} - -type PostsFields_relationHasManyField { - create: PostsFields_relationHasManyField_Create - read: PostsFields_relationHasManyField_Read - update: PostsFields_relationHasManyField_Update - delete: PostsFields_relationHasManyField_Delete -} - -type PostsFields_relationHasManyField_Create { - permission: Boolean! -} - -type PostsFields_relationHasManyField_Read { - permission: Boolean! -} - -type PostsFields_relationHasManyField_Update { - permission: Boolean! -} - -type PostsFields_relationHasManyField_Delete { - permission: Boolean! -} - -type PostsFields_relationMultiRelationTo { - create: PostsFields_relationMultiRelationTo_Create - read: PostsFields_relationMultiRelationTo_Read - update: PostsFields_relationMultiRelationTo_Update - delete: PostsFields_relationMultiRelationTo_Delete -} - -type PostsFields_relationMultiRelationTo_Create { - permission: Boolean! -} - -type PostsFields_relationMultiRelationTo_Read { - permission: Boolean! -} - -type PostsFields_relationMultiRelationTo_Update { - permission: Boolean! -} - -type PostsFields_relationMultiRelationTo_Delete { - permission: Boolean! -} - -type PostsFields_relationMultiRelationToHasMany { - create: PostsFields_relationMultiRelationToHasMany_Create - read: PostsFields_relationMultiRelationToHasMany_Read - update: PostsFields_relationMultiRelationToHasMany_Update - delete: PostsFields_relationMultiRelationToHasMany_Delete -} - -type PostsFields_relationMultiRelationToHasMany_Create { - permission: Boolean! -} - -type PostsFields_relationMultiRelationToHasMany_Read { - permission: Boolean! -} - -type PostsFields_relationMultiRelationToHasMany_Update { - permission: Boolean! -} - -type PostsFields_relationMultiRelationToHasMany_Delete { - permission: Boolean! -} - -type PostsFields_updatedAt { - create: PostsFields_updatedAt_Create - read: PostsFields_updatedAt_Read - update: PostsFields_updatedAt_Update - delete: PostsFields_updatedAt_Delete -} - -type PostsFields_updatedAt_Create { - permission: Boolean! -} - -type PostsFields_updatedAt_Read { - permission: Boolean! -} - -type PostsFields_updatedAt_Update { - permission: Boolean! -} - -type PostsFields_updatedAt_Delete { - permission: Boolean! -} - -type PostsFields_createdAt { - create: PostsFields_createdAt_Create - read: PostsFields_createdAt_Read - update: PostsFields_createdAt_Update - delete: PostsFields_createdAt_Delete -} - -type PostsFields_createdAt_Create { - permission: Boolean! -} - -type PostsFields_createdAt_Read { - permission: Boolean! -} - -type PostsFields_createdAt_Update { - permission: Boolean! -} - -type PostsFields_createdAt_Delete { - permission: Boolean! -} - -type PostsCreateAccess { - permission: Boolean! - where: JSONObject -} - -type PostsReadAccess { - permission: Boolean! - where: JSONObject -} - -type PostsUpdateAccess { - permission: Boolean! - where: JSONObject -} - -type PostsDeleteAccess { - permission: Boolean! - where: JSONObject -} - -type relationAccess { - fields: RelationFields - create: RelationCreateAccess - read: RelationReadAccess - update: RelationUpdateAccess - delete: RelationDeleteAccess -} - -type RelationFields { - name: RelationFields_name - updatedAt: RelationFields_updatedAt - createdAt: RelationFields_createdAt -} - -type RelationFields_name { - create: RelationFields_name_Create - read: RelationFields_name_Read - update: RelationFields_name_Update - delete: RelationFields_name_Delete -} - -type RelationFields_name_Create { - permission: Boolean! -} - -type RelationFields_name_Read { - permission: Boolean! -} - -type RelationFields_name_Update { - permission: Boolean! -} - -type RelationFields_name_Delete { - permission: Boolean! -} - -type RelationFields_updatedAt { - create: RelationFields_updatedAt_Create - read: RelationFields_updatedAt_Read - update: RelationFields_updatedAt_Update - delete: RelationFields_updatedAt_Delete -} - -type RelationFields_updatedAt_Create { - permission: Boolean! -} - -type RelationFields_updatedAt_Read { - permission: Boolean! -} - -type RelationFields_updatedAt_Update { - permission: Boolean! -} - -type RelationFields_updatedAt_Delete { - permission: Boolean! -} - -type RelationFields_createdAt { - create: RelationFields_createdAt_Create - read: RelationFields_createdAt_Read - update: RelationFields_createdAt_Update - delete: RelationFields_createdAt_Delete -} - -type RelationFields_createdAt_Create { - permission: Boolean! -} - -type RelationFields_createdAt_Read { - permission: Boolean! -} - -type RelationFields_createdAt_Update { - permission: Boolean! -} - -type RelationFields_createdAt_Delete { - permission: Boolean! -} - -type RelationCreateAccess { - permission: Boolean! - where: JSONObject -} - -type RelationReadAccess { - permission: Boolean! - where: JSONObject -} - -type RelationUpdateAccess { - permission: Boolean! - where: JSONObject -} - -type RelationDeleteAccess { - permission: Boolean! - where: JSONObject -} - -type dummyAccess { - fields: DummyFields - create: DummyCreateAccess - read: DummyReadAccess - update: DummyUpdateAccess - delete: DummyDeleteAccess -} - -type DummyFields { - name: DummyFields_name - updatedAt: DummyFields_updatedAt - createdAt: DummyFields_createdAt -} - -type DummyFields_name { - create: DummyFields_name_Create - read: DummyFields_name_Read - update: DummyFields_name_Update - delete: DummyFields_name_Delete -} - -type DummyFields_name_Create { - permission: Boolean! -} - -type DummyFields_name_Read { - permission: Boolean! -} - -type DummyFields_name_Update { - permission: Boolean! -} - -type DummyFields_name_Delete { - permission: Boolean! -} - -type DummyFields_updatedAt { - create: DummyFields_updatedAt_Create - read: DummyFields_updatedAt_Read - update: DummyFields_updatedAt_Update - delete: DummyFields_updatedAt_Delete -} - -type DummyFields_updatedAt_Create { - permission: Boolean! -} - -type DummyFields_updatedAt_Read { - permission: Boolean! -} - -type DummyFields_updatedAt_Update { - permission: Boolean! -} - -type DummyFields_updatedAt_Delete { - permission: Boolean! -} - -type DummyFields_createdAt { - create: DummyFields_createdAt_Create - read: DummyFields_createdAt_Read - update: DummyFields_createdAt_Update - delete: DummyFields_createdAt_Delete -} - -type DummyFields_createdAt_Create { - permission: Boolean! -} - -type DummyFields_createdAt_Read { - permission: Boolean! -} - -type DummyFields_createdAt_Update { - permission: Boolean! -} - -type DummyFields_createdAt_Delete { - permission: Boolean! -} - -type DummyCreateAccess { - permission: Boolean! - where: JSONObject -} - -type DummyReadAccess { - permission: Boolean! - where: JSONObject -} - -type DummyUpdateAccess { - permission: Boolean! - where: JSONObject -} - -type DummyDeleteAccess { - permission: Boolean! - where: JSONObject -} - -type usersAccess { - fields: UsersFields - create: UsersCreateAccess - read: UsersReadAccess - update: UsersUpdateAccess - delete: UsersDeleteAccess - unlock: UsersUnlockAccess -} - -type UsersFields { - updatedAt: UsersFields_updatedAt - createdAt: UsersFields_createdAt - email: UsersFields_email - password: UsersFields_password -} - -type UsersFields_updatedAt { - create: UsersFields_updatedAt_Create - read: UsersFields_updatedAt_Read - update: UsersFields_updatedAt_Update - delete: UsersFields_updatedAt_Delete -} - -type UsersFields_updatedAt_Create { - permission: Boolean! -} - -type UsersFields_updatedAt_Read { - permission: Boolean! -} - -type UsersFields_updatedAt_Update { - permission: Boolean! -} - -type UsersFields_updatedAt_Delete { - permission: Boolean! -} - -type UsersFields_createdAt { - create: UsersFields_createdAt_Create - read: UsersFields_createdAt_Read - update: UsersFields_createdAt_Update - delete: UsersFields_createdAt_Delete -} - -type UsersFields_createdAt_Create { - permission: Boolean! -} - -type UsersFields_createdAt_Read { - permission: Boolean! -} - -type UsersFields_createdAt_Update { - permission: Boolean! -} - -type UsersFields_createdAt_Delete { - permission: Boolean! -} - -type UsersFields_email { - create: UsersFields_email_Create - read: UsersFields_email_Read - update: UsersFields_email_Update - delete: UsersFields_email_Delete -} - -type UsersFields_email_Create { - permission: Boolean! -} - -type UsersFields_email_Read { - permission: Boolean! -} - -type UsersFields_email_Update { - permission: Boolean! -} - -type UsersFields_email_Delete { - permission: Boolean! -} - -type UsersFields_password { - create: UsersFields_password_Create - read: UsersFields_password_Read - update: UsersFields_password_Update - delete: UsersFields_password_Delete -} - -type UsersFields_password_Create { - permission: Boolean! -} - -type UsersFields_password_Read { - permission: Boolean! -} - -type UsersFields_password_Update { - permission: Boolean! -} - -type UsersFields_password_Delete { - permission: Boolean! -} - -type UsersCreateAccess { - permission: Boolean! - where: JSONObject -} - -type UsersReadAccess { - permission: Boolean! - where: JSONObject -} - -type UsersUpdateAccess { - permission: Boolean! - where: JSONObject -} - -type UsersDeleteAccess { - permission: Boolean! - where: JSONObject -} - -type UsersUnlockAccess { - permission: Boolean! - where: JSONObject -} - -type Mutation { - createPost(data: mutationPostInput!, draft: Boolean): Post - updatePost(id: String!, data: mutationPostUpdateInput!, draft: Boolean, autosave: Boolean): Post - deletePost(id: String!): Post - createRelation(data: mutationRelationInput!, draft: Boolean): Relation - updateRelation(id: String!, data: mutationRelationUpdateInput!, draft: Boolean, autosave: Boolean): Relation - deleteRelation(id: String!): Relation - createDummy(data: mutationDummyInput!, draft: Boolean): Dummy - updateDummy(id: String!, data: mutationDummyUpdateInput!, draft: Boolean, autosave: Boolean): Dummy - deleteDummy(id: String!): Dummy - createUser(data: mutationUserInput!, draft: Boolean): User - updateUser(id: String!, data: mutationUserUpdateInput!, draft: Boolean, autosave: Boolean): User - deleteUser(id: String!): User - refreshTokenUser(token: String): usersRefreshedUser - logoutUser: String - unlockUser(email: String!): Boolean! - loginUser(email: String, password: String): usersLoginResult - forgotPasswordUser(email: String!, disableEmail: Boolean, expiration: Int): Boolean! - resetPasswordUser(token: String, password: String): usersResetPassword - verifyEmailUser(token: String): Boolean - updatePreference(key: String!, value: JSON): Preference - deletePreference(key: String!): Preference -} - -input mutationPostInput { - title: String - description: String - number: Float - relationField: String - relationHasManyField: [String] - relationMultiRelationTo: Post_RelationMultiRelationToRelationshipInput - relationMultiRelationToHasMany: [Post_RelationMultiRelationToHasManyRelationshipInput] - updatedAt: String - createdAt: String -} - -input Post_RelationMultiRelationToRelationshipInput { - relationTo: Post_RelationMultiRelationToRelationshipInputRelationTo - value: JSON -} - -enum Post_RelationMultiRelationToRelationshipInputRelationTo { - relation - dummy -} - -input Post_RelationMultiRelationToHasManyRelationshipInput { - relationTo: Post_RelationMultiRelationToHasManyRelationshipInputRelationTo - value: JSON -} - -enum Post_RelationMultiRelationToHasManyRelationshipInputRelationTo { - relation - dummy -} - -input mutationPostUpdateInput { - title: String - description: String - number: Float - relationField: String - relationHasManyField: [String] - relationMultiRelationTo: PostUpdate_RelationMultiRelationToRelationshipInput - relationMultiRelationToHasMany: [PostUpdate_RelationMultiRelationToHasManyRelationshipInput] - updatedAt: String - createdAt: String -} - -input PostUpdate_RelationMultiRelationToRelationshipInput { - relationTo: PostUpdate_RelationMultiRelationToRelationshipInputRelationTo - value: JSON -} - -enum PostUpdate_RelationMultiRelationToRelationshipInputRelationTo { - relation - dummy -} - -input PostUpdate_RelationMultiRelationToHasManyRelationshipInput { - relationTo: PostUpdate_RelationMultiRelationToHasManyRelationshipInputRelationTo - value: JSON -} - -enum PostUpdate_RelationMultiRelationToHasManyRelationshipInputRelationTo { - relation - dummy -} - -input mutationRelationInput { - name: String - updatedAt: String - createdAt: String -} - -input mutationRelationUpdateInput { - name: String - updatedAt: String - createdAt: String -} - -input mutationDummyInput { - name: String - updatedAt: String - createdAt: String -} - -input mutationDummyUpdateInput { - name: String - updatedAt: String - createdAt: String -} - -input mutationUserInput { - updatedAt: String - createdAt: String - email: String - resetPasswordToken: String - resetPasswordExpiration: String - loginAttempts: Float - lockUntil: String - password: String! -} - -input mutationUserUpdateInput { - updatedAt: String - createdAt: String - email: String - resetPasswordToken: String - resetPasswordExpiration: String - loginAttempts: Float - lockUntil: String - password: String -} - -type usersRefreshedUser { - user: usersJWT - refreshedToken: String - exp: Int -} - -type usersJWT { - email: EmailAddress! - collection: String! -} - -type usersLoginResult { - token: String - user: User - exp: Int -} - -type usersResetPassword { - token: String - user: User -} \ No newline at end of file diff --git a/test/hooks/payload-types.ts b/test/hooks/payload-types.ts index ff64fea78b..f5582c89f3 100644 --- a/test/hooks/payload-types.ts +++ b/test/hooks/payload-types.ts @@ -1,6 +1,6 @@ /* tslint:disable */ /** - * This file was automatically generated by Payload CMS. + * This file was automatically generated by Payload. * DO NOT MODIFY IT BY HAND. Instead, modify your source Payload config, * and re-run `payload generate:types` to regenerate this file. */ diff --git a/test/localization/payload-types.ts b/test/localization/payload-types.ts index 79bf29fb83..a130086440 100644 --- a/test/localization/payload-types.ts +++ b/test/localization/payload-types.ts @@ -1,6 +1,6 @@ /* tslint:disable */ /** - * This file was automatically generated by Payload CMS. + * This file was automatically generated by Payload. * DO NOT MODIFY IT BY HAND. Instead, modify your source Payload config, * and re-run `payload generate:types` to regenerate this file. */ diff --git a/test/relationships/payload-types.ts b/test/relationships/payload-types.ts index 7ae6fd8c60..de4c1310a6 100644 --- a/test/relationships/payload-types.ts +++ b/test/relationships/payload-types.ts @@ -1,6 +1,6 @@ /* tslint:disable */ /** - * This file was automatically generated by Payload CMS. + * This file was automatically generated by Payload. * DO NOT MODIFY IT BY HAND. Instead, modify your source Payload config, * and re-run `payload generate:types` to regenerate this file. */ diff --git a/test/uploads/payload-types.ts b/test/uploads/payload-types.ts index 2e413ee2ea..29c6976298 100644 --- a/test/uploads/payload-types.ts +++ b/test/uploads/payload-types.ts @@ -1,6 +1,6 @@ /* tslint:disable */ /** - * This file was automatically generated by Payload CMS. + * This file was automatically generated by Payload. * DO NOT MODIFY IT BY HAND. Instead, modify your source Payload config, * and re-run `payload generate:types` to regenerate this file. */ diff --git a/test/versions/e2e.spec.ts b/test/versions/e2e.spec.ts index 90974ce627..6ca33fe2b7 100644 --- a/test/versions/e2e.spec.ts +++ b/test/versions/e2e.spec.ts @@ -29,7 +29,8 @@ import { expect, test } from '@playwright/test'; import { initPayloadE2E } from '../helpers/configHelpers'; import { AdminUrlUtil } from '../helpers/adminUrlUtil'; import { login } from '../helpers'; -import { draftSlug } from './shared'; +import { draftSlug, autosaveSlug } from './shared'; +import wait from '../../src/utilities/wait'; const { beforeAll, describe } = test; @@ -112,5 +113,40 @@ describe('versions', () => { await expect(page.locator('.row-1 .cell-_status')).toContainText('Draft'); await expect(page.locator('.row-2 .cell-_status')).toContainText('Draft'); }); + + test('should retain localized data during autosave', async () => { + const autosaveURL = new AdminUrlUtil(serverURL, autosaveSlug); + const locale = 'en'; + const spanishLocale = 'es'; + const title = 'english title'; + const spanishTitle = 'spanish title'; + const description = 'description'; + const newDescription = 'new description'; + + await page.goto(autosaveURL.create); + await page.locator('#field-title').fill(title); + await page.locator('#field-description').fill(description); + await wait(500); + + await changeLocale(spanishLocale); + await page.locator('#field-title').fill(spanishTitle); + await wait(500); + + await changeLocale(locale); + await page.locator('#field-description').fill(newDescription); + await wait(500); + + await changeLocale(spanishLocale); + await wait(500); + await page.reload(); + await expect(page.locator('#field-title')).toHaveValue(spanishTitle); + await expect(page.locator('#field-description')).toHaveValue(newDescription); + }); }); + + async function changeLocale(newLocale: string) { + await page.locator('.localizer >> button').first().click(); + await page.locator(`.localizer >> a:has-text("${newLocale}")`).click(); + expect(page.url()).toContain(`locale=${newLocale}`); + } }); diff --git a/test/versions/payload-types.ts b/test/versions/payload-types.ts index 685365debb..fcaabc48a2 100644 --- a/test/versions/payload-types.ts +++ b/test/versions/payload-types.ts @@ -1,6 +1,6 @@ /* tslint:disable */ /** - * This file was automatically generated by Payload CMS. + * This file was automatically generated by Payload. * DO NOT MODIFY IT BY HAND. Instead, modify your source Payload config, * and re-run `payload generate:types` to regenerate this file. */ diff --git a/utilities.d.ts b/utilities.d.ts index 4ea60412d6..97def71f70 100644 --- a/utilities.d.ts +++ b/utilities.d.ts @@ -1 +1 @@ -export * from './dist/utilities/entityToJSONSchema'; +export { entityToJSONSchema } from './dist/utilities/configToJSONSchema'; diff --git a/utilities.js b/utilities.js index 40e9b88650..0e6fcd443b 100644 --- a/utilities.js +++ b/utilities.js @@ -1,4 +1,4 @@ -const { entityToJSONSchema } = require('./dist/utilities/entityToJSONSchema'); +const { entityToJSONSchema } = require('./dist/utilities/configToJSONSchema'); module.exports = { entityToJSONSchema, diff --git a/yarn.lock b/yarn.lock index 749dfce44c..e1ad30aac5 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1855,7 +1855,7 @@ dependencies: "@octokit/openapi-types" "^17.1.2" -"@playwright/test@^1.32.3": +"@playwright/test@1.33.0": version "1.33.0" resolved "https://registry.yarnpkg.com/@playwright/test/-/test-1.33.0.tgz#669ef859efb81b143dfc624eef99d1dd92a81b67" integrity sha512-YunBa2mE7Hq4CfPkGzQRK916a4tuZoVx/EpLjeWlTVOnD4S2+fdaQZE0LJkbfhN5FTSKNLdcl7MoT5XB37bTkg== @@ -5413,10 +5413,10 @@ eslint-plugin-node@^11.1.0: resolve "^1.10.1" semver "^6.1.0" -eslint-plugin-playwright@^0.11.2: - version "0.11.2" - resolved "https://registry.yarnpkg.com/eslint-plugin-playwright/-/eslint-plugin-playwright-0.11.2.tgz#876057d4ab19d00b44bf004e27d5ace2c8bffada" - integrity sha512-uRLRLk7uTzc8NE6t4wBU8dijQwHvC66R/h7xwdM779jsJjMUtSmeaB8ayRkkpfwi+UU5BEfwvDANwmE+ccMVDw== +eslint-plugin-playwright@^0.12.0: + version "0.12.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-playwright/-/eslint-plugin-playwright-0.12.0.tgz#0c728e07c217b5ea48acef46c52eefba9cf8ebd3" + integrity sha512-KXuzQjVzca5irMT/7rvzJKsVDGbQr43oQPc8i+SLEBqmfrTxlwMwRqfv9vtZqh4hpU0jmrnA/EOfwtls+5QC1w== eslint-plugin-react-hooks@^4.6.0: version "4.6.0"