create-payload-app 3.0.0-canary.c696728 → 3.0.0-canary.c96fa61
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/constants.d.ts +2 -0
- package/dist/lib/constants.d.ts.map +1 -0
- package/dist/lib/constants.js +9 -0
- package/dist/lib/constants.js.map +1 -0
- package/dist/lib/create-project.js +1 -1
- package/dist/lib/create-project.js.map +1 -1
- package/dist/lib/get-package-manager.js +1 -1
- package/dist/lib/get-package-manager.js.map +1 -1
- package/dist/lib/init-next.js +1 -1
- package/dist/lib/init-next.js.map +1 -1
- package/dist/lib/replacements.js +2 -2
- package/dist/lib/replacements.js.map +1 -1
- package/dist/lib/select-db.js +1 -1
- package/dist/lib/select-db.js.map +1 -1
- package/dist/lib/templates.d.ts.map +1 -1
- package/dist/lib/templates.js +3 -2
- package/dist/lib/templates.js.map +1 -1
- package/dist/lib/write-env-file.d.ts +2 -1
- package/dist/lib/write-env-file.d.ts.map +1 -1
- package/dist/lib/write-env-file.js +5 -2
- package/dist/lib/write-env-file.js.map +1 -1
- package/dist/main.d.ts.map +1 -1
- package/dist/main.js +8 -1
- package/dist/main.js.map +1 -1
- package/dist/template/src/app/(payload)/admin/[[...segments]]/not-found.tsx +5 -5
- package/dist/template/src/app/(payload)/admin/[[...segments]]/page.tsx +5 -5
- package/dist/template/src/app/(payload)/api/[...slug]/route.ts +11 -2
- package/dist/template/src/app/(payload)/api/graphql/route.ts +4 -2
- package/dist/template/src/app/(payload)/api/graphql-playground/route.ts +2 -1
- package/dist/template/src/app/(payload)/layout.tsx +15 -5
- package/package.json +1 -1
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/lib/constants.ts"],"names":[],"mappings":"AAOA,eAAO,MAAM,eAAe,KAAsB,CAAA"}
|
@@ -0,0 +1,9 @@
|
|
1
|
+
import { readFileSync } from 'fs';
|
2
|
+
import { fileURLToPath } from 'node:url';
|
3
|
+
import path from 'path';
|
4
|
+
const filename = fileURLToPath(import.meta.url);
|
5
|
+
const dirname = path.dirname(filename);
|
6
|
+
const packageJson = JSON.parse(readFileSync(path.resolve(dirname, '../../package.json'), 'utf-8'));
|
7
|
+
export const PACKAGE_VERSION = packageJson.version;
|
8
|
+
|
9
|
+
//# sourceMappingURL=constants.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"sources":["../../src/lib/constants.ts"],"sourcesContent":["import { readFileSync } from 'fs'\nimport { fileURLToPath } from 'node:url'\nimport path from 'path'\nconst filename = fileURLToPath(import.meta.url)\nconst dirname = path.dirname(filename)\n\nconst packageJson = JSON.parse(readFileSync(path.resolve(dirname, '../../package.json'), 'utf-8'))\nexport const PACKAGE_VERSION = packageJson.version\n"],"names":["readFileSync","fileURLToPath","path","filename","url","dirname","packageJson","JSON","parse","resolve","PACKAGE_VERSION","version"],"mappings":"AAAA,SAASA,YAAY,QAAQ,KAAI;AACjC,SAASC,aAAa,QAAQ,WAAU;AACxC,OAAOC,UAAU,OAAM;AACvB,MAAMC,WAAWF,cAAc,YAAYG,GAAG;AAC9C,MAAMC,UAAUH,KAAKG,OAAO,CAACF;AAE7B,MAAMG,cAAcC,KAAKC,KAAK,CAACR,aAAaE,KAAKO,OAAO,CAACJ,SAAS,uBAAuB;AACzF,OAAO,MAAMK,kBAAkBJ,YAAYK,OAAO,CAAA"}
|
@@ -76,7 +76,7 @@ export async function createProject(args) {
|
|
76
76
|
}
|
77
77
|
});
|
78
78
|
// Remove yarn.lock file. This is only desired in Payload Cloud.
|
79
|
-
const lockPath = path.resolve(projectDir, '
|
79
|
+
const lockPath = path.resolve(projectDir, 'pnpm-lock.yaml');
|
80
80
|
if (fse.existsSync(lockPath)) {
|
81
81
|
await fse.remove(lockPath);
|
82
82
|
}
|
@@ -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 { CliArgs, DbDetails, PackageManager, ProjectTemplate } from '../types.js'\n\nimport { tryInitRepoAndCommit } from '../utils/git.js'\nimport { debug, error, info, warning } from '../utils/log.js'\nimport { configurePayloadConfig } from './configure-payload-config.js'\nimport { downloadTemplate } from './download-template.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\nexport async function createProject(args: {\n cliArgs: CliArgs\n dbDetails?: DbDetails\n packageManager: PackageManager\n projectDir: string\n projectName: string\n template: ProjectTemplate\n}): Promise<void> {\n const { cliArgs, dbDetails, packageManager, projectDir, projectName, template } = 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-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 ('url' in template) {\n let templateUrl = template.url\n if (cliArgs['--template-branch']) {\n templateUrl = `${template.url}#${cliArgs['--template-branch']}`\n debug(`Using template url: ${templateUrl}`)\n }\n await downloadTemplate({\n name: template.name,\n branch: 'beta',\n projectDir,\n })\n }\n\n const spinner = p.spinner()\n spinner.start('Checking latest Payload version...')\n\n await updatePackageJSON({ projectDir, projectName })\n spinner.message('Configuring Payload...')\n await configurePayloadConfig({\n dbType: dbDetails?.type,\n projectDirOrConfigPath: { projectDir },\n })\n\n // Remove yarn.lock file. This is only desired in Payload Cloud.\n const lockPath = path.resolve(projectDir, '
|
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 { CliArgs, DbDetails, PackageManager, ProjectTemplate } from '../types.js'\n\nimport { tryInitRepoAndCommit } from '../utils/git.js'\nimport { debug, error, info, warning } from '../utils/log.js'\nimport { configurePayloadConfig } from './configure-payload-config.js'\nimport { downloadTemplate } from './download-template.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\nexport async function createProject(args: {\n cliArgs: CliArgs\n dbDetails?: DbDetails\n packageManager: PackageManager\n projectDir: string\n projectName: string\n template: ProjectTemplate\n}): Promise<void> {\n const { cliArgs, dbDetails, packageManager, projectDir, projectName, template } = 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-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 ('url' in template) {\n let templateUrl = template.url\n if (cliArgs['--template-branch']) {\n templateUrl = `${template.url}#${cliArgs['--template-branch']}`\n debug(`Using template url: ${templateUrl}`)\n }\n await downloadTemplate({\n name: template.name,\n branch: 'beta',\n projectDir,\n })\n }\n\n const spinner = p.spinner()\n spinner.start('Checking latest Payload version...')\n\n await updatePackageJSON({ projectDir, projectName })\n spinner.message('Configuring Payload...')\n await configurePayloadConfig({\n dbType: dbDetails?.type,\n projectDirOrConfigPath: { projectDir },\n })\n\n // Remove yarn.lock file. This is only desired in Payload Cloud.\n const lockPath = path.resolve(projectDir, 'pnpm-lock.yaml')\n if (fse.existsSync(lockPath)) {\n await fse.remove(lockPath)\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\nexport async function updatePackageJSON(args: {\n projectDir: string\n projectName: string\n}): Promise<void> {\n const { 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 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"],"names":["p","chalk","execa","fse","fileURLToPath","path","tryInitRepoAndCommit","debug","error","info","warning","configurePayloadConfig","downloadTemplate","filename","url","dirname","createOrFindProjectDir","projectDir","pathExists","mkdir","installDeps","args","cliArgs","packageManager","installCmd","command","cwd","resolve","err","Error","message","createProject","dbDetails","projectName","template","green","localTemplate","copy","templateUrl","name","branch","spinner","start","updatePackageJSON","dbType","type","projectDirOrConfigPath","lockPath","existsSync","remove","result","stop","packageJsonPath","packageObj","readJson","writeJson","spaces"],"mappings":"AAAA,YAAYA,OAAO,iBAAgB;AACnC,OAAOC,WAAW,QAAO;AACzB,OAAOC,WAAW,QAAO;AACzB,OAAOC,SAAS,WAAU;AAC1B,SAASC,aAAa,QAAQ,WAAU;AACxC,OAAOC,UAAU,OAAM;AAIvB,SAASC,oBAAoB,QAAQ,kBAAiB;AACtD,SAASC,KAAK,EAAEC,KAAK,EAAEC,IAAI,EAAEC,OAAO,QAAQ,kBAAiB;AAC7D,SAASC,sBAAsB,QAAQ,gCAA+B;AACtE,SAASC,gBAAgB,QAAQ,yBAAwB;AAEzD,MAAMC,WAAWT,cAAc,YAAYU,GAAG;AAC9C,MAAMC,UAAUV,KAAKU,OAAO,CAACF;AAE7B,eAAeG,uBAAuBC,UAAkB;IACtD,MAAMC,aAAa,MAAMf,IAAIe,UAAU,CAACD;IACxC,IAAI,CAACC,YAAY;QACf,MAAMf,IAAIgB,KAAK,CAACF;IAClB;AACF;AAEA,eAAeG,YAAYC,IAI1B;IACC,MAAM,EAAEC,OAAO,EAAEC,cAAc,EAAEN,UAAU,EAAE,GAAGI;IAChD,IAAIC,OAAO,CAAC,YAAY,EAAE;QACxB,OAAO;IACT;IACA,IAAIE,aAAa;IAEjB,IAAID,mBAAmB,QAAQ;QAC7BC,aAAa;IACf,OAAO,IAAID,mBAAmB,QAAQ;QACpCC,aAAa;IACf,OAAO,IAAID,mBAAmB,OAAO;QACnCC,aAAa;IACf;IAEA,IAAI;QACF,MAAMtB,MAAMuB,OAAO,CAACD,YAAY;YAC9BE,KAAKrB,KAAKsB,OAAO,CAACV;QACpB;QACA,OAAO;IACT,EAAE,OAAOW,KAAc;QACrBpB,MAAM,CAAC,6BAA6B,EAAEoB,eAAeC,QAAQ,CAAC,EAAE,EAAED,IAAIE,OAAO,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC;QACvF,OAAO;IACT;AACF;AAEA,OAAO,eAAeC,cAAcV,IAOnC;IACC,MAAM,EAAEC,OAAO,EAAEU,SAAS,EAAET,cAAc,EAAEN,UAAU,EAAEgB,WAAW,EAAEC,QAAQ,EAAE,GAAGb;IAElF,IAAIC,OAAO,CAAC,YAAY,EAAE;QACxBf,MAAM,CAAC,6BAA6B,EAAEN,MAAMkC,KAAK,CAAClB,YAAY,CAAC;QAC/D;IACF;IAEA,MAAMD,uBAAuBC;IAE7B,IAAIK,OAAO,CAAC,mBAAmB,EAAE;QAC/B,2DAA2D;QAC3D,MAAMc,gBAAgB/B,KAAKsB,OAAO,CAChCZ,SACA,0BACAO,OAAO,CAAC,mBAAmB;QAE7B,MAAMnB,IAAIkC,IAAI,CAACD,eAAenB;IAChC,OAAO,IAAI,SAASiB,UAAU;QAC5B,IAAII,cAAcJ,SAASpB,GAAG;QAC9B,IAAIQ,OAAO,CAAC,oBAAoB,EAAE;YAChCgB,cAAc,CAAC,EAAEJ,SAASpB,GAAG,CAAC,CAAC,EAAEQ,OAAO,CAAC,oBAAoB,CAAC,CAAC;YAC/Df,MAAM,CAAC,oBAAoB,EAAE+B,YAAY,CAAC;QAC5C;QACA,MAAM1B,iBAAiB;YACrB2B,MAAML,SAASK,IAAI;YACnBC,QAAQ;YACRvB;QACF;IACF;IAEA,MAAMwB,UAAUzC,EAAEyC,OAAO;IACzBA,QAAQC,KAAK,CAAC;IAEd,MAAMC,kBAAkB;QAAE1B;QAAYgB;IAAY;IAClDQ,QAAQX,OAAO,CAAC;IAChB,MAAMnB,uBAAuB;QAC3BiC,QAAQZ,WAAWa;QACnBC,wBAAwB;YAAE7B;QAAW;IACvC;IAEA,gEAAgE;IAChE,MAAM8B,WAAW1C,KAAKsB,OAAO,CAACV,YAAY;IAC1C,IAAId,IAAI6C,UAAU,CAACD,WAAW;QAC5B,MAAM5C,IAAI8C,MAAM,CAACF;IACnB;IAEA,IAAI,CAACzB,OAAO,CAAC,YAAY,EAAE;QACzBb,KAAK,CAAC,MAAM,EAAEc,eAAe,GAAG,CAAC;QACjCkB,QAAQX,OAAO,CAAC;QAChB,MAAMoB,SAAS,MAAM9B,YAAY;YAAEE;YAASC;YAAgBN;QAAW;QACvE,IAAIiC,QAAQ;YACVT,QAAQU,IAAI,CAAC;QACf,OAAO;YACLV,QAAQU,IAAI,CAAC,iCAAiC;QAChD;IACF,OAAO;QACLV,QAAQU,IAAI,CAAC;IACf;IAEA,IAAI,CAAC7B,OAAO,CAAC,WAAW,EAAE;QACxBhB,qBAAqB;YAAEoB,KAAKT;QAAW;IACzC;AACF;AAEA,OAAO,eAAe0B,kBAAkBtB,IAGvC;IACC,MAAM,EAAEJ,UAAU,EAAEgB,WAAW,EAAE,GAAGZ;IACpC,MAAM+B,kBAAkB/C,KAAKsB,OAAO,CAACV,YAAY;IACjD,IAAI;QACF,MAAMoC,aAAa,MAAMlD,IAAImD,QAAQ,CAACF;QACtCC,WAAWd,IAAI,GAAGN;QAClB,MAAM9B,IAAIoD,SAAS,CAACH,iBAAiBC,YAAY;YAAEG,QAAQ;QAAE;IAC/D,EAAE,OAAO5B,KAAc;QACrBlB,QAAQ,CAAC,uCAAuC,EAAEkB,eAAeC,QAAQD,IAAIE,OAAO,GAAG,GAAG,CAAC;IAC7F;AACF"}
|
@@ -40,7 +40,7 @@ function getEnvironmentPackageManager() {
|
|
40
40
|
}
|
41
41
|
async function commandExists(command) {
|
42
42
|
try {
|
43
|
-
await execa.command(`command -v ${command}`);
|
43
|
+
await execa.command(process.platform === 'win32' ? `where ${command}` : `command -v ${command}`);
|
44
44
|
return true;
|
45
45
|
} catch {
|
46
46
|
return false;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../../src/lib/get-package-manager.ts"],"sourcesContent":["import execa from 'execa'\nimport fse from 'fs-extra'\n\nimport type { CliArgs, PackageManager } from '../types.js'\n\nexport async function getPackageManager(args: {\n cliArgs?: CliArgs\n projectDir: string\n}): Promise<PackageManager> {\n const { cliArgs, projectDir } = args\n\n try {\n // Check for flag or lockfile\n let detected: PackageManager = 'npm'\n if (cliArgs?.['--use-pnpm'] || fse.existsSync(`${projectDir}/pnpm-lock.yaml`)) {\n detected = 'pnpm'\n } else if (cliArgs?.['--use-yarn'] || fse.existsSync(`${projectDir}/yarn.lock`)) {\n detected = 'yarn'\n } else if (cliArgs?.['--use-npm'] || fse.existsSync(`${projectDir}/package-lock.json`)) {\n detected = 'npm'\n } else if (cliArgs?.['--use-bun'] || fse.existsSync(`${projectDir}/bun.lockb`)) {\n detected = 'bun'\n } else if (await commandExists('pnpm')) {\n // Prefer pnpm if it's installed\n detected = 'pnpm'\n } else {\n // Otherwise check the execution environment\n detected = getEnvironmentPackageManager()\n }\n\n return detected\n } catch (ignore) {\n return 'npm'\n }\n}\n\nfunction getEnvironmentPackageManager(): PackageManager {\n const userAgent = process.env.npm_config_user_agent || ''\n\n if (userAgent.startsWith('yarn')) {\n return 'yarn'\n }\n\n if (userAgent.startsWith('pnpm')) {\n return 'pnpm'\n }\n\n if (userAgent.startsWith('bun')) {\n return 'bun'\n }\n\n return 'npm'\n}\n\nasync function commandExists(command: string): Promise<boolean> {\n try {\n await execa.command(`command -v ${command}`)\n return true\n } catch {\n return false\n }\n}\n"],"names":["execa","fse","getPackageManager","args","cliArgs","projectDir","detected","existsSync","commandExists","getEnvironmentPackageManager","ignore","userAgent","process","env","npm_config_user_agent","startsWith","command"],"mappings":"AAAA,OAAOA,WAAW,QAAO;AACzB,OAAOC,SAAS,WAAU;AAI1B,OAAO,eAAeC,kBAAkBC,IAGvC;IACC,MAAM,EAAEC,OAAO,EAAEC,UAAU,EAAE,GAAGF;IAEhC,IAAI;QACF,6BAA6B;QAC7B,IAAIG,WAA2B;QAC/B,IAAIF,SAAS,CAAC,aAAa,IAAIH,IAAIM,UAAU,CAAC,CAAC,EAAEF,WAAW,eAAe,CAAC,GAAG;YAC7EC,WAAW;QACb,OAAO,IAAIF,SAAS,CAAC,aAAa,IAAIH,IAAIM,UAAU,CAAC,CAAC,EAAEF,WAAW,UAAU,CAAC,GAAG;YAC/EC,WAAW;QACb,OAAO,IAAIF,SAAS,CAAC,YAAY,IAAIH,IAAIM,UAAU,CAAC,CAAC,EAAEF,WAAW,kBAAkB,CAAC,GAAG;YACtFC,WAAW;QACb,OAAO,IAAIF,SAAS,CAAC,YAAY,IAAIH,IAAIM,UAAU,CAAC,CAAC,EAAEF,WAAW,UAAU,CAAC,GAAG;YAC9EC,WAAW;QACb,OAAO,IAAI,MAAME,cAAc,SAAS;YACtC,gCAAgC;YAChCF,WAAW;QACb,OAAO;YACL,4CAA4C;YAC5CA,WAAWG;QACb;QAEA,OAAOH;IACT,EAAE,OAAOI,QAAQ;QACf,OAAO;IACT;AACF;AAEA,SAASD;IACP,MAAME,YAAYC,QAAQC,GAAG,CAACC,qBAAqB,IAAI;IAEvD,IAAIH,UAAUI,UAAU,CAAC,SAAS;QAChC,OAAO;IACT;IAEA,IAAIJ,UAAUI,UAAU,CAAC,SAAS;QAChC,OAAO;IACT;IAEA,IAAIJ,UAAUI,UAAU,CAAC,QAAQ;QAC/B,OAAO;IACT;IAEA,OAAO;AACT;AAEA,eAAeP,cAAcQ,OAAe;IAC1C,IAAI;QACF,MAAMhB,MAAMgB,OAAO,CAAC,CAAC,WAAW,EAAEA,QAAQ,CAAC;
|
1
|
+
{"version":3,"sources":["../../src/lib/get-package-manager.ts"],"sourcesContent":["import execa from 'execa'\nimport fse from 'fs-extra'\n\nimport type { CliArgs, PackageManager } from '../types.js'\n\nexport async function getPackageManager(args: {\n cliArgs?: CliArgs\n projectDir: string\n}): Promise<PackageManager> {\n const { cliArgs, projectDir } = args\n\n try {\n // Check for flag or lockfile\n let detected: PackageManager = 'npm'\n if (cliArgs?.['--use-pnpm'] || fse.existsSync(`${projectDir}/pnpm-lock.yaml`)) {\n detected = 'pnpm'\n } else if (cliArgs?.['--use-yarn'] || fse.existsSync(`${projectDir}/yarn.lock`)) {\n detected = 'yarn'\n } else if (cliArgs?.['--use-npm'] || fse.existsSync(`${projectDir}/package-lock.json`)) {\n detected = 'npm'\n } else if (cliArgs?.['--use-bun'] || fse.existsSync(`${projectDir}/bun.lockb`)) {\n detected = 'bun'\n } else if (await commandExists('pnpm')) {\n // Prefer pnpm if it's installed\n detected = 'pnpm'\n } else {\n // Otherwise check the execution environment\n detected = getEnvironmentPackageManager()\n }\n\n return detected\n } catch (ignore) {\n return 'npm'\n }\n}\n\nfunction getEnvironmentPackageManager(): PackageManager {\n const userAgent = process.env.npm_config_user_agent || ''\n\n if (userAgent.startsWith('yarn')) {\n return 'yarn'\n }\n\n if (userAgent.startsWith('pnpm')) {\n return 'pnpm'\n }\n\n if (userAgent.startsWith('bun')) {\n return 'bun'\n }\n\n return 'npm'\n}\n\nasync function commandExists(command: string): Promise<boolean> {\n try {\n await execa.command(process.platform === 'win32' ? `where ${command}` : `command -v ${command}`)\n return true\n } catch {\n return false\n }\n}\n"],"names":["execa","fse","getPackageManager","args","cliArgs","projectDir","detected","existsSync","commandExists","getEnvironmentPackageManager","ignore","userAgent","process","env","npm_config_user_agent","startsWith","command","platform"],"mappings":"AAAA,OAAOA,WAAW,QAAO;AACzB,OAAOC,SAAS,WAAU;AAI1B,OAAO,eAAeC,kBAAkBC,IAGvC;IACC,MAAM,EAAEC,OAAO,EAAEC,UAAU,EAAE,GAAGF;IAEhC,IAAI;QACF,6BAA6B;QAC7B,IAAIG,WAA2B;QAC/B,IAAIF,SAAS,CAAC,aAAa,IAAIH,IAAIM,UAAU,CAAC,CAAC,EAAEF,WAAW,eAAe,CAAC,GAAG;YAC7EC,WAAW;QACb,OAAO,IAAIF,SAAS,CAAC,aAAa,IAAIH,IAAIM,UAAU,CAAC,CAAC,EAAEF,WAAW,UAAU,CAAC,GAAG;YAC/EC,WAAW;QACb,OAAO,IAAIF,SAAS,CAAC,YAAY,IAAIH,IAAIM,UAAU,CAAC,CAAC,EAAEF,WAAW,kBAAkB,CAAC,GAAG;YACtFC,WAAW;QACb,OAAO,IAAIF,SAAS,CAAC,YAAY,IAAIH,IAAIM,UAAU,CAAC,CAAC,EAAEF,WAAW,UAAU,CAAC,GAAG;YAC9EC,WAAW;QACb,OAAO,IAAI,MAAME,cAAc,SAAS;YACtC,gCAAgC;YAChCF,WAAW;QACb,OAAO;YACL,4CAA4C;YAC5CA,WAAWG;QACb;QAEA,OAAOH;IACT,EAAE,OAAOI,QAAQ;QACf,OAAO;IACT;AACF;AAEA,SAASD;IACP,MAAME,YAAYC,QAAQC,GAAG,CAACC,qBAAqB,IAAI;IAEvD,IAAIH,UAAUI,UAAU,CAAC,SAAS;QAChC,OAAO;IACT;IAEA,IAAIJ,UAAUI,UAAU,CAAC,SAAS;QAChC,OAAO;IACT;IAEA,IAAIJ,UAAUI,UAAU,CAAC,QAAQ;QAC/B,OAAO;IACT;IAEA,OAAO;AACT;AAEA,eAAeP,cAAcQ,OAAe;IAC1C,IAAI;QACF,MAAMhB,MAAMgB,OAAO,CAACJ,QAAQK,QAAQ,KAAK,UAAU,CAAC,MAAM,EAAED,QAAQ,CAAC,GAAG,CAAC,WAAW,EAAEA,QAAQ,CAAC;QAC/F,OAAO;IACT,EAAE,OAAM;QACN,OAAO;IACT;AACF"}
|
package/dist/lib/init-next.js
CHANGED
@@ -166,7 +166,7 @@ async function installDeps(projectDir, packageManager, dbType) {
|
|
166
166
|
'payload',
|
167
167
|
'@payloadcms/next',
|
168
168
|
'@payloadcms/richtext-lexical',
|
169
|
-
'@payloadcms/
|
169
|
+
'@payloadcms/payload-cloud'
|
170
170
|
].map((pkg)=>`${pkg}@beta`);
|
171
171
|
packagesToInstall.push(`@payloadcms/db-${dbType}@beta`);
|
172
172
|
// Match graphql version of @payloadcms/next
|
@@ -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 { 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'>\n\ntype InitNextResult =\n | {\n isSrcDir: boolean\n nextAppDir: string\n payloadConfigPath: string\n success: true\n }\n | { isSrcDir: boolean; nextAppDir?: string; reason: string; success: false }\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(projectDir, packageManager, dbType)\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(projectDir: string, packageManager: PackageManager, dbType: DbType) {\n const packagesToInstall = [\n 'payload',\n '@payloadcms/next',\n '@payloadcms/richtext-lexical',\n '@payloadcms/plugin-cloud',\n ].map((pkg) => `${pkg}@beta`)\n\n packagesToInstall.push(`@payloadcms/db-${dbType}@beta`)\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","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","addPayloadConfigToTsConfig","tsConfigPath","existsSync","userTsConfigContent","encoding","userTsConfig","hasBaseUrl","compilerOptions","baseUrl","paths","nextConfigPath","logDebug","message","templateFilesPath","endsWith","templateSrcDir","payloadConfigPath","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 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 { 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'>\n\ntype InitNextResult =\n | {\n isSrcDir: boolean\n nextAppDir: string\n payloadConfigPath: string\n success: true\n }\n | { isSrcDir: boolean; nextAppDir?: string; reason: string; success: false }\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(projectDir, packageManager, dbType)\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(projectDir: string, packageManager: PackageManager, dbType: DbType) {\n const packagesToInstall = [\n 'payload',\n '@payloadcms/next',\n '@payloadcms/richtext-lexical',\n '@payloadcms/payload-cloud',\n ].map((pkg) => `${pkg}@beta`)\n\n packagesToInstall.push(`@payloadcms/db-${dbType}@beta`)\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","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","addPayloadConfigToTsConfig","tsConfigPath","existsSync","userTsConfigContent","encoding","userTsConfig","hasBaseUrl","compilerOptions","baseUrl","paths","nextConfigPath","logDebug","message","templateFilesPath","endsWith","templateSrcDir","payloadConfigPath","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/dist/lib/replacements.js
CHANGED
@@ -64,8 +64,8 @@ const payloadCloudReplacement = {
|
|
64
64
|
configReplacement: [
|
65
65
|
' payloadCloudPlugin(),'
|
66
66
|
],
|
67
|
-
importReplacement: "import { payloadCloudPlugin } from '@payloadcms/
|
68
|
-
packageName: '@payloadcms/
|
67
|
+
importReplacement: "import { payloadCloudPlugin } from '@payloadcms/payload-cloud'",
|
68
|
+
packageName: '@payloadcms/payload-cloud'
|
69
69
|
};
|
70
70
|
// Removes placeholders
|
71
71
|
const diskReplacement = {
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../../src/lib/replacements.ts"],"sourcesContent":["import type { DbType, StorageAdapterType } from '../types.js'\n\ntype DbAdapterReplacement = {\n configReplacement: (envName?: string) => string[]\n importReplacement: string\n packageName: string\n}\n\nconst mongodbReplacement: DbAdapterReplacement = {\n // Replacement between `// database-adapter-config-start` and `// database-adapter-config-end`\n configReplacement: (envName = 'DATABASE_URI') => [\n ' db: mongooseAdapter({',\n ` url: process.env.${envName} || '',`,\n ' }),',\n ],\n importReplacement: \"import { mongooseAdapter } from '@payloadcms/db-mongodb'\",\n packageName: '@payloadcms/db-mongodb',\n}\n\nconst postgresReplacement: DbAdapterReplacement = {\n configReplacement: (envName = 'DATABASE_URI') => [\n ' db: postgresAdapter({',\n ' pool: {',\n ` connectionString: process.env.${envName} || '',`,\n ' },',\n ' }),',\n ],\n importReplacement: \"import { postgresAdapter } from '@payloadcms/db-postgres'\",\n packageName: '@payloadcms/db-postgres',\n}\n\nconst vercelPostgresReplacement: DbAdapterReplacement = {\n configReplacement: (envName = 'POSTGRES_URL') => [\n ' db: vercelPostgresAdapter({',\n ' pool: {',\n ` connectionString: process.env.${envName} || '',`,\n ' },',\n ' }),',\n ],\n importReplacement: \"import { vercelPostgresAdapter } from '@payloadcms/db-vercel-postgres'\",\n packageName: '@payloadcms/db-vercel-postgres',\n}\n\nconst sqliteReplacement: DbAdapterReplacement = {\n configReplacement: (envName = 'DATABASE_URI') => [\n ' db: sqliteAdapter({',\n ' client: {',\n ` url: process.env.${envName} || '',`,\n ' },',\n ' }),',\n ],\n importReplacement: \"import { sqliteAdapter } from '@payloadcms/db-sqlite'\",\n packageName: '@payloadcms/db-sqlite',\n}\n\nexport const dbReplacements: Record<DbType, DbAdapterReplacement> = {\n mongodb: mongodbReplacement,\n postgres: postgresReplacement,\n sqlite: sqliteReplacement,\n 'vercel-postgres': vercelPostgresReplacement,\n}\n\ntype StorageAdapterReplacement = {\n configReplacement: string[]\n importReplacement?: string\n packageName?: string\n}\n\nconst vercelBlobStorageReplacement: StorageAdapterReplacement = {\n // Replacement of `// storage-adapter-placeholder`\n configReplacement: [\n ' vercelBlobStorage({',\n ' collections: {',\n ' [Media.slug]: true,',\n ' },',\n \" token: process.env.BLOB_READ_WRITE_TOKEN || '',\",\n ' }),',\n ],\n importReplacement: \"import { vercelBlobStorage } from '@payloadcms/storage-vercel-blob'\",\n packageName: '@payloadcms/storage-vercel-blob',\n}\n\nconst payloadCloudReplacement: StorageAdapterReplacement = {\n configReplacement: [' payloadCloudPlugin(),'],\n importReplacement: \"import { payloadCloudPlugin } from '@payloadcms/
|
1
|
+
{"version":3,"sources":["../../src/lib/replacements.ts"],"sourcesContent":["import type { DbType, StorageAdapterType } from '../types.js'\n\ntype DbAdapterReplacement = {\n configReplacement: (envName?: string) => string[]\n importReplacement: string\n packageName: string\n}\n\nconst mongodbReplacement: DbAdapterReplacement = {\n // Replacement between `// database-adapter-config-start` and `// database-adapter-config-end`\n configReplacement: (envName = 'DATABASE_URI') => [\n ' db: mongooseAdapter({',\n ` url: process.env.${envName} || '',`,\n ' }),',\n ],\n importReplacement: \"import { mongooseAdapter } from '@payloadcms/db-mongodb'\",\n packageName: '@payloadcms/db-mongodb',\n}\n\nconst postgresReplacement: DbAdapterReplacement = {\n configReplacement: (envName = 'DATABASE_URI') => [\n ' db: postgresAdapter({',\n ' pool: {',\n ` connectionString: process.env.${envName} || '',`,\n ' },',\n ' }),',\n ],\n importReplacement: \"import { postgresAdapter } from '@payloadcms/db-postgres'\",\n packageName: '@payloadcms/db-postgres',\n}\n\nconst vercelPostgresReplacement: DbAdapterReplacement = {\n configReplacement: (envName = 'POSTGRES_URL') => [\n ' db: vercelPostgresAdapter({',\n ' pool: {',\n ` connectionString: process.env.${envName} || '',`,\n ' },',\n ' }),',\n ],\n importReplacement: \"import { vercelPostgresAdapter } from '@payloadcms/db-vercel-postgres'\",\n packageName: '@payloadcms/db-vercel-postgres',\n}\n\nconst sqliteReplacement: DbAdapterReplacement = {\n configReplacement: (envName = 'DATABASE_URI') => [\n ' db: sqliteAdapter({',\n ' client: {',\n ` url: process.env.${envName} || '',`,\n ' },',\n ' }),',\n ],\n importReplacement: \"import { sqliteAdapter } from '@payloadcms/db-sqlite'\",\n packageName: '@payloadcms/db-sqlite',\n}\n\nexport const dbReplacements: Record<DbType, DbAdapterReplacement> = {\n mongodb: mongodbReplacement,\n postgres: postgresReplacement,\n sqlite: sqliteReplacement,\n 'vercel-postgres': vercelPostgresReplacement,\n}\n\ntype StorageAdapterReplacement = {\n configReplacement: string[]\n importReplacement?: string\n packageName?: string\n}\n\nconst vercelBlobStorageReplacement: StorageAdapterReplacement = {\n // Replacement of `// storage-adapter-placeholder`\n configReplacement: [\n ' vercelBlobStorage({',\n ' collections: {',\n ' [Media.slug]: true,',\n ' },',\n \" token: process.env.BLOB_READ_WRITE_TOKEN || '',\",\n ' }),',\n ],\n importReplacement: \"import { vercelBlobStorage } from '@payloadcms/storage-vercel-blob'\",\n packageName: '@payloadcms/storage-vercel-blob',\n}\n\nconst payloadCloudReplacement: StorageAdapterReplacement = {\n configReplacement: [' payloadCloudPlugin(),'],\n importReplacement: \"import { payloadCloudPlugin } from '@payloadcms/payload-cloud'\",\n packageName: '@payloadcms/payload-cloud',\n}\n\n// Removes placeholders\nconst diskReplacement: StorageAdapterReplacement = {\n configReplacement: [],\n importReplacement: '',\n}\n\nexport const storageReplacements: Record<StorageAdapterType, StorageAdapterReplacement> = {\n localDisk: diskReplacement,\n payloadCloud: payloadCloudReplacement,\n vercelBlobStorage: vercelBlobStorageReplacement,\n}\n\n/**\n * Generic config replacement\n */\ntype ConfigReplacement = {\n configReplacement: {\n match: string\n replacement: string\n }\n importReplacement: string\n packageName: string\n}\n\nexport const configReplacements: Record<string, ConfigReplacement> = {\n sharp: {\n // Replacement of `sharp, // Now optional`\n configReplacement: {\n match: 'sharp,',\n replacement: ' // sharp,',\n },\n importReplacement: \"import sharp from 'sharp'\",\n packageName: 'sharp',\n },\n}\n"],"names":["mongodbReplacement","configReplacement","envName","importReplacement","packageName","postgresReplacement","vercelPostgresReplacement","sqliteReplacement","dbReplacements","mongodb","postgres","sqlite","vercelBlobStorageReplacement","payloadCloudReplacement","diskReplacement","storageReplacements","localDisk","payloadCloud","vercelBlobStorage","configReplacements","sharp","match","replacement"],"mappings":"AAQA,MAAMA,qBAA2C;IAC/C,8FAA8F;IAC9FC,mBAAmB,CAACC,UAAU,cAAc,GAAK;YAC/C;YACA,CAAC,qBAAqB,EAAEA,QAAQ,OAAO,CAAC;YACxC;SACD;IACDC,mBAAmB;IACnBC,aAAa;AACf;AAEA,MAAMC,sBAA4C;IAChDJ,mBAAmB,CAACC,UAAU,cAAc,GAAK;YAC/C;YACA;YACA,CAAC,oCAAoC,EAAEA,QAAQ,OAAO,CAAC;YACvD;YACA;SACD;IACDC,mBAAmB;IACnBC,aAAa;AACf;AAEA,MAAME,4BAAkD;IACtDL,mBAAmB,CAACC,UAAU,cAAc,GAAK;YAC/C;YACA;YACA,CAAC,oCAAoC,EAAEA,QAAQ,OAAO,CAAC;YACvD;YACA;SACD;IACDC,mBAAmB;IACnBC,aAAa;AACf;AAEA,MAAMG,oBAA0C;IAC9CN,mBAAmB,CAACC,UAAU,cAAc,GAAK;YAC/C;YACA;YACA,CAAC,uBAAuB,EAAEA,QAAQ,OAAO,CAAC;YAC1C;YACA;SACD;IACDC,mBAAmB;IACnBC,aAAa;AACf;AAEA,OAAO,MAAMI,iBAAuD;IAClEC,SAAST;IACTU,UAAUL;IACVM,QAAQJ;IACR,mBAAmBD;AACrB,EAAC;AAQD,MAAMM,+BAA0D;IAC9D,kDAAkD;IAClDX,mBAAmB;QACjB;QACA;QACA;QACA;QACA;QACA;KACD;IACDE,mBAAmB;IACnBC,aAAa;AACf;AAEA,MAAMS,0BAAqD;IACzDZ,mBAAmB;QAAC;KAA4B;IAChDE,mBAAmB;IACnBC,aAAa;AACf;AAEA,uBAAuB;AACvB,MAAMU,kBAA6C;IACjDb,mBAAmB,EAAE;IACrBE,mBAAmB;AACrB;AAEA,OAAO,MAAMY,sBAA6E;IACxFC,WAAWF;IACXG,cAAcJ;IACdK,mBAAmBN;AACrB,EAAC;AAcD,OAAO,MAAMO,qBAAwD;IACnEC,OAAO;QACL,0CAA0C;QAC1CnB,mBAAmB;YACjBoB,OAAO;YACPC,aAAa;QACf;QACAnB,mBAAmB;QACnBC,aAAa;IACf;AACF,EAAC"}
|
package/dist/lib/select-db.js
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../../src/lib/select-db.ts"],"sourcesContent":["import * as p from '@clack/prompts'\nimport slugify from '@sindresorhus/slugify'\n\nimport type { CliArgs, DbDetails, DbType } from '../types.js'\n\ntype DbChoice = {\n dbConnectionPrefix: `${string}/`\n dbConnectionSuffix?: string\n title: string\n value: DbType\n}\n\nconst dbChoiceRecord: Record<DbType, DbChoice> = {\n mongodb: {\n dbConnectionPrefix: 'mongodb://127.0.0.1/',\n title: 'MongoDB',\n value: 'mongodb',\n },\n postgres: {\n dbConnectionPrefix: 'postgres://postgres:<password>@127.0.0.1:5432/',\n title: 'PostgreSQL
|
1
|
+
{"version":3,"sources":["../../src/lib/select-db.ts"],"sourcesContent":["import * as p from '@clack/prompts'\nimport slugify from '@sindresorhus/slugify'\n\nimport type { CliArgs, DbDetails, DbType } from '../types.js'\n\ntype DbChoice = {\n dbConnectionPrefix: `${string}/`\n dbConnectionSuffix?: string\n title: string\n value: DbType\n}\n\nconst dbChoiceRecord: Record<DbType, DbChoice> = {\n mongodb: {\n dbConnectionPrefix: 'mongodb://127.0.0.1/',\n title: 'MongoDB',\n value: 'mongodb',\n },\n postgres: {\n dbConnectionPrefix: 'postgres://postgres:<password>@127.0.0.1:5432/',\n title: 'PostgreSQL',\n value: 'postgres',\n },\n sqlite: {\n dbConnectionPrefix: 'file:./',\n dbConnectionSuffix: '.db',\n title: 'SQLite (beta)',\n value: 'sqlite',\n },\n 'vercel-postgres': {\n dbConnectionPrefix: 'postgres://postgres:<password>@127.0.0.1:5432/',\n title: 'Vercel Postgres (beta)',\n value: 'vercel-postgres',\n },\n}\n\nexport async function selectDb(args: CliArgs, projectName: string): Promise<DbDetails> {\n let dbType: DbType | symbol | undefined = undefined\n if (args['--db']) {\n if (!Object.values(dbChoiceRecord).some((dbChoice) => dbChoice.value === args['--db'])) {\n throw new Error(\n `Invalid database type given. Valid types are: ${Object.values(dbChoiceRecord)\n .map((dbChoice) => dbChoice.value)\n .join(', ')}`,\n )\n }\n dbType = args['--db'] as DbType\n } else {\n dbType = await p.select<{ label: string; value: DbType }[], DbType>({\n initialValue: 'mongodb',\n message: `Select a database`,\n options: Object.values(dbChoiceRecord).map((dbChoice) => ({\n label: dbChoice.title,\n value: dbChoice.value,\n })),\n })\n if (p.isCancel(dbType)) {\n process.exit(0)\n }\n }\n\n const dbChoice = dbChoiceRecord[dbType]\n\n let dbUri: string | symbol | undefined = undefined\n const initialDbUri = `${dbChoice.dbConnectionPrefix}${\n projectName === '.' ? `payload-${getRandomDigitSuffix()}` : slugify(projectName)\n }${dbChoice.dbConnectionSuffix || ''}`\n\n if (args['--db-accept-recommended']) {\n dbUri = initialDbUri\n } else if (args['--db-connection-string']) {\n dbUri = args['--db-connection-string']\n } else {\n dbUri = await p.text({\n initialValue: initialDbUri,\n message: `Enter ${dbChoice.title.split(' ')[0]} connection string`, // strip beta from title\n })\n if (p.isCancel(dbUri)) {\n process.exit(0)\n }\n }\n\n return {\n type: dbChoice.value,\n dbUri,\n }\n}\n\nfunction getRandomDigitSuffix(): string {\n return (Math.random() * Math.pow(10, 6)).toFixed(0)\n}\n"],"names":["p","slugify","dbChoiceRecord","mongodb","dbConnectionPrefix","title","value","postgres","sqlite","dbConnectionSuffix","selectDb","args","projectName","dbType","undefined","Object","values","some","dbChoice","Error","map","join","select","initialValue","message","options","label","isCancel","process","exit","dbUri","initialDbUri","getRandomDigitSuffix","text","split","type","Math","random","pow","toFixed"],"mappings":"AAAA,YAAYA,OAAO,iBAAgB;AACnC,OAAOC,aAAa,wBAAuB;AAW3C,MAAMC,iBAA2C;IAC/CC,SAAS;QACPC,oBAAoB;QACpBC,OAAO;QACPC,OAAO;IACT;IACAC,UAAU;QACRH,oBAAoB;QACpBC,OAAO;QACPC,OAAO;IACT;IACAE,QAAQ;QACNJ,oBAAoB;QACpBK,oBAAoB;QACpBJ,OAAO;QACPC,OAAO;IACT;IACA,mBAAmB;QACjBF,oBAAoB;QACpBC,OAAO;QACPC,OAAO;IACT;AACF;AAEA,OAAO,eAAeI,SAASC,IAAa,EAAEC,WAAmB;IAC/D,IAAIC,SAAsCC;IAC1C,IAAIH,IAAI,CAAC,OAAO,EAAE;QAChB,IAAI,CAACI,OAAOC,MAAM,CAACd,gBAAgBe,IAAI,CAAC,CAACC,WAAaA,SAASZ,KAAK,KAAKK,IAAI,CAAC,OAAO,GAAG;YACtF,MAAM,IAAIQ,MACR,CAAC,8CAA8C,EAAEJ,OAAOC,MAAM,CAACd,gBAC5DkB,GAAG,CAAC,CAACF,WAAaA,SAASZ,KAAK,EAChCe,IAAI,CAAC,MAAM,CAAC;QAEnB;QACAR,SAASF,IAAI,CAAC,OAAO;IACvB,OAAO;QACLE,SAAS,MAAMb,EAAEsB,MAAM,CAA6C;YAClEC,cAAc;YACdC,SAAS,CAAC,iBAAiB,CAAC;YAC5BC,SAASV,OAAOC,MAAM,CAACd,gBAAgBkB,GAAG,CAAC,CAACF,WAAc,CAAA;oBACxDQ,OAAOR,SAASb,KAAK;oBACrBC,OAAOY,SAASZ,KAAK;gBACvB,CAAA;QACF;QACA,IAAIN,EAAE2B,QAAQ,CAACd,SAAS;YACtBe,QAAQC,IAAI,CAAC;QACf;IACF;IAEA,MAAMX,WAAWhB,cAAc,CAACW,OAAO;IAEvC,IAAIiB,QAAqChB;IACzC,MAAMiB,eAAe,CAAC,EAAEb,SAASd,kBAAkB,CAAC,EAClDQ,gBAAgB,MAAM,CAAC,QAAQ,EAAEoB,uBAAuB,CAAC,GAAG/B,QAAQW,aACrE,EAAEM,SAAST,kBAAkB,IAAI,GAAG,CAAC;IAEtC,IAAIE,IAAI,CAAC,0BAA0B,EAAE;QACnCmB,QAAQC;IACV,OAAO,IAAIpB,IAAI,CAAC,yBAAyB,EAAE;QACzCmB,QAAQnB,IAAI,CAAC,yBAAyB;IACxC,OAAO;QACLmB,QAAQ,MAAM9B,EAAEiC,IAAI,CAAC;YACnBV,cAAcQ;YACdP,SAAS,CAAC,MAAM,EAAEN,SAASb,KAAK,CAAC6B,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,kBAAkB,CAAC;QACpE;QACA,IAAIlC,EAAE2B,QAAQ,CAACG,QAAQ;YACrBF,QAAQC,IAAI,CAAC;QACf;IACF;IAEA,OAAO;QACLM,MAAMjB,SAASZ,KAAK;QACpBwB;IACF;AACF;AAEA,SAASE;IACP,OAAO,AAACI,CAAAA,KAAKC,MAAM,KAAKD,KAAKE,GAAG,CAAC,IAAI,EAAC,EAAGC,OAAO,CAAC;AACnD"}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"templates.d.ts","sourceRoot":"","sources":["../../src/lib/templates.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;
|
1
|
+
{"version":3,"file":"templates.d.ts","sourceRoot":"","sources":["../../src/lib/templates.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAKlD,wBAAgB,gBAAgB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAQ9D;AAED,wBAAgB,iBAAiB,IAAI,eAAe,EAAE,CAgDrD"}
|
package/dist/lib/templates.js
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
import { error, info } from '../utils/log.js';
|
2
|
+
import { PACKAGE_VERSION } from './constants.js';
|
2
3
|
export function validateTemplate(templateName) {
|
3
4
|
const validTemplates = getValidTemplates();
|
4
5
|
if (!validTemplates.map((t)=>t.name).includes(templateName)) {
|
@@ -14,13 +15,13 @@ export function getValidTemplates() {
|
|
14
15
|
name: 'blank',
|
15
16
|
type: 'starter',
|
16
17
|
description: 'Blank 3.0 Template',
|
17
|
-
url:
|
18
|
+
url: `https://github.com/payloadcms/payload/templates/blank#v${PACKAGE_VERSION}`
|
18
19
|
},
|
19
20
|
{
|
20
21
|
name: 'website',
|
21
22
|
type: 'starter',
|
22
23
|
description: 'Website Template',
|
23
|
-
url:
|
24
|
+
url: `https://github.com/payloadcms/payload/templates/website#v${PACKAGE_VERSION}`
|
24
25
|
}
|
25
26
|
];
|
26
27
|
}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../../src/lib/templates.ts"],"sourcesContent":["import type { ProjectTemplate } from '../types.js'\n\nimport { error, info } from '../utils/log.js'\n\nexport function validateTemplate(templateName: string): boolean {\n const validTemplates = getValidTemplates()\n if (!validTemplates.map((t) => t.name).includes(templateName)) {\n error(`'${templateName}' is not a valid template.`)\n info(`Valid templates: ${validTemplates.map((t) => t.name).join(', ')}`)\n return false\n }\n return true\n}\n\nexport function getValidTemplates(): ProjectTemplate[] {\n return [\n {\n name: 'blank',\n type: 'starter',\n description: 'Blank 3.0 Template',\n url:
|
1
|
+
{"version":3,"sources":["../../src/lib/templates.ts"],"sourcesContent":["import type { ProjectTemplate } from '../types.js'\n\nimport { error, info } from '../utils/log.js'\nimport { PACKAGE_VERSION } from './constants.js'\n\nexport function validateTemplate(templateName: string): boolean {\n const validTemplates = getValidTemplates()\n if (!validTemplates.map((t) => t.name).includes(templateName)) {\n error(`'${templateName}' is not a valid template.`)\n info(`Valid templates: ${validTemplates.map((t) => t.name).join(', ')}`)\n return false\n }\n return true\n}\n\nexport function getValidTemplates(): ProjectTemplate[] {\n return [\n {\n name: 'blank',\n type: 'starter',\n description: 'Blank 3.0 Template',\n url: `https://github.com/payloadcms/payload/templates/blank#v${PACKAGE_VERSION}`,\n },\n {\n name: 'website',\n type: 'starter',\n description: 'Website Template',\n url: `https://github.com/payloadcms/payload/templates/website#v${PACKAGE_VERSION}`,\n },\n\n // Remove these until they have been updated for 3.0\n\n // {\n // name: 'blank',\n // type: 'starter',\n // description: 'Blank Template',\n // url: 'https://github.com/payloadcms/payload/templates/blank',\n // },\n // {\n // name: 'ecommerce',\n // type: 'starter',\n // description: 'E-commerce Template',\n // url: 'https://github.com/payloadcms/payload/templates/ecommerce',\n // },\n // {\n // name: 'plugin',\n // type: 'plugin',\n // description: 'Template for creating a Payload plugin',\n // url: 'https://github.com/payloadcms/payload-plugin-template#beta',\n // },\n // {\n // name: 'payload-demo',\n // type: 'starter',\n // description: 'Payload demo site at https://demo.payloadcms.com',\n // url: 'https://github.com/payloadcms/public-demo',\n // },\n // {\n // name: 'payload-website',\n // type: 'starter',\n // description: 'Payload website CMS at https://payloadcms.com',\n // url: 'https://github.com/payloadcms/website-cms',\n // },\n ]\n}\n"],"names":["error","info","PACKAGE_VERSION","validateTemplate","templateName","validTemplates","getValidTemplates","map","t","name","includes","join","type","description","url"],"mappings":"AAEA,SAASA,KAAK,EAAEC,IAAI,QAAQ,kBAAiB;AAC7C,SAASC,eAAe,QAAQ,iBAAgB;AAEhD,OAAO,SAASC,iBAAiBC,YAAoB;IACnD,MAAMC,iBAAiBC;IACvB,IAAI,CAACD,eAAeE,GAAG,CAAC,CAACC,IAAMA,EAAEC,IAAI,EAAEC,QAAQ,CAACN,eAAe;QAC7DJ,MAAM,CAAC,CAAC,EAAEI,aAAa,0BAA0B,CAAC;QAClDH,KAAK,CAAC,iBAAiB,EAAEI,eAAeE,GAAG,CAAC,CAACC,IAAMA,EAAEC,IAAI,EAAEE,IAAI,CAAC,MAAM,CAAC;QACvE,OAAO;IACT;IACA,OAAO;AACT;AAEA,OAAO,SAASL;IACd,OAAO;QACL;YACEG,MAAM;YACNG,MAAM;YACNC,aAAa;YACbC,KAAK,CAAC,uDAAuD,EAAEZ,gBAAgB,CAAC;QAClF;QACA;YACEO,MAAM;YACNG,MAAM;YACNC,aAAa;YACbC,KAAK,CAAC,yDAAyD,EAAEZ,gBAAgB,CAAC;QACpF;KAkCD;AACH"}
|
@@ -1,7 +1,8 @@
|
|
1
|
-
import type { CliArgs, ProjectTemplate } from '../types.js';
|
1
|
+
import type { CliArgs, DbType, ProjectTemplate } from '../types.js';
|
2
2
|
/** Parse and swap .env.example values and write .env */
|
3
3
|
export declare function writeEnvFile(args: {
|
4
4
|
cliArgs: CliArgs;
|
5
|
+
databaseType?: DbType;
|
5
6
|
databaseUri: string;
|
6
7
|
payloadSecret: string;
|
7
8
|
projectDir: string;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"write-env-file.d.ts","sourceRoot":"","sources":["../../src/lib/write-env-file.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;
|
1
|
+
{"version":3,"file":"write-env-file.d.ts","sourceRoot":"","sources":["../../src/lib/write-env-file.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAInE,wDAAwD;AACxD,wBAAsB,YAAY,CAAC,IAAI,EAAE;IACvC,OAAO,EAAE,OAAO,CAAA;IAChB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,WAAW,EAAE,MAAM,CAAA;IACnB,aAAa,EAAE,MAAM,CAAA;IACrB,UAAU,EAAE,MAAM,CAAA;IAClB,QAAQ,CAAC,EAAE,eAAe,CAAA;CAC3B,GAAG,OAAO,CAAC,IAAI,CAAC,CAoEhB"}
|
@@ -2,7 +2,7 @@ import fs from 'fs-extra';
|
|
2
2
|
import path from 'path';
|
3
3
|
import { debug, error } from '../utils/log.js';
|
4
4
|
/** Parse and swap .env.example values and write .env */ export async function writeEnvFile(args) {
|
5
|
-
const { cliArgs, databaseUri, payloadSecret, projectDir, template } = args;
|
5
|
+
const { cliArgs, databaseType, databaseUri, payloadSecret, projectDir, template } = args;
|
6
6
|
if (cliArgs['--dry-run']) {
|
7
7
|
debug(`DRY RUN: .env file created`);
|
8
8
|
return;
|
@@ -19,9 +19,12 @@ import { debug, error } from '../utils/log.js';
|
|
19
19
|
return line;
|
20
20
|
}
|
21
21
|
const split = line.split('=');
|
22
|
-
|
22
|
+
let key = split[0];
|
23
23
|
let value = split[1];
|
24
24
|
if (key === 'MONGODB_URI' || key === 'MONGO_URL' || key === 'DATABASE_URI' || key === 'POSTGRES_URL') {
|
25
|
+
if (databaseType === 'vercel-postgres') {
|
26
|
+
key = 'POSTGRES_URL';
|
27
|
+
}
|
25
28
|
value = databaseUri;
|
26
29
|
}
|
27
30
|
if (key === 'PAYLOAD_SECRET' || key === 'PAYLOAD_SECRET_KEY') {
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../../src/lib/write-env-file.ts"],"sourcesContent":["import fs from 'fs-extra'\nimport path from 'path'\n\nimport type { CliArgs, ProjectTemplate } from '../types.js'\n\nimport { debug, error } from '../utils/log.js'\n\n/** Parse and swap .env.example values and write .env */\nexport async function writeEnvFile(args: {\n cliArgs: CliArgs\n databaseUri: string\n payloadSecret: string\n projectDir: string\n template?: ProjectTemplate\n}): Promise<void> {\n const { cliArgs, databaseUri, payloadSecret, projectDir, template } = args\n\n if (cliArgs['--dry-run']) {\n debug(`DRY RUN: .env file created`)\n return\n }\n\n const envOutputPath = path.join(projectDir, '.env')\n\n try {\n let fileContents: string\n\n if (template?.type === 'starter') {\n // Parse .env file into key/value pairs\n const envExample = path.join(projectDir, '.env.example')\n const envFile = await fs.readFile(envExample, 'utf8')\n\n fileContents =\n `# Added by Payload\\n` +\n envFile\n .split('\\n')\n .filter((e) => e)\n .map((line) => {\n if (line.startsWith('#') || !line.includes('=')) {\n return line\n }\n\n const split = line.split('=')\n
|
1
|
+
{"version":3,"sources":["../../src/lib/write-env-file.ts"],"sourcesContent":["import fs from 'fs-extra'\nimport path from 'path'\n\nimport type { CliArgs, DbType, ProjectTemplate } from '../types.js'\n\nimport { debug, error } from '../utils/log.js'\n\n/** Parse and swap .env.example values and write .env */\nexport async function writeEnvFile(args: {\n cliArgs: CliArgs\n databaseType?: DbType\n databaseUri: string\n payloadSecret: string\n projectDir: string\n template?: ProjectTemplate\n}): Promise<void> {\n const { cliArgs, databaseType, databaseUri, payloadSecret, projectDir, template } = args\n\n if (cliArgs['--dry-run']) {\n debug(`DRY RUN: .env file created`)\n return\n }\n\n const envOutputPath = path.join(projectDir, '.env')\n\n try {\n let fileContents: string\n\n if (template?.type === 'starter') {\n // Parse .env file into key/value pairs\n const envExample = path.join(projectDir, '.env.example')\n const envFile = await fs.readFile(envExample, 'utf8')\n\n fileContents =\n `# Added by Payload\\n` +\n envFile\n .split('\\n')\n .filter((e) => e)\n .map((line) => {\n if (line.startsWith('#') || !line.includes('=')) {\n return line\n }\n\n const split = line.split('=')\n let key = split[0]\n let value = split[1]\n\n if (\n key === 'MONGODB_URI' ||\n key === 'MONGO_URL' ||\n key === 'DATABASE_URI' ||\n key === 'POSTGRES_URL'\n ) {\n if (databaseType === 'vercel-postgres') {\n key = 'POSTGRES_URL'\n }\n value = databaseUri\n }\n if (key === 'PAYLOAD_SECRET' || key === 'PAYLOAD_SECRET_KEY') {\n value = payloadSecret\n }\n\n return `${key}=${value}`\n })\n .join('\\n')\n } else {\n fileContents = `# Added by Payload\\nDATABASE_URI=${databaseUri}\\nPAYLOAD_SECRET=${payloadSecret}\\n`\n }\n\n if (fs.existsSync(envOutputPath)) {\n const existingEnv = await fs.readFile(envOutputPath, 'utf8')\n const newEnv = existingEnv + '\\n# Added by Payload' + fileContents\n await fs.writeFile(envOutputPath, newEnv)\n } else {\n await fs.writeFile(envOutputPath, fileContents)\n }\n } catch (err: unknown) {\n error('Unable to write .env file')\n if (err instanceof Error) {\n error(err.message)\n }\n process.exit(1)\n }\n}\n"],"names":["fs","path","debug","error","writeEnvFile","args","cliArgs","databaseType","databaseUri","payloadSecret","projectDir","template","envOutputPath","join","fileContents","type","envExample","envFile","readFile","split","filter","e","map","line","startsWith","includes","key","value","existsSync","existingEnv","newEnv","writeFile","err","Error","message","process","exit"],"mappings":"AAAA,OAAOA,QAAQ,WAAU;AACzB,OAAOC,UAAU,OAAM;AAIvB,SAASC,KAAK,EAAEC,KAAK,QAAQ,kBAAiB;AAE9C,sDAAsD,GACtD,OAAO,eAAeC,aAAaC,IAOlC;IACC,MAAM,EAAEC,OAAO,EAAEC,YAAY,EAAEC,WAAW,EAAEC,aAAa,EAAEC,UAAU,EAAEC,QAAQ,EAAE,GAAGN;IAEpF,IAAIC,OAAO,CAAC,YAAY,EAAE;QACxBJ,MAAM,CAAC,0BAA0B,CAAC;QAClC;IACF;IAEA,MAAMU,gBAAgBX,KAAKY,IAAI,CAACH,YAAY;IAE5C,IAAI;QACF,IAAII;QAEJ,IAAIH,UAAUI,SAAS,WAAW;YAChC,uCAAuC;YACvC,MAAMC,aAAaf,KAAKY,IAAI,CAACH,YAAY;YACzC,MAAMO,UAAU,MAAMjB,GAAGkB,QAAQ,CAACF,YAAY;YAE9CF,eACE,CAAC,oBAAoB,CAAC,GACtBG,QACGE,KAAK,CAAC,MACNC,MAAM,CAAC,CAACC,IAAMA,GACdC,GAAG,CAAC,CAACC;gBACJ,IAAIA,KAAKC,UAAU,CAAC,QAAQ,CAACD,KAAKE,QAAQ,CAAC,MAAM;oBAC/C,OAAOF;gBACT;gBAEA,MAAMJ,QAAQI,KAAKJ,KAAK,CAAC;gBACzB,IAAIO,MAAMP,KAAK,CAAC,EAAE;gBAClB,IAAIQ,QAAQR,KAAK,CAAC,EAAE;gBAEpB,IACEO,QAAQ,iBACRA,QAAQ,eACRA,QAAQ,kBACRA,QAAQ,gBACR;oBACA,IAAInB,iBAAiB,mBAAmB;wBACtCmB,MAAM;oBACR;oBACAC,QAAQnB;gBACV;gBACA,IAAIkB,QAAQ,oBAAoBA,QAAQ,sBAAsB;oBAC5DC,QAAQlB;gBACV;gBAEA,OAAO,CAAC,EAAEiB,IAAI,CAAC,EAAEC,MAAM,CAAC;YAC1B,GACCd,IAAI,CAAC;QACZ,OAAO;YACLC,eAAe,CAAC,iCAAiC,EAAEN,YAAY,iBAAiB,EAAEC,cAAc,EAAE,CAAC;QACrG;QAEA,IAAIT,GAAG4B,UAAU,CAAChB,gBAAgB;YAChC,MAAMiB,cAAc,MAAM7B,GAAGkB,QAAQ,CAACN,eAAe;YACrD,MAAMkB,SAASD,cAAc,yBAAyBf;YACtD,MAAMd,GAAG+B,SAAS,CAACnB,eAAekB;QACpC,OAAO;YACL,MAAM9B,GAAG+B,SAAS,CAACnB,eAAeE;QACpC;IACF,EAAE,OAAOkB,KAAc;QACrB7B,MAAM;QACN,IAAI6B,eAAeC,OAAO;YACxB9B,MAAM6B,IAAIE,OAAO;QACnB;QACAC,QAAQC,IAAI,CAAC;IACf;AACF"}
|
package/dist/main.d.ts.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAA;
|
1
|
+
{"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAA;AAuBzC,qBAAa,IAAI;IACf,IAAI,EAAE,OAAO,CAAA;;IA4CP,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;CAwL5B"}
|
package/dist/main.js
CHANGED
@@ -5,6 +5,7 @@ import chalk from 'chalk';
|
|
5
5
|
import figures from 'figures';
|
6
6
|
import path from 'path';
|
7
7
|
import { configurePayloadConfig } from './lib/configure-payload-config.js';
|
8
|
+
import { PACKAGE_VERSION } from './lib/constants.js';
|
8
9
|
import { createProject } from './lib/create-project.js';
|
9
10
|
import { generateSecret } from './lib/generate-secret.js';
|
10
11
|
import { getPackageManager } from './lib/get-package-manager.js';
|
@@ -15,7 +16,7 @@ import { selectDb } from './lib/select-db.js';
|
|
15
16
|
import { getValidTemplates, validateTemplate } from './lib/templates.js';
|
16
17
|
import { updatePayloadInProject } from './lib/update-payload-in-project.js';
|
17
18
|
import { writeEnvFile } from './lib/write-env-file.js';
|
18
|
-
import { error, info } from './utils/log.js';
|
19
|
+
import { debug, error, info } from './utils/log.js';
|
19
20
|
import { feedbackOutro, helpMessage, moveMessage, successfulNextInit, successMessage } from './utils/messages.js';
|
20
21
|
export class Main {
|
21
22
|
args;
|
@@ -60,6 +61,7 @@ export class Main {
|
|
60
61
|
helpMessage();
|
61
62
|
process.exit(0);
|
62
63
|
}
|
64
|
+
const debugFlag = this.args['--debug'];
|
63
65
|
// eslint-disable-next-line no-console
|
64
66
|
console.log('\n');
|
65
67
|
p.intro(chalk.bgCyan(chalk.black(' create-payload-app ')));
|
@@ -138,6 +140,7 @@ export class Main {
|
|
138
140
|
});
|
139
141
|
await writeEnvFile({
|
140
142
|
cliArgs: this.args,
|
143
|
+
databaseType: dbDetails.type,
|
141
144
|
databaseUri: dbDetails.dbUri,
|
142
145
|
payloadSecret: generateSecret(),
|
143
146
|
projectDir
|
@@ -155,6 +158,9 @@ export class Main {
|
|
155
158
|
process.exit(1);
|
156
159
|
}
|
157
160
|
}
|
161
|
+
if (debugFlag) {
|
162
|
+
debug(`Using templates from git tag: ${PACKAGE_VERSION}`);
|
163
|
+
}
|
158
164
|
const validTemplates = getValidTemplates();
|
159
165
|
const template = await parseTemplate(this.args, validTemplates);
|
160
166
|
if (!template) {
|
@@ -177,6 +183,7 @@ export class Main {
|
|
177
183
|
});
|
178
184
|
await writeEnvFile({
|
179
185
|
cliArgs: this.args,
|
186
|
+
databaseType: dbDetails.type,
|
180
187
|
databaseUri: dbDetails.dbUri,
|
181
188
|
payloadSecret,
|
182
189
|
projectDir,
|
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 { CliArgs } from './types.js'\n\nimport { configurePayloadConfig } from './lib/configure-payload-config.js'\nimport { createProject } from './lib/create-project.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 { parseProjectName } from './lib/parse-project-name.js'\nimport { parseTemplate } from './lib/parse-template.js'\nimport { selectDb } from './lib/select-db.js'\nimport { getValidTemplates, validateTemplate } from './lib/templates.js'\nimport { updatePayloadInProject } from './lib/update-payload-in-project.js'\nimport { writeEnvFile } from './lib/write-env-file.js'\nimport { error, info } from './utils/log.js'\nimport {\n feedbackOutro,\n helpMessage,\n moveMessage,\n successfulNextInit,\n successMessage,\n} from './utils/messages.js'\n\nexport class Main {\n args: CliArgs\n\n constructor() {\n // @ts-expect-error bad typings\n this.args = arg(\n {\n '--db': String,\n '--db-accept-recommended': Boolean,\n '--db-connection-string': String,\n '--help': Boolean,\n '--local-template': String,\n '--name': String,\n '--secret': String,\n '--template': String,\n '--template-branch': String,\n\n // Next.js\n '--init-next': Boolean, // TODO: Is this needed if we detect if inside Next.js project?\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 '-h': '--help',\n '-n': '--name',\n '-t': '--template',\n },\n { permissive: true },\n )\n }\n\n async init(): Promise<void> {\n try {\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 // Detect if inside Next.js project\n const nextAppDetails = await getNextAppDetails(process.cwd())\n const {\n hasTopLevelLayout,\n isPayloadInstalled,\n isSupportedNextVersion,\n nextAppDir,\n nextConfigPath,\n nextVersion,\n } = nextAppDetails\n\n if (nextConfigPath && !isSupportedNextVersion) {\n p.log.warn(\n `Next.js v${nextVersion} is unsupported. Next.js >= 15 is required to use Payload.`,\n )\n p.outro(feedbackOutro())\n process.exit(0)\n }\n\n // Upgrade Payload in existing project\n if (isPayloadInstalled && nextConfigPath) {\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 { message, success: updateSuccess } = await updatePayloadInProject(nextAppDetails)\n if (updateSuccess) {\n info(message)\n } else {\n error(message)\n }\n }\n\n p.outro(feedbackOutro())\n process.exit(0)\n }\n\n if (nextConfigPath) {\n this.args['--name'] = slugify(path.basename(path.dirname(nextConfigPath)))\n }\n\n const projectName = await parseProjectName(this.args)\n const projectDir = nextConfigPath\n ? path.dirname(nextConfigPath)\n : path.resolve(process.cwd(), slugify(projectName))\n\n const packageManager = await getPackageManager({ cliArgs: this.args, projectDir })\n\n if (nextConfigPath) {\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,\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 writeEnvFile({\n cliArgs: this.args,\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 const templateArg = this.args['--template']\n if (templateArg) {\n const valid = validateTemplate(templateArg)\n if (!valid) {\n helpMessage()\n process.exit(1)\n }\n }\n\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 'starter': {\n const dbDetails = await selectDb(this.args, projectName)\n const payloadSecret = generateSecret()\n await createProject({\n cliArgs: this.args,\n dbDetails,\n packageManager,\n projectDir,\n projectName,\n template,\n })\n await writeEnvFile({\n cliArgs: this.args,\n databaseUri: dbDetails.dbUri,\n payloadSecret,\n projectDir,\n template,\n })\n break\n }\n case 'plugin': {\n await createProject({\n cliArgs: this.args,\n packageManager,\n projectDir,\n projectName,\n template,\n })\n break\n }\n }\n\n info('Payload project successfully created!')\n p.note(successMessage(projectDir, packageManager), chalk.bgGreen(chalk.black(' Next Steps ')))\n p.outro(feedbackOutro())\n } catch (err: unknown) {\n error(err instanceof Error ? err.message : 'An error occurred')\n }\n }\n}\n"],"names":["p","slugify","arg","chalk","figures","path","configurePayloadConfig","createProject","generateSecret","getPackageManager","getNextAppDetails","initNext","parseProjectName","parseTemplate","selectDb","getValidTemplates","validateTemplate","updatePayloadInProject","writeEnvFile","error","info","feedbackOutro","helpMessage","moveMessage","successfulNextInit","successMessage","Main","args","constructor","String","Boolean","permissive","init","process","exit","console","log","intro","bgCyan","black","note","nextAppDetails","cwd","hasTopLevelLayout","isPayloadInstalled","isSupportedNextVersion","nextAppDir","nextConfigPath","nextVersion","warn","outro","shouldUpdate","confirm","initialValue","message","bold","isCancel","success","updateSuccess","basename","dirname","projectName","projectDir","resolve","packageManager","cliArgs","step","bgBlack","triangleUp","proceed","green","dbDetails","result","dbType","type","projectDirOrConfigPath","payloadConfigPath","databaseUri","dbUri","payloadSecret","bgGreen","templateArg","valid","validTemplates","template","err","Error"],"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 { CliArgs } from './types.js'\n\nimport { configurePayloadConfig } from './lib/configure-payload-config.js'\nimport { PACKAGE_VERSION } from './lib/constants.js'\nimport { createProject } from './lib/create-project.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 { parseProjectName } from './lib/parse-project-name.js'\nimport { parseTemplate } from './lib/parse-template.js'\nimport { selectDb } from './lib/select-db.js'\nimport { getValidTemplates, validateTemplate } from './lib/templates.js'\nimport { updatePayloadInProject } from './lib/update-payload-in-project.js'\nimport { writeEnvFile } from './lib/write-env-file.js'\nimport { debug, error, info } from './utils/log.js'\nimport {\n feedbackOutro,\n helpMessage,\n moveMessage,\n successfulNextInit,\n successMessage,\n} from './utils/messages.js'\n\nexport class Main {\n args: CliArgs\n\n constructor() {\n // @ts-expect-error bad typings\n this.args = arg(\n {\n '--db': String,\n '--db-accept-recommended': Boolean,\n '--db-connection-string': String,\n '--help': Boolean,\n '--local-template': String,\n '--name': String,\n '--secret': String,\n '--template': String,\n '--template-branch': String,\n\n // Next.js\n '--init-next': Boolean, // TODO: Is this needed if we detect if inside Next.js project?\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 '-h': '--help',\n '-n': '--name',\n '-t': '--template',\n },\n { permissive: true },\n )\n }\n\n async init(): Promise<void> {\n try {\n if (this.args['--help']) {\n helpMessage()\n process.exit(0)\n }\n\n const debugFlag = this.args['--debug']\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 // Detect if inside Next.js project\n const nextAppDetails = await getNextAppDetails(process.cwd())\n const {\n hasTopLevelLayout,\n isPayloadInstalled,\n isSupportedNextVersion,\n nextAppDir,\n nextConfigPath,\n nextVersion,\n } = nextAppDetails\n\n if (nextConfigPath && !isSupportedNextVersion) {\n p.log.warn(\n `Next.js v${nextVersion} is unsupported. Next.js >= 15 is required to use Payload.`,\n )\n p.outro(feedbackOutro())\n process.exit(0)\n }\n\n // Upgrade Payload in existing project\n if (isPayloadInstalled && nextConfigPath) {\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 { message, success: updateSuccess } = await updatePayloadInProject(nextAppDetails)\n if (updateSuccess) {\n info(message)\n } else {\n error(message)\n }\n }\n\n p.outro(feedbackOutro())\n process.exit(0)\n }\n\n if (nextConfigPath) {\n this.args['--name'] = slugify(path.basename(path.dirname(nextConfigPath)))\n }\n\n const projectName = await parseProjectName(this.args)\n const projectDir = nextConfigPath\n ? path.dirname(nextConfigPath)\n : path.resolve(process.cwd(), slugify(projectName))\n\n const packageManager = await getPackageManager({ cliArgs: this.args, projectDir })\n\n if (nextConfigPath) {\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,\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 writeEnvFile({\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 const templateArg = this.args['--template']\n if (templateArg) {\n const valid = validateTemplate(templateArg)\n if (!valid) {\n helpMessage()\n process.exit(1)\n }\n }\n\n if (debugFlag) {\n debug(`Using templates from git tag: ${PACKAGE_VERSION}`)\n }\n\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 'starter': {\n const dbDetails = await selectDb(this.args, projectName)\n const payloadSecret = generateSecret()\n await createProject({\n cliArgs: this.args,\n dbDetails,\n packageManager,\n projectDir,\n projectName,\n template,\n })\n await writeEnvFile({\n cliArgs: this.args,\n databaseType: dbDetails.type,\n databaseUri: dbDetails.dbUri,\n payloadSecret,\n projectDir,\n template,\n })\n break\n }\n case 'plugin': {\n await createProject({\n cliArgs: this.args,\n packageManager,\n projectDir,\n projectName,\n template,\n })\n break\n }\n }\n\n info('Payload project successfully created!')\n p.note(successMessage(projectDir, packageManager), chalk.bgGreen(chalk.black(' Next Steps ')))\n p.outro(feedbackOutro())\n } catch (err: unknown) {\n error(err instanceof Error ? err.message : 'An error occurred')\n }\n }\n}\n"],"names":["p","slugify","arg","chalk","figures","path","configurePayloadConfig","PACKAGE_VERSION","createProject","generateSecret","getPackageManager","getNextAppDetails","initNext","parseProjectName","parseTemplate","selectDb","getValidTemplates","validateTemplate","updatePayloadInProject","writeEnvFile","debug","error","info","feedbackOutro","helpMessage","moveMessage","successfulNextInit","successMessage","Main","args","constructor","String","Boolean","permissive","init","process","exit","debugFlag","console","log","intro","bgCyan","black","note","nextAppDetails","cwd","hasTopLevelLayout","isPayloadInstalled","isSupportedNextVersion","nextAppDir","nextConfigPath","nextVersion","warn","outro","shouldUpdate","confirm","initialValue","message","bold","isCancel","success","updateSuccess","basename","dirname","projectName","projectDir","resolve","packageManager","cliArgs","step","bgBlack","triangleUp","proceed","green","dbDetails","result","dbType","type","projectDirOrConfigPath","payloadConfigPath","databaseType","databaseUri","dbUri","payloadSecret","bgGreen","templateArg","valid","validTemplates","template","err","Error"],"mappings":"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"}
|
@@ -1,18 +1,18 @@
|
|
1
1
|
/* THIS FILE WAS GENERATED AUTOMATICALLY BY PAYLOAD. */
|
2
|
+
/* DO NOT MODIFY IT BECAUSE IT COULD BE REWRITTEN AT ANY TIME. */
|
2
3
|
import type { Metadata } from 'next'
|
3
4
|
|
4
5
|
import config from '@payload-config'
|
5
|
-
/* DO NOT MODIFY IT BECAUSE IT COULD BE REWRITTEN AT ANY TIME. */
|
6
6
|
import { NotFoundPage, generatePageMetadata } from '@payloadcms/next/views'
|
7
7
|
import { importMap } from '../importMap'
|
8
8
|
|
9
9
|
type Args = {
|
10
|
-
params: {
|
10
|
+
params: Promise<{
|
11
11
|
segments: string[]
|
12
|
-
}
|
13
|
-
searchParams: {
|
12
|
+
}>
|
13
|
+
searchParams: Promise<{
|
14
14
|
[key: string]: string | string[]
|
15
|
-
}
|
15
|
+
}>
|
16
16
|
}
|
17
17
|
|
18
18
|
export const generateMetadata = ({ params, searchParams }: Args): Promise<Metadata> =>
|
@@ -1,18 +1,18 @@
|
|
1
1
|
/* THIS FILE WAS GENERATED AUTOMATICALLY BY PAYLOAD. */
|
2
|
+
/* DO NOT MODIFY IT BECAUSE IT COULD BE REWRITTEN AT ANY TIME. */
|
2
3
|
import type { Metadata } from 'next'
|
3
4
|
|
4
5
|
import config from '@payload-config'
|
5
|
-
/* DO NOT MODIFY IT BECAUSE IT COULD BE REWRITTEN AT ANY TIME. */
|
6
6
|
import { RootPage, generatePageMetadata } from '@payloadcms/next/views'
|
7
7
|
import { importMap } from '../importMap'
|
8
8
|
|
9
9
|
type Args = {
|
10
|
-
params: {
|
10
|
+
params: Promise<{
|
11
11
|
segments: string[]
|
12
|
-
}
|
13
|
-
searchParams: {
|
12
|
+
}>
|
13
|
+
searchParams: Promise<{
|
14
14
|
[key: string]: string | string[]
|
15
|
-
}
|
15
|
+
}>
|
16
16
|
}
|
17
17
|
|
18
18
|
export const generateMetadata = ({ params, searchParams }: Args): Promise<Metadata> =>
|
@@ -1,10 +1,19 @@
|
|
1
1
|
/* THIS FILE WAS GENERATED AUTOMATICALLY BY PAYLOAD. */
|
2
|
-
/* DO NOT MODIFY
|
2
|
+
/* DO NOT MODIFY IT BECAUSE IT COULD BE REWRITTEN AT ANY TIME. */
|
3
3
|
import config from '@payload-config'
|
4
|
-
import
|
4
|
+
import '@payloadcms/next/css'
|
5
|
+
import {
|
6
|
+
REST_DELETE,
|
7
|
+
REST_GET,
|
8
|
+
REST_OPTIONS,
|
9
|
+
REST_PATCH,
|
10
|
+
REST_POST,
|
11
|
+
REST_PUT,
|
12
|
+
} from '@payloadcms/next/routes'
|
5
13
|
|
6
14
|
export const GET = REST_GET(config)
|
7
15
|
export const POST = REST_POST(config)
|
8
16
|
export const DELETE = REST_DELETE(config)
|
9
17
|
export const PATCH = REST_PATCH(config)
|
18
|
+
export const PUT = REST_PUT(config)
|
10
19
|
export const OPTIONS = REST_OPTIONS(config)
|
@@ -1,6 +1,8 @@
|
|
1
1
|
/* THIS FILE WAS GENERATED AUTOMATICALLY BY PAYLOAD. */
|
2
|
-
/* DO NOT MODIFY
|
2
|
+
/* DO NOT MODIFY IT BECAUSE IT COULD BE REWRITTEN AT ANY TIME. */
|
3
3
|
import config from '@payload-config'
|
4
|
-
import { GRAPHQL_POST } from '@payloadcms/next/routes'
|
4
|
+
import { GRAPHQL_POST, REST_OPTIONS } from '@payloadcms/next/routes'
|
5
5
|
|
6
6
|
export const POST = GRAPHQL_POST(config)
|
7
|
+
|
8
|
+
export const OPTIONS = REST_OPTIONS(config)
|
@@ -1,6 +1,7 @@
|
|
1
1
|
/* THIS FILE WAS GENERATED AUTOMATICALLY BY PAYLOAD. */
|
2
|
-
/* DO NOT MODIFY
|
2
|
+
/* DO NOT MODIFY IT BECAUSE IT COULD BE REWRITTEN AT ANY TIME. */
|
3
3
|
import config from '@payload-config'
|
4
|
+
import '@payloadcms/next/css'
|
4
5
|
import { GRAPHQL_PLAYGROUND_GET } from '@payloadcms/next/routes'
|
5
6
|
|
6
7
|
export const GET = GRAPHQL_PLAYGROUND_GET(config)
|
@@ -1,19 +1,29 @@
|
|
1
1
|
/* THIS FILE WAS GENERATED AUTOMATICALLY BY PAYLOAD. */
|
2
|
-
import configPromise from '@payload-config'
|
3
|
-
import '@payloadcms/next/css'
|
4
|
-
import { RootLayout } from '@payloadcms/next/layouts'
|
5
2
|
/* DO NOT MODIFY IT BECAUSE IT COULD BE REWRITTEN AT ANY TIME. */
|
3
|
+
import config from '@payload-config'
|
4
|
+
import '@payloadcms/next/css'
|
5
|
+
import type { ServerFunctionClient } from 'payload'
|
6
|
+
import { handleServerFunctions, RootLayout } from '@payloadcms/next/layouts'
|
6
7
|
import React from 'react'
|
7
8
|
|
9
|
+
import { importMap } from './admin/importMap.js'
|
8
10
|
import './custom.scss'
|
9
|
-
import { importMap } from './admin/importMap'
|
10
11
|
|
11
12
|
type Args = {
|
12
13
|
children: React.ReactNode
|
13
14
|
}
|
14
15
|
|
16
|
+
const serverFunction: ServerFunctionClient = async function (args) {
|
17
|
+
'use server'
|
18
|
+
return handleServerFunctions({
|
19
|
+
...args,
|
20
|
+
config,
|
21
|
+
importMap,
|
22
|
+
})
|
23
|
+
}
|
24
|
+
|
15
25
|
const Layout = ({ children }: Args) => (
|
16
|
-
<RootLayout importMap={importMap}
|
26
|
+
<RootLayout config={config} importMap={importMap} serverFunction={serverFunction}>
|
17
27
|
{children}
|
18
28
|
</RootLayout>
|
19
29
|
)
|