create-payload-app 4.0.0-canary.37 → 4.0.0-canary.38
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/lib/init-next.d.ts +5 -0
- package/dist/lib/init-next.d.ts.map +1 -1
- package/dist/lib/init-next.js +14 -3
- package/dist/lib/init-next.js.map +1 -1
- package/dist/lib/init-tanstack.js +2 -3
- package/dist/lib/init-tanstack.js.map +1 -1
- package/dist/main.js +2 -2
- package/dist/main.js.map +1 -1
- package/dist/template/src/app/(payload)/admin/[[...segments]]/not-found.tsx +1 -2
- package/dist/template/src/app/(payload)/admin/[[...segments]]/page.tsx +1 -2
- package/dist/template/src/app/(payload)/admin/importMap.js +15 -0
- package/dist/template/src/app/(payload)/api/[...slug]/route.ts +1 -2
- package/dist/template/src/app/(payload)/api/graphql/route.ts +1 -2
- package/dist/template/src/app/(payload)/api/graphql-playground/route.ts +1 -2
- package/dist/template/src/app/(payload)/layout.tsx +1 -2
- package/dist/template/src/payload.config.ts +4 -2
- package/dist/template-tanstack/routes/_payload/admin.$.tsx +1 -0
- package/dist/template-tanstack/routes/_payload/admin.index.tsx +1 -0
- package/dist/template-tanstack/routes/_payload/api.$.ts +1 -0
- package/dist/template-tanstack/routes/_payload/server.functions.ts +1 -0
- package/dist/template-tanstack/routes/_payload.tsx +1 -0
- package/dist/template-tanstack/src/payload.config.ts +0 -2
- package/package.json +2 -2
package/dist/lib/init-next.d.ts
CHANGED
|
@@ -1,4 +1,9 @@
|
|
|
1
1
|
import type { CliArgs, DbType, NextAppDetails, PackageManager } from '../types.js';
|
|
2
|
+
/** Keep in sync with the `next` peer dependency range of `@payloadcms/next`. */
|
|
3
|
+
export declare const minimumNextVersion: {
|
|
4
|
+
major: number;
|
|
5
|
+
minor: number;
|
|
6
|
+
};
|
|
2
7
|
type InitNextArgs = {
|
|
3
8
|
dbType: DbType;
|
|
4
9
|
nextAppDetails?: NextAppDetails;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init-next.d.ts","sourceRoot":"","sources":["../../src/lib/init-next.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,cAAc,EAAkB,cAAc,EAAE,MAAM,aAAa,CAAA;AAiBlG,KAAK,YAAY,GAAG;IAClB,MAAM,EAAE,MAAM,CAAA;IACd,cAAc,CAAC,EAAE,cAAc,CAAA;IAC/B,cAAc,EAAE,cAAc,CAAA;IAC9B,UAAU,EAAE,MAAM,CAAA;IAClB,YAAY,CAAC,EAAE,OAAO,CAAA;CACvB,GAAG,IAAI,CAAC,OAAO,EAAE,SAAS,GAAG,mBAAmB,CAAC,CAAA;AAElD,KAAK,cAAc,GACf;IAAE,QAAQ,EAAE,OAAO,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,KAAK,CAAA;CAAE,GAC1E;IACE,QAAQ,EAAE,OAAO,CAAA;IACjB,UAAU,EAAE,MAAM,CAAA;IAClB,iBAAiB,EAAE,MAAM,CAAA;IACzB,OAAO,EAAE,IAAI,CAAA;CACd,CAAA;AAEL,wBAAsB,QAAQ,CAAC,IAAI,EAAE,YAAY,GAAG,OAAO,CAAC,cAAc,CAAC,CAuE1E;AA2GD,wBAAsB,iBAAiB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,
|
|
1
|
+
{"version":3,"file":"init-next.d.ts","sourceRoot":"","sources":["../../src/lib/init-next.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,cAAc,EAAkB,cAAc,EAAE,MAAM,aAAa,CAAA;AAiBlG,gFAAgF;AAChF,eAAO,MAAM,kBAAkB;IAAK,KAAK;IAAM,KAAK;CAAK,CAAA;AAEzD,KAAK,YAAY,GAAG;IAClB,MAAM,EAAE,MAAM,CAAA;IACd,cAAc,CAAC,EAAE,cAAc,CAAA;IAC/B,cAAc,EAAE,cAAc,CAAA;IAC9B,UAAU,EAAE,MAAM,CAAA;IAClB,YAAY,CAAC,EAAE,OAAO,CAAA;CACvB,GAAG,IAAI,CAAC,OAAO,EAAE,SAAS,GAAG,mBAAmB,CAAC,CAAA;AAElD,KAAK,cAAc,GACf;IAAE,QAAQ,EAAE,OAAO,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,KAAK,CAAA;CAAE,GAC1E;IACE,QAAQ,EAAE,OAAO,CAAA;IACjB,UAAU,EAAE,MAAM,CAAA;IAClB,iBAAiB,EAAE,MAAM,CAAA;IACzB,OAAO,EAAE,IAAI,CAAA;CACd,CAAA;AAEL,wBAAsB,QAAQ,CAAC,IAAI,EAAE,YAAY,GAAG,OAAO,CAAC,cAAc,CAAC,CAuE1E;AA2GD,wBAAsB,iBAAiB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,CAwGnF"}
|
package/dist/lib/init-next.js
CHANGED
|
@@ -14,6 +14,10 @@ import { installPackages } from './install-packages.js';
|
|
|
14
14
|
import { wrapNextConfig } from './wrap-next-config.js';
|
|
15
15
|
const filename = fileURLToPath(import.meta.url);
|
|
16
16
|
const dirname = path.dirname(filename);
|
|
17
|
+
/** Keep in sync with the `next` peer dependency range of `@payloadcms/next`. */ export const minimumNextVersion = {
|
|
18
|
+
major: 16,
|
|
19
|
+
minor: 4
|
|
20
|
+
};
|
|
17
21
|
export async function initNext(args) {
|
|
18
22
|
const { dbType: dbType, packageManager, projectDir } = args;
|
|
19
23
|
const nextAppDetails = args.nextAppDetails || await getNextAppDetails(projectDir);
|
|
@@ -186,7 +190,7 @@ export async function getNextAppDetails(projectDir) {
|
|
|
186
190
|
if (packageObj.dependencies?.next) {
|
|
187
191
|
nextVersion = packageObj.dependencies.next;
|
|
188
192
|
// Match versions using regex matching groups
|
|
189
|
-
const versionMatch = /(?<major>\d+)
|
|
193
|
+
const versionMatch = /(?<major>\d+)(?:\.(?<minor>\d+))?/.exec(nextVersion);
|
|
190
194
|
if (!versionMatch) {
|
|
191
195
|
p.log.warn(`Could not determine Next.js version from ${nextVersion}`);
|
|
192
196
|
return {
|
|
@@ -197,9 +201,9 @@ export async function getNextAppDetails(projectDir) {
|
|
|
197
201
|
nextVersion
|
|
198
202
|
};
|
|
199
203
|
}
|
|
200
|
-
const { major } = versionMatch.groups;
|
|
204
|
+
const { major, minor } = versionMatch.groups;
|
|
201
205
|
const majorVersion = parseInt(major);
|
|
202
|
-
if (majorVersion <
|
|
206
|
+
if (majorVersion < minimumNextVersion.major) {
|
|
203
207
|
return {
|
|
204
208
|
hasTopLevelLayout: false,
|
|
205
209
|
isSrcDir,
|
|
@@ -208,6 +212,13 @@ export async function getNextAppDetails(projectDir) {
|
|
|
208
212
|
nextVersion
|
|
209
213
|
};
|
|
210
214
|
}
|
|
215
|
+
// TODO: Older minor versions of the minimum major are only warned about, not rejected, to make
|
|
216
|
+
// migrating easier. This can be turned into a hard requirement in the future.
|
|
217
|
+
// A specifier without a minor version (e.g. `^16`) can resolve to any minor, so it is not warned about.
|
|
218
|
+
const isBelowMinimumMinor = majorVersion === minimumNextVersion.major && minor !== undefined && parseInt(minor) < minimumNextVersion.minor;
|
|
219
|
+
if (isBelowMinimumMinor) {
|
|
220
|
+
p.log.warn(`Next.js v${nextVersion} is not supported. Upgrade to Next.js >= ${minimumNextVersion.major}.${minimumNextVersion.minor} to use Payload.`);
|
|
221
|
+
}
|
|
211
222
|
}
|
|
212
223
|
const isSupportedNextVersion = true;
|
|
213
224
|
// Check if Payload already installed
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/lib/init-next.ts"],"sourcesContent":["import * as p from '@clack/prompts'\nimport fs from 'fs'\nimport fse from 'fs-extra'\nimport globby from 'globby'\nimport { fileURLToPath } from 'node:url'\nimport path from 'path'\n\nimport type { CliArgs, DbType, NextAppDetails, NextConfigType, PackageManager } from '../types.js'\n\nimport { copyRecursiveSync } from '../utils/copy-recursive-sync.js'\nimport { debug as origDebug, warning } from '../utils/log.js'\nimport { moveMessage } from '../utils/messages.js'\nimport {\n DEFAULT_PAYLOAD_VERSION_TAG,\n resolvePackageVersion,\n} from '../utils/resolvePackageVersion.js'\nimport { configurePayloadTsConfig } from './configure-payload-tsconfig.js'\nimport { ensurePnpmBuildApprovals } from './configure-pnpm-builds.js'\nimport { installPackages } from './install-packages.js'\nimport { wrapNextConfig } from './wrap-next-config.js'\n\nconst filename = fileURLToPath(import.meta.url)\nconst dirname = path.dirname(filename)\n\ntype InitNextArgs = {\n dbType: DbType\n nextAppDetails?: NextAppDetails\n packageManager: PackageManager\n projectDir: string\n useDistFiles?: boolean\n} & Pick<CliArgs, '--debug' | '--payload-version'>\n\ntype InitNextResult =\n | { isSrcDir: boolean; nextAppDir?: string; reason: string; success: false }\n | {\n isSrcDir: boolean\n nextAppDir: string\n payloadConfigPath: string\n success: true\n }\n\nexport async function initNext(args: InitNextArgs): Promise<InitNextResult> {\n const { dbType: dbType, packageManager, projectDir } = args\n\n const nextAppDetails = args.nextAppDetails || (await getNextAppDetails(projectDir))\n\n if (!nextAppDetails.nextAppDir) {\n warning(`Could not find app directory in ${projectDir}, creating...`)\n const createdAppDir = path.resolve(projectDir, nextAppDetails.isSrcDir ? 'src/app' : 'app')\n fse.mkdirSync(createdAppDir, { recursive: true })\n nextAppDetails.nextAppDir = createdAppDir\n }\n\n const { hasTopLevelLayout, isSrcDir, nextAppDir, nextConfigType } = nextAppDetails\n\n if (!nextConfigType) {\n return {\n isSrcDir,\n nextAppDir,\n reason: `Could not determine Next Config type in ${projectDir}. Possibly try renaming next.config.js to next.config.cjs or next.config.mjs.`,\n success: false,\n }\n }\n\n if (hasTopLevelLayout) {\n // Output directions for user to move all files from app to top-level directory named `(app)`\n p.log.warn(moveMessage({ nextAppDir, projectDir }))\n return {\n isSrcDir,\n nextAppDir,\n reason: 'Found existing layout.tsx in app directory',\n success: false,\n }\n }\n\n const installSpinner = p.spinner()\n installSpinner.start('Installing Payload and dependencies...')\n\n const configurationResult = await installAndConfigurePayload({\n ...args,\n nextAppDetails,\n nextConfigType,\n useDistFiles: true, // Requires running 'pnpm pack-template-files' in cpa\n })\n\n if (configurationResult.success === false) {\n installSpinner.stop(configurationResult.reason, 1)\n return { ...configurationResult, isSrcDir, success: false }\n }\n\n const { success: installSuccess } = await installDeps({\n dbType,\n packageManager,\n projectDir,\n versionOrTag: args['--payload-version'] ?? DEFAULT_PAYLOAD_VERSION_TAG,\n })\n if (!installSuccess) {\n installSpinner.stop('Failed to install dependencies', 1)\n return {\n ...configurationResult,\n isSrcDir,\n reason: 'Failed to install dependencies',\n success: false,\n }\n }\n\n await configurePayloadTsConfig({\n configPath: path.resolve(projectDir, 'tsconfig.json'),\n payloadConfigPath: configurationResult.payloadConfigPath,\n })\n installSpinner.stop('Successfully installed Payload and dependencies')\n return { ...configurationResult, isSrcDir, nextAppDir, success: true }\n}\n\nasync function installAndConfigurePayload(\n args: {\n nextAppDetails: NextAppDetails\n nextConfigType: NextConfigType\n useDistFiles?: boolean\n } & InitNextArgs,\n): Promise<\n | { payloadConfigPath: string; success: true }\n | { payloadConfigPath?: string; reason: string; success: false }\n> {\n const {\n '--debug': debug,\n nextAppDetails: { isSrcDir, nextAppDir, nextConfigPath } = {},\n nextConfigType,\n projectDir,\n useDistFiles,\n } = args\n\n if (!nextAppDir || !nextConfigPath) {\n return {\n reason: 'Could not find app directory or next.config.js',\n success: false,\n }\n }\n\n const logDebug = (message: string) => {\n if (debug) {\n origDebug(message)\n }\n }\n\n if (!fs.existsSync(projectDir)) {\n return {\n reason: `Could not find specified project directory at ${projectDir}`,\n success: false,\n }\n }\n\n const templateFilesPath =\n dirname.endsWith('dist') || useDistFiles\n ? path.resolve(dirname, '../..', 'dist/template')\n : path.resolve(dirname, '../../../../templates/blank')\n\n logDebug(`Using template files from: ${templateFilesPath}`)\n\n if (!fs.existsSync(templateFilesPath)) {\n return {\n reason: `Could not find template source files from ${templateFilesPath}`,\n success: false,\n }\n } else {\n logDebug('Found template source files')\n }\n\n logDebug(`Copying template files from ${templateFilesPath} to ${nextAppDir}`)\n\n const templateSrcDir = path.resolve(templateFilesPath, isSrcDir ? '' : 'src')\n\n logDebug(`templateSrcDir: ${templateSrcDir}`)\n logDebug(`nextAppDir: ${nextAppDir}`)\n logDebug(`projectDir: ${projectDir}`)\n logDebug(`nextConfigPath: ${nextConfigPath}`)\n logDebug(`payloadConfigPath: ${path.resolve(projectDir, 'payload.config.ts')}`)\n\n logDebug(\n `isSrcDir: ${isSrcDir}. source: ${templateSrcDir}. dest: ${path.dirname(nextConfigPath)}`,\n )\n\n // This is a little clunky and needs to account for isSrcDir\n copyRecursiveSync(templateSrcDir, path.dirname(nextConfigPath))\n\n // Wrap next.config.js with withPayload\n await wrapNextConfig({ nextConfigPath, nextConfigType })\n\n return {\n payloadConfigPath: path.resolve(nextAppDir, '../payload.config.ts'),\n success: true,\n }\n}\n\nasync function installDeps(args: {\n dbType: DbType\n packageManager: PackageManager\n projectDir: string\n versionOrTag?: string\n}) {\n const { dbType, packageManager, projectDir, versionOrTag } = args\n const { getDbPackageName } = await import('./ast/adapter-config.js')\n\n const version = await resolvePackageVersion({ packageName: 'payload', versionOrTag })\n\n const packagesToInstall = ['payload', '@payloadcms/next', '@payloadcms/richtext-lexical'].map(\n (pkg) => `${pkg}@${version}`,\n )\n\n packagesToInstall.push(`${getDbPackageName(dbType)}@${version}`)\n\n // Match graphql version of @payloadcms/next\n packagesToInstall.push('graphql@^16.8.1')\n\n await ensurePnpmBuildApprovals({ packageManager, projectDir })\n\n return await installPackages({ packageManager, packagesToInstall, projectDir })\n}\n\nexport async function getNextAppDetails(projectDir: string): Promise<NextAppDetails> {\n const isSrcDir = fs.existsSync(path.resolve(projectDir, 'src'))\n\n // Match next.config.js, next.config.ts, next.config.mjs, next.config.cjs\n const nextConfigPath: string | undefined = (\n await globby('next.config.(\\\\w)?(t|j)s', { absolute: true, cwd: projectDir })\n )?.[0]\n\n if (!nextConfigPath || nextConfigPath.length === 0) {\n return {\n hasTopLevelLayout: false,\n isSrcDir,\n isSupportedNextVersion: false,\n nextConfigPath: undefined,\n nextVersion: null,\n }\n }\n\n const packageObj = await fse.readJson(path.resolve(projectDir, 'package.json'))\n // Check if Next.js version is new enough\n let nextVersion = null\n if (packageObj.dependencies?.next) {\n nextVersion = packageObj.dependencies.next\n // Match versions using regex matching groups\n const versionMatch = /(?<major>\\d+)/.exec(nextVersion)\n if (!versionMatch) {\n p.log.warn(`Could not determine Next.js version from ${nextVersion}`)\n return {\n hasTopLevelLayout: false,\n isSrcDir,\n isSupportedNextVersion: false,\n nextConfigPath,\n nextVersion,\n }\n }\n\n const { major } = versionMatch.groups as { major: string }\n const majorVersion = parseInt(major)\n if (majorVersion < 15) {\n return {\n hasTopLevelLayout: false,\n isSrcDir,\n isSupportedNextVersion: false,\n nextConfigPath,\n nextVersion,\n }\n }\n }\n\n const isSupportedNextVersion = true\n\n // Check if Payload already installed\n if (packageObj.dependencies?.payload) {\n return {\n hasTopLevelLayout: false,\n isPayloadInstalled: true,\n isSrcDir,\n isSupportedNextVersion,\n nextConfigPath,\n nextVersion,\n }\n }\n\n let nextAppDir: string | undefined = (\n await globby(['**/app'], {\n absolute: true,\n cwd: projectDir,\n ignore: ['**/node_modules/**'],\n onlyDirectories: true,\n })\n )?.[0]\n\n if (!nextAppDir || nextAppDir.length === 0) {\n nextAppDir = undefined\n }\n\n const configType = getProjectType({ nextConfigPath, packageObj })\n\n const hasTopLevelLayout = nextAppDir\n ? fs.existsSync(path.resolve(nextAppDir, 'layout.tsx'))\n : false\n\n return {\n hasTopLevelLayout,\n isSrcDir,\n isSupportedNextVersion,\n nextAppDir,\n nextConfigPath,\n nextConfigType: configType,\n nextVersion,\n }\n}\n\nfunction getProjectType(args: {\n nextConfigPath: string\n packageObj: Record<string, unknown>\n}): NextConfigType {\n const { nextConfigPath, packageObj } = args\n\n if (nextConfigPath.endsWith('.ts')) {\n return 'ts'\n }\n\n if (nextConfigPath.endsWith('.mjs')) {\n return 'esm'\n }\n if (nextConfigPath.endsWith('.cjs')) {\n return 'cjs'\n }\n\n const packageJsonType = packageObj.type\n if (packageJsonType === 'module') {\n return 'esm'\n }\n if (packageJsonType === 'commonjs') {\n return 'cjs'\n }\n\n return 'cjs'\n}\n"],"names":["p","fs","fse","globby","fileURLToPath","path","copyRecursiveSync","debug","origDebug","warning","moveMessage","DEFAULT_PAYLOAD_VERSION_TAG","resolvePackageVersion","configurePayloadTsConfig","ensurePnpmBuildApprovals","installPackages","wrapNextConfig","filename","url","dirname","initNext","args","dbType","packageManager","projectDir","nextAppDetails","getNextAppDetails","nextAppDir","createdAppDir","resolve","isSrcDir","mkdirSync","recursive","hasTopLevelLayout","nextConfigType","reason","success","log","warn","installSpinner","spinner","start","configurationResult","installAndConfigurePayload","useDistFiles","stop","installSuccess","installDeps","versionOrTag","configPath","payloadConfigPath","nextConfigPath","logDebug","message","existsSync","templateFilesPath","endsWith","templateSrcDir","getDbPackageName","version","packageName","packagesToInstall","map","pkg","push","absolute","cwd","length","isSupportedNextVersion","undefined","nextVersion","packageObj","readJson","dependencies","next","versionMatch","exec","major","groups","majorVersion","parseInt","payload","isPayloadInstalled","ignore","onlyDirectories","configType","getProjectType","packageJsonType","type"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../src/lib/init-next.ts"],"sourcesContent":["import * as p from '@clack/prompts'\nimport fs from 'fs'\nimport fse from 'fs-extra'\nimport globby from 'globby'\nimport { fileURLToPath } from 'node:url'\nimport path from 'path'\n\nimport type { CliArgs, DbType, NextAppDetails, NextConfigType, PackageManager } from '../types.js'\n\nimport { copyRecursiveSync } from '../utils/copy-recursive-sync.js'\nimport { debug as origDebug, warning } from '../utils/log.js'\nimport { moveMessage } from '../utils/messages.js'\nimport {\n DEFAULT_PAYLOAD_VERSION_TAG,\n resolvePackageVersion,\n} from '../utils/resolvePackageVersion.js'\nimport { configurePayloadTsConfig } from './configure-payload-tsconfig.js'\nimport { ensurePnpmBuildApprovals } from './configure-pnpm-builds.js'\nimport { installPackages } from './install-packages.js'\nimport { wrapNextConfig } from './wrap-next-config.js'\n\nconst filename = fileURLToPath(import.meta.url)\nconst dirname = path.dirname(filename)\n\n/** Keep in sync with the `next` peer dependency range of `@payloadcms/next`. */\nexport const minimumNextVersion = { major: 16, minor: 4 }\n\ntype InitNextArgs = {\n dbType: DbType\n nextAppDetails?: NextAppDetails\n packageManager: PackageManager\n projectDir: string\n useDistFiles?: boolean\n} & Pick<CliArgs, '--debug' | '--payload-version'>\n\ntype InitNextResult =\n | { isSrcDir: boolean; nextAppDir?: string; reason: string; success: false }\n | {\n isSrcDir: boolean\n nextAppDir: string\n payloadConfigPath: string\n success: true\n }\n\nexport async function initNext(args: InitNextArgs): Promise<InitNextResult> {\n const { dbType: dbType, packageManager, projectDir } = args\n\n const nextAppDetails = args.nextAppDetails || (await getNextAppDetails(projectDir))\n\n if (!nextAppDetails.nextAppDir) {\n warning(`Could not find app directory in ${projectDir}, creating...`)\n const createdAppDir = path.resolve(projectDir, nextAppDetails.isSrcDir ? 'src/app' : 'app')\n fse.mkdirSync(createdAppDir, { recursive: true })\n nextAppDetails.nextAppDir = createdAppDir\n }\n\n const { hasTopLevelLayout, isSrcDir, nextAppDir, nextConfigType } = nextAppDetails\n\n if (!nextConfigType) {\n return {\n isSrcDir,\n nextAppDir,\n reason: `Could not determine Next Config type in ${projectDir}. Possibly try renaming next.config.js to next.config.cjs or next.config.mjs.`,\n success: false,\n }\n }\n\n if (hasTopLevelLayout) {\n // Output directions for user to move all files from app to top-level directory named `(app)`\n p.log.warn(moveMessage({ nextAppDir, projectDir }))\n return {\n isSrcDir,\n nextAppDir,\n reason: 'Found existing layout.tsx in app directory',\n success: false,\n }\n }\n\n const installSpinner = p.spinner()\n installSpinner.start('Installing Payload and dependencies...')\n\n const configurationResult = await installAndConfigurePayload({\n ...args,\n nextAppDetails,\n nextConfigType,\n useDistFiles: true, // Requires running 'pnpm pack-template-files' in cpa\n })\n\n if (configurationResult.success === false) {\n installSpinner.stop(configurationResult.reason, 1)\n return { ...configurationResult, isSrcDir, success: false }\n }\n\n const { success: installSuccess } = await installDeps({\n dbType,\n packageManager,\n projectDir,\n versionOrTag: args['--payload-version'] ?? DEFAULT_PAYLOAD_VERSION_TAG,\n })\n if (!installSuccess) {\n installSpinner.stop('Failed to install dependencies', 1)\n return {\n ...configurationResult,\n isSrcDir,\n reason: 'Failed to install dependencies',\n success: false,\n }\n }\n\n await configurePayloadTsConfig({\n configPath: path.resolve(projectDir, 'tsconfig.json'),\n payloadConfigPath: configurationResult.payloadConfigPath,\n })\n installSpinner.stop('Successfully installed Payload and dependencies')\n return { ...configurationResult, isSrcDir, nextAppDir, success: true }\n}\n\nasync function installAndConfigurePayload(\n args: {\n nextAppDetails: NextAppDetails\n nextConfigType: NextConfigType\n useDistFiles?: boolean\n } & InitNextArgs,\n): Promise<\n | { payloadConfigPath: string; success: true }\n | { payloadConfigPath?: string; reason: string; success: false }\n> {\n const {\n '--debug': debug,\n nextAppDetails: { isSrcDir, nextAppDir, nextConfigPath } = {},\n nextConfigType,\n projectDir,\n useDistFiles,\n } = args\n\n if (!nextAppDir || !nextConfigPath) {\n return {\n reason: 'Could not find app directory or next.config.js',\n success: false,\n }\n }\n\n const logDebug = (message: string) => {\n if (debug) {\n origDebug(message)\n }\n }\n\n if (!fs.existsSync(projectDir)) {\n return {\n reason: `Could not find specified project directory at ${projectDir}`,\n success: false,\n }\n }\n\n const templateFilesPath =\n dirname.endsWith('dist') || useDistFiles\n ? path.resolve(dirname, '../..', 'dist/template')\n : path.resolve(dirname, '../../../../templates/blank')\n\n logDebug(`Using template files from: ${templateFilesPath}`)\n\n if (!fs.existsSync(templateFilesPath)) {\n return {\n reason: `Could not find template source files from ${templateFilesPath}`,\n success: false,\n }\n } else {\n logDebug('Found template source files')\n }\n\n logDebug(`Copying template files from ${templateFilesPath} to ${nextAppDir}`)\n\n const templateSrcDir = path.resolve(templateFilesPath, isSrcDir ? '' : 'src')\n\n logDebug(`templateSrcDir: ${templateSrcDir}`)\n logDebug(`nextAppDir: ${nextAppDir}`)\n logDebug(`projectDir: ${projectDir}`)\n logDebug(`nextConfigPath: ${nextConfigPath}`)\n logDebug(`payloadConfigPath: ${path.resolve(projectDir, 'payload.config.ts')}`)\n\n logDebug(\n `isSrcDir: ${isSrcDir}. source: ${templateSrcDir}. dest: ${path.dirname(nextConfigPath)}`,\n )\n\n // This is a little clunky and needs to account for isSrcDir\n copyRecursiveSync(templateSrcDir, path.dirname(nextConfigPath))\n\n // Wrap next.config.js with withPayload\n await wrapNextConfig({ nextConfigPath, nextConfigType })\n\n return {\n payloadConfigPath: path.resolve(nextAppDir, '../payload.config.ts'),\n success: true,\n }\n}\n\nasync function installDeps(args: {\n dbType: DbType\n packageManager: PackageManager\n projectDir: string\n versionOrTag?: string\n}) {\n const { dbType, packageManager, projectDir, versionOrTag } = args\n const { getDbPackageName } = await import('./ast/adapter-config.js')\n\n const version = await resolvePackageVersion({ packageName: 'payload', versionOrTag })\n\n const packagesToInstall = ['payload', '@payloadcms/next', '@payloadcms/richtext-lexical'].map(\n (pkg) => `${pkg}@${version}`,\n )\n\n packagesToInstall.push(`${getDbPackageName(dbType)}@${version}`)\n\n // Match graphql version of @payloadcms/next\n packagesToInstall.push('graphql@^16.8.1')\n\n await ensurePnpmBuildApprovals({ packageManager, projectDir })\n\n return await installPackages({ packageManager, packagesToInstall, projectDir })\n}\n\nexport async function getNextAppDetails(projectDir: string): Promise<NextAppDetails> {\n const isSrcDir = fs.existsSync(path.resolve(projectDir, 'src'))\n\n // Match next.config.js, next.config.ts, next.config.mjs, next.config.cjs\n const nextConfigPath: string | undefined = (\n await globby('next.config.(\\\\w)?(t|j)s', { absolute: true, cwd: projectDir })\n )?.[0]\n\n if (!nextConfigPath || nextConfigPath.length === 0) {\n return {\n hasTopLevelLayout: false,\n isSrcDir,\n isSupportedNextVersion: false,\n nextConfigPath: undefined,\n nextVersion: null,\n }\n }\n\n const packageObj = await fse.readJson(path.resolve(projectDir, 'package.json'))\n // Check if Next.js version is new enough\n let nextVersion = null\n if (packageObj.dependencies?.next) {\n nextVersion = packageObj.dependencies.next\n // Match versions using regex matching groups\n const versionMatch = /(?<major>\\d+)(?:\\.(?<minor>\\d+))?/.exec(nextVersion)\n if (!versionMatch) {\n p.log.warn(`Could not determine Next.js version from ${nextVersion}`)\n return {\n hasTopLevelLayout: false,\n isSrcDir,\n isSupportedNextVersion: false,\n nextConfigPath,\n nextVersion,\n }\n }\n\n const { major, minor } = versionMatch.groups as { major: string; minor?: string }\n const majorVersion = parseInt(major)\n if (majorVersion < minimumNextVersion.major) {\n return {\n hasTopLevelLayout: false,\n isSrcDir,\n isSupportedNextVersion: false,\n nextConfigPath,\n nextVersion,\n }\n }\n\n // TODO: Older minor versions of the minimum major are only warned about, not rejected, to make\n // migrating easier. This can be turned into a hard requirement in the future.\n // A specifier without a minor version (e.g. `^16`) can resolve to any minor, so it is not warned about.\n const isBelowMinimumMinor =\n majorVersion === minimumNextVersion.major &&\n minor !== undefined &&\n parseInt(minor) < minimumNextVersion.minor\n if (isBelowMinimumMinor) {\n p.log.warn(\n `Next.js v${nextVersion} is not supported. Upgrade to Next.js >= ${minimumNextVersion.major}.${minimumNextVersion.minor} to use Payload.`,\n )\n }\n }\n\n const isSupportedNextVersion = true\n\n // Check if Payload already installed\n if (packageObj.dependencies?.payload) {\n return {\n hasTopLevelLayout: false,\n isPayloadInstalled: true,\n isSrcDir,\n isSupportedNextVersion,\n nextConfigPath,\n nextVersion,\n }\n }\n\n let nextAppDir: string | undefined = (\n await globby(['**/app'], {\n absolute: true,\n cwd: projectDir,\n ignore: ['**/node_modules/**'],\n onlyDirectories: true,\n })\n )?.[0]\n\n if (!nextAppDir || nextAppDir.length === 0) {\n nextAppDir = undefined\n }\n\n const configType = getProjectType({ nextConfigPath, packageObj })\n\n const hasTopLevelLayout = nextAppDir\n ? fs.existsSync(path.resolve(nextAppDir, 'layout.tsx'))\n : false\n\n return {\n hasTopLevelLayout,\n isSrcDir,\n isSupportedNextVersion,\n nextAppDir,\n nextConfigPath,\n nextConfigType: configType,\n nextVersion,\n }\n}\n\nfunction getProjectType(args: {\n nextConfigPath: string\n packageObj: Record<string, unknown>\n}): NextConfigType {\n const { nextConfigPath, packageObj } = args\n\n if (nextConfigPath.endsWith('.ts')) {\n return 'ts'\n }\n\n if (nextConfigPath.endsWith('.mjs')) {\n return 'esm'\n }\n if (nextConfigPath.endsWith('.cjs')) {\n return 'cjs'\n }\n\n const packageJsonType = packageObj.type\n if (packageJsonType === 'module') {\n return 'esm'\n }\n if (packageJsonType === 'commonjs') {\n return 'cjs'\n }\n\n return 'cjs'\n}\n"],"names":["p","fs","fse","globby","fileURLToPath","path","copyRecursiveSync","debug","origDebug","warning","moveMessage","DEFAULT_PAYLOAD_VERSION_TAG","resolvePackageVersion","configurePayloadTsConfig","ensurePnpmBuildApprovals","installPackages","wrapNextConfig","filename","url","dirname","minimumNextVersion","major","minor","initNext","args","dbType","packageManager","projectDir","nextAppDetails","getNextAppDetails","nextAppDir","createdAppDir","resolve","isSrcDir","mkdirSync","recursive","hasTopLevelLayout","nextConfigType","reason","success","log","warn","installSpinner","spinner","start","configurationResult","installAndConfigurePayload","useDistFiles","stop","installSuccess","installDeps","versionOrTag","configPath","payloadConfigPath","nextConfigPath","logDebug","message","existsSync","templateFilesPath","endsWith","templateSrcDir","getDbPackageName","version","packageName","packagesToInstall","map","pkg","push","absolute","cwd","length","isSupportedNextVersion","undefined","nextVersion","packageObj","readJson","dependencies","next","versionMatch","exec","groups","majorVersion","parseInt","isBelowMinimumMinor","payload","isPayloadInstalled","ignore","onlyDirectories","configType","getProjectType","packageJsonType","type"],"mappings":"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"}
|
|
@@ -135,11 +135,10 @@ function getRequiredDependencies({ appDetails, dbType, payloadVersion }) {
|
|
|
135
135
|
'@vitejs/plugin-rsc': '^0.5.21',
|
|
136
136
|
[getDbPackageName(dbType)]: payloadVersion,
|
|
137
137
|
graphql: '^16.8.1',
|
|
138
|
-
payload: payloadVersion
|
|
139
|
-
sharp: '0.34.2'
|
|
138
|
+
payload: payloadVersion
|
|
140
139
|
};
|
|
141
140
|
if (appDetails.kind === 'router-only') {
|
|
142
|
-
dependencies['@tanstack/react-start'] = '^1.168.
|
|
141
|
+
dependencies['@tanstack/react-start'] = '^1.168.60';
|
|
143
142
|
}
|
|
144
143
|
return dependencies;
|
|
145
144
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/lib/init-tanstack.ts"],"sourcesContent":["import path from 'node:path'\nimport { fileURLToPath } from 'node:url'\n\nimport type { CliArgs, DbType, PackageManager, TanStackAppDetails } from '../types.js'\n\nimport { debug } from '../utils/log.js'\nimport {\n DEFAULT_PAYLOAD_VERSION_TAG,\n resolvePackageVersion,\n} from '../utils/resolvePackageVersion.js'\nimport { getDbPackageName } from './ast/adapter-config.js'\nimport { preparePackageJson } from './ast/package-json.js'\nimport { configurePayloadTsConfig } from './configure-payload-tsconfig.js'\nimport { ensurePnpmBuildApprovals } from './configure-pnpm-builds.js'\nimport { installPackages } from './install-packages.js'\nimport { getTanStackAppDetails } from './tanstack/detect.js'\nimport { applyPreparedWrites, prepareTanStackInit } from './tanstack/prepare.js'\n\nconst filename = fileURLToPath(import.meta.url)\nconst dirname = path.dirname(filename)\n\ntype InitTanStackArgs = {\n appDetails?: TanStackAppDetails\n dbType: DbType\n packageManager: PackageManager\n projectDir: string\n templateRoot?: string\n} & Pick<CliArgs, '--debug' | '--no-deps' | '--payload-version'>\n\ntype InitTanStackResult =\n | { payloadConfigPath: string; success: true }\n | { reason: string; success: false }\n\nexport async function initTanStack(args: InitTanStackArgs): Promise<InitTanStackResult> {\n const appDetailsResult = args.appDetails\n ? { details: args.appDetails, success: true as const }\n : await detectAppDetails({ projectDir: args.projectDir })\n\n if (!appDetailsResult.success) {\n return appDetailsResult\n }\n\n const { details: appDetails } = appDetailsResult\n const templateRoot = args.templateRoot ?? resolveTemplateRoot()\n\n if (args['--debug']) {\n debug(`Using TanStack template files from: ${templateRoot}`)\n }\n\n const prepared = await prepareTanStackInit({ appDetails, templateRoot })\n if (!prepared.success) {\n return prepared\n }\n\n const payloadVersion = await resolvePackageVersion({\n debug: args['--debug'],\n packageName: 'payload',\n versionOrTag: args['--payload-version'] ?? DEFAULT_PAYLOAD_VERSION_TAG,\n })\n const requiredDependencies = getRequiredDependencies({\n appDetails,\n dbType: args.dbType,\n payloadVersion,\n })\n let writes = prepared.writes\n if (appDetails.kind === 'router-only' || args['--no-deps']) {\n try {\n const packageJsonWrite = preparePackageJson({\n filePath: path.join(args.projectDir, 'package.json'),\n options: {\n addDependencies: args['--no-deps'] ? requiredDependencies : undefined,\n removeDependencies:\n appDetails.kind === 'router-only' ? ['@tanstack/router-plugin'] : undefined,\n },\n })\n writes = [...writes, packageJsonWrite]\n } catch (error) {\n return {\n reason: `Could not prepare package.json: ${error instanceof Error ? error.message : 'Unknown error'}`,\n success: false,\n }\n }\n }\n\n await applyPreparedWrites({ writes })\n\n if (!args['--no-deps']) {\n const packagesToInstall = Object.entries(requiredDependencies).map(\n ([packageName, version]) => `${packageName}@${version}`,\n )\n\n await ensurePnpmBuildApprovals({\n packageManager: args.packageManager,\n projectDir: args.projectDir,\n })\n\n let installation: { success: boolean }\n try {\n installation = await installPackages({\n packageManager: args.packageManager,\n packagesToInstall,\n projectDir: args.projectDir,\n })\n } catch {\n return { reason: 'Failed to install dependencies', success: false }\n }\n if (!installation.success) {\n return { reason: 'Failed to install dependencies', success: false }\n }\n }\n\n const payloadConfigPath = path.join(appDetails.sourceDir, 'payload.config.ts')\n await configurePayloadTsConfig({\n configPath: path.join(args.projectDir, 'tsconfig.json'),\n payloadConfigPath,\n })\n\n return { payloadConfigPath, success: true }\n}\n\nasync function detectAppDetails({\n projectDir,\n}: {\n projectDir: string\n}): Promise<{ details: TanStackAppDetails; success: true } | { reason: string; success: false }> {\n const detection = await getTanStackAppDetails({ projectDir })\n\n if (!detection.detected) {\n return {\n reason: `Could not detect a TanStack application in ${projectDir}.`,\n success: false,\n }\n }\n\n if (!detection.compatible) {\n return { reason: detection.reason, success: false }\n }\n\n return { details: detection.details, success: true }\n}\n\nfunction getRequiredDependencies({\n appDetails,\n dbType,\n payloadVersion,\n}: {\n appDetails: TanStackAppDetails\n dbType: DbType\n payloadVersion: string\n}): Record<string, string> {\n const dependencies: Record<string, string> = {\n '@payloadcms/plugin-mcp': payloadVersion,\n '@payloadcms/richtext-lexical': payloadVersion,\n '@payloadcms/tanstack-start': payloadVersion,\n '@payloadcms/ui': payloadVersion,\n '@vitejs/plugin-rsc': '^0.5.21',\n [getDbPackageName(dbType)]: payloadVersion,\n graphql: '^16.8.1',\n payload: payloadVersion,\n
|
|
1
|
+
{"version":3,"sources":["../../src/lib/init-tanstack.ts"],"sourcesContent":["import path from 'node:path'\nimport { fileURLToPath } from 'node:url'\n\nimport type { CliArgs, DbType, PackageManager, TanStackAppDetails } from '../types.js'\n\nimport { debug } from '../utils/log.js'\nimport {\n DEFAULT_PAYLOAD_VERSION_TAG,\n resolvePackageVersion,\n} from '../utils/resolvePackageVersion.js'\nimport { getDbPackageName } from './ast/adapter-config.js'\nimport { preparePackageJson } from './ast/package-json.js'\nimport { configurePayloadTsConfig } from './configure-payload-tsconfig.js'\nimport { ensurePnpmBuildApprovals } from './configure-pnpm-builds.js'\nimport { installPackages } from './install-packages.js'\nimport { getTanStackAppDetails } from './tanstack/detect.js'\nimport { applyPreparedWrites, prepareTanStackInit } from './tanstack/prepare.js'\n\nconst filename = fileURLToPath(import.meta.url)\nconst dirname = path.dirname(filename)\n\ntype InitTanStackArgs = {\n appDetails?: TanStackAppDetails\n dbType: DbType\n packageManager: PackageManager\n projectDir: string\n templateRoot?: string\n} & Pick<CliArgs, '--debug' | '--no-deps' | '--payload-version'>\n\ntype InitTanStackResult =\n | { payloadConfigPath: string; success: true }\n | { reason: string; success: false }\n\nexport async function initTanStack(args: InitTanStackArgs): Promise<InitTanStackResult> {\n const appDetailsResult = args.appDetails\n ? { details: args.appDetails, success: true as const }\n : await detectAppDetails({ projectDir: args.projectDir })\n\n if (!appDetailsResult.success) {\n return appDetailsResult\n }\n\n const { details: appDetails } = appDetailsResult\n const templateRoot = args.templateRoot ?? resolveTemplateRoot()\n\n if (args['--debug']) {\n debug(`Using TanStack template files from: ${templateRoot}`)\n }\n\n const prepared = await prepareTanStackInit({ appDetails, templateRoot })\n if (!prepared.success) {\n return prepared\n }\n\n const payloadVersion = await resolvePackageVersion({\n debug: args['--debug'],\n packageName: 'payload',\n versionOrTag: args['--payload-version'] ?? DEFAULT_PAYLOAD_VERSION_TAG,\n })\n const requiredDependencies = getRequiredDependencies({\n appDetails,\n dbType: args.dbType,\n payloadVersion,\n })\n let writes = prepared.writes\n if (appDetails.kind === 'router-only' || args['--no-deps']) {\n try {\n const packageJsonWrite = preparePackageJson({\n filePath: path.join(args.projectDir, 'package.json'),\n options: {\n addDependencies: args['--no-deps'] ? requiredDependencies : undefined,\n removeDependencies:\n appDetails.kind === 'router-only' ? ['@tanstack/router-plugin'] : undefined,\n },\n })\n writes = [...writes, packageJsonWrite]\n } catch (error) {\n return {\n reason: `Could not prepare package.json: ${error instanceof Error ? error.message : 'Unknown error'}`,\n success: false,\n }\n }\n }\n\n await applyPreparedWrites({ writes })\n\n if (!args['--no-deps']) {\n const packagesToInstall = Object.entries(requiredDependencies).map(\n ([packageName, version]) => `${packageName}@${version}`,\n )\n\n await ensurePnpmBuildApprovals({\n packageManager: args.packageManager,\n projectDir: args.projectDir,\n })\n\n let installation: { success: boolean }\n try {\n installation = await installPackages({\n packageManager: args.packageManager,\n packagesToInstall,\n projectDir: args.projectDir,\n })\n } catch {\n return { reason: 'Failed to install dependencies', success: false }\n }\n if (!installation.success) {\n return { reason: 'Failed to install dependencies', success: false }\n }\n }\n\n const payloadConfigPath = path.join(appDetails.sourceDir, 'payload.config.ts')\n await configurePayloadTsConfig({\n configPath: path.join(args.projectDir, 'tsconfig.json'),\n payloadConfigPath,\n })\n\n return { payloadConfigPath, success: true }\n}\n\nasync function detectAppDetails({\n projectDir,\n}: {\n projectDir: string\n}): Promise<{ details: TanStackAppDetails; success: true } | { reason: string; success: false }> {\n const detection = await getTanStackAppDetails({ projectDir })\n\n if (!detection.detected) {\n return {\n reason: `Could not detect a TanStack application in ${projectDir}.`,\n success: false,\n }\n }\n\n if (!detection.compatible) {\n return { reason: detection.reason, success: false }\n }\n\n return { details: detection.details, success: true }\n}\n\nfunction getRequiredDependencies({\n appDetails,\n dbType,\n payloadVersion,\n}: {\n appDetails: TanStackAppDetails\n dbType: DbType\n payloadVersion: string\n}): Record<string, string> {\n const dependencies: Record<string, string> = {\n '@payloadcms/plugin-mcp': payloadVersion,\n '@payloadcms/richtext-lexical': payloadVersion,\n '@payloadcms/tanstack-start': payloadVersion,\n '@payloadcms/ui': payloadVersion,\n '@vitejs/plugin-rsc': '^0.5.21',\n [getDbPackageName(dbType)]: payloadVersion,\n graphql: '^16.8.1',\n payload: payloadVersion,\n }\n\n if (appDetails.kind === 'router-only') {\n dependencies['@tanstack/react-start'] = '^1.168.60'\n }\n\n return dependencies\n}\n\nfunction resolveTemplateRoot(): string {\n return path.basename(path.dirname(dirname)) === 'dist'\n ? path.resolve(dirname, '../template-tanstack')\n : path.resolve(dirname, '../../../../templates/blank-tanstack/src')\n}\n"],"names":["path","fileURLToPath","debug","DEFAULT_PAYLOAD_VERSION_TAG","resolvePackageVersion","getDbPackageName","preparePackageJson","configurePayloadTsConfig","ensurePnpmBuildApprovals","installPackages","getTanStackAppDetails","applyPreparedWrites","prepareTanStackInit","filename","url","dirname","initTanStack","args","appDetailsResult","appDetails","details","success","detectAppDetails","projectDir","templateRoot","resolveTemplateRoot","prepared","payloadVersion","packageName","versionOrTag","requiredDependencies","getRequiredDependencies","dbType","writes","kind","packageJsonWrite","filePath","join","options","addDependencies","undefined","removeDependencies","error","reason","Error","message","packagesToInstall","Object","entries","map","version","packageManager","installation","payloadConfigPath","sourceDir","configPath","detection","detected","compatible","dependencies","graphql","payload","basename","resolve"],"mappings":"AAAA,OAAOA,UAAU,YAAW;AAC5B,SAASC,aAAa,QAAQ,WAAU;AAIxC,SAASC,KAAK,QAAQ,kBAAiB;AACvC,SACEC,2BAA2B,EAC3BC,qBAAqB,QAChB,oCAAmC;AAC1C,SAASC,gBAAgB,QAAQ,0BAAyB;AAC1D,SAASC,kBAAkB,QAAQ,wBAAuB;AAC1D,SAASC,wBAAwB,QAAQ,kCAAiC;AAC1E,SAASC,wBAAwB,QAAQ,6BAA4B;AACrE,SAASC,eAAe,QAAQ,wBAAuB;AACvD,SAASC,qBAAqB,QAAQ,uBAAsB;AAC5D,SAASC,mBAAmB,EAAEC,mBAAmB,QAAQ,wBAAuB;AAEhF,MAAMC,WAAWZ,cAAc,YAAYa,GAAG;AAC9C,MAAMC,UAAUf,KAAKe,OAAO,CAACF;AAc7B,OAAO,eAAeG,aAAaC,IAAsB;IACvD,MAAMC,mBAAmBD,KAAKE,UAAU,GACpC;QAAEC,SAASH,KAAKE,UAAU;QAAEE,SAAS;IAAc,IACnD,MAAMC,iBAAiB;QAAEC,YAAYN,KAAKM,UAAU;IAAC;IAEzD,IAAI,CAACL,iBAAiBG,OAAO,EAAE;QAC7B,OAAOH;IACT;IAEA,MAAM,EAAEE,SAASD,UAAU,EAAE,GAAGD;IAChC,MAAMM,eAAeP,KAAKO,YAAY,IAAIC;IAE1C,IAAIR,IAAI,CAAC,UAAU,EAAE;QACnBf,MAAM,CAAC,oCAAoC,EAAEsB,cAAc;IAC7D;IAEA,MAAME,WAAW,MAAMd,oBAAoB;QAAEO;QAAYK;IAAa;IACtE,IAAI,CAACE,SAASL,OAAO,EAAE;QACrB,OAAOK;IACT;IAEA,MAAMC,iBAAiB,MAAMvB,sBAAsB;QACjDF,OAAOe,IAAI,CAAC,UAAU;QACtBW,aAAa;QACbC,cAAcZ,IAAI,CAAC,oBAAoB,IAAId;IAC7C;IACA,MAAM2B,uBAAuBC,wBAAwB;QACnDZ;QACAa,QAAQf,KAAKe,MAAM;QACnBL;IACF;IACA,IAAIM,SAASP,SAASO,MAAM;IAC5B,IAAId,WAAWe,IAAI,KAAK,iBAAiBjB,IAAI,CAAC,YAAY,EAAE;QAC1D,IAAI;YACF,MAAMkB,mBAAmB7B,mBAAmB;gBAC1C8B,UAAUpC,KAAKqC,IAAI,CAACpB,KAAKM,UAAU,EAAE;gBACrCe,SAAS;oBACPC,iBAAiBtB,IAAI,CAAC,YAAY,GAAGa,uBAAuBU;oBAC5DC,oBACEtB,WAAWe,IAAI,KAAK,gBAAgB;wBAAC;qBAA0B,GAAGM;gBACtE;YACF;YACAP,SAAS;mBAAIA;gBAAQE;aAAiB;QACxC,EAAE,OAAOO,OAAO;YACd,OAAO;gBACLC,QAAQ,CAAC,gCAAgC,EAAED,iBAAiBE,QAAQF,MAAMG,OAAO,GAAG,iBAAiB;gBACrGxB,SAAS;YACX;QACF;IACF;IAEA,MAAMV,oBAAoB;QAAEsB;IAAO;IAEnC,IAAI,CAAChB,IAAI,CAAC,YAAY,EAAE;QACtB,MAAM6B,oBAAoBC,OAAOC,OAAO,CAAClB,sBAAsBmB,GAAG,CAChE,CAAC,CAACrB,aAAasB,QAAQ,GAAK,GAAGtB,YAAY,CAAC,EAAEsB,SAAS;QAGzD,MAAM1C,yBAAyB;YAC7B2C,gBAAgBlC,KAAKkC,cAAc;YACnC5B,YAAYN,KAAKM,UAAU;QAC7B;QAEA,IAAI6B;QACJ,IAAI;YACFA,eAAe,MAAM3C,gBAAgB;gBACnC0C,gBAAgBlC,KAAKkC,cAAc;gBACnCL;gBACAvB,YAAYN,KAAKM,UAAU;YAC7B;QACF,EAAE,OAAM;YACN,OAAO;gBAAEoB,QAAQ;gBAAkCtB,SAAS;YAAM;QACpE;QACA,IAAI,CAAC+B,aAAa/B,OAAO,EAAE;YACzB,OAAO;gBAAEsB,QAAQ;gBAAkCtB,SAAS;YAAM;QACpE;IACF;IAEA,MAAMgC,oBAAoBrD,KAAKqC,IAAI,CAAClB,WAAWmC,SAAS,EAAE;IAC1D,MAAM/C,yBAAyB;QAC7BgD,YAAYvD,KAAKqC,IAAI,CAACpB,KAAKM,UAAU,EAAE;QACvC8B;IACF;IAEA,OAAO;QAAEA;QAAmBhC,SAAS;IAAK;AAC5C;AAEA,eAAeC,iBAAiB,EAC9BC,UAAU,EAGX;IACC,MAAMiC,YAAY,MAAM9C,sBAAsB;QAAEa;IAAW;IAE3D,IAAI,CAACiC,UAAUC,QAAQ,EAAE;QACvB,OAAO;YACLd,QAAQ,CAAC,2CAA2C,EAAEpB,WAAW,CAAC,CAAC;YACnEF,SAAS;QACX;IACF;IAEA,IAAI,CAACmC,UAAUE,UAAU,EAAE;QACzB,OAAO;YAAEf,QAAQa,UAAUb,MAAM;YAAEtB,SAAS;QAAM;IACpD;IAEA,OAAO;QAAED,SAASoC,UAAUpC,OAAO;QAAEC,SAAS;IAAK;AACrD;AAEA,SAASU,wBAAwB,EAC/BZ,UAAU,EACVa,MAAM,EACNL,cAAc,EAKf;IACC,MAAMgC,eAAuC;QAC3C,0BAA0BhC;QAC1B,gCAAgCA;QAChC,8BAA8BA;QAC9B,kBAAkBA;QAClB,sBAAsB;QACtB,CAACtB,iBAAiB2B,QAAQ,EAAEL;QAC5BiC,SAAS;QACTC,SAASlC;IACX;IAEA,IAAIR,WAAWe,IAAI,KAAK,eAAe;QACrCyB,YAAY,CAAC,wBAAwB,GAAG;IAC1C;IAEA,OAAOA;AACT;AAEA,SAASlC;IACP,OAAOzB,KAAK8D,QAAQ,CAAC9D,KAAKe,OAAO,CAACA,cAAc,SAC5Cf,KAAK+D,OAAO,CAAChD,SAAS,0BACtBf,KAAK+D,OAAO,CAAChD,SAAS;AAC5B"}
|
package/dist/main.js
CHANGED
|
@@ -9,7 +9,7 @@ import { createProject } from './lib/create-project.js';
|
|
|
9
9
|
import { parseExample } from './lib/examples.js';
|
|
10
10
|
import { generateSecret } from './lib/generate-secret.js';
|
|
11
11
|
import { getPackageManager } from './lib/get-package-manager.js';
|
|
12
|
-
import { getNextAppDetails, initNext } from './lib/init-next.js';
|
|
12
|
+
import { getNextAppDetails, initNext, minimumNextVersion } from './lib/init-next.js';
|
|
13
13
|
import { initTanStack } from './lib/init-tanstack.js';
|
|
14
14
|
import { manageEnvFiles } from './lib/manage-env-files.js';
|
|
15
15
|
import { parseProjectName } from './lib/parse-project-name.js';
|
|
@@ -102,7 +102,7 @@ export class Main {
|
|
|
102
102
|
return;
|
|
103
103
|
}
|
|
104
104
|
if (appFramework.kind === 'next' && !appFramework.appDetails.isSupportedNextVersion) {
|
|
105
|
-
p.log.warn(`Next.js v${appFramework.appDetails.nextVersion} is unsupported. Next.js >=
|
|
105
|
+
p.log.warn(`Next.js v${appFramework.appDetails.nextVersion} is unsupported. Next.js >= ${minimumNextVersion.major}.${minimumNextVersion.minor} is required to use Payload.`);
|
|
106
106
|
p.outro(feedbackOutro());
|
|
107
107
|
process.exit(0);
|
|
108
108
|
}
|
package/dist/main.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/main.ts"],"sourcesContent":["import * as p from '@clack/prompts'\nimport slugify from '@sindresorhus/slugify'\nimport arg from 'arg'\nimport chalk from 'chalk'\nimport figures from 'figures'\nimport path from 'path'\n\nimport type {\n CliArgs,\n NextAppDetails,\n TanStackAppDetails,\n TanStackDetectionResult,\n} from './types.js'\n\nimport { configurePayloadConfig } from './lib/configure-payload-config.js'\nimport { createProject } from './lib/create-project.js'\nimport { parseExample } from './lib/examples.js'\nimport { generateSecret } from './lib/generate-secret.js'\nimport { getPackageManager } from './lib/get-package-manager.js'\nimport { getNextAppDetails, initNext } from './lib/init-next.js'\nimport { initTanStack } from './lib/init-tanstack.js'\nimport { manageEnvFiles } from './lib/manage-env-files.js'\nimport { parseProjectName } from './lib/parse-project-name.js'\nimport { parseTemplate } from './lib/parse-template.js'\nimport { selectDb } from './lib/select-db.js'\nimport { getTanStackAppDetails } from './lib/tanstack/detect.js'\nimport { getValidTemplates, validateTemplate } from './lib/templates.js'\nimport {\n updatePayloadInNextProject,\n updatePayloadInTanStackProject,\n} from './lib/update-payload-in-project.js'\nimport { debug, error, info } from './utils/log.js'\nimport {\n feedbackOutro,\n helpMessage,\n moveMessage,\n successfulNextInit,\n successfulTanStackInit,\n successMessage,\n} from './utils/messages.js'\nimport {\n DEFAULT_PAYLOAD_VERSION_TAG,\n resolvePackageVersion,\n} from './utils/resolvePackageVersion.js'\n\nexport class Main {\n args: CliArgs\n\n constructor() {\n // @ts-expect-error bad typings\n this.args = arg(\n {\n '--branch': String,\n '--db': String,\n '--db-accept-recommended': Boolean,\n '--db-connection-string': String,\n '--example': String,\n '--help': Boolean,\n '--local-template': String,\n '--name': String,\n '--payload-version': String, // Install a specific Payload version or npm dist-tag (e.g. 3.40.0 or canary; default: canary)\n '--secret': String,\n '--template': String,\n\n // Next.js\n '--init-next': Boolean, // TODO: Is this needed if we detect if inside Next.js project?\n\n // Agent\n '--no-agent': Boolean,\n\n // Package manager\n '--no-deps': Boolean,\n '--use-bun': Boolean,\n '--use-npm': Boolean,\n '--use-pnpm': Boolean,\n '--use-yarn': Boolean,\n\n // Other\n '--no-git': Boolean,\n\n // Flags\n '--beta': Boolean,\n '--debug': Boolean,\n '--dry-run': Boolean,\n\n // Aliases\n '-d': '--db',\n '-e': '--example',\n '-h': '--help',\n '-n': '--name',\n '-t': '--template',\n },\n { permissive: true },\n )\n }\n\n async init(): Promise<void> {\n try {\n const debugFlag = this.args['--debug']\n\n // Set DEBUG env var for logger utility\n if (debugFlag) {\n process.env.DEBUG = 'true'\n }\n\n const LATEST_VERSION = await resolvePackageVersion({\n debug: debugFlag,\n packageName: 'payload',\n versionOrTag: this.args['--payload-version'] ?? DEFAULT_PAYLOAD_VERSION_TAG,\n })\n\n if (this.args['--help']) {\n helpMessage()\n process.exit(0)\n }\n\n // eslint-disable-next-line no-console\n console.log('\\n')\n p.intro(chalk.bgCyan(chalk.black(' create-payload-app ')))\n p.note(\"Welcome to Payload. Let's create a project!\")\n\n const tanStackDetection = await getTanStackAppDetails({ projectDir: process.cwd() })\n const nextAppDetails = await getNextAppDetails(process.cwd())\n const appFramework = resolveAppFramework({ nextAppDetails, tanStackDetection })\n\n if (appFramework.kind === 'ambiguous') {\n p.log.warn(\n 'Both Next.js and TanStack project markers were detected. Remove one framework before installing Payload.',\n )\n p.outro(feedbackOutro())\n return\n }\n\n if (appFramework.kind === 'unsupported-tanstack') {\n p.log.warn(appFramework.reason)\n p.outro(feedbackOutro())\n return\n }\n\n if (appFramework.kind === 'next' && !appFramework.appDetails.isSupportedNextVersion) {\n p.log.warn(\n `Next.js v${appFramework.appDetails.nextVersion} is unsupported. Next.js >= 15 is required to use Payload.`,\n )\n p.outro(feedbackOutro())\n process.exit(0)\n }\n\n const hasPayload = appFramework.kind !== 'none' && appFramework.appDetails.isPayloadInstalled\n\n if (hasPayload) {\n p.log.warn(`Payload installation detected in current project.`)\n const shouldUpdate = await p.confirm({\n initialValue: false,\n message: chalk.bold(`Upgrade Payload in this project?`),\n })\n\n if (!p.isCancel(shouldUpdate) && shouldUpdate) {\n const versionOrTag = this.args['--payload-version'] ?? DEFAULT_PAYLOAD_VERSION_TAG\n const updateResult =\n appFramework.kind === 'next'\n ? await updatePayloadInNextProject({\n appDetails: appFramework.appDetails,\n versionOrTag,\n })\n : await updatePayloadInTanStackProject({\n appDetails: appFramework.appDetails,\n versionOrTag,\n })\n\n const { message, success: updateSuccess } = updateResult\n if (updateSuccess) {\n info(message)\n } else {\n error(message)\n }\n }\n\n p.outro(feedbackOutro())\n return\n }\n\n if (appFramework.kind === 'next') {\n this.args['--name'] = slugify(\n path.basename(path.dirname(appFramework.appDetails.nextConfigPath!)),\n )\n } else if (appFramework.kind === 'tanstack') {\n this.args['--name'] = slugify(path.basename(appFramework.appDetails.projectDir))\n }\n\n const projectName = await parseProjectName(this.args)\n let projectDir: string\n if (appFramework.kind === 'next') {\n projectDir = path.dirname(appFramework.appDetails.nextConfigPath!)\n } else if (appFramework.kind === 'tanstack') {\n projectDir = appFramework.appDetails.projectDir\n } else {\n projectDir = path.resolve(process.cwd(), slugify(projectName))\n }\n\n const packageManager = await getPackageManager({ cliArgs: this.args, projectDir })\n\n if (appFramework.kind === 'next') {\n const { hasTopLevelLayout, nextAppDir } = appFramework.appDetails\n\n p.log.step(\n chalk.bold(`${chalk.bgBlack(` ${figures.triangleUp} Next.js `)} project detected!`),\n )\n\n const proceed = await p.confirm({\n initialValue: true,\n message: chalk.bold(`Install ${chalk.green('Payload')} in this project?`),\n })\n if (p.isCancel(proceed) || !proceed) {\n p.outro(feedbackOutro())\n process.exit(0)\n }\n\n // Check for top-level layout.tsx\n if (nextAppDir && hasTopLevelLayout) {\n p.log.warn(moveMessage({ nextAppDir, projectDir }))\n p.outro(feedbackOutro())\n process.exit(0)\n }\n\n const dbDetails = await selectDb(this.args, projectName)\n\n const result = await initNext({\n ...this.args,\n dbType: dbDetails.type,\n nextAppDetails: appFramework.appDetails,\n packageManager,\n projectDir,\n })\n\n if (result.success === false) {\n p.outro(feedbackOutro())\n process.exit(1)\n }\n\n await configurePayloadConfig({\n dbType: dbDetails?.type,\n projectDirOrConfigPath: {\n payloadConfigPath: result.payloadConfigPath,\n },\n })\n\n await manageEnvFiles({\n cliArgs: this.args,\n databaseType: dbDetails.type,\n databaseUri: dbDetails.dbUri,\n payloadSecret: generateSecret(),\n projectDir,\n })\n\n info('Payload project successfully initialized!')\n p.note(successfulNextInit(), chalk.bgGreen(chalk.black(' Documentation ')))\n p.outro(feedbackOutro())\n return\n }\n\n if (appFramework.kind === 'tanstack') {\n const frameworkName =\n appFramework.appDetails.kind === 'start' ? 'TanStack Start' : 'TanStack Router'\n p.log.step(chalk.bold(`${chalk.bgBlack(` ${frameworkName} `)} project detected!`))\n\n const proceed = await p.confirm({\n initialValue: true,\n message: chalk.bold(\n appFramework.appDetails.kind === 'start'\n ? 'Install Payload in this TanStack Start project?'\n : 'Convert this project to TanStack Start and install Payload?',\n ),\n })\n if (p.isCancel(proceed) || !proceed) {\n p.outro(feedbackOutro())\n process.exit(0)\n }\n\n const dbDetails = await selectDb(this.args, projectName)\n const result = await initTanStack({\n ...this.args,\n appDetails: appFramework.appDetails,\n dbType: dbDetails.type,\n packageManager,\n projectDir,\n })\n\n if (result.success === false) {\n p.log.error(result.reason)\n p.outro(feedbackOutro())\n process.exit(1)\n }\n\n await configurePayloadConfig({\n dbType: dbDetails.type,\n projectDirOrConfigPath: {\n payloadConfigPath: result.payloadConfigPath,\n },\n })\n\n await manageEnvFiles({\n cliArgs: this.args,\n databaseType: dbDetails.type,\n databaseUri: dbDetails.dbUri,\n payloadSecret: generateSecret(),\n projectDir,\n })\n\n info('Payload project successfully initialized!')\n p.note(successfulTanStackInit(), chalk.bgGreen(chalk.black(' TanStack Start initialized ')))\n p.outro(feedbackOutro())\n return\n }\n\n const templateArg = this.args['--template']\n if (templateArg) {\n const valid = validateTemplate({ templateName: templateArg })\n if (!valid) {\n helpMessage()\n process.exit(1)\n }\n }\n\n const exampleArg = this.args['--example']\n\n if (exampleArg) {\n const example = await parseExample({\n name: exampleArg,\n branch: this.args['--branch'] ?? 'main',\n })\n\n if (!example) {\n helpMessage()\n process.exit(1)\n }\n\n await createProject({\n cliArgs: this.args,\n example,\n packageManager,\n projectDir,\n projectName,\n })\n }\n\n if (debugFlag) {\n debug(`Using ${exampleArg ? 'examples' : 'templates'} from git tag: v${LATEST_VERSION}`)\n }\n\n if (!exampleArg) {\n const validTemplates = getValidTemplates()\n const template = await parseTemplate(this.args, validTemplates)\n if (!template) {\n p.log.error('Invalid template given')\n p.outro(feedbackOutro())\n process.exit(1)\n }\n\n switch (template.type) {\n case 'plugin': {\n await createProject({\n cliArgs: this.args,\n packageManager,\n projectDir,\n projectName,\n template,\n })\n break\n }\n case 'starter': {\n const dbDetails = await selectDb(this.args, projectName, template)\n await createProject({\n cliArgs: this.args,\n dbDetails,\n packageManager,\n projectDir,\n projectName,\n template,\n })\n\n break\n }\n }\n }\n\n info('Payload project successfully created!')\n p.log.step(chalk.bgGreen(chalk.black(' Next Steps ')))\n p.log.message(successMessage(projectDir, packageManager))\n p.outro(feedbackOutro())\n } catch (err: unknown) {\n error(err instanceof Error ? err.message : 'An error occurred')\n }\n }\n}\n\ntype AppFramework =\n | { appDetails: NextAppDetails; kind: 'next' }\n | { appDetails: TanStackAppDetails; kind: 'tanstack' }\n | { kind: 'ambiguous' }\n | { kind: 'none' }\n | { kind: 'unsupported-tanstack'; reason: string }\n\nexport function resolveAppFramework({\n nextAppDetails,\n tanStackDetection,\n}: {\n nextAppDetails: NextAppDetails\n tanStackDetection: TanStackDetectionResult\n}): AppFramework {\n if (nextAppDetails.nextConfigPath && tanStackDetection.detected) {\n return { kind: 'ambiguous' }\n }\n\n if (nextAppDetails.nextConfigPath) {\n return { appDetails: nextAppDetails, kind: 'next' }\n }\n\n if (!tanStackDetection.detected) {\n return { kind: 'none' }\n }\n\n if (!tanStackDetection.compatible) {\n return { kind: 'unsupported-tanstack', reason: tanStackDetection.reason }\n }\n\n return { appDetails: tanStackDetection.details, kind: 'tanstack' }\n}\n"],"names":["p","slugify","arg","chalk","figures","path","configurePayloadConfig","createProject","parseExample","generateSecret","getPackageManager","getNextAppDetails","initNext","initTanStack","manageEnvFiles","parseProjectName","parseTemplate","selectDb","getTanStackAppDetails","getValidTemplates","validateTemplate","updatePayloadInNextProject","updatePayloadInTanStackProject","debug","error","info","feedbackOutro","helpMessage","moveMessage","successfulNextInit","successfulTanStackInit","successMessage","DEFAULT_PAYLOAD_VERSION_TAG","resolvePackageVersion","Main","args","String","Boolean","permissive","init","debugFlag","process","env","DEBUG","LATEST_VERSION","packageName","versionOrTag","exit","console","log","intro","bgCyan","black","note","tanStackDetection","projectDir","cwd","nextAppDetails","appFramework","resolveAppFramework","kind","warn","outro","reason","appDetails","isSupportedNextVersion","nextVersion","hasPayload","isPayloadInstalled","shouldUpdate","confirm","initialValue","message","bold","isCancel","updateResult","success","updateSuccess","basename","dirname","nextConfigPath","projectName","resolve","packageManager","cliArgs","hasTopLevelLayout","nextAppDir","step","bgBlack","triangleUp","proceed","green","dbDetails","result","dbType","type","projectDirOrConfigPath","payloadConfigPath","databaseType","databaseUri","dbUri","payloadSecret","bgGreen","frameworkName","templateArg","valid","templateName","exampleArg","example","name","branch","validTemplates","template","err","Error","detected","compatible","details"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../src/main.ts"],"sourcesContent":["import * as p from '@clack/prompts'\nimport slugify from '@sindresorhus/slugify'\nimport arg from 'arg'\nimport chalk from 'chalk'\nimport figures from 'figures'\nimport path from 'path'\n\nimport type {\n CliArgs,\n NextAppDetails,\n TanStackAppDetails,\n TanStackDetectionResult,\n} from './types.js'\n\nimport { configurePayloadConfig } from './lib/configure-payload-config.js'\nimport { createProject } from './lib/create-project.js'\nimport { parseExample } from './lib/examples.js'\nimport { generateSecret } from './lib/generate-secret.js'\nimport { getPackageManager } from './lib/get-package-manager.js'\nimport { getNextAppDetails, initNext, minimumNextVersion } from './lib/init-next.js'\nimport { initTanStack } from './lib/init-tanstack.js'\nimport { manageEnvFiles } from './lib/manage-env-files.js'\nimport { parseProjectName } from './lib/parse-project-name.js'\nimport { parseTemplate } from './lib/parse-template.js'\nimport { selectDb } from './lib/select-db.js'\nimport { getTanStackAppDetails } from './lib/tanstack/detect.js'\nimport { getValidTemplates, validateTemplate } from './lib/templates.js'\nimport {\n updatePayloadInNextProject,\n updatePayloadInTanStackProject,\n} from './lib/update-payload-in-project.js'\nimport { debug, error, info } from './utils/log.js'\nimport {\n feedbackOutro,\n helpMessage,\n moveMessage,\n successfulNextInit,\n successfulTanStackInit,\n successMessage,\n} from './utils/messages.js'\nimport {\n DEFAULT_PAYLOAD_VERSION_TAG,\n resolvePackageVersion,\n} from './utils/resolvePackageVersion.js'\n\nexport class Main {\n args: CliArgs\n\n constructor() {\n // @ts-expect-error bad typings\n this.args = arg(\n {\n '--branch': String,\n '--db': String,\n '--db-accept-recommended': Boolean,\n '--db-connection-string': String,\n '--example': String,\n '--help': Boolean,\n '--local-template': String,\n '--name': String,\n '--payload-version': String, // Install a specific Payload version or npm dist-tag (e.g. 3.40.0 or canary; default: canary)\n '--secret': String,\n '--template': String,\n\n // Next.js\n '--init-next': Boolean, // TODO: Is this needed if we detect if inside Next.js project?\n\n // Agent\n '--no-agent': Boolean,\n\n // Package manager\n '--no-deps': Boolean,\n '--use-bun': Boolean,\n '--use-npm': Boolean,\n '--use-pnpm': Boolean,\n '--use-yarn': Boolean,\n\n // Other\n '--no-git': Boolean,\n\n // Flags\n '--beta': Boolean,\n '--debug': Boolean,\n '--dry-run': Boolean,\n\n // Aliases\n '-d': '--db',\n '-e': '--example',\n '-h': '--help',\n '-n': '--name',\n '-t': '--template',\n },\n { permissive: true },\n )\n }\n\n async init(): Promise<void> {\n try {\n const debugFlag = this.args['--debug']\n\n // Set DEBUG env var for logger utility\n if (debugFlag) {\n process.env.DEBUG = 'true'\n }\n\n const LATEST_VERSION = await resolvePackageVersion({\n debug: debugFlag,\n packageName: 'payload',\n versionOrTag: this.args['--payload-version'] ?? DEFAULT_PAYLOAD_VERSION_TAG,\n })\n\n if (this.args['--help']) {\n helpMessage()\n process.exit(0)\n }\n\n // eslint-disable-next-line no-console\n console.log('\\n')\n p.intro(chalk.bgCyan(chalk.black(' create-payload-app ')))\n p.note(\"Welcome to Payload. Let's create a project!\")\n\n const tanStackDetection = await getTanStackAppDetails({ projectDir: process.cwd() })\n const nextAppDetails = await getNextAppDetails(process.cwd())\n const appFramework = resolveAppFramework({ nextAppDetails, tanStackDetection })\n\n if (appFramework.kind === 'ambiguous') {\n p.log.warn(\n 'Both Next.js and TanStack project markers were detected. Remove one framework before installing Payload.',\n )\n p.outro(feedbackOutro())\n return\n }\n\n if (appFramework.kind === 'unsupported-tanstack') {\n p.log.warn(appFramework.reason)\n p.outro(feedbackOutro())\n return\n }\n\n if (appFramework.kind === 'next' && !appFramework.appDetails.isSupportedNextVersion) {\n p.log.warn(\n `Next.js v${appFramework.appDetails.nextVersion} is unsupported. Next.js >= ${minimumNextVersion.major}.${minimumNextVersion.minor} is required to use Payload.`,\n )\n p.outro(feedbackOutro())\n process.exit(0)\n }\n\n const hasPayload = appFramework.kind !== 'none' && appFramework.appDetails.isPayloadInstalled\n\n if (hasPayload) {\n p.log.warn(`Payload installation detected in current project.`)\n const shouldUpdate = await p.confirm({\n initialValue: false,\n message: chalk.bold(`Upgrade Payload in this project?`),\n })\n\n if (!p.isCancel(shouldUpdate) && shouldUpdate) {\n const versionOrTag = this.args['--payload-version'] ?? DEFAULT_PAYLOAD_VERSION_TAG\n const updateResult =\n appFramework.kind === 'next'\n ? await updatePayloadInNextProject({\n appDetails: appFramework.appDetails,\n versionOrTag,\n })\n : await updatePayloadInTanStackProject({\n appDetails: appFramework.appDetails,\n versionOrTag,\n })\n\n const { message, success: updateSuccess } = updateResult\n if (updateSuccess) {\n info(message)\n } else {\n error(message)\n }\n }\n\n p.outro(feedbackOutro())\n return\n }\n\n if (appFramework.kind === 'next') {\n this.args['--name'] = slugify(\n path.basename(path.dirname(appFramework.appDetails.nextConfigPath!)),\n )\n } else if (appFramework.kind === 'tanstack') {\n this.args['--name'] = slugify(path.basename(appFramework.appDetails.projectDir))\n }\n\n const projectName = await parseProjectName(this.args)\n let projectDir: string\n if (appFramework.kind === 'next') {\n projectDir = path.dirname(appFramework.appDetails.nextConfigPath!)\n } else if (appFramework.kind === 'tanstack') {\n projectDir = appFramework.appDetails.projectDir\n } else {\n projectDir = path.resolve(process.cwd(), slugify(projectName))\n }\n\n const packageManager = await getPackageManager({ cliArgs: this.args, projectDir })\n\n if (appFramework.kind === 'next') {\n const { hasTopLevelLayout, nextAppDir } = appFramework.appDetails\n\n p.log.step(\n chalk.bold(`${chalk.bgBlack(` ${figures.triangleUp} Next.js `)} project detected!`),\n )\n\n const proceed = await p.confirm({\n initialValue: true,\n message: chalk.bold(`Install ${chalk.green('Payload')} in this project?`),\n })\n if (p.isCancel(proceed) || !proceed) {\n p.outro(feedbackOutro())\n process.exit(0)\n }\n\n // Check for top-level layout.tsx\n if (nextAppDir && hasTopLevelLayout) {\n p.log.warn(moveMessage({ nextAppDir, projectDir }))\n p.outro(feedbackOutro())\n process.exit(0)\n }\n\n const dbDetails = await selectDb(this.args, projectName)\n\n const result = await initNext({\n ...this.args,\n dbType: dbDetails.type,\n nextAppDetails: appFramework.appDetails,\n packageManager,\n projectDir,\n })\n\n if (result.success === false) {\n p.outro(feedbackOutro())\n process.exit(1)\n }\n\n await configurePayloadConfig({\n dbType: dbDetails?.type,\n projectDirOrConfigPath: {\n payloadConfigPath: result.payloadConfigPath,\n },\n })\n\n await manageEnvFiles({\n cliArgs: this.args,\n databaseType: dbDetails.type,\n databaseUri: dbDetails.dbUri,\n payloadSecret: generateSecret(),\n projectDir,\n })\n\n info('Payload project successfully initialized!')\n p.note(successfulNextInit(), chalk.bgGreen(chalk.black(' Documentation ')))\n p.outro(feedbackOutro())\n return\n }\n\n if (appFramework.kind === 'tanstack') {\n const frameworkName =\n appFramework.appDetails.kind === 'start' ? 'TanStack Start' : 'TanStack Router'\n p.log.step(chalk.bold(`${chalk.bgBlack(` ${frameworkName} `)} project detected!`))\n\n const proceed = await p.confirm({\n initialValue: true,\n message: chalk.bold(\n appFramework.appDetails.kind === 'start'\n ? 'Install Payload in this TanStack Start project?'\n : 'Convert this project to TanStack Start and install Payload?',\n ),\n })\n if (p.isCancel(proceed) || !proceed) {\n p.outro(feedbackOutro())\n process.exit(0)\n }\n\n const dbDetails = await selectDb(this.args, projectName)\n const result = await initTanStack({\n ...this.args,\n appDetails: appFramework.appDetails,\n dbType: dbDetails.type,\n packageManager,\n projectDir,\n })\n\n if (result.success === false) {\n p.log.error(result.reason)\n p.outro(feedbackOutro())\n process.exit(1)\n }\n\n await configurePayloadConfig({\n dbType: dbDetails.type,\n projectDirOrConfigPath: {\n payloadConfigPath: result.payloadConfigPath,\n },\n })\n\n await manageEnvFiles({\n cliArgs: this.args,\n databaseType: dbDetails.type,\n databaseUri: dbDetails.dbUri,\n payloadSecret: generateSecret(),\n projectDir,\n })\n\n info('Payload project successfully initialized!')\n p.note(successfulTanStackInit(), chalk.bgGreen(chalk.black(' TanStack Start initialized ')))\n p.outro(feedbackOutro())\n return\n }\n\n const templateArg = this.args['--template']\n if (templateArg) {\n const valid = validateTemplate({ templateName: templateArg })\n if (!valid) {\n helpMessage()\n process.exit(1)\n }\n }\n\n const exampleArg = this.args['--example']\n\n if (exampleArg) {\n const example = await parseExample({\n name: exampleArg,\n branch: this.args['--branch'] ?? 'main',\n })\n\n if (!example) {\n helpMessage()\n process.exit(1)\n }\n\n await createProject({\n cliArgs: this.args,\n example,\n packageManager,\n projectDir,\n projectName,\n })\n }\n\n if (debugFlag) {\n debug(`Using ${exampleArg ? 'examples' : 'templates'} from git tag: v${LATEST_VERSION}`)\n }\n\n if (!exampleArg) {\n const validTemplates = getValidTemplates()\n const template = await parseTemplate(this.args, validTemplates)\n if (!template) {\n p.log.error('Invalid template given')\n p.outro(feedbackOutro())\n process.exit(1)\n }\n\n switch (template.type) {\n case 'plugin': {\n await createProject({\n cliArgs: this.args,\n packageManager,\n projectDir,\n projectName,\n template,\n })\n break\n }\n case 'starter': {\n const dbDetails = await selectDb(this.args, projectName, template)\n await createProject({\n cliArgs: this.args,\n dbDetails,\n packageManager,\n projectDir,\n projectName,\n template,\n })\n\n break\n }\n }\n }\n\n info('Payload project successfully created!')\n p.log.step(chalk.bgGreen(chalk.black(' Next Steps ')))\n p.log.message(successMessage(projectDir, packageManager))\n p.outro(feedbackOutro())\n } catch (err: unknown) {\n error(err instanceof Error ? err.message : 'An error occurred')\n }\n }\n}\n\ntype AppFramework =\n | { appDetails: NextAppDetails; kind: 'next' }\n | { appDetails: TanStackAppDetails; kind: 'tanstack' }\n | { kind: 'ambiguous' }\n | { kind: 'none' }\n | { kind: 'unsupported-tanstack'; reason: string }\n\nexport function resolveAppFramework({\n nextAppDetails,\n tanStackDetection,\n}: {\n nextAppDetails: NextAppDetails\n tanStackDetection: TanStackDetectionResult\n}): AppFramework {\n if (nextAppDetails.nextConfigPath && tanStackDetection.detected) {\n return { kind: 'ambiguous' }\n }\n\n if (nextAppDetails.nextConfigPath) {\n return { appDetails: nextAppDetails, kind: 'next' }\n }\n\n if (!tanStackDetection.detected) {\n return { kind: 'none' }\n }\n\n if (!tanStackDetection.compatible) {\n return { kind: 'unsupported-tanstack', reason: tanStackDetection.reason }\n }\n\n return { appDetails: tanStackDetection.details, kind: 'tanstack' }\n}\n"],"names":["p","slugify","arg","chalk","figures","path","configurePayloadConfig","createProject","parseExample","generateSecret","getPackageManager","getNextAppDetails","initNext","minimumNextVersion","initTanStack","manageEnvFiles","parseProjectName","parseTemplate","selectDb","getTanStackAppDetails","getValidTemplates","validateTemplate","updatePayloadInNextProject","updatePayloadInTanStackProject","debug","error","info","feedbackOutro","helpMessage","moveMessage","successfulNextInit","successfulTanStackInit","successMessage","DEFAULT_PAYLOAD_VERSION_TAG","resolvePackageVersion","Main","args","String","Boolean","permissive","init","debugFlag","process","env","DEBUG","LATEST_VERSION","packageName","versionOrTag","exit","console","log","intro","bgCyan","black","note","tanStackDetection","projectDir","cwd","nextAppDetails","appFramework","resolveAppFramework","kind","warn","outro","reason","appDetails","isSupportedNextVersion","nextVersion","major","minor","hasPayload","isPayloadInstalled","shouldUpdate","confirm","initialValue","message","bold","isCancel","updateResult","success","updateSuccess","basename","dirname","nextConfigPath","projectName","resolve","packageManager","cliArgs","hasTopLevelLayout","nextAppDir","step","bgBlack","triangleUp","proceed","green","dbDetails","result","dbType","type","projectDirOrConfigPath","payloadConfigPath","databaseType","databaseUri","dbUri","payloadSecret","bgGreen","frameworkName","templateArg","valid","templateName","exampleArg","example","name","branch","validTemplates","template","err","Error","detected","compatible","details"],"mappings":"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"}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
/* THIS FILE WAS GENERATED AUTOMATICALLY BY PAYLOAD. */
|
|
2
|
-
/* DO NOT MODIFY IT BECAUSE IT COULD BE REWRITTEN AT ANY TIME. */
|
|
1
|
+
/* THIS FILE WAS GENERATED AUTOMATICALLY BY PAYLOAD. MODIFY AT YOUR OWN RISK. */
|
|
3
2
|
import type { Metadata } from 'next'
|
|
4
3
|
|
|
5
4
|
import config from '@payload-config'
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
/* THIS FILE WAS GENERATED AUTOMATICALLY BY PAYLOAD. */
|
|
2
|
-
/* DO NOT MODIFY IT BECAUSE IT COULD BE REWRITTEN AT ANY TIME. */
|
|
1
|
+
/* THIS FILE WAS GENERATED AUTOMATICALLY BY PAYLOAD. MODIFY AT YOUR OWN RISK. */
|
|
3
2
|
import type { Metadata } from 'next'
|
|
4
3
|
|
|
5
4
|
import config from '@payload-config'
|
|
@@ -4,7 +4,13 @@ import { HierarchyButton as HierarchyButton_ab83ff7e88da8d3530831f296ec4756a } f
|
|
|
4
4
|
import { FolderIcon as FolderIcon_3817bf644402e67bfe6577f60ef982de } from '@payloadcms/ui'
|
|
5
5
|
import { HierarchySidebarTabServer as HierarchySidebarTabServer_ab83ff7e88da8d3530831f296ec4756a } from '@payloadcms/ui/rsc'
|
|
6
6
|
import { TagIcon as TagIcon_3817bf644402e67bfe6577f60ef982de } from '@payloadcms/ui'
|
|
7
|
+
import { WelcomeWidget as WelcomeWidget_ab83ff7e88da8d3530831f296ec4756a } from '@payloadcms/ui/rsc'
|
|
7
8
|
import { CollectionCards as CollectionCards_ab83ff7e88da8d3530831f296ec4756a } from '@payloadcms/ui/rsc'
|
|
9
|
+
import { CollectionQueryWidget as CollectionQueryWidget_ab83ff7e88da8d3530831f296ec4756a } from '@payloadcms/ui/rsc'
|
|
10
|
+
import { QueryPresetsWhereField as QueryPresetsWhereField_3817bf644402e67bfe6577f60ef982de } from '@payloadcms/ui'
|
|
11
|
+
import { CollectionQuerySortField as CollectionQuerySortField_3817bf644402e67bfe6577f60ef982de } from '@payloadcms/ui'
|
|
12
|
+
import { RecentlyViewedWidget as RecentlyViewedWidget_ab83ff7e88da8d3530831f296ec4756a } from '@payloadcms/ui/rsc'
|
|
13
|
+
import { RecentlyViewedCollectionsField as RecentlyViewedCollectionsField_3817bf644402e67bfe6577f60ef982de } from '@payloadcms/ui'
|
|
8
14
|
|
|
9
15
|
/** @type import('payload').ImportMap */
|
|
10
16
|
export const importMap = {
|
|
@@ -15,5 +21,14 @@ export const importMap = {
|
|
|
15
21
|
'@payloadcms/ui/rsc#HierarchySidebarTabServer':
|
|
16
22
|
HierarchySidebarTabServer_ab83ff7e88da8d3530831f296ec4756a,
|
|
17
23
|
'@payloadcms/ui#TagIcon': TagIcon_3817bf644402e67bfe6577f60ef982de,
|
|
24
|
+
'@payloadcms/ui/rsc#WelcomeWidget': WelcomeWidget_ab83ff7e88da8d3530831f296ec4756a,
|
|
18
25
|
'@payloadcms/ui/rsc#CollectionCards': CollectionCards_ab83ff7e88da8d3530831f296ec4756a,
|
|
26
|
+
'@payloadcms/ui/rsc#CollectionQueryWidget':
|
|
27
|
+
CollectionQueryWidget_ab83ff7e88da8d3530831f296ec4756a,
|
|
28
|
+
'@payloadcms/ui#QueryPresetsWhereField': QueryPresetsWhereField_3817bf644402e67bfe6577f60ef982de,
|
|
29
|
+
'@payloadcms/ui#CollectionQuerySortField':
|
|
30
|
+
CollectionQuerySortField_3817bf644402e67bfe6577f60ef982de,
|
|
31
|
+
'@payloadcms/ui/rsc#RecentlyViewedWidget': RecentlyViewedWidget_ab83ff7e88da8d3530831f296ec4756a,
|
|
32
|
+
'@payloadcms/ui#RecentlyViewedCollectionsField':
|
|
33
|
+
RecentlyViewedCollectionsField_3817bf644402e67bfe6577f60ef982de,
|
|
19
34
|
}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
/* THIS FILE WAS GENERATED AUTOMATICALLY BY PAYLOAD. */
|
|
2
|
-
/* DO NOT MODIFY IT BECAUSE IT COULD BE REWRITTEN AT ANY TIME. */
|
|
1
|
+
/* THIS FILE WAS GENERATED AUTOMATICALLY BY PAYLOAD. MODIFY AT YOUR OWN RISK. */
|
|
3
2
|
import config from '@payload-config'
|
|
4
3
|
import '@payloadcms/next/css'
|
|
5
4
|
import {
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
/* THIS FILE WAS GENERATED AUTOMATICALLY BY PAYLOAD. */
|
|
2
|
-
/* DO NOT MODIFY IT BECAUSE IT COULD BE REWRITTEN AT ANY TIME. */
|
|
1
|
+
/* THIS FILE WAS GENERATED AUTOMATICALLY BY PAYLOAD. MODIFY AT YOUR OWN RISK. */
|
|
3
2
|
import config from '@payload-config'
|
|
4
3
|
import { GRAPHQL_POST, REST_OPTIONS } from '@payloadcms/next/routes'
|
|
5
4
|
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
/* THIS FILE WAS GENERATED AUTOMATICALLY BY PAYLOAD. */
|
|
2
|
-
/* DO NOT MODIFY IT BECAUSE IT COULD BE REWRITTEN AT ANY TIME. */
|
|
1
|
+
/* THIS FILE WAS GENERATED AUTOMATICALLY BY PAYLOAD. MODIFY AT YOUR OWN RISK. */
|
|
3
2
|
import config from '@payload-config'
|
|
4
3
|
import '@payloadcms/next/css'
|
|
5
4
|
import { GRAPHQL_PLAYGROUND_GET } from '@payloadcms/next/routes'
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
/* THIS FILE WAS GENERATED AUTOMATICALLY BY PAYLOAD. */
|
|
2
|
-
/* DO NOT MODIFY IT BECAUSE IT COULD BE REWRITTEN AT ANY TIME. */
|
|
1
|
+
/* THIS FILE WAS GENERATED AUTOMATICALLY BY PAYLOAD. MODIFY AT YOUR OWN RISK. */
|
|
3
2
|
import config from '@payload-config'
|
|
4
3
|
import '@payloadcms/next/css'
|
|
5
4
|
import type { ServerFunctionClient } from 'payload'
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { mongooseAdapter } from '@payloadcms/db-mongodb'
|
|
2
2
|
import { mcpPlugin } from '@payloadcms/plugin-mcp'
|
|
3
3
|
import { lexicalEditor } from '@payloadcms/richtext-lexical'
|
|
4
|
+
import { sharpTransformer } from '@payloadcms/transformer-sharp'
|
|
4
5
|
import path from 'path'
|
|
5
6
|
import { buildConfig } from 'payload'
|
|
6
7
|
import { fileURLToPath } from 'url'
|
|
7
|
-
import sharp from 'sharp'
|
|
8
8
|
|
|
9
9
|
import { Users } from './collections/Users'
|
|
10
10
|
import { Media } from './collections/Media'
|
|
@@ -30,11 +30,13 @@ export default buildConfig({
|
|
|
30
30
|
db: mongooseAdapter({
|
|
31
31
|
url: process.env.DATABASE_URL || '',
|
|
32
32
|
}),
|
|
33
|
-
sharp,
|
|
34
33
|
localization: {
|
|
35
34
|
locales: ['en'],
|
|
36
35
|
fallback: true,
|
|
37
36
|
defaultLocale: 'en',
|
|
38
37
|
},
|
|
39
38
|
plugins: [mcpPlugin({})],
|
|
39
|
+
upload: {
|
|
40
|
+
transformers: [sharpTransformer()],
|
|
41
|
+
},
|
|
40
42
|
})
|
|
@@ -4,7 +4,6 @@ import { lexicalEditor } from '@payloadcms/richtext-lexical'
|
|
|
4
4
|
import path from 'path'
|
|
5
5
|
import { buildConfig } from 'payload'
|
|
6
6
|
import { fileURLToPath } from 'url'
|
|
7
|
-
import sharp from 'sharp'
|
|
8
7
|
|
|
9
8
|
import { Users } from './collections/Users'
|
|
10
9
|
import { Media } from './collections/Media'
|
|
@@ -30,7 +29,6 @@ export default buildConfig({
|
|
|
30
29
|
db: mongooseAdapter({
|
|
31
30
|
url: process.env.DATABASE_URL || '',
|
|
32
31
|
}),
|
|
33
|
-
sharp,
|
|
34
32
|
localization: {
|
|
35
33
|
locales: ['en'],
|
|
36
34
|
fallback: true,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "create-payload-app",
|
|
3
|
-
"version": "4.0.0-canary.
|
|
3
|
+
"version": "4.0.0-canary.38",
|
|
4
4
|
"homepage": "https://payloadcms.com",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -62,7 +62,7 @@
|
|
|
62
62
|
"prettier": "^3.5.0",
|
|
63
63
|
"tar": "^7.5.22",
|
|
64
64
|
"terminal-link": "^2.1.1",
|
|
65
|
-
"ts-morph": "^
|
|
65
|
+
"ts-morph": "^28.0.0"
|
|
66
66
|
},
|
|
67
67
|
"devDependencies": {
|
|
68
68
|
"@types/esprima": "^4.0.6",
|