@tanstack/cta-engine 0.14.3 → 0.14.4
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/dist/add-ons.js +5 -91
- package/dist/add-to-app.js +171 -0
- package/dist/config-file.js +34 -11
- package/dist/constants.js +0 -2
- package/dist/create-app.js +142 -451
- package/dist/custom-add-ons/add-on.js +175 -0
- package/dist/custom-add-ons/shared.js +116 -0
- package/dist/custom-add-ons/starter.js +84 -0
- package/dist/environment.js +67 -44
- package/dist/file-helpers.js +165 -0
- package/dist/frameworks.js +92 -0
- package/dist/index.js +18 -1
- package/dist/integrations/git.js +4 -0
- package/dist/integrations/shadcn.js +33 -0
- package/dist/options.js +9 -333
- package/dist/package-json.js +48 -0
- package/dist/package-manager.js +51 -6
- package/dist/registry.js +56 -0
- package/dist/special-steps/index.js +24 -0
- package/dist/special-steps/rimraf-node-modules.js +16 -0
- package/dist/template-file.js +112 -0
- package/dist/types/add-ons.d.ts +3 -8
- package/dist/types/add-to-app.d.ts +17 -0
- package/dist/types/config-file.d.ts +7 -4
- package/dist/types/constants.d.ts +0 -3
- package/dist/types/create-app.d.ts +1 -7
- package/dist/types/custom-add-ons/add-on.d.ts +69 -0
- package/dist/types/custom-add-ons/shared.d.ts +15 -0
- package/dist/types/custom-add-ons/starter.d.ts +7 -0
- package/dist/types/environment.d.ts +2 -1
- package/dist/types/file-helpers.d.ts +15 -0
- package/dist/types/frameworks.d.ts +7 -0
- package/dist/types/index.d.ts +21 -1
- package/dist/types/integrations/git.d.ts +2 -0
- package/dist/types/integrations/shadcn.d.ts +2 -0
- package/dist/types/options.d.ts +2 -6
- package/dist/types/package-json.d.ts +7 -0
- package/dist/types/package-manager.d.ts +18 -1
- package/dist/types/registry.d.ts +25 -0
- package/dist/types/special-steps/index.d.ts +2 -0
- package/dist/types/special-steps/rimraf-node-modules.d.ts +2 -0
- package/dist/types/template-file.d.ts +2 -0
- package/dist/types/types.d.ts +788 -85
- package/dist/types/utils.d.ts +5 -0
- package/dist/types.js +65 -1
- package/dist/utils.js +9 -0
- package/package.json +9 -12
- package/src/add-ons.ts +7 -123
- package/src/add-to-app.ts +276 -0
- package/src/config-file.ts +51 -20
- package/src/constants.ts +0 -5
- package/src/create-app.ts +180 -730
- package/src/custom-add-ons/add-on.ts +261 -0
- package/src/custom-add-ons/shared.ts +160 -0
- package/src/custom-add-ons/starter.ts +126 -0
- package/src/environment.ts +80 -45
- package/src/file-helpers.ts +235 -0
- package/src/frameworks.ts +134 -0
- package/src/index.ts +85 -1
- package/src/integrations/git.ts +7 -0
- package/src/integrations/shadcn.ts +54 -0
- package/src/options.ts +8 -409
- package/src/package-json.ts +69 -0
- package/src/package-manager.ts +80 -9
- package/src/registry.ts +92 -0
- package/src/special-steps/index.ts +36 -0
- package/src/special-steps/rimraf-node-modules.ts +25 -0
- package/src/template-file.ts +150 -0
- package/src/types.ts +175 -87
- package/src/utils.ts +17 -0
- package/tests/add-ons.test.ts +67 -0
- package/tests/add-to-app.test.ts +358 -0
- package/tests/config-file.test.ts +105 -0
- package/tests/create-app.test.ts +120 -0
- package/tests/custom-add-ons/add-on.test.ts +12 -0
- package/tests/custom-add-ons/shared.test.ts +253 -0
- package/tests/custom-add-ons/starter.test.ts +58 -0
- package/tests/environment.test.ts +115 -0
- package/tests/file-helper.test.ts +90 -0
- package/tests/frameworks.test.ts +95 -0
- package/tests/index.test.ts +9 -0
- package/tests/integrations/git.test.ts +20 -0
- package/tests/integrations/shadcn.test.ts +91 -0
- package/tests/options.test.ts +42 -0
- package/tests/package-json.test.ts +63 -0
- package/tests/package-manager.test.ts +154 -0
- package/tests/setupVitest.ts +6 -0
- package/tests/template-file.test.ts +178 -0
- package/tests/utils.test.ts +23 -0
- package/vitest.config.ts +21 -0
- package/dist/add.js +0 -125
- package/dist/cli.js +0 -132
- package/dist/custom-add-on.js +0 -254
- package/dist/file-helper.js +0 -18
- package/dist/mcp.js +0 -229
- package/dist/templates.js +0 -6
- package/dist/toolchain.js +0 -6
- package/dist/types/add.d.ts +0 -3
- package/dist/types/cli.d.ts +0 -7
- package/dist/types/custom-add-on.d.ts +0 -3
- package/dist/types/file-helper.d.ts +0 -2
- package/dist/types/mcp.d.ts +0 -7
- package/dist/types/templates.d.ts +0 -1
- package/dist/types/toolchain.d.ts +0 -3
- package/src/add.ts +0 -186
- package/src/cli.ts +0 -210
- package/src/custom-add-on.ts +0 -325
- package/src/file-helper.ts +0 -20
- package/src/mcp.ts +0 -302
- package/src/templates.ts +0 -7
- package/src/toolchain.ts +0 -7
- package/templates/react/add-on/clerk/README.md +0 -3
- package/templates/react/add-on/clerk/assets/_dot_env.local.append +0 -2
- package/templates/react/add-on/clerk/assets/src/integrations/clerk/header-user.tsx +0 -19
- package/templates/react/add-on/clerk/assets/src/integrations/clerk/provider.tsx +0 -18
- package/templates/react/add-on/clerk/assets/src/routes/demo.clerk.tsx +0 -20
- package/templates/react/add-on/clerk/info.json +0 -13
- package/templates/react/add-on/clerk/package.json +0 -5
- package/templates/react/add-on/convex/README.md +0 -4
- package/templates/react/add-on/convex/assets/_dot_cursorrules.append +0 -93
- package/templates/react/add-on/convex/assets/_dot_env.local.append +0 -3
- package/templates/react/add-on/convex/assets/convex/products.ts +0 -8
- package/templates/react/add-on/convex/assets/convex/schema.ts +0 -10
- package/templates/react/add-on/convex/assets/src/integrations/convex/provider.tsx +0 -20
- package/templates/react/add-on/convex/assets/src/routes/demo.convex.tsx +0 -33
- package/templates/react/add-on/convex/info.json +0 -13
- package/templates/react/add-on/convex/package.json +0 -6
- package/templates/react/add-on/form/assets/src/components/demo.FormComponents.tsx.ejs +0 -300
- package/templates/react/add-on/form/assets/src/hooks/demo.form-context.ts +0 -4
- package/templates/react/add-on/form/assets/src/hooks/demo.form.ts +0 -22
- package/templates/react/add-on/form/assets/src/routes/demo.form.address.tsx.ejs +0 -213
- package/templates/react/add-on/form/assets/src/routes/demo.form.simple.tsx.ejs +0 -77
- package/templates/react/add-on/form/info.json +0 -26
- package/templates/react/add-on/form/package.json +0 -6
- package/templates/react/add-on/module-federation/assets/module-federation.config.js.ejs +0 -31
- package/templates/react/add-on/module-federation/assets/src/demo-mf-component.tsx +0 -3
- package/templates/react/add-on/module-federation/assets/src/demo-mf-self-contained.tsx +0 -11
- package/templates/react/add-on/module-federation/info.json +0 -7
- package/templates/react/add-on/module-federation/package.json +0 -5
- package/templates/react/add-on/netlify/README.md +0 -11
- package/templates/react/add-on/netlify/info.json +0 -7
- package/templates/react/add-on/sentry/assets/_dot_cursorrules.append +0 -22
- package/templates/react/add-on/sentry/assets/_dot_env.local.append +0 -11
- package/templates/react/add-on/sentry/assets/src/app/global-middleware.ts +0 -11
- package/templates/react/add-on/sentry/assets/src/routes/demo.sentry.testing.tsx +0 -489
- package/templates/react/add-on/sentry/info.json +0 -14
- package/templates/react/add-on/sentry/package.json +0 -5
- package/templates/react/add-on/shadcn/README.md +0 -7
- package/templates/react/add-on/shadcn/assets/_dot_cursorrules.append +0 -7
- package/templates/react/add-on/shadcn/assets/components.json +0 -21
- package/templates/react/add-on/shadcn/assets/src/lib/utils.ts +0 -6
- package/templates/react/add-on/shadcn/assets/src/styles.css +0 -138
- package/templates/react/add-on/shadcn/info.json +0 -7
- package/templates/react/add-on/shadcn/package.json +0 -9
- package/templates/react/add-on/start/assets/_dot_gitignore.append +0 -2
- package/templates/react/add-on/start/assets/app.config.ts.ejs +0 -32
- package/templates/react/add-on/start/assets/src/api.ts +0 -6
- package/templates/react/add-on/start/assets/src/client.tsx.ejs +0 -33
- package/templates/react/add-on/start/assets/src/router.tsx.ejs +0 -48
- package/templates/react/add-on/start/assets/src/routes/api.demo-names.ts +0 -11
- package/templates/react/add-on/start/assets/src/routes/demo.start.api-request.tsx.ejs +0 -33
- package/templates/react/add-on/start/assets/src/routes/demo.start.server-funcs.tsx +0 -50
- package/templates/react/add-on/start/assets/src/ssr.tsx.ejs +0 -30
- package/templates/react/add-on/start/info.json +0 -18
- package/templates/react/add-on/start/package.json +0 -13
- package/templates/react/add-on/store/assets/src/lib/demo-store.ts +0 -13
- package/templates/react/add-on/store/assets/src/routes/demo.store.tsx.ejs +0 -75
- package/templates/react/add-on/store/info.json +0 -13
- package/templates/react/add-on/store/package.json +0 -6
- package/templates/react/add-on/t3env/README.md +0 -16
- package/templates/react/add-on/t3env/assets/src/env.ts +0 -39
- package/templates/react/add-on/t3env/info.json +0 -10
- package/templates/react/add-on/t3env/package.json +0 -6
- package/templates/react/add-on/tRPC/assets/src/integrations/trpc/init.ts +0 -9
- package/templates/react/add-on/tRPC/assets/src/integrations/trpc/react.ts +0 -4
- package/templates/react/add-on/tRPC/assets/src/integrations/trpc/router.ts +0 -18
- package/templates/react/add-on/tRPC/assets/src/routes/api.trpc.$.tsx +0 -16
- package/templates/react/add-on/tRPC/info.json +0 -9
- package/templates/react/add-on/tRPC/package.json +0 -9
- package/templates/react/add-on/table/assets/src/data/demo-table-data.ts +0 -50
- package/templates/react/add-on/table/assets/src/routes/demo.table.tsx.ejs +0 -373
- package/templates/react/add-on/table/info.json +0 -13
- package/templates/react/add-on/table/package.json +0 -7
- package/templates/react/add-on/tanstack-query/assets/src/integrations/tanstack-query/layout.tsx +0 -5
- package/templates/react/add-on/tanstack-query/assets/src/integrations/tanstack-query/root-provider.tsx.ejs +0 -70
- package/templates/react/add-on/tanstack-query/assets/src/routes/demo.tanstack-query.tsx.ejs +0 -53
- package/templates/react/add-on/tanstack-query/info.json +0 -13
- package/templates/react/add-on/tanstack-query/package.json +0 -6
- package/templates/react/base/README.md.ejs +0 -558
- package/templates/react/base/_dot_gitignore +0 -5
- package/templates/react/base/_dot_vscode/settings.biome.json +0 -38
- package/templates/react/base/_dot_vscode/settings.json +0 -11
- package/templates/react/base/index.html.ejs +0 -20
- package/templates/react/base/package.biome.json +0 -10
- package/templates/react/base/package.eslintprettier.json +0 -11
- package/templates/react/base/package.json +0 -30
- package/templates/react/base/package.ts.json +0 -7
- package/templates/react/base/package.tw.json +0 -6
- package/templates/react/base/public/favicon.ico +0 -0
- package/templates/react/base/public/logo192.png +0 -0
- package/templates/react/base/public/logo512.png +0 -0
- package/templates/react/base/public/manifest.json +0 -25
- package/templates/react/base/public/robots.txt +0 -3
- package/templates/react/base/src/App.css +0 -38
- package/templates/react/base/src/App.test.tsx.ejs +0 -10
- package/templates/react/base/src/App.tsx.ejs +0 -74
- package/templates/react/base/src/components/Header.tsx.ejs +0 -27
- package/templates/react/base/src/logo.svg +0 -44
- package/templates/react/base/src/reportWebVitals.ts.ejs +0 -28
- package/templates/react/base/src/styles.css.ejs +0 -15
- package/templates/react/base/toolchain/.prettierignore +0 -3
- package/templates/react/base/toolchain/biome.json +0 -31
- package/templates/react/base/toolchain/eslint.config.js +0 -5
- package/templates/react/base/toolchain/prettier.config.js +0 -10
- package/templates/react/base/tsconfig.json.ejs +0 -29
- package/templates/react/base/vite.config.js.ejs +0 -23
- package/templates/react/code-router/src/main.tsx.ejs +0 -92
- package/templates/react/example/tanchat/README.md +0 -37
- package/templates/react/example/tanchat/assets/_dot_env.local.append +0 -2
- package/templates/react/example/tanchat/assets/public/example-guitar-flowers.jpg +0 -0
- package/templates/react/example/tanchat/assets/public/example-guitar-motherboard.jpg +0 -0
- package/templates/react/example/tanchat/assets/public/example-guitar-racing.jpg +0 -0
- package/templates/react/example/tanchat/assets/public/example-guitar-steamer-trunk.jpg +0 -0
- package/templates/react/example/tanchat/assets/public/example-guitar-superhero.jpg +0 -0
- package/templates/react/example/tanchat/assets/public/example-guitar-traveling.jpg +0 -0
- package/templates/react/example/tanchat/assets/public/example-guitar-video-games.jpg +0 -0
- package/templates/react/example/tanchat/assets/src/components/example-AIAssistant.tsx +0 -173
- package/templates/react/example/tanchat/assets/src/components/example-GuitarRecommendation.tsx +0 -47
- package/templates/react/example/tanchat/assets/src/data/example-guitars.ts +0 -83
- package/templates/react/example/tanchat/assets/src/demo.index.css +0 -220
- package/templates/react/example/tanchat/assets/src/integrations/tanchat/header-user.tsx +0 -5
- package/templates/react/example/tanchat/assets/src/routes/api.messages.ts +0 -24
- package/templates/react/example/tanchat/assets/src/routes/api.sse.ts +0 -23
- package/templates/react/example/tanchat/assets/src/routes/example.chat.tsx +0 -159
- package/templates/react/example/tanchat/assets/src/routes/example.guitars/$guitarId.tsx +0 -50
- package/templates/react/example/tanchat/assets/src/routes/example.guitars/index.tsx +0 -54
- package/templates/react/example/tanchat/assets/src/store/example-assistant.ts +0 -3
- package/templates/react/example/tanchat/assets/src/utils/demo.ai.ts +0 -62
- package/templates/react/example/tanchat/assets/src/utils/demo.sse.ts +0 -31
- package/templates/react/example/tanchat/assets/src/utils/demo.tools.ts +0 -47
- package/templates/react/example/tanchat/info.json +0 -19
- package/templates/react/example/tanchat/package.json +0 -16
- package/templates/react/file-router/package.fr.json +0 -5
- package/templates/react/file-router/src/main.tsx.ejs +0 -55
- package/templates/react/file-router/src/routes/__root.tsx.ejs +0 -82
- package/templates/solid/add-on/form/assets/src/routes/demo.form.tsx.ejs +0 -352
- package/templates/solid/add-on/form/info.json +0 -13
- package/templates/solid/add-on/form/package.json +0 -5
- package/templates/solid/add-on/module-federation/assets/module-federation.config.js.ejs +0 -27
- package/templates/solid/add-on/module-federation/assets/src/demo-mf-component.tsx +0 -3
- package/templates/solid/add-on/module-federation/assets/src/demo-mf-self-contained.tsx +0 -9
- package/templates/solid/add-on/module-federation/info.json +0 -7
- package/templates/solid/add-on/module-federation/package.json +0 -5
- package/templates/solid/add-on/sentry/assets/_dot_cursorrules.append +0 -22
- package/templates/solid/add-on/sentry/assets/_dot_env.local.append +0 -2
- package/templates/solid/add-on/sentry/assets/src/routes/demo.sentry.bad-event-handler.tsx +0 -20
- package/templates/solid/add-on/sentry/info.json +0 -13
- package/templates/solid/add-on/sentry/package.json +0 -5
- package/templates/solid/add-on/solid-ui/README.md +0 -9
- package/templates/solid/add-on/solid-ui/assets/src/lib/utils.ts +0 -6
- package/templates/solid/add-on/solid-ui/assets/src/styles.css +0 -138
- package/templates/solid/add-on/solid-ui/assets/ui.config.json +0 -13
- package/templates/solid/add-on/solid-ui/info.json +0 -11
- package/templates/solid/add-on/solid-ui/package.json +0 -9
- package/templates/solid/add-on/start/assets/app.config.ts +0 -16
- package/templates/solid/add-on/start/assets/src/api.ts +0 -6
- package/templates/solid/add-on/start/assets/src/client.tsx +0 -7
- package/templates/solid/add-on/start/assets/src/router.tsx.ejs +0 -24
- package/templates/solid/add-on/start/assets/src/routes/demo.start.server-funcs.tsx +0 -49
- package/templates/solid/add-on/start/assets/src/ssr.tsx +0 -12
- package/templates/solid/add-on/start/info.json +0 -14
- package/templates/solid/add-on/start/package.json +0 -12
- package/templates/solid/add-on/store/assets/src/lib/demo-store.ts +0 -13
- package/templates/solid/add-on/store/assets/src/routes/demo.store.tsx.ejs +0 -77
- package/templates/solid/add-on/store/info.json +0 -13
- package/templates/solid/add-on/store/package.json +0 -6
- package/templates/solid/add-on/t3env/README.md +0 -16
- package/templates/solid/add-on/t3env/assets/src/env.ts +0 -39
- package/templates/solid/add-on/t3env/info.json +0 -10
- package/templates/solid/add-on/t3env/package.json +0 -6
- package/templates/solid/add-on/tanstack-query/assets/src/integrations/tanstack-query/header-user.tsx +0 -5
- package/templates/solid/add-on/tanstack-query/assets/src/integrations/tanstack-query/provider.tsx +0 -15
- package/templates/solid/add-on/tanstack-query/assets/src/routes/demo.tanstack-query.tsx +0 -30
- package/templates/solid/add-on/tanstack-query/info.json +0 -13
- package/templates/solid/add-on/tanstack-query/package.json +0 -6
- package/templates/solid/base/README.md.ejs +0 -215
- package/templates/solid/base/_dot_cursorrules.append +0 -35
- package/templates/solid/base/_dot_gitignore +0 -5
- package/templates/solid/base/_dot_vscode/settings.biome.json +0 -38
- package/templates/solid/base/_dot_vscode/settings.json +0 -11
- package/templates/solid/base/index.html.ejs +0 -20
- package/templates/solid/base/package.biome.json +0 -10
- package/templates/solid/base/package.eslintprettier.json +0 -11
- package/templates/solid/base/package.json +0 -23
- package/templates/solid/base/package.ts.json +0 -5
- package/templates/solid/base/package.tw.json +0 -6
- package/templates/solid/base/public/favicon.ico +0 -0
- package/templates/solid/base/public/logo192.png +0 -0
- package/templates/solid/base/public/logo512.png +0 -0
- package/templates/solid/base/public/manifest.json +0 -25
- package/templates/solid/base/public/robots.txt +0 -3
- package/templates/solid/base/src/App.css +0 -0
- package/templates/solid/base/src/App.tsx.ejs +0 -47
- package/templates/solid/base/src/components/Header.tsx.ejs +0 -26
- package/templates/solid/base/src/logo.svg +0 -120
- package/templates/solid/base/src/styles.css.ejs +0 -15
- package/templates/solid/base/toolchain/.prettierignore +0 -3
- package/templates/solid/base/toolchain/biome.json +0 -31
- package/templates/solid/base/toolchain/eslint.config.js +0 -5
- package/templates/solid/base/toolchain/prettier.config.js +0 -10
- package/templates/solid/base/tsconfig.json.ejs +0 -31
- package/templates/solid/base/vite.config.js.ejs +0 -22
- package/templates/solid/code-router/src/main.tsx.ejs +0 -71
- package/templates/solid/example/tanchat/README.md +0 -52
- package/templates/solid/example/tanchat/assets/ai-streaming-server/README.md +0 -110
- package/templates/solid/example/tanchat/assets/ai-streaming-server/_dot_env.example +0 -1
- package/templates/solid/example/tanchat/assets/ai-streaming-server/package.json +0 -26
- package/templates/solid/example/tanchat/assets/ai-streaming-server/src/index.ts +0 -102
- package/templates/solid/example/tanchat/assets/ai-streaming-server/tsconfig.json +0 -15
- package/templates/solid/example/tanchat/assets/src/components/demo.SettingsDialog.tsx +0 -149
- package/templates/solid/example/tanchat/assets/src/demo.index.css +0 -227
- package/templates/solid/example/tanchat/assets/src/lib/demo-store.ts +0 -13
- package/templates/solid/example/tanchat/assets/src/routes/example.chat.tsx +0 -435
- package/templates/solid/example/tanchat/assets/src/store/demo.hooks.ts +0 -17
- package/templates/solid/example/tanchat/assets/src/store/demo.store.ts +0 -133
- package/templates/solid/example/tanchat/info.json +0 -14
- package/templates/solid/example/tanchat/package.json +0 -7
- package/templates/solid/file-router/package.fr.json +0 -5
- package/templates/solid/file-router/src/main.tsx.ejs +0 -47
- package/templates/solid/file-router/src/routes/__root.tsx.ejs +0 -41
- package/templates/solid/file-router/src/routes/index.tsx +0 -43
- package/tests/cra.test.ts +0 -293
- package/tests/snapshots/cra/cr-js-npm.json +0 -33
- package/tests/snapshots/cra/cr-ts-npm.json +0 -34
- package/tests/snapshots/cra/cr-ts-start-npm.json +0 -38
- package/tests/snapshots/cra/fr-ts-npm.json +0 -34
- package/tests/snapshots/cra/fr-ts-tw-npm.json +0 -33
- package/tests/snapshots/cra/solid-cr-js-npm.json +0 -31
- package/tests/snapshots/cra/solid-cr-ts-npm.json +0 -32
- package/tests/snapshots/cra/solid-cr-ts-start-npm.json +0 -36
- package/tests/snapshots/cra/solid-fr-ts-npm.json +0 -33
- package/tests/snapshots/cra/solid-fr-ts-tw-npm.json +0 -32
- package/tests/test-utilities.ts +0 -87
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { FILE_ROUTER } from './constants.js';
|
|
2
|
+
import { sortObject } from './utils.js';
|
|
3
|
+
export function mergePackageJSON(packageJSON, overlayPackageJSON) {
|
|
4
|
+
return {
|
|
5
|
+
...packageJSON,
|
|
6
|
+
dependencies: {
|
|
7
|
+
...packageJSON.dependencies,
|
|
8
|
+
...(overlayPackageJSON?.dependencies || {}),
|
|
9
|
+
},
|
|
10
|
+
devDependencies: {
|
|
11
|
+
...packageJSON.devDependencies,
|
|
12
|
+
...(overlayPackageJSON?.devDependencies || {}),
|
|
13
|
+
},
|
|
14
|
+
scripts: {
|
|
15
|
+
...packageJSON.scripts,
|
|
16
|
+
...(overlayPackageJSON?.scripts || {}),
|
|
17
|
+
},
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
export function createPackageJSON(options) {
|
|
21
|
+
let packageJSON = {
|
|
22
|
+
...JSON.parse(JSON.stringify(options.framework.basePackageJSON)),
|
|
23
|
+
name: options.projectName,
|
|
24
|
+
};
|
|
25
|
+
const additions = [
|
|
26
|
+
options.typescript
|
|
27
|
+
? options.framework.optionalPackages.typescript
|
|
28
|
+
: undefined,
|
|
29
|
+
options.tailwind
|
|
30
|
+
? options.framework.optionalPackages.tailwindcss
|
|
31
|
+
: undefined,
|
|
32
|
+
options.mode === FILE_ROUTER
|
|
33
|
+
? options.framework.optionalPackages['file-router']
|
|
34
|
+
: undefined,
|
|
35
|
+
];
|
|
36
|
+
for (const addition of additions.filter(Boolean)) {
|
|
37
|
+
packageJSON = mergePackageJSON(packageJSON, addition);
|
|
38
|
+
}
|
|
39
|
+
for (const addOn of options.chosenAddOns.map((addOn) => addOn.packageAdditions)) {
|
|
40
|
+
packageJSON = mergePackageJSON(packageJSON, addOn);
|
|
41
|
+
}
|
|
42
|
+
if (options.starter) {
|
|
43
|
+
packageJSON = mergePackageJSON(packageJSON, options.starter.packageAdditions);
|
|
44
|
+
}
|
|
45
|
+
packageJSON.dependencies = sortObject((packageJSON.dependencies ?? {}));
|
|
46
|
+
packageJSON.devDependencies = sortObject((packageJSON.devDependencies ?? {}));
|
|
47
|
+
return packageJSON;
|
|
48
|
+
}
|
package/dist/package-manager.js
CHANGED
|
@@ -14,17 +14,62 @@ export function getPackageManager() {
|
|
|
14
14
|
const packageManager = SUPPORTED_PACKAGE_MANAGERS.find((manager) => userAgent.startsWith(manager));
|
|
15
15
|
return packageManager;
|
|
16
16
|
}
|
|
17
|
-
export function
|
|
17
|
+
export function getPackageManagerScriptCommand(packagerManager, args = []) {
|
|
18
18
|
switch (packagerManager) {
|
|
19
19
|
case 'yarn':
|
|
20
|
-
return
|
|
20
|
+
return { command: 'yarn', args: ['run', ...args] };
|
|
21
21
|
case 'pnpm':
|
|
22
|
-
return
|
|
22
|
+
return { command: 'pnpm', args: [...args] };
|
|
23
23
|
case 'bun':
|
|
24
|
-
return
|
|
24
|
+
return { command: 'bunx', args: ['--bun', 'run', ...args] };
|
|
25
25
|
case 'deno':
|
|
26
|
-
return
|
|
26
|
+
return { command: 'deno', args: ['task', ...args] };
|
|
27
27
|
default:
|
|
28
|
-
return
|
|
28
|
+
return { command: 'npm', args: ['run', ...args] };
|
|
29
29
|
}
|
|
30
30
|
}
|
|
31
|
+
export function getPackageManagerExecuteCommand(packagerManager, pkg, args = []) {
|
|
32
|
+
switch (packagerManager) {
|
|
33
|
+
case 'yarn':
|
|
34
|
+
return { command: 'yarn', args: ['dlx', pkg, ...args] };
|
|
35
|
+
case 'pnpm':
|
|
36
|
+
return { command: 'pnpx', args: [pkg, ...args] };
|
|
37
|
+
case 'bun':
|
|
38
|
+
return { command: 'bunx', args: ['--bun', pkg, ...args] };
|
|
39
|
+
case 'deno':
|
|
40
|
+
return { command: 'deno', args: ['run', `npm:${pkg}`, ...args] };
|
|
41
|
+
default:
|
|
42
|
+
return { command: 'npx', args: [pkg, ...args] };
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
export function getPackageManagerInstallCommand(packagerManager, pkg, isDev = false) {
|
|
46
|
+
if (pkg) {
|
|
47
|
+
switch (packagerManager) {
|
|
48
|
+
case 'yarn':
|
|
49
|
+
case 'pnpm':
|
|
50
|
+
return {
|
|
51
|
+
command: packagerManager,
|
|
52
|
+
args: ['add', pkg, isDev ? '--dev' : ''],
|
|
53
|
+
};
|
|
54
|
+
default:
|
|
55
|
+
return {
|
|
56
|
+
command: packagerManager,
|
|
57
|
+
args: ['install', pkg, isDev ? '-D' : ''],
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
else {
|
|
62
|
+
return {
|
|
63
|
+
command: packagerManager,
|
|
64
|
+
args: ['install'],
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
export function packageManagerInstall(environment, cwd, packagerManager, pkg) {
|
|
69
|
+
const { command, args: commandArgs } = getPackageManagerInstallCommand(packagerManager, pkg);
|
|
70
|
+
return environment.execute(command, commandArgs, cwd);
|
|
71
|
+
}
|
|
72
|
+
export function packageManagerExecute(environment, cwd, packagerManager, pkg, args) {
|
|
73
|
+
const { command, args: commandArgs } = getPackageManagerExecuteCommand(packagerManager, pkg, args);
|
|
74
|
+
return environment.execute(command, commandArgs, cwd);
|
|
75
|
+
}
|
package/dist/registry.js
ADDED
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { loadRemoteAddOn } from './custom-add-ons/add-on.js';
|
|
2
|
+
import { loadStarter } from './custom-add-ons/starter.js';
|
|
3
|
+
function absolutizeUrl(originalUrl, relativeUrl) {
|
|
4
|
+
if (relativeUrl.startsWith('http') || relativeUrl.startsWith('https')) {
|
|
5
|
+
return relativeUrl;
|
|
6
|
+
}
|
|
7
|
+
const baseUrl = originalUrl.replace(/registry.json$/, '');
|
|
8
|
+
return `${baseUrl}${relativeUrl.replace(/^\.\//, '')}`;
|
|
9
|
+
}
|
|
10
|
+
export async function getRawRegistry(registryUrl) {
|
|
11
|
+
const regUrl = registryUrl || process.env.CTA_REGISTRY;
|
|
12
|
+
if (regUrl) {
|
|
13
|
+
const registry = (await fetch(regUrl).then((res) => res.json()));
|
|
14
|
+
for (const addOn of registry['add-ons']) {
|
|
15
|
+
addOn.url = absolutizeUrl(regUrl, addOn.url);
|
|
16
|
+
}
|
|
17
|
+
for (const starter of registry.starters) {
|
|
18
|
+
starter.url = absolutizeUrl(regUrl, starter.url);
|
|
19
|
+
if (starter.banner) {
|
|
20
|
+
starter.banner = absolutizeUrl(regUrl, starter.banner);
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
return registry;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
async function getAddOns(registry) {
|
|
27
|
+
const addOns = [];
|
|
28
|
+
for (const addOnInfo of registry['add-ons']) {
|
|
29
|
+
const addOn = await loadRemoteAddOn(addOnInfo.url);
|
|
30
|
+
addOns.push(addOn);
|
|
31
|
+
}
|
|
32
|
+
return addOns;
|
|
33
|
+
}
|
|
34
|
+
export async function getRegistryAddOns(registryUrl) {
|
|
35
|
+
const registry = await getRawRegistry(registryUrl);
|
|
36
|
+
return registry ? await getAddOns(registry) : [];
|
|
37
|
+
}
|
|
38
|
+
async function getStarters(registry) {
|
|
39
|
+
const starters = [];
|
|
40
|
+
for (const starterInfo of registry.starters) {
|
|
41
|
+
const starter = await loadStarter(starterInfo.url);
|
|
42
|
+
starters.push(starter);
|
|
43
|
+
}
|
|
44
|
+
return starters;
|
|
45
|
+
}
|
|
46
|
+
export async function getRegistryStarters(registryUrl) {
|
|
47
|
+
const registry = await getRawRegistry(registryUrl);
|
|
48
|
+
return registry ? await getStarters(registry) : [];
|
|
49
|
+
}
|
|
50
|
+
export async function getRegistry(registryUrl) {
|
|
51
|
+
const registry = await getRawRegistry(registryUrl);
|
|
52
|
+
return {
|
|
53
|
+
addOns: registry ? await getAddOns(registry) : [],
|
|
54
|
+
starters: registry ? await getStarters(registry) : [],
|
|
55
|
+
};
|
|
56
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { rimrafNodeModules } from './rimraf-node-modules.js';
|
|
2
|
+
const specialStepsLookup = {
|
|
3
|
+
'rimraf-node-modules': rimrafNodeModules,
|
|
4
|
+
};
|
|
5
|
+
export async function runSpecialSteps(environment, options, specialSteps) {
|
|
6
|
+
if (specialSteps.length) {
|
|
7
|
+
environment.startStep({
|
|
8
|
+
id: 'special-steps',
|
|
9
|
+
type: 'command',
|
|
10
|
+
message: 'Removing node_modules...',
|
|
11
|
+
});
|
|
12
|
+
for (const step of specialSteps) {
|
|
13
|
+
const stepFunction = specialStepsLookup[step];
|
|
14
|
+
/* eslint-disable @typescript-eslint/no-unnecessary-condition */
|
|
15
|
+
if (stepFunction) {
|
|
16
|
+
await stepFunction(environment, options);
|
|
17
|
+
}
|
|
18
|
+
else {
|
|
19
|
+
environment.error(`Special step ${step} not found`);
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
environment.finishStep('special-steps', 'Special steps complete');
|
|
23
|
+
}
|
|
24
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { resolve } from 'node:path';
|
|
2
|
+
const lockFiles = ['package-lock.json', 'yarn.lock', 'pnpm-lock.yaml'];
|
|
3
|
+
export async function rimrafNodeModules(environment, options) {
|
|
4
|
+
environment.startStep({
|
|
5
|
+
id: 'special-steps',
|
|
6
|
+
type: 'command',
|
|
7
|
+
message: 'Removing node_modules...',
|
|
8
|
+
});
|
|
9
|
+
await environment.rimraf(resolve(options.targetDir, 'node_modules'));
|
|
10
|
+
for (const lockFile of lockFiles) {
|
|
11
|
+
const lockFilePath = resolve(options.targetDir, lockFile);
|
|
12
|
+
if (environment.exists(lockFilePath)) {
|
|
13
|
+
await environment.deleteFile(lockFilePath);
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
}
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
import { resolve, sep } from 'node:path';
|
|
2
|
+
import { render } from 'ejs';
|
|
3
|
+
import { format } from 'prettier';
|
|
4
|
+
import { CODE_ROUTER, FILE_ROUTER } from './constants.js';
|
|
5
|
+
import { formatCommand } from './utils.js';
|
|
6
|
+
import { getPackageManagerInstallCommand, getPackageManagerScriptCommand, } from './package-manager.js';
|
|
7
|
+
import { relativePath } from './file-helpers.js';
|
|
8
|
+
function convertDotFilesAndPaths(path) {
|
|
9
|
+
return path
|
|
10
|
+
.split(sep)
|
|
11
|
+
.map((segment) => segment.replace(/^_dot_/, '.'))
|
|
12
|
+
.join(sep);
|
|
13
|
+
}
|
|
14
|
+
export function createTemplateFile(environment, options) {
|
|
15
|
+
function getPackageManagerAddScript(packageName, isDev = false) {
|
|
16
|
+
return formatCommand(getPackageManagerInstallCommand(options.packageManager, packageName, isDev));
|
|
17
|
+
}
|
|
18
|
+
function getPackageManagerRunScript(scriptName, args = []) {
|
|
19
|
+
return formatCommand(getPackageManagerScriptCommand(options.packageManager, [
|
|
20
|
+
scriptName,
|
|
21
|
+
...args,
|
|
22
|
+
]));
|
|
23
|
+
}
|
|
24
|
+
class IgnoreFileError extends Error {
|
|
25
|
+
constructor() {
|
|
26
|
+
super('ignoreFile');
|
|
27
|
+
this.name = 'IgnoreFileError';
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
const integrations = [];
|
|
31
|
+
for (const addOn of options.chosenAddOns) {
|
|
32
|
+
if (addOn.integrations) {
|
|
33
|
+
for (const integration of addOn.integrations) {
|
|
34
|
+
integrations.push(integration);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
const routes = [];
|
|
39
|
+
for (const addOn of options.chosenAddOns) {
|
|
40
|
+
if (addOn.routes) {
|
|
41
|
+
routes.push(...addOn.routes);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
const addOnEnabled = options.chosenAddOns.reduce((acc, addOn) => {
|
|
45
|
+
acc[addOn.id] = true;
|
|
46
|
+
return acc;
|
|
47
|
+
}, {});
|
|
48
|
+
return async function templateFile(file, content) {
|
|
49
|
+
const templateValues = {
|
|
50
|
+
packageManager: options.packageManager,
|
|
51
|
+
projectName: options.projectName,
|
|
52
|
+
typescript: options.typescript,
|
|
53
|
+
tailwind: options.tailwind,
|
|
54
|
+
js: options.typescript ? 'ts' : 'js',
|
|
55
|
+
jsx: options.typescript ? 'tsx' : 'jsx',
|
|
56
|
+
fileRouter: options.mode === FILE_ROUTER,
|
|
57
|
+
codeRouter: options.mode === CODE_ROUTER,
|
|
58
|
+
addOnEnabled,
|
|
59
|
+
addOns: options.chosenAddOns,
|
|
60
|
+
integrations,
|
|
61
|
+
routes,
|
|
62
|
+
getPackageManagerAddScript,
|
|
63
|
+
getPackageManagerRunScript,
|
|
64
|
+
relativePath: (path) => relativePath(file, path),
|
|
65
|
+
ignoreFile: () => {
|
|
66
|
+
throw new IgnoreFileError();
|
|
67
|
+
},
|
|
68
|
+
};
|
|
69
|
+
let ignoreFile = false;
|
|
70
|
+
if (file.endsWith('.ejs')) {
|
|
71
|
+
try {
|
|
72
|
+
content = render(content, templateValues);
|
|
73
|
+
}
|
|
74
|
+
catch (error) {
|
|
75
|
+
if (error instanceof IgnoreFileError) {
|
|
76
|
+
ignoreFile = true;
|
|
77
|
+
}
|
|
78
|
+
else {
|
|
79
|
+
console.error(file, error);
|
|
80
|
+
environment.error(`EJS error in file ${file}`, error?.toString());
|
|
81
|
+
process.exit(1);
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
if (ignoreFile) {
|
|
86
|
+
return;
|
|
87
|
+
}
|
|
88
|
+
let target = convertDotFilesAndPaths(file.replace('.ejs', ''));
|
|
89
|
+
let append = false;
|
|
90
|
+
if (target.endsWith('.append')) {
|
|
91
|
+
append = true;
|
|
92
|
+
target = target.replace('.append', '');
|
|
93
|
+
}
|
|
94
|
+
if (target.endsWith('.ts') || target.endsWith('.tsx')) {
|
|
95
|
+
content = await format(content, {
|
|
96
|
+
semi: false,
|
|
97
|
+
singleQuote: true,
|
|
98
|
+
trailingComma: 'all',
|
|
99
|
+
parser: 'typescript',
|
|
100
|
+
});
|
|
101
|
+
}
|
|
102
|
+
if (!options.typescript) {
|
|
103
|
+
target = target.replace(/\.tsx$/, '.jsx').replace(/\.ts$/, '.js');
|
|
104
|
+
}
|
|
105
|
+
if (append) {
|
|
106
|
+
await environment.appendFile(resolve(options.targetDir, target), content);
|
|
107
|
+
}
|
|
108
|
+
else {
|
|
109
|
+
await environment.writeFile(resolve(options.targetDir, target), content);
|
|
110
|
+
}
|
|
111
|
+
};
|
|
112
|
+
}
|
package/dist/types/add-ons.d.ts
CHANGED
|
@@ -1,8 +1,3 @@
|
|
|
1
|
-
import type { AddOn,
|
|
2
|
-
export declare function getAllAddOns(framework: Framework,
|
|
3
|
-
export declare function finalizeAddOns(framework: Framework,
|
|
4
|
-
export declare function listAddOns(options: CliOptions, { forcedMode, forcedAddOns, }: {
|
|
5
|
-
forcedMode?: TemplateOptions;
|
|
6
|
-
forcedAddOns?: Array<string>;
|
|
7
|
-
}): Promise<void>;
|
|
8
|
-
export declare function loadRemoteAddOn(url: string): Promise<AddOn>;
|
|
1
|
+
import type { AddOn, Framework, Mode } from './types.js';
|
|
2
|
+
export declare function getAllAddOns(framework: Framework, mode: Mode): Array<AddOn>;
|
|
3
|
+
export declare function finalizeAddOns(framework: Framework, mode: Mode, chosenAddOnIDs: Array<string>): Promise<Array<AddOn>>;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { Environment } from './types.js';
|
|
2
|
+
import type { PersistedOptions } from './config-file.js';
|
|
3
|
+
export declare function hasPendingGitChanges(environment: Environment, cwd: string): Promise<boolean>;
|
|
4
|
+
export declare function getCurrentConfiguration(environment: Environment, cwd: string): Promise<PersistedOptions | undefined>;
|
|
5
|
+
export declare function writeFiles(environment: Environment, cwd: string, output: {
|
|
6
|
+
files: Record<string, string>;
|
|
7
|
+
deletedFiles: Array<string>;
|
|
8
|
+
}, forced: boolean): Promise<void>;
|
|
9
|
+
export declare function runNewCommands(environment: Environment, originalOptions: PersistedOptions, cwd: string, output: {
|
|
10
|
+
commands: Array<{
|
|
11
|
+
command: string;
|
|
12
|
+
args: Array<string>;
|
|
13
|
+
}>;
|
|
14
|
+
}): Promise<void>;
|
|
15
|
+
export declare function addToApp(environment: Environment, addOns: Array<string>, cwd: string, options?: {
|
|
16
|
+
forced?: boolean;
|
|
17
|
+
}): Promise<void>;
|
|
@@ -1,7 +1,10 @@
|
|
|
1
|
-
import type { Environment, Options } from './types';
|
|
2
|
-
export type PersistedOptions =
|
|
1
|
+
import type { Environment, Options } from './types.js';
|
|
2
|
+
export type PersistedOptions = Omit<Partial<Options>, 'addOns' | 'chosenAddOns' | 'framework' | 'starter' | 'targetDir'> & {
|
|
3
|
+
framework: string;
|
|
3
4
|
version: number;
|
|
4
|
-
|
|
5
|
+
chosenAddOns: Array<string>;
|
|
6
|
+
starter?: string;
|
|
5
7
|
};
|
|
6
|
-
export declare function
|
|
8
|
+
export declare function writeConfigFileToEnvironment(environment: Environment, options: Options): Promise<void>;
|
|
9
|
+
export declare function readConfigFileFromEnvironment(environment: Environment, targetDir: string): Promise<PersistedOptions | null>;
|
|
7
10
|
export declare function readConfigFile(targetDir: string): Promise<PersistedOptions | null>;
|
|
@@ -1,6 +1,3 @@
|
|
|
1
|
-
import type { Framework } from './types.js';
|
|
2
1
|
export declare const CODE_ROUTER = "code-router";
|
|
3
2
|
export declare const FILE_ROUTER = "file-router";
|
|
4
|
-
export declare const SUPPORTED_FRAMEWORKS: Array<Framework>;
|
|
5
|
-
export declare const DEFAULT_FRAMEWORK: Framework;
|
|
6
3
|
export declare const CONFIG_FILE = ".cta.json";
|
|
@@ -1,8 +1,2 @@
|
|
|
1
1
|
import type { Environment, Options } from './types.js';
|
|
2
|
-
export declare function createApp(
|
|
3
|
-
silent?: boolean;
|
|
4
|
-
environment: Environment;
|
|
5
|
-
cwd?: string;
|
|
6
|
-
name?: string;
|
|
7
|
-
appName?: string;
|
|
8
|
-
}): Promise<void>;
|
|
2
|
+
export declare function createApp(environment: Environment, options: Options): Promise<void>;
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import type { PersistedOptions } from '../config-file';
|
|
2
|
+
import type { AddOn, AddOnInfo, Environment } from '../types';
|
|
3
|
+
export declare const ADD_ON_IGNORE_FILES: Array<string>;
|
|
4
|
+
export declare function camelCase(str: string): string;
|
|
5
|
+
export declare function templatize(routeCode: string, routeFile: string): {
|
|
6
|
+
url: string;
|
|
7
|
+
code: string;
|
|
8
|
+
name: string;
|
|
9
|
+
jsName: string;
|
|
10
|
+
};
|
|
11
|
+
export declare function validateAddOnSetup(environment: Environment): Promise<void>;
|
|
12
|
+
export declare function readOrGenerateAddOnInfo(options: PersistedOptions): Promise<AddOnInfo>;
|
|
13
|
+
export declare function generateProject(persistedOptions: PersistedOptions): Promise<{
|
|
14
|
+
info: {
|
|
15
|
+
id: string;
|
|
16
|
+
name: string;
|
|
17
|
+
description: string;
|
|
18
|
+
type: "add-on" | "example" | "starter" | "toolchain";
|
|
19
|
+
modes: string[];
|
|
20
|
+
phase: "add-on" | "setup";
|
|
21
|
+
command?: {
|
|
22
|
+
command: string;
|
|
23
|
+
args?: string[] | undefined;
|
|
24
|
+
} | undefined;
|
|
25
|
+
author?: string | undefined;
|
|
26
|
+
version?: string | undefined;
|
|
27
|
+
link?: string | undefined;
|
|
28
|
+
license?: string | undefined;
|
|
29
|
+
warning?: string | undefined;
|
|
30
|
+
routes?: {
|
|
31
|
+
path: string;
|
|
32
|
+
jsName: string;
|
|
33
|
+
name?: string | undefined;
|
|
34
|
+
url?: string | undefined;
|
|
35
|
+
}[] | undefined;
|
|
36
|
+
packageAdditions?: {
|
|
37
|
+
dependencies?: Record<string, string> | undefined;
|
|
38
|
+
devDependencies?: Record<string, string> | undefined;
|
|
39
|
+
scripts?: Record<string, string> | undefined;
|
|
40
|
+
} | undefined;
|
|
41
|
+
shadcnComponents?: string[] | undefined;
|
|
42
|
+
dependsOn?: string[] | undefined;
|
|
43
|
+
smallLogo?: string | undefined;
|
|
44
|
+
logo?: string | undefined;
|
|
45
|
+
addOnSpecialSteps?: string[] | undefined;
|
|
46
|
+
createSpecialSteps?: string[] | undefined;
|
|
47
|
+
integrations?: {
|
|
48
|
+
type: string;
|
|
49
|
+
path: string;
|
|
50
|
+
jsName: string;
|
|
51
|
+
}[] | undefined;
|
|
52
|
+
readme?: string | undefined;
|
|
53
|
+
};
|
|
54
|
+
output: {
|
|
55
|
+
files: Record<string, string>;
|
|
56
|
+
deletedFiles: Array<string>;
|
|
57
|
+
commands: Array<{
|
|
58
|
+
command: string;
|
|
59
|
+
args: Array<string>;
|
|
60
|
+
}>;
|
|
61
|
+
};
|
|
62
|
+
}>;
|
|
63
|
+
export declare function buildAssetsDirectory(output: {
|
|
64
|
+
files: Record<string, string>;
|
|
65
|
+
}, info: AddOnInfo): Promise<void>;
|
|
66
|
+
export declare function updateAddOnInfo(environment: Environment): Promise<void>;
|
|
67
|
+
export declare function compileAddOn(environment: Environment): Promise<void>;
|
|
68
|
+
export declare function initAddOn(environment: Environment): Promise<void>;
|
|
69
|
+
export declare function loadRemoteAddOn(url: string): Promise<AddOn>;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { Environment, Options, SerializedOptions } from '../types.js';
|
|
2
|
+
import type { PersistedOptions } from '../config-file.js';
|
|
3
|
+
export declare function createPackageAdditions(originalPackageJson: Record<string, any>, currentPackageJson: Record<string, any>): Record<string, any>;
|
|
4
|
+
export declare function createAppOptionsFromPersisted(json: PersistedOptions): Promise<Options>;
|
|
5
|
+
export declare function createSerializedOptionsFromPersisted(json: PersistedOptions): SerializedOptions;
|
|
6
|
+
export declare function runCreateApp(options: Required<Options>): Promise<{
|
|
7
|
+
files: Record<string, string>;
|
|
8
|
+
deletedFiles: Array<string>;
|
|
9
|
+
commands: Array<{
|
|
10
|
+
command: string;
|
|
11
|
+
args: Array<string>;
|
|
12
|
+
}>;
|
|
13
|
+
}>;
|
|
14
|
+
export declare function compareFilesRecursively(path: string, ignore: (filePath: string) => boolean, original: Record<string, string>, changedFiles: Record<string, string>): Promise<void>;
|
|
15
|
+
export declare function readCurrentProjectOptions(environment: Environment): Promise<PersistedOptions>;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { PersistedOptions } from '../config-file';
|
|
2
|
+
import type { Environment, Starter, StarterInfo } from '../types';
|
|
3
|
+
export declare function readOrGenerateStarterInfo(options: PersistedOptions): Promise<StarterInfo>;
|
|
4
|
+
export declare function updateStarterInfo(environment: Environment): Promise<void>;
|
|
5
|
+
export declare function compileStarter(environment: Environment): Promise<void>;
|
|
6
|
+
export declare function initStarter(environment: Environment): Promise<void>;
|
|
7
|
+
export declare function loadStarter(url: string): Promise<Starter>;
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import type { Environment } from './types.js';
|
|
2
2
|
export declare function createDefaultEnvironment(): Environment;
|
|
3
|
-
export declare function createMemoryEnvironment(): {
|
|
3
|
+
export declare function createMemoryEnvironment(returnPathsRelativeTo?: string): {
|
|
4
4
|
environment: Environment;
|
|
5
5
|
output: {
|
|
6
6
|
files: Record<string, string>;
|
|
7
|
+
deletedFiles: Array<string>;
|
|
7
8
|
commands: Array<{
|
|
8
9
|
command: string;
|
|
9
10
|
args: Array<string>;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { Environment } from './types';
|
|
2
|
+
export declare function readFileHelper(path: string): string;
|
|
3
|
+
export declare function isBinaryFile(path: string): boolean;
|
|
4
|
+
export declare function convertBinaryContentsToBase64(contents: any): string;
|
|
5
|
+
export declare function isBase64(content: string): boolean;
|
|
6
|
+
export declare function getBinaryFile(content: string): string | null;
|
|
7
|
+
export declare function relativePath(from: string, to: string): string;
|
|
8
|
+
export declare function isDirectory(path: string): boolean;
|
|
9
|
+
export declare function findFilesRecursively(path: string, files: Record<string, string>): void;
|
|
10
|
+
export declare function recursivelyGatherFiles(path: string, includeProjectFiles?: boolean): Promise<Record<string, string>>;
|
|
11
|
+
export declare function recursivelyGatherFilesFromEnvironment(environment: Environment, path: string, includeProjectFiles?: boolean): Promise<Record<string, string>>;
|
|
12
|
+
export declare const IGNORE_FILES: string[];
|
|
13
|
+
export declare function createIgnore(path: string, includeProjectFiles?: boolean): (filePath: string) => boolean;
|
|
14
|
+
export declare function cleanUpFiles(files: Record<string, string>, targetDir?: string): Record<string, string>;
|
|
15
|
+
export declare function cleanUpFileArray(files: Array<string>, targetDir?: string): string[];
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { Framework, FrameworkDefinition } from './types.js';
|
|
2
|
+
export declare function __testRegisterFramework(framework: Framework): void;
|
|
3
|
+
export declare function __testClearFrameworks(): void;
|
|
4
|
+
export declare function registerFramework(framework: FrameworkDefinition): void;
|
|
5
|
+
export declare function getFrameworkById(id: string): Framework | undefined;
|
|
6
|
+
export declare function getFrameworkByName(name: string): Framework | undefined;
|
|
7
|
+
export declare function getFrameworks(): Framework[];
|
package/dist/types/index.d.ts
CHANGED
|
@@ -1 +1,21 @@
|
|
|
1
|
-
export {
|
|
1
|
+
export { createApp } from './create-app.js';
|
|
2
|
+
export { addToApp } from './add-to-app.js';
|
|
3
|
+
export { finalizeAddOns, getAllAddOns } from './add-ons.js';
|
|
4
|
+
export { loadRemoteAddOn } from './custom-add-ons/add-on.js';
|
|
5
|
+
export { loadStarter } from './custom-add-ons/starter.js';
|
|
6
|
+
export { createMemoryEnvironment, createDefaultEnvironment, } from './environment.js';
|
|
7
|
+
export { CODE_ROUTER, CONFIG_FILE, FILE_ROUTER } from './constants.js';
|
|
8
|
+
export { DEFAULT_PACKAGE_MANAGER, SUPPORTED_PACKAGE_MANAGERS, getPackageManager, } from './package-manager.js';
|
|
9
|
+
export { registerFramework, getFrameworkById, getFrameworkByName, getFrameworks, } from './frameworks.js';
|
|
10
|
+
export { writeConfigFileToEnvironment, readConfigFileFromEnvironment, readConfigFile, } from './config-file.js';
|
|
11
|
+
export { cleanUpFiles, cleanUpFileArray, readFileHelper, getBinaryFile, recursivelyGatherFiles, relativePath, } from './file-helpers.js';
|
|
12
|
+
export { formatCommand } from './utils.js';
|
|
13
|
+
export { initStarter, compileStarter } from './custom-add-ons/starter.js';
|
|
14
|
+
export { initAddOn, compileAddOn } from './custom-add-ons/add-on.js';
|
|
15
|
+
export { createAppOptionsFromPersisted, createSerializedOptionsFromPersisted, } from './custom-add-ons/shared.js';
|
|
16
|
+
export { createSerializedOptions } from './options.js';
|
|
17
|
+
export { getRawRegistry, getRegistry, getRegistryAddOns, getRegistryStarters, } from './registry.js';
|
|
18
|
+
export { StarterCompiledSchema, StatusEvent, StatusStepType, StopEvent, AddOnCompiledSchema, AddOnInfoSchema, IntegrationSchema, } from './types.js';
|
|
19
|
+
export type { AddOn, Environment, FileBundleHandler, Framework, FrameworkDefinition, Mode, Options, SerializedOptions, Starter, StarterCompiled, } from './types.js';
|
|
20
|
+
export type { PersistedOptions } from './config-file.js';
|
|
21
|
+
export type { PackageManager } from './package-manager.js';
|
package/dist/types/options.d.ts
CHANGED
|
@@ -1,6 +1,2 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
export declare
|
|
3
|
-
export declare function promptForOptions(cliOptions: CliOptions, { forcedAddOns, forcedMode, }: {
|
|
4
|
-
forcedAddOns?: Array<string>;
|
|
5
|
-
forcedMode?: TemplateOptions;
|
|
6
|
-
}): Promise<Required<Options> | undefined>;
|
|
1
|
+
import type { Options, SerializedOptions } from './types';
|
|
2
|
+
export declare const createSerializedOptions: (options: Options) => SerializedOptions;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { Options } from './types.js';
|
|
2
|
+
export declare function mergePackageJSON(packageJSON: Record<string, any>, overlayPackageJSON?: Record<string, any>): {
|
|
3
|
+
dependencies: any;
|
|
4
|
+
devDependencies: any;
|
|
5
|
+
scripts: any;
|
|
6
|
+
};
|
|
7
|
+
export declare function createPackageJSON(options: Options): any;
|
|
@@ -3,4 +3,21 @@ export declare const SUPPORTED_PACKAGE_MANAGERS: readonly ["npm", "yarn", "pnpm"
|
|
|
3
3
|
export type PackageManager = (typeof SUPPORTED_PACKAGE_MANAGERS)[number];
|
|
4
4
|
export declare const DEFAULT_PACKAGE_MANAGER: PackageManager;
|
|
5
5
|
export declare function getPackageManager(): PackageManager | undefined;
|
|
6
|
-
export declare function
|
|
6
|
+
export declare function getPackageManagerScriptCommand(packagerManager: PackageManager, args?: Array<string>): {
|
|
7
|
+
command: string;
|
|
8
|
+
args: string[];
|
|
9
|
+
};
|
|
10
|
+
export declare function getPackageManagerExecuteCommand(packagerManager: PackageManager, pkg: string, args?: Array<string>): {
|
|
11
|
+
command: string;
|
|
12
|
+
args: string[];
|
|
13
|
+
};
|
|
14
|
+
export declare function getPackageManagerInstallCommand(packagerManager: PackageManager, pkg?: string, isDev?: boolean): {
|
|
15
|
+
command: "npm" | "yarn" | "pnpm" | "bun" | "deno";
|
|
16
|
+
args: string[];
|
|
17
|
+
};
|
|
18
|
+
export declare function packageManagerInstall(environment: Environment, cwd: string, packagerManager: PackageManager, pkg?: string): Promise<{
|
|
19
|
+
stdout: string;
|
|
20
|
+
}>;
|
|
21
|
+
export declare function packageManagerExecute(environment: Environment, cwd: string, packagerManager: PackageManager, pkg: string, args: Array<string>): Promise<{
|
|
22
|
+
stdout: string;
|
|
23
|
+
}>;
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { AddOn, Mode, Starter } from './types';
|
|
2
|
+
export type Registry = {
|
|
3
|
+
starters: Array<{
|
|
4
|
+
name: string;
|
|
5
|
+
description: string;
|
|
6
|
+
url: string;
|
|
7
|
+
banner?: string;
|
|
8
|
+
mode: Mode;
|
|
9
|
+
framework: string;
|
|
10
|
+
}>;
|
|
11
|
+
'add-ons': Array<{
|
|
12
|
+
name: string;
|
|
13
|
+
description: string;
|
|
14
|
+
url: string;
|
|
15
|
+
modes: Array<Mode>;
|
|
16
|
+
framework: string;
|
|
17
|
+
}>;
|
|
18
|
+
};
|
|
19
|
+
export declare function getRawRegistry(registryUrl?: string): Promise<Registry | undefined>;
|
|
20
|
+
export declare function getRegistryAddOns(registryUrl?: string): Promise<Array<AddOn>>;
|
|
21
|
+
export declare function getRegistryStarters(registryUrl?: string): Promise<Array<Starter>>;
|
|
22
|
+
export declare function getRegistry(registryUrl?: string): Promise<{
|
|
23
|
+
addOns: Array<AddOn>;
|
|
24
|
+
starters: Array<Starter>;
|
|
25
|
+
}>;
|