From 6ef2bdea15c673b693cdb0cdf6bc0e48d210d0eb Mon Sep 17 00:00:00 2001 From: Dan Ribbens Date: Fri, 20 Sep 2024 11:10:16 -0400 Subject: [PATCH] feat!: join field (#7518) ## Description - Adds a new "join" field type to Payload and is supported by all database adapters - The UI uses a table view for the new field - `db-mongodb` changes relationships to be stored as ObjectIDs instead of strings (for now querying works using both types internally to the DB so no data migration should be necessary unless you're querying directly, see breaking changes for details - Adds a reusable traverseFields utility to Payload to make it easier to work with nested fields, used internally and for plugin maintainers ```ts export const Categories: CollectionConfig = { slug: 'categories', fields: [ { name: 'relatedPosts', type: 'join', collection: 'posts', on: 'category', } ] } ``` BREAKING CHANGES: All mongodb relationship and upload values will be stored as MongoDB ObjectIDs instead of strings going forward. If you have existing data and you are querying data directly, outside of Payload's APIs, you get different results. For example, a `contains` query will no longer works given a partial ID of a relationship since the ObjectID requires the whole identifier to work. --------- Co-authored-by: Jacob Fletcher Co-authored-by: James --- .github/workflows/pr-title.yml | 1 - docs/fields/join.mdx | 235 + docs/fields/relationship.mdx | 6 + package.json | 1 - packages/db-mongodb/package.json | 3 +- packages/db-mongodb/src/create.ts | 10 +- packages/db-mongodb/src/createGlobal.ts | 15 +- .../db-mongodb/src/createGlobalVersion.ts | 43 +- packages/db-mongodb/src/createVersion.ts | 45 +- packages/db-mongodb/src/find.ts | 34 +- packages/db-mongodb/src/findOne.ts | 21 +- packages/db-mongodb/src/init.ts | 7 +- .../src/models/buildCollectionSchema.ts | 5 + .../src/queries/buildSearchParams.ts | 2 +- .../src/queries/sanitizeQueryValue.ts | 70 +- packages/db-mongodb/src/types.ts | 16 +- packages/db-mongodb/src/updateGlobal.ts | 10 +- .../db-mongodb/src/updateGlobalVersion.ts | 23 +- packages/db-mongodb/src/updateOne.ts | 9 +- packages/db-mongodb/src/updateVersion.ts | 14 +- .../src/utilities/buildJoinAggregation.ts | 174 + .../src/utilities/sanitizeRelationshipIDs.ts | 140 + packages/db-mongodb/src/withSession.ts | 2 +- packages/db-sqlite/src/schema/build.ts | 18 +- .../db-sqlite/src/schema/traverseFields.ts | 15 + packages/drizzle/src/count.ts | 2 +- packages/drizzle/src/deleteOne.ts | 6 +- packages/drizzle/src/find.ts | 2 + .../drizzle/src/find/buildFindManyArgs.ts | 16 +- packages/drizzle/src/find/findMany.ts | 6 +- packages/drizzle/src/find/traverseFields.ts | 83 +- packages/drizzle/src/findOne.ts | 3 +- packages/drizzle/src/postgres/schema/build.ts | 8 +- .../src/postgres/schema/traverseFields.ts | 15 + packages/drizzle/src/postgres/types.ts | 10 +- .../src/queries/buildAndOrConditions.ts | 6 +- packages/drizzle/src/queries/buildOrderBy.ts | 82 + packages/drizzle/src/queries/buildQuery.ts | 74 +- packages/drizzle/src/queries/parseParams.ts | 6 +- packages/drizzle/src/transform/read/index.ts | 5 +- .../src/transform/read/traverseFields.ts | 47 +- packages/drizzle/src/update.ts | 5 +- packages/drizzle/src/updateGlobalVersion.ts | 2 +- packages/drizzle/src/updateVersion.ts | 2 +- packages/drizzle/src/upsertRow/index.ts | 3 + packages/drizzle/src/upsertRow/types.ts | 5 +- .../graphql/src/schema/buildObjectType.ts | 77 +- .../next/src/routes/rest/collections/find.ts | 7 +- .../src/routes/rest/collections/findByID.ts | 4 + .../rest/utilities/sanitizeJoinParams.ts | 31 + .../next/src/views/Versions/buildColumns.tsx | 92 +- packages/payload/src/admin/fields/Join.ts | 39 + packages/payload/src/admin/types.ts | 13 + .../payload/src/collections/config/client.ts | 4 +- .../src/collections/config/sanitize.ts | 11 +- .../payload/src/collections/config/types.ts | 21 +- .../src/collections/operations/find.ts | 5 +- .../src/collections/operations/findByID.ts | 5 +- .../src/collections/operations/local/find.ts | 5 +- .../collections/operations/local/findByID.ts | 5 +- packages/payload/src/database/types.ts | 10 +- .../payload/src/errors/InvalidFieldJoin.ts | 11 + .../payload/src/fields/config/sanitize.ts | 32 +- .../src/fields/config/sanitizeJoinField.ts | 85 + packages/payload/src/fields/config/types.ts | 62 +- .../src/fields/hooks/afterRead/promise.ts | 2 +- .../relationshipPopulationPromise.ts | 38 +- packages/payload/src/index.ts | 32 +- packages/payload/src/types/index.ts | 15 +- .../src/utilities/configToJSONSchema.ts | 24 + .../payload/src/utilities/traverseFields.ts | 91 + packages/payload/src/versions/saveVersion.ts | 6 +- .../plugin-relationship-object-ids/.gitignore | 7 - .../plugin-relationship-object-ids/.swcrc | 15 - .../plugin-relationship-object-ids/README.md | 40 - .../eslint.config.js | 19 - .../package.json | 62 - .../src/hooks/afterRead.ts | 101 - .../src/hooks/beforeChange.ts | 96 - .../src/index.ts | 105 - .../tsconfig.json | 24 - packages/plugin-seo/src/translations/en.ts | 2 +- packages/plugin-seo/src/translations/es.ts | 2 +- packages/plugin-seo/src/translations/fa.ts | 2 +- packages/plugin-seo/src/translations/fr.ts | 2 +- packages/plugin-seo/src/translations/it.ts | 2 +- packages/plugin-seo/src/translations/nb.ts | 2 +- packages/plugin-seo/src/translations/pl.ts | 2 +- packages/plugin-seo/src/translations/ru.ts | 2 +- packages/plugin-seo/src/translations/uk.ts | 2 +- packages/plugin-seo/src/translations/vi.ts | 2 +- packages/translations/src/languages/ar.ts | 2 +- packages/translations/src/languages/az.ts | 2 +- packages/translations/src/languages/bg.ts | 2 +- packages/translations/src/languages/cs.ts | 2 +- packages/translations/src/languages/de.ts | 2 +- packages/translations/src/languages/en.ts | 2 +- packages/translations/src/languages/es.ts | 2 +- packages/translations/src/languages/fa.ts | 2 +- packages/translations/src/languages/fr.ts | 2 +- packages/translations/src/languages/he.ts | 2 +- packages/translations/src/languages/hr.ts | 2 +- packages/translations/src/languages/hu.ts | 2 +- packages/translations/src/languages/it.ts | 2 +- packages/translations/src/languages/ja.ts | 2 +- packages/translations/src/languages/ko.ts | 2 +- packages/translations/src/languages/my.ts | 2 +- packages/translations/src/languages/nb.ts | 2 +- packages/translations/src/languages/nl.ts | 2 +- packages/translations/src/languages/pl.ts | 2 +- packages/translations/src/languages/pt.ts | 2 +- packages/translations/src/languages/ro.ts | 2 +- packages/translations/src/languages/rs.ts | 2 +- .../translations/src/languages/rsLatin.ts | 2 +- packages/translations/src/languages/ru.ts | 2 +- packages/translations/src/languages/sk.ts | 2 +- packages/translations/src/languages/sv.ts | 2 +- packages/translations/src/languages/th.ts | 2 +- packages/translations/src/languages/tr.ts | 2 +- packages/translations/src/languages/uk.ts | 2 +- packages/translations/src/languages/vi.ts | 2 +- packages/translations/src/languages/zh.ts | 2 +- packages/translations/src/languages/zhTw.ts | 2 +- .../ui/src/elements/ColumnSelector/index.tsx | 15 +- .../elements/DocumentDrawer/DrawerContent.tsx | 4 + .../ui/src/elements/DocumentDrawer/types.ts | 5 +- packages/ui/src/elements/Hamburger/index.scss | 4 + .../ui/src/elements/ListControls/index.scss | 6 - .../ui/src/elements/ListControls/index.tsx | 14 +- .../src/elements/ListDrawer/DrawerContent.tsx | 2 +- .../Localizer/LocalizerLabel/index.scss | 10 +- .../Localizer/LocalizerLabel/index.tsx | 10 +- packages/ui/src/elements/Pagination/index.tsx | 4 +- packages/ui/src/elements/PerPage/index.tsx | 12 +- packages/ui/src/elements/Pill/index.scss | 4 +- .../ui/src/elements/ReactSelect/index.scss | 4 + .../RelationshipTable/TableWrapper.tsx | 46 + .../cells/DrawerLink/index.scss | 4 + .../cells/DrawerLink/index.tsx | 53 + .../src/elements/RelationshipTable/index.scss | 26 + .../src/elements/RelationshipTable/index.tsx | 330 + .../ui/src/elements/SortColumn/index.scss | 11 +- packages/ui/src/elements/SortColumn/index.tsx | 9 +- .../fields/Relationship/index.scss | 3 - .../DefaultCell/fields/Relationship/index.tsx | 28 +- .../Table/DefaultCell/fields/index.tsx | 3 +- packages/ui/src/elements/Table/RenderCell.tsx | 41 + packages/ui/src/elements/Table/index.scss | 49 + packages/ui/src/elements/Table/index.tsx | 58 +- .../TableColumns/buildColumnState.tsx | 73 +- .../ui/src/elements/TableColumns/index.tsx | 25 +- packages/ui/src/fields/Join/index.tsx | 71 + .../select-components/SingleValue/index.tsx | 76 +- packages/ui/src/fields/index.tsx | 2 + packages/ui/src/hooks/usePayloadAPI.ts | 1 + packages/ui/src/icons/Chevron/index.scss | 10 +- packages/ui/src/icons/Chevron/index.tsx | 14 +- .../Config/createClientConfig/collections.tsx | 1 + .../Config/createClientConfig/fields.tsx | 4 + .../ui/src/providers/DocumentInfo/index.tsx | 2 +- .../ui/src/providers/DocumentInfo/types.ts | 50 +- packages/ui/src/providers/ListQuery/index.tsx | 10 +- packages/ui/src/utilities/deepMerge.ts | 25 + pnpm-lock.yaml | 49 +- scripts/lib/publishList.ts | 1 - templates/website/pnpm-lock.yaml | 10211 +++++++++------- test/config/collections/Joins/index.ts | 18 + test/helpers.ts | 8 +- test/helpers/NextRESTClient.ts | 3 +- test/helpers/e2e/navigateToFirstCellLink.ts | 4 +- test/helpers/e2e/reorderColumns.ts | 10 +- test/joins/collections/Categories.ts | 66 + test/joins/collections/Posts.ts | 33 + test/joins/config.ts | 68 + test/joins/e2e.spec.ts | 186 + .../eslint.config.js | 2 +- test/joins/int.spec.ts | 401 + .../payload-types.ts | 143 +- test/joins/schema.graphql | 1708 +++ test/joins/seed.ts | 65 + test/joins/shared.ts | 14 + .../tsconfig.eslint.json | 0 .../tsconfig.json | 0 test/package.json | 1 - .../plugin-relationship-object-ids/.gitignore | 1 - test/plugin-relationship-object-ids/config.ts | 140 - .../int.spec.ts | 119 - .../payload-logo.png | Bin 12542 -> 0 bytes test/setupProd.ts | 1 - 189 files changed, 11076 insertions(+), 5882 deletions(-) create mode 100644 docs/fields/join.mdx create mode 100644 packages/db-mongodb/src/utilities/buildJoinAggregation.ts create mode 100644 packages/db-mongodb/src/utilities/sanitizeRelationshipIDs.ts create mode 100644 packages/drizzle/src/queries/buildOrderBy.ts create mode 100644 packages/next/src/routes/rest/utilities/sanitizeJoinParams.ts create mode 100644 packages/payload/src/admin/fields/Join.ts create mode 100644 packages/payload/src/errors/InvalidFieldJoin.ts create mode 100644 packages/payload/src/fields/config/sanitizeJoinField.ts create mode 100644 packages/payload/src/utilities/traverseFields.ts delete mode 100644 packages/plugin-relationship-object-ids/.gitignore delete mode 100644 packages/plugin-relationship-object-ids/.swcrc delete mode 100644 packages/plugin-relationship-object-ids/README.md delete mode 100644 packages/plugin-relationship-object-ids/eslint.config.js delete mode 100644 packages/plugin-relationship-object-ids/package.json delete mode 100644 packages/plugin-relationship-object-ids/src/hooks/afterRead.ts delete mode 100644 packages/plugin-relationship-object-ids/src/hooks/beforeChange.ts delete mode 100644 packages/plugin-relationship-object-ids/src/index.ts delete mode 100644 packages/plugin-relationship-object-ids/tsconfig.json create mode 100644 packages/ui/src/elements/RelationshipTable/TableWrapper.tsx create mode 100644 packages/ui/src/elements/RelationshipTable/cells/DrawerLink/index.scss create mode 100644 packages/ui/src/elements/RelationshipTable/cells/DrawerLink/index.tsx create mode 100644 packages/ui/src/elements/RelationshipTable/index.scss create mode 100644 packages/ui/src/elements/RelationshipTable/index.tsx create mode 100644 packages/ui/src/elements/Table/RenderCell.tsx create mode 100644 packages/ui/src/fields/Join/index.tsx create mode 100644 packages/ui/src/utilities/deepMerge.ts create mode 100644 test/config/collections/Joins/index.ts create mode 100644 test/joins/collections/Categories.ts create mode 100644 test/joins/collections/Posts.ts create mode 100644 test/joins/config.ts create mode 100644 test/joins/e2e.spec.ts rename test/{plugin-relationship-object-ids => joins}/eslint.config.js (87%) create mode 100644 test/joins/int.spec.ts rename test/{plugin-relationship-object-ids => joins}/payload-types.ts (62%) create mode 100644 test/joins/schema.graphql create mode 100644 test/joins/seed.ts create mode 100644 test/joins/shared.ts rename test/{plugin-relationship-object-ids => joins}/tsconfig.eslint.json (100%) rename test/{plugin-relationship-object-ids => joins}/tsconfig.json (100%) delete mode 100644 test/plugin-relationship-object-ids/.gitignore delete mode 100644 test/plugin-relationship-object-ids/config.ts delete mode 100644 test/plugin-relationship-object-ids/int.spec.ts delete mode 100644 test/plugin-relationship-object-ids/payload-logo.png diff --git a/.github/workflows/pr-title.yml b/.github/workflows/pr-title.yml index 4b46f8c383..31dbe9deeb 100644 --- a/.github/workflows/pr-title.yml +++ b/.github/workflows/pr-title.yml @@ -52,7 +52,6 @@ jobs: plugin-form-builder plugin-nested-docs plugin-redirects - plugin-relationship-object-ids plugin-search plugin-sentry plugin-seo diff --git a/docs/fields/join.mdx b/docs/fields/join.mdx new file mode 100644 index 0000000000..4e58eea7ec --- /dev/null +++ b/docs/fields/join.mdx @@ -0,0 +1,235 @@ +--- +title: Join Field +label: Join +order: 140 +desc: The Join field provides the ability to work on related documents. Learn how to use Join field, see examples and options. +keywords: join, relationship, junction, fields, config, configuration, documentation, Content Management System, cms, headless, javascript, node, react, nextjs +--- + +The Join Field is used to make Relationship fields in the opposite direction. It is used to show the relationship from +the other side. The field itself acts as a virtual field, in that no new data is stored on the collection with a Join +field. Instead, the Admin UI surfaces the related documents for a better editing experience and is surfaced by Payload's +APIs. + +The Join field is useful in scenarios including: + +- To surface `Order`s for a given `Product` +- To view and edit `Posts` belonging to a `Category` +- To work with any bi-directional relationship data + +For the Join field to work, you must have an existing [relationship](./relationship) field in the collection you are +joining. This will reference the collection and path of the field of the related documents. +To add a Relationship Field, set the `type` to `join` in your [Field Config](./overview): + +```ts +import type { Field } from 'payload/types' + +export const MyJoinField: Field = { + // highlight-start + name: 'relatedPosts', + type: 'join', + collection: 'posts', + on: 'category', + // highlight-end +} + +// relationship field in another collection: +export const MyRelationshipField: Field = { + name: 'category', + type: 'relationship', + relationTo: 'categories', +} +``` + +In this example, the field is defined to show the related `posts` when added to a `category` collection. The `on` +property is used to +specify the relationship field name of the field that relates to the collection document. + +With this example, if you navigate to a Category in the Admin UI or an API response, you'll now see that the Posts which +are related to the Category are populated for you. This is extremely powerful and can be used to define a wide variety +of relationship types in an easy manner. + + + The Join field is extremely performant and does not add additional query overhead to your API responses until you add depth of 1 or above. It works in all database adapters. In MongoDB, we use aggregations to automatically join in related documents, and in relational databases, we use joins. + + +### Schema advice + +When modeling your database, you might come across many places where you'd like to feature bi-directional relationships. +But here's an important consideration—you generally only want to store information about a given relationship in _one_ +place. + +Let's take the Posts and Categories example. It makes sense to define which category a post belongs to while editing the +post. + +It would generally not be necessary to have a list of post IDs stored directly on the category as well, for a few +reasons: + +- You want to have a "single source of truth" for relationships, and not worry about keeping two sources in sync with + one another +- If you have hundreds, thousands, or even millions of posts, you would not want to store all of those post IDs on a + given category +- Etc. + +This is where the `join` field is especially powerful. With it, you only need to store the `category_id` on the `post`, +and Payload will automatically join in related posts for you when you query for categories. The related category is only +stored on the post itself - and is not duplicated on both sides. However, the `join` field is what enables +bi-directional APIs and UI for you. + +### Using the Join field to have full control of your database schema + +For typical polymorphic / many relationships, if you're using Postgres or SQLite, Payload will automatically create +a `posts_rels` table, which acts as a junction table to store all of a given document's relationships. + +However, this might not be appropriate for your use case if you'd like to have more control over your database +architecture. You might not want to have that `_rels` table, and would prefer to maintain / control your own junction +table design. + + + With the Join field, you can control your own junction table design, and avoid Payload's automatic _rels table creation. + + +The `join` field can be used in conjunction with _any_ collection - and if you wanted to define your own "junction" +collection, which, say, is called `categories_posts` and has a `post_id` and a `category_id` column, you can achieve +complete control over the shape of that junction table. + +You could go a step further and leverage the `admin.hidden` property of the `categories_posts` collection to hide the +collection from appearing in the Admin UI navigation. + +#### Specifying additional fields on relationships + +Another very powerful use case of the `join` field is to be able to define "context" fields on your relationships. Let's +say that you have Posts and Categories, and use join fields on both your Posts and Categories collection to join in +related docs from a new pseudo-junction collection called `categories_posts`. Now, the relations are stored in this +third junction collection, and can be surfaced on both Posts and Categories. But, importantly, you could add +additional "context" fields to this shared junction collection. + +For example, on this `categories_posts` collection, in addition to having the `category` and +post` fields, we could add custom "context" fields like `featured` or ` +spotlight`, which would allow you to store additional information directly on relationships. The `join` field gives you +complete control over any type of relational architecture in Payload, all wrapped up in a powerful Admin UI. + +## Config Options + +| Option | Description | +|------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| **`name`** \* | To be used as the property name when retrieved from the database. [More](/docs/fields/overview#field-names) | +| **`collection`** \* | The `slug`s having the relationship field. | +| **`on`** \* | The relationship field name of the field that relates to collection document. Use dot notation for nested paths, like 'myGroup.relationName'. | +| **`maxDepth`** | Default is 1, Sets a maximum population depth for this field, regardless of the remaining depth when this field is reached. [Max Depth](/docs/getting-started/concepts#field-level-max-depth) | +| **`label`** | Text used as a field label in the Admin Panel or an object with keys for each language. | +| **`hooks`** | Provide Field Hooks to control logic for this field. [More details](../hooks/fields). | +| **`access`** | Provide Field Access Control to denote what users can see and do with this field's data. [More details](../access-control/fields). | +| **`localized`** | Enable localization for this field. Requires [localization to be enabled](/docs/configuration/localization) in the Base config. | +| **`required`** | Require this field to have a value. | +| **`admin`** | Admin-specific configuration. | +| **`custom`** | Extension point for adding custom data (e.g. for plugins) | +| **`typescriptSchema`** | Override field type generation with providing a JSON schema | + +_\* An asterisk denotes that a property is required._ + +## Join Field Data + +When a document is returned that for a Join field is populated with related documents. The structure returned is an +object with: + +- `docs` an array of related documents or only IDs if the depth is reached +- `hasNextPage` a boolean indicating if there are additional documents + +```json +{ + "id": "66e3431a3f23e684075aae9c", + "relatedPosts": { + "docs": [ + { + "id": "66e3431a3f23e684075aaeb9", + // other fields... + "category": "66e3431a3f23e684075aae9c", + }, + // { ... } + ], + "hasNextPage": false + }, + // other fields... +} +``` + +## Query Options + +The Join Field supports custom queries to filter, sort, and limit the related documents that will be returned. In +addition to the specific query options for each Join Field, you can pass `joins: false` to disable all Join Field from +returning. This is useful for performance reasons when you don't need the related documents. + +The following query options are supported: + +| Property | Description | +|-------------|--------------------------------------------------------------| +| **`limit`** | The maximum related documents to be returned, default is 10. | +| **`where`** | An optional `Where` query to filter joined documents. | +| **`sort`** | A string used to order related results | + +These can be applied to the local API, GraphQL, and REST API. + +### Local API + +By adding `joins` to the local API you can customize the request for each join field by the `name` of the field. + +```js +const result = await db.findOne('categories', { + where: { + title: { + equals: 'My Category' + } + }, + joins: { + relatedPosts: { + limit: 5, + where: { + title: { + equals: 'My Post' + } + }, + sort: 'title' + } + } +}) +``` + +### Rest API + +The rest API supports the same query options as the local API. You can use the `joins` query parameter to customize the +request for each join field by the `name` of the field. For example, an API call to get a document with the related +posts limited to 5 and sorted by title: + +`/api/categories/${id}?joins[relatedPosts][limit]=5&joins[relatedPosts][sort]=title` + +You can specify as many `joins` parameters as needed for the same or different join fields for a single request. + +### GraphQL + +The GraphQL API supports the same query options as the local and REST APIs. You can specify the query options for each join field in your query. + +Example: + +```graphql +query { + Categories { + docs { + relatedPosts( + sort: "createdAt" + limit: 5 + where: { + author: { + equals: "66e3431a3f23e684075aaeb9" + } + } + ) { + docs { + title + } + hasNextPage + } + } + } +} +``` diff --git a/docs/fields/relationship.mdx b/docs/fields/relationship.mdx index bbff304652..6248484d24 100644 --- a/docs/fields/relationship.mdx +++ b/docs/fields/relationship.mdx @@ -197,6 +197,12 @@ You can learn more about writing queries [here](/docs/queries/overview). payload/shared in your validate function. +## Bi-directional relationships + +The `relationship` field on its own is used to define relationships for the document that contains the relationship field, and this can be considered as a "one-way" relationship. For example, if you have a Post that has a `category` relationship field on it, the related `category` itself will not surface any information about the posts that have the category set. + +However, the `relationship` field can be used in conjunction with the `Join` field to produce powerful bi-directional relationship authoring capabilities. If you're interested in bi-directional relationships, check out the [documentation for the Join field](./join). + ## How the data is saved Given the variety of options possible within the `relationship` field type, the shape of the data needed for creating diff --git a/package.json b/package.json index 917b94b01c..e44a8fa08c 100644 --- a/package.json +++ b/package.json @@ -34,7 +34,6 @@ "build:plugin-form-builder": "turbo build --filter \"@payloadcms/plugin-form-builder\"", "build:plugin-nested-docs": "turbo build --filter \"@payloadcms/plugin-nested-docs\"", "build:plugin-redirects": "turbo build --filter \"@payloadcms/plugin-redirects\"", - "build:plugin-relationship-object-ids": "turbo build --filter \"@payloadcms/plugin-relationship-object-ids\"", "build:plugin-search": "turbo build --filter \"@payloadcms/plugin-search\"", "build:plugin-sentry": "turbo build --filter \"@payloadcms/plugin-sentry\"", "build:plugin-seo": "turbo build --filter \"@payloadcms/plugin-seo\"", diff --git a/packages/db-mongodb/package.json b/packages/db-mongodb/package.json index c941df560a..11e2145de0 100644 --- a/packages/db-mongodb/package.json +++ b/packages/db-mongodb/package.json @@ -38,13 +38,14 @@ "bson-objectid": "2.0.4", "http-status": "1.6.2", "mongoose": "6.12.3", + "mongoose-aggregate-paginate-v2": "1.0.6", "mongoose-paginate-v2": "1.7.22", "prompts": "2.4.2", "uuid": "10.0.0" }, "devDependencies": { "@payloadcms/eslint-config": "workspace:*", - "@types/mongoose-aggregate-paginate-v2": "1.0.9", + "@types/mongoose-aggregate-paginate-v2": "1.0.6", "mongodb": "4.17.1", "mongodb-memory-server": "^9", "payload": "workspace:*" diff --git a/packages/db-mongodb/src/create.ts b/packages/db-mongodb/src/create.ts index f01a9d6af3..d1ac9a6829 100644 --- a/packages/db-mongodb/src/create.ts +++ b/packages/db-mongodb/src/create.ts @@ -3,6 +3,7 @@ import type { Create, Document, PayloadRequest } from 'payload' import type { MongooseAdapter } from './index.js' import { handleError } from './utilities/handleError.js' +import { sanitizeRelationshipIDs } from './utilities/sanitizeRelationshipIDs.js' import { withSession } from './withSession.js' export const create: Create = async function create( @@ -12,8 +13,15 @@ export const create: Create = async function create( const Model = this.collections[collection] const options = await withSession(this, req) let doc + + const sanitizedData = sanitizeRelationshipIDs({ + config: this.payload.config, + data, + fields: this.payload.collections[collection].config.fields, + }) + try { - ;[doc] = await Model.create([data], options) + ;[doc] = await Model.create([sanitizedData], options) } catch (error) { handleError({ collection, error, req }) } diff --git a/packages/db-mongodb/src/createGlobal.ts b/packages/db-mongodb/src/createGlobal.ts index f199b621c5..d57c180f33 100644 --- a/packages/db-mongodb/src/createGlobal.ts +++ b/packages/db-mongodb/src/createGlobal.ts @@ -3,6 +3,7 @@ import type { CreateGlobal, PayloadRequest } from 'payload' import type { MongooseAdapter } from './index.js' import { sanitizeInternalFields } from './utilities/sanitizeInternalFields.js' +import { sanitizeRelationshipIDs } from './utilities/sanitizeRelationshipIDs.js' import { withSession } from './withSession.js' export const createGlobal: CreateGlobal = async function createGlobal( @@ -10,10 +11,16 @@ export const createGlobal: CreateGlobal = async function createGlobal( { slug, data, req = {} as PayloadRequest }, ) { const Model = this.globals - const global = { - globalType: slug, - ...data, - } + + const global = sanitizeRelationshipIDs({ + config: this.payload.config, + data: { + globalType: slug, + ...data, + }, + fields: this.payload.config.globals.find((globalConfig) => globalConfig.slug === slug).fields, + }) + const options = await withSession(this, req) let [result] = (await Model.create([global], options)) as any diff --git a/packages/db-mongodb/src/createGlobalVersion.ts b/packages/db-mongodb/src/createGlobalVersion.ts index a4c849b6ad..c149b7882f 100644 --- a/packages/db-mongodb/src/createGlobalVersion.ts +++ b/packages/db-mongodb/src/createGlobalVersion.ts @@ -1,7 +1,13 @@ -import type { CreateGlobalVersion, Document, PayloadRequest } from 'payload' +import { + buildVersionGlobalFields, + type CreateGlobalVersion, + type Document, + type PayloadRequest, +} from 'payload' import type { MongooseAdapter } from './index.js' +import { sanitizeRelationshipIDs } from './utilities/sanitizeRelationshipIDs.js' import { withSession } from './withSession.js' export const createGlobalVersion: CreateGlobalVersion = async function createGlobalVersion( @@ -21,22 +27,25 @@ export const createGlobalVersion: CreateGlobalVersion = async function createGlo const VersionModel = this.versions[globalSlug] const options = await withSession(this, req) - const [doc] = await VersionModel.create( - [ - { - autosave, - createdAt, - latest: true, - parent, - publishedLocale, - snapshot, - updatedAt, - version: versionData, - }, - ], - options, - req, - ) + const data = sanitizeRelationshipIDs({ + config: this.payload.config, + data: { + autosave, + createdAt, + latest: true, + parent, + publishedLocale, + snapshot, + updatedAt, + version: versionData, + }, + fields: buildVersionGlobalFields( + this.payload.config, + this.payload.config.globals.find((global) => global.slug === globalSlug), + ), + }) + + const [doc] = await VersionModel.create([data], options, req) await VersionModel.updateMany( { diff --git a/packages/db-mongodb/src/createVersion.ts b/packages/db-mongodb/src/createVersion.ts index 2839ea41e5..747f359b67 100644 --- a/packages/db-mongodb/src/createVersion.ts +++ b/packages/db-mongodb/src/createVersion.ts @@ -1,7 +1,13 @@ -import type { CreateVersion, Document, PayloadRequest } from 'payload' +import { + buildVersionCollectionFields, + type CreateVersion, + type Document, + type PayloadRequest, +} from 'payload' import type { MongooseAdapter } from './index.js' +import { sanitizeRelationshipIDs } from './utilities/sanitizeRelationshipIDs.js' import { withSession } from './withSession.js' export const createVersion: CreateVersion = async function createVersion( @@ -21,22 +27,25 @@ export const createVersion: CreateVersion = async function createVersion( const VersionModel = this.versions[collectionSlug] const options = await withSession(this, req) - const [doc] = await VersionModel.create( - [ - { - autosave, - createdAt, - latest: true, - parent, - publishedLocale, - snapshot, - updatedAt, - version: versionData, - }, - ], - options, - req, - ) + const data = sanitizeRelationshipIDs({ + config: this.payload.config, + data: { + autosave, + createdAt, + latest: true, + parent, + publishedLocale, + snapshot, + updatedAt, + version: versionData, + }, + fields: buildVersionCollectionFields( + this.payload.config, + this.payload.collections[collectionSlug].config, + ), + }) + + const [doc] = await VersionModel.create([data], options, req) await VersionModel.updateMany( { @@ -48,7 +57,7 @@ export const createVersion: CreateVersion = async function createVersion( }, { parent: { - $eq: parent, + $eq: data.parent, }, }, { diff --git a/packages/db-mongodb/src/find.ts b/packages/db-mongodb/src/find.ts index 4fc321b96a..137279eabe 100644 --- a/packages/db-mongodb/src/find.ts +++ b/packages/db-mongodb/src/find.ts @@ -6,12 +6,24 @@ import { flattenWhereToOperators } from 'payload' import type { MongooseAdapter } from './index.js' import { buildSortParam } from './queries/buildSortParam.js' +import { buildJoinAggregation } from './utilities/buildJoinAggregation.js' import { sanitizeInternalFields } from './utilities/sanitizeInternalFields.js' import { withSession } from './withSession.js' export const find: Find = async function find( this: MongooseAdapter, - { collection, limit, locale, page, pagination, req = {} as PayloadRequest, sort: sortArg, where }, + { + collection, + joins = {}, + limit, + locale, + page, + pagination, + projection, + req = {} as PayloadRequest, + sort: sortArg, + where, + }, ) { const Model = this.collections[collection] const collectionConfig = this.payload.collections[collection].config @@ -50,6 +62,7 @@ export const find: Find = async function find( options, page, pagination, + projection, sort, useEstimatedCount, } @@ -88,7 +101,24 @@ export const find: Find = async function find( } } - const result = await Model.paginate(query, paginationOptions) + let result + + const aggregate = await buildJoinAggregation({ + adapter: this, + collection, + collectionConfig, + joins, + limit, + locale, + query, + }) + // build join aggregation + if (aggregate) { + result = await Model.aggregatePaginate(Model.aggregate(aggregate), paginationOptions) + } else { + result = await Model.paginate(query, paginationOptions) + } + const docs = JSON.parse(JSON.stringify(result.docs)) return { diff --git a/packages/db-mongodb/src/findOne.ts b/packages/db-mongodb/src/findOne.ts index c0fc96265d..d2be516567 100644 --- a/packages/db-mongodb/src/findOne.ts +++ b/packages/db-mongodb/src/findOne.ts @@ -3,14 +3,16 @@ import type { Document, FindOne, PayloadRequest } from 'payload' import type { MongooseAdapter } from './index.js' +import { buildJoinAggregation } from './utilities/buildJoinAggregation.js' import { sanitizeInternalFields } from './utilities/sanitizeInternalFields.js' import { withSession } from './withSession.js' export const findOne: FindOne = async function findOne( this: MongooseAdapter, - { collection, locale, req = {} as PayloadRequest, where }, + { collection, joins, locale, req = {} as PayloadRequest, where }, ) { const Model = this.collections[collection] + const collectionConfig = this.payload.collections[collection].config const options: MongooseQueryOptions = { ...(await withSession(this, req)), lean: true, @@ -22,7 +24,22 @@ export const findOne: FindOne = async function findOne( where, }) - const doc = await Model.findOne(query, {}, options) + const aggregate = await buildJoinAggregation({ + adapter: this, + collection, + collectionConfig, + joins, + limit: 1, + locale, + query, + }) + + let doc + if (aggregate) { + ;[doc] = await Model.aggregate(aggregate, options) + } else { + doc = await Model.findOne(query, {}, options) + } if (!doc) { return null diff --git a/packages/db-mongodb/src/init.ts b/packages/db-mongodb/src/init.ts index e679e98408..f307fb0e41 100644 --- a/packages/db-mongodb/src/init.ts +++ b/packages/db-mongodb/src/init.ts @@ -2,6 +2,7 @@ import type { PaginateOptions } from 'mongoose' import type { Init, SanitizedCollectionConfig } from 'payload' import mongoose from 'mongoose' +import mongooseAggregatePaginate from 'mongoose-aggregate-paginate-v2' import paginate from 'mongoose-paginate-v2' import { buildVersionCollectionFields, buildVersionGlobalFields } from 'payload' @@ -40,12 +41,16 @@ export const init: Init = function init(this: MongooseAdapter) { }), ) + if (Object.keys(collection.joins).length > 0) { + versionSchema.plugin(mongooseAggregatePaginate) + } + const model = mongoose.model( versionModelName, versionSchema, this.autoPluralization === true ? undefined : versionModelName, ) as CollectionModel - // this.payload.versions[collection.slug] = model; + this.versions[collection.slug] = model } diff --git a/packages/db-mongodb/src/models/buildCollectionSchema.ts b/packages/db-mongodb/src/models/buildCollectionSchema.ts index 0285609544..5a191dab48 100644 --- a/packages/db-mongodb/src/models/buildCollectionSchema.ts +++ b/packages/db-mongodb/src/models/buildCollectionSchema.ts @@ -1,6 +1,7 @@ import type { PaginateOptions, Schema } from 'mongoose' import type { SanitizedCollectionConfig, SanitizedConfig } from 'payload' +import mongooseAggregatePaginate from 'mongoose-aggregate-paginate-v2' import paginate from 'mongoose-paginate-v2' import { getBuildQueryPlugin } from '../queries/buildQuery.js' @@ -42,5 +43,9 @@ export const buildCollectionSchema = ( .plugin(paginate, { useEstimatedCount: true }) .plugin(getBuildQueryPlugin({ collectionSlug: collection.slug })) + if (Object.keys(collection.joins).length > 0) { + schema.plugin(mongooseAggregatePaginate) + } + return schema } diff --git a/packages/db-mongodb/src/queries/buildSearchParams.ts b/packages/db-mongodb/src/queries/buildSearchParams.ts index 4e4b559330..875d18795f 100644 --- a/packages/db-mongodb/src/queries/buildSearchParams.ts +++ b/packages/db-mongodb/src/queries/buildSearchParams.ts @@ -165,7 +165,7 @@ export async function buildSearchParam({ const subQuery = priorQueryResult.value const result = await SubModel.find(subQuery, subQueryOptions) - const $in = result.map((doc) => doc._id.toString()) + const $in = result.map((doc) => doc._id) // If it is the last recursion // then pass through the search param diff --git a/packages/db-mongodb/src/queries/sanitizeQueryValue.ts b/packages/db-mongodb/src/queries/sanitizeQueryValue.ts index 600d046bad..024d9c7177 100644 --- a/packages/db-mongodb/src/queries/sanitizeQueryValue.ts +++ b/packages/db-mongodb/src/queries/sanitizeQueryValue.ts @@ -1,5 +1,6 @@ import type { Field, TabAsField } from 'payload' +import ObjectIdImport from 'bson-objectid' import mongoose from 'mongoose' import { createArrayFromCommaDelineated } from 'payload' @@ -11,6 +12,8 @@ type SanitizeQueryValueArgs = { val: any } +const ObjectId = (ObjectIdImport.default || + ObjectIdImport) as unknown as typeof ObjectIdImport.default export const sanitizeQueryValue = ({ field, hasCustomID, @@ -26,21 +29,49 @@ export const sanitizeQueryValue = ({ let formattedOperator = operator // Disregard invalid _ids - if (path === '_id' && typeof val === 'string' && val.split(',').length === 1) { - if (!hasCustomID) { - const isValid = mongoose.Types.ObjectId.isValid(val) + if (path === '_id') { + if (typeof val === 'string' && val.split(',').length === 1) { + if (!hasCustomID) { + const isValid = mongoose.Types.ObjectId.isValid(val) - if (!isValid) { - return { operator: formattedOperator, val: undefined } + if (!isValid) { + return { operator: formattedOperator, val: undefined } + } else { + if (['in', 'not_in'].includes(operator)) { + formattedValue = createArrayFromCommaDelineated(formattedValue).map((id) => + ObjectId(id), + ) + } else { + formattedValue = ObjectId(val) + } + } } - } - if (field.type === 'number') { - const parsedNumber = parseFloat(val) + if (field.type === 'number') { + const parsedNumber = parseFloat(val) - if (Number.isNaN(parsedNumber)) { - return { operator: formattedOperator, val: undefined } + if (Number.isNaN(parsedNumber)) { + return { operator: formattedOperator, val: undefined } + } } + } else if (Array.isArray(val)) { + formattedValue = formattedValue.reduce((formattedValues, inVal) => { + const newValues = [inVal] + if (!hasCustomID) { + if (mongoose.Types.ObjectId.isValid(inVal)) { + newValues.push(ObjectId(inVal)) + } + } + + if (field.type === 'number') { + const parsedNumber = parseFloat(inVal) + if (!Number.isNaN(parsedNumber)) { + newValues.push(parsedNumber) + } + } + + return [...formattedValues, ...newValues] + }, []) } } @@ -86,6 +117,13 @@ export const sanitizeQueryValue = ({ formattedValue.value && formattedValue.relationTo ) { + const { value } = formattedValue + const isValid = mongoose.Types.ObjectId.isValid(value) + + if (isValid) { + formattedValue.value = ObjectId(value) + } + return { rawQuery: { $and: [ @@ -96,11 +134,11 @@ export const sanitizeQueryValue = ({ } } - if (operator === 'in' && Array.isArray(formattedValue)) { + if (['in', 'not_in'].includes(operator) && Array.isArray(formattedValue)) { formattedValue = formattedValue.reduce((formattedValues, inVal) => { const newValues = [inVal] if (mongoose.Types.ObjectId.isValid(inVal)) { - newValues.push(new mongoose.Types.ObjectId(inVal)) + newValues.push(ObjectId(inVal)) } const parsedNumber = parseFloat(inVal) @@ -111,6 +149,12 @@ export const sanitizeQueryValue = ({ return [...formattedValues, ...newValues] }, []) } + + if (operator === 'contains' && typeof formattedValue === 'string') { + if (mongoose.Types.ObjectId.isValid(formattedValue)) { + formattedValue = ObjectId(formattedValue) + } + } } // Set up specific formatting necessary by operators @@ -152,7 +196,7 @@ export const sanitizeQueryValue = ({ } if (path !== '_id' || (path === '_id' && hasCustomID && field.type === 'text')) { - if (operator === 'contains') { + if (operator === 'contains' && !mongoose.Types.ObjectId.isValid(formattedValue)) { formattedValue = { $options: 'i', $regex: formattedValue.replace(/[\\^$*+?.()|[\]{}]/g, '\\$&'), diff --git a/packages/db-mongodb/src/types.ts b/packages/db-mongodb/src/types.ts index b48b7759c4..3bd4ea0d5b 100644 --- a/packages/db-mongodb/src/types.ts +++ b/packages/db-mongodb/src/types.ts @@ -1,4 +1,11 @@ -import type { IndexDefinition, IndexOptions, Model, PaginateModel, SchemaOptions } from 'mongoose' +import type { + AggregatePaginateModel, + IndexDefinition, + IndexOptions, + Model, + PaginateModel, + SchemaOptions, +} from 'mongoose' import type { ArrayField, BlocksField, @@ -9,6 +16,7 @@ import type { EmailField, Field, GroupField, + JoinField, JSONField, NumberField, Payload, @@ -27,7 +35,10 @@ import type { import type { BuildQueryArgs } from './queries/buildQuery.js' -export interface CollectionModel extends Model, PaginateModel { +export interface CollectionModel + extends Model, + PaginateModel, + AggregatePaginateModel { /** buildQuery is used to transform payload's where operator into what can be used by mongoose (e.g. id => _id) */ buildQuery: (args: BuildQueryArgs) => Promise> // TODO: Delete this } @@ -83,6 +94,7 @@ export type FieldToSchemaMap = { date: FieldGeneratorFunction email: FieldGeneratorFunction group: FieldGeneratorFunction + join: FieldGeneratorFunction json: FieldGeneratorFunction number: FieldGeneratorFunction point: FieldGeneratorFunction diff --git a/packages/db-mongodb/src/updateGlobal.ts b/packages/db-mongodb/src/updateGlobal.ts index 19e943a6dd..66bcdd4aff 100644 --- a/packages/db-mongodb/src/updateGlobal.ts +++ b/packages/db-mongodb/src/updateGlobal.ts @@ -3,6 +3,7 @@ import type { PayloadRequest, UpdateGlobal } from 'payload' import type { MongooseAdapter } from './index.js' import { sanitizeInternalFields } from './utilities/sanitizeInternalFields.js' +import { sanitizeRelationshipIDs } from './utilities/sanitizeRelationshipIDs.js' import { withSession } from './withSession.js' export const updateGlobal: UpdateGlobal = async function updateGlobal( @@ -17,7 +18,14 @@ export const updateGlobal: UpdateGlobal = async function updateGlobal( } let result - result = await Model.findOneAndUpdate({ globalType: slug }, data, options) + + const sanitizedData = sanitizeRelationshipIDs({ + config: this.payload.config, + data, + fields: this.payload.config.globals.find((global) => global.slug === slug).fields, + }) + + result = await Model.findOneAndUpdate({ globalType: slug }, sanitizedData, options) result = JSON.parse(JSON.stringify(result)) diff --git a/packages/db-mongodb/src/updateGlobalVersion.ts b/packages/db-mongodb/src/updateGlobalVersion.ts index dc575b65fb..10618033d4 100644 --- a/packages/db-mongodb/src/updateGlobalVersion.ts +++ b/packages/db-mongodb/src/updateGlobalVersion.ts @@ -1,21 +1,27 @@ -import type { PayloadRequest, TypeWithID, UpdateGlobalVersionArgs } from 'payload' +import { + buildVersionGlobalFields, + type PayloadRequest, + type TypeWithID, + type UpdateGlobalVersionArgs, +} from 'payload' import type { MongooseAdapter } from './index.js' +import { sanitizeRelationshipIDs } from './utilities/sanitizeRelationshipIDs.js' import { withSession } from './withSession.js' export async function updateGlobalVersion( this: MongooseAdapter, { id, - global, + global: globalSlug, locale, req = {} as PayloadRequest, versionData, where, }: UpdateGlobalVersionArgs, ) { - const VersionModel = this.versions[global] + const VersionModel = this.versions[globalSlug] const whereToUse = where || { id: { equals: id } } const options = { ...(await withSession(this, req)), @@ -29,7 +35,16 @@ export async function updateGlobalVersion( where: whereToUse, }) - const doc = await VersionModel.findOneAndUpdate(query, versionData, options) + const sanitizedData = sanitizeRelationshipIDs({ + config: this.payload.config, + data: versionData, + fields: buildVersionGlobalFields( + this.payload.config, + this.payload.config.globals.find((global) => global.slug === globalSlug), + ), + }) + + const doc = await VersionModel.findOneAndUpdate(query, sanitizedData, options) const result = JSON.parse(JSON.stringify(doc)) diff --git a/packages/db-mongodb/src/updateOne.ts b/packages/db-mongodb/src/updateOne.ts index efee0b8fc0..0265f47701 100644 --- a/packages/db-mongodb/src/updateOne.ts +++ b/packages/db-mongodb/src/updateOne.ts @@ -4,6 +4,7 @@ import type { MongooseAdapter } from './index.js' import { handleError } from './utilities/handleError.js' import { sanitizeInternalFields } from './utilities/sanitizeInternalFields.js' +import { sanitizeRelationshipIDs } from './utilities/sanitizeRelationshipIDs.js' import { withSession } from './withSession.js' export const updateOne: UpdateOne = async function updateOne( @@ -26,8 +27,14 @@ export const updateOne: UpdateOne = async function updateOne( let result + const sanitizedData = sanitizeRelationshipIDs({ + config: this.payload.config, + data, + fields: this.payload.collections[collection].config.fields, + }) + try { - result = await Model.findOneAndUpdate(query, data, options) + result = await Model.findOneAndUpdate(query, sanitizedData, options) } catch (error) { handleError({ collection, error, req }) } diff --git a/packages/db-mongodb/src/updateVersion.ts b/packages/db-mongodb/src/updateVersion.ts index 84757e7176..da45bbb60b 100644 --- a/packages/db-mongodb/src/updateVersion.ts +++ b/packages/db-mongodb/src/updateVersion.ts @@ -1,7 +1,8 @@ -import type { PayloadRequest, UpdateVersion } from 'payload' +import { buildVersionCollectionFields, type PayloadRequest, type UpdateVersion } from 'payload' import type { MongooseAdapter } from './index.js' +import { sanitizeRelationshipIDs } from './utilities/sanitizeRelationshipIDs.js' import { withSession } from './withSession.js' export const updateVersion: UpdateVersion = async function updateVersion( @@ -22,7 +23,16 @@ export const updateVersion: UpdateVersion = async function updateVersion( where: whereToUse, }) - const doc = await VersionModel.findOneAndUpdate(query, versionData, options) + const sanitizedData = sanitizeRelationshipIDs({ + config: this.payload.config, + data: versionData, + fields: buildVersionCollectionFields( + this.payload.config, + this.payload.collections[collection].config, + ), + }) + + const doc = await VersionModel.findOneAndUpdate(query, sanitizedData, options) const result = JSON.parse(JSON.stringify(doc)) diff --git a/packages/db-mongodb/src/utilities/buildJoinAggregation.ts b/packages/db-mongodb/src/utilities/buildJoinAggregation.ts new file mode 100644 index 0000000000..05c261747c --- /dev/null +++ b/packages/db-mongodb/src/utilities/buildJoinAggregation.ts @@ -0,0 +1,174 @@ +import type { PipelineStage } from 'mongoose' +import type { CollectionSlug, JoinQuery, SanitizedCollectionConfig, Where } from 'payload' + +import type { MongooseAdapter } from '../index.js' + +import { buildSortParam } from '../queries/buildSortParam.js' + +type BuildJoinAggregationArgs = { + adapter: MongooseAdapter + collection: CollectionSlug + collectionConfig: SanitizedCollectionConfig + joins: JoinQuery + // the number of docs to get at the top collection level + limit?: number + locale: string + // the where clause for the top collection + query?: Where +} + +export const buildJoinAggregation = async ({ + adapter, + collection, + collectionConfig, + joins, + limit, + locale, + query, +}: BuildJoinAggregationArgs): Promise => { + if (Object.keys(collectionConfig.joins).length === 0 || joins === false) { + return + } + + const joinConfig = adapter.payload.collections[collection].config.joins + const aggregate: PipelineStage[] = [ + { + $sort: { createdAt: -1 }, + }, + ] + + if (query) { + aggregate.push({ + $match: query, + }) + } + + if (limit) { + aggregate.push({ + $limit: limit, + }) + } + + for (const slug of Object.keys(joinConfig)) { + for (const join of joinConfig[slug]) { + const joinModel = adapter.collections[join.field.collection] + + const { + limit: limitJoin = 10, + sort: sortJoin, + where: whereJoin, + } = joins?.[join.schemaPath] || {} + + const sort = buildSortParam({ + config: adapter.payload.config, + fields: adapter.payload.collections[slug].config.fields, + locale, + sort: sortJoin || collectionConfig.defaultSort, + timestamps: true, + }) + const sortProperty = Object.keys(sort)[0] + const sortDirection = sort[sortProperty] === 'asc' ? 1 : -1 + + const $match = await joinModel.buildQuery({ + locale, + payload: adapter.payload, + where: whereJoin, + }) + + const pipeline: Exclude[] = [ + { $match }, + { + $sort: { [sortProperty]: sortDirection }, + }, + ] + + if (limitJoin > 0) { + pipeline.push({ + $limit: limitJoin + 1, + }) + } + + if (adapter.payload.config.localization && locale === 'all') { + adapter.payload.config.localization.localeCodes.forEach((code) => { + const as = `${join.schemaPath}${code}` + + aggregate.push( + { + $lookup: { + as: `${as}.docs`, + foreignField: `${join.field.on}${code}`, + from: slug, + localField: '_id', + pipeline, + }, + }, + { + $addFields: { + [`${as}.docs`]: { + $map: { + as: 'doc', + in: '$$doc._id', + input: `$${as}.docs`, + }, + }, // Slicing the docs to match the limit + [`${as}.hasNextPage`]: { + $gt: [{ $size: `$${as}.docs` }, limitJoin || Number.MAX_VALUE], + }, // Boolean indicating if more docs than limit + }, + }, + ) + if (limitJoin > 0) { + aggregate.push({ + $addFields: { + [`${as}.docs`]: { + $slice: [`$${as}.docs`, limitJoin], + }, + }, + }) + } + }) + } else { + const localeSuffix = + join.field.localized && adapter.payload.config.localization && locale ? `.${locale}` : '' + const as = `${join.schemaPath}${localeSuffix}` + + aggregate.push( + { + $lookup: { + as: `${as}.docs`, + foreignField: `${join.field.on}${localeSuffix}`, + from: slug, + localField: '_id', + pipeline, + }, + }, + { + $addFields: { + [`${as}.docs`]: { + $map: { + as: 'doc', + in: '$$doc._id', + input: `$${as}.docs`, + }, + }, // Slicing the docs to match the limit + [`${as}.hasNextPage`]: { + $gt: [{ $size: `$${as}.docs` }, limitJoin || Number.MAX_VALUE], + }, // Boolean indicating if more docs than limit + }, + }, + ) + if (limitJoin > 0) { + aggregate.push({ + $addFields: { + [`${as}.docs`]: { + $slice: [`$${as}.docs`, limitJoin], + }, + }, + }) + } + } + } + } + + return aggregate +} diff --git a/packages/db-mongodb/src/utilities/sanitizeRelationshipIDs.ts b/packages/db-mongodb/src/utilities/sanitizeRelationshipIDs.ts new file mode 100644 index 0000000000..7b33c56bfc --- /dev/null +++ b/packages/db-mongodb/src/utilities/sanitizeRelationshipIDs.ts @@ -0,0 +1,140 @@ +import type { CollectionConfig, Field, SanitizedConfig, TraverseFieldsCallback } from 'payload' + +import mongoose from 'mongoose' +import { traverseFields } from 'payload' +import { fieldAffectsData } from 'payload/shared' + +type Args = { + config: SanitizedConfig + data: Record + fields: Field[] +} + +interface RelationObject { + relationTo: string + value: number | string +} + +function isValidRelationObject(value: unknown): value is RelationObject { + return typeof value === 'object' && value !== null && 'relationTo' in value && 'value' in value +} + +const convertValue = ({ + relatedCollection, + value, +}: { + relatedCollection: CollectionConfig + value: number | string +}): mongoose.Types.ObjectId | number | string => { + const customIDField = relatedCollection.fields.find( + (field) => fieldAffectsData(field) && field.name === 'id', + ) + + if (!customIDField) { + return new mongoose.Types.ObjectId(value) + } + + return value +} + +const sanitizeRelationship = ({ config, field, locale, ref, value }) => { + let relatedCollection: CollectionConfig | undefined + let result = value + + const hasManyRelations = typeof field.relationTo !== 'string' + + if (!hasManyRelations) { + relatedCollection = config.collections?.find(({ slug }) => slug === field.relationTo) + } + + if (Array.isArray(value)) { + result = value.map((val) => { + // Handle has many + if (relatedCollection && val && (typeof val === 'string' || typeof val === 'number')) { + return convertValue({ + relatedCollection, + value: val, + }) + } + + // Handle has many - polymorphic + if (isValidRelationObject(val)) { + const relatedCollectionForSingleValue = config.collections?.find( + ({ slug }) => slug === val.relationTo, + ) + + if (relatedCollectionForSingleValue) { + return { + relationTo: val.relationTo, + value: convertValue({ + relatedCollection: relatedCollectionForSingleValue, + value: val.value, + }), + } + } + } + + return val + }) + } + + // Handle has one - polymorphic + if (isValidRelationObject(value)) { + relatedCollection = config.collections?.find(({ slug }) => slug === value.relationTo) + + if (relatedCollection) { + result = { + relationTo: value.relationTo, + value: convertValue({ relatedCollection, value: value.value }), + } + } + } + + // Handle has one + if (relatedCollection && value && (typeof value === 'string' || typeof value === 'number')) { + result = convertValue({ + relatedCollection, + value, + }) + } + if (locale) { + ref[locale] = result + } else { + ref[field.name] = result + } +} + +export const sanitizeRelationshipIDs = ({ + config, + data, + fields, +}: Args): Record => { + const sanitize: TraverseFieldsCallback = ({ field, ref }) => { + if (field.type === 'relationship' || field.type === 'upload') { + // handle localized relationships + if (config.localization && field.localized) { + const locales = config.localization.locales + const fieldRef = ref[field.name] + for (const { code } of locales) { + if (ref[field.name]?.[code]) { + const value = ref[field.name][code] + sanitizeRelationship({ config, field, locale: code, ref: fieldRef, value }) + } + } + } else { + // handle non-localized relationships + sanitizeRelationship({ + config, + field, + locale: undefined, + ref, + value: ref[field.name], + }) + } + } + } + + traverseFields({ callback: sanitize, fields, ref: data }) + + return data +} diff --git a/packages/db-mongodb/src/withSession.ts b/packages/db-mongodb/src/withSession.ts index 6171a49990..c9f43254e7 100644 --- a/packages/db-mongodb/src/withSession.ts +++ b/packages/db-mongodb/src/withSession.ts @@ -10,7 +10,7 @@ import type { MongooseAdapter } from './index.js' export async function withSession( db: MongooseAdapter, req: PayloadRequest, -): Promise<{ session: ClientSession } | object> { +): Promise<{ session: ClientSession } | Record> { let transactionID = req.transactionID if (transactionID instanceof Promise) { diff --git a/packages/db-sqlite/src/schema/build.ts b/packages/db-sqlite/src/schema/build.ts index c668a99cd8..6b6a34d400 100644 --- a/packages/db-sqlite/src/schema/build.ts +++ b/packages/db-sqlite/src/schema/build.ts @@ -35,7 +35,15 @@ export type BaseExtraConfig = Record< }) => ForeignKeyBuilder | IndexBuilder | UniqueConstraintBuilder > -export type RelationMap = Map +export type RelationMap = Map< + string, + { + localized: boolean + relationName?: string + target: string + type: 'many' | 'one' + } +> type Args = { adapter: SQLiteAdapter @@ -144,9 +152,9 @@ export const buildTable = ({ const localizedRelations = new Map() const nonLocalizedRelations = new Map() - relationsToBuild.forEach(({ type, localized, target }, key) => { + relationsToBuild.forEach(({ type, localized, relationName, target }, key) => { const map = localized ? localizedRelations : nonLocalizedRelations - map.set(key, { type, target }) + map.set(key, { type, relationName, target }) }) if (timestamps) { @@ -458,7 +466,7 @@ export const buildTable = ({ adapter.relations[`relations_${tableName}`] = relations(table, ({ many, one }) => { const result: Record> = {} - nonLocalizedRelations.forEach(({ type, target }, key) => { + nonLocalizedRelations.forEach(({ type, relationName, target }, key) => { if (type === 'one') { result[key] = one(adapter.tables[target], { fields: [table[key]], @@ -467,7 +475,7 @@ export const buildTable = ({ }) } if (type === 'many') { - result[key] = many(adapter.tables[target], { relationName: key }) + result[key] = many(adapter.tables[target], { relationName: relationName || key }) } }) diff --git a/packages/db-sqlite/src/schema/traverseFields.ts b/packages/db-sqlite/src/schema/traverseFields.ts index 56634a9c06..1565494984 100644 --- a/packages/db-sqlite/src/schema/traverseFields.ts +++ b/packages/db-sqlite/src/schema/traverseFields.ts @@ -898,6 +898,21 @@ export const traverseFields = ({ break + case 'join': { + // fieldName could be 'posts' or 'group_posts' + // using on as the key for the relation + const localized = adapter.payload.config.localization && field.localized + const target = `${adapter.tableNameMap.get(toSnakeCase(field.collection))}${localized ? adapter.localesSuffix : ''}` + relationsToBuild.set(fieldName, { + type: 'many', + // joins are not localized on the parent table + localized: false, + relationName: toSnakeCase(field.on), + target, + }) + break + } + default: break } diff --git a/packages/drizzle/src/count.ts b/packages/drizzle/src/count.ts index ec9bea1653..3d015768b2 100644 --- a/packages/drizzle/src/count.ts +++ b/packages/drizzle/src/count.ts @@ -16,7 +16,7 @@ export const count: Count = async function count( const db = this.sessions[await req?.transactionID]?.db || this.drizzle - const { joins, where } = await buildQuery({ + const { joins, where } = buildQuery({ adapter: this, fields: collectionConfig.fields, locale, diff --git a/packages/drizzle/src/deleteOne.ts b/packages/drizzle/src/deleteOne.ts index 8a73eabf12..5b49a75538 100644 --- a/packages/drizzle/src/deleteOne.ts +++ b/packages/drizzle/src/deleteOne.ts @@ -12,7 +12,7 @@ import { transform } from './transform/read/index.js' export const deleteOne: DeleteOne = async function deleteOne( this: DrizzleAdapter, - { collection: collectionSlug, req = {} as PayloadRequest, where: whereArg }, + { collection: collectionSlug, joins: joinQuery, req = {} as PayloadRequest, where: whereArg }, ) { const db = this.sessions[await req?.transactionID]?.db || this.drizzle const collection = this.payload.collections[collectionSlug].config @@ -21,7 +21,7 @@ export const deleteOne: DeleteOne = async function deleteOne( let docToDelete: Record - const { joins, selectFields, where } = await buildQuery({ + const { joins, selectFields, where } = buildQuery({ adapter: this, fields: collection.fields, locale: req.locale, @@ -48,6 +48,7 @@ export const deleteOne: DeleteOne = async function deleteOne( adapter: this, depth: 0, fields: collection.fields, + joinQuery, tableName, }) @@ -61,6 +62,7 @@ export const deleteOne: DeleteOne = async function deleteOne( config: this.payload.config, data: docToDelete, fields: collection.fields, + joinQuery, }) await this.deleteWhere({ diff --git a/packages/drizzle/src/find.ts b/packages/drizzle/src/find.ts index 2e49973182..549ed6e13c 100644 --- a/packages/drizzle/src/find.ts +++ b/packages/drizzle/src/find.ts @@ -10,6 +10,7 @@ export const find: Find = async function find( this: DrizzleAdapter, { collection, + joins, limit, locale, page = 1, @@ -27,6 +28,7 @@ export const find: Find = async function find( return findMany({ adapter: this, fields: collectionConfig.fields, + joins, limit, locale, page, diff --git a/packages/drizzle/src/find/buildFindManyArgs.ts b/packages/drizzle/src/find/buildFindManyArgs.ts index 1f8f2728a3..278bfcd780 100644 --- a/packages/drizzle/src/find/buildFindManyArgs.ts +++ b/packages/drizzle/src/find/buildFindManyArgs.ts @@ -1,7 +1,7 @@ import type { DBQueryConfig } from 'drizzle-orm' -import type { Field } from 'payload' +import type { Field, JoinQuery } from 'payload' -import type { DrizzleAdapter } from '../types.js' +import type { BuildQueryJoinAliases, DrizzleAdapter } from '../types.js' import { traverseFields } from './traverseFields.js' @@ -9,6 +9,12 @@ type BuildFindQueryArgs = { adapter: DrizzleAdapter depth: number fields: Field[] + joinQuery?: JoinQuery + /** + * The joins array will be mutated by pushing any joins needed for the where queries of join field joins + */ + joins?: BuildQueryJoinAliases + locale?: string tableName: string } @@ -24,6 +30,9 @@ export const buildFindManyArgs = ({ adapter, depth, fields, + joinQuery, + joins = [], + locale, tableName, }: BuildFindQueryArgs): Record => { const result: Result = { @@ -79,6 +88,9 @@ export const buildFindManyArgs = ({ currentTableName: tableName, depth, fields, + joinQuery, + joins, + locale, path: '', tablePath: '', topLevelArgs: result, diff --git a/packages/drizzle/src/find/findMany.ts b/packages/drizzle/src/find/findMany.ts index 5d5fad0a29..a5500642b8 100644 --- a/packages/drizzle/src/find/findMany.ts +++ b/packages/drizzle/src/find/findMany.ts @@ -19,6 +19,7 @@ type Args = { export const findMany = async function find({ adapter, fields, + joins: joinQuery, limit: limitArg, locale, page = 1, @@ -42,7 +43,7 @@ export const findMany = async function find({ limit = undefined } - const { joins, orderBy, selectFields, where } = await buildQuery({ + const { joins, orderBy, selectFields, where } = buildQuery({ adapter, fields, locale, @@ -67,6 +68,8 @@ export const findMany = async function find({ adapter, depth: 0, fields, + joinQuery, + joins, tableName, }) @@ -151,6 +154,7 @@ export const findMany = async function find({ config: adapter.payload.config, data, fields, + joinQuery, }) }) diff --git a/packages/drizzle/src/find/traverseFields.ts b/packages/drizzle/src/find/traverseFields.ts index 2a6efcd75d..148bf6f87c 100644 --- a/packages/drizzle/src/find/traverseFields.ts +++ b/packages/drizzle/src/find/traverseFields.ts @@ -1,11 +1,15 @@ -import type { Field } from 'payload' +import type { DBQueryConfig } from 'drizzle-orm' +import type { Field, JoinQuery } from 'payload' import { fieldAffectsData, fieldIsVirtual, tabHasName } from 'payload/shared' import toSnakeCase from 'to-snake-case' -import type { DrizzleAdapter } from '../types.js' +import type { BuildQueryJoinAliases, DrizzleAdapter } from '../types.js' import type { Result } from './buildFindManyArgs.js' +import { buildOrderBy } from '../queries/buildOrderBy.js' +import buildQuery from '../queries/buildQuery.js' + type TraverseFieldArgs = { _locales: Result adapter: DrizzleAdapter @@ -13,6 +17,9 @@ type TraverseFieldArgs = { currentTableName: string depth?: number fields: Field[] + joinQuery: JoinQuery + joins?: BuildQueryJoinAliases + locale?: string path: string tablePath: string topLevelArgs: Record @@ -26,6 +33,9 @@ export const traverseFields = ({ currentTableName, depth, fields, + joinQuery = {}, + joins, + locale, path, tablePath, topLevelArgs, @@ -58,6 +68,8 @@ export const traverseFields = ({ currentTableName, depth, fields: field.fields, + joinQuery, + joins, path, tablePath, topLevelArgs, @@ -79,6 +91,8 @@ export const traverseFields = ({ currentTableName, depth, fields: tab.fields, + joinQuery, + joins, path: tabPath, tablePath: tabTablePath, topLevelArgs, @@ -124,6 +138,7 @@ export const traverseFields = ({ currentTableName: arrayTableName, depth, fields: field.fields, + joinQuery, path: '', tablePath: '', topLevelArgs, @@ -181,6 +196,7 @@ export const traverseFields = ({ currentTableName: tableName, depth, fields: block.fields, + joinQuery, path: '', tablePath: '', topLevelArgs, @@ -199,6 +215,8 @@ export const traverseFields = ({ currentTableName, depth, fields: field.fields, + joinQuery, + joins, path: `${path}${field.name}_`, tablePath: `${tablePath}${toSnakeCase(field.name)}_`, topLevelArgs, @@ -208,6 +226,67 @@ export const traverseFields = ({ break } + case 'join': { + // when `joinsQuery` is false, do not join + if (joinQuery === false) { + break + } + const { + limit: limitArg = 10, + sort, + where, + } = joinQuery[`${path.replaceAll('_', '.')}${field.name}`] || {} + let limit = limitArg + if (limit !== 0) { + // get an additional document and slice it later to determine if there is a next page + limit += 1 + } + const fields = adapter.payload.collections[field.collection].config.fields + const joinTableName = `${adapter.tableNameMap.get(toSnakeCase(field.collection))}${ + field.localized && adapter.payload.config.localization ? adapter.localesSuffix : '' + }` + const selectFields = {} + + const orderBy = buildOrderBy({ + adapter, + fields, + joins: [], + locale, + selectFields, + sort, + tableName: joinTableName, + }) + const withJoin: DBQueryConfig<'many', true, any, any> = { + columns: selectFields, + orderBy: () => [orderBy.order(orderBy.column)], + } + if (limit) { + withJoin.limit = limit + } + + if (field.localized) { + withJoin.columns._locale = true + withJoin.columns._parentID = true + } else { + withJoin.columns.id = true + } + + if (where) { + const { where: joinWhere } = buildQuery({ + adapter, + fields, + joins, + locale, + sort, + tableName: joinTableName, + where, + }) + withJoin.where = () => joinWhere + } + currentArgs.with[`${path.replaceAll('.', '_')}${field.name}`] = withJoin + break + } + default: { break } diff --git a/packages/drizzle/src/findOne.ts b/packages/drizzle/src/findOne.ts index 4a6c165dcd..78da901a5c 100644 --- a/packages/drizzle/src/findOne.ts +++ b/packages/drizzle/src/findOne.ts @@ -8,7 +8,7 @@ import { findMany } from './find/findMany.js' export async function findOne( this: DrizzleAdapter, - { collection, locale, req = {} as PayloadRequest, where }: FindOneArgs, + { collection, joins, locale, req = {} as PayloadRequest, where }: FindOneArgs, ): Promise { const collectionConfig: SanitizedCollectionConfig = this.payload.collections[collection].config @@ -17,6 +17,7 @@ export async function findOne( const { docs } = await findMany({ adapter: this, fields: collectionConfig.fields, + joins, limit: 1, locale, page: 1, diff --git a/packages/drizzle/src/postgres/schema/build.ts b/packages/drizzle/src/postgres/schema/build.ts index 2cbf8a00c0..8aab6c058f 100644 --- a/packages/drizzle/src/postgres/schema/build.ts +++ b/packages/drizzle/src/postgres/schema/build.ts @@ -138,9 +138,9 @@ export const buildTable = ({ const localizedRelations = new Map() const nonLocalizedRelations = new Map() - relationsToBuild.forEach(({ type, localized, target }, key) => { + relationsToBuild.forEach(({ type, localized, relationName, target }, key) => { const map = localized ? localizedRelations : nonLocalizedRelations - map.set(key, { type, target }) + map.set(key, { type, relationName, target }) }) if (timestamps) { @@ -444,7 +444,7 @@ export const buildTable = ({ adapter.relations[`relations_${tableName}`] = relations(table, ({ many, one }) => { const result: Record> = {} - nonLocalizedRelations.forEach(({ type, target }, key) => { + nonLocalizedRelations.forEach(({ type, relationName, target }, key) => { if (type === 'one') { result[key] = one(adapter.tables[target], { fields: [table[key]], @@ -453,7 +453,7 @@ export const buildTable = ({ }) } if (type === 'many') { - result[key] = many(adapter.tables[target], { relationName: key }) + result[key] = many(adapter.tables[target], { relationName: relationName || key }) } }) diff --git a/packages/drizzle/src/postgres/schema/traverseFields.ts b/packages/drizzle/src/postgres/schema/traverseFields.ts index 4be9b139e3..abb055ea1e 100644 --- a/packages/drizzle/src/postgres/schema/traverseFields.ts +++ b/packages/drizzle/src/postgres/schema/traverseFields.ts @@ -906,6 +906,21 @@ export const traverseFields = ({ break + case 'join': { + // fieldName could be 'posts' or 'group_posts' + // using on as the key for the relation + const localized = adapter.payload.config.localization && field.localized + const target = `${adapter.tableNameMap.get(toSnakeCase(field.collection))}${localized ? adapter.localesSuffix : ''}` + relationsToBuild.set(fieldName, { + type: 'many', + // joins are not localized on the parent table + localized: false, + relationName: toSnakeCase(field.on), + target, + }) + break + } + default: break } diff --git a/packages/drizzle/src/postgres/types.ts b/packages/drizzle/src/postgres/types.ts index 84aeb4a5ae..93057a1b4f 100644 --- a/packages/drizzle/src/postgres/types.ts +++ b/packages/drizzle/src/postgres/types.ts @@ -31,7 +31,15 @@ export type BaseExtraConfig = Record< (cols: GenericColumns) => ForeignKeyBuilder | IndexBuilder | UniqueConstraintBuilder > -export type RelationMap = Map +export type RelationMap = Map< + string, + { + localized: boolean + relationName?: string + target: string + type: 'many' | 'one' + } +> export type GenericColumn = PgColumn< ColumnBaseConfig, diff --git a/packages/drizzle/src/queries/buildAndOrConditions.ts b/packages/drizzle/src/queries/buildAndOrConditions.ts index d156e55a5f..38ac89e29b 100644 --- a/packages/drizzle/src/queries/buildAndOrConditions.ts +++ b/packages/drizzle/src/queries/buildAndOrConditions.ts @@ -6,7 +6,7 @@ import type { BuildQueryJoinAliases } from './buildQuery.js' import { parseParams } from './parseParams.js' -export async function buildAndOrConditions({ +export function buildAndOrConditions({ adapter, fields, joins, @@ -24,7 +24,7 @@ export async function buildAndOrConditions({ selectFields: Record tableName: string where: Where[] -}): Promise { +}): SQL[] { const completedConditions = [] // Loop over all AND / OR operations and add them to the AND / OR query param // Operations should come through as an array @@ -32,7 +32,7 @@ export async function buildAndOrConditions({ for (const condition of where) { // If the operation is properly formatted as an object if (typeof condition === 'object') { - const result = await parseParams({ + const result = parseParams({ adapter, fields, joins, diff --git a/packages/drizzle/src/queries/buildOrderBy.ts b/packages/drizzle/src/queries/buildOrderBy.ts new file mode 100644 index 0000000000..e90c229a0d --- /dev/null +++ b/packages/drizzle/src/queries/buildOrderBy.ts @@ -0,0 +1,82 @@ +import type { Field } from 'payload' + +import { asc, desc } from 'drizzle-orm' + +import type { DrizzleAdapter, GenericColumn } from '../types.js' +import type { BuildQueryJoinAliases, BuildQueryResult } from './buildQuery.js' + +import { getTableColumnFromPath } from './getTableColumnFromPath.js' + +type Args = { + adapter: DrizzleAdapter + fields: Field[] + joins: BuildQueryJoinAliases + locale?: string + selectFields: Record + sort?: string + tableName: string +} + +/** + * Gets the order by column and direction constructed from the sort argument adds the column to the select fields and joins if necessary + */ +export const buildOrderBy = ({ + adapter, + fields, + joins, + locale, + selectFields, + sort, + tableName, +}: Args): BuildQueryResult['orderBy'] => { + const orderBy: BuildQueryResult['orderBy'] = { + column: null, + order: null, + } + + if (sort) { + let sortPath + + if (sort[0] === '-') { + sortPath = sort.substring(1) + orderBy.order = desc + } else { + sortPath = sort + orderBy.order = asc + } + + try { + const { columnName: sortTableColumnName, table: sortTable } = getTableColumnFromPath({ + adapter, + collectionPath: sortPath, + fields, + joins, + locale, + pathSegments: sortPath.replace(/__/g, '.').split('.'), + selectFields, + tableName, + value: sortPath, + }) + orderBy.column = sortTable?.[sortTableColumnName] + } catch (err) { + // continue + } + } + + if (!orderBy?.column) { + orderBy.order = desc + const createdAt = adapter.tables[tableName]?.createdAt + + if (createdAt) { + orderBy.column = createdAt + } else { + orderBy.column = adapter.tables[tableName].id + } + } + + if (orderBy.column) { + selectFields.sort = orderBy.column + } + + return orderBy +} diff --git a/packages/drizzle/src/queries/buildQuery.ts b/packages/drizzle/src/queries/buildQuery.ts index 7d565b86aa..dff3f9fc43 100644 --- a/packages/drizzle/src/queries/buildQuery.ts +++ b/packages/drizzle/src/queries/buildQuery.ts @@ -1,12 +1,10 @@ -import type { SQL } from 'drizzle-orm' +import type { asc, desc, SQL } from 'drizzle-orm' import type { PgTableWithColumns } from 'drizzle-orm/pg-core' import type { Field, Where } from 'payload' -import { asc, desc } from 'drizzle-orm' - import type { DrizzleAdapter, GenericColumn, GenericTable } from '../types.js' -import { getTableColumnFromPath } from './getTableColumnFromPath.js' +import { buildOrderBy } from './buildOrderBy.js' import { parseParams } from './parseParams.js' export type BuildQueryJoinAliases = { @@ -17,13 +15,14 @@ export type BuildQueryJoinAliases = { type BuildQueryArgs = { adapter: DrizzleAdapter fields: Field[] + joins?: BuildQueryJoinAliases locale?: string sort?: string tableName: string where: Where } -type Result = { +export type BuildQueryResult = { joins: BuildQueryJoinAliases orderBy: { column: GenericColumn @@ -32,72 +31,33 @@ type Result = { selectFields: Record where: SQL } -const buildQuery = async function buildQuery({ +const buildQuery = function buildQuery({ adapter, fields, + joins = [], locale, sort, tableName, where: incomingWhere, -}: BuildQueryArgs): Promise { +}: BuildQueryArgs): BuildQueryResult { const selectFields: Record = { id: adapter.tables[tableName].id, } - const joins: BuildQueryJoinAliases = [] - const orderBy: Result['orderBy'] = { - column: null, - order: null, - } - - if (sort) { - let sortPath - - if (sort[0] === '-') { - sortPath = sort.substring(1) - orderBy.order = desc - } else { - sortPath = sort - orderBy.order = asc - } - - try { - const { columnName: sortTableColumnName, table: sortTable } = getTableColumnFromPath({ - adapter, - collectionPath: sortPath, - fields, - joins, - locale, - pathSegments: sortPath.replace(/__/g, '.').split('.'), - selectFields, - tableName, - value: sortPath, - }) - orderBy.column = sortTable?.[sortTableColumnName] - } catch (err) { - // continue - } - } - - if (!orderBy?.column) { - orderBy.order = desc - const createdAt = adapter.tables[tableName]?.createdAt - - if (createdAt) { - orderBy.column = createdAt - } else { - orderBy.column = adapter.tables[tableName].id - } - } - - if (orderBy.column) { - selectFields.sort = orderBy.column - } + const orderBy = buildOrderBy({ + adapter, + fields, + joins, + locale, + selectFields, + sort, + tableName, + }) let where: SQL if (incomingWhere && Object.keys(incomingWhere).length > 0) { - where = await parseParams({ + where = parseParams({ adapter, fields, joins, diff --git a/packages/drizzle/src/queries/parseParams.ts b/packages/drizzle/src/queries/parseParams.ts index 269c229187..4b1742cd13 100644 --- a/packages/drizzle/src/queries/parseParams.ts +++ b/packages/drizzle/src/queries/parseParams.ts @@ -22,7 +22,7 @@ type Args = { where: Where } -export async function parseParams({ +export function parseParams({ adapter, fields, joins, @@ -30,7 +30,7 @@ export async function parseParams({ selectFields, tableName, where, -}: Args): Promise { +}: Args): SQL { let result: SQL const constraints: SQL[] = [] @@ -46,7 +46,7 @@ export async function parseParams({ conditionOperator = or } if (Array.isArray(condition)) { - const builtConditions = await buildAndOrConditions({ + const builtConditions = buildAndOrConditions({ adapter, fields, joins, diff --git a/packages/drizzle/src/transform/read/index.ts b/packages/drizzle/src/transform/read/index.ts index 8e5ad3a144..b418c3fb7a 100644 --- a/packages/drizzle/src/transform/read/index.ts +++ b/packages/drizzle/src/transform/read/index.ts @@ -1,4 +1,4 @@ -import type { Field, SanitizedConfig, TypeWithID } from 'payload' +import type { Field, JoinQuery, SanitizedConfig, TypeWithID } from 'payload' import type { DrizzleAdapter } from '../../types.js' @@ -12,6 +12,7 @@ type TransformArgs = { data: Record fallbackLocale?: false | string fields: Field[] + joinQuery?: JoinQuery locale?: string } @@ -22,6 +23,7 @@ export const transform = | TypeWithID>({ config, data, fields, + joinQuery, }: TransformArgs): T => { let relationships: Record[]> = {} let texts: Record[]> = {} @@ -55,6 +57,7 @@ export const transform = | TypeWithID>({ deletions, fieldPrefix: '', fields, + joinQuery, numbers, path: '', relationships, diff --git a/packages/drizzle/src/transform/read/traverseFields.ts b/packages/drizzle/src/transform/read/traverseFields.ts index a189160ea0..ec56bbc5e8 100644 --- a/packages/drizzle/src/transform/read/traverseFields.ts +++ b/packages/drizzle/src/transform/read/traverseFields.ts @@ -1,4 +1,4 @@ -import type { Field, SanitizedConfig, TabAsField } from 'payload' +import type { Field, JoinQuery, SanitizedConfig, TabAsField } from 'payload' import { fieldAffectsData, fieldIsVirtual } from 'payload/shared' @@ -38,6 +38,10 @@ type TraverseFieldsArgs = { * An array of Payload fields to traverse */ fields: (Field | TabAsField)[] + /** + * + */ + joinQuery?: JoinQuery /** * All hasMany number fields, as returned by Drizzle, keyed on an object by field path */ @@ -74,6 +78,7 @@ export const traverseFields = >({ deletions, fieldPrefix, fields, + joinQuery, numbers, path, relationships, @@ -93,6 +98,7 @@ export const traverseFields = >({ deletions, fieldPrefix, fields: field.tabs.map((tab) => ({ ...tab, type: 'tab' })), + joinQuery, numbers, path, relationships, @@ -115,6 +121,7 @@ export const traverseFields = >({ deletions, fieldPrefix, fields: field.fields, + joinQuery, numbers, path, relationships, @@ -390,6 +397,44 @@ export const traverseFields = >({ } } + if (field.type === 'join') { + const { limit = 10 } = joinQuery?.[`${fieldPrefix.replaceAll('_', '.')}${field.name}`] || {} + + let fieldResult: + | { docs: unknown[]; hasNextPage: boolean } + | Record + if (Array.isArray(fieldData)) { + if (field.localized) { + fieldResult = fieldData.reduce((joinResult, row) => { + if (typeof row._locale === 'string') { + if (!joinResult[row._locale]) { + joinResult[row._locale] = { + docs: [], + hasNextPage: false, + } + } + joinResult[row._locale].docs.push(row._parentID) + } + + return joinResult + }, {}) + Object.keys(fieldResult).forEach((locale) => { + fieldResult[locale].hasNextPage = fieldResult[locale].docs.length > limit + fieldResult[locale].docs = fieldResult[locale].docs.slice(0, limit) + }) + } else { + const hasNextPage = limit !== 0 && fieldData.length > limit + fieldResult = { + docs: hasNextPage ? fieldData.slice(0, limit) : fieldData, + hasNextPage, + } + } + } + + result[field.name] = fieldResult + return result + } + if (field.type === 'text' && field?.hasMany) { const textPathMatch = texts[`${sanitizedPath}${field.name}`] if (!textPathMatch) { diff --git a/packages/drizzle/src/update.ts b/packages/drizzle/src/update.ts index 1e9e506c85..0526b78b57 100644 --- a/packages/drizzle/src/update.ts +++ b/packages/drizzle/src/update.ts @@ -10,7 +10,7 @@ import { upsertRow } from './upsertRow/index.js' export const updateOne: UpdateOne = async function updateOne( this: DrizzleAdapter, - { id, collection: collectionSlug, data, draft, locale, req, where: whereArg }, + { id, collection: collectionSlug, data, draft, joins: joinQuery, locale, req, where: whereArg }, ) { const db = this.sessions[await req?.transactionID]?.db || this.drizzle const collection = this.payload.collections[collectionSlug].config @@ -18,7 +18,7 @@ export const updateOne: UpdateOne = async function updateOne( const whereToUse = whereArg || { id: { equals: id } } let idToUpdate = id - const { joins, selectFields, where } = await buildQuery({ + const { joins, selectFields, where } = buildQuery({ adapter: this, fields: collection.fields, locale, @@ -46,6 +46,7 @@ export const updateOne: UpdateOne = async function updateOne( data, db, fields: collection.fields, + joinQuery, operation: 'update', req, tableName, diff --git a/packages/drizzle/src/updateGlobalVersion.ts b/packages/drizzle/src/updateGlobalVersion.ts index 5c55788141..3353d885aa 100644 --- a/packages/drizzle/src/updateGlobalVersion.ts +++ b/packages/drizzle/src/updateGlobalVersion.ts @@ -37,7 +37,7 @@ export async function updateGlobalVersion( const fields = buildVersionGlobalFields(this.payload.config, globalConfig) - const { where } = await buildQuery({ + const { where } = buildQuery({ adapter: this, fields, locale, diff --git a/packages/drizzle/src/updateVersion.ts b/packages/drizzle/src/updateVersion.ts index bd0f0a7449..25e285f907 100644 --- a/packages/drizzle/src/updateVersion.ts +++ b/packages/drizzle/src/updateVersion.ts @@ -34,7 +34,7 @@ export async function updateVersion( const fields = buildVersionCollectionFields(this.payload.config, collectionConfig) - const { where } = await buildQuery({ + const { where } = buildQuery({ adapter: this, fields, locale, diff --git a/packages/drizzle/src/upsertRow/index.ts b/packages/drizzle/src/upsertRow/index.ts index 8be87df58c..722fe88e9d 100644 --- a/packages/drizzle/src/upsertRow/index.ts +++ b/packages/drizzle/src/upsertRow/index.ts @@ -20,6 +20,7 @@ export const upsertRow = async | TypeWithID>( db, fields, ignoreResult, + joinQuery, operation, path = '', req, @@ -413,6 +414,7 @@ export const upsertRow = async | TypeWithID>( adapter, depth: 0, fields, + joinQuery, tableName, }) @@ -429,6 +431,7 @@ export const upsertRow = async | TypeWithID>( config: adapter.payload.config, data: doc, fields, + joinQuery, }) return result diff --git a/packages/drizzle/src/upsertRow/types.ts b/packages/drizzle/src/upsertRow/types.ts index 972182d0ec..de29ff0423 100644 --- a/packages/drizzle/src/upsertRow/types.ts +++ b/packages/drizzle/src/upsertRow/types.ts @@ -1,5 +1,5 @@ import type { SQL } from 'drizzle-orm' -import type { Field, PayloadRequest } from 'payload' +import type { Field, JoinQuery, PayloadRequest } from 'payload' import type { DrizzleAdapter, DrizzleTransaction, GenericColumn } from '../types.js' @@ -13,6 +13,7 @@ type BaseArgs = { * @default false */ ignoreResult?: boolean + joinQuery?: JoinQuery path?: string req: PayloadRequest tableName: string @@ -20,6 +21,7 @@ type BaseArgs = { type CreateArgs = { id?: never + joinQuery?: never operation: 'create' upsertTarget?: never where?: never @@ -27,6 +29,7 @@ type CreateArgs = { type UpdateArgs = { id?: number | string + joinQuery?: JoinQuery operation: 'update' upsertTarget?: GenericColumn where?: SQL diff --git a/packages/graphql/src/schema/buildObjectType.ts b/packages/graphql/src/schema/buildObjectType.ts index b77748b0d3..87cb69dc1c 100644 --- a/packages/graphql/src/schema/buildObjectType.ts +++ b/packages/graphql/src/schema/buildObjectType.ts @@ -10,6 +10,7 @@ import type { Field, GraphQLInfo, GroupField, + JoinField, JSONField, NumberField, PointField, @@ -38,7 +39,7 @@ import { GraphQLUnionType, } from 'graphql' import { DateTimeResolver, EmailAddressResolver } from 'graphql-scalars' -import { createDataloaderCacheKey, MissingEditorProp, toWords } from 'payload' +import { combineQueries, createDataloaderCacheKey, MissingEditorProp, toWords } from 'payload' import { tabHasName } from 'payload/shared' import type { Context } from '../resolvers/types.js' @@ -209,7 +210,69 @@ export function buildObjectType({ return { ...objectTypeConfig, - [field.name]: { type: graphqlResult.types.groupTypes[interfaceName] }, + [field.name]: { + type: graphqlResult.types.groupTypes[interfaceName], + resolve: (parent, args, context: Context) => { + return { + ...parent[field.name], + _id: parent._id ?? parent.id, + } + }, + }, + } + }, + join: (objectTypeConfig: ObjectTypeConfig, field: JoinField) => { + const joinName = combineParentName(parentName, toWords(field.name, true)) + + const joinType = { + type: new GraphQLObjectType({ + name: joinName, + fields: { + docs: { + type: new GraphQLList(graphqlResult.collections[field.collection].graphQL.type), + }, + hasNextPage: { type: GraphQLBoolean }, + }, + }), + args: { + limit: { + type: GraphQLInt, + }, + sort: { + type: GraphQLString, + }, + where: { + type: graphqlResult.collections[field.collection].graphQL.whereInputType, + }, + }, + extensions: { complexity: 10 }, + async resolve(parent, args, context: Context) { + const { collection } = field + const { limit, sort, where } = args + const { req } = context + + const fullWhere = combineQueries(where, { + [field.on]: { equals: parent._id ?? parent.id }, + }) + + const results = await req.payload.find({ + collection, + depth: 0, + fallbackLocale: req.fallbackLocale, + limit, + locale: req.locale, + req, + sort, + where: fullWhere, + }) + + return results + }, + } + + return { + ...objectTypeConfig, + [field.name]: joinType, } }, json: (objectTypeConfig: ObjectTypeConfig, field: JSONField) => ({ @@ -577,7 +640,15 @@ export function buildObjectType({ return { ...tabSchema, - [tab.name]: { type: graphqlResult.types.groupTypes[interfaceName] }, + [tab.name]: { + type: graphqlResult.types.groupTypes[interfaceName], + resolve(parent, args, context: Context) { + return { + ...parent[tab.name], + _id: parent._id ?? parent.id, + } + }, + }, } } diff --git a/packages/next/src/routes/rest/collections/find.ts b/packages/next/src/routes/rest/collections/find.ts index ac38d2de69..4634629bff 100644 --- a/packages/next/src/routes/rest/collections/find.ts +++ b/packages/next/src/routes/rest/collections/find.ts @@ -1,4 +1,4 @@ -import type { Where } from 'payload' +import type { JoinQuery, Where } from 'payload' import httpStatus from 'http-status' import { findOperation } from 'payload' @@ -7,11 +7,13 @@ import { isNumber } from 'payload/shared' import type { CollectionRouteHandler } from '../types.js' import { headersWithCors } from '../../../utilities/headersWithCors.js' +import { sanitizeJoinParams } from '../utilities/sanitizeJoinParams.js' export const find: CollectionRouteHandler = async ({ collection, req }) => { - const { depth, draft, limit, page, sort, where } = req.query as { + const { depth, draft, joins, limit, page, sort, where } = req.query as { depth?: string draft?: string + joins?: JoinQuery limit?: string page?: string sort?: string @@ -22,6 +24,7 @@ export const find: CollectionRouteHandler = async ({ collection, req }) => { collection, depth: isNumber(depth) ? Number(depth) : undefined, draft: draft === 'true', + joins: sanitizeJoinParams(joins), limit: isNumber(limit) ? Number(limit) : undefined, page: isNumber(page) ? Number(page) : undefined, req, diff --git a/packages/next/src/routes/rest/collections/findByID.ts b/packages/next/src/routes/rest/collections/findByID.ts index 571738363e..55eebedd65 100644 --- a/packages/next/src/routes/rest/collections/findByID.ts +++ b/packages/next/src/routes/rest/collections/findByID.ts @@ -1,3 +1,5 @@ +import type { JoinQuery } from 'payload' + import httpStatus from 'http-status' import { findByIDOperation } from 'payload' import { isNumber } from 'payload/shared' @@ -6,6 +8,7 @@ import type { CollectionRouteHandlerWithID } from '../types.js' import { headersWithCors } from '../../../utilities/headersWithCors.js' import { sanitizeCollectionID } from '../utilities/sanitizeCollectionID.js' +import { sanitizeJoinParams } from '../utilities/sanitizeJoinParams.js' export const findByID: CollectionRouteHandlerWithID = async ({ id: incomingID, @@ -26,6 +29,7 @@ export const findByID: CollectionRouteHandlerWithID = async ({ collection, depth: isNumber(depth) ? Number(depth) : undefined, draft: searchParams.get('draft') === 'true', + joins: sanitizeJoinParams(req.query.joins as JoinQuery), req, }) diff --git a/packages/next/src/routes/rest/utilities/sanitizeJoinParams.ts b/packages/next/src/routes/rest/utilities/sanitizeJoinParams.ts new file mode 100644 index 0000000000..148404bb31 --- /dev/null +++ b/packages/next/src/routes/rest/utilities/sanitizeJoinParams.ts @@ -0,0 +1,31 @@ +import type { JoinQuery } from 'payload' + +import { isNumber } from 'payload/shared' + +/** + * Convert request JoinQuery object from strings to numbers + * @param joins + */ +export const sanitizeJoinParams = ( + joins: + | { + [schemaPath: string]: { + limit?: unknown + sort?: string + where?: unknown + } + } + | false = {}, +): JoinQuery => { + const joinQuery = {} + + Object.keys(joins).forEach((schemaPath) => { + joinQuery[schemaPath] = { + limit: isNumber(joins[schemaPath]?.limit) ? Number(joins[schemaPath].limit) : undefined, + sort: joins[schemaPath]?.sort ? joins[schemaPath].sort : undefined, + where: joins[schemaPath]?.where ? joins[schemaPath].where : undefined, + } + }) + + return joinQuery +} diff --git a/packages/next/src/views/Versions/buildColumns.tsx b/packages/next/src/views/Versions/buildColumns.tsx index 08c3529541..93e9c81f64 100644 --- a/packages/next/src/views/Versions/buildColumns.tsx +++ b/packages/next/src/views/Versions/buildColumns.tsx @@ -28,48 +28,58 @@ export const buildVersionColumns = ({ const columns: Column[] = [ { + Heading: , accessor: 'updatedAt', active: true, cellProps: { field: { name: '', type: 'date', + admin: { + components: { + Cell: { + type: 'client', + Component: null, + RenderedComponent: ( + + ), + }, + Label: { + type: 'client', + Component: null, + }, + }, + }, }, }, - components: { - Cell: { - type: 'client', - Component: null, - RenderedComponent: ( - - ), - }, - Heading: , - }, - Label: '', }, { + Heading: , accessor: 'id', active: true, cellProps: { field: { name: '', type: 'text', + admin: { + components: { + Cell: { + type: 'client', + Component: null, + RenderedComponent: , + }, + Label: { + type: 'client', + Component: null, + }, + }, + }, }, }, - components: { - Cell: { - type: 'client', - Component: null, - RenderedComponent: , - }, - Heading: , - }, - Label: '', }, ] @@ -78,29 +88,33 @@ export const buildVersionColumns = ({ (entityConfig?.versions?.drafts && entityConfig.versions.drafts?.autosave) ) { columns.push({ + Heading: , accessor: '_status', active: true, cellProps: { field: { name: '', type: 'checkbox', + admin: { + components: { + Cell: { + type: 'client', + Component: null, + RenderedComponent: ( + + ), + }, + Label: { + type: 'client', + Component: null, + }, + }, + }, }, }, - components: { - Cell: { - type: 'client', - Component: null, - RenderedComponent: ( - - ), - }, - - Heading: , - }, - Label: '', }) } diff --git a/packages/payload/src/admin/fields/Join.ts b/packages/payload/src/admin/fields/Join.ts new file mode 100644 index 0000000000..6dfbb96d16 --- /dev/null +++ b/packages/payload/src/admin/fields/Join.ts @@ -0,0 +1,39 @@ +import type { MarkOptional } from 'ts-essentials' + +import type { JoinField, JoinFieldClient } from '../../fields/config/types.js' +import type { FieldErrorClientComponent, FieldErrorServerComponent } from '../forms/Error.js' +import type { + ClientFieldBase, + FieldClientComponent, + FieldServerComponent, + ServerFieldBase, +} from '../forms/Field.js' +import type { + FieldDescriptionClientComponent, + FieldDescriptionServerComponent, + FieldLabelClientComponent, + FieldLabelServerComponent, +} from '../types.js' + +type JoinFieldClientWithoutType = MarkOptional + +export type JoinFieldClientProps = ClientFieldBase + +export type JoinFieldServerProps = ServerFieldBase + +export type JoinFieldServerComponent = FieldServerComponent + +export type JoinFieldClientComponent = FieldClientComponent + +export type JoinFieldLabelServerComponent = FieldLabelServerComponent + +export type JoinFieldLabelClientComponent = FieldLabelClientComponent + +export type JoinFieldDescriptionServerComponent = FieldDescriptionServerComponent + +export type JoinFieldDescriptionClientComponent = + FieldDescriptionClientComponent + +export type JoinFieldErrorServerComponent = FieldErrorServerComponent + +export type JoinFieldErrorClientComponent = FieldErrorClientComponent diff --git a/packages/payload/src/admin/types.ts b/packages/payload/src/admin/types.ts index 60b8080cd3..ba612444a2 100644 --- a/packages/payload/src/admin/types.ts +++ b/packages/payload/src/admin/types.ts @@ -129,6 +129,19 @@ export type { export type { HiddenFieldProps } from './fields/Hidden.js' +export type { + JoinFieldClientComponent, + JoinFieldClientProps, + JoinFieldDescriptionClientComponent, + JoinFieldDescriptionServerComponent, + JoinFieldErrorClientComponent, + JoinFieldErrorServerComponent, + JoinFieldLabelClientComponent, + JoinFieldLabelServerComponent, + JoinFieldServerComponent, + JoinFieldServerProps, +} from './fields/Join.js' + export type { JSONFieldClientComponent, JSONFieldClientProps, diff --git a/packages/payload/src/collections/config/client.ts b/packages/payload/src/collections/config/client.ts index aa7aca4eaa..cb545edb12 100644 --- a/packages/payload/src/collections/config/client.ts +++ b/packages/payload/src/collections/config/client.ts @@ -6,7 +6,7 @@ import type { SanitizedCollectionConfig } from './types.js' export type ServerOnlyCollectionProperties = keyof Pick< SanitizedCollectionConfig, - 'access' | 'custom' | 'endpoints' | 'hooks' + 'access' | 'custom' | 'endpoints' | 'hooks' | 'joins' > export type ServerOnlyCollectionAdminProperties = keyof Pick< @@ -58,7 +58,7 @@ export type ClientCollectionConfig = { livePreview?: Omit } & Omit< SanitizedCollectionConfig['admin'], - 'components' | 'description' | 'livePreview' | ServerOnlyCollectionAdminProperties + 'components' | 'description' | 'joins' | 'livePreview' | ServerOnlyCollectionAdminProperties > fields: ClientField[] } & Omit diff --git a/packages/payload/src/collections/config/sanitize.ts b/packages/payload/src/collections/config/sanitize.ts index 4fe2b4ffe1..43ac041232 100644 --- a/packages/payload/src/collections/config/sanitize.ts +++ b/packages/payload/src/collections/config/sanitize.ts @@ -1,6 +1,6 @@ import type { LoginWithUsernameOptions } from '../../auth/types.js' import type { Config, SanitizedConfig } from '../../config/types.js' -import type { CollectionConfig, SanitizedCollectionConfig } from './types.js' +import type { CollectionConfig, SanitizedCollectionConfig, SanitizedJoins } from './types.js' import { getBaseAuthFields } from '../../auth/getAuthFields.js' import { TimestampsRequired } from '../../errors/TimestampsRequired.js' @@ -36,12 +36,15 @@ export const sanitizeCollection = async ( // ///////////////////////////////// const validRelationships = config.collections.map((c) => c.slug) || [] + const joins: SanitizedJoins = {} sanitized.fields = await sanitizeFields({ collectionConfig: sanitized, config, fields: sanitized.fields, + joins, parentIsLocalized: false, richTextSanitizationPromises, + schemaPath: '', validRelationships, }) @@ -193,5 +196,9 @@ export const sanitizeCollection = async ( validateUseAsTitle(sanitized) - return sanitized as SanitizedCollectionConfig + const sanitizedConfig = sanitized as SanitizedCollectionConfig + + sanitizedConfig.joins = joins + + return sanitizedConfig } diff --git a/packages/payload/src/collections/config/types.ts b/packages/payload/src/collections/config/types.ts index cae93803e3..b9a23c89c4 100644 --- a/packages/payload/src/collections/config/types.ts +++ b/packages/payload/src/collections/config/types.ts @@ -29,7 +29,7 @@ import type { StaticLabel, } from '../../config/types.js' import type { DBIdentifierName } from '../../database/types.js' -import type { Field } from '../../fields/config/types.js' +import type { Field, JoinField } from '../../fields/config/types.js' import type { CollectionSlug, JsonObject, @@ -478,6 +478,21 @@ export type CollectionConfig = { versions?: boolean | IncomingCollectionVersions } +export type SanitizedJoin = { + /** + * The field configuration defining the join + */ + field: JoinField + /** + * The schemaPath of the join field in dot notation + */ + schemaPath: string +} + +export type SanitizedJoins = { + [collectionSlug: string]: SanitizedJoin[] +} + export interface SanitizedCollectionConfig extends Omit< DeepRequired, @@ -486,6 +501,10 @@ export interface SanitizedCollectionConfig auth: Auth endpoints: Endpoint[] | false fields: Field[] + /** + * Object of collections to join 'Join Fields object keyed by collection + */ + joins: SanitizedJoins upload: SanitizedUploadConfig versions: SanitizedCollectionVersions } diff --git a/packages/payload/src/collections/operations/find.ts b/packages/payload/src/collections/operations/find.ts index e0d850f49f..e0e0368998 100644 --- a/packages/payload/src/collections/operations/find.ts +++ b/packages/payload/src/collections/operations/find.ts @@ -1,6 +1,6 @@ import type { AccessResult } from '../../config/types.js' import type { PaginatedDocs } from '../../database/types.js' -import type { CollectionSlug } from '../../index.js' +import type { CollectionSlug, JoinQuery } from '../../index.js' import type { PayloadRequest, Where } from '../../types/index.js' import type { Collection, DataFromCollectionSlug } from '../config/types.js' @@ -21,6 +21,7 @@ export type Arguments = { disableErrors?: boolean draft?: boolean includeLockStatus?: boolean + joins?: JoinQuery limit?: number overrideAccess?: boolean page?: number @@ -62,6 +63,7 @@ export const findOperation = async ( disableErrors, draft: draftsEnabled, includeLockStatus, + joins, limit, overrideAccess, page, @@ -142,6 +144,7 @@ export const findOperation = async ( result = await payload.db.find>({ collection: collectionConfig.slug, + joins: req.payloadAPI === 'GraphQL' ? false : joins, limit: sanitizedLimit, locale, page: sanitizedPage, diff --git a/packages/payload/src/collections/operations/findByID.ts b/packages/payload/src/collections/operations/findByID.ts index 03ffb71b5e..12d03d1fe8 100644 --- a/packages/payload/src/collections/operations/findByID.ts +++ b/packages/payload/src/collections/operations/findByID.ts @@ -1,5 +1,5 @@ import type { FindOneArgs } from '../../database/types.js' -import type { CollectionSlug } from '../../index.js' +import type { CollectionSlug, JoinQuery } from '../../index.js' import type { PayloadRequest } from '../../types/index.js' import type { Collection, DataFromCollectionSlug } from '../config/types.js' @@ -19,6 +19,7 @@ export type Arguments = { draft?: boolean id: number | string includeLockStatus?: boolean + joins?: JoinQuery overrideAccess?: boolean req: PayloadRequest showHiddenFields?: boolean @@ -55,6 +56,7 @@ export const findByIDOperation = async ( disableErrors, draft: draftEnabled = false, includeLockStatus, + joins, overrideAccess = false, req: { fallbackLocale, locale, t }, req, @@ -76,6 +78,7 @@ export const findByIDOperation = async ( const findOneArgs: FindOneArgs = { collection: collectionConfig.slug, + joins: req.payloadAPI === 'GraphQL' ? false : joins, locale, req: { transactionID: req.transactionID, diff --git a/packages/payload/src/collections/operations/local/find.ts b/packages/payload/src/collections/operations/local/find.ts index 5b0f599a1c..09051ca6dc 100644 --- a/packages/payload/src/collections/operations/local/find.ts +++ b/packages/payload/src/collections/operations/local/find.ts @@ -1,5 +1,5 @@ import type { PaginatedDocs } from '../../../database/types.js' -import type { CollectionSlug, Payload, TypedLocale } from '../../../index.js' +import type { CollectionSlug, JoinQuery, Payload, TypedLocale } from '../../../index.js' import type { Document, PayloadRequest, RequestContext, Where } from '../../../types/index.js' import type { DataFromCollectionSlug } from '../../config/types.js' @@ -19,6 +19,7 @@ export type Options = { draft?: boolean fallbackLocale?: TypedLocale includeLockStatus?: boolean + joins?: JoinQuery limit?: number locale?: 'all' | TypedLocale overrideAccess?: boolean @@ -42,6 +43,7 @@ export async function findLocal( disableErrors, draft = false, includeLockStatus, + joins, limit, overrideAccess = true, page, @@ -66,6 +68,7 @@ export async function findLocal( disableErrors, draft, includeLockStatus, + joins, limit, overrideAccess, page, diff --git a/packages/payload/src/collections/operations/local/findByID.ts b/packages/payload/src/collections/operations/local/findByID.ts index 80a03ee017..2c330bc736 100644 --- a/packages/payload/src/collections/operations/local/findByID.ts +++ b/packages/payload/src/collections/operations/local/findByID.ts @@ -1,4 +1,4 @@ -import type { CollectionSlug, Payload, TypedLocale } from '../../../index.js' +import type { CollectionSlug, JoinQuery, Payload, TypedLocale } from '../../../index.js' import type { Document, PayloadRequest, RequestContext } from '../../../types/index.js' import type { DataFromCollectionSlug } from '../../config/types.js' @@ -19,6 +19,7 @@ export type Options = { fallbackLocale?: TypedLocale id: number | string includeLockStatus?: boolean + joins?: JoinQuery locale?: 'all' | TypedLocale overrideAccess?: boolean req?: PayloadRequest @@ -42,6 +43,7 @@ export default async function findByIDLocal( disableErrors = false, draft = false, includeLockStatus, + joins, overrideAccess = true, showHiddenFields, } = options @@ -62,6 +64,7 @@ export default async function findByIDLocal( disableErrors, draft, includeLockStatus, + joins, overrideAccess, req: await createLocalReq(options, payload), showHiddenFields, diff --git a/packages/payload/src/database/types.ts b/packages/payload/src/database/types.ts index f3857abeb7..8f12e33af9 100644 --- a/packages/payload/src/database/types.ts +++ b/packages/payload/src/database/types.ts @@ -1,5 +1,5 @@ import type { TypeWithID } from '../collections/config/types.js' -import type { Document, Payload, PayloadRequest, Where } from '../types/index.js' +import type { Document, JoinQuery, Payload, PayloadRequest, Where } from '../types/index.js' import type { TypeWithVersion } from '../versions/types.js' export type { TypeWithVersion } @@ -49,7 +49,7 @@ export interface BaseDatabaseAdapter { */ destroy?: Destroy - find: (args: FindArgs) => Promise> + find: Find findGlobal: FindGlobal @@ -185,6 +185,7 @@ export type QueryDrafts = (args: QueryDraftsArgs) => Promise(args: FindOneArgs) => Promise req: PayloadRequest skip?: number sort?: string @@ -375,6 +378,7 @@ export type UpdateOneArgs = { collection: string data: Record draft?: boolean + joins?: JoinQuery locale?: string req: PayloadRequest } & ( @@ -392,6 +396,7 @@ export type UpdateOne = (args: UpdateOneArgs) => Promise export type DeleteOneArgs = { collection: string + joins?: JoinQuery req: PayloadRequest where: Where } @@ -400,6 +405,7 @@ export type DeleteOne = (args: DeleteOneArgs) => Promise export type DeleteManyArgs = { collection: string + joins?: JoinQuery req: PayloadRequest where: Where } diff --git a/packages/payload/src/errors/InvalidFieldJoin.ts b/packages/payload/src/errors/InvalidFieldJoin.ts new file mode 100644 index 0000000000..fe29bcef8d --- /dev/null +++ b/packages/payload/src/errors/InvalidFieldJoin.ts @@ -0,0 +1,11 @@ +import type { JoinField } from '../fields/config/types.js' + +import { APIError } from './APIError.js' + +export class InvalidFieldJoin extends APIError { + constructor(field: JoinField) { + super( + `Invalid join field ${field.name}. The config does not have a field '${field.on}' in collection '${field.collection}'.`, + ) + } +} diff --git a/packages/payload/src/fields/config/sanitize.ts b/packages/payload/src/fields/config/sanitize.ts index 7fc56d0f6e..1622ad8ba2 100644 --- a/packages/payload/src/fields/config/sanitize.ts +++ b/packages/payload/src/fields/config/sanitize.ts @@ -1,6 +1,6 @@ import { deepMergeSimple } from '@payloadcms/translations/utilities' -import type { CollectionConfig } from '../../collections/config/types.js' +import type { CollectionConfig, SanitizedJoins } from '../../collections/config/types.js' import type { Config, SanitizedConfig } from '../../config/types.js' import type { Field } from './types.js' @@ -8,14 +8,15 @@ import { DuplicateFieldName, InvalidFieldName, InvalidFieldRelationship, + MissingEditorProp, MissingFieldType, } from '../../errors/index.js' -import { MissingEditorProp } from '../../errors/MissingEditorProp.js' import { formatLabels, toWords } from '../../utilities/formatLabels.js' import { baseBlockFields } from '../baseFields/baseBlockFields.js' import { baseIDField } from '../baseFields/baseIDField.js' import { setDefaultBeforeDuplicate } from '../setDefaultBeforeDuplicate.js' import validations from '../validations.js' +import { sanitizeJoinField } from './sanitizeJoinField.js' import { fieldAffectsData, tabHasName } from './types.js' type Args = { @@ -23,6 +24,10 @@ type Args = { config: Config existingFieldNames?: Set fields: Field[] + /** + * When not passed in, assume that join are not supported (globals, arrays, blocks) + */ + joins?: SanitizedJoins parentIsLocalized: boolean /** * If true, a richText field will require an editor property to be set, as the sanitizeFields function will not add it from the payload config if not present. @@ -36,6 +41,7 @@ type Args = { * so that you can sanitize them together, after the config has been sanitized. */ richTextSanitizationPromises?: Array<(config: SanitizedConfig) => Promise> + schemaPath?: string /** * If not null, will validate that upload and relationship fields do not relate to a collection that is not in this array. * This validation will be skipped if validRelationships is null. @@ -47,15 +53,19 @@ export const sanitizeFields = async ({ config, existingFieldNames = new Set(), fields, + joins, parentIsLocalized, requireFieldLevelRichTextEditor = false, richTextSanitizationPromises, + schemaPath: schemaPathArg, validRelationships, }: Args): Promise => { if (!fields) { return [] } + let schemaPath = schemaPathArg + for (let i = 0; i < fields.length; i++) { const field = fields[i] @@ -92,6 +102,10 @@ export const sanitizeFields = async ({ field.defaultValue = false } + if (field.type === 'join') { + sanitizeJoinField({ config, field, joins, schemaPath }) + } + if (field.type === 'relationship' || field.type === 'upload') { if (validRelationships) { const relationships = Array.isArray(field.relationTo) @@ -234,13 +248,18 @@ export const sanitizeFields = async ({ } if ('fields' in field && field.fields) { + if ('name' in field && field.name) { + schemaPath = `${schemaPath || ''}${schemaPath ? '.' : ''}${field.name}` + } field.fields = await sanitizeFields({ config, existingFieldNames: fieldAffectsData(field) ? new Set() : existingFieldNames, fields: field.fields, + joins, parentIsLocalized: parentIsLocalized || field.localized, requireFieldLevelRichTextEditor, richTextSanitizationPromises, + schemaPath, validRelationships, }) } @@ -248,17 +267,22 @@ export const sanitizeFields = async ({ if (field.type === 'tabs') { for (let j = 0; j < field.tabs.length; j++) { const tab = field.tabs[j] - if (tabHasName(tab) && typeof tab.label === 'undefined') { - tab.label = toWords(tab.name) + if (tabHasName(tab)) { + schemaPath = `${schemaPath || ''}${schemaPath ? '.' : ''}${tab.name}` + if (typeof tab.label === 'undefined') { + tab.label = toWords(tab.name) + } } tab.fields = await sanitizeFields({ config, existingFieldNames: tabHasName(tab) ? new Set() : existingFieldNames, fields: tab.fields, + joins, parentIsLocalized: parentIsLocalized || (tabHasName(tab) && tab.localized), requireFieldLevelRichTextEditor, richTextSanitizationPromises, + schemaPath, validRelationships, }) field.tabs[j] = tab diff --git a/packages/payload/src/fields/config/sanitizeJoinField.ts b/packages/payload/src/fields/config/sanitizeJoinField.ts new file mode 100644 index 0000000000..45c27d87b6 --- /dev/null +++ b/packages/payload/src/fields/config/sanitizeJoinField.ts @@ -0,0 +1,85 @@ +import type { SanitizedJoins } from '../../collections/config/types.js' +import type { Config } from '../../config/types.js' +import type { JoinField, RelationshipField } from './types.js' + +import { APIError } from '../../errors/index.js' +import { InvalidFieldJoin } from '../../errors/InvalidFieldJoin.js' +import { traverseFields } from '../../utilities/traverseFields.js' +export const sanitizeJoinField = ({ + config, + field, + joins, + schemaPath, +}: { + config: Config + field: JoinField + joins?: SanitizedJoins + schemaPath?: string +}) => { + // the `joins` arg is not passed for globals or when recursing on fields that do not allow a join field + if (typeof joins === 'undefined') { + throw new APIError('Join fields cannot be added to arrays, blocks or globals.') + } + if (!field.maxDepth) { + field.maxDepth = 1 + } + const join = { + field, + schemaPath: `${schemaPath || ''}${schemaPath ? '.' : ''}${field.name}`, + } + const joinCollection = config.collections.find( + (collection) => collection.slug === field.collection, + ) + if (!joinCollection) { + throw new InvalidFieldJoin(field) + } + let joinRelationship: RelationshipField | undefined + + const pathSegments = field.on.split('.') // Split the schema path into segments + let currentSegmentIndex = 0 + + // Traverse fields and match based on the schema path + traverseFields({ + callback: ({ field, next }) => { + const currentSegment = pathSegments[currentSegmentIndex] + // match field on path segments + if ('name' in field && field.name === currentSegment) { + // Check if this is the last segment in the path + if ( + currentSegmentIndex === pathSegments.length - 1 && + 'type' in field && + field.type === 'relationship' + ) { + joinRelationship = field // Return the matched field + next() + return true + } else { + // Move to the next path segment and continue traversal + currentSegmentIndex++ + } + } else { + // skip fields in non-matching path segments + next() + return + } + }, + fields: joinCollection.fields, + }) + + if (!joinRelationship) { + throw new InvalidFieldJoin(join.field) + } + + if (joinRelationship.hasMany) { + throw new APIError('Join fields cannot be used with hasMany relationships.') + } + + // override the join field localized property to use whatever the relationship field has + field.localized = joinRelationship.localized + + if (!joins[field.collection]) { + joins[field.collection] = [join] + } else { + joins[field.collection].push(join) + } +} diff --git a/packages/payload/src/fields/config/types.ts b/packages/payload/src/fields/config/types.ts index 01b9edcaa7..7d822e5d17 100644 --- a/packages/payload/src/fields/config/types.ts +++ b/packages/payload/src/fields/config/types.ts @@ -5,6 +5,12 @@ import type { JSONSchema4 } from 'json-schema' import type { CSSProperties } from 'react' import type { DeepUndefinable } from 'ts-essentials' +import type { + JoinFieldErrorClientComponent, + JoinFieldErrorServerComponent, + JoinFieldLabelClientComponent, + JoinFieldLabelServerComponent, +} from '../../admin/fields/Join.js' import type { FieldClientComponent, FieldServerComponent } from '../../admin/forms/Field.js' import type { RichTextAdapter, RichTextAdapterProvider } from '../../admin/RichText.js' import type { @@ -1419,6 +1425,53 @@ export type PointFieldClient = { } & FieldBaseClient & Pick +/** + * A virtual field that loads in related collections by querying a relationship or upload field. + */ +export type JoinField = { + access?: { + create?: never + read?: FieldAccess + update?: never + } + admin?: { + components?: { + Error?: CustomComponent + Label?: CustomComponent + } & Admin['components'] + disableBulkEdit?: never + readOnly?: never + } & Admin + /** + * The slug of the collection to relate with. + */ + collection: CollectionSlug + defaultValue?: never + hidden?: false + index?: never + /** + * This does not need to be set and will be overridden by the relationship field's localized property. + */ + localized?: boolean + maxDepth?: number + /** + * A string for the field in the collection being joined to. + */ + on: string + type: 'join' + validate?: never +} & FieldBase + +export type JoinFieldClient = { + admin?: { + components?: { + Label?: MappedComponent + } & AdminClient['components'] + } & AdminClient & + Pick +} & FieldBaseClient & + Pick + export type Field = | ArrayField | BlocksField @@ -1428,6 +1481,7 @@ export type Field = | DateField | EmailField | GroupField + | JoinField | JSONField | NumberField | PointField @@ -1451,6 +1505,7 @@ export type ClientField = | DateFieldClient | EmailFieldClient | GroupFieldClient + | JoinFieldClient | JSONFieldClient | NumberFieldClient | PointFieldClient @@ -1499,6 +1554,7 @@ export type FieldAffectingData = | DateField | EmailField | GroupField + | JoinField | JSONField | NumberField | PointField @@ -1519,6 +1575,7 @@ export type FieldAffectingDataClient = | DateFieldClient | EmailFieldClient | GroupFieldClient + | JoinFieldClient | JSONFieldClient | NumberFieldClient | PointFieldClient @@ -1598,7 +1655,7 @@ export type FieldWithMany = RelationshipField | SelectField export type FieldWithManyClient = RelationshipFieldClient | SelectFieldClient export type FieldWithMaxDepth = RelationshipField | UploadField -export type FieldWithMaxDepthClient = RelationshipFieldClient | UploadFieldClient +export type FieldWithMaxDepthClient = JoinFieldClient | RelationshipFieldClient | UploadFieldClient export function fieldHasSubFields( field: TField, @@ -1651,7 +1708,8 @@ export function fieldHasMaxDepth( field: TField, ): field is TField & (TField extends ClientField ? FieldWithMaxDepthClient : FieldWithMaxDepth) { return ( - (field.type === 'upload' || field.type === 'relationship') && typeof field.maxDepth === 'number' + (field.type === 'upload' || field.type === 'relationship' || field.type === 'join') && + typeof field.maxDepth === 'number' ) } diff --git a/packages/payload/src/fields/hooks/afterRead/promise.ts b/packages/payload/src/fields/hooks/afterRead/promise.ts index 3a5e015e59..6091440b4b 100644 --- a/packages/payload/src/fields/hooks/afterRead/promise.ts +++ b/packages/payload/src/fields/hooks/afterRead/promise.ts @@ -292,7 +292,7 @@ export const promise = async ({ }) } - if (field.type === 'relationship' || field.type === 'upload') { + if (field.type === 'relationship' || field.type === 'upload' || field.type === 'join') { populationPromises.push( relationshipPopulationPromise({ currentDepth, diff --git a/packages/payload/src/fields/hooks/afterRead/relationshipPopulationPromise.ts b/packages/payload/src/fields/hooks/afterRead/relationshipPopulationPromise.ts index 386c4cf132..8d2599094d 100644 --- a/packages/payload/src/fields/hooks/afterRead/relationshipPopulationPromise.ts +++ b/packages/payload/src/fields/hooks/afterRead/relationshipPopulationPromise.ts @@ -1,5 +1,5 @@ import type { PayloadRequest } from '../../../types/index.js' -import type { RelationshipField, UploadField } from '../../config/types.js' +import type { JoinField, RelationshipField, UploadField } from '../../config/types.js' import { createDataloaderCacheKey } from '../../../collections/dataloader.js' import { fieldHasMaxDepth, fieldSupportsMany } from '../../config/types.js' @@ -11,7 +11,7 @@ type PopulateArgs = { depth: number draft: boolean fallbackLocale: null | string - field: RelationshipField | UploadField + field: JoinField | RelationshipField | UploadField index?: number key?: string locale: null | string @@ -36,11 +36,16 @@ const populate = async ({ showHiddenFields, }: PopulateArgs) => { const dataToUpdate = dataReference - const relation = Array.isArray(field.relationTo) ? (data.relationTo as string) : field.relationTo + let relation + if (field.type === 'join') { + relation = field.collection + } else { + relation = Array.isArray(field.relationTo) ? (data.relationTo as string) : field.relationTo + } const relatedCollection = req.payload.collections[relation] if (relatedCollection) { - let id = Array.isArray(field.relationTo) ? data.value : data + let id = field.type !== 'join' && Array.isArray(field.relationTo) ? data.value : data let relationshipValue const shouldPopulate = depth && currentDepth <= depth @@ -74,20 +79,21 @@ const populate = async ({ // ids are visible regardless of access controls relationshipValue = id } - if (typeof index === 'number' && typeof key === 'string') { - if (Array.isArray(field.relationTo)) { + if (field.type !== 'join' && Array.isArray(field.relationTo)) { dataToUpdate[field.name][key][index].value = relationshipValue } else { dataToUpdate[field.name][key][index] = relationshipValue } } else if (typeof index === 'number' || typeof key === 'string') { - if (Array.isArray(field.relationTo)) { + if (field.type === 'join') { + dataToUpdate[field.name].docs[index ?? key] = relationshipValue + } else if (Array.isArray(field.relationTo)) { dataToUpdate[field.name][index ?? key].value = relationshipValue } else { dataToUpdate[field.name][index ?? key] = relationshipValue } - } else if (Array.isArray(field.relationTo)) { + } else if (field.type !== 'join' && Array.isArray(field.relationTo)) { dataToUpdate[field.name].value = relationshipValue } else { dataToUpdate[field.name] = relationshipValue @@ -100,7 +106,7 @@ type PromiseArgs = { depth: number draft: boolean fallbackLocale: null | string - field: RelationshipField | UploadField + field: JoinField | RelationshipField | UploadField locale: null | string overrideAccess: boolean req: PayloadRequest @@ -124,7 +130,7 @@ export const relationshipPopulationPromise = async ({ const populateDepth = fieldHasMaxDepth(field) && field.maxDepth < depth ? field.maxDepth : depth const rowPromises = [] - if (fieldSupportsMany(field) && field.hasMany) { + if (field.type === 'join' || (fieldSupportsMany(field) && field.hasMany)) { if ( field.localized && locale === 'all' && @@ -155,13 +161,19 @@ export const relationshipPopulationPromise = async ({ }) } }) - } else if (Array.isArray(siblingDoc[field.name])) { - siblingDoc[field.name].forEach((relatedDoc, index) => { + } else if ( + Array.isArray(siblingDoc[field.name]) || + Array.isArray(siblingDoc[field.name]?.docs) + ) { + ;(Array.isArray(siblingDoc[field.name]) + ? siblingDoc[field.name] + : siblingDoc[field.name].docs + ).forEach((relatedDoc, index) => { const rowPromise = async () => { if (relatedDoc) { await populate({ currentDepth, - data: relatedDoc, + data: relatedDoc?.id ? relatedDoc.id : relatedDoc, dataReference: resultingDoc, depth: populateDepth, draft, diff --git a/packages/payload/src/index.ts b/packages/payload/src/index.ts index a9817f34c2..b857af8afb 100644 --- a/packages/payload/src/index.ts +++ b/packages/payload/src/index.ts @@ -52,6 +52,7 @@ import type { Options as FindGlobalVersionsOptions } from './globals/operations/ import type { Options as RestoreGlobalVersionOptions } from './globals/operations/local/restoreVersion.js' import type { Options as UpdateGlobalOptions } from './globals/operations/local/update.js' import type { JsonObject } from './types/index.js' +import type { TraverseFieldsCallback } from './utilities/traverseFields.js' import type { TypeWithVersion } from './versions/types.js' import { decrypt, encrypt } from './auth/crypto.js' @@ -63,9 +64,9 @@ import { consoleEmailAdapter } from './email/consoleEmailAdapter.js' import { fieldAffectsData } from './fields/config/types.js' import localGlobalOperations from './globals/operations/local/index.js' import { checkDependencies } from './utilities/dependencies/dependencyChecker.js' -import flattenFields from './utilities/flattenTopLevelFields.js' import { getLogger } from './utilities/logger.js' import { serverInit as serverInitTelemetry } from './utilities/telemetry/events/serverInit.js' +import { traverseFields } from './utilities/traverseFields.js' export interface GeneratedTypes { authUntyped: { @@ -458,16 +459,23 @@ export class BasePayload { } this.config.collections.forEach((collection) => { - const customID = flattenFields(collection.fields).find( - (field) => fieldAffectsData(field) && field.name === 'id', - ) - - let customIDType - - if (customID?.type === 'number' || customID?.type === 'text') { - customIDType = customID.type + let customIDType = undefined + const findCustomID: TraverseFieldsCallback = ({ field, next }) => { + if (['array', 'blocks'].includes(field.type)) { + next() + return + } + if (!fieldAffectsData(field)) { + return + } + if (field.name === 'id') { + customIDType = field.type + return true + } } + traverseFields({ callback: findCustomID, fields: collection.fields }) + this.collections[collection.slug] = { config: collection, customIDType, @@ -879,6 +887,8 @@ export type { GroupField, GroupFieldClient, HookName, + JoinField, + JoinFieldClient, JSONField, JSONFieldClient, Labels, @@ -1038,6 +1048,8 @@ export { isValidID } from './utilities/isValidID.js' export { killTransaction } from './utilities/killTransaction.js' export { mapAsync } from './utilities/mapAsync.js' export { mergeListSearchAndWhere } from './utilities/mergeListSearchAndWhere.js' +export { traverseFields } from './utilities/traverseFields.js' +export type { TraverseFieldsCallback } from './utilities/traverseFields.js' export { buildVersionCollectionFields } from './versions/buildCollectionFields.js' export { buildVersionGlobalFields } from './versions/buildGlobalFields.js' export { checkDependencies } @@ -1047,6 +1059,6 @@ export { enforceMaxVersions } from './versions/enforceMaxVersions.js' export { getLatestCollectionVersion } from './versions/getLatestCollectionVersion.js' export { getLatestGlobalVersion } from './versions/getLatestGlobalVersion.js' export { saveVersion } from './versions/saveVersion.js' -export type { TypeWithVersion } from './versions/types.js' +export type { TypeWithVersion } from './versions/types.js' export { deepMergeSimple } from '@payloadcms/translations/utilities' diff --git a/packages/payload/src/types/index.ts b/packages/payload/src/types/index.ts index 8713995f7e..9c673be6a4 100644 --- a/packages/payload/src/types/index.ts +++ b/packages/payload/src/types/index.ts @@ -93,7 +93,7 @@ export type Operator = (typeof validOperators)[number] // Makes it so things like passing new Date() will error export type JsonValue = JsonArray | JsonObject | unknown //Date | JsonArray | JsonObject | boolean | null | number | string // TODO: Evaluate proper, strong type for this -export interface JsonArray extends Array {} +export type JsonArray = Array export interface JsonObject { [key: string]: any @@ -110,6 +110,19 @@ export type Where = { or?: Where[] } +/** + * Applies pagination for join fields for including collection relationships + */ +export type JoinQuery = + | { + [schemaPath: string]: { + limit?: number + sort?: string + where?: Where + } + } + | false + // eslint-disable-next-line @typescript-eslint/no-explicit-any export type Document = any diff --git a/packages/payload/src/utilities/configToJSONSchema.ts b/packages/payload/src/utilities/configToJSONSchema.ts index b446e1ef2f..e0a37466cf 100644 --- a/packages/payload/src/utilities/configToJSONSchema.ts +++ b/packages/payload/src/utilities/configToJSONSchema.ts @@ -299,6 +299,30 @@ export function fieldsToJSONSchema( break } + case 'join': { + fieldSchema = { + type: withNullableJSONSchemaType('object', false), + additionalProperties: false, + properties: { + docs: { + type: withNullableJSONSchemaType('array', false), + items: { + oneOf: [ + { + type: collectionIDFieldTypes[field.collection], + }, + { + $ref: `#/definitions/${field.collection}`, + }, + ], + }, + }, + hasNextPage: { type: withNullableJSONSchemaType('boolean', false) }, + }, + } + break + } + case 'upload': case 'relationship': { if (Array.isArray(field.relationTo)) { diff --git a/packages/payload/src/utilities/traverseFields.ts b/packages/payload/src/utilities/traverseFields.ts new file mode 100644 index 0000000000..189aaa504f --- /dev/null +++ b/packages/payload/src/utilities/traverseFields.ts @@ -0,0 +1,91 @@ +import type { Field, TabAsField } from '../fields/config/types.js' + +import { fieldHasSubFields } from '../fields/config/types.js' + +export type TraverseFieldsCallback = (args: { + /** + * The current field + */ + field: Field | TabAsField + /** + * Function that when called will skip the current field and continue to the next + */ + next?: () => void + /** + * The parent reference object + */ + parentRef?: Record | unknown + /** + * The current reference object + */ + ref?: Record | unknown +}) => boolean | void + +type TraverseFieldsArgs = { + callback: TraverseFieldsCallback + fields: (Field | TabAsField)[] + parentRef?: Record | unknown + ref?: Record | unknown +} + +/** + * Iterate a recurse an array of fields, calling a callback for each field + * + * @param fields + * @param callback callback called for each field, discontinue looping if callback returns truthy + * @param ref + * @param parentRef + */ +export const traverseFields = ({ + callback, + fields, + parentRef = {}, + ref = {}, +}: TraverseFieldsArgs): void => { + fields.some((field) => { + let skip = false + const next = () => { + skip = true + } + if (callback && callback({ field, next, parentRef, ref })) { + return true + } + if (skip) { + return false + } + if (field.type === 'tabs' && 'tabs' in field) { + field.tabs.forEach((tab) => { + if ('name' in tab && tab.name) { + if (typeof ref[tab.name] === 'undefined') { + ref[tab.name] = {} + } + ref = ref[tab.name] + } + if (callback && callback({ field: { ...tab, type: 'tab' }, next, parentRef, ref })) { + return true + } + traverseFields({ callback, fields: tab.fields, parentRef, ref }) + }) + return + } + if (field.type !== 'tab' && fieldHasSubFields(field)) { + const parentRef = ref + if ('name' in field && field.name) { + if (typeof ref[field.name] === 'undefined') { + if (field.type === 'array') { + if (field.localized) { + ref[field.name] = {} + } else { + ref[field.name] = [] + } + } + if (field.type === 'group') { + ref[field.name] = {} + } + } + ref = ref[field.name] + } + traverseFields({ callback, fields: field.fields, parentRef, ref }) + } + }) +} diff --git a/packages/payload/src/versions/saveVersion.ts b/packages/payload/src/versions/saveVersion.ts index 75d4498fdf..f37d796b9f 100644 --- a/packages/payload/src/versions/saveVersion.ts +++ b/packages/payload/src/versions/saveVersion.ts @@ -56,6 +56,8 @@ export const saveVersion = async ({ ;({ docs } = await payload.db.findVersions({ ...findVersionArgs, collection: collection.slug, + limit: 1, + pagination: false, req, where: { parent: { @@ -67,6 +69,8 @@ export const saveVersion = async ({ ;({ docs } = await payload.db.findGlobalVersions({ ...findVersionArgs, global: global.slug, + limit: 1, + pagination: false, req, })) } @@ -131,7 +135,7 @@ export const saveVersion = async ({ if (publishSpecificLocale && snapshot) { const snapshotData = deepCopyObjectSimple(snapshot) - if (snapshotData._id) delete snapshotData._id + if (snapshotData._id) {delete snapshotData._id} snapshotData._status = 'draft' diff --git a/packages/plugin-relationship-object-ids/.gitignore b/packages/plugin-relationship-object-ids/.gitignore deleted file mode 100644 index 4baaac85f0..0000000000 --- a/packages/plugin-relationship-object-ids/.gitignore +++ /dev/null @@ -1,7 +0,0 @@ -node_modules -.env -dist -demo/uploads -build -.DS_Store -package-lock.json diff --git a/packages/plugin-relationship-object-ids/.swcrc b/packages/plugin-relationship-object-ids/.swcrc deleted file mode 100644 index 14463f4b08..0000000000 --- a/packages/plugin-relationship-object-ids/.swcrc +++ /dev/null @@ -1,15 +0,0 @@ -{ - "$schema": "https://json.schemastore.org/swcrc", - "sourceMaps": true, - "jsc": { - "target": "esnext", - "parser": { - "syntax": "typescript", - "tsx": true, - "dts": true - } - }, - "module": { - "type": "es6" - } -} diff --git a/packages/plugin-relationship-object-ids/README.md b/packages/plugin-relationship-object-ids/README.md deleted file mode 100644 index a0fc9fe3fb..0000000000 --- a/packages/plugin-relationship-object-ids/README.md +++ /dev/null @@ -1,40 +0,0 @@ -# Payload Relationship ObjectID Plugin - -This plugin automatically enables all Payload `relationship` and `upload` field types to be stored as `ObjectID`s in MongoDB. - -Minimum required version of Payload: `1.9.5` - -## What it does - -It injects a `beforeChange` field hook into each `relationship` and `upload` field, which converts string-based IDs to `ObjectID`s immediately prior to storage. - -By default, it also injects an `afterRead` field hook into the above fields, which ensures that the values are re-formatted back to strings after having been read from the database. - -#### Usage - -Simply import and install the plugin to make it work: - -```ts -import { relationshipsAsObjectID } from '@payloadcms/plugin-relationship-object-ids' -import { buildConfig } from 'payload' - -export default buildConfig({ - // your config here - plugins: [ - // Call the plugin within your `plugins` array - relationshipsAsObjectID({ - // Optionally keep relationship values as ObjectID - // when they are retrieved from the database. - keepAfterRead: true, - }), - ], -}) -``` - -### Migration - -Note - this plugin will only store newly created or resaved documents' relations as `ObjectID`s. It will not modify any of your existing data. If you'd like to convert existing data into an `ObjectID` format, you should write a migration script to loop over all documents in your database and then simply resave each one. - -### Support - -If you need help with this plugin, [join our Discord](https://t.co/30APlsQUPB) and we'd be happy to give you a hand. diff --git a/packages/plugin-relationship-object-ids/eslint.config.js b/packages/plugin-relationship-object-ids/eslint.config.js deleted file mode 100644 index 2dee1a001d..0000000000 --- a/packages/plugin-relationship-object-ids/eslint.config.js +++ /dev/null @@ -1,19 +0,0 @@ -import { rootEslintConfig, rootParserOptions } from '../../eslint.config.js' - -/** @typedef {import('eslint').Linter.FlatConfig} */ -let FlatConfig - -/** @type {FlatConfig[]} */ -export const index = [ - ...rootEslintConfig, - { - languageOptions: { - parserOptions: { - ...rootParserOptions, - tsconfigRootDir: import.meta.dirname, - }, - }, - }, -] - -export default index diff --git a/packages/plugin-relationship-object-ids/package.json b/packages/plugin-relationship-object-ids/package.json deleted file mode 100644 index 185ca9870a..0000000000 --- a/packages/plugin-relationship-object-ids/package.json +++ /dev/null @@ -1,62 +0,0 @@ -{ - "name": "@payloadcms/plugin-relationship-object-ids", - "version": "3.0.0-beta.107", - "description": "A Payload plugin to store all relationship IDs as ObjectIDs", - "repository": { - "type": "git", - "url": "https://github.com/payloadcms/payload.git", - "directory": "packages/plugin-relationship-object-ids" - }, - "license": "MIT", - "author": "Payload (https://payloadcms.com)", - "maintainers": [ - { - "name": "Payload", - "email": "info@payloadcms.com", - "url": "https://payloadcms.com" - } - ], - "type": "module", - "exports": { - ".": { - "import": "./src/index.ts", - "types": "./src/index.ts", - "default": "./src/index.ts" - } - }, - "main": "./src/index.ts", - "types": "./src/index.ts", - "files": [ - "dist" - ], - "scripts": { - "build": "pnpm copyfiles && pnpm build:types && pnpm build:swc", - "build:swc": "swc ./src -d ./dist --config-file .swcrc --strip-leading-paths", - "build:types": "tsc --emitDeclarationOnly --outDir dist", - "clean": "rimraf {dist,*.tsbuildinfo}", - "copyfiles": "copyfiles -u 1 \"src/**/*.{html,css,scss,ttf,woff,woff2,eot,svg,jpg,png,json}\" dist/", - "lint": "eslint .", - "lint:fix": "eslint . --fix", - "prepublishOnly": "pnpm clean && pnpm turbo build" - }, - "devDependencies": { - "@payloadcms/eslint-config": "workspace:*", - "payload": "workspace:*" - }, - "peerDependencies": { - "mongoose": "6.12.3", - "payload": "workspace:*" - }, - "publishConfig": { - "exports": { - ".": { - "import": "./dist/index.js", - "types": "./dist/index.d.ts", - "default": "./dist/index.js" - } - }, - "main": "./dist/index.js", - "types": "./dist/index.d.ts" - }, - "homepage:": "https://payloadcms.com" -} diff --git a/packages/plugin-relationship-object-ids/src/hooks/afterRead.ts b/packages/plugin-relationship-object-ids/src/hooks/afterRead.ts deleted file mode 100644 index e9cc5fd379..0000000000 --- a/packages/plugin-relationship-object-ids/src/hooks/afterRead.ts +++ /dev/null @@ -1,101 +0,0 @@ -import type { CollectionConfig, Config, FieldHook, RelationshipField, UploadField } from 'payload' - -import mongoose from 'mongoose' -import { fieldAffectsData } from 'payload/shared' - -const convertValue = ({ - relatedCollection, - value, -}: { - relatedCollection: CollectionConfig - value: number | string -}): mongoose.Types.ObjectId | number | string => { - const customIDField = relatedCollection.fields.find( - (field) => fieldAffectsData(field) && field.name === 'id', - ) - - if (!customIDField && mongoose.Types.ObjectId.isValid(value)) { - return value.toString() - } - - return value -} - -interface RelationObject { - relationTo: string - value: number | string -} - -function isValidRelationObject(value: unknown): value is RelationObject { - return typeof value === 'object' && value !== null && 'relationTo' in value && 'value' in value -} - -interface Args { - config: Config - field: RelationshipField | UploadField -} - -export const getAfterReadHook = - ({ config, field }: Args): FieldHook => - ({ value }) => { - let relatedCollection: CollectionConfig | undefined - - const hasManyRelations = typeof field.relationTo !== 'string' - - if (!hasManyRelations) { - relatedCollection = config.collections?.find(({ slug }) => slug === field.relationTo) - } - - if (Array.isArray(value)) { - return value.map((val) => { - // Handle has many - if (relatedCollection && val) { - return convertValue({ - relatedCollection, - value: val, - }) - } - - // Handle has many - polymorphic - if (isValidRelationObject(val)) { - const relatedCollectionForSingleValue = config.collections?.find( - ({ slug }) => slug === val.relationTo, - ) - - if (relatedCollectionForSingleValue) { - return { - relationTo: val.relationTo, - value: convertValue({ - relatedCollection: relatedCollectionForSingleValue, - value: val.value, - }), - } - } - } - - return val - }) - } - - // Handle has one - polymorphic - if (isValidRelationObject(value)) { - relatedCollection = config.collections?.find(({ slug }) => slug === value.relationTo) - - if (relatedCollection) { - return { - relationTo: value.relationTo, - value: convertValue({ relatedCollection, value: value.value }), - } - } - } - - // Handle has one - if (relatedCollection && value) { - return convertValue({ - relatedCollection, - value, - }) - } - - return value - } diff --git a/packages/plugin-relationship-object-ids/src/hooks/beforeChange.ts b/packages/plugin-relationship-object-ids/src/hooks/beforeChange.ts deleted file mode 100644 index 5006550990..0000000000 --- a/packages/plugin-relationship-object-ids/src/hooks/beforeChange.ts +++ /dev/null @@ -1,96 +0,0 @@ -import type { CollectionConfig, Config, FieldHook, RelationshipField, UploadField } from 'payload' - -import mongoose from 'mongoose' -import { fieldAffectsData } from 'payload/shared' - -const convertValue = ({ - relatedCollection, - value, -}: { - relatedCollection: CollectionConfig - value: number | string -}): mongoose.Types.ObjectId | number | string => { - const customIDField = relatedCollection.fields.find( - (field) => fieldAffectsData(field) && field.name === 'id', - ) - - if (!customIDField) { - return new mongoose.Types.ObjectId(value) - } - - return value -} - -interface RelationObject { - relationTo: string - value: number | string -} - -function isValidRelationObject(value: unknown): value is RelationObject { - return typeof value === 'object' && value !== null && 'relationTo' in value && 'value' in value -} - -export const getBeforeChangeHook = - ({ config, field }: { config: Config; field: RelationshipField | UploadField }): FieldHook => - ({ value }) => { - let relatedCollection: CollectionConfig | undefined - - const hasManyRelations = typeof field.relationTo !== 'string' - - if (!hasManyRelations) { - relatedCollection = config.collections?.find(({ slug }) => slug === field.relationTo) - } - - if (Array.isArray(value)) { - return value.map((val) => { - // Handle has many - if (relatedCollection && val && (typeof val === 'string' || typeof val === 'number')) { - return convertValue({ - relatedCollection, - value: val, - }) - } - - // Handle has many - polymorphic - if (isValidRelationObject(val)) { - const relatedCollectionForSingleValue = config.collections?.find( - ({ slug }) => slug === val.relationTo, - ) - - if (relatedCollectionForSingleValue) { - return { - relationTo: val.relationTo, - value: convertValue({ - relatedCollection: relatedCollectionForSingleValue, - value: val.value, - }), - } - } - } - - return val - }) - } - - // Handle has one - polymorphic - if (isValidRelationObject(value)) { - relatedCollection = config.collections?.find(({ slug }) => slug === value.relationTo) - - if (relatedCollection) { - return { - relationTo: value.relationTo, - value: convertValue({ relatedCollection, value: value.value }), - } - } - } - - // Handle has one - if (relatedCollection && value && (typeof value === 'string' || typeof value === 'number')) { - return convertValue({ - relatedCollection, - value, - }) - } - - return value - } diff --git a/packages/plugin-relationship-object-ids/src/index.ts b/packages/plugin-relationship-object-ids/src/index.ts deleted file mode 100644 index c35e06701d..0000000000 --- a/packages/plugin-relationship-object-ids/src/index.ts +++ /dev/null @@ -1,105 +0,0 @@ -import type { Config, Field, FieldHook } from 'payload' - -import { getAfterReadHook } from './hooks/afterRead.js' -import { getBeforeChangeHook } from './hooks/beforeChange.js' - -interface TraverseFieldsArgs { - config: Config - fields: Field[] - keepAfterRead: boolean -} - -const traverseFields = ({ config, fields, keepAfterRead }: TraverseFieldsArgs): Field[] => { - return fields.map((field) => { - if (field.type === 'relationship' || field.type === 'upload') { - const afterRead: FieldHook[] = [...(field.hooks?.afterRead || [])] - - if (!keepAfterRead) { - afterRead.unshift(getAfterReadHook({ config, field })) - } - - return { - ...field, - hooks: { - ...(field.hooks || {}), - afterRead, - beforeChange: [ - ...(field.hooks?.beforeChange || []), - getBeforeChangeHook({ config, field }), - ], - }, - } - } - - if ('fields' in field) { - return { - ...field, - fields: traverseFields({ config, fields: field.fields, keepAfterRead }), - } - } - - if (field.type === 'tabs') { - return { - ...field, - tabs: field.tabs.map((tab) => { - return { - ...tab, - fields: traverseFields({ config, fields: tab.fields, keepAfterRead }), - } - }), - } - } - - if (field.type === 'blocks') { - return { - ...field, - blocks: field.blocks.map((block) => { - return { - ...block, - fields: traverseFields({ config, fields: block.fields, keepAfterRead }), - } - }), - } - } - - return field - }) -} - -interface Args { - /* - If you want to keep ObjectIDs as ObjectIDs after read, you can enable this flag. - By default, all relationship ObjectIDs are stringified within the AfterRead hook. - */ - keepAfterRead?: boolean -} - -export const relationshipsAsObjectID = - (args?: Args) => - (config: Config): Config => { - const keepAfterRead = typeof args?.keepAfterRead === 'boolean' ? args.keepAfterRead : false - - return { - ...config, - collections: (config.collections || []).map((collection) => { - return { - ...collection, - fields: traverseFields({ - config, - fields: collection.fields, - keepAfterRead, - }), - } - }), - globals: (config.globals || []).map((global) => { - return { - ...global, - fields: traverseFields({ - config, - fields: global.fields, - keepAfterRead, - }), - } - }), - } - } diff --git a/packages/plugin-relationship-object-ids/tsconfig.json b/packages/plugin-relationship-object-ids/tsconfig.json deleted file mode 100644 index 79d535b16e..0000000000 --- a/packages/plugin-relationship-object-ids/tsconfig.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "extends": "../../tsconfig.json", - "compilerOptions": { - "composite": true, // Make sure typescript knows that this module depends on their references - "noEmit": false /* Do not emit outputs. */, - "emitDeclarationOnly": true, - "outDir": "./dist" /* Specify an output folder for all emitted files. */, - "rootDir": "./src" /* Specify the root folder within your source files. */ - }, - "exclude": [ - "dist", - "build", - "tests", - "test", - "node_modules", - "eslint.config.js", - "src/**/*.spec.js", - "src/**/*.spec.jsx", - "src/**/*.spec.ts", - "src/**/*.spec.tsx" - ], - "include": ["src/**/*.ts", "src/**/*.tsx", "src/**/*.d.ts", "src/**/*.json"], - "references": [{ "path": "../payload" }] -} diff --git a/packages/plugin-seo/src/translations/en.ts b/packages/plugin-seo/src/translations/en.ts index fbfca10a80..04ad0ef78c 100644 --- a/packages/plugin-seo/src/translations/en.ts +++ b/packages/plugin-seo/src/translations/en.ts @@ -3,7 +3,6 @@ import type { GenericTranslationsObject } from '@payloadcms/translations' export const en: GenericTranslationsObject = { $schema: './translation-schema.json', 'plugin-seo': { - missing: 'Missing', almostThere: 'Almost there', autoGenerate: 'Auto-generate', bestPractices: 'best practices', @@ -18,6 +17,7 @@ export const en: GenericTranslationsObject = { 'This should be between {{minLength}} and {{maxLength}} characters. For help in writing quality meta descriptions, see ', lengthTipTitle: 'This should be between {{minLength}} and {{maxLength}} characters. For help in writing quality meta titles, see ', + missing: 'Missing', noImage: 'No image', preview: 'Preview', previewDescription: 'Exact result listings may vary based on content and search relevancy.', diff --git a/packages/plugin-seo/src/translations/es.ts b/packages/plugin-seo/src/translations/es.ts index d6491d5124..ed018b6b3f 100644 --- a/packages/plugin-seo/src/translations/es.ts +++ b/packages/plugin-seo/src/translations/es.ts @@ -3,7 +3,6 @@ import type { GenericTranslationsObject } from '@payloadcms/translations' export const es: GenericTranslationsObject = { $schema: './translation-schema.json', 'plugin-seo': { - missing: 'Falta', almostThere: 'Ya casi está', autoGenerate: 'Autogénerar', bestPractices: 'mejores prácticas', @@ -18,6 +17,7 @@ export const es: GenericTranslationsObject = { 'Esto debe estar entre {{minLength}} y {{maxLength}} caracteres. Para obtener ayuda sobre cómo escribir meta descripciones de calidad, consulte ', lengthTipTitle: 'Debe tener entre {{minLength}} y {{maxLength}} caracteres. Para obtener ayuda sobre cómo escribir metatítulos de calidad, consulte ', + missing: 'Falta', noImage: 'Sin imagen', preview: 'Vista previa', previewDescription: diff --git a/packages/plugin-seo/src/translations/fa.ts b/packages/plugin-seo/src/translations/fa.ts index 7d1c7331c6..fdd41630db 100644 --- a/packages/plugin-seo/src/translations/fa.ts +++ b/packages/plugin-seo/src/translations/fa.ts @@ -3,7 +3,6 @@ import type { GenericTranslationsObject } from '@payloadcms/translations' export const fa: GenericTranslationsObject = { $schema: './translation-schema.json', 'plugin-seo': { - missing: 'ناقص', almostThere: 'چیزیی باقی نمونده', autoGenerate: 'تولید خودکار', bestPractices: 'آموزش بیشتر', @@ -19,6 +18,7 @@ export const fa: GenericTranslationsObject = { 'این باید بین {{minLength}} و {{maxLength}} کلمه باشد. برای کمک در نوشتن توضیحات متا با کیفیت، مراجعه کنید به ', lengthTipTitle: 'این باید بین {{minLength}} و {{maxLength}} کلمه باشد. برای کمک در نوشتن عناوین متا با کیفیت، مراجعه کنید به ', + missing: 'ناقص', noImage: 'بدون تصویر', preview: 'پیش‌نمایش', previewDescription: 'فهرست نتایج ممکن است بر اساس محتوا و متناسب با کلمه کلیدی جستجو شده باشند', diff --git a/packages/plugin-seo/src/translations/fr.ts b/packages/plugin-seo/src/translations/fr.ts index cf7619899f..afb63ac007 100644 --- a/packages/plugin-seo/src/translations/fr.ts +++ b/packages/plugin-seo/src/translations/fr.ts @@ -3,7 +3,6 @@ import type { GenericTranslationsObject } from '@payloadcms/translations' export const fr: GenericTranslationsObject = { $schema: './translation-schema.json', 'plugin-seo': { - missing: 'Manquant', almostThere: 'On y est presque', autoGenerate: 'Auto-générer', bestPractices: 'bonnes pratiques', @@ -18,6 +17,7 @@ export const fr: GenericTranslationsObject = { "Ceci devrait contenir entre {{minLength}} et {{maxLength}} caractères. Pour obtenir de l'aide pour rédiger des descriptions meta de qualité, consultez les ", lengthTipTitle: "Ceci devrait contenir entre {{minLength}} et {{maxLength}} caractères. Pour obtenir de l'aide pour rédiger des titres meta de qualité, consultez les ", + missing: 'Manquant', noImage: "Pas d'image", preview: 'Aperçu', previewDescription: diff --git a/packages/plugin-seo/src/translations/it.ts b/packages/plugin-seo/src/translations/it.ts index f1cea8f036..bf9238cb40 100644 --- a/packages/plugin-seo/src/translations/it.ts +++ b/packages/plugin-seo/src/translations/it.ts @@ -3,7 +3,6 @@ import type { GenericTranslationsObject } from '@payloadcms/translations' export const it: GenericTranslationsObject = { $schema: './translation-schema.json', 'plugin-seo': { - missing: 'Mancante', almostThere: 'Ci siamo quasi', autoGenerate: 'Generazione automatica', bestPractices: 'migliori pratiche', @@ -19,6 +18,7 @@ export const it: GenericTranslationsObject = { 'Dovrebbe essere compreso tra {{minLength}} e {{maxLength}} caratteri. Per assistenza nella scrittura di meta descrizioni di qualità, vedere ', lengthTipTitle: 'Dovrebbe essere compreso tra {{minLength}} e {{maxLength}} caratteri. Per assistenza nella scrittura di meta titoli di qualità, vedere ', + missing: 'Mancante', noImage: 'Nessuna Immagine', preview: 'Anteprima', previewDescription: diff --git a/packages/plugin-seo/src/translations/nb.ts b/packages/plugin-seo/src/translations/nb.ts index 68c8dedffa..ef1e21a575 100644 --- a/packages/plugin-seo/src/translations/nb.ts +++ b/packages/plugin-seo/src/translations/nb.ts @@ -3,7 +3,6 @@ import type { GenericTranslationsObject } from '@payloadcms/translations' export const nb: GenericTranslationsObject = { $schema: './translation-schema.json', 'plugin-seo': { - missing: 'Mangler', almostThere: 'Nesten der', autoGenerate: 'Auto-generer', bestPractices: 'beste praksis', @@ -18,6 +17,7 @@ export const nb: GenericTranslationsObject = { 'Dette bør være mellom {{minLength}} og {{maxLength}} tegn. For hjelp til å skrive beskrivelser av god kvalitet, se ', lengthTipTitle: 'Dette bør være mellom {{minLength}} og {{maxLength}} tegn. For hjelp til å skrive metatitler av god kvalitet, se ', + missing: 'Mangler', noImage: 'Bilde mangler', preview: 'Forhåndsvisning', previewDescription: diff --git a/packages/plugin-seo/src/translations/pl.ts b/packages/plugin-seo/src/translations/pl.ts index b34a1107d9..e5ab5fddad 100644 --- a/packages/plugin-seo/src/translations/pl.ts +++ b/packages/plugin-seo/src/translations/pl.ts @@ -3,7 +3,6 @@ import type { GenericTranslationsObject } from '@payloadcms/translations' export const pl: GenericTranslationsObject = { $schema: './translation-schema.json', 'plugin-seo': { - missing: 'Brakuje', almostThere: 'Prawie gotowe', autoGenerate: 'Wygeneruj automatycznie', bestPractices: 'najlepsze praktyki', @@ -18,6 +17,7 @@ export const pl: GenericTranslationsObject = { 'Długość powinna wynosić od {{minLength}} do {{maxLength}} znaków. Po porady dotyczące pisania wysokiej jakości meta opisów zobacz ', lengthTipTitle: 'Długość powinna wynosić od {{minLength}} do {{maxLength}} znaków. Po porady dotyczące pisania wysokiej jakości meta tytułów zobacz ', + missing: 'Brakuje', noImage: 'Brak obrazu', preview: 'Podgląd', previewDescription: diff --git a/packages/plugin-seo/src/translations/ru.ts b/packages/plugin-seo/src/translations/ru.ts index a68c822d95..a7d850f136 100644 --- a/packages/plugin-seo/src/translations/ru.ts +++ b/packages/plugin-seo/src/translations/ru.ts @@ -3,7 +3,6 @@ import type { GenericTranslationsObject } from '@payloadcms/translations' export const ru: GenericTranslationsObject = { $schema: './translation-schema.json', 'plugin-seo': { - missing: 'Отсутствует', almostThere: 'Почти готово', autoGenerate: 'Сгенерировать автоматически', bestPractices: 'лучшие практики', @@ -18,6 +17,7 @@ export const ru: GenericTranslationsObject = { 'Должно быть от {{minLength}} до {{maxLength}} символов. Для помощи в написании качественных метаописаний см.', lengthTipTitle: 'Должно быть от {{minLength}} до {{maxLength}} символов. Для помощи в написании качественных метазаголовков см.', + missing: 'Отсутствует', noImage: 'Нет изображения', preview: 'Предварительный просмотр', previewDescription: diff --git a/packages/plugin-seo/src/translations/uk.ts b/packages/plugin-seo/src/translations/uk.ts index 805873057b..70315b9f57 100644 --- a/packages/plugin-seo/src/translations/uk.ts +++ b/packages/plugin-seo/src/translations/uk.ts @@ -3,7 +3,6 @@ import type { GenericTranslationsObject } from '@payloadcms/translations' export const uk: GenericTranslationsObject = { $schema: './translation-schema.json', 'plugin-seo': { - missing: 'Відсутнє', almostThere: 'Ще трошки', autoGenerate: 'Згенерувати', bestPractices: 'найкращі практики', @@ -18,6 +17,7 @@ export const uk: GenericTranslationsObject = { 'Має бути від {{minLength}} до {{maxLength}} символів. Щоб дізнатися, як писати якісні метаописи — перегляньте ', lengthTipTitle: 'Має бути від {{minLength}} до {{maxLength}} символів. Щоб дізнатися, як писати якісні метазаголовки — перегляньте ', + missing: 'Відсутнє', noImage: 'Немає зображення', preview: 'Попередній перегляд', previewDescription: diff --git a/packages/plugin-seo/src/translations/vi.ts b/packages/plugin-seo/src/translations/vi.ts index 846869471c..1a89d8d58b 100644 --- a/packages/plugin-seo/src/translations/vi.ts +++ b/packages/plugin-seo/src/translations/vi.ts @@ -3,7 +3,6 @@ import type { GenericTranslationsObject } from '@payloadcms/translations' export const vi: GenericTranslationsObject = { $schema: './translation-schema.json', 'plugin-seo': { - missing: 'Không đạt', almostThere: 'Gần đạt', autoGenerate: 'Tự động tạo', bestPractices: 'các phương pháp hay nhất', @@ -18,6 +17,7 @@ export const vi: GenericTranslationsObject = { 'Độ dài nên từ {{minLength}}-{{maxLength}} kí tự. Để được hướng dẫn viết mô tả meta chất lượng, hãy xem ', lengthTipTitle: 'Độ dài nên từ {{minLength}}-{{maxLength}} kí tự. Để được hướng dẫn viết mô tả meta chất lượng, hãy xem ', + missing: 'Không đạt', noImage: 'Chưa có ảnh', preview: 'Xem trước', previewDescription: 'Kết quả hiển thị có thể thay đổi tuỳ theo nội dung và công cụ tìm kiếm.', diff --git a/packages/translations/src/languages/ar.ts b/packages/translations/src/languages/ar.ts index d28e0d4ed4..9fc249f6c5 100644 --- a/packages/translations/src/languages/ar.ts +++ b/packages/translations/src/languages/ar.ts @@ -413,8 +413,8 @@ export const arTranslations: DefaultTranslationsObject = { problemRestoringVersion: 'حدث خطأ في استعادة هذه النّسخة', publish: 'نشر', publishChanges: 'نشر التّغييرات', - publishIn: 'نشر في {{locale}}', published: 'تمّ النّشر', + publishIn: 'نشر في {{locale}}', publishing: 'نشر', restoreAsDraft: 'استعادة كمسودة', restoredSuccessfully: 'تمّت الاستعادة بنحاح.', diff --git a/packages/translations/src/languages/az.ts b/packages/translations/src/languages/az.ts index ed76b7204b..14dd927217 100644 --- a/packages/translations/src/languages/az.ts +++ b/packages/translations/src/languages/az.ts @@ -420,8 +420,8 @@ export const azTranslations: DefaultTranslationsObject = { problemRestoringVersion: 'Bu versiyanın bərpasında problem yaşandı', publish: 'Dərc et', publishChanges: 'Dəyişiklikləri dərc et', - publishIn: '{{locale}} dili ilə nəşr edin', published: 'Dərc edilmiş', + publishIn: '{{locale}} dili ilə nəşr edin', publishing: 'Nəşr', restoreAsDraft: 'Qaralamalar kimi bərpa et', restoredSuccessfully: 'Uğurla bərpa edildi.', diff --git a/packages/translations/src/languages/bg.ts b/packages/translations/src/languages/bg.ts index 7d06e3e78d..83e684e359 100644 --- a/packages/translations/src/languages/bg.ts +++ b/packages/translations/src/languages/bg.ts @@ -419,8 +419,8 @@ export const bgTranslations: DefaultTranslationsObject = { problemRestoringVersion: 'Имаше проблем при възстановяването на тази версия', publish: 'Публикувай', publishChanges: 'Публикувай промените', - publishIn: 'Публикувайте в {{locale}}', published: 'Публикувано', + publishIn: 'Публикувайте в {{locale}}', publishing: 'Публикуване', restoreAsDraft: 'Възстанови като чернова', restoredSuccessfully: 'Успешно възстановяване.', diff --git a/packages/translations/src/languages/cs.ts b/packages/translations/src/languages/cs.ts index 18fdf00f81..3da8072bd9 100644 --- a/packages/translations/src/languages/cs.ts +++ b/packages/translations/src/languages/cs.ts @@ -418,8 +418,8 @@ export const csTranslations: DefaultTranslationsObject = { problemRestoringVersion: 'Při obnovování této verze došlo k problému', publish: 'Publikovat', publishChanges: 'Publikovat změny', - publishIn: 'Publikovat v {{locale}}', published: 'Publikováno', + publishIn: 'Publikovat v {{locale}}', publishing: 'Publikování', restoreAsDraft: 'Obnovit jako koncept', restoredSuccessfully: 'Úspěšně obnoveno.', diff --git a/packages/translations/src/languages/de.ts b/packages/translations/src/languages/de.ts index 92621bee8e..3f9353b8c5 100644 --- a/packages/translations/src/languages/de.ts +++ b/packages/translations/src/languages/de.ts @@ -424,8 +424,8 @@ export const deTranslations: DefaultTranslationsObject = { problemRestoringVersion: 'Es gab ein Problem bei der Wiederherstellung dieser Version', publish: 'Veröffentlichen', publishChanges: 'Änderungen veröffentlichen', - publishIn: 'Veröffentlichen in {{locale}}', published: 'Veröffentlicht', + publishIn: 'Veröffentlichen in {{locale}}', publishing: 'Veröffentlichung', restoreAsDraft: 'Als Entwurf wiederherstellen', restoredSuccessfully: 'Erfolgreich wiederhergestellt.', diff --git a/packages/translations/src/languages/en.ts b/packages/translations/src/languages/en.ts index 3f023b60b9..9b91245aea 100644 --- a/packages/translations/src/languages/en.ts +++ b/packages/translations/src/languages/en.ts @@ -422,8 +422,8 @@ export const enTranslations = { problemRestoringVersion: 'There was a problem restoring this version', publish: 'Publish', publishChanges: 'Publish changes', - publishIn: 'Publish in {{locale}}', published: 'Published', + publishIn: 'Publish in {{locale}}', publishing: 'Publishing', restoreAsDraft: 'Restore as draft', restoredSuccessfully: 'Restored Successfully.', diff --git a/packages/translations/src/languages/es.ts b/packages/translations/src/languages/es.ts index 53dc13c661..41e5d351f4 100644 --- a/packages/translations/src/languages/es.ts +++ b/packages/translations/src/languages/es.ts @@ -424,8 +424,8 @@ export const esTranslations: DefaultTranslationsObject = { problemRestoringVersion: 'Ocurrió un problema al restaurar esta versión', publish: 'Publicar', publishChanges: 'Publicar cambios', - publishIn: 'Publicar en {{locale}}', published: 'Publicado', + publishIn: 'Publicar en {{locale}}', publishing: 'Publicación', restoreAsDraft: 'Restaurar como borrador', restoredSuccessfully: 'Restaurado éxito.', diff --git a/packages/translations/src/languages/fa.ts b/packages/translations/src/languages/fa.ts index 14294ce844..e8360788dc 100644 --- a/packages/translations/src/languages/fa.ts +++ b/packages/translations/src/languages/fa.ts @@ -417,8 +417,8 @@ export const faTranslations: DefaultTranslationsObject = { problemRestoringVersion: 'مشکلی در بازیابی این نگارش وجود دارد', publish: 'انتشار', publishChanges: 'انتشار تغییرات', - publishIn: 'منتشر کنید در {{locale}}', published: 'انتشار یافته', + publishIn: 'منتشر کنید در {{locale}}', publishing: 'انتشار', restoreAsDraft: 'بازیابی به عنوان پیش‌نویس', restoredSuccessfully: 'با موفقیت بازیابی شد.', diff --git a/packages/translations/src/languages/fr.ts b/packages/translations/src/languages/fr.ts index db05a751bb..bdd460a903 100644 --- a/packages/translations/src/languages/fr.ts +++ b/packages/translations/src/languages/fr.ts @@ -431,8 +431,8 @@ export const frTranslations: DefaultTranslationsObject = { problemRestoringVersion: 'Un problème est survenu lors de la restauration de cette version', publish: 'Publier', publishChanges: 'Publier les modifications', - publishIn: 'Publier en {{locale}}', published: 'Publié', + publishIn: 'Publier en {{locale}}', publishing: 'Publication', restoreAsDraft: 'Restaurer comme brouillon', restoredSuccessfully: 'Restauré(e) avec succès.', diff --git a/packages/translations/src/languages/he.ts b/packages/translations/src/languages/he.ts index e67bdc2b8d..8a8c46ec8e 100644 --- a/packages/translations/src/languages/he.ts +++ b/packages/translations/src/languages/he.ts @@ -407,8 +407,8 @@ export const heTranslations: DefaultTranslationsObject = { problemRestoringVersion: 'הייתה בעיה בשחזור הגרסה הזו', publish: 'פרסם', publishChanges: 'פרסם שינויים', - publishIn: 'פרסם ב-{{locale}}', published: 'פורסם', + publishIn: 'פרסם ב-{{locale}}', publishing: 'מפרסם', restoreAsDraft: 'שחזר כטיוטה', restoredSuccessfully: 'שוחזר בהצלחה.', diff --git a/packages/translations/src/languages/hr.ts b/packages/translations/src/languages/hr.ts index 09ebd4131a..3c5156edf0 100644 --- a/packages/translations/src/languages/hr.ts +++ b/packages/translations/src/languages/hr.ts @@ -417,8 +417,8 @@ export const hrTranslations: DefaultTranslationsObject = { problemRestoringVersion: 'Nastao je problem pri vraćanju ove verzije', publish: 'Objaviti', publishChanges: 'Objavi promjene', - publishIn: undefined, published: 'Objavljeno', + publishIn: undefined, publishing: 'Objavljivanje', restoreAsDraft: 'Vrati kao skicu', restoredSuccessfully: 'Uspješno vraćeno.', diff --git a/packages/translations/src/languages/hu.ts b/packages/translations/src/languages/hu.ts index fd08ec2d29..a779520ebb 100644 --- a/packages/translations/src/languages/hu.ts +++ b/packages/translations/src/languages/hu.ts @@ -424,8 +424,8 @@ export const huTranslations: DefaultTranslationsObject = { 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', - publishIn: 'Közzététel ebben a {{locale}} területkódban', published: 'Közzétett', + publishIn: 'Közzététel ebben a {{locale}} területkódban', publishing: 'Közzététel', restoreAsDraft: 'Visszaállítás piszkozatként', restoredSuccessfully: 'Sikeresen visszaállítva.', diff --git a/packages/translations/src/languages/it.ts b/packages/translations/src/languages/it.ts index a377ac521c..49288a2721 100644 --- a/packages/translations/src/languages/it.ts +++ b/packages/translations/src/languages/it.ts @@ -424,8 +424,8 @@ export const itTranslations: DefaultTranslationsObject = { problemRestoringVersion: 'Si è verificato un problema durante il ripristino di questa versione', publish: 'Pubblicare', publishChanges: 'Pubblica modifiche', - publishIn: 'Pubblica in {{locale}}', published: 'Pubblicato', + publishIn: 'Pubblica in {{locale}}', publishing: 'Pubblicazione', restoreAsDraft: 'Ripristina come bozza', restoredSuccessfully: 'Ripristinato con successo.', diff --git a/packages/translations/src/languages/ja.ts b/packages/translations/src/languages/ja.ts index bd628e269e..3be5e90fe8 100644 --- a/packages/translations/src/languages/ja.ts +++ b/packages/translations/src/languages/ja.ts @@ -418,8 +418,8 @@ export const jaTranslations: DefaultTranslationsObject = { problemRestoringVersion: 'このバージョンの復元に問題がありました。', publish: '公開する', publishChanges: '変更内容を公開', - publishIn: '{{locale}}で公開する', published: '公開済み', + publishIn: '{{locale}}で公開する', publishing: '公開', restoreAsDraft: '下書きとして復元', restoredSuccessfully: '正常に復元されました。', diff --git a/packages/translations/src/languages/ko.ts b/packages/translations/src/languages/ko.ts index 9fab8c57a2..6d1c7a2eb3 100644 --- a/packages/translations/src/languages/ko.ts +++ b/packages/translations/src/languages/ko.ts @@ -414,8 +414,8 @@ export const koTranslations: DefaultTranslationsObject = { problemRestoringVersion: '이 버전을 복원하는 중 문제가 발생했습니다.', publish: '게시', publishChanges: '변경 사항 게시', - publishIn: '{{locale}}에서 게시하십시오.', published: '게시됨', + publishIn: '{{locale}}에서 게시하십시오.', publishing: '게시', restoreAsDraft: '임시 저장으로 복원', restoredSuccessfully: '복원이 완료되었습니다.', diff --git a/packages/translations/src/languages/my.ts b/packages/translations/src/languages/my.ts index 2781c6010c..c957f98de6 100644 --- a/packages/translations/src/languages/my.ts +++ b/packages/translations/src/languages/my.ts @@ -426,8 +426,8 @@ export const myTranslations: DefaultTranslationsObject = { problemRestoringVersion: 'ဤဗားရှင်းကို ပြန်လည်ရယူရာတွင် ပြဿနာရှိနေသည်။', publish: 'ထုတ်ဝေသည်။', publishChanges: 'အပြောင်းအလဲများကို တင်ခဲ့သည်။', - publishIn: 'Terbitkan di {{locale}}', published: 'တင်ပြီးပြီ။', + publishIn: 'Terbitkan di {{locale}}', publishing: 'ထုတ်ဝေခြင်း', restoreAsDraft: 'Pulihkan sebagai draf', restoredSuccessfully: 'အောင်မြင်စွာ ပြန်လည်ရယူခဲ့သည်။', diff --git a/packages/translations/src/languages/nb.ts b/packages/translations/src/languages/nb.ts index f3d82fafda..4e2cf2dc2e 100644 --- a/packages/translations/src/languages/nb.ts +++ b/packages/translations/src/languages/nb.ts @@ -420,8 +420,8 @@ export const nbTranslations: DefaultTranslationsObject = { problemRestoringVersion: 'Det oppstod et problem med gjenoppretting av denne versjonen', publish: 'Publisere', publishChanges: 'Publiser endringer', - publishIn: 'Publiser i {{locale}}', published: 'Publisert', + publishIn: 'Publiser i {{locale}}', publishing: 'Publisering', restoreAsDraft: 'Gjenopprett som utkast', restoredSuccessfully: 'Gjenopprettet.', diff --git a/packages/translations/src/languages/nl.ts b/packages/translations/src/languages/nl.ts index dc5c47ef2f..371bc61e4c 100644 --- a/packages/translations/src/languages/nl.ts +++ b/packages/translations/src/languages/nl.ts @@ -423,8 +423,8 @@ export const nlTranslations: DefaultTranslationsObject = { problemRestoringVersion: 'Er was een probleem bij het herstellen van deze versie', publish: 'Publiceren', publishChanges: 'Publiceer wijzigingen', - publishIn: 'Publiceer in {{locale}}', published: 'Gepubliceerd', + publishIn: 'Publiceer in {{locale}}', publishing: 'Publicatie', restoreAsDraft: 'Herstellen als concept', restoredSuccessfully: 'Herstelling succesvol.', diff --git a/packages/translations/src/languages/pl.ts b/packages/translations/src/languages/pl.ts index 2026eba274..2a9491b0fb 100644 --- a/packages/translations/src/languages/pl.ts +++ b/packages/translations/src/languages/pl.ts @@ -420,8 +420,8 @@ export const plTranslations: DefaultTranslationsObject = { problemRestoringVersion: 'Wystąpił problem podczas przywracania tej wersji', publish: 'Publikuj', publishChanges: 'Opublikuj zmiany', - publishIn: undefined, published: 'Opublikowano', + publishIn: undefined, publishing: 'Publikacja', restoreAsDraft: 'Przywróć jako szkic', restoredSuccessfully: 'Przywrócono pomyślnie.', diff --git a/packages/translations/src/languages/pt.ts b/packages/translations/src/languages/pt.ts index 096ec292d7..f8ae147c03 100644 --- a/packages/translations/src/languages/pt.ts +++ b/packages/translations/src/languages/pt.ts @@ -421,8 +421,8 @@ export const ptTranslations: DefaultTranslationsObject = { problemRestoringVersion: 'Ocorreu um problema ao restaurar essa versão', publish: 'Publicar', publishChanges: 'Publicar alterações', - publishIn: undefined, published: 'Publicado', + publishIn: undefined, publishing: 'Publicação', restoreAsDraft: 'Restaurar como rascunho', restoredSuccessfully: 'Restaurado com sucesso.', diff --git a/packages/translations/src/languages/ro.ts b/packages/translations/src/languages/ro.ts index 044cae4531..e2b73f02aa 100644 --- a/packages/translations/src/languages/ro.ts +++ b/packages/translations/src/languages/ro.ts @@ -428,8 +428,8 @@ export const roTranslations: DefaultTranslationsObject = { problemRestoringVersion: 'A existat o problemă la restaurarea acestei versiuni', publish: 'Publicați', publishChanges: 'Publicați modificările', - publishIn: 'Publicați în {{locale}}', published: 'Publicat', + publishIn: 'Publicați în {{locale}}', publishing: 'Editare', restoreAsDraft: 'Restaurează ca proiect', restoredSuccessfully: 'Restaurat cu succes.', diff --git a/packages/translations/src/languages/rs.ts b/packages/translations/src/languages/rs.ts index de27cb7553..32e6b1ff61 100644 --- a/packages/translations/src/languages/rs.ts +++ b/packages/translations/src/languages/rs.ts @@ -415,8 +415,8 @@ export const rsTranslations: DefaultTranslationsObject = { problemRestoringVersion: 'Настао је проблем при враћању ове верзије', publish: 'Објавити', publishChanges: 'Објави промене', - publishIn: undefined, published: 'Објављено', + publishIn: undefined, publishing: 'Objavljivanje', restoreAsDraft: 'Vrati kao nacrt', restoredSuccessfully: 'Успешно враћено.', diff --git a/packages/translations/src/languages/rsLatin.ts b/packages/translations/src/languages/rsLatin.ts index 7c1e7618c5..a569053a8d 100644 --- a/packages/translations/src/languages/rsLatin.ts +++ b/packages/translations/src/languages/rsLatin.ts @@ -416,8 +416,8 @@ export const rsLatinTranslations: DefaultTranslationsObject = { problemRestoringVersion: 'Nastao je problem pri vraćanju ove verzije', publish: 'Objaviti', publishChanges: 'Objavljivanje', - publishIn: 'Objavite na {{locale}}', published: 'Objavljeno', + publishIn: 'Objavite na {{locale}}', publishing: 'Objavljivanje', restoreAsDraft: 'Vrati kao nacrt', restoredSuccessfully: 'Uspešno vraćeno.', diff --git a/packages/translations/src/languages/ru.ts b/packages/translations/src/languages/ru.ts index 4c34e72c25..176c1514cb 100644 --- a/packages/translations/src/languages/ru.ts +++ b/packages/translations/src/languages/ru.ts @@ -422,8 +422,8 @@ export const ruTranslations: DefaultTranslationsObject = { problemRestoringVersion: 'Возникла проблема с восстановлением этой версии', publish: 'Публиковать', publishChanges: 'Опубликовать изменения', - publishIn: 'Опубликовать на {{locale}}', published: 'Опубликовано', + publishIn: 'Опубликовать на {{locale}}', publishing: 'Публикация', restoreAsDraft: 'Восстановить как черновик', restoredSuccessfully: 'Восстановлен успешно.', diff --git a/packages/translations/src/languages/sk.ts b/packages/translations/src/languages/sk.ts index 05c95281f2..2a6468b9cf 100644 --- a/packages/translations/src/languages/sk.ts +++ b/packages/translations/src/languages/sk.ts @@ -420,8 +420,8 @@ export const skTranslations: DefaultTranslationsObject = { problemRestoringVersion: 'Pri obnovovaní tejto verzie došlo k problému', publish: 'Publikovať', publishChanges: 'Publikovať zmeny', - publishIn: 'Publikujte v {{locale}}', published: 'Publikované', + publishIn: 'Publikujte v {{locale}}', publishing: 'Publikovanie', restoreAsDraft: 'Obnoviť ako koncept', restoredSuccessfully: 'Úspešne obnovené.', diff --git a/packages/translations/src/languages/sv.ts b/packages/translations/src/languages/sv.ts index 237f262e6b..038484eeff 100644 --- a/packages/translations/src/languages/sv.ts +++ b/packages/translations/src/languages/sv.ts @@ -419,8 +419,8 @@ export const svTranslations: DefaultTranslationsObject = { problemRestoringVersion: 'Det uppstod ett problem när den här versionen skulle återställas', publish: 'Publicera', publishChanges: 'Publicera ändringar', - publishIn: 'Publicera i {{locale}}', published: 'Publicerad', + publishIn: 'Publicera i {{locale}}', publishing: 'Publicering', restoreAsDraft: 'Återställ som utkast', restoredSuccessfully: 'Återställd framgångsrikt.', diff --git a/packages/translations/src/languages/th.ts b/packages/translations/src/languages/th.ts index 502125e056..b0ac549e4c 100644 --- a/packages/translations/src/languages/th.ts +++ b/packages/translations/src/languages/th.ts @@ -411,8 +411,8 @@ export const thTranslations: DefaultTranslationsObject = { problemRestoringVersion: 'เกิดปัญหาระหว่างการกู้คืนเวอร์ชันนี้', publish: 'เผยแพร่', publishChanges: 'เผยแพร่การแก้ไข', - publishIn: 'เผยแพร่ใน {{locale}}', published: 'เผยแพร่แล้ว', + publishIn: 'เผยแพร่ใน {{locale}}', publishing: 'การเผยแพร่', restoreAsDraft: 'เรียกคืนเป็นร่าง', restoredSuccessfully: 'กู้คืนเวอร์ชันสำเร็จ', diff --git a/packages/translations/src/languages/tr.ts b/packages/translations/src/languages/tr.ts index 2cd9463a2d..35a08fdc9c 100644 --- a/packages/translations/src/languages/tr.ts +++ b/packages/translations/src/languages/tr.ts @@ -421,8 +421,8 @@ export const trTranslations: DefaultTranslationsObject = { problemRestoringVersion: 'Bu sürüme geri döndürürken bir hatayla karşılaşıldı.', publish: 'Yayınla', publishChanges: 'Değişiklikleri yayınla', - publishIn: '{{locale}} dilinde yayınlayın.', published: 'Yayınlandı', + publishIn: '{{locale}} dilinde yayınlayın.', publishing: 'Yayınlama', restoreAsDraft: 'Taslak olarak geri yükle', restoredSuccessfully: 'Geri getirme başarılı.', diff --git a/packages/translations/src/languages/uk.ts b/packages/translations/src/languages/uk.ts index 60b9f102b1..5ef3ec4432 100644 --- a/packages/translations/src/languages/uk.ts +++ b/packages/translations/src/languages/uk.ts @@ -419,8 +419,8 @@ export const ukTranslations: DefaultTranslationsObject = { problemRestoringVersion: 'Виникла проблема з відновленням цієї версії', publish: 'Опублікувати', publishChanges: 'Опублікувати зміни', - publishIn: 'Опублікувати в {{locale}}', published: 'Опубліковано', + publishIn: 'Опублікувати в {{locale}}', publishing: 'Публікація', restoreAsDraft: 'Відновити як чернетку', restoredSuccessfully: 'Відновлено успішно.', diff --git a/packages/translations/src/languages/vi.ts b/packages/translations/src/languages/vi.ts index c51761285b..4b0f5b4ba3 100644 --- a/packages/translations/src/languages/vi.ts +++ b/packages/translations/src/languages/vi.ts @@ -414,8 +414,8 @@ export const viTranslations: DefaultTranslationsObject = { problemRestoringVersion: 'Đã xảy ra vấn đề khi khôi phục phiên bản này', publish: 'Công bố', publishChanges: 'Xuất bản tài liệu', - publishIn: 'Xuất bản trong {{locale}}', published: 'Đã xuất bản', + publishIn: 'Xuất bản trong {{locale}}', publishing: 'Xuất bản', restoreAsDraft: 'Khôi phục như bản nháp', restoredSuccessfully: 'Đã khôi phục thành công.', diff --git a/packages/translations/src/languages/zh.ts b/packages/translations/src/languages/zh.ts index c645a83313..00082a3cfd 100644 --- a/packages/translations/src/languages/zh.ts +++ b/packages/translations/src/languages/zh.ts @@ -404,8 +404,8 @@ export const zhTranslations: DefaultTranslationsObject = { problemRestoringVersion: '恢复这个版本时发生了问题', publish: '发布', publishChanges: '发布修改', - publishIn: undefined, published: '已发布', + publishIn: undefined, publishing: '发布', restoreAsDraft: '恢复为草稿', restoredSuccessfully: '恢复成功。', diff --git a/packages/translations/src/languages/zhTw.ts b/packages/translations/src/languages/zhTw.ts index 00d3c1dd24..0bc3985b4c 100644 --- a/packages/translations/src/languages/zhTw.ts +++ b/packages/translations/src/languages/zhTw.ts @@ -404,8 +404,8 @@ export const zhTwTranslations: DefaultTranslationsObject = { problemRestoringVersion: '回復這個版本時發生了問題', publish: '發佈', publishChanges: '發佈修改', - publishIn: undefined, published: '已發佈', + publishIn: undefined, publishing: '發布', restoreAsDraft: '恢復為草稿', restoredSuccessfully: '回復成功。', diff --git a/packages/ui/src/elements/ColumnSelector/index.tsx b/packages/ui/src/elements/ColumnSelector/index.tsx index 061cf359ca..fce30b5b60 100644 --- a/packages/ui/src/elements/ColumnSelector/index.tsx +++ b/packages/ui/src/elements/ColumnSelector/index.tsx @@ -53,9 +53,20 @@ export const ColumnSelector: React.FC = ({ collectionSlug }) => { return null } - const { accessor, active, Label } = col + const { + accessor, + active, + cellProps: { + field: { + admin: { + // @ts-expect-error // TODO: `Label` does not exist on the UI field + components: { Label } = {}, + } = {}, + } = {}, + }, + } = col - if (col.accessor === '_select') { + if (col.accessor === '_select' || Label === null) { return null } diff --git a/packages/ui/src/elements/DocumentDrawer/DrawerContent.tsx b/packages/ui/src/elements/DocumentDrawer/DrawerContent.tsx index d9ebf4ba39..38fa1cd4f8 100644 --- a/packages/ui/src/elements/DocumentDrawer/DrawerContent.tsx +++ b/packages/ui/src/elements/DocumentDrawer/DrawerContent.tsx @@ -25,6 +25,8 @@ export const DocumentDrawerContent: React.FC = ({ disableActions, drawerSlug, Header, + initialData, + initialState, onDelete: onDeleteFromProps, onDuplicate: onDuplicateFromProps, onSave: onSaveFromProps, @@ -136,6 +138,8 @@ export const DocumentDrawerContent: React.FC = ({ disableActions={disableActions} disableLeaveWithoutSaving id={docID} + initialData={initialData} + initialState={initialState} isEditing={isEditing} onDelete={onDelete} onDrawerCreate={() => { diff --git a/packages/ui/src/elements/DocumentDrawer/types.ts b/packages/ui/src/elements/DocumentDrawer/types.ts index de7aa0d4c4..5337c7148f 100644 --- a/packages/ui/src/elements/DocumentDrawer/types.ts +++ b/packages/ui/src/elements/DocumentDrawer/types.ts @@ -1,3 +1,4 @@ +import type { Data, FormState } from 'payload' import type React from 'react' import type { HTMLAttributes } from 'react' @@ -10,6 +11,8 @@ export type DocumentDrawerProps = { readonly disableActions?: boolean readonly drawerSlug?: string readonly id?: null | number | string + readonly initialData?: Data + readonly initialState?: FormState readonly onDelete?: DocumentInfoContext['onDelete'] readonly onDuplicate?: DocumentInfoContext['onDuplicate'] readonly onSave?: DocumentInfoContext['onSave'] @@ -24,7 +27,7 @@ export type DocumentTogglerProps = { readonly disabled?: boolean readonly drawerSlug?: string readonly id?: string -} & HTMLAttributes +} & Readonly> export type UseDocumentDrawer = (args: { collectionSlug: string; id?: number | string }) => [ React.FC>, // drawer diff --git a/packages/ui/src/elements/Hamburger/index.scss b/packages/ui/src/elements/Hamburger/index.scss index 5ba074905b..ec67bf9d61 100644 --- a/packages/ui/src/elements/Hamburger/index.scss +++ b/packages/ui/src/elements/Hamburger/index.scss @@ -18,6 +18,7 @@ transition-property: box-shadow, background-color; transition-duration: 100ms; transition-timing-function: cubic-bezier(0, 0.2, 0.2, 1); + --hamburger-size: var(--base); &:hover { background-color: var(--theme-elevation-100); @@ -36,5 +37,8 @@ &__close-icon { width: var(--hamburger-size); height: var(--hamburger-size); + display: flex; + align-items: center; + justify-content: center; } } diff --git a/packages/ui/src/elements/ListControls/index.scss b/packages/ui/src/elements/ListControls/index.scss index 70bb0e972e..8a11e6c72b 100644 --- a/packages/ui/src/elements/ListControls/index.scss +++ b/packages/ui/src/elements/ListControls/index.scss @@ -32,12 +32,6 @@ } } - &__buttons-active { - svg { - transform: rotate(180deg); - } - } - .column-selector, .where-builder, .sort-complex { diff --git a/packages/ui/src/elements/ListControls/index.tsx b/packages/ui/src/elements/ListControls/index.tsx index d22b66c8e3..d7fb1354c4 100644 --- a/packages/ui/src/elements/ListControls/index.tsx +++ b/packages/ui/src/elements/ListControls/index.tsx @@ -125,7 +125,7 @@ export const ListControls: React.FC = (props) => {
{ return void handleSearchChange(search) }} @@ -153,10 +153,8 @@ export const ListControls: React.FC = (props) => { } + className={`${baseClass}__toggle-columns`} + icon={} onClick={() => setVisibleDrawer(visibleDrawer !== 'columns' ? 'columns' : undefined) } @@ -168,10 +166,8 @@ export const ListControls: React.FC = (props) => { } + className={`${baseClass}__toggle-where`} + icon={} onClick={() => setVisibleDrawer(visibleDrawer !== 'where' ? 'where' : undefined)} pillStyle="light" > diff --git a/packages/ui/src/elements/ListDrawer/DrawerContent.tsx b/packages/ui/src/elements/ListDrawer/DrawerContent.tsx index 7714b9a584..135a02386d 100644 --- a/packages/ui/src/elements/ListDrawer/DrawerContent.tsx +++ b/packages/ui/src/elements/ListDrawer/DrawerContent.tsx @@ -27,7 +27,7 @@ import { TableColumnsProvider } from '../TableColumns/index.js' import { ViewDescription } from '../ViewDescription/index.js' import { baseClass } from './index.js' -const hoistQueryParamsToAnd = (where: Where, queryParams: Where) => { +export const hoistQueryParamsToAnd = (where: Where, queryParams: Where) => { if ('and' in where) { where.and.push(queryParams) } else if ('or' in where) { diff --git a/packages/ui/src/elements/Localizer/LocalizerLabel/index.scss b/packages/ui/src/elements/Localizer/LocalizerLabel/index.scss index d8f8853070..3b47858559 100644 --- a/packages/ui/src/elements/Localizer/LocalizerLabel/index.scss +++ b/packages/ui/src/elements/Localizer/LocalizerLabel/index.scss @@ -6,8 +6,7 @@ white-space: nowrap; display: flex; padding-inline-start: base(0.4); - padding-inline-end: base(0.1); - gap: 0; + padding-inline-end: base(0.4); background-color: var(--theme-elevation-100); border-radius: var(--style-radius-s); @@ -16,12 +15,17 @@ } &__chevron { - padding: base(0.1); .stroke { stroke: currentColor; } } + &__current { + display: flex; + align-items: center; + gap: base(0.3); + } + button { color: currentColor; padding: 0; diff --git a/packages/ui/src/elements/Localizer/LocalizerLabel/index.tsx b/packages/ui/src/elements/Localizer/LocalizerLabel/index.tsx index 400f739fdf..d5d50d8e28 100644 --- a/packages/ui/src/elements/Localizer/LocalizerLabel/index.tsx +++ b/packages/ui/src/elements/Localizer/LocalizerLabel/index.tsx @@ -23,10 +23,12 @@ export const LocalizerLabel: React.FC<{ className={[baseClass, className].filter(Boolean).join(' ')} >
{`${t('general:locale')}:`} 
- - {`${getTranslation(locale.label, i18n)}`} - - +
+ + {`${getTranslation(locale.label, i18n)}`} + + +
) } diff --git a/packages/ui/src/elements/Pagination/index.tsx b/packages/ui/src/elements/Pagination/index.tsx index d2f7e02128..ed1330ed7c 100644 --- a/packages/ui/src/elements/Pagination/index.tsx +++ b/packages/ui/src/elements/Pagination/index.tsx @@ -52,7 +52,7 @@ export const Pagination: React.FC = (props) => { totalPages = null, } = props - if (!totalPages || totalPages <= 1) { + if (!hasNextPage && !hasPrevPage) { return null } @@ -82,6 +82,7 @@ export const Pagination: React.FC = (props) => { if (currentPage - numberOfNeighbors - 1 >= 2) { nodes.unshift({ type: 'Separator' }) } + // Add first page if necessary if (currentPage > numberOfNeighbors + 1) { nodes.unshift({ @@ -98,6 +99,7 @@ export const Pagination: React.FC = (props) => { if (currentPage + numberOfNeighbors + 1 < totalPages) { nodes.push({ type: 'Separator' }) } + // Add last page if necessary if (rangeEndIndex < totalPages) { nodes.push({ diff --git a/packages/ui/src/elements/PerPage/index.tsx b/packages/ui/src/elements/PerPage/index.tsx index d105ef40ef..7e33354cf5 100644 --- a/packages/ui/src/elements/PerPage/index.tsx +++ b/packages/ui/src/elements/PerPage/index.tsx @@ -13,11 +13,11 @@ const baseClass = 'per-page' const defaultLimits = collectionDefaults.admin.pagination.limits export type PerPageProps = { - defaultLimit?: number - handleChange?: (limit: number) => void - limit: number - limits: number[] - resetPage?: boolean + readonly defaultLimit?: number + readonly handleChange?: (limit: number) => void + readonly limit: number + readonly limits: number[] + readonly resetPage?: boolean } export const PerPage: React.FC = ({ @@ -61,7 +61,7 @@ export const PerPage: React.FC = ({ > {limitNumber === limitToUse && (
- +
)}   diff --git a/packages/ui/src/elements/Pill/index.scss b/packages/ui/src/elements/Pill/index.scss index 674242bf97..9507e587ed 100644 --- a/packages/ui/src/elements/Pill/index.scss +++ b/packages/ui/src/elements/Pill/index.scss @@ -15,6 +15,7 @@ padding: 0 base(0.4); align-items: center; flex-shrink: 0; + gap: base(0.2); &--rounded { border-radius: var(--style-radius-l); @@ -54,7 +55,8 @@ &--has-icon { padding-inline-start: base(0.4); - padding-inline-end: base(0.1); + padding-inline-end: base(0.3); + svg { display: block; } diff --git a/packages/ui/src/elements/ReactSelect/index.scss b/packages/ui/src/elements/ReactSelect/index.scss index abab4bb10e..29409f6d23 100644 --- a/packages/ui/src/elements/ReactSelect/index.scss +++ b/packages/ui/src/elements/ReactSelect/index.scss @@ -12,6 +12,10 @@ flex-wrap: nowrap; } + .rs__indicators { + gap: calc(var(--base) / 4); + } + .rs__indicator { padding: 0px 4px; cursor: pointer; diff --git a/packages/ui/src/elements/RelationshipTable/TableWrapper.tsx b/packages/ui/src/elements/RelationshipTable/TableWrapper.tsx new file mode 100644 index 0000000000..3ecdedccff --- /dev/null +++ b/packages/ui/src/elements/RelationshipTable/TableWrapper.tsx @@ -0,0 +1,46 @@ +'use client' + +import type { ClientCollectionConfig } from 'payload' + +import React, { Fragment } from 'react' + +import { useListQuery } from '../../providers/ListQuery/index.js' +import { Pagination } from '../Pagination/index.js' +import { Table } from '../Table/index.js' + +type RelationshipTableComponentProps = { + readonly collectionConfig: ClientCollectionConfig +} + +export const RelationshipTableWrapper: React.FC = (props) => { + const { collectionConfig } = props + + const { data, handlePageChange } = useListQuery() + + return ( + + + { + void handlePageChange(e) + }} + page={data.page || 1} + prevPage={data.prevPage || undefined} + totalPages={data.totalPages} + /> + + ) +} diff --git a/packages/ui/src/elements/RelationshipTable/cells/DrawerLink/index.scss b/packages/ui/src/elements/RelationshipTable/cells/DrawerLink/index.scss new file mode 100644 index 0000000000..0df588c8cc --- /dev/null +++ b/packages/ui/src/elements/RelationshipTable/cells/DrawerLink/index.scss @@ -0,0 +1,4 @@ +.drawer-link { + display: flex; + gap: calc(var(--base) / 2); +} diff --git a/packages/ui/src/elements/RelationshipTable/cells/DrawerLink/index.tsx b/packages/ui/src/elements/RelationshipTable/cells/DrawerLink/index.tsx new file mode 100644 index 0000000000..e47a6f93eb --- /dev/null +++ b/packages/ui/src/elements/RelationshipTable/cells/DrawerLink/index.tsx @@ -0,0 +1,53 @@ +'use client' +import type { CellComponentProps, JoinFieldClient } from 'payload' + +import React, { useCallback } from 'react' + +import type { DocumentDrawerProps } from '../../../DocumentDrawer/types.js' + +import { EditIcon } from '../../../../icons/Edit/index.js' +import { useDocumentDrawer } from '../../../DocumentDrawer/index.js' +import { DefaultCell } from '../../../Table/DefaultCell/index.js' +import { useTableCell } from '../../../Table/index.js' +import './index.scss' + +export const DrawerLink: React.FC< + { + readonly onDrawerSave?: DocumentDrawerProps['onSave'] + } & CellComponentProps +> = (props) => { + const context = useTableCell() + const { field, onDrawerSave: onDrawerSaveFromProps } = props + + const { + cellProps, + customCellContext: { collectionSlug }, + rowData, + } = context + + const [DocumentDrawer, DocumentDrawerToggler, { closeDrawer }] = useDocumentDrawer({ + id: rowData.id, + collectionSlug, + }) + + const onDrawerSave = useCallback( + (args) => { + closeDrawer() + + if (typeof onDrawerSaveFromProps === 'function') { + void onDrawerSaveFromProps(args) + } + }, + [closeDrawer, onDrawerSaveFromProps], + ) + + return ( +
+ + + + + +
+ ) +} diff --git a/packages/ui/src/elements/RelationshipTable/index.scss b/packages/ui/src/elements/RelationshipTable/index.scss new file mode 100644 index 0000000000..271e41bc3f --- /dev/null +++ b/packages/ui/src/elements/RelationshipTable/index.scss @@ -0,0 +1,26 @@ +.relationship-table { + position: relative; + + &__header { + display: flex; + justify-content: space-between; + margin-bottom: var(--base); + } + + &__actions { + display: flex; + align-items: center; + gap: var(--base); + } + + &__columns-inner { + padding-bottom: var(--base); + } + + .table { + th, + td:first-child { + min-width: 0; + } + } +} diff --git a/packages/ui/src/elements/RelationshipTable/index.tsx b/packages/ui/src/elements/RelationshipTable/index.tsx new file mode 100644 index 0000000000..249db848e0 --- /dev/null +++ b/packages/ui/src/elements/RelationshipTable/index.tsx @@ -0,0 +1,330 @@ +'use client' +import type { + ClientCollectionConfig, + ClientField, + JoinFieldClient, + PaginatedDocs, + Where, +} from 'payload' + +import React, { useCallback, useEffect, useState } from 'react' +import AnimateHeightImport from 'react-animate-height' + +const AnimateHeight = AnimateHeightImport.default || AnimateHeightImport + +import { getTranslation } from '@payloadcms/translations' + +import type { DocumentDrawerProps } from '../DocumentDrawer/types.js' + +import { Button } from '../../elements/Button/index.js' +import { Pill } from '../../elements/Pill/index.js' +import { usePayloadAPI } from '../../hooks/usePayloadAPI.js' +import { ChevronIcon } from '../../icons/Chevron/index.js' +import { useAuth } from '../../providers/Auth/index.js' +import { useConfig } from '../../providers/Config/index.js' +import { useDocumentInfo } from '../../providers/DocumentInfo/index.js' +import { ListQueryProvider } from '../../providers/ListQuery/index.js' +import { useTranslation } from '../../providers/Translation/index.js' +import { ColumnSelector } from '../ColumnSelector/index.js' +import { useDocumentDrawer } from '../DocumentDrawer/index.js' +import { hoistQueryParamsToAnd } from '../ListDrawer/DrawerContent.js' +import { RelationshipProvider } from '../Table/RelationshipProvider/index.js' +import { TableColumnsProvider } from '../TableColumns/index.js' +import { DrawerLink } from './cells/DrawerLink/index.js' +import './index.scss' +import { RelationshipTableWrapper } from './TableWrapper.js' + +const baseClass = 'relationship-table' + +type RelationshipTableComponentProps = { + readonly field: JoinFieldClient + readonly filterOptions?: boolean | Where + readonly initialData?: PaginatedDocs + readonly initialDrawerState?: DocumentDrawerProps['initialState'] + readonly Label?: React.ReactNode + readonly relationTo: string +} + +export const RelationshipTable: React.FC = (props) => { + const { + field, + filterOptions, + initialData: initialDataFromProps, + initialDrawerState, + Label, + relationTo, + } = props + + const { + config: { + routes: { api }, + serverURL, + }, + getEntityConfig, + } = useConfig() + + const { id: docID } = useDocumentInfo() + + const { permissions } = useAuth() + + const [initialData, setInitialData] = useState(() => { + if (initialDataFromProps) { + return { + ...initialDataFromProps, + docs: Array.isArray(initialDataFromProps.docs) + ? initialDataFromProps.docs.reduce((acc, doc) => { + if (typeof doc === 'string') { + return acc + } + return [...acc, doc] + }, []) + : [], + } + } + }) + + const { i18n, t } = useTranslation() + + const [limit, setLimit] = useState() + const [sort, setSort] = useState(undefined) + const [page, setPage] = useState(1) + const [where, setWhere] = useState(null) + const [search, setSearch] = useState('') + const [openColumnSelector, setOpenColumnSelector] = useState(false) + + const [collectionConfig] = useState( + () => getEntityConfig({ collectionSlug: relationTo }) as ClientCollectionConfig, + ) + + const apiURL = `${serverURL}${api}/${collectionConfig.slug}` + + const [{ data }, { setParams }] = usePayloadAPI(apiURL, { + initialData, + initialParams: { + depth: 0, + }, + }) + + useEffect(() => { + const { + admin: { listSearchableFields, useAsTitle } = {} as ClientCollectionConfig['admin'], + versions, + } = collectionConfig + + const params: { + cacheBust?: number + depth?: number + draft?: string + limit?: number + page?: number + search?: string + sort?: string + where?: unknown + } = { + depth: 0, + } + + let copyOfWhere = { ...(where || {}) } + + if (filterOptions && typeof filterOptions !== 'boolean') { + copyOfWhere = hoistQueryParamsToAnd(copyOfWhere, filterOptions) + } + + if (search) { + const searchAsConditions = (listSearchableFields || [useAsTitle]).map((fieldName) => { + return { + [fieldName]: { + like: search, + }, + } + }, []) + + if (searchAsConditions.length > 0) { + const searchFilter: Where = { + or: [...searchAsConditions], + } + + copyOfWhere = hoistQueryParamsToAnd(copyOfWhere, searchFilter) + } + } + + if (limit) { + params.limit = limit + } + if (page) { + params.page = page + } + if (sort) { + params.sort = sort + } + if (copyOfWhere) { + params.where = copyOfWhere + } + if (versions?.drafts) { + params.draft = 'true' + } + + setParams(params) + }, [page, sort, where, search, collectionConfig, filterOptions, initialData, limit, setParams]) + + const [DocumentDrawer, DocumentDrawerToggler, { closeDrawer, openDrawer }] = useDocumentDrawer({ + collectionSlug: relationTo, + }) + + const onDrawerSave = useCallback( + (args) => { + const foundDocIndex = data?.docs?.findIndex((doc) => doc.id === args.doc.id) + + if (foundDocIndex !== -1) { + const newDocs = [...data.docs] + newDocs[foundDocIndex] = args.doc + setInitialData({ + ...data, + docs: newDocs, + }) + } else { + setInitialData({ + ...data, + docs: [args.doc, ...data.docs], + }) + } + }, + [data], + ) + + const onDrawerCreate = useCallback( + (args) => { + closeDrawer() + void onDrawerSave(args) + }, + [closeDrawer, onDrawerSave], + ) + + const preferenceKey = `${relationTo}-list` + + const hasCreatePermission = permissions?.collections?.[relationTo]?.create?.permission + + return ( +
+
+ {Label} +
+ {hasCreatePermission && ( + {i18n.t('fields:addNew')} + )} + } + onClick={() => setOpenColumnSelector(!openColumnSelector)} + pillStyle="light" + > + {t('general:columns')} + +
+
+ {data.docs && data.docs.length === 0 && ( +
+

+ {i18n.t('general:noResults', { + label: getTranslation(collectionConfig?.labels?.plural, i18n), + })} +

+ {hasCreatePermission && ( + + )} +
+ )} + {data.docs && data.docs.length > 0 && ( + + + {getTranslation(collectionConfig.labels.singular, i18n)} + ), + }, + Label: null, + }, + }, + } as ClientField, + }, + Heading: i18n.t('version:type'), + }, + ]} + cellProps={[ + {}, + { + field: { + admin: { + components: { + Cell: { + type: 'client', + RenderedComponent: ( + + ), + }, + }, + }, + } as ClientField, + link: false, + }, + ]} + collectionSlug={relationTo} + preferenceKey={preferenceKey} + sortColumnProps={{ + appearance: 'condensed', + }} + > + {/* @ts-expect-error TODO: get this CJS import to work, eslint keeps removing the type assertion */} + +
+ +
+
+ +
+
+
+ )} + +
+ ) +} diff --git a/packages/ui/src/elements/SortColumn/index.scss b/packages/ui/src/elements/SortColumn/index.scss index 1f3bc784bb..e3b65b4263 100644 --- a/packages/ui/src/elements/SortColumn/index.scss +++ b/packages/ui/src/elements/SortColumn/index.scss @@ -2,7 +2,7 @@ .sort-column { display: flex; - gap: calc(var(--base) / 4); + gap: calc(var(--base) / 2); align-items: center; &__label { @@ -24,6 +24,7 @@ &__buttons { display: flex; align-items: center; + gap: calc(var(--base) / 4); } &__button { @@ -54,4 +55,12 @@ visibility: visible; } } + + &--appearance-condensed { + gap: calc(var(--base) / 4); + + .sort-column__buttons { + gap: 0; + } + } } diff --git a/packages/ui/src/elements/SortColumn/index.tsx b/packages/ui/src/elements/SortColumn/index.tsx index 3702d52b88..9a5e294e5e 100644 --- a/packages/ui/src/elements/SortColumn/index.tsx +++ b/packages/ui/src/elements/SortColumn/index.tsx @@ -9,6 +9,7 @@ import { useTranslation } from '../../providers/Translation/index.js' import './index.scss' export type SortColumnProps = { + readonly appearance?: 'condensed' | 'default' readonly disable?: boolean readonly Label: React.ReactNode readonly label?: FieldBase['label'] @@ -18,7 +19,7 @@ export type SortColumnProps = { const baseClass = 'sort-column' export const SortColumn: React.FC = (props) => { - const { name, disable = false, Label, label } = props + const { name, appearance, disable = false, Label, label } = props const { handleSortChange, params } = useListQuery() const { t } = useTranslation() @@ -38,7 +39,11 @@ export const SortColumn: React.FC = (props) => { } return ( -
+
{Label} {!disable && (
diff --git a/packages/ui/src/elements/Table/DefaultCell/fields/Relationship/index.scss b/packages/ui/src/elements/Table/DefaultCell/fields/Relationship/index.scss index ebdd21e316..e69de29bb2 100644 --- a/packages/ui/src/elements/Table/DefaultCell/fields/Relationship/index.scss +++ b/packages/ui/src/elements/Table/DefaultCell/fields/Relationship/index.scss @@ -1,3 +0,0 @@ -.relationship-cell { - min-width: 250px; -} diff --git a/packages/ui/src/elements/Table/DefaultCell/fields/Relationship/index.tsx b/packages/ui/src/elements/Table/DefaultCell/fields/Relationship/index.tsx index 44967e7df1..f8dfdca3da 100644 --- a/packages/ui/src/elements/Table/DefaultCell/fields/Relationship/index.tsx +++ b/packages/ui/src/elements/Table/DefaultCell/fields/Relationship/index.tsx @@ -1,8 +1,13 @@ 'use client' -import type { DefaultCellComponentProps, RelationshipFieldClient, UploadFieldClient } from 'payload' +import type { + DefaultCellComponentProps, + JoinFieldClient, + RelationshipFieldClient, + UploadFieldClient, +} from 'payload' import { getTranslation } from '@payloadcms/translations' -import React, { useEffect, useState } from 'react' +import React, { useEffect, useMemo, useState } from 'react' import { useIntersect } from '../../../../../hooks/useIntersect.js' import { useConfig } from '../../../../../providers/Config/index.js' @@ -17,15 +22,26 @@ type Value = { relationTo: string; value: number | string } const baseClass = 'relationship-cell' const totalToShow = 3 -export interface RelationshipCellProps - extends DefaultCellComponentProps {} +export type RelationshipCellProps = DefaultCellComponentProps< + any, + JoinFieldClient | RelationshipFieldClient | UploadFieldClient +> export const RelationshipCell: React.FC = ({ - cellData, + cellData: cellDataFromProps, customCellContext, field, - field: { label, relationTo }, + field: { label }, }) => { + // conditionally extract relationTo both both relationship and join fields + const relationTo = + ('relationTo' in field && field.relationTo) || ('collection' in field && field.collection) + + // conditionally extract docs from join fields + const cellData = useMemo(() => { + return 'collection' in field ? cellDataFromProps?.docs : cellDataFromProps + }, [cellDataFromProps, field]) + const { config } = useConfig() const { collections, routes } = config const [intersectionRef, entry] = useIntersect() diff --git a/packages/ui/src/elements/Table/DefaultCell/fields/index.tsx b/packages/ui/src/elements/Table/DefaultCell/fields/index.tsx index e2ab85a3b5..e17b1a2dee 100644 --- a/packages/ui/src/elements/Table/DefaultCell/fields/index.tsx +++ b/packages/ui/src/elements/Table/DefaultCell/fields/index.tsx @@ -11,12 +11,13 @@ import { SelectCell } from './Select/index.js' import { TextareaCell } from './Textarea/index.js' export const cellComponents = { + File: FileCell, array: ArrayCell, blocks: BlocksCell, checkbox: CheckboxCell, code: CodeCell, date: DateCell, - File: FileCell, + join: RelationshipCell, json: JSONCell, radio: SelectCell, relationship: RelationshipCell, diff --git a/packages/ui/src/elements/Table/RenderCell.tsx b/packages/ui/src/elements/Table/RenderCell.tsx new file mode 100644 index 0000000000..6fd10afe2e --- /dev/null +++ b/packages/ui/src/elements/Table/RenderCell.tsx @@ -0,0 +1,41 @@ +import type { CellComponentProps } from 'payload' + +import React, { useMemo } from 'react' + +import type { Column } from './index.js' + +import { RenderComponent } from '../../providers/Config/RenderComponent.js' +import { deepMergeSimple } from '../../utilities/deepMerge.js' +import { TableCellProvider } from './TableCellProvider/index.js' + +export const RenderCell: React.FC<{ + readonly cellProps?: Partial + readonly col: Column + readonly colIndex: number + readonly customCellContext?: Record + readonly row: Record +}> = (props) => { + const { cellProps: cellPropsFromProps, col, colIndex, customCellContext, row } = props + + const cellProps: Partial = useMemo( + () => deepMergeSimple(col?.cellProps || {}, cellPropsFromProps || {}), + [cellPropsFromProps, col.cellProps], + ) + + return ( +
+ ) +} diff --git a/packages/ui/src/elements/Table/index.scss b/packages/ui/src/elements/Table/index.scss index d73b7ddcf1..3c757a03e5 100644 --- a/packages/ui/src/elements/Table/index.scss +++ b/packages/ui/src/elements/Table/index.scss @@ -5,6 +5,10 @@ overflow: auto; max-width: 100%; + table { + min-width: 100%; + } + thead { color: var(--theme-elevation-400); @@ -46,6 +50,51 @@ outline-offset: var(--accessibility-outline-offset); } + &--appearance-condensed { + thead { + th:first-child { + border-top-left-radius: $style-radius-s; + } + + th:last-child { + border-top-right-radius: $style-radius-s; + } + + background: var(--theme-elevation-50); + } + + tbody { + tr { + &:nth-child(odd) { + background: transparent; + border-radius: 0; + } + } + } + + th, + td { + padding: base(0.3) base(0.3); + + &:first-child { + padding-inline-start: base(0.6); + } + + &:last-child { + padding-inline-end: base(0.6); + } + } + + th { + padding: base(0.3); + } + + tr td, + th { + border: 0.5px solid var(--theme-elevation-100); + } + } + @include mid-break { th, td { diff --git a/packages/ui/src/elements/Table/index.tsx b/packages/ui/src/elements/Table/index.tsx index be8d769a9b..0b30a1dfa6 100644 --- a/packages/ui/src/elements/Table/index.tsx +++ b/packages/ui/src/elements/Table/index.tsx @@ -1,13 +1,13 @@ 'use client' -import type { CellComponentProps, ClientField, MappedComponent } from 'payload' +import type { CellComponentProps, ClientField } from 'payload' import React from 'react' export * from './TableCellProvider/index.js' -import { RenderComponent } from '../../providers/Config/RenderComponent.js' import { useTableColumns } from '../TableColumns/index.js' import './index.scss' +import { RenderCell } from './RenderCell.js' import { TableCellProvider } from './TableCellProvider/index.js' export { TableCellProvider } @@ -18,22 +18,24 @@ export type Column = { readonly accessor: string readonly active: boolean readonly cellProps?: Partial - readonly components: { - Cell: MappedComponent - Heading: React.ReactNode - } - readonly Label: React.ReactNode + readonly Heading: React.ReactNode } export type Props = { + readonly appearance?: 'condensed' | 'default' readonly columns?: Column[] readonly customCellContext?: Record readonly data: Record[] readonly fields: ClientField[] } -export const Table: React.FC = ({ columns: columnsFromProps, customCellContext, data }) => { - const { columns: columnsFromContext } = useTableColumns() +export const Table: React.FC = ({ + appearance, + columns: columnsFromProps, + customCellContext, + data, +}) => { + const { cellProps, columns: columnsFromContext } = useTableColumns() const columns = columnsFromProps || columnsFromContext @@ -44,13 +46,17 @@ export const Table: React.FC = ({ columns: columnsFromProps, customCellCo } return ( -
+
+ + + +
{activeColumns.map((col, i) => ( ))} @@ -64,26 +70,18 @@ export const Table: React.FC = ({ columns: columnsFromProps, customCellCo (colIndex === 0 && col.accessor !== '_select') || (colIndex === 1 && activeColumns[0]?.accessor === '_select') - const cellProps = { - link: isLink, - ...(col.cellProps || {}), - } - return ( - + ) })} diff --git a/packages/ui/src/elements/TableColumns/buildColumnState.tsx b/packages/ui/src/elements/TableColumns/buildColumnState.tsx index 36be475ebf..cdbad6194a 100644 --- a/packages/ui/src/elements/TableColumns/buildColumnState.tsx +++ b/packages/ui/src/elements/TableColumns/buildColumnState.tsx @@ -1,14 +1,10 @@ 'use client' -import type { - CellComponentProps, - ClientField, - SanitizedCollectionConfig, - StaticLabel, -} from 'payload' +import type { ClientField, SanitizedCollectionConfig, StaticLabel } from 'payload' import React from 'react' import type { ColumnPreferences } from '../../providers/ListInfo/index.js' +import type { SortColumnProps } from '../SortColumn/index.js' import type { Column } from '../Table/index.js' import { FieldLabel } from '../../fields/FieldLabel/index.js' @@ -19,16 +15,26 @@ import { SortColumn } from '../SortColumn/index.js' import { DefaultCell } from '../Table/DefaultCell/index.js' type Args = { - cellProps: Partial[] + beforeRows?: Column[] columnPreferences: ColumnPreferences columns?: ColumnPreferences enableRowSelections: boolean + enableRowTypes?: boolean fields: ClientField[] + sortColumnProps?: Partial useAsTitle: SanitizedCollectionConfig['admin']['useAsTitle'] } export const buildColumnState = (args: Args): Column[] => { - const { cellProps, columnPreferences, columns, enableRowSelections, fields, useAsTitle } = args + const { + beforeRows, + columnPreferences, + columns, + enableRowSelections, + fields, + sortColumnProps, + useAsTitle, + } = args let sortedFieldMap = flattenFieldMap(fields) @@ -114,6 +120,7 @@ export const buildColumnState = (args: Args): Column[] => { Label={Label} label={'label' in field ? (field.label as StaticLabel) : undefined} name={'name' in field ? field.name : undefined} + {...(sortColumnProps || {})} /> ) @@ -124,19 +131,21 @@ export const buildColumnState = (args: Args): Column[] => { cellProps: { field: { ...(field || ({} as ClientField)), - ...(cellProps?.[index]?.field || ({} as ClientField)), + admin: { + ...(field.admin || {}), + components: { + ...(field.admin?.components || {}), + Cell: field.admin?.components?.Cell || { + type: 'client', + Component: DefaultCell, + RenderedComponent: null, + }, + Label, + }, + }, } as ClientField, - ...cellProps?.[index], }, - components: { - Cell: field.admin?.components?.Cell || { - type: 'client', - Component: DefaultCell, - RenderedComponent: null, - }, - Heading, - }, - Label, + Heading, } acc.push(column) @@ -149,17 +158,27 @@ export const buildColumnState = (args: Args): Column[] => { sorted.unshift({ accessor: '_select', active: true, - components: { - Cell: { - type: 'client', - Component: null, - RenderedComponent: , - }, - Heading: , + cellProps: { + field: { + admin: { + components: { + Cell: { + type: 'client', + Component: null, + RenderedComponent: , + }, + Label: null, + }, + }, + } as ClientField, }, - Label: null, + Heading: , }) } + if (beforeRows) { + sorted.unshift(...beforeRows) + } + return sorted } diff --git a/packages/ui/src/elements/TableColumns/index.tsx b/packages/ui/src/elements/TableColumns/index.tsx index 684e40a063..6a934afe6d 100644 --- a/packages/ui/src/elements/TableColumns/index.tsx +++ b/packages/ui/src/elements/TableColumns/index.tsx @@ -4,6 +4,7 @@ import type { CellComponentProps, SanitizedCollectionConfig } from 'payload' import React, { createContext, useCallback, useContext, useState } from 'react' import type { ColumnPreferences } from '../../providers/ListInfo/index.js' +import type { SortColumnProps } from '../SortColumn/index.js' import type { Column } from '../Table/index.js' import { useConfig } from '../../providers/Config/index.js' @@ -13,6 +14,7 @@ import { filterFields } from './filterFields.js' import { getInitialColumns } from './getInitialColumns.js' export interface ITableColumns { + cellProps?: Partial[] columns: Column[] moveColumn: (args: { fromIndex: number; toIndex: number }) => void resetColumnsState: () => void @@ -29,29 +31,31 @@ export type ListPreferences = { } type Props = { + readonly beforeRows?: Column[] readonly cellProps?: Partial[] readonly children: React.ReactNode readonly collectionSlug: string readonly enableRowSelections?: boolean readonly listPreferences?: ListPreferences readonly preferenceKey: string + readonly sortColumnProps?: Partial } export const TableColumnsProvider: React.FC = ({ + beforeRows, cellProps, children, collectionSlug, enableRowSelections = false, listPreferences, preferenceKey, + sortColumnProps, }) => { const { config: { collections }, } = useConfig() - const collectionConfig = collections.find( - (collectionConfig) => collectionConfig.slug === collectionSlug, - ) + const collectionConfig = collections.find((c) => c.slug === collectionSlug) const { admin: { defaultColumns, useAsTitle }, @@ -67,11 +71,12 @@ export const TableColumnsProvider: React.FC = ({ const [tableColumns, setTableColumns] = React.useState(() => buildColumnState({ - cellProps, + beforeRows, columnPreferences: listPreferences?.columns, columns: initialColumns, enableRowSelections, fields, + sortColumnProps, useAsTitle, }), ) @@ -91,11 +96,9 @@ export const TableColumnsProvider: React.FC = ({ const moveColumn = useCallback( (args: { fromIndex: number; toIndex: number }) => { const { fromIndex, toIndex } = args - const withMovedColumn = [...tableColumns] const [columnToMove] = withMovedColumn.splice(fromIndex, 1) withMovedColumn.splice(toIndex, 0, columnToMove) - setTableColumns(withMovedColumn) updateColumnPreferences(withMovedColumn) }, @@ -169,11 +172,12 @@ export const TableColumnsProvider: React.FC = ({ if (currentPreferences?.columns) { setTableColumns( buildColumnState({ - cellProps, + beforeRows, columnPreferences: currentPreferences?.columns, columns: initialColumns, - enableRowSelections: true, + enableRowSelections, fields, + sortColumnProps, useAsTitle, }), ) @@ -187,16 +191,19 @@ export const TableColumnsProvider: React.FC = ({ getPreference, collectionSlug, fields, - cellProps, defaultColumns, useAsTitle, listPreferences, initialColumns, + beforeRows, + enableRowSelections, + sortColumnProps, ]) return ( { + const { + field, + field: { + name, + _path: pathFromProps, + admin: { + components: { Label }, + }, + collection, + label, + on, + }, + } = props + + const { id: docID } = useDocumentInfo() + + const { path: pathFromContext } = useFieldProps() + + const { value } = useField({ + path: pathFromContext ?? pathFromProps ?? name, + }) + + const filterOptions: Where = useMemo( + () => ({ + [on]: { + in: [docID || null], + }, + }), + [docID, on], + ) + + return ( +
+ + + + } + relationTo={collection} + /> +
+ ) +} + +export const JoinField = withCondition(JoinFieldComponent) diff --git a/packages/ui/src/fields/Relationship/select-components/SingleValue/index.tsx b/packages/ui/src/fields/Relationship/select-components/SingleValue/index.tsx index 87c4a5b477..7c32af837d 100644 --- a/packages/ui/src/fields/Relationship/select-components/SingleValue/index.tsx +++ b/packages/ui/src/fields/Relationship/select-components/SingleValue/index.tsx @@ -35,45 +35,43 @@ export const SingleValue: React.FC< const hasReadPermission = Boolean(permissions?.collections?.[relationTo]?.read?.permission) return ( - - -
-
-
{children}
- {relationTo && hasReadPermission && ( - - - - )} -
+ +
+
+
{children}
+ {relationTo && hasReadPermission && ( + + + + )}
- - +
+
) } diff --git a/packages/ui/src/fields/index.tsx b/packages/ui/src/fields/index.tsx index 990cb00942..cab49dfb0d 100644 --- a/packages/ui/src/fields/index.tsx +++ b/packages/ui/src/fields/index.tsx @@ -13,6 +13,7 @@ import { EmailField } from './Email/index.js' import { GroupField } from './Group/index.js' import { HiddenField } from './Hidden/index.js' import { JSONField } from './JSON/index.js' +import { JoinField } from './Join/index.js' import { NumberField } from './Number/index.js' import { PasswordField } from './Password/index.js' import { PointField } from './Point/index.js' @@ -44,6 +45,7 @@ export const fieldComponents: FieldTypesComponents = { email: EmailField, group: GroupField, hidden: HiddenField, + join: JoinField, json: JSONField, number: NumberField, password: PasswordField, diff --git a/packages/ui/src/hooks/usePayloadAPI.ts b/packages/ui/src/hooks/usePayloadAPI.ts index ee81c88a2c..6677289a07 100644 --- a/packages/ui/src/hooks/usePayloadAPI.ts +++ b/packages/ui/src/hooks/usePayloadAPI.ts @@ -73,6 +73,7 @@ export const usePayloadAPI: UsePayloadAPI = (url, options = {}) => { } const json = await response.json() + setData(json) setIsLoading(false) } catch (error) { diff --git a/packages/ui/src/icons/Chevron/index.scss b/packages/ui/src/icons/Chevron/index.scss index d57b6d72a1..a826dd4e82 100644 --- a/packages/ui/src/icons/Chevron/index.scss +++ b/packages/ui/src/icons/Chevron/index.scss @@ -1,6 +1,9 @@ @import '../../scss/styles'; .icon--chevron { + height: calc(var(--base) / 2); + width: calc(var(--base) / 2); + .stroke { fill: none; stroke: currentColor; @@ -8,8 +11,13 @@ vector-effect: non-scaling-stroke; } - &--size-large { + &.icon--size-large { height: var(--base); width: var(--base); } + + &.icon--size-small { + height: 8px; + width: 8px; + } } diff --git a/packages/ui/src/icons/Chevron/index.tsx b/packages/ui/src/icons/Chevron/index.tsx index 693f415251..eb102cabf9 100644 --- a/packages/ui/src/icons/Chevron/index.tsx +++ b/packages/ui/src/icons/Chevron/index.tsx @@ -3,15 +3,15 @@ import React from 'react' import './index.scss' export const ChevronIcon: React.FC<{ - className?: string - direction?: 'down' | 'left' | 'right' | 'up' - size?: 'large' | 'small' + readonly className?: string + readonly direction?: 'down' | 'left' | 'right' | 'up' + readonly size?: 'large' | 'small' }> = ({ className, direction, size }) => ( - + ) diff --git a/packages/ui/src/providers/Config/createClientConfig/collections.tsx b/packages/ui/src/providers/Config/createClientConfig/collections.tsx index 97b47d7141..5afd1dfa17 100644 --- a/packages/ui/src/providers/Config/createClientConfig/collections.tsx +++ b/packages/ui/src/providers/Config/createClientConfig/collections.tsx @@ -24,6 +24,7 @@ const serverOnlyCollectionProperties: Partial[] 'access', 'endpoints', 'custom', + 'joins', // `upload` // `admin` // are all handled separately diff --git a/packages/ui/src/providers/Config/createClientConfig/fields.tsx b/packages/ui/src/providers/Config/createClientConfig/fields.tsx index 52318ab617..3d81051dcf 100644 --- a/packages/ui/src/providers/Config/createClientConfig/fields.tsx +++ b/packages/ui/src/providers/Config/createClientConfig/fields.tsx @@ -320,6 +320,10 @@ export const createClientField = ({ break } + // case 'joins': { + // + // } + case 'select': case 'radio': { const field = clientField as RadioFieldClient | SelectFieldClient diff --git a/packages/ui/src/providers/DocumentInfo/index.tsx b/packages/ui/src/providers/DocumentInfo/index.tsx index 3c0ad5815b..b74c9119c2 100644 --- a/packages/ui/src/providers/DocumentInfo/index.tsx +++ b/packages/ui/src/providers/DocumentInfo/index.tsx @@ -39,7 +39,7 @@ export const useDocumentInfo = (): DocumentInfoContext => useContext(Context) const DocumentInfo: React.FC< { - children: React.ReactNode + readonly children: React.ReactNode } & DocumentInfoProps > = ({ children, ...props }) => { const { diff --git a/packages/ui/src/providers/DocumentInfo/types.ts b/packages/ui/src/providers/DocumentInfo/types.ts index 8b95f82f37..77c3f77f09 100644 --- a/packages/ui/src/providers/DocumentInfo/types.ts +++ b/packages/ui/src/providers/DocumentInfo/types.ts @@ -17,43 +17,43 @@ import type { import type React from 'react' export type DocumentInfoProps = { - action?: string - AfterDocument?: React.ReactNode - AfterFields?: React.ReactNode - apiURL?: string - BeforeDocument?: React.ReactNode - BeforeFields?: React.ReactNode - collectionSlug?: SanitizedCollectionConfig['slug'] - disableActions?: boolean - disableCreate?: boolean - disableLeaveWithoutSaving?: boolean - docPermissions?: DocumentPermissions - globalSlug?: SanitizedGlobalConfig['slug'] - hasPublishPermission?: boolean - hasSavePermission?: boolean - id: null | number | string - initialData?: Data - initialState?: FormState - isEditing?: boolean - onDelete?: (args: { + readonly action?: string + readonly AfterDocument?: React.ReactNode + readonly AfterFields?: React.ReactNode + readonly apiURL?: string + readonly BeforeDocument?: React.ReactNode + readonly BeforeFields?: React.ReactNode + readonly collectionSlug?: SanitizedCollectionConfig['slug'] + readonly disableActions?: boolean + readonly disableCreate?: boolean + readonly disableLeaveWithoutSaving?: boolean + readonly docPermissions?: DocumentPermissions + readonly globalSlug?: SanitizedGlobalConfig['slug'] + readonly hasPublishPermission?: boolean + readonly hasSavePermission?: boolean + readonly id: null | number | string + readonly initialData?: Data + readonly initialState?: FormState + readonly isEditing?: boolean + readonly onDelete?: (args: { collectionConfig?: ClientCollectionConfig id: string }) => Promise | void - onDrawerCreate?: () => void + readonly onDrawerCreate?: () => void /* only available if `redirectAfterDuplicate` is `false` */ - onDuplicate?: (args: { + readonly onDuplicate?: (args: { collectionConfig?: ClientCollectionConfig doc: TypeWithID }) => Promise | void - onLoadError?: (data?: any) => Promise | void - onSave?: (args: { + readonly onLoadError?: (data?: any) => Promise | void + readonly onSave?: (args: { collectionConfig?: ClientCollectionConfig doc: TypeWithID operation: 'create' | 'update' result: Data }) => Promise | void - redirectAfterDelete?: boolean - redirectAfterDuplicate?: boolean + readonly redirectAfterDelete?: boolean + readonly redirectAfterDuplicate?: boolean } export type DocumentInfoContext = { diff --git a/packages/ui/src/providers/ListQuery/index.tsx b/packages/ui/src/providers/ListQuery/index.tsx index 224f96dbbb..86ab04cce9 100644 --- a/packages/ui/src/providers/ListQuery/index.tsx +++ b/packages/ui/src/providers/ListQuery/index.tsx @@ -14,11 +14,11 @@ import { useSearchParams } from '../SearchParams/index.js' export type ColumnPreferences = Pick[] type PropHandlers = { - handlePageChange?: (page: number) => Promise | void - handlePerPageChange?: (limit: number) => Promise | void - handleSearchChange?: (search: string) => Promise | void - handleSortChange?: (sort: string) => Promise | void - handleWhereChange?: (where: Where) => Promise | void + readonly handlePageChange?: (page: number) => Promise | void + readonly handlePerPageChange?: (limit: number) => Promise | void + readonly handleSearchChange?: (search: string) => Promise | void + readonly handleSortChange?: (sort: string) => Promise | void + readonly handleWhereChange?: (where: Where) => Promise | void } type ContextHandlers = { diff --git a/packages/ui/src/utilities/deepMerge.ts b/packages/ui/src/utilities/deepMerge.ts new file mode 100644 index 0000000000..6de2acfdbd --- /dev/null +++ b/packages/ui/src/utilities/deepMerge.ts @@ -0,0 +1,25 @@ +/** + * Very simple, but fast deepMerge implementation. Only deepMerges objects, not arrays and clones everything. + * Do not use this if your object contains any complex objects like React Components, or if you would like to combine Arrays. + * If you only have simple objects and need a fast deepMerge, this is the function for you. + * + * obj2 takes precedence over obj1 - thus if obj2 has a key that obj1 also has, obj2's value will be used. + * + * @param obj1 base object + * @param obj2 object to merge "into" obj1 + */ +export function deepMergeSimple(obj1: object, obj2: object): T { + const output = { ...obj1 } + + for (const key in obj2) { + if (Object.prototype.hasOwnProperty.call(obj2, key)) { + if (typeof obj2[key] === 'object' && !Array.isArray(obj2[key]) && obj1[key]) { + output[key] = deepMergeSimple(obj1[key], obj2[key]) + } else { + output[key] = obj2[key] + } + } + } + + return output as T +} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 5a9c7c2644..f6a53f647c 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -268,6 +268,9 @@ importers: mongoose: specifier: 6.12.3 version: 6.12.3(@aws-sdk/client-sso-oidc@3.629.0(@aws-sdk/client-sts@3.629.0)) + mongoose-aggregate-paginate-v2: + specifier: 1.0.6 + version: 1.0.6 mongoose-paginate-v2: specifier: 1.7.22 version: 1.7.22 @@ -282,8 +285,8 @@ importers: specifier: workspace:* version: link:../eslint-config '@types/mongoose-aggregate-paginate-v2': - specifier: 1.0.9 - version: 1.0.9(@aws-sdk/client-sso-oidc@3.629.0(@aws-sdk/client-sts@3.629.0)) + specifier: 1.0.6 + version: 1.0.6(@aws-sdk/client-sso-oidc@3.629.0(@aws-sdk/client-sts@3.629.0)) mongodb: specifier: 4.17.1 version: 4.17.1(@aws-sdk/client-sso-oidc@3.629.0(@aws-sdk/client-sts@3.629.0)) @@ -954,7 +957,7 @@ importers: version: link:../payload ts-jest: specifier: ^29.1.0 - version: 29.2.4(@babel/core@7.25.2)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.25.2))(esbuild@0.19.12)(jest@29.7.0(@types/node@22.5.4)(babel-plugin-macros@3.1.0))(typescript@5.6.2) + version: 29.2.4(@babel/core@7.25.2)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.25.2))(jest@29.7.0(@types/node@22.5.4)(babel-plugin-macros@3.1.0))(typescript@5.6.2) packages/plugin-cloud-storage: dependencies: @@ -1057,19 +1060,6 @@ importers: specifier: workspace:* version: link:../payload - packages/plugin-relationship-object-ids: - dependencies: - mongoose: - specifier: 6.12.3 - version: 6.12.3(@aws-sdk/client-sso-oidc@3.629.0(@aws-sdk/client-sts@3.629.0)) - devDependencies: - '@payloadcms/eslint-config': - specifier: workspace:* - version: link:../eslint-config - payload: - specifier: workspace:* - version: link:../payload - packages/plugin-search: dependencies: '@payloadcms/ui': @@ -1151,7 +1141,7 @@ importers: version: link:../payload ts-jest: specifier: ^29.1.0 - version: 29.2.4(@babel/core@7.25.2)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.25.2))(esbuild@0.19.12)(jest@29.7.0(@types/node@22.5.4)(babel-plugin-macros@3.1.0))(typescript@5.6.2) + version: 29.2.4(@babel/core@7.25.2)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.25.2))(jest@29.7.0(@types/node@22.5.4)(babel-plugin-macros@3.1.0))(typescript@5.6.2) packages/plugin-seo: dependencies: @@ -1464,7 +1454,7 @@ importers: version: link:../plugin-cloud-storage uploadthing: specifier: ^6.10.1 - version: 6.13.2(express@4.19.2)(next@15.0.0-canary.104(@babel/core@7.25.2)(@playwright/test@1.46.0)(babel-plugin-macros@3.1.0)(babel-plugin-react-compiler@0.0.0-experimental-48eb8f4-20240822)(react-dom@19.0.0-rc-06d0b89e-20240801(react@19.0.0-rc-06d0b89e-20240801))(react@19.0.0-rc-06d0b89e-20240801)(sass@1.77.4)) + version: 6.13.2(express@4.19.2)(next@15.0.0-canary.104(@babel/core@7.25.2)(@playwright/test@1.46.0)(babel-plugin-macros@3.1.0)(react-dom@19.0.0-rc-06d0b89e-20240801(react@19.0.0-rc-06d0b89e-20240801))(react@19.0.0-rc-06d0b89e-20240801)(sass@1.77.4)) devDependencies: payload: specifier: workspace:* @@ -1709,9 +1699,6 @@ importers: '@payloadcms/plugin-redirects': specifier: workspace:* version: link:../packages/plugin-redirects - '@payloadcms/plugin-relationship-object-ids': - specifier: workspace:* - version: link:../packages/plugin-relationship-object-ids '@payloadcms/plugin-search': specifier: workspace:* version: link:../packages/plugin-search @@ -1825,7 +1812,7 @@ importers: version: 5.6.2 uploadthing: specifier: ^6.10.1 - version: 6.13.2(express@4.19.2)(next@15.0.0-canary.104(@babel/core@7.25.2)(@playwright/test@1.46.0)(babel-plugin-macros@3.1.0)(babel-plugin-react-compiler@0.0.0-experimental-48eb8f4-20240822)(react-dom@19.0.0-rc-06d0b89e-20240801(react@19.0.0-rc-06d0b89e-20240801))(react@19.0.0-rc-06d0b89e-20240801)(sass@1.77.4)) + version: 6.13.2(express@4.19.2)(next@15.0.0-canary.104(@babel/core@7.25.2)(@playwright/test@1.46.0)(babel-plugin-macros@3.1.0)(react-dom@19.0.0-rc-06d0b89e-20240801(react@19.0.0-rc-06d0b89e-20240801))(react@19.0.0-rc-06d0b89e-20240801)(sass@1.77.4)) uuid: specifier: 10.0.0 version: 10.0.0 @@ -4446,8 +4433,8 @@ packages: '@types/minimist@1.2.5': resolution: {integrity: sha512-hov8bUuiLiyFPGyFPE1lwWhmzYbirOXQNNo40+y3zow8aFVTeyn3VWL0VFFfdNddA8S4Vf0Tc062rzyNr7Paag==} - '@types/mongoose-aggregate-paginate-v2@1.0.9': - resolution: {integrity: sha512-YKDKtSuE1vzMY/SAtlDTWJr52UhTYdrOypCqyx7T2xFYEWfybLnV98m4ZoVgYJH0XowVl7Y2Gnn6p1sF+3NbLA==} + '@types/mongoose-aggregate-paginate-v2@1.0.6': + resolution: {integrity: sha512-EXkgB/nJ1x3UcoEk1pD67+uXtijveHZtbg2H3wtZk2SnCFBB5cMw7MQRu9/GgyEP/KKXuWFt1JABv7m+Kls0ug==} '@types/node@22.5.4': resolution: {integrity: sha512-FDuKUJQm/ju9fT/SeX/6+gBzoPzlVCzfzmGkwKvRHQVxi4BntVbyIwf6a4Xn62mrvndLiml6z/UBXIdEVjQLXg==} @@ -7169,7 +7156,6 @@ packages: libsql@0.3.19: resolution: {integrity: sha512-Aj5cQ5uk/6fHdmeW0TiXK42FqUlwx7ytmMLPSaUQPin5HKKKuUPD62MAbN4OEweGBBI7q1BekoEN4gPUEL6MZA==} - cpu: [x64, arm64, wasm32] os: [darwin, linux, win32] lie@3.1.1: @@ -7456,6 +7442,10 @@ packages: snappy: optional: true + mongoose-aggregate-paginate-v2@1.0.6: + resolution: {integrity: sha512-UuALu+mjhQa1K9lMQvjLL3vm3iALvNw8PQNIh2gp1b+tO5hUa0NC0Wf6/8QrT9PSJVTihXaD8hQVy3J4e0jO0Q==} + engines: {node: '>=4.0.0'} + mongoose-paginate-v2@1.7.22: resolution: {integrity: sha512-xW5GugkE21DJiu9e13EOxKt4ejEKQkRP/S1PkkXRjnk2rRZVKBcld1nPV+VJ/YCPfm8hb3sz9OvI7O38RmixkA==} engines: {node: '>=4.0.0'} @@ -13071,7 +13061,7 @@ snapshots: '@types/minimist@1.2.5': {} - '@types/mongoose-aggregate-paginate-v2@1.0.9(@aws-sdk/client-sso-oidc@3.629.0(@aws-sdk/client-sts@3.629.0))': + '@types/mongoose-aggregate-paginate-v2@1.0.6(@aws-sdk/client-sso-oidc@3.629.0(@aws-sdk/client-sts@3.629.0))': dependencies: mongoose: 6.12.3(@aws-sdk/client-sso-oidc@3.629.0(@aws-sdk/client-sts@3.629.0)) transitivePeerDependencies: @@ -16713,6 +16703,8 @@ snapshots: '@aws-sdk/credential-providers': 3.630.0(@aws-sdk/client-sso-oidc@3.629.0(@aws-sdk/client-sts@3.629.0)) '@mongodb-js/saslprep': 1.1.8 + mongoose-aggregate-paginate-v2@1.0.6: {} + mongoose-paginate-v2@1.7.22: {} mongoose@6.12.3(@aws-sdk/client-sso-oidc@3.629.0(@aws-sdk/client-sts@3.629.0)): @@ -18389,7 +18381,7 @@ snapshots: optionalDependencies: typescript: 5.6.2 - ts-jest@29.2.4(@babel/core@7.25.2)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.25.2))(esbuild@0.19.12)(jest@29.7.0(@types/node@22.5.4)(babel-plugin-macros@3.1.0))(typescript@5.6.2): + ts-jest@29.2.4(@babel/core@7.25.2)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.25.2))(jest@29.7.0(@types/node@22.5.4)(babel-plugin-macros@3.1.0))(typescript@5.6.2): dependencies: bs-logger: 0.2.6 ejs: 3.1.10 @@ -18407,7 +18399,6 @@ snapshots: '@jest/transform': 29.7.0 '@jest/types': 29.6.3 babel-jest: 29.7.0(@babel/core@7.25.2) - esbuild: 0.19.12 ts-pattern@5.3.1: {} @@ -18575,7 +18566,7 @@ snapshots: escalade: 3.1.2 picocolors: 1.0.1 - uploadthing@6.13.2(express@4.19.2)(next@15.0.0-canary.104(@babel/core@7.25.2)(@playwright/test@1.46.0)(babel-plugin-macros@3.1.0)(babel-plugin-react-compiler@0.0.0-experimental-48eb8f4-20240822)(react-dom@19.0.0-rc-06d0b89e-20240801(react@19.0.0-rc-06d0b89e-20240801))(react@19.0.0-rc-06d0b89e-20240801)(sass@1.77.4)): + uploadthing@6.13.2(express@4.19.2)(next@15.0.0-canary.104(@babel/core@7.25.2)(@playwright/test@1.46.0)(babel-plugin-macros@3.1.0)(react-dom@19.0.0-rc-06d0b89e-20240801(react@19.0.0-rc-06d0b89e-20240801))(react@19.0.0-rc-06d0b89e-20240801)(sass@1.77.4)): dependencies: '@effect/schema': 0.68.12(effect@3.4.5) '@uploadthing/mime-types': 0.2.10 diff --git a/scripts/lib/publishList.ts b/scripts/lib/publishList.ts index 426dd033b7..0c8c977a84 100644 --- a/scripts/lib/publishList.ts +++ b/scripts/lib/publishList.ts @@ -44,7 +44,6 @@ export const packagePublishList = [ 'plugin-search', 'plugin-seo', 'plugin-stripe', - 'plugin-relationship-object-ids', // Unpublished // 'plugin-sentry' diff --git a/templates/website/pnpm-lock.yaml b/templates/website/pnpm-lock.yaml index e976776dd0..5d9ea1a118 100644 --- a/templates/website/pnpm-lock.yaml +++ b/templates/website/pnpm-lock.yaml @@ -1,4 +1,4 @@ -lockfileVersion: '6.0' +lockfileVersion: '9.0' settings: autoInstallPeers: true @@ -8,188 +8,4589 @@ overrides: '@types/react': npm:types-react@19.0.0-rc.0 '@types/react-dom': npm:types-react-dom@19.0.0-rc.0 -dependencies: - '@payloadcms/db-mongodb': - specifier: beta - version: 3.0.0-beta.106(@aws-sdk/client-sso-oidc@3.651.1)(payload@3.0.0-beta.106) - '@payloadcms/live-preview-react': - specifier: beta - version: 3.0.0-beta.106(react-dom@19.0.0-rc-06d0b89e-20240801)(react@19.0.0-rc-06d0b89e-20240801) - '@payloadcms/next': - specifier: beta - version: 3.0.0-beta.106(graphql@16.9.0)(monaco-editor@0.51.0)(next@15.0.0-canary.104)(payload@3.0.0-beta.106)(react-dom@19.0.0-rc-06d0b89e-20240801)(react@19.0.0-rc-06d0b89e-20240801)(types-react@19.0.0-rc.0)(typescript@5.6.2) - '@payloadcms/plugin-cloud': - specifier: beta - version: 3.0.0-beta.106(@aws-sdk/client-sso-oidc@3.651.1)(payload@3.0.0-beta.106) - '@payloadcms/plugin-form-builder': - specifier: beta - version: 3.0.0-beta.106(monaco-editor@0.51.0)(next@15.0.0-canary.104)(payload@3.0.0-beta.106)(react-dom@19.0.0-rc-06d0b89e-20240801)(react@19.0.0-rc-06d0b89e-20240801)(types-react@19.0.0-rc.0)(typescript@5.6.2) - '@payloadcms/plugin-nested-docs': - specifier: beta - version: 3.0.0-beta.106(payload@3.0.0-beta.106) - '@payloadcms/plugin-redirects': - specifier: beta - version: 3.0.0-beta.106(payload@3.0.0-beta.106) - '@payloadcms/plugin-seo': - specifier: beta - version: 3.0.0-beta.106(monaco-editor@0.51.0)(next@15.0.0-canary.104)(payload@3.0.0-beta.106)(react-dom@19.0.0-rc-06d0b89e-20240801)(react@19.0.0-rc-06d0b89e-20240801)(types-react@19.0.0-rc.0)(typescript@5.6.2) - '@payloadcms/richtext-lexical': - specifier: beta - version: 3.0.0-beta.106(@faceless-ui/modal@3.0.0-beta.2)(@faceless-ui/scroll-info@2.0.0-beta.0)(@lexical/headless@0.17.0)(@lexical/link@0.17.0)(@lexical/list@0.17.0)(@lexical/mark@0.17.0)(@lexical/markdown@0.17.0)(@lexical/react@0.17.0)(@lexical/rich-text@0.17.0)(@lexical/selection@0.17.0)(@lexical/table@0.17.0)(@lexical/utils@0.17.0)(@payloadcms/next@3.0.0-beta.106)(lexical@0.17.0)(monaco-editor@0.51.0)(next@15.0.0-canary.104)(payload@3.0.0-beta.106)(react-dom@19.0.0-rc-06d0b89e-20240801)(react@19.0.0-rc-06d0b89e-20240801)(types-react@19.0.0-rc.0)(typescript@5.6.2) - '@payloadcms/ui': - specifier: beta - version: 3.0.0-beta.106(monaco-editor@0.51.0)(next@15.0.0-canary.104)(payload@3.0.0-beta.106)(react-dom@19.0.0-rc-06d0b89e-20240801)(react@19.0.0-rc-06d0b89e-20240801)(types-react@19.0.0-rc.0)(typescript@5.6.2) - '@radix-ui/react-checkbox': - specifier: ^1.0.4 - version: 1.1.1(react-dom@19.0.0-rc-06d0b89e-20240801)(react@19.0.0-rc-06d0b89e-20240801)(types-react-dom@19.0.0-rc.0)(types-react@19.0.0-rc.0) - '@radix-ui/react-label': - specifier: ^2.0.2 - version: 2.1.0(react-dom@19.0.0-rc-06d0b89e-20240801)(react@19.0.0-rc-06d0b89e-20240801)(types-react-dom@19.0.0-rc.0)(types-react@19.0.0-rc.0) - '@radix-ui/react-select': - specifier: ^2.0.0 - version: 2.1.1(react-dom@19.0.0-rc-06d0b89e-20240801)(react@19.0.0-rc-06d0b89e-20240801)(types-react-dom@19.0.0-rc.0)(types-react@19.0.0-rc.0) - '@radix-ui/react-slot': - specifier: ^1.0.2 - version: 1.1.0(react@19.0.0-rc-06d0b89e-20240801)(types-react@19.0.0-rc.0) - class-variance-authority: - specifier: ^0.7.0 - version: 0.7.0 - clsx: - specifier: ^2.1.1 - version: 2.1.1 - cross-env: - specifier: ^7.0.3 - version: 7.0.3 - geist: - specifier: ^1.3.0 - version: 1.3.1(next@15.0.0-canary.104) - graphql: - specifier: ^16.8.2 - version: 16.9.0 - jsonwebtoken: - specifier: 9.0.2 - version: 9.0.2 - lexical: - specifier: 0.17.0 - version: 0.17.0 - lucide-react: - specifier: ^0.378.0 - version: 0.378.0(react@19.0.0-rc-06d0b89e-20240801) - next: - specifier: 15.0.0-canary.104 - version: 15.0.0-canary.104(react-dom@19.0.0-rc-06d0b89e-20240801)(react@19.0.0-rc-06d0b89e-20240801) - payload: - specifier: beta - version: 3.0.0-beta.106(graphql@16.9.0)(monaco-editor@0.51.0)(react-dom@19.0.0-rc-06d0b89e-20240801)(react@19.0.0-rc-06d0b89e-20240801)(typescript@5.6.2) - payload-admin-bar: - specifier: ^1.0.6 - version: 1.0.6(react-dom@19.0.0-rc-06d0b89e-20240801)(react@19.0.0-rc-06d0b89e-20240801) - prism-react-renderer: - specifier: ^2.3.1 - version: 2.4.0(react@19.0.0-rc-06d0b89e-20240801) - react: - specifier: 19.0.0-rc-06d0b89e-20240801 - version: 19.0.0-rc-06d0b89e-20240801 - react-dom: - specifier: 19.0.0-rc-06d0b89e-20240801 - version: 19.0.0-rc-06d0b89e-20240801(react@19.0.0-rc-06d0b89e-20240801) - react-hook-form: - specifier: 7.45.4 - version: 7.45.4(react@19.0.0-rc-06d0b89e-20240801) - sharp: - specifier: 0.32.6 - version: 0.32.6 - tailwind-merge: - specifier: ^2.3.0 - version: 2.5.2 - tailwindcss-animate: - specifier: ^1.0.7 - version: 1.0.7(tailwindcss@3.4.11) +importers: -devDependencies: - '@next/eslint-plugin-next': - specifier: ^13.1.6 - version: 13.5.6 - '@payloadcms/eslint-config': - specifier: ^1.1.1 - version: 1.1.1(typescript@5.6.2) - '@tailwindcss/typography': - specifier: ^0.5.13 - version: 0.5.15(tailwindcss@3.4.11) - '@types/escape-html': - specifier: ^1.0.2 - version: 1.0.4 - '@types/jsonwebtoken': - specifier: ^9.0.6 - version: 9.0.6 - '@types/node': - specifier: 22.5.4 - version: 22.5.4 - '@types/react': - specifier: npm:types-react@19.0.0-rc.0 - version: /types-react@19.0.0-rc.0 - '@types/react-dom': - specifier: npm:types-react-dom@19.0.0-rc.0 - version: /types-react-dom@19.0.0-rc.0 - autoprefixer: - specifier: ^10.4.19 - version: 10.4.20(postcss@8.4.47) - copyfiles: - specifier: ^2.4.1 - version: 2.4.1 - eslint: - specifier: ^8 - version: 8.57.0 - eslint-config-next: - specifier: 15.0.0-canary.104 - version: 15.0.0-canary.104(eslint@8.57.0)(typescript@5.6.2) - postcss: - specifier: ^8.4.38 - version: 8.4.47 - prettier: - specifier: ^3.0.3 - version: 3.3.3 - tailwindcss: - specifier: ^3.4.3 - version: 3.4.11 - typescript: - specifier: 5.6.2 - version: 5.6.2 + .: + dependencies: + '@payloadcms/db-mongodb': + specifier: beta + version: 3.0.0-beta.106(@aws-sdk/client-sso-oidc@3.651.1)(payload@3.0.0-beta.106) + '@payloadcms/live-preview-react': + specifier: beta + version: 3.0.0-beta.106(react-dom@19.0.0-rc-06d0b89e-20240801)(react@19.0.0-rc-06d0b89e-20240801) + '@payloadcms/next': + specifier: beta + version: 3.0.0-beta.106(graphql@16.9.0)(monaco-editor@0.51.0)(next@15.0.0-canary.104)(payload@3.0.0-beta.106)(react-dom@19.0.0-rc-06d0b89e-20240801)(react@19.0.0-rc-06d0b89e-20240801)(types-react@19.0.0-rc.0)(typescript@5.6.2) + '@payloadcms/plugin-cloud': + specifier: beta + version: 3.0.0-beta.106(@aws-sdk/client-sso-oidc@3.651.1)(payload@3.0.0-beta.106) + '@payloadcms/plugin-form-builder': + specifier: beta + version: 3.0.0-beta.106(monaco-editor@0.51.0)(next@15.0.0-canary.104)(payload@3.0.0-beta.106)(react-dom@19.0.0-rc-06d0b89e-20240801)(react@19.0.0-rc-06d0b89e-20240801)(types-react@19.0.0-rc.0)(typescript@5.6.2) + '@payloadcms/plugin-nested-docs': + specifier: beta + version: 3.0.0-beta.106(payload@3.0.0-beta.106) + '@payloadcms/plugin-redirects': + specifier: beta + version: 3.0.0-beta.106(payload@3.0.0-beta.106) + '@payloadcms/plugin-seo': + specifier: beta + version: 3.0.0-beta.106(monaco-editor@0.51.0)(next@15.0.0-canary.104)(payload@3.0.0-beta.106)(react-dom@19.0.0-rc-06d0b89e-20240801)(react@19.0.0-rc-06d0b89e-20240801)(types-react@19.0.0-rc.0)(typescript@5.6.2) + '@payloadcms/richtext-lexical': + specifier: beta + version: 3.0.0-beta.106(@faceless-ui/modal@3.0.0-beta.2)(@faceless-ui/scroll-info@2.0.0-beta.0)(@lexical/headless@0.17.0)(@lexical/link@0.17.0)(@lexical/list@0.17.0)(@lexical/mark@0.17.0)(@lexical/markdown@0.17.0)(@lexical/react@0.17.0)(@lexical/rich-text@0.17.0)(@lexical/selection@0.17.0)(@lexical/table@0.17.0)(@lexical/utils@0.17.0)(@payloadcms/next@3.0.0-beta.106)(lexical@0.17.0)(monaco-editor@0.51.0)(next@15.0.0-canary.104)(payload@3.0.0-beta.106)(react-dom@19.0.0-rc-06d0b89e-20240801)(react@19.0.0-rc-06d0b89e-20240801)(types-react@19.0.0-rc.0)(typescript@5.6.2) + '@payloadcms/ui': + specifier: beta + version: 3.0.0-beta.106(monaco-editor@0.51.0)(next@15.0.0-canary.104)(payload@3.0.0-beta.106)(react-dom@19.0.0-rc-06d0b89e-20240801)(react@19.0.0-rc-06d0b89e-20240801)(types-react@19.0.0-rc.0)(typescript@5.6.2) + '@radix-ui/react-checkbox': + specifier: ^1.0.4 + version: 1.1.1(react-dom@19.0.0-rc-06d0b89e-20240801)(react@19.0.0-rc-06d0b89e-20240801)(types-react-dom@19.0.0-rc.0)(types-react@19.0.0-rc.0) + '@radix-ui/react-label': + specifier: ^2.0.2 + version: 2.1.0(react-dom@19.0.0-rc-06d0b89e-20240801)(react@19.0.0-rc-06d0b89e-20240801)(types-react-dom@19.0.0-rc.0)(types-react@19.0.0-rc.0) + '@radix-ui/react-select': + specifier: ^2.0.0 + version: 2.1.1(react-dom@19.0.0-rc-06d0b89e-20240801)(react@19.0.0-rc-06d0b89e-20240801)(types-react-dom@19.0.0-rc.0)(types-react@19.0.0-rc.0) + '@radix-ui/react-slot': + specifier: ^1.0.2 + version: 1.1.0(react@19.0.0-rc-06d0b89e-20240801)(types-react@19.0.0-rc.0) + class-variance-authority: + specifier: ^0.7.0 + version: 0.7.0 + clsx: + specifier: ^2.1.1 + version: 2.1.1 + cross-env: + specifier: ^7.0.3 + version: 7.0.3 + geist: + specifier: ^1.3.0 + version: 1.3.1(next@15.0.0-canary.104) + graphql: + specifier: ^16.8.2 + version: 16.9.0 + jsonwebtoken: + specifier: 9.0.2 + version: 9.0.2 + lexical: + specifier: 0.17.0 + version: 0.17.0 + lucide-react: + specifier: ^0.378.0 + version: 0.378.0(react@19.0.0-rc-06d0b89e-20240801) + next: + specifier: 15.0.0-canary.104 + version: 15.0.0-canary.104(react-dom@19.0.0-rc-06d0b89e-20240801)(react@19.0.0-rc-06d0b89e-20240801) + payload: + specifier: beta + version: 3.0.0-beta.106(graphql@16.9.0)(monaco-editor@0.51.0)(react-dom@19.0.0-rc-06d0b89e-20240801)(react@19.0.0-rc-06d0b89e-20240801)(typescript@5.6.2) + payload-admin-bar: + specifier: ^1.0.6 + version: 1.0.6(react-dom@19.0.0-rc-06d0b89e-20240801)(react@19.0.0-rc-06d0b89e-20240801) + prism-react-renderer: + specifier: ^2.3.1 + version: 2.4.0(react@19.0.0-rc-06d0b89e-20240801) + react: + specifier: 19.0.0-rc-06d0b89e-20240801 + version: 19.0.0-rc-06d0b89e-20240801 + react-dom: + specifier: 19.0.0-rc-06d0b89e-20240801 + version: 19.0.0-rc-06d0b89e-20240801(react@19.0.0-rc-06d0b89e-20240801) + react-hook-form: + specifier: 7.45.4 + version: 7.45.4(react@19.0.0-rc-06d0b89e-20240801) + sharp: + specifier: 0.32.6 + version: 0.32.6 + tailwind-merge: + specifier: ^2.3.0 + version: 2.5.2 + tailwindcss-animate: + specifier: ^1.0.7 + version: 1.0.7(tailwindcss@3.4.11) + devDependencies: + '@next/eslint-plugin-next': + specifier: ^13.1.6 + version: 13.5.6 + '@payloadcms/eslint-config': + specifier: ^1.1.1 + version: 1.1.1(typescript@5.6.2) + '@tailwindcss/typography': + specifier: ^0.5.13 + version: 0.5.15(tailwindcss@3.4.11) + '@types/escape-html': + specifier: ^1.0.2 + version: 1.0.4 + '@types/jsonwebtoken': + specifier: ^9.0.6 + version: 9.0.6 + '@types/node': + specifier: 22.5.4 + version: 22.5.4 + '@types/react': + specifier: npm:types-react@19.0.0-rc.0 + version: types-react@19.0.0-rc.0 + '@types/react-dom': + specifier: npm:types-react-dom@19.0.0-rc.0 + version: types-react-dom@19.0.0-rc.0 + autoprefixer: + specifier: ^10.4.19 + version: 10.4.20(postcss@8.4.47) + copyfiles: + specifier: ^2.4.1 + version: 2.4.1 + eslint: + specifier: ^8 + version: 8.57.0 + eslint-config-next: + specifier: 15.0.0-canary.104 + version: 15.0.0-canary.104(eslint@8.57.0)(typescript@5.6.2) + postcss: + specifier: ^8.4.38 + version: 8.4.47 + prettier: + specifier: ^3.0.3 + version: 3.3.3 + tailwindcss: + specifier: ^3.4.3 + version: 3.4.11 + typescript: + specifier: 5.6.2 + version: 5.6.2 packages: - /@alloc/quick-lru@5.2.0: + '@alloc/quick-lru@5.2.0': resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==} engines: {node: '>=10'} - /@apidevtools/json-schema-ref-parser@11.7.0: + '@apidevtools/json-schema-ref-parser@11.7.0': resolution: {integrity: sha512-pRrmXMCwnmrkS3MLgAIW5dXRzeTv6GLjkjb4HmxNnvAKXN1Nfzp4KmGADBQvlVUcqi+a5D+hfGDLLnd5NnYxog==} engines: {node: '>= 16'} + + '@aws-crypto/crc32@5.2.0': + resolution: {integrity: sha512-nLbCWqQNgUiwwtFsen1AdzAtvuLRsQS8rYgMuxCrdKf9kOssamGLuPwyTY9wyYblNr9+1XM8v6zoDTPPSIeANg==} + engines: {node: '>=16.0.0'} + + '@aws-crypto/crc32c@5.2.0': + resolution: {integrity: sha512-+iWb8qaHLYKrNvGRbiYRHSdKRWhto5XlZUEBwDjYNf+ly5SVYG6zEoYIdxvf5R3zyeP16w4PLBn3rH1xc74Rag==} + + '@aws-crypto/sha1-browser@5.2.0': + resolution: {integrity: sha512-OH6lveCFfcDjX4dbAvCFSYUjJZjDr/3XJ3xHtjn3Oj5b9RjojQo8npoLeA/bNwkOkrSQ0wgrHzXk4tDRxGKJeg==} + + '@aws-crypto/sha256-browser@5.2.0': + resolution: {integrity: sha512-AXfN/lGotSQwu6HNcEsIASo7kWXZ5HYWvfOmSNKDsEqC4OashTp8alTmaz+F7TC2L083SFv5RdB+qU3Vs1kZqw==} + + '@aws-crypto/sha256-js@1.2.2': + resolution: {integrity: sha512-Nr1QJIbW/afYYGzYvrF70LtaHrIRtd4TNAglX8BvlfxJLZ45SAmueIKYl5tWoNBPzp65ymXGFK0Bb1vZUpuc9g==} + + '@aws-crypto/sha256-js@5.2.0': + resolution: {integrity: sha512-FFQQyu7edu4ufvIZ+OadFpHHOt+eSTBaYaki44c+akjg7qZg9oOQeLlk77F6tSYqjDAFClrHJk9tMf0HdVyOvA==} + engines: {node: '>=16.0.0'} + + '@aws-crypto/supports-web-crypto@5.2.0': + resolution: {integrity: sha512-iAvUotm021kM33eCdNfwIN//F77/IADDSs58i+MDaOqFrVjZo9bAal0NK7HurRuWLLpF1iLX7gbWrjHjeo+YFg==} + + '@aws-crypto/util@1.2.2': + resolution: {integrity: sha512-H8PjG5WJ4wz0UXAFXeJjWCW1vkvIJ3qUUD+rGRwJ2/hj+xT58Qle2MTql/2MGzkU+1JLAFuR6aJpLAjHwhmwwg==} + + '@aws-crypto/util@5.2.0': + resolution: {integrity: sha512-4RkU9EsI6ZpBve5fseQlGNUWKMa1RLPQ1dnjnQoe07ldfIzcsGb5hC5W0Dm7u423KWzawlrpbjXBrXCEv9zazQ==} + + '@aws-sdk/client-cognito-identity@3.651.1': + resolution: {integrity: sha512-FFTWI8uHXzsorQcAtPcvuXkH29sqFXVZa86UUvIrcd6kudakkUBeYDID2KYQm0FP/9uVH4xBBELHRC8PjEGmLw==} + engines: {node: '>=16.0.0'} + + '@aws-sdk/client-s3@3.651.1': + resolution: {integrity: sha512-xNm+ixNRcotyrHgjUGGEyara6kCKgDdW2EVjHBZa5T+tbmtyqezwH3UzbSDZ6MlNoLhJMfR7ozuwYTIOARoBfA==} + engines: {node: '>=16.0.0'} + + '@aws-sdk/client-sso-oidc@3.651.1': + resolution: {integrity: sha512-PKwAyTJW8pgaPIXm708haIZWBAwNycs25yNcD7OQ3NLcmgGxvrx6bSlhPEGcvwdTYwQMJsdx8ls+khlYbLqTvQ==} + engines: {node: '>=16.0.0'} + peerDependencies: + '@aws-sdk/client-sts': ^3.651.1 + + '@aws-sdk/client-sso@3.651.1': + resolution: {integrity: sha512-Fm8PoMgiBKmmKrY6QQUGj/WW6eIiQqC1I0AiVXfO+Sqkmxcg3qex+CZBAYrTuIDnvnc/89f9N4mdL8V9DRn03Q==} + engines: {node: '>=16.0.0'} + + '@aws-sdk/client-sts@3.651.1': + resolution: {integrity: sha512-4X2RqLqeDuVLk+Omt4X+h+Fa978Wn+zek/AM4HSPi4C5XzRBEFLRRtOQUvkETvIjbEwTYQhm0LdgzcBH4bUqIg==} + engines: {node: '>=16.0.0'} + + '@aws-sdk/core@3.651.1': + resolution: {integrity: sha512-eqOq3W39K+5QTP5GAXtmP2s9B7hhM2pVz8OPe5tqob8o1xQgkwdgHerf3FoshO9bs0LDxassU/fUSz1wlwqfqg==} + engines: {node: '>=16.0.0'} + + '@aws-sdk/credential-provider-cognito-identity@3.651.1': + resolution: {integrity: sha512-tvrLvW+PxeJiw2cOc+LwJ0q86TGbXRul12jGswZWG7N71Ybr1s+e9//VeR8UwlxVCJOnm1FiWiWEd5WQmn25sQ==} + engines: {node: '>=16.0.0'} + + '@aws-sdk/credential-provider-env@3.649.0': + resolution: {integrity: sha512-tViwzM1dauksA3fdRjsg0T8mcHklDa8EfveyiQKK6pUJopkqV6FQx+X5QNda0t/LrdEVlFZvwHNdXqOEfc83TA==} + engines: {node: '>=16.0.0'} + + '@aws-sdk/credential-provider-http@3.649.0': + resolution: {integrity: sha512-ODAJ+AJJq6ozbns6ejGbicpsQ0dyMOpnGlg0J9J0jITQ05DKQZ581hdB8APDOZ9N8FstShP6dLZflSj8jb5fNA==} + engines: {node: '>=16.0.0'} + + '@aws-sdk/credential-provider-ini@3.651.1': + resolution: {integrity: sha512-yOzPC3GbwLZ8IYzke4fy70ievmunnBUni/MOXFE8c9kAIV+/RMC7IWx14nAAZm0gAcY+UtCXvBVZprFqmctfzA==} + engines: {node: '>=16.0.0'} + peerDependencies: + '@aws-sdk/client-sts': ^3.651.1 + + '@aws-sdk/credential-provider-node@3.651.1': + resolution: {integrity: sha512-QKA74Qs83FTUz3jS39kBuNbLAnm6cgDqomm7XS/BkYgtUq+1lI9WL97astNIuoYvumGIS58kuIa+I3ycOA4wgw==} + engines: {node: '>=16.0.0'} + + '@aws-sdk/credential-provider-process@3.649.0': + resolution: {integrity: sha512-6VYPQpEVpU+6DDS/gLoI40ppuNM5RPIEprK30qZZxnhTr5wyrGOeJ7J7wbbwPOZ5dKwta290BiJDU2ipV8Y9BQ==} + engines: {node: '>=16.0.0'} + + '@aws-sdk/credential-provider-sso@3.651.1': + resolution: {integrity: sha512-7jeU+Jbn65aDaNjkjWDQcXwjNTzpYNKovkSSRmfVpP5WYiKerVS5mrfg3RiBeiArou5igCUtYcOKlRJiGRO47g==} + engines: {node: '>=16.0.0'} + + '@aws-sdk/credential-provider-web-identity@3.649.0': + resolution: {integrity: sha512-XVk3WsDa0g3kQFPmnCH/LaCtGY/0R2NDv7gscYZSXiBZcG/fixasglTprgWSp8zcA0t7tEIGu9suyjz8ZwhymQ==} + engines: {node: '>=16.0.0'} + peerDependencies: + '@aws-sdk/client-sts': ^3.649.0 + + '@aws-sdk/credential-providers@3.651.1': + resolution: {integrity: sha512-Jv9WikitkarMbW+SaQETJ4/cNapRrsmS2GzU+axc9szqnY+fO6TFcFRB24AvdqCP1uNNasYsbCl/tryZSN/pNg==} + engines: {node: '>=16.0.0'} + + '@aws-sdk/lib-storage@3.651.1': + resolution: {integrity: sha512-IFV7qqg9ktJAa94VD4Li1L/2MdjuskHwAo9jYYd1QZDmZb8UZG3ZrO0zzB6lc5Z4JZADscSVdUaZLSMCkz9U0g==} + engines: {node: '>=16.0.0'} + peerDependencies: + '@aws-sdk/client-s3': ^3.651.1 + + '@aws-sdk/middleware-bucket-endpoint@3.649.0': + resolution: {integrity: sha512-ZdDICtUU4YZkrVllTUOH1Fj/F3WShLhkfNKJE3HJ/yj6pS8JS9P2lWzHiHkHiidjrHSxc6NuBo6vuZ+182XLbw==} + engines: {node: '>=16.0.0'} + + '@aws-sdk/middleware-expect-continue@3.649.0': + resolution: {integrity: sha512-pW2id/mWNd+L0/hZKp5yL3J+8rTwsamu9E69Hc5pM3qTF4K4DTZZ+A0sQbY6duIvZvc8IbQHbSMulBOLyWNP3A==} + engines: {node: '>=16.0.0'} + + '@aws-sdk/middleware-flexible-checksums@3.651.1': + resolution: {integrity: sha512-cFlXSzhdRKU1vOFTIYC3HzkN7Dwwcf07rKU1sB/PrDy4ztLhGgAwvcRwj2AqErZB62C5AdN4l7peB1Iw/oSxRQ==} + engines: {node: '>=16.0.0'} + + '@aws-sdk/middleware-host-header@3.649.0': + resolution: {integrity: sha512-PjAe2FocbicHVgNNwdSZ05upxIO7AgTPFtQLpnIAmoyzMcgv/zNB5fBn3uAnQSAeEPPCD+4SYVEUD1hw1ZBvEg==} + engines: {node: '>=16.0.0'} + + '@aws-sdk/middleware-location-constraint@3.649.0': + resolution: {integrity: sha512-O9AXhaFUQx34UTnp/cKCcaWW/IVk4mntlWfFjsIxvRatamKaY33b5fOiakGG+J1t0QFK0niDBSvOYUR1fdlHzw==} + engines: {node: '>=16.0.0'} + + '@aws-sdk/middleware-logger@3.649.0': + resolution: {integrity: sha512-qdqRx6q7lYC6KL/NT9x3ShTL0TBuxdkCczGzHzY3AnOoYUjnCDH7Vlq867O6MAvb4EnGNECFzIgtkZkQ4FhY5w==} + engines: {node: '>=16.0.0'} + + '@aws-sdk/middleware-recursion-detection@3.649.0': + resolution: {integrity: sha512-IPnO4wlmaLRf6IYmJW2i8gJ2+UPXX0hDRv1it7Qf8DpBW+lGyF2rnoN7NrFX0WIxdGOlJF1RcOr/HjXb2QeXfQ==} + engines: {node: '>=16.0.0'} + + '@aws-sdk/middleware-sdk-s3@3.651.1': + resolution: {integrity: sha512-4BameU35aBSzrm3L/Iphc6vFLRhz6sBwgQf09mqPA2ZlX/YFqVe8HbS8wM4DG02W8A2MRTnHXRIfFoOrErp2sw==} + engines: {node: '>=16.0.0'} + + '@aws-sdk/middleware-ssec@3.649.0': + resolution: {integrity: sha512-r/WBIpX+Kcx+AV5vJ+LbdDOuibk7spBqcFK2LytQjOZKPksZNRAM99khbFe9vr9S1+uDmCLVjAVkIfQ5seJrOw==} + engines: {node: '>=16.0.0'} + + '@aws-sdk/middleware-user-agent@3.649.0': + resolution: {integrity: sha512-q6sO10dnCXoxe9thobMJxekhJumzd1j6dxcE1+qJdYKHJr6yYgWbogJqrLCpWd30w0lEvnuAHK8lN2kWLdJxJw==} + engines: {node: '>=16.0.0'} + + '@aws-sdk/region-config-resolver@3.649.0': + resolution: {integrity: sha512-xURBvdQXvRvca5Du8IlC5FyCj3pkw8Z75+373J3Wb+vyg8GjD14HfKk1Je1HCCQDyIE9VB/scYDcm9ri0ppePw==} + engines: {node: '>=16.0.0'} + + '@aws-sdk/signature-v4-multi-region@3.651.1': + resolution: {integrity: sha512-aLPCMq4c/A9DmdZLhufWOgfHN2Vgft65dB2tfbATjs6kZjusSaDFxWzjmWX3y8i2ZQ+vU0nAkkWIHFJdf+47fA==} + engines: {node: '>=16.0.0'} + + '@aws-sdk/token-providers@3.649.0': + resolution: {integrity: sha512-ZBqr+JuXI9RiN+4DSZykMx5gxpL8Dr3exIfFhxMiwAP3DQojwl0ub8ONjMuAjq9OvmX6n+jHZL6fBnNgnNFC8w==} + engines: {node: '>=16.0.0'} + peerDependencies: + '@aws-sdk/client-sso-oidc': ^3.649.0 + + '@aws-sdk/types@3.649.0': + resolution: {integrity: sha512-PuPw8RysbhJNlaD2d/PzOTf8sbf4Dsn2b7hwyGh7YVG3S75yTpxSAZxrnhKsz9fStgqFmnw/jUfV/G+uQAeTVw==} + engines: {node: '>=16.0.0'} + + '@aws-sdk/util-arn-parser@3.568.0': + resolution: {integrity: sha512-XUKJWWo+KOB7fbnPP0+g/o5Ulku/X53t7i/h+sPHr5xxYTJJ9CYnbToo95mzxe7xWvkLrsNtJ8L+MnNn9INs2w==} + engines: {node: '>=16.0.0'} + + '@aws-sdk/util-endpoints@3.649.0': + resolution: {integrity: sha512-bZI1Wc3R/KibdDVWFxX/N4AoJFG4VJ92Dp4WYmOrVD6VPkb8jPz7ZeiYc7YwPl8NoDjYyPneBV0lEoK/V8OKAA==} + engines: {node: '>=16.0.0'} + + '@aws-sdk/util-locate-window@3.568.0': + resolution: {integrity: sha512-3nh4TINkXYr+H41QaPelCceEB2FXP3fxp93YZXB/kqJvX0U9j0N0Uk45gvsjmEPzG8XxkPEeLIfT2I1M7A6Lig==} + engines: {node: '>=16.0.0'} + + '@aws-sdk/util-user-agent-browser@3.649.0': + resolution: {integrity: sha512-IY43r256LhKAvdEVQO/FPdUyVpcZS5EVxh/WHVdNzuN1bNLoUK2rIzuZqVA0EGguvCxoXVmQv9m50GvG7cGktg==} + + '@aws-sdk/util-user-agent-node@3.649.0': + resolution: {integrity: sha512-x5DiLpZDG/AJmCIBnE3Xhpwy35QIo3WqNiOpw6ExVs1NydbM/e90zFPSfhME0FM66D/WorigvluBxxwjxDm/GA==} + engines: {node: '>=16.0.0'} + peerDependencies: + aws-crt: '>=1.0.0' + peerDependenciesMeta: + aws-crt: + optional: true + + '@aws-sdk/util-utf8-browser@3.259.0': + resolution: {integrity: sha512-UvFa/vR+e19XookZF8RzFZBrw2EUkQWxiBW0yYQAhvk3C+QVGl0H3ouca8LDBlBfQKXwmW3huo/59H8rwb1wJw==} + + '@aws-sdk/xml-builder@3.649.0': + resolution: {integrity: sha512-XVESKkK7m5LdCVzZ3NvAja40BEyCrfPqtaiFAAhJIvW2U1Edyugf2o3XikuQY62crGT6BZagxJFgOiLKvuTiTg==} + engines: {node: '>=16.0.0'} + + '@babel/code-frame@7.24.7': + resolution: {integrity: sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==} + engines: {node: '>=6.9.0'} + + '@babel/generator@7.25.6': + resolution: {integrity: sha512-VPC82gr1seXOpkjAAKoLhP50vx4vGNlF4msF64dSFq1P8RfB+QAuJWGHPXXPc8QyfVWwwB/TNNU4+ayZmHNbZw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-module-imports@7.24.7': + resolution: {integrity: sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA==} + engines: {node: '>=6.9.0'} + + '@babel/helper-string-parser@7.24.8': + resolution: {integrity: sha512-pO9KhhRcuUyGnJWwyEgnRJTSIZHiT+vMD0kPeD+so0l7mxkMT19g3pjY9GTnHySck/hDzq+dtW/4VgnMkippsQ==} + engines: {node: '>=6.9.0'} + + '@babel/helper-validator-identifier@7.24.7': + resolution: {integrity: sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==} + engines: {node: '>=6.9.0'} + + '@babel/highlight@7.24.7': + resolution: {integrity: sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==} + engines: {node: '>=6.9.0'} + + '@babel/parser@7.25.6': + resolution: {integrity: sha512-trGdfBdbD0l1ZPmcJ83eNxB9rbEax4ALFTF7fN386TMYbeCQbyme5cOEXQhbGXKebwGaB/J52w1mrklMcbgy6Q==} + engines: {node: '>=6.0.0'} + hasBin: true + + '@babel/runtime@7.25.6': + resolution: {integrity: sha512-VBj9MYyDb9tuLq7yzqjgzt6Q+IBQLrGZfdjOekyEirZPHxXWoTSGUTMrpsfi58Up73d13NfYLv8HT9vmznjzhQ==} + engines: {node: '>=6.9.0'} + + '@babel/template@7.25.0': + resolution: {integrity: sha512-aOOgh1/5XzKvg1jvVz7AVrx2piJ2XBi227DHmbY6y+bM9H2FlN+IfecYu4Xl0cNiiVejlsCri89LUsbj8vJD9Q==} + engines: {node: '>=6.9.0'} + + '@babel/traverse@7.25.6': + resolution: {integrity: sha512-9Vrcx5ZW6UwK5tvqsj0nGpp/XzqthkT0dqIc9g1AdtygFToNtTF67XzYS//dm+SAK9cp3B9R4ZO/46p63SCjlQ==} + engines: {node: '>=6.9.0'} + + '@babel/types@7.25.6': + resolution: {integrity: sha512-/l42B1qxpG6RdfYf343Uw1vmDjeNhneUXtzhojE7pDgfpEypmRhI6j1kr17XCVv4Cgl9HdAiQY2x0GwKm7rWCw==} + engines: {node: '>=6.9.0'} + + '@dnd-kit/accessibility@3.1.0': + resolution: {integrity: sha512-ea7IkhKvlJUv9iSHJOnxinBcoOI3ppGnnL+VDJ75O45Nss6HtZd8IdN8touXPDtASfeI2T2LImb8VOZcL47wjQ==} + peerDependencies: + react: '>=16.8.0' + + '@dnd-kit/core@6.0.8': + resolution: {integrity: sha512-lYaoP8yHTQSLlZe6Rr9qogouGUz9oRUj4AHhDQGQzq/hqaJRpFo65X+JKsdHf8oUFBzx5A+SJPUvxAwTF2OabA==} + peerDependencies: + react: ^18.2.0 + react-dom: ^18.2.0 + + '@dnd-kit/sortable@7.0.2': + resolution: {integrity: sha512-wDkBHHf9iCi1veM834Gbk1429bd4lHX4RpAwT0y2cHLf246GAvU2sVw/oxWNpPKQNQRQaeGXhAVgrOl1IT+iyA==} + peerDependencies: + '@dnd-kit/core': ^6.0.7 + react: '>=16.8.0' + + '@dnd-kit/utilities@3.2.2': + resolution: {integrity: sha512-+MKAJEOfaBe5SmV6t34p80MMKhjvUz0vRrvVJbPT0WElzaOJ/1xs+D+KDv+tD/NE5ujfrChEcshd4fLn0wpiqg==} + peerDependencies: + react: '>=16.8.0' + + '@emnapi/runtime@1.2.0': + resolution: {integrity: sha512-bV21/9LQmcQeCPEg3BDFtvwL6cwiTMksYNWQQ4KOxCZikEGalWtenoZ0wCiukJINlGCIi2KXx01g4FoH/LxpzQ==} + + '@emotion/babel-plugin@11.12.0': + resolution: {integrity: sha512-y2WQb+oP8Jqvvclh8Q55gLUyb7UFvgv7eJfsj7td5TToBrIUtPay2kMrZi4xjq9qw2vD0ZR5fSho0yqoFgX7Rw==} + + '@emotion/cache@11.13.1': + resolution: {integrity: sha512-iqouYkuEblRcXmylXIwwOodiEK5Ifl7JcX7o6V4jI3iW4mLXX3dmt5xwBtIkJiQEXFAI+pC8X0i67yiPkH9Ucw==} + + '@emotion/css@11.13.0': + resolution: {integrity: sha512-BUk99ylT+YHl+W/HN7nv1RCTkDYmKKqa1qbvM/qLSQEg61gipuBF5Hptk/2/ERmX2DCv0ccuFGhz9i0KSZOqPg==} + + '@emotion/hash@0.9.2': + resolution: {integrity: sha512-MyqliTZGuOm3+5ZRSaaBGP3USLw6+EGykkwZns2EPC5g8jJ4z9OrdZY9apkl3+UP9+sdz76YYkwCKP5gh8iY3g==} + + '@emotion/memoize@0.9.0': + resolution: {integrity: sha512-30FAj7/EoJ5mwVPOWhAyCX+FPfMDrVecJAM+Iw9NRoSl4BBAQeqj4cApHHUXOVvIPgLVDsCFoz/hGD+5QQD1GQ==} + + '@emotion/react@11.13.3': + resolution: {integrity: sha512-lIsdU6JNrmYfJ5EbUCf4xW1ovy5wKQ2CkPRM4xogziOxH1nXxBSjpC9YqbFAP7circxMfYp+6x676BqWcEiixg==} + peerDependencies: + '@types/react': '*' + react: '>=16.8.0' + peerDependenciesMeta: + '@types/react': + optional: true + + '@emotion/serialize@1.3.1': + resolution: {integrity: sha512-dEPNKzBPU+vFPGa+z3axPRn8XVDetYORmDC0wAiej+TNcOZE70ZMJa0X7JdeoM6q/nWTMZeLpN/fTnD9o8MQBA==} + + '@emotion/sheet@1.4.0': + resolution: {integrity: sha512-fTBW9/8r2w3dXWYM4HCB1Rdp8NLibOw2+XELH5m5+AkWiL/KqYX6dc0kKYlaYyKjrQ6ds33MCdMPEwgs2z1rqg==} + + '@emotion/unitless@0.10.0': + resolution: {integrity: sha512-dFoMUuQA20zvtVTuxZww6OHoJYgrzfKM1t52mVySDJnMSEa08ruEvdYQbhvyu6soU+NeLVd3yKfTfT0NeV6qGg==} + + '@emotion/use-insertion-effect-with-fallbacks@1.1.0': + resolution: {integrity: sha512-+wBOcIV5snwGgI2ya3u99D7/FJquOIniQT1IKyDsBmEgwvpxMNeS65Oib7OnE2d2aY+3BU4OiH+0Wchf8yk3Hw==} + peerDependencies: + react: '>=16.8.0' + + '@emotion/utils@1.4.0': + resolution: {integrity: sha512-spEnrA1b6hDR/C68lC2M7m6ALPUHZC0lIY7jAS/B/9DuuO1ZP04eov8SMv/6fwRd8pzmsn2AuJEznRREWlQrlQ==} + + '@emotion/weak-memoize@0.4.0': + resolution: {integrity: sha512-snKqtPW01tN0ui7yu9rGv69aJXr/a/Ywvl11sUjNtEcRc+ng/mQriFL0wLXMef74iHa/EkftbDzU9F8iFbH+zg==} + + '@esbuild/aix-ppc64@0.23.1': + resolution: {integrity: sha512-6VhYk1diRqrhBAqpJEdjASR/+WVRtfjpqKuNw11cLiaWpAT/Uu+nokB+UJnevzy/P9C/ty6AOe0dwueMrGh/iQ==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [aix] + + '@esbuild/android-arm64@0.23.1': + resolution: {integrity: sha512-xw50ipykXcLstLeWH7WRdQuysJqejuAGPd30vd1i5zSyKK3WE+ijzHmLKxdiCMtH1pHz78rOg0BKSYOSB/2Khw==} + engines: {node: '>=18'} + cpu: [arm64] + os: [android] + + '@esbuild/android-arm@0.23.1': + resolution: {integrity: sha512-uz6/tEy2IFm9RYOyvKl88zdzZfwEfKZmnX9Cj1BHjeSGNuGLuMD1kR8y5bteYmwqKm1tj8m4cb/aKEorr6fHWQ==} + engines: {node: '>=18'} + cpu: [arm] + os: [android] + + '@esbuild/android-x64@0.23.1': + resolution: {integrity: sha512-nlN9B69St9BwUoB+jkyU090bru8L0NA3yFvAd7k8dNsVH8bi9a8cUAUSEcEEgTp2z3dbEDGJGfP6VUnkQnlReg==} + engines: {node: '>=18'} + cpu: [x64] + os: [android] + + '@esbuild/darwin-arm64@0.23.1': + resolution: {integrity: sha512-YsS2e3Wtgnw7Wq53XXBLcV6JhRsEq8hkfg91ESVadIrzr9wO6jJDMZnCQbHm1Guc5t/CdDiFSSfWP58FNuvT3Q==} + engines: {node: '>=18'} + cpu: [arm64] + os: [darwin] + + '@esbuild/darwin-x64@0.23.1': + resolution: {integrity: sha512-aClqdgTDVPSEGgoCS8QDG37Gu8yc9lTHNAQlsztQ6ENetKEO//b8y31MMu2ZaPbn4kVsIABzVLXYLhCGekGDqw==} + engines: {node: '>=18'} + cpu: [x64] + os: [darwin] + + '@esbuild/freebsd-arm64@0.23.1': + resolution: {integrity: sha512-h1k6yS8/pN/NHlMl5+v4XPfikhJulk4G+tKGFIOwURBSFzE8bixw1ebjluLOjfwtLqY0kewfjLSrO6tN2MgIhA==} + engines: {node: '>=18'} + cpu: [arm64] + os: [freebsd] + + '@esbuild/freebsd-x64@0.23.1': + resolution: {integrity: sha512-lK1eJeyk1ZX8UklqFd/3A60UuZ/6UVfGT2LuGo3Wp4/z7eRTRYY+0xOu2kpClP+vMTi9wKOfXi2vjUpO1Ro76g==} + engines: {node: '>=18'} + cpu: [x64] + os: [freebsd] + + '@esbuild/linux-arm64@0.23.1': + resolution: {integrity: sha512-/93bf2yxencYDnItMYV/v116zff6UyTjo4EtEQjUBeGiVpMmffDNUyD9UN2zV+V3LRV3/on4xdZ26NKzn6754g==} + engines: {node: '>=18'} + cpu: [arm64] + os: [linux] + + '@esbuild/linux-arm@0.23.1': + resolution: {integrity: sha512-CXXkzgn+dXAPs3WBwE+Kvnrf4WECwBdfjfeYHpMeVxWE0EceB6vhWGShs6wi0IYEqMSIzdOF1XjQ/Mkm5d7ZdQ==} + engines: {node: '>=18'} + cpu: [arm] + os: [linux] + + '@esbuild/linux-ia32@0.23.1': + resolution: {integrity: sha512-VTN4EuOHwXEkXzX5nTvVY4s7E/Krz7COC8xkftbbKRYAl96vPiUssGkeMELQMOnLOJ8k3BY1+ZY52tttZnHcXQ==} + engines: {node: '>=18'} + cpu: [ia32] + os: [linux] + + '@esbuild/linux-loong64@0.23.1': + resolution: {integrity: sha512-Vx09LzEoBa5zDnieH8LSMRToj7ir/Jeq0Gu6qJ/1GcBq9GkfoEAoXvLiW1U9J1qE/Y/Oyaq33w5p2ZWrNNHNEw==} + engines: {node: '>=18'} + cpu: [loong64] + os: [linux] + + '@esbuild/linux-mips64el@0.23.1': + resolution: {integrity: sha512-nrFzzMQ7W4WRLNUOU5dlWAqa6yVeI0P78WKGUo7lg2HShq/yx+UYkeNSE0SSfSure0SqgnsxPvmAUu/vu0E+3Q==} + engines: {node: '>=18'} + cpu: [mips64el] + os: [linux] + + '@esbuild/linux-ppc64@0.23.1': + resolution: {integrity: sha512-dKN8fgVqd0vUIjxuJI6P/9SSSe/mB9rvA98CSH2sJnlZ/OCZWO1DJvxj8jvKTfYUdGfcq2dDxoKaC6bHuTlgcw==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [linux] + + '@esbuild/linux-riscv64@0.23.1': + resolution: {integrity: sha512-5AV4Pzp80fhHL83JM6LoA6pTQVWgB1HovMBsLQ9OZWLDqVY8MVobBXNSmAJi//Csh6tcY7e7Lny2Hg1tElMjIA==} + engines: {node: '>=18'} + cpu: [riscv64] + os: [linux] + + '@esbuild/linux-s390x@0.23.1': + resolution: {integrity: sha512-9ygs73tuFCe6f6m/Tb+9LtYxWR4c9yg7zjt2cYkjDbDpV/xVn+68cQxMXCjUpYwEkze2RcU/rMnfIXNRFmSoDw==} + engines: {node: '>=18'} + cpu: [s390x] + os: [linux] + + '@esbuild/linux-x64@0.23.1': + resolution: {integrity: sha512-EV6+ovTsEXCPAp58g2dD68LxoP/wK5pRvgy0J/HxPGB009omFPv3Yet0HiaqvrIrgPTBuC6wCH1LTOY91EO5hQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [linux] + + '@esbuild/netbsd-x64@0.23.1': + resolution: {integrity: sha512-aevEkCNu7KlPRpYLjwmdcuNz6bDFiE7Z8XC4CPqExjTvrHugh28QzUXVOZtiYghciKUacNktqxdpymplil1beA==} + engines: {node: '>=18'} + cpu: [x64] + os: [netbsd] + + '@esbuild/openbsd-arm64@0.23.1': + resolution: {integrity: sha512-3x37szhLexNA4bXhLrCC/LImN/YtWis6WXr1VESlfVtVeoFJBRINPJ3f0a/6LV8zpikqoUg4hyXw0sFBt5Cr+Q==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openbsd] + + '@esbuild/openbsd-x64@0.23.1': + resolution: {integrity: sha512-aY2gMmKmPhxfU+0EdnN+XNtGbjfQgwZj43k8G3fyrDM/UdZww6xrWxmDkuz2eCZchqVeABjV5BpildOrUbBTqA==} + engines: {node: '>=18'} + cpu: [x64] + os: [openbsd] + + '@esbuild/sunos-x64@0.23.1': + resolution: {integrity: sha512-RBRT2gqEl0IKQABT4XTj78tpk9v7ehp+mazn2HbUeZl1YMdaGAQqhapjGTCe7uw7y0frDi4gS0uHzhvpFuI1sA==} + engines: {node: '>=18'} + cpu: [x64] + os: [sunos] + + '@esbuild/win32-arm64@0.23.1': + resolution: {integrity: sha512-4O+gPR5rEBe2FpKOVyiJ7wNDPA8nGzDuJ6gN4okSA1gEOYZ67N8JPk58tkWtdtPeLz7lBnY6I5L3jdsr3S+A6A==} + engines: {node: '>=18'} + cpu: [arm64] + os: [win32] + + '@esbuild/win32-ia32@0.23.1': + resolution: {integrity: sha512-BcaL0Vn6QwCwre3Y717nVHZbAa4UBEigzFm6VdsVdT/MbZ38xoj1X9HPkZhbmaBGUD1W8vxAfffbDe8bA6AKnQ==} + engines: {node: '>=18'} + cpu: [ia32] + os: [win32] + + '@esbuild/win32-x64@0.23.1': + resolution: {integrity: sha512-BHpFFeslkWrXWyUPnbKm+xYYVYruCinGcftSBaa8zoF9hZO4BcSCFUvHVTtzpIY6YzUnYtuEhZ+C9iEXjxnasg==} + engines: {node: '>=18'} + cpu: [x64] + os: [win32] + + '@eslint-community/eslint-utils@4.4.0': + resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 + + '@eslint-community/regexpp@4.11.1': + resolution: {integrity: sha512-m4DVN9ZqskZoLU5GlWZadwDnYo3vAEydiUayB9widCl9ffWx2IvPnp6n3on5rJmziJSw9Bv+Z3ChDVdMwXCY8Q==} + engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} + + '@eslint/eslintrc@2.1.4': + resolution: {integrity: sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + '@eslint/js@8.48.0': + resolution: {integrity: sha512-ZSjtmelB7IJfWD2Fvb7+Z+ChTIKWq6kjda95fLcQKNS5aheVHn4IkfgRQE3sIIzTcSLwLcLZUD9UBt+V7+h+Pw==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + '@eslint/js@8.57.0': + resolution: {integrity: sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + '@faceless-ui/modal@3.0.0-beta.2': + resolution: {integrity: sha512-UmXvz7Iw3KMO4Pm3llZczU4uc5pPQDb6rdqwoBvYDFgWvkraOAHKx0HxSZgwqQvqOhn8joEFBfFp6/Do2562ow==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-rc.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-rc.0 + + '@faceless-ui/scroll-info@2.0.0-beta.0': + resolution: {integrity: sha512-pUBhQP8vduA7rVndNsjhaCcds1BykA/Q4iV23JWijU6ZFL/M3Fm9P3ypDS+0VVxolqemNhw8S3FXPwZGgjH4Rw==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-rc.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-rc.0 + + '@faceless-ui/window-info@3.0.0-beta.0': + resolution: {integrity: sha512-Qs8xRA+fl4sU2aFVe9xawxfi5TVZ9VTPuhdQpx9aSv7U5a2F0AXwT61lJfnaJ9Flm8tOcxzq67p8cVZsXNCVeQ==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-rc.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-rc.0 + + '@floating-ui/core@1.6.8': + resolution: {integrity: sha512-7XJ9cPU+yI2QeLS+FCSlqNFZJq8arvswefkZrYI1yQBbftw6FyrZOxYSh+9S7z7TpeWlRt9zJ5IhM1WIL334jA==} + + '@floating-ui/dom@1.6.11': + resolution: {integrity: sha512-qkMCxSR24v2vGkhYDo/UzxfJN3D4syqSjyuTFz6C7XcpU1pASPRieNI0Kj5VP3/503mOfYiGY891ugBX1GlABQ==} + + '@floating-ui/react-dom@2.1.2': + resolution: {integrity: sha512-06okr5cgPzMNBy+Ycse2A6udMi4bqwW/zgBF/rwjcNqWkyr82Mcg8b0vjX8OJpZFy/FKjJmw6wV7t44kK6kW7A==} + peerDependencies: + react: '>=16.8.0' + react-dom: '>=16.8.0' + + '@floating-ui/react@0.26.24': + resolution: {integrity: sha512-2ly0pCkZIGEQUq5H8bBK0XJmc1xIK/RM3tvVzY3GBER7IOD1UgmC2Y2tjj4AuS+TC+vTE1KJv2053290jua0Sw==} + peerDependencies: + react: '>=16.8.0' + react-dom: '>=16.8.0' + + '@floating-ui/utils@0.2.8': + resolution: {integrity: sha512-kym7SodPp8/wloecOpcmSnWJsK7M0E5Wg8UcFA+uO4B9s5d0ywXOEro/8HM9x0rW+TljRzul/14UYz3TleT3ig==} + + '@humanwhocodes/config-array@0.11.14': + resolution: {integrity: sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==} + engines: {node: '>=10.10.0'} + deprecated: Use @eslint/config-array instead + + '@humanwhocodes/module-importer@1.0.1': + resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} + engines: {node: '>=12.22'} + + '@humanwhocodes/object-schema@2.0.3': + resolution: {integrity: sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==} + deprecated: Use @eslint/object-schema instead + + '@img/sharp-darwin-arm64@0.33.5': + resolution: {integrity: sha512-UT4p+iz/2H4twwAoLCqfA9UH5pI6DggwKEGuaPy7nCVQ8ZsiY5PIcrRvD1DzuY3qYL07NtIQcWnBSY/heikIFQ==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [arm64] + os: [darwin] + + '@img/sharp-darwin-x64@0.33.5': + resolution: {integrity: sha512-fyHac4jIc1ANYGRDxtiqelIbdWkIuQaI84Mv45KvGRRxSAa7o7d1ZKAOBaYbnepLC1WqxfpimdeWfvqqSGwR2Q==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [x64] + os: [darwin] + + '@img/sharp-libvips-darwin-arm64@1.0.4': + resolution: {integrity: sha512-XblONe153h0O2zuFfTAbQYAX2JhYmDHeWikp1LM9Hul9gVPjFY427k6dFEcOL72O01QxQsWi761svJ/ev9xEDg==} + cpu: [arm64] + os: [darwin] + + '@img/sharp-libvips-darwin-x64@1.0.4': + resolution: {integrity: sha512-xnGR8YuZYfJGmWPvmlunFaWJsb9T/AO2ykoP3Fz/0X5XV2aoYBPkX6xqCQvUTKKiLddarLaxpzNe+b1hjeWHAQ==} + cpu: [x64] + os: [darwin] + + '@img/sharp-libvips-linux-arm64@1.0.4': + resolution: {integrity: sha512-9B+taZ8DlyyqzZQnoeIvDVR/2F4EbMepXMc/NdVbkzsJbzkUjhXv/70GQJ7tdLA4YJgNP25zukcxpX2/SueNrA==} + cpu: [arm64] + os: [linux] + + '@img/sharp-libvips-linux-arm@1.0.5': + resolution: {integrity: sha512-gvcC4ACAOPRNATg/ov8/MnbxFDJqf/pDePbBnuBDcjsI8PssmjoKMAz4LtLaVi+OnSb5FK/yIOamqDwGmXW32g==} + cpu: [arm] + os: [linux] + + '@img/sharp-libvips-linux-s390x@1.0.4': + resolution: {integrity: sha512-u7Wz6ntiSSgGSGcjZ55im6uvTrOxSIS8/dgoVMoiGE9I6JAfU50yH5BoDlYA1tcuGS7g/QNtetJnxA6QEsCVTA==} + cpu: [s390x] + os: [linux] + + '@img/sharp-libvips-linux-x64@1.0.4': + resolution: {integrity: sha512-MmWmQ3iPFZr0Iev+BAgVMb3ZyC4KeFc3jFxnNbEPas60e1cIfevbtuyf9nDGIzOaW9PdnDciJm+wFFaTlj5xYw==} + cpu: [x64] + os: [linux] + + '@img/sharp-libvips-linuxmusl-arm64@1.0.4': + resolution: {integrity: sha512-9Ti+BbTYDcsbp4wfYib8Ctm1ilkugkA/uscUn6UXK1ldpC1JjiXbLfFZtRlBhjPZ5o1NCLiDbg8fhUPKStHoTA==} + cpu: [arm64] + os: [linux] + + '@img/sharp-libvips-linuxmusl-x64@1.0.4': + resolution: {integrity: sha512-viYN1KX9m+/hGkJtvYYp+CCLgnJXwiQB39damAO7WMdKWlIhmYTfHjwSbQeUK/20vY154mwezd9HflVFM1wVSw==} + cpu: [x64] + os: [linux] + + '@img/sharp-linux-arm64@0.33.5': + resolution: {integrity: sha512-JMVv+AMRyGOHtO1RFBiJy/MBsgz0x4AWrT6QoEVVTyh1E39TrCUpTRI7mx9VksGX4awWASxqCYLCV4wBZHAYxA==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [arm64] + os: [linux] + + '@img/sharp-linux-arm@0.33.5': + resolution: {integrity: sha512-JTS1eldqZbJxjvKaAkxhZmBqPRGmxgu+qFKSInv8moZ2AmT5Yib3EQ1c6gp493HvrvV8QgdOXdyaIBrhvFhBMQ==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [arm] + os: [linux] + + '@img/sharp-linux-s390x@0.33.5': + resolution: {integrity: sha512-y/5PCd+mP4CA/sPDKl2961b+C9d+vPAveS33s6Z3zfASk2j5upL6fXVPZi7ztePZ5CuH+1kW8JtvxgbuXHRa4Q==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [s390x] + os: [linux] + + '@img/sharp-linux-x64@0.33.5': + resolution: {integrity: sha512-opC+Ok5pRNAzuvq1AG0ar+1owsu842/Ab+4qvU879ippJBHvyY5n2mxF1izXqkPYlGuP/M556uh53jRLJmzTWA==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [x64] + os: [linux] + + '@img/sharp-linuxmusl-arm64@0.33.5': + resolution: {integrity: sha512-XrHMZwGQGvJg2V/oRSUfSAfjfPxO+4DkiRh6p2AFjLQztWUuY/o8Mq0eMQVIY7HJ1CDQUJlxGGZRw1a5bqmd1g==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [arm64] + os: [linux] + + '@img/sharp-linuxmusl-x64@0.33.5': + resolution: {integrity: sha512-WT+d/cgqKkkKySYmqoZ8y3pxx7lx9vVejxW/W4DOFMYVSkErR+w7mf2u8m/y4+xHe7yY9DAXQMWQhpnMuFfScw==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [x64] + os: [linux] + + '@img/sharp-wasm32@0.33.5': + resolution: {integrity: sha512-ykUW4LVGaMcU9lu9thv85CbRMAwfeadCJHRsg2GmeRa/cJxsVY9Rbd57JcMxBkKHag5U/x7TSBpScF4U8ElVzg==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [wasm32] + + '@img/sharp-win32-ia32@0.33.5': + resolution: {integrity: sha512-T36PblLaTwuVJ/zw/LaH0PdZkRz5rd3SmMHX8GSmR7vtNSP5Z6bQkExdSK7xGWyxLw4sUknBuugTelgw2faBbQ==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [ia32] + os: [win32] + + '@img/sharp-win32-x64@0.33.5': + resolution: {integrity: sha512-MpY/o8/8kj+EcnxwvrP4aTJSWw/aZ7JIGR4aBeZkZw5B7/Jn+tY9/VNwtcoGmdT7GfggGIU4kygOMSbYnOrAbg==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [x64] + os: [win32] + + '@isaacs/cliui@8.0.2': + resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} + engines: {node: '>=12'} + + '@jridgewell/gen-mapping@0.3.5': + resolution: {integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==} + engines: {node: '>=6.0.0'} + + '@jridgewell/resolve-uri@3.1.2': + resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} + engines: {node: '>=6.0.0'} + + '@jridgewell/set-array@1.2.1': + resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==} + engines: {node: '>=6.0.0'} + + '@jridgewell/sourcemap-codec@1.5.0': + resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==} + + '@jridgewell/trace-mapping@0.3.25': + resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} + + '@jsdevtools/ono@7.1.3': + resolution: {integrity: sha512-4JQNk+3mVzK3xh2rqd6RB4J46qUR19azEHBneZyTZM+c456qOrbbM/5xcR8huNCCcbVt7+UmizG6GuUvPvKUYg==} + + '@lexical/clipboard@0.17.0': + resolution: {integrity: sha512-wYtC6VJhuSxUZc69VTU+vBgzB4HQqhve2hLrr3v+3tR2aimx3KnKphCCP1TexCntxpEnOTPXafEgpOW/EVQE+Q==} + + '@lexical/code@0.17.0': + resolution: {integrity: sha512-8zrgHzf27aYySfUVeSKw8YP/LkRlXHSwD03BKlkSZAb4HX/WC60SGmdXUhtyTIBucqe0pnuGsRYfR9euD0/tfw==} + + '@lexical/devtools-core@0.17.0': + resolution: {integrity: sha512-0ftqWsoCb96oTc8Ok+uvjGAXZpsN9oc6ml3d46BdufdZyxHXC4qU3YVoPfLkgAHzH+4fQlNypu7u3Ym3dZ2rJg==} + peerDependencies: + react: '>=17.x' + react-dom: '>=17.x' + + '@lexical/dragon@0.17.0': + resolution: {integrity: sha512-XSsrHVwhjBIVF9VN9MFm6Go8fquj5H/jlYuyNzemHq0tOli8NaoSovGc5q0LwXr88RPsuIt1jluazR7Q1+kxTQ==} + + '@lexical/hashtag@0.17.0': + resolution: {integrity: sha512-E6nSoz9haB6JypQtYxG5OYr36AHgam/FBMu77OWNl1KsJbkP8nInm+P22QFsNnEvs4Hk6/0FJ5g42+lTEnGmIg==} + + '@lexical/headless@0.17.0': + resolution: {integrity: sha512-yKvXcq2F6S1lwDLcwv+bHht/al1LcFmidPT3rjISRxLX+/YjUcUT8MmvV773Du4piV4rFPbVlBPFBZfHJkDxXw==} + + '@lexical/history@0.17.0': + resolution: {integrity: sha512-SfeUKAXf9pZpqee9rMOTt33V0J0p/AS9TZLT9Un9dU6wAaHfv6NFax1ND0JoG1a9YkTc539mufxVLNjsNRc0ag==} + + '@lexical/html@0.17.0': + resolution: {integrity: sha512-sI458CEP/j+Gd2YEo1+vTax31ZAjdq5jmRJMgSKxzKlkVYAUY9eH5u3Y3awPLwLVXJHiIopMX02GeZytibuTiw==} + + '@lexical/link@0.17.0': + resolution: {integrity: sha512-Kux6yvPit6y0ksPpwimv3seVrXAsggkqB6oT6oAVBaDpYuygVEwNDqg/rCTtB3mHQ4eeuU33mdK7MSXZ34bZRQ==} + + '@lexical/list@0.17.0': + resolution: {integrity: sha512-anDuSUykTv+lqyCwl1m+sThrB15OKCa00Eo68/d2HQSHDD3KNWgSx709dcR17bD9oT204yOhMJbQGywuzcEyGQ==} + + '@lexical/mark@0.17.0': + resolution: {integrity: sha512-Ynqh9KHXUcB9qLOTGC9s+bbWtawOwRStkeIeAugTqrwckyYWeDaePpyJ6IhBBJy1E1CfpiZn71NDeP+FuRjnXQ==} + + '@lexical/markdown@0.17.0': + resolution: {integrity: sha512-6IuJ2l5p/Ma+VBUIStIRXwTC01GEzx21gvqqywuqBUzAOiMr1oRM+DGsQgrzZrcjX+LzUlZ5ZgjuWtK8XKVAZw==} + + '@lexical/offset@0.17.0': + resolution: {integrity: sha512-onE6SD2mIAwBLTT5v5fVBVtRg/NpQj+o10vTWJ1ImvEUERpSoCyHMTy3IMoSMuCRwuOG9C0cFEret2u+QS8Icw==} + + '@lexical/overflow@0.17.0': + resolution: {integrity: sha512-dh+nQAmeobKvZFodWyzNh1ZjX043Patk/1Lwct9XmtAGMUdXL+tB0bbguWVcDfY8OYu1CTQGfbdq2oMEJYzwsg==} + + '@lexical/plain-text@0.17.0': + resolution: {integrity: sha512-AEk+3ttbRyRi7m9UbU1CdLUtGsXh4FFZkBC12twV3U82lZHOdHocLlTutP+lcbYlGjeq6UF43NxOSGzsYEunsA==} + + '@lexical/react@0.17.0': + resolution: {integrity: sha512-HZ3joq+5g2++2vo/6scTd60Y2bsu8ya8EUdopyudnmGZGKAcAPue9pLOlBaEpsYZ7vqTuGjiPgtEBfFzDy9rlg==} + peerDependencies: + react: '>=17.x' + react-dom: '>=17.x' + + '@lexical/rich-text@0.17.0': + resolution: {integrity: sha512-XJc8gQBSwppCkESQaNcGtyTaPXZaeCQDcUVpnDjDK0vM/ZZN8TErxbujwbSqA3kO2dBds9N8WxNboSwuncMBcQ==} + + '@lexical/selection@0.17.0': + resolution: {integrity: sha512-UTjlvyhFY/lmHtBaIaVRwYnRfO9gR4I32+PT7vHQr4v3VfcgS63YEGSgEZy3Gh1pfeJqaZATN58+jCuMAQXlWQ==} + + '@lexical/table@0.17.0': + resolution: {integrity: sha512-RQF7IG0rGL2/bPaPFUIMgDA3QMdDflvXSnE7Udgbj9yMqSKhYkaERVfNyoLckDUSuusGJd6XV+qum6JWn0nSNA==} + + '@lexical/text@0.17.0': + resolution: {integrity: sha512-kFH0V6yjW8YswmoY7vHT4zHFDflGfamuUxTPHROpdnq/JMjHeaVwtmFBdrP0gknaC8XMRXdr3EsemQ7cbOoDPA==} + + '@lexical/utils@0.17.0': + resolution: {integrity: sha512-B/n0rRGDmdMrqi2qnprLt6SntC6jb4JItLmPl8zDDdg7/HxMdLq3F93vogeiXQJn0mlNqgiENWHvLAy5K2C2uQ==} + + '@lexical/yjs@0.17.0': + resolution: {integrity: sha512-xJv3frcK/jskssLbzdY4yfBaM7+LWaZD4YjYkJ/bvRDTey2w+McF+SvsJ/yBA8YF1oaL3rT+0aIQJ7rfH+AxjA==} + peerDependencies: + yjs: '>=13.5.22' + + '@monaco-editor/loader@1.4.0': + resolution: {integrity: sha512-00ioBig0x642hytVspPl7DbQyaSWRaolYie/UFNjoTdvoKPzo6xrXLhTk9ixgIKcLH5b5vDOjVNiGyY+uDCUlg==} + peerDependencies: + monaco-editor: '>= 0.21.0 < 1' + + '@monaco-editor/react@4.6.0': + resolution: {integrity: sha512-RFkU9/i7cN2bsq/iTkurMWOEErmYcY6JiQI3Jn+WeR/FGISH8JbHERjpS9oRuSOPvDMJI0Z8nJeKkbOs9sBYQw==} + peerDependencies: + monaco-editor: '>= 0.25.0 < 1' + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + + '@mongodb-js/saslprep@1.1.9': + resolution: {integrity: sha512-tVkljjeEaAhCqTzajSdgbQ6gE6f3oneVwa3iXR6csiEwXXOFsiC6Uh9iAjAhXPtqa/XMDHWjjeNH/77m/Yq2dw==} + + '@next/env@15.0.0-canary.104': + resolution: {integrity: sha512-7wOJhe62uL4ViZOumMwuPev4IxQaXJ4g97iMsXelOF+Q5QuuFXzbxIXh4OJMVAHZJMYkM5VyD2zxV66iYU01DQ==} + + '@next/env@15.0.0-rc.0': + resolution: {integrity: sha512-6W0ndQvHR9sXcqcKeR/inD2UTRCs9+VkSK3lfaGmEuZs7EjwwXMO2BPYjz9oBrtfPL3xuTjtXsHKSsalYQ5l1Q==} + + '@next/eslint-plugin-next@13.5.6': + resolution: {integrity: sha512-ng7pU/DDsxPgT6ZPvuprxrkeew3XaRf4LAT4FabaEO/hAbvVx4P7wqnqdbTdDn1kgTvsI4tpIgT4Awn/m0bGbg==} + + '@next/eslint-plugin-next@15.0.0-canary.104': + resolution: {integrity: sha512-mkvTl0zmSfRDWabHc1NQie9sw8DZHsqBx77jEu+CKaoXRJ2/zLUb29CJL0YHMIIzr/026NI8AFsg1SxrxllUsw==} + + '@next/swc-darwin-arm64@15.0.0-canary.104': + resolution: {integrity: sha512-tLrkGDlVAch+dwLr0lwZt6t//KQhwJQamTt86bFeSEgmuWg8escVD5608XjIicpy4oYUeTG2e7EDjvW1/9C7+Q==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [darwin] + + '@next/swc-darwin-x64@15.0.0-canary.104': + resolution: {integrity: sha512-NokpzlJHGzldMdx5ALJi9w8sZbFVQj3KPjMg1EKutvkX8Z0TgZguoj0Hb+0Dh7o6fBK0CqH1mYQd/IgYeqvYew==} + engines: {node: '>= 10'} + cpu: [x64] + os: [darwin] + + '@next/swc-linux-arm64-gnu@15.0.0-canary.104': + resolution: {integrity: sha512-U9P1bXaxMyGrY7HdJ1fdtS5vy2yfWF7z1Qt/8OBcZi5y6WWHloZmJ/jRMXxoHJ1lcLSsC1EcubYHgV5ys1NDcA==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + + '@next/swc-linux-arm64-musl@15.0.0-canary.104': + resolution: {integrity: sha512-PDOS3ySD0/YBVvKn/JhQ8xjh4HU4v2MCvqFHaoahu9v1ydmUOeuDRjQk4hUliXgvKuE/ZZksP3a9TrzpbDScsA==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + + '@next/swc-linux-x64-gnu@15.0.0-canary.104': + resolution: {integrity: sha512-jYNKOIkqL4puFpeNjIZ/riK0+adDyjENjACMlU3HyuG7A0xCYAFxBIbmwjbGmpSv99+PPB/gAbGnB0TT2PDHUQ==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + + '@next/swc-linux-x64-musl@15.0.0-canary.104': + resolution: {integrity: sha512-xX3ZUWM4syINdEqsUhvQWBjoFa2P8PL96adQUfph4cpUrkrUbnBQbWA2vSdSvwoC6a80wSX+buuhJptvxzEl3A==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + + '@next/swc-win32-arm64-msvc@15.0.0-canary.104': + resolution: {integrity: sha512-kUMeZOhueb5wXZTQTPvdl4V4wtJKh49TcVAHS7kcDTU9m8jrIQ3beKURWtzjD4iizgl/iar8CHuYS5CAnCGqAw==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [win32] + + '@next/swc-win32-ia32-msvc@15.0.0-canary.104': + resolution: {integrity: sha512-6q5HYiACa6GH7+RyTlLMdUlivwi75bw2L9PRYRBuw4C0SvLYMwBf7SlshbrCrNYbIAaGajYJLZjv3IXFnsZBjA==} + engines: {node: '>= 10'} + cpu: [ia32] + os: [win32] + + '@next/swc-win32-x64-msvc@15.0.0-canary.104': + resolution: {integrity: sha512-OeY5GRHRv5qMPwK2e1ipX+EeTDPmRITM9OBeaeIllubWprLGeLxnC1NbKYKCt6IfCboX+wanZKQcbuyH5RMtlg==} + engines: {node: '>= 10'} + cpu: [x64] + os: [win32] + + '@nodelib/fs.scandir@2.1.5': + resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} + engines: {node: '>= 8'} + + '@nodelib/fs.stat@2.0.5': + resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} + engines: {node: '>= 8'} + + '@nodelib/fs.walk@1.2.8': + resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} + engines: {node: '>= 8'} + + '@nolyfill/is-core-module@1.0.39': + resolution: {integrity: sha512-nn5ozdjYQpUCZlWGuxcJY/KpxkWQs4DcbMCmKojjyrYDEAGy4Ce19NN4v5MduafTwJlbKc99UA8YhSVqq9yPZA==} + engines: {node: '>=12.4.0'} + + '@one-ini/wasm@0.1.1': + resolution: {integrity: sha512-XuySG1E38YScSJoMlqovLru4KTUNSjgVTIjyh7qMX6aNN5HY5Ct5LhRJdxO79JtTzKfzV/bnWpz+zquYrISsvw==} + + '@payloadcms/db-mongodb@3.0.0-beta.106': + resolution: {integrity: sha512-wD3xFuGRmk26S+JTweILknIbjixL1HF+ceLc+lsWDkdYEKeZ3aO8DDGkws51JJ3WlC3NC08Pz1WbGttV+kx+5Q==} + peerDependencies: + payload: 3.0.0-beta.106 + + '@payloadcms/email-nodemailer@3.0.0-beta.106': + resolution: {integrity: sha512-M+B4O/a59cQzDWzPKLv9gITmiXSpvOcjMfKMFsRBgNB52otwxm2kAMwfYBdZWNe3YW7uydvLZz9Lo8Sq+a6PhQ==} + engines: {node: ^18.20.2 || >=20.9.0} + peerDependencies: + payload: 3.0.0-beta.106 + + '@payloadcms/eslint-config@1.1.1': + resolution: {integrity: sha512-LSf9oEPb6aMEMqdTFqj1v+7p/bdrJWG6hp7748xjVO3RL3yQESTKLK/NbjsMYITN4tKFXjfPWDUtcwHv0hS6/A==} + + '@payloadcms/graphql@3.0.0-beta.106': + resolution: {integrity: sha512-lLdE/CHz5e7ahOaDpM4+CedYdhm6E+Kuv8EFmkARQwrm9bFyNt6XfGdqp0Fsbwy0ka77Q2rkV640nWOVXBj4ew==} + hasBin: true + peerDependencies: + graphql: ^16.8.1 + payload: 3.0.0-beta.106 + + '@payloadcms/live-preview-react@3.0.0-beta.106': + resolution: {integrity: sha512-s+JvzjIcQmNV6NfzndFPmFJIIBAT7dlHRa/bA1xX8MY64VzT1VRGdd0Xu0fm92K0Wlj3LVojlogOJthabYNqaA==} + peerDependencies: + react: ^19.0.0 || ^19.0.0-rc-06d0b89e-20240801 + react-dom: ^19.0.0 || ^19.0.0-rc-06d0b89e-20240801 + + '@payloadcms/live-preview@3.0.0-beta.106': + resolution: {integrity: sha512-qMh5pa+jhw2lB5EUchU9V43W5xtM57nC12kV9VBn9QdlTIzE6Mt+Pzz61qHkHKWYiasNv5HkRbPyrYyfLKsj/Q==} + + '@payloadcms/next@3.0.0-beta.106': + resolution: {integrity: sha512-343ptzsRzv3usKcB73mH5hALxRq0eO1hCSnyYSuMbTs+Czo3bSV+RLN1k9hs/5S1/Wr3G1b9Mo4/QTaC99240A==} + engines: {node: ^18.20.2 || >=20.9.0} + peerDependencies: + graphql: ^16.8.1 + next: ^15.0.0-canary.104 + payload: 3.0.0-beta.106 + + '@payloadcms/plugin-cloud@3.0.0-beta.106': + resolution: {integrity: sha512-xB9k8F9ZlHM8HxYu9OGvJVjQhYh1fntZIqfcY3er6M6b/uTmT9FWvyEOtQyt0NqjGqu25T8Lv5QHKMLFinGJpw==} + peerDependencies: + payload: 3.0.0-beta.106 + + '@payloadcms/plugin-form-builder@3.0.0-beta.106': + resolution: {integrity: sha512-rdL5NuHw98fHaaqDOKu/pafNUKX049EL7Lix0YhqJCMOwn/JREP6SczlqxONjAL5f0rQyG3lta++9VarD83BNA==} + peerDependencies: + payload: 3.0.0-beta.106 + react: ^19.0.0 || ^19.0.0-rc-06d0b89e-20240801 + react-dom: ^19.0.0 || ^19.0.0-rc-06d0b89e-20240801 + + '@payloadcms/plugin-nested-docs@3.0.0-beta.106': + resolution: {integrity: sha512-nt4CX2NbIab76wHCC9dq3330uQCBWJYM2UQd/4Wlu0SMbpICBru8hTEWJ6L5d1YDgvR7LRCKAKOsOsrCDvj03g==} + peerDependencies: + payload: 3.0.0-beta.106 + + '@payloadcms/plugin-redirects@3.0.0-beta.106': + resolution: {integrity: sha512-R9tr9e6l4DfCct/sKEM55jcKL6szyWlRiiSYI9EAjmQNZ7BVt4QKiOaAl+WhAANsKzy5ne25i+2bl14qbZcLMg==} + peerDependencies: + payload: 3.0.0-beta.106 + + '@payloadcms/plugin-seo@3.0.0-beta.106': + resolution: {integrity: sha512-ZiI8l/4/qu0LW4bQaHCoyFGAsvisVnRB6BaXgYp1OKGKDfQHV1/QKf88rIO2O1x5rBkZr0Q2MhzhtOxSPVja0w==} + peerDependencies: + payload: 3.0.0-beta.106 + react: ^19.0.0 || ^19.0.0-rc-06d0b89e-20240801 + react-dom: ^19.0.0 || ^19.0.0-rc-06d0b89e-20240801 + + '@payloadcms/richtext-lexical@3.0.0-beta.106': + resolution: {integrity: sha512-SB92SGFs/plFASifGL6w8atNMIEUpkatdWWCJXY/OstS++c3lqsB4brs9oWzuMUgdrTBHMXpiYndiK9xc6AS7A==} + engines: {node: ^18.20.2 || >=20.9.0} + peerDependencies: + '@faceless-ui/modal': 3.0.0-beta.2 + '@faceless-ui/scroll-info': 2.0.0-beta.0 + '@lexical/headless': 0.17.0 + '@lexical/link': 0.17.0 + '@lexical/list': 0.17.0 + '@lexical/mark': 0.17.0 + '@lexical/markdown': 0.17.0 + '@lexical/react': 0.17.0 + '@lexical/rich-text': 0.17.0 + '@lexical/selection': 0.17.0 + '@lexical/table': 0.17.0 + '@lexical/utils': 0.17.0 + '@payloadcms/next': 3.0.0-beta.106 + lexical: 0.17.0 + payload: 3.0.0-beta.106 + react: ^19.0.0 || ^19.0.0-rc-06d0b89e-20240801 + react-dom: ^19.0.0 || ^19.0.0-rc-06d0b89e-20240801 + + '@payloadcms/translations@3.0.0-beta.106': + resolution: {integrity: sha512-WHqeHXyz8WR7XgUxf8yzz6JwE4985boduCwm/SW7FrWo71Y34Q6MG62tU/pVJwudDnr/FP4Gv++8XdAr7YUeDg==} + + '@payloadcms/ui@3.0.0-beta.106': + resolution: {integrity: sha512-p0SDLg6itm5Dvy+gUJ9JJsb/v2uxeBoWrnG93CmLwQrzO4/p3rX2hDTS42PzhmvD4br0e+Qw1r9p3SjXmRRw3A==} + engines: {node: ^18.20.2 || >=20.9.0} + peerDependencies: + next: ^15.0.0-canary.104 + payload: 3.0.0-beta.106 + react: ^19.0.0 || ^19.0.0-rc-06d0b89e-20240801 + react-dom: ^19.0.0 || ^19.0.0-rc-06d0b89e-20240801 + + '@pkgjs/parseargs@0.11.0': + resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} + engines: {node: '>=14'} + + '@radix-ui/number@1.1.0': + resolution: {integrity: sha512-V3gRzhVNU1ldS5XhAPTom1fOIo4ccrjjJgmE+LI2h/WaFpHmx0MQApT+KZHnx8abG6Avtfcz4WoEciMnpFT3HQ==} + + '@radix-ui/primitive@1.1.0': + resolution: {integrity: sha512-4Z8dn6Upk0qk4P74xBhZ6Hd/w0mPEzOOLxy4xiPXOXqjF7jZS0VAKk7/x/H6FyY2zCkYJqePf1G5KmkmNJ4RBA==} + + '@radix-ui/react-arrow@1.1.0': + resolution: {integrity: sha512-FmlW1rCg7hBpEBwFbjHwCW6AmWLQM6g/v0Sn8XbP9NvmSZ2San1FpQeyPtufzOMSIx7Y4dzjlHoifhp+7NkZhw==} + peerDependencies: + '@types/react': npm:types-react@19.0.0-rc.0 + '@types/react-dom': npm:types-react-dom@19.0.0-rc.0 + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-checkbox@1.1.1': + resolution: {integrity: sha512-0i/EKJ222Afa1FE0C6pNJxDq1itzcl3HChE9DwskA4th4KRse8ojx8a1nVcOjwJdbpDLcz7uol77yYnQNMHdKw==} + peerDependencies: + '@types/react': npm:types-react@19.0.0-rc.0 + '@types/react-dom': npm:types-react-dom@19.0.0-rc.0 + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-collection@1.1.0': + resolution: {integrity: sha512-GZsZslMJEyo1VKm5L1ZJY8tGDxZNPAoUeQUIbKeJfoi7Q4kmig5AsgLMYYuyYbfjd8fBmFORAIwYAkXMnXZgZw==} + peerDependencies: + '@types/react': npm:types-react@19.0.0-rc.0 + '@types/react-dom': npm:types-react-dom@19.0.0-rc.0 + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-compose-refs@1.1.0': + resolution: {integrity: sha512-b4inOtiaOnYf9KWyO3jAeeCG6FeyfY6ldiEPanbUjWd+xIk5wZeHa8yVwmrJ2vderhu/BQvzCrJI0lHd+wIiqw==} + peerDependencies: + '@types/react': npm:types-react@19.0.0-rc.0 + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-context@1.1.0': + resolution: {integrity: sha512-OKrckBy+sMEgYM/sMmqmErVn0kZqrHPJze+Ql3DzYsDDp0hl0L62nx/2122/Bvps1qz645jlcu2tD9lrRSdf8A==} + peerDependencies: + '@types/react': npm:types-react@19.0.0-rc.0 + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-direction@1.1.0': + resolution: {integrity: sha512-BUuBvgThEiAXh2DWu93XsT+a3aWrGqolGlqqw5VU1kG7p/ZH2cuDlM1sRLNnY3QcBS69UIz2mcKhMxDsdewhjg==} + peerDependencies: + '@types/react': npm:types-react@19.0.0-rc.0 + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-dismissable-layer@1.1.0': + resolution: {integrity: sha512-/UovfmmXGptwGcBQawLzvn2jOfM0t4z3/uKffoBlj724+n3FvBbZ7M0aaBOmkp6pqFYpO4yx8tSVJjx3Fl2jig==} + peerDependencies: + '@types/react': npm:types-react@19.0.0-rc.0 + '@types/react-dom': npm:types-react-dom@19.0.0-rc.0 + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-focus-guards@1.1.0': + resolution: {integrity: sha512-w6XZNUPVv6xCpZUqb/yN9DL6auvpGX3C/ee6Hdi16v2UUy25HV2Q5bcflsiDyT/g5RwbPQ/GIT1vLkeRb+ITBw==} + peerDependencies: + '@types/react': npm:types-react@19.0.0-rc.0 + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-focus-scope@1.1.0': + resolution: {integrity: sha512-200UD8zylvEyL8Bx+z76RJnASR2gRMuxlgFCPAe/Q/679a/r0eK3MBVYMb7vZODZcffZBdob1EGnky78xmVvcA==} + peerDependencies: + '@types/react': npm:types-react@19.0.0-rc.0 + '@types/react-dom': npm:types-react-dom@19.0.0-rc.0 + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-id@1.1.0': + resolution: {integrity: sha512-EJUrI8yYh7WOjNOqpoJaf1jlFIH2LvtgAl+YcFqNCa+4hj64ZXmPkAKOFs/ukjz3byN6bdb/AVUqHkI8/uWWMA==} + peerDependencies: + '@types/react': npm:types-react@19.0.0-rc.0 + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-label@2.1.0': + resolution: {integrity: sha512-peLblDlFw/ngk3UWq0VnYaOLy6agTZZ+MUO/WhVfm14vJGML+xH4FAl2XQGLqdefjNb7ApRg6Yn7U42ZhmYXdw==} + peerDependencies: + '@types/react': npm:types-react@19.0.0-rc.0 + '@types/react-dom': npm:types-react-dom@19.0.0-rc.0 + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-popper@1.2.0': + resolution: {integrity: sha512-ZnRMshKF43aBxVWPWvbj21+7TQCvhuULWJ4gNIKYpRlQt5xGRhLx66tMp8pya2UkGHTSlhpXwmjqltDYHhw7Vg==} + peerDependencies: + '@types/react': npm:types-react@19.0.0-rc.0 + '@types/react-dom': npm:types-react-dom@19.0.0-rc.0 + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-portal@1.1.1': + resolution: {integrity: sha512-A3UtLk85UtqhzFqtoC8Q0KvR2GbXF3mtPgACSazajqq6A41mEQgo53iPzY4i6BwDxlIFqWIhiQ2G729n+2aw/g==} + peerDependencies: + '@types/react': npm:types-react@19.0.0-rc.0 + '@types/react-dom': npm:types-react-dom@19.0.0-rc.0 + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-presence@1.1.0': + resolution: {integrity: sha512-Gq6wuRN/asf9H/E/VzdKoUtT8GC9PQc9z40/vEr0VCJ4u5XvvhWIrSsCB6vD2/cH7ugTdSfYq9fLJCcM00acrQ==} + peerDependencies: + '@types/react': npm:types-react@19.0.0-rc.0 + '@types/react-dom': npm:types-react-dom@19.0.0-rc.0 + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-primitive@2.0.0': + resolution: {integrity: sha512-ZSpFm0/uHa8zTvKBDjLFWLo8dkr4MBsiDLz0g3gMUwqgLHz9rTaRRGYDgvZPtBJgYCBKXkS9fzmoySgr8CO6Cw==} + peerDependencies: + '@types/react': npm:types-react@19.0.0-rc.0 + '@types/react-dom': npm:types-react-dom@19.0.0-rc.0 + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-select@2.1.1': + resolution: {integrity: sha512-8iRDfyLtzxlprOo9IicnzvpsO1wNCkuwzzCM+Z5Rb5tNOpCdMvcc2AkzX0Fz+Tz9v6NJ5B/7EEgyZveo4FBRfQ==} + peerDependencies: + '@types/react': npm:types-react@19.0.0-rc.0 + '@types/react-dom': npm:types-react-dom@19.0.0-rc.0 + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-slot@1.1.0': + resolution: {integrity: sha512-FUCf5XMfmW4dtYl69pdS4DbxKy8nj4M7SafBgPllysxmdachynNflAdp/gCsnYWNDnge6tI9onzMp5ARYc1KNw==} + peerDependencies: + '@types/react': npm:types-react@19.0.0-rc.0 + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-callback-ref@1.1.0': + resolution: {integrity: sha512-CasTfvsy+frcFkbXtSJ2Zu9JHpN8TYKxkgJGWbjiZhFivxaeW7rMeZt7QELGVLaYVfFMsKHjb7Ak0nMEe+2Vfw==} + peerDependencies: + '@types/react': npm:types-react@19.0.0-rc.0 + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-controllable-state@1.1.0': + resolution: {integrity: sha512-MtfMVJiSr2NjzS0Aa90NPTnvTSg6C/JLCV7ma0W6+OMV78vd8OyRpID+Ng9LxzsPbLeuBnWBA1Nq30AtBIDChw==} + peerDependencies: + '@types/react': npm:types-react@19.0.0-rc.0 + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-escape-keydown@1.1.0': + resolution: {integrity: sha512-L7vwWlR1kTTQ3oh7g1O0CBF3YCyyTj8NmhLR+phShpyA50HCfBFKVJTpshm9PzLiKmehsrQzTYTpX9HvmC9rhw==} + peerDependencies: + '@types/react': npm:types-react@19.0.0-rc.0 + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-layout-effect@1.1.0': + resolution: {integrity: sha512-+FPE0rOdziWSrH9athwI1R0HDVbWlEhd+FR+aSDk4uWGmSJ9Z54sdZVDQPZAinJhJXwfT+qnj969mCsT2gfm5w==} + peerDependencies: + '@types/react': npm:types-react@19.0.0-rc.0 + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-previous@1.1.0': + resolution: {integrity: sha512-Z/e78qg2YFnnXcW88A4JmTtm4ADckLno6F7OXotmkQfeuCVaKuYzqAATPhVzl3delXE7CxIV8shofPn3jPc5Og==} + peerDependencies: + '@types/react': npm:types-react@19.0.0-rc.0 + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-rect@1.1.0': + resolution: {integrity: sha512-0Fmkebhr6PiseyZlYAOtLS+nb7jLmpqTrJyv61Pe68MKYW6OWdRE2kI70TaYY27u7H0lajqM3hSMMLFq18Z7nQ==} + peerDependencies: + '@types/react': npm:types-react@19.0.0-rc.0 + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-size@1.1.0': + resolution: {integrity: sha512-XW3/vWuIXHa+2Uwcc2ABSfcCledmXhhQPlGbfcRXbiUQI5Icjcg19BGCZVKKInYbvUCut/ufbbLLPFC5cbb1hw==} + peerDependencies: + '@types/react': npm:types-react@19.0.0-rc.0 + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-visually-hidden@1.1.0': + resolution: {integrity: sha512-N8MDZqtgCgG5S3aV60INAB475osJousYpZ4cTJ2cFbMpdHS5Y6loLTH8LPtkj2QN0x93J30HT/M3qJXM0+lyeQ==} + peerDependencies: + '@types/react': npm:types-react@19.0.0-rc.0 + '@types/react-dom': npm:types-react-dom@19.0.0-rc.0 + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/rect@1.1.0': + resolution: {integrity: sha512-A9+lCBZoaMJlVKcRBz2YByCG+Cp2t6nAnMnNba+XiWxnj6r4JUFqfsgwocMBZU9LPtdxC6wB56ySYpc7LQIoJg==} + + '@react-email/render@0.0.7': + resolution: {integrity: sha512-hMMhxk6TpOcDC5qnKzXPVJoVGEwfm+U5bGOPH+MyTTlx0F02RLQygcATBKsbP7aI/mvkmBAZoFbgPIHop7ovug==} + engines: {node: '>=16.0.0'} + + '@rtsao/scc@1.1.0': + resolution: {integrity: sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==} + + '@rushstack/eslint-patch@1.10.4': + resolution: {integrity: sha512-WJgX9nzTqknM393q1QJDJmoW28kUfEnybeTfVNcNAPnIx210RXm2DiXiHzfNPJNIUUb1tJnz/l4QGtJ30PgWmA==} + + '@selderee/plugin-htmlparser2@0.10.0': + resolution: {integrity: sha512-gW69MEamZ4wk1OsOq1nG1jcyhXIQcnrsX5JwixVw/9xaiav8TCyjESAruu1Rz9yyInhgBXxkNwMeygKnN2uxNA==} + + '@smithy/abort-controller@3.1.4': + resolution: {integrity: sha512-VupaALAQlXViW3/enTf/f5l5JZYSAxoJL7f0nanhNNKnww6DGCg1oYIuNP78KDugnkwthBO6iEcym16HhWV8RQ==} + engines: {node: '>=16.0.0'} + + '@smithy/chunked-blob-reader-native@3.0.0': + resolution: {integrity: sha512-VDkpCYW+peSuM4zJip5WDfqvg2Mo/e8yxOv3VF1m11y7B8KKMKVFtmZWDe36Fvk8rGuWrPZHHXZ7rR7uM5yWyg==} + + '@smithy/chunked-blob-reader@3.0.0': + resolution: {integrity: sha512-sbnURCwjF0gSToGlsBiAmd1lRCmSn72nu9axfJu5lIx6RUEgHu6GwTMbqCdhQSi0Pumcm5vFxsi9XWXb2mTaoA==} + + '@smithy/config-resolver@3.0.8': + resolution: {integrity: sha512-Tv1obAC18XOd2OnDAjSWmmthzx6Pdeh63FbLin8MlPiuJ2ATpKkq0NcNOJFr0dO+JmZXnwu8FQxKJ3TKJ3Hulw==} + engines: {node: '>=16.0.0'} + + '@smithy/core@2.4.3': + resolution: {integrity: sha512-4LTusLqFMRVQUfC3RNuTg6IzYTeJNpydRdTKq7J5wdEyIRQSu3rGIa3s80mgG2hhe6WOZl9IqTSo1pgbn6EHhA==} + engines: {node: '>=16.0.0'} + + '@smithy/credential-provider-imds@3.2.3': + resolution: {integrity: sha512-VoxMzSzdvkkjMJNE38yQgx4CfnmT+Z+5EUXkg4x7yag93eQkVQgZvN3XBSHC/ylfBbLbAtdu7flTCChX9I+mVg==} + engines: {node: '>=16.0.0'} + + '@smithy/eventstream-codec@3.1.5': + resolution: {integrity: sha512-6pu+PT2r+5ZnWEV3vLV1DzyrpJ0TmehQlniIDCSpZg6+Ji2SfOI38EqUyQ+O8lotVElCrfVc9chKtSMe9cmCZQ==} + + '@smithy/eventstream-serde-browser@3.0.9': + resolution: {integrity: sha512-PiQLo6OQmZAotJweIcObL1H44gkvuJACKMNqpBBe5Rf2Ax1DOcGi/28+feZI7yTe1ERHlQQaGnm8sSkyDUgsMg==} + engines: {node: '>=16.0.0'} + + '@smithy/eventstream-serde-config-resolver@3.0.6': + resolution: {integrity: sha512-iew15It+c7WfnVowWkt2a7cdPp533LFJnpjDQgfZQcxv2QiOcyEcea31mnrk5PVbgo0nNH3VbYGq7myw2q/F6A==} + engines: {node: '>=16.0.0'} + + '@smithy/eventstream-serde-node@3.0.8': + resolution: {integrity: sha512-6m+wI+fT0na+6oao6UqALVA38fsScCpoG5UO/A8ZSyGLnPM2i4MS1cFUhpuALgvLMxfYoTCh7qSeJa0aG4IWpQ==} + engines: {node: '>=16.0.0'} + + '@smithy/eventstream-serde-universal@3.0.8': + resolution: {integrity: sha512-09tqzIQ6e+7jLqGvRji1yJoDbL/zob0OFhq75edgStWErGLf16+yI5hRc/o9/YAybOhUZs/swpW2SPn892G5Gg==} + engines: {node: '>=16.0.0'} + + '@smithy/fetch-http-handler@3.2.7': + resolution: {integrity: sha512-Ra6IPI1spYLO+t62/3jQbodjOwAbto9wlpJdHZwkycm0Kit+GVpzHW/NMmSgY4rK1bjJ4qLAmCnaBzePO5Nkkg==} + + '@smithy/hash-blob-browser@3.1.5': + resolution: {integrity: sha512-Vi3eoNCmao4iKglS80ktYnBOIqZhjbDDwa1IIbF/VaJ8PsHnZTQ5wSicicPrU7nTI4JPFn92/txzWkh4GlK18Q==} + + '@smithy/hash-node@3.0.6': + resolution: {integrity: sha512-c/FHEdKK/7DU2z6ZE91L36ahyXWayR3B+FzELjnYq7wH5YqIseM24V+pWCS9kFn1Ln8OFGTf+pyYPiHZuX0s/Q==} + engines: {node: '>=16.0.0'} + + '@smithy/hash-stream-node@3.1.5': + resolution: {integrity: sha512-61CyFCzqN3VBfcnGX7mof/rkzLb8oHjm4Lr6ZwBIRpBssBb8d09ChrZAqinP2rUrA915BRNkq9NpJz18N7+3hQ==} + engines: {node: '>=16.0.0'} + + '@smithy/invalid-dependency@3.0.6': + resolution: {integrity: sha512-czM7Ioq3s8pIXht7oD+vmgy4Wfb4XavU/k/irO8NdXFFOx7YAlsCCcKOh/lJD1mJSYQqiR7NmpZ9JviryD/7AQ==} + + '@smithy/is-array-buffer@2.2.0': + resolution: {integrity: sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA==} + engines: {node: '>=14.0.0'} + + '@smithy/is-array-buffer@3.0.0': + resolution: {integrity: sha512-+Fsu6Q6C4RSJiy81Y8eApjEB5gVtM+oFKTffg+jSuwtvomJJrhUJBu2zS8wjXSgH/g1MKEWrzyChTBe6clb5FQ==} + engines: {node: '>=16.0.0'} + + '@smithy/md5-js@3.0.6': + resolution: {integrity: sha512-Ze690T8O3M5SVbb70WormwrKzVf9QQRtIuxtJDgpUQDkmt+PtdYDetBbyCbF9ryupxLw6tgzWKgwffAShhVIXQ==} + + '@smithy/middleware-content-length@3.0.8': + resolution: {integrity: sha512-VuyszlSO49WKh3H9/kIO2kf07VUwGV80QRiaDxUfP8P8UKlokz381ETJvwLhwuypBYhLymCYyNhB3fLAGBX2og==} + engines: {node: '>=16.0.0'} + + '@smithy/middleware-endpoint@3.1.3': + resolution: {integrity: sha512-KeM/OrK8MVFUsoJsmCN0MZMVPjKKLudn13xpgwIMpGTYpA8QZB2Xq5tJ+RE6iu3A6NhOI4VajDTwBsm8pwwrhg==} + engines: {node: '>=16.0.0'} + + '@smithy/middleware-retry@3.0.18': + resolution: {integrity: sha512-YU1o/vYob6vlqZdd97MN8cSXRToknLXhFBL3r+c9CZcnxkO/rgNZ++CfgX2vsmnEKvlqdi26+SRtSzlVp5z6Mg==} + engines: {node: '>=16.0.0'} + + '@smithy/middleware-serde@3.0.6': + resolution: {integrity: sha512-KKTUSl1MzOM0MAjGbudeaVNtIDo+PpekTBkCNwvfZlKndodrnvRo+00USatiyLOc0ujjO9UydMRu3O9dYML7ag==} + engines: {node: '>=16.0.0'} + + '@smithy/middleware-stack@3.0.6': + resolution: {integrity: sha512-2c0eSYhTQ8xQqHMcRxLMpadFbTXg6Zla5l0mwNftFCZMQmuhI7EbAJMx6R5eqfuV3YbJ3QGyS3d5uSmrHV8Khg==} + engines: {node: '>=16.0.0'} + + '@smithy/node-config-provider@3.1.7': + resolution: {integrity: sha512-g3mfnC3Oo8pOI0dYuPXLtdW1WGVb3bR2tkV21GNkm0ZvQjLTtamXAwCWt/FCb0HGvKt3gHHmF1XerG0ICfalOg==} + engines: {node: '>=16.0.0'} + + '@smithy/node-http-handler@3.2.2': + resolution: {integrity: sha512-42Cy4/oT2O+00aiG1iQ7Kd7rE6q8j7vI0gFfnMlUiATvyo8vefJkhb7O10qZY0jAqo5WZdUzfl9IV6wQ3iMBCg==} + engines: {node: '>=16.0.0'} + + '@smithy/property-provider@3.1.6': + resolution: {integrity: sha512-NK3y/T7Q/Bw+Z8vsVs9MYIQ5v7gOX7clyrXcwhhIBQhbPgRl6JDrZbusO9qWDhcEus75Tg+VCxtIRfo3H76fpw==} + engines: {node: '>=16.0.0'} + + '@smithy/protocol-http@4.1.3': + resolution: {integrity: sha512-GcbMmOYpH9iRqtC05RbRnc/0FssxSTHlmaNhYBTgSgNCYpdR3Kt88u5GAZTBmouzv+Zlj/VRv92J9ruuDeJuEw==} + engines: {node: '>=16.0.0'} + + '@smithy/querystring-builder@3.0.6': + resolution: {integrity: sha512-sQe08RunoObe+Usujn9+R2zrLuQERi3CWvRO3BvnoWSYUaIrLKuAIeY7cMeDax6xGyfIP3x/yFWbEKSXvOnvVg==} + engines: {node: '>=16.0.0'} + + '@smithy/querystring-parser@3.0.6': + resolution: {integrity: sha512-UJKw4LlEkytzz2Wq+uIdHf6qOtFfee/o7ruH0jF5I6UAuU+19r9QV7nU3P/uI0l6+oElRHmG/5cBBcGJrD7Ozg==} + engines: {node: '>=16.0.0'} + + '@smithy/service-error-classification@3.0.6': + resolution: {integrity: sha512-53SpchU3+DUZrN7J6sBx9tBiCVGzsib2e4sc512Q7K9fpC5zkJKs6Z9s+qbMxSYrkEkle6hnMtrts7XNkMJJMg==} + engines: {node: '>=16.0.0'} + + '@smithy/shared-ini-file-loader@3.1.7': + resolution: {integrity: sha512-IA4K2qTJYXkF5OfVN4vsY1hfnUZjaslEE8Fsr/gGFza4TAC2A9NfnZuSY2srQIbt9bwtjHiAayrRVgKse4Q7fA==} + engines: {node: '>=16.0.0'} + + '@smithy/signature-v4@4.1.3': + resolution: {integrity: sha512-YD2KYSCEEeFHcWZ1E3mLdAaHl8T/TANh6XwmocQ6nPcTdBfh4N5fusgnblnWDlnlU1/cUqEq3PiGi22GmT2Lkg==} + engines: {node: '>=16.0.0'} + + '@smithy/smithy-client@3.3.2': + resolution: {integrity: sha512-RKDfhF2MTwXl7jan5d7QfS9eCC6XJbO3H+EZAvLQN8A5in4ib2Ml4zoeLo57w9QrqFekBPcsoC2hW3Ekw4vQ9Q==} + engines: {node: '>=16.0.0'} + + '@smithy/types@3.4.2': + resolution: {integrity: sha512-tHiFcfcVedVBHpmHUEUHOCCih8iZbIAYn9NvPsNzaPm/237I3imdDdZoOC8c87H5HBAVEa06tTgb+OcSWV9g5w==} + engines: {node: '>=16.0.0'} + + '@smithy/url-parser@3.0.6': + resolution: {integrity: sha512-47Op/NU8Opt49KyGpHtVdnmmJMsp2hEwBdyjuFB9M2V5QVOwA7pBhhxKN5z6ztKGrMw76gd8MlbPuzzvaAncuQ==} + + '@smithy/util-base64@3.0.0': + resolution: {integrity: sha512-Kxvoh5Qtt0CDsfajiZOCpJxgtPHXOKwmM+Zy4waD43UoEMA+qPxxa98aE/7ZhdnBFZFXMOiBR5xbcaMhLtznQQ==} + engines: {node: '>=16.0.0'} + + '@smithy/util-body-length-browser@3.0.0': + resolution: {integrity: sha512-cbjJs2A1mLYmqmyVl80uoLTJhAcfzMOyPgjwAYusWKMdLeNtzmMz9YxNl3/jRLoxSS3wkqkf0jwNdtXWtyEBaQ==} + + '@smithy/util-body-length-node@3.0.0': + resolution: {integrity: sha512-Tj7pZ4bUloNUP6PzwhN7K386tmSmEET9QtQg0TgdNOnxhZvCssHji+oZTUIuzxECRfG8rdm2PMw2WCFs6eIYkA==} + engines: {node: '>=16.0.0'} + + '@smithy/util-buffer-from@2.2.0': + resolution: {integrity: sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA==} + engines: {node: '>=14.0.0'} + + '@smithy/util-buffer-from@3.0.0': + resolution: {integrity: sha512-aEOHCgq5RWFbP+UDPvPot26EJHjOC+bRgse5A8V3FSShqd5E5UN4qc7zkwsvJPPAVsf73QwYcHN1/gt/rtLwQA==} + engines: {node: '>=16.0.0'} + + '@smithy/util-config-provider@3.0.0': + resolution: {integrity: sha512-pbjk4s0fwq3Di/ANL+rCvJMKM5bzAQdE5S/6RL5NXgMExFAi6UgQMPOm5yPaIWPpr+EOXKXRonJ3FoxKf4mCJQ==} + engines: {node: '>=16.0.0'} + + '@smithy/util-defaults-mode-browser@3.0.18': + resolution: {integrity: sha512-/eveCzU6Z6Yw8dlYQLA4rcK30XY0E4L3lD3QFHm59mzDaWYelrXE1rlynuT3J6qxv+5yNy3a1JuzhG5hk5hcmw==} + engines: {node: '>= 10.0.0'} + + '@smithy/util-defaults-mode-node@3.0.18': + resolution: {integrity: sha512-9cfzRjArtOFPlTYRREJk00suUxVXTgbrzVncOyMRTUeMKnecG/YentLF3cORa+R6mUOMSrMSnT18jos1PKqK6Q==} + engines: {node: '>= 10.0.0'} + + '@smithy/util-endpoints@2.1.2': + resolution: {integrity: sha512-FEISzffb4H8DLzGq1g4MuDpcv6CIG15fXoQzDH9SjpRJv6h7J++1STFWWinilG0tQh9H1v2UKWG19Jjr2B16zQ==} + engines: {node: '>=16.0.0'} + + '@smithy/util-hex-encoding@3.0.0': + resolution: {integrity: sha512-eFndh1WEK5YMUYvy3lPlVmYY/fZcQE1D8oSf41Id2vCeIkKJXPcYDCZD+4+xViI6b1XSd7tE+s5AmXzz5ilabQ==} + engines: {node: '>=16.0.0'} + + '@smithy/util-middleware@3.0.6': + resolution: {integrity: sha512-BxbX4aBhI1O9p87/xM+zWy0GzT3CEVcXFPBRDoHAM+pV0eSW156pR+PSYEz0DQHDMYDsYAflC2bQNz2uaDBUZQ==} + engines: {node: '>=16.0.0'} + + '@smithy/util-retry@3.0.6': + resolution: {integrity: sha512-BRZiuF7IwDntAbevqMco67an0Sr9oLQJqqRCsSPZZHYRnehS0LHDAkJk/pSmI7Z8c/1Vet294H7fY2fWUgB+Rg==} + engines: {node: '>=16.0.0'} + + '@smithy/util-stream@3.1.6': + resolution: {integrity: sha512-lQEUfTx1ht5CRdvIjdAN/gUL6vQt2wSARGGLaBHNe+iJSkRHlWzY+DOn0mFTmTgyU3jcI5n9DkT5gTzYuSOo6A==} + engines: {node: '>=16.0.0'} + + '@smithy/util-uri-escape@3.0.0': + resolution: {integrity: sha512-LqR7qYLgZTD7nWLBecUi4aqolw8Mhza9ArpNEQ881MJJIU2sE5iHCK6TdyqqzcDLy0OPe10IY4T8ctVdtynubg==} + engines: {node: '>=16.0.0'} + + '@smithy/util-utf8@2.3.0': + resolution: {integrity: sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A==} + engines: {node: '>=14.0.0'} + + '@smithy/util-utf8@3.0.0': + resolution: {integrity: sha512-rUeT12bxFnplYDe815GXbq/oixEGHfRFFtcTF3YdDi/JaENIM6aSYYLJydG83UNzLXeRI5K8abYd/8Sp/QM0kA==} + engines: {node: '>=16.0.0'} + + '@smithy/util-waiter@3.1.5': + resolution: {integrity: sha512-jYOSvM3H6sZe3CHjzD2VQNCjWBJs+4DbtwBMvUp9y5EnnwNa7NQxTeYeQw0CKCAdGGZ3QvVkyJmvbvs5M/B10A==} + engines: {node: '>=16.0.0'} + + '@swc/counter@0.1.3': + resolution: {integrity: sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==} + + '@swc/helpers@0.5.12': + resolution: {integrity: sha512-KMZNXiGibsW9kvZAO1Pam2JPTDBm+KSHMMHWdsyI/1DbIZjT2A6Gy3hblVXUMEDvUAKq+e0vL0X0o54owWji7g==} + + '@tailwindcss/typography@0.5.15': + resolution: {integrity: sha512-AqhlCXl+8grUz8uqExv5OTtgpjuVIwFTSXTrh8y9/pw6q2ek7fJ+Y8ZEVw7EB2DCcuCOtEjf9w3+J3rzts01uA==} + peerDependencies: + tailwindcss: '>=3.0.0 || insiders || >=4.0.0-alpha.20' + + '@tokenizer/token@0.3.0': + resolution: {integrity: sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A==} + + '@types/busboy@1.5.4': + resolution: {integrity: sha512-kG7WrUuAKK0NoyxfQHsVE6j1m01s6kMma64E+OZenQABMQyTJop1DumUWcLwAQ2JzpefU7PDYoRDKl8uZosFjw==} + + '@types/escape-html@1.0.4': + resolution: {integrity: sha512-qZ72SFTgUAZ5a7Tj6kf2SHLetiH5S6f8G5frB2SPQ3EyF02kxdyBFf4Tz4banE3xCgGnKgWLt//a6VuYHKYJTg==} + + '@types/eslint@8.44.2': + resolution: {integrity: sha512-sdPRb9K6iL5XZOmBubg8yiFp5yS/JdUDQsq5e6h95km91MCYMuvp7mh1fjPEYUhvHepKpZOjnEaMBR4PxjWDzg==} + + '@types/estree@1.0.5': + resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==} + + '@types/json-schema@7.0.15': + resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} + + '@types/json5@0.0.29': + resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} + + '@types/jsonwebtoken@9.0.6': + resolution: {integrity: sha512-/5hndP5dCjloafCXns6SZyESp3Ldq7YjH3zwzwczYnjxIT0Fqzk5ROSYVGfFyczIue7IUEj8hkvLbPoLQ18vQw==} + + '@types/node@22.5.4': + resolution: {integrity: sha512-FDuKUJQm/ju9fT/SeX/6+gBzoPzlVCzfzmGkwKvRHQVxi4BntVbyIwf6a4Xn62mrvndLiml6z/UBXIdEVjQLXg==} + + '@types/parse-json@4.0.2': + resolution: {integrity: sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==} + + '@types/prismjs@1.26.4': + resolution: {integrity: sha512-rlAnzkW2sZOjbqZ743IHUhFcvzaGbqijwOu8QZnZCjfQzBqFE3s4lOTJEsxikImav9uzz/42I+O7YUs1mWgMlg==} + + '@types/react-transition-group@4.4.11': + resolution: {integrity: sha512-RM05tAniPZ5DZPzzNFP+DmrcOdD0efDUxMy3145oljWSl3x9ZV5vhme98gTxFrj2lhXvmGNnUiuDyJgY9IKkNA==} + + '@types/semver@7.5.8': + resolution: {integrity: sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==} + + '@types/uuid@10.0.0': + resolution: {integrity: sha512-7gqG38EyHgyP1S+7+xomFtL+ZNHcKv6DwNaCZmJmo1vgMugyF3TCnXVg4t1uk89mLNwnLtnY3TpOpCOyp1/xHQ==} + + '@types/webidl-conversions@7.0.3': + resolution: {integrity: sha512-CiJJvcRtIgzadHCYXw7dqEnMNRjhGZlYK05Mj9OyktqV8uVT8fD2BFOB7S1uwBE3Kj2Z+4UyPmFw/Ixgw/LAlA==} + + '@types/whatwg-url@8.2.2': + resolution: {integrity: sha512-FtQu10RWgn3D9U4aazdwIE2yzphmTJREDqNdODHrbrZmmMqI0vMheC/6NE/J1Yveaj8H+ela+YwWTjq5PGmuhA==} + + '@typescript-eslint/eslint-plugin@6.6.0': + resolution: {integrity: sha512-CW9YDGTQnNYMIo5lMeuiIG08p4E0cXrXTbcZ2saT/ETE7dWUrNxlijsQeU04qAAKkILiLzdQz+cGFxCJjaZUmA==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + '@typescript-eslint/parser': ^6.0.0 || ^6.0.0-alpha + eslint: ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + '@typescript-eslint/eslint-plugin@7.18.0': + resolution: {integrity: sha512-94EQTWZ40mzBc42ATNIBimBEDltSJ9RQHCC8vc/PDbxi4k8dVwUAv4o98dk50M1zB+JGFxp43FP7f8+FP8R6Sw==} + engines: {node: ^18.18.0 || >=20.0.0} + peerDependencies: + '@typescript-eslint/parser': ^7.0.0 + eslint: ^8.56.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + '@typescript-eslint/parser@6.6.0': + resolution: {integrity: sha512-setq5aJgUwtzGrhW177/i+DMLqBaJbdwGj2CPIVFFLE0NCliy5ujIdLHd2D1ysmlmsjdL2GWW+hR85neEfc12w==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + eslint: ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + '@typescript-eslint/parser@7.18.0': + resolution: {integrity: sha512-4Z+L8I2OqhZV8qA132M4wNL30ypZGYOQVBfMgxDH/K5UX0PNqTu1c6za9ST5r9+tavvHiTWmBnKzpCJ/GlVFtg==} + engines: {node: ^18.18.0 || >=20.0.0} + peerDependencies: + eslint: ^8.56.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + '@typescript-eslint/scope-manager@5.62.0': + resolution: {integrity: sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + '@typescript-eslint/scope-manager@6.21.0': + resolution: {integrity: sha512-OwLUIWZJry80O99zvqXVEioyniJMa+d2GrqpUTqi5/v5D5rOrppJVBPa0yKCblcigC0/aYAzxxqQ1B+DS2RYsg==} + engines: {node: ^16.0.0 || >=18.0.0} + + '@typescript-eslint/scope-manager@6.6.0': + resolution: {integrity: sha512-pT08u5W/GT4KjPUmEtc2kSYvrH8x89cVzkA0Sy2aaOUIw6YxOIjA8ilwLr/1fLjOedX1QAuBpG9XggWqIIfERw==} + engines: {node: ^16.0.0 || >=18.0.0} + + '@typescript-eslint/scope-manager@7.18.0': + resolution: {integrity: sha512-jjhdIE/FPF2B7Z1uzc6i3oWKbGcHb87Qw7AWj6jmEqNOfDFbJWtjt/XfwCpvNkpGWlcJaog5vTR+VV8+w9JflA==} + engines: {node: ^18.18.0 || >=20.0.0} + + '@typescript-eslint/type-utils@6.6.0': + resolution: {integrity: sha512-8m16fwAcEnQc69IpeDyokNO+D5spo0w1jepWWY2Q6y5ZKNuj5EhVQXjtVAeDDqvW6Yg7dhclbsz6rTtOvcwpHg==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + eslint: ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + '@typescript-eslint/type-utils@7.18.0': + resolution: {integrity: sha512-XL0FJXuCLaDuX2sYqZUUSOJ2sG5/i1AAze+axqmLnSkNEVMVYLF+cbwlB2w8D1tinFuSikHmFta+P+HOofrLeA==} + engines: {node: ^18.18.0 || >=20.0.0} + peerDependencies: + eslint: ^8.56.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + '@typescript-eslint/types@5.62.0': + resolution: {integrity: sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + '@typescript-eslint/types@6.21.0': + resolution: {integrity: sha512-1kFmZ1rOm5epu9NZEZm1kckCDGj5UJEf7P1kliH4LKu/RkwpsfqqGmY2OOcUs18lSlQBKLDYBOGxRVtrMN5lpg==} + engines: {node: ^16.0.0 || >=18.0.0} + + '@typescript-eslint/types@6.6.0': + resolution: {integrity: sha512-CB6QpJQ6BAHlJXdwUmiaXDBmTqIE2bzGTDLADgvqtHWuhfNP3rAOK7kAgRMAET5rDRr9Utt+qAzRBdu3AhR3sg==} + engines: {node: ^16.0.0 || >=18.0.0} + + '@typescript-eslint/types@7.18.0': + resolution: {integrity: sha512-iZqi+Ds1y4EDYUtlOOC+aUmxnE9xS/yCigkjA7XpTKV6nCBd3Hp/PRGGmdwnfkV2ThMyYldP1wRpm/id99spTQ==} + engines: {node: ^18.18.0 || >=20.0.0} + + '@typescript-eslint/typescript-estree@5.62.0': + resolution: {integrity: sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + '@typescript-eslint/typescript-estree@6.21.0': + resolution: {integrity: sha512-6npJTkZcO+y2/kr+z0hc4HwNfrrP4kNYh57ek7yCNlrBjWQ1Y0OS7jiZTkgumrvkX5HkEKXFZkkdFNkaW2wmUQ==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + '@typescript-eslint/typescript-estree@6.6.0': + resolution: {integrity: sha512-hMcTQ6Al8MP2E6JKBAaSxSVw5bDhdmbCEhGW/V8QXkb9oNsFkA4SBuOMYVPxD3jbtQ4R/vSODBsr76R6fP3tbA==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + '@typescript-eslint/typescript-estree@7.18.0': + resolution: {integrity: sha512-aP1v/BSPnnyhMHts8cf1qQ6Q1IFwwRvAQGRvBFkWlo3/lH29OXA3Pts+c10nxRxIBrDnoMqzhgdwVe5f2D6OzA==} + engines: {node: ^18.18.0 || >=20.0.0} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + '@typescript-eslint/utils@5.62.0': + resolution: {integrity: sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + + '@typescript-eslint/utils@6.21.0': + resolution: {integrity: sha512-NfWVaC8HP9T8cbKQxHcsJBY5YE1O33+jpMwN45qzWWaPDZgLIbo12toGMWnmhvCpd3sIxkpDw3Wv1B3dYrbDQQ==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + eslint: ^7.0.0 || ^8.0.0 + + '@typescript-eslint/utils@6.6.0': + resolution: {integrity: sha512-mPHFoNa2bPIWWglWYdR0QfY9GN0CfvvXX1Sv6DlSTive3jlMTUy+an67//Gysc+0Me9pjitrq0LJp0nGtLgftw==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + eslint: ^7.0.0 || ^8.0.0 + + '@typescript-eslint/utils@7.18.0': + resolution: {integrity: sha512-kK0/rNa2j74XuHVcoCZxdFBMF+aq/vH83CXAOHieC+2Gis4mF8jJXT5eAfyD3K0sAxtPuwxaIOIOvhwzVDt/kw==} + engines: {node: ^18.18.0 || >=20.0.0} + peerDependencies: + eslint: ^8.56.0 + + '@typescript-eslint/visitor-keys@5.62.0': + resolution: {integrity: sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + '@typescript-eslint/visitor-keys@6.21.0': + resolution: {integrity: sha512-JJtkDduxLi9bivAB+cYOVMtbkqdPOhZ+ZI5LC47MIRrDV4Yn2o+ZnW10Nkmr28xRpSpdJ6Sm42Hjf2+REYXm0A==} + engines: {node: ^16.0.0 || >=18.0.0} + + '@typescript-eslint/visitor-keys@6.6.0': + resolution: {integrity: sha512-L61uJT26cMOfFQ+lMZKoJNbAEckLe539VhTxiGHrWl5XSKQgA0RTBZJW2HFPy5T0ZvPVSD93QsrTKDkfNwJGyQ==} + engines: {node: ^16.0.0 || >=18.0.0} + + '@typescript-eslint/visitor-keys@7.18.0': + resolution: {integrity: sha512-cDF0/Gf81QpY3xYyJKDV14Zwdmid5+uuENhjH2EqFaF0ni+yAyq/LzMaIJdhNJXZI7uLzwIlA+V7oWoyn6Curg==} + engines: {node: ^18.18.0 || >=20.0.0} + + '@ungap/structured-clone@1.2.0': + resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==} + + abbrev@2.0.0: + resolution: {integrity: sha512-6/mh1E2u2YgEsCHdY0Yx5oW+61gZU+1vXaoiHHrpKeuRNNgFvS+/jrwHiQhB5apAf5oB7UB7E19ol2R2LKH8hQ==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + + abort-controller@3.0.0: + resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==} + engines: {node: '>=6.5'} + + acorn-jsx@5.3.2: + resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + + acorn@8.12.1: + resolution: {integrity: sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==} + engines: {node: '>=0.4.0'} + hasBin: true + + ajv@6.12.6: + resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} + + ajv@8.17.1: + resolution: {integrity: sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==} + + amazon-cognito-identity-js@6.3.12: + resolution: {integrity: sha512-s7NKDZgx336cp+oDeUtB2ZzT8jWJp/v2LWuYl+LQtMEODe22RF1IJ4nRiDATp+rp1pTffCZcm44Quw4jx2bqNg==} + + ansi-regex@5.0.1: + resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} + engines: {node: '>=8'} + + ansi-regex@6.1.0: + resolution: {integrity: sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==} + engines: {node: '>=12'} + + ansi-styles@3.2.1: + resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} + engines: {node: '>=4'} + + ansi-styles@4.3.0: + resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} + engines: {node: '>=8'} + + ansi-styles@6.2.1: + resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} + engines: {node: '>=12'} + + any-promise@1.3.0: + resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} + + anymatch@3.1.3: + resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} + engines: {node: '>= 8'} + + arg@5.0.2: + resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} + + argparse@2.0.1: + resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} + + aria-hidden@1.2.4: + resolution: {integrity: sha512-y+CcFFwelSXpLZk/7fMB2mUbGtX9lKycf1MWJ7CaTIERyitVlyQx6C+sxcROU2BAJ24OiZyK+8wj2i8AlBoS3A==} + engines: {node: '>=10'} + + aria-query@5.1.3: + resolution: {integrity: sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ==} + + aria-query@5.3.1: + resolution: {integrity: sha512-Z/ZeOgVl7bcSYZ/u/rh0fOpvEpq//LZmdbkXyc7syVzjPAhfOa9ebsdTSjEBDU4vs5nC98Kfduj1uFo0qyET3g==} + engines: {node: '>= 0.4'} + + array-buffer-byte-length@1.0.1: + resolution: {integrity: sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==} + engines: {node: '>= 0.4'} + + array-includes@3.1.8: + resolution: {integrity: sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==} + engines: {node: '>= 0.4'} + + array-union@2.1.0: + resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} + engines: {node: '>=8'} + + array.prototype.findlast@1.2.5: + resolution: {integrity: sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==} + engines: {node: '>= 0.4'} + + array.prototype.findlastindex@1.2.5: + resolution: {integrity: sha512-zfETvRFA8o7EiNn++N5f/kaCw221hrpGsDmcpndVupkPzEc1Wuf3VgC0qby1BbHs7f5DVYjgtEU2LLh5bqeGfQ==} + engines: {node: '>= 0.4'} + + array.prototype.flat@1.3.2: + resolution: {integrity: sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==} + engines: {node: '>= 0.4'} + + array.prototype.flatmap@1.3.2: + resolution: {integrity: sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==} + engines: {node: '>= 0.4'} + + array.prototype.tosorted@1.1.4: + resolution: {integrity: sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA==} + engines: {node: '>= 0.4'} + + arraybuffer.prototype.slice@1.0.3: + resolution: {integrity: sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==} + engines: {node: '>= 0.4'} + + ast-types-flow@0.0.7: + resolution: {integrity: sha512-eBvWn1lvIApYMhzQMsu9ciLfkBY499mFZlNqG+/9WR7PVlroQw0vG30cOQQbaKz3sCEc44TAOu2ykzqXSNnwag==} + + ast-types-flow@0.0.8: + resolution: {integrity: sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==} + + asynckit@0.4.0: + resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} + + atomic-sleep@1.0.0: + resolution: {integrity: sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ==} + engines: {node: '>=8.0.0'} + + autoprefixer@10.4.20: + resolution: {integrity: sha512-XY25y5xSv/wEoqzDyXXME4AFfkZI0P23z6Fs3YgymDnKJkCGOnkL0iTxCa85UTqaSgfcqyf3UA6+c7wUvx/16g==} + engines: {node: ^10 || ^12 || >=14} + hasBin: true + peerDependencies: + postcss: ^8.1.0 + + available-typed-arrays@1.0.7: + resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==} + engines: {node: '>= 0.4'} + + axe-core@4.10.0: + resolution: {integrity: sha512-Mr2ZakwQ7XUAjp7pAwQWRhhK8mQQ6JAaNWSjmjxil0R8BPioMtQsTLOolGYkji1rcL++3dCqZA3zWqpT+9Ew6g==} + engines: {node: '>=4'} + + axios@1.4.0: + resolution: {integrity: sha512-S4XCWMEmzvo64T9GfvQDOXgYRDJ/wsSZc7Jvdgx5u1sd0JwsuPLqb3SYmusag+edF6ziyMensPVqLTSc1PiSEA==} + + axobject-query@3.2.4: + resolution: {integrity: sha512-aPTElBrbifBU1krmZxGZOlBkslORe7Ll7+BDnI50Wy4LgOt69luMgevkDfTq1O/ZgprooPCtWpjCwKSZw/iZ4A==} + engines: {node: '>= 0.4'} + + axobject-query@4.1.0: + resolution: {integrity: sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==} + engines: {node: '>= 0.4'} + + b4a@1.6.6: + resolution: {integrity: sha512-5Tk1HLk6b6ctmjIkAcU/Ujv/1WqiDl0F0JdRCR80VsOcUlHcu7pWeWRlOqQLHfDEsVx9YH/aif5AG4ehoCtTmg==} + + babel-plugin-macros@3.1.0: + resolution: {integrity: sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==} + engines: {node: '>=10', npm: '>=6'} + + balanced-match@1.0.2: + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + + bare-events@2.4.2: + resolution: {integrity: sha512-qMKFd2qG/36aA4GwvKq8MxnPgCQAmBWmSyLWsJcbn8v03wvIPQ/hG1Ms8bPzndZxMDoHpxez5VOS+gC9Yi24/Q==} + + bare-fs@2.3.5: + resolution: {integrity: sha512-SlE9eTxifPDJrT6YgemQ1WGFleevzwY+XAP1Xqgl56HtcrisC2CHCZ2tq6dBpcH2TnNxwUEUGhweo+lrQtYuiw==} + + bare-os@2.4.4: + resolution: {integrity: sha512-z3UiI2yi1mK0sXeRdc4O1Kk8aOa/e+FNWZcTiPB/dfTWyLypuE99LibgRaQki914Jq//yAWylcAt+mknKdixRQ==} + + bare-path@2.1.3: + resolution: {integrity: sha512-lh/eITfU8hrj9Ru5quUp0Io1kJWIk1bTjzo7JH1P5dWmQ2EL4hFUlfI8FonAhSlgIfhn63p84CDY/x+PisgcXA==} + + bare-stream@2.3.0: + resolution: {integrity: sha512-pVRWciewGUeCyKEuRxwv06M079r+fRjAQjBEK2P6OYGrO43O+Z0LrPZZEjlc4mB6C2RpZ9AxJ1s7NLEtOHO6eA==} + + base64-js@1.5.1: + resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} + + binary-extensions@2.3.0: + resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} + engines: {node: '>=8'} + + bl@4.1.0: + resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} + + body-scroll-lock@4.0.0-beta.0: + resolution: {integrity: sha512-a7tP5+0Mw3YlUJcGAKUqIBkYYGlYxk2fnCasq/FUph1hadxlTRjF+gAcZksxANnaMnALjxEddmSi/H3OR8ugcQ==} + + bowser@2.11.0: + resolution: {integrity: sha512-AlcaJBi/pqqJBIQ8U9Mcpc9i8Aqxn88Skv5d+xBX006BY5u8N3mGLHa5Lgppa7L/HfwgwLgZ6NYs+Ag6uUmJRA==} + + brace-expansion@1.1.11: + resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} + + brace-expansion@2.0.1: + resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} + + braces@3.0.3: + resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} + engines: {node: '>=8'} + + browserslist@4.23.3: + resolution: {integrity: sha512-btwCFJVjI4YWDNfau8RhZ+B1Q/VLoUITrm3RlP6y1tYGWIOa+InuYiRGXUBXo8nA1qKmHMyLB/iVQg5TT4eFoA==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + + bson-objectid@2.0.4: + resolution: {integrity: sha512-vgnKAUzcDoa+AeyYwXCoHyF2q6u/8H46dxu5JN+4/TZeq/Dlinn0K6GvxsCLb3LHUJl0m/TLiEK31kUwtgocMQ==} + + bson@4.7.2: + resolution: {integrity: sha512-Ry9wCtIZ5kGqkJoi6aD8KjxFZEx78guTQDnpXWiNthsxzrxAK/i8E6pCHAIZTbaEFWcOCvbecMukfK7XUvyLpQ==} + engines: {node: '>=6.9.0'} + + buffer-equal-constant-time@1.0.1: + resolution: {integrity: sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==} + + buffer@4.9.2: + resolution: {integrity: sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==} + + buffer@5.6.0: + resolution: {integrity: sha512-/gDYp/UtU0eA1ys8bOs9J6a+E/KWIY+DZ+Q2WESNUA0jFRsJOc0SNUO6xJ5SGA1xueg3NL65W6s+NY5l9cunuw==} + + buffer@5.7.1: + resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} + + buffer@6.0.3: + resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==} + + busboy@1.6.0: + resolution: {integrity: sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==} + engines: {node: '>=10.16.0'} + + call-bind@1.0.7: + resolution: {integrity: sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==} + engines: {node: '>= 0.4'} + + callsites@3.1.0: + resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} + engines: {node: '>=6'} + + camelcase-css@2.0.1: + resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==} + engines: {node: '>= 6'} + + caniuse-lite@1.0.30001660: + resolution: {integrity: sha512-GacvNTTuATm26qC74pt+ad1fW15mlQ/zuTzzY1ZoIzECTP8HURDfF43kNxPgf7H1jmelCBQTTbBNxdSXOA7Bqg==} + + chalk@2.4.2: + resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} + engines: {node: '>=4'} + + chalk@4.1.2: + resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} + engines: {node: '>=10'} + + charenc@0.0.2: + resolution: {integrity: sha512-yrLQ/yVUFXkzg7EDQsPieE/53+0RlaWTs+wBrvW36cyilJ2SaDWfl4Yj7MtLTXleV9uEKefbAGUPv2/iWSooRA==} + + chokidar@3.6.0: + resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} + engines: {node: '>= 8.10.0'} + + chownr@1.1.4: + resolution: {integrity: sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==} + + ci-info@4.0.0: + resolution: {integrity: sha512-TdHqgGf9odd8SXNuxtUBVx8Nv+qZOejE6qyqiy5NtbYYQOeFa6zmHkxlPzmaLxWWHsU6nJmB7AETdVPi+2NBUg==} + engines: {node: '>=8'} + + class-variance-authority@0.7.0: + resolution: {integrity: sha512-jFI8IQw4hczaL4ALINxqLEXQbWcNjoSkloa4IaufXCJr6QawJyw7tuRysRsrE8w2p/4gGaxKIt/hX3qz/IbD1A==} + + classnames@2.5.1: + resolution: {integrity: sha512-saHYOzhIQs6wy2sVxTM6bUDsQO4F50V9RQ22qBpEdCW+I+/Wmke2HOl6lS6dTpdxVhb88/I6+Hs+438c3lfUow==} + + client-only@0.0.1: + resolution: {integrity: sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==} + + cliui@7.0.4: + resolution: {integrity: sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==} + + clsx@2.0.0: + resolution: {integrity: sha512-rQ1+kcj+ttHG0MKVGBUXwayCCF1oh39BF5COIpRzuCEv8Mwjv0XucrI2ExNTOn9IlLifGClWQcU9BrZORvtw6Q==} + engines: {node: '>=6'} + + clsx@2.1.1: + resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==} + engines: {node: '>=6'} + + color-convert@1.9.3: + resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} + + color-convert@2.0.1: + resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} + engines: {node: '>=7.0.0'} + + color-name@1.1.3: + resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} + + color-name@1.1.4: + resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + + color-string@1.9.1: + resolution: {integrity: sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==} + + color@4.2.3: + resolution: {integrity: sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==} + engines: {node: '>=12.5.0'} + + colorette@2.0.20: + resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==} + + combined-stream@1.0.8: + resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} + engines: {node: '>= 0.8'} + + commander@10.0.1: + resolution: {integrity: sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==} + engines: {node: '>=14'} + + commander@2.20.3: + resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} + + commander@4.1.1: + resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} + engines: {node: '>= 6'} + + comment-parser@1.4.1: + resolution: {integrity: sha512-buhp5kePrmda3vhc5B9t7pUQXAb2Tnd0qgpkIhPhkHXxJpiPJ11H0ZEU0oBpJ2QztSbzG/ZxMj/CHsYJqRHmyg==} + engines: {node: '>= 12.0.0'} + + concat-map@0.0.1: + resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + + condense-newlines@0.2.1: + resolution: {integrity: sha512-P7X+QL9Hb9B/c8HI5BFFKmjgBu2XpQuF98WZ9XkO+dBGgk5XgwiQz7o1SmpglNWId3581UcS0SFAWfoIhMHPfg==} + engines: {node: '>=0.10.0'} + + config-chain@1.1.13: + resolution: {integrity: sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==} + + console-table-printer@2.11.2: + resolution: {integrity: sha512-uuUHie0sfPP542TKGzPFal0W1wo1beuKAqIZdaavcONx8OoqdnJRKjkinbRTOta4FaCa1RcIL+7mMJWX3pQGVg==} + + convert-source-map@1.9.0: + resolution: {integrity: sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==} + + copyfiles@2.4.1: + resolution: {integrity: sha512-fereAvAvxDrQDOXybk3Qu3dPbOoKoysFMWtkY3mv5BsL8//OSZVL5DCLYqgRfY5cWirgRzlC+WSrxp6Bo3eNZg==} + hasBin: true + + core-util-is@1.0.3: + resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} + + cosmiconfig@7.1.0: + resolution: {integrity: sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==} + engines: {node: '>=10'} + + cross-env@7.0.3: + resolution: {integrity: sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==} + engines: {node: '>=10.14', npm: '>=6', yarn: '>=1'} + hasBin: true + + cross-spawn@7.0.3: + resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} + engines: {node: '>= 8'} + + crypt@0.0.2: + resolution: {integrity: sha512-mCxBlsHFYh9C+HVpiEacem8FEBnMXgU9gy4zmNC+SXAZNB/1idgp/aulFJ4FgCi7GPEVbfyng092GqL2k2rmow==} + + cssesc@3.0.0: + resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} + engines: {node: '>=4'} + hasBin: true + + cssfilter@0.0.10: + resolution: {integrity: sha512-FAaLDaplstoRsDR8XGYH51znUN0UY7nMc6Z9/fvE8EXGwvJE9hu7W2vHwx1+bd6gCYnln9nLbzxFTrcO9YQDZw==} + + csstype@3.1.3: + resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} + + damerau-levenshtein@1.0.8: + resolution: {integrity: sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==} + + data-view-buffer@1.0.1: + resolution: {integrity: sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==} + engines: {node: '>= 0.4'} + + data-view-byte-length@1.0.1: + resolution: {integrity: sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==} + engines: {node: '>= 0.4'} + + data-view-byte-offset@1.0.0: + resolution: {integrity: sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==} + engines: {node: '>= 0.4'} + + dataloader@2.2.2: + resolution: {integrity: sha512-8YnDaaf7N3k/q5HnTJVuzSyLETjoZjVmHc4AeKAzOvKHEFQKcn64OKBfzHYtE9zGjctNM7V9I0MfnUVLpi7M5g==} + + date-fns@3.3.1: + resolution: {integrity: sha512-y8e109LYGgoQDveiEBD3DYXKba1jWf5BA8YU1FL5Tvm0BTdEfy54WLCwnuYWZNnzzvALy/QQ4Hov+Q9RVRv+Zw==} + + dateformat@4.6.3: + resolution: {integrity: sha512-2P0p0pFGzHS5EMnhdxQi7aJN+iMheud0UhG4dlE1DLAlvL8JHjJJTX/CSm4JXwV0Ka5nGk3zC5mcb5bUQUxxMA==} + + debug@3.2.7: + resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + debug@4.3.7: + resolution: {integrity: sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + decompress-response@6.0.0: + resolution: {integrity: sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==} + engines: {node: '>=10'} + + deep-equal@2.2.3: + resolution: {integrity: sha512-ZIwpnevOurS8bpT4192sqAowWM76JDKSHYzMLty3BZGSswgq6pBaH3DhCSW5xVAZICZyKdOBPjwww5wfgT/6PA==} + engines: {node: '>= 0.4'} + + deep-extend@0.6.0: + resolution: {integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==} + engines: {node: '>=4.0.0'} + + deep-is@0.1.4: + resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} + + deepmerge@4.3.1: + resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} + engines: {node: '>=0.10.0'} + + define-data-property@1.1.4: + resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==} + engines: {node: '>= 0.4'} + + define-properties@1.2.1: + resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} + engines: {node: '>= 0.4'} + + delayed-stream@1.0.0: + resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} + engines: {node: '>=0.4.0'} + + dequal@2.0.3: + resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} + engines: {node: '>=6'} + + detect-libc@2.0.3: + resolution: {integrity: sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==} + engines: {node: '>=8'} + + detect-node-es@1.1.0: + resolution: {integrity: sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==} + + didyoumean@1.2.2: + resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==} + + diff@5.2.0: + resolution: {integrity: sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==} + engines: {node: '>=0.3.1'} + + dir-glob@3.0.1: + resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} + engines: {node: '>=8'} + + dlv@1.1.3: + resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==} + + doctrine@2.1.0: + resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==} + engines: {node: '>=0.10.0'} + + doctrine@3.0.0: + resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} + engines: {node: '>=6.0.0'} + + dom-helpers@5.2.1: + resolution: {integrity: sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==} + + dom-serializer@2.0.0: + resolution: {integrity: sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==} + + domelementtype@2.3.0: + resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==} + + domhandler@5.0.3: + resolution: {integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==} + engines: {node: '>= 4'} + + domutils@3.1.0: + resolution: {integrity: sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==} + + eastasianwidth@0.2.0: + resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} + + ecdsa-sig-formatter@1.0.11: + resolution: {integrity: sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==} + + editorconfig@1.0.4: + resolution: {integrity: sha512-L9Qe08KWTlqYMVvMcTIvMAdl1cDUubzRNYL+WfA4bLDMHe4nemKkpmYzkznE1FwLKu0EEmy6obgQKzMJrg4x9Q==} + engines: {node: '>=14'} + hasBin: true + + electron-to-chromium@1.5.23: + resolution: {integrity: sha512-mBhODedOXg4v5QWwl21DjM5amzjmI1zw9EPrPK/5Wx7C8jt33bpZNrC7OhHUG3pxRtbLpr3W2dXT+Ph1SsfRZA==} + + emoji-regex@8.0.0: + resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} + + emoji-regex@9.2.2: + resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} + + end-of-stream@1.4.4: + resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} + + enhanced-resolve@5.17.1: + resolution: {integrity: sha512-LMHl3dXhTcfv8gM4kEzIUeTQ+7fpdA0l2tUf34BddXPkz2A5xJ5L/Pchd5BL6rdccM9QGvu0sWZzK1Z1t4wwyg==} + engines: {node: '>=10.13.0'} + + entities@4.5.0: + resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} + engines: {node: '>=0.12'} + + error-ex@1.3.2: + resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} + + es-abstract@1.23.3: + resolution: {integrity: sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==} + engines: {node: '>= 0.4'} + + es-define-property@1.0.0: + resolution: {integrity: sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==} + engines: {node: '>= 0.4'} + + es-errors@1.3.0: + resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} + engines: {node: '>= 0.4'} + + es-get-iterator@1.1.3: + resolution: {integrity: sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw==} + + es-iterator-helpers@1.0.19: + resolution: {integrity: sha512-zoMwbCcH5hwUkKJkT8kDIBZSz9I6mVG//+lDCinLCGov4+r7NIy0ld8o03M0cJxl2spVf6ESYVS6/gpIfq1FFw==} + engines: {node: '>= 0.4'} + + es-object-atoms@1.0.0: + resolution: {integrity: sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==} + engines: {node: '>= 0.4'} + + es-set-tostringtag@2.0.3: + resolution: {integrity: sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==} + engines: {node: '>= 0.4'} + + es-shim-unscopables@1.0.2: + resolution: {integrity: sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==} + + es-to-primitive@1.2.1: + resolution: {integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==} + engines: {node: '>= 0.4'} + + esbuild@0.23.1: + resolution: {integrity: sha512-VVNz/9Sa0bs5SELtn3f7qhJCDPCF5oMEl5cO9/SSinpE9hbPVvxbd572HH5AKiP7WD8INO53GgfDDhRjkylHEg==} + engines: {node: '>=18'} + hasBin: true + + escalade@3.2.0: + resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} + engines: {node: '>=6'} + + escape-html@1.0.3: + resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==} + + escape-string-regexp@1.0.5: + resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} + engines: {node: '>=0.8.0'} + + escape-string-regexp@4.0.0: + resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} + engines: {node: '>=10'} + + eslint-config-next@15.0.0-canary.104: + resolution: {integrity: sha512-8DbGD//1YDUrN4+cCATt8DKnXEr4M8b3U/p/EZPH2QS6F7zAEZmkcdjfku5ZYz9HTo4SfImcApiCBXZRQcVthQ==} + peerDependencies: + eslint: ^7.23.0 || ^8.0.0 + typescript: '>=3.3.1' + peerDependenciesMeta: + typescript: + optional: true + + eslint-config-prettier@9.0.0: + resolution: {integrity: sha512-IcJsTkJae2S35pRsRAwoCE+925rJJStOdkKnLVgtE+tEpqU0EVVM7OqrwxqgptKdX29NUwC82I5pXsGFIgSevw==} + hasBin: true + peerDependencies: + eslint: '>=7.0.0' + + eslint-import-resolver-node@0.3.9: + resolution: {integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==} + + eslint-import-resolver-typescript@3.6.3: + resolution: {integrity: sha512-ud9aw4szY9cCT1EWWdGv1L1XR6hh2PaRWif0j2QjQ0pgTY/69iw+W0Z4qZv5wHahOl8isEr+k/JnyAqNQkLkIA==} + engines: {node: ^14.18.0 || >=16.0.0} + peerDependencies: + eslint: '*' + eslint-plugin-import: '*' + eslint-plugin-import-x: '*' + peerDependenciesMeta: + eslint-plugin-import: + optional: true + eslint-plugin-import-x: + optional: true + + eslint-module-utils@2.11.0: + resolution: {integrity: sha512-gbBE5Hitek/oG6MUVj6sFuzEjA/ClzNflVrLovHi/JgLdC7fiN5gLAY1WIPW1a0V5I999MnsrvVrCOGmmVqDBQ==} + engines: {node: '>=4'} + peerDependencies: + '@typescript-eslint/parser': '*' + eslint: '*' + eslint-import-resolver-node: '*' + eslint-import-resolver-typescript: '*' + eslint-import-resolver-webpack: '*' + peerDependenciesMeta: + '@typescript-eslint/parser': + optional: true + eslint: + optional: true + eslint-import-resolver-node: + optional: true + eslint-import-resolver-typescript: + optional: true + eslint-import-resolver-webpack: + optional: true + + eslint-plugin-es@3.0.1: + resolution: {integrity: sha512-GUmAsJaN4Fc7Gbtl8uOBlayo2DqhwWvEzykMHSCZHU3XdJ+NSzzZcVhXh3VxX5icqQ+oQdIEawXX8xkR3mIFmQ==} + engines: {node: '>=8.10.0'} + peerDependencies: + eslint: '>=4.19.1' + + eslint-plugin-import@2.28.1: + resolution: {integrity: sha512-9I9hFlITvOV55alzoKBI+K9q74kv0iKMeY6av5+umsNwayt59fz692daGyjR+oStBQgx6nwR9rXldDev3Clw+A==} + engines: {node: '>=4'} + peerDependencies: + '@typescript-eslint/parser': '*' + eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 + peerDependenciesMeta: + '@typescript-eslint/parser': + optional: true + + eslint-plugin-import@2.30.0: + resolution: {integrity: sha512-/mHNE9jINJfiD2EKkg1BKyPyUk4zdnT54YgbOgfjSakWT5oyX/qQLVNTkehyfpcMxZXMy1zyonZ2v7hZTX43Yw==} + engines: {node: '>=4'} + peerDependencies: + '@typescript-eslint/parser': '*' + eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 + peerDependenciesMeta: + '@typescript-eslint/parser': + optional: true + + eslint-plugin-jest-dom@5.1.0: + resolution: {integrity: sha512-JIXZp+E/h/aGlP/rQc4tuOejiHlZXg65qw8JAJMIJA5VsdjOkss/SYcRSqBrQuEOytEM8JvngUjcz31d1RrCrA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0, npm: '>=6', yarn: '>=1'} + peerDependencies: + '@testing-library/dom': ^8.0.0 || ^9.0.0 + eslint: ^6.8.0 || ^7.0.0 || ^8.0.0 + peerDependenciesMeta: + '@testing-library/dom': + optional: true + + eslint-plugin-jest@27.2.3: + resolution: {integrity: sha512-sRLlSCpICzWuje66Gl9zvdF6mwD5X86I4u55hJyFBsxYOsBCmT5+kSUjf+fkFWVMMgpzNEupjW8WzUqi83hJAQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + '@typescript-eslint/eslint-plugin': ^5.0.0 || ^6.0.0 + eslint: ^7.0.0 || ^8.0.0 + jest: '*' + peerDependenciesMeta: + '@typescript-eslint/eslint-plugin': + optional: true + jest: + optional: true + + eslint-plugin-jsx-a11y@6.10.0: + resolution: {integrity: sha512-ySOHvXX8eSN6zz8Bywacm7CvGNhUtdjvqfQDVe6020TUK34Cywkw7m0KsCCk1Qtm9G1FayfTN1/7mMYnYO2Bhg==} + engines: {node: '>=4.0'} + peerDependencies: + eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9 + + eslint-plugin-jsx-a11y@6.7.1: + resolution: {integrity: sha512-63Bog4iIethyo8smBklORknVjB0T2dwB8Mr/hIC+fBS0uyHdYYpzM/Ed+YC8VxTjlXHEWFOdmgwcDn1U2L9VCA==} + engines: {node: '>=4.0'} + peerDependencies: + eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 + + eslint-plugin-node@11.1.0: + resolution: {integrity: sha512-oUwtPJ1W0SKD0Tr+wqu92c5xuCeQqB3hSCHasn/ZgjFdA9iDGNkNf2Zi9ztY7X+hNuMib23LNGRm6+uN+KLE3g==} + engines: {node: '>=8.10.0'} + peerDependencies: + eslint: '>=5.16.0' + + eslint-plugin-perfectionist@2.0.0: + resolution: {integrity: sha512-VqUk5WR7Dj8L0gNPqn7bl7NTHFYB8l5um4wo7hkMp0Dl+k8RHDAsOef4pPrty6G8vjnzvb3xIZNNshmDJI8SdA==} + peerDependencies: + astro-eslint-parser: ^0.14.0 + eslint: '>=8.0.0' + svelte: '>=3.0.0' + svelte-eslint-parser: ^0.32.0 + vue-eslint-parser: '>=9.0.0' + peerDependenciesMeta: + astro-eslint-parser: + optional: true + svelte: + optional: true + svelte-eslint-parser: + optional: true + vue-eslint-parser: + optional: true + + eslint-plugin-playwright@0.16.0: + resolution: {integrity: sha512-DcHpF0SLbNeh9MT4pMzUGuUSnJ7q5MWbP8sSEFIMS6j7Ggnduq8ghNlfhURgty4c1YFny7Ge9xYTO1FSAoV2Vw==} + peerDependencies: + eslint: '>=7' + eslint-plugin-jest: '>=25' + peerDependenciesMeta: + eslint-plugin-jest: + optional: true + + eslint-plugin-react-hooks@4.6.0: + resolution: {integrity: sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==} + engines: {node: '>=10'} + peerDependencies: + eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 + + eslint-plugin-react-hooks@4.6.2: + resolution: {integrity: sha512-QzliNJq4GinDBcD8gPB5v0wh6g8q3SUi6EFF0x8N/BL9PoVs0atuGc47ozMRyOWAKdwaZ5OnbOEa3WR+dSGKuQ==} + engines: {node: '>=10'} + peerDependencies: + eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 + + eslint-plugin-react@7.33.2: + resolution: {integrity: sha512-73QQMKALArI8/7xGLNI/3LylrEYrlKZSb5C9+q3OtOewTnMQi5cT+aE9E41sLCmli3I9PGGmD1yiZydyo4FEPw==} + engines: {node: '>=4'} + peerDependencies: + eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 + + eslint-plugin-react@7.36.1: + resolution: {integrity: sha512-/qwbqNXZoq+VP30s1d4Nc1C5GTxjJQjk4Jzs4Wq2qzxFM7dSmuG2UkIjg2USMLh3A/aVcUNrK7v0J5U1XEGGwA==} + engines: {node: '>=4'} + peerDependencies: + eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7 + + eslint-plugin-regexp@1.15.0: + resolution: {integrity: sha512-YEtQPfdudafU7RBIFci81R/Q1yErm0mVh3BkGnXD2Dk8DLwTFdc2ITYH1wCnHKim2gnHfPFgrkh+b2ozyyU7ag==} + engines: {node: ^12 || >=14} + peerDependencies: + eslint: '>=6.0.0' + + eslint-scope@5.1.1: + resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} + engines: {node: '>=8.0.0'} + + eslint-scope@7.2.2: + resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + eslint-utils@2.1.0: + resolution: {integrity: sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==} + engines: {node: '>=6'} + + eslint-visitor-keys@1.3.0: + resolution: {integrity: sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==} + engines: {node: '>=4'} + + eslint-visitor-keys@3.4.3: + resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + eslint@8.48.0: + resolution: {integrity: sha512-sb6DLeIuRXxeM1YljSe1KEx9/YYeZFQWcV8Rq9HfigmdDEugjLEVEa1ozDjL6YDjBpQHPJxJzze+alxi4T3OLg==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + hasBin: true + + eslint@8.57.0: + resolution: {integrity: sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + hasBin: true + + espree@9.6.1: + resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + esquery@1.6.0: + resolution: {integrity: sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==} + engines: {node: '>=0.10'} + + esrecurse@4.3.0: + resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} + engines: {node: '>=4.0'} + + estraverse@4.3.0: + resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==} + engines: {node: '>=4.0'} + + estraverse@5.3.0: + resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} + engines: {node: '>=4.0'} + + esutils@2.0.3: + resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} + engines: {node: '>=0.10.0'} + + event-target-shim@5.0.1: + resolution: {integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==} + engines: {node: '>=6'} + + events@3.3.0: + resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} + engines: {node: '>=0.8.x'} + + expand-template@2.0.3: + resolution: {integrity: sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==} + engines: {node: '>=6'} + + extend-shallow@2.0.1: + resolution: {integrity: sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==} + engines: {node: '>=0.10.0'} + + fast-base64-decode@1.0.0: + resolution: {integrity: sha512-qwaScUgUGBYeDNRnbc/KyllVU88Jk1pRHPStuF/lO7B0/RTRLj7U0lkdTAutlBblY08rwZDff6tNU9cjv6j//Q==} + + fast-copy@3.0.2: + resolution: {integrity: sha512-dl0O9Vhju8IrcLndv2eU4ldt1ftXMqqfgN4H1cpmGV7P6jeB9FwpN9a2c8DPGE1Ys88rNUJVYDHq73CGAGOPfQ==} + + fast-deep-equal@3.1.3: + resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} + + fast-fifo@1.3.2: + resolution: {integrity: sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==} + + fast-glob@3.3.1: + resolution: {integrity: sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==} + engines: {node: '>=8.6.0'} + + fast-glob@3.3.2: + resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==} + engines: {node: '>=8.6.0'} + + fast-json-stable-stringify@2.1.0: + resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} + + fast-levenshtein@2.0.6: + resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} + + fast-redact@3.5.0: + resolution: {integrity: sha512-dwsoQlS7h9hMeYUq1W++23NDcBLV4KqONnITDV9DjfS3q1SgDGVrBdvvTLUotWtPSD7asWDV9/CmsZPy8Hf70A==} + engines: {node: '>=6'} + + fast-safe-stringify@2.1.1: + resolution: {integrity: sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==} + + fast-uri@3.0.1: + resolution: {integrity: sha512-MWipKbbYiYI0UC7cl8m/i/IWTqfC8YXsqjzybjddLsFjStroQzsHXkc73JutMvBiXmOvapk+axIl79ig5t55Bw==} + + fast-xml-parser@4.4.1: + resolution: {integrity: sha512-xkjOecfnKGkSsOwtZ5Pz7Us/T6mrbPQrq0nh+aCO5V9nk5NLWmasAHumTKjiPJPWANe+kAZ84Jc8ooJkzZ88Sw==} + hasBin: true + + fastq@1.17.1: + resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==} + + file-entry-cache@6.0.1: + resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} + engines: {node: ^10.12.0 || >=12.0.0} + + file-type@17.1.6: + resolution: {integrity: sha512-hlDw5Ev+9e883s0pwUsuuYNu4tD7GgpUnOvykjv1Gya0ZIjuKumthDRua90VUn6/nlRKAjcxLUnHNTIUWwWIiw==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + fill-range@7.1.1: + resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} + engines: {node: '>=8'} + + find-root@1.1.0: + resolution: {integrity: sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==} + + find-up@5.0.0: + resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} + engines: {node: '>=10'} + + find-up@7.0.0: + resolution: {integrity: sha512-YyZM99iHrqLKjmt4LJDj58KI+fYyufRLBSYcqycxf//KpBk9FoewoGX0450m9nB44qrZnovzC2oeP5hUibxc/g==} + engines: {node: '>=18'} + + flat-cache@3.2.0: + resolution: {integrity: sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==} + engines: {node: ^10.12.0 || >=12.0.0} + + flatted@3.3.1: + resolution: {integrity: sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==} + + focus-trap@7.5.4: + resolution: {integrity: sha512-N7kHdlgsO/v+iD/dMoJKtsSqs5Dz/dXZVebRgJw23LDk+jMi/974zyiOYDziY2JPp8xivq9BmUGwIJMiuSBi7w==} + + follow-redirects@1.15.9: + resolution: {integrity: sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==} + engines: {node: '>=4.0'} + peerDependencies: + debug: '*' + peerDependenciesMeta: + debug: + optional: true + + for-each@0.3.3: + resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==} + + foreground-child@3.3.0: + resolution: {integrity: sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==} + engines: {node: '>=14'} + + form-data@4.0.0: + resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==} + engines: {node: '>= 6'} + + fraction.js@4.3.7: + resolution: {integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==} + + fs-constants@1.0.0: + resolution: {integrity: sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==} + + fs.realpath@1.0.0: + resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} + + fsevents@2.3.3: + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + + function-bind@1.1.2: + resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} + + function.prototype.name@1.1.6: + resolution: {integrity: sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==} + engines: {node: '>= 0.4'} + + functions-have-names@1.2.3: + resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} + + geist@1.3.1: + resolution: {integrity: sha512-Q4gC1pBVPN+D579pBaz0TRRnGA4p9UK6elDY/xizXdFk/g4EKR5g0I+4p/Kj6gM0SajDBZ/0FvDV9ey9ud7BWw==} + peerDependencies: + next: '>=13.2.0' + + get-caller-file@2.0.5: + resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} + engines: {node: 6.* || 8.* || >= 10.*} + + get-intrinsic@1.2.4: + resolution: {integrity: sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==} + engines: {node: '>= 0.4'} + + get-nonce@1.0.1: + resolution: {integrity: sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==} + engines: {node: '>=6'} + + get-symbol-description@1.0.2: + resolution: {integrity: sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==} + engines: {node: '>= 0.4'} + + get-tsconfig@4.8.1: + resolution: {integrity: sha512-k9PN+cFBmaLWtVz29SkUoqU5O0slLuHJXt/2P+tMVFT+phsSGXGkp9t3rQIqdz0e+06EHNGs3oM6ZX1s2zHxRg==} + + github-from-package@0.0.0: + resolution: {integrity: sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==} + + glob-parent@5.1.2: + resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} + engines: {node: '>= 6'} + + glob-parent@6.0.2: + resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} + engines: {node: '>=10.13.0'} + + glob@10.4.5: + resolution: {integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==} + hasBin: true + + glob@7.1.7: + resolution: {integrity: sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==} + deprecated: Glob versions prior to v9 are no longer supported + + glob@7.2.3: + resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} + deprecated: Glob versions prior to v9 are no longer supported + + globals@11.12.0: + resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} + engines: {node: '>=4'} + + globals@13.24.0: + resolution: {integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==} + engines: {node: '>=8'} + + globalthis@1.0.4: + resolution: {integrity: sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==} + engines: {node: '>= 0.4'} + + globby@11.1.0: + resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} + engines: {node: '>=10'} + + gopd@1.0.1: + resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} + + graceful-fs@4.2.11: + resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} + + grapheme-splitter@1.0.4: + resolution: {integrity: sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==} + + graphemer@1.4.0: + resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} + + graphql-http@1.22.1: + resolution: {integrity: sha512-4Jor+LRbA7SfSaw7dfDUs2UBzvWg3cKrykfHRgKsOIvQaLuf+QOcG2t3Mx5N9GzSNJcuqMqJWz0ta5+BryEmXg==} + engines: {node: '>=12'} + peerDependencies: + graphql: '>=0.11 <=16' + + graphql-playground-html@1.6.30: + resolution: {integrity: sha512-tpCujhsJMva4aqE8ULnF7/l3xw4sNRZcSHu+R00VV+W0mfp+Q20Plvcrp+5UXD+2yS6oyCXncA+zoQJQqhGCEw==} + + graphql-scalars@1.22.2: + resolution: {integrity: sha512-my9FB4GtghqXqi/lWSVAOPiTzTnnEzdOXCsAC2bb5V7EFNQjVjwy3cSSbUvgYOtDuDibd+ZsCDhz+4eykYOlhQ==} + engines: {node: '>=10'} + peerDependencies: + graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 + + graphql@16.9.0: + resolution: {integrity: sha512-GGTKBX4SD7Wdb8mqeDLni2oaRGYQWjWHGKPQ24ZMnUtKfcsVoiv4uX8+LJr1K6U5VW2Lu1BwJnj7uiori0YtRw==} + engines: {node: ^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0} + + has-bigints@1.0.2: + resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==} + + has-flag@3.0.0: + resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} + engines: {node: '>=4'} + + has-flag@4.0.0: + resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} + engines: {node: '>=8'} + + has-property-descriptors@1.0.2: + resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==} + + has-proto@1.0.3: + resolution: {integrity: sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==} + engines: {node: '>= 0.4'} + + has-symbols@1.0.3: + resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} + engines: {node: '>= 0.4'} + + has-tostringtag@1.0.2: + resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} + engines: {node: '>= 0.4'} + + has@1.0.4: + resolution: {integrity: sha512-qdSAmqLF6209RFj4VVItywPMbm3vWylknmB3nvNiUIs72xAimcM8nVYxYr7ncvZq5qzk9MKIZR8ijqD/1QuYjQ==} + engines: {node: '>= 0.4.0'} + + hasown@2.0.2: + resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} + engines: {node: '>= 0.4'} + + help-me@5.0.0: + resolution: {integrity: sha512-7xgomUX6ADmcYzFik0HzAxh/73YlKR9bmFzf51CZwR+b6YtzU2m0u49hQCqV6SvlqIqsaxovfwdvbnsw3b/zpg==} + + hoist-non-react-statics@3.3.2: + resolution: {integrity: sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==} + + html-to-text@9.0.3: + resolution: {integrity: sha512-hxDF1kVCF2uw4VUJ3vr2doc91pXf2D5ngKcNviSitNkhP9OMOaJkDrFIFL6RMvko7NisWTEiqGpQ9LAxcVok1w==} + engines: {node: '>=14'} + + htmlparser2@8.0.2: + resolution: {integrity: sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==} + + http-status@1.6.2: + resolution: {integrity: sha512-oUExvfNckrpTpDazph7kNG8sQi5au3BeTo0idaZFXEhTaJKu7GNJCLHI0rYY2wljm548MSTM+Ljj/c6anqu2zQ==} + engines: {node: '>= 0.4.0'} + + ieee754@1.2.1: + resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} + + ignore@5.3.2: + resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} + engines: {node: '>= 4'} + + image-size@1.1.1: + resolution: {integrity: sha512-541xKlUw6jr/6gGuk92F+mYM5zaFAc5ahphvkqvNe2bQ6gVBkd6bfrmVJ2t4KDAfikAYZyIqTnktX3i6/aQDrQ==} + engines: {node: '>=16.x'} + hasBin: true + + immutable@4.3.7: + resolution: {integrity: sha512-1hqclzwYwjRDFLjcFxOM5AYkkG0rpFPpr1RLPMEuGczoS7YA8gLhy8SWXYRAA/XwfEHpfo3cw5JGioS32fnMRw==} + + import-fresh@3.3.0: + resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} + engines: {node: '>=6'} + + imurmurhash@0.1.4: + resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} + engines: {node: '>=0.8.19'} + + inflight@1.0.6: + resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} + deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. + + inherits@2.0.4: + resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + + ini@1.3.8: + resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} + + internal-slot@1.0.7: + resolution: {integrity: sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==} + engines: {node: '>= 0.4'} + + invariant@2.2.4: + resolution: {integrity: sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==} + + ip-address@9.0.5: + resolution: {integrity: sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g==} + engines: {node: '>= 12'} + + is-arguments@1.1.1: + resolution: {integrity: sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==} + engines: {node: '>= 0.4'} + + is-array-buffer@3.0.4: + resolution: {integrity: sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==} + engines: {node: '>= 0.4'} + + is-arrayish@0.2.1: + resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} + + is-arrayish@0.3.2: + resolution: {integrity: sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==} + + is-async-function@2.0.0: + resolution: {integrity: sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==} + engines: {node: '>= 0.4'} + + is-bigint@1.0.4: + resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==} + + is-binary-path@2.1.0: + resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} + engines: {node: '>=8'} + + is-boolean-object@1.1.2: + resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==} + engines: {node: '>= 0.4'} + + is-buffer@1.1.6: + resolution: {integrity: sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==} + + is-bun-module@1.2.1: + resolution: {integrity: sha512-AmidtEM6D6NmUiLOvvU7+IePxjEjOzra2h0pSrsfSAcXwl/83zLLXDByafUJy9k/rKK0pvXMLdwKwGHlX2Ke6Q==} + + is-callable@1.2.7: + resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} + engines: {node: '>= 0.4'} + + is-core-module@2.15.1: + resolution: {integrity: sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ==} + engines: {node: '>= 0.4'} + + is-data-view@1.0.1: + resolution: {integrity: sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==} + engines: {node: '>= 0.4'} + + is-date-object@1.0.5: + resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==} + engines: {node: '>= 0.4'} + + is-extendable@0.1.1: + resolution: {integrity: sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==} + engines: {node: '>=0.10.0'} + + is-extglob@2.1.1: + resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} + engines: {node: '>=0.10.0'} + + is-finalizationregistry@1.0.2: + resolution: {integrity: sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw==} + + is-fullwidth-code-point@3.0.0: + resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} + engines: {node: '>=8'} + + is-generator-function@1.0.10: + resolution: {integrity: sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==} + engines: {node: '>= 0.4'} + + is-glob@4.0.3: + resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} + engines: {node: '>=0.10.0'} + + is-map@2.0.3: + resolution: {integrity: sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==} + engines: {node: '>= 0.4'} + + is-negative-zero@2.0.3: + resolution: {integrity: sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==} + engines: {node: '>= 0.4'} + + is-number-object@1.0.7: + resolution: {integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==} + engines: {node: '>= 0.4'} + + is-number@7.0.0: + resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} + engines: {node: '>=0.12.0'} + + is-path-inside@3.0.3: + resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} + engines: {node: '>=8'} + + is-regex@1.1.4: + resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} + engines: {node: '>= 0.4'} + + is-set@2.0.3: + resolution: {integrity: sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==} + engines: {node: '>= 0.4'} + + is-shared-array-buffer@1.0.3: + resolution: {integrity: sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==} + engines: {node: '>= 0.4'} + + is-string@1.0.7: + resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==} + engines: {node: '>= 0.4'} + + is-symbol@1.0.4: + resolution: {integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==} + engines: {node: '>= 0.4'} + + is-typed-array@1.1.13: + resolution: {integrity: sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==} + engines: {node: '>= 0.4'} + + is-weakmap@2.0.2: + resolution: {integrity: sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==} + engines: {node: '>= 0.4'} + + is-weakref@1.0.2: + resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==} + + is-weakset@2.0.3: + resolution: {integrity: sha512-LvIm3/KWzS9oRFHugab7d+M/GcBXuXX5xZkzPmN+NxihdQlZUQ4dWuSV1xR/sq6upL1TJEDrfBgRepHFdBtSNQ==} + engines: {node: '>= 0.4'} + + is-whitespace@0.3.0: + resolution: {integrity: sha512-RydPhl4S6JwAyj0JJjshWJEFG6hNye3pZFBRZaTUfZFwGHxzppNaNOVgQuS/E/SlhrApuMXrpnK1EEIXfdo3Dg==} + engines: {node: '>=0.10.0'} + + isarray@0.0.1: + resolution: {integrity: sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==} + + isarray@1.0.0: + resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} + + isarray@2.0.5: + resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} + + isexe@2.0.0: + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + + isomorphic-unfetch@3.1.0: + resolution: {integrity: sha512-geDJjpoZ8N0kWexiwkX8F9NkTsXhetLPVbZFQ+JTW239QNOwvB0gniuR1Wc6f0AMTn7/mFGyXvHTifrCp/GH8Q==} + + isomorphic.js@0.2.5: + resolution: {integrity: sha512-PIeMbHqMt4DnUP3MA/Flc0HElYjMXArsw1qwJZcm9sqR8mq3l8NYizFMty0pWwE/tzIGH3EKK5+jes5mAr85yw==} + + iterator.prototype@1.1.2: + resolution: {integrity: sha512-DR33HMMr8EzwuRL8Y9D3u2BMj8+RqSE850jfGu59kS7tbmPLzGkZmVSfyCFSDxuZiEY6Rzt3T2NA/qU+NwVj1w==} + + jackspeak@3.4.3: + resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==} + + jiti@1.21.6: + resolution: {integrity: sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w==} + hasBin: true + + joycon@3.1.1: + resolution: {integrity: sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw==} + engines: {node: '>=10'} + + js-beautify@1.15.1: + resolution: {integrity: sha512-ESjNzSlt/sWE8sciZH8kBF8BPlwXPwhR6pWKAw8bw4Bwj+iZcnKW6ONWUutJ7eObuBZQpiIb8S7OYspWrKt7rA==} + engines: {node: '>=14'} + hasBin: true + + js-cookie@2.2.1: + resolution: {integrity: sha512-HvdH2LzI/EAZcUwA8+0nKNtWHqS+ZmijLA30RwZA0bo7ToCckjK5MkGhjED9KoRcXO6BaGI3I9UIzSA1FKFPOQ==} + + js-cookie@3.0.5: + resolution: {integrity: sha512-cEiJEAEoIbWfCZYKWhVwFuvPX1gETRYPw6LlaTKoxD3s2AkXzkCjnp6h0V77ozyqj0jakteJ4YqDJT830+lVGw==} + engines: {node: '>=14'} + + js-tokens@4.0.0: + resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + + js-yaml@4.1.0: + resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} + hasBin: true + + jsbn@1.1.0: + resolution: {integrity: sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==} + + jsdoctypeparser@9.0.0: + resolution: {integrity: sha512-jrTA2jJIL6/DAEILBEh2/w9QxCuwmvNXIry39Ay/HVfhE3o2yVV0U44blYkqdHA/OKloJEqvJy0xU+GSdE2SIw==} + engines: {node: '>=10'} + hasBin: true + + jsesc@2.5.2: + resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} + engines: {node: '>=4'} + hasBin: true + + json-buffer@3.0.1: + resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} + + json-parse-even-better-errors@2.3.1: + resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} + + json-schema-to-typescript@15.0.1: + resolution: {integrity: sha512-gSSg20skxv+ZQqR8Y8itZt+2iYFGNgneuTgf/Va0TBw+zo6JsykDG1bqhkhMs5g/vIdqmZx55oQJLbgOEuxPJw==} + engines: {node: '>=16.0.0'} + hasBin: true + + json-schema-traverse@0.4.1: + resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} + + json-schema-traverse@1.0.0: + resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} + + json-stable-stringify-without-jsonify@1.0.1: + resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} + + json5@1.0.2: + resolution: {integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==} + hasBin: true + + jsonwebtoken@9.0.2: + resolution: {integrity: sha512-PRp66vJ865SSqOlgqS8hujT5U4AOgMfhrwYIuIhfKaoSCZcirrmASQr8CX7cUg+RMih+hgznrjp99o+W4pJLHQ==} + engines: {node: '>=12', npm: '>=6'} + + jsx-ast-utils@3.3.5: + resolution: {integrity: sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==} + engines: {node: '>=4.0'} + + jwa@1.4.1: + resolution: {integrity: sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==} + + jws@3.2.2: + resolution: {integrity: sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==} + + kareem@2.5.1: + resolution: {integrity: sha512-7jFxRVm+jD+rkq3kY0iZDJfsO2/t4BBPeEb2qKn2lR/9KhuksYk5hxzfRYWMPV8P/x2d0kHD306YyWLzjjH+uA==} + engines: {node: '>=12.0.0'} + + keyv@4.5.4: + resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} + + kind-of@3.2.2: + resolution: {integrity: sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==} + engines: {node: '>=0.10.0'} + + kleur@3.0.3: + resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==} + engines: {node: '>=6'} + + language-subtag-registry@0.3.23: + resolution: {integrity: sha512-0K65Lea881pHotoGEa5gDlMxt3pctLi2RplBb7Ezh4rRdLEOtgi7n4EwK9lamnUCkKBqaeKRVebTq6BAxSkpXQ==} + + language-tags@1.0.5: + resolution: {integrity: sha512-qJhlO9cGXi6hBGKoxEG/sKZDAHD5Hnu9Hs4WbOY3pCWXDhw0N8x1NenNzm2EnNLkLkk7J2SdxAkDSbb6ftT+UQ==} + + language-tags@1.0.9: + resolution: {integrity: sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA==} + engines: {node: '>=0.10'} + + leac@0.6.0: + resolution: {integrity: sha512-y+SqErxb8h7nE/fiEX07jsbuhrpO9lL8eca7/Y1nuWV2moNlXhyd59iDGcRf6moVyDMbmTNzL40SUyrFU/yDpg==} + + levn@0.4.1: + resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} + engines: {node: '>= 0.8.0'} + + lexical@0.17.0: + resolution: {integrity: sha512-cCFmANO5rIf34NF0go/hxp5S3V5Z8G2Rsa1FJy50qF2WM5EJNJ/MqN75TApjfgMkfrbO6gau3X12nCqwsT7aDg==} + + lib0@0.2.97: + resolution: {integrity: sha512-Q4d1ekgvufi9FiHkkL46AhecfNjznSL9MRNoJRQ76gBHS9OqU2ArfQK0FvBpuxgWeJeNI0LVgAYMIpsGeX4gYg==} + engines: {node: '>=16'} + hasBin: true + + lilconfig@2.1.0: + resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==} + engines: {node: '>=10'} + + lilconfig@3.1.2: + resolution: {integrity: sha512-eop+wDAvpItUys0FWkHIKeC9ybYrTGbU41U5K7+bttZZeohvnY7M9dZ5kB21GNWiFT2q1OoPTvncPCgSOVO5ow==} + engines: {node: '>=14'} + + lines-and-columns@1.2.4: + resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} + + locate-path@6.0.0: + resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} + engines: {node: '>=10'} + + locate-path@7.2.0: + resolution: {integrity: sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + lodash.castarray@4.4.0: + resolution: {integrity: sha512-aVx8ztPv7/2ULbArGJ2Y42bG1mEQ5mGjpdvrbJcJFU3TbYybe+QlLS4pst9zV52ymy2in1KpFPiZnAOATxD4+Q==} + + lodash.includes@4.3.0: + resolution: {integrity: sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w==} + + lodash.isboolean@3.0.3: + resolution: {integrity: sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg==} + + lodash.isinteger@4.0.4: + resolution: {integrity: sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA==} + + lodash.isnumber@3.0.3: + resolution: {integrity: sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw==} + + lodash.isplainobject@4.0.6: + resolution: {integrity: sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==} + + lodash.isstring@4.0.1: + resolution: {integrity: sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==} + + lodash.merge@4.6.2: + resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} + + lodash.once@4.1.1: + resolution: {integrity: sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==} + + lodash@4.17.21: + resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} + + loose-envify@1.4.0: + resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} + hasBin: true + + lru-cache@10.4.3: + resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} + + lucide-react@0.378.0: + resolution: {integrity: sha512-u6EPU8juLUk9ytRcyapkWI18epAv3RU+6+TC23ivjR0e+glWKBobFeSgRwOIJihzktILQuy6E0E80P2jVTDR5g==} + peerDependencies: + react: ^16.5.1 || ^17.0.0 || ^18.0.0 + + md5@2.3.0: + resolution: {integrity: sha512-T1GITYmFaKuO91vxyoQMFETst+O71VUPEU3ze5GNzDm0OWdP8v1ziTaAEPUr/3kLsY3Sftgz242A1SetQiDL7g==} + + memoize-one@6.0.0: + resolution: {integrity: sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw==} + + memory-pager@1.5.0: + resolution: {integrity: sha512-ZS4Bp4r/Zoeq6+NLJpP+0Zzm0pR8whtGPf1XExKLJBAczGMnSi3It14OiNCStjQjM6NU1okjQGSxgEZN8eBYKg==} + + merge2@1.4.1: + resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} + engines: {node: '>= 8'} + + micromatch@4.0.8: + resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} + engines: {node: '>=8.6'} + + mime-db@1.52.0: + resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} + engines: {node: '>= 0.6'} + + mime-types@2.1.35: + resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} + engines: {node: '>= 0.6'} + + mimic-response@3.1.0: + resolution: {integrity: sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==} + engines: {node: '>=10'} + + minimatch@3.1.2: + resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} + + minimatch@9.0.1: + resolution: {integrity: sha512-0jWhJpD/MdhPXwPuiRkCbfYfSKp2qnn2eOc279qI7f+osl/l+prKSrvhg157zSYvx/1nmgn2NqdT6k2Z7zSH9w==} + engines: {node: '>=16 || 14 >=14.17'} + + minimatch@9.0.3: + resolution: {integrity: sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==} + engines: {node: '>=16 || 14 >=14.17'} + + minimatch@9.0.5: + resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} + engines: {node: '>=16 || 14 >=14.17'} + + minimist@1.2.8: + resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} + + minipass@7.1.2: + resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} + engines: {node: '>=16 || 14 >=14.17'} + + mkdirp-classic@0.5.3: + resolution: {integrity: sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==} + + mkdirp@1.0.4: + resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==} + engines: {node: '>=10'} + hasBin: true + + monaco-editor@0.51.0: + resolution: {integrity: sha512-xaGwVV1fq343cM7aOYB6lVE4Ugf0UyimdD/x5PWcWBMKENwectaEu77FAN7c5sFiyumqeJdX1RPTh1ocioyDjw==} + + mongodb-connection-string-url@2.6.0: + resolution: {integrity: sha512-WvTZlI9ab0QYtTYnuMLgobULWhokRjtC7db9LtcVfJ+Hsnyr5eo6ZtNAt3Ly24XZScGMelOcGtm7lSn0332tPQ==} + + mongodb@4.17.1: + resolution: {integrity: sha512-MBuyYiPUPRTqfH2dV0ya4dcr2E5N52ocBuZ8Sgg/M030nGF78v855B3Z27mZJnp8PxjnUquEnAtjOsphgMZOlQ==} + engines: {node: '>=12.9.0'} + + mongoose-paginate-v2@1.7.22: + resolution: {integrity: sha512-xW5GugkE21DJiu9e13EOxKt4ejEKQkRP/S1PkkXRjnk2rRZVKBcld1nPV+VJ/YCPfm8hb3sz9OvI7O38RmixkA==} + engines: {node: '>=4.0.0'} + + mongoose@6.12.3: + resolution: {integrity: sha512-MNJymaaXali7w7rHBxVUoQ3HzHHMk/7I/+yeeoSa4rUzdjZwIWQznBNvVgc0A8ghuJwsuIkb5LyLV6gSjGjWyQ==} + engines: {node: '>=12.0.0'} + + mpath@0.9.0: + resolution: {integrity: sha512-ikJRQTk8hw5DEoFVxHG1Gn9T/xcjtdnOKIU1JTmGjZZlg9LST2mBLmcX3/ICIbgJydT2GOc15RnNy5mHmzfSew==} + engines: {node: '>=4.0.0'} + + mquery@4.0.3: + resolution: {integrity: sha512-J5heI+P08I6VJ2Ky3+33IpCdAvlYGTSUjwTPxkAr8i8EoduPMBX2OY/wa3IKZIQl7MU4SbFk8ndgSKyB/cl1zA==} + engines: {node: '>=12.0.0'} + + ms@2.1.3: + resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + + mz@2.7.0: + resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} + + nanoid@3.3.7: + resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + + napi-build-utils@1.0.2: + resolution: {integrity: sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==} + + natural-compare-lite@1.4.0: + resolution: {integrity: sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==} + + natural-compare@1.4.0: + resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} + + next@15.0.0-canary.104: + resolution: {integrity: sha512-LVzRmV/p/BGGYmTjlZSmCULmBQ2S5ov1nQAXYssu4cEMhkpklQVgh2I+uHHgo/xgdqIIcEBlUgsfV+CfKVsM6Q==} + engines: {node: '>=18.18.0'} + hasBin: true + peerDependencies: + '@opentelemetry/api': ^1.1.0 + '@playwright/test': ^1.41.2 + babel-plugin-react-compiler: '*' + react: 19.0.0-rc-06d0b89e-20240801 + react-dom: 19.0.0-rc-06d0b89e-20240801 + sass: ^1.3.0 + peerDependenciesMeta: + '@opentelemetry/api': + optional: true + '@playwright/test': + optional: true + babel-plugin-react-compiler: + optional: true + sass: + optional: true + + node-abi@3.67.0: + resolution: {integrity: sha512-bLn/fU/ALVBE9wj+p4Y21ZJWYFjUXLXPi/IewyLZkx3ApxKDNBWCKdReeKOtD8dWpOdDCeMyLh6ZewzcLsG2Nw==} + engines: {node: '>=10'} + + node-addon-api@6.1.0: + resolution: {integrity: sha512-+eawOlIgy680F0kBzPUNFhMZGtJ1YmqM6l4+Crf4IkImjYrO/mqPwRMh352g23uIaQKFItcQ64I7KMaJxHgAVA==} + + node-fetch@2.7.0: + resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==} + engines: {node: 4.x || >=6.0.0} + peerDependencies: + encoding: ^0.1.0 + peerDependenciesMeta: + encoding: + optional: true + + node-releases@2.0.18: + resolution: {integrity: sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==} + + nodemailer@6.9.10: + resolution: {integrity: sha512-qtoKfGFhvIFW5kLfrkw2R6Nm6Ur4LNUMykyqu6n9BRKJuyQrqEGwdXXUAbwWEKt33dlWUGXb7rzmJP/p4+O+CA==} + engines: {node: '>=6.0.0'} + + noms@0.0.0: + resolution: {integrity: sha512-lNDU9VJaOPxUmXcLb+HQFeUgQQPtMI24Gt6hgfuMHRJgMRHMF/qZ4HJD3GDru4sSw9IQl2jPjAYnQrdIeLbwow==} + + nopt@7.2.1: + resolution: {integrity: sha512-taM24ViiimT/XntxbPyJQzCG+p4EKOpgD3mxFwW38mGjVUrfERQOeY4EDHjdnptttfHuHQXFx+lTP08Q+mLa/w==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + hasBin: true + + normalize-path@3.0.0: + resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} + engines: {node: '>=0.10.0'} + + normalize-range@0.1.2: + resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==} + engines: {node: '>=0.10.0'} + + object-assign@4.1.1: + resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} + engines: {node: '>=0.10.0'} + + object-hash@3.0.0: + resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==} + engines: {node: '>= 6'} + + object-inspect@1.13.2: + resolution: {integrity: sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==} + engines: {node: '>= 0.4'} + + object-is@1.1.6: + resolution: {integrity: sha512-F8cZ+KfGlSGi09lJT7/Nd6KJZ9ygtvYC0/UYYLI9nmQKLMnydpB9yvbv9K1uSkEu7FU9vYPmVwLg328tX+ot3Q==} + engines: {node: '>= 0.4'} + + object-keys@1.1.1: + resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} + engines: {node: '>= 0.4'} + + object-to-formdata@4.5.1: + resolution: {integrity: sha512-QiM9D0NiU5jV6J6tjE1g7b4Z2tcUnKs1OPUi4iMb2zH+7jwlcUrASghgkFk9GtzqNNq8rTQJtT8AzjBAvLoNMw==} + + object.assign@4.1.5: + resolution: {integrity: sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==} + engines: {node: '>= 0.4'} + + object.entries@1.1.8: + resolution: {integrity: sha512-cmopxi8VwRIAw/fkijJohSfpef5PdN0pMQJN6VC/ZKvn0LIknWD8KtgY6KlQdEc4tIjcQ3HxSMmnvtzIscdaYQ==} + engines: {node: '>= 0.4'} + + object.fromentries@2.0.8: + resolution: {integrity: sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==} + engines: {node: '>= 0.4'} + + object.groupby@1.0.3: + resolution: {integrity: sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==} + engines: {node: '>= 0.4'} + + object.hasown@1.1.4: + resolution: {integrity: sha512-FZ9LZt9/RHzGySlBARE3VF+gE26TxR38SdmqOqliuTnl9wrKulaQs+4dee1V+Io8VfxqzAfHu6YuRgUy8OHoTg==} + engines: {node: '>= 0.4'} + + object.values@1.2.0: + resolution: {integrity: sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ==} + engines: {node: '>= 0.4'} + + on-exit-leak-free@2.1.2: + resolution: {integrity: sha512-0eJJY6hXLGf1udHwfNftBqH+g73EU4B504nZeKpz1sYRKafAghwxEJunB2O7rDZkL4PGfsMVnTXZ2EjibbqcsA==} + engines: {node: '>=14.0.0'} + + once@1.4.0: + resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} + + optionator@0.9.4: + resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} + engines: {node: '>= 0.8.0'} + + p-limit@3.1.0: + resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} + engines: {node: '>=10'} + + p-limit@4.0.0: + resolution: {integrity: sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + p-locate@5.0.0: + resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} + engines: {node: '>=10'} + + p-locate@6.0.0: + resolution: {integrity: sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + package-json-from-dist@1.0.0: + resolution: {integrity: sha512-dATvCeZN/8wQsGywez1mzHtTlP22H8OEfPrVMLNr4/eGa+ijtLn/6M5f0dY8UKNrC2O9UCU6SSoG3qRKnt7STw==} + + parent-module@1.0.1: + resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} + engines: {node: '>=6'} + + parse-json@5.2.0: + resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} + engines: {node: '>=8'} + + parseley@0.11.0: + resolution: {integrity: sha512-VfcwXlBWgTF+unPcr7yu3HSSA6QUdDaDnrHcytVfj5Z8azAyKBDrYnSIfeSxlrEayndNcLmrXzg+Vxbo6DWRXQ==} + + path-exists@4.0.0: + resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} + engines: {node: '>=8'} + + path-exists@5.0.0: + resolution: {integrity: sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + path-is-absolute@1.0.1: + resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} + engines: {node: '>=0.10.0'} + + path-key@3.1.1: + resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} + engines: {node: '>=8'} + + path-parse@1.0.7: + resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} + + path-scurry@1.11.1: + resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} + engines: {node: '>=16 || 14 >=14.18'} + + path-to-regexp@6.3.0: + resolution: {integrity: sha512-Yhpw4T9C6hPpgPeA28us07OJeqZ5EzQTkbfwuhsUg0c237RomFoETJgmp2sa3F/41gfLE6G5cqcYwznmeEeOlQ==} + + path-type@4.0.0: + resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} + engines: {node: '>=8'} + + payload-admin-bar@1.0.6: + resolution: {integrity: sha512-hpQdOiPq4LpWTkbuAnvxDf5wQ2ysMp9kQt+X2U+FfvBwD1U6qoxJfmUymG1OjLlaZzCZ93FlOdTl4u4Z0/m/SA==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + + payload@3.0.0-beta.106: + resolution: {integrity: sha512-LYBzGJWTKEcJNJojQvSEO2BvkAL8MPKG2M8VyYQ1bH1xd74wSc7Nx0L17cavqmbAFqu7zeZrDCSJ1OdOzFFpSg==} + engines: {node: ^18.20.2 || >=20.9.0} + hasBin: true + peerDependencies: + graphql: ^16.8.1 + + peberminta@0.8.0: + resolution: {integrity: sha512-YYEs+eauIjDH5nUEGi18EohWE0nV2QbGTqmxQcqgZ/0g+laPCQmuIqq7EBLVi9uim9zMgfJv0QBZEnQ3uHw/Tw==} + + peek-readable@5.2.0: + resolution: {integrity: sha512-U94a+eXHzct7vAd19GH3UQ2dH4Satbng0MyYTMaQatL0pvYYL5CTPR25HBhKtecl+4bfu1/i3vC6k0hydO5Vcw==} + engines: {node: '>=14.16'} + + picocolors@1.1.0: + resolution: {integrity: sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw==} + + picomatch@2.3.1: + resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} + engines: {node: '>=8.6'} + + pify@2.3.0: + resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} + engines: {node: '>=0.10.0'} + + pino-abstract-transport@1.2.0: + resolution: {integrity: sha512-Guhh8EZfPCfH+PMXAb6rKOjGQEoy0xlAIn+irODG5kgfYV+BQ0rGYYWTIel3P5mmyXqkYkPmdIkywsn6QKUR1Q==} + + pino-pretty@11.2.1: + resolution: {integrity: sha512-O05NuD9tkRasFRWVaF/uHLOvoRDFD7tb5VMertr78rbsYFjYp48Vg3477EshVAF5eZaEw+OpDl/tu+B0R5o+7g==} + hasBin: true + + pino-std-serializers@7.0.0: + resolution: {integrity: sha512-e906FRY0+tV27iq4juKzSYPbUj2do2X2JX4EzSca1631EB2QJQUqGbDuERal7LCtOpxl6x3+nvo9NPZcmjkiFA==} + + pino@9.3.1: + resolution: {integrity: sha512-afSfrq/hUiW/MFmQcLEwV9Zh8Ry6MrMTOyBU53o/fc0gEl+1OZ/Fks/xQCM2nOC0C/OfDtQMnT2d8c3kpcfSzA==} + hasBin: true + + pirates@4.0.6: + resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==} + engines: {node: '>= 6'} + + pluralize@8.0.0: + resolution: {integrity: sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==} + engines: {node: '>=4'} + + possible-typed-array-names@1.0.0: + resolution: {integrity: sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==} + engines: {node: '>= 0.4'} + + postcss-import@15.1.0: + resolution: {integrity: sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==} + engines: {node: '>=14.0.0'} + peerDependencies: + postcss: ^8.0.0 + + postcss-js@4.0.1: + resolution: {integrity: sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==} + engines: {node: ^12 || ^14 || >= 16} + peerDependencies: + postcss: ^8.4.21 + + postcss-load-config@4.0.2: + resolution: {integrity: sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==} + engines: {node: '>= 14'} + peerDependencies: + postcss: '>=8.0.9' + ts-node: '>=9.0.0' + peerDependenciesMeta: + postcss: + optional: true + ts-node: + optional: true + + postcss-nested@6.2.0: + resolution: {integrity: sha512-HQbt28KulC5AJzG+cZtj9kvKB93CFCdLvog1WFLf1D+xmMvPGlBstkpTEZfK5+AN9hfJocyBFCNiqyS48bpgzQ==} + engines: {node: '>=12.0'} + peerDependencies: + postcss: ^8.2.14 + + postcss-selector-parser@6.0.10: + resolution: {integrity: sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==} + engines: {node: '>=4'} + + postcss-selector-parser@6.1.2: + resolution: {integrity: sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==} + engines: {node: '>=4'} + + postcss-value-parser@4.2.0: + resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} + + postcss@8.4.31: + resolution: {integrity: sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==} + engines: {node: ^10 || ^12 || >=14} + + postcss@8.4.47: + resolution: {integrity: sha512-56rxCq7G/XfB4EkXq9Egn5GCqugWvDFjafDOThIdMBsI15iqPqR5r15TfSr1YPYeEI19YeaXMCbY6u88Y76GLQ==} + engines: {node: ^10 || ^12 || >=14} + + prebuild-install@7.1.2: + resolution: {integrity: sha512-UnNke3IQb6sgarcZIDU3gbMeTp/9SSU1DAIkil7PrqG1vZlBtY5msYccSKSHDqa3hNg436IXK+SNImReuA1wEQ==} + engines: {node: '>=10'} + hasBin: true + + prelude-ls@1.2.1: + resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} + engines: {node: '>= 0.8.0'} + + prettier@3.3.3: + resolution: {integrity: sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew==} + engines: {node: '>=14'} + hasBin: true + + pretty@2.0.0: + resolution: {integrity: sha512-G9xUchgTEiNpormdYBl+Pha50gOUovT18IvAe7EYMZ1/f9W/WWMPRn+xI68yXNMUk3QXHDwo/1wV/4NejVNe1w==} + engines: {node: '>=0.10.0'} + + prism-react-renderer@2.4.0: + resolution: {integrity: sha512-327BsVCD/unU4CNLZTWVHyUHKnsqcvj2qbPlQ8MiBE2eq2rgctjigPA1Gp9HLF83kZ20zNN6jgizHJeEsyFYOw==} + peerDependencies: + react: '>=16.0.0' + + prismjs@1.29.0: + resolution: {integrity: sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q==} + engines: {node: '>=6'} + + process-nextick-args@2.0.1: + resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} + + process-warning@3.0.0: + resolution: {integrity: sha512-mqn0kFRl0EoqhnL0GQ0veqFHyIN1yig9RHh/InzORTUiZHFRAur+aMtRkELNwGs9aNwKS6tg/An4NYBPGwvtzQ==} + + process@0.11.10: + resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==} + engines: {node: '>= 0.6.0'} + + prompts@2.4.2: + resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==} + engines: {node: '>= 6'} + + prop-types@15.8.1: + resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} + + proto-list@1.2.4: + resolution: {integrity: sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==} + + proxy-from-env@1.1.0: + resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} + + pump@3.0.2: + resolution: {integrity: sha512-tUPXtzlGM8FE3P0ZL6DVs/3P58k9nk8/jZeQCurTJylQA8qFYzHFfhBJkuqyE0FifOsQ0uKWekiZ5g8wtr28cw==} + + punycode@2.3.1: + resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} + engines: {node: '>=6'} + + qs-esm@7.0.2: + resolution: {integrity: sha512-D8NAthKSD7SGn748v+GLaaO6k08Mvpoqroa35PqIQC4gtUa8/Pb/k+r0m0NnGBVbHDP1gKZ2nVywqfMisRhV5A==} + engines: {node: '>=18'} + + queue-microtask@1.2.3: + resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} + + queue-tick@1.0.1: + resolution: {integrity: sha512-kJt5qhMxoszgU/62PLP1CJytzd2NKetjSRnyuj31fDd3Rlcz3fzlFdFLD1SItunPwyqEOkca6GbV612BWfaBag==} + + queue@6.0.2: + resolution: {integrity: sha512-iHZWu+q3IdFZFX36ro/lKBkSvfkztY5Y7HMiPlOUjhupPcG2JMfst2KKEpu5XndviX/3UhFbRngUPNKtgvtZiA==} + + quick-format-unescaped@4.0.4: + resolution: {integrity: sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg==} + + rc@1.2.8: + resolution: {integrity: sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==} + hasBin: true + + react-animate-height@2.1.2: + resolution: {integrity: sha512-A9jfz/4CTdsIsE7WCQtO9UkOpMBcBRh8LxyHl2eoZz1ki02jpyUL5xt58gabd0CyeLQ8fRyQ+s2lyV2Ufu8Owg==} + engines: {node: '>= 6.0.0'} + peerDependencies: + react: '>=15.6.2' + react-dom: '>=15.6.2' + + react-datepicker@6.9.0: + resolution: {integrity: sha512-QTxuzeem7BUfVFWv+g5WuvzT0c5BPo+XTCNbMTZKSZQLU+cMMwSUHwspaxuIcDlwNcOH0tiJ+bh1fJ2yxOGYWA==} + peerDependencies: + react: ^16.9.0 || ^17 || ^18 + react-dom: ^16.9.0 || ^17 || ^18 + + react-diff-viewer-continued@3.2.6: + resolution: {integrity: sha512-GrzyqQnjIMoej+jMjWvtVSsQqhXgzEGqpXlJ2dAGfOk7Q26qcm8Gu6xtI430PBUyZsERe8BJSQf+7VZZo8IBNQ==} + engines: {node: '>= 8'} + peerDependencies: + react: ^15.3.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 + react-dom: ^15.3.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 + + react-dom@18.3.1: + resolution: {integrity: sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==} + peerDependencies: + react: ^18.3.1 + + react-dom@19.0.0-rc-06d0b89e-20240801: + resolution: {integrity: sha512-6JIbEXFwsRkI3gLKhcmjvQ3GKsP4NR/BjPyTKyp7xYeQEeiH01TypGVbc/K6nU1/y4jNGFGkxH3ZFbKKZwCecw==} + peerDependencies: + react: 19.0.0-rc-06d0b89e-20240801 + + react-error-boundary@3.1.4: + resolution: {integrity: sha512-uM9uPzZJTF6wRQORmSrvOIgt4lJ9MC1sNgEOj2XGsDTRE4kmpWxg7ENK9EWNKJRMAOY9z0MuF4yIfl6gp4sotA==} + engines: {node: '>=10', npm: '>=6'} + peerDependencies: + react: '>=16.13.1' + + react-error-boundary@4.0.13: + resolution: {integrity: sha512-b6PwbdSv8XeOSYvjt8LpgpKrZ0yGdtZokYwkwV2wlcZbxgopHX/hgPl5VgpnoVOWd868n1hktM8Qm4b+02MiLQ==} + peerDependencies: + react: '>=16.13.1' + + react-hook-form@7.45.4: + resolution: {integrity: sha512-HGDV1JOOBPZj10LB3+OZgfDBTn+IeEsNOKiq/cxbQAIbKaiJUe/KV8DBUzsx0Gx/7IG/orWqRRm736JwOfUSWQ==} + engines: {node: '>=12.22.0'} + peerDependencies: + react: ^16.8.0 || ^17 || ^18 + + react-image-crop@10.1.8: + resolution: {integrity: sha512-4rb8XtXNx7ZaOZarKKnckgz4xLMvds/YrU6mpJfGhGAsy2Mg4mIw1x+DCCGngVGq2soTBVVOxx2s/C6mTX9+pA==} + peerDependencies: + react: '>=16.13.1' + + react-is@16.13.1: + resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} + + react-onclickoutside@6.13.1: + resolution: {integrity: sha512-LdrrxK/Yh9zbBQdFbMTXPp3dTSN9B+9YJQucdDu3JNKRrbdU+H+/TVONJoWtOwy4II8Sqf1y/DTI6w/vGPYW0w==} + peerDependencies: + react: ^15.5.x || ^16.x || ^17.x || ^18.x + react-dom: ^15.5.x || ^16.x || ^17.x || ^18.x + + react-remove-scroll-bar@2.3.6: + resolution: {integrity: sha512-DtSYaao4mBmX+HDo5YWYdBWQwYIQQshUV/dVxFxK+KM26Wjwp1gZ6rv6OC3oujI6Bfu6Xyg3TwK533AQutsn/g==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': npm:types-react@19.0.0-rc.0 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + + react-remove-scroll@2.5.7: + resolution: {integrity: sha512-FnrTWO4L7/Bhhf3CYBNArEG/yROV0tKmTv7/3h9QCFvH6sndeFf1wPqOcbFVu5VAulS5dV1wGT3GZZ/1GawqiA==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': npm:types-react@19.0.0-rc.0 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + + react-select@5.8.0: + resolution: {integrity: sha512-TfjLDo58XrhP6VG5M/Mi56Us0Yt8X7xD6cDybC7yoRMUNm7BGO7qk8J0TLQOua/prb8vUOtsfnXZwfm30HGsAA==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + + react-style-singleton@2.2.1: + resolution: {integrity: sha512-ZWj0fHEMyWkHzKYUr2Bs/4zU6XLmq9HsgBURm7g5pAVfyn49DgUiNgY2d4lXRlYSiCif9YBGpQleewkcqddc7g==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': npm:types-react@19.0.0-rc.0 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + + react-transition-group@4.4.5: + resolution: {integrity: sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g==} + peerDependencies: + react: '>=16.6.0' + react-dom: '>=16.6.0' + + react@18.3.1: + resolution: {integrity: sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==} + engines: {node: '>=0.10.0'} + + react@19.0.0-rc-06d0b89e-20240801: + resolution: {integrity: sha512-moBKIME1GBgs8onH1xCs+gzPWyLF62m+2XbD4GpirxeRDca7GLA8UQZO9IuQvf1uxCpVWCG8FrpU/D2x7Plknw==} + engines: {node: '>=0.10.0'} + + read-cache@1.0.0: + resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==} + + readable-stream@1.0.34: + resolution: {integrity: sha512-ok1qVCJuRkNmvebYikljxJA/UEsKwLl2nI1OmaqAu4/UE+h0wKCHok4XkL/gvi39OacXvw59RJUOFUkDib2rHg==} + + readable-stream@2.3.8: + resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==} + + readable-stream@3.6.2: + resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} + engines: {node: '>= 6'} + + readable-stream@4.5.2: + resolution: {integrity: sha512-yjavECdqeZ3GLXNgRXgeQEdz9fvDDkNKyHnbHRFtOr7/LcfgBcmct7t/ET+HaCTqfh06OzoAxrkN/IfjJBVe+g==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + readable-web-to-node-stream@3.0.2: + resolution: {integrity: sha512-ePeK6cc1EcKLEhJFt/AebMCLL+GgSKhuygrZ/GLaKZYEecIgIECf4UaUuaByiGtzckwR4ain9VzUh95T1exYGw==} + engines: {node: '>=8'} + + readdirp@3.6.0: + resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} + engines: {node: '>=8.10.0'} + + real-require@0.2.0: + resolution: {integrity: sha512-57frrGM/OCTLqLOAh0mhVA9VBMHd+9U7Zb2THMGdBUoZVOtGbJzjxsYGDJ3A9AYYCP4hn6y1TVbaOfzWtm5GFg==} + engines: {node: '>= 12.13.0'} + + refa@0.11.0: + resolution: {integrity: sha512-486O8/pQXwj9jV0mVvUnTsxq0uknpBnNJ0eCUhkZqJRQ8KutrT1PhzmumdCeM1hSBF2eMlFPmwECRER4IbKXlQ==} + engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} + + reflect.getprototypeof@1.0.6: + resolution: {integrity: sha512-fmfw4XgoDke3kdI6h4xcUz1dG8uaiv5q9gcEwLS4Pnth2kxT+GZ7YehS1JTMGBQmtV7Y4GFGbs2re2NqhdozUg==} + engines: {node: '>= 0.4'} + + regenerator-runtime@0.14.1: + resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==} + + regexp-ast-analysis@0.6.0: + resolution: {integrity: sha512-OLxjyjPkVH+rQlBLb1I/P/VTmamSjGkvN5PTV5BXP432k3uVz727J7H29GA5IFiY0m7e1xBN7049Wn59FY3DEQ==} + engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} + + regexp.prototype.flags@1.5.2: + resolution: {integrity: sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==} + engines: {node: '>= 0.4'} + + regexpp@3.2.0: + resolution: {integrity: sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==} + engines: {node: '>=8'} + + require-directory@2.1.1: + resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} + engines: {node: '>=0.10.0'} + + require-from-string@2.0.2: + resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} + engines: {node: '>=0.10.0'} + + requireindex@1.2.0: + resolution: {integrity: sha512-L9jEkOi3ASd9PYit2cwRfyppc9NoABujTP8/5gFcbERmo5jUoAKovIC3fsF17pkTnGsrByysqX+Kxd2OTNI1ww==} + engines: {node: '>=0.10.5'} + + resend@0.17.2: + resolution: {integrity: sha512-lakm76u4MiIDeMF1s2tCmjtksOhwZOs4WcAXkA7aUTvl+63/h+0h6Q6WnkB8RGtj6GakUhQuUkiZshfXgtIrGw==} + + resolve-from@4.0.0: + resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} + engines: {node: '>=4'} + + resolve-pkg-maps@1.0.0: + resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} + + resolve@1.22.8: + resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==} + hasBin: true + + resolve@2.0.0-next.5: + resolution: {integrity: sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==} + hasBin: true + + reusify@1.0.4: + resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} + engines: {iojs: '>=1.0.0', node: '>=0.10.0'} + + rimraf@3.0.2: + resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} + deprecated: Rimraf versions prior to v4 are no longer supported + hasBin: true + + run-parallel@1.2.0: + resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} + + safe-array-concat@1.1.2: + resolution: {integrity: sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==} + engines: {node: '>=0.4'} + + safe-buffer@5.1.2: + resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} + + safe-buffer@5.2.1: + resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} + + safe-regex-test@1.0.3: + resolution: {integrity: sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==} + engines: {node: '>= 0.4'} + + safe-stable-stringify@2.5.0: + resolution: {integrity: sha512-b3rppTKm9T+PsVCBEOUR46GWI7fdOs00VKZ1+9c1EWDaDMvjQc6tUwuFyIprgGgTcWoVHSKrU8H31ZHA2e0RHA==} + engines: {node: '>=10'} + + sanitize-filename@1.6.3: + resolution: {integrity: sha512-y/52Mcy7aw3gRm7IrcGDFx/bCk4AhRh2eI9luHOQM86nZsqwiRkkq2GekHXBBD+SmPidc8i2PqtYZl+pWJ8Oeg==} + + sass@1.77.4: + resolution: {integrity: sha512-vcF3Ckow6g939GMA4PeU7b2K/9FALXk2KF9J87txdHzXbUF9XRQRwSxcAs/fGaTnJeBFd7UoV22j3lzMLdM0Pw==} + engines: {node: '>=14.0.0'} + hasBin: true + + scheduler@0.23.2: + resolution: {integrity: sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==} + + scheduler@0.25.0-rc-06d0b89e-20240801: + resolution: {integrity: sha512-5RF+494IBigvBHUPYId9MhAWyN0cZZq3o82oAbYvZuc2IFc4mZYHS3z2MuJ5Lwm39zGWDEzB404X6BO47zbt5w==} + + scheduler@0.25.0-rc-f994737d14-20240522: + resolution: {integrity: sha512-qS+xGFF7AljP2APO2iJe8zESNsK20k25MACz+WGOXPybUsRdi1ssvaoF93im2nSX2q/XT3wKkjdz6RQfbmaxdw==} + + scmp@2.1.0: + resolution: {integrity: sha512-o/mRQGk9Rcer/jEEw/yw4mwo3EU/NvYvp577/Btqrym9Qy5/MdWGBqipbALgd2lrdWTJ5/gqDusxfnQBxOxT2Q==} + + scslre@0.2.0: + resolution: {integrity: sha512-4hc49fUMmX3jM0XdFUAPBrs1xwEcdHa0KyjEsjFs+Zfc66mpFpq5YmRgDtl+Ffo6AtJIilfei+yKw8fUn3N88w==} + + secure-json-parse@2.7.0: + resolution: {integrity: sha512-6aU+Rwsezw7VR8/nyvKTx8QpWH9FrcYiXXlqC4z5d5XQBDRqtbfsRjnwGyqbi3gddNtWHuEk9OANUotL26qKUw==} + + selderee@0.10.0: + resolution: {integrity: sha512-DEL/RW/f4qLw/NrVg97xKaEBC8IpzIG2fvxnzCp3Z4yk4jQ3MXom+Imav9wApjxX2dfS3eW7x0DXafJr85i39A==} + + semver@6.3.1: + resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} + hasBin: true + + semver@7.6.3: + resolution: {integrity: sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==} + engines: {node: '>=10'} + hasBin: true + + set-function-length@1.2.2: + resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==} + engines: {node: '>= 0.4'} + + set-function-name@2.0.2: + resolution: {integrity: sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==} + engines: {node: '>= 0.4'} + + sharp@0.32.6: + resolution: {integrity: sha512-KyLTWwgcR9Oe4d9HwCwNM2l7+J0dUQwn/yf7S0EnTtb0eVS4RxO0eUSvxPtzT4F3SY+C4K6fqdv/DO27sJ/v/w==} + engines: {node: '>=14.15.0'} + + sharp@0.33.5: + resolution: {integrity: sha512-haPVm1EkS9pgvHrQ/F3Xy+hgcuMV0Wm9vfIBSiwZ05k+xgb0PkBQpGsAA/oWdDobNaZTH5ppvHtzCFbnSEwHVw==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + + shebang-command@2.0.0: + resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} + engines: {node: '>=8'} + + shebang-regex@3.0.0: + resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} + engines: {node: '>=8'} + + side-channel@1.0.6: + resolution: {integrity: sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==} + engines: {node: '>= 0.4'} + + sift@16.0.1: + resolution: {integrity: sha512-Wv6BjQ5zbhW7VFefWusVP33T/EM0vYikCaQ2qR8yULbsilAT8/wQaXvuQ3ptGLpoKx+lihJE3y2UTgKDyyNHZQ==} + + signal-exit@4.1.0: + resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} + engines: {node: '>=14'} + + simple-concat@1.0.1: + resolution: {integrity: sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==} + + simple-get@4.0.1: + resolution: {integrity: sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==} + + simple-swizzle@0.2.2: + resolution: {integrity: sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==} + + simple-wcswidth@1.0.1: + resolution: {integrity: sha512-xMO/8eNREtaROt7tJvWJqHBDTMFN4eiQ5I4JRMuilwfnFcV5W9u7RUkueNkdw0jPqGMX36iCywelS5yilTuOxg==} + + sisteransi@1.0.5: + resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} + + slash@3.0.0: + resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} + engines: {node: '>=8'} + + smart-buffer@4.2.0: + resolution: {integrity: sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==} + engines: {node: '>= 6.0.0', npm: '>= 3.0.0'} + + socks@2.8.3: + resolution: {integrity: sha512-l5x7VUUWbjVFbafGLxPWkYsHIhEvmF85tbIeFZWc8ZPtoMyybuEhL7Jye/ooC4/d48FgOjSJXgsF/AJPYCW8Zw==} + engines: {node: '>= 10.0.0', npm: '>= 3.0.0'} + + sonic-boom@4.1.0: + resolution: {integrity: sha512-NGipjjRicyJJ03rPiZCJYjwlsuP2d1/5QUviozRXC7S3WdVWNK5e3Ojieb9CCyfhq2UC+3+SRd9nG3I2lPRvUw==} + + sonner@1.5.0: + resolution: {integrity: sha512-FBjhG/gnnbN6FY0jaNnqZOMmB73R+5IiyYAw8yBj7L54ER7HB3fOSE5OFiQiE2iXWxeXKvg6fIP4LtVppHEdJA==} + peerDependencies: + react: ^18.0.0 + react-dom: ^18.0.0 + + source-map-js@1.2.1: + resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} + engines: {node: '>=0.10.0'} + + source-map@0.5.7: + resolution: {integrity: sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==} + engines: {node: '>=0.10.0'} + + sparse-bitfield@3.0.3: + resolution: {integrity: sha512-kvzhi7vqKTfkh0PZU+2D2PIllw2ymqJKujUcyPMd9Y75Nv4nPbGJZXNhxsgdQab2BmlDct1YnfQCguEvHr7VsQ==} + + split2@4.2.0: + resolution: {integrity: sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==} + engines: {node: '>= 10.x'} + + sprintf-js@1.1.3: + resolution: {integrity: sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==} + + state-local@1.0.7: + resolution: {integrity: sha512-HTEHMNieakEnoe33shBYcZ7NX83ACUjCu8c40iOGEZsngj9zRnkqS9j1pqQPXwobB0ZcVTk27REb7COQ0UR59w==} + + stop-iteration-iterator@1.0.0: + resolution: {integrity: sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ==} + engines: {node: '>= 0.4'} + + stream-browserify@3.0.0: + resolution: {integrity: sha512-H73RAHsVBapbim0tU2JwwOiXUj+fikfiaoYAKHF3VJfA0pe2BCzkhAHBlLG6REzE+2WNZcxOXjK7lkso+9euLA==} + + streamsearch@1.1.0: + resolution: {integrity: sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==} + engines: {node: '>=10.0.0'} + + streamx@2.20.1: + resolution: {integrity: sha512-uTa0mU6WUC65iUvzKH4X9hEdvSW7rbPxPtwfWiLMSj3qTdQbAiUboZTxauKfpFuGIGa1C2BYijZ7wgdUXICJhA==} + + string-width@4.2.3: + resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} + engines: {node: '>=8'} + + string-width@5.1.2: + resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} + engines: {node: '>=12'} + + string.prototype.includes@2.0.0: + resolution: {integrity: sha512-E34CkBgyeqNDcrbU76cDjL5JLcVrtSdYq0MEh/B10r17pRP4ciHLwTgnuLV8Ay6cgEMLkcBkFCKyFZ43YldYzg==} + + string.prototype.matchall@4.0.11: + resolution: {integrity: sha512-NUdh0aDavY2og7IbBPenWqR9exH+E26Sv8e0/eTe1tltDGZL+GtBkDAnnyBtmekfK6/Dq3MkcGtzXFEd1LQrtg==} + engines: {node: '>= 0.4'} + + string.prototype.repeat@1.0.0: + resolution: {integrity: sha512-0u/TldDbKD8bFCQ/4f5+mNRrXwZ8hg2w7ZR8wa16e8z9XpePWl3eGEcUD0OXpEH/VJH/2G3gjUtR3ZOiBe2S/w==} + + string.prototype.trim@1.2.9: + resolution: {integrity: sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==} + engines: {node: '>= 0.4'} + + string.prototype.trimend@1.0.8: + resolution: {integrity: sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==} + + string.prototype.trimstart@1.0.8: + resolution: {integrity: sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==} + engines: {node: '>= 0.4'} + + string_decoder@0.10.31: + resolution: {integrity: sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==} + + string_decoder@1.1.1: + resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} + + string_decoder@1.3.0: + resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} + + strip-ansi@6.0.1: + resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} + engines: {node: '>=8'} + + strip-ansi@7.1.0: + resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} + engines: {node: '>=12'} + + strip-bom@3.0.0: + resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} + engines: {node: '>=4'} + + strip-json-comments@2.0.1: + resolution: {integrity: sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==} + engines: {node: '>=0.10.0'} + + strip-json-comments@3.1.1: + resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} + engines: {node: '>=8'} + + strnum@1.0.5: + resolution: {integrity: sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==} + + strtok3@7.1.1: + resolution: {integrity: sha512-mKX8HA/cdBqMKUr0MMZAFssCkIGoZeSCMXgnt79yKxNFguMLVFgRe6wB+fsL0NmoHDbeyZXczy7vEPSoo3rkzg==} + engines: {node: '>=16'} + + styled-jsx@5.1.6: + resolution: {integrity: sha512-qSVyDTeMotdvQYoHWLNGwRFJHC+i+ZvdBRYosOFgC+Wg1vx4frN2/RG/NA7SYqqvKNLf39P2LSRA2pu6n0XYZA==} + engines: {node: '>= 12.0.0'} + peerDependencies: + '@babel/core': '*' + babel-plugin-macros: '*' + react: '>= 16.8.0 || 17.x.x || ^18.0.0-0 || ^19.0.0-0' + peerDependenciesMeta: + '@babel/core': + optional: true + babel-plugin-macros: + optional: true + + stylis@4.2.0: + resolution: {integrity: sha512-Orov6g6BB1sDfYgzWfTHDOxamtX1bE/zo104Dh9e6fqJ3PooipYyfJ0pUmrZO2wAvO8YbEyeFrkV91XTsGMSrw==} + + sucrase@3.35.0: + resolution: {integrity: sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==} + engines: {node: '>=16 || 14 >=14.17'} + hasBin: true + + supports-color@5.5.0: + resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} + engines: {node: '>=4'} + + supports-color@7.2.0: + resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} + engines: {node: '>=8'} + + supports-preserve-symlinks-flag@1.0.0: + resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} + engines: {node: '>= 0.4'} + + tabbable@6.2.0: + resolution: {integrity: sha512-Cat63mxsVJlzYvN51JmVXIgNoUokrIaT2zLclCXjRd8boZ0004U4KCs/sToJ75C6sdlByWxpYnb5Boif1VSFew==} + + tailwind-merge@2.5.2: + resolution: {integrity: sha512-kjEBm+pvD+6eAwzJL2Bi+02/9LFLal1Gs61+QB7HvTfQQ0aXwC5LGT8PEt1gS0CWKktKe6ysPTAy3cBC5MeiIg==} + + tailwindcss-animate@1.0.7: + resolution: {integrity: sha512-bl6mpH3T7I3UFxuvDEXLxy/VuFxBk5bbzplh7tXI68mwMokNYd1t9qPBHlnyTwfa4JGC4zP516I1hYYtQ/vspA==} + peerDependencies: + tailwindcss: '>=3.0.0 || insiders' + + tailwindcss@3.4.11: + resolution: {integrity: sha512-qhEuBcLemjSJk5ajccN9xJFtM/h0AVCPaA6C92jNP+M2J8kX+eMJHI7R2HFKUvvAsMpcfLILMCFYSeDwpMmlUg==} + engines: {node: '>=14.0.0'} + hasBin: true + + tapable@2.2.1: + resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} + engines: {node: '>=6'} + + tar-fs@2.1.1: + resolution: {integrity: sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==} + + tar-fs@3.0.6: + resolution: {integrity: sha512-iokBDQQkUyeXhgPYaZxmczGPhnhXZ0CmrqI+MOb/WFGS9DW5wnfrLgtjUJBvz50vQ3qfRwJ62QVoCFu8mPVu5w==} + + tar-stream@2.2.0: + resolution: {integrity: sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==} + engines: {node: '>=6'} + + tar-stream@3.1.7: + resolution: {integrity: sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ==} + + text-decoder@1.2.0: + resolution: {integrity: sha512-n1yg1mOj9DNpk3NeZOx7T6jchTbyJS3i3cucbNN6FcdPriMZx7NsgrGpWWdWZZGxD7ES1XB+3uoqHMgOKaN+fg==} + + text-table@0.2.0: + resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} + + thenify-all@1.6.0: + resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==} + engines: {node: '>=0.8'} + + thenify@3.3.1: + resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} + + thread-stream@3.1.0: + resolution: {integrity: sha512-OqyPZ9u96VohAyMfJykzmivOrY2wfMSf3C5TtFJVgN+Hm6aj+voFhlK+kZEIv2FBh1X6Xp3DlnCOfEQ3B2J86A==} + + through2@2.0.5: + resolution: {integrity: sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==} + + to-fast-properties@2.0.0: + resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} + engines: {node: '>=4'} + + to-regex-range@5.0.1: + resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} + engines: {node: '>=8.0'} + + token-types@5.0.1: + resolution: {integrity: sha512-Y2fmSnZjQdDb9W4w4r1tswlMHylzWIeOKpx0aZH9BgGtACHhrk3OkT52AzwcuqTRBZtvvnTjDBh8eynMulu8Vg==} + engines: {node: '>=14.16'} + + tr46@0.0.3: + resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} + + tr46@3.0.0: + resolution: {integrity: sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==} + engines: {node: '>=12'} + + truncate-utf8-bytes@1.0.2: + resolution: {integrity: sha512-95Pu1QXQvruGEhv62XCMO3Mm90GscOCClvrIUwCM0PYOXK3kaF3l3sIHxx71ThJfcbM2O5Au6SO3AWCSEfW4mQ==} + + ts-api-utils@1.3.0: + resolution: {integrity: sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==} + engines: {node: '>=16'} + peerDependencies: + typescript: '>=4.2.0' + + ts-essentials@10.0.2: + resolution: {integrity: sha512-Xwag0TULqriaugXqVdDiGZ5wuZpqABZlpwQ2Ho4GDyiu/R2Xjkp/9+zcFxL7uzeLl/QCPrflnvpVYyS3ouT7Zw==} + peerDependencies: + typescript: '>=4.5.0' + peerDependenciesMeta: + typescript: + optional: true + + ts-interface-checker@0.1.13: + resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} + + tsconfig-paths@3.15.0: + resolution: {integrity: sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==} + + tslib@1.14.1: + resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} + + tslib@2.7.0: + resolution: {integrity: sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==} + + tsutils@3.21.0: + resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} + engines: {node: '>= 6'} + peerDependencies: + typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta' + + tsx@4.19.1: + resolution: {integrity: sha512-0flMz1lh74BR4wOvBjuh9olbnwqCPc35OOlfyzHba0Dc+QNUeWX/Gq2YTbnwcWPO3BMd8fkzRVrHcsR+a7z7rA==} + engines: {node: '>=18.0.0'} + hasBin: true + + tunnel-agent@0.6.0: + resolution: {integrity: sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==} + + type-check@0.4.0: + resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} + engines: {node: '>= 0.8.0'} + + type-fest@0.20.2: + resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} + engines: {node: '>=10'} + + type-fest@3.13.0: + resolution: {integrity: sha512-Gur3yQGM9qiLNs0KPP7LPgeRbio2QTt4xXouobMCarR0/wyW3F+F/+OWwshg3NG0Adon7uQfSZBpB46NfhoF1A==} + engines: {node: '>=14.16'} + + typed-array-buffer@1.0.2: + resolution: {integrity: sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==} + engines: {node: '>= 0.4'} + + typed-array-byte-length@1.0.1: + resolution: {integrity: sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==} + engines: {node: '>= 0.4'} + + typed-array-byte-offset@1.0.2: + resolution: {integrity: sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==} + engines: {node: '>= 0.4'} + + typed-array-length@1.0.6: + resolution: {integrity: sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==} + engines: {node: '>= 0.4'} + + types-react-dom@19.0.0-rc.0: + resolution: {integrity: sha512-wGlQSD6H6EeCxhH+dSip1cPcCU7nNTOwHEr29rjiNtGkUPlmEofOizoQaPMEqQH2V76ME3NLvBDLGajRu3xZOw==} + + types-react@19.0.0-rc.0: + resolution: {integrity: sha512-JFd3qtgXZ+EdHht8WXMPSF231brd6Bu4yLKqyo0JjpzhmjYxJptT6TBh/xFqOhx+ee2Nagj7Ttkh5F/jc49TVQ==} + + typescript@5.6.2: + resolution: {integrity: sha512-NW8ByodCSNCwZeghjN3o+JX5OFH0Ojg6sadjEKY4huZ52TqbJTJnDo5+Tw98lSy63NZvi4n+ez5m2u5d4PkZyw==} + engines: {node: '>=14.17'} + hasBin: true + + unbox-primitive@1.0.2: + resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==} + + undici-types@6.19.8: + resolution: {integrity: sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==} + + unfetch@4.2.0: + resolution: {integrity: sha512-F9p7yYCn6cIW9El1zi0HI6vqpeIvBsr3dSuRO6Xuppb1u5rXpCPmMvLSyECLhybr9isec8Ohl0hPekMVrEinDA==} + + unicorn-magic@0.1.0: + resolution: {integrity: sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ==} + engines: {node: '>=18'} + + untildify@4.0.0: + resolution: {integrity: sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==} + engines: {node: '>=8'} + + update-browserslist-db@1.1.0: + resolution: {integrity: sha512-EdRAaAyk2cUE1wOf2DkEhzxqOQvFOoRJFNS6NeyJ01Gp2beMRpBAINjM2iDXE3KCuKhwnvHIQCJm6ThL2Z+HzQ==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' + + uri-js@4.4.1: + resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} + + use-callback-ref@1.3.2: + resolution: {integrity: sha512-elOQwe6Q8gqZgDA8mrh44qRTQqpIHDcZ3hXTLjBe1i4ph8XpNJnO+aQf3NaG+lriLopI4HMx9VjQLfPQ6vhnoA==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': npm:types-react@19.0.0-rc.0 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + + use-context-selector@2.0.0: + resolution: {integrity: sha512-owfuSmUNd3eNp3J9CdDl0kMgfidV+MkDvHPpvthN5ThqM+ibMccNE0k+Iq7TWC6JPFvGZqanqiGCuQx6DyV24g==} + peerDependencies: + react: '>=18.0.0' + scheduler: '>=0.19.0' + + use-isomorphic-layout-effect@1.1.2: + resolution: {integrity: sha512-49L8yCO3iGT/ZF9QttjwLF/ZD9Iwto5LnH5LmEdk/6cFmXddqi2ulF0edxTwjj+7mqvpVVGQWvbXZdn32wRSHA==} + peerDependencies: + '@types/react': '*' + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + + use-sidecar@1.1.2: + resolution: {integrity: sha512-epTbsLuzZ7lPClpz2TyryBfztm7m+28DlEv2ZCQ3MDr5ssiwyOwGH/e5F9CkfWjJ1t4clvI58yF822/GUkjjhw==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': npm:types-react@19.0.0-rc.0 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + + utf8-byte-length@1.0.5: + resolution: {integrity: sha512-Xn0w3MtiQ6zoz2vFyUVruaCL53O/DwUvkEeOvj+uulMm0BkUGYWmBYVyElqZaSLhY6ZD0ulfU3aBra2aVT4xfA==} + + util-deprecate@1.0.2: + resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} + + uuid@10.0.0: + resolution: {integrity: sha512-8XkAphELsDnEGrDxUOHB3RGvXz6TeuYSGEZBOjtTtPm2lwhGBjLgOzLHB63IUWfBpNucQjND6d3AOudO+H3RWQ==} + hasBin: true + + uuid@9.0.1: + resolution: {integrity: sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==} + hasBin: true + + webidl-conversions@3.0.1: + resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} + + webidl-conversions@7.0.0: + resolution: {integrity: sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==} + engines: {node: '>=12'} + + whatwg-url@11.0.0: + resolution: {integrity: sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==} + engines: {node: '>=12'} + + whatwg-url@5.0.0: + resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} + + which-boxed-primitive@1.0.2: + resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==} + + which-builtin-type@1.1.4: + resolution: {integrity: sha512-bppkmBSsHFmIMSl8BO9TbsyzsvGjVoppt8xUiGzwiu/bhDCGxnpOKCxgqj6GuyHE0mINMDecBFPlOm2hzY084w==} + engines: {node: '>= 0.4'} + + which-collection@1.0.2: + resolution: {integrity: sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==} + engines: {node: '>= 0.4'} + + which-typed-array@1.1.15: + resolution: {integrity: sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==} + engines: {node: '>= 0.4'} + + which@2.0.2: + resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} + engines: {node: '>= 8'} + hasBin: true + + word-wrap@1.2.5: + resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} + engines: {node: '>=0.10.0'} + + wrap-ansi@7.0.0: + resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} + engines: {node: '>=10'} + + wrap-ansi@8.1.0: + resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} + engines: {node: '>=12'} + + wrappy@1.0.2: + resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + + ws@8.18.0: + resolution: {integrity: sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==} + engines: {node: '>=10.0.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: '>=5.0.2' + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + + xss@1.0.15: + resolution: {integrity: sha512-FVdlVVC67WOIPvfOwhoMETV72f6GbW7aOabBC3WxN/oUdoEMDyLz4OgRv5/gck2ZeNqEQu+Tb0kloovXOfpYVg==} + engines: {node: '>= 0.10.0'} + hasBin: true + + xtend@4.0.2: + resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} + engines: {node: '>=0.4'} + + y18n@5.0.8: + resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} + engines: {node: '>=10'} + + yaml@1.10.2: + resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} + engines: {node: '>= 6'} + + yaml@2.5.1: + resolution: {integrity: sha512-bLQOjaX/ADgQ20isPJRvF0iRUHIxVhYvr53Of7wGcWlO2jvtUlH5m87DsmulFVxRpNLOnI4tB6p/oh8D7kpn9Q==} + engines: {node: '>= 14'} + hasBin: true + + yargs-parser@20.2.9: + resolution: {integrity: sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==} + engines: {node: '>=10'} + + yargs@16.2.0: + resolution: {integrity: sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==} + engines: {node: '>=10'} + + yjs@13.6.19: + resolution: {integrity: sha512-GNKw4mEUn5yWU2QPHRx8jppxmCm9KzbBhB4qJLUJFiiYD0g/tDVgXQ7aPkyh01YO28kbs2J/BEbWBagjuWyejw==} + engines: {node: '>=16.0.0', npm: '>=8.0.0'} + + yocto-queue@0.1.0: + resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} + engines: {node: '>=10'} + + yocto-queue@1.1.1: + resolution: {integrity: sha512-b4JR1PFR10y1mKjhHY9LaGo6tmrgjit7hxVIeAmyMw3jegXR4dhYqLaQF5zMXZxY7tLpMyJeLjr1C4rLmkVe8g==} + engines: {node: '>=12.20'} + +snapshots: + + '@alloc/quick-lru@5.2.0': {} + + '@apidevtools/json-schema-ref-parser@11.7.0': dependencies: '@jsdevtools/ono': 7.1.3 '@types/json-schema': 7.0.15 js-yaml: 4.1.0 - dev: false - /@aws-crypto/crc32@5.2.0: - resolution: {integrity: sha512-nLbCWqQNgUiwwtFsen1AdzAtvuLRsQS8rYgMuxCrdKf9kOssamGLuPwyTY9wyYblNr9+1XM8v6zoDTPPSIeANg==} - engines: {node: '>=16.0.0'} + '@aws-crypto/crc32@5.2.0': dependencies: '@aws-crypto/util': 5.2.0 '@aws-sdk/types': 3.649.0 tslib: 2.7.0 - dev: false - /@aws-crypto/crc32c@5.2.0: - resolution: {integrity: sha512-+iWb8qaHLYKrNvGRbiYRHSdKRWhto5XlZUEBwDjYNf+ly5SVYG6zEoYIdxvf5R3zyeP16w4PLBn3rH1xc74Rag==} + '@aws-crypto/crc32c@5.2.0': dependencies: '@aws-crypto/util': 5.2.0 '@aws-sdk/types': 3.649.0 tslib: 2.7.0 - dev: false - /@aws-crypto/sha1-browser@5.2.0: - resolution: {integrity: sha512-OH6lveCFfcDjX4dbAvCFSYUjJZjDr/3XJ3xHtjn3Oj5b9RjojQo8npoLeA/bNwkOkrSQ0wgrHzXk4tDRxGKJeg==} + '@aws-crypto/sha1-browser@5.2.0': dependencies: '@aws-crypto/supports-web-crypto': 5.2.0 '@aws-crypto/util': 5.2.0 @@ -197,10 +4598,8 @@ packages: '@aws-sdk/util-locate-window': 3.568.0 '@smithy/util-utf8': 2.3.0 tslib: 2.7.0 - dev: false - /@aws-crypto/sha256-browser@5.2.0: - resolution: {integrity: sha512-AXfN/lGotSQwu6HNcEsIASo7kWXZ5HYWvfOmSNKDsEqC4OashTp8alTmaz+F7TC2L083SFv5RdB+qU3Vs1kZqw==} + '@aws-crypto/sha256-browser@5.2.0': dependencies: '@aws-crypto/sha256-js': 5.2.0 '@aws-crypto/supports-web-crypto': 5.2.0 @@ -209,50 +4608,36 @@ packages: '@aws-sdk/util-locate-window': 3.568.0 '@smithy/util-utf8': 2.3.0 tslib: 2.7.0 - dev: false - /@aws-crypto/sha256-js@1.2.2: - resolution: {integrity: sha512-Nr1QJIbW/afYYGzYvrF70LtaHrIRtd4TNAglX8BvlfxJLZ45SAmueIKYl5tWoNBPzp65ymXGFK0Bb1vZUpuc9g==} + '@aws-crypto/sha256-js@1.2.2': dependencies: '@aws-crypto/util': 1.2.2 '@aws-sdk/types': 3.649.0 tslib: 1.14.1 - dev: false - /@aws-crypto/sha256-js@5.2.0: - resolution: {integrity: sha512-FFQQyu7edu4ufvIZ+OadFpHHOt+eSTBaYaki44c+akjg7qZg9oOQeLlk77F6tSYqjDAFClrHJk9tMf0HdVyOvA==} - engines: {node: '>=16.0.0'} + '@aws-crypto/sha256-js@5.2.0': dependencies: '@aws-crypto/util': 5.2.0 '@aws-sdk/types': 3.649.0 tslib: 2.7.0 - dev: false - /@aws-crypto/supports-web-crypto@5.2.0: - resolution: {integrity: sha512-iAvUotm021kM33eCdNfwIN//F77/IADDSs58i+MDaOqFrVjZo9bAal0NK7HurRuWLLpF1iLX7gbWrjHjeo+YFg==} + '@aws-crypto/supports-web-crypto@5.2.0': dependencies: tslib: 2.7.0 - dev: false - /@aws-crypto/util@1.2.2: - resolution: {integrity: sha512-H8PjG5WJ4wz0UXAFXeJjWCW1vkvIJ3qUUD+rGRwJ2/hj+xT58Qle2MTql/2MGzkU+1JLAFuR6aJpLAjHwhmwwg==} + '@aws-crypto/util@1.2.2': dependencies: '@aws-sdk/types': 3.649.0 '@aws-sdk/util-utf8-browser': 3.259.0 tslib: 1.14.1 - dev: false - /@aws-crypto/util@5.2.0: - resolution: {integrity: sha512-4RkU9EsI6ZpBve5fseQlGNUWKMa1RLPQ1dnjnQoe07ldfIzcsGb5hC5W0Dm7u423KWzawlrpbjXBrXCEv9zazQ==} + '@aws-crypto/util@5.2.0': dependencies: '@aws-sdk/types': 3.649.0 '@smithy/util-utf8': 2.3.0 tslib: 2.7.0 - dev: false - /@aws-sdk/client-cognito-identity@3.651.1: - resolution: {integrity: sha512-FFTWI8uHXzsorQcAtPcvuXkH29sqFXVZa86UUvIrcd6kudakkUBeYDID2KYQm0FP/9uVH4xBBELHRC8PjEGmLw==} - engines: {node: '>=16.0.0'} + '@aws-sdk/client-cognito-identity@3.651.1': dependencies: '@aws-crypto/sha256-browser': 5.2.0 '@aws-crypto/sha256-js': 5.2.0 @@ -297,11 +4682,8 @@ packages: tslib: 2.7.0 transitivePeerDependencies: - aws-crt - dev: false - /@aws-sdk/client-s3@3.651.1: - resolution: {integrity: sha512-xNm+ixNRcotyrHgjUGGEyara6kCKgDdW2EVjHBZa5T+tbmtyqezwH3UzbSDZ6MlNoLhJMfR7ozuwYTIOARoBfA==} - engines: {node: '>=16.0.0'} + '@aws-sdk/client-s3@3.651.1': dependencies: '@aws-crypto/sha1-browser': 5.2.0 '@aws-crypto/sha256-browser': 5.2.0 @@ -363,13 +4745,8 @@ packages: tslib: 2.7.0 transitivePeerDependencies: - aws-crt - dev: false - /@aws-sdk/client-sso-oidc@3.651.1(@aws-sdk/client-sts@3.651.1): - resolution: {integrity: sha512-PKwAyTJW8pgaPIXm708haIZWBAwNycs25yNcD7OQ3NLcmgGxvrx6bSlhPEGcvwdTYwQMJsdx8ls+khlYbLqTvQ==} - engines: {node: '>=16.0.0'} - peerDependencies: - '@aws-sdk/client-sts': ^3.651.1 + '@aws-sdk/client-sso-oidc@3.651.1(@aws-sdk/client-sts@3.651.1)': dependencies: '@aws-crypto/sha256-browser': 5.2.0 '@aws-crypto/sha256-js': 5.2.0 @@ -413,11 +4790,8 @@ packages: tslib: 2.7.0 transitivePeerDependencies: - aws-crt - dev: false - /@aws-sdk/client-sso@3.651.1: - resolution: {integrity: sha512-Fm8PoMgiBKmmKrY6QQUGj/WW6eIiQqC1I0AiVXfO+Sqkmxcg3qex+CZBAYrTuIDnvnc/89f9N4mdL8V9DRn03Q==} - engines: {node: '>=16.0.0'} + '@aws-sdk/client-sso@3.651.1': dependencies: '@aws-crypto/sha256-browser': 5.2.0 '@aws-crypto/sha256-js': 5.2.0 @@ -459,11 +4833,8 @@ packages: tslib: 2.7.0 transitivePeerDependencies: - aws-crt - dev: false - /@aws-sdk/client-sts@3.651.1: - resolution: {integrity: sha512-4X2RqLqeDuVLk+Omt4X+h+Fa978Wn+zek/AM4HSPi4C5XzRBEFLRRtOQUvkETvIjbEwTYQhm0LdgzcBH4bUqIg==} - engines: {node: '>=16.0.0'} + '@aws-sdk/client-sts@3.651.1': dependencies: '@aws-crypto/sha256-browser': 5.2.0 '@aws-crypto/sha256-js': 5.2.0 @@ -507,11 +4878,8 @@ packages: tslib: 2.7.0 transitivePeerDependencies: - aws-crt - dev: false - /@aws-sdk/core@3.651.1: - resolution: {integrity: sha512-eqOq3W39K+5QTP5GAXtmP2s9B7hhM2pVz8OPe5tqob8o1xQgkwdgHerf3FoshO9bs0LDxassU/fUSz1wlwqfqg==} - engines: {node: '>=16.0.0'} + '@aws-sdk/core@3.651.1': dependencies: '@smithy/core': 2.4.3 '@smithy/node-config-provider': 3.1.7 @@ -523,11 +4891,8 @@ packages: '@smithy/util-middleware': 3.0.6 fast-xml-parser: 4.4.1 tslib: 2.7.0 - dev: false - /@aws-sdk/credential-provider-cognito-identity@3.651.1: - resolution: {integrity: sha512-tvrLvW+PxeJiw2cOc+LwJ0q86TGbXRul12jGswZWG7N71Ybr1s+e9//VeR8UwlxVCJOnm1FiWiWEd5WQmn25sQ==} - engines: {node: '>=16.0.0'} + '@aws-sdk/credential-provider-cognito-identity@3.651.1': dependencies: '@aws-sdk/client-cognito-identity': 3.651.1 '@aws-sdk/types': 3.649.0 @@ -536,21 +4901,15 @@ packages: tslib: 2.7.0 transitivePeerDependencies: - aws-crt - dev: false - /@aws-sdk/credential-provider-env@3.649.0: - resolution: {integrity: sha512-tViwzM1dauksA3fdRjsg0T8mcHklDa8EfveyiQKK6pUJopkqV6FQx+X5QNda0t/LrdEVlFZvwHNdXqOEfc83TA==} - engines: {node: '>=16.0.0'} + '@aws-sdk/credential-provider-env@3.649.0': dependencies: '@aws-sdk/types': 3.649.0 '@smithy/property-provider': 3.1.6 '@smithy/types': 3.4.2 tslib: 2.7.0 - dev: false - /@aws-sdk/credential-provider-http@3.649.0: - resolution: {integrity: sha512-ODAJ+AJJq6ozbns6ejGbicpsQ0dyMOpnGlg0J9J0jITQ05DKQZ581hdB8APDOZ9N8FstShP6dLZflSj8jb5fNA==} - engines: {node: '>=16.0.0'} + '@aws-sdk/credential-provider-http@3.649.0': dependencies: '@aws-sdk/types': 3.649.0 '@smithy/fetch-http-handler': 3.2.7 @@ -561,13 +4920,8 @@ packages: '@smithy/types': 3.4.2 '@smithy/util-stream': 3.1.6 tslib: 2.7.0 - dev: false - /@aws-sdk/credential-provider-ini@3.651.1(@aws-sdk/client-sso-oidc@3.651.1)(@aws-sdk/client-sts@3.651.1): - resolution: {integrity: sha512-yOzPC3GbwLZ8IYzke4fy70ievmunnBUni/MOXFE8c9kAIV+/RMC7IWx14nAAZm0gAcY+UtCXvBVZprFqmctfzA==} - engines: {node: '>=16.0.0'} - peerDependencies: - '@aws-sdk/client-sts': ^3.651.1 + '@aws-sdk/credential-provider-ini@3.651.1(@aws-sdk/client-sso-oidc@3.651.1)(@aws-sdk/client-sts@3.651.1)': dependencies: '@aws-sdk/client-sts': 3.651.1 '@aws-sdk/credential-provider-env': 3.649.0 @@ -584,11 +4938,8 @@ packages: transitivePeerDependencies: - '@aws-sdk/client-sso-oidc' - aws-crt - dev: false - /@aws-sdk/credential-provider-node@3.651.1(@aws-sdk/client-sso-oidc@3.651.1)(@aws-sdk/client-sts@3.651.1): - resolution: {integrity: sha512-QKA74Qs83FTUz3jS39kBuNbLAnm6cgDqomm7XS/BkYgtUq+1lI9WL97astNIuoYvumGIS58kuIa+I3ycOA4wgw==} - engines: {node: '>=16.0.0'} + '@aws-sdk/credential-provider-node@3.651.1(@aws-sdk/client-sso-oidc@3.651.1)(@aws-sdk/client-sts@3.651.1)': dependencies: '@aws-sdk/credential-provider-env': 3.649.0 '@aws-sdk/credential-provider-http': 3.649.0 @@ -606,22 +4957,16 @@ packages: - '@aws-sdk/client-sso-oidc' - '@aws-sdk/client-sts' - aws-crt - dev: false - /@aws-sdk/credential-provider-process@3.649.0: - resolution: {integrity: sha512-6VYPQpEVpU+6DDS/gLoI40ppuNM5RPIEprK30qZZxnhTr5wyrGOeJ7J7wbbwPOZ5dKwta290BiJDU2ipV8Y9BQ==} - engines: {node: '>=16.0.0'} + '@aws-sdk/credential-provider-process@3.649.0': dependencies: '@aws-sdk/types': 3.649.0 '@smithy/property-provider': 3.1.6 '@smithy/shared-ini-file-loader': 3.1.7 '@smithy/types': 3.4.2 tslib: 2.7.0 - dev: false - /@aws-sdk/credential-provider-sso@3.651.1(@aws-sdk/client-sso-oidc@3.651.1): - resolution: {integrity: sha512-7jeU+Jbn65aDaNjkjWDQcXwjNTzpYNKovkSSRmfVpP5WYiKerVS5mrfg3RiBeiArou5igCUtYcOKlRJiGRO47g==} - engines: {node: '>=16.0.0'} + '@aws-sdk/credential-provider-sso@3.651.1(@aws-sdk/client-sso-oidc@3.651.1)': dependencies: '@aws-sdk/client-sso': 3.651.1 '@aws-sdk/token-providers': 3.649.0(@aws-sdk/client-sso-oidc@3.651.1) @@ -633,24 +4978,16 @@ packages: transitivePeerDependencies: - '@aws-sdk/client-sso-oidc' - aws-crt - dev: false - /@aws-sdk/credential-provider-web-identity@3.649.0(@aws-sdk/client-sts@3.651.1): - resolution: {integrity: sha512-XVk3WsDa0g3kQFPmnCH/LaCtGY/0R2NDv7gscYZSXiBZcG/fixasglTprgWSp8zcA0t7tEIGu9suyjz8ZwhymQ==} - engines: {node: '>=16.0.0'} - peerDependencies: - '@aws-sdk/client-sts': ^3.649.0 + '@aws-sdk/credential-provider-web-identity@3.649.0(@aws-sdk/client-sts@3.651.1)': dependencies: '@aws-sdk/client-sts': 3.651.1 '@aws-sdk/types': 3.649.0 '@smithy/property-provider': 3.1.6 '@smithy/types': 3.4.2 tslib: 2.7.0 - dev: false - /@aws-sdk/credential-providers@3.651.1(@aws-sdk/client-sso-oidc@3.651.1): - resolution: {integrity: sha512-Jv9WikitkarMbW+SaQETJ4/cNapRrsmS2GzU+axc9szqnY+fO6TFcFRB24AvdqCP1uNNasYsbCl/tryZSN/pNg==} - engines: {node: '>=16.0.0'} + '@aws-sdk/credential-providers@3.651.1(@aws-sdk/client-sso-oidc@3.651.1)': dependencies: '@aws-sdk/client-cognito-identity': 3.651.1 '@aws-sdk/client-sso': 3.651.1 @@ -671,13 +5008,8 @@ packages: transitivePeerDependencies: - '@aws-sdk/client-sso-oidc' - aws-crt - dev: false - /@aws-sdk/lib-storage@3.651.1(@aws-sdk/client-s3@3.651.1): - resolution: {integrity: sha512-IFV7qqg9ktJAa94VD4Li1L/2MdjuskHwAo9jYYd1QZDmZb8UZG3ZrO0zzB6lc5Z4JZADscSVdUaZLSMCkz9U0g==} - engines: {node: '>=16.0.0'} - peerDependencies: - '@aws-sdk/client-s3': ^3.651.1 + '@aws-sdk/lib-storage@3.651.1(@aws-sdk/client-s3@3.651.1)': dependencies: '@aws-sdk/client-s3': 3.651.1 '@smithy/abort-controller': 3.1.4 @@ -687,11 +5019,8 @@ packages: events: 3.3.0 stream-browserify: 3.0.0 tslib: 2.7.0 - dev: false - /@aws-sdk/middleware-bucket-endpoint@3.649.0: - resolution: {integrity: sha512-ZdDICtUU4YZkrVllTUOH1Fj/F3WShLhkfNKJE3HJ/yj6pS8JS9P2lWzHiHkHiidjrHSxc6NuBo6vuZ+182XLbw==} - engines: {node: '>=16.0.0'} + '@aws-sdk/middleware-bucket-endpoint@3.649.0': dependencies: '@aws-sdk/types': 3.649.0 '@aws-sdk/util-arn-parser': 3.568.0 @@ -700,21 +5029,15 @@ packages: '@smithy/types': 3.4.2 '@smithy/util-config-provider': 3.0.0 tslib: 2.7.0 - dev: false - /@aws-sdk/middleware-expect-continue@3.649.0: - resolution: {integrity: sha512-pW2id/mWNd+L0/hZKp5yL3J+8rTwsamu9E69Hc5pM3qTF4K4DTZZ+A0sQbY6duIvZvc8IbQHbSMulBOLyWNP3A==} - engines: {node: '>=16.0.0'} + '@aws-sdk/middleware-expect-continue@3.649.0': dependencies: '@aws-sdk/types': 3.649.0 '@smithy/protocol-http': 4.1.3 '@smithy/types': 3.4.2 tslib: 2.7.0 - dev: false - /@aws-sdk/middleware-flexible-checksums@3.651.1: - resolution: {integrity: sha512-cFlXSzhdRKU1vOFTIYC3HzkN7Dwwcf07rKU1sB/PrDy4ztLhGgAwvcRwj2AqErZB62C5AdN4l7peB1Iw/oSxRQ==} - engines: {node: '>=16.0.0'} + '@aws-sdk/middleware-flexible-checksums@3.651.1': dependencies: '@aws-crypto/crc32': 5.2.0 '@aws-crypto/crc32c': 5.2.0 @@ -726,49 +5049,34 @@ packages: '@smithy/util-middleware': 3.0.6 '@smithy/util-utf8': 3.0.0 tslib: 2.7.0 - dev: false - /@aws-sdk/middleware-host-header@3.649.0: - resolution: {integrity: sha512-PjAe2FocbicHVgNNwdSZ05upxIO7AgTPFtQLpnIAmoyzMcgv/zNB5fBn3uAnQSAeEPPCD+4SYVEUD1hw1ZBvEg==} - engines: {node: '>=16.0.0'} + '@aws-sdk/middleware-host-header@3.649.0': dependencies: '@aws-sdk/types': 3.649.0 '@smithy/protocol-http': 4.1.3 '@smithy/types': 3.4.2 tslib: 2.7.0 - dev: false - /@aws-sdk/middleware-location-constraint@3.649.0: - resolution: {integrity: sha512-O9AXhaFUQx34UTnp/cKCcaWW/IVk4mntlWfFjsIxvRatamKaY33b5fOiakGG+J1t0QFK0niDBSvOYUR1fdlHzw==} - engines: {node: '>=16.0.0'} + '@aws-sdk/middleware-location-constraint@3.649.0': dependencies: '@aws-sdk/types': 3.649.0 '@smithy/types': 3.4.2 tslib: 2.7.0 - dev: false - /@aws-sdk/middleware-logger@3.649.0: - resolution: {integrity: sha512-qdqRx6q7lYC6KL/NT9x3ShTL0TBuxdkCczGzHzY3AnOoYUjnCDH7Vlq867O6MAvb4EnGNECFzIgtkZkQ4FhY5w==} - engines: {node: '>=16.0.0'} + '@aws-sdk/middleware-logger@3.649.0': dependencies: '@aws-sdk/types': 3.649.0 '@smithy/types': 3.4.2 tslib: 2.7.0 - dev: false - /@aws-sdk/middleware-recursion-detection@3.649.0: - resolution: {integrity: sha512-IPnO4wlmaLRf6IYmJW2i8gJ2+UPXX0hDRv1it7Qf8DpBW+lGyF2rnoN7NrFX0WIxdGOlJF1RcOr/HjXb2QeXfQ==} - engines: {node: '>=16.0.0'} + '@aws-sdk/middleware-recursion-detection@3.649.0': dependencies: '@aws-sdk/types': 3.649.0 '@smithy/protocol-http': 4.1.3 '@smithy/types': 3.4.2 tslib: 2.7.0 - dev: false - /@aws-sdk/middleware-sdk-s3@3.651.1: - resolution: {integrity: sha512-4BameU35aBSzrm3L/Iphc6vFLRhz6sBwgQf09mqPA2ZlX/YFqVe8HbS8wM4DG02W8A2MRTnHXRIfFoOrErp2sw==} - engines: {node: '>=16.0.0'} + '@aws-sdk/middleware-sdk-s3@3.651.1': dependencies: '@aws-sdk/core': 3.651.1 '@aws-sdk/types': 3.649.0 @@ -784,31 +5092,22 @@ packages: '@smithy/util-stream': 3.1.6 '@smithy/util-utf8': 3.0.0 tslib: 2.7.0 - dev: false - /@aws-sdk/middleware-ssec@3.649.0: - resolution: {integrity: sha512-r/WBIpX+Kcx+AV5vJ+LbdDOuibk7spBqcFK2LytQjOZKPksZNRAM99khbFe9vr9S1+uDmCLVjAVkIfQ5seJrOw==} - engines: {node: '>=16.0.0'} + '@aws-sdk/middleware-ssec@3.649.0': dependencies: '@aws-sdk/types': 3.649.0 '@smithy/types': 3.4.2 tslib: 2.7.0 - dev: false - /@aws-sdk/middleware-user-agent@3.649.0: - resolution: {integrity: sha512-q6sO10dnCXoxe9thobMJxekhJumzd1j6dxcE1+qJdYKHJr6yYgWbogJqrLCpWd30w0lEvnuAHK8lN2kWLdJxJw==} - engines: {node: '>=16.0.0'} + '@aws-sdk/middleware-user-agent@3.649.0': dependencies: '@aws-sdk/types': 3.649.0 '@aws-sdk/util-endpoints': 3.649.0 '@smithy/protocol-http': 4.1.3 '@smithy/types': 3.4.2 tslib: 2.7.0 - dev: false - /@aws-sdk/region-config-resolver@3.649.0: - resolution: {integrity: sha512-xURBvdQXvRvca5Du8IlC5FyCj3pkw8Z75+373J3Wb+vyg8GjD14HfKk1Je1HCCQDyIE9VB/scYDcm9ri0ppePw==} - engines: {node: '>=16.0.0'} + '@aws-sdk/region-config-resolver@3.649.0': dependencies: '@aws-sdk/types': 3.649.0 '@smithy/node-config-provider': 3.1.7 @@ -816,11 +5115,8 @@ packages: '@smithy/util-config-provider': 3.0.0 '@smithy/util-middleware': 3.0.6 tslib: 2.7.0 - dev: false - /@aws-sdk/signature-v4-multi-region@3.651.1: - resolution: {integrity: sha512-aLPCMq4c/A9DmdZLhufWOgfHN2Vgft65dB2tfbATjs6kZjusSaDFxWzjmWX3y8i2ZQ+vU0nAkkWIHFJdf+47fA==} - engines: {node: '>=16.0.0'} + '@aws-sdk/signature-v4-multi-region@3.651.1': dependencies: '@aws-sdk/middleware-sdk-s3': 3.651.1 '@aws-sdk/types': 3.649.0 @@ -828,13 +5124,8 @@ packages: '@smithy/signature-v4': 4.1.3 '@smithy/types': 3.4.2 tslib: 2.7.0 - dev: false - /@aws-sdk/token-providers@3.649.0(@aws-sdk/client-sso-oidc@3.651.1): - resolution: {integrity: sha512-ZBqr+JuXI9RiN+4DSZykMx5gxpL8Dr3exIfFhxMiwAP3DQojwl0ub8ONjMuAjq9OvmX6n+jHZL6fBnNgnNFC8w==} - engines: {node: '>=16.0.0'} - peerDependencies: - '@aws-sdk/client-sso-oidc': ^3.649.0 + '@aws-sdk/token-providers@3.649.0(@aws-sdk/client-sso-oidc@3.651.1)': dependencies: '@aws-sdk/client-sso-oidc': 3.651.1(@aws-sdk/client-sts@3.651.1) '@aws-sdk/types': 3.649.0 @@ -842,152 +5133,95 @@ packages: '@smithy/shared-ini-file-loader': 3.1.7 '@smithy/types': 3.4.2 tslib: 2.7.0 - dev: false - /@aws-sdk/types@3.649.0: - resolution: {integrity: sha512-PuPw8RysbhJNlaD2d/PzOTf8sbf4Dsn2b7hwyGh7YVG3S75yTpxSAZxrnhKsz9fStgqFmnw/jUfV/G+uQAeTVw==} - engines: {node: '>=16.0.0'} + '@aws-sdk/types@3.649.0': dependencies: '@smithy/types': 3.4.2 tslib: 2.7.0 - dev: false - /@aws-sdk/util-arn-parser@3.568.0: - resolution: {integrity: sha512-XUKJWWo+KOB7fbnPP0+g/o5Ulku/X53t7i/h+sPHr5xxYTJJ9CYnbToo95mzxe7xWvkLrsNtJ8L+MnNn9INs2w==} - engines: {node: '>=16.0.0'} + '@aws-sdk/util-arn-parser@3.568.0': dependencies: tslib: 2.7.0 - dev: false - /@aws-sdk/util-endpoints@3.649.0: - resolution: {integrity: sha512-bZI1Wc3R/KibdDVWFxX/N4AoJFG4VJ92Dp4WYmOrVD6VPkb8jPz7ZeiYc7YwPl8NoDjYyPneBV0lEoK/V8OKAA==} - engines: {node: '>=16.0.0'} + '@aws-sdk/util-endpoints@3.649.0': dependencies: '@aws-sdk/types': 3.649.0 '@smithy/types': 3.4.2 '@smithy/util-endpoints': 2.1.2 tslib: 2.7.0 - dev: false - /@aws-sdk/util-locate-window@3.568.0: - resolution: {integrity: sha512-3nh4TINkXYr+H41QaPelCceEB2FXP3fxp93YZXB/kqJvX0U9j0N0Uk45gvsjmEPzG8XxkPEeLIfT2I1M7A6Lig==} - engines: {node: '>=16.0.0'} + '@aws-sdk/util-locate-window@3.568.0': dependencies: tslib: 2.7.0 - dev: false - /@aws-sdk/util-user-agent-browser@3.649.0: - resolution: {integrity: sha512-IY43r256LhKAvdEVQO/FPdUyVpcZS5EVxh/WHVdNzuN1bNLoUK2rIzuZqVA0EGguvCxoXVmQv9m50GvG7cGktg==} + '@aws-sdk/util-user-agent-browser@3.649.0': dependencies: '@aws-sdk/types': 3.649.0 '@smithy/types': 3.4.2 bowser: 2.11.0 tslib: 2.7.0 - dev: false - /@aws-sdk/util-user-agent-node@3.649.0: - resolution: {integrity: sha512-x5DiLpZDG/AJmCIBnE3Xhpwy35QIo3WqNiOpw6ExVs1NydbM/e90zFPSfhME0FM66D/WorigvluBxxwjxDm/GA==} - engines: {node: '>=16.0.0'} - peerDependencies: - aws-crt: '>=1.0.0' - peerDependenciesMeta: - aws-crt: - optional: true + '@aws-sdk/util-user-agent-node@3.649.0': dependencies: '@aws-sdk/types': 3.649.0 '@smithy/node-config-provider': 3.1.7 '@smithy/types': 3.4.2 tslib: 2.7.0 - dev: false - /@aws-sdk/util-utf8-browser@3.259.0: - resolution: {integrity: sha512-UvFa/vR+e19XookZF8RzFZBrw2EUkQWxiBW0yYQAhvk3C+QVGl0H3ouca8LDBlBfQKXwmW3huo/59H8rwb1wJw==} + '@aws-sdk/util-utf8-browser@3.259.0': dependencies: tslib: 2.7.0 - dev: false - /@aws-sdk/xml-builder@3.649.0: - resolution: {integrity: sha512-XVESKkK7m5LdCVzZ3NvAja40BEyCrfPqtaiFAAhJIvW2U1Edyugf2o3XikuQY62crGT6BZagxJFgOiLKvuTiTg==} - engines: {node: '>=16.0.0'} + '@aws-sdk/xml-builder@3.649.0': dependencies: '@smithy/types': 3.4.2 tslib: 2.7.0 - dev: false - /@babel/code-frame@7.24.7: - resolution: {integrity: sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==} - engines: {node: '>=6.9.0'} + '@babel/code-frame@7.24.7': dependencies: '@babel/highlight': 7.24.7 picocolors: 1.1.0 - dev: false - /@babel/generator@7.25.6: - resolution: {integrity: sha512-VPC82gr1seXOpkjAAKoLhP50vx4vGNlF4msF64dSFq1P8RfB+QAuJWGHPXXPc8QyfVWwwB/TNNU4+ayZmHNbZw==} - engines: {node: '>=6.9.0'} + '@babel/generator@7.25.6': dependencies: '@babel/types': 7.25.6 '@jridgewell/gen-mapping': 0.3.5 '@jridgewell/trace-mapping': 0.3.25 jsesc: 2.5.2 - dev: false - /@babel/helper-module-imports@7.24.7: - resolution: {integrity: sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA==} - engines: {node: '>=6.9.0'} + '@babel/helper-module-imports@7.24.7': dependencies: '@babel/traverse': 7.25.6 '@babel/types': 7.25.6 transitivePeerDependencies: - supports-color - dev: false - /@babel/helper-string-parser@7.24.8: - resolution: {integrity: sha512-pO9KhhRcuUyGnJWwyEgnRJTSIZHiT+vMD0kPeD+so0l7mxkMT19g3pjY9GTnHySck/hDzq+dtW/4VgnMkippsQ==} - engines: {node: '>=6.9.0'} - dev: false + '@babel/helper-string-parser@7.24.8': {} - /@babel/helper-validator-identifier@7.24.7: - resolution: {integrity: sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==} - engines: {node: '>=6.9.0'} - dev: false + '@babel/helper-validator-identifier@7.24.7': {} - /@babel/highlight@7.24.7: - resolution: {integrity: sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==} - engines: {node: '>=6.9.0'} + '@babel/highlight@7.24.7': dependencies: '@babel/helper-validator-identifier': 7.24.7 chalk: 2.4.2 js-tokens: 4.0.0 picocolors: 1.1.0 - dev: false - /@babel/parser@7.25.6: - resolution: {integrity: sha512-trGdfBdbD0l1ZPmcJ83eNxB9rbEax4ALFTF7fN386TMYbeCQbyme5cOEXQhbGXKebwGaB/J52w1mrklMcbgy6Q==} - engines: {node: '>=6.0.0'} - hasBin: true + '@babel/parser@7.25.6': dependencies: '@babel/types': 7.25.6 - dev: false - /@babel/runtime@7.25.6: - resolution: {integrity: sha512-VBj9MYyDb9tuLq7yzqjgzt6Q+IBQLrGZfdjOekyEirZPHxXWoTSGUTMrpsfi58Up73d13NfYLv8HT9vmznjzhQ==} - engines: {node: '>=6.9.0'} + '@babel/runtime@7.25.6': dependencies: regenerator-runtime: 0.14.1 - /@babel/template@7.25.0: - resolution: {integrity: sha512-aOOgh1/5XzKvg1jvVz7AVrx2piJ2XBi227DHmbY6y+bM9H2FlN+IfecYu4Xl0cNiiVejlsCri89LUsbj8vJD9Q==} - engines: {node: '>=6.9.0'} + '@babel/template@7.25.0': dependencies: '@babel/code-frame': 7.24.7 '@babel/parser': 7.25.6 '@babel/types': 7.25.6 - dev: false - /@babel/traverse@7.25.6: - resolution: {integrity: sha512-9Vrcx5ZW6UwK5tvqsj0nGpp/XzqthkT0dqIc9g1AdtygFToNtTF67XzYS//dm+SAK9cp3B9R4ZO/46p63SCjlQ==} - engines: {node: '>=6.9.0'} + '@babel/traverse@7.25.6': dependencies: '@babel/code-frame': 7.24.7 '@babel/generator': 7.25.6 @@ -998,70 +5232,44 @@ packages: globals: 11.12.0 transitivePeerDependencies: - supports-color - dev: false - /@babel/types@7.25.6: - resolution: {integrity: sha512-/l42B1qxpG6RdfYf343Uw1vmDjeNhneUXtzhojE7pDgfpEypmRhI6j1kr17XCVv4Cgl9HdAiQY2x0GwKm7rWCw==} - engines: {node: '>=6.9.0'} + '@babel/types@7.25.6': dependencies: '@babel/helper-string-parser': 7.24.8 '@babel/helper-validator-identifier': 7.24.7 to-fast-properties: 2.0.0 - dev: false - /@dnd-kit/accessibility@3.1.0(react@19.0.0-rc-06d0b89e-20240801): - resolution: {integrity: sha512-ea7IkhKvlJUv9iSHJOnxinBcoOI3ppGnnL+VDJ75O45Nss6HtZd8IdN8touXPDtASfeI2T2LImb8VOZcL47wjQ==} - peerDependencies: - react: '>=16.8.0' + '@dnd-kit/accessibility@3.1.0(react@19.0.0-rc-06d0b89e-20240801)': dependencies: react: 19.0.0-rc-06d0b89e-20240801 tslib: 2.7.0 - dev: false - /@dnd-kit/core@6.0.8(react-dom@19.0.0-rc-06d0b89e-20240801)(react@19.0.0-rc-06d0b89e-20240801): - resolution: {integrity: sha512-lYaoP8yHTQSLlZe6Rr9qogouGUz9oRUj4AHhDQGQzq/hqaJRpFo65X+JKsdHf8oUFBzx5A+SJPUvxAwTF2OabA==} - peerDependencies: - react: ^18.2.0 - react-dom: ^18.2.0 + '@dnd-kit/core@6.0.8(react-dom@19.0.0-rc-06d0b89e-20240801)(react@19.0.0-rc-06d0b89e-20240801)': dependencies: '@dnd-kit/accessibility': 3.1.0(react@19.0.0-rc-06d0b89e-20240801) '@dnd-kit/utilities': 3.2.2(react@19.0.0-rc-06d0b89e-20240801) react: 19.0.0-rc-06d0b89e-20240801 react-dom: 19.0.0-rc-06d0b89e-20240801(react@19.0.0-rc-06d0b89e-20240801) tslib: 2.7.0 - dev: false - /@dnd-kit/sortable@7.0.2(@dnd-kit/core@6.0.8)(react@19.0.0-rc-06d0b89e-20240801): - resolution: {integrity: sha512-wDkBHHf9iCi1veM834Gbk1429bd4lHX4RpAwT0y2cHLf246GAvU2sVw/oxWNpPKQNQRQaeGXhAVgrOl1IT+iyA==} - peerDependencies: - '@dnd-kit/core': ^6.0.7 - react: '>=16.8.0' + '@dnd-kit/sortable@7.0.2(@dnd-kit/core@6.0.8)(react@19.0.0-rc-06d0b89e-20240801)': dependencies: '@dnd-kit/core': 6.0.8(react-dom@19.0.0-rc-06d0b89e-20240801)(react@19.0.0-rc-06d0b89e-20240801) '@dnd-kit/utilities': 3.2.2(react@19.0.0-rc-06d0b89e-20240801) react: 19.0.0-rc-06d0b89e-20240801 tslib: 2.7.0 - dev: false - /@dnd-kit/utilities@3.2.2(react@19.0.0-rc-06d0b89e-20240801): - resolution: {integrity: sha512-+MKAJEOfaBe5SmV6t34p80MMKhjvUz0vRrvVJbPT0WElzaOJ/1xs+D+KDv+tD/NE5ujfrChEcshd4fLn0wpiqg==} - peerDependencies: - react: '>=16.8.0' + '@dnd-kit/utilities@3.2.2(react@19.0.0-rc-06d0b89e-20240801)': dependencies: react: 19.0.0-rc-06d0b89e-20240801 tslib: 2.7.0 - dev: false - /@emnapi/runtime@1.2.0: - resolution: {integrity: sha512-bV21/9LQmcQeCPEg3BDFtvwL6cwiTMksYNWQQ4KOxCZikEGalWtenoZ0wCiukJINlGCIi2KXx01g4FoH/LxpzQ==} - requiresBuild: true + '@emnapi/runtime@1.2.0': dependencies: tslib: 2.7.0 - dev: false optional: true - /@emotion/babel-plugin@11.12.0: - resolution: {integrity: sha512-y2WQb+oP8Jqvvclh8Q55gLUyb7UFvgv7eJfsj7td5TToBrIUtPay2kMrZi4xjq9qw2vD0ZR5fSho0yqoFgX7Rw==} + '@emotion/babel-plugin@11.12.0': dependencies: '@babel/helper-module-imports': 7.24.7 '@babel/runtime': 7.25.6 @@ -1076,20 +5284,16 @@ packages: stylis: 4.2.0 transitivePeerDependencies: - supports-color - dev: false - /@emotion/cache@11.13.1: - resolution: {integrity: sha512-iqouYkuEblRcXmylXIwwOodiEK5Ifl7JcX7o6V4jI3iW4mLXX3dmt5xwBtIkJiQEXFAI+pC8X0i67yiPkH9Ucw==} + '@emotion/cache@11.13.1': dependencies: '@emotion/memoize': 0.9.0 '@emotion/sheet': 1.4.0 '@emotion/utils': 1.4.0 '@emotion/weak-memoize': 0.4.0 stylis: 4.2.0 - dev: false - /@emotion/css@11.13.0: - resolution: {integrity: sha512-BUk99ylT+YHl+W/HN7nv1RCTkDYmKKqa1qbvM/qLSQEg61gipuBF5Hptk/2/ERmX2DCv0ccuFGhz9i0KSZOqPg==} + '@emotion/css@11.13.0': dependencies: '@emotion/babel-plugin': 11.12.0 '@emotion/cache': 11.13.1 @@ -1098,24 +5302,12 @@ packages: '@emotion/utils': 1.4.0 transitivePeerDependencies: - supports-color - dev: false - /@emotion/hash@0.9.2: - resolution: {integrity: sha512-MyqliTZGuOm3+5ZRSaaBGP3USLw6+EGykkwZns2EPC5g8jJ4z9OrdZY9apkl3+UP9+sdz76YYkwCKP5gh8iY3g==} - dev: false + '@emotion/hash@0.9.2': {} - /@emotion/memoize@0.9.0: - resolution: {integrity: sha512-30FAj7/EoJ5mwVPOWhAyCX+FPfMDrVecJAM+Iw9NRoSl4BBAQeqj4cApHHUXOVvIPgLVDsCFoz/hGD+5QQD1GQ==} - dev: false + '@emotion/memoize@0.9.0': {} - /@emotion/react@11.13.3(react@19.0.0-rc-06d0b89e-20240801)(types-react@19.0.0-rc.0): - resolution: {integrity: sha512-lIsdU6JNrmYfJ5EbUCf4xW1ovy5wKQ2CkPRM4xogziOxH1nXxBSjpC9YqbFAP7circxMfYp+6x676BqWcEiixg==} - peerDependencies: - '@types/react': '*' - react: '>=16.8.0' - peerDependenciesMeta: - '@types/react': - optional: true + '@emotion/react@11.13.3(react@19.0.0-rc-06d0b89e-20240801)(types-react@19.0.0-rc.0)': dependencies: '@babel/runtime': 7.25.6 '@emotion/babel-plugin': 11.12.0 @@ -1124,291 +5316,117 @@ packages: '@emotion/use-insertion-effect-with-fallbacks': 1.1.0(react@19.0.0-rc-06d0b89e-20240801) '@emotion/utils': 1.4.0 '@emotion/weak-memoize': 0.4.0 - '@types/react': /types-react@19.0.0-rc.0 + '@types/react': types-react@19.0.0-rc.0 hoist-non-react-statics: 3.3.2 react: 19.0.0-rc-06d0b89e-20240801 transitivePeerDependencies: - supports-color - dev: false - /@emotion/serialize@1.3.1: - resolution: {integrity: sha512-dEPNKzBPU+vFPGa+z3axPRn8XVDetYORmDC0wAiej+TNcOZE70ZMJa0X7JdeoM6q/nWTMZeLpN/fTnD9o8MQBA==} + '@emotion/serialize@1.3.1': dependencies: '@emotion/hash': 0.9.2 '@emotion/memoize': 0.9.0 '@emotion/unitless': 0.10.0 '@emotion/utils': 1.4.0 csstype: 3.1.3 - dev: false - /@emotion/sheet@1.4.0: - resolution: {integrity: sha512-fTBW9/8r2w3dXWYM4HCB1Rdp8NLibOw2+XELH5m5+AkWiL/KqYX6dc0kKYlaYyKjrQ6ds33MCdMPEwgs2z1rqg==} - dev: false + '@emotion/sheet@1.4.0': {} - /@emotion/unitless@0.10.0: - resolution: {integrity: sha512-dFoMUuQA20zvtVTuxZww6OHoJYgrzfKM1t52mVySDJnMSEa08ruEvdYQbhvyu6soU+NeLVd3yKfTfT0NeV6qGg==} - dev: false + '@emotion/unitless@0.10.0': {} - /@emotion/use-insertion-effect-with-fallbacks@1.1.0(react@19.0.0-rc-06d0b89e-20240801): - resolution: {integrity: sha512-+wBOcIV5snwGgI2ya3u99D7/FJquOIniQT1IKyDsBmEgwvpxMNeS65Oib7OnE2d2aY+3BU4OiH+0Wchf8yk3Hw==} - peerDependencies: - react: '>=16.8.0' + '@emotion/use-insertion-effect-with-fallbacks@1.1.0(react@19.0.0-rc-06d0b89e-20240801)': dependencies: react: 19.0.0-rc-06d0b89e-20240801 - dev: false - /@emotion/utils@1.4.0: - resolution: {integrity: sha512-spEnrA1b6hDR/C68lC2M7m6ALPUHZC0lIY7jAS/B/9DuuO1ZP04eov8SMv/6fwRd8pzmsn2AuJEznRREWlQrlQ==} - dev: false + '@emotion/utils@1.4.0': {} - /@emotion/weak-memoize@0.4.0: - resolution: {integrity: sha512-snKqtPW01tN0ui7yu9rGv69aJXr/a/Ywvl11sUjNtEcRc+ng/mQriFL0wLXMef74iHa/EkftbDzU9F8iFbH+zg==} - dev: false + '@emotion/weak-memoize@0.4.0': {} - /@esbuild/aix-ppc64@0.23.1: - resolution: {integrity: sha512-6VhYk1diRqrhBAqpJEdjASR/+WVRtfjpqKuNw11cLiaWpAT/Uu+nokB+UJnevzy/P9C/ty6AOe0dwueMrGh/iQ==} - engines: {node: '>=18'} - cpu: [ppc64] - os: [aix] - requiresBuild: true - dev: false + '@esbuild/aix-ppc64@0.23.1': optional: true - /@esbuild/android-arm64@0.23.1: - resolution: {integrity: sha512-xw50ipykXcLstLeWH7WRdQuysJqejuAGPd30vd1i5zSyKK3WE+ijzHmLKxdiCMtH1pHz78rOg0BKSYOSB/2Khw==} - engines: {node: '>=18'} - cpu: [arm64] - os: [android] - requiresBuild: true - dev: false + '@esbuild/android-arm64@0.23.1': optional: true - /@esbuild/android-arm@0.23.1: - resolution: {integrity: sha512-uz6/tEy2IFm9RYOyvKl88zdzZfwEfKZmnX9Cj1BHjeSGNuGLuMD1kR8y5bteYmwqKm1tj8m4cb/aKEorr6fHWQ==} - engines: {node: '>=18'} - cpu: [arm] - os: [android] - requiresBuild: true - dev: false + '@esbuild/android-arm@0.23.1': optional: true - /@esbuild/android-x64@0.23.1: - resolution: {integrity: sha512-nlN9B69St9BwUoB+jkyU090bru8L0NA3yFvAd7k8dNsVH8bi9a8cUAUSEcEEgTp2z3dbEDGJGfP6VUnkQnlReg==} - engines: {node: '>=18'} - cpu: [x64] - os: [android] - requiresBuild: true - dev: false + '@esbuild/android-x64@0.23.1': optional: true - /@esbuild/darwin-arm64@0.23.1: - resolution: {integrity: sha512-YsS2e3Wtgnw7Wq53XXBLcV6JhRsEq8hkfg91ESVadIrzr9wO6jJDMZnCQbHm1Guc5t/CdDiFSSfWP58FNuvT3Q==} - engines: {node: '>=18'} - cpu: [arm64] - os: [darwin] - requiresBuild: true - dev: false + '@esbuild/darwin-arm64@0.23.1': optional: true - /@esbuild/darwin-x64@0.23.1: - resolution: {integrity: sha512-aClqdgTDVPSEGgoCS8QDG37Gu8yc9lTHNAQlsztQ6ENetKEO//b8y31MMu2ZaPbn4kVsIABzVLXYLhCGekGDqw==} - engines: {node: '>=18'} - cpu: [x64] - os: [darwin] - requiresBuild: true - dev: false + '@esbuild/darwin-x64@0.23.1': optional: true - /@esbuild/freebsd-arm64@0.23.1: - resolution: {integrity: sha512-h1k6yS8/pN/NHlMl5+v4XPfikhJulk4G+tKGFIOwURBSFzE8bixw1ebjluLOjfwtLqY0kewfjLSrO6tN2MgIhA==} - engines: {node: '>=18'} - cpu: [arm64] - os: [freebsd] - requiresBuild: true - dev: false + '@esbuild/freebsd-arm64@0.23.1': optional: true - /@esbuild/freebsd-x64@0.23.1: - resolution: {integrity: sha512-lK1eJeyk1ZX8UklqFd/3A60UuZ/6UVfGT2LuGo3Wp4/z7eRTRYY+0xOu2kpClP+vMTi9wKOfXi2vjUpO1Ro76g==} - engines: {node: '>=18'} - cpu: [x64] - os: [freebsd] - requiresBuild: true - dev: false + '@esbuild/freebsd-x64@0.23.1': optional: true - /@esbuild/linux-arm64@0.23.1: - resolution: {integrity: sha512-/93bf2yxencYDnItMYV/v116zff6UyTjo4EtEQjUBeGiVpMmffDNUyD9UN2zV+V3LRV3/on4xdZ26NKzn6754g==} - engines: {node: '>=18'} - cpu: [arm64] - os: [linux] - requiresBuild: true - dev: false + '@esbuild/linux-arm64@0.23.1': optional: true - /@esbuild/linux-arm@0.23.1: - resolution: {integrity: sha512-CXXkzgn+dXAPs3WBwE+Kvnrf4WECwBdfjfeYHpMeVxWE0EceB6vhWGShs6wi0IYEqMSIzdOF1XjQ/Mkm5d7ZdQ==} - engines: {node: '>=18'} - cpu: [arm] - os: [linux] - requiresBuild: true - dev: false + '@esbuild/linux-arm@0.23.1': optional: true - /@esbuild/linux-ia32@0.23.1: - resolution: {integrity: sha512-VTN4EuOHwXEkXzX5nTvVY4s7E/Krz7COC8xkftbbKRYAl96vPiUssGkeMELQMOnLOJ8k3BY1+ZY52tttZnHcXQ==} - engines: {node: '>=18'} - cpu: [ia32] - os: [linux] - requiresBuild: true - dev: false + '@esbuild/linux-ia32@0.23.1': optional: true - /@esbuild/linux-loong64@0.23.1: - resolution: {integrity: sha512-Vx09LzEoBa5zDnieH8LSMRToj7ir/Jeq0Gu6qJ/1GcBq9GkfoEAoXvLiW1U9J1qE/Y/Oyaq33w5p2ZWrNNHNEw==} - engines: {node: '>=18'} - cpu: [loong64] - os: [linux] - requiresBuild: true - dev: false + '@esbuild/linux-loong64@0.23.1': optional: true - /@esbuild/linux-mips64el@0.23.1: - resolution: {integrity: sha512-nrFzzMQ7W4WRLNUOU5dlWAqa6yVeI0P78WKGUo7lg2HShq/yx+UYkeNSE0SSfSure0SqgnsxPvmAUu/vu0E+3Q==} - engines: {node: '>=18'} - cpu: [mips64el] - os: [linux] - requiresBuild: true - dev: false + '@esbuild/linux-mips64el@0.23.1': optional: true - /@esbuild/linux-ppc64@0.23.1: - resolution: {integrity: sha512-dKN8fgVqd0vUIjxuJI6P/9SSSe/mB9rvA98CSH2sJnlZ/OCZWO1DJvxj8jvKTfYUdGfcq2dDxoKaC6bHuTlgcw==} - engines: {node: '>=18'} - cpu: [ppc64] - os: [linux] - requiresBuild: true - dev: false + '@esbuild/linux-ppc64@0.23.1': optional: true - /@esbuild/linux-riscv64@0.23.1: - resolution: {integrity: sha512-5AV4Pzp80fhHL83JM6LoA6pTQVWgB1HovMBsLQ9OZWLDqVY8MVobBXNSmAJi//Csh6tcY7e7Lny2Hg1tElMjIA==} - engines: {node: '>=18'} - cpu: [riscv64] - os: [linux] - requiresBuild: true - dev: false + '@esbuild/linux-riscv64@0.23.1': optional: true - /@esbuild/linux-s390x@0.23.1: - resolution: {integrity: sha512-9ygs73tuFCe6f6m/Tb+9LtYxWR4c9yg7zjt2cYkjDbDpV/xVn+68cQxMXCjUpYwEkze2RcU/rMnfIXNRFmSoDw==} - engines: {node: '>=18'} - cpu: [s390x] - os: [linux] - requiresBuild: true - dev: false + '@esbuild/linux-s390x@0.23.1': optional: true - /@esbuild/linux-x64@0.23.1: - resolution: {integrity: sha512-EV6+ovTsEXCPAp58g2dD68LxoP/wK5pRvgy0J/HxPGB009omFPv3Yet0HiaqvrIrgPTBuC6wCH1LTOY91EO5hQ==} - engines: {node: '>=18'} - cpu: [x64] - os: [linux] - requiresBuild: true - dev: false + '@esbuild/linux-x64@0.23.1': optional: true - /@esbuild/netbsd-x64@0.23.1: - resolution: {integrity: sha512-aevEkCNu7KlPRpYLjwmdcuNz6bDFiE7Z8XC4CPqExjTvrHugh28QzUXVOZtiYghciKUacNktqxdpymplil1beA==} - engines: {node: '>=18'} - cpu: [x64] - os: [netbsd] - requiresBuild: true - dev: false + '@esbuild/netbsd-x64@0.23.1': optional: true - /@esbuild/openbsd-arm64@0.23.1: - resolution: {integrity: sha512-3x37szhLexNA4bXhLrCC/LImN/YtWis6WXr1VESlfVtVeoFJBRINPJ3f0a/6LV8zpikqoUg4hyXw0sFBt5Cr+Q==} - engines: {node: '>=18'} - cpu: [arm64] - os: [openbsd] - requiresBuild: true - dev: false + '@esbuild/openbsd-arm64@0.23.1': optional: true - /@esbuild/openbsd-x64@0.23.1: - resolution: {integrity: sha512-aY2gMmKmPhxfU+0EdnN+XNtGbjfQgwZj43k8G3fyrDM/UdZww6xrWxmDkuz2eCZchqVeABjV5BpildOrUbBTqA==} - engines: {node: '>=18'} - cpu: [x64] - os: [openbsd] - requiresBuild: true - dev: false + '@esbuild/openbsd-x64@0.23.1': optional: true - /@esbuild/sunos-x64@0.23.1: - resolution: {integrity: sha512-RBRT2gqEl0IKQABT4XTj78tpk9v7ehp+mazn2HbUeZl1YMdaGAQqhapjGTCe7uw7y0frDi4gS0uHzhvpFuI1sA==} - engines: {node: '>=18'} - cpu: [x64] - os: [sunos] - requiresBuild: true - dev: false + '@esbuild/sunos-x64@0.23.1': optional: true - /@esbuild/win32-arm64@0.23.1: - resolution: {integrity: sha512-4O+gPR5rEBe2FpKOVyiJ7wNDPA8nGzDuJ6gN4okSA1gEOYZ67N8JPk58tkWtdtPeLz7lBnY6I5L3jdsr3S+A6A==} - engines: {node: '>=18'} - cpu: [arm64] - os: [win32] - requiresBuild: true - dev: false + '@esbuild/win32-arm64@0.23.1': optional: true - /@esbuild/win32-ia32@0.23.1: - resolution: {integrity: sha512-BcaL0Vn6QwCwre3Y717nVHZbAa4UBEigzFm6VdsVdT/MbZ38xoj1X9HPkZhbmaBGUD1W8vxAfffbDe8bA6AKnQ==} - engines: {node: '>=18'} - cpu: [ia32] - os: [win32] - requiresBuild: true - dev: false + '@esbuild/win32-ia32@0.23.1': optional: true - /@esbuild/win32-x64@0.23.1: - resolution: {integrity: sha512-BHpFFeslkWrXWyUPnbKm+xYYVYruCinGcftSBaa8zoF9hZO4BcSCFUvHVTtzpIY6YzUnYtuEhZ+C9iEXjxnasg==} - engines: {node: '>=18'} - cpu: [x64] - os: [win32] - requiresBuild: true - dev: false + '@esbuild/win32-x64@0.23.1': optional: true - /@eslint-community/eslint-utils@4.4.0(eslint@8.48.0): - resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 + '@eslint-community/eslint-utils@4.4.0(eslint@8.48.0)': dependencies: eslint: 8.48.0 eslint-visitor-keys: 3.4.3 - dev: true - /@eslint-community/eslint-utils@4.4.0(eslint@8.57.0): - resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 + '@eslint-community/eslint-utils@4.4.0(eslint@8.57.0)': dependencies: eslint: 8.57.0 eslint-visitor-keys: 3.4.3 - dev: true - /@eslint-community/regexpp@4.11.1: - resolution: {integrity: sha512-m4DVN9ZqskZoLU5GlWZadwDnYo3vAEydiUayB9widCl9ffWx2IvPnp6n3on5rJmziJSw9Bv+Z3ChDVdMwXCY8Q==} - engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} - dev: true + '@eslint-community/regexpp@4.11.1': {} - /@eslint/eslintrc@2.1.4: - resolution: {integrity: sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + '@eslint/eslintrc@2.1.4': dependencies: ajv: 6.12.6 debug: 4.3.7 @@ -1421,357 +5439,184 @@ packages: strip-json-comments: 3.1.1 transitivePeerDependencies: - supports-color - dev: true - /@eslint/js@8.48.0: - resolution: {integrity: sha512-ZSjtmelB7IJfWD2Fvb7+Z+ChTIKWq6kjda95fLcQKNS5aheVHn4IkfgRQE3sIIzTcSLwLcLZUD9UBt+V7+h+Pw==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - dev: true + '@eslint/js@8.48.0': {} - /@eslint/js@8.57.0: - resolution: {integrity: sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - dev: true + '@eslint/js@8.57.0': {} - /@faceless-ui/modal@3.0.0-beta.2(react-dom@19.0.0-rc-06d0b89e-20240801)(react@19.0.0-rc-06d0b89e-20240801): - resolution: {integrity: sha512-UmXvz7Iw3KMO4Pm3llZczU4uc5pPQDb6rdqwoBvYDFgWvkraOAHKx0HxSZgwqQvqOhn8joEFBfFp6/Do2562ow==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-rc.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-rc.0 + '@faceless-ui/modal@3.0.0-beta.2(react-dom@19.0.0-rc-06d0b89e-20240801)(react@19.0.0-rc-06d0b89e-20240801)': dependencies: body-scroll-lock: 4.0.0-beta.0 focus-trap: 7.5.4 react: 19.0.0-rc-06d0b89e-20240801 react-dom: 19.0.0-rc-06d0b89e-20240801(react@19.0.0-rc-06d0b89e-20240801) react-transition-group: 4.4.5(react-dom@19.0.0-rc-06d0b89e-20240801)(react@19.0.0-rc-06d0b89e-20240801) - dev: false - /@faceless-ui/scroll-info@2.0.0-beta.0(react-dom@19.0.0-rc-06d0b89e-20240801)(react@19.0.0-rc-06d0b89e-20240801): - resolution: {integrity: sha512-pUBhQP8vduA7rVndNsjhaCcds1BykA/Q4iV23JWijU6ZFL/M3Fm9P3ypDS+0VVxolqemNhw8S3FXPwZGgjH4Rw==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-rc.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-rc.0 + '@faceless-ui/scroll-info@2.0.0-beta.0(react-dom@19.0.0-rc-06d0b89e-20240801)(react@19.0.0-rc-06d0b89e-20240801)': dependencies: react: 19.0.0-rc-06d0b89e-20240801 react-dom: 19.0.0-rc-06d0b89e-20240801(react@19.0.0-rc-06d0b89e-20240801) - dev: false - /@faceless-ui/window-info@3.0.0-beta.0(react-dom@19.0.0-rc-06d0b89e-20240801)(react@19.0.0-rc-06d0b89e-20240801): - resolution: {integrity: sha512-Qs8xRA+fl4sU2aFVe9xawxfi5TVZ9VTPuhdQpx9aSv7U5a2F0AXwT61lJfnaJ9Flm8tOcxzq67p8cVZsXNCVeQ==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-rc.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-rc.0 + '@faceless-ui/window-info@3.0.0-beta.0(react-dom@19.0.0-rc-06d0b89e-20240801)(react@19.0.0-rc-06d0b89e-20240801)': dependencies: react: 19.0.0-rc-06d0b89e-20240801 react-dom: 19.0.0-rc-06d0b89e-20240801(react@19.0.0-rc-06d0b89e-20240801) - dev: false - /@floating-ui/core@1.6.8: - resolution: {integrity: sha512-7XJ9cPU+yI2QeLS+FCSlqNFZJq8arvswefkZrYI1yQBbftw6FyrZOxYSh+9S7z7TpeWlRt9zJ5IhM1WIL334jA==} + '@floating-ui/core@1.6.8': dependencies: '@floating-ui/utils': 0.2.8 - dev: false - /@floating-ui/dom@1.6.11: - resolution: {integrity: sha512-qkMCxSR24v2vGkhYDo/UzxfJN3D4syqSjyuTFz6C7XcpU1pASPRieNI0Kj5VP3/503mOfYiGY891ugBX1GlABQ==} + '@floating-ui/dom@1.6.11': dependencies: '@floating-ui/core': 1.6.8 '@floating-ui/utils': 0.2.8 - dev: false - /@floating-ui/react-dom@2.1.2(react-dom@19.0.0-rc-06d0b89e-20240801)(react@19.0.0-rc-06d0b89e-20240801): - resolution: {integrity: sha512-06okr5cgPzMNBy+Ycse2A6udMi4bqwW/zgBF/rwjcNqWkyr82Mcg8b0vjX8OJpZFy/FKjJmw6wV7t44kK6kW7A==} - peerDependencies: - react: '>=16.8.0' - react-dom: '>=16.8.0' + '@floating-ui/react-dom@2.1.2(react-dom@19.0.0-rc-06d0b89e-20240801)(react@19.0.0-rc-06d0b89e-20240801)': dependencies: '@floating-ui/dom': 1.6.11 react: 19.0.0-rc-06d0b89e-20240801 react-dom: 19.0.0-rc-06d0b89e-20240801(react@19.0.0-rc-06d0b89e-20240801) - dev: false - /@floating-ui/react@0.26.24(react-dom@19.0.0-rc-06d0b89e-20240801)(react@19.0.0-rc-06d0b89e-20240801): - resolution: {integrity: sha512-2ly0pCkZIGEQUq5H8bBK0XJmc1xIK/RM3tvVzY3GBER7IOD1UgmC2Y2tjj4AuS+TC+vTE1KJv2053290jua0Sw==} - peerDependencies: - react: '>=16.8.0' - react-dom: '>=16.8.0' + '@floating-ui/react@0.26.24(react-dom@19.0.0-rc-06d0b89e-20240801)(react@19.0.0-rc-06d0b89e-20240801)': dependencies: '@floating-ui/react-dom': 2.1.2(react-dom@19.0.0-rc-06d0b89e-20240801)(react@19.0.0-rc-06d0b89e-20240801) '@floating-ui/utils': 0.2.8 react: 19.0.0-rc-06d0b89e-20240801 react-dom: 19.0.0-rc-06d0b89e-20240801(react@19.0.0-rc-06d0b89e-20240801) tabbable: 6.2.0 - dev: false - /@floating-ui/utils@0.2.8: - resolution: {integrity: sha512-kym7SodPp8/wloecOpcmSnWJsK7M0E5Wg8UcFA+uO4B9s5d0ywXOEro/8HM9x0rW+TljRzul/14UYz3TleT3ig==} - dev: false + '@floating-ui/utils@0.2.8': {} - /@humanwhocodes/config-array@0.11.14: - resolution: {integrity: sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==} - engines: {node: '>=10.10.0'} - deprecated: Use @eslint/config-array instead + '@humanwhocodes/config-array@0.11.14': dependencies: '@humanwhocodes/object-schema': 2.0.3 debug: 4.3.7 minimatch: 3.1.2 transitivePeerDependencies: - supports-color - dev: true - /@humanwhocodes/module-importer@1.0.1: - resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} - engines: {node: '>=12.22'} - dev: true + '@humanwhocodes/module-importer@1.0.1': {} - /@humanwhocodes/object-schema@2.0.3: - resolution: {integrity: sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==} - deprecated: Use @eslint/object-schema instead - dev: true + '@humanwhocodes/object-schema@2.0.3': {} - /@img/sharp-darwin-arm64@0.33.5: - resolution: {integrity: sha512-UT4p+iz/2H4twwAoLCqfA9UH5pI6DggwKEGuaPy7nCVQ8ZsiY5PIcrRvD1DzuY3qYL07NtIQcWnBSY/heikIFQ==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} - cpu: [arm64] - os: [darwin] - requiresBuild: true + '@img/sharp-darwin-arm64@0.33.5': optionalDependencies: '@img/sharp-libvips-darwin-arm64': 1.0.4 - dev: false optional: true - /@img/sharp-darwin-x64@0.33.5: - resolution: {integrity: sha512-fyHac4jIc1ANYGRDxtiqelIbdWkIuQaI84Mv45KvGRRxSAa7o7d1ZKAOBaYbnepLC1WqxfpimdeWfvqqSGwR2Q==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} - cpu: [x64] - os: [darwin] - requiresBuild: true + '@img/sharp-darwin-x64@0.33.5': optionalDependencies: '@img/sharp-libvips-darwin-x64': 1.0.4 - dev: false optional: true - /@img/sharp-libvips-darwin-arm64@1.0.4: - resolution: {integrity: sha512-XblONe153h0O2zuFfTAbQYAX2JhYmDHeWikp1LM9Hul9gVPjFY427k6dFEcOL72O01QxQsWi761svJ/ev9xEDg==} - cpu: [arm64] - os: [darwin] - requiresBuild: true - dev: false + '@img/sharp-libvips-darwin-arm64@1.0.4': optional: true - /@img/sharp-libvips-darwin-x64@1.0.4: - resolution: {integrity: sha512-xnGR8YuZYfJGmWPvmlunFaWJsb9T/AO2ykoP3Fz/0X5XV2aoYBPkX6xqCQvUTKKiLddarLaxpzNe+b1hjeWHAQ==} - cpu: [x64] - os: [darwin] - requiresBuild: true - dev: false + '@img/sharp-libvips-darwin-x64@1.0.4': optional: true - /@img/sharp-libvips-linux-arm64@1.0.4: - resolution: {integrity: sha512-9B+taZ8DlyyqzZQnoeIvDVR/2F4EbMepXMc/NdVbkzsJbzkUjhXv/70GQJ7tdLA4YJgNP25zukcxpX2/SueNrA==} - cpu: [arm64] - os: [linux] - requiresBuild: true - dev: false + '@img/sharp-libvips-linux-arm64@1.0.4': optional: true - /@img/sharp-libvips-linux-arm@1.0.5: - resolution: {integrity: sha512-gvcC4ACAOPRNATg/ov8/MnbxFDJqf/pDePbBnuBDcjsI8PssmjoKMAz4LtLaVi+OnSb5FK/yIOamqDwGmXW32g==} - cpu: [arm] - os: [linux] - requiresBuild: true - dev: false + '@img/sharp-libvips-linux-arm@1.0.5': optional: true - /@img/sharp-libvips-linux-s390x@1.0.4: - resolution: {integrity: sha512-u7Wz6ntiSSgGSGcjZ55im6uvTrOxSIS8/dgoVMoiGE9I6JAfU50yH5BoDlYA1tcuGS7g/QNtetJnxA6QEsCVTA==} - cpu: [s390x] - os: [linux] - requiresBuild: true - dev: false + '@img/sharp-libvips-linux-s390x@1.0.4': optional: true - /@img/sharp-libvips-linux-x64@1.0.4: - resolution: {integrity: sha512-MmWmQ3iPFZr0Iev+BAgVMb3ZyC4KeFc3jFxnNbEPas60e1cIfevbtuyf9nDGIzOaW9PdnDciJm+wFFaTlj5xYw==} - cpu: [x64] - os: [linux] - requiresBuild: true - dev: false + '@img/sharp-libvips-linux-x64@1.0.4': optional: true - /@img/sharp-libvips-linuxmusl-arm64@1.0.4: - resolution: {integrity: sha512-9Ti+BbTYDcsbp4wfYib8Ctm1ilkugkA/uscUn6UXK1ldpC1JjiXbLfFZtRlBhjPZ5o1NCLiDbg8fhUPKStHoTA==} - cpu: [arm64] - os: [linux] - requiresBuild: true - dev: false + '@img/sharp-libvips-linuxmusl-arm64@1.0.4': optional: true - /@img/sharp-libvips-linuxmusl-x64@1.0.4: - resolution: {integrity: sha512-viYN1KX9m+/hGkJtvYYp+CCLgnJXwiQB39damAO7WMdKWlIhmYTfHjwSbQeUK/20vY154mwezd9HflVFM1wVSw==} - cpu: [x64] - os: [linux] - requiresBuild: true - dev: false + '@img/sharp-libvips-linuxmusl-x64@1.0.4': optional: true - /@img/sharp-linux-arm64@0.33.5: - resolution: {integrity: sha512-JMVv+AMRyGOHtO1RFBiJy/MBsgz0x4AWrT6QoEVVTyh1E39TrCUpTRI7mx9VksGX4awWASxqCYLCV4wBZHAYxA==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} - cpu: [arm64] - os: [linux] - requiresBuild: true + '@img/sharp-linux-arm64@0.33.5': optionalDependencies: '@img/sharp-libvips-linux-arm64': 1.0.4 - dev: false optional: true - /@img/sharp-linux-arm@0.33.5: - resolution: {integrity: sha512-JTS1eldqZbJxjvKaAkxhZmBqPRGmxgu+qFKSInv8moZ2AmT5Yib3EQ1c6gp493HvrvV8QgdOXdyaIBrhvFhBMQ==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} - cpu: [arm] - os: [linux] - requiresBuild: true + '@img/sharp-linux-arm@0.33.5': optionalDependencies: '@img/sharp-libvips-linux-arm': 1.0.5 - dev: false optional: true - /@img/sharp-linux-s390x@0.33.5: - resolution: {integrity: sha512-y/5PCd+mP4CA/sPDKl2961b+C9d+vPAveS33s6Z3zfASk2j5upL6fXVPZi7ztePZ5CuH+1kW8JtvxgbuXHRa4Q==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} - cpu: [s390x] - os: [linux] - requiresBuild: true + '@img/sharp-linux-s390x@0.33.5': optionalDependencies: '@img/sharp-libvips-linux-s390x': 1.0.4 - dev: false optional: true - /@img/sharp-linux-x64@0.33.5: - resolution: {integrity: sha512-opC+Ok5pRNAzuvq1AG0ar+1owsu842/Ab+4qvU879ippJBHvyY5n2mxF1izXqkPYlGuP/M556uh53jRLJmzTWA==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} - cpu: [x64] - os: [linux] - requiresBuild: true + '@img/sharp-linux-x64@0.33.5': optionalDependencies: '@img/sharp-libvips-linux-x64': 1.0.4 - dev: false optional: true - /@img/sharp-linuxmusl-arm64@0.33.5: - resolution: {integrity: sha512-XrHMZwGQGvJg2V/oRSUfSAfjfPxO+4DkiRh6p2AFjLQztWUuY/o8Mq0eMQVIY7HJ1CDQUJlxGGZRw1a5bqmd1g==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} - cpu: [arm64] - os: [linux] - requiresBuild: true + '@img/sharp-linuxmusl-arm64@0.33.5': optionalDependencies: '@img/sharp-libvips-linuxmusl-arm64': 1.0.4 - dev: false optional: true - /@img/sharp-linuxmusl-x64@0.33.5: - resolution: {integrity: sha512-WT+d/cgqKkkKySYmqoZ8y3pxx7lx9vVejxW/W4DOFMYVSkErR+w7mf2u8m/y4+xHe7yY9DAXQMWQhpnMuFfScw==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} - cpu: [x64] - os: [linux] - requiresBuild: true + '@img/sharp-linuxmusl-x64@0.33.5': optionalDependencies: '@img/sharp-libvips-linuxmusl-x64': 1.0.4 - dev: false optional: true - /@img/sharp-wasm32@0.33.5: - resolution: {integrity: sha512-ykUW4LVGaMcU9lu9thv85CbRMAwfeadCJHRsg2GmeRa/cJxsVY9Rbd57JcMxBkKHag5U/x7TSBpScF4U8ElVzg==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} - cpu: [wasm32] - requiresBuild: true + '@img/sharp-wasm32@0.33.5': dependencies: '@emnapi/runtime': 1.2.0 - dev: false optional: true - /@img/sharp-win32-ia32@0.33.5: - resolution: {integrity: sha512-T36PblLaTwuVJ/zw/LaH0PdZkRz5rd3SmMHX8GSmR7vtNSP5Z6bQkExdSK7xGWyxLw4sUknBuugTelgw2faBbQ==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} - cpu: [ia32] - os: [win32] - requiresBuild: true - dev: false + '@img/sharp-win32-ia32@0.33.5': optional: true - /@img/sharp-win32-x64@0.33.5: - resolution: {integrity: sha512-MpY/o8/8kj+EcnxwvrP4aTJSWw/aZ7JIGR4aBeZkZw5B7/Jn+tY9/VNwtcoGmdT7GfggGIU4kygOMSbYnOrAbg==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} - cpu: [x64] - os: [win32] - requiresBuild: true - dev: false + '@img/sharp-win32-x64@0.33.5': optional: true - /@isaacs/cliui@8.0.2: - resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} - engines: {node: '>=12'} + '@isaacs/cliui@8.0.2': dependencies: string-width: 5.1.2 - string-width-cjs: /string-width@4.2.3 + string-width-cjs: string-width@4.2.3 strip-ansi: 7.1.0 - strip-ansi-cjs: /strip-ansi@6.0.1 + strip-ansi-cjs: strip-ansi@6.0.1 wrap-ansi: 8.1.0 - wrap-ansi-cjs: /wrap-ansi@7.0.0 + wrap-ansi-cjs: wrap-ansi@7.0.0 - /@jridgewell/gen-mapping@0.3.5: - resolution: {integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==} - engines: {node: '>=6.0.0'} + '@jridgewell/gen-mapping@0.3.5': dependencies: '@jridgewell/set-array': 1.2.1 '@jridgewell/sourcemap-codec': 1.5.0 '@jridgewell/trace-mapping': 0.3.25 - /@jridgewell/resolve-uri@3.1.2: - resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} - engines: {node: '>=6.0.0'} + '@jridgewell/resolve-uri@3.1.2': {} - /@jridgewell/set-array@1.2.1: - resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==} - engines: {node: '>=6.0.0'} + '@jridgewell/set-array@1.2.1': {} - /@jridgewell/sourcemap-codec@1.5.0: - resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==} + '@jridgewell/sourcemap-codec@1.5.0': {} - /@jridgewell/trace-mapping@0.3.25: - resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} + '@jridgewell/trace-mapping@0.3.25': dependencies: '@jridgewell/resolve-uri': 3.1.2 '@jridgewell/sourcemap-codec': 1.5.0 - /@jsdevtools/ono@7.1.3: - resolution: {integrity: sha512-4JQNk+3mVzK3xh2rqd6RB4J46qUR19azEHBneZyTZM+c456qOrbbM/5xcR8huNCCcbVt7+UmizG6GuUvPvKUYg==} - dev: false + '@jsdevtools/ono@7.1.3': {} - /@lexical/clipboard@0.17.0: - resolution: {integrity: sha512-wYtC6VJhuSxUZc69VTU+vBgzB4HQqhve2hLrr3v+3tR2aimx3KnKphCCP1TexCntxpEnOTPXafEgpOW/EVQE+Q==} + '@lexical/clipboard@0.17.0': dependencies: '@lexical/html': 0.17.0 '@lexical/list': 0.17.0 '@lexical/selection': 0.17.0 '@lexical/utils': 0.17.0 lexical: 0.17.0 - dev: false - /@lexical/code@0.17.0: - resolution: {integrity: sha512-8zrgHzf27aYySfUVeSKw8YP/LkRlXHSwD03BKlkSZAb4HX/WC60SGmdXUhtyTIBucqe0pnuGsRYfR9euD0/tfw==} + '@lexical/code@0.17.0': dependencies: '@lexical/utils': 0.17.0 lexical: 0.17.0 prismjs: 1.29.0 - dev: false - /@lexical/devtools-core@0.17.0(react-dom@19.0.0-rc-06d0b89e-20240801)(react@19.0.0-rc-06d0b89e-20240801): - resolution: {integrity: sha512-0ftqWsoCb96oTc8Ok+uvjGAXZpsN9oc6ml3d46BdufdZyxHXC4qU3YVoPfLkgAHzH+4fQlNypu7u3Ym3dZ2rJg==} - peerDependencies: - react: '>=17.x' - react-dom: '>=17.x' + '@lexical/devtools-core@0.17.0(react-dom@19.0.0-rc-06d0b89e-20240801)(react@19.0.0-rc-06d0b89e-20240801)': dependencies: '@lexical/html': 0.17.0 '@lexical/link': 0.17.0 @@ -1781,65 +5626,47 @@ packages: lexical: 0.17.0 react: 19.0.0-rc-06d0b89e-20240801 react-dom: 19.0.0-rc-06d0b89e-20240801(react@19.0.0-rc-06d0b89e-20240801) - dev: false - /@lexical/dragon@0.17.0: - resolution: {integrity: sha512-XSsrHVwhjBIVF9VN9MFm6Go8fquj5H/jlYuyNzemHq0tOli8NaoSovGc5q0LwXr88RPsuIt1jluazR7Q1+kxTQ==} + '@lexical/dragon@0.17.0': dependencies: lexical: 0.17.0 - dev: false - /@lexical/hashtag@0.17.0: - resolution: {integrity: sha512-E6nSoz9haB6JypQtYxG5OYr36AHgam/FBMu77OWNl1KsJbkP8nInm+P22QFsNnEvs4Hk6/0FJ5g42+lTEnGmIg==} + '@lexical/hashtag@0.17.0': dependencies: '@lexical/utils': 0.17.0 lexical: 0.17.0 - dev: false - /@lexical/headless@0.17.0: - resolution: {integrity: sha512-yKvXcq2F6S1lwDLcwv+bHht/al1LcFmidPT3rjISRxLX+/YjUcUT8MmvV773Du4piV4rFPbVlBPFBZfHJkDxXw==} + '@lexical/headless@0.17.0': dependencies: lexical: 0.17.0 - dev: false - /@lexical/history@0.17.0: - resolution: {integrity: sha512-SfeUKAXf9pZpqee9rMOTt33V0J0p/AS9TZLT9Un9dU6wAaHfv6NFax1ND0JoG1a9YkTc539mufxVLNjsNRc0ag==} + '@lexical/history@0.17.0': dependencies: '@lexical/utils': 0.17.0 lexical: 0.17.0 - dev: false - /@lexical/html@0.17.0: - resolution: {integrity: sha512-sI458CEP/j+Gd2YEo1+vTax31ZAjdq5jmRJMgSKxzKlkVYAUY9eH5u3Y3awPLwLVXJHiIopMX02GeZytibuTiw==} + '@lexical/html@0.17.0': dependencies: '@lexical/selection': 0.17.0 '@lexical/utils': 0.17.0 lexical: 0.17.0 - dev: false - /@lexical/link@0.17.0: - resolution: {integrity: sha512-Kux6yvPit6y0ksPpwimv3seVrXAsggkqB6oT6oAVBaDpYuygVEwNDqg/rCTtB3mHQ4eeuU33mdK7MSXZ34bZRQ==} + '@lexical/link@0.17.0': dependencies: '@lexical/utils': 0.17.0 lexical: 0.17.0 - dev: false - /@lexical/list@0.17.0: - resolution: {integrity: sha512-anDuSUykTv+lqyCwl1m+sThrB15OKCa00Eo68/d2HQSHDD3KNWgSx709dcR17bD9oT204yOhMJbQGywuzcEyGQ==} + '@lexical/list@0.17.0': dependencies: '@lexical/utils': 0.17.0 lexical: 0.17.0 - dev: false - /@lexical/mark@0.17.0: - resolution: {integrity: sha512-Ynqh9KHXUcB9qLOTGC9s+bbWtawOwRStkeIeAugTqrwckyYWeDaePpyJ6IhBBJy1E1CfpiZn71NDeP+FuRjnXQ==} + '@lexical/mark@0.17.0': dependencies: '@lexical/utils': 0.17.0 lexical: 0.17.0 - dev: false - /@lexical/markdown@0.17.0: - resolution: {integrity: sha512-6IuJ2l5p/Ma+VBUIStIRXwTC01GEzx21gvqqywuqBUzAOiMr1oRM+DGsQgrzZrcjX+LzUlZ5ZgjuWtK8XKVAZw==} + '@lexical/markdown@0.17.0': dependencies: '@lexical/code': 0.17.0 '@lexical/link': 0.17.0 @@ -1848,34 +5675,23 @@ packages: '@lexical/text': 0.17.0 '@lexical/utils': 0.17.0 lexical: 0.17.0 - dev: false - /@lexical/offset@0.17.0: - resolution: {integrity: sha512-onE6SD2mIAwBLTT5v5fVBVtRg/NpQj+o10vTWJ1ImvEUERpSoCyHMTy3IMoSMuCRwuOG9C0cFEret2u+QS8Icw==} + '@lexical/offset@0.17.0': dependencies: lexical: 0.17.0 - dev: false - /@lexical/overflow@0.17.0: - resolution: {integrity: sha512-dh+nQAmeobKvZFodWyzNh1ZjX043Patk/1Lwct9XmtAGMUdXL+tB0bbguWVcDfY8OYu1CTQGfbdq2oMEJYzwsg==} + '@lexical/overflow@0.17.0': dependencies: lexical: 0.17.0 - dev: false - /@lexical/plain-text@0.17.0: - resolution: {integrity: sha512-AEk+3ttbRyRi7m9UbU1CdLUtGsXh4FFZkBC12twV3U82lZHOdHocLlTutP+lcbYlGjeq6UF43NxOSGzsYEunsA==} + '@lexical/plain-text@0.17.0': dependencies: '@lexical/clipboard': 0.17.0 '@lexical/selection': 0.17.0 '@lexical/utils': 0.17.0 lexical: 0.17.0 - dev: false - /@lexical/react@0.17.0(react-dom@19.0.0-rc-06d0b89e-20240801)(react@19.0.0-rc-06d0b89e-20240801)(yjs@13.6.19): - resolution: {integrity: sha512-HZ3joq+5g2++2vo/6scTd60Y2bsu8ya8EUdopyudnmGZGKAcAPue9pLOlBaEpsYZ7vqTuGjiPgtEBfFzDy9rlg==} - peerDependencies: - react: '>=17.x' - react-dom: '>=17.x' + '@lexical/react@0.17.0(react-dom@19.0.0-rc-06d0b89e-20240801)(react@19.0.0-rc-06d0b89e-20240801)(yjs@13.6.19)': dependencies: '@lexical/clipboard': 0.17.0 '@lexical/code': 0.17.0 @@ -1901,217 +5717,113 @@ packages: react-error-boundary: 3.1.4(react@19.0.0-rc-06d0b89e-20240801) transitivePeerDependencies: - yjs - dev: false - /@lexical/rich-text@0.17.0: - resolution: {integrity: sha512-XJc8gQBSwppCkESQaNcGtyTaPXZaeCQDcUVpnDjDK0vM/ZZN8TErxbujwbSqA3kO2dBds9N8WxNboSwuncMBcQ==} + '@lexical/rich-text@0.17.0': dependencies: '@lexical/clipboard': 0.17.0 '@lexical/selection': 0.17.0 '@lexical/utils': 0.17.0 lexical: 0.17.0 - dev: false - /@lexical/selection@0.17.0: - resolution: {integrity: sha512-UTjlvyhFY/lmHtBaIaVRwYnRfO9gR4I32+PT7vHQr4v3VfcgS63YEGSgEZy3Gh1pfeJqaZATN58+jCuMAQXlWQ==} + '@lexical/selection@0.17.0': dependencies: lexical: 0.17.0 - dev: false - /@lexical/table@0.17.0: - resolution: {integrity: sha512-RQF7IG0rGL2/bPaPFUIMgDA3QMdDflvXSnE7Udgbj9yMqSKhYkaERVfNyoLckDUSuusGJd6XV+qum6JWn0nSNA==} + '@lexical/table@0.17.0': dependencies: '@lexical/utils': 0.17.0 lexical: 0.17.0 - dev: false - /@lexical/text@0.17.0: - resolution: {integrity: sha512-kFH0V6yjW8YswmoY7vHT4zHFDflGfamuUxTPHROpdnq/JMjHeaVwtmFBdrP0gknaC8XMRXdr3EsemQ7cbOoDPA==} + '@lexical/text@0.17.0': dependencies: lexical: 0.17.0 - dev: false - /@lexical/utils@0.17.0: - resolution: {integrity: sha512-B/n0rRGDmdMrqi2qnprLt6SntC6jb4JItLmPl8zDDdg7/HxMdLq3F93vogeiXQJn0mlNqgiENWHvLAy5K2C2uQ==} + '@lexical/utils@0.17.0': dependencies: '@lexical/list': 0.17.0 '@lexical/selection': 0.17.0 '@lexical/table': 0.17.0 lexical: 0.17.0 - dev: false - /@lexical/yjs@0.17.0(yjs@13.6.19): - resolution: {integrity: sha512-xJv3frcK/jskssLbzdY4yfBaM7+LWaZD4YjYkJ/bvRDTey2w+McF+SvsJ/yBA8YF1oaL3rT+0aIQJ7rfH+AxjA==} - peerDependencies: - yjs: '>=13.5.22' + '@lexical/yjs@0.17.0(yjs@13.6.19)': dependencies: '@lexical/offset': 0.17.0 lexical: 0.17.0 yjs: 13.6.19 - dev: false - /@monaco-editor/loader@1.4.0(monaco-editor@0.51.0): - resolution: {integrity: sha512-00ioBig0x642hytVspPl7DbQyaSWRaolYie/UFNjoTdvoKPzo6xrXLhTk9ixgIKcLH5b5vDOjVNiGyY+uDCUlg==} - peerDependencies: - monaco-editor: '>= 0.21.0 < 1' + '@monaco-editor/loader@1.4.0(monaco-editor@0.51.0)': dependencies: monaco-editor: 0.51.0 state-local: 1.0.7 - dev: false - /@monaco-editor/react@4.6.0(monaco-editor@0.51.0)(react-dom@19.0.0-rc-06d0b89e-20240801)(react@19.0.0-rc-06d0b89e-20240801): - resolution: {integrity: sha512-RFkU9/i7cN2bsq/iTkurMWOEErmYcY6JiQI3Jn+WeR/FGISH8JbHERjpS9oRuSOPvDMJI0Z8nJeKkbOs9sBYQw==} - peerDependencies: - monaco-editor: '>= 0.25.0 < 1' - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + '@monaco-editor/react@4.6.0(monaco-editor@0.51.0)(react-dom@19.0.0-rc-06d0b89e-20240801)(react@19.0.0-rc-06d0b89e-20240801)': dependencies: '@monaco-editor/loader': 1.4.0(monaco-editor@0.51.0) monaco-editor: 0.51.0 react: 19.0.0-rc-06d0b89e-20240801 react-dom: 19.0.0-rc-06d0b89e-20240801(react@19.0.0-rc-06d0b89e-20240801) - dev: false - /@mongodb-js/saslprep@1.1.9: - resolution: {integrity: sha512-tVkljjeEaAhCqTzajSdgbQ6gE6f3oneVwa3iXR6csiEwXXOFsiC6Uh9iAjAhXPtqa/XMDHWjjeNH/77m/Yq2dw==} - requiresBuild: true + '@mongodb-js/saslprep@1.1.9': dependencies: sparse-bitfield: 3.0.3 - dev: false optional: true - /@next/env@15.0.0-canary.104: - resolution: {integrity: sha512-7wOJhe62uL4ViZOumMwuPev4IxQaXJ4g97iMsXelOF+Q5QuuFXzbxIXh4OJMVAHZJMYkM5VyD2zxV66iYU01DQ==} - dev: false + '@next/env@15.0.0-canary.104': {} - /@next/env@15.0.0-rc.0: - resolution: {integrity: sha512-6W0ndQvHR9sXcqcKeR/inD2UTRCs9+VkSK3lfaGmEuZs7EjwwXMO2BPYjz9oBrtfPL3xuTjtXsHKSsalYQ5l1Q==} - dev: false + '@next/env@15.0.0-rc.0': {} - /@next/eslint-plugin-next@13.5.6: - resolution: {integrity: sha512-ng7pU/DDsxPgT6ZPvuprxrkeew3XaRf4LAT4FabaEO/hAbvVx4P7wqnqdbTdDn1kgTvsI4tpIgT4Awn/m0bGbg==} + '@next/eslint-plugin-next@13.5.6': dependencies: glob: 7.1.7 - dev: true - /@next/eslint-plugin-next@15.0.0-canary.104: - resolution: {integrity: sha512-mkvTl0zmSfRDWabHc1NQie9sw8DZHsqBx77jEu+CKaoXRJ2/zLUb29CJL0YHMIIzr/026NI8AFsg1SxrxllUsw==} + '@next/eslint-plugin-next@15.0.0-canary.104': dependencies: fast-glob: 3.3.1 - dev: true - /@next/swc-darwin-arm64@15.0.0-canary.104: - resolution: {integrity: sha512-tLrkGDlVAch+dwLr0lwZt6t//KQhwJQamTt86bFeSEgmuWg8escVD5608XjIicpy4oYUeTG2e7EDjvW1/9C7+Q==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [darwin] - requiresBuild: true - dev: false + '@next/swc-darwin-arm64@15.0.0-canary.104': optional: true - /@next/swc-darwin-x64@15.0.0-canary.104: - resolution: {integrity: sha512-NokpzlJHGzldMdx5ALJi9w8sZbFVQj3KPjMg1EKutvkX8Z0TgZguoj0Hb+0Dh7o6fBK0CqH1mYQd/IgYeqvYew==} - engines: {node: '>= 10'} - cpu: [x64] - os: [darwin] - requiresBuild: true - dev: false + '@next/swc-darwin-x64@15.0.0-canary.104': optional: true - /@next/swc-linux-arm64-gnu@15.0.0-canary.104: - resolution: {integrity: sha512-U9P1bXaxMyGrY7HdJ1fdtS5vy2yfWF7z1Qt/8OBcZi5y6WWHloZmJ/jRMXxoHJ1lcLSsC1EcubYHgV5ys1NDcA==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [linux] - requiresBuild: true - dev: false + '@next/swc-linux-arm64-gnu@15.0.0-canary.104': optional: true - /@next/swc-linux-arm64-musl@15.0.0-canary.104: - resolution: {integrity: sha512-PDOS3ySD0/YBVvKn/JhQ8xjh4HU4v2MCvqFHaoahu9v1ydmUOeuDRjQk4hUliXgvKuE/ZZksP3a9TrzpbDScsA==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [linux] - requiresBuild: true - dev: false + '@next/swc-linux-arm64-musl@15.0.0-canary.104': optional: true - /@next/swc-linux-x64-gnu@15.0.0-canary.104: - resolution: {integrity: sha512-jYNKOIkqL4puFpeNjIZ/riK0+adDyjENjACMlU3HyuG7A0xCYAFxBIbmwjbGmpSv99+PPB/gAbGnB0TT2PDHUQ==} - engines: {node: '>= 10'} - cpu: [x64] - os: [linux] - requiresBuild: true - dev: false + '@next/swc-linux-x64-gnu@15.0.0-canary.104': optional: true - /@next/swc-linux-x64-musl@15.0.0-canary.104: - resolution: {integrity: sha512-xX3ZUWM4syINdEqsUhvQWBjoFa2P8PL96adQUfph4cpUrkrUbnBQbWA2vSdSvwoC6a80wSX+buuhJptvxzEl3A==} - engines: {node: '>= 10'} - cpu: [x64] - os: [linux] - requiresBuild: true - dev: false + '@next/swc-linux-x64-musl@15.0.0-canary.104': optional: true - /@next/swc-win32-arm64-msvc@15.0.0-canary.104: - resolution: {integrity: sha512-kUMeZOhueb5wXZTQTPvdl4V4wtJKh49TcVAHS7kcDTU9m8jrIQ3beKURWtzjD4iizgl/iar8CHuYS5CAnCGqAw==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [win32] - requiresBuild: true - dev: false + '@next/swc-win32-arm64-msvc@15.0.0-canary.104': optional: true - /@next/swc-win32-ia32-msvc@15.0.0-canary.104: - resolution: {integrity: sha512-6q5HYiACa6GH7+RyTlLMdUlivwi75bw2L9PRYRBuw4C0SvLYMwBf7SlshbrCrNYbIAaGajYJLZjv3IXFnsZBjA==} - engines: {node: '>= 10'} - cpu: [ia32] - os: [win32] - requiresBuild: true - dev: false + '@next/swc-win32-ia32-msvc@15.0.0-canary.104': optional: true - /@next/swc-win32-x64-msvc@15.0.0-canary.104: - resolution: {integrity: sha512-OeY5GRHRv5qMPwK2e1ipX+EeTDPmRITM9OBeaeIllubWprLGeLxnC1NbKYKCt6IfCboX+wanZKQcbuyH5RMtlg==} - engines: {node: '>= 10'} - cpu: [x64] - os: [win32] - requiresBuild: true - dev: false + '@next/swc-win32-x64-msvc@15.0.0-canary.104': optional: true - /@nodelib/fs.scandir@2.1.5: - resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} - engines: {node: '>= 8'} + '@nodelib/fs.scandir@2.1.5': dependencies: '@nodelib/fs.stat': 2.0.5 run-parallel: 1.2.0 - /@nodelib/fs.stat@2.0.5: - resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} - engines: {node: '>= 8'} + '@nodelib/fs.stat@2.0.5': {} - /@nodelib/fs.walk@1.2.8: - resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} - engines: {node: '>= 8'} + '@nodelib/fs.walk@1.2.8': dependencies: '@nodelib/fs.scandir': 2.1.5 fastq: 1.17.1 - /@nolyfill/is-core-module@1.0.39: - resolution: {integrity: sha512-nn5ozdjYQpUCZlWGuxcJY/KpxkWQs4DcbMCmKojjyrYDEAGy4Ce19NN4v5MduafTwJlbKc99UA8YhSVqq9yPZA==} - engines: {node: '>=12.4.0'} - dev: true + '@nolyfill/is-core-module@1.0.39': {} - /@one-ini/wasm@0.1.1: - resolution: {integrity: sha512-XuySG1E38YScSJoMlqovLru4KTUNSjgVTIjyh7qMX6aNN5HY5Ct5LhRJdxO79JtTzKfzV/bnWpz+zquYrISsvw==} - dev: false + '@one-ini/wasm@0.1.1': {} - /@payloadcms/db-mongodb@3.0.0-beta.106(@aws-sdk/client-sso-oidc@3.651.1)(payload@3.0.0-beta.106): - resolution: {integrity: sha512-wD3xFuGRmk26S+JTweILknIbjixL1HF+ceLc+lsWDkdYEKeZ3aO8DDGkws51JJ3WlC3NC08Pz1WbGttV+kx+5Q==} - peerDependencies: - payload: 3.0.0-beta.106 + '@payloadcms/db-mongodb@3.0.0-beta.106(@aws-sdk/client-sso-oidc@3.651.1)(payload@3.0.0-beta.106)': dependencies: bson-objectid: 2.0.4 http-status: 1.6.2 @@ -2124,20 +5836,13 @@ packages: - '@aws-sdk/client-sso-oidc' - aws-crt - supports-color - dev: false - /@payloadcms/email-nodemailer@3.0.0-beta.106(payload@3.0.0-beta.106): - resolution: {integrity: sha512-M+B4O/a59cQzDWzPKLv9gITmiXSpvOcjMfKMFsRBgNB52otwxm2kAMwfYBdZWNe3YW7uydvLZz9Lo8Sq+a6PhQ==} - engines: {node: ^18.20.2 || >=20.9.0} - peerDependencies: - payload: 3.0.0-beta.106 + '@payloadcms/email-nodemailer@3.0.0-beta.106(payload@3.0.0-beta.106)': dependencies: nodemailer: 6.9.10 payload: 3.0.0-beta.106(graphql@16.9.0)(monaco-editor@0.51.0)(react-dom@19.0.0-rc-06d0b89e-20240801)(react@19.0.0-rc-06d0b89e-20240801)(typescript@5.6.2) - dev: false - /@payloadcms/eslint-config@1.1.1(typescript@5.6.2): - resolution: {integrity: sha512-LSf9oEPb6aMEMqdTFqj1v+7p/bdrJWG6hp7748xjVO3RL3yQESTKLK/NbjsMYITN4tKFXjfPWDUtcwHv0hS6/A==} + '@payloadcms/eslint-config@1.1.1(typescript@5.6.2)': dependencies: '@types/eslint': 8.44.2 '@typescript-eslint/eslint-plugin': 6.6.0(@typescript-eslint/parser@6.6.0)(eslint@8.48.0)(typescript@5.6.2) @@ -2165,14 +5870,8 @@ packages: - svelte-eslint-parser - typescript - vue-eslint-parser - dev: true - /@payloadcms/graphql@3.0.0-beta.106(graphql@16.9.0)(payload@3.0.0-beta.106)(typescript@5.6.2): - resolution: {integrity: sha512-lLdE/CHz5e7ahOaDpM4+CedYdhm6E+Kuv8EFmkARQwrm9bFyNt6XfGdqp0Fsbwy0ka77Q2rkV640nWOVXBj4ew==} - hasBin: true - peerDependencies: - graphql: ^16.8.1 - payload: 3.0.0-beta.106 + '@payloadcms/graphql@3.0.0-beta.106(graphql@16.9.0)(payload@3.0.0-beta.106)(typescript@5.6.2)': dependencies: graphql: 16.9.0 graphql-scalars: 1.22.2(graphql@16.9.0) @@ -2182,30 +5881,16 @@ packages: tsx: 4.19.1 transitivePeerDependencies: - typescript - dev: false - /@payloadcms/live-preview-react@3.0.0-beta.106(react-dom@19.0.0-rc-06d0b89e-20240801)(react@19.0.0-rc-06d0b89e-20240801): - resolution: {integrity: sha512-s+JvzjIcQmNV6NfzndFPmFJIIBAT7dlHRa/bA1xX8MY64VzT1VRGdd0Xu0fm92K0Wlj3LVojlogOJthabYNqaA==} - peerDependencies: - react: ^19.0.0 || ^19.0.0-rc-06d0b89e-20240801 - react-dom: ^19.0.0 || ^19.0.0-rc-06d0b89e-20240801 + '@payloadcms/live-preview-react@3.0.0-beta.106(react-dom@19.0.0-rc-06d0b89e-20240801)(react@19.0.0-rc-06d0b89e-20240801)': dependencies: '@payloadcms/live-preview': 3.0.0-beta.106 react: 19.0.0-rc-06d0b89e-20240801 react-dom: 19.0.0-rc-06d0b89e-20240801(react@19.0.0-rc-06d0b89e-20240801) - dev: false - /@payloadcms/live-preview@3.0.0-beta.106: - resolution: {integrity: sha512-qMh5pa+jhw2lB5EUchU9V43W5xtM57nC12kV9VBn9QdlTIzE6Mt+Pzz61qHkHKWYiasNv5HkRbPyrYyfLKsj/Q==} - dev: false + '@payloadcms/live-preview@3.0.0-beta.106': {} - /@payloadcms/next@3.0.0-beta.106(graphql@16.9.0)(monaco-editor@0.51.0)(next@15.0.0-canary.104)(payload@3.0.0-beta.106)(react-dom@19.0.0-rc-06d0b89e-20240801)(react@19.0.0-rc-06d0b89e-20240801)(types-react@19.0.0-rc.0)(typescript@5.6.2): - resolution: {integrity: sha512-343ptzsRzv3usKcB73mH5hALxRq0eO1hCSnyYSuMbTs+Czo3bSV+RLN1k9hs/5S1/Wr3G1b9Mo4/QTaC99240A==} - engines: {node: ^18.20.2 || >=20.9.0} - peerDependencies: - graphql: ^16.8.1 - next: ^15.0.0-canary.104 - payload: 3.0.0-beta.106 + '@payloadcms/next@3.0.0-beta.106(graphql@16.9.0)(monaco-editor@0.51.0)(next@15.0.0-canary.104)(payload@3.0.0-beta.106)(react-dom@19.0.0-rc-06d0b89e-20240801)(react@19.0.0-rc-06d0b89e-20240801)(types-react@19.0.0-rc.0)(typescript@5.6.2)': dependencies: '@dnd-kit/core': 6.0.8(react-dom@19.0.0-rc-06d0b89e-20240801)(react@19.0.0-rc-06d0b89e-20240801) '@payloadcms/graphql': 3.0.0-beta.106(graphql@16.9.0)(payload@3.0.0-beta.106)(typescript@5.6.2) @@ -2235,12 +5920,8 @@ packages: - supports-color - typescript - utf-8-validate - dev: false - /@payloadcms/plugin-cloud@3.0.0-beta.106(@aws-sdk/client-sso-oidc@3.651.1)(payload@3.0.0-beta.106): - resolution: {integrity: sha512-xB9k8F9ZlHM8HxYu9OGvJVjQhYh1fntZIqfcY3er6M6b/uTmT9FWvyEOtQyt0NqjGqu25T8Lv5QHKMLFinGJpw==} - peerDependencies: - payload: 3.0.0-beta.106 + '@payloadcms/plugin-cloud@3.0.0-beta.106(@aws-sdk/client-sso-oidc@3.651.1)(payload@3.0.0-beta.106)': dependencies: '@aws-sdk/client-cognito-identity': 3.651.1 '@aws-sdk/client-s3': 3.651.1 @@ -2256,14 +5937,8 @@ packages: - aws-crt - debug - encoding - dev: false - /@payloadcms/plugin-form-builder@3.0.0-beta.106(monaco-editor@0.51.0)(next@15.0.0-canary.104)(payload@3.0.0-beta.106)(react-dom@19.0.0-rc-06d0b89e-20240801)(react@19.0.0-rc-06d0b89e-20240801)(types-react@19.0.0-rc.0)(typescript@5.6.2): - resolution: {integrity: sha512-rdL5NuHw98fHaaqDOKu/pafNUKX049EL7Lix0YhqJCMOwn/JREP6SczlqxONjAL5f0rQyG3lta++9VarD83BNA==} - peerDependencies: - payload: 3.0.0-beta.106 - react: ^19.0.0 || ^19.0.0-rc-06d0b89e-20240801 - react-dom: ^19.0.0 || ^19.0.0-rc-06d0b89e-20240801 + '@payloadcms/plugin-form-builder@3.0.0-beta.106(monaco-editor@0.51.0)(next@15.0.0-canary.104)(payload@3.0.0-beta.106)(react-dom@19.0.0-rc-06d0b89e-20240801)(react@19.0.0-rc-06d0b89e-20240801)(types-react@19.0.0-rc.0)(typescript@5.6.2)': dependencies: '@payloadcms/ui': 3.0.0-beta.106(monaco-editor@0.51.0)(next@15.0.0-canary.104)(payload@3.0.0-beta.106)(react-dom@19.0.0-rc-06d0b89e-20240801)(react@19.0.0-rc-06d0b89e-20240801)(types-react@19.0.0-rc.0)(typescript@5.6.2) escape-html: 1.0.3 @@ -2276,30 +5951,16 @@ packages: - next - supports-color - typescript - dev: false - /@payloadcms/plugin-nested-docs@3.0.0-beta.106(payload@3.0.0-beta.106): - resolution: {integrity: sha512-nt4CX2NbIab76wHCC9dq3330uQCBWJYM2UQd/4Wlu0SMbpICBru8hTEWJ6L5d1YDgvR7LRCKAKOsOsrCDvj03g==} - peerDependencies: - payload: 3.0.0-beta.106 + '@payloadcms/plugin-nested-docs@3.0.0-beta.106(payload@3.0.0-beta.106)': dependencies: payload: 3.0.0-beta.106(graphql@16.9.0)(monaco-editor@0.51.0)(react-dom@19.0.0-rc-06d0b89e-20240801)(react@19.0.0-rc-06d0b89e-20240801)(typescript@5.6.2) - dev: false - /@payloadcms/plugin-redirects@3.0.0-beta.106(payload@3.0.0-beta.106): - resolution: {integrity: sha512-R9tr9e6l4DfCct/sKEM55jcKL6szyWlRiiSYI9EAjmQNZ7BVt4QKiOaAl+WhAANsKzy5ne25i+2bl14qbZcLMg==} - peerDependencies: - payload: 3.0.0-beta.106 + '@payloadcms/plugin-redirects@3.0.0-beta.106(payload@3.0.0-beta.106)': dependencies: payload: 3.0.0-beta.106(graphql@16.9.0)(monaco-editor@0.51.0)(react-dom@19.0.0-rc-06d0b89e-20240801)(react@19.0.0-rc-06d0b89e-20240801)(typescript@5.6.2) - dev: false - /@payloadcms/plugin-seo@3.0.0-beta.106(monaco-editor@0.51.0)(next@15.0.0-canary.104)(payload@3.0.0-beta.106)(react-dom@19.0.0-rc-06d0b89e-20240801)(react@19.0.0-rc-06d0b89e-20240801)(types-react@19.0.0-rc.0)(typescript@5.6.2): - resolution: {integrity: sha512-ZiI8l/4/qu0LW4bQaHCoyFGAsvisVnRB6BaXgYp1OKGKDfQHV1/QKf88rIO2O1x5rBkZr0Q2MhzhtOxSPVja0w==} - peerDependencies: - payload: 3.0.0-beta.106 - react: ^19.0.0 || ^19.0.0-rc-06d0b89e-20240801 - react-dom: ^19.0.0 || ^19.0.0-rc-06d0b89e-20240801 + '@payloadcms/plugin-seo@3.0.0-beta.106(monaco-editor@0.51.0)(next@15.0.0-canary.104)(payload@3.0.0-beta.106)(react-dom@19.0.0-rc-06d0b89e-20240801)(react@19.0.0-rc-06d0b89e-20240801)(types-react@19.0.0-rc.0)(typescript@5.6.2)': dependencies: '@payloadcms/translations': 3.0.0-beta.106 '@payloadcms/ui': 3.0.0-beta.106(monaco-editor@0.51.0)(next@15.0.0-canary.104)(payload@3.0.0-beta.106)(react-dom@19.0.0-rc-06d0b89e-20240801)(react@19.0.0-rc-06d0b89e-20240801)(types-react@19.0.0-rc.0)(typescript@5.6.2) @@ -2312,29 +5973,8 @@ packages: - next - supports-color - typescript - dev: false - /@payloadcms/richtext-lexical@3.0.0-beta.106(@faceless-ui/modal@3.0.0-beta.2)(@faceless-ui/scroll-info@2.0.0-beta.0)(@lexical/headless@0.17.0)(@lexical/link@0.17.0)(@lexical/list@0.17.0)(@lexical/mark@0.17.0)(@lexical/markdown@0.17.0)(@lexical/react@0.17.0)(@lexical/rich-text@0.17.0)(@lexical/selection@0.17.0)(@lexical/table@0.17.0)(@lexical/utils@0.17.0)(@payloadcms/next@3.0.0-beta.106)(lexical@0.17.0)(monaco-editor@0.51.0)(next@15.0.0-canary.104)(payload@3.0.0-beta.106)(react-dom@19.0.0-rc-06d0b89e-20240801)(react@19.0.0-rc-06d0b89e-20240801)(types-react@19.0.0-rc.0)(typescript@5.6.2): - resolution: {integrity: sha512-SB92SGFs/plFASifGL6w8atNMIEUpkatdWWCJXY/OstS++c3lqsB4brs9oWzuMUgdrTBHMXpiYndiK9xc6AS7A==} - engines: {node: ^18.20.2 || >=20.9.0} - peerDependencies: - '@faceless-ui/modal': 3.0.0-beta.2 - '@faceless-ui/scroll-info': 2.0.0-beta.0 - '@lexical/headless': 0.17.0 - '@lexical/link': 0.17.0 - '@lexical/list': 0.17.0 - '@lexical/mark': 0.17.0 - '@lexical/markdown': 0.17.0 - '@lexical/react': 0.17.0 - '@lexical/rich-text': 0.17.0 - '@lexical/selection': 0.17.0 - '@lexical/table': 0.17.0 - '@lexical/utils': 0.17.0 - '@payloadcms/next': 3.0.0-beta.106 - lexical: 0.17.0 - payload: 3.0.0-beta.106 - react: ^19.0.0 || ^19.0.0-rc-06d0b89e-20240801 - react-dom: ^19.0.0 || ^19.0.0-rc-06d0b89e-20240801 + '@payloadcms/richtext-lexical@3.0.0-beta.106(@faceless-ui/modal@3.0.0-beta.2)(@faceless-ui/scroll-info@2.0.0-beta.0)(@lexical/headless@0.17.0)(@lexical/link@0.17.0)(@lexical/list@0.17.0)(@lexical/mark@0.17.0)(@lexical/markdown@0.17.0)(@lexical/react@0.17.0)(@lexical/rich-text@0.17.0)(@lexical/selection@0.17.0)(@lexical/table@0.17.0)(@lexical/utils@0.17.0)(@payloadcms/next@3.0.0-beta.106)(lexical@0.17.0)(monaco-editor@0.51.0)(next@15.0.0-canary.104)(payload@3.0.0-beta.106)(react-dom@19.0.0-rc-06d0b89e-20240801)(react@19.0.0-rc-06d0b89e-20240801)(types-react@19.0.0-rc.0)(typescript@5.6.2)': dependencies: '@faceless-ui/modal': 3.0.0-beta.2(react-dom@19.0.0-rc-06d0b89e-20240801)(react@19.0.0-rc-06d0b89e-20240801) '@faceless-ui/scroll-info': 2.0.0-beta.0(react-dom@19.0.0-rc-06d0b89e-20240801)(react@19.0.0-rc-06d0b89e-20240801) @@ -2367,22 +6007,12 @@ packages: - next - supports-color - typescript - dev: false - /@payloadcms/translations@3.0.0-beta.106: - resolution: {integrity: sha512-WHqeHXyz8WR7XgUxf8yzz6JwE4985boduCwm/SW7FrWo71Y34Q6MG62tU/pVJwudDnr/FP4Gv++8XdAr7YUeDg==} + '@payloadcms/translations@3.0.0-beta.106': dependencies: date-fns: 3.3.1 - dev: false - /@payloadcms/ui@3.0.0-beta.106(monaco-editor@0.51.0)(next@15.0.0-canary.104)(payload@3.0.0-beta.106)(react-dom@19.0.0-rc-06d0b89e-20240801)(react@19.0.0-rc-06d0b89e-20240801)(types-react@19.0.0-rc.0)(typescript@5.6.2): - resolution: {integrity: sha512-p0SDLg6itm5Dvy+gUJ9JJsb/v2uxeBoWrnG93CmLwQrzO4/p3rX2hDTS42PzhmvD4br0e+Qw1r9p3SjXmRRw3A==} - engines: {node: ^18.20.2 || >=20.9.0} - peerDependencies: - next: ^15.0.0-canary.104 - payload: 3.0.0-beta.106 - react: ^19.0.0 || ^19.0.0-rc-06d0b89e-20240801 - react-dom: ^19.0.0 || ^19.0.0-rc-06d0b89e-20240801 + '@payloadcms/ui@3.0.0-beta.106(monaco-editor@0.51.0)(next@15.0.0-canary.104)(payload@3.0.0-beta.106)(react-dom@19.0.0-rc-06d0b89e-20240801)(react@19.0.0-rc-06d0b89e-20240801)(types-react@19.0.0-rc.0)(typescript@5.6.2)': dependencies: '@dnd-kit/core': 6.0.8(react-dom@19.0.0-rc-06d0b89e-20240801)(react@19.0.0-rc-06d0b89e-20240801) '@dnd-kit/sortable': 7.0.2(@dnd-kit/core@6.0.8)(react@19.0.0-rc-06d0b89e-20240801) @@ -2416,54 +6046,23 @@ packages: - monaco-editor - supports-color - typescript - dev: false - /@pkgjs/parseargs@0.11.0: - resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} - engines: {node: '>=14'} - requiresBuild: true + '@pkgjs/parseargs@0.11.0': optional: true - /@radix-ui/number@1.1.0: - resolution: {integrity: sha512-V3gRzhVNU1ldS5XhAPTom1fOIo4ccrjjJgmE+LI2h/WaFpHmx0MQApT+KZHnx8abG6Avtfcz4WoEciMnpFT3HQ==} - dev: false + '@radix-ui/number@1.1.0': {} - /@radix-ui/primitive@1.1.0: - resolution: {integrity: sha512-4Z8dn6Upk0qk4P74xBhZ6Hd/w0mPEzOOLxy4xiPXOXqjF7jZS0VAKk7/x/H6FyY2zCkYJqePf1G5KmkmNJ4RBA==} - dev: false + '@radix-ui/primitive@1.1.0': {} - /@radix-ui/react-arrow@1.1.0(react-dom@19.0.0-rc-06d0b89e-20240801)(react@19.0.0-rc-06d0b89e-20240801)(types-react-dom@19.0.0-rc.0)(types-react@19.0.0-rc.0): - resolution: {integrity: sha512-FmlW1rCg7hBpEBwFbjHwCW6AmWLQM6g/v0Sn8XbP9NvmSZ2San1FpQeyPtufzOMSIx7Y4dzjlHoifhp+7NkZhw==} - peerDependencies: - '@types/react': npm:types-react@19.0.0-rc.0 - '@types/react-dom': npm:types-react-dom@19.0.0-rc.0 - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true + '@radix-ui/react-arrow@1.1.0(react-dom@19.0.0-rc-06d0b89e-20240801)(react@19.0.0-rc-06d0b89e-20240801)(types-react-dom@19.0.0-rc.0)(types-react@19.0.0-rc.0)': dependencies: '@radix-ui/react-primitive': 2.0.0(react-dom@19.0.0-rc-06d0b89e-20240801)(react@19.0.0-rc-06d0b89e-20240801)(types-react-dom@19.0.0-rc.0)(types-react@19.0.0-rc.0) - '@types/react': /types-react@19.0.0-rc.0 - '@types/react-dom': /types-react-dom@19.0.0-rc.0 + '@types/react': types-react@19.0.0-rc.0 + '@types/react-dom': types-react-dom@19.0.0-rc.0 react: 19.0.0-rc-06d0b89e-20240801 react-dom: 19.0.0-rc-06d0b89e-20240801(react@19.0.0-rc-06d0b89e-20240801) - dev: false - /@radix-ui/react-checkbox@1.1.1(react-dom@19.0.0-rc-06d0b89e-20240801)(react@19.0.0-rc-06d0b89e-20240801)(types-react-dom@19.0.0-rc.0)(types-react@19.0.0-rc.0): - resolution: {integrity: sha512-0i/EKJ222Afa1FE0C6pNJxDq1itzcl3HChE9DwskA4th4KRse8ojx8a1nVcOjwJdbpDLcz7uol77yYnQNMHdKw==} - peerDependencies: - '@types/react': npm:types-react@19.0.0-rc.0 - '@types/react-dom': npm:types-react-dom@19.0.0-rc.0 - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true + '@radix-ui/react-checkbox@1.1.1(react-dom@19.0.0-rc-06d0b89e-20240801)(react@19.0.0-rc-06d0b89e-20240801)(types-react-dom@19.0.0-rc.0)(types-react@19.0.0-rc.0)': dependencies: '@radix-ui/primitive': 1.1.0 '@radix-ui/react-compose-refs': 1.1.0(react@19.0.0-rc-06d0b89e-20240801)(types-react@19.0.0-rc.0) @@ -2473,179 +6072,79 @@ packages: '@radix-ui/react-use-controllable-state': 1.1.0(react@19.0.0-rc-06d0b89e-20240801)(types-react@19.0.0-rc.0) '@radix-ui/react-use-previous': 1.1.0(react@19.0.0-rc-06d0b89e-20240801)(types-react@19.0.0-rc.0) '@radix-ui/react-use-size': 1.1.0(react@19.0.0-rc-06d0b89e-20240801)(types-react@19.0.0-rc.0) - '@types/react': /types-react@19.0.0-rc.0 - '@types/react-dom': /types-react-dom@19.0.0-rc.0 + '@types/react': types-react@19.0.0-rc.0 + '@types/react-dom': types-react-dom@19.0.0-rc.0 react: 19.0.0-rc-06d0b89e-20240801 react-dom: 19.0.0-rc-06d0b89e-20240801(react@19.0.0-rc-06d0b89e-20240801) - dev: false - /@radix-ui/react-collection@1.1.0(react-dom@19.0.0-rc-06d0b89e-20240801)(react@19.0.0-rc-06d0b89e-20240801)(types-react-dom@19.0.0-rc.0)(types-react@19.0.0-rc.0): - resolution: {integrity: sha512-GZsZslMJEyo1VKm5L1ZJY8tGDxZNPAoUeQUIbKeJfoi7Q4kmig5AsgLMYYuyYbfjd8fBmFORAIwYAkXMnXZgZw==} - peerDependencies: - '@types/react': npm:types-react@19.0.0-rc.0 - '@types/react-dom': npm:types-react-dom@19.0.0-rc.0 - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true + '@radix-ui/react-collection@1.1.0(react-dom@19.0.0-rc-06d0b89e-20240801)(react@19.0.0-rc-06d0b89e-20240801)(types-react-dom@19.0.0-rc.0)(types-react@19.0.0-rc.0)': dependencies: '@radix-ui/react-compose-refs': 1.1.0(react@19.0.0-rc-06d0b89e-20240801)(types-react@19.0.0-rc.0) '@radix-ui/react-context': 1.1.0(react@19.0.0-rc-06d0b89e-20240801)(types-react@19.0.0-rc.0) '@radix-ui/react-primitive': 2.0.0(react-dom@19.0.0-rc-06d0b89e-20240801)(react@19.0.0-rc-06d0b89e-20240801)(types-react-dom@19.0.0-rc.0)(types-react@19.0.0-rc.0) '@radix-ui/react-slot': 1.1.0(react@19.0.0-rc-06d0b89e-20240801)(types-react@19.0.0-rc.0) - '@types/react': /types-react@19.0.0-rc.0 - '@types/react-dom': /types-react-dom@19.0.0-rc.0 + '@types/react': types-react@19.0.0-rc.0 + '@types/react-dom': types-react-dom@19.0.0-rc.0 react: 19.0.0-rc-06d0b89e-20240801 react-dom: 19.0.0-rc-06d0b89e-20240801(react@19.0.0-rc-06d0b89e-20240801) - dev: false - /@radix-ui/react-compose-refs@1.1.0(react@19.0.0-rc-06d0b89e-20240801)(types-react@19.0.0-rc.0): - resolution: {integrity: sha512-b4inOtiaOnYf9KWyO3jAeeCG6FeyfY6ldiEPanbUjWd+xIk5wZeHa8yVwmrJ2vderhu/BQvzCrJI0lHd+wIiqw==} - peerDependencies: - '@types/react': npm:types-react@19.0.0-rc.0 - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true + '@radix-ui/react-compose-refs@1.1.0(react@19.0.0-rc-06d0b89e-20240801)(types-react@19.0.0-rc.0)': dependencies: - '@types/react': /types-react@19.0.0-rc.0 + '@types/react': types-react@19.0.0-rc.0 react: 19.0.0-rc-06d0b89e-20240801 - dev: false - /@radix-ui/react-context@1.1.0(react@19.0.0-rc-06d0b89e-20240801)(types-react@19.0.0-rc.0): - resolution: {integrity: sha512-OKrckBy+sMEgYM/sMmqmErVn0kZqrHPJze+Ql3DzYsDDp0hl0L62nx/2122/Bvps1qz645jlcu2tD9lrRSdf8A==} - peerDependencies: - '@types/react': npm:types-react@19.0.0-rc.0 - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true + '@radix-ui/react-context@1.1.0(react@19.0.0-rc-06d0b89e-20240801)(types-react@19.0.0-rc.0)': dependencies: - '@types/react': /types-react@19.0.0-rc.0 + '@types/react': types-react@19.0.0-rc.0 react: 19.0.0-rc-06d0b89e-20240801 - dev: false - /@radix-ui/react-direction@1.1.0(react@19.0.0-rc-06d0b89e-20240801)(types-react@19.0.0-rc.0): - resolution: {integrity: sha512-BUuBvgThEiAXh2DWu93XsT+a3aWrGqolGlqqw5VU1kG7p/ZH2cuDlM1sRLNnY3QcBS69UIz2mcKhMxDsdewhjg==} - peerDependencies: - '@types/react': npm:types-react@19.0.0-rc.0 - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true + '@radix-ui/react-direction@1.1.0(react@19.0.0-rc-06d0b89e-20240801)(types-react@19.0.0-rc.0)': dependencies: - '@types/react': /types-react@19.0.0-rc.0 + '@types/react': types-react@19.0.0-rc.0 react: 19.0.0-rc-06d0b89e-20240801 - dev: false - /@radix-ui/react-dismissable-layer@1.1.0(react-dom@19.0.0-rc-06d0b89e-20240801)(react@19.0.0-rc-06d0b89e-20240801)(types-react-dom@19.0.0-rc.0)(types-react@19.0.0-rc.0): - resolution: {integrity: sha512-/UovfmmXGptwGcBQawLzvn2jOfM0t4z3/uKffoBlj724+n3FvBbZ7M0aaBOmkp6pqFYpO4yx8tSVJjx3Fl2jig==} - peerDependencies: - '@types/react': npm:types-react@19.0.0-rc.0 - '@types/react-dom': npm:types-react-dom@19.0.0-rc.0 - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true + '@radix-ui/react-dismissable-layer@1.1.0(react-dom@19.0.0-rc-06d0b89e-20240801)(react@19.0.0-rc-06d0b89e-20240801)(types-react-dom@19.0.0-rc.0)(types-react@19.0.0-rc.0)': dependencies: '@radix-ui/primitive': 1.1.0 '@radix-ui/react-compose-refs': 1.1.0(react@19.0.0-rc-06d0b89e-20240801)(types-react@19.0.0-rc.0) '@radix-ui/react-primitive': 2.0.0(react-dom@19.0.0-rc-06d0b89e-20240801)(react@19.0.0-rc-06d0b89e-20240801)(types-react-dom@19.0.0-rc.0)(types-react@19.0.0-rc.0) '@radix-ui/react-use-callback-ref': 1.1.0(react@19.0.0-rc-06d0b89e-20240801)(types-react@19.0.0-rc.0) '@radix-ui/react-use-escape-keydown': 1.1.0(react@19.0.0-rc-06d0b89e-20240801)(types-react@19.0.0-rc.0) - '@types/react': /types-react@19.0.0-rc.0 - '@types/react-dom': /types-react-dom@19.0.0-rc.0 + '@types/react': types-react@19.0.0-rc.0 + '@types/react-dom': types-react-dom@19.0.0-rc.0 react: 19.0.0-rc-06d0b89e-20240801 react-dom: 19.0.0-rc-06d0b89e-20240801(react@19.0.0-rc-06d0b89e-20240801) - dev: false - /@radix-ui/react-focus-guards@1.1.0(react@19.0.0-rc-06d0b89e-20240801)(types-react@19.0.0-rc.0): - resolution: {integrity: sha512-w6XZNUPVv6xCpZUqb/yN9DL6auvpGX3C/ee6Hdi16v2UUy25HV2Q5bcflsiDyT/g5RwbPQ/GIT1vLkeRb+ITBw==} - peerDependencies: - '@types/react': npm:types-react@19.0.0-rc.0 - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true + '@radix-ui/react-focus-guards@1.1.0(react@19.0.0-rc-06d0b89e-20240801)(types-react@19.0.0-rc.0)': dependencies: - '@types/react': /types-react@19.0.0-rc.0 + '@types/react': types-react@19.0.0-rc.0 react: 19.0.0-rc-06d0b89e-20240801 - dev: false - /@radix-ui/react-focus-scope@1.1.0(react-dom@19.0.0-rc-06d0b89e-20240801)(react@19.0.0-rc-06d0b89e-20240801)(types-react-dom@19.0.0-rc.0)(types-react@19.0.0-rc.0): - resolution: {integrity: sha512-200UD8zylvEyL8Bx+z76RJnASR2gRMuxlgFCPAe/Q/679a/r0eK3MBVYMb7vZODZcffZBdob1EGnky78xmVvcA==} - peerDependencies: - '@types/react': npm:types-react@19.0.0-rc.0 - '@types/react-dom': npm:types-react-dom@19.0.0-rc.0 - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true + '@radix-ui/react-focus-scope@1.1.0(react-dom@19.0.0-rc-06d0b89e-20240801)(react@19.0.0-rc-06d0b89e-20240801)(types-react-dom@19.0.0-rc.0)(types-react@19.0.0-rc.0)': dependencies: '@radix-ui/react-compose-refs': 1.1.0(react@19.0.0-rc-06d0b89e-20240801)(types-react@19.0.0-rc.0) '@radix-ui/react-primitive': 2.0.0(react-dom@19.0.0-rc-06d0b89e-20240801)(react@19.0.0-rc-06d0b89e-20240801)(types-react-dom@19.0.0-rc.0)(types-react@19.0.0-rc.0) '@radix-ui/react-use-callback-ref': 1.1.0(react@19.0.0-rc-06d0b89e-20240801)(types-react@19.0.0-rc.0) - '@types/react': /types-react@19.0.0-rc.0 - '@types/react-dom': /types-react-dom@19.0.0-rc.0 + '@types/react': types-react@19.0.0-rc.0 + '@types/react-dom': types-react-dom@19.0.0-rc.0 react: 19.0.0-rc-06d0b89e-20240801 react-dom: 19.0.0-rc-06d0b89e-20240801(react@19.0.0-rc-06d0b89e-20240801) - dev: false - /@radix-ui/react-id@1.1.0(react@19.0.0-rc-06d0b89e-20240801)(types-react@19.0.0-rc.0): - resolution: {integrity: sha512-EJUrI8yYh7WOjNOqpoJaf1jlFIH2LvtgAl+YcFqNCa+4hj64ZXmPkAKOFs/ukjz3byN6bdb/AVUqHkI8/uWWMA==} - peerDependencies: - '@types/react': npm:types-react@19.0.0-rc.0 - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true + '@radix-ui/react-id@1.1.0(react@19.0.0-rc-06d0b89e-20240801)(types-react@19.0.0-rc.0)': dependencies: '@radix-ui/react-use-layout-effect': 1.1.0(react@19.0.0-rc-06d0b89e-20240801)(types-react@19.0.0-rc.0) - '@types/react': /types-react@19.0.0-rc.0 + '@types/react': types-react@19.0.0-rc.0 react: 19.0.0-rc-06d0b89e-20240801 - dev: false - /@radix-ui/react-label@2.1.0(react-dom@19.0.0-rc-06d0b89e-20240801)(react@19.0.0-rc-06d0b89e-20240801)(types-react-dom@19.0.0-rc.0)(types-react@19.0.0-rc.0): - resolution: {integrity: sha512-peLblDlFw/ngk3UWq0VnYaOLy6agTZZ+MUO/WhVfm14vJGML+xH4FAl2XQGLqdefjNb7ApRg6Yn7U42ZhmYXdw==} - peerDependencies: - '@types/react': npm:types-react@19.0.0-rc.0 - '@types/react-dom': npm:types-react-dom@19.0.0-rc.0 - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true + '@radix-ui/react-label@2.1.0(react-dom@19.0.0-rc-06d0b89e-20240801)(react@19.0.0-rc-06d0b89e-20240801)(types-react-dom@19.0.0-rc.0)(types-react@19.0.0-rc.0)': dependencies: '@radix-ui/react-primitive': 2.0.0(react-dom@19.0.0-rc-06d0b89e-20240801)(react@19.0.0-rc-06d0b89e-20240801)(types-react-dom@19.0.0-rc.0)(types-react@19.0.0-rc.0) - '@types/react': /types-react@19.0.0-rc.0 - '@types/react-dom': /types-react-dom@19.0.0-rc.0 + '@types/react': types-react@19.0.0-rc.0 + '@types/react-dom': types-react-dom@19.0.0-rc.0 react: 19.0.0-rc-06d0b89e-20240801 react-dom: 19.0.0-rc-06d0b89e-20240801(react@19.0.0-rc-06d0b89e-20240801) - dev: false - /@radix-ui/react-popper@1.2.0(react-dom@19.0.0-rc-06d0b89e-20240801)(react@19.0.0-rc-06d0b89e-20240801)(types-react-dom@19.0.0-rc.0)(types-react@19.0.0-rc.0): - resolution: {integrity: sha512-ZnRMshKF43aBxVWPWvbj21+7TQCvhuULWJ4gNIKYpRlQt5xGRhLx66tMp8pya2UkGHTSlhpXwmjqltDYHhw7Vg==} - peerDependencies: - '@types/react': npm:types-react@19.0.0-rc.0 - '@types/react-dom': npm:types-react-dom@19.0.0-rc.0 - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true + '@radix-ui/react-popper@1.2.0(react-dom@19.0.0-rc-06d0b89e-20240801)(react@19.0.0-rc-06d0b89e-20240801)(types-react-dom@19.0.0-rc.0)(types-react@19.0.0-rc.0)': dependencies: '@floating-ui/react-dom': 2.1.2(react-dom@19.0.0-rc-06d0b89e-20240801)(react@19.0.0-rc-06d0b89e-20240801) '@radix-ui/react-arrow': 1.1.0(react-dom@19.0.0-rc-06d0b89e-20240801)(react@19.0.0-rc-06d0b89e-20240801)(types-react-dom@19.0.0-rc.0)(types-react@19.0.0-rc.0) @@ -2657,86 +6156,38 @@ packages: '@radix-ui/react-use-rect': 1.1.0(react@19.0.0-rc-06d0b89e-20240801)(types-react@19.0.0-rc.0) '@radix-ui/react-use-size': 1.1.0(react@19.0.0-rc-06d0b89e-20240801)(types-react@19.0.0-rc.0) '@radix-ui/rect': 1.1.0 - '@types/react': /types-react@19.0.0-rc.0 - '@types/react-dom': /types-react-dom@19.0.0-rc.0 + '@types/react': types-react@19.0.0-rc.0 + '@types/react-dom': types-react-dom@19.0.0-rc.0 react: 19.0.0-rc-06d0b89e-20240801 react-dom: 19.0.0-rc-06d0b89e-20240801(react@19.0.0-rc-06d0b89e-20240801) - dev: false - /@radix-ui/react-portal@1.1.1(react-dom@19.0.0-rc-06d0b89e-20240801)(react@19.0.0-rc-06d0b89e-20240801)(types-react-dom@19.0.0-rc.0)(types-react@19.0.0-rc.0): - resolution: {integrity: sha512-A3UtLk85UtqhzFqtoC8Q0KvR2GbXF3mtPgACSazajqq6A41mEQgo53iPzY4i6BwDxlIFqWIhiQ2G729n+2aw/g==} - peerDependencies: - '@types/react': npm:types-react@19.0.0-rc.0 - '@types/react-dom': npm:types-react-dom@19.0.0-rc.0 - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true + '@radix-ui/react-portal@1.1.1(react-dom@19.0.0-rc-06d0b89e-20240801)(react@19.0.0-rc-06d0b89e-20240801)(types-react-dom@19.0.0-rc.0)(types-react@19.0.0-rc.0)': dependencies: '@radix-ui/react-primitive': 2.0.0(react-dom@19.0.0-rc-06d0b89e-20240801)(react@19.0.0-rc-06d0b89e-20240801)(types-react-dom@19.0.0-rc.0)(types-react@19.0.0-rc.0) '@radix-ui/react-use-layout-effect': 1.1.0(react@19.0.0-rc-06d0b89e-20240801)(types-react@19.0.0-rc.0) - '@types/react': /types-react@19.0.0-rc.0 - '@types/react-dom': /types-react-dom@19.0.0-rc.0 + '@types/react': types-react@19.0.0-rc.0 + '@types/react-dom': types-react-dom@19.0.0-rc.0 react: 19.0.0-rc-06d0b89e-20240801 react-dom: 19.0.0-rc-06d0b89e-20240801(react@19.0.0-rc-06d0b89e-20240801) - dev: false - /@radix-ui/react-presence@1.1.0(react-dom@19.0.0-rc-06d0b89e-20240801)(react@19.0.0-rc-06d0b89e-20240801)(types-react-dom@19.0.0-rc.0)(types-react@19.0.0-rc.0): - resolution: {integrity: sha512-Gq6wuRN/asf9H/E/VzdKoUtT8GC9PQc9z40/vEr0VCJ4u5XvvhWIrSsCB6vD2/cH7ugTdSfYq9fLJCcM00acrQ==} - peerDependencies: - '@types/react': npm:types-react@19.0.0-rc.0 - '@types/react-dom': npm:types-react-dom@19.0.0-rc.0 - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true + '@radix-ui/react-presence@1.1.0(react-dom@19.0.0-rc-06d0b89e-20240801)(react@19.0.0-rc-06d0b89e-20240801)(types-react-dom@19.0.0-rc.0)(types-react@19.0.0-rc.0)': dependencies: '@radix-ui/react-compose-refs': 1.1.0(react@19.0.0-rc-06d0b89e-20240801)(types-react@19.0.0-rc.0) '@radix-ui/react-use-layout-effect': 1.1.0(react@19.0.0-rc-06d0b89e-20240801)(types-react@19.0.0-rc.0) - '@types/react': /types-react@19.0.0-rc.0 - '@types/react-dom': /types-react-dom@19.0.0-rc.0 + '@types/react': types-react@19.0.0-rc.0 + '@types/react-dom': types-react-dom@19.0.0-rc.0 react: 19.0.0-rc-06d0b89e-20240801 react-dom: 19.0.0-rc-06d0b89e-20240801(react@19.0.0-rc-06d0b89e-20240801) - dev: false - /@radix-ui/react-primitive@2.0.0(react-dom@19.0.0-rc-06d0b89e-20240801)(react@19.0.0-rc-06d0b89e-20240801)(types-react-dom@19.0.0-rc.0)(types-react@19.0.0-rc.0): - resolution: {integrity: sha512-ZSpFm0/uHa8zTvKBDjLFWLo8dkr4MBsiDLz0g3gMUwqgLHz9rTaRRGYDgvZPtBJgYCBKXkS9fzmoySgr8CO6Cw==} - peerDependencies: - '@types/react': npm:types-react@19.0.0-rc.0 - '@types/react-dom': npm:types-react-dom@19.0.0-rc.0 - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true + '@radix-ui/react-primitive@2.0.0(react-dom@19.0.0-rc-06d0b89e-20240801)(react@19.0.0-rc-06d0b89e-20240801)(types-react-dom@19.0.0-rc.0)(types-react@19.0.0-rc.0)': dependencies: '@radix-ui/react-slot': 1.1.0(react@19.0.0-rc-06d0b89e-20240801)(types-react@19.0.0-rc.0) - '@types/react': /types-react@19.0.0-rc.0 - '@types/react-dom': /types-react-dom@19.0.0-rc.0 + '@types/react': types-react@19.0.0-rc.0 + '@types/react-dom': types-react-dom@19.0.0-rc.0 react: 19.0.0-rc-06d0b89e-20240801 react-dom: 19.0.0-rc-06d0b89e-20240801(react@19.0.0-rc-06d0b89e-20240801) - dev: false - /@radix-ui/react-select@2.1.1(react-dom@19.0.0-rc-06d0b89e-20240801)(react@19.0.0-rc-06d0b89e-20240801)(types-react-dom@19.0.0-rc.0)(types-react@19.0.0-rc.0): - resolution: {integrity: sha512-8iRDfyLtzxlprOo9IicnzvpsO1wNCkuwzzCM+Z5Rb5tNOpCdMvcc2AkzX0Fz+Tz9v6NJ5B/7EEgyZveo4FBRfQ==} - peerDependencies: - '@types/react': npm:types-react@19.0.0-rc.0 - '@types/react-dom': npm:types-react-dom@19.0.0-rc.0 - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true + '@radix-ui/react-select@2.1.1(react-dom@19.0.0-rc-06d0b89e-20240801)(react@19.0.0-rc-06d0b89e-20240801)(types-react-dom@19.0.0-rc.0)(types-react@19.0.0-rc.0)': dependencies: '@radix-ui/number': 1.1.0 '@radix-ui/primitive': 1.1.0 @@ -2757,207 +6208,107 @@ packages: '@radix-ui/react-use-layout-effect': 1.1.0(react@19.0.0-rc-06d0b89e-20240801)(types-react@19.0.0-rc.0) '@radix-ui/react-use-previous': 1.1.0(react@19.0.0-rc-06d0b89e-20240801)(types-react@19.0.0-rc.0) '@radix-ui/react-visually-hidden': 1.1.0(react-dom@19.0.0-rc-06d0b89e-20240801)(react@19.0.0-rc-06d0b89e-20240801)(types-react-dom@19.0.0-rc.0)(types-react@19.0.0-rc.0) - '@types/react': /types-react@19.0.0-rc.0 - '@types/react-dom': /types-react-dom@19.0.0-rc.0 + '@types/react': types-react@19.0.0-rc.0 + '@types/react-dom': types-react-dom@19.0.0-rc.0 aria-hidden: 1.2.4 react: 19.0.0-rc-06d0b89e-20240801 react-dom: 19.0.0-rc-06d0b89e-20240801(react@19.0.0-rc-06d0b89e-20240801) react-remove-scroll: 2.5.7(react@19.0.0-rc-06d0b89e-20240801)(types-react@19.0.0-rc.0) - dev: false - /@radix-ui/react-slot@1.1.0(react@19.0.0-rc-06d0b89e-20240801)(types-react@19.0.0-rc.0): - resolution: {integrity: sha512-FUCf5XMfmW4dtYl69pdS4DbxKy8nj4M7SafBgPllysxmdachynNflAdp/gCsnYWNDnge6tI9onzMp5ARYc1KNw==} - peerDependencies: - '@types/react': npm:types-react@19.0.0-rc.0 - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true + '@radix-ui/react-slot@1.1.0(react@19.0.0-rc-06d0b89e-20240801)(types-react@19.0.0-rc.0)': dependencies: '@radix-ui/react-compose-refs': 1.1.0(react@19.0.0-rc-06d0b89e-20240801)(types-react@19.0.0-rc.0) - '@types/react': /types-react@19.0.0-rc.0 + '@types/react': types-react@19.0.0-rc.0 react: 19.0.0-rc-06d0b89e-20240801 - dev: false - /@radix-ui/react-use-callback-ref@1.1.0(react@19.0.0-rc-06d0b89e-20240801)(types-react@19.0.0-rc.0): - resolution: {integrity: sha512-CasTfvsy+frcFkbXtSJ2Zu9JHpN8TYKxkgJGWbjiZhFivxaeW7rMeZt7QELGVLaYVfFMsKHjb7Ak0nMEe+2Vfw==} - peerDependencies: - '@types/react': npm:types-react@19.0.0-rc.0 - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true + '@radix-ui/react-use-callback-ref@1.1.0(react@19.0.0-rc-06d0b89e-20240801)(types-react@19.0.0-rc.0)': dependencies: - '@types/react': /types-react@19.0.0-rc.0 + '@types/react': types-react@19.0.0-rc.0 react: 19.0.0-rc-06d0b89e-20240801 - dev: false - /@radix-ui/react-use-controllable-state@1.1.0(react@19.0.0-rc-06d0b89e-20240801)(types-react@19.0.0-rc.0): - resolution: {integrity: sha512-MtfMVJiSr2NjzS0Aa90NPTnvTSg6C/JLCV7ma0W6+OMV78vd8OyRpID+Ng9LxzsPbLeuBnWBA1Nq30AtBIDChw==} - peerDependencies: - '@types/react': npm:types-react@19.0.0-rc.0 - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true + '@radix-ui/react-use-controllable-state@1.1.0(react@19.0.0-rc-06d0b89e-20240801)(types-react@19.0.0-rc.0)': dependencies: '@radix-ui/react-use-callback-ref': 1.1.0(react@19.0.0-rc-06d0b89e-20240801)(types-react@19.0.0-rc.0) - '@types/react': /types-react@19.0.0-rc.0 + '@types/react': types-react@19.0.0-rc.0 react: 19.0.0-rc-06d0b89e-20240801 - dev: false - /@radix-ui/react-use-escape-keydown@1.1.0(react@19.0.0-rc-06d0b89e-20240801)(types-react@19.0.0-rc.0): - resolution: {integrity: sha512-L7vwWlR1kTTQ3oh7g1O0CBF3YCyyTj8NmhLR+phShpyA50HCfBFKVJTpshm9PzLiKmehsrQzTYTpX9HvmC9rhw==} - peerDependencies: - '@types/react': npm:types-react@19.0.0-rc.0 - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true + '@radix-ui/react-use-escape-keydown@1.1.0(react@19.0.0-rc-06d0b89e-20240801)(types-react@19.0.0-rc.0)': dependencies: '@radix-ui/react-use-callback-ref': 1.1.0(react@19.0.0-rc-06d0b89e-20240801)(types-react@19.0.0-rc.0) - '@types/react': /types-react@19.0.0-rc.0 + '@types/react': types-react@19.0.0-rc.0 react: 19.0.0-rc-06d0b89e-20240801 - dev: false - /@radix-ui/react-use-layout-effect@1.1.0(react@19.0.0-rc-06d0b89e-20240801)(types-react@19.0.0-rc.0): - resolution: {integrity: sha512-+FPE0rOdziWSrH9athwI1R0HDVbWlEhd+FR+aSDk4uWGmSJ9Z54sdZVDQPZAinJhJXwfT+qnj969mCsT2gfm5w==} - peerDependencies: - '@types/react': npm:types-react@19.0.0-rc.0 - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true + '@radix-ui/react-use-layout-effect@1.1.0(react@19.0.0-rc-06d0b89e-20240801)(types-react@19.0.0-rc.0)': dependencies: - '@types/react': /types-react@19.0.0-rc.0 + '@types/react': types-react@19.0.0-rc.0 react: 19.0.0-rc-06d0b89e-20240801 - dev: false - /@radix-ui/react-use-previous@1.1.0(react@19.0.0-rc-06d0b89e-20240801)(types-react@19.0.0-rc.0): - resolution: {integrity: sha512-Z/e78qg2YFnnXcW88A4JmTtm4ADckLno6F7OXotmkQfeuCVaKuYzqAATPhVzl3delXE7CxIV8shofPn3jPc5Og==} - peerDependencies: - '@types/react': npm:types-react@19.0.0-rc.0 - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true + '@radix-ui/react-use-previous@1.1.0(react@19.0.0-rc-06d0b89e-20240801)(types-react@19.0.0-rc.0)': dependencies: - '@types/react': /types-react@19.0.0-rc.0 + '@types/react': types-react@19.0.0-rc.0 react: 19.0.0-rc-06d0b89e-20240801 - dev: false - /@radix-ui/react-use-rect@1.1.0(react@19.0.0-rc-06d0b89e-20240801)(types-react@19.0.0-rc.0): - resolution: {integrity: sha512-0Fmkebhr6PiseyZlYAOtLS+nb7jLmpqTrJyv61Pe68MKYW6OWdRE2kI70TaYY27u7H0lajqM3hSMMLFq18Z7nQ==} - peerDependencies: - '@types/react': npm:types-react@19.0.0-rc.0 - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true + '@radix-ui/react-use-rect@1.1.0(react@19.0.0-rc-06d0b89e-20240801)(types-react@19.0.0-rc.0)': dependencies: '@radix-ui/rect': 1.1.0 - '@types/react': /types-react@19.0.0-rc.0 + '@types/react': types-react@19.0.0-rc.0 react: 19.0.0-rc-06d0b89e-20240801 - dev: false - /@radix-ui/react-use-size@1.1.0(react@19.0.0-rc-06d0b89e-20240801)(types-react@19.0.0-rc.0): - resolution: {integrity: sha512-XW3/vWuIXHa+2Uwcc2ABSfcCledmXhhQPlGbfcRXbiUQI5Icjcg19BGCZVKKInYbvUCut/ufbbLLPFC5cbb1hw==} - peerDependencies: - '@types/react': npm:types-react@19.0.0-rc.0 - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true + '@radix-ui/react-use-size@1.1.0(react@19.0.0-rc-06d0b89e-20240801)(types-react@19.0.0-rc.0)': dependencies: '@radix-ui/react-use-layout-effect': 1.1.0(react@19.0.0-rc-06d0b89e-20240801)(types-react@19.0.0-rc.0) - '@types/react': /types-react@19.0.0-rc.0 + '@types/react': types-react@19.0.0-rc.0 react: 19.0.0-rc-06d0b89e-20240801 - dev: false - /@radix-ui/react-visually-hidden@1.1.0(react-dom@19.0.0-rc-06d0b89e-20240801)(react@19.0.0-rc-06d0b89e-20240801)(types-react-dom@19.0.0-rc.0)(types-react@19.0.0-rc.0): - resolution: {integrity: sha512-N8MDZqtgCgG5S3aV60INAB475osJousYpZ4cTJ2cFbMpdHS5Y6loLTH8LPtkj2QN0x93J30HT/M3qJXM0+lyeQ==} - peerDependencies: - '@types/react': npm:types-react@19.0.0-rc.0 - '@types/react-dom': npm:types-react-dom@19.0.0-rc.0 - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true + '@radix-ui/react-visually-hidden@1.1.0(react-dom@19.0.0-rc-06d0b89e-20240801)(react@19.0.0-rc-06d0b89e-20240801)(types-react-dom@19.0.0-rc.0)(types-react@19.0.0-rc.0)': dependencies: '@radix-ui/react-primitive': 2.0.0(react-dom@19.0.0-rc-06d0b89e-20240801)(react@19.0.0-rc-06d0b89e-20240801)(types-react-dom@19.0.0-rc.0)(types-react@19.0.0-rc.0) - '@types/react': /types-react@19.0.0-rc.0 - '@types/react-dom': /types-react-dom@19.0.0-rc.0 + '@types/react': types-react@19.0.0-rc.0 + '@types/react-dom': types-react-dom@19.0.0-rc.0 react: 19.0.0-rc-06d0b89e-20240801 react-dom: 19.0.0-rc-06d0b89e-20240801(react@19.0.0-rc-06d0b89e-20240801) - dev: false - /@radix-ui/rect@1.1.0: - resolution: {integrity: sha512-A9+lCBZoaMJlVKcRBz2YByCG+Cp2t6nAnMnNba+XiWxnj6r4JUFqfsgwocMBZU9LPtdxC6wB56ySYpc7LQIoJg==} - dev: false + '@radix-ui/rect@1.1.0': {} - /@react-email/render@0.0.7: - resolution: {integrity: sha512-hMMhxk6TpOcDC5qnKzXPVJoVGEwfm+U5bGOPH+MyTTlx0F02RLQygcATBKsbP7aI/mvkmBAZoFbgPIHop7ovug==} - engines: {node: '>=16.0.0'} + '@react-email/render@0.0.7': dependencies: html-to-text: 9.0.3 pretty: 2.0.0 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - dev: false - /@rtsao/scc@1.1.0: - resolution: {integrity: sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==} - dev: true + '@rtsao/scc@1.1.0': {} - /@rushstack/eslint-patch@1.10.4: - resolution: {integrity: sha512-WJgX9nzTqknM393q1QJDJmoW28kUfEnybeTfVNcNAPnIx210RXm2DiXiHzfNPJNIUUb1tJnz/l4QGtJ30PgWmA==} - dev: true + '@rushstack/eslint-patch@1.10.4': {} - /@selderee/plugin-htmlparser2@0.10.0: - resolution: {integrity: sha512-gW69MEamZ4wk1OsOq1nG1jcyhXIQcnrsX5JwixVw/9xaiav8TCyjESAruu1Rz9yyInhgBXxkNwMeygKnN2uxNA==} + '@selderee/plugin-htmlparser2@0.10.0': dependencies: domhandler: 5.0.3 selderee: 0.10.0 - dev: false - /@smithy/abort-controller@3.1.4: - resolution: {integrity: sha512-VupaALAQlXViW3/enTf/f5l5JZYSAxoJL7f0nanhNNKnww6DGCg1oYIuNP78KDugnkwthBO6iEcym16HhWV8RQ==} - engines: {node: '>=16.0.0'} + '@smithy/abort-controller@3.1.4': dependencies: '@smithy/types': 3.4.2 tslib: 2.7.0 - dev: false - /@smithy/chunked-blob-reader-native@3.0.0: - resolution: {integrity: sha512-VDkpCYW+peSuM4zJip5WDfqvg2Mo/e8yxOv3VF1m11y7B8KKMKVFtmZWDe36Fvk8rGuWrPZHHXZ7rR7uM5yWyg==} + '@smithy/chunked-blob-reader-native@3.0.0': dependencies: '@smithy/util-base64': 3.0.0 tslib: 2.7.0 - dev: false - /@smithy/chunked-blob-reader@3.0.0: - resolution: {integrity: sha512-sbnURCwjF0gSToGlsBiAmd1lRCmSn72nu9axfJu5lIx6RUEgHu6GwTMbqCdhQSi0Pumcm5vFxsi9XWXb2mTaoA==} + '@smithy/chunked-blob-reader@3.0.0': dependencies: tslib: 2.7.0 - dev: false - /@smithy/config-resolver@3.0.8: - resolution: {integrity: sha512-Tv1obAC18XOd2OnDAjSWmmthzx6Pdeh63FbLin8MlPiuJ2ATpKkq0NcNOJFr0dO+JmZXnwu8FQxKJ3TKJ3Hulw==} - engines: {node: '>=16.0.0'} + '@smithy/config-resolver@3.0.8': dependencies: '@smithy/node-config-provider': 3.1.7 '@smithy/types': 3.4.2 '@smithy/util-config-provider': 3.0.0 '@smithy/util-middleware': 3.0.6 tslib: 2.7.0 - dev: false - /@smithy/core@2.4.3: - resolution: {integrity: sha512-4LTusLqFMRVQUfC3RNuTg6IzYTeJNpydRdTKq7J5wdEyIRQSu3rGIa3s80mgG2hhe6WOZl9IqTSo1pgbn6EHhA==} - engines: {node: '>=16.0.0'} + '@smithy/core@2.4.3': dependencies: '@smithy/middleware-endpoint': 3.1.3 '@smithy/middleware-retry': 3.0.18 @@ -2969,142 +6320,99 @@ packages: '@smithy/util-middleware': 3.0.6 '@smithy/util-utf8': 3.0.0 tslib: 2.7.0 - dev: false - /@smithy/credential-provider-imds@3.2.3: - resolution: {integrity: sha512-VoxMzSzdvkkjMJNE38yQgx4CfnmT+Z+5EUXkg4x7yag93eQkVQgZvN3XBSHC/ylfBbLbAtdu7flTCChX9I+mVg==} - engines: {node: '>=16.0.0'} + '@smithy/credential-provider-imds@3.2.3': dependencies: '@smithy/node-config-provider': 3.1.7 '@smithy/property-provider': 3.1.6 '@smithy/types': 3.4.2 '@smithy/url-parser': 3.0.6 tslib: 2.7.0 - dev: false - /@smithy/eventstream-codec@3.1.5: - resolution: {integrity: sha512-6pu+PT2r+5ZnWEV3vLV1DzyrpJ0TmehQlniIDCSpZg6+Ji2SfOI38EqUyQ+O8lotVElCrfVc9chKtSMe9cmCZQ==} + '@smithy/eventstream-codec@3.1.5': dependencies: '@aws-crypto/crc32': 5.2.0 '@smithy/types': 3.4.2 '@smithy/util-hex-encoding': 3.0.0 tslib: 2.7.0 - dev: false - /@smithy/eventstream-serde-browser@3.0.9: - resolution: {integrity: sha512-PiQLo6OQmZAotJweIcObL1H44gkvuJACKMNqpBBe5Rf2Ax1DOcGi/28+feZI7yTe1ERHlQQaGnm8sSkyDUgsMg==} - engines: {node: '>=16.0.0'} + '@smithy/eventstream-serde-browser@3.0.9': dependencies: '@smithy/eventstream-serde-universal': 3.0.8 '@smithy/types': 3.4.2 tslib: 2.7.0 - dev: false - /@smithy/eventstream-serde-config-resolver@3.0.6: - resolution: {integrity: sha512-iew15It+c7WfnVowWkt2a7cdPp533LFJnpjDQgfZQcxv2QiOcyEcea31mnrk5PVbgo0nNH3VbYGq7myw2q/F6A==} - engines: {node: '>=16.0.0'} + '@smithy/eventstream-serde-config-resolver@3.0.6': dependencies: '@smithy/types': 3.4.2 tslib: 2.7.0 - dev: false - /@smithy/eventstream-serde-node@3.0.8: - resolution: {integrity: sha512-6m+wI+fT0na+6oao6UqALVA38fsScCpoG5UO/A8ZSyGLnPM2i4MS1cFUhpuALgvLMxfYoTCh7qSeJa0aG4IWpQ==} - engines: {node: '>=16.0.0'} + '@smithy/eventstream-serde-node@3.0.8': dependencies: '@smithy/eventstream-serde-universal': 3.0.8 '@smithy/types': 3.4.2 tslib: 2.7.0 - dev: false - /@smithy/eventstream-serde-universal@3.0.8: - resolution: {integrity: sha512-09tqzIQ6e+7jLqGvRji1yJoDbL/zob0OFhq75edgStWErGLf16+yI5hRc/o9/YAybOhUZs/swpW2SPn892G5Gg==} - engines: {node: '>=16.0.0'} + '@smithy/eventstream-serde-universal@3.0.8': dependencies: '@smithy/eventstream-codec': 3.1.5 '@smithy/types': 3.4.2 tslib: 2.7.0 - dev: false - /@smithy/fetch-http-handler@3.2.7: - resolution: {integrity: sha512-Ra6IPI1spYLO+t62/3jQbodjOwAbto9wlpJdHZwkycm0Kit+GVpzHW/NMmSgY4rK1bjJ4qLAmCnaBzePO5Nkkg==} + '@smithy/fetch-http-handler@3.2.7': dependencies: '@smithy/protocol-http': 4.1.3 '@smithy/querystring-builder': 3.0.6 '@smithy/types': 3.4.2 '@smithy/util-base64': 3.0.0 tslib: 2.7.0 - dev: false - /@smithy/hash-blob-browser@3.1.5: - resolution: {integrity: sha512-Vi3eoNCmao4iKglS80ktYnBOIqZhjbDDwa1IIbF/VaJ8PsHnZTQ5wSicicPrU7nTI4JPFn92/txzWkh4GlK18Q==} + '@smithy/hash-blob-browser@3.1.5': dependencies: '@smithy/chunked-blob-reader': 3.0.0 '@smithy/chunked-blob-reader-native': 3.0.0 '@smithy/types': 3.4.2 tslib: 2.7.0 - dev: false - /@smithy/hash-node@3.0.6: - resolution: {integrity: sha512-c/FHEdKK/7DU2z6ZE91L36ahyXWayR3B+FzELjnYq7wH5YqIseM24V+pWCS9kFn1Ln8OFGTf+pyYPiHZuX0s/Q==} - engines: {node: '>=16.0.0'} + '@smithy/hash-node@3.0.6': dependencies: '@smithy/types': 3.4.2 '@smithy/util-buffer-from': 3.0.0 '@smithy/util-utf8': 3.0.0 tslib: 2.7.0 - dev: false - /@smithy/hash-stream-node@3.1.5: - resolution: {integrity: sha512-61CyFCzqN3VBfcnGX7mof/rkzLb8oHjm4Lr6ZwBIRpBssBb8d09ChrZAqinP2rUrA915BRNkq9NpJz18N7+3hQ==} - engines: {node: '>=16.0.0'} + '@smithy/hash-stream-node@3.1.5': dependencies: '@smithy/types': 3.4.2 '@smithy/util-utf8': 3.0.0 tslib: 2.7.0 - dev: false - /@smithy/invalid-dependency@3.0.6: - resolution: {integrity: sha512-czM7Ioq3s8pIXht7oD+vmgy4Wfb4XavU/k/irO8NdXFFOx7YAlsCCcKOh/lJD1mJSYQqiR7NmpZ9JviryD/7AQ==} + '@smithy/invalid-dependency@3.0.6': dependencies: '@smithy/types': 3.4.2 tslib: 2.7.0 - dev: false - /@smithy/is-array-buffer@2.2.0: - resolution: {integrity: sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA==} - engines: {node: '>=14.0.0'} + '@smithy/is-array-buffer@2.2.0': dependencies: tslib: 2.7.0 - dev: false - /@smithy/is-array-buffer@3.0.0: - resolution: {integrity: sha512-+Fsu6Q6C4RSJiy81Y8eApjEB5gVtM+oFKTffg+jSuwtvomJJrhUJBu2zS8wjXSgH/g1MKEWrzyChTBe6clb5FQ==} - engines: {node: '>=16.0.0'} + '@smithy/is-array-buffer@3.0.0': dependencies: tslib: 2.7.0 - dev: false - /@smithy/md5-js@3.0.6: - resolution: {integrity: sha512-Ze690T8O3M5SVbb70WormwrKzVf9QQRtIuxtJDgpUQDkmt+PtdYDetBbyCbF9ryupxLw6tgzWKgwffAShhVIXQ==} + '@smithy/md5-js@3.0.6': dependencies: '@smithy/types': 3.4.2 '@smithy/util-utf8': 3.0.0 tslib: 2.7.0 - dev: false - /@smithy/middleware-content-length@3.0.8: - resolution: {integrity: sha512-VuyszlSO49WKh3H9/kIO2kf07VUwGV80QRiaDxUfP8P8UKlokz381ETJvwLhwuypBYhLymCYyNhB3fLAGBX2og==} - engines: {node: '>=16.0.0'} + '@smithy/middleware-content-length@3.0.8': dependencies: '@smithy/protocol-http': 4.1.3 '@smithy/types': 3.4.2 tslib: 2.7.0 - dev: false - /@smithy/middleware-endpoint@3.1.3: - resolution: {integrity: sha512-KeM/OrK8MVFUsoJsmCN0MZMVPjKKLudn13xpgwIMpGTYpA8QZB2Xq5tJ+RE6iu3A6NhOI4VajDTwBsm8pwwrhg==} - engines: {node: '>=16.0.0'} + '@smithy/middleware-endpoint@3.1.3': dependencies: '@smithy/middleware-serde': 3.0.6 '@smithy/node-config-provider': 3.1.7 @@ -3113,11 +6421,8 @@ packages: '@smithy/url-parser': 3.0.6 '@smithy/util-middleware': 3.0.6 tslib: 2.7.0 - dev: false - /@smithy/middleware-retry@3.0.18: - resolution: {integrity: sha512-YU1o/vYob6vlqZdd97MN8cSXRToknLXhFBL3r+c9CZcnxkO/rgNZ++CfgX2vsmnEKvlqdi26+SRtSzlVp5z6Mg==} - engines: {node: '>=16.0.0'} + '@smithy/middleware-retry@3.0.18': dependencies: '@smithy/node-config-provider': 3.1.7 '@smithy/protocol-http': 4.1.3 @@ -3128,96 +6433,63 @@ packages: '@smithy/util-retry': 3.0.6 tslib: 2.7.0 uuid: 9.0.1 - dev: false - /@smithy/middleware-serde@3.0.6: - resolution: {integrity: sha512-KKTUSl1MzOM0MAjGbudeaVNtIDo+PpekTBkCNwvfZlKndodrnvRo+00USatiyLOc0ujjO9UydMRu3O9dYML7ag==} - engines: {node: '>=16.0.0'} + '@smithy/middleware-serde@3.0.6': dependencies: '@smithy/types': 3.4.2 tslib: 2.7.0 - dev: false - /@smithy/middleware-stack@3.0.6: - resolution: {integrity: sha512-2c0eSYhTQ8xQqHMcRxLMpadFbTXg6Zla5l0mwNftFCZMQmuhI7EbAJMx6R5eqfuV3YbJ3QGyS3d5uSmrHV8Khg==} - engines: {node: '>=16.0.0'} + '@smithy/middleware-stack@3.0.6': dependencies: '@smithy/types': 3.4.2 tslib: 2.7.0 - dev: false - /@smithy/node-config-provider@3.1.7: - resolution: {integrity: sha512-g3mfnC3Oo8pOI0dYuPXLtdW1WGVb3bR2tkV21GNkm0ZvQjLTtamXAwCWt/FCb0HGvKt3gHHmF1XerG0ICfalOg==} - engines: {node: '>=16.0.0'} + '@smithy/node-config-provider@3.1.7': dependencies: '@smithy/property-provider': 3.1.6 '@smithy/shared-ini-file-loader': 3.1.7 '@smithy/types': 3.4.2 tslib: 2.7.0 - dev: false - /@smithy/node-http-handler@3.2.2: - resolution: {integrity: sha512-42Cy4/oT2O+00aiG1iQ7Kd7rE6q8j7vI0gFfnMlUiATvyo8vefJkhb7O10qZY0jAqo5WZdUzfl9IV6wQ3iMBCg==} - engines: {node: '>=16.0.0'} + '@smithy/node-http-handler@3.2.2': dependencies: '@smithy/abort-controller': 3.1.4 '@smithy/protocol-http': 4.1.3 '@smithy/querystring-builder': 3.0.6 '@smithy/types': 3.4.2 tslib: 2.7.0 - dev: false - /@smithy/property-provider@3.1.6: - resolution: {integrity: sha512-NK3y/T7Q/Bw+Z8vsVs9MYIQ5v7gOX7clyrXcwhhIBQhbPgRl6JDrZbusO9qWDhcEus75Tg+VCxtIRfo3H76fpw==} - engines: {node: '>=16.0.0'} + '@smithy/property-provider@3.1.6': dependencies: '@smithy/types': 3.4.2 tslib: 2.7.0 - dev: false - /@smithy/protocol-http@4.1.3: - resolution: {integrity: sha512-GcbMmOYpH9iRqtC05RbRnc/0FssxSTHlmaNhYBTgSgNCYpdR3Kt88u5GAZTBmouzv+Zlj/VRv92J9ruuDeJuEw==} - engines: {node: '>=16.0.0'} + '@smithy/protocol-http@4.1.3': dependencies: '@smithy/types': 3.4.2 tslib: 2.7.0 - dev: false - /@smithy/querystring-builder@3.0.6: - resolution: {integrity: sha512-sQe08RunoObe+Usujn9+R2zrLuQERi3CWvRO3BvnoWSYUaIrLKuAIeY7cMeDax6xGyfIP3x/yFWbEKSXvOnvVg==} - engines: {node: '>=16.0.0'} + '@smithy/querystring-builder@3.0.6': dependencies: '@smithy/types': 3.4.2 '@smithy/util-uri-escape': 3.0.0 tslib: 2.7.0 - dev: false - /@smithy/querystring-parser@3.0.6: - resolution: {integrity: sha512-UJKw4LlEkytzz2Wq+uIdHf6qOtFfee/o7ruH0jF5I6UAuU+19r9QV7nU3P/uI0l6+oElRHmG/5cBBcGJrD7Ozg==} - engines: {node: '>=16.0.0'} + '@smithy/querystring-parser@3.0.6': dependencies: '@smithy/types': 3.4.2 tslib: 2.7.0 - dev: false - /@smithy/service-error-classification@3.0.6: - resolution: {integrity: sha512-53SpchU3+DUZrN7J6sBx9tBiCVGzsib2e4sc512Q7K9fpC5zkJKs6Z9s+qbMxSYrkEkle6hnMtrts7XNkMJJMg==} - engines: {node: '>=16.0.0'} + '@smithy/service-error-classification@3.0.6': dependencies: '@smithy/types': 3.4.2 - dev: false - /@smithy/shared-ini-file-loader@3.1.7: - resolution: {integrity: sha512-IA4K2qTJYXkF5OfVN4vsY1hfnUZjaslEE8Fsr/gGFza4TAC2A9NfnZuSY2srQIbt9bwtjHiAayrRVgKse4Q7fA==} - engines: {node: '>=16.0.0'} + '@smithy/shared-ini-file-loader@3.1.7': dependencies: '@smithy/types': 3.4.2 tslib: 2.7.0 - dev: false - /@smithy/signature-v4@4.1.3: - resolution: {integrity: sha512-YD2KYSCEEeFHcWZ1E3mLdAaHl8T/TANh6XwmocQ6nPcTdBfh4N5fusgnblnWDlnlU1/cUqEq3PiGi22GmT2Lkg==} - engines: {node: '>=16.0.0'} + '@smithy/signature-v4@4.1.3': dependencies: '@smithy/is-array-buffer': 3.0.0 '@smithy/protocol-http': 4.1.3 @@ -3227,11 +6499,8 @@ packages: '@smithy/util-uri-escape': 3.0.0 '@smithy/util-utf8': 3.0.0 tslib: 2.7.0 - dev: false - /@smithy/smithy-client@3.3.2: - resolution: {integrity: sha512-RKDfhF2MTwXl7jan5d7QfS9eCC6XJbO3H+EZAvLQN8A5in4ib2Ml4zoeLo57w9QrqFekBPcsoC2hW3Ekw4vQ9Q==} - engines: {node: '>=16.0.0'} + '@smithy/smithy-client@3.3.2': dependencies: '@smithy/middleware-endpoint': 3.1.3 '@smithy/middleware-stack': 3.0.6 @@ -3239,82 +6508,54 @@ packages: '@smithy/types': 3.4.2 '@smithy/util-stream': 3.1.6 tslib: 2.7.0 - dev: false - /@smithy/types@3.4.2: - resolution: {integrity: sha512-tHiFcfcVedVBHpmHUEUHOCCih8iZbIAYn9NvPsNzaPm/237I3imdDdZoOC8c87H5HBAVEa06tTgb+OcSWV9g5w==} - engines: {node: '>=16.0.0'} + '@smithy/types@3.4.2': dependencies: tslib: 2.7.0 - dev: false - /@smithy/url-parser@3.0.6: - resolution: {integrity: sha512-47Op/NU8Opt49KyGpHtVdnmmJMsp2hEwBdyjuFB9M2V5QVOwA7pBhhxKN5z6ztKGrMw76gd8MlbPuzzvaAncuQ==} + '@smithy/url-parser@3.0.6': dependencies: '@smithy/querystring-parser': 3.0.6 '@smithy/types': 3.4.2 tslib: 2.7.0 - dev: false - /@smithy/util-base64@3.0.0: - resolution: {integrity: sha512-Kxvoh5Qtt0CDsfajiZOCpJxgtPHXOKwmM+Zy4waD43UoEMA+qPxxa98aE/7ZhdnBFZFXMOiBR5xbcaMhLtznQQ==} - engines: {node: '>=16.0.0'} + '@smithy/util-base64@3.0.0': dependencies: '@smithy/util-buffer-from': 3.0.0 '@smithy/util-utf8': 3.0.0 tslib: 2.7.0 - dev: false - /@smithy/util-body-length-browser@3.0.0: - resolution: {integrity: sha512-cbjJs2A1mLYmqmyVl80uoLTJhAcfzMOyPgjwAYusWKMdLeNtzmMz9YxNl3/jRLoxSS3wkqkf0jwNdtXWtyEBaQ==} + '@smithy/util-body-length-browser@3.0.0': dependencies: tslib: 2.7.0 - dev: false - /@smithy/util-body-length-node@3.0.0: - resolution: {integrity: sha512-Tj7pZ4bUloNUP6PzwhN7K386tmSmEET9QtQg0TgdNOnxhZvCssHji+oZTUIuzxECRfG8rdm2PMw2WCFs6eIYkA==} - engines: {node: '>=16.0.0'} + '@smithy/util-body-length-node@3.0.0': dependencies: tslib: 2.7.0 - dev: false - /@smithy/util-buffer-from@2.2.0: - resolution: {integrity: sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA==} - engines: {node: '>=14.0.0'} + '@smithy/util-buffer-from@2.2.0': dependencies: '@smithy/is-array-buffer': 2.2.0 tslib: 2.7.0 - dev: false - /@smithy/util-buffer-from@3.0.0: - resolution: {integrity: sha512-aEOHCgq5RWFbP+UDPvPot26EJHjOC+bRgse5A8V3FSShqd5E5UN4qc7zkwsvJPPAVsf73QwYcHN1/gt/rtLwQA==} - engines: {node: '>=16.0.0'} + '@smithy/util-buffer-from@3.0.0': dependencies: '@smithy/is-array-buffer': 3.0.0 tslib: 2.7.0 - dev: false - /@smithy/util-config-provider@3.0.0: - resolution: {integrity: sha512-pbjk4s0fwq3Di/ANL+rCvJMKM5bzAQdE5S/6RL5NXgMExFAi6UgQMPOm5yPaIWPpr+EOXKXRonJ3FoxKf4mCJQ==} - engines: {node: '>=16.0.0'} + '@smithy/util-config-provider@3.0.0': dependencies: tslib: 2.7.0 - dev: false - /@smithy/util-defaults-mode-browser@3.0.18: - resolution: {integrity: sha512-/eveCzU6Z6Yw8dlYQLA4rcK30XY0E4L3lD3QFHm59mzDaWYelrXE1rlynuT3J6qxv+5yNy3a1JuzhG5hk5hcmw==} - engines: {node: '>= 10.0.0'} + '@smithy/util-defaults-mode-browser@3.0.18': dependencies: '@smithy/property-provider': 3.1.6 '@smithy/smithy-client': 3.3.2 '@smithy/types': 3.4.2 bowser: 2.11.0 tslib: 2.7.0 - dev: false - /@smithy/util-defaults-mode-node@3.0.18: - resolution: {integrity: sha512-9cfzRjArtOFPlTYRREJk00suUxVXTgbrzVncOyMRTUeMKnecG/YentLF3cORa+R6mUOMSrMSnT18jos1PKqK6Q==} - engines: {node: '>= 10.0.0'} + '@smithy/util-defaults-mode-node@3.0.18': dependencies: '@smithy/config-resolver': 3.0.8 '@smithy/credential-provider-imds': 3.2.3 @@ -3323,44 +6564,29 @@ packages: '@smithy/smithy-client': 3.3.2 '@smithy/types': 3.4.2 tslib: 2.7.0 - dev: false - /@smithy/util-endpoints@2.1.2: - resolution: {integrity: sha512-FEISzffb4H8DLzGq1g4MuDpcv6CIG15fXoQzDH9SjpRJv6h7J++1STFWWinilG0tQh9H1v2UKWG19Jjr2B16zQ==} - engines: {node: '>=16.0.0'} + '@smithy/util-endpoints@2.1.2': dependencies: '@smithy/node-config-provider': 3.1.7 '@smithy/types': 3.4.2 tslib: 2.7.0 - dev: false - /@smithy/util-hex-encoding@3.0.0: - resolution: {integrity: sha512-eFndh1WEK5YMUYvy3lPlVmYY/fZcQE1D8oSf41Id2vCeIkKJXPcYDCZD+4+xViI6b1XSd7tE+s5AmXzz5ilabQ==} - engines: {node: '>=16.0.0'} + '@smithy/util-hex-encoding@3.0.0': dependencies: tslib: 2.7.0 - dev: false - /@smithy/util-middleware@3.0.6: - resolution: {integrity: sha512-BxbX4aBhI1O9p87/xM+zWy0GzT3CEVcXFPBRDoHAM+pV0eSW156pR+PSYEz0DQHDMYDsYAflC2bQNz2uaDBUZQ==} - engines: {node: '>=16.0.0'} + '@smithy/util-middleware@3.0.6': dependencies: '@smithy/types': 3.4.2 tslib: 2.7.0 - dev: false - /@smithy/util-retry@3.0.6: - resolution: {integrity: sha512-BRZiuF7IwDntAbevqMco67an0Sr9oLQJqqRCsSPZZHYRnehS0LHDAkJk/pSmI7Z8c/1Vet294H7fY2fWUgB+Rg==} - engines: {node: '>=16.0.0'} + '@smithy/util-retry@3.0.6': dependencies: '@smithy/service-error-classification': 3.0.6 '@smithy/types': 3.4.2 tslib: 2.7.0 - dev: false - /@smithy/util-stream@3.1.6: - resolution: {integrity: sha512-lQEUfTx1ht5CRdvIjdAN/gUL6vQt2wSARGGLaBHNe+iJSkRHlWzY+DOn0mFTmTgyU3jcI5n9DkT5gTzYuSOo6A==} - engines: {node: '>=16.0.0'} + '@smithy/util-stream@3.1.6': dependencies: '@smithy/fetch-http-handler': 3.2.7 '@smithy/node-http-handler': 3.2.2 @@ -3370,148 +6596,88 @@ packages: '@smithy/util-hex-encoding': 3.0.0 '@smithy/util-utf8': 3.0.0 tslib: 2.7.0 - dev: false - /@smithy/util-uri-escape@3.0.0: - resolution: {integrity: sha512-LqR7qYLgZTD7nWLBecUi4aqolw8Mhza9ArpNEQ881MJJIU2sE5iHCK6TdyqqzcDLy0OPe10IY4T8ctVdtynubg==} - engines: {node: '>=16.0.0'} + '@smithy/util-uri-escape@3.0.0': dependencies: tslib: 2.7.0 - dev: false - /@smithy/util-utf8@2.3.0: - resolution: {integrity: sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A==} - engines: {node: '>=14.0.0'} + '@smithy/util-utf8@2.3.0': dependencies: '@smithy/util-buffer-from': 2.2.0 tslib: 2.7.0 - dev: false - /@smithy/util-utf8@3.0.0: - resolution: {integrity: sha512-rUeT12bxFnplYDe815GXbq/oixEGHfRFFtcTF3YdDi/JaENIM6aSYYLJydG83UNzLXeRI5K8abYd/8Sp/QM0kA==} - engines: {node: '>=16.0.0'} + '@smithy/util-utf8@3.0.0': dependencies: '@smithy/util-buffer-from': 3.0.0 tslib: 2.7.0 - dev: false - /@smithy/util-waiter@3.1.5: - resolution: {integrity: sha512-jYOSvM3H6sZe3CHjzD2VQNCjWBJs+4DbtwBMvUp9y5EnnwNa7NQxTeYeQw0CKCAdGGZ3QvVkyJmvbvs5M/B10A==} - engines: {node: '>=16.0.0'} + '@smithy/util-waiter@3.1.5': dependencies: '@smithy/abort-controller': 3.1.4 '@smithy/types': 3.4.2 tslib: 2.7.0 - dev: false - /@swc/counter@0.1.3: - resolution: {integrity: sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==} - dev: false + '@swc/counter@0.1.3': {} - /@swc/helpers@0.5.12: - resolution: {integrity: sha512-KMZNXiGibsW9kvZAO1Pam2JPTDBm+KSHMMHWdsyI/1DbIZjT2A6Gy3hblVXUMEDvUAKq+e0vL0X0o54owWji7g==} + '@swc/helpers@0.5.12': dependencies: tslib: 2.7.0 - dev: false - /@tailwindcss/typography@0.5.15(tailwindcss@3.4.11): - resolution: {integrity: sha512-AqhlCXl+8grUz8uqExv5OTtgpjuVIwFTSXTrh8y9/pw6q2ek7fJ+Y8ZEVw7EB2DCcuCOtEjf9w3+J3rzts01uA==} - peerDependencies: - tailwindcss: '>=3.0.0 || insiders || >=4.0.0-alpha.20' + '@tailwindcss/typography@0.5.15(tailwindcss@3.4.11)': dependencies: lodash.castarray: 4.4.0 lodash.isplainobject: 4.0.6 lodash.merge: 4.6.2 postcss-selector-parser: 6.0.10 tailwindcss: 3.4.11 - dev: true - /@tokenizer/token@0.3.0: - resolution: {integrity: sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A==} - dev: false + '@tokenizer/token@0.3.0': {} - /@types/busboy@1.5.4: - resolution: {integrity: sha512-kG7WrUuAKK0NoyxfQHsVE6j1m01s6kMma64E+OZenQABMQyTJop1DumUWcLwAQ2JzpefU7PDYoRDKl8uZosFjw==} + '@types/busboy@1.5.4': dependencies: '@types/node': 22.5.4 - dev: false - /@types/escape-html@1.0.4: - resolution: {integrity: sha512-qZ72SFTgUAZ5a7Tj6kf2SHLetiH5S6f8G5frB2SPQ3EyF02kxdyBFf4Tz4banE3xCgGnKgWLt//a6VuYHKYJTg==} - dev: true + '@types/escape-html@1.0.4': {} - /@types/eslint@8.44.2: - resolution: {integrity: sha512-sdPRb9K6iL5XZOmBubg8yiFp5yS/JdUDQsq5e6h95km91MCYMuvp7mh1fjPEYUhvHepKpZOjnEaMBR4PxjWDzg==} + '@types/eslint@8.44.2': dependencies: '@types/estree': 1.0.5 '@types/json-schema': 7.0.15 - dev: true - /@types/estree@1.0.5: - resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==} - dev: true + '@types/estree@1.0.5': {} - /@types/json-schema@7.0.15: - resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} + '@types/json-schema@7.0.15': {} - /@types/json5@0.0.29: - resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} - dev: true + '@types/json5@0.0.29': {} - /@types/jsonwebtoken@9.0.6: - resolution: {integrity: sha512-/5hndP5dCjloafCXns6SZyESp3Ldq7YjH3zwzwczYnjxIT0Fqzk5ROSYVGfFyczIue7IUEj8hkvLbPoLQ18vQw==} + '@types/jsonwebtoken@9.0.6': dependencies: '@types/node': 22.5.4 - dev: true - /@types/node@22.5.4: - resolution: {integrity: sha512-FDuKUJQm/ju9fT/SeX/6+gBzoPzlVCzfzmGkwKvRHQVxi4BntVbyIwf6a4Xn62mrvndLiml6z/UBXIdEVjQLXg==} + '@types/node@22.5.4': dependencies: undici-types: 6.19.8 - /@types/parse-json@4.0.2: - resolution: {integrity: sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==} - dev: false + '@types/parse-json@4.0.2': {} - /@types/prismjs@1.26.4: - resolution: {integrity: sha512-rlAnzkW2sZOjbqZ743IHUhFcvzaGbqijwOu8QZnZCjfQzBqFE3s4lOTJEsxikImav9uzz/42I+O7YUs1mWgMlg==} - dev: false + '@types/prismjs@1.26.4': {} - /@types/react-transition-group@4.4.11: - resolution: {integrity: sha512-RM05tAniPZ5DZPzzNFP+DmrcOdD0efDUxMy3145oljWSl3x9ZV5vhme98gTxFrj2lhXvmGNnUiuDyJgY9IKkNA==} + '@types/react-transition-group@4.4.11': dependencies: - '@types/react': /types-react@19.0.0-rc.0 - dev: false + '@types/react': types-react@19.0.0-rc.0 - /@types/semver@7.5.8: - resolution: {integrity: sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==} - dev: true + '@types/semver@7.5.8': {} - /@types/uuid@10.0.0: - resolution: {integrity: sha512-7gqG38EyHgyP1S+7+xomFtL+ZNHcKv6DwNaCZmJmo1vgMugyF3TCnXVg4t1uk89mLNwnLtnY3TpOpCOyp1/xHQ==} - dev: false + '@types/uuid@10.0.0': {} - /@types/webidl-conversions@7.0.3: - resolution: {integrity: sha512-CiJJvcRtIgzadHCYXw7dqEnMNRjhGZlYK05Mj9OyktqV8uVT8fD2BFOB7S1uwBE3Kj2Z+4UyPmFw/Ixgw/LAlA==} - dev: false + '@types/webidl-conversions@7.0.3': {} - /@types/whatwg-url@8.2.2: - resolution: {integrity: sha512-FtQu10RWgn3D9U4aazdwIE2yzphmTJREDqNdODHrbrZmmMqI0vMheC/6NE/J1Yveaj8H+ela+YwWTjq5PGmuhA==} + '@types/whatwg-url@8.2.2': dependencies: '@types/node': 22.5.4 '@types/webidl-conversions': 7.0.3 - dev: false - /@typescript-eslint/eslint-plugin@6.6.0(@typescript-eslint/parser@6.6.0)(eslint@8.48.0)(typescript@5.6.2): - resolution: {integrity: sha512-CW9YDGTQnNYMIo5lMeuiIG08p4E0cXrXTbcZ2saT/ETE7dWUrNxlijsQeU04qAAKkILiLzdQz+cGFxCJjaZUmA==} - engines: {node: ^16.0.0 || >=18.0.0} - peerDependencies: - '@typescript-eslint/parser': ^6.0.0 || ^6.0.0-alpha - eslint: ^7.0.0 || ^8.0.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true + '@typescript-eslint/eslint-plugin@6.6.0(@typescript-eslint/parser@6.6.0)(eslint@8.48.0)(typescript@5.6.2)': dependencies: '@eslint-community/regexpp': 4.11.1 '@typescript-eslint/parser': 6.6.0(eslint@8.48.0)(typescript@5.6.2) @@ -3529,18 +6695,8 @@ packages: typescript: 5.6.2 transitivePeerDependencies: - supports-color - dev: true - /@typescript-eslint/eslint-plugin@7.18.0(@typescript-eslint/parser@7.18.0)(eslint@8.57.0)(typescript@5.6.2): - resolution: {integrity: sha512-94EQTWZ40mzBc42ATNIBimBEDltSJ9RQHCC8vc/PDbxi4k8dVwUAv4o98dk50M1zB+JGFxp43FP7f8+FP8R6Sw==} - engines: {node: ^18.18.0 || >=20.0.0} - peerDependencies: - '@typescript-eslint/parser': ^7.0.0 - eslint: ^8.56.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true + '@typescript-eslint/eslint-plugin@7.18.0(@typescript-eslint/parser@7.18.0)(eslint@8.57.0)(typescript@5.6.2)': dependencies: '@eslint-community/regexpp': 4.11.1 '@typescript-eslint/parser': 7.18.0(eslint@8.57.0)(typescript@5.6.2) @@ -3556,17 +6712,8 @@ packages: typescript: 5.6.2 transitivePeerDependencies: - supports-color - dev: true - /@typescript-eslint/parser@6.6.0(eslint@8.48.0)(typescript@5.6.2): - resolution: {integrity: sha512-setq5aJgUwtzGrhW177/i+DMLqBaJbdwGj2CPIVFFLE0NCliy5ujIdLHd2D1ysmlmsjdL2GWW+hR85neEfc12w==} - engines: {node: ^16.0.0 || >=18.0.0} - peerDependencies: - eslint: ^7.0.0 || ^8.0.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true + '@typescript-eslint/parser@6.6.0(eslint@8.48.0)(typescript@5.6.2)': dependencies: '@typescript-eslint/scope-manager': 6.6.0 '@typescript-eslint/types': 6.6.0 @@ -3577,17 +6724,8 @@ packages: typescript: 5.6.2 transitivePeerDependencies: - supports-color - dev: true - /@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.6.2): - resolution: {integrity: sha512-4Z+L8I2OqhZV8qA132M4wNL30ypZGYOQVBfMgxDH/K5UX0PNqTu1c6za9ST5r9+tavvHiTWmBnKzpCJ/GlVFtg==} - engines: {node: ^18.18.0 || >=20.0.0} - peerDependencies: - eslint: ^8.56.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true + '@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.6.2)': dependencies: '@typescript-eslint/scope-manager': 7.18.0 '@typescript-eslint/types': 7.18.0 @@ -3598,49 +6736,28 @@ packages: typescript: 5.6.2 transitivePeerDependencies: - supports-color - dev: true - /@typescript-eslint/scope-manager@5.62.0: - resolution: {integrity: sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + '@typescript-eslint/scope-manager@5.62.0': dependencies: '@typescript-eslint/types': 5.62.0 '@typescript-eslint/visitor-keys': 5.62.0 - dev: true - /@typescript-eslint/scope-manager@6.21.0: - resolution: {integrity: sha512-OwLUIWZJry80O99zvqXVEioyniJMa+d2GrqpUTqi5/v5D5rOrppJVBPa0yKCblcigC0/aYAzxxqQ1B+DS2RYsg==} - engines: {node: ^16.0.0 || >=18.0.0} + '@typescript-eslint/scope-manager@6.21.0': dependencies: '@typescript-eslint/types': 6.21.0 '@typescript-eslint/visitor-keys': 6.21.0 - dev: true - /@typescript-eslint/scope-manager@6.6.0: - resolution: {integrity: sha512-pT08u5W/GT4KjPUmEtc2kSYvrH8x89cVzkA0Sy2aaOUIw6YxOIjA8ilwLr/1fLjOedX1QAuBpG9XggWqIIfERw==} - engines: {node: ^16.0.0 || >=18.0.0} + '@typescript-eslint/scope-manager@6.6.0': dependencies: '@typescript-eslint/types': 6.6.0 '@typescript-eslint/visitor-keys': 6.6.0 - dev: true - /@typescript-eslint/scope-manager@7.18.0: - resolution: {integrity: sha512-jjhdIE/FPF2B7Z1uzc6i3oWKbGcHb87Qw7AWj6jmEqNOfDFbJWtjt/XfwCpvNkpGWlcJaog5vTR+VV8+w9JflA==} - engines: {node: ^18.18.0 || >=20.0.0} + '@typescript-eslint/scope-manager@7.18.0': dependencies: '@typescript-eslint/types': 7.18.0 '@typescript-eslint/visitor-keys': 7.18.0 - dev: true - /@typescript-eslint/type-utils@6.6.0(eslint@8.48.0)(typescript@5.6.2): - resolution: {integrity: sha512-8m16fwAcEnQc69IpeDyokNO+D5spo0w1jepWWY2Q6y5ZKNuj5EhVQXjtVAeDDqvW6Yg7dhclbsz6rTtOvcwpHg==} - engines: {node: ^16.0.0 || >=18.0.0} - peerDependencies: - eslint: ^7.0.0 || ^8.0.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true + '@typescript-eslint/type-utils@6.6.0(eslint@8.48.0)(typescript@5.6.2)': dependencies: '@typescript-eslint/typescript-estree': 6.6.0(typescript@5.6.2) '@typescript-eslint/utils': 6.6.0(eslint@8.48.0)(typescript@5.6.2) @@ -3650,17 +6767,8 @@ packages: typescript: 5.6.2 transitivePeerDependencies: - supports-color - dev: true - /@typescript-eslint/type-utils@7.18.0(eslint@8.57.0)(typescript@5.6.2): - resolution: {integrity: sha512-XL0FJXuCLaDuX2sYqZUUSOJ2sG5/i1AAze+axqmLnSkNEVMVYLF+cbwlB2w8D1tinFuSikHmFta+P+HOofrLeA==} - engines: {node: ^18.18.0 || >=20.0.0} - peerDependencies: - eslint: ^8.56.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true + '@typescript-eslint/type-utils@7.18.0(eslint@8.57.0)(typescript@5.6.2)': dependencies: '@typescript-eslint/typescript-estree': 7.18.0(typescript@5.6.2) '@typescript-eslint/utils': 7.18.0(eslint@8.57.0)(typescript@5.6.2) @@ -3670,36 +6778,16 @@ packages: typescript: 5.6.2 transitivePeerDependencies: - supports-color - dev: true - /@typescript-eslint/types@5.62.0: - resolution: {integrity: sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - dev: true + '@typescript-eslint/types@5.62.0': {} - /@typescript-eslint/types@6.21.0: - resolution: {integrity: sha512-1kFmZ1rOm5epu9NZEZm1kckCDGj5UJEf7P1kliH4LKu/RkwpsfqqGmY2OOcUs18lSlQBKLDYBOGxRVtrMN5lpg==} - engines: {node: ^16.0.0 || >=18.0.0} - dev: true + '@typescript-eslint/types@6.21.0': {} - /@typescript-eslint/types@6.6.0: - resolution: {integrity: sha512-CB6QpJQ6BAHlJXdwUmiaXDBmTqIE2bzGTDLADgvqtHWuhfNP3rAOK7kAgRMAET5rDRr9Utt+qAzRBdu3AhR3sg==} - engines: {node: ^16.0.0 || >=18.0.0} - dev: true + '@typescript-eslint/types@6.6.0': {} - /@typescript-eslint/types@7.18.0: - resolution: {integrity: sha512-iZqi+Ds1y4EDYUtlOOC+aUmxnE9xS/yCigkjA7XpTKV6nCBd3Hp/PRGGmdwnfkV2ThMyYldP1wRpm/id99spTQ==} - engines: {node: ^18.18.0 || >=20.0.0} - dev: true + '@typescript-eslint/types@7.18.0': {} - /@typescript-eslint/typescript-estree@5.62.0(typescript@5.6.2): - resolution: {integrity: sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true + '@typescript-eslint/typescript-estree@5.62.0(typescript@5.6.2)': dependencies: '@typescript-eslint/types': 5.62.0 '@typescript-eslint/visitor-keys': 5.62.0 @@ -3711,16 +6799,8 @@ packages: typescript: 5.6.2 transitivePeerDependencies: - supports-color - dev: true - /@typescript-eslint/typescript-estree@6.21.0(typescript@5.6.2): - resolution: {integrity: sha512-6npJTkZcO+y2/kr+z0hc4HwNfrrP4kNYh57ek7yCNlrBjWQ1Y0OS7jiZTkgumrvkX5HkEKXFZkkdFNkaW2wmUQ==} - engines: {node: ^16.0.0 || >=18.0.0} - peerDependencies: - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true + '@typescript-eslint/typescript-estree@6.21.0(typescript@5.6.2)': dependencies: '@typescript-eslint/types': 6.21.0 '@typescript-eslint/visitor-keys': 6.21.0 @@ -3733,16 +6813,8 @@ packages: typescript: 5.6.2 transitivePeerDependencies: - supports-color - dev: true - /@typescript-eslint/typescript-estree@6.6.0(typescript@5.6.2): - resolution: {integrity: sha512-hMcTQ6Al8MP2E6JKBAaSxSVw5bDhdmbCEhGW/V8QXkb9oNsFkA4SBuOMYVPxD3jbtQ4R/vSODBsr76R6fP3tbA==} - engines: {node: ^16.0.0 || >=18.0.0} - peerDependencies: - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true + '@typescript-eslint/typescript-estree@6.6.0(typescript@5.6.2)': dependencies: '@typescript-eslint/types': 6.6.0 '@typescript-eslint/visitor-keys': 6.6.0 @@ -3754,16 +6826,8 @@ packages: typescript: 5.6.2 transitivePeerDependencies: - supports-color - dev: true - /@typescript-eslint/typescript-estree@7.18.0(typescript@5.6.2): - resolution: {integrity: sha512-aP1v/BSPnnyhMHts8cf1qQ6Q1IFwwRvAQGRvBFkWlo3/lH29OXA3Pts+c10nxRxIBrDnoMqzhgdwVe5f2D6OzA==} - engines: {node: ^18.18.0 || >=20.0.0} - peerDependencies: - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true + '@typescript-eslint/typescript-estree@7.18.0(typescript@5.6.2)': dependencies: '@typescript-eslint/types': 7.18.0 '@typescript-eslint/visitor-keys': 7.18.0 @@ -3776,13 +6840,8 @@ packages: typescript: 5.6.2 transitivePeerDependencies: - supports-color - dev: true - /@typescript-eslint/utils@5.62.0(eslint@8.48.0)(typescript@5.6.2): - resolution: {integrity: sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + '@typescript-eslint/utils@5.62.0(eslint@8.48.0)(typescript@5.6.2)': dependencies: '@eslint-community/eslint-utils': 4.4.0(eslint@8.48.0) '@types/json-schema': 7.0.15 @@ -3796,13 +6855,8 @@ packages: transitivePeerDependencies: - supports-color - typescript - dev: true - /@typescript-eslint/utils@6.21.0(eslint@8.48.0)(typescript@5.6.2): - resolution: {integrity: sha512-NfWVaC8HP9T8cbKQxHcsJBY5YE1O33+jpMwN45qzWWaPDZgLIbo12toGMWnmhvCpd3sIxkpDw3Wv1B3dYrbDQQ==} - engines: {node: ^16.0.0 || >=18.0.0} - peerDependencies: - eslint: ^7.0.0 || ^8.0.0 + '@typescript-eslint/utils@6.21.0(eslint@8.48.0)(typescript@5.6.2)': dependencies: '@eslint-community/eslint-utils': 4.4.0(eslint@8.48.0) '@types/json-schema': 7.0.15 @@ -3815,13 +6869,8 @@ packages: transitivePeerDependencies: - supports-color - typescript - dev: true - /@typescript-eslint/utils@6.6.0(eslint@8.48.0)(typescript@5.6.2): - resolution: {integrity: sha512-mPHFoNa2bPIWWglWYdR0QfY9GN0CfvvXX1Sv6DlSTive3jlMTUy+an67//Gysc+0Me9pjitrq0LJp0nGtLgftw==} - engines: {node: ^16.0.0 || >=18.0.0} - peerDependencies: - eslint: ^7.0.0 || ^8.0.0 + '@typescript-eslint/utils@6.6.0(eslint@8.48.0)(typescript@5.6.2)': dependencies: '@eslint-community/eslint-utils': 4.4.0(eslint@8.48.0) '@types/json-schema': 7.0.15 @@ -3834,13 +6883,8 @@ packages: transitivePeerDependencies: - supports-color - typescript - dev: true - /@typescript-eslint/utils@7.18.0(eslint@8.57.0)(typescript@5.6.2): - resolution: {integrity: sha512-kK0/rNa2j74XuHVcoCZxdFBMF+aq/vH83CXAOHieC+2Gis4mF8jJXT5eAfyD3K0sAxtPuwxaIOIOvhwzVDt/kw==} - engines: {node: ^18.18.0 || >=20.0.0} - peerDependencies: - eslint: ^8.56.0 + '@typescript-eslint/utils@7.18.0(eslint@8.57.0)(typescript@5.6.2)': dependencies: '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) '@typescript-eslint/scope-manager': 7.18.0 @@ -3850,90 +6894,56 @@ packages: transitivePeerDependencies: - supports-color - typescript - dev: true - /@typescript-eslint/visitor-keys@5.62.0: - resolution: {integrity: sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + '@typescript-eslint/visitor-keys@5.62.0': dependencies: '@typescript-eslint/types': 5.62.0 eslint-visitor-keys: 3.4.3 - dev: true - /@typescript-eslint/visitor-keys@6.21.0: - resolution: {integrity: sha512-JJtkDduxLi9bivAB+cYOVMtbkqdPOhZ+ZI5LC47MIRrDV4Yn2o+ZnW10Nkmr28xRpSpdJ6Sm42Hjf2+REYXm0A==} - engines: {node: ^16.0.0 || >=18.0.0} + '@typescript-eslint/visitor-keys@6.21.0': dependencies: '@typescript-eslint/types': 6.21.0 eslint-visitor-keys: 3.4.3 - dev: true - /@typescript-eslint/visitor-keys@6.6.0: - resolution: {integrity: sha512-L61uJT26cMOfFQ+lMZKoJNbAEckLe539VhTxiGHrWl5XSKQgA0RTBZJW2HFPy5T0ZvPVSD93QsrTKDkfNwJGyQ==} - engines: {node: ^16.0.0 || >=18.0.0} + '@typescript-eslint/visitor-keys@6.6.0': dependencies: '@typescript-eslint/types': 6.6.0 eslint-visitor-keys: 3.4.3 - dev: true - /@typescript-eslint/visitor-keys@7.18.0: - resolution: {integrity: sha512-cDF0/Gf81QpY3xYyJKDV14Zwdmid5+uuENhjH2EqFaF0ni+yAyq/LzMaIJdhNJXZI7uLzwIlA+V7oWoyn6Curg==} - engines: {node: ^18.18.0 || >=20.0.0} + '@typescript-eslint/visitor-keys@7.18.0': dependencies: '@typescript-eslint/types': 7.18.0 eslint-visitor-keys: 3.4.3 - dev: true - /@ungap/structured-clone@1.2.0: - resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==} - dev: true + '@ungap/structured-clone@1.2.0': {} - /abbrev@2.0.0: - resolution: {integrity: sha512-6/mh1E2u2YgEsCHdY0Yx5oW+61gZU+1vXaoiHHrpKeuRNNgFvS+/jrwHiQhB5apAf5oB7UB7E19ol2R2LKH8hQ==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - dev: false + abbrev@2.0.0: {} - /abort-controller@3.0.0: - resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==} - engines: {node: '>=6.5'} + abort-controller@3.0.0: dependencies: event-target-shim: 5.0.1 - dev: false - /acorn-jsx@5.3.2(acorn@8.12.1): - resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} - peerDependencies: - acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + acorn-jsx@5.3.2(acorn@8.12.1): dependencies: acorn: 8.12.1 - dev: true - /acorn@8.12.1: - resolution: {integrity: sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==} - engines: {node: '>=0.4.0'} - hasBin: true - dev: true + acorn@8.12.1: {} - /ajv@6.12.6: - resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} + ajv@6.12.6: dependencies: fast-deep-equal: 3.1.3 fast-json-stable-stringify: 2.1.0 json-schema-traverse: 0.4.1 uri-js: 4.4.1 - dev: true - /ajv@8.17.1: - resolution: {integrity: sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==} + ajv@8.17.1: dependencies: fast-deep-equal: 3.1.3 fast-uri: 3.0.1 json-schema-traverse: 1.0.0 require-from-string: 2.0.2 - dev: false - /amazon-cognito-identity-js@6.3.12: - resolution: {integrity: sha512-s7NKDZgx336cp+oDeUtB2ZzT8jWJp/v2LWuYl+LQtMEODe22RF1IJ4nRiDATp+rp1pTffCZcm44Quw4jx2bqNg==} + amazon-cognito-identity-js@6.3.12: dependencies: '@aws-crypto/sha256-js': 1.2.2 buffer: 4.9.2 @@ -3942,78 +6952,48 @@ packages: js-cookie: 2.2.1 transitivePeerDependencies: - encoding - dev: false - /ansi-regex@5.0.1: - resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} - engines: {node: '>=8'} + ansi-regex@5.0.1: {} - /ansi-regex@6.1.0: - resolution: {integrity: sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==} - engines: {node: '>=12'} + ansi-regex@6.1.0: {} - /ansi-styles@3.2.1: - resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} - engines: {node: '>=4'} + ansi-styles@3.2.1: dependencies: color-convert: 1.9.3 - dev: false - /ansi-styles@4.3.0: - resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} - engines: {node: '>=8'} + ansi-styles@4.3.0: dependencies: color-convert: 2.0.1 - /ansi-styles@6.2.1: - resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} - engines: {node: '>=12'} + ansi-styles@6.2.1: {} - /any-promise@1.3.0: - resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} + any-promise@1.3.0: {} - /anymatch@3.1.3: - resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} - engines: {node: '>= 8'} + anymatch@3.1.3: dependencies: normalize-path: 3.0.0 picomatch: 2.3.1 - /arg@5.0.2: - resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} + arg@5.0.2: {} - /argparse@2.0.1: - resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} + argparse@2.0.1: {} - /aria-hidden@1.2.4: - resolution: {integrity: sha512-y+CcFFwelSXpLZk/7fMB2mUbGtX9lKycf1MWJ7CaTIERyitVlyQx6C+sxcROU2BAJ24OiZyK+8wj2i8AlBoS3A==} - engines: {node: '>=10'} + aria-hidden@1.2.4: dependencies: tslib: 2.7.0 - dev: false - /aria-query@5.1.3: - resolution: {integrity: sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ==} + aria-query@5.1.3: dependencies: deep-equal: 2.2.3 - dev: true - /aria-query@5.3.1: - resolution: {integrity: sha512-Z/ZeOgVl7bcSYZ/u/rh0fOpvEpq//LZmdbkXyc7syVzjPAhfOa9ebsdTSjEBDU4vs5nC98Kfduj1uFo0qyET3g==} - engines: {node: '>= 0.4'} - dev: true + aria-query@5.3.1: {} - /array-buffer-byte-length@1.0.1: - resolution: {integrity: sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==} - engines: {node: '>= 0.4'} + array-buffer-byte-length@1.0.1: dependencies: call-bind: 1.0.7 is-array-buffer: 3.0.4 - dev: true - /array-includes@3.1.8: - resolution: {integrity: sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==} - engines: {node: '>= 0.4'} + array-includes@3.1.8: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 @@ -4021,16 +7001,10 @@ packages: es-object-atoms: 1.0.0 get-intrinsic: 1.2.4 is-string: 1.0.7 - dev: true - /array-union@2.1.0: - resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} - engines: {node: '>=8'} - dev: true + array-union@2.1.0: {} - /array.prototype.findlast@1.2.5: - resolution: {integrity: sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==} - engines: {node: '>= 0.4'} + array.prototype.findlast@1.2.5: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 @@ -4038,11 +7012,8 @@ packages: es-errors: 1.3.0 es-object-atoms: 1.0.0 es-shim-unscopables: 1.0.2 - dev: true - /array.prototype.findlastindex@1.2.5: - resolution: {integrity: sha512-zfETvRFA8o7EiNn++N5f/kaCw221hrpGsDmcpndVupkPzEc1Wuf3VgC0qby1BbHs7f5DVYjgtEU2LLh5bqeGfQ==} - engines: {node: '>= 0.4'} + array.prototype.findlastindex@1.2.5: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 @@ -4050,42 +7021,30 @@ packages: es-errors: 1.3.0 es-object-atoms: 1.0.0 es-shim-unscopables: 1.0.2 - dev: true - /array.prototype.flat@1.3.2: - resolution: {integrity: sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==} - engines: {node: '>= 0.4'} + array.prototype.flat@1.3.2: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 es-abstract: 1.23.3 es-shim-unscopables: 1.0.2 - dev: true - /array.prototype.flatmap@1.3.2: - resolution: {integrity: sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==} - engines: {node: '>= 0.4'} + array.prototype.flatmap@1.3.2: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 es-abstract: 1.23.3 es-shim-unscopables: 1.0.2 - dev: true - /array.prototype.tosorted@1.1.4: - resolution: {integrity: sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA==} - engines: {node: '>= 0.4'} + array.prototype.tosorted@1.1.4: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 es-abstract: 1.23.3 es-errors: 1.3.0 es-shim-unscopables: 1.0.2 - dev: true - /arraybuffer.prototype.slice@1.0.3: - resolution: {integrity: sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==} - engines: {node: '>= 0.4'} + arraybuffer.prototype.slice@1.0.3: dependencies: array-buffer-byte-length: 1.0.1 call-bind: 1.0.7 @@ -4095,31 +7054,16 @@ packages: get-intrinsic: 1.2.4 is-array-buffer: 3.0.4 is-shared-array-buffer: 1.0.3 - dev: true - /ast-types-flow@0.0.7: - resolution: {integrity: sha512-eBvWn1lvIApYMhzQMsu9ciLfkBY499mFZlNqG+/9WR7PVlroQw0vG30cOQQbaKz3sCEc44TAOu2ykzqXSNnwag==} - dev: true + ast-types-flow@0.0.7: {} - /ast-types-flow@0.0.8: - resolution: {integrity: sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==} - dev: true + ast-types-flow@0.0.8: {} - /asynckit@0.4.0: - resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} - dev: false + asynckit@0.4.0: {} - /atomic-sleep@1.0.0: - resolution: {integrity: sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ==} - engines: {node: '>=8.0.0'} - dev: false + atomic-sleep@1.0.0: {} - /autoprefixer@10.4.20(postcss@8.4.47): - resolution: {integrity: sha512-XY25y5xSv/wEoqzDyXXME4AFfkZI0P23z6Fs3YgymDnKJkCGOnkL0iTxCa85UTqaSgfcqyf3UA6+c7wUvx/16g==} - engines: {node: ^10 || ^12 || >=14} - hasBin: true - peerDependencies: - postcss: ^8.1.0 + autoprefixer@10.4.20(postcss@8.4.47): dependencies: browserslist: 4.23.3 caniuse-lite: 1.0.30001660 @@ -4128,245 +7072,154 @@ packages: picocolors: 1.1.0 postcss: 8.4.47 postcss-value-parser: 4.2.0 - dev: true - /available-typed-arrays@1.0.7: - resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==} - engines: {node: '>= 0.4'} + available-typed-arrays@1.0.7: dependencies: possible-typed-array-names: 1.0.0 - dev: true - /axe-core@4.10.0: - resolution: {integrity: sha512-Mr2ZakwQ7XUAjp7pAwQWRhhK8mQQ6JAaNWSjmjxil0R8BPioMtQsTLOolGYkji1rcL++3dCqZA3zWqpT+9Ew6g==} - engines: {node: '>=4'} - dev: true + axe-core@4.10.0: {} - /axios@1.4.0: - resolution: {integrity: sha512-S4XCWMEmzvo64T9GfvQDOXgYRDJ/wsSZc7Jvdgx5u1sd0JwsuPLqb3SYmusag+edF6ziyMensPVqLTSc1PiSEA==} + axios@1.4.0: dependencies: follow-redirects: 1.15.9 form-data: 4.0.0 proxy-from-env: 1.1.0 transitivePeerDependencies: - debug - dev: false - /axobject-query@3.2.4: - resolution: {integrity: sha512-aPTElBrbifBU1krmZxGZOlBkslORe7Ll7+BDnI50Wy4LgOt69luMgevkDfTq1O/ZgprooPCtWpjCwKSZw/iZ4A==} - engines: {node: '>= 0.4'} - dev: true + axobject-query@3.2.4: {} - /axobject-query@4.1.0: - resolution: {integrity: sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==} - engines: {node: '>= 0.4'} - dev: true + axobject-query@4.1.0: {} - /b4a@1.6.6: - resolution: {integrity: sha512-5Tk1HLk6b6ctmjIkAcU/Ujv/1WqiDl0F0JdRCR80VsOcUlHcu7pWeWRlOqQLHfDEsVx9YH/aif5AG4ehoCtTmg==} - dev: false + b4a@1.6.6: {} - /babel-plugin-macros@3.1.0: - resolution: {integrity: sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==} - engines: {node: '>=10', npm: '>=6'} + babel-plugin-macros@3.1.0: dependencies: '@babel/runtime': 7.25.6 cosmiconfig: 7.1.0 resolve: 1.22.8 - dev: false - /balanced-match@1.0.2: - resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + balanced-match@1.0.2: {} - /bare-events@2.4.2: - resolution: {integrity: sha512-qMKFd2qG/36aA4GwvKq8MxnPgCQAmBWmSyLWsJcbn8v03wvIPQ/hG1Ms8bPzndZxMDoHpxez5VOS+gC9Yi24/Q==} - requiresBuild: true - dev: false + bare-events@2.4.2: optional: true - /bare-fs@2.3.5: - resolution: {integrity: sha512-SlE9eTxifPDJrT6YgemQ1WGFleevzwY+XAP1Xqgl56HtcrisC2CHCZ2tq6dBpcH2TnNxwUEUGhweo+lrQtYuiw==} - requiresBuild: true + bare-fs@2.3.5: dependencies: bare-events: 2.4.2 bare-path: 2.1.3 bare-stream: 2.3.0 - dev: false optional: true - /bare-os@2.4.4: - resolution: {integrity: sha512-z3UiI2yi1mK0sXeRdc4O1Kk8aOa/e+FNWZcTiPB/dfTWyLypuE99LibgRaQki914Jq//yAWylcAt+mknKdixRQ==} - requiresBuild: true - dev: false + bare-os@2.4.4: optional: true - /bare-path@2.1.3: - resolution: {integrity: sha512-lh/eITfU8hrj9Ru5quUp0Io1kJWIk1bTjzo7JH1P5dWmQ2EL4hFUlfI8FonAhSlgIfhn63p84CDY/x+PisgcXA==} - requiresBuild: true + bare-path@2.1.3: dependencies: bare-os: 2.4.4 - dev: false optional: true - /bare-stream@2.3.0: - resolution: {integrity: sha512-pVRWciewGUeCyKEuRxwv06M079r+fRjAQjBEK2P6OYGrO43O+Z0LrPZZEjlc4mB6C2RpZ9AxJ1s7NLEtOHO6eA==} - requiresBuild: true + bare-stream@2.3.0: dependencies: b4a: 1.6.6 streamx: 2.20.1 - dev: false optional: true - /base64-js@1.5.1: - resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} - dev: false + base64-js@1.5.1: {} - /binary-extensions@2.3.0: - resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} - engines: {node: '>=8'} + binary-extensions@2.3.0: {} - /bl@4.1.0: - resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} + bl@4.1.0: dependencies: buffer: 5.7.1 inherits: 2.0.4 readable-stream: 3.6.2 - dev: false - /body-scroll-lock@4.0.0-beta.0: - resolution: {integrity: sha512-a7tP5+0Mw3YlUJcGAKUqIBkYYGlYxk2fnCasq/FUph1hadxlTRjF+gAcZksxANnaMnALjxEddmSi/H3OR8ugcQ==} - dev: false + body-scroll-lock@4.0.0-beta.0: {} - /bowser@2.11.0: - resolution: {integrity: sha512-AlcaJBi/pqqJBIQ8U9Mcpc9i8Aqxn88Skv5d+xBX006BY5u8N3mGLHa5Lgppa7L/HfwgwLgZ6NYs+Ag6uUmJRA==} - dev: false + bowser@2.11.0: {} - /brace-expansion@1.1.11: - resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} + brace-expansion@1.1.11: dependencies: balanced-match: 1.0.2 concat-map: 0.0.1 - dev: true - /brace-expansion@2.0.1: - resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} + brace-expansion@2.0.1: dependencies: balanced-match: 1.0.2 - /braces@3.0.3: - resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} - engines: {node: '>=8'} + braces@3.0.3: dependencies: fill-range: 7.1.1 - /browserslist@4.23.3: - resolution: {integrity: sha512-btwCFJVjI4YWDNfau8RhZ+B1Q/VLoUITrm3RlP6y1tYGWIOa+InuYiRGXUBXo8nA1qKmHMyLB/iVQg5TT4eFoA==} - engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} - hasBin: true + browserslist@4.23.3: dependencies: caniuse-lite: 1.0.30001660 electron-to-chromium: 1.5.23 node-releases: 2.0.18 update-browserslist-db: 1.1.0(browserslist@4.23.3) - dev: true - /bson-objectid@2.0.4: - resolution: {integrity: sha512-vgnKAUzcDoa+AeyYwXCoHyF2q6u/8H46dxu5JN+4/TZeq/Dlinn0K6GvxsCLb3LHUJl0m/TLiEK31kUwtgocMQ==} - dev: false + bson-objectid@2.0.4: {} - /bson@4.7.2: - resolution: {integrity: sha512-Ry9wCtIZ5kGqkJoi6aD8KjxFZEx78guTQDnpXWiNthsxzrxAK/i8E6pCHAIZTbaEFWcOCvbecMukfK7XUvyLpQ==} - engines: {node: '>=6.9.0'} + bson@4.7.2: dependencies: buffer: 5.7.1 - dev: false - /buffer-equal-constant-time@1.0.1: - resolution: {integrity: sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==} - dev: false + buffer-equal-constant-time@1.0.1: {} - /buffer@4.9.2: - resolution: {integrity: sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==} + buffer@4.9.2: dependencies: base64-js: 1.5.1 ieee754: 1.2.1 isarray: 1.0.0 - dev: false - /buffer@5.6.0: - resolution: {integrity: sha512-/gDYp/UtU0eA1ys8bOs9J6a+E/KWIY+DZ+Q2WESNUA0jFRsJOc0SNUO6xJ5SGA1xueg3NL65W6s+NY5l9cunuw==} + buffer@5.6.0: dependencies: base64-js: 1.5.1 ieee754: 1.2.1 - dev: false - /buffer@5.7.1: - resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} + buffer@5.7.1: dependencies: base64-js: 1.5.1 ieee754: 1.2.1 - dev: false - /buffer@6.0.3: - resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==} + buffer@6.0.3: dependencies: base64-js: 1.5.1 ieee754: 1.2.1 - dev: false - /busboy@1.6.0: - resolution: {integrity: sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==} - engines: {node: '>=10.16.0'} + busboy@1.6.0: dependencies: streamsearch: 1.1.0 - dev: false - /call-bind@1.0.7: - resolution: {integrity: sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==} - engines: {node: '>= 0.4'} + call-bind@1.0.7: dependencies: es-define-property: 1.0.0 es-errors: 1.3.0 function-bind: 1.1.2 get-intrinsic: 1.2.4 set-function-length: 1.2.2 - dev: true - /callsites@3.1.0: - resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} - engines: {node: '>=6'} + callsites@3.1.0: {} - /camelcase-css@2.0.1: - resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==} - engines: {node: '>= 6'} + camelcase-css@2.0.1: {} - /caniuse-lite@1.0.30001660: - resolution: {integrity: sha512-GacvNTTuATm26qC74pt+ad1fW15mlQ/zuTzzY1ZoIzECTP8HURDfF43kNxPgf7H1jmelCBQTTbBNxdSXOA7Bqg==} + caniuse-lite@1.0.30001660: {} - /chalk@2.4.2: - resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} - engines: {node: '>=4'} + chalk@2.4.2: dependencies: ansi-styles: 3.2.1 escape-string-regexp: 1.0.5 supports-color: 5.5.0 - dev: false - /chalk@4.1.2: - resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} - engines: {node: '>=10'} + chalk@4.1.2: dependencies: ansi-styles: 4.3.0 supports-color: 7.2.0 - dev: true - /charenc@0.0.2: - resolution: {integrity: sha512-yrLQ/yVUFXkzg7EDQsPieE/53+0RlaWTs+wBrvW36cyilJ2SaDWfl4Yj7MtLTXleV9uEKefbAGUPv2/iWSooRA==} - dev: false + charenc@0.0.2: {} - /chokidar@3.6.0: - resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} - engines: {node: '>= 8.10.0'} + chokidar@3.6.0: dependencies: anymatch: 3.1.3 braces: 3.0.3 @@ -4378,143 +7231,84 @@ packages: optionalDependencies: fsevents: 2.3.3 - /chownr@1.1.4: - resolution: {integrity: sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==} - dev: false + chownr@1.1.4: {} - /ci-info@4.0.0: - resolution: {integrity: sha512-TdHqgGf9odd8SXNuxtUBVx8Nv+qZOejE6qyqiy5NtbYYQOeFa6zmHkxlPzmaLxWWHsU6nJmB7AETdVPi+2NBUg==} - engines: {node: '>=8'} - dev: false + ci-info@4.0.0: {} - /class-variance-authority@0.7.0: - resolution: {integrity: sha512-jFI8IQw4hczaL4ALINxqLEXQbWcNjoSkloa4IaufXCJr6QawJyw7tuRysRsrE8w2p/4gGaxKIt/hX3qz/IbD1A==} + class-variance-authority@0.7.0: dependencies: clsx: 2.0.0 - dev: false - /classnames@2.5.1: - resolution: {integrity: sha512-saHYOzhIQs6wy2sVxTM6bUDsQO4F50V9RQ22qBpEdCW+I+/Wmke2HOl6lS6dTpdxVhb88/I6+Hs+438c3lfUow==} - dev: false + classnames@2.5.1: {} - /client-only@0.0.1: - resolution: {integrity: sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==} - dev: false + client-only@0.0.1: {} - /cliui@7.0.4: - resolution: {integrity: sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==} + cliui@7.0.4: dependencies: string-width: 4.2.3 strip-ansi: 6.0.1 wrap-ansi: 7.0.0 - dev: true - /clsx@2.0.0: - resolution: {integrity: sha512-rQ1+kcj+ttHG0MKVGBUXwayCCF1oh39BF5COIpRzuCEv8Mwjv0XucrI2ExNTOn9IlLifGClWQcU9BrZORvtw6Q==} - engines: {node: '>=6'} - dev: false + clsx@2.0.0: {} - /clsx@2.1.1: - resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==} - engines: {node: '>=6'} - dev: false + clsx@2.1.1: {} - /color-convert@1.9.3: - resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} + color-convert@1.9.3: dependencies: color-name: 1.1.3 - dev: false - /color-convert@2.0.1: - resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} - engines: {node: '>=7.0.0'} + color-convert@2.0.1: dependencies: color-name: 1.1.4 - /color-name@1.1.3: - resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} - dev: false + color-name@1.1.3: {} - /color-name@1.1.4: - resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + color-name@1.1.4: {} - /color-string@1.9.1: - resolution: {integrity: sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==} + color-string@1.9.1: dependencies: color-name: 1.1.4 simple-swizzle: 0.2.2 - dev: false - /color@4.2.3: - resolution: {integrity: sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==} - engines: {node: '>=12.5.0'} + color@4.2.3: dependencies: color-convert: 2.0.1 color-string: 1.9.1 - dev: false - /colorette@2.0.20: - resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==} - dev: false + colorette@2.0.20: {} - /combined-stream@1.0.8: - resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} - engines: {node: '>= 0.8'} + combined-stream@1.0.8: dependencies: delayed-stream: 1.0.0 - dev: false - /commander@10.0.1: - resolution: {integrity: sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==} - engines: {node: '>=14'} - dev: false + commander@10.0.1: {} - /commander@2.20.3: - resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} - dev: false + commander@2.20.3: {} - /commander@4.1.1: - resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} - engines: {node: '>= 6'} + commander@4.1.1: {} - /comment-parser@1.4.1: - resolution: {integrity: sha512-buhp5kePrmda3vhc5B9t7pUQXAb2Tnd0qgpkIhPhkHXxJpiPJ11H0ZEU0oBpJ2QztSbzG/ZxMj/CHsYJqRHmyg==} - engines: {node: '>= 12.0.0'} - dev: true + comment-parser@1.4.1: {} - /concat-map@0.0.1: - resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} - dev: true + concat-map@0.0.1: {} - /condense-newlines@0.2.1: - resolution: {integrity: sha512-P7X+QL9Hb9B/c8HI5BFFKmjgBu2XpQuF98WZ9XkO+dBGgk5XgwiQz7o1SmpglNWId3581UcS0SFAWfoIhMHPfg==} - engines: {node: '>=0.10.0'} + condense-newlines@0.2.1: dependencies: extend-shallow: 2.0.1 is-whitespace: 0.3.0 kind-of: 3.2.2 - dev: false - /config-chain@1.1.13: - resolution: {integrity: sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==} + config-chain@1.1.13: dependencies: ini: 1.3.8 proto-list: 1.2.4 - dev: false - /console-table-printer@2.11.2: - resolution: {integrity: sha512-uuUHie0sfPP542TKGzPFal0W1wo1beuKAqIZdaavcONx8OoqdnJRKjkinbRTOta4FaCa1RcIL+7mMJWX3pQGVg==} + console-table-printer@2.11.2: dependencies: simple-wcswidth: 1.0.1 - dev: false - /convert-source-map@1.9.0: - resolution: {integrity: sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==} - dev: false + convert-source-map@1.9.0: {} - /copyfiles@2.4.1: - resolution: {integrity: sha512-fereAvAvxDrQDOXybk3Qu3dPbOoKoysFMWtkY3mv5BsL8//OSZVL5DCLYqgRfY5cWirgRzlC+WSrxp6Bo3eNZg==} - hasBin: true + copyfiles@2.4.1: dependencies: glob: 7.2.3 minimatch: 3.1.2 @@ -4523,130 +7317,74 @@ packages: through2: 2.0.5 untildify: 4.0.0 yargs: 16.2.0 - dev: true - /core-util-is@1.0.3: - resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} - dev: true + core-util-is@1.0.3: {} - /cosmiconfig@7.1.0: - resolution: {integrity: sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==} - engines: {node: '>=10'} + cosmiconfig@7.1.0: dependencies: '@types/parse-json': 4.0.2 import-fresh: 3.3.0 parse-json: 5.2.0 path-type: 4.0.0 yaml: 1.10.2 - dev: false - /cross-env@7.0.3: - resolution: {integrity: sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==} - engines: {node: '>=10.14', npm: '>=6', yarn: '>=1'} - hasBin: true + cross-env@7.0.3: dependencies: cross-spawn: 7.0.3 - dev: false - /cross-spawn@7.0.3: - resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} - engines: {node: '>= 8'} + cross-spawn@7.0.3: dependencies: path-key: 3.1.1 shebang-command: 2.0.0 which: 2.0.2 - /crypt@0.0.2: - resolution: {integrity: sha512-mCxBlsHFYh9C+HVpiEacem8FEBnMXgU9gy4zmNC+SXAZNB/1idgp/aulFJ4FgCi7GPEVbfyng092GqL2k2rmow==} - dev: false + crypt@0.0.2: {} - /cssesc@3.0.0: - resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} - engines: {node: '>=4'} - hasBin: true + cssesc@3.0.0: {} - /cssfilter@0.0.10: - resolution: {integrity: sha512-FAaLDaplstoRsDR8XGYH51znUN0UY7nMc6Z9/fvE8EXGwvJE9hu7W2vHwx1+bd6gCYnln9nLbzxFTrcO9YQDZw==} - dev: false + cssfilter@0.0.10: {} - /csstype@3.1.3: - resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} + csstype@3.1.3: {} - /damerau-levenshtein@1.0.8: - resolution: {integrity: sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==} - dev: true + damerau-levenshtein@1.0.8: {} - /data-view-buffer@1.0.1: - resolution: {integrity: sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==} - engines: {node: '>= 0.4'} + data-view-buffer@1.0.1: dependencies: call-bind: 1.0.7 es-errors: 1.3.0 is-data-view: 1.0.1 - dev: true - /data-view-byte-length@1.0.1: - resolution: {integrity: sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==} - engines: {node: '>= 0.4'} + data-view-byte-length@1.0.1: dependencies: call-bind: 1.0.7 es-errors: 1.3.0 is-data-view: 1.0.1 - dev: true - /data-view-byte-offset@1.0.0: - resolution: {integrity: sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==} - engines: {node: '>= 0.4'} + data-view-byte-offset@1.0.0: dependencies: call-bind: 1.0.7 es-errors: 1.3.0 is-data-view: 1.0.1 - dev: true - /dataloader@2.2.2: - resolution: {integrity: sha512-8YnDaaf7N3k/q5HnTJVuzSyLETjoZjVmHc4AeKAzOvKHEFQKcn64OKBfzHYtE9zGjctNM7V9I0MfnUVLpi7M5g==} - dev: false + dataloader@2.2.2: {} - /date-fns@3.3.1: - resolution: {integrity: sha512-y8e109LYGgoQDveiEBD3DYXKba1jWf5BA8YU1FL5Tvm0BTdEfy54WLCwnuYWZNnzzvALy/QQ4Hov+Q9RVRv+Zw==} - dev: false + date-fns@3.3.1: {} - /dateformat@4.6.3: - resolution: {integrity: sha512-2P0p0pFGzHS5EMnhdxQi7aJN+iMheud0UhG4dlE1DLAlvL8JHjJJTX/CSm4JXwV0Ka5nGk3zC5mcb5bUQUxxMA==} - dev: false + dateformat@4.6.3: {} - /debug@3.2.7: - resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - dependencies: - ms: 2.1.3 - dev: true - - /debug@4.3.7: - resolution: {integrity: sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==} - engines: {node: '>=6.0'} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true + debug@3.2.7: dependencies: ms: 2.1.3 - /decompress-response@6.0.0: - resolution: {integrity: sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==} - engines: {node: '>=10'} + debug@4.3.7: + dependencies: + ms: 2.1.3 + + decompress-response@6.0.0: dependencies: mimic-response: 3.1.0 - dev: false - /deep-equal@2.2.3: - resolution: {integrity: sha512-ZIwpnevOurS8bpT4192sqAowWM76JDKSHYzMLty3BZGSswgq6pBaH3DhCSW5xVAZICZyKdOBPjwww5wfgT/6PA==} - engines: {node: '>= 0.4'} + deep-equal@2.2.3: dependencies: array-buffer-byte-length: 1.0.1 call-bind: 1.0.7 @@ -4666,183 +7404,109 @@ packages: which-boxed-primitive: 1.0.2 which-collection: 1.0.2 which-typed-array: 1.1.15 - dev: true - /deep-extend@0.6.0: - resolution: {integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==} - engines: {node: '>=4.0.0'} - dev: false + deep-extend@0.6.0: {} - /deep-is@0.1.4: - resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} - dev: true + deep-is@0.1.4: {} - /deepmerge@4.3.1: - resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} - engines: {node: '>=0.10.0'} - dev: false + deepmerge@4.3.1: {} - /define-data-property@1.1.4: - resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==} - engines: {node: '>= 0.4'} + define-data-property@1.1.4: dependencies: es-define-property: 1.0.0 es-errors: 1.3.0 gopd: 1.0.1 - dev: true - /define-properties@1.2.1: - resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} - engines: {node: '>= 0.4'} + define-properties@1.2.1: dependencies: define-data-property: 1.1.4 has-property-descriptors: 1.0.2 object-keys: 1.1.1 - dev: true - /delayed-stream@1.0.0: - resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} - engines: {node: '>=0.4.0'} - dev: false + delayed-stream@1.0.0: {} - /dequal@2.0.3: - resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} - engines: {node: '>=6'} - dev: false + dequal@2.0.3: {} - /detect-libc@2.0.3: - resolution: {integrity: sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==} - engines: {node: '>=8'} - dev: false + detect-libc@2.0.3: {} - /detect-node-es@1.1.0: - resolution: {integrity: sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==} - dev: false + detect-node-es@1.1.0: {} - /didyoumean@1.2.2: - resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==} + didyoumean@1.2.2: {} - /diff@5.2.0: - resolution: {integrity: sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==} - engines: {node: '>=0.3.1'} - dev: false + diff@5.2.0: {} - /dir-glob@3.0.1: - resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} - engines: {node: '>=8'} + dir-glob@3.0.1: dependencies: path-type: 4.0.0 - dev: true - /dlv@1.1.3: - resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==} + dlv@1.1.3: {} - /doctrine@2.1.0: - resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==} - engines: {node: '>=0.10.0'} + doctrine@2.1.0: dependencies: esutils: 2.0.3 - dev: true - /doctrine@3.0.0: - resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} - engines: {node: '>=6.0.0'} + doctrine@3.0.0: dependencies: esutils: 2.0.3 - dev: true - /dom-helpers@5.2.1: - resolution: {integrity: sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==} + dom-helpers@5.2.1: dependencies: '@babel/runtime': 7.25.6 csstype: 3.1.3 - dev: false - /dom-serializer@2.0.0: - resolution: {integrity: sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==} + dom-serializer@2.0.0: dependencies: domelementtype: 2.3.0 domhandler: 5.0.3 entities: 4.5.0 - dev: false - /domelementtype@2.3.0: - resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==} - dev: false + domelementtype@2.3.0: {} - /domhandler@5.0.3: - resolution: {integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==} - engines: {node: '>= 4'} + domhandler@5.0.3: dependencies: domelementtype: 2.3.0 - dev: false - /domutils@3.1.0: - resolution: {integrity: sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==} + domutils@3.1.0: dependencies: dom-serializer: 2.0.0 domelementtype: 2.3.0 domhandler: 5.0.3 - dev: false - /eastasianwidth@0.2.0: - resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} + eastasianwidth@0.2.0: {} - /ecdsa-sig-formatter@1.0.11: - resolution: {integrity: sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==} + ecdsa-sig-formatter@1.0.11: dependencies: safe-buffer: 5.2.1 - dev: false - /editorconfig@1.0.4: - resolution: {integrity: sha512-L9Qe08KWTlqYMVvMcTIvMAdl1cDUubzRNYL+WfA4bLDMHe4nemKkpmYzkznE1FwLKu0EEmy6obgQKzMJrg4x9Q==} - engines: {node: '>=14'} - hasBin: true + editorconfig@1.0.4: dependencies: '@one-ini/wasm': 0.1.1 commander: 10.0.1 minimatch: 9.0.1 semver: 7.6.3 - dev: false - /electron-to-chromium@1.5.23: - resolution: {integrity: sha512-mBhODedOXg4v5QWwl21DjM5amzjmI1zw9EPrPK/5Wx7C8jt33bpZNrC7OhHUG3pxRtbLpr3W2dXT+Ph1SsfRZA==} - dev: true + electron-to-chromium@1.5.23: {} - /emoji-regex@8.0.0: - resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} + emoji-regex@8.0.0: {} - /emoji-regex@9.2.2: - resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} + emoji-regex@9.2.2: {} - /end-of-stream@1.4.4: - resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} + end-of-stream@1.4.4: dependencies: once: 1.4.0 - dev: false - /enhanced-resolve@5.17.1: - resolution: {integrity: sha512-LMHl3dXhTcfv8gM4kEzIUeTQ+7fpdA0l2tUf34BddXPkz2A5xJ5L/Pchd5BL6rdccM9QGvu0sWZzK1Z1t4wwyg==} - engines: {node: '>=10.13.0'} + enhanced-resolve@5.17.1: dependencies: graceful-fs: 4.2.11 tapable: 2.2.1 - dev: true - /entities@4.5.0: - resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} - engines: {node: '>=0.12'} - dev: false + entities@4.5.0: {} - /error-ex@1.3.2: - resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} + error-ex@1.3.2: dependencies: is-arrayish: 0.2.1 - dev: false - /es-abstract@1.23.3: - resolution: {integrity: sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==} - engines: {node: '>= 0.4'} + es-abstract@1.23.3: dependencies: array-buffer-byte-length: 1.0.1 arraybuffer.prototype.slice: 1.0.3 @@ -4890,22 +7554,14 @@ packages: typed-array-length: 1.0.6 unbox-primitive: 1.0.2 which-typed-array: 1.1.15 - dev: true - /es-define-property@1.0.0: - resolution: {integrity: sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==} - engines: {node: '>= 0.4'} + es-define-property@1.0.0: dependencies: get-intrinsic: 1.2.4 - dev: true - /es-errors@1.3.0: - resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} - engines: {node: '>= 0.4'} - dev: true + es-errors@1.3.0: {} - /es-get-iterator@1.1.3: - resolution: {integrity: sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw==} + es-get-iterator@1.1.3: dependencies: call-bind: 1.0.7 get-intrinsic: 1.2.4 @@ -4916,11 +7572,8 @@ packages: is-string: 1.0.7 isarray: 2.0.5 stop-iteration-iterator: 1.0.0 - dev: true - /es-iterator-helpers@1.0.19: - resolution: {integrity: sha512-zoMwbCcH5hwUkKJkT8kDIBZSz9I6mVG//+lDCinLCGov4+r7NIy0ld8o03M0cJxl2spVf6ESYVS6/gpIfq1FFw==} - engines: {node: '>= 0.4'} + es-iterator-helpers@1.0.19: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 @@ -4936,44 +7589,28 @@ packages: internal-slot: 1.0.7 iterator.prototype: 1.1.2 safe-array-concat: 1.1.2 - dev: true - /es-object-atoms@1.0.0: - resolution: {integrity: sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==} - engines: {node: '>= 0.4'} + es-object-atoms@1.0.0: dependencies: es-errors: 1.3.0 - dev: true - /es-set-tostringtag@2.0.3: - resolution: {integrity: sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==} - engines: {node: '>= 0.4'} + es-set-tostringtag@2.0.3: dependencies: get-intrinsic: 1.2.4 has-tostringtag: 1.0.2 hasown: 2.0.2 - dev: true - /es-shim-unscopables@1.0.2: - resolution: {integrity: sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==} + es-shim-unscopables@1.0.2: dependencies: hasown: 2.0.2 - dev: true - /es-to-primitive@1.2.1: - resolution: {integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==} - engines: {node: '>= 0.4'} + es-to-primitive@1.2.1: dependencies: is-callable: 1.2.7 is-date-object: 1.0.5 is-symbol: 1.0.4 - dev: true - /esbuild@0.23.1: - resolution: {integrity: sha512-VVNz/9Sa0bs5SELtn3f7qhJCDPCF5oMEl5cO9/SSinpE9hbPVvxbd572HH5AKiP7WD8INO53GgfDDhRjkylHEg==} - engines: {node: '>=18'} - hasBin: true - requiresBuild: true + esbuild@0.23.1: optionalDependencies: '@esbuild/aix-ppc64': 0.23.1 '@esbuild/android-arm': 0.23.1 @@ -4999,34 +7636,16 @@ packages: '@esbuild/win32-arm64': 0.23.1 '@esbuild/win32-ia32': 0.23.1 '@esbuild/win32-x64': 0.23.1 - dev: false - /escalade@3.2.0: - resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} - engines: {node: '>=6'} - dev: true + escalade@3.2.0: {} - /escape-html@1.0.3: - resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==} - dev: false + escape-html@1.0.3: {} - /escape-string-regexp@1.0.5: - resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} - engines: {node: '>=0.8.0'} - dev: false + escape-string-regexp@1.0.5: {} - /escape-string-regexp@4.0.0: - resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} - engines: {node: '>=10'} + escape-string-regexp@4.0.0: {} - /eslint-config-next@15.0.0-canary.104(eslint@8.57.0)(typescript@5.6.2): - resolution: {integrity: sha512-8DbGD//1YDUrN4+cCATt8DKnXEr4M8b3U/p/EZPH2QS6F7zAEZmkcdjfku5ZYz9HTo4SfImcApiCBXZRQcVthQ==} - peerDependencies: - eslint: ^7.23.0 || ^8.0.0 - typescript: '>=3.3.1' - peerDependenciesMeta: - typescript: - optional: true + eslint-config-next@15.0.0-canary.104(eslint@8.57.0)(typescript@5.6.2): dependencies: '@next/eslint-plugin-next': 15.0.0-canary.104 '@rushstack/eslint-patch': 1.10.4 @@ -5044,39 +7663,20 @@ packages: - eslint-import-resolver-webpack - eslint-plugin-import-x - supports-color - dev: true - /eslint-config-prettier@9.0.0(eslint@8.48.0): - resolution: {integrity: sha512-IcJsTkJae2S35pRsRAwoCE+925rJJStOdkKnLVgtE+tEpqU0EVVM7OqrwxqgptKdX29NUwC82I5pXsGFIgSevw==} - hasBin: true - peerDependencies: - eslint: '>=7.0.0' + eslint-config-prettier@9.0.0(eslint@8.48.0): dependencies: eslint: 8.48.0 - dev: true - /eslint-import-resolver-node@0.3.9: - resolution: {integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==} + eslint-import-resolver-node@0.3.9: dependencies: debug: 3.2.7 is-core-module: 2.15.1 resolve: 1.22.8 transitivePeerDependencies: - supports-color - dev: true - /eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@7.18.0)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.30.0)(eslint@8.57.0): - resolution: {integrity: sha512-ud9aw4szY9cCT1EWWdGv1L1XR6hh2PaRWif0j2QjQ0pgTY/69iw+W0Z4qZv5wHahOl8isEr+k/JnyAqNQkLkIA==} - engines: {node: ^14.18.0 || >=16.0.0} - peerDependencies: - eslint: '*' - eslint-plugin-import: '*' - eslint-plugin-import-x: '*' - peerDependenciesMeta: - eslint-plugin-import: - optional: true - eslint-plugin-import-x: - optional: true + eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@7.18.0)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.30.0)(eslint@8.57.0): dependencies: '@nolyfill/is-core-module': 1.0.39 debug: 4.3.7 @@ -5093,28 +7693,8 @@ packages: - eslint-import-resolver-node - eslint-import-resolver-webpack - supports-color - dev: true - /eslint-module-utils@2.11.0(@typescript-eslint/parser@6.6.0)(eslint-import-resolver-node@0.3.9)(eslint@8.48.0): - resolution: {integrity: sha512-gbBE5Hitek/oG6MUVj6sFuzEjA/ClzNflVrLovHi/JgLdC7fiN5gLAY1WIPW1a0V5I999MnsrvVrCOGmmVqDBQ==} - engines: {node: '>=4'} - peerDependencies: - '@typescript-eslint/parser': '*' - eslint: '*' - eslint-import-resolver-node: '*' - eslint-import-resolver-typescript: '*' - eslint-import-resolver-webpack: '*' - peerDependenciesMeta: - '@typescript-eslint/parser': - optional: true - eslint: - optional: true - eslint-import-resolver-node: - optional: true - eslint-import-resolver-typescript: - optional: true - eslint-import-resolver-webpack: - optional: true + eslint-module-utils@2.11.0(@typescript-eslint/parser@6.6.0)(eslint-import-resolver-node@0.3.9)(eslint@8.48.0): dependencies: '@typescript-eslint/parser': 6.6.0(eslint@8.48.0)(typescript@5.6.2) debug: 3.2.7 @@ -5122,28 +7702,8 @@ packages: eslint-import-resolver-node: 0.3.9 transitivePeerDependencies: - supports-color - dev: true - /eslint-module-utils@2.11.0(@typescript-eslint/parser@7.18.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3)(eslint@8.57.0): - resolution: {integrity: sha512-gbBE5Hitek/oG6MUVj6sFuzEjA/ClzNflVrLovHi/JgLdC7fiN5gLAY1WIPW1a0V5I999MnsrvVrCOGmmVqDBQ==} - engines: {node: '>=4'} - peerDependencies: - '@typescript-eslint/parser': '*' - eslint: '*' - eslint-import-resolver-node: '*' - eslint-import-resolver-typescript: '*' - eslint-import-resolver-webpack: '*' - peerDependenciesMeta: - '@typescript-eslint/parser': - optional: true - eslint: - optional: true - eslint-import-resolver-node: - optional: true - eslint-import-resolver-typescript: - optional: true - eslint-import-resolver-webpack: - optional: true + eslint-module-utils@2.11.0(@typescript-eslint/parser@7.18.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3)(eslint@8.57.0): dependencies: '@typescript-eslint/parser': 7.18.0(eslint@8.57.0)(typescript@5.6.2) debug: 3.2.7 @@ -5152,28 +7712,14 @@ packages: eslint-import-resolver-typescript: 3.6.3(@typescript-eslint/parser@7.18.0)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.30.0)(eslint@8.57.0) transitivePeerDependencies: - supports-color - dev: true - /eslint-plugin-es@3.0.1(eslint@8.48.0): - resolution: {integrity: sha512-GUmAsJaN4Fc7Gbtl8uOBlayo2DqhwWvEzykMHSCZHU3XdJ+NSzzZcVhXh3VxX5icqQ+oQdIEawXX8xkR3mIFmQ==} - engines: {node: '>=8.10.0'} - peerDependencies: - eslint: '>=4.19.1' + eslint-plugin-es@3.0.1(eslint@8.48.0): dependencies: eslint: 8.48.0 eslint-utils: 2.1.0 regexpp: 3.2.0 - dev: true - /eslint-plugin-import@2.28.1(@typescript-eslint/parser@6.6.0)(eslint@8.48.0): - resolution: {integrity: sha512-9I9hFlITvOV55alzoKBI+K9q74kv0iKMeY6av5+umsNwayt59fz692daGyjR+oStBQgx6nwR9rXldDev3Clw+A==} - engines: {node: '>=4'} - peerDependencies: - '@typescript-eslint/parser': '*' - eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 - peerDependenciesMeta: - '@typescript-eslint/parser': - optional: true + eslint-plugin-import@2.28.1(@typescript-eslint/parser@6.6.0)(eslint@8.48.0): dependencies: '@typescript-eslint/parser': 6.6.0(eslint@8.48.0)(typescript@5.6.2) array-includes: 3.1.8 @@ -5198,17 +7744,8 @@ packages: - eslint-import-resolver-typescript - eslint-import-resolver-webpack - supports-color - dev: true - /eslint-plugin-import@2.30.0(@typescript-eslint/parser@7.18.0)(eslint-import-resolver-typescript@3.6.3)(eslint@8.57.0): - resolution: {integrity: sha512-/mHNE9jINJfiD2EKkg1BKyPyUk4zdnT54YgbOgfjSakWT5oyX/qQLVNTkehyfpcMxZXMy1zyonZ2v7hZTX43Yw==} - engines: {node: '>=4'} - peerDependencies: - '@typescript-eslint/parser': '*' - eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 - peerDependenciesMeta: - '@typescript-eslint/parser': - optional: true + eslint-plugin-import@2.30.0(@typescript-eslint/parser@7.18.0)(eslint-import-resolver-typescript@3.6.3)(eslint@8.57.0): dependencies: '@rtsao/scc': 1.1.0 '@typescript-eslint/parser': 7.18.0(eslint@8.57.0)(typescript@5.6.2) @@ -5234,35 +7771,14 @@ packages: - eslint-import-resolver-typescript - eslint-import-resolver-webpack - supports-color - dev: true - /eslint-plugin-jest-dom@5.1.0(eslint@8.48.0): - resolution: {integrity: sha512-JIXZp+E/h/aGlP/rQc4tuOejiHlZXg65qw8JAJMIJA5VsdjOkss/SYcRSqBrQuEOytEM8JvngUjcz31d1RrCrA==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0, npm: '>=6', yarn: '>=1'} - peerDependencies: - '@testing-library/dom': ^8.0.0 || ^9.0.0 - eslint: ^6.8.0 || ^7.0.0 || ^8.0.0 - peerDependenciesMeta: - '@testing-library/dom': - optional: true + eslint-plugin-jest-dom@5.1.0(eslint@8.48.0): dependencies: '@babel/runtime': 7.25.6 eslint: 8.48.0 requireindex: 1.2.0 - dev: true - /eslint-plugin-jest@27.2.3(@typescript-eslint/eslint-plugin@6.6.0)(eslint@8.48.0)(typescript@5.6.2): - resolution: {integrity: sha512-sRLlSCpICzWuje66Gl9zvdF6mwD5X86I4u55hJyFBsxYOsBCmT5+kSUjf+fkFWVMMgpzNEupjW8WzUqi83hJAQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - peerDependencies: - '@typescript-eslint/eslint-plugin': ^5.0.0 || ^6.0.0 - eslint: ^7.0.0 || ^8.0.0 - jest: '*' - peerDependenciesMeta: - '@typescript-eslint/eslint-plugin': - optional: true - jest: - optional: true + eslint-plugin-jest@27.2.3(@typescript-eslint/eslint-plugin@6.6.0)(eslint@8.48.0)(typescript@5.6.2): dependencies: '@typescript-eslint/eslint-plugin': 6.6.0(@typescript-eslint/parser@6.6.0)(eslint@8.48.0)(typescript@5.6.2) '@typescript-eslint/utils': 5.62.0(eslint@8.48.0)(typescript@5.6.2) @@ -5270,13 +7786,8 @@ packages: transitivePeerDependencies: - supports-color - typescript - dev: true - /eslint-plugin-jsx-a11y@6.10.0(eslint@8.57.0): - resolution: {integrity: sha512-ySOHvXX8eSN6zz8Bywacm7CvGNhUtdjvqfQDVe6020TUK34Cywkw7m0KsCCk1Qtm9G1FayfTN1/7mMYnYO2Bhg==} - engines: {node: '>=4.0'} - peerDependencies: - eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9 + eslint-plugin-jsx-a11y@6.10.0(eslint@8.57.0): dependencies: aria-query: 5.1.3 array-includes: 3.1.8 @@ -5295,13 +7806,8 @@ packages: object.fromentries: 2.0.8 safe-regex-test: 1.0.3 string.prototype.includes: 2.0.0 - dev: true - /eslint-plugin-jsx-a11y@6.7.1(eslint@8.48.0): - resolution: {integrity: sha512-63Bog4iIethyo8smBklORknVjB0T2dwB8Mr/hIC+fBS0uyHdYYpzM/Ed+YC8VxTjlXHEWFOdmgwcDn1U2L9VCA==} - engines: {node: '>=4.0'} - peerDependencies: - eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 + eslint-plugin-jsx-a11y@6.7.1(eslint@8.48.0): dependencies: '@babel/runtime': 7.25.6 aria-query: 5.3.1 @@ -5320,13 +7826,8 @@ packages: object.entries: 1.1.8 object.fromentries: 2.0.8 semver: 6.3.1 - dev: true - /eslint-plugin-node@11.1.0(eslint@8.48.0): - resolution: {integrity: sha512-oUwtPJ1W0SKD0Tr+wqu92c5xuCeQqB3hSCHasn/ZgjFdA9iDGNkNf2Zi9ztY7X+hNuMib23LNGRm6+uN+KLE3g==} - engines: {node: '>=8.10.0'} - peerDependencies: - eslint: '>=5.16.0' + eslint-plugin-node@11.1.0(eslint@8.48.0): dependencies: eslint: 8.48.0 eslint-plugin-es: 3.0.1(eslint@8.48.0) @@ -5335,25 +7836,8 @@ packages: minimatch: 3.1.2 resolve: 1.22.8 semver: 6.3.1 - dev: true - /eslint-plugin-perfectionist@2.0.0(eslint@8.48.0)(typescript@5.6.2): - resolution: {integrity: sha512-VqUk5WR7Dj8L0gNPqn7bl7NTHFYB8l5um4wo7hkMp0Dl+k8RHDAsOef4pPrty6G8vjnzvb3xIZNNshmDJI8SdA==} - peerDependencies: - astro-eslint-parser: ^0.14.0 - eslint: '>=8.0.0' - svelte: '>=3.0.0' - svelte-eslint-parser: ^0.32.0 - vue-eslint-parser: '>=9.0.0' - peerDependenciesMeta: - astro-eslint-parser: - optional: true - svelte: - optional: true - svelte-eslint-parser: - optional: true - vue-eslint-parser: - optional: true + eslint-plugin-perfectionist@2.0.0(eslint@8.48.0)(typescript@5.6.2): dependencies: '@typescript-eslint/utils': 6.21.0(eslint@8.48.0)(typescript@5.6.2) eslint: 8.48.0 @@ -5362,44 +7846,21 @@ packages: transitivePeerDependencies: - supports-color - typescript - dev: true - /eslint-plugin-playwright@0.16.0(eslint-plugin-jest@27.2.3)(eslint@8.48.0): - resolution: {integrity: sha512-DcHpF0SLbNeh9MT4pMzUGuUSnJ7q5MWbP8sSEFIMS6j7Ggnduq8ghNlfhURgty4c1YFny7Ge9xYTO1FSAoV2Vw==} - peerDependencies: - eslint: '>=7' - eslint-plugin-jest: '>=25' - peerDependenciesMeta: - eslint-plugin-jest: - optional: true + eslint-plugin-playwright@0.16.0(eslint-plugin-jest@27.2.3)(eslint@8.48.0): dependencies: eslint: 8.48.0 eslint-plugin-jest: 27.2.3(@typescript-eslint/eslint-plugin@6.6.0)(eslint@8.48.0)(typescript@5.6.2) - dev: true - /eslint-plugin-react-hooks@4.6.0(eslint@8.48.0): - resolution: {integrity: sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==} - engines: {node: '>=10'} - peerDependencies: - eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 + eslint-plugin-react-hooks@4.6.0(eslint@8.48.0): dependencies: eslint: 8.48.0 - dev: true - /eslint-plugin-react-hooks@4.6.2(eslint@8.57.0): - resolution: {integrity: sha512-QzliNJq4GinDBcD8gPB5v0wh6g8q3SUi6EFF0x8N/BL9PoVs0atuGc47ozMRyOWAKdwaZ5OnbOEa3WR+dSGKuQ==} - engines: {node: '>=10'} - peerDependencies: - eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 + eslint-plugin-react-hooks@4.6.2(eslint@8.57.0): dependencies: eslint: 8.57.0 - dev: true - /eslint-plugin-react@7.33.2(eslint@8.48.0): - resolution: {integrity: sha512-73QQMKALArI8/7xGLNI/3LylrEYrlKZSb5C9+q3OtOewTnMQi5cT+aE9E41sLCmli3I9PGGmD1yiZydyo4FEPw==} - engines: {node: '>=4'} - peerDependencies: - eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 + eslint-plugin-react@7.33.2(eslint@8.48.0): dependencies: array-includes: 3.1.8 array.prototype.flatmap: 1.3.2 @@ -5418,13 +7879,8 @@ packages: resolve: 2.0.0-next.5 semver: 6.3.1 string.prototype.matchall: 4.0.11 - dev: true - /eslint-plugin-react@7.36.1(eslint@8.57.0): - resolution: {integrity: sha512-/qwbqNXZoq+VP30s1d4Nc1C5GTxjJQjk4Jzs4Wq2qzxFM7dSmuG2UkIjg2USMLh3A/aVcUNrK7v0J5U1XEGGwA==} - engines: {node: '>=4'} - peerDependencies: - eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7 + eslint-plugin-react@7.36.1(eslint@8.57.0): dependencies: array-includes: 3.1.8 array.prototype.findlast: 1.2.5 @@ -5445,13 +7901,8 @@ packages: semver: 6.3.1 string.prototype.matchall: 4.0.11 string.prototype.repeat: 1.0.0 - dev: true - /eslint-plugin-regexp@1.15.0(eslint@8.48.0): - resolution: {integrity: sha512-YEtQPfdudafU7RBIFci81R/Q1yErm0mVh3BkGnXD2Dk8DLwTFdc2ITYH1wCnHKim2gnHfPFgrkh+b2ozyyU7ag==} - engines: {node: ^12 || >=14} - peerDependencies: - eslint: '>=6.0.0' + eslint-plugin-regexp@1.15.0(eslint@8.48.0): dependencies: '@eslint-community/eslint-utils': 4.4.0(eslint@8.48.0) '@eslint-community/regexpp': 4.11.1 @@ -5462,45 +7913,26 @@ packages: refa: 0.11.0 regexp-ast-analysis: 0.6.0 scslre: 0.2.0 - dev: true - /eslint-scope@5.1.1: - resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} - engines: {node: '>=8.0.0'} + eslint-scope@5.1.1: dependencies: esrecurse: 4.3.0 estraverse: 4.3.0 - dev: true - /eslint-scope@7.2.2: - resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + eslint-scope@7.2.2: dependencies: esrecurse: 4.3.0 estraverse: 5.3.0 - dev: true - /eslint-utils@2.1.0: - resolution: {integrity: sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==} - engines: {node: '>=6'} + eslint-utils@2.1.0: dependencies: eslint-visitor-keys: 1.3.0 - dev: true - /eslint-visitor-keys@1.3.0: - resolution: {integrity: sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==} - engines: {node: '>=4'} - dev: true + eslint-visitor-keys@1.3.0: {} - /eslint-visitor-keys@3.4.3: - resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - dev: true + eslint-visitor-keys@3.4.3: {} - /eslint@8.48.0: - resolution: {integrity: sha512-sb6DLeIuRXxeM1YljSe1KEx9/YYeZFQWcV8Rq9HfigmdDEugjLEVEa1ozDjL6YDjBpQHPJxJzze+alxi4T3OLg==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - hasBin: true + eslint@8.48.0: dependencies: '@eslint-community/eslint-utils': 4.4.0(eslint@8.48.0) '@eslint-community/regexpp': 4.11.1 @@ -5541,12 +7973,8 @@ packages: text-table: 0.2.0 transitivePeerDependencies: - supports-color - dev: true - /eslint@8.57.0: - resolution: {integrity: sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - hasBin: true + eslint@8.57.0: dependencies: '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) '@eslint-community/regexpp': 4.11.1 @@ -5588,97 +8016,46 @@ packages: text-table: 0.2.0 transitivePeerDependencies: - supports-color - dev: true - /espree@9.6.1: - resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + espree@9.6.1: dependencies: acorn: 8.12.1 acorn-jsx: 5.3.2(acorn@8.12.1) eslint-visitor-keys: 3.4.3 - dev: true - /esquery@1.6.0: - resolution: {integrity: sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==} - engines: {node: '>=0.10'} + esquery@1.6.0: dependencies: estraverse: 5.3.0 - dev: true - /esrecurse@4.3.0: - resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} - engines: {node: '>=4.0'} + esrecurse@4.3.0: dependencies: estraverse: 5.3.0 - dev: true - /estraverse@4.3.0: - resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==} - engines: {node: '>=4.0'} - dev: true + estraverse@4.3.0: {} - /estraverse@5.3.0: - resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} - engines: {node: '>=4.0'} - dev: true + estraverse@5.3.0: {} - /esutils@2.0.3: - resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} - engines: {node: '>=0.10.0'} - dev: true + esutils@2.0.3: {} - /event-target-shim@5.0.1: - resolution: {integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==} - engines: {node: '>=6'} - dev: false + event-target-shim@5.0.1: {} - /events@3.3.0: - resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} - engines: {node: '>=0.8.x'} - dev: false + events@3.3.0: {} - /expand-template@2.0.3: - resolution: {integrity: sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==} - engines: {node: '>=6'} - dev: false + expand-template@2.0.3: {} - /extend-shallow@2.0.1: - resolution: {integrity: sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==} - engines: {node: '>=0.10.0'} + extend-shallow@2.0.1: dependencies: is-extendable: 0.1.1 - dev: false - /fast-base64-decode@1.0.0: - resolution: {integrity: sha512-qwaScUgUGBYeDNRnbc/KyllVU88Jk1pRHPStuF/lO7B0/RTRLj7U0lkdTAutlBblY08rwZDff6tNU9cjv6j//Q==} - dev: false + fast-base64-decode@1.0.0: {} - /fast-copy@3.0.2: - resolution: {integrity: sha512-dl0O9Vhju8IrcLndv2eU4ldt1ftXMqqfgN4H1cpmGV7P6jeB9FwpN9a2c8DPGE1Ys88rNUJVYDHq73CGAGOPfQ==} - dev: false + fast-copy@3.0.2: {} - /fast-deep-equal@3.1.3: - resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} + fast-deep-equal@3.1.3: {} - /fast-fifo@1.3.2: - resolution: {integrity: sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==} - dev: false + fast-fifo@1.3.2: {} - /fast-glob@3.3.1: - resolution: {integrity: sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==} - engines: {node: '>=8.6.0'} - dependencies: - '@nodelib/fs.stat': 2.0.5 - '@nodelib/fs.walk': 1.2.8 - glob-parent: 5.1.2 - merge2: 1.4.1 - micromatch: 4.0.8 - dev: true - - /fast-glob@3.3.2: - resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==} - engines: {node: '>=8.6.0'} + fast-glob@3.3.1: dependencies: '@nodelib/fs.stat': 2.0.5 '@nodelib/fs.walk': 1.2.8 @@ -5686,231 +8063,145 @@ packages: merge2: 1.4.1 micromatch: 4.0.8 - /fast-json-stable-stringify@2.1.0: - resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} - dev: true + fast-glob@3.3.2: + dependencies: + '@nodelib/fs.stat': 2.0.5 + '@nodelib/fs.walk': 1.2.8 + glob-parent: 5.1.2 + merge2: 1.4.1 + micromatch: 4.0.8 - /fast-levenshtein@2.0.6: - resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} - dev: true + fast-json-stable-stringify@2.1.0: {} - /fast-redact@3.5.0: - resolution: {integrity: sha512-dwsoQlS7h9hMeYUq1W++23NDcBLV4KqONnITDV9DjfS3q1SgDGVrBdvvTLUotWtPSD7asWDV9/CmsZPy8Hf70A==} - engines: {node: '>=6'} - dev: false + fast-levenshtein@2.0.6: {} - /fast-safe-stringify@2.1.1: - resolution: {integrity: sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==} - dev: false + fast-redact@3.5.0: {} - /fast-uri@3.0.1: - resolution: {integrity: sha512-MWipKbbYiYI0UC7cl8m/i/IWTqfC8YXsqjzybjddLsFjStroQzsHXkc73JutMvBiXmOvapk+axIl79ig5t55Bw==} - dev: false + fast-safe-stringify@2.1.1: {} - /fast-xml-parser@4.4.1: - resolution: {integrity: sha512-xkjOecfnKGkSsOwtZ5Pz7Us/T6mrbPQrq0nh+aCO5V9nk5NLWmasAHumTKjiPJPWANe+kAZ84Jc8ooJkzZ88Sw==} - hasBin: true + fast-uri@3.0.1: {} + + fast-xml-parser@4.4.1: dependencies: strnum: 1.0.5 - dev: false - /fastq@1.17.1: - resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==} + fastq@1.17.1: dependencies: reusify: 1.0.4 - /file-entry-cache@6.0.1: - resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} - engines: {node: ^10.12.0 || >=12.0.0} + file-entry-cache@6.0.1: dependencies: flat-cache: 3.2.0 - dev: true - /file-type@17.1.6: - resolution: {integrity: sha512-hlDw5Ev+9e883s0pwUsuuYNu4tD7GgpUnOvykjv1Gya0ZIjuKumthDRua90VUn6/nlRKAjcxLUnHNTIUWwWIiw==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + file-type@17.1.6: dependencies: readable-web-to-node-stream: 3.0.2 strtok3: 7.1.1 token-types: 5.0.1 - dev: false - /fill-range@7.1.1: - resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} - engines: {node: '>=8'} + fill-range@7.1.1: dependencies: to-regex-range: 5.0.1 - /find-root@1.1.0: - resolution: {integrity: sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==} - dev: false + find-root@1.1.0: {} - /find-up@5.0.0: - resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} - engines: {node: '>=10'} + find-up@5.0.0: dependencies: locate-path: 6.0.0 path-exists: 4.0.0 - dev: true - /find-up@7.0.0: - resolution: {integrity: sha512-YyZM99iHrqLKjmt4LJDj58KI+fYyufRLBSYcqycxf//KpBk9FoewoGX0450m9nB44qrZnovzC2oeP5hUibxc/g==} - engines: {node: '>=18'} + find-up@7.0.0: dependencies: locate-path: 7.2.0 path-exists: 5.0.0 unicorn-magic: 0.1.0 - dev: false - /flat-cache@3.2.0: - resolution: {integrity: sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==} - engines: {node: ^10.12.0 || >=12.0.0} + flat-cache@3.2.0: dependencies: flatted: 3.3.1 keyv: 4.5.4 rimraf: 3.0.2 - dev: true - /flatted@3.3.1: - resolution: {integrity: sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==} - dev: true + flatted@3.3.1: {} - /focus-trap@7.5.4: - resolution: {integrity: sha512-N7kHdlgsO/v+iD/dMoJKtsSqs5Dz/dXZVebRgJw23LDk+jMi/974zyiOYDziY2JPp8xivq9BmUGwIJMiuSBi7w==} + focus-trap@7.5.4: dependencies: tabbable: 6.2.0 - dev: false - /follow-redirects@1.15.9: - resolution: {integrity: sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==} - engines: {node: '>=4.0'} - peerDependencies: - debug: '*' - peerDependenciesMeta: - debug: - optional: true - dev: false + follow-redirects@1.15.9: {} - /for-each@0.3.3: - resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==} + for-each@0.3.3: dependencies: is-callable: 1.2.7 - dev: true - /foreground-child@3.3.0: - resolution: {integrity: sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==} - engines: {node: '>=14'} + foreground-child@3.3.0: dependencies: cross-spawn: 7.0.3 signal-exit: 4.1.0 - /form-data@4.0.0: - resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==} - engines: {node: '>= 6'} + form-data@4.0.0: dependencies: asynckit: 0.4.0 combined-stream: 1.0.8 mime-types: 2.1.35 - dev: false - /fraction.js@4.3.7: - resolution: {integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==} - dev: true + fraction.js@4.3.7: {} - /fs-constants@1.0.0: - resolution: {integrity: sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==} - dev: false + fs-constants@1.0.0: {} - /fs.realpath@1.0.0: - resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} - dev: true + fs.realpath@1.0.0: {} - /fsevents@2.3.3: - resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} - engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} - os: [darwin] - requiresBuild: true + fsevents@2.3.3: optional: true - /function-bind@1.1.2: - resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} + function-bind@1.1.2: {} - /function.prototype.name@1.1.6: - resolution: {integrity: sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==} - engines: {node: '>= 0.4'} + function.prototype.name@1.1.6: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 es-abstract: 1.23.3 functions-have-names: 1.2.3 - dev: true - /functions-have-names@1.2.3: - resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} - dev: true + functions-have-names@1.2.3: {} - /geist@1.3.1(next@15.0.0-canary.104): - resolution: {integrity: sha512-Q4gC1pBVPN+D579pBaz0TRRnGA4p9UK6elDY/xizXdFk/g4EKR5g0I+4p/Kj6gM0SajDBZ/0FvDV9ey9ud7BWw==} - peerDependencies: - next: '>=13.2.0' + geist@1.3.1(next@15.0.0-canary.104): dependencies: next: 15.0.0-canary.104(react-dom@19.0.0-rc-06d0b89e-20240801)(react@19.0.0-rc-06d0b89e-20240801) - dev: false - /get-caller-file@2.0.5: - resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} - engines: {node: 6.* || 8.* || >= 10.*} - dev: true + get-caller-file@2.0.5: {} - /get-intrinsic@1.2.4: - resolution: {integrity: sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==} - engines: {node: '>= 0.4'} + get-intrinsic@1.2.4: dependencies: es-errors: 1.3.0 function-bind: 1.1.2 has-proto: 1.0.3 has-symbols: 1.0.3 hasown: 2.0.2 - dev: true - /get-nonce@1.0.1: - resolution: {integrity: sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==} - engines: {node: '>=6'} - dev: false + get-nonce@1.0.1: {} - /get-symbol-description@1.0.2: - resolution: {integrity: sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==} - engines: {node: '>= 0.4'} + get-symbol-description@1.0.2: dependencies: call-bind: 1.0.7 es-errors: 1.3.0 get-intrinsic: 1.2.4 - dev: true - /get-tsconfig@4.8.1: - resolution: {integrity: sha512-k9PN+cFBmaLWtVz29SkUoqU5O0slLuHJXt/2P+tMVFT+phsSGXGkp9t3rQIqdz0e+06EHNGs3oM6ZX1s2zHxRg==} + get-tsconfig@4.8.1: dependencies: resolve-pkg-maps: 1.0.0 - /github-from-package@0.0.0: - resolution: {integrity: sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==} - dev: false + github-from-package@0.0.0: {} - /glob-parent@5.1.2: - resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} - engines: {node: '>= 6'} + glob-parent@5.1.2: dependencies: is-glob: 4.0.3 - /glob-parent@6.0.2: - resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} - engines: {node: '>=10.13.0'} + glob-parent@6.0.2: dependencies: is-glob: 4.0.3 - /glob@10.4.5: - resolution: {integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==} - hasBin: true + glob@10.4.5: dependencies: foreground-child: 3.3.0 jackspeak: 3.4.3 @@ -5919,9 +8210,7 @@ packages: package-json-from-dist: 1.0.0 path-scurry: 1.11.1 - /glob@7.1.7: - resolution: {integrity: sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==} - deprecated: Glob versions prior to v9 are no longer supported + glob@7.1.7: dependencies: fs.realpath: 1.0.0 inflight: 1.0.6 @@ -5929,11 +8218,8 @@ packages: minimatch: 3.1.2 once: 1.4.0 path-is-absolute: 1.0.1 - dev: true - /glob@7.2.3: - resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} - deprecated: Glob versions prior to v9 are no longer supported + glob@7.2.3: dependencies: fs.realpath: 1.0.0 inflight: 1.0.6 @@ -5941,31 +8227,19 @@ packages: minimatch: 3.1.2 once: 1.4.0 path-is-absolute: 1.0.1 - dev: true - /globals@11.12.0: - resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} - engines: {node: '>=4'} - dev: false + globals@11.12.0: {} - /globals@13.24.0: - resolution: {integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==} - engines: {node: '>=8'} + globals@13.24.0: dependencies: type-fest: 0.20.2 - dev: true - /globalthis@1.0.4: - resolution: {integrity: sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==} - engines: {node: '>= 0.4'} + globalthis@1.0.4: dependencies: define-properties: 1.2.1 gopd: 1.0.1 - dev: true - /globby@11.1.0: - resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} - engines: {node: '>=10'} + globby@11.1.0: dependencies: array-union: 2.1.0 dir-glob: 3.0.1 @@ -5973,529 +8247,301 @@ packages: ignore: 5.3.2 merge2: 1.4.1 slash: 3.0.0 - dev: true - /gopd@1.0.1: - resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} + gopd@1.0.1: dependencies: get-intrinsic: 1.2.4 - dev: true - /graceful-fs@4.2.11: - resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} + graceful-fs@4.2.11: {} - /grapheme-splitter@1.0.4: - resolution: {integrity: sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==} - dev: true + grapheme-splitter@1.0.4: {} - /graphemer@1.4.0: - resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} - dev: true + graphemer@1.4.0: {} - /graphql-http@1.22.1(graphql@16.9.0): - resolution: {integrity: sha512-4Jor+LRbA7SfSaw7dfDUs2UBzvWg3cKrykfHRgKsOIvQaLuf+QOcG2t3Mx5N9GzSNJcuqMqJWz0ta5+BryEmXg==} - engines: {node: '>=12'} - peerDependencies: - graphql: '>=0.11 <=16' + graphql-http@1.22.1(graphql@16.9.0): dependencies: graphql: 16.9.0 - dev: false - /graphql-playground-html@1.6.30: - resolution: {integrity: sha512-tpCujhsJMva4aqE8ULnF7/l3xw4sNRZcSHu+R00VV+W0mfp+Q20Plvcrp+5UXD+2yS6oyCXncA+zoQJQqhGCEw==} + graphql-playground-html@1.6.30: dependencies: xss: 1.0.15 - dev: false - /graphql-scalars@1.22.2(graphql@16.9.0): - resolution: {integrity: sha512-my9FB4GtghqXqi/lWSVAOPiTzTnnEzdOXCsAC2bb5V7EFNQjVjwy3cSSbUvgYOtDuDibd+ZsCDhz+4eykYOlhQ==} - engines: {node: '>=10'} - peerDependencies: - graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 + graphql-scalars@1.22.2(graphql@16.9.0): dependencies: graphql: 16.9.0 tslib: 2.7.0 - dev: false - /graphql@16.9.0: - resolution: {integrity: sha512-GGTKBX4SD7Wdb8mqeDLni2oaRGYQWjWHGKPQ24ZMnUtKfcsVoiv4uX8+LJr1K6U5VW2Lu1BwJnj7uiori0YtRw==} - engines: {node: ^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0} - dev: false + graphql@16.9.0: {} - /has-bigints@1.0.2: - resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==} - dev: true + has-bigints@1.0.2: {} - /has-flag@3.0.0: - resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} - engines: {node: '>=4'} - dev: false + has-flag@3.0.0: {} - /has-flag@4.0.0: - resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} - engines: {node: '>=8'} - dev: true + has-flag@4.0.0: {} - /has-property-descriptors@1.0.2: - resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==} + has-property-descriptors@1.0.2: dependencies: es-define-property: 1.0.0 - dev: true - /has-proto@1.0.3: - resolution: {integrity: sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==} - engines: {node: '>= 0.4'} - dev: true + has-proto@1.0.3: {} - /has-symbols@1.0.3: - resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} - engines: {node: '>= 0.4'} - dev: true + has-symbols@1.0.3: {} - /has-tostringtag@1.0.2: - resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} - engines: {node: '>= 0.4'} + has-tostringtag@1.0.2: dependencies: has-symbols: 1.0.3 - dev: true - /has@1.0.4: - resolution: {integrity: sha512-qdSAmqLF6209RFj4VVItywPMbm3vWylknmB3nvNiUIs72xAimcM8nVYxYr7ncvZq5qzk9MKIZR8ijqD/1QuYjQ==} - engines: {node: '>= 0.4.0'} - dev: true + has@1.0.4: {} - /hasown@2.0.2: - resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} - engines: {node: '>= 0.4'} + hasown@2.0.2: dependencies: function-bind: 1.1.2 - /help-me@5.0.0: - resolution: {integrity: sha512-7xgomUX6ADmcYzFik0HzAxh/73YlKR9bmFzf51CZwR+b6YtzU2m0u49hQCqV6SvlqIqsaxovfwdvbnsw3b/zpg==} - dev: false + help-me@5.0.0: {} - /hoist-non-react-statics@3.3.2: - resolution: {integrity: sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==} + hoist-non-react-statics@3.3.2: dependencies: react-is: 16.13.1 - dev: false - /html-to-text@9.0.3: - resolution: {integrity: sha512-hxDF1kVCF2uw4VUJ3vr2doc91pXf2D5ngKcNviSitNkhP9OMOaJkDrFIFL6RMvko7NisWTEiqGpQ9LAxcVok1w==} - engines: {node: '>=14'} + html-to-text@9.0.3: dependencies: '@selderee/plugin-htmlparser2': 0.10.0 deepmerge: 4.3.1 dom-serializer: 2.0.0 htmlparser2: 8.0.2 selderee: 0.10.0 - dev: false - /htmlparser2@8.0.2: - resolution: {integrity: sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==} + htmlparser2@8.0.2: dependencies: domelementtype: 2.3.0 domhandler: 5.0.3 domutils: 3.1.0 entities: 4.5.0 - dev: false - /http-status@1.6.2: - resolution: {integrity: sha512-oUExvfNckrpTpDazph7kNG8sQi5au3BeTo0idaZFXEhTaJKu7GNJCLHI0rYY2wljm548MSTM+Ljj/c6anqu2zQ==} - engines: {node: '>= 0.4.0'} - dev: false + http-status@1.6.2: {} - /ieee754@1.2.1: - resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} - dev: false + ieee754@1.2.1: {} - /ignore@5.3.2: - resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} - engines: {node: '>= 4'} - dev: true + ignore@5.3.2: {} - /image-size@1.1.1: - resolution: {integrity: sha512-541xKlUw6jr/6gGuk92F+mYM5zaFAc5ahphvkqvNe2bQ6gVBkd6bfrmVJ2t4KDAfikAYZyIqTnktX3i6/aQDrQ==} - engines: {node: '>=16.x'} - hasBin: true + image-size@1.1.1: dependencies: queue: 6.0.2 - dev: false - /immutable@4.3.7: - resolution: {integrity: sha512-1hqclzwYwjRDFLjcFxOM5AYkkG0rpFPpr1RLPMEuGczoS7YA8gLhy8SWXYRAA/XwfEHpfo3cw5JGioS32fnMRw==} - dev: false + immutable@4.3.7: {} - /import-fresh@3.3.0: - resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} - engines: {node: '>=6'} + import-fresh@3.3.0: dependencies: parent-module: 1.0.1 resolve-from: 4.0.0 - /imurmurhash@0.1.4: - resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} - engines: {node: '>=0.8.19'} - dev: true + imurmurhash@0.1.4: {} - /inflight@1.0.6: - resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} - deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. + inflight@1.0.6: dependencies: once: 1.4.0 wrappy: 1.0.2 - dev: true - /inherits@2.0.4: - resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + inherits@2.0.4: {} - /ini@1.3.8: - resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} - dev: false + ini@1.3.8: {} - /internal-slot@1.0.7: - resolution: {integrity: sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==} - engines: {node: '>= 0.4'} + internal-slot@1.0.7: dependencies: es-errors: 1.3.0 hasown: 2.0.2 side-channel: 1.0.6 - dev: true - /invariant@2.2.4: - resolution: {integrity: sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==} + invariant@2.2.4: dependencies: loose-envify: 1.4.0 - dev: false - /ip-address@9.0.5: - resolution: {integrity: sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g==} - engines: {node: '>= 12'} + ip-address@9.0.5: dependencies: jsbn: 1.1.0 sprintf-js: 1.1.3 - dev: false - /is-arguments@1.1.1: - resolution: {integrity: sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==} - engines: {node: '>= 0.4'} + is-arguments@1.1.1: dependencies: call-bind: 1.0.7 has-tostringtag: 1.0.2 - dev: true - /is-array-buffer@3.0.4: - resolution: {integrity: sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==} - engines: {node: '>= 0.4'} + is-array-buffer@3.0.4: dependencies: call-bind: 1.0.7 get-intrinsic: 1.2.4 - dev: true - /is-arrayish@0.2.1: - resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} - dev: false + is-arrayish@0.2.1: {} - /is-arrayish@0.3.2: - resolution: {integrity: sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==} - dev: false + is-arrayish@0.3.2: {} - /is-async-function@2.0.0: - resolution: {integrity: sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==} - engines: {node: '>= 0.4'} + is-async-function@2.0.0: dependencies: has-tostringtag: 1.0.2 - dev: true - /is-bigint@1.0.4: - resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==} + is-bigint@1.0.4: dependencies: has-bigints: 1.0.2 - dev: true - /is-binary-path@2.1.0: - resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} - engines: {node: '>=8'} + is-binary-path@2.1.0: dependencies: binary-extensions: 2.3.0 - /is-boolean-object@1.1.2: - resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==} - engines: {node: '>= 0.4'} + is-boolean-object@1.1.2: dependencies: call-bind: 1.0.7 has-tostringtag: 1.0.2 - dev: true - /is-buffer@1.1.6: - resolution: {integrity: sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==} - dev: false + is-buffer@1.1.6: {} - /is-bun-module@1.2.1: - resolution: {integrity: sha512-AmidtEM6D6NmUiLOvvU7+IePxjEjOzra2h0pSrsfSAcXwl/83zLLXDByafUJy9k/rKK0pvXMLdwKwGHlX2Ke6Q==} + is-bun-module@1.2.1: dependencies: semver: 7.6.3 - dev: true - /is-callable@1.2.7: - resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} - engines: {node: '>= 0.4'} - dev: true + is-callable@1.2.7: {} - /is-core-module@2.15.1: - resolution: {integrity: sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ==} - engines: {node: '>= 0.4'} + is-core-module@2.15.1: dependencies: hasown: 2.0.2 - /is-data-view@1.0.1: - resolution: {integrity: sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==} - engines: {node: '>= 0.4'} + is-data-view@1.0.1: dependencies: is-typed-array: 1.1.13 - dev: true - /is-date-object@1.0.5: - resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==} - engines: {node: '>= 0.4'} + is-date-object@1.0.5: dependencies: has-tostringtag: 1.0.2 - dev: true - /is-extendable@0.1.1: - resolution: {integrity: sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==} - engines: {node: '>=0.10.0'} - dev: false + is-extendable@0.1.1: {} - /is-extglob@2.1.1: - resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} - engines: {node: '>=0.10.0'} + is-extglob@2.1.1: {} - /is-finalizationregistry@1.0.2: - resolution: {integrity: sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw==} + is-finalizationregistry@1.0.2: dependencies: call-bind: 1.0.7 - dev: true - /is-fullwidth-code-point@3.0.0: - resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} - engines: {node: '>=8'} + is-fullwidth-code-point@3.0.0: {} - /is-generator-function@1.0.10: - resolution: {integrity: sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==} - engines: {node: '>= 0.4'} + is-generator-function@1.0.10: dependencies: has-tostringtag: 1.0.2 - dev: true - /is-glob@4.0.3: - resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} - engines: {node: '>=0.10.0'} + is-glob@4.0.3: dependencies: is-extglob: 2.1.1 - /is-map@2.0.3: - resolution: {integrity: sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==} - engines: {node: '>= 0.4'} - dev: true + is-map@2.0.3: {} - /is-negative-zero@2.0.3: - resolution: {integrity: sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==} - engines: {node: '>= 0.4'} - dev: true + is-negative-zero@2.0.3: {} - /is-number-object@1.0.7: - resolution: {integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==} - engines: {node: '>= 0.4'} + is-number-object@1.0.7: dependencies: has-tostringtag: 1.0.2 - dev: true - /is-number@7.0.0: - resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} - engines: {node: '>=0.12.0'} + is-number@7.0.0: {} - /is-path-inside@3.0.3: - resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} - engines: {node: '>=8'} - dev: true + is-path-inside@3.0.3: {} - /is-regex@1.1.4: - resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} - engines: {node: '>= 0.4'} + is-regex@1.1.4: dependencies: call-bind: 1.0.7 has-tostringtag: 1.0.2 - dev: true - /is-set@2.0.3: - resolution: {integrity: sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==} - engines: {node: '>= 0.4'} - dev: true + is-set@2.0.3: {} - /is-shared-array-buffer@1.0.3: - resolution: {integrity: sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==} - engines: {node: '>= 0.4'} + is-shared-array-buffer@1.0.3: dependencies: call-bind: 1.0.7 - dev: true - /is-string@1.0.7: - resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==} - engines: {node: '>= 0.4'} + is-string@1.0.7: dependencies: has-tostringtag: 1.0.2 - dev: true - /is-symbol@1.0.4: - resolution: {integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==} - engines: {node: '>= 0.4'} + is-symbol@1.0.4: dependencies: has-symbols: 1.0.3 - dev: true - /is-typed-array@1.1.13: - resolution: {integrity: sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==} - engines: {node: '>= 0.4'} + is-typed-array@1.1.13: dependencies: which-typed-array: 1.1.15 - dev: true - /is-weakmap@2.0.2: - resolution: {integrity: sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==} - engines: {node: '>= 0.4'} - dev: true + is-weakmap@2.0.2: {} - /is-weakref@1.0.2: - resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==} + is-weakref@1.0.2: dependencies: call-bind: 1.0.7 - dev: true - /is-weakset@2.0.3: - resolution: {integrity: sha512-LvIm3/KWzS9oRFHugab7d+M/GcBXuXX5xZkzPmN+NxihdQlZUQ4dWuSV1xR/sq6upL1TJEDrfBgRepHFdBtSNQ==} - engines: {node: '>= 0.4'} + is-weakset@2.0.3: dependencies: call-bind: 1.0.7 get-intrinsic: 1.2.4 - dev: true - /is-whitespace@0.3.0: - resolution: {integrity: sha512-RydPhl4S6JwAyj0JJjshWJEFG6hNye3pZFBRZaTUfZFwGHxzppNaNOVgQuS/E/SlhrApuMXrpnK1EEIXfdo3Dg==} - engines: {node: '>=0.10.0'} - dev: false + is-whitespace@0.3.0: {} - /isarray@0.0.1: - resolution: {integrity: sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==} - dev: true + isarray@0.0.1: {} - /isarray@1.0.0: - resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} + isarray@1.0.0: {} - /isarray@2.0.5: - resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} - dev: true + isarray@2.0.5: {} - /isexe@2.0.0: - resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + isexe@2.0.0: {} - /isomorphic-unfetch@3.1.0: - resolution: {integrity: sha512-geDJjpoZ8N0kWexiwkX8F9NkTsXhetLPVbZFQ+JTW239QNOwvB0gniuR1Wc6f0AMTn7/mFGyXvHTifrCp/GH8Q==} + isomorphic-unfetch@3.1.0: dependencies: node-fetch: 2.7.0 unfetch: 4.2.0 transitivePeerDependencies: - encoding - dev: false - /isomorphic.js@0.2.5: - resolution: {integrity: sha512-PIeMbHqMt4DnUP3MA/Flc0HElYjMXArsw1qwJZcm9sqR8mq3l8NYizFMty0pWwE/tzIGH3EKK5+jes5mAr85yw==} - dev: false + isomorphic.js@0.2.5: {} - /iterator.prototype@1.1.2: - resolution: {integrity: sha512-DR33HMMr8EzwuRL8Y9D3u2BMj8+RqSE850jfGu59kS7tbmPLzGkZmVSfyCFSDxuZiEY6Rzt3T2NA/qU+NwVj1w==} + iterator.prototype@1.1.2: dependencies: define-properties: 1.2.1 get-intrinsic: 1.2.4 has-symbols: 1.0.3 reflect.getprototypeof: 1.0.6 set-function-name: 2.0.2 - dev: true - /jackspeak@3.4.3: - resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==} + jackspeak@3.4.3: dependencies: '@isaacs/cliui': 8.0.2 optionalDependencies: '@pkgjs/parseargs': 0.11.0 - /jiti@1.21.6: - resolution: {integrity: sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w==} - hasBin: true + jiti@1.21.6: {} - /joycon@3.1.1: - resolution: {integrity: sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw==} - engines: {node: '>=10'} - dev: false + joycon@3.1.1: {} - /js-beautify@1.15.1: - resolution: {integrity: sha512-ESjNzSlt/sWE8sciZH8kBF8BPlwXPwhR6pWKAw8bw4Bwj+iZcnKW6ONWUutJ7eObuBZQpiIb8S7OYspWrKt7rA==} - engines: {node: '>=14'} - hasBin: true + js-beautify@1.15.1: dependencies: config-chain: 1.1.13 editorconfig: 1.0.4 glob: 10.4.5 js-cookie: 3.0.5 nopt: 7.2.1 - dev: false - /js-cookie@2.2.1: - resolution: {integrity: sha512-HvdH2LzI/EAZcUwA8+0nKNtWHqS+ZmijLA30RwZA0bo7ToCckjK5MkGhjED9KoRcXO6BaGI3I9UIzSA1FKFPOQ==} - dev: false + js-cookie@2.2.1: {} - /js-cookie@3.0.5: - resolution: {integrity: sha512-cEiJEAEoIbWfCZYKWhVwFuvPX1gETRYPw6LlaTKoxD3s2AkXzkCjnp6h0V77ozyqj0jakteJ4YqDJT830+lVGw==} - engines: {node: '>=14'} - dev: false + js-cookie@3.0.5: {} - /js-tokens@4.0.0: - resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + js-tokens@4.0.0: {} - /js-yaml@4.1.0: - resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} - hasBin: true + js-yaml@4.1.0: dependencies: argparse: 2.0.1 - /jsbn@1.1.0: - resolution: {integrity: sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==} - dev: false + jsbn@1.1.0: {} - /jsdoctypeparser@9.0.0: - resolution: {integrity: sha512-jrTA2jJIL6/DAEILBEh2/w9QxCuwmvNXIry39Ay/HVfhE3o2yVV0U44blYkqdHA/OKloJEqvJy0xU+GSdE2SIw==} - engines: {node: '>=10'} - hasBin: true - dev: true + jsdoctypeparser@9.0.0: {} - /jsesc@2.5.2: - resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} - engines: {node: '>=4'} - hasBin: true - dev: false + jsesc@2.5.2: {} - /json-buffer@3.0.1: - resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} - dev: true + json-buffer@3.0.1: {} - /json-parse-even-better-errors@2.3.1: - resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} - dev: false + json-parse-even-better-errors@2.3.1: {} - /json-schema-to-typescript@15.0.1: - resolution: {integrity: sha512-gSSg20skxv+ZQqR8Y8itZt+2iYFGNgneuTgf/Va0TBw+zo6JsykDG1bqhkhMs5g/vIdqmZx55oQJLbgOEuxPJw==} - engines: {node: '>=16.0.0'} - hasBin: true + json-schema-to-typescript@15.0.1: dependencies: '@apidevtools/json-schema-ref-parser': 11.7.0 '@types/json-schema': 7.0.15 @@ -6505,30 +8551,18 @@ packages: lodash: 4.17.21 minimist: 1.2.8 prettier: 3.3.3 - dev: false - /json-schema-traverse@0.4.1: - resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} - dev: true + json-schema-traverse@0.4.1: {} - /json-schema-traverse@1.0.0: - resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} - dev: false + json-schema-traverse@1.0.0: {} - /json-stable-stringify-without-jsonify@1.0.1: - resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} - dev: true + json-stable-stringify-without-jsonify@1.0.1: {} - /json5@1.0.2: - resolution: {integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==} - hasBin: true + json5@1.0.2: dependencies: minimist: 1.2.8 - dev: true - /jsonwebtoken@9.0.2: - resolution: {integrity: sha512-PRp66vJ865SSqOlgqS8hujT5U4AOgMfhrwYIuIhfKaoSCZcirrmASQr8CX7cUg+RMih+hgznrjp99o+W4pJLHQ==} - engines: {node: '>=12', npm: '>=6'} + jsonwebtoken@9.0.2: dependencies: jws: 3.2.2 lodash.includes: 4.3.0 @@ -6540,281 +8574,162 @@ packages: lodash.once: 4.1.1 ms: 2.1.3 semver: 7.6.3 - dev: false - /jsx-ast-utils@3.3.5: - resolution: {integrity: sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==} - engines: {node: '>=4.0'} + jsx-ast-utils@3.3.5: dependencies: array-includes: 3.1.8 array.prototype.flat: 1.3.2 object.assign: 4.1.5 object.values: 1.2.0 - dev: true - /jwa@1.4.1: - resolution: {integrity: sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==} + jwa@1.4.1: dependencies: buffer-equal-constant-time: 1.0.1 ecdsa-sig-formatter: 1.0.11 safe-buffer: 5.2.1 - dev: false - /jws@3.2.2: - resolution: {integrity: sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==} + jws@3.2.2: dependencies: jwa: 1.4.1 safe-buffer: 5.2.1 - dev: false - /kareem@2.5.1: - resolution: {integrity: sha512-7jFxRVm+jD+rkq3kY0iZDJfsO2/t4BBPeEb2qKn2lR/9KhuksYk5hxzfRYWMPV8P/x2d0kHD306YyWLzjjH+uA==} - engines: {node: '>=12.0.0'} - dev: false + kareem@2.5.1: {} - /keyv@4.5.4: - resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} + keyv@4.5.4: dependencies: json-buffer: 3.0.1 - dev: true - /kind-of@3.2.2: - resolution: {integrity: sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==} - engines: {node: '>=0.10.0'} + kind-of@3.2.2: dependencies: is-buffer: 1.1.6 - dev: false - /kleur@3.0.3: - resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==} - engines: {node: '>=6'} - dev: false + kleur@3.0.3: {} - /language-subtag-registry@0.3.23: - resolution: {integrity: sha512-0K65Lea881pHotoGEa5gDlMxt3pctLi2RplBb7Ezh4rRdLEOtgi7n4EwK9lamnUCkKBqaeKRVebTq6BAxSkpXQ==} - dev: true + language-subtag-registry@0.3.23: {} - /language-tags@1.0.5: - resolution: {integrity: sha512-qJhlO9cGXi6hBGKoxEG/sKZDAHD5Hnu9Hs4WbOY3pCWXDhw0N8x1NenNzm2EnNLkLkk7J2SdxAkDSbb6ftT+UQ==} + language-tags@1.0.5: dependencies: language-subtag-registry: 0.3.23 - dev: true - /language-tags@1.0.9: - resolution: {integrity: sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA==} - engines: {node: '>=0.10'} + language-tags@1.0.9: dependencies: language-subtag-registry: 0.3.23 - dev: true - /leac@0.6.0: - resolution: {integrity: sha512-y+SqErxb8h7nE/fiEX07jsbuhrpO9lL8eca7/Y1nuWV2moNlXhyd59iDGcRf6moVyDMbmTNzL40SUyrFU/yDpg==} - dev: false + leac@0.6.0: {} - /levn@0.4.1: - resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} - engines: {node: '>= 0.8.0'} + levn@0.4.1: dependencies: prelude-ls: 1.2.1 type-check: 0.4.0 - dev: true - /lexical@0.17.0: - resolution: {integrity: sha512-cCFmANO5rIf34NF0go/hxp5S3V5Z8G2Rsa1FJy50qF2WM5EJNJ/MqN75TApjfgMkfrbO6gau3X12nCqwsT7aDg==} - dev: false + lexical@0.17.0: {} - /lib0@0.2.97: - resolution: {integrity: sha512-Q4d1ekgvufi9FiHkkL46AhecfNjznSL9MRNoJRQ76gBHS9OqU2ArfQK0FvBpuxgWeJeNI0LVgAYMIpsGeX4gYg==} - engines: {node: '>=16'} - hasBin: true + lib0@0.2.97: dependencies: isomorphic.js: 0.2.5 - dev: false - /lilconfig@2.1.0: - resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==} - engines: {node: '>=10'} + lilconfig@2.1.0: {} - /lilconfig@3.1.2: - resolution: {integrity: sha512-eop+wDAvpItUys0FWkHIKeC9ybYrTGbU41U5K7+bttZZeohvnY7M9dZ5kB21GNWiFT2q1OoPTvncPCgSOVO5ow==} - engines: {node: '>=14'} + lilconfig@3.1.2: {} - /lines-and-columns@1.2.4: - resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} + lines-and-columns@1.2.4: {} - /locate-path@6.0.0: - resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} - engines: {node: '>=10'} + locate-path@6.0.0: dependencies: p-locate: 5.0.0 - dev: true - /locate-path@7.2.0: - resolution: {integrity: sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + locate-path@7.2.0: dependencies: p-locate: 6.0.0 - dev: false - /lodash.castarray@4.4.0: - resolution: {integrity: sha512-aVx8ztPv7/2ULbArGJ2Y42bG1mEQ5mGjpdvrbJcJFU3TbYybe+QlLS4pst9zV52ymy2in1KpFPiZnAOATxD4+Q==} - dev: true + lodash.castarray@4.4.0: {} - /lodash.includes@4.3.0: - resolution: {integrity: sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w==} - dev: false + lodash.includes@4.3.0: {} - /lodash.isboolean@3.0.3: - resolution: {integrity: sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg==} - dev: false + lodash.isboolean@3.0.3: {} - /lodash.isinteger@4.0.4: - resolution: {integrity: sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA==} - dev: false + lodash.isinteger@4.0.4: {} - /lodash.isnumber@3.0.3: - resolution: {integrity: sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw==} - dev: false + lodash.isnumber@3.0.3: {} - /lodash.isplainobject@4.0.6: - resolution: {integrity: sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==} + lodash.isplainobject@4.0.6: {} - /lodash.isstring@4.0.1: - resolution: {integrity: sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==} - dev: false + lodash.isstring@4.0.1: {} - /lodash.merge@4.6.2: - resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} - dev: true + lodash.merge@4.6.2: {} - /lodash.once@4.1.1: - resolution: {integrity: sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==} - dev: false + lodash.once@4.1.1: {} - /lodash@4.17.21: - resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} - dev: false + lodash@4.17.21: {} - /loose-envify@1.4.0: - resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} - hasBin: true + loose-envify@1.4.0: dependencies: js-tokens: 4.0.0 - /lru-cache@10.4.3: - resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} + lru-cache@10.4.3: {} - /lucide-react@0.378.0(react@19.0.0-rc-06d0b89e-20240801): - resolution: {integrity: sha512-u6EPU8juLUk9ytRcyapkWI18epAv3RU+6+TC23ivjR0e+glWKBobFeSgRwOIJihzktILQuy6E0E80P2jVTDR5g==} - peerDependencies: - react: ^16.5.1 || ^17.0.0 || ^18.0.0 + lucide-react@0.378.0(react@19.0.0-rc-06d0b89e-20240801): dependencies: react: 19.0.0-rc-06d0b89e-20240801 - dev: false - /md5@2.3.0: - resolution: {integrity: sha512-T1GITYmFaKuO91vxyoQMFETst+O71VUPEU3ze5GNzDm0OWdP8v1ziTaAEPUr/3kLsY3Sftgz242A1SetQiDL7g==} + md5@2.3.0: dependencies: charenc: 0.0.2 crypt: 0.0.2 is-buffer: 1.1.6 - dev: false - /memoize-one@6.0.0: - resolution: {integrity: sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw==} - dev: false + memoize-one@6.0.0: {} - /memory-pager@1.5.0: - resolution: {integrity: sha512-ZS4Bp4r/Zoeq6+NLJpP+0Zzm0pR8whtGPf1XExKLJBAczGMnSi3It14OiNCStjQjM6NU1okjQGSxgEZN8eBYKg==} - requiresBuild: true - dev: false + memory-pager@1.5.0: optional: true - /merge2@1.4.1: - resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} - engines: {node: '>= 8'} + merge2@1.4.1: {} - /micromatch@4.0.8: - resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} - engines: {node: '>=8.6'} + micromatch@4.0.8: dependencies: braces: 3.0.3 picomatch: 2.3.1 - /mime-db@1.52.0: - resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} - engines: {node: '>= 0.6'} - dev: false + mime-db@1.52.0: {} - /mime-types@2.1.35: - resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} - engines: {node: '>= 0.6'} + mime-types@2.1.35: dependencies: mime-db: 1.52.0 - dev: false - /mimic-response@3.1.0: - resolution: {integrity: sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==} - engines: {node: '>=10'} - dev: false + mimic-response@3.1.0: {} - /minimatch@3.1.2: - resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} + minimatch@3.1.2: dependencies: brace-expansion: 1.1.11 - dev: true - /minimatch@9.0.1: - resolution: {integrity: sha512-0jWhJpD/MdhPXwPuiRkCbfYfSKp2qnn2eOc279qI7f+osl/l+prKSrvhg157zSYvx/1nmgn2NqdT6k2Z7zSH9w==} - engines: {node: '>=16 || 14 >=14.17'} - dependencies: - brace-expansion: 2.0.1 - dev: false - - /minimatch@9.0.3: - resolution: {integrity: sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==} - engines: {node: '>=16 || 14 >=14.17'} - dependencies: - brace-expansion: 2.0.1 - dev: true - - /minimatch@9.0.5: - resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} - engines: {node: '>=16 || 14 >=14.17'} + minimatch@9.0.1: dependencies: brace-expansion: 2.0.1 - /minimist@1.2.8: - resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} + minimatch@9.0.3: + dependencies: + brace-expansion: 2.0.1 - /minipass@7.1.2: - resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} - engines: {node: '>=16 || 14 >=14.17'} + minimatch@9.0.5: + dependencies: + brace-expansion: 2.0.1 - /mkdirp-classic@0.5.3: - resolution: {integrity: sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==} - dev: false + minimist@1.2.8: {} - /mkdirp@1.0.4: - resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==} - engines: {node: '>=10'} - hasBin: true - dev: true + minipass@7.1.2: {} - /monaco-editor@0.51.0: - resolution: {integrity: sha512-xaGwVV1fq343cM7aOYB6lVE4Ugf0UyimdD/x5PWcWBMKENwectaEu77FAN7c5sFiyumqeJdX1RPTh1ocioyDjw==} - dev: false + mkdirp-classic@0.5.3: {} - /mongodb-connection-string-url@2.6.0: - resolution: {integrity: sha512-WvTZlI9ab0QYtTYnuMLgobULWhokRjtC7db9LtcVfJ+Hsnyr5eo6ZtNAt3Ly24XZScGMelOcGtm7lSn0332tPQ==} + mkdirp@1.0.4: {} + + monaco-editor@0.51.0: {} + + mongodb-connection-string-url@2.6.0: dependencies: '@types/whatwg-url': 8.2.2 whatwg-url: 11.0.0 - dev: false - /mongodb@4.17.1(@aws-sdk/client-sso-oidc@3.651.1): - resolution: {integrity: sha512-MBuyYiPUPRTqfH2dV0ya4dcr2E5N52ocBuZ8Sgg/M030nGF78v855B3Z27mZJnp8PxjnUquEnAtjOsphgMZOlQ==} - engines: {node: '>=12.9.0'} + mongodb@4.17.1(@aws-sdk/client-sso-oidc@3.651.1): dependencies: bson: 4.7.2 mongodb-connection-string-url: 2.6.0 @@ -6825,16 +8740,10 @@ packages: transitivePeerDependencies: - '@aws-sdk/client-sso-oidc' - aws-crt - dev: false - /mongoose-paginate-v2@1.7.22: - resolution: {integrity: sha512-xW5GugkE21DJiu9e13EOxKt4ejEKQkRP/S1PkkXRjnk2rRZVKBcld1nPV+VJ/YCPfm8hb3sz9OvI7O38RmixkA==} - engines: {node: '>=4.0.0'} - dev: false + mongoose-paginate-v2@1.7.22: {} - /mongoose@6.12.3(@aws-sdk/client-sso-oidc@3.651.1): - resolution: {integrity: sha512-MNJymaaXali7w7rHBxVUoQ3HzHHMk/7I/+yeeoSa4rUzdjZwIWQznBNvVgc0A8ghuJwsuIkb5LyLV6gSjGjWyQ==} - engines: {node: '>=12.0.0'} + mongoose@6.12.3(@aws-sdk/client-sso-oidc@3.651.1): dependencies: bson: 4.7.2 kareem: 2.5.1 @@ -6847,69 +8756,32 @@ packages: - '@aws-sdk/client-sso-oidc' - aws-crt - supports-color - dev: false - /mpath@0.9.0: - resolution: {integrity: sha512-ikJRQTk8hw5DEoFVxHG1Gn9T/xcjtdnOKIU1JTmGjZZlg9LST2mBLmcX3/ICIbgJydT2GOc15RnNy5mHmzfSew==} - engines: {node: '>=4.0.0'} - dev: false + mpath@0.9.0: {} - /mquery@4.0.3: - resolution: {integrity: sha512-J5heI+P08I6VJ2Ky3+33IpCdAvlYGTSUjwTPxkAr8i8EoduPMBX2OY/wa3IKZIQl7MU4SbFk8ndgSKyB/cl1zA==} - engines: {node: '>=12.0.0'} + mquery@4.0.3: dependencies: debug: 4.3.7 transitivePeerDependencies: - supports-color - dev: false - /ms@2.1.3: - resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + ms@2.1.3: {} - /mz@2.7.0: - resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} + mz@2.7.0: dependencies: any-promise: 1.3.0 object-assign: 4.1.1 thenify-all: 1.6.0 - /nanoid@3.3.7: - resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==} - engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} - hasBin: true + nanoid@3.3.7: {} - /napi-build-utils@1.0.2: - resolution: {integrity: sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==} - dev: false + napi-build-utils@1.0.2: {} - /natural-compare-lite@1.4.0: - resolution: {integrity: sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==} - dev: true + natural-compare-lite@1.4.0: {} - /natural-compare@1.4.0: - resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} - dev: true + natural-compare@1.4.0: {} - /next@15.0.0-canary.104(react-dom@19.0.0-rc-06d0b89e-20240801)(react@19.0.0-rc-06d0b89e-20240801): - resolution: {integrity: sha512-LVzRmV/p/BGGYmTjlZSmCULmBQ2S5ov1nQAXYssu4cEMhkpklQVgh2I+uHHgo/xgdqIIcEBlUgsfV+CfKVsM6Q==} - engines: {node: '>=18.18.0'} - hasBin: true - peerDependencies: - '@opentelemetry/api': ^1.1.0 - '@playwright/test': ^1.41.2 - babel-plugin-react-compiler: '*' - react: 19.0.0-rc-06d0b89e-20240801 - react-dom: 19.0.0-rc-06d0b89e-20240801 - sass: ^1.3.0 - peerDependenciesMeta: - '@opentelemetry/api': - optional: true - '@playwright/test': - optional: true - babel-plugin-react-compiler: - optional: true - sass: - optional: true + next@15.0.0-canary.104(react-dom@19.0.0-rc-06d0b89e-20240801)(react@19.0.0-rc-06d0b89e-20240801): dependencies: '@next/env': 15.0.0-canary.104 '@swc/counter': 0.1.3 @@ -6935,163 +8807,94 @@ packages: transitivePeerDependencies: - '@babel/core' - babel-plugin-macros - dev: false - /node-abi@3.67.0: - resolution: {integrity: sha512-bLn/fU/ALVBE9wj+p4Y21ZJWYFjUXLXPi/IewyLZkx3ApxKDNBWCKdReeKOtD8dWpOdDCeMyLh6ZewzcLsG2Nw==} - engines: {node: '>=10'} + node-abi@3.67.0: dependencies: semver: 7.6.3 - dev: false - /node-addon-api@6.1.0: - resolution: {integrity: sha512-+eawOlIgy680F0kBzPUNFhMZGtJ1YmqM6l4+Crf4IkImjYrO/mqPwRMh352g23uIaQKFItcQ64I7KMaJxHgAVA==} - dev: false + node-addon-api@6.1.0: {} - /node-fetch@2.7.0: - resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==} - engines: {node: 4.x || >=6.0.0} - peerDependencies: - encoding: ^0.1.0 - peerDependenciesMeta: - encoding: - optional: true + node-fetch@2.7.0: dependencies: whatwg-url: 5.0.0 - dev: false - /node-releases@2.0.18: - resolution: {integrity: sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==} - dev: true + node-releases@2.0.18: {} - /nodemailer@6.9.10: - resolution: {integrity: sha512-qtoKfGFhvIFW5kLfrkw2R6Nm6Ur4LNUMykyqu6n9BRKJuyQrqEGwdXXUAbwWEKt33dlWUGXb7rzmJP/p4+O+CA==} - engines: {node: '>=6.0.0'} - dev: false + nodemailer@6.9.10: {} - /noms@0.0.0: - resolution: {integrity: sha512-lNDU9VJaOPxUmXcLb+HQFeUgQQPtMI24Gt6hgfuMHRJgMRHMF/qZ4HJD3GDru4sSw9IQl2jPjAYnQrdIeLbwow==} + noms@0.0.0: dependencies: inherits: 2.0.4 readable-stream: 1.0.34 - dev: true - /nopt@7.2.1: - resolution: {integrity: sha512-taM24ViiimT/XntxbPyJQzCG+p4EKOpgD3mxFwW38mGjVUrfERQOeY4EDHjdnptttfHuHQXFx+lTP08Q+mLa/w==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - hasBin: true + nopt@7.2.1: dependencies: abbrev: 2.0.0 - dev: false - /normalize-path@3.0.0: - resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} - engines: {node: '>=0.10.0'} + normalize-path@3.0.0: {} - /normalize-range@0.1.2: - resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==} - engines: {node: '>=0.10.0'} - dev: true + normalize-range@0.1.2: {} - /object-assign@4.1.1: - resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} - engines: {node: '>=0.10.0'} + object-assign@4.1.1: {} - /object-hash@3.0.0: - resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==} - engines: {node: '>= 6'} + object-hash@3.0.0: {} - /object-inspect@1.13.2: - resolution: {integrity: sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==} - engines: {node: '>= 0.4'} - dev: true + object-inspect@1.13.2: {} - /object-is@1.1.6: - resolution: {integrity: sha512-F8cZ+KfGlSGi09lJT7/Nd6KJZ9ygtvYC0/UYYLI9nmQKLMnydpB9yvbv9K1uSkEu7FU9vYPmVwLg328tX+ot3Q==} - engines: {node: '>= 0.4'} + object-is@1.1.6: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 - dev: true - /object-keys@1.1.1: - resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} - engines: {node: '>= 0.4'} - dev: true + object-keys@1.1.1: {} - /object-to-formdata@4.5.1: - resolution: {integrity: sha512-QiM9D0NiU5jV6J6tjE1g7b4Z2tcUnKs1OPUi4iMb2zH+7jwlcUrASghgkFk9GtzqNNq8rTQJtT8AzjBAvLoNMw==} - dev: false + object-to-formdata@4.5.1: {} - /object.assign@4.1.5: - resolution: {integrity: sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==} - engines: {node: '>= 0.4'} + object.assign@4.1.5: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 has-symbols: 1.0.3 object-keys: 1.1.1 - dev: true - /object.entries@1.1.8: - resolution: {integrity: sha512-cmopxi8VwRIAw/fkijJohSfpef5PdN0pMQJN6VC/ZKvn0LIknWD8KtgY6KlQdEc4tIjcQ3HxSMmnvtzIscdaYQ==} - engines: {node: '>= 0.4'} + object.entries@1.1.8: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 es-object-atoms: 1.0.0 - dev: true - /object.fromentries@2.0.8: - resolution: {integrity: sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==} - engines: {node: '>= 0.4'} + object.fromentries@2.0.8: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 es-abstract: 1.23.3 es-object-atoms: 1.0.0 - dev: true - /object.groupby@1.0.3: - resolution: {integrity: sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==} - engines: {node: '>= 0.4'} + object.groupby@1.0.3: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 es-abstract: 1.23.3 - dev: true - /object.hasown@1.1.4: - resolution: {integrity: sha512-FZ9LZt9/RHzGySlBARE3VF+gE26TxR38SdmqOqliuTnl9wrKulaQs+4dee1V+Io8VfxqzAfHu6YuRgUy8OHoTg==} - engines: {node: '>= 0.4'} + object.hasown@1.1.4: dependencies: define-properties: 1.2.1 es-abstract: 1.23.3 es-object-atoms: 1.0.0 - dev: true - /object.values@1.2.0: - resolution: {integrity: sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ==} - engines: {node: '>= 0.4'} + object.values@1.2.0: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 es-object-atoms: 1.0.0 - dev: true - /on-exit-leak-free@2.1.2: - resolution: {integrity: sha512-0eJJY6hXLGf1udHwfNftBqH+g73EU4B504nZeKpz1sYRKafAghwxEJunB2O7rDZkL4PGfsMVnTXZ2EjibbqcsA==} - engines: {node: '>=14.0.0'} - dev: false + on-exit-leak-free@2.1.2: {} - /once@1.4.0: - resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} + once@1.4.0: dependencies: wrappy: 1.0.2 - /optionator@0.9.4: - resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} - engines: {node: '>= 0.8.0'} + optionator@0.9.4: dependencies: deep-is: 0.1.4 fast-levenshtein: 2.0.6 @@ -7099,115 +8902,66 @@ packages: prelude-ls: 1.2.1 type-check: 0.4.0 word-wrap: 1.2.5 - dev: true - /p-limit@3.1.0: - resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} - engines: {node: '>=10'} + p-limit@3.1.0: dependencies: yocto-queue: 0.1.0 - dev: true - /p-limit@4.0.0: - resolution: {integrity: sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + p-limit@4.0.0: dependencies: yocto-queue: 1.1.1 - dev: false - /p-locate@5.0.0: - resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} - engines: {node: '>=10'} + p-locate@5.0.0: dependencies: p-limit: 3.1.0 - dev: true - /p-locate@6.0.0: - resolution: {integrity: sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + p-locate@6.0.0: dependencies: p-limit: 4.0.0 - dev: false - /package-json-from-dist@1.0.0: - resolution: {integrity: sha512-dATvCeZN/8wQsGywez1mzHtTlP22H8OEfPrVMLNr4/eGa+ijtLn/6M5f0dY8UKNrC2O9UCU6SSoG3qRKnt7STw==} + package-json-from-dist@1.0.0: {} - /parent-module@1.0.1: - resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} - engines: {node: '>=6'} + parent-module@1.0.1: dependencies: callsites: 3.1.0 - /parse-json@5.2.0: - resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} - engines: {node: '>=8'} + parse-json@5.2.0: dependencies: '@babel/code-frame': 7.24.7 error-ex: 1.3.2 json-parse-even-better-errors: 2.3.1 lines-and-columns: 1.2.4 - dev: false - /parseley@0.11.0: - resolution: {integrity: sha512-VfcwXlBWgTF+unPcr7yu3HSSA6QUdDaDnrHcytVfj5Z8azAyKBDrYnSIfeSxlrEayndNcLmrXzg+Vxbo6DWRXQ==} + parseley@0.11.0: dependencies: leac: 0.6.0 peberminta: 0.8.0 - dev: false - /path-exists@4.0.0: - resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} - engines: {node: '>=8'} - dev: true + path-exists@4.0.0: {} - /path-exists@5.0.0: - resolution: {integrity: sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - dev: false + path-exists@5.0.0: {} - /path-is-absolute@1.0.1: - resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} - engines: {node: '>=0.10.0'} - dev: true + path-is-absolute@1.0.1: {} - /path-key@3.1.1: - resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} - engines: {node: '>=8'} + path-key@3.1.1: {} - /path-parse@1.0.7: - resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} + path-parse@1.0.7: {} - /path-scurry@1.11.1: - resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} - engines: {node: '>=16 || 14 >=14.18'} + path-scurry@1.11.1: dependencies: lru-cache: 10.4.3 minipass: 7.1.2 - /path-to-regexp@6.3.0: - resolution: {integrity: sha512-Yhpw4T9C6hPpgPeA28us07OJeqZ5EzQTkbfwuhsUg0c237RomFoETJgmp2sa3F/41gfLE6G5cqcYwznmeEeOlQ==} - dev: false + path-to-regexp@6.3.0: {} - /path-type@4.0.0: - resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} - engines: {node: '>=8'} + path-type@4.0.0: {} - /payload-admin-bar@1.0.6(react-dom@19.0.0-rc-06d0b89e-20240801)(react@19.0.0-rc-06d0b89e-20240801): - resolution: {integrity: sha512-hpQdOiPq4LpWTkbuAnvxDf5wQ2ysMp9kQt+X2U+FfvBwD1U6qoxJfmUymG1OjLlaZzCZ93FlOdTl4u4Z0/m/SA==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + payload-admin-bar@1.0.6(react-dom@19.0.0-rc-06d0b89e-20240801)(react@19.0.0-rc-06d0b89e-20240801): dependencies: react: 19.0.0-rc-06d0b89e-20240801 react-dom: 19.0.0-rc-06d0b89e-20240801(react@19.0.0-rc-06d0b89e-20240801) - dev: false - /payload@3.0.0-beta.106(graphql@16.9.0)(monaco-editor@0.51.0)(react-dom@19.0.0-rc-06d0b89e-20240801)(react@19.0.0-rc-06d0b89e-20240801)(typescript@5.6.2): - resolution: {integrity: sha512-LYBzGJWTKEcJNJojQvSEO2BvkAL8MPKG2M8VyYQ1bH1xd74wSc7Nx0L17cavqmbAFqu7zeZrDCSJ1OdOzFFpSg==} - engines: {node: ^18.20.2 || >=20.9.0} - hasBin: true - peerDependencies: - graphql: ^16.8.1 + payload@3.0.0-beta.106(graphql@16.9.0)(monaco-editor@0.51.0)(react-dom@19.0.0-rc-06d0b89e-20240801)(react@19.0.0-rc-06d0b89e-20240801)(typescript@5.6.2): dependencies: '@monaco-editor/react': 4.6.0(monaco-editor@0.51.0)(react-dom@19.0.0-rc-06d0b89e-20240801)(react@19.0.0-rc-06d0b89e-20240801) '@next/env': 15.0.0-rc.0 @@ -7241,38 +8995,23 @@ packages: - react - react-dom - typescript - dev: false - /peberminta@0.8.0: - resolution: {integrity: sha512-YYEs+eauIjDH5nUEGi18EohWE0nV2QbGTqmxQcqgZ/0g+laPCQmuIqq7EBLVi9uim9zMgfJv0QBZEnQ3uHw/Tw==} - dev: false + peberminta@0.8.0: {} - /peek-readable@5.2.0: - resolution: {integrity: sha512-U94a+eXHzct7vAd19GH3UQ2dH4Satbng0MyYTMaQatL0pvYYL5CTPR25HBhKtecl+4bfu1/i3vC6k0hydO5Vcw==} - engines: {node: '>=14.16'} - dev: false + peek-readable@5.2.0: {} - /picocolors@1.1.0: - resolution: {integrity: sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw==} + picocolors@1.1.0: {} - /picomatch@2.3.1: - resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} - engines: {node: '>=8.6'} + picomatch@2.3.1: {} - /pify@2.3.0: - resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} - engines: {node: '>=0.10.0'} + pify@2.3.0: {} - /pino-abstract-transport@1.2.0: - resolution: {integrity: sha512-Guhh8EZfPCfH+PMXAb6rKOjGQEoy0xlAIn+irODG5kgfYV+BQ0rGYYWTIel3P5mmyXqkYkPmdIkywsn6QKUR1Q==} + pino-abstract-transport@1.2.0: dependencies: readable-stream: 4.5.2 split2: 4.2.0 - dev: false - /pino-pretty@11.2.1: - resolution: {integrity: sha512-O05NuD9tkRasFRWVaF/uHLOvoRDFD7tb5VMertr78rbsYFjYp48Vg3477EshVAF5eZaEw+OpDl/tu+B0R5o+7g==} - hasBin: true + pino-pretty@11.2.1: dependencies: colorette: 2.0.20 dateformat: 4.6.3 @@ -7288,15 +9027,10 @@ packages: secure-json-parse: 2.7.0 sonic-boom: 4.1.0 strip-json-comments: 3.1.1 - dev: false - /pino-std-serializers@7.0.0: - resolution: {integrity: sha512-e906FRY0+tV27iq4juKzSYPbUj2do2X2JX4EzSca1631EB2QJQUqGbDuERal7LCtOpxl6x3+nvo9NPZcmjkiFA==} - dev: false + pino-std-serializers@7.0.0: {} - /pino@9.3.1: - resolution: {integrity: sha512-afSfrq/hUiW/MFmQcLEwV9Zh8Ry6MrMTOyBU53o/fc0gEl+1OZ/Fks/xQCM2nOC0C/OfDtQMnT2d8c3kpcfSzA==} - hasBin: true + pino@9.3.1: dependencies: atomic-sleep: 1.0.0 fast-redact: 3.5.0 @@ -7309,106 +9043,61 @@ packages: safe-stable-stringify: 2.5.0 sonic-boom: 4.1.0 thread-stream: 3.1.0 - dev: false - /pirates@4.0.6: - resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==} - engines: {node: '>= 6'} + pirates@4.0.6: {} - /pluralize@8.0.0: - resolution: {integrity: sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==} - engines: {node: '>=4'} - dev: false + pluralize@8.0.0: {} - /possible-typed-array-names@1.0.0: - resolution: {integrity: sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==} - engines: {node: '>= 0.4'} - dev: true + possible-typed-array-names@1.0.0: {} - /postcss-import@15.1.0(postcss@8.4.47): - resolution: {integrity: sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==} - engines: {node: '>=14.0.0'} - peerDependencies: - postcss: ^8.0.0 + postcss-import@15.1.0(postcss@8.4.47): dependencies: postcss: 8.4.47 postcss-value-parser: 4.2.0 read-cache: 1.0.0 resolve: 1.22.8 - /postcss-js@4.0.1(postcss@8.4.47): - resolution: {integrity: sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==} - engines: {node: ^12 || ^14 || >= 16} - peerDependencies: - postcss: ^8.4.21 + postcss-js@4.0.1(postcss@8.4.47): dependencies: camelcase-css: 2.0.1 postcss: 8.4.47 - /postcss-load-config@4.0.2(postcss@8.4.47): - resolution: {integrity: sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==} - engines: {node: '>= 14'} - peerDependencies: - postcss: '>=8.0.9' - ts-node: '>=9.0.0' - peerDependenciesMeta: - postcss: - optional: true - ts-node: - optional: true + postcss-load-config@4.0.2(postcss@8.4.47): dependencies: lilconfig: 3.1.2 postcss: 8.4.47 yaml: 2.5.1 - /postcss-nested@6.2.0(postcss@8.4.47): - resolution: {integrity: sha512-HQbt28KulC5AJzG+cZtj9kvKB93CFCdLvog1WFLf1D+xmMvPGlBstkpTEZfK5+AN9hfJocyBFCNiqyS48bpgzQ==} - engines: {node: '>=12.0'} - peerDependencies: - postcss: ^8.2.14 + postcss-nested@6.2.0(postcss@8.4.47): dependencies: postcss: 8.4.47 postcss-selector-parser: 6.1.2 - /postcss-selector-parser@6.0.10: - resolution: {integrity: sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==} - engines: {node: '>=4'} - dependencies: - cssesc: 3.0.0 - util-deprecate: 1.0.2 - dev: true - - /postcss-selector-parser@6.1.2: - resolution: {integrity: sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==} - engines: {node: '>=4'} + postcss-selector-parser@6.0.10: dependencies: cssesc: 3.0.0 util-deprecate: 1.0.2 - /postcss-value-parser@4.2.0: - resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} - - /postcss@8.4.31: - resolution: {integrity: sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==} - engines: {node: ^10 || ^12 || >=14} + postcss-selector-parser@6.1.2: dependencies: - nanoid: 3.3.7 - picocolors: 1.1.0 - source-map-js: 1.2.1 - dev: false + cssesc: 3.0.0 + util-deprecate: 1.0.2 - /postcss@8.4.47: - resolution: {integrity: sha512-56rxCq7G/XfB4EkXq9Egn5GCqugWvDFjafDOThIdMBsI15iqPqR5r15TfSr1YPYeEI19YeaXMCbY6u88Y76GLQ==} - engines: {node: ^10 || ^12 || >=14} + postcss-value-parser@4.2.0: {} + + postcss@8.4.31: dependencies: nanoid: 3.3.7 picocolors: 1.1.0 source-map-js: 1.2.1 - /prebuild-install@7.1.2: - resolution: {integrity: sha512-UnNke3IQb6sgarcZIDU3gbMeTp/9SSU1DAIkil7PrqG1vZlBtY5msYccSKSHDqa3hNg436IXK+SNImReuA1wEQ==} - engines: {node: '>=10'} - hasBin: true + postcss@8.4.47: + dependencies: + nanoid: 3.3.7 + picocolors: 1.1.0 + source-map-js: 1.2.1 + + prebuild-install@7.1.2: dependencies: detect-libc: 2.0.3 expand-template: 2.0.3 @@ -7422,139 +9111,80 @@ packages: simple-get: 4.0.1 tar-fs: 2.1.1 tunnel-agent: 0.6.0 - dev: false - /prelude-ls@1.2.1: - resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} - engines: {node: '>= 0.8.0'} - dev: true + prelude-ls@1.2.1: {} - /prettier@3.3.3: - resolution: {integrity: sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew==} - engines: {node: '>=14'} - hasBin: true + prettier@3.3.3: {} - /pretty@2.0.0: - resolution: {integrity: sha512-G9xUchgTEiNpormdYBl+Pha50gOUovT18IvAe7EYMZ1/f9W/WWMPRn+xI68yXNMUk3QXHDwo/1wV/4NejVNe1w==} - engines: {node: '>=0.10.0'} + pretty@2.0.0: dependencies: condense-newlines: 0.2.1 extend-shallow: 2.0.1 js-beautify: 1.15.1 - dev: false - /prism-react-renderer@2.4.0(react@19.0.0-rc-06d0b89e-20240801): - resolution: {integrity: sha512-327BsVCD/unU4CNLZTWVHyUHKnsqcvj2qbPlQ8MiBE2eq2rgctjigPA1Gp9HLF83kZ20zNN6jgizHJeEsyFYOw==} - peerDependencies: - react: '>=16.0.0' + prism-react-renderer@2.4.0(react@19.0.0-rc-06d0b89e-20240801): dependencies: '@types/prismjs': 1.26.4 clsx: 2.1.1 react: 19.0.0-rc-06d0b89e-20240801 - dev: false - /prismjs@1.29.0: - resolution: {integrity: sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q==} - engines: {node: '>=6'} - dev: false + prismjs@1.29.0: {} - /process-nextick-args@2.0.1: - resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} - dev: true + process-nextick-args@2.0.1: {} - /process-warning@3.0.0: - resolution: {integrity: sha512-mqn0kFRl0EoqhnL0GQ0veqFHyIN1yig9RHh/InzORTUiZHFRAur+aMtRkELNwGs9aNwKS6tg/An4NYBPGwvtzQ==} - dev: false + process-warning@3.0.0: {} - /process@0.11.10: - resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==} - engines: {node: '>= 0.6.0'} - dev: false + process@0.11.10: {} - /prompts@2.4.2: - resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==} - engines: {node: '>= 6'} + prompts@2.4.2: dependencies: kleur: 3.0.3 sisteransi: 1.0.5 - dev: false - /prop-types@15.8.1: - resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} + prop-types@15.8.1: dependencies: loose-envify: 1.4.0 object-assign: 4.1.1 react-is: 16.13.1 - /proto-list@1.2.4: - resolution: {integrity: sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==} - dev: false + proto-list@1.2.4: {} - /proxy-from-env@1.1.0: - resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} - dev: false + proxy-from-env@1.1.0: {} - /pump@3.0.2: - resolution: {integrity: sha512-tUPXtzlGM8FE3P0ZL6DVs/3P58k9nk8/jZeQCurTJylQA8qFYzHFfhBJkuqyE0FifOsQ0uKWekiZ5g8wtr28cw==} + pump@3.0.2: dependencies: end-of-stream: 1.4.4 once: 1.4.0 - dev: false - /punycode@2.3.1: - resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} - engines: {node: '>=6'} + punycode@2.3.1: {} - /qs-esm@7.0.2: - resolution: {integrity: sha512-D8NAthKSD7SGn748v+GLaaO6k08Mvpoqroa35PqIQC4gtUa8/Pb/k+r0m0NnGBVbHDP1gKZ2nVywqfMisRhV5A==} - engines: {node: '>=18'} - dev: false + qs-esm@7.0.2: {} - /queue-microtask@1.2.3: - resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} + queue-microtask@1.2.3: {} - /queue-tick@1.0.1: - resolution: {integrity: sha512-kJt5qhMxoszgU/62PLP1CJytzd2NKetjSRnyuj31fDd3Rlcz3fzlFdFLD1SItunPwyqEOkca6GbV612BWfaBag==} - dev: false + queue-tick@1.0.1: {} - /queue@6.0.2: - resolution: {integrity: sha512-iHZWu+q3IdFZFX36ro/lKBkSvfkztY5Y7HMiPlOUjhupPcG2JMfst2KKEpu5XndviX/3UhFbRngUPNKtgvtZiA==} + queue@6.0.2: dependencies: inherits: 2.0.4 - dev: false - /quick-format-unescaped@4.0.4: - resolution: {integrity: sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg==} - dev: false + quick-format-unescaped@4.0.4: {} - /rc@1.2.8: - resolution: {integrity: sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==} - hasBin: true + rc@1.2.8: dependencies: deep-extend: 0.6.0 ini: 1.3.8 minimist: 1.2.8 strip-json-comments: 2.0.1 - dev: false - /react-animate-height@2.1.2(react-dom@19.0.0-rc-06d0b89e-20240801)(react@19.0.0-rc-06d0b89e-20240801): - resolution: {integrity: sha512-A9jfz/4CTdsIsE7WCQtO9UkOpMBcBRh8LxyHl2eoZz1ki02jpyUL5xt58gabd0CyeLQ8fRyQ+s2lyV2Ufu8Owg==} - engines: {node: '>= 6.0.0'} - peerDependencies: - react: '>=15.6.2' - react-dom: '>=15.6.2' + react-animate-height@2.1.2(react-dom@19.0.0-rc-06d0b89e-20240801)(react@19.0.0-rc-06d0b89e-20240801): dependencies: classnames: 2.5.1 prop-types: 15.8.1 react: 19.0.0-rc-06d0b89e-20240801 react-dom: 19.0.0-rc-06d0b89e-20240801(react@19.0.0-rc-06d0b89e-20240801) - dev: false - /react-datepicker@6.9.0(react-dom@19.0.0-rc-06d0b89e-20240801)(react@19.0.0-rc-06d0b89e-20240801): - resolution: {integrity: sha512-QTxuzeem7BUfVFWv+g5WuvzT0c5BPo+XTCNbMTZKSZQLU+cMMwSUHwspaxuIcDlwNcOH0tiJ+bh1fJ2yxOGYWA==} - peerDependencies: - react: ^16.9.0 || ^17 || ^18 - react-dom: ^16.9.0 || ^17 || ^18 + react-datepicker@6.9.0(react-dom@19.0.0-rc-06d0b89e-20240801)(react@19.0.0-rc-06d0b89e-20240801): dependencies: '@floating-ui/react': 0.26.24(react-dom@19.0.0-rc-06d0b89e-20240801)(react@19.0.0-rc-06d0b89e-20240801) clsx: 2.1.1 @@ -7563,14 +9193,8 @@ packages: react: 19.0.0-rc-06d0b89e-20240801 react-dom: 19.0.0-rc-06d0b89e-20240801(react@19.0.0-rc-06d0b89e-20240801) react-onclickoutside: 6.13.1(react-dom@19.0.0-rc-06d0b89e-20240801)(react@19.0.0-rc-06d0b89e-20240801) - dev: false - /react-diff-viewer-continued@3.2.6(react-dom@19.0.0-rc-06d0b89e-20240801)(react@19.0.0-rc-06d0b89e-20240801): - resolution: {integrity: sha512-GrzyqQnjIMoej+jMjWvtVSsQqhXgzEGqpXlJ2dAGfOk7Q26qcm8Gu6xtI430PBUyZsERe8BJSQf+7VZZo8IBNQ==} - engines: {node: '>= 8'} - peerDependencies: - react: ^15.3.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 - react-dom: ^15.3.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 + react-diff-viewer-continued@3.2.6(react-dom@19.0.0-rc-06d0b89e-20240801)(react@19.0.0-rc-06d0b89e-20240801): dependencies: '@emotion/css': 11.13.0 classnames: 2.5.1 @@ -7581,116 +9205,61 @@ packages: react-dom: 19.0.0-rc-06d0b89e-20240801(react@19.0.0-rc-06d0b89e-20240801) transitivePeerDependencies: - supports-color - dev: false - /react-dom@18.3.1(react@18.3.1): - resolution: {integrity: sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==} - peerDependencies: - react: ^18.3.1 + react-dom@18.3.1(react@18.3.1): dependencies: loose-envify: 1.4.0 react: 18.3.1 scheduler: 0.23.2 - dev: false - /react-dom@19.0.0-rc-06d0b89e-20240801(react@19.0.0-rc-06d0b89e-20240801): - resolution: {integrity: sha512-6JIbEXFwsRkI3gLKhcmjvQ3GKsP4NR/BjPyTKyp7xYeQEeiH01TypGVbc/K6nU1/y4jNGFGkxH3ZFbKKZwCecw==} - peerDependencies: - react: 19.0.0-rc-06d0b89e-20240801 + react-dom@19.0.0-rc-06d0b89e-20240801(react@19.0.0-rc-06d0b89e-20240801): dependencies: react: 19.0.0-rc-06d0b89e-20240801 scheduler: 0.25.0-rc-06d0b89e-20240801 - dev: false - /react-error-boundary@3.1.4(react@19.0.0-rc-06d0b89e-20240801): - resolution: {integrity: sha512-uM9uPzZJTF6wRQORmSrvOIgt4lJ9MC1sNgEOj2XGsDTRE4kmpWxg7ENK9EWNKJRMAOY9z0MuF4yIfl6gp4sotA==} - engines: {node: '>=10', npm: '>=6'} - peerDependencies: - react: '>=16.13.1' + react-error-boundary@3.1.4(react@19.0.0-rc-06d0b89e-20240801): dependencies: '@babel/runtime': 7.25.6 react: 19.0.0-rc-06d0b89e-20240801 - dev: false - /react-error-boundary@4.0.13(react@19.0.0-rc-06d0b89e-20240801): - resolution: {integrity: sha512-b6PwbdSv8XeOSYvjt8LpgpKrZ0yGdtZokYwkwV2wlcZbxgopHX/hgPl5VgpnoVOWd868n1hktM8Qm4b+02MiLQ==} - peerDependencies: - react: '>=16.13.1' + react-error-boundary@4.0.13(react@19.0.0-rc-06d0b89e-20240801): dependencies: '@babel/runtime': 7.25.6 react: 19.0.0-rc-06d0b89e-20240801 - dev: false - /react-hook-form@7.45.4(react@19.0.0-rc-06d0b89e-20240801): - resolution: {integrity: sha512-HGDV1JOOBPZj10LB3+OZgfDBTn+IeEsNOKiq/cxbQAIbKaiJUe/KV8DBUzsx0Gx/7IG/orWqRRm736JwOfUSWQ==} - engines: {node: '>=12.22.0'} - peerDependencies: - react: ^16.8.0 || ^17 || ^18 + react-hook-form@7.45.4(react@19.0.0-rc-06d0b89e-20240801): dependencies: react: 19.0.0-rc-06d0b89e-20240801 - dev: false - /react-image-crop@10.1.8(react@19.0.0-rc-06d0b89e-20240801): - resolution: {integrity: sha512-4rb8XtXNx7ZaOZarKKnckgz4xLMvds/YrU6mpJfGhGAsy2Mg4mIw1x+DCCGngVGq2soTBVVOxx2s/C6mTX9+pA==} - peerDependencies: - react: '>=16.13.1' + react-image-crop@10.1.8(react@19.0.0-rc-06d0b89e-20240801): dependencies: react: 19.0.0-rc-06d0b89e-20240801 - dev: false - /react-is@16.13.1: - resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} + react-is@16.13.1: {} - /react-onclickoutside@6.13.1(react-dom@19.0.0-rc-06d0b89e-20240801)(react@19.0.0-rc-06d0b89e-20240801): - resolution: {integrity: sha512-LdrrxK/Yh9zbBQdFbMTXPp3dTSN9B+9YJQucdDu3JNKRrbdU+H+/TVONJoWtOwy4II8Sqf1y/DTI6w/vGPYW0w==} - peerDependencies: - react: ^15.5.x || ^16.x || ^17.x || ^18.x - react-dom: ^15.5.x || ^16.x || ^17.x || ^18.x + react-onclickoutside@6.13.1(react-dom@19.0.0-rc-06d0b89e-20240801)(react@19.0.0-rc-06d0b89e-20240801): dependencies: react: 19.0.0-rc-06d0b89e-20240801 react-dom: 19.0.0-rc-06d0b89e-20240801(react@19.0.0-rc-06d0b89e-20240801) - dev: false - /react-remove-scroll-bar@2.3.6(react@19.0.0-rc-06d0b89e-20240801)(types-react@19.0.0-rc.0): - resolution: {integrity: sha512-DtSYaao4mBmX+HDo5YWYdBWQwYIQQshUV/dVxFxK+KM26Wjwp1gZ6rv6OC3oujI6Bfu6Xyg3TwK533AQutsn/g==} - engines: {node: '>=10'} - peerDependencies: - '@types/react': npm:types-react@19.0.0-rc.0 - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - '@types/react': - optional: true + react-remove-scroll-bar@2.3.6(react@19.0.0-rc-06d0b89e-20240801)(types-react@19.0.0-rc.0): dependencies: - '@types/react': /types-react@19.0.0-rc.0 + '@types/react': types-react@19.0.0-rc.0 react: 19.0.0-rc-06d0b89e-20240801 react-style-singleton: 2.2.1(react@19.0.0-rc-06d0b89e-20240801)(types-react@19.0.0-rc.0) tslib: 2.7.0 - dev: false - /react-remove-scroll@2.5.7(react@19.0.0-rc-06d0b89e-20240801)(types-react@19.0.0-rc.0): - resolution: {integrity: sha512-FnrTWO4L7/Bhhf3CYBNArEG/yROV0tKmTv7/3h9QCFvH6sndeFf1wPqOcbFVu5VAulS5dV1wGT3GZZ/1GawqiA==} - engines: {node: '>=10'} - peerDependencies: - '@types/react': npm:types-react@19.0.0-rc.0 - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - '@types/react': - optional: true + react-remove-scroll@2.5.7(react@19.0.0-rc-06d0b89e-20240801)(types-react@19.0.0-rc.0): dependencies: - '@types/react': /types-react@19.0.0-rc.0 + '@types/react': types-react@19.0.0-rc.0 react: 19.0.0-rc-06d0b89e-20240801 react-remove-scroll-bar: 2.3.6(react@19.0.0-rc-06d0b89e-20240801)(types-react@19.0.0-rc.0) react-style-singleton: 2.2.1(react@19.0.0-rc-06d0b89e-20240801)(types-react@19.0.0-rc.0) tslib: 2.7.0 use-callback-ref: 1.3.2(react@19.0.0-rc-06d0b89e-20240801)(types-react@19.0.0-rc.0) use-sidecar: 1.1.2(react@19.0.0-rc-06d0b89e-20240801)(types-react@19.0.0-rc.0) - dev: false - /react-select@5.8.0(react-dom@19.0.0-rc-06d0b89e-20240801)(react@19.0.0-rc-06d0b89e-20240801)(types-react@19.0.0-rc.0): - resolution: {integrity: sha512-TfjLDo58XrhP6VG5M/Mi56Us0Yt8X7xD6cDybC7yoRMUNm7BGO7qk8J0TLQOua/prb8vUOtsfnXZwfm30HGsAA==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + react-select@5.8.0(react-dom@19.0.0-rc-06d0b89e-20240801)(react@19.0.0-rc-06d0b89e-20240801)(types-react@19.0.0-rc.0): dependencies: '@babel/runtime': 7.25.6 '@emotion/cache': 11.13.1 @@ -7706,30 +9275,16 @@ packages: transitivePeerDependencies: - '@types/react' - supports-color - dev: false - /react-style-singleton@2.2.1(react@19.0.0-rc-06d0b89e-20240801)(types-react@19.0.0-rc.0): - resolution: {integrity: sha512-ZWj0fHEMyWkHzKYUr2Bs/4zU6XLmq9HsgBURm7g5pAVfyn49DgUiNgY2d4lXRlYSiCif9YBGpQleewkcqddc7g==} - engines: {node: '>=10'} - peerDependencies: - '@types/react': npm:types-react@19.0.0-rc.0 - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - '@types/react': - optional: true + react-style-singleton@2.2.1(react@19.0.0-rc-06d0b89e-20240801)(types-react@19.0.0-rc.0): dependencies: - '@types/react': /types-react@19.0.0-rc.0 + '@types/react': types-react@19.0.0-rc.0 get-nonce: 1.0.1 invariant: 2.2.4 react: 19.0.0-rc-06d0b89e-20240801 tslib: 2.7.0 - dev: false - /react-transition-group@4.4.5(react-dom@19.0.0-rc-06d0b89e-20240801)(react@19.0.0-rc-06d0b89e-20240801): - resolution: {integrity: sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g==} - peerDependencies: - react: '>=16.6.0' - react-dom: '>=16.6.0' + react-transition-group@4.4.5(react-dom@19.0.0-rc-06d0b89e-20240801)(react@19.0.0-rc-06d0b89e-20240801): dependencies: '@babel/runtime': 7.25.6 dom-helpers: 5.2.1 @@ -7737,36 +9292,25 @@ packages: prop-types: 15.8.1 react: 19.0.0-rc-06d0b89e-20240801 react-dom: 19.0.0-rc-06d0b89e-20240801(react@19.0.0-rc-06d0b89e-20240801) - dev: false - /react@18.3.1: - resolution: {integrity: sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==} - engines: {node: '>=0.10.0'} + react@18.3.1: dependencies: loose-envify: 1.4.0 - dev: false - /react@19.0.0-rc-06d0b89e-20240801: - resolution: {integrity: sha512-moBKIME1GBgs8onH1xCs+gzPWyLF62m+2XbD4GpirxeRDca7GLA8UQZO9IuQvf1uxCpVWCG8FrpU/D2x7Plknw==} - engines: {node: '>=0.10.0'} - dev: false + react@19.0.0-rc-06d0b89e-20240801: {} - /read-cache@1.0.0: - resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==} + read-cache@1.0.0: dependencies: pify: 2.3.0 - /readable-stream@1.0.34: - resolution: {integrity: sha512-ok1qVCJuRkNmvebYikljxJA/UEsKwLl2nI1OmaqAu4/UE+h0wKCHok4XkL/gvi39OacXvw59RJUOFUkDib2rHg==} + readable-stream@1.0.34: dependencies: core-util-is: 1.0.3 inherits: 2.0.4 isarray: 0.0.1 string_decoder: 0.10.31 - dev: true - /readable-stream@2.3.8: - resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==} + readable-stream@2.3.8: dependencies: core-util-is: 1.0.3 inherits: 2.0.4 @@ -7775,56 +9319,36 @@ packages: safe-buffer: 5.1.2 string_decoder: 1.1.1 util-deprecate: 1.0.2 - dev: true - /readable-stream@3.6.2: - resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} - engines: {node: '>= 6'} + readable-stream@3.6.2: dependencies: inherits: 2.0.4 string_decoder: 1.3.0 util-deprecate: 1.0.2 - dev: false - /readable-stream@4.5.2: - resolution: {integrity: sha512-yjavECdqeZ3GLXNgRXgeQEdz9fvDDkNKyHnbHRFtOr7/LcfgBcmct7t/ET+HaCTqfh06OzoAxrkN/IfjJBVe+g==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + readable-stream@4.5.2: dependencies: abort-controller: 3.0.0 buffer: 6.0.3 events: 3.3.0 process: 0.11.10 string_decoder: 1.3.0 - dev: false - /readable-web-to-node-stream@3.0.2: - resolution: {integrity: sha512-ePeK6cc1EcKLEhJFt/AebMCLL+GgSKhuygrZ/GLaKZYEecIgIECf4UaUuaByiGtzckwR4ain9VzUh95T1exYGw==} - engines: {node: '>=8'} + readable-web-to-node-stream@3.0.2: dependencies: readable-stream: 3.6.2 - dev: false - /readdirp@3.6.0: - resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} - engines: {node: '>=8.10.0'} + readdirp@3.6.0: dependencies: picomatch: 2.3.1 - /real-require@0.2.0: - resolution: {integrity: sha512-57frrGM/OCTLqLOAh0mhVA9VBMHd+9U7Zb2THMGdBUoZVOtGbJzjxsYGDJ3A9AYYCP4hn6y1TVbaOfzWtm5GFg==} - engines: {node: '>= 12.13.0'} - dev: false + real-require@0.2.0: {} - /refa@0.11.0: - resolution: {integrity: sha512-486O8/pQXwj9jV0mVvUnTsxq0uknpBnNJ0eCUhkZqJRQ8KutrT1PhzmumdCeM1hSBF2eMlFPmwECRER4IbKXlQ==} - engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} + refa@0.11.0: dependencies: '@eslint-community/regexpp': 4.11.1 - dev: true - /reflect.getprototypeof@1.0.6: - resolution: {integrity: sha512-fmfw4XgoDke3kdI6h4xcUz1dG8uaiv5q9gcEwLS4Pnth2kxT+GZ7YehS1JTMGBQmtV7Y4GFGbs2re2NqhdozUg==} - engines: {node: '>= 0.4'} + reflect.getprototypeof@1.0.6: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 @@ -7833,197 +9357,119 @@ packages: get-intrinsic: 1.2.4 globalthis: 1.0.4 which-builtin-type: 1.1.4 - dev: true - /regenerator-runtime@0.14.1: - resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==} + regenerator-runtime@0.14.1: {} - /regexp-ast-analysis@0.6.0: - resolution: {integrity: sha512-OLxjyjPkVH+rQlBLb1I/P/VTmamSjGkvN5PTV5BXP432k3uVz727J7H29GA5IFiY0m7e1xBN7049Wn59FY3DEQ==} - engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} + regexp-ast-analysis@0.6.0: dependencies: '@eslint-community/regexpp': 4.11.1 refa: 0.11.0 - dev: true - /regexp.prototype.flags@1.5.2: - resolution: {integrity: sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==} - engines: {node: '>= 0.4'} + regexp.prototype.flags@1.5.2: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 es-errors: 1.3.0 set-function-name: 2.0.2 - dev: true - /regexpp@3.2.0: - resolution: {integrity: sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==} - engines: {node: '>=8'} - dev: true + regexpp@3.2.0: {} - /require-directory@2.1.1: - resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} - engines: {node: '>=0.10.0'} - dev: true + require-directory@2.1.1: {} - /require-from-string@2.0.2: - resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} - engines: {node: '>=0.10.0'} - dev: false + require-from-string@2.0.2: {} - /requireindex@1.2.0: - resolution: {integrity: sha512-L9jEkOi3ASd9PYit2cwRfyppc9NoABujTP8/5gFcbERmo5jUoAKovIC3fsF17pkTnGsrByysqX+Kxd2OTNI1ww==} - engines: {node: '>=0.10.5'} - dev: true + requireindex@1.2.0: {} - /resend@0.17.2: - resolution: {integrity: sha512-lakm76u4MiIDeMF1s2tCmjtksOhwZOs4WcAXkA7aUTvl+63/h+0h6Q6WnkB8RGtj6GakUhQuUkiZshfXgtIrGw==} + resend@0.17.2: dependencies: '@react-email/render': 0.0.7 axios: 1.4.0 type-fest: 3.13.0 transitivePeerDependencies: - debug - dev: false - /resolve-from@4.0.0: - resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} - engines: {node: '>=4'} + resolve-from@4.0.0: {} - /resolve-pkg-maps@1.0.0: - resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} + resolve-pkg-maps@1.0.0: {} - /resolve@1.22.8: - resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==} - hasBin: true + resolve@1.22.8: dependencies: is-core-module: 2.15.1 path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 - /resolve@2.0.0-next.5: - resolution: {integrity: sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==} - hasBin: true + resolve@2.0.0-next.5: dependencies: is-core-module: 2.15.1 path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 - dev: true - /reusify@1.0.4: - resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} - engines: {iojs: '>=1.0.0', node: '>=0.10.0'} + reusify@1.0.4: {} - /rimraf@3.0.2: - resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} - deprecated: Rimraf versions prior to v4 are no longer supported - hasBin: true + rimraf@3.0.2: dependencies: glob: 7.2.3 - dev: true - /run-parallel@1.2.0: - resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} + run-parallel@1.2.0: dependencies: queue-microtask: 1.2.3 - /safe-array-concat@1.1.2: - resolution: {integrity: sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==} - engines: {node: '>=0.4'} + safe-array-concat@1.1.2: dependencies: call-bind: 1.0.7 get-intrinsic: 1.2.4 has-symbols: 1.0.3 isarray: 2.0.5 - dev: true - /safe-buffer@5.1.2: - resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} - dev: true + safe-buffer@5.1.2: {} - /safe-buffer@5.2.1: - resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} - dev: false + safe-buffer@5.2.1: {} - /safe-regex-test@1.0.3: - resolution: {integrity: sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==} - engines: {node: '>= 0.4'} + safe-regex-test@1.0.3: dependencies: call-bind: 1.0.7 es-errors: 1.3.0 is-regex: 1.1.4 - dev: true - /safe-stable-stringify@2.5.0: - resolution: {integrity: sha512-b3rppTKm9T+PsVCBEOUR46GWI7fdOs00VKZ1+9c1EWDaDMvjQc6tUwuFyIprgGgTcWoVHSKrU8H31ZHA2e0RHA==} - engines: {node: '>=10'} - dev: false + safe-stable-stringify@2.5.0: {} - /sanitize-filename@1.6.3: - resolution: {integrity: sha512-y/52Mcy7aw3gRm7IrcGDFx/bCk4AhRh2eI9luHOQM86nZsqwiRkkq2GekHXBBD+SmPidc8i2PqtYZl+pWJ8Oeg==} + sanitize-filename@1.6.3: dependencies: truncate-utf8-bytes: 1.0.2 - dev: false - /sass@1.77.4: - resolution: {integrity: sha512-vcF3Ckow6g939GMA4PeU7b2K/9FALXk2KF9J87txdHzXbUF9XRQRwSxcAs/fGaTnJeBFd7UoV22j3lzMLdM0Pw==} - engines: {node: '>=14.0.0'} - hasBin: true + sass@1.77.4: dependencies: chokidar: 3.6.0 immutable: 4.3.7 source-map-js: 1.2.1 - dev: false - /scheduler@0.23.2: - resolution: {integrity: sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==} + scheduler@0.23.2: dependencies: loose-envify: 1.4.0 - dev: false - /scheduler@0.25.0-rc-06d0b89e-20240801: - resolution: {integrity: sha512-5RF+494IBigvBHUPYId9MhAWyN0cZZq3o82oAbYvZuc2IFc4mZYHS3z2MuJ5Lwm39zGWDEzB404X6BO47zbt5w==} - dev: false + scheduler@0.25.0-rc-06d0b89e-20240801: {} - /scheduler@0.25.0-rc-f994737d14-20240522: - resolution: {integrity: sha512-qS+xGFF7AljP2APO2iJe8zESNsK20k25MACz+WGOXPybUsRdi1ssvaoF93im2nSX2q/XT3wKkjdz6RQfbmaxdw==} - dev: false + scheduler@0.25.0-rc-f994737d14-20240522: {} - /scmp@2.1.0: - resolution: {integrity: sha512-o/mRQGk9Rcer/jEEw/yw4mwo3EU/NvYvp577/Btqrym9Qy5/MdWGBqipbALgd2lrdWTJ5/gqDusxfnQBxOxT2Q==} - dev: false + scmp@2.1.0: {} - /scslre@0.2.0: - resolution: {integrity: sha512-4hc49fUMmX3jM0XdFUAPBrs1xwEcdHa0KyjEsjFs+Zfc66mpFpq5YmRgDtl+Ffo6AtJIilfei+yKw8fUn3N88w==} + scslre@0.2.0: dependencies: '@eslint-community/regexpp': 4.11.1 refa: 0.11.0 regexp-ast-analysis: 0.6.0 - dev: true - /secure-json-parse@2.7.0: - resolution: {integrity: sha512-6aU+Rwsezw7VR8/nyvKTx8QpWH9FrcYiXXlqC4z5d5XQBDRqtbfsRjnwGyqbi3gddNtWHuEk9OANUotL26qKUw==} - dev: false + secure-json-parse@2.7.0: {} - /selderee@0.10.0: - resolution: {integrity: sha512-DEL/RW/f4qLw/NrVg97xKaEBC8IpzIG2fvxnzCp3Z4yk4jQ3MXom+Imav9wApjxX2dfS3eW7x0DXafJr85i39A==} + selderee@0.10.0: dependencies: parseley: 0.11.0 - dev: false - /semver@6.3.1: - resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} - hasBin: true - dev: true + semver@6.3.1: {} - /semver@7.6.3: - resolution: {integrity: sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==} - engines: {node: '>=10'} - hasBin: true + semver@7.6.3: {} - /set-function-length@1.2.2: - resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==} - engines: {node: '>= 0.4'} + set-function-length@1.2.2: dependencies: define-data-property: 1.1.4 es-errors: 1.3.0 @@ -8031,22 +9477,15 @@ packages: get-intrinsic: 1.2.4 gopd: 1.0.1 has-property-descriptors: 1.0.2 - dev: true - /set-function-name@2.0.2: - resolution: {integrity: sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==} - engines: {node: '>= 0.4'} + set-function-name@2.0.2: dependencies: define-data-property: 1.1.4 es-errors: 1.3.0 functions-have-names: 1.2.3 has-property-descriptors: 1.0.2 - dev: true - /sharp@0.32.6: - resolution: {integrity: sha512-KyLTWwgcR9Oe4d9HwCwNM2l7+J0dUQwn/yf7S0EnTtb0eVS4RxO0eUSvxPtzT4F3SY+C4K6fqdv/DO27sJ/v/w==} - engines: {node: '>=14.15.0'} - requiresBuild: true + sharp@0.32.6: dependencies: color: 4.2.3 detect-libc: 2.0.3 @@ -8056,12 +9495,8 @@ packages: simple-get: 4.0.1 tar-fs: 3.0.6 tunnel-agent: 0.6.0 - dev: false - /sharp@0.33.5: - resolution: {integrity: sha512-haPVm1EkS9pgvHrQ/F3Xy+hgcuMV0Wm9vfIBSiwZ05k+xgb0PkBQpGsAA/oWdDobNaZTH5ppvHtzCFbnSEwHVw==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} - requiresBuild: true + sharp@0.33.5: dependencies: color: 4.2.3 detect-libc: 2.0.3 @@ -8086,182 +9521,111 @@ packages: '@img/sharp-wasm32': 0.33.5 '@img/sharp-win32-ia32': 0.33.5 '@img/sharp-win32-x64': 0.33.5 - dev: false optional: true - /shebang-command@2.0.0: - resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} - engines: {node: '>=8'} + shebang-command@2.0.0: dependencies: shebang-regex: 3.0.0 - /shebang-regex@3.0.0: - resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} - engines: {node: '>=8'} + shebang-regex@3.0.0: {} - /side-channel@1.0.6: - resolution: {integrity: sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==} - engines: {node: '>= 0.4'} + side-channel@1.0.6: dependencies: call-bind: 1.0.7 es-errors: 1.3.0 get-intrinsic: 1.2.4 object-inspect: 1.13.2 - dev: true - /sift@16.0.1: - resolution: {integrity: sha512-Wv6BjQ5zbhW7VFefWusVP33T/EM0vYikCaQ2qR8yULbsilAT8/wQaXvuQ3ptGLpoKx+lihJE3y2UTgKDyyNHZQ==} - dev: false + sift@16.0.1: {} - /signal-exit@4.1.0: - resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} - engines: {node: '>=14'} + signal-exit@4.1.0: {} - /simple-concat@1.0.1: - resolution: {integrity: sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==} - dev: false + simple-concat@1.0.1: {} - /simple-get@4.0.1: - resolution: {integrity: sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==} + simple-get@4.0.1: dependencies: decompress-response: 6.0.0 once: 1.4.0 simple-concat: 1.0.1 - dev: false - /simple-swizzle@0.2.2: - resolution: {integrity: sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==} + simple-swizzle@0.2.2: dependencies: is-arrayish: 0.3.2 - dev: false - /simple-wcswidth@1.0.1: - resolution: {integrity: sha512-xMO/8eNREtaROt7tJvWJqHBDTMFN4eiQ5I4JRMuilwfnFcV5W9u7RUkueNkdw0jPqGMX36iCywelS5yilTuOxg==} - dev: false + simple-wcswidth@1.0.1: {} - /sisteransi@1.0.5: - resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} - dev: false + sisteransi@1.0.5: {} - /slash@3.0.0: - resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} - engines: {node: '>=8'} - dev: true + slash@3.0.0: {} - /smart-buffer@4.2.0: - resolution: {integrity: sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==} - engines: {node: '>= 6.0.0', npm: '>= 3.0.0'} - dev: false + smart-buffer@4.2.0: {} - /socks@2.8.3: - resolution: {integrity: sha512-l5x7VUUWbjVFbafGLxPWkYsHIhEvmF85tbIeFZWc8ZPtoMyybuEhL7Jye/ooC4/d48FgOjSJXgsF/AJPYCW8Zw==} - engines: {node: '>= 10.0.0', npm: '>= 3.0.0'} + socks@2.8.3: dependencies: ip-address: 9.0.5 smart-buffer: 4.2.0 - dev: false - /sonic-boom@4.1.0: - resolution: {integrity: sha512-NGipjjRicyJJ03rPiZCJYjwlsuP2d1/5QUviozRXC7S3WdVWNK5e3Ojieb9CCyfhq2UC+3+SRd9nG3I2lPRvUw==} + sonic-boom@4.1.0: dependencies: atomic-sleep: 1.0.0 - dev: false - /sonner@1.5.0(react-dom@19.0.0-rc-06d0b89e-20240801)(react@19.0.0-rc-06d0b89e-20240801): - resolution: {integrity: sha512-FBjhG/gnnbN6FY0jaNnqZOMmB73R+5IiyYAw8yBj7L54ER7HB3fOSE5OFiQiE2iXWxeXKvg6fIP4LtVppHEdJA==} - peerDependencies: - react: ^18.0.0 - react-dom: ^18.0.0 + sonner@1.5.0(react-dom@19.0.0-rc-06d0b89e-20240801)(react@19.0.0-rc-06d0b89e-20240801): dependencies: react: 19.0.0-rc-06d0b89e-20240801 react-dom: 19.0.0-rc-06d0b89e-20240801(react@19.0.0-rc-06d0b89e-20240801) - dev: false - /source-map-js@1.2.1: - resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} - engines: {node: '>=0.10.0'} + source-map-js@1.2.1: {} - /source-map@0.5.7: - resolution: {integrity: sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==} - engines: {node: '>=0.10.0'} - dev: false + source-map@0.5.7: {} - /sparse-bitfield@3.0.3: - resolution: {integrity: sha512-kvzhi7vqKTfkh0PZU+2D2PIllw2ymqJKujUcyPMd9Y75Nv4nPbGJZXNhxsgdQab2BmlDct1YnfQCguEvHr7VsQ==} - requiresBuild: true + sparse-bitfield@3.0.3: dependencies: memory-pager: 1.5.0 - dev: false optional: true - /split2@4.2.0: - resolution: {integrity: sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==} - engines: {node: '>= 10.x'} - dev: false + split2@4.2.0: {} - /sprintf-js@1.1.3: - resolution: {integrity: sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==} - dev: false + sprintf-js@1.1.3: {} - /state-local@1.0.7: - resolution: {integrity: sha512-HTEHMNieakEnoe33shBYcZ7NX83ACUjCu8c40iOGEZsngj9zRnkqS9j1pqQPXwobB0ZcVTk27REb7COQ0UR59w==} - dev: false + state-local@1.0.7: {} - /stop-iteration-iterator@1.0.0: - resolution: {integrity: sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ==} - engines: {node: '>= 0.4'} + stop-iteration-iterator@1.0.0: dependencies: internal-slot: 1.0.7 - dev: true - /stream-browserify@3.0.0: - resolution: {integrity: sha512-H73RAHsVBapbim0tU2JwwOiXUj+fikfiaoYAKHF3VJfA0pe2BCzkhAHBlLG6REzE+2WNZcxOXjK7lkso+9euLA==} + stream-browserify@3.0.0: dependencies: inherits: 2.0.4 readable-stream: 3.6.2 - dev: false - /streamsearch@1.1.0: - resolution: {integrity: sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==} - engines: {node: '>=10.0.0'} - dev: false + streamsearch@1.1.0: {} - /streamx@2.20.1: - resolution: {integrity: sha512-uTa0mU6WUC65iUvzKH4X9hEdvSW7rbPxPtwfWiLMSj3qTdQbAiUboZTxauKfpFuGIGa1C2BYijZ7wgdUXICJhA==} + streamx@2.20.1: dependencies: fast-fifo: 1.3.2 queue-tick: 1.0.1 text-decoder: 1.2.0 optionalDependencies: bare-events: 2.4.2 - dev: false - /string-width@4.2.3: - resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} - engines: {node: '>=8'} + string-width@4.2.3: dependencies: emoji-regex: 8.0.0 is-fullwidth-code-point: 3.0.0 strip-ansi: 6.0.1 - /string-width@5.1.2: - resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} - engines: {node: '>=12'} + string-width@5.1.2: dependencies: eastasianwidth: 0.2.0 emoji-regex: 9.2.2 strip-ansi: 7.1.0 - /string.prototype.includes@2.0.0: - resolution: {integrity: sha512-E34CkBgyeqNDcrbU76cDjL5JLcVrtSdYq0MEh/B10r17pRP4ciHLwTgnuLV8Ay6cgEMLkcBkFCKyFZ43YldYzg==} + string.prototype.includes@2.0.0: dependencies: define-properties: 1.2.1 es-abstract: 1.23.3 - dev: true - /string.prototype.matchall@4.0.11: - resolution: {integrity: sha512-NUdh0aDavY2og7IbBPenWqR9exH+E26Sv8e0/eTe1tltDGZL+GtBkDAnnyBtmekfK6/Dq3MkcGtzXFEd1LQrtg==} - engines: {node: '>= 0.4'} + string.prototype.matchall@4.0.11: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 @@ -8275,121 +9639,70 @@ packages: regexp.prototype.flags: 1.5.2 set-function-name: 2.0.2 side-channel: 1.0.6 - dev: true - /string.prototype.repeat@1.0.0: - resolution: {integrity: sha512-0u/TldDbKD8bFCQ/4f5+mNRrXwZ8hg2w7ZR8wa16e8z9XpePWl3eGEcUD0OXpEH/VJH/2G3gjUtR3ZOiBe2S/w==} + string.prototype.repeat@1.0.0: dependencies: define-properties: 1.2.1 es-abstract: 1.23.3 - dev: true - /string.prototype.trim@1.2.9: - resolution: {integrity: sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==} - engines: {node: '>= 0.4'} + string.prototype.trim@1.2.9: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 es-abstract: 1.23.3 es-object-atoms: 1.0.0 - dev: true - /string.prototype.trimend@1.0.8: - resolution: {integrity: sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==} + string.prototype.trimend@1.0.8: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 es-object-atoms: 1.0.0 - dev: true - /string.prototype.trimstart@1.0.8: - resolution: {integrity: sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==} - engines: {node: '>= 0.4'} + string.prototype.trimstart@1.0.8: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 es-object-atoms: 1.0.0 - dev: true - /string_decoder@0.10.31: - resolution: {integrity: sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==} - dev: true + string_decoder@0.10.31: {} - /string_decoder@1.1.1: - resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} + string_decoder@1.1.1: dependencies: safe-buffer: 5.1.2 - dev: true - /string_decoder@1.3.0: - resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} + string_decoder@1.3.0: dependencies: safe-buffer: 5.2.1 - dev: false - /strip-ansi@6.0.1: - resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} - engines: {node: '>=8'} + strip-ansi@6.0.1: dependencies: ansi-regex: 5.0.1 - /strip-ansi@7.1.0: - resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} - engines: {node: '>=12'} + strip-ansi@7.1.0: dependencies: ansi-regex: 6.1.0 - /strip-bom@3.0.0: - resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} - engines: {node: '>=4'} - dev: true + strip-bom@3.0.0: {} - /strip-json-comments@2.0.1: - resolution: {integrity: sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==} - engines: {node: '>=0.10.0'} - dev: false + strip-json-comments@2.0.1: {} - /strip-json-comments@3.1.1: - resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} - engines: {node: '>=8'} + strip-json-comments@3.1.1: {} - /strnum@1.0.5: - resolution: {integrity: sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==} - dev: false + strnum@1.0.5: {} - /strtok3@7.1.1: - resolution: {integrity: sha512-mKX8HA/cdBqMKUr0MMZAFssCkIGoZeSCMXgnt79yKxNFguMLVFgRe6wB+fsL0NmoHDbeyZXczy7vEPSoo3rkzg==} - engines: {node: '>=16'} + strtok3@7.1.1: dependencies: '@tokenizer/token': 0.3.0 peek-readable: 5.2.0 - dev: false - /styled-jsx@5.1.6(react@19.0.0-rc-06d0b89e-20240801): - resolution: {integrity: sha512-qSVyDTeMotdvQYoHWLNGwRFJHC+i+ZvdBRYosOFgC+Wg1vx4frN2/RG/NA7SYqqvKNLf39P2LSRA2pu6n0XYZA==} - engines: {node: '>= 12.0.0'} - peerDependencies: - '@babel/core': '*' - babel-plugin-macros: '*' - react: '>= 16.8.0 || 17.x.x || ^18.0.0-0 || ^19.0.0-0' - peerDependenciesMeta: - '@babel/core': - optional: true - babel-plugin-macros: - optional: true + styled-jsx@5.1.6(react@19.0.0-rc-06d0b89e-20240801): dependencies: client-only: 0.0.1 react: 19.0.0-rc-06d0b89e-20240801 - dev: false - /stylis@4.2.0: - resolution: {integrity: sha512-Orov6g6BB1sDfYgzWfTHDOxamtX1bE/zo104Dh9e6fqJ3PooipYyfJ0pUmrZO2wAvO8YbEyeFrkV91XTsGMSrw==} - dev: false + stylis@4.2.0: {} - /sucrase@3.35.0: - resolution: {integrity: sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==} - engines: {node: '>=16 || 14 >=14.17'} - hasBin: true + sucrase@3.35.0: dependencies: '@jridgewell/gen-mapping': 0.3.5 commander: 4.1.1 @@ -8399,44 +9712,25 @@ packages: pirates: 4.0.6 ts-interface-checker: 0.1.13 - /supports-color@5.5.0: - resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} - engines: {node: '>=4'} + supports-color@5.5.0: dependencies: has-flag: 3.0.0 - dev: false - /supports-color@7.2.0: - resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} - engines: {node: '>=8'} + supports-color@7.2.0: dependencies: has-flag: 4.0.0 - dev: true - /supports-preserve-symlinks-flag@1.0.0: - resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} - engines: {node: '>= 0.4'} + supports-preserve-symlinks-flag@1.0.0: {} - /tabbable@6.2.0: - resolution: {integrity: sha512-Cat63mxsVJlzYvN51JmVXIgNoUokrIaT2zLclCXjRd8boZ0004U4KCs/sToJ75C6sdlByWxpYnb5Boif1VSFew==} - dev: false + tabbable@6.2.0: {} - /tailwind-merge@2.5.2: - resolution: {integrity: sha512-kjEBm+pvD+6eAwzJL2Bi+02/9LFLal1Gs61+QB7HvTfQQ0aXwC5LGT8PEt1gS0CWKktKe6ysPTAy3cBC5MeiIg==} - dev: false + tailwind-merge@2.5.2: {} - /tailwindcss-animate@1.0.7(tailwindcss@3.4.11): - resolution: {integrity: sha512-bl6mpH3T7I3UFxuvDEXLxy/VuFxBk5bbzplh7tXI68mwMokNYd1t9qPBHlnyTwfa4JGC4zP516I1hYYtQ/vspA==} - peerDependencies: - tailwindcss: '>=3.0.0 || insiders' + tailwindcss-animate@1.0.7(tailwindcss@3.4.11): dependencies: tailwindcss: 3.4.11 - dev: false - /tailwindcss@3.4.11: - resolution: {integrity: sha512-qhEuBcLemjSJk5ajccN9xJFtM/h0AVCPaA6C92jNP+M2J8kX+eMJHI7R2HFKUvvAsMpcfLILMCFYSeDwpMmlUg==} - engines: {node: '>=14.0.0'} - hasBin: true + tailwindcss@3.4.11: dependencies: '@alloc/quick-lru': 5.2.0 arg: 5.0.2 @@ -8463,225 +9757,141 @@ packages: transitivePeerDependencies: - ts-node - /tapable@2.2.1: - resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} - engines: {node: '>=6'} - dev: true + tapable@2.2.1: {} - /tar-fs@2.1.1: - resolution: {integrity: sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==} + tar-fs@2.1.1: dependencies: chownr: 1.1.4 mkdirp-classic: 0.5.3 pump: 3.0.2 tar-stream: 2.2.0 - dev: false - /tar-fs@3.0.6: - resolution: {integrity: sha512-iokBDQQkUyeXhgPYaZxmczGPhnhXZ0CmrqI+MOb/WFGS9DW5wnfrLgtjUJBvz50vQ3qfRwJ62QVoCFu8mPVu5w==} + tar-fs@3.0.6: dependencies: pump: 3.0.2 tar-stream: 3.1.7 optionalDependencies: bare-fs: 2.3.5 bare-path: 2.1.3 - dev: false - /tar-stream@2.2.0: - resolution: {integrity: sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==} - engines: {node: '>=6'} + tar-stream@2.2.0: dependencies: bl: 4.1.0 end-of-stream: 1.4.4 fs-constants: 1.0.0 inherits: 2.0.4 readable-stream: 3.6.2 - dev: false - /tar-stream@3.1.7: - resolution: {integrity: sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ==} + tar-stream@3.1.7: dependencies: b4a: 1.6.6 fast-fifo: 1.3.2 streamx: 2.20.1 - dev: false - /text-decoder@1.2.0: - resolution: {integrity: sha512-n1yg1mOj9DNpk3NeZOx7T6jchTbyJS3i3cucbNN6FcdPriMZx7NsgrGpWWdWZZGxD7ES1XB+3uoqHMgOKaN+fg==} + text-decoder@1.2.0: dependencies: b4a: 1.6.6 - dev: false - /text-table@0.2.0: - resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} - dev: true + text-table@0.2.0: {} - /thenify-all@1.6.0: - resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==} - engines: {node: '>=0.8'} + thenify-all@1.6.0: dependencies: thenify: 3.3.1 - /thenify@3.3.1: - resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} + thenify@3.3.1: dependencies: any-promise: 1.3.0 - /thread-stream@3.1.0: - resolution: {integrity: sha512-OqyPZ9u96VohAyMfJykzmivOrY2wfMSf3C5TtFJVgN+Hm6aj+voFhlK+kZEIv2FBh1X6Xp3DlnCOfEQ3B2J86A==} + thread-stream@3.1.0: dependencies: real-require: 0.2.0 - dev: false - /through2@2.0.5: - resolution: {integrity: sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==} + through2@2.0.5: dependencies: readable-stream: 2.3.8 xtend: 4.0.2 - dev: true - /to-fast-properties@2.0.0: - resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} - engines: {node: '>=4'} - dev: false + to-fast-properties@2.0.0: {} - /to-regex-range@5.0.1: - resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} - engines: {node: '>=8.0'} + to-regex-range@5.0.1: dependencies: is-number: 7.0.0 - /token-types@5.0.1: - resolution: {integrity: sha512-Y2fmSnZjQdDb9W4w4r1tswlMHylzWIeOKpx0aZH9BgGtACHhrk3OkT52AzwcuqTRBZtvvnTjDBh8eynMulu8Vg==} - engines: {node: '>=14.16'} + token-types@5.0.1: dependencies: '@tokenizer/token': 0.3.0 ieee754: 1.2.1 - dev: false - /tr46@0.0.3: - resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} - dev: false + tr46@0.0.3: {} - /tr46@3.0.0: - resolution: {integrity: sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==} - engines: {node: '>=12'} + tr46@3.0.0: dependencies: punycode: 2.3.1 - dev: false - /truncate-utf8-bytes@1.0.2: - resolution: {integrity: sha512-95Pu1QXQvruGEhv62XCMO3Mm90GscOCClvrIUwCM0PYOXK3kaF3l3sIHxx71ThJfcbM2O5Au6SO3AWCSEfW4mQ==} + truncate-utf8-bytes@1.0.2: dependencies: utf8-byte-length: 1.0.5 - dev: false - /ts-api-utils@1.3.0(typescript@5.6.2): - resolution: {integrity: sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==} - engines: {node: '>=16'} - peerDependencies: - typescript: '>=4.2.0' + ts-api-utils@1.3.0(typescript@5.6.2): dependencies: typescript: 5.6.2 - dev: true - /ts-essentials@10.0.2(typescript@5.6.2): - resolution: {integrity: sha512-Xwag0TULqriaugXqVdDiGZ5wuZpqABZlpwQ2Ho4GDyiu/R2Xjkp/9+zcFxL7uzeLl/QCPrflnvpVYyS3ouT7Zw==} - peerDependencies: - typescript: '>=4.5.0' - peerDependenciesMeta: - typescript: - optional: true + ts-essentials@10.0.2(typescript@5.6.2): dependencies: typescript: 5.6.2 - dev: false - /ts-interface-checker@0.1.13: - resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} + ts-interface-checker@0.1.13: {} - /tsconfig-paths@3.15.0: - resolution: {integrity: sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==} + tsconfig-paths@3.15.0: dependencies: '@types/json5': 0.0.29 json5: 1.0.2 minimist: 1.2.8 strip-bom: 3.0.0 - dev: true - /tslib@1.14.1: - resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} + tslib@1.14.1: {} - /tslib@2.7.0: - resolution: {integrity: sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==} - dev: false + tslib@2.7.0: {} - /tsutils@3.21.0(typescript@5.6.2): - resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} - engines: {node: '>= 6'} - peerDependencies: - typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta' + tsutils@3.21.0(typescript@5.6.2): dependencies: tslib: 1.14.1 typescript: 5.6.2 - dev: true - /tsx@4.19.1: - resolution: {integrity: sha512-0flMz1lh74BR4wOvBjuh9olbnwqCPc35OOlfyzHba0Dc+QNUeWX/Gq2YTbnwcWPO3BMd8fkzRVrHcsR+a7z7rA==} - engines: {node: '>=18.0.0'} - hasBin: true + tsx@4.19.1: dependencies: esbuild: 0.23.1 get-tsconfig: 4.8.1 optionalDependencies: fsevents: 2.3.3 - dev: false - /tunnel-agent@0.6.0: - resolution: {integrity: sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==} + tunnel-agent@0.6.0: dependencies: safe-buffer: 5.2.1 - dev: false - /type-check@0.4.0: - resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} - engines: {node: '>= 0.8.0'} + type-check@0.4.0: dependencies: prelude-ls: 1.2.1 - dev: true - /type-fest@0.20.2: - resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} - engines: {node: '>=10'} - dev: true + type-fest@0.20.2: {} - /type-fest@3.13.0: - resolution: {integrity: sha512-Gur3yQGM9qiLNs0KPP7LPgeRbio2QTt4xXouobMCarR0/wyW3F+F/+OWwshg3NG0Adon7uQfSZBpB46NfhoF1A==} - engines: {node: '>=14.16'} - dev: false + type-fest@3.13.0: {} - /typed-array-buffer@1.0.2: - resolution: {integrity: sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==} - engines: {node: '>= 0.4'} + typed-array-buffer@1.0.2: dependencies: call-bind: 1.0.7 es-errors: 1.3.0 is-typed-array: 1.1.13 - dev: true - /typed-array-byte-length@1.0.1: - resolution: {integrity: sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==} - engines: {node: '>= 0.4'} + typed-array-byte-length@1.0.1: dependencies: call-bind: 1.0.7 for-each: 0.3.3 gopd: 1.0.1 has-proto: 1.0.3 is-typed-array: 1.1.13 - dev: true - /typed-array-byte-offset@1.0.2: - resolution: {integrity: sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==} - engines: {node: '>= 0.4'} + typed-array-byte-offset@1.0.2: dependencies: available-typed-arrays: 1.0.7 call-bind: 1.0.7 @@ -8689,11 +9899,8 @@ packages: gopd: 1.0.1 has-proto: 1.0.3 is-typed-array: 1.1.13 - dev: true - /typed-array-length@1.0.6: - resolution: {integrity: sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==} - engines: {node: '>= 0.4'} + typed-array-length@1.0.6: dependencies: call-bind: 1.0.7 for-each: 0.3.3 @@ -8701,174 +9908,96 @@ packages: has-proto: 1.0.3 is-typed-array: 1.1.13 possible-typed-array-names: 1.0.0 - dev: true - /types-react-dom@19.0.0-rc.0: - resolution: {integrity: sha512-wGlQSD6H6EeCxhH+dSip1cPcCU7nNTOwHEr29rjiNtGkUPlmEofOizoQaPMEqQH2V76ME3NLvBDLGajRu3xZOw==} + types-react-dom@19.0.0-rc.0: dependencies: - '@types/react': /types-react@19.0.0-rc.0 + '@types/react': types-react@19.0.0-rc.0 - /types-react@19.0.0-rc.0: - resolution: {integrity: sha512-JFd3qtgXZ+EdHht8WXMPSF231brd6Bu4yLKqyo0JjpzhmjYxJptT6TBh/xFqOhx+ee2Nagj7Ttkh5F/jc49TVQ==} + types-react@19.0.0-rc.0: dependencies: csstype: 3.1.3 - /typescript@5.6.2: - resolution: {integrity: sha512-NW8ByodCSNCwZeghjN3o+JX5OFH0Ojg6sadjEKY4huZ52TqbJTJnDo5+Tw98lSy63NZvi4n+ez5m2u5d4PkZyw==} - engines: {node: '>=14.17'} - hasBin: true + typescript@5.6.2: {} - /unbox-primitive@1.0.2: - resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==} + unbox-primitive@1.0.2: dependencies: call-bind: 1.0.7 has-bigints: 1.0.2 has-symbols: 1.0.3 which-boxed-primitive: 1.0.2 - dev: true - /undici-types@6.19.8: - resolution: {integrity: sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==} + undici-types@6.19.8: {} - /unfetch@4.2.0: - resolution: {integrity: sha512-F9p7yYCn6cIW9El1zi0HI6vqpeIvBsr3dSuRO6Xuppb1u5rXpCPmMvLSyECLhybr9isec8Ohl0hPekMVrEinDA==} - dev: false + unfetch@4.2.0: {} - /unicorn-magic@0.1.0: - resolution: {integrity: sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ==} - engines: {node: '>=18'} - dev: false + unicorn-magic@0.1.0: {} - /untildify@4.0.0: - resolution: {integrity: sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==} - engines: {node: '>=8'} - dev: true + untildify@4.0.0: {} - /update-browserslist-db@1.1.0(browserslist@4.23.3): - resolution: {integrity: sha512-EdRAaAyk2cUE1wOf2DkEhzxqOQvFOoRJFNS6NeyJ01Gp2beMRpBAINjM2iDXE3KCuKhwnvHIQCJm6ThL2Z+HzQ==} - hasBin: true - peerDependencies: - browserslist: '>= 4.21.0' + update-browserslist-db@1.1.0(browserslist@4.23.3): dependencies: browserslist: 4.23.3 escalade: 3.2.0 picocolors: 1.1.0 - dev: true - /uri-js@4.4.1: - resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} + uri-js@4.4.1: dependencies: punycode: 2.3.1 - dev: true - /use-callback-ref@1.3.2(react@19.0.0-rc-06d0b89e-20240801)(types-react@19.0.0-rc.0): - resolution: {integrity: sha512-elOQwe6Q8gqZgDA8mrh44qRTQqpIHDcZ3hXTLjBe1i4ph8XpNJnO+aQf3NaG+lriLopI4HMx9VjQLfPQ6vhnoA==} - engines: {node: '>=10'} - peerDependencies: - '@types/react': npm:types-react@19.0.0-rc.0 - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - '@types/react': - optional: true + use-callback-ref@1.3.2(react@19.0.0-rc-06d0b89e-20240801)(types-react@19.0.0-rc.0): dependencies: - '@types/react': /types-react@19.0.0-rc.0 + '@types/react': types-react@19.0.0-rc.0 react: 19.0.0-rc-06d0b89e-20240801 tslib: 2.7.0 - dev: false - /use-context-selector@2.0.0(react@19.0.0-rc-06d0b89e-20240801)(scheduler@0.25.0-rc-f994737d14-20240522): - resolution: {integrity: sha512-owfuSmUNd3eNp3J9CdDl0kMgfidV+MkDvHPpvthN5ThqM+ibMccNE0k+Iq7TWC6JPFvGZqanqiGCuQx6DyV24g==} - peerDependencies: - react: '>=18.0.0' - scheduler: '>=0.19.0' + use-context-selector@2.0.0(react@19.0.0-rc-06d0b89e-20240801)(scheduler@0.25.0-rc-f994737d14-20240522): dependencies: react: 19.0.0-rc-06d0b89e-20240801 scheduler: 0.25.0-rc-f994737d14-20240522 - dev: false - /use-isomorphic-layout-effect@1.1.2(react@19.0.0-rc-06d0b89e-20240801)(types-react@19.0.0-rc.0): - resolution: {integrity: sha512-49L8yCO3iGT/ZF9QttjwLF/ZD9Iwto5LnH5LmEdk/6cFmXddqi2ulF0edxTwjj+7mqvpVVGQWvbXZdn32wRSHA==} - peerDependencies: - '@types/react': '*' - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - '@types/react': - optional: true + use-isomorphic-layout-effect@1.1.2(react@19.0.0-rc-06d0b89e-20240801)(types-react@19.0.0-rc.0): dependencies: - '@types/react': /types-react@19.0.0-rc.0 + '@types/react': types-react@19.0.0-rc.0 react: 19.0.0-rc-06d0b89e-20240801 - dev: false - /use-sidecar@1.1.2(react@19.0.0-rc-06d0b89e-20240801)(types-react@19.0.0-rc.0): - resolution: {integrity: sha512-epTbsLuzZ7lPClpz2TyryBfztm7m+28DlEv2ZCQ3MDr5ssiwyOwGH/e5F9CkfWjJ1t4clvI58yF822/GUkjjhw==} - engines: {node: '>=10'} - peerDependencies: - '@types/react': npm:types-react@19.0.0-rc.0 - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - '@types/react': - optional: true + use-sidecar@1.1.2(react@19.0.0-rc-06d0b89e-20240801)(types-react@19.0.0-rc.0): dependencies: - '@types/react': /types-react@19.0.0-rc.0 + '@types/react': types-react@19.0.0-rc.0 detect-node-es: 1.1.0 react: 19.0.0-rc-06d0b89e-20240801 tslib: 2.7.0 - dev: false - /utf8-byte-length@1.0.5: - resolution: {integrity: sha512-Xn0w3MtiQ6zoz2vFyUVruaCL53O/DwUvkEeOvj+uulMm0BkUGYWmBYVyElqZaSLhY6ZD0ulfU3aBra2aVT4xfA==} - dev: false + utf8-byte-length@1.0.5: {} - /util-deprecate@1.0.2: - resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} + util-deprecate@1.0.2: {} - /uuid@10.0.0: - resolution: {integrity: sha512-8XkAphELsDnEGrDxUOHB3RGvXz6TeuYSGEZBOjtTtPm2lwhGBjLgOzLHB63IUWfBpNucQjND6d3AOudO+H3RWQ==} - hasBin: true - dev: false + uuid@10.0.0: {} - /uuid@9.0.1: - resolution: {integrity: sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==} - hasBin: true - dev: false + uuid@9.0.1: {} - /webidl-conversions@3.0.1: - resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} - dev: false + webidl-conversions@3.0.1: {} - /webidl-conversions@7.0.0: - resolution: {integrity: sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==} - engines: {node: '>=12'} - dev: false + webidl-conversions@7.0.0: {} - /whatwg-url@11.0.0: - resolution: {integrity: sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==} - engines: {node: '>=12'} + whatwg-url@11.0.0: dependencies: tr46: 3.0.0 webidl-conversions: 7.0.0 - dev: false - /whatwg-url@5.0.0: - resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} + whatwg-url@5.0.0: dependencies: tr46: 0.0.3 webidl-conversions: 3.0.1 - dev: false - /which-boxed-primitive@1.0.2: - resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==} + which-boxed-primitive@1.0.2: dependencies: is-bigint: 1.0.4 is-boolean-object: 1.1.2 is-number-object: 1.0.7 is-string: 1.0.7 is-symbol: 1.0.4 - dev: true - /which-builtin-type@1.1.4: - resolution: {integrity: sha512-bppkmBSsHFmIMSl8BO9TbsyzsvGjVoppt8xUiGzwiu/bhDCGxnpOKCxgqj6GuyHE0mINMDecBFPlOm2hzY084w==} - engines: {node: '>= 0.4'} + which-builtin-type@1.1.4: dependencies: function.prototype.name: 1.1.6 has-tostringtag: 1.0.2 @@ -8882,110 +10011,60 @@ packages: which-boxed-primitive: 1.0.2 which-collection: 1.0.2 which-typed-array: 1.1.15 - dev: true - /which-collection@1.0.2: - resolution: {integrity: sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==} - engines: {node: '>= 0.4'} + which-collection@1.0.2: dependencies: is-map: 2.0.3 is-set: 2.0.3 is-weakmap: 2.0.2 is-weakset: 2.0.3 - dev: true - /which-typed-array@1.1.15: - resolution: {integrity: sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==} - engines: {node: '>= 0.4'} + which-typed-array@1.1.15: dependencies: available-typed-arrays: 1.0.7 call-bind: 1.0.7 for-each: 0.3.3 gopd: 1.0.1 has-tostringtag: 1.0.2 - dev: true - /which@2.0.2: - resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} - engines: {node: '>= 8'} - hasBin: true + which@2.0.2: dependencies: isexe: 2.0.0 - /word-wrap@1.2.5: - resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} - engines: {node: '>=0.10.0'} - dev: true + word-wrap@1.2.5: {} - /wrap-ansi@7.0.0: - resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} - engines: {node: '>=10'} + wrap-ansi@7.0.0: dependencies: ansi-styles: 4.3.0 string-width: 4.2.3 strip-ansi: 6.0.1 - /wrap-ansi@8.1.0: - resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} - engines: {node: '>=12'} + wrap-ansi@8.1.0: dependencies: ansi-styles: 6.2.1 string-width: 5.1.2 strip-ansi: 7.1.0 - /wrappy@1.0.2: - resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + wrappy@1.0.2: {} - /ws@8.18.0: - resolution: {integrity: sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==} - engines: {node: '>=10.0.0'} - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: '>=5.0.2' - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true - dev: false + ws@8.18.0: {} - /xss@1.0.15: - resolution: {integrity: sha512-FVdlVVC67WOIPvfOwhoMETV72f6GbW7aOabBC3WxN/oUdoEMDyLz4OgRv5/gck2ZeNqEQu+Tb0kloovXOfpYVg==} - engines: {node: '>= 0.10.0'} - hasBin: true + xss@1.0.15: dependencies: commander: 2.20.3 cssfilter: 0.0.10 - dev: false - /xtend@4.0.2: - resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} - engines: {node: '>=0.4'} - dev: true + xtend@4.0.2: {} - /y18n@5.0.8: - resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} - engines: {node: '>=10'} - dev: true + y18n@5.0.8: {} - /yaml@1.10.2: - resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} - engines: {node: '>= 6'} - dev: false + yaml@1.10.2: {} - /yaml@2.5.1: - resolution: {integrity: sha512-bLQOjaX/ADgQ20isPJRvF0iRUHIxVhYvr53Of7wGcWlO2jvtUlH5m87DsmulFVxRpNLOnI4tB6p/oh8D7kpn9Q==} - engines: {node: '>= 14'} - hasBin: true + yaml@2.5.1: {} - /yargs-parser@20.2.9: - resolution: {integrity: sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==} - engines: {node: '>=10'} - dev: true + yargs-parser@20.2.9: {} - /yargs@16.2.0: - resolution: {integrity: sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==} - engines: {node: '>=10'} + yargs@16.2.0: dependencies: cliui: 7.0.4 escalade: 3.2.0 @@ -8994,21 +10073,11 @@ packages: string-width: 4.2.3 y18n: 5.0.8 yargs-parser: 20.2.9 - dev: true - /yjs@13.6.19: - resolution: {integrity: sha512-GNKw4mEUn5yWU2QPHRx8jppxmCm9KzbBhB4qJLUJFiiYD0g/tDVgXQ7aPkyh01YO28kbs2J/BEbWBagjuWyejw==} - engines: {node: '>=16.0.0', npm: '>=8.0.0'} + yjs@13.6.19: dependencies: lib0: 0.2.97 - dev: false - /yocto-queue@0.1.0: - resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} - engines: {node: '>=10'} - dev: true + yocto-queue@0.1.0: {} - /yocto-queue@1.1.1: - resolution: {integrity: sha512-b4JR1PFR10y1mKjhHY9LaGo6tmrgjit7hxVIeAmyMw3jegXR4dhYqLaQF5zMXZxY7tLpMyJeLjr1C4rLmkVe8g==} - engines: {node: '>=12.20'} - dev: false + yocto-queue@1.1.1: {} diff --git a/test/config/collections/Joins/index.ts b/test/config/collections/Joins/index.ts new file mode 100644 index 0000000000..e21d8fd023 --- /dev/null +++ b/test/config/collections/Joins/index.ts @@ -0,0 +1,18 @@ +import type { CollectionConfig } from 'payload' + +export const postsSlug = 'joins' +export const PostsCollection: CollectionConfig = { + slug: postsSlug, + admin: { + useAsTitle: 'text', + }, + fields: [ + { + name: 'text', + type: 'text', + }, + ], + versions: { + drafts: true, + }, +} diff --git a/test/helpers.ts b/test/helpers.ts index ae5e630823..3bd6fbbd84 100644 --- a/test/helpers.ts +++ b/test/helpers.ts @@ -198,7 +198,9 @@ export async function openNav(page: Page): Promise { // check to see if the nav is already open and if not, open it // use the `--nav-open` modifier class to check if the nav is open // this will prevent clicking nav links that are bleeding off the screen - if (await page.locator('.template-default.template-default--nav-open').isVisible()) {return} + if (await page.locator('.template-default.template-default--nav-open').isVisible()) { + return + } // playwright: get first element with .nav-toggler which is VISIBLE (not hidden), could be 2 elements with .nav-toggler on mobile and desktop but only one is visible await page.locator('.nav-toggler >> visible=true').click() await expect(page.locator('.template-default.template-default--nav-open')).toBeVisible() @@ -221,7 +223,9 @@ export async function openCreateDocDrawer(page: Page, fieldSelector: string): Pr } export async function closeNav(page: Page): Promise { - if (!(await page.locator('.template-default.template-default--nav-open').isVisible())) {return} + if (!(await page.locator('.template-default.template-default--nav-open').isVisible())) { + return + } await page.locator('.nav-toggler >> visible=true').click() await expect(page.locator('.template-default.template-default--nav-open')).toBeHidden() } diff --git a/test/helpers/NextRESTClient.ts b/test/helpers/NextRESTClient.ts index c885e8b20c..ed75e3d919 100644 --- a/test/helpers/NextRESTClient.ts +++ b/test/helpers/NextRESTClient.ts @@ -1,4 +1,4 @@ -import type { SanitizedConfig, Where } from 'payload' +import type { JoinQuery, SanitizedConfig, Where } from 'payload' import type { ParsedQs } from 'qs-esm' import { @@ -18,6 +18,7 @@ type RequestOptions = { query?: { depth?: number fallbackLocale?: string + joins?: JoinQuery limit?: number locale?: string page?: number diff --git a/test/helpers/e2e/navigateToFirstCellLink.ts b/test/helpers/e2e/navigateToFirstCellLink.ts index 5a31a4b81d..9212a26e72 100644 --- a/test/helpers/e2e/navigateToFirstCellLink.ts +++ b/test/helpers/e2e/navigateToFirstCellLink.ts @@ -1,7 +1,7 @@ import type { Page } from '@playwright/test' -export async function navigateToListCellLink(page: Page, selector = '.cell-id') { - const cellLink = page.locator(`${selector} a`).first() +export async function navigateToListCellLink(page: Page) { + const cellLink = page.locator(`tbody tr:first-child td a`).first() const linkURL = await cellLink.getAttribute('href') await cellLink.click() await page.waitForURL(`**${linkURL}`) diff --git a/test/helpers/e2e/reorderColumns.ts b/test/helpers/e2e/reorderColumns.ts index da50ca1a29..2dfff2e45f 100644 --- a/test/helpers/e2e/reorderColumns.ts +++ b/test/helpers/e2e/reorderColumns.ts @@ -19,8 +19,12 @@ export const reorderColumns = async ( togglerSelector?: string }, ) => { - await page.locator(togglerSelector).click() - const columnContainer = page.locator(columnContainerSelector) + const columnContainer = page.locator(columnContainerSelector).first() + const isAlreadyOpen = await columnContainer.isVisible() + + if (!isAlreadyOpen) { + await page.locator(togglerSelector).first().click() + } await expect(page.locator(`${columnContainerSelector}.rah-static--height-auto`)).toBeVisible() @@ -49,7 +53,7 @@ export const reorderColumns = async ( columnContainer.locator('.column-selector .column-selector__column').first(), ).toHaveText(fromColumn) - await expect(page.locator('table thead tr th').nth(1)).toHaveText(fromColumn) + await expect(page.locator('table thead tr th').nth(1).first()).toHaveText(fromColumn) // TODO: This wait makes sure the preferences are actually saved. Just waiting for the UI to update is not enough. We should replace this wait await wait(1000) } diff --git a/test/joins/collections/Categories.ts b/test/joins/collections/Categories.ts new file mode 100644 index 0000000000..0697de46e8 --- /dev/null +++ b/test/joins/collections/Categories.ts @@ -0,0 +1,66 @@ +import type { CollectionConfig } from 'payload' + +import { categoriesSlug, postsSlug } from '../shared.js' + +export const Categories: CollectionConfig = { + slug: categoriesSlug, + admin: { + useAsTitle: 'name', + }, + fields: [ + { + name: 'name', + type: 'text', + }, + // Alternative tabs usage + // { + // type: 'tabs', + // tabs: [ + // { + // label: 'Unnamed tab', + // fields: [ + // { + // name: 'relatedPosts', + // label: 'Related Posts', + // type: 'join', + // collection: postsSlug, + // on: 'category', + // }, + // ], + // }, + // { + // name: 'group', + // fields: [ + // { + // name: 'relatedPosts', + // label: 'Related Posts (Group)', + // type: 'join', + // collection: postsSlug, + // on: 'group.category', + // }, + // ], + // }, + // ], + // }, + { + name: 'relatedPosts', + label: 'Related Posts', + type: 'join', + collection: postsSlug, + on: 'category', + }, + { + name: 'group', + type: 'group', + fields: [ + { + name: 'relatedPosts', + label: 'Related Posts (Group)', + type: 'join', + collection: postsSlug, + on: 'group.category', + }, + ], + }, + ], +} diff --git a/test/joins/collections/Posts.ts b/test/joins/collections/Posts.ts new file mode 100644 index 0000000000..01d3e3fd12 --- /dev/null +++ b/test/joins/collections/Posts.ts @@ -0,0 +1,33 @@ +import type { CollectionConfig } from 'payload' + +import { categoriesSlug, postsSlug } from '../shared.js' + +export const Posts: CollectionConfig = { + slug: postsSlug, + admin: { + useAsTitle: 'title', + defaultColumns: ['title', 'category', 'updatedAt', 'createdAt'], + }, + fields: [ + { + name: 'title', + type: 'text', + }, + { + name: 'category', + type: 'relationship', + relationTo: categoriesSlug, + }, + { + name: 'group', + type: 'group', + fields: [ + { + name: 'category', + type: 'relationship', + relationTo: categoriesSlug, + }, + ], + }, + ], +} diff --git a/test/joins/config.ts b/test/joins/config.ts new file mode 100644 index 0000000000..c1815cdccd --- /dev/null +++ b/test/joins/config.ts @@ -0,0 +1,68 @@ +import { fileURLToPath } from 'node:url' +import path from 'path' + +import { buildConfigWithDefaults } from '../buildConfigWithDefaults.js' +import { Categories } from './collections/Categories.js' +import { Posts } from './collections/Posts.js' +import { seed } from './seed.js' +import { localizedCategoriesSlug, localizedPostsSlug } from './shared.js' + +const filename = fileURLToPath(import.meta.url) +const dirname = path.dirname(filename) + +export default buildConfigWithDefaults({ + collections: [ + Posts, + Categories, + { + slug: localizedPostsSlug, + admin: { + useAsTitle: 'title', + }, + fields: [ + { + name: 'title', + type: 'text', + localized: true, + }, + { + name: 'category', + type: 'relationship', + localized: true, + relationTo: localizedCategoriesSlug, + }, + ], + }, + { + slug: localizedCategoriesSlug, + admin: { + useAsTitle: 'name', + }, + fields: [ + { + name: 'name', + type: 'text', + }, + { + name: 'relatedPosts', + type: 'join', + collection: localizedPostsSlug, + on: 'category', + localized: true, + }, + ], + }, + ], + localization: { + locales: ['en', 'es'], + defaultLocale: 'en', + }, + onInit: async (payload) => { + if (process.env.SEED_IN_CONFIG_ONINIT !== 'false') { + await seed(payload) + } + }, + typescript: { + outputFile: path.resolve(dirname, 'payload-types.ts'), + }, +}) diff --git a/test/joins/e2e.spec.ts b/test/joins/e2e.spec.ts new file mode 100644 index 0000000000..6e127743c7 --- /dev/null +++ b/test/joins/e2e.spec.ts @@ -0,0 +1,186 @@ +import type { Page } from '@playwright/test' + +import { expect, test } from '@playwright/test' +import { reorderColumns } from 'helpers/e2e/reorderColumns.js' +import * as path from 'path' +import { fileURLToPath } from 'url' + +import { ensureCompilationIsDone, exactText, initPageConsoleErrorCatch } from '../helpers.js' +import { AdminUrlUtil } from '../helpers/adminUrlUtil.js' +import { navigateToDoc } from '../helpers/e2e/navigateToDoc.js' +import { initPayloadE2ENoConfig } from '../helpers/initPayloadE2ENoConfig.js' +import { TEST_TIMEOUT_LONG } from '../playwright.config.js' +import { categoriesSlug, postsSlug } from './shared.js' + +const filename = fileURLToPath(import.meta.url) +const dirname = path.dirname(filename) + +test.describe('Admin Panel', () => { + let page: Page + let categoriesURL: AdminUrlUtil + let postsURL: AdminUrlUtil + + test.beforeAll(async ({ browser }, testInfo) => { + testInfo.setTimeout(TEST_TIMEOUT_LONG) + + const { payload, serverURL } = await initPayloadE2ENoConfig({ dirname }) + postsURL = new AdminUrlUtil(serverURL, postsSlug) + categoriesURL = new AdminUrlUtil(serverURL, categoriesSlug) + + const context = await browser.newContext() + page = await context.newPage() + initPageConsoleErrorCatch(page) + await ensureCompilationIsDone({ page, serverURL }) + }) + + test('should populate joined relationships in table cells of list view', async () => { + await page.goto(categoriesURL.list) + await expect + .poll( + async () => + await page + .locator('tbody tr:first-child td.cell-relatedPosts', { + hasText: exactText('Test Post 3, Test Post 2, Test Post 1'), + }) + .isVisible(), + ) + .toBeTruthy() + }) + + test('should render initial rows within relationship table', async () => { + await navigateToDoc(page, categoriesURL) + const joinField = page.locator('.field-type.join').first() + await expect(joinField).toBeVisible() + const columns = await joinField.locator('.relationship-table tbody tr').count() + expect(columns).toBe(3) + }) + + test('should render collection type in first column of relationship table', async () => { + await navigateToDoc(page, categoriesURL) + const joinField = page.locator('.field-type.join').first() + await expect(joinField).toBeVisible() + const collectionTypeColumn = joinField.locator('thead tr th#heading-collection:first-child') + const text = collectionTypeColumn + await expect(text).toHaveText('Type') + const cells = joinField.locator('.relationship-table tbody tr td:first-child .pill__label') + + const count = await cells.count() + + for (let i = 0; i < count; i++) { + const element = cells.nth(i) + // Perform actions on each element + await expect(element).toBeVisible() + await expect(element).toHaveText('Post') + } + }) + + test('should render drawer toggler without document link in second column of relationship table', async () => { + await navigateToDoc(page, categoriesURL) + const joinField = page.locator('.field-type.join').first() + await expect(joinField).toBeVisible() + const actionColumn = joinField.locator('tbody tr td:nth-child(2)').first() + const toggler = actionColumn.locator('button.doc-drawer__toggler') + await expect(toggler).toBeVisible() + const link = actionColumn.locator('a') + await expect(link).toBeHidden() + + await reorderColumns(page, { + togglerSelector: '.relationship-table__toggle-columns', + columnContainerSelector: '.relationship-table__columns', + fromColumn: 'Category', + toColumn: 'Title', + }) + + const newActionColumn = joinField.locator('tbody tr td:nth-child(2)').first() + const newToggler = newActionColumn.locator('button.doc-drawer__toggler') + await expect(newToggler).toBeVisible() + const newLink = newActionColumn.locator('a') + await expect(newLink).toBeHidden() + + // put columns back in original order for the next test + await reorderColumns(page, { + togglerSelector: '.relationship-table__toggle-columns', + columnContainerSelector: '.relationship-table__columns', + fromColumn: 'Title', + toColumn: 'Category', + }) + }) + + test('should sort relationship table by clicking on column headers', async () => { + await navigateToDoc(page, categoriesURL) + const joinField = page.locator('.field-type.join').first() + await expect(joinField).toBeVisible() + const titleColumn = joinField.locator('thead tr th#heading-title') + const titleAscButton = titleColumn.locator('button.sort-column__asc') + await expect(titleAscButton).toBeVisible() + await titleAscButton.click() + await expect(joinField.locator('tbody tr:first-child td:nth-child(2)')).toHaveText( + 'Test Post 1', + ) + + const titleDescButton = titleColumn.locator('button.sort-column__desc') + await expect(titleDescButton).toBeVisible() + await titleDescButton.click() + await expect(joinField.locator('tbody tr:first-child td:nth-child(2)')).toHaveText( + 'Test Post 3', + ) + }) + + test('should update relationship table when new document is created', async () => { + await navigateToDoc(page, categoriesURL) + const joinField = page.locator('.field-type.join').first() + await expect(joinField).toBeVisible() + + const addButton = joinField.locator('.relationship-table__actions button.doc-drawer__toggler', { + hasText: exactText('Add new'), + }) + + await expect(addButton).toBeVisible() + + await addButton.click() + const drawer = page.locator('[id^=doc-drawer_posts_1_]') + await expect(drawer).toBeVisible() + const categoryField = drawer.locator('#field-category') + await expect(categoryField).toBeVisible() + const categoryValue = categoryField.locator('.relationship--single-value__text') + await expect(categoryValue).toHaveText('example') + const titleField = drawer.locator('#field-title') + await expect(titleField).toBeVisible() + await titleField.fill('Test Post 4') + await drawer.locator('button[id="action-save"]').click() + await expect(drawer).toBeHidden() + await expect( + joinField.locator('tbody tr td:nth-child(2)', { + hasText: exactText('Test Post 4'), + }), + ).toBeVisible() + }) + + test('should update relationship table when document is updated', async () => { + await navigateToDoc(page, categoriesURL) + const joinField = page.locator('.field-type.join').first() + await expect(joinField).toBeVisible() + const editButton = joinField.locator( + 'tbody tr:first-child td:nth-child(2) button.doc-drawer__toggler', + ) + await expect(editButton).toBeVisible() + await editButton.click() + const drawer = page.locator('[id^=doc-drawer_posts_1_]') + await expect(drawer).toBeVisible() + const titleField = drawer.locator('#field-title') + await expect(titleField).toBeVisible() + await titleField.fill('Test Post 1 Updated') + await drawer.locator('button[id="action-save"]').click() + await expect(drawer).toBeHidden() + await expect(joinField.locator('tbody tr:first-child td:nth-child(2)')).toHaveText( + 'Test Post 1 Updated', + ) + }) + + test('should render empty relationship table when creating new document', async () => { + await page.goto(categoriesURL.create) + const joinField = page.locator('.field-type.join').first() + await expect(joinField).toBeVisible() + await expect(joinField.locator('.relationship-table tbody tr')).toBeHidden() + }) +}) diff --git a/test/plugin-relationship-object-ids/eslint.config.js b/test/joins/eslint.config.js similarity index 87% rename from test/plugin-relationship-object-ids/eslint.config.js rename to test/joins/eslint.config.js index 32974a6d1e..b61ca8e140 100644 --- a/test/plugin-relationship-object-ids/eslint.config.js +++ b/test/joins/eslint.config.js @@ -1,5 +1,5 @@ import { rootParserOptions } from '../../eslint.config.js' -import testEslintConfig from '../eslint.config.js' +import { testEslintConfig } from '../eslint.config.js' /** @typedef {import('eslint').Linter.FlatConfig} */ let FlatConfig diff --git a/test/joins/int.spec.ts b/test/joins/int.spec.ts new file mode 100644 index 0000000000..737a3ed1dc --- /dev/null +++ b/test/joins/int.spec.ts @@ -0,0 +1,401 @@ +import type { Payload } from 'payload' + +import path from 'path' +import { fileURLToPath } from 'url' + +import type { NextRESTClient } from '../helpers/NextRESTClient.js' +import type { Category, Post } from './payload-types.js' + +import { devUser } from '../credentials.js' +import { idToString } from '../helpers/idToString.js' +import { initPayloadInt } from '../helpers/initPayloadInt.js' + +const filename = fileURLToPath(import.meta.url) +const dirname = path.dirname(filename) + +let payload: Payload +let token: string +let restClient: NextRESTClient + +const { email, password } = devUser + +describe('Joins Field', () => { + let category: Category + let categoryID + // --__--__--__--__--__--__--__--__--__ + // Boilerplate test setup/teardown + // --__--__--__--__--__--__--__--__--__ + beforeAll(async () => { + ;({ payload, restClient } = await initPayloadInt(dirname)) + + const data = await restClient + .POST('/users/login', { + body: JSON.stringify({ + email, + password, + }), + }) + .then((res) => res.json()) + + token = data.token + + category = await payload.create({ + collection: 'categories', + data: { + name: 'paginate example', + group: {}, + }, + }) + + categoryID = idToString(category.id, payload) + + for (let i = 0; i < 15; i++) { + await createPost({ + title: `test ${i}`, + category: category.id, + group: { + category: category.id, + }, + }) + } + }) + + afterAll(async () => { + if (typeof payload.db.destroy === 'function') { + await payload.db.destroy() + } + }) + + it('should populate joins using findByID', async () => { + const categoryWithPosts = await payload.findByID({ + id: category.id, + joins: { + 'group.relatedPosts': { + sort: '-title', + }, + }, + collection: 'categories', + }) + + expect(categoryWithPosts.group.relatedPosts.docs).toHaveLength(10) + expect(categoryWithPosts.group.relatedPosts.docs[0]).toHaveProperty('id') + expect(categoryWithPosts.group.relatedPosts.docs[0]).toHaveProperty('title') + expect(categoryWithPosts.group.relatedPosts.docs[0].title).toStrictEqual('test 9') + }) + + it('should populate relationships in joins', async () => { + const { docs } = await payload.find({ + limit: 1, + collection: 'posts', + }) + + expect(docs[0].category.id).toBeDefined() + expect(docs[0].category.name).toBeDefined() + expect(docs[0].category.relatedPosts.docs).toHaveLength(10) + }) + + it('should filter joins using where query', async () => { + const categoryWithPosts = await payload.findByID({ + id: category.id, + joins: { + relatedPosts: { + sort: '-title', + where: { + title: { + equals: 'test 9', + }, + }, + }, + }, + collection: 'categories', + }) + + expect(categoryWithPosts.relatedPosts.docs).toHaveLength(1) + expect(categoryWithPosts.relatedPosts.hasNextPage).toStrictEqual(false) + }) + + it('should populate joins using find', async () => { + const result = await payload.find({ + collection: 'categories', + }) + + const [categoryWithPosts] = result.docs + + expect(categoryWithPosts.group.relatedPosts.docs).toHaveLength(10) + expect(categoryWithPosts.group.relatedPosts.docs[0]).toHaveProperty('title') + expect(categoryWithPosts.group.relatedPosts.docs[0].title).toBe('test 14') + }) + + describe('Joins with localization', () => { + let localizedCategory: Category + + beforeAll(async () => { + localizedCategory = await payload.create({ + collection: 'localized-categories', + locale: 'en', + data: { + name: 'localized category', + }, + }) + const post1 = await payload.create({ + collection: 'localized-posts', + locale: 'en', + data: { + title: 'english post 1', + category: localizedCategory.id, + }, + }) + await payload.update({ + collection: 'localized-posts', + id: post1.id, + locale: 'es', + data: { + title: 'spanish post', + category: localizedCategory.id, + }, + }) + await payload.create({ + collection: 'localized-posts', + locale: 'en', + data: { + title: 'english post 2', + category: localizedCategory.id, + }, + }) + }) + + it('should populate joins using findByID with localization on the relationship', async () => { + const enCategory = await payload.findByID({ + id: localizedCategory.id, + collection: 'localized-categories', + locale: 'en', + }) + const esCategory = await payload.findByID({ + id: localizedCategory.id, + collection: 'localized-categories', + locale: 'es', + }) + expect(enCategory.relatedPosts.docs).toHaveLength(2) + expect(esCategory.relatedPosts.docs).toHaveLength(1) + }) + }) + + describe('REST', () => { + it('should have simple paginate for joins', async () => { + const query = { + depth: 1, + where: { + name: { equals: 'paginate example' }, + }, + joins: { + relatedPosts: { + sort: 'createdAt', + limit: 4, + }, + }, + } + const pageWithLimit = await restClient.GET(`/categories`, { query }).then((res) => res.json()) + + query.joins.relatedPosts.limit = 0 + const unlimited = await restClient.GET(`/categories`, { query }).then((res) => res.json()) + + expect(pageWithLimit.docs[0].relatedPosts.docs).toHaveLength(4) + expect(pageWithLimit.docs[0].relatedPosts.docs[0].title).toStrictEqual('test 0') + expect(pageWithLimit.docs[0].relatedPosts.hasNextPage).toStrictEqual(true) + + expect(unlimited.docs[0].relatedPosts.docs).toHaveLength(15) + expect(unlimited.docs[0].relatedPosts.docs[0].title).toStrictEqual('test 0') + expect(unlimited.docs[0].relatedPosts.hasNextPage).toStrictEqual(false) + }) + + it('should sort joins', async () => { + const response = await restClient + .GET(`/categories/${category.id}?joins[relatedPosts][sort]=-title`) + .then((res) => res.json()) + expect(response.relatedPosts.docs[0].title).toStrictEqual('test 9') + }) + + it('should query in on collections with joins', async () => { + const response = await restClient + .GET(`/categories?where[id][in]=${category.id}`) + .then((res) => res.json()) + expect(response.docs[0].name).toStrictEqual(category.name) + }) + }) + + describe('GraphQL', () => { + it('should have simple paginate for joins', async () => { + const queryWithLimit = `query { + Categories(where: { + name: { equals: "paginate example" } + }) { + docs { + relatedPosts( + sort: "createdAt", + limit: 4 + ) { + docs { + title + } + hasNextPage + } + } + } + }` + const pageWithLimit = await restClient + .GRAPHQL_POST({ body: JSON.stringify({ query: queryWithLimit }) }) + .then((res) => res.json()) + + const queryUnlimited = `query { + Categories( + where: { + name: { equals: "paginate example" } + } + ) { + docs { + relatedPosts( + sort: "createdAt", + limit: 0 + ) { + docs { + title + createdAt + } + hasNextPage + } + } + } + }` + + const unlimited = await restClient + .GRAPHQL_POST({ body: JSON.stringify({ query: queryUnlimited }) }) + .then((res) => res.json()) + + expect(pageWithLimit.data.Categories.docs[0].relatedPosts.docs).toHaveLength(4) + expect(pageWithLimit.data.Categories.docs[0].relatedPosts.docs[0].title).toStrictEqual( + 'test 0', + ) + expect(pageWithLimit.data.Categories.docs[0].relatedPosts.hasNextPage).toStrictEqual(true) + + expect(unlimited.data.Categories.docs[0].relatedPosts.docs).toHaveLength(15) + expect(unlimited.data.Categories.docs[0].relatedPosts.docs[0].title).toStrictEqual('test 0') + expect(unlimited.data.Categories.docs[0].relatedPosts.hasNextPage).toStrictEqual(false) + }) + + it('should have simple paginate for joins inside groups', async () => { + const queryWithLimit = `query { + Categories(where: { + name: { equals: "paginate example" } + }) { + docs { + group { + relatedPosts( + sort: "createdAt", + limit: 4 + ) { + docs { + title + } + hasNextPage + } + } + } + } + }` + const pageWithLimit = await restClient + .GRAPHQL_POST({ body: JSON.stringify({ query: queryWithLimit }) }) + .then((res) => res.json()) + + const queryUnlimited = `query { + Categories( + where: { + name: { equals: "paginate example" } + } + ) { + docs { + group { + relatedPosts( + sort: "createdAt", + limit: 0 + ) { + docs { + title + } + hasNextPage + } + } + } + } + }` + + const unlimited = await restClient + .GRAPHQL_POST({ body: JSON.stringify({ query: queryUnlimited }) }) + .then((res) => res.json()) + + expect(pageWithLimit.data.Categories.docs[0].group.relatedPosts.docs).toHaveLength(4) + expect(pageWithLimit.data.Categories.docs[0].group.relatedPosts.docs[0].title).toStrictEqual( + 'test 0', + ) + expect(pageWithLimit.data.Categories.docs[0].group.relatedPosts.hasNextPage).toStrictEqual( + true, + ) + + expect(unlimited.data.Categories.docs[0].group.relatedPosts.docs).toHaveLength(15) + expect(unlimited.data.Categories.docs[0].group.relatedPosts.docs[0].title).toStrictEqual( + 'test 0', + ) + expect(unlimited.data.Categories.docs[0].group.relatedPosts.hasNextPage).toStrictEqual(false) + }) + + it('should sort joins', async () => { + const query = `query { + Category(id: ${categoryID}) { + relatedPosts( + sort: "-title" + ) { + docs { + title + } + } + } + }` + + const response = await restClient + .GRAPHQL_POST({ body: JSON.stringify({ query }) }) + .then((res) => res.json()) + expect(response.data.Category.relatedPosts.docs[0].title).toStrictEqual('test 9') + }) + + it('should query in on collections with joins', async () => { + const query = `query { + Category(id: ${categoryID}) { + relatedPosts( + where: { + title: { + equals: "test 3" + } + } + ) { + docs { + title + } + } + } + }` + const response = await restClient + .GRAPHQL_POST({ body: JSON.stringify({ query }) }) + .then((res) => res.json()) + expect(response.data.Category.relatedPosts.docs[0].title).toStrictEqual('test 3') + }) + }) +}) + +async function createPost(overrides?: Partial) { + return payload.create({ + collection: 'posts', + data: { + title: 'test', + ...overrides, + }, + }) +} diff --git a/test/plugin-relationship-object-ids/payload-types.ts b/test/joins/payload-types.ts similarity index 62% rename from test/plugin-relationship-object-ids/payload-types.ts rename to test/joins/payload-types.ts index 6242468568..ec9171323c 100644 --- a/test/plugin-relationship-object-ids/payload-types.ts +++ b/test/joins/payload-types.ts @@ -11,11 +11,12 @@ export interface Config { users: UserAuthOperations; }; collections: { - uploads: Upload; - pages: Page; posts: Post; - relations: Relation; + categories: Category; + 'localized-posts': LocalizedPost; + 'localized-categories': LocalizedCategory; users: User; + 'payload-locked-documents': PayloadLockedDocument; 'payload-preferences': PayloadPreference; 'payload-migrations': PayloadMigration; }; @@ -23,7 +24,7 @@ export interface Config { defaultIDType: string; }; globals: {}; - locale: null; + locale: 'en' | 'es'; user: User & { collection: 'users'; }; @@ -46,74 +47,62 @@ export interface UserAuthOperations { password: string; }; } -/** - * This interface was referenced by `Config`'s JSON-Schema - * via the `definition` "uploads". - */ -export interface Upload { - id: string; - updatedAt: string; - createdAt: string; - url?: string | null; - thumbnailURL?: string | null; - filename?: string | null; - mimeType?: string | null; - filesize?: number | null; - width?: number | null; - height?: number | null; - focalX?: number | null; - focalY?: number | null; -} -/** - * This interface was referenced by `Config`'s JSON-Schema - * via the `definition` "pages". - */ -export interface Page { - id: string; - title: string; - updatedAt: string; - createdAt: string; -} /** * This interface was referenced by `Config`'s JSON-Schema * via the `definition` "posts". */ export interface Post { id: string; - title: string; + title?: string | null; + category?: (string | null) | Category; + group?: { + category?: (string | null) | Category; + }; updatedAt: string; createdAt: string; } /** * This interface was referenced by `Config`'s JSON-Schema - * via the `definition` "relations". + * via the `definition` "categories". */ -export interface Relation { +export interface Category { id: string; - hasOne?: (string | null) | Post; - hasOnePoly?: - | ({ - relationTo: 'pages'; - value: string | Page; - } | null) - | ({ - relationTo: 'posts'; - value: string | Post; - } | null); - hasMany?: (string | Post)[] | null; - hasManyPoly?: - | ( - | { - relationTo: 'pages'; - value: string | Page; - } - | { - relationTo: 'posts'; - value: string | Post; - } - )[] - | null; - upload?: (string | null) | Upload; + name?: string | null; + relatedPosts?: { + docs?: (string | Post)[] | null; + hasNextPage?: boolean | null; + } | null; + group?: { + relatedPosts?: { + docs?: (string | Post)[] | null; + hasNextPage?: boolean | null; + } | null; + }; + updatedAt: string; + createdAt: string; +} +/** + * This interface was referenced by `Config`'s JSON-Schema + * via the `definition` "localized-posts". + */ +export interface LocalizedPost { + id: string; + title?: string | null; + category?: (string | null) | LocalizedCategory; + updatedAt: string; + createdAt: string; +} +/** + * This interface was referenced by `Config`'s JSON-Schema + * via the `definition` "localized-categories". + */ +export interface LocalizedCategory { + id: string; + name?: string | null; + relatedPosts?: { + docs?: (string | LocalizedPost)[] | null; + hasNextPage?: boolean | null; + } | null; updatedAt: string; createdAt: string; } @@ -134,6 +123,42 @@ export interface User { lockUntil?: string | null; password?: string | null; } +/** + * This interface was referenced by `Config`'s JSON-Schema + * via the `definition` "payload-locked-documents". + */ +export interface PayloadLockedDocument { + id: string; + document?: + | ({ + relationTo: 'posts'; + value: string | Post; + } | null) + | ({ + relationTo: 'categories'; + value: string | Category; + } | null) + | ({ + relationTo: 'localized-posts'; + value: string | LocalizedPost; + } | null) + | ({ + relationTo: 'localized-categories'; + value: string | LocalizedCategory; + } | null) + | ({ + relationTo: 'users'; + value: string | User; + } | null); + editedAt?: string | null; + globalSlug?: string | null; + user: { + relationTo: 'users'; + value: string | User; + }; + updatedAt: string; + createdAt: string; +} /** * This interface was referenced by `Config`'s JSON-Schema * via the `definition` "payload-preferences". diff --git a/test/joins/schema.graphql b/test/joins/schema.graphql new file mode 100644 index 0000000000..2d6f2788ee --- /dev/null +++ b/test/joins/schema.graphql @@ -0,0 +1,1708 @@ +type Query { + Post(id: String!, draft: Boolean): Post + Posts(draft: Boolean, where: Post_where, limit: Int, page: Int, sort: String): Posts + countPosts(draft: Boolean, where: Post_where): countPosts + docAccessPost(id: String!): postsDocAccess + Category(id: String!, draft: Boolean): Category + Categories(draft: Boolean, where: Category_where, limit: Int, page: Int, sort: String): Categories + countCategories(draft: Boolean, where: Category_where): countCategories + docAccessCategory(id: String!): categoriesDocAccess + User(id: String!, draft: Boolean): User + Users(draft: Boolean, where: User_where, limit: Int, page: Int, sort: String): Users + countUsers(draft: Boolean, where: User_where): countUsers + docAccessUser(id: String!): usersDocAccess + meUser: usersMe + initializedUser: Boolean + PayloadPreference(id: String!, draft: Boolean): PayloadPreference + PayloadPreferences(draft: Boolean, where: PayloadPreference_where, limit: Int, page: Int, sort: String): PayloadPreferences + countPayloadPreferences(draft: Boolean, where: PayloadPreference_where): countPayloadPreferences + docAccessPayloadPreference(id: String!): payload_preferencesDocAccess + Access: Access +} + +type Post { + id: String + title: String + category: Category + updatedAt: DateTime + createdAt: DateTime +} + +type Category { + 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 Posts { + docs: [Post] + hasNextPage: Boolean + hasPrevPage: Boolean + limit: Int + nextPage: Int + offset: Int + page: Int + pagingCounter: Int + prevPage: Int + totalDocs: Int + totalPages: Int +} + +input Post_where { + title: Post_title_operator + category: Post_category_operator + updatedAt: Post_updatedAt_operator + createdAt: Post_createdAt_operator + id: Post_id_operator + AND: [Post_where_and] + OR: [Post_where_or] +} + +input Post_title_operator { + equals: String + not_equals: String + like: String + contains: String + in: [String] + not_in: [String] + all: [String] + exists: Boolean +} + +input Post_category_operator { + equals: JSON + not_equals: JSON + in: [JSON] + not_in: [JSON] + all: [JSON] + exists: Boolean +} + +""" +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 @specifiedBy(url: "http://www.ecma-international.org/publications/files/ECMA-ST/ECMA-404.pdf") + +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_and { + title: Post_title_operator + category: Post_category_operator + updatedAt: Post_updatedAt_operator + createdAt: Post_createdAt_operator + id: Post_id_operator + AND: [Post_where_and] + OR: [Post_where_or] +} + +input Post_where_or { + title: Post_title_operator + category: Post_category_operator + updatedAt: Post_updatedAt_operator + createdAt: Post_createdAt_operator + id: Post_id_operator + AND: [Post_where_and] + OR: [Post_where_or] +} + +type countPosts { + totalDocs: Int +} + +type postsDocAccess { + fields: PostsDocAccessFields + create: PostsCreateDocAccess + read: PostsReadDocAccess + update: PostsUpdateDocAccess + delete: PostsDeleteDocAccess +} + +type PostsDocAccessFields { + title: PostsDocAccessFields_title + category: PostsDocAccessFields_category + 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_category { + create: PostsDocAccessFields_category_Create + read: PostsDocAccessFields_category_Read + update: PostsDocAccessFields_category_Update + delete: PostsDocAccessFields_category_Delete +} + +type PostsDocAccessFields_category_Create { + permission: Boolean! +} + +type PostsDocAccessFields_category_Read { + permission: Boolean! +} + +type PostsDocAccessFields_category_Update { + permission: Boolean! +} + +type PostsDocAccessFields_category_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 @specifiedBy(url: "http://www.ecma-international.org/publications/files/ECMA-ST/ECMA-404.pdf") + +type PostsReadDocAccess { + permission: Boolean! + where: JSONObject +} + +type PostsUpdateDocAccess { + permission: Boolean! + where: JSONObject +} + +type PostsDeleteDocAccess { + permission: Boolean! + where: JSONObject +} + +type Categories { + docs: [Category] + hasNextPage: Boolean + hasPrevPage: Boolean + limit: Int + nextPage: Int + offset: Int + page: Int + pagingCounter: Int + prevPage: Int + totalDocs: Int + totalPages: Int +} + +input Category_where { + name: Category_name_operator + updatedAt: Category_updatedAt_operator + createdAt: Category_createdAt_operator + id: Category_id_operator + AND: [Category_where_and] + OR: [Category_where_or] +} + +input Category_name_operator { + equals: String + not_equals: String + like: String + contains: String + in: [String] + not_in: [String] + all: [String] + exists: Boolean +} + +input Category_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 Category_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 Category_id_operator { + equals: String + not_equals: String + like: String + contains: String + in: [String] + not_in: [String] + all: [String] + exists: Boolean +} + +input Category_where_and { + name: Category_name_operator + updatedAt: Category_updatedAt_operator + createdAt: Category_createdAt_operator + id: Category_id_operator + AND: [Category_where_and] + OR: [Category_where_or] +} + +input Category_where_or { + name: Category_name_operator + updatedAt: Category_updatedAt_operator + createdAt: Category_createdAt_operator + id: Category_id_operator + AND: [Category_where_and] + OR: [Category_where_or] +} + +type countCategories { + totalDocs: Int +} + +type categoriesDocAccess { + fields: CategoriesDocAccessFields + create: CategoriesCreateDocAccess + read: CategoriesReadDocAccess + update: CategoriesUpdateDocAccess + delete: CategoriesDeleteDocAccess +} + +type CategoriesDocAccessFields { + name: CategoriesDocAccessFields_name + posts: CategoriesDocAccessFields_posts + updatedAt: CategoriesDocAccessFields_updatedAt + createdAt: CategoriesDocAccessFields_createdAt +} + +type CategoriesDocAccessFields_name { + create: CategoriesDocAccessFields_name_Create + read: CategoriesDocAccessFields_name_Read + update: CategoriesDocAccessFields_name_Update + delete: CategoriesDocAccessFields_name_Delete +} + +type CategoriesDocAccessFields_name_Create { + permission: Boolean! +} + +type CategoriesDocAccessFields_name_Read { + permission: Boolean! +} + +type CategoriesDocAccessFields_name_Update { + permission: Boolean! +} + +type CategoriesDocAccessFields_name_Delete { + permission: Boolean! +} + +type CategoriesDocAccessFields_posts { + create: CategoriesDocAccessFields_posts_Create + read: CategoriesDocAccessFields_posts_Read + update: CategoriesDocAccessFields_posts_Update + delete: CategoriesDocAccessFields_posts_Delete +} + +type CategoriesDocAccessFields_posts_Create { + permission: Boolean! +} + +type CategoriesDocAccessFields_posts_Read { + permission: Boolean! +} + +type CategoriesDocAccessFields_posts_Update { + permission: Boolean! +} + +type CategoriesDocAccessFields_posts_Delete { + permission: Boolean! +} + +type CategoriesDocAccessFields_updatedAt { + create: CategoriesDocAccessFields_updatedAt_Create + read: CategoriesDocAccessFields_updatedAt_Read + update: CategoriesDocAccessFields_updatedAt_Update + delete: CategoriesDocAccessFields_updatedAt_Delete +} + +type CategoriesDocAccessFields_updatedAt_Create { + permission: Boolean! +} + +type CategoriesDocAccessFields_updatedAt_Read { + permission: Boolean! +} + +type CategoriesDocAccessFields_updatedAt_Update { + permission: Boolean! +} + +type CategoriesDocAccessFields_updatedAt_Delete { + permission: Boolean! +} + +type CategoriesDocAccessFields_createdAt { + create: CategoriesDocAccessFields_createdAt_Create + read: CategoriesDocAccessFields_createdAt_Read + update: CategoriesDocAccessFields_createdAt_Update + delete: CategoriesDocAccessFields_createdAt_Delete +} + +type CategoriesDocAccessFields_createdAt_Create { + permission: Boolean! +} + +type CategoriesDocAccessFields_createdAt_Read { + permission: Boolean! +} + +type CategoriesDocAccessFields_createdAt_Update { + permission: Boolean! +} + +type CategoriesDocAccessFields_createdAt_Delete { + permission: Boolean! +} + +type CategoriesCreateDocAccess { + permission: Boolean! + where: JSONObject +} + +type CategoriesReadDocAccess { + permission: Boolean! + where: JSONObject +} + +type CategoriesUpdateDocAccess { + permission: Boolean! + where: JSONObject +} + +type CategoriesDeleteDocAccess { + permission: Boolean! + where: JSONObject +} + +type User { + id: String + updatedAt: DateTime + createdAt: DateTime + email: EmailAddress! + resetPasswordToken: String + resetPasswordExpiration: DateTime + salt: String + hash: String + 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] + hasNextPage: Boolean + hasPrevPage: Boolean + limit: Int + nextPage: Int + offset: Int + page: Int + pagingCounter: Int + prevPage: Int + totalDocs: Int + totalPages: Int +} + +input User_where { + updatedAt: User_updatedAt_operator + createdAt: User_createdAt_operator + email: User_email_operator + id: User_id_operator + AND: [User_where_and] + OR: [User_where_or] +} + +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] +} + +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_and { + updatedAt: User_updatedAt_operator + createdAt: User_createdAt_operator + email: User_email_operator + id: User_id_operator + AND: [User_where_and] + OR: [User_where_or] +} + +input User_where_or { + updatedAt: User_updatedAt_operator + createdAt: User_createdAt_operator + email: User_email_operator + id: User_id_operator + AND: [User_where_and] + OR: [User_where_or] +} + +type countUsers { + totalDocs: Int +} + +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 { + collection: String + exp: Int + strategy: String + token: String + user: User +} + +type PayloadPreference { + id: String + user: PayloadPreference_User_Relationship! + key: String + value: JSON + updatedAt: DateTime + createdAt: DateTime +} + +type PayloadPreference_User_Relationship { + relationTo: PayloadPreference_User_RelationTo + value: PayloadPreference_User +} + +enum PayloadPreference_User_RelationTo { + users +} + +union PayloadPreference_User = User + +type PayloadPreferences { + docs: [PayloadPreference] + hasNextPage: Boolean + hasPrevPage: Boolean + limit: Int + nextPage: Int + offset: Int + page: Int + pagingCounter: Int + prevPage: Int + totalDocs: Int + totalPages: Int +} + +input PayloadPreference_where { + user: PayloadPreference_user_Relation + key: PayloadPreference_key_operator + value: PayloadPreference_value_operator + updatedAt: PayloadPreference_updatedAt_operator + createdAt: PayloadPreference_createdAt_operator + id: PayloadPreference_id_operator + AND: [PayloadPreference_where_and] + OR: [PayloadPreference_where_or] +} + +input PayloadPreference_user_Relation { + relationTo: PayloadPreference_user_Relation_RelationTo + value: JSON +} + +enum PayloadPreference_user_Relation_RelationTo { + users +} + +input PayloadPreference_key_operator { + equals: String + not_equals: String + like: String + contains: String + in: [String] + not_in: [String] + all: [String] + exists: Boolean +} + +input PayloadPreference_value_operator { + equals: JSON + not_equals: JSON + like: JSON + contains: JSON + within: JSON + intersects: JSON + exists: Boolean +} + +input PayloadPreference_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 PayloadPreference_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 PayloadPreference_id_operator { + equals: String + not_equals: String + like: String + contains: String + in: [String] + not_in: [String] + all: [String] + exists: Boolean +} + +input PayloadPreference_where_and { + user: PayloadPreference_user_Relation + key: PayloadPreference_key_operator + value: PayloadPreference_value_operator + updatedAt: PayloadPreference_updatedAt_operator + createdAt: PayloadPreference_createdAt_operator + id: PayloadPreference_id_operator + AND: [PayloadPreference_where_and] + OR: [PayloadPreference_where_or] +} + +input PayloadPreference_where_or { + user: PayloadPreference_user_Relation + key: PayloadPreference_key_operator + value: PayloadPreference_value_operator + updatedAt: PayloadPreference_updatedAt_operator + createdAt: PayloadPreference_createdAt_operator + id: PayloadPreference_id_operator + AND: [PayloadPreference_where_and] + OR: [PayloadPreference_where_or] +} + +type countPayloadPreferences { + totalDocs: Int +} + +type payload_preferencesDocAccess { + fields: PayloadPreferencesDocAccessFields + create: PayloadPreferencesCreateDocAccess + read: PayloadPreferencesReadDocAccess + update: PayloadPreferencesUpdateDocAccess + delete: PayloadPreferencesDeleteDocAccess +} + +type PayloadPreferencesDocAccessFields { + user: PayloadPreferencesDocAccessFields_user + key: PayloadPreferencesDocAccessFields_key + value: PayloadPreferencesDocAccessFields_value + updatedAt: PayloadPreferencesDocAccessFields_updatedAt + createdAt: PayloadPreferencesDocAccessFields_createdAt +} + +type PayloadPreferencesDocAccessFields_user { + create: PayloadPreferencesDocAccessFields_user_Create + read: PayloadPreferencesDocAccessFields_user_Read + update: PayloadPreferencesDocAccessFields_user_Update + delete: PayloadPreferencesDocAccessFields_user_Delete +} + +type PayloadPreferencesDocAccessFields_user_Create { + permission: Boolean! +} + +type PayloadPreferencesDocAccessFields_user_Read { + permission: Boolean! +} + +type PayloadPreferencesDocAccessFields_user_Update { + permission: Boolean! +} + +type PayloadPreferencesDocAccessFields_user_Delete { + permission: Boolean! +} + +type PayloadPreferencesDocAccessFields_key { + create: PayloadPreferencesDocAccessFields_key_Create + read: PayloadPreferencesDocAccessFields_key_Read + update: PayloadPreferencesDocAccessFields_key_Update + delete: PayloadPreferencesDocAccessFields_key_Delete +} + +type PayloadPreferencesDocAccessFields_key_Create { + permission: Boolean! +} + +type PayloadPreferencesDocAccessFields_key_Read { + permission: Boolean! +} + +type PayloadPreferencesDocAccessFields_key_Update { + permission: Boolean! +} + +type PayloadPreferencesDocAccessFields_key_Delete { + permission: Boolean! +} + +type PayloadPreferencesDocAccessFields_value { + create: PayloadPreferencesDocAccessFields_value_Create + read: PayloadPreferencesDocAccessFields_value_Read + update: PayloadPreferencesDocAccessFields_value_Update + delete: PayloadPreferencesDocAccessFields_value_Delete +} + +type PayloadPreferencesDocAccessFields_value_Create { + permission: Boolean! +} + +type PayloadPreferencesDocAccessFields_value_Read { + permission: Boolean! +} + +type PayloadPreferencesDocAccessFields_value_Update { + permission: Boolean! +} + +type PayloadPreferencesDocAccessFields_value_Delete { + permission: Boolean! +} + +type PayloadPreferencesDocAccessFields_updatedAt { + create: PayloadPreferencesDocAccessFields_updatedAt_Create + read: PayloadPreferencesDocAccessFields_updatedAt_Read + update: PayloadPreferencesDocAccessFields_updatedAt_Update + delete: PayloadPreferencesDocAccessFields_updatedAt_Delete +} + +type PayloadPreferencesDocAccessFields_updatedAt_Create { + permission: Boolean! +} + +type PayloadPreferencesDocAccessFields_updatedAt_Read { + permission: Boolean! +} + +type PayloadPreferencesDocAccessFields_updatedAt_Update { + permission: Boolean! +} + +type PayloadPreferencesDocAccessFields_updatedAt_Delete { + permission: Boolean! +} + +type PayloadPreferencesDocAccessFields_createdAt { + create: PayloadPreferencesDocAccessFields_createdAt_Create + read: PayloadPreferencesDocAccessFields_createdAt_Read + update: PayloadPreferencesDocAccessFields_createdAt_Update + delete: PayloadPreferencesDocAccessFields_createdAt_Delete +} + +type PayloadPreferencesDocAccessFields_createdAt_Create { + permission: Boolean! +} + +type PayloadPreferencesDocAccessFields_createdAt_Read { + permission: Boolean! +} + +type PayloadPreferencesDocAccessFields_createdAt_Update { + permission: Boolean! +} + +type PayloadPreferencesDocAccessFields_createdAt_Delete { + permission: Boolean! +} + +type PayloadPreferencesCreateDocAccess { + permission: Boolean! + where: JSONObject +} + +type PayloadPreferencesReadDocAccess { + permission: Boolean! + where: JSONObject +} + +type PayloadPreferencesUpdateDocAccess { + permission: Boolean! + where: JSONObject +} + +type PayloadPreferencesDeleteDocAccess { + permission: Boolean! + where: JSONObject +} + +type Access { + canAccessAdmin: Boolean! + posts: postsAccess + categories: categoriesAccess + users: usersAccess + payload_preferences: payload_preferencesAccess +} + +type postsAccess { + fields: PostsFields + create: PostsCreateAccess + read: PostsReadAccess + update: PostsUpdateAccess + delete: PostsDeleteAccess +} + +type PostsFields { + title: PostsFields_title + category: PostsFields_category + 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_category { + create: PostsFields_category_Create + read: PostsFields_category_Read + update: PostsFields_category_Update + delete: PostsFields_category_Delete +} + +type PostsFields_category_Create { + permission: Boolean! +} + +type PostsFields_category_Read { + permission: Boolean! +} + +type PostsFields_category_Update { + permission: Boolean! +} + +type PostsFields_category_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 categoriesAccess { + fields: CategoriesFields + create: CategoriesCreateAccess + read: CategoriesReadAccess + update: CategoriesUpdateAccess + delete: CategoriesDeleteAccess +} + +type CategoriesFields { + name: CategoriesFields_name + posts: CategoriesFields_posts + updatedAt: CategoriesFields_updatedAt + createdAt: CategoriesFields_createdAt +} + +type CategoriesFields_name { + create: CategoriesFields_name_Create + read: CategoriesFields_name_Read + update: CategoriesFields_name_Update + delete: CategoriesFields_name_Delete +} + +type CategoriesFields_name_Create { + permission: Boolean! +} + +type CategoriesFields_name_Read { + permission: Boolean! +} + +type CategoriesFields_name_Update { + permission: Boolean! +} + +type CategoriesFields_name_Delete { + permission: Boolean! +} + +type CategoriesFields_posts { + create: CategoriesFields_posts_Create + read: CategoriesFields_posts_Read + update: CategoriesFields_posts_Update + delete: CategoriesFields_posts_Delete +} + +type CategoriesFields_posts_Create { + permission: Boolean! +} + +type CategoriesFields_posts_Read { + permission: Boolean! +} + +type CategoriesFields_posts_Update { + permission: Boolean! +} + +type CategoriesFields_posts_Delete { + permission: Boolean! +} + +type CategoriesFields_updatedAt { + create: CategoriesFields_updatedAt_Create + read: CategoriesFields_updatedAt_Read + update: CategoriesFields_updatedAt_Update + delete: CategoriesFields_updatedAt_Delete +} + +type CategoriesFields_updatedAt_Create { + permission: Boolean! +} + +type CategoriesFields_updatedAt_Read { + permission: Boolean! +} + +type CategoriesFields_updatedAt_Update { + permission: Boolean! +} + +type CategoriesFields_updatedAt_Delete { + permission: Boolean! +} + +type CategoriesFields_createdAt { + create: CategoriesFields_createdAt_Create + read: CategoriesFields_createdAt_Read + update: CategoriesFields_createdAt_Update + delete: CategoriesFields_createdAt_Delete +} + +type CategoriesFields_createdAt_Create { + permission: Boolean! +} + +type CategoriesFields_createdAt_Read { + permission: Boolean! +} + +type CategoriesFields_createdAt_Update { + permission: Boolean! +} + +type CategoriesFields_createdAt_Delete { + permission: Boolean! +} + +type CategoriesCreateAccess { + permission: Boolean! + where: JSONObject +} + +type CategoriesReadAccess { + permission: Boolean! + where: JSONObject +} + +type CategoriesUpdateAccess { + permission: Boolean! + where: JSONObject +} + +type CategoriesDeleteAccess { + 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 payload_preferencesAccess { + fields: PayloadPreferencesFields + create: PayloadPreferencesCreateAccess + read: PayloadPreferencesReadAccess + update: PayloadPreferencesUpdateAccess + delete: PayloadPreferencesDeleteAccess +} + +type PayloadPreferencesFields { + user: PayloadPreferencesFields_user + key: PayloadPreferencesFields_key + value: PayloadPreferencesFields_value + updatedAt: PayloadPreferencesFields_updatedAt + createdAt: PayloadPreferencesFields_createdAt +} + +type PayloadPreferencesFields_user { + create: PayloadPreferencesFields_user_Create + read: PayloadPreferencesFields_user_Read + update: PayloadPreferencesFields_user_Update + delete: PayloadPreferencesFields_user_Delete +} + +type PayloadPreferencesFields_user_Create { + permission: Boolean! +} + +type PayloadPreferencesFields_user_Read { + permission: Boolean! +} + +type PayloadPreferencesFields_user_Update { + permission: Boolean! +} + +type PayloadPreferencesFields_user_Delete { + permission: Boolean! +} + +type PayloadPreferencesFields_key { + create: PayloadPreferencesFields_key_Create + read: PayloadPreferencesFields_key_Read + update: PayloadPreferencesFields_key_Update + delete: PayloadPreferencesFields_key_Delete +} + +type PayloadPreferencesFields_key_Create { + permission: Boolean! +} + +type PayloadPreferencesFields_key_Read { + permission: Boolean! +} + +type PayloadPreferencesFields_key_Update { + permission: Boolean! +} + +type PayloadPreferencesFields_key_Delete { + permission: Boolean! +} + +type PayloadPreferencesFields_value { + create: PayloadPreferencesFields_value_Create + read: PayloadPreferencesFields_value_Read + update: PayloadPreferencesFields_value_Update + delete: PayloadPreferencesFields_value_Delete +} + +type PayloadPreferencesFields_value_Create { + permission: Boolean! +} + +type PayloadPreferencesFields_value_Read { + permission: Boolean! +} + +type PayloadPreferencesFields_value_Update { + permission: Boolean! +} + +type PayloadPreferencesFields_value_Delete { + permission: Boolean! +} + +type PayloadPreferencesFields_updatedAt { + create: PayloadPreferencesFields_updatedAt_Create + read: PayloadPreferencesFields_updatedAt_Read + update: PayloadPreferencesFields_updatedAt_Update + delete: PayloadPreferencesFields_updatedAt_Delete +} + +type PayloadPreferencesFields_updatedAt_Create { + permission: Boolean! +} + +type PayloadPreferencesFields_updatedAt_Read { + permission: Boolean! +} + +type PayloadPreferencesFields_updatedAt_Update { + permission: Boolean! +} + +type PayloadPreferencesFields_updatedAt_Delete { + permission: Boolean! +} + +type PayloadPreferencesFields_createdAt { + create: PayloadPreferencesFields_createdAt_Create + read: PayloadPreferencesFields_createdAt_Read + update: PayloadPreferencesFields_createdAt_Update + delete: PayloadPreferencesFields_createdAt_Delete +} + +type PayloadPreferencesFields_createdAt_Create { + permission: Boolean! +} + +type PayloadPreferencesFields_createdAt_Read { + permission: Boolean! +} + +type PayloadPreferencesFields_createdAt_Update { + permission: Boolean! +} + +type PayloadPreferencesFields_createdAt_Delete { + permission: Boolean! +} + +type PayloadPreferencesCreateAccess { + permission: Boolean! + where: JSONObject +} + +type PayloadPreferencesReadAccess { + permission: Boolean! + where: JSONObject +} + +type PayloadPreferencesUpdateAccess { + permission: Boolean! + where: JSONObject +} + +type PayloadPreferencesDeleteAccess { + permission: Boolean! + where: JSONObject +} + +type Mutation { + createPost(data: mutationPostInput!, draft: Boolean): Post + updatePost(id: String!, autosave: Boolean, data: mutationPostUpdateInput!, draft: Boolean): Post + deletePost(id: String!): Post + duplicatePost(id: String!): Post + createCategory(data: mutationCategoryInput!, draft: Boolean): Category + updateCategory(id: String!, autosave: Boolean, data: mutationCategoryUpdateInput!, draft: Boolean): Category + deleteCategory(id: String!): Category + duplicateCategory(id: String!): Category + createUser(data: mutationUserInput!, draft: Boolean): User + updateUser(id: String!, autosave: Boolean, data: mutationUserUpdateInput!, draft: Boolean): User + deleteUser(id: String!): User + refreshTokenUser: usersRefreshedUser + logoutUser: String + unlockUser(email: String!): Boolean! + loginUser(email: String!, password: String): usersLoginResult + forgotPasswordUser(disableEmail: Boolean, expiration: Int, email: String!): Boolean! + resetPasswordUser(password: String, token: String): usersResetPassword + verifyEmailUser(token: String): Boolean + createPayloadPreference(data: mutationPayloadPreferenceInput!, draft: Boolean): PayloadPreference + updatePayloadPreference(id: String!, autosave: Boolean, data: mutationPayloadPreferenceUpdateInput!, draft: Boolean): PayloadPreference + deletePayloadPreference(id: String!): PayloadPreference + duplicatePayloadPreference(id: String!): PayloadPreference +} + +input mutationPostInput { + title: String + category: String + updatedAt: String + createdAt: String +} + +input mutationPostUpdateInput { + title: String + category: String + updatedAt: String + createdAt: String +} + +input mutationCategoryInput { + name: String + updatedAt: String + createdAt: String +} + +input mutationCategoryUpdateInput { + name: String + updatedAt: String + createdAt: String +} + +input mutationUserInput { + updatedAt: String + createdAt: String + email: String! + resetPasswordToken: String + resetPasswordExpiration: String + salt: String + hash: String + loginAttempts: Float + lockUntil: String + password: String! +} + +input mutationUserUpdateInput { + updatedAt: String + createdAt: String + email: String + resetPasswordToken: String + resetPasswordExpiration: String + salt: String + hash: String + loginAttempts: Float + lockUntil: String + password: String +} + +type usersRefreshedUser { + exp: Int + refreshedToken: String + strategy: String + user: usersJWT +} + +type usersJWT { + email: EmailAddress! + collection: String! +} + +type usersLoginResult { + exp: Int + token: String + user: User +} + +type usersResetPassword { + token: String + user: User +} + +input mutationPayloadPreferenceInput { + user: PayloadPreference_UserRelationshipInput + key: String + value: JSON + updatedAt: String + createdAt: String +} + +input PayloadPreference_UserRelationshipInput { + relationTo: PayloadPreference_UserRelationshipInputRelationTo + value: JSON +} + +enum PayloadPreference_UserRelationshipInputRelationTo { + users +} + +input mutationPayloadPreferenceUpdateInput { + user: PayloadPreferenceUpdate_UserRelationshipInput + key: String + value: JSON + updatedAt: String + createdAt: String +} + +input PayloadPreferenceUpdate_UserRelationshipInput { + relationTo: PayloadPreferenceUpdate_UserRelationshipInputRelationTo + value: JSON +} + +enum PayloadPreferenceUpdate_UserRelationshipInputRelationTo { + users +} \ No newline at end of file diff --git a/test/joins/seed.ts b/test/joins/seed.ts new file mode 100644 index 0000000000..2665695868 --- /dev/null +++ b/test/joins/seed.ts @@ -0,0 +1,65 @@ +import type { Payload } from 'payload' + +import { devUser } from '../credentials.js' +import { seedDB } from '../helpers/seed.js' +import { categoriesSlug, collectionSlugs, postsSlug } from './shared.js' + +export const seed = async (_payload) => { + await _payload.create({ + collection: 'users', + data: { + email: devUser.email, + password: devUser.password, + }, + }) + + const category = await _payload.create({ + collection: categoriesSlug, + data: { + name: 'example', + group: {}, + }, + }) + + await _payload.create({ + collection: postsSlug, + data: { + category: category.id, + group: { + category: category.id, + }, + title: 'Test Post 1', + }, + }) + + await _payload.create({ + collection: postsSlug, + data: { + category: category.id, + group: { + category: category.id, + }, + title: 'Test Post 2', + }, + }) + + await _payload.create({ + collection: postsSlug, + data: { + category: category.id, + group: { + category: category.id, + }, + title: 'Test Post 3', + }, + }) +} + +export async function clearAndSeedEverything(_payload: Payload) { + return await seedDB({ + _payload, + collectionSlugs, + seedFunction: seed, + snapshotKey: 'adminTest', + }) +} diff --git a/test/joins/shared.ts b/test/joins/shared.ts new file mode 100644 index 0000000000..cf4af79035 --- /dev/null +++ b/test/joins/shared.ts @@ -0,0 +1,14 @@ +export const categoriesSlug = 'categories' + +export const postsSlug = 'posts' + +export const localizedPostsSlug = 'localized-posts' + +export const localizedCategoriesSlug = 'localized-categories' + +export const collectionSlugs = [ + categoriesSlug, + postsSlug, + localizedPostsSlug, + localizedCategoriesSlug, +] diff --git a/test/plugin-relationship-object-ids/tsconfig.eslint.json b/test/joins/tsconfig.eslint.json similarity index 100% rename from test/plugin-relationship-object-ids/tsconfig.eslint.json rename to test/joins/tsconfig.eslint.json diff --git a/test/plugin-relationship-object-ids/tsconfig.json b/test/joins/tsconfig.json similarity index 100% rename from test/plugin-relationship-object-ids/tsconfig.json rename to test/joins/tsconfig.json diff --git a/test/package.json b/test/package.json index 701d6fda66..99e44788b0 100644 --- a/test/package.json +++ b/test/package.json @@ -43,7 +43,6 @@ "@payloadcms/plugin-form-builder": "workspace:*", "@payloadcms/plugin-nested-docs": "workspace:*", "@payloadcms/plugin-redirects": "workspace:*", - "@payloadcms/plugin-relationship-object-ids": "workspace:*", "@payloadcms/plugin-search": "workspace:*", "@payloadcms/plugin-sentry": "workspace:*", "@payloadcms/plugin-seo": "workspace:*", diff --git a/test/plugin-relationship-object-ids/.gitignore b/test/plugin-relationship-object-ids/.gitignore deleted file mode 100644 index 3f549faf91..0000000000 --- a/test/plugin-relationship-object-ids/.gitignore +++ /dev/null @@ -1 +0,0 @@ -uploads diff --git a/test/plugin-relationship-object-ids/config.ts b/test/plugin-relationship-object-ids/config.ts deleted file mode 100644 index 09cdc01f40..0000000000 --- a/test/plugin-relationship-object-ids/config.ts +++ /dev/null @@ -1,140 +0,0 @@ -import { relationshipsAsObjectID } from '@payloadcms/plugin-relationship-object-ids' -import path from 'path' -const filename = fileURLToPath(import.meta.url) -const dirname = path.dirname(filename) -import { fileURLToPath } from 'node:url' - -import { buildConfigWithDefaults } from '../buildConfigWithDefaults.js' - -export default buildConfigWithDefaults({ - admin: { - importMap: { - baseDir: path.resolve(dirname), - }, - }, - collections: [ - { - slug: 'uploads', - upload: true, - fields: [], - }, - { - slug: 'pages', - fields: [ - { - name: 'title', - type: 'text', - required: true, - }, - ], - }, - { - slug: 'posts', - fields: [ - { - name: 'title', - type: 'text', - required: true, - }, - ], - }, - { - slug: 'relations', - fields: [ - { - name: 'hasOne', - type: 'relationship', - relationTo: 'posts', - filterOptions: ({ id }) => ({ id: { not_equals: id } }), - }, - { - name: 'hasOnePoly', - type: 'relationship', - relationTo: ['pages', 'posts'], - }, - { - name: 'hasMany', - type: 'relationship', - relationTo: 'posts', - hasMany: true, - }, - { - name: 'hasManyPoly', - type: 'relationship', - relationTo: ['pages', 'posts'], - hasMany: true, - }, - { - name: 'upload', - type: 'upload', - relationTo: 'uploads', - }, - ], - }, - ], - plugins: [relationshipsAsObjectID()], - onInit: async (payload) => { - if (payload.db.name === 'mongoose') { - await payload.create({ - collection: 'users', - data: { - email: 'dev@payloadcms.com', - password: 'test', - }, - }) - - const page = await payload.create({ - collection: 'pages', - data: { - title: 'page', - }, - }) - - const post1 = await payload.create({ - collection: 'posts', - data: { - title: 'post 1', - }, - }) - - const post2 = await payload.create({ - collection: 'posts', - data: { - title: 'post 2', - }, - }) - - const upload = await payload.create({ - collection: 'uploads', - data: {}, - filePath: path.resolve(dirname, './payload-logo.png'), - }) - - await payload.create({ - collection: 'relations', - depth: 0, - data: { - hasOne: post1.id, - hasOnePoly: { relationTo: 'pages', value: page.id }, - hasMany: [post1.id, post2.id], - hasManyPoly: [ - { relationTo: 'posts', value: post1.id }, - { relationTo: 'pages', value: page.id }, - ], - upload: upload.id, - }, - }) - - await payload.create({ - collection: 'relations', - depth: 0, - data: { - hasOnePoly: { relationTo: 'pages', value: page.id }, - }, - }) - } - }, - typescript: { - outputFile: path.resolve(dirname, 'payload-types.ts'), - }, -}) diff --git a/test/plugin-relationship-object-ids/int.spec.ts b/test/plugin-relationship-object-ids/int.spec.ts deleted file mode 100644 index aab6ab1e9c..0000000000 --- a/test/plugin-relationship-object-ids/int.spec.ts +++ /dev/null @@ -1,119 +0,0 @@ -import type { Payload } from 'payload' - -import path from 'path' -import { fileURLToPath } from 'url' - -import type { Post, Relation } from './payload-types.js' - -import { initPayloadInt } from '../helpers/initPayloadInt.js' - -const filename = fileURLToPath(import.meta.url) -const dirname = path.dirname(filename) - -describe('Relationship Object IDs Plugin', () => { - let relations: Relation[] - let posts: Post[] - let payload: Payload - - beforeAll(async () => { - ;({ payload } = await initPayloadInt(dirname)) - }) - - it('seeds data accordingly', async () => { - // eslint-disable-next-line jest/no-conditional-in-test - if (payload.db.name === 'mongoose') { - const relationsQuery = await payload.find({ - collection: 'relations', - sort: 'createdAt', - }) - - relations = relationsQuery.docs - - const postsQuery = await payload.find({ - collection: 'posts', - sort: 'createdAt', - }) - - posts = postsQuery.docs - - expect(relationsQuery.totalDocs).toStrictEqual(2) - expect(postsQuery.totalDocs).toStrictEqual(2) - } - }) - - it('stores relations as object ids', async () => { - // eslint-disable-next-line jest/no-conditional-in-test - if (payload.db.name === 'mongoose') { - const docs = await payload.db.collections.relations.find() - expect(typeof docs[0].hasOne).toBe('object') - expect(typeof docs[0].hasOnePoly.value).toBe('object') - expect(typeof docs[0].hasMany[0]).toBe('object') - expect(typeof docs[0].hasManyPoly[0].value).toBe('object') - expect(typeof docs[0].upload).toBe('object') - } - }) - - it('can query by relationship id', async () => { - // eslint-disable-next-line jest/no-conditional-in-test - if (payload.db.name === 'mongoose') { - const { totalDocs } = await payload.find({ - collection: 'relations', - where: { - hasOne: { - equals: posts[0].id, - }, - }, - }) - - expect(totalDocs).toStrictEqual(1) - } - }) - - it('populates relations', () => { - // eslint-disable-next-line jest/no-conditional-in-test - if (payload.db.name === 'mongoose') { - const populatedPostTitle = - // eslint-disable-next-line jest/no-conditional-in-test - typeof relations[0].hasOne === 'object' ? relations[0].hasOne.title : undefined - expect(populatedPostTitle).toBeDefined() - - const populatedUploadFilename = - // eslint-disable-next-line jest/no-conditional-in-test - typeof relations[0].upload === 'object' ? relations[0].upload.filename : undefined - - expect(populatedUploadFilename).toBeDefined() - } - }) - - it('can query by nested property', async () => { - // eslint-disable-next-line jest/no-conditional-in-test - if (payload.db.name === 'mongoose') { - const { totalDocs } = await payload.find({ - collection: 'relations', - where: { - 'hasOne.title': { - equals: 'post 1', - }, - }, - }) - - expect(totalDocs).toStrictEqual(1) - } - }) - - it('can query using the "in" operator', async () => { - // eslint-disable-next-line jest/no-conditional-in-test - if (payload.db.name === 'mongoose') { - const { totalDocs } = await payload.find({ - collection: 'relations', - where: { - hasMany: { - in: [posts[0].id], - }, - }, - }) - - expect(totalDocs).toStrictEqual(1) - } - }) -}) diff --git a/test/plugin-relationship-object-ids/payload-logo.png b/test/plugin-relationship-object-ids/payload-logo.png deleted file mode 100644 index 1a66766146dad0e16da32eec5e15a04e90e50aff..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12542 zcmcJ#c{tSH`#(NoL?T+=DY8_evP7oHGL{x9MG<1Ml$b1ojCE!(QZE&eY*|MM+4n65 zvrFeoGI5YP!mS({$~ zm6POVfrc=`^oA)2RFxpUes2c|q?L5_lIiVGFk@^v<@Wb5oh9dNL1YT9Y^MqM&PkBw zwf1?C@Gg@J;GO?zKP}mAAtWxgQw}G6qVk2wd2lJ>ymH1p5s!~dc!Td4jhST>y~+@U zh4Tl?3g^m-HODtPz`%@m`l)z%;ENj&1LOs1fxufWkt4Yf5U3p_90)WH;c$|`2ePLZ zAaDf<=>rW36BAK@2)y(EgeY7nl24^cN+}w({1pSH(+OYZC`$VDW$OA#TH%cdp;P4L zU!S65huSvg+Z2FVhvOQAcxEsRXJKjbdy*QWXFq9kDaKfC^k zD$fD!%$#a&MJsO(U~VD{F z?%8Wa$y-9JTbj5yb`94U@KgVnxc!|lJ3kKX<9Kd+eC(cHa>_oA4=62w1GC`(JL@kE z7RZTBiP53uP~)fDk|l}F6kd_R1S28^yw#|L?bS7&0}FIGA4%)CyT$=S@V#!*_IxDa zM#=jvW&Sb~W|PA>3nQ2Hnq4Clwr9d0&viNBzAyr^)Zj$MH~f4vSH1&{Vo^K&VVWm>Y2D46w!v{o4v-{CNgLs<8uDH zgy665wx%C066|0(3t^v|f~H4Pw7VgtanckXZxDKv{l%>2a ziinP#Nr;auY+DMEvz8{2|D$|M&25UPQpH}IuQ|JaCD+u5Y;8yTkwNhp2Sko*PCDvN z=Jq`9^TO}hSitU|NNZc4y65SFUH&o=qZo01ea^m3zw{R)Ek+$|>Hl%7IqYMtwE_wR5h^^kydihn~NX{p0wPa8?hX4L!I>xHADA zv`jy!>AcR0^oxQ)QW!fx?ZXkl!%@Py$tY!sPgk^)d{2oSaP%ktniTN4nyC;&?B6B) zJp~YMdEr>Dxf+Jt?W0_&TSWQh+WY8E!@4NQRlQkk=7z@)Xr^z{Y1azJJAS5u)%hX7 zga;d%w{}W2w1N10oPhE82?mK&Qn$1T9@opcbr5I|R?Yu+NMV^xL)cM}Nu&^OFR<^- z!4C)(!H+z1fDLbNuO?s^OQilnE5HO(S|A|y(OefmsqM`p?Bo`4;C@>LoCI(%7P4PS zf_h_c5s0lmmw!-C}dKh`)7j050%PHzd~6o!Q14sF1YEF|115=W}QA z51ouxR6YJvL6kaZH;Ld!cH^m=fODJgc($^komBpKC&*Ps2pvUyM^AZ`0~pAbBmO-w z`am)E30wGgatfWCmz;JYw~$bCP!!a@mfUy{FhljJt)uck{`gO9x}a7=$;UcfCIXTO z0(I}{jU8dge|W`tkF-v2Z}s4>EQ~godHcL{<4FNpY zhu6VVQ{8DXqEZTS=>5QjOFEHTVKQQHQ#q6Do{eUDWhXZp9FzzBG8E#y0FH=lUpd9{nj~*r1XTC;JSVEv*XN7pKz#xmR47SAj z>V0{AQ2VSf+Z0e~>T9=Qbe(dAOPdjJ*kr-su7FUG@&kGu&|ZM z-#h%_GLzlc(LuOziY%M>mp(8^rZ+Znpyj-93T}3p+)|yjCGl4VftMp)L<-_m~pvh4mYaYuZPoC7lejhays z=5XWsx0QnZS>x6HSpBFqIZKVswsM<*h4ZD6g4Ll527y06JBwr2!sIx<@5VYhxdGx4 zSto{$4ZW}HWbj4@Z&V;e3Q=PeD~MJDYMt1^AOvEirdT0TV{y3FGi3`fmlfe40~LsF zO73vSDfu#0PbFw>I_WZbg^v|s(6BuA?3c~dV1uFDpnXy9lSY2`G>y|9MpIyNo#t2S zaX%K_?=d}A!U{Behl=Q^-vRK^&-a`E!9M)%Js|Qq!Fbc|M;f`!zU_gxF#9E7GNX2C zn_^exPW}?Q-i46fi<{BAqOuO6Ju!6dJg3V{P8CPZn z8&5ei^&Eb5RlpyT1)1}iM(I%vQgx>B!ZnGM-#YuVxC5W>la;QT|71DVMX_428}>C< zN52C0*Z5N5t!J4GJ5W^tcs~H%eDMo8QMc5BzBJJhbC7w?7$Xv=0R0OeRbL8C4fOPQ zo|;&%3_b=q754Jx)i;sG%vr!I9OR;y;OM*_*X8EEx}&BfYY$za)8ucdbk!RE^?s{{S%u?^_a8p;0qpGdvui z)utXDgw%RC-_~ub{Z`jntF06!&TTnbk25+7c$OfKqH51&M!obP?Q$&fo?uAB> za|7M-^*@`6<$mq$wSrpwn%7&Z|7X;|v%+KNbXr}$cug{)!K=o2V>zM2rNr*#N;6I1 z+hzKiytnrR@K|i@8l*-Wez1vnBg!R8F^Dq-N_A5~Kj3pe?RKlw?*6y2Ne1F_IJ6tr zalK}CExXS$8~tEPy7p%C>hAOg{oz+V=OP93F3j>tClmbWqmgE4Xq1M<2`%}!u3r7u zfmgH--5NMUWW8N!dKLdmTFB1eMDt^%EMEktJ&oyDvTL|n+7VHSr z_=n&R>VCS>8(~Pj&T%1^2wK@ww%wOnx_mvA8zk=Ch;TGkjNIhYLZC^fbD1|iu5Y=q zR5?)Tt^)Y&WryP?i%mqBJfT>!w2qEX`;-V1ZIymkucg+Q;!3$_6r0#R22bgT;|@4q z_=szD>l(ioS2Nd`WjbQ8a4|uY+Y}wnShp!pjbC|I8@h(zApa$WkK5Rq zL@xdM6jdTdA3Ch@o_SA)b61Ix@Vc5$@Oj7KFsQMtQG_78&9FTYc&AQHO*B0n3yGr6 zE^8Ttyz=X@?rPymXiWwUFcagw#^L;?RHDNBm(Im;`e1^W%1OLUYe*jQjh!CLU9dKw z{YN<~(ou+Z^036TW7z>x|HgF6wd4}Y?^?Aoq(hAciJnBBUH;PE zIMArCYrOx{w})AYHgC)ma1kU4G*j}PfmdnIG1@eNUPHw6sQYY;VvZX#P~-f4wpQuO zWfGP$*AHpr+V|wpIGEald48qmUMD9b5^~SAnKvOYBCXP2;TUYD@-dAM4fTy7BVk5` zoYtXN^j>FXnFI6%j#Sq-Jegt%msOlkaOIojnEFBY!rm*T+(eU3PtTgvOS;!`@uYhR zmKQ0LwLL{xeS4$mE(i8r-4`WjE1ekr9e5|Pr?zk93Hw~CJjW-N#n0Cu&Htp;)wyUK zY3P?hOa7gvp*Pmo?(JSH*E$H!CIb!^H4`*BP?YJmI`g1**V`BA@tlwb5;B3K4Hjg@ zGpZ!c-cD_zGZoyW2`kS2oV8BtdcySeq2+~zWs!(Z=uhPAHD{!BaL>xD&W9?qnfbjw za4nbnxaI1*Lu@#lR@Zslrd89s_L2ALi_e1nrUr^*DArXTwHR-4;XvO@BL+S$3GKs! zyT|Ru;X%!P`q2YW>rRIIs>lTk(z^zd&j7zCZuR6u-JJ8y@r|l;AsSMPdC|j&6_NF>a5c`ajin477QdTTs3!aIa-Pn5!CbVmh#MQY6zfg8ZhMbyjX= zc~`|6H1q{y>_3ZA`}2~pa|>baCzP_I<&@KJV9}|u1%!pF_`o7kAUwgv{r#@eV$7$S z<%{0J&#(#m=q%xFGH?i9&ThAOYSL761dk>yO zk_E}+fFg_zf&S8s}Ed^^_w+(uT(WyPAPM{GvZOdnriW3 z;dq@kx6XEPuPc`$wQ6+wOw`fn`v+3A%d`tZZo2U9e6cFZfsuoXPI|UIzuSh@Exw4Z zc)5y(^=G=Q|30WF%*x+f9ECsTVTAPCC((Yb!SEFM3}S|T$Ty=C@*Tu|w@Krgw#Pyj zTB}W1NfLAmrpzQur6o+Co&<;>>o^e~6%p)g68WX6MwzNqISzsamqH|hb?LkvTy#^M-#?8quQ+(ga&)dDthO|8Ca(G>z#B`*L ztXgz)Z*?#X+?DnOb!2qGv|FAk_ec+XVv`%@5DZfN<5 zLkRi5J0mt&_z=x1#VDMlR$^crbY;vS3m>q7vb||h=sg(|W?QH=6d^v}i&4D%bCOjw z%sfKFKxde%4>8rVzaQ3kAz6)H2Wn<)qXO8Nynv?yx?n5tel9l&ng&%bG$7ykgr?{$NZ}9tiOY~Rr z{8W>c;HwI0Sx3vWoQm(}g=H6$7&-bc@iy{D%qY9p^ImC3meSzh=cSNV-b_-R7Rq5kRm)Mr?cCOcUwIa6rVjhTPs_Y%klHeQh3 zYz|>66qkjmu=iQQX!TyX_tXpsc0KAEf~JBFy92!}E@y6!U65~f_=a;3?hv6?P~Aei zectvv?%O{6)x#3b6ubDZ#aMh;tLC{Yx56Tk_c$${Oj{Gt;i9q_x);5)?s`n+{ptH^ zhl6cJ*vbgxO4u~Bc&5D}JFi64R#j);v z$6qJR#jn^I&(}W6OKWO?PH{_%Va{HzHE7OyLz{qc&w`^B>zi~Qm!%7x2QgD*(We;NR=M(-E z@0_u{SKBEj+(n(Y75Sne_2jt8?bglu>rc*TJVH{e|4}{liRJ~@K^;f}h+a;;QG&+s zZO(OAkFAyJlWv6ZF~xyEa$RhOtX;o*SsZwe|epF+{*Fl}OBdEDXe8K}-{ z3>)_=#aWjtRNppW_?Q9k{dvga0onm@xNpjk?$MBL?hw&^5l{?1C7o3!kNP)2)gnl3 z=&e0*QN_Qfg|l3*3i(%JK>w6tx%yG*UbHOMA|)M{%yW)qIgF(xzGyl9H{Nw z3LJ$QW$zxFzE_Kfz7QL@;C97NeMgAr!UyQC;ENNULA!#Rh zwpPbW3R2X`@QY9&KO=uw+2~qewXJuz$<|npBoH!PL@56<%W=#%s_6{9`Uzp4Y}_II%|nzCT> zZJgrq_sHP2@&`x4JT3m2dx0nd9=lzZ%RU3qDUA74N(~mFeQ1dCC!P8mRS_06lQpG~ zS;ah-TTxmDC0oSool(B0G}U!#Bzt)xm2>teQYyQ>yV$_V*0j#4P+7n3K>iS5mUdw- zJ%gv+Q!Bi#wtr*5sW8}EL*z;h<#!^4r#^vAtz)N&&8S^NOak%fHMOYI6rV7m!MK_z zjpT+A8LwKV)fYt8e8{4<_!L8M@=;q;7dYkzFLBMe)};Kt=XL0ATu-BY8m{&6S-Vq+ zp(tV1DR7oUrt}Ao-BV>sA8s&C3>-Xw4=JB&0u$b~j4d+kq0td2%=x`a$P0&$ALt^} zHz=B5Lf+^@hX(s9$Z39H_qAQF)0>uL!;Iic`H zLS|;r?vMEyLD(E!x83?DEILyB7d;@BDWLISh*5;{Gv?HJvlC8nM`;~xiB-km8U#M5?>D*KZy`t|;-Srh>#t3QLI=MwPv!az#YOKH z;)yM|idB}@79OB`**`Q`Z&(U<0?}fHNAe-)_Z`@Nob#ER&bF;m7I5v{!ekhf4&O=d z?2M}q4t?*omrOXF(iVd=(g6!nwXfl2avZuf!Dx%dlAWP+eaT;8NcWD)ab{Jxj)gts zc%X5_`d_n6M&D-efJkV~8Nj&UZ%nPulZk5&qY8K93bH*Jk21v+N4_!r3T_&>sqF9d z`zF%@>bBT@RQo)Ms9|@d5PPQA^qC%AyM*z>g&Pec-nGo|AYFb z`_Dh$0D{skDiE*5fgYihMA>@>v*^vqeBXllzoYZkFbJMGDRCHB z=|Azl5_9};WH{`QE3g_q@xU(O;-l4dmb^UJ!LnetFJZqYUHN&f- ztY#c|sQ-}s%BxZMdHrq)mxu)5WTPJ6RlSMEn&<3tyRw}d%2hITLja^kbl*~tL8wD zEKQhAqE}iqi=M45cPeTM@g$-(Q&e?7cT*T!cO=YbEN;S3nBBn-ng*hPIx#tusvP;x zfg&!gSiJ{Y__8MrUUXK@mNheOD{7v%pf|5@8?gmk!o;WZWWtVoyDElP z$+c3gIWIP?q_7Op$_(6zPPS1wd;Cqpu#AsK>CfU}!TLuh3ad?HOs@vRXV|8GBlWG7 zXRYheSl3~pxim+sEf`a_# zC#>X}gw}fBuLvvsqyyPYB_3UB`e|KMzls2n@YLe3dm-q>B8BKDp0VZ%CtoItTBtEA z45RCfZW?+|u@;5U2J|x%cl8WRTm~4vpYQ2Efe&Yg5B9aZApNxk-Z0nVgtKLIuFsXB zMZ)JH4xTL4$QT>M9W{<$qk7FW{EoJE0Q~Nl%IaT*+gA%RgUFR*!t8p|I*=#K+|U;C zvHcQHP0PR7_|)H-P{PV69(=19>5L5FDyPGYZv=s;XnYw@fTxVxN~KOm$c9h1$TVq` zOU%GE_u|9e1sw##Ub;PQg7$z1``u3bDSJ}tfFS32<<VZDe?U!@m*UoDsW&wRM> zaG&bMOGaE9p}Ps6`sA7$cYNQW)X+J=wGVn~o+5F2eJD~ebkEL46p+nOnGt^ja>qXC z#6vat&mR_Q6P8*^b~blH6D?xuB~JRhUAcdI;IIQSC_owM?A{zQx8N0YI5DcPY}5*P zMVGa-nJMNrTCNi6>Q6z?tv(~`J%DjPx@~;DA<%Gefn4z7+CTLQdYV%Vx1v^Vz;BYY zZ5z`@^m8%ww}x$=&s&Z1mNxDE0=n_$TBULgIj1uaOvpyG4t$k!wM(gS9iX4lL~?LB z^HqU`+B7`yU@e^u;;e-gLmYU4@XX5L;Xl5fTn54Cwqw=g5i&2|;Aa<=Y=7nmN?q`=>_*FNMYmuQw_ZQj zFCSJu>{ESVRgfYxTQ=$f&ssMAG7UldmM2%!-Lv)D8zpjDYtnEzmb^a1J9}cTnxBi= zD!sAJfqngut?VkMnGJLCv`D!=U~66 z^Jg$deTXyYXIBbCET9oeC5K)$sSDbElqj<{(8Qbs9%1YnJnK6_!*<+G-X%T)wQOQvv!PC77bQ3k@k9;4pwkv{Lo-Lmtc)+F^h+ z-Gtl#cT$@2Mg?@h?XZeo7(NRse;v=C$^IO- z&U{pnd~2vn<^9f??k?Q*Rdtv6o!ysuo}rWL=`8v1{q;Y%BUj)pUkrcb1sub7Kg?f5 z{&KYt?+5F0&itWDG}}EBZ&z}w3bW}hwkJ;mMdZ&e z=cN9{mQa5u@)uy#-}%Z}csOiXPpl(y{f}adZ2PxW3RRd<35Lm+38Oj-z{I!c$;h9( zeODyrZ*kD;%$M&wDc@~|2?VnQ2lmW?XMV@R2NjsgpU}_A^_}VqA8N8;#c~-hB2Rz` zJf8CVO?u=8eb3MmkS=UiMf&|CK7-6&>xhw(&lJ&0oO8&$6%t0;S4J=_cO@=6C;jWrnYcoK%m>U)>BL_C;Y=Yq>@|c zmXbLF93Q>a4BNxX67;6jcnlLkc@_=MW9VyS4b7d4RcN9Q?Tjv?QM_?S-ue`ol15_( zxNcpe=DRw)C8lrNLft{7=9r9^BN0HFJS6fTcmE^YLFbMziM_qluxYp+Z6A(mL9hO3 z^P}tgkYv#smu18WI8LNbeoUyXvR&1;9Pi<9WRpERnVgTznp;kbOlQF$Ha`8v-4*8i zBV&~ZQ#Fn@hfg}?^}PdX6+$2E52sdUG0_!dW~X9g%bO+|M&<6gT*RecBw>UQ)O5F6l^ujBu>Ex^QV75~wq8EDUQY&}X#_n{YPt7!e$;8H6D83xb z)9{59cq3)gvJ$=P22DKO>u0N^1$U|`Kq9KUdW5axog>4q6Adz}yk_E;UAWgn4>VIa zzq`~!aA__?cDgCQr8tOgKMRYE za1b9=s{L|+oUZ^WP}+@KwL9}c`|+2dT>3??`CU&?pz`Xk)3=na-6^}X9~KbfUUq|$ z+)$w=KU-R;a4)Ytams+gLUo1T`|~e1`j|!JB0=Q6HmJUn!`M!5n8k{+IbZ4r<#6+p z4vCUqa%@SjU#?4#>RjAZ;9-0oI)+^4iML|r+7brC#VHicO-`}Z8MiY%p6K+Wp>LN6j2G`5>3pf>;#}};l_j%bVB|E&o)h1 zm&7#1xBdO1DM^dqGw#{Bca~0Byw2XivbGj!x3zX`>Rjmx+?f!f>CDs9Lmz;PEMY`y z$2S%5gBLz-Oc;3o!}6$r6r}0?f%9b9;O?;TTbMtmaiC=MySLaMMq%etfV~1ol5W9pnddSH~Qbi$(pux{%P2&1~Z^K zIZHe$;I?fF*hqAki62nC^3M)b;VfYr%ONd+cg8*&X%QZq=#L8V-cX3k&J|XamLDRg z&=N=De|^lCuDK1JYEB8@j;O|PRs;*uTc{I2H8uC91Gs^z?+s4ZTfZ2|W1Y-O zC@aex>n9>xxt`*E(=QL@dPte#DWY%R{Tp8PDyQDBKsAN%gf%1En;AFPf?cx)SSem9 z4El=bpzBLpkaPW}N@o>p_p5U2-`YBojG~gFir7)+igCo%H_J2Sc6I(^?N`3^WuBw{ zSvN9XU%EJ?eA%KqgXO>%8FEn0HTR7hJal+WBsaY%Z#=$r?QZ8gU}Ev31l}5+*(+=Q z@lnRzih92vKKV_^L97Kd11S=mYFeIoTZ0%{Y!+-t&b>M4>(@h$++f9m{~;h%njKC2 z96gf&h)%|zc%EH8Dw8&$0<7g*vWl~_4qI*&!#*xao_PcL;!RY~O8;Tl#rv(oNHJO^mh{d-0Tq8=|`BoA7g4@kU zKPk@++(^IS$Nkwri)f~VaL&IWH*WrWsx_1^6%#dOAz;t;cO;##lEe%Q-j6>%w z{4QzuT7LiYZ{(J^B~AJkAVL1Ka$T_qN12Nif3e20Mw*E4XV?;&CL}259-8_+*Jj?0 z;fyr6mTQ!w)(v4?Sq0j~Sy4=UL|?EFIw>af@r0dDo5N#VD-sEFbe2_`DM^v8$1_GA z4M5)qHL_}gRO+?ot8AN2pQ^d**rk&lX;~Z9Y?tVtsdL1biq~^#mh40>+ol{V?`WhP zxq~Tp4iQjlYMcxpjt$iWoB~D-bFjBTP5xgEM(D0y8<8<+bZae8Tfd4>z-gcjCRHBc zQ7!2>c}JNa*Ud{nw;ev#!s;vgbwPI#Nnpa&rSBvET-cNM5TQ#7uHDt%M{%6UKZO)^ z?bea+%`}YL|BMsip)em1tkm9PtDfYQX%23;yRo-7kMXK(A$z<}CUEN?cTUT@78pYd z~0(aYUo(T0WPu}+{SR3PfYkcwg z1CWOnatl6q-hJH6a{d>qsh>^!bkY$p;b5Lyt-2em~ zzP#n>Q1H%qqU}9U*6B~93wj_drCbOtmqs{@r0b_ETg7PBOm8t>uMuC#S5@5F%57f{>#L4asl5(6o zo8aXnM@?j!>Z3h~U|$u3YQ@d9zpKB$#Kw-Wt}$dJK{dnSCJDq`gbHk80Z2Y62A+T8 zVxXfT4+BXaB!4DGB#;0BYetaI`L@XfrUe|4<9#{{;uD)q1;0teMLeyiHuvgO1p8zF zaTE0cM-C?=HZ%0lof(Y5Tf|@U?ks332T_y#%Xf>qnhEg`Co%YoaKz&9Ssb#vW_XMB zzFxm8Bm7`k=+dwIuau3!!}W%-U{^aKp2kTGEft73p>#kQKKQ<1kjIH!yvYcEIN%0F zpH-?S>dLp?kzXs18xfm9+~gRg{#Odr8gITrv-mB@HCTw3o=iwM8hyM;1c+MSSWviz z2(YV^F#G9AjElKPm(7<~WG5}rHx^x#Iwol0Ij&X9of-bVCe;#d-PX2uUN|K{1!tfcvuZgfVea1 z-*0*9BSEb1uJezy8Xkz@2>cb3g8)pbrj5&_8Lu<^A`O;2%d(u(mD&wg46pAYt92F@ zJrlwKDI${N2)_nF-a_5&{aKNCvpiYe72}w16EU3WMGZX`Z01s+Uu z@P&?ndhs`Y1L?8f$ppl7D1ahBW`_kM4w3*+FKmCW=<9SgjKRsFK_UAGGXPZd&Y2F+ z{PFZ#IYBxE`JyD6jTQh{4DFO#&@*_Z3w`mKQo z7S!G&Hlwccb~Mow0JRqG?bXW!3=IUL@9))fFsK;=LSzt*wT*Z8w*U}#t;0J3BHZPc z1KS|`aKFf4U^K`MC
- {col.components.Heading} + {col.Heading}
- - - -