@cimplify/sdk 0.44.34 → 0.45.0

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 (451) hide show
  1. package/README.md +21 -16
  2. package/dist/styles.css +1 -1
  3. package/package.json +5 -9
  4. package/dist/cli/commands/deploy.mjs +0 -717
  5. package/dist/cli/commands/dev.mjs +0 -479
  6. package/dist/cli/commands/domains.mjs +0 -769
  7. package/dist/cli/commands/env.mjs +0 -705
  8. package/dist/cli/commands/link.mjs +0 -378
  9. package/dist/cli/commands/login.mjs +0 -584
  10. package/dist/cli/commands/logout.mjs +0 -75
  11. package/dist/cli/commands/logs.mjs +0 -432
  12. package/dist/cli/commands/projects.mjs +0 -473
  13. package/dist/cli/commands/repo.mjs +0 -584
  14. package/dist/cli/commands/rollback.mjs +0 -553
  15. package/dist/cli/commands/status.mjs +0 -450
  16. package/dist/cli/commands/unlink.mjs +0 -79
  17. package/dist/cli/commands/whoami.mjs +0 -285
  18. package/dist/cli.js +0 -184
  19. package/dist/dispatcher.mjs +0 -360
  20. package/registry/booking-page.json +0 -18
  21. package/registry/bookings-page.json +0 -17
  22. package/registry/service-card.json +0 -16
  23. package/registry/service-grid.json +0 -16
  24. package/templates/storefront-bakery/.claude/skills/cimplify-storefront/SKILL.md +0 -145
  25. package/templates/storefront-bakery/.cursor/rules/cimplify-storefront.mdc +0 -25
  26. package/templates/storefront-bakery/.env.example +0 -16
  27. package/templates/storefront-bakery/AGENTS.md +0 -120
  28. package/templates/storefront-bakery/CLAUDE.md +0 -22
  29. package/templates/storefront-bakery/README.md +0 -73
  30. package/templates/storefront-bakery/__tests__/brand.test.ts +0 -4
  31. package/templates/storefront-bakery/__tests__/cart-flow.test.ts +0 -4
  32. package/templates/storefront-bakery/__tests__/contract.test.ts +0 -4
  33. package/templates/storefront-bakery/app/about/page.tsx +0 -38
  34. package/templates/storefront-bakery/app/accessibility/page.tsx +0 -11
  35. package/templates/storefront-bakery/app/account/addresses/page.tsx +0 -21
  36. package/templates/storefront-bakery/app/account/orders/page.tsx +0 -21
  37. package/templates/storefront-bakery/app/account/page.tsx +0 -22
  38. package/templates/storefront-bakery/app/account/settings/page.tsx +0 -21
  39. package/templates/storefront-bakery/app/cart/page.tsx +0 -9
  40. package/templates/storefront-bakery/app/categories/[slug]/listing-client.tsx +0 -19
  41. package/templates/storefront-bakery/app/categories/[slug]/page.tsx +0 -118
  42. package/templates/storefront-bakery/app/checkout/page.tsx +0 -17
  43. package/templates/storefront-bakery/app/collections/[slug]/listing-client.tsx +0 -20
  44. package/templates/storefront-bakery/app/collections/[slug]/page.tsx +0 -118
  45. package/templates/storefront-bakery/app/contact/contact-form.tsx +0 -109
  46. package/templates/storefront-bakery/app/contact/page.tsx +0 -54
  47. package/templates/storefront-bakery/app/error.tsx +0 -60
  48. package/templates/storefront-bakery/app/faq/page.tsx +0 -46
  49. package/templates/storefront-bakery/app/globals.css +0 -47
  50. package/templates/storefront-bakery/app/layout.tsx +0 -82
  51. package/templates/storefront-bakery/app/llms.txt/route.ts +0 -94
  52. package/templates/storefront-bakery/app/login/page.tsx +0 -17
  53. package/templates/storefront-bakery/app/not-found.tsx +0 -39
  54. package/templates/storefront-bakery/app/opensearch.xml/route.ts +0 -37
  55. package/templates/storefront-bakery/app/orders/[id]/page.tsx +0 -21
  56. package/templates/storefront-bakery/app/page.tsx +0 -97
  57. package/templates/storefront-bakery/app/privacy/page.tsx +0 -44
  58. package/templates/storefront-bakery/app/returns/page.tsx +0 -11
  59. package/templates/storefront-bakery/app/robots.ts +0 -18
  60. package/templates/storefront-bakery/app/search/page.tsx +0 -38
  61. package/templates/storefront-bakery/app/search/search-client.tsx +0 -7
  62. package/templates/storefront-bakery/app/shipping/page.tsx +0 -16
  63. package/templates/storefront-bakery/app/shop/page.tsx +0 -31
  64. package/templates/storefront-bakery/app/shop/shop-client.tsx +0 -27
  65. package/templates/storefront-bakery/app/signup/page.tsx +0 -17
  66. package/templates/storefront-bakery/app/sitemap-page/page.tsx +0 -167
  67. package/templates/storefront-bakery/app/sitemap.ts +0 -62
  68. package/templates/storefront-bakery/app/terms/page.tsx +0 -44
  69. package/templates/storefront-bakery/app/track-order/page.tsx +0 -24
  70. package/templates/storefront-bakery/app/track-order/track-order-form.tsx +0 -69
  71. package/templates/storefront-bakery/components/account-iframe.tsx +0 -13
  72. package/templates/storefront-bakery/components/cart-drawer.tsx +0 -14
  73. package/templates/storefront-bakery/components/cart-pill.tsx +0 -36
  74. package/templates/storefront-bakery/components/category-grid.tsx +0 -28
  75. package/templates/storefront-bakery/components/collection-strip.tsx +0 -45
  76. package/templates/storefront-bakery/components/footer.tsx +0 -148
  77. package/templates/storefront-bakery/components/header.tsx +0 -43
  78. package/templates/storefront-bakery/components/hero.tsx +0 -25
  79. package/templates/storefront-bakery/components/nav-link.tsx +0 -20
  80. package/templates/storefront-bakery/components/policy-page.tsx +0 -49
  81. package/templates/storefront-bakery/components/product-modal.tsx +0 -104
  82. package/templates/storefront-bakery/components/providers.tsx +0 -35
  83. package/templates/storefront-bakery/components/store-product-card.tsx +0 -87
  84. package/templates/storefront-bakery/lib/brand.ts +0 -570
  85. package/templates/storefront-bakery/lib/cart.ts +0 -12
  86. package/templates/storefront-bakery/next.config.ts +0 -42
  87. package/templates/storefront-bakery/package.json +0 -35
  88. package/templates/storefront-bakery/postcss.config.mjs +0 -7
  89. package/templates/storefront-bakery/tsconfig.json +0 -23
  90. package/templates/storefront-bakery/vitest.config.ts +0 -9
  91. package/templates/storefront-fashion/.claude/skills/cimplify-storefront/SKILL.md +0 -145
  92. package/templates/storefront-fashion/.cursor/rules/cimplify-storefront.mdc +0 -25
  93. package/templates/storefront-fashion/.env.example +0 -16
  94. package/templates/storefront-fashion/AGENTS.md +0 -126
  95. package/templates/storefront-fashion/CLAUDE.md +0 -22
  96. package/templates/storefront-fashion/README.md +0 -77
  97. package/templates/storefront-fashion/__tests__/brand.test.ts +0 -4
  98. package/templates/storefront-fashion/__tests__/cart-flow.test.ts +0 -55
  99. package/templates/storefront-fashion/__tests__/contract.test.ts +0 -4
  100. package/templates/storefront-fashion/app/about/page.tsx +0 -41
  101. package/templates/storefront-fashion/app/accessibility/page.tsx +0 -11
  102. package/templates/storefront-fashion/app/account/addresses/page.tsx +0 -21
  103. package/templates/storefront-fashion/app/account/orders/page.tsx +0 -21
  104. package/templates/storefront-fashion/app/account/page.tsx +0 -22
  105. package/templates/storefront-fashion/app/account/settings/page.tsx +0 -21
  106. package/templates/storefront-fashion/app/cart/page.tsx +0 -9
  107. package/templates/storefront-fashion/app/categories/[slug]/listing-client.tsx +0 -19
  108. package/templates/storefront-fashion/app/categories/[slug]/page.tsx +0 -130
  109. package/templates/storefront-fashion/app/checkout/page.tsx +0 -17
  110. package/templates/storefront-fashion/app/collections/[slug]/listing-client.tsx +0 -20
  111. package/templates/storefront-fashion/app/collections/[slug]/page.tsx +0 -130
  112. package/templates/storefront-fashion/app/contact/contact-form.tsx +0 -109
  113. package/templates/storefront-fashion/app/contact/page.tsx +0 -54
  114. package/templates/storefront-fashion/app/error.tsx +0 -61
  115. package/templates/storefront-fashion/app/faq/page.tsx +0 -46
  116. package/templates/storefront-fashion/app/globals.css +0 -46
  117. package/templates/storefront-fashion/app/layout.tsx +0 -78
  118. package/templates/storefront-fashion/app/llms.txt/route.ts +0 -94
  119. package/templates/storefront-fashion/app/login/page.tsx +0 -17
  120. package/templates/storefront-fashion/app/lookbook/page.tsx +0 -132
  121. package/templates/storefront-fashion/app/not-found.tsx +0 -39
  122. package/templates/storefront-fashion/app/opensearch.xml/route.ts +0 -37
  123. package/templates/storefront-fashion/app/orders/[id]/page.tsx +0 -24
  124. package/templates/storefront-fashion/app/page.tsx +0 -183
  125. package/templates/storefront-fashion/app/privacy/page.tsx +0 -44
  126. package/templates/storefront-fashion/app/products/[slug]/page.tsx +0 -165
  127. package/templates/storefront-fashion/app/products/[slug]/product-detail.tsx +0 -70
  128. package/templates/storefront-fashion/app/returns/page.tsx +0 -11
  129. package/templates/storefront-fashion/app/robots.ts +0 -18
  130. package/templates/storefront-fashion/app/search/page.tsx +0 -38
  131. package/templates/storefront-fashion/app/search/search-client.tsx +0 -7
  132. package/templates/storefront-fashion/app/shipping/page.tsx +0 -16
  133. package/templates/storefront-fashion/app/shop/page.tsx +0 -63
  134. package/templates/storefront-fashion/app/shop/shop-client.tsx +0 -32
  135. package/templates/storefront-fashion/app/signup/page.tsx +0 -17
  136. package/templates/storefront-fashion/app/sitemap-page/page.tsx +0 -167
  137. package/templates/storefront-fashion/app/sitemap.ts +0 -59
  138. package/templates/storefront-fashion/app/size-guide/page.tsx +0 -155
  139. package/templates/storefront-fashion/app/terms/page.tsx +0 -44
  140. package/templates/storefront-fashion/app/track-order/page.tsx +0 -24
  141. package/templates/storefront-fashion/app/track-order/track-order-form.tsx +0 -69
  142. package/templates/storefront-fashion/components/account-iframe.tsx +0 -13
  143. package/templates/storefront-fashion/components/brand-marquee.tsx +0 -27
  144. package/templates/storefront-fashion/components/cart-drawer.tsx +0 -14
  145. package/templates/storefront-fashion/components/cart-pill.tsx +0 -36
  146. package/templates/storefront-fashion/components/category-grid.tsx +0 -28
  147. package/templates/storefront-fashion/components/category-tiles.tsx +0 -104
  148. package/templates/storefront-fashion/components/collection-strip.tsx +0 -45
  149. package/templates/storefront-fashion/components/feature-hero.tsx +0 -82
  150. package/templates/storefront-fashion/components/footer.tsx +0 -153
  151. package/templates/storefront-fashion/components/header.tsx +0 -43
  152. package/templates/storefront-fashion/components/hero.tsx +0 -28
  153. package/templates/storefront-fashion/components/nav-link.tsx +0 -20
  154. package/templates/storefront-fashion/components/newsletter.tsx +0 -50
  155. package/templates/storefront-fashion/components/policy-page.tsx +0 -49
  156. package/templates/storefront-fashion/components/promo-banner.tsx +0 -41
  157. package/templates/storefront-fashion/components/providers.tsx +0 -35
  158. package/templates/storefront-fashion/components/section-heading.tsx +0 -37
  159. package/templates/storefront-fashion/components/store-product-card.tsx +0 -87
  160. package/templates/storefront-fashion/components/trade-in-cta.tsx +0 -54
  161. package/templates/storefront-fashion/components/trust-bar.tsx +0 -66
  162. package/templates/storefront-fashion/e2e/visual.spec.ts +0 -52
  163. package/templates/storefront-fashion/lib/brand.ts +0 -518
  164. package/templates/storefront-fashion/lib/cart.ts +0 -12
  165. package/templates/storefront-fashion/next.config.ts +0 -42
  166. package/templates/storefront-fashion/package.json +0 -38
  167. package/templates/storefront-fashion/playwright.config.ts +0 -48
  168. package/templates/storefront-fashion/postcss.config.mjs +0 -7
  169. package/templates/storefront-fashion/tsconfig.json +0 -23
  170. package/templates/storefront-fashion/vitest.config.ts +0 -9
  171. package/templates/storefront-grocery/.claude/skills/cimplify-storefront/SKILL.md +0 -145
  172. package/templates/storefront-grocery/.cursor/rules/cimplify-storefront.mdc +0 -25
  173. package/templates/storefront-grocery/.env.example +0 -16
  174. package/templates/storefront-grocery/AGENTS.md +0 -96
  175. package/templates/storefront-grocery/CLAUDE.md +0 -22
  176. package/templates/storefront-grocery/README.md +0 -73
  177. package/templates/storefront-grocery/__tests__/brand.test.ts +0 -4
  178. package/templates/storefront-grocery/__tests__/cart-flow.test.ts +0 -4
  179. package/templates/storefront-grocery/__tests__/contract.test.ts +0 -4
  180. package/templates/storefront-grocery/app/about/page.tsx +0 -38
  181. package/templates/storefront-grocery/app/accessibility/page.tsx +0 -11
  182. package/templates/storefront-grocery/app/account/addresses/page.tsx +0 -21
  183. package/templates/storefront-grocery/app/account/orders/page.tsx +0 -21
  184. package/templates/storefront-grocery/app/account/page.tsx +0 -22
  185. package/templates/storefront-grocery/app/account/settings/page.tsx +0 -21
  186. package/templates/storefront-grocery/app/cart/page.tsx +0 -9
  187. package/templates/storefront-grocery/app/categories/[slug]/listing-client.tsx +0 -19
  188. package/templates/storefront-grocery/app/categories/[slug]/page.tsx +0 -118
  189. package/templates/storefront-grocery/app/checkout/page.tsx +0 -17
  190. package/templates/storefront-grocery/app/collections/[slug]/listing-client.tsx +0 -20
  191. package/templates/storefront-grocery/app/collections/[slug]/page.tsx +0 -118
  192. package/templates/storefront-grocery/app/contact/contact-form.tsx +0 -109
  193. package/templates/storefront-grocery/app/contact/page.tsx +0 -54
  194. package/templates/storefront-grocery/app/error.tsx +0 -60
  195. package/templates/storefront-grocery/app/faq/page.tsx +0 -46
  196. package/templates/storefront-grocery/app/globals.css +0 -45
  197. package/templates/storefront-grocery/app/layout.tsx +0 -77
  198. package/templates/storefront-grocery/app/llms.txt/route.ts +0 -94
  199. package/templates/storefront-grocery/app/login/page.tsx +0 -17
  200. package/templates/storefront-grocery/app/not-found.tsx +0 -39
  201. package/templates/storefront-grocery/app/opensearch.xml/route.ts +0 -37
  202. package/templates/storefront-grocery/app/orders/[id]/page.tsx +0 -21
  203. package/templates/storefront-grocery/app/page.tsx +0 -97
  204. package/templates/storefront-grocery/app/privacy/page.tsx +0 -44
  205. package/templates/storefront-grocery/app/returns/page.tsx +0 -11
  206. package/templates/storefront-grocery/app/robots.ts +0 -18
  207. package/templates/storefront-grocery/app/search/page.tsx +0 -38
  208. package/templates/storefront-grocery/app/search/search-client.tsx +0 -7
  209. package/templates/storefront-grocery/app/shipping/page.tsx +0 -16
  210. package/templates/storefront-grocery/app/shop/page.tsx +0 -31
  211. package/templates/storefront-grocery/app/shop/shop-client.tsx +0 -27
  212. package/templates/storefront-grocery/app/signup/page.tsx +0 -17
  213. package/templates/storefront-grocery/app/sitemap-page/page.tsx +0 -167
  214. package/templates/storefront-grocery/app/sitemap.ts +0 -62
  215. package/templates/storefront-grocery/app/terms/page.tsx +0 -44
  216. package/templates/storefront-grocery/app/track-order/page.tsx +0 -24
  217. package/templates/storefront-grocery/app/track-order/track-order-form.tsx +0 -69
  218. package/templates/storefront-grocery/components/account-iframe.tsx +0 -13
  219. package/templates/storefront-grocery/components/cart-drawer.tsx +0 -14
  220. package/templates/storefront-grocery/components/cart-pill.tsx +0 -36
  221. package/templates/storefront-grocery/components/category-grid.tsx +0 -28
  222. package/templates/storefront-grocery/components/collection-strip.tsx +0 -45
  223. package/templates/storefront-grocery/components/footer.tsx +0 -148
  224. package/templates/storefront-grocery/components/header.tsx +0 -43
  225. package/templates/storefront-grocery/components/hero.tsx +0 -25
  226. package/templates/storefront-grocery/components/nav-link.tsx +0 -20
  227. package/templates/storefront-grocery/components/policy-page.tsx +0 -49
  228. package/templates/storefront-grocery/components/product-modal.tsx +0 -104
  229. package/templates/storefront-grocery/components/providers.tsx +0 -35
  230. package/templates/storefront-grocery/components/store-product-card.tsx +0 -87
  231. package/templates/storefront-grocery/lib/brand.ts +0 -375
  232. package/templates/storefront-grocery/lib/cart.ts +0 -12
  233. package/templates/storefront-grocery/next.config.ts +0 -42
  234. package/templates/storefront-grocery/package.json +0 -35
  235. package/templates/storefront-grocery/postcss.config.mjs +0 -7
  236. package/templates/storefront-grocery/tsconfig.json +0 -23
  237. package/templates/storefront-grocery/vitest.config.ts +0 -9
  238. package/templates/storefront-restaurant/.claude/skills/cimplify-storefront/SKILL.md +0 -145
  239. package/templates/storefront-restaurant/.cursor/rules/cimplify-storefront.mdc +0 -25
  240. package/templates/storefront-restaurant/.env.example +0 -16
  241. package/templates/storefront-restaurant/AGENTS.md +0 -102
  242. package/templates/storefront-restaurant/CLAUDE.md +0 -22
  243. package/templates/storefront-restaurant/README.md +0 -73
  244. package/templates/storefront-restaurant/__tests__/brand.test.ts +0 -4
  245. package/templates/storefront-restaurant/__tests__/cart-flow.test.ts +0 -4
  246. package/templates/storefront-restaurant/__tests__/contract.test.ts +0 -4
  247. package/templates/storefront-restaurant/app/about/page.tsx +0 -38
  248. package/templates/storefront-restaurant/app/accessibility/page.tsx +0 -11
  249. package/templates/storefront-restaurant/app/account/addresses/page.tsx +0 -21
  250. package/templates/storefront-restaurant/app/account/orders/page.tsx +0 -21
  251. package/templates/storefront-restaurant/app/account/page.tsx +0 -22
  252. package/templates/storefront-restaurant/app/account/settings/page.tsx +0 -21
  253. package/templates/storefront-restaurant/app/cart/page.tsx +0 -9
  254. package/templates/storefront-restaurant/app/categories/[slug]/listing-client.tsx +0 -19
  255. package/templates/storefront-restaurant/app/categories/[slug]/page.tsx +0 -118
  256. package/templates/storefront-restaurant/app/checkout/page.tsx +0 -17
  257. package/templates/storefront-restaurant/app/collections/[slug]/listing-client.tsx +0 -20
  258. package/templates/storefront-restaurant/app/collections/[slug]/page.tsx +0 -118
  259. package/templates/storefront-restaurant/app/contact/contact-form.tsx +0 -109
  260. package/templates/storefront-restaurant/app/contact/page.tsx +0 -54
  261. package/templates/storefront-restaurant/app/error.tsx +0 -60
  262. package/templates/storefront-restaurant/app/faq/page.tsx +0 -46
  263. package/templates/storefront-restaurant/app/globals.css +0 -44
  264. package/templates/storefront-restaurant/app/layout.tsx +0 -82
  265. package/templates/storefront-restaurant/app/llms.txt/route.ts +0 -94
  266. package/templates/storefront-restaurant/app/login/page.tsx +0 -17
  267. package/templates/storefront-restaurant/app/not-found.tsx +0 -39
  268. package/templates/storefront-restaurant/app/opensearch.xml/route.ts +0 -37
  269. package/templates/storefront-restaurant/app/orders/[id]/page.tsx +0 -21
  270. package/templates/storefront-restaurant/app/page.tsx +0 -97
  271. package/templates/storefront-restaurant/app/privacy/page.tsx +0 -44
  272. package/templates/storefront-restaurant/app/reservations/page.tsx +0 -66
  273. package/templates/storefront-restaurant/app/reservations/reservations-client.tsx +0 -234
  274. package/templates/storefront-restaurant/app/returns/page.tsx +0 -11
  275. package/templates/storefront-restaurant/app/robots.ts +0 -18
  276. package/templates/storefront-restaurant/app/search/page.tsx +0 -38
  277. package/templates/storefront-restaurant/app/search/search-client.tsx +0 -7
  278. package/templates/storefront-restaurant/app/shipping/page.tsx +0 -16
  279. package/templates/storefront-restaurant/app/shop/page.tsx +0 -31
  280. package/templates/storefront-restaurant/app/shop/shop-client.tsx +0 -27
  281. package/templates/storefront-restaurant/app/signup/page.tsx +0 -17
  282. package/templates/storefront-restaurant/app/sitemap-page/page.tsx +0 -167
  283. package/templates/storefront-restaurant/app/sitemap.ts +0 -62
  284. package/templates/storefront-restaurant/app/terms/page.tsx +0 -44
  285. package/templates/storefront-restaurant/app/track-order/page.tsx +0 -24
  286. package/templates/storefront-restaurant/app/track-order/track-order-form.tsx +0 -69
  287. package/templates/storefront-restaurant/components/account-iframe.tsx +0 -13
  288. package/templates/storefront-restaurant/components/cart-drawer.tsx +0 -14
  289. package/templates/storefront-restaurant/components/cart-pill.tsx +0 -36
  290. package/templates/storefront-restaurant/components/category-grid.tsx +0 -28
  291. package/templates/storefront-restaurant/components/collection-strip.tsx +0 -45
  292. package/templates/storefront-restaurant/components/footer.tsx +0 -148
  293. package/templates/storefront-restaurant/components/header.tsx +0 -43
  294. package/templates/storefront-restaurant/components/hero.tsx +0 -25
  295. package/templates/storefront-restaurant/components/nav-link.tsx +0 -20
  296. package/templates/storefront-restaurant/components/policy-page.tsx +0 -49
  297. package/templates/storefront-restaurant/components/product-modal.tsx +0 -104
  298. package/templates/storefront-restaurant/components/providers.tsx +0 -35
  299. package/templates/storefront-restaurant/components/store-product-card.tsx +0 -87
  300. package/templates/storefront-restaurant/lib/brand.ts +0 -377
  301. package/templates/storefront-restaurant/lib/cart.ts +0 -12
  302. package/templates/storefront-restaurant/next.config.ts +0 -42
  303. package/templates/storefront-restaurant/package.json +0 -35
  304. package/templates/storefront-restaurant/postcss.config.mjs +0 -7
  305. package/templates/storefront-restaurant/tsconfig.json +0 -23
  306. package/templates/storefront-restaurant/vitest.config.ts +0 -9
  307. package/templates/storefront-retail/.claude/skills/cimplify-storefront/SKILL.md +0 -145
  308. package/templates/storefront-retail/.cursor/rules/cimplify-storefront.mdc +0 -25
  309. package/templates/storefront-retail/.env.example +0 -16
  310. package/templates/storefront-retail/AGENTS.md +0 -117
  311. package/templates/storefront-retail/CLAUDE.md +0 -22
  312. package/templates/storefront-retail/README.md +0 -77
  313. package/templates/storefront-retail/__tests__/brand.test.ts +0 -4
  314. package/templates/storefront-retail/__tests__/cart-flow.test.ts +0 -4
  315. package/templates/storefront-retail/__tests__/contract.test.ts +0 -4
  316. package/templates/storefront-retail/app/about/page.tsx +0 -41
  317. package/templates/storefront-retail/app/accessibility/page.tsx +0 -11
  318. package/templates/storefront-retail/app/account/addresses/page.tsx +0 -21
  319. package/templates/storefront-retail/app/account/orders/page.tsx +0 -21
  320. package/templates/storefront-retail/app/account/page.tsx +0 -22
  321. package/templates/storefront-retail/app/account/settings/page.tsx +0 -21
  322. package/templates/storefront-retail/app/cart/page.tsx +0 -9
  323. package/templates/storefront-retail/app/categories/[slug]/listing-client.tsx +0 -19
  324. package/templates/storefront-retail/app/categories/[slug]/page.tsx +0 -130
  325. package/templates/storefront-retail/app/checkout/page.tsx +0 -17
  326. package/templates/storefront-retail/app/collections/[slug]/listing-client.tsx +0 -20
  327. package/templates/storefront-retail/app/collections/[slug]/page.tsx +0 -130
  328. package/templates/storefront-retail/app/contact/contact-form.tsx +0 -109
  329. package/templates/storefront-retail/app/contact/page.tsx +0 -54
  330. package/templates/storefront-retail/app/error.tsx +0 -61
  331. package/templates/storefront-retail/app/faq/page.tsx +0 -46
  332. package/templates/storefront-retail/app/globals.css +0 -47
  333. package/templates/storefront-retail/app/layout.tsx +0 -77
  334. package/templates/storefront-retail/app/llms.txt/route.ts +0 -94
  335. package/templates/storefront-retail/app/login/page.tsx +0 -17
  336. package/templates/storefront-retail/app/not-found.tsx +0 -39
  337. package/templates/storefront-retail/app/opensearch.xml/route.ts +0 -37
  338. package/templates/storefront-retail/app/orders/[id]/page.tsx +0 -24
  339. package/templates/storefront-retail/app/page.tsx +0 -182
  340. package/templates/storefront-retail/app/privacy/page.tsx +0 -44
  341. package/templates/storefront-retail/app/products/[slug]/page.tsx +0 -165
  342. package/templates/storefront-retail/app/products/[slug]/product-detail.tsx +0 -70
  343. package/templates/storefront-retail/app/returns/page.tsx +0 -11
  344. package/templates/storefront-retail/app/robots.ts +0 -18
  345. package/templates/storefront-retail/app/search/page.tsx +0 -38
  346. package/templates/storefront-retail/app/search/search-client.tsx +0 -7
  347. package/templates/storefront-retail/app/shipping/page.tsx +0 -16
  348. package/templates/storefront-retail/app/shop/page.tsx +0 -63
  349. package/templates/storefront-retail/app/shop/shop-client.tsx +0 -32
  350. package/templates/storefront-retail/app/signup/page.tsx +0 -17
  351. package/templates/storefront-retail/app/sitemap-page/page.tsx +0 -167
  352. package/templates/storefront-retail/app/sitemap.ts +0 -59
  353. package/templates/storefront-retail/app/terms/page.tsx +0 -44
  354. package/templates/storefront-retail/app/track-order/page.tsx +0 -24
  355. package/templates/storefront-retail/app/track-order/track-order-form.tsx +0 -69
  356. package/templates/storefront-retail/components/account-iframe.tsx +0 -13
  357. package/templates/storefront-retail/components/brand-marquee.tsx +0 -27
  358. package/templates/storefront-retail/components/cart-drawer.tsx +0 -14
  359. package/templates/storefront-retail/components/cart-pill.tsx +0 -36
  360. package/templates/storefront-retail/components/category-grid.tsx +0 -28
  361. package/templates/storefront-retail/components/category-tiles.tsx +0 -104
  362. package/templates/storefront-retail/components/collection-strip.tsx +0 -45
  363. package/templates/storefront-retail/components/feature-hero.tsx +0 -84
  364. package/templates/storefront-retail/components/footer.tsx +0 -153
  365. package/templates/storefront-retail/components/header.tsx +0 -45
  366. package/templates/storefront-retail/components/hero.tsx +0 -28
  367. package/templates/storefront-retail/components/nav-link.tsx +0 -20
  368. package/templates/storefront-retail/components/newsletter.tsx +0 -50
  369. package/templates/storefront-retail/components/policy-page.tsx +0 -49
  370. package/templates/storefront-retail/components/promo-banner.tsx +0 -41
  371. package/templates/storefront-retail/components/providers.tsx +0 -35
  372. package/templates/storefront-retail/components/section-heading.tsx +0 -37
  373. package/templates/storefront-retail/components/store-product-card.tsx +0 -87
  374. package/templates/storefront-retail/components/trade-in-cta.tsx +0 -54
  375. package/templates/storefront-retail/components/trust-bar.tsx +0 -66
  376. package/templates/storefront-retail/lib/brand.ts +0 -664
  377. package/templates/storefront-retail/lib/cart.ts +0 -12
  378. package/templates/storefront-retail/next.config.ts +0 -42
  379. package/templates/storefront-retail/package.json +0 -35
  380. package/templates/storefront-retail/postcss.config.mjs +0 -7
  381. package/templates/storefront-retail/tsconfig.json +0 -23
  382. package/templates/storefront-retail/vitest.config.ts +0 -9
  383. package/templates/storefront-services/.claude/skills/cimplify-storefront/SKILL.md +0 -145
  384. package/templates/storefront-services/.cursor/rules/cimplify-storefront.mdc +0 -25
  385. package/templates/storefront-services/.env.example +0 -16
  386. package/templates/storefront-services/AGENTS.md +0 -101
  387. package/templates/storefront-services/CLAUDE.md +0 -22
  388. package/templates/storefront-services/README.md +0 -73
  389. package/templates/storefront-services/__tests__/brand.test.ts +0 -4
  390. package/templates/storefront-services/__tests__/cart-flow.test.ts +0 -4
  391. package/templates/storefront-services/__tests__/contract.test.ts +0 -4
  392. package/templates/storefront-services/app/about/page.tsx +0 -38
  393. package/templates/storefront-services/app/accessibility/page.tsx +0 -11
  394. package/templates/storefront-services/app/account/addresses/page.tsx +0 -21
  395. package/templates/storefront-services/app/account/orders/page.tsx +0 -21
  396. package/templates/storefront-services/app/account/page.tsx +0 -22
  397. package/templates/storefront-services/app/account/settings/page.tsx +0 -21
  398. package/templates/storefront-services/app/book/book-client.tsx +0 -195
  399. package/templates/storefront-services/app/book/page.tsx +0 -65
  400. package/templates/storefront-services/app/cart/page.tsx +0 -9
  401. package/templates/storefront-services/app/categories/[slug]/listing-client.tsx +0 -19
  402. package/templates/storefront-services/app/categories/[slug]/page.tsx +0 -118
  403. package/templates/storefront-services/app/checkout/page.tsx +0 -17
  404. package/templates/storefront-services/app/collections/[slug]/listing-client.tsx +0 -20
  405. package/templates/storefront-services/app/collections/[slug]/page.tsx +0 -118
  406. package/templates/storefront-services/app/contact/contact-form.tsx +0 -109
  407. package/templates/storefront-services/app/contact/page.tsx +0 -54
  408. package/templates/storefront-services/app/error.tsx +0 -60
  409. package/templates/storefront-services/app/faq/page.tsx +0 -46
  410. package/templates/storefront-services/app/globals.css +0 -45
  411. package/templates/storefront-services/app/layout.tsx +0 -82
  412. package/templates/storefront-services/app/llms.txt/route.ts +0 -94
  413. package/templates/storefront-services/app/login/page.tsx +0 -17
  414. package/templates/storefront-services/app/not-found.tsx +0 -39
  415. package/templates/storefront-services/app/opensearch.xml/route.ts +0 -37
  416. package/templates/storefront-services/app/orders/[id]/page.tsx +0 -21
  417. package/templates/storefront-services/app/page.tsx +0 -97
  418. package/templates/storefront-services/app/privacy/page.tsx +0 -44
  419. package/templates/storefront-services/app/returns/page.tsx +0 -11
  420. package/templates/storefront-services/app/robots.ts +0 -18
  421. package/templates/storefront-services/app/search/page.tsx +0 -38
  422. package/templates/storefront-services/app/search/search-client.tsx +0 -7
  423. package/templates/storefront-services/app/shipping/page.tsx +0 -16
  424. package/templates/storefront-services/app/shop/page.tsx +0 -31
  425. package/templates/storefront-services/app/shop/shop-client.tsx +0 -27
  426. package/templates/storefront-services/app/signup/page.tsx +0 -17
  427. package/templates/storefront-services/app/sitemap-page/page.tsx +0 -167
  428. package/templates/storefront-services/app/sitemap.ts +0 -62
  429. package/templates/storefront-services/app/terms/page.tsx +0 -44
  430. package/templates/storefront-services/app/track-order/page.tsx +0 -24
  431. package/templates/storefront-services/app/track-order/track-order-form.tsx +0 -69
  432. package/templates/storefront-services/components/account-iframe.tsx +0 -13
  433. package/templates/storefront-services/components/cart-drawer.tsx +0 -14
  434. package/templates/storefront-services/components/cart-pill.tsx +0 -36
  435. package/templates/storefront-services/components/category-grid.tsx +0 -28
  436. package/templates/storefront-services/components/collection-strip.tsx +0 -45
  437. package/templates/storefront-services/components/footer.tsx +0 -148
  438. package/templates/storefront-services/components/header.tsx +0 -43
  439. package/templates/storefront-services/components/hero.tsx +0 -25
  440. package/templates/storefront-services/components/nav-link.tsx +0 -20
  441. package/templates/storefront-services/components/policy-page.tsx +0 -49
  442. package/templates/storefront-services/components/product-modal.tsx +0 -104
  443. package/templates/storefront-services/components/providers.tsx +0 -35
  444. package/templates/storefront-services/components/store-product-card.tsx +0 -87
  445. package/templates/storefront-services/lib/brand.ts +0 -396
  446. package/templates/storefront-services/lib/cart.ts +0 -12
  447. package/templates/storefront-services/next.config.ts +0 -42
  448. package/templates/storefront-services/package.json +0 -35
  449. package/templates/storefront-services/postcss.config.mjs +0 -7
  450. package/templates/storefront-services/tsconfig.json +0 -23
  451. package/templates/storefront-services/vitest.config.ts +0 -9
@@ -1,479 +0,0 @@
1
- import { spawn } from 'child_process';
2
- import { promises } from 'fs';
3
- import path2 from 'path';
4
- import os from 'os';
5
-
6
- // src/cli/commands/dev.ts
7
-
8
- // src/cli/errors.ts
9
- var CLI_ERROR_CODE = {
10
- NOT_LOGGED_IN: "NOT_LOGGED_IN",
11
- NOT_LINKED: "NOT_LINKED",
12
- NETWORK_ERROR: "NETWORK_ERROR",
13
- AUTH_FAILED: "AUTH_FAILED",
14
- PROJECT_NOT_FOUND: "PROJECT_NOT_FOUND",
15
- INVALID_INPUT: "INVALID_INPUT",
16
- ALREADY_LINKED: "ALREADY_LINKED",
17
- SERVER_ERROR: "SERVER_ERROR"};
18
- var EXIT_CODE = {
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 PROJECT_DIR_NAME = ".cimplify";
238
- var ENV_XDG_CONFIG_HOME = "XDG_CONFIG_HOME";
239
- var APP_CONFIG_DIR_NAME = "cimplify";
240
- var HOME_CONFIG_DIR_NAME = ".config";
241
- var ENCODING_UTF8 = "utf8";
242
- function authConfigDir() {
243
- const xdg = process.env[ENV_XDG_CONFIG_HOME];
244
- return xdg ? path2.join(xdg, APP_CONFIG_DIR_NAME) : path2.join(os.homedir(), HOME_CONFIG_DIR_NAME, APP_CONFIG_DIR_NAME);
245
- }
246
- function authConfigPath() {
247
- return path2.join(authConfigDir(), AUTH_FILE_NAME);
248
- }
249
- function projectConfigDir(cwd = process.cwd()) {
250
- return path2.join(cwd, PROJECT_DIR_NAME);
251
- }
252
- function projectConfigPath(cwd = process.cwd()) {
253
- return path2.join(projectConfigDir(cwd), PROJECT_FILE_NAME);
254
- }
255
- async function readJsonFile(filePath) {
256
- try {
257
- const raw = await promises.readFile(filePath, ENCODING_UTF8);
258
- return JSON.parse(raw);
259
- } catch (err) {
260
- if (err.code === "ENOENT") return null;
261
- throw err;
262
- }
263
- }
264
- async function readAuth() {
265
- const data = await readJsonFile(authConfigPath());
266
- if (!data) {
267
- throw new CliError(
268
- CLI_ERROR_CODE.NOT_LOGGED_IN,
269
- "Not logged in. Run `cimplify login` first."
270
- );
271
- }
272
- return data;
273
- }
274
- async function readProjectLink(cwd = process.cwd()) {
275
- const data = await readJsonFile(projectConfigPath(cwd));
276
- if (!data) {
277
- throw new CliError(
278
- CLI_ERROR_CODE.NOT_LINKED,
279
- "No project linked. Run `cimplify link <project-id>` first."
280
- );
281
- }
282
- return data;
283
- }
284
-
285
- // src/cli/envfile.ts
286
- var COMMENT_CHAR = "#";
287
- var QUOTE_DOUBLE = '"';
288
- var QUOTE_SINGLE = "'";
289
- var KEY_SEPARATOR = "=";
290
- var KEY_PATTERN = /^[A-Za-z_][A-Za-z0-9_]*$/;
291
- function parseEnvFile(text) {
292
- const entries = [];
293
- const lines = text.split("\n");
294
- for (const raw of lines) {
295
- const line = raw.trim();
296
- if (line.length === 0) continue;
297
- if (line.startsWith(COMMENT_CHAR)) continue;
298
- const eq = line.indexOf(KEY_SEPARATOR);
299
- if (eq === -1) continue;
300
- const key = line.slice(0, eq).trim();
301
- if (!KEY_PATTERN.test(key)) continue;
302
- let value = line.slice(eq + 1).trim();
303
- if (value.length >= 2) {
304
- const first = value[0];
305
- const last = value[value.length - 1];
306
- if (first === QUOTE_DOUBLE && last === QUOTE_DOUBLE || first === QUOTE_SINGLE && last === QUOTE_SINGLE) {
307
- value = value.slice(1, -1);
308
- }
309
- }
310
- entries.push({ key, value });
311
- }
312
- return entries;
313
- }
314
- function formatEnvFile(entries) {
315
- const lines = [];
316
- for (const { key, value } of entries) {
317
- const needsQuote = /[\s"'#]/.test(value) || value.length === 0;
318
- const rendered = needsQuote ? `"${value.replace(/\\/g, "\\\\").replace(/"/g, '\\"')}"` : value;
319
- lines.push(`${key}=${rendered}`);
320
- }
321
- return lines.length === 0 ? "" : `${lines.join("\n")}
322
- `;
323
- }
324
-
325
- // src/cli/output.ts
326
- var RESET = "\x1B[0m";
327
- var DIM_OPEN = "\x1B[2m";
328
- var ENV_JSON = "CIMPLIFY_JSON";
329
- function envFlag(name) {
330
- const v = process.env[name];
331
- return v === "1" || v === "true";
332
- }
333
- function isJsonMode() {
334
- return envFlag(ENV_JSON);
335
- }
336
- function wrap(open, value) {
337
- return `${open}${value}${RESET}`;
338
- }
339
- function dim(value) {
340
- return isJsonMode() ? value : wrap(DIM_OPEN, value);
341
- }
342
- function info(message) {
343
- if (isJsonMode()) return;
344
- console.log(message);
345
- }
346
-
347
- // src/cli/types.ts
348
- var ENV_SCOPE = {
349
- PRODUCTION: "production"
350
- };
351
- var PUBLIC_ENV_PREFIX = "NEXT_PUBLIC_";
352
- var REPO_PROVIDER = {
353
- FREESTYLE: "freestyle",
354
- GITHUB: "github",
355
- GITEA: "gitea",
356
- EXTERNAL: "external"
357
- };
358
- new Set(Object.values(REPO_PROVIDER));
359
-
360
- // src/cli/commands/dev.ts
361
- var FLAG_REMOTE = "remote";
362
- var PACKAGE_JSON = "package.json";
363
- var ENV_LOCAL_FILE = ".env.local";
364
- var PUBLIC_API_URL_KEY = "NEXT_PUBLIC_CIMPLIFY_API_URL";
365
- var SCRIPT_DEV = "dev";
366
- var PM_BUN = "bun";
367
- var PM_PNPM = "pnpm";
368
- var PM_YARN = "yarn";
369
- var PM_NPM = "npm";
370
- var LOCKFILE_BUN = "bun.lock";
371
- var LOCKFILE_BUN_BINARY = "bun.lockb";
372
- var LOCKFILE_PNPM = "pnpm-lock.yaml";
373
- var LOCKFILE_YARN = "yarn.lock";
374
- var BUNFIG = "bunfig.toml";
375
- function envEndpoint(businessId, projectId) {
376
- return `/v1/businesses/${encodeURIComponent(businessId)}/projects/${encodeURIComponent(projectId)}/env-vars`;
377
- }
378
- async function detectPackageManager(cwd) {
379
- if (await pathExists(path2.join(cwd, LOCKFILE_BUN))) return PM_BUN;
380
- if (await pathExists(path2.join(cwd, LOCKFILE_BUN_BINARY))) return PM_BUN;
381
- if (await pathExists(path2.join(cwd, BUNFIG))) return PM_BUN;
382
- if (await pathExists(path2.join(cwd, LOCKFILE_PNPM))) return PM_PNPM;
383
- if (await pathExists(path2.join(cwd, LOCKFILE_YARN))) return PM_YARN;
384
- return PM_NPM;
385
- }
386
- async function pathExists(target) {
387
- try {
388
- await promises.stat(target);
389
- return true;
390
- } catch (err) {
391
- if (err.code === "ENOENT") return false;
392
- throw err;
393
- }
394
- }
395
- async function readPackageJson(cwd) {
396
- const pkgPath = path2.join(cwd, PACKAGE_JSON);
397
- let raw;
398
- try {
399
- raw = await promises.readFile(pkgPath, "utf8");
400
- } catch (err) {
401
- if (err.code === "ENOENT") {
402
- throw new CliError(
403
- CLI_ERROR_CODE.INVALID_INPUT,
404
- `No package.json in ${cwd}. \`cimplify dev\` runs your project's dev script.`
405
- );
406
- }
407
- throw err;
408
- }
409
- return JSON.parse(raw);
410
- }
411
- function mergeEnvEntries(existing, incoming) {
412
- const seen = new Set(existing.map((e) => e.key));
413
- const merged = [...existing];
414
- for (const entry of incoming) {
415
- if (seen.has(entry.key)) continue;
416
- merged.push(entry);
417
- seen.add(entry.key);
418
- }
419
- return merged;
420
- }
421
- async function applyRemoteEnv(client, businessId, projectId, apiBaseUrl, cwd) {
422
- const records = await client.get(envEndpoint(businessId, projectId), {
423
- query: { scope: ENV_SCOPE.PRODUCTION }
424
- });
425
- const incoming = records.filter((r) => r.value !== null && !r.is_secret).map((r) => ({ key: r.key, value: r.value }));
426
- incoming.push({ key: PUBLIC_API_URL_KEY, value: apiBaseUrl });
427
- const envPath = path2.join(cwd, ENV_LOCAL_FILE);
428
- let existing = [];
429
- try {
430
- const raw = await promises.readFile(envPath, "utf8");
431
- existing = parseEnvFile(raw);
432
- } catch (err) {
433
- if (err.code !== "ENOENT") throw err;
434
- }
435
- const merged = mergeEnvEntries(existing, incoming);
436
- await promises.writeFile(envPath, formatEnvFile(merged), "utf8");
437
- const publicCount = incoming.filter((e) => e.key.startsWith(PUBLIC_ENV_PREFIX)).length;
438
- return publicCount;
439
- }
440
- async function run(argv) {
441
- const args = parseArgs(argv);
442
- const remote = flagBool(args, FLAG_REMOTE);
443
- const cwd = process.cwd();
444
- if (remote) {
445
- const auth = await readAuth();
446
- const link = await readProjectLink();
447
- const client = ApiClient.fromAuth(auth);
448
- const publicCount = await applyRemoteEnv(
449
- client,
450
- link.businessId,
451
- link.projectId,
452
- auth.apiBaseUrl,
453
- cwd
454
- );
455
- const label = link.businessHandle ?? auth.businessHandle ?? auth.businessId;
456
- info(`Dev mode: connected to ${label} production data (${publicCount} public var${publicCount === 1 ? "" : "s"} merged)`);
457
- } else {
458
- info("Dev mode: using local mock (`cimplify mock`)");
459
- }
460
- const pkg = await readPackageJson(cwd);
461
- if (!pkg.scripts || !pkg.scripts[SCRIPT_DEV]) {
462
- throw new CliError(
463
- CLI_ERROR_CODE.INVALID_INPUT,
464
- `No "${SCRIPT_DEV}" script in package.json. Add one (e.g. "next dev") and re-run.`
465
- );
466
- }
467
- const pm = await detectPackageManager(cwd);
468
- info(dim(`(running: ${pm} run ${SCRIPT_DEV})`));
469
- const child = spawn(pm, ["run", SCRIPT_DEV], { cwd, stdio: "inherit" });
470
- await new Promise((resolve, reject) => {
471
- child.on("error", (err) => reject(new CliError(CLI_ERROR_CODE.INVALID_INPUT, `Failed to spawn ${pm}: ${err.message}`)));
472
- child.on("close", (code) => {
473
- process.exitCode = code ?? 0;
474
- resolve();
475
- });
476
- });
477
- }
478
-
479
- export { run as default, detectPackageManager, mergeEnvEntries };