@cimplify/cli 0.2.8 → 0.3.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 (229) hide show
  1. package/dist/{add-7PTWJV4F.mjs → add-ZJNXWN2B.mjs} +10 -10
  2. package/dist/assets-DMK2QOPD.mjs +208 -0
  3. package/dist/chunk-5IAYN7AJ.mjs +259 -0
  4. package/dist/{chunk-4SBJVRGM.mjs → chunk-C4M3DXKC.mjs} +3 -1
  5. package/dist/{chunk-NC3GKHDD.mjs → chunk-D7WMSGKK.mjs} +1 -1
  6. package/dist/{chunk-NZ4RG62Z.mjs → chunk-I3XQSSOT.mjs} +4 -1
  7. package/dist/{chunk-JJYWETGA.mjs → chunk-LS2VTSMQ.mjs} +8 -2
  8. package/dist/{chunk-H2HJQGFY.mjs → chunk-MHK4WVNF.mjs} +2392 -596
  9. package/dist/{chunk-JOUXICGV.mjs → chunk-MOZQODQS.mjs} +1 -1
  10. package/dist/{chunk-KPGRCXQY.mjs → chunk-QGBXGDA5.mjs} +5 -5
  11. package/dist/chunk-RRY3NEZZ.mjs +79 -0
  12. package/dist/{chunk-L6474RPL.mjs → chunk-RZQTHTXX.mjs} +1 -1
  13. package/dist/{chunk-4YSOZ6LY.mjs → chunk-YI7UMMM7.mjs} +1 -1
  14. package/dist/{chunk-UPEHLREA.mjs → chunk-YQVMG62Z.mjs} +3 -3
  15. package/dist/{deploy-6KVOROT3.mjs → deploy-UKOOPJAE.mjs} +8 -82
  16. package/dist/{dev-AQP6TMYK.mjs → dev-FD4PM3UD.mjs} +5 -5
  17. package/dist/dispatcher.mjs +34 -22
  18. package/dist/doctor-5LBLYT7M.mjs +314 -0
  19. package/dist/{domains-2ZQ7AG27.mjs → domains-JQMV6GAP.mjs} +5 -5
  20. package/dist/{env-FDBPGU3W.mjs → env-EVMYQUIK.mjs} +6 -6
  21. package/dist/explain-3KBMWL6M.mjs +223 -0
  22. package/dist/introspect-PFBI3JHO.mjs +8 -0
  23. package/dist/{link-P4K2HRXY.mjs → link-X3E4UZBF.mjs} +4 -4
  24. package/dist/{list-44MLIFI2.mjs → list-TE54SJIB.mjs} +3 -3
  25. package/dist/{login-RSKGT6GU.mjs → login-WSAW4BEA.mjs} +4 -4
  26. package/dist/{logout-ZFZLSJ32.mjs → logout-DJDINVDF.mjs} +2 -2
  27. package/dist/{logs-E2AGTDCF.mjs → logs-KUKGEXR2.mjs} +4 -4
  28. package/dist/{projects-5CJOZ3MT.mjs → projects-364HGWHO.mjs} +13 -11
  29. package/dist/repo-26N2CHF6.mjs +8 -0
  30. package/dist/{rollback-36O4NOEL.mjs → rollback-5YALPQXL.mjs} +5 -5
  31. package/dist/{status-6AT4HF63.mjs → status-W4HW3CX3.mjs} +4 -4
  32. package/dist/{unlink-5ABCT7B6.mjs → unlink-HIIW57OO.mjs} +2 -2
  33. package/dist/{update-6KEG7EWK.mjs → update-5MRKRVZC.mjs} +7 -7
  34. package/dist/{whoami-DIJZYZIN.mjs → whoami-LACWBSNL.mjs} +3 -3
  35. package/package.json +3 -3
  36. package/templates/storefront-auto/.claude/skills/cimplify-storefront/SKILL.md +145 -0
  37. package/templates/storefront-auto/.cursor/rules/cimplify-storefront.mdc +25 -0
  38. package/templates/storefront-auto/.env.example +22 -0
  39. package/templates/storefront-auto/AGENTS.md +95 -0
  40. package/templates/storefront-auto/CLAUDE.md +22 -0
  41. package/templates/storefront-auto/README.md +48 -0
  42. package/templates/storefront-auto/__tests__/brand.test.ts +4 -0
  43. package/templates/storefront-auto/__tests__/cart-flow.test.ts +4 -0
  44. package/templates/storefront-auto/__tests__/contract.test.ts +4 -0
  45. package/templates/storefront-auto/app/.well-known/ucp/route.ts +65 -0
  46. package/templates/storefront-auto/app/about/page.tsx +41 -0
  47. package/templates/storefront-auto/app/accessibility/page.tsx +11 -0
  48. package/templates/storefront-auto/app/account/addresses/page.tsx +21 -0
  49. package/templates/storefront-auto/app/account/orders/page.tsx +21 -0
  50. package/templates/storefront-auto/app/account/page.tsx +22 -0
  51. package/templates/storefront-auto/app/account/settings/page.tsx +21 -0
  52. package/templates/storefront-auto/app/cart/page.tsx +9 -0
  53. package/templates/storefront-auto/app/categories/[slug]/listing-client.tsx +19 -0
  54. package/templates/storefront-auto/app/categories/[slug]/page.tsx +130 -0
  55. package/templates/storefront-auto/app/checkout/page.tsx +17 -0
  56. package/templates/storefront-auto/app/collections/[slug]/listing-client.tsx +20 -0
  57. package/templates/storefront-auto/app/collections/[slug]/page.tsx +130 -0
  58. package/templates/storefront-auto/app/contact/contact-form.tsx +109 -0
  59. package/templates/storefront-auto/app/contact/page.tsx +54 -0
  60. package/templates/storefront-auto/app/error.tsx +61 -0
  61. package/templates/storefront-auto/app/faq/page.tsx +46 -0
  62. package/templates/storefront-auto/app/globals.css +47 -0
  63. package/templates/storefront-auto/app/layout.tsx +77 -0
  64. package/templates/storefront-auto/app/llms.txt/route.ts +94 -0
  65. package/templates/storefront-auto/app/login/page.tsx +17 -0
  66. package/templates/storefront-auto/app/not-found.tsx +39 -0
  67. package/templates/storefront-auto/app/opensearch.xml/route.ts +37 -0
  68. package/templates/storefront-auto/app/orders/[id]/page.tsx +24 -0
  69. package/templates/storefront-auto/app/page.tsx +94 -0
  70. package/templates/storefront-auto/app/privacy/page.tsx +44 -0
  71. package/templates/storefront-auto/app/products/[slug]/page.tsx +165 -0
  72. package/templates/storefront-auto/app/products/[slug]/product-detail.tsx +70 -0
  73. package/templates/storefront-auto/app/returns/page.tsx +11 -0
  74. package/templates/storefront-auto/app/robots.ts +18 -0
  75. package/templates/storefront-auto/app/search/page.tsx +38 -0
  76. package/templates/storefront-auto/app/search/search-client.tsx +7 -0
  77. package/templates/storefront-auto/app/shipping/page.tsx +16 -0
  78. package/templates/storefront-auto/app/shop/page.tsx +63 -0
  79. package/templates/storefront-auto/app/shop/shop-client.tsx +32 -0
  80. package/templates/storefront-auto/app/signup/page.tsx +17 -0
  81. package/templates/storefront-auto/app/sitemap-page/page.tsx +167 -0
  82. package/templates/storefront-auto/app/sitemap.ts +59 -0
  83. package/templates/storefront-auto/app/terms/page.tsx +44 -0
  84. package/templates/storefront-auto/app/track-order/page.tsx +24 -0
  85. package/templates/storefront-auto/app/track-order/track-order-form.tsx +69 -0
  86. package/templates/storefront-auto/components/account-iframe.tsx +13 -0
  87. package/templates/storefront-auto/components/auto-hero.tsx +85 -0
  88. package/templates/storefront-auto/components/brand-marquee.tsx +27 -0
  89. package/templates/storefront-auto/components/cart-drawer.tsx +14 -0
  90. package/templates/storefront-auto/components/cart-pill.tsx +36 -0
  91. package/templates/storefront-auto/components/category-grid.tsx +28 -0
  92. package/templates/storefront-auto/components/category-tiles.tsx +104 -0
  93. package/templates/storefront-auto/components/collection-strip.tsx +45 -0
  94. package/templates/storefront-auto/components/feature-hero.tsx +84 -0
  95. package/templates/storefront-auto/components/fitment-finder.tsx +184 -0
  96. package/templates/storefront-auto/components/footer.tsx +153 -0
  97. package/templates/storefront-auto/components/header.tsx +45 -0
  98. package/templates/storefront-auto/components/hero.tsx +28 -0
  99. package/templates/storefront-auto/components/nav-link.tsx +20 -0
  100. package/templates/storefront-auto/components/newsletter.tsx +50 -0
  101. package/templates/storefront-auto/components/policy-page.tsx +49 -0
  102. package/templates/storefront-auto/components/promo-banner.tsx +41 -0
  103. package/templates/storefront-auto/components/providers.tsx +35 -0
  104. package/templates/storefront-auto/components/section-heading.tsx +37 -0
  105. package/templates/storefront-auto/components/service-brief.tsx +65 -0
  106. package/templates/storefront-auto/components/store-product-card.tsx +88 -0
  107. package/templates/storefront-auto/components/trade-in-cta.tsx +54 -0
  108. package/templates/storefront-auto/components/trust-bar.tsx +66 -0
  109. package/templates/storefront-auto/lib/brand.ts +744 -0
  110. package/templates/storefront-auto/lib/cart.ts +12 -0
  111. package/templates/storefront-auto/lib/cimplify-loader.ts +19 -0
  112. package/templates/storefront-auto/next.config.ts +45 -0
  113. package/templates/storefront-auto/package.json +35 -0
  114. package/templates/storefront-auto/postcss.config.mjs +7 -0
  115. package/templates/storefront-auto/tsconfig.json +23 -0
  116. package/templates/storefront-auto/vitest.config.ts +9 -0
  117. package/templates/storefront-bakery/.env.example +2 -2
  118. package/templates/storefront-bakery/README.md +1 -1
  119. package/templates/storefront-bakery/lib/cimplify-loader.ts +19 -0
  120. package/templates/storefront-bakery/next.config.ts +3 -0
  121. package/templates/storefront-bakery/package.json +1 -1
  122. package/templates/storefront-fashion/.env.example +2 -2
  123. package/templates/storefront-fashion/README.md +1 -1
  124. package/templates/storefront-fashion/lib/cimplify-loader.ts +19 -0
  125. package/templates/storefront-fashion/next.config.ts +3 -0
  126. package/templates/storefront-fashion/package.json +1 -1
  127. package/templates/storefront-grocery/.env.example +2 -2
  128. package/templates/storefront-grocery/README.md +1 -1
  129. package/templates/storefront-grocery/lib/cimplify-loader.ts +19 -0
  130. package/templates/storefront-grocery/next.config.ts +3 -0
  131. package/templates/storefront-grocery/package.json +1 -1
  132. package/templates/storefront-pharmacy/.claude/skills/cimplify-storefront/SKILL.md +145 -0
  133. package/templates/storefront-pharmacy/.cursor/rules/cimplify-storefront.mdc +25 -0
  134. package/templates/storefront-pharmacy/.env.example +22 -0
  135. package/templates/storefront-pharmacy/AGENTS.md +118 -0
  136. package/templates/storefront-pharmacy/CLAUDE.md +22 -0
  137. package/templates/storefront-pharmacy/README.md +87 -0
  138. package/templates/storefront-pharmacy/__tests__/brand.test.ts +4 -0
  139. package/templates/storefront-pharmacy/__tests__/cart-flow.test.ts +4 -0
  140. package/templates/storefront-pharmacy/__tests__/contract.test.ts +4 -0
  141. package/templates/storefront-pharmacy/app/.well-known/ucp/route.ts +65 -0
  142. package/templates/storefront-pharmacy/app/about/page.tsx +41 -0
  143. package/templates/storefront-pharmacy/app/accessibility/page.tsx +11 -0
  144. package/templates/storefront-pharmacy/app/account/addresses/page.tsx +21 -0
  145. package/templates/storefront-pharmacy/app/account/orders/page.tsx +21 -0
  146. package/templates/storefront-pharmacy/app/account/page.tsx +22 -0
  147. package/templates/storefront-pharmacy/app/account/settings/page.tsx +21 -0
  148. package/templates/storefront-pharmacy/app/cart/page.tsx +9 -0
  149. package/templates/storefront-pharmacy/app/categories/[slug]/listing-client.tsx +19 -0
  150. package/templates/storefront-pharmacy/app/categories/[slug]/page.tsx +130 -0
  151. package/templates/storefront-pharmacy/app/checkout/page.tsx +17 -0
  152. package/templates/storefront-pharmacy/app/collections/[slug]/listing-client.tsx +20 -0
  153. package/templates/storefront-pharmacy/app/collections/[slug]/page.tsx +130 -0
  154. package/templates/storefront-pharmacy/app/contact/contact-form.tsx +109 -0
  155. package/templates/storefront-pharmacy/app/contact/page.tsx +54 -0
  156. package/templates/storefront-pharmacy/app/error.tsx +61 -0
  157. package/templates/storefront-pharmacy/app/faq/page.tsx +46 -0
  158. package/templates/storefront-pharmacy/app/globals.css +47 -0
  159. package/templates/storefront-pharmacy/app/layout.tsx +77 -0
  160. package/templates/storefront-pharmacy/app/llms.txt/route.ts +94 -0
  161. package/templates/storefront-pharmacy/app/login/page.tsx +17 -0
  162. package/templates/storefront-pharmacy/app/not-found.tsx +39 -0
  163. package/templates/storefront-pharmacy/app/opensearch.xml/route.ts +37 -0
  164. package/templates/storefront-pharmacy/app/orders/[id]/page.tsx +24 -0
  165. package/templates/storefront-pharmacy/app/page.tsx +78 -0
  166. package/templates/storefront-pharmacy/app/privacy/page.tsx +44 -0
  167. package/templates/storefront-pharmacy/app/products/[slug]/page.tsx +165 -0
  168. package/templates/storefront-pharmacy/app/products/[slug]/product-detail.tsx +70 -0
  169. package/templates/storefront-pharmacy/app/returns/page.tsx +11 -0
  170. package/templates/storefront-pharmacy/app/robots.ts +18 -0
  171. package/templates/storefront-pharmacy/app/search/page.tsx +38 -0
  172. package/templates/storefront-pharmacy/app/search/search-client.tsx +7 -0
  173. package/templates/storefront-pharmacy/app/shipping/page.tsx +16 -0
  174. package/templates/storefront-pharmacy/app/shop/page.tsx +63 -0
  175. package/templates/storefront-pharmacy/app/shop/shop-client.tsx +32 -0
  176. package/templates/storefront-pharmacy/app/signup/page.tsx +17 -0
  177. package/templates/storefront-pharmacy/app/sitemap-page/page.tsx +167 -0
  178. package/templates/storefront-pharmacy/app/sitemap.ts +59 -0
  179. package/templates/storefront-pharmacy/app/terms/page.tsx +44 -0
  180. package/templates/storefront-pharmacy/app/track-order/page.tsx +24 -0
  181. package/templates/storefront-pharmacy/app/track-order/track-order-form.tsx +69 -0
  182. package/templates/storefront-pharmacy/components/account-iframe.tsx +13 -0
  183. package/templates/storefront-pharmacy/components/brand-marquee.tsx +27 -0
  184. package/templates/storefront-pharmacy/components/cart-drawer.tsx +14 -0
  185. package/templates/storefront-pharmacy/components/cart-pill.tsx +36 -0
  186. package/templates/storefront-pharmacy/components/category-grid.tsx +28 -0
  187. package/templates/storefront-pharmacy/components/category-tiles.tsx +104 -0
  188. package/templates/storefront-pharmacy/components/collection-strip.tsx +45 -0
  189. package/templates/storefront-pharmacy/components/feature-hero.tsx +84 -0
  190. package/templates/storefront-pharmacy/components/footer.tsx +153 -0
  191. package/templates/storefront-pharmacy/components/header.tsx +45 -0
  192. package/templates/storefront-pharmacy/components/health-brief.tsx +65 -0
  193. package/templates/storefront-pharmacy/components/hero.tsx +28 -0
  194. package/templates/storefront-pharmacy/components/nav-link.tsx +20 -0
  195. package/templates/storefront-pharmacy/components/newsletter.tsx +50 -0
  196. package/templates/storefront-pharmacy/components/pharmacy-hero.tsx +95 -0
  197. package/templates/storefront-pharmacy/components/policy-page.tsx +49 -0
  198. package/templates/storefront-pharmacy/components/promo-banner.tsx +41 -0
  199. package/templates/storefront-pharmacy/components/providers.tsx +35 -0
  200. package/templates/storefront-pharmacy/components/section-heading.tsx +37 -0
  201. package/templates/storefront-pharmacy/components/store-product-card.tsx +88 -0
  202. package/templates/storefront-pharmacy/components/symptom-finder.tsx +108 -0
  203. package/templates/storefront-pharmacy/components/trade-in-cta.tsx +54 -0
  204. package/templates/storefront-pharmacy/components/trust-bar.tsx +66 -0
  205. package/templates/storefront-pharmacy/components/urgent-ctas.tsx +117 -0
  206. package/templates/storefront-pharmacy/lib/brand.ts +790 -0
  207. package/templates/storefront-pharmacy/lib/cart.ts +12 -0
  208. package/templates/storefront-pharmacy/lib/cimplify-loader.ts +19 -0
  209. package/templates/storefront-pharmacy/next.config.ts +45 -0
  210. package/templates/storefront-pharmacy/package.json +35 -0
  211. package/templates/storefront-pharmacy/postcss.config.mjs +7 -0
  212. package/templates/storefront-pharmacy/tsconfig.json +23 -0
  213. package/templates/storefront-pharmacy/vitest.config.ts +9 -0
  214. package/templates/storefront-restaurant/.env.example +2 -2
  215. package/templates/storefront-restaurant/README.md +1 -1
  216. package/templates/storefront-restaurant/lib/cimplify-loader.ts +19 -0
  217. package/templates/storefront-restaurant/next.config.ts +3 -0
  218. package/templates/storefront-restaurant/package.json +1 -1
  219. package/templates/storefront-retail/.env.example +2 -2
  220. package/templates/storefront-retail/README.md +1 -1
  221. package/templates/storefront-retail/lib/cimplify-loader.ts +19 -0
  222. package/templates/storefront-retail/next.config.ts +3 -0
  223. package/templates/storefront-retail/package.json +1 -1
  224. package/templates/storefront-services/.env.example +2 -2
  225. package/templates/storefront-services/README.md +1 -1
  226. package/templates/storefront-services/lib/cimplify-loader.ts +19 -0
  227. package/templates/storefront-services/next.config.ts +3 -0
  228. package/templates/storefront-services/package.json +1 -1
  229. package/dist/repo-E6SBKVDG.mjs +0 -8
@@ -0,0 +1,12 @@
1
+ "use client";
2
+
3
+ import { useCart } from "@cimplify/sdk/react";
4
+
5
+ /**
6
+ * Reactive cart count for the header pill. Subscribes to the SDK cart
7
+ * state — updates immediately on add / remove / quantity change.
8
+ */
9
+ export function useCartCount(): { count: number } {
10
+ const { itemCount } = useCart();
11
+ return { count: itemCount };
12
+ }
@@ -0,0 +1,19 @@
1
+ import type { ImageLoader } from "next/image";
2
+
3
+ import { assetUrl, isCimplifyAsset } from "@cimplify/sdk";
4
+
5
+ const cdnBase = process.env.NEXT_PUBLIC_CIMPLIFY_CDN_URL?.trim() || undefined;
6
+
7
+ const cimplifyImageLoader: ImageLoader = ({ src, width, quality }) => {
8
+ if (isCimplifyAsset(src, cdnBase)) {
9
+ return assetUrl(src, {
10
+ base: cdnBase,
11
+ w: width,
12
+ quality,
13
+ format: "auto",
14
+ });
15
+ }
16
+ return src;
17
+ };
18
+
19
+ export default cimplifyImageLoader;
@@ -0,0 +1,45 @@
1
+ import type { NextConfig } from "next";
2
+
3
+ const MOCK_URL = process.env.NEXT_PUBLIC_CIMPLIFY_API_URL?.trim() || "http://127.0.0.1:8787";
4
+
5
+ /**
6
+ * Same-origin proxy to the Cimplify mock so the browser never makes a
7
+ * cross-origin request in dev (no CORS preflights, no flaky `Origin`
8
+ * mismatches). The SDK's base URL stays empty/relative — requests go to
9
+ * `/api/v1/...` on the Next origin, then this rewrite forwards them to
10
+ * the mock at `127.0.0.1:8787`.
11
+ *
12
+ * In production, point `NEXT_PUBLIC_CIMPLIFY_API_URL` at your Cimplify
13
+ * host and the rewrite continues to work the same way (or remove it and
14
+ * pass the absolute URL through `<CimplifyProvider/>`).
15
+ */
16
+ const nextConfig: NextConfig = {
17
+ // Enable Next 16's `cacheComponents` mode so we can use `'use cache'` +
18
+ // `cacheTag` / `cacheLife` for SSR caching. Cached chrome streams first,
19
+ // dynamic Suspense boundaries fill in when ready.
20
+ cacheComponents: true,
21
+ async rewrites() {
22
+ return [
23
+ { source: "/api/v1/:path*", destination: `${MOCK_URL}/api/v1/:path*` },
24
+ { source: "/img/:path*", destination: `${MOCK_URL}/img/:path*` },
25
+ { source: "/elements/:path*", destination: `${MOCK_URL}/elements/:path*` },
26
+ { source: "/_mock/:path*", destination: `${MOCK_URL}/_mock/:path*` },
27
+ ];
28
+ },
29
+ images: {
30
+ loader: "custom",
31
+ loaderFile: "./lib/cimplify-loader.ts",
32
+ remotePatterns: [
33
+ { protocol: "http", hostname: "127.0.0.1", port: "8787", pathname: "/img/**" },
34
+ { protocol: "http", hostname: "localhost", port: "8787", pathname: "/img/**" },
35
+ { protocol: "http", hostname: "localhost", port: "3000", pathname: "/img/**" },
36
+ { protocol: "https", hostname: "loremflickr.com", pathname: "/**" },
37
+ { protocol: "https", hostname: "images.unsplash.com", pathname: "/**" },
38
+ { protocol: "https", hostname: "static-tmp.cimplify.io", pathname: "/**" },
39
+ { protocol: "https", hostname: "storefrontassetscdn.cimplify.io", pathname: "/**" },
40
+ { protocol: "https", hostname: "cdn.cimplify.io", pathname: "/**" },
41
+ ],
42
+ },
43
+ };
44
+
45
+ export default nextConfig;
@@ -0,0 +1,35 @@
1
+ {
2
+ "name": "__STOREFRONT_NAME__",
3
+ "private": true,
4
+ "version": "0.0.0",
5
+ "scripts": {
6
+ "dev": "concurrently -k -n mock,next -c blue,magenta \"cimplify-mock --seed pharmacy --quiet\" \"next dev\"",
7
+ "dev:storefront": "next dev",
8
+ "dev:mock": "cimplify-mock --seed pharmacy",
9
+ "build": "next build",
10
+ "start": "next start",
11
+ "typecheck": "tsc --noEmit",
12
+ "test": "vitest",
13
+ "test:run": "vitest run",
14
+ "check:brand": "vitest run __tests__/brand.test.ts",
15
+ "check:cart": "vitest run __tests__/cart-flow.test.ts",
16
+ "check:contract": "vitest run __tests__/contract.test.ts",
17
+ "check": "bun run typecheck && bun run test:run"
18
+ },
19
+ "dependencies": {
20
+ "@cimplify/sdk": "^0.46.0",
21
+ "next": "^16.2.4",
22
+ "react": "^19.0.0",
23
+ "react-dom": "^19.0.0"
24
+ },
25
+ "devDependencies": {
26
+ "@tailwindcss/postcss": "^4.2.4",
27
+ "@types/node": "^22.10.0",
28
+ "@types/react": "^19.0.0",
29
+ "@types/react-dom": "^19.0.0",
30
+ "concurrently": "^9.0.0",
31
+ "tailwindcss": "^4.2.4",
32
+ "typescript": "^5.9.3",
33
+ "vitest": "^4.1.5"
34
+ }
35
+ }
@@ -0,0 +1,7 @@
1
+ const config = {
2
+ plugins: {
3
+ "@tailwindcss/postcss": {},
4
+ },
5
+ };
6
+
7
+ export default config;
@@ -0,0 +1,23 @@
1
+ {
2
+ "compilerOptions": {
3
+ "target": "ES2022",
4
+ "lib": ["dom", "dom.iterable", "esnext"],
5
+ "allowJs": false,
6
+ "skipLibCheck": true,
7
+ "strict": true,
8
+ "noEmit": true,
9
+ "esModuleInterop": true,
10
+ "module": "esnext",
11
+ "moduleResolution": "bundler",
12
+ "resolveJsonModule": true,
13
+ "isolatedModules": true,
14
+ "jsx": "preserve",
15
+ "incremental": true,
16
+ "plugins": [{ "name": "next" }],
17
+ "paths": {
18
+ "@/*": ["./*"]
19
+ }
20
+ },
21
+ "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx", ".next/types/**/*.ts", ".next/dev/types/**/*.ts"],
22
+ "exclude": ["node_modules"]
23
+ }
@@ -0,0 +1,9 @@
1
+ import { defineConfig } from "vitest/config";
2
+
3
+ export default defineConfig({
4
+ test: {
5
+ environment: "node",
6
+ include: ["__tests__/**/*.test.ts"],
7
+ globals: false,
8
+ },
9
+ });
@@ -11,8 +11,8 @@ NEXT_PUBLIC_CIMPLIFY_PUBLIC_KEY=mock-dev
11
11
  NEXT_PUBLIC_CIMPLIFY_BUSINESS_ID=bus_mamas_kitchen
12
12
 
13
13
  # Canonical public site URL — used by sitemap.xml, robots.txt, llms.txt,
14
- # and OpenGraph metadata. Set this on production deploys (Vercel auto-injects
15
- # via VERCEL_URL but Next prefers an explicit value).
14
+ # and OpenGraph metadata. Set this on production deploys; `cimplify env push`
15
+ # wires it into your linked project.
16
16
  NEXT_PUBLIC_SITE_URL=https://example.com
17
17
 
18
18
  # Business handle (human-readable slug, e.g. "akua-bakery"). Used by the
@@ -70,4 +70,4 @@ Update `NEXT_PUBLIC_CIMPLIFY_BUSINESS_ID` in `.env.local` to match the seeded bu
70
70
  + NEXT_PUBLIC_CIMPLIFY_BUSINESS_ID=<your business id>
71
71
  ```
72
72
 
73
- Deploy to Vercel with one click `next.config.ts` already whitelists the SDK image hosts under `images.remotePatterns`.
73
+ Deploy with `cimplify deploy --prod` after linking the project. See [`cimplify` CLI docs](https://docs.cimplify.io/cli/deploy). `next.config.ts` already whitelists the SDK image hosts under `images.remotePatterns`.
@@ -0,0 +1,19 @@
1
+ import type { ImageLoader } from "next/image";
2
+
3
+ import { assetUrl, isCimplifyAsset } from "@cimplify/sdk";
4
+
5
+ const cdnBase = process.env.NEXT_PUBLIC_CIMPLIFY_CDN_URL?.trim() || undefined;
6
+
7
+ const cimplifyImageLoader: ImageLoader = ({ src, width, quality }) => {
8
+ if (isCimplifyAsset(src, cdnBase)) {
9
+ return assetUrl(src, {
10
+ base: cdnBase,
11
+ w: width,
12
+ quality,
13
+ format: "auto",
14
+ });
15
+ }
16
+ return src;
17
+ };
18
+
19
+ export default cimplifyImageLoader;
@@ -27,6 +27,8 @@ const nextConfig: NextConfig = {
27
27
  ];
28
28
  },
29
29
  images: {
30
+ loader: "custom",
31
+ loaderFile: "./lib/cimplify-loader.ts",
30
32
  remotePatterns: [
31
33
  { protocol: "http", hostname: "127.0.0.1", port: "8787", pathname: "/img/**" },
32
34
  { protocol: "http", hostname: "localhost", port: "8787", pathname: "/img/**" },
@@ -34,6 +36,7 @@ const nextConfig: NextConfig = {
34
36
  { protocol: "https", hostname: "loremflickr.com", pathname: "/**" },
35
37
  { protocol: "https", hostname: "images.unsplash.com", pathname: "/**" },
36
38
  { protocol: "https", hostname: "static-tmp.cimplify.io", pathname: "/**" },
39
+ { protocol: "https", hostname: "storefrontassetscdn.cimplify.io", pathname: "/**" },
37
40
  { protocol: "https", hostname: "cdn.cimplify.io", pathname: "/**" },
38
41
  ],
39
42
  },
@@ -17,7 +17,7 @@
17
17
  "check": "bun run typecheck && bun run test:run"
18
18
  },
19
19
  "dependencies": {
20
- "@cimplify/sdk": "^0.45.4",
20
+ "@cimplify/sdk": "^0.46.0",
21
21
  "next": "^16.2.4",
22
22
  "react": "^19.0.0",
23
23
  "react-dom": "^19.0.0"
@@ -11,8 +11,8 @@ NEXT_PUBLIC_CIMPLIFY_PUBLIC_KEY=mock-dev
11
11
  NEXT_PUBLIC_CIMPLIFY_BUSINESS_ID=bus_currents_electronics
12
12
 
13
13
  # Canonical public site URL — used by sitemap.xml, robots.txt, llms.txt,
14
- # and OpenGraph metadata. Set this on production deploys (Vercel auto-injects
15
- # via VERCEL_URL but Next prefers an explicit value).
14
+ # and OpenGraph metadata. Set this on production deploys; `cimplify env push`
15
+ # wires it into your linked project.
16
16
  NEXT_PUBLIC_SITE_URL=https://example.com
17
17
 
18
18
  # Business handle (human-readable slug, e.g. "akua-bakery"). Used by the
@@ -74,4 +74,4 @@ cimplify init my-store --template grocery # coming soon
74
74
  + NEXT_PUBLIC_CIMPLIFY_BUSINESS_ID=<your business id>
75
75
  ```
76
76
 
77
- Deploy to Vercel with one click `next.config.ts` already whitelists the SDK image hosts under `images.remotePatterns`.
77
+ Deploy with `cimplify deploy --prod` after linking the project. See [`cimplify` CLI docs](https://docs.cimplify.io/cli/deploy). `next.config.ts` already whitelists the SDK image hosts under `images.remotePatterns`.
@@ -0,0 +1,19 @@
1
+ import type { ImageLoader } from "next/image";
2
+
3
+ import { assetUrl, isCimplifyAsset } from "@cimplify/sdk";
4
+
5
+ const cdnBase = process.env.NEXT_PUBLIC_CIMPLIFY_CDN_URL?.trim() || undefined;
6
+
7
+ const cimplifyImageLoader: ImageLoader = ({ src, width, quality }) => {
8
+ if (isCimplifyAsset(src, cdnBase)) {
9
+ return assetUrl(src, {
10
+ base: cdnBase,
11
+ w: width,
12
+ quality,
13
+ format: "auto",
14
+ });
15
+ }
16
+ return src;
17
+ };
18
+
19
+ export default cimplifyImageLoader;
@@ -27,6 +27,8 @@ const nextConfig: NextConfig = {
27
27
  ];
28
28
  },
29
29
  images: {
30
+ loader: "custom",
31
+ loaderFile: "./lib/cimplify-loader.ts",
30
32
  remotePatterns: [
31
33
  { protocol: "http", hostname: "127.0.0.1", port: "8787", pathname: "/img/**" },
32
34
  { protocol: "http", hostname: "localhost", port: "8787", pathname: "/img/**" },
@@ -34,6 +36,7 @@ const nextConfig: NextConfig = {
34
36
  { protocol: "https", hostname: "loremflickr.com", pathname: "/**" },
35
37
  { protocol: "https", hostname: "images.unsplash.com", pathname: "/**" },
36
38
  { protocol: "https", hostname: "static-tmp.cimplify.io", pathname: "/**" },
39
+ { protocol: "https", hostname: "storefrontassetscdn.cimplify.io", pathname: "/**" },
37
40
  { protocol: "https", hostname: "cdn.cimplify.io", pathname: "/**" },
38
41
  ],
39
42
  },
@@ -17,7 +17,7 @@
17
17
  "check": "bun run typecheck && bun run test:run"
18
18
  },
19
19
  "dependencies": {
20
- "@cimplify/sdk": "^0.45.4",
20
+ "@cimplify/sdk": "^0.46.0",
21
21
  "next": "^16.2.4",
22
22
  "react": "^19.0.0",
23
23
  "react-dom": "^19.0.0"
@@ -11,8 +11,8 @@ NEXT_PUBLIC_CIMPLIFY_PUBLIC_KEY=mock-dev
11
11
  NEXT_PUBLIC_CIMPLIFY_BUSINESS_ID=bus_serene_spa
12
12
 
13
13
  # Canonical public site URL — used by sitemap.xml, robots.txt, llms.txt,
14
- # and OpenGraph metadata. Set this on production deploys (Vercel auto-injects
15
- # via VERCEL_URL but Next prefers an explicit value).
14
+ # and OpenGraph metadata. Set this on production deploys; `cimplify env push`
15
+ # wires it into your linked project.
16
16
  NEXT_PUBLIC_SITE_URL=https://example.com
17
17
 
18
18
  # Business handle (human-readable slug, e.g. "akua-bakery"). Used by the
@@ -70,4 +70,4 @@ Update `NEXT_PUBLIC_CIMPLIFY_BUSINESS_ID` in `.env.local` to match the seeded bu
70
70
  + NEXT_PUBLIC_CIMPLIFY_BUSINESS_ID=<your business id>
71
71
  ```
72
72
 
73
- Deploy to Vercel with one click `next.config.ts` already whitelists the SDK image hosts under `images.remotePatterns`.
73
+ Deploy with `cimplify deploy --prod` after linking the project. See [`cimplify` CLI docs](https://docs.cimplify.io/cli/deploy). `next.config.ts` already whitelists the SDK image hosts under `images.remotePatterns`.
@@ -0,0 +1,19 @@
1
+ import type { ImageLoader } from "next/image";
2
+
3
+ import { assetUrl, isCimplifyAsset } from "@cimplify/sdk";
4
+
5
+ const cdnBase = process.env.NEXT_PUBLIC_CIMPLIFY_CDN_URL?.trim() || undefined;
6
+
7
+ const cimplifyImageLoader: ImageLoader = ({ src, width, quality }) => {
8
+ if (isCimplifyAsset(src, cdnBase)) {
9
+ return assetUrl(src, {
10
+ base: cdnBase,
11
+ w: width,
12
+ quality,
13
+ format: "auto",
14
+ });
15
+ }
16
+ return src;
17
+ };
18
+
19
+ export default cimplifyImageLoader;
@@ -27,6 +27,8 @@ const nextConfig: NextConfig = {
27
27
  ];
28
28
  },
29
29
  images: {
30
+ loader: "custom",
31
+ loaderFile: "./lib/cimplify-loader.ts",
30
32
  remotePatterns: [
31
33
  { protocol: "http", hostname: "127.0.0.1", port: "8787", pathname: "/img/**" },
32
34
  { protocol: "http", hostname: "localhost", port: "8787", pathname: "/img/**" },
@@ -34,6 +36,7 @@ const nextConfig: NextConfig = {
34
36
  { protocol: "https", hostname: "loremflickr.com", pathname: "/**" },
35
37
  { protocol: "https", hostname: "images.unsplash.com", pathname: "/**" },
36
38
  { protocol: "https", hostname: "static-tmp.cimplify.io", pathname: "/**" },
39
+ { protocol: "https", hostname: "storefrontassetscdn.cimplify.io", pathname: "/**" },
37
40
  { protocol: "https", hostname: "cdn.cimplify.io", pathname: "/**" },
38
41
  ],
39
42
  },
@@ -17,7 +17,7 @@
17
17
  "check": "bun run typecheck && bun run test:run"
18
18
  },
19
19
  "dependencies": {
20
- "@cimplify/sdk": "^0.45.4",
20
+ "@cimplify/sdk": "^0.46.0",
21
21
  "next": "^16.2.4",
22
22
  "react": "^19.0.0",
23
23
  "react-dom": "^19.0.0"
@@ -1,8 +0,0 @@
1
- #!/usr/bin/env node
2
- export { run as default, fetchCloneToken } from './chunk-KPGRCXQY.mjs';
3
- import './chunk-L6474RPL.mjs';
4
- import './chunk-MXYUAJEW.mjs';
5
- import './chunk-4SBJVRGM.mjs';
6
- import './chunk-NC3GKHDD.mjs';
7
- import './chunk-JJYWETGA.mjs';
8
- import './chunk-NZ4RG62Z.mjs';