create-payload-app 3.91.0-internal.c1569dc → 4.0.0-beta.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE.md +1 -1
- 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/payload-config.js +1 -1
- package/dist/lib/ast/payload-config.js.map +1 -1
- package/dist/lib/ast/types.d.ts +3 -3
- 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 +64 -79
- 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 +6 -1
- package/dist/lib/init-next.d.ts.map +1 -1
- package/dist/lib/init-next.js +34 -41
- 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 +11 -5
- 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 +102 -21
- package/dist/lib/update-payload-in-project.js.map +1 -1
- package/dist/lib/wrap-next-config.d.ts.map +1 -1
- package/dist/main.d.ts +20 -1
- package/dist/main.d.ts.map +1 -1
- package/dist/main.js +127 -36
- 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)/page.tsx +7 -4
- 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 +30 -2
- 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)/custom.css +0 -0
- package/dist/template/src/app/(payload)/layout.tsx +9 -4
- package/dist/template/src/collections/Folders.ts +16 -0
- package/dist/template/src/collections/Media.ts +4 -0
- package/dist/template/src/collections/Tags.ts +16 -0
- package/dist/template/src/collections/Users.ts +1 -0
- package/dist/template/src/payload-types.ts +63 -9
- package/dist/template/src/payload.config.ts +14 -4
- package/dist/template-tanstack/routes/_payload/admin.$.tsx +25 -0
- package/dist/template-tanstack/routes/_payload/admin.index.tsx +25 -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 +29 -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/types.d.ts +23 -4
- 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 +10 -6
- package/dist/utils/messages.js.map +1 -1
- package/dist/utils/resolvePackageVersion.d.ts +35 -0
- package/dist/utils/resolvePackageVersion.d.ts.map +1 -0
- package/dist/utils/resolvePackageVersion.js +62 -0
- package/dist/utils/resolvePackageVersion.js.map +1 -0
- package/package.json +8 -8
- 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/getLatestPackageVersion.d.ts +0 -17
- package/dist/utils/getLatestPackageVersion.d.ts.map +0 -1
- package/dist/utils/getLatestPackageVersion.js +0 -20
- package/dist/utils/getLatestPackageVersion.js.map +0 -1
- /package/dist/{template/src/app/(payload)/custom.scss → template-tanstack/routes/_payload/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
|
@@ -15,32 +15,38 @@ export function getValidTemplates() {
|
|
|
15
15
|
name: 'blank',
|
|
16
16
|
type: 'starter',
|
|
17
17
|
description: 'Blank 3.0 Template',
|
|
18
|
-
url: `https://github.com/payloadcms/payload/templates/blank#
|
|
18
|
+
url: `https://github.com/payloadcms/payload/templates/blank#main`
|
|
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'
|
|
19
25
|
},
|
|
20
26
|
{
|
|
21
27
|
name: 'website',
|
|
22
28
|
type: 'starter',
|
|
23
29
|
description: 'Website Template',
|
|
24
|
-
url: `https://github.com/payloadcms/payload/templates/website#
|
|
30
|
+
url: `https://github.com/payloadcms/payload/templates/website#main`
|
|
25
31
|
},
|
|
26
32
|
{
|
|
27
33
|
name: 'ecommerce',
|
|
28
34
|
type: 'starter',
|
|
29
35
|
description: 'Ecommerce template',
|
|
30
|
-
url: 'https://github.com/payloadcms/payload/templates/ecommerce#
|
|
36
|
+
url: 'https://github.com/payloadcms/payload/templates/ecommerce#main'
|
|
31
37
|
},
|
|
32
38
|
{
|
|
33
39
|
name: 'with-cloudflare-d1',
|
|
34
40
|
type: 'starter',
|
|
35
41
|
dbType: 'd1-sqlite',
|
|
36
42
|
description: 'Blank template with Cloudflare D1 and Workers integration',
|
|
37
|
-
url: 'https://github.com/payloadcms/payload/templates/with-cloudflare-d1#
|
|
43
|
+
url: 'https://github.com/payloadcms/payload/templates/with-cloudflare-d1#main'
|
|
38
44
|
},
|
|
39
45
|
{
|
|
40
46
|
name: 'plugin',
|
|
41
47
|
type: 'plugin',
|
|
42
48
|
description: 'Template for creating a Payload plugin',
|
|
43
|
-
url: 'https://github.com/payloadcms/payload/templates/plugin#
|
|
49
|
+
url: 'https://github.com/payloadcms/payload/templates/plugin#main'
|
|
44
50
|
}
|
|
45
51
|
];
|
|
46
52
|
}
|
|
@@ -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#
|
|
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
|
-
import { getLatestPackageVersion } from '../utils/getLatestPackageVersion.js';
|
|
8
5
|
import { info } from '../utils/log.js';
|
|
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,36 +27,108 @@ export async function updatePayloadInProject(appDetails) {
|
|
|
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 isCustomStyles = destination === 'routes' && relativePath === '_payload/custom.css';
|
|
74
|
+
if (!isPayloadRoute) {
|
|
75
|
+
continue;
|
|
76
|
+
}
|
|
77
|
+
const destinationPath = path.join(destination === 'routes' ? appDetails.routesDir : appDetails.sourceDir, relativePath);
|
|
78
|
+
if (isCustomStyles && 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
|
-
|
|
31
|
-
|
|
32
|
-
|
|
113
|
+
const latestPayloadVersion = await resolvePackageVersion({
|
|
114
|
+
packageName: 'payload',
|
|
115
|
+
versionOrTag
|
|
33
116
|
});
|
|
34
|
-
if (
|
|
117
|
+
if (payloadPackageEntries.every(([, version])=>version === latestPayloadVersion)) {
|
|
35
118
|
return {
|
|
119
|
+
isUpdated: false,
|
|
36
120
|
message: `Payload v${payloadVersion} is already up to date.`,
|
|
37
121
|
success: true
|
|
38
122
|
};
|
|
39
123
|
}
|
|
40
|
-
|
|
41
|
-
const payloadPackages = Object.keys(packageObj.dependencies).filter((dep)=>dep.startsWith('@payloadcms/'));
|
|
124
|
+
const payloadPackages = payloadPackageEntries.map(([packageName])=>packageName).filter((packageName)=>packageName.startsWith('@payloadcms/'));
|
|
42
125
|
const packageNames = [
|
|
43
126
|
'payload',
|
|
44
|
-
...payloadPackages
|
|
127
|
+
...new Set(payloadPackages)
|
|
45
128
|
];
|
|
46
|
-
const packagesToUpdate = packageNames.map((
|
|
129
|
+
const packagesToUpdate = packageNames.map((packageName)=>`${packageName}@${latestPayloadVersion}`);
|
|
47
130
|
info(`Using ${packageManager}.\n`);
|
|
48
|
-
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')}`);
|
|
49
132
|
const { success: updateSuccess } = await installPackages({
|
|
50
133
|
packageManager,
|
|
51
134
|
packagesToInstall: packagesToUpdate,
|
|
@@ -55,16 +138,14 @@ export async function updatePayloadInProject(appDetails) {
|
|
|
55
138
|
throw new Error('Failed to update Payload packages');
|
|
56
139
|
}
|
|
57
140
|
info('Payload packages updated successfully.');
|
|
58
|
-
info(`Updating Payload Next.js files...`);
|
|
59
|
-
const templateFilesPath = process.env.JEST_WORKER_ID !== undefined ? path.resolve(dirname, '../../../../templates/blank') : path.resolve(dirname, '../..', 'dist/template');
|
|
60
|
-
const templateSrcDir = path.resolve(templateFilesPath, 'src/app/(payload)');
|
|
61
|
-
copyRecursiveSync(templateSrcDir, path.resolve(projectDir, appDetails.isSrcDir ? 'src/app' : 'app', '(payload)'), [
|
|
62
|
-
'custom.scss$'
|
|
63
|
-
]);
|
|
64
141
|
return {
|
|
142
|
+
isUpdated: true,
|
|
65
143
|
message: 'Payload updated successfully.',
|
|
66
144
|
success: true
|
|
67
145
|
};
|
|
68
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
|
+
}
|
|
69
150
|
|
|
70
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 { getLatestPackageVersion } from '../utils/getLatestPackageVersion.js'\nimport { info } from '../utils/log.js'\nimport { getPackageManager } from './get-package-manager.js'\nimport { installPackages } from './install-packages.js'\n\nexport async function updatePayloadInProject(\n appDetails: NextAppDetails,\n): Promise<{ message: string; success: boolean }> {\n if (!appDetails.nextConfigPath) {\n return { message: 'No Next.js config found', success: false }\n }\n\n const projectDir = path.dirname(appDetails.nextConfigPath)\n\n const packageObj = (await fse.readJson(path.resolve(projectDir, 'package.json'))) as {\n dependencies?: Record<string, string>\n }\n if (!packageObj?.dependencies) {\n throw new Error('No package.json found in this project')\n }\n\n const payloadVersion = packageObj.dependencies?.payload\n if (!payloadVersion) {\n throw new Error('Payload is not installed in this project')\n }\n\n const packageManager = await getPackageManager({ projectDir })\n\n // Fetch latest Payload version\n const latestPayloadVersion = await getLatestPackageVersion({ packageName: 'payload' })\n\n if (payloadVersion === latestPayloadVersion) {\n return { message: `Payload v${payloadVersion} is already up to date.`, success: true }\n }\n\n // Update all existing Payload packages\n const payloadPackages = Object.keys(packageObj.dependencies).filter((dep) =>\n dep.startsWith('@payloadcms/'),\n )\n\n const packageNames = ['payload', ...payloadPackages]\n\n const packagesToUpdate = packageNames.map((pkg) => `${pkg}@${latestPayloadVersion}`)\n\n info(`Using ${packageManager}.\\n`)\n info(\n `Updating ${packagesToUpdate.length} Payload packages to v${latestPayloadVersion}...\\n\\n${packageNames.map((p) => ` - ${p}`).join('\\n')}`,\n )\n\n const { success: updateSuccess } = await installPackages({\n packageManager,\n packagesToInstall: packagesToUpdate,\n projectDir,\n })\n\n if (!updateSuccess) {\n throw new Error('Failed to update Payload packages')\n }\n info('Payload packages updated successfully.')\n\n info(`Updating Payload Next.js files...`)\n\n const templateFilesPath =\n process.env.JEST_WORKER_ID !== undefined\n ? path.resolve(dirname, '../../../../templates/blank')\n : path.resolve(dirname, '../..', 'dist/template')\n\n const templateSrcDir = path.resolve(templateFilesPath, 'src/app/(payload)')\n\n copyRecursiveSync(\n templateSrcDir,\n path.resolve(projectDir, appDetails.isSrcDir ? 'src/app' : 'app', '(payload)'),\n ['custom.scss$'], // Do not overwrite user's custom.scss\n )\n\n return { message: 'Payload updated successfully.', success: true }\n}\n"],"names":["fse","fileURLToPath","path","filename","url","dirname","copyRecursiveSync","getLatestPackageVersion","info","getPackageManager","installPackages","updatePayloadInProject","appDetails","nextConfigPath","message","success","projectDir","packageObj","readJson","resolve","dependencies","Error","payloadVersion","payload","packageManager","latestPayloadVersion","packageName","payloadPackages","Object","keys","filter","dep","startsWith","packageNames","packagesToUpdate","map","pkg","length","p","join","updateSuccess","packagesToInstall","templateFilesPath","process","env","JEST_WORKER_ID","undefined","templateSrcDir","isSrcDir"],"mappings":"AAAA,OAAOA,SAAS,WAAU;AAC1B,SAASC,aAAa,QAAQ,WAAU;AACxC,OAAOC,UAAU,OAAM;AAEvB,MAAMC,WAAWF,cAAc,YAAYG,GAAG;AAC9C,MAAMC,UAAUH,KAAKG,OAAO,CAACF;AAI7B,SAASG,iBAAiB,QAAQ,kCAAiC;AACnE,SAASC,uBAAuB,QAAQ,sCAAqC;AAC7E,SAASC,IAAI,QAAQ,kBAAiB;AACtC,SAASC,iBAAiB,QAAQ,2BAA0B;AAC5D,SAASC,eAAe,QAAQ,wBAAuB;AAEvD,OAAO,eAAeC,uBACpBC,UAA0B;IAE1B,IAAI,CAACA,WAAWC,cAAc,EAAE;QAC9B,OAAO;YAAEC,SAAS;YAA2BC,SAAS;QAAM;IAC9D;IAEA,MAAMC,aAAad,KAAKG,OAAO,CAACO,WAAWC,cAAc;IAEzD,MAAMI,aAAc,MAAMjB,IAAIkB,QAAQ,CAAChB,KAAKiB,OAAO,CAACH,YAAY;IAGhE,IAAI,CAACC,YAAYG,cAAc;QAC7B,MAAM,IAAIC,MAAM;IAClB;IAEA,MAAMC,iBAAiBL,WAAWG,YAAY,EAAEG;IAChD,IAAI,CAACD,gBAAgB;QACnB,MAAM,IAAID,MAAM;IAClB;IAEA,MAAMG,iBAAiB,MAAMf,kBAAkB;QAAEO;IAAW;IAE5D,+BAA+B;IAC/B,MAAMS,uBAAuB,MAAMlB,wBAAwB;QAAEmB,aAAa;IAAU;IAEpF,IAAIJ,mBAAmBG,sBAAsB;QAC3C,OAAO;YAAEX,SAAS,CAAC,SAAS,EAAEQ,eAAe,uBAAuB,CAAC;YAAEP,SAAS;QAAK;IACvF;IAEA,uCAAuC;IACvC,MAAMY,kBAAkBC,OAAOC,IAAI,CAACZ,WAAWG,YAAY,EAAEU,MAAM,CAAC,CAACC,MACnEA,IAAIC,UAAU,CAAC;IAGjB,MAAMC,eAAe;QAAC;WAAcN;KAAgB;IAEpD,MAAMO,mBAAmBD,aAAaE,GAAG,CAAC,CAACC,MAAQ,GAAGA,IAAI,CAAC,EAAEX,sBAAsB;IAEnFjB,KAAK,CAAC,MAAM,EAAEgB,eAAe,GAAG,CAAC;IACjChB,KACE,CAAC,SAAS,EAAE0B,iBAAiBG,MAAM,CAAC,sBAAsB,EAAEZ,qBAAqB,OAAO,EAAEQ,aAAaE,GAAG,CAAC,CAACG,IAAM,CAAC,IAAI,EAAEA,GAAG,EAAEC,IAAI,CAAC,OAAO;IAG5I,MAAM,EAAExB,SAASyB,aAAa,EAAE,GAAG,MAAM9B,gBAAgB;QACvDc;QACAiB,mBAAmBP;QACnBlB;IACF;IAEA,IAAI,CAACwB,eAAe;QAClB,MAAM,IAAInB,MAAM;IAClB;IACAb,KAAK;IAELA,KAAK,CAAC,iCAAiC,CAAC;IAExC,MAAMkC,oBACJC,QAAQC,GAAG,CAACC,cAAc,KAAKC,YAC3B5C,KAAKiB,OAAO,CAACd,SAAS,iCACtBH,KAAKiB,OAAO,CAACd,SAAS,SAAS;IAErC,MAAM0C,iBAAiB7C,KAAKiB,OAAO,CAACuB,mBAAmB;IAEvDpC,kBACEyC,gBACA7C,KAAKiB,OAAO,CAACH,YAAYJ,WAAWoC,QAAQ,GAAG,YAAY,OAAO,cAClE;QAAC;KAAe;IAGlB,OAAO;QAAElC,SAAS;QAAiCC,SAAS;IAAK;AACnE"}
|
|
1
|
+
{"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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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wrap-next-config.d.ts","sourceRoot":"","sources":["../../src/lib/wrap-next-config.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AAIjD,eAAO,MAAM,oBAAoB
|
|
1
|
+
{"version":3,"file":"wrap-next-config.d.ts","sourceRoot":"","sources":["../../src/lib/wrap-next-config.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AAIjD,eAAO,MAAM,oBAAoB;IAC/B,GAAG;IACH,GAAG;IACH,EAAE;CACH,CAAA;AAED,eAAO,MAAM,cAAc,SAAgB;IACzC,cAAc,EAAE,MAAM,CAAA;IACtB,cAAc,EAAE,cAAc,CAAA;CAC/B,kBAaA,CAAA;AAED;;GAEG;AACH,wBAAsB,2BAA2B,CAC/C,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,cAAc,GACzB,OAAO,CAAC;IAAE,qBAAqB,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,CAAC,CA4H9D"}
|
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
|
@@ -9,23 +9,23 @@ 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
|
+
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 { getLatestPackageVersion } from './utils/getLatestPackageVersion.js';
|
|
20
|
+
import { updatePayloadInNextProject, updatePayloadInTanStackProject } from './lib/update-payload-in-project.js';
|
|
21
21
|
import { debug, error, info } from './utils/log.js';
|
|
22
|
-
import { feedbackOutro, helpMessage, moveMessage, successfulNextInit, successMessage } from './utils/messages.js';
|
|
22
|
+
import { feedbackOutro, helpMessage, moveMessage, successfulNextInit, successfulTanStackInit, successMessage } from './utils/messages.js';
|
|
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,
|
|
@@ -34,9 +34,9 @@ export class Main {
|
|
|
34
34
|
'--help': Boolean,
|
|
35
35
|
'--local-template': String,
|
|
36
36
|
'--name': String,
|
|
37
|
+
'--payload-version': String,
|
|
37
38
|
'--secret': String,
|
|
38
39
|
'--template': String,
|
|
39
|
-
'--version': String,
|
|
40
40
|
// Next.js
|
|
41
41
|
'--init-next': Boolean,
|
|
42
42
|
// Agent
|
|
@@ -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',
|
|
@@ -71,9 +70,10 @@ export class Main {
|
|
|
71
70
|
if (debugFlag) {
|
|
72
71
|
process.env.DEBUG = 'true';
|
|
73
72
|
}
|
|
74
|
-
const LATEST_VERSION = await
|
|
73
|
+
const LATEST_VERSION = await resolvePackageVersion({
|
|
75
74
|
debug: debugFlag,
|
|
76
|
-
packageName: 'payload'
|
|
75
|
+
packageName: 'payload',
|
|
76
|
+
versionOrTag: this.args['--payload-version'] ?? DEFAULT_PAYLOAD_VERSION_TAG
|
|
77
77
|
});
|
|
78
78
|
if (this.args['--help']) {
|
|
79
79
|
helpMessage();
|
|
@@ -83,23 +83,46 @@ export class Main {
|
|
|
83
83
|
console.log('\n');
|
|
84
84
|
p.intro(chalk.bgCyan(chalk.black(' create-payload-app ')));
|
|
85
85
|
p.note("Welcome to Payload. Let's create a project!");
|
|
86
|
-
|
|
86
|
+
const tanStackDetection = await getTanStackAppDetails({
|
|
87
|
+
projectDir: process.cwd()
|
|
88
|
+
});
|
|
87
89
|
const nextAppDetails = await getNextAppDetails(process.cwd());
|
|
88
|
-
const
|
|
89
|
-
|
|
90
|
-
|
|
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 >= ${minimumNextVersion.major}.${minimumNextVersion.minor} is required to use Payload.`);
|
|
91
106
|
p.outro(feedbackOutro());
|
|
92
107
|
process.exit(0);
|
|
93
108
|
}
|
|
94
|
-
|
|
95
|
-
if (
|
|
109
|
+
const hasPayload = appFramework.kind !== 'none' && appFramework.appDetails.isPayloadInstalled;
|
|
110
|
+
if (hasPayload) {
|
|
96
111
|
p.log.warn(`Payload installation detected in current project.`);
|
|
97
112
|
const shouldUpdate = await p.confirm({
|
|
98
113
|
initialValue: false,
|
|
99
114
|
message: chalk.bold(`Upgrade Payload in this project?`)
|
|
100
115
|
});
|
|
101
116
|
if (!p.isCancel(shouldUpdate) && shouldUpdate) {
|
|
102
|
-
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;
|
|
103
126
|
if (updateSuccess) {
|
|
104
127
|
info(message);
|
|
105
128
|
} else {
|
|
@@ -107,18 +130,28 @@ export class Main {
|
|
|
107
130
|
}
|
|
108
131
|
}
|
|
109
132
|
p.outro(feedbackOutro());
|
|
110
|
-
|
|
133
|
+
return;
|
|
111
134
|
}
|
|
112
|
-
if (
|
|
113
|
-
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));
|
|
114
139
|
}
|
|
115
140
|
const projectName = await parseProjectName(this.args);
|
|
116
|
-
|
|
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
|
+
}
|
|
117
149
|
const packageManager = await getPackageManager({
|
|
118
150
|
cliArgs: this.args,
|
|
119
151
|
projectDir
|
|
120
152
|
});
|
|
121
|
-
if (
|
|
153
|
+
if (appFramework.kind === 'next') {
|
|
154
|
+
const { hasTopLevelLayout, nextAppDir } = appFramework.appDetails;
|
|
122
155
|
p.log.step(chalk.bold(`${chalk.bgBlack(` ${figures.triangleUp} Next.js `)} project detected!`));
|
|
123
156
|
const proceed = await p.confirm({
|
|
124
157
|
initialValue: true,
|
|
@@ -141,7 +174,7 @@ export class Main {
|
|
|
141
174
|
const result = await initNext({
|
|
142
175
|
...this.args,
|
|
143
176
|
dbType: dbDetails.type,
|
|
144
|
-
nextAppDetails,
|
|
177
|
+
nextAppDetails: appFramework.appDetails,
|
|
145
178
|
packageManager,
|
|
146
179
|
projectDir
|
|
147
180
|
});
|
|
@@ -167,6 +200,48 @@ export class Main {
|
|
|
167
200
|
p.outro(feedbackOutro());
|
|
168
201
|
return;
|
|
169
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
|
+
}
|
|
170
245
|
const templateArg = this.args['--template'];
|
|
171
246
|
if (templateArg) {
|
|
172
247
|
const valid = validateTemplate({
|
|
@@ -181,17 +256,13 @@ export class Main {
|
|
|
181
256
|
if (exampleArg) {
|
|
182
257
|
const example = await parseExample({
|
|
183
258
|
name: exampleArg,
|
|
184
|
-
branch: this.args['--branch'] ?? '
|
|
259
|
+
branch: this.args['--branch'] ?? 'main'
|
|
185
260
|
});
|
|
186
261
|
if (!example) {
|
|
187
262
|
helpMessage();
|
|
188
263
|
process.exit(1);
|
|
189
264
|
}
|
|
190
|
-
const agentType = await selectAgent({
|
|
191
|
-
cliArgs: this.args
|
|
192
|
-
});
|
|
193
265
|
await createProject({
|
|
194
|
-
agentType,
|
|
195
266
|
cliArgs: this.args,
|
|
196
267
|
example,
|
|
197
268
|
packageManager,
|
|
@@ -213,11 +284,7 @@ export class Main {
|
|
|
213
284
|
switch(template.type){
|
|
214
285
|
case 'plugin':
|
|
215
286
|
{
|
|
216
|
-
const agentType = await selectAgent({
|
|
217
|
-
cliArgs: this.args
|
|
218
|
-
});
|
|
219
287
|
await createProject({
|
|
220
|
-
agentType,
|
|
221
288
|
cliArgs: this.args,
|
|
222
289
|
packageManager,
|
|
223
290
|
projectDir,
|
|
@@ -229,11 +296,7 @@ export class Main {
|
|
|
229
296
|
case 'starter':
|
|
230
297
|
{
|
|
231
298
|
const dbDetails = await selectDb(this.args, projectName, template);
|
|
232
|
-
const agentType = await selectAgent({
|
|
233
|
-
cliArgs: this.args
|
|
234
|
-
});
|
|
235
299
|
await createProject({
|
|
236
|
-
agentType,
|
|
237
300
|
cliArgs: this.args,
|
|
238
301
|
dbDetails,
|
|
239
302
|
packageManager,
|
|
@@ -254,5 +317,33 @@ export class Main {
|
|
|
254
317
|
}
|
|
255
318
|
}
|
|
256
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
|
+
}
|
|
257
348
|
|
|
258
349
|
//# sourceMappingURL=main.js.map
|