@hartl-services/medusa-base 2.5.0 → 2.6.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 (287) hide show
  1. package/.medusa/server/src/admin/admin-components/features/plugin-features/components/ImageSettingInput.js +48 -0
  2. package/{dist → .medusa/server/src/admin}/admin-components/features/plugin-features/components/PluginActionsSection.js +3 -2
  3. package/.medusa/server/src/admin/admin-components/features/plugin-features/components/PluginFeaturesSettingsPage.js +17 -0
  4. package/.medusa/server/src/admin/admin-components/features/plugin-features/components/PluginPageShell.js +20 -0
  5. package/{dist → .medusa/server/src/admin}/admin-components/features/plugin-features/components/PluginSettingsForm.js +16 -3
  6. package/{dist → .medusa/server/src/admin}/admin-components/features/plugin-features/hooks/usePluginFeatureEnabled.d.ts +5 -1
  7. package/{dist → .medusa/server/src/admin}/admin-components/features/plugin-features/hooks/usePluginFeatures.d.ts +20 -4
  8. package/{dist → .medusa/server/src/admin}/admin-components/features/plugin-features/hooks/usePluginFeatures.js +1 -1
  9. package/{dist → .medusa/server/src/admin}/admin-components/features/plugin-features/hooks/usePluginSettingsForm.d.ts +5 -1
  10. package/{dist → .medusa/server/src/admin}/admin-components/features/plugin-features/lib/action-runs.d.ts +1 -1
  11. package/{dist → .medusa/server/src/admin}/admin-components/features/plugin-features/lib/action-runs.js +3 -2
  12. package/{dist → .medusa/server/src/admin}/admin-components/features/plugin-features/lib/plugin-features-admin-client.d.ts +20 -4
  13. package/{dist → .medusa/server/src/admin}/admin-components/features/plugin-features/lib/plugin-features-admin-client.js +1 -1
  14. package/{dist → .medusa/server/src/admin}/admin-components/features/plugin-features/lib/settings-draft.d.ts +17 -2
  15. package/{dist → .medusa/server/src/admin}/admin-components/features/plugin-features/lib/settings-draft.js +33 -1
  16. package/{dist → .medusa/server/src/admin}/admin-components/i18n/texts.d.ts +3 -0
  17. package/{dist → .medusa/server/src/admin}/admin-components/i18n/texts.js +3 -0
  18. package/.medusa/server/src/admin/admin-components/index.d.ts +36 -0
  19. package/.medusa/server/src/admin/admin-components/index.js +37 -0
  20. package/.medusa/server/src/admin/admin-components/shared/lib/date-input.d.ts +8 -0
  21. package/.medusa/server/src/admin/admin-components/shared/lib/date-input.js +43 -0
  22. package/.medusa/server/src/admin/admin-components/shared/lib/errors.d.ts +9 -0
  23. package/{dist/admin-components → .medusa/server/src/admin/admin-components/shared}/lib/errors.js +4 -6
  24. package/.medusa/server/src/admin/admin-components/shared/lib/file-validation.d.ts +24 -0
  25. package/.medusa/server/src/admin/admin-components/shared/lib/file-validation.js +18 -0
  26. package/.medusa/server/src/admin/admin-components/shared/lib/format.d.ts +32 -0
  27. package/.medusa/server/src/admin/admin-components/shared/lib/format.js +77 -0
  28. package/.medusa/server/src/admin/admin-components/shared/lib/pdf-preview.d.ts +16 -0
  29. package/.medusa/server/src/admin/admin-components/shared/lib/pdf-preview.js +31 -0
  30. package/.medusa/server/src/admin/admin-components/shared/lib/pdf.d.ts +6 -0
  31. package/.medusa/server/src/admin/admin-components/shared/lib/pdf.js +13 -0
  32. package/.medusa/server/src/admin/admin-components/shared/lib/use-debounced-value.d.ts +2 -0
  33. package/.medusa/server/src/admin/admin-components/shared/lib/use-debounced-value.js +10 -0
  34. package/.medusa/server/src/admin/admin-components/shared/lib/use-pdf-preview.d.ts +24 -0
  35. package/.medusa/server/src/admin/admin-components/shared/lib/use-pdf-preview.js +47 -0
  36. package/.medusa/server/src/admin/admin-components/shared/ui/AdminDatePicker.d.ts +8 -0
  37. package/.medusa/server/src/admin/admin-components/shared/ui/AdminDatePicker.js +9 -0
  38. package/.medusa/server/src/admin/admin-components/shared/ui/BackLink.d.ts +8 -0
  39. package/.medusa/server/src/admin/admin-components/shared/ui/BackLink.js +5 -0
  40. package/.medusa/server/src/admin/admin-components/shared/ui/DateRangeFilter.d.ts +20 -0
  41. package/.medusa/server/src/admin/admin-components/shared/ui/DateRangeFilter.js +17 -0
  42. package/.medusa/server/src/admin/admin-components/shared/ui/FilePickerButton.d.ts +14 -0
  43. package/.medusa/server/src/admin/admin-components/shared/ui/FilePickerButton.js +14 -0
  44. package/.medusa/server/src/admin/admin-components/shared/ui/MappedStatusBadge.d.ts +17 -0
  45. package/.medusa/server/src/admin/admin-components/shared/ui/MappedStatusBadge.js +12 -0
  46. package/.medusa/server/src/admin/admin-components/shared/ui/OffsetTablePagination.d.ts +15 -0
  47. package/.medusa/server/src/admin/admin-components/shared/ui/OffsetTablePagination.js +19 -0
  48. package/.medusa/server/src/admin/admin-components/shared/ui/PdfPreviewModal.d.ts +20 -0
  49. package/.medusa/server/src/admin/admin-components/shared/ui/PdfPreviewModal.js +7 -0
  50. package/.medusa/server/src/admin/admin-components/shared/ui/PluginFeatureRoute.d.ts +19 -0
  51. package/.medusa/server/src/admin/admin-components/shared/ui/PluginFeatureRoute.js +16 -0
  52. package/.medusa/server/src/admin/admin-components/shared/ui/QueryState.d.ts +24 -0
  53. package/.medusa/server/src/admin/admin-components/shared/ui/QueryState.js +23 -0
  54. package/.medusa/server/src/admin/admin-components/shared/ui/SearchableReferenceField.d.ts +63 -0
  55. package/.medusa/server/src/admin/admin-components/shared/ui/SearchableReferenceField.js +84 -0
  56. package/.medusa/server/src/admin/admin-components/shared/ui/SectionHeader.d.ts +15 -0
  57. package/.medusa/server/src/admin/admin-components/shared/ui/SectionHeader.js +13 -0
  58. package/.medusa/server/src/admin/admin-components/shared/ui/mapped-status.d.ts +6 -0
  59. package/.medusa/server/src/admin/admin-components/shared/ui/mapped-status.js +10 -0
  60. package/.medusa/server/src/admin/admin-components/shared/ui/offset-pagination.d.ts +17 -0
  61. package/.medusa/server/src/admin/admin-components/shared/ui/offset-pagination.js +15 -0
  62. package/.medusa/server/src/admin/admin-components/shared/ui/reference-results-state.d.ts +16 -0
  63. package/.medusa/server/src/admin/admin-components/shared/ui/reference-results-state.js +13 -0
  64. package/.medusa/server/src/admin/admin-components/shared/ui/rich-text-editor/InsertMenu.d.ts +8 -0
  65. package/.medusa/server/src/admin/admin-components/shared/ui/rich-text-editor/InsertMenu.js +10 -0
  66. package/.medusa/server/src/admin/admin-components/shared/ui/rich-text-editor/LinkPrompt.d.ts +14 -0
  67. package/.medusa/server/src/admin/admin-components/shared/ui/rich-text-editor/LinkPrompt.js +26 -0
  68. package/.medusa/server/src/admin/admin-components/shared/ui/rich-text-editor/RichTextEditor.d.ts +15 -0
  69. package/.medusa/server/src/admin/admin-components/shared/ui/rich-text-editor/RichTextEditor.js +8 -0
  70. package/.medusa/server/src/admin/admin-components/shared/ui/rich-text-editor/RichTextToolbar.d.ts +10 -0
  71. package/.medusa/server/src/admin/admin-components/shared/ui/rich-text-editor/RichTextToolbar.js +49 -0
  72. package/.medusa/server/src/admin/admin-components/shared/ui/rich-text-editor/SlashMenu.d.ts +11 -0
  73. package/.medusa/server/src/admin/admin-components/shared/ui/rich-text-editor/SlashMenu.js +44 -0
  74. package/.medusa/server/src/admin/admin-components/shared/ui/rich-text-editor/build-extensions.d.ts +8 -0
  75. package/.medusa/server/src/admin/admin-components/shared/ui/rich-text-editor/build-extensions.js +43 -0
  76. package/.medusa/server/src/admin/admin-components/shared/ui/rich-text-editor/drag-handle.d.ts +15 -0
  77. package/.medusa/server/src/admin/admin-components/shared/ui/rich-text-editor/drag-handle.js +161 -0
  78. package/.medusa/server/src/admin/admin-components/shared/ui/rich-text-editor/drag-target.d.ts +30 -0
  79. package/.medusa/server/src/admin/admin-components/shared/ui/rich-text-editor/drag-target.js +47 -0
  80. package/.medusa/server/src/admin/admin-components/shared/ui/rich-text-editor/editor-styles.d.ts +6 -0
  81. package/.medusa/server/src/admin/admin-components/shared/ui/rich-text-editor/editor-styles.js +46 -0
  82. package/.medusa/server/src/admin/admin-components/shared/ui/rich-text-editor/index.d.ts +9 -0
  83. package/.medusa/server/src/admin/admin-components/shared/ui/rich-text-editor/index.js +6 -0
  84. package/.medusa/server/src/admin/admin-components/shared/ui/rich-text-editor/link-href.d.ts +8 -0
  85. package/.medusa/server/src/admin/admin-components/shared/ui/rich-text-editor/link-href.js +21 -0
  86. package/.medusa/server/src/admin/admin-components/shared/ui/rich-text-editor/link-policy.d.ts +13 -0
  87. package/.medusa/server/src/admin/admin-components/shared/ui/rich-text-editor/link-policy.js +20 -0
  88. package/.medusa/server/src/admin/admin-components/shared/ui/rich-text-editor/slash-command.d.ts +13 -0
  89. package/.medusa/server/src/admin/admin-components/shared/ui/rich-text-editor/slash-command.js +60 -0
  90. package/.medusa/server/src/admin/admin-components/shared/ui/rich-text-editor/slash-items.d.ts +25 -0
  91. package/.medusa/server/src/admin/admin-components/shared/ui/rich-text-editor/slash-items.js +10 -0
  92. package/.medusa/server/src/admin/admin-components/shared/ui/rich-text-editor/tiptap.d.ts +7 -0
  93. package/.medusa/server/src/admin/admin-components/shared/ui/rich-text-editor/tiptap.js +7 -0
  94. package/.medusa/server/src/admin/admin-components/shared/ui/rich-text-editor/use-rich-text-editor.d.ts +44 -0
  95. package/.medusa/server/src/admin/admin-components/shared/ui/rich-text-editor/use-rich-text-editor.js +37 -0
  96. package/.medusa/server/src/admin/index.js +4513 -1447
  97. package/.medusa/server/src/admin/index.mjs +4515 -1452
  98. package/.medusa/server/src/api/admin/email/attachments/[id]/mail-kinds/route.js +16 -0
  99. package/.medusa/server/src/api/admin/email/attachments/[id]/route.js +15 -0
  100. package/.medusa/server/src/api/admin/email/attachments/[id]/versions/[version_id]/download/route.js +16 -0
  101. package/.medusa/server/src/api/admin/email/attachments/[id]/versions/route.js +41 -0
  102. package/.medusa/server/src/api/admin/email/attachments/route.js +21 -0
  103. package/.medusa/server/src/api/admin/email/templates/[kind]/preview/route.js +31 -0
  104. package/.medusa/server/src/api/admin/email/templates/[kind]/route.js +28 -0
  105. package/.medusa/server/src/api/admin/email/templates/[kind]/send-test/route.js +179 -0
  106. package/.medusa/server/src/api/admin/email/templates/[kind]/test-sources/route.js +19 -0
  107. package/.medusa/server/src/api/admin/email/templates/route.js +15 -0
  108. package/.medusa/server/src/api/admin/plugin-features/[plugin_key]/actions/[action_key]/route.js +2 -2
  109. package/.medusa/server/src/api/admin/plugin-features/[plugin_key]/actions/[action_key]/runs/route.js +2 -2
  110. package/.medusa/server/src/api/admin/plugin-features/[plugin_key]/route.js +2 -2
  111. package/.medusa/server/src/api/admin/plugin-features/[plugin_key]/settings/route.js +2 -2
  112. package/.medusa/server/src/api/admin/plugin-features/route.js +2 -2
  113. package/.medusa/server/src/api/attachment-download-response.js +12 -0
  114. package/.medusa/server/src/api/email-template-response.js +43 -0
  115. package/.medusa/server/src/api/middlewares.js +75 -17
  116. package/.medusa/server/src/api/plugin-actions.js +6 -5
  117. package/.medusa/server/src/api/plugin-features-http.js +4 -9
  118. package/.medusa/server/src/api/store/carts/[id]/completion-check/route.js +2 -2
  119. package/.medusa/server/src/api/store/plugin-features/[plugin_key]/route.js +2 -2
  120. package/.medusa/server/src/api/store/plugin-features/route.js +2 -2
  121. package/.medusa/server/src/documents/plugin-features.js +1 -7
  122. package/.medusa/server/src/documents/templates/financial-document.js +12 -11
  123. package/.medusa/server/src/documents/templates/html-factory.js +1 -1
  124. package/.medusa/server/src/documents/templates/html-utils.js +4 -10
  125. package/.medusa/server/src/documents/templates/layout.js +30 -11
  126. package/.medusa/server/src/documents/templates/packing-list.js +8 -7
  127. package/.medusa/server/src/documents/utils/document-render-settings.js +9 -6
  128. package/.medusa/server/src/email/application/handle-customer-verification-event.js +8 -3
  129. package/.medusa/server/src/email/application/handle-invite-event.js +8 -3
  130. package/.medusa/server/src/email/application/handle-password-reset-event.js +8 -3
  131. package/.medusa/server/src/email/application/notification-attachments.js +86 -0
  132. package/.medusa/server/src/email/application/template-data-from-order.js +339 -0
  133. package/.medusa/server/src/email/config/index.js +5 -29
  134. package/.medusa/server/src/email/domain/business-keys.js +5 -5
  135. package/.medusa/server/src/email/domain/documents-fact-fingerprint.js +3 -3
  136. package/.medusa/server/src/email/domain/order-summary.js +21 -27
  137. package/.medusa/server/src/email/domain/refund-summary.js +7 -12
  138. package/.medusa/server/src/email/domain/return-summary.js +32 -38
  139. package/.medusa/server/src/email/domain/shipment-summary.js +22 -28
  140. package/.medusa/server/src/email/plugin-features.js +2 -10
  141. package/.medusa/server/src/email/rendering/calendar-dates.js +19 -0
  142. package/.medusa/server/src/email/rendering/default-templates.js +99 -682
  143. package/.medusa/server/src/email/rendering/email-html.js +189 -0
  144. package/.medusa/server/src/email/rendering/load-email-shop-details.js +14 -12
  145. package/.medusa/server/src/email/rendering/render-email.js +46 -13
  146. package/.medusa/server/src/email/rendering/resolve-shop-configuration.js +3 -14
  147. package/.medusa/server/src/email/templates/blocks/dynamic-blocks.js +427 -0
  148. package/.medusa/server/src/email/templates/blocks/placeholders.js +71 -0
  149. package/.medusa/server/src/email/templates/blocks/render-document.js +137 -0
  150. package/.medusa/server/src/email/templates/code-override.js +18 -0
  151. package/.medusa/server/src/email/templates/defaults/documents.js +129 -0
  152. package/.medusa/server/src/email/templates/defaults/subjects.js +62 -0
  153. package/.medusa/server/src/email/templates/defaults/texts.js +42 -0
  154. package/.medusa/server/src/email/templates/index.js +22 -0
  155. package/.medusa/server/src/email/templates/load-template.js +39 -0
  156. package/.medusa/server/src/email/templates/preview.js +33 -0
  157. package/.medusa/server/src/email/templates/render.js +70 -0
  158. package/.medusa/server/src/email/templates/sample-data.js +165 -0
  159. package/.medusa/server/src/email/templates/types.js +3 -0
  160. package/.medusa/server/src/email/templates/validate.js +113 -0
  161. package/.medusa/server/src/files/config/index.js +6 -9
  162. package/.medusa/server/src/migration-scripts/move-logo-to-shop-appearance.js +53 -0
  163. package/.medusa/server/src/modules/documents/domain/cancellation-snapshot.js +4 -3
  164. package/.medusa/server/src/modules/documents/domain/merchant.js +4 -3
  165. package/.medusa/server/src/modules/documents/domain/options.js +3 -5
  166. package/.medusa/server/src/modules/documents/domain/tax-breakdown.js +4 -7
  167. package/.medusa/server/src/modules/documents/service.js +12 -33
  168. package/.medusa/server/src/modules/email/domain/attachment.js +22 -8
  169. package/.medusa/server/src/modules/email/migrations/Migration20261009083539.js +80 -0
  170. package/.medusa/server/src/modules/email/migrations/Migration20261009100654.js +17 -0
  171. package/.medusa/server/src/modules/email/models/email-attachment-document-version.js +39 -0
  172. package/.medusa/server/src/modules/email/models/email-attachment-document.js +27 -0
  173. package/.medusa/server/src/modules/email/models/email-template.js +25 -0
  174. package/.medusa/server/src/modules/email/service.js +370 -93
  175. package/.medusa/server/src/modules/plugin-features/domain/plugin-settings.js +9 -11
  176. package/.medusa/server/src/modules/plugin-features/service.js +2 -1
  177. package/.medusa/server/src/providers/s3-cache/cache/cache-manager.js +3 -3
  178. package/.medusa/server/src/providers/s3-cache/s3-object-store.js +3 -9
  179. package/.medusa/server/src/providers/smtp/service.js +13 -13
  180. package/.medusa/server/src/public/descriptor.js +16 -18
  181. package/.medusa/server/src/public/enforcement.js +29 -1
  182. package/.medusa/server/src/public/index.js +8 -2
  183. package/.medusa/server/src/public/module-access.js +9 -2
  184. package/.medusa/server/src/public/shop-master-data.js +109 -18
  185. package/.medusa/server/src/shared/lib/coerce.js +26 -0
  186. package/.medusa/server/src/shared/lib/collections.js +19 -0
  187. package/.medusa/server/src/shared/lib/dates.js +43 -0
  188. package/.medusa/server/src/shared/lib/errors.js +11 -0
  189. package/.medusa/server/src/shared/lib/hash.js +8 -0
  190. package/.medusa/server/src/shared/lib/index.js +29 -0
  191. package/.medusa/server/src/shared/lib/logging.js +61 -0
  192. package/.medusa/server/src/shared/lib/money.js +47 -0
  193. package/.medusa/server/src/shared/lib/text.js +53 -0
  194. package/.medusa/server/src/shared/lib/transaction.js +58 -0
  195. package/.medusa/server/src/{api → shared/lib}/wire-response.js +1 -1
  196. package/.medusa/server/src/shop-config/options.js +3 -5
  197. package/.medusa/server/src/subscribers/packing-list-fulfillment-canceled.js +4 -6
  198. package/.medusa/server/src/workflows/documents/issue-invoice-after-shipment.js +10 -12
  199. package/.medusa/server/src/workflows/documents/issue-packing-list.js +5 -6
  200. package/.medusa/server/src/workflows/documents/reconcile-order-cancellation.js +6 -8
  201. package/.medusa/server/src/workflows/email/dispatch-email-message.js +11 -41
  202. package/.medusa/server/src/workflows/email/prepare-order-received-email.js +2 -2
  203. package/.medusa/server/src/workflows/hooks/complete-cart-participants.js +4 -8
  204. package/README.md +427 -54
  205. package/dist/documents/templates/financial-document.js +11 -10
  206. package/dist/documents/templates/html-factory.d.ts +1 -1
  207. package/dist/documents/templates/html-factory.js +1 -1
  208. package/dist/documents/templates/html-utils.d.ts +0 -1
  209. package/dist/documents/templates/html-utils.js +3 -9
  210. package/dist/documents/templates/layout.js +29 -10
  211. package/dist/documents/templates/packing-list.js +7 -6
  212. package/dist/documents/types/documents.d.ts +7 -1
  213. package/dist/email/config/index.js +4 -28
  214. package/dist/email/types/shop-configuration.d.ts +6 -5
  215. package/dist/files/config/index.js +5 -8
  216. package/dist/modules/documents/domain/options.js +2 -4
  217. package/dist/public/descriptor.js +15 -17
  218. package/dist/public/enforcement.d.ts +21 -1
  219. package/dist/public/enforcement.js +28 -0
  220. package/dist/public/index.d.ts +3 -2
  221. package/dist/public/index.js +7 -1
  222. package/dist/public/module-access.d.ts +8 -0
  223. package/dist/public/module-access.js +8 -1
  224. package/dist/public/shop-master-data.d.ts +22 -5
  225. package/dist/public/shop-master-data.js +108 -17
  226. package/dist/public/types.d.ts +10 -2
  227. package/dist/shared/lib/coerce.d.ts +19 -0
  228. package/dist/shared/lib/coerce.js +25 -0
  229. package/dist/shared/lib/collections.d.ts +3 -0
  230. package/dist/shared/lib/collections.js +18 -0
  231. package/dist/shared/lib/dates.d.ts +12 -0
  232. package/dist/shared/lib/dates.js +42 -0
  233. package/dist/shared/lib/errors.d.ts +2 -0
  234. package/dist/shared/lib/errors.js +10 -0
  235. package/dist/shared/lib/hash.d.ts +2 -0
  236. package/dist/shared/lib/hash.js +7 -0
  237. package/dist/shared/lib/index.d.ts +10 -0
  238. package/dist/shared/lib/index.js +28 -0
  239. package/dist/shared/lib/logging.d.ts +26 -0
  240. package/dist/shared/lib/logging.js +60 -0
  241. package/dist/shared/lib/money.d.ts +13 -0
  242. package/dist/shared/lib/money.js +46 -0
  243. package/dist/shared/lib/text.d.ts +19 -0
  244. package/dist/shared/lib/text.js +52 -0
  245. package/dist/shared/lib/transaction.d.ts +26 -0
  246. package/dist/shared/lib/transaction.js +57 -0
  247. package/dist/shared/lib/wire-response.d.ts +6 -0
  248. package/dist/shared/lib/wire-response.js +9 -0
  249. package/dist/shop-config/options.js +2 -4
  250. package/package.json +19 -4
  251. package/.medusa/server/src/api/admin/email/terms-versions/[id]/download/route.js +0 -16
  252. package/.medusa/server/src/api/admin/email/terms-versions/route.js +0 -47
  253. package/.medusa/server/src/api/terms-download-response.js +0 -12
  254. package/.medusa/server/src/modules/email/models/email-terms-version.js +0 -37
  255. package/dist/admin-components/features/plugin-features/components/ImageSettingInput.js +0 -42
  256. package/dist/admin-components/features/plugin-features/components/PluginFeaturesSettingsPage.js +0 -16
  257. package/dist/admin-components/features/plugin-features/components/PluginPageShell.js +0 -20
  258. package/dist/admin-components/features/plugin-features/lib/image-upload.d.ts +0 -6
  259. package/dist/admin-components/features/plugin-features/lib/image-upload.js +0 -17
  260. package/dist/admin-components/index.d.ts +0 -14
  261. package/dist/admin-components/index.js +0 -14
  262. package/dist/admin-components/lib/errors.d.ts +0 -6
  263. /package/{dist → .medusa/server/src/admin}/admin-components/features/plugin-features/components/ImageSettingInput.d.ts +0 -0
  264. /package/{dist → .medusa/server/src/admin}/admin-components/features/plugin-features/components/PluginActionsSection.d.ts +0 -0
  265. /package/{dist → .medusa/server/src/admin}/admin-components/features/plugin-features/components/PluginDetailPage.d.ts +0 -0
  266. /package/{dist → .medusa/server/src/admin}/admin-components/features/plugin-features/components/PluginDetailPage.js +0 -0
  267. /package/{dist → .medusa/server/src/admin}/admin-components/features/plugin-features/components/PluginFeatureGate.d.ts +0 -0
  268. /package/{dist → .medusa/server/src/admin}/admin-components/features/plugin-features/components/PluginFeatureGate.js +0 -0
  269. /package/{dist → .medusa/server/src/admin}/admin-components/features/plugin-features/components/PluginFeatureSections.d.ts +0 -0
  270. /package/{dist → .medusa/server/src/admin}/admin-components/features/plugin-features/components/PluginFeatureSections.js +0 -0
  271. /package/{dist → .medusa/server/src/admin}/admin-components/features/plugin-features/components/PluginFeaturesCard.d.ts +0 -0
  272. /package/{dist → .medusa/server/src/admin}/admin-components/features/plugin-features/components/PluginFeaturesCard.js +0 -0
  273. /package/{dist → .medusa/server/src/admin}/admin-components/features/plugin-features/components/PluginFeaturesSettingsPage.d.ts +0 -0
  274. /package/{dist → .medusa/server/src/admin}/admin-components/features/plugin-features/components/PluginHubCard.d.ts +0 -0
  275. /package/{dist → .medusa/server/src/admin}/admin-components/features/plugin-features/components/PluginHubCard.js +0 -0
  276. /package/{dist → .medusa/server/src/admin}/admin-components/features/plugin-features/components/PluginPageShell.d.ts +0 -0
  277. /package/{dist → .medusa/server/src/admin}/admin-components/features/plugin-features/components/PluginSettingsForm.d.ts +0 -0
  278. /package/{dist → .medusa/server/src/admin}/admin-components/features/plugin-features/components/PluginStatusChips.d.ts +0 -0
  279. /package/{dist → .medusa/server/src/admin}/admin-components/features/plugin-features/components/PluginStatusChips.js +0 -0
  280. /package/{dist → .medusa/server/src/admin}/admin-components/features/plugin-features/hooks/usePluginFeatureEnabled.js +0 -0
  281. /package/{dist → .medusa/server/src/admin}/admin-components/features/plugin-features/hooks/usePluginSettingsForm.js +0 -0
  282. /package/{dist → .medusa/server/src/admin}/admin-components/features/plugin-features/lib/plugin-paths.d.ts +0 -0
  283. /package/{dist → .medusa/server/src/admin}/admin-components/features/plugin-features/lib/plugin-paths.js +0 -0
  284. /package/{dist → .medusa/server/src/admin}/admin-components/features/plugin-features/queries/pluginFeatureKeys.d.ts +0 -0
  285. /package/{dist → .medusa/server/src/admin}/admin-components/features/plugin-features/queries/pluginFeatureKeys.js +0 -0
  286. /package/{dist/admin-components → .medusa/server/src/admin/admin-components/shared}/lib/sdk.d.ts +0 -0
  287. /package/{dist/admin-components → .medusa/server/src/admin/admin-components/shared}/lib/sdk.js +0 -0
@@ -0,0 +1,137 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.renderTemplateDocument = void 0;
4
+ const email_1 = require("@hartl-services/medusa-food-supplements-contracts/schemas/email");
5
+ const email_html_1 = require("../../rendering/email-html");
6
+ const lib_1 = require("../../../shared/lib");
7
+ const dynamic_blocks_1 = require("./dynamic-blocks");
8
+ const renderText = (p, node) => {
9
+ const marks = node.marks ?? [];
10
+ let html = (0, lib_1.escapeHtml)(node.text);
11
+ let text = node.text;
12
+ if (marks.some((mark) => mark.type === "bold")) {
13
+ html = `<strong>${html}</strong>`;
14
+ }
15
+ if (marks.some((mark) => mark.type === "italic")) {
16
+ html = `<em>${html}</em>`;
17
+ }
18
+ const link = marks.find((mark) => mark.type === "link");
19
+ // Stored documents are validated, but a link is re-checked where it is
20
+ // written into a mail: an invalid target loses its link, not the text.
21
+ const href = link && "attrs" in link && (0, email_1.isEmailTemplateLinkHref)(link.attrs.href)
22
+ ? link.attrs.href
23
+ : null;
24
+ if (href) {
25
+ html = `<a href="${(0, lib_1.escapeHtml)(href)}" style="${(0, email_html_1.linkStyle)(p)}">${html}</a>`;
26
+ if (href !== node.text && href !== `mailto:${node.text}`) {
27
+ text = `${node.text} (${href})`;
28
+ }
29
+ }
30
+ return { html, text };
31
+ };
32
+ const renderInline = (context, nodes) => {
33
+ let html = "";
34
+ let text = "";
35
+ for (const node of nodes ?? []) {
36
+ if (node.type === "text") {
37
+ const rendered = renderText(context.palette, node);
38
+ html += rendered.html;
39
+ text += rendered.text;
40
+ }
41
+ else if (node.type === "hardBreak") {
42
+ html += "<br />";
43
+ text += "\n";
44
+ }
45
+ else {
46
+ const value = context.values[node.attrs.key] ?? "";
47
+ html += (0, lib_1.escapeHtml)(value);
48
+ text += value;
49
+ }
50
+ }
51
+ return { html, text };
52
+ };
53
+ /** Paragraphs that show nothing (empty, or only empty placeholders) are left out. */
54
+ const visibleParagraphs = (context, paragraphs) => paragraphs
55
+ .map((node) => renderInline(context, node.content))
56
+ .filter(({ text }) => text.trim() !== "");
57
+ const renderNotice = (context, paragraphs) => {
58
+ const visible = visibleParagraphs(context, paragraphs);
59
+ if (!visible.length) {
60
+ return null;
61
+ }
62
+ const p = context.palette;
63
+ const inner = visible
64
+ .map(({ html }, index) => `<p style="margin: ${index === visible.length - 1 ? "0" : "0 0 12px"}; font-family: ${email_html_1.FONT}; font-size: 15px; line-height: 24px; color: ${p.text};">${html}</p>`)
65
+ .join("");
66
+ return {
67
+ html: `<table role="presentation" width="100%" cellpadding="0" cellspacing="0" border="0" style="margin: 8px 0 24px; background: ${p.background}; border-left: 4px solid ${p.accent}; border-radius: 6px;"><tr><td style="padding: 14px 16px;">${inner}</td></tr></table>`,
68
+ text: visible.map(({ text }) => text).join("\n\n"),
69
+ };
70
+ };
71
+ const renderBulletList = (context, items) => {
72
+ const visible = items
73
+ .map((item) => visibleParagraphs(context, item.content))
74
+ .filter((paragraphs) => paragraphs.length > 0);
75
+ if (!visible.length) {
76
+ return null;
77
+ }
78
+ const p = context.palette;
79
+ return {
80
+ html: `<ul style="margin: 0 0 16px; padding: 0 0 0 22px; font-family: ${email_html_1.FONT}; font-size: 15px; line-height: 24px; color: ${p.text};">${visible
81
+ .map((paragraphs) => `<li style="margin: 0 0 6px;">${paragraphs.map(({ html }) => html).join("<br />")}</li>`)
82
+ .join("")}</ul>`,
83
+ text: visible
84
+ .map((paragraphs) => `- ${paragraphs.map(({ text }) => text).join("\n ")}`)
85
+ .join("\n"),
86
+ };
87
+ };
88
+ const renderBlock = (context, block) => {
89
+ switch (block.type) {
90
+ case "paragraph": {
91
+ const [visible] = visibleParagraphs(context, [block]);
92
+ return visible
93
+ ? [
94
+ {
95
+ html: (0, email_html_1.paragraph)(context.palette, visible.html),
96
+ text: visible.text,
97
+ },
98
+ ]
99
+ : [];
100
+ }
101
+ case "bulletList": {
102
+ const rendered = renderBulletList(context, block.content);
103
+ return rendered ? [rendered] : [];
104
+ }
105
+ case "notice": {
106
+ const rendered = renderNotice(context, block.content);
107
+ return rendered ? [rendered] : [];
108
+ }
109
+ case "dynamicBlock": {
110
+ const rendered = (0, dynamic_blocks_1.renderDynamicBlock)(context, block.attrs);
111
+ return rendered ? [rendered] : [];
112
+ }
113
+ case "conditional":
114
+ return (0, dynamic_blocks_1.conditionHolds)(context.input, block.attrs.condition)
115
+ ? block.content.flatMap((child) => renderBlock(context, child))
116
+ : [];
117
+ }
118
+ };
119
+ /**
120
+ * A validated document as mail body: HTML blocks back to back, text blocks
121
+ * separated by a blank line (tracking links by a single line break). A
122
+ * block marked `noText` (the link fallback) adds nothing to the text, not
123
+ * even a separator.
124
+ */
125
+ const renderTemplateDocument = (context, document) => {
126
+ const blocks = document.content.flatMap((block) => renderBlock(context, block));
127
+ return {
128
+ bodyHtml: blocks.map(({ html }) => html).join(""),
129
+ text: blocks
130
+ .filter((block) => !block.noText)
131
+ .reduce((text, block, index) => index === 0
132
+ ? block.text
133
+ : `${text}${block.tight ? "\n" : "\n\n"}${block.text}`, ""),
134
+ };
135
+ };
136
+ exports.renderTemplateDocument = renderTemplateDocument;
137
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVuZGVyLWRvY3VtZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2VtYWlsL3RlbXBsYXRlcy9ibG9ja3MvcmVuZGVyLWRvY3VtZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDJGQUEwRztBQU0xRywyREFLb0M7QUFDcEMsNkNBQWlEO0FBQ2pELHFEQUswQjtBQVcxQixNQUFNLFVBQVUsR0FBRyxDQUFDLENBQVUsRUFBRSxJQUFjLEVBQWtCLEVBQUU7SUFDaEUsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssSUFBSSxFQUFFLENBQUM7SUFDL0IsSUFBSSxJQUFJLEdBQUcsSUFBQSxnQkFBVSxFQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNqQyxJQUFJLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO0lBQ3JCLElBQUksS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksS0FBSyxNQUFNLENBQUMsRUFBRSxDQUFDO1FBQy9DLElBQUksR0FBRyxXQUFXLElBQUksV0FBVyxDQUFDO0lBQ3BDLENBQUM7SUFDRCxJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLEtBQUssUUFBUSxDQUFDLEVBQUUsQ0FBQztRQUNqRCxJQUFJLEdBQUcsT0FBTyxJQUFJLE9BQU8sQ0FBQztJQUM1QixDQUFDO0lBQ0QsTUFBTSxJQUFJLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksS0FBSyxNQUFNLENBQUMsQ0FBQztJQUN4RCx1RUFBdUU7SUFDdkUsdUVBQXVFO0lBQ3ZFLE1BQU0sSUFBSSxHQUNSLElBQUksSUFBSSxPQUFPLElBQUksSUFBSSxJQUFJLElBQUEsK0JBQXVCLEVBQUMsSUFB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
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isCodeOverride = exports.markDefaultRenderer = void 0;
4
+ // The plugin's own renderers of the editable kinds. A renderer that is not
5
+ // in here comes from the shop's code configuration and wins over templates.
6
+ const defaultRenderers = new WeakSet();
7
+ const markDefaultRenderer = (renderer) => {
8
+ defaultRenderers.add(renderer);
9
+ return renderer;
10
+ };
11
+ exports.markDefaultRenderer = markDefaultRenderer;
12
+ /** The shop's code configuration replaces this mail; Admin templates do not apply. */
13
+ const isCodeOverride = (configuration, kind) => {
14
+ const renderer = configuration.renderers[kind];
15
+ return !(typeof renderer === "function" && defaultRenderers.has(renderer));
16
+ };
17
+ exports.isCodeOverride = isCodeOverride;
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29kZS1vdmVycmlkZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9lbWFpbC90ZW1wbGF0ZXMvY29kZS1vdmVycmlkZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFJQSwyRUFBMkU7QUFDM0UsNEVBQTRFO0FBQzVFLE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxPQUFPLEVBQVUsQ0FBQztBQUV4QyxNQUFNLG1CQUFtQixHQUFHLENBQ2pDLFFBQWtCLEVBQ1IsRUFBRTtJQUNaLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUMvQixPQUFPLFFBQVEsQ0FBQztBQUNsQixDQUFDLENBQUM7QUFMVyxRQUFBLG1CQUFtQix1QkFLOUI7QUFFRixzRkFBc0Y7QUFDL0UsTUFBTSxjQUFjLEdBQUcsQ0FDNUIsYUFBZ0UsRUFDaEUsSUFBdUIsRUFDZCxFQUFFO0lBQ1gsTUFBTSxRQUFRLEdBQVksYUFBYSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN4RCxPQUFPLENBQUMsQ0FBQyxPQUFPLFFBQVEsS0FBSyxVQUFVLElBQUksZ0JBQWdCLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7QUFDN0UsQ0FBQyxDQUFDO0FBTlcsUUFBQSxjQUFjLGtCQU16QiJ9
@@ -0,0 +1,129 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.defaultTemplateDocument = void 0;
4
+ const texts_1 = require("./texts");
5
+ const text = (value) => ({
6
+ type: "paragraph",
7
+ content: [{ type: "text", text: value }],
8
+ });
9
+ /** "<before>{{key}}<after>" as one paragraph. */
10
+ const around = (before, key, after) => ({
11
+ type: "paragraph",
12
+ content: [
13
+ { type: "text", text: before },
14
+ { type: "placeholder", attrs: { key } },
15
+ { type: "text", text: after },
16
+ ],
17
+ });
18
+ const block = (name) => ({
19
+ type: "dynamicBlock",
20
+ attrs: { block: name, heading: null },
21
+ });
22
+ const only = (condition, value) => ({
23
+ type: "conditional",
24
+ attrs: { condition },
25
+ content: [{ type: "paragraph", content: [{ type: "text", text: value }] }],
26
+ });
27
+ const DEFAULT_DOCUMENTS = {
28
+ "order.received": [
29
+ text(texts_1.RECEIVED_INTRO),
30
+ block("details"),
31
+ block("order_summary"),
32
+ ],
33
+ "order.received.admin": [
34
+ text(texts_1.ADMIN_ORDER_INTRO),
35
+ block("details"),
36
+ block("button"),
37
+ block("order_summary"),
38
+ ],
39
+ "order.shipped": [
40
+ text(texts_1.SHIPMENT_INTRO),
41
+ block("details"),
42
+ block("tracking"),
43
+ block("item_list"),
44
+ only("more_to_follow", texts_1.MORE_TO_FOLLOW),
45
+ only("invoice_attached", texts_1.INVOICE_ATTACHED),
46
+ block("address"),
47
+ ],
48
+ "order.canceled": [
49
+ text(texts_1.CANCELED_INTRO),
50
+ block("details"),
51
+ text(texts_1.CANCELED_PAYMENT),
52
+ only("cancellation_attached", texts_1.CANCELLATION_ATTACHED),
53
+ block("order_summary"),
54
+ ],
55
+ "order.return_requested": [
56
+ text(`${texts_1.RETURN_CREATED} ${texts_1.RETURN_INSTRUCTIONS}`),
57
+ block("details"),
58
+ block("item_list"),
59
+ block("address"),
60
+ {
61
+ type: "conditional",
62
+ attrs: { condition: "return_number" },
63
+ content: [
64
+ {
65
+ type: "paragraph",
66
+ content: [
67
+ { type: "text", text: texts_1.RETURN_LABEL_BEFORE },
68
+ { type: "placeholder", attrs: { key: "return_number" } },
69
+ { type: "text", text: texts_1.RETURN_LABEL_AFTER },
70
+ ],
71
+ },
72
+ ],
73
+ },
74
+ ],
75
+ "order.return_received": [
76
+ text(texts_1.RETURN_RECEIVED),
77
+ block("details"),
78
+ block("item_list"),
79
+ text(texts_1.RETURN_REFUND),
80
+ ],
81
+ "order.refunded": [
82
+ text(texts_1.REFUND_INTRO),
83
+ block("details"),
84
+ text(texts_1.REFUND_DURATION),
85
+ only("cancellation_attached", texts_1.CANCELLATION_ATTACHED),
86
+ ],
87
+ "auth.password_reset": [
88
+ around(texts_1.PASSWORD_RESET_INTRO_BEFORE, "shop_name", texts_1.PASSWORD_RESET_INTRO_AFTER),
89
+ block("button"),
90
+ block("link_fallback"),
91
+ block("validity"),
92
+ text(texts_1.PASSWORD_RESET_IGNORE),
93
+ ],
94
+ "auth.verification": [
95
+ around(texts_1.VERIFICATION_INTRO_BEFORE, "shop_name", texts_1.VERIFICATION_INTRO_AFTER),
96
+ block("button"),
97
+ block("link_fallback"),
98
+ text(texts_1.VERIFICATION_VALIDITY),
99
+ text(texts_1.VERIFICATION_IGNORE),
100
+ ],
101
+ "user.invite": [
102
+ around(texts_1.INVITE_INTRO_BEFORE, "shop_name", texts_1.INVITE_INTRO_AFTER),
103
+ block("button"),
104
+ block("link_fallback"),
105
+ block("validity"),
106
+ text(texts_1.INVITE_IGNORE),
107
+ ],
108
+ "affiliate.consignment_report_due": [
109
+ around(texts_1.CONSIGNMENT_GREETING_BEFORE, "affiliate_name", texts_1.CONSIGNMENT_GREETING_AFTER),
110
+ around(texts_1.CONSIGNMENT_INTRO_BEFORE, "report_month", texts_1.CONSIGNMENT_INTRO_AFTER),
111
+ block("details"),
112
+ text(texts_1.CONSIGNMENT_BILLING),
113
+ block("button"),
114
+ text(texts_1.CONSIGNMENT_IGNORE),
115
+ ],
116
+ "affiliate.application_submitted.admin": [
117
+ text(texts_1.APPLICATION_INTRO),
118
+ block("details"),
119
+ block("message"),
120
+ block("button"),
121
+ ],
122
+ };
123
+ /** Today's content of an editable mail as a block document (a fresh copy). */
124
+ const defaultTemplateDocument = (kind) => ({
125
+ type: "doc",
126
+ content: structuredClone([...DEFAULT_DOCUMENTS[kind]]),
127
+ });
128
+ exports.defaultTemplateDocument = defaultTemplateDocument;
129
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9jdW1lbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2VtYWlsL3RlbXBsYXRlcy9kZWZhdWx0cy9kb2N1bWVudHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBU0EsbUNBa0NpQjtBQUVqQixNQUFNLElBQUksR0FBRyxDQUFDLEtBQWEsRUFBc0IsRUFBRSxDQUFDLENBQUM7SUFDbkQsSUFBSSxFQUFFLFdBQVc7SUFDakIsT0FBTyxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsQ0FBQztDQUN6QyxDQUFDLENBQUM7QUFFSCxpREFBaUQ7QUFDakQsTUFBTSxNQUFNLEdBQUcsQ0FDYixNQUFjLEVBQ2QsR0FBNkIsRUFDN0IsS0FBYSxFQUNPLEVBQUUsQ0FBQyxDQUFDO0lBQ3hCLElBQUksRUFBRSxXQUFXO0lBQ2pCLE9BQU8sRUFBRTtRQUNQLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFO1FBQzlCLEVBQUUsSUFBSSxFQUFFLGFBQWEsRUFBRSxLQUFLLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRTtRQUN2QyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRTtLQUM5QjtDQUNGLENBQUMsQ0FBQztBQUVILE1BQU0sS0FBSyxHQUFHLENBQUMsSUFBK0IsRUFBc0IsRUFBRSxDQUFDLENBQUM7SUFDdEUsSUFBSSxFQUFFLGNBQWM7SUFDcEIsS0FBSyxFQUFFLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFO0NBQ3RDLENBQUMsQ0FBQztBQUVILE1BQU0sSUFBSSxHQUFHLENBQ1gsU0FBaUMsRUFDakMsS0FBYSxFQUNPLEVBQUUsQ0FBQyxDQUFDO0lBQ3hCLElBQUksRUFBRSxhQUFhO0lBQ25CLEtBQUssRUFBRSxFQUFFLFNBQVMsRUFBRTtJQUNwQixP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
@@ -0,0 +1,62 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.defaultSubject = void 0;
4
+ const calendar_dates_1 = require("../../rendering/calendar-dates");
5
+ const email_html_1 = require("../../rendering/email-html");
6
+ const placeholders_1 = require("../blocks/placeholders");
7
+ /** The code subject of an editable mail, with its variants. */
8
+ const defaultSubject = ({ displayName }, input) => {
9
+ switch (input.kind) {
10
+ case "order.received":
11
+ return "Wir haben deine Bestellung erhalten";
12
+ case "order.received.admin": {
13
+ const { order_id, summary } = input.data;
14
+ if (!summary) {
15
+ return "Neue Bestellung eingegangen";
16
+ }
17
+ const name = (0, email_html_1.customerName)(summary);
18
+ return `Neue Bestellung ${(0, email_html_1.orderReference)(summary, order_id)}${name ? ` von ${name}` : ""}`;
19
+ }
20
+ case "order.shipped":
21
+ return `Deine Bestellung bei ${displayName} ist unterwegs`;
22
+ case "order.canceled": {
23
+ const { order_id, summary } = input.data;
24
+ const reference = summary ? (0, email_html_1.orderReference)(summary, order_id) : null;
25
+ return `Deine Bestellung${reference ? ` ${reference}` : ""} bei ${displayName} wurde storniert`;
26
+ }
27
+ case "order.return_requested": {
28
+ const id = input.data.summary?.order_display_id ?? null;
29
+ return id === null
30
+ ? `Deine Rücksendung bei ${displayName}`
31
+ : `Deine Rücksendung zur Bestellung #${id} bei ${displayName}`;
32
+ }
33
+ case "order.return_received": {
34
+ const id = input.data.summary?.order_display_id ?? null;
35
+ return id === null
36
+ ? `Deine Rücksendung bei ${displayName} ist eingetroffen`
37
+ : `Deine Rücksendung zur Bestellung #${id} bei ${displayName} ist eingetroffen`;
38
+ }
39
+ case "order.refunded": {
40
+ const id = input.data.summary?.order_display_id ?? null;
41
+ return id === null
42
+ ? `Deine Erstattung bei ${displayName}`
43
+ : `Deine Erstattung zur Bestellung #${id} bei ${displayName}`;
44
+ }
45
+ case "auth.password_reset":
46
+ return `Neues Passwort für dein Kundenkonto bei ${displayName}`;
47
+ case "auth.verification":
48
+ return "Bestätige deine E-Mail-Adresse";
49
+ case "user.invite":
50
+ return `Einladung ins Admin-Team von ${displayName}`;
51
+ case "affiliate.consignment_report_due":
52
+ return `Erinnerung: Deine Monatsmeldung für ${(0, calendar_dates_1.calendarMonth)(input.data.period_start)}`;
53
+ case "affiliate.application_submitted.admin": {
54
+ const applicant = (0, placeholders_1.applicantName)(input.data);
55
+ return applicant
56
+ ? `Neue Partner-Bewerbung von ${applicant}`
57
+ : "Neue Partner-Bewerbung";
58
+ }
59
+ }
60
+ };
61
+ exports.defaultSubject = defaultSubject;
62
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3ViamVjdHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvZW1haWwvdGVtcGxhdGVzL2RlZmF1bHRzL3N1YmplY3RzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLG1FQUErRDtBQUMvRCwyREFBMEU7QUFDMUUseURBQXVEO0FBR3ZELCtEQUErRDtBQUN4RCxNQUFNLGNBQWMsR0FBRyxDQUM1QixFQUFFLFdBQVcsRUFBK0IsRUFDNUMsS0FBeUIsRUFDakIsRUFBRTtJQUNWLFFBQVEsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ25CLEtBQUssZ0JBQWdCO1lBQ25CLE9BQU8scUNBQXFDLENBQUM7UUFDL0MsS0FBSyxzQkFBc0IsQ0FBQyxDQUFDLENBQUM7WUFDNUIsTUFBTSxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDO1lBQ3pDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztnQkFDYixPQUFPLDZCQUE2QixDQUFDO1lBQ3ZDLENBQUM7WUFDRCxNQUFNLElBQUksR0FBRyxJQUFBLHlCQUFZLEVBQUMsT0FBTyxDQUFDLENBQUM7WUFDbkMsT0FBTyxtQkFBbUIsSUFBQSwyQkFBYyxFQUFDLE9BQU8sRUFBRSxRQUFRLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLFFBQVEsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDO1FBQzdGLENBQUM7UUFDRCxLQUFLLGVBQWU7WUFDbEIsT0FBTyx3QkFBd0IsV0FBVyxnQkFBZ0IsQ0FBQztRQUM3RCxLQUFLLGdCQUFnQixDQUFDLENBQUMsQ0FBQztZQUN0QixNQUFNLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUM7WUFDekMsTUFBTSxTQUFTLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFBLDJCQUFjLEVBQUMsT0FBTyxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7WUFDckUsT0FBTyxtQkFBbUIsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLFFBQVEsV0FBVyxrQkFBa0IsQ0FBQztRQUNsRyxDQUFDO1FBQ0QsS0FBSyx3QkFBd0IsQ0FBQyxDQUFDLENBQUM7WUFDOUIsTUFBTSxFQUFFLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsZ0JBQWdCLElBQUksSUFBSSxDQUFDO1lBQ3hELE9BQU8sRUFBRSxLQUFLLElBQUk7Z0JBQ2hCLENBQUMsQ0FBQyx5QkFBeUIsV0FBVyxFQUFFO2dCQUN4QyxDQUFDLENBQUMscUNBQXFDLEVBQUUsUUFBUSxXQUFXLEVBQUUsQ0FBQztRQUNuRSxDQUFDO1FBQ0QsS0FBSyx1QkFBdUIsQ0FBQyxDQUFDLENBQUM7WUFDN0IsTUFBTSxFQUFFLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsZ0JBQWdCLElBQUksSUFBSSxDQUFDO1lBQ3hELE9BQU8sRUFBRSxLQUFLLElBQUk7Z0JBQ2hCLENBQUMsQ0FBQyx5QkFBeUIsV0FBVyxtQkFBbUI7Z0JBQ3pELENBQUMsQ0FBQyxxQ0FBcUMsRUFBRSxRQUFRLFdBQVcsbUJBQW1CLENBQUM7UUFDcEYsQ0FBQztRQUNELEtBQUssZ0JBQWdCLENBQUMsQ0FBQyxDQUFDO1lBQ3RCLE1BQU0sRUFBRSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLGdCQUFnQixJQUFJLElBQUksQ0FBQztZQUN4RCxPQUFPLEVBQUUsS0FBSyxJQUFJO2dCQUNoQixDQUFDLENBQUMsd0JBQXdCLFdBQVcsRUFBRTtnQkFDdkMsQ0FBQyxDQUFDLG9DQUFvQyxFQUFFLFFBQVEsV0FBVyxFQUFFLENBQUM7UUFDbEUsQ0FBQztRQUNELEtBQUsscUJBQXFCO1lBQ3hCLE9BQU8sMkNBQTJDLFdBQVcsRUFBRSxDQUFDO1FBQ2xFLEtBQUssbUJBQW1CO1lBQ3RCLE9BQU8sZ0NBQWdDLENBQUM7UUFDMUMsS0FBSyxhQUFhO1lBQ2hCLE9BQU8sZ0NBQWdDLFdBQVcsRUFBRSxDQUFDO1FBQ3ZELEtBQUssa0NBQWtDO1lBQ3JDLE9BQU8sdUNBQXVDLElBQUEsOEJBQWEsRUFBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUM7UUFDekYsS0FBSyx1Q0FBdUMsQ0FBQyxDQUFDLENBQUM7WUFDN0MsTUFBTSxTQUFTLEdBQUcsSUFBQSw0QkFBYSxFQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUM1QyxPQUFPLFNBQVM7Z0JBQ2QsQ0FBQyxDQUFDLDhCQUE4QixTQUFTLEVBQUU7Z0JBQzNDLENBQUMsQ0FBQyx3QkFBd0IsQ0FBQztRQUMvQixDQUFDO0lBQ0gsQ0FBQztBQUNILENBQUMsQ0FBQztBQXZEVyxRQUFBLGNBQWMsa0JBdUR6QiJ9
@@ -0,0 +1,42 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.APPLICATION_INTRO = exports.CONSIGNMENT_IGNORE = exports.CONSIGNMENT_BILLING = exports.CONSIGNMENT_INTRO_AFTER = exports.CONSIGNMENT_INTRO_BEFORE = exports.CONSIGNMENT_GREETING_AFTER = exports.CONSIGNMENT_GREETING_BEFORE = exports.INVITE_IGNORE = exports.INVITE_INTRO_AFTER = exports.INVITE_INTRO_BEFORE = exports.VERIFICATION_IGNORE = exports.VERIFICATION_VALIDITY = exports.VERIFICATION_INTRO_AFTER = exports.VERIFICATION_INTRO_BEFORE = exports.PASSWORD_RESET_IGNORE = exports.PASSWORD_RESET_INTRO_AFTER = exports.PASSWORD_RESET_INTRO_BEFORE = exports.ADMIN_ORDER_INTRO = exports.REFUND_DURATION = exports.REFUND_INTRO = exports.RETURN_REFUND = exports.RETURN_RECEIVED = exports.RETURN_LABEL_AFTER = exports.RETURN_LABEL_BEFORE = exports.RETURN_INSTRUCTIONS = exports.RETURN_CREATED = exports.CANCELLATION_ATTACHED = exports.CANCELED_PAYMENT = exports.CANCELED_INTRO = exports.INVOICE_ATTACHED = exports.MORE_TO_FOLLOW = exports.SHIPMENT_INTRO = exports.RECEIVED_INTRO = void 0;
4
+ /** Static texts of the default customer order mails. */
5
+ exports.RECEIVED_INTRO = "Vielen Dank für deine Bestellung, diese ist bei uns eingetroffen und wir werden sie umgehend bearbeiten.";
6
+ exports.SHIPMENT_INTRO = "Gute Nachrichten: Deine Bestellung hat unser Lager verlassen und ist auf dem Weg zu dir.";
7
+ exports.MORE_TO_FOLLOW = "Weitere Artikel deiner Bestellung folgen in einer separaten Sendung.";
8
+ exports.INVOICE_ATTACHED = "Die Rechnung findest du im Anhang.";
9
+ exports.CANCELED_INTRO = "Deine Bestellung wurde storniert. Du musst nichts weiter tun.";
10
+ exports.CANCELED_PAYMENT = "Falls du bereits bezahlt hast, erstatten wir dir den Betrag auf dem ursprünglichen Zahlungsweg.";
11
+ exports.CANCELLATION_ATTACHED = "Die Stornorechnung findest du im Anhang.";
12
+ exports.RETURN_CREATED = "Wir haben die Rücksendung zu deiner Bestellung angelegt.";
13
+ exports.RETURN_INSTRUCTIONS = "Bitte schick uns die unten aufgeführten Artikel an die angegebene Adresse zurück.";
14
+ /** "Bitte leg einen Zettel mit der Rücksendenummer #R… bei, …" around the number. */
15
+ exports.RETURN_LABEL_BEFORE = "Bitte leg einen Zettel mit der Rücksendenummer ";
16
+ exports.RETURN_LABEL_AFTER = " bei, damit wir dein Paket zuordnen können.";
17
+ exports.RETURN_RECEIVED = "Deine Rücksendung ist bei uns eingetroffen. Vielen Dank!";
18
+ exports.RETURN_REFUND = "Falls dir eine Erstattung zusteht, veranlassen wir sie in Kürze auf dem ursprünglichen Zahlungsweg.";
19
+ exports.REFUND_INTRO = "Wir haben dir eine Erstattung veranlasst.";
20
+ exports.REFUND_DURATION = "Je nach Zahlungsart kann es einige Tage dauern, bis der Betrag auf deinem Konto sichtbar ist.";
21
+ /** Static texts of the shop's order notification. */
22
+ exports.ADMIN_ORDER_INTRO = "Eine neue Bestellung ist eingegangen und kann jetzt bearbeitet werden.";
23
+ /** Static texts of the account mails; "…bei <shop>…" around the shop name. */
24
+ exports.PASSWORD_RESET_INTRO_BEFORE = "Du hast ein neues Passwort für dein Kundenkonto bei ";
25
+ exports.PASSWORD_RESET_INTRO_AFTER = " angefordert. Über den Button kannst du es jetzt festlegen.";
26
+ exports.PASSWORD_RESET_IGNORE = "Falls du kein neues Passwort angefordert hast, kannst du diese E-Mail ignorieren. Dein bisheriges Passwort bleibt dann unverändert.";
27
+ exports.VERIFICATION_INTRO_BEFORE = "Schön, dass du dich bei ";
28
+ exports.VERIFICATION_INTRO_AFTER = " registriert hast. Bitte bestätige deine E-Mail-Adresse, damit du dich anmelden kannst.";
29
+ exports.VERIFICATION_VALIDITY = "Der Link ist nur begrenzte Zeit gültig. Ist er abgelaufen, bekommst du beim nächsten Anmelden einen neuen Link oder kannst auf der Seite „Bestätigungsmail erneut senden“ wählen.";
30
+ exports.VERIFICATION_IGNORE = "Falls du dich nicht bei uns registriert hast, kannst du diese E-Mail ignorieren.";
31
+ exports.INVITE_INTRO_BEFORE = "Du wurdest eingeladen, im Admin-Bereich von ";
32
+ exports.INVITE_INTRO_AFTER = " mitzuarbeiten. Über den Button legst du dein Benutzerkonto an.";
33
+ exports.INVITE_IGNORE = "Falls du mit dieser Einladung nichts anfangen kannst, ignoriere diese E-Mail einfach.";
34
+ /** Static texts of the affiliate mails. */
35
+ exports.CONSIGNMENT_GREETING_BEFORE = "Hallo ";
36
+ exports.CONSIGNMENT_GREETING_AFTER = ",";
37
+ exports.CONSIGNMENT_INTRO_BEFORE = "deine Monatsmeldung für ";
38
+ exports.CONSIGNMENT_INTRO_AFTER = " liegt uns noch nicht vor. Bitte zähl deinen Kommissionsbestand und reich die Meldung im Partnerbereich ein.";
39
+ exports.CONSIGNMENT_BILLING = "Aus deinem gezählten Bestand ergeben sich die verkauften Artikel, die wir dir anschließend in Rechnung stellen.";
40
+ exports.CONSIGNMENT_IGNORE = "Falls du die Meldung inzwischen eingereicht hast, kannst du diese E-Mail ignorieren.";
41
+ exports.APPLICATION_INTRO = "Eine neue Partner-Bewerbung ist eingegangen und wartet auf deine Prüfung.";
42
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvZW1haWwvdGVtcGxhdGVzL2RlZmF1bHRzL3RleHRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHdEQUF3RDtBQUMzQyxRQUFBLGNBQWMsR0FDekIsMEdBQTBHLENBQUM7QUFFaEcsUUFBQSxjQUFjLEdBQ3pCLDBGQUEwRixDQUFDO0FBQ2hGLFFBQUEsY0FBYyxHQUN6QixzRUFBc0UsQ0FBQztBQUM1RCxRQUFBLGdCQUFnQixHQUFHLG9DQUFvQyxDQUFDO0FBRXhELFFBQUEsY0FBYyxHQUN6QiwrREFBK0QsQ0FBQztBQUNyRCxRQUFBLGdCQUFnQixHQUMzQixpR0FBaUcsQ0FBQztBQUN2RixRQUFBLHFCQUFxQixHQUNoQywwQ0FBMEMsQ0FBQztBQUVoQyxRQUFBLGNBQWMsR0FDekIsMERBQTBELENBQUM7QUFDaEQsUUFBQSxtQkFBbUIsR0FDOUIsbUZBQW1GLENBQUM7QUFDdEYscUZBQXFGO0FBQ3hFLFFBQUEsbUJBQW1CLEdBQzlCLGlEQUFpRCxDQUFDO0FBQ3ZDLFFBQUEsa0JBQWtCLEdBQzdCLDZDQUE2QyxDQUFDO0FBRW5DLFFBQUEsZUFBZSxHQUMxQiwwREFBMEQsQ0FBQztBQUNoRCxRQUFBLGFBQWEsR0FDeEIscUdBQXFHLENBQUM7QUFFM0YsUUFBQSxZQUFZLEdBQUcsMkNBQTJDLENBQUM7QUFDM0QsUUFBQSxlQUFlLEdBQzFCLCtGQUErRixDQUFDO0FBRWxHLHFEQUFxRDtBQUN4QyxRQUFBLGlCQUFpQixHQUM1Qix3RUFBd0UsQ0FBQztBQUUzRSw4RUFBOEU7QUFDakUsUUFBQSwyQkFBMkIsR0FDdEMsc0RBQXNELENBQUM7QUFDNUMsUUFBQSwwQkFBMEIsR0FDckMsNkRBQTZELENBQUM7QUFDbkQsUUFBQSxxQkFBcUIsR0FDaEMscUlBQXFJLENBQUM7QUFFM0gsUUFBQSx5QkFBeUIsR0FBRywwQkFBMEIsQ0FBQztBQUN2RCxRQUFBLHdCQUF3QixHQUNuQyx5RkFBeUYsQ0FBQztBQUMvRSxRQUFBLHFCQUFxQixHQUNoQyxtTEFBbUwsQ0FBQztBQUN6SyxRQUFBLG1CQUFtQixHQUM5QixrRkFBa0YsQ0FBQztBQUV4RSxRQUFBLG1CQUFtQixHQUM5Qiw4Q0FBOEMsQ0FBQztBQUNwQyxRQUFBLGtCQUFrQixHQUM3QixpRUFBaUUsQ0FBQztBQUN2RCxRQUFBLGFBQWEsR0FDeEIsdUZBQXVGLENBQUM7QUFFMUYsMkNBQTJDO0FBQzlCLFFBQUEsMkJBQTJCLEdBQUcsUUFBUSxDQUFDO0FBQ3ZDLFFBQUEsMEJBQTBCLEdBQUcsR0FBRyxDQUFDO0FBQ2pDLFFBQUEsd0JBQXdCLEdBQUcsMEJBQTBCLENBQUM7QUFDdEQsUUFBQSx1QkFBdUIsR0FDbEMsOEdBQThHLENBQUM7QUFDcEcsUUFBQSxtQkFBbUIsR0FDOUIsaUhBQWlILENBQUM7QUFDdkcsUUFBQSxrQkFBa0IsR0FDN0Isc0ZBQXNGLENBQUM7QUFFNUUsUUFBQSxpQkFBaUIsR0FDNUIsMkVBQTJFLENBQUMifQ==
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.validateTemplateDocument = exports.sampleTemplateInput = exports.renderTemplatedEmail = exports.renderTemplateSubject = exports.isEditableKind = exports.hasTemplateSnapshot = exports.renderTemplatePreview = exports.loadEmailTemplate = exports.defaultTemplateDocument = exports.markDefaultRenderer = exports.isCodeOverride = void 0;
4
+ var code_override_1 = require("./code-override");
5
+ Object.defineProperty(exports, "isCodeOverride", { enumerable: true, get: function () { return code_override_1.isCodeOverride; } });
6
+ Object.defineProperty(exports, "markDefaultRenderer", { enumerable: true, get: function () { return code_override_1.markDefaultRenderer; } });
7
+ var documents_1 = require("./defaults/documents");
8
+ Object.defineProperty(exports, "defaultTemplateDocument", { enumerable: true, get: function () { return documents_1.defaultTemplateDocument; } });
9
+ var load_template_1 = require("./load-template");
10
+ Object.defineProperty(exports, "loadEmailTemplate", { enumerable: true, get: function () { return load_template_1.loadEmailTemplate; } });
11
+ var preview_1 = require("./preview");
12
+ Object.defineProperty(exports, "renderTemplatePreview", { enumerable: true, get: function () { return preview_1.renderTemplatePreview; } });
13
+ var render_1 = require("./render");
14
+ Object.defineProperty(exports, "hasTemplateSnapshot", { enumerable: true, get: function () { return render_1.hasTemplateSnapshot; } });
15
+ Object.defineProperty(exports, "isEditableKind", { enumerable: true, get: function () { return render_1.isEditableKind; } });
16
+ Object.defineProperty(exports, "renderTemplateSubject", { enumerable: true, get: function () { return render_1.renderTemplateSubject; } });
17
+ Object.defineProperty(exports, "renderTemplatedEmail", { enumerable: true, get: function () { return render_1.renderTemplatedEmail; } });
18
+ var sample_data_1 = require("./sample-data");
19
+ Object.defineProperty(exports, "sampleTemplateInput", { enumerable: true, get: function () { return sample_data_1.sampleTemplateInput; } });
20
+ var validate_1 = require("./validate");
21
+ Object.defineProperty(exports, "validateTemplateDocument", { enumerable: true, get: function () { return validate_1.validateTemplateDocument; } });
22
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvZW1haWwvdGVtcGxhdGVzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLGlEQUFzRTtBQUE3RCwrR0FBQSxjQUFjLE9BQUE7QUFBRSxvSEFBQSxtQkFBbUIsT0FBQTtBQUM1QyxrREFBK0Q7QUFBdEQsb0hBQUEsdUJBQXVCLE9BQUE7QUFDaEMsaURBQW9EO0FBQTNDLGtIQUFBLGlCQUFpQixPQUFBO0FBQzFCLHFDQUF3RTtBQUEvRCxnSEFBQSxxQkFBcUIsT0FBQTtBQUM5QixtQ0FLa0I7QUFKaEIsNkdBQUEsbUJBQW1CLE9BQUE7QUFDbkIsd0dBQUEsY0FBYyxPQUFBO0FBQ2QsK0dBQUEscUJBQXFCLE9BQUE7QUFDckIsOEdBQUEsb0JBQW9CLE9BQUE7QUFFdEIsNkNBQW9EO0FBQTNDLGtIQUFBLG1CQUFtQixPQUFBO0FBTTVCLHVDQUdvQjtBQUZsQixvSEFBQSx3QkFBd0IsT0FBQSJ9
@@ -0,0 +1,39 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.loadEmailTemplate = void 0;
4
+ const lib_1 = require("../../shared/lib");
5
+ const code_override_1 = require("./code-override");
6
+ const render_1 = require("./render");
7
+ const validate_1 = require("./validate");
8
+ /**
9
+ * The Admin template of an editable mail kind, re-validated. A template never
10
+ * blocks a mail: a failed read or an invalid template falls back to the
11
+ * default (`null`) with a warning. Kinds the shop's code overrides and kinds
12
+ * without a template give `null` without reading.
13
+ */
14
+ const loadEmailTemplate = async (container, email, kind) => {
15
+ if (!(0, render_1.isEditableKind)(kind)) {
16
+ return null;
17
+ }
18
+ try {
19
+ if ((0, code_override_1.isCodeOverride)(email.getDispatchConfiguration(), kind)) {
20
+ return null;
21
+ }
22
+ const stored = await email.getTemplate(kind);
23
+ if (!stored) {
24
+ return null;
25
+ }
26
+ const validated = (0, validate_1.validateTemplateDocument)(kind, stored.document);
27
+ if (!validated.ok) {
28
+ (0, lib_1.resolveOptionalLogger)(container)?.warn(`email: template kind=${kind} is invalid; rendering the default (${validated.message})`);
29
+ return null;
30
+ }
31
+ return { subject: stored.subject, document: validated.document };
32
+ }
33
+ catch {
34
+ (0, lib_1.resolveOptionalLogger)(container)?.warn(`email: template kind=${kind} unavailable; rendering the default.`);
35
+ return null;
36
+ }
37
+ };
38
+ exports.loadEmailTemplate = loadEmailTemplate;
39
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9hZC10ZW1wbGF0ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9lbWFpbC90ZW1wbGF0ZXMvbG9hZC10ZW1wbGF0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFFQSwwQ0FBeUQ7QUFHekQsbURBQWlEO0FBQ2pELHFDQUEwQztBQUUxQyx5Q0FBc0Q7QUFFdEQ7Ozs7O0dBS0c7QUFDSSxNQUFNLGlCQUFpQixHQUFHLEtBQUssRUFDcEMsU0FBMEIsRUFDMUIsS0FBMkUsRUFDM0UsSUFBZSxFQUNzQixFQUFFO0lBQ3ZDLElBQUksQ0FBQyxJQUFBLHVCQUFjLEVBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztRQUMxQixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFDRCxJQUFJLENBQUM7UUFDSCxJQUFJLElBQUEsOEJBQWMsRUFBQyxLQUFLLENBQUMsd0JBQXdCLEVBQUUsRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQzNELE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQztRQUNELE1BQU0sTUFBTSxHQUFHLE1BQU0sS0FBSyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM3QyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDWixPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7UUFDRCxNQUFNLFNBQVMsR0FBRyxJQUFBLG1DQUF3QixFQUFDLElBQUksRUFBRSxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDbEUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLEVBQUUsQ0FBQztZQUNsQixJQUFBLDJCQUFxQixFQUFDLFNBQVMsQ0FBQyxFQUFFLElBQUksQ0FDcEMsd0JBQXdCLElBQUksdUNBQXVDLFNBQVMsQ0FBQyxPQUFPLEdBQUcsQ0FDeEYsQ0FBQztZQUNGLE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQztRQUNELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxDQUFDLE9BQU8sRUFBRSxRQUFRLEVBQUUsU0FBUyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ25FLENBQUM7SUFBQyxNQUFNLENBQUM7UUFDUCxJQUFBLDJCQUFxQixFQUFDLFNBQVMsQ0FBQyxFQUFFLElBQUksQ0FDcEMsd0JBQXdCLElBQUksc0NBQXNDLENBQ25FLENBQUM7UUFDRixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7QUFDSCxDQUFDLENBQUM7QUE5QlcsUUFBQSxpQkFBaUIscUJBOEI1QiJ9
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.renderTemplatePreview = void 0;
4
+ const utils_1 = require("@medusajs/framework/utils");
5
+ const render_email_1 = require("../rendering/render-email");
6
+ const render_1 = require("./render");
7
+ const sample_data_1 = require("./sample-data");
8
+ const validate_1 = require("./validate");
9
+ /**
10
+ * A template rendered in the shop's layout, as the Admin editor shows it:
11
+ * with `input` (validated data of the same kind, e.g. from a real order) or
12
+ * else sample data. Throws `INVALID_DATA` for a document the kind does not
13
+ * accept.
14
+ */
15
+ const renderTemplatePreview = ({ configuration, document, input, kind, shop, subject, }) => {
16
+ const validated = (0, validate_1.validateTemplateDocument)(kind, document);
17
+ if (!validated.ok) {
18
+ throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, validated.message);
19
+ }
20
+ const content = (0, render_1.renderTemplatedEmail)({
21
+ configuration,
22
+ input: input ?? (0, sample_data_1.sampleTemplateInput)(kind),
23
+ shop,
24
+ template: { subject, document: validated.document },
25
+ });
26
+ return {
27
+ subject: content.subject,
28
+ html: (0, render_email_1.layoutEmail)(configuration, kind, content, shop),
29
+ text: content.text,
30
+ };
31
+ };
32
+ exports.renderTemplatePreview = renderTemplatePreview;
33
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJldmlldy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9lbWFpbC90ZW1wbGF0ZXMvcHJldmlldy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxxREFBd0Q7QUFHeEQsNERBQXdEO0FBS3hELHFDQUFnRDtBQUNoRCwrQ0FBb0Q7QUFFcEQseUNBQXNEO0FBUXREOzs7OztHQUtHO0FBQ0ksTUFBTSxxQkFBcUIsR0FBRyxDQUFDLEVBQ3BDLGFBQWEsRUFDYixRQUFRLEVBQ1IsS0FBSyxFQUNMLElBQUksRUFDSixJQUFJLEVBQ0osT0FBTyxHQVFQLEVBQW1CLEVBQUU7SUFDckIsTUFBTSxTQUFTLEdBQUcsSUFBQSxtQ0FBd0IsRUFBQyxJQUFJLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDM0QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLEVBQUUsQ0FBQztRQUNsQixNQUFNLElBQUksbUJBQVcsQ0FBQyxtQkFBVyxDQUFDLEtBQUssQ0FBQyxZQUFZLEVBQUUsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzNFLENBQUM7SUFDRCxNQUFNLE9BQU8sR0FBRyxJQUFBLDZCQUFvQixFQUFDO1FBQ25DLGFBQWE7UUFDYixLQUFLLEVBQUUsS0FBSyxJQUFJLElBQUEsaUNBQW1CLEVBQUMsSUFBSSxDQUFDO1FBQ3pDLElBQUk7UUFDSixRQUFRLEVBQUUsRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLFNBQVMsQ0FBQyxRQUFRLEVBQUU7S0FDcEQsQ0FBQyxDQUFDO0lBQ0gsT0FBTztRQUNMLE9BQU8sRUFBRSxPQUFPLENBQUMsT0FBTztRQUN4QixJQUFJLEVBQUUsSUFBQSwwQkFBVyxFQUFDLGFBQWEsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQztRQUNyRCxJQUFJLEVBQUUsT0FBTyxDQUFDLElBQUk7S0FDbkIsQ0FBQztBQUNKLENBQUMsQ0FBQztBQTlCVyxRQUFBLHFCQUFxQix5QkE4QmhDIn0=
@@ -0,0 +1,70 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.renderTemplatedEmail = exports.renderTemplateSubject = exports.hasTemplateSnapshot = exports.isEditableKind = void 0;
4
+ const email_1 = require("@hartl-services/medusa-food-supplements-contracts/schemas/email");
5
+ const email_html_1 = require("../rendering/email-html");
6
+ const placeholders_1 = require("./blocks/placeholders");
7
+ const render_document_1 = require("./blocks/render-document");
8
+ const documents_1 = require("./defaults/documents");
9
+ const subjects_1 = require("./defaults/subjects");
10
+ const isEditableKind = (kind) => email_1.EMAIL_EDITABLE_KINDS.includes(kind);
11
+ exports.isEditableKind = isEditableKind;
12
+ /**
13
+ * Whether the mail carries the snapshot a template needs. Mails stored
14
+ * before their snapshot existed keep their short code text; a cancellation
15
+ * renders its blocks without data, and the account and affiliate mails
16
+ * always carry all their data.
17
+ */
18
+ const hasTemplateSnapshot = (input) => {
19
+ switch (input.kind) {
20
+ case "order.shipped":
21
+ return input.data.shipment !== undefined;
22
+ case "order.canceled":
23
+ case "auth.password_reset":
24
+ case "auth.verification":
25
+ case "user.invite":
26
+ case "affiliate.consignment_report_due":
27
+ case "affiliate.application_submitted.admin":
28
+ return true;
29
+ case "order.received":
30
+ case "order.received.admin":
31
+ case "order.return_requested":
32
+ case "order.return_received":
33
+ case "order.refunded":
34
+ return input.data.summary !== undefined;
35
+ }
36
+ };
37
+ exports.hasTemplateSnapshot = hasTemplateSnapshot;
38
+ const SUBJECT_TOKEN = /\{\{([a-z_]+)\}\}/g;
39
+ /**
40
+ * A stored subject with its `{{key}}` tokens resolved (only the kind's
41
+ * placeholders; other text stays literal) and whitespace collapsed; `null`,
42
+ * blank or an empty result gives the default subject.
43
+ */
44
+ const renderTemplateSubject = (kind, subject, values, fallback) => {
45
+ if (!subject?.trim()) {
46
+ return fallback;
47
+ }
48
+ const allowed = email_1.EMAIL_TEMPLATE_CATALOG[kind].placeholders;
49
+ const resolved = subject
50
+ .replace(SUBJECT_TOKEN, (token, key) => allowed.includes(key) ? values[key] : token)
51
+ .replace(/\s+/g, " ")
52
+ .trim();
53
+ return resolved || fallback;
54
+ };
55
+ exports.renderTemplateSubject = renderTemplateSubject;
56
+ /**
57
+ * Renders an editable mail from a template: the stored one, or the default
58
+ * document and subject when `template` is `null`.
59
+ */
60
+ const renderTemplatedEmail = ({ configuration, input, shop, template, }) => {
61
+ const values = (0, placeholders_1.placeholderValues)(configuration, input);
62
+ const { bodyHtml, text } = (0, render_document_1.renderTemplateDocument)({ configuration, input, palette: (0, email_html_1.paletteFor)(shop), values }, template?.document ?? (0, documents_1.defaultTemplateDocument)(input.kind));
63
+ return {
64
+ bodyHtml,
65
+ subject: (0, exports.renderTemplateSubject)(input.kind, template?.subject ?? null, values, (0, subjects_1.defaultSubject)(configuration, input)),
66
+ text,
67
+ };
68
+ };
69
+ exports.renderTemplatedEmail = renderTemplatedEmail;
70
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVuZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2VtYWlsL3RlbXBsYXRlcy9yZW5kZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsMkZBR3lFO0FBR3pFLHdEQUFxRDtBQUVyRCx3REFBa0Y7QUFDbEYsOERBQWtFO0FBQ2xFLG9EQUErRDtBQUMvRCxrREFBcUQ7QUFPOUMsTUFBTSxjQUFjLEdBQUcsQ0FBQyxJQUFZLEVBQTZCLEVBQUUsQ0FDdkUsNEJBQThDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBRHBELFFBQUEsY0FBYyxrQkFDc0M7QUFFakU7Ozs7O0dBS0c7QUFDSSxNQUFNLG1CQUFtQixHQUFHLENBQUMsS0FBeUIsRUFBVyxFQUFFO0lBQ3hFLFFBQVEsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ25CLEtBQUssZUFBZTtZQUNsQixPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsUUFBUSxLQUFLLFNBQVMsQ0FBQztRQUMzQyxLQUFLLGdCQUFnQixDQUFDO1FBQ3RCLEtBQUsscUJBQXFCLENBQUM7UUFDM0IsS0FBSyxtQkFBbUIsQ0FBQztRQUN6QixLQUFLLGFBQWEsQ0FBQztRQUNuQixLQUFLLGtDQUFrQyxDQUFDO1FBQ3hDLEtBQUssdUNBQXVDO1lBQzFDLE9BQU8sSUFBSSxDQUFDO1FBQ2QsS0FBSyxnQkFBZ0IsQ0FBQztRQUN0QixLQUFLLHNCQUFzQixDQUFDO1FBQzVCLEtBQUssd0JBQXdCLENBQUM7UUFDOUIsS0FBSyx1QkFBdUIsQ0FBQztRQUM3QixLQUFLLGdCQUFnQjtZQUNuQixPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBTyxLQUFLLFNBQVMsQ0FBQztJQUM1QyxDQUFDO0FBQ0gsQ0FBQyxDQUFDO0FBbEJXLFFBQUEsbUJBQW1CLHVCQWtCOUI7QUFFRixNQUFNLGFBQWEsR0FBRyxvQkFBb0IsQ0FBQztBQUUzQzs7OztHQUlHO0FBQ0ksTUFBTSxxQkFBcUIsR0FBRyxDQUNuQyxJQUF1QixFQUN2QixPQUFzQixFQUN0QixNQUF5QixFQUN6QixRQUFnQixFQUNSLEVBQUU7SUFDVixJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksRUFBRSxFQUFFLENBQUM7UUFDckIsT0FBTyxRQUFRLENBQUM7SUFDbEIsQ0FBQztJQUNELE1BQU0sT0FBTyxHQUEwQiw4QkFBc0IsQ0FBQyxJQUFJLENBQUMsQ0FBQyxZQUFZLENBQUM7SUFDakYsTUFBTSxRQUFRLEdBQUcsT0FBTztTQUNyQixPQUFPLENBQUMsYUFBYSxFQUFFLENBQUMsS0FBSyxFQUFFLEdBQVcsRUFBRSxFQUFFLENBQzdDLE9BQU8sQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUE4QixDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FDdkU7U0FDQSxPQUFPLENBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQztTQUNwQixJQUFJLEVBQUUsQ0FBQztJQUNWLE9BQU8sUUFBUSxJQUFJLFFBQVEsQ0FBQztBQUM5QixDQUFDLENBQUM7QUFqQlcsUUFBQSxxQkFBcUIseUJBaUJoQztBQUVGOzs7R0FHRztBQUNJLE1BQU0sb0JBQW9CLEdBQUcsQ0FBQyxFQUNuQyxhQUFhLEVBQ2IsS0FBSyxFQUNMLElBQUksRUFDSixRQUFRLEdBTVIsRUFBd0IsRUFBRTtJQUMxQixNQUFNLE1BQU0sR0FBRyxJQUFBLGdDQUFpQixFQUFDLGFBQWEsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUN2RCxNQUFNLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxHQUFHLElBQUEsd0NBQXNCLEVBQy9DLEVBQUUsYUFBYSxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsSUFBQSx1QkFBVSxFQUFDLElBQUksQ0FBQyxFQUFFLE1BQU0sRUFBRSxFQUMzRCxRQUFRLEVBQUUsUUFBUSxJQUFJLElBQUEsbUNBQXVCLEVBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUMxRCxDQUFDO0lBQ0YsT0FBTztRQUNMLFFBQVE7UUFDUixPQUFPLEVBQUUsSUFBQSw2QkFBcUIsRUFDNUIsS0FBSyxDQUFDLElBQUksRUFDVixRQUFRLEVBQUUsT0FBTyxJQUFJLElBQUksRUFDekIsTUFBTSxFQUNOLElBQUEseUJBQWMsRUFBQyxhQUFhLEVBQUUsS0FBSyxDQUFDLENBQ3JDO1FBQ0QsSUFBSTtLQUNMLENBQUM7QUFDSixDQUFDLENBQUM7QUExQlcsUUFBQSxvQkFBb0Isd0JBMEIvQiJ9