create-payload-app 4.0.0-internal.8001944 → 4.0.0-internal.8089ef7
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/lib/tanstack/template-files.d.ts +4 -4
- package/dist/lib/tanstack/template-files.d.ts.map +1 -1
- package/dist/lib/tanstack/template-files.js +5 -5
- package/dist/lib/tanstack/template-files.js.map +1 -1
- package/dist/lib/update-payload-in-project.js +3 -3
- package/dist/lib/update-payload-in-project.js.map +1 -1
- package/dist/main.js +2 -2
- package/dist/main.js.map +1 -1
- package/dist/template/src/payload.config.ts +5 -3
- package/dist/template-tanstack/routes/_payload/admin.$.tsx +19 -3
- package/dist/template-tanstack/routes/_payload/admin.index.tsx +19 -3
- package/dist/template-tanstack/routes/_payload/custom.css +0 -0
- package/dist/template-tanstack/routes/_payload.tsx +0 -2
- package/dist/template-tanstack/src/payload.config.ts +1 -3
- package/dist/utils/messages.d.ts.map +1 -1
- package/dist/utils/messages.js +2 -1
- package/dist/utils/messages.js.map +1 -1
- package/dist/utils/resolvePackageVersion.d.ts +10 -4
- package/dist/utils/resolvePackageVersion.d.ts.map +1 -1
- package/dist/utils/resolvePackageVersion.js +24 -3
- package/dist/utils/resolvePackageVersion.js.map +1 -1
- package/package.json +1 -1
- package/dist/template-tanstack/src/payload.css +0 -1
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":"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"}
|
|
@@ -14,6 +14,10 @@ export declare const TANSTACK_TEMPLATE_FILES: readonly [{
|
|
|
14
14
|
readonly destination: 'routes';
|
|
15
15
|
readonly relativePath: '_payload/api.$.ts';
|
|
16
16
|
readonly sourcePath: 'app/_payload/api.$.ts';
|
|
17
|
+
}, {
|
|
18
|
+
readonly destination: 'routes';
|
|
19
|
+
readonly relativePath: '_payload/custom.css';
|
|
20
|
+
readonly sourcePath: 'app/_payload/custom.css';
|
|
17
21
|
}, {
|
|
18
22
|
readonly destination: 'routes';
|
|
19
23
|
readonly relativePath: '_payload/importMap.js';
|
|
@@ -38,10 +42,6 @@ export declare const TANSTACK_TEMPLATE_FILES: readonly [{
|
|
|
38
42
|
readonly destination: 'src';
|
|
39
43
|
readonly relativePath: 'collections/Users.ts';
|
|
40
44
|
readonly sourcePath: 'collections/Users.ts';
|
|
41
|
-
}, {
|
|
42
|
-
readonly destination: 'src';
|
|
43
|
-
readonly relativePath: 'payload.css';
|
|
44
|
-
readonly sourcePath: 'payload.css';
|
|
45
45
|
}, {
|
|
46
46
|
readonly destination: 'src';
|
|
47
47
|
readonly relativePath: 'payload.config.ts';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"template-files.d.ts","sourceRoot":"","sources":["../../../src/lib/tanstack/template-files.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,uBAAuB;aAEhC,WAAW,EAAE,QAAQ;aACrB,YAAY,EAAE,cAAc;aAC5B,UAAU,EAAE,kBAAkB;;aAG9B,WAAW,EAAE,QAAQ;aACrB,YAAY,EAAE,sBAAsB;aACpC,UAAU,EAAE,0BAA0B;;aAGtC,WAAW,EAAE,QAAQ;aACrB,YAAY,EAAE,0BAA0B;aACxC,UAAU,EAAE,8BAA8B;;aAG1C,WAAW,EAAE,QAAQ;aACrB,YAAY,EAAE,mBAAmB;aACjC,UAAU,EAAE,uBAAuB;;aAGnC,WAAW,EAAE,QAAQ;aACrB,YAAY,EAAE,uBAAuB;aACrC,UAAU,EAAE,2BAA2B;;aAGvC,WAAW,EAAE,QAAQ;aACrB,YAAY,EAAE,8BAA8B;aAC5C,UAAU,EAAE,kCAAkC;;aAG9C,WAAW,EAAE,KAAK;aAClB,YAAY,EAAE,wBAAwB;aACtC,UAAU,EAAE,wBAAwB;;aAGpC,WAAW,EAAE,KAAK;aAClB,YAAY,EAAE,sBAAsB;aACpC,UAAU,EAAE,sBAAsB;;aAGlC,WAAW,EAAE,KAAK;aAClB,YAAY,EAAE,qBAAqB;aACnC,UAAU,EAAE,qBAAqB;;aAGjC,WAAW,EAAE,KAAK;aAClB,YAAY,EAAE,sBAAsB;aACpC,UAAU,EAAE,sBAAsB;;aAGlC,WAAW,EAAE,KAAK;aAClB,YAAY,EAAE,
|
|
1
|
+
{"version":3,"file":"template-files.d.ts","sourceRoot":"","sources":["../../../src/lib/tanstack/template-files.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,uBAAuB;aAEhC,WAAW,EAAE,QAAQ;aACrB,YAAY,EAAE,cAAc;aAC5B,UAAU,EAAE,kBAAkB;;aAG9B,WAAW,EAAE,QAAQ;aACrB,YAAY,EAAE,sBAAsB;aACpC,UAAU,EAAE,0BAA0B;;aAGtC,WAAW,EAAE,QAAQ;aACrB,YAAY,EAAE,0BAA0B;aACxC,UAAU,EAAE,8BAA8B;;aAG1C,WAAW,EAAE,QAAQ;aACrB,YAAY,EAAE,mBAAmB;aACjC,UAAU,EAAE,uBAAuB;;aAGnC,WAAW,EAAE,QAAQ;aACrB,YAAY,EAAE,qBAAqB;aACnC,UAAU,EAAE,yBAAyB;;aAGrC,WAAW,EAAE,QAAQ;aACrB,YAAY,EAAE,uBAAuB;aACrC,UAAU,EAAE,2BAA2B;;aAGvC,WAAW,EAAE,QAAQ;aACrB,YAAY,EAAE,8BAA8B;aAC5C,UAAU,EAAE,kCAAkC;;aAG9C,WAAW,EAAE,KAAK;aAClB,YAAY,EAAE,wBAAwB;aACtC,UAAU,EAAE,wBAAwB;;aAGpC,WAAW,EAAE,KAAK;aAClB,YAAY,EAAE,sBAAsB;aACpC,UAAU,EAAE,sBAAsB;;aAGlC,WAAW,EAAE,KAAK;aAClB,YAAY,EAAE,qBAAqB;aACnC,UAAU,EAAE,qBAAqB;;aAGjC,WAAW,EAAE,KAAK;aAClB,YAAY,EAAE,sBAAsB;aACpC,UAAU,EAAE,sBAAsB;;aAGlC,WAAW,EAAE,KAAK;aAClB,YAAY,EAAE,mBAAmB;aACjC,UAAU,EAAE,mBAAmB;EAEzB,CAAA"}
|
|
@@ -19,6 +19,11 @@ export const TANSTACK_TEMPLATE_FILES = [
|
|
|
19
19
|
relativePath: '_payload/api.$.ts',
|
|
20
20
|
sourcePath: 'app/_payload/api.$.ts'
|
|
21
21
|
},
|
|
22
|
+
{
|
|
23
|
+
destination: 'routes',
|
|
24
|
+
relativePath: '_payload/custom.css',
|
|
25
|
+
sourcePath: 'app/_payload/custom.css'
|
|
26
|
+
},
|
|
22
27
|
{
|
|
23
28
|
destination: 'routes',
|
|
24
29
|
relativePath: '_payload/importMap.js',
|
|
@@ -49,11 +54,6 @@ export const TANSTACK_TEMPLATE_FILES = [
|
|
|
49
54
|
relativePath: 'collections/Users.ts',
|
|
50
55
|
sourcePath: 'collections/Users.ts'
|
|
51
56
|
},
|
|
52
|
-
{
|
|
53
|
-
destination: 'src',
|
|
54
|
-
relativePath: 'payload.css',
|
|
55
|
-
sourcePath: 'payload.css'
|
|
56
|
-
},
|
|
57
57
|
{
|
|
58
58
|
destination: 'src',
|
|
59
59
|
relativePath: 'payload.config.ts',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/lib/tanstack/template-files.ts"],"sourcesContent":["export const TANSTACK_TEMPLATE_FILES = [\n {\n destination: 'routes',\n relativePath: '_payload.tsx',\n sourcePath: 'app/_payload.tsx',\n },\n {\n destination: 'routes',\n relativePath: '_payload/admin.$.tsx',\n sourcePath: 'app/_payload/admin.$.tsx',\n },\n {\n destination: 'routes',\n relativePath: '_payload/admin.index.tsx',\n sourcePath: 'app/_payload/admin.index.tsx',\n },\n {\n destination: 'routes',\n relativePath: '_payload/api.$.ts',\n sourcePath: 'app/_payload/api.$.ts',\n },\n {\n destination: 'routes',\n relativePath: '_payload/
|
|
1
|
+
{"version":3,"sources":["../../../src/lib/tanstack/template-files.ts"],"sourcesContent":["export const TANSTACK_TEMPLATE_FILES = [\n {\n destination: 'routes',\n relativePath: '_payload.tsx',\n sourcePath: 'app/_payload.tsx',\n },\n {\n destination: 'routes',\n relativePath: '_payload/admin.$.tsx',\n sourcePath: 'app/_payload/admin.$.tsx',\n },\n {\n destination: 'routes',\n relativePath: '_payload/admin.index.tsx',\n sourcePath: 'app/_payload/admin.index.tsx',\n },\n {\n destination: 'routes',\n relativePath: '_payload/api.$.ts',\n sourcePath: 'app/_payload/api.$.ts',\n },\n {\n destination: 'routes',\n relativePath: '_payload/custom.css',\n sourcePath: 'app/_payload/custom.css',\n },\n {\n destination: 'routes',\n relativePath: '_payload/importMap.js',\n sourcePath: 'app/_payload/importMap.js',\n },\n {\n destination: 'routes',\n relativePath: '_payload/server.functions.ts',\n sourcePath: 'app/_payload/server.functions.ts',\n },\n {\n destination: 'src',\n relativePath: 'collections/Folders.ts',\n sourcePath: 'collections/Folders.ts',\n },\n {\n destination: 'src',\n relativePath: 'collections/Media.ts',\n sourcePath: 'collections/Media.ts',\n },\n {\n destination: 'src',\n relativePath: 'collections/Tags.ts',\n sourcePath: 'collections/Tags.ts',\n },\n {\n destination: 'src',\n relativePath: 'collections/Users.ts',\n sourcePath: 'collections/Users.ts',\n },\n {\n destination: 'src',\n relativePath: 'payload.config.ts',\n sourcePath: 'payload.config.ts',\n },\n] as const\n"],"names":["TANSTACK_TEMPLATE_FILES","destination","relativePath","sourcePath"],"mappings":"AAAA,OAAO,MAAMA,0BAA0B;IACrC;QACEC,aAAa;QACbC,cAAc;QACdC,YAAY;IACd;IACA;QACEF,aAAa;QACbC,cAAc;QACdC,YAAY;IACd;IACA;QACEF,aAAa;QACbC,cAAc;QACdC,YAAY;IACd;IACA;QACEF,aAAa;QACbC,cAAc;QACdC,YAAY;IACd;IACA;QACEF,aAAa;QACbC,cAAc;QACdC,YAAY;IACd;IACA;QACEF,aAAa;QACbC,cAAc;QACdC,YAAY;IACd;IACA;QACEF,aAAa;QACbC,cAAc;QACdC,YAAY;IACd;IACA;QACEF,aAAa;QACbC,cAAc;QACdC,YAAY;IACd;IACA;QACEF,aAAa;QACbC,cAAc;QACdC,YAAY;IACd;IACA;QACEF,aAAa;QACbC,cAAc;QACdC,YAAY;IACd;IACA;QACEF,aAAa;QACbC,cAAc;QACdC,YAAY;IACd;IACA;QACEF,aAAa;QACbC,cAAc;QACdC,YAAY;IACd;CACD,CAAS"}
|
|
@@ -70,12 +70,12 @@ export async function updatePayloadInTanStackProject({ appDetails, templateRoot
|
|
|
70
70
|
const hasPackedTemplateLayout = fse.existsSync(path.join(templateRoot, 'routes'));
|
|
71
71
|
for (const { destination, relativePath, sourcePath } of TANSTACK_TEMPLATE_FILES){
|
|
72
72
|
const isPayloadRoute = destination === 'routes' && relativePath.startsWith('_payload');
|
|
73
|
-
const
|
|
74
|
-
if (!isPayloadRoute
|
|
73
|
+
const isCustomStyles = destination === 'routes' && relativePath === '_payload/custom.css';
|
|
74
|
+
if (!isPayloadRoute) {
|
|
75
75
|
continue;
|
|
76
76
|
}
|
|
77
77
|
const destinationPath = path.join(destination === 'routes' ? appDetails.routesDir : appDetails.sourceDir, relativePath);
|
|
78
|
-
if (
|
|
78
|
+
if (isCustomStyles && fse.existsSync(destinationPath)) {
|
|
79
79
|
continue;
|
|
80
80
|
}
|
|
81
81
|
const templatePath = hasPackedTemplateLayout ? path.join(templateRoot, destination, relativePath) : path.join(templateRoot, sourcePath);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/lib/update-payload-in-project.ts"],"sourcesContent":["import fse from 'fs-extra'\nimport { fileURLToPath } from 'node:url'\nimport path from 'path'\n\nimport type { NextAppDetails, TanStackAppDetails } from '../types.js'\n\nimport { copyRecursiveSync } from '../utils/copy-recursive-sync.js'\nimport { info } from '../utils/log.js'\nimport { resolvePackageVersion } from '../utils/resolvePackageVersion.js'\nimport { getPackageManager } from './get-package-manager.js'\nimport { installPackages } from './install-packages.js'\nimport { TANSTACK_TEMPLATE_FILES } from './tanstack/template-files.js'\n\nconst filename = fileURLToPath(import.meta.url)\nconst dirname = path.dirname(filename)\n\ntype UpdateResult = { message: string; success: boolean }\n\ntype PackageUpdateResult = { isUpdated: boolean } & UpdateResult\n\nexport async function updatePayloadPackages({\n projectDir,\n versionOrTag,\n}: {\n projectDir: string\n versionOrTag?: string\n}): Promise<UpdateResult> {\n const result = await performPayloadPackageUpdate({ projectDir, versionOrTag })\n\n return { message: result.message, success: result.success }\n}\n\nexport async function updatePayloadInNextProject({\n appDetails,\n versionOrTag,\n}: {\n appDetails: NextAppDetails\n versionOrTag?: string\n}): Promise<UpdateResult> {\n if (!appDetails.nextConfigPath) {\n return { message: 'No Next.js config found', success: false }\n }\n\n const projectDir = path.dirname(appDetails.nextConfigPath)\n const packageUpdate = await performPayloadPackageUpdate({ projectDir, versionOrTag })\n\n if (!packageUpdate.isUpdated) {\n return { message: packageUpdate.message, success: packageUpdate.success }\n }\n\n info(`Updating Payload Next.js files...`)\n\n const templateFilesPath =\n process.env.JEST_WORKER_ID !== undefined\n ? path.resolve(dirname, '../../../../templates/blank')\n : path.resolve(dirname, '../..', 'dist/template')\n\n const templateSrcDir = path.resolve(templateFilesPath, 'src/app/(payload)')\n const payloadDirPath = path.resolve(\n projectDir,\n appDetails.isSrcDir ? 'src/app' : 'app',\n '(payload)',\n )\n\n const legacyCustomStylesPath = path.resolve(payloadDirPath, 'custom.scss')\n const customCssPath = path.resolve(payloadDirPath, 'custom.css')\n\n if (fse.existsSync(legacyCustomStylesPath) && !fse.existsSync(customCssPath)) {\n fse.renameSync(legacyCustomStylesPath, customCssPath)\n info(\n 'Renamed `(payload)/custom.scss` to `custom.css`. If it contained Sass syntax (nesting, `$variables`, `@mixin`, etc.), convert it to plain CSS — it is no longer transpiled.',\n )\n }\n\n copyRecursiveSync(templateSrcDir, payloadDirPath, ['custom.css$'])\n\n return { message: packageUpdate.message, success: packageUpdate.success }\n}\n\nexport async function updatePayloadInTanStackProject({\n appDetails,\n templateRoot = resolveTanStackTemplateRoot(),\n versionOrTag,\n}: {\n appDetails: TanStackAppDetails\n templateRoot?: string\n versionOrTag?: string\n}): Promise<UpdateResult> {\n const packageUpdate = await performPayloadPackageUpdate({\n projectDir: appDetails.projectDir,\n versionOrTag,\n })\n\n if (!packageUpdate.isUpdated) {\n return { message: packageUpdate.message, success: packageUpdate.success }\n }\n\n info(`Updating Payload TanStack files...`)\n const hasPackedTemplateLayout = fse.existsSync(path.join(templateRoot, 'routes'))\n\n for (const { destination, relativePath, sourcePath } of TANSTACK_TEMPLATE_FILES) {\n const isPayloadRoute = destination === 'routes' && relativePath.startsWith('_payload')\n const isPayloadStyles = destination === 'src' && relativePath === 'payload.css'\n\n if (!isPayloadRoute && !isPayloadStyles) {\n continue\n }\n\n const destinationPath = path.join(\n destination === 'routes' ? appDetails.routesDir : appDetails.sourceDir,\n relativePath,\n )\n if (isPayloadStyles && fse.existsSync(destinationPath)) {\n continue\n }\n\n const templatePath = hasPackedTemplateLayout\n ? path.join(templateRoot, destination, relativePath)\n : path.join(templateRoot, sourcePath)\n fse.ensureDirSync(path.dirname(destinationPath))\n fse.copyFileSync(templatePath, destinationPath)\n }\n\n return { message: packageUpdate.message, success: packageUpdate.success }\n}\n\nexport async function updatePayloadInProject(\n appDetails: NextAppDetails,\n versionOrTag?: string,\n): Promise<UpdateResult> {\n return updatePayloadInNextProject({ appDetails, versionOrTag })\n}\n\nasync function performPayloadPackageUpdate({\n projectDir,\n versionOrTag,\n}: {\n projectDir: string\n versionOrTag?: string\n}): Promise<PackageUpdateResult> {\n const packageObj = (await fse.readJson(path.resolve(projectDir, 'package.json'))) as {\n dependencies?: Record<string, string>\n devDependencies?: Record<string, string>\n }\n if (!packageObj.dependencies && !packageObj.devDependencies) {\n throw new Error('No package.json found in this project')\n }\n\n const dependencyGroups = [packageObj.dependencies, packageObj.devDependencies].filter(\n (dependencies): dependencies is Record<string, string> => Boolean(dependencies),\n )\n const payloadPackageEntries = dependencyGroups.flatMap((dependencies) =>\n Object.entries(dependencies).filter(\n ([packageName]) => packageName === 'payload' || packageName.startsWith('@payloadcms/'),\n ),\n )\n const payloadVersion = payloadPackageEntries.find(\n ([packageName]) => packageName === 'payload',\n )?.[1]\n if (!payloadVersion) {\n throw new Error('Payload is not installed in this project')\n }\n\n const packageManager = await getPackageManager({ projectDir })\n const latestPayloadVersion = await resolvePackageVersion({ packageName: 'payload', versionOrTag })\n\n if (payloadPackageEntries.every(([, version]) => version === latestPayloadVersion)) {\n return {\n isUpdated: false,\n message: `Payload v${payloadVersion} is already up to date.`,\n success: true,\n }\n }\n\n const payloadPackages = payloadPackageEntries\n .map(([packageName]) => packageName)\n .filter((packageName) => packageName.startsWith('@payloadcms/'))\n const packageNames = ['payload', ...new Set(payloadPackages)]\n const packagesToUpdate = packageNames.map(\n (packageName) => `${packageName}@${latestPayloadVersion}`,\n )\n\n info(`Using ${packageManager}.\\n`)\n info(\n `Updating ${packagesToUpdate.length} Payload packages to v${latestPayloadVersion}...\\n\\n${packageNames.map((packageName) => ` - ${packageName}`).join('\\n')}`,\n )\n\n const { success: updateSuccess } = await installPackages({\n packageManager,\n packagesToInstall: packagesToUpdate,\n projectDir,\n })\n\n if (!updateSuccess) {\n throw new Error('Failed to update Payload packages')\n }\n info('Payload packages updated successfully.')\n\n return { isUpdated: true, message: 'Payload updated successfully.', success: true }\n}\n\nfunction resolveTanStackTemplateRoot(): 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":["fse","fileURLToPath","path","copyRecursiveSync","info","resolvePackageVersion","getPackageManager","installPackages","TANSTACK_TEMPLATE_FILES","filename","url","dirname","updatePayloadPackages","projectDir","versionOrTag","result","performPayloadPackageUpdate","message","success","updatePayloadInNextProject","appDetails","nextConfigPath","packageUpdate","isUpdated","templateFilesPath","process","env","JEST_WORKER_ID","undefined","resolve","templateSrcDir","payloadDirPath","isSrcDir","legacyCustomStylesPath","customCssPath","existsSync","renameSync","updatePayloadInTanStackProject","templateRoot","resolveTanStackTemplateRoot","hasPackedTemplateLayout","join","destination","relativePath","sourcePath","isPayloadRoute","startsWith","isPayloadStyles","destinationPath","routesDir","sourceDir","templatePath","ensureDirSync","copyFileSync","updatePayloadInProject","packageObj","readJson","dependencies","devDependencies","Error","dependencyGroups","filter","Boolean","payloadPackageEntries","flatMap","Object","entries","packageName","payloadVersion","find","packageManager","latestPayloadVersion","every","version","payloadPackages","map","packageNames","Set","packagesToUpdate","length","updateSuccess","packagesToInstall","basename"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../src/lib/update-payload-in-project.ts"],"sourcesContent":["import fse from 'fs-extra'\nimport { fileURLToPath } from 'node:url'\nimport path from 'path'\n\nimport type { NextAppDetails, TanStackAppDetails } from '../types.js'\n\nimport { copyRecursiveSync } from '../utils/copy-recursive-sync.js'\nimport { info } from '../utils/log.js'\nimport { resolvePackageVersion } from '../utils/resolvePackageVersion.js'\nimport { getPackageManager } from './get-package-manager.js'\nimport { installPackages } from './install-packages.js'\nimport { TANSTACK_TEMPLATE_FILES } from './tanstack/template-files.js'\n\nconst filename = fileURLToPath(import.meta.url)\nconst dirname = path.dirname(filename)\n\ntype UpdateResult = { message: string; success: boolean }\n\ntype PackageUpdateResult = { isUpdated: boolean } & UpdateResult\n\nexport async function updatePayloadPackages({\n projectDir,\n versionOrTag,\n}: {\n projectDir: string\n versionOrTag?: string\n}): Promise<UpdateResult> {\n const result = await performPayloadPackageUpdate({ projectDir, versionOrTag })\n\n return { message: result.message, success: result.success }\n}\n\nexport async function updatePayloadInNextProject({\n appDetails,\n versionOrTag,\n}: {\n appDetails: NextAppDetails\n versionOrTag?: string\n}): Promise<UpdateResult> {\n if (!appDetails.nextConfigPath) {\n return { message: 'No Next.js config found', success: false }\n }\n\n const projectDir = path.dirname(appDetails.nextConfigPath)\n const packageUpdate = await performPayloadPackageUpdate({ projectDir, versionOrTag })\n\n if (!packageUpdate.isUpdated) {\n return { message: packageUpdate.message, success: packageUpdate.success }\n }\n\n info(`Updating Payload Next.js files...`)\n\n const templateFilesPath =\n process.env.JEST_WORKER_ID !== undefined\n ? path.resolve(dirname, '../../../../templates/blank')\n : path.resolve(dirname, '../..', 'dist/template')\n\n const templateSrcDir = path.resolve(templateFilesPath, 'src/app/(payload)')\n const payloadDirPath = path.resolve(\n projectDir,\n appDetails.isSrcDir ? 'src/app' : 'app',\n '(payload)',\n )\n\n const legacyCustomStylesPath = path.resolve(payloadDirPath, 'custom.scss')\n const customCssPath = path.resolve(payloadDirPath, 'custom.css')\n\n if (fse.existsSync(legacyCustomStylesPath) && !fse.existsSync(customCssPath)) {\n fse.renameSync(legacyCustomStylesPath, customCssPath)\n info(\n 'Renamed `(payload)/custom.scss` to `custom.css`. If it contained Sass syntax (nesting, `$variables`, `@mixin`, etc.), convert it to plain CSS — it is no longer transpiled.',\n )\n }\n\n copyRecursiveSync(templateSrcDir, payloadDirPath, ['custom.css$'])\n\n return { message: packageUpdate.message, success: packageUpdate.success }\n}\n\nexport async function updatePayloadInTanStackProject({\n appDetails,\n templateRoot = resolveTanStackTemplateRoot(),\n versionOrTag,\n}: {\n appDetails: TanStackAppDetails\n templateRoot?: string\n versionOrTag?: string\n}): Promise<UpdateResult> {\n const packageUpdate = await performPayloadPackageUpdate({\n projectDir: appDetails.projectDir,\n versionOrTag,\n })\n\n if (!packageUpdate.isUpdated) {\n return { message: packageUpdate.message, success: packageUpdate.success }\n }\n\n info(`Updating Payload TanStack files...`)\n const hasPackedTemplateLayout = fse.existsSync(path.join(templateRoot, 'routes'))\n\n for (const { destination, relativePath, sourcePath } of TANSTACK_TEMPLATE_FILES) {\n const isPayloadRoute = destination === 'routes' && relativePath.startsWith('_payload')\n const isCustomStyles = destination === 'routes' && relativePath === '_payload/custom.css'\n\n if (!isPayloadRoute) {\n continue\n }\n\n const destinationPath = path.join(\n destination === 'routes' ? appDetails.routesDir : appDetails.sourceDir,\n relativePath,\n )\n if (isCustomStyles && fse.existsSync(destinationPath)) {\n continue\n }\n\n const templatePath = hasPackedTemplateLayout\n ? path.join(templateRoot, destination, relativePath)\n : path.join(templateRoot, sourcePath)\n fse.ensureDirSync(path.dirname(destinationPath))\n fse.copyFileSync(templatePath, destinationPath)\n }\n\n return { message: packageUpdate.message, success: packageUpdate.success }\n}\n\nexport async function updatePayloadInProject(\n appDetails: NextAppDetails,\n versionOrTag?: string,\n): Promise<UpdateResult> {\n return updatePayloadInNextProject({ appDetails, versionOrTag })\n}\n\nasync function performPayloadPackageUpdate({\n projectDir,\n versionOrTag,\n}: {\n projectDir: string\n versionOrTag?: string\n}): Promise<PackageUpdateResult> {\n const packageObj = (await fse.readJson(path.resolve(projectDir, 'package.json'))) as {\n dependencies?: Record<string, string>\n devDependencies?: Record<string, string>\n }\n if (!packageObj.dependencies && !packageObj.devDependencies) {\n throw new Error('No package.json found in this project')\n }\n\n const dependencyGroups = [packageObj.dependencies, packageObj.devDependencies].filter(\n (dependencies): dependencies is Record<string, string> => Boolean(dependencies),\n )\n const payloadPackageEntries = dependencyGroups.flatMap((dependencies) =>\n Object.entries(dependencies).filter(\n ([packageName]) => packageName === 'payload' || packageName.startsWith('@payloadcms/'),\n ),\n )\n const payloadVersion = payloadPackageEntries.find(\n ([packageName]) => packageName === 'payload',\n )?.[1]\n if (!payloadVersion) {\n throw new Error('Payload is not installed in this project')\n }\n\n const packageManager = await getPackageManager({ projectDir })\n const latestPayloadVersion = await resolvePackageVersion({ packageName: 'payload', versionOrTag })\n\n if (payloadPackageEntries.every(([, version]) => version === latestPayloadVersion)) {\n return {\n isUpdated: false,\n message: `Payload v${payloadVersion} is already up to date.`,\n success: true,\n }\n }\n\n const payloadPackages = payloadPackageEntries\n .map(([packageName]) => packageName)\n .filter((packageName) => packageName.startsWith('@payloadcms/'))\n const packageNames = ['payload', ...new Set(payloadPackages)]\n const packagesToUpdate = packageNames.map(\n (packageName) => `${packageName}@${latestPayloadVersion}`,\n )\n\n info(`Using ${packageManager}.\\n`)\n info(\n `Updating ${packagesToUpdate.length} Payload packages to v${latestPayloadVersion}...\\n\\n${packageNames.map((packageName) => ` - ${packageName}`).join('\\n')}`,\n )\n\n const { success: updateSuccess } = await installPackages({\n packageManager,\n packagesToInstall: packagesToUpdate,\n projectDir,\n })\n\n if (!updateSuccess) {\n throw new Error('Failed to update Payload packages')\n }\n info('Payload packages updated successfully.')\n\n return { isUpdated: true, message: 'Payload updated successfully.', success: true }\n}\n\nfunction resolveTanStackTemplateRoot(): 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":["fse","fileURLToPath","path","copyRecursiveSync","info","resolvePackageVersion","getPackageManager","installPackages","TANSTACK_TEMPLATE_FILES","filename","url","dirname","updatePayloadPackages","projectDir","versionOrTag","result","performPayloadPackageUpdate","message","success","updatePayloadInNextProject","appDetails","nextConfigPath","packageUpdate","isUpdated","templateFilesPath","process","env","JEST_WORKER_ID","undefined","resolve","templateSrcDir","payloadDirPath","isSrcDir","legacyCustomStylesPath","customCssPath","existsSync","renameSync","updatePayloadInTanStackProject","templateRoot","resolveTanStackTemplateRoot","hasPackedTemplateLayout","join","destination","relativePath","sourcePath","isPayloadRoute","startsWith","isCustomStyles","destinationPath","routesDir","sourceDir","templatePath","ensureDirSync","copyFileSync","updatePayloadInProject","packageObj","readJson","dependencies","devDependencies","Error","dependencyGroups","filter","Boolean","payloadPackageEntries","flatMap","Object","entries","packageName","payloadVersion","find","packageManager","latestPayloadVersion","every","version","payloadPackages","map","packageNames","Set","packagesToUpdate","length","updateSuccess","packagesToInstall","basename"],"mappings":"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"}
|
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 beta; default: this CLI's own dist-tag)\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,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
|
-
locales: ['en'],
|
|
34
|
+
locales: [{ code: 'en', label: 'English' }],
|
|
36
35
|
fallback: true,
|
|
37
36
|
defaultLocale: 'en',
|
|
38
37
|
},
|
|
39
38
|
plugins: [mcpPlugin({})],
|
|
39
|
+
upload: {
|
|
40
|
+
transformers: [sharpTransformer()],
|
|
41
|
+
},
|
|
40
42
|
})
|
|
@@ -1,9 +1,25 @@
|
|
|
1
1
|
/* THIS FILE WAS GENERATED AUTOMATICALLY BY PAYLOAD. MODIFY AT YOUR OWN RISK. */
|
|
2
|
+
import payloadStyles from '@payloadcms/ui/css/app.css?url'
|
|
2
3
|
import { payloadAdminSplatRoute } from '@payloadcms/tanstack-start/client'
|
|
3
4
|
import { createFileRoute } from '@tanstack/react-router'
|
|
4
5
|
|
|
6
|
+
import customStyles from './custom.css?url'
|
|
5
7
|
import { loadAdminPageRSC } from './server.functions.js'
|
|
6
8
|
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
)
|
|
9
|
+
const adminRoute = payloadAdminSplatRoute({ load: loadAdminPageRSC })
|
|
10
|
+
|
|
11
|
+
export const Route = createFileRoute('/_payload/admin/$')({
|
|
12
|
+
...adminRoute,
|
|
13
|
+
head: (context) => {
|
|
14
|
+
const adminHead = adminRoute.head(context)
|
|
15
|
+
|
|
16
|
+
return {
|
|
17
|
+
...adminHead,
|
|
18
|
+
links: [
|
|
19
|
+
...adminHead.links,
|
|
20
|
+
{ rel: 'stylesheet', href: payloadStyles },
|
|
21
|
+
{ rel: 'stylesheet', href: customStyles },
|
|
22
|
+
],
|
|
23
|
+
}
|
|
24
|
+
},
|
|
25
|
+
})
|
|
@@ -1,9 +1,25 @@
|
|
|
1
1
|
/* THIS FILE WAS GENERATED AUTOMATICALLY BY PAYLOAD. MODIFY AT YOUR OWN RISK. */
|
|
2
|
+
import payloadStyles from '@payloadcms/ui/css/app.css?url'
|
|
2
3
|
import { payloadAdminIndexRoute } from '@payloadcms/tanstack-start/client'
|
|
3
4
|
import { createFileRoute } from '@tanstack/react-router'
|
|
4
5
|
|
|
6
|
+
import customStyles from './custom.css?url'
|
|
5
7
|
import { loadAdminPageRSC } from './server.functions.js'
|
|
6
8
|
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
)
|
|
9
|
+
const adminRoute = payloadAdminIndexRoute({ load: loadAdminPageRSC })
|
|
10
|
+
|
|
11
|
+
export const Route = createFileRoute('/_payload/admin/')({
|
|
12
|
+
...adminRoute,
|
|
13
|
+
head: (context) => {
|
|
14
|
+
const adminHead = adminRoute.head(context)
|
|
15
|
+
|
|
16
|
+
return {
|
|
17
|
+
...adminHead,
|
|
18
|
+
links: [
|
|
19
|
+
...adminHead.links,
|
|
20
|
+
{ rel: 'stylesheet', href: payloadStyles },
|
|
21
|
+
{ rel: 'stylesheet', href: customStyles },
|
|
22
|
+
],
|
|
23
|
+
}
|
|
24
|
+
},
|
|
25
|
+
})
|
|
File without changes
|
|
@@ -3,12 +3,10 @@ import { payloadLayoutRoute } from '@payloadcms/tanstack-start/client'
|
|
|
3
3
|
import { createFileRoute } from '@tanstack/react-router'
|
|
4
4
|
|
|
5
5
|
import { getLayoutDataFn, serverFunctionHandler } from './_payload/server.functions.js'
|
|
6
|
-
import styles from '../payload.css?url'
|
|
7
6
|
|
|
8
7
|
export const Route = createFileRoute('/_payload')({
|
|
9
8
|
head: () => ({
|
|
10
9
|
links: [
|
|
11
|
-
{ rel: 'stylesheet', href: styles },
|
|
12
10
|
{
|
|
13
11
|
rel: 'preconnect',
|
|
14
12
|
href: 'https://fonts.googleapis.com',
|
|
@@ -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,9 +29,8 @@ export default buildConfig({
|
|
|
30
29
|
db: mongooseAdapter({
|
|
31
30
|
url: process.env.DATABASE_URL || '',
|
|
32
31
|
}),
|
|
33
|
-
sharp,
|
|
34
32
|
localization: {
|
|
35
|
-
locales: ['en'],
|
|
33
|
+
locales: [{ code: 'en', label: 'English' }],
|
|
36
34
|
fallback: true,
|
|
37
35
|
defaultLocale: 'en',
|
|
38
36
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"messages.d.ts","sourceRoot":"","sources":["../../src/utils/messages.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,cAAc,EAAmB,MAAM,aAAa,CAAA;
|
|
1
|
+
{"version":3,"file":"messages.d.ts","sourceRoot":"","sources":["../../src/utils/messages.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,cAAc,EAAmB,MAAM,aAAa,CAAA;AAOlE,eAAO,MAAM,cAAc,QAE1B,CAAA;AAID,wBAAgB,WAAW,IAAI,IAAI,CAgClC;AAQD,wBAAgB,cAAc,CAAC,UAAU,EAAE,MAAM,EAAE,cAAc,EAAE,cAAc,GAAG,MAAM,CAiBzF;AAED,wBAAgB,kBAAkB,IAAI,MAAM,CAE3C;AAED,wBAAgB,sBAAsB,IAAI,MAAM,CAE/C;AAWD,wBAAgB,WAAW,CAAC,IAAI,EAAE;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,GAAG,MAAM,CAgBpF;AAED,wBAAgB,aAAa,IAAI,MAAM,CAEtC"}
|
package/dist/utils/messages.js
CHANGED
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
import path from 'path';
|
|
3
3
|
import terminalLink from 'terminal-link';
|
|
4
4
|
import { getValidTemplates } from '../lib/templates.js';
|
|
5
|
+
import { DEFAULT_PAYLOAD_VERSION_TAG } from './resolvePackageVersion.js';
|
|
5
6
|
const header = (message)=>chalk.bold(message);
|
|
6
7
|
export const welcomeMessage = chalk`
|
|
7
8
|
{green Welcome to Payload. Let's create a project! }
|
|
@@ -36,7 +37,7 @@ export function helpMessage() {
|
|
|
36
37
|
--use-pnpm Use pnpm to install dependencies
|
|
37
38
|
--use-bun Use bun to install dependencies (experimental)
|
|
38
39
|
--no-deps Do not install any dependencies
|
|
39
|
-
--payload-version {underline value} Install a specific Payload version or npm dist-tag (default:
|
|
40
|
+
--payload-version {underline value} Install a specific Payload version or npm dist-tag (default: ${DEFAULT_PAYLOAD_VERSION_TAG})
|
|
40
41
|
-h Show help
|
|
41
42
|
`);
|
|
42
43
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/utils/messages.ts"],"sourcesContent":["/* eslint-disable no-console */\nimport chalk from 'chalk'\nimport path from 'path'\nimport terminalLink from 'terminal-link'\n\nimport type { PackageManager, ProjectTemplate } from '../types.js'\n\nimport { getValidTemplates } from '../lib/templates.js'\n\nconst header = (message: string): string => chalk.bold(message)\n\nexport const welcomeMessage = chalk`\n {green Welcome to Payload. Let's create a project! }\n`\n\nconst spacer = ' '.repeat(8)\n\nexport function helpMessage(): void {\n const validTemplates = getValidTemplates()\n console.log(chalk`\n {bold USAGE}\n\n {dim Inside of an existing Next.js or TanStack project}\n\n {dim $} {bold npx create-payload-app}\n\n {dim Create a new project from scratch}\n\n {dim $} {bold npx create-payload-app}\n {dim $} {bold npx create-payload-app} my-project\n {dim $} {bold npx create-payload-app} -n my-project -t template-name\n\n {bold OPTIONS}\n\n -n {underline my-payload-app} Set project name\n -t {underline template_name} Choose specific template\n -e {underline example_name} Choose specific example\n\n {dim Available templates: ${formatTemplates(validTemplates)}}\n\n --no-agent Skip writing AGENTS.md\n --use-npm Use npm to install dependencies\n --use-yarn Use yarn to install dependencies\n --use-pnpm Use pnpm to install dependencies\n --use-bun Use bun to install dependencies (experimental)\n --no-deps Do not install any dependencies\n --payload-version {underline value} Install a specific Payload version or npm dist-tag (default:
|
|
1
|
+
{"version":3,"sources":["../../src/utils/messages.ts"],"sourcesContent":["/* eslint-disable no-console */\nimport chalk from 'chalk'\nimport path from 'path'\nimport terminalLink from 'terminal-link'\n\nimport type { PackageManager, ProjectTemplate } from '../types.js'\n\nimport { getValidTemplates } from '../lib/templates.js'\nimport { DEFAULT_PAYLOAD_VERSION_TAG } from './resolvePackageVersion.js'\n\nconst header = (message: string): string => chalk.bold(message)\n\nexport const welcomeMessage = chalk`\n {green Welcome to Payload. Let's create a project! }\n`\n\nconst spacer = ' '.repeat(8)\n\nexport function helpMessage(): void {\n const validTemplates = getValidTemplates()\n console.log(chalk`\n {bold USAGE}\n\n {dim Inside of an existing Next.js or TanStack project}\n\n {dim $} {bold npx create-payload-app}\n\n {dim Create a new project from scratch}\n\n {dim $} {bold npx create-payload-app}\n {dim $} {bold npx create-payload-app} my-project\n {dim $} {bold npx create-payload-app} -n my-project -t template-name\n\n {bold OPTIONS}\n\n -n {underline my-payload-app} Set project name\n -t {underline template_name} Choose specific template\n -e {underline example_name} Choose specific example\n\n {dim Available templates: ${formatTemplates(validTemplates)}}\n\n --no-agent Skip writing AGENTS.md\n --use-npm Use npm to install dependencies\n --use-yarn Use yarn to install dependencies\n --use-pnpm Use pnpm to install dependencies\n --use-bun Use bun to install dependencies (experimental)\n --no-deps Do not install any dependencies\n --payload-version {underline value} Install a specific Payload version or npm dist-tag (default: ${DEFAULT_PAYLOAD_VERSION_TAG})\n -h Show help\n`)\n}\n\nfunction formatTemplates(templates: ProjectTemplate[]) {\n return `\\n\\n${spacer}${templates\n .map((t) => `${t.name}${' '.repeat(28 - t.name.length)}${t.description}`)\n .join(`\\n${spacer}`)}`\n}\n\nexport function successMessage(projectDir: string, packageManager: PackageManager): string {\n const relativePath = path.relative(process.cwd(), projectDir)\n return `\n${header('Launch Application:')}\n\n - cd ./${relativePath}\n - ${packageManager === 'npm' ? 'npm run' : packageManager} dev or follow directions in README.md\n\n${header('Documentation:')}\n\n - ${createTerminalLink(\n 'Getting Started',\n 'https://payloadcms.com/docs/getting-started/what-is-payload',\n )}\n - ${createTerminalLink('Configuration', 'https://payloadcms.com/docs/configuration/overview')}\n\n`\n}\n\nexport function successfulNextInit(): string {\n return successfulFrameworkInit()\n}\n\nexport function successfulTanStackInit(): string {\n return successfulFrameworkInit()\n}\n\nfunction successfulFrameworkInit(): string {\n return `- ${createTerminalLink(\n 'Getting Started',\n 'https://payloadcms.com/docs/getting-started/what-is-payload',\n )}\n- ${createTerminalLink('Configuration', 'https://payloadcms.com/docs/configuration/overview')}\n`\n}\n\nexport function moveMessage(args: { nextAppDir: string; projectDir: string }): string {\n const relativeAppDir = path.relative(process.cwd(), args.nextAppDir)\n return `\n${header('Next Steps:')}\n\nPayload does not support a top-level layout.tsx file in the app directory.\n\n${chalk.bold('To continue:')}\n\n- Create a new directory in ./${relativeAppDir} such as ./${relativeAppDir}/${chalk.bold('(app)')}\n- Move all files from ./${relativeAppDir} into that directory\n\nIt is recommended to do this from your IDE if your app has existing file references.\n\nOnce moved, rerun the create-payload-app command again.\n`\n}\n\nexport function feedbackOutro(): string {\n return `${chalk.bgCyan(chalk.black(' Have feedback? '))} Visit us on ${createTerminalLink('GitHub', 'https://github.com/payloadcms/payload')}.`\n}\n\n// Create terminalLink with fallback for unsupported terminals\nfunction createTerminalLink(text: string, url: string) {\n return terminalLink(text, url, {\n fallback: (text, url) => `${text}: ${url}`,\n })\n}\n"],"names":["chalk","path","terminalLink","getValidTemplates","DEFAULT_PAYLOAD_VERSION_TAG","header","message","bold","welcomeMessage","spacer","repeat","helpMessage","validTemplates","console","log","formatTemplates","templates","map","t","name","length","description","join","successMessage","projectDir","packageManager","relativePath","relative","process","cwd","createTerminalLink","successfulNextInit","successfulFrameworkInit","successfulTanStackInit","moveMessage","args","relativeAppDir","nextAppDir","feedbackOutro","bgCyan","black","text","url","fallback"],"mappings":"AAAA,6BAA6B,GAC7B,OAAOA,WAAW,QAAO;AACzB,OAAOC,UAAU,OAAM;AACvB,OAAOC,kBAAkB,gBAAe;AAIxC,SAASC,iBAAiB,QAAQ,sBAAqB;AACvD,SAASC,2BAA2B,QAAQ,6BAA4B;AAExE,MAAMC,SAAS,CAACC,UAA4BN,MAAMO,IAAI,CAACD;AAEvD,OAAO,MAAME,iBAAiBR,KAAK,CAAC;;AAEpC,CAAC,CAAA;AAED,MAAMS,SAAS,IAAIC,MAAM,CAAC;AAE1B,OAAO,SAASC;IACd,MAAMC,iBAAiBT;IACvBU,QAAQC,GAAG,CAACd,KAAK,CAAC;;;;;;;;;;;;;;;;;;;kCAmBc,EAAEe,gBAAgBH,gBAAgB;;;;;;;;6GAQyC,EAAER,4BAA4B;;AAE3I,CAAC;AACD;AAEA,SAASW,gBAAgBC,SAA4B;IACnD,OAAO,CAAC,IAAI,EAAEP,SAASO,UACpBC,GAAG,CAAC,CAACC,IAAM,GAAGA,EAAEC,IAAI,GAAG,IAAIT,MAAM,CAAC,KAAKQ,EAAEC,IAAI,CAACC,MAAM,IAAIF,EAAEG,WAAW,EAAE,EACvEC,IAAI,CAAC,CAAC,EAAE,EAAEb,QAAQ,GAAG;AAC1B;AAEA,OAAO,SAASc,eAAeC,UAAkB,EAAEC,cAA8B;IAC/E,MAAMC,eAAezB,KAAK0B,QAAQ,CAACC,QAAQC,GAAG,IAAIL;IAClD,OAAO,CAAC;AACV,EAAEnB,OAAO,uBAAuB;;SAEvB,EAAEqB,aAAa;IACpB,EAAED,mBAAmB,QAAQ,YAAYA,eAAe;;AAE5D,EAAEpB,OAAO,kBAAkB;;IAEvB,EAAEyB,mBACF,mBACA,+DACA;IACA,EAAEA,mBAAmB,iBAAiB,sDAAsD;;AAEhG,CAAC;AACD;AAEA,OAAO,SAASC;IACd,OAAOC;AACT;AAEA,OAAO,SAASC;IACd,OAAOD;AACT;AAEA,SAASA;IACP,OAAO,CAAC,EAAE,EAAEF,mBACV,mBACA,+DACA;EACF,EAAEA,mBAAmB,iBAAiB,sDAAsD;AAC9F,CAAC;AACD;AAEA,OAAO,SAASI,YAAYC,IAAgD;IAC1E,MAAMC,iBAAiBnC,KAAK0B,QAAQ,CAACC,QAAQC,GAAG,IAAIM,KAAKE,UAAU;IACnE,OAAO,CAAC;AACV,EAAEhC,OAAO,eAAe;;;;AAIxB,EAAEL,MAAMO,IAAI,CAAC,gBAAgB;;8BAEC,EAAE6B,eAAe,WAAW,EAAEA,eAAe,CAAC,EAAEpC,MAAMO,IAAI,CAAC,SAAS;wBAC1E,EAAE6B,eAAe;;;;;AAKzC,CAAC;AACD;AAEA,OAAO,SAASE;IACd,OAAO,GAAGtC,MAAMuC,MAAM,CAACvC,MAAMwC,KAAK,CAAC,qBAAqB,aAAa,EAAEV,mBAAmB,UAAU,yCAAyC,CAAC,CAAC;AACjJ;AAEA,8DAA8D;AAC9D,SAASA,mBAAmBW,IAAY,EAAEC,GAAW;IACnD,OAAOxC,aAAauC,MAAMC,KAAK;QAC7BC,UAAU,CAACF,MAAMC,MAAQ,GAAGD,KAAK,EAAE,EAAEC,KAAK;IAC5C;AACF"}
|
|
@@ -1,10 +1,16 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Default npm dist-tag used by the create-payload-app CLI when no
|
|
3
|
-
* `--payload-version` is provided.
|
|
3
|
+
* `--payload-version` is provided.
|
|
4
4
|
*/
|
|
5
|
-
export declare const DEFAULT_PAYLOAD_VERSION_TAG
|
|
5
|
+
export declare const DEFAULT_PAYLOAD_VERSION_TAG: string;
|
|
6
6
|
/**
|
|
7
|
-
*
|
|
7
|
+
* Every package in the monorepo (this one included) is versioned and published in
|
|
8
|
+
* lockstep, so the CLI's own prerelease id is the dist-tag it was installed under
|
|
9
|
+
* (`create-payload-app@beta` -> `beta`). Stable builds resolve to `latest`.
|
|
10
|
+
*/
|
|
11
|
+
export declare function resolveDefaultPayloadTag(version?: string | undefined): string;
|
|
12
|
+
/**
|
|
13
|
+
* Resolves a package version from either an npm dist-tag (e.g. `beta`) or an
|
|
8
14
|
* explicit version number (e.g. `3.40.0`).
|
|
9
15
|
*
|
|
10
16
|
* A value matching a published dist-tag resolves to that tag's concrete version.
|
|
@@ -20,7 +26,7 @@ export declare function resolvePackageVersion({ debug, packageName, versionOrTag
|
|
|
20
26
|
*/
|
|
21
27
|
packageName?: string;
|
|
22
28
|
/**
|
|
23
|
-
* An npm dist-tag (e.g. `latest`, `
|
|
29
|
+
* An npm dist-tag (e.g. `latest`, `beta`) or an explicit version (e.g. `3.40.0`).
|
|
24
30
|
*
|
|
25
31
|
* @default 'latest'
|
|
26
32
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolvePackageVersion.d.ts","sourceRoot":"","sources":["../../src/utils/resolvePackageVersion.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"resolvePackageVersion.d.ts","sourceRoot":"","sources":["../../src/utils/resolvePackageVersion.ts"],"names":[],"mappings":"AAUA;;;GAGG;AACH,eAAO,MAAM,2BAA2B,QAA6B,CAAA;AAErE;;;;GAIG;AACH,wBAAgB,wBAAwB,CAAC,OAAO,GAAE,MAAM,GAAG,SAA4B,GAAG,MAAM,CAE/F;AAED;;;;;;;GAOG;AACH,wBAAsB,qBAAqB,CAAC,EAC1C,KAAa,EACb,WAAuB,EACvB,YAAuB,GACxB,EAAE;IACD,KAAK,CAAC,EAAE,OAAO,CAAA;IACf;;;;OAIG;IACH,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB;;;;OAIG;IACH,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB,GAAG,OAAO,CAAC,MAAM,CAAC,CAiBlB"}
|
|
@@ -1,9 +1,21 @@
|
|
|
1
|
+
import { readFileSync } from 'node:fs';
|
|
2
|
+
import { dirname, resolve } from 'node:path';
|
|
3
|
+
import { fileURLToPath } from 'node:url';
|
|
4
|
+
/** Dist-tag used when the CLI's own version carries no prerelease id. */ const STABLE_TAG = 'latest';
|
|
5
|
+
/** Captures the prerelease id, e.g. `beta` from `4.0.0-beta.3`. */ const PRERELEASE_ID_PATTERN = /^\d+\.\d+\.\d+-([\da-z-]+)/i;
|
|
1
6
|
/**
|
|
2
7
|
* Default npm dist-tag used by the create-payload-app CLI when no
|
|
3
|
-
* `--payload-version` is provided.
|
|
4
|
-
*/ export const DEFAULT_PAYLOAD_VERSION_TAG =
|
|
8
|
+
* `--payload-version` is provided.
|
|
9
|
+
*/ export const DEFAULT_PAYLOAD_VERSION_TAG = resolveDefaultPayloadTag();
|
|
5
10
|
/**
|
|
6
|
-
*
|
|
11
|
+
* Every package in the monorepo (this one included) is versioned and published in
|
|
12
|
+
* lockstep, so the CLI's own prerelease id is the dist-tag it was installed under
|
|
13
|
+
* (`create-payload-app@beta` -> `beta`). Stable builds resolve to `latest`.
|
|
14
|
+
*/ export function resolveDefaultPayloadTag(version = readOwnVersion()) {
|
|
15
|
+
return version?.match(PRERELEASE_ID_PATTERN)?.[1] ?? STABLE_TAG;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Resolves a package version from either an npm dist-tag (e.g. `beta`) or an
|
|
7
19
|
* explicit version number (e.g. `3.40.0`).
|
|
8
20
|
*
|
|
9
21
|
* A value matching a published dist-tag resolves to that tag's concrete version.
|
|
@@ -37,5 +49,14 @@ async function verifyVersionExists({ packageName, version }) {
|
|
|
37
49
|
throw new Error(`No version or tag "${version}" found for package: ${packageName}`);
|
|
38
50
|
}
|
|
39
51
|
}
|
|
52
|
+
function readOwnVersion() {
|
|
53
|
+
try {
|
|
54
|
+
const pkgPath = resolve(dirname(fileURLToPath(import.meta.url)), '..', '..', 'package.json');
|
|
55
|
+
const { version } = JSON.parse(readFileSync(pkgPath, 'utf8'));
|
|
56
|
+
return typeof version === 'string' ? version : undefined;
|
|
57
|
+
} catch {
|
|
58
|
+
return undefined;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
40
61
|
|
|
41
62
|
//# sourceMappingURL=resolvePackageVersion.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/utils/resolvePackageVersion.ts"],"sourcesContent":["/**\n * Default npm dist-tag used by the create-payload-app CLI when no\n * `--payload-version` is provided
|
|
1
|
+
{"version":3,"sources":["../../src/utils/resolvePackageVersion.ts"],"sourcesContent":["import { readFileSync } from 'node:fs'\nimport { dirname, resolve } from 'node:path'\nimport { fileURLToPath } from 'node:url'\n\n/** Dist-tag used when the CLI's own version carries no prerelease id. */\nconst STABLE_TAG = 'latest'\n\n/** Captures the prerelease id, e.g. `beta` from `4.0.0-beta.3`. */\nconst PRERELEASE_ID_PATTERN = /^\\d+\\.\\d+\\.\\d+-([\\da-z-]+)/i\n\n/**\n * Default npm dist-tag used by the create-payload-app CLI when no\n * `--payload-version` is provided.\n */\nexport const DEFAULT_PAYLOAD_VERSION_TAG = resolveDefaultPayloadTag()\n\n/**\n * Every package in the monorepo (this one included) is versioned and published in\n * lockstep, so the CLI's own prerelease id is the dist-tag it was installed under\n * (`create-payload-app@beta` -> `beta`). Stable builds resolve to `latest`.\n */\nexport function resolveDefaultPayloadTag(version: string | undefined = readOwnVersion()): string {\n return version?.match(PRERELEASE_ID_PATTERN)?.[1] ?? STABLE_TAG\n}\n\n/**\n * Resolves a package version from either an npm dist-tag (e.g. `beta`) or an\n * explicit version number (e.g. `3.40.0`).\n *\n * A value matching a published dist-tag resolves to that tag's concrete version.\n * Any other value is treated as an explicit version and verified to exist on the\n * registry. Throws if neither a matching tag nor a published version is found.\n */\nexport async function resolvePackageVersion({\n debug = false,\n packageName = 'payload',\n versionOrTag = 'latest',\n}: {\n debug?: boolean\n /**\n * Package name to resolve against the npm registry.\n *\n * @default 'payload'\n */\n packageName?: string\n /**\n * An npm dist-tag (e.g. `latest`, `beta`) or an explicit version (e.g. `3.40.0`).\n *\n * @default 'latest'\n */\n versionOrTag?: string\n}): Promise<string> {\n const distTags = await fetchDistTags(packageName)\n\n const taggedVersion = distTags[versionOrTag]\n if (taggedVersion) {\n if (debug) {\n console.log(`Resolved ${packageName}@${versionOrTag} to ${taggedVersion}`)\n }\n return taggedVersion\n }\n\n await verifyVersionExists({ packageName, version: versionOrTag })\n\n if (debug) {\n console.log(`Using ${packageName}@${versionOrTag}`)\n }\n return versionOrTag\n}\n\nasync function fetchDistTags(packageName: string): Promise<Record<string, string>> {\n const response = await fetch(`https://registry.npmjs.org/-/package/${packageName}/dist-tags`)\n return (await response.json()) as Record<string, string>\n}\n\nasync function verifyVersionExists({\n packageName,\n version,\n}: {\n packageName: string\n version: string\n}): Promise<void> {\n const response = await fetch(`https://registry.npmjs.org/${packageName}/${version}`)\n if (response.status !== 200) {\n throw new Error(`No version or tag \"${version}\" found for package: ${packageName}`)\n }\n}\n\nfunction readOwnVersion(): string | undefined {\n try {\n const pkgPath = resolve(dirname(fileURLToPath(import.meta.url)), '..', '..', 'package.json')\n const { version } = JSON.parse(readFileSync(pkgPath, 'utf8')) as { version?: unknown }\n return typeof version === 'string' ? version : undefined\n } catch {\n return undefined\n }\n}\n"],"names":["readFileSync","dirname","resolve","fileURLToPath","STABLE_TAG","PRERELEASE_ID_PATTERN","DEFAULT_PAYLOAD_VERSION_TAG","resolveDefaultPayloadTag","version","readOwnVersion","match","resolvePackageVersion","debug","packageName","versionOrTag","distTags","fetchDistTags","taggedVersion","console","log","verifyVersionExists","response","fetch","json","status","Error","pkgPath","url","JSON","parse","undefined"],"mappings":"AAAA,SAASA,YAAY,QAAQ,UAAS;AACtC,SAASC,OAAO,EAAEC,OAAO,QAAQ,YAAW;AAC5C,SAASC,aAAa,QAAQ,WAAU;AAExC,uEAAuE,GACvE,MAAMC,aAAa;AAEnB,iEAAiE,GACjE,MAAMC,wBAAwB;AAE9B;;;CAGC,GACD,OAAO,MAAMC,8BAA8BC,2BAA0B;AAErE;;;;CAIC,GACD,OAAO,SAASA,yBAAyBC,UAA8BC,gBAAgB;IACrF,OAAOD,SAASE,MAAML,wBAAwB,CAAC,EAAE,IAAID;AACvD;AAEA;;;;;;;CAOC,GACD,OAAO,eAAeO,sBAAsB,EAC1CC,QAAQ,KAAK,EACbC,cAAc,SAAS,EACvBC,eAAe,QAAQ,EAexB;IACC,MAAMC,WAAW,MAAMC,cAAcH;IAErC,MAAMI,gBAAgBF,QAAQ,CAACD,aAAa;IAC5C,IAAIG,eAAe;QACjB,IAAIL,OAAO;YACTM,QAAQC,GAAG,CAAC,CAAC,SAAS,EAAEN,YAAY,CAAC,EAAEC,aAAa,IAAI,EAAEG,eAAe;QAC3E;QACA,OAAOA;IACT;IAEA,MAAMG,oBAAoB;QAAEP;QAAaL,SAASM;IAAa;IAE/D,IAAIF,OAAO;QACTM,QAAQC,GAAG,CAAC,CAAC,MAAM,EAAEN,YAAY,CAAC,EAAEC,cAAc;IACpD;IACA,OAAOA;AACT;AAEA,eAAeE,cAAcH,WAAmB;IAC9C,MAAMQ,WAAW,MAAMC,MAAM,CAAC,qCAAqC,EAAET,YAAY,UAAU,CAAC;IAC5F,OAAQ,MAAMQ,SAASE,IAAI;AAC7B;AAEA,eAAeH,oBAAoB,EACjCP,WAAW,EACXL,OAAO,EAIR;IACC,MAAMa,WAAW,MAAMC,MAAM,CAAC,2BAA2B,EAAET,YAAY,CAAC,EAAEL,SAAS;IACnF,IAAIa,SAASG,MAAM,KAAK,KAAK;QAC3B,MAAM,IAAIC,MAAM,CAAC,mBAAmB,EAAEjB,QAAQ,qBAAqB,EAAEK,aAAa;IACpF;AACF;AAEA,SAASJ;IACP,IAAI;QACF,MAAMiB,UAAUxB,QAAQD,QAAQE,cAAc,YAAYwB,GAAG,IAAI,MAAM,MAAM;QAC7E,MAAM,EAAEnB,OAAO,EAAE,GAAGoB,KAAKC,KAAK,CAAC7B,aAAa0B,SAAS;QACrD,OAAO,OAAOlB,YAAY,WAAWA,UAAUsB;IACjD,EAAE,OAAM;QACN,OAAOA;IACT;AACF"}
|
package/package.json
CHANGED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
@import '@payloadcms/ui/css/app.css';
|