@tanstack/create 0.59.4 → 0.61.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.
Files changed (103) hide show
  1. package/CHANGELOG.md +147 -0
  2. package/dist/create-app.js +7 -5
  3. package/dist/file-helpers.js +13 -1
  4. package/dist/frameworks/react/add-ons/ai/info.json +0 -5
  5. package/dist/frameworks/react/add-ons/ai/package.json +0 -1
  6. package/dist/frameworks/{solid/add-ons/better-auth/README.md → react/add-ons/better-auth/README.md.ejs} +2 -2
  7. package/dist/frameworks/react/add-ons/better-auth/assets/_dot_env.local.append.ejs +3 -0
  8. package/dist/frameworks/react/add-ons/better-auth/assets/src/integrations/better-auth/header-user.tsx +3 -1
  9. package/dist/frameworks/react/add-ons/better-auth/assets/src/routes/demo/better-auth.tsx +3 -1
  10. package/dist/frameworks/react/add-ons/convex/README.md.ejs +4 -0
  11. package/dist/frameworks/react/add-ons/drizzle/assets/src/routes/demo/{drizzle.tsx → drizzle.tsx.ejs} +3 -3
  12. package/dist/frameworks/react/add-ons/neon/assets/_dot_env.example.append +2 -2
  13. package/dist/frameworks/react/add-ons/neon/assets/neon-vite-plugin.ts +1 -1
  14. package/dist/frameworks/react/add-ons/neon/assets/src/db.ts +2 -2
  15. package/dist/frameworks/react/add-ons/posthog/README.md +9 -0
  16. package/dist/frameworks/react/add-ons/posthog/assets/_dot_env.local.append +4 -0
  17. package/dist/frameworks/react/add-ons/posthog/assets/src/integrations/posthog/provider.tsx +20 -0
  18. package/dist/frameworks/react/add-ons/posthog/assets/src/routes/demo/posthog.tsx +93 -0
  19. package/dist/frameworks/react/add-ons/posthog/files.json +5 -0
  20. package/dist/frameworks/react/add-ons/posthog/info.json +28 -0
  21. package/dist/frameworks/react/add-ons/posthog/package.json +6 -0
  22. package/dist/frameworks/react/add-ons/prisma/assets/src/routes/demo/{prisma.tsx → prisma.tsx.ejs} +3 -3
  23. package/dist/frameworks/react/add-ons/prisma/package.json.ejs +1 -1
  24. package/dist/frameworks/react/add-ons/sentry/package.json +1 -1
  25. package/dist/frameworks/react/add-ons/tanstack-query/info.json +1 -1
  26. package/dist/frameworks/react/hosts/nitro/info.json +1 -1
  27. package/dist/frameworks/react/hosts/railway/info.json +1 -1
  28. package/dist/frameworks/react/project/base/README.md.ejs +1 -1
  29. package/dist/frameworks/react/project/base/package.json +1 -1
  30. package/dist/frameworks/react/project/base/vite.config.ts.ejs +1 -1
  31. package/dist/frameworks/{react/add-ons/better-auth/README.md → solid/add-ons/better-auth/README.md.ejs} +2 -2
  32. package/dist/frameworks/solid/add-ons/better-auth/assets/_dot_env.local.append.ejs +3 -0
  33. package/dist/frameworks/solid/add-ons/better-auth/assets/src/integrations/better-auth/header-user.tsx +3 -1
  34. package/dist/frameworks/solid/add-ons/better-auth/assets/src/routes/demo.better-auth.tsx +3 -1
  35. package/dist/frameworks/solid/add-ons/convex/README.md.ejs +4 -0
  36. package/{src/frameworks/solid/add-ons/solid-ui/README.md → dist/frameworks/solid/add-ons/solid-ui/README.md.ejs} +1 -1
  37. package/dist/frameworks/solid/add-ons/solid-ui/info.json +1 -5
  38. package/dist/frameworks/solid/project/base/README.md.ejs +1 -1
  39. package/dist/frameworks.js +6 -0
  40. package/dist/package-manager.js +29 -0
  41. package/dist/template-file.js +8 -1
  42. package/dist/types/custom-add-ons/add-on.d.ts +2 -1
  43. package/dist/types/package-manager.d.ts +7 -0
  44. package/dist/types/types.d.ts +21 -15
  45. package/dist/types/utils.d.ts +2 -0
  46. package/dist/types.js +2 -0
  47. package/dist/utils.js +6 -0
  48. package/package.json +1 -1
  49. package/src/create-app.ts +9 -6
  50. package/src/file-helpers.ts +12 -1
  51. package/src/frameworks/react/add-ons/ai/info.json +0 -5
  52. package/src/frameworks/react/add-ons/ai/package.json +0 -1
  53. package/src/frameworks/react/add-ons/better-auth/{README.md → README.md.ejs} +2 -2
  54. package/src/frameworks/react/add-ons/better-auth/assets/_dot_env.local.append.ejs +3 -0
  55. package/src/frameworks/react/add-ons/better-auth/assets/src/integrations/better-auth/header-user.tsx +3 -1
  56. package/src/frameworks/react/add-ons/better-auth/assets/src/routes/demo/better-auth.tsx +3 -1
  57. package/src/frameworks/react/add-ons/convex/README.md.ejs +4 -0
  58. package/src/frameworks/react/add-ons/drizzle/assets/src/routes/demo/{drizzle.tsx → drizzle.tsx.ejs} +3 -3
  59. package/src/frameworks/react/add-ons/neon/assets/_dot_env.example.append +2 -2
  60. package/src/frameworks/react/add-ons/neon/assets/neon-vite-plugin.ts +1 -1
  61. package/src/frameworks/react/add-ons/neon/assets/src/db.ts +2 -2
  62. package/src/frameworks/react/add-ons/posthog/README.md +9 -0
  63. package/src/frameworks/react/add-ons/posthog/assets/_dot_env.local.append +4 -0
  64. package/src/frameworks/react/add-ons/posthog/assets/src/integrations/posthog/provider.tsx +20 -0
  65. package/src/frameworks/react/add-ons/posthog/assets/src/routes/demo/posthog.tsx +93 -0
  66. package/src/frameworks/react/add-ons/posthog/files.json +5 -0
  67. package/src/frameworks/react/add-ons/posthog/info.json +28 -0
  68. package/src/frameworks/react/add-ons/posthog/package.json +6 -0
  69. package/src/frameworks/react/add-ons/prisma/assets/src/routes/demo/{prisma.tsx → prisma.tsx.ejs} +3 -3
  70. package/src/frameworks/react/add-ons/prisma/package.json.ejs +1 -1
  71. package/src/frameworks/react/add-ons/sentry/package.json +1 -1
  72. package/src/frameworks/react/add-ons/tanstack-query/info.json +1 -1
  73. package/src/frameworks/react/hosts/nitro/info.json +1 -1
  74. package/src/frameworks/react/hosts/railway/info.json +1 -1
  75. package/src/frameworks/react/project/base/README.md.ejs +1 -1
  76. package/src/frameworks/react/project/base/package.json +1 -1
  77. package/src/frameworks/react/project/base/vite.config.ts.ejs +1 -1
  78. package/src/frameworks/solid/add-ons/better-auth/{README.md → README.md.ejs} +2 -2
  79. package/src/frameworks/solid/add-ons/better-auth/assets/_dot_env.local.append.ejs +3 -0
  80. package/src/frameworks/solid/add-ons/better-auth/assets/src/integrations/better-auth/header-user.tsx +3 -1
  81. package/src/frameworks/solid/add-ons/better-auth/assets/src/routes/demo.better-auth.tsx +3 -1
  82. package/src/frameworks/solid/add-ons/convex/README.md.ejs +4 -0
  83. package/{dist/frameworks/solid/add-ons/solid-ui/README.md → src/frameworks/solid/add-ons/solid-ui/README.md.ejs} +1 -1
  84. package/src/frameworks/solid/add-ons/solid-ui/info.json +1 -5
  85. package/src/frameworks/solid/project/base/README.md.ejs +1 -1
  86. package/src/frameworks.ts +8 -0
  87. package/src/package-manager.ts +37 -0
  88. package/src/template-file.ts +14 -0
  89. package/src/types.ts +2 -0
  90. package/src/utils.ts +8 -0
  91. package/tests/file-helper.test.ts +6 -0
  92. package/tests/package-manager.test.ts +159 -0
  93. package/tests/template-file.test.ts +13 -0
  94. package/dist/frameworks/react/add-ons/ai/assets/src/lib/ai-devtools.tsx +0 -3
  95. package/dist/frameworks/react/add-ons/better-auth/assets/_dot_env.local.append +0 -3
  96. package/dist/frameworks/react/add-ons/convex/README.md +0 -4
  97. package/dist/frameworks/solid/add-ons/better-auth/assets/_dot_env.local.append +0 -3
  98. package/dist/frameworks/solid/add-ons/convex/README.md +0 -4
  99. package/src/frameworks/react/add-ons/ai/assets/src/lib/ai-devtools.tsx +0 -3
  100. package/src/frameworks/react/add-ons/better-auth/assets/_dot_env.local.append +0 -3
  101. package/src/frameworks/react/add-ons/convex/README.md +0 -4
  102. package/src/frameworks/solid/add-ons/better-auth/assets/_dot_env.local.append +0 -3
  103. package/src/frameworks/solid/add-ons/convex/README.md +0 -4
@@ -4,6 +4,7 @@ import {
4
4
  getPackageManagerExecuteCommand,
5
5
  getPackageManagerInstallCommand,
6
6
  getPackageManagerScriptCommand,
7
+ translateExecuteCommand,
7
8
  } from '../src/package-manager.js'
8
9
  import { formatCommand } from '../src/utils.js'
9
10
 
@@ -152,3 +153,161 @@ describe('getPackageManagerInstallCommand', () => {
152
153
  ).toBe('npm install vitest -D')
153
154
  })
154
155
  })
156
+
157
+ describe('translateExecuteCommand', () => {
158
+ it('should translate npx to bunx for bun', () => {
159
+ expect(
160
+ formatCommand(
161
+ translateExecuteCommand('bun', {
162
+ command: 'npx',
163
+ args: ['shadcn', 'add', 'button'],
164
+ }),
165
+ ),
166
+ ).toBe('bunx --bun shadcn add button')
167
+ })
168
+ it('should translate npx to pnpm dlx for pnpm', () => {
169
+ expect(
170
+ formatCommand(
171
+ translateExecuteCommand('pnpm', {
172
+ command: 'npx',
173
+ args: ['shadcn', 'add', 'button'],
174
+ }),
175
+ ),
176
+ ).toBe('pnpm dlx shadcn add button')
177
+ })
178
+ it('should translate npx to yarn dlx for yarn', () => {
179
+ expect(
180
+ formatCommand(
181
+ translateExecuteCommand('yarn', {
182
+ command: 'npx',
183
+ args: ['shadcn', 'add', 'button'],
184
+ }),
185
+ ),
186
+ ).toBe('yarn dlx shadcn add button')
187
+ })
188
+ it('should translate npx to deno run for deno', () => {
189
+ expect(
190
+ formatCommand(
191
+ translateExecuteCommand('deno', {
192
+ command: 'npx',
193
+ args: ['shadcn', 'add', 'button'],
194
+ }),
195
+ ),
196
+ ).toBe('deno run npm:shadcn add button')
197
+ })
198
+ it('should keep npx -y for npm', () => {
199
+ expect(
200
+ formatCommand(
201
+ translateExecuteCommand('npm', {
202
+ command: 'npx',
203
+ args: ['shadcn', 'add', 'button'],
204
+ }),
205
+ ),
206
+ ).toBe('npx -y shadcn add button')
207
+ })
208
+ it('should pass through non-npx commands unchanged', () => {
209
+ expect(
210
+ formatCommand(
211
+ translateExecuteCommand('bun', {
212
+ command: 'node',
213
+ args: ['script.js'],
214
+ }),
215
+ ),
216
+ ).toBe('node script.js')
217
+ })
218
+ it('should handle missing args gracefully', () => {
219
+ expect(
220
+ formatCommand(translateExecuteCommand('bun', { command: 'npx' })),
221
+ ).toBe('npx')
222
+ })
223
+ it('should strip -y flag from npx input', () => {
224
+ expect(
225
+ formatCommand(
226
+ translateExecuteCommand('pnpm', {
227
+ command: 'npx',
228
+ args: ['-y', 'shadcn', 'add', 'button'],
229
+ }),
230
+ ),
231
+ ).toBe('pnpm dlx shadcn add button')
232
+ })
233
+ it('should translate bunx to target package manager', () => {
234
+ expect(
235
+ formatCommand(
236
+ translateExecuteCommand('pnpm', {
237
+ command: 'bunx',
238
+ args: ['shadcn', 'add', 'button'],
239
+ }),
240
+ ),
241
+ ).toBe('pnpm dlx shadcn add button')
242
+ })
243
+ it('should strip --bun flag from bunx input', () => {
244
+ expect(
245
+ formatCommand(
246
+ translateExecuteCommand('pnpm', {
247
+ command: 'bunx',
248
+ args: ['--bun', 'shadcn', 'add', 'button'],
249
+ }),
250
+ ),
251
+ ).toBe('pnpm dlx shadcn add button')
252
+ })
253
+ it('should translate pnpx to target package manager', () => {
254
+ expect(
255
+ formatCommand(
256
+ translateExecuteCommand('yarn', {
257
+ command: 'pnpx',
258
+ args: ['shadcn', 'add', 'button'],
259
+ }),
260
+ ),
261
+ ).toBe('yarn dlx shadcn add button')
262
+ })
263
+ it('should translate pnpm dlx to target package manager', () => {
264
+ expect(
265
+ formatCommand(
266
+ translateExecuteCommand('bun', {
267
+ command: 'pnpm',
268
+ args: ['dlx', 'shadcn', 'add', 'button'],
269
+ }),
270
+ ),
271
+ ).toBe('bunx --bun shadcn add button')
272
+ })
273
+ it('should translate yarn dlx to target package manager', () => {
274
+ expect(
275
+ formatCommand(
276
+ translateExecuteCommand('npm', {
277
+ command: 'yarn',
278
+ args: ['dlx', 'shadcn', 'add', 'button'],
279
+ }),
280
+ ),
281
+ ).toBe('npx -y shadcn add button')
282
+ })
283
+ it('should translate deno run npm: to target package manager', () => {
284
+ expect(
285
+ formatCommand(
286
+ translateExecuteCommand('pnpm', {
287
+ command: 'deno',
288
+ args: ['run', 'npm:shadcn', 'add', 'button'],
289
+ }),
290
+ ),
291
+ ).toBe('pnpm dlx shadcn add button')
292
+ })
293
+ it('should pass through non-execute pnpm commands unchanged', () => {
294
+ expect(
295
+ formatCommand(
296
+ translateExecuteCommand('bun', {
297
+ command: 'pnpm',
298
+ args: ['install'],
299
+ }),
300
+ ),
301
+ ).toBe('pnpm install')
302
+ })
303
+ it('should pass through non-execute deno commands unchanged', () => {
304
+ expect(
305
+ formatCommand(
306
+ translateExecuteCommand('npm', {
307
+ command: 'deno',
308
+ args: ['task', 'dev'],
309
+ }),
310
+ ),
311
+ ).toBe('deno task dev')
312
+ })
313
+ })
@@ -176,6 +176,19 @@ describe('createTemplateFile', () => {
176
176
  expect(output.files['/test/run-dev.txt']).toEqual('pnpm dev')
177
177
  })
178
178
 
179
+ it('should handle package manager execute script', async () => {
180
+ const { environment, output } = createMemoryEnvironment()
181
+ const templateFile = createTemplateFile(environment, simpleOptions)
182
+ environment.startRun()
183
+ await templateFile(
184
+ 'exec.txt.ejs',
185
+ "<%= getPackageManagerExecuteScript('shadcn', ['add', 'button']) %>",
186
+ )
187
+ environment.finishRun()
188
+
189
+ expect(output.files['/test/exec.txt']).toEqual('pnpm dlx shadcn add button')
190
+ })
191
+
179
192
  it('should normalize src js files to ts when typescript is enabled', async () => {
180
193
  const { environment, output } = createMemoryEnvironment()
181
194
  const templateFile = createTemplateFile(environment, simpleOptions)
@@ -1,3 +0,0 @@
1
- import { aiDevtoolsPlugin } from '@tanstack/react-ai-devtools'
2
-
3
- export default aiDevtoolsPlugin()
@@ -1,3 +0,0 @@
1
- # Better Auth configuration
2
- BETTER_AUTH_URL=http://localhost:3000
3
- BETTER_AUTH_SECRET= # Generate a secret key: `npx @better-auth/cli secret`
@@ -1,4 +0,0 @@
1
- ## Setting up Convex
2
-
3
- - Set the `VITE_CONVEX_URL` and `CONVEX_DEPLOYMENT` environment variables in your `.env.local`. (Or run `npx convex init` to set them automatically.)
4
- - Run `npx convex dev` to start the Convex server.
@@ -1,3 +0,0 @@
1
- # Better Auth configuration
2
- BETTER_AUTH_URL=http://localhost:3000
3
- BETTER_AUTH_SECRET= # Generate a secret key: `npx @better-auth/cli secret`
@@ -1,4 +0,0 @@
1
- ## Setting up Convex
2
-
3
- - Set the `VITE_CONVEX_URL` and `CONVEX_DEPLOYMENT` environment variables in your `.env.local`. (Or run `npx convex init` to set them automatically.)
4
- - Run `npx convex dev` to start the Convex server.
@@ -1,3 +0,0 @@
1
- import { aiDevtoolsPlugin } from '@tanstack/react-ai-devtools'
2
-
3
- export default aiDevtoolsPlugin()
@@ -1,3 +0,0 @@
1
- # Better Auth configuration
2
- BETTER_AUTH_URL=http://localhost:3000
3
- BETTER_AUTH_SECRET= # Generate a secret key: `npx @better-auth/cli secret`
@@ -1,4 +0,0 @@
1
- ## Setting up Convex
2
-
3
- - Set the `VITE_CONVEX_URL` and `CONVEX_DEPLOYMENT` environment variables in your `.env.local`. (Or run `npx convex init` to set them automatically.)
4
- - Run `npx convex dev` to start the Convex server.
@@ -1,3 +0,0 @@
1
- # Better Auth configuration
2
- BETTER_AUTH_URL=http://localhost:3000
3
- BETTER_AUTH_SECRET= # Generate a secret key: `npx @better-auth/cli secret`
@@ -1,4 +0,0 @@
1
- ## Setting up Convex
2
-
3
- - Set the `VITE_CONVEX_URL` and `CONVEX_DEPLOYMENT` environment variables in your `.env.local`. (Or run `npx convex init` to set them automatically.)
4
- - Run `npx convex dev` to start the Convex server.