create-payload-app 4.0.0-internal.4cbdd50 → 4.0.0-internal.4e1f822
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 +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/configure-pnpm-builds.d.ts +20 -0
- package/dist/lib/configure-pnpm-builds.d.ts.map +1 -0
- package/dist/lib/configure-pnpm-builds.js +100 -0
- package/dist/lib/configure-pnpm-builds.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 +10 -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 +10 -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,456 @@
|
|
|
1
|
+
import { describe, expect, it } from 'vitest';
|
|
2
|
+
import { transformTanStackViteConfig } from './transform-vite-config.js';
|
|
3
|
+
function getAppDetails(kind) {
|
|
4
|
+
return {
|
|
5
|
+
isPayloadInstalled: false,
|
|
6
|
+
kind,
|
|
7
|
+
projectDir: '/project',
|
|
8
|
+
rootRoutePath: '/project/src/routes/__root.tsx',
|
|
9
|
+
routerPath: '/project/src/router.tsx',
|
|
10
|
+
routesDir: '/project/src/routes',
|
|
11
|
+
sourceDir: '/project/src',
|
|
12
|
+
viteConfigPath: '/project/vite.config.ts'
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
function expectSuccessfulTransform(result) {
|
|
16
|
+
expect(result.success).toBe(true);
|
|
17
|
+
if (!result.success) {
|
|
18
|
+
throw new Error(result.reason);
|
|
19
|
+
}
|
|
20
|
+
return result;
|
|
21
|
+
}
|
|
22
|
+
function getWrappedConfig({ imports = `import { withPayload } from '@payloadcms/tanstack-start'
|
|
23
|
+
import { tanstackStart } from '@tanstack/react-start/plugin/vite'
|
|
24
|
+
import viteReact from '@vitejs/plugin-react'
|
|
25
|
+
import rsc from '@vitejs/plugin-rsc'
|
|
26
|
+
import path from 'node:path'
|
|
27
|
+
import { fileURLToPath } from 'node:url'
|
|
28
|
+
import { defineConfig } from 'vite'`, options = `{
|
|
29
|
+
payloadConfigPath: path.resolve(__dirname, 'src', 'payload.config.ts'),
|
|
30
|
+
routesDirectory: 'routes',
|
|
31
|
+
}`, plugins = `[
|
|
32
|
+
rsc(pluginOptions.rsc),
|
|
33
|
+
tanstackStart(pluginOptions.tanstackStart),
|
|
34
|
+
viteReact(pluginOptions.react),
|
|
35
|
+
]` } = {}) {
|
|
36
|
+
return `${imports}
|
|
37
|
+
|
|
38
|
+
const __dirname = path.dirname(fileURLToPath(import.meta.url))
|
|
39
|
+
|
|
40
|
+
export default defineConfig(
|
|
41
|
+
withPayload(
|
|
42
|
+
({ pluginOptions }) => ({ plugins: ${plugins} }),
|
|
43
|
+
${options},
|
|
44
|
+
),
|
|
45
|
+
)
|
|
46
|
+
`;
|
|
47
|
+
}
|
|
48
|
+
describe('transformTanStackViteConfig', ()=>{
|
|
49
|
+
it('should transform the official TanStack Start Vite config shape', ()=>{
|
|
50
|
+
const content = `import { tanstackStart } from '@tanstack/react-start/plugin/vite'
|
|
51
|
+
import viteReact from '@vitejs/plugin-react'
|
|
52
|
+
import { defineConfig } from 'vite'
|
|
53
|
+
|
|
54
|
+
export default defineConfig({
|
|
55
|
+
plugins: [tanstackStart(), viteReact()],
|
|
56
|
+
})
|
|
57
|
+
`;
|
|
58
|
+
const result = expectSuccessfulTransform(transformTanStackViteConfig({
|
|
59
|
+
appDetails: getAppDetails('start'),
|
|
60
|
+
content
|
|
61
|
+
}));
|
|
62
|
+
expect(result.modified).toBe(true);
|
|
63
|
+
expect(result.content).toContain("import { withPayload } from '@payloadcms/tanstack-start'");
|
|
64
|
+
expect(result.content).toContain("import rsc from '@vitejs/plugin-rsc'");
|
|
65
|
+
expect(result.content).toContain('rsc(pluginOptions.rsc)');
|
|
66
|
+
expect(result.content).toContain('tanstackStart(pluginOptions.tanstackStart)');
|
|
67
|
+
expect(result.content).toContain('viteReact(pluginOptions.react)');
|
|
68
|
+
expect(result.content).toContain("routesDirectory: 'routes'");
|
|
69
|
+
expect(result.content).toContain("payloadConfigPath: path.resolve(__dirname, 'src', 'payload.config.ts')");
|
|
70
|
+
});
|
|
71
|
+
it('should convert the official Router-only Vite config shape', ()=>{
|
|
72
|
+
const content = `import { tanstackRouter } from '@tanstack/router-plugin/vite'
|
|
73
|
+
import viteReact from '@vitejs/plugin-react'
|
|
74
|
+
import { defineConfig } from 'vite'
|
|
75
|
+
|
|
76
|
+
export default defineConfig({
|
|
77
|
+
plugins: [
|
|
78
|
+
tanstackRouter({
|
|
79
|
+
target: 'react',
|
|
80
|
+
autoCodeSplitting: true,
|
|
81
|
+
}),
|
|
82
|
+
viteReact(),
|
|
83
|
+
],
|
|
84
|
+
})
|
|
85
|
+
`;
|
|
86
|
+
const result = expectSuccessfulTransform(transformTanStackViteConfig({
|
|
87
|
+
appDetails: getAppDetails('router-only'),
|
|
88
|
+
content
|
|
89
|
+
}));
|
|
90
|
+
expect(result.modified).toBe(true);
|
|
91
|
+
expect(result.content).not.toContain('tanstackRouter');
|
|
92
|
+
expect(result.content).not.toContain('@tanstack/router-plugin');
|
|
93
|
+
expect(result.content).toContain("import { tanstackStart } from '@tanstack/react-start/plugin/vite'");
|
|
94
|
+
expect(result.content).toContain('tanstackStart(pluginOptions.tanstackStart)');
|
|
95
|
+
});
|
|
96
|
+
it('should transform a config variable exported separately', ()=>{
|
|
97
|
+
const content = `import { tanstackStart } from '@tanstack/react-start/plugin/vite'
|
|
98
|
+
import viteReact from '@vitejs/plugin-react'
|
|
99
|
+
import { defineConfig } from 'vite'
|
|
100
|
+
|
|
101
|
+
const config = defineConfig({ plugins: [tanstackStart(), viteReact()] })
|
|
102
|
+
|
|
103
|
+
export default config
|
|
104
|
+
`;
|
|
105
|
+
const result = expectSuccessfulTransform(transformTanStackViteConfig({
|
|
106
|
+
appDetails: getAppDetails('start'),
|
|
107
|
+
content
|
|
108
|
+
}));
|
|
109
|
+
expect(result.content).toContain('const config = defineConfig(\n withPayload(');
|
|
110
|
+
expect(result.content).toContain('export default config');
|
|
111
|
+
});
|
|
112
|
+
it('should preserve original config properties and unrelated plugins', ()=>{
|
|
113
|
+
const content = `import { tanstackStart } from '@tanstack/react-start/plugin/vite'
|
|
114
|
+
import viteReact from '@vitejs/plugin-react'
|
|
115
|
+
import { defineConfig } from 'vite'
|
|
116
|
+
import inspect from 'vite-plugin-inspect'
|
|
117
|
+
import tsconfigPaths from 'vite-tsconfig-paths'
|
|
118
|
+
|
|
119
|
+
export default defineConfig({
|
|
120
|
+
plugins: [tsconfigPaths(), tanstackStart(), viteReact(), inspect()],
|
|
121
|
+
resolve: { alias: { '@': '/src' } },
|
|
122
|
+
server: { port: 4173 },
|
|
123
|
+
})
|
|
124
|
+
`;
|
|
125
|
+
const result = expectSuccessfulTransform(transformTanStackViteConfig({
|
|
126
|
+
appDetails: getAppDetails('start'),
|
|
127
|
+
content
|
|
128
|
+
}));
|
|
129
|
+
expect(result.content).toContain('tsconfigPaths()');
|
|
130
|
+
expect(result.content).toContain('inspect()');
|
|
131
|
+
expect(result.content).toContain("resolve: { alias: { '@': '/src' } }");
|
|
132
|
+
expect(result.content).toContain('server: { port: 4173 }');
|
|
133
|
+
expect(result.content.indexOf('tsconfigPaths()')).toBeLessThan(result.content.indexOf('rsc(pluginOptions.rsc)'));
|
|
134
|
+
expect(result.content.indexOf('viteReact(pluginOptions.react)')).toBeLessThan(result.content.indexOf('inspect()'));
|
|
135
|
+
});
|
|
136
|
+
it('should preserve existing custom TanStack and React plugin options', ()=>{
|
|
137
|
+
const content = `import { tanstackStart } from '@tanstack/react-start/plugin/vite'
|
|
138
|
+
import viteReact from '@vitejs/plugin-react'
|
|
139
|
+
import { defineConfig } from 'vite'
|
|
140
|
+
|
|
141
|
+
export default defineConfig({
|
|
142
|
+
plugins: [
|
|
143
|
+
tanstackStart({ target: 'node-server' }),
|
|
144
|
+
viteReact({ babel: { plugins: ['babel-plugin-react-compiler'] } }),
|
|
145
|
+
],
|
|
146
|
+
})
|
|
147
|
+
`;
|
|
148
|
+
const result = expectSuccessfulTransform(transformTanStackViteConfig({
|
|
149
|
+
appDetails: getAppDetails('start'),
|
|
150
|
+
content
|
|
151
|
+
}));
|
|
152
|
+
expect(result.content).toContain("tanstackStart({ ...pluginOptions.tanstackStart, target: 'node-server' })");
|
|
153
|
+
expect(result.content).toContain("viteReact({ ...pluginOptions.react, babel: { plugins: ['babel-plugin-react-compiler'] } })");
|
|
154
|
+
expect(transformTanStackViteConfig({
|
|
155
|
+
appDetails: getAppDetails('start'),
|
|
156
|
+
content: result.content
|
|
157
|
+
})).toEqual({
|
|
158
|
+
content: result.content,
|
|
159
|
+
modified: false,
|
|
160
|
+
success: true
|
|
161
|
+
});
|
|
162
|
+
});
|
|
163
|
+
it('should preserve an existing __dirname declaration without adding fileURLToPath', ()=>{
|
|
164
|
+
const content = `import { tanstackStart } from '@tanstack/react-start/plugin/vite'
|
|
165
|
+
import viteReact from '@vitejs/plugin-react'
|
|
166
|
+
import path from 'node:path'
|
|
167
|
+
import { defineConfig } from 'vite'
|
|
168
|
+
|
|
169
|
+
const __dirname = '/project'
|
|
170
|
+
|
|
171
|
+
export default defineConfig({ plugins: [tanstackStart(), viteReact()] })
|
|
172
|
+
`;
|
|
173
|
+
const result = expectSuccessfulTransform(transformTanStackViteConfig({
|
|
174
|
+
appDetails: getAppDetails('start'),
|
|
175
|
+
content
|
|
176
|
+
}));
|
|
177
|
+
expect(result.content.match(/const __dirname =/g)).toHaveLength(1);
|
|
178
|
+
expect(result.content).not.toContain('fileURLToPath');
|
|
179
|
+
expect(result.content.match(/from 'node:path'/g)).toHaveLength(1);
|
|
180
|
+
});
|
|
181
|
+
it('should report an already transformed config as unmodified', ()=>{
|
|
182
|
+
const content = `import { tanstackStart } from '@tanstack/react-start/plugin/vite'
|
|
183
|
+
import viteReact from '@vitejs/plugin-react'
|
|
184
|
+
import { defineConfig } from 'vite'
|
|
185
|
+
|
|
186
|
+
export default defineConfig({ plugins: [tanstackStart(), viteReact()] })
|
|
187
|
+
`;
|
|
188
|
+
const firstResult = expectSuccessfulTransform(transformTanStackViteConfig({
|
|
189
|
+
appDetails: getAppDetails('start'),
|
|
190
|
+
content
|
|
191
|
+
}));
|
|
192
|
+
const secondResult = expectSuccessfulTransform(transformTanStackViteConfig({
|
|
193
|
+
appDetails: getAppDetails('start'),
|
|
194
|
+
content: firstResult.content
|
|
195
|
+
}));
|
|
196
|
+
expect(secondResult).toEqual({
|
|
197
|
+
content: firstResult.content,
|
|
198
|
+
modified: false,
|
|
199
|
+
success: true
|
|
200
|
+
});
|
|
201
|
+
});
|
|
202
|
+
it('should reject config object spreads that can override the transformed plugins', ()=>{
|
|
203
|
+
const content = `import { tanstackStart } from '@tanstack/react-start/plugin/vite'
|
|
204
|
+
import viteReact from '@vitejs/plugin-react'
|
|
205
|
+
import { defineConfig } from 'vite'
|
|
206
|
+
|
|
207
|
+
export default defineConfig({
|
|
208
|
+
plugins: [tanstackStart(), viteReact()],
|
|
209
|
+
...sharedConfig,
|
|
210
|
+
})
|
|
211
|
+
`;
|
|
212
|
+
const result = transformTanStackViteConfig({
|
|
213
|
+
appDetails: getAppDetails('start'),
|
|
214
|
+
content
|
|
215
|
+
});
|
|
216
|
+
expect(result).toEqual({
|
|
217
|
+
success: false,
|
|
218
|
+
reason: 'Config object spreads cannot be transformed safely.'
|
|
219
|
+
});
|
|
220
|
+
});
|
|
221
|
+
it.each([
|
|
222
|
+
{
|
|
223
|
+
binding: `const withPayload = (config: unknown) => config`,
|
|
224
|
+
kind: 'start',
|
|
225
|
+
name: 'withPayload'
|
|
226
|
+
},
|
|
227
|
+
{
|
|
228
|
+
binding: `const { withPayload } = pluginFactories`,
|
|
229
|
+
kind: 'start',
|
|
230
|
+
name: 'withPayload'
|
|
231
|
+
},
|
|
232
|
+
{
|
|
233
|
+
binding: `const tanstackStart = () => ({ name: 'other' })`,
|
|
234
|
+
frameworkImport: `import { tanstackRouter } from '@tanstack/router-plugin/vite'`,
|
|
235
|
+
frameworkPlugin: 'tanstackRouter()',
|
|
236
|
+
kind: 'router-only',
|
|
237
|
+
name: 'tanstackStart'
|
|
238
|
+
},
|
|
239
|
+
{
|
|
240
|
+
binding: `const rsc = () => ({ name: 'other' })`,
|
|
241
|
+
kind: 'start',
|
|
242
|
+
name: 'rsc'
|
|
243
|
+
},
|
|
244
|
+
{
|
|
245
|
+
binding: `const path = { resolve: () => '/wrong' }`,
|
|
246
|
+
kind: 'start',
|
|
247
|
+
name: 'path'
|
|
248
|
+
},
|
|
249
|
+
{
|
|
250
|
+
binding: `const fileURLToPath = () => '/wrong'`,
|
|
251
|
+
kind: 'start',
|
|
252
|
+
name: 'fileURLToPath'
|
|
253
|
+
},
|
|
254
|
+
{
|
|
255
|
+
binding: `function __dirname() { return '/wrong' }`,
|
|
256
|
+
kind: 'start',
|
|
257
|
+
name: '__dirname'
|
|
258
|
+
}
|
|
259
|
+
])('should reject an incompatible $name destination binding', ({ binding, frameworkImport = `import { tanstackStart } from '@tanstack/react-start/plugin/vite'`, frameworkPlugin = 'tanstackStart()', kind, name })=>{
|
|
260
|
+
const content = `${frameworkImport}
|
|
261
|
+
import viteReact from '@vitejs/plugin-react'
|
|
262
|
+
import { defineConfig } from 'vite'
|
|
263
|
+
|
|
264
|
+
${binding}
|
|
265
|
+
|
|
266
|
+
export default defineConfig({ plugins: [${frameworkPlugin}, viteReact()] })
|
|
267
|
+
`;
|
|
268
|
+
const result = transformTanStackViteConfig({
|
|
269
|
+
appDetails: getAppDetails(kind),
|
|
270
|
+
content
|
|
271
|
+
});
|
|
272
|
+
expect(result).toEqual({
|
|
273
|
+
success: false,
|
|
274
|
+
reason: `Identifier "${name}" is already bound incompatibly.`
|
|
275
|
+
});
|
|
276
|
+
});
|
|
277
|
+
it('should preserve an aliased React default import', ()=>{
|
|
278
|
+
const content = `import { tanstackStart } from '@tanstack/react-start/plugin/vite'
|
|
279
|
+
import react from '@vitejs/plugin-react'
|
|
280
|
+
import { defineConfig } from 'vite'
|
|
281
|
+
|
|
282
|
+
export default defineConfig({ plugins: [tanstackStart(), react()] })
|
|
283
|
+
`;
|
|
284
|
+
const firstResult = expectSuccessfulTransform(transformTanStackViteConfig({
|
|
285
|
+
appDetails: getAppDetails('start'),
|
|
286
|
+
content
|
|
287
|
+
}));
|
|
288
|
+
const secondResult = expectSuccessfulTransform(transformTanStackViteConfig({
|
|
289
|
+
appDetails: getAppDetails('start'),
|
|
290
|
+
content: firstResult.content
|
|
291
|
+
}));
|
|
292
|
+
expect(firstResult.content).toContain('react(pluginOptions.react)');
|
|
293
|
+
expect(firstResult.content).not.toContain('viteReact(');
|
|
294
|
+
expect(secondResult.modified).toBe(false);
|
|
295
|
+
});
|
|
296
|
+
it.each([
|
|
297
|
+
{
|
|
298
|
+
content: getWrappedConfig({
|
|
299
|
+
plugins: `[
|
|
300
|
+
rsc(pluginOptions.rsc),
|
|
301
|
+
rsc(pluginOptions.rsc),
|
|
302
|
+
tanstackStart(pluginOptions.tanstackStart),
|
|
303
|
+
viteReact(pluginOptions.react),
|
|
304
|
+
]`
|
|
305
|
+
}),
|
|
306
|
+
name: 'duplicate generated plugin calls'
|
|
307
|
+
},
|
|
308
|
+
{
|
|
309
|
+
content: getWrappedConfig({
|
|
310
|
+
plugins: `[
|
|
311
|
+
tanstackStart(pluginOptions.tanstackStart),
|
|
312
|
+
rsc(pluginOptions.rsc),
|
|
313
|
+
viteReact(pluginOptions.react),
|
|
314
|
+
]`
|
|
315
|
+
}),
|
|
316
|
+
name: 'generated plugin calls in the wrong order'
|
|
317
|
+
},
|
|
318
|
+
{
|
|
319
|
+
content: getWrappedConfig({
|
|
320
|
+
plugins: `[
|
|
321
|
+
rsc(pluginOptions.rsc),
|
|
322
|
+
tanstackStart(pluginOptions.tanstackStart, { extra: true }),
|
|
323
|
+
viteReact(pluginOptions.react),
|
|
324
|
+
]`
|
|
325
|
+
}),
|
|
326
|
+
name: 'generated plugin calls with extra arguments'
|
|
327
|
+
},
|
|
328
|
+
{
|
|
329
|
+
content: getWrappedConfig({
|
|
330
|
+
options: `{
|
|
331
|
+
payloadConfigPath: path.resolve(__dirname, 'src', 'payload.config.ts'),
|
|
332
|
+
routesDirectory: 'routes',
|
|
333
|
+
debug: true,
|
|
334
|
+
}`
|
|
335
|
+
}),
|
|
336
|
+
name: 'extra withPayload options'
|
|
337
|
+
},
|
|
338
|
+
{
|
|
339
|
+
content: getWrappedConfig({
|
|
340
|
+
imports: `import { withPayload } from 'not-payload'
|
|
341
|
+
import { tanstackStart } from '@tanstack/react-start/plugin/vite'
|
|
342
|
+
import viteReact from '@vitejs/plugin-react'
|
|
343
|
+
import rsc from '@vitejs/plugin-rsc'
|
|
344
|
+
import path from 'node:path'
|
|
345
|
+
import { fileURLToPath } from 'node:url'
|
|
346
|
+
import { defineConfig } from 'vite'`
|
|
347
|
+
}),
|
|
348
|
+
name: 'withPayload imported from the wrong module'
|
|
349
|
+
},
|
|
350
|
+
{
|
|
351
|
+
content: getWrappedConfig({
|
|
352
|
+
imports: `import { withPayload } from '@payloadcms/tanstack-start'
|
|
353
|
+
import { tanstackStart } from 'not-tanstack-start'
|
|
354
|
+
import viteReact from 'not-vite-react'
|
|
355
|
+
import rsc from 'not-vite-rsc'
|
|
356
|
+
import path from 'not-node-path'
|
|
357
|
+
import { fileURLToPath } from 'not-node-url'
|
|
358
|
+
import { defineConfig } from 'vite'`
|
|
359
|
+
}),
|
|
360
|
+
name: 'generated identifiers imported from the wrong modules'
|
|
361
|
+
}
|
|
362
|
+
])('should reject an existing wrapper with $name', ({ content })=>{
|
|
363
|
+
const result = transformTanStackViteConfig({
|
|
364
|
+
appDetails: getAppDetails('start'),
|
|
365
|
+
content
|
|
366
|
+
});
|
|
367
|
+
expect(result).toEqual({
|
|
368
|
+
success: false,
|
|
369
|
+
reason: 'The existing withPayload() call does not match the supported configuration.'
|
|
370
|
+
});
|
|
371
|
+
});
|
|
372
|
+
it('should reject unrelated plugins interleaved between framework and React calls', ()=>{
|
|
373
|
+
const content = `import { tanstackStart } from '@tanstack/react-start/plugin/vite'
|
|
374
|
+
import viteReact from '@vitejs/plugin-react'
|
|
375
|
+
import { defineConfig } from 'vite'
|
|
376
|
+
import inspect from 'vite-plugin-inspect'
|
|
377
|
+
|
|
378
|
+
export default defineConfig({
|
|
379
|
+
plugins: [tanstackStart(), inspect(), viteReact()],
|
|
380
|
+
})
|
|
381
|
+
`;
|
|
382
|
+
const result = transformTanStackViteConfig({
|
|
383
|
+
appDetails: getAppDetails('start'),
|
|
384
|
+
content
|
|
385
|
+
});
|
|
386
|
+
expect(result).toEqual({
|
|
387
|
+
success: false,
|
|
388
|
+
reason: 'Framework and React plugin calls must be adjacent and ordered.'
|
|
389
|
+
});
|
|
390
|
+
});
|
|
391
|
+
it.each([
|
|
392
|
+
{
|
|
393
|
+
content: `export default defineConfig(() => ({ plugins: [tanstackStart(), viteReact()] }))`,
|
|
394
|
+
expectedReason: 'defineConfig() must receive an object literal.',
|
|
395
|
+
name: 'a callback config'
|
|
396
|
+
},
|
|
397
|
+
{
|
|
398
|
+
content: `export default defineConfig({ server: { port: 3000 } })`,
|
|
399
|
+
expectedReason: 'The Vite config must contain a plugins array.',
|
|
400
|
+
name: 'a missing plugins array'
|
|
401
|
+
},
|
|
402
|
+
{
|
|
403
|
+
content: `export default defineConfig({ plugins: [...plugins, tanstackStart(), viteReact()] })`,
|
|
404
|
+
expectedReason: 'Plugin array spreads cannot be transformed safely.',
|
|
405
|
+
name: 'a spread plugin element'
|
|
406
|
+
},
|
|
407
|
+
{
|
|
408
|
+
content: `import { tanstackStart } from '@tanstack/react-start/plugin/vite'
|
|
409
|
+
import viteReact from '@vitejs/plugin-react'
|
|
410
|
+
|
|
411
|
+
export default defineConfig({ plugins: [tanstackStart(), tanstackStart(), viteReact()] })`,
|
|
412
|
+
expectedReason: 'Expected exactly one TanStack framework plugin call.',
|
|
413
|
+
name: 'multiple framework calls'
|
|
414
|
+
},
|
|
415
|
+
{
|
|
416
|
+
content: `import { tanstackStart } from '@tanstack/react-start/plugin/vite'
|
|
417
|
+
import viteReact from '@vitejs/plugin-react'
|
|
418
|
+
|
|
419
|
+
export default defineConfig({ plugins: [tanstackStart(), viteReact(), viteReact()] })`,
|
|
420
|
+
expectedReason: 'Expected exactly one React plugin call.',
|
|
421
|
+
name: 'multiple React calls'
|
|
422
|
+
},
|
|
423
|
+
{
|
|
424
|
+
content: `defineConfig({ plugins: [] })
|
|
425
|
+
export default defineConfig({ plugins: [] })`,
|
|
426
|
+
expectedReason: 'Expected exactly one defineConfig() call.',
|
|
427
|
+
name: 'multiple defineConfig calls'
|
|
428
|
+
}
|
|
429
|
+
])('should reject $name', ({ content, expectedReason })=>{
|
|
430
|
+
const result = transformTanStackViteConfig({
|
|
431
|
+
appDetails: getAppDetails('start'),
|
|
432
|
+
content
|
|
433
|
+
});
|
|
434
|
+
expect(result).toEqual({
|
|
435
|
+
success: false,
|
|
436
|
+
reason: expectedReason
|
|
437
|
+
});
|
|
438
|
+
});
|
|
439
|
+
it('should reject an incompatible existing withPayload call', ()=>{
|
|
440
|
+
const content = `import { withPayload } from '@payloadcms/tanstack-start'
|
|
441
|
+
import { defineConfig } from 'vite'
|
|
442
|
+
|
|
443
|
+
export default defineConfig(withPayload({ plugins: [] }))
|
|
444
|
+
`;
|
|
445
|
+
const result = transformTanStackViteConfig({
|
|
446
|
+
appDetails: getAppDetails('start'),
|
|
447
|
+
content
|
|
448
|
+
});
|
|
449
|
+
expect(result).toEqual({
|
|
450
|
+
success: false,
|
|
451
|
+
reason: 'The existing withPayload() call does not match the supported configuration.'
|
|
452
|
+
});
|
|
453
|
+
});
|
|
454
|
+
});
|
|
455
|
+
|
|
456
|
+
//# sourceMappingURL=transform-vite-config.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/lib/tanstack/transform-vite-config.spec.ts"],"sourcesContent":["import { describe, expect, it } from 'vitest'\n\nimport type { TanStackAppDetails } from '../../types.js'\n\nimport { transformTanStackViteConfig } from './transform-vite-config.js'\n\nfunction getAppDetails(kind: TanStackAppDetails['kind']): TanStackAppDetails {\n return {\n isPayloadInstalled: false,\n kind,\n projectDir: '/project',\n rootRoutePath: '/project/src/routes/__root.tsx',\n routerPath: '/project/src/router.tsx',\n routesDir: '/project/src/routes',\n sourceDir: '/project/src',\n viteConfigPath: '/project/vite.config.ts',\n }\n}\n\nfunction expectSuccessfulTransform(result: ReturnType<typeof transformTanStackViteConfig>) {\n expect(result.success).toBe(true)\n\n if (!result.success) {\n throw new Error(result.reason)\n }\n\n return result\n}\n\nfunction getWrappedConfig({\n imports = `import { withPayload } from '@payloadcms/tanstack-start'\nimport { tanstackStart } from '@tanstack/react-start/plugin/vite'\nimport viteReact from '@vitejs/plugin-react'\nimport rsc from '@vitejs/plugin-rsc'\nimport path from 'node:path'\nimport { fileURLToPath } from 'node:url'\nimport { defineConfig } from 'vite'`,\n options = `{\n payloadConfigPath: path.resolve(__dirname, 'src', 'payload.config.ts'),\n routesDirectory: 'routes',\n }`,\n plugins = `[\n rsc(pluginOptions.rsc),\n tanstackStart(pluginOptions.tanstackStart),\n viteReact(pluginOptions.react),\n ]`,\n}: {\n imports?: string\n options?: string\n plugins?: string\n} = {}) {\n return `${imports}\n\nconst __dirname = path.dirname(fileURLToPath(import.meta.url))\n\nexport default defineConfig(\n withPayload(\n ({ pluginOptions }) => ({ plugins: ${plugins} }),\n ${options},\n ),\n)\n`\n}\n\ndescribe('transformTanStackViteConfig', () => {\n it('should transform the official TanStack Start Vite config shape', () => {\n const content = `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\n const result = expectSuccessfulTransform(\n transformTanStackViteConfig({ appDetails: getAppDetails('start'), content }),\n )\n\n expect(result.modified).toBe(true)\n expect(result.content).toContain(\"import { withPayload } from '@payloadcms/tanstack-start'\")\n expect(result.content).toContain(\"import rsc from '@vitejs/plugin-rsc'\")\n expect(result.content).toContain('rsc(pluginOptions.rsc)')\n expect(result.content).toContain('tanstackStart(pluginOptions.tanstackStart)')\n expect(result.content).toContain('viteReact(pluginOptions.react)')\n expect(result.content).toContain(\"routesDirectory: 'routes'\")\n expect(result.content).toContain(\n \"payloadConfigPath: path.resolve(__dirname, 'src', 'payload.config.ts')\",\n )\n })\n\n it('should convert the official Router-only Vite config shape', () => {\n const content = `import { tanstackRouter } from '@tanstack/router-plugin/vite'\nimport viteReact from '@vitejs/plugin-react'\nimport { defineConfig } from 'vite'\n\nexport default defineConfig({\n plugins: [\n tanstackRouter({\n target: 'react',\n autoCodeSplitting: true,\n }),\n viteReact(),\n ],\n})\n`\n\n const result = expectSuccessfulTransform(\n transformTanStackViteConfig({ appDetails: getAppDetails('router-only'), content }),\n )\n\n expect(result.modified).toBe(true)\n expect(result.content).not.toContain('tanstackRouter')\n expect(result.content).not.toContain('@tanstack/router-plugin')\n expect(result.content).toContain(\n \"import { tanstackStart } from '@tanstack/react-start/plugin/vite'\",\n )\n expect(result.content).toContain('tanstackStart(pluginOptions.tanstackStart)')\n })\n\n it('should transform a config variable exported separately', () => {\n const content = `import { tanstackStart } from '@tanstack/react-start/plugin/vite'\nimport viteReact from '@vitejs/plugin-react'\nimport { defineConfig } from 'vite'\n\nconst config = defineConfig({ plugins: [tanstackStart(), viteReact()] })\n\nexport default config\n`\n\n const result = expectSuccessfulTransform(\n transformTanStackViteConfig({ appDetails: getAppDetails('start'), content }),\n )\n\n expect(result.content).toContain('const config = defineConfig(\\n withPayload(')\n expect(result.content).toContain('export default config')\n })\n\n it('should preserve original config properties and unrelated plugins', () => {\n const content = `import { tanstackStart } from '@tanstack/react-start/plugin/vite'\nimport viteReact from '@vitejs/plugin-react'\nimport { defineConfig } from 'vite'\nimport inspect from 'vite-plugin-inspect'\nimport tsconfigPaths from 'vite-tsconfig-paths'\n\nexport default defineConfig({\n plugins: [tsconfigPaths(), tanstackStart(), viteReact(), inspect()],\n resolve: { alias: { '@': '/src' } },\n server: { port: 4173 },\n})\n`\n\n const result = expectSuccessfulTransform(\n transformTanStackViteConfig({ appDetails: getAppDetails('start'), content }),\n )\n\n expect(result.content).toContain('tsconfigPaths()')\n expect(result.content).toContain('inspect()')\n expect(result.content).toContain(\"resolve: { alias: { '@': '/src' } }\")\n expect(result.content).toContain('server: { port: 4173 }')\n expect(result.content.indexOf('tsconfigPaths()')).toBeLessThan(\n result.content.indexOf('rsc(pluginOptions.rsc)'),\n )\n expect(result.content.indexOf('viteReact(pluginOptions.react)')).toBeLessThan(\n result.content.indexOf('inspect()'),\n )\n })\n\n it('should preserve existing custom TanStack and React plugin options', () => {\n const content = `import { tanstackStart } from '@tanstack/react-start/plugin/vite'\nimport viteReact from '@vitejs/plugin-react'\nimport { defineConfig } from 'vite'\n\nexport default defineConfig({\n plugins: [\n tanstackStart({ target: 'node-server' }),\n viteReact({ babel: { plugins: ['babel-plugin-react-compiler'] } }),\n ],\n})\n`\n\n const result = expectSuccessfulTransform(\n transformTanStackViteConfig({ appDetails: getAppDetails('start'), content }),\n )\n\n expect(result.content).toContain(\n \"tanstackStart({ ...pluginOptions.tanstackStart, target: 'node-server' })\",\n )\n expect(result.content).toContain(\n \"viteReact({ ...pluginOptions.react, babel: { plugins: ['babel-plugin-react-compiler'] } })\",\n )\n\n expect(\n transformTanStackViteConfig({\n appDetails: getAppDetails('start'),\n content: result.content,\n }),\n ).toEqual({ content: result.content, modified: false, success: true })\n })\n\n it('should preserve an existing __dirname declaration without adding fileURLToPath', () => {\n const content = `import { tanstackStart } from '@tanstack/react-start/plugin/vite'\nimport viteReact from '@vitejs/plugin-react'\nimport path from 'node:path'\nimport { defineConfig } from 'vite'\n\nconst __dirname = '/project'\n\nexport default defineConfig({ plugins: [tanstackStart(), viteReact()] })\n`\n\n const result = expectSuccessfulTransform(\n transformTanStackViteConfig({ appDetails: getAppDetails('start'), content }),\n )\n\n expect(result.content.match(/const __dirname =/g)).toHaveLength(1)\n expect(result.content).not.toContain('fileURLToPath')\n expect(result.content.match(/from 'node:path'/g)).toHaveLength(1)\n })\n\n it('should report an already transformed config as unmodified', () => {\n const content = `import { tanstackStart } from '@tanstack/react-start/plugin/vite'\nimport viteReact from '@vitejs/plugin-react'\nimport { defineConfig } from 'vite'\n\nexport default defineConfig({ plugins: [tanstackStart(), viteReact()] })\n`\n const firstResult = expectSuccessfulTransform(\n transformTanStackViteConfig({ appDetails: getAppDetails('start'), content }),\n )\n const secondResult = expectSuccessfulTransform(\n transformTanStackViteConfig({\n appDetails: getAppDetails('start'),\n content: firstResult.content,\n }),\n )\n\n expect(secondResult).toEqual({ content: firstResult.content, modified: false, success: true })\n })\n\n it('should reject config object spreads that can override the transformed plugins', () => {\n const content = `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 ...sharedConfig,\n})\n`\n\n const result = transformTanStackViteConfig({ appDetails: getAppDetails('start'), content })\n\n expect(result).toEqual({\n success: false,\n reason: 'Config object spreads cannot be transformed safely.',\n })\n })\n\n it.each([\n {\n binding: `const withPayload = (config: unknown) => config`,\n kind: 'start' as const,\n name: 'withPayload',\n },\n {\n binding: `const { withPayload } = pluginFactories`,\n kind: 'start' as const,\n name: 'withPayload',\n },\n {\n binding: `const tanstackStart = () => ({ name: 'other' })`,\n frameworkImport: `import { tanstackRouter } from '@tanstack/router-plugin/vite'`,\n frameworkPlugin: 'tanstackRouter()',\n kind: 'router-only' as const,\n name: 'tanstackStart',\n },\n {\n binding: `const rsc = () => ({ name: 'other' })`,\n kind: 'start' as const,\n name: 'rsc',\n },\n {\n binding: `const path = { resolve: () => '/wrong' }`,\n kind: 'start' as const,\n name: 'path',\n },\n {\n binding: `const fileURLToPath = () => '/wrong'`,\n kind: 'start' as const,\n name: 'fileURLToPath',\n },\n {\n binding: `function __dirname() { return '/wrong' }`,\n kind: 'start' as const,\n name: '__dirname',\n },\n ])(\n 'should reject an incompatible $name destination binding',\n ({\n binding,\n frameworkImport = `import { tanstackStart } from '@tanstack/react-start/plugin/vite'`,\n frameworkPlugin = 'tanstackStart()',\n kind,\n name,\n }) => {\n const content = `${frameworkImport}\nimport viteReact from '@vitejs/plugin-react'\nimport { defineConfig } from 'vite'\n\n${binding}\n\nexport default defineConfig({ plugins: [${frameworkPlugin}, viteReact()] })\n`\n\n const result = transformTanStackViteConfig({ appDetails: getAppDetails(kind), content })\n\n expect(result).toEqual({\n success: false,\n reason: `Identifier \"${name}\" is already bound incompatibly.`,\n })\n },\n )\n\n it('should preserve an aliased React default import', () => {\n const content = `import { tanstackStart } from '@tanstack/react-start/plugin/vite'\nimport react from '@vitejs/plugin-react'\nimport { defineConfig } from 'vite'\n\nexport default defineConfig({ plugins: [tanstackStart(), react()] })\n`\n\n const firstResult = expectSuccessfulTransform(\n transformTanStackViteConfig({ appDetails: getAppDetails('start'), content }),\n )\n const secondResult = expectSuccessfulTransform(\n transformTanStackViteConfig({\n appDetails: getAppDetails('start'),\n content: firstResult.content,\n }),\n )\n\n expect(firstResult.content).toContain('react(pluginOptions.react)')\n expect(firstResult.content).not.toContain('viteReact(')\n expect(secondResult.modified).toBe(false)\n })\n\n it.each([\n {\n content: getWrappedConfig({\n plugins: `[\n rsc(pluginOptions.rsc),\n rsc(pluginOptions.rsc),\n tanstackStart(pluginOptions.tanstackStart),\n viteReact(pluginOptions.react),\n ]`,\n }),\n name: 'duplicate generated plugin calls',\n },\n {\n content: getWrappedConfig({\n plugins: `[\n tanstackStart(pluginOptions.tanstackStart),\n rsc(pluginOptions.rsc),\n viteReact(pluginOptions.react),\n ]`,\n }),\n name: 'generated plugin calls in the wrong order',\n },\n {\n content: getWrappedConfig({\n plugins: `[\n rsc(pluginOptions.rsc),\n tanstackStart(pluginOptions.tanstackStart, { extra: true }),\n viteReact(pluginOptions.react),\n ]`,\n }),\n name: 'generated plugin calls with extra arguments',\n },\n {\n content: getWrappedConfig({\n options: `{\n payloadConfigPath: path.resolve(__dirname, 'src', 'payload.config.ts'),\n routesDirectory: 'routes',\n debug: true,\n }`,\n }),\n name: 'extra withPayload options',\n },\n {\n content: getWrappedConfig({\n imports: `import { withPayload } from 'not-payload'\nimport { tanstackStart } from '@tanstack/react-start/plugin/vite'\nimport viteReact from '@vitejs/plugin-react'\nimport rsc from '@vitejs/plugin-rsc'\nimport path from 'node:path'\nimport { fileURLToPath } from 'node:url'\nimport { defineConfig } from 'vite'`,\n }),\n name: 'withPayload imported from the wrong module',\n },\n {\n content: getWrappedConfig({\n imports: `import { withPayload } from '@payloadcms/tanstack-start'\nimport { tanstackStart } from 'not-tanstack-start'\nimport viteReact from 'not-vite-react'\nimport rsc from 'not-vite-rsc'\nimport path from 'not-node-path'\nimport { fileURLToPath } from 'not-node-url'\nimport { defineConfig } from 'vite'`,\n }),\n name: 'generated identifiers imported from the wrong modules',\n },\n ])('should reject an existing wrapper with $name', ({ content }) => {\n const result = transformTanStackViteConfig({ appDetails: getAppDetails('start'), content })\n\n expect(result).toEqual({\n success: false,\n reason: 'The existing withPayload() call does not match the supported configuration.',\n })\n })\n\n it('should reject unrelated plugins interleaved between framework and React calls', () => {\n const content = `import { tanstackStart } from '@tanstack/react-start/plugin/vite'\nimport viteReact from '@vitejs/plugin-react'\nimport { defineConfig } from 'vite'\nimport inspect from 'vite-plugin-inspect'\n\nexport default defineConfig({\n plugins: [tanstackStart(), inspect(), viteReact()],\n})\n`\n\n const result = transformTanStackViteConfig({ appDetails: getAppDetails('start'), content })\n\n expect(result).toEqual({\n success: false,\n reason: 'Framework and React plugin calls must be adjacent and ordered.',\n })\n })\n\n it.each([\n {\n content: `export default defineConfig(() => ({ plugins: [tanstackStart(), viteReact()] }))`,\n expectedReason: 'defineConfig() must receive an object literal.',\n name: 'a callback config',\n },\n {\n content: `export default defineConfig({ server: { port: 3000 } })`,\n expectedReason: 'The Vite config must contain a plugins array.',\n name: 'a missing plugins array',\n },\n {\n content: `export default defineConfig({ plugins: [...plugins, tanstackStart(), viteReact()] })`,\n expectedReason: 'Plugin array spreads cannot be transformed safely.',\n name: 'a spread plugin element',\n },\n {\n content: `import { tanstackStart } from '@tanstack/react-start/plugin/vite'\nimport viteReact from '@vitejs/plugin-react'\n\nexport default defineConfig({ plugins: [tanstackStart(), tanstackStart(), viteReact()] })`,\n expectedReason: 'Expected exactly one TanStack framework plugin call.',\n name: 'multiple framework calls',\n },\n {\n content: `import { tanstackStart } from '@tanstack/react-start/plugin/vite'\nimport viteReact from '@vitejs/plugin-react'\n\nexport default defineConfig({ plugins: [tanstackStart(), viteReact(), viteReact()] })`,\n expectedReason: 'Expected exactly one React plugin call.',\n name: 'multiple React calls',\n },\n {\n content: `defineConfig({ plugins: [] })\nexport default defineConfig({ plugins: [] })`,\n expectedReason: 'Expected exactly one defineConfig() call.',\n name: 'multiple defineConfig calls',\n },\n ])('should reject $name', ({ content, expectedReason }) => {\n const result = transformTanStackViteConfig({ appDetails: getAppDetails('start'), content })\n\n expect(result).toEqual({ success: false, reason: expectedReason })\n })\n\n it('should reject an incompatible existing withPayload call', () => {\n const content = `import { withPayload } from '@payloadcms/tanstack-start'\nimport { defineConfig } from 'vite'\n\nexport default defineConfig(withPayload({ plugins: [] }))\n`\n\n const result = transformTanStackViteConfig({ appDetails: getAppDetails('start'), content })\n\n expect(result).toEqual({\n success: false,\n reason: 'The existing withPayload() call does not match the supported configuration.',\n })\n })\n})\n"],"names":["describe","expect","it","transformTanStackViteConfig","getAppDetails","kind","isPayloadInstalled","projectDir","rootRoutePath","routerPath","routesDir","sourceDir","viteConfigPath","expectSuccessfulTransform","result","success","toBe","Error","reason","getWrappedConfig","imports","options","plugins","content","appDetails","modified","toContain","not","indexOf","toBeLessThan","toEqual","match","toHaveLength","firstResult","secondResult","each","binding","name","frameworkImport","frameworkPlugin","expectedReason"],"mappings":"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"}
|
|
@@ -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"}
|