@clay-design-system/email 0.0.0-stage → 0.2.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 (268) hide show
  1. package/README.md +48 -2
  2. package/dist/build/asset-scoring.d.ts +48 -0
  3. package/dist/build/asset-scoring.d.ts.map +1 -0
  4. package/dist/build/asset-scoring.js +57 -0
  5. package/dist/build/asset-scoring.js.map +1 -0
  6. package/dist/build/braze-transform.d.ts +20 -0
  7. package/dist/build/braze-transform.d.ts.map +1 -0
  8. package/dist/build/braze-transform.js +26 -0
  9. package/dist/build/braze-transform.js.map +1 -0
  10. package/dist/build/catalog.d.ts +25 -0
  11. package/dist/build/catalog.d.ts.map +1 -0
  12. package/dist/build/catalog.js +3 -0
  13. package/dist/build/catalog.js.map +1 -0
  14. package/dist/build/cloudinary-env.d.ts +15 -0
  15. package/dist/build/cloudinary-env.d.ts.map +1 -0
  16. package/dist/build/cloudinary-env.js +36 -0
  17. package/dist/build/cloudinary-env.js.map +1 -0
  18. package/dist/build/cloudinary-manifest.d.ts +33 -0
  19. package/dist/build/cloudinary-manifest.d.ts.map +1 -0
  20. package/dist/build/cloudinary-manifest.js +36 -0
  21. package/dist/build/cloudinary-manifest.js.map +1 -0
  22. package/dist/build/compile.d.ts +11 -0
  23. package/dist/build/compile.d.ts.map +1 -0
  24. package/dist/build/compile.js +234 -0
  25. package/dist/build/compile.js.map +1 -0
  26. package/dist/build/email-config.d.ts +26 -0
  27. package/dist/build/email-config.d.ts.map +1 -0
  28. package/dist/build/email-config.js +17 -0
  29. package/dist/build/email-config.js.map +1 -0
  30. package/dist/build/email-list.d.ts +6 -0
  31. package/dist/build/email-list.d.ts.map +1 -0
  32. package/dist/build/email-list.js +17 -0
  33. package/dist/build/email-list.js.map +1 -0
  34. package/dist/build/email-tree.d.ts +23 -0
  35. package/dist/build/email-tree.d.ts.map +1 -0
  36. package/dist/build/email-tree.js +46 -0
  37. package/dist/build/email-tree.js.map +1 -0
  38. package/dist/build/export-braze.d.ts +22 -0
  39. package/dist/build/export-braze.d.ts.map +1 -0
  40. package/dist/build/export-braze.js +92 -0
  41. package/dist/build/export-braze.js.map +1 -0
  42. package/dist/build/generate-stock-library-map.d.ts +13 -0
  43. package/dist/build/generate-stock-library-map.d.ts.map +1 -0
  44. package/dist/build/generate-stock-library-map.js +202 -0
  45. package/dist/build/generate-stock-library-map.js.map +1 -0
  46. package/dist/build/icon-registry-map.d.ts +34 -0
  47. package/dist/build/icon-registry-map.d.ts.map +1 -0
  48. package/dist/build/icon-registry-map.js +44 -0
  49. package/dist/build/icon-registry-map.js.map +1 -0
  50. package/dist/build/import-examples.d.ts +14 -0
  51. package/dist/build/import-examples.d.ts.map +1 -0
  52. package/dist/build/import-examples.js +65 -0
  53. package/dist/build/import-examples.js.map +1 -0
  54. package/dist/build/persona-character-map.d.ts +32 -0
  55. package/dist/build/persona-character-map.d.ts.map +1 -0
  56. package/dist/build/persona-character-map.js +90 -0
  57. package/dist/build/persona-character-map.js.map +1 -0
  58. package/dist/build/stock-library-map.d.ts +57 -0
  59. package/dist/build/stock-library-map.d.ts.map +1 -0
  60. package/dist/build/stock-library-map.js +1261 -0
  61. package/dist/build/stock-library-map.js.map +1 -0
  62. package/dist/build/upload-assets.d.ts +20 -0
  63. package/dist/build/upload-assets.d.ts.map +1 -0
  64. package/dist/build/upload-assets.js +153 -0
  65. package/dist/build/upload-assets.js.map +1 -0
  66. package/dist/build/upload-library-assets.d.ts +21 -0
  67. package/dist/build/upload-library-assets.d.ts.map +1 -0
  68. package/dist/build/upload-library-assets.js +182 -0
  69. package/dist/build/upload-library-assets.js.map +1 -0
  70. package/dist/build/visual-resolver.d.ts +70 -0
  71. package/dist/build/visual-resolver.d.ts.map +1 -0
  72. package/dist/build/visual-resolver.js +375 -0
  73. package/dist/build/visual-resolver.js.map +1 -0
  74. package/dist/catalog.json +467 -0
  75. package/dist/emails/component-buttons-icons.html +435 -0
  76. package/dist/emails/component-buttons-integration.html +256 -0
  77. package/dist/emails/component-buttons-primary.html +269 -0
  78. package/dist/emails/component-buttons-secondary.html +255 -0
  79. package/dist/emails/component-buttons-two-integrations.html +310 -0
  80. package/dist/emails/component-images-card-280h.html +281 -0
  81. package/dist/emails/component-images-card-320h.html +281 -0
  82. package/dist/emails/component-images-card.html +281 -0
  83. package/dist/emails/component-images-full-bleed-280h.html +279 -0
  84. package/dist/emails/component-images-full-bleed-400h.html +279 -0
  85. package/dist/emails/component-images-full-bleed.html +279 -0
  86. package/dist/emails/component-text-h1.html +254 -0
  87. package/dist/emails/component-text-h2.html +230 -0
  88. package/dist/emails/component-text-h3.html +255 -0
  89. package/dist/emails/component-text-h4.html +255 -0
  90. package/dist/emails/component-text-h5.html +254 -0
  91. package/dist/emails/component-text-p2.html +253 -0
  92. package/dist/emails/component-text-p3.html +254 -0
  93. package/dist/emails/component-text-p4.html +254 -0
  94. package/dist/emails/container.html +250 -0
  95. package/dist/emails/section-changelog-icon-list.html +1201 -0
  96. package/dist/emails/section-divider-line.html +340 -0
  97. package/dist/emails/section-feature-highlight-reversed.html +377 -0
  98. package/dist/emails/section-feature-highlight.html +384 -0
  99. package/dist/emails/section-feature-rows.html +328 -0
  100. package/dist/emails/section-feature-story-row-reversed.html +381 -0
  101. package/dist/emails/section-feature-story-row.html +382 -0
  102. package/dist/emails/section-footer-lifecycle.html +650 -0
  103. package/dist/emails/section-footer-two-column-minimal.html +318 -0
  104. package/dist/emails/section-footer.html +413 -0
  105. package/dist/emails/section-header.html +290 -0
  106. package/dist/emails/section-hero.html +276 -0
  107. package/dist/emails/section-icon-feature-list.html +554 -0
  108. package/dist/emails/section-image-caption-block.html +313 -0
  109. package/dist/emails/section-image-hero.html +341 -0
  110. package/dist/emails/section-lesson-card.html +628 -0
  111. package/dist/emails/section-list-action-items.html +590 -0
  112. package/dist/emails/section-list-feature-items.html +713 -0
  113. package/dist/emails/section-list-icon-items.html +701 -0
  114. package/dist/emails/section-list-numbered-items.html +733 -0
  115. package/dist/emails/section-logo-header.html +288 -0
  116. package/dist/emails/section-newsletter-hero.html +393 -0
  117. package/dist/emails/section-product-ui-hero.html +496 -0
  118. package/dist/emails/section-promo-banner.html +308 -0
  119. package/dist/emails/section-qa-block.html +440 -0
  120. package/dist/emails/section-resource-link-list.html +481 -0
  121. package/dist/emails/section-signoff.html +279 -0
  122. package/dist/emails/section-single-column-author.html +453 -0
  123. package/dist/emails/section-single-column-feature-card.html +312 -0
  124. package/dist/emails/section-single-column-product-card.html +393 -0
  125. package/dist/emails/section-single-column-promo-card.html +306 -0
  126. package/dist/emails/section-spacer-fill.html +281 -0
  127. package/dist/emails/section-testimonial-dark-card.html +363 -0
  128. package/dist/emails/section-text-h1-regular.html +254 -0
  129. package/dist/emails/section-text-h2-regular.html +254 -0
  130. package/dist/emails/section-text-h3-regular.html +254 -0
  131. package/dist/emails/section-text-h4-regular.html +254 -0
  132. package/dist/emails/section-text-h5-regular.html +254 -0
  133. package/dist/emails/section-text-mixed-heading.html +269 -0
  134. package/dist/emails/section-text-overline-heading.html +281 -0
  135. package/dist/emails/section-text-p1-bold.html +254 -0
  136. package/dist/emails/section-text-p1-regular.html +255 -0
  137. package/dist/emails/section-text-paragraph.html +358 -0
  138. package/dist/emails/section-text-quote-card.html +269 -0
  139. package/dist/emails/section-text-quote.html +313 -0
  140. package/dist/emails/section-text-small-headline.html +279 -0
  141. package/dist/emails/section-three-column-content-cards.html +499 -0
  142. package/dist/emails/section-three-column-icon-cards.html +510 -0
  143. package/dist/emails/section-three-column-image-grid.html +466 -0
  144. package/dist/emails/section-three-up-icon-benefits.html +464 -0
  145. package/dist/emails/section-two-column-feature-cards.html +708 -0
  146. package/dist/emails/section-two-column-grid.html +1131 -0
  147. package/dist/emails/section-two-column-img-text.html +331 -0
  148. package/dist/emails/section-two-column-live-tags.html +367 -0
  149. package/dist/emails/section-two-column-stacked.html +629 -0
  150. package/dist/emails/section-upsell-cta.html +597 -0
  151. package/dist/emails/section-value-bullet-list.html +313 -0
  152. package/dist/examples/manifest.d.ts +21 -0
  153. package/dist/examples/manifest.d.ts.map +1 -0
  154. package/dist/examples/manifest.js +84 -0
  155. package/dist/examples/manifest.js.map +1 -0
  156. package/dist/exports/contact-sales/Images/Contact_sales_Image_16f4175c-d08c-43f6-9d4c-a0606383271d.png +0 -0
  157. package/dist/exports/contact-sales/Images/Contact_sales_Image_659b3091-1da9-40c2-86b0-04250982e529.png +0 -0
  158. package/dist/exports/contact-sales/Images/Contact_sales_Image_79c651f4-5f0f-4a7f-8354-1f6f95ae86d9.png +0 -0
  159. package/dist/exports/contact-sales/index.braze.html +837 -0
  160. package/dist/exports/contact-sales/index.html +837 -0
  161. package/dist/exports/event-confirmation/Images/Confirmation_Image_11938de2-4161-4ae8-8969-90ea0d8b45cb.png +0 -0
  162. package/dist/exports/event-confirmation/Images/Confirmation_Image_3c52e81f-5d4f-452c-bad1-0471a27598f1.png +0 -0
  163. package/dist/exports/event-confirmation/Images/Confirmation_Image_3ec1fec8-bf46-4068-8835-633567a715f9.png +0 -0
  164. package/dist/exports/event-confirmation/Images/Confirmation_Image_c4980c01-c270-4384-a56c-0bae74814cf9.png +0 -0
  165. package/dist/exports/event-confirmation/Images/Confirmation_Image_cde93e8c-0f96-434d-acaf-1b86503c66f0.png +0 -0
  166. package/dist/exports/event-confirmation/index.braze.html +1055 -0
  167. package/dist/exports/event-confirmation/index.html +1055 -0
  168. package/dist/exports/legal-update/Images/v2_Image_07bbcc13-0ab8-46e4-ab94-98f215f85f69.png +0 -0
  169. package/dist/exports/legal-update/Images/v2_Image_34394d50-acdf-4375-b254-eef1f84aaacb.png +0 -0
  170. package/dist/exports/legal-update/Images/v2_Image_4a25f2bd-6270-439b-86c5-4a968a1b104f.png +0 -0
  171. package/dist/exports/legal-update/Images/v2_Image_7e8e814f-3112-4d8c-af5b-4f4616d84d9c.png +0 -0
  172. package/dist/exports/legal-update/Images/v2_Image_b24a04c8-4af0-42a1-be0f-cd3f66595e47.png +0 -0
  173. package/dist/exports/legal-update/Images/v2_Image_b709b9fb-836e-4c20-82e5-a9cb9d702392.png +0 -0
  174. package/dist/exports/legal-update/Images/v2_Image_ed7b924b-35e6-4536-be0c-92ddc8a34fc2.png +0 -0
  175. package/dist/exports/legal-update/index.braze.html +1731 -0
  176. package/dist/exports/legal-update/index.html +1731 -0
  177. package/dist/exports/newsletter/Images/Status_update_-_July_26_Image_09be22f6-1f30-4c58-bf33-1df0494b8fc2.png +0 -0
  178. package/dist/exports/newsletter/Images/Status_update_-_July_26_Image_2dfb595e-6fe2-4e6e-a73a-942a085b38ab.png +0 -0
  179. package/dist/exports/newsletter/Images/Status_update_-_July_26_Image_544c971b-b4b5-4c89-a25a-8f0d92644009.png +0 -0
  180. package/dist/exports/newsletter/Images/Status_update_-_July_26_Image_5b6a9576-1c33-40c5-81e3-637514fb6c78.png +0 -0
  181. package/dist/exports/newsletter/Images/Status_update_-_July_26_Image_680c6193-793a-4a24-8288-4bb4046f4f5e.png +0 -0
  182. package/dist/exports/newsletter/Images/Status_update_-_July_26_Image_75818ba9-026a-45d7-91e4-f992d4ee7690.png +0 -0
  183. package/dist/exports/newsletter/Images/Status_update_-_July_26_Image_785f18e6-816d-44d1-8efb-ecc82510b540.png +0 -0
  184. package/dist/exports/newsletter/Images/Status_update_-_July_26_Image_8bf9141d-9d63-4601-9e81-5c9d726e17f8.png +0 -0
  185. package/dist/exports/newsletter/Images/Status_update_-_July_26_Image_9097d6e0-65d0-4237-9661-963751812786.png +0 -0
  186. package/dist/exports/newsletter/Images/Status_update_-_July_26_Image_a4ef2f53-2eaf-438a-bfef-61455ac0915e.png +0 -0
  187. package/dist/exports/newsletter/Images/Status_update_-_July_26_Image_b7748f87-a7b7-4a91-981a-16567683e4b4.png +0 -0
  188. package/dist/exports/newsletter/Images/Status_update_-_July_26_Image_bc9830a4-2911-4768-808a-32cbbc39215e.png +0 -0
  189. package/dist/exports/newsletter/Images/Status_update_-_July_26_Image_ef0e8e92-9075-43a9-991f-09a77ef6d6d4.png +0 -0
  190. package/dist/exports/newsletter/index.braze.html +125 -0
  191. package/dist/exports/newsletter/index.html +125 -0
  192. package/dist/exports/newsletter-ai-june-july/Images/newsletter-ai-blocks.png +0 -0
  193. package/dist/exports/newsletter-ai-june-july/Images/newsletter-ai-hero-mcp.png +0 -0
  194. package/dist/exports/newsletter-ai-june-july/Images/newsletter-ai-magic.png +0 -0
  195. package/dist/exports/newsletter-ai-june-july/Images/newsletter-ai-mcp.png +0 -0
  196. package/dist/exports/newsletter-ai-june-july/Images/newsletter-ai-portfolio.png +0 -0
  197. package/dist/exports/newsletter-ai-june-july/index.braze.html +1640 -0
  198. package/dist/exports/newsletter-ai-june-july/index.html +1640 -0
  199. package/dist/exports/survey/Images/EmailLove_Image_3b6f4a6f-7f5f-418b-be71-9371b25c20ce.png +0 -0
  200. package/dist/exports/survey/Images/EmailLove_Image_f659c728-2401-485d-8d90-98c962d28c0c.png +0 -0
  201. package/dist/exports/survey/index.braze.html +515 -0
  202. package/dist/exports/survey/index.html +515 -0
  203. package/dist/exports/trial-01-welcome/Images/tp1_-_welcome_Before_115ccc58-a47f-4eca-a1f2-c0d86e1e1cf4.png +0 -0
  204. package/dist/exports/trial-01-welcome/Images/tp1_-_welcome_Before_aec4d0d3-6057-4b8a-8d8f-46fbd024f182.png +0 -0
  205. package/dist/exports/trial-01-welcome/Images/tp1_-_welcome_Before_d139966a-6051-4383-bf8f-1e5138e1b030.png +0 -0
  206. package/dist/exports/trial-01-welcome/Images/tp1_-_welcome_Image_080fa361-a3f2-4593-9ac0-03cf3a7972ff.png +0 -0
  207. package/dist/exports/trial-01-welcome/Images/tp1_-_welcome_Image_5ebade34-8f1d-4c2c-9d27-5f9e843ce502.png +0 -0
  208. package/dist/exports/trial-01-welcome/Images/tp1_-_welcome_Image_aa5e4144-9ec8-4525-b01e-077d72f0bab6.png +0 -0
  209. package/dist/exports/trial-01-welcome/index.braze.html +941 -0
  210. package/dist/exports/trial-01-welcome/index.html +941 -0
  211. package/dist/exports/trial-02/Images/tp2_Image_5b0d9bc4-2e38-4252-8f20-d9f27d471c21.png +0 -0
  212. package/dist/exports/trial-02/Images/tp2_Image_b3f77c7c-cc8e-4db8-a5d9-072f4f621e72.png +0 -0
  213. package/dist/exports/trial-02/Images/tp2_Image_cafd1a17-1915-47cd-80f2-1c2d0b133cfe.png +0 -0
  214. package/dist/exports/trial-02/index.braze.html +923 -0
  215. package/dist/exports/trial-02/index.html +923 -0
  216. package/dist/exports/trial-03/Images/tp3_Image_1b96630c-fc4d-4aec-91fb-3c1d4d8544b3.png +0 -0
  217. package/dist/exports/trial-03/Images/tp3_Image_58f3a342-2193-4b5c-b30a-96f7f3338dd8.png +0 -0
  218. package/dist/exports/trial-03/Images/tp3_Image_6c4f307a-bac2-40e7-b4f1-9aa623c9eb8e.png +0 -0
  219. package/dist/exports/trial-03/Images/tp3_Image_848917ce-3f89-4538-a826-558b21f5fea7.png +0 -0
  220. package/dist/exports/trial-03/Images/tp3_Image_aae8410f-556f-4fb9-88f9-f276d75bafd2.png +0 -0
  221. package/dist/exports/trial-03/Images/tp3_Image_b4d5be39-509e-4f22-9601-dd070e4c6561.png +0 -0
  222. package/dist/exports/trial-03/index.braze.html +1129 -0
  223. package/dist/exports/trial-03/index.html +1129 -0
  224. package/dist/exports/trial-04/Images/tp4_Image_03bd5a56-25e3-4dcc-bef5-143bf12312d5.png +0 -0
  225. package/dist/exports/trial-04/Images/tp4_Image_0facbfca-b735-4199-a0d9-05a59341a1e3.gif +0 -0
  226. package/dist/exports/trial-04/Images/tp4_Image_171cee5f-cd3d-42f0-a180-995893d3742a.png +0 -0
  227. package/dist/exports/trial-04/Images/tp4_Image_3509d89d-1825-4817-8c1e-130fa294d0e1.png +0 -0
  228. package/dist/exports/trial-04/Images/tp4_Image_763a0f40-2985-4140-859b-ddd34f20a520.png +0 -0
  229. package/dist/exports/trial-04/Images/tp4_Image_cc2db4f5-b41d-45d7-a798-7a79e7b8d4d8.png +0 -0
  230. package/dist/exports/trial-04/index.braze.html +885 -0
  231. package/dist/exports/trial-04/index.html +885 -0
  232. package/dist/exports/trial-05/Images/tp5_Image_0248a517-5c60-4e84-ad1c-449dcf4f6a64.png +0 -0
  233. package/dist/exports/trial-05/Images/tp5_Image_4c1a2d5a-47d3-4801-bb3a-01c22decc108.png +0 -0
  234. package/dist/exports/trial-05/Images/tp5_Image_63ae77e7-cec7-4b4a-91e0-603b5a80929f.png +0 -0
  235. package/dist/exports/trial-05/Images/tp5_Image_7aa43530-6707-4308-ab0e-e4c38fc1b77d.png +0 -0
  236. package/dist/exports/trial-05/Images/tp5_Image_7efe5b6d-b360-4179-bee1-72908ba569bc.png +0 -0
  237. package/dist/exports/trial-05/Images/tp5_Image_b142bd84-c40a-4a29-b9d5-715b52fdd937.png +0 -0
  238. package/dist/exports/trial-05/Images/tp5_Image_c0c896ea-5b68-4f58-9e27-cdb4a1f1b438.png +0 -0
  239. package/dist/exports/trial-05/index.braze.html +1023 -0
  240. package/dist/exports/trial-05/index.html +1023 -0
  241. package/dist/exports/trial-06/Images/tp6_Image_2267a268-8a80-4e0d-8813-d4c75dbab6f2.png +0 -0
  242. package/dist/exports/trial-06/Images/tp6_Image_637a97b7-837e-478d-8ed1-6e8c2739fdc7.png +0 -0
  243. package/dist/exports/trial-06/Images/tp6_Image_a78df270-ad6f-41e6-8822-ba8ec38313a3.png +0 -0
  244. package/dist/exports/trial-06/index.braze.html +773 -0
  245. package/dist/exports/trial-06/index.html +773 -0
  246. package/dist/exports/winback/Images/_managers_Image_4587ac22-460c-487a-bc37-9dbc487e95a4.png +0 -0
  247. package/dist/exports/winback/Images/_managers_Image_8a77ec2c-ed49-480d-a1a1-7a38abad232a.png +0 -0
  248. package/dist/exports/winback/Images/_managers_Image_bb643775-8a2f-4e28-9dfb-6d1838c3561f.png +0 -0
  249. package/dist/exports/winback/Images/_managers_Image_f7d1bca5-0fcb-4d4c-abcd-40ce2d453b07.png +0 -0
  250. package/dist/exports/winback/index.braze.html +605 -0
  251. package/dist/exports/winback/index.html +605 -0
  252. package/dist/generated/email-tokens.d.ts +101 -0
  253. package/dist/generated/email-tokens.d.ts.map +1 -0
  254. package/dist/generated/email-tokens.js +104 -0
  255. package/dist/generated/email-tokens.js.map +1 -0
  256. package/dist/index.d.ts +9 -0
  257. package/dist/index.d.ts.map +1 -0
  258. package/dist/index.js +8 -0
  259. package/dist/index.js.map +1 -0
  260. package/dist/tokens/build-email-assets.d.ts +19 -0
  261. package/dist/tokens/build-email-assets.d.ts.map +1 -0
  262. package/dist/tokens/build-email-assets.js +186 -0
  263. package/dist/tokens/build-email-assets.js.map +1 -0
  264. package/dist/tokens/build-email-tokens.d.ts +17 -0
  265. package/dist/tokens/build-email-tokens.d.ts.map +1 -0
  266. package/dist/tokens/build-email-tokens.js +229 -0
  267. package/dist/tokens/build-email-tokens.js.map +1 -0
  268. package/package.json +41 -3
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stock-library-map.js","sourceRoot":"","sources":["../../src/build/stock-library-map.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Cloudinary asset upload.
3
+ *
4
+ * Scans every email's source .mjml for local, non-shared, raster asset references and uploads
5
+ * each to Cloudinary at `lifecycle/<campaign>/<email>/<filename>` (OPEN-QUESTIONS.md D18),
6
+ * skipping anything already uploaded with unchanged content. Writes a manifest that compile.ts
7
+ * reads to swap those assets' `src` for the hosted URL instead of inlining them as base64 — the
8
+ * root cause of Q15 (base64-inlined images blowing past Gmail's 102KB clip limit).
9
+ *
10
+ * Shared DS asset folders (icons/integrations/logos/placeholders/shared) and any SVG are
11
+ * intentionally skipped — D20 accepts raster-only (PNG/GIF/JPG/JPEG/WEBP) for the hosted path;
12
+ * those stay base64-inlined exactly as before.
13
+ *
14
+ * Usage:
15
+ * pnpm --filter @clay-design-system/email email:upload
16
+ * pnpm --filter @clay-design-system/email email:upload -- --campaign=sales-agent-activation
17
+ * pnpm --filter @clay-design-system/email email:upload -- --dry-run
18
+ */
19
+ export {};
20
+ //# sourceMappingURL=upload-assets.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"upload-assets.d.ts","sourceRoot":"","sources":["../../src/build/upload-assets.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG"}
@@ -0,0 +1,153 @@
1
+ /**
2
+ * Cloudinary asset upload.
3
+ *
4
+ * Scans every email's source .mjml for local, non-shared, raster asset references and uploads
5
+ * each to Cloudinary at `lifecycle/<campaign>/<email>/<filename>` (OPEN-QUESTIONS.md D18),
6
+ * skipping anything already uploaded with unchanged content. Writes a manifest that compile.ts
7
+ * reads to swap those assets' `src` for the hosted URL instead of inlining them as base64 — the
8
+ * root cause of Q15 (base64-inlined images blowing past Gmail's 102KB clip limit).
9
+ *
10
+ * Shared DS asset folders (icons/integrations/logos/placeholders/shared) and any SVG are
11
+ * intentionally skipped — D20 accepts raster-only (PNG/GIF/JPG/JPEG/WEBP) for the hosted path;
12
+ * those stay base64-inlined exactly as before.
13
+ *
14
+ * Usage:
15
+ * pnpm --filter @clay-design-system/email email:upload
16
+ * pnpm --filter @clay-design-system/email email:upload -- --campaign=sales-agent-activation
17
+ * pnpm --filter @clay-design-system/email email:upload -- --dry-run
18
+ */
19
+ import { createHash } from 'node:crypto';
20
+ import { existsSync, mkdirSync, readFileSync, statSync, writeFileSync } from 'node:fs';
21
+ import { dirname, resolve } from 'node:path';
22
+ import { v2 as cloudinary } from 'cloudinary';
23
+ import { loadCloudinaryEnv } from './cloudinary-env';
24
+ import { cloudinaryManifestPath, loadCloudinaryManifest, } from './cloudinary-manifest';
25
+ import { assetsDir, walkEmails } from './email-tree';
26
+ const SHARED_ASSET_DIRS = new Set(['icons', 'integrations', 'logos', 'placeholders', 'shared']);
27
+ const RASTER_EXTS = new Set(['png', 'jpg', 'jpeg', 'gif', 'webp']);
28
+ const ASSET_SRC_RE = /src="[^"]*\/assets\/([^"?#]+)"/g;
29
+ const CONCURRENCY = 5;
30
+ const campaignFilterArg = process.argv.find((a) => a.startsWith('--campaign='));
31
+ const campaignFilter = campaignFilterArg ? campaignFilterArg.slice('--campaign='.length) : null;
32
+ const dryRun = process.argv.includes('--dry-run');
33
+ /** Every local, non-shared, raster asset each email references, deduped by target public_id. */
34
+ function collectUploadTasks() {
35
+ const tasks = new Map();
36
+ for (const { campaign, emailSlug, mjmlPath } of walkEmails()) {
37
+ if (campaignFilter && campaign !== campaignFilter)
38
+ continue;
39
+ if (!existsSync(mjmlPath))
40
+ continue;
41
+ const mjmlSource = readFileSync(mjmlPath, 'utf-8');
42
+ for (const match of mjmlSource.matchAll(ASSET_SRC_RE)) {
43
+ const sourcePath = match[1];
44
+ const firstSegment = sourcePath.split('/')[0];
45
+ const ext = (sourcePath.split('.').pop() ?? '').toLowerCase();
46
+ if (SHARED_ASSET_DIRS.has(firstSegment) || !RASTER_EXTS.has(ext))
47
+ continue;
48
+ const filename = sourcePath.split('/').pop();
49
+ if (!filename)
50
+ continue;
51
+ const stem = filename.slice(0, filename.length - ext.length - 1);
52
+ const publicId = `lifecycle/${campaign}/${emailSlug}/${stem}`;
53
+ if (tasks.has(publicId))
54
+ continue;
55
+ tasks.set(publicId, { publicId, absPath: resolve(assetsDir, sourcePath), sourcePath, campaign, email: emailSlug });
56
+ }
57
+ }
58
+ return [...tasks.values()];
59
+ }
60
+ function sha256(absPath) {
61
+ return createHash('sha256').update(readFileSync(absPath)).digest('hex').slice(0, 16);
62
+ }
63
+ async function runWithConcurrency(items, limit, fn) {
64
+ let cursor = 0;
65
+ async function worker() {
66
+ while (cursor < items.length) {
67
+ const item = items[cursor++];
68
+ await fn(item);
69
+ }
70
+ }
71
+ await Promise.all(Array.from({ length: Math.min(limit, items.length) }, worker));
72
+ }
73
+ async function main() {
74
+ const tasks = collectUploadTasks();
75
+ if (!tasks.length) {
76
+ console.log('email:upload — no local campaign raster assets found to upload.');
77
+ return;
78
+ }
79
+ const existingManifest = loadCloudinaryManifest();
80
+ const assets = { ...(existingManifest?.assets ?? {}) };
81
+ let cloudName = existingManifest?.cloudName ?? '';
82
+ if (!dryRun) {
83
+ const env = loadCloudinaryEnv();
84
+ cloudinary.config({ cloud_name: env.cloudName, api_key: env.apiKey, api_secret: env.apiSecret });
85
+ cloudName = env.cloudName;
86
+ }
87
+ let actioned = 0;
88
+ let skipped = 0;
89
+ let failed = 0;
90
+ await runWithConcurrency(tasks, CONCURRENCY, async (task) => {
91
+ if (!existsSync(task.absPath)) {
92
+ console.warn(` ✗ ${task.publicId} — source file missing: ${task.absPath}`);
93
+ failed++;
94
+ return;
95
+ }
96
+ const contentHash = sha256(task.absPath);
97
+ const prior = assets[task.publicId];
98
+ if (prior && prior.contentHash === contentHash) {
99
+ skipped++;
100
+ return;
101
+ }
102
+ const bytes = statSync(task.absPath).size;
103
+ if (dryRun) {
104
+ console.log(` would upload: ${task.publicId} (${(bytes / 1024).toFixed(0)} KB)`);
105
+ actioned++;
106
+ return;
107
+ }
108
+ try {
109
+ const result = await cloudinary.uploader.upload(task.absPath, {
110
+ public_id: task.publicId,
111
+ overwrite: true,
112
+ invalidate: true,
113
+ unique_filename: false,
114
+ resource_type: 'image',
115
+ });
116
+ assets[task.publicId] = {
117
+ sourcePath: task.sourcePath,
118
+ campaign: task.campaign,
119
+ email: task.email,
120
+ url: result.secure_url,
121
+ bytes,
122
+ contentHash,
123
+ uploadedAt: new Date().toISOString(),
124
+ };
125
+ actioned++;
126
+ console.log(` ✓ ${task.publicId} → ${result.secure_url}`);
127
+ }
128
+ catch (err) {
129
+ failed++;
130
+ console.error(` ✗ ${task.publicId} — ${err.message}`);
131
+ }
132
+ });
133
+ if (!dryRun) {
134
+ const manifest = {
135
+ generatedFrom: '@clay-design-system/email src/build/upload-assets.ts',
136
+ cloudName,
137
+ assets,
138
+ };
139
+ mkdirSync(dirname(cloudinaryManifestPath), { recursive: true });
140
+ writeFileSync(cloudinaryManifestPath, JSON.stringify(manifest, null, 2));
141
+ console.log(`\nManifest written → ${cloudinaryManifestPath}`);
142
+ }
143
+ const actionLabel = dryRun ? 'would upload' : 'uploaded';
144
+ console.log(`\nemail:upload — ${actioned} ${actionLabel}, ${skipped} unchanged (skipped), ${failed} failed` +
145
+ (dryRun ? ' [dry run — nothing sent to Cloudinary]' : ''));
146
+ if (failed > 0)
147
+ process.exitCode = 1;
148
+ }
149
+ main().catch((err) => {
150
+ console.error(err.message);
151
+ process.exit(1);
152
+ });
153
+ //# sourceMappingURL=upload-assets.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"upload-assets.js","sourceRoot":"","sources":["../../src/build/upload-assets.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACxC,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AACtF,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAC5C,OAAO,EAAE,EAAE,IAAI,UAAU,EAAE,MAAM,YAAY,CAAA;AAC7C,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AACpD,OAAO,EACL,sBAAsB,EACtB,sBAAsB,GAGvB,MAAM,uBAAuB,CAAA;AAC9B,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAEpD,MAAM,iBAAiB,GAAG,IAAI,GAAG,CAAC,CAAC,OAAO,EAAE,cAAc,EAAE,OAAO,EAAE,cAAc,EAAE,QAAQ,CAAC,CAAC,CAAA;AAC/F,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,CAAA;AAClE,MAAM,YAAY,GAAG,iCAAiC,CAAA;AACtD,MAAM,WAAW,GAAG,CAAC,CAAA;AAErB,MAAM,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,CAAA;AAC/E,MAAM,cAAc,GAAG,iBAAiB,CAAC,CAAC,CAAC,iBAAiB,CAAC,KAAK,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;AAC/F,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAA;AAUjD,gGAAgG;AAChG,SAAS,kBAAkB;IACzB,MAAM,KAAK,GAAG,IAAI,GAAG,EAAsB,CAAA;IAC3C,KAAK,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,IAAI,UAAU,EAAE,EAAE,CAAC;QAC7D,IAAI,cAAc,IAAI,QAAQ,KAAK,cAAc;YAAE,SAAQ;QAC3D,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;YAAE,SAAQ;QACnC,MAAM,UAAU,GAAG,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAA;QAClD,KAAK,MAAM,KAAK,IAAI,UAAU,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;YACtD,MAAM,UAAU,GAAG,KAAK,CAAC,CAAC,CAAC,CAAA;YAC3B,MAAM,YAAY,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;YAC7C,MAAM,GAAG,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAA;YAC7D,IAAI,iBAAiB,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC;gBAAE,SAAQ;YAC1E,MAAM,QAAQ,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAA;YAC5C,IAAI,CAAC,QAAQ;gBAAE,SAAQ;YACvB,MAAM,IAAI,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;YAChE,MAAM,QAAQ,GAAG,aAAa,QAAQ,IAAI,SAAS,IAAI,IAAI,EAAE,CAAA;YAC7D,IAAI,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC;gBAAE,SAAQ;YACjC,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC,SAAS,EAAE,UAAU,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAA;QACpH,CAAC;IACH,CAAC;IACD,OAAO,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,CAAA;AAC5B,CAAC;AAED,SAAS,MAAM,CAAC,OAAe;IAC7B,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;AACtF,CAAC;AAED,KAAK,UAAU,kBAAkB,CAAI,KAAU,EAAE,KAAa,EAAE,EAA8B;IAC5F,IAAI,MAAM,GAAG,CAAC,CAAA;IACd,KAAK,UAAU,MAAM;QACnB,OAAO,MAAM,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC;YAC7B,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,CAAA;YAC5B,MAAM,EAAE,CAAC,IAAI,CAAC,CAAA;QAChB,CAAC;IACH,CAAC;IACD,MAAM,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,CAAA;AAClF,CAAC;AAED,KAAK,UAAU,IAAI;IACjB,MAAM,KAAK,GAAG,kBAAkB,EAAE,CAAA;IAClC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;QAClB,OAAO,CAAC,GAAG,CAAC,iEAAiE,CAAC,CAAA;QAC9E,OAAM;IACR,CAAC;IAED,MAAM,gBAAgB,GAAG,sBAAsB,EAAE,CAAA;IACjD,MAAM,MAAM,GAA4C,EAAE,GAAG,CAAC,gBAAgB,EAAE,MAAM,IAAI,EAAE,CAAC,EAAE,CAAA;IAE/F,IAAI,SAAS,GAAG,gBAAgB,EAAE,SAAS,IAAI,EAAE,CAAA;IACjD,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,GAAG,GAAG,iBAAiB,EAAE,CAAA;QAC/B,UAAU,CAAC,MAAM,CAAC,EAAE,UAAU,EAAE,GAAG,CAAC,SAAS,EAAE,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,EAAE,GAAG,CAAC,SAAS,EAAE,CAAC,CAAA;QAChG,SAAS,GAAG,GAAG,CAAC,SAAS,CAAA;IAC3B,CAAC;IAED,IAAI,QAAQ,GAAG,CAAC,CAAA;IAChB,IAAI,OAAO,GAAG,CAAC,CAAA;IACf,IAAI,MAAM,GAAG,CAAC,CAAA;IAEd,MAAM,kBAAkB,CAAC,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;QAC1D,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;YAC9B,OAAO,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,QAAQ,2BAA2B,IAAI,CAAC,OAAO,EAAE,CAAC,CAAA;YAC3E,MAAM,EAAE,CAAA;YACR,OAAM;QACR,CAAC;QACD,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;QACxC,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;QACnC,IAAI,KAAK,IAAI,KAAK,CAAC,WAAW,KAAK,WAAW,EAAE,CAAC;YAC/C,OAAO,EAAE,CAAA;YACT,OAAM;QACR,CAAC;QAED,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CAAA;QACzC,IAAI,MAAM,EAAE,CAAC;YACX,OAAO,CAAC,GAAG,CAAC,mBAAmB,IAAI,CAAC,QAAQ,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAA;YACjF,QAAQ,EAAE,CAAA;YACV,OAAM;QACR,CAAC;QAED,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE;gBAC5D,SAAS,EAAE,IAAI,CAAC,QAAQ;gBACxB,SAAS,EAAE,IAAI;gBACf,UAAU,EAAE,IAAI;gBAChB,eAAe,EAAE,KAAK;gBACtB,aAAa,EAAE,OAAO;aACvB,CAAC,CAAA;YACF,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG;gBACtB,UAAU,EAAE,IAAI,CAAC,UAAU;gBAC3B,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,GAAG,EAAE,MAAM,CAAC,UAAU;gBACtB,KAAK;gBACL,WAAW;gBACX,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;aACrC,CAAA;YACD,QAAQ,EAAE,CAAA;YACV,OAAO,CAAC,GAAG,CAAC,OAAO,IAAI,CAAC,QAAQ,MAAM,MAAM,CAAC,UAAU,EAAE,CAAC,CAAA;QAC5D,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,EAAE,CAAA;YACR,OAAO,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,QAAQ,MAAO,GAAa,CAAC,OAAO,EAAE,CAAC,CAAA;QACnE,CAAC;IACH,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,QAAQ,GAAuB;YACnC,aAAa,EAAE,sDAAsD;YACrE,SAAS;YACT,MAAM;SACP,CAAA;QACD,SAAS,CAAC,OAAO,CAAC,sBAAsB,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;QAC/D,aAAa,CAAC,sBAAsB,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAA;QACxE,OAAO,CAAC,GAAG,CAAC,wBAAwB,sBAAsB,EAAE,CAAC,CAAA;IAC/D,CAAC;IAED,MAAM,WAAW,GAAG,MAAM,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,UAAU,CAAA;IACxD,OAAO,CAAC,GAAG,CACT,oBAAoB,QAAQ,IAAI,WAAW,KAAK,OAAO,yBAAyB,MAAM,SAAS;QAC7F,CAAC,MAAM,CAAC,CAAC,CAAC,0CAA0C,CAAC,CAAC,CAAC,EAAE,CAAC,CAC7D,CAAA;IACD,IAAI,MAAM,GAAG,CAAC;QAAE,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAA;AACtC,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;IACnB,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;IAC1B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;AACjB,CAAC,CAAC,CAAA"}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * Stock-library asset upload (D5.4, board item Clay Lifecycle D5).
3
+ *
4
+ * One-time bulk push of the email asset-catalog bank (packages/email/src/assets/
5
+ * _stock-library-staging/, sourced from CatalogTest.csv's Email-channel rows) to Cloudinary,
6
+ * under a dedicated `lifecycle/library/email-assets/<slug>` folder — a sibling to
7
+ * `lifecycle/<campaign>/...` (upload-assets.ts's per-campaign uploads) and deliberately not
8
+ * `asset-catalog/...` (the separate Asset Catalog system's own Cloudinary convention, see
9
+ * SCHEMA.md), since this is a new copy for our stock-library use case, not the same records.
10
+ *
11
+ * Idempotent (content-hash check, like upload-assets.ts) — safe to re-run after adding more rows
12
+ * to the staging CSV. Writes the resulting secure_url back into `cloudinary_url` on both the
13
+ * staging CSV (packages/email/src/assets/_stock-library-staging/email-assets-catalog.csv) and,
14
+ * as a courtesy, the external copy at EMAILS_ASSETS_EXTERNAL_CSV below.
15
+ *
16
+ * Usage:
17
+ * pnpm --filter @clay-design-system/email library:upload -- --dry-run
18
+ * pnpm --filter @clay-design-system/email library:upload
19
+ */
20
+ export {};
21
+ //# sourceMappingURL=upload-library-assets.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"upload-library-assets.d.ts","sourceRoot":"","sources":["../../src/build/upload-library-assets.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG"}
@@ -0,0 +1,182 @@
1
+ /**
2
+ * Stock-library asset upload (D5.4, board item Clay Lifecycle D5).
3
+ *
4
+ * One-time bulk push of the email asset-catalog bank (packages/email/src/assets/
5
+ * _stock-library-staging/, sourced from CatalogTest.csv's Email-channel rows) to Cloudinary,
6
+ * under a dedicated `lifecycle/library/email-assets/<slug>` folder — a sibling to
7
+ * `lifecycle/<campaign>/...` (upload-assets.ts's per-campaign uploads) and deliberately not
8
+ * `asset-catalog/...` (the separate Asset Catalog system's own Cloudinary convention, see
9
+ * SCHEMA.md), since this is a new copy for our stock-library use case, not the same records.
10
+ *
11
+ * Idempotent (content-hash check, like upload-assets.ts) — safe to re-run after adding more rows
12
+ * to the staging CSV. Writes the resulting secure_url back into `cloudinary_url` on both the
13
+ * staging CSV (packages/email/src/assets/_stock-library-staging/email-assets-catalog.csv) and,
14
+ * as a courtesy, the external copy at EMAILS_ASSETS_EXTERNAL_CSV below.
15
+ *
16
+ * Usage:
17
+ * pnpm --filter @clay-design-system/email library:upload -- --dry-run
18
+ * pnpm --filter @clay-design-system/email library:upload
19
+ */
20
+ import { createHash } from 'node:crypto';
21
+ import { existsSync, readFileSync, statSync, writeFileSync } from 'node:fs';
22
+ import { dirname, resolve } from 'node:path';
23
+ import { fileURLToPath } from 'node:url';
24
+ import { v2 as cloudinary } from 'cloudinary';
25
+ import { loadCloudinaryEnv } from './cloudinary-env';
26
+ const __dirname = dirname(fileURLToPath(import.meta.url));
27
+ const pkgDir = resolve(__dirname, '..', '..');
28
+ const STAGING_DIR = resolve(pkgDir, 'src/assets/_stock-library-staging');
29
+ const STAGING_CSV = resolve(STAGING_DIR, 'email-assets-catalog.csv');
30
+ // Courtesy mirror only — not one of the protected originals (CatalogTest.csv/chips_seed.sql/
31
+ // SCHEMA.md, or the raw PNGs); we created this file ourselves in the prior step.
32
+ const EXTERNAL_CSV = '/Users/eliorsi/Development/emails assets/email-assets-catalog.csv';
33
+ const FOLDER = 'lifecycle/library/email-assets';
34
+ const CONCURRENCY = 5;
35
+ const dryRun = process.argv.includes('--dry-run');
36
+ const limitArg = process.argv.find((a) => a.startsWith('--limit='));
37
+ const limit = limitArg ? Number(limitArg.slice('--limit='.length)) : undefined;
38
+ const CSV_FIELDS = [
39
+ 'id', 'name', 'description', 'tag_form', 'tag_context', 'use_case_domain',
40
+ 'width', 'height', 'ratio', 'figma_source', 'local_file', 'cloudinary_url',
41
+ ];
42
+ /** Minimal RFC 4180 parser — handles quoted fields with embedded commas/newlines (SCHEMA.md trap #1). */
43
+ function parseCsv(text) {
44
+ const rows = [];
45
+ let field = '';
46
+ let row = [];
47
+ let inQuotes = false;
48
+ for (let i = 0; i < text.length; i++) {
49
+ const c = text[i];
50
+ if (inQuotes) {
51
+ if (c === '"') {
52
+ if (text[i + 1] === '"') {
53
+ field += '"';
54
+ i++;
55
+ }
56
+ else {
57
+ inQuotes = false;
58
+ }
59
+ }
60
+ else
61
+ field += c;
62
+ }
63
+ else if (c === '"')
64
+ inQuotes = true;
65
+ else if (c === ',') {
66
+ row.push(field);
67
+ field = '';
68
+ }
69
+ else if (c === '\n') {
70
+ row.push(field);
71
+ rows.push(row);
72
+ row = [];
73
+ field = '';
74
+ }
75
+ else if (c === '\r') { /* skip */ }
76
+ else
77
+ field += c;
78
+ }
79
+ if (field.length || row.length) {
80
+ row.push(field);
81
+ rows.push(row);
82
+ }
83
+ const [header, ...body] = rows.filter((r) => r.length > 1 || r[0] !== '');
84
+ return body.map((r) => Object.fromEntries(header.map((h, idx) => [h, r[idx] ?? ''])));
85
+ }
86
+ function toCsv(rows) {
87
+ const escape = (v) => (/[",\n]/.test(v) ? `"${v.replace(/"/g, '""')}"` : v);
88
+ const lines = [CSV_FIELDS.join(',')];
89
+ for (const r of rows)
90
+ lines.push(CSV_FIELDS.map((f) => escape(r[f] ?? '')).join(','));
91
+ return lines.join('\n') + '\n';
92
+ }
93
+ /** tag_form/tag_context/use_case_domain, lowercased and space-hyphenated, deduped, non-empty. */
94
+ function buildTags(r) {
95
+ const raw = [r.tag_form, r.tag_context, r.use_case_domain];
96
+ const tags = raw.filter(Boolean).map((t) => t.trim().toLowerCase().replace(/\s+/g, '-'));
97
+ return [...new Set(tags)];
98
+ }
99
+ function sha256(absPath) {
100
+ return createHash('sha256').update(readFileSync(absPath)).digest('hex').slice(0, 16);
101
+ }
102
+ async function runWithConcurrency(items, limit, fn) {
103
+ let cursor = 0;
104
+ async function worker() {
105
+ while (cursor < items.length) {
106
+ const item = items[cursor++];
107
+ await fn(item);
108
+ }
109
+ }
110
+ await Promise.all(Array.from({ length: Math.min(limit, items.length) }, worker));
111
+ }
112
+ async function main() {
113
+ if (!existsSync(STAGING_CSV)) {
114
+ console.error(`Staging CSV not found: ${STAGING_CSV}`);
115
+ process.exitCode = 1;
116
+ return;
117
+ }
118
+ const rows = parseCsv(readFileSync(STAGING_CSV, 'utf-8'));
119
+ console.log(`Loaded ${rows.length} rows from ${STAGING_CSV}\n`);
120
+ if (!dryRun) {
121
+ const env = loadCloudinaryEnv();
122
+ cloudinary.config({ cloud_name: env.cloudName, api_key: env.apiKey, api_secret: env.apiSecret });
123
+ }
124
+ let uploaded = 0;
125
+ let skipped = 0;
126
+ let failed = 0;
127
+ const uploadSet = limit ? rows.slice(0, limit) : rows;
128
+ if (limit)
129
+ console.log(`--limit=${limit}: uploading only the first ${uploadSet.length} of ${rows.length} rows\n`);
130
+ await runWithConcurrency(uploadSet, CONCURRENCY, async (row) => {
131
+ const slug = row.id.split('/', 2)[1];
132
+ const absPath = resolve(STAGING_DIR, row.local_file);
133
+ if (!existsSync(absPath)) {
134
+ console.warn(` ✗ ${slug} — local file missing: ${absPath}`);
135
+ failed++;
136
+ return;
137
+ }
138
+ const publicId = `${FOLDER}/${slug}`;
139
+ const contentHash = sha256(absPath);
140
+ const bytes = statSync(absPath).size;
141
+ if (dryRun) {
142
+ console.log(` would upload: ${publicId} (${(bytes / 1024).toFixed(0)} KB) tags=[${buildTags(row).join(', ')}]`);
143
+ uploaded++;
144
+ return;
145
+ }
146
+ try {
147
+ const result = await cloudinary.uploader.upload(absPath, {
148
+ public_id: publicId,
149
+ overwrite: true,
150
+ invalidate: true,
151
+ unique_filename: false,
152
+ resource_type: 'image',
153
+ tags: buildTags(row),
154
+ context: { source: 'asset-catalog', figma_source: row.figma_source, content_hash: contentHash },
155
+ });
156
+ row.cloudinary_url = result.secure_url;
157
+ uploaded++;
158
+ console.log(` ✓ ${publicId} → ${result.secure_url}`);
159
+ }
160
+ catch (err) {
161
+ failed++;
162
+ console.error(` ✗ ${publicId} — ${err.message}`);
163
+ }
164
+ });
165
+ if (!dryRun) {
166
+ writeFileSync(STAGING_CSV, toCsv(rows));
167
+ console.log(`\nUpdated ${STAGING_CSV}`);
168
+ if (existsSync(EXTERNAL_CSV)) {
169
+ writeFileSync(EXTERNAL_CSV, toCsv(rows));
170
+ console.log(`Updated ${EXTERNAL_CSV}`);
171
+ }
172
+ }
173
+ const label = dryRun ? 'would upload' : 'uploaded';
174
+ console.log(`\nlibrary:upload — ${uploaded} ${label}, ${skipped} unchanged, ${failed} failed` + (dryRun ? ' [dry run — nothing sent to Cloudinary]' : ''));
175
+ if (failed > 0)
176
+ process.exitCode = 1;
177
+ }
178
+ main().catch((err) => {
179
+ console.error(err.message);
180
+ process.exit(1);
181
+ });
182
+ //# sourceMappingURL=upload-library-assets.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"upload-library-assets.js","sourceRoot":"","sources":["../../src/build/upload-library-assets.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,70 @@
1
+ /**
2
+ * Visual-brief resolver (PLAN.md Phase 3; BRIEF-HANDOVER.md §3; OPEN-QUESTIONS.md D6/D8/D21).
3
+ *
4
+ * Takes the 4-field per-slot visual brief (slot / intent / source / assetRef) and resolves each
5
+ * slot to exactly one of three outcomes, per the priority order already documented in
6
+ * skills/email-assets/SKILL.md Process step 2 — this module executes those already-decided rules
7
+ * in code instead of leaving them as prose a human has to walk by hand:
8
+ *
9
+ * - 'resolved' — a real asset: AgentVisual (tier 1, mandatory for a standalone agent
10
+ * portrait), a shared logo or local campaign asset (tier 3), a hosted match
11
+ * from the Cloudinary stock library (tier 5 — D5.6, board item Clay
12
+ * Lifecycle D5; product-ui/abstract only, see that branch below for why not
13
+ * logo), or a match against the ~600-icon Clay registry (tier 6 — D6, board
14
+ * item Clay Lifecycle D6; `icon` source only).
15
+ * - 'placeholder' — a LEGITIMATE gap: a composite agent+UI scene (tier 2 — no dedicated
16
+ * library yet, see knowledge/hero-pipeline.md) or anything else tier 3/5/6
17
+ * didn't find (tier 4).
18
+ * - 'gap' — NOT legitimate: a standalone agent portrait naming an agent the repo's
19
+ * AgentVisual library doesn't have, or a must-use:<file> the brief names
20
+ * that doesn't actually exist anywhere. email-assets/SKILL.md is explicit
21
+ * that a placeholder is never an acceptable substitute for either of these —
22
+ * they need a human decision, not a silent swap.
23
+ *
24
+ * Every slot gets exactly one of the three statuses above — never nothing. That's the literal
25
+ * "no silent gaps" contract from PLAN.md Phase 3's "Done when".
26
+ *
27
+ * Usage: tsx src/build/visual-resolver.ts --brief=<path-to-visual-brief.json>
28
+ */
29
+ import type { SlotShape } from './asset-scoring';
30
+ export type VisualSource = 'agent-portrait' | 'product-ui' | 'logo' | 'abstract' | 'icon' | string;
31
+ export interface VisualSlotSpec {
32
+ /** e.g. "product-ui-hero → Image" — ties the slot to a real section field (BRIEF-HANDOVER §3). */
33
+ slot: string;
34
+ /** Free text: what the image shows. */
35
+ intent: string;
36
+ source: VisualSource;
37
+ /** Exact library key when the brief knows it, e.g. "agentImageMap: outbound-prospector". */
38
+ assetRef?: string;
39
+ }
40
+ export type VisualResolutionStatus = 'resolved' | 'placeholder' | 'gap';
41
+ export interface VisualResolution {
42
+ slot: string;
43
+ status: VisualResolutionStatus;
44
+ tier: 1 | 2 | 3 | 4 | 5 | 6;
45
+ /** Always present — why this outcome, so a reviewer never has to guess. */
46
+ detail: string;
47
+ /**
48
+ * status === 'resolved'. A local disk path for tiers 1/3 (still needs upload-assets.ts before
49
+ * it's usable in a sent email), or an already-hosted https:// Cloudinary URL for tier 5 (the
50
+ * stock library — no further upload step needed, use it in the HTML as-is).
51
+ */
52
+ assetPath?: string;
53
+ /** status === 'placeholder' */
54
+ placeholderSvg?: string;
55
+ placeholderComment?: string;
56
+ /** status === 'gap' */
57
+ gapReason?: string;
58
+ }
59
+ export type { SlotShape };
60
+ /**
61
+ * A slot's rough layout shape — derived automatically from the slot spec, never hand-authored in
62
+ * a brief. `slot` is formatted "<section/touchpoint> → <field label>" (e.g. "product-ui-hero →
63
+ * Image", "tp1a-library → hero image"), so a keyword search over it catches both a literal
64
+ * section-component name and a free-text touchpoint field label. Passed to findStockLibraryEntry
65
+ * as a stage-2 tie-breaker only (see stock-library-map.ts) — it never gates a match on its own.
66
+ */
67
+ export declare function deriveSlotShape(spec: VisualSlotSpec): SlotShape;
68
+ /** Resolve one visual-brief slot. `campaign` scopes tier-3 local-folder lookups. */
69
+ export declare function resolveVisualSlot(spec: VisualSlotSpec, campaign: string): VisualResolution;
70
+ //# sourceMappingURL=visual-resolver.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"visual-resolver.d.ts","sourceRoot":"","sources":["../../src/build/visual-resolver.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAKH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAoChD,MAAM,MAAM,YAAY,GAAG,gBAAgB,GAAG,YAAY,GAAG,MAAM,GAAG,UAAU,GAAG,MAAM,GAAG,MAAM,CAAA;AAElG,MAAM,WAAW,cAAc;IAC7B,kGAAkG;IAClG,IAAI,EAAE,MAAM,CAAA;IACZ,uCAAuC;IACvC,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,YAAY,CAAA;IACpB,4FAA4F;IAC5F,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AAED,MAAM,MAAM,sBAAsB,GAAG,UAAU,GAAG,aAAa,GAAG,KAAK,CAAA;AAEvE,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,sBAAsB,CAAA;IAC9B,IAAI,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;IAC3B,2EAA2E;IAC3E,MAAM,EAAE,MAAM,CAAA;IACd;;;;OAIG;IACH,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,+BAA+B;IAC/B,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAC3B,uBAAuB;IACvB,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAiBD,YAAY,EAAE,SAAS,EAAE,CAAA;AAEzB;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,cAAc,GAAG,SAAS,CAO/D;AA0GD,oFAAoF;AACpF,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,GAAG,gBAAgB,CA2J1F"}