@dev.smartpricing/message-composer-utils 3.1.2

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 (119) hide show
  1. package/dist/types/api/aiIntegration.js +7 -0
  2. package/dist/types/api/aiIntegration.js.map +1 -0
  3. package/dist/types/api/apiMessages.js +2 -0
  4. package/dist/types/api/apiMessages.js.map +1 -0
  5. package/dist/types/api/index.js +3 -0
  6. package/dist/types/api/index.js.map +1 -0
  7. package/dist/types/app.js +23 -0
  8. package/dist/types/app.js.map +1 -0
  9. package/dist/types/brand.js +31 -0
  10. package/dist/types/brand.js.map +1 -0
  11. package/dist/types/dynamic-values.js +5 -0
  12. package/dist/types/dynamic-values.js.map +1 -0
  13. package/dist/types/emailblocks.v1.defaults.js +83 -0
  14. package/dist/types/emailblocks.v1.defaults.js.map +1 -0
  15. package/dist/types/emailblocks.v1.js +339 -0
  16. package/dist/types/emailblocks.v1.js.map +1 -0
  17. package/dist/types/index.js +16 -0
  18. package/dist/types/index.js.map +1 -0
  19. package/dist/types/kafka-events.js +2 -0
  20. package/dist/types/kafka-events.js.map +1 -0
  21. package/dist/types/language.js +2 -0
  22. package/dist/types/language.js.map +1 -0
  23. package/dist/types/media.js +6 -0
  24. package/dist/types/media.js.map +1 -0
  25. package/dist/types/message.js +41 -0
  26. package/dist/types/message.js.map +1 -0
  27. package/dist/types/meta-template.js +2 -0
  28. package/dist/types/meta-template.js.map +1 -0
  29. package/dist/types/meta-webhook.js +2 -0
  30. package/dist/types/meta-webhook.js.map +1 -0
  31. package/dist/types/submission-job.js +2 -0
  32. package/dist/types/submission-job.js.map +1 -0
  33. package/dist/types/tag.js +2 -0
  34. package/dist/types/tag.js.map +1 -0
  35. package/dist/types/utils.js +2 -0
  36. package/dist/types/utils.js.map +1 -0
  37. package/dist/types/whatsappblocks.v1.js +24 -0
  38. package/dist/types/whatsappblocks.v1.js.map +1 -0
  39. package/dist/utils/array.js +26 -0
  40. package/dist/utils/array.js.map +1 -0
  41. package/dist/utils/async.js +22 -0
  42. package/dist/utils/async.js.map +1 -0
  43. package/dist/utils/date.js +37 -0
  44. package/dist/utils/date.js.map +1 -0
  45. package/dist/utils/index.js +34 -0
  46. package/dist/utils/index.js.map +1 -0
  47. package/dist/utils/intl.js +37 -0
  48. package/dist/utils/intl.js.map +1 -0
  49. package/dist/utils/meta-status.js +21 -0
  50. package/dist/utils/meta-status.js.map +1 -0
  51. package/dist/utils/number.js +24 -0
  52. package/dist/utils/number.js.map +1 -0
  53. package/dist/utils/object.js +87 -0
  54. package/dist/utils/object.js.map +1 -0
  55. package/dist/utils/string.js +22 -0
  56. package/dist/utils/string.js.map +1 -0
  57. package/dist/utils/templates/brand-cascade.js +116 -0
  58. package/dist/utils/templates/brand-cascade.js.map +1 -0
  59. package/dist/utils/templates/email-compiler.js +126 -0
  60. package/dist/utils/templates/email-compiler.js.map +1 -0
  61. package/dist/utils/templates/email-mjml.js +444 -0
  62. package/dist/utils/templates/email-mjml.js.map +1 -0
  63. package/dist/utils/templates/email.js +580 -0
  64. package/dist/utils/templates/email.js.map +1 -0
  65. package/dist/utils/templates/html-sanitizer.js +95 -0
  66. package/dist/utils/templates/html-sanitizer.js.map +1 -0
  67. package/dist/utils/templates/messages.js +33 -0
  68. package/dist/utils/templates/messages.js.map +1 -0
  69. package/dist/utils/templates/meta.js +246 -0
  70. package/dist/utils/templates/meta.js.map +1 -0
  71. package/dist/utils/templates/tiptap.js +167 -0
  72. package/dist/utils/templates/tiptap.js.map +1 -0
  73. package/dist/utils/templates/whatsapp-compiler.js +168 -0
  74. package/dist/utils/templates/whatsapp-compiler.js.map +1 -0
  75. package/dist/utils/templates/whatsapp.js +329 -0
  76. package/dist/utils/templates/whatsapp.js.map +1 -0
  77. package/dist/utils/validations.js +39 -0
  78. package/dist/utils/validations.js.map +1 -0
  79. package/package.json +43 -0
  80. package/src/types/api/aiIntegration.ts +59 -0
  81. package/src/types/api/apiMessages.ts +22 -0
  82. package/src/types/api/index.ts +2 -0
  83. package/src/types/app.ts +76 -0
  84. package/src/types/brand.ts +80 -0
  85. package/src/types/dynamic-values.ts +47 -0
  86. package/src/types/emailblocks.v1.defaults.ts +123 -0
  87. package/src/types/emailblocks.v1.ts +655 -0
  88. package/src/types/index.ts +15 -0
  89. package/src/types/kafka-events.ts +46 -0
  90. package/src/types/language.ts +9 -0
  91. package/src/types/media.ts +26 -0
  92. package/src/types/message.ts +635 -0
  93. package/src/types/meta-template.ts +50 -0
  94. package/src/types/meta-webhook.ts +32 -0
  95. package/src/types/submission-job.ts +30 -0
  96. package/src/types/tag.ts +8 -0
  97. package/src/types/utils.ts +14 -0
  98. package/src/types/whatsappblocks.v1.ts +102 -0
  99. package/src/utils/array.ts +33 -0
  100. package/src/utils/async.ts +30 -0
  101. package/src/utils/date.ts +39 -0
  102. package/src/utils/index.ts +44 -0
  103. package/src/utils/intl.ts +51 -0
  104. package/src/utils/meta-status.ts +24 -0
  105. package/src/utils/number.ts +36 -0
  106. package/src/utils/object.ts +101 -0
  107. package/src/utils/string.ts +24 -0
  108. package/src/utils/templates/brand-cascade.ts +156 -0
  109. package/src/utils/templates/email-compiler.ts +155 -0
  110. package/src/utils/templates/email-mjml.ts +602 -0
  111. package/src/utils/templates/email.ts +713 -0
  112. package/src/utils/templates/html-sanitizer.ts +121 -0
  113. package/src/utils/templates/messages.ts +44 -0
  114. package/src/utils/templates/meta.ts +336 -0
  115. package/src/utils/templates/tiptap.ts +247 -0
  116. package/src/utils/templates/whatsapp-compiler.ts +212 -0
  117. package/src/utils/templates/whatsapp.ts +408 -0
  118. package/src/utils/validations.ts +49 -0
  119. package/tsconfig.json +10 -0
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=submission-job.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"submission-job.js","sourceRoot":"","sources":["../../src/types/submission-job.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=tag.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tag.js","sourceRoot":"","sources":["../../src/types/tag.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/types/utils.ts"],"names":[],"mappings":""}
@@ -0,0 +1,24 @@
1
+ export const WA_HEADER_TYPES_V1 = [
2
+ "none",
3
+ "text",
4
+ "video",
5
+ "image",
6
+ "document",
7
+ ];
8
+ export const WA_BUTTON_TYPES_V1 = [
9
+ "unsubscribe",
10
+ "phone",
11
+ "link",
12
+ "quick_reply",
13
+ ];
14
+ // Validation constants
15
+ export const WA_HEADER_TEXT_MAX_LENGTH = 60;
16
+ export const WA_BODY_MAX_LENGTH = 1024;
17
+ export const WA_FOOTER_MAX_LENGTH = 60;
18
+ export const WA_BUTTON_TEXT_MAX_LENGTH = 20;
19
+ export const WA_BUTTON_MAX_LINK_BUTTONS = 1;
20
+ export const WA_BUTTON_MAX_PHONE_BUTTONS = 1;
21
+ export const WA_BUTTON_MAX_UNSUBSCRIBE_BUTTONS = 1;
22
+ export const WA_BUTTON_MAX_QUICK_REPLY_BUTTONS = 3;
23
+ export const WA_BUTTON_MAX_BUTTONS = 10;
24
+ //# sourceMappingURL=whatsappblocks.v1.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"whatsappblocks.v1.js","sourceRoot":"","sources":["../../src/types/whatsappblocks.v1.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,kBAAkB,GAAG;IAChC,MAAM;IACN,MAAM;IACN,OAAO;IACP,OAAO;IACP,UAAU;CACF,CAAC;AAuCX,MAAM,CAAC,MAAM,kBAAkB,GAAG;IAChC,aAAa;IACb,OAAO;IACP,MAAM;IACN,aAAa;CACL,CAAC;AAuCX,uBAAuB;AACvB,MAAM,CAAC,MAAM,yBAAyB,GAAG,EAAE,CAAC;AAC5C,MAAM,CAAC,MAAM,kBAAkB,GAAG,IAAI,CAAC;AACvC,MAAM,CAAC,MAAM,oBAAoB,GAAG,EAAE,CAAC;AACvC,MAAM,CAAC,MAAM,yBAAyB,GAAG,EAAE,CAAC;AAC5C,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC,CAAC;AAC5C,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAAC,CAAC;AAC7C,MAAM,CAAC,MAAM,iCAAiC,GAAG,CAAC,CAAC;AACnD,MAAM,CAAC,MAAM,iCAAiC,GAAG,CAAC,CAAC;AAEnD,MAAM,CAAC,MAAM,qBAAqB,GAAG,EAAE,CAAC"}
@@ -0,0 +1,26 @@
1
+ // Array utility functions
2
+ export const unique = (array) => {
3
+ return [...new Set(array)];
4
+ };
5
+ export const uniqueBy = (array, keyFn) => {
6
+ const seen = new Set();
7
+ return array.filter((item) => {
8
+ const key = keyFn(item);
9
+ if (seen.has(key)) {
10
+ return false;
11
+ }
12
+ seen.add(key);
13
+ return true;
14
+ });
15
+ };
16
+ export const groupBy = (array, keyFn) => {
17
+ return array.reduce((groups, item) => {
18
+ const key = keyFn(item);
19
+ if (!groups[key]) {
20
+ groups[key] = [];
21
+ }
22
+ groups[key].push(item);
23
+ return groups;
24
+ }, {});
25
+ };
26
+ //# sourceMappingURL=array.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"array.js","sourceRoot":"","sources":["../../src/utils/array.ts"],"names":[],"mappings":"AAAA,0BAA0B;AAC1B,MAAM,CAAC,MAAM,MAAM,GAAG,CAAI,KAAU,EAAO,EAAE;IAC3C,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;AAC7B,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAO,KAAU,EAAE,KAAqB,EAAO,EAAE;IACvE,MAAM,IAAI,GAAG,IAAI,GAAG,EAAK,CAAC;IAC1B,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE;QAC3B,MAAM,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC;QACxB,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YAClB,OAAO,KAAK,CAAC;QACf,CAAC;QACD,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACd,OAAO,IAAI,CAAC;IACd,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,OAAO,GAAG,CACrB,KAAU,EACV,KAAqB,EACL,EAAE;IAClB,OAAO,KAAK,CAAC,MAAM,CACjB,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE;QACf,MAAM,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC;QACxB,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;YACjB,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;QACnB,CAAC;QACD,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACvB,OAAO,MAAM,CAAC;IAChB,CAAC,EACD,EAAoB,CACrB,CAAC;AACJ,CAAC,CAAC"}
@@ -0,0 +1,22 @@
1
+ /* eslint-disable @typescript-eslint/no-explicit-any */
2
+ export const sleep = (ms) => {
3
+ return new Promise((resolve) => setTimeout(resolve, ms));
4
+ };
5
+ export const debounce = (func, delay) => {
6
+ let timeoutId;
7
+ return (...args) => {
8
+ clearTimeout(timeoutId);
9
+ timeoutId = setTimeout(() => func(...args), delay);
10
+ };
11
+ };
12
+ export const throttle = (func, limit) => {
13
+ let inThrottle;
14
+ return (...args) => {
15
+ if (!inThrottle) {
16
+ func(...args);
17
+ inThrottle = true;
18
+ setTimeout(() => (inThrottle = false), limit);
19
+ }
20
+ };
21
+ };
22
+ //# sourceMappingURL=async.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"async.js","sourceRoot":"","sources":["../../src/utils/async.ts"],"names":[],"mappings":"AAAA,uDAAuD;AAEvD,MAAM,CAAC,MAAM,KAAK,GAAG,CAAC,EAAU,EAAiB,EAAE;IACjD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;AAC3D,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,QAAQ,GAAG,CACtB,IAAO,EACP,KAAa,EACuB,EAAE;IACtC,IAAI,SAAwC,CAAC;IAC7C,OAAO,CAAC,GAAG,IAAmB,EAAE,EAAE;QAChC,YAAY,CAAC,SAAS,CAAC,CAAC;QACxB,SAAS,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC;IACrD,CAAC,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,QAAQ,GAAG,CACtB,IAAO,EACP,KAAa,EACuB,EAAE;IACtC,IAAI,UAAmB,CAAC;IACxB,OAAO,CAAC,GAAG,IAAmB,EAAE,EAAE;QAChC,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;YACd,UAAU,GAAG,IAAI,CAAC;YAClB,UAAU,CAAC,GAAG,EAAE,CAAC,CAAC,UAAU,GAAG,KAAK,CAAC,EAAE,KAAK,CAAC,CAAC;QAChD,CAAC;IACH,CAAC,CAAC;AACJ,CAAC,CAAC"}
@@ -0,0 +1,37 @@
1
+ function parseDate(date) {
2
+ if (typeof date === "number") {
3
+ return new Date(date);
4
+ }
5
+ if (typeof date === "string") {
6
+ return new Date(date);
7
+ }
8
+ return date;
9
+ }
10
+ // Date utility functions
11
+ export const formatDate = (date) => {
12
+ date = parseDate(date);
13
+ return new Intl.DateTimeFormat("en-US", {
14
+ year: "numeric",
15
+ month: "2-digit",
16
+ day: "2-digit",
17
+ }).format(date);
18
+ };
19
+ export const formatDateTime = (date) => {
20
+ date = parseDate(date);
21
+ return new Intl.DateTimeFormat("en-US", {
22
+ year: "numeric",
23
+ month: "2-digit",
24
+ day: "2-digit",
25
+ hour: "2-digit",
26
+ minute: "2-digit",
27
+ }).format(date);
28
+ };
29
+ export const formatTime = (date) => {
30
+ date = parseDate(date);
31
+ return new Intl.DateTimeFormat("en-US", {
32
+ hour: "2-digit",
33
+ minute: "2-digit",
34
+ second: "2-digit",
35
+ }).format(date);
36
+ };
37
+ //# sourceMappingURL=date.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"date.js","sourceRoot":"","sources":["../../src/utils/date.ts"],"names":[],"mappings":"AAAA,SAAS,SAAS,CAAC,IAA4B;IAC7C,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC7B,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC;IACxB,CAAC;IACD,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC7B,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC;IACxB,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,yBAAyB;AACzB,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,IAA4B,EAAU,EAAE;IACjE,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;IACvB,OAAO,IAAI,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE;QACtC,IAAI,EAAE,SAAS;QACf,KAAK,EAAE,SAAS;QAChB,GAAG,EAAE,SAAS;KACf,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AAClB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,IAAmB,EAAU,EAAE;IAC5D,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;IACvB,OAAO,IAAI,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE;QACtC,IAAI,EAAE,SAAS;QACf,KAAK,EAAE,SAAS;QAChB,GAAG,EAAE,SAAS;QACd,IAAI,EAAE,SAAS;QACf,MAAM,EAAE,SAAS;KAClB,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AAClB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,IAAmB,EAAU,EAAE;IACxD,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;IACvB,OAAO,IAAI,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE;QACtC,IAAI,EAAE,SAAS;QACf,MAAM,EAAE,SAAS;QACjB,MAAM,EAAE,SAAS;KAClB,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AAClB,CAAC,CAAC"}
@@ -0,0 +1,34 @@
1
+ // Export all utilities by category
2
+ export * from "./async.js";
3
+ export * from "./array.js";
4
+ export * from "./date.js";
5
+ export * from "./number.js";
6
+ export * from "./object.js";
7
+ export * from "./string.js";
8
+ export * from "./intl.js";
9
+ export * from "./templates/messages.js";
10
+ export * from "./templates/whatsapp.js";
11
+ export * from "./templates/email.js";
12
+ export * from "./templates/meta.js";
13
+ export * from "./templates/tiptap.js";
14
+ export * from "./templates/whatsapp-compiler.js";
15
+ export * from "./templates/email-compiler.js";
16
+ export * from "./templates/email-mjml.js";
17
+ export * from "./templates/brand-cascade.js";
18
+ export * from "./templates/html-sanitizer.js";
19
+ export * from "./validations.js";
20
+ export * from "./meta-status.js";
21
+ // Also export as namespaced modules for cleaner imports
22
+ export * as AsyncUtils from "./async.js";
23
+ export * as ArrayUtils from "./array.js";
24
+ export * as DateUtils from "./date.js";
25
+ export * as NumberUtils from "./number.js";
26
+ export * as ObjectUtils from "./object.js";
27
+ export * as StringUtils from "./string.js";
28
+ export * as WhatsappUtils from "./templates/whatsapp.js";
29
+ export * as ValidationsUtils from "./validations.js";
30
+ export * as IntlUtils from "./intl.js";
31
+ // Re-export specific functions with aliases for clarity
32
+ export { normalizeParameters, compileWhatsappTemplate, extractRequiredParameters, validateParameters as validateWhatsappParameters, } from "./templates/whatsapp-compiler.js";
33
+ export { extractEmailParameters, validateEmailParameters, } from "./templates/email-compiler.js";
34
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,mCAAmC;AACnC,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,yBAAyB,CAAC;AACxC,cAAc,yBAAyB,CAAC;AACxC,cAAc,sBAAsB,CAAC;AACrC,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC;AACtC,cAAc,kCAAkC,CAAC;AACjD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AAEjC,wDAAwD;AACxD,OAAO,KAAK,UAAU,MAAM,YAAY,CAAC;AACzC,OAAO,KAAK,UAAU,MAAM,YAAY,CAAC;AACzC,OAAO,KAAK,SAAS,MAAM,WAAW,CAAC;AACvC,OAAO,KAAK,WAAW,MAAM,aAAa,CAAC;AAC3C,OAAO,KAAK,WAAW,MAAM,aAAa,CAAC;AAC3C,OAAO,KAAK,WAAW,MAAM,aAAa,CAAC;AAC3C,OAAO,KAAK,aAAa,MAAM,yBAAyB,CAAC;AACzD,OAAO,KAAK,gBAAgB,MAAM,kBAAkB,CAAC;AACrD,OAAO,KAAK,SAAS,MAAM,WAAW,CAAC;AAEvC,wDAAwD;AACxD,OAAO,EACL,mBAAmB,EACnB,uBAAuB,EACvB,yBAAyB,EACzB,kBAAkB,IAAI,0BAA0B,GACjD,MAAM,kCAAkC,CAAC;AAE1C,OAAO,EACL,sBAAsB,EACtB,uBAAuB,GACxB,MAAM,+BAA+B,CAAC"}
@@ -0,0 +1,37 @@
1
+ function getIntlDisplayName(settings) {
2
+ if (settings.of.trim() === "") {
3
+ return "-";
4
+ }
5
+ try {
6
+ const x = new Intl.DisplayNames([settings.locale], {
7
+ type: settings.type,
8
+ }).of(settings.of.toUpperCase());
9
+ return x;
10
+ }
11
+ catch (e) {
12
+ console.log(e);
13
+ return settings.of;
14
+ }
15
+ }
16
+ export function getLanguageDisplayName(language, locale = "en") {
17
+ return getIntlDisplayName({
18
+ locale: locale,
19
+ type: "language",
20
+ of: language ?? "",
21
+ });
22
+ }
23
+ export function getCountryDisplayName(country, locale = "en") {
24
+ return getIntlDisplayName({
25
+ locale: locale,
26
+ type: "region",
27
+ of: country ?? "",
28
+ });
29
+ }
30
+ export function getNationalityDisplayName(nationality, locale = "en") {
31
+ return getIntlDisplayName({
32
+ locale: locale,
33
+ type: "region",
34
+ of: nationality ?? "",
35
+ });
36
+ }
37
+ //# sourceMappingURL=intl.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"intl.js","sourceRoot":"","sources":["../../src/utils/intl.ts"],"names":[],"mappings":"AAAA,SAAS,kBAAkB,CAAC,QAI3B;IACC,IAAI,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;QAC9B,OAAO,GAAG,CAAC;IACb,CAAC;IACD,IAAI,CAAC;QACH,MAAM,CAAC,GAAG,IAAI,IAAI,CAAC,YAAY,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;YACjD,IAAI,EAAE,QAAQ,CAAC,IAAI;SACpB,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC;QACjC,OAAO,CAAC,CAAC;IACX,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACf,OAAO,QAAQ,CAAC,EAAE,CAAC;IACrB,CAAC;AACH,CAAC;AAED,MAAM,UAAU,sBAAsB,CACpC,QAAuB,EACvB,SAAiB,IAAI;IAErB,OAAO,kBAAkB,CAAC;QACxB,MAAM,EAAE,MAAM;QACd,IAAI,EAAE,UAAU;QAChB,EAAE,EAAE,QAAQ,IAAI,EAAE;KACnB,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,qBAAqB,CACnC,OAAsB,EACtB,SAAiB,IAAI;IAErB,OAAO,kBAAkB,CAAC;QACxB,MAAM,EAAE,MAAM;QACd,IAAI,EAAE,QAAQ;QACd,EAAE,EAAE,OAAO,IAAI,EAAE;KAClB,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,yBAAyB,CACvC,WAA0B,EAC1B,SAAiB,IAAI;IAErB,OAAO,kBAAkB,CAAC;QACxB,MAAM,EAAE,MAAM;QACd,IAAI,EAAE,QAAQ;QACd,EAAE,EAAE,WAAW,IAAI,EAAE;KACtB,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * Converts Meta API status to internal status format
3
+ * @param metaStatus The status from Meta API
4
+ * @returns The internal status representation
5
+ */
6
+ export function mapMetaStatusToInternal(metaStatus) {
7
+ if (!metaStatus) {
8
+ return null;
9
+ }
10
+ switch (metaStatus) {
11
+ case "PENDING":
12
+ return "pending";
13
+ case "APPROVED":
14
+ return "approved";
15
+ case "REJECTED":
16
+ return "rejected";
17
+ default:
18
+ return "pending";
19
+ }
20
+ }
21
+ //# sourceMappingURL=meta-status.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"meta-status.js","sourceRoot":"","sources":["../../src/utils/meta-status.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AACH,MAAM,UAAU,uBAAuB,CACrC,UAA+B;IAE/B,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,OAAO,IAAI,CAAC;IACd,CAAC;IACD,QAAQ,UAAU,EAAE,CAAC;QACnB,KAAK,SAAS;YACZ,OAAO,SAAS,CAAC;QACnB,KAAK,UAAU;YACb,OAAO,UAAU,CAAC;QACpB,KAAK,UAAU;YACb,OAAO,UAAU,CAAC;QACpB;YACE,OAAO,SAAS,CAAC;IACrB,CAAC;AACH,CAAC"}
@@ -0,0 +1,24 @@
1
+ // Number utility functions
2
+ export const randomBetween = (min, max) => {
3
+ return Math.floor(Math.random() * (max - min + 1)) + min;
4
+ };
5
+ export const clamp = (value, min, max) => {
6
+ return Math.min(Math.max(value, min), max);
7
+ };
8
+ export const formatNumber = (value, options = {}) => {
9
+ return new Intl.NumberFormat("en-US", options).format(value);
10
+ };
11
+ export const formatCurrency = (value, currency = "USD") => {
12
+ return new Intl.NumberFormat("en-US", {
13
+ style: "currency",
14
+ currency,
15
+ }).format(value);
16
+ };
17
+ export const formatPercentage = (value, decimals = 2) => {
18
+ return new Intl.NumberFormat("en-US", {
19
+ style: "percent",
20
+ minimumFractionDigits: decimals,
21
+ maximumFractionDigits: decimals,
22
+ }).format(value);
23
+ };
24
+ //# sourceMappingURL=number.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"number.js","sourceRoot":"","sources":["../../src/utils/number.ts"],"names":[],"mappings":"AAAA,2BAA2B;AAC3B,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,GAAW,EAAE,GAAW,EAAU,EAAE;IAChE,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;AAC3D,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,KAAK,GAAG,CAAC,KAAa,EAAE,GAAW,EAAE,GAAW,EAAU,EAAE;IACvE,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC;AAC7C,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,YAAY,GAAG,CAC1B,KAAa,EACb,UAAoC,EAAE,EAC9B,EAAE;IACV,OAAO,IAAI,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC/D,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,cAAc,GAAG,CAC5B,KAAa,EACb,WAAmB,KAAK,EAChB,EAAE;IACV,OAAO,IAAI,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE;QACpC,KAAK,EAAE,UAAU;QACjB,QAAQ;KACT,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACnB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAC9B,KAAa,EACb,WAAmB,CAAC,EACZ,EAAE;IACV,OAAO,IAAI,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE;QACpC,KAAK,EAAE,SAAS;QAChB,qBAAqB,EAAE,QAAQ;QAC/B,qBAAqB,EAAE,QAAQ;KAChC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACnB,CAAC,CAAC"}
@@ -0,0 +1,87 @@
1
+ /**
2
+ * Object utility functions
3
+ */
4
+ /**
5
+ * Checks if value is a function
6
+ */
7
+ export function isFunction(value) {
8
+ return typeof value === "function";
9
+ }
10
+ /**
11
+ * Gets the value at path of object. Similar to lodash get.
12
+ */
13
+ export function get(object, path) {
14
+ if (!object || !path) {
15
+ return undefined;
16
+ }
17
+ const pathArray = Array.isArray(path) ? path : path.split(".");
18
+ let result = object;
19
+ for (let i = 0; i < pathArray.length; i++) {
20
+ if (result == null) {
21
+ return undefined;
22
+ }
23
+ result = result[pathArray[i]];
24
+ }
25
+ return result;
26
+ }
27
+ /**
28
+ * Checks if a value exists and is not null or undefined
29
+ */
30
+ export function isDefined(value) {
31
+ return value !== null && value !== undefined;
32
+ }
33
+ export function isEmpty(value) {
34
+ if (value === null || value === undefined)
35
+ return true;
36
+ if (typeof value === "string")
37
+ return value.trim().length === 0;
38
+ if (Array.isArray(value))
39
+ return value.length === 0;
40
+ if (typeof value === "object")
41
+ return Object.keys(value).length === 0;
42
+ return false;
43
+ }
44
+ export function deepClone(value) {
45
+ try {
46
+ return structuredClone(value);
47
+ }
48
+ catch {
49
+ // Fallback to JSON serialization for objects that can't be structuredClone'd
50
+ // (e.g., Vue reactive proxies, objects with symbols, etc.)
51
+ return JSON.parse(JSON.stringify(value));
52
+ }
53
+ }
54
+ /**
55
+ * Deep equality comparison between two values
56
+ */
57
+ export function deepEqual(a, b) {
58
+ // Handle identical references and primitive equality
59
+ if (a === b)
60
+ return true;
61
+ // Handle null/undefined
62
+ if (a == null || b == null)
63
+ return a === b;
64
+ // Handle dates
65
+ if (a instanceof Date && b instanceof Date) {
66
+ return a.getTime() === b.getTime();
67
+ }
68
+ // Handle arrays
69
+ if (Array.isArray(a) && Array.isArray(b)) {
70
+ if (a.length !== b.length)
71
+ return false;
72
+ return a.every((item, index) => deepEqual(item, b[index]));
73
+ }
74
+ // Handle objects
75
+ if (typeof a === "object" && typeof b === "object") {
76
+ const keysA = Object.keys(a);
77
+ const keysB = Object.keys(b);
78
+ if (keysA.length !== keysB.length)
79
+ return false;
80
+ return keysA.every((key) => Object.prototype.hasOwnProperty.call(b, key) &&
81
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
82
+ deepEqual(a[key], b[key]));
83
+ }
84
+ // Handle other types (strings, numbers, etc)
85
+ return a === b;
86
+ }
87
+ //# sourceMappingURL=object.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"object.js","sourceRoot":"","sources":["../../src/utils/object.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ // String utility functions
2
+ export const capitalize = (str) => {
3
+ return str.charAt(0).toUpperCase() + str.slice(1);
4
+ };
5
+ export const truncate = (str, length) => {
6
+ if (str.length <= length)
7
+ return str;
8
+ return str.substring(0, length) + "...";
9
+ };
10
+ export const snakeCase = (str) => {
11
+ return str
12
+ .replace(/([a-z])([A-Z])/g, "$1_$2")
13
+ .replace(/\s+/g, "_")
14
+ .toLowerCase();
15
+ };
16
+ export const removeWhitespace = (str) => {
17
+ return str.replaceAll(" ", "");
18
+ };
19
+ export const isEmptyOrWhitespace = (str) => {
20
+ return !str || !str.trim();
21
+ };
22
+ //# sourceMappingURL=string.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"string.js","sourceRoot":"","sources":["../../src/utils/string.ts"],"names":[],"mappings":"AAAA,2BAA2B;AAC3B,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,GAAW,EAAU,EAAE;IAChD,OAAO,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACpD,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,GAAW,EAAE,MAAc,EAAU,EAAE;IAC9D,IAAI,GAAG,CAAC,MAAM,IAAI,MAAM;QAAE,OAAO,GAAG,CAAC;IACrC,OAAO,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,MAAM,CAAC,GAAG,KAAK,CAAC;AAC1C,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,GAAW,EAAU,EAAE;IAC/C,OAAO,GAAG;SACP,OAAO,CAAC,iBAAiB,EAAE,OAAO,CAAC;SACnC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC;SACpB,WAAW,EAAE,CAAC;AACnB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,GAAW,EAAU,EAAE;IACtD,OAAO,GAAG,CAAC,UAAU,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;AACjC,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,GAAW,EAAW,EAAE;IAC1D,OAAO,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;AAC7B,CAAC,CAAC"}
@@ -0,0 +1,116 @@
1
+ import { DEFAULT_EMAIL_GLOBAL_SETTINGS } from "../../types/index.js";
2
+ /**
3
+ * Resolves EmailGlobalSettings by cascading:
4
+ * generalSettings → brand → hardcoded defaults
5
+ */
6
+ export function resolveEmailSettings(settings, brand) {
7
+ const brandSettings = brand?.default_email_settings ?? {};
8
+ const brandButtons = brand?.default_button_settings ?? {};
9
+ return {
10
+ backgroundColor: settings.backgroundColor ??
11
+ brandSettings.backgroundColor ??
12
+ DEFAULT_EMAIL_GLOBAL_SETTINGS.backgroundColor,
13
+ contentBackgroundColor: settings.contentBackgroundColor ??
14
+ brandSettings.contentBackgroundColor ??
15
+ DEFAULT_EMAIL_GLOBAL_SETTINGS.contentBackgroundColor,
16
+ contentWidth: settings.contentWidth ?? DEFAULT_EMAIL_GLOBAL_SETTINGS.contentWidth,
17
+ fontFamily: settings.fontFamily ??
18
+ brandSettings.fontFamily ??
19
+ DEFAULT_EMAIL_GLOBAL_SETTINGS.fontFamily,
20
+ textColor: settings.textColor ??
21
+ brandSettings.textColor ??
22
+ DEFAULT_EMAIL_GLOBAL_SETTINGS.textColor,
23
+ verticalSpacing: settings.verticalSpacing ?? DEFAULT_EMAIL_GLOBAL_SETTINGS.verticalSpacing,
24
+ horizontalSpacing: settings.horizontalSpacing ??
25
+ DEFAULT_EMAIL_GLOBAL_SETTINGS.horizontalSpacing,
26
+ button: {
27
+ backgroundColor: brandButtons.backgroundColor ?? "#000000",
28
+ textColor: brandButtons.textColor ?? "#FFFFFF",
29
+ },
30
+ };
31
+ }
32
+ /**
33
+ * Resolves blocks with brand cascade data.
34
+ * - Header: fills empty src with brand logo
35
+ * - Socials: fills missing URLs from brand socials
36
+ * - Buttons: fills undefined colors from brand button defaults
37
+ */
38
+ function resolveBlocks(blocks, brand) {
39
+ if (!brand)
40
+ return blocks;
41
+ return blocks.map((block) => {
42
+ switch (block.type) {
43
+ case "header": {
44
+ if (!block.settings.src && brand.logo_url) {
45
+ return {
46
+ ...block,
47
+ settings: { ...block.settings, src: brand.logo_url },
48
+ };
49
+ }
50
+ return block;
51
+ }
52
+ case "socials": {
53
+ if (!brand.default_socials)
54
+ return block;
55
+ const resolvedSocials = { ...block.settings.socials };
56
+ for (const platform of Object.keys(resolvedSocials)) {
57
+ const blockSocial = resolvedSocials[platform];
58
+ if (!blockSocial?.enabled)
59
+ continue;
60
+ // Enabled + no block URL → cascade from brand
61
+ if (!blockSocial.url) {
62
+ const brandUrl = brand.default_socials[platform];
63
+ if (brandUrl) {
64
+ resolvedSocials[platform] = { ...blockSocial, url: brandUrl };
65
+ }
66
+ }
67
+ }
68
+ return {
69
+ ...block,
70
+ settings: { ...block.settings, socials: resolvedSocials },
71
+ };
72
+ }
73
+ case "button": {
74
+ const brandButton = brand.default_button_settings;
75
+ return {
76
+ ...block,
77
+ settings: {
78
+ ...block.settings,
79
+ textColor: block.settings.textColor ?? brandButton.textColor,
80
+ backgroundColor: block.settings.backgroundColor ?? brandButton.backgroundColor,
81
+ },
82
+ };
83
+ }
84
+ case "grid": {
85
+ // Recurse into grid column blocks
86
+ return {
87
+ ...block,
88
+ settings: {
89
+ ...block.settings,
90
+ columnData: block.settings.columnData.map((col) => ({
91
+ ...col,
92
+ blocks: resolveBlocks(col.blocks, brand),
93
+ })),
94
+ },
95
+ };
96
+ }
97
+ default:
98
+ return block;
99
+ }
100
+ });
101
+ }
102
+ /**
103
+ * Resolves the full email message body with brand cascade.
104
+ * Returns a new body where all undefined settings and block values
105
+ * are filled from the brand, then from hardcoded defaults.
106
+ *
107
+ * The returned body can be passed directly to translateEmailToMjml.
108
+ */
109
+ export function resolveEmailBodyWithBrand(body, brand) {
110
+ return {
111
+ subject: body.subject,
112
+ blocks: resolveBlocks(body.blocks, brand),
113
+ settings: resolveEmailSettings(body.settings, brand),
114
+ };
115
+ }
116
+ //# sourceMappingURL=brand-cascade.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"brand-cascade.js","sourceRoot":"","sources":["../../../src/utils/templates/brand-cascade.ts"],"names":[],"mappings":"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"}