diff --git a/__mocks__/payload-config.ts b/__mocks__/payload-config.ts new file mode 100644 index 000000000..9869c394b --- /dev/null +++ b/__mocks__/payload-config.ts @@ -0,0 +1,3 @@ +export default typeof process.env.PAYLOAD_CONFIG_PATH === 'string' + ? require(process.env.PAYLOAD_CONFIG_PATH) + : {} diff --git a/jest.config.js b/jest.config.js index a47a08039..2b7cdc7b7 100644 --- a/jest.config.js +++ b/jest.config.js @@ -1,9 +1,10 @@ -module.exports = { +const customJestConfig = { globalSetup: './test/jest.setup.ts', moduleNameMapper: { '\\.(css|scss)$': '/packages/payload/src/bundlers/mocks/emptyModule.js', '\\.(jpg|jpeg|png|gif|eot|otf|webp|svg|ttf|woff|woff2|mp4|webm|wav|mp3|m4a|aac|oga)$': '/packages/payload/src/bundlers/mocks/fileMock.js', + 'payload-config': '/__mocks__/payload-config.ts', }, testEnvironment: 'node', testMatch: ['/packages/payload/src/**/*.spec.ts', '/test/**/*int.spec.ts'], @@ -13,3 +14,5 @@ module.exports = { }, verbose: true, } + +module.exports = customJestConfig diff --git a/package.json b/package.json index a9d1e2a94..cf2558e13 100644 --- a/package.json +++ b/package.json @@ -80,16 +80,18 @@ "lexical": "0.12.5", "lint-staged": "^14.0.1", "minimist": "1.2.8", - "mongodb-memory-server": "8.13.0", - "next": "14.0.2", + "next": "14.1.1-canary.26", "node-fetch": "2.6.12", "nodemon": "3.0.2", + "pino": "8.15.0", + "pino-pretty": "10.2.0", "prettier": "^3.0.3", "prompts": "2.4.2", "qs": "6.11.2", "read-stream": "^2.1.1", "rimraf": "3.0.2", "semver": "^7.5.4", + "sharp": "0.32.6", "shelljs": "0.8.5", "simple-git": "^3.20.0", "slash": "3.0.0", @@ -102,7 +104,6 @@ }, "peerDependencies": { "react": "18.2.0", - "react-i18next": "11.18.6", "react-router-dom": "5.3.4" }, "engines": { diff --git a/packages/db-mongodb/package.json b/packages/db-mongodb/package.json index f4044b7bc..73a1c738a 100644 --- a/packages/db-mongodb/package.json +++ b/packages/db-mongodb/package.json @@ -27,18 +27,17 @@ "prepublishOnly": "pnpm clean && pnpm build" }, "dependencies": { + "bson-ext": "^4.0.3", "bson-objectid": "2.0.4", "deepmerge": "4.3.1", "get-port": "5.1.1", "mongoose": "6.12.0", - "mongoose-aggregate-paginate-v2": "1.0.6", "mongoose-paginate-v2": "1.7.22", "prompts": "2.4.2", "uuid": "9.0.0" }, "devDependencies": { "@payloadcms/eslint-config": "workspace:*", - "@types/mongoose-aggregate-paginate-v2": "1.0.9", "mongodb-memory-server": "8.13.0", "payload": "workspace:*" }, diff --git a/packages/db-mongodb/src/connect.ts b/packages/db-mongodb/src/connect.ts index 7ec257952..d826e841c 100644 --- a/packages/db-mongodb/src/connect.ts +++ b/packages/db-mongodb/src/connect.ts @@ -24,7 +24,7 @@ export const connect: Connect = async function connect(this: MongooseAdapter, pa useFacet: undefined, } - if (process.env.NODE_ENV === 'test') { + if ([process.env.APP_ENV, process.env.NODE_ENV].includes('test')) { if (process.env.PAYLOAD_TEST_MONGO_URL) { urlToConnect = process.env.PAYLOAD_TEST_MONGO_URL } else { diff --git a/packages/db-mongodb/src/init.ts b/packages/db-mongodb/src/init.ts index f02c83ddf..d74a4361e 100644 --- a/packages/db-mongodb/src/init.ts +++ b/packages/db-mongodb/src/init.ts @@ -4,7 +4,6 @@ import type { Init } from 'payload/database' import type { SanitizedCollectionConfig } from 'payload/types' import mongoose from 'mongoose' -import mongooseAggregatePaginate from 'mongoose-aggregate-paginate-v2' import paginate from 'mongoose-paginate-v2' import { buildVersionCollectionFields, @@ -45,10 +44,6 @@ export const init: Init = async function init(this: MongooseAdapter) { }), ) - if (collection.versions?.drafts) { - versionSchema.plugin(mongooseAggregatePaginate) - } - const model = mongoose.model( versionModelName, versionSchema, diff --git a/packages/db-mongodb/src/types.ts b/packages/db-mongodb/src/types.ts index b88b4c88f..e5dcc866e 100644 --- a/packages/db-mongodb/src/types.ts +++ b/packages/db-mongodb/src/types.ts @@ -1,11 +1,4 @@ -import type { - AggregatePaginateModel, - IndexDefinition, - IndexOptions, - Model, - PaginateModel, - SchemaOptions, -} from 'mongoose' +import type { IndexDefinition, IndexOptions, Model, PaginateModel, SchemaOptions } from 'mongoose' import type { Payload } from 'payload' import type { SanitizedConfig } from 'payload/config' import type { @@ -34,11 +27,7 @@ import type { import type { BuildQueryArgs } from './queries/buildQuery' -export interface CollectionModel - extends Model, - PaginateModel, - AggregatePaginateModel, - PassportLocalModel { +export interface CollectionModel extends Model, PaginateModel, PassportLocalModel { /** 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 } diff --git a/packages/db-postgres/src/upsertRow/index.ts b/packages/db-postgres/src/upsertRow/index.ts index 1482818e2..3ac755ab5 100644 --- a/packages/db-postgres/src/upsertRow/index.ts +++ b/packages/db-postgres/src/upsertRow/index.ts @@ -286,7 +286,7 @@ export const upsertRow = async ({ message: req.t('error:valueMustBeUnique'), }, ], - req?.t ?? i18nInit(req.payload.config.i18n).t, + req.t, ) : error } diff --git a/packages/dev/mocks.js b/packages/dev/mocks.js new file mode 100644 index 000000000..d7e6099ea --- /dev/null +++ b/packages/dev/mocks.js @@ -0,0 +1 @@ +export const mongooseAdapter = () => ({}) diff --git a/packages/dev/next.config.js b/packages/dev/next.config.js index 6bfa4586c..612b0c437 100644 --- a/packages/dev/next.config.js +++ b/packages/dev/next.config.js @@ -8,8 +8,6 @@ const nextConfig = { }, serverComponentsExternalPackages: ['drizzle-kit', 'drizzle-kit/utils', 'pino', 'pino-pretty'], }, - reactStrictMode: false, - // transpilePackages: ['@payloadcms/db-mongodb', 'mongoose'], webpack: (config) => { return { ...config, @@ -19,15 +17,30 @@ const nextConfig = { 'drizzle-kit/utils', 'pino', 'pino-pretty', - 'mongoose', 'sharp', ], + ignoreWarnings: [ + ...(config.ignoreWarnings || []), + { module: /node_modules\/mongodb\/lib\/utils\.js/ }, + { file: /node_modules\/mongodb\/lib\/utils\.js/ }, + ], resolve: { ...config.resolve, alias: { ...config.resolve.alias, graphql$: path.resolve(__dirname, '../next/node_modules/graphql/index.js'), 'graphql-http$': path.resolve(__dirname, '../next/node_modules/graphql-http/index.js'), + 'payload-config$': path.resolve(process.env.PAYLOAD_CONFIG_PATH), + }, + fallback: { + ...config.resolve.fallback, + '@aws-sdk/credential-providers': false, + '@mongodb-js/zstd': false, + aws4: false, + kerberos: false, + 'mongodb-client-encryption': false, + snappy: false, + 'supports-color': false, }, }, } diff --git a/packages/dev/server.js b/packages/dev/server.js new file mode 100644 index 000000000..86f7a6130 --- /dev/null +++ b/packages/dev/server.js @@ -0,0 +1,6 @@ +const { bootAdminPanel } = require('../../test/helpers/bootAdminPanel.ts') + +bootAdminPanel({ + appDir: __dirname, + port: 3000, +}) diff --git a/packages/dev/src/payload.config.ts b/packages/dev/src/payload.config.ts index 4e3ef199f..f2b780494 100644 --- a/packages/dev/src/payload.config.ts +++ b/packages/dev/src/payload.config.ts @@ -36,7 +36,6 @@ export default buildConfig({ // title: 'Test Page', // }, // }) - // // await payload.update({ // collection: 'pages', // id: page.id, diff --git a/packages/dev/tsconfig.json b/packages/dev/tsconfig.json index cd90be995..bd11f8a1d 100644 --- a/packages/dev/tsconfig.json +++ b/packages/dev/tsconfig.json @@ -17,21 +17,20 @@ "allowImportingTsExtensions": true, "plugins": [ { - "name": "next" - } + "name": "next", + }, ], "paths": { "payload": ["../payload/src"], "payload/*": ["../payload/src/exports/*"], - "payload-config": ["./src/payload.config.ts"], "@payloadcms/db-mongodb": ["../db-mongodb/src"], "@payloadcms/richtext-lexical": ["../richtext-lexical/src"], "@payloadcms/ui/*": ["../ui/src/exports/*"], "@payloadcms/translations": ["../translations/src/exports/index.ts"], "@payloadcms/translations/client": ["../translations/src/all"], "@payloadcms/translations/api": ["../translations/src/all"], - "@payloadcms/next/*": ["../next/src/*"] - } + "@payloadcms/next/*": ["../next/src/*"], + }, }, "include": ["next-env.d.ts", ".next/types/**/*.ts", "**/*.ts", "**/*.tsx"], "exclude": ["node_modules"], @@ -43,6 +42,6 @@ { "path": "../translations" }, { "path": "../db-mongodb" }, { "path": "../db-postgres" }, - { "path": "../richtext-lexical" } - ] + { "path": "../richtext-lexical" }, + ], } diff --git a/packages/graphql/src/resolvers/types.ts b/packages/graphql/src/resolvers/types.ts index c06a82355..42332d80f 100644 --- a/packages/graphql/src/resolvers/types.ts +++ b/packages/graphql/src/resolvers/types.ts @@ -2,5 +2,7 @@ import { PayloadRequest } from 'payload/types' export type Context = { req: PayloadRequest - headers: Headers + headers: { + [key: string]: string + } } diff --git a/packages/next/package.json b/packages/next/package.json index c85e725b4..07b920439 100644 --- a/packages/next/package.json +++ b/packages/next/package.json @@ -59,8 +59,7 @@ }, "peerDependencies": { "http-status": "1.6.2", - "i18next": "22.5.1", - "next": "^14.0.0", + "next": "14.1.1-canary.26", "payload": "^2.0.0" }, "publishConfig": { diff --git a/packages/next/src/routes/graphql/handler.ts b/packages/next/src/routes/graphql/handler.ts index 92635523f..23c48c2ac 100644 --- a/packages/next/src/routes/graphql/handler.ts +++ b/packages/next/src/routes/graphql/handler.ts @@ -111,8 +111,13 @@ export const POST = (config: Promise) => async (request: Reques validationRules: (request, args, defaultRules) => defaultRules.concat(validationRules(args)), })(originalRequest) + const resHeaders = new Headers(apiResponse.headers) + for (let key in headers) { + resHeaders.append(key, headers[key]) + } + return new Response(apiResponse.body, { status: apiResponse.status, - headers: new Headers(headers), + headers: new Headers(resHeaders), }) } diff --git a/packages/next/tsconfig.json b/packages/next/tsconfig.json index 9208191c9..72752e023 100644 --- a/packages/next/tsconfig.json +++ b/packages/next/tsconfig.json @@ -7,7 +7,6 @@ "outDir": "./dist" /* Specify an output folder for all emitted files. */, "rootDir": "./src" /* Specify the root folder within your source files. */, "paths": { - "payload-config": ["./src/config.ts"], "@payloadcms/graphql": ["../graphql/dist/index.ts"], "@payloadcms/ui": ["../ui/src/exports/index.ts"], "@payloadcms/translations/*": ["../translations/dist/*"] diff --git a/packages/payload/src/auth/strategies/apiKey.ts b/packages/payload/src/auth/strategies/apiKey.ts index 32d775bfa..445743baf 100644 --- a/packages/payload/src/auth/strategies/apiKey.ts +++ b/packages/payload/src/auth/strategies/apiKey.ts @@ -9,7 +9,7 @@ export const APIKeyAuthentication = async ({ headers, payload }) => { const authHeader = headers.get('Authorization') - if (authHeader.startsWith(`${collectionConfig.slug} API-Key `)) { + if (authHeader?.startsWith(`${collectionConfig.slug} API-Key `)) { const apiKey = authHeader.replace(`${collectionConfig.slug} API-Key `, '') const apiKeyIndex = crypto.createHmac('sha1', payload.secret).update(apiKey).digest('hex') @@ -38,8 +38,6 @@ export const APIKeyAuthentication = collection: collectionConfig.slug, depth: collectionConfig.auth.depth, overrideAccess: true, - // TODO(JAMES)(REVIEW): had to remove with new pattern - // req, where, }) diff --git a/packages/payload/src/bin/build.ts b/packages/payload/src/bin/build.ts index 3d9d27f3a..e105895bf 100755 --- a/packages/payload/src/bin/build.ts +++ b/packages/payload/src/bin/build.ts @@ -8,8 +8,6 @@ export const build = async (): Promise => { disableOnInit: true, local: true, }) - - await payload.config.admin.bundler.build(payload.config) } // when build.js is launched directly diff --git a/packages/payload/src/config/types.ts b/packages/payload/src/config/types.ts index e8335acf0..1fca7e8e5 100644 --- a/packages/payload/src/config/types.ts +++ b/packages/payload/src/config/types.ts @@ -238,7 +238,7 @@ export type PayloadHandler = ({ /** * Docs: https://payloadcms.com/docs/rest-api/overview#custom-endpoints */ -export type Endpoint = { +export type Endpoint = { /** Extension point to add your custom data. */ custom?: Record /** diff --git a/packages/payload/src/index.ts b/packages/payload/src/index.ts index a71efe1d4..1e8ec01ee 100644 --- a/packages/payload/src/index.ts +++ b/packages/payload/src/index.ts @@ -47,7 +47,6 @@ import { decrypt, encrypt } from './auth/crypto' import { APIKeyAuthentication } from './auth/strategies/apiKey' import { JWTAuthentication } from './auth/strategies/jwt' import localOperations from './collections/operations/local' -import findConfig from './config/find' import buildEmail from './email/build' import { defaults as emailDefaults } from './email/defaults' import sendEmail from './email/sendEmail' @@ -311,14 +310,14 @@ export class BasePayload { this.config = await options.config // TODO(JARROD/JAMES): can we keep this? - const configPath = findConfig() + // const configPath = findConfig() this.config = { ...this.config, - paths: { - config: configPath, - configDir: path.dirname(configPath), - rawConfig: configPath, - }, + // paths: { + // config: configPath, + // configDir: path.dirname(configPath), + // rawConfig: configPath, + // }, } if (!this.config.secret) { diff --git a/packages/richtext-slate/src/field/elements/Button.tsx b/packages/richtext-slate/src/field/elements/Button.tsx index 849713bb3..6927be59c 100644 --- a/packages/richtext-slate/src/field/elements/Button.tsx +++ b/packages/richtext-slate/src/field/elements/Button.tsx @@ -1,7 +1,7 @@ 'use client' import type { ElementType } from 'react' -import { Tooltip } from 'payload/components' +import { Tooltip } from '@payloadcms/ui' import React, { useCallback, useState } from 'react' import { useSlate } from 'slate-react' diff --git a/packages/richtext-slate/src/field/index.tsx b/packages/richtext-slate/src/field/index.tsx index a913024d1..4ac9be4b2 100644 --- a/packages/richtext-slate/src/field/index.tsx +++ b/packages/richtext-slate/src/field/index.tsx @@ -1,5 +1,5 @@ 'use client' -import { ShimmerEffect } from 'payload/components' +import { ShimmerEffect } from '@payloadcms/ui' import React, { Suspense, lazy } from 'react' import type { FieldProps } from '../types' diff --git a/packages/richtext-slate/src/index.ts b/packages/richtext-slate/src/index.ts index d639a1c79..7e33db4ae 100644 --- a/packages/richtext-slate/src/index.ts +++ b/packages/richtext-slate/src/index.ts @@ -1,6 +1,7 @@ import type { RichTextAdapter } from 'payload/types' -import { withMergedProps, withNullableJSONSchemaType } from 'payload/utilities' +import { withMergedProps } from '@payloadcms/ui/utilities' +import { withNullableJSONSchemaType } from 'payload/utilities' import type { AdapterArguments } from './types' diff --git a/packages/ui/src/exports/elements.ts b/packages/ui/src/exports/elements.ts index eb164c259..f63eeea74 100644 --- a/packages/ui/src/exports/elements.ts +++ b/packages/ui/src/exports/elements.ts @@ -34,3 +34,4 @@ export { useDrawerSlug } from '../elements/Drawer/useDrawerSlug' export { default as Popup } from '../elements/Popup' // export { useThumbnail } from '../elements/Upload' export { Translation } from '../elements/Translation' +export { Tooltip } from '../elements/Tooltip' diff --git a/packages/ui/src/forms/fields/Relationship/index.tsx b/packages/ui/src/forms/fields/Relationship/index.tsx index 9081796eb..b1418742f 100644 --- a/packages/ui/src/forms/fields/Relationship/index.tsx +++ b/packages/ui/src/forms/fields/Relationship/index.tsx @@ -290,11 +290,10 @@ const Relationship: React.FC = (props) => { await priorRelation const idsToLoad = ids.filter((id) => { - return !options.find( - (optionGroup) => - optionGroup?.options?.find( - (option) => option.value === id && option.relationTo === relation, - ), + return !options.find((optionGroup) => + optionGroup?.options?.find( + (option) => option.value === id && option.relationTo === relation, + ), ) }) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index f1e604407..0686df439 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -17,9 +17,6 @@ importers: react: specifier: 18.2.0 version: 18.2.0 - react-i18next: - specifier: 11.18.6 - version: 11.18.6(i18next@22.5.1)(react-dom@18.2.0)(react@18.2.0) react-router-dom: specifier: 5.3.4 version: 5.3.4(react@18.2.0) @@ -119,7 +116,7 @@ importers: version: 8.6.0 drizzle-orm: specifier: 0.28.5 - version: 0.28.5(@libsql/client@0.3.4)(@types/pg@8.10.2)(pg@8.11.3) + version: 0.28.5 express: specifier: 4.18.2 version: 4.18.2 @@ -165,18 +162,21 @@ importers: minimist: specifier: 1.2.8 version: 1.2.8 - mongodb-memory-server: - specifier: 8.13.0 - version: 8.13.0 next: - specifier: 14.0.2 - version: 14.0.2(@babel/core@7.22.20)(react-dom@18.2.0)(react@18.2.0) + specifier: 14.1.1-canary.26 + version: 14.1.1-canary.26(@babel/core@7.22.20)(react-dom@18.2.0)(react@18.2.0) node-fetch: specifier: 2.6.12 version: 2.6.12 nodemon: specifier: 3.0.2 version: 3.0.2 + pino: + specifier: 8.15.0 + version: 8.15.0 + pino-pretty: + specifier: 10.2.0 + version: 10.2.0 prettier: specifier: ^3.0.3 version: 3.0.3 @@ -195,6 +195,9 @@ importers: semver: specifier: ^7.5.4 version: 7.5.4 + sharp: + specifier: 0.32.6 + version: 0.32.6 shelljs: specifier: 0.8.5 version: 0.8.5 @@ -286,6 +289,9 @@ importers: packages/db-mongodb: dependencies: + bson-ext: + specifier: ^4.0.3 + version: 4.0.3 bson-objectid: specifier: 2.0.4 version: 2.0.4 @@ -298,9 +304,6 @@ importers: mongoose: specifier: 6.12.0 version: 6.12.0 - mongoose-aggregate-paginate-v2: - specifier: 1.0.6 - version: 1.0.6 mongoose-paginate-v2: specifier: 1.7.22 version: 1.7.22 @@ -314,9 +317,6 @@ importers: '@payloadcms/eslint-config': specifier: workspace:* version: link:../eslint-config-payload - '@types/mongoose-aggregate-paginate-v2': - specifier: 1.0.9 - version: 1.0.9 mongodb-memory-server: specifier: 8.13.0 version: 8.13.0 @@ -546,12 +546,9 @@ importers: http-status: specifier: 1.6.2 version: 1.6.2 - i18next: - specifier: 22.5.1 - version: 22.5.1 next: - specifier: ^14.0.0 - version: 14.0.3(@babel/core@7.22.20)(react-dom@18.2.0)(react@18.2.0)(sass@1.70.0) + specifier: 14.1.1-canary.26 + version: 14.1.1-canary.26(@babel/core@7.22.20)(react-dom@18.2.0)(react@18.2.0)(sass@1.70.0) path-to-regexp: specifier: ^6.2.1 version: 6.2.1 @@ -1753,10 +1750,10 @@ packages: '@aws-sdk/credential-provider-sso': 3.414.0 '@aws-sdk/credential-provider-web-identity': 3.413.0 '@aws-sdk/types': 3.413.0 - '@smithy/credential-provider-imds': 2.0.11 - '@smithy/property-provider': 2.0.9 - '@smithy/shared-ini-file-loader': 2.0.10 - '@smithy/types': 2.3.2 + '@smithy/credential-provider-imds': 2.0.16 + '@smithy/property-provider': 2.0.12 + '@smithy/shared-ini-file-loader': 2.2.0 + '@smithy/types': 2.3.5 tslib: 2.6.2 transitivePeerDependencies: - aws-crt @@ -1789,10 +1786,10 @@ packages: '@aws-sdk/credential-provider-sso': 3.414.0 '@aws-sdk/credential-provider-web-identity': 3.413.0 '@aws-sdk/types': 3.413.0 - '@smithy/credential-provider-imds': 2.0.11 - '@smithy/property-provider': 2.0.9 - '@smithy/shared-ini-file-loader': 2.0.10 - '@smithy/types': 2.3.2 + '@smithy/credential-provider-imds': 2.0.16 + '@smithy/property-provider': 2.0.12 + '@smithy/shared-ini-file-loader': 2.2.0 + '@smithy/types': 2.3.5 tslib: 2.6.2 transitivePeerDependencies: - aws-crt @@ -2160,7 +2157,7 @@ packages: '@smithy/middleware-stack': 2.0.5 '@smithy/node-config-provider': 2.1.1 '@smithy/node-http-handler': 2.1.7 - '@smithy/property-provider': 2.0.9 + '@smithy/property-provider': 2.0.12 '@smithy/protocol-http': 3.0.7 '@smithy/shared-ini-file-loader': 2.0.10 '@smithy/smithy-client': 2.1.11 @@ -3804,6 +3801,7 @@ packages: - bufferutil - encoding - utf-8-validate + dev: false /@libsql/hrana-client@0.5.5: resolution: {integrity: sha512-i+hDBpiV719poqEiHupUUZYKJ9YSbCRFe5Q2PQ0v3mHIftePH6gayLjp2u6TXbqbO/Dv6y8yyvYlBXf/kFfRZA==} @@ -3816,6 +3814,7 @@ packages: - bufferutil - encoding - utf-8-validate + dev: false /@libsql/isomorphic-fetch@0.1.10: resolution: {integrity: sha512-dH0lMk50gKSvEKD78xWMu60SY1sjp1sY//iFLO0XMmBwfVfG136P9KOk06R4maBdlb8KMXOzJ1D28FR5ZKnHTA==} @@ -3824,6 +3823,7 @@ packages: node-fetch: 2.6.12 transitivePeerDependencies: - encoding + dev: false /@libsql/isomorphic-ws@0.1.5: resolution: {integrity: sha512-DtLWIH29onUYR00i0GlQ3UdcTRC6EP4u9w/h9LxpUZJWRMARk6dQwZ6Jkd+QdwVpuAOrdxt18v0K2uIYR3fwFg==} @@ -3833,6 +3833,7 @@ packages: transitivePeerDependencies: - bufferutil - utf-8-validate + dev: false /@mole-inc/bin-wrapper@8.0.1: resolution: {integrity: sha512-sTGoeZnjI8N4KS+sW2AN95gDBErhAguvkw/tWdCjeM8bvxpz5lqrnd0vOJABA1A+Ic3zED7PYoLP/RANLgVotA==} @@ -3877,29 +3878,21 @@ packages: /@next/env@14.0.2: resolution: {integrity: sha512-HAW1sljizEaduEOes/m84oUqeIDAUYBR1CDwu2tobNlNDFP3cSm9d6QsOsGeNlIppU1p/p1+bWbYCbvwjFiceA==} - - /@next/env@14.0.3: - resolution: {integrity: sha512-7xRqh9nMvP5xrW4/+L0jgRRX+HoNRGnfJpD+5Wq6/13j3dsdzxO3BCXn7D3hMqsDb+vjZnJq+vI7+EtgrYZTeA==} dev: false /@next/env@14.1.0: resolution: {integrity: sha512-Py8zIo+02ht82brwwhTg36iogzFqGLPXlRGKQw5s+qP/kMNc4MAyDeEwBKDijk6zTIbegEgu8Qy7C1LboslQAw==} dev: false + /@next/env@14.1.1-canary.26: + resolution: {integrity: sha512-NpwQaDqrJSREns70aTeh6vC44GPr2qHgoZdk2SPEJmuq1rD+n21FJVn5LtueUbHSZ0RcyPfATYfvdLGnsnZybw==} + /@next/swc-darwin-arm64@14.0.2: resolution: {integrity: sha512-i+jQY0fOb8L5gvGvojWyZMfQoQtDVB2kYe7fufOEiST6sicvzI2W5/EXo4lX5bLUjapHKe+nFxuVv7BA+Pd7LQ==} engines: {node: '>= 10'} cpu: [arm64] os: [darwin] requiresBuild: true - optional: true - - /@next/swc-darwin-arm64@14.0.3: - resolution: {integrity: sha512-64JbSvi3nbbcEtyitNn2LEDS/hcleAFpHdykpcnrstITFlzFgB/bW0ER5/SJJwUPj+ZPY+z3e+1jAfcczRLVGw==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [darwin] - requiresBuild: true dev: false optional: true @@ -3912,16 +3905,16 @@ packages: dev: false optional: true - /@next/swc-darwin-x64@14.0.2: - resolution: {integrity: sha512-zRCAO0d2hW6gBEa4wJaLn+gY8qtIqD3gYd9NjruuN98OCI6YyelmhWVVLlREjS7RYrm9OUQIp/iVJFeB6kP1hg==} + /@next/swc-darwin-arm64@14.1.1-canary.26: + resolution: {integrity: sha512-me7bG+MrBI1awUn6bqFaKYWSp3Kw1A0mSLvMKwpFdjJYut4Alw5edUZF9pzDDoYAPYunvKqn55RuSMcIwEhqgw==} engines: {node: '>= 10'} - cpu: [x64] + cpu: [arm64] os: [darwin] requiresBuild: true optional: true - /@next/swc-darwin-x64@14.0.3: - resolution: {integrity: sha512-RkTf+KbAD0SgYdVn1XzqE/+sIxYGB7NLMZRn9I4Z24afrhUpVJx6L8hsRnIwxz3ERE2NFURNliPjJ2QNfnWicQ==} + /@next/swc-darwin-x64@14.0.2: + resolution: {integrity: sha512-zRCAO0d2hW6gBEa4wJaLn+gY8qtIqD3gYd9NjruuN98OCI6YyelmhWVVLlREjS7RYrm9OUQIp/iVJFeB6kP1hg==} engines: {node: '>= 10'} cpu: [x64] os: [darwin] @@ -3938,16 +3931,16 @@ packages: dev: false optional: true - /@next/swc-linux-arm64-gnu@14.0.2: - resolution: {integrity: sha512-tSJmiaon8YaKsVhi7GgRizZoV0N1Sx5+i+hFTrCKKQN7s3tuqW0Rov+RYdPhAv/pJl4qiG+XfSX4eJXqpNg3dA==} + /@next/swc-darwin-x64@14.1.1-canary.26: + resolution: {integrity: sha512-ObPe53eJNan5TOIRWZmTpr3Dt9fvb9fph8VncwLnL1joNfgsfFCNq/UYZEE0eWjF1HsL/sfKP7ke8hn8qke+iA==} engines: {node: '>= 10'} - cpu: [arm64] - os: [linux] + cpu: [x64] + os: [darwin] requiresBuild: true optional: true - /@next/swc-linux-arm64-gnu@14.0.3: - resolution: {integrity: sha512-3tBWGgz7M9RKLO6sPWC6c4pAw4geujSwQ7q7Si4d6bo0l6cLs4tmO+lnSwFp1Tm3lxwfMk0SgkJT7EdwYSJvcg==} + /@next/swc-linux-arm64-gnu@14.0.2: + resolution: {integrity: sha512-tSJmiaon8YaKsVhi7GgRizZoV0N1Sx5+i+hFTrCKKQN7s3tuqW0Rov+RYdPhAv/pJl4qiG+XfSX4eJXqpNg3dA==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] @@ -3964,16 +3957,16 @@ packages: dev: false optional: true - /@next/swc-linux-arm64-musl@14.0.2: - resolution: {integrity: sha512-dXJLMSEOwqJKcag1BeX1C+ekdPPJ9yXbWIt3nAadhbLx5CjACoB2NQj9Xcqu2tmdr5L6m34fR+fjGPs+ZVPLzA==} + /@next/swc-linux-arm64-gnu@14.1.1-canary.26: + resolution: {integrity: sha512-cXgFZZXYXbXeWmZaxv47LcOEFScqSauYOh5QFhdCn5oqhxqrmlO2TwKDvFY+zGRRUMAAmGSjlYugI74gsZZlrg==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] requiresBuild: true optional: true - /@next/swc-linux-arm64-musl@14.0.3: - resolution: {integrity: sha512-v0v8Kb8j8T23jvVUWZeA2D8+izWspeyeDGNaT2/mTHWp7+37fiNfL8bmBWiOmeumXkacM/AB0XOUQvEbncSnHA==} + /@next/swc-linux-arm64-musl@14.0.2: + resolution: {integrity: sha512-dXJLMSEOwqJKcag1BeX1C+ekdPPJ9yXbWIt3nAadhbLx5CjACoB2NQj9Xcqu2tmdr5L6m34fR+fjGPs+ZVPLzA==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] @@ -3990,16 +3983,16 @@ packages: dev: false optional: true - /@next/swc-linux-x64-gnu@14.0.2: - resolution: {integrity: sha512-WC9KAPSowj6as76P3vf1J3mf2QTm3Wv3FBzQi7UJ+dxWjK3MhHVWsWUo24AnmHx9qDcEtHM58okgZkXVqeLB+Q==} + /@next/swc-linux-arm64-musl@14.1.1-canary.26: + resolution: {integrity: sha512-+GVq76ysbkifRfBP2APheQv4aI7O39QKUApjTKhcRJQD1ZMBTifAYxxWpRqjFH7fvHwNMXHJ39kQ9VeRHzeOhg==} engines: {node: '>= 10'} - cpu: [x64] + cpu: [arm64] os: [linux] requiresBuild: true optional: true - /@next/swc-linux-x64-gnu@14.0.3: - resolution: {integrity: sha512-VM1aE1tJKLBwMGtyBR21yy+STfl0MapMQnNrXkxeyLs0GFv/kZqXS5Jw/TQ3TSUnbv0QPDf/X8sDXuMtSgG6eg==} + /@next/swc-linux-x64-gnu@14.0.2: + resolution: {integrity: sha512-WC9KAPSowj6as76P3vf1J3mf2QTm3Wv3FBzQi7UJ+dxWjK3MhHVWsWUo24AnmHx9qDcEtHM58okgZkXVqeLB+Q==} engines: {node: '>= 10'} cpu: [x64] os: [linux] @@ -4016,16 +4009,16 @@ packages: dev: false optional: true - /@next/swc-linux-x64-musl@14.0.2: - resolution: {integrity: sha512-KSSAwvUcjtdZY4zJFa2f5VNJIwuEVnOSlqYqbQIawREJA+gUI6egeiRu290pXioQXnQHYYdXmnVNZ4M+VMB7KQ==} + /@next/swc-linux-x64-gnu@14.1.1-canary.26: + resolution: {integrity: sha512-3j57txb3IUeVBmYK7Tcr5NFmz/kt41D91YE20oD0rcB1sOf5fyKdCY82NbfE01QqIMV9gZMFbhlgMfIxUfUSUA==} engines: {node: '>= 10'} cpu: [x64] os: [linux] requiresBuild: true optional: true - /@next/swc-linux-x64-musl@14.0.3: - resolution: {integrity: sha512-64EnmKy18MYFL5CzLaSuUn561hbO1Gk16jM/KHznYP3iCIfF9e3yULtHaMy0D8zbHfxset9LTOv6cuYKJgcOxg==} + /@next/swc-linux-x64-musl@14.0.2: + resolution: {integrity: sha512-KSSAwvUcjtdZY4zJFa2f5VNJIwuEVnOSlqYqbQIawREJA+gUI6egeiRu290pXioQXnQHYYdXmnVNZ4M+VMB7KQ==} engines: {node: '>= 10'} cpu: [x64] os: [linux] @@ -4042,16 +4035,16 @@ packages: dev: false optional: true - /@next/swc-win32-arm64-msvc@14.0.2: - resolution: {integrity: sha512-2/O0F1SqJ0bD3zqNuYge0ok7OEWCQwk55RPheDYD0va5ij7kYwrFkq5ycCRN0TLjLfxSF6xI5NM6nC5ux7svEQ==} + /@next/swc-linux-x64-musl@14.1.1-canary.26: + resolution: {integrity: sha512-BxBTBhgtyZoJONo10wrfXXZsrkgH+Q44E3C4yBxpJE8NPObV2IUkLKD++dvkLPHDhWwf6pEroLq/KKmTDSNEOw==} engines: {node: '>= 10'} - cpu: [arm64] - os: [win32] + cpu: [x64] + os: [linux] requiresBuild: true optional: true - /@next/swc-win32-arm64-msvc@14.0.3: - resolution: {integrity: sha512-WRDp8QrmsL1bbGtsh5GqQ/KWulmrnMBgbnb+59qNTW1kVi1nG/2ndZLkcbs2GX7NpFLlToLRMWSQXmPzQm4tog==} + /@next/swc-win32-arm64-msvc@14.0.2: + resolution: {integrity: sha512-2/O0F1SqJ0bD3zqNuYge0ok7OEWCQwk55RPheDYD0va5ij7kYwrFkq5ycCRN0TLjLfxSF6xI5NM6nC5ux7svEQ==} engines: {node: '>= 10'} cpu: [arm64] os: [win32] @@ -4068,16 +4061,16 @@ packages: dev: false optional: true - /@next/swc-win32-ia32-msvc@14.0.2: - resolution: {integrity: sha512-vJI/x70Id0oN4Bq/R6byBqV1/NS5Dl31zC+lowO8SDu1fHmUxoAdILZR5X/sKbiJpuvKcCrwbYgJU8FF/Gh50Q==} + /@next/swc-win32-arm64-msvc@14.1.1-canary.26: + resolution: {integrity: sha512-eHarkYpJYruf6y0kpGhw4HMeQ+RI/sh06VgGavCG6kH3kZHhQ58ofAbA/U6uomMcpb3NuzjqnCvjYAa7vXpaFw==} engines: {node: '>= 10'} - cpu: [ia32] + cpu: [arm64] os: [win32] requiresBuild: true optional: true - /@next/swc-win32-ia32-msvc@14.0.3: - resolution: {integrity: sha512-EKffQeqCrj+t6qFFhIFTRoqb2QwX1mU7iTOvMyLbYw3QtqTw9sMwjykyiMlZlrfm2a4fA84+/aeW+PMg1MjuTg==} + /@next/swc-win32-ia32-msvc@14.0.2: + resolution: {integrity: sha512-vJI/x70Id0oN4Bq/R6byBqV1/NS5Dl31zC+lowO8SDu1fHmUxoAdILZR5X/sKbiJpuvKcCrwbYgJU8FF/Gh50Q==} engines: {node: '>= 10'} cpu: [ia32] os: [win32] @@ -4094,16 +4087,16 @@ packages: dev: false optional: true - /@next/swc-win32-x64-msvc@14.0.2: - resolution: {integrity: sha512-Ut4LXIUvC5m8pHTe2j0vq/YDnTEyq6RSR9vHYPqnELrDapPhLNz9Od/L5Ow3J8RNDWpEnfCiQXuVdfjlNEJ7ug==} + /@next/swc-win32-ia32-msvc@14.1.1-canary.26: + resolution: {integrity: sha512-Dl9Cvfen0mPOC9wjfMYfme6ewv6pfMkOgLlnWCj7+MIX2Mwbyqxa4WFCvvNtX9bF+D7IZojHWtJByo31eVqq0Q==} engines: {node: '>= 10'} - cpu: [x64] + cpu: [ia32] os: [win32] requiresBuild: true optional: true - /@next/swc-win32-x64-msvc@14.0.3: - resolution: {integrity: sha512-ERhKPSJ1vQrPiwrs15Pjz/rvDHZmkmvbf/BjPN/UCOI++ODftT0GtasDPi0j+y6PPJi5HsXw+dpRaXUaw4vjuQ==} + /@next/swc-win32-x64-msvc@14.0.2: + resolution: {integrity: sha512-Ut4LXIUvC5m8pHTe2j0vq/YDnTEyq6RSR9vHYPqnELrDapPhLNz9Od/L5Ow3J8RNDWpEnfCiQXuVdfjlNEJ7ug==} engines: {node: '>= 10'} cpu: [x64] os: [win32] @@ -4120,6 +4113,14 @@ packages: dev: false optional: true + /@next/swc-win32-x64-msvc@14.1.1-canary.26: + resolution: {integrity: sha512-Tgs1SJNYHP5xcRLkZa81Pn2mT9IgfSxPAaYjrWEQjcOgFOJ5/gN+Mwr93z40L3o6G/vjo31IfRNVwXpqg+Jq1A==} + engines: {node: '>= 10'} + cpu: [x64] + os: [win32] + requiresBuild: true + optional: true + /@nodelib/fs.scandir@2.1.5: resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} engines: {node: '>= 8'} @@ -4465,6 +4466,7 @@ packages: /@smithy/abort-controller@2.0.11: resolution: {integrity: sha512-MSzE1qR2JNyb7ot3blIOT3O3H0Jn06iNDEgHRaqZUwBgx5EG+VIx24Y21tlKofzYryIOcWpIohLrIIyocD6LMA==} engines: {node: '>=14.0.0'} + requiresBuild: true dependencies: '@smithy/types': 2.3.5 tslib: 2.6.2 @@ -4491,6 +4493,7 @@ packages: /@smithy/config-resolver@2.0.14: resolution: {integrity: sha512-K1K+FuWQoy8j/G7lAmK85o03O89s2Vvh6kMFmzEmiHUoQCRH1rzbDtMnGNiaMHeSeYJ6y79IyTusdRG+LuWwtg==} engines: {node: '>=14.0.0'} + requiresBuild: true dependencies: '@smithy/node-config-provider': 2.1.1 '@smithy/types': 2.3.5 @@ -4523,6 +4526,7 @@ packages: /@smithy/credential-provider-imds@2.0.16: resolution: {integrity: sha512-tKa2xF+69TvGxJT+lnJpGrKxUuAZDLYXFhqnPEgnHz+psTpkpcB4QRjHj63+uj83KaeFJdTfW201eLZeRn6FfA==} engines: {node: '>=14.0.0'} + requiresBuild: true dependencies: '@smithy/node-config-provider': 2.1.1 '@smithy/property-provider': 2.0.12 @@ -4590,6 +4594,7 @@ packages: /@smithy/fetch-http-handler@2.2.3: resolution: {integrity: sha512-0G9sePU+0R+8d7cie+OXzNbbkjnD4RfBlVCs46ZEuQAMcxK8OniemYXSSkOc80CCk8Il4DnlYZcUSvsIs2OB2w==} + requiresBuild: true dependencies: '@smithy/protocol-http': 3.0.7 '@smithy/querystring-builder': 2.0.11 @@ -4608,6 +4613,7 @@ packages: /@smithy/hash-node@2.0.11: resolution: {integrity: sha512-PbleVugN2tbhl1ZoNWVrZ1oTFFas/Hq+s6zGO8B9bv4w/StTriTKA9W+xZJACOj9X7zwfoTLbscM+avCB1KqOQ==} engines: {node: '>=14.0.0'} + requiresBuild: true dependencies: '@smithy/types': 2.3.5 '@smithy/util-buffer-from': 2.0.0 @@ -4634,6 +4640,7 @@ packages: /@smithy/invalid-dependency@2.0.11: resolution: {integrity: sha512-zazq99ujxYv/NOf9zh7xXbNgzoVLsqE0wle8P/1zU/XdhPi/0zohTPKWUzIxjGdqb5hkkwfBkNkl5H+LE0mvgw==} + requiresBuild: true dependencies: '@smithy/types': 2.3.5 tslib: 2.6.2 @@ -4671,6 +4678,7 @@ packages: /@smithy/middleware-content-length@2.0.13: resolution: {integrity: sha512-Md2kxWpaec3bXp1oERFPQPBhOXCkGSAF7uc1E+4rkwjgw3/tqAXRtbjbggu67HJdwaif76As8AV6XxbD1HzqTQ==} engines: {node: '>=14.0.0'} + requiresBuild: true dependencies: '@smithy/protocol-http': 3.0.7 '@smithy/types': 2.3.5 @@ -4690,6 +4698,7 @@ packages: /@smithy/middleware-endpoint@2.1.0: resolution: {integrity: sha512-e6HZbfrp9CNTJqIPSgkydB9mNQXiq5pkHF3ZB6rOzPPR9PkJBoGFo9TcM7FaaKFUaH4Kc20AX6WwwVyIlNhXTA==} engines: {node: '>=14.0.0'} + requiresBuild: true dependencies: '@smithy/middleware-serde': 2.0.11 '@smithy/node-config-provider': 2.1.1 @@ -4715,6 +4724,7 @@ packages: /@smithy/middleware-retry@2.0.16: resolution: {integrity: sha512-Br5+0yoiMS0ugiOAfJxregzMMGIRCbX4PYo1kDHtLgvkA/d++aHbnHB819m5zOIAMPvPE7AThZgcsoK+WOsUTA==} engines: {node: '>=14.0.0'} + requiresBuild: true dependencies: '@smithy/node-config-provider': 2.1.1 '@smithy/protocol-http': 3.0.7 @@ -4728,6 +4738,7 @@ packages: /@smithy/middleware-serde@2.0.11: resolution: {integrity: sha512-NuxnjMyf4zQqhwwdh0OTj5RqpnuT6HcH5Xg5GrPijPcKzc2REXVEVK4Yyk8ckj8ez1XSj/bCmJ+oNjmqB02GWA==} engines: {node: '>=14.0.0'} + requiresBuild: true dependencies: '@smithy/types': 2.3.5 tslib: 2.6.2 @@ -4751,6 +4762,7 @@ packages: /@smithy/middleware-stack@2.0.5: resolution: {integrity: sha512-bVQU/rZzBY7CbSxIrDTGZYnBWKtIw+PL/cRc9B7etZk1IKSOe0NvKMJyWllfhfhrTeMF6eleCzOihIQympAvPw==} engines: {node: '>=14.0.0'} + requiresBuild: true dependencies: '@smithy/types': 2.3.5 tslib: 2.6.2 @@ -4768,6 +4780,7 @@ packages: /@smithy/node-config-provider@2.1.1: resolution: {integrity: sha512-1lF6s1YWBi1LBu2O30tD3jyTgMtuvk/Z1twzXM4GPYe4dmZix4nNREPJIPOcfFikNU2o0eTYP80+izx5F2jIJA==} engines: {node: '>=14.0.0'} + requiresBuild: true dependencies: '@smithy/property-provider': 2.0.12 '@smithy/shared-ini-file-loader': 2.2.0 @@ -4788,6 +4801,7 @@ packages: /@smithy/node-http-handler@2.1.7: resolution: {integrity: sha512-PQIKZXlp3awCDn/xNlCSTFE7aYG/5Tx33M05NfQmWYeB5yV1GZZOSz4dXpwiNJYTXb9jPqjl+ueXXkwtEluFFA==} engines: {node: '>=14.0.0'} + requiresBuild: true dependencies: '@smithy/abort-controller': 2.0.11 '@smithy/protocol-http': 3.0.7 @@ -4798,6 +4812,7 @@ packages: /@smithy/property-provider@2.0.12: resolution: {integrity: sha512-Un/OvvuQ1Kg8WYtoMCicfsFFuHb/TKL3pCA6ZIo/WvNTJTR94RtoRnL7mY4XkkUAoFMyf6KjcQJ76y1FX7S5rw==} engines: {node: '>=14.0.0'} + requiresBuild: true dependencies: '@smithy/types': 2.3.5 tslib: 2.6.2 @@ -4821,6 +4836,7 @@ packages: /@smithy/protocol-http@3.0.7: resolution: {integrity: sha512-HnZW8y+r66ntYueCDbLqKwWcMNWW8o3eVpSrHNluwtBJ/EUWfQHRKSiu6vZZtc6PGfPQWgVfucoCE/C3QufMAA==} engines: {node: '>=14.0.0'} + requiresBuild: true dependencies: '@smithy/types': 2.3.5 tslib: 2.6.2 @@ -4828,6 +4844,7 @@ packages: /@smithy/querystring-builder@2.0.11: resolution: {integrity: sha512-b4kEbVMxpmfv2VWUITn2otckTi7GlMteZQxi+jlwedoATOGEyrCJPfRcYQJjbCi3fZ2QTfh3PcORvB27+j38Yg==} engines: {node: '>=14.0.0'} + requiresBuild: true dependencies: '@smithy/types': 2.3.5 '@smithy/util-uri-escape': 2.0.0 @@ -4845,6 +4862,7 @@ packages: /@smithy/querystring-parser@2.0.11: resolution: {integrity: sha512-YXe7jhi7s3dQ0Fu9dLoY/gLu6NCyy8tBWJL/v2c9i7/RLpHgKT+uT96/OqZkHizCJ4kr0ZD46tzMjql/o60KLg==} engines: {node: '>=14.0.0'} + requiresBuild: true dependencies: '@smithy/types': 2.3.5 tslib: 2.6.2 @@ -4867,6 +4885,7 @@ packages: /@smithy/service-error-classification@2.0.4: resolution: {integrity: sha512-77506l12I5gxTZqBkx3Wb0RqMG81bMYLaVQ+EqIWFwQDJRs5UFeXogKxSKojCmz1wLUziHZQXm03MBzPQiumQw==} engines: {node: '>=14.0.0'} + requiresBuild: true dependencies: '@smithy/types': 2.3.5 @@ -4881,6 +4900,7 @@ packages: /@smithy/shared-ini-file-loader@2.2.0: resolution: {integrity: sha512-xFXqs4vAb5BdkzHSRrTapFoaqS4/3m/CGZzdw46fBjYZ0paYuLAoMY60ICCn1FfGirG+PiJ3eWcqJNe4/SkfyA==} engines: {node: '>=14.0.0'} + requiresBuild: true dependencies: '@smithy/types': 2.3.5 tslib: 2.6.2 @@ -4902,6 +4922,7 @@ packages: /@smithy/smithy-client@2.1.11: resolution: {integrity: sha512-okjMbuBBCTiieK665OFN/ap6u9+Z9z55PMphS5FYCsS6Zfp137Q3qlnt0OgBAnUVnH/mNGyoJV0LBX9gkTWptg==} engines: {node: '>=14.0.0'} + requiresBuild: true dependencies: '@smithy/middleware-stack': 2.0.5 '@smithy/types': 2.3.5 @@ -4934,6 +4955,7 @@ packages: /@smithy/url-parser@2.0.11: resolution: {integrity: sha512-h89yXMCCF+S5k9XIoKltMIWTYj+FcEkU/IIFZ6RtE222fskOTL4Iak6ZRG+ehSvZDt8yKEcxqheTDq7JvvtK3g==} + requiresBuild: true dependencies: '@smithy/querystring-parser': 2.0.11 '@smithy/types': 2.3.5 @@ -4986,6 +5008,7 @@ packages: /@smithy/util-defaults-mode-browser@2.0.15: resolution: {integrity: sha512-2raMZOYKSuke7QlDg/HDcxQdrp0zteJ8z+S0B9Rn23J55ZFNK1+IjG4HkN6vo/0u3Xy/JOdJ93ibiBSB8F7kOw==} engines: {node: '>= 10.0.0'} + requiresBuild: true dependencies: '@smithy/property-provider': 2.0.12 '@smithy/smithy-client': 2.1.11 @@ -5020,6 +5043,7 @@ packages: /@smithy/util-defaults-mode-node@2.0.19: resolution: {integrity: sha512-7pScU4jBFADB2MBYKM3zb5onMh6Nn0X3IfaFVLYPyCarTIZDLUtUl1GtruzEUJPmDzP+uGeqOtU589HDY0Ni6g==} engines: {node: '>= 10.0.0'} + requiresBuild: true dependencies: '@smithy/config-resolver': 2.0.14 '@smithy/credential-provider-imds': 2.0.16 @@ -5047,6 +5071,7 @@ packages: /@smithy/util-middleware@2.0.4: resolution: {integrity: sha512-Pbu6P4MBwRcjrLgdTR1O4Y3c0sTZn2JdOiJNcgL7EcIStcQodj+6ZTXtbyU/WTEU3MV2NMA10LxFc3AWHZ3+4A==} engines: {node: '>=14.0.0'} + requiresBuild: true dependencies: '@smithy/types': 2.3.5 tslib: 2.6.2 @@ -5063,6 +5088,7 @@ packages: /@smithy/util-retry@2.0.4: resolution: {integrity: sha512-b+n1jBBKc77C1E/zfBe1Zo7S9OXGBiGn55N0apfhZHxPUP/fMH5AhFUUcWaJh7NAnah284M5lGkBKuhnr3yK5w==} engines: {node: '>= 14.0.0'} + requiresBuild: true dependencies: '@smithy/service-error-classification': 2.0.4 '@smithy/types': 2.3.5 @@ -5085,6 +5111,7 @@ packages: /@smithy/util-stream@2.0.16: resolution: {integrity: sha512-b5ZSRh1KzUzC7LoJcpfk7+iXGoRr3WylEfmPd4FnBLm90OwxSB9VgK1fDZwicfYxSEvWHdYXgvvjPtenEYBBhw==} engines: {node: '>=14.0.0'} + requiresBuild: true dependencies: '@smithy/fetch-http-handler': 2.2.3 '@smithy/node-http-handler': 2.1.7 @@ -5724,15 +5751,6 @@ packages: '@types/node': 20.6.2 dev: true - /@types/mongoose-aggregate-paginate-v2@1.0.9: - resolution: {integrity: sha512-YKDKtSuE1vzMY/SAtlDTWJr52UhTYdrOypCqyx7T2xFYEWfybLnV98m4ZoVgYJH0XowVl7Y2Gnn6p1sF+3NbLA==} - dependencies: - mongoose: 6.12.0 - transitivePeerDependencies: - - aws-crt - - supports-color - dev: true - /@types/needle@3.2.0: resolution: {integrity: sha512-6XzvzEyJ2ozFNfPajFmqH9JOt0Hp+9TawaYpJT59iIP/zR0U37cfWCRwosyIeEBBZBi021Osq4jGAD3AOju5fg==} dependencies: @@ -5976,6 +5994,7 @@ packages: resolution: {integrity: sha512-lwhs8hktwxSjf9UaZ9tG5M03PGogvFaH8gUgLNbN9HKIg0dvv6q+gkSuJ8HN4/VbyxkuLzCjlN7GquQ0gUJfIg==} dependencies: '@types/node': 20.6.2 + dev: false /@types/yargs-parser@21.0.0: resolution: {integrity: sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==} @@ -6507,6 +6526,11 @@ packages: type-fest: 1.4.0 dev: true + /ansi-regex@2.1.1: + resolution: {integrity: sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==} + engines: {node: '>=0.10.0'} + dev: false + /ansi-regex@5.0.1: resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} engines: {node: '>=8'} @@ -6548,10 +6572,21 @@ packages: normalize-path: 3.0.0 picomatch: 2.3.1 + /aproba@1.2.0: + resolution: {integrity: sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==} + dev: false + /arch@2.2.0: resolution: {integrity: sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==} dev: true + /are-we-there-yet@1.1.7: + resolution: {integrity: sha512-nxwy40TuMiUGqMyRHgCSWZ9FM4VAoRP4xUYSTv5ImRog+h9yISPbVH7H8fASCIzYn9wlEv4zvFL7uKDMCFQm3g==} + dependencies: + delegates: 1.0.0 + readable-stream: 2.3.8 + dev: false + /arg@4.1.3: resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==} @@ -6721,7 +6756,6 @@ packages: /atomic-sleep@1.0.0: resolution: {integrity: sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ==} engines: {node: '>=8.0.0'} - dev: false /atomically@1.7.0: resolution: {integrity: sha512-Xcz9l0z7y9yQ9rdDaxlmaI4uJHf/T8g9hOEzJcsEqX2SjCj4J20uK7+ldkDHMbpJDK76wF7xEIgxc/vSlsfw5w==} @@ -6755,7 +6789,6 @@ packages: /b4a@1.6.4: resolution: {integrity: sha512-fpWrvyVHEKyeEvbKZTVOeZF3VSKKWtJxFIxX/jaVPf+cLbGUSitjb49pHLqPV2BUNNZ0LcoeEGfE/YCpyDYHIw==} - dev: false /babel-jest@29.7.0(@babel/core@7.22.20): resolution: {integrity: sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==} @@ -6854,6 +6887,7 @@ packages: dependencies: bindings: 1.5.0 prebuild-install: 7.1.1 + dev: false /big-integer@1.6.51: resolution: {integrity: sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg==} @@ -6901,6 +6935,7 @@ packages: resolution: {integrity: sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==} dependencies: file-uri-to-path: 1.0.0 + dev: false /bl@4.1.0: resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} @@ -7008,6 +7043,17 @@ packages: dependencies: node-int64: 0.4.0 + /bson-ext@4.0.3: + resolution: {integrity: sha512-uvhVHZ7+eAksEFFjyuomrGyUzLqOU/EvmB+bGdG0U3FfkRmEF23LuCVxDdNZSmifvkXNPxZ0lAv2xE57lLKMSA==} + engines: {node: '>=6.9.0'} + requiresBuild: true + dependencies: + bindings: 1.5.0 + bson: 4.7.2 + nan: 2.18.0 + prebuild-install: 6.1.4 + dev: false + /bson-objectid@2.0.4: resolution: {integrity: sha512-vgnKAUzcDoa+AeyYwXCoHyF2q6u/8H46dxu5JN+4/TZeq/Dlinn0K6GvxsCLb3LHUJl0m/TLiEK31kUwtgocMQ==} dev: false @@ -7031,6 +7077,7 @@ packages: /buffer-writer@2.0.0: resolution: {integrity: sha512-a7ZpuTZU1TRtnwyCNW3I5dc0wWNC3VR9S++Ewyk2HHZdrO3CQJqSpd+95Us590V6AL7JqUAH2IwZ/398PmNFgw==} engines: {node: '>=4'} + dev: false /buffer@4.9.2: resolution: {integrity: sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==} @@ -7155,6 +7202,7 @@ packages: /caniuse-lite@1.0.30001535: resolution: {integrity: sha512-48jLyUkiWFfhm/afF7cQPqPjaUmSraEhK4j+FCTJpgnGGEZHqyLe3hmWH7lIooZdSzXL0ReMvHz0vKDoTBsrwg==} + dev: false /caniuse-lite@1.0.30001579: resolution: {integrity: sha512-u5AUVkixruKHJjw/pj9wISlcMpgFWzSrczLZbrqBSxukQixmg0SJ5sZTpvaFvxU0HoQKd4yoyAogyrAz9pzJnA==} @@ -7327,6 +7375,11 @@ packages: resolution: {integrity: sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==} engines: {iojs: '>= 1.0.0', node: '>= 0.12.0'} + /code-point-at@1.1.0: + resolution: {integrity: sha512-RpAVKQA5T63xEj6/giIbUEtZwJ4UFIc3ZtvEkiaUERylqe8xb5IvqcgOurZLahv93CLKfxcw5YI+DZcUBRyLXA==} + engines: {node: '>=0.10.0'} + dev: false + /collect-v8-coverage@1.0.2: resolution: {integrity: sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==} @@ -7352,7 +7405,6 @@ packages: dependencies: color-name: 1.1.4 simple-swizzle: 0.2.2 - dev: false /color@4.2.3: resolution: {integrity: sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==} @@ -7360,7 +7412,6 @@ packages: dependencies: color-convert: 2.0.1 color-string: 1.9.1 - dev: false /colorette@2.0.20: resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==} @@ -7484,6 +7535,10 @@ packages: resolution: {integrity: sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA==} dev: true + /console-control-strings@1.1.0: + resolution: {integrity: sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==} + dev: false + /console-table-printer@2.11.2: resolution: {integrity: sha512-uuUHie0sfPP542TKGzPFal0W1wo1beuKAqIZdaavcONx8OoqdnJRKjkinbRTOta4FaCa1RcIL+7mMJWX3pQGVg==} dependencies: @@ -7783,7 +7838,6 @@ packages: /core-util-is@1.0.3: resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} - dev: true /cosmiconfig@7.1.0: resolution: {integrity: sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==} @@ -7989,7 +8043,6 @@ packages: /dateformat@4.6.3: resolution: {integrity: sha512-2P0p0pFGzHS5EMnhdxQi7aJN+iMheud0UhG4dlE1DLAlvL8JHjJJTX/CSm4JXwV0Ka5nGk3zC5mcb5bUQUxxMA==} - dev: false /debounce-fn@4.0.0: resolution: {integrity: sha512-8pYCQiL9Xdcg0UPSD3d+0KMlOjp+KGU5EPwYddgzQ7DATsg4fuUDjQtsYLmWjnk2obnNHgV3vE2Y4jejSOJVBQ==} @@ -8048,6 +8101,13 @@ packages: resolution: {integrity: sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==} dev: true + /decompress-response@4.2.1: + resolution: {integrity: sha512-jOSne2qbyE+/r8G1VU+G/82LBs2Fs4LAsTiLSHOCOMZQl2OKZ6i8i4IyHemTe+/yIXOtTcRQMzPcgyhoFlqPkw==} + engines: {node: '>=8'} + dependencies: + mimic-response: 2.1.0 + dev: false + /decompress-response@6.0.0: resolution: {integrity: sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==} engines: {node: '>=10'} @@ -8196,6 +8256,10 @@ packages: resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} engines: {node: '>=0.4.0'} + /delegates@1.0.0: + resolution: {integrity: sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==} + dev: false + /depd@2.0.0: resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} engines: {node: '>= 0.8'} @@ -8217,6 +8281,12 @@ packages: engines: {node: '>=0.10.0'} dev: false + /detect-libc@1.0.3: + resolution: {integrity: sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==} + engines: {node: '>=0.10'} + hasBin: true + dev: false + /detect-libc@2.0.2: resolution: {integrity: sha512-UX6sGumvvqSaXgdKGUsgZWqcUyIXZ/vZTrlRT/iobiKhGL0zL4d3osHj3uqllWJK+i+sixDS/3COVEOFbupFyw==} engines: {node: '>=8'} @@ -8364,6 +8434,69 @@ packages: - supports-color dev: false + /drizzle-orm@0.28.5: + resolution: {integrity: sha512-6r6Iw4c38NAmW6TiKH3TUpGUQ1YdlEoLJOQptn8XPx3Z63+vFNKfAiANqrIiYZiMjKR9+NYAL219nFrmo1duXA==} + peerDependencies: + '@aws-sdk/client-rds-data': '>=3' + '@cloudflare/workers-types': '>=3' + '@libsql/client': '*' + '@neondatabase/serverless': '>=0.1' + '@opentelemetry/api': ^1.4.1 + '@planetscale/database': '>=1' + '@types/better-sqlite3': '*' + '@types/pg': '*' + '@types/sql.js': '*' + '@vercel/postgres': '*' + better-sqlite3: '>=7' + bun-types: '*' + knex: '*' + kysely: '*' + mysql2: '>=2' + pg: '>=8' + postgres: '>=3' + sql.js: '>=1' + sqlite3: '>=5' + peerDependenciesMeta: + '@aws-sdk/client-rds-data': + optional: true + '@cloudflare/workers-types': + optional: true + '@libsql/client': + optional: true + '@neondatabase/serverless': + optional: true + '@opentelemetry/api': + optional: true + '@planetscale/database': + optional: true + '@types/better-sqlite3': + optional: true + '@types/pg': + optional: true + '@types/sql.js': + optional: true + '@vercel/postgres': + optional: true + better-sqlite3: + optional: true + bun-types: + optional: true + knex: + optional: true + kysely: + optional: true + mysql2: + optional: true + pg: + optional: true + postgres: + optional: true + sql.js: + optional: true + sqlite3: + optional: true + dev: true + /drizzle-orm@0.28.5(@libsql/client@0.3.4)(@types/pg@8.10.2)(pg@8.11.3): resolution: {integrity: sha512-6r6Iw4c38NAmW6TiKH3TUpGUQ1YdlEoLJOQptn8XPx3Z63+vFNKfAiANqrIiYZiMjKR9+NYAL219nFrmo1duXA==} peerDependencies: @@ -8429,6 +8562,7 @@ packages: '@libsql/client': 0.3.4 '@types/pg': 8.10.2 pg: 8.11.3 + dev: false /duplexify@4.1.2: resolution: {integrity: sha512-fz3OjcNCHmRP12MJoZMPglx8m4rrFP8rovnk4vT8Fs+aonZoCwGg10dSsQsfP/E62eZcPTMSMP6686fu9Qlqtw==} @@ -9314,14 +9448,12 @@ packages: /fast-copy@3.0.1: resolution: {integrity: sha512-Knr7NOtK3HWRYGtHoJrjkaWepqT8thIVGAwt0p0aUs1zqkAzXZV4vo9fFNwyb5fcqK1GKYFYxldQdIDVKhUAfA==} - dev: false /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==} - dev: false /fast-glob@3.3.1: resolution: {integrity: sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==} @@ -9343,11 +9475,9 @@ packages: /fast-redact@3.3.0: resolution: {integrity: sha512-6T5V1QK1u4oF+ATxs1lWUmlEk6P2T9HqJG3e2DnHOdVgZy2rFJBoEnrIedcTXlkAHU/zKC+7KETJ+KGGKwxgMQ==} engines: {node: '>=6'} - dev: false /fast-safe-stringify@2.1.1: resolution: {integrity: sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==} - dev: false /fast-text-encoding@1.0.6: resolution: {integrity: sha512-VhXlQgj9ioXCqGstD37E/HBeqEGV/qOD/kmbVG8h5xKBYvM1L3lR1Zn4555cQ8GkYbJa8aJSipLPndE1k6zK2w==} @@ -9436,6 +9566,7 @@ packages: /file-uri-to-path@1.0.0: resolution: {integrity: sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==} + dev: false /filename-reserved-regex@3.0.0: resolution: {integrity: sha512-hn4cQfU6GOT/7cFHXBqeBg2TbrMBgdD0kcjLhvSQYYwm3s4B6cjvBfb7nBALJLAXqmU5xajSa7X2NnUud/VCdw==} @@ -9687,6 +9818,19 @@ packages: /functions-have-names@1.2.3: resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} + /gauge@2.7.4: + resolution: {integrity: sha512-14x4kjc6lkD3ltw589k0NrPD6cCNTD6CWoVUNpB85+DrtONoZn+Rug6xZU5RvSC4+TZPxA5AnBibQYAvZn41Hg==} + dependencies: + aproba: 1.2.0 + console-control-strings: 1.1.0 + has-unicode: 2.0.1 + object-assign: 4.1.1 + signal-exit: 3.0.7 + string-width: 1.0.2 + strip-ansi: 3.0.1 + wide-align: 1.1.5 + dev: false + /gaxios@5.1.3: resolution: {integrity: sha512-95hVgBRgEIRQQQHIbnxBXeHbW4TqFk4ZDJW7wmVtvYar72FdhRIo1UGOLS2eRAKCPEdPBWu+M7+A33D9CdX9rA==} engines: {node: '>=12'} @@ -10211,6 +10355,10 @@ packages: dependencies: has-symbols: 1.0.3 + /has-unicode@2.0.1: + resolution: {integrity: sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==} + dev: false + /has-yarn@3.0.0: resolution: {integrity: sha512-IrsVwUHhEULx3R8f/aA8AHuEzAorplsab/v8HBzEiIukwq5i/EC+xmOW+HfP1OaDP+2JkgT1yILHN2O3UFIbcA==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} @@ -10237,7 +10385,6 @@ packages: dependencies: glob: 8.1.0 readable-stream: 3.6.2 - dev: false /history@4.10.1: resolution: {integrity: sha512-36nwAD620w12kuzPAsyINPWJqlNbij+hpK1k9XRloDtym8mxzGYl2c17LnV6IAGB2Dmg4tEa7G7DlawS0+qjew==} @@ -10291,12 +10438,6 @@ packages: /html-escaper@2.0.2: resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} - /html-parse-stringify@3.0.1: - resolution: {integrity: sha512-KknJ50kTInJ7qIScF3jeaFRpMpE8/lfiTdzf/twXyPBLAGrLRTmkz3AdTnKeh40X8k9L2fdYwEp/42WGXIRGcg==} - dependencies: - void-elements: 3.1.0 - dev: false - /html-to-text@9.0.3: resolution: {integrity: sha512-hxDF1kVCF2uw4VUJ3vr2doc91pXf2D5ngKcNviSitNkhP9OMOaJkDrFIFL6RMvko7NisWTEiqGpQ9LAxcVok1w==} engines: {node: '>=14'} @@ -10407,12 +10548,6 @@ packages: hasBin: true dev: true - /i18next@22.5.1: - resolution: {integrity: sha512-8TGPgM3pAD+VRsMtUMNknRz3kzqwp/gPALrWMsDnmC1mKqJwpWyooQRLMcbTwq8z8YwSmuj+ZYvc+xCuEpkssA==} - dependencies: - '@babel/runtime': 7.22.15 - dev: false - /iconv-lite@0.4.24: resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} engines: {node: '>=0.10.0'} @@ -10553,7 +10688,6 @@ packages: /is-arrayish@0.3.2: resolution: {integrity: sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==} - dev: false /is-async-function@2.0.0: resolution: {integrity: sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==} @@ -10633,6 +10767,13 @@ packages: call-bind: 1.0.5 dev: false + /is-fullwidth-code-point@1.0.0: + resolution: {integrity: sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw==} + engines: {node: '>=0.10.0'} + dependencies: + number-is-nan: 1.0.1 + dev: false + /is-fullwidth-code-point@3.0.0: resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} engines: {node: '>=8'} @@ -11649,10 +11790,10 @@ packages: /joycon@3.1.1: resolution: {integrity: sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw==} engines: {node: '>=10'} - dev: false /js-base64@3.7.5: resolution: {integrity: sha512-3MEt5DTINKqfScXKfJFrRbxkrnk2AxPWGBL/ycjz4dK8iqiSJ06UxD8jh8xuh6p10TX4t2+7FsBYVxxQbMg+qA==} + dev: false /js-beautify@1.14.9: resolution: {integrity: sha512-coM7xq1syLcMyuVGyToxcj2AlzhkDjmfklL8r0JgJ7A76wyGMpJ1oA35mr4APdYNO/o/4YY8H54NQIJzhMbhBg==} @@ -11898,6 +12039,7 @@ packages: /kareem@2.5.1: resolution: {integrity: sha512-7jFxRVm+jD+rkq3kY0iZDJfsO2/t4BBPeEb2qKn2lR/9KhuksYk5hxzfRYWMPV8P/x2d0kHD306YyWLzjjH+uA==} engines: {node: '>=12.0.0'} + dev: false /keyv@4.5.3: resolution: {integrity: sha512-QCiSav9WaX1PgETJ+SpNnx2PRRapJ/oRSXM4VO5OGYGSjrxbKPVFVhB3l2OCbLCk329N8qyAtsJjSjvVBWzEug==} @@ -12369,6 +12511,11 @@ packages: engines: {node: '>=4'} dev: true + /mimic-response@2.1.0: + resolution: {integrity: sha512-wXqjST+SLt7R009ySCglWBCFpjUygmCIfD790/kVbiGmUgfYGuB14PiTd5DwVxSV4NcYHjzMkoj5LjQZwTQLEA==} + engines: {node: '>=8'} + dev: false + /mimic-response@3.1.0: resolution: {integrity: sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==} engines: {node: '>=10'} @@ -12526,11 +12673,6 @@ packages: transitivePeerDependencies: - aws-crt - /mongoose-aggregate-paginate-v2@1.0.6: - resolution: {integrity: sha512-UuALu+mjhQa1K9lMQvjLL3vm3iALvNw8PQNIh2gp1b+tO5hUa0NC0Wf6/8QrT9PSJVTihXaD8hQVy3J4e0jO0Q==} - engines: {node: '>=4.0.0'} - dev: false - /mongoose-paginate-v2@1.7.22: resolution: {integrity: sha512-xW5GugkE21DJiu9e13EOxKt4ejEKQkRP/S1PkkXRjnk2rRZVKBcld1nPV+VJ/YCPfm8hb3sz9OvI7O38RmixkA==} engines: {node: '>=4.0.0'} @@ -12550,10 +12692,12 @@ packages: transitivePeerDependencies: - aws-crt - supports-color + dev: false /mpath@0.9.0: resolution: {integrity: sha512-ikJRQTk8hw5DEoFVxHG1Gn9T/xcjtdnOKIU1JTmGjZZlg9LST2mBLmcX3/ICIbgJydT2GOc15RnNy5mHmzfSew==} engines: {node: '>=4.0.0'} + dev: false /mquery@4.0.3: resolution: {integrity: sha512-J5heI+P08I6VJ2Ky3+33IpCdAvlYGTSUjwTPxkAr8i8EoduPMBX2OY/wa3IKZIQl7MU4SbFk8ndgSKyB/cl1zA==} @@ -12562,6 +12706,7 @@ packages: debug: 4.3.4(supports-color@5.5.0) transitivePeerDependencies: - supports-color + dev: false /ms@2.0.0: resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} @@ -12585,6 +12730,10 @@ packages: thenify-all: 1.6.0 dev: false + /nan@2.18.0: + resolution: {integrity: sha512-W7tfG7vMOGtD30sHoZSSc/JVYiyDPEyQVso/Zz+/uQd0B0L46gtC+pHha5FFMRpil6fm/AoEcRWyOVi4+E/f8w==} + dev: false + /nanoid@3.3.6: resolution: {integrity: sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} @@ -12681,45 +12830,6 @@ packages: transitivePeerDependencies: - '@babel/core' - babel-plugin-macros - - /next@14.0.3(@babel/core@7.22.20)(react-dom@18.2.0)(react@18.2.0)(sass@1.70.0): - resolution: {integrity: sha512-AbYdRNfImBr3XGtvnwOxq8ekVCwbFTv/UJoLwmaX89nk9i051AEY4/HAWzU0YpaTDw8IofUpmuIlvzWF13jxIw==} - engines: {node: '>=18.17.0'} - hasBin: true - peerDependencies: - '@opentelemetry/api': ^1.1.0 - react: ^18.2.0 - react-dom: ^18.2.0 - sass: ^1.3.0 - peerDependenciesMeta: - '@opentelemetry/api': - optional: true - sass: - optional: true - dependencies: - '@next/env': 14.0.3 - '@swc/helpers': 0.5.2 - busboy: 1.6.0 - caniuse-lite: 1.0.30001535 - postcss: 8.4.31 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - sass: 1.70.0 - styled-jsx: 5.1.1(@babel/core@7.22.20)(react@18.2.0) - watchpack: 2.4.0 - optionalDependencies: - '@next/swc-darwin-arm64': 14.0.3 - '@next/swc-darwin-x64': 14.0.3 - '@next/swc-linux-arm64-gnu': 14.0.3 - '@next/swc-linux-arm64-musl': 14.0.3 - '@next/swc-linux-x64-gnu': 14.0.3 - '@next/swc-linux-x64-musl': 14.0.3 - '@next/swc-win32-arm64-msvc': 14.0.3 - '@next/swc-win32-ia32-msvc': 14.0.3 - '@next/swc-win32-x64-msvc': 14.0.3 - transitivePeerDependencies: - - '@babel/core' - - babel-plugin-macros dev: false /next@14.1.0(@babel/core@7.22.20)(react-dom@18.3.0-canary-b36ae8d7a-20231207)(react@18.3.0-canary-b36ae8d7a-20231207)(sass@1.69.5): @@ -12762,6 +12872,91 @@ packages: - babel-plugin-macros dev: false + /next@14.1.1-canary.26(@babel/core@7.22.20)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-vHj7hCL9qn8AhRXNEC1ujTO55w3IjckEE1tkmxwyqA3ypTH9PtxSnU6eFfC9C67Xf/Q2C5Btug7Yqvw7pxGkhg==} + engines: {node: '>=18.17.0'} + hasBin: true + peerDependencies: + '@opentelemetry/api': ^1.1.0 + react: ^18.2.0 + react-dom: ^18.2.0 + sass: ^1.3.0 + peerDependenciesMeta: + '@opentelemetry/api': + optional: true + sass: + optional: true + dependencies: + '@next/env': 14.1.1-canary.26 + '@swc/helpers': 0.5.2 + busboy: 1.6.0 + caniuse-lite: 1.0.30001579 + graceful-fs: 4.2.11 + postcss: 8.4.31 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + styled-jsx: 5.1.1(@babel/core@7.22.20)(react@18.2.0) + optionalDependencies: + '@next/swc-darwin-arm64': 14.1.1-canary.26 + '@next/swc-darwin-x64': 14.1.1-canary.26 + '@next/swc-linux-arm64-gnu': 14.1.1-canary.26 + '@next/swc-linux-arm64-musl': 14.1.1-canary.26 + '@next/swc-linux-x64-gnu': 14.1.1-canary.26 + '@next/swc-linux-x64-musl': 14.1.1-canary.26 + '@next/swc-win32-arm64-msvc': 14.1.1-canary.26 + '@next/swc-win32-ia32-msvc': 14.1.1-canary.26 + '@next/swc-win32-x64-msvc': 14.1.1-canary.26 + transitivePeerDependencies: + - '@babel/core' + - babel-plugin-macros + dev: true + + /next@14.1.1-canary.26(@babel/core@7.22.20)(react-dom@18.2.0)(react@18.2.0)(sass@1.70.0): + resolution: {integrity: sha512-vHj7hCL9qn8AhRXNEC1ujTO55w3IjckEE1tkmxwyqA3ypTH9PtxSnU6eFfC9C67Xf/Q2C5Btug7Yqvw7pxGkhg==} + engines: {node: '>=18.17.0'} + hasBin: true + peerDependencies: + '@opentelemetry/api': ^1.1.0 + react: ^18.2.0 + react-dom: ^18.2.0 + sass: ^1.3.0 + peerDependenciesMeta: + '@opentelemetry/api': + optional: true + sass: + optional: true + dependencies: + '@next/env': 14.1.1-canary.26 + '@swc/helpers': 0.5.2 + busboy: 1.6.0 + caniuse-lite: 1.0.30001579 + graceful-fs: 4.2.11 + postcss: 8.4.31 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + sass: 1.70.0 + styled-jsx: 5.1.1(@babel/core@7.22.20)(react@18.2.0) + optionalDependencies: + '@next/swc-darwin-arm64': 14.1.1-canary.26 + '@next/swc-darwin-x64': 14.1.1-canary.26 + '@next/swc-linux-arm64-gnu': 14.1.1-canary.26 + '@next/swc-linux-arm64-musl': 14.1.1-canary.26 + '@next/swc-linux-x64-gnu': 14.1.1-canary.26 + '@next/swc-linux-x64-musl': 14.1.1-canary.26 + '@next/swc-win32-arm64-msvc': 14.1.1-canary.26 + '@next/swc-win32-ia32-msvc': 14.1.1-canary.26 + '@next/swc-win32-x64-msvc': 14.1.1-canary.26 + transitivePeerDependencies: + - '@babel/core' + - babel-plugin-macros + dev: false + + /node-abi@2.30.1: + resolution: {integrity: sha512-/2D0wOQPgaUWzVSVgRMx+trKJRC2UG4SUc4oCJoXx9Uxjtp0Vy3/kt7zcbxHF8+Z/pK3UloLWzBISg72brfy1w==} + dependencies: + semver: 5.7.2 + dev: false + /node-abi@3.47.0: resolution: {integrity: sha512-2s6B2CWZM//kPgwnuI0KrYwNjfdByE25zvAaEpq9IH4zcNsarH8Ihu/UuX6XMPEogDAxkuUFeZn60pXNHAqn3A==} engines: {node: '>=10'} @@ -12770,7 +12965,6 @@ packages: /node-addon-api@6.1.0: resolution: {integrity: sha512-+eawOlIgy680F0kBzPUNFhMZGtJ1YmqM6l4+Crf4IkImjYrO/mqPwRMh352g23uIaQKFItcQ64I7KMaJxHgAVA==} - dev: false /node-domexception@1.0.0: resolution: {integrity: sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==} @@ -12803,6 +12997,7 @@ packages: data-uri-to-buffer: 4.0.1 fetch-blob: 3.2.0 formdata-polyfill: 4.0.10 + dev: false /node-forge@1.3.1: resolution: {integrity: sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==} @@ -12956,6 +13151,20 @@ packages: path-key: 4.0.0 dev: true + /npmlog@4.1.2: + resolution: {integrity: sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==} + dependencies: + are-we-there-yet: 1.1.7 + console-control-strings: 1.1.0 + gauge: 2.7.4 + set-blocking: 2.0.0 + dev: false + + /number-is-nan@1.0.1: + resolution: {integrity: sha512-4jbtZXNAsfZbAHiiqjLPBiCl16dES1zI4Hpzzxw61Tk+loF+sBDBKx1ICKKKwIqQ7M0mFn1TmkN7euSncWgHiQ==} + engines: {node: '>=0.10.0'} + dev: false + /nwsapi@2.2.7: resolution: {integrity: sha512-ub5E4+FBPKwAZx0UwIQOjYWGHTEq5sPqHQNRN8Z9e4A7u3Tj1weLJsL59yH9vmvqEtBHaOmT6cYQKIZOxp35FQ==} dev: true @@ -13039,7 +13248,6 @@ packages: /on-exit-leak-free@2.1.0: resolution: {integrity: sha512-VuCaZZAjReZ3vUwgOB8LxAosIurDiAW0s13rI1YwmaP++jvcxP77AWoQvenZebpCA2m8WC1/EosPYPMjnRAp/w==} - dev: false /on-finished@2.4.1: resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==} @@ -13257,6 +13465,7 @@ packages: /packet-reader@1.0.0: resolution: {integrity: sha512-HAKu/fG3HpHFO0AA8WE8q2g+gBJaZ9MG7fcKk+IJPLTGAD6Psw4443l+9DGRbOIh3/aXr7Phy0TjilYivJo5XQ==} + dev: false /parent-module@1.0.1: resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} @@ -13418,10 +13627,12 @@ packages: /pg-cloudflare@1.1.1: resolution: {integrity: sha512-xWPagP/4B6BgFO+EKz3JONXv3YDgvkbVrGw2mTo3D6tVDQRh1e7cqVGvyR3BE+eQgAvx1XhW/iEASj4/jCWl3Q==} requiresBuild: true + dev: false optional: true /pg-connection-string@2.6.2: resolution: {integrity: sha512-ch6OwaeaPYcova4kKZ15sbJ2hKb/VP48ZD2gE7i1J+L4MspCtBMAx8nMgz7bksc7IojCIIWuEhHibSMFH8m8oA==} + dev: false /pg-int8@1.0.1: resolution: {integrity: sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw==} @@ -13437,6 +13648,7 @@ packages: pg: '>=8.0' dependencies: pg: 8.11.3 + dev: false /pg-protocol@1.6.0: resolution: {integrity: sha512-M+PDm637OY5WM307051+bsDia5Xej6d9IR4GwJse1qA1DIhiKlksvrneZOYQq42OM+spubpcNYEo2FcKQrDk+Q==} @@ -13450,6 +13662,7 @@ packages: postgres-bytea: 1.0.0 postgres-date: 1.0.7 postgres-interval: 1.2.0 + dev: false /pg-types@4.0.1: resolution: {integrity: sha512-hRCSDuLII9/LE3smys1hRHcu5QGcLs9ggT7I/TCs0IE+2Eesxi9+9RWAAwZ0yaGjxoWICF/YHLOEjydGujoJ+g==} @@ -13481,11 +13694,13 @@ packages: pgpass: 1.0.5 optionalDependencies: pg-cloudflare: 1.1.1 + dev: false /pgpass@1.0.5: resolution: {integrity: sha512-FdW9r/jQZhSeohs1Z3sI1yxFQNFvMcnmfuj4WBMUTxOrAyLMaTcE1aAMBiTlbMNaXvBCQuVi0R7hd8udDSP7ug==} dependencies: split2: 4.2.0 + dev: false /picocolors@1.0.0: resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} @@ -13515,14 +13730,12 @@ packages: dependencies: readable-stream: 4.4.2 split2: 4.2.0 - dev: false /pino-abstract-transport@1.1.0: resolution: {integrity: sha512-lsleG3/2a/JIWUtf9Q5gUNErBqwIu1tUKTT3dUzaf5DySw9ra1wcqKjJjLX1VTY64Wk1eEOYsVGSaGfCK85ekA==} dependencies: readable-stream: 4.4.2 split2: 4.2.0 - dev: false /pino-pretty@10.2.0: resolution: {integrity: sha512-tRvpyEmGtc2D+Lr3FulIZ+R1baggQ4S3xD2Ar93KixFEDx6SEAUP3W5aYuEw1C73d6ROrNcB2IXLteW8itlwhA==} @@ -13542,11 +13755,9 @@ packages: secure-json-parse: 2.7.0 sonic-boom: 3.3.0 strip-json-comments: 3.1.1 - dev: false /pino-std-serializers@6.2.2: resolution: {integrity: sha512-cHjPPsE+vhj/tnhCy/wiMh3M3z3h/j15zHQX+S9GkTBgqJuTuJzYJ4gUyACLhDaJ7kk9ba9iRDmbH2tJU03OiA==} - dev: false /pino@8.15.0: resolution: {integrity: sha512-olUADJByk4twxccmAxb1RiGKOSvddHugCV3wkqjyv+3Sooa2KLrmXrKEWOKi0XPCLasRR5jBXxioE1jxUa4KzQ==} @@ -13563,7 +13774,6 @@ packages: safe-stable-stringify: 2.4.3 sonic-boom: 3.3.0 thread-stream: 2.4.0 - dev: false /pirates@4.0.6: resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==} @@ -13614,6 +13824,7 @@ packages: /postgres-array@2.0.0: resolution: {integrity: sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA==} engines: {node: '>=4'} + dev: false /postgres-array@3.0.2: resolution: {integrity: sha512-6faShkdFugNQCLwucjPcY5ARoW1SlbnrZjmGl0IrrqewpvxvhSLHimCVzqeuULCbG0fQv7Dtk1yDbG3xv7Veog==} @@ -13622,6 +13833,7 @@ packages: /postgres-bytea@1.0.0: resolution: {integrity: sha512-xy3pmLuQqRBZBXDULy7KbaitYqLcmxigw14Q5sj8QBVLqEwXfeybIKVWiqAXTlcvdvb0+xkOtDbfQMOf4lST1w==} engines: {node: '>=0.10.0'} + dev: false /postgres-bytea@3.0.0: resolution: {integrity: sha512-CNd4jim9RFPkObHSjVHlVrxoVQXz7quwNFpz7RY1okNNme49+sVyiTvTRobiLV548Hx/hb1BG+iE7h9493WzFw==} @@ -13632,6 +13844,7 @@ packages: /postgres-date@1.0.7: resolution: {integrity: sha512-suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q==} engines: {node: '>=0.10.0'} + dev: false /postgres-date@2.0.1: resolution: {integrity: sha512-YtMKdsDt5Ojv1wQRvUhnyDJNSr2dGIC96mQVKz7xufp07nfuFONzdaowrMHjlAzY6GDLd4f+LUHHAAM1h4MdUw==} @@ -13642,6 +13855,7 @@ packages: engines: {node: '>=0.10.0'} dependencies: xtend: 4.0.2 + dev: false /postgres-interval@3.0.0: resolution: {integrity: sha512-BSNDnbyZCXSxgA+1f5UU2GmwhoI0aU5yMxRGO8CdFEcY2BQF9xm/7MqKnYoM1nJDk8nONNWDk9WeSmePFhQdlw==} @@ -13650,6 +13864,26 @@ packages: /postgres-range@1.1.3: resolution: {integrity: sha512-VdlZoocy5lCP0c/t66xAfclglEapXPCIVhqqJRncYpvbCgImF0w67aPKfbqUMr72tO2k5q0TdTZwCLjPTI6C9g==} + /prebuild-install@6.1.4: + resolution: {integrity: sha512-Z4vpywnK1lBg+zdPCVCsKq0xO66eEV9rWo2zrROGGiRS4JtueBOdlB1FnY8lcy7JsUud/Q3ijUxyWN26Ika0vQ==} + engines: {node: '>=6'} + hasBin: true + dependencies: + detect-libc: 1.0.3 + expand-template: 2.0.3 + github-from-package: 0.0.0 + minimist: 1.2.8 + mkdirp-classic: 0.5.3 + napi-build-utils: 1.0.2 + node-abi: 2.30.1 + npmlog: 4.1.2 + pump: 3.0.0 + rc: 1.2.8 + simple-get: 3.1.1 + tar-fs: 2.1.1 + tunnel-agent: 0.6.0 + dev: false + /prebuild-install@7.1.1: resolution: {integrity: sha512-jAXscXWMcCK8GgCoHOfIr0ODh5ai8mj63L2nWrjuAgXE6tDyYGnx4/8o/rCgU+B4JSyZBKbeZqzhtwtC3ovxjw==} engines: {node: '>=10'} @@ -13727,11 +13961,9 @@ packages: /process-nextick-args@2.0.1: resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} - dev: true /process-warning@2.2.0: resolution: {integrity: sha512-/1WZ8+VQjR6avWOgHeEPd7SDQmFQ1B5mC1eRXsCm5TarlNmx/wCsa5GEaxGm05BORRtyG/Ex/3xq3TuRvq57qg==} - dev: false /process@0.11.10: resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==} @@ -13855,11 +14087,9 @@ packages: /queue-tick@1.0.1: resolution: {integrity: sha512-kJt5qhMxoszgU/62PLP1CJytzd2NKetjSRnyuj31fDd3Rlcz3fzlFdFLD1SItunPwyqEOkca6GbV612BWfaBag==} - dev: false /quick-format-unescaped@4.0.4: resolution: {integrity: sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg==} - dev: false /quick-lru@4.0.1: resolution: {integrity: sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==} @@ -13985,26 +14215,6 @@ packages: /react-fast-compare@3.2.2: resolution: {integrity: sha512-nsO+KSNgo1SbJqJEYRE9ERzo7YtYbou/OqjSQKxV7jcKox7+usiUVZOAC+XnDOABXggQTno0Y1CpVnuWEc1boQ==} - /react-i18next@11.18.6(i18next@22.5.1)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-yHb2F9BiT0lqoQDt8loZ5gWP331GwctHz9tYQ8A2EIEUu+CcEdjBLQWli1USG3RdWQt3W+jqQLg/d4rrQR96LA==} - peerDependencies: - i18next: '>= 19.0.0' - react: '>= 16.8.0' - react-dom: '*' - react-native: '*' - peerDependenciesMeta: - react-dom: - optional: true - react-native: - optional: true - dependencies: - '@babel/runtime': 7.22.15 - html-parse-stringify: 3.0.1 - i18next: 22.5.1 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - dev: false - /react-image-crop@10.1.8(react@18.2.0): resolution: {integrity: sha512-4rb8XtXNx7ZaOZarKKnckgz4xLMvds/YrU6mpJfGhGAsy2Mg4mIw1x+DCCGngVGq2soTBVVOxx2s/C6mTX9+pA==} peerDependencies: @@ -14230,7 +14440,6 @@ 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==} @@ -14249,7 +14458,6 @@ packages: 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==} @@ -14266,7 +14474,6 @@ packages: /real-require@0.2.0: resolution: {integrity: sha512-57frrGM/OCTLqLOAh0mhVA9VBMHd+9U7Zb2THMGdBUoZVOtGbJzjxsYGDJ3A9AYYCP4hn6y1TVbaOfzWtm5GFg==} engines: {node: '>= 12.13.0'} - dev: false /rechoir@0.6.2: resolution: {integrity: sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==} @@ -14559,7 +14766,6 @@ packages: /safe-buffer@5.1.2: resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} - dev: true /safe-buffer@5.2.1: resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} @@ -14574,7 +14780,6 @@ packages: /safe-stable-stringify@2.4.3: resolution: {integrity: sha512-e2bDA2WJT0wxseVd4lsDP4+3ONX6HpMXQa1ZhFQ7SU+GjvORCmShbCMltrtIDfkYhVHrOcPtj+KhmDBdPdZD1g==} engines: {node: '>=10'} - dev: false /safer-buffer@2.1.2: resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} @@ -14653,7 +14858,6 @@ packages: /secure-json-parse@2.7.0: resolution: {integrity: sha512-6aU+Rwsezw7VR8/nyvKTx8QpWH9FrcYiXXlqC4z5d5XQBDRqtbfsRjnwGyqbi3gddNtWHuEk9OANUotL26qKUw==} - dev: false /selderee@0.10.0: resolution: {integrity: sha512-DEL/RW/f4qLw/NrVg97xKaEBC8IpzIG2fvxnzCp3Z4yk4jQ3MXom+Imav9wApjxX2dfS3eW7x0DXafJr85i39A==} @@ -14683,7 +14887,6 @@ packages: /semver@5.7.2: resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==} hasBin: true - dev: true /semver@6.3.1: resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} @@ -14746,6 +14949,10 @@ packages: transitivePeerDependencies: - supports-color + /set-blocking@2.0.0: + resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==} + dev: false + /set-function-length@1.1.1: resolution: {integrity: sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ==} engines: {node: '>= 0.4'} @@ -14779,7 +14986,6 @@ packages: simple-get: 4.0.1 tar-fs: 3.0.4 tunnel-agent: 0.6.0 - dev: false /shebang-command@1.2.0: resolution: {integrity: sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==} @@ -14822,6 +15028,7 @@ packages: /sift@16.0.1: resolution: {integrity: sha512-Wv6BjQ5zbhW7VFefWusVP33T/EM0vYikCaQ2qR8yULbsilAT8/wQaXvuQ3ptGLpoKx+lihJE3y2UTgKDyyNHZQ==} + dev: false /signal-exit@3.0.7: resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} @@ -14829,6 +15036,14 @@ packages: /simple-concat@1.0.1: resolution: {integrity: sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==} + /simple-get@3.1.1: + resolution: {integrity: sha512-CQ5LTKGfCpvE1K0n2us+kuMPbk/q0EKl82s4aheV9oXjFEz6W/Y7oQFVJuU6QG77hRT4Ghb5RURteF5vnWjupA==} + dependencies: + decompress-response: 4.2.1 + once: 1.4.0 + simple-concat: 1.0.1 + dev: false + /simple-get@4.0.1: resolution: {integrity: sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==} dependencies: @@ -14850,7 +15065,6 @@ packages: resolution: {integrity: sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==} dependencies: is-arrayish: 0.3.2 - dev: false /simple-update-notifier@1.1.0: resolution: {integrity: sha512-VpsrsJSUcJEseSbMHkrsrAVSdvVS5I96Qo1QAQ4FxQ9wXFcB+pjj7FB7/us9+GcgfW4ziHtYMc1J0PLczb55mg==} @@ -14962,7 +15176,6 @@ packages: resolution: {integrity: sha512-LYxp34KlZ1a2Jb8ZQgFCK3niIHzibdwtwNUWKg0qQRzsDoJ3Gfgkf8KdBTFU3SkejDEIlWwnSnpVdOZIhFMl/g==} dependencies: atomic-sleep: 1.0.0 - dev: false /sort-keys-length@1.0.1: resolution: {integrity: sha512-GRbEOUqCxemTAk/b32F2xa8wDTs+Z1QHOkbhJDQTvv/6G3ZkbJ+frYWsTcc7cBB3Fu4wy4XlLCuNtJuMn7Gsvw==} @@ -15119,7 +15332,6 @@ packages: dependencies: fast-fifo: 1.3.2 queue-tick: 1.0.1 - dev: false /string-argv@0.3.2: resolution: {integrity: sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==} @@ -15133,6 +15345,15 @@ packages: char-regex: 1.0.2 strip-ansi: 6.0.1 + /string-width@1.0.2: + resolution: {integrity: sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw==} + engines: {node: '>=0.10.0'} + dependencies: + code-point-at: 1.1.0 + is-fullwidth-code-point: 1.0.0 + strip-ansi: 3.0.1 + dev: false + /string-width@4.2.3: resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} engines: {node: '>=8'} @@ -15194,13 +15415,19 @@ packages: resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} dependencies: safe-buffer: 5.1.2 - dev: true /string_decoder@1.3.0: resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} dependencies: safe-buffer: 5.2.1 + /strip-ansi@3.0.1: + resolution: {integrity: sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==} + engines: {node: '>=0.10.0'} + dependencies: + ansi-regex: 2.1.1 + dev: false + /strip-ansi@6.0.1: resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} engines: {node: '>=8'} @@ -15384,7 +15611,6 @@ packages: mkdirp-classic: 0.5.3 pump: 3.0.0 tar-stream: 3.1.6 - dev: false /tar-stream@2.2.0: resolution: {integrity: sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==} @@ -15402,7 +15628,6 @@ packages: b4a: 1.6.4 fast-fifo: 1.3.2 streamx: 2.15.6 - dev: false /teeny-request@8.0.3: resolution: {integrity: sha512-jJZpA5He2y52yUhA7pyAGZlgQpcB+xLjcN0eUFxr9c8hP/H7uOXbBNVo/O0C/xVfJLJs680jvkFgVJEEvk9+ww==} @@ -15514,7 +15739,6 @@ packages: resolution: {integrity: sha512-xZYtOtmnA63zj04Q+F9bdEay5r47bvpo1CaNqsKi7TpoJHcotUez8Fkfo2RJWpW91lnnaApdpRbVwCWsy+ifcw==} dependencies: real-require: 0.2.0 - dev: false /through2@2.0.5: resolution: {integrity: sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==} @@ -16189,11 +16413,6 @@ packages: resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} engines: {node: '>= 0.8'} - /void-elements@3.1.0: - resolution: {integrity: sha512-Dhxzh5HZuiHQhbvTW9AMetFfBHDMYpo23Uo9btPXgdYP+3T5S+p+jgNy7spra+veYhBP2dCSgxR/i2Y02h5/6w==} - engines: {node: '>=0.10.0'} - dev: false - /w3c-xmlserializer@4.0.0: resolution: {integrity: sha512-d+BFHzbiCx6zGfz0HyQ6Rg69w9k19nviJspaj4yNscGjrHu94sVP+aRm75yEbCh+r2/yR+7q6hux9LVtbuTGBw==} engines: {node: '>=14'} @@ -16383,6 +16602,12 @@ packages: dependencies: isexe: 2.0.0 + /wide-align@1.1.5: + resolution: {integrity: sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==} + dependencies: + string-width: 4.2.3 + dev: false + /widest-line@4.0.1: resolution: {integrity: sha512-o0cyEG0e8GPzT4iGHphIOh0cJOV8fivsXxddQasHPHfoZf1ZexrfeA21w2NaEN1RHE+fXlfISmOE8R9N3u3Qig==} engines: {node: '>=12'} diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index 5437012ae..b29c3ce75 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -1,5 +1,6 @@ packages: # all packages in direct subdirs of packages/ - 'packages/*' + - 'test/REST_API' # exclude packages that are inside test directories - - '!**/test/**' + # - '!**/test/**' diff --git a/test/_community/int.spec.ts b/test/_community/int.spec.ts index 99af8beac..f14544365 100644 --- a/test/_community/int.spec.ts +++ b/test/_community/int.spec.ts @@ -1,26 +1,34 @@ -import payload from '../../packages/payload/src' +import type { Payload } from '../../packages/payload/src' + import { devUser } from '../credentials' import { initPayloadTest } from '../helpers/configHelpers' import { postsSlug } from './collections/Posts' require('isomorphic-fetch') -let apiUrl +let payload: Payload +let apiURL: string let jwt const headers = { 'Content-Type': 'application/json', } const { email, password } = devUser + describe('_Community Tests', () => { // --__--__--__--__--__--__--__--__--__ // Boilerplate test setup/teardown // --__--__--__--__--__--__--__--__--__ beforeAll(async () => { - const { serverURL } = await initPayloadTest({ __dirname, init: { local: false } }) - apiUrl = `${serverURL}/api` + const { payload: payloadClient, serverURL } = await initPayloadTest({ + __dirname, + init: { local: false }, + }) - const response = await fetch(`${apiUrl}/users/login`, { + apiURL = `${serverURL}/api` + payload = payloadClient + + const response = await fetch(`${apiURL}/users/login`, { body: JSON.stringify({ email, password, @@ -56,7 +64,7 @@ describe('_Community Tests', () => { }) it('rest API example', async () => { - const newPost = await fetch(`${apiUrl}/${postsSlug}`, { + const newPost = await fetch(`${apiURL}/${postsSlug}`, { method: 'POST', headers: { ...headers, diff --git a/test/auth/AuthDebug.tsx b/test/auth/AuthDebug.tsx index 40db4a28f..c2a1a79a2 100644 --- a/test/auth/AuthDebug.tsx +++ b/test/auth/AuthDebug.tsx @@ -1,9 +1,11 @@ +'use client' + import React, { useEffect, useState } from 'react' import type { User } from '../../packages/payload/src/auth' import type { UIField } from '../../packages/payload/src/fields/config/types' -import { useAuth } from '../../packages/payload/src/admin/components/utilities/Auth' +import { useAuth } from '../../packages/ui' export const AuthDebug: React.FC = () => { const [state, setState] = useState() diff --git a/test/auth/int.spec.ts b/test/auth/int.spec.ts index dbbcd5d89..048e43f54 100644 --- a/test/auth/int.spec.ts +++ b/test/auth/int.spec.ts @@ -1,9 +1,9 @@ import { GraphQLClient } from 'graphql-request' import jwtDecode from 'jwt-decode' +import type { Payload } from '../../packages/payload/src' import type { User } from '../../packages/payload/src/auth' -import payload from '../../packages/payload/src' import configPromise from '../collections-graphql/config' import { devUser } from '../credentials' import { initPayloadTest } from '../helpers/configHelpers' @@ -13,6 +13,7 @@ require('isomorphic-fetch') let apiUrl let client: GraphQLClient +let payload: Payload const headers = { 'Content-Type': 'application/json', @@ -22,7 +23,11 @@ const { email, password } = devUser describe('Auth', () => { beforeAll(async () => { - const { serverURL } = await initPayloadTest({ __dirname, init: { local: false } }) + const { serverURL, payload: payloadClient } = await initPayloadTest({ + __dirname, + init: { local: false }, + }) + payload = payloadClient apiUrl = `${serverURL}/api` const config = await configPromise const url = `${serverURL}${config.routes.api}${config.routes.graphQL}` @@ -35,6 +40,10 @@ describe('Auth', () => { } }) + beforeEach(() => { + jest.resetModules() + }) + describe('GraphQL - admin user', () => { let token let user @@ -653,6 +662,14 @@ describe('Auth', () => { }) }) + describe('REST API', () => { + it('should respond from route handlers', async () => { + const test = await fetch(`${apiUrl}/api/test`) + + expect(test.status).toStrictEqual(200) + }) + }) + describe('API Key', () => { it('should authenticate via the correct API key user', async () => { const usersQuery = await payload.find({ diff --git a/test/buildConfigWithDefaults.ts b/test/buildConfigWithDefaults.ts index 393d5f032..84380ef73 100644 --- a/test/buildConfigWithDefaults.ts +++ b/test/buildConfigWithDefaults.ts @@ -2,8 +2,6 @@ import path from 'path' import type { Config, SanitizedConfig } from '../packages/payload/src/config/types' -import { viteBundler } from '../packages/bundler-vite/src' -import { webpackBundler } from '../packages/bundler-webpack/src' import { mongooseAdapter } from '../packages/db-mongodb/src' import { postgresAdapter } from '../packages/db-postgres/src' import { buildConfig as buildPayloadConfig } from '../packages/payload/src/config/build' @@ -11,11 +9,6 @@ import { slateEditor } from '../packages/richtext-slate/src' // process.env.PAYLOAD_DATABASE = 'postgres' -const bundlerAdapters = { - vite: viteBundler(), - webpack: webpackBundler(), -} - const databaseAdapters = { mongoose: mongooseAdapter({ migrationDir: path.resolve(__dirname, '../packages/db-mongodb/migrations'), @@ -30,10 +23,9 @@ const databaseAdapters = { } export function buildConfigWithDefaults(testConfig?: Partial): Promise { - const [name] = process.argv.slice(2) - const config: Config = { - editor: slateEditor({}), + secret: 'TEST_SECRET', + editor: undefined, rateLimit: { max: 9999999999, window: 15 * 60 * 1000, // 15min default, @@ -53,49 +45,6 @@ export function buildConfigWithDefaults(testConfig?: Partial): Promise { - const existingConfig = - typeof testConfig?.admin?.webpack === 'function' - ? testConfig.admin.webpack(webpackConfig) - : webpackConfig - return { - ...existingConfig, - name, - cache: process.env.NODE_ENV === 'test' ? { type: 'memory' } : existingConfig.cache, - entry: { - main: [ - `webpack-hot-middleware/client?path=${ - testConfig?.routes?.admin || '/admin' - }/__webpack_hmr`, - path.resolve(__dirname, '../packages/payload/src/admin'), - ], - }, - resolve: { - ...existingConfig.resolve, - alias: { - ...existingConfig.resolve?.alias, - [path.resolve(__dirname, '../packages/bundler-vite/src/index')]: path.resolve( - __dirname, - '../packages/bundler-vite/mock.js', - ), - [path.resolve(__dirname, '../packages/bundler-webpack/src/index')]: path.resolve( - __dirname, - '../packages/bundler-webpack/src/mocks/emptyModule.js', - ), - [path.resolve(__dirname, '../packages/db-mongodb/src/index')]: path.resolve( - __dirname, - '../packages/db-mongodb/mock.js', - ), - [path.resolve(__dirname, '../packages/db-postgres/src/index')]: path.resolve( - __dirname, - '../packages/db-postgres/mock.js', - ), - react: path.resolve(__dirname, '../packages/payload/node_modules/react'), - }, - }, - } - }, } if (process.env.PAYLOAD_DISABLE_ADMIN === 'true') { diff --git a/test/collections-rest/config.ts b/test/collections-rest/config.ts index 00c28a8e5..e6bec1532 100644 --- a/test/collections-rest/config.ts +++ b/test/collections-rest/config.ts @@ -40,7 +40,7 @@ export default buildConfigWithDefaults({ { path: '/send-test-email', method: 'get', - handler: async (req, res) => { + handler: async ({ req }) => { await req.payload.sendEmail({ from: 'dev@payloadcms.com', to: devUser.email, @@ -55,19 +55,15 @@ export default buildConfigWithDefaults({ // }, }) - res.status(200).send('Email sent') + return Response.json({ message: 'Email sent' }) }, }, { path: '/internal-error-here', method: 'get', - handler: async (req, res, next) => { - try { - // Throwing an internal error with potentially sensitive data - throw new Error('Lost connection to the Pentagon. Secret data: ******') - } catch (err) { - next(err) - } + handler: () => { + // Throwing an internal error with potentially sensitive data + throw new Error('Lost connection to the Pentagon. Secret data: ******') }, }, ], diff --git a/test/config/config.ts b/test/config/config.ts index de77a5542..d061a0681 100644 --- a/test/config/config.ts +++ b/test/config/config.ts @@ -15,8 +15,8 @@ export default buildConfigWithDefaults({ { path: '/hello', method: 'get', - handler: (_, res): void => { - res.json({ message: 'hi' }) + handler: () => { + return Response.json({ message: 'hi' }) }, custom: { examples: [{ type: 'response', value: { message: 'hi' } }] }, }, @@ -38,9 +38,9 @@ export default buildConfigWithDefaults({ { path: '/greet', method: 'get', - handler: (req, res): void => { - const { name } = req.query - res.json({ message: `Hi ${name}!` }) + handler: ({ req }) => { + const sp = new URL(req.url).searchParams + return Response.json({ message: `Hi ${sp.get('name')}!` }) }, custom: { params: [{ in: 'query', name: 'name', type: 'string' }] }, }, @@ -60,8 +60,8 @@ export default buildConfigWithDefaults({ path: '/config', method: 'get', root: true, - handler: (req, res): void => { - res.json(req.payload.config) + handler: ({ req }) => { + return Response.json(req.payload.config) }, custom: { description: 'Get the sanitized payload config' }, }, diff --git a/test/config/int.spec.ts b/test/config/int.spec.ts index 649553f65..89c35f5c0 100644 --- a/test/config/int.spec.ts +++ b/test/config/int.spec.ts @@ -29,7 +29,7 @@ describe('Config', () => { it('allows a custom field in collection endpoints', () => { const [collection] = payload.config.collections - const [endpoint] = collection.endpoints + const [endpoint] = collection.endpoints || [] expect(endpoint.custom).toEqual({ examples: [{ type: 'response', value: { message: 'hi' } }], @@ -52,7 +52,7 @@ describe('Config', () => { it('allows a custom field in global endpoints', () => { const [global] = payload.config.globals - const [endpoint] = global.endpoints + const [endpoint] = global.endpoints || [] expect(endpoint.custom).toEqual({ params: [{ in: 'query', name: 'name', type: 'string' }] }) }) diff --git a/test/database/int.spec.ts b/test/database/int.spec.ts index c1ded5f85..c9fa26419 100644 --- a/test/database/int.spec.ts +++ b/test/database/int.spec.ts @@ -1,7 +1,7 @@ import { GraphQLClient } from 'graphql-request' import type { TypeWithID } from '../../packages/payload/src/collections/config/types' -import type { PayloadRequest } from '../../packages/payload/src/express/types' +import type { PayloadRequest } from '../../packages/payload/src/types' import payload from '../../packages/payload/src' import { commitTransaction } from '../../packages/payload/src/utilities/commitTransaction' diff --git a/test/dev.ts b/test/dev.ts index be78e94ef..99ec4d139 100644 --- a/test/dev.ts +++ b/test/dev.ts @@ -1,11 +1,10 @@ import * as dotenv from 'dotenv' -import express from 'express' import fs from 'fs' import path from 'path' -import { v4 as uuid } from 'uuid' -import payload from '../packages/payload/src' +import { getPayload } from '../packages/payload/src' import { prettySyncLoggerDestination } from '../packages/payload/src/utilities/logger' +import { bootAdminPanel } from './helpers/bootAdminPanel' import { startLivePreviewDemo } from './live-preview/startLivePreviewDemo' dotenv.config() @@ -46,42 +45,30 @@ if (process.argv.includes('--no-auto-login') && process.env.NODE_ENV !== 'produc process.env.PAYLOAD_PUBLIC_DISABLE_AUTO_LOGIN = 'true' } -const expressApp = express() - const startDev = async () => { - await payload.init({ + const payload = await getPayload({ email: { fromAddress: 'hello@payloadcms.com', fromName: 'Payload', logMockCredentials: false, }, - express: expressApp, - secret: uuid(), + config: require(configPath).default, ...prettySyncLogger, - onInit: async (payload) => { + onInit: (payload) => { payload.logger.info('Payload Dev Server Initialized') }, }) - // Redirect root to Admin panel - expressApp.get('/', (_, res) => { - res.redirect('/admin') - }) - - const externalRouter = express.Router() - - externalRouter.use(payload.authenticate) - if (testSuiteDir === 'live-preview') { await startLivePreviewDemo({ payload, }) } - expressApp.listen(3000, async () => { - payload.logger.info(`Admin URL on http://localhost:3000${payload.getAdminURL()}`) - payload.logger.info(`API URL on http://localhost:3000${payload.getAPIURL()}`) - }) + await bootAdminPanel({ appDir: path.resolve(__dirname, '../packages/dev') }) + + payload.logger.info(`Admin URL on http://localhost:3000${payload.getAdminURL()}`) + payload.logger.info(`API URL on http://localhost:3000${payload.getAPIURL()}`) } // eslint-disable-next-line @typescript-eslint/no-floating-promises diff --git a/test/endpoints/config.ts b/test/endpoints/config.ts index d3f5dfd71..9e02aee91 100644 --- a/test/endpoints/config.ts +++ b/test/endpoints/config.ts @@ -1,5 +1,3 @@ -import path from 'path' - import { buildConfigWithDefaults } from '../buildConfigWithDefaults' import { devUser } from '../credentials' import { collectionEndpoints } from './endpoints/collections' @@ -61,20 +59,6 @@ export default buildConfigWithDefaults({ }, ], endpoints, - admin: { - webpack: (config) => { - return { - ...config, - resolve: { - ...config.resolve, - alias: { - ...config.resolve.alias, - express: path.resolve(__dirname, './mocks/emptyModule.js'), - }, - }, - } - }, - }, onInit: async (payload) => { await payload.create({ collection: 'users', diff --git a/test/endpoints/endpoints/collections.ts b/test/endpoints/endpoints/collections.ts index 88f2978c1..6259c5465 100644 --- a/test/endpoints/endpoints/collections.ts +++ b/test/endpoints/endpoints/collections.ts @@ -1,37 +1,34 @@ -import type { Response } from 'express' - import type { CollectionConfig } from '../../../packages/payload/src/collections/config/types' -import type { PayloadRequest } from '../../../packages/payload/src/express/types' export const collectionEndpoints: CollectionConfig['endpoints'] = [ { path: '/say-hello/joe-bloggs', method: 'get', - handler: (req: PayloadRequest, res: Response): void => { - res.json({ message: 'Hey Joey!' }) + handler: () => { + return Response.json({ message: 'Hey Joey!' }) }, }, { path: '/say-hello/:group/:name', method: 'get', - handler: (req: PayloadRequest, res: Response): void => { - res.json({ message: `Hello ${req.params.name} @ ${req.params.group}` }) + handler: ({ routeParams }) => { + return Response.json({ message: `Hello ${routeParams.name} @ ${routeParams.group}` }) }, }, { path: '/say-hello/:name', method: 'get', - handler: (req: PayloadRequest, res: Response): void => { - res.json({ message: `Hello ${req.params.name}!` }) + handler: ({ routeParams }) => { + return Response.json({ message: `Hello ${routeParams.name}!` }) }, }, { path: '/whoami', method: 'post', - handler: (req: PayloadRequest, res: Response): void => { - res.json({ - name: req.body.name, - age: req.body.age, + handler: ({ req }) => { + return Response.json({ + name: req.data.name, + age: req.data.age, }) }, }, diff --git a/test/endpoints/endpoints/globals.ts b/test/endpoints/endpoints/globals.ts index eafd2eaa0..a5e80c95d 100644 --- a/test/endpoints/endpoints/globals.ts +++ b/test/endpoints/endpoints/globals.ts @@ -1,6 +1,3 @@ -import type { Response } from 'express' - -import type { PayloadRequest } from '../../../packages/payload/src/express/types' import type { GlobalConfig } from '../../../packages/payload/src/globals/config/types' import { globalEndpoint } from '../shared' @@ -9,8 +6,8 @@ export const globalEndpoints: GlobalConfig['endpoints'] = [ { path: `/${globalEndpoint}`, method: 'post', - handler: (req: PayloadRequest, res: Response): void => { - res.json(req.body) + handler: ({ req }) => { + return Response.json(req.body) }, }, ] diff --git a/test/endpoints/endpoints/root.ts b/test/endpoints/endpoints/root.ts index 3990d62de..d2902c6d2 100644 --- a/test/endpoints/endpoints/root.ts +++ b/test/endpoints/endpoints/root.ts @@ -1,9 +1,4 @@ -import type { Response } from 'express' - -import express from 'express' - import type { Config } from '../../../packages/payload/src/config/types' -import type { PayloadRequest } from '../../../packages/payload/src/express/types' import { applicationEndpoint, rootEndpoint } from '../shared' @@ -11,41 +6,38 @@ export const endpoints: Config['endpoints'] = [ { path: `/${applicationEndpoint}`, method: 'post', - handler: (req: PayloadRequest, res: Response): void => { - res.json(req.body) + handler: ({ req }) => { + return Response.json(req.body) }, }, { path: `/${applicationEndpoint}`, method: 'get', - handler: (req: PayloadRequest, res: Response): void => { - res.json({ message: 'Hello, world!' }) + handler: ({ req }) => { + return Response.json({ message: 'Hello, world!' }) }, }, { path: `/${applicationEndpoint}/i18n`, method: 'get', - handler: (req: PayloadRequest, res: Response): void => { - res.json({ message: req.t('general:backToDashboard') }) + handler: ({ req }) => { + return Response.json({ message: req.t('general:backToDashboard') }) }, }, { path: `/${rootEndpoint}`, method: 'get', root: true, - handler: (req: PayloadRequest, res: Response): void => { - res.json({ message: 'Hello, world!' }) + handler: () => { + return Response.json({ message: 'Hello, world!' }) }, }, { path: `/${rootEndpoint}`, method: 'post', root: true, - handler: [ - express.json({ type: 'application/json' }), - (req: PayloadRequest, res: Response): void => { - res.json(req.body) - }, - ], + handler: ({ req }) => { + return Response.json(req.body) + }, }, ] diff --git a/test/helpers/bootAdminPanel.ts b/test/helpers/bootAdminPanel.ts new file mode 100644 index 000000000..979863839 --- /dev/null +++ b/test/helpers/bootAdminPanel.ts @@ -0,0 +1,39 @@ +import { createServer } from 'http' +import next from 'next' +import { parse } from 'url' + +type args = { + appDir: string + port?: number +} +export const bootAdminPanel = async ({ port = 3000, appDir }: args) => { + const serverURL = `http://localhost:${port}` + const app = next({ + dev: true, + hostname: 'localhost', + port, + dir: appDir, + }) + + const handle = app.getRequestHandler() + await app.prepare() + + createServer(async (req, res) => { + try { + const parsedUrl = parse(req.url, true) + console.log('Requested path: ', parsedUrl.path) + await handle(req, res, parsedUrl) + } catch (err) { + console.error('Error occurred handling', req.url, err) + res.statusCode = 500 + res.end('internal server error') + } + }) + .once('error', (err) => { + console.error(err) + process.exit(1) + }) + .listen(port, () => { + console.log(`> Ready on ${serverURL}`) + }) +} diff --git a/test/helpers/configHelpers.ts b/test/helpers/configHelpers.ts index f25f0fa43..c7a920898 100644 --- a/test/helpers/configHelpers.ts +++ b/test/helpers/configHelpers.ts @@ -1,14 +1,12 @@ -import swcRegister from '@swc/register' -import express from 'express' import getPort from 'get-port' import path from 'path' import shelljs from 'shelljs' -import { v4 as uuid } from 'uuid' import type { Payload } from '../../packages/payload/src' import type { InitOptions } from '../../packages/payload/src/config/types' -import payload from '../../packages/payload/src' +import { getPayload } from '../../packages/payload/src' +import { bootAdminPanel } from './bootAdminPanel' type Options = { __dirname: string @@ -29,42 +27,31 @@ export async function initPayloadE2E(__dirname: string): Promise { - const initOptions = { + process.env.PAYLOAD_CONFIG_PATH = path.resolve(options.__dirname, './config.ts') + + const initOptions: InitOptions = { local: true, - secret: uuid(), - mongoURL: `mongodb://localhost/${uuid()}`, + config: require(process.env.PAYLOAD_CONFIG_PATH).default, + // loggerOptions: { + // enabled: false, + // }, ...(options.init || {}), } process.env.PAYLOAD_DROP_DATABASE = 'true' process.env.NODE_ENV = 'test' - process.env.PAYLOAD_CONFIG_PATH = path.resolve(options.__dirname, './config.ts') - if (!initOptions?.local) { - initOptions.express = express() - } - - // eslint-disable-next-line @typescript-eslint/ban-ts-comment - // @ts-ignore - bad @swc/register types - swcRegister({ - sourceMaps: 'inline', - jsc: { - parser: { - syntax: 'typescript', - tsx: true, - }, - }, - module: { - type: 'commonjs', - }, - }) - - await payload.init(initOptions) + const payload = await getPayload(initOptions) const port = await getPort() - if (initOptions.express) { - initOptions.express.listen(port) + const serverURL = `http://localhost:${port}` + + if (!initOptions?.local) { + process.env.APP_ENV = 'test' + process.env.__NEXT_TEST_MODE = 'jest' + await bootAdminPanel({ port, appDir: path.resolve(__dirname, '../../packages/dev') }) + jest.resetModules() } - return { serverURL: `http://localhost:${port}`, payload } + return { serverURL, payload } } diff --git a/test/hooks/int.spec.ts b/test/hooks/int.spec.ts index dd7e58856..3954d22b4 100644 --- a/test/hooks/int.spec.ts +++ b/test/hooks/int.spec.ts @@ -4,7 +4,6 @@ import payload from '../../packages/payload/src' import { AuthenticationError } from '../../packages/payload/src/errors' import { devUser, regularUser } from '../credentials' import { initPayloadTest } from '../helpers/configHelpers' -import { RESTClient } from '../helpers/rest' import { afterOperationSlug } from './collections/AfterOperation' import { chainingHooksSlug } from './collections/ChainingHooks' import { contextHooksSlug } from './collections/ContextHooks' @@ -17,17 +16,14 @@ import { import { relationsSlug } from './collections/Relations' import { transformSlug } from './collections/Transform' import { hooksUsersSlug } from './collections/Users' -import configPromise, { HooksConfig } from './config' +import { HooksConfig } from './config' import { dataHooksGlobalSlug } from './globals/Data' -let client: RESTClient let apiUrl describe('Hooks', () => { beforeAll(async () => { const { serverURL } = await initPayloadTest({ __dirname, init: { local: false } }) - const config = await configPromise - client = new RESTClient(config, { serverURL, defaultSlug: transformSlug }) apiUrl = `${serverURL}/api` }) diff --git a/test/plugin-form-builder/seed/index.ts b/test/plugin-form-builder/seed/index.ts index 0c6add235..3d3a74e20 100644 --- a/test/plugin-form-builder/seed/index.ts +++ b/test/plugin-form-builder/seed/index.ts @@ -1,5 +1,5 @@ import type { Payload } from '../../../packages/payload/src' -import type { PayloadRequest } from '../../../packages/payload/src/express/types' +import type { PayloadRequest } from '../../../packages/payload/src/types' import { formsSlug, pagesSlug } from '../shared' diff --git a/test/plugin-nested-docs/seed/index.ts b/test/plugin-nested-docs/seed/index.ts index 8d2bf94e0..dfe699562 100644 --- a/test/plugin-nested-docs/seed/index.ts +++ b/test/plugin-nested-docs/seed/index.ts @@ -1,5 +1,5 @@ import type { Payload } from '../../../packages/payload/src' -import type { PayloadRequest } from '../../../packages/payload/src/express/types' +import type { PayloadRequest } from '../../../packages/payload/src/types' export const seed = async (payload: Payload): Promise => { payload.logger.info('Seeding data...') diff --git a/test/plugin-search/int.spec.ts b/test/plugin-search/int.spec.ts index 5285602b4..aaa364388 100644 --- a/test/plugin-search/int.spec.ts +++ b/test/plugin-search/int.spec.ts @@ -1,5 +1,5 @@ -import wait from '../../packages/payload/dist/utilities/wait' import payload from '../../packages/payload/src' +import wait from '../../packages/payload/src/utilities/wait' import { initPayloadTest } from '../helpers/configHelpers' describe('Search Plugin', () => { diff --git a/test/relationships/int.spec.ts b/test/relationships/int.spec.ts index 398547148..d55336e82 100644 --- a/test/relationships/int.spec.ts +++ b/test/relationships/int.spec.ts @@ -1,6 +1,6 @@ import { randomBytes } from 'crypto' -import type { PayloadRequest } from '../../packages/payload/src/express/types' +import type { PayloadRequest } from '../../packages/payload/src/types' import type { ChainedRelation, CustomIdNumberRelation, diff --git a/test/tsconfig.json b/test/tsconfig.json index 2618a5883..a52f3dd73 100644 --- a/test/tsconfig.json +++ b/test/tsconfig.json @@ -4,7 +4,7 @@ "noEmit": false /* Do not emit outputs. */, "emitDeclarationOnly": true, "outDir": "./dist" /* Specify an output folder for all emitted files. */, - "rootDir": "../" /* Specify the root folder within your source files. */ + "rootDir": "../" /* Specify the root folder within your source files. */, }, "exclude": ["dist", "build", "node_modules", ".eslintrc.js"], "include": [ @@ -14,6 +14,11 @@ "src/**/*.json", "**/*.ts", "test/**/*.tsx", - "../packages/**/src/**/*.ts" - ] + "../packages/**/src/**/*.ts", + ], + "plugins": [ + { + "name": "next", + }, + ], } diff --git a/test/versions/config.ts b/test/versions/config.ts index fc56cc82d..c8e083e53 100644 --- a/test/versions/config.ts +++ b/test/versions/config.ts @@ -1,5 +1,3 @@ -import path from 'path' - import { buildConfigWithDefaults } from '../buildConfigWithDefaults' import AutosavePosts from './collections/Autosave' import DisablePublish from './collections/DisablePublish' @@ -12,18 +10,6 @@ import DraftGlobal from './globals/Draft' import { clearAndSeedEverything } from './seed' export default buildConfigWithDefaults({ - admin: { - webpack: (config) => ({ - ...config, - resolve: { - ...config.resolve, - alias: { - ...config?.resolve?.alias, - fs: path.resolve(__dirname, './mocks/emptyModule.js'), - }, - }, - }), - }, collections: [DisablePublish, Posts, AutosavePosts, DraftPosts, VersionPosts], globals: [AutosaveGlobal, DraftGlobal, DisablePublishGlobal], indexSortableFields: true,