create-payload-app 4.0.0-internal.f15737c → 4.0.0-internal.f2a04f7

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.
Files changed (36) hide show
  1. package/dist/lib/ast/payload-config.js +13 -13
  2. package/dist/lib/ast/payload-config.js.map +1 -1
  3. package/dist/lib/ast/types.d.ts +1 -1
  4. package/dist/lib/ast/types.d.ts.map +1 -1
  5. package/dist/lib/ast/types.js.map +1 -1
  6. package/dist/lib/configure-payload-config.js +1 -1
  7. package/dist/lib/configure-payload-config.js.map +1 -1
  8. package/dist/lib/init-next.d.ts +5 -0
  9. package/dist/lib/init-next.d.ts.map +1 -1
  10. package/dist/lib/init-next.js +14 -3
  11. package/dist/lib/init-next.js.map +1 -1
  12. package/dist/lib/init-tanstack.js +1 -1
  13. package/dist/lib/init-tanstack.js.map +1 -1
  14. package/dist/lib/tanstack/template-files.d.ts +4 -4
  15. package/dist/lib/tanstack/template-files.d.ts.map +1 -1
  16. package/dist/lib/tanstack/template-files.js +5 -5
  17. package/dist/lib/tanstack/template-files.js.map +1 -1
  18. package/dist/lib/update-payload-in-project.js +3 -3
  19. package/dist/lib/update-payload-in-project.js.map +1 -1
  20. package/dist/main.js +2 -2
  21. package/dist/main.js.map +1 -1
  22. package/dist/template/src/payload.config.ts +1 -1
  23. package/dist/template-tanstack/routes/_payload/admin.$.tsx +19 -3
  24. package/dist/template-tanstack/routes/_payload/admin.index.tsx +19 -3
  25. package/dist/template-tanstack/routes/_payload/custom.css +0 -0
  26. package/dist/template-tanstack/routes/_payload.tsx +0 -2
  27. package/dist/template-tanstack/src/payload.config.ts +1 -1
  28. package/dist/utils/messages.d.ts.map +1 -1
  29. package/dist/utils/messages.js +2 -1
  30. package/dist/utils/messages.js.map +1 -1
  31. package/dist/utils/resolvePackageVersion.d.ts +10 -4
  32. package/dist/utils/resolvePackageVersion.d.ts.map +1 -1
  33. package/dist/utils/resolvePackageVersion.js +24 -3
  34. package/dist/utils/resolvePackageVersion.js.map +1 -1
  35. package/package.json +16 -16
  36. package/dist/template-tanstack/src/payload.css +0 -1
@@ -14,6 +14,10 @@ export declare const TANSTACK_TEMPLATE_FILES: readonly [{
14
14
  readonly destination: 'routes';
15
15
  readonly relativePath: '_payload/api.$.ts';
16
16
  readonly sourcePath: 'app/_payload/api.$.ts';
17
+ }, {
18
+ readonly destination: 'routes';
19
+ readonly relativePath: '_payload/custom.css';
20
+ readonly sourcePath: 'app/_payload/custom.css';
17
21
  }, {
18
22
  readonly destination: 'routes';
19
23
  readonly relativePath: '_payload/importMap.js';
@@ -38,10 +42,6 @@ export declare const TANSTACK_TEMPLATE_FILES: readonly [{
38
42
  readonly destination: 'src';
39
43
  readonly relativePath: 'collections/Users.ts';
40
44
  readonly sourcePath: 'collections/Users.ts';
41
- }, {
42
- readonly destination: 'src';
43
- readonly relativePath: 'payload.css';
44
- readonly sourcePath: 'payload.css';
45
45
  }, {
46
46
  readonly destination: 'src';
47
47
  readonly relativePath: 'payload.config.ts';
@@ -1 +1 @@
1
- {"version":3,"file":"template-files.d.ts","sourceRoot":"","sources":["../../../src/lib/tanstack/template-files.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,uBAAuB;aAEhC,WAAW,EAAE,QAAQ;aACrB,YAAY,EAAE,cAAc;aAC5B,UAAU,EAAE,kBAAkB;;aAG9B,WAAW,EAAE,QAAQ;aACrB,YAAY,EAAE,sBAAsB;aACpC,UAAU,EAAE,0BAA0B;;aAGtC,WAAW,EAAE,QAAQ;aACrB,YAAY,EAAE,0BAA0B;aACxC,UAAU,EAAE,8BAA8B;;aAG1C,WAAW,EAAE,QAAQ;aACrB,YAAY,EAAE,mBAAmB;aACjC,UAAU,EAAE,uBAAuB;;aAGnC,WAAW,EAAE,QAAQ;aACrB,YAAY,EAAE,uBAAuB;aACrC,UAAU,EAAE,2BAA2B;;aAGvC,WAAW,EAAE,QAAQ;aACrB,YAAY,EAAE,8BAA8B;aAC5C,UAAU,EAAE,kCAAkC;;aAG9C,WAAW,EAAE,KAAK;aAClB,YAAY,EAAE,wBAAwB;aACtC,UAAU,EAAE,wBAAwB;;aAGpC,WAAW,EAAE,KAAK;aAClB,YAAY,EAAE,sBAAsB;aACpC,UAAU,EAAE,sBAAsB;;aAGlC,WAAW,EAAE,KAAK;aAClB,YAAY,EAAE,qBAAqB;aACnC,UAAU,EAAE,qBAAqB;;aAGjC,WAAW,EAAE,KAAK;aAClB,YAAY,EAAE,sBAAsB;aACpC,UAAU,EAAE,sBAAsB;;aAGlC,WAAW,EAAE,KAAK;aAClB,YAAY,EAAE,aAAa;aAC3B,UAAU,EAAE,aAAa;;aAGzB,WAAW,EAAE,KAAK;aAClB,YAAY,EAAE,mBAAmB;aACjC,UAAU,EAAE,mBAAmB;EAEzB,CAAA"}
1
+ {"version":3,"file":"template-files.d.ts","sourceRoot":"","sources":["../../../src/lib/tanstack/template-files.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,uBAAuB;aAEhC,WAAW,EAAE,QAAQ;aACrB,YAAY,EAAE,cAAc;aAC5B,UAAU,EAAE,kBAAkB;;aAG9B,WAAW,EAAE,QAAQ;aACrB,YAAY,EAAE,sBAAsB;aACpC,UAAU,EAAE,0BAA0B;;aAGtC,WAAW,EAAE,QAAQ;aACrB,YAAY,EAAE,0BAA0B;aACxC,UAAU,EAAE,8BAA8B;;aAG1C,WAAW,EAAE,QAAQ;aACrB,YAAY,EAAE,mBAAmB;aACjC,UAAU,EAAE,uBAAuB;;aAGnC,WAAW,EAAE,QAAQ;aACrB,YAAY,EAAE,qBAAqB;aACnC,UAAU,EAAE,yBAAyB;;aAGrC,WAAW,EAAE,QAAQ;aACrB,YAAY,EAAE,uBAAuB;aACrC,UAAU,EAAE,2BAA2B;;aAGvC,WAAW,EAAE,QAAQ;aACrB,YAAY,EAAE,8BAA8B;aAC5C,UAAU,EAAE,kCAAkC;;aAG9C,WAAW,EAAE,KAAK;aAClB,YAAY,EAAE,wBAAwB;aACtC,UAAU,EAAE,wBAAwB;;aAGpC,WAAW,EAAE,KAAK;aAClB,YAAY,EAAE,sBAAsB;aACpC,UAAU,EAAE,sBAAsB;;aAGlC,WAAW,EAAE,KAAK;aAClB,YAAY,EAAE,qBAAqB;aACnC,UAAU,EAAE,qBAAqB;;aAGjC,WAAW,EAAE,KAAK;aAClB,YAAY,EAAE,sBAAsB;aACpC,UAAU,EAAE,sBAAsB;;aAGlC,WAAW,EAAE,KAAK;aAClB,YAAY,EAAE,mBAAmB;aACjC,UAAU,EAAE,mBAAmB;EAEzB,CAAA"}
@@ -19,6 +19,11 @@ export const TANSTACK_TEMPLATE_FILES = [
19
19
  relativePath: '_payload/api.$.ts',
20
20
  sourcePath: 'app/_payload/api.$.ts'
21
21
  },
22
+ {
23
+ destination: 'routes',
24
+ relativePath: '_payload/custom.css',
25
+ sourcePath: 'app/_payload/custom.css'
26
+ },
22
27
  {
23
28
  destination: 'routes',
24
29
  relativePath: '_payload/importMap.js',
@@ -49,11 +54,6 @@ export const TANSTACK_TEMPLATE_FILES = [
49
54
  relativePath: 'collections/Users.ts',
50
55
  sourcePath: 'collections/Users.ts'
51
56
  },
52
- {
53
- destination: 'src',
54
- relativePath: 'payload.css',
55
- sourcePath: 'payload.css'
56
- },
57
57
  {
58
58
  destination: 'src',
59
59
  relativePath: 'payload.config.ts',
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/lib/tanstack/template-files.ts"],"sourcesContent":["export const TANSTACK_TEMPLATE_FILES = [\n {\n destination: 'routes',\n relativePath: '_payload.tsx',\n sourcePath: 'app/_payload.tsx',\n },\n {\n destination: 'routes',\n relativePath: '_payload/admin.$.tsx',\n sourcePath: 'app/_payload/admin.$.tsx',\n },\n {\n destination: 'routes',\n relativePath: '_payload/admin.index.tsx',\n sourcePath: 'app/_payload/admin.index.tsx',\n },\n {\n destination: 'routes',\n relativePath: '_payload/api.$.ts',\n sourcePath: 'app/_payload/api.$.ts',\n },\n {\n destination: 'routes',\n relativePath: '_payload/importMap.js',\n sourcePath: 'app/_payload/importMap.js',\n },\n {\n destination: 'routes',\n relativePath: '_payload/server.functions.ts',\n sourcePath: 'app/_payload/server.functions.ts',\n },\n {\n destination: 'src',\n relativePath: 'collections/Folders.ts',\n sourcePath: 'collections/Folders.ts',\n },\n {\n destination: 'src',\n relativePath: 'collections/Media.ts',\n sourcePath: 'collections/Media.ts',\n },\n {\n destination: 'src',\n relativePath: 'collections/Tags.ts',\n sourcePath: 'collections/Tags.ts',\n },\n {\n destination: 'src',\n relativePath: 'collections/Users.ts',\n sourcePath: 'collections/Users.ts',\n },\n {\n destination: 'src',\n relativePath: 'payload.css',\n sourcePath: 'payload.css',\n },\n {\n destination: 'src',\n relativePath: 'payload.config.ts',\n sourcePath: 'payload.config.ts',\n },\n] as const\n"],"names":["TANSTACK_TEMPLATE_FILES","destination","relativePath","sourcePath"],"mappings":"AAAA,OAAO,MAAMA,0BAA0B;IACrC;QACEC,aAAa;QACbC,cAAc;QACdC,YAAY;IACd;IACA;QACEF,aAAa;QACbC,cAAc;QACdC,YAAY;IACd;IACA;QACEF,aAAa;QACbC,cAAc;QACdC,YAAY;IACd;IACA;QACEF,aAAa;QACbC,cAAc;QACdC,YAAY;IACd;IACA;QACEF,aAAa;QACbC,cAAc;QACdC,YAAY;IACd;IACA;QACEF,aAAa;QACbC,cAAc;QACdC,YAAY;IACd;IACA;QACEF,aAAa;QACbC,cAAc;QACdC,YAAY;IACd;IACA;QACEF,aAAa;QACbC,cAAc;QACdC,YAAY;IACd;IACA;QACEF,aAAa;QACbC,cAAc;QACdC,YAAY;IACd;IACA;QACEF,aAAa;QACbC,cAAc;QACdC,YAAY;IACd;IACA;QACEF,aAAa;QACbC,cAAc;QACdC,YAAY;IACd;IACA;QACEF,aAAa;QACbC,cAAc;QACdC,YAAY;IACd;CACD,CAAS"}
1
+ {"version":3,"sources":["../../../src/lib/tanstack/template-files.ts"],"sourcesContent":["export const TANSTACK_TEMPLATE_FILES = [\n {\n destination: 'routes',\n relativePath: '_payload.tsx',\n sourcePath: 'app/_payload.tsx',\n },\n {\n destination: 'routes',\n relativePath: '_payload/admin.$.tsx',\n sourcePath: 'app/_payload/admin.$.tsx',\n },\n {\n destination: 'routes',\n relativePath: '_payload/admin.index.tsx',\n sourcePath: 'app/_payload/admin.index.tsx',\n },\n {\n destination: 'routes',\n relativePath: '_payload/api.$.ts',\n sourcePath: 'app/_payload/api.$.ts',\n },\n {\n destination: 'routes',\n relativePath: '_payload/custom.css',\n sourcePath: 'app/_payload/custom.css',\n },\n {\n destination: 'routes',\n relativePath: '_payload/importMap.js',\n sourcePath: 'app/_payload/importMap.js',\n },\n {\n destination: 'routes',\n relativePath: '_payload/server.functions.ts',\n sourcePath: 'app/_payload/server.functions.ts',\n },\n {\n destination: 'src',\n relativePath: 'collections/Folders.ts',\n sourcePath: 'collections/Folders.ts',\n },\n {\n destination: 'src',\n relativePath: 'collections/Media.ts',\n sourcePath: 'collections/Media.ts',\n },\n {\n destination: 'src',\n relativePath: 'collections/Tags.ts',\n sourcePath: 'collections/Tags.ts',\n },\n {\n destination: 'src',\n relativePath: 'collections/Users.ts',\n sourcePath: 'collections/Users.ts',\n },\n {\n destination: 'src',\n relativePath: 'payload.config.ts',\n sourcePath: 'payload.config.ts',\n },\n] as const\n"],"names":["TANSTACK_TEMPLATE_FILES","destination","relativePath","sourcePath"],"mappings":"AAAA,OAAO,MAAMA,0BAA0B;IACrC;QACEC,aAAa;QACbC,cAAc;QACdC,YAAY;IACd;IACA;QACEF,aAAa;QACbC,cAAc;QACdC,YAAY;IACd;IACA;QACEF,aAAa;QACbC,cAAc;QACdC,YAAY;IACd;IACA;QACEF,aAAa;QACbC,cAAc;QACdC,YAAY;IACd;IACA;QACEF,aAAa;QACbC,cAAc;QACdC,YAAY;IACd;IACA;QACEF,aAAa;QACbC,cAAc;QACdC,YAAY;IACd;IACA;QACEF,aAAa;QACbC,cAAc;QACdC,YAAY;IACd;IACA;QACEF,aAAa;QACbC,cAAc;QACdC,YAAY;IACd;IACA;QACEF,aAAa;QACbC,cAAc;QACdC,YAAY;IACd;IACA;QACEF,aAAa;QACbC,cAAc;QACdC,YAAY;IACd;IACA;QACEF,aAAa;QACbC,cAAc;QACdC,YAAY;IACd;IACA;QACEF,aAAa;QACbC,cAAc;QACdC,YAAY;IACd;CACD,CAAS"}
@@ -70,12 +70,12 @@ export async function updatePayloadInTanStackProject({ appDetails, templateRoot
70
70
  const hasPackedTemplateLayout = fse.existsSync(path.join(templateRoot, 'routes'));
71
71
  for (const { destination, relativePath, sourcePath } of TANSTACK_TEMPLATE_FILES){
72
72
  const isPayloadRoute = destination === 'routes' && relativePath.startsWith('_payload');
73
- const isPayloadStyles = destination === 'src' && relativePath === 'payload.css';
74
- if (!isPayloadRoute && !isPayloadStyles) {
73
+ const isCustomStyles = destination === 'routes' && relativePath === '_payload/custom.css';
74
+ if (!isPayloadRoute) {
75
75
  continue;
76
76
  }
77
77
  const destinationPath = path.join(destination === 'routes' ? appDetails.routesDir : appDetails.sourceDir, relativePath);
78
- if (isPayloadStyles && fse.existsSync(destinationPath)) {
78
+ if (isCustomStyles && fse.existsSync(destinationPath)) {
79
79
  continue;
80
80
  }
81
81
  const templatePath = hasPackedTemplateLayout ? path.join(templateRoot, destination, relativePath) : path.join(templateRoot, sourcePath);
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/lib/update-payload-in-project.ts"],"sourcesContent":["import fse from 'fs-extra'\nimport { fileURLToPath } from 'node:url'\nimport path from 'path'\n\nimport type { NextAppDetails, TanStackAppDetails } from '../types.js'\n\nimport { copyRecursiveSync } from '../utils/copy-recursive-sync.js'\nimport { info } from '../utils/log.js'\nimport { resolvePackageVersion } from '../utils/resolvePackageVersion.js'\nimport { getPackageManager } from './get-package-manager.js'\nimport { installPackages } from './install-packages.js'\nimport { TANSTACK_TEMPLATE_FILES } from './tanstack/template-files.js'\n\nconst filename = fileURLToPath(import.meta.url)\nconst dirname = path.dirname(filename)\n\ntype UpdateResult = { message: string; success: boolean }\n\ntype PackageUpdateResult = { isUpdated: boolean } & UpdateResult\n\nexport async function updatePayloadPackages({\n projectDir,\n versionOrTag,\n}: {\n projectDir: string\n versionOrTag?: string\n}): Promise<UpdateResult> {\n const result = await performPayloadPackageUpdate({ projectDir, versionOrTag })\n\n return { message: result.message, success: result.success }\n}\n\nexport async function updatePayloadInNextProject({\n appDetails,\n versionOrTag,\n}: {\n appDetails: NextAppDetails\n versionOrTag?: string\n}): Promise<UpdateResult> {\n if (!appDetails.nextConfigPath) {\n return { message: 'No Next.js config found', success: false }\n }\n\n const projectDir = path.dirname(appDetails.nextConfigPath)\n const packageUpdate = await performPayloadPackageUpdate({ projectDir, versionOrTag })\n\n if (!packageUpdate.isUpdated) {\n return { message: packageUpdate.message, success: packageUpdate.success }\n }\n\n info(`Updating Payload Next.js files...`)\n\n const templateFilesPath =\n process.env.JEST_WORKER_ID !== undefined\n ? path.resolve(dirname, '../../../../templates/blank')\n : path.resolve(dirname, '../..', 'dist/template')\n\n const templateSrcDir = path.resolve(templateFilesPath, 'src/app/(payload)')\n const payloadDirPath = path.resolve(\n projectDir,\n appDetails.isSrcDir ? 'src/app' : 'app',\n '(payload)',\n )\n\n const legacyCustomStylesPath = path.resolve(payloadDirPath, 'custom.scss')\n const customCssPath = path.resolve(payloadDirPath, 'custom.css')\n\n if (fse.existsSync(legacyCustomStylesPath) && !fse.existsSync(customCssPath)) {\n fse.renameSync(legacyCustomStylesPath, customCssPath)\n info(\n 'Renamed `(payload)/custom.scss` to `custom.css`. If it contained Sass syntax (nesting, `$variables`, `@mixin`, etc.), convert it to plain CSS — it is no longer transpiled.',\n )\n }\n\n copyRecursiveSync(templateSrcDir, payloadDirPath, ['custom.css$'])\n\n return { message: packageUpdate.message, success: packageUpdate.success }\n}\n\nexport async function updatePayloadInTanStackProject({\n appDetails,\n templateRoot = resolveTanStackTemplateRoot(),\n versionOrTag,\n}: {\n appDetails: TanStackAppDetails\n templateRoot?: string\n versionOrTag?: string\n}): Promise<UpdateResult> {\n const packageUpdate = await performPayloadPackageUpdate({\n projectDir: appDetails.projectDir,\n versionOrTag,\n })\n\n if (!packageUpdate.isUpdated) {\n return { message: packageUpdate.message, success: packageUpdate.success }\n }\n\n info(`Updating Payload TanStack files...`)\n const hasPackedTemplateLayout = fse.existsSync(path.join(templateRoot, 'routes'))\n\n for (const { destination, relativePath, sourcePath } of TANSTACK_TEMPLATE_FILES) {\n const isPayloadRoute = destination === 'routes' && relativePath.startsWith('_payload')\n const isPayloadStyles = destination === 'src' && relativePath === 'payload.css'\n\n if (!isPayloadRoute && !isPayloadStyles) {\n continue\n }\n\n const destinationPath = path.join(\n destination === 'routes' ? appDetails.routesDir : appDetails.sourceDir,\n relativePath,\n )\n if (isPayloadStyles && fse.existsSync(destinationPath)) {\n continue\n }\n\n const templatePath = hasPackedTemplateLayout\n ? path.join(templateRoot, destination, relativePath)\n : path.join(templateRoot, sourcePath)\n fse.ensureDirSync(path.dirname(destinationPath))\n fse.copyFileSync(templatePath, destinationPath)\n }\n\n return { message: packageUpdate.message, success: packageUpdate.success }\n}\n\nexport async function updatePayloadInProject(\n appDetails: NextAppDetails,\n versionOrTag?: string,\n): Promise<UpdateResult> {\n return updatePayloadInNextProject({ appDetails, versionOrTag })\n}\n\nasync function performPayloadPackageUpdate({\n projectDir,\n versionOrTag,\n}: {\n projectDir: string\n versionOrTag?: string\n}): Promise<PackageUpdateResult> {\n const packageObj = (await fse.readJson(path.resolve(projectDir, 'package.json'))) as {\n dependencies?: Record<string, string>\n devDependencies?: Record<string, string>\n }\n if (!packageObj.dependencies && !packageObj.devDependencies) {\n throw new Error('No package.json found in this project')\n }\n\n const dependencyGroups = [packageObj.dependencies, packageObj.devDependencies].filter(\n (dependencies): dependencies is Record<string, string> => Boolean(dependencies),\n )\n const payloadPackageEntries = dependencyGroups.flatMap((dependencies) =>\n Object.entries(dependencies).filter(\n ([packageName]) => packageName === 'payload' || packageName.startsWith('@payloadcms/'),\n ),\n )\n const payloadVersion = payloadPackageEntries.find(\n ([packageName]) => packageName === 'payload',\n )?.[1]\n if (!payloadVersion) {\n throw new Error('Payload is not installed in this project')\n }\n\n const packageManager = await getPackageManager({ projectDir })\n const latestPayloadVersion = await resolvePackageVersion({ packageName: 'payload', versionOrTag })\n\n if (payloadPackageEntries.every(([, version]) => version === latestPayloadVersion)) {\n return {\n isUpdated: false,\n message: `Payload v${payloadVersion} is already up to date.`,\n success: true,\n }\n }\n\n const payloadPackages = payloadPackageEntries\n .map(([packageName]) => packageName)\n .filter((packageName) => packageName.startsWith('@payloadcms/'))\n const packageNames = ['payload', ...new Set(payloadPackages)]\n const packagesToUpdate = packageNames.map(\n (packageName) => `${packageName}@${latestPayloadVersion}`,\n )\n\n info(`Using ${packageManager}.\\n`)\n info(\n `Updating ${packagesToUpdate.length} Payload packages to v${latestPayloadVersion}...\\n\\n${packageNames.map((packageName) => ` - ${packageName}`).join('\\n')}`,\n )\n\n const { success: updateSuccess } = await installPackages({\n packageManager,\n packagesToInstall: packagesToUpdate,\n projectDir,\n })\n\n if (!updateSuccess) {\n throw new Error('Failed to update Payload packages')\n }\n info('Payload packages updated successfully.')\n\n return { isUpdated: true, message: 'Payload updated successfully.', success: true }\n}\n\nfunction resolveTanStackTemplateRoot(): string {\n return path.basename(path.dirname(dirname)) === 'dist'\n ? path.resolve(dirname, '../template-tanstack')\n : path.resolve(dirname, '../../../../templates/blank-tanstack/src')\n}\n"],"names":["fse","fileURLToPath","path","copyRecursiveSync","info","resolvePackageVersion","getPackageManager","installPackages","TANSTACK_TEMPLATE_FILES","filename","url","dirname","updatePayloadPackages","projectDir","versionOrTag","result","performPayloadPackageUpdate","message","success","updatePayloadInNextProject","appDetails","nextConfigPath","packageUpdate","isUpdated","templateFilesPath","process","env","JEST_WORKER_ID","undefined","resolve","templateSrcDir","payloadDirPath","isSrcDir","legacyCustomStylesPath","customCssPath","existsSync","renameSync","updatePayloadInTanStackProject","templateRoot","resolveTanStackTemplateRoot","hasPackedTemplateLayout","join","destination","relativePath","sourcePath","isPayloadRoute","startsWith","isPayloadStyles","destinationPath","routesDir","sourceDir","templatePath","ensureDirSync","copyFileSync","updatePayloadInProject","packageObj","readJson","dependencies","devDependencies","Error","dependencyGroups","filter","Boolean","payloadPackageEntries","flatMap","Object","entries","packageName","payloadVersion","find","packageManager","latestPayloadVersion","every","version","payloadPackages","map","packageNames","Set","packagesToUpdate","length","updateSuccess","packagesToInstall","basename"],"mappings":"AAAA,OAAOA,SAAS,WAAU;AAC1B,SAASC,aAAa,QAAQ,WAAU;AACxC,OAAOC,UAAU,OAAM;AAIvB,SAASC,iBAAiB,QAAQ,kCAAiC;AACnE,SAASC,IAAI,QAAQ,kBAAiB;AACtC,SAASC,qBAAqB,QAAQ,oCAAmC;AACzE,SAASC,iBAAiB,QAAQ,2BAA0B;AAC5D,SAASC,eAAe,QAAQ,wBAAuB;AACvD,SAASC,uBAAuB,QAAQ,+BAA8B;AAEtE,MAAMC,WAAWR,cAAc,YAAYS,GAAG;AAC9C,MAAMC,UAAUT,KAAKS,OAAO,CAACF;AAM7B,OAAO,eAAeG,sBAAsB,EAC1CC,UAAU,EACVC,YAAY,EAIb;IACC,MAAMC,SAAS,MAAMC,4BAA4B;QAAEH;QAAYC;IAAa;IAE5E,OAAO;QAAEG,SAASF,OAAOE,OAAO;QAAEC,SAASH,OAAOG,OAAO;IAAC;AAC5D;AAEA,OAAO,eAAeC,2BAA2B,EAC/CC,UAAU,EACVN,YAAY,EAIb;IACC,IAAI,CAACM,WAAWC,cAAc,EAAE;QAC9B,OAAO;YAAEJ,SAAS;YAA2BC,SAAS;QAAM;IAC9D;IAEA,MAAML,aAAaX,KAAKS,OAAO,CAACS,WAAWC,cAAc;IACzD,MAAMC,gBAAgB,MAAMN,4BAA4B;QAAEH;QAAYC;IAAa;IAEnF,IAAI,CAACQ,cAAcC,SAAS,EAAE;QAC5B,OAAO;YAAEN,SAASK,cAAcL,OAAO;YAAEC,SAASI,cAAcJ,OAAO;QAAC;IAC1E;IAEAd,KAAK,CAAC,iCAAiC,CAAC;IAExC,MAAMoB,oBACJC,QAAQC,GAAG,CAACC,cAAc,KAAKC,YAC3B1B,KAAK2B,OAAO,CAAClB,SAAS,iCACtBT,KAAK2B,OAAO,CAAClB,SAAS,SAAS;IAErC,MAAMmB,iBAAiB5B,KAAK2B,OAAO,CAACL,mBAAmB;IACvD,MAAMO,iBAAiB7B,KAAK2B,OAAO,CACjChB,YACAO,WAAWY,QAAQ,GAAG,YAAY,OAClC;IAGF,MAAMC,yBAAyB/B,KAAK2B,OAAO,CAACE,gBAAgB;IAC5D,MAAMG,gBAAgBhC,KAAK2B,OAAO,CAACE,gBAAgB;IAEnD,IAAI/B,IAAImC,UAAU,CAACF,2BAA2B,CAACjC,IAAImC,UAAU,CAACD,gBAAgB;QAC5ElC,IAAIoC,UAAU,CAACH,wBAAwBC;QACvC9B,KACE;IAEJ;IAEAD,kBAAkB2B,gBAAgBC,gBAAgB;QAAC;KAAc;IAEjE,OAAO;QAAEd,SAASK,cAAcL,OAAO;QAAEC,SAASI,cAAcJ,OAAO;IAAC;AAC1E;AAEA,OAAO,eAAemB,+BAA+B,EACnDjB,UAAU,EACVkB,eAAeC,6BAA6B,EAC5CzB,YAAY,EAKb;IACC,MAAMQ,gBAAgB,MAAMN,4BAA4B;QACtDH,YAAYO,WAAWP,UAAU;QACjCC;IACF;IAEA,IAAI,CAACQ,cAAcC,SAAS,EAAE;QAC5B,OAAO;YAAEN,SAASK,cAAcL,OAAO;YAAEC,SAASI,cAAcJ,OAAO;QAAC;IAC1E;IAEAd,KAAK,CAAC,kCAAkC,CAAC;IACzC,MAAMoC,0BAA0BxC,IAAImC,UAAU,CAACjC,KAAKuC,IAAI,CAACH,cAAc;IAEvE,KAAK,MAAM,EAAEI,WAAW,EAAEC,YAAY,EAAEC,UAAU,EAAE,IAAIpC,wBAAyB;QAC/E,MAAMqC,iBAAiBH,gBAAgB,YAAYC,aAAaG,UAAU,CAAC;QAC3E,MAAMC,kBAAkBL,gBAAgB,SAASC,iBAAiB;QAElE,IAAI,CAACE,kBAAkB,CAACE,iBAAiB;YACvC;QACF;QAEA,MAAMC,kBAAkB9C,KAAKuC,IAAI,CAC/BC,gBAAgB,WAAWtB,WAAW6B,SAAS,GAAG7B,WAAW8B,SAAS,EACtEP;QAEF,IAAII,mBAAmB/C,IAAImC,UAAU,CAACa,kBAAkB;YACtD;QACF;QAEA,MAAMG,eAAeX,0BACjBtC,KAAKuC,IAAI,CAACH,cAAcI,aAAaC,gBACrCzC,KAAKuC,IAAI,CAACH,cAAcM;QAC5B5C,IAAIoD,aAAa,CAAClD,KAAKS,OAAO,CAACqC;QAC/BhD,IAAIqD,YAAY,CAACF,cAAcH;IACjC;IAEA,OAAO;QAAE/B,SAASK,cAAcL,OAAO;QAAEC,SAASI,cAAcJ,OAAO;IAAC;AAC1E;AAEA,OAAO,eAAeoC,uBACpBlC,UAA0B,EAC1BN,YAAqB;IAErB,OAAOK,2BAA2B;QAAEC;QAAYN;IAAa;AAC/D;AAEA,eAAeE,4BAA4B,EACzCH,UAAU,EACVC,YAAY,EAIb;IACC,MAAMyC,aAAc,MAAMvD,IAAIwD,QAAQ,CAACtD,KAAK2B,OAAO,CAAChB,YAAY;IAIhE,IAAI,CAAC0C,WAAWE,YAAY,IAAI,CAACF,WAAWG,eAAe,EAAE;QAC3D,MAAM,IAAIC,MAAM;IAClB;IAEA,MAAMC,mBAAmB;QAACL,WAAWE,YAAY;QAAEF,WAAWG,eAAe;KAAC,CAACG,MAAM,CACnF,CAACJ,eAAyDK,QAAQL;IAEpE,MAAMM,wBAAwBH,iBAAiBI,OAAO,CAAC,CAACP,eACtDQ,OAAOC,OAAO,CAACT,cAAcI,MAAM,CACjC,CAAC,CAACM,YAAY,GAAKA,gBAAgB,aAAaA,YAAYrB,UAAU,CAAC;IAG3E,MAAMsB,iBAAiBL,sBAAsBM,IAAI,CAC/C,CAAC,CAACF,YAAY,GAAKA,gBAAgB,YAClC,CAAC,EAAE;IACN,IAAI,CAACC,gBAAgB;QACnB,MAAM,IAAIT,MAAM;IAClB;IAEA,MAAMW,iBAAiB,MAAMhE,kBAAkB;QAAEO;IAAW;IAC5D,MAAM0D,uBAAuB,MAAMlE,sBAAsB;QAAE8D,aAAa;QAAWrD;IAAa;IAEhG,IAAIiD,sBAAsBS,KAAK,CAAC,CAAC,GAAGC,QAAQ,GAAKA,YAAYF,uBAAuB;QAClF,OAAO;YACLhD,WAAW;YACXN,SAAS,CAAC,SAAS,EAAEmD,eAAe,uBAAuB,CAAC;YAC5DlD,SAAS;QACX;IACF;IAEA,MAAMwD,kBAAkBX,sBACrBY,GAAG,CAAC,CAAC,CAACR,YAAY,GAAKA,aACvBN,MAAM,CAAC,CAACM,cAAgBA,YAAYrB,UAAU,CAAC;IAClD,MAAM8B,eAAe;QAAC;WAAc,IAAIC,IAAIH;KAAiB;IAC7D,MAAMI,mBAAmBF,aAAaD,GAAG,CACvC,CAACR,cAAgB,GAAGA,YAAY,CAAC,EAAEI,sBAAsB;IAG3DnE,KAAK,CAAC,MAAM,EAAEkE,eAAe,GAAG,CAAC;IACjClE,KACE,CAAC,SAAS,EAAE0E,iBAAiBC,MAAM,CAAC,sBAAsB,EAAER,qBAAqB,OAAO,EAAEK,aAAaD,GAAG,CAAC,CAACR,cAAgB,CAAC,IAAI,EAAEA,aAAa,EAAE1B,IAAI,CAAC,OAAO;IAGhK,MAAM,EAAEvB,SAAS8D,aAAa,EAAE,GAAG,MAAMzE,gBAAgB;QACvD+D;QACAW,mBAAmBH;QACnBjE;IACF;IAEA,IAAI,CAACmE,eAAe;QAClB,MAAM,IAAIrB,MAAM;IAClB;IACAvD,KAAK;IAEL,OAAO;QAAEmB,WAAW;QAAMN,SAAS;QAAiCC,SAAS;IAAK;AACpF;AAEA,SAASqB;IACP,OAAOrC,KAAKgF,QAAQ,CAAChF,KAAKS,OAAO,CAACA,cAAc,SAC5CT,KAAK2B,OAAO,CAAClB,SAAS,0BACtBT,KAAK2B,OAAO,CAAClB,SAAS;AAC5B"}
1
+ {"version":3,"sources":["../../src/lib/update-payload-in-project.ts"],"sourcesContent":["import fse from 'fs-extra'\nimport { fileURLToPath } from 'node:url'\nimport path from 'path'\n\nimport type { NextAppDetails, TanStackAppDetails } from '../types.js'\n\nimport { copyRecursiveSync } from '../utils/copy-recursive-sync.js'\nimport { info } from '../utils/log.js'\nimport { resolvePackageVersion } from '../utils/resolvePackageVersion.js'\nimport { getPackageManager } from './get-package-manager.js'\nimport { installPackages } from './install-packages.js'\nimport { TANSTACK_TEMPLATE_FILES } from './tanstack/template-files.js'\n\nconst filename = fileURLToPath(import.meta.url)\nconst dirname = path.dirname(filename)\n\ntype UpdateResult = { message: string; success: boolean }\n\ntype PackageUpdateResult = { isUpdated: boolean } & UpdateResult\n\nexport async function updatePayloadPackages({\n projectDir,\n versionOrTag,\n}: {\n projectDir: string\n versionOrTag?: string\n}): Promise<UpdateResult> {\n const result = await performPayloadPackageUpdate({ projectDir, versionOrTag })\n\n return { message: result.message, success: result.success }\n}\n\nexport async function updatePayloadInNextProject({\n appDetails,\n versionOrTag,\n}: {\n appDetails: NextAppDetails\n versionOrTag?: string\n}): Promise<UpdateResult> {\n if (!appDetails.nextConfigPath) {\n return { message: 'No Next.js config found', success: false }\n }\n\n const projectDir = path.dirname(appDetails.nextConfigPath)\n const packageUpdate = await performPayloadPackageUpdate({ projectDir, versionOrTag })\n\n if (!packageUpdate.isUpdated) {\n return { message: packageUpdate.message, success: packageUpdate.success }\n }\n\n info(`Updating Payload Next.js files...`)\n\n const templateFilesPath =\n process.env.JEST_WORKER_ID !== undefined\n ? path.resolve(dirname, '../../../../templates/blank')\n : path.resolve(dirname, '../..', 'dist/template')\n\n const templateSrcDir = path.resolve(templateFilesPath, 'src/app/(payload)')\n const payloadDirPath = path.resolve(\n projectDir,\n appDetails.isSrcDir ? 'src/app' : 'app',\n '(payload)',\n )\n\n const legacyCustomStylesPath = path.resolve(payloadDirPath, 'custom.scss')\n const customCssPath = path.resolve(payloadDirPath, 'custom.css')\n\n if (fse.existsSync(legacyCustomStylesPath) && !fse.existsSync(customCssPath)) {\n fse.renameSync(legacyCustomStylesPath, customCssPath)\n info(\n 'Renamed `(payload)/custom.scss` to `custom.css`. If it contained Sass syntax (nesting, `$variables`, `@mixin`, etc.), convert it to plain CSS — it is no longer transpiled.',\n )\n }\n\n copyRecursiveSync(templateSrcDir, payloadDirPath, ['custom.css$'])\n\n return { message: packageUpdate.message, success: packageUpdate.success }\n}\n\nexport async function updatePayloadInTanStackProject({\n appDetails,\n templateRoot = resolveTanStackTemplateRoot(),\n versionOrTag,\n}: {\n appDetails: TanStackAppDetails\n templateRoot?: string\n versionOrTag?: string\n}): Promise<UpdateResult> {\n const packageUpdate = await performPayloadPackageUpdate({\n projectDir: appDetails.projectDir,\n versionOrTag,\n })\n\n if (!packageUpdate.isUpdated) {\n return { message: packageUpdate.message, success: packageUpdate.success }\n }\n\n info(`Updating Payload TanStack files...`)\n const hasPackedTemplateLayout = fse.existsSync(path.join(templateRoot, 'routes'))\n\n for (const { destination, relativePath, sourcePath } of TANSTACK_TEMPLATE_FILES) {\n const isPayloadRoute = destination === 'routes' && relativePath.startsWith('_payload')\n const isCustomStyles = destination === 'routes' && relativePath === '_payload/custom.css'\n\n if (!isPayloadRoute) {\n continue\n }\n\n const destinationPath = path.join(\n destination === 'routes' ? appDetails.routesDir : appDetails.sourceDir,\n relativePath,\n )\n if (isCustomStyles && fse.existsSync(destinationPath)) {\n continue\n }\n\n const templatePath = hasPackedTemplateLayout\n ? path.join(templateRoot, destination, relativePath)\n : path.join(templateRoot, sourcePath)\n fse.ensureDirSync(path.dirname(destinationPath))\n fse.copyFileSync(templatePath, destinationPath)\n }\n\n return { message: packageUpdate.message, success: packageUpdate.success }\n}\n\nexport async function updatePayloadInProject(\n appDetails: NextAppDetails,\n versionOrTag?: string,\n): Promise<UpdateResult> {\n return updatePayloadInNextProject({ appDetails, versionOrTag })\n}\n\nasync function performPayloadPackageUpdate({\n projectDir,\n versionOrTag,\n}: {\n projectDir: string\n versionOrTag?: string\n}): Promise<PackageUpdateResult> {\n const packageObj = (await fse.readJson(path.resolve(projectDir, 'package.json'))) as {\n dependencies?: Record<string, string>\n devDependencies?: Record<string, string>\n }\n if (!packageObj.dependencies && !packageObj.devDependencies) {\n throw new Error('No package.json found in this project')\n }\n\n const dependencyGroups = [packageObj.dependencies, packageObj.devDependencies].filter(\n (dependencies): dependencies is Record<string, string> => Boolean(dependencies),\n )\n const payloadPackageEntries = dependencyGroups.flatMap((dependencies) =>\n Object.entries(dependencies).filter(\n ([packageName]) => packageName === 'payload' || packageName.startsWith('@payloadcms/'),\n ),\n )\n const payloadVersion = payloadPackageEntries.find(\n ([packageName]) => packageName === 'payload',\n )?.[1]\n if (!payloadVersion) {\n throw new Error('Payload is not installed in this project')\n }\n\n const packageManager = await getPackageManager({ projectDir })\n const latestPayloadVersion = await resolvePackageVersion({ packageName: 'payload', versionOrTag })\n\n if (payloadPackageEntries.every(([, version]) => version === latestPayloadVersion)) {\n return {\n isUpdated: false,\n message: `Payload v${payloadVersion} is already up to date.`,\n success: true,\n }\n }\n\n const payloadPackages = payloadPackageEntries\n .map(([packageName]) => packageName)\n .filter((packageName) => packageName.startsWith('@payloadcms/'))\n const packageNames = ['payload', ...new Set(payloadPackages)]\n const packagesToUpdate = packageNames.map(\n (packageName) => `${packageName}@${latestPayloadVersion}`,\n )\n\n info(`Using ${packageManager}.\\n`)\n info(\n `Updating ${packagesToUpdate.length} Payload packages to v${latestPayloadVersion}...\\n\\n${packageNames.map((packageName) => ` - ${packageName}`).join('\\n')}`,\n )\n\n const { success: updateSuccess } = await installPackages({\n packageManager,\n packagesToInstall: packagesToUpdate,\n projectDir,\n })\n\n if (!updateSuccess) {\n throw new Error('Failed to update Payload packages')\n }\n info('Payload packages updated successfully.')\n\n return { isUpdated: true, message: 'Payload updated successfully.', success: true }\n}\n\nfunction resolveTanStackTemplateRoot(): string {\n return path.basename(path.dirname(dirname)) === 'dist'\n ? path.resolve(dirname, '../template-tanstack')\n : path.resolve(dirname, '../../../../templates/blank-tanstack/src')\n}\n"],"names":["fse","fileURLToPath","path","copyRecursiveSync","info","resolvePackageVersion","getPackageManager","installPackages","TANSTACK_TEMPLATE_FILES","filename","url","dirname","updatePayloadPackages","projectDir","versionOrTag","result","performPayloadPackageUpdate","message","success","updatePayloadInNextProject","appDetails","nextConfigPath","packageUpdate","isUpdated","templateFilesPath","process","env","JEST_WORKER_ID","undefined","resolve","templateSrcDir","payloadDirPath","isSrcDir","legacyCustomStylesPath","customCssPath","existsSync","renameSync","updatePayloadInTanStackProject","templateRoot","resolveTanStackTemplateRoot","hasPackedTemplateLayout","join","destination","relativePath","sourcePath","isPayloadRoute","startsWith","isCustomStyles","destinationPath","routesDir","sourceDir","templatePath","ensureDirSync","copyFileSync","updatePayloadInProject","packageObj","readJson","dependencies","devDependencies","Error","dependencyGroups","filter","Boolean","payloadPackageEntries","flatMap","Object","entries","packageName","payloadVersion","find","packageManager","latestPayloadVersion","every","version","payloadPackages","map","packageNames","Set","packagesToUpdate","length","updateSuccess","packagesToInstall","basename"],"mappings":"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"}
package/dist/main.js CHANGED
@@ -9,7 +9,7 @@ import { createProject } from './lib/create-project.js';
9
9
  import { parseExample } from './lib/examples.js';
10
10
  import { generateSecret } from './lib/generate-secret.js';
11
11
  import { getPackageManager } from './lib/get-package-manager.js';
12
- import { getNextAppDetails, initNext } from './lib/init-next.js';
12
+ import { getNextAppDetails, initNext, minimumNextVersion } from './lib/init-next.js';
13
13
  import { initTanStack } from './lib/init-tanstack.js';
14
14
  import { manageEnvFiles } from './lib/manage-env-files.js';
15
15
  import { parseProjectName } from './lib/parse-project-name.js';
@@ -102,7 +102,7 @@ export class Main {
102
102
  return;
103
103
  }
104
104
  if (appFramework.kind === 'next' && !appFramework.appDetails.isSupportedNextVersion) {
105
- p.log.warn(`Next.js v${appFramework.appDetails.nextVersion} is unsupported. Next.js >= 15 is required to use Payload.`);
105
+ p.log.warn(`Next.js v${appFramework.appDetails.nextVersion} is unsupported. Next.js >= ${minimumNextVersion.major}.${minimumNextVersion.minor} is required to use Payload.`);
106
106
  p.outro(feedbackOutro());
107
107
  process.exit(0);
108
108
  }
package/dist/main.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/main.ts"],"sourcesContent":["import * as p from '@clack/prompts'\nimport slugify from '@sindresorhus/slugify'\nimport arg from 'arg'\nimport chalk from 'chalk'\nimport figures from 'figures'\nimport path from 'path'\n\nimport type {\n CliArgs,\n NextAppDetails,\n TanStackAppDetails,\n TanStackDetectionResult,\n} from './types.js'\n\nimport { configurePayloadConfig } from './lib/configure-payload-config.js'\nimport { createProject } from './lib/create-project.js'\nimport { parseExample } from './lib/examples.js'\nimport { generateSecret } from './lib/generate-secret.js'\nimport { getPackageManager } from './lib/get-package-manager.js'\nimport { getNextAppDetails, initNext } from './lib/init-next.js'\nimport { initTanStack } from './lib/init-tanstack.js'\nimport { manageEnvFiles } from './lib/manage-env-files.js'\nimport { parseProjectName } from './lib/parse-project-name.js'\nimport { parseTemplate } from './lib/parse-template.js'\nimport { selectDb } from './lib/select-db.js'\nimport { getTanStackAppDetails } from './lib/tanstack/detect.js'\nimport { getValidTemplates, validateTemplate } from './lib/templates.js'\nimport {\n updatePayloadInNextProject,\n updatePayloadInTanStackProject,\n} from './lib/update-payload-in-project.js'\nimport { debug, error, info } from './utils/log.js'\nimport {\n feedbackOutro,\n helpMessage,\n moveMessage,\n successfulNextInit,\n successfulTanStackInit,\n successMessage,\n} from './utils/messages.js'\nimport {\n DEFAULT_PAYLOAD_VERSION_TAG,\n resolvePackageVersion,\n} from './utils/resolvePackageVersion.js'\n\nexport class Main {\n args: CliArgs\n\n constructor() {\n // @ts-expect-error bad typings\n this.args = arg(\n {\n '--branch': String,\n '--db': String,\n '--db-accept-recommended': Boolean,\n '--db-connection-string': String,\n '--example': String,\n '--help': Boolean,\n '--local-template': String,\n '--name': String,\n '--payload-version': String, // Install a specific Payload version or npm dist-tag (e.g. 3.40.0 or canary; default: canary)\n '--secret': String,\n '--template': String,\n\n // Next.js\n '--init-next': Boolean, // TODO: Is this needed if we detect if inside Next.js project?\n\n // Agent\n '--no-agent': Boolean,\n\n // Package manager\n '--no-deps': Boolean,\n '--use-bun': Boolean,\n '--use-npm': Boolean,\n '--use-pnpm': Boolean,\n '--use-yarn': Boolean,\n\n // Other\n '--no-git': Boolean,\n\n // Flags\n '--beta': Boolean,\n '--debug': Boolean,\n '--dry-run': Boolean,\n\n // Aliases\n '-d': '--db',\n '-e': '--example',\n '-h': '--help',\n '-n': '--name',\n '-t': '--template',\n },\n { permissive: true },\n )\n }\n\n async init(): Promise<void> {\n try {\n const debugFlag = this.args['--debug']\n\n // Set DEBUG env var for logger utility\n if (debugFlag) {\n process.env.DEBUG = 'true'\n }\n\n const LATEST_VERSION = await resolvePackageVersion({\n debug: debugFlag,\n packageName: 'payload',\n versionOrTag: this.args['--payload-version'] ?? DEFAULT_PAYLOAD_VERSION_TAG,\n })\n\n if (this.args['--help']) {\n helpMessage()\n process.exit(0)\n }\n\n // eslint-disable-next-line no-console\n console.log('\\n')\n p.intro(chalk.bgCyan(chalk.black(' create-payload-app ')))\n p.note(\"Welcome to Payload. Let's create a project!\")\n\n const tanStackDetection = await getTanStackAppDetails({ projectDir: process.cwd() })\n const nextAppDetails = await getNextAppDetails(process.cwd())\n const appFramework = resolveAppFramework({ nextAppDetails, tanStackDetection })\n\n if (appFramework.kind === 'ambiguous') {\n p.log.warn(\n 'Both Next.js and TanStack project markers were detected. Remove one framework before installing Payload.',\n )\n p.outro(feedbackOutro())\n return\n }\n\n if (appFramework.kind === 'unsupported-tanstack') {\n p.log.warn(appFramework.reason)\n p.outro(feedbackOutro())\n return\n }\n\n if (appFramework.kind === 'next' && !appFramework.appDetails.isSupportedNextVersion) {\n p.log.warn(\n `Next.js v${appFramework.appDetails.nextVersion} is unsupported. Next.js >= 15 is required to use Payload.`,\n )\n p.outro(feedbackOutro())\n process.exit(0)\n }\n\n const hasPayload = appFramework.kind !== 'none' && appFramework.appDetails.isPayloadInstalled\n\n if (hasPayload) {\n p.log.warn(`Payload installation detected in current project.`)\n const shouldUpdate = await p.confirm({\n initialValue: false,\n message: chalk.bold(`Upgrade Payload in this project?`),\n })\n\n if (!p.isCancel(shouldUpdate) && shouldUpdate) {\n const versionOrTag = this.args['--payload-version'] ?? DEFAULT_PAYLOAD_VERSION_TAG\n const updateResult =\n appFramework.kind === 'next'\n ? await updatePayloadInNextProject({\n appDetails: appFramework.appDetails,\n versionOrTag,\n })\n : await updatePayloadInTanStackProject({\n appDetails: appFramework.appDetails,\n versionOrTag,\n })\n\n const { message, success: updateSuccess } = updateResult\n if (updateSuccess) {\n info(message)\n } else {\n error(message)\n }\n }\n\n p.outro(feedbackOutro())\n return\n }\n\n if (appFramework.kind === 'next') {\n this.args['--name'] = slugify(\n path.basename(path.dirname(appFramework.appDetails.nextConfigPath!)),\n )\n } else if (appFramework.kind === 'tanstack') {\n this.args['--name'] = slugify(path.basename(appFramework.appDetails.projectDir))\n }\n\n const projectName = await parseProjectName(this.args)\n let projectDir: string\n if (appFramework.kind === 'next') {\n projectDir = path.dirname(appFramework.appDetails.nextConfigPath!)\n } else if (appFramework.kind === 'tanstack') {\n projectDir = appFramework.appDetails.projectDir\n } else {\n projectDir = path.resolve(process.cwd(), slugify(projectName))\n }\n\n const packageManager = await getPackageManager({ cliArgs: this.args, projectDir })\n\n if (appFramework.kind === 'next') {\n const { hasTopLevelLayout, nextAppDir } = appFramework.appDetails\n\n p.log.step(\n chalk.bold(`${chalk.bgBlack(` ${figures.triangleUp} Next.js `)} project detected!`),\n )\n\n const proceed = await p.confirm({\n initialValue: true,\n message: chalk.bold(`Install ${chalk.green('Payload')} in this project?`),\n })\n if (p.isCancel(proceed) || !proceed) {\n p.outro(feedbackOutro())\n process.exit(0)\n }\n\n // Check for top-level layout.tsx\n if (nextAppDir && hasTopLevelLayout) {\n p.log.warn(moveMessage({ nextAppDir, projectDir }))\n p.outro(feedbackOutro())\n process.exit(0)\n }\n\n const dbDetails = await selectDb(this.args, projectName)\n\n const result = await initNext({\n ...this.args,\n dbType: dbDetails.type,\n nextAppDetails: appFramework.appDetails,\n packageManager,\n projectDir,\n })\n\n if (result.success === false) {\n p.outro(feedbackOutro())\n process.exit(1)\n }\n\n await configurePayloadConfig({\n dbType: dbDetails?.type,\n projectDirOrConfigPath: {\n payloadConfigPath: result.payloadConfigPath,\n },\n })\n\n await manageEnvFiles({\n cliArgs: this.args,\n databaseType: dbDetails.type,\n databaseUri: dbDetails.dbUri,\n payloadSecret: generateSecret(),\n projectDir,\n })\n\n info('Payload project successfully initialized!')\n p.note(successfulNextInit(), chalk.bgGreen(chalk.black(' Documentation ')))\n p.outro(feedbackOutro())\n return\n }\n\n if (appFramework.kind === 'tanstack') {\n const frameworkName =\n appFramework.appDetails.kind === 'start' ? 'TanStack Start' : 'TanStack Router'\n p.log.step(chalk.bold(`${chalk.bgBlack(` ${frameworkName} `)} project detected!`))\n\n const proceed = await p.confirm({\n initialValue: true,\n message: chalk.bold(\n appFramework.appDetails.kind === 'start'\n ? 'Install Payload in this TanStack Start project?'\n : 'Convert this project to TanStack Start and install Payload?',\n ),\n })\n if (p.isCancel(proceed) || !proceed) {\n p.outro(feedbackOutro())\n process.exit(0)\n }\n\n const dbDetails = await selectDb(this.args, projectName)\n const result = await initTanStack({\n ...this.args,\n appDetails: appFramework.appDetails,\n dbType: dbDetails.type,\n packageManager,\n projectDir,\n })\n\n if (result.success === false) {\n p.log.error(result.reason)\n p.outro(feedbackOutro())\n process.exit(1)\n }\n\n await configurePayloadConfig({\n dbType: dbDetails.type,\n projectDirOrConfigPath: {\n payloadConfigPath: result.payloadConfigPath,\n },\n })\n\n await manageEnvFiles({\n cliArgs: this.args,\n databaseType: dbDetails.type,\n databaseUri: dbDetails.dbUri,\n payloadSecret: generateSecret(),\n projectDir,\n })\n\n info('Payload project successfully initialized!')\n p.note(successfulTanStackInit(), chalk.bgGreen(chalk.black(' TanStack Start initialized ')))\n p.outro(feedbackOutro())\n return\n }\n\n const templateArg = this.args['--template']\n if (templateArg) {\n const valid = validateTemplate({ templateName: templateArg })\n if (!valid) {\n helpMessage()\n process.exit(1)\n }\n }\n\n const exampleArg = this.args['--example']\n\n if (exampleArg) {\n const example = await parseExample({\n name: exampleArg,\n branch: this.args['--branch'] ?? 'main',\n })\n\n if (!example) {\n helpMessage()\n process.exit(1)\n }\n\n await createProject({\n cliArgs: this.args,\n example,\n packageManager,\n projectDir,\n projectName,\n })\n }\n\n if (debugFlag) {\n debug(`Using ${exampleArg ? 'examples' : 'templates'} from git tag: v${LATEST_VERSION}`)\n }\n\n if (!exampleArg) {\n const validTemplates = getValidTemplates()\n const template = await parseTemplate(this.args, validTemplates)\n if (!template) {\n p.log.error('Invalid template given')\n p.outro(feedbackOutro())\n process.exit(1)\n }\n\n switch (template.type) {\n case 'plugin': {\n await createProject({\n cliArgs: this.args,\n packageManager,\n projectDir,\n projectName,\n template,\n })\n break\n }\n case 'starter': {\n const dbDetails = await selectDb(this.args, projectName, template)\n await createProject({\n cliArgs: this.args,\n dbDetails,\n packageManager,\n projectDir,\n projectName,\n template,\n })\n\n break\n }\n }\n }\n\n info('Payload project successfully created!')\n p.log.step(chalk.bgGreen(chalk.black(' Next Steps ')))\n p.log.message(successMessage(projectDir, packageManager))\n p.outro(feedbackOutro())\n } catch (err: unknown) {\n error(err instanceof Error ? err.message : 'An error occurred')\n }\n }\n}\n\ntype AppFramework =\n | { appDetails: NextAppDetails; kind: 'next' }\n | { appDetails: TanStackAppDetails; kind: 'tanstack' }\n | { kind: 'ambiguous' }\n | { kind: 'none' }\n | { kind: 'unsupported-tanstack'; reason: string }\n\nexport function resolveAppFramework({\n nextAppDetails,\n tanStackDetection,\n}: {\n nextAppDetails: NextAppDetails\n tanStackDetection: TanStackDetectionResult\n}): AppFramework {\n if (nextAppDetails.nextConfigPath && tanStackDetection.detected) {\n return { kind: 'ambiguous' }\n }\n\n if (nextAppDetails.nextConfigPath) {\n return { appDetails: nextAppDetails, kind: 'next' }\n }\n\n if (!tanStackDetection.detected) {\n return { kind: 'none' }\n }\n\n if (!tanStackDetection.compatible) {\n return { kind: 'unsupported-tanstack', reason: tanStackDetection.reason }\n }\n\n return { appDetails: tanStackDetection.details, kind: 'tanstack' }\n}\n"],"names":["p","slugify","arg","chalk","figures","path","configurePayloadConfig","createProject","parseExample","generateSecret","getPackageManager","getNextAppDetails","initNext","initTanStack","manageEnvFiles","parseProjectName","parseTemplate","selectDb","getTanStackAppDetails","getValidTemplates","validateTemplate","updatePayloadInNextProject","updatePayloadInTanStackProject","debug","error","info","feedbackOutro","helpMessage","moveMessage","successfulNextInit","successfulTanStackInit","successMessage","DEFAULT_PAYLOAD_VERSION_TAG","resolvePackageVersion","Main","args","String","Boolean","permissive","init","debugFlag","process","env","DEBUG","LATEST_VERSION","packageName","versionOrTag","exit","console","log","intro","bgCyan","black","note","tanStackDetection","projectDir","cwd","nextAppDetails","appFramework","resolveAppFramework","kind","warn","outro","reason","appDetails","isSupportedNextVersion","nextVersion","hasPayload","isPayloadInstalled","shouldUpdate","confirm","initialValue","message","bold","isCancel","updateResult","success","updateSuccess","basename","dirname","nextConfigPath","projectName","resolve","packageManager","cliArgs","hasTopLevelLayout","nextAppDir","step","bgBlack","triangleUp","proceed","green","dbDetails","result","dbType","type","projectDirOrConfigPath","payloadConfigPath","databaseType","databaseUri","dbUri","payloadSecret","bgGreen","frameworkName","templateArg","valid","templateName","exampleArg","example","name","branch","validTemplates","template","err","Error","detected","compatible","details"],"mappings":"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"}
1
+ {"version":3,"sources":["../src/main.ts"],"sourcesContent":["import * as p from '@clack/prompts'\nimport slugify from '@sindresorhus/slugify'\nimport arg from 'arg'\nimport chalk from 'chalk'\nimport figures from 'figures'\nimport path from 'path'\n\nimport type {\n CliArgs,\n NextAppDetails,\n TanStackAppDetails,\n TanStackDetectionResult,\n} from './types.js'\n\nimport { configurePayloadConfig } from './lib/configure-payload-config.js'\nimport { createProject } from './lib/create-project.js'\nimport { parseExample } from './lib/examples.js'\nimport { generateSecret } from './lib/generate-secret.js'\nimport { getPackageManager } from './lib/get-package-manager.js'\nimport { getNextAppDetails, initNext, minimumNextVersion } from './lib/init-next.js'\nimport { initTanStack } from './lib/init-tanstack.js'\nimport { manageEnvFiles } from './lib/manage-env-files.js'\nimport { parseProjectName } from './lib/parse-project-name.js'\nimport { parseTemplate } from './lib/parse-template.js'\nimport { selectDb } from './lib/select-db.js'\nimport { getTanStackAppDetails } from './lib/tanstack/detect.js'\nimport { getValidTemplates, validateTemplate } from './lib/templates.js'\nimport {\n updatePayloadInNextProject,\n updatePayloadInTanStackProject,\n} from './lib/update-payload-in-project.js'\nimport { debug, error, info } from './utils/log.js'\nimport {\n feedbackOutro,\n helpMessage,\n moveMessage,\n successfulNextInit,\n successfulTanStackInit,\n successMessage,\n} from './utils/messages.js'\nimport {\n DEFAULT_PAYLOAD_VERSION_TAG,\n resolvePackageVersion,\n} from './utils/resolvePackageVersion.js'\n\nexport class Main {\n args: CliArgs\n\n constructor() {\n // @ts-expect-error bad typings\n this.args = arg(\n {\n '--branch': String,\n '--db': String,\n '--db-accept-recommended': Boolean,\n '--db-connection-string': String,\n '--example': String,\n '--help': Boolean,\n '--local-template': String,\n '--name': String,\n '--payload-version': String, // Install a specific Payload version or npm dist-tag (e.g. 3.40.0 or beta; default: this CLI's own dist-tag)\n '--secret': String,\n '--template': String,\n\n // Next.js\n '--init-next': Boolean, // TODO: Is this needed if we detect if inside Next.js project?\n\n // Agent\n '--no-agent': Boolean,\n\n // Package manager\n '--no-deps': Boolean,\n '--use-bun': Boolean,\n '--use-npm': Boolean,\n '--use-pnpm': Boolean,\n '--use-yarn': Boolean,\n\n // Other\n '--no-git': Boolean,\n\n // Flags\n '--beta': Boolean,\n '--debug': Boolean,\n '--dry-run': Boolean,\n\n // Aliases\n '-d': '--db',\n '-e': '--example',\n '-h': '--help',\n '-n': '--name',\n '-t': '--template',\n },\n { permissive: true },\n )\n }\n\n async init(): Promise<void> {\n try {\n const debugFlag = this.args['--debug']\n\n // Set DEBUG env var for logger utility\n if (debugFlag) {\n process.env.DEBUG = 'true'\n }\n\n const LATEST_VERSION = await resolvePackageVersion({\n debug: debugFlag,\n packageName: 'payload',\n versionOrTag: this.args['--payload-version'] ?? DEFAULT_PAYLOAD_VERSION_TAG,\n })\n\n if (this.args['--help']) {\n helpMessage()\n process.exit(0)\n }\n\n // eslint-disable-next-line no-console\n console.log('\\n')\n p.intro(chalk.bgCyan(chalk.black(' create-payload-app ')))\n p.note(\"Welcome to Payload. Let's create a project!\")\n\n const tanStackDetection = await getTanStackAppDetails({ projectDir: process.cwd() })\n const nextAppDetails = await getNextAppDetails(process.cwd())\n const appFramework = resolveAppFramework({ nextAppDetails, tanStackDetection })\n\n if (appFramework.kind === 'ambiguous') {\n p.log.warn(\n 'Both Next.js and TanStack project markers were detected. Remove one framework before installing Payload.',\n )\n p.outro(feedbackOutro())\n return\n }\n\n if (appFramework.kind === 'unsupported-tanstack') {\n p.log.warn(appFramework.reason)\n p.outro(feedbackOutro())\n return\n }\n\n if (appFramework.kind === 'next' && !appFramework.appDetails.isSupportedNextVersion) {\n p.log.warn(\n `Next.js v${appFramework.appDetails.nextVersion} is unsupported. Next.js >= ${minimumNextVersion.major}.${minimumNextVersion.minor} is required to use Payload.`,\n )\n p.outro(feedbackOutro())\n process.exit(0)\n }\n\n const hasPayload = appFramework.kind !== 'none' && appFramework.appDetails.isPayloadInstalled\n\n if (hasPayload) {\n p.log.warn(`Payload installation detected in current project.`)\n const shouldUpdate = await p.confirm({\n initialValue: false,\n message: chalk.bold(`Upgrade Payload in this project?`),\n })\n\n if (!p.isCancel(shouldUpdate) && shouldUpdate) {\n const versionOrTag = this.args['--payload-version'] ?? DEFAULT_PAYLOAD_VERSION_TAG\n const updateResult =\n appFramework.kind === 'next'\n ? await updatePayloadInNextProject({\n appDetails: appFramework.appDetails,\n versionOrTag,\n })\n : await updatePayloadInTanStackProject({\n appDetails: appFramework.appDetails,\n versionOrTag,\n })\n\n const { message, success: updateSuccess } = updateResult\n if (updateSuccess) {\n info(message)\n } else {\n error(message)\n }\n }\n\n p.outro(feedbackOutro())\n return\n }\n\n if (appFramework.kind === 'next') {\n this.args['--name'] = slugify(\n path.basename(path.dirname(appFramework.appDetails.nextConfigPath!)),\n )\n } else if (appFramework.kind === 'tanstack') {\n this.args['--name'] = slugify(path.basename(appFramework.appDetails.projectDir))\n }\n\n const projectName = await parseProjectName(this.args)\n let projectDir: string\n if (appFramework.kind === 'next') {\n projectDir = path.dirname(appFramework.appDetails.nextConfigPath!)\n } else if (appFramework.kind === 'tanstack') {\n projectDir = appFramework.appDetails.projectDir\n } else {\n projectDir = path.resolve(process.cwd(), slugify(projectName))\n }\n\n const packageManager = await getPackageManager({ cliArgs: this.args, projectDir })\n\n if (appFramework.kind === 'next') {\n const { hasTopLevelLayout, nextAppDir } = appFramework.appDetails\n\n p.log.step(\n chalk.bold(`${chalk.bgBlack(` ${figures.triangleUp} Next.js `)} project detected!`),\n )\n\n const proceed = await p.confirm({\n initialValue: true,\n message: chalk.bold(`Install ${chalk.green('Payload')} in this project?`),\n })\n if (p.isCancel(proceed) || !proceed) {\n p.outro(feedbackOutro())\n process.exit(0)\n }\n\n // Check for top-level layout.tsx\n if (nextAppDir && hasTopLevelLayout) {\n p.log.warn(moveMessage({ nextAppDir, projectDir }))\n p.outro(feedbackOutro())\n process.exit(0)\n }\n\n const dbDetails = await selectDb(this.args, projectName)\n\n const result = await initNext({\n ...this.args,\n dbType: dbDetails.type,\n nextAppDetails: appFramework.appDetails,\n packageManager,\n projectDir,\n })\n\n if (result.success === false) {\n p.outro(feedbackOutro())\n process.exit(1)\n }\n\n await configurePayloadConfig({\n dbType: dbDetails?.type,\n projectDirOrConfigPath: {\n payloadConfigPath: result.payloadConfigPath,\n },\n })\n\n await manageEnvFiles({\n cliArgs: this.args,\n databaseType: dbDetails.type,\n databaseUri: dbDetails.dbUri,\n payloadSecret: generateSecret(),\n projectDir,\n })\n\n info('Payload project successfully initialized!')\n p.note(successfulNextInit(), chalk.bgGreen(chalk.black(' Documentation ')))\n p.outro(feedbackOutro())\n return\n }\n\n if (appFramework.kind === 'tanstack') {\n const frameworkName =\n appFramework.appDetails.kind === 'start' ? 'TanStack Start' : 'TanStack Router'\n p.log.step(chalk.bold(`${chalk.bgBlack(` ${frameworkName} `)} project detected!`))\n\n const proceed = await p.confirm({\n initialValue: true,\n message: chalk.bold(\n appFramework.appDetails.kind === 'start'\n ? 'Install Payload in this TanStack Start project?'\n : 'Convert this project to TanStack Start and install Payload?',\n ),\n })\n if (p.isCancel(proceed) || !proceed) {\n p.outro(feedbackOutro())\n process.exit(0)\n }\n\n const dbDetails = await selectDb(this.args, projectName)\n const result = await initTanStack({\n ...this.args,\n appDetails: appFramework.appDetails,\n dbType: dbDetails.type,\n packageManager,\n projectDir,\n })\n\n if (result.success === false) {\n p.log.error(result.reason)\n p.outro(feedbackOutro())\n process.exit(1)\n }\n\n await configurePayloadConfig({\n dbType: dbDetails.type,\n projectDirOrConfigPath: {\n payloadConfigPath: result.payloadConfigPath,\n },\n })\n\n await manageEnvFiles({\n cliArgs: this.args,\n databaseType: dbDetails.type,\n databaseUri: dbDetails.dbUri,\n payloadSecret: generateSecret(),\n projectDir,\n })\n\n info('Payload project successfully initialized!')\n p.note(successfulTanStackInit(), chalk.bgGreen(chalk.black(' TanStack Start initialized ')))\n p.outro(feedbackOutro())\n return\n }\n\n const templateArg = this.args['--template']\n if (templateArg) {\n const valid = validateTemplate({ templateName: templateArg })\n if (!valid) {\n helpMessage()\n process.exit(1)\n }\n }\n\n const exampleArg = this.args['--example']\n\n if (exampleArg) {\n const example = await parseExample({\n name: exampleArg,\n branch: this.args['--branch'] ?? 'main',\n })\n\n if (!example) {\n helpMessage()\n process.exit(1)\n }\n\n await createProject({\n cliArgs: this.args,\n example,\n packageManager,\n projectDir,\n projectName,\n })\n }\n\n if (debugFlag) {\n debug(`Using ${exampleArg ? 'examples' : 'templates'} from git tag: v${LATEST_VERSION}`)\n }\n\n if (!exampleArg) {\n const validTemplates = getValidTemplates()\n const template = await parseTemplate(this.args, validTemplates)\n if (!template) {\n p.log.error('Invalid template given')\n p.outro(feedbackOutro())\n process.exit(1)\n }\n\n switch (template.type) {\n case 'plugin': {\n await createProject({\n cliArgs: this.args,\n packageManager,\n projectDir,\n projectName,\n template,\n })\n break\n }\n case 'starter': {\n const dbDetails = await selectDb(this.args, projectName, template)\n await createProject({\n cliArgs: this.args,\n dbDetails,\n packageManager,\n projectDir,\n projectName,\n template,\n })\n\n break\n }\n }\n }\n\n info('Payload project successfully created!')\n p.log.step(chalk.bgGreen(chalk.black(' Next Steps ')))\n p.log.message(successMessage(projectDir, packageManager))\n p.outro(feedbackOutro())\n } catch (err: unknown) {\n error(err instanceof Error ? err.message : 'An error occurred')\n }\n }\n}\n\ntype AppFramework =\n | { appDetails: NextAppDetails; kind: 'next' }\n | { appDetails: TanStackAppDetails; kind: 'tanstack' }\n | { kind: 'ambiguous' }\n | { kind: 'none' }\n | { kind: 'unsupported-tanstack'; reason: string }\n\nexport function resolveAppFramework({\n nextAppDetails,\n tanStackDetection,\n}: {\n nextAppDetails: NextAppDetails\n tanStackDetection: TanStackDetectionResult\n}): AppFramework {\n if (nextAppDetails.nextConfigPath && tanStackDetection.detected) {\n return { kind: 'ambiguous' }\n }\n\n if (nextAppDetails.nextConfigPath) {\n return { appDetails: nextAppDetails, kind: 'next' }\n }\n\n if (!tanStackDetection.detected) {\n return { kind: 'none' }\n }\n\n if (!tanStackDetection.compatible) {\n return { kind: 'unsupported-tanstack', reason: tanStackDetection.reason }\n }\n\n return { appDetails: tanStackDetection.details, kind: 'tanstack' }\n}\n"],"names":["p","slugify","arg","chalk","figures","path","configurePayloadConfig","createProject","parseExample","generateSecret","getPackageManager","getNextAppDetails","initNext","minimumNextVersion","initTanStack","manageEnvFiles","parseProjectName","parseTemplate","selectDb","getTanStackAppDetails","getValidTemplates","validateTemplate","updatePayloadInNextProject","updatePayloadInTanStackProject","debug","error","info","feedbackOutro","helpMessage","moveMessage","successfulNextInit","successfulTanStackInit","successMessage","DEFAULT_PAYLOAD_VERSION_TAG","resolvePackageVersion","Main","args","String","Boolean","permissive","init","debugFlag","process","env","DEBUG","LATEST_VERSION","packageName","versionOrTag","exit","console","log","intro","bgCyan","black","note","tanStackDetection","projectDir","cwd","nextAppDetails","appFramework","resolveAppFramework","kind","warn","outro","reason","appDetails","isSupportedNextVersion","nextVersion","major","minor","hasPayload","isPayloadInstalled","shouldUpdate","confirm","initialValue","message","bold","isCancel","updateResult","success","updateSuccess","basename","dirname","nextConfigPath","projectName","resolve","packageManager","cliArgs","hasTopLevelLayout","nextAppDir","step","bgBlack","triangleUp","proceed","green","dbDetails","result","dbType","type","projectDirOrConfigPath","payloadConfigPath","databaseType","databaseUri","dbUri","payloadSecret","bgGreen","frameworkName","templateArg","valid","templateName","exampleArg","example","name","branch","validTemplates","template","err","Error","detected","compatible","details"],"mappings":"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"}
@@ -31,7 +31,7 @@ export default buildConfig({
31
31
  url: process.env.DATABASE_URL || '',
32
32
  }),
33
33
  localization: {
34
- locales: ['en'],
34
+ locales: [{ code: 'en', label: 'English' }],
35
35
  fallback: true,
36
36
  defaultLocale: 'en',
37
37
  },
@@ -1,9 +1,25 @@
1
1
  /* THIS FILE WAS GENERATED AUTOMATICALLY BY PAYLOAD. MODIFY AT YOUR OWN RISK. */
2
+ import payloadStyles from '@payloadcms/ui/css/app.css?url'
2
3
  import { payloadAdminSplatRoute } from '@payloadcms/tanstack-start/client'
3
4
  import { createFileRoute } from '@tanstack/react-router'
4
5
 
6
+ import customStyles from './custom.css?url'
5
7
  import { loadAdminPageRSC } from './server.functions.js'
6
8
 
7
- export const Route = createFileRoute('/_payload/admin/$')(
8
- payloadAdminSplatRoute({ load: loadAdminPageRSC }),
9
- )
9
+ const adminRoute = payloadAdminSplatRoute({ load: loadAdminPageRSC })
10
+
11
+ export const Route = createFileRoute('/_payload/admin/$')({
12
+ ...adminRoute,
13
+ head: (context) => {
14
+ const adminHead = adminRoute.head(context)
15
+
16
+ return {
17
+ ...adminHead,
18
+ links: [
19
+ ...adminHead.links,
20
+ { rel: 'stylesheet', href: payloadStyles },
21
+ { rel: 'stylesheet', href: customStyles },
22
+ ],
23
+ }
24
+ },
25
+ })
@@ -1,9 +1,25 @@
1
1
  /* THIS FILE WAS GENERATED AUTOMATICALLY BY PAYLOAD. MODIFY AT YOUR OWN RISK. */
2
+ import payloadStyles from '@payloadcms/ui/css/app.css?url'
2
3
  import { payloadAdminIndexRoute } from '@payloadcms/tanstack-start/client'
3
4
  import { createFileRoute } from '@tanstack/react-router'
4
5
 
6
+ import customStyles from './custom.css?url'
5
7
  import { loadAdminPageRSC } from './server.functions.js'
6
8
 
7
- export const Route = createFileRoute('/_payload/admin/')(
8
- payloadAdminIndexRoute({ load: loadAdminPageRSC }),
9
- )
9
+ const adminRoute = payloadAdminIndexRoute({ load: loadAdminPageRSC })
10
+
11
+ export const Route = createFileRoute('/_payload/admin/')({
12
+ ...adminRoute,
13
+ head: (context) => {
14
+ const adminHead = adminRoute.head(context)
15
+
16
+ return {
17
+ ...adminHead,
18
+ links: [
19
+ ...adminHead.links,
20
+ { rel: 'stylesheet', href: payloadStyles },
21
+ { rel: 'stylesheet', href: customStyles },
22
+ ],
23
+ }
24
+ },
25
+ })
@@ -3,12 +3,10 @@ import { payloadLayoutRoute } from '@payloadcms/tanstack-start/client'
3
3
  import { createFileRoute } from '@tanstack/react-router'
4
4
 
5
5
  import { getLayoutDataFn, serverFunctionHandler } from './_payload/server.functions.js'
6
- import styles from '../payload.css?url'
7
6
 
8
7
  export const Route = createFileRoute('/_payload')({
9
8
  head: () => ({
10
9
  links: [
11
- { rel: 'stylesheet', href: styles },
12
10
  {
13
11
  rel: 'preconnect',
14
12
  href: 'https://fonts.googleapis.com',
@@ -30,7 +30,7 @@ export default buildConfig({
30
30
  url: process.env.DATABASE_URL || '',
31
31
  }),
32
32
  localization: {
33
- locales: ['en'],
33
+ locales: [{ code: 'en', label: 'English' }],
34
34
  fallback: true,
35
35
  defaultLocale: 'en',
36
36
  },
@@ -1 +1 @@
1
- {"version":3,"file":"messages.d.ts","sourceRoot":"","sources":["../../src/utils/messages.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,cAAc,EAAmB,MAAM,aAAa,CAAA;AAMlE,eAAO,MAAM,cAAc,QAE1B,CAAA;AAID,wBAAgB,WAAW,IAAI,IAAI,CAgClC;AAQD,wBAAgB,cAAc,CAAC,UAAU,EAAE,MAAM,EAAE,cAAc,EAAE,cAAc,GAAG,MAAM,CAiBzF;AAED,wBAAgB,kBAAkB,IAAI,MAAM,CAE3C;AAED,wBAAgB,sBAAsB,IAAI,MAAM,CAE/C;AAWD,wBAAgB,WAAW,CAAC,IAAI,EAAE;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,GAAG,MAAM,CAgBpF;AAED,wBAAgB,aAAa,IAAI,MAAM,CAEtC"}
1
+ {"version":3,"file":"messages.d.ts","sourceRoot":"","sources":["../../src/utils/messages.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,cAAc,EAAmB,MAAM,aAAa,CAAA;AAOlE,eAAO,MAAM,cAAc,QAE1B,CAAA;AAID,wBAAgB,WAAW,IAAI,IAAI,CAgClC;AAQD,wBAAgB,cAAc,CAAC,UAAU,EAAE,MAAM,EAAE,cAAc,EAAE,cAAc,GAAG,MAAM,CAiBzF;AAED,wBAAgB,kBAAkB,IAAI,MAAM,CAE3C;AAED,wBAAgB,sBAAsB,IAAI,MAAM,CAE/C;AAWD,wBAAgB,WAAW,CAAC,IAAI,EAAE;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,GAAG,MAAM,CAgBpF;AAED,wBAAgB,aAAa,IAAI,MAAM,CAEtC"}
@@ -2,6 +2,7 @@
2
2
  import path from 'path';
3
3
  import terminalLink from 'terminal-link';
4
4
  import { getValidTemplates } from '../lib/templates.js';
5
+ import { DEFAULT_PAYLOAD_VERSION_TAG } from './resolvePackageVersion.js';
5
6
  const header = (message)=>chalk.bold(message);
6
7
  export const welcomeMessage = chalk`
7
8
  {green Welcome to Payload. Let's create a project! }
@@ -36,7 +37,7 @@ export function helpMessage() {
36
37
  --use-pnpm Use pnpm to install dependencies
37
38
  --use-bun Use bun to install dependencies (experimental)
38
39
  --no-deps Do not install any dependencies
39
- --payload-version {underline value} Install a specific Payload version or npm dist-tag (default: canary)
40
+ --payload-version {underline value} Install a specific Payload version or npm dist-tag (default: ${DEFAULT_PAYLOAD_VERSION_TAG})
40
41
  -h Show help
41
42
  `);
42
43
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/utils/messages.ts"],"sourcesContent":["/* eslint-disable no-console */\nimport chalk from 'chalk'\nimport path from 'path'\nimport terminalLink from 'terminal-link'\n\nimport type { PackageManager, ProjectTemplate } from '../types.js'\n\nimport { getValidTemplates } from '../lib/templates.js'\n\nconst header = (message: string): string => chalk.bold(message)\n\nexport const welcomeMessage = chalk`\n {green Welcome to Payload. Let's create a project! }\n`\n\nconst spacer = ' '.repeat(8)\n\nexport function helpMessage(): void {\n const validTemplates = getValidTemplates()\n console.log(chalk`\n {bold USAGE}\n\n {dim Inside of an existing Next.js or TanStack project}\n\n {dim $} {bold npx create-payload-app}\n\n {dim Create a new project from scratch}\n\n {dim $} {bold npx create-payload-app}\n {dim $} {bold npx create-payload-app} my-project\n {dim $} {bold npx create-payload-app} -n my-project -t template-name\n\n {bold OPTIONS}\n\n -n {underline my-payload-app} Set project name\n -t {underline template_name} Choose specific template\n -e {underline example_name} Choose specific example\n\n {dim Available templates: ${formatTemplates(validTemplates)}}\n\n --no-agent Skip writing AGENTS.md\n --use-npm Use npm to install dependencies\n --use-yarn Use yarn to install dependencies\n --use-pnpm Use pnpm to install dependencies\n --use-bun Use bun to install dependencies (experimental)\n --no-deps Do not install any dependencies\n --payload-version {underline value} Install a specific Payload version or npm dist-tag (default: canary)\n -h Show help\n`)\n}\n\nfunction formatTemplates(templates: ProjectTemplate[]) {\n return `\\n\\n${spacer}${templates\n .map((t) => `${t.name}${' '.repeat(28 - t.name.length)}${t.description}`)\n .join(`\\n${spacer}`)}`\n}\n\nexport function successMessage(projectDir: string, packageManager: PackageManager): string {\n const relativePath = path.relative(process.cwd(), projectDir)\n return `\n${header('Launch Application:')}\n\n - cd ./${relativePath}\n - ${packageManager === 'npm' ? 'npm run' : packageManager} dev or follow directions in README.md\n\n${header('Documentation:')}\n\n - ${createTerminalLink(\n 'Getting Started',\n 'https://payloadcms.com/docs/getting-started/what-is-payload',\n )}\n - ${createTerminalLink('Configuration', 'https://payloadcms.com/docs/configuration/overview')}\n\n`\n}\n\nexport function successfulNextInit(): string {\n return successfulFrameworkInit()\n}\n\nexport function successfulTanStackInit(): string {\n return successfulFrameworkInit()\n}\n\nfunction successfulFrameworkInit(): string {\n return `- ${createTerminalLink(\n 'Getting Started',\n 'https://payloadcms.com/docs/getting-started/what-is-payload',\n )}\n- ${createTerminalLink('Configuration', 'https://payloadcms.com/docs/configuration/overview')}\n`\n}\n\nexport function moveMessage(args: { nextAppDir: string; projectDir: string }): string {\n const relativeAppDir = path.relative(process.cwd(), args.nextAppDir)\n return `\n${header('Next Steps:')}\n\nPayload does not support a top-level layout.tsx file in the app directory.\n\n${chalk.bold('To continue:')}\n\n- Create a new directory in ./${relativeAppDir} such as ./${relativeAppDir}/${chalk.bold('(app)')}\n- Move all files from ./${relativeAppDir} into that directory\n\nIt is recommended to do this from your IDE if your app has existing file references.\n\nOnce moved, rerun the create-payload-app command again.\n`\n}\n\nexport function feedbackOutro(): string {\n return `${chalk.bgCyan(chalk.black(' Have feedback? '))} Visit us on ${createTerminalLink('GitHub', 'https://github.com/payloadcms/payload')}.`\n}\n\n// Create terminalLink with fallback for unsupported terminals\nfunction createTerminalLink(text: string, url: string) {\n return terminalLink(text, url, {\n fallback: (text, url) => `${text}: ${url}`,\n })\n}\n"],"names":["chalk","path","terminalLink","getValidTemplates","header","message","bold","welcomeMessage","spacer","repeat","helpMessage","validTemplates","console","log","formatTemplates","templates","map","t","name","length","description","join","successMessage","projectDir","packageManager","relativePath","relative","process","cwd","createTerminalLink","successfulNextInit","successfulFrameworkInit","successfulTanStackInit","moveMessage","args","relativeAppDir","nextAppDir","feedbackOutro","bgCyan","black","text","url","fallback"],"mappings":"AAAA,6BAA6B,GAC7B,OAAOA,WAAW,QAAO;AACzB,OAAOC,UAAU,OAAM;AACvB,OAAOC,kBAAkB,gBAAe;AAIxC,SAASC,iBAAiB,QAAQ,sBAAqB;AAEvD,MAAMC,SAAS,CAACC,UAA4BL,MAAMM,IAAI,CAACD;AAEvD,OAAO,MAAME,iBAAiBP,KAAK,CAAC;;AAEpC,CAAC,CAAA;AAED,MAAMQ,SAAS,IAAIC,MAAM,CAAC;AAE1B,OAAO,SAASC;IACd,MAAMC,iBAAiBR;IACvBS,QAAQC,GAAG,CAACb,KAAK,CAAC;;;;;;;;;;;;;;;;;;;kCAmBc,EAAEc,gBAAgBH,gBAAgB;;;;;;;;;;AAUpE,CAAC;AACD;AAEA,SAASG,gBAAgBC,SAA4B;IACnD,OAAO,CAAC,IAAI,EAAEP,SAASO,UACpBC,GAAG,CAAC,CAACC,IAAM,GAAGA,EAAEC,IAAI,GAAG,IAAIT,MAAM,CAAC,KAAKQ,EAAEC,IAAI,CAACC,MAAM,IAAIF,EAAEG,WAAW,EAAE,EACvEC,IAAI,CAAC,CAAC,EAAE,EAAEb,QAAQ,GAAG;AAC1B;AAEA,OAAO,SAASc,eAAeC,UAAkB,EAAEC,cAA8B;IAC/E,MAAMC,eAAexB,KAAKyB,QAAQ,CAACC,QAAQC,GAAG,IAAIL;IAClD,OAAO,CAAC;AACV,EAAEnB,OAAO,uBAAuB;;SAEvB,EAAEqB,aAAa;IACpB,EAAED,mBAAmB,QAAQ,YAAYA,eAAe;;AAE5D,EAAEpB,OAAO,kBAAkB;;IAEvB,EAAEyB,mBACF,mBACA,+DACA;IACA,EAAEA,mBAAmB,iBAAiB,sDAAsD;;AAEhG,CAAC;AACD;AAEA,OAAO,SAASC;IACd,OAAOC;AACT;AAEA,OAAO,SAASC;IACd,OAAOD;AACT;AAEA,SAASA;IACP,OAAO,CAAC,EAAE,EAAEF,mBACV,mBACA,+DACA;EACF,EAAEA,mBAAmB,iBAAiB,sDAAsD;AAC9F,CAAC;AACD;AAEA,OAAO,SAASI,YAAYC,IAAgD;IAC1E,MAAMC,iBAAiBlC,KAAKyB,QAAQ,CAACC,QAAQC,GAAG,IAAIM,KAAKE,UAAU;IACnE,OAAO,CAAC;AACV,EAAEhC,OAAO,eAAe;;;;AAIxB,EAAEJ,MAAMM,IAAI,CAAC,gBAAgB;;8BAEC,EAAE6B,eAAe,WAAW,EAAEA,eAAe,CAAC,EAAEnC,MAAMM,IAAI,CAAC,SAAS;wBAC1E,EAAE6B,eAAe;;;;;AAKzC,CAAC;AACD;AAEA,OAAO,SAASE;IACd,OAAO,GAAGrC,MAAMsC,MAAM,CAACtC,MAAMuC,KAAK,CAAC,qBAAqB,aAAa,EAAEV,mBAAmB,UAAU,yCAAyC,CAAC,CAAC;AACjJ;AAEA,8DAA8D;AAC9D,SAASA,mBAAmBW,IAAY,EAAEC,GAAW;IACnD,OAAOvC,aAAasC,MAAMC,KAAK;QAC7BC,UAAU,CAACF,MAAMC,MAAQ,GAAGD,KAAK,EAAE,EAAEC,KAAK;IAC5C;AACF"}
1
+ {"version":3,"sources":["../../src/utils/messages.ts"],"sourcesContent":["/* eslint-disable no-console */\nimport chalk from 'chalk'\nimport path from 'path'\nimport terminalLink from 'terminal-link'\n\nimport type { PackageManager, ProjectTemplate } from '../types.js'\n\nimport { getValidTemplates } from '../lib/templates.js'\nimport { DEFAULT_PAYLOAD_VERSION_TAG } from './resolvePackageVersion.js'\n\nconst header = (message: string): string => chalk.bold(message)\n\nexport const welcomeMessage = chalk`\n {green Welcome to Payload. Let's create a project! }\n`\n\nconst spacer = ' '.repeat(8)\n\nexport function helpMessage(): void {\n const validTemplates = getValidTemplates()\n console.log(chalk`\n {bold USAGE}\n\n {dim Inside of an existing Next.js or TanStack project}\n\n {dim $} {bold npx create-payload-app}\n\n {dim Create a new project from scratch}\n\n {dim $} {bold npx create-payload-app}\n {dim $} {bold npx create-payload-app} my-project\n {dim $} {bold npx create-payload-app} -n my-project -t template-name\n\n {bold OPTIONS}\n\n -n {underline my-payload-app} Set project name\n -t {underline template_name} Choose specific template\n -e {underline example_name} Choose specific example\n\n {dim Available templates: ${formatTemplates(validTemplates)}}\n\n --no-agent Skip writing AGENTS.md\n --use-npm Use npm to install dependencies\n --use-yarn Use yarn to install dependencies\n --use-pnpm Use pnpm to install dependencies\n --use-bun Use bun to install dependencies (experimental)\n --no-deps Do not install any dependencies\n --payload-version {underline value} Install a specific Payload version or npm dist-tag (default: ${DEFAULT_PAYLOAD_VERSION_TAG})\n -h Show help\n`)\n}\n\nfunction formatTemplates(templates: ProjectTemplate[]) {\n return `\\n\\n${spacer}${templates\n .map((t) => `${t.name}${' '.repeat(28 - t.name.length)}${t.description}`)\n .join(`\\n${spacer}`)}`\n}\n\nexport function successMessage(projectDir: string, packageManager: PackageManager): string {\n const relativePath = path.relative(process.cwd(), projectDir)\n return `\n${header('Launch Application:')}\n\n - cd ./${relativePath}\n - ${packageManager === 'npm' ? 'npm run' : packageManager} dev or follow directions in README.md\n\n${header('Documentation:')}\n\n - ${createTerminalLink(\n 'Getting Started',\n 'https://payloadcms.com/docs/getting-started/what-is-payload',\n )}\n - ${createTerminalLink('Configuration', 'https://payloadcms.com/docs/configuration/overview')}\n\n`\n}\n\nexport function successfulNextInit(): string {\n return successfulFrameworkInit()\n}\n\nexport function successfulTanStackInit(): string {\n return successfulFrameworkInit()\n}\n\nfunction successfulFrameworkInit(): string {\n return `- ${createTerminalLink(\n 'Getting Started',\n 'https://payloadcms.com/docs/getting-started/what-is-payload',\n )}\n- ${createTerminalLink('Configuration', 'https://payloadcms.com/docs/configuration/overview')}\n`\n}\n\nexport function moveMessage(args: { nextAppDir: string; projectDir: string }): string {\n const relativeAppDir = path.relative(process.cwd(), args.nextAppDir)\n return `\n${header('Next Steps:')}\n\nPayload does not support a top-level layout.tsx file in the app directory.\n\n${chalk.bold('To continue:')}\n\n- Create a new directory in ./${relativeAppDir} such as ./${relativeAppDir}/${chalk.bold('(app)')}\n- Move all files from ./${relativeAppDir} into that directory\n\nIt is recommended to do this from your IDE if your app has existing file references.\n\nOnce moved, rerun the create-payload-app command again.\n`\n}\n\nexport function feedbackOutro(): string {\n return `${chalk.bgCyan(chalk.black(' Have feedback? '))} Visit us on ${createTerminalLink('GitHub', 'https://github.com/payloadcms/payload')}.`\n}\n\n// Create terminalLink with fallback for unsupported terminals\nfunction createTerminalLink(text: string, url: string) {\n return terminalLink(text, url, {\n fallback: (text, url) => `${text}: ${url}`,\n })\n}\n"],"names":["chalk","path","terminalLink","getValidTemplates","DEFAULT_PAYLOAD_VERSION_TAG","header","message","bold","welcomeMessage","spacer","repeat","helpMessage","validTemplates","console","log","formatTemplates","templates","map","t","name","length","description","join","successMessage","projectDir","packageManager","relativePath","relative","process","cwd","createTerminalLink","successfulNextInit","successfulFrameworkInit","successfulTanStackInit","moveMessage","args","relativeAppDir","nextAppDir","feedbackOutro","bgCyan","black","text","url","fallback"],"mappings":"AAAA,6BAA6B,GAC7B,OAAOA,WAAW,QAAO;AACzB,OAAOC,UAAU,OAAM;AACvB,OAAOC,kBAAkB,gBAAe;AAIxC,SAASC,iBAAiB,QAAQ,sBAAqB;AACvD,SAASC,2BAA2B,QAAQ,6BAA4B;AAExE,MAAMC,SAAS,CAACC,UAA4BN,MAAMO,IAAI,CAACD;AAEvD,OAAO,MAAME,iBAAiBR,KAAK,CAAC;;AAEpC,CAAC,CAAA;AAED,MAAMS,SAAS,IAAIC,MAAM,CAAC;AAE1B,OAAO,SAASC;IACd,MAAMC,iBAAiBT;IACvBU,QAAQC,GAAG,CAACd,KAAK,CAAC;;;;;;;;;;;;;;;;;;;kCAmBc,EAAEe,gBAAgBH,gBAAgB;;;;;;;;6GAQyC,EAAER,4BAA4B;;AAE3I,CAAC;AACD;AAEA,SAASW,gBAAgBC,SAA4B;IACnD,OAAO,CAAC,IAAI,EAAEP,SAASO,UACpBC,GAAG,CAAC,CAACC,IAAM,GAAGA,EAAEC,IAAI,GAAG,IAAIT,MAAM,CAAC,KAAKQ,EAAEC,IAAI,CAACC,MAAM,IAAIF,EAAEG,WAAW,EAAE,EACvEC,IAAI,CAAC,CAAC,EAAE,EAAEb,QAAQ,GAAG;AAC1B;AAEA,OAAO,SAASc,eAAeC,UAAkB,EAAEC,cAA8B;IAC/E,MAAMC,eAAezB,KAAK0B,QAAQ,CAACC,QAAQC,GAAG,IAAIL;IAClD,OAAO,CAAC;AACV,EAAEnB,OAAO,uBAAuB;;SAEvB,EAAEqB,aAAa;IACpB,EAAED,mBAAmB,QAAQ,YAAYA,eAAe;;AAE5D,EAAEpB,OAAO,kBAAkB;;IAEvB,EAAEyB,mBACF,mBACA,+DACA;IACA,EAAEA,mBAAmB,iBAAiB,sDAAsD;;AAEhG,CAAC;AACD;AAEA,OAAO,SAASC;IACd,OAAOC;AACT;AAEA,OAAO,SAASC;IACd,OAAOD;AACT;AAEA,SAASA;IACP,OAAO,CAAC,EAAE,EAAEF,mBACV,mBACA,+DACA;EACF,EAAEA,mBAAmB,iBAAiB,sDAAsD;AAC9F,CAAC;AACD;AAEA,OAAO,SAASI,YAAYC,IAAgD;IAC1E,MAAMC,iBAAiBnC,KAAK0B,QAAQ,CAACC,QAAQC,GAAG,IAAIM,KAAKE,UAAU;IACnE,OAAO,CAAC;AACV,EAAEhC,OAAO,eAAe;;;;AAIxB,EAAEL,MAAMO,IAAI,CAAC,gBAAgB;;8BAEC,EAAE6B,eAAe,WAAW,EAAEA,eAAe,CAAC,EAAEpC,MAAMO,IAAI,CAAC,SAAS;wBAC1E,EAAE6B,eAAe;;;;;AAKzC,CAAC;AACD;AAEA,OAAO,SAASE;IACd,OAAO,GAAGtC,MAAMuC,MAAM,CAACvC,MAAMwC,KAAK,CAAC,qBAAqB,aAAa,EAAEV,mBAAmB,UAAU,yCAAyC,CAAC,CAAC;AACjJ;AAEA,8DAA8D;AAC9D,SAASA,mBAAmBW,IAAY,EAAEC,GAAW;IACnD,OAAOxC,aAAauC,MAAMC,KAAK;QAC7BC,UAAU,CAACF,MAAMC,MAAQ,GAAGD,KAAK,EAAE,EAAEC,KAAK;IAC5C;AACF"}
@@ -1,10 +1,16 @@
1
1
  /**
2
2
  * Default npm dist-tag used by the create-payload-app CLI when no
3
- * `--payload-version` is provided. The CLI scaffolds against canary by default.
3
+ * `--payload-version` is provided.
4
4
  */
5
- export declare const DEFAULT_PAYLOAD_VERSION_TAG = "canary";
5
+ export declare const DEFAULT_PAYLOAD_VERSION_TAG: string;
6
6
  /**
7
- * Resolves a package version from either an npm dist-tag (e.g. `canary`) or an
7
+ * Every package in the monorepo (this one included) is versioned and published in
8
+ * lockstep, so the CLI's own prerelease id is the dist-tag it was installed under
9
+ * (`create-payload-app@beta` -> `beta`). Stable builds resolve to `latest`.
10
+ */
11
+ export declare function resolveDefaultPayloadTag(version?: string | undefined): string;
12
+ /**
13
+ * Resolves a package version from either an npm dist-tag (e.g. `beta`) or an
8
14
  * explicit version number (e.g. `3.40.0`).
9
15
  *
10
16
  * A value matching a published dist-tag resolves to that tag's concrete version.
@@ -20,7 +26,7 @@ export declare function resolvePackageVersion({ debug, packageName, versionOrTag
20
26
  */
21
27
  packageName?: string;
22
28
  /**
23
- * An npm dist-tag (e.g. `latest`, `canary`) or an explicit version (e.g. `3.40.0`).
29
+ * An npm dist-tag (e.g. `latest`, `beta`) or an explicit version (e.g. `3.40.0`).
24
30
  *
25
31
  * @default 'latest'
26
32
  */
@@ -1 +1 @@
1
- {"version":3,"file":"resolvePackageVersion.d.ts","sourceRoot":"","sources":["../../src/utils/resolvePackageVersion.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,eAAO,MAAM,2BAA2B,WAAW,CAAA;AAEnD;;;;;;;GAOG;AACH,wBAAsB,qBAAqB,CAAC,EAC1C,KAAa,EACb,WAAuB,EACvB,YAAuB,GACxB,EAAE;IACD,KAAK,CAAC,EAAE,OAAO,CAAA;IACf;;;;OAIG;IACH,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB;;;;OAIG;IACH,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB,GAAG,OAAO,CAAC,MAAM,CAAC,CAiBlB"}
1
+ {"version":3,"file":"resolvePackageVersion.d.ts","sourceRoot":"","sources":["../../src/utils/resolvePackageVersion.ts"],"names":[],"mappings":"AAUA;;;GAGG;AACH,eAAO,MAAM,2BAA2B,QAA6B,CAAA;AAErE;;;;GAIG;AACH,wBAAgB,wBAAwB,CAAC,OAAO,GAAE,MAAM,GAAG,SAA4B,GAAG,MAAM,CAE/F;AAED;;;;;;;GAOG;AACH,wBAAsB,qBAAqB,CAAC,EAC1C,KAAa,EACb,WAAuB,EACvB,YAAuB,GACxB,EAAE;IACD,KAAK,CAAC,EAAE,OAAO,CAAA;IACf;;;;OAIG;IACH,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB;;;;OAIG;IACH,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB,GAAG,OAAO,CAAC,MAAM,CAAC,CAiBlB"}
@@ -1,9 +1,21 @@
1
+ import { readFileSync } from 'node:fs';
2
+ import { dirname, resolve } from 'node:path';
3
+ import { fileURLToPath } from 'node:url';
4
+ /** Dist-tag used when the CLI's own version carries no prerelease id. */ const STABLE_TAG = 'latest';
5
+ /** Captures the prerelease id, e.g. `beta` from `4.0.0-beta.3`. */ const PRERELEASE_ID_PATTERN = /^\d+\.\d+\.\d+-([\da-z-]+)/i;
1
6
  /**
2
7
  * Default npm dist-tag used by the create-payload-app CLI when no
3
- * `--payload-version` is provided. The CLI scaffolds against canary by default.
4
- */ export const DEFAULT_PAYLOAD_VERSION_TAG = 'canary';
8
+ * `--payload-version` is provided.
9
+ */ export const DEFAULT_PAYLOAD_VERSION_TAG = resolveDefaultPayloadTag();
5
10
  /**
6
- * Resolves a package version from either an npm dist-tag (e.g. `canary`) or an
11
+ * Every package in the monorepo (this one included) is versioned and published in
12
+ * lockstep, so the CLI's own prerelease id is the dist-tag it was installed under
13
+ * (`create-payload-app@beta` -> `beta`). Stable builds resolve to `latest`.
14
+ */ export function resolveDefaultPayloadTag(version = readOwnVersion()) {
15
+ return version?.match(PRERELEASE_ID_PATTERN)?.[1] ?? STABLE_TAG;
16
+ }
17
+ /**
18
+ * Resolves a package version from either an npm dist-tag (e.g. `beta`) or an
7
19
  * explicit version number (e.g. `3.40.0`).
8
20
  *
9
21
  * A value matching a published dist-tag resolves to that tag's concrete version.
@@ -37,5 +49,14 @@ async function verifyVersionExists({ packageName, version }) {
37
49
  throw new Error(`No version or tag "${version}" found for package: ${packageName}`);
38
50
  }
39
51
  }
52
+ function readOwnVersion() {
53
+ try {
54
+ const pkgPath = resolve(dirname(fileURLToPath(import.meta.url)), '..', '..', 'package.json');
55
+ const { version } = JSON.parse(readFileSync(pkgPath, 'utf8'));
56
+ return typeof version === 'string' ? version : undefined;
57
+ } catch {
58
+ return undefined;
59
+ }
60
+ }
40
61
 
41
62
  //# sourceMappingURL=resolvePackageVersion.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/utils/resolvePackageVersion.ts"],"sourcesContent":["/**\n * Default npm dist-tag used by the create-payload-app CLI when no\n * `--payload-version` is provided. The CLI scaffolds against canary by default.\n */\nexport const DEFAULT_PAYLOAD_VERSION_TAG = 'canary'\n\n/**\n * Resolves a package version from either an npm dist-tag (e.g. `canary`) or an\n * explicit version number (e.g. `3.40.0`).\n *\n * A value matching a published dist-tag resolves to that tag's concrete version.\n * Any other value is treated as an explicit version and verified to exist on the\n * registry. Throws if neither a matching tag nor a published version is found.\n */\nexport async function resolvePackageVersion({\n debug = false,\n packageName = 'payload',\n versionOrTag = 'latest',\n}: {\n debug?: boolean\n /**\n * Package name to resolve against the npm registry.\n *\n * @default 'payload'\n */\n packageName?: string\n /**\n * An npm dist-tag (e.g. `latest`, `canary`) or an explicit version (e.g. `3.40.0`).\n *\n * @default 'latest'\n */\n versionOrTag?: string\n}): Promise<string> {\n const distTags = await fetchDistTags(packageName)\n\n const taggedVersion = distTags[versionOrTag]\n if (taggedVersion) {\n if (debug) {\n console.log(`Resolved ${packageName}@${versionOrTag} to ${taggedVersion}`)\n }\n return taggedVersion\n }\n\n await verifyVersionExists({ packageName, version: versionOrTag })\n\n if (debug) {\n console.log(`Using ${packageName}@${versionOrTag}`)\n }\n return versionOrTag\n}\n\nasync function fetchDistTags(packageName: string): Promise<Record<string, string>> {\n const response = await fetch(`https://registry.npmjs.org/-/package/${packageName}/dist-tags`)\n return (await response.json()) as Record<string, string>\n}\n\nasync function verifyVersionExists({\n packageName,\n version,\n}: {\n packageName: string\n version: string\n}): Promise<void> {\n const response = await fetch(`https://registry.npmjs.org/${packageName}/${version}`)\n if (response.status !== 200) {\n throw new Error(`No version or tag \"${version}\" found for package: ${packageName}`)\n }\n}\n"],"names":["DEFAULT_PAYLOAD_VERSION_TAG","resolvePackageVersion","debug","packageName","versionOrTag","distTags","fetchDistTags","taggedVersion","console","log","verifyVersionExists","version","response","fetch","json","status","Error"],"mappings":"AAAA;;;CAGC,GACD,OAAO,MAAMA,8BAA8B,SAAQ;AAEnD;;;;;;;CAOC,GACD,OAAO,eAAeC,sBAAsB,EAC1CC,QAAQ,KAAK,EACbC,cAAc,SAAS,EACvBC,eAAe,QAAQ,EAexB;IACC,MAAMC,WAAW,MAAMC,cAAcH;IAErC,MAAMI,gBAAgBF,QAAQ,CAACD,aAAa;IAC5C,IAAIG,eAAe;QACjB,IAAIL,OAAO;YACTM,QAAQC,GAAG,CAAC,CAAC,SAAS,EAAEN,YAAY,CAAC,EAAEC,aAAa,IAAI,EAAEG,eAAe;QAC3E;QACA,OAAOA;IACT;IAEA,MAAMG,oBAAoB;QAAEP;QAAaQ,SAASP;IAAa;IAE/D,IAAIF,OAAO;QACTM,QAAQC,GAAG,CAAC,CAAC,MAAM,EAAEN,YAAY,CAAC,EAAEC,cAAc;IACpD;IACA,OAAOA;AACT;AAEA,eAAeE,cAAcH,WAAmB;IAC9C,MAAMS,WAAW,MAAMC,MAAM,CAAC,qCAAqC,EAAEV,YAAY,UAAU,CAAC;IAC5F,OAAQ,MAAMS,SAASE,IAAI;AAC7B;AAEA,eAAeJ,oBAAoB,EACjCP,WAAW,EACXQ,OAAO,EAIR;IACC,MAAMC,WAAW,MAAMC,MAAM,CAAC,2BAA2B,EAAEV,YAAY,CAAC,EAAEQ,SAAS;IACnF,IAAIC,SAASG,MAAM,KAAK,KAAK;QAC3B,MAAM,IAAIC,MAAM,CAAC,mBAAmB,EAAEL,QAAQ,qBAAqB,EAAER,aAAa;IACpF;AACF"}
1
+ {"version":3,"sources":["../../src/utils/resolvePackageVersion.ts"],"sourcesContent":["import { readFileSync } from 'node:fs'\nimport { dirname, resolve } from 'node:path'\nimport { fileURLToPath } from 'node:url'\n\n/** Dist-tag used when the CLI's own version carries no prerelease id. */\nconst STABLE_TAG = 'latest'\n\n/** Captures the prerelease id, e.g. `beta` from `4.0.0-beta.3`. */\nconst PRERELEASE_ID_PATTERN = /^\\d+\\.\\d+\\.\\d+-([\\da-z-]+)/i\n\n/**\n * Default npm dist-tag used by the create-payload-app CLI when no\n * `--payload-version` is provided.\n */\nexport const DEFAULT_PAYLOAD_VERSION_TAG = resolveDefaultPayloadTag()\n\n/**\n * Every package in the monorepo (this one included) is versioned and published in\n * lockstep, so the CLI's own prerelease id is the dist-tag it was installed under\n * (`create-payload-app@beta` -> `beta`). Stable builds resolve to `latest`.\n */\nexport function resolveDefaultPayloadTag(version: string | undefined = readOwnVersion()): string {\n return version?.match(PRERELEASE_ID_PATTERN)?.[1] ?? STABLE_TAG\n}\n\n/**\n * Resolves a package version from either an npm dist-tag (e.g. `beta`) or an\n * explicit version number (e.g. `3.40.0`).\n *\n * A value matching a published dist-tag resolves to that tag's concrete version.\n * Any other value is treated as an explicit version and verified to exist on the\n * registry. Throws if neither a matching tag nor a published version is found.\n */\nexport async function resolvePackageVersion({\n debug = false,\n packageName = 'payload',\n versionOrTag = 'latest',\n}: {\n debug?: boolean\n /**\n * Package name to resolve against the npm registry.\n *\n * @default 'payload'\n */\n packageName?: string\n /**\n * An npm dist-tag (e.g. `latest`, `beta`) or an explicit version (e.g. `3.40.0`).\n *\n * @default 'latest'\n */\n versionOrTag?: string\n}): Promise<string> {\n const distTags = await fetchDistTags(packageName)\n\n const taggedVersion = distTags[versionOrTag]\n if (taggedVersion) {\n if (debug) {\n console.log(`Resolved ${packageName}@${versionOrTag} to ${taggedVersion}`)\n }\n return taggedVersion\n }\n\n await verifyVersionExists({ packageName, version: versionOrTag })\n\n if (debug) {\n console.log(`Using ${packageName}@${versionOrTag}`)\n }\n return versionOrTag\n}\n\nasync function fetchDistTags(packageName: string): Promise<Record<string, string>> {\n const response = await fetch(`https://registry.npmjs.org/-/package/${packageName}/dist-tags`)\n return (await response.json()) as Record<string, string>\n}\n\nasync function verifyVersionExists({\n packageName,\n version,\n}: {\n packageName: string\n version: string\n}): Promise<void> {\n const response = await fetch(`https://registry.npmjs.org/${packageName}/${version}`)\n if (response.status !== 200) {\n throw new Error(`No version or tag \"${version}\" found for package: ${packageName}`)\n }\n}\n\nfunction readOwnVersion(): string | undefined {\n try {\n const pkgPath = resolve(dirname(fileURLToPath(import.meta.url)), '..', '..', 'package.json')\n const { version } = JSON.parse(readFileSync(pkgPath, 'utf8')) as { version?: unknown }\n return typeof version === 'string' ? version : undefined\n } catch {\n return undefined\n }\n}\n"],"names":["readFileSync","dirname","resolve","fileURLToPath","STABLE_TAG","PRERELEASE_ID_PATTERN","DEFAULT_PAYLOAD_VERSION_TAG","resolveDefaultPayloadTag","version","readOwnVersion","match","resolvePackageVersion","debug","packageName","versionOrTag","distTags","fetchDistTags","taggedVersion","console","log","verifyVersionExists","response","fetch","json","status","Error","pkgPath","url","JSON","parse","undefined"],"mappings":"AAAA,SAASA,YAAY,QAAQ,UAAS;AACtC,SAASC,OAAO,EAAEC,OAAO,QAAQ,YAAW;AAC5C,SAASC,aAAa,QAAQ,WAAU;AAExC,uEAAuE,GACvE,MAAMC,aAAa;AAEnB,iEAAiE,GACjE,MAAMC,wBAAwB;AAE9B;;;CAGC,GACD,OAAO,MAAMC,8BAA8BC,2BAA0B;AAErE;;;;CAIC,GACD,OAAO,SAASA,yBAAyBC,UAA8BC,gBAAgB;IACrF,OAAOD,SAASE,MAAML,wBAAwB,CAAC,EAAE,IAAID;AACvD;AAEA;;;;;;;CAOC,GACD,OAAO,eAAeO,sBAAsB,EAC1CC,QAAQ,KAAK,EACbC,cAAc,SAAS,EACvBC,eAAe,QAAQ,EAexB;IACC,MAAMC,WAAW,MAAMC,cAAcH;IAErC,MAAMI,gBAAgBF,QAAQ,CAACD,aAAa;IAC5C,IAAIG,eAAe;QACjB,IAAIL,OAAO;YACTM,QAAQC,GAAG,CAAC,CAAC,SAAS,EAAEN,YAAY,CAAC,EAAEC,aAAa,IAAI,EAAEG,eAAe;QAC3E;QACA,OAAOA;IACT;IAEA,MAAMG,oBAAoB;QAAEP;QAAaL,SAASM;IAAa;IAE/D,IAAIF,OAAO;QACTM,QAAQC,GAAG,CAAC,CAAC,MAAM,EAAEN,YAAY,CAAC,EAAEC,cAAc;IACpD;IACA,OAAOA;AACT;AAEA,eAAeE,cAAcH,WAAmB;IAC9C,MAAMQ,WAAW,MAAMC,MAAM,CAAC,qCAAqC,EAAET,YAAY,UAAU,CAAC;IAC5F,OAAQ,MAAMQ,SAASE,IAAI;AAC7B;AAEA,eAAeH,oBAAoB,EACjCP,WAAW,EACXL,OAAO,EAIR;IACC,MAAMa,WAAW,MAAMC,MAAM,CAAC,2BAA2B,EAAET,YAAY,CAAC,EAAEL,SAAS;IACnF,IAAIa,SAASG,MAAM,KAAK,KAAK;QAC3B,MAAM,IAAIC,MAAM,CAAC,mBAAmB,EAAEjB,QAAQ,qBAAqB,EAAEK,aAAa;IACpF;AACF;AAEA,SAASJ;IACP,IAAI;QACF,MAAMiB,UAAUxB,QAAQD,QAAQE,cAAc,YAAYwB,GAAG,IAAI,MAAM,MAAM;QAC7E,MAAM,EAAEnB,OAAO,EAAE,GAAGoB,KAAKC,KAAK,CAAC7B,aAAa0B,SAAS;QACrD,OAAO,OAAOlB,YAAY,WAAWA,UAAUsB;IACjD,EAAE,OAAM;QACN,OAAOA;IACT;AACF"}