@codee-sh/medusa-plugin-notification-emails 0.0.1 → 0.1.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 (56) hide show
  1. package/.medusa/server/emails-previews/contact-form.js +5 -7
  2. package/.medusa/server/emails-previews/inventory-level.js +23 -0
  3. package/.medusa/server/emails-previews/order-completed.js +20 -14
  4. package/.medusa/server/emails-previews/order-placed.js +19 -13
  5. package/.medusa/server/src/admin/index.js +392 -2528
  6. package/.medusa/server/src/admin/index.mjs +314 -2450
  7. package/.medusa/server/src/api/admin/notification-plugin/render-template/route.js +2 -2
  8. package/.medusa/server/src/hooks/api/orders.js +3 -2
  9. package/.medusa/server/src/templates/emails/base-template/index.js +23 -0
  10. package/.medusa/server/src/templates/emails/base-template/template.js +25 -0
  11. package/.medusa/server/src/templates/emails/blocks/components/heading.js +15 -0
  12. package/.medusa/server/src/templates/emails/blocks/components/product-item.js +14 -0
  13. package/.medusa/server/src/templates/emails/blocks/components/repeater.js +26 -0
  14. package/.medusa/server/src/templates/emails/blocks/components/row.js +13 -0
  15. package/.medusa/server/src/templates/emails/blocks/components/section.js +14 -0
  16. package/.medusa/server/src/templates/emails/blocks/components/separator.js +13 -0
  17. package/.medusa/server/src/templates/emails/blocks/components/text.js +15 -0
  18. package/.medusa/server/src/templates/emails/blocks/index.js +41 -0
  19. package/.medusa/server/src/templates/{shared/i18n → emails/blocks}/types.js +1 -1
  20. package/.medusa/server/src/templates/emails/contact-form/config.js +95 -0
  21. package/.medusa/server/src/templates/emails/contact-form/index.js +6 -17
  22. package/.medusa/server/src/templates/emails/contact-form/translations/de.json +14 -0
  23. package/.medusa/server/src/templates/emails/contact-form/translations/en.json +12 -14
  24. package/.medusa/server/src/templates/emails/contact-form/translations/pl.json +8 -10
  25. package/.medusa/server/src/templates/emails/index.js +191 -45
  26. package/.medusa/server/src/templates/emails/inventory-level/config.js +126 -0
  27. package/.medusa/server/src/templates/emails/inventory-level/index.js +8 -0
  28. package/.medusa/server/src/templates/emails/inventory-level/translations/en.json +12 -0
  29. package/.medusa/server/src/templates/emails/{contact-form → inventory-level}/translations/index.js +1 -1
  30. package/.medusa/server/src/templates/emails/inventory-level/translations/pl.json +14 -0
  31. package/.medusa/server/src/templates/emails/order-completed/config.js +233 -0
  32. package/.medusa/server/src/templates/emails/order-completed/index.js +6 -17
  33. package/.medusa/server/src/templates/emails/order-completed/translations/en.json +2 -1
  34. package/.medusa/server/src/templates/emails/order-completed/translations/pl.json +2 -1
  35. package/.medusa/server/src/templates/emails/order-placed/config.js +221 -0
  36. package/.medusa/server/src/templates/emails/order-placed/index.js +6 -17
  37. package/.medusa/server/src/templates/emails/order-placed/translations/en.json +1 -1
  38. package/.medusa/server/src/templates/emails/order-placed/translations/pl.json +1 -1
  39. package/.medusa/server/src/templates/emails/types.js +3 -1
  40. package/.medusa/server/src/utils/i18n/i18n.js +194 -0
  41. package/.medusa/server/src/utils/i18n/index.js +18 -0
  42. package/.medusa/server/src/utils/index.js +5 -1
  43. package/.medusa/server/src/utils/is-defined.js +7 -0
  44. package/.medusa/server/src/utils/is-object.js +7 -0
  45. package/.medusa/server/src/utils/pick-value-from-object.js +28 -0
  46. package/README.md +8 -8
  47. package/package.json +18 -11
  48. package/.medusa/server/src/templates/emails/contact-form/template.js +0 -28
  49. package/.medusa/server/src/templates/emails/contact-form/types.js +0 -3
  50. package/.medusa/server/src/templates/emails/order-completed/template.js +0 -36
  51. package/.medusa/server/src/templates/emails/order-completed/types.js +0 -3
  52. package/.medusa/server/src/templates/emails/order-placed/template.js +0 -36
  53. package/.medusa/server/src/templates/emails/order-placed/types.js +0 -3
  54. package/.medusa/server/src/templates/shared/i18n/index.js +0 -6
  55. package/.medusa/server/src/templates/shared/i18n/languages.js +0 -187
  56. package/.medusa/server/src/templates/shared/i18n/utils.js +0 -186
@@ -0,0 +1,194 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getVariableValue = getVariableValue;
4
+ exports.interpolate = interpolate;
5
+ exports.multiInterpolate = multiInterpolate;
6
+ exports.t = t;
7
+ exports.createTranslator = createTranslator;
8
+ exports.mergeTranslations = mergeTranslations;
9
+ const index_1 = require("../index");
10
+ /**
11
+ * Simple i18n utility for templates
12
+ * Provides basic translation functionality without external dependencies
13
+ */
14
+ /**
15
+ * Flatten translations structure - extracts 'general' object properties to root level
16
+ * This allows JSON files to have nested structure while templates use flat structure
17
+ *
18
+ * @param translations - Translations object (may contain 'general' wrapper)
19
+ * @returns Flattened translations object
20
+ */
21
+ function flattenTranslations(translations) {
22
+ if (!(0, index_1.isObject)(translations) || !translations.general) {
23
+ return translations;
24
+ }
25
+ // Extract 'general' properties to root level
26
+ const { general, ...rest } = translations;
27
+ return { ...general, ...rest };
28
+ }
29
+ /**
30
+ * Get variable value from text
31
+ */
32
+ function getVariableValue(text) {
33
+ if (!text || typeof text !== "string") {
34
+ return { replaced: text, original: text };
35
+ }
36
+ return {
37
+ replaced: text.replace(/\{\{(\w+(?:\.\w+)*)\}\}/g, (match, key) => {
38
+ return key;
39
+ }),
40
+ original: text
41
+ };
42
+ }
43
+ /**
44
+ * Interpolate variables in text using {{variable}} syntax
45
+ * Supports nested object paths (e.g., inventory_level.id)
46
+ *
47
+ * @param text - Text with {{variable}} placeholders
48
+ * @param data - Data object for interpolation
49
+ * @returns Interpolated text
50
+ */
51
+ function interpolate(text, data = {}) {
52
+ if (!text || typeof text !== "string") {
53
+ return text;
54
+ }
55
+ const { replaced, original } = getVariableValue(text);
56
+ const value = (0, index_1.pickValueFromObject)(replaced, data);
57
+ return value !== undefined && value !== null
58
+ ? String(value)
59
+ : original;
60
+ }
61
+ /**
62
+ * Group interpolate - handles variables with prefixes (data. or translations.)
63
+ *
64
+ * Variables with prefix `data.` are resolved using interpolate function
65
+ * Variables with prefix `translations.` are resolved using translator.single
66
+ *
67
+ * @param text - Text with {{data.variable}} and {{translations.key}} placeholders
68
+ * @param data - Data object for interpolation
69
+ * @param translator - Translator instance with single method
70
+ * @returns Interpolated text with all variables resolved
71
+ *
72
+ * @example
73
+ * multiInterpolate(
74
+ * "Order {{data.order.id}} - {{translations.headerTitle}}",
75
+ * { order: { id: "123" } },
76
+ * translator
77
+ * )
78
+ * // Returns: "Order 123 - Order Confirmation"
79
+ */
80
+ function multiInterpolate(text, data = {}, translator, config) {
81
+ if (!text || typeof text !== "string") {
82
+ return text;
83
+ }
84
+ // Find all variables in format {{...}}
85
+ const variableRegex = /\{\{((?:data\.|translations\.)?\w+(?:\.\w+)*)\}\}/g;
86
+ const matches = Array.from(text.matchAll(variableRegex));
87
+ if (matches.length === 0) {
88
+ return text;
89
+ }
90
+ // Build dynamic data prefix array (e.g., ["data"] or ["data", "items"])
91
+ const dataPrefix = config?.arrayPath
92
+ ? ["data", config.arrayPath]
93
+ : ["data"];
94
+ const dataPrefixString = dataPrefix.join(".");
95
+ // Process each variable separately
96
+ let result = text;
97
+ for (const match of matches) {
98
+ const fullMatch = match[0]; // e.g., "{{data.order.id}}"
99
+ const variable = match[1]; // e.g., "data.order.id"
100
+ let replacement;
101
+ // Check if variable starts with dynamic data prefix
102
+ if (variable.startsWith(`${dataPrefixString}.`)) {
103
+ // Escape dots in prefix for regex
104
+ const escapedPrefix = dataPrefixString.replace(/\./g, '\\.');
105
+ const dataPath = variable.replace(new RegExp(`^${escapedPrefix}\\.`), "");
106
+ const value = (0, index_1.pickValueFromObject)(dataPath, data);
107
+ // Convert value to string, preserving false as "false" and true as "true"
108
+ // String(false) = "false", String(true) = "true", String(0) = "0", etc.
109
+ if (value === undefined || value === null) {
110
+ replacement = undefined;
111
+ }
112
+ else {
113
+ replacement = String(value);
114
+ }
115
+ }
116
+ // Check if variable starts with translations. prefix
117
+ else if (variable.startsWith("translations.")) {
118
+ // Remove "translations." prefix and use translator.single
119
+ const translationKey = variable.replace(/^translations\./, "");
120
+ replacement = translator.t(translationKey, data);
121
+ replacement = multiInterpolate(replacement, data, translator);
122
+ }
123
+ // Replace the variable in text if we found a replacement
124
+ if (replacement !== undefined) {
125
+ result = result.replace(fullMatch, replacement);
126
+ }
127
+ }
128
+ return result;
129
+ }
130
+ /**
131
+ * Simple translation function
132
+ *
133
+ * @param locale - Target locale (e.g., 'pl', 'en')
134
+ * @param translations - Record of translations by locale
135
+ * @param key - Translation key (supports dot notation: "labels.inventoryLevelId")
136
+ * @param data - Data for interpolation
137
+ * @returns Translated and interpolated text
138
+ */
139
+ function t(locale, translations, key) {
140
+ // Get translations for locale with fallback to 'pl'
141
+ const localeTranslations = translations[locale] || translations["pl"] || {};
142
+ // Flatten translations structure
143
+ const flatTranslations = flattenTranslations(localeTranslations);
144
+ const { replaced, original } = getVariableValue(key);
145
+ // Get translation value (supports nested keys)
146
+ const translation = (0, index_1.pickValueFromObject)(replaced, flatTranslations);
147
+ // Use key as fallback if translation not found
148
+ const text = translation || original;
149
+ return text;
150
+ }
151
+ /**
152
+ * Create a translator function
153
+ *
154
+ * @param locale - Target locale (e.g., 'pl', 'en')
155
+ * @param translations - Record of translations by locale
156
+ * @returns Translator function that takes (key, data?) and returns translated string
157
+ */
158
+ function createTranslator(locale, translations) {
159
+ return {
160
+ t: (key, data = {}) => {
161
+ return t(locale, translations, key);
162
+ }
163
+ };
164
+ }
165
+ /**
166
+ * Merge custom translations with base translations
167
+ * Custom translations override base translations
168
+ *
169
+ * @param baseTranslations - Base translations object
170
+ * @param customTranslations - Custom translations to merge (optional)
171
+ * @returns Merged translations object
172
+ */
173
+ function mergeTranslations(baseTranslations, customTranslations) {
174
+ if (!customTranslations ||
175
+ !(0, index_1.isObject)(customTranslations)) {
176
+ return baseTranslations;
177
+ }
178
+ const merged = {
179
+ ...baseTranslations,
180
+ };
181
+ for (const [lang, custom] of Object.entries(customTranslations)) {
182
+ if ((0, index_1.isObject)(custom)) {
183
+ merged[lang] = {
184
+ ...baseTranslations[lang],
185
+ general: {
186
+ ...(baseTranslations[lang]?.general || {}),
187
+ ...(custom?.general || custom),
188
+ },
189
+ };
190
+ }
191
+ }
192
+ return merged;
193
+ }
194
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaTE4bi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy91dGlscy9pMThuL2kxOG4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUE4QkEsNENBZ0JDO0FBVUQsa0NBY0M7QUFxQkQsNENBOERDO0FBV0QsY0F1QkM7QUFTRCw0Q0FTQztBQVVELDhDQThCQztBQXJQRCxvQ0FHaUI7QUFFakI7OztHQUdHO0FBRUg7Ozs7OztHQU1HO0FBQ0gsU0FBUyxtQkFBbUIsQ0FBQyxZQUFpQjtJQUM1QyxJQUFJLENBQUMsSUFBQSxnQkFBUSxFQUFDLFlBQVksQ0FBQyxJQUFJLENBQUUsWUFBb0IsQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUM5RCxPQUFPLFlBQVksQ0FBQTtJQUNyQixDQUFDO0lBRUQsNkNBQTZDO0lBQzdDLE1BQU0sRUFBRSxPQUFPLEVBQUUsR0FBRyxJQUFJLEVBQUUsR0FBRyxZQUFtQixDQUFBO0lBQ2hELE9BQU8sRUFBRSxHQUFHLE9BQU8sRUFBRSxHQUFHLElBQUksRUFBRSxDQUFBO0FBQ2hDLENBQUM7QUFFRDs7R0FFRztBQUNILFNBQWdCLGdCQUFnQixDQUM5QixJQUFZO0lBRVosSUFBSSxDQUFDLElBQUksSUFBSSxPQUFPLElBQUksS0FBSyxRQUFRLEVBQUUsQ0FBQztRQUN0QyxPQUFPLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUE7SUFDM0MsQ0FBQztJQUVELE9BQU87UUFDTCxRQUFRLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FDcEIsMEJBQTBCLEVBQzFCLENBQUMsS0FBSyxFQUFFLEdBQUcsRUFBRSxFQUFFO1lBQ2IsT0FBTyxHQUFHLENBQUE7UUFDWixDQUFDLENBQ0Y7UUFDRCxRQUFRLEVBQUUsSUFBSTtLQUNmLENBQUE7QUFDSCxDQUFDO0FBRUQ7Ozs7Ozs7R0FPRztBQUNILFNBQWdCLFdBQVcsQ0FDekIsSUFBWSxFQUNaLE9BQTRCLEVBQUU7SUFFOUIs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
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./i18n"), exports);
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvdXRpbHMvaTE4bi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUEseUNBQXNCIn0=
@@ -18,4 +18,8 @@ __exportStar(require("./date"), exports);
18
18
  __exportStar(require("./addresses"), exports);
19
19
  __exportStar(require("./money-amount-helpers"), exports);
20
20
  __exportStar(require("./payment"), exports);
21
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvdXRpbHMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLHlDQUF1QjtBQUN2Qiw4Q0FBNEI7QUFDNUIseURBQXVDO0FBQ3ZDLDRDQUEwQiJ9
21
+ __exportStar(require("./pick-value-from-object"), exports);
22
+ __exportStar(require("./is-defined"), exports);
23
+ __exportStar(require("./is-object"), exports);
24
+ __exportStar(require("./i18n/i18n"), exports);
25
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvdXRpbHMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLHlDQUF1QjtBQUN2Qiw4Q0FBNEI7QUFDNUIseURBQXVDO0FBQ3ZDLDRDQUEwQjtBQUMxQiwyREFBeUM7QUFDekMsK0NBQTZCO0FBQzdCLDhDQUE0QjtBQUM1Qiw4Q0FBNEIifQ==
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isDefined = isDefined;
4
+ function isDefined(val) {
5
+ return typeof val !== "undefined";
6
+ }
7
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXMtZGVmaW5lZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy91dGlscy9pcy1kZWZpbmVkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsOEJBSUM7QUFKRCxTQUFnQixTQUFTLENBQ3ZCLEdBQU07SUFFTixPQUFPLE9BQU8sR0FBRyxLQUFLLFdBQVcsQ0FBQTtBQUNuQyxDQUFDIn0=
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isObject = isObject;
4
+ function isObject(obj) {
5
+ return obj != null && obj?.constructor?.name === "Object";
6
+ }
7
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXMtb2JqZWN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3V0aWxzL2lzLW9iamVjdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLDRCQUVDO0FBRkQsU0FBZ0IsUUFBUSxDQUFDLEdBQVE7SUFDL0IsT0FBTyxHQUFHLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxXQUFXLEVBQUUsSUFBSSxLQUFLLFFBQVEsQ0FBQTtBQUMzRCxDQUFDIn0=
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.pickValueFromObject = pickValueFromObject;
4
+ const is_defined_1 = require("./is-defined");
5
+ const is_object_1 = require("./is-object");
6
+ function pickValueFromObject(path, object) {
7
+ const segments = path.split(".");
8
+ let result = object;
9
+ for (let i = 0; i < segments.length; i++) {
10
+ const segment = segments[i];
11
+ result = result[segment];
12
+ if (!(0, is_defined_1.isDefined)(result)) {
13
+ return;
14
+ }
15
+ if (i === segments.length - 1) {
16
+ return result;
17
+ }
18
+ if (Array.isArray(result)) {
19
+ const subPath = segments.slice(i + 1).join(".");
20
+ return result.map((item) => pickValueFromObject(subPath, item)).flat();
21
+ }
22
+ if (!(0, is_object_1.isObject)(result)) {
23
+ return result;
24
+ }
25
+ }
26
+ return result;
27
+ }
28
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGljay12YWx1ZS1mcm9tLW9iamVjdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy91dGlscy9waWNrLXZhbHVlLWZyb20tb2JqZWN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBR0Esa0RBOEJDO0FBakNELDZDQUF3QztBQUN4QywyQ0FBc0M7QUFFdEMsU0FBZ0IsbUJBQW1CLENBQ2pDLElBQVksRUFDWixNQUF3QjtJQUV4QixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFBO0lBQ2hDLElBQUksTUFBTSxHQUFRLE1BQU0sQ0FBQTtJQUV4QixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1FBQ3pDLE1BQU0sT0FBTyxHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQTtRQUMzQixNQUFNLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFBO1FBRXhCLElBQUksQ0FBQyxJQUFBLHNCQUFTLEVBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztZQUN2QixPQUFNO1FBQ1IsQ0FBQztRQUVELElBQUksQ0FBQyxLQUFLLFFBQVEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDOUIsT0FBTyxNQUFNLENBQUE7UUFDZixDQUFDO1FBRUQsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7WUFDMUIsTUFBTSxPQUFPLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFBO1lBQy9DLE9BQU8sTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsbUJBQW1CLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUE7UUFDeEUsQ0FBQztRQUVELElBQUksQ0FBQyxJQUFBLG9CQUFRLEVBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztZQUN0QixPQUFPLE1BQU0sQ0FBQTtRQUNmLENBQUM7SUFDSCxDQUFDO0lBRUQsT0FBTyxNQUFNLENBQUE7QUFDZixDQUFDIn0=
package/README.md CHANGED
@@ -1,4 +1,4 @@
1
- # @codee-sh/medusa-plugin-notification
1
+ # Medusa plugin notification emails
2
2
 
3
3
  A comprehensive notification plugin for Medusa v2 that provides a flexible email template system with internationalization support, custom translations, and seamless integration with Medusa's notification module.
4
4
 
@@ -21,9 +21,9 @@ A comprehensive notification plugin for Medusa v2 that provides a flexible email
21
21
  ## Installation
22
22
 
23
23
  ```bash
24
- npm install @codee-sh/medusa-plugin-notification
24
+ npm install @codee-sh/medusa-plugin-notification-emails
25
25
  # or
26
- yarn add @codee-sh/medusa-plugin-notification
26
+ yarn add @codee-sh/medusa-plugin-notification-emails
27
27
  ```
28
28
 
29
29
  ## Quick Start
@@ -35,7 +35,7 @@ Add to your `medusa-config.ts`:
35
35
  ```typescript
36
36
  module.exports = defineConfig({
37
37
  plugins: [
38
- "@codee-sh/medusa-plugin-notification"
38
+ "@codee-sh/medusa-plugin-notification-emails"
39
39
  ]
40
40
  })
41
41
  ```
@@ -49,7 +49,7 @@ Set up a notification provider - see [Configuration Documentation](./docs/config
49
49
  The plugin includes built-in subscribers that automatically send email notifications for various events. You can also use templates directly in your code:
50
50
 
51
51
  ```typescript
52
- import { renderTemplate, TEMPLATES_NAMES } from "@codee-sh/medusa-plugin-notification/templates/emails"
52
+ import { renderTemplate, TEMPLATES_NAMES } from "@codee-sh/medusa-plugin-notification-emails/templates/emails"
53
53
 
54
54
  const { html, text, subject } = await renderTemplate(
55
55
  TEMPLATES_NAMES.ORDER_PLACED,
@@ -101,9 +101,9 @@ Access the template preview in Medusa Admin at `/app/notifications/render`. See
101
101
 
102
102
  The plugin exports the following:
103
103
 
104
- - `@codee-sh/medusa-plugin-notification/templates/emails` - Template rendering functions
105
- - `@codee-sh/medusa-plugin-notification/templates/emails/types` - Template types and constants
106
- - `@codee-sh/medusa-plugin-notification/utils` - Utility functions
104
+ - `@codee-sh/medusa-plugin-notification-emails/templates/emails` - Template rendering functions
105
+ - `@codee-sh/medusa-plugin-notification-emails/templates/emails/types` - Template types and constants
106
+ - `@codee-sh/medusa-plugin-notification-emails/utils` - Utility functions
107
107
 
108
108
  ## License
109
109
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@codee-sh/medusa-plugin-notification-emails",
3
- "version": "0.0.1",
3
+ "version": "0.1.0",
4
4
  "description": "Medusa plugin for notifications emails.",
5
5
  "author": "Codee Team (https://codee.dev)",
6
6
  "license": "MIT",
@@ -40,15 +40,22 @@
40
40
  "prepublishOnly": "medusa plugin:build",
41
41
  "publish-local": "npx medusa plugin:publish",
42
42
  "publish-package": "dotenv npm publish --access public",
43
- "email:dev": "email dev --dir emails-previews"
43
+ "email:dev": "email dev --dir emails-previews",
44
+ "format": "prettier --write \"src/**/*.{ts,tsx}\"",
45
+ "format:check": "prettier --check \"src/**/*.{ts,tsx}\"",
46
+ "changeset": "changeset",
47
+ "version": "changeset version",
48
+ "release": "changeset publish",
49
+ "release:manual": "npm run build && npm publish --access public"
44
50
  },
45
51
  "dependencies": {
46
- "@react-email/components": "^0.3.3",
47
- "@react-email/preview-server": "^4.2.5",
48
- "@react-email/render": "^1.1.4",
49
- "react-email": "^4.2.5"
52
+ "@react-email/components": "^0.5.7",
53
+ "@react-email/preview-server": "^4.3.1",
54
+ "@react-email/render": "^1.4.0",
55
+ "react-email": "^4.3.1"
50
56
  },
51
57
  "devDependencies": {
58
+ "@changesets/cli": "^2.29.8",
52
59
  "@medusajs/admin-sdk": "2.8.8",
53
60
  "@medusajs/cli": "2.8.8",
54
61
  "@medusajs/framework": "2.8.8",
@@ -60,20 +67,20 @@
60
67
  "@mikro-orm/knex": "6.4.3",
61
68
  "@mikro-orm/migrations": "6.4.3",
62
69
  "@mikro-orm/postgresql": "6.4.3",
63
- "@react-email/components": "^0.3.3",
64
- "@react-email/preview-server": "^4.2.5",
65
- "@react-email/render": "^1.1.4",
70
+ "@react-email/components": "^0.5.7",
71
+ "@react-email/preview-server": "^4.3.1",
72
+ "@react-email/render": "^1.4.0",
66
73
  "@swc/core": "1.5.7",
67
74
  "@types/node": "^20.0.0",
68
75
  "@types/react": "^18.3.2",
69
76
  "@types/react-dom": "^18.2.25",
70
- "react-i18next": "^15.0.0",
71
77
  "awilix": "^8.0.1",
72
78
  "dotenv": "^17.2.3",
73
79
  "prop-types": "^15.8.1",
74
80
  "react": "^18.2.0",
75
81
  "react-dom": "^18.2.0",
76
- "react-email": "^4.2.5",
82
+ "react-email": "^4.3.1",
83
+ "react-i18next": "^15.0.0",
77
84
  "ts-node": "^10.9.2",
78
85
  "typescript": "^5.6.2",
79
86
  "vite": "^5.2.11",
@@ -1,28 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.renderHTMLReact = renderHTMLReact;
4
- exports.renderHTML = renderHTML;
5
- exports.renderText = renderText;
6
- const jsx_runtime_1 = require("react/jsx-runtime");
7
- const components_1 = require("@react-email/components");
8
- const render_1 = require("@react-email/render");
9
- const utils_1 = require("../../shared/utils");
10
- function renderHTMLReact(data, options) {
11
- const theme = options.theme || {};
12
- const i18n = options.i18n;
13
- if (!i18n) {
14
- throw new Error("i18n is required in options. It should be provided by renderTemplate.");
15
- }
16
- return ((0, jsx_runtime_1.jsxs)(components_1.Html, { children: [(0, jsx_runtime_1.jsx)(components_1.Head, {}), (0, jsx_runtime_1.jsx)(components_1.Tailwind, { config: {
17
- presets: [components_1.pixelBasedPreset],
18
- theme: theme
19
- }, children: (0, jsx_runtime_1.jsx)(components_1.Body, { className: "mx-auto my-auto px-4 font-arial font-normal text-base bg-ui-bg text-ui-text", children: (0, jsx_runtime_1.jsxs)(components_1.Container, { children: [(0, jsx_runtime_1.jsx)(components_1.Section, { children: (0, jsx_runtime_1.jsx)(components_1.Heading, { className: "text-xl text-center font-bold mb-4", children: i18n.t('headerTitle', data) }) }), (0, jsx_runtime_1.jsx)(components_1.Hr, { className: "my-4 border-ui-border" }), (0, jsx_runtime_1.jsx)(components_1.Section, { children: (0, jsx_runtime_1.jsxs)(components_1.Row, { children: [(0, jsx_runtime_1.jsx)(components_1.Column, { className: "font-semibold", children: i18n.t('labels.name', data) }), (0, jsx_runtime_1.jsx)(components_1.Column, { className: "text-right", children: (0, utils_1.escapeHtml)(data.name) })] }) }), (0, jsx_runtime_1.jsx)(components_1.Hr, { className: "my-4 border-ui-border" }), (0, jsx_runtime_1.jsx)(components_1.Section, { children: (0, jsx_runtime_1.jsxs)(components_1.Row, { children: [(0, jsx_runtime_1.jsx)(components_1.Column, { className: "font-semibold", children: i18n.t('labels.email', data) }), (0, jsx_runtime_1.jsx)(components_1.Column, { className: "text-right", children: (0, utils_1.escapeHtml)(data.email) })] }) }), (0, jsx_runtime_1.jsx)(components_1.Hr, { className: "my-4 border-ui-border" }), data.phone && ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)(components_1.Section, { children: (0, jsx_runtime_1.jsxs)(components_1.Row, { children: [(0, jsx_runtime_1.jsx)(components_1.Column, { className: "font-semibold", children: i18n.t('labels.phone', data) }), (0, jsx_runtime_1.jsx)(components_1.Column, { className: "text-right", children: (0, utils_1.escapeHtml)(data.phone) })] }) }), (0, jsx_runtime_1.jsx)(components_1.Hr, { className: "my-4 border-ui-border" })] })), (0, jsx_runtime_1.jsxs)(components_1.Section, { children: [(0, jsx_runtime_1.jsx)(components_1.Text, { className: "font-semibold m-0 p-0", children: i18n.t('labels.message', data) }), (0, jsx_runtime_1.jsx)(components_1.Text, { className: "m-0 p-0", children: (0, utils_1.escapeHtml)(data.message) })] }), (0, jsx_runtime_1.jsx)(components_1.Hr, { className: "my-4 border-ui-border" }), (0, jsx_runtime_1.jsx)(components_1.Section, { children: (0, jsx_runtime_1.jsx)(components_1.Text, { className: "text-sm text-ui-text text-center", children: i18n.t('footer', data) }) })] }) }) })] }));
20
- }
21
- async function renderHTML(data, options) {
22
- return await (0, render_1.pretty)(await (0, render_1.render)(renderHTMLReact(data, options)));
23
- }
24
- async function renderText(data, options) {
25
- const html = await (0, render_1.render)(renderHTMLReact(data, options));
26
- return (0, render_1.toPlainText)(html);
27
- }
28
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVtcGxhdGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvdGVtcGxhdGVzL2VtYWlscy9jb250YWN0LWZvcm0vdGVtcGxhdGUudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBT0EsMENBa0ZDO0FBRUQsZ0NBS0M7QUFFRCxnQ0FNQzs7QUF2R0Qsd0RBQTJJO0FBQzNJLGdEQUFrRTtBQUdsRSw4Q0FBZ0Q7QUFFaEQsU0FBZ0IsZUFBZSxDQUM3QixJQUFpQyxFQUNqQyxPQUE0QjtJQUU1QixNQUFNLEtBQUssR0FBRyxPQUFPLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQztJQUNsQyxNQUFNLElBQUksR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDO0lBRTFCLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNWLE1BQU0sSUFBSSxLQUFLLENBQUMsdUVBQXVFLENBQUMsQ0FBQztJQUMzRixDQUFDO0lBRUQsT0FBTyxDQUNMLHdCQUFDLGlCQUFJLGVBQ0gsdUJBQUMsaUJBQUksS0FBRyxFQUNSLHVCQUFDLHFCQUFRLElBQ1AsTUFBTSxFQUFFO29CQUNOLE9BQU8sRUFBRSxDQUFDLDZCQUFnQixDQUFDO29CQUMzQixLQUFLLEVBQUUsS0FBSztpQkFDYixZQUVELHVCQUFDLGlCQUFJLElBQUMsU0FBUyxFQUFDLDZFQUE2RSxZQUMzRix3QkFBQyxzQkFBUyxlQUNSLHVCQUFDLG9CQUFPLGNBQ04sdUJBQUMsb0JBQU8sSUFBQyxTQUFTLEVBQUMsb0NBQW9DLFlBQ3BELElBQUksQ0FBQyxDQUFDLENBQUMsYUFBYSxFQUFFLElBQUksQ0FBQyxHQUNwQixHQUNGLEVBRVYsdUJBQUMsZUFBRSxJQUFDLFNBQVMsRUFBQyx1QkFBdUIsR0FBRyxFQUd4Qyx1QkFBQyxvQkFBTyxjQUNOLHdCQUFDLGdCQUFHLGVBQ0YsdUJBQUMsbUJBQU0sSUFBQyxTQUFTLEVBQUMsZUFBZSxZQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsYUFBYSxFQUFFLElBQUksQ0FBQyxHQUFVLEVBQ3hFLHVCQUFDLG1CQUFNLElBQUMsU0FBUyxFQUFDLFlBQVksWUFBRSxJQUFBLGtCQUFVLEVBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFVLElBQzNELEdBQ0UsRUFFVix1QkFBQyxlQUFFLElBQUMsU0FBUyxFQUFDLHVCQUF1QixHQUFHLEVBR3hDLHVCQUFDLG9CQUFPLGNBQ04sd0JBQUMsZ0JBQUcsZUFDRix1QkFBQyxtQkFBTSxJQUFDLFNBQVMsRUFBQyxlQUFlLFlBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxjQUFjLEVBQUUsSUFBSSxDQUFDLEdBQVUsRUFDekUsdUJBQUMsbUJBQU0sSUFBQyxTQUFTLEVBQUMsWUFBWSxZQUFFLElBQUEsa0JBQVUsRUFBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQVUsSUFDNUQsR0FDRSxFQUVWLHVCQUFDLGVBQUUsSUFBQyxTQUFTLEVBQUMsdUJBQXVCLEdBQUcsRUFHdkMsSUFBSSxDQUFDLEtBQUssSUFBSSxDQUNiLDZEQUNFLHVCQUFDLG9CQUFPLGNBQ04sd0JBQUMsZ0JBQUcsZUFDRix1QkFBQyxtQkFBTSxJQUFDLFNBQVMsRUFBQyxlQUFlLFlBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxjQUFjLEVBQUUsSUFBSSxDQUFDLEdBQVUsRUFDekUsdUJBQUMsbUJBQU0sSUFBQyxTQUFTLEVBQUMsWUFBWSxZQUFFLElBQUEsa0JBQVUsRUFBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQVUsSUFDNUQsR0FDRSxFQUNWLHVCQUFDLGVBQUUsSUFBQyxTQUFTLEVBQUMsdUJBQXVCLEdBQUcsSUFDdkMsQ0FDSixFQUdELHdCQUFDLG9CQUFPLGVBQ04sdUJBQUMsaUJBQUksSUFBQyxTQUFTLEVBQUMsdUJBQXVCLFlBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsR0FBUSxFQUMvRSx1QkFBQyxpQkFBSSxJQUFDLFNBQVMsRUFBQyxTQUFTLFlBQUUsSUFBQSxrQkFBVSxFQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBUSxJQUNuRCxFQUVWLHVCQUFDLGVBQUUsSUFBQyxTQUFTLEVBQUMsdUJBQXVCLEdBQUcsRUFHeEMsdUJBQUMsb0JBQU8sY0FDTix1QkFBQyxpQkFBSSxJQUFDLFNBQVMsRUFBQyxrQ0FBa0MsWUFDL0MsSUFBSSxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLEdBQ2xCLEdBQ0MsSUFDQSxHQUNQLEdBQ0UsSUFDTixDQUNSLENBQUM7QUFDSixDQUFDO0FBRU0sS0FBSyxVQUFVLFVBQVUsQ0FDOUIsSUFBaUMsRUFDakMsT0FBNEI7SUFFNUIsT0FBTyxNQUFNLElBQUEsZUFBTSxFQUFDLE1BQU0sSUFBQSxlQUFNLEVBQUMsZUFBZSxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDcEUsQ0FBQztBQUVNLEtBQUssVUFBVSxVQUFVLENBQzlCLElBQWlDLEVBQ2pDLE9BQTRCO0lBRTVCLE1BQU0sSUFBSSxHQUFHLE1BQU0sSUFBQSxlQUFNLEVBQUMsZUFBZSxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDO0lBQzFELE9BQU8sSUFBQSxvQkFBVyxFQUFDLElBQUksQ0FBQyxDQUFDO0FBQzNCLENBQUMifQ==
@@ -1,3 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvdGVtcGxhdGVzL2VtYWlscy9jb250YWN0LWZvcm0vdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiJ9
@@ -1,36 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.renderHTMLReact = renderHTMLReact;
7
- exports.renderHTML = renderHTML;
8
- exports.renderText = renderText;
9
- const jsx_runtime_1 = require("react/jsx-runtime");
10
- const react_1 = __importDefault(require("react"));
11
- const components_1 = require("@react-email/components");
12
- const render_1 = require("@react-email/render");
13
- const utils_1 = require("../../shared/utils");
14
- function renderHTMLReact(data, options) {
15
- const theme = options.theme || {};
16
- const i18n = options.i18n;
17
- if (!i18n) {
18
- throw new Error("i18n is required in options. It should be provided by renderTemplate.");
19
- }
20
- // Prepare items list
21
- const itemsList = data.items.map((item) => `${(0, utils_1.escapeHtml)(item.title)} - ${item.quantity}x ${(0, utils_1.escapeHtml)(item.price)}`);
22
- return ((0, jsx_runtime_1.jsxs)(components_1.Html, { children: [(0, jsx_runtime_1.jsx)(components_1.Head, {}), (0, jsx_runtime_1.jsx)(components_1.Tailwind, { config: {
23
- presets: [components_1.pixelBasedPreset],
24
- theme: theme
25
- }, children: (0, jsx_runtime_1.jsx)(components_1.Body, { className: "mx-auto my-auto px-4 font-arial font-normal text-base bg-ui-bg text-ui-text", children: (0, jsx_runtime_1.jsxs)(components_1.Container, { children: [(0, jsx_runtime_1.jsxs)(components_1.Section, { children: [(0, jsx_runtime_1.jsx)(components_1.Heading, { className: "text-xl text-center font-bold mb-4", children: i18n.t('headerTitle', data) }), (0, jsx_runtime_1.jsx)(components_1.Text, { className: "text-center mb-4", children: i18n.t('headerDescription', data) })] }), (0, jsx_runtime_1.jsx)(components_1.Hr, { className: "my-4 border-ui-border" }), (0, jsx_runtime_1.jsx)(components_1.Section, { children: (0, jsx_runtime_1.jsxs)(components_1.Row, { children: [(0, jsx_runtime_1.jsx)(components_1.Column, { className: "font-semibold", children: i18n.t('labels.salesChannel', data) }), (0, jsx_runtime_1.jsx)(components_1.Column, { className: "text-right", children: (0, utils_1.escapeHtml)(data.sales_channel.name) })] }) }), (0, jsx_runtime_1.jsx)(components_1.Hr, { className: "my-4 border-ui-border" }), (0, jsx_runtime_1.jsx)(components_1.Section, { children: (0, jsx_runtime_1.jsxs)(components_1.Row, { children: [(0, jsx_runtime_1.jsx)(components_1.Column, { className: "font-semibold", children: i18n.t('labels.orderNumber', data) }), (0, jsx_runtime_1.jsx)(components_1.Column, { className: "text-right", children: (0, utils_1.escapeHtml)(data.orderNumber) })] }) }), (0, jsx_runtime_1.jsx)(components_1.Hr, { className: "my-4 border-ui-border" }), (0, jsx_runtime_1.jsx)(components_1.Section, { children: (0, jsx_runtime_1.jsxs)(components_1.Row, { children: [(0, jsx_runtime_1.jsx)(components_1.Column, { className: "font-semibold", children: i18n.t('labels.orderDate', data) }), (0, jsx_runtime_1.jsx)(components_1.Column, { className: "text-right", children: (0, utils_1.escapeHtml)(data.orderDate) })] }) }), (0, jsx_runtime_1.jsx)(components_1.Hr, { className: "my-4 border-ui-border" }), (0, jsx_runtime_1.jsx)(components_1.Section, { children: (0, jsx_runtime_1.jsxs)(components_1.Row, { children: [(0, jsx_runtime_1.jsx)(components_1.Column, { className: "font-semibold", children: i18n.t('labels.completedDate', data) }), (0, jsx_runtime_1.jsx)(components_1.Column, { className: "text-right", children: (0, utils_1.escapeHtml)(data.completedDate) })] }) }), (0, jsx_runtime_1.jsx)(components_1.Hr, { className: "my-4 border-ui-border" }), (0, jsx_runtime_1.jsxs)(components_1.Section, { className: "p-0", children: [(0, jsx_runtime_1.jsx)(components_1.Text, { className: "font-semibold m-0 p-0", children: i18n.t('labels.products', data) }), (0, jsx_runtime_1.jsx)(components_1.Text, { className: "m-0 p-0", children: itemsList.map((item, index) => ((0, jsx_runtime_1.jsxs)(react_1.default.Fragment, { children: [item, index < itemsList.length - 1 && (0, jsx_runtime_1.jsx)("br", {})] }, index))) })] }), (0, jsx_runtime_1.jsx)(components_1.Hr, { className: "my-4 border-ui-border" }), (0, jsx_runtime_1.jsxs)(components_1.Section, { children: [(0, jsx_runtime_1.jsx)(components_1.Text, { className: "font-semibold m-0 p-0", children: i18n.t('labels.shippingAddress', data) }), (0, jsx_runtime_1.jsx)(components_1.Text, { className: "m-0 p-0", dangerouslySetInnerHTML: {
26
- __html: data?.shippingAddress || i18n.noData
27
- } })] }), (0, jsx_runtime_1.jsx)(components_1.Hr, { className: "my-4 border-ui-border" }), (0, jsx_runtime_1.jsxs)(components_1.Section, { className: "bg-gray-50 p-4 rounded", children: [(0, jsx_runtime_1.jsxs)(components_1.Row, { children: [(0, jsx_runtime_1.jsx)(components_1.Column, { className: "font-semibold", children: i18n.t('labels.discountTotal', data) }), (0, jsx_runtime_1.jsx)(components_1.Column, { className: "text-right", children: (0, utils_1.escapeHtml)(data.summary.discount_total) })] }), (0, jsx_runtime_1.jsxs)(components_1.Row, { className: "mt-2", children: [(0, jsx_runtime_1.jsx)(components_1.Column, { className: "font-semibold", children: i18n.t('labels.orderTotal', data) }), (0, jsx_runtime_1.jsxs)(components_1.Column, { className: "text-right", children: [(0, utils_1.escapeHtml)(data.summary.total), " ", (0, utils_1.escapeHtml)(data.summary.currency_code)] })] }), (0, jsx_runtime_1.jsxs)(components_1.Row, { className: "mt-2", children: [(0, jsx_runtime_1.jsx)(components_1.Column, { className: "font-semibold", children: i18n.t('labels.paidTotal', data) }), (0, jsx_runtime_1.jsxs)(components_1.Column, { className: "text-right", children: [(0, utils_1.escapeHtml)(data.summary.paid_total), " ", (0, utils_1.escapeHtml)(data.summary.currency_code)] })] }), (0, jsx_runtime_1.jsxs)(components_1.Row, { className: "mt-2", children: [(0, jsx_runtime_1.jsx)(components_1.Column, { className: "font-semibold", children: i18n.t('labels.taxTotal', data) }), (0, jsx_runtime_1.jsx)(components_1.Column, { className: "text-right", children: (0, utils_1.escapeHtml)(data.summary.tax_total) })] })] }), (0, jsx_runtime_1.jsx)(components_1.Hr, { className: "my-4 border-ui-border" }), data.orderUrl && ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)(components_1.Section, { className: "text-center", children: (0, jsx_runtime_1.jsx)(components_1.Button, { href: data.orderUrl, className: "bg-ui-button text-ui-button-text py-3 px-8 inline-block rounded", children: i18n.t('viewOrderButton', data) }) }), (0, jsx_runtime_1.jsx)(components_1.Hr, { className: "my-4 border-ui-border" })] })), (0, jsx_runtime_1.jsx)(components_1.Section, { children: (0, jsx_runtime_1.jsx)(components_1.Text, { className: "text-sm text-gray-600 text-center", children: i18n.t('footer', data) }) })] }) }) })] }));
28
- }
29
- async function renderHTML(data, options) {
30
- return await (0, render_1.pretty)(await (0, render_1.render)(renderHTMLReact(data, options)));
31
- }
32
- async function renderText(data, options) {
33
- const html = await (0, render_1.render)(renderHTMLReact(data, options));
34
- return (0, render_1.toPlainText)(html);
35
- }
36
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVtcGxhdGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvdGVtcGxhdGVzL2VtYWlscy9vcmRlci1jb21wbGV0ZWQvdGVtcGxhdGUudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBT0EsMENBZ0tDO0FBRUQsZ0NBS0M7QUFFRCxnQ0FNQzs7QUF0TEQsa0RBQTBCO0FBQzFCLHdEQUFtSjtBQUNuSixnREFBa0U7QUFHbEUsOENBQWdEO0FBRWhELFNBQWdCLGVBQWUsQ0FDN0IsSUFBb0MsRUFDcEMsT0FBNEI7SUFFNUIsTUFBTSxLQUFLLEdBQUcsT0FBTyxDQUFDLEtBQUssSUFBSSxFQUFFLENBQUM7SUFDbEMsTUFBTSxJQUFJLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQztJQUUxQixJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDVixNQUFNLElBQUksS0FBSyxDQUFDLHVFQUF1RSxDQUFDLENBQUM7SUFDM0YsQ0FBQztJQUVELHFCQUFxQjtJQUNyQixNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FDOUIsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLEdBQUcsSUFBQSxrQkFBVSxFQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxJQUFJLENBQUMsUUFBUSxLQUFLLElBQUEsa0JBQVUsRUFBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FDcEYsQ0FBQztJQUVGLE9BQU8sQ0FDTCx3QkFBQyxpQkFBSSxlQUNILHVCQUFDLGlCQUFJLEtBQUcsRUFDUix1QkFBQyxxQkFBUSxJQUNQLE1BQU0sRUFBRTtvQkFDTixPQUFPLEVBQUUsQ0FBQyw2QkFBZ0IsQ0FBQztvQkFDM0IsS0FBSyxFQUFFLEtBQUs7aUJBQ2IsWUFFRCx1QkFBQyxpQkFBSSxJQUFDLFNBQVMsRUFBQyw2RUFBNkUsWUFDM0Ysd0JBQUMsc0JBQVMsZUFDUix3QkFBQyxvQkFBTyxlQUNOLHVCQUFDLG9C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
@@ -1,3 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvdGVtcGxhdGVzL2VtYWlscy9vcmRlci1jb21wbGV0ZWQvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiJ9
@@ -1,36 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.renderHTMLReact = renderHTMLReact;
7
- exports.renderHTML = renderHTML;
8
- exports.renderText = renderText;
9
- const jsx_runtime_1 = require("react/jsx-runtime");
10
- const react_1 = __importDefault(require("react"));
11
- const components_1 = require("@react-email/components");
12
- const render_1 = require("@react-email/render");
13
- const utils_1 = require("../../shared/utils");
14
- function renderHTMLReact(data, options) {
15
- const theme = options.theme || {};
16
- const i18n = options.i18n;
17
- if (!i18n) {
18
- throw new Error("i18n is required in options. It should be provided by renderTemplate.");
19
- }
20
- // Prepare items list
21
- const itemsList = data.items.map((item) => `${(0, utils_1.escapeHtml)(item.title)} - ${item.quantity}x ${(0, utils_1.escapeHtml)(item.price)}`);
22
- return ((0, jsx_runtime_1.jsxs)(components_1.Html, { children: [(0, jsx_runtime_1.jsx)(components_1.Head, {}), (0, jsx_runtime_1.jsx)(components_1.Tailwind, { config: {
23
- presets: [components_1.pixelBasedPreset],
24
- theme: theme
25
- }, children: (0, jsx_runtime_1.jsx)(components_1.Body, { className: "mx-auto my-auto px-4 font-arial font-normal text-base bg-ui-bg text-ui-text", children: (0, jsx_runtime_1.jsxs)(components_1.Container, { children: [(0, jsx_runtime_1.jsxs)(components_1.Section, { children: [(0, jsx_runtime_1.jsx)(components_1.Heading, { className: "text-xl text-center font-bold mb-4", children: i18n.t('headerTitle', data) }), (0, jsx_runtime_1.jsx)(components_1.Text, { className: "text-center mb-4", children: i18n.t('headerDescription', data) })] }), (0, jsx_runtime_1.jsx)(components_1.Hr, { className: "my-4 border-ui-border" }), (0, jsx_runtime_1.jsx)(components_1.Section, { children: (0, jsx_runtime_1.jsxs)(components_1.Row, { children: [(0, jsx_runtime_1.jsx)(components_1.Column, { className: "font-semibold", children: i18n.t('labels.salesChannel', data) }), (0, jsx_runtime_1.jsx)(components_1.Column, { className: "text-right", children: (0, utils_1.escapeHtml)(data.sales_channel.name) })] }) }), (0, jsx_runtime_1.jsx)(components_1.Hr, { className: "my-4 border-ui-border" }), (0, jsx_runtime_1.jsx)(components_1.Section, { children: (0, jsx_runtime_1.jsxs)(components_1.Row, { children: [(0, jsx_runtime_1.jsx)(components_1.Column, { className: "font-semibold", children: i18n.t('labels.orderNumber', data) }), (0, jsx_runtime_1.jsx)(components_1.Column, { className: "text-right", children: (0, utils_1.escapeHtml)(data.orderNumber) })] }) }), (0, jsx_runtime_1.jsx)(components_1.Hr, { className: "my-4 border-ui-border" }), (0, jsx_runtime_1.jsx)(components_1.Section, { children: (0, jsx_runtime_1.jsxs)(components_1.Row, { children: [(0, jsx_runtime_1.jsx)(components_1.Column, { className: "font-semibold", children: i18n.t('labels.orderDate', data) }), (0, jsx_runtime_1.jsx)(components_1.Column, { className: "text-right", children: (0, utils_1.escapeHtml)(data.orderDate) })] }) }), (0, jsx_runtime_1.jsx)(components_1.Hr, { className: "my-4 border-ui-border" }), (0, jsx_runtime_1.jsxs)(components_1.Section, { className: "p-0", children: [(0, jsx_runtime_1.jsx)(components_1.Text, { className: "font-semibold m-0 p-0", children: i18n.t('labels.products', data) }), (0, jsx_runtime_1.jsx)(components_1.Text, { className: "m-0 p-0", children: itemsList.map((item, index) => ((0, jsx_runtime_1.jsxs)(react_1.default.Fragment, { children: [item, index < itemsList.length - 1 && (0, jsx_runtime_1.jsx)("br", {})] }, index))) })] }), (0, jsx_runtime_1.jsx)(components_1.Hr, { className: "my-4 border-ui-border" }), (0, jsx_runtime_1.jsxs)(components_1.Section, { children: [(0, jsx_runtime_1.jsx)(components_1.Text, { className: "font-semibold m-0 p-0", children: i18n.t('labels.shippingAddress', data) }), (0, jsx_runtime_1.jsx)(components_1.Text, { className: "m-0 p-0", dangerouslySetInnerHTML: {
26
- __html: data?.shippingAddress || i18n.noData
27
- } })] }), (0, jsx_runtime_1.jsx)(components_1.Hr, { className: "my-4 border-ui-border" }), (0, jsx_runtime_1.jsxs)(components_1.Section, { className: "bg-gray-50 p-4 rounded", children: [(0, jsx_runtime_1.jsxs)(components_1.Row, { children: [(0, jsx_runtime_1.jsx)(components_1.Column, { className: "font-semibold", children: i18n.t('labels.discountTotal', data) }), (0, jsx_runtime_1.jsx)(components_1.Column, { className: "text-right", children: (0, utils_1.escapeHtml)(data.summary.discount_total) })] }), (0, jsx_runtime_1.jsxs)(components_1.Row, { className: "mt-2", children: [(0, jsx_runtime_1.jsx)(components_1.Column, { className: "font-semibold", children: i18n.t('labels.orderTotal', data) }), (0, jsx_runtime_1.jsxs)(components_1.Column, { className: "text-right", children: [(0, utils_1.escapeHtml)(data.summary.total), " ", (0, utils_1.escapeHtml)(data.summary.currency_code)] })] }), (0, jsx_runtime_1.jsxs)(components_1.Row, { className: "mt-2", children: [(0, jsx_runtime_1.jsx)(components_1.Column, { className: "font-semibold", children: i18n.t('labels.paidTotal', data) }), (0, jsx_runtime_1.jsxs)(components_1.Column, { className: "text-right", children: [(0, utils_1.escapeHtml)(data.summary.paid_total), " ", (0, utils_1.escapeHtml)(data.summary.currency_code)] })] }), (0, jsx_runtime_1.jsxs)(components_1.Row, { className: "mt-2", children: [(0, jsx_runtime_1.jsx)(components_1.Column, { className: "font-semibold", children: i18n.t('labels.taxTotal', data) }), (0, jsx_runtime_1.jsx)(components_1.Column, { className: "text-right", children: (0, utils_1.escapeHtml)(data.summary.tax_total) })] })] }), (0, jsx_runtime_1.jsx)(components_1.Hr, { className: "my-4 border-ui-border" }), data.orderUrl && ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)(components_1.Section, { className: "text-center", children: (0, jsx_runtime_1.jsx)(components_1.Button, { href: data.orderUrl, className: "bg-ui-button text-ui-button-text py-3 px-8 inline-block rounded", children: i18n.t('viewOrderButton', data) }) }), (0, jsx_runtime_1.jsx)(components_1.Hr, { className: "my-4 border-ui-border" })] })), (0, jsx_runtime_1.jsx)(components_1.Section, { children: (0, jsx_runtime_1.jsx)(components_1.Text, { className: "text-sm text-gray-600 text-center", children: i18n.t('footer', data) }) })] }) }) })] }));
28
- }
29
- async function renderHTML(data, options) {
30
- return await (0, render_1.pretty)(await (0, render_1.render)(renderHTMLReact(data, options)));
31
- }
32
- async function renderText(data, options) {
33
- const html = await (0, render_1.render)(renderHTMLReact(data, options));
34
- return (0, render_1.toPlainText)(html);
35
- }
36
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVtcGxhdGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvdGVtcGxhdGVzL2VtYWlscy9vcmRlci1wbGFjZWQvdGVtcGxhdGUudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBT0EsMENBc0pDO0FBRUQsZ0NBS0M7QUFFRCxnQ0FNQzs7QUE1S0Qsa0RBQTBCO0FBQzFCLHdEQUFtSjtBQUNuSixnREFBa0U7QUFHbEUsOENBQWdEO0FBRWhELFNBQWdCLGVBQWUsQ0FDN0IsSUFBa0MsRUFDbEMsT0FBNEI7SUFFNUIsTUFBTSxLQUFLLEdBQUcsT0FBTyxDQUFDLEtBQUssSUFBSSxFQUFFLENBQUM7SUFDbEMsTUFBTSxJQUFJLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQztJQUUxQixJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDVixNQUFNLElBQUksS0FBSyxDQUFDLHVFQUF1RSxDQUFDLENBQUM7SUFDM0YsQ0FBQztJQUVELHFCQUFxQjtJQUNyQixNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FDOUIsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLEdBQUcsSUFBQSxrQkFBVSxFQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxJQUFJLENBQUMsUUFBUSxLQUFLLElBQUEsa0JBQVUsRUFBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FDcEYsQ0FBQztJQUVGLE9BQU8sQ0FDTCx3QkFBQyxpQkFBSSxlQUNILHVCQUFDLGlCQUFJLEtBQUcsRUFDUix1QkFBQyxxQkFBUSxJQUNQLE1BQU0sRUFBRTtvQkFDTixPQUFPLEVBQUUsQ0FBQyw2QkFBZ0IsQ0FBQztvQkFDM0IsS0FBSyxFQUFFLEtBQUs7aUJBQ2IsWUFFRCx1QkFBQyxpQkFBSSxJQUFDLFNBQVMsRUFBQyw2RUFBNkUsWUFDM0Ysd0JBQUMsc0JBQVMsZUFDUix3QkFBQyxvQkFBTyxlQUNOLHVCQUFDLG9CQUFPLElBQUMsU0FBUyxFQUFDLG9DQUFvQyxZQUNwRCxJQUFJLENBQUMsQ0FBQyxDQUFDLGFBQWEsRUFBRSxJQUFJLENBQUMsR0FDcEIsRUFDVix1QkFBQyxpQkFBSSxJQUFDLFNBQVMsRUFBQyxrQkFBa0IsWUFDL0IsSUFBSSxDQUFDLENBQUMsQ0FBQyxtQkFBbUIsRUFBRSxJQUFJLENBQUMsR0FDN0IsSUFDQyxFQUVWLHVCQUFDLGVBQUUsSUFBQyxTQUFTLEVBQUMsdUJBQXVCLEdBQUcsRUFHeEMsdUJBQUMsb0JBQU8sY0FDTix3QkFBQyxnQkFBRyxlQUNGLHVCQUFDLG1CQUFNLElBQUMsU0FBUyxFQUFDLGVBQWUsWUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLHFCQUFxQixFQUFFLElBQUksQ0FBQyxHQUFVLEVBQ2hGLHVCQUFDLG1CQUFNLElBQUMsU0FBUyxFQUFDLFlBQVksWUFBRSxJQUFBLGtCQUFVLEVBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsR0FBVSxJQUN6RSxHQUNFLEVBRVYsdUJBQUMsZUFBRSxJQUFDLFNBQVMsRUFBQyx1QkFBdUIsR0FBRyxFQUd4Qyx1QkFBQyxvQkFBTyxjQUNOLHdCQUFDLGdCQUFHLGVBQ0YsdUJBQUMsbUJBQU0sSUFBQyxTQUFTLEVBQUMsZUFBZSxZQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsb0JBQW9CLEVBQUUsSUFBSSxDQUFDLEdBQVUsRUFDL0UsdUJBQUMsbUJBQU0sSUFBQyxTQUFTLEVBQUMsWUFBWSxZQUFFLElBQUEsa0JBQVUsRUFBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQVUsSUFDbEUsR0FDRSxFQUVWLHVCQUFDLGVBQUUsSUFBQyxTQUFTLEVBQUMsdUJBQXVCLEdBQUcsRUFHeEMsdUJBQUMsb0JBQU8sY0FDTix3QkFBQyxnQkFBRyxlQUNGLHVCQUFDLG1CQUFNLElBQUMsU0FBUyxFQUFDLGVBQWUsWUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLGtCQUFrQixFQUFFLElBQUksQ0FBQyxHQUFVLEVBQzdFLHVCQUFDLG1CQUFNLElBQUMsU0FBUyxFQUFDLFlBQVksWUFBRSxJQUFBLGtCQUFVLEVBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFVLElBQ2hFLEdBQ0UsRUFFVix1QkFBQyxlQUFFLElBQUMsU0FBUyxFQUFDLHVCQUF1QixHQUFHLEVBR3hDLHdCQUFDLG9CQUFPLElBQUMsU0FBUyxFQUFDLEtBQUssYUFDdEIsdUJBQUMsaUJBQUksSUFBQyxTQUFTLEVBQUMsdUJBQXVCLFlBQ3BDLElBQUksQ0FBQyxDQUFDLENBQUMsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLEdBQzNCLEVBQ1AsdUJBQUMsaUJBQUksSUFBQyxTQUFTLEVBQUMsU0FBUyxZQUN0QixTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FDOUIsd0JBQUMsZUFBSyxDQUFDLFFBQVEsZUFDWixJQUFJLEVBQ0osS0FBSyxHQUFHLFNBQVMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLGdDQUFNLEtBRnBCLEtBQUssQ0FHVCxDQUNsQixDQUFDLEdBQ0csSUFDQyxFQUVWLHVCQUFDLGVBQUUsSUFBQyxTQUFTLEVBQUMsdUJBQXVCLEdBQUcsRUFHeEMsd0JBQUMsb0JBQU8sZUFDTix1QkFBQyxpQkFBSSxJQUFDLFNBQVMsRUFBQyx1QkFBdUIsWUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLHdCQUF3QixFQUFFLElBQUksQ0FBQyxHQUFRLEVBQ3ZGLHVCQUFDLGlCQUFJLElBQ0gsU0FBUyxFQUFDLFNBQVMsRUFDbkIsdUJBQXVCLEVBQUU7NENBQ3ZCLE1BQU0sRUFBRSxJQUFJLEVBQUUsZUFBZSxJQUFJLElBQUksQ0FBQyxNQUFNO3lDQUM3QyxHQUNELElBQ00sRUFFVix1QkFBQyxlQUFFLElBQUMsU0FBUyxFQUFDLHVCQUF1QixHQUFHLEVBR3hDLHdCQUFDLG9CQUFPLElBQUMsU0FBUyxFQUFDLHdCQUF3QixhQUN6Qyx3QkFBQyxnQkFBRyxlQUNGLHVCQUFDLG1CQUFNLElBQUMsU0FBUyxFQUFDLGVBQWUsWUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLHNCQUFzQixFQUFFLElBQUksQ0FBQyxHQUFVLEVBQ2pGLHVCQUFDLG1CQUFNLElBQUMsU0FBUyxFQUFDLFlBQVksWUFBRSxJQUFBLGtCQUFVLEVBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsR0FBVSxJQUM3RSxFQUNOLHdCQUFDLGdCQUFHLElBQUMsU0FBUyxFQUFDLE1BQU0sYUFDbkIsdUJBQUMsbUJBQU0sSUFBQyxTQUFTLEVBQUMsZUFBZSxZQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsbUJBQW1CLEVBQUUsSUFBSSxDQUFDLEdBQVUsRUFDOUUsd0JBQUMsbUJBQU0sSUFBQyxTQUFTLEVBQUMsWUFBWSxhQUMzQixJQUFBLGtCQUFVLEVBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsT0FBRyxJQUFBLGtCQUFVLEVBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsSUFDakUsSUFDTCxFQUNOLHdCQUFDLGdCQUFHLElBQUMsU0FBUyxFQUFDLE1BQU0sYUFDZix1QkFBQyxtQkFBTSxJQUFDLFNBQVMsRUFBQyxlQUFlLFlBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxrQkFBa0IsRUFBRSxJQUFJLENBQUMsR0FBVSxFQUNqRix3QkFBQyxtQkFBTSxJQUFDLFNBQVMsRUFBQyxZQUFZLGFBQzNCLElBQUEsa0JBQVUsRUFBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxPQUFHLElBQUEsa0JBQVUsRUFBQyxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxJQUN0RSxJQUNMLEVBQ04sd0JBQUMsZ0JBQUcsSUFBQyxTQUFTLEVBQUMsTUFBTSxhQUNuQix1QkFBQyxtQkFBTSxJQUFDLFNBQVMsRUFBQyxlQUFlLFlBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxpQkFBaUIsRUFBRSxJQUFJLENBQUMsR0FBVSxFQUM1RSx1QkFBQyxtQkFBTSxJQUFDLFNBQVMsRUFBQyxZQUFZLFlBQUUsSUFBQSxrQkFBVSxFQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLEdBQVUsSUFDeEUsSUFDRSxFQUVWLHVCQUFDLGVBQUUsSUFBQyxTQUFTLEVBQUMsdUJBQXVCLEdBQUcsRUFHdkMsSUFBSSxDQUFDLFFBQVEsSUFBSSxDQUNoQiw2REFDRSx1QkFBQyxvQkFBTyxJQUFDLFNBQVMsRUFBQyxhQUFhLFlBQzlCLHVCQUFDLG1CQUFNLElBQ0wsSUFBSSxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQ25CLFNBQVMsRUFBQyxpRUFBaUUsWUFFMUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxpQkFBaUIsRUFBRSxJQUFJLENBQUMsR0FDekIsR0FDRCxFQUNWLHVCQUFDLGVBQUUsSUFBQyxTQUFTLEVBQUMsdUJBQXVCLEdBQUcsSUFDdkMsQ0FDSixFQUdELHVCQUFDLG9CQUFPLGNBQ04sdUJBQUMsaUJBQUksSUFBQyxTQUFTLEVBQUMsbUNBQW1DLFlBQ2hELElBQUksQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxHQUNsQixHQUNDLElBQ0EsR0FDUCxHQUNFLElBQ04sQ0FDUixDQUFDO0FBQ0osQ0FBQztBQUVNLEtBQUssVUFBVSxVQUFVLENBQzlCLElBQWtDLEVBQ2xDLE9BQTRCO0lBRTVCLE9BQU8sTUFBTSxJQUFBLGVBQU0sRUFBQyxNQUFNLElBQUEsZUFBTSxFQUFDLGVBQWUsQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3BFLENBQUM7QUFFTSxLQUFLLFVBQVUsVUFBVSxDQUM5QixJQUFrQyxFQUNsQyxPQUE0QjtJQUU1QixNQUFNLElBQUksR0FBRyxNQUFNLElBQUEsZUFBTSxFQUFDLGVBQWUsQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQztJQUMxRCxPQUFPLElBQUEsb0JBQVcsRUFBQyxJQUFJLENBQUMsQ0FBQztBQUMzQixDQUFDIn0=
@@ -1,3 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvdGVtcGxhdGVzL2VtYWlscy9vcmRlci1wbGFjZWQvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiJ9
@@ -1,6 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getTranslations = void 0;
4
- var utils_1 = require("./utils");
5
- Object.defineProperty(exports, "getTranslations", { enumerable: true, get: function () { return utils_1.getTranslations; } });
6
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvdGVtcGxhdGVzL3NoYXJlZC9pMThuL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUVBLGlDQUEwQztBQUFqQyx3R0FBQSxlQUFlLE9BQUEifQ==