create-payload-app 4.0.0-internal.2fddfc0 → 4.0.0-internal.3aa3d85

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/LICENSE.md CHANGED
@@ -1,6 +1,6 @@
1
1
  MIT License
2
2
 
3
- Copyright (c) 2018-2025 Payload CMS, Inc. <info@payloadcms.com>
3
+ Copyright (c) 2018-2026 Payload CMS, LLC <info@payloadcms.com>
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining
6
6
  a copy of this software and associated documentation files (the
@@ -0,0 +1,20 @@
1
+ import type { PackageManager } from '../types.js';
2
+ /**
3
+ * pnpm v11 fails installs that have unapproved dependency build scripts, reading approvals only from
4
+ * pnpm-workspace.yaml (the `pnpm` field in package.json is ignored). create-next-app now scaffolds a
5
+ * placeholder `allowBuilds` block (sharp/unrs-resolver left unset) plus an `ignoredBuiltDependencies`
6
+ * denylist, so we must merge rather than skip: force Payload's build scripts to `true` and remove them
7
+ * from the denylist. No-op for non-pnpm package managers.
8
+ */
9
+ export declare function ensurePnpmBuildApprovals(args: {
10
+ packageManager: PackageManager;
11
+ projectDir: string;
12
+ }): Promise<void>;
13
+ /**
14
+ * Merges Payload's required build approvals into a pnpm-workspace.yaml string. Pure and idempotent:
15
+ * sets each required package to `true` under `allowBuilds` (adding the block if missing) and strips
16
+ * those packages from any `ignoredBuiltDependencies` denylist. Top-level keys are detected by a
17
+ * zero-indent `key:`, with their two-space children grouped beneath them.
18
+ */
19
+ export declare function upsertBuildApprovals(content: string): string;
20
+ //# sourceMappingURL=configure-pnpm-builds.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"configure-pnpm-builds.d.ts","sourceRoot":"","sources":["../../src/lib/configure-pnpm-builds.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AAWjD;;;;;;GAMG;AACH,wBAAsB,wBAAwB,CAAC,IAAI,EAAE;IACnD,cAAc,EAAE,cAAc,CAAA;IAC9B,UAAU,EAAE,MAAM,CAAA;CACnB,GAAG,OAAO,CAAC,IAAI,CAAC,CAYhB;AAOD;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAkC5D"}
@@ -0,0 +1,100 @@
1
+ import fse from 'fs-extra';
2
+ import path from 'path';
3
+ /*
4
+ * Build scripts pnpm v11 must be allowed to run for the projects create-payload-app scaffolds;
5
+ * otherwise the install fails with ERR_PNPM_IGNORED_BUILDS. esbuild/sharp/unrs-resolver cover the
6
+ * default templates; workerd is required by with-cloudflare-d1.
7
+ * TODO(follow-up): the CI drift guard only verifies the blank template — extend it across every
8
+ * getValidTemplates() entry so this single list can't drift per-template.
9
+ */ const ALLOWED_BUILDS = [
10
+ 'esbuild',
11
+ 'sharp',
12
+ 'unrs-resolver',
13
+ 'workerd'
14
+ ];
15
+ /**
16
+ * pnpm v11 fails installs that have unapproved dependency build scripts, reading approvals only from
17
+ * pnpm-workspace.yaml (the `pnpm` field in package.json is ignored). create-next-app now scaffolds a
18
+ * placeholder `allowBuilds` block (sharp/unrs-resolver left unset) plus an `ignoredBuiltDependencies`
19
+ * denylist, so we must merge rather than skip: force Payload's build scripts to `true` and remove them
20
+ * from the denylist. No-op for non-pnpm package managers.
21
+ */ export async function ensurePnpmBuildApprovals(args) {
22
+ const { packageManager, projectDir } = args;
23
+ if (packageManager !== 'pnpm') {
24
+ return;
25
+ }
26
+ const workspacePath = path.join(projectDir, 'pnpm-workspace.yaml');
27
+ const existing = await fse.pathExists(workspacePath) ? await fse.readFile(workspacePath, 'utf-8') : '';
28
+ await fse.writeFile(workspacePath, upsertBuildApprovals(existing));
29
+ }
30
+ /**
31
+ * Merges Payload's required build approvals into a pnpm-workspace.yaml string. Pure and idempotent:
32
+ * sets each required package to `true` under `allowBuilds` (adding the block if missing) and strips
33
+ * those packages from any `ignoredBuiltDependencies` denylist. Top-level keys are detected by a
34
+ * zero-indent `key:`, with their two-space children grouped beneath them.
35
+ */ export function upsertBuildApprovals(content) {
36
+ const blocks = toTopLevelBlocks(content);
37
+ const ignored = blocks.find((block)=>block.key === 'ignoredBuiltDependencies');
38
+ if (ignored) {
39
+ ignored.lines = ignored.lines.filter((line, index)=>{
40
+ if (index === 0) {
41
+ return true;
42
+ }
43
+ const name = /^\s*-\s*'?([^'\s]+)'?\s*$/.exec(line)?.[1];
44
+ return !(name && ALLOWED_BUILDS.includes(name));
45
+ });
46
+ }
47
+ const allow = blocks.find((block)=>block.key === 'allowBuilds');
48
+ if (allow) {
49
+ for (const name of ALLOWED_BUILDS){
50
+ const pattern = new RegExp(`^\\s+'?${escapeRegExp(name)}'?:`);
51
+ const index = allow.lines.findIndex((line)=>pattern.test(line));
52
+ if (index >= 0) {
53
+ allow.lines[index] = ` ${name}: true`;
54
+ } else {
55
+ allow.lines.push(` ${name}: true`);
56
+ }
57
+ }
58
+ } else {
59
+ blocks.push({
60
+ key: 'allowBuilds',
61
+ lines: [
62
+ 'allowBuilds:',
63
+ ...ALLOWED_BUILDS.map((name)=>` ${name}: true`)
64
+ ]
65
+ });
66
+ }
67
+ const output = blocks.flatMap((block)=>block.lines).join('\n');
68
+ return output.endsWith('\n') ? output : `${output}\n`;
69
+ }
70
+ function toTopLevelBlocks(content) {
71
+ const lines = content.length ? content.replace(/\n$/, '').split('\n') : [];
72
+ const blocks = [];
73
+ for (const line of lines){
74
+ const key = /^[^\s#]/.test(line) ? /^([^:]+):/.exec(line)?.[1] : undefined;
75
+ const current = blocks[blocks.length - 1];
76
+ if (key !== undefined) {
77
+ blocks.push({
78
+ key,
79
+ lines: [
80
+ line
81
+ ]
82
+ });
83
+ } else if (current) {
84
+ current.lines.push(line);
85
+ } else {
86
+ blocks.push({
87
+ key: null,
88
+ lines: [
89
+ line
90
+ ]
91
+ });
92
+ }
93
+ }
94
+ return blocks;
95
+ }
96
+ function escapeRegExp(value) {
97
+ return value.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
98
+ }
99
+
100
+ //# sourceMappingURL=configure-pnpm-builds.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/lib/configure-pnpm-builds.ts"],"sourcesContent":["import fse from 'fs-extra'\nimport path from 'path'\n\nimport type { PackageManager } from '../types.js'\n\n/*\n * Build scripts pnpm v11 must be allowed to run for the projects create-payload-app scaffolds;\n * otherwise the install fails with ERR_PNPM_IGNORED_BUILDS. esbuild/sharp/unrs-resolver cover the\n * default templates; workerd is required by with-cloudflare-d1.\n * TODO(follow-up): the CI drift guard only verifies the blank template — extend it across every\n * getValidTemplates() entry so this single list can't drift per-template.\n */\nconst ALLOWED_BUILDS = ['esbuild', 'sharp', 'unrs-resolver', 'workerd']\n\n/**\n * pnpm v11 fails installs that have unapproved dependency build scripts, reading approvals only from\n * pnpm-workspace.yaml (the `pnpm` field in package.json is ignored). create-next-app now scaffolds a\n * placeholder `allowBuilds` block (sharp/unrs-resolver left unset) plus an `ignoredBuiltDependencies`\n * denylist, so we must merge rather than skip: force Payload's build scripts to `true` and remove them\n * from the denylist. No-op for non-pnpm package managers.\n */\nexport async function ensurePnpmBuildApprovals(args: {\n packageManager: PackageManager\n projectDir: string\n}): Promise<void> {\n const { packageManager, projectDir } = args\n if (packageManager !== 'pnpm') {\n return\n }\n\n const workspacePath = path.join(projectDir, 'pnpm-workspace.yaml')\n const existing = (await fse.pathExists(workspacePath))\n ? await fse.readFile(workspacePath, 'utf-8')\n : ''\n\n await fse.writeFile(workspacePath, upsertBuildApprovals(existing))\n}\n\ntype WorkspaceBlock = {\n key: null | string\n lines: string[]\n}\n\n/**\n * Merges Payload's required build approvals into a pnpm-workspace.yaml string. Pure and idempotent:\n * sets each required package to `true` under `allowBuilds` (adding the block if missing) and strips\n * those packages from any `ignoredBuiltDependencies` denylist. Top-level keys are detected by a\n * zero-indent `key:`, with their two-space children grouped beneath them.\n */\nexport function upsertBuildApprovals(content: string): string {\n const blocks = toTopLevelBlocks(content)\n\n const ignored = blocks.find((block) => block.key === 'ignoredBuiltDependencies')\n if (ignored) {\n ignored.lines = ignored.lines.filter((line, index) => {\n if (index === 0) {\n return true\n }\n const name = /^\\s*-\\s*'?([^'\\s]+)'?\\s*$/.exec(line)?.[1]\n return !(name && ALLOWED_BUILDS.includes(name))\n })\n }\n\n const allow = blocks.find((block) => block.key === 'allowBuilds')\n if (allow) {\n for (const name of ALLOWED_BUILDS) {\n const pattern = new RegExp(`^\\\\s+'?${escapeRegExp(name)}'?:`)\n const index = allow.lines.findIndex((line) => pattern.test(line))\n if (index >= 0) {\n allow.lines[index] = ` ${name}: true`\n } else {\n allow.lines.push(` ${name}: true`)\n }\n }\n } else {\n blocks.push({\n key: 'allowBuilds',\n lines: ['allowBuilds:', ...ALLOWED_BUILDS.map((name) => ` ${name}: true`)],\n })\n }\n\n const output = blocks.flatMap((block) => block.lines).join('\\n')\n return output.endsWith('\\n') ? output : `${output}\\n`\n}\n\nfunction toTopLevelBlocks(content: string): WorkspaceBlock[] {\n const lines = content.length ? content.replace(/\\n$/, '').split('\\n') : []\n const blocks: WorkspaceBlock[] = []\n\n for (const line of lines) {\n const key = /^[^\\s#]/.test(line) ? /^([^:]+):/.exec(line)?.[1] : undefined\n const current = blocks[blocks.length - 1]\n if (key !== undefined) {\n blocks.push({ key, lines: [line] })\n } else if (current) {\n current.lines.push(line)\n } else {\n blocks.push({ key: null, lines: [line] })\n }\n }\n\n return blocks\n}\n\nfunction escapeRegExp(value: string): string {\n return value.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&')\n}\n"],"names":["fse","path","ALLOWED_BUILDS","ensurePnpmBuildApprovals","args","packageManager","projectDir","workspacePath","join","existing","pathExists","readFile","writeFile","upsertBuildApprovals","content","blocks","toTopLevelBlocks","ignored","find","block","key","lines","filter","line","index","name","exec","includes","allow","pattern","RegExp","escapeRegExp","findIndex","test","push","map","output","flatMap","endsWith","length","replace","split","undefined","current","value"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"create-project.d.ts","sourceRoot":"","sources":["../../src/lib/create-project.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EACV,SAAS,EACT,OAAO,EACP,SAAS,EACT,cAAc,EACd,cAAc,EACd,eAAe,EAChB,MAAM,aAAa,CAAA;AAyDpB,KAAK,iBAAiB,GAClB;IACE,OAAO,EAAE,cAAc,CAAA;CACxB,GACD;IACE,QAAQ,EAAE,eAAe,CAAA;CAC1B,CAAA;AAEL,wBAAsB,aAAa,CACjC,IAAI,EAAE;IACJ,SAAS,CAAC,EAAE,SAAS,CAAA;IACrB,OAAO,EAAE,OAAO,CAAA;IAChB,SAAS,CAAC,EAAE,SAAS,CAAA;IACrB,cAAc,EAAE,cAAc,CAAA;IAC9B,UAAU,EAAE,MAAM,CAAA;IAClB,WAAW,EAAE,MAAM,CAAA;CACpB,GAAG,iBAAiB,GACpB,OAAO,CAAC,IAAI,CAAC,CA6Hf;AAED;;;;;GAKG;AACH,wBAAsB,iBAAiB,CAAC,IAAI,EAAE;IAC5C;;OAEG;IACH,aAAa,EAAE,MAAM,CAAA;IACrB,UAAU,EAAE,MAAM,CAAA;IAClB;;OAEG;IACH,WAAW,EAAE,MAAM,CAAA;CACpB,GAAG,OAAO,CAAC,IAAI,CAAC,CAgBhB;AAED;;;;GAIG;AACH,wBAAgB,6BAA6B,CAAC,IAAI,EAAE;IAClD,aAAa,EAAE,MAAM,CAAA;IACrB,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CACrC,GAAG,IAAI,CAiBP"}
1
+ {"version":3,"file":"create-project.d.ts","sourceRoot":"","sources":["../../src/lib/create-project.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EACV,SAAS,EACT,OAAO,EACP,SAAS,EACT,cAAc,EACd,cAAc,EACd,eAAe,EAChB,MAAM,aAAa,CAAA;AA4DpB,KAAK,iBAAiB,GAClB;IACE,OAAO,EAAE,cAAc,CAAA;CACxB,GACD;IACE,QAAQ,EAAE,eAAe,CAAA;CAC1B,CAAA;AAEL,wBAAsB,aAAa,CACjC,IAAI,EAAE;IACJ,SAAS,CAAC,EAAE,SAAS,CAAA;IACrB,OAAO,EAAE,OAAO,CAAA;IAChB,SAAS,CAAC,EAAE,SAAS,CAAA;IACrB,cAAc,EAAE,cAAc,CAAA;IAC9B,UAAU,EAAE,MAAM,CAAA;IAClB,WAAW,EAAE,MAAM,CAAA;CACpB,GAAG,iBAAiB,GACpB,OAAO,CAAC,IAAI,CAAC,CA6Hf;AAED;;;;;GAKG;AACH,wBAAsB,iBAAiB,CAAC,IAAI,EAAE;IAC5C;;OAEG;IACH,aAAa,EAAE,MAAM,CAAA;IACrB,UAAU,EAAE,MAAM,CAAA;IAClB;;OAEG;IACH,WAAW,EAAE,MAAM,CAAA;CACpB,GAAG,OAAO,CAAC,IAAI,CAAC,CAgBhB;AAED;;;;GAIG;AACH,wBAAgB,6BAA6B,CAAC,IAAI,EAAE;IAClD,aAAa,EAAE,MAAM,CAAA;IACrB,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CACrC,GAAG,IAAI,CAiBP"}
@@ -9,6 +9,7 @@ import { debug, error, info, warning } from '../utils/log.js';
9
9
  import { DEFAULT_PAYLOAD_VERSION_TAG, resolvePackageVersion } from '../utils/resolvePackageVersion.js';
10
10
  import { configurePayloadConfig } from './configure-payload-config.js';
11
11
  import { configurePluginProject } from './configure-plugin-project.js';
12
+ import { ensurePnpmBuildApprovals } from './configure-pnpm-builds.js';
12
13
  import { downloadExample } from './download-example.js';
13
14
  import { downloadSkill } from './download-skill.js';
14
15
  import { downloadTemplate } from './download-template.js';
@@ -36,6 +37,10 @@ async function installDeps(args) {
36
37
  } else if (packageManager === 'bun') {
37
38
  installCmd = 'bun install';
38
39
  }
40
+ await ensurePnpmBuildApprovals({
41
+ packageManager,
42
+ projectDir
43
+ });
39
44
  try {
40
45
  await execa.command(installCmd, {
41
46
  cwd: path.resolve(projectDir)
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/lib/create-project.ts"],"sourcesContent":["import * as p from '@clack/prompts'\nimport chalk from 'chalk'\nimport execa from 'execa'\nimport fse from 'fs-extra'\nimport { fileURLToPath } from 'node:url'\nimport path from 'path'\n\nimport type {\n AgentType,\n CliArgs,\n DbDetails,\n PackageManager,\n ProjectExample,\n ProjectTemplate,\n} from '../types.js'\n\nimport { tryInitRepoAndCommit } from '../utils/git.js'\nimport { debug, error, info, warning } from '../utils/log.js'\nimport {\n DEFAULT_PAYLOAD_VERSION_TAG,\n resolvePackageVersion,\n} from '../utils/resolvePackageVersion.js'\nimport { configurePayloadConfig } from './configure-payload-config.js'\nimport { configurePluginProject } from './configure-plugin-project.js'\nimport { downloadExample } from './download-example.js'\nimport { downloadSkill } from './download-skill.js'\nimport { downloadTemplate } from './download-template.js'\nimport { generateSecret } from './generate-secret.js'\nimport { manageEnvFiles } from './manage-env-files.js'\nimport { getAgentChoice } from './select-agent.js'\n\nconst filename = fileURLToPath(import.meta.url)\nconst dirname = path.dirname(filename)\n\nasync function createOrFindProjectDir(projectDir: string): Promise<void> {\n const pathExists = await fse.pathExists(projectDir)\n if (!pathExists) {\n await fse.mkdir(projectDir)\n }\n}\n\nasync function installDeps(args: {\n cliArgs: CliArgs\n packageManager: PackageManager\n projectDir: string\n}): Promise<boolean> {\n const { cliArgs, packageManager, projectDir } = args\n if (cliArgs['--no-deps']) {\n return true\n }\n let installCmd = 'npm install --legacy-peer-deps'\n\n if (packageManager === 'yarn') {\n installCmd = 'yarn'\n } else if (packageManager === 'pnpm') {\n installCmd = 'pnpm install'\n } else if (packageManager === 'bun') {\n installCmd = 'bun install'\n }\n\n try {\n await execa.command(installCmd, {\n cwd: path.resolve(projectDir),\n })\n return true\n } catch (err: unknown) {\n error(`Error installing dependencies${err instanceof Error ? `: ${err.message}` : ''}.`)\n return false\n }\n}\n\ntype TemplateOrExample =\n | {\n example: ProjectExample\n }\n | {\n template: ProjectTemplate\n }\n\nexport async function createProject(\n args: {\n agentType?: AgentType\n cliArgs: CliArgs\n dbDetails?: DbDetails\n packageManager: PackageManager\n projectDir: string\n projectName: string\n } & TemplateOrExample,\n): Promise<void> {\n const { agentType, cliArgs, dbDetails, packageManager, projectDir, projectName } = args\n\n if (cliArgs['--dry-run']) {\n debug(`Dry run: Creating project in ${chalk.green(projectDir)}`)\n return\n }\n\n await createOrFindProjectDir(projectDir)\n\n if (cliArgs['--local-example']) {\n // Copy example from local path. For development purposes.\n const localExample = path.resolve(dirname, '../../../../examples/', cliArgs['--local-example'])\n await fse.copy(localExample, projectDir)\n }\n\n if (cliArgs['--local-template']) {\n // Copy template from local path. For development purposes.\n const localTemplate = path.resolve(\n dirname,\n '../../../../templates/',\n cliArgs['--local-template'],\n )\n await fse.copy(localTemplate, projectDir)\n } else if ('template' in args && 'url' in args.template) {\n const { template } = args\n if (cliArgs['--branch']) {\n template.url = `${template.url.split('#')?.[0]}#${cliArgs['--branch']}`\n }\n\n await downloadTemplate({\n debug: cliArgs['--debug'],\n projectDir,\n template,\n })\n } else if ('example' in args && 'url' in args.example) {\n const { example } = args\n if (cliArgs['--branch']) {\n example.url = `${example.url.split('#')?.[0]}#${cliArgs['--branch']}`\n }\n\n await downloadExample({\n debug: cliArgs['--debug'],\n example,\n projectDir,\n })\n }\n\n const versionOrTag = cliArgs['--payload-version'] ?? DEFAULT_PAYLOAD_VERSION_TAG\n\n const spinner = p.spinner()\n spinner.start(`Resolving Payload version (${versionOrTag})...`)\n\n const payloadVersion = await resolvePackageVersion({\n packageName: 'payload',\n versionOrTag,\n })\n\n spinner.stop(`Using Payload version ${payloadVersion}`)\n\n await updatePackageJSON({ latestVersion: payloadVersion, projectDir, projectName })\n\n if ('template' in args) {\n if (args.template.type === 'plugin') {\n spinner.message('Configuring Plugin...')\n configurePluginProject({ projectDirPath: projectDir, projectName })\n } else {\n spinner.message('Configuring Payload...')\n await configurePayloadConfig({\n dbType: dbDetails?.type,\n projectDirOrConfigPath: { projectDir },\n })\n }\n }\n\n await manageEnvFiles({\n cliArgs,\n databaseType: dbDetails?.type,\n databaseUri: dbDetails?.dbUri,\n payloadSecret: generateSecret(),\n projectDir,\n template: 'template' in args ? args.template : undefined,\n })\n\n if (agentType) {\n spinner.message('Installing agent skill...')\n try {\n await downloadSkill({\n agentType,\n branch: cliArgs['--branch'] || undefined,\n debug: cliArgs['--debug'],\n projectDir,\n })\n\n const { configFile, skillsDir } = getAgentChoice(agentType)\n const skillPath = `${skillsDir}/payload`\n const configContent =\n configFile === 'CLAUDE.md'\n ? `# Claude Code\\n\\nThis project uses the Payload CMS skill at \\`${skillPath}/\\`.\\nStart with \\`${skillPath}/SKILL.md\\` for a quick reference, then see \\`${skillPath}/reference/\\` for detailed docs.\\n`\n : `# Agents\\n\\nThis project uses the Payload CMS skill at \\`${skillPath}/\\`.\\nStart with \\`${skillPath}/SKILL.md\\` for a quick reference, then see \\`${skillPath}/reference/\\` for detailed docs.\\n`\n await fse.writeFile(path.resolve(projectDir, configFile), configContent)\n } catch (err) {\n if (cliArgs['--debug'] && err instanceof Error) {\n debug(`Failed to download skill: ${err.message}`)\n }\n warning('Could not download agent skill. You can install it manually later.')\n }\n }\n\n if (!cliArgs['--no-deps']) {\n info(`Using ${packageManager}.\\n`)\n spinner.message('Installing dependencies...')\n const result = await installDeps({ cliArgs, packageManager, projectDir })\n if (result) {\n spinner.stop('Successfully installed Payload and dependencies')\n } else {\n spinner.stop('Error installing dependencies', 1)\n }\n } else {\n spinner.stop('Dependency installation skipped')\n }\n\n if (!cliArgs['--no-git']) {\n tryInitRepoAndCommit({ cwd: projectDir })\n }\n}\n\n/**\n * Reads the package.json file into an object and then does the following:\n * - Sets the `name` property to the provided `projectName`.\n * - Bumps the payload packages from workspace:* to the latest version.\n * - Writes the updated object back to the package.json file.\n */\nexport async function updatePackageJSON(args: {\n /**\n * The latest version of Payload to use in the package.json.\n */\n latestVersion: string\n projectDir: string\n /**\n * The name of the project to set in package.json.\n */\n projectName: string\n}): Promise<void> {\n const { latestVersion, projectDir, projectName } = args\n const packageJsonPath = path.resolve(projectDir, 'package.json')\n try {\n const packageObj = await fse.readJson(packageJsonPath)\n packageObj.name = projectName\n\n updatePackageJSONDependencies({\n latestVersion,\n packageJson: packageObj,\n })\n\n await fse.writeJson(packageJsonPath, packageObj, { spaces: 2 })\n } catch (err: unknown) {\n warning(`Unable to update name in package.json. ${err instanceof Error ? err.message : ''}`)\n }\n}\n\n/**\n * Recursively updates a JSON object to replace all instances of `workspace:` with the latest version pinned.\n *\n * Does not return and instead modifies the `packageJson` object in place.\n */\nexport function updatePackageJSONDependencies(args: {\n latestVersion: string\n packageJson: Record<string, unknown>\n}): void {\n const { latestVersion, packageJson } = args\n\n const updatedDependencies = Object.entries(packageJson.dependencies || {}).reduce(\n (acc, [key, value]) => {\n if (typeof value === 'string' && value.startsWith('workspace:')) {\n acc[key] = `${latestVersion}`\n } else if (key === 'payload' || key.startsWith('@payloadcms')) {\n acc[key] = `${latestVersion}`\n } else {\n acc[key] = value\n }\n return acc\n },\n {} as Record<string, string>,\n )\n packageJson.dependencies = updatedDependencies\n}\n"],"names":["p","chalk","execa","fse","fileURLToPath","path","tryInitRepoAndCommit","debug","error","info","warning","DEFAULT_PAYLOAD_VERSION_TAG","resolvePackageVersion","configurePayloadConfig","configurePluginProject","downloadExample","downloadSkill","downloadTemplate","generateSecret","manageEnvFiles","getAgentChoice","filename","url","dirname","createOrFindProjectDir","projectDir","pathExists","mkdir","installDeps","args","cliArgs","packageManager","installCmd","command","cwd","resolve","err","Error","message","createProject","agentType","dbDetails","projectName","green","localExample","copy","localTemplate","template","split","example","versionOrTag","spinner","start","payloadVersion","packageName","stop","updatePackageJSON","latestVersion","type","projectDirPath","dbType","projectDirOrConfigPath","databaseType","databaseUri","dbUri","payloadSecret","undefined","branch","configFile","skillsDir","skillPath","configContent","writeFile","result","packageJsonPath","packageObj","readJson","name","updatePackageJSONDependencies","packageJson","writeJson","spaces","updatedDependencies","Object","entries","dependencies","reduce","acc","key","value","startsWith"],"mappings":"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"}
1
+ {"version":3,"sources":["../../src/lib/create-project.ts"],"sourcesContent":["import * as p from '@clack/prompts'\nimport chalk from 'chalk'\nimport execa from 'execa'\nimport fse from 'fs-extra'\nimport { fileURLToPath } from 'node:url'\nimport path from 'path'\n\nimport type {\n AgentType,\n CliArgs,\n DbDetails,\n PackageManager,\n ProjectExample,\n ProjectTemplate,\n} from '../types.js'\n\nimport { tryInitRepoAndCommit } from '../utils/git.js'\nimport { debug, error, info, warning } from '../utils/log.js'\nimport {\n DEFAULT_PAYLOAD_VERSION_TAG,\n resolvePackageVersion,\n} from '../utils/resolvePackageVersion.js'\nimport { configurePayloadConfig } from './configure-payload-config.js'\nimport { configurePluginProject } from './configure-plugin-project.js'\nimport { ensurePnpmBuildApprovals } from './configure-pnpm-builds.js'\nimport { downloadExample } from './download-example.js'\nimport { downloadSkill } from './download-skill.js'\nimport { downloadTemplate } from './download-template.js'\nimport { generateSecret } from './generate-secret.js'\nimport { manageEnvFiles } from './manage-env-files.js'\nimport { getAgentChoice } from './select-agent.js'\n\nconst filename = fileURLToPath(import.meta.url)\nconst dirname = path.dirname(filename)\n\nasync function createOrFindProjectDir(projectDir: string): Promise<void> {\n const pathExists = await fse.pathExists(projectDir)\n if (!pathExists) {\n await fse.mkdir(projectDir)\n }\n}\n\nasync function installDeps(args: {\n cliArgs: CliArgs\n packageManager: PackageManager\n projectDir: string\n}): Promise<boolean> {\n const { cliArgs, packageManager, projectDir } = args\n if (cliArgs['--no-deps']) {\n return true\n }\n let installCmd = 'npm install --legacy-peer-deps'\n\n if (packageManager === 'yarn') {\n installCmd = 'yarn'\n } else if (packageManager === 'pnpm') {\n installCmd = 'pnpm install'\n } else if (packageManager === 'bun') {\n installCmd = 'bun install'\n }\n\n await ensurePnpmBuildApprovals({ packageManager, projectDir })\n\n try {\n await execa.command(installCmd, {\n cwd: path.resolve(projectDir),\n })\n return true\n } catch (err: unknown) {\n error(`Error installing dependencies${err instanceof Error ? `: ${err.message}` : ''}.`)\n return false\n }\n}\n\ntype TemplateOrExample =\n | {\n example: ProjectExample\n }\n | {\n template: ProjectTemplate\n }\n\nexport async function createProject(\n args: {\n agentType?: AgentType\n cliArgs: CliArgs\n dbDetails?: DbDetails\n packageManager: PackageManager\n projectDir: string\n projectName: string\n } & TemplateOrExample,\n): Promise<void> {\n const { agentType, cliArgs, dbDetails, packageManager, projectDir, projectName } = args\n\n if (cliArgs['--dry-run']) {\n debug(`Dry run: Creating project in ${chalk.green(projectDir)}`)\n return\n }\n\n await createOrFindProjectDir(projectDir)\n\n if (cliArgs['--local-example']) {\n // Copy example from local path. For development purposes.\n const localExample = path.resolve(dirname, '../../../../examples/', cliArgs['--local-example'])\n await fse.copy(localExample, projectDir)\n }\n\n if (cliArgs['--local-template']) {\n // Copy template from local path. For development purposes.\n const localTemplate = path.resolve(\n dirname,\n '../../../../templates/',\n cliArgs['--local-template'],\n )\n await fse.copy(localTemplate, projectDir)\n } else if ('template' in args && 'url' in args.template) {\n const { template } = args\n if (cliArgs['--branch']) {\n template.url = `${template.url.split('#')?.[0]}#${cliArgs['--branch']}`\n }\n\n await downloadTemplate({\n debug: cliArgs['--debug'],\n projectDir,\n template,\n })\n } else if ('example' in args && 'url' in args.example) {\n const { example } = args\n if (cliArgs['--branch']) {\n example.url = `${example.url.split('#')?.[0]}#${cliArgs['--branch']}`\n }\n\n await downloadExample({\n debug: cliArgs['--debug'],\n example,\n projectDir,\n })\n }\n\n const versionOrTag = cliArgs['--payload-version'] ?? DEFAULT_PAYLOAD_VERSION_TAG\n\n const spinner = p.spinner()\n spinner.start(`Resolving Payload version (${versionOrTag})...`)\n\n const payloadVersion = await resolvePackageVersion({\n packageName: 'payload',\n versionOrTag,\n })\n\n spinner.stop(`Using Payload version ${payloadVersion}`)\n\n await updatePackageJSON({ latestVersion: payloadVersion, projectDir, projectName })\n\n if ('template' in args) {\n if (args.template.type === 'plugin') {\n spinner.message('Configuring Plugin...')\n configurePluginProject({ projectDirPath: projectDir, projectName })\n } else {\n spinner.message('Configuring Payload...')\n await configurePayloadConfig({\n dbType: dbDetails?.type,\n projectDirOrConfigPath: { projectDir },\n })\n }\n }\n\n await manageEnvFiles({\n cliArgs,\n databaseType: dbDetails?.type,\n databaseUri: dbDetails?.dbUri,\n payloadSecret: generateSecret(),\n projectDir,\n template: 'template' in args ? args.template : undefined,\n })\n\n if (agentType) {\n spinner.message('Installing agent skill...')\n try {\n await downloadSkill({\n agentType,\n branch: cliArgs['--branch'] || undefined,\n debug: cliArgs['--debug'],\n projectDir,\n })\n\n const { configFile, skillsDir } = getAgentChoice(agentType)\n const skillPath = `${skillsDir}/payload`\n const configContent =\n configFile === 'CLAUDE.md'\n ? `# Claude Code\\n\\nThis project uses the Payload CMS skill at \\`${skillPath}/\\`.\\nStart with \\`${skillPath}/SKILL.md\\` for a quick reference, then see \\`${skillPath}/reference/\\` for detailed docs.\\n`\n : `# Agents\\n\\nThis project uses the Payload CMS skill at \\`${skillPath}/\\`.\\nStart with \\`${skillPath}/SKILL.md\\` for a quick reference, then see \\`${skillPath}/reference/\\` for detailed docs.\\n`\n await fse.writeFile(path.resolve(projectDir, configFile), configContent)\n } catch (err) {\n if (cliArgs['--debug'] && err instanceof Error) {\n debug(`Failed to download skill: ${err.message}`)\n }\n warning('Could not download agent skill. You can install it manually later.')\n }\n }\n\n if (!cliArgs['--no-deps']) {\n info(`Using ${packageManager}.\\n`)\n spinner.message('Installing dependencies...')\n const result = await installDeps({ cliArgs, packageManager, projectDir })\n if (result) {\n spinner.stop('Successfully installed Payload and dependencies')\n } else {\n spinner.stop('Error installing dependencies', 1)\n }\n } else {\n spinner.stop('Dependency installation skipped')\n }\n\n if (!cliArgs['--no-git']) {\n tryInitRepoAndCommit({ cwd: projectDir })\n }\n}\n\n/**\n * Reads the package.json file into an object and then does the following:\n * - Sets the `name` property to the provided `projectName`.\n * - Bumps the payload packages from workspace:* to the latest version.\n * - Writes the updated object back to the package.json file.\n */\nexport async function updatePackageJSON(args: {\n /**\n * The latest version of Payload to use in the package.json.\n */\n latestVersion: string\n projectDir: string\n /**\n * The name of the project to set in package.json.\n */\n projectName: string\n}): Promise<void> {\n const { latestVersion, projectDir, projectName } = args\n const packageJsonPath = path.resolve(projectDir, 'package.json')\n try {\n const packageObj = await fse.readJson(packageJsonPath)\n packageObj.name = projectName\n\n updatePackageJSONDependencies({\n latestVersion,\n packageJson: packageObj,\n })\n\n await fse.writeJson(packageJsonPath, packageObj, { spaces: 2 })\n } catch (err: unknown) {\n warning(`Unable to update name in package.json. ${err instanceof Error ? err.message : ''}`)\n }\n}\n\n/**\n * Recursively updates a JSON object to replace all instances of `workspace:` with the latest version pinned.\n *\n * Does not return and instead modifies the `packageJson` object in place.\n */\nexport function updatePackageJSONDependencies(args: {\n latestVersion: string\n packageJson: Record<string, unknown>\n}): void {\n const { latestVersion, packageJson } = args\n\n const updatedDependencies = Object.entries(packageJson.dependencies || {}).reduce(\n (acc, [key, value]) => {\n if (typeof value === 'string' && value.startsWith('workspace:')) {\n acc[key] = `${latestVersion}`\n } else if (key === 'payload' || key.startsWith('@payloadcms')) {\n acc[key] = `${latestVersion}`\n } else {\n acc[key] = value\n }\n return acc\n },\n {} as Record<string, string>,\n )\n packageJson.dependencies = updatedDependencies\n}\n"],"names":["p","chalk","execa","fse","fileURLToPath","path","tryInitRepoAndCommit","debug","error","info","warning","DEFAULT_PAYLOAD_VERSION_TAG","resolvePackageVersion","configurePayloadConfig","configurePluginProject","ensurePnpmBuildApprovals","downloadExample","downloadSkill","downloadTemplate","generateSecret","manageEnvFiles","getAgentChoice","filename","url","dirname","createOrFindProjectDir","projectDir","pathExists","mkdir","installDeps","args","cliArgs","packageManager","installCmd","command","cwd","resolve","err","Error","message","createProject","agentType","dbDetails","projectName","green","localExample","copy","localTemplate","template","split","example","versionOrTag","spinner","start","payloadVersion","packageName","stop","updatePackageJSON","latestVersion","type","projectDirPath","dbType","projectDirOrConfigPath","databaseType","databaseUri","dbUri","payloadSecret","undefined","branch","configFile","skillsDir","skillPath","configContent","writeFile","result","packageJsonPath","packageObj","readJson","name","updatePackageJSONDependencies","packageJson","writeJson","spaces","updatedDependencies","Object","entries","dependencies","reduce","acc","key","value","startsWith"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"init-next.d.ts","sourceRoot":"","sources":["../../src/lib/init-next.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,cAAc,EAAkB,cAAc,EAAE,MAAM,aAAa,CAAA;AAkBlG,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,CAqE1E;AA4ID,wBAAsB,iBAAiB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,CA2FnF"}
1
+ {"version":3,"file":"init-next.d.ts","sourceRoot":"","sources":["../../src/lib/init-next.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,cAAc,EAAkB,cAAc,EAAE,MAAM,aAAa,CAAA;AAmBlG,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,CAqE1E;AA8ID,wBAAsB,iBAAiB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,CA2FnF"}
@@ -10,6 +10,7 @@ import { copyRecursiveSync } from '../utils/copy-recursive-sync.js';
10
10
  import { debug as origDebug, warning } from '../utils/log.js';
11
11
  import { moveMessage } from '../utils/messages.js';
12
12
  import { DEFAULT_PAYLOAD_VERSION_TAG, resolvePackageVersion } from '../utils/resolvePackageVersion.js';
13
+ import { ensurePnpmBuildApprovals } from './configure-pnpm-builds.js';
13
14
  import { installPackages } from './install-packages.js';
14
15
  import { wrapNextConfig } from './wrap-next-config.js';
15
16
  const readFile = promisify(fs.readFile);
@@ -182,6 +183,10 @@ async function installDeps(args) {
182
183
  packagesToInstall.push(`${getDbPackageName(dbType)}@${version}`);
183
184
  // Match graphql version of @payloadcms/next
184
185
  packagesToInstall.push('graphql@^16.8.1');
186
+ await ensurePnpmBuildApprovals({
187
+ packageManager,
188
+ projectDir
189
+ });
185
190
  return await installPackages({
186
191
  packageManager,
187
192
  packagesToInstall,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/lib/init-next.ts"],"sourcesContent":["import type { CompilerOptions } from 'typescript'\n\nimport * as p from '@clack/prompts'\nimport { parse, stringify } from 'comment-json'\nimport fs from 'fs'\nimport fse from 'fs-extra'\nimport globby from 'globby'\nimport { fileURLToPath } from 'node:url'\nimport path from 'path'\nimport { promisify } from 'util'\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 { installPackages } from './install-packages.js'\nimport { wrapNextConfig } from './wrap-next-config.js'\n\nconst readFile = promisify(fs.readFile)\nconst writeFile = promisify(fs.writeFile)\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 // Add `@payload-config` to tsconfig.json `paths`\n await addPayloadConfigToTsConfig(projectDir, isSrcDir)\n installSpinner.stop('Successfully installed Payload and dependencies')\n return { ...configurationResult, isSrcDir, nextAppDir, success: true }\n}\n\nasync function addPayloadConfigToTsConfig(projectDir: string, isSrcDir: boolean) {\n const tsConfigPath = path.resolve(projectDir, 'tsconfig.json')\n\n // Check if tsconfig.json exists\n if (!fs.existsSync(tsConfigPath)) {\n warning(`Could not find tsconfig.json to add @payload-config path.`)\n return\n }\n const userTsConfigContent = await readFile(tsConfigPath, {\n encoding: 'utf8',\n })\n const userTsConfig = parse(userTsConfigContent) as {\n compilerOptions?: CompilerOptions\n }\n\n const hasBaseUrl =\n userTsConfig?.compilerOptions?.baseUrl && userTsConfig?.compilerOptions?.baseUrl !== '.'\n const baseUrl = hasBaseUrl ? userTsConfig?.compilerOptions?.baseUrl : './'\n\n if (!userTsConfig.compilerOptions && !('extends' in userTsConfig)) {\n userTsConfig.compilerOptions = {}\n }\n\n if (\n !userTsConfig.compilerOptions?.paths?.['@payload-config'] &&\n userTsConfig.compilerOptions?.paths\n ) {\n userTsConfig.compilerOptions.paths = {\n ...(userTsConfig.compilerOptions.paths || {}),\n '@payload-config': [`${baseUrl}${isSrcDir ? 'src/' : ''}payload.config.ts`],\n }\n await writeFile(tsConfigPath, stringify(userTsConfig, null, 2), { encoding: 'utf8' })\n }\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 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","parse","stringify","fs","fse","globby","fileURLToPath","path","promisify","copyRecursiveSync","debug","origDebug","warning","moveMessage","DEFAULT_PAYLOAD_VERSION_TAG","resolvePackageVersion","installPackages","wrapNextConfig","readFile","writeFile","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","addPayloadConfigToTsConfig","tsConfigPath","existsSync","userTsConfigContent","encoding","userTsConfig","hasBaseUrl","compilerOptions","baseUrl","paths","nextConfigPath","logDebug","message","templateFilesPath","endsWith","templateSrcDir","payloadConfigPath","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":"AAEA,YAAYA,OAAO,iBAAgB;AACnC,SAASC,KAAK,EAAEC,SAAS,QAAQ,eAAc;AAC/C,OAAOC,QAAQ,KAAI;AACnB,OAAOC,SAAS,WAAU;AAC1B,OAAOC,YAAY,SAAQ;AAC3B,SAASC,aAAa,QAAQ,WAAU;AACxC,OAAOC,UAAU,OAAM;AACvB,SAASC,SAAS,QAAQ,OAAM;AAIhC,SAASC,iBAAiB,QAAQ,kCAAiC;AACnE,SAASC,SAASC,SAAS,EAAEC,OAAO,QAAQ,kBAAiB;AAC7D,SAASC,WAAW,QAAQ,uBAAsB;AAClD,SACEC,2BAA2B,EAC3BC,qBAAqB,QAChB,oCAAmC;AAC1C,SAASC,eAAe,QAAQ,wBAAuB;AACvD,SAASC,cAAc,QAAQ,wBAAuB;AAEtD,MAAMC,WAAWV,UAAUL,GAAGe,QAAQ;AACtC,MAAMC,YAAYX,UAAUL,GAAGgB,SAAS;AAExC,MAAMC,WAAWd,cAAc,YAAYe,GAAG;AAC9C,MAAMC,UAAUf,KAAKe,OAAO,CAACF;AAmB7B,OAAO,eAAeG,SAASC,IAAkB;IAC/C,MAAM,EAAEC,QAAQA,MAAM,EAAEC,cAAc,EAAEC,UAAU,EAAE,GAAGH;IAEvD,MAAMI,iBAAiBJ,KAAKI,cAAc,IAAK,MAAMC,kBAAkBF;IAEvE,IAAI,CAACC,eAAeE,UAAU,EAAE;QAC9BlB,QAAQ,CAAC,gCAAgC,EAAEe,WAAW,aAAa,CAAC;QACpE,MAAMI,gBAAgBxB,KAAKyB,OAAO,CAACL,YAAYC,eAAeK,QAAQ,GAAG,YAAY;QACrF7B,IAAI8B,SAAS,CAACH,eAAe;YAAEI,WAAW;QAAK;QAC/CP,eAAeE,UAAU,GAAGC;IAC9B;IAEA,MAAM,EAAEK,iBAAiB,EAAEH,QAAQ,EAAEH,UAAU,EAAEO,cAAc,EAAE,GAAGT;IAEpE,IAAI,CAACS,gBAAgB;QACnB,OAAO;YACLJ;YACAH;YACAQ,QAAQ,CAAC,wCAAwC,EAAEX,WAAW,6EAA6E,CAAC;YAC5IY,SAAS;QACX;IACF;IAEA,IAAIH,mBAAmB;QACrB,6FAA6F;QAC7FpC,EAAEwC,GAAG,CAACC,IAAI,CAAC5B,YAAY;YAAEiB;YAAYH;QAAW;QAChD,OAAO;YACLM;YACAH;YACAQ,QAAQ;YACRC,SAAS;QACX;IACF;IAEA,MAAMG,iBAAiB1C,EAAE2C,OAAO;IAChCD,eAAeE,KAAK,CAAC;IAErB,MAAMC,sBAAsB,MAAMC,2BAA2B;QAC3D,GAAGtB,IAAI;QACPI;QACAS;QACAU,cAAc;IAChB;IAEA,IAAIF,oBAAoBN,OAAO,KAAK,OAAO;QACzCG,eAAeM,IAAI,CAACH,oBAAoBP,MAAM,EAAE;QAChD,OAAO;YAAE,GAAGO,mBAAmB;YAAEZ;YAAUM,SAAS;QAAM;IAC5D;IAEA,MAAM,EAAEA,SAASU,cAAc,EAAE,GAAG,MAAMC,YAAY;QACpDzB;QACAC;QACAC;QACAwB,cAAc3B,IAAI,CAAC,oBAAoB,IAAIV;IAC7C;IACA,IAAI,CAACmC,gBAAgB;QACnBP,eAAeM,IAAI,CAAC,kCAAkC;QACtD,OAAO;YACL,GAAGH,mBAAmB;YACtBZ;YACAK,QAAQ;YACRC,SAAS;QACX;IACF;IAEA,iDAAiD;IACjD,MAAMa,2BAA2BzB,YAAYM;IAC7CS,eAAeM,IAAI,CAAC;IACpB,OAAO;QAAE,GAAGH,mBAAmB;QAAEZ;QAAUH;QAAYS,SAAS;IAAK;AACvE;AAEA,eAAea,2BAA2BzB,UAAkB,EAAEM,QAAiB;IAC7E,MAAMoB,eAAe9C,KAAKyB,OAAO,CAACL,YAAY;IAE9C,gCAAgC;IAChC,IAAI,CAACxB,GAAGmD,UAAU,CAACD,eAAe;QAChCzC,QAAQ,CAAC,yDAAyD,CAAC;QACnE;IACF;IACA,MAAM2C,sBAAsB,MAAMrC,SAASmC,cAAc;QACvDG,UAAU;IACZ;IACA,MAAMC,eAAexD,MAAMsD;IAI3B,MAAMG,aACJD,cAAcE,iBAAiBC,WAAWH,cAAcE,iBAAiBC,YAAY;IACvF,MAAMA,UAAUF,aAAaD,cAAcE,iBAAiBC,UAAU;IAEtE,IAAI,CAACH,aAAaE,eAAe,IAAI,CAAE,CAAA,aAAaF,YAAW,GAAI;QACjEA,aAAaE,eAAe,GAAG,CAAC;IAClC;IAEA,IACE,CAACF,aAAaE,eAAe,EAAEE,OAAO,CAAC,kBAAkB,IACzDJ,aAAaE,eAAe,EAAEE,OAC9B;QACAJ,aAAaE,eAAe,CAACE,KAAK,GAAG;YACnC,GAAIJ,aAAaE,eAAe,CAACE,KAAK,IAAI,CAAC,CAAC;YAC5C,mBAAmB;gBAAC,GAAGD,UAAU3B,WAAW,SAAS,GAAG,iBAAiB,CAAC;aAAC;QAC7E;QACA,MAAMd,UAAUkC,cAAcnD,UAAUuD,cAAc,MAAM,IAAI;YAAED,UAAU;QAAO;IACrF;AACF;AAEA,eAAeV,2BACbtB,IAIgB;IAKhB,MAAM,EACJ,WAAWd,KAAK,EAChBkB,gBAAgB,EAAEK,QAAQ,EAAEH,UAAU,EAAEgC,cAAc,EAAE,GAAG,CAAC,CAAC,EAC7DzB,cAAc,EACdV,UAAU,EACVoB,YAAY,EACb,GAAGvB;IAEJ,IAAI,CAACM,cAAc,CAACgC,gBAAgB;QAClC,OAAO;YACLxB,QAAQ;YACRC,SAAS;QACX;IACF;IAEA,MAAMwB,WAAW,CAACC;QAChB,IAAItD,OAAO;YACTC,UAAUqD;QACZ;IACF;IAEA,IAAI,CAAC7D,GAAGmD,UAAU,CAAC3B,aAAa;QAC9B,OAAO;YACLW,QAAQ,CAAC,8CAA8C,EAAEX,YAAY;YACrEY,SAAS;QACX;IACF;IAEA,MAAM0B,oBACJ3C,QAAQ4C,QAAQ,CAAC,WAAWnB,eACxBxC,KAAKyB,OAAO,CAACV,SAAS,SAAS,mBAC/Bf,KAAKyB,OAAO,CAACV,SAAS;IAE5ByC,SAAS,CAAC,2BAA2B,EAAEE,mBAAmB;IAE1D,IAAI,CAAC9D,GAAGmD,UAAU,CAACW,oBAAoB;QACrC,OAAO;YACL3B,QAAQ,CAAC,0CAA0C,EAAE2B,mBAAmB;YACxE1B,SAAS;QACX;IACF,OAAO;QACLwB,SAAS;IACX;IAEAA,SAAS,CAAC,4BAA4B,EAAEE,kBAAkB,IAAI,EAAEnC,YAAY;IAE5E,MAAMqC,iBAAiB5D,KAAKyB,OAAO,CAACiC,mBAAmBhC,WAAW,KAAK;IAEvE8B,SAAS,CAAC,gBAAgB,EAAEI,gBAAgB;IAC5CJ,SAAS,CAAC,YAAY,EAAEjC,YAAY;IACpCiC,SAAS,CAAC,YAAY,EAAEpC,YAAY;IACpCoC,SAAS,CAAC,gBAAgB,EAAED,gBAAgB;IAC5CC,SAAS,CAAC,mBAAmB,EAAExD,KAAKyB,OAAO,CAACL,YAAY,sBAAsB;IAE9EoC,SACE,CAAC,UAAU,EAAE9B,SAAS,UAAU,EAAEkC,eAAe,QAAQ,EAAE5D,KAAKe,OAAO,CAACwC,iBAAiB;IAG3F,4DAA4D;IAC5DrD,kBAAkB0D,gBAAgB5D,KAAKe,OAAO,CAACwC;IAE/C,uCAAuC;IACvC,MAAM7C,eAAe;QAAE6C;QAAgBzB;IAAe;IAEtD,OAAO;QACL+B,mBAAmB7D,KAAKyB,OAAO,CAACF,YAAY;QAC5CS,SAAS;IACX;AACF;AAEA,eAAeW,YAAY1B,IAK1B;IACC,MAAM,EAAEC,MAAM,EAAEC,cAAc,EAAEC,UAAU,EAAEwB,YAAY,EAAE,GAAG3B;IAC7D,MAAM,EAAE6C,gBAAgB,EAAE,GAAG,MAAM,MAAM,CAAC;IAE1C,MAAMC,UAAU,MAAMvD,sBAAsB;QAAEwD,aAAa;QAAWpB;IAAa;IAEnF,MAAMqB,oBAAoB;QAAC;QAAW;QAAoB;KAA+B,CAACC,GAAG,CAC3F,CAACC,MAAQ,GAAGA,IAAI,CAAC,EAAEJ,SAAS;IAG9BE,kBAAkBG,IAAI,CAAC,GAAGN,iBAAiB5C,QAAQ,CAAC,EAAE6C,SAAS;IAE/D,4CAA4C;IAC5CE,kBAAkBG,IAAI,CAAC;IAEvB,OAAO,MAAM3D,gBAAgB;QAAEU;QAAgB8C;QAAmB7C;IAAW;AAC/E;AAEA,OAAO,eAAeE,kBAAkBF,UAAkB;IACxD,MAAMM,WAAW9B,GAAGmD,UAAU,CAAC/C,KAAKyB,OAAO,CAACL,YAAY;IAExD,yEAAyE;IACzE,MAAMmC,iBACJ,CAAA,MAAMzD,OAAO,4BAA4B;QAAEuE,UAAU;QAAMC,KAAKlD;IAAW,EAAC,GAC3E,CAAC,EAAE;IAEN,IAAI,CAACmC,kBAAkBA,eAAegB,MAAM,KAAK,GAAG;QAClD,OAAO;YACL1C,mBAAmB;YACnBH;YACA8C,wBAAwB;YACxBjB,gBAAgBkB;YAChBC,aAAa;QACf;IACF;IAEA,MAAMC,aAAa,MAAM9E,IAAI+E,QAAQ,CAAC5E,KAAKyB,OAAO,CAACL,YAAY;IAC/D,yCAAyC;IACzC,IAAIsD,cAAc;IAClB,IAAIC,WAAWE,YAAY,EAAEC,MAAM;QACjCJ,cAAcC,WAAWE,YAAY,CAACC,IAAI;QAC1C,6CAA6C;QAC7C,MAAMC,eAAe,gBAAgBC,IAAI,CAACN;QAC1C,IAAI,CAACK,cAAc;YACjBtF,EAAEwC,GAAG,CAACC,IAAI,CAAC,CAAC,yCAAyC,EAAEwC,aAAa;YACpE,OAAO;gBACL7C,mBAAmB;gBACnBH;gBACA8C,wBAAwB;gBACxBjB;gBACAmB;YACF;QACF;QAEA,MAAM,EAAEO,KAAK,EAAE,GAAGF,aAAaG,MAAM;QACrC,MAAMC,eAAeC,SAASH;QAC9B,IAAIE,eAAe,IAAI;YACrB,OAAO;gBACLtD,mBAAmB;gBACnBH;gBACA8C,wBAAwB;gBACxBjB;gBACAmB;YACF;QACF;IACF;IAEA,MAAMF,yBAAyB;IAE/B,qCAAqC;IACrC,IAAIG,WAAWE,YAAY,EAAEQ,SAAS;QACpC,OAAO;YACLxD,mBAAmB;YACnByD,oBAAoB;YACpB5D;YACA8C;YACAjB;YACAmB;QACF;IACF;IAEA,IAAInD,aACF,CAAA,MAAMzB,OAAO;QAAC;KAAS,EAAE;QACvBuE,UAAU;QACVC,KAAKlD;QACLmE,QAAQ;YAAC;SAAqB;QAC9BC,iBAAiB;IACnB,EAAC,GACA,CAAC,EAAE;IAEN,IAAI,CAACjE,cAAcA,WAAWgD,MAAM,KAAK,GAAG;QAC1ChD,aAAakD;IACf;IAEA,MAAMgB,aAAaC,eAAe;QAAEnC;QAAgBoB;IAAW;IAE/D,MAAM9C,oBAAoBN,aACtB3B,GAAGmD,UAAU,CAAC/C,KAAKyB,OAAO,CAACF,YAAY,iBACvC;IAEJ,OAAO;QACLM;QACAH;QACA8C;QACAjD;QACAgC;QACAzB,gBAAgB2D;QAChBf;IACF;AACF;AAEA,SAASgB,eAAezE,IAGvB;IACC,MAAM,EAAEsC,cAAc,EAAEoB,UAAU,EAAE,GAAG1D;IAEvC,IAAIsC,eAAeI,QAAQ,CAAC,QAAQ;QAClC,OAAO;IACT;IAEA,IAAIJ,eAAeI,QAAQ,CAAC,SAAS;QACnC,OAAO;IACT;IACA,IAAIJ,eAAeI,QAAQ,CAAC,SAAS;QACnC,OAAO;IACT;IAEA,MAAMgC,kBAAkBhB,WAAWiB,IAAI;IACvC,IAAID,oBAAoB,UAAU;QAChC,OAAO;IACT;IACA,IAAIA,oBAAoB,YAAY;QAClC,OAAO;IACT;IAEA,OAAO;AACT"}
1
+ {"version":3,"sources":["../../src/lib/init-next.ts"],"sourcesContent":["import type { CompilerOptions } from 'typescript'\n\nimport * as p from '@clack/prompts'\nimport { parse, stringify } from 'comment-json'\nimport fs from 'fs'\nimport fse from 'fs-extra'\nimport globby from 'globby'\nimport { fileURLToPath } from 'node:url'\nimport path from 'path'\nimport { promisify } from 'util'\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 { ensurePnpmBuildApprovals } from './configure-pnpm-builds.js'\nimport { installPackages } from './install-packages.js'\nimport { wrapNextConfig } from './wrap-next-config.js'\n\nconst readFile = promisify(fs.readFile)\nconst writeFile = promisify(fs.writeFile)\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 // Add `@payload-config` to tsconfig.json `paths`\n await addPayloadConfigToTsConfig(projectDir, isSrcDir)\n installSpinner.stop('Successfully installed Payload and dependencies')\n return { ...configurationResult, isSrcDir, nextAppDir, success: true }\n}\n\nasync function addPayloadConfigToTsConfig(projectDir: string, isSrcDir: boolean) {\n const tsConfigPath = path.resolve(projectDir, 'tsconfig.json')\n\n // Check if tsconfig.json exists\n if (!fs.existsSync(tsConfigPath)) {\n warning(`Could not find tsconfig.json to add @payload-config path.`)\n return\n }\n const userTsConfigContent = await readFile(tsConfigPath, {\n encoding: 'utf8',\n })\n const userTsConfig = parse(userTsConfigContent) as {\n compilerOptions?: CompilerOptions\n }\n\n const hasBaseUrl =\n userTsConfig?.compilerOptions?.baseUrl && userTsConfig?.compilerOptions?.baseUrl !== '.'\n const baseUrl = hasBaseUrl ? userTsConfig?.compilerOptions?.baseUrl : './'\n\n if (!userTsConfig.compilerOptions && !('extends' in userTsConfig)) {\n userTsConfig.compilerOptions = {}\n }\n\n if (\n !userTsConfig.compilerOptions?.paths?.['@payload-config'] &&\n userTsConfig.compilerOptions?.paths\n ) {\n userTsConfig.compilerOptions.paths = {\n ...(userTsConfig.compilerOptions.paths || {}),\n '@payload-config': [`${baseUrl}${isSrcDir ? 'src/' : ''}payload.config.ts`],\n }\n await writeFile(tsConfigPath, stringify(userTsConfig, null, 2), { encoding: 'utf8' })\n }\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","parse","stringify","fs","fse","globby","fileURLToPath","path","promisify","copyRecursiveSync","debug","origDebug","warning","moveMessage","DEFAULT_PAYLOAD_VERSION_TAG","resolvePackageVersion","ensurePnpmBuildApprovals","installPackages","wrapNextConfig","readFile","writeFile","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","addPayloadConfigToTsConfig","tsConfigPath","existsSync","userTsConfigContent","encoding","userTsConfig","hasBaseUrl","compilerOptions","baseUrl","paths","nextConfigPath","logDebug","message","templateFilesPath","endsWith","templateSrcDir","payloadConfigPath","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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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "create-payload-app",
3
- "version": "4.0.0-internal.2fddfc0",
3
+ "version": "4.0.0-internal.3aa3d85",
4
4
  "homepage": "https://payloadcms.com",
5
5
  "repository": {
6
6
  "type": "git",