From 6c99326d5920adb4b682ab84c08209091514cbc2 Mon Sep 17 00:00:00 2001 From: Alessio Gravili Date: Tue, 9 Jul 2024 10:33:38 -0400 Subject: [PATCH] feat: replace qs with qs-esm (#6966) qs-esm is a qs fork I created and doesn't add bloated polyfills, is ESM-only, has a smaller bundle size and comes with types included. qs: https://bundlephobia.com/package/qs@6.12.1 (11kb) https://npm.anvaka.com/#/view/2d/qs (15 dependencies) qs-esm: https://bundlephobia.com/package/qs-esm@7.0.0 (4.2kb) https://npm.anvaka.com/#/view/2d/qs-esm (1 dependency) I don't agree with the backwards philosophy of qs: https://github.com/ljharb/qs/issues/404#issuecomment-806392831 ("more deps is better", lower bundle size as opt-in, maximum environment compatibility as opt-out) qs imports waaay too many useless dependencies --- docs/queries/overview.mdx | 4 +- package.json | 1 - packages/next/package.json | 2 +- .../src/utilities/createPayloadRequest.ts | 2 +- .../utilities/initPage/handleAuthRedirect.ts | 2 +- packages/next/src/utilities/initPage/index.ts | 2 +- packages/next/src/utilities/meta.ts | 2 +- .../views/Version/SelectComparison/index.tsx | 2 +- packages/richtext-lexical/bundle.js | 2 +- packages/richtext-lexical/package.json | 2 +- packages/ui/bundle.js | 4 +- packages/ui/package.json | 5 +- .../elements/DocumentDrawer/DrawerContent.tsx | 2 +- .../ui/src/elements/SortComplex/index.tsx | 2 +- .../Table/RelationshipProvider/index.tsx | 2 +- .../Condition/Relationship/index.tsx | 2 +- packages/ui/src/fields/Relationship/index.tsx | 2 +- packages/ui/src/forms/Form/index.tsx | 2 +- packages/ui/src/hooks/usePayloadAPI.ts | 2 +- packages/ui/src/providers/Auth/index.tsx | 2 +- .../ui/src/providers/DocumentInfo/index.tsx | 2 +- packages/ui/src/providers/ListQuery/index.tsx | 2 +- .../ui/src/providers/SearchParams/index.tsx | 2 +- packages/ui/src/providers/Selection/index.tsx | 2 +- packages/ui/src/utilities/api.ts | 2 +- pnpm-lock.yaml | 76 +++++++++---------- test/admin/e2e/2/e2e.spec.ts | 2 +- test/buildConfigWithDefaults.ts | 14 ++-- test/helpers/NextRESTClient.ts | 4 +- test/helpers/rest.ts | 2 +- .../PopulateByCollection/index.tsx | 2 +- test/package.json | 2 +- 32 files changed, 77 insertions(+), 81 deletions(-) diff --git a/docs/queries/overview.mdx b/docs/queries/overview.mdx index c2ae6c5cf2..c7c68304d4 100644 --- a/docs/queries/overview.mdx +++ b/docs/queries/overview.mdx @@ -154,7 +154,7 @@ This one isn't too bad, but more complex queries get unavoidably more difficult **For example, using fetch:** ```js -import qs from 'qs' +import { stringify } from 'qs-esm' const query = { color: { @@ -165,7 +165,7 @@ const query = { } const getPosts = async () => { - const stringifiedQuery = qs.stringify( + const stringifiedQuery = stringify( { where: query, // ensure that `qs` adds the `where` property, too! }, diff --git a/package.json b/package.json index 766244686b..d2b5d12787 100644 --- a/package.json +++ b/package.json @@ -103,7 +103,6 @@ "@types/minimist": "1.2.5", "@types/node": "20.12.5", "@types/prompts": "^2.4.5", - "@types/qs": "6.9.14", "@types/react": "npm:types-react@19.0.0-beta.2", "@types/react-dom": "npm:types-react-dom@19.0.0-beta.2", "@types/semver": "^7.5.3", diff --git a/packages/next/package.json b/packages/next/package.json index 77e2834dd9..e8820e3eae 100644 --- a/packages/next/package.json +++ b/packages/next/package.json @@ -72,7 +72,7 @@ "graphql-playground-html": "1.6.30", "http-status": "1.6.2", "path-to-regexp": "^6.2.1", - "qs": "6.12.1", + "qs-esm": "7.0.2", "react-diff-viewer-continued": "3.2.6", "sass": "1.77.4", "sonner": "^1.5.0", diff --git a/packages/next/src/utilities/createPayloadRequest.ts b/packages/next/src/utilities/createPayloadRequest.ts index bc21523e8b..323a38dd74 100644 --- a/packages/next/src/utilities/createPayloadRequest.ts +++ b/packages/next/src/utilities/createPayloadRequest.ts @@ -2,7 +2,7 @@ import type { CustomPayloadRequestProperties, PayloadRequest, SanitizedConfig } import { initI18n } from '@payloadcms/translations' import { executeAuthStrategies, getDataLoader, parseCookies } from 'payload' -import qs from 'qs' +import * as qs from 'qs-esm' import { URL } from 'url' import { sanitizeLocales } from './addLocalesToRequest.js' diff --git a/packages/next/src/utilities/initPage/handleAuthRedirect.ts b/packages/next/src/utilities/initPage/handleAuthRedirect.ts index d51213ca72..3e27a9f48f 100644 --- a/packages/next/src/utilities/initPage/handleAuthRedirect.ts +++ b/packages/next/src/utilities/initPage/handleAuthRedirect.ts @@ -1,5 +1,5 @@ import { redirect } from 'next/navigation.js' -import qs from 'qs' +import * as qs from 'qs-esm' import { isAdminAuthRoute, isAdminRoute } from './shared.js' diff --git a/packages/next/src/utilities/initPage/index.ts b/packages/next/src/utilities/initPage/index.ts index e9724e0bca..91bc6b362f 100644 --- a/packages/next/src/utilities/initPage/index.ts +++ b/packages/next/src/utilities/initPage/index.ts @@ -5,7 +5,7 @@ import { initI18n } from '@payloadcms/translations' import { findLocaleFromCode } from '@payloadcms/ui/shared' import { headers as getHeaders } from 'next/headers.js' import { createLocalReq, isEntityHidden, parseCookies } from 'payload' -import qs from 'qs' +import * as qs from 'qs-esm' import type { Args } from './types.js' diff --git a/packages/next/src/utilities/meta.ts b/packages/next/src/utilities/meta.ts index 85fb427c4e..a2852bbcfd 100644 --- a/packages/next/src/utilities/meta.ts +++ b/packages/next/src/utilities/meta.ts @@ -3,7 +3,7 @@ import type { Icon } from 'next/dist/lib/metadata/types/metadata-types.js' import type { MetaConfig } from 'payload' import { payloadFaviconDark, payloadFaviconLight, staticOGImage } from '@payloadcms/ui/assets' -import qs from 'qs' +import * as qs from 'qs-esm' const defaultOpenGraph = { description: diff --git a/packages/next/src/views/Version/SelectComparison/index.tsx b/packages/next/src/views/Version/SelectComparison/index.tsx index c0a806d98a..e44ea52036 100644 --- a/packages/next/src/views/Version/SelectComparison/index.tsx +++ b/packages/next/src/views/Version/SelectComparison/index.tsx @@ -9,7 +9,7 @@ import { useTranslation, } from '@payloadcms/ui' import { formatDate } from '@payloadcms/ui/shared' -import qs from 'qs' +import * as qs from 'qs-esm' import React, { useCallback, useEffect, useState } from 'react' import type { Props } from './types.js' diff --git a/packages/richtext-lexical/bundle.js b/packages/richtext-lexical/bundle.js index e513de7d71..c32fcb9363 100644 --- a/packages/richtext-lexical/bundle.js +++ b/packages/richtext-lexical/bundle.js @@ -54,7 +54,7 @@ const resultClient = await esbuild '*.scss', '*.css', '*.svg', - 'qs', + 'qs-esm', '@dnd-kit/core', '@payloadcms/graphql', '@payloadcms/translations', diff --git a/packages/richtext-lexical/package.json b/packages/richtext-lexical/package.json index 1e82cdba6a..a0887a6c74 100644 --- a/packages/richtext-lexical/package.json +++ b/packages/richtext-lexical/package.json @@ -72,7 +72,7 @@ "payload": "workspace:*" }, "peerDependencies": { - "@faceless-ui/modal": "3.0.0-beta.0", + "@faceless-ui/modal": "3.0.0-beta.2", "@faceless-ui/scroll-info": "2.0.0-beta.0", "@lexical/headless": "0.16.1", "@lexical/link": "0.16.1", diff --git a/packages/ui/bundle.js b/packages/ui/bundle.js index bd261a7575..a9ba020a98 100644 --- a/packages/ui/bundle.js +++ b/packages/ui/bundle.js @@ -113,7 +113,7 @@ function require(m) { external: [ '*.scss', '*.css', - 'qs', + 'qs-esm', '@dnd-kit/core', '@payloadcms/graphql', '@payloadcms/translations', @@ -165,7 +165,7 @@ const resultShared = await esbuild external: [ '*.scss', '*.css', - 'qs', + 'qs-esm', '@dnd-kit/core', '@payloadcms/graphql', '@payloadcms/translations', diff --git a/packages/ui/package.json b/packages/ui/package.json index 448c753380..0dd07a6348 100644 --- a/packages/ui/package.json +++ b/packages/ui/package.json @@ -73,7 +73,7 @@ "dependencies": { "@dnd-kit/core": "6.0.8", "@dnd-kit/sortable": "7.0.2", - "@faceless-ui/modal": "3.0.0-beta.0", + "@faceless-ui/modal": "3.0.0-beta.2", "@faceless-ui/scroll-info": "2.0.0-beta.0", "@faceless-ui/window-info": "3.0.0-beta.0", "@monaco-editor/react": "4.5.1", @@ -84,7 +84,7 @@ "dequal": "2.0.3", "md5": "2.3.0", "object-to-formdata": "4.5.1", - "qs": "6.12.1", + "qs-esm": "7.0.2", "react-animate-height": "2.1.2", "react-datepicker": "6.9.0", "react-image-crop": "10.1.8", @@ -103,7 +103,6 @@ "@hyrious/esbuild-plugin-commonjs": "^0.2.4", "@payloadcms/eslint-config": "workspace:*", "@types/body-scroll-lock": "^3.1.0", - "@types/qs": "6.9.7", "@types/react": "npm:types-react@19.0.0-beta.2", "@types/react-datepicker": "6.2.0", "@types/react-dom": "npm:types-react-dom@19.0.0-beta.2", diff --git a/packages/ui/src/elements/DocumentDrawer/DrawerContent.tsx b/packages/ui/src/elements/DocumentDrawer/DrawerContent.tsx index 53e50d49d3..2a295d6a72 100644 --- a/packages/ui/src/elements/DocumentDrawer/DrawerContent.tsx +++ b/packages/ui/src/elements/DocumentDrawer/DrawerContent.tsx @@ -1,7 +1,7 @@ 'use client' import { useModal } from '@faceless-ui/modal' -import qs from 'qs' +import * as qs from 'qs-esm' import React, { useCallback, useEffect, useState } from 'react' import { toast } from 'sonner' diff --git a/packages/ui/src/elements/SortComplex/index.tsx b/packages/ui/src/elements/SortComplex/index.tsx index 88659e7d76..cc08b65c3f 100644 --- a/packages/ui/src/elements/SortComplex/index.tsx +++ b/packages/ui/src/elements/SortComplex/index.tsx @@ -6,7 +6,7 @@ import { getTranslation } from '@payloadcms/translations' import { usePathname, useRouter } from 'next/navigation.js' import { sortableFieldTypes } from 'payload' import { fieldAffectsData } from 'payload/shared' -import qs from 'qs' +import * as qs from 'qs-esm' import React, { useEffect, useState } from 'react' export type SortComplexProps = { diff --git a/packages/ui/src/elements/Table/RelationshipProvider/index.tsx b/packages/ui/src/elements/Table/RelationshipProvider/index.tsx index dad518572f..5ca9e11ed8 100644 --- a/packages/ui/src/elements/Table/RelationshipProvider/index.tsx +++ b/packages/ui/src/elements/Table/RelationshipProvider/index.tsx @@ -1,7 +1,7 @@ 'use client' import type { TypeWithID } from 'payload' -import qs from 'qs' +import * as qs from 'qs-esm' import React, { createContext, useCallback, useContext, useEffect, useReducer, useRef } from 'react' import { useDebounce } from '../../../hooks/useDebounce.js' diff --git a/packages/ui/src/elements/WhereBuilder/Condition/Relationship/index.tsx b/packages/ui/src/elements/WhereBuilder/Condition/Relationship/index.tsx index b7899a9d1f..be6a3ac1d6 100644 --- a/packages/ui/src/elements/WhereBuilder/Condition/Relationship/index.tsx +++ b/packages/ui/src/elements/WhereBuilder/Condition/Relationship/index.tsx @@ -1,7 +1,7 @@ 'use client' import type { PaginatedDocs, Where } from 'payload' -import qs from 'qs' +import * as qs from 'qs-esm' import React, { useCallback, useEffect, useReducer, useState } from 'react' import type { Option } from '../../../ReactSelect/types.js' diff --git a/packages/ui/src/fields/Relationship/index.tsx b/packages/ui/src/fields/Relationship/index.tsx index c42f82bb12..e9c6b08b94 100644 --- a/packages/ui/src/fields/Relationship/index.tsx +++ b/packages/ui/src/fields/Relationship/index.tsx @@ -2,7 +2,7 @@ import type { PaginatedDocs, Where } from 'payload' import { wordBoundariesRegex } from 'payload/shared' -import qs from 'qs' +import * as qs from 'qs-esm' import React, { useCallback, useEffect, useReducer, useRef, useState } from 'react' import type { DocumentDrawerProps } from '../../elements/DocumentDrawer/types.js' diff --git a/packages/ui/src/forms/Form/index.tsx b/packages/ui/src/forms/Form/index.tsx index 8314558947..4cba98def1 100644 --- a/packages/ui/src/forms/Form/index.tsx +++ b/packages/ui/src/forms/Form/index.tsx @@ -11,7 +11,7 @@ import { reduceFieldsToValues, wait, } from 'payload/shared' -import qs from 'qs' +import * as qs from 'qs-esm' import React, { useCallback, useEffect, useReducer, useRef, useState } from 'react' import { toast } from 'sonner' diff --git a/packages/ui/src/hooks/usePayloadAPI.ts b/packages/ui/src/hooks/usePayloadAPI.ts index ab1308d5a4..fadd973eb4 100644 --- a/packages/ui/src/hooks/usePayloadAPI.ts +++ b/packages/ui/src/hooks/usePayloadAPI.ts @@ -1,5 +1,5 @@ 'use client' -import qs from 'qs' +import * as qs from 'qs-esm' import { useEffect, useRef, useState } from 'react' import { useLocale } from '../providers/Locale/index.js' diff --git a/packages/ui/src/providers/Auth/index.tsx b/packages/ui/src/providers/Auth/index.tsx index 262973ef34..26d469e127 100644 --- a/packages/ui/src/providers/Auth/index.tsx +++ b/packages/ui/src/providers/Auth/index.tsx @@ -3,7 +3,7 @@ import type { ClientUser, MeOperationResult, Permissions } from 'payload' import { useModal } from '@faceless-ui/modal' import { usePathname, useRouter } from 'next/navigation.js' -import qs from 'qs' +import * as qs from 'qs-esm' import React, { createContext, useCallback, useContext, useEffect, useState } from 'react' import { toast } from 'sonner' diff --git a/packages/ui/src/providers/DocumentInfo/index.tsx b/packages/ui/src/providers/DocumentInfo/index.tsx index a26bcede4b..af843e3a41 100644 --- a/packages/ui/src/providers/DocumentInfo/index.tsx +++ b/packages/ui/src/providers/DocumentInfo/index.tsx @@ -13,7 +13,7 @@ import type { import { notFound } from 'next/navigation.js' import { reduceFieldsToValues } from 'payload/shared' -import qs from 'qs' +import * as qs from 'qs-esm' import React, { createContext, useCallback, useContext, useEffect, useRef, useState } from 'react' import type { DocumentInfoContext, DocumentInfoProps } from './types.js' diff --git a/packages/ui/src/providers/ListQuery/index.tsx b/packages/ui/src/providers/ListQuery/index.tsx index f5b0845ca9..9546df0435 100644 --- a/packages/ui/src/providers/ListQuery/index.tsx +++ b/packages/ui/src/providers/ListQuery/index.tsx @@ -3,7 +3,7 @@ import type { PaginatedDocs, Where } from 'payload' import { useRouter } from 'next/navigation.js' import { isNumber } from 'payload/shared' -import qs from 'qs' +import * as qs from 'qs-esm' import React, { createContext, useContext } from 'react' import type { Column } from '../../elements/Table/index.js' diff --git a/packages/ui/src/providers/SearchParams/index.tsx b/packages/ui/src/providers/SearchParams/index.tsx index 9ee78f3122..2deac3bafb 100644 --- a/packages/ui/src/providers/SearchParams/index.tsx +++ b/packages/ui/src/providers/SearchParams/index.tsx @@ -1,6 +1,6 @@ 'use client' import { useSearchParams as useNextSearchParams } from 'next/navigation.js' -import qs from 'qs' +import * as qs from 'qs-esm' import React, { createContext, useContext } from 'react' export type SearchParamsContext = { diff --git a/packages/ui/src/providers/Selection/index.tsx b/packages/ui/src/providers/Selection/index.tsx index 6d339bb7f1..3d1f3649f6 100644 --- a/packages/ui/src/providers/Selection/index.tsx +++ b/packages/ui/src/providers/Selection/index.tsx @@ -1,7 +1,7 @@ 'use client' import type { Where } from 'payload' -import qs from 'qs' +import * as qs from 'qs-esm' import React, { createContext, useCallback, useContext, useEffect, useRef, useState } from 'react' import { useLocale } from '../Locale/index.js' diff --git a/packages/ui/src/utilities/api.ts b/packages/ui/src/utilities/api.ts index a0e7eca4a0..8ea381d24a 100644 --- a/packages/ui/src/utilities/api.ts +++ b/packages/ui/src/utilities/api.ts @@ -1,4 +1,4 @@ -import qs from 'qs' +import * as qs from 'qs-esm' type GetOptions = RequestInit & { params?: Record diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index cf89a99337..08b34a7153 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -65,9 +65,6 @@ importers: '@types/prompts': specifier: ^2.4.5 version: 2.4.9 - '@types/qs': - specifier: 6.9.14 - version: 6.9.14 '@types/react': specifier: npm:types-react@19.0.0-beta.2 version: /types-react@19.0.0-beta.2 @@ -618,9 +615,9 @@ importers: path-to-regexp: specifier: ^6.2.1 version: 6.2.2 - qs: - specifier: 6.12.1 - version: 6.12.1 + qs-esm: + specifier: 7.0.2 + version: 7.0.2 react-diff-viewer-continued: specifier: 3.2.6 version: 3.2.6(react-dom@19.0.0-rc-f994737d14-20240522)(react@19.0.0-rc-f994737d14-20240522) @@ -1166,8 +1163,8 @@ importers: packages/richtext-lexical: dependencies: '@faceless-ui/modal': - specifier: 3.0.0-beta.0 - version: 3.0.0-beta.0(react-dom@19.0.0-rc-f994737d14-20240522)(react@19.0.0-rc-f994737d14-20240522) + specifier: 3.0.0-beta.2 + version: 3.0.0-beta.2(react-dom@19.0.0-rc-f994737d14-20240522)(react@19.0.0-rc-f994737d14-20240522) '@faceless-ui/scroll-info': specifier: 2.0.0-beta.0 version: 2.0.0-beta.0(react-dom@19.0.0-rc-f994737d14-20240522)(react@19.0.0-rc-f994737d14-20240522) @@ -1423,8 +1420,8 @@ importers: specifier: 7.0.2 version: 7.0.2(@dnd-kit/core@6.0.8)(react@19.0.0-rc-f994737d14-20240522) '@faceless-ui/modal': - specifier: 3.0.0-beta.0 - version: 3.0.0-beta.0(react-dom@19.0.0-rc-f994737d14-20240522)(react@19.0.0-rc-f994737d14-20240522) + specifier: 3.0.0-beta.2 + version: 3.0.0-beta.2(react-dom@19.0.0-rc-f994737d14-20240522)(react@19.0.0-rc-f994737d14-20240522) '@faceless-ui/scroll-info': specifier: 2.0.0-beta.0 version: 2.0.0-beta.0(react-dom@19.0.0-rc-f994737d14-20240522)(react@19.0.0-rc-f994737d14-20240522) @@ -1458,9 +1455,9 @@ importers: object-to-formdata: specifier: 4.5.1 version: 4.5.1 - qs: - specifier: 6.12.1 - version: 6.12.1 + qs-esm: + specifier: 7.0.2 + version: 7.0.2 react: specifier: ^19.0.0-rc-f994737d14-20240522 version: 19.0.0-rc-f994737d14-20240522 @@ -1516,9 +1513,6 @@ importers: '@types/body-scroll-lock': specifier: ^3.1.0 version: 3.1.2 - '@types/qs': - specifier: 6.9.7 - version: 6.9.7 '@types/react': specifier: npm:types-react@19.0.0-beta.2 version: /types-react@19.0.0-beta.2 @@ -1705,9 +1699,9 @@ importers: payload: specifier: workspace:* version: link:../packages/payload - qs: - specifier: 6.12.1 - version: 6.12.1 + qs-esm: + specifier: 7.0.2 + version: 7.0.2 server-only: specifier: ^0.0.1 version: 0.0.1 @@ -5117,15 +5111,14 @@ packages: resolution: {integrity: sha512-BsWiH1yFGjXXS2yvrf5LyuoSIIbPrGUWob917o+BTKuZ7qJdxX8aJLRxs1fS9n6r7vESrq1OUqb68dANcFXuQQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - /@faceless-ui/modal@3.0.0-beta.0(react-dom@19.0.0-rc-f994737d14-20240522)(react@19.0.0-rc-f994737d14-20240522): - resolution: {integrity: sha512-gZboS0pLMO4THTqAHLmZuxLOE2KyYMN9QOUikd25WSrwPOqdtcgEiRlps/RcOivHA+sowtb1IBitiIWJ0L5Eow==} + /@faceless-ui/modal@3.0.0-beta.2(react-dom@19.0.0-rc-f994737d14-20240522)(react@19.0.0-rc-f994737d14-20240522): + resolution: {integrity: sha512-UmXvz7Iw3KMO4Pm3llZczU4uc5pPQDb6rdqwoBvYDFgWvkraOAHKx0HxSZgwqQvqOhn8joEFBfFp6/Do2562ow==} peerDependencies: react: ^19.0.0-rc-f994737d14-20240522 react-dom: ^19.0.0-rc-f994737d14-20240522 dependencies: - body-scroll-lock: 3.1.5 - focus-trap: 6.9.4 - qs: 6.12.1 + body-scroll-lock: 4.0.0-beta.0 + focus-trap: 7.5.4 react: 19.0.0-rc-f994737d14-20240522 react-dom: 19.0.0-rc-f994737d14-20240522(react@19.0.0-rc-f994737d14-20240522) react-transition-group: 4.4.5(react-dom@19.0.0-rc-f994737d14-20240522)(react@19.0.0-rc-f994737d14-20240522) @@ -7305,10 +7298,6 @@ packages: resolution: {integrity: sha512-5khscbd3SwWMhFqylJBLQ0zIu7c1K6Vz0uBIt915BI3zV0q1nfjRQD3RqSBcPaO6PHEF4ov/t9y89fSiyThlPA==} dev: true - /@types/qs@6.9.7: - resolution: {integrity: sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==} - dev: true - /@types/range-parser@1.2.7: resolution: {integrity: sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==} dev: true @@ -8422,10 +8411,6 @@ packages: - supports-color dev: false - /body-scroll-lock@3.1.5: - resolution: {integrity: sha512-Yi1Xaml0EvNA0OYWxXiYNqY24AfWkbA6w5vxE7GWxtKfzIbZM+Qw+aSmkgsbWzbHiy/RCSkUZBplVxTA+E4jJg==} - dev: false - /body-scroll-lock@4.0.0-beta.0: resolution: {integrity: sha512-a7tP5+0Mw3YlUJcGAKUqIBkYYGlYxk2fnCasq/FUph1hadxlTRjF+gAcZksxANnaMnALjxEddmSi/H3OR8ugcQ==} dev: false @@ -8617,6 +8602,7 @@ packages: function-bind: 1.1.2 get-intrinsic: 1.2.4 set-function-length: 1.2.2 + dev: false /call-me-maybe@1.0.2: resolution: {integrity: sha512-HpX65o1Hnr9HH25ojC1YGs7HCQLq0GCOibSaWER0eNpgJ/Z1MZv2mTc7+xh6WOPxbRVcmgbv4hGU+uSQ/2xFZQ==} @@ -9545,6 +9531,7 @@ packages: es-define-property: 1.0.0 es-errors: 1.3.0 gopd: 1.0.1 + dev: false /define-lazy-prop@3.0.0: resolution: {integrity: sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==} @@ -9993,10 +9980,12 @@ packages: engines: {node: '>= 0.4'} dependencies: get-intrinsic: 1.2.4 + dev: false /es-errors@1.3.0: resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} engines: {node: '>= 0.4'} + dev: false /es-get-iterator@1.1.3: resolution: {integrity: sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw==} @@ -10968,10 +10957,10 @@ packages: /flatted@3.3.1: resolution: {integrity: sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==} - /focus-trap@6.9.4: - resolution: {integrity: sha512-v2NTsZe2FF59Y+sDykKY+XjqZ0cPfhq/hikWVL88BqLivnNiEffAsac6rP6H45ff9wG9LL5ToiDqrLEP9GX9mw==} + /focus-trap@7.5.4: + resolution: {integrity: sha512-N7kHdlgsO/v+iD/dMoJKtsSqs5Dz/dXZVebRgJw23LDk+jMi/974zyiOYDziY2JPp8xivq9BmUGwIJMiuSBi7w==} dependencies: - tabbable: 5.3.3 + tabbable: 6.2.0 dev: false /follow-redirects@1.15.6(debug@4.3.4): @@ -11155,6 +11144,7 @@ packages: has-proto: 1.0.3 has-symbols: 1.0.3 hasown: 2.0.2 + dev: false /get-package-type@0.1.0: resolution: {integrity: sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==} @@ -11382,6 +11372,7 @@ packages: resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} dependencies: get-intrinsic: 1.2.4 + dev: false /got@11.8.6: resolution: {integrity: sha512-6tfZ91bOr7bOXnK7PRDCGBLa1H4U080YHNaAQ2KsMGlLEzRbk44nsZF2E1IeRc3vtJHPVbKCYgdFbaGO2ljd8g==} @@ -11478,14 +11469,17 @@ packages: resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==} dependencies: es-define-property: 1.0.0 + dev: false /has-proto@1.0.3: resolution: {integrity: sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==} engines: {node: '>= 0.4'} + dev: false /has-symbols@1.0.3: resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} engines: {node: '>= 0.4'} + dev: false /has-tostringtag@1.0.2: resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} @@ -13768,6 +13762,7 @@ packages: /object-inspect@1.13.1: resolution: {integrity: sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==} + dev: false /object-is@1.1.6: resolution: {integrity: sha512-F8cZ+KfGlSGi09lJT7/Nd6KJZ9ygtvYC0/UYYLI9nmQKLMnydpB9yvbv9K1uSkEu7FU9vYPmVwLg328tX+ot3Q==} @@ -15188,6 +15183,10 @@ packages: /pure-rand@6.1.0: resolution: {integrity: sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA==} + /qs-esm@7.0.2: + resolution: {integrity: sha512-D8NAthKSD7SGn748v+GLaaO6k08Mvpoqroa35PqIQC4gtUa8/Pb/k+r0m0NnGBVbHDP1gKZ2nVywqfMisRhV5A==} + engines: {node: '>=18'} + /qs@6.11.0: resolution: {integrity: sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==} engines: {node: '>=0.6'} @@ -15200,6 +15199,7 @@ packages: engines: {node: '>=0.6'} dependencies: side-channel: 1.0.6 + dev: false /querystringify@2.2.0: resolution: {integrity: sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==} @@ -16137,6 +16137,7 @@ packages: get-intrinsic: 1.2.4 gopd: 1.0.1 has-property-descriptors: 1.0.2 + dev: false /set-function-name@2.0.2: resolution: {integrity: sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==} @@ -16244,6 +16245,7 @@ packages: es-errors: 1.3.0 get-intrinsic: 1.2.4 object-inspect: 1.13.1 + dev: false /sift@16.0.1: resolution: {integrity: sha512-Wv6BjQ5zbhW7VFefWusVP33T/EM0vYikCaQ2qR8yULbsilAT8/wQaXvuQ3ptGLpoKx+lihJE3y2UTgKDyyNHZQ==} @@ -16808,10 +16810,6 @@ packages: resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==} dev: true - /tabbable@5.3.3: - resolution: {integrity: sha512-QD9qKY3StfbZqWOPLp0++pOrAVb/HbUi5xCc8cUo4XjP19808oaMiDzn0leBY5mCespIBM0CIZePzZjgzR83kA==} - dev: false - /tabbable@6.2.0: resolution: {integrity: sha512-Cat63mxsVJlzYvN51JmVXIgNoUokrIaT2zLclCXjRd8boZ0004U4KCs/sToJ75C6sdlByWxpYnb5Boif1VSFew==} diff --git a/test/admin/e2e/2/e2e.spec.ts b/test/admin/e2e/2/e2e.spec.ts index 15e777e44b..88f33f31ee 100644 --- a/test/admin/e2e/2/e2e.spec.ts +++ b/test/admin/e2e/2/e2e.spec.ts @@ -3,7 +3,7 @@ import type { Page } from '@playwright/test' import { expect, test } from '@playwright/test' import { mapAsync } from 'payload' import { wait } from 'payload/shared' -import qs from 'qs' +import * as qs from 'qs-esm' import type { Config, Geo, Post } from '../../payload-types.js' diff --git a/test/buildConfigWithDefaults.ts b/test/buildConfigWithDefaults.ts index bd0e36f4ff..03da180f01 100644 --- a/test/buildConfigWithDefaults.ts +++ b/test/buildConfigWithDefaults.ts @@ -1,4 +1,4 @@ -import type { SanitizedConfig, Config } from 'payload' +import type { Config, SanitizedConfig } from 'payload' import { mongooseAdapter } from '@payloadcms/db-mongodb' import { postgresAdapter } from '@payloadcms/db-postgres' @@ -163,12 +163,6 @@ export async function buildConfigWithDefaults( ...testConfig, - typescript: { - declare: { - ignoreTSError: true, - }, - ...testConfig?.typescript, - }, i18n: { supportedLanguages: { de, @@ -177,6 +171,12 @@ export async function buildConfigWithDefaults( }, ...(testConfig?.i18n || {}), }, + typescript: { + declare: { + ignoreTSError: true, + }, + ...testConfig?.typescript, + }, } config.admin = { diff --git a/test/helpers/NextRESTClient.ts b/test/helpers/NextRESTClient.ts index b9a3847165..0a09ed5868 100644 --- a/test/helpers/NextRESTClient.ts +++ b/test/helpers/NextRESTClient.ts @@ -1,5 +1,5 @@ import type { SanitizedConfig, Where } from 'payload' -import type { ParsedQs } from 'qs' +import type { ParsedQs } from 'qs-esm' import { REST_DELETE as createDELETE, @@ -8,7 +8,7 @@ import { REST_PATCH as createPATCH, REST_POST as createPOST, } from '@payloadcms/next/routes' -import qs from 'qs' +import * as qs from 'qs-esm' import { devUser } from '../credentials.js' diff --git a/test/helpers/rest.ts b/test/helpers/rest.ts index b08a46871a..97e10b972e 100644 --- a/test/helpers/rest.ts +++ b/test/helpers/rest.ts @@ -3,7 +3,7 @@ import type { Where } from 'payload' import type { Config } from 'payload' import type { PaginatedDocs } from 'payload' -import qs from 'qs' +import * as qs from 'qs-esm' import { devUser } from '../credentials.js' diff --git a/test/live-preview/app/live-preview/_components/CollectionArchive/PopulateByCollection/index.tsx b/test/live-preview/app/live-preview/_components/CollectionArchive/PopulateByCollection/index.tsx index 242d2ddb18..cc365cf6ad 100644 --- a/test/live-preview/app/live-preview/_components/CollectionArchive/PopulateByCollection/index.tsx +++ b/test/live-preview/app/live-preview/_components/CollectionArchive/PopulateByCollection/index.tsx @@ -1,6 +1,6 @@ 'use client' -import qs from 'qs' +import * as qs from 'qs-esm' import React, { Fragment, useCallback, useEffect, useRef, useState } from 'react' import type { Post } from '../../../../../payload-types.js' diff --git a/test/package.json b/test/package.json index 12258b1d2c..7269626772 100644 --- a/test/package.json +++ b/test/package.json @@ -58,7 +58,7 @@ "jwt-decode": "4.0.0", "lexical": "0.15.0", "payload": "workspace:*", - "qs": "6.12.1", + "qs-esm": "7.0.2", "server-only": "^0.0.1", "slate": "0.91.4", "tempy": "^1.0.1",