@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
@@ -23,24 +23,30 @@ const zod_1 = require("@medusajs/framework/zod");
23
23
  const documents_1 = require("@hartl-services/medusa-food-supplements-contracts/events/documents");
24
24
  const email_1 = require("@hartl-services/medusa-food-supplements-contracts/schemas/email");
25
25
  const types_1 = require("../../email/types");
26
+ const lib_1 = require("../../shared/lib");
26
27
  const business_keys_1 = require("../../email/domain/business-keys");
27
28
  const plugin_features_1 = require("../../email/plugin-features");
28
29
  const customer_verification_snapshot_1 = require("../../email/customer-verification-snapshot");
29
30
  const start_customer_verification_snapshot_1 = require("../../email/application/start-customer-verification-snapshot");
30
31
  const resolve_shop_configuration_1 = require("../../email/rendering/resolve-shop-configuration");
31
32
  const failure_classification_1 = require("../../email/domain/failure-classification");
33
+ const templates_1 = require("../../email/templates");
32
34
  const attachment_1 = require("./domain/attachment");
33
35
  const message_state_1 = require("./domain/message-state");
36
+ const email_attachment_document_1 = __importDefault(require("./models/email-attachment-document"));
37
+ const email_attachment_document_version_1 = __importDefault(require("./models/email-attachment-document-version"));
34
38
  const email_attempt_1 = __importDefault(require("./models/email-attempt"));
35
39
  const email_message_1 = __importDefault(require("./models/email-message"));
36
- const email_terms_version_1 = __importDefault(require("./models/email-terms-version"));
40
+ const email_template_1 = __importDefault(require("./models/email-template"));
37
41
  exports.EMAIL_ATTEMPT_LEASE_MS = 2 * 60 * 1000;
38
42
  /** SQL list of the kinds only their subscriber may send (constants, no input). */
39
43
  const EPHEMERAL_KINDS_SQL = types_1.EPHEMERAL_EMAIL_KINDS.map((kind) => `'${kind}'`).join(", ");
40
44
  const EmailModuleServiceBase = (0, utils_1.MedusaService)({
41
45
  EmailMessage: email_message_1.default,
42
46
  EmailAttempt: email_attempt_1.default,
43
- EmailTermsVersion: email_terms_version_1.default,
47
+ EmailAttachmentDocument: email_attachment_document_1.default,
48
+ EmailAttachmentDocumentVersion: email_attachment_document_version_1.default,
49
+ EmailTemplate: email_template_1.default,
44
50
  });
45
51
  const asNonEmptyString = (value, field) => {
46
52
  if (typeof value !== "string" || !value.trim()) {
@@ -65,12 +71,50 @@ const asSafeStatusCode = (value, field) => {
65
71
  };
66
72
  const equalJson = (left, right) => JSON.stringify(left) === JSON.stringify(right);
67
73
  const UuidSchema = zod_1.z.string().uuid();
68
- const TermsPdfFilenameSchema = zod_1.z
74
+ const AttachmentPdfFilenameSchema = zod_1.z
69
75
  .string()
70
76
  .min(5)
71
77
  .max(255)
72
78
  .regex(/^(?!.*\.\.)[A-Za-z0-9](?:[A-Za-z0-9._ -]*[A-Za-z0-9_-])?\.pdf$/i);
73
79
  const Sha256Schema = zod_1.z.string().regex(/^[0-9a-f]{64}$/);
80
+ const ATTACHMENT_NAME_MAX_LENGTH = 120;
81
+ const isAttachableKind = (kind) => email_1.EMAIL_ATTACHABLE_KINDS.includes(kind);
82
+ /** Allowlisted, deduplicated, in the canonical kind order. */
83
+ const asAttachableKinds = (value) => {
84
+ if (!Array.isArray(value) ||
85
+ value.some((kind) => typeof kind !== "string" || !isAttachableKind(kind))) {
86
+ throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, `mail_kinds may only contain ${email_1.EMAIL_ATTACHABLE_KINDS.join(", ")}.`);
87
+ }
88
+ return email_1.EMAIL_ATTACHABLE_KINDS.filter((kind) => value.includes(kind));
89
+ };
90
+ const asAttachmentName = (value) => {
91
+ const name = asNonEmptyString(value, "name");
92
+ if (name.length > ATTACHMENT_NAME_MAX_LENGTH) {
93
+ throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, `name must not exceed ${ATTACHMENT_NAME_MAX_LENGTH} characters.`);
94
+ }
95
+ return name;
96
+ };
97
+ const EMAIL_TEMPLATE_MAX_SUBJECT_LENGTH = 200;
98
+ const asEditableKind = (value) => {
99
+ if (typeof value !== "string" || !(0, templates_1.isEditableKind)(value)) {
100
+ throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, `kind must be one of ${email_1.EMAIL_EDITABLE_KINDS.join(", ")}.`);
101
+ }
102
+ return value;
103
+ };
104
+ /** Trimmed subject; blank means the default subject (`null`). */
105
+ const asTemplateSubject = (value) => {
106
+ if (value === null || value === undefined) {
107
+ return null;
108
+ }
109
+ if (typeof value !== "string") {
110
+ throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, "subject must be a string or null.");
111
+ }
112
+ const subject = value.trim();
113
+ if (subject.length > EMAIL_TEMPLATE_MAX_SUBJECT_LENGTH) {
114
+ throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, `subject must not exceed ${EMAIL_TEMPLATE_MAX_SUBJECT_LENGTH} characters.`);
115
+ }
116
+ return subject || null;
117
+ };
74
118
  const asUuid = (value, field) => {
75
119
  const normalized = asNonEmptyString(value, field);
76
120
  if (!UuidSchema.safeParse(normalized).success) {
@@ -131,19 +175,16 @@ class EmailModuleService extends EmailModuleServiceBase {
131
175
  async upsertMessageFact(input, sharedContext = {}) {
132
176
  const normalized = this.normalizeFactInput(input);
133
177
  const manager = this.requireManager(sharedContext);
134
- await manager.execute("select pg_advisory_xact_lock(hashtext(?))", [
135
- `email:message:${normalized.business_key}`,
136
- ]);
178
+ await (0, lib_1.acquireAdvisoryXactLock)(manager, `email:message:${normalized.business_key}`);
137
179
  const rows = await manager.execute(`select * from "email_message" where "business_key" = ? for update`, [normalized.business_key], "all");
138
180
  const existing = rows[0] ? this.toMessageRecord(rows[0]) : null;
139
181
  if (!existing) {
140
- const attachments = [...normalized.attachments];
141
- if (normalized.terms_effective_at) {
142
- const termsAttachment = await this.findTermsAttachmentAt(normalized.terms_effective_at, sharedContext);
143
- if (termsAttachment) {
144
- attachments.push(termsAttachment);
145
- }
146
- }
182
+ const attachments = (0, attachment_1.orderEmailAttachments)([
183
+ ...normalized.attachments,
184
+ ...(isAttachableKind(normalized.kind)
185
+ ? await this.findLibraryAttachmentsAt(normalized.kind, normalized.attachments_effective_at ?? new Date(), sharedContext)
186
+ : []),
187
+ ]);
147
188
  const initialState = normalized.suppression_code
148
189
  ? {
149
190
  status: "suppressed",
@@ -210,41 +251,108 @@ class EmailModuleService extends EmailModuleServiceBase {
210
251
  }
211
252
  return message;
212
253
  }
213
- async createEmailTermsVersion(input, persistPrivatePdf, deletePrivatePdf, sharedContext = {}) {
214
- const normalized = this.normalizeTermsVersionInput(input);
254
+ async createAttachmentDocument(input, sharedContext = {}) {
255
+ const requestId = asUuid(input.request_id, "request_id");
256
+ const name = asAttachmentName(input.name);
257
+ const mailKinds = asAttachableKinds(input.mail_kinds);
215
258
  const manager = this.requireManager(sharedContext);
216
- await manager.execute("select pg_advisory_xact_lock(hashtext(?))", [
217
- `email:terms-version:${normalized.request_id}`,
218
- ]);
219
- const rows = await manager.execute(`select * from "email_terms_version" where "request_id" = ? for update`, [normalized.request_id], "all");
259
+ await (0, lib_1.acquireAdvisoryXactLock)(manager, `email:attachment-document:${requestId}`);
260
+ const rows = await manager.execute(`select * from "email_attachment_document"
261
+ where "request_id" = ? for update`, [requestId], "all");
220
262
  if (rows[0]) {
221
- const existing = this.toTermsVersionRecord(rows[0]);
263
+ if (rows[0].deleted_at) {
264
+ throw new utils_1.MedusaError(utils_1.MedusaError.Types.CONFLICT, "The attachment request was already consumed.");
265
+ }
266
+ const existing = this.toAttachmentDocumentRecord(rows[0]);
267
+ if (existing.name !== name ||
268
+ !equalJson(existing.mail_kinds, mailKinds)) {
269
+ throw new utils_1.MedusaError(utils_1.MedusaError.Types.CONFLICT, "The attachment request was reused with different data.");
270
+ }
271
+ return {
272
+ created: false,
273
+ attachment: await this.loadSafeAttachmentDocument(existing.id, sharedContext),
274
+ };
275
+ }
276
+ const created = (await this.createEmailAttachmentDocuments({ request_id: requestId, name, mail_kinds: mailKinds }, sharedContext));
277
+ await manager.flush?.();
278
+ return {
279
+ created: true,
280
+ attachment: await this.loadSafeAttachmentDocument(asNonEmptyString(created.id, "id"), sharedContext),
281
+ };
282
+ }
283
+ /**
284
+ * Renames and, when `mail_kinds` is given, reassigns a document; messages
285
+ * already created keep their snapshot.
286
+ */
287
+ async updateAttachmentDocument(documentId, input, sharedContext = {}) {
288
+ const id = asNonEmptyString(documentId, "attachment_id");
289
+ const name = asAttachmentName(input.name);
290
+ const mailKinds = input.mail_kinds === undefined
291
+ ? undefined
292
+ : asAttachableKinds(input.mail_kinds);
293
+ await this.lockAttachmentDocument(id, sharedContext);
294
+ await this.updateEmailAttachmentDocuments({ id, name, ...(mailKinds ? { mail_kinds: mailKinds } : {}) }, sharedContext);
295
+ await this.requireManager(sharedContext).flush?.();
296
+ return await this.loadSafeAttachmentDocument(id, sharedContext);
297
+ }
298
+ /**
299
+ * Attaches the document to one mail kind or detaches it. The kinds are read
300
+ * under the document lock, so two toggles of different kinds both persist.
301
+ */
302
+ async setAttachmentDocumentMailKind(documentId, kind, attached, sharedContext = {}) {
303
+ const id = asNonEmptyString(documentId, "attachment_id");
304
+ const [toggled] = asAttachableKinds([kind]);
305
+ const rows = await this.requireManager(sharedContext).execute(`select "mail_kinds" from "email_attachment_document"
306
+ where "id" = ? and "deleted_at" is null for update`, [id], "all");
307
+ if (!rows[0]) {
308
+ throw new utils_1.MedusaError(utils_1.MedusaError.Types.NOT_FOUND, "The attachment was not found.");
309
+ }
310
+ const current = asAttachableKinds(rows[0].mail_kinds);
311
+ const mailKinds = asAttachableKinds(attached
312
+ ? [...current, toggled]
313
+ : current.filter((candidate) => candidate !== toggled));
314
+ await this.updateEmailAttachmentDocuments({ id, mail_kinds: mailKinds }, sharedContext);
315
+ await this.requireManager(sharedContext).flush?.();
316
+ return await this.loadSafeAttachmentDocument(id, sharedContext);
317
+ }
318
+ async createAttachmentDocumentVersion(documentId, input, persistPrivatePdf, deletePrivatePdf, sharedContext = {}) {
319
+ const id = asNonEmptyString(documentId, "attachment_id");
320
+ const normalized = this.normalizeAttachmentVersionInput(input);
321
+ const manager = this.requireManager(sharedContext);
322
+ await (0, lib_1.acquireAdvisoryXactLock)(manager, `email:attachment-version:${normalized.request_id}`);
323
+ const rows = await manager.execute(`select * from "email_attachment_document_version"
324
+ where "request_id" = ? for update`, [normalized.request_id], "all");
325
+ if (rows[0]) {
326
+ const existing = this.toAttachmentVersionRecord(rows[0]);
222
327
  if (existing.deleted_at) {
223
- throw new utils_1.MedusaError(utils_1.MedusaError.Types.CONFLICT, "The terms upload request was already consumed.");
328
+ throw new utils_1.MedusaError(utils_1.MedusaError.Types.CONFLICT, "The attachment upload request was already consumed.");
224
329
  }
225
- if (existing.filename !== normalized.filename ||
330
+ if (existing.document_id !== id ||
331
+ existing.filename !== normalized.filename ||
226
332
  existing.effective_at.getTime() !== normalized.effective_at.getTime() ||
227
333
  existing.byte_size !== normalized.byte_size ||
228
334
  existing.sha256 !== normalized.sha256) {
229
- throw new utils_1.MedusaError(utils_1.MedusaError.Types.CONFLICT, "The terms upload request was reused with different PDF data.");
335
+ throw new utils_1.MedusaError(utils_1.MedusaError.Types.CONFLICT, "The attachment upload request was reused with different PDF data.");
230
336
  }
231
337
  return {
232
338
  created: false,
233
- terms_version: this.toSafeAdminTermsVersion(existing),
339
+ version: this.toSafeAttachmentVersion(existing),
234
340
  };
235
341
  }
342
+ await this.lockAttachmentDocument(id, sharedContext);
236
343
  let fileId = null;
237
344
  try {
238
345
  fileId = asNonEmptyString(await persistPrivatePdf(), "file_id");
239
- await this.createEmailTermsVersions({ ...normalized, file_id: fileId }, sharedContext);
346
+ await this.createEmailAttachmentDocumentVersions({ ...normalized, document_id: id, file_id: fileId }, sharedContext);
240
347
  await manager.flush?.();
241
- const createdRows = await manager.execute(`select * from "email_terms_version" where "request_id" = ? limit 1`, [normalized.request_id], "all");
348
+ const createdRows = await manager.execute(`select * from "email_attachment_document_version"
349
+ where "request_id" = ? limit 1`, [normalized.request_id], "all");
242
350
  if (!createdRows[0]) {
243
- throw new utils_1.MedusaError(utils_1.MedusaError.Types.UNEXPECTED_STATE, "The terms version was not persisted.");
351
+ throw new utils_1.MedusaError(utils_1.MedusaError.Types.UNEXPECTED_STATE, "The attachment version was not persisted.");
244
352
  }
245
353
  return {
246
354
  created: true,
247
- terms_version: this.toSafeAdminTermsVersion(this.toTermsVersionRecord(createdRows[0])),
355
+ version: this.toSafeAttachmentVersion(this.toAttachmentVersionRecord(createdRows[0])),
248
356
  };
249
357
  }
250
358
  catch (error) {
@@ -259,36 +367,104 @@ class EmailModuleService extends EmailModuleServiceBase {
259
367
  throw error;
260
368
  }
261
369
  }
262
- async listAdminEmailTermsVersions(input, sharedContext = {}) {
263
- const limit = this.positiveLimit(input.limit);
264
- const offset = this.safeOffset(input.offset);
370
+ /** Every document by name, each with its versions newest effective first. */
371
+ async listAdminAttachmentDocuments(sharedContext = {}) {
265
372
  const manager = this.requireManager(sharedContext);
266
- const [rows, countRows] = await Promise.all([
267
- manager.execute(`select * from "email_terms_version"
373
+ const [documentRows, versionRows] = await Promise.all([
374
+ manager.execute(`select * from "email_attachment_document"
268
375
  where "deleted_at" is null
269
- order by "effective_at" desc, "created_at" desc, "id" desc
270
- limit ? offset ?`, [limit, offset], "all"),
271
- manager.execute(`select count(*) as "count" from "email_terms_version"
272
- where "deleted_at" is null`, [], "all"),
376
+ order by "name" asc, "id" asc`, [], "all"),
377
+ manager.execute(`select v.* from "email_attachment_document_version" v
378
+ join "email_attachment_document" d
379
+ on d."id" = v."document_id" and d."deleted_at" is null
380
+ where v."deleted_at" is null
381
+ order by v."effective_at" desc, v."created_at" desc, v."id" desc`, [], "all"),
273
382
  ]);
274
- return {
275
- terms_versions: rows.map((row) => this.toSafeAdminTermsVersion(this.toTermsVersionRecord(row))),
276
- count: Number(countRows[0]?.count ?? 0),
277
- limit,
278
- offset,
279
- };
383
+ const versions = versionRows.map((row) => this.toAttachmentVersionRecord(row));
384
+ return documentRows.map((row) => this.toSafeAttachmentDocument(this.toAttachmentDocumentRecord(row), versions.filter((version) => version.document_id === row.id)));
385
+ }
386
+ /**
387
+ * The library attachments a new mail of `kind` would carry at `at`: per
388
+ * assigned document its newest version effective then, ordered by name.
389
+ */
390
+ async listLibraryAttachmentsAt(kind, at, sharedContext = {}) {
391
+ const [attachableKind] = asAttachableKinds([kind]);
392
+ return await this.findLibraryAttachmentsAt(attachableKind, asDate(at, "at"), sharedContext);
280
393
  }
281
- async getEmailTermsVersionFile(termsVersionId, sharedContext = {}) {
282
- const rows = await this.requireManager(sharedContext).execute(`select "file_id", "filename" from "email_terms_version"
283
- where "id" = ? and "deleted_at" is null limit 1`, [asNonEmptyString(termsVersionId, "terms_version_id")], "all");
394
+ async getAttachmentDocumentVersionFile(documentId, versionId, sharedContext = {}) {
395
+ const rows = await this.requireManager(sharedContext).execute(`select v."file_id", v."filename"
396
+ from "email_attachment_document_version" v
397
+ join "email_attachment_document" d
398
+ on d."id" = v."document_id" and d."deleted_at" is null
399
+ where v."id" = ? and v."document_id" = ? and v."deleted_at" is null
400
+ limit 1`, [
401
+ asNonEmptyString(versionId, "version_id"),
402
+ asNonEmptyString(documentId, "attachment_id"),
403
+ ], "all");
284
404
  if (!rows[0]) {
285
- throw new utils_1.MedusaError(utils_1.MedusaError.Types.NOT_FOUND, "The terms version was not found.");
405
+ throw new utils_1.MedusaError(utils_1.MedusaError.Types.NOT_FOUND, "The attachment version was not found.");
286
406
  }
287
407
  return {
288
408
  file_id: asNonEmptyString(rows[0].file_id, "file_id"),
289
409
  filename: asNonEmptyString(rows[0].filename, "filename"),
290
410
  };
291
411
  }
412
+ /** The stored template of a mail kind; `null` while the default applies. */
413
+ async getTemplate(kind, sharedContext = {}) {
414
+ const rows = await this.requireManager(sharedContext).execute(`select "kind", "subject", "document", "updated_at" from "email_template"
415
+ where "kind" = ? and "deleted_at" is null
416
+ limit 1`, [asEditableKind(kind)], "all");
417
+ return rows[0] ? this.toTemplateRecord(rows[0]) : null;
418
+ }
419
+ /** Every stored template, by kind. */
420
+ async listTemplates(sharedContext = {}) {
421
+ const rows = await this.requireManager(sharedContext).execute(`select "kind", "subject", "document", "updated_at" from "email_template"
422
+ where "deleted_at" is null
423
+ order by "kind" asc`, [], "all");
424
+ return rows
425
+ .filter((row) => typeof row.kind === "string" && (0, templates_1.isEditableKind)(row.kind))
426
+ .map((row) => this.toTemplateRecord(row));
427
+ }
428
+ /** Stores the template of a mail kind, replacing a stored one. */
429
+ async saveTemplate(kind, input, sharedContext = {}) {
430
+ const editableKind = asEditableKind(kind);
431
+ const subject = asTemplateSubject(input?.subject);
432
+ const validated = (0, templates_1.validateTemplateDocument)(editableKind, input?.document);
433
+ if (!validated.ok) {
434
+ throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, validated.message);
435
+ }
436
+ const rows = await this.requireManager(sharedContext).execute(`insert into "email_template"
437
+ ("id", "kind", "subject", "document", "created_at", "updated_at")
438
+ values (?, ?, ?, ?::jsonb, now(), now())
439
+ on conflict ("kind") do update
440
+ set "subject" = excluded."subject",
441
+ "document" = excluded."document",
442
+ "updated_at" = now(),
443
+ "deleted_at" = null
444
+ returning "kind", "subject", "document", "updated_at"`, [
445
+ (0, utils_1.generateEntityId)(undefined, "etpl"),
446
+ editableKind,
447
+ subject,
448
+ JSON.stringify(validated.document),
449
+ ], "all");
450
+ if (!rows[0]) {
451
+ throw new utils_1.MedusaError(utils_1.MedusaError.Types.UNEXPECTED_STATE, "The email template was not persisted.");
452
+ }
453
+ return this.toTemplateRecord(rows[0]);
454
+ }
455
+ /** Back to the default template of a mail kind; nothing stored is fine. */
456
+ async resetTemplate(kind, sharedContext = {}) {
457
+ await this.requireManager(sharedContext).execute(`delete from "email_template" where "kind" = ?`, [asEditableKind(kind)]);
458
+ }
459
+ toTemplateRecord(row) {
460
+ const document = typeof row.document === "string" ? JSON.parse(row.document) : row.document;
461
+ return {
462
+ kind: asEditableKind(row.kind),
463
+ subject: asNullableString(row.subject),
464
+ document: document,
465
+ updated_at: asDate(row.updated_at, "updated_at"),
466
+ };
467
+ }
292
468
  async createAffiliateReminderMessage(input, resolveRecipient, sharedContext = {}) {
293
469
  const factInput = {
294
470
  kind: "affiliate.consignment_report_due",
@@ -302,9 +478,7 @@ class EmailModuleService extends EmailModuleServiceBase {
302
478
  };
303
479
  const normalized = this.normalizeFactInput(factInput);
304
480
  const manager = this.requireManager(sharedContext);
305
- await manager.execute("select pg_advisory_xact_lock(hashtext(?))", [
306
- `email:message:${normalized.business_key}`,
307
- ]);
481
+ await (0, lib_1.acquireAdvisoryXactLock)(manager, `email:message:${normalized.business_key}`);
308
482
  const rows = await manager.execute(`select * from "email_message" where "business_key" = ? for update`, [normalized.business_key], "all");
309
483
  if (rows[0]) {
310
484
  const existing = this.toMessageRecord(rows[0]);
@@ -351,9 +525,7 @@ class EmailModuleService extends EmailModuleServiceBase {
351
525
  const requestedByAdminId = asNonEmptyString(input.requested_by_admin_id, "requested_by_admin_id");
352
526
  const businessKey = (0, business_keys_1.adminResendBusinessKey)(sourceMessageId, requestId);
353
527
  const manager = this.requireManager(sharedContext);
354
- await manager.execute("select pg_advisory_xact_lock(hashtext(?))", [
355
- `email:message:${businessKey}`,
356
- ]);
528
+ await (0, lib_1.acquireAdvisoryXactLock)(manager, `email:message:${businessKey}`);
357
529
  const replayRows = await manager.execute(`select * from "email_message" where "business_key" = ? for update`, [businessKey], "all");
358
530
  if (replayRows[0]) {
359
531
  const replay = this.toMessageRecord(replayRows[0]);
@@ -853,11 +1025,11 @@ class EmailModuleService extends EmailModuleServiceBase {
853
1025
  ? null
854
1026
  : types_1.EmailPersistedDataSchemas[kind].parse(input.template_data);
855
1027
  const attachments = documents_1.DocumentsEmailArtifactSchema.array().parse(input.attachments ?? []);
856
- const termsEffectiveAt = input.terms_effective_at
857
- ? asDate(input.terms_effective_at, "terms_effective_at")
1028
+ const attachmentsEffectiveAt = input.attachments_effective_at
1029
+ ? asDate(input.attachments_effective_at, "attachments_effective_at")
858
1030
  : null;
859
- if (termsEffectiveAt && kind !== "order.received") {
860
- throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, "terms_effective_at is only valid for customer order confirmations.");
1031
+ if (attachmentsEffectiveAt && !isAttachableKind(kind)) {
1032
+ throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, "attachments_effective_at is only valid for customer mails with library attachments.");
861
1033
  }
862
1034
  const suppressionCode = input.suppression_code ?? null;
863
1035
  if (suppressionCode && !(0, message_state_1.isEmailSafeStatusCode)(suppressionCode)) {
@@ -890,7 +1062,7 @@ class EmailModuleService extends EmailModuleServiceBase {
890
1062
  ? asDate(input.payload_expires_at, "payload_expires_at")
891
1063
  : null,
892
1064
  suppression_code: suppressionCode,
893
- terms_effective_at: termsEffectiveAt,
1065
+ attachments_effective_at: attachmentsEffectiveAt,
894
1066
  };
895
1067
  }
896
1068
  assertSameMessageIdentity(existing, input) {
@@ -938,26 +1110,59 @@ class EmailModuleService extends EmailModuleServiceBase {
938
1110
  }
939
1111
  byId.set(id, artifact);
940
1112
  }
941
- return [...byId.values()];
1113
+ return (0, attachment_1.orderEmailAttachments)([...byId.values()]);
1114
+ }
1115
+ /**
1116
+ * For every document assigned to `kind`, its newest version effective at
1117
+ * `effectiveAt`; documents without one are skipped. Ordered by document
1118
+ * name, then id.
1119
+ */
1120
+ async findLibraryAttachmentsAt(kind, effectiveAt, sharedContext) {
1121
+ const rows = await this.requireManager(sharedContext).execute(`select * from (
1122
+ select distinct on (d."id")
1123
+ d."id" as "document_id", d."name", v."id" as "version_id",
1124
+ v."file_id", v."filename", v."byte_size", v."sha256"
1125
+ from "email_attachment_document" d
1126
+ join "email_attachment_document_version" v
1127
+ on v."document_id" = d."id"
1128
+ and v."deleted_at" is null
1129
+ and v."effective_at" <= ?
1130
+ where d."deleted_at" is null
1131
+ and d."mail_kinds" @> cast(? as jsonb)
1132
+ order by d."id", v."effective_at" desc, v."created_at" desc, v."id" desc
1133
+ ) as "current"
1134
+ order by "name" asc, "document_id" asc`, [effectiveAt, JSON.stringify([kind])], "all");
1135
+ return rows.map((row) => ({
1136
+ source: "library",
1137
+ document_id: asNonEmptyString(row.document_id, "document_id"),
1138
+ version_id: asNonEmptyString(row.version_id, "version_id"),
1139
+ file_id: asNonEmptyString(row.file_id, "file_id"),
1140
+ filename: asNonEmptyString(row.filename, "filename"),
1141
+ content_type: "application/pdf",
1142
+ byte_size: Number(row.byte_size),
1143
+ sha256: asNonEmptyString(row.sha256, "sha256"),
1144
+ }));
942
1145
  }
943
- async findTermsAttachmentAt(effectiveAt, sharedContext) {
944
- const rows = await this.requireManager(sharedContext).execute(`select * from "email_terms_version"
945
- where "effective_at" <= ? and "deleted_at" is null
946
- order by "effective_at" desc, "created_at" desc, "id" desc
947
- limit 1`, [effectiveAt], "all");
1146
+ async lockAttachmentDocument(documentId, sharedContext) {
1147
+ const rows = await this.requireManager(sharedContext).execute(`select "id" from "email_attachment_document"
1148
+ where "id" = ? and "deleted_at" is null for update`, [documentId], "all");
948
1149
  if (!rows[0]) {
949
- return null;
1150
+ throw new utils_1.MedusaError(utils_1.MedusaError.Types.NOT_FOUND, "The attachment was not found.");
950
1151
  }
951
- const version = this.toTermsVersionRecord(rows[0]);
952
- return {
953
- source: "terms",
954
- terms_version_id: version.id,
955
- file_id: version.file_id,
956
- filename: version.filename,
957
- content_type: "application/pdf",
958
- byte_size: version.byte_size,
959
- sha256: version.sha256,
960
- };
1152
+ }
1153
+ async loadSafeAttachmentDocument(documentId, sharedContext) {
1154
+ const manager = this.requireManager(sharedContext);
1155
+ const [documentRows, versionRows] = await Promise.all([
1156
+ manager.execute(`select * from "email_attachment_document"
1157
+ where "id" = ? and "deleted_at" is null limit 1`, [documentId], "all"),
1158
+ manager.execute(`select * from "email_attachment_document_version"
1159
+ where "document_id" = ? and "deleted_at" is null
1160
+ order by "effective_at" desc, "created_at" desc, "id" desc`, [documentId], "all"),
1161
+ ]);
1162
+ if (!documentRows[0]) {
1163
+ throw new utils_1.MedusaError(utils_1.MedusaError.Types.NOT_FOUND, "The attachment was not found.");
1164
+ }
1165
+ return this.toSafeAttachmentDocument(this.toAttachmentDocumentRecord(documentRows[0]), versionRows.map((row) => this.toAttachmentVersionRecord(row)));
961
1166
  }
962
1167
  async resolvePendingState(requiredFacts, receivedFacts, predecessorMessageId, sharedContext) {
963
1168
  if (!predecessorMessageId) {
@@ -1110,14 +1315,14 @@ class EmailModuleService extends EmailModuleServiceBase {
1110
1315
  updated_at: asDate(value.updated_at, "updated_at").toISOString(),
1111
1316
  };
1112
1317
  }
1113
- normalizeTermsVersionInput(input) {
1318
+ normalizeAttachmentVersionInput(input) {
1114
1319
  const byteSize = Number(input.byte_size);
1115
1320
  if (!Number.isInteger(byteSize) ||
1116
1321
  byteSize < 1 ||
1117
- byteSize > email_1.EMAIL_TERMS_MAX_PDF_BYTES) {
1118
- throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, `byte_size must be from 1 to ${email_1.EMAIL_TERMS_MAX_PDF_BYTES}.`);
1322
+ byteSize > email_1.EMAIL_ATTACHMENT_MAX_PDF_BYTES) {
1323
+ throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, `byte_size must be from 1 to ${email_1.EMAIL_ATTACHMENT_MAX_PDF_BYTES}.`);
1119
1324
  }
1120
- const filename = TermsPdfFilenameSchema.safeParse(input.filename);
1325
+ const filename = AttachmentPdfFilenameSchema.safeParse(input.filename);
1121
1326
  if (!filename.success) {
1122
1327
  throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, "filename must be a safe PDF filename.");
1123
1328
  }
@@ -1133,9 +1338,20 @@ class EmailModuleService extends EmailModuleServiceBase {
1133
1338
  sha256: sha256.data,
1134
1339
  };
1135
1340
  }
1136
- toTermsVersionRecord(value) {
1341
+ toAttachmentDocumentRecord(value) {
1342
+ return {
1343
+ id: asNonEmptyString(value.id, "id"),
1344
+ request_id: asUuid(value.request_id, "request_id"),
1345
+ name: asNonEmptyString(value.name, "name"),
1346
+ mail_kinds: asAttachableKinds(value.mail_kinds),
1347
+ created_at: asDate(value.created_at, "created_at"),
1348
+ updated_at: asDate(value.updated_at, "updated_at"),
1349
+ };
1350
+ }
1351
+ toAttachmentVersionRecord(value) {
1137
1352
  return {
1138
1353
  id: asNonEmptyString(value.id, "id"),
1354
+ document_id: asNonEmptyString(value.document_id, "document_id"),
1139
1355
  request_id: asUuid(value.request_id, "request_id"),
1140
1356
  filename: asNonEmptyString(value.filename, "filename"),
1141
1357
  file_id: asNonEmptyString(value.file_id, "file_id"),
@@ -1143,11 +1359,10 @@ class EmailModuleService extends EmailModuleServiceBase {
1143
1359
  byte_size: Number(value.byte_size),
1144
1360
  sha256: asNonEmptyString(value.sha256, "sha256"),
1145
1361
  created_at: asDate(value.created_at, "created_at"),
1146
- updated_at: asDate(value.updated_at, "updated_at"),
1147
1362
  deleted_at: asNullableDate(value.deleted_at),
1148
1363
  };
1149
1364
  }
1150
- toSafeAdminTermsVersion(value) {
1365
+ toSafeAttachmentVersion(value) {
1151
1366
  return {
1152
1367
  id: value.id,
1153
1368
  filename: value.filename,
@@ -1157,6 +1372,16 @@ class EmailModuleService extends EmailModuleServiceBase {
1157
1372
  created_at: value.created_at.toISOString(),
1158
1373
  };
1159
1374
  }
1375
+ toSafeAttachmentDocument(document, versions) {
1376
+ return {
1377
+ id: document.id,
1378
+ name: document.name,
1379
+ mail_kinds: document.mail_kinds,
1380
+ versions: versions.map((version) => this.toSafeAttachmentVersion(version)),
1381
+ created_at: document.created_at.toISOString(),
1382
+ updated_at: document.updated_at.toISOString(),
1383
+ };
1384
+ }
1160
1385
  positiveLimit(value) {
1161
1386
  if (!Number.isInteger(value) || value < 1 || value > 100) {
1162
1387
  throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, "limit must be an integer from 1 to 100.");
@@ -1170,11 +1395,7 @@ class EmailModuleService extends EmailModuleServiceBase {
1170
1395
  return value;
1171
1396
  }
1172
1397
  requireManager(sharedContext) {
1173
- const manager = sharedContext.transactionManager;
1174
- if (!manager) {
1175
- throw new utils_1.MedusaError(utils_1.MedusaError.Types.UNEXPECTED_STATE, "Email persistence requires a database transaction manager.");
1176
- }
1177
- return manager;
1398
+ return (0, lib_1.requireTransactionManager)(sharedContext, "Email persistence requires a database transaction manager.");
1178
1399
  }
1179
1400
  }
1180
1401
  __decorate([
@@ -1191,27 +1412,83 @@ __decorate([
1191
1412
  __metadata("design:paramtypes", [Object, Object]),
1192
1413
  __metadata("design:returntype", Promise)
1193
1414
  ], EmailModuleService.prototype, "upsertMessageFact", null);
1415
+ __decorate([
1416
+ (0, utils_1.InjectTransactionManager)(),
1417
+ __param(1, (0, utils_1.MedusaContext)()),
1418
+ __metadata("design:type", Function),
1419
+ __metadata("design:paramtypes", [Object, Object]),
1420
+ __metadata("design:returntype", Promise)
1421
+ ], EmailModuleService.prototype, "createAttachmentDocument", null);
1422
+ __decorate([
1423
+ (0, utils_1.InjectTransactionManager)(),
1424
+ __param(2, (0, utils_1.MedusaContext)()),
1425
+ __metadata("design:type", Function),
1426
+ __metadata("design:paramtypes", [String, Object, Object]),
1427
+ __metadata("design:returntype", Promise)
1428
+ ], EmailModuleService.prototype, "updateAttachmentDocument", null);
1194
1429
  __decorate([
1195
1430
  (0, utils_1.InjectTransactionManager)(),
1196
1431
  __param(3, (0, utils_1.MedusaContext)()),
1197
1432
  __metadata("design:type", Function),
1198
- __metadata("design:paramtypes", [Object, Function, Function, Object]),
1433
+ __metadata("design:paramtypes", [String, String, Boolean, Object]),
1434
+ __metadata("design:returntype", Promise)
1435
+ ], EmailModuleService.prototype, "setAttachmentDocumentMailKind", null);
1436
+ __decorate([
1437
+ (0, utils_1.InjectTransactionManager)(),
1438
+ __param(4, (0, utils_1.MedusaContext)()),
1439
+ __metadata("design:type", Function),
1440
+ __metadata("design:paramtypes", [String, Object, Function, Function, Object]),
1441
+ __metadata("design:returntype", Promise)
1442
+ ], EmailModuleService.prototype, "createAttachmentDocumentVersion", null);
1443
+ __decorate([
1444
+ (0, utils_1.InjectTransactionManager)(),
1445
+ __param(0, (0, utils_1.MedusaContext)()),
1446
+ __metadata("design:type", Function),
1447
+ __metadata("design:paramtypes", [Object]),
1448
+ __metadata("design:returntype", Promise)
1449
+ ], EmailModuleService.prototype, "listAdminAttachmentDocuments", null);
1450
+ __decorate([
1451
+ (0, utils_1.InjectTransactionManager)(),
1452
+ __param(2, (0, utils_1.MedusaContext)()),
1453
+ __metadata("design:type", Function),
1454
+ __metadata("design:paramtypes", [String, Date, Object]),
1199
1455
  __metadata("design:returntype", Promise)
1200
- ], EmailModuleService.prototype, "createEmailTermsVersion", null);
1456
+ ], EmailModuleService.prototype, "listLibraryAttachmentsAt", null);
1457
+ __decorate([
1458
+ (0, utils_1.InjectTransactionManager)(),
1459
+ __param(2, (0, utils_1.MedusaContext)()),
1460
+ __metadata("design:type", Function),
1461
+ __metadata("design:paramtypes", [String, String, Object]),
1462
+ __metadata("design:returntype", Promise)
1463
+ ], EmailModuleService.prototype, "getAttachmentDocumentVersionFile", null);
1201
1464
  __decorate([
1202
1465
  (0, utils_1.InjectTransactionManager)(),
1203
1466
  __param(1, (0, utils_1.MedusaContext)()),
1204
1467
  __metadata("design:type", Function),
1205
- __metadata("design:paramtypes", [Object, Object]),
1468
+ __metadata("design:paramtypes", [String, Object]),
1469
+ __metadata("design:returntype", Promise)
1470
+ ], EmailModuleService.prototype, "getTemplate", null);
1471
+ __decorate([
1472
+ (0, utils_1.InjectTransactionManager)(),
1473
+ __param(0, (0, utils_1.MedusaContext)()),
1474
+ __metadata("design:type", Function),
1475
+ __metadata("design:paramtypes", [Object]),
1476
+ __metadata("design:returntype", Promise)
1477
+ ], EmailModuleService.prototype, "listTemplates", null);
1478
+ __decorate([
1479
+ (0, utils_1.InjectTransactionManager)(),
1480
+ __param(2, (0, utils_1.MedusaContext)()),
1481
+ __metadata("design:type", Function),
1482
+ __metadata("design:paramtypes", [String, Object, Object]),
1206
1483
  __metadata("design:returntype", Promise)
1207
- ], EmailModuleService.prototype, "listAdminEmailTermsVersions", null);
1484
+ ], EmailModuleService.prototype, "saveTemplate", null);
1208
1485
  __decorate([
1209
1486
  (0, utils_1.InjectTransactionManager)(),
1210
1487
  __param(1, (0, utils_1.MedusaContext)()),
1211
1488
  __metadata("design:type", Function),
1212
1489
  __metadata("design:paramtypes", [String, Object]),
1213
1490
  __metadata("design:returntype", Promise)
1214
- ], EmailModuleService.prototype, "getEmailTermsVersionFile", null);
1491
+ ], EmailModuleService.prototype, "resetTemplate", null);
1215
1492
  __decorate([
1216
1493
  (0, utils_1.InjectTransactionManager)(),
1217
1494
  __param(2, (0, utils_1.MedusaContext)()),
@@ -1304,4 +1581,4 @@ __decorate([
1304
1581
  __metadata("design:returntype", Promise)
1305
1582
  ], EmailModuleService.prototype, "completeAttempt", null);
1306
1583
  exports.default = EmailModuleService;
1307
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9tb2R1bGVzL2VtYWlsL3NlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsNkNBQXlDO0FBRXpDLG1EQUFzRTtBQUV0RSxxREFLbUM7QUFDbkMsaURBQTRDO0FBQzVDLGtHQUc0RTtBQUM1RSwyRkFBNEc7QUFFNUcsNkNBUTJCO0FBRTNCLG9FQUEwRTtBQUMxRSxpRUFBa0U7QUFDbEUsK0ZBQThGO0FBQzlGLHVIQUF5RztBQUN6RyxpR0FBaUc7QUFDakcsc0ZBQXdGO0FBQ3hGLG9EQUs2QjtBQUM3QiwwREFTZ0M7QUFDaEMsMkVBQWtEO0FBQ2xELDJFQUFrRDtBQUNsRCx1RkFBNkQ7QUFFaEQsUUFBQSxzQkFBc0IsR0FBRyxDQUFDLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQztBQUVwRCxrRkFBa0Y7QUFDbEYsTUFBTSxtQkFBbUIsR0FBRyw2QkFBcUIsQ0FBQyxHQUFHLENBQ25ELENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLElBQUksR0FBRyxDQUN0QixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztBQTJMYixNQUFNLHNCQUFzQixHQUFHLElBQUEscUJBQWEsRUFBQztJQUMzQyxZQUFZLEVBQVosdUJBQVk7SUFDWixZQUFZLEVBQVosdUJBQVk7SUFDWixpQkFBaUIsRUFBakIsNkJBQWlCO0NBQ2xCLENBQUMsQ0FBQztBQUVILE1BQU0sZ0JBQWdCLEdBQUcsQ0FBQyxLQUFjLEVBQUUsS0FBYSxFQUFVLEVBQUU7SUFDakUsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQztRQUMvQyxNQUFNLElBQUksbUJBQVcsQ0FDbkIsbUJBQVcsQ0FBQyxLQUFLLENBQUMsWUFBWSxFQUM5QixHQUFHLEtBQUssOEJBQThCLENBQ3ZDLENB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
1584
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9tb2R1bGVzL2VtYWlsL3NlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsNkNBQXlDO0FBRXpDLG1EQUFzRTtBQUV0RSxxREFNbUM7QUFDbkMsaURBQTRDO0FBQzVDLGtHQUc0RTtBQUM1RSwyRkFJeUU7QUFPekUsNkNBUTJCO0FBRTNCLDBDQUkwQjtBQUMxQixvRUFBMEU7QUFDMUUsaUVBQWtFO0FBQ2xFLCtGQUE4RjtBQUM5Rix1SEFBeUc7QUFDekcsaUdBQWlHO0FBQ2pHLHNGQUF3RjtBQUN4RixxREFHK0I7QUFDL0Isb0RBTTZCO0FBQzdCLDBEQVNnQztBQUNoQyxtR0FBeUU7QUFDekUsbUhBQXdGO0FBQ3hGLDJFQUFrRDtBQUNsRCwyRUFBa0Q7QUFDbEQsNkVBQW9EO0FBRXZDLFFBQUEsc0JBQXNCLEdBQUcsQ0FBQyxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUM7QUFFcEQsa0ZBQWtGO0FBQ2xGLE1BQU0sbUJBQW1CLEdBQUcsNkJBQXFCLENBQUMsR0FBRyxDQUNuRCxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxJQUFJLEdBQUcsQ0FDdEIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7QUFrT2IsTUFBTSxzQkFBc0IsR0FBRyxJQUFBLHFCQUFhLEVBQUM7SUFDM0MsWUFBWSxFQUFaLHVCQUFZO0lBQ1osWUFBWSxFQUFaLHVCQUFZO0lBQ1osdUJBQXVCLEVBQXZCLG1DQUF1QjtJQUN2Qiw4QkFBOEIsRUFBOUIsMkNBQThCO0lBQzlCLGFBQWEsRUFBYix3QkFBYTtDQUNkLENBQUMsQ0FBQztBQUVILE1BQU0sZ0JBQWdCLEdBQUcsQ0FBQyxLQUFjLEVBQUUsS0FBYSxFQUFVLEVBQUU7SUFDakUsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxF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