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.
Files changed (407) hide show
  1. package/README.md +18 -18
  2. package/dist/configs/animations.d.ts +25 -0
  3. package/dist/configs/animations.d.ts.map +1 -0
  4. package/dist/configs/animations.js +29 -0
  5. package/dist/configs/animations.js.map +1 -0
  6. package/dist/helpers/add/hooks-config.d.ts +22 -0
  7. package/dist/helpers/add/hooks-config.d.ts.map +1 -0
  8. package/dist/helpers/add/hooks-config.js +37 -0
  9. package/dist/helpers/add/hooks-config.js.map +1 -0
  10. package/dist/helpers/add/index.d.ts +18 -0
  11. package/dist/helpers/add/index.d.ts.map +1 -0
  12. package/dist/helpers/add/index.js +152 -0
  13. package/dist/helpers/add/index.js.map +1 -0
  14. package/dist/helpers/create/copy-template.d.ts +11 -0
  15. package/dist/helpers/create/copy-template.d.ts.map +1 -0
  16. package/dist/helpers/create/copy-template.js +19 -0
  17. package/dist/helpers/create/copy-template.js.map +1 -0
  18. package/dist/helpers/create/index.d.ts +22 -0
  19. package/dist/helpers/create/index.d.ts.map +1 -0
  20. package/dist/helpers/create/index.js +81 -0
  21. package/dist/helpers/create/index.js.map +1 -0
  22. package/dist/helpers/create/install.d.ts +8 -0
  23. package/dist/helpers/create/install.d.ts.map +1 -0
  24. package/dist/helpers/create/install.js +20 -0
  25. package/dist/helpers/create/install.js.map +1 -0
  26. package/dist/helpers/create/rename-files.d.ts +10 -0
  27. package/dist/helpers/create/rename-files.d.ts.map +1 -0
  28. package/dist/helpers/create/rename-files.js +17 -0
  29. package/dist/helpers/create/rename-files.js.map +1 -0
  30. package/dist/helpers/create/setup-agent.d.ts +21 -0
  31. package/dist/helpers/create/setup-agent.d.ts.map +1 -0
  32. package/dist/helpers/create/setup-agent.js +65 -0
  33. package/dist/helpers/create/setup-agent.js.map +1 -0
  34. package/dist/helpers/create/setup-sanity.d.ts +23 -0
  35. package/dist/helpers/create/setup-sanity.d.ts.map +1 -0
  36. package/dist/helpers/create/setup-sanity.js +354 -0
  37. package/dist/helpers/create/setup-sanity.js.map +1 -0
  38. package/dist/helpers/create/update-package.d.ts +20 -0
  39. package/dist/helpers/create/update-package.d.ts.map +1 -0
  40. package/dist/helpers/create/update-package.js +87 -0
  41. package/dist/helpers/create/update-package.js.map +1 -0
  42. package/dist/helpers/integrate/index.d.ts +13 -0
  43. package/dist/helpers/integrate/index.d.ts.map +1 -0
  44. package/dist/helpers/integrate/index.js +204 -0
  45. package/dist/helpers/integrate/index.js.map +1 -0
  46. package/dist/helpers/integrate/merge-config.d.ts +21 -0
  47. package/dist/helpers/integrate/merge-config.d.ts.map +1 -0
  48. package/dist/helpers/integrate/merge-config.js +38 -0
  49. package/dist/helpers/integrate/merge-config.js.map +1 -0
  50. package/dist/helpers/integrate/merge-orchestrator.d.ts +10 -0
  51. package/dist/helpers/integrate/merge-orchestrator.d.ts.map +1 -0
  52. package/dist/helpers/integrate/merge-orchestrator.js +188 -0
  53. package/dist/helpers/integrate/merge-orchestrator.js.map +1 -0
  54. package/dist/helpers/integrate/sanity/config.d.ts +14 -0
  55. package/dist/helpers/integrate/sanity/config.d.ts.map +1 -0
  56. package/dist/helpers/integrate/sanity/config.js +38 -0
  57. package/dist/helpers/integrate/sanity/config.js.map +1 -0
  58. package/dist/helpers/integrate/sanity/mergers/check-integration-merger.d.ts +13 -0
  59. package/dist/helpers/integrate/sanity/mergers/check-integration-merger.d.ts.map +1 -0
  60. package/dist/helpers/integrate/sanity/mergers/check-integration-merger.js +84 -0
  61. package/dist/helpers/integrate/sanity/mergers/check-integration-merger.js.map +1 -0
  62. package/dist/helpers/integrate/sanity/mergers/layout-merger.d.ts +23 -0
  63. package/dist/helpers/integrate/sanity/mergers/layout-merger.d.ts.map +1 -0
  64. package/dist/helpers/integrate/sanity/mergers/layout-merger.js +161 -0
  65. package/dist/helpers/integrate/sanity/mergers/layout-merger.js.map +1 -0
  66. package/dist/helpers/integrate/sanity/mergers/sitemap-merger.d.ts +13 -0
  67. package/dist/helpers/integrate/sanity/mergers/sitemap-merger.d.ts.map +1 -0
  68. package/{packages/create-basement-app/src → dist/helpers/integrate/sanity}/mergers/sitemap-merger.js +33 -45
  69. package/dist/helpers/integrate/sanity/mergers/sitemap-merger.js.map +1 -0
  70. package/dist/index.d.ts +3 -0
  71. package/dist/index.d.ts.map +1 -0
  72. package/dist/index.js +337 -0
  73. package/dist/index.js.map +1 -0
  74. package/dist/paths.d.ts +14 -0
  75. package/dist/paths.d.ts.map +1 -0
  76. package/dist/paths.js +24 -0
  77. package/dist/paths.js.map +1 -0
  78. package/dist/utils/detect-project.d.ts +40 -0
  79. package/dist/utils/detect-project.d.ts.map +1 -0
  80. package/dist/utils/detect-project.js +69 -0
  81. package/dist/utils/detect-project.js.map +1 -0
  82. package/dist/utils/format-results.d.ts +24 -0
  83. package/dist/utils/format-results.d.ts.map +1 -0
  84. package/dist/utils/format-results.js +27 -0
  85. package/dist/utils/format-results.js.map +1 -0
  86. package/index.js +25 -0
  87. package/package.json +40 -15
  88. package/{packages/create-basement-app/templates/experiment → src/templates/next-default}/app/layout.tsx +18 -18
  89. package/src/templates/next-default/app/page.tsx +11 -0
  90. package/{packages/create-basement-app/templates/experiment → src/templates/next-default}/app/robots.ts +3 -3
  91. package/{packages/create-basement-app/templates/webgl → src/templates/next-default}/app/sitemap.ts +4 -4
  92. package/{packages/create-basement-app/templates/default → src/templates/next-default}/biome.json +2 -2
  93. package/{packages/create-basement-app/templates/webgl → src/templates/next-default}/components/layout/footer/index.tsx +5 -1
  94. package/{packages/create-basement-app/templates/webgl → src/templates/next-default}/components/layout/header/index.tsx +1 -3
  95. package/{packages/create-basement-app/templates/default → src/templates/next-default}/components/layout/theme/index.tsx +1 -1
  96. package/{packages/create-basement-app/templates/default → src/templates/next-default}/components/layout/wrapper/index.tsx +0 -2
  97. package/{packages/create-basement-app/templates/webgl → src/templates/next-default}/components/ui/image/index.tsx +6 -11
  98. package/{packages/create-basement-app/templates/experiment → src/templates/next-default}/components/ui/link/index.tsx +39 -33
  99. package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/utils/metadata.ts +26 -26
  100. package/{packages/create-basement-app/templates/default → src/templates/next-default}/package.json +4 -4
  101. package/{packages/create-basement-app/templates/webgl → src/templates/next-experiments}/app/layout.tsx +18 -18
  102. package/{packages/create-basement-app/templates/webgl → src/templates/next-experiments}/app/robots.ts +3 -3
  103. package/{packages/create-basement-app/templates/default → src/templates/next-experiments}/app/sitemap.ts +4 -4
  104. package/{packages/create-basement-app/templates/webgl → src/templates/next-experiments}/biome.json +2 -2
  105. package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/components/layout/theme/index.tsx +1 -1
  106. package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/components/layout/wrapper/index.tsx +7 -9
  107. package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/components/ui/image/index.tsx +39 -46
  108. package/{packages/create-basement-app/templates/default → src/templates/next-experiments}/components/ui/link/index.tsx +6 -0
  109. package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/utils/metadata.ts +26 -26
  110. package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/package.json +4 -4
  111. package/{packages/create-basement-app/templates/default → src/templates/next-webgl}/app/layout.tsx +18 -18
  112. package/{packages/create-basement-app/templates/default → src/templates/next-webgl}/app/robots.ts +3 -3
  113. package/{packages/create-basement-app/templates/experiment → src/templates/next-webgl}/app/sitemap.ts +4 -4
  114. package/{packages/create-basement-app/templates/experiment → src/templates/next-webgl}/biome.json +2 -2
  115. package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/components/layout/theme/index.tsx +1 -1
  116. package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/components/layout/wrapper/index.tsx +0 -2
  117. package/{packages/create-basement-app/templates/default → src/templates/next-webgl}/components/ui/image/index.tsx +6 -11
  118. package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/components/ui/link/index.tsx +9 -2
  119. package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/components/webgl/components/scene/index.tsx +1 -0
  120. package/src/templates/next-webgl/lib/renderer.ts +7 -0
  121. package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/utils/metadata.ts +26 -26
  122. package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/package.json +4 -4
  123. package/packages/cli/bin/index.js +0 -259
  124. package/packages/cli/src/commands/add-integration.js +0 -310
  125. package/packages/cli/src/commands/create.js +0 -409
  126. package/packages/cli/src/commands/setup-sanity.js +0 -426
  127. package/packages/cli/src/commands/worktree.js +0 -805
  128. package/packages/create-basement-app/integrations/sanity/config.js +0 -46
  129. package/packages/create-basement-app/integrations/sanity/files/app/api/draft-mode/disable/route.ts +0 -7
  130. package/packages/create-basement-app/integrations/sanity/files/app/api/draft-mode/enable/route.ts +0 -21
  131. package/packages/create-basement-app/integrations/sanity/files/app/api/revalidate/route.ts +0 -37
  132. package/packages/create-basement-app/integrations/sanity/files/app/layout.tsx +0 -111
  133. package/packages/create-basement-app/integrations/sanity/files/app/sitemap.ts +0 -80
  134. package/packages/create-basement-app/integrations/sanity/files/app/studio/[[...tool]]/page.tsx +0 -8
  135. package/packages/create-basement-app/integrations/sanity/files/app/studio/layout.tsx +0 -7
  136. package/packages/create-basement-app/integrations/sanity/files/components/ui/sanity-image/index.tsx +0 -37
  137. package/packages/create-basement-app/integrations/sanity/files/lib/integrations/README.md +0 -58
  138. package/packages/create-basement-app/integrations/sanity/files/lib/integrations/check-integration.ts +0 -62
  139. package/packages/create-basement-app/integrations/sanity/files/lib/integrations/sanity/README.md +0 -144
  140. package/packages/create-basement-app/integrations/sanity/files/lib/integrations/sanity/client.ts +0 -30
  141. package/packages/create-basement-app/integrations/sanity/files/lib/integrations/sanity/components/disable-draft-mode.tsx +0 -29
  142. package/packages/create-basement-app/integrations/sanity/files/lib/integrations/sanity/components/rich-text.tsx +0 -73
  143. package/packages/create-basement-app/integrations/sanity/files/lib/integrations/sanity/env.ts +0 -38
  144. package/packages/create-basement-app/integrations/sanity/files/lib/integrations/sanity/live/index.tsx +0 -34
  145. package/packages/create-basement-app/integrations/sanity/files/lib/integrations/sanity/queries.ts +0 -99
  146. package/packages/create-basement-app/integrations/sanity/files/lib/integrations/sanity/sanity.cli.ts +0 -20
  147. package/packages/create-basement-app/integrations/sanity/files/lib/integrations/sanity/sanity.config.ts +0 -94
  148. package/packages/create-basement-app/integrations/sanity/files/lib/integrations/sanity/sanity.types.ts +0 -337
  149. package/packages/create-basement-app/integrations/sanity/files/lib/integrations/sanity/schema.json +0 -1850
  150. package/packages/create-basement-app/integrations/sanity/files/lib/integrations/sanity/schemas/article.ts +0 -132
  151. package/packages/create-basement-app/integrations/sanity/files/lib/integrations/sanity/schemas/example.ts +0 -203
  152. package/packages/create-basement-app/integrations/sanity/files/lib/integrations/sanity/schemas/index.ts +0 -37
  153. package/packages/create-basement-app/integrations/sanity/files/lib/integrations/sanity/schemas/link.ts +0 -127
  154. package/packages/create-basement-app/integrations/sanity/files/lib/integrations/sanity/schemas/metadata.ts +0 -68
  155. package/packages/create-basement-app/integrations/sanity/files/lib/integrations/sanity/schemas/navigation.ts +0 -39
  156. package/packages/create-basement-app/integrations/sanity/files/lib/integrations/sanity/schemas/page.ts +0 -77
  157. package/packages/create-basement-app/integrations/sanity/files/lib/integrations/sanity/schemas/richText.ts +0 -59
  158. package/packages/create-basement-app/integrations/sanity/files/lib/integrations/sanity/structure.ts +0 -5
  159. package/packages/create-basement-app/integrations/sanity/files/lib/integrations/sanity/utils/image.ts +0 -11
  160. package/packages/create-basement-app/integrations/sanity/files/lib/integrations/sanity/utils/link.ts +0 -61
  161. package/packages/create-basement-app/integrations/sanity/files/lib/scripts/copy-sanity-mcp.ts +0 -23
  162. package/packages/create-basement-app/integrations/sanity/files/lib/scripts/generate-page.ts +0 -310
  163. package/packages/create-basement-app/integrations/sanity/files/lib/utils/metadata.ts +0 -190
  164. package/packages/create-basement-app/integrations/sanity/mergers/check-integration-merger.js +0 -105
  165. package/packages/create-basement-app/integrations/sanity/mergers/layout-merger.js +0 -223
  166. package/packages/create-basement-app/integrations/sanity/mergers/sitemap-merger.js +0 -121
  167. package/packages/create-basement-app/package.json +0 -10
  168. package/packages/create-basement-app/src/configs/animations.js +0 -28
  169. package/packages/create-basement-app/src/index.js +0 -15
  170. package/packages/create-basement-app/src/mergers/check-integration-merger.js +0 -105
  171. package/packages/create-basement-app/src/mergers/config.js +0 -109
  172. package/packages/create-basement-app/src/mergers/index.js +0 -346
  173. package/packages/create-basement-app/src/mergers/layout-merger.js +0 -223
  174. package/packages/create-basement-app/templates/default/.cursor/rules/README.md +0 -184
  175. package/packages/create-basement-app/templates/default/.cursor/rules/architecture.mdc +0 -437
  176. package/packages/create-basement-app/templates/default/.cursor/rules/components.mdc +0 -436
  177. package/packages/create-basement-app/templates/default/.cursor/rules/integrations.mdc +0 -447
  178. package/packages/create-basement-app/templates/default/.cursor/rules/main.mdc +0 -278
  179. package/packages/create-basement-app/templates/default/.cursor/rules/styling.mdc +0 -433
  180. package/packages/create-basement-app/templates/default/.github/workflows/lighthouse-to-slack.yml +0 -136
  181. package/packages/create-basement-app/templates/experiment/.cursor/rules/README.md +0 -184
  182. package/packages/create-basement-app/templates/experiment/.cursor/rules/architecture.mdc +0 -437
  183. package/packages/create-basement-app/templates/experiment/.cursor/rules/components.mdc +0 -436
  184. package/packages/create-basement-app/templates/experiment/.cursor/rules/integrations.mdc +0 -447
  185. package/packages/create-basement-app/templates/experiment/.cursor/rules/main.mdc +0 -278
  186. package/packages/create-basement-app/templates/experiment/.cursor/rules/styling.mdc +0 -433
  187. package/packages/create-basement-app/templates/experiment/.github/workflows/lighthouse-to-slack.yml +0 -136
  188. package/packages/create-basement-app/templates/experiment/app/page.tsx +0 -275
  189. package/packages/create-basement-app/templates/webgl/.biome/plugins/README.md +0 -21
  190. package/packages/create-basement-app/templates/webgl/.cursor/rules/README.md +0 -184
  191. package/packages/create-basement-app/templates/webgl/.cursor/rules/architecture.mdc +0 -437
  192. package/packages/create-basement-app/templates/webgl/.cursor/rules/components.mdc +0 -436
  193. package/packages/create-basement-app/templates/webgl/.cursor/rules/integrations.mdc +0 -447
  194. package/packages/create-basement-app/templates/webgl/.cursor/rules/main.mdc +0 -278
  195. package/packages/create-basement-app/templates/webgl/.cursor/rules/styling.mdc +0 -433
  196. package/packages/create-basement-app/templates/webgl/.github/workflows/lighthouse-to-slack.yml +0 -136
  197. /package/{packages/create-basement-app/plugins → plugins}/no-anchor-element.grit +0 -0
  198. /package/{packages/create-basement-app/plugins → plugins}/no-relative-parent-imports.grit +0 -0
  199. /package/{packages/create-basement-app/plugins → plugins}/no-unnecessary-forwardref.grit +0 -0
  200. /package/{packages/create-basement-app → src}/template-hooks/config.js +0 -0
  201. /package/{packages/create-basement-app → src}/template-hooks/use-battery.ts +0 -0
  202. /package/{packages/create-basement-app → src}/template-hooks/use-device-perf.ts +0 -0
  203. /package/{packages/create-basement-app → src}/template-hooks/use-intersection-observer.ts +0 -0
  204. /package/{packages/create-basement-app → src}/template-hooks/use-media.ts +0 -0
  205. /package/{packages/create-basement-app → src/templates/next-default/.biome}/plugins/README.md +0 -0
  206. /package/{packages/create-basement-app/templates/default → src/templates/next-default}/.biome/plugins/no-anchor-element.grit +0 -0
  207. /package/{packages/create-basement-app/templates/default → src/templates/next-default}/.biome/plugins/no-relative-parent-imports.grit +0 -0
  208. /package/{packages/create-basement-app/templates/default → src/templates/next-default}/.biome/plugins/no-unnecessary-forwardref.grit +0 -0
  209. /package/{packages/create-basement-app/templates/default → src/templates/next-default}/.editorconfig +0 -0
  210. /package/{packages/create-basement-app/templates/default → src/templates/next-default}/.env.example +0 -0
  211. /package/{packages/create-basement-app/templates/default → src/templates/next-default}/.gitattributes +0 -0
  212. /package/{packages/create-basement-app/templates/default → src/templates/next-default}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
  213. /package/{packages/create-basement-app/templates/default → src/templates/next-default}/.vscode/extensions.json +0 -0
  214. /package/{packages/create-basement-app/templates/default → src/templates/next-default}/.vscode/settings.json +0 -0
  215. /package/{packages/create-basement-app/templates/default → src/templates/next-default}/README.md +0 -0
  216. /package/{packages/create-basement-app/templates/default → src/templates/next-default}/_gitignore +0 -0
  217. /package/{packages/create-basement-app/templates/default → src/templates/next-default}/app/favicon.ico +0 -0
  218. /package/{packages/create-basement-app/templates/default → src/templates/next-default}/components/basement.svg +0 -0
  219. /package/{packages/create-basement-app/templates/default → src/templates/next-default}/components/ui/README.md +0 -0
  220. /package/{packages/create-basement-app/templates/default → src/templates/next-default}/components/ui/image/README.md +0 -0
  221. /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/README.md +0 -0
  222. /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/hooks/index.ts +0 -0
  223. /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/hooks/use-device-detection.ts +0 -0
  224. /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/hooks/use-media-breakpoint.ts +0 -0
  225. /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/hooks/use-prefetch.ts +0 -0
  226. /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/integrations/.gitkeep +0 -0
  227. /package/{packages/create-basement-app/templates/webgl → src/templates/next-default}/lib/renderer.ts +0 -0
  228. /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/scripts/dev.ts +0 -0
  229. /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/scripts/generate-component.ts +0 -0
  230. /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/scripts/generate-page.ts +0 -0
  231. /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/scripts/generate.ts +0 -0
  232. /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/scripts/utils.ts +0 -0
  233. /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/store/app.ts +0 -0
  234. /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/store/index.ts +0 -0
  235. /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/styles/README.md +0 -0
  236. /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/styles/cn.ts +0 -0
  237. /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/styles/colors.ts +0 -0
  238. /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/styles/config.ts +0 -0
  239. /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/styles/css/global.css +0 -0
  240. /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/styles/css/index.css +0 -0
  241. /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/styles/css/reset.css +0 -0
  242. /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/styles/css/root.css +0 -0
  243. /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/styles/css/tailwind.css +0 -0
  244. /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/styles/easings.ts +0 -0
  245. /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/styles/fonts.ts +0 -0
  246. /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/styles/index.ts +0 -0
  247. /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/styles/layout.mjs +0 -0
  248. /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/styles/scripts/README.md +0 -0
  249. /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/styles/scripts/generate-root.ts +0 -0
  250. /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/styles/scripts/generate-tailwind.ts +0 -0
  251. /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/styles/scripts/postcss-functions.mjs +0 -0
  252. /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/styles/scripts/setup-styles.ts +0 -0
  253. /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/styles/scripts/utils.ts +0 -0
  254. /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/styles/typography.ts +0 -0
  255. /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/utils/README.md +0 -0
  256. /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/utils/css.d.ts +0 -0
  257. /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/utils/easings.ts +0 -0
  258. /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/utils/fetch.ts +0 -0
  259. /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/utils/math.test.ts +0 -0
  260. /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/utils/math.ts +0 -0
  261. /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/utils/strings.test.ts +0 -0
  262. /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/utils/strings.ts +0 -0
  263. /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/utils/types.d.ts +0 -0
  264. /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/utils/viewport.test.ts +0 -0
  265. /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/utils/viewport.ts +0 -0
  266. /package/{packages/create-basement-app/templates/default → src/templates/next-default}/next.config.ts +0 -0
  267. /package/{packages/create-basement-app/templates/default → src/templates/next-default}/postcss.config.mjs +0 -0
  268. /package/{packages/create-basement-app/templates/default → src/templates/next-default}/public/fonts/geist/Geist-Mono.woff2 +0 -0
  269. /package/{packages/create-basement-app/templates/default → src/templates/next-default}/tsconfig.json +0 -0
  270. /package/{packages/create-basement-app/templates/default → src/templates/next-experiments}/.biome/plugins/README.md +0 -0
  271. /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/.biome/plugins/no-anchor-element.grit +0 -0
  272. /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/.biome/plugins/no-relative-parent-imports.grit +0 -0
  273. /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/.biome/plugins/no-unnecessary-forwardref.grit +0 -0
  274. /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/.editorconfig +0 -0
  275. /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/.env.example +0 -0
  276. /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/.gitattributes +0 -0
  277. /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
  278. /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/.vscode/extensions.json +0 -0
  279. /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/.vscode/settings.json +0 -0
  280. /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/README.md +0 -0
  281. /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/_gitignore +0 -0
  282. /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/app/favicon.ico +0 -0
  283. /package/{packages/create-basement-app/templates/default → src/templates/next-experiments}/app/page.tsx +0 -0
  284. /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/components/basement.svg +0 -0
  285. /package/{packages/create-basement-app/templates/default → src/templates/next-experiments}/components/layout/footer/index.tsx +0 -0
  286. /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/components/layout/header/index.tsx +0 -0
  287. /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/components/layout/navigation-menu.tsx +0 -0
  288. /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/components/ui/README.md +0 -0
  289. /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/components/ui/image/README.md +0 -0
  290. /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/README.md +0 -0
  291. /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/constants.ts +0 -0
  292. /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/hooks/index.ts +0 -0
  293. /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/hooks/use-device-detection.ts +0 -0
  294. /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/hooks/use-media-breakpoint.ts +0 -0
  295. /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/hooks/use-prefetch.ts +0 -0
  296. /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/integrations/.gitkeep +0 -0
  297. /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/scripts/dev.ts +0 -0
  298. /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/scripts/generate-component.ts +0 -0
  299. /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/scripts/generate-page.ts +0 -0
  300. /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/scripts/generate.ts +0 -0
  301. /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/scripts/utils.ts +0 -0
  302. /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/store/app.ts +0 -0
  303. /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/store/index.ts +0 -0
  304. /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/styles/README.md +0 -0
  305. /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/styles/cn.ts +0 -0
  306. /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/styles/colors.ts +0 -0
  307. /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/styles/config.ts +0 -0
  308. /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/styles/css/global.css +0 -0
  309. /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/styles/css/index.css +0 -0
  310. /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/styles/css/reset.css +0 -0
  311. /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/styles/css/root.css +0 -0
  312. /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/styles/css/tailwind.css +0 -0
  313. /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/styles/easings.ts +0 -0
  314. /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/styles/fonts.ts +0 -0
  315. /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/styles/index.ts +0 -0
  316. /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/styles/layout.mjs +0 -0
  317. /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/styles/scripts/README.md +0 -0
  318. /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/styles/scripts/generate-root.ts +0 -0
  319. /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/styles/scripts/generate-tailwind.ts +0 -0
  320. /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/styles/scripts/postcss-functions.mjs +0 -0
  321. /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/styles/scripts/setup-styles.ts +0 -0
  322. /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/styles/scripts/utils.ts +0 -0
  323. /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/styles/typography.ts +0 -0
  324. /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/utils/README.md +0 -0
  325. /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/utils/css.d.ts +0 -0
  326. /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/utils/easings.ts +0 -0
  327. /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/utils/fetch.ts +0 -0
  328. /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/utils/math.test.ts +0 -0
  329. /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/utils/math.ts +0 -0
  330. /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/utils/strings.test.ts +0 -0
  331. /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/utils/strings.ts +0 -0
  332. /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/utils/types.d.ts +0 -0
  333. /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/utils/viewport.test.ts +0 -0
  334. /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/utils/viewport.ts +0 -0
  335. /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/next.config.ts +0 -0
  336. /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/postcss.config.mjs +0 -0
  337. /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/public/fonts/geist/Geist-Mono.woff2 +0 -0
  338. /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/tsconfig.json +0 -0
  339. /package/{packages/create-basement-app/templates/experiment → src/templates/next-webgl}/.biome/plugins/README.md +0 -0
  340. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/.biome/plugins/no-anchor-element.grit +0 -0
  341. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/.biome/plugins/no-relative-parent-imports.grit +0 -0
  342. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/.biome/plugins/no-unnecessary-forwardref.grit +0 -0
  343. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/.editorconfig +0 -0
  344. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/.env.example +0 -0
  345. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/.gitattributes +0 -0
  346. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
  347. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/.vscode/extensions.json +0 -0
  348. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/.vscode/settings.json +0 -0
  349. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/README.md +0 -0
  350. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/_gitignore +0 -0
  351. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/app/favicon.ico +0 -0
  352. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/app/page.tsx +0 -0
  353. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/components/basement.svg +0 -0
  354. /package/{packages/create-basement-app/templates/experiment → src/templates/next-webgl}/components/layout/footer/index.tsx +0 -0
  355. /package/{packages/create-basement-app/templates/default → src/templates/next-webgl}/components/layout/header/index.tsx +0 -0
  356. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/components/ui/README.md +0 -0
  357. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/components/ui/image/README.md +0 -0
  358. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/components/webgl/canvas/dynamic.tsx +0 -0
  359. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/components/webgl/canvas/index.tsx +0 -0
  360. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/README.md +0 -0
  361. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/hooks/index.ts +0 -0
  362. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/hooks/use-device-detection.ts +0 -0
  363. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/hooks/use-media-breakpoint.ts +0 -0
  364. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/hooks/use-prefetch.ts +0 -0
  365. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/integrations/.gitkeep +0 -0
  366. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/scripts/dev.ts +0 -0
  367. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/scripts/generate-component.ts +0 -0
  368. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/scripts/generate-page.ts +0 -0
  369. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/scripts/generate.ts +0 -0
  370. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/scripts/utils.ts +0 -0
  371. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/store/app.ts +0 -0
  372. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/store/index.ts +0 -0
  373. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/styles/README.md +0 -0
  374. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/styles/cn.ts +0 -0
  375. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/styles/colors.ts +0 -0
  376. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/styles/config.ts +0 -0
  377. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/styles/css/global.css +0 -0
  378. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/styles/css/index.css +0 -0
  379. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/styles/css/reset.css +0 -0
  380. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/styles/css/root.css +0 -0
  381. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/styles/css/tailwind.css +0 -0
  382. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/styles/easings.ts +0 -0
  383. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/styles/fonts.ts +0 -0
  384. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/styles/index.ts +0 -0
  385. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/styles/layout.mjs +0 -0
  386. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/styles/scripts/README.md +0 -0
  387. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/styles/scripts/generate-root.ts +0 -0
  388. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/styles/scripts/generate-tailwind.ts +0 -0
  389. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/styles/scripts/postcss-functions.mjs +0 -0
  390. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/styles/scripts/setup-styles.ts +0 -0
  391. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/styles/scripts/utils.ts +0 -0
  392. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/styles/typography.ts +0 -0
  393. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/utils/README.md +0 -0
  394. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/utils/css.d.ts +0 -0
  395. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/utils/easings.ts +0 -0
  396. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/utils/fetch.ts +0 -0
  397. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/utils/math.test.ts +0 -0
  398. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/utils/math.ts +0 -0
  399. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/utils/strings.test.ts +0 -0
  400. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/utils/strings.ts +0 -0
  401. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/utils/types.d.ts +0 -0
  402. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/utils/viewport.test.ts +0 -0
  403. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/utils/viewport.ts +0 -0
  404. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/next.config.ts +0 -0
  405. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/postcss.config.mjs +0 -0
  406. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/public/fonts/geist/Geist-Mono.woff2 +0 -0
  407. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/tsconfig.json +0 -0
@@ -0,0 +1,65 @@
1
+ import { execSync } from "node:child_process";
2
+ import path from "node:path";
3
+ import fs from "fs-extra";
4
+ /**
5
+ * Set up AI agent skills and configuration in the target project.
6
+ *
7
+ * 1. Creates the agent directory structure (`.claude/skills/` or `.opencode/skills/`).
8
+ * 2. Installs recommended skills via `bunx skills add`.
9
+ * 3. If CMS is Sanity and agent is Claude, registers the Sanity MCP server.
10
+ *
11
+ * @param targetDir - Absolute path to the scaffolded project directory
12
+ * @param options - Agent configuration
13
+ */
14
+ export async function setupAgent(targetDir, options) {
15
+ if (!options.agent)
16
+ return;
17
+ const agentArg = options.agent === "opencode" ? "opencode" : "claude-code";
18
+ const agentFolder = options.agent === "opencode" ? ".opencode" : ".claude";
19
+ // Create skills directory
20
+ const skillsPath = path.join(targetDir, agentFolder, "skills");
21
+ await fs.ensureDir(skillsPath);
22
+ await fs.writeFile(path.join(skillsPath, ".gitkeep"), "");
23
+ // Build skills install commands
24
+ const skillsCommands = [
25
+ `bunx skills add vercel-labs/agent-skills --skill vercel-react-best-practices --skill web-design-guidelines -a ${agentArg} -y`,
26
+ `bunx skills add anthropics/skills --skill frontend-design -a ${agentArg} -y`,
27
+ `bunx skills add vercel-labs/next-skills --skill next-best-practices -a ${agentArg} -y`,
28
+ ];
29
+ if (options.templateType === "webgpu" ||
30
+ options.templateType === "experiment") {
31
+ skillsCommands.push(`bunx skills add https://github.com/dgreenheck/webgpu-claude-skill --skill webgpu-threejs-tsl -a ${agentArg} -y`);
32
+ }
33
+ const cms = options.cms && options.cms !== "none" ? options.cms : null;
34
+ if (cms === "sanity") {
35
+ skillsCommands.push(`bunx skills add sanity-io/agent-toolkit -a ${agentArg} -y`);
36
+ }
37
+ // Install skills
38
+ try {
39
+ execSync(skillsCommands.join(" && "), {
40
+ cwd: targetDir,
41
+ stdio: "ignore",
42
+ });
43
+ }
44
+ catch {
45
+ // Non-fatal: skills install may fail due to network issues
46
+ }
47
+ // Register Sanity MCP server for Claude Code
48
+ if (cms === "sanity" && options.agent === "claude") {
49
+ try {
50
+ execSync("claude mcp add Sanity -t http https://mcp.sanity.io --scope user", { stdio: "pipe" });
51
+ }
52
+ catch (error) {
53
+ // If it already exists, that's fine
54
+ const stderr = error instanceof Object &&
55
+ "stderr" in error &&
56
+ error.stderr instanceof Buffer
57
+ ? error.stderr.toString()
58
+ : "";
59
+ if (!stderr.includes("already exists")) {
60
+ // Silently ignore -- caller can handle messaging
61
+ }
62
+ }
63
+ }
64
+ }
65
+ //# sourceMappingURL=setup-agent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setup-agent.js","sourceRoot":"","sources":["../../../src/helpers/create/setup-agent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,MAAM,UAAU,CAAC;AAY1B;;;;;;;;;GASG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAC/B,SAAiB,EACjB,OAAqB;IAErB,IAAI,CAAC,OAAO,CAAC,KAAK;QAAE,OAAO;IAE3B,MAAM,QAAQ,GAAG,OAAO,CAAC,KAAK,KAAK,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,aAAa,CAAC;IAC3E,MAAM,WAAW,GAAG,OAAO,CAAC,KAAK,KAAK,UAAU,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC;IAE3E,0BAA0B;IAC1B,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC;IAC/D,MAAM,EAAE,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;IAC/B,MAAM,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,UAAU,CAAC,EAAE,EAAE,CAAC,CAAC;IAE1D,gCAAgC;IAChC,MAAM,cAAc,GAAa;QAChC,iHAAiH,QAAQ,KAAK;QAC9H,gEAAgE,QAAQ,KAAK;QAC7E,0EAA0E,QAAQ,KAAK;KACvF,CAAC;IAEF,IACC,OAAO,CAAC,YAAY,KAAK,QAAQ;QACjC,OAAO,CAAC,YAAY,KAAK,YAAY,EACpC,CAAC;QACF,cAAc,CAAC,IAAI,CAClB,mGAAmG,QAAQ,KAAK,CAChH,CAAC;IACH,CAAC;IAED,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,KAAK,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;IAEvE,IAAI,GAAG,KAAK,QAAQ,EAAE,CAAC;QACtB,cAAc,CAAC,IAAI,CAClB,8CAA8C,QAAQ,KAAK,CAC3D,CAAC;IACH,CAAC;IAED,iBAAiB;IACjB,IAAI,CAAC;QACJ,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;YACrC,GAAG,EAAE,SAAS;YACd,KAAK,EAAE,QAAQ;SACf,CAAC,CAAC;IACJ,CAAC;IAAC,MAAM,CAAC;QACR,2DAA2D;IAC5D,CAAC;IAED,6CAA6C;IAC7C,IAAI,GAAG,KAAK,QAAQ,IAAI,OAAO,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;QACpD,IAAI,CAAC;YACJ,QAAQ,CACP,kEAAkE,EAClE,EAAE,KAAK,EAAE,MAAM,EAAE,CACjB,CAAC;QACH,CAAC;QAAC,OAAO,KAAc,EAAE,CAAC;YACzB,oCAAoC;YACpC,MAAM,MAAM,GACX,KAAK,YAAY,MAAM;gBACvB,QAAQ,IAAI,KAAK;gBACjB,KAAK,CAAC,MAAM,YAAY,MAAM;gBAC7B,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,EAAE;gBACzB,CAAC,CAAC,EAAE,CAAC;YACP,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,CAAC;gBACxC,iDAAiD;YAClD,CAAC;QACF,CAAC;IACF,CAAC;AACF,CAAC"}
@@ -0,0 +1,23 @@
1
+ /** Options accepted by {@link setupSanity}. */
2
+ export interface SetupSanityOptions {
3
+ /** Pre-set project name so the prompt can be skipped. */
4
+ projectName?: string;
5
+ }
6
+ /**
7
+ * Automate Sanity project creation, token setup, and .env.local generation.
8
+ *
9
+ * This is an interactive flow that prompts the user through:
10
+ * 1. Sanity CLI verification
11
+ * 2. Authentication
12
+ * 3. Organization selection
13
+ * 4. Project creation
14
+ * 5. API token creation
15
+ * 6. .env.local generation
16
+ * 7. Connection verification
17
+ *
18
+ * @param targetDir - Absolute path to the project directory
19
+ * @param options - Optional overrides (e.g. pre-set project name)
20
+ * @returns `true` if setup completed successfully, `false` otherwise
21
+ */
22
+ export declare function setupSanity(targetDir: string, options?: SetupSanityOptions): Promise<boolean>;
23
+ //# sourceMappingURL=setup-sanity.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setup-sanity.d.ts","sourceRoot":"","sources":["../../../src/helpers/create/setup-sanity.ts"],"names":[],"mappings":"AAkBA,+CAA+C;AAC/C,MAAM,WAAW,kBAAkB;IAClC,yDAAyD;IACzD,WAAW,CAAC,EAAE,MAAM,CAAC;CACrB;AAmOD;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,WAAW,CAChC,SAAS,EAAE,MAAM,EACjB,OAAO,GAAE,kBAAuB,GAC9B,OAAO,CAAC,OAAO,CAAC,CA+MlB"}
@@ -0,0 +1,354 @@
1
+ import { execFileSync, execSync } from "node:child_process";
2
+ import path from "node:path";
3
+ import fs from "fs-extra";
4
+ import ora from "ora";
5
+ import pc from "picocolors";
6
+ import prompts from "prompts";
7
+ // ---------------------------------------------------------------------------
8
+ // Helpers
9
+ // ---------------------------------------------------------------------------
10
+ /**
11
+ * Strip ANSI escape codes from a string (covers all SGR and cursor sequences).
12
+ */
13
+ function stripAnsi(str) {
14
+ // biome-ignore lint/suspicious/noControlCharactersInRegex: ANSI codes need control chars
15
+ const ansiRegex = /\u001b\[[0-9;?]*[A-Za-z]/g;
16
+ return str.replace(ansiRegex, "");
17
+ }
18
+ /** Verify Sanity CLI is available via npx. */
19
+ function verifySanityCli() {
20
+ try {
21
+ execSync("npx --yes sanity --version", {
22
+ stdio: "pipe",
23
+ timeout: 30_000,
24
+ });
25
+ return true;
26
+ }
27
+ catch {
28
+ return false;
29
+ }
30
+ }
31
+ /** Verify user is authenticated with Sanity. */
32
+ function verifyAuth() {
33
+ try {
34
+ execSync("npx --yes sanity projects list", {
35
+ stdio: "pipe",
36
+ timeout: 30_000,
37
+ });
38
+ return true;
39
+ }
40
+ catch {
41
+ return false;
42
+ }
43
+ }
44
+ /** Fetch the user's Sanity organizations via the Management API. */
45
+ async function fetchOrganizations(authToken) {
46
+ const response = await fetch("https://api.sanity.io/v2021-06-07/organizations", {
47
+ headers: { Authorization: `Bearer ${authToken}` },
48
+ signal: AbortSignal.timeout(15_000),
49
+ });
50
+ if (!response.ok) {
51
+ throw new Error(`Failed to fetch organizations (${String(response.status)})`);
52
+ }
53
+ return (await response.json());
54
+ }
55
+ /**
56
+ * Create a Sanity project and return the project ID.
57
+ * Uses execFileSync to avoid shell injection via project name.
58
+ */
59
+ function createSanityProject(projectName, organizationId) {
60
+ const args = [
61
+ "--yes",
62
+ "sanity",
63
+ "projects",
64
+ "create",
65
+ "--name",
66
+ projectName,
67
+ "--dataset",
68
+ "production",
69
+ ];
70
+ if (organizationId) {
71
+ args.push("--organization", organizationId);
72
+ }
73
+ const output = execFileSync("npx", args, {
74
+ encoding: "utf-8",
75
+ timeout: 120_000,
76
+ });
77
+ const match = stripAnsi(output).match(/ID:\s*(\S+)/);
78
+ if (!match?.[1]) {
79
+ throw new Error(`Could not parse project ID from Sanity CLI output:\n${output}`);
80
+ }
81
+ return match[1];
82
+ }
83
+ /** Get the user's Sanity auth token from the CLI debug output. */
84
+ function getAuthToken() {
85
+ const output = execSync("npx --yes sanity debug --secrets 2>&1", {
86
+ encoding: "utf-8",
87
+ timeout: 30_000,
88
+ });
89
+ const clean = stripAnsi(output);
90
+ const match = clean.match(/Auth token:\s*'([^']+)'/);
91
+ if (!match?.[1]) {
92
+ throw new Error("Could not extract auth token from Sanity CLI.");
93
+ }
94
+ return match[1];
95
+ }
96
+ /** Create an API read token via the Sanity HTTP API. */
97
+ async function createApiToken(projectId, authToken) {
98
+ const url = `https://api.sanity.io/v2021-06-07/projects/${encodeURIComponent(projectId)}/tokens`;
99
+ const response = await fetch(url, {
100
+ method: "POST",
101
+ headers: {
102
+ Authorization: `Bearer ${authToken}`,
103
+ "Content-Type": "application/json",
104
+ },
105
+ body: JSON.stringify({
106
+ label: "Viewer private token",
107
+ roleName: "viewer",
108
+ }),
109
+ signal: AbortSignal.timeout(30_000),
110
+ });
111
+ const data = (await response.json());
112
+ if (response.status === 401 || response.status === 403) {
113
+ throw new Error("Auth token expired or invalid. Run: npx sanity login");
114
+ }
115
+ if (!response.ok) {
116
+ throw new Error(`Sanity API error (${String(response.status)}): ${JSON.stringify(data, null, 2)}`);
117
+ }
118
+ if (!data.key) {
119
+ throw new Error(`Failed to create API token. Response:\n${JSON.stringify(data, null, 2)}`);
120
+ }
121
+ return data.key;
122
+ }
123
+ /**
124
+ * Write .env.local with Sanity credentials.
125
+ * Appends to existing file if present.
126
+ */
127
+ async function writeEnvLocal(targetDir, projectId, apiToken) {
128
+ const envPath = path.join(targetDir, ".env.local");
129
+ const sanityBlock = `# Sanity CMS
130
+ NEXT_PUBLIC_SANITY_PROJECT_ID=${projectId}
131
+ NEXT_PUBLIC_SANITY_DATASET=production
132
+ SANITY_PRIVATE_TOKEN=${apiToken}
133
+ NEXT_PUBLIC_SANITY_API_READ_TOKEN=${apiToken}
134
+ `;
135
+ if (fs.existsSync(envPath)) {
136
+ const existing = await fs.readFile(envPath, "utf-8");
137
+ if (existing.includes("NEXT_PUBLIC_SANITY_PROJECT_ID")) {
138
+ return;
139
+ }
140
+ await fs.appendFile(envPath, `\n${sanityBlock}`);
141
+ }
142
+ else {
143
+ await fs.writeFile(envPath, sanityBlock);
144
+ }
145
+ }
146
+ /**
147
+ * Verify the connection to Sanity by querying the API.
148
+ */
149
+ async function verifyConnection(projectId, apiToken) {
150
+ try {
151
+ const url = `https://${encodeURIComponent(projectId)}.api.sanity.io/v2024-03-15/data/query/production?query=*%5B0%5D`;
152
+ const response = await fetch(url, {
153
+ headers: { Authorization: `Bearer ${apiToken}` },
154
+ signal: AbortSignal.timeout(15_000),
155
+ });
156
+ const data = (await response.json());
157
+ return Object.hasOwn(data, "result");
158
+ }
159
+ catch {
160
+ return false;
161
+ }
162
+ }
163
+ /** Ensure .env.local is listed in .gitignore. */
164
+ async function ensureGitignore(targetDir) {
165
+ const gitignorePath = path.join(targetDir, ".gitignore");
166
+ let content = "";
167
+ if (fs.existsSync(gitignorePath)) {
168
+ content = await fs.readFile(gitignorePath, "utf-8");
169
+ }
170
+ if (!content.includes(".env.local")) {
171
+ const newline = content.length > 0 && !content.endsWith("\n") ? "\n" : "";
172
+ await fs.writeFile(gitignorePath, `${content + newline}.env.local\n`);
173
+ }
174
+ }
175
+ // ---------------------------------------------------------------------------
176
+ // Main entry point
177
+ // ---------------------------------------------------------------------------
178
+ /**
179
+ * Automate Sanity project creation, token setup, and .env.local generation.
180
+ *
181
+ * This is an interactive flow that prompts the user through:
182
+ * 1. Sanity CLI verification
183
+ * 2. Authentication
184
+ * 3. Organization selection
185
+ * 4. Project creation
186
+ * 5. API token creation
187
+ * 6. .env.local generation
188
+ * 7. Connection verification
189
+ *
190
+ * @param targetDir - Absolute path to the project directory
191
+ * @param options - Optional overrides (e.g. pre-set project name)
192
+ * @returns `true` if setup completed successfully, `false` otherwise
193
+ */
194
+ export async function setupSanity(targetDir, options = {}) {
195
+ console.log();
196
+ const { wantSetup } = await prompts({
197
+ type: "confirm",
198
+ name: "wantSetup",
199
+ message: "Set up Sanity project automatically? (creates project, tokens, .env.local)",
200
+ initial: true,
201
+ });
202
+ if (!wantSetup) {
203
+ console.log(pc.dim(" Skipped. You can set up Sanity manually later.\n"));
204
+ return false;
205
+ }
206
+ // Step 1: Verify Sanity CLI
207
+ const cliSpinner = ora("Checking Sanity CLI...").start();
208
+ if (!verifySanityCli()) {
209
+ cliSpinner.fail(pc.red("Sanity CLI not available. Make sure sanity packages are installed."));
210
+ console.log(pc.dim(" Run: bun add next-sanity @sanity/client @sanity/image-url sanity @sanity/vision\n"));
211
+ return false;
212
+ }
213
+ cliSpinner.succeed(pc.green("Sanity CLI available."));
214
+ // Step 2: Verify authentication
215
+ const authSpinner = ora("Verifying Sanity authentication...").start();
216
+ if (!verifyAuth()) {
217
+ authSpinner.info(pc.yellow("Not logged in. Opening Sanity login..."));
218
+ try {
219
+ execSync("npx --yes sanity login", { stdio: "inherit" });
220
+ }
221
+ catch {
222
+ // login command failed or user cancelled
223
+ }
224
+ const retrySpinner = ora("Re-verifying Sanity authentication...").start();
225
+ if (!verifyAuth()) {
226
+ retrySpinner.fail(pc.red("Still not logged in to Sanity."));
227
+ console.log(pc.yellow(" Run: npx sanity login"));
228
+ console.log(pc.dim(" This opens a browser for authentication. Re-run this command after logging in.\n"));
229
+ return false;
230
+ }
231
+ retrySpinner.succeed(pc.green("Authenticated with Sanity."));
232
+ }
233
+ else {
234
+ authSpinner.succeed(pc.green("Authenticated with Sanity."));
235
+ }
236
+ // Step 3: Get auth token (needed for org selection and API token creation)
237
+ const tokenSpinner = ora("Retrieving auth token...").start();
238
+ let authToken;
239
+ try {
240
+ authToken = getAuthToken();
241
+ tokenSpinner.succeed(pc.green("Auth token retrieved."));
242
+ }
243
+ catch (e) {
244
+ const msg = e instanceof Error ? e.message : String(e);
245
+ tokenSpinner.fail(pc.red(`Failed to get auth token: ${msg}`));
246
+ console.log(pc.dim(" Fallback: check ~/.config/sanity/config.json\n"));
247
+ return false;
248
+ }
249
+ // Step 4: Select organization
250
+ let organizationId = null;
251
+ try {
252
+ const orgSpinner = ora("Fetching organizations...").start();
253
+ const organizations = await fetchOrganizations(authToken);
254
+ if (organizations.length > 0) {
255
+ orgSpinner.succeed(pc.green(`Found ${String(organizations.length)} organization${organizations.length > 1 ? "s" : ""}.`));
256
+ const choices = [
257
+ { title: "Personal account", value: null },
258
+ ...organizations.map((org) => ({
259
+ title: org.name,
260
+ description: org.slug ?? org.id,
261
+ value: org.id,
262
+ })),
263
+ ];
264
+ const { selectedOrg } = (await prompts({
265
+ type: "select",
266
+ name: "selectedOrg",
267
+ message: "Which organization should own this project?",
268
+ choices,
269
+ initial: organizations.length === 1 ? 1 : 0,
270
+ }));
271
+ if (selectedOrg === undefined) {
272
+ console.log(pc.yellow("\n Setup cancelled.\n"));
273
+ return false;
274
+ }
275
+ organizationId = selectedOrg ?? null;
276
+ }
277
+ else {
278
+ orgSpinner.succeed(pc.green("Using personal account."));
279
+ }
280
+ }
281
+ catch {
282
+ // Non-critical: fall back to no org (personal account)
283
+ console.log(pc.dim(" Could not fetch organizations, using personal account."));
284
+ }
285
+ // Step 5: Get project name and create project
286
+ const dirName = path.basename(targetDir);
287
+ const projectName = options.projectName ??
288
+ (await prompts({
289
+ type: "text",
290
+ name: "name",
291
+ message: "Sanity project name?",
292
+ initial: dirName,
293
+ validate: (v) => v.length > 0 ? true : "Project name is required",
294
+ })).name;
295
+ if (!projectName) {
296
+ console.log(pc.yellow("\n Setup cancelled.\n"));
297
+ return false;
298
+ }
299
+ const projectSpinner = ora(`Creating Sanity project "${pc.cyan(projectName)}"${organizationId ? " in organization" : ""}...`).start();
300
+ let projectId;
301
+ try {
302
+ projectId = createSanityProject(projectName, organizationId);
303
+ projectSpinner.succeed(pc.green(`Sanity project created: ${pc.cyan(projectId)}`));
304
+ }
305
+ catch (e) {
306
+ const msg = e instanceof Error ? e.message : String(e);
307
+ projectSpinner.fail(pc.red(`Failed to create project: ${msg}`));
308
+ return false;
309
+ }
310
+ // Step 6: Create API read token
311
+ const apiSpinner = ora("Creating API read token...").start();
312
+ let apiToken;
313
+ try {
314
+ apiToken = await createApiToken(projectId, authToken);
315
+ apiSpinner.succeed(pc.green("API read token created."));
316
+ }
317
+ catch (e) {
318
+ const msg = e instanceof Error ? e.message : String(e);
319
+ apiSpinner.fail(pc.red(`Failed to create API token: ${msg}`));
320
+ return false;
321
+ }
322
+ // Step 7: Write .env.local
323
+ const envSpinner = ora("Writing .env.local...").start();
324
+ try {
325
+ await writeEnvLocal(targetDir, projectId, apiToken);
326
+ envSpinner.succeed(pc.green(".env.local configured with Sanity credentials."));
327
+ }
328
+ catch (e) {
329
+ const msg = e instanceof Error ? e.message : String(e);
330
+ envSpinner.fail(pc.red(`Failed to write .env.local: ${msg}`));
331
+ return false;
332
+ }
333
+ // Step 8: Verify connection
334
+ const verifySpinner = ora("Verifying Sanity connection...").start();
335
+ const connected = await verifyConnection(projectId, apiToken);
336
+ if (connected) {
337
+ verifySpinner.succeed(pc.green("Sanity connection verified."));
338
+ }
339
+ else {
340
+ verifySpinner.warn(pc.yellow("Could not verify connection. Check credentials after bun install."));
341
+ }
342
+ // Step 9: Ensure .env.local is gitignored
343
+ try {
344
+ await ensureGitignore(targetDir);
345
+ }
346
+ catch {
347
+ // Non-critical, don't block
348
+ }
349
+ console.log(pc.green(`\n Sanity project "${projectName}" (${projectId}) is ready.`));
350
+ console.log(pc.dim(` Manage at: https://sanity.io/manage/project/${projectId}`));
351
+ console.log(pc.dim(" Studio will be available at: /studio\n"));
352
+ return true;
353
+ }
354
+ //# sourceMappingURL=setup-sanity.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setup-sanity.js","sourceRoot":"","sources":["../../../src/helpers/create/setup-sanity.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ /** Options for updating the generated project's package.json. */
2
+ export interface UpdatePackageOptions {
3
+ /** Display / directory name for the project. */
4
+ projectName: string;
5
+ /** Selected CMS integration (e.g. "sanity") or "none" / null. */
6
+ cms: string | null;
7
+ /** Selected animation library (e.g. "gsap", "motion") or "none" / null. */
8
+ animation: string | null;
9
+ /** List of selected hook filenames to include. */
10
+ hooks: string[];
11
+ }
12
+ /**
13
+ * Read the template's package.json, inject project name, CMS deps/scripts,
14
+ * animation deps, and hook deps, then write it back.
15
+ *
16
+ * @param targetDir - Absolute path to the scaffolded project directory
17
+ * @param options - Configuration gathered from user prompts
18
+ */
19
+ export declare function updatePackageJson(targetDir: string, options: UpdatePackageOptions): Promise<void>;
20
+ //# sourceMappingURL=update-package.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update-package.d.ts","sourceRoot":"","sources":["../../../src/helpers/create/update-package.ts"],"names":[],"mappings":"AAgBA,iEAAiE;AACjE,MAAM,WAAW,oBAAoB;IACpC,gDAAgD;IAChD,WAAW,EAAE,MAAM,CAAC;IACpB,iEAAiE;IACjE,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACnB,2EAA2E;IAC3E,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,kDAAkD;IAClD,KAAK,EAAE,MAAM,EAAE,CAAC;CAChB;AAUD;;;;;;GAMG;AACH,wBAAsB,iBAAiB,CACtC,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,oBAAoB,GAC3B,OAAO,CAAC,IAAI,CAAC,CA6Ef"}
@@ -0,0 +1,87 @@
1
+ import path from "node:path";
2
+ import fs from "fs-extra";
3
+ import { getAnimationConfig } from "../../configs/animations.js";
4
+ import { hooksConfig } from "../add/hooks-config.js";
5
+ import { sanityConfig } from "../integrate/sanity/config.js";
6
+ /**
7
+ * CMS config lookup.
8
+ * When more integrations are added, extend this map.
9
+ */
10
+ const CMS_CONFIGS = {
11
+ sanity: sanityConfig,
12
+ };
13
+ /**
14
+ * Read the template's package.json, inject project name, CMS deps/scripts,
15
+ * animation deps, and hook deps, then write it back.
16
+ *
17
+ * @param targetDir - Absolute path to the scaffolded project directory
18
+ * @param options - Configuration gathered from user prompts
19
+ */
20
+ export async function updatePackageJson(targetDir, options) {
21
+ const pkgPath = path.join(targetDir, "package.json");
22
+ if (!(await fs.pathExists(pkgPath))) {
23
+ throw new Error(`No package.json found at ${pkgPath}`);
24
+ }
25
+ const pkg = (await fs.readJson(pkgPath));
26
+ // Project identity
27
+ pkg.name = options.projectName;
28
+ pkg.version = "0.1.0";
29
+ // CMS dependencies and scripts
30
+ const cmsKey = options.cms && options.cms !== "none" ? options.cms : null;
31
+ if (cmsKey) {
32
+ const cmsConfig = CMS_CONFIGS[cmsKey];
33
+ if (cmsConfig) {
34
+ pkg.dependencies = {
35
+ ...pkg.dependencies,
36
+ ...cmsConfig.dependencies,
37
+ };
38
+ if (Object.keys(cmsConfig.devDependencies).length > 0) {
39
+ pkg.devDependencies = {
40
+ ...pkg.devDependencies,
41
+ ...cmsConfig.devDependencies,
42
+ };
43
+ }
44
+ if (Object.keys(cmsConfig.scripts).length > 0) {
45
+ pkg.scripts = {
46
+ ...pkg.scripts,
47
+ ...cmsConfig.scripts,
48
+ };
49
+ }
50
+ }
51
+ }
52
+ // Animation dependencies
53
+ const animKey = options.animation && options.animation !== "none"
54
+ ? options.animation
55
+ : null;
56
+ if (animKey) {
57
+ const animationConfig = getAnimationConfig(animKey);
58
+ if (animationConfig) {
59
+ pkg.dependencies = {
60
+ ...pkg.dependencies,
61
+ ...animationConfig.dependencies,
62
+ };
63
+ }
64
+ }
65
+ // Hook dependencies
66
+ if (options.hooks.length > 0) {
67
+ for (const hookFile of options.hooks) {
68
+ const hookCfg = hooksConfig.find((h) => h.file === hookFile);
69
+ if (!hookCfg)
70
+ continue;
71
+ if (Object.keys(hookCfg.dependencies).length > 0) {
72
+ pkg.dependencies = {
73
+ ...pkg.dependencies,
74
+ ...hookCfg.dependencies,
75
+ };
76
+ }
77
+ if (Object.keys(hookCfg.devDependencies).length > 0) {
78
+ pkg.devDependencies = {
79
+ ...pkg.devDependencies,
80
+ ...hookCfg.devDependencies,
81
+ };
82
+ }
83
+ }
84
+ }
85
+ await fs.writeJson(pkgPath, pkg, { spaces: 2 });
86
+ }
87
+ //# sourceMappingURL=update-package.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update-package.js","sourceRoot":"","sources":["../../../src/helpers/create/update-package.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ interface AddIntegrationOptions {
2
+ cms?: string;
3
+ }
4
+ /**
5
+ * Adds an integration to the current working directory project.
6
+ *
7
+ * Validates the project, prompts for integration selection, copies files
8
+ * using the merge orchestrator, adds dependencies, and optionally sets
9
+ * up Sanity project configuration.
10
+ */
11
+ export declare function addIntegration(options?: AddIntegrationOptions): Promise<void>;
12
+ export {};
13
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/helpers/integrate/index.ts"],"names":[],"mappings":"AAcA,UAAU,qBAAqB;IAC9B,GAAG,CAAC,EAAE,MAAM,CAAC;CACb;AAuDD;;;;;;GAMG;AACH,wBAAsB,cAAc,CACnC,OAAO,GAAE,qBAA0B,GACjC,OAAO,CAAC,IAAI,CAAC,CA8Mf"}