@antelopejs/dms-mailing 0.6.0 → 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.
- package/dist/constants.d.ts +1 -0
- package/dist/constants.js +2 -1
- package/dist/constants.js.map +1 -1
- package/dist/data/templates-table.d.ts +4 -1
- package/dist/data/templates-table.js +55 -13
- package/dist/data/templates-table.js.map +1 -1
- package/dist/data-types/categories-type.d.ts +5 -5
- package/dist/db/models/templates.model.d.ts +10 -1
- package/dist/db/models/templates.model.js +27 -1
- package/dist/db/models/templates.model.js.map +1 -1
- package/dist/db/tables/templates.table.d.ts +7 -1
- package/dist/db/tables/templates.table.js +3 -1
- package/dist/db/tables/templates.table.js.map +1 -1
- package/dist/engine/formats.d.ts +13 -0
- package/dist/engine/formats.js +85 -0
- package/dist/engine/formats.js.map +1 -0
- package/dist/engine/index.d.ts +1 -0
- package/dist/engine/index.js +1 -0
- package/dist/engine/index.js.map +1 -1
- package/dist/engine/resolve.d.ts +2 -1
- package/dist/engine/resolve.js +14 -7
- package/dist/engine/resolve.js.map +1 -1
- package/dist/engine/tokens.d.ts +2 -1
- package/dist/engine/tokens.js +3 -5
- package/dist/engine/tokens.js.map +1 -1
- package/dist/frontend-module.d.ts +2 -0
- package/dist/frontend-module.js +24 -0
- package/dist/frontend-module.js.map +1 -0
- package/dist/hooks/tenant-export.js +4 -1
- package/dist/hooks/tenant-export.js.map +1 -1
- package/dist/implementations/dms-mailing/index.d.ts +1 -0
- package/dist/implementations/dms-mailing/index.js +3 -1
- package/dist/implementations/dms-mailing/index.js.map +1 -1
- package/dist/index.js +2 -19
- package/dist/index.js.map +1 -1
- package/dist/pages/overview.d.ts +1 -1
- package/dist/pages/overview.js +11 -13
- package/dist/pages/overview.js.map +1 -1
- package/dist/pages/sends.d.ts +1 -1
- package/dist/pages/sends.js +16 -8
- package/dist/pages/sends.js.map +1 -1
- package/dist/pages/templates.js +3 -8
- package/dist/pages/templates.js.map +1 -1
- package/dist/pages/toolbar.d.ts +12 -0
- package/dist/pages/toolbar.js +41 -0
- package/dist/pages/toolbar.js.map +1 -0
- package/dist/realtime.d.ts +2 -2
- package/dist/realtime.js +8 -8
- package/dist/realtime.js.map +1 -1
- package/dist/routes/metrics.d.ts +9 -2
- package/dist/routes/metrics.js +90 -35
- package/dist/routes/metrics.js.map +1 -1
- package/dist/routes/period.d.ts +1 -0
- package/dist/routes/period.js +19 -0
- package/dist/routes/period.js.map +1 -1
- package/dist/routes/sends.js +6 -3
- package/dist/routes/sends.js.map +1 -1
- package/dist/routes/settings.js +6 -7
- package/dist/routes/settings.js.map +1 -1
- package/dist/routes/templates.d.ts +8 -4
- package/dist/routes/templates.js +40 -15
- package/dist/routes/templates.js.map +1 -1
- package/dist/services/categories.d.ts +2 -1
- package/dist/services/categories.js +9 -0
- package/dist/services/categories.js.map +1 -1
- package/dist/services/declarations.js +2 -2
- package/dist/services/declarations.js.map +1 -1
- package/dist/services/events.js +1 -1
- package/dist/services/events.js.map +1 -1
- package/dist/services/localized-text.d.ts +7 -0
- package/dist/services/localized-text.js +28 -0
- package/dist/services/localized-text.js.map +1 -0
- package/dist/services/send-stat-items.js +34 -12
- package/dist/services/send-stat-items.js.map +1 -1
- package/dist/services/send-stats.d.ts +7 -0
- package/dist/services/send-stats.js +17 -5
- package/dist/services/send-stats.js.map +1 -1
- package/dist/services/send.d.ts +2 -0
- package/dist/services/send.js +11 -12
- package/dist/services/send.js.map +1 -1
- package/dist/services/sender-declaration.d.ts +2 -0
- package/dist/services/sender-declaration.js +18 -0
- package/dist/services/sender-declaration.js.map +1 -0
- package/dist/services/starters.d.ts +2 -2
- package/dist/services/starters.js +1 -10
- package/dist/services/starters.js.map +1 -1
- package/dist/services/templates.d.ts +11 -5
- package/dist/services/templates.js +24 -6
- package/dist/services/templates.js.map +1 -1
- package/dist/services/webhook-status.d.ts +2 -1
- package/dist/services/webhook-status.js +6 -5
- package/dist/services/webhook-status.js.map +1 -1
- package/dist/types/settings.d.ts +6 -0
- package/dist/types/settings.js +25 -5
- package/dist/types/settings.js.map +1 -1
- package/dist/validation/declarations.schema.d.ts +25 -7
- package/dist/validation/declarations.schema.js +16 -3
- package/dist/validation/declarations.schema.js.map +1 -1
- package/dist/validation/settings.schema.d.ts +25 -25
- package/dist/validation/settings.schema.js +30 -6
- package/dist/validation/settings.schema.js.map +1 -1
- package/dist/validation/templates.schema.d.ts +13 -0
- package/dist/validation/templates.schema.js +6 -1
- package/dist/validation/templates.schema.js.map +1 -1
- package/frontend-vue/app/components/CategoriesInput.vue +15 -13
- package/frontend-vue/app/components/FunnelCard.vue +46 -3
- package/frontend-vue/app/components/NewTemplateModal.vue +4 -2
- package/frontend-vue/app/components/OverviewGate.vue +0 -8
- package/frontend-vue/app/components/ProviderPill.vue +50 -0
- package/frontend-vue/app/components/SendDrawer.vue +206 -183
- package/frontend-vue/app/components/StarterGallery.vue +1 -1
- package/frontend-vue/app/components/TemplateCard.vue +4 -1
- package/frontend-vue/app/components/TemplateDrawer.vue +3 -5
- package/frontend-vue/app/components/TemplateGallery.vue +57 -17
- package/frontend-vue/app/components/TemplatePreviewFrame.vue +41 -11
- package/frontend-vue/app/components/editor/EditorTemplatePane.vue +1 -3
- package/frontend-vue/app/components/editor/EditorTitle.vue +1 -7
- package/frontend-vue/app/composables/useLocalizedDefaults.ts +5 -7
- package/frontend-vue/app/composables/useMailingApi.ts +3 -3
- package/frontend-vue/app/composables/useMailingReads.ts +2 -2
- package/frontend-vue/app/composables/useTemplateCategories.ts +8 -7
- package/frontend-vue/app/types/mailing.ts +18 -0
- package/frontend-vue/app/utils/categories.ts +58 -49
- package/frontend-vue/app/utils/funnel.ts +25 -0
- package/frontend-vue/app/utils/period.ts +0 -7
- package/frontend-vue/app/utils/starters.ts +3 -1
- package/frontend-vue/app/utils/tokens.ts +6 -1
- package/frontend-vue/i18n/locales/mailing-en-GB.json +19 -28
- package/frontend-vue/i18n/locales/mailing-fr-FR.json +19 -28
- package/frontend-vue/package.json +1 -1
- package/frontend-vue/tests/categories-input.test.ts +4 -10
- package/frontend-vue/tests/categories.test.ts +55 -17
- package/frontend-vue/tests/conditions.test.ts +1 -4
- package/frontend-vue/tests/funnel-card.test.ts +27 -0
- package/frontend-vue/tests/funnel.test.ts +25 -0
- package/frontend-vue/tests/localized-defaults.test.ts +0 -29
- package/frontend-vue/tests/new-template-modal.test.ts +1 -1
- package/frontend-vue/tests/overview-gate.test.ts +1 -24
- package/frontend-vue/tests/page-reads.test.ts +9 -25
- package/frontend-vue/tests/period.test.ts +0 -12
- package/frontend-vue/tests/replay-toast.test.ts +2 -1
- package/frontend-vue/tests/send-drawer.test.ts +123 -0
- package/frontend-vue/tests/template-drawer.test.ts +1 -1
- package/frontend-vue/tests/template-gallery.test.ts +90 -3
- package/frontend-vue/tests/template-preview-frame.test.ts +92 -0
- package/package.json +6 -5
- package/skills/dms-mailing/SKILL.md +17 -4
- package/src/constants.ts +2 -0
- package/src/data/sends-table.ts +1 -1
- package/src/data/templates-table.ts +123 -19
- package/src/db/models/templates.model.ts +61 -3
- package/src/db/tables/templates.table.ts +10 -1
- package/src/engine/formats.ts +124 -0
- package/src/engine/index.ts +1 -0
- package/src/engine/resolve.ts +18 -7
- package/src/engine/tokens.ts +7 -5
- package/src/frontend-module.ts +36 -0
- package/src/hooks/tenant-export.ts +8 -1
- package/src/implementations/dms-mailing/index.ts +2 -0
- package/src/index.ts +2 -23
- package/src/pages/overview.ts +20 -16
- package/src/pages/sends.ts +27 -11
- package/src/pages/templates.ts +4 -8
- package/src/pages/toolbar.ts +77 -0
- package/src/realtime.ts +17 -8
- package/src/routes/metrics.ts +158 -45
- package/src/routes/period.ts +32 -0
- package/src/routes/sends.ts +13 -4
- package/src/routes/settings.ts +11 -8
- package/src/routes/templates.ts +72 -26
- package/src/services/categories.ts +14 -1
- package/src/services/declarations.ts +4 -3
- package/src/services/events.ts +1 -1
- package/src/services/localized-text.ts +53 -0
- package/src/services/send-stat-items.ts +60 -13
- package/src/services/send-stats.ts +37 -5
- package/src/services/send.ts +19 -20
- package/src/services/sender-declaration.ts +27 -0
- package/src/services/starters.ts +3 -15
- package/src/services/templates.ts +50 -19
- package/src/services/webhook-status.ts +3 -3
- package/src/types/settings.ts +35 -5
- package/src/validation/declarations.schema.ts +29 -3
- package/src/validation/settings.schema.ts +56 -14
- package/src/validation/templates.schema.ts +10 -0
- package/frontend-vue/app/components/PageHeader.vue +0 -94
- package/frontend-vue/app/composables/useOverviewSetup.ts +0 -21
package/dist/constants.d.ts
CHANGED
|
@@ -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";
|
package/dist/constants.js.map
CHANGED
|
@@ -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;
|
|
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
|
|
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 =
|
|
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
|
-
|
|
111
|
-
const
|
|
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
|
|
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 (
|
|
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
|
|
155
|
-
|
|
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.
|
|
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
|
-
|
|
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: { ...
|
|
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,
|
|
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
|
-
|
|
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,
|
|
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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"}
|
package/dist/engine/index.d.ts
CHANGED
package/dist/engine/index.js
CHANGED
|
@@ -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);
|
package/dist/engine/index.js.map
CHANGED
|
@@ -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"}
|
package/dist/engine/resolve.d.ts
CHANGED
|
@@ -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 {};
|
package/dist/engine/resolve.js
CHANGED
|
@@ -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) ?
|
|
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 = {
|
|
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);
|