@payloadcms/next 3.63.0-internal.dc01f92 → 3.64.0-canary.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/withPayload.cjs +34 -69
- package/dist/cjs/withPayload.cjs.map +1 -1
- package/dist/views/Version/RenderFieldsToDiff/fields/Upload/index.d.ts +8 -1
- package/dist/views/Version/RenderFieldsToDiff/fields/Upload/index.d.ts.map +1 -1
- package/dist/views/Version/RenderFieldsToDiff/fields/Upload/index.js +45 -9
- package/dist/views/Version/RenderFieldsToDiff/fields/Upload/index.js.map +1 -1
- package/dist/withPayload.d.ts.map +1 -1
- package/dist/withPayload.js +33 -49
- package/dist/withPayload.js.map +1 -1
- package/package.json +7 -7
package/dist/cjs/withPayload.cjs
CHANGED
|
@@ -23,22 +23,11 @@ _export(exports, {
|
|
|
23
23
|
}
|
|
24
24
|
});
|
|
25
25
|
const withPayload = (nextConfig = {}, options = {})=>{
|
|
26
|
-
const env = nextConfig
|
|
26
|
+
const env = nextConfig.env || {};
|
|
27
27
|
if (nextConfig.experimental?.staleTimes?.dynamic) {
|
|
28
28
|
console.warn('Payload detected a non-zero value for the `staleTimes.dynamic` option in your Next.js config. This will slow down page transitions and may cause stale data to load within the Admin panel. To clear this warning, remove the `staleTimes.dynamic` option from your Next.js config or set it to 0. In the future, Next.js may support scoping this option to specific routes.');
|
|
29
29
|
env.NEXT_PUBLIC_ENABLE_ROUTER_CACHE_REFRESH = 'true';
|
|
30
30
|
}
|
|
31
|
-
if (process.env.PAYLOAD_PATCH_TURBOPACK_WARNINGS !== 'false') {
|
|
32
|
-
const turbopackWarningText = 'Packages that should be external need to be installed in the project directory, so they can be resolved from the output files.\nTry to install it into the project directory by running';
|
|
33
|
-
const consoleWarn = console.warn;
|
|
34
|
-
console.warn = (...args)=>{
|
|
35
|
-
// Force to disable serverExternalPackages warnings: https://github.com/vercel/next.js/issues/68805
|
|
36
|
-
if (typeof args[1] === 'string' && args[1].includes(turbopackWarningText) || typeof args[0] === 'string' && args[0].includes(turbopackWarningText)) {
|
|
37
|
-
return;
|
|
38
|
-
}
|
|
39
|
-
consoleWarn(...args);
|
|
40
|
-
};
|
|
41
|
-
}
|
|
42
31
|
const poweredByHeader = {
|
|
43
32
|
key: 'X-Powered-By',
|
|
44
33
|
value: 'Next.js, Payload'
|
|
@@ -48,23 +37,26 @@ const withPayload = (nextConfig = {}, options = {})=>{
|
|
|
48
37
|
*/ const toReturn = {
|
|
49
38
|
...nextConfig,
|
|
50
39
|
env,
|
|
40
|
+
turbopack: {
|
|
41
|
+
...nextConfig.turbopack || {}
|
|
42
|
+
},
|
|
51
43
|
outputFileTracingExcludes: {
|
|
52
|
-
...nextConfig
|
|
44
|
+
...nextConfig.outputFileTracingExcludes || {},
|
|
53
45
|
'**/*': [
|
|
54
|
-
...nextConfig
|
|
46
|
+
...nextConfig.outputFileTracingExcludes?.['**/*'] || [],
|
|
55
47
|
'drizzle-kit',
|
|
56
48
|
'drizzle-kit/api'
|
|
57
49
|
]
|
|
58
50
|
},
|
|
59
51
|
outputFileTracingIncludes: {
|
|
60
|
-
...nextConfig
|
|
52
|
+
...nextConfig.outputFileTracingIncludes || {},
|
|
61
53
|
'**/*': [
|
|
62
|
-
...nextConfig
|
|
54
|
+
...nextConfig.outputFileTracingIncludes?.['**/*'] || [],
|
|
63
55
|
'@libsql/client'
|
|
64
56
|
]
|
|
65
57
|
},
|
|
66
58
|
// We disable the poweredByHeader here because we add it manually in the headers function below
|
|
67
|
-
...nextConfig
|
|
59
|
+
...nextConfig.poweredByHeader !== false ? {
|
|
68
60
|
poweredByHeader: false
|
|
69
61
|
} : {},
|
|
70
62
|
headers: async ()=>{
|
|
@@ -86,7 +78,7 @@ const withPayload = (nextConfig = {}, options = {})=>{
|
|
|
86
78
|
key: 'Critical-CH',
|
|
87
79
|
value: 'Sec-CH-Prefers-Color-Scheme'
|
|
88
80
|
},
|
|
89
|
-
...nextConfig
|
|
81
|
+
...nextConfig.poweredByHeader !== false ? [
|
|
90
82
|
poweredByHeader
|
|
91
83
|
] : []
|
|
92
84
|
]
|
|
@@ -94,25 +86,34 @@ const withPayload = (nextConfig = {}, options = {})=>{
|
|
|
94
86
|
];
|
|
95
87
|
},
|
|
96
88
|
serverExternalPackages: [
|
|
97
|
-
...nextConfig
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
'
|
|
102
|
-
'
|
|
103
|
-
|
|
104
|
-
//
|
|
89
|
+
...nextConfig.serverExternalPackages || [],
|
|
90
|
+
// These packages always need to be external, both during dev and production. This is because they install dependencies
|
|
91
|
+
// that will error when trying to bundle them (e.g. drizzle-kit, libsql, esbuild etc.).
|
|
92
|
+
// We cannot externalize those problem-packages directly. We can only externalize packages that are manually installed
|
|
93
|
+
// by the end user. Otherwise, the require('externalPackage') calls generated by the bundler would fail during runtime,
|
|
94
|
+
// as you cannot import dependencies of dependencies in a lot of package managers like pnpm. We'd have to force users
|
|
95
|
+
// to install the dependencies directly.
|
|
96
|
+
// Thus, we externalize the "entry-point" = the package that is installed by the end user, which would be our db adapters.
|
|
97
|
+
//
|
|
98
|
+
//
|
|
99
|
+
// External because it installs mongoose (part of default serverExternalPackages: https://github.com/vercel/next.js/blob/canary/packages/next/src/lib/server-external-packages.json => would throw warning if we don't exclude the entry-point package):
|
|
100
|
+
'@payloadcms/db-mongodb',
|
|
101
|
+
// External because they install dependencies like drizzle, libsql, esbuild etc.:
|
|
102
|
+
'@payloadcms/db-postgres',
|
|
103
|
+
'@payloadcms/db-sqlite',
|
|
104
|
+
'@payloadcms/db-vercel-postgres',
|
|
105
|
+
'@payloadcms/drizzle',
|
|
106
|
+
// External because they install @aws-sdk/client-s3:
|
|
107
|
+
'@payloadcms/payload-cloud',
|
|
108
|
+
// External, because it installs import-in-the-middle and require-in-the-middle - both in the default serverExternalPackages list.
|
|
109
|
+
'@sentry/nextjs',
|
|
110
|
+
// TODO: We need to externalize @payloadcms/storage-s3 as well, once Next.js has the ability to exclude @payloadcms/storage-s3/client from being externalized.
|
|
111
|
+
// Do not bundle additional server-only packages during dev to improve compilation speed
|
|
105
112
|
...process.env.NODE_ENV === 'development' && options.devBundleServerPackages === false ? [
|
|
106
113
|
'payload',
|
|
107
|
-
'@payloadcms/db-mongodb',
|
|
108
|
-
'@payloadcms/db-postgres',
|
|
109
|
-
'@payloadcms/db-sqlite',
|
|
110
|
-
'@payloadcms/db-vercel-postgres',
|
|
111
|
-
'@payloadcms/drizzle',
|
|
112
114
|
'@payloadcms/email-nodemailer',
|
|
113
115
|
'@payloadcms/email-resend',
|
|
114
116
|
'@payloadcms/graphql',
|
|
115
|
-
'@payloadcms/payload-cloud',
|
|
116
117
|
'@payloadcms/plugin-redirects'
|
|
117
118
|
] : []
|
|
118
119
|
],
|
|
@@ -122,51 +123,15 @@ const withPayload = (nextConfig = {}, options = {})=>{
|
|
|
122
123
|
...incomingWebpackConfig,
|
|
123
124
|
externals: [
|
|
124
125
|
...incomingWebpackConfig?.externals || [],
|
|
125
|
-
'drizzle-kit',
|
|
126
|
-
'drizzle-kit/api',
|
|
127
|
-
'sharp',
|
|
128
|
-
'libsql',
|
|
129
126
|
'require-in-the-middle'
|
|
130
127
|
],
|
|
131
|
-
ignoreWarnings: [
|
|
132
|
-
...incomingWebpackConfig?.ignoreWarnings || [],
|
|
133
|
-
{
|
|
134
|
-
module: /node_modules\/mongodb\/lib\/utils\.js/
|
|
135
|
-
},
|
|
136
|
-
{
|
|
137
|
-
file: /node_modules\/mongodb\/lib\/utils\.js/
|
|
138
|
-
},
|
|
139
|
-
{
|
|
140
|
-
module: /node_modules\/mongodb\/lib\/bson\.js/
|
|
141
|
-
},
|
|
142
|
-
{
|
|
143
|
-
file: /node_modules\/mongodb\/lib\/bson\.js/
|
|
144
|
-
}
|
|
145
|
-
],
|
|
146
128
|
plugins: [
|
|
147
129
|
...incomingWebpackConfig?.plugins || [],
|
|
148
130
|
// Fix cloudflare:sockets error: https://github.com/vercel/next.js/discussions/50177
|
|
149
131
|
new webpackOptions.webpack.IgnorePlugin({
|
|
150
132
|
resourceRegExp: /^pg-native$|^cloudflare:sockets$/
|
|
151
133
|
})
|
|
152
|
-
]
|
|
153
|
-
resolve: {
|
|
154
|
-
...incomingWebpackConfig?.resolve || {},
|
|
155
|
-
alias: {
|
|
156
|
-
...incomingWebpackConfig?.resolve?.alias || {}
|
|
157
|
-
},
|
|
158
|
-
fallback: {
|
|
159
|
-
...incomingWebpackConfig?.resolve?.fallback || {},
|
|
160
|
-
'@aws-sdk/credential-providers': false,
|
|
161
|
-
'@mongodb-js/zstd': false,
|
|
162
|
-
aws4: false,
|
|
163
|
-
kerberos: false,
|
|
164
|
-
'mongodb-client-encryption': false,
|
|
165
|
-
snappy: false,
|
|
166
|
-
'supports-color': false,
|
|
167
|
-
'yocto-queue': false
|
|
168
|
-
}
|
|
169
|
-
}
|
|
134
|
+
]
|
|
170
135
|
};
|
|
171
136
|
}
|
|
172
137
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/withPayload.js"],"names":["withPayload","nextConfig","options","env","experimental","staleTimes","dynamic","console","warn","NEXT_PUBLIC_ENABLE_ROUTER_CACHE_REFRESH","
|
|
1
|
+
{"version":3,"sources":["../../src/withPayload.js"],"names":["withPayload","nextConfig","options","env","experimental","staleTimes","dynamic","console","warn","NEXT_PUBLIC_ENABLE_ROUTER_CACHE_REFRESH","poweredByHeader","key","value","toReturn","turbopack","outputFileTracingExcludes","outputFileTracingIncludes","headers","headersFromConfig","source","serverExternalPackages","process","NODE_ENV","devBundleServerPackages","webpack","webpackConfig","webpackOptions","incomingWebpackConfig","externals","plugins","IgnorePlugin","resourceRegExp","basePath","NEXT_BASE_PATH"],"mappings":"AAAA;;;;;;GAMG;;;;;;;;;;;QAuIH;eAAA;;QAtIaA;eAAAA;;;AAAN,MAAMA,cAAc,CAACC,aAAa,CAAC,CAAC,EAAEC,UAAU,CAAC,CAAC;IACvD,MAAMC,MAAMF,WAAWE,GAAG,IAAI,CAAC;IAE/B,IAAIF,WAAWG,YAAY,EAAEC,YAAYC,SAAS;QAChDC,QAAQC,IAAI,CACV;QAEFL,IAAIM,uCAAuC,GAAG;IAChD;IAEA,MAAMC,kBAAkB;QACtBC,KAAK;QACLC,OAAO;IACT;IAEA;;GAEC,GACD,MAAMC,WAAW;QACf,GAAGZ,UAAU;QACbE;QACAW,WAAW;YACT,GAAIb,WAAWa,SAAS,IAAI,CAAC,CAAC;QAChC;QACAC,2BAA2B;YACzB,GAAId,WAAWc,yBAAyB,IAAI,CAAC,CAAC;YAC9C,QAAQ;mBACFd,WAAWc,yBAAyB,EAAE,CAAC,OAAO,IAAI,EAAE;gBACxD;gBACA;aACD;QACH;QACAC,2BAA2B;YACzB,GAAIf,WAAWe,yBAAyB,IAAI,CAAC,CAAC;YAC9C,QAAQ;mBAAKf,WAAWe,yBAAyB,EAAE,CAAC,OAAO,IAAI,EAAE;gBAAG;aAAiB;QACvF;QACA,+FAA+F;QAC/F,GAAIf,WAAWS,eAAe,KAAK,QAAQ;YAAEA,iBAAiB;QAAM,IAAI,CAAC,CAAC;QAC1EO,SAAS;YACP,MAAMC,oBAAoB,aAAajB,aAAa,MAAMA,WAAWgB,OAAO,KAAK,EAAE;YAEnF,OAAO;mBACDC,qBAAqB,EAAE;gBAC3B;oBACEC,QAAQ;oBACRF,SAAS;wBACP;4BACEN,KAAK;4BACLC,OAAO;wBACT;wBACA;4BACED,KAAK;4BACLC,OAAO;wBACT;wBACA;4BACED,KAAK;4BACLC,OAAO;wBACT;2BACIX,WAAWS,eAAe,KAAK,QAAQ;4BAACA;yBAAgB,GAAG,EAAE;qBAClE;gBACH;aACD;QACH;QACAU,wBAAwB;eAClBnB,WAAWmB,sBAAsB,IAAI,EAAE;YAC3C,uHAAuH;YACvH,uFAAuF;YACvF,sHAAsH;YACtH,uHAAuH;YACvH,qHAAqH;YACrH,wCAAwC;YACxC,0HAA0H;YAC1H,EAAE;YACF,EAAE;YACF,wPAAwP;YACxP;YACA,iFAAiF;YACjF;YACA;YACA;YACA;YACA,oDAAoD;YACpD;YACA,kIAAkI;YAClI;YACA,8JAA8J;YAC9J,wFAAwF;eACpFC,QAAQlB,GAAG,CAACmB,QAAQ,KAAK,iBAAiBpB,QAAQqB,uBAAuB,KAAK,QAC9E;gBACE;gBACA;gBACA;gBACA;gBACA;aAWD,GACD,EAAE;SACP;QACDC,SAAS,CAACC,eAAeC;YACvB,MAAMC,wBACJ,OAAO1B,WAAWuB,OAAO,KAAK,aAC1BvB,WAAWuB,OAAO,CAACC,eAAeC,kBAClCD;YAEN,OAAO;gBACL,GAAGE,qBAAqB;gBACxBC,WAAW;uBAAKD,uBAAuBC,aAAa,EAAE;oBAAG;iBAAwB;gBACjFC,SAAS;uBACHF,uBAAuBE,WAAW,EAAE;oBACxC,oFAAoF;oBACpF,IAAIH,eAAeF,OAAO,CAACM,YAAY,CAAC;wBACtCC,gBAAgB;oBAClB;iBACD;YACH;QACF;IACF;IAEA,IAAI9B,WAAW+B,QAAQ,EAAE;QACvBnB,SAASV,GAAG,CAAC8B,cAAc,GAAGhC,WAAW+B,QAAQ;IACnD;IAEA,OAAOnB;AACT;MAEA,WAAeb","file":"withPayload.cjs","sourcesContent":["/**\n * @param {import('next').NextConfig} nextConfig\n * @param {Object} [options] - Optional configuration options\n * @param {boolean} [options.devBundleServerPackages] - Whether to bundle server packages in development mode. @default true\n *\n * @returns {import('next').NextConfig}\n * */\nexport const withPayload = (nextConfig = {}, options = {}) => {\n const env = nextConfig.env || {}\n\n if (nextConfig.experimental?.staleTimes?.dynamic) {\n console.warn(\n 'Payload detected a non-zero value for the `staleTimes.dynamic` option in your Next.js config. This will slow down page transitions and may cause stale data to load within the Admin panel. To clear this warning, remove the `staleTimes.dynamic` option from your Next.js config or set it to 0. In the future, Next.js may support scoping this option to specific routes.',\n )\n env.NEXT_PUBLIC_ENABLE_ROUTER_CACHE_REFRESH = 'true'\n }\n\n const poweredByHeader = {\n key: 'X-Powered-By',\n value: 'Next.js, Payload',\n }\n\n /**\n * @type {import('next').NextConfig}\n */\n const toReturn = {\n ...nextConfig,\n env,\n turbopack: {\n ...(nextConfig.turbopack || {}),\n },\n outputFileTracingExcludes: {\n ...(nextConfig.outputFileTracingExcludes || {}),\n '**/*': [\n ...(nextConfig.outputFileTracingExcludes?.['**/*'] || []),\n 'drizzle-kit',\n 'drizzle-kit/api',\n ],\n },\n outputFileTracingIncludes: {\n ...(nextConfig.outputFileTracingIncludes || {}),\n '**/*': [...(nextConfig.outputFileTracingIncludes?.['**/*'] || []), '@libsql/client'],\n },\n // We disable the poweredByHeader here because we add it manually in the headers function below\n ...(nextConfig.poweredByHeader !== false ? { poweredByHeader: false } : {}),\n headers: async () => {\n const headersFromConfig = 'headers' in nextConfig ? await nextConfig.headers() : []\n\n return [\n ...(headersFromConfig || []),\n {\n source: '/:path*',\n headers: [\n {\n key: 'Accept-CH',\n value: 'Sec-CH-Prefers-Color-Scheme',\n },\n {\n key: 'Vary',\n value: 'Sec-CH-Prefers-Color-Scheme',\n },\n {\n key: 'Critical-CH',\n value: 'Sec-CH-Prefers-Color-Scheme',\n },\n ...(nextConfig.poweredByHeader !== false ? [poweredByHeader] : []),\n ],\n },\n ]\n },\n serverExternalPackages: [\n ...(nextConfig.serverExternalPackages || []),\n // These packages always need to be external, both during dev and production. This is because they install dependencies\n // that will error when trying to bundle them (e.g. drizzle-kit, libsql, esbuild etc.).\n // We cannot externalize those problem-packages directly. We can only externalize packages that are manually installed\n // by the end user. Otherwise, the require('externalPackage') calls generated by the bundler would fail during runtime,\n // as you cannot import dependencies of dependencies in a lot of package managers like pnpm. We'd have to force users\n // to install the dependencies directly.\n // Thus, we externalize the \"entry-point\" = the package that is installed by the end user, which would be our db adapters.\n //\n //\n // External because it installs mongoose (part of default serverExternalPackages: https://github.com/vercel/next.js/blob/canary/packages/next/src/lib/server-external-packages.json => would throw warning if we don't exclude the entry-point package):\n '@payloadcms/db-mongodb',\n // External because they install dependencies like drizzle, libsql, esbuild etc.:\n '@payloadcms/db-postgres',\n '@payloadcms/db-sqlite',\n '@payloadcms/db-vercel-postgres',\n '@payloadcms/drizzle',\n // External because they install @aws-sdk/client-s3:\n '@payloadcms/payload-cloud',\n // External, because it installs import-in-the-middle and require-in-the-middle - both in the default serverExternalPackages list.\n '@sentry/nextjs',\n // TODO: We need to externalize @payloadcms/storage-s3 as well, once Next.js has the ability to exclude @payloadcms/storage-s3/client from being externalized.\n // Do not bundle additional server-only packages during dev to improve compilation speed\n ...(process.env.NODE_ENV === 'development' && options.devBundleServerPackages === false\n ? [\n 'payload',\n '@payloadcms/email-nodemailer',\n '@payloadcms/email-resend',\n '@payloadcms/graphql',\n '@payloadcms/plugin-redirects',\n // TODO: Add the following packages, excluding their /client subpath exports, once Next.js supports it\n //'@payloadcms/plugin-cloud-storage',\n //'@payloadcms/plugin-sentry',\n //'@payloadcms/plugin-stripe',\n // @payloadcms/richtext-lexical\n //'@payloadcms/storage-azure',\n //'@payloadcms/storage-gcs',\n //'@payloadcms/storage-s3',\n //'@payloadcms/storage-uploadthing',\n //'@payloadcms/storage-vercel-blob',\n ]\n : []),\n ],\n webpack: (webpackConfig, webpackOptions) => {\n const incomingWebpackConfig =\n typeof nextConfig.webpack === 'function'\n ? nextConfig.webpack(webpackConfig, webpackOptions)\n : webpackConfig\n\n return {\n ...incomingWebpackConfig,\n externals: [...(incomingWebpackConfig?.externals || []), 'require-in-the-middle'],\n plugins: [\n ...(incomingWebpackConfig?.plugins || []),\n // Fix cloudflare:sockets error: https://github.com/vercel/next.js/discussions/50177\n new webpackOptions.webpack.IgnorePlugin({\n resourceRegExp: /^pg-native$|^cloudflare:sockets$/,\n }),\n ],\n }\n },\n }\n\n if (nextConfig.basePath) {\n toReturn.env.NEXT_BASE_PATH = nextConfig.basePath\n }\n\n return toReturn\n}\n\nexport default withPayload\n"]}
|
|
@@ -2,13 +2,19 @@ import type { FileData, PayloadRequest, TypeWithID, UploadField, UploadFieldDiff
|
|
|
2
2
|
import { type I18nClient } from '@payloadcms/translations';
|
|
3
3
|
import './index.scss';
|
|
4
4
|
import React from 'react';
|
|
5
|
-
type
|
|
5
|
+
type NonPolyUploadDoc = (FileData & TypeWithID) | number | string;
|
|
6
|
+
type PolyUploadDoc = {
|
|
7
|
+
relationTo: string;
|
|
8
|
+
value: (FileData & TypeWithID) | number | string;
|
|
9
|
+
};
|
|
10
|
+
type UploadDoc = NonPolyUploadDoc | PolyUploadDoc;
|
|
6
11
|
export declare const Upload: UploadFieldDiffServerComponent;
|
|
7
12
|
export declare const HasManyUploadDiff: React.FC<{
|
|
8
13
|
field: UploadField;
|
|
9
14
|
i18n: I18nClient;
|
|
10
15
|
locale: string;
|
|
11
16
|
nestingLevel?: number;
|
|
17
|
+
polymorphic: boolean;
|
|
12
18
|
req: PayloadRequest;
|
|
13
19
|
valueFrom: Array<UploadDoc>;
|
|
14
20
|
valueTo: Array<UploadDoc>;
|
|
@@ -18,6 +24,7 @@ export declare const SingleUploadDiff: React.FC<{
|
|
|
18
24
|
i18n: I18nClient;
|
|
19
25
|
locale: string;
|
|
20
26
|
nestingLevel?: number;
|
|
27
|
+
polymorphic: boolean;
|
|
21
28
|
req: PayloadRequest;
|
|
22
29
|
valueFrom: UploadDoc;
|
|
23
30
|
valueTo: UploadDoc;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/views/Version/RenderFieldsToDiff/fields/Upload/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,QAAQ,EACR,cAAc,EACd,UAAU,EACV,WAAW,EACX,8BAA8B,EAC/B,MAAM,SAAS,CAAA;AAEhB,OAAO,EAAkB,KAAK,UAAU,EAAE,MAAM,0BAA0B,CAAA;AAG1E,OAAO,cAAc,CAAA;AAErB,OAAO,KAAK,MAAM,OAAO,CAAA;AAIzB,KAAK,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/views/Version/RenderFieldsToDiff/fields/Upload/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,QAAQ,EACR,cAAc,EACd,UAAU,EACV,WAAW,EACX,8BAA8B,EAC/B,MAAM,SAAS,CAAA;AAEhB,OAAO,EAAkB,KAAK,UAAU,EAAE,MAAM,0BAA0B,CAAA;AAG1E,OAAO,cAAc,CAAA;AAErB,OAAO,KAAK,MAAM,OAAO,CAAA;AAIzB,KAAK,gBAAgB,GAAG,CAAC,QAAQ,GAAG,UAAU,CAAC,GAAG,MAAM,GAAG,MAAM,CAAA;AACjE,KAAK,aAAa,GAAG;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,CAAC,QAAQ,GAAG,UAAU,CAAC,GAAG,MAAM,GAAG,MAAM,CAAA;CAAE,CAAA;AAE7F,KAAK,SAAS,GAAG,gBAAgB,GAAG,aAAa,CAAA;AAEjD,eAAO,MAAM,MAAM,EAAE,8BAwCpB,CAAA;AAED,eAAO,MAAM,iBAAiB,EAAE,KAAK,CAAC,EAAE,CAAC;IACvC,KAAK,EAAE,WAAW,CAAA;IAClB,IAAI,EAAE,UAAU,CAAA;IAChB,MAAM,EAAE,MAAM,CAAA;IACd,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,WAAW,EAAE,OAAO,CAAA;IACpB,GAAG,EAAE,cAAc,CAAA;IACnB,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC,CAAA;IAC3B,OAAO,EAAE,KAAK,CAAC,SAAS,CAAC,CAAA;CAC1B,CAiFA,CAAA;AAED,eAAO,MAAM,gBAAgB,EAAE,KAAK,CAAC,EAAE,CAAC;IACtC,KAAK,EAAE,WAAW,CAAA;IAClB,IAAI,EAAE,UAAU,CAAA;IAChB,MAAM,EAAE,MAAM,CAAA;IACd,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,WAAW,EAAE,OAAO,CAAA;IACpB,GAAG,EAAE,cAAc,CAAA;IACnB,SAAS,EAAE,SAAS,CAAA;IACpB,OAAO,EAAE,SAAS,CAAA;CACnB,CA2DA,CAAA"}
|
|
@@ -13,12 +13,15 @@ export const Upload = args => {
|
|
|
13
13
|
req,
|
|
14
14
|
versionValue: valueTo
|
|
15
15
|
} = args;
|
|
16
|
-
|
|
16
|
+
const hasMany = 'hasMany' in field && field.hasMany && Array.isArray(valueTo);
|
|
17
|
+
const polymorphic = Array.isArray(field.relationTo);
|
|
18
|
+
if (hasMany) {
|
|
17
19
|
return /*#__PURE__*/_jsx(HasManyUploadDiff, {
|
|
18
20
|
field: field,
|
|
19
21
|
i18n: i18n,
|
|
20
22
|
locale: locale,
|
|
21
23
|
nestingLevel: nestingLevel,
|
|
24
|
+
polymorphic: polymorphic,
|
|
22
25
|
req: req,
|
|
23
26
|
valueFrom: valueFrom,
|
|
24
27
|
valueTo: valueTo
|
|
@@ -29,6 +32,7 @@ export const Upload = args => {
|
|
|
29
32
|
i18n: i18n,
|
|
30
33
|
locale: locale,
|
|
31
34
|
nestingLevel: nestingLevel,
|
|
35
|
+
polymorphic: polymorphic,
|
|
32
36
|
req: req,
|
|
33
37
|
valueFrom: valueFrom,
|
|
34
38
|
valueTo: valueTo
|
|
@@ -40,6 +44,7 @@ export const HasManyUploadDiff = async args => {
|
|
|
40
44
|
i18n,
|
|
41
45
|
locale,
|
|
42
46
|
nestingLevel,
|
|
47
|
+
polymorphic,
|
|
43
48
|
req,
|
|
44
49
|
valueFrom,
|
|
45
50
|
valueTo
|
|
@@ -48,20 +53,31 @@ export const HasManyUploadDiff = async args => {
|
|
|
48
53
|
let From = '';
|
|
49
54
|
let To = '';
|
|
50
55
|
const showCollectionSlug = Array.isArray(field.relationTo);
|
|
56
|
+
const getUploadDocKey = uploadDoc => {
|
|
57
|
+
if (typeof uploadDoc === 'object' && 'relationTo' in uploadDoc) {
|
|
58
|
+
// Polymorphic case
|
|
59
|
+
const value = uploadDoc.value;
|
|
60
|
+
return typeof value === 'object' ? value.id : value;
|
|
61
|
+
}
|
|
62
|
+
// Non-polymorphic case
|
|
63
|
+
return typeof uploadDoc === 'object' ? uploadDoc.id : uploadDoc;
|
|
64
|
+
};
|
|
51
65
|
const FromComponents = valueFrom ? valueFrom.map(uploadDoc => /*#__PURE__*/_jsx(UploadDocumentDiff, {
|
|
52
66
|
i18n: i18n,
|
|
67
|
+
polymorphic: polymorphic,
|
|
53
68
|
relationTo: field.relationTo,
|
|
54
69
|
req: req,
|
|
55
70
|
showCollectionSlug: showCollectionSlug,
|
|
56
71
|
uploadDoc: uploadDoc
|
|
57
|
-
},
|
|
72
|
+
}, getUploadDocKey(uploadDoc))) : null;
|
|
58
73
|
const ToComponents = valueTo ? valueTo.map(uploadDoc => /*#__PURE__*/_jsx(UploadDocumentDiff, {
|
|
59
74
|
i18n: i18n,
|
|
75
|
+
polymorphic: polymorphic,
|
|
60
76
|
relationTo: field.relationTo,
|
|
61
77
|
req: req,
|
|
62
78
|
showCollectionSlug: showCollectionSlug,
|
|
63
79
|
uploadDoc: uploadDoc
|
|
64
|
-
},
|
|
80
|
+
}, getUploadDocKey(uploadDoc))) : null;
|
|
65
81
|
const diffResult = getHTMLDiffComponents({
|
|
66
82
|
fromHTML: `<div class="${baseClass}-hasMany">` + (FromComponents ? FromComponents.map(component => `<div>${ReactDOMServer.renderToStaticMarkup(component)}</div>`).join('') : '') + '</div>',
|
|
67
83
|
toHTML: `<div class="${baseClass}-hasMany">` + (ToComponents ? ToComponents.map(component => `<div>${ReactDOMServer.renderToStaticMarkup(component)}</div>`).join('') : '') + '</div>',
|
|
@@ -87,6 +103,7 @@ export const SingleUploadDiff = async args => {
|
|
|
87
103
|
i18n,
|
|
88
104
|
locale,
|
|
89
105
|
nestingLevel,
|
|
106
|
+
polymorphic,
|
|
90
107
|
req,
|
|
91
108
|
valueFrom,
|
|
92
109
|
valueTo
|
|
@@ -97,6 +114,7 @@ export const SingleUploadDiff = async args => {
|
|
|
97
114
|
const showCollectionSlug = Array.isArray(field.relationTo);
|
|
98
115
|
const FromComponent = valueFrom ? /*#__PURE__*/_jsx(UploadDocumentDiff, {
|
|
99
116
|
i18n: i18n,
|
|
117
|
+
polymorphic: polymorphic,
|
|
100
118
|
relationTo: field.relationTo,
|
|
101
119
|
req: req,
|
|
102
120
|
showCollectionSlug: showCollectionSlug,
|
|
@@ -104,6 +122,7 @@ export const SingleUploadDiff = async args => {
|
|
|
104
122
|
}) : null;
|
|
105
123
|
const ToComponent = valueTo ? /*#__PURE__*/_jsx(UploadDocumentDiff, {
|
|
106
124
|
i18n: i18n,
|
|
125
|
+
polymorphic: polymorphic,
|
|
107
126
|
relationTo: field.relationTo,
|
|
108
127
|
req: req,
|
|
109
128
|
showCollectionSlug: showCollectionSlug,
|
|
@@ -133,30 +152,47 @@ export const SingleUploadDiff = async args => {
|
|
|
133
152
|
const UploadDocumentDiff = args => {
|
|
134
153
|
const {
|
|
135
154
|
i18n,
|
|
155
|
+
polymorphic,
|
|
136
156
|
relationTo,
|
|
137
157
|
req,
|
|
138
158
|
showCollectionSlug,
|
|
139
159
|
uploadDoc
|
|
140
160
|
} = args;
|
|
141
161
|
let thumbnailSRC = '';
|
|
142
|
-
|
|
143
|
-
|
|
162
|
+
const value = polymorphic ? uploadDoc.value : uploadDoc;
|
|
163
|
+
if (value && typeof value === 'object' && 'thumbnailURL' in value) {
|
|
164
|
+
thumbnailSRC = typeof value.thumbnailURL === 'string' && value.thumbnailURL || typeof value.url === 'string' && value.url || '';
|
|
144
165
|
}
|
|
145
166
|
let filename;
|
|
146
|
-
if (
|
|
147
|
-
filename =
|
|
167
|
+
if (value && typeof value === 'object') {
|
|
168
|
+
filename = value.filename;
|
|
148
169
|
} else {
|
|
149
170
|
filename = `${i18n.t('general:untitled')} - ID: ${uploadDoc}`;
|
|
150
171
|
}
|
|
151
172
|
let pillLabel = null;
|
|
152
173
|
if (showCollectionSlug) {
|
|
153
|
-
|
|
174
|
+
let collectionSlug;
|
|
175
|
+
if (polymorphic && typeof uploadDoc === 'object' && 'relationTo' in uploadDoc) {
|
|
176
|
+
collectionSlug = uploadDoc.relationTo;
|
|
177
|
+
} else {
|
|
178
|
+
collectionSlug = typeof relationTo === 'string' ? relationTo : relationTo[0];
|
|
179
|
+
}
|
|
180
|
+
const uploadConfig = req.payload.collections[collectionSlug].config;
|
|
154
181
|
pillLabel = uploadConfig.labels?.singular ? getTranslation(uploadConfig.labels.singular, i18n) : uploadConfig.slug;
|
|
155
182
|
}
|
|
183
|
+
let id;
|
|
184
|
+
if (polymorphic && typeof uploadDoc === 'object' && 'relationTo' in uploadDoc) {
|
|
185
|
+
const polyValue = uploadDoc.value;
|
|
186
|
+
id = typeof polyValue === 'object' ? polyValue.id : polyValue;
|
|
187
|
+
} else if (typeof uploadDoc === 'object' && 'id' in uploadDoc) {
|
|
188
|
+
id = uploadDoc.id;
|
|
189
|
+
} else if (typeof uploadDoc === 'string' || typeof uploadDoc === 'number') {
|
|
190
|
+
id = uploadDoc;
|
|
191
|
+
}
|
|
156
192
|
return /*#__PURE__*/_jsx("div", {
|
|
157
193
|
className: `${baseClass}`,
|
|
158
194
|
"data-enable-match": "true",
|
|
159
|
-
"data-id":
|
|
195
|
+
"data-id": id,
|
|
160
196
|
"data-relation-to": relationTo,
|
|
161
197
|
children: /*#__PURE__*/_jsxs("div", {
|
|
162
198
|
className: `${baseClass}__card`,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["getTranslation","FieldDiffContainer","File","getHTMLDiffComponents","React","baseClass","Upload","args","comparisonValue","valueFrom","field","i18n","locale","nestingLevel","req","versionValue","valueTo","hasMany","Array","isArray","_jsx","HasManyUploadDiff","SingleUploadDiff","ReactDOMServer","default","From","To","showCollectionSlug","relationTo","FromComponents","map","uploadDoc","UploadDocumentDiff","id","ToComponents","diffResult","fromHTML","component","renderToStaticMarkup","join","toHTML","tokenizeByCharacter","className","label","FromComponent","ToComponent","fromHtml","toHtml","thumbnailSRC","thumbnailURL","url","filename","t","pillLabel","uploadConfig","payload","collections","config","labels","singular","slug","_jsxs","length","alt","src"],"sources":["../../../../../../src/views/Version/RenderFieldsToDiff/fields/Upload/index.tsx"],"sourcesContent":["import type {\n FileData,\n PayloadRequest,\n TypeWithID,\n UploadField,\n UploadFieldDiffServerComponent,\n} from 'payload'\n\nimport { getTranslation, type I18nClient } from '@payloadcms/translations'\nimport { FieldDiffContainer, File, getHTMLDiffComponents } from '@payloadcms/ui/rsc'\n\nimport './index.scss'\n\nimport React from 'react'\n\nconst baseClass = 'upload-diff'\n\ntype UploadDoc = (FileData & TypeWithID) | string\n\nexport const Upload: UploadFieldDiffServerComponent = (args) => {\n const {\n comparisonValue: valueFrom,\n field,\n i18n,\n locale,\n nestingLevel,\n req,\n versionValue: valueTo,\n } = args\n\n if ('hasMany' in field && field.hasMany && Array.isArray(valueTo)) {\n return (\n <HasManyUploadDiff\n field={field}\n i18n={i18n}\n locale={locale}\n nestingLevel={nestingLevel}\n req={req}\n valueFrom={valueFrom as UploadDoc[]}\n valueTo={valueTo as UploadDoc[]}\n />\n )\n }\n\n return (\n <SingleUploadDiff\n field={field}\n i18n={i18n}\n locale={locale}\n nestingLevel={nestingLevel}\n req={req}\n valueFrom={valueFrom as UploadDoc}\n valueTo={valueTo as UploadDoc}\n />\n )\n}\n\nexport const HasManyUploadDiff: React.FC<{\n field: UploadField\n i18n: I18nClient\n locale: string\n nestingLevel?: number\n req: PayloadRequest\n valueFrom: Array<UploadDoc>\n valueTo: Array<UploadDoc>\n}> = async (args) => {\n const { field, i18n, locale, nestingLevel, req, valueFrom, valueTo } = args\n const ReactDOMServer = (await import('react-dom/server')).default\n\n let From: React.ReactNode = ''\n let To: React.ReactNode = ''\n\n const showCollectionSlug = Array.isArray(field.relationTo)\n\n const FromComponents = valueFrom\n ? valueFrom.map((uploadDoc) => (\n <UploadDocumentDiff\n i18n={i18n}\n key={typeof uploadDoc === 'object' ? uploadDoc.id : uploadDoc}\n relationTo={field.relationTo}\n req={req}\n showCollectionSlug={showCollectionSlug}\n uploadDoc={uploadDoc}\n />\n ))\n : null\n const ToComponents = valueTo\n ? valueTo.map((uploadDoc) => (\n <UploadDocumentDiff\n i18n={i18n}\n key={typeof uploadDoc === 'object' ? uploadDoc.id : uploadDoc}\n relationTo={field.relationTo}\n req={req}\n showCollectionSlug={showCollectionSlug}\n uploadDoc={uploadDoc}\n />\n ))\n : null\n\n const diffResult = getHTMLDiffComponents({\n fromHTML:\n `<div class=\"${baseClass}-hasMany\">` +\n (FromComponents\n ? FromComponents.map(\n (component) => `<div>${ReactDOMServer.renderToStaticMarkup(component)}</div>`,\n ).join('')\n : '') +\n '</div>',\n toHTML:\n `<div class=\"${baseClass}-hasMany\">` +\n (ToComponents\n ? ToComponents.map(\n (component) => `<div>${ReactDOMServer.renderToStaticMarkup(component)}</div>`,\n ).join('')\n : '') +\n '</div>',\n tokenizeByCharacter: false,\n })\n From = diffResult.From\n To = diffResult.To\n\n return (\n <FieldDiffContainer\n className={`${baseClass}-container ${baseClass}-container--hasMany`}\n From={From}\n i18n={i18n}\n label={{\n label: field.label,\n locale,\n }}\n nestingLevel={nestingLevel}\n To={To}\n />\n )\n}\n\nexport const SingleUploadDiff: React.FC<{\n field: UploadField\n i18n: I18nClient\n locale: string\n nestingLevel?: number\n req: PayloadRequest\n valueFrom: UploadDoc\n valueTo: UploadDoc\n}> = async (args) => {\n const { field, i18n, locale, nestingLevel, req, valueFrom, valueTo } = args\n\n const ReactDOMServer = (await import('react-dom/server')).default\n\n let From: React.ReactNode = ''\n let To: React.ReactNode = ''\n\n const showCollectionSlug = Array.isArray(field.relationTo)\n\n const FromComponent = valueFrom ? (\n <UploadDocumentDiff\n i18n={i18n}\n relationTo={field.relationTo}\n req={req}\n showCollectionSlug={showCollectionSlug}\n uploadDoc={valueFrom}\n />\n ) : null\n const ToComponent = valueTo ? (\n <UploadDocumentDiff\n i18n={i18n}\n relationTo={field.relationTo}\n req={req}\n showCollectionSlug={showCollectionSlug}\n uploadDoc={valueTo}\n />\n ) : null\n\n const fromHtml = FromComponent\n ? ReactDOMServer.renderToStaticMarkup(FromComponent)\n : '<p>' + '' + '</p>'\n const toHtml = ToComponent\n ? ReactDOMServer.renderToStaticMarkup(ToComponent)\n : '<p>' + '' + '</p>'\n\n const diffResult = getHTMLDiffComponents({\n fromHTML: fromHtml,\n toHTML: toHtml,\n tokenizeByCharacter: false,\n })\n From = diffResult.From\n To = diffResult.To\n\n return (\n <FieldDiffContainer\n className={`${baseClass}-container ${baseClass}-container--hasOne`}\n From={From}\n i18n={i18n}\n label={{\n label: field.label,\n locale,\n }}\n nestingLevel={nestingLevel}\n To={To}\n />\n )\n}\n\nconst UploadDocumentDiff = (args: {\n i18n: I18nClient\n relationTo: string\n req: PayloadRequest\n showCollectionSlug?: boolean\n uploadDoc: UploadDoc\n}) => {\n const { i18n, relationTo, req, showCollectionSlug, uploadDoc } = args\n\n let thumbnailSRC: string = ''\n if (uploadDoc && typeof uploadDoc === 'object' && 'thumbnailURL' in uploadDoc) {\n thumbnailSRC =\n (typeof uploadDoc.thumbnailURL === 'string' && uploadDoc.thumbnailURL) ||\n (typeof uploadDoc.url === 'string' && uploadDoc.url) ||\n ''\n }\n\n let filename: string\n if (uploadDoc && typeof uploadDoc === 'object') {\n filename = uploadDoc.filename\n } else {\n filename = `${i18n.t('general:untitled')} - ID: ${uploadDoc as number | string}`\n }\n\n let pillLabel: null | string = null\n\n if (showCollectionSlug) {\n const uploadConfig = req.payload.collections[relationTo].config\n pillLabel = uploadConfig.labels?.singular\n ? getTranslation(uploadConfig.labels.singular, i18n)\n : uploadConfig.slug\n }\n\n return (\n <div\n className={`${baseClass}`}\n data-enable-match=\"true\"\n data-id={typeof uploadDoc === 'object' ? uploadDoc?.id : uploadDoc}\n data-relation-to={relationTo}\n >\n <div className={`${baseClass}__card`}>\n <div className={`${baseClass}__thumbnail`}>\n {thumbnailSRC?.length ? <img alt={filename} src={thumbnailSRC} /> : <File />}\n </div>\n {pillLabel && (\n <div className={`${baseClass}__pill`} data-enable-match=\"false\">\n <span>{pillLabel}</span>\n </div>\n )}\n <div className={`${baseClass}__info`} data-enable-match=\"false\">\n <strong>{filename}</strong>\n </div>\n </div>\n </div>\n )\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"index.js","names":["getTranslation","FieldDiffContainer","File","getHTMLDiffComponents","React","baseClass","Upload","args","comparisonValue","valueFrom","field","i18n","locale","nestingLevel","req","versionValue","valueTo","hasMany","Array","isArray","polymorphic","relationTo","_jsx","HasManyUploadDiff","SingleUploadDiff","ReactDOMServer","default","From","To","showCollectionSlug","getUploadDocKey","uploadDoc","value","id","FromComponents","map","UploadDocumentDiff","ToComponents","diffResult","fromHTML","component","renderToStaticMarkup","join","toHTML","tokenizeByCharacter","className","label","FromComponent","ToComponent","fromHtml","toHtml","thumbnailSRC","thumbnailURL","url","filename","t","pillLabel","collectionSlug","uploadConfig","payload","collections","config","labels","singular","slug","polyValue","_jsxs","length","alt","src"],"sources":["../../../../../../src/views/Version/RenderFieldsToDiff/fields/Upload/index.tsx"],"sourcesContent":["import type {\n FileData,\n PayloadRequest,\n TypeWithID,\n UploadField,\n UploadFieldDiffServerComponent,\n} from 'payload'\n\nimport { getTranslation, type I18nClient } from '@payloadcms/translations'\nimport { FieldDiffContainer, File, getHTMLDiffComponents } from '@payloadcms/ui/rsc'\n\nimport './index.scss'\n\nimport React from 'react'\n\nconst baseClass = 'upload-diff'\n\ntype NonPolyUploadDoc = (FileData & TypeWithID) | number | string\ntype PolyUploadDoc = { relationTo: string; value: (FileData & TypeWithID) | number | string }\n\ntype UploadDoc = NonPolyUploadDoc | PolyUploadDoc\n\nexport const Upload: UploadFieldDiffServerComponent = (args) => {\n const {\n comparisonValue: valueFrom,\n field,\n i18n,\n locale,\n nestingLevel,\n req,\n versionValue: valueTo,\n } = args\n const hasMany = 'hasMany' in field && field.hasMany && Array.isArray(valueTo)\n const polymorphic = Array.isArray(field.relationTo)\n\n if (hasMany) {\n return (\n <HasManyUploadDiff\n field={field}\n i18n={i18n}\n locale={locale}\n nestingLevel={nestingLevel}\n polymorphic={polymorphic}\n req={req}\n valueFrom={valueFrom as UploadDoc[]}\n valueTo={valueTo as UploadDoc[]}\n />\n )\n }\n\n return (\n <SingleUploadDiff\n field={field}\n i18n={i18n}\n locale={locale}\n nestingLevel={nestingLevel}\n polymorphic={polymorphic}\n req={req}\n valueFrom={valueFrom as UploadDoc}\n valueTo={valueTo as UploadDoc}\n />\n )\n}\n\nexport const HasManyUploadDiff: React.FC<{\n field: UploadField\n i18n: I18nClient\n locale: string\n nestingLevel?: number\n polymorphic: boolean\n req: PayloadRequest\n valueFrom: Array<UploadDoc>\n valueTo: Array<UploadDoc>\n}> = async (args) => {\n const { field, i18n, locale, nestingLevel, polymorphic, req, valueFrom, valueTo } = args\n const ReactDOMServer = (await import('react-dom/server')).default\n\n let From: React.ReactNode = ''\n let To: React.ReactNode = ''\n\n const showCollectionSlug = Array.isArray(field.relationTo)\n\n const getUploadDocKey = (uploadDoc: UploadDoc): number | string => {\n if (typeof uploadDoc === 'object' && 'relationTo' in uploadDoc) {\n // Polymorphic case\n const value = uploadDoc.value\n return typeof value === 'object' ? value.id : value\n }\n // Non-polymorphic case\n return typeof uploadDoc === 'object' ? uploadDoc.id : uploadDoc\n }\n\n const FromComponents = valueFrom\n ? valueFrom.map((uploadDoc) => (\n <UploadDocumentDiff\n i18n={i18n}\n key={getUploadDocKey(uploadDoc)}\n polymorphic={polymorphic}\n relationTo={field.relationTo}\n req={req}\n showCollectionSlug={showCollectionSlug}\n uploadDoc={uploadDoc}\n />\n ))\n : null\n const ToComponents = valueTo\n ? valueTo.map((uploadDoc) => (\n <UploadDocumentDiff\n i18n={i18n}\n key={getUploadDocKey(uploadDoc)}\n polymorphic={polymorphic}\n relationTo={field.relationTo}\n req={req}\n showCollectionSlug={showCollectionSlug}\n uploadDoc={uploadDoc}\n />\n ))\n : null\n\n const diffResult = getHTMLDiffComponents({\n fromHTML:\n `<div class=\"${baseClass}-hasMany\">` +\n (FromComponents\n ? FromComponents.map(\n (component) => `<div>${ReactDOMServer.renderToStaticMarkup(component)}</div>`,\n ).join('')\n : '') +\n '</div>',\n toHTML:\n `<div class=\"${baseClass}-hasMany\">` +\n (ToComponents\n ? ToComponents.map(\n (component) => `<div>${ReactDOMServer.renderToStaticMarkup(component)}</div>`,\n ).join('')\n : '') +\n '</div>',\n tokenizeByCharacter: false,\n })\n From = diffResult.From\n To = diffResult.To\n\n return (\n <FieldDiffContainer\n className={`${baseClass}-container ${baseClass}-container--hasMany`}\n From={From}\n i18n={i18n}\n label={{\n label: field.label,\n locale,\n }}\n nestingLevel={nestingLevel}\n To={To}\n />\n )\n}\n\nexport const SingleUploadDiff: React.FC<{\n field: UploadField\n i18n: I18nClient\n locale: string\n nestingLevel?: number\n polymorphic: boolean\n req: PayloadRequest\n valueFrom: UploadDoc\n valueTo: UploadDoc\n}> = async (args) => {\n const { field, i18n, locale, nestingLevel, polymorphic, req, valueFrom, valueTo } = args\n\n const ReactDOMServer = (await import('react-dom/server')).default\n\n let From: React.ReactNode = ''\n let To: React.ReactNode = ''\n\n const showCollectionSlug = Array.isArray(field.relationTo)\n\n const FromComponent = valueFrom ? (\n <UploadDocumentDiff\n i18n={i18n}\n polymorphic={polymorphic}\n relationTo={field.relationTo}\n req={req}\n showCollectionSlug={showCollectionSlug}\n uploadDoc={valueFrom}\n />\n ) : null\n const ToComponent = valueTo ? (\n <UploadDocumentDiff\n i18n={i18n}\n polymorphic={polymorphic}\n relationTo={field.relationTo}\n req={req}\n showCollectionSlug={showCollectionSlug}\n uploadDoc={valueTo}\n />\n ) : null\n\n const fromHtml = FromComponent\n ? ReactDOMServer.renderToStaticMarkup(FromComponent)\n : '<p>' + '' + '</p>'\n const toHtml = ToComponent\n ? ReactDOMServer.renderToStaticMarkup(ToComponent)\n : '<p>' + '' + '</p>'\n\n const diffResult = getHTMLDiffComponents({\n fromHTML: fromHtml,\n toHTML: toHtml,\n tokenizeByCharacter: false,\n })\n From = diffResult.From\n To = diffResult.To\n\n return (\n <FieldDiffContainer\n className={`${baseClass}-container ${baseClass}-container--hasOne`}\n From={From}\n i18n={i18n}\n label={{\n label: field.label,\n locale,\n }}\n nestingLevel={nestingLevel}\n To={To}\n />\n )\n}\n\nconst UploadDocumentDiff = (args: {\n i18n: I18nClient\n polymorphic: boolean\n relationTo: string | string[]\n req: PayloadRequest\n showCollectionSlug?: boolean\n uploadDoc: UploadDoc\n}) => {\n const { i18n, polymorphic, relationTo, req, showCollectionSlug, uploadDoc } = args\n\n let thumbnailSRC: string = ''\n\n const value = polymorphic\n ? (uploadDoc as { relationTo: string; value: FileData & TypeWithID }).value\n : (uploadDoc as FileData & TypeWithID)\n\n if (value && typeof value === 'object' && 'thumbnailURL' in value) {\n thumbnailSRC =\n (typeof value.thumbnailURL === 'string' && value.thumbnailURL) ||\n (typeof value.url === 'string' && value.url) ||\n ''\n }\n\n let filename: string\n if (value && typeof value === 'object') {\n filename = value.filename\n } else {\n filename = `${i18n.t('general:untitled')} - ID: ${uploadDoc as number | string}`\n }\n\n let pillLabel: null | string = null\n\n if (showCollectionSlug) {\n let collectionSlug: string\n if (polymorphic && typeof uploadDoc === 'object' && 'relationTo' in uploadDoc) {\n collectionSlug = uploadDoc.relationTo\n } else {\n collectionSlug = typeof relationTo === 'string' ? relationTo : relationTo[0]\n }\n const uploadConfig = req.payload.collections[collectionSlug].config\n pillLabel = uploadConfig.labels?.singular\n ? getTranslation(uploadConfig.labels.singular, i18n)\n : uploadConfig.slug\n }\n\n let id: number | string | undefined\n if (polymorphic && typeof uploadDoc === 'object' && 'relationTo' in uploadDoc) {\n const polyValue = uploadDoc.value\n id = typeof polyValue === 'object' ? polyValue.id : polyValue\n } else if (typeof uploadDoc === 'object' && 'id' in uploadDoc) {\n id = uploadDoc.id\n } else if (typeof uploadDoc === 'string' || typeof uploadDoc === 'number') {\n id = uploadDoc\n }\n\n return (\n <div\n className={`${baseClass}`}\n data-enable-match=\"true\"\n data-id={id}\n data-relation-to={relationTo}\n >\n <div className={`${baseClass}__card`}>\n <div className={`${baseClass}__thumbnail`}>\n {thumbnailSRC?.length ? <img alt={filename} src={thumbnailSRC} /> : <File />}\n </div>\n {pillLabel && (\n <div className={`${baseClass}__pill`} data-enable-match=\"false\">\n <span>{pillLabel}</span>\n </div>\n )}\n <div className={`${baseClass}__info`} data-enable-match=\"false\">\n <strong>{filename}</strong>\n </div>\n </div>\n </div>\n )\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"withPayload.d.ts","sourceRoot":"","sources":["../src/withPayload.js"],"names":[],"mappings":"AAOO,yCANI,OAAO,MAAM,EAAE,UAAU,YAEjC;IAA0B,uBAAuB,GAAzC,OAAO;CAA6F,GAElG,OAAO,MAAM,EAAE,UAAU,
|
|
1
|
+
{"version":3,"file":"withPayload.d.ts","sourceRoot":"","sources":["../src/withPayload.js"],"names":[],"mappings":"AAOO,yCANI,OAAO,MAAM,EAAE,UAAU,YAEjC;IAA0B,uBAAuB,GAAzC,OAAO;CAA6F,GAElG,OAAO,MAAM,EAAE,UAAU,CAsIrC"}
|
package/dist/withPayload.js
CHANGED
|
@@ -5,22 +5,11 @@
|
|
|
5
5
|
*
|
|
6
6
|
* @returns {import('next').NextConfig}
|
|
7
7
|
* */export const withPayload = (nextConfig = {}, options = {}) => {
|
|
8
|
-
const env = nextConfig
|
|
8
|
+
const env = nextConfig.env || {};
|
|
9
9
|
if (nextConfig.experimental?.staleTimes?.dynamic) {
|
|
10
10
|
console.warn('Payload detected a non-zero value for the `staleTimes.dynamic` option in your Next.js config. This will slow down page transitions and may cause stale data to load within the Admin panel. To clear this warning, remove the `staleTimes.dynamic` option from your Next.js config or set it to 0. In the future, Next.js may support scoping this option to specific routes.');
|
|
11
11
|
env.NEXT_PUBLIC_ENABLE_ROUTER_CACHE_REFRESH = 'true';
|
|
12
12
|
}
|
|
13
|
-
if (process.env.PAYLOAD_PATCH_TURBOPACK_WARNINGS !== 'false') {
|
|
14
|
-
const turbopackWarningText = 'Packages that should be external need to be installed in the project directory, so they can be resolved from the output files.\nTry to install it into the project directory by running';
|
|
15
|
-
const consoleWarn = console.warn;
|
|
16
|
-
console.warn = (...args) => {
|
|
17
|
-
// Force to disable serverExternalPackages warnings: https://github.com/vercel/next.js/issues/68805
|
|
18
|
-
if (typeof args[1] === 'string' && args[1].includes(turbopackWarningText) || typeof args[0] === 'string' && args[0].includes(turbopackWarningText)) {
|
|
19
|
-
return;
|
|
20
|
-
}
|
|
21
|
-
consoleWarn(...args);
|
|
22
|
-
};
|
|
23
|
-
}
|
|
24
13
|
const poweredByHeader = {
|
|
25
14
|
key: 'X-Powered-By',
|
|
26
15
|
value: 'Next.js, Payload'
|
|
@@ -31,16 +20,19 @@
|
|
|
31
20
|
const toReturn = {
|
|
32
21
|
...nextConfig,
|
|
33
22
|
env,
|
|
23
|
+
turbopack: {
|
|
24
|
+
...(nextConfig.turbopack || {})
|
|
25
|
+
},
|
|
34
26
|
outputFileTracingExcludes: {
|
|
35
|
-
...(nextConfig
|
|
36
|
-
'**/*': [...(nextConfig
|
|
27
|
+
...(nextConfig.outputFileTracingExcludes || {}),
|
|
28
|
+
'**/*': [...(nextConfig.outputFileTracingExcludes?.['**/*'] || []), 'drizzle-kit', 'drizzle-kit/api']
|
|
37
29
|
},
|
|
38
30
|
outputFileTracingIncludes: {
|
|
39
|
-
...(nextConfig
|
|
40
|
-
'**/*': [...(nextConfig
|
|
31
|
+
...(nextConfig.outputFileTracingIncludes || {}),
|
|
32
|
+
'**/*': [...(nextConfig.outputFileTracingIncludes?.['**/*'] || []), '@libsql/client']
|
|
41
33
|
},
|
|
42
34
|
// We disable the poweredByHeader here because we add it manually in the headers function below
|
|
43
|
-
...(nextConfig
|
|
35
|
+
...(nextConfig.poweredByHeader !== false ? {
|
|
44
36
|
poweredByHeader: false
|
|
45
37
|
} : {}),
|
|
46
38
|
headers: async () => {
|
|
@@ -56,48 +48,40 @@
|
|
|
56
48
|
}, {
|
|
57
49
|
key: 'Critical-CH',
|
|
58
50
|
value: 'Sec-CH-Prefers-Color-Scheme'
|
|
59
|
-
}, ...(nextConfig
|
|
51
|
+
}, ...(nextConfig.poweredByHeader !== false ? [poweredByHeader] : [])]
|
|
60
52
|
}];
|
|
61
53
|
},
|
|
62
|
-
serverExternalPackages: [...(nextConfig
|
|
63
|
-
//
|
|
64
|
-
|
|
54
|
+
serverExternalPackages: [...(nextConfig.serverExternalPackages || []),
|
|
55
|
+
// These packages always need to be external, both during dev and production. This is because they install dependencies
|
|
56
|
+
// that will error when trying to bundle them (e.g. drizzle-kit, libsql, esbuild etc.).
|
|
57
|
+
// We cannot externalize those problem-packages directly. We can only externalize packages that are manually installed
|
|
58
|
+
// by the end user. Otherwise, the require('externalPackage') calls generated by the bundler would fail during runtime,
|
|
59
|
+
// as you cannot import dependencies of dependencies in a lot of package managers like pnpm. We'd have to force users
|
|
60
|
+
// to install the dependencies directly.
|
|
61
|
+
// Thus, we externalize the "entry-point" = the package that is installed by the end user, which would be our db adapters.
|
|
62
|
+
//
|
|
63
|
+
//
|
|
64
|
+
// External because it installs mongoose (part of default serverExternalPackages: https://github.com/vercel/next.js/blob/canary/packages/next/src/lib/server-external-packages.json => would throw warning if we don't exclude the entry-point package):
|
|
65
|
+
'@payloadcms/db-mongodb',
|
|
66
|
+
// External because they install dependencies like drizzle, libsql, esbuild etc.:
|
|
67
|
+
'@payloadcms/db-postgres', '@payloadcms/db-sqlite', '@payloadcms/db-vercel-postgres', '@payloadcms/drizzle',
|
|
68
|
+
// External because they install @aws-sdk/client-s3:
|
|
69
|
+
'@payloadcms/payload-cloud',
|
|
70
|
+
// External, because it installs import-in-the-middle and require-in-the-middle - both in the default serverExternalPackages list.
|
|
71
|
+
'@sentry/nextjs',
|
|
72
|
+
// TODO: We need to externalize @payloadcms/storage-s3 as well, once Next.js has the ability to exclude @payloadcms/storage-s3/client from being externalized.
|
|
73
|
+
// Do not bundle additional server-only packages during dev to improve compilation speed
|
|
74
|
+
...(process.env.NODE_ENV === 'development' && options.devBundleServerPackages === false ? ['payload', '@payloadcms/email-nodemailer', '@payloadcms/email-resend', '@payloadcms/graphql', '@payloadcms/plugin-redirects'] : [])],
|
|
65
75
|
webpack: (webpackConfig, webpackOptions) => {
|
|
66
76
|
const incomingWebpackConfig = typeof nextConfig.webpack === 'function' ? nextConfig.webpack(webpackConfig, webpackOptions) : webpackConfig;
|
|
67
77
|
return {
|
|
68
78
|
...incomingWebpackConfig,
|
|
69
|
-
externals: [...(incomingWebpackConfig?.externals || []), '
|
|
70
|
-
ignoreWarnings: [...(incomingWebpackConfig?.ignoreWarnings || []), {
|
|
71
|
-
module: /node_modules\/mongodb\/lib\/utils\.js/
|
|
72
|
-
}, {
|
|
73
|
-
file: /node_modules\/mongodb\/lib\/utils\.js/
|
|
74
|
-
}, {
|
|
75
|
-
module: /node_modules\/mongodb\/lib\/bson\.js/
|
|
76
|
-
}, {
|
|
77
|
-
file: /node_modules\/mongodb\/lib\/bson\.js/
|
|
78
|
-
}],
|
|
79
|
+
externals: [...(incomingWebpackConfig?.externals || []), 'require-in-the-middle'],
|
|
79
80
|
plugins: [...(incomingWebpackConfig?.plugins || []),
|
|
80
81
|
// Fix cloudflare:sockets error: https://github.com/vercel/next.js/discussions/50177
|
|
81
82
|
new webpackOptions.webpack.IgnorePlugin({
|
|
82
83
|
resourceRegExp: /^pg-native$|^cloudflare:sockets$/
|
|
83
|
-
})]
|
|
84
|
-
resolve: {
|
|
85
|
-
...(incomingWebpackConfig?.resolve || {}),
|
|
86
|
-
alias: {
|
|
87
|
-
...(incomingWebpackConfig?.resolve?.alias || {})
|
|
88
|
-
},
|
|
89
|
-
fallback: {
|
|
90
|
-
...(incomingWebpackConfig?.resolve?.fallback || {}),
|
|
91
|
-
'@aws-sdk/credential-providers': false,
|
|
92
|
-
'@mongodb-js/zstd': false,
|
|
93
|
-
aws4: false,
|
|
94
|
-
kerberos: false,
|
|
95
|
-
'mongodb-client-encryption': false,
|
|
96
|
-
snappy: false,
|
|
97
|
-
'supports-color': false,
|
|
98
|
-
'yocto-queue': false
|
|
99
|
-
}
|
|
100
|
-
}
|
|
84
|
+
})]
|
|
101
85
|
};
|
|
102
86
|
}
|
|
103
87
|
};
|
package/dist/withPayload.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"withPayload.js","names":["withPayload","nextConfig","options","env","experimental","staleTimes","dynamic","console","warn","NEXT_PUBLIC_ENABLE_ROUTER_CACHE_REFRESH","process","PAYLOAD_PATCH_TURBOPACK_WARNINGS","turbopackWarningText","consoleWarn","args","includes","poweredByHeader","key","value","toReturn","outputFileTracingExcludes","outputFileTracingIncludes","headers","headersFromConfig","source","serverExternalPackages","NODE_ENV","devBundleServerPackages","webpack","webpackConfig","webpackOptions","incomingWebpackConfig","externals","ignoreWarnings","module","file","plugins","IgnorePlugin","resourceRegExp","resolve","alias","fallback","aws4","kerberos","snappy","basePath","NEXT_BASE_PATH"],"sources":["../src/withPayload.js"],"sourcesContent":["/**\n * @param {import('next').NextConfig} nextConfig\n * @param {Object} [options] - Optional configuration options\n * @param {boolean} [options.devBundleServerPackages] - Whether to bundle server packages in development mode. @default true\n *\n * @returns {import('next').NextConfig}\n * */\nexport const withPayload = (nextConfig = {}, options = {}) => {\n const env = nextConfig?.env || {}\n\n if (nextConfig.experimental?.staleTimes?.dynamic) {\n console.warn(\n 'Payload detected a non-zero value for the `staleTimes.dynamic` option in your Next.js config. This will slow down page transitions and may cause stale data to load within the Admin panel. To clear this warning, remove the `staleTimes.dynamic` option from your Next.js config or set it to 0. In the future, Next.js may support scoping this option to specific routes.',\n )\n env.NEXT_PUBLIC_ENABLE_ROUTER_CACHE_REFRESH = 'true'\n }\n\n if (process.env.PAYLOAD_PATCH_TURBOPACK_WARNINGS !== 'false') {\n const turbopackWarningText =\n 'Packages that should be external need to be installed in the project directory, so they can be resolved from the output files.\\nTry to install it into the project directory by running'\n\n const consoleWarn = console.warn\n console.warn = (...args) => {\n // Force to disable serverExternalPackages warnings: https://github.com/vercel/next.js/issues/68805\n if (\n (typeof args[1] === 'string' && args[1].includes(turbopackWarningText)) ||\n (typeof args[0] === 'string' && args[0].includes(turbopackWarningText))\n ) {\n return\n }\n\n consoleWarn(...args)\n }\n }\n\n const poweredByHeader = {\n key: 'X-Powered-By',\n value: 'Next.js, Payload',\n }\n\n /**\n * @type {import('next').NextConfig}\n */\n const toReturn = {\n ...nextConfig,\n env,\n outputFileTracingExcludes: {\n ...(nextConfig?.outputFileTracingExcludes || {}),\n '**/*': [\n ...(nextConfig?.outputFileTracingExcludes?.['**/*'] || []),\n 'drizzle-kit',\n 'drizzle-kit/api',\n ],\n },\n outputFileTracingIncludes: {\n ...(nextConfig?.outputFileTracingIncludes || {}),\n '**/*': [...(nextConfig?.outputFileTracingIncludes?.['**/*'] || []), '@libsql/client'],\n },\n // We disable the poweredByHeader here because we add it manually in the headers function below\n ...(nextConfig?.poweredByHeader !== false ? { poweredByHeader: false } : {}),\n headers: async () => {\n const headersFromConfig = 'headers' in nextConfig ? await nextConfig.headers() : []\n\n return [\n ...(headersFromConfig || []),\n {\n source: '/:path*',\n headers: [\n {\n key: 'Accept-CH',\n value: 'Sec-CH-Prefers-Color-Scheme',\n },\n {\n key: 'Vary',\n value: 'Sec-CH-Prefers-Color-Scheme',\n },\n {\n key: 'Critical-CH',\n value: 'Sec-CH-Prefers-Color-Scheme',\n },\n ...(nextConfig?.poweredByHeader !== false ? [poweredByHeader] : []),\n ],\n },\n ]\n },\n serverExternalPackages: [\n ...(nextConfig?.serverExternalPackages || []),\n 'drizzle-kit',\n 'drizzle-kit/api',\n 'pino',\n 'libsql',\n 'pino-pretty',\n 'graphql',\n // Do not bundle server-only packages during dev to improve compile speed\n ...(process.env.NODE_ENV === 'development' && options.devBundleServerPackages === false\n ? [\n 'payload',\n '@payloadcms/db-mongodb',\n '@payloadcms/db-postgres',\n '@payloadcms/db-sqlite',\n '@payloadcms/db-vercel-postgres',\n '@payloadcms/drizzle',\n '@payloadcms/email-nodemailer',\n '@payloadcms/email-resend',\n '@payloadcms/graphql',\n '@payloadcms/payload-cloud',\n '@payloadcms/plugin-redirects',\n // TODO: Add the following packages, excluding their /client subpath exports, once Next.js supports it\n //'@payloadcms/plugin-cloud-storage',\n //'@payloadcms/plugin-sentry',\n //'@payloadcms/plugin-stripe',\n // @payloadcms/richtext-lexical\n //'@payloadcms/storage-azure',\n //'@payloadcms/storage-gcs',\n //'@payloadcms/storage-s3',\n //'@payloadcms/storage-uploadthing',\n //'@payloadcms/storage-vercel-blob',\n ]\n : []),\n ],\n webpack: (webpackConfig, webpackOptions) => {\n const incomingWebpackConfig =\n typeof nextConfig.webpack === 'function'\n ? nextConfig.webpack(webpackConfig, webpackOptions)\n : webpackConfig\n\n return {\n ...incomingWebpackConfig,\n externals: [\n ...(incomingWebpackConfig?.externals || []),\n 'drizzle-kit',\n 'drizzle-kit/api',\n 'sharp',\n 'libsql',\n 'require-in-the-middle',\n ],\n ignoreWarnings: [\n ...(incomingWebpackConfig?.ignoreWarnings || []),\n { module: /node_modules\\/mongodb\\/lib\\/utils\\.js/ },\n { file: /node_modules\\/mongodb\\/lib\\/utils\\.js/ },\n { module: /node_modules\\/mongodb\\/lib\\/bson\\.js/ },\n { file: /node_modules\\/mongodb\\/lib\\/bson\\.js/ },\n ],\n plugins: [\n ...(incomingWebpackConfig?.plugins || []),\n // Fix cloudflare:sockets error: https://github.com/vercel/next.js/discussions/50177\n new webpackOptions.webpack.IgnorePlugin({\n resourceRegExp: /^pg-native$|^cloudflare:sockets$/,\n }),\n ],\n resolve: {\n ...(incomingWebpackConfig?.resolve || {}),\n alias: {\n ...(incomingWebpackConfig?.resolve?.alias || {}),\n },\n fallback: {\n ...(incomingWebpackConfig?.resolve?.fallback || {}),\n '@aws-sdk/credential-providers': false,\n '@mongodb-js/zstd': false,\n aws4: false,\n kerberos: false,\n 'mongodb-client-encryption': false,\n snappy: false,\n 'supports-color': false,\n 'yocto-queue': false,\n },\n },\n }\n },\n }\n\n if (nextConfig.basePath) {\n toReturn.env.NEXT_BASE_PATH = nextConfig.basePath\n }\n\n return toReturn\n}\n\nexport default withPayload\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"withPayload.js","names":["withPayload","nextConfig","options","env","experimental","staleTimes","dynamic","console","warn","NEXT_PUBLIC_ENABLE_ROUTER_CACHE_REFRESH","poweredByHeader","key","value","toReturn","turbopack","outputFileTracingExcludes","outputFileTracingIncludes","headers","headersFromConfig","source","serverExternalPackages","process","NODE_ENV","devBundleServerPackages","webpack","webpackConfig","webpackOptions","incomingWebpackConfig","externals","plugins","IgnorePlugin","resourceRegExp","basePath","NEXT_BASE_PATH"],"sources":["../src/withPayload.js"],"sourcesContent":["/**\n * @param {import('next').NextConfig} nextConfig\n * @param {Object} [options] - Optional configuration options\n * @param {boolean} [options.devBundleServerPackages] - Whether to bundle server packages in development mode. @default true\n *\n * @returns {import('next').NextConfig}\n * */\nexport const withPayload = (nextConfig = {}, options = {}) => {\n const env = nextConfig.env || {}\n\n if (nextConfig.experimental?.staleTimes?.dynamic) {\n console.warn(\n 'Payload detected a non-zero value for the `staleTimes.dynamic` option in your Next.js config. This will slow down page transitions and may cause stale data to load within the Admin panel. To clear this warning, remove the `staleTimes.dynamic` option from your Next.js config or set it to 0. In the future, Next.js may support scoping this option to specific routes.',\n )\n env.NEXT_PUBLIC_ENABLE_ROUTER_CACHE_REFRESH = 'true'\n }\n\n const poweredByHeader = {\n key: 'X-Powered-By',\n value: 'Next.js, Payload',\n }\n\n /**\n * @type {import('next').NextConfig}\n */\n const toReturn = {\n ...nextConfig,\n env,\n turbopack: {\n ...(nextConfig.turbopack || {}),\n },\n outputFileTracingExcludes: {\n ...(nextConfig.outputFileTracingExcludes || {}),\n '**/*': [\n ...(nextConfig.outputFileTracingExcludes?.['**/*'] || []),\n 'drizzle-kit',\n 'drizzle-kit/api',\n ],\n },\n outputFileTracingIncludes: {\n ...(nextConfig.outputFileTracingIncludes || {}),\n '**/*': [...(nextConfig.outputFileTracingIncludes?.['**/*'] || []), '@libsql/client'],\n },\n // We disable the poweredByHeader here because we add it manually in the headers function below\n ...(nextConfig.poweredByHeader !== false ? { poweredByHeader: false } : {}),\n headers: async () => {\n const headersFromConfig = 'headers' in nextConfig ? await nextConfig.headers() : []\n\n return [\n ...(headersFromConfig || []),\n {\n source: '/:path*',\n headers: [\n {\n key: 'Accept-CH',\n value: 'Sec-CH-Prefers-Color-Scheme',\n },\n {\n key: 'Vary',\n value: 'Sec-CH-Prefers-Color-Scheme',\n },\n {\n key: 'Critical-CH',\n value: 'Sec-CH-Prefers-Color-Scheme',\n },\n ...(nextConfig.poweredByHeader !== false ? [poweredByHeader] : []),\n ],\n },\n ]\n },\n serverExternalPackages: [\n ...(nextConfig.serverExternalPackages || []),\n // These packages always need to be external, both during dev and production. This is because they install dependencies\n // that will error when trying to bundle them (e.g. drizzle-kit, libsql, esbuild etc.).\n // We cannot externalize those problem-packages directly. We can only externalize packages that are manually installed\n // by the end user. Otherwise, the require('externalPackage') calls generated by the bundler would fail during runtime,\n // as you cannot import dependencies of dependencies in a lot of package managers like pnpm. We'd have to force users\n // to install the dependencies directly.\n // Thus, we externalize the \"entry-point\" = the package that is installed by the end user, which would be our db adapters.\n //\n //\n // External because it installs mongoose (part of default serverExternalPackages: https://github.com/vercel/next.js/blob/canary/packages/next/src/lib/server-external-packages.json => would throw warning if we don't exclude the entry-point package):\n '@payloadcms/db-mongodb',\n // External because they install dependencies like drizzle, libsql, esbuild etc.:\n '@payloadcms/db-postgres',\n '@payloadcms/db-sqlite',\n '@payloadcms/db-vercel-postgres',\n '@payloadcms/drizzle',\n // External because they install @aws-sdk/client-s3:\n '@payloadcms/payload-cloud',\n // External, because it installs import-in-the-middle and require-in-the-middle - both in the default serverExternalPackages list.\n '@sentry/nextjs',\n // TODO: We need to externalize @payloadcms/storage-s3 as well, once Next.js has the ability to exclude @payloadcms/storage-s3/client from being externalized.\n // Do not bundle additional server-only packages during dev to improve compilation speed\n ...(process.env.NODE_ENV === 'development' && options.devBundleServerPackages === false\n ? [\n 'payload',\n '@payloadcms/email-nodemailer',\n '@payloadcms/email-resend',\n '@payloadcms/graphql',\n '@payloadcms/plugin-redirects',\n // TODO: Add the following packages, excluding their /client subpath exports, once Next.js supports it\n //'@payloadcms/plugin-cloud-storage',\n //'@payloadcms/plugin-sentry',\n //'@payloadcms/plugin-stripe',\n // @payloadcms/richtext-lexical\n //'@payloadcms/storage-azure',\n //'@payloadcms/storage-gcs',\n //'@payloadcms/storage-s3',\n //'@payloadcms/storage-uploadthing',\n //'@payloadcms/storage-vercel-blob',\n ]\n : []),\n ],\n webpack: (webpackConfig, webpackOptions) => {\n const incomingWebpackConfig =\n typeof nextConfig.webpack === 'function'\n ? nextConfig.webpack(webpackConfig, webpackOptions)\n : webpackConfig\n\n return {\n ...incomingWebpackConfig,\n externals: [...(incomingWebpackConfig?.externals || []), 'require-in-the-middle'],\n plugins: [\n ...(incomingWebpackConfig?.plugins || []),\n // Fix cloudflare:sockets error: https://github.com/vercel/next.js/discussions/50177\n new webpackOptions.webpack.IgnorePlugin({\n resourceRegExp: /^pg-native$|^cloudflare:sockets$/,\n }),\n ],\n }\n },\n }\n\n if (nextConfig.basePath) {\n toReturn.env.NEXT_BASE_PATH = nextConfig.basePath\n }\n\n return toReturn\n}\n\nexport default withPayload\n"],"mappings":"AAAA;;;;;;KAOA,OAAO,MAAMA,WAAA,GAAcA,CAACC,UAAA,GAAa,CAAC,CAAC,EAAEC,OAAA,GAAU,CAAC,CAAC;EACvD,MAAMC,GAAA,GAAMF,UAAA,CAAWE,GAAG,IAAI,CAAC;EAE/B,IAAIF,UAAA,CAAWG,YAAY,EAAEC,UAAA,EAAYC,OAAA,EAAS;IAChDC,OAAA,CAAQC,IAAI,CACV;IAEFL,GAAA,CAAIM,uCAAuC,GAAG;EAChD;EAEA,MAAMC,eAAA,GAAkB;IACtBC,GAAA,EAAK;IACLC,KAAA,EAAO;EACT;EAEA;;;EAGA,MAAMC,QAAA,GAAW;IACf,GAAGZ,UAAU;IACbE,GAAA;IACAW,SAAA,EAAW;MACT,IAAIb,UAAA,CAAWa,SAAS,IAAI,CAAC,CAAC;IAChC;IACAC,yBAAA,EAA2B;MACzB,IAAId,UAAA,CAAWc,yBAAyB,IAAI,CAAC,CAAC;MAC9C,QAAQ,C,IACFd,UAAA,CAAWc,yBAAyB,GAAG,OAAO,IAAI,EAAE,GACxD,eACA;IAEJ;IACAC,yBAAA,EAA2B;MACzB,IAAIf,UAAA,CAAWe,yBAAyB,IAAI,CAAC,CAAC;MAC9C,QAAQ,C,IAAKf,UAAA,CAAWe,yBAAyB,GAAG,OAAO,IAAI,EAAE,GAAG;IACtE;IACA;IACA,IAAIf,UAAA,CAAWS,eAAe,KAAK,QAAQ;MAAEA,eAAA,EAAiB;IAAM,IAAI,CAAC,CAAC;IAC1EO,OAAA,EAAS,MAAAA,CAAA;MACP,MAAMC,iBAAA,GAAoB,aAAajB,UAAA,GAAa,MAAMA,UAAA,CAAWgB,OAAO,KAAK,EAAE;MAEnF,OAAO,C,IACDC,iBAAA,IAAqB,EAAE,GAC3B;QACEC,MAAA,EAAQ;QACRF,OAAA,EAAS,CACP;UACEN,GAAA,EAAK;UACLC,KAAA,EAAO;QACT,GACA;UACED,GAAA,EAAK;UACLC,KAAA,EAAO;QACT,GACA;UACED,GAAA,EAAK;UACLC,KAAA,EAAO;QACT,G,IACIX,UAAA,CAAWS,eAAe,KAAK,QAAQ,CAACA,eAAA,CAAgB,GAAG,EAAE;MAErE,EACD;IACH;IACAU,sBAAA,EAAwB,C,IAClBnB,UAAA,CAAWmB,sBAAsB,IAAI,EAAE;IAC3C;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,2BACA,yBACA,kCACA;IACA;IACA;IACA;IACA;IACA;IACA;QACIC,OAAA,CAAQlB,GAAG,CAACmB,QAAQ,KAAK,iBAAiBpB,OAAA,CAAQqB,uBAAuB,KAAK,QAC9E,CACE,WACA,gCACA,4BACA,uBACA,+BAWD,GACD,EAAE,EACP;IACDC,OAAA,EAASA,CAACC,aAAA,EAAeC,cAAA;MACvB,MAAMC,qBAAA,GACJ,OAAO1B,UAAA,CAAWuB,OAAO,KAAK,aAC1BvB,UAAA,CAAWuB,OAAO,CAACC,aAAA,EAAeC,cAAA,IAClCD,aAAA;MAEN,OAAO;QACL,GAAGE,qBAAqB;QACxBC,SAAA,EAAW,C,IAAKD,qBAAA,EAAuBC,SAAA,IAAa,EAAE,GAAG,wBAAwB;QACjFC,OAAA,EAAS,C,IACHF,qBAAA,EAAuBE,OAAA,IAAW,EAAE;QACxC;QACA,IAAIH,cAAA,CAAeF,OAAO,CAACM,YAAY,CAAC;UACtCC,cAAA,EAAgB;QAClB;MAEJ;IACF;EACF;EAEA,IAAI9B,UAAA,CAAW+B,QAAQ,EAAE;IACvBnB,QAAA,CAASV,GAAG,CAAC8B,cAAc,GAAGhC,UAAA,CAAW+B,QAAQ;EACnD;EAEA,OAAOnB,QAAA;AACT;AAEA,eAAeb,WAAA","ignoreList":[]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@payloadcms/next",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.64.0-canary.0",
|
|
4
4
|
"homepage": "https://payloadcms.com",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -97,9 +97,9 @@
|
|
|
97
97
|
"qs-esm": "7.0.2",
|
|
98
98
|
"sass": "1.77.4",
|
|
99
99
|
"uuid": "10.0.0",
|
|
100
|
-
"@payloadcms/
|
|
101
|
-
"@payloadcms/
|
|
102
|
-
"@payloadcms/
|
|
100
|
+
"@payloadcms/graphql": "3.64.0-canary.0",
|
|
101
|
+
"@payloadcms/translations": "3.64.0-canary.0",
|
|
102
|
+
"@payloadcms/ui": "3.64.0-canary.0"
|
|
103
103
|
},
|
|
104
104
|
"devDependencies": {
|
|
105
105
|
"@babel/cli": "7.27.2",
|
|
@@ -107,7 +107,7 @@
|
|
|
107
107
|
"@babel/preset-env": "7.27.2",
|
|
108
108
|
"@babel/preset-react": "7.27.1",
|
|
109
109
|
"@babel/preset-typescript": "7.27.1",
|
|
110
|
-
"@next/eslint-plugin-next": "15.4.
|
|
110
|
+
"@next/eslint-plugin-next": "15.4.7",
|
|
111
111
|
"@types/busboy": "1.5.4",
|
|
112
112
|
"@types/react": "19.1.12",
|
|
113
113
|
"@types/react-dom": "19.1.9",
|
|
@@ -117,12 +117,12 @@
|
|
|
117
117
|
"esbuild-sass-plugin": "3.3.1",
|
|
118
118
|
"swc-plugin-transform-remove-imports": "4.0.4",
|
|
119
119
|
"@payloadcms/eslint-config": "3.28.0",
|
|
120
|
-
"payload": "3.
|
|
120
|
+
"payload": "3.64.0-canary.0"
|
|
121
121
|
},
|
|
122
122
|
"peerDependencies": {
|
|
123
123
|
"graphql": "^16.8.1",
|
|
124
124
|
"next": "^15.2.3",
|
|
125
|
-
"payload": "3.
|
|
125
|
+
"payload": "3.64.0-canary.0"
|
|
126
126
|
},
|
|
127
127
|
"engines": {
|
|
128
128
|
"node": "^18.20.2 || >=20.9.0"
|