@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,553 +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
- NOT_LINKED: "NOT_LINKED",
9
- NETWORK_ERROR: "NETWORK_ERROR",
10
- AUTH_FAILED: "AUTH_FAILED",
11
- PROJECT_NOT_FOUND: "PROJECT_NOT_FOUND",
12
- INVALID_INPUT: "INVALID_INPUT",
13
- ALREADY_LINKED: "ALREADY_LINKED",
14
- SERVER_ERROR: "SERVER_ERROR"};
15
- var EXIT_CODE = {
16
- OK: 0,
17
- ERROR: 1,
18
- SUPERSEDED: 2,
19
- ABORTED: 3,
20
- NOT_LINKED: 4,
21
- ALREADY_LINKED: 5,
22
- GIT_ERROR: 6,
23
- INTERACTIVE_REQUIRED: 7,
24
- PROJECT_NOT_FOUND: 8,
25
- NETWORK_ERROR: 10,
26
- SERVER_ERROR: 11,
27
- TIMEOUT: 12,
28
- NOT_LOGGED_IN: 20,
29
- AUTH_FAILED: 21,
30
- UNAUTHORIZED: 22,
31
- INVALID_INPUT: 30
32
- };
33
- var EXIT_CODE_FOR = {
34
- NOT_LOGGED_IN: EXIT_CODE.NOT_LOGGED_IN,
35
- NOT_LINKED: EXIT_CODE.NOT_LINKED,
36
- NETWORK_ERROR: EXIT_CODE.NETWORK_ERROR,
37
- AUTH_FAILED: EXIT_CODE.AUTH_FAILED,
38
- PROJECT_NOT_FOUND: EXIT_CODE.PROJECT_NOT_FOUND,
39
- GIT_ERROR: EXIT_CODE.GIT_ERROR,
40
- INVALID_INPUT: EXIT_CODE.INVALID_INPUT,
41
- ALREADY_LINKED: EXIT_CODE.ALREADY_LINKED,
42
- SERVER_ERROR: EXIT_CODE.SERVER_ERROR,
43
- ABORTED: EXIT_CODE.ABORTED,
44
- UNAUTHORIZED: EXIT_CODE.UNAUTHORIZED,
45
- TIMEOUT: EXIT_CODE.TIMEOUT,
46
- INTERACTIVE_REQUIRED: EXIT_CODE.INTERACTIVE_REQUIRED
47
- };
48
- var CliError = class extends Error {
49
- constructor(code, message, options = {}) {
50
- super(message);
51
- this.name = "CliError";
52
- this.code = code;
53
- this.exitCode = options.exitCode ?? EXIT_CODE_FOR[code];
54
- this.remediation = options.remediation;
55
- }
56
- };
57
-
58
- // src/cli/api-client.ts
59
- var DEFAULT_API_BASE_URL = "https://api.cimplify.io";
60
- var ENV_API_BASE_URL = "CIMPLIFY_API_URL";
61
- var DEFAULT_TIMEOUT_MS = 3e4;
62
- var HEADER_AUTHORIZATION = "Authorization";
63
- var HEADER_CONTENT_TYPE = "Content-Type";
64
- var HEADER_ACCEPT = "Accept";
65
- var HEADER_USER_AGENT = "User-Agent";
66
- var BEARER_PREFIX = "Bearer ";
67
- var CONTENT_TYPE_JSON = "application/json";
68
- var USER_AGENT = "cimplify-cli";
69
- var METHOD_GET = "GET";
70
- var METHOD_POST = "POST";
71
- var METHOD_PUT = "PUT";
72
- var METHOD_DELETE = "DELETE";
73
- var STATUS_UNAUTHORIZED = 401;
74
- var STATUS_FORBIDDEN = 403;
75
- var STATUS_NOT_FOUND = 404;
76
- var STATUS_CONFLICT = 409;
77
- var STATUS_BAD_REQUEST_MIN = 400;
78
- var STATUS_SERVER_ERROR_MIN = 500;
79
- var ApiClient = class _ApiClient {
80
- constructor(baseUrl, apiKey) {
81
- this.baseUrl = baseUrl.replace(/\/+$/, "");
82
- this.apiKey = apiKey;
83
- }
84
- static fromAuth(auth) {
85
- return new _ApiClient(auth.apiBaseUrl, auth.apiKey);
86
- }
87
- static unauthenticated(baseUrl = resolveBaseUrl()) {
88
- return new _ApiClient(baseUrl, "");
89
- }
90
- static withKey(apiKey, baseUrl = resolveBaseUrl()) {
91
- return new _ApiClient(baseUrl, apiKey);
92
- }
93
- get(pathname, options) {
94
- return this.request(METHOD_GET, pathname, void 0, options);
95
- }
96
- post(pathname, body, options) {
97
- return this.request(METHOD_POST, pathname, body, options);
98
- }
99
- put(pathname, body, options) {
100
- return this.request(METHOD_PUT, pathname, body, options);
101
- }
102
- delete(pathname, options) {
103
- return this.request(METHOD_DELETE, pathname, void 0, options);
104
- }
105
- async request(method, pathname, body, options) {
106
- const url = this.buildUrl(pathname, options?.query);
107
- const headers = {
108
- [HEADER_ACCEPT]: CONTENT_TYPE_JSON,
109
- [HEADER_USER_AGENT]: USER_AGENT
110
- };
111
- if (this.apiKey) {
112
- headers[HEADER_AUTHORIZATION] = `${BEARER_PREFIX}${this.apiKey}`;
113
- }
114
- let payload;
115
- if (body !== void 0) {
116
- headers[HEADER_CONTENT_TYPE] = CONTENT_TYPE_JSON;
117
- payload = JSON.stringify(body);
118
- }
119
- const controller = new AbortController();
120
- const timeoutMs = options?.timeoutMs ?? DEFAULT_TIMEOUT_MS;
121
- const timer = setTimeout(() => controller.abort(), timeoutMs);
122
- let response;
123
- try {
124
- response = await fetch(url, {
125
- method,
126
- headers,
127
- body: payload,
128
- signal: controller.signal
129
- });
130
- } catch (err) {
131
- clearTimeout(timer);
132
- throw toNetworkError(err);
133
- }
134
- clearTimeout(timer);
135
- return parseResponse(response);
136
- }
137
- buildUrl(pathname, query) {
138
- const base = pathname.startsWith("/") ? pathname : `/${pathname}`;
139
- const url = new URL(`${this.baseUrl}${base}`);
140
- if (query) {
141
- for (const [k, v] of Object.entries(query)) {
142
- if (v === void 0 || v === null) continue;
143
- url.searchParams.set(k, String(v));
144
- }
145
- }
146
- return url.toString();
147
- }
148
- };
149
- function resolveBaseUrl(override) {
150
- const fromEnv = process.env[ENV_API_BASE_URL];
151
- return fromEnv && fromEnv.length > 0 ? fromEnv : DEFAULT_API_BASE_URL;
152
- }
153
- async function parseResponse(response) {
154
- const text = await response.text();
155
- let body = void 0;
156
- if (text.length > 0) {
157
- try {
158
- body = JSON.parse(text);
159
- } catch {
160
- throw new CliError(
161
- CLI_ERROR_CODE.SERVER_ERROR,
162
- `Server returned non-JSON response (status ${response.status}): ${truncate(text)}`
163
- );
164
- }
165
- }
166
- if (response.ok) {
167
- if (body && typeof body === "object" && "data" in body) {
168
- return body.data;
169
- }
170
- return body;
171
- }
172
- const code = mapStatusToCode(response.status);
173
- const message = extractErrorMessage(body, response.status);
174
- throw new CliError(code, message);
175
- }
176
- function mapStatusToCode(status) {
177
- if (status === STATUS_UNAUTHORIZED) return CLI_ERROR_CODE.AUTH_FAILED;
178
- if (status === STATUS_FORBIDDEN) return CLI_ERROR_CODE.AUTH_FAILED;
179
- if (status === STATUS_NOT_FOUND) return CLI_ERROR_CODE.PROJECT_NOT_FOUND;
180
- if (status === STATUS_CONFLICT) return CLI_ERROR_CODE.ALREADY_LINKED;
181
- if (status >= STATUS_SERVER_ERROR_MIN) return CLI_ERROR_CODE.SERVER_ERROR;
182
- if (status >= STATUS_BAD_REQUEST_MIN) return CLI_ERROR_CODE.INVALID_INPUT;
183
- return CLI_ERROR_CODE.SERVER_ERROR;
184
- }
185
- function extractErrorMessage(body, status) {
186
- if (body && typeof body === "object") {
187
- const envelope = body;
188
- if (envelope.error && typeof envelope.error.error_message === "string") {
189
- return envelope.error.error_code ? `${envelope.error.error_code}: ${envelope.error.error_message}` : envelope.error.error_message;
190
- }
191
- if (typeof envelope.message === "string") return envelope.message;
192
- }
193
- return `HTTP ${status}`;
194
- }
195
- function toNetworkError(err) {
196
- if (err instanceof DOMException && err.name === "AbortError") {
197
- return new CliError(CLI_ERROR_CODE.NETWORK_ERROR, "Request timed out.");
198
- }
199
- const message = err instanceof Error ? err.message : String(err);
200
- return new CliError(CLI_ERROR_CODE.NETWORK_ERROR, `Network error: ${message}`);
201
- }
202
- function truncate(value, max = 200) {
203
- return value.length > max ? `${value.slice(0, max)}\u2026` : value;
204
- }
205
-
206
- // src/cli/args.ts
207
- function parseArgs(argv) {
208
- const positional = [];
209
- const flags = /* @__PURE__ */ new Map();
210
- for (let i = 0; i < argv.length; i++) {
211
- const arg = argv[i];
212
- if (!arg.startsWith("--")) {
213
- positional.push(arg);
214
- continue;
215
- }
216
- const eq = arg.indexOf("=");
217
- if (eq !== -1) {
218
- flags.set(arg.slice(2, eq), arg.slice(eq + 1));
219
- continue;
220
- }
221
- const name = arg.slice(2);
222
- const next = argv[i + 1];
223
- if (next !== void 0 && !next.startsWith("--")) {
224
- flags.set(name, next);
225
- i++;
226
- } else {
227
- flags.set(name, true);
228
- }
229
- }
230
- return { positional, flags };
231
- }
232
- function flagBool(args, name) {
233
- return args.flags.has(name);
234
- }
235
- var AUTH_FILE_NAME = "auth.json";
236
- var PROJECT_FILE_NAME = "project.json";
237
- var STATE_FILE_NAME = "state.json";
238
- var PROJECT_DIR_NAME = ".cimplify";
239
- var ENV_XDG_CONFIG_HOME = "XDG_CONFIG_HOME";
240
- var APP_CONFIG_DIR_NAME = "cimplify";
241
- var HOME_CONFIG_DIR_NAME = ".config";
242
- var FILE_MODE_DIR = 448;
243
- var ENCODING_UTF8 = "utf8";
244
- function authConfigDir() {
245
- const xdg = process.env[ENV_XDG_CONFIG_HOME];
246
- return xdg ? path.join(xdg, APP_CONFIG_DIR_NAME) : path.join(os.homedir(), HOME_CONFIG_DIR_NAME, APP_CONFIG_DIR_NAME);
247
- }
248
- function authConfigPath() {
249
- return path.join(authConfigDir(), AUTH_FILE_NAME);
250
- }
251
- function projectConfigDir(cwd = process.cwd()) {
252
- return path.join(cwd, PROJECT_DIR_NAME);
253
- }
254
- function projectConfigPath(cwd = process.cwd()) {
255
- return path.join(projectConfigDir(cwd), PROJECT_FILE_NAME);
256
- }
257
- function projectStatePath(cwd = process.cwd()) {
258
- return path.join(projectConfigDir(cwd), STATE_FILE_NAME);
259
- }
260
- async function readJsonFile(filePath) {
261
- try {
262
- const raw = await promises.readFile(filePath, ENCODING_UTF8);
263
- return JSON.parse(raw);
264
- } catch (err) {
265
- if (err.code === "ENOENT") return null;
266
- throw err;
267
- }
268
- }
269
- async function writeJsonFile(filePath, value, mode) {
270
- await promises.mkdir(path.dirname(filePath), { recursive: true, mode: FILE_MODE_DIR });
271
- const payload = `${JSON.stringify(value, null, 2)}
272
- `;
273
- await promises.writeFile(filePath, payload, { encoding: ENCODING_UTF8, mode });
274
- }
275
- async function readAuth() {
276
- const data = await readJsonFile(authConfigPath());
277
- if (!data) {
278
- throw new CliError(
279
- CLI_ERROR_CODE.NOT_LOGGED_IN,
280
- "Not logged in. Run `cimplify login` first."
281
- );
282
- }
283
- return data;
284
- }
285
- async function readProjectLink(cwd = process.cwd()) {
286
- const data = await readJsonFile(projectConfigPath(cwd));
287
- if (!data) {
288
- throw new CliError(
289
- CLI_ERROR_CODE.NOT_LINKED,
290
- "No project linked. Run `cimplify link <project-id>` first."
291
- );
292
- }
293
- return data;
294
- }
295
- async function writeProjectState(state, cwd = process.cwd()) {
296
- await writeJsonFile(projectStatePath(cwd), state);
297
- }
298
-
299
- // src/cli/output.ts
300
- var RESET = "\x1B[0m";
301
- var DIM_OPEN = "\x1B[2m";
302
- var RED_OPEN = "\x1B[31m";
303
- var GREEN_OPEN = "\x1B[32m";
304
- var CYAN_OPEN = "\x1B[36m";
305
- var PREFIX_STEP = "\u25B8";
306
- var PREFIX_SUCCESS = "\u2713";
307
- var PREFIX_FAILURE = "\u2717";
308
- var ENV_JSON = "CIMPLIFY_JSON";
309
- function envFlag(name) {
310
- const v = process.env[name];
311
- return v === "1" || v === "true";
312
- }
313
- function isJsonMode() {
314
- return envFlag(ENV_JSON);
315
- }
316
- function wrap(open, value) {
317
- return `${open}${value}${RESET}`;
318
- }
319
- function dim(value) {
320
- return isJsonMode() ? value : wrap(DIM_OPEN, value);
321
- }
322
- function red(value) {
323
- return isJsonMode() ? value : wrap(RED_OPEN, value);
324
- }
325
- function green(value) {
326
- return isJsonMode() ? value : wrap(GREEN_OPEN, value);
327
- }
328
- function cyan(value) {
329
- return isJsonMode() ? value : wrap(CYAN_OPEN, value);
330
- }
331
- function step(message) {
332
- if (isJsonMode()) return;
333
- console.log(`${cyan(PREFIX_STEP)} ${message}`);
334
- }
335
- function success(message) {
336
- if (isJsonMode()) return;
337
- console.log(`${green(PREFIX_SUCCESS)} ${message}`);
338
- }
339
- function failure(message) {
340
- if (isJsonMode()) return;
341
- console.error(`${red(PREFIX_FAILURE)} ${message}`);
342
- }
343
- function info(message) {
344
- if (isJsonMode()) return;
345
- console.log(message);
346
- }
347
- var ENV_EMITTED = "__CIMPLIFY_RESULT_EMITTED";
348
- function result(data) {
349
- if (!isJsonMode()) return;
350
- if (process.env[ENV_EMITTED] === "1") return;
351
- process.env[ENV_EMITTED] = "1";
352
- process.stdout.write(`${JSON.stringify({ ok: true, data })}
353
- `);
354
- }
355
-
356
- // src/cli/types.ts
357
- var DEPLOY_TRIGGER = {
358
- ROLLBACK: "rollback"};
359
- var DEPLOYMENT_STATUS = {
360
- ACTIVE: "active",
361
- FAILED: "failed",
362
- CANCELLED: "cancelled",
363
- SUPERSEDED: "superseded"
364
- };
365
- var TERMINAL_DEPLOYMENT_STATUSES = /* @__PURE__ */ new Set([
366
- DEPLOYMENT_STATUS.ACTIVE,
367
- DEPLOYMENT_STATUS.FAILED,
368
- DEPLOYMENT_STATUS.CANCELLED,
369
- DEPLOYMENT_STATUS.SUPERSEDED
370
- ]);
371
- var REPO_PROVIDER = {
372
- FREESTYLE: "freestyle",
373
- GITHUB: "github",
374
- GITEA: "gitea",
375
- EXTERNAL: "external"
376
- };
377
- new Set(Object.values(REPO_PROVIDER));
378
-
379
- // src/cli/progress.ts
380
- var POLL_INTERVAL_MS = 1e3;
381
- var POLL_MAX_MS = 30 * 60 * 1e3;
382
- var BAR_WIDTH = 24;
383
- var PROGRESS_MIN = 0;
384
- var PROGRESS_MAX = 100;
385
- function progressEndpoint(businessId, projectId, deploymentId) {
386
- return `/v1/businesses/${encodeURIComponent(businessId)}/projects/${encodeURIComponent(projectId)}/deployments/${encodeURIComponent(deploymentId)}/progress`;
387
- }
388
- function renderBar(percent) {
389
- const clamped = Math.max(PROGRESS_MIN, Math.min(PROGRESS_MAX, percent));
390
- const filled = Math.round(clamped / PROGRESS_MAX * BAR_WIDTH);
391
- const empty = BAR_WIDTH - filled;
392
- return `[${"#".repeat(filled)}${"-".repeat(empty)}] ${String(clamped).padStart(3)}%`;
393
- }
394
- function writeStatusLine(line) {
395
- if (process.stdout.isTTY) {
396
- process.stdout.write(`\r\x1B[2K${line}`);
397
- } else {
398
- process.stdout.write(`${line}
399
- `);
400
- }
401
- }
402
- function endStatusLine() {
403
- if (process.stdout.isTTY) process.stdout.write("\n");
404
- }
405
- function sleep(ms) {
406
- return new Promise((resolve) => setTimeout(resolve, ms));
407
- }
408
- async function pollDeployment(client, businessId, projectId, deploymentId, options) {
409
- const interval = POLL_INTERVAL_MS;
410
- const maxDuration = POLL_MAX_MS;
411
- const endpoint = progressEndpoint(businessId, projectId, deploymentId);
412
- const startedAt = Date.now();
413
- while (true) {
414
- const progress = await client.get(endpoint);
415
- const message = progress.status_message ?? progress.status;
416
- writeStatusLine(`${renderBar(progress.progress ?? 0)} ${dim(message)}`);
417
- if (TERMINAL_DEPLOYMENT_STATUSES.has(progress.status)) {
418
- endStatusLine();
419
- reportTerminal(progress);
420
- return progress;
421
- }
422
- if (Date.now() - startedAt > maxDuration) {
423
- endStatusLine();
424
- throw new Error("Deployment polling timed out.");
425
- }
426
- await sleep(interval);
427
- }
428
- }
429
- function reportTerminal(progress) {
430
- switch (progress.status) {
431
- case DEPLOYMENT_STATUS.ACTIVE: {
432
- const url = progress.url;
433
- success(url ? `Deployed: ${url}` : "Deployment active.");
434
- return;
435
- }
436
- case DEPLOYMENT_STATUS.FAILED: {
437
- failure(`Deployment failed: ${progress.error_message ?? progress.status_message ?? "no message"}`);
438
- return;
439
- }
440
- case DEPLOYMENT_STATUS.CANCELLED: {
441
- failure("Deployment cancelled.");
442
- return;
443
- }
444
- case DEPLOYMENT_STATUS.SUPERSEDED: {
445
- failure(
446
- progress.superseded_by_deployment_id ? `Deployment superseded by ${progress.superseded_by_deployment_id}.` : "Deployment superseded."
447
- );
448
- return;
449
- }
450
- default:
451
- return;
452
- }
453
- }
454
-
455
- // src/cli/commands/rollback.ts
456
- var FLAG_NO_POLL = "no-poll";
457
- function deploymentsEndpoint(businessId, projectId) {
458
- return `/v1/businesses/${encodeURIComponent(businessId)}/projects/${encodeURIComponent(projectId)}/deployments`;
459
- }
460
- function deployEndpoint(businessId, projectId) {
461
- return `/v1/businesses/${encodeURIComponent(businessId)}/projects/${encodeURIComponent(projectId)}/deploy`;
462
- }
463
- async function run(argv) {
464
- const args = parseArgs(argv);
465
- const targetId = args.positional[0];
466
- if (!targetId) {
467
- throw new CliError(
468
- CLI_ERROR_CODE.INVALID_INPUT,
469
- "Usage: cimplify rollback <deployment-id>\nList past deployments via the dashboard or API."
470
- );
471
- }
472
- const auth = await readAuth();
473
- const link = await readProjectLink();
474
- const client = ApiClient.fromAuth(auth);
475
- const deployments = await client.get(
476
- deploymentsEndpoint(link.businessId, link.projectId)
477
- );
478
- const target = deployments.find((d) => d.id === targetId);
479
- if (!target) {
480
- throw new CliError(
481
- CLI_ERROR_CODE.PROJECT_NOT_FOUND,
482
- `Deployment ${targetId} not found in project history.`
483
- );
484
- }
485
- if (!target.git_sha) {
486
- throw new CliError(
487
- CLI_ERROR_CODE.INVALID_INPUT,
488
- `Deployment ${targetId} has no git_sha to roll back to.`
489
- );
490
- }
491
- const currentActive = deployments.find(
492
- (d) => d.status === DEPLOYMENT_STATUS.ACTIVE && d.environment === target.environment
493
- );
494
- const body = {
495
- git_ref: target.git_sha,
496
- env_scope: target.environment,
497
- trigger: DEPLOY_TRIGGER.ROLLBACK,
498
- parent_id: currentActive?.id
499
- };
500
- step(`Rolling back ${target.environment} to ${target.git_sha.slice(0, 12)}`);
501
- const enqueued = await client.post(
502
- deployEndpoint(link.businessId, link.projectId),
503
- body
504
- );
505
- await writeProjectState({
506
- lastDeploymentId: enqueued.deployment_id,
507
- lastDeploymentSha: enqueued.git_sha,
508
- lastDeploymentEnv: target.environment,
509
- lastDeploymentAt: (/* @__PURE__ */ new Date()).toISOString()
510
- });
511
- success(`Enqueued rollback ${enqueued.deployment_id}`);
512
- if (flagBool(args, FLAG_NO_POLL)) {
513
- info(dim(`Track via: cimplify deployments status ${enqueued.deployment_id}`));
514
- result({
515
- deployment: {
516
- id: enqueued.deployment_id,
517
- git_sha: enqueued.git_sha,
518
- environment: target.environment,
519
- status: "queued",
520
- rolled_back_from: target.id
521
- }
522
- });
523
- return;
524
- }
525
- const final = await pollDeployment(
526
- client,
527
- link.businessId,
528
- link.projectId,
529
- enqueued.deployment_id
530
- );
531
- result({
532
- deployment: {
533
- id: enqueued.deployment_id,
534
- git_sha: enqueued.git_sha,
535
- environment: target.environment,
536
- status: final.status,
537
- url: final.url ?? null,
538
- error_message: final.error_message ?? null,
539
- rolled_back_from: target.id
540
- }
541
- });
542
- if (final.status === DEPLOYMENT_STATUS.ACTIVE) {
543
- process.exitCode = EXIT_CODE.OK;
544
- return;
545
- }
546
- if (final.status === DEPLOYMENT_STATUS.SUPERSEDED) {
547
- process.exitCode = EXIT_CODE.SUPERSEDED;
548
- return;
549
- }
550
- process.exitCode = EXIT_CODE.ERROR;
551
- }
552
-
553
- export { run as default };