create-payload-app 3.39.0-internal.32c7661 → 3.39.0

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.
@@ -1,4 +1,6 @@
1
1
  import type { ProjectTemplate } from '../types.js';
2
- export declare function validateTemplate(templateName: string): boolean;
2
+ export declare function validateTemplate({ templateName }: {
3
+ templateName: string;
4
+ }): boolean;
3
5
  export declare function getValidTemplates(): ProjectTemplate[];
4
6
  //# sourceMappingURL=templates.d.ts.map
@@ -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;AAKlD,wBAAgB,gBAAgB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAQ9D;AAED,wBAAgB,iBAAiB,IAAI,eAAe,EAAE,CAsBrD"}
1
+ {"version":3,"file":"templates.d.ts","sourceRoot":"","sources":["../../src/lib/templates.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAIlD,wBAAgB,gBAAgB,CAAC,EAAE,YAAY,EAAE,EAAE;IAAE,YAAY,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAQpF;AAED,wBAAgB,iBAAiB,IAAI,eAAe,EAAE,CAsBrD"}
@@ -1,6 +1,5 @@
1
1
  import { error, info } from '../utils/log.js';
2
- import { PACKAGE_VERSION } from './constants.js';
3
- export function validateTemplate(templateName) {
2
+ export function validateTemplate({ templateName }) {
4
3
  const validTemplates = getValidTemplates();
5
4
  if (!validTemplates.map((t)=>t.name).includes(templateName)) {
6
5
  error(`'${templateName}' is not a valid template.`);
@@ -16,13 +15,13 @@ export function getValidTemplates() {
16
15
  name: 'blank',
17
16
  type: 'starter',
18
17
  description: 'Blank 3.0 Template',
19
- url: `https://github.com/payloadcms/payload/templates/blank#v${PACKAGE_VERSION}`
18
+ url: `https://github.com/payloadcms/payload/templates/blank#main`
20
19
  },
21
20
  {
22
21
  name: 'website',
23
22
  type: 'starter',
24
23
  description: 'Website Template',
25
- url: `https://github.com/payloadcms/payload/templates/website#v${PACKAGE_VERSION}`
24
+ url: `https://github.com/payloadcms/payload/templates/website#main`
26
25
  },
27
26
  {
28
27
  name: 'plugin',
@@ -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'\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 // Starters _must_ be a valid template name from the templates/ directory\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 name: 'plugin',\n type: 'plugin',\n description: 'Template for creating a Payload plugin',\n url: 'https://github.com/payloadcms/payload/templates/plugin#main',\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,OAAO;QACvE,OAAO;IACT;IACA,OAAO;AACT;AAEA,OAAO,SAASL;IACd,yEAAyE;IACzE,OAAO;QACL;YACEG,MAAM;YACNG,MAAM;YACNC,aAAa;YACbC,KAAK,CAAC,uDAAuD,EAAEZ,iBAAiB;QAClF;QACA;YACEO,MAAM;YACNG,MAAM;YACNC,aAAa;YACbC,KAAK,CAAC,yDAAyD,EAAEZ,iBAAiB;QACpF;QACA;YACEO,MAAM;YACNG,MAAM;YACNC,aAAa;YACbC,KAAK;QACP;KACD;AACH"}
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 }: { 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 // Starters _must_ be a valid template name from the templates/ directory\n return [\n {\n name: 'blank',\n type: 'starter',\n description: 'Blank 3.0 Template',\n url: `https://github.com/payloadcms/payload/templates/blank#main`,\n },\n {\n name: 'website',\n type: 'starter',\n description: 'Website Template',\n url: `https://github.com/payloadcms/payload/templates/website#main`,\n },\n {\n name: 'plugin',\n type: 'plugin',\n description: 'Template for creating a Payload plugin',\n url: 'https://github.com/payloadcms/payload/templates/plugin#main',\n },\n ]\n}\n"],"names":["error","info","validateTemplate","templateName","validTemplates","getValidTemplates","map","t","name","includes","join","type","description","url"],"mappings":"AAEA,SAASA,KAAK,EAAEC,IAAI,QAAQ,kBAAiB;AAE7C,OAAO,SAASC,iBAAiB,EAAEC,YAAY,EAA4B;IACzE,MAAMC,iBAAiBC;IACvB,IAAI,CAACD,eAAeE,GAAG,CAAC,CAACC,IAAMA,EAAEC,IAAI,EAAEC,QAAQ,CAACN,eAAe;QAC7DH,MAAM,CAAC,CAAC,EAAEG,aAAa,0BAA0B,CAAC;QAClDF,KAAK,CAAC,iBAAiB,EAAEG,eAAeE,GAAG,CAAC,CAACC,IAAMA,EAAEC,IAAI,EAAEE,IAAI,CAAC,OAAO;QACvE,OAAO;IACT;IACA,OAAO;AACT;AAEA,OAAO,SAASL;IACd,yEAAyE;IACzE,OAAO;QACL;YACEG,MAAM;YACNG,MAAM;YACNC,aAAa;YACbC,KAAK,CAAC,0DAA0D,CAAC;QACnE;QACA;YACEL,MAAM;YACNG,MAAM;YACNC,aAAa;YACbC,KAAK,CAAC,4DAA4D,CAAC;QACrE;QACA;YACEL,MAAM;YACNG,MAAM;YACNC,aAAa;YACbC,KAAK;QACP;KACD;AACH"}
@@ -1 +1 @@
1
- {"version":3,"file":"update-payload-in-project.d.ts","sourceRoot":"","sources":["../../src/lib/update-payload-in-project.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AAOjD,wBAAsB,sBAAsB,CAC1C,UAAU,EAAE,cAAc,GACzB,OAAO,CAAC;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,CAAC,CA4EhD"}
1
+ {"version":3,"file":"update-payload-in-project.d.ts","sourceRoot":"","sources":["../../src/lib/update-payload-in-project.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AAQjD,wBAAsB,sBAAsB,CAC1C,UAAU,EAAE,cAAc,GACzB,OAAO,CAAC;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,CAAC,CAqEhD"}
@@ -1,10 +1,10 @@
1
- import execa from 'execa';
2
1
  import fse from 'fs-extra';
3
2
  import { fileURLToPath } from 'node:url';
4
3
  import path from 'path';
5
4
  const filename = fileURLToPath(import.meta.url);
6
5
  const dirname = path.dirname(filename);
7
6
  import { copyRecursiveSync } from '../utils/copy-recursive-sync.js';
7
+ import { getLatestPackageVersion } from '../utils/getLatestPackageVersion.js';
8
8
  import { info } from '../utils/log.js';
9
9
  import { getPackageManager } from './get-package-manager.js';
10
10
  import { installPackages } from './install-packages.js';
@@ -27,15 +27,10 @@ export async function updatePayloadInProject(appDetails) {
27
27
  const packageManager = await getPackageManager({
28
28
  projectDir
29
29
  });
30
- // Fetch latest Payload version from npm
31
- const { exitCode: getLatestVersionExitCode, stdout: latestPayloadVersion } = await execa('npm', [
32
- 'show',
33
- 'payload',
34
- 'version'
35
- ]);
36
- if (getLatestVersionExitCode !== 0) {
37
- throw new Error('Failed to fetch latest Payload version');
38
- }
30
+ // Fetch latest Payload version
31
+ const latestPayloadVersion = await getLatestPackageVersion({
32
+ packageName: 'payload'
33
+ });
39
34
  if (payloadVersion === latestPayloadVersion) {
40
35
  return {
41
36
  message: `Payload v${payloadVersion} is already up to date.`,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/lib/update-payload-in-project.ts"],"sourcesContent":["import execa from 'execa'\nimport fse from 'fs-extra'\nimport { fileURLToPath } from 'node:url'\nimport path from 'path'\n\nconst filename = fileURLToPath(import.meta.url)\nconst dirname = path.dirname(filename)\n\nimport type { NextAppDetails } from '../types.js'\n\nimport { copyRecursiveSync } from '../utils/copy-recursive-sync.js'\nimport { info } from '../utils/log.js'\nimport { getPackageManager } from './get-package-manager.js'\nimport { installPackages } from './install-packages.js'\n\nexport async function updatePayloadInProject(\n appDetails: NextAppDetails,\n): Promise<{ message: string; success: boolean }> {\n if (!appDetails.nextConfigPath) {\n return { message: 'No Next.js config found', success: false }\n }\n\n const projectDir = path.dirname(appDetails.nextConfigPath)\n\n const packageObj = (await fse.readJson(path.resolve(projectDir, 'package.json'))) as {\n dependencies?: Record<string, string>\n }\n if (!packageObj?.dependencies) {\n throw new Error('No package.json found in this project')\n }\n\n const payloadVersion = packageObj.dependencies?.payload\n if (!payloadVersion) {\n throw new Error('Payload is not installed in this project')\n }\n\n const packageManager = await getPackageManager({ projectDir })\n\n // Fetch latest Payload version from npm\n const { exitCode: getLatestVersionExitCode, stdout: latestPayloadVersion } = await execa('npm', [\n 'show',\n 'payload',\n 'version',\n ])\n if (getLatestVersionExitCode !== 0) {\n throw new Error('Failed to fetch latest Payload version')\n }\n\n if (payloadVersion === latestPayloadVersion) {\n return { message: `Payload v${payloadVersion} is already up to date.`, success: true }\n }\n\n // Update all existing Payload packages\n const payloadPackages = Object.keys(packageObj.dependencies).filter((dep) =>\n dep.startsWith('@payloadcms/'),\n )\n\n const packageNames = ['payload', ...payloadPackages]\n\n const packagesToUpdate = packageNames.map((pkg) => `${pkg}@${latestPayloadVersion}`)\n\n info(`Using ${packageManager}.\\n`)\n info(\n `Updating ${packagesToUpdate.length} Payload packages to v${latestPayloadVersion}...\\n\\n${packageNames.map((p) => ` - ${p}`).join('\\n')}`,\n )\n\n const { success: updateSuccess } = await installPackages({\n packageManager,\n packagesToInstall: packagesToUpdate,\n projectDir,\n })\n\n if (!updateSuccess) {\n throw new Error('Failed to update Payload packages')\n }\n info('Payload packages updated successfully.')\n\n info(`Updating Payload Next.js files...`)\n\n const templateFilesPath =\n process.env.JEST_WORKER_ID !== undefined\n ? path.resolve(dirname, '../../../../templates/blank')\n : path.resolve(dirname, '../..', 'dist/template')\n\n const templateSrcDir = path.resolve(templateFilesPath, 'src/app/(payload)')\n\n copyRecursiveSync(\n templateSrcDir,\n path.resolve(projectDir, appDetails.isSrcDir ? 'src/app' : 'app', '(payload)'),\n ['custom.scss$'], // Do not overwrite user's custom.scss\n )\n\n return { message: 'Payload updated successfully.', success: true }\n}\n"],"names":["execa","fse","fileURLToPath","path","filename","url","dirname","copyRecursiveSync","info","getPackageManager","installPackages","updatePayloadInProject","appDetails","nextConfigPath","message","success","projectDir","packageObj","readJson","resolve","dependencies","Error","payloadVersion","payload","packageManager","exitCode","getLatestVersionExitCode","stdout","latestPayloadVersion","payloadPackages","Object","keys","filter","dep","startsWith","packageNames","packagesToUpdate","map","pkg","length","p","join","updateSuccess","packagesToInstall","templateFilesPath","process","env","JEST_WORKER_ID","undefined","templateSrcDir","isSrcDir"],"mappings":"AAAA,OAAOA,WAAW,QAAO;AACzB,OAAOC,SAAS,WAAU;AAC1B,SAASC,aAAa,QAAQ,WAAU;AACxC,OAAOC,UAAU,OAAM;AAEvB,MAAMC,WAAWF,cAAc,YAAYG,GAAG;AAC9C,MAAMC,UAAUH,KAAKG,OAAO,CAACF;AAI7B,SAASG,iBAAiB,QAAQ,kCAAiC;AACnE,SAASC,IAAI,QAAQ,kBAAiB;AACtC,SAASC,iBAAiB,QAAQ,2BAA0B;AAC5D,SAASC,eAAe,QAAQ,wBAAuB;AAEvD,OAAO,eAAeC,uBACpBC,UAA0B;IAE1B,IAAI,CAACA,WAAWC,cAAc,EAAE;QAC9B,OAAO;YAAEC,SAAS;YAA2BC,SAAS;QAAM;IAC9D;IAEA,MAAMC,aAAab,KAAKG,OAAO,CAACM,WAAWC,cAAc;IAEzD,MAAMI,aAAc,MAAMhB,IAAIiB,QAAQ,CAACf,KAAKgB,OAAO,CAACH,YAAY;IAGhE,IAAI,CAACC,YAAYG,cAAc;QAC7B,MAAM,IAAIC,MAAM;IAClB;IAEA,MAAMC,iBAAiBL,WAAWG,YAAY,EAAEG;IAChD,IAAI,CAACD,gBAAgB;QACnB,MAAM,IAAID,MAAM;IAClB;IAEA,MAAMG,iBAAiB,MAAMf,kBAAkB;QAAEO;IAAW;IAE5D,wCAAwC;IACxC,MAAM,EAAES,UAAUC,wBAAwB,EAAEC,QAAQC,oBAAoB,EAAE,GAAG,MAAM5B,MAAM,OAAO;QAC9F;QACA;QACA;KACD;IACD,IAAI0B,6BAA6B,GAAG;QAClC,MAAM,IAAIL,MAAM;IAClB;IAEA,IAAIC,mBAAmBM,sBAAsB;QAC3C,OAAO;YAAEd,SAAS,CAAC,SAAS,EAAEQ,eAAe,uBAAuB,CAAC;YAAEP,SAAS;QAAK;IACvF;IAEA,uCAAuC;IACvC,MAAMc,kBAAkBC,OAAOC,IAAI,CAACd,WAAWG,YAAY,EAAEY,MAAM,CAAC,CAACC,MACnEA,IAAIC,UAAU,CAAC;IAGjB,MAAMC,eAAe;QAAC;WAAcN;KAAgB;IAEpD,MAAMO,mBAAmBD,aAAaE,GAAG,CAAC,CAACC,MAAQ,GAAGA,IAAI,CAAC,EAAEV,sBAAsB;IAEnFpB,KAAK,CAAC,MAAM,EAAEgB,eAAe,GAAG,CAAC;IACjChB,KACE,CAAC,SAAS,EAAE4B,iBAAiBG,MAAM,CAAC,sBAAsB,EAAEX,qBAAqB,OAAO,EAAEO,aAAaE,GAAG,CAAC,CAACG,IAAM,CAAC,IAAI,EAAEA,GAAG,EAAEC,IAAI,CAAC,OAAO;IAG5I,MAAM,EAAE1B,SAAS2B,aAAa,EAAE,GAAG,MAAMhC,gBAAgB;QACvDc;QACAmB,mBAAmBP;QACnBpB;IACF;IAEA,IAAI,CAAC0B,eAAe;QAClB,MAAM,IAAIrB,MAAM;IAClB;IACAb,KAAK;IAELA,KAAK,CAAC,iCAAiC,CAAC;IAExC,MAAMoC,oBACJC,QAAQC,GAAG,CAACC,cAAc,KAAKC,YAC3B7C,KAAKgB,OAAO,CAACb,SAAS,iCACtBH,KAAKgB,OAAO,CAACb,SAAS,SAAS;IAErC,MAAM2C,iBAAiB9C,KAAKgB,OAAO,CAACyB,mBAAmB;IAEvDrC,kBACE0C,gBACA9C,KAAKgB,OAAO,CAACH,YAAYJ,WAAWsC,QAAQ,GAAG,YAAY,OAAO,cAClE;QAAC;KAAe;IAGlB,OAAO;QAAEpC,SAAS;QAAiCC,SAAS;IAAK;AACnE"}
1
+ {"version":3,"sources":["../../src/lib/update-payload-in-project.ts"],"sourcesContent":["import fse from 'fs-extra'\nimport { fileURLToPath } from 'node:url'\nimport path from 'path'\n\nconst filename = fileURLToPath(import.meta.url)\nconst dirname = path.dirname(filename)\n\nimport type { NextAppDetails } from '../types.js'\n\nimport { copyRecursiveSync } from '../utils/copy-recursive-sync.js'\nimport { getLatestPackageVersion } from '../utils/getLatestPackageVersion.js'\nimport { info } from '../utils/log.js'\nimport { getPackageManager } from './get-package-manager.js'\nimport { installPackages } from './install-packages.js'\n\nexport async function updatePayloadInProject(\n appDetails: NextAppDetails,\n): Promise<{ message: string; success: boolean }> {\n if (!appDetails.nextConfigPath) {\n return { message: 'No Next.js config found', success: false }\n }\n\n const projectDir = path.dirname(appDetails.nextConfigPath)\n\n const packageObj = (await fse.readJson(path.resolve(projectDir, 'package.json'))) as {\n dependencies?: Record<string, string>\n }\n if (!packageObj?.dependencies) {\n throw new Error('No package.json found in this project')\n }\n\n const payloadVersion = packageObj.dependencies?.payload\n if (!payloadVersion) {\n throw new Error('Payload is not installed in this project')\n }\n\n const packageManager = await getPackageManager({ projectDir })\n\n // Fetch latest Payload version\n const latestPayloadVersion = await getLatestPackageVersion({ packageName: 'payload' })\n\n if (payloadVersion === latestPayloadVersion) {\n return { message: `Payload v${payloadVersion} is already up to date.`, success: true }\n }\n\n // Update all existing Payload packages\n const payloadPackages = Object.keys(packageObj.dependencies).filter((dep) =>\n dep.startsWith('@payloadcms/'),\n )\n\n const packageNames = ['payload', ...payloadPackages]\n\n const packagesToUpdate = packageNames.map((pkg) => `${pkg}@${latestPayloadVersion}`)\n\n info(`Using ${packageManager}.\\n`)\n info(\n `Updating ${packagesToUpdate.length} Payload packages to v${latestPayloadVersion}...\\n\\n${packageNames.map((p) => ` - ${p}`).join('\\n')}`,\n )\n\n const { success: updateSuccess } = await installPackages({\n packageManager,\n packagesToInstall: packagesToUpdate,\n projectDir,\n })\n\n if (!updateSuccess) {\n throw new Error('Failed to update Payload packages')\n }\n info('Payload packages updated successfully.')\n\n info(`Updating Payload Next.js files...`)\n\n const templateFilesPath =\n process.env.JEST_WORKER_ID !== undefined\n ? path.resolve(dirname, '../../../../templates/blank')\n : path.resolve(dirname, '../..', 'dist/template')\n\n const templateSrcDir = path.resolve(templateFilesPath, 'src/app/(payload)')\n\n copyRecursiveSync(\n templateSrcDir,\n path.resolve(projectDir, appDetails.isSrcDir ? 'src/app' : 'app', '(payload)'),\n ['custom.scss$'], // Do not overwrite user's custom.scss\n )\n\n return { message: 'Payload updated successfully.', success: true }\n}\n"],"names":["fse","fileURLToPath","path","filename","url","dirname","copyRecursiveSync","getLatestPackageVersion","info","getPackageManager","installPackages","updatePayloadInProject","appDetails","nextConfigPath","message","success","projectDir","packageObj","readJson","resolve","dependencies","Error","payloadVersion","payload","packageManager","latestPayloadVersion","packageName","payloadPackages","Object","keys","filter","dep","startsWith","packageNames","packagesToUpdate","map","pkg","length","p","join","updateSuccess","packagesToInstall","templateFilesPath","process","env","JEST_WORKER_ID","undefined","templateSrcDir","isSrcDir"],"mappings":"AAAA,OAAOA,SAAS,WAAU;AAC1B,SAASC,aAAa,QAAQ,WAAU;AACxC,OAAOC,UAAU,OAAM;AAEvB,MAAMC,WAAWF,cAAc,YAAYG,GAAG;AAC9C,MAAMC,UAAUH,KAAKG,OAAO,CAACF;AAI7B,SAASG,iBAAiB,QAAQ,kCAAiC;AACnE,SAASC,uBAAuB,QAAQ,sCAAqC;AAC7E,SAASC,IAAI,QAAQ,kBAAiB;AACtC,SAASC,iBAAiB,QAAQ,2BAA0B;AAC5D,SAASC,eAAe,QAAQ,wBAAuB;AAEvD,OAAO,eAAeC,uBACpBC,UAA0B;IAE1B,IAAI,CAACA,WAAWC,cAAc,EAAE;QAC9B,OAAO;YAAEC,SAAS;YAA2BC,SAAS;QAAM;IAC9D;IAEA,MAAMC,aAAad,KAAKG,OAAO,CAACO,WAAWC,cAAc;IAEzD,MAAMI,aAAc,MAAMjB,IAAIkB,QAAQ,CAAChB,KAAKiB,OAAO,CAACH,YAAY;IAGhE,IAAI,CAACC,YAAYG,cAAc;QAC7B,MAAM,IAAIC,MAAM;IAClB;IAEA,MAAMC,iBAAiBL,WAAWG,YAAY,EAAEG;IAChD,IAAI,CAACD,gBAAgB;QACnB,MAAM,IAAID,MAAM;IAClB;IAEA,MAAMG,iBAAiB,MAAMf,kBAAkB;QAAEO;IAAW;IAE5D,+BAA+B;IAC/B,MAAMS,uBAAuB,MAAMlB,wBAAwB;QAAEmB,aAAa;IAAU;IAEpF,IAAIJ,mBAAmBG,sBAAsB;QAC3C,OAAO;YAAEX,SAAS,CAAC,SAAS,EAAEQ,eAAe,uBAAuB,CAAC;YAAEP,SAAS;QAAK;IACvF;IAEA,uCAAuC;IACvC,MAAMY,kBAAkBC,OAAOC,IAAI,CAACZ,WAAWG,YAAY,EAAEU,MAAM,CAAC,CAACC,MACnEA,IAAIC,UAAU,CAAC;IAGjB,MAAMC,eAAe;QAAC;WAAcN;KAAgB;IAEpD,MAAMO,mBAAmBD,aAAaE,GAAG,CAAC,CAACC,MAAQ,GAAGA,IAAI,CAAC,EAAEX,sBAAsB;IAEnFjB,KAAK,CAAC,MAAM,EAAEgB,eAAe,GAAG,CAAC;IACjChB,KACE,CAAC,SAAS,EAAE0B,iBAAiBG,MAAM,CAAC,sBAAsB,EAAEZ,qBAAqB,OAAO,EAAEQ,aAAaE,GAAG,CAAC,CAACG,IAAM,CAAC,IAAI,EAAEA,GAAG,EAAEC,IAAI,CAAC,OAAO;IAG5I,MAAM,EAAExB,SAASyB,aAAa,EAAE,GAAG,MAAM9B,gBAAgB;QACvDc;QACAiB,mBAAmBP;QACnBlB;IACF;IAEA,IAAI,CAACwB,eAAe;QAClB,MAAM,IAAInB,MAAM;IAClB;IACAb,KAAK;IAELA,KAAK,CAAC,iCAAiC,CAAC;IAExC,MAAMkC,oBACJC,QAAQC,GAAG,CAACC,cAAc,KAAKC,YAC3B5C,KAAKiB,OAAO,CAACd,SAAS,iCACtBH,KAAKiB,OAAO,CAACd,SAAS,SAAS;IAErC,MAAM0C,iBAAiB7C,KAAKiB,OAAO,CAACuB,mBAAmB;IAEvDpC,kBACEyC,gBACA7C,KAAKiB,OAAO,CAACH,YAAYJ,WAAWoC,QAAQ,GAAG,YAAY,OAAO,cAClE;QAAC;KAAe;IAGlB,OAAO;QAAElC,SAAS;QAAiCC,SAAS;IAAK;AACnE"}
@@ -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;AAwBzC,qBAAa,IAAI;IACf,IAAI,EAAE,OAAO,CAAA;;IA8CP,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;CA0M5B"}
1
+ {"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAA;AAwBzC,qBAAa,IAAI;IACf,IAAI,EAAE,OAAO,CAAA;;IA8CP,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;CA+M5B"}
package/dist/main.js CHANGED
@@ -5,7 +5,6 @@ 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';
9
8
  import { createProject } from './lib/create-project.js';
10
9
  import { parseExample } from './lib/examples.js';
11
10
  import { generateSecret } from './lib/generate-secret.js';
@@ -17,6 +16,7 @@ import { parseTemplate } from './lib/parse-template.js';
17
16
  import { selectDb } from './lib/select-db.js';
18
17
  import { getValidTemplates, validateTemplate } from './lib/templates.js';
19
18
  import { updatePayloadInProject } from './lib/update-payload-in-project.js';
19
+ import { getLatestPackageVersion } from './utils/getLatestPackageVersion.js';
20
20
  import { debug, error, info } from './utils/log.js';
21
21
  import { feedbackOutro, helpMessage, moveMessage, successfulNextInit, successMessage } from './utils/messages.js';
22
22
  export class Main {
@@ -60,11 +60,15 @@ export class Main {
60
60
  }
61
61
  async init() {
62
62
  try {
63
+ const debugFlag = this.args['--debug'];
64
+ const LATEST_VERSION = await getLatestPackageVersion({
65
+ debug: debugFlag,
66
+ packageName: 'payload'
67
+ });
63
68
  if (this.args['--help']) {
64
69
  helpMessage();
65
70
  process.exit(0);
66
71
  }
67
- const debugFlag = this.args['--debug'];
68
72
  // eslint-disable-next-line no-console
69
73
  console.log('\n');
70
74
  p.intro(chalk.bgCyan(chalk.black(' create-payload-app ')));
@@ -155,7 +159,9 @@ export class Main {
155
159
  }
156
160
  const templateArg = this.args['--template'];
157
161
  if (templateArg) {
158
- const valid = validateTemplate(templateArg);
162
+ const valid = validateTemplate({
163
+ templateName: templateArg
164
+ });
159
165
  if (!valid) {
160
166
  helpMessage();
161
167
  process.exit(1);
@@ -180,7 +186,7 @@ export class Main {
180
186
  });
181
187
  }
182
188
  if (debugFlag) {
183
- debug(`Using ${exampleArg ? 'examples' : 'templates'} from git tag: v${PACKAGE_VERSION}`);
189
+ debug(`Using ${exampleArg ? 'examples' : 'templates'} from git tag: v${LATEST_VERSION}`);
184
190
  }
185
191
  if (!exampleArg) {
186
192
  const validTemplates = getValidTemplates();
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 { PACKAGE_VERSION } from './lib/constants.js'\nimport { createProject } from './lib/create-project.js'\nimport { parseExample } from './lib/examples.js'\nimport { generateSecret } from './lib/generate-secret.js'\nimport { getPackageManager } from './lib/get-package-manager.js'\nimport { getNextAppDetails, initNext } from './lib/init-next.js'\nimport { manageEnvFiles } from './lib/manage-env-files.js'\nimport { parseProjectName } from './lib/parse-project-name.js'\nimport { parseTemplate } from './lib/parse-template.js'\nimport { selectDb } from './lib/select-db.js'\nimport { getValidTemplates, validateTemplate } from './lib/templates.js'\nimport { updatePayloadInProject } from './lib/update-payload-in-project.js'\nimport { debug, error, info } from './utils/log.js'\nimport {\n feedbackOutro,\n helpMessage,\n moveMessage,\n successfulNextInit,\n 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 '--branch': String,\n '--db': String,\n '--db-accept-recommended': Boolean,\n '--db-connection-string': String,\n '--example': String,\n '--help': Boolean,\n '--local-template': String,\n '--name': String,\n '--secret': String,\n '--template': String,\n\n // Next.js\n '--init-next': Boolean, // TODO: Is this needed if we detect if inside Next.js project?\n\n // Package manager\n '--no-deps': Boolean,\n '--use-bun': Boolean,\n '--use-npm': Boolean,\n '--use-pnpm': Boolean,\n '--use-yarn': Boolean,\n\n // Other\n '--no-git': Boolean,\n\n // Flags\n '--beta': Boolean,\n '--debug': Boolean,\n '--dry-run': Boolean,\n\n // Aliases\n '-d': '--db',\n '-e': '--example',\n '-h': '--help',\n '-n': '--name',\n '-t': '--template',\n },\n { permissive: true },\n )\n }\n\n async init(): Promise<void> {\n try {\n 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 manageEnvFiles({\n cliArgs: this.args,\n databaseType: dbDetails.type,\n databaseUri: dbDetails.dbUri,\n payloadSecret: generateSecret(),\n projectDir,\n })\n\n info('Payload project successfully initialized!')\n p.note(successfulNextInit(), chalk.bgGreen(chalk.black(' Documentation ')))\n p.outro(feedbackOutro())\n return\n }\n\n 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 exampleArg = this.args['--example']\n\n if (exampleArg) {\n const example = await parseExample({\n name: exampleArg,\n branch: this.args['--branch'] ?? 'main',\n })\n\n if (!example) {\n helpMessage()\n process.exit(1)\n }\n\n await createProject({\n cliArgs: this.args,\n example,\n packageManager,\n projectDir,\n projectName,\n })\n }\n\n if (debugFlag) {\n debug(`Using ${exampleArg ? 'examples' : 'templates'} from git tag: v${PACKAGE_VERSION}`)\n }\n\n if (!exampleArg) {\n const validTemplates = getValidTemplates()\n const template = await parseTemplate(this.args, validTemplates)\n if (!template) {\n p.log.error('Invalid template given')\n p.outro(feedbackOutro())\n process.exit(1)\n }\n\n switch (template.type) {\n case 'plugin': {\n await createProject({\n cliArgs: this.args,\n packageManager,\n projectDir,\n projectName,\n template,\n })\n break\n }\n case 'starter': {\n const dbDetails = await selectDb(this.args, projectName)\n\n await createProject({\n cliArgs: this.args,\n dbDetails,\n packageManager,\n projectDir,\n projectName,\n template,\n })\n\n break\n }\n }\n }\n\n info('Payload project successfully created!')\n p.log.step(chalk.bgGreen(chalk.black(' Next Steps ')))\n p.log.message(successMessage(projectDir, packageManager))\n p.outro(feedbackOutro())\n } catch (err: unknown) {\n error(err instanceof Error ? err.message : 'An error occurred')\n }\n }\n}\n"],"names":["p","slugify","arg","chalk","figures","path","configurePayloadConfig","PACKAGE_VERSION","createProject","parseExample","generateSecret","getPackageManager","getNextAppDetails","initNext","manageEnvFiles","parseProjectName","parseTemplate","selectDb","getValidTemplates","validateTemplate","updatePayloadInProject","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","exampleArg","example","name","branch","validTemplates","template","err","Error"],"mappings":"AAAA,YAAYA,OAAO,iBAAgB;AACnC,OAAOC,aAAa,wBAAuB;AAC3C,OAAOC,SAAS,MAAK;AACrB,OAAOC,WAAW,QAAO;AACzB,OAAOC,aAAa,UAAS;AAC7B,OAAOC,UAAU,OAAM;AAIvB,SAASC,sBAAsB,QAAQ,oCAAmC;AAC1E,SAASC,eAAe,QAAQ,qBAAoB;AACpD,SAASC,aAAa,QAAQ,0BAAyB;AACvD,SAASC,YAAY,QAAQ,oBAAmB;AAChD,SAASC,cAAc,QAAQ,2BAA0B;AACzD,SAASC,iBAAiB,QAAQ,+BAA8B;AAChE,SAASC,iBAAiB,EAAEC,QAAQ,QAAQ,qBAAoB;AAChE,SAASC,cAAc,QAAQ,4BAA2B;AAC1D,SAASC,gBAAgB,QAAQ,8BAA6B;AAC9D,SAASC,aAAa,QAAQ,0BAAyB;AACvD,SAASC,QAAQ,QAAQ,qBAAoB;AAC7C,SAASC,iBAAiB,EAAEC,gBAAgB,QAAQ,qBAAoB;AACxE,SAASC,sBAAsB,QAAQ,qCAAoC;AAC3E,SAASC,KAAK,EAAEC,KAAK,EAAEC,IAAI,QAAQ,iBAAgB;AACnD,SACEC,aAAa,EACbC,WAAW,EACXC,WAAW,EACXC,kBAAkB,EAClBC,cAAc,QACT,sBAAqB;AAE5B,OAAO,MAAMC;IACXC,KAAa;IAEbC,aAAc;QACZ,+BAA+B;QAC/B,IAAI,CAACD,IAAI,GAAG5B,IACV;YACE,YAAY8B;YACZ,QAAQA;YACR,2BAA2BC;YAC3B,0BAA0BD;YAC1B,aAAaA;YACb,UAAUC;YACV,oBAAoBD;YACpB,UAAUA;YACV,YAAYA;YACZ,cAAcA;YAEd,UAAU;YACV,eAAeC;YAEf,kBAAkB;YAClB,aAAaA;YACb,aAAaA;YACb,aAAaA;YACb,cAAcA;YACd,cAAcA;YAEd,QAAQ;YACR,YAAYA;YAEZ,QAAQ;YACR,UAAUA;YACV,WAAWA;YACX,aAAaA;YAEb,UAAU;YACV,MAAM;YACN,MAAM;YACN,MAAM;YACN,MAAM;YACN,MAAM;QACR,GACA;YAAEC,YAAY;QAAK;IAEvB;IAEA,MAAMC,OAAsB;QAC1B,IAAI;YACF,IAAI,IAAI,CAACL,IAAI,CAAC,SAAS,EAAE;gBACvBL;gBACAW,QAAQC,IAAI,CAAC;YACf;YAEA,MAAMC,YAAY,IAAI,CAACR,IAAI,CAAC,UAAU;YAEtC,sCAAsC;YACtCS,QAAQC,GAAG,CAAC;YACZxC,EAAEyC,KAAK,CAACtC,MAAMuC,MAAM,CAACvC,MAAMwC,KAAK,CAAC;YACjC3C,EAAE4C,IAAI,CAAC;YAEP,mCAAmC;YACnC,MAAMC,iBAAiB,MAAMjC,kBAAkBwB,QAAQU,GAAG;YAC1D,MAAM,EACJC,iBAAiB,EACjBC,kBAAkB,EAClBC,sBAAsB,EACtBC,UAAU,EACVC,cAAc,EACdC,WAAW,EACZ,GAAGP;YAEJ,IAAIM,kBAAkB,CAACF,wBAAwB;gBAC7CjD,EAAEwC,GAAG,CAACa,IAAI,CACR,CAAC,SAAS,EAAED,YAAY,0DAA0D,CAAC;gBAErFpD,EAAEsD,KAAK,CAAC9B;gBACRY,QAAQC,IAAI,CAAC;YACf;YAEA,sCAAsC;YACtC,IAAIW,sBAAsBG,gBAAgB;gBACxCnD,EAAEwC,GAAG,CAACa,IAAI,CAAC,CAAC,iDAAiD,CAAC;gBAC9D,MAAME,eAAe,MAAMvD,EAAEwD,OAAO,CAAC;oBACnCC,cAAc;oBACdC,SAASvD,MAAMwD,IAAI,CAAC,CAAC,gCAAgC,CAAC;gBACxD;gBAEA,IAAI,CAAC3D,EAAE4D,QAAQ,CAACL,iBAAiBA,cAAc;oBAC7C,MAAM,EAAEG,OAAO,EAAEG,SAASC,aAAa,EAAE,GAAG,MAAM1C,uBAAuByB;oBACzE,IAAIiB,eAAe;wBACjBvC,KAAKmC;oBACP,OAAO;wBACLpC,MAAMoC;oBACR;gBACF;gBAEA1D,EAAEsD,KAAK,CAAC9B;gBACRY,QAAQC,IAAI,CAAC;YACf;YAEA,IAAIc,gBAAgB;gBAClB,IAAI,CAACrB,IAAI,CAAC,SAAS,GAAG7B,QAAQI,KAAK0D,QAAQ,CAAC1D,KAAK2D,OAAO,CAACb;YAC3D;YAEA,MAAMc,cAAc,MAAMlD,iBAAiB,IAAI,CAACe,IAAI;YACpD,MAAMoC,aAAaf,iBACf9C,KAAK2D,OAAO,CAACb,kBACb9C,KAAK8D,OAAO,CAAC/B,QAAQU,GAAG,IAAI7C,QAAQgE;YAExC,MAAMG,iBAAiB,MAAMzD,kBAAkB;gBAAE0D,SAAS,IAAI,CAACvC,IAAI;gBAAEoC;YAAW;YAEhF,IAAIf,gBAAgB;gBAClBnD,EAAEwC,GAAG,CAAC8B,IAAI,CACRnE,MAAMwD,IAAI,CAAC,GAAGxD,MAAMoE,OAAO,CAAC,CAAC,CAAC,EAAEnE,QAAQoE,UAAU,CAAC,SAAS,CAAC,EAAE,kBAAkB,CAAC;gBAGpF,MAAMC,UAAU,MAAMzE,EAAEwD,OAAO,CAAC;oBAC9BC,cAAc;oBACdC,SAASvD,MAAMwD,IAAI,CAAC,CAAC,QAAQ,EAAExD,MAAMuE,KAAK,CAAC,WAAW,iBAAiB,CAAC;gBAC1E;gBACA,IAAI1E,EAAE4D,QAAQ,CAACa,YAAY,CAACA,SAAS;oBACnCzE,EAAEsD,KAAK,CAAC9B;oBACRY,QAAQC,IAAI,CAAC;gBACf;gBAEA,iCAAiC;gBACjC,IAAIa,cAAcH,mBAAmB;oBACnC/C,EAAEwC,GAAG,CAACa,IAAI,CAAC3B,YAAY;wBAAEwB;wBAAYgB;oBAAW;oBAChDlE,EAAEsD,KAAK,CAAC9B;oBACRY,QAAQC,IAAI,CAAC;gBACf;gBAEA,MAAMsC,YAAY,MAAM1D,SAAS,IAAI,CAACa,IAAI,EAAEmC;gBAE5C,MAAMW,SAAS,MAAM/D,SAAS;oBAC5B,GAAG,IAAI,CAACiB,IAAI;oBACZ+C,QAAQF,UAAUG,IAAI;oBACtBjC;oBACAuB;oBACAF;gBACF;gBAEA,IAAIU,OAAOf,OAAO,KAAK,OAAO;oBAC5B7D,EAAEsD,KAAK,CAAC9B;oBACRY,QAAQC,IAAI,CAAC;gBACf;gBAEA,MAAM/B,uBAAuB;oBAC3BuE,QAAQF,WAAWG;oBACnBC,wBAAwB;wBACtBC,mBAAmBJ,OAAOI,iBAAiB;oBAC7C;gBACF;gBAEA,MAAMlE,eAAe;oBACnBuD,SAAS,IAAI,CAACvC,IAAI;oBAClBmD,cAAcN,UAAUG,IAAI;oBAC5BI,aAAaP,UAAUQ,KAAK;oBAC5BC,eAAe1E;oBACfwD;gBACF;gBAEA3C,KAAK;gBACLvB,EAAE4C,IAAI,CAACjB,sBAAsBxB,MAAMkF,OAAO,CAAClF,MAAMwC,KAAK,CAAC;gBACvD3C,EAAEsD,KAAK,CAAC9B;gBACR;YACF;YAEA,MAAM8D,cAAc,IAAI,CAACxD,IAAI,CAAC,aAAa;YAC3C,IAAIwD,aAAa;gBACf,MAAMC,QAAQpE,iBAAiBmE;gBAC/B,IAAI,CAACC,OAAO;oBACV9D;oBACAW,QAAQC,IAAI,CAAC;gBACf;YACF;YAEA,MAAMmD,aAAa,IAAI,CAAC1D,IAAI,CAAC,YAAY;YAEzC,IAAI0D,YAAY;gBACd,MAAMC,UAAU,MAAMhF,aAAa;oBACjCiF,MAAMF;oBACNG,QAAQ,IAAI,CAAC7D,IAAI,CAAC,WAAW,IAAI;gBACnC;gBAEA,IAAI,CAAC2D,SAAS;oBACZhE;oBACAW,QAAQC,IAAI,CAAC;gBACf;gBAEA,MAAM7B,cAAc;oBAClB6D,SAAS,IAAI,CAACvC,IAAI;oBAClB2D;oBACArB;oBACAF;oBACAD;gBACF;YACF;YAEA,IAAI3B,WAAW;gBACbjB,MAAM,CAAC,MAAM,EAAEmE,aAAa,aAAa,YAAY,gBAAgB,EAAEjF,iBAAiB;YAC1F;YAEA,IAAI,CAACiF,YAAY;gBACf,MAAMI,iBAAiB1E;gBACvB,MAAM2E,WAAW,MAAM7E,cAAc,IAAI,CAACc,IAAI,EAAE8D;gBAChD,IAAI,CAACC,UAAU;oBACb7F,EAAEwC,GAAG,CAAClB,KAAK,CAAC;oBACZtB,EAAEsD,KAAK,CAAC9B;oBACRY,QAAQC,IAAI,CAAC;gBACf;gBAEA,OAAQwD,SAASf,IAAI;oBACnB,KAAK;wBAAU;4BACb,MAAMtE,cAAc;gCAClB6D,SAAS,IAAI,CAACvC,IAAI;gCAClBsC;gCACAF;gCACAD;gCACA4B;4BACF;4BACA;wBACF;oBACA,KAAK;wBAAW;4BACd,MAAMlB,YAAY,MAAM1D,SAAS,IAAI,CAACa,IAAI,EAAEmC;4BAE5C,MAAMzD,cAAc;gCAClB6D,SAAS,IAAI,CAACvC,IAAI;gCAClB6C;gCACAP;gCACAF;gCACAD;gCACA4B;4BACF;4BAEA;wBACF;gBACF;YACF;YAEAtE,KAAK;YACLvB,EAAEwC,GAAG,CAAC8B,IAAI,CAACnE,MAAMkF,OAAO,CAAClF,MAAMwC,KAAK,CAAC;YACrC3C,EAAEwC,GAAG,CAACkB,OAAO,CAAC9B,eAAesC,YAAYE;YACzCpE,EAAEsD,KAAK,CAAC9B;QACV,EAAE,OAAOsE,KAAc;YACrBxE,MAAMwE,eAAeC,QAAQD,IAAIpC,OAAO,GAAG;QAC7C;IACF;AACF"}
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 { parseExample } from './lib/examples.js'\nimport { generateSecret } from './lib/generate-secret.js'\nimport { getPackageManager } from './lib/get-package-manager.js'\nimport { getNextAppDetails, initNext } from './lib/init-next.js'\nimport { manageEnvFiles } from './lib/manage-env-files.js'\nimport { parseProjectName } from './lib/parse-project-name.js'\nimport { parseTemplate } from './lib/parse-template.js'\nimport { selectDb } from './lib/select-db.js'\nimport { getValidTemplates, validateTemplate } from './lib/templates.js'\nimport { updatePayloadInProject } from './lib/update-payload-in-project.js'\nimport { getLatestPackageVersion } from './utils/getLatestPackageVersion.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 '--branch': String,\n '--db': String,\n '--db-accept-recommended': Boolean,\n '--db-connection-string': String,\n '--example': String,\n '--help': Boolean,\n '--local-template': String,\n '--name': String,\n '--secret': String,\n '--template': String,\n\n // Next.js\n '--init-next': Boolean, // TODO: Is this needed if we detect if inside Next.js project?\n\n // Package manager\n '--no-deps': Boolean,\n '--use-bun': Boolean,\n '--use-npm': Boolean,\n '--use-pnpm': Boolean,\n '--use-yarn': Boolean,\n\n // Other\n '--no-git': Boolean,\n\n // Flags\n '--beta': Boolean,\n '--debug': Boolean,\n '--dry-run': Boolean,\n\n // Aliases\n '-d': '--db',\n '-e': '--example',\n '-h': '--help',\n '-n': '--name',\n '-t': '--template',\n },\n { permissive: true },\n )\n }\n\n async init(): Promise<void> {\n try {\n const debugFlag = this.args['--debug']\n\n const LATEST_VERSION = await getLatestPackageVersion({\n debug: debugFlag,\n packageName: 'payload',\n })\n\n if (this.args['--help']) {\n helpMessage()\n process.exit(0)\n }\n\n // eslint-disable-next-line no-console\n console.log('\\n')\n p.intro(chalk.bgCyan(chalk.black(' create-payload-app ')))\n p.note(\"Welcome to Payload. Let's create a project!\")\n\n // 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 manageEnvFiles({\n cliArgs: this.args,\n databaseType: dbDetails.type,\n databaseUri: dbDetails.dbUri,\n payloadSecret: generateSecret(),\n projectDir,\n })\n\n info('Payload project successfully initialized!')\n p.note(successfulNextInit(), chalk.bgGreen(chalk.black(' Documentation ')))\n p.outro(feedbackOutro())\n return\n }\n\n const templateArg = this.args['--template']\n if (templateArg) {\n const valid = validateTemplate({ templateName: templateArg })\n if (!valid) {\n helpMessage()\n process.exit(1)\n }\n }\n\n const exampleArg = this.args['--example']\n\n if (exampleArg) {\n const example = await parseExample({\n name: exampleArg,\n branch: this.args['--branch'] ?? 'main',\n })\n\n if (!example) {\n helpMessage()\n process.exit(1)\n }\n\n await createProject({\n cliArgs: this.args,\n example,\n packageManager,\n projectDir,\n projectName,\n })\n }\n\n if (debugFlag) {\n debug(`Using ${exampleArg ? 'examples' : 'templates'} from git tag: v${LATEST_VERSION}`)\n }\n\n if (!exampleArg) {\n const validTemplates = getValidTemplates()\n const template = await parseTemplate(this.args, validTemplates)\n if (!template) {\n p.log.error('Invalid template given')\n p.outro(feedbackOutro())\n process.exit(1)\n }\n\n switch (template.type) {\n case 'plugin': {\n await createProject({\n cliArgs: this.args,\n packageManager,\n projectDir,\n projectName,\n template,\n })\n break\n }\n case 'starter': {\n const dbDetails = await selectDb(this.args, projectName)\n\n await createProject({\n cliArgs: this.args,\n dbDetails,\n packageManager,\n projectDir,\n projectName,\n template,\n })\n\n break\n }\n }\n }\n\n info('Payload project successfully created!')\n p.log.step(chalk.bgGreen(chalk.black(' Next Steps ')))\n p.log.message(successMessage(projectDir, packageManager))\n p.outro(feedbackOutro())\n } catch (err: unknown) {\n error(err instanceof Error ? err.message : 'An error occurred')\n }\n }\n}\n"],"names":["p","slugify","arg","chalk","figures","path","configurePayloadConfig","createProject","parseExample","generateSecret","getPackageManager","getNextAppDetails","initNext","manageEnvFiles","parseProjectName","parseTemplate","selectDb","getValidTemplates","validateTemplate","updatePayloadInProject","getLatestPackageVersion","debug","error","info","feedbackOutro","helpMessage","moveMessage","successfulNextInit","successMessage","Main","args","constructor","String","Boolean","permissive","init","debugFlag","LATEST_VERSION","packageName","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","templateName","exampleArg","example","name","branch","validTemplates","template","err","Error"],"mappings":"AAAA,YAAYA,OAAO,iBAAgB;AACnC,OAAOC,aAAa,wBAAuB;AAC3C,OAAOC,SAAS,MAAK;AACrB,OAAOC,WAAW,QAAO;AACzB,OAAOC,aAAa,UAAS;AAC7B,OAAOC,UAAU,OAAM;AAIvB,SAASC,sBAAsB,QAAQ,oCAAmC;AAC1E,SAASC,aAAa,QAAQ,0BAAyB;AACvD,SAASC,YAAY,QAAQ,oBAAmB;AAChD,SAASC,cAAc,QAAQ,2BAA0B;AACzD,SAASC,iBAAiB,QAAQ,+BAA8B;AAChE,SAASC,iBAAiB,EAAEC,QAAQ,QAAQ,qBAAoB;AAChE,SAASC,cAAc,QAAQ,4BAA2B;AAC1D,SAASC,gBAAgB,QAAQ,8BAA6B;AAC9D,SAASC,aAAa,QAAQ,0BAAyB;AACvD,SAASC,QAAQ,QAAQ,qBAAoB;AAC7C,SAASC,iBAAiB,EAAEC,gBAAgB,QAAQ,qBAAoB;AACxE,SAASC,sBAAsB,QAAQ,qCAAoC;AAC3E,SAASC,uBAAuB,QAAQ,qCAAoC;AAC5E,SAASC,KAAK,EAAEC,KAAK,EAAEC,IAAI,QAAQ,iBAAgB;AACnD,SACEC,aAAa,EACbC,WAAW,EACXC,WAAW,EACXC,kBAAkB,EAClBC,cAAc,QACT,sBAAqB;AAE5B,OAAO,MAAMC;IACXC,KAAa;IAEbC,aAAc;QACZ,+BAA+B;QAC/B,IAAI,CAACD,IAAI,GAAG5B,IACV;YACE,YAAY8B;YACZ,QAAQA;YACR,2BAA2BC;YAC3B,0BAA0BD;YAC1B,aAAaA;YACb,UAAUC;YACV,oBAAoBD;YACpB,UAAUA;YACV,YAAYA;YACZ,cAAcA;YAEd,UAAU;YACV,eAAeC;YAEf,kBAAkB;YAClB,aAAaA;YACb,aAAaA;YACb,aAAaA;YACb,cAAcA;YACd,cAAcA;YAEd,QAAQ;YACR,YAAYA;YAEZ,QAAQ;YACR,UAAUA;YACV,WAAWA;YACX,aAAaA;YAEb,UAAU;YACV,MAAM;YACN,MAAM;YACN,MAAM;YACN,MAAM;YACN,MAAM;QACR,GACA;YAAEC,YAAY;QAAK;IAEvB;IAEA,MAAMC,OAAsB;QAC1B,IAAI;YACF,MAAMC,YAAY,IAAI,CAACN,IAAI,CAAC,UAAU;YAEtC,MAAMO,iBAAiB,MAAMjB,wBAAwB;gBACnDC,OAAOe;gBACPE,aAAa;YACf;YAEA,IAAI,IAAI,CAACR,IAAI,CAAC,SAAS,EAAE;gBACvBL;gBACAc,QAAQC,IAAI,CAAC;YACf;YAEA,sCAAsC;YACtCC,QAAQC,GAAG,CAAC;YACZ1C,EAAE2C,KAAK,CAACxC,MAAMyC,MAAM,CAACzC,MAAM0C,KAAK,CAAC;YACjC7C,EAAE8C,IAAI,CAAC;YAEP,mCAAmC;YACnC,MAAMC,iBAAiB,MAAMpC,kBAAkB4B,QAAQS,GAAG;YAC1D,MAAM,EACJC,iBAAiB,EACjBC,kBAAkB,EAClBC,sBAAsB,EACtBC,UAAU,EACVC,cAAc,EACdC,WAAW,EACZ,GAAGP;YAEJ,IAAIM,kBAAkB,CAACF,wBAAwB;gBAC7CnD,EAAE0C,GAAG,CAACa,IAAI,CACR,CAAC,SAAS,EAAED,YAAY,0DAA0D,CAAC;gBAErFtD,EAAEwD,KAAK,CAAChC;gBACRe,QAAQC,IAAI,CAAC;YACf;YAEA,sCAAsC;YACtC,IAAIU,sBAAsBG,gBAAgB;gBACxCrD,EAAE0C,GAAG,CAACa,IAAI,CAAC,CAAC,iDAAiD,CAAC;gBAC9D,MAAME,eAAe,MAAMzD,EAAE0D,OAAO,CAAC;oBACnCC,cAAc;oBACdC,SAASzD,MAAM0D,IAAI,CAAC,CAAC,gCAAgC,CAAC;gBACxD;gBAEA,IAAI,CAAC7D,EAAE8D,QAAQ,CAACL,iBAAiBA,cAAc;oBAC7C,MAAM,EAAEG,OAAO,EAAEG,SAASC,aAAa,EAAE,GAAG,MAAM7C,uBAAuB4B;oBACzE,IAAIiB,eAAe;wBACjBzC,KAAKqC;oBACP,OAAO;wBACLtC,MAAMsC;oBACR;gBACF;gBAEA5D,EAAEwD,KAAK,CAAChC;gBACRe,QAAQC,IAAI,CAAC;YACf;YAEA,IAAIa,gBAAgB;gBAClB,IAAI,CAACvB,IAAI,CAAC,SAAS,GAAG7B,QAAQI,KAAK4D,QAAQ,CAAC5D,KAAK6D,OAAO,CAACb;YAC3D;YAEA,MAAMc,cAAc,MAAMrD,iBAAiB,IAAI,CAACgB,IAAI;YACpD,MAAMsC,aAAaf,iBACfhD,KAAK6D,OAAO,CAACb,kBACbhD,KAAKgE,OAAO,CAAC9B,QAAQS,GAAG,IAAI/C,QAAQkE;YAExC,MAAMG,iBAAiB,MAAM5D,kBAAkB;gBAAE6D,SAAS,IAAI,CAACzC,IAAI;gBAAEsC;YAAW;YAEhF,IAAIf,gBAAgB;gBAClBrD,EAAE0C,GAAG,CAAC8B,IAAI,CACRrE,MAAM0D,IAAI,CAAC,GAAG1D,MAAMsE,OAAO,CAAC,CAAC,CAAC,EAAErE,QAAQsE,UAAU,CAAC,SAAS,CAAC,EAAE,kBAAkB,CAAC;gBAGpF,MAAMC,UAAU,MAAM3E,EAAE0D,OAAO,CAAC;oBAC9BC,cAAc;oBACdC,SAASzD,MAAM0D,IAAI,CAAC,CAAC,QAAQ,EAAE1D,MAAMyE,KAAK,CAAC,WAAW,iBAAiB,CAAC;gBAC1E;gBACA,IAAI5E,EAAE8D,QAAQ,CAACa,YAAY,CAACA,SAAS;oBACnC3E,EAAEwD,KAAK,CAAChC;oBACRe,QAAQC,IAAI,CAAC;gBACf;gBAEA,iCAAiC;gBACjC,IAAIY,cAAcH,mBAAmB;oBACnCjD,EAAE0C,GAAG,CAACa,IAAI,CAAC7B,YAAY;wBAAE0B;wBAAYgB;oBAAW;oBAChDpE,EAAEwD,KAAK,CAAChC;oBACRe,QAAQC,IAAI,CAAC;gBACf;gBAEA,MAAMqC,YAAY,MAAM7D,SAAS,IAAI,CAACc,IAAI,EAAEqC;gBAE5C,MAAMW,SAAS,MAAMlE,SAAS;oBAC5B,GAAG,IAAI,CAACkB,IAAI;oBACZiD,QAAQF,UAAUG,IAAI;oBACtBjC;oBACAuB;oBACAF;gBACF;gBAEA,IAAIU,OAAOf,OAAO,KAAK,OAAO;oBAC5B/D,EAAEwD,KAAK,CAAChC;oBACRe,QAAQC,IAAI,CAAC;gBACf;gBAEA,MAAMlC,uBAAuB;oBAC3ByE,QAAQF,WAAWG;oBACnBC,wBAAwB;wBACtBC,mBAAmBJ,OAAOI,iBAAiB;oBAC7C;gBACF;gBAEA,MAAMrE,eAAe;oBACnB0D,SAAS,IAAI,CAACzC,IAAI;oBAClBqD,cAAcN,UAAUG,IAAI;oBAC5BI,aAAaP,UAAUQ,KAAK;oBAC5BC,eAAe7E;oBACf2D;gBACF;gBAEA7C,KAAK;gBACLvB,EAAE8C,IAAI,CAACnB,sBAAsBxB,MAAMoF,OAAO,CAACpF,MAAM0C,KAAK,CAAC;gBACvD7C,EAAEwD,KAAK,CAAChC;gBACR;YACF;YAEA,MAAMgE,cAAc,IAAI,CAAC1D,IAAI,CAAC,aAAa;YAC3C,IAAI0D,aAAa;gBACf,MAAMC,QAAQvE,iBAAiB;oBAAEwE,cAAcF;gBAAY;gBAC3D,IAAI,CAACC,OAAO;oBACVhE;oBACAc,QAAQC,IAAI,CAAC;gBACf;YACF;YAEA,MAAMmD,aAAa,IAAI,CAAC7D,IAAI,CAAC,YAAY;YAEzC,IAAI6D,YAAY;gBACd,MAAMC,UAAU,MAAMpF,aAAa;oBACjCqF,MAAMF;oBACNG,QAAQ,IAAI,CAAChE,IAAI,CAAC,WAAW,IAAI;gBACnC;gBAEA,IAAI,CAAC8D,SAAS;oBACZnE;oBACAc,QAAQC,IAAI,CAAC;gBACf;gBAEA,MAAMjC,cAAc;oBAClBgE,SAAS,IAAI,CAACzC,IAAI;oBAClB8D;oBACAtB;oBACAF;oBACAD;gBACF;YACF;YAEA,IAAI/B,WAAW;gBACbf,MAAM,CAAC,MAAM,EAAEsE,aAAa,aAAa,YAAY,gBAAgB,EAAEtD,gBAAgB;YACzF;YAEA,IAAI,CAACsD,YAAY;gBACf,MAAMI,iBAAiB9E;gBACvB,MAAM+E,WAAW,MAAMjF,cAAc,IAAI,CAACe,IAAI,EAAEiE;gBAChD,IAAI,CAACC,UAAU;oBACbhG,EAAE0C,GAAG,CAACpB,KAAK,CAAC;oBACZtB,EAAEwD,KAAK,CAAChC;oBACRe,QAAQC,IAAI,CAAC;gBACf;gBAEA,OAAQwD,SAAShB,IAAI;oBACnB,KAAK;wBAAU;4BACb,MAAMzE,cAAc;gCAClBgE,SAAS,IAAI,CAACzC,IAAI;gCAClBwC;gCACAF;gCACAD;gCACA6B;4BACF;4BACA;wBACF;oBACA,KAAK;wBAAW;4BACd,MAAMnB,YAAY,MAAM7D,SAAS,IAAI,CAACc,IAAI,EAAEqC;4BAE5C,MAAM5D,cAAc;gCAClBgE,SAAS,IAAI,CAACzC,IAAI;gCAClB+C;gCACAP;gCACAF;gCACAD;gCACA6B;4BACF;4BAEA;wBACF;gBACF;YACF;YAEAzE,KAAK;YACLvB,EAAE0C,GAAG,CAAC8B,IAAI,CAACrE,MAAMoF,OAAO,CAACpF,MAAM0C,KAAK,CAAC;YACrC7C,EAAE0C,GAAG,CAACkB,OAAO,CAAChC,eAAewC,YAAYE;YACzCtE,EAAEwD,KAAK,CAAChC;QACV,EAAE,OAAOyE,KAAc;YACrB3E,MAAM2E,eAAeC,QAAQD,IAAIrC,OAAO,GAAG;QAC7C;IACF;AACF"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Fetches the latest version of a package from the NPM registry.
3
+ *
4
+ * Used in determining the latest version of Payload to use in the generated templates.
5
+ */
6
+ export declare function getLatestPackageVersion({ debug, packageName, }: {
7
+ debug?: boolean;
8
+ /**
9
+ * Package name to fetch the latest version for based on the NPM registry URL
10
+ *
11
+ * Eg. for `'payload'`, it will fetch the version from `https://registry.npmjs.org/payload`
12
+ *
13
+ * @default 'payload'
14
+ */
15
+ packageName?: string;
16
+ }): Promise<any>;
17
+ //# sourceMappingURL=getLatestPackageVersion.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getLatestPackageVersion.d.ts","sourceRoot":"","sources":["../../src/utils/getLatestPackageVersion.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,wBAAsB,uBAAuB,CAAC,EAC5C,KAAa,EACb,WAAuB,GACxB,EAAE;IACD,KAAK,CAAC,EAAE,OAAO,CAAA;IACf;;;;;;OAMG;IACH,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB,gBAeA"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Fetches the latest version of a package from the NPM registry.
3
+ *
4
+ * Used in determining the latest version of Payload to use in the generated templates.
5
+ */ export async function getLatestPackageVersion({ debug = false, packageName = 'payload' }) {
6
+ try {
7
+ const response = await fetch(`https://registry.npmjs.org/${packageName}`);
8
+ const data = await response.json();
9
+ const latestVersion = data['dist-tags'].latest;
10
+ if (debug) {
11
+ console.log(`Found latest version of ${packageName}: ${latestVersion}`);
12
+ }
13
+ return latestVersion;
14
+ } catch (error) {
15
+ console.error('Error fetching Payload version:', error);
16
+ throw error;
17
+ }
18
+ }
19
+
20
+ //# sourceMappingURL=getLatestPackageVersion.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/utils/getLatestPackageVersion.ts"],"sourcesContent":["/**\n * Fetches the latest version of a package from the NPM registry.\n *\n * Used in determining the latest version of Payload to use in the generated templates.\n */\nexport async function getLatestPackageVersion({\n debug = false,\n packageName = 'payload',\n}: {\n debug?: boolean\n /**\n * Package name to fetch the latest version for based on the NPM registry URL\n *\n * Eg. for `'payload'`, it will fetch the version from `https://registry.npmjs.org/payload`\n *\n * @default 'payload'\n */\n packageName?: string\n}) {\n try {\n const response = await fetch(`https://registry.npmjs.org/${packageName}`)\n const data = await response.json()\n const latestVersion = data['dist-tags'].latest\n\n if (debug) {\n console.log(`Found latest version of ${packageName}: ${latestVersion}`)\n }\n\n return latestVersion\n } catch (error) {\n console.error('Error fetching Payload version:', error)\n throw error\n }\n}\n"],"names":["getLatestPackageVersion","debug","packageName","response","fetch","data","json","latestVersion","latest","console","log","error"],"mappings":"AAAA;;;;CAIC,GACD,OAAO,eAAeA,wBAAwB,EAC5CC,QAAQ,KAAK,EACbC,cAAc,SAAS,EAWxB;IACC,IAAI;QACF,MAAMC,WAAW,MAAMC,MAAM,CAAC,2BAA2B,EAAEF,aAAa;QACxE,MAAMG,OAAO,MAAMF,SAASG,IAAI;QAChC,MAAMC,gBAAgBF,IAAI,CAAC,YAAY,CAACG,MAAM;QAE9C,IAAIP,OAAO;YACTQ,QAAQC,GAAG,CAAC,CAAC,wBAAwB,EAAER,YAAY,EAAE,EAAEK,eAAe;QACxE;QAEA,OAAOA;IACT,EAAE,OAAOI,OAAO;QACdF,QAAQE,KAAK,CAAC,mCAAmCA;QACjD,MAAMA;IACR;AACF"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "create-payload-app",
3
- "version": "3.39.0-internal.32c7661",
3
+ "version": "3.39.0",
4
4
  "homepage": "https://payloadcms.com",
5
5
  "repository": {
6
6
  "type": "git",
@@ -1,2 +0,0 @@
1
- export declare const PACKAGE_VERSION: any;
2
- //# sourceMappingURL=constants.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/lib/constants.ts"],"names":[],"mappings":"AAOA,eAAO,MAAM,eAAe,KAAsB,CAAA"}
@@ -1,9 +0,0 @@
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
@@ -1 +0,0 @@
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"}