bsmnt 0.1.3 → 0.2.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/README.md +18 -18
- package/dist/configs/animations.d.ts +25 -0
- package/dist/configs/animations.d.ts.map +1 -0
- package/dist/configs/animations.js +29 -0
- package/dist/configs/animations.js.map +1 -0
- package/dist/helpers/add/hooks-config.d.ts +22 -0
- package/dist/helpers/add/hooks-config.d.ts.map +1 -0
- package/dist/helpers/add/hooks-config.js +37 -0
- package/dist/helpers/add/hooks-config.js.map +1 -0
- package/dist/helpers/add/index.d.ts +18 -0
- package/dist/helpers/add/index.d.ts.map +1 -0
- package/dist/helpers/add/index.js +152 -0
- package/dist/helpers/add/index.js.map +1 -0
- package/dist/helpers/create/copy-template.d.ts +11 -0
- package/dist/helpers/create/copy-template.d.ts.map +1 -0
- package/dist/helpers/create/copy-template.js +19 -0
- package/dist/helpers/create/copy-template.js.map +1 -0
- package/dist/helpers/create/index.d.ts +22 -0
- package/dist/helpers/create/index.d.ts.map +1 -0
- package/dist/helpers/create/index.js +81 -0
- package/dist/helpers/create/index.js.map +1 -0
- package/dist/helpers/create/install.d.ts +8 -0
- package/dist/helpers/create/install.d.ts.map +1 -0
- package/dist/helpers/create/install.js +20 -0
- package/dist/helpers/create/install.js.map +1 -0
- package/dist/helpers/create/rename-files.d.ts +10 -0
- package/dist/helpers/create/rename-files.d.ts.map +1 -0
- package/dist/helpers/create/rename-files.js +17 -0
- package/dist/helpers/create/rename-files.js.map +1 -0
- package/dist/helpers/create/setup-agent.d.ts +21 -0
- package/dist/helpers/create/setup-agent.d.ts.map +1 -0
- package/dist/helpers/create/setup-agent.js +65 -0
- package/dist/helpers/create/setup-agent.js.map +1 -0
- package/dist/helpers/create/setup-sanity.d.ts +23 -0
- package/dist/helpers/create/setup-sanity.d.ts.map +1 -0
- package/dist/helpers/create/setup-sanity.js +354 -0
- package/dist/helpers/create/setup-sanity.js.map +1 -0
- package/dist/helpers/create/update-package.d.ts +20 -0
- package/dist/helpers/create/update-package.d.ts.map +1 -0
- package/dist/helpers/create/update-package.js +87 -0
- package/dist/helpers/create/update-package.js.map +1 -0
- package/dist/helpers/integrate/index.d.ts +13 -0
- package/dist/helpers/integrate/index.d.ts.map +1 -0
- package/dist/helpers/integrate/index.js +204 -0
- package/dist/helpers/integrate/index.js.map +1 -0
- package/dist/helpers/integrate/merge-config.d.ts +21 -0
- package/dist/helpers/integrate/merge-config.d.ts.map +1 -0
- package/dist/helpers/integrate/merge-config.js +38 -0
- package/dist/helpers/integrate/merge-config.js.map +1 -0
- package/dist/helpers/integrate/merge-orchestrator.d.ts +10 -0
- package/dist/helpers/integrate/merge-orchestrator.d.ts.map +1 -0
- package/dist/helpers/integrate/merge-orchestrator.js +188 -0
- package/dist/helpers/integrate/merge-orchestrator.js.map +1 -0
- package/dist/helpers/integrate/sanity/config.d.ts +14 -0
- package/dist/helpers/integrate/sanity/config.d.ts.map +1 -0
- package/dist/helpers/integrate/sanity/config.js +38 -0
- package/dist/helpers/integrate/sanity/config.js.map +1 -0
- package/dist/helpers/integrate/sanity/mergers/check-integration-merger.d.ts +13 -0
- package/dist/helpers/integrate/sanity/mergers/check-integration-merger.d.ts.map +1 -0
- package/dist/helpers/integrate/sanity/mergers/check-integration-merger.js +84 -0
- package/dist/helpers/integrate/sanity/mergers/check-integration-merger.js.map +1 -0
- package/dist/helpers/integrate/sanity/mergers/layout-merger.d.ts +23 -0
- package/dist/helpers/integrate/sanity/mergers/layout-merger.d.ts.map +1 -0
- package/dist/helpers/integrate/sanity/mergers/layout-merger.js +161 -0
- package/dist/helpers/integrate/sanity/mergers/layout-merger.js.map +1 -0
- package/dist/helpers/integrate/sanity/mergers/sitemap-merger.d.ts +13 -0
- package/dist/helpers/integrate/sanity/mergers/sitemap-merger.d.ts.map +1 -0
- package/{packages/create-basement-app/src → dist/helpers/integrate/sanity}/mergers/sitemap-merger.js +33 -45
- package/dist/helpers/integrate/sanity/mergers/sitemap-merger.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +337 -0
- package/dist/index.js.map +1 -0
- package/dist/paths.d.ts +14 -0
- package/dist/paths.d.ts.map +1 -0
- package/dist/paths.js +24 -0
- package/dist/paths.js.map +1 -0
- package/dist/utils/detect-project.d.ts +40 -0
- package/dist/utils/detect-project.d.ts.map +1 -0
- package/dist/utils/detect-project.js +69 -0
- package/dist/utils/detect-project.js.map +1 -0
- package/dist/utils/format-results.d.ts +24 -0
- package/dist/utils/format-results.d.ts.map +1 -0
- package/dist/utils/format-results.js +27 -0
- package/dist/utils/format-results.js.map +1 -0
- package/index.js +25 -0
- package/package.json +40 -15
- package/{packages/create-basement-app/templates/experiment → src/templates/next-default}/app/layout.tsx +18 -18
- package/src/templates/next-default/app/page.tsx +11 -0
- package/{packages/create-basement-app/templates/experiment → src/templates/next-default}/app/robots.ts +3 -3
- package/{packages/create-basement-app/templates/webgl → src/templates/next-default}/app/sitemap.ts +4 -4
- package/{packages/create-basement-app/templates/default → src/templates/next-default}/biome.json +2 -2
- package/{packages/create-basement-app/templates/webgl → src/templates/next-default}/components/layout/footer/index.tsx +5 -1
- package/{packages/create-basement-app/templates/webgl → src/templates/next-default}/components/layout/header/index.tsx +1 -3
- package/{packages/create-basement-app/templates/default → src/templates/next-default}/components/layout/theme/index.tsx +1 -1
- package/{packages/create-basement-app/templates/default → src/templates/next-default}/components/layout/wrapper/index.tsx +0 -2
- package/{packages/create-basement-app/templates/webgl → src/templates/next-default}/components/ui/image/index.tsx +6 -11
- package/{packages/create-basement-app/templates/experiment → src/templates/next-default}/components/ui/link/index.tsx +39 -33
- package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/utils/metadata.ts +26 -26
- package/{packages/create-basement-app/templates/default → src/templates/next-default}/package.json +4 -4
- package/{packages/create-basement-app/templates/webgl → src/templates/next-experiments}/app/layout.tsx +18 -18
- package/{packages/create-basement-app/templates/webgl → src/templates/next-experiments}/app/robots.ts +3 -3
- package/{packages/create-basement-app/templates/default → src/templates/next-experiments}/app/sitemap.ts +4 -4
- package/{packages/create-basement-app/templates/webgl → src/templates/next-experiments}/biome.json +2 -2
- package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/components/layout/theme/index.tsx +1 -1
- package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/components/layout/wrapper/index.tsx +7 -9
- package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/components/ui/image/index.tsx +39 -46
- package/{packages/create-basement-app/templates/default → src/templates/next-experiments}/components/ui/link/index.tsx +6 -0
- package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/utils/metadata.ts +26 -26
- package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/package.json +4 -4
- package/{packages/create-basement-app/templates/default → src/templates/next-webgl}/app/layout.tsx +18 -18
- package/{packages/create-basement-app/templates/default → src/templates/next-webgl}/app/robots.ts +3 -3
- package/{packages/create-basement-app/templates/experiment → src/templates/next-webgl}/app/sitemap.ts +4 -4
- package/{packages/create-basement-app/templates/experiment → src/templates/next-webgl}/biome.json +2 -2
- package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/components/layout/theme/index.tsx +1 -1
- package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/components/layout/wrapper/index.tsx +0 -2
- package/{packages/create-basement-app/templates/default → src/templates/next-webgl}/components/ui/image/index.tsx +6 -11
- package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/components/ui/link/index.tsx +9 -2
- package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/components/webgl/components/scene/index.tsx +1 -0
- package/src/templates/next-webgl/lib/renderer.ts +7 -0
- package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/utils/metadata.ts +26 -26
- package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/package.json +4 -4
- package/packages/cli/bin/index.js +0 -259
- package/packages/cli/src/commands/add-integration.js +0 -310
- package/packages/cli/src/commands/create.js +0 -409
- package/packages/cli/src/commands/setup-sanity.js +0 -426
- package/packages/cli/src/commands/worktree.js +0 -805
- package/packages/create-basement-app/integrations/sanity/config.js +0 -46
- package/packages/create-basement-app/integrations/sanity/files/app/api/draft-mode/disable/route.ts +0 -7
- package/packages/create-basement-app/integrations/sanity/files/app/api/draft-mode/enable/route.ts +0 -21
- package/packages/create-basement-app/integrations/sanity/files/app/api/revalidate/route.ts +0 -37
- package/packages/create-basement-app/integrations/sanity/files/app/layout.tsx +0 -111
- package/packages/create-basement-app/integrations/sanity/files/app/sitemap.ts +0 -80
- package/packages/create-basement-app/integrations/sanity/files/app/studio/[[...tool]]/page.tsx +0 -8
- package/packages/create-basement-app/integrations/sanity/files/app/studio/layout.tsx +0 -7
- package/packages/create-basement-app/integrations/sanity/files/components/ui/sanity-image/index.tsx +0 -37
- package/packages/create-basement-app/integrations/sanity/files/lib/integrations/README.md +0 -58
- package/packages/create-basement-app/integrations/sanity/files/lib/integrations/check-integration.ts +0 -62
- package/packages/create-basement-app/integrations/sanity/files/lib/integrations/sanity/README.md +0 -144
- package/packages/create-basement-app/integrations/sanity/files/lib/integrations/sanity/client.ts +0 -30
- package/packages/create-basement-app/integrations/sanity/files/lib/integrations/sanity/components/disable-draft-mode.tsx +0 -29
- package/packages/create-basement-app/integrations/sanity/files/lib/integrations/sanity/components/rich-text.tsx +0 -73
- package/packages/create-basement-app/integrations/sanity/files/lib/integrations/sanity/env.ts +0 -38
- package/packages/create-basement-app/integrations/sanity/files/lib/integrations/sanity/live/index.tsx +0 -34
- package/packages/create-basement-app/integrations/sanity/files/lib/integrations/sanity/queries.ts +0 -99
- package/packages/create-basement-app/integrations/sanity/files/lib/integrations/sanity/sanity.cli.ts +0 -20
- package/packages/create-basement-app/integrations/sanity/files/lib/integrations/sanity/sanity.config.ts +0 -94
- package/packages/create-basement-app/integrations/sanity/files/lib/integrations/sanity/sanity.types.ts +0 -337
- package/packages/create-basement-app/integrations/sanity/files/lib/integrations/sanity/schema.json +0 -1850
- package/packages/create-basement-app/integrations/sanity/files/lib/integrations/sanity/schemas/article.ts +0 -132
- package/packages/create-basement-app/integrations/sanity/files/lib/integrations/sanity/schemas/example.ts +0 -203
- package/packages/create-basement-app/integrations/sanity/files/lib/integrations/sanity/schemas/index.ts +0 -37
- package/packages/create-basement-app/integrations/sanity/files/lib/integrations/sanity/schemas/link.ts +0 -127
- package/packages/create-basement-app/integrations/sanity/files/lib/integrations/sanity/schemas/metadata.ts +0 -68
- package/packages/create-basement-app/integrations/sanity/files/lib/integrations/sanity/schemas/navigation.ts +0 -39
- package/packages/create-basement-app/integrations/sanity/files/lib/integrations/sanity/schemas/page.ts +0 -77
- package/packages/create-basement-app/integrations/sanity/files/lib/integrations/sanity/schemas/richText.ts +0 -59
- package/packages/create-basement-app/integrations/sanity/files/lib/integrations/sanity/structure.ts +0 -5
- package/packages/create-basement-app/integrations/sanity/files/lib/integrations/sanity/utils/image.ts +0 -11
- package/packages/create-basement-app/integrations/sanity/files/lib/integrations/sanity/utils/link.ts +0 -61
- package/packages/create-basement-app/integrations/sanity/files/lib/scripts/copy-sanity-mcp.ts +0 -23
- package/packages/create-basement-app/integrations/sanity/files/lib/scripts/generate-page.ts +0 -310
- package/packages/create-basement-app/integrations/sanity/files/lib/utils/metadata.ts +0 -190
- package/packages/create-basement-app/integrations/sanity/mergers/check-integration-merger.js +0 -105
- package/packages/create-basement-app/integrations/sanity/mergers/layout-merger.js +0 -223
- package/packages/create-basement-app/integrations/sanity/mergers/sitemap-merger.js +0 -121
- package/packages/create-basement-app/package.json +0 -10
- package/packages/create-basement-app/src/configs/animations.js +0 -28
- package/packages/create-basement-app/src/index.js +0 -15
- package/packages/create-basement-app/src/mergers/check-integration-merger.js +0 -105
- package/packages/create-basement-app/src/mergers/config.js +0 -109
- package/packages/create-basement-app/src/mergers/index.js +0 -346
- package/packages/create-basement-app/src/mergers/layout-merger.js +0 -223
- package/packages/create-basement-app/templates/default/.cursor/rules/README.md +0 -184
- package/packages/create-basement-app/templates/default/.cursor/rules/architecture.mdc +0 -437
- package/packages/create-basement-app/templates/default/.cursor/rules/components.mdc +0 -436
- package/packages/create-basement-app/templates/default/.cursor/rules/integrations.mdc +0 -447
- package/packages/create-basement-app/templates/default/.cursor/rules/main.mdc +0 -278
- package/packages/create-basement-app/templates/default/.cursor/rules/styling.mdc +0 -433
- package/packages/create-basement-app/templates/default/.github/workflows/lighthouse-to-slack.yml +0 -136
- package/packages/create-basement-app/templates/experiment/.cursor/rules/README.md +0 -184
- package/packages/create-basement-app/templates/experiment/.cursor/rules/architecture.mdc +0 -437
- package/packages/create-basement-app/templates/experiment/.cursor/rules/components.mdc +0 -436
- package/packages/create-basement-app/templates/experiment/.cursor/rules/integrations.mdc +0 -447
- package/packages/create-basement-app/templates/experiment/.cursor/rules/main.mdc +0 -278
- package/packages/create-basement-app/templates/experiment/.cursor/rules/styling.mdc +0 -433
- package/packages/create-basement-app/templates/experiment/.github/workflows/lighthouse-to-slack.yml +0 -136
- package/packages/create-basement-app/templates/experiment/app/page.tsx +0 -275
- package/packages/create-basement-app/templates/webgl/.biome/plugins/README.md +0 -21
- package/packages/create-basement-app/templates/webgl/.cursor/rules/README.md +0 -184
- package/packages/create-basement-app/templates/webgl/.cursor/rules/architecture.mdc +0 -437
- package/packages/create-basement-app/templates/webgl/.cursor/rules/components.mdc +0 -436
- package/packages/create-basement-app/templates/webgl/.cursor/rules/integrations.mdc +0 -447
- package/packages/create-basement-app/templates/webgl/.cursor/rules/main.mdc +0 -278
- package/packages/create-basement-app/templates/webgl/.cursor/rules/styling.mdc +0 -433
- package/packages/create-basement-app/templates/webgl/.github/workflows/lighthouse-to-slack.yml +0 -136
- /package/{packages/create-basement-app/plugins → plugins}/no-anchor-element.grit +0 -0
- /package/{packages/create-basement-app/plugins → plugins}/no-relative-parent-imports.grit +0 -0
- /package/{packages/create-basement-app/plugins → plugins}/no-unnecessary-forwardref.grit +0 -0
- /package/{packages/create-basement-app → src}/template-hooks/config.js +0 -0
- /package/{packages/create-basement-app → src}/template-hooks/use-battery.ts +0 -0
- /package/{packages/create-basement-app → src}/template-hooks/use-device-perf.ts +0 -0
- /package/{packages/create-basement-app → src}/template-hooks/use-intersection-observer.ts +0 -0
- /package/{packages/create-basement-app → src}/template-hooks/use-media.ts +0 -0
- /package/{packages/create-basement-app → src/templates/next-default/.biome}/plugins/README.md +0 -0
- /package/{packages/create-basement-app/templates/default → src/templates/next-default}/.biome/plugins/no-anchor-element.grit +0 -0
- /package/{packages/create-basement-app/templates/default → src/templates/next-default}/.biome/plugins/no-relative-parent-imports.grit +0 -0
- /package/{packages/create-basement-app/templates/default → src/templates/next-default}/.biome/plugins/no-unnecessary-forwardref.grit +0 -0
- /package/{packages/create-basement-app/templates/default → src/templates/next-default}/.editorconfig +0 -0
- /package/{packages/create-basement-app/templates/default → src/templates/next-default}/.env.example +0 -0
- /package/{packages/create-basement-app/templates/default → src/templates/next-default}/.gitattributes +0 -0
- /package/{packages/create-basement-app/templates/default → src/templates/next-default}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
- /package/{packages/create-basement-app/templates/default → src/templates/next-default}/.vscode/extensions.json +0 -0
- /package/{packages/create-basement-app/templates/default → src/templates/next-default}/.vscode/settings.json +0 -0
- /package/{packages/create-basement-app/templates/default → src/templates/next-default}/README.md +0 -0
- /package/{packages/create-basement-app/templates/default → src/templates/next-default}/_gitignore +0 -0
- /package/{packages/create-basement-app/templates/default → src/templates/next-default}/app/favicon.ico +0 -0
- /package/{packages/create-basement-app/templates/default → src/templates/next-default}/components/basement.svg +0 -0
- /package/{packages/create-basement-app/templates/default → src/templates/next-default}/components/ui/README.md +0 -0
- /package/{packages/create-basement-app/templates/default → src/templates/next-default}/components/ui/image/README.md +0 -0
- /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/README.md +0 -0
- /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/hooks/index.ts +0 -0
- /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/hooks/use-device-detection.ts +0 -0
- /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/hooks/use-media-breakpoint.ts +0 -0
- /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/hooks/use-prefetch.ts +0 -0
- /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/integrations/.gitkeep +0 -0
- /package/{packages/create-basement-app/templates/webgl → src/templates/next-default}/lib/renderer.ts +0 -0
- /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/scripts/dev.ts +0 -0
- /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/scripts/generate-component.ts +0 -0
- /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/scripts/generate-page.ts +0 -0
- /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/scripts/generate.ts +0 -0
- /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/scripts/utils.ts +0 -0
- /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/store/app.ts +0 -0
- /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/store/index.ts +0 -0
- /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/styles/README.md +0 -0
- /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/styles/cn.ts +0 -0
- /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/styles/colors.ts +0 -0
- /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/styles/config.ts +0 -0
- /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/styles/css/global.css +0 -0
- /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/styles/css/index.css +0 -0
- /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/styles/css/reset.css +0 -0
- /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/styles/css/root.css +0 -0
- /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/styles/css/tailwind.css +0 -0
- /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/styles/easings.ts +0 -0
- /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/styles/fonts.ts +0 -0
- /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/styles/index.ts +0 -0
- /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/styles/layout.mjs +0 -0
- /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/styles/scripts/README.md +0 -0
- /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/styles/scripts/generate-root.ts +0 -0
- /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/styles/scripts/generate-tailwind.ts +0 -0
- /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/styles/scripts/postcss-functions.mjs +0 -0
- /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/styles/scripts/setup-styles.ts +0 -0
- /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/styles/scripts/utils.ts +0 -0
- /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/styles/typography.ts +0 -0
- /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/utils/README.md +0 -0
- /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/utils/css.d.ts +0 -0
- /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/utils/easings.ts +0 -0
- /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/utils/fetch.ts +0 -0
- /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/utils/math.test.ts +0 -0
- /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/utils/math.ts +0 -0
- /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/utils/strings.test.ts +0 -0
- /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/utils/strings.ts +0 -0
- /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/utils/types.d.ts +0 -0
- /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/utils/viewport.test.ts +0 -0
- /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/utils/viewport.ts +0 -0
- /package/{packages/create-basement-app/templates/default → src/templates/next-default}/next.config.ts +0 -0
- /package/{packages/create-basement-app/templates/default → src/templates/next-default}/postcss.config.mjs +0 -0
- /package/{packages/create-basement-app/templates/default → src/templates/next-default}/public/fonts/geist/Geist-Mono.woff2 +0 -0
- /package/{packages/create-basement-app/templates/default → src/templates/next-default}/tsconfig.json +0 -0
- /package/{packages/create-basement-app/templates/default → src/templates/next-experiments}/.biome/plugins/README.md +0 -0
- /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/.biome/plugins/no-anchor-element.grit +0 -0
- /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/.biome/plugins/no-relative-parent-imports.grit +0 -0
- /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/.biome/plugins/no-unnecessary-forwardref.grit +0 -0
- /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/.editorconfig +0 -0
- /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/.env.example +0 -0
- /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/.gitattributes +0 -0
- /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
- /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/.vscode/extensions.json +0 -0
- /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/.vscode/settings.json +0 -0
- /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/README.md +0 -0
- /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/_gitignore +0 -0
- /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/app/favicon.ico +0 -0
- /package/{packages/create-basement-app/templates/default → src/templates/next-experiments}/app/page.tsx +0 -0
- /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/components/basement.svg +0 -0
- /package/{packages/create-basement-app/templates/default → src/templates/next-experiments}/components/layout/footer/index.tsx +0 -0
- /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/components/layout/header/index.tsx +0 -0
- /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/components/layout/navigation-menu.tsx +0 -0
- /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/components/ui/README.md +0 -0
- /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/components/ui/image/README.md +0 -0
- /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/README.md +0 -0
- /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/constants.ts +0 -0
- /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/hooks/index.ts +0 -0
- /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/hooks/use-device-detection.ts +0 -0
- /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/hooks/use-media-breakpoint.ts +0 -0
- /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/hooks/use-prefetch.ts +0 -0
- /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/integrations/.gitkeep +0 -0
- /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/scripts/dev.ts +0 -0
- /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/scripts/generate-component.ts +0 -0
- /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/scripts/generate-page.ts +0 -0
- /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/scripts/generate.ts +0 -0
- /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/scripts/utils.ts +0 -0
- /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/store/app.ts +0 -0
- /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/store/index.ts +0 -0
- /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/styles/README.md +0 -0
- /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/styles/cn.ts +0 -0
- /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/styles/colors.ts +0 -0
- /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/styles/config.ts +0 -0
- /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/styles/css/global.css +0 -0
- /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/styles/css/index.css +0 -0
- /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/styles/css/reset.css +0 -0
- /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/styles/css/root.css +0 -0
- /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/styles/css/tailwind.css +0 -0
- /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/styles/easings.ts +0 -0
- /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/styles/fonts.ts +0 -0
- /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/styles/index.ts +0 -0
- /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/styles/layout.mjs +0 -0
- /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/styles/scripts/README.md +0 -0
- /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/styles/scripts/generate-root.ts +0 -0
- /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/styles/scripts/generate-tailwind.ts +0 -0
- /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/styles/scripts/postcss-functions.mjs +0 -0
- /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/styles/scripts/setup-styles.ts +0 -0
- /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/styles/scripts/utils.ts +0 -0
- /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/styles/typography.ts +0 -0
- /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/utils/README.md +0 -0
- /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/utils/css.d.ts +0 -0
- /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/utils/easings.ts +0 -0
- /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/utils/fetch.ts +0 -0
- /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/utils/math.test.ts +0 -0
- /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/utils/math.ts +0 -0
- /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/utils/strings.test.ts +0 -0
- /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/utils/strings.ts +0 -0
- /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/utils/types.d.ts +0 -0
- /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/utils/viewport.test.ts +0 -0
- /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/utils/viewport.ts +0 -0
- /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/next.config.ts +0 -0
- /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/postcss.config.mjs +0 -0
- /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/public/fonts/geist/Geist-Mono.woff2 +0 -0
- /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/tsconfig.json +0 -0
- /package/{packages/create-basement-app/templates/experiment → src/templates/next-webgl}/.biome/plugins/README.md +0 -0
- /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/.biome/plugins/no-anchor-element.grit +0 -0
- /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/.biome/plugins/no-relative-parent-imports.grit +0 -0
- /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/.biome/plugins/no-unnecessary-forwardref.grit +0 -0
- /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/.editorconfig +0 -0
- /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/.env.example +0 -0
- /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/.gitattributes +0 -0
- /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
- /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/.vscode/extensions.json +0 -0
- /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/.vscode/settings.json +0 -0
- /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/README.md +0 -0
- /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/_gitignore +0 -0
- /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/app/favicon.ico +0 -0
- /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/app/page.tsx +0 -0
- /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/components/basement.svg +0 -0
- /package/{packages/create-basement-app/templates/experiment → src/templates/next-webgl}/components/layout/footer/index.tsx +0 -0
- /package/{packages/create-basement-app/templates/default → src/templates/next-webgl}/components/layout/header/index.tsx +0 -0
- /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/components/ui/README.md +0 -0
- /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/components/ui/image/README.md +0 -0
- /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/components/webgl/canvas/dynamic.tsx +0 -0
- /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/components/webgl/canvas/index.tsx +0 -0
- /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/README.md +0 -0
- /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/hooks/index.ts +0 -0
- /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/hooks/use-device-detection.ts +0 -0
- /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/hooks/use-media-breakpoint.ts +0 -0
- /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/hooks/use-prefetch.ts +0 -0
- /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/integrations/.gitkeep +0 -0
- /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/scripts/dev.ts +0 -0
- /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/scripts/generate-component.ts +0 -0
- /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/scripts/generate-page.ts +0 -0
- /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/scripts/generate.ts +0 -0
- /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/scripts/utils.ts +0 -0
- /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/store/app.ts +0 -0
- /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/store/index.ts +0 -0
- /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/styles/README.md +0 -0
- /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/styles/cn.ts +0 -0
- /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/styles/colors.ts +0 -0
- /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/styles/config.ts +0 -0
- /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/styles/css/global.css +0 -0
- /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/styles/css/index.css +0 -0
- /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/styles/css/reset.css +0 -0
- /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/styles/css/root.css +0 -0
- /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/styles/css/tailwind.css +0 -0
- /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/styles/easings.ts +0 -0
- /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/styles/fonts.ts +0 -0
- /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/styles/index.ts +0 -0
- /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/styles/layout.mjs +0 -0
- /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/styles/scripts/README.md +0 -0
- /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/styles/scripts/generate-root.ts +0 -0
- /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/styles/scripts/generate-tailwind.ts +0 -0
- /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/styles/scripts/postcss-functions.mjs +0 -0
- /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/styles/scripts/setup-styles.ts +0 -0
- /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/styles/scripts/utils.ts +0 -0
- /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/styles/typography.ts +0 -0
- /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/utils/README.md +0 -0
- /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/utils/css.d.ts +0 -0
- /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/utils/easings.ts +0 -0
- /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/utils/fetch.ts +0 -0
- /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/utils/math.test.ts +0 -0
- /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/utils/math.ts +0 -0
- /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/utils/strings.test.ts +0 -0
- /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/utils/strings.ts +0 -0
- /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/utils/types.d.ts +0 -0
- /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/utils/viewport.test.ts +0 -0
- /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/utils/viewport.ts +0 -0
- /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/next.config.ts +0 -0
- /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/postcss.config.mjs +0 -0
- /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/public/fonts/geist/Geist-Mono.woff2 +0 -0
- /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/tsconfig.json +0 -0
package/README.md
CHANGED
|
@@ -69,36 +69,36 @@ Creates three isolated worktrees with dependencies auto-installed. Each one is a
|
|
|
69
69
|
|
|
70
70
|
## Project Structure
|
|
71
71
|
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
| Package | npm | Description |
|
|
75
|
-
|---------|-----|-------------|
|
|
76
|
-
| `packages/cli` | `@basementstudio/cli` | CLI binary — prompts, argument parsing, command routing |
|
|
77
|
-
| `packages/create-basement-app` | `@basementstudio/create-basement-app` | Templates, integrations, mergers, hooks, plugins |
|
|
72
|
+
Single TypeScript package published as `bsmnt` on npm:
|
|
78
73
|
|
|
79
74
|
```
|
|
80
|
-
|
|
81
|
-
├──
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
75
|
+
src/
|
|
76
|
+
├── index.ts # Commander program, prompts, routing
|
|
77
|
+
├── paths.ts # Centralized path resolution
|
|
78
|
+
├── configs/animations.ts # GSAP / Motion dependency configs
|
|
79
|
+
├── helpers/
|
|
80
|
+
│ ├── create/ # Project creation pipeline
|
|
81
|
+
│ ├── integrate/ # CMS integration injection
|
|
82
|
+
│ │ └── sanity/ # Sanity files, config, mergers
|
|
83
|
+
│ ├── add/ # Hook injection
|
|
84
|
+
│ └── worktree/ # Git worktree management
|
|
85
|
+
└── utils/ # detect-project, format-results
|
|
86
|
+
templates/ # Standalone project templates
|
|
87
|
+
template-hooks/ # Reusable React hooks
|
|
88
|
+
plugins/ # Biome linting rules (Grit patterns)
|
|
89
89
|
```
|
|
90
90
|
|
|
91
91
|
## (SOON) Installation
|
|
92
92
|
|
|
93
93
|
```bash
|
|
94
|
-
npm install -g
|
|
94
|
+
npm install -g bsmnt
|
|
95
95
|
```
|
|
96
96
|
|
|
97
|
-
For local development
|
|
97
|
+
For local development -- clone the repo and run:
|
|
98
98
|
|
|
99
99
|
```bash
|
|
100
100
|
bun install
|
|
101
|
-
|
|
101
|
+
npm link .
|
|
102
102
|
```
|
|
103
103
|
|
|
104
104
|
## Usage
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Animation library configuration manifest.
|
|
3
|
+
* Single source of truth for animation library dependencies.
|
|
4
|
+
*/
|
|
5
|
+
/** A map of npm package names to their semver version ranges. */
|
|
6
|
+
interface DependencyMap {
|
|
7
|
+
[packageName: string]: string;
|
|
8
|
+
}
|
|
9
|
+
/** Configuration for a single animation library. */
|
|
10
|
+
interface AnimationLibraryConfig {
|
|
11
|
+
dependencies: DependencyMap;
|
|
12
|
+
}
|
|
13
|
+
/** The supported animation library identifiers. */
|
|
14
|
+
type AnimationLibraryName = "gsap" | "motion";
|
|
15
|
+
/** The full animation config record, keyed by library name. */
|
|
16
|
+
type AnimationConfig = Record<AnimationLibraryName, AnimationLibraryConfig>;
|
|
17
|
+
export declare const ANIMATION_CONFIG: AnimationConfig;
|
|
18
|
+
/**
|
|
19
|
+
* Get configuration for a specific animation library.
|
|
20
|
+
* @param name - The animation library name (e.g., 'gsap', 'motion')
|
|
21
|
+
* @returns Animation configuration or null if not found
|
|
22
|
+
*/
|
|
23
|
+
export declare function getAnimationConfig(name: string): AnimationLibraryConfig | null;
|
|
24
|
+
export {};
|
|
25
|
+
//# sourceMappingURL=animations.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"animations.d.ts","sourceRoot":"","sources":["../../src/configs/animations.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,iEAAiE;AACjE,UAAU,aAAa;IACtB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAAC;CAC9B;AAED,oDAAoD;AACpD,UAAU,sBAAsB;IAC/B,YAAY,EAAE,aAAa,CAAC;CAC5B;AAED,mDAAmD;AACnD,KAAK,oBAAoB,GAAG,MAAM,GAAG,QAAQ,CAAC;AAE9C,+DAA+D;AAC/D,KAAK,eAAe,GAAG,MAAM,CAAC,oBAAoB,EAAE,sBAAsB,CAAC,CAAC;AAE5E,eAAO,MAAM,gBAAgB,EAAE,eAY9B,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,kBAAkB,CACjC,IAAI,EAAE,MAAM,GACV,sBAAsB,GAAG,IAAI,CAK/B"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Animation library configuration manifest.
|
|
3
|
+
* Single source of truth for animation library dependencies.
|
|
4
|
+
*/
|
|
5
|
+
export const ANIMATION_CONFIG = {
|
|
6
|
+
gsap: {
|
|
7
|
+
dependencies: {
|
|
8
|
+
gsap: "^3.12.0",
|
|
9
|
+
"@gsap/react": "^2.0.0",
|
|
10
|
+
},
|
|
11
|
+
},
|
|
12
|
+
motion: {
|
|
13
|
+
dependencies: {
|
|
14
|
+
motion: "^12.0.0",
|
|
15
|
+
},
|
|
16
|
+
},
|
|
17
|
+
};
|
|
18
|
+
/**
|
|
19
|
+
* Get configuration for a specific animation library.
|
|
20
|
+
* @param name - The animation library name (e.g., 'gsap', 'motion')
|
|
21
|
+
* @returns Animation configuration or null if not found
|
|
22
|
+
*/
|
|
23
|
+
export function getAnimationConfig(name) {
|
|
24
|
+
if (name in ANIMATION_CONFIG) {
|
|
25
|
+
return ANIMATION_CONFIG[name];
|
|
26
|
+
}
|
|
27
|
+
return null;
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=animations.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"animations.js","sourceRoot":"","sources":["../../src/configs/animations.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAkBH,MAAM,CAAC,MAAM,gBAAgB,GAAoB;IAChD,IAAI,EAAE;QACL,YAAY,EAAE;YACb,IAAI,EAAE,SAAS;YACf,aAAa,EAAE,QAAQ;SACvB;KACD;IACD,MAAM,EAAE;QACP,YAAY,EAAE;YACb,MAAM,EAAE,SAAS;SACjB;KACD;CACD,CAAC;AAEF;;;;GAIG;AACH,MAAM,UAAU,kBAAkB,CACjC,IAAY;IAEZ,IAAI,IAAI,IAAI,gBAAgB,EAAE,CAAC;QAC9B,OAAO,gBAAgB,CAAC,IAA4B,CAAC,CAAC;IACvD,CAAC;IACD,OAAO,IAAI,CAAC;AACb,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Hook configuration manifest.
|
|
3
|
+
* Each entry describes a template hook, its source file, and npm dependencies.
|
|
4
|
+
*/
|
|
5
|
+
/** A map of npm package names to their semver version ranges. */
|
|
6
|
+
interface DependencyMap {
|
|
7
|
+
[packageName: string]: string;
|
|
8
|
+
}
|
|
9
|
+
/** Configuration for a single template hook. */
|
|
10
|
+
export interface HookConfig {
|
|
11
|
+
/** Display/identifier name for the hook (e.g., "use-battery"). */
|
|
12
|
+
name: string;
|
|
13
|
+
/** Source filename within the template-hooks directory. */
|
|
14
|
+
file: string;
|
|
15
|
+
/** Runtime npm dependencies required by this hook. */
|
|
16
|
+
dependencies: DependencyMap;
|
|
17
|
+
/** Dev-only npm dependencies required by this hook. */
|
|
18
|
+
devDependencies: DependencyMap;
|
|
19
|
+
}
|
|
20
|
+
export declare const hooksConfig: readonly HookConfig[];
|
|
21
|
+
export {};
|
|
22
|
+
//# sourceMappingURL=hooks-config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hooks-config.d.ts","sourceRoot":"","sources":["../../../src/helpers/add/hooks-config.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,iEAAiE;AACjE,UAAU,aAAa;IACtB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAAC;CAC9B;AAED,gDAAgD;AAChD,MAAM,WAAW,UAAU;IAC1B,kEAAkE;IAClE,IAAI,EAAE,MAAM,CAAC;IACb,2DAA2D;IAC3D,IAAI,EAAE,MAAM,CAAC;IACb,sDAAsD;IACtD,YAAY,EAAE,aAAa,CAAC;IAC5B,uDAAuD;IACvD,eAAe,EAAE,aAAa,CAAC;CAC/B;AAED,eAAO,MAAM,WAAW,EAAE,SAAS,UAAU,EA+BnC,CAAC"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Hook configuration manifest.
|
|
3
|
+
* Each entry describes a template hook, its source file, and npm dependencies.
|
|
4
|
+
*/
|
|
5
|
+
export const hooksConfig = [
|
|
6
|
+
{
|
|
7
|
+
name: "use-battery",
|
|
8
|
+
file: "use-battery.ts",
|
|
9
|
+
dependencies: {
|
|
10
|
+
"lodash-es": "^4.17.21",
|
|
11
|
+
},
|
|
12
|
+
devDependencies: {},
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
name: "use-device-perf",
|
|
16
|
+
file: "use-device-perf.ts",
|
|
17
|
+
dependencies: {
|
|
18
|
+
"detect-gpu": "^5.0.0",
|
|
19
|
+
"react-device-detect": "^2.2.3",
|
|
20
|
+
zustand: "^5.0.0",
|
|
21
|
+
},
|
|
22
|
+
devDependencies: {},
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
name: "use-intersection-observer",
|
|
26
|
+
file: "use-intersection-observer.ts",
|
|
27
|
+
dependencies: {},
|
|
28
|
+
devDependencies: {},
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
name: "use-media",
|
|
32
|
+
file: "use-media.ts",
|
|
33
|
+
dependencies: {},
|
|
34
|
+
devDependencies: {},
|
|
35
|
+
},
|
|
36
|
+
];
|
|
37
|
+
//# sourceMappingURL=hooks-config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hooks-config.js","sourceRoot":"","sources":["../../../src/helpers/add/hooks-config.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAmBH,MAAM,CAAC,MAAM,WAAW,GAA0B;IACjD;QACC,IAAI,EAAE,aAAa;QACnB,IAAI,EAAE,gBAAgB;QACtB,YAAY,EAAE;YACb,WAAW,EAAE,UAAU;SACvB;QACD,eAAe,EAAE,EAAE;KACnB;IACD;QACC,IAAI,EAAE,iBAAiB;QACvB,IAAI,EAAE,oBAAoB;QAC1B,YAAY,EAAE;YACb,YAAY,EAAE,QAAQ;YACtB,qBAAqB,EAAE,QAAQ;YAC/B,OAAO,EAAE,QAAQ;SACjB;QACD,eAAe,EAAE,EAAE;KACnB;IACD;QACC,IAAI,EAAE,2BAA2B;QACjC,IAAI,EAAE,8BAA8B;QACpC,YAAY,EAAE,EAAE;QAChB,eAAe,EAAE,EAAE;KACnB;IACD;QACC,IAAI,EAAE,WAAW;QACjB,IAAI,EAAE,cAAc;QACpB,YAAY,EAAE,EAAE;QAChB,eAAe,EAAE,EAAE;KACnB;CACQ,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copy selected hook files from the template-hooks source directory into the
|
|
3
|
+
* target project's `hooks/` directory.
|
|
4
|
+
*
|
|
5
|
+
* Only hooks whose filenames appear in the {@link hooksConfig} manifest are
|
|
6
|
+
* considered valid. Unknown filenames are silently skipped.
|
|
7
|
+
*
|
|
8
|
+
* @param targetDir - Absolute path to the scaffolded project directory
|
|
9
|
+
* @param hookNames - Array of hook filenames to install (e.g. `["use-battery.ts"]`)
|
|
10
|
+
*/
|
|
11
|
+
export declare function addHooks(targetDir: string, hookNames: string[]): Promise<void>;
|
|
12
|
+
/**
|
|
13
|
+
* Interactive flow for adding hooks to an existing project.
|
|
14
|
+
* Validates the project, prompts for hook selection, copies files,
|
|
15
|
+
* and injects dependencies into package.json.
|
|
16
|
+
*/
|
|
17
|
+
export declare function addToProject(): Promise<void>;
|
|
18
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/helpers/add/index.ts"],"names":[],"mappings":"AASA;;;;;;;;;GASG;AACH,wBAAsB,QAAQ,CAC7B,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EAAE,GACjB,OAAO,CAAC,IAAI,CAAC,CAkBf;AAYD;;;;GAIG;AACH,wBAAsB,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC,CAwIlD"}
|
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
import path from "node:path";
|
|
2
|
+
import fs from "fs-extra";
|
|
3
|
+
import ora from "ora";
|
|
4
|
+
import pc from "picocolors";
|
|
5
|
+
import prompts from "prompts";
|
|
6
|
+
import { TEMPLATE_HOOKS_DIR } from "../../paths.js";
|
|
7
|
+
import { hooksConfig } from "./hooks-config.js";
|
|
8
|
+
/**
|
|
9
|
+
* Copy selected hook files from the template-hooks source directory into the
|
|
10
|
+
* target project's `hooks/` directory.
|
|
11
|
+
*
|
|
12
|
+
* Only hooks whose filenames appear in the {@link hooksConfig} manifest are
|
|
13
|
+
* considered valid. Unknown filenames are silently skipped.
|
|
14
|
+
*
|
|
15
|
+
* @param targetDir - Absolute path to the scaffolded project directory
|
|
16
|
+
* @param hookNames - Array of hook filenames to install (e.g. `["use-battery.ts"]`)
|
|
17
|
+
*/
|
|
18
|
+
export async function addHooks(targetDir, hookNames) {
|
|
19
|
+
if (hookNames.length === 0)
|
|
20
|
+
return;
|
|
21
|
+
const projectHooksDir = path.join(targetDir, "hooks");
|
|
22
|
+
await fs.ensureDir(projectHooksDir);
|
|
23
|
+
for (const hookFile of hookNames) {
|
|
24
|
+
// Validate against the known manifest
|
|
25
|
+
const known = hooksConfig.find((h) => h.file === hookFile);
|
|
26
|
+
if (!known)
|
|
27
|
+
continue;
|
|
28
|
+
const sourcePath = path.join(TEMPLATE_HOOKS_DIR, hookFile);
|
|
29
|
+
const destPath = path.join(projectHooksDir, hookFile);
|
|
30
|
+
if (await fs.pathExists(sourcePath)) {
|
|
31
|
+
await fs.copy(sourcePath, destPath);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Interactive flow for adding hooks to an existing project.
|
|
37
|
+
* Validates the project, prompts for hook selection, copies files,
|
|
38
|
+
* and injects dependencies into package.json.
|
|
39
|
+
*/
|
|
40
|
+
export async function addToProject() {
|
|
41
|
+
const targetDir = process.cwd();
|
|
42
|
+
// 1. Validate current directory has a package.json
|
|
43
|
+
const pkgPath = path.join(targetDir, "package.json");
|
|
44
|
+
if (!(await fs.pathExists(pkgPath))) {
|
|
45
|
+
console.log(pc.red("\n No package.json found in the current directory."));
|
|
46
|
+
console.log(pc.yellow(" Make sure you're in a project directory.\n"));
|
|
47
|
+
return;
|
|
48
|
+
}
|
|
49
|
+
// 2. Detect src/ prefix for hooks directory
|
|
50
|
+
const usesSrc = await fs.pathExists(path.join(targetDir, "src/app"));
|
|
51
|
+
const hooksDir = usesSrc
|
|
52
|
+
? path.join(targetDir, "src/hooks")
|
|
53
|
+
: path.join(targetDir, "hooks");
|
|
54
|
+
// 3. Prompt for what to add
|
|
55
|
+
const { category } = (await prompts({
|
|
56
|
+
type: "select",
|
|
57
|
+
name: "category",
|
|
58
|
+
message: "What would you like to add?",
|
|
59
|
+
choices: [
|
|
60
|
+
{
|
|
61
|
+
title: "Hooks",
|
|
62
|
+
description: "Add reusable React hooks to your project",
|
|
63
|
+
value: "hooks",
|
|
64
|
+
},
|
|
65
|
+
],
|
|
66
|
+
}));
|
|
67
|
+
if (!category) {
|
|
68
|
+
console.log(pc.yellow("\n Operation cancelled.\n"));
|
|
69
|
+
return;
|
|
70
|
+
}
|
|
71
|
+
if (category === "hooks") {
|
|
72
|
+
// 4. Check which hooks are already installed
|
|
73
|
+
const installedHooks = new Set();
|
|
74
|
+
for (const hook of hooksConfig) {
|
|
75
|
+
const hookPath = path.join(hooksDir, hook.file);
|
|
76
|
+
if (await fs.pathExists(hookPath)) {
|
|
77
|
+
installedHooks.add(hook.file);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
const availableHooks = hooksConfig.filter((h) => !installedHooks.has(h.file));
|
|
81
|
+
if (availableHooks.length === 0) {
|
|
82
|
+
console.log(pc.green("\n All available hooks are already installed.\n"));
|
|
83
|
+
return;
|
|
84
|
+
}
|
|
85
|
+
// 5. Prompt for hook selection
|
|
86
|
+
const { selectedHooks } = (await prompts({
|
|
87
|
+
type: "multiselect",
|
|
88
|
+
name: "selectedHooks",
|
|
89
|
+
message: "Select hooks to add:",
|
|
90
|
+
choices: availableHooks.map((h) => ({
|
|
91
|
+
title: h.name,
|
|
92
|
+
value: h.file,
|
|
93
|
+
})),
|
|
94
|
+
}));
|
|
95
|
+
if (!selectedHooks || selectedHooks.length === 0) {
|
|
96
|
+
console.log(pc.yellow("\n No hooks selected.\n"));
|
|
97
|
+
return;
|
|
98
|
+
}
|
|
99
|
+
// 6. Copy hooks and inject dependencies
|
|
100
|
+
const spinner = ora("Adding hooks...").start();
|
|
101
|
+
try {
|
|
102
|
+
// Copy hook files
|
|
103
|
+
await fs.ensureDir(hooksDir);
|
|
104
|
+
for (const hookFile of selectedHooks) {
|
|
105
|
+
const sourcePath = path.join(TEMPLATE_HOOKS_DIR, hookFile);
|
|
106
|
+
const destPath = path.join(hooksDir, hookFile);
|
|
107
|
+
if (await fs.pathExists(sourcePath)) {
|
|
108
|
+
await fs.copy(sourcePath, destPath);
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
// Inject dependencies into package.json
|
|
112
|
+
const pkg = (await fs.readJson(pkgPath));
|
|
113
|
+
let depsAdded = false;
|
|
114
|
+
for (const hookFile of selectedHooks) {
|
|
115
|
+
const hookCfg = hooksConfig.find((h) => h.file === hookFile);
|
|
116
|
+
if (!hookCfg)
|
|
117
|
+
continue;
|
|
118
|
+
if (Object.keys(hookCfg.dependencies).length > 0) {
|
|
119
|
+
pkg.dependencies = {
|
|
120
|
+
...pkg.dependencies,
|
|
121
|
+
...hookCfg.dependencies,
|
|
122
|
+
};
|
|
123
|
+
depsAdded = true;
|
|
124
|
+
}
|
|
125
|
+
if (Object.keys(hookCfg.devDependencies).length > 0) {
|
|
126
|
+
pkg.devDependencies = {
|
|
127
|
+
...pkg.devDependencies,
|
|
128
|
+
...hookCfg.devDependencies,
|
|
129
|
+
};
|
|
130
|
+
depsAdded = true;
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
if (depsAdded) {
|
|
134
|
+
await fs.writeJson(pkgPath, pkg, { spaces: 2 });
|
|
135
|
+
}
|
|
136
|
+
spinner.succeed("Hooks added");
|
|
137
|
+
}
|
|
138
|
+
catch (error) {
|
|
139
|
+
spinner.fail("Failed to add hooks");
|
|
140
|
+
throw error;
|
|
141
|
+
}
|
|
142
|
+
// 7. Summary
|
|
143
|
+
const hookNames = selectedHooks
|
|
144
|
+
.map((f) => hooksConfig.find((h) => h.file === f)?.name ?? f)
|
|
145
|
+
.join(", ");
|
|
146
|
+
console.log(`\n ${pc.bold(pc.green("Done!"))} Added: ${pc.cyan(hookNames)}`);
|
|
147
|
+
console.log(`\n ${pc.bold("Next steps:")}`);
|
|
148
|
+
console.log(pc.cyan(" bun install"));
|
|
149
|
+
console.log();
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/helpers/add/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/** Valid template names that can be scaffolded. */
|
|
2
|
+
export type TemplateName = "default" | "webgl" | "webgpu" | "experiment";
|
|
3
|
+
/**
|
|
4
|
+
* Copy a standalone project template into the target directory.
|
|
5
|
+
*
|
|
6
|
+
* @param templateName - One of the available template identifiers
|
|
7
|
+
* @param targetDir - Absolute path where the template should be written
|
|
8
|
+
* @throws If the requested template directory does not exist
|
|
9
|
+
*/
|
|
10
|
+
export declare function copyTemplate(templateName: string, targetDir: string): Promise<void>;
|
|
11
|
+
//# sourceMappingURL=copy-template.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"copy-template.d.ts","sourceRoot":"","sources":["../../../src/helpers/create/copy-template.ts"],"names":[],"mappings":"AAKA,mDAAmD;AACnD,MAAM,MAAM,YAAY,GAAG,SAAS,GAAG,OAAO,GAAG,QAAQ,GAAG,YAAY,CAAC;AAEzE;;;;;;GAMG;AACH,wBAAsB,YAAY,CACjC,YAAY,EAAE,MAAM,EACpB,SAAS,EAAE,MAAM,GACf,OAAO,CAAC,IAAI,CAAC,CASf"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import path from "node:path";
|
|
2
|
+
import fs from "fs-extra";
|
|
3
|
+
import { TEMPLATES_DIR } from "../../paths.js";
|
|
4
|
+
/**
|
|
5
|
+
* Copy a standalone project template into the target directory.
|
|
6
|
+
*
|
|
7
|
+
* @param templateName - One of the available template identifiers
|
|
8
|
+
* @param targetDir - Absolute path where the template should be written
|
|
9
|
+
* @throws If the requested template directory does not exist
|
|
10
|
+
*/
|
|
11
|
+
export async function copyTemplate(templateName, targetDir) {
|
|
12
|
+
const templateDir = path.join(TEMPLATES_DIR, templateName);
|
|
13
|
+
const exists = await fs.pathExists(templateDir);
|
|
14
|
+
if (!exists) {
|
|
15
|
+
throw new Error(`Template "${templateName}" not found at ${templateDir}`);
|
|
16
|
+
}
|
|
17
|
+
await fs.copy(templateDir, targetDir);
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=copy-template.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"copy-template.js","sourceRoot":"","sources":["../../../src/helpers/create/copy-template.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,MAAM,UAAU,CAAC;AAE1B,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAK/C;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CACjC,YAAoB,EACpB,SAAiB;IAEjB,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,YAAY,CAAC,CAAC;IAE3D,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;IAChD,IAAI,CAAC,MAAM,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,aAAa,YAAY,kBAAkB,WAAW,EAAE,CAAC,CAAC;IAC3E,CAAC;IAED,MAAM,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;AACvC,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/** All options required by the create-project orchestrator. */
|
|
2
|
+
export interface CreateProjectOptions {
|
|
3
|
+
projectName: string;
|
|
4
|
+
targetDir: string;
|
|
5
|
+
template: string;
|
|
6
|
+
cms: string;
|
|
7
|
+
animation: string;
|
|
8
|
+
agent: "claude" | "opencode" | null;
|
|
9
|
+
hooks: string[];
|
|
10
|
+
}
|
|
11
|
+
/** Result summary returned after project creation. */
|
|
12
|
+
export interface CreateProjectResult {
|
|
13
|
+
success: boolean;
|
|
14
|
+
sanitySetupDone: boolean;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Orchestrate the full project creation pipeline.
|
|
18
|
+
*
|
|
19
|
+
* Displays ora spinners with step-by-step progress while steps run.
|
|
20
|
+
*/
|
|
21
|
+
export declare function createProject(options: CreateProjectOptions): Promise<CreateProjectResult>;
|
|
22
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/helpers/create/index.ts"],"names":[],"mappings":"AAYA,+DAA+D;AAC/D,MAAM,WAAW,oBAAoB;IACpC,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,QAAQ,GAAG,UAAU,GAAG,IAAI,CAAC;IACpC,KAAK,EAAE,MAAM,EAAE,CAAC;CAChB;AAED,sDAAsD;AACtD,MAAM,WAAW,mBAAmB;IACnC,OAAO,EAAE,OAAO,CAAC;IACjB,eAAe,EAAE,OAAO,CAAC;CACzB;AAED;;;;GAIG;AACH,wBAAsB,aAAa,CAClC,OAAO,EAAE,oBAAoB,GAC3B,OAAO,CAAC,mBAAmB,CAAC,CAyE9B"}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import ora from "ora";
|
|
2
|
+
import { addHooks } from "../add/index.js";
|
|
3
|
+
import { injectIntegration } from "../integrate/merge-orchestrator.js";
|
|
4
|
+
import { copyTemplate } from "./copy-template.js";
|
|
5
|
+
import { installDependencies } from "./install.js";
|
|
6
|
+
import { renameSpecialFiles } from "./rename-files.js";
|
|
7
|
+
import { setupAgent } from "./setup-agent.js";
|
|
8
|
+
import { setupSanity } from "./setup-sanity.js";
|
|
9
|
+
import { updatePackageJson } from "./update-package.js";
|
|
10
|
+
/**
|
|
11
|
+
* Orchestrate the full project creation pipeline.
|
|
12
|
+
*
|
|
13
|
+
* Displays ora spinners with step-by-step progress while steps run.
|
|
14
|
+
*/
|
|
15
|
+
export async function createProject(options) {
|
|
16
|
+
const { projectName, targetDir, template, cms, animation, agent, hooks } = options;
|
|
17
|
+
const spinner = ora({ color: "cyan" });
|
|
18
|
+
try {
|
|
19
|
+
// 1. Copy template + rename special files
|
|
20
|
+
spinner.start("Scaffolding project from template...");
|
|
21
|
+
await copyTemplate(template, targetDir);
|
|
22
|
+
await renameSpecialFiles(targetDir);
|
|
23
|
+
spinner.succeed("Project scaffolded");
|
|
24
|
+
// 2. Configure project (package.json)
|
|
25
|
+
spinner.start("Configuring project...");
|
|
26
|
+
await updatePackageJson(targetDir, {
|
|
27
|
+
projectName,
|
|
28
|
+
cms,
|
|
29
|
+
animation,
|
|
30
|
+
hooks,
|
|
31
|
+
});
|
|
32
|
+
spinner.succeed("Project configured");
|
|
33
|
+
// 3. Inject CMS integration files + mergers
|
|
34
|
+
if (cms !== "none") {
|
|
35
|
+
spinner.start(`Adding ${cms} integration...`);
|
|
36
|
+
await injectIntegration(targetDir, cms, spinner);
|
|
37
|
+
spinner.succeed(`${cms.charAt(0).toUpperCase() + cms.slice(1)} integration added`);
|
|
38
|
+
}
|
|
39
|
+
// 4. Set up agent skills (slow — 10-30s)
|
|
40
|
+
if (agent) {
|
|
41
|
+
spinner.start("Setting up AI agent skills...");
|
|
42
|
+
await setupAgent(targetDir, {
|
|
43
|
+
agent,
|
|
44
|
+
cms,
|
|
45
|
+
templateType: template,
|
|
46
|
+
});
|
|
47
|
+
spinner.succeed("Agent skills installed");
|
|
48
|
+
}
|
|
49
|
+
// 5. Install dependencies (slow — 5-20s)
|
|
50
|
+
spinner.start("Installing dependencies...");
|
|
51
|
+
await installDependencies(targetDir);
|
|
52
|
+
spinner.succeed("Dependencies installed");
|
|
53
|
+
// 6. Add hooks
|
|
54
|
+
if (hooks.length > 0) {
|
|
55
|
+
spinner.start("Adding hooks...");
|
|
56
|
+
await addHooks(targetDir, hooks);
|
|
57
|
+
spinner.succeed("Hooks added");
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
catch (error) {
|
|
61
|
+
spinner.fail("Pipeline failed");
|
|
62
|
+
throw error;
|
|
63
|
+
}
|
|
64
|
+
// 7. Interactive Sanity project setup (manages its own spinners)
|
|
65
|
+
let sanitySetupDone = false;
|
|
66
|
+
if (cms === "sanity") {
|
|
67
|
+
try {
|
|
68
|
+
sanitySetupDone = await setupSanity(targetDir, {
|
|
69
|
+
projectName,
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
catch {
|
|
73
|
+
// Sanity auto-setup is optional; callers handle messaging
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
return {
|
|
77
|
+
success: true,
|
|
78
|
+
sanitySetupDone,
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/helpers/create/index.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,KAAK,CAAC;AAGtB,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;AACvE,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAmBxD;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CAClC,OAA6B;IAE7B,MAAM,EAAE,WAAW,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,GACvE,OAAO,CAAC;IAET,MAAM,OAAO,GAAG,GAAG,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;IAEvC,IAAI,CAAC;QACJ,0CAA0C;QAC1C,OAAO,CAAC,KAAK,CAAC,sCAAsC,CAAC,CAAC;QACtD,MAAM,YAAY,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;QACxC,MAAM,kBAAkB,CAAC,SAAS,CAAC,CAAC;QACpC,OAAO,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC;QAEtC,sCAAsC;QACtC,OAAO,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC;QACxC,MAAM,iBAAiB,CAAC,SAAS,EAAE;YAClC,WAAW;YACX,GAAG;YACH,SAAS;YACT,KAAK;SACL,CAAC,CAAC;QACH,OAAO,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC;QAEtC,4CAA4C;QAC5C,IAAI,GAAG,KAAK,MAAM,EAAE,CAAC;YACpB,OAAO,CAAC,KAAK,CAAC,UAAU,GAAG,iBAAiB,CAAC,CAAC;YAC9C,MAAM,iBAAiB,CAAC,SAAS,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC;YACjD,OAAO,CAAC,OAAO,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC;QACpF,CAAC;QAED,yCAAyC;QACzC,IAAI,KAAK,EAAE,CAAC;YACX,OAAO,CAAC,KAAK,CAAC,+BAA+B,CAAC,CAAC;YAC/C,MAAM,UAAU,CAAC,SAAS,EAAE;gBAC3B,KAAK;gBACL,GAAG;gBACH,YAAY,EAAE,QAAQ;aACtB,CAAC,CAAC;YACH,OAAO,CAAC,OAAO,CAAC,wBAAwB,CAAC,CAAC;QAC3C,CAAC;QAED,yCAAyC;QACzC,OAAO,CAAC,KAAK,CAAC,4BAA4B,CAAC,CAAC;QAC5C,MAAM,mBAAmB,CAAC,SAAS,CAAC,CAAC;QACrC,OAAO,CAAC,OAAO,CAAC,wBAAwB,CAAC,CAAC;QAE1C,eAAe;QACf,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACtB,OAAO,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;YACjC,MAAM,QAAQ,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;YACjC,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;QAChC,CAAC;IACF,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAChB,OAAO,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;QAChC,MAAM,KAAK,CAAC;IACb,CAAC;IAED,iEAAiE;IACjE,IAAI,eAAe,GAAG,KAAK,CAAC;IAC5B,IAAI,GAAG,KAAK,QAAQ,EAAE,CAAC;QACtB,IAAI,CAAC;YACJ,eAAe,GAAG,MAAM,WAAW,CAAC,SAAS,EAAE;gBAC9C,WAAW;aACX,CAAC,CAAC;QACJ,CAAC;QAAC,MAAM,CAAC;YACR,0DAA0D;QAC3D,CAAC;IACF,CAAC;IAED,OAAO;QACN,OAAO,EAAE,IAAI;QACb,eAAe;KACf,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Run `bun install` in the target project directory.
|
|
3
|
+
*
|
|
4
|
+
* @param targetDir - Absolute path to the scaffolded project directory
|
|
5
|
+
* @throws If the install process exits with a non-zero code
|
|
6
|
+
*/
|
|
7
|
+
export declare function installDependencies(targetDir: string): Promise<void>;
|
|
8
|
+
//# sourceMappingURL=install.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../../../src/helpers/create/install.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AACH,wBAAsB,mBAAmB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAU1E"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { execSync } from "node:child_process";
|
|
2
|
+
/**
|
|
3
|
+
* Run `bun install` in the target project directory.
|
|
4
|
+
*
|
|
5
|
+
* @param targetDir - Absolute path to the scaffolded project directory
|
|
6
|
+
* @throws If the install process exits with a non-zero code
|
|
7
|
+
*/
|
|
8
|
+
export async function installDependencies(targetDir) {
|
|
9
|
+
try {
|
|
10
|
+
execSync("bun install", {
|
|
11
|
+
cwd: targetDir,
|
|
12
|
+
stdio: "pipe",
|
|
13
|
+
});
|
|
14
|
+
}
|
|
15
|
+
catch (error) {
|
|
16
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
17
|
+
throw new Error(`Failed to install dependencies: ${message}`);
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=install.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"install.js","sourceRoot":"","sources":["../../../src/helpers/create/install.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAE9C;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,SAAiB;IAC1D,IAAI,CAAC;QACJ,QAAQ,CAAC,aAAa,EAAE;YACvB,GAAG,EAAE,SAAS;YACd,KAAK,EAAE,MAAM;SACb,CAAC,CAAC;IACJ,CAAC;IAAC,OAAO,KAAc,EAAE,CAAC;QACzB,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACvE,MAAM,IAAI,KAAK,CAAC,mCAAmC,OAAO,EAAE,CAAC,CAAC;IAC/D,CAAC;AACF,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Rename special files that had to be prefixed for npm publishing.
|
|
3
|
+
*
|
|
4
|
+
* npm strips `.gitignore` from published packages, so templates ship it as
|
|
5
|
+
* `_gitignore` and this function renames it back after copying.
|
|
6
|
+
*
|
|
7
|
+
* @param targetDir - Absolute path to the scaffolded project directory
|
|
8
|
+
*/
|
|
9
|
+
export declare function renameSpecialFiles(targetDir: string): Promise<void>;
|
|
10
|
+
//# sourceMappingURL=rename-files.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rename-files.d.ts","sourceRoot":"","sources":["../../../src/helpers/create/rename-files.ts"],"names":[],"mappings":"AAGA;;;;;;;GAOG;AACH,wBAAsB,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAMzE"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import path from "node:path";
|
|
2
|
+
import fs from "fs-extra";
|
|
3
|
+
/**
|
|
4
|
+
* Rename special files that had to be prefixed for npm publishing.
|
|
5
|
+
*
|
|
6
|
+
* npm strips `.gitignore` from published packages, so templates ship it as
|
|
7
|
+
* `_gitignore` and this function renames it back after copying.
|
|
8
|
+
*
|
|
9
|
+
* @param targetDir - Absolute path to the scaffolded project directory
|
|
10
|
+
*/
|
|
11
|
+
export async function renameSpecialFiles(targetDir) {
|
|
12
|
+
const underscoreGitignore = path.join(targetDir, "_gitignore");
|
|
13
|
+
if (await fs.pathExists(underscoreGitignore)) {
|
|
14
|
+
await fs.rename(underscoreGitignore, path.join(targetDir, ".gitignore"));
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=rename-files.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rename-files.js","sourceRoot":"","sources":["../../../src/helpers/create/rename-files.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,MAAM,UAAU,CAAC;AAE1B;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,SAAiB;IACzD,MAAM,mBAAmB,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;IAE/D,IAAI,MAAM,EAAE,CAAC,UAAU,CAAC,mBAAmB,CAAC,EAAE,CAAC;QAC9C,MAAM,EAAE,CAAC,MAAM,CAAC,mBAAmB,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC,CAAC;IAC1E,CAAC;AACF,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/** Options controlling which agent tooling to scaffold. */
|
|
2
|
+
export interface AgentOptions {
|
|
3
|
+
/** The AI agent flavour, or null to skip agent setup. */
|
|
4
|
+
agent: "claude" | "opencode" | null;
|
|
5
|
+
/** The selected CMS integration (e.g. "sanity"), or null / "none". */
|
|
6
|
+
cms: string | null;
|
|
7
|
+
/** The selected template type (e.g. "webgpu", "experiment"). */
|
|
8
|
+
templateType: string | null;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Set up AI agent skills and configuration in the target project.
|
|
12
|
+
*
|
|
13
|
+
* 1. Creates the agent directory structure (`.claude/skills/` or `.opencode/skills/`).
|
|
14
|
+
* 2. Installs recommended skills via `bunx skills add`.
|
|
15
|
+
* 3. If CMS is Sanity and agent is Claude, registers the Sanity MCP server.
|
|
16
|
+
*
|
|
17
|
+
* @param targetDir - Absolute path to the scaffolded project directory
|
|
18
|
+
* @param options - Agent configuration
|
|
19
|
+
*/
|
|
20
|
+
export declare function setupAgent(targetDir: string, options: AgentOptions): Promise<void>;
|
|
21
|
+
//# sourceMappingURL=setup-agent.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"setup-agent.d.ts","sourceRoot":"","sources":["../../../src/helpers/create/setup-agent.ts"],"names":[],"mappings":"AAIA,2DAA2D;AAC3D,MAAM,WAAW,YAAY;IAC5B,yDAAyD;IACzD,KAAK,EAAE,QAAQ,GAAG,UAAU,GAAG,IAAI,CAAC;IACpC,sEAAsE;IACtE,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACnB,gEAAgE;IAChE,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B;AAED;;;;;;;;;GASG;AACH,wBAAsB,UAAU,CAC/B,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,YAAY,GACnB,OAAO,CAAC,IAAI,CAAC,CAiEf"}
|