@antelopejs/dms-mailing 0.6.1 → 0.7.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 (187) hide show
  1. package/dist/constants.d.ts +1 -0
  2. package/dist/constants.js +2 -1
  3. package/dist/constants.js.map +1 -1
  4. package/dist/data/templates-table.d.ts +4 -1
  5. package/dist/data/templates-table.js +55 -13
  6. package/dist/data/templates-table.js.map +1 -1
  7. package/dist/data-types/categories-type.d.ts +5 -5
  8. package/dist/db/models/templates.model.d.ts +10 -1
  9. package/dist/db/models/templates.model.js +27 -1
  10. package/dist/db/models/templates.model.js.map +1 -1
  11. package/dist/db/tables/templates.table.d.ts +7 -1
  12. package/dist/db/tables/templates.table.js +3 -1
  13. package/dist/db/tables/templates.table.js.map +1 -1
  14. package/dist/engine/formats.d.ts +13 -0
  15. package/dist/engine/formats.js +85 -0
  16. package/dist/engine/formats.js.map +1 -0
  17. package/dist/engine/index.d.ts +1 -0
  18. package/dist/engine/index.js +1 -0
  19. package/dist/engine/index.js.map +1 -1
  20. package/dist/engine/resolve.d.ts +2 -1
  21. package/dist/engine/resolve.js +14 -7
  22. package/dist/engine/resolve.js.map +1 -1
  23. package/dist/engine/tokens.d.ts +2 -1
  24. package/dist/engine/tokens.js +3 -5
  25. package/dist/engine/tokens.js.map +1 -1
  26. package/dist/frontend-module.d.ts +2 -0
  27. package/dist/frontend-module.js +24 -0
  28. package/dist/frontend-module.js.map +1 -0
  29. package/dist/hooks/tenant-export.js +4 -1
  30. package/dist/hooks/tenant-export.js.map +1 -1
  31. package/dist/implementations/dms-mailing/index.d.ts +1 -0
  32. package/dist/implementations/dms-mailing/index.js +3 -1
  33. package/dist/implementations/dms-mailing/index.js.map +1 -1
  34. package/dist/index.js +2 -19
  35. package/dist/index.js.map +1 -1
  36. package/dist/pages/overview.d.ts +1 -1
  37. package/dist/pages/overview.js +11 -13
  38. package/dist/pages/overview.js.map +1 -1
  39. package/dist/pages/sends.d.ts +1 -1
  40. package/dist/pages/sends.js +16 -8
  41. package/dist/pages/sends.js.map +1 -1
  42. package/dist/pages/templates.js +3 -8
  43. package/dist/pages/templates.js.map +1 -1
  44. package/dist/pages/toolbar.d.ts +12 -0
  45. package/dist/pages/toolbar.js +41 -0
  46. package/dist/pages/toolbar.js.map +1 -0
  47. package/dist/realtime.d.ts +2 -2
  48. package/dist/realtime.js +8 -8
  49. package/dist/realtime.js.map +1 -1
  50. package/dist/routes/metrics.d.ts +9 -2
  51. package/dist/routes/metrics.js +90 -35
  52. package/dist/routes/metrics.js.map +1 -1
  53. package/dist/routes/period.d.ts +1 -0
  54. package/dist/routes/period.js +19 -0
  55. package/dist/routes/period.js.map +1 -1
  56. package/dist/routes/sends.js +6 -3
  57. package/dist/routes/sends.js.map +1 -1
  58. package/dist/routes/settings.js +6 -7
  59. package/dist/routes/settings.js.map +1 -1
  60. package/dist/routes/templates.d.ts +8 -4
  61. package/dist/routes/templates.js +40 -15
  62. package/dist/routes/templates.js.map +1 -1
  63. package/dist/services/categories.d.ts +2 -1
  64. package/dist/services/categories.js +9 -0
  65. package/dist/services/categories.js.map +1 -1
  66. package/dist/services/declarations.js +2 -2
  67. package/dist/services/declarations.js.map +1 -1
  68. package/dist/services/events.js +1 -1
  69. package/dist/services/events.js.map +1 -1
  70. package/dist/services/localized-text.d.ts +7 -0
  71. package/dist/services/localized-text.js +28 -0
  72. package/dist/services/localized-text.js.map +1 -0
  73. package/dist/services/send-stat-items.js +34 -12
  74. package/dist/services/send-stat-items.js.map +1 -1
  75. package/dist/services/send-stats.d.ts +7 -0
  76. package/dist/services/send-stats.js +17 -5
  77. package/dist/services/send-stats.js.map +1 -1
  78. package/dist/services/send.d.ts +2 -0
  79. package/dist/services/send.js +11 -12
  80. package/dist/services/send.js.map +1 -1
  81. package/dist/services/sender-declaration.d.ts +2 -0
  82. package/dist/services/sender-declaration.js +18 -0
  83. package/dist/services/sender-declaration.js.map +1 -0
  84. package/dist/services/starters.d.ts +2 -2
  85. package/dist/services/starters.js +1 -10
  86. package/dist/services/starters.js.map +1 -1
  87. package/dist/services/templates.d.ts +11 -5
  88. package/dist/services/templates.js +24 -6
  89. package/dist/services/templates.js.map +1 -1
  90. package/dist/services/webhook-status.d.ts +2 -1
  91. package/dist/services/webhook-status.js +6 -5
  92. package/dist/services/webhook-status.js.map +1 -1
  93. package/dist/types/settings.d.ts +6 -0
  94. package/dist/types/settings.js +25 -5
  95. package/dist/types/settings.js.map +1 -1
  96. package/dist/validation/declarations.schema.d.ts +25 -7
  97. package/dist/validation/declarations.schema.js +16 -3
  98. package/dist/validation/declarations.schema.js.map +1 -1
  99. package/dist/validation/settings.schema.d.ts +25 -25
  100. package/dist/validation/settings.schema.js +30 -6
  101. package/dist/validation/settings.schema.js.map +1 -1
  102. package/dist/validation/templates.schema.d.ts +13 -0
  103. package/dist/validation/templates.schema.js +6 -1
  104. package/dist/validation/templates.schema.js.map +1 -1
  105. package/frontend-vue/app/components/CategoriesInput.vue +15 -13
  106. package/frontend-vue/app/components/FunnelCard.vue +46 -3
  107. package/frontend-vue/app/components/NewTemplateModal.vue +4 -2
  108. package/frontend-vue/app/components/OverviewGate.vue +0 -8
  109. package/frontend-vue/app/components/ProviderPill.vue +50 -0
  110. package/frontend-vue/app/components/SendDrawer.vue +206 -183
  111. package/frontend-vue/app/components/StarterGallery.vue +1 -1
  112. package/frontend-vue/app/components/TemplateCard.vue +4 -1
  113. package/frontend-vue/app/components/TemplateDrawer.vue +3 -5
  114. package/frontend-vue/app/components/TemplateGallery.vue +57 -17
  115. package/frontend-vue/app/components/TemplatePreviewFrame.vue +41 -11
  116. package/frontend-vue/app/components/editor/EditorTemplatePane.vue +1 -3
  117. package/frontend-vue/app/components/editor/EditorTitle.vue +1 -7
  118. package/frontend-vue/app/composables/useLocalizedDefaults.ts +5 -7
  119. package/frontend-vue/app/composables/useMailingApi.ts +3 -3
  120. package/frontend-vue/app/composables/useMailingReads.ts +2 -2
  121. package/frontend-vue/app/composables/useTemplateCategories.ts +8 -7
  122. package/frontend-vue/app/types/mailing.ts +18 -0
  123. package/frontend-vue/app/utils/categories.ts +58 -49
  124. package/frontend-vue/app/utils/funnel.ts +25 -0
  125. package/frontend-vue/app/utils/period.ts +0 -7
  126. package/frontend-vue/app/utils/starters.ts +3 -1
  127. package/frontend-vue/app/utils/tokens.ts +6 -1
  128. package/frontend-vue/i18n/locales/mailing-en-GB.json +19 -28
  129. package/frontend-vue/i18n/locales/mailing-fr-FR.json +19 -28
  130. package/frontend-vue/package.json +1 -1
  131. package/frontend-vue/tests/categories-input.test.ts +4 -10
  132. package/frontend-vue/tests/categories.test.ts +55 -17
  133. package/frontend-vue/tests/conditions.test.ts +1 -4
  134. package/frontend-vue/tests/funnel-card.test.ts +27 -0
  135. package/frontend-vue/tests/funnel.test.ts +25 -0
  136. package/frontend-vue/tests/localized-defaults.test.ts +0 -29
  137. package/frontend-vue/tests/new-template-modal.test.ts +1 -1
  138. package/frontend-vue/tests/overview-gate.test.ts +1 -24
  139. package/frontend-vue/tests/page-reads.test.ts +9 -25
  140. package/frontend-vue/tests/period.test.ts +0 -12
  141. package/frontend-vue/tests/replay-toast.test.ts +2 -1
  142. package/frontend-vue/tests/send-drawer.test.ts +123 -0
  143. package/frontend-vue/tests/template-drawer.test.ts +1 -1
  144. package/frontend-vue/tests/template-gallery.test.ts +90 -3
  145. package/frontend-vue/tests/template-preview-frame.test.ts +92 -0
  146. package/package.json +6 -5
  147. package/skills/dms-mailing/SKILL.md +17 -4
  148. package/src/constants.ts +2 -0
  149. package/src/data/sends-table.ts +1 -1
  150. package/src/data/templates-table.ts +123 -19
  151. package/src/db/models/templates.model.ts +61 -3
  152. package/src/db/tables/templates.table.ts +10 -1
  153. package/src/engine/formats.ts +124 -0
  154. package/src/engine/index.ts +1 -0
  155. package/src/engine/resolve.ts +18 -7
  156. package/src/engine/tokens.ts +7 -5
  157. package/src/frontend-module.ts +36 -0
  158. package/src/hooks/tenant-export.ts +8 -1
  159. package/src/implementations/dms-mailing/index.ts +2 -0
  160. package/src/index.ts +2 -23
  161. package/src/pages/overview.ts +20 -16
  162. package/src/pages/sends.ts +27 -11
  163. package/src/pages/templates.ts +4 -8
  164. package/src/pages/toolbar.ts +77 -0
  165. package/src/realtime.ts +17 -8
  166. package/src/routes/metrics.ts +158 -45
  167. package/src/routes/period.ts +32 -0
  168. package/src/routes/sends.ts +13 -4
  169. package/src/routes/settings.ts +11 -8
  170. package/src/routes/templates.ts +72 -26
  171. package/src/services/categories.ts +14 -1
  172. package/src/services/declarations.ts +4 -3
  173. package/src/services/events.ts +1 -1
  174. package/src/services/localized-text.ts +53 -0
  175. package/src/services/send-stat-items.ts +60 -13
  176. package/src/services/send-stats.ts +37 -5
  177. package/src/services/send.ts +19 -20
  178. package/src/services/sender-declaration.ts +27 -0
  179. package/src/services/starters.ts +3 -15
  180. package/src/services/templates.ts +50 -19
  181. package/src/services/webhook-status.ts +3 -3
  182. package/src/types/settings.ts +35 -5
  183. package/src/validation/declarations.schema.ts +29 -3
  184. package/src/validation/settings.schema.ts +56 -14
  185. package/src/validation/templates.schema.ts +10 -0
  186. package/frontend-vue/app/components/PageHeader.vue +0 -94
  187. package/frontend-vue/app/composables/useOverviewSetup.ts +0 -21
@@ -8,6 +8,7 @@ export declare const SETTINGS_PATH = "/modules/mailing/settings";
8
8
  export declare const NEW_TEMPLATE_BUTTON_ID = "create";
9
9
  export declare const NEW_TEMPLATE_ACTION_ID = "mailing.new-template";
10
10
  export declare const FRONTEND_MODULE_NAME = "@antelopejs/dms-mailing-frontend-vue";
11
+ export declare const WEBHOOK_SECRET_HEADER = "x-mailing-webhook-secret";
11
12
  export declare const EMAIL_TEMPLATE_NAME = "EmailMailingTemplate";
12
13
  export declare const MAILING_SEND_PERMISSION = "mailing.send";
13
14
  export declare const OVERVIEW_PERIOD_SCOPE = "mailing-overview";
package/dist/constants.js CHANGED
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.MAX_WINDOW_DAYS = exports.SYSTEM_VARIABLE_PATHS = exports.PREFERENCES_URL_PATH = exports.UNSUBSCRIBE_URL_PATH = exports.ARCHIVED_STATUS = exports.LOCALE_LIST_SEPARATOR = exports.HTTP_UNPROCESSABLE = exports.HTTP_CONFLICT = exports.HTTP_NOT_FOUND = exports.HTTP_FORBIDDEN = exports.HTTP_BAD_REQUEST = exports.SLUG_PATTERN = exports.MAX_NAME_LENGTH = exports.MAX_SLUG_LENGTH = exports.DEFAULT_LOG_RETENTION_DAYS = exports.DEFAULT_FALLBACK_LOCALE = exports.TEMPLATE_CATEGORY_TYPE_ID = exports.TEMPLATE_CATEGORIES_TYPE_ID = exports.GALLERY_DISPLAY_ID = exports.MAILING_SENDS_TOPIC = exports.SENDS_PERIOD_SCOPE = exports.OVERVIEW_PERIOD_SCOPE = exports.MAILING_SEND_PERMISSION = exports.EMAIL_TEMPLATE_NAME = exports.FRONTEND_MODULE_NAME = exports.NEW_TEMPLATE_ACTION_ID = exports.NEW_TEMPLATE_BUTTON_ID = exports.SETTINGS_PATH = exports.SENDS_PATH = exports.TEMPLATES_PATH = exports.MODULE_BASE_PATH = exports.TABLES_BASE_PATH = exports.API_BASE_PATH = exports.MODULE_ID = void 0;
3
+ exports.MAX_WINDOW_DAYS = exports.SYSTEM_VARIABLE_PATHS = exports.PREFERENCES_URL_PATH = exports.UNSUBSCRIBE_URL_PATH = exports.ARCHIVED_STATUS = exports.LOCALE_LIST_SEPARATOR = exports.HTTP_UNPROCESSABLE = exports.HTTP_CONFLICT = exports.HTTP_NOT_FOUND = exports.HTTP_FORBIDDEN = exports.HTTP_BAD_REQUEST = exports.SLUG_PATTERN = exports.MAX_NAME_LENGTH = exports.MAX_SLUG_LENGTH = exports.DEFAULT_LOG_RETENTION_DAYS = exports.DEFAULT_FALLBACK_LOCALE = exports.TEMPLATE_CATEGORY_TYPE_ID = exports.TEMPLATE_CATEGORIES_TYPE_ID = exports.GALLERY_DISPLAY_ID = exports.MAILING_SENDS_TOPIC = exports.SENDS_PERIOD_SCOPE = exports.OVERVIEW_PERIOD_SCOPE = exports.MAILING_SEND_PERMISSION = exports.EMAIL_TEMPLATE_NAME = exports.WEBHOOK_SECRET_HEADER = exports.FRONTEND_MODULE_NAME = exports.NEW_TEMPLATE_ACTION_ID = exports.NEW_TEMPLATE_BUTTON_ID = exports.SETTINGS_PATH = exports.SENDS_PATH = exports.TEMPLATES_PATH = exports.MODULE_BASE_PATH = exports.TABLES_BASE_PATH = exports.API_BASE_PATH = exports.MODULE_ID = void 0;
4
4
  exports.MODULE_ID = "mailing";
5
5
  exports.API_BASE_PATH = "/api/mailing";
6
6
  exports.TABLES_BASE_PATH = `${exports.API_BASE_PATH}/tables`;
@@ -11,6 +11,7 @@ exports.SETTINGS_PATH = `${exports.MODULE_BASE_PATH}/settings`;
11
11
  exports.NEW_TEMPLATE_BUTTON_ID = "create";
12
12
  exports.NEW_TEMPLATE_ACTION_ID = "mailing.new-template";
13
13
  exports.FRONTEND_MODULE_NAME = "@antelopejs/dms-mailing-frontend-vue";
14
+ exports.WEBHOOK_SECRET_HEADER = "x-mailing-webhook-secret";
14
15
  exports.EMAIL_TEMPLATE_NAME = "EmailMailingTemplate";
15
16
  exports.MAILING_SEND_PERMISSION = "mailing.send";
16
17
  exports.OVERVIEW_PERIOD_SCOPE = "mailing-overview";
@@ -1 +1 @@
1
- {"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":";;;AAAa,QAAA,SAAS,GAAG,SAAS,CAAC;AACtB,QAAA,aAAa,GAAG,cAAc,CAAC;AAC/B,QAAA,gBAAgB,GAAG,GAAG,qBAAa,SAAS,CAAC;AAC7C,QAAA,gBAAgB,GAAG,YAAY,iBAAS,EAAE,CAAC;AAC3C,QAAA,cAAc,GAAG,GAAG,wBAAgB,YAAY,CAAC;AACjD,QAAA,UAAU,GAAG,GAAG,wBAAgB,QAAQ,CAAC;AACzC,QAAA,aAAa,GAAG,GAAG,wBAAgB,WAAW,CAAC;AAC/C,QAAA,sBAAsB,GAAG,QAAQ,CAAC;AAClC,QAAA,sBAAsB,GAAG,sBAAsB,CAAC;AAChD,QAAA,oBAAoB,GAAG,sCAAsC,CAAC;AAC9D,QAAA,mBAAmB,GAAG,sBAAsB,CAAC;AAE7C,QAAA,uBAAuB,GAAG,cAAc,CAAC;AAEzC,QAAA,qBAAqB,GAAG,kBAAkB,CAAC;AAC3C,QAAA,kBAAkB,GAAG,eAAe,CAAC;AAErC,QAAA,mBAAmB,GAAG,eAAe,CAAC;AAEtC,QAAA,kBAAkB,GAAG,GAAG,iBAAS,UAAU,CAAC;AAC5C,QAAA,2BAA2B,GAAG,6BAA6B,CAAC;AAC5D,QAAA,yBAAyB,GAAG,2BAA2B,CAAC;AAExD,QAAA,uBAAuB,GAAG,IAAI,CAAC;AAC/B,QAAA,0BAA0B,GAAG,EAAE,CAAC;AAChC,QAAA,eAAe,GAAG,EAAE,CAAC;AACrB,QAAA,eAAe,GAAG,GAAG,CAAC;AACtB,QAAA,YAAY,GAAG,sBAAsB,CAAC;AAEtC,QAAA,gBAAgB,GAAG,GAAG,CAAC;AACvB,QAAA,cAAc,GAAG,GAAG,CAAC;AACrB,QAAA,cAAc,GAAG,GAAG,CAAC;AACrB,QAAA,aAAa,GAAG,GAAG,CAAC;AACpB,QAAA,kBAAkB,GAAG,GAAG,CAAC;AAEzB,QAAA,qBAAqB,GAAG,GAAG,CAAC;AAG5B,QAAA,eAAe,GAAG,UAAU,CAAC;AAE7B,QAAA,oBAAoB,GAAG,gBAAgB,CAAC;AACxC,QAAA,oBAAoB,GAAG,gBAAgB,CAAC;AAGxC,QAAA,qBAAqB,GAAG;IACnC,4BAAoB;IACpB,4BAAoB;CACrB,CAAC;AAOW,QAAA,eAAe,GAAG,GAAG,CAAC"}
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":";;;AAAa,QAAA,SAAS,GAAG,SAAS,CAAC;AACtB,QAAA,aAAa,GAAG,cAAc,CAAC;AAC/B,QAAA,gBAAgB,GAAG,GAAG,qBAAa,SAAS,CAAC;AAC7C,QAAA,gBAAgB,GAAG,YAAY,iBAAS,EAAE,CAAC;AAC3C,QAAA,cAAc,GAAG,GAAG,wBAAgB,YAAY,CAAC;AACjD,QAAA,UAAU,GAAG,GAAG,wBAAgB,QAAQ,CAAC;AACzC,QAAA,aAAa,GAAG,GAAG,wBAAgB,WAAW,CAAC;AAC/C,QAAA,sBAAsB,GAAG,QAAQ,CAAC;AAClC,QAAA,sBAAsB,GAAG,sBAAsB,CAAC;AAChD,QAAA,oBAAoB,GAAG,sCAAsC,CAAC;AAE9D,QAAA,qBAAqB,GAAG,0BAA0B,CAAC;AACnD,QAAA,mBAAmB,GAAG,sBAAsB,CAAC;AAE7C,QAAA,uBAAuB,GAAG,cAAc,CAAC;AAEzC,QAAA,qBAAqB,GAAG,kBAAkB,CAAC;AAC3C,QAAA,kBAAkB,GAAG,eAAe,CAAC;AAErC,QAAA,mBAAmB,GAAG,eAAe,CAAC;AAEtC,QAAA,kBAAkB,GAAG,GAAG,iBAAS,UAAU,CAAC;AAC5C,QAAA,2BAA2B,GAAG,6BAA6B,CAAC;AAC5D,QAAA,yBAAyB,GAAG,2BAA2B,CAAC;AAExD,QAAA,uBAAuB,GAAG,IAAI,CAAC;AAC/B,QAAA,0BAA0B,GAAG,EAAE,CAAC;AAChC,QAAA,eAAe,GAAG,EAAE,CAAC;AACrB,QAAA,eAAe,GAAG,GAAG,CAAC;AACtB,QAAA,YAAY,GAAG,sBAAsB,CAAC;AAEtC,QAAA,gBAAgB,GAAG,GAAG,CAAC;AACvB,QAAA,cAAc,GAAG,GAAG,CAAC;AACrB,QAAA,cAAc,GAAG,GAAG,CAAC;AACrB,QAAA,aAAa,GAAG,GAAG,CAAC;AACpB,QAAA,kBAAkB,GAAG,GAAG,CAAC;AAEzB,QAAA,qBAAqB,GAAG,GAAG,CAAC;AAG5B,QAAA,eAAe,GAAG,UAAU,CAAC;AAE7B,QAAA,oBAAoB,GAAG,gBAAgB,CAAC;AACxC,QAAA,oBAAoB,GAAG,gBAAgB,CAAC;AAGxC,QAAA,qBAAqB,GAAG;IACnC,4BAAoB;IACpB,4BAAoB;CACrB,CAAC;AAOW,QAAA,eAAe,GAAG,GAAG,CAAC"}
@@ -1,3 +1,4 @@
1
+ import { type RequestContext } from "@antelopejs/interface-api";
1
2
  import { type DataControllerCallback } from "@antelopejs/interface-data-api";
2
3
  import { MailingTemplate, SendModel, TemplateModel } from "../db";
3
4
  interface TemplateEdit {
@@ -9,7 +10,8 @@ type AfterWrite = () => Promise<void>;
9
10
  export declare function assertDeletable(tenantId: string, model: TemplateModel, ids: string[]): Promise<void>;
10
11
  export declare function afterDelete(tenantId: string, ids: string[]): AfterWrite;
11
12
  export declare function assertEditable(tenantId: string, body: TemplateEdit, current: Pick<MailingTemplate, "slug">): Promise<void>;
12
- export declare function afterEdit(model: TemplateModel, id: string, name: unknown): AfterWrite | undefined;
13
+ export declare function saveDetails(ctx: RequestContext, template: MailingTemplate, body: unknown, author: string): Promise<void>;
14
+ export declare function afterEdit(model: TemplateModel, id: string, name: unknown, locale: string): AfterWrite | undefined;
13
15
  declare const TemplatesTableAPI_base: import("@antelopejs/interface-core/decorators").Class<import("@antelopejs/interface-data-api").ExtractDefCallbacks<{
14
16
  new: DataControllerCallback;
15
17
  get: DataControllerCallback;
@@ -31,6 +33,7 @@ declare const TemplatesTableAPI_base: import("@antelopejs/interface-core/decorat
31
33
  export declare class TemplatesTableAPI extends TemplatesTableAPI_base {
32
34
  model: TemplateModel;
33
35
  sends: SendModel;
36
+ language: string;
34
37
  _id: string;
35
38
  name: string;
36
39
  slug: string;
@@ -13,12 +13,14 @@ exports.TemplatesTableAPI = void 0;
13
13
  exports.assertDeletable = assertDeletable;
14
14
  exports.afterDelete = afterDelete;
15
15
  exports.assertEditable = assertEditable;
16
+ exports.saveDetails = saveDetails;
16
17
  exports.afterEdit = afterEdit;
17
18
  const interface_api_1 = require("@antelopejs/interface-api");
18
19
  const interface_api_util_1 = require("@antelopejs/interface-api-util");
19
20
  const interface_data_api_1 = require("@antelopejs/interface-data-api");
20
21
  const metadata_1 = require("@antelopejs/interface-data-api/metadata");
21
22
  const interface_database_decorators_1 = require("@antelopejs/interface-database-decorators");
23
+ const interface_dms_mailing_1 = require("@antelopejs/interface-dms-mailing");
22
24
  const guards_1 = require("@antelopejs/interface-dms/guards");
23
25
  const request_tenant_1 = require("@antelopejs/interface-dms/request-tenant");
24
26
  const tenant_scoped_model_1 = require("@antelopejs/interface-dms/tenant-scoped-model");
@@ -30,6 +32,7 @@ const constants_1 = require("../constants");
30
32
  const data_types_1 = require("../data-types");
31
33
  const engine_1 = require("../engine");
32
34
  const db_1 = require("../db");
35
+ const localized_text_1 = require("../services/localized-text");
33
36
  const settings_1 = require("../services/settings");
34
37
  const starters_1 = require("../services/starters");
35
38
  const template_attention_1 = require("../services/template-attention");
@@ -84,21 +87,22 @@ function assertKnownCategory(categories, category) {
84
87
  }
85
88
  throw new interface_api_1.HTTPResult(constants_1.HTTP_UNPROCESSABLE, UNKNOWN_CATEGORY);
86
89
  }
87
- function parseCreation(body) {
88
- const raw = (0, body_1.parseBody)(body);
90
+ function parseCreation(body, locale) {
91
+ const raw = Buffer.isBuffer(body) ? (0, body_1.parseBody)(body) : body;
89
92
  const seed = (0, interface_api_util_1.assertValidation)(raw, (value) => templates_schema_1.createTemplateSchema.parse(value), () => INVALID_TEMPLATE, constants_1.HTTP_BAD_REQUEST);
90
- const normalized = JSON.stringify({
93
+ const normalized = {
91
94
  ...raw,
92
95
  slug: seed.slug,
93
- name: seed.name,
94
- });
96
+ name: (0, localized_text_1.withTextIn)(undefined, locale, seed.name),
97
+ };
95
98
  return { seed, normalized };
96
99
  }
100
+ const ALL_LANGUAGES = "*";
97
101
  function withSeeding(base) {
98
102
  return {
99
103
  ...base,
100
104
  func: async function (ctx, params, body, ...rest) {
101
- const { seed, normalized } = parseCreation(body);
105
+ const { seed, normalized } = parseCreation(body, (0, localized_text_1.localeOfRequest)(ctx));
102
106
  const tenantId = (0, request_tenant_1.getRequestTenantId)(ctx);
103
107
  const model = (0, interface_database_decorators_1.GetModel)(db_1.TemplateModel, tenantId);
104
108
  if (await model.getBySlug(seed.slug)) {
@@ -107,12 +111,13 @@ function withSeeding(base) {
107
111
  const settings = await (0, settings_1.getSettings)(tenantId);
108
112
  assertKnownCategory(settings.categories, seed.category);
109
113
  const fields = await seedFields(tenantId, seed, settings.fallbackLocale);
110
- const ids = (await base.func.call(this, ctx, params, normalized, ...rest));
111
- const templateId = ids[0];
114
+ this.language = ALL_LANGUAGES;
115
+ const created = (await base.func.call(this, ctx, params, normalized, ...rest));
116
+ const templateId = created._id;
112
117
  await (0, templates_1.assertSlugClaimed)(tenantId, seed.slug, templateId);
113
118
  const user = await (0, guards_1.authenticateTenantRequest)(ctx);
114
119
  await (0, templates_1.initializeTemplate)(tenantId, templateId, (0, templates_1.displayName)(user), fields);
115
- return ids;
120
+ return created;
116
121
  },
117
122
  };
118
123
  }
@@ -146,16 +151,48 @@ function afterDelete(tenantId, ids) {
146
151
  async function assertEditable(tenantId, body, current) {
147
152
  if (body.slug !== undefined && body.slug !== current.slug)
148
153
  throw new interface_api_1.HTTPResult(constants_1.HTTP_CONFLICT, SLUG_IMMUTABLE);
149
- if (typeof body.name === "string" && !body.name.trim())
154
+ if (body.name !== undefined && isBlankName(body.name))
150
155
  throw new interface_api_1.HTTPResult(constants_1.HTTP_BAD_REQUEST, BLANK_NAME);
151
156
  const { categories } = await (0, settings_1.getSettings)(tenantId);
152
157
  assertKnownCategory(categories, body.category);
153
158
  }
154
- function afterEdit(model, id, name) {
155
- if (typeof name !== "string" || name === name.trim())
159
+ async function saveDetails(ctx, template, body, author) {
160
+ const details = (0, interface_api_util_1.assertValidation)(body, (value) => templates_schema_1.templateDetailsSchema.parse(value), () => INVALID_TEMPLATE);
161
+ const tenantId = (0, request_tenant_1.getRequestTenantId)(ctx);
162
+ await assertEditable(tenantId, details, template);
163
+ const names = db_1.TemplateModel.namesOf(template);
164
+ await (0, interface_database_decorators_1.GetModel)(db_1.TemplateModel, tenantId).updateFields(template._id, {
165
+ name: (0, localized_text_1.withTextIn)(names, (0, localized_text_1.localeOfRequest)(ctx), details.name),
166
+ ...(details.category !== undefined && {
167
+ category: details.category ?? "",
168
+ }),
169
+ updatedBy: author,
170
+ });
171
+ }
172
+ function isBlankName(name) {
173
+ const texts = typeof name === "object" && name ? Object.values(name) : [name];
174
+ return !texts.some((text) => typeof text === "string" && text.trim());
175
+ }
176
+ function tidyNames(names, locale) {
177
+ const tidy = Object.fromEntries(Object.entries(names)
178
+ .map(([code, text]) => [code, text.trim()])
179
+ .filter(([, text]) => text));
180
+ if (tidy[interface_dms_mailing_1.LOCALIZED_TEXT_FALLBACK_LOCALE])
181
+ return tidy;
182
+ const [first = ""] = Object.values(tidy);
183
+ return { ...tidy, [interface_dms_mailing_1.LOCALIZED_TEXT_FALLBACK_LOCALE]: tidy[locale] ?? first };
184
+ }
185
+ function afterEdit(model, id, name, locale) {
186
+ if (name === undefined)
156
187
  return undefined;
157
188
  return async () => {
158
- await model.update(id, { name: name.trim() });
189
+ const template = await model.get(id);
190
+ if (!template)
191
+ return;
192
+ const names = db_1.TemplateModel.namesOf(template);
193
+ const tidy = tidyNames(names, locale);
194
+ if (JSON.stringify(tidy) !== JSON.stringify(names))
195
+ await model.updateFields(id, { name: tidy });
159
196
  };
160
197
  }
161
198
  const isFlagged = (_context, proxy) => proxy.default(false).eq(true);
@@ -180,6 +217,11 @@ __decorate([
180
217
  (0, tenant_scoped_model_1.TenantScopedModel)(db_1.SendModel),
181
218
  __metadata("design:type", db_1.SendModel)
182
219
  ], TemplatesTableAPI.prototype, "sends", void 0);
220
+ __decorate([
221
+ (0, interface_api_1.Parameter)(localized_text_1.CONTENT_LANGUAGE_HEADER, "header"),
222
+ (0, metadata_1.ModifierKey)(interface_database_decorators_1.LocalizationModifier),
223
+ __metadata("design:type", String)
224
+ ], TemplatesTableAPI.prototype, "language", void 0);
183
225
  __decorate([
184
226
  (0, base_1.Select)(),
185
227
  (0, metadata_1.Listable)(),
@@ -1 +1 @@
1
- {"version":3,"file":"templates-table.js","sourceRoot":"","sources":["../../src/data/templates-table.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"templates-table.js","sourceRoot":"","sources":["../../src/data/templates-table.ts"],"names":[],"mappings":"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"}
@@ -5,28 +5,28 @@ export declare class TemplateCategoriesType extends DataType {
5
5
  protected defaultInputComponent(): import("@antelopejs/interface-dms").ComponentInfoSerialized<unknown>;
6
6
  getValidation(): import("zod").ZodEffects<import("zod").ZodArray<import("zod").ZodObject<{
7
7
  id: import("zod").ZodString;
8
- label: import("zod").ZodString;
8
+ label: import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodString>;
9
9
  icon: import("zod").ZodString;
10
10
  } & {
11
11
  moveTo: import("zod").ZodOptional<import("zod").ZodString>;
12
12
  }, "strip", import("zod").ZodTypeAny, {
13
13
  id: string;
14
- label: string;
14
+ label: Record<string, string>;
15
15
  icon: string;
16
16
  moveTo?: string | undefined;
17
17
  }, {
18
18
  id: string;
19
- label: string;
19
+ label: Record<string, string>;
20
20
  icon: string;
21
21
  moveTo?: string | undefined;
22
22
  }>, "many">, {
23
23
  id: string;
24
- label: string;
24
+ label: Record<string, string>;
25
25
  icon: string;
26
26
  moveTo?: string | undefined;
27
27
  }[], {
28
28
  id: string;
29
- label: string;
29
+ label: Record<string, string>;
30
30
  icon: string;
31
31
  moveTo?: string | undefined;
32
32
  }[]>;
@@ -1,5 +1,9 @@
1
+ import type { LocalizedText } from "@antelopejs/interface-dms-mailing";
1
2
  import { MailingTemplate } from "../tables";
2
3
  export type TemplateAttentionFields = Pick<MailingTemplate, "attention" | "needsAttention">;
4
+ export type TemplateFields = Omit<Partial<MailingTemplate>, "name"> & {
5
+ name?: LocalizedText;
6
+ };
3
7
  declare const TemplateModel_base: {
4
8
  new (database: import("@antelopejs/interface-database").SchemaInstance<any>): {
5
9
  readonly table: import("@antelopejs/interface-database").Table<MailingTemplate>;
@@ -20,7 +24,12 @@ declare const TemplateModel_base: {
20
24
  validate(obj: unknown, options?: import("@antelopejs/interface-database-decorators").ValidateInputOptions): import("@antelopejs/interface-database-decorators").ValidationResult;
21
25
  };
22
26
  export declare class TemplateModel extends TemplateModel_base {
23
- publishIfCurrent(template: MailingTemplate, patch: Partial<MailingTemplate>): Promise<boolean>;
27
+ static fromFields(fields: TemplateFields): MailingTemplate;
28
+ static namesOf(template: MailingTemplate): LocalizedText;
29
+ static nameIn(template: MailingTemplate, locale: string): string;
30
+ insertFields(fields: TemplateFields): Promise<string[]>;
31
+ updateFields(id: string, fields: TemplateFields): Promise<number>;
32
+ publishIfCurrent(template: MailingTemplate, patch: TemplateFields): Promise<boolean>;
24
33
  getBySlug(slug: string): Promise<MailingTemplate | undefined>;
25
34
  writeAttention(id: string, fields: TemplateAttentionFields): Promise<void>;
26
35
  }
@@ -5,15 +5,41 @@ const node_crypto_1 = require("node:crypto");
5
5
  const interface_database_decorators_1 = require("@antelopejs/interface-database-decorators");
6
6
  const tables_1 = require("../tables");
7
7
  const template_slugs_model_1 = require("./template-slugs.model");
8
+ const isLocalizedText = (value) => typeof value === "object" &&
9
+ value !== null &&
10
+ Object.values(value).every((text) => typeof text === "string");
11
+ const MODIFIER_CONTAINER = "_internal";
8
12
  class TemplateModel extends (0, interface_database_decorators_1.BasicDataModel)(tables_1.MailingTemplate, tables_1.MAILING_TEMPLATES_TABLE_NAME) {
13
+ static fromFields(fields) {
14
+ return TemplateModel.fromPlainData(fields).localize("*", ["name"]);
15
+ }
16
+ static namesOf(template) {
17
+ const names = template.localize("*", ["name"]).name;
18
+ return isLocalizedText(names) ? names : {};
19
+ }
20
+ static nameIn(template, locale) {
21
+ return template.localize(locale, ["name"]).name ?? "";
22
+ }
23
+ insertFields(fields) {
24
+ return this.insert(TemplateModel.fromFields(fields));
25
+ }
26
+ updateFields(id, fields) {
27
+ const row = TemplateModel.fromFields(fields);
28
+ (0, interface_database_decorators_1.triggerEvent)(row, "update");
29
+ const stored = TemplateModel.toDatabase(row);
30
+ if (fields.name === undefined)
31
+ delete stored[MODIFIER_CONTAINER];
32
+ return this.table.get(id).update(stored).run();
33
+ }
9
34
  async publishIfCurrent(template, patch) {
35
+ const stored = TemplateModel.toDatabase(TemplateModel.fromFields(patch));
10
36
  const outcome = await this.table
11
37
  .atomicMutation(template._id, {
12
38
  type: "update",
13
39
  revisionField: "revision",
14
40
  expectedRevision: template.revision ?? { kind: "missing" },
15
41
  nextRevision: (0, node_crypto_1.randomUUID)(),
16
- patch: { ...patch, updatedAt: new Date() },
42
+ patch: { ...stored, updatedAt: new Date() },
17
43
  })
18
44
  .run();
19
45
  if (outcome === "unknown")
@@ -1 +1 @@
1
- {"version":3,"file":"templates.model.js","sourceRoot":"","sources":["../../../src/db/models/templates.model.ts"],"names":[],"mappings":";;;AAAA,6CAAyC;AACzC,6FAA2E;AAC3E,sCAA0E;AAC1E,iEAA2D;AAQ3D,MAAa,aAAc,SAAQ,IAAA,8CAAc,EAC/C,wBAAe,EACf,qCAA4B,CAC7B;IAEC,KAAK,CAAC,gBAAgB,CACpB,QAAyB,EACzB,KAA+B;QAE/B,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,KAAK;aAC7B,cAAc,CAAC,QAAQ,CAAC,GAAG,EAAE;YAC5B,IAAI,EAAE,QAAQ;YACd,aAAa,EAAE,UAAU;YACzB,gBAAgB,EAAE,QAAQ,CAAC,QAAQ,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE;YAC1D,YAAY,EAAE,IAAA,wBAAU,GAAE;YAC1B,KAAK,EAAE,EAAE,GAAG,KAAK,EAAE,SAAS,EAAE,IAAI,IAAI,EAAE,EAAE;SAC3C,CAAC;aACD,GAAG,EAAE,CAAC;QACT,IAAI,OAAO,KAAK,SAAS;YACvB,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAC;QAC1E,OAAO,OAAO,KAAK,SAAS,CAAC;IAC/B,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,IAAY;QAC1B,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QAG5C,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACpB,MAAM,MAAM,GAAG,MAAM,IAAI,wCAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,KAAK,CAC7D,YAAY,EACZ,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAC9B,CAAC;YACF,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;YAClE,IAAI,KAAK;gBAAE,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,KAAK,CAAC,UAAU,CAAC,CAAC;QACrE,CAAC;QACD,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC;IACjB,CAAC;IAMD,KAAK,CAAC,cAAc,CAClB,EAAU,EACV,MAA+B;QAE/B,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC;IAChD,CAAC;CACF;AAhDD,sCAgDC"}
1
+ {"version":3,"file":"templates.model.js","sourceRoot":"","sources":["../../../src/db/models/templates.model.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,12 @@
1
1
  import { Table } from "@antelopejs/interface-database-decorators";
2
2
  import type { TemplateStatus } from "../../types";
3
3
  export declare const MAILING_TEMPLATES_TABLE_NAME = "mailing_templates";
4
- export declare class MailingTemplate extends Table {
4
+ declare const MailingTemplate_base: import("@antelopejs/interface-database-decorators").TableClass<Table & {
5
+ localize<This extends {
6
+ constructor: any;
7
+ }>(this: This, locale: string, fields?: Array<keyof This>): This;
8
+ }, [], object>;
9
+ export declare class MailingTemplate extends MailingTemplate_base {
5
10
  _id: string;
6
11
  createdAt: Date;
7
12
  updatedAt: Date;
@@ -32,3 +37,4 @@ export declare class MailingTemplate extends Table {
32
37
  pendingDeclaredHash?: string;
33
38
  json_published_version?: string;
34
39
  }
40
+ export {};
@@ -13,8 +13,9 @@ exports.MailingTemplate = exports.MAILING_TEMPLATES_TABLE_NAME = void 0;
13
13
  const node_crypto_1 = require("node:crypto");
14
14
  const interface_database_decorators_1 = require("@antelopejs/interface-database-decorators");
15
15
  const constants_1 = require("@antelopejs/interface-dms/constants");
16
+ const interface_dms_mailing_1 = require("@antelopejs/interface-dms-mailing");
16
17
  exports.MAILING_TEMPLATES_TABLE_NAME = "mailing_templates";
17
- let MailingTemplate = class MailingTemplate extends interface_database_decorators_1.Table {
18
+ let MailingTemplate = class MailingTemplate extends interface_database_decorators_1.Table.with(interface_database_decorators_1.LocalizationModifier) {
18
19
  };
19
20
  exports.MailingTemplate = MailingTemplate;
20
21
  __decorate([
@@ -38,6 +39,7 @@ __decorate([
38
39
  __metadata("design:type", String)
39
40
  ], MailingTemplate.prototype, "slug", void 0);
40
41
  __decorate([
42
+ (0, interface_database_decorators_1.Localized)({ fallbackLocale: interface_dms_mailing_1.LOCALIZED_TEXT_FALLBACK_LOCALE }),
41
43
  (0, interface_database_decorators_1.Field)("string"),
42
44
  __metadata("design:type", String)
43
45
  ], MailingTemplate.prototype, "name", void 0);
@@ -1 +1 @@
1
- {"version":3,"file":"templates.table.js","sourceRoot":"","sources":["../../../src/db/tables/templates.table.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,6CAAyC;AACzC,6FASmD;AACnD,mEAAyE;AAG5D,QAAA,4BAA4B,GAAG,mBAAmB,CAAC;AAGzD,IAAM,eAAe,GAArB,MAAM,eAAgB,SAAQ,qCAAK;CA8IzC,CAAA;AA9IY,0CAAe;AAElB;IADP,IAAA,qCAAK,EAAC,QAAQ,CAAC;;4CACI;AAIZ;IAFP,IAAA,4CAAY,GAAE;IACd,IAAA,qCAAK,EAAC,MAAM,CAAC;8BACK,IAAI;kDAAC;AAKhB;IAHP,IAAA,qCAAK,GAAE;IACP,IAAA,0CAAU,GAAE;IACZ,IAAA,qCAAK,EAAC,MAAM,CAAC;8BACK,IAAI;kDAAC;AAIhB;IAFP,IAAA,qCAAK,GAAE;IACP,IAAA,qCAAK,EAAC,QAAQ,CAAC;;6CACK;AAGb;IADP,IAAA,qCAAK,EAAC,QAAQ,CAAC;;6CACK;AAIb;IAFP,IAAA,qCAAK,GAAE;IACP,IAAA,qCAAK,EAAC,QAAQ,CAAC;;iDACS;AAIjB;IAFP,IAAA,qCAAK,GAAE;IACP,IAAA,qCAAK,EAAC,QAAQ,CAAC;;+CACe;AAOvB;IADP,IAAA,qCAAK,EAAC,QAAQ,CAAC;;qDACa;AAOrB;IADP,IAAA,qCAAK,EAAC,QAAQ,CAAC;;mDACY;AAIpB;IADP,IAAA,qCAAK,EAAC,SAAS,CAAC;;uDACgB;AAGzB;IADP,IAAA,qCAAK,EAAC,MAAM,CAAC;8BACW,IAAI;uDAAC;AAGtB;IADP,IAAA,qCAAK,EAAC,QAAQ,CAAC;;uDACgB;AAOxB;IADP,IAAA,qCAAK,EAAC,QAAQ,CAAC;;sDACc;AAItB;IADP,IAAA,qCAAK,EAAC,QAAQ,CAAC;;yDACiB;AAGzB;IADP,IAAA,qCAAK,EAAC,QAAQ,CAAC;;oDACa;AAQrB;IADP,IAAA,qCAAK,EAAC,QAAQ,CAAC;;uDACe;AAOvB;IADP,IAAA,qCAAK,EAAC,QAAQ,CAAC;;6DACsB;AAI9B;IADP,IAAA,qCAAK,EAAC,QAAQ,CAAC;;uDACe;AASvB;IADP,IAAA,qCAAK,EAAC,QAAQ,CAAC;;gDACQ;AAGhB;IADP,IAAA,qCAAK,EAAC,QAAQ,CAAC;;kDACU;AAGlB;IADP,IAAA,qCAAK,EAAC,MAAM,CAAC;8BACQ,IAAI;oDAAC;AAQnB;IADP,IAAA,qCAAK,EAAC,QAAQ,CAAC;;kDACU;AAKlB;IAFP,IAAA,qCAAK,GAAE;IACP,IAAA,qCAAK,EAAC,SAAS,CAAC;;uDACe;AAIxB;IADP,IAAA,qCAAK,EAAC,MAAM,CAAC;8BACU,IAAI;sDAAC;AAQrB;IADP,IAAA,qCAAK,EAAC,QAAQ,CAAC;;qDACc;AAItB;IADP,IAAA,qCAAK,EAAC,QAAQ,CAAC;;iDACU;AAIlB;IADP,IAAA,qCAAK,EAAC,QAAQ,CAAC;;gEACyB;AAGjC;IADP,IAAA,qCAAK,EAAC,QAAQ,CAAC;;4DACqB;AAO7B;IADP,IAAA,qCAAK,EAAC,QAAQ,CAAC;;+DACwB;0BA7I7B,eAAe;IAD3B,IAAA,6CAAa,EAAC,oCAA4B,EAAE,8BAAkB,CAAC;GACnD,eAAe,CA8I3B;AAGD,MAAM,wBAAyB,SAAQ,wCAAQ;IAC7C,MAAM,CAAC,MAA+B,EAAE,KAAa;QACnD,MAAM,CAAC,KAAK,CAAC,GAAG,IAAA,wBAAU,GAAE,CAAC;IAC/B,CAAC;CACF;AAED,IAAA,8CAAc,EAAC,eAAe,EAAE,wBAAwB,EAAE,UAAU,EAAE,EAAE,CAAC,CAAC"}
1
+ {"version":3,"file":"templates.table.js","sourceRoot":"","sources":["../../../src/db/tables/templates.table.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,6CAAyC;AACzC,6FAWmD;AACnD,mEAAyE;AACzE,6EAAmF;AAGtE,QAAA,4BAA4B,GAAG,mBAAmB,CAAC;AAGzD,IAAM,eAAe,GAArB,MAAM,eAAgB,SAAQ,qCAAK,CAAC,IAAI,CAAC,oDAAoB,CAAC;CAoJpE,CAAA;AApJY,0CAAe;AAElB;IADP,IAAA,qCAAK,EAAC,QAAQ,CAAC;;4CACI;AAIZ;IAFP,IAAA,4CAAY,GAAE;IACd,IAAA,qCAAK,EAAC,MAAM,CAAC;8BACK,IAAI;kDAAC;AAKhB;IAHP,IAAA,qCAAK,GAAE;IACP,IAAA,0CAAU,GAAE;IACZ,IAAA,qCAAK,EAAC,MAAM,CAAC;8BACK,IAAI;kDAAC;AAIhB;IAFP,IAAA,qCAAK,GAAE;IACP,IAAA,qCAAK,EAAC,QAAQ,CAAC;;6CACK;AASb;IAFP,IAAA,yCAAS,EAAC,EAAE,cAAc,EAAE,sDAA8B,EAAE,CAAC;IAC7D,IAAA,qCAAK,EAAC,QAAQ,CAAC;;6CACK;AAIb;IAFP,IAAA,qCAAK,GAAE;IACP,IAAA,qCAAK,EAAC,QAAQ,CAAC;;iDACS;AAIjB;IAFP,IAAA,qCAAK,GAAE;IACP,IAAA,qCAAK,EAAC,QAAQ,CAAC;;+CACe;AAOvB;IADP,IAAA,qCAAK,EAAC,QAAQ,CAAC;;qDACa;AAOrB;IADP,IAAA,qCAAK,EAAC,QAAQ,CAAC;;mDACY;AAIpB;IADP,IAAA,qCAAK,EAAC,SAAS,CAAC;;uDACgB;AAGzB;IADP,IAAA,qCAAK,EAAC,MAAM,CAAC;8BACW,IAAI;uDAAC;AAGtB;IADP,IAAA,qCAAK,EAAC,QAAQ,CAAC;;uDACgB;AAOxB;IADP,IAAA,qCAAK,EAAC,QAAQ,CAAC;;sDACc;AAItB;IADP,IAAA,qCAAK,EAAC,QAAQ,CAAC;;yDACiB;AAGzB;IADP,IAAA,qCAAK,EAAC,QAAQ,CAAC;;oDACa;AAQrB;IADP,IAAA,qCAAK,EAAC,QAAQ,CAAC;;uDACe;AAOvB;IADP,IAAA,qCAAK,EAAC,QAAQ,CAAC;;6DACsB;AAI9B;IADP,IAAA,qCAAK,EAAC,QAAQ,CAAC;;uDACe;AASvB;IADP,IAAA,qCAAK,EAAC,QAAQ,CAAC;;gDACQ;AAGhB;IADP,IAAA,qCAAK,EAAC,QAAQ,CAAC;;kDACU;AAGlB;IADP,IAAA,qCAAK,EAAC,MAAM,CAAC;8BACQ,IAAI;oDAAC;AAQnB;IADP,IAAA,qCAAK,EAAC,QAAQ,CAAC;;kDACU;AAKlB;IAFP,IAAA,qCAAK,GAAE;IACP,IAAA,qCAAK,EAAC,SAAS,CAAC;;uDACe;AAIxB;IADP,IAAA,qCAAK,EAAC,MAAM,CAAC;8BACU,IAAI;sDAAC;AAQrB;IADP,IAAA,qCAAK,EAAC,QAAQ,CAAC;;qDACc;AAItB;IADP,IAAA,qCAAK,EAAC,QAAQ,CAAC;;iDACU;AAIlB;IADP,IAAA,qCAAK,EAAC,QAAQ,CAAC;;gEACyB;AAGjC;IADP,IAAA,qCAAK,EAAC,QAAQ,CAAC;;4DACqB;AAO7B;IADP,IAAA,qCAAK,EAAC,QAAQ,CAAC;;+DACwB;0BAnJ7B,eAAe;IAD3B,IAAA,6CAAa,EAAC,oCAA4B,EAAE,8BAAkB,CAAC;GACnD,eAAe,CAoJ3B;AAGD,MAAM,wBAAyB,SAAQ,wCAAQ;IAC7C,MAAM,CAAC,MAA+B,EAAE,KAAa;QACnD,MAAM,CAAC,KAAK,CAAC,GAAG,IAAA,wBAAU,GAAE,CAAC;IAC/B,CAAC;CACF;AAED,IAAA,8CAAc,EAAC,eAAe,EAAE,wBAAwB,EAAE,UAAU,EAAE,EAAE,CAAC,CAAC"}
@@ -0,0 +1,13 @@
1
+ import type { VariableDefinition } from "../types";
2
+ export interface MoneyValue {
3
+ value: number;
4
+ currency: string;
5
+ }
6
+ export interface ValueFormat {
7
+ locale: string;
8
+ datePaths: Set<string>;
9
+ }
10
+ export declare function formattingLocale(locale: string): string;
11
+ export declare function valueFormatOf(locale: string, variables?: VariableDefinition[]): ValueFormat;
12
+ export declare function isMoneyValue(value: unknown): value is MoneyValue;
13
+ export declare function formatValue(value: unknown, path?: string, format?: ValueFormat): string;
@@ -0,0 +1,85 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.formattingLocale = formattingLocale;
4
+ exports.valueFormatOf = valueFormatOf;
5
+ exports.isMoneyValue = isMoneyValue;
6
+ exports.formatValue = formatValue;
7
+ const FALLBACK_LOCALE = "en";
8
+ const DATE_STYLE = { dateStyle: "long" };
9
+ const UTC_DATE_STYLE = {
10
+ ...DATE_STYLE,
11
+ timeZone: "UTC",
12
+ };
13
+ const ISO_DAY = /^\d{4}-\d{2}-\d{2}$/;
14
+ const ISO_DATE_TIME = /^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}/;
15
+ const DECIMAL_BASE = 10;
16
+ const DATE_TYPE = "date";
17
+ function formattingLocale(locale) {
18
+ try {
19
+ return Intl.NumberFormat.supportedLocalesOf(locale)[0] ?? FALLBACK_LOCALE;
20
+ }
21
+ catch {
22
+ return FALLBACK_LOCALE;
23
+ }
24
+ }
25
+ function valueFormatOf(locale, variables = []) {
26
+ return {
27
+ locale: formattingLocale(locale),
28
+ datePaths: new Set(variables
29
+ .filter((variable) => variable.type === DATE_TYPE)
30
+ .map((variable) => variable.path)),
31
+ };
32
+ }
33
+ function isMoneyValue(value) {
34
+ if (!value || typeof value !== "object")
35
+ return false;
36
+ const candidate = value;
37
+ return (typeof candidate.value === "number" &&
38
+ Number.isFinite(candidate.value) &&
39
+ typeof candidate.currency === "string");
40
+ }
41
+ function formatMoney(money, locale) {
42
+ try {
43
+ const currency = new Intl.NumberFormat(locale, {
44
+ style: "currency",
45
+ currency: money.currency,
46
+ });
47
+ const digits = currency.resolvedOptions().maximumFractionDigits ?? 0;
48
+ return currency.format(money.value / DECIMAL_BASE ** digits);
49
+ }
50
+ catch {
51
+ return new Intl.NumberFormat(locale).format(money.value);
52
+ }
53
+ }
54
+ function formatDate(date, options, locale) {
55
+ return new Intl.DateTimeFormat(locale, options).format(date);
56
+ }
57
+ function isoDateOptions(value) {
58
+ if (ISO_DAY.test(value))
59
+ return UTC_DATE_STYLE;
60
+ if (ISO_DATE_TIME.test(value))
61
+ return DATE_STYLE;
62
+ return null;
63
+ }
64
+ function formatIsoDate(value, locale) {
65
+ const options = isoDateOptions(value);
66
+ if (!options)
67
+ return null;
68
+ const date = new Date(value);
69
+ return Number.isNaN(date.getTime())
70
+ ? null
71
+ : formatDate(date, options, locale);
72
+ }
73
+ function formatValue(value, path = "", format) {
74
+ const locale = format?.locale ?? FALLBACK_LOCALE;
75
+ if (isMoneyValue(value))
76
+ return formatMoney(value, locale);
77
+ if (value instanceof Date)
78
+ return Number.isNaN(value.getTime())
79
+ ? String(value)
80
+ : formatDate(value, DATE_STYLE, locale);
81
+ if (typeof value === "string" && format?.datePaths.has(path))
82
+ return formatIsoDate(value, locale) ?? value;
83
+ return String(value);
84
+ }
85
+ //# sourceMappingURL=formats.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"formats.js","sourceRoot":"","sources":["../../src/engine/formats.ts"],"names":[],"mappings":"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"}
@@ -2,6 +2,7 @@ export * from "./changes";
2
2
  export * from "./conditions";
3
3
  export * from "./coverage";
4
4
  export * from "./fallback-html";
5
+ export * from "./formats";
5
6
  export * from "./paths";
6
7
  export * from "./plain-text";
7
8
  export * from "./resolve";
@@ -18,6 +18,7 @@ __exportStar(require("./changes"), exports);
18
18
  __exportStar(require("./conditions"), exports);
19
19
  __exportStar(require("./coverage"), exports);
20
20
  __exportStar(require("./fallback-html"), exports);
21
+ __exportStar(require("./formats"), exports);
21
22
  __exportStar(require("./paths"), exports);
22
23
  __exportStar(require("./plain-text"), exports);
23
24
  __exportStar(require("./resolve"), exports);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/engine/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,4CAA0B;AAC1B,+CAA6B;AAC7B,6CAA2B;AAC3B,kDAAgC;AAChC,0CAAwB;AACxB,+CAA6B;AAC7B,4CAA0B;AAC1B,qDAAmC;AACnC,2CAAyB;AACzB,yCAAuB"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/engine/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,4CAA0B;AAC1B,+CAA6B;AAC7B,6CAA2B;AAC3B,kDAAgC;AAChC,4CAA0B;AAC1B,0CAAwB;AACxB,+CAA6B;AAC7B,4CAA0B;AAC1B,qDAAmC;AACnC,2CAAyB;AACzB,yCAAuB"}
@@ -1,5 +1,6 @@
1
1
  import type { LocaleContent, ResolvedEmail } from "../types";
2
+ import { type ValueFormat } from "./formats";
2
3
  import { type InterpolationMode } from "./tokens";
3
4
  type Data = Record<string, unknown>;
4
- export declare function resolveEmail(content: LocaleContent, data: Data, mode?: InterpolationMode): ResolvedEmail;
5
+ export declare function resolveEmail(content: LocaleContent, data: Data, mode?: InterpolationMode, format?: ValueFormat): ResolvedEmail;
5
6
  export {};
@@ -4,12 +4,13 @@ exports.resolveEmail = resolveEmail;
4
4
  const constants_1 = require("../constants");
5
5
  const conditions_1 = require("./conditions");
6
6
  const fallback_html_1 = require("./fallback-html");
7
+ const formats_1 = require("./formats");
7
8
  const paths_1 = require("./paths");
8
9
  const system_variables_1 = require("./system-variables");
9
10
  const tokens_1 = require("./tokens");
10
11
  const BLOCKED_IMAGE = "";
11
12
  function text(state, value) {
12
- const result = (0, tokens_1.interpolate)(value, state.data, state.mode);
13
+ const result = (0, tokens_1.interpolate)(value, state.data, state.mode, state.format);
13
14
  for (const path of result.missing)
14
15
  state.missing.add(path);
15
16
  return result.text;
@@ -23,9 +24,9 @@ function systemUrl(state, block, path) {
23
24
  const value = (0, paths_1.getPath)(state.data, path);
24
25
  return (0, paths_1.isPresent)(value) ? (0, fallback_html_1.safeUrl)(String(value)) : "";
25
26
  }
26
- function cell(item, path) {
27
+ function cell(item, path, state) {
27
28
  const value = (0, paths_1.getPath)(item, path);
28
- return (0, paths_1.isPresent)(value) ? String(value) : "";
29
+ return (0, paths_1.isPresent)(value) ? (0, formats_1.formatValue)(value, "", state.format) : "";
29
30
  }
30
31
  function listRows(block, state) {
31
32
  const source = (0, paths_1.getPath)(state.data, block.source);
@@ -34,8 +35,8 @@ function listRows(block, state) {
34
35
  return [];
35
36
  }
36
37
  return source.map((item) => ({
37
- label: cell(item, block.labelPath),
38
- value: cell(item, block.valuePath),
38
+ label: cell(item, block.labelPath, state),
39
+ value: cell(item, block.valuePath, state),
39
40
  }));
40
41
  }
41
42
  function branch(block, state) {
@@ -131,8 +132,14 @@ function resolveBlocks(blocks, state) {
131
132
  });
132
133
  }
133
134
  const isUserPath = (path) => !constants_1.SYSTEM_VARIABLE_PATHS.includes(path);
134
- function resolveEmail(content, data, mode = "preview") {
135
- const state = { data, mode, missing: new Set(), hidden: [] };
135
+ function resolveEmail(content, data, mode = "preview", format) {
136
+ const state = {
137
+ data,
138
+ mode,
139
+ missing: new Set(),
140
+ hidden: [],
141
+ format,
142
+ };
136
143
  const subject = text(state, content.subject);
137
144
  const preheader = text(state, content.preheader);
138
145
  const blocks = resolveBlocks(content.blocks, state);