create-payload-app 3.0.0-beta.126 → 3.0.0-beta.127
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/templates.d.ts.map +1 -1
- package/dist/lib/templates.js +3 -2
- package/dist/lib/templates.js.map +1 -1
- package/dist/main.d.ts.map +1 -1
- package/dist/main.js +6 -1
- package/dist/main.js.map +1 -1
- 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"}
|
@@ -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"}
|
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 ')));
|
@@ -156,6 +158,9 @@ export class Main {
|
|
156
158
|
process.exit(1);
|
157
159
|
}
|
158
160
|
}
|
161
|
+
if (debugFlag) {
|
162
|
+
debug(`Using templates from git tag: ${PACKAGE_VERSION}`);
|
163
|
+
}
|
159
164
|
const validTemplates = getValidTemplates();
|
160
165
|
const template = await parseTemplate(this.args, validTemplates);
|
161
166
|
if (!template) {
|
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 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 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","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","databaseType","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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"}
|