create-payload-app 4.0.0-internal.cd69eef → 4.0.0-internal.ce66a41
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +5 -0
- package/dist/commands.d.ts +4 -0
- package/dist/commands.d.ts.map +1 -0
- package/dist/commands.js +5 -0
- package/dist/commands.js.map +1 -0
- package/dist/lib/agent-config.d.ts +12 -0
- package/dist/lib/agent-config.d.ts.map +1 -0
- package/dist/lib/agent-config.js +15 -0
- package/dist/lib/agent-config.js.map +1 -0
- package/dist/lib/ast/adapter-config.d.ts.map +1 -1
- package/dist/lib/ast/adapter-config.js +0 -10
- package/dist/lib/ast/adapter-config.js.map +1 -1
- package/dist/lib/ast/package-json.d.ts +9 -0
- package/dist/lib/ast/package-json.d.ts.map +1 -1
- package/dist/lib/ast/package-json.js +34 -8
- package/dist/lib/ast/package-json.js.map +1 -1
- package/dist/lib/ast/types.d.ts +1 -1
- package/dist/lib/ast/types.d.ts.map +1 -1
- package/dist/lib/ast/types.js +0 -1
- package/dist/lib/ast/types.js.map +1 -1
- package/dist/lib/configure-payload-tsconfig.d.ts +5 -0
- package/dist/lib/configure-payload-tsconfig.d.ts.map +1 -0
- package/dist/lib/configure-payload-tsconfig.js +26 -0
- package/dist/lib/configure-payload-tsconfig.js.map +1 -0
- package/dist/lib/create-project.d.ts +1 -2
- package/dist/lib/create-project.d.ts.map +1 -1
- package/dist/lib/create-project.js +56 -29
- package/dist/lib/create-project.js.map +1 -1
- package/dist/lib/generate-secret.js +1 -1
- package/dist/lib/generate-secret.js.map +1 -1
- package/dist/lib/get-package-manager.d.ts +9 -0
- package/dist/lib/get-package-manager.d.ts.map +1 -1
- package/dist/lib/get-package-manager.js +20 -0
- package/dist/lib/get-package-manager.js.map +1 -1
- package/dist/lib/init-next.d.ts.map +1 -1
- package/dist/lib/init-next.js +5 -34
- package/dist/lib/init-next.js.map +1 -1
- package/dist/lib/init-tanstack.d.ts +18 -0
- package/dist/lib/init-tanstack.d.ts.map +1 -0
- package/dist/lib/init-tanstack.js +149 -0
- package/dist/lib/init-tanstack.js.map +1 -0
- package/dist/lib/tanstack/detect.d.ts +5 -0
- package/dist/lib/tanstack/detect.d.ts.map +1 -0
- package/dist/lib/tanstack/detect.js +131 -0
- package/dist/lib/tanstack/detect.js.map +1 -0
- package/dist/lib/tanstack/prepare.d.ts +23 -0
- package/dist/lib/tanstack/prepare.d.ts.map +1 -0
- package/dist/lib/tanstack/prepare.js +114 -0
- package/dist/lib/tanstack/prepare.js.map +1 -0
- package/dist/lib/tanstack/template-files.d.ts +50 -0
- package/dist/lib/tanstack/template-files.d.ts.map +1 -0
- package/dist/lib/tanstack/template-files.js +64 -0
- package/dist/lib/tanstack/template-files.js.map +1 -0
- package/dist/lib/tanstack/transform-root-route.d.ts +7 -0
- package/dist/lib/tanstack/transform-root-route.d.ts.map +1 -0
- package/dist/lib/tanstack/transform-root-route.js +747 -0
- package/dist/lib/tanstack/transform-root-route.js.map +1 -0
- package/dist/lib/tanstack/transform-router.d.ts +5 -0
- package/dist/lib/tanstack/transform-router.d.ts.map +1 -0
- package/dist/lib/tanstack/transform-router.js +301 -0
- package/dist/lib/tanstack/transform-router.js.map +1 -0
- package/dist/lib/tanstack/transform-vite-config.d.ts +14 -0
- package/dist/lib/tanstack/transform-vite-config.d.ts.map +1 -0
- package/dist/lib/tanstack/transform-vite-config.js +576 -0
- package/dist/lib/tanstack/transform-vite-config.js.map +1 -0
- package/dist/lib/templates.d.ts.map +1 -1
- package/dist/lib/templates.js +6 -0
- package/dist/lib/templates.js.map +1 -1
- package/dist/lib/update-payload-in-project.d.ts +18 -3
- package/dist/lib/update-payload-in-project.d.ts.map +1 -1
- package/dist/lib/update-payload-in-project.js +98 -18
- package/dist/lib/update-payload-in-project.js.map +1 -1
- package/dist/main.d.ts +20 -1
- package/dist/main.d.ts.map +1 -1
- package/dist/main.js +120 -30
- package/dist/main.js.map +1 -1
- package/dist/scripts/pack-template-files.js +18 -0
- package/dist/scripts/pack-template-files.js.map +1 -1
- package/dist/template/src/app/(frontend)/styles.css +8 -1
- package/dist/template/src/app/(payload)/admin/[[...segments]]/not-found.tsx +1 -2
- package/dist/template/src/app/(payload)/admin/[[...segments]]/page.tsx +1 -2
- package/dist/template/src/app/(payload)/admin/importMap.js +15 -0
- package/dist/template/src/app/(payload)/api/[...slug]/route.ts +1 -2
- package/dist/template/src/app/(payload)/api/graphql/route.ts +1 -2
- package/dist/template/src/app/(payload)/api/graphql-playground/route.ts +1 -2
- package/dist/template/src/app/(payload)/layout.tsx +2 -3
- package/dist/template/src/payload.config.ts +4 -2
- package/dist/template-tanstack/routes/_payload/admin.$.tsx +9 -0
- package/dist/template-tanstack/routes/_payload/admin.index.tsx +9 -0
- package/dist/template-tanstack/routes/_payload/api.$.ts +11 -0
- package/dist/template-tanstack/routes/_payload/importMap.js +32 -0
- package/dist/template-tanstack/routes/_payload/server.functions.ts +50 -0
- package/dist/template-tanstack/routes/_payload.tsx +31 -0
- package/dist/template-tanstack/src/collections/Folders.ts +16 -0
- package/dist/template-tanstack/src/collections/Media.ts +20 -0
- package/dist/template-tanstack/src/collections/Tags.ts +16 -0
- package/dist/template-tanstack/src/collections/Users.ts +14 -0
- package/dist/template-tanstack/src/payload.config.ts +38 -0
- package/dist/template-tanstack/src/payload.css +1 -0
- package/dist/types.d.ts +22 -3
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/dist/utils/messages.d.ts +1 -0
- package/dist/utils/messages.d.ts.map +1 -1
- package/dist/utils/messages.js +8 -6
- package/dist/utils/messages.js.map +1 -1
- package/package.json +6 -6
- package/dist/ast-integration.spec.js +0 -132
- package/dist/ast-integration.spec.js.map +0 -1
- package/dist/lib/ast/package-json.spec.js +0 -67
- package/dist/lib/ast/package-json.spec.js.map +0 -1
- package/dist/lib/ast/payload-config.spec.js +0 -365
- package/dist/lib/ast/payload-config.spec.js.map +0 -1
- package/dist/lib/ast/utils.spec.js +0 -226
- package/dist/lib/ast/utils.spec.js.map +0 -1
- package/dist/lib/create-project.spec.js +0 -190
- package/dist/lib/create-project.spec.js.map +0 -1
- package/dist/lib/download-skill.d.ts +0 -8
- package/dist/lib/download-skill.d.ts.map +0 -1
- package/dist/lib/download-skill.js +0 -35
- package/dist/lib/download-skill.js.map +0 -1
- package/dist/lib/manage-env-files.spec.js +0 -118
- package/dist/lib/manage-env-files.spec.js.map +0 -1
- package/dist/lib/select-agent.d.ts +0 -16
- package/dist/lib/select-agent.d.ts.map +0 -1
- package/dist/lib/select-agent.js +0 -67
- package/dist/lib/select-agent.js.map +0 -1
- package/dist/lib/wrap-next-config.spec.js +0 -167
- package/dist/lib/wrap-next-config.spec.js.map +0 -1
- package/dist/utils/resolvePackageVersion.spec.js +0 -77
- package/dist/utils/resolvePackageVersion.spec.js.map +0 -1
- /package/dist/template/src/app/(payload)/{custom.scss → custom.css} +0 -0
|
@@ -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;AAIlD,wBAAgB,gBAAgB,CAAC,EAAE,YAAY,EAAE,EAAE;IAAE,YAAY,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAQpF;AAED,wBAAgB,iBAAiB,IAAI,eAAe,EAAE,
|
|
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,CAyCrD"}
|
package/dist/lib/templates.js
CHANGED
|
@@ -17,6 +17,12 @@ export function getValidTemplates() {
|
|
|
17
17
|
description: 'Blank 3.0 Template',
|
|
18
18
|
url: `https://github.com/payloadcms/payload/templates/blank#main`
|
|
19
19
|
},
|
|
20
|
+
{
|
|
21
|
+
name: 'blank-tanstack',
|
|
22
|
+
type: 'starter',
|
|
23
|
+
description: 'Blank TanStack Start Template',
|
|
24
|
+
url: 'https://github.com/payloadcms/payload/templates/blank-tanstack#main'
|
|
25
|
+
},
|
|
20
26
|
{
|
|
21
27
|
name: 'website',
|
|
22
28
|
type: 'starter',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/lib/templates.ts"],"sourcesContent":["import type { ProjectTemplate } from '../types.js'\n\nimport { error, info } from '../utils/log.js'\n\nexport function validateTemplate({ templateName }: { 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: 'ecommerce',\n type: 'starter',\n description: 'Ecommerce template',\n url: 'https://github.com/payloadcms/payload/templates/ecommerce#main',\n },\n {\n name: 'with-cloudflare-d1',\n type: 'starter',\n dbType: 'd1-sqlite',\n description: 'Blank template with Cloudflare D1 and Workers integration',\n url: 'https://github.com/payloadcms/payload/templates/with-cloudflare-d1#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","dbType"],"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;QACA;YACEL,MAAM;YACNG,MAAM;YACNG,QAAQ;YACRF,aAAa;YACbC,KAAK;QACP;QACA;YACEL,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: 'blank-tanstack',\n type: 'starter',\n description: 'Blank TanStack Start Template',\n url: 'https://github.com/payloadcms/payload/templates/blank-tanstack#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: 'ecommerce',\n type: 'starter',\n description: 'Ecommerce template',\n url: 'https://github.com/payloadcms/payload/templates/ecommerce#main',\n },\n {\n name: 'with-cloudflare-d1',\n type: 'starter',\n dbType: 'd1-sqlite',\n description: 'Blank template with Cloudflare D1 and Workers integration',\n url: 'https://github.com/payloadcms/payload/templates/with-cloudflare-d1#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","dbType"],"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;QACP;QACA;YACEL,MAAM;YACNG,MAAM;YACNC,aAAa;YACbC,KAAK,CAAC,4DAA4D,CAAC;QACrE;QACA;YACEL,MAAM;YACNG,MAAM;YACNC,aAAa;YACbC,KAAK;QACP;QACA;YACEL,MAAM;YACNG,MAAM;YACNG,QAAQ;YACRF,aAAa;YACbC,KAAK;QACP;QACA;YACEL,MAAM;YACNG,MAAM;YACNC,aAAa;YACbC,KAAK;QACP;KACD;AACH"}
|
|
@@ -1,6 +1,21 @@
|
|
|
1
|
-
import type { NextAppDetails } from '../types.js';
|
|
2
|
-
|
|
1
|
+
import type { NextAppDetails, TanStackAppDetails } from '../types.js';
|
|
2
|
+
type UpdateResult = {
|
|
3
3
|
message: string;
|
|
4
4
|
success: boolean;
|
|
5
|
-
}
|
|
5
|
+
};
|
|
6
|
+
export declare function updatePayloadPackages({ projectDir, versionOrTag, }: {
|
|
7
|
+
projectDir: string;
|
|
8
|
+
versionOrTag?: string;
|
|
9
|
+
}): Promise<UpdateResult>;
|
|
10
|
+
export declare function updatePayloadInNextProject({ appDetails, versionOrTag, }: {
|
|
11
|
+
appDetails: NextAppDetails;
|
|
12
|
+
versionOrTag?: string;
|
|
13
|
+
}): Promise<UpdateResult>;
|
|
14
|
+
export declare function updatePayloadInTanStackProject({ appDetails, templateRoot, versionOrTag, }: {
|
|
15
|
+
appDetails: TanStackAppDetails;
|
|
16
|
+
templateRoot?: string;
|
|
17
|
+
versionOrTag?: string;
|
|
18
|
+
}): Promise<UpdateResult>;
|
|
19
|
+
export declare function updatePayloadInProject(appDetails: NextAppDetails, versionOrTag?: string): Promise<UpdateResult>;
|
|
20
|
+
export {};
|
|
6
21
|
//# sourceMappingURL=update-payload-in-project.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"update-payload-in-project.d.ts","sourceRoot":"","sources":["../../src/lib/update-payload-in-project.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"update-payload-in-project.d.ts","sourceRoot":"","sources":["../../src/lib/update-payload-in-project.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAA;AAYrE,KAAK,YAAY,GAAG;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,CAAA;AAIzD,wBAAsB,qBAAqB,CAAC,EAC1C,UAAU,EACV,YAAY,GACb,EAAE;IACD,UAAU,EAAE,MAAM,CAAA;IAClB,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB,GAAG,OAAO,CAAC,YAAY,CAAC,CAIxB;AAED,wBAAsB,0BAA0B,CAAC,EAC/C,UAAU,EACV,YAAY,GACb,EAAE;IACD,UAAU,EAAE,cAAc,CAAA;IAC1B,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB,GAAG,OAAO,CAAC,YAAY,CAAC,CAuCxB;AAED,wBAAsB,8BAA8B,CAAC,EACnD,UAAU,EACV,YAA4C,EAC5C,YAAY,GACb,EAAE;IACD,UAAU,EAAE,kBAAkB,CAAA;IAC9B,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB,GAAG,OAAO,CAAC,YAAY,CAAC,CAqCxB;AAED,wBAAsB,sBAAsB,CAC1C,UAAU,EAAE,cAAc,EAC1B,YAAY,CAAC,EAAE,MAAM,GACpB,OAAO,CAAC,YAAY,CAAC,CAEvB"}
|
|
@@ -1,14 +1,25 @@
|
|
|
1
1
|
import fse from 'fs-extra';
|
|
2
2
|
import { fileURLToPath } from 'node:url';
|
|
3
3
|
import path from 'path';
|
|
4
|
-
const filename = fileURLToPath(import.meta.url);
|
|
5
|
-
const dirname = path.dirname(filename);
|
|
6
4
|
import { copyRecursiveSync } from '../utils/copy-recursive-sync.js';
|
|
7
5
|
import { info } from '../utils/log.js';
|
|
8
6
|
import { resolvePackageVersion } from '../utils/resolvePackageVersion.js';
|
|
9
7
|
import { getPackageManager } from './get-package-manager.js';
|
|
10
8
|
import { installPackages } from './install-packages.js';
|
|
11
|
-
|
|
9
|
+
import { TANSTACK_TEMPLATE_FILES } from './tanstack/template-files.js';
|
|
10
|
+
const filename = fileURLToPath(import.meta.url);
|
|
11
|
+
const dirname = path.dirname(filename);
|
|
12
|
+
export async function updatePayloadPackages({ projectDir, versionOrTag }) {
|
|
13
|
+
const result = await performPayloadPackageUpdate({
|
|
14
|
+
projectDir,
|
|
15
|
+
versionOrTag
|
|
16
|
+
});
|
|
17
|
+
return {
|
|
18
|
+
message: result.message,
|
|
19
|
+
success: result.success
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
export async function updatePayloadInNextProject({ appDetails, versionOrTag }) {
|
|
12
23
|
if (!appDetails.nextConfigPath) {
|
|
13
24
|
return {
|
|
14
25
|
message: 'No Next.js config found',
|
|
@@ -16,37 +27,108 @@ export async function updatePayloadInProject(appDetails, versionOrTag) {
|
|
|
16
27
|
};
|
|
17
28
|
}
|
|
18
29
|
const projectDir = path.dirname(appDetails.nextConfigPath);
|
|
30
|
+
const packageUpdate = await performPayloadPackageUpdate({
|
|
31
|
+
projectDir,
|
|
32
|
+
versionOrTag
|
|
33
|
+
});
|
|
34
|
+
if (!packageUpdate.isUpdated) {
|
|
35
|
+
return {
|
|
36
|
+
message: packageUpdate.message,
|
|
37
|
+
success: packageUpdate.success
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
info(`Updating Payload Next.js files...`);
|
|
41
|
+
const templateFilesPath = process.env.JEST_WORKER_ID !== undefined ? path.resolve(dirname, '../../../../templates/blank') : path.resolve(dirname, '../..', 'dist/template');
|
|
42
|
+
const templateSrcDir = path.resolve(templateFilesPath, 'src/app/(payload)');
|
|
43
|
+
const payloadDirPath = path.resolve(projectDir, appDetails.isSrcDir ? 'src/app' : 'app', '(payload)');
|
|
44
|
+
const legacyCustomStylesPath = path.resolve(payloadDirPath, 'custom.scss');
|
|
45
|
+
const customCssPath = path.resolve(payloadDirPath, 'custom.css');
|
|
46
|
+
if (fse.existsSync(legacyCustomStylesPath) && !fse.existsSync(customCssPath)) {
|
|
47
|
+
fse.renameSync(legacyCustomStylesPath, customCssPath);
|
|
48
|
+
info('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.');
|
|
49
|
+
}
|
|
50
|
+
copyRecursiveSync(templateSrcDir, payloadDirPath, [
|
|
51
|
+
'custom.css$'
|
|
52
|
+
]);
|
|
53
|
+
return {
|
|
54
|
+
message: packageUpdate.message,
|
|
55
|
+
success: packageUpdate.success
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
export async function updatePayloadInTanStackProject({ appDetails, templateRoot = resolveTanStackTemplateRoot(), versionOrTag }) {
|
|
59
|
+
const packageUpdate = await performPayloadPackageUpdate({
|
|
60
|
+
projectDir: appDetails.projectDir,
|
|
61
|
+
versionOrTag
|
|
62
|
+
});
|
|
63
|
+
if (!packageUpdate.isUpdated) {
|
|
64
|
+
return {
|
|
65
|
+
message: packageUpdate.message,
|
|
66
|
+
success: packageUpdate.success
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
info(`Updating Payload TanStack files...`);
|
|
70
|
+
const hasPackedTemplateLayout = fse.existsSync(path.join(templateRoot, 'routes'));
|
|
71
|
+
for (const { destination, relativePath, sourcePath } of TANSTACK_TEMPLATE_FILES){
|
|
72
|
+
const isPayloadRoute = destination === 'routes' && relativePath.startsWith('_payload');
|
|
73
|
+
const isPayloadStyles = destination === 'src' && relativePath === 'payload.css';
|
|
74
|
+
if (!isPayloadRoute && !isPayloadStyles) {
|
|
75
|
+
continue;
|
|
76
|
+
}
|
|
77
|
+
const destinationPath = path.join(destination === 'routes' ? appDetails.routesDir : appDetails.sourceDir, relativePath);
|
|
78
|
+
if (isPayloadStyles && fse.existsSync(destinationPath)) {
|
|
79
|
+
continue;
|
|
80
|
+
}
|
|
81
|
+
const templatePath = hasPackedTemplateLayout ? path.join(templateRoot, destination, relativePath) : path.join(templateRoot, sourcePath);
|
|
82
|
+
fse.ensureDirSync(path.dirname(destinationPath));
|
|
83
|
+
fse.copyFileSync(templatePath, destinationPath);
|
|
84
|
+
}
|
|
85
|
+
return {
|
|
86
|
+
message: packageUpdate.message,
|
|
87
|
+
success: packageUpdate.success
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
export async function updatePayloadInProject(appDetails, versionOrTag) {
|
|
91
|
+
return updatePayloadInNextProject({
|
|
92
|
+
appDetails,
|
|
93
|
+
versionOrTag
|
|
94
|
+
});
|
|
95
|
+
}
|
|
96
|
+
async function performPayloadPackageUpdate({ projectDir, versionOrTag }) {
|
|
19
97
|
const packageObj = await fse.readJson(path.resolve(projectDir, 'package.json'));
|
|
20
|
-
if (!packageObj
|
|
98
|
+
if (!packageObj.dependencies && !packageObj.devDependencies) {
|
|
21
99
|
throw new Error('No package.json found in this project');
|
|
22
100
|
}
|
|
23
|
-
const
|
|
101
|
+
const dependencyGroups = [
|
|
102
|
+
packageObj.dependencies,
|
|
103
|
+
packageObj.devDependencies
|
|
104
|
+
].filter((dependencies)=>Boolean(dependencies));
|
|
105
|
+
const payloadPackageEntries = dependencyGroups.flatMap((dependencies)=>Object.entries(dependencies).filter(([packageName])=>packageName === 'payload' || packageName.startsWith('@payloadcms/')));
|
|
106
|
+
const payloadVersion = payloadPackageEntries.find(([packageName])=>packageName === 'payload')?.[1];
|
|
24
107
|
if (!payloadVersion) {
|
|
25
108
|
throw new Error('Payload is not installed in this project');
|
|
26
109
|
}
|
|
27
110
|
const packageManager = await getPackageManager({
|
|
28
111
|
projectDir
|
|
29
112
|
});
|
|
30
|
-
// Resolve the requested Payload version (dist-tag or explicit version)
|
|
31
113
|
const latestPayloadVersion = await resolvePackageVersion({
|
|
32
114
|
packageName: 'payload',
|
|
33
115
|
versionOrTag
|
|
34
116
|
});
|
|
35
|
-
if (
|
|
117
|
+
if (payloadPackageEntries.every(([, version])=>version === latestPayloadVersion)) {
|
|
36
118
|
return {
|
|
119
|
+
isUpdated: false,
|
|
37
120
|
message: `Payload v${payloadVersion} is already up to date.`,
|
|
38
121
|
success: true
|
|
39
122
|
};
|
|
40
123
|
}
|
|
41
|
-
|
|
42
|
-
const payloadPackages = Object.keys(packageObj.dependencies).filter((dep)=>dep.startsWith('@payloadcms/'));
|
|
124
|
+
const payloadPackages = payloadPackageEntries.map(([packageName])=>packageName).filter((packageName)=>packageName.startsWith('@payloadcms/'));
|
|
43
125
|
const packageNames = [
|
|
44
126
|
'payload',
|
|
45
|
-
...payloadPackages
|
|
127
|
+
...new Set(payloadPackages)
|
|
46
128
|
];
|
|
47
|
-
const packagesToUpdate = packageNames.map((
|
|
129
|
+
const packagesToUpdate = packageNames.map((packageName)=>`${packageName}@${latestPayloadVersion}`);
|
|
48
130
|
info(`Using ${packageManager}.\n`);
|
|
49
|
-
info(`Updating ${packagesToUpdate.length} Payload packages to v${latestPayloadVersion}...\n\n${packageNames.map((
|
|
131
|
+
info(`Updating ${packagesToUpdate.length} Payload packages to v${latestPayloadVersion}...\n\n${packageNames.map((packageName)=>` - ${packageName}`).join('\n')}`);
|
|
50
132
|
const { success: updateSuccess } = await installPackages({
|
|
51
133
|
packageManager,
|
|
52
134
|
packagesToInstall: packagesToUpdate,
|
|
@@ -56,16 +138,14 @@ export async function updatePayloadInProject(appDetails, versionOrTag) {
|
|
|
56
138
|
throw new Error('Failed to update Payload packages');
|
|
57
139
|
}
|
|
58
140
|
info('Payload packages updated successfully.');
|
|
59
|
-
info(`Updating Payload Next.js files...`);
|
|
60
|
-
const templateFilesPath = process.env.JEST_WORKER_ID !== undefined ? path.resolve(dirname, '../../../../templates/blank') : path.resolve(dirname, '../..', 'dist/template');
|
|
61
|
-
const templateSrcDir = path.resolve(templateFilesPath, 'src/app/(payload)');
|
|
62
|
-
copyRecursiveSync(templateSrcDir, path.resolve(projectDir, appDetails.isSrcDir ? 'src/app' : 'app', '(payload)'), [
|
|
63
|
-
'custom.scss$'
|
|
64
|
-
]);
|
|
65
141
|
return {
|
|
142
|
+
isUpdated: true,
|
|
66
143
|
message: 'Payload updated successfully.',
|
|
67
144
|
success: true
|
|
68
145
|
};
|
|
69
146
|
}
|
|
147
|
+
function resolveTanStackTemplateRoot() {
|
|
148
|
+
return path.basename(path.dirname(dirname)) === 'dist' ? path.resolve(dirname, '../template-tanstack') : path.resolve(dirname, '../../../../templates/blank-tanstack/src');
|
|
149
|
+
}
|
|
70
150
|
|
|
71
151
|
//# sourceMappingURL=update-payload-in-project.js.map
|
|
@@ -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\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 { resolvePackageVersion } from '../utils/resolvePackageVersion.js'\nimport { getPackageManager } from './get-package-manager.js'\nimport { installPackages } from './install-packages.js'\n\nexport async function updatePayloadInProject(\n appDetails: NextAppDetails,\n versionOrTag?: string,\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 // Resolve the requested Payload version (dist-tag or explicit version)\n const latestPayloadVersion = await resolvePackageVersion({ packageName: 'payload', versionOrTag })\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","info","resolvePackageVersion","getPackageManager","installPackages","updatePayloadInProject","appDetails","versionOrTag","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,IAAI,QAAQ,kBAAiB;AACtC,SAASC,qBAAqB,QAAQ,oCAAmC;AACzE,SAASC,iBAAiB,QAAQ,2BAA0B;AAC5D,SAASC,eAAe,QAAQ,wBAAuB;AAEvD,OAAO,eAAeC,uBACpBC,UAA0B,EAC1BC,YAAqB;IAErB,IAAI,CAACD,WAAWE,cAAc,EAAE;QAC9B,OAAO;YAAEC,SAAS;YAA2BC,SAAS;QAAM;IAC9D;IAEA,MAAMC,aAAaf,KAAKG,OAAO,CAACO,WAAWE,cAAc;IAEzD,MAAMI,aAAc,MAAMlB,IAAImB,QAAQ,CAACjB,KAAKkB,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,MAAMhB,kBAAkB;QAAEQ;IAAW;IAE5D,uEAAuE;IACvE,MAAMS,uBAAuB,MAAMlB,sBAAsB;QAAEmB,aAAa;QAAWd;IAAa;IAEhG,IAAIU,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;IAEnFnB,KAAK,CAAC,MAAM,EAAEkB,eAAe,GAAG,CAAC;IACjClB,KACE,CAAC,SAAS,EAAE4B,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,MAAM/B,gBAAgB;QACvDe;QACAiB,mBAAmBP;QACnBlB;IACF;IAEA,IAAI,CAACwB,eAAe;QAClB,MAAM,IAAInB,MAAM;IAClB;IACAf,KAAK;IAELA,KAAK,CAAC,iCAAiC,CAAC;IAExC,MAAMoC,oBACJC,QAAQC,GAAG,CAACC,cAAc,KAAKC,YAC3B7C,KAAKkB,OAAO,CAACf,SAAS,iCACtBH,KAAKkB,OAAO,CAACf,SAAS,SAAS;IAErC,MAAM2C,iBAAiB9C,KAAKkB,OAAO,CAACuB,mBAAmB;IAEvDrC,kBACE0C,gBACA9C,KAAKkB,OAAO,CAACH,YAAYL,WAAWqC,QAAQ,GAAG,YAAY,OAAO,cAClE;QAAC;KAAe;IAGlB,OAAO;QAAElC,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\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":"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"}
|
package/dist/main.d.ts
CHANGED
|
@@ -1,7 +1,26 @@
|
|
|
1
|
-
import type { CliArgs } from './types.js';
|
|
1
|
+
import type { CliArgs, NextAppDetails, TanStackAppDetails, TanStackDetectionResult } from './types.js';
|
|
2
2
|
export declare class Main {
|
|
3
3
|
args: CliArgs;
|
|
4
4
|
constructor();
|
|
5
5
|
init(): Promise<void>;
|
|
6
6
|
}
|
|
7
|
+
type AppFramework = {
|
|
8
|
+
appDetails: NextAppDetails;
|
|
9
|
+
kind: 'next';
|
|
10
|
+
} | {
|
|
11
|
+
appDetails: TanStackAppDetails;
|
|
12
|
+
kind: 'tanstack';
|
|
13
|
+
} | {
|
|
14
|
+
kind: 'ambiguous';
|
|
15
|
+
} | {
|
|
16
|
+
kind: 'none';
|
|
17
|
+
} | {
|
|
18
|
+
kind: 'unsupported-tanstack';
|
|
19
|
+
reason: string;
|
|
20
|
+
};
|
|
21
|
+
export declare function resolveAppFramework({ nextAppDetails, tanStackDetection, }: {
|
|
22
|
+
nextAppDetails: NextAppDetails;
|
|
23
|
+
tanStackDetection: TanStackDetectionResult;
|
|
24
|
+
}): AppFramework;
|
|
25
|
+
export {};
|
|
7
26
|
//# sourceMappingURL=main.d.ts.map
|
package/dist/main.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EACV,OAAO,EACP,cAAc,EACd,kBAAkB,EAClB,uBAAuB,EACxB,MAAM,YAAY,CAAA;AAiCnB,qBAAa,IAAI;IACf,IAAI,EAAE,OAAO,CAAA;IAEb,cA8CC;IAEK,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAwS1B;CACF;AAED,KAAK,YAAY,GACb;IAAE,UAAU,EAAE,cAAc,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAC5C;IAAE,UAAU,EAAE,kBAAkB,CAAC;IAAC,IAAI,EAAE,UAAU,CAAA;CAAE,GACpD;IAAE,IAAI,EAAE,WAAW,CAAA;CAAE,GACrB;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GAChB;IAAE,IAAI,EAAE,sBAAsB,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAA;AAEpD,wBAAgB,mBAAmB,CAAC,EAClC,cAAc,EACd,iBAAiB,GAClB,EAAE;IACD,cAAc,EAAE,cAAc,CAAA;IAC9B,iBAAiB,EAAE,uBAAuB,CAAA;CAC3C,GAAG,YAAY,CAkBf"}
|
package/dist/main.js
CHANGED
|
@@ -10,22 +10,22 @@ 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
12
|
import { getNextAppDetails, initNext } from './lib/init-next.js';
|
|
13
|
+
import { initTanStack } from './lib/init-tanstack.js';
|
|
13
14
|
import { manageEnvFiles } from './lib/manage-env-files.js';
|
|
14
15
|
import { parseProjectName } from './lib/parse-project-name.js';
|
|
15
16
|
import { parseTemplate } from './lib/parse-template.js';
|
|
16
|
-
import { selectAgent } from './lib/select-agent.js';
|
|
17
17
|
import { selectDb } from './lib/select-db.js';
|
|
18
|
+
import { getTanStackAppDetails } from './lib/tanstack/detect.js';
|
|
18
19
|
import { getValidTemplates, validateTemplate } from './lib/templates.js';
|
|
19
|
-
import {
|
|
20
|
+
import { updatePayloadInNextProject, updatePayloadInTanStackProject } from './lib/update-payload-in-project.js';
|
|
20
21
|
import { debug, error, info } from './utils/log.js';
|
|
21
|
-
import { feedbackOutro, helpMessage, moveMessage, successfulNextInit, successMessage } from './utils/messages.js';
|
|
22
|
+
import { feedbackOutro, helpMessage, moveMessage, successfulNextInit, successfulTanStackInit, successMessage } from './utils/messages.js';
|
|
22
23
|
import { DEFAULT_PAYLOAD_VERSION_TAG, resolvePackageVersion } from './utils/resolvePackageVersion.js';
|
|
23
24
|
export class Main {
|
|
24
25
|
args;
|
|
25
26
|
constructor(){
|
|
26
27
|
// @ts-expect-error bad typings
|
|
27
28
|
this.args = arg({
|
|
28
|
-
'--agent': String,
|
|
29
29
|
'--branch': String,
|
|
30
30
|
'--db': String,
|
|
31
31
|
'--db-accept-recommended': Boolean,
|
|
@@ -54,7 +54,6 @@ export class Main {
|
|
|
54
54
|
'--debug': Boolean,
|
|
55
55
|
'--dry-run': Boolean,
|
|
56
56
|
// Aliases
|
|
57
|
-
'-a': '--agent',
|
|
58
57
|
'-d': '--db',
|
|
59
58
|
'-e': '--example',
|
|
60
59
|
'-h': '--help',
|
|
@@ -84,23 +83,46 @@ export class Main {
|
|
|
84
83
|
console.log('\n');
|
|
85
84
|
p.intro(chalk.bgCyan(chalk.black(' create-payload-app ')));
|
|
86
85
|
p.note("Welcome to Payload. Let's create a project!");
|
|
87
|
-
|
|
86
|
+
const tanStackDetection = await getTanStackAppDetails({
|
|
87
|
+
projectDir: process.cwd()
|
|
88
|
+
});
|
|
88
89
|
const nextAppDetails = await getNextAppDetails(process.cwd());
|
|
89
|
-
const
|
|
90
|
-
|
|
91
|
-
|
|
90
|
+
const appFramework = resolveAppFramework({
|
|
91
|
+
nextAppDetails,
|
|
92
|
+
tanStackDetection
|
|
93
|
+
});
|
|
94
|
+
if (appFramework.kind === 'ambiguous') {
|
|
95
|
+
p.log.warn('Both Next.js and TanStack project markers were detected. Remove one framework before installing Payload.');
|
|
96
|
+
p.outro(feedbackOutro());
|
|
97
|
+
return;
|
|
98
|
+
}
|
|
99
|
+
if (appFramework.kind === 'unsupported-tanstack') {
|
|
100
|
+
p.log.warn(appFramework.reason);
|
|
101
|
+
p.outro(feedbackOutro());
|
|
102
|
+
return;
|
|
103
|
+
}
|
|
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.`);
|
|
92
106
|
p.outro(feedbackOutro());
|
|
93
107
|
process.exit(0);
|
|
94
108
|
}
|
|
95
|
-
|
|
96
|
-
if (
|
|
109
|
+
const hasPayload = appFramework.kind !== 'none' && appFramework.appDetails.isPayloadInstalled;
|
|
110
|
+
if (hasPayload) {
|
|
97
111
|
p.log.warn(`Payload installation detected in current project.`);
|
|
98
112
|
const shouldUpdate = await p.confirm({
|
|
99
113
|
initialValue: false,
|
|
100
114
|
message: chalk.bold(`Upgrade Payload in this project?`)
|
|
101
115
|
});
|
|
102
116
|
if (!p.isCancel(shouldUpdate) && shouldUpdate) {
|
|
103
|
-
const
|
|
117
|
+
const versionOrTag = this.args['--payload-version'] ?? DEFAULT_PAYLOAD_VERSION_TAG;
|
|
118
|
+
const updateResult = appFramework.kind === 'next' ? await updatePayloadInNextProject({
|
|
119
|
+
appDetails: appFramework.appDetails,
|
|
120
|
+
versionOrTag
|
|
121
|
+
}) : await updatePayloadInTanStackProject({
|
|
122
|
+
appDetails: appFramework.appDetails,
|
|
123
|
+
versionOrTag
|
|
124
|
+
});
|
|
125
|
+
const { message, success: updateSuccess } = updateResult;
|
|
104
126
|
if (updateSuccess) {
|
|
105
127
|
info(message);
|
|
106
128
|
} else {
|
|
@@ -108,18 +130,28 @@ export class Main {
|
|
|
108
130
|
}
|
|
109
131
|
}
|
|
110
132
|
p.outro(feedbackOutro());
|
|
111
|
-
|
|
133
|
+
return;
|
|
112
134
|
}
|
|
113
|
-
if (
|
|
114
|
-
this.args['--name'] = slugify(path.basename(path.dirname(nextConfigPath)));
|
|
135
|
+
if (appFramework.kind === 'next') {
|
|
136
|
+
this.args['--name'] = slugify(path.basename(path.dirname(appFramework.appDetails.nextConfigPath)));
|
|
137
|
+
} else if (appFramework.kind === 'tanstack') {
|
|
138
|
+
this.args['--name'] = slugify(path.basename(appFramework.appDetails.projectDir));
|
|
115
139
|
}
|
|
116
140
|
const projectName = await parseProjectName(this.args);
|
|
117
|
-
|
|
141
|
+
let projectDir;
|
|
142
|
+
if (appFramework.kind === 'next') {
|
|
143
|
+
projectDir = path.dirname(appFramework.appDetails.nextConfigPath);
|
|
144
|
+
} else if (appFramework.kind === 'tanstack') {
|
|
145
|
+
projectDir = appFramework.appDetails.projectDir;
|
|
146
|
+
} else {
|
|
147
|
+
projectDir = path.resolve(process.cwd(), slugify(projectName));
|
|
148
|
+
}
|
|
118
149
|
const packageManager = await getPackageManager({
|
|
119
150
|
cliArgs: this.args,
|
|
120
151
|
projectDir
|
|
121
152
|
});
|
|
122
|
-
if (
|
|
153
|
+
if (appFramework.kind === 'next') {
|
|
154
|
+
const { hasTopLevelLayout, nextAppDir } = appFramework.appDetails;
|
|
123
155
|
p.log.step(chalk.bold(`${chalk.bgBlack(` ${figures.triangleUp} Next.js `)} project detected!`));
|
|
124
156
|
const proceed = await p.confirm({
|
|
125
157
|
initialValue: true,
|
|
@@ -142,7 +174,7 @@ export class Main {
|
|
|
142
174
|
const result = await initNext({
|
|
143
175
|
...this.args,
|
|
144
176
|
dbType: dbDetails.type,
|
|
145
|
-
nextAppDetails,
|
|
177
|
+
nextAppDetails: appFramework.appDetails,
|
|
146
178
|
packageManager,
|
|
147
179
|
projectDir
|
|
148
180
|
});
|
|
@@ -168,6 +200,48 @@ export class Main {
|
|
|
168
200
|
p.outro(feedbackOutro());
|
|
169
201
|
return;
|
|
170
202
|
}
|
|
203
|
+
if (appFramework.kind === 'tanstack') {
|
|
204
|
+
const frameworkName = appFramework.appDetails.kind === 'start' ? 'TanStack Start' : 'TanStack Router';
|
|
205
|
+
p.log.step(chalk.bold(`${chalk.bgBlack(` ${frameworkName} `)} project detected!`));
|
|
206
|
+
const proceed = await p.confirm({
|
|
207
|
+
initialValue: true,
|
|
208
|
+
message: chalk.bold(appFramework.appDetails.kind === 'start' ? 'Install Payload in this TanStack Start project?' : 'Convert this project to TanStack Start and install Payload?')
|
|
209
|
+
});
|
|
210
|
+
if (p.isCancel(proceed) || !proceed) {
|
|
211
|
+
p.outro(feedbackOutro());
|
|
212
|
+
process.exit(0);
|
|
213
|
+
}
|
|
214
|
+
const dbDetails = await selectDb(this.args, projectName);
|
|
215
|
+
const result = await initTanStack({
|
|
216
|
+
...this.args,
|
|
217
|
+
appDetails: appFramework.appDetails,
|
|
218
|
+
dbType: dbDetails.type,
|
|
219
|
+
packageManager,
|
|
220
|
+
projectDir
|
|
221
|
+
});
|
|
222
|
+
if (result.success === false) {
|
|
223
|
+
p.log.error(result.reason);
|
|
224
|
+
p.outro(feedbackOutro());
|
|
225
|
+
process.exit(1);
|
|
226
|
+
}
|
|
227
|
+
await configurePayloadConfig({
|
|
228
|
+
dbType: dbDetails.type,
|
|
229
|
+
projectDirOrConfigPath: {
|
|
230
|
+
payloadConfigPath: result.payloadConfigPath
|
|
231
|
+
}
|
|
232
|
+
});
|
|
233
|
+
await manageEnvFiles({
|
|
234
|
+
cliArgs: this.args,
|
|
235
|
+
databaseType: dbDetails.type,
|
|
236
|
+
databaseUri: dbDetails.dbUri,
|
|
237
|
+
payloadSecret: generateSecret(),
|
|
238
|
+
projectDir
|
|
239
|
+
});
|
|
240
|
+
info('Payload project successfully initialized!');
|
|
241
|
+
p.note(successfulTanStackInit(), chalk.bgGreen(chalk.black(' TanStack Start initialized ')));
|
|
242
|
+
p.outro(feedbackOutro());
|
|
243
|
+
return;
|
|
244
|
+
}
|
|
171
245
|
const templateArg = this.args['--template'];
|
|
172
246
|
if (templateArg) {
|
|
173
247
|
const valid = validateTemplate({
|
|
@@ -188,11 +262,7 @@ export class Main {
|
|
|
188
262
|
helpMessage();
|
|
189
263
|
process.exit(1);
|
|
190
264
|
}
|
|
191
|
-
const agentType = await selectAgent({
|
|
192
|
-
cliArgs: this.args
|
|
193
|
-
});
|
|
194
265
|
await createProject({
|
|
195
|
-
agentType,
|
|
196
266
|
cliArgs: this.args,
|
|
197
267
|
example,
|
|
198
268
|
packageManager,
|
|
@@ -214,11 +284,7 @@ export class Main {
|
|
|
214
284
|
switch(template.type){
|
|
215
285
|
case 'plugin':
|
|
216
286
|
{
|
|
217
|
-
const agentType = await selectAgent({
|
|
218
|
-
cliArgs: this.args
|
|
219
|
-
});
|
|
220
287
|
await createProject({
|
|
221
|
-
agentType,
|
|
222
288
|
cliArgs: this.args,
|
|
223
289
|
packageManager,
|
|
224
290
|
projectDir,
|
|
@@ -230,11 +296,7 @@ export class Main {
|
|
|
230
296
|
case 'starter':
|
|
231
297
|
{
|
|
232
298
|
const dbDetails = await selectDb(this.args, projectName, template);
|
|
233
|
-
const agentType = await selectAgent({
|
|
234
|
-
cliArgs: this.args
|
|
235
|
-
});
|
|
236
299
|
await createProject({
|
|
237
|
-
agentType,
|
|
238
300
|
cliArgs: this.args,
|
|
239
301
|
dbDetails,
|
|
240
302
|
packageManager,
|
|
@@ -255,5 +317,33 @@ export class Main {
|
|
|
255
317
|
}
|
|
256
318
|
}
|
|
257
319
|
}
|
|
320
|
+
export function resolveAppFramework({ nextAppDetails, tanStackDetection }) {
|
|
321
|
+
if (nextAppDetails.nextConfigPath && tanStackDetection.detected) {
|
|
322
|
+
return {
|
|
323
|
+
kind: 'ambiguous'
|
|
324
|
+
};
|
|
325
|
+
}
|
|
326
|
+
if (nextAppDetails.nextConfigPath) {
|
|
327
|
+
return {
|
|
328
|
+
appDetails: nextAppDetails,
|
|
329
|
+
kind: 'next'
|
|
330
|
+
};
|
|
331
|
+
}
|
|
332
|
+
if (!tanStackDetection.detected) {
|
|
333
|
+
return {
|
|
334
|
+
kind: 'none'
|
|
335
|
+
};
|
|
336
|
+
}
|
|
337
|
+
if (!tanStackDetection.compatible) {
|
|
338
|
+
return {
|
|
339
|
+
kind: 'unsupported-tanstack',
|
|
340
|
+
reason: tanStackDetection.reason
|
|
341
|
+
};
|
|
342
|
+
}
|
|
343
|
+
return {
|
|
344
|
+
appDetails: tanStackDetection.details,
|
|
345
|
+
kind: 'tanstack'
|
|
346
|
+
};
|
|
347
|
+
}
|
|
258
348
|
|
|
259
349
|
//# sourceMappingURL=main.js.map
|