create-payload-app 4.0.0-internal.fa345ef → 4.0.0-internal.fec2230
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 +15 -0
- package/dist/lib/agent-config.d.ts.map +1 -0
- package/dist/lib/agent-config.js +22 -0
- package/dist/lib/agent-config.js.map +1 -0
- package/dist/lib/agent-config.spec.js +23 -0
- package/dist/lib/agent-config.spec.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/package-json.spec.js +73 -1
- package/dist/lib/ast/package-json.spec.js.map +1 -1
- package/dist/lib/ast/types.d.ts +2 -2
- 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/configure-payload-tsconfig.spec.js +135 -0
- package/dist/lib/configure-payload-tsconfig.spec.js.map +1 -0
- package/dist/lib/configure-plugin-project.d.ts.map +1 -1
- 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 +5 -21
- package/dist/lib/create-project.js.map +1 -1
- package/dist/lib/create-project.spec.js +9 -0
- package/dist/lib/create-project.spec.js.map +1 -1
- package/dist/lib/generate-secret.js +1 -1
- package/dist/lib/generate-secret.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-default-template.spec.js +121 -0
- package/dist/lib/init-tanstack-default-template.spec.js.map +1 -0
- 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 +150 -0
- package/dist/lib/init-tanstack.js.map +1 -0
- package/dist/lib/init-tanstack.spec.js +394 -0
- package/dist/lib/init-tanstack.spec.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/detect.spec.js +227 -0
- package/dist/lib/tanstack/detect.spec.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/prepare.spec.js +288 -0
- package/dist/lib/tanstack/prepare.spec.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-root-route.spec.js +484 -0
- package/dist/lib/tanstack/transform-root-route.spec.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-router.spec.js +264 -0
- package/dist/lib/tanstack/transform-router.spec.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/tanstack/transform-vite-config.spec.js +456 -0
- package/dist/lib/tanstack/transform-vite-config.spec.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/lib/update-payload-in-project.spec.js +262 -0
- package/dist/lib/update-payload-in-project.spec.js.map +1 -0
- 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 +120 -29
- package/dist/main.js.map +1 -1
- package/dist/main.spec.js +102 -0
- package/dist/main.spec.js.map +1 -0
- 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 +1 -1
- package/dist/template/src/app/(payload)/layout.tsx +8 -2
- package/dist/template-tanstack/routes/_payload/admin.$.tsx +8 -0
- package/dist/template-tanstack/routes/_payload/admin.index.tsx +8 -0
- package/dist/template-tanstack/routes/_payload/api.$.ts +10 -0
- package/dist/template-tanstack/routes/_payload/importMap.js +32 -0
- package/dist/template-tanstack/routes/_payload/server.functions.ts +49 -0
- package/dist/template-tanstack/routes/_payload.tsx +30 -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 +40 -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/casing.d.ts.map +1 -1
- package/dist/utils/log.d.ts.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 +4 -4
- 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/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/template/src/app/(payload)/{custom.scss → custom.css} +0 -0
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
import fse from 'fs-extra';
|
|
2
|
+
import os from 'node:os';
|
|
3
|
+
import path from 'node:path';
|
|
4
|
+
import { fileURLToPath } from 'node:url';
|
|
5
|
+
import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest';
|
|
6
|
+
import { initTanStack } from './init-tanstack.js';
|
|
7
|
+
const dirname = path.dirname(fileURLToPath(import.meta.url));
|
|
8
|
+
const mocks = vi.hoisted(()=>({
|
|
9
|
+
resolvePackageVersion: vi.fn()
|
|
10
|
+
}));
|
|
11
|
+
vi.mock('../utils/resolvePackageVersion.js', async (importOriginal)=>({
|
|
12
|
+
...await importOriginal(),
|
|
13
|
+
resolvePackageVersion: mocks.resolvePackageVersion
|
|
14
|
+
}));
|
|
15
|
+
const routerContent = `import { createRouter } from '@tanstack/react-router'
|
|
16
|
+
|
|
17
|
+
import { routeTree } from './routeTree.gen'
|
|
18
|
+
|
|
19
|
+
export function getRouter() {
|
|
20
|
+
return createRouter({ routeTree })
|
|
21
|
+
}
|
|
22
|
+
`;
|
|
23
|
+
const rootRouteContent = `import { createRootRoute, HeadContent, Scripts } from '@tanstack/react-router'
|
|
24
|
+
import appCss from '../styles.css?url'
|
|
25
|
+
|
|
26
|
+
export const Route = createRootRoute({
|
|
27
|
+
head: () => ({ links: [{ rel: 'stylesheet', href: appCss }] }),
|
|
28
|
+
shellComponent: RootDocument,
|
|
29
|
+
})
|
|
30
|
+
|
|
31
|
+
function RootDocument({ children }: { children: React.ReactNode }) {
|
|
32
|
+
return (
|
|
33
|
+
<html lang="en">
|
|
34
|
+
<head><HeadContent /></head>
|
|
35
|
+
<body>{children}<Scripts /></body>
|
|
36
|
+
</html>
|
|
37
|
+
)
|
|
38
|
+
}
|
|
39
|
+
`;
|
|
40
|
+
const viteConfigContent = `import { tanstackStart } from '@tanstack/react-start/plugin/vite'
|
|
41
|
+
import viteReact from '@vitejs/plugin-react'
|
|
42
|
+
import { defineConfig } from 'vite'
|
|
43
|
+
|
|
44
|
+
export default defineConfig({
|
|
45
|
+
plugins: [tanstackStart(), viteReact()],
|
|
46
|
+
})
|
|
47
|
+
`;
|
|
48
|
+
describe('initTanStack default template', ()=>{
|
|
49
|
+
let appDetails;
|
|
50
|
+
let projectDir;
|
|
51
|
+
beforeEach(()=>{
|
|
52
|
+
vi.clearAllMocks();
|
|
53
|
+
mocks.resolvePackageVersion.mockResolvedValue('4.2.0');
|
|
54
|
+
projectDir = fse.mkdtempSync(path.join(os.tmpdir(), 'cpa-init-tanstack-default-'));
|
|
55
|
+
writeFiles({
|
|
56
|
+
files: {
|
|
57
|
+
'package.json': JSON.stringify({
|
|
58
|
+
dependencies: {
|
|
59
|
+
'@tanstack/react-router': '^1.200.0',
|
|
60
|
+
'@tanstack/react-start': '^1.200.0'
|
|
61
|
+
},
|
|
62
|
+
name: 'start-app'
|
|
63
|
+
}),
|
|
64
|
+
'src/router.tsx': routerContent,
|
|
65
|
+
'src/routes/__root.tsx': rootRouteContent,
|
|
66
|
+
'tsconfig.json': '{"compilerOptions":{"baseUrl":"."}}\n',
|
|
67
|
+
'vite.config.ts': viteConfigContent
|
|
68
|
+
},
|
|
69
|
+
root: projectDir
|
|
70
|
+
});
|
|
71
|
+
appDetails = {
|
|
72
|
+
isPayloadInstalled: false,
|
|
73
|
+
kind: 'start',
|
|
74
|
+
projectDir,
|
|
75
|
+
rootRoutePath: path.join(projectDir, 'src/routes/__root.tsx'),
|
|
76
|
+
routerPath: path.join(projectDir, 'src/router.tsx'),
|
|
77
|
+
routesDir: path.join(projectDir, 'src/routes'),
|
|
78
|
+
sourceDir: path.join(projectDir, 'src'),
|
|
79
|
+
viteConfigPath: path.join(projectDir, 'vite.config.ts')
|
|
80
|
+
};
|
|
81
|
+
});
|
|
82
|
+
afterEach(()=>{
|
|
83
|
+
fse.removeSync(projectDir);
|
|
84
|
+
});
|
|
85
|
+
it('should initialize from the raw source template without a templateRoot override', async ()=>{
|
|
86
|
+
const rawPayloadLayoutPath = path.resolve(dirname, '../../../../templates/blank-tanstack/src/app/_payload.tsx');
|
|
87
|
+
const result = await initTanStack({
|
|
88
|
+
'--no-deps': true,
|
|
89
|
+
appDetails,
|
|
90
|
+
dbType: 'mongodb',
|
|
91
|
+
packageManager: 'pnpm',
|
|
92
|
+
projectDir
|
|
93
|
+
});
|
|
94
|
+
expect(result).toEqual({
|
|
95
|
+
payloadConfigPath: path.join(projectDir, 'src/payload.config.ts'),
|
|
96
|
+
success: true
|
|
97
|
+
});
|
|
98
|
+
expect(fse.readFileSync(path.join(projectDir, 'src/routes/_payload.tsx'), 'utf8')).toBe(fse.readFileSync(rawPayloadLayoutPath, 'utf8'));
|
|
99
|
+
});
|
|
100
|
+
it('should use the UI stylesheet without copying project-level foundations', async ()=>{
|
|
101
|
+
const result = await initTanStack({
|
|
102
|
+
'--no-deps': true,
|
|
103
|
+
'--payload-version': '4.2.0',
|
|
104
|
+
appDetails,
|
|
105
|
+
dbType: 'mongodb',
|
|
106
|
+
packageManager: 'pnpm',
|
|
107
|
+
projectDir
|
|
108
|
+
});
|
|
109
|
+
expect(result.success).toBe(true);
|
|
110
|
+
expect(fse.readFileSync(path.join(projectDir, 'src/routes/_payload.tsx'), 'utf8')).toContain("import styles from '../payload.css?url'");
|
|
111
|
+
expect(fse.readFileSync(path.join(projectDir, 'src/payload.css'), 'utf8')).toBe("@import '@payloadcms/ui/css/app.css';\n");
|
|
112
|
+
expect(fse.pathExistsSync(path.join(projectDir, 'src/payload-foundation.css'))).toBe(false);
|
|
113
|
+
});
|
|
114
|
+
});
|
|
115
|
+
function writeFiles({ files, root }) {
|
|
116
|
+
for (const [relativePath, content] of Object.entries(files)){
|
|
117
|
+
fse.outputFileSync(path.join(root, relativePath), content);
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
//# sourceMappingURL=init-tanstack-default-template.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/lib/init-tanstack-default-template.spec.ts"],"sourcesContent":["import fse from 'fs-extra'\nimport os from 'node:os'\nimport path from 'node:path'\nimport { fileURLToPath } from 'node:url'\nimport { afterEach, beforeEach, describe, expect, it, vi } from 'vitest'\n\nimport type { TanStackAppDetails } from '../types.js'\n\nimport { initTanStack } from './init-tanstack.js'\n\nconst dirname = path.dirname(fileURLToPath(import.meta.url))\n\nconst mocks = vi.hoisted(() => ({ resolvePackageVersion: vi.fn() }))\n\nvi.mock('../utils/resolvePackageVersion.js', async (importOriginal) => ({\n ...(await importOriginal()),\n resolvePackageVersion: mocks.resolvePackageVersion,\n}))\n\nconst routerContent = `import { createRouter } from '@tanstack/react-router'\n\nimport { routeTree } from './routeTree.gen'\n\nexport function getRouter() {\n return createRouter({ routeTree })\n}\n`\n\nconst rootRouteContent = `import { createRootRoute, HeadContent, Scripts } from '@tanstack/react-router'\nimport appCss from '../styles.css?url'\n\nexport const Route = createRootRoute({\n head: () => ({ links: [{ rel: 'stylesheet', href: appCss }] }),\n shellComponent: RootDocument,\n})\n\nfunction RootDocument({ children }: { children: React.ReactNode }) {\n return (\n <html lang=\"en\">\n <head><HeadContent /></head>\n <body>{children}<Scripts /></body>\n </html>\n )\n}\n`\n\nconst viteConfigContent = `import { tanstackStart } from '@tanstack/react-start/plugin/vite'\nimport viteReact from '@vitejs/plugin-react'\nimport { defineConfig } from 'vite'\n\nexport default defineConfig({\n plugins: [tanstackStart(), viteReact()],\n})\n`\n\ndescribe('initTanStack default template', () => {\n let appDetails: TanStackAppDetails\n let projectDir: string\n\n beforeEach(() => {\n vi.clearAllMocks()\n mocks.resolvePackageVersion.mockResolvedValue('4.2.0')\n projectDir = fse.mkdtempSync(path.join(os.tmpdir(), 'cpa-init-tanstack-default-'))\n writeFiles({\n files: {\n 'package.json': JSON.stringify({\n dependencies: {\n '@tanstack/react-router': '^1.200.0',\n '@tanstack/react-start': '^1.200.0',\n },\n name: 'start-app',\n }),\n 'src/router.tsx': routerContent,\n 'src/routes/__root.tsx': rootRouteContent,\n 'tsconfig.json': '{\"compilerOptions\":{\"baseUrl\":\".\"}}\\n',\n 'vite.config.ts': viteConfigContent,\n },\n root: projectDir,\n })\n appDetails = {\n isPayloadInstalled: false,\n kind: 'start',\n projectDir,\n rootRoutePath: path.join(projectDir, 'src/routes/__root.tsx'),\n routerPath: path.join(projectDir, 'src/router.tsx'),\n routesDir: path.join(projectDir, 'src/routes'),\n sourceDir: path.join(projectDir, 'src'),\n viteConfigPath: path.join(projectDir, 'vite.config.ts'),\n }\n })\n\n afterEach(() => {\n fse.removeSync(projectDir)\n })\n\n it('should initialize from the raw source template without a templateRoot override', async () => {\n const rawPayloadLayoutPath = path.resolve(\n dirname,\n '../../../../templates/blank-tanstack/src/app/_payload.tsx',\n )\n\n const result = await initTanStack({\n '--no-deps': true,\n appDetails,\n dbType: 'mongodb',\n packageManager: 'pnpm',\n projectDir,\n })\n\n expect(result).toEqual({\n payloadConfigPath: path.join(projectDir, 'src/payload.config.ts'),\n success: true,\n })\n expect(fse.readFileSync(path.join(projectDir, 'src/routes/_payload.tsx'), 'utf8')).toBe(\n fse.readFileSync(rawPayloadLayoutPath, 'utf8'),\n )\n })\n\n it('should use the UI stylesheet without copying project-level foundations', async () => {\n const result = await initTanStack({\n '--no-deps': true,\n '--payload-version': '4.2.0',\n appDetails,\n dbType: 'mongodb',\n packageManager: 'pnpm',\n projectDir,\n })\n\n expect(result.success).toBe(true)\n expect(fse.readFileSync(path.join(projectDir, 'src/routes/_payload.tsx'), 'utf8')).toContain(\n \"import styles from '../payload.css?url'\",\n )\n expect(fse.readFileSync(path.join(projectDir, 'src/payload.css'), 'utf8')).toBe(\n \"@import '@payloadcms/ui/css/app.css';\\n\",\n )\n expect(fse.pathExistsSync(path.join(projectDir, 'src/payload-foundation.css'))).toBe(false)\n })\n})\n\nfunction writeFiles({ files, root }: { files: Record<string, string>; root: string }): void {\n for (const [relativePath, content] of Object.entries(files)) {\n fse.outputFileSync(path.join(root, relativePath), content)\n }\n}\n"],"names":["fse","os","path","fileURLToPath","afterEach","beforeEach","describe","expect","it","vi","initTanStack","dirname","url","mocks","hoisted","resolvePackageVersion","fn","mock","importOriginal","routerContent","rootRouteContent","viteConfigContent","appDetails","projectDir","clearAllMocks","mockResolvedValue","mkdtempSync","join","tmpdir","writeFiles","files","JSON","stringify","dependencies","name","root","isPayloadInstalled","kind","rootRoutePath","routerPath","routesDir","sourceDir","viteConfigPath","removeSync","rawPayloadLayoutPath","resolve","result","dbType","packageManager","toEqual","payloadConfigPath","success","readFileSync","toBe","toContain","pathExistsSync","relativePath","content","Object","entries","outputFileSync"],"mappings":"AAAA,OAAOA,SAAS,WAAU;AAC1B,OAAOC,QAAQ,UAAS;AACxB,OAAOC,UAAU,YAAW;AAC5B,SAASC,aAAa,QAAQ,WAAU;AACxC,SAASC,SAAS,EAAEC,UAAU,EAAEC,QAAQ,EAAEC,MAAM,EAAEC,EAAE,EAAEC,EAAE,QAAQ,SAAQ;AAIxE,SAASC,YAAY,QAAQ,qBAAoB;AAEjD,MAAMC,UAAUT,KAAKS,OAAO,CAACR,cAAc,YAAYS,GAAG;AAE1D,MAAMC,QAAQJ,GAAGK,OAAO,CAAC,IAAO,CAAA;QAAEC,uBAAuBN,GAAGO,EAAE;IAAG,CAAA;AAEjEP,GAAGQ,IAAI,CAAC,qCAAqC,OAAOC,iBAAoB,CAAA;QACtE,GAAI,MAAMA,gBAAgB;QAC1BH,uBAAuBF,MAAME,qBAAqB;IACpD,CAAA;AAEA,MAAMI,gBAAgB,CAAC;;;;;;;AAOvB,CAAC;AAED,MAAMC,mBAAmB,CAAC;;;;;;;;;;;;;;;;AAgB1B,CAAC;AAED,MAAMC,oBAAoB,CAAC;;;;;;;AAO3B,CAAC;AAEDf,SAAS,iCAAiC;IACxC,IAAIgB;IACJ,IAAIC;IAEJlB,WAAW;QACTI,GAAGe,aAAa;QAChBX,MAAME,qBAAqB,CAACU,iBAAiB,CAAC;QAC9CF,aAAavB,IAAI0B,WAAW,CAACxB,KAAKyB,IAAI,CAAC1B,GAAG2B,MAAM,IAAI;QACpDC,WAAW;YACTC,OAAO;gBACL,gBAAgBC,KAAKC,SAAS,CAAC;oBAC7BC,cAAc;wBACZ,0BAA0B;wBAC1B,yBAAyB;oBAC3B;oBACAC,MAAM;gBACR;gBACA,kBAAkBf;gBAClB,yBAAyBC;gBACzB,iBAAiB;gBACjB,kBAAkBC;YACpB;YACAc,MAAMZ;QACR;QACAD,aAAa;YACXc,oBAAoB;YACpBC,MAAM;YACNd;YACAe,eAAepC,KAAKyB,IAAI,CAACJ,YAAY;YACrCgB,YAAYrC,KAAKyB,IAAI,CAACJ,YAAY;YAClCiB,WAAWtC,KAAKyB,IAAI,CAACJ,YAAY;YACjCkB,WAAWvC,KAAKyB,IAAI,CAACJ,YAAY;YACjCmB,gBAAgBxC,KAAKyB,IAAI,CAACJ,YAAY;QACxC;IACF;IAEAnB,UAAU;QACRJ,IAAI2C,UAAU,CAACpB;IACjB;IAEAf,GAAG,kFAAkF;QACnF,MAAMoC,uBAAuB1C,KAAK2C,OAAO,CACvClC,SACA;QAGF,MAAMmC,SAAS,MAAMpC,aAAa;YAChC,aAAa;YACbY;YACAyB,QAAQ;YACRC,gBAAgB;YAChBzB;QACF;QAEAhB,OAAOuC,QAAQG,OAAO,CAAC;YACrBC,mBAAmBhD,KAAKyB,IAAI,CAACJ,YAAY;YACzC4B,SAAS;QACX;QACA5C,OAAOP,IAAIoD,YAAY,CAAClD,KAAKyB,IAAI,CAACJ,YAAY,4BAA4B,SAAS8B,IAAI,CACrFrD,IAAIoD,YAAY,CAACR,sBAAsB;IAE3C;IAEApC,GAAG,0EAA0E;QAC3E,MAAMsC,SAAS,MAAMpC,aAAa;YAChC,aAAa;YACb,qBAAqB;YACrBY;YACAyB,QAAQ;YACRC,gBAAgB;YAChBzB;QACF;QAEAhB,OAAOuC,OAAOK,OAAO,EAAEE,IAAI,CAAC;QAC5B9C,OAAOP,IAAIoD,YAAY,CAAClD,KAAKyB,IAAI,CAACJ,YAAY,4BAA4B,SAAS+B,SAAS,CAC1F;QAEF/C,OAAOP,IAAIoD,YAAY,CAAClD,KAAKyB,IAAI,CAACJ,YAAY,oBAAoB,SAAS8B,IAAI,CAC7E;QAEF9C,OAAOP,IAAIuD,cAAc,CAACrD,KAAKyB,IAAI,CAACJ,YAAY,gCAAgC8B,IAAI,CAAC;IACvF;AACF;AAEA,SAASxB,WAAW,EAAEC,KAAK,EAAEK,IAAI,EAAmD;IAClF,KAAK,MAAM,CAACqB,cAAcC,QAAQ,IAAIC,OAAOC,OAAO,CAAC7B,OAAQ;QAC3D9B,IAAI4D,cAAc,CAAC1D,KAAKyB,IAAI,CAACQ,MAAMqB,eAAeC;IACpD;AACF"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { CliArgs, DbType, PackageManager, TanStackAppDetails } from '../types.js';
|
|
2
|
+
type InitTanStackArgs = {
|
|
3
|
+
appDetails?: TanStackAppDetails;
|
|
4
|
+
dbType: DbType;
|
|
5
|
+
packageManager: PackageManager;
|
|
6
|
+
projectDir: string;
|
|
7
|
+
templateRoot?: string;
|
|
8
|
+
} & Pick<CliArgs, '--debug' | '--no-deps' | '--payload-version'>;
|
|
9
|
+
type InitTanStackResult = {
|
|
10
|
+
payloadConfigPath: string;
|
|
11
|
+
success: true;
|
|
12
|
+
} | {
|
|
13
|
+
reason: string;
|
|
14
|
+
success: false;
|
|
15
|
+
};
|
|
16
|
+
export declare function initTanStack(args: InitTanStackArgs): Promise<InitTanStackResult>;
|
|
17
|
+
export {};
|
|
18
|
+
//# sourceMappingURL=init-tanstack.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"init-tanstack.d.ts","sourceRoot":"","sources":["../../src/lib/init-tanstack.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAA;AAkBtF,KAAK,gBAAgB,GAAG;IACtB,UAAU,CAAC,EAAE,kBAAkB,CAAA;IAC/B,MAAM,EAAE,MAAM,CAAA;IACd,cAAc,EAAE,cAAc,CAAA;IAC9B,UAAU,EAAE,MAAM,CAAA;IAClB,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB,GAAG,IAAI,CAAC,OAAO,EAAE,SAAS,GAAG,WAAW,GAAG,mBAAmB,CAAC,CAAA;AAEhE,KAAK,kBAAkB,GACnB;IAAE,iBAAiB,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,IAAI,CAAA;CAAE,GAC5C;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,KAAK,CAAA;CAAE,CAAA;AAEtC,wBAAsB,YAAY,CAAC,IAAI,EAAE,gBAAgB,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAqFtF"}
|
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
import path from 'node:path';
|
|
2
|
+
import { fileURLToPath } from 'node:url';
|
|
3
|
+
import { debug } from '../utils/log.js';
|
|
4
|
+
import { DEFAULT_PAYLOAD_VERSION_TAG, resolvePackageVersion } from '../utils/resolvePackageVersion.js';
|
|
5
|
+
import { getDbPackageName } from './ast/adapter-config.js';
|
|
6
|
+
import { preparePackageJson } from './ast/package-json.js';
|
|
7
|
+
import { configurePayloadTsConfig } from './configure-payload-tsconfig.js';
|
|
8
|
+
import { ensurePnpmBuildApprovals } from './configure-pnpm-builds.js';
|
|
9
|
+
import { installPackages } from './install-packages.js';
|
|
10
|
+
import { getTanStackAppDetails } from './tanstack/detect.js';
|
|
11
|
+
import { applyPreparedWrites, prepareTanStackInit } from './tanstack/prepare.js';
|
|
12
|
+
const filename = fileURLToPath(import.meta.url);
|
|
13
|
+
const dirname = path.dirname(filename);
|
|
14
|
+
export async function initTanStack(args) {
|
|
15
|
+
const appDetailsResult = args.appDetails ? {
|
|
16
|
+
details: args.appDetails,
|
|
17
|
+
success: true
|
|
18
|
+
} : await detectAppDetails({
|
|
19
|
+
projectDir: args.projectDir
|
|
20
|
+
});
|
|
21
|
+
if (!appDetailsResult.success) {
|
|
22
|
+
return appDetailsResult;
|
|
23
|
+
}
|
|
24
|
+
const { details: appDetails } = appDetailsResult;
|
|
25
|
+
const templateRoot = args.templateRoot ?? resolveTemplateRoot();
|
|
26
|
+
if (args['--debug']) {
|
|
27
|
+
debug(`Using TanStack template files from: ${templateRoot}`);
|
|
28
|
+
}
|
|
29
|
+
const prepared = await prepareTanStackInit({
|
|
30
|
+
appDetails,
|
|
31
|
+
templateRoot
|
|
32
|
+
});
|
|
33
|
+
if (!prepared.success) {
|
|
34
|
+
return prepared;
|
|
35
|
+
}
|
|
36
|
+
const payloadVersion = await resolvePackageVersion({
|
|
37
|
+
debug: args['--debug'],
|
|
38
|
+
packageName: 'payload',
|
|
39
|
+
versionOrTag: args['--payload-version'] ?? DEFAULT_PAYLOAD_VERSION_TAG
|
|
40
|
+
});
|
|
41
|
+
const requiredDependencies = getRequiredDependencies({
|
|
42
|
+
appDetails,
|
|
43
|
+
dbType: args.dbType,
|
|
44
|
+
payloadVersion
|
|
45
|
+
});
|
|
46
|
+
let writes = prepared.writes;
|
|
47
|
+
if (appDetails.kind === 'router-only' || args['--no-deps']) {
|
|
48
|
+
try {
|
|
49
|
+
const packageJsonWrite = preparePackageJson({
|
|
50
|
+
filePath: path.join(args.projectDir, 'package.json'),
|
|
51
|
+
options: {
|
|
52
|
+
addDependencies: args['--no-deps'] ? requiredDependencies : undefined,
|
|
53
|
+
removeDependencies: appDetails.kind === 'router-only' ? [
|
|
54
|
+
'@tanstack/router-plugin'
|
|
55
|
+
] : undefined
|
|
56
|
+
}
|
|
57
|
+
});
|
|
58
|
+
writes = [
|
|
59
|
+
...writes,
|
|
60
|
+
packageJsonWrite
|
|
61
|
+
];
|
|
62
|
+
} catch (error) {
|
|
63
|
+
return {
|
|
64
|
+
reason: `Could not prepare package.json: ${error instanceof Error ? error.message : 'Unknown error'}`,
|
|
65
|
+
success: false
|
|
66
|
+
};
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
await applyPreparedWrites({
|
|
70
|
+
writes
|
|
71
|
+
});
|
|
72
|
+
if (!args['--no-deps']) {
|
|
73
|
+
const packagesToInstall = Object.entries(requiredDependencies).map(([packageName, version])=>`${packageName}@${version}`);
|
|
74
|
+
await ensurePnpmBuildApprovals({
|
|
75
|
+
packageManager: args.packageManager,
|
|
76
|
+
projectDir: args.projectDir
|
|
77
|
+
});
|
|
78
|
+
let installation;
|
|
79
|
+
try {
|
|
80
|
+
installation = await installPackages({
|
|
81
|
+
packageManager: args.packageManager,
|
|
82
|
+
packagesToInstall,
|
|
83
|
+
projectDir: args.projectDir
|
|
84
|
+
});
|
|
85
|
+
} catch {
|
|
86
|
+
return {
|
|
87
|
+
reason: 'Failed to install dependencies',
|
|
88
|
+
success: false
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
if (!installation.success) {
|
|
92
|
+
return {
|
|
93
|
+
reason: 'Failed to install dependencies',
|
|
94
|
+
success: false
|
|
95
|
+
};
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
const payloadConfigPath = path.join(appDetails.sourceDir, 'payload.config.ts');
|
|
99
|
+
await configurePayloadTsConfig({
|
|
100
|
+
configPath: path.join(args.projectDir, 'tsconfig.json'),
|
|
101
|
+
payloadConfigPath
|
|
102
|
+
});
|
|
103
|
+
return {
|
|
104
|
+
payloadConfigPath,
|
|
105
|
+
success: true
|
|
106
|
+
};
|
|
107
|
+
}
|
|
108
|
+
async function detectAppDetails({ projectDir }) {
|
|
109
|
+
const detection = await getTanStackAppDetails({
|
|
110
|
+
projectDir
|
|
111
|
+
});
|
|
112
|
+
if (!detection.detected) {
|
|
113
|
+
return {
|
|
114
|
+
reason: `Could not detect a TanStack application in ${projectDir}.`,
|
|
115
|
+
success: false
|
|
116
|
+
};
|
|
117
|
+
}
|
|
118
|
+
if (!detection.compatible) {
|
|
119
|
+
return {
|
|
120
|
+
reason: detection.reason,
|
|
121
|
+
success: false
|
|
122
|
+
};
|
|
123
|
+
}
|
|
124
|
+
return {
|
|
125
|
+
details: detection.details,
|
|
126
|
+
success: true
|
|
127
|
+
};
|
|
128
|
+
}
|
|
129
|
+
function getRequiredDependencies({ appDetails, dbType, payloadVersion }) {
|
|
130
|
+
const dependencies = {
|
|
131
|
+
'@payloadcms/plugin-mcp': payloadVersion,
|
|
132
|
+
'@payloadcms/richtext-lexical': payloadVersion,
|
|
133
|
+
'@payloadcms/tanstack-start': payloadVersion,
|
|
134
|
+
'@payloadcms/ui': payloadVersion,
|
|
135
|
+
'@vitejs/plugin-rsc': '^0.5.21',
|
|
136
|
+
[getDbPackageName(dbType)]: payloadVersion,
|
|
137
|
+
graphql: '^16.8.1',
|
|
138
|
+
payload: payloadVersion,
|
|
139
|
+
sharp: '0.34.2'
|
|
140
|
+
};
|
|
141
|
+
if (appDetails.kind === 'router-only') {
|
|
142
|
+
dependencies['@tanstack/react-start'] = '^1.168.26';
|
|
143
|
+
}
|
|
144
|
+
return dependencies;
|
|
145
|
+
}
|
|
146
|
+
function resolveTemplateRoot() {
|
|
147
|
+
return path.basename(path.dirname(dirname)) === 'dist' ? path.resolve(dirname, '../template-tanstack') : path.resolve(dirname, '../../../../templates/blank-tanstack/src');
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
//# sourceMappingURL=init-tanstack.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/lib/init-tanstack.ts"],"sourcesContent":["import path from 'node:path'\nimport { fileURLToPath } from 'node:url'\n\nimport type { CliArgs, DbType, PackageManager, TanStackAppDetails } from '../types.js'\n\nimport { debug } from '../utils/log.js'\nimport {\n DEFAULT_PAYLOAD_VERSION_TAG,\n resolvePackageVersion,\n} from '../utils/resolvePackageVersion.js'\nimport { getDbPackageName } from './ast/adapter-config.js'\nimport { preparePackageJson } from './ast/package-json.js'\nimport { configurePayloadTsConfig } from './configure-payload-tsconfig.js'\nimport { ensurePnpmBuildApprovals } from './configure-pnpm-builds.js'\nimport { installPackages } from './install-packages.js'\nimport { getTanStackAppDetails } from './tanstack/detect.js'\nimport { applyPreparedWrites, prepareTanStackInit } from './tanstack/prepare.js'\n\nconst filename = fileURLToPath(import.meta.url)\nconst dirname = path.dirname(filename)\n\ntype InitTanStackArgs = {\n appDetails?: TanStackAppDetails\n dbType: DbType\n packageManager: PackageManager\n projectDir: string\n templateRoot?: string\n} & Pick<CliArgs, '--debug' | '--no-deps' | '--payload-version'>\n\ntype InitTanStackResult =\n | { payloadConfigPath: string; success: true }\n | { reason: string; success: false }\n\nexport async function initTanStack(args: InitTanStackArgs): Promise<InitTanStackResult> {\n const appDetailsResult = args.appDetails\n ? { details: args.appDetails, success: true as const }\n : await detectAppDetails({ projectDir: args.projectDir })\n\n if (!appDetailsResult.success) {\n return appDetailsResult\n }\n\n const { details: appDetails } = appDetailsResult\n const templateRoot = args.templateRoot ?? resolveTemplateRoot()\n\n if (args['--debug']) {\n debug(`Using TanStack template files from: ${templateRoot}`)\n }\n\n const prepared = await prepareTanStackInit({ appDetails, templateRoot })\n if (!prepared.success) {\n return prepared\n }\n\n const payloadVersion = await resolvePackageVersion({\n debug: args['--debug'],\n packageName: 'payload',\n versionOrTag: args['--payload-version'] ?? DEFAULT_PAYLOAD_VERSION_TAG,\n })\n const requiredDependencies = getRequiredDependencies({\n appDetails,\n dbType: args.dbType,\n payloadVersion,\n })\n let writes = prepared.writes\n if (appDetails.kind === 'router-only' || args['--no-deps']) {\n try {\n const packageJsonWrite = preparePackageJson({\n filePath: path.join(args.projectDir, 'package.json'),\n options: {\n addDependencies: args['--no-deps'] ? requiredDependencies : undefined,\n removeDependencies:\n appDetails.kind === 'router-only' ? ['@tanstack/router-plugin'] : undefined,\n },\n })\n writes = [...writes, packageJsonWrite]\n } catch (error) {\n return {\n reason: `Could not prepare package.json: ${error instanceof Error ? error.message : 'Unknown error'}`,\n success: false,\n }\n }\n }\n\n await applyPreparedWrites({ writes })\n\n if (!args['--no-deps']) {\n const packagesToInstall = Object.entries(requiredDependencies).map(\n ([packageName, version]) => `${packageName}@${version}`,\n )\n\n await ensurePnpmBuildApprovals({\n packageManager: args.packageManager,\n projectDir: args.projectDir,\n })\n\n let installation: { success: boolean }\n try {\n installation = await installPackages({\n packageManager: args.packageManager,\n packagesToInstall,\n projectDir: args.projectDir,\n })\n } catch {\n return { reason: 'Failed to install dependencies', success: false }\n }\n if (!installation.success) {\n return { reason: 'Failed to install dependencies', success: false }\n }\n }\n\n const payloadConfigPath = path.join(appDetails.sourceDir, 'payload.config.ts')\n await configurePayloadTsConfig({\n configPath: path.join(args.projectDir, 'tsconfig.json'),\n payloadConfigPath,\n })\n\n return { payloadConfigPath, success: true }\n}\n\nasync function detectAppDetails({\n projectDir,\n}: {\n projectDir: string\n}): Promise<{ details: TanStackAppDetails; success: true } | { reason: string; success: false }> {\n const detection = await getTanStackAppDetails({ projectDir })\n\n if (!detection.detected) {\n return {\n reason: `Could not detect a TanStack application in ${projectDir}.`,\n success: false,\n }\n }\n\n if (!detection.compatible) {\n return { reason: detection.reason, success: false }\n }\n\n return { details: detection.details, success: true }\n}\n\nfunction getRequiredDependencies({\n appDetails,\n dbType,\n payloadVersion,\n}: {\n appDetails: TanStackAppDetails\n dbType: DbType\n payloadVersion: string\n}): Record<string, string> {\n const dependencies: Record<string, string> = {\n '@payloadcms/plugin-mcp': payloadVersion,\n '@payloadcms/richtext-lexical': payloadVersion,\n '@payloadcms/tanstack-start': payloadVersion,\n '@payloadcms/ui': payloadVersion,\n '@vitejs/plugin-rsc': '^0.5.21',\n [getDbPackageName(dbType)]: payloadVersion,\n graphql: '^16.8.1',\n payload: payloadVersion,\n sharp: '0.34.2',\n }\n\n if (appDetails.kind === 'router-only') {\n dependencies['@tanstack/react-start'] = '^1.168.26'\n }\n\n return dependencies\n}\n\nfunction resolveTemplateRoot(): 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":["path","fileURLToPath","debug","DEFAULT_PAYLOAD_VERSION_TAG","resolvePackageVersion","getDbPackageName","preparePackageJson","configurePayloadTsConfig","ensurePnpmBuildApprovals","installPackages","getTanStackAppDetails","applyPreparedWrites","prepareTanStackInit","filename","url","dirname","initTanStack","args","appDetailsResult","appDetails","details","success","detectAppDetails","projectDir","templateRoot","resolveTemplateRoot","prepared","payloadVersion","packageName","versionOrTag","requiredDependencies","getRequiredDependencies","dbType","writes","kind","packageJsonWrite","filePath","join","options","addDependencies","undefined","removeDependencies","error","reason","Error","message","packagesToInstall","Object","entries","map","version","packageManager","installation","payloadConfigPath","sourceDir","configPath","detection","detected","compatible","dependencies","graphql","payload","sharp","basename","resolve"],"mappings":"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"}
|