@cimplify/sdk 0.44.34 → 0.45.1

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 (470) hide show
  1. package/README.md +21 -16
  2. package/dist/advanced.d.mts +1 -1
  3. package/dist/advanced.d.ts +1 -1
  4. package/dist/{client-5B9IPDmf.d.ts → client-Bsd4Vi_y.d.ts} +1 -0
  5. package/dist/{client-CpVMRI8V.d.mts → client-C5LcbNxL.d.mts} +1 -0
  6. package/dist/{client-DMhRxuzm.d.ts → client-DjzIoewX.d.ts} +1 -1
  7. package/dist/{client-Cwb1sMr3.d.mts → client-EM8xKCPO.d.mts} +1 -1
  8. package/dist/index.d.mts +1 -1
  9. package/dist/index.d.ts +1 -1
  10. package/dist/react.d.mts +120 -45
  11. package/dist/react.d.ts +120 -45
  12. package/dist/react.js +453 -97
  13. package/dist/react.mjs +452 -98
  14. package/dist/server.d.mts +2 -2
  15. package/dist/server.d.ts +2 -2
  16. package/dist/styles.css +2 -2
  17. package/dist/testing/suite.d.mts +2 -2
  18. package/dist/testing/suite.d.ts +2 -2
  19. package/dist/testing.d.mts +2 -2
  20. package/dist/testing.d.ts +2 -2
  21. package/package.json +5 -9
  22. package/registry/booking-page.json +2 -1
  23. package/registry/bookings-page.json +1 -1
  24. package/registry/index.json +24 -0
  25. package/dist/cli/commands/deploy.mjs +0 -717
  26. package/dist/cli/commands/dev.mjs +0 -479
  27. package/dist/cli/commands/domains.mjs +0 -769
  28. package/dist/cli/commands/env.mjs +0 -705
  29. package/dist/cli/commands/link.mjs +0 -378
  30. package/dist/cli/commands/login.mjs +0 -584
  31. package/dist/cli/commands/logout.mjs +0 -75
  32. package/dist/cli/commands/logs.mjs +0 -432
  33. package/dist/cli/commands/projects.mjs +0 -473
  34. package/dist/cli/commands/repo.mjs +0 -584
  35. package/dist/cli/commands/rollback.mjs +0 -553
  36. package/dist/cli/commands/status.mjs +0 -450
  37. package/dist/cli/commands/unlink.mjs +0 -79
  38. package/dist/cli/commands/whoami.mjs +0 -285
  39. package/dist/cli.js +0 -184
  40. package/dist/dispatcher.mjs +0 -360
  41. package/registry/service-card.json +0 -16
  42. package/registry/service-grid.json +0 -16
  43. package/templates/storefront-bakery/.claude/skills/cimplify-storefront/SKILL.md +0 -145
  44. package/templates/storefront-bakery/.cursor/rules/cimplify-storefront.mdc +0 -25
  45. package/templates/storefront-bakery/.env.example +0 -16
  46. package/templates/storefront-bakery/AGENTS.md +0 -120
  47. package/templates/storefront-bakery/CLAUDE.md +0 -22
  48. package/templates/storefront-bakery/README.md +0 -73
  49. package/templates/storefront-bakery/__tests__/brand.test.ts +0 -4
  50. package/templates/storefront-bakery/__tests__/cart-flow.test.ts +0 -4
  51. package/templates/storefront-bakery/__tests__/contract.test.ts +0 -4
  52. package/templates/storefront-bakery/app/about/page.tsx +0 -38
  53. package/templates/storefront-bakery/app/accessibility/page.tsx +0 -11
  54. package/templates/storefront-bakery/app/account/addresses/page.tsx +0 -21
  55. package/templates/storefront-bakery/app/account/orders/page.tsx +0 -21
  56. package/templates/storefront-bakery/app/account/page.tsx +0 -22
  57. package/templates/storefront-bakery/app/account/settings/page.tsx +0 -21
  58. package/templates/storefront-bakery/app/cart/page.tsx +0 -9
  59. package/templates/storefront-bakery/app/categories/[slug]/listing-client.tsx +0 -19
  60. package/templates/storefront-bakery/app/categories/[slug]/page.tsx +0 -118
  61. package/templates/storefront-bakery/app/checkout/page.tsx +0 -17
  62. package/templates/storefront-bakery/app/collections/[slug]/listing-client.tsx +0 -20
  63. package/templates/storefront-bakery/app/collections/[slug]/page.tsx +0 -118
  64. package/templates/storefront-bakery/app/contact/contact-form.tsx +0 -109
  65. package/templates/storefront-bakery/app/contact/page.tsx +0 -54
  66. package/templates/storefront-bakery/app/error.tsx +0 -60
  67. package/templates/storefront-bakery/app/faq/page.tsx +0 -46
  68. package/templates/storefront-bakery/app/globals.css +0 -47
  69. package/templates/storefront-bakery/app/layout.tsx +0 -82
  70. package/templates/storefront-bakery/app/llms.txt/route.ts +0 -94
  71. package/templates/storefront-bakery/app/login/page.tsx +0 -17
  72. package/templates/storefront-bakery/app/not-found.tsx +0 -39
  73. package/templates/storefront-bakery/app/opensearch.xml/route.ts +0 -37
  74. package/templates/storefront-bakery/app/orders/[id]/page.tsx +0 -21
  75. package/templates/storefront-bakery/app/page.tsx +0 -97
  76. package/templates/storefront-bakery/app/privacy/page.tsx +0 -44
  77. package/templates/storefront-bakery/app/returns/page.tsx +0 -11
  78. package/templates/storefront-bakery/app/robots.ts +0 -18
  79. package/templates/storefront-bakery/app/search/page.tsx +0 -38
  80. package/templates/storefront-bakery/app/search/search-client.tsx +0 -7
  81. package/templates/storefront-bakery/app/shipping/page.tsx +0 -16
  82. package/templates/storefront-bakery/app/shop/page.tsx +0 -31
  83. package/templates/storefront-bakery/app/shop/shop-client.tsx +0 -27
  84. package/templates/storefront-bakery/app/signup/page.tsx +0 -17
  85. package/templates/storefront-bakery/app/sitemap-page/page.tsx +0 -167
  86. package/templates/storefront-bakery/app/sitemap.ts +0 -62
  87. package/templates/storefront-bakery/app/terms/page.tsx +0 -44
  88. package/templates/storefront-bakery/app/track-order/page.tsx +0 -24
  89. package/templates/storefront-bakery/app/track-order/track-order-form.tsx +0 -69
  90. package/templates/storefront-bakery/components/account-iframe.tsx +0 -13
  91. package/templates/storefront-bakery/components/cart-drawer.tsx +0 -14
  92. package/templates/storefront-bakery/components/cart-pill.tsx +0 -36
  93. package/templates/storefront-bakery/components/category-grid.tsx +0 -28
  94. package/templates/storefront-bakery/components/collection-strip.tsx +0 -45
  95. package/templates/storefront-bakery/components/footer.tsx +0 -148
  96. package/templates/storefront-bakery/components/header.tsx +0 -43
  97. package/templates/storefront-bakery/components/hero.tsx +0 -25
  98. package/templates/storefront-bakery/components/nav-link.tsx +0 -20
  99. package/templates/storefront-bakery/components/policy-page.tsx +0 -49
  100. package/templates/storefront-bakery/components/product-modal.tsx +0 -104
  101. package/templates/storefront-bakery/components/providers.tsx +0 -35
  102. package/templates/storefront-bakery/components/store-product-card.tsx +0 -87
  103. package/templates/storefront-bakery/lib/brand.ts +0 -570
  104. package/templates/storefront-bakery/lib/cart.ts +0 -12
  105. package/templates/storefront-bakery/next.config.ts +0 -42
  106. package/templates/storefront-bakery/package.json +0 -35
  107. package/templates/storefront-bakery/postcss.config.mjs +0 -7
  108. package/templates/storefront-bakery/tsconfig.json +0 -23
  109. package/templates/storefront-bakery/vitest.config.ts +0 -9
  110. package/templates/storefront-fashion/.claude/skills/cimplify-storefront/SKILL.md +0 -145
  111. package/templates/storefront-fashion/.cursor/rules/cimplify-storefront.mdc +0 -25
  112. package/templates/storefront-fashion/.env.example +0 -16
  113. package/templates/storefront-fashion/AGENTS.md +0 -126
  114. package/templates/storefront-fashion/CLAUDE.md +0 -22
  115. package/templates/storefront-fashion/README.md +0 -77
  116. package/templates/storefront-fashion/__tests__/brand.test.ts +0 -4
  117. package/templates/storefront-fashion/__tests__/cart-flow.test.ts +0 -55
  118. package/templates/storefront-fashion/__tests__/contract.test.ts +0 -4
  119. package/templates/storefront-fashion/app/about/page.tsx +0 -41
  120. package/templates/storefront-fashion/app/accessibility/page.tsx +0 -11
  121. package/templates/storefront-fashion/app/account/addresses/page.tsx +0 -21
  122. package/templates/storefront-fashion/app/account/orders/page.tsx +0 -21
  123. package/templates/storefront-fashion/app/account/page.tsx +0 -22
  124. package/templates/storefront-fashion/app/account/settings/page.tsx +0 -21
  125. package/templates/storefront-fashion/app/cart/page.tsx +0 -9
  126. package/templates/storefront-fashion/app/categories/[slug]/listing-client.tsx +0 -19
  127. package/templates/storefront-fashion/app/categories/[slug]/page.tsx +0 -130
  128. package/templates/storefront-fashion/app/checkout/page.tsx +0 -17
  129. package/templates/storefront-fashion/app/collections/[slug]/listing-client.tsx +0 -20
  130. package/templates/storefront-fashion/app/collections/[slug]/page.tsx +0 -130
  131. package/templates/storefront-fashion/app/contact/contact-form.tsx +0 -109
  132. package/templates/storefront-fashion/app/contact/page.tsx +0 -54
  133. package/templates/storefront-fashion/app/error.tsx +0 -61
  134. package/templates/storefront-fashion/app/faq/page.tsx +0 -46
  135. package/templates/storefront-fashion/app/globals.css +0 -46
  136. package/templates/storefront-fashion/app/layout.tsx +0 -78
  137. package/templates/storefront-fashion/app/llms.txt/route.ts +0 -94
  138. package/templates/storefront-fashion/app/login/page.tsx +0 -17
  139. package/templates/storefront-fashion/app/lookbook/page.tsx +0 -132
  140. package/templates/storefront-fashion/app/not-found.tsx +0 -39
  141. package/templates/storefront-fashion/app/opensearch.xml/route.ts +0 -37
  142. package/templates/storefront-fashion/app/orders/[id]/page.tsx +0 -24
  143. package/templates/storefront-fashion/app/page.tsx +0 -183
  144. package/templates/storefront-fashion/app/privacy/page.tsx +0 -44
  145. package/templates/storefront-fashion/app/products/[slug]/page.tsx +0 -165
  146. package/templates/storefront-fashion/app/products/[slug]/product-detail.tsx +0 -70
  147. package/templates/storefront-fashion/app/returns/page.tsx +0 -11
  148. package/templates/storefront-fashion/app/robots.ts +0 -18
  149. package/templates/storefront-fashion/app/search/page.tsx +0 -38
  150. package/templates/storefront-fashion/app/search/search-client.tsx +0 -7
  151. package/templates/storefront-fashion/app/shipping/page.tsx +0 -16
  152. package/templates/storefront-fashion/app/shop/page.tsx +0 -63
  153. package/templates/storefront-fashion/app/shop/shop-client.tsx +0 -32
  154. package/templates/storefront-fashion/app/signup/page.tsx +0 -17
  155. package/templates/storefront-fashion/app/sitemap-page/page.tsx +0 -167
  156. package/templates/storefront-fashion/app/sitemap.ts +0 -59
  157. package/templates/storefront-fashion/app/size-guide/page.tsx +0 -155
  158. package/templates/storefront-fashion/app/terms/page.tsx +0 -44
  159. package/templates/storefront-fashion/app/track-order/page.tsx +0 -24
  160. package/templates/storefront-fashion/app/track-order/track-order-form.tsx +0 -69
  161. package/templates/storefront-fashion/components/account-iframe.tsx +0 -13
  162. package/templates/storefront-fashion/components/brand-marquee.tsx +0 -27
  163. package/templates/storefront-fashion/components/cart-drawer.tsx +0 -14
  164. package/templates/storefront-fashion/components/cart-pill.tsx +0 -36
  165. package/templates/storefront-fashion/components/category-grid.tsx +0 -28
  166. package/templates/storefront-fashion/components/category-tiles.tsx +0 -104
  167. package/templates/storefront-fashion/components/collection-strip.tsx +0 -45
  168. package/templates/storefront-fashion/components/feature-hero.tsx +0 -82
  169. package/templates/storefront-fashion/components/footer.tsx +0 -153
  170. package/templates/storefront-fashion/components/header.tsx +0 -43
  171. package/templates/storefront-fashion/components/hero.tsx +0 -28
  172. package/templates/storefront-fashion/components/nav-link.tsx +0 -20
  173. package/templates/storefront-fashion/components/newsletter.tsx +0 -50
  174. package/templates/storefront-fashion/components/policy-page.tsx +0 -49
  175. package/templates/storefront-fashion/components/promo-banner.tsx +0 -41
  176. package/templates/storefront-fashion/components/providers.tsx +0 -35
  177. package/templates/storefront-fashion/components/section-heading.tsx +0 -37
  178. package/templates/storefront-fashion/components/store-product-card.tsx +0 -87
  179. package/templates/storefront-fashion/components/trade-in-cta.tsx +0 -54
  180. package/templates/storefront-fashion/components/trust-bar.tsx +0 -66
  181. package/templates/storefront-fashion/e2e/visual.spec.ts +0 -52
  182. package/templates/storefront-fashion/lib/brand.ts +0 -518
  183. package/templates/storefront-fashion/lib/cart.ts +0 -12
  184. package/templates/storefront-fashion/next.config.ts +0 -42
  185. package/templates/storefront-fashion/package.json +0 -38
  186. package/templates/storefront-fashion/playwright.config.ts +0 -48
  187. package/templates/storefront-fashion/postcss.config.mjs +0 -7
  188. package/templates/storefront-fashion/tsconfig.json +0 -23
  189. package/templates/storefront-fashion/vitest.config.ts +0 -9
  190. package/templates/storefront-grocery/.claude/skills/cimplify-storefront/SKILL.md +0 -145
  191. package/templates/storefront-grocery/.cursor/rules/cimplify-storefront.mdc +0 -25
  192. package/templates/storefront-grocery/.env.example +0 -16
  193. package/templates/storefront-grocery/AGENTS.md +0 -96
  194. package/templates/storefront-grocery/CLAUDE.md +0 -22
  195. package/templates/storefront-grocery/README.md +0 -73
  196. package/templates/storefront-grocery/__tests__/brand.test.ts +0 -4
  197. package/templates/storefront-grocery/__tests__/cart-flow.test.ts +0 -4
  198. package/templates/storefront-grocery/__tests__/contract.test.ts +0 -4
  199. package/templates/storefront-grocery/app/about/page.tsx +0 -38
  200. package/templates/storefront-grocery/app/accessibility/page.tsx +0 -11
  201. package/templates/storefront-grocery/app/account/addresses/page.tsx +0 -21
  202. package/templates/storefront-grocery/app/account/orders/page.tsx +0 -21
  203. package/templates/storefront-grocery/app/account/page.tsx +0 -22
  204. package/templates/storefront-grocery/app/account/settings/page.tsx +0 -21
  205. package/templates/storefront-grocery/app/cart/page.tsx +0 -9
  206. package/templates/storefront-grocery/app/categories/[slug]/listing-client.tsx +0 -19
  207. package/templates/storefront-grocery/app/categories/[slug]/page.tsx +0 -118
  208. package/templates/storefront-grocery/app/checkout/page.tsx +0 -17
  209. package/templates/storefront-grocery/app/collections/[slug]/listing-client.tsx +0 -20
  210. package/templates/storefront-grocery/app/collections/[slug]/page.tsx +0 -118
  211. package/templates/storefront-grocery/app/contact/contact-form.tsx +0 -109
  212. package/templates/storefront-grocery/app/contact/page.tsx +0 -54
  213. package/templates/storefront-grocery/app/error.tsx +0 -60
  214. package/templates/storefront-grocery/app/faq/page.tsx +0 -46
  215. package/templates/storefront-grocery/app/globals.css +0 -45
  216. package/templates/storefront-grocery/app/layout.tsx +0 -77
  217. package/templates/storefront-grocery/app/llms.txt/route.ts +0 -94
  218. package/templates/storefront-grocery/app/login/page.tsx +0 -17
  219. package/templates/storefront-grocery/app/not-found.tsx +0 -39
  220. package/templates/storefront-grocery/app/opensearch.xml/route.ts +0 -37
  221. package/templates/storefront-grocery/app/orders/[id]/page.tsx +0 -21
  222. package/templates/storefront-grocery/app/page.tsx +0 -97
  223. package/templates/storefront-grocery/app/privacy/page.tsx +0 -44
  224. package/templates/storefront-grocery/app/returns/page.tsx +0 -11
  225. package/templates/storefront-grocery/app/robots.ts +0 -18
  226. package/templates/storefront-grocery/app/search/page.tsx +0 -38
  227. package/templates/storefront-grocery/app/search/search-client.tsx +0 -7
  228. package/templates/storefront-grocery/app/shipping/page.tsx +0 -16
  229. package/templates/storefront-grocery/app/shop/page.tsx +0 -31
  230. package/templates/storefront-grocery/app/shop/shop-client.tsx +0 -27
  231. package/templates/storefront-grocery/app/signup/page.tsx +0 -17
  232. package/templates/storefront-grocery/app/sitemap-page/page.tsx +0 -167
  233. package/templates/storefront-grocery/app/sitemap.ts +0 -62
  234. package/templates/storefront-grocery/app/terms/page.tsx +0 -44
  235. package/templates/storefront-grocery/app/track-order/page.tsx +0 -24
  236. package/templates/storefront-grocery/app/track-order/track-order-form.tsx +0 -69
  237. package/templates/storefront-grocery/components/account-iframe.tsx +0 -13
  238. package/templates/storefront-grocery/components/cart-drawer.tsx +0 -14
  239. package/templates/storefront-grocery/components/cart-pill.tsx +0 -36
  240. package/templates/storefront-grocery/components/category-grid.tsx +0 -28
  241. package/templates/storefront-grocery/components/collection-strip.tsx +0 -45
  242. package/templates/storefront-grocery/components/footer.tsx +0 -148
  243. package/templates/storefront-grocery/components/header.tsx +0 -43
  244. package/templates/storefront-grocery/components/hero.tsx +0 -25
  245. package/templates/storefront-grocery/components/nav-link.tsx +0 -20
  246. package/templates/storefront-grocery/components/policy-page.tsx +0 -49
  247. package/templates/storefront-grocery/components/product-modal.tsx +0 -104
  248. package/templates/storefront-grocery/components/providers.tsx +0 -35
  249. package/templates/storefront-grocery/components/store-product-card.tsx +0 -87
  250. package/templates/storefront-grocery/lib/brand.ts +0 -375
  251. package/templates/storefront-grocery/lib/cart.ts +0 -12
  252. package/templates/storefront-grocery/next.config.ts +0 -42
  253. package/templates/storefront-grocery/package.json +0 -35
  254. package/templates/storefront-grocery/postcss.config.mjs +0 -7
  255. package/templates/storefront-grocery/tsconfig.json +0 -23
  256. package/templates/storefront-grocery/vitest.config.ts +0 -9
  257. package/templates/storefront-restaurant/.claude/skills/cimplify-storefront/SKILL.md +0 -145
  258. package/templates/storefront-restaurant/.cursor/rules/cimplify-storefront.mdc +0 -25
  259. package/templates/storefront-restaurant/.env.example +0 -16
  260. package/templates/storefront-restaurant/AGENTS.md +0 -102
  261. package/templates/storefront-restaurant/CLAUDE.md +0 -22
  262. package/templates/storefront-restaurant/README.md +0 -73
  263. package/templates/storefront-restaurant/__tests__/brand.test.ts +0 -4
  264. package/templates/storefront-restaurant/__tests__/cart-flow.test.ts +0 -4
  265. package/templates/storefront-restaurant/__tests__/contract.test.ts +0 -4
  266. package/templates/storefront-restaurant/app/about/page.tsx +0 -38
  267. package/templates/storefront-restaurant/app/accessibility/page.tsx +0 -11
  268. package/templates/storefront-restaurant/app/account/addresses/page.tsx +0 -21
  269. package/templates/storefront-restaurant/app/account/orders/page.tsx +0 -21
  270. package/templates/storefront-restaurant/app/account/page.tsx +0 -22
  271. package/templates/storefront-restaurant/app/account/settings/page.tsx +0 -21
  272. package/templates/storefront-restaurant/app/cart/page.tsx +0 -9
  273. package/templates/storefront-restaurant/app/categories/[slug]/listing-client.tsx +0 -19
  274. package/templates/storefront-restaurant/app/categories/[slug]/page.tsx +0 -118
  275. package/templates/storefront-restaurant/app/checkout/page.tsx +0 -17
  276. package/templates/storefront-restaurant/app/collections/[slug]/listing-client.tsx +0 -20
  277. package/templates/storefront-restaurant/app/collections/[slug]/page.tsx +0 -118
  278. package/templates/storefront-restaurant/app/contact/contact-form.tsx +0 -109
  279. package/templates/storefront-restaurant/app/contact/page.tsx +0 -54
  280. package/templates/storefront-restaurant/app/error.tsx +0 -60
  281. package/templates/storefront-restaurant/app/faq/page.tsx +0 -46
  282. package/templates/storefront-restaurant/app/globals.css +0 -44
  283. package/templates/storefront-restaurant/app/layout.tsx +0 -82
  284. package/templates/storefront-restaurant/app/llms.txt/route.ts +0 -94
  285. package/templates/storefront-restaurant/app/login/page.tsx +0 -17
  286. package/templates/storefront-restaurant/app/not-found.tsx +0 -39
  287. package/templates/storefront-restaurant/app/opensearch.xml/route.ts +0 -37
  288. package/templates/storefront-restaurant/app/orders/[id]/page.tsx +0 -21
  289. package/templates/storefront-restaurant/app/page.tsx +0 -97
  290. package/templates/storefront-restaurant/app/privacy/page.tsx +0 -44
  291. package/templates/storefront-restaurant/app/reservations/page.tsx +0 -66
  292. package/templates/storefront-restaurant/app/reservations/reservations-client.tsx +0 -234
  293. package/templates/storefront-restaurant/app/returns/page.tsx +0 -11
  294. package/templates/storefront-restaurant/app/robots.ts +0 -18
  295. package/templates/storefront-restaurant/app/search/page.tsx +0 -38
  296. package/templates/storefront-restaurant/app/search/search-client.tsx +0 -7
  297. package/templates/storefront-restaurant/app/shipping/page.tsx +0 -16
  298. package/templates/storefront-restaurant/app/shop/page.tsx +0 -31
  299. package/templates/storefront-restaurant/app/shop/shop-client.tsx +0 -27
  300. package/templates/storefront-restaurant/app/signup/page.tsx +0 -17
  301. package/templates/storefront-restaurant/app/sitemap-page/page.tsx +0 -167
  302. package/templates/storefront-restaurant/app/sitemap.ts +0 -62
  303. package/templates/storefront-restaurant/app/terms/page.tsx +0 -44
  304. package/templates/storefront-restaurant/app/track-order/page.tsx +0 -24
  305. package/templates/storefront-restaurant/app/track-order/track-order-form.tsx +0 -69
  306. package/templates/storefront-restaurant/components/account-iframe.tsx +0 -13
  307. package/templates/storefront-restaurant/components/cart-drawer.tsx +0 -14
  308. package/templates/storefront-restaurant/components/cart-pill.tsx +0 -36
  309. package/templates/storefront-restaurant/components/category-grid.tsx +0 -28
  310. package/templates/storefront-restaurant/components/collection-strip.tsx +0 -45
  311. package/templates/storefront-restaurant/components/footer.tsx +0 -148
  312. package/templates/storefront-restaurant/components/header.tsx +0 -43
  313. package/templates/storefront-restaurant/components/hero.tsx +0 -25
  314. package/templates/storefront-restaurant/components/nav-link.tsx +0 -20
  315. package/templates/storefront-restaurant/components/policy-page.tsx +0 -49
  316. package/templates/storefront-restaurant/components/product-modal.tsx +0 -104
  317. package/templates/storefront-restaurant/components/providers.tsx +0 -35
  318. package/templates/storefront-restaurant/components/store-product-card.tsx +0 -87
  319. package/templates/storefront-restaurant/lib/brand.ts +0 -377
  320. package/templates/storefront-restaurant/lib/cart.ts +0 -12
  321. package/templates/storefront-restaurant/next.config.ts +0 -42
  322. package/templates/storefront-restaurant/package.json +0 -35
  323. package/templates/storefront-restaurant/postcss.config.mjs +0 -7
  324. package/templates/storefront-restaurant/tsconfig.json +0 -23
  325. package/templates/storefront-restaurant/vitest.config.ts +0 -9
  326. package/templates/storefront-retail/.claude/skills/cimplify-storefront/SKILL.md +0 -145
  327. package/templates/storefront-retail/.cursor/rules/cimplify-storefront.mdc +0 -25
  328. package/templates/storefront-retail/.env.example +0 -16
  329. package/templates/storefront-retail/AGENTS.md +0 -117
  330. package/templates/storefront-retail/CLAUDE.md +0 -22
  331. package/templates/storefront-retail/README.md +0 -77
  332. package/templates/storefront-retail/__tests__/brand.test.ts +0 -4
  333. package/templates/storefront-retail/__tests__/cart-flow.test.ts +0 -4
  334. package/templates/storefront-retail/__tests__/contract.test.ts +0 -4
  335. package/templates/storefront-retail/app/about/page.tsx +0 -41
  336. package/templates/storefront-retail/app/accessibility/page.tsx +0 -11
  337. package/templates/storefront-retail/app/account/addresses/page.tsx +0 -21
  338. package/templates/storefront-retail/app/account/orders/page.tsx +0 -21
  339. package/templates/storefront-retail/app/account/page.tsx +0 -22
  340. package/templates/storefront-retail/app/account/settings/page.tsx +0 -21
  341. package/templates/storefront-retail/app/cart/page.tsx +0 -9
  342. package/templates/storefront-retail/app/categories/[slug]/listing-client.tsx +0 -19
  343. package/templates/storefront-retail/app/categories/[slug]/page.tsx +0 -130
  344. package/templates/storefront-retail/app/checkout/page.tsx +0 -17
  345. package/templates/storefront-retail/app/collections/[slug]/listing-client.tsx +0 -20
  346. package/templates/storefront-retail/app/collections/[slug]/page.tsx +0 -130
  347. package/templates/storefront-retail/app/contact/contact-form.tsx +0 -109
  348. package/templates/storefront-retail/app/contact/page.tsx +0 -54
  349. package/templates/storefront-retail/app/error.tsx +0 -61
  350. package/templates/storefront-retail/app/faq/page.tsx +0 -46
  351. package/templates/storefront-retail/app/globals.css +0 -47
  352. package/templates/storefront-retail/app/layout.tsx +0 -77
  353. package/templates/storefront-retail/app/llms.txt/route.ts +0 -94
  354. package/templates/storefront-retail/app/login/page.tsx +0 -17
  355. package/templates/storefront-retail/app/not-found.tsx +0 -39
  356. package/templates/storefront-retail/app/opensearch.xml/route.ts +0 -37
  357. package/templates/storefront-retail/app/orders/[id]/page.tsx +0 -24
  358. package/templates/storefront-retail/app/page.tsx +0 -182
  359. package/templates/storefront-retail/app/privacy/page.tsx +0 -44
  360. package/templates/storefront-retail/app/products/[slug]/page.tsx +0 -165
  361. package/templates/storefront-retail/app/products/[slug]/product-detail.tsx +0 -70
  362. package/templates/storefront-retail/app/returns/page.tsx +0 -11
  363. package/templates/storefront-retail/app/robots.ts +0 -18
  364. package/templates/storefront-retail/app/search/page.tsx +0 -38
  365. package/templates/storefront-retail/app/search/search-client.tsx +0 -7
  366. package/templates/storefront-retail/app/shipping/page.tsx +0 -16
  367. package/templates/storefront-retail/app/shop/page.tsx +0 -63
  368. package/templates/storefront-retail/app/shop/shop-client.tsx +0 -32
  369. package/templates/storefront-retail/app/signup/page.tsx +0 -17
  370. package/templates/storefront-retail/app/sitemap-page/page.tsx +0 -167
  371. package/templates/storefront-retail/app/sitemap.ts +0 -59
  372. package/templates/storefront-retail/app/terms/page.tsx +0 -44
  373. package/templates/storefront-retail/app/track-order/page.tsx +0 -24
  374. package/templates/storefront-retail/app/track-order/track-order-form.tsx +0 -69
  375. package/templates/storefront-retail/components/account-iframe.tsx +0 -13
  376. package/templates/storefront-retail/components/brand-marquee.tsx +0 -27
  377. package/templates/storefront-retail/components/cart-drawer.tsx +0 -14
  378. package/templates/storefront-retail/components/cart-pill.tsx +0 -36
  379. package/templates/storefront-retail/components/category-grid.tsx +0 -28
  380. package/templates/storefront-retail/components/category-tiles.tsx +0 -104
  381. package/templates/storefront-retail/components/collection-strip.tsx +0 -45
  382. package/templates/storefront-retail/components/feature-hero.tsx +0 -84
  383. package/templates/storefront-retail/components/footer.tsx +0 -153
  384. package/templates/storefront-retail/components/header.tsx +0 -45
  385. package/templates/storefront-retail/components/hero.tsx +0 -28
  386. package/templates/storefront-retail/components/nav-link.tsx +0 -20
  387. package/templates/storefront-retail/components/newsletter.tsx +0 -50
  388. package/templates/storefront-retail/components/policy-page.tsx +0 -49
  389. package/templates/storefront-retail/components/promo-banner.tsx +0 -41
  390. package/templates/storefront-retail/components/providers.tsx +0 -35
  391. package/templates/storefront-retail/components/section-heading.tsx +0 -37
  392. package/templates/storefront-retail/components/store-product-card.tsx +0 -87
  393. package/templates/storefront-retail/components/trade-in-cta.tsx +0 -54
  394. package/templates/storefront-retail/components/trust-bar.tsx +0 -66
  395. package/templates/storefront-retail/lib/brand.ts +0 -664
  396. package/templates/storefront-retail/lib/cart.ts +0 -12
  397. package/templates/storefront-retail/next.config.ts +0 -42
  398. package/templates/storefront-retail/package.json +0 -35
  399. package/templates/storefront-retail/postcss.config.mjs +0 -7
  400. package/templates/storefront-retail/tsconfig.json +0 -23
  401. package/templates/storefront-retail/vitest.config.ts +0 -9
  402. package/templates/storefront-services/.claude/skills/cimplify-storefront/SKILL.md +0 -145
  403. package/templates/storefront-services/.cursor/rules/cimplify-storefront.mdc +0 -25
  404. package/templates/storefront-services/.env.example +0 -16
  405. package/templates/storefront-services/AGENTS.md +0 -101
  406. package/templates/storefront-services/CLAUDE.md +0 -22
  407. package/templates/storefront-services/README.md +0 -73
  408. package/templates/storefront-services/__tests__/brand.test.ts +0 -4
  409. package/templates/storefront-services/__tests__/cart-flow.test.ts +0 -4
  410. package/templates/storefront-services/__tests__/contract.test.ts +0 -4
  411. package/templates/storefront-services/app/about/page.tsx +0 -38
  412. package/templates/storefront-services/app/accessibility/page.tsx +0 -11
  413. package/templates/storefront-services/app/account/addresses/page.tsx +0 -21
  414. package/templates/storefront-services/app/account/orders/page.tsx +0 -21
  415. package/templates/storefront-services/app/account/page.tsx +0 -22
  416. package/templates/storefront-services/app/account/settings/page.tsx +0 -21
  417. package/templates/storefront-services/app/book/book-client.tsx +0 -195
  418. package/templates/storefront-services/app/book/page.tsx +0 -65
  419. package/templates/storefront-services/app/cart/page.tsx +0 -9
  420. package/templates/storefront-services/app/categories/[slug]/listing-client.tsx +0 -19
  421. package/templates/storefront-services/app/categories/[slug]/page.tsx +0 -118
  422. package/templates/storefront-services/app/checkout/page.tsx +0 -17
  423. package/templates/storefront-services/app/collections/[slug]/listing-client.tsx +0 -20
  424. package/templates/storefront-services/app/collections/[slug]/page.tsx +0 -118
  425. package/templates/storefront-services/app/contact/contact-form.tsx +0 -109
  426. package/templates/storefront-services/app/contact/page.tsx +0 -54
  427. package/templates/storefront-services/app/error.tsx +0 -60
  428. package/templates/storefront-services/app/faq/page.tsx +0 -46
  429. package/templates/storefront-services/app/globals.css +0 -45
  430. package/templates/storefront-services/app/layout.tsx +0 -82
  431. package/templates/storefront-services/app/llms.txt/route.ts +0 -94
  432. package/templates/storefront-services/app/login/page.tsx +0 -17
  433. package/templates/storefront-services/app/not-found.tsx +0 -39
  434. package/templates/storefront-services/app/opensearch.xml/route.ts +0 -37
  435. package/templates/storefront-services/app/orders/[id]/page.tsx +0 -21
  436. package/templates/storefront-services/app/page.tsx +0 -97
  437. package/templates/storefront-services/app/privacy/page.tsx +0 -44
  438. package/templates/storefront-services/app/returns/page.tsx +0 -11
  439. package/templates/storefront-services/app/robots.ts +0 -18
  440. package/templates/storefront-services/app/search/page.tsx +0 -38
  441. package/templates/storefront-services/app/search/search-client.tsx +0 -7
  442. package/templates/storefront-services/app/shipping/page.tsx +0 -16
  443. package/templates/storefront-services/app/shop/page.tsx +0 -31
  444. package/templates/storefront-services/app/shop/shop-client.tsx +0 -27
  445. package/templates/storefront-services/app/signup/page.tsx +0 -17
  446. package/templates/storefront-services/app/sitemap-page/page.tsx +0 -167
  447. package/templates/storefront-services/app/sitemap.ts +0 -62
  448. package/templates/storefront-services/app/terms/page.tsx +0 -44
  449. package/templates/storefront-services/app/track-order/page.tsx +0 -24
  450. package/templates/storefront-services/app/track-order/track-order-form.tsx +0 -69
  451. package/templates/storefront-services/components/account-iframe.tsx +0 -13
  452. package/templates/storefront-services/components/cart-drawer.tsx +0 -14
  453. package/templates/storefront-services/components/cart-pill.tsx +0 -36
  454. package/templates/storefront-services/components/category-grid.tsx +0 -28
  455. package/templates/storefront-services/components/collection-strip.tsx +0 -45
  456. package/templates/storefront-services/components/footer.tsx +0 -148
  457. package/templates/storefront-services/components/header.tsx +0 -43
  458. package/templates/storefront-services/components/hero.tsx +0 -25
  459. package/templates/storefront-services/components/nav-link.tsx +0 -20
  460. package/templates/storefront-services/components/policy-page.tsx +0 -49
  461. package/templates/storefront-services/components/product-modal.tsx +0 -104
  462. package/templates/storefront-services/components/providers.tsx +0 -35
  463. package/templates/storefront-services/components/store-product-card.tsx +0 -87
  464. package/templates/storefront-services/lib/brand.ts +0 -396
  465. package/templates/storefront-services/lib/cart.ts +0 -12
  466. package/templates/storefront-services/next.config.ts +0 -42
  467. package/templates/storefront-services/package.json +0 -35
  468. package/templates/storefront-services/postcss.config.mjs +0 -7
  469. package/templates/storefront-services/tsconfig.json +0 -23
  470. package/templates/storefront-services/vitest.config.ts +0 -9
@@ -1,473 +0,0 @@
1
- import { promises } from 'fs';
2
- import os from 'os';
3
- import path from 'path';
4
-
5
- // src/cli/errors.ts
6
- var CLI_ERROR_CODE = {
7
- NOT_LOGGED_IN: "NOT_LOGGED_IN",
8
- NETWORK_ERROR: "NETWORK_ERROR",
9
- AUTH_FAILED: "AUTH_FAILED",
10
- PROJECT_NOT_FOUND: "PROJECT_NOT_FOUND",
11
- INVALID_INPUT: "INVALID_INPUT",
12
- ALREADY_LINKED: "ALREADY_LINKED",
13
- SERVER_ERROR: "SERVER_ERROR"};
14
- var EXIT_CODE = {
15
- ABORTED: 3,
16
- NOT_LINKED: 4,
17
- ALREADY_LINKED: 5,
18
- GIT_ERROR: 6,
19
- INTERACTIVE_REQUIRED: 7,
20
- PROJECT_NOT_FOUND: 8,
21
- NETWORK_ERROR: 10,
22
- SERVER_ERROR: 11,
23
- TIMEOUT: 12,
24
- NOT_LOGGED_IN: 20,
25
- AUTH_FAILED: 21,
26
- UNAUTHORIZED: 22,
27
- INVALID_INPUT: 30
28
- };
29
- var EXIT_CODE_FOR = {
30
- NOT_LOGGED_IN: EXIT_CODE.NOT_LOGGED_IN,
31
- NOT_LINKED: EXIT_CODE.NOT_LINKED,
32
- NETWORK_ERROR: EXIT_CODE.NETWORK_ERROR,
33
- AUTH_FAILED: EXIT_CODE.AUTH_FAILED,
34
- PROJECT_NOT_FOUND: EXIT_CODE.PROJECT_NOT_FOUND,
35
- GIT_ERROR: EXIT_CODE.GIT_ERROR,
36
- INVALID_INPUT: EXIT_CODE.INVALID_INPUT,
37
- ALREADY_LINKED: EXIT_CODE.ALREADY_LINKED,
38
- SERVER_ERROR: EXIT_CODE.SERVER_ERROR,
39
- ABORTED: EXIT_CODE.ABORTED,
40
- UNAUTHORIZED: EXIT_CODE.UNAUTHORIZED,
41
- TIMEOUT: EXIT_CODE.TIMEOUT,
42
- INTERACTIVE_REQUIRED: EXIT_CODE.INTERACTIVE_REQUIRED
43
- };
44
- var CliError = class extends Error {
45
- constructor(code, message, options = {}) {
46
- super(message);
47
- this.name = "CliError";
48
- this.code = code;
49
- this.exitCode = options.exitCode ?? EXIT_CODE_FOR[code];
50
- this.remediation = options.remediation;
51
- }
52
- };
53
-
54
- // src/cli/api-client.ts
55
- var DEFAULT_API_BASE_URL = "https://api.cimplify.io";
56
- var ENV_API_BASE_URL = "CIMPLIFY_API_URL";
57
- var DEFAULT_TIMEOUT_MS = 3e4;
58
- var HEADER_AUTHORIZATION = "Authorization";
59
- var HEADER_CONTENT_TYPE = "Content-Type";
60
- var HEADER_ACCEPT = "Accept";
61
- var HEADER_USER_AGENT = "User-Agent";
62
- var BEARER_PREFIX = "Bearer ";
63
- var CONTENT_TYPE_JSON = "application/json";
64
- var USER_AGENT = "cimplify-cli";
65
- var METHOD_GET = "GET";
66
- var METHOD_POST = "POST";
67
- var METHOD_PUT = "PUT";
68
- var METHOD_DELETE = "DELETE";
69
- var STATUS_UNAUTHORIZED = 401;
70
- var STATUS_FORBIDDEN = 403;
71
- var STATUS_NOT_FOUND = 404;
72
- var STATUS_CONFLICT = 409;
73
- var STATUS_BAD_REQUEST_MIN = 400;
74
- var STATUS_SERVER_ERROR_MIN = 500;
75
- var ApiClient = class _ApiClient {
76
- constructor(baseUrl, apiKey) {
77
- this.baseUrl = baseUrl.replace(/\/+$/, "");
78
- this.apiKey = apiKey;
79
- }
80
- static fromAuth(auth) {
81
- return new _ApiClient(auth.apiBaseUrl, auth.apiKey);
82
- }
83
- static unauthenticated(baseUrl = resolveBaseUrl()) {
84
- return new _ApiClient(baseUrl, "");
85
- }
86
- static withKey(apiKey, baseUrl = resolveBaseUrl()) {
87
- return new _ApiClient(baseUrl, apiKey);
88
- }
89
- get(pathname, options) {
90
- return this.request(METHOD_GET, pathname, void 0, options);
91
- }
92
- post(pathname, body, options) {
93
- return this.request(METHOD_POST, pathname, body, options);
94
- }
95
- put(pathname, body, options) {
96
- return this.request(METHOD_PUT, pathname, body, options);
97
- }
98
- delete(pathname, options) {
99
- return this.request(METHOD_DELETE, pathname, void 0, options);
100
- }
101
- async request(method, pathname, body, options) {
102
- const url = this.buildUrl(pathname, options?.query);
103
- const headers = {
104
- [HEADER_ACCEPT]: CONTENT_TYPE_JSON,
105
- [HEADER_USER_AGENT]: USER_AGENT
106
- };
107
- if (this.apiKey) {
108
- headers[HEADER_AUTHORIZATION] = `${BEARER_PREFIX}${this.apiKey}`;
109
- }
110
- let payload;
111
- if (body !== void 0) {
112
- headers[HEADER_CONTENT_TYPE] = CONTENT_TYPE_JSON;
113
- payload = JSON.stringify(body);
114
- }
115
- const controller = new AbortController();
116
- const timeoutMs = options?.timeoutMs ?? DEFAULT_TIMEOUT_MS;
117
- const timer = setTimeout(() => controller.abort(), timeoutMs);
118
- let response;
119
- try {
120
- response = await fetch(url, {
121
- method,
122
- headers,
123
- body: payload,
124
- signal: controller.signal
125
- });
126
- } catch (err) {
127
- clearTimeout(timer);
128
- throw toNetworkError(err);
129
- }
130
- clearTimeout(timer);
131
- return parseResponse(response);
132
- }
133
- buildUrl(pathname, query) {
134
- const base = pathname.startsWith("/") ? pathname : `/${pathname}`;
135
- const url = new URL(`${this.baseUrl}${base}`);
136
- if (query) {
137
- for (const [k, v] of Object.entries(query)) {
138
- if (v === void 0 || v === null) continue;
139
- url.searchParams.set(k, String(v));
140
- }
141
- }
142
- return url.toString();
143
- }
144
- };
145
- function resolveBaseUrl(override) {
146
- const fromEnv = process.env[ENV_API_BASE_URL];
147
- return fromEnv && fromEnv.length > 0 ? fromEnv : DEFAULT_API_BASE_URL;
148
- }
149
- async function parseResponse(response) {
150
- const text = await response.text();
151
- let body = void 0;
152
- if (text.length > 0) {
153
- try {
154
- body = JSON.parse(text);
155
- } catch {
156
- throw new CliError(
157
- CLI_ERROR_CODE.SERVER_ERROR,
158
- `Server returned non-JSON response (status ${response.status}): ${truncate(text)}`
159
- );
160
- }
161
- }
162
- if (response.ok) {
163
- if (body && typeof body === "object" && "data" in body) {
164
- return body.data;
165
- }
166
- return body;
167
- }
168
- const code = mapStatusToCode(response.status);
169
- const message = extractErrorMessage(body, response.status);
170
- throw new CliError(code, message);
171
- }
172
- function mapStatusToCode(status) {
173
- if (status === STATUS_UNAUTHORIZED) return CLI_ERROR_CODE.AUTH_FAILED;
174
- if (status === STATUS_FORBIDDEN) return CLI_ERROR_CODE.AUTH_FAILED;
175
- if (status === STATUS_NOT_FOUND) return CLI_ERROR_CODE.PROJECT_NOT_FOUND;
176
- if (status === STATUS_CONFLICT) return CLI_ERROR_CODE.ALREADY_LINKED;
177
- if (status >= STATUS_SERVER_ERROR_MIN) return CLI_ERROR_CODE.SERVER_ERROR;
178
- if (status >= STATUS_BAD_REQUEST_MIN) return CLI_ERROR_CODE.INVALID_INPUT;
179
- return CLI_ERROR_CODE.SERVER_ERROR;
180
- }
181
- function extractErrorMessage(body, status) {
182
- if (body && typeof body === "object") {
183
- const envelope = body;
184
- if (envelope.error && typeof envelope.error.error_message === "string") {
185
- return envelope.error.error_code ? `${envelope.error.error_code}: ${envelope.error.error_message}` : envelope.error.error_message;
186
- }
187
- if (typeof envelope.message === "string") return envelope.message;
188
- }
189
- return `HTTP ${status}`;
190
- }
191
- function toNetworkError(err) {
192
- if (err instanceof DOMException && err.name === "AbortError") {
193
- return new CliError(CLI_ERROR_CODE.NETWORK_ERROR, "Request timed out.");
194
- }
195
- const message = err instanceof Error ? err.message : String(err);
196
- return new CliError(CLI_ERROR_CODE.NETWORK_ERROR, `Network error: ${message}`);
197
- }
198
- function truncate(value, max = 200) {
199
- return value.length > max ? `${value.slice(0, max)}\u2026` : value;
200
- }
201
-
202
- // src/cli/args.ts
203
- function parseArgs(argv) {
204
- const positional = [];
205
- const flags = /* @__PURE__ */ new Map();
206
- for (let i = 0; i < argv.length; i++) {
207
- const arg = argv[i];
208
- if (!arg.startsWith("--")) {
209
- positional.push(arg);
210
- continue;
211
- }
212
- const eq = arg.indexOf("=");
213
- if (eq !== -1) {
214
- flags.set(arg.slice(2, eq), arg.slice(eq + 1));
215
- continue;
216
- }
217
- const name = arg.slice(2);
218
- const next = argv[i + 1];
219
- if (next !== void 0 && !next.startsWith("--")) {
220
- flags.set(name, next);
221
- i++;
222
- } else {
223
- flags.set(name, true);
224
- }
225
- }
226
- return { positional, flags };
227
- }
228
- function flagString(args, name) {
229
- const v = args.flags.get(name);
230
- return typeof v === "string" ? v : void 0;
231
- }
232
- function flagBool(args, name) {
233
- return args.flags.has(name);
234
- }
235
- var AUTH_FILE_NAME = "auth.json";
236
- var ENV_XDG_CONFIG_HOME = "XDG_CONFIG_HOME";
237
- var APP_CONFIG_DIR_NAME = "cimplify";
238
- var HOME_CONFIG_DIR_NAME = ".config";
239
- var ENCODING_UTF8 = "utf8";
240
- function authConfigDir() {
241
- const xdg = process.env[ENV_XDG_CONFIG_HOME];
242
- return xdg ? path.join(xdg, APP_CONFIG_DIR_NAME) : path.join(os.homedir(), HOME_CONFIG_DIR_NAME, APP_CONFIG_DIR_NAME);
243
- }
244
- function authConfigPath() {
245
- return path.join(authConfigDir(), AUTH_FILE_NAME);
246
- }
247
- async function readJsonFile(filePath) {
248
- try {
249
- const raw = await promises.readFile(filePath, ENCODING_UTF8);
250
- return JSON.parse(raw);
251
- } catch (err) {
252
- if (err.code === "ENOENT") return null;
253
- throw err;
254
- }
255
- }
256
- async function readAuth() {
257
- const data = await readJsonFile(authConfigPath());
258
- if (!data) {
259
- throw new CliError(
260
- CLI_ERROR_CODE.NOT_LOGGED_IN,
261
- "Not logged in. Run `cimplify login` first."
262
- );
263
- }
264
- return data;
265
- }
266
-
267
- // src/cli/output.ts
268
- var RESET = "\x1B[0m";
269
- var BOLD_OPEN = "\x1B[1m";
270
- var DIM_OPEN = "\x1B[2m";
271
- var GREEN_OPEN = "\x1B[32m";
272
- var PREFIX_SUCCESS = "\u2713";
273
- var ENV_JSON = "CIMPLIFY_JSON";
274
- function envFlag(name) {
275
- const v = process.env[name];
276
- return v === "1" || v === "true";
277
- }
278
- function isJsonMode() {
279
- return envFlag(ENV_JSON);
280
- }
281
- function wrap(open, value) {
282
- return `${open}${value}${RESET}`;
283
- }
284
- function bold(value) {
285
- return isJsonMode() ? value : wrap(BOLD_OPEN, value);
286
- }
287
- function dim(value) {
288
- return isJsonMode() ? value : wrap(DIM_OPEN, value);
289
- }
290
- function green(value) {
291
- return isJsonMode() ? value : wrap(GREEN_OPEN, value);
292
- }
293
- function success(message) {
294
- if (isJsonMode()) return;
295
- console.log(`${green(PREFIX_SUCCESS)} ${message}`);
296
- }
297
- function info(message) {
298
- if (isJsonMode()) return;
299
- console.log(message);
300
- }
301
- var ENV_EMITTED = "__CIMPLIFY_RESULT_EMITTED";
302
- function result(data) {
303
- if (!isJsonMode()) return;
304
- if (process.env[ENV_EMITTED] === "1") return;
305
- process.env[ENV_EMITTED] = "1";
306
- process.stdout.write(`${JSON.stringify({ ok: true, data })}
307
- `);
308
- }
309
- var REPO_PROVIDER = {
310
- FREESTYLE: "freestyle",
311
- GITHUB: "github",
312
- GITEA: "gitea",
313
- EXTERNAL: "external"
314
- };
315
- new Set(Object.values(REPO_PROVIDER));
316
-
317
- // src/cli/commands/projects.ts
318
- var SUB_LS = "ls";
319
- var SUB_LIST = "list";
320
- var SUB_CREATE = "create";
321
- var FLAG_NO_REPO = "no-repo";
322
- var FLAG_CONNECT = "connect";
323
- var PROJECT_TYPE_DEFAULT = "nextjs-app";
324
- var COL_GAP = " ";
325
- function projectsEndpoint(businessId) {
326
- return `/v1/businesses/${encodeURIComponent(businessId)}/projects`;
327
- }
328
- function provisionRepoEndpoint(businessId, projectId) {
329
- return `/v1/businesses/${encodeURIComponent(businessId)}/projects/${encodeURIComponent(projectId)}/repo/provision`;
330
- }
331
- function connectRepoEndpoint(businessId, projectId) {
332
- return `/v1/businesses/${encodeURIComponent(businessId)}/projects/${encodeURIComponent(projectId)}/repo/connect`;
333
- }
334
- function detectProviderFromUrl(url) {
335
- try {
336
- const parsed = new URL(url);
337
- if (parsed.hostname === "git.freestyle.sh") return REPO_PROVIDER.FREESTYLE;
338
- if (parsed.hostname === "github.com" || parsed.hostname.endsWith(".github.com")) {
339
- return REPO_PROVIDER.GITHUB;
340
- }
341
- if (parsed.hostname.includes("gitea")) return REPO_PROVIDER.GITEA;
342
- } catch {
343
- }
344
- return REPO_PROVIDER.EXTERNAL;
345
- }
346
- async function run(argv) {
347
- const args = parseArgs(argv);
348
- const sub = args.positional[0];
349
- if (!sub) {
350
- throw new CliError(
351
- CLI_ERROR_CODE.INVALID_INPUT,
352
- `Usage: cimplify projects <${SUB_LS}|${SUB_CREATE}>`
353
- );
354
- }
355
- const auth = await readAuth();
356
- const client = ApiClient.fromAuth(auth);
357
- if (sub === SUB_LS || sub === SUB_LIST) {
358
- await listProjects(client, auth.businessId);
359
- return;
360
- }
361
- if (sub === SUB_CREATE) {
362
- const name = args.positional[1];
363
- if (!name) {
364
- throw new CliError(
365
- CLI_ERROR_CODE.INVALID_INPUT,
366
- `Usage: cimplify projects ${SUB_CREATE} <name> [--no-repo | --connect <url>]`
367
- );
368
- }
369
- await createProject(client, auth.businessId, name, {
370
- noRepo: flagBool(args, FLAG_NO_REPO),
371
- connectRemote: flagString(args, FLAG_CONNECT)
372
- });
373
- return;
374
- }
375
- throw new CliError(CLI_ERROR_CODE.INVALID_INPUT, `Unknown subcommand "${sub}"`);
376
- }
377
- async function listProjects(client, businessId) {
378
- const projects = await client.get(projectsEndpoint(businessId));
379
- if (projects.length === 0) {
380
- info(dim("No projects yet. Create one: `cimplify projects create <name>`"));
381
- result({ projects: [] });
382
- return;
383
- }
384
- const idWidth = Math.max(...projects.map((p) => p.id.length));
385
- const nameWidth = Math.max(...projects.map((p) => p.name.length));
386
- info(
387
- bold(
388
- [
389
- "ID".padEnd(idWidth),
390
- "NAME".padEnd(nameWidth),
391
- "TYPE"
392
- ].join(COL_GAP)
393
- )
394
- );
395
- for (const p of projects) {
396
- info(
397
- [
398
- p.id.padEnd(idWidth),
399
- p.name.padEnd(nameWidth),
400
- p.project_type ?? ""
401
- ].join(COL_GAP)
402
- );
403
- }
404
- result({
405
- projects: projects.map((p) => ({
406
- id: p.id,
407
- name: p.name,
408
- project_type: p.project_type ?? null
409
- }))
410
- });
411
- }
412
- async function createProject(client, businessId, name, options = {}) {
413
- if (options.noRepo && options.connectRemote) {
414
- throw new CliError(
415
- CLI_ERROR_CODE.INVALID_INPUT,
416
- "Cannot pass both --no-repo and --connect."
417
- );
418
- }
419
- const body = { name, project_type: PROJECT_TYPE_DEFAULT };
420
- const project = await client.post(projectsEndpoint(businessId), body);
421
- success(`Created project ${project.name} (${project.id})`);
422
- if (options.noRepo) {
423
- info(dim("Skipped repo provisioning (--no-repo). Use `cimplify repo provision` later."));
424
- info(dim(`Link locally: cimplify link ${project.id}`));
425
- result({
426
- project: { id: project.id, name: project.name },
427
- repo: null
428
- });
429
- return;
430
- }
431
- if (options.connectRemote) {
432
- const provider = detectProviderFromUrl(options.connectRemote);
433
- if (provider === REPO_PROVIDER.FREESTYLE) {
434
- throw new CliError(
435
- CLI_ERROR_CODE.INVALID_INPUT,
436
- "Cannot connect a Freestyle URL \u2014 Freestyle repos are provisioned, not connected."
437
- );
438
- }
439
- const repoBody = {
440
- provider,
441
- remote_url: options.connectRemote
442
- };
443
- const repo2 = await client.post(
444
- connectRepoEndpoint(businessId, project.id),
445
- repoBody
446
- );
447
- success(`Connected ${repo2.provider} remote ${repo2.remote_url}`);
448
- info(dim(`Link locally: cimplify link ${project.id}`));
449
- result({
450
- project: { id: project.id, name: project.name },
451
- repo: { provider: repo2.provider, id: repo2.id, remote_url: repo2.remote_url, default_branch: repo2.default_branch }
452
- });
453
- return;
454
- }
455
- const repo = await client.post(
456
- provisionRepoEndpoint(businessId, project.id),
457
- {}
458
- );
459
- success(`Provisioned ${repo.provider} repo`);
460
- info(dim(` remote: ${repo.remote_url}`));
461
- info("");
462
- info(dim("Wire your local repo:"));
463
- info(dim(` cimplify link ${project.id}`));
464
- info(dim(` git init && git remote add origin ${repo.remote_url}`));
465
- info(dim(` git add . && git commit -m "Initial commit"`));
466
- info(dim(` cimplify deploy`));
467
- result({
468
- project: { id: project.id, name: project.name },
469
- repo: { provider: repo.provider, id: repo.id, remote_url: repo.remote_url, default_branch: repo.default_branch }
470
- });
471
- }
472
-
473
- export { run as default, detectProviderFromUrl };