@dev.smartpricing/message-composer-utils 4.5.1-next.1 → 4.5.1-next.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.
@@ -14,6 +14,12 @@ export function mapMetaStatusToInternal(metaStatus) {
14
14
  return "approved";
15
15
  case "REJECTED":
16
16
  return "rejected";
17
+ // Meta stopped serving the template. There is no internal status for
18
+ // that, so it goes back to pending: not approved, hence not Sendable.
19
+ case "PAUSED":
20
+ case "DISABLED":
21
+ return "pending";
22
+ // Whatever else Meta reports is never taken for an approval.
17
23
  default:
18
24
  return "pending";
19
25
  }
@@ -1 +1 @@
1
- {"version":3,"file":"meta-status.js","sourceRoot":"","sources":["../../src/utils/meta-status.ts"],"names":[],"mappings":"AAKA;;;;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"}
1
+ {"version":3,"file":"meta-status.js","sourceRoot":"","sources":["../../src/utils/meta-status.ts"],"names":[],"mappings":"AAKA;;;;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,qEAAqE;QACrE,sEAAsE;QACtE,KAAK,QAAQ,CAAC;QACd,KAAK,UAAU;YACb,OAAO,SAAS,CAAC;QACnB,6DAA6D;QAC7D;YACE,OAAO,SAAS,CAAC;IACrB,CAAC;AACH,CAAC"}
@@ -0,0 +1,21 @@
1
+ import { describe, it, expect } from "vitest";
2
+ import { mapMetaStatusToInternal } from "./meta-status.js";
3
+ describe("mapMetaStatusToInternal", () => {
4
+ it.each([
5
+ ["APPROVED", "approved"],
6
+ ["PENDING", "pending"],
7
+ ["REJECTED", "rejected"],
8
+ ])("maps %s to %s", (metaStatus, internal) => {
9
+ expect(mapMetaStatusToInternal(metaStatus)).toBe(internal);
10
+ });
11
+ it.each(["PAUSED", "DISABLED"])("does not leave a template %s at Meta approved", (metaStatus) => {
12
+ expect(mapMetaStatusToInternal(metaStatus)).toBe("pending");
13
+ });
14
+ it.each(["FLAGGED", "IN_APPEAL", "PENDING_DELETION", "SOMETHING_NEW"])("does not take a status it does not know (%s) for an approval", (metaStatus) => {
15
+ expect(mapMetaStatusToInternal(metaStatus)).not.toBe("approved");
16
+ });
17
+ it("has no status for a response that carries none", () => {
18
+ expect(mapMetaStatusToInternal(undefined)).toBeNull();
19
+ });
20
+ });
21
+ //# sourceMappingURL=meta-status.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"meta-status.test.js","sourceRoot":"","sources":["../../src/utils/meta-status.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAE9C,OAAO,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;AAE3D,QAAQ,CAAC,yBAAyB,EAAE,GAAG,EAAE;IACvC,EAAE,CAAC,IAAI,CAAC;QACN,CAAC,UAAU,EAAE,UAAU,CAAC;QACxB,CAAC,SAAS,EAAE,SAAS,CAAC;QACtB,CAAC,UAAU,EAAE,UAAU,CAAC;KAChB,CAAC,CAAC,eAAe,EAAE,CAAC,UAAU,EAAE,QAAQ,EAAE,EAAE;QACpD,MAAM,CAAC,uBAAuB,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC7D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,UAAU,CAAU,CAAC,CACtC,+CAA+C,EAC/C,CAAC,UAAU,EAAE,EAAE;QACb,MAAM,CAAC,uBAAuB,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC9D,CAAC,CACF,CAAC;IAEF,EAAE,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,WAAW,EAAE,kBAAkB,EAAE,eAAe,CAAC,CAAC,CACpE,8DAA8D,EAC9D,CAAC,UAAU,EAAE,EAAE;QACb,MAAM,CACJ,uBAAuB,CAAC,UAAgC,CAAC,CAC1D,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACzB,CAAC,CACF,CAAC;IAEF,EAAE,CAAC,gDAAgD,EAAE,GAAG,EAAE;QACxD,MAAM,CAAC,uBAAuB,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;IACxD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -83,9 +83,12 @@ function buildComponentParameters(text, parameters) {
83
83
  *
84
84
  * @param message - The WhatsApp message template to compile
85
85
  * @param parameters - Key-value pairs for parameter injection (will be normalized to strings)
86
+ * @param languageCode - The code the template is registered under at Meta
87
+ * (`language.meta_language_code`), which is not always the composer's own
88
+ * language id: `zh` is `zh_CN`, `pt` is `pt_PT`, `no` is `nb`, `tl` is `fil`.
86
89
  * @returns WhatsApp Cloud API send payload (without 'to' field)
87
90
  */
88
- export function compileWhatsappTemplate(message, parameters) {
91
+ export function compileWhatsappTemplate(message, parameters, languageCode) {
89
92
  // Normalize parameters to strings first
90
93
  const normalizedParams = normalizeParameters(parameters);
91
94
  const components = [];
@@ -159,7 +162,7 @@ export function compileWhatsappTemplate(message, parameters) {
159
162
  template: {
160
163
  name: templateName,
161
164
  language: {
162
- code: message.language_id,
165
+ code: languageCode,
163
166
  },
164
167
  components: components.length > 0 ? components : undefined,
165
168
  },
@@ -1 +1 @@
1
- {"version":3,"file":"whatsapp-compiler.js","sourceRoot":"","sources":["../../../src/utils/templates/whatsapp-compiler.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"whatsapp-compiler.js","sourceRoot":"","sources":["../../../src/utils/templates/whatsapp-compiler.ts"],"names":[],"mappings":"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"}
@@ -134,7 +134,7 @@ describe("validateParameters with brand_* keys", () => {
134
134
  });
135
135
  describe("compileWhatsappTemplate", () => {
136
136
  it("builds the template envelope from the Meta metadata and language", () => {
137
- const payload = compileWhatsappTemplate(whatsappMessage(), {});
137
+ const payload = compileWhatsappTemplate(whatsappMessage(), {}, "en");
138
138
  expect(payload).toEqual({
139
139
  messaging_product: "whatsapp",
140
140
  type: "template",
@@ -145,10 +145,15 @@ describe("compileWhatsappTemplate", () => {
145
145
  },
146
146
  });
147
147
  });
148
+ it("sends the Meta-registered language code when it differs from the language id", () => {
149
+ const message = { ...whatsappMessage(), language_id: "zh" };
150
+ const payload = compileWhatsappTemplate(message, {}, "zh_CN");
151
+ expect(payload.template.language).toEqual({ code: "zh_CN" });
152
+ });
148
153
  it("throws when the Message has no Meta template name", () => {
149
154
  const message = whatsappMessage();
150
155
  message.metadata = {};
151
- expect(() => compileWhatsappTemplate(message, {})).toThrow("Message does not have Meta template name in metadata");
156
+ expect(() => compileWhatsappTemplate(message, {}, "en")).toThrow("Message does not have Meta template name in metadata");
152
157
  });
153
158
  it("emits a HEADER component with the header text variable", () => {
154
159
  const message = whatsappMessage({
@@ -157,7 +162,7 @@ describe("compileWhatsappTemplate", () => {
157
162
  content: doc(text("Hi "), mention("guest_name")),
158
163
  },
159
164
  });
160
- const payload = compileWhatsappTemplate(message, { guest_name: "Mario" });
165
+ const payload = compileWhatsappTemplate(message, { guest_name: "Mario" }, "en");
161
166
  expect(payload.template.components).toEqual([
162
167
  {
163
168
  type: "HEADER",
@@ -177,7 +182,7 @@ describe("compileWhatsappTemplate", () => {
177
182
  const payload = compileWhatsappTemplate(message, {
178
183
  guest_name: "Mario",
179
184
  nights: 3,
180
- });
185
+ }, "en");
181
186
  expect(payload.template.components).toEqual([
182
187
  {
183
188
  type: "BODY",
@@ -197,7 +202,7 @@ describe("compileWhatsappTemplate", () => {
197
202
  smartchatMediaId: "media-42",
198
203
  },
199
204
  });
200
- const payload = compileWhatsappTemplate(message, {});
205
+ const payload = compileWhatsappTemplate(message, {}, "en");
201
206
  expect(payload.template.components).toEqual([
202
207
  {
203
208
  type: "HEADER",
@@ -209,7 +214,7 @@ describe("compileWhatsappTemplate", () => {
209
214
  const message = whatsappMessage({
210
215
  header: { type: "image", url: "https://cdn.example.com/hero.png" },
211
216
  });
212
- const payload = compileWhatsappTemplate(message, {});
217
+ const payload = compileWhatsappTemplate(message, {}, "en");
213
218
  expect(payload.template.components).toBeUndefined();
214
219
  });
215
220
  it("emits a URL BUTTON component named by button position, as submitted to Meta", () => {
@@ -227,7 +232,7 @@ describe("compileWhatsappTemplate", () => {
227
232
  ],
228
233
  },
229
234
  });
230
- const payload = compileWhatsappTemplate(message, { booking_id: "abc" });
235
+ const payload = compileWhatsappTemplate(message, { booking_id: "abc" }, "en");
231
236
  expect(payload.template.components).toEqual([
232
237
  {
233
238
  type: "BUTTON",
@@ -1 +1 @@
1
- {"version":3,"file":"whatsapp-compiler.test.js","sourceRoot":"","sources":["../../../src/utils/templates/whatsapp-compiler.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"whatsapp-compiler.test.js","sourceRoot":"","sources":["../../../src/utils/templates/whatsapp-compiler.test.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dev.smartpricing/message-composer-utils",
3
- "version": "4.5.1-next.1",
3
+ "version": "4.5.1-next.2",
4
4
  "description": "Shared types and utilities for the message composer",
5
5
  "type": "module",
6
6
  "exports": {
@@ -21,7 +21,12 @@ export interface MetaTemplateCategoryUpdate {
21
21
  new_category: "MARKETING" | "UTILITY";
22
22
  }
23
23
 
24
- export type MetaTemplateStatus = "APPROVED" | "REJECTED" | "PENDING";
24
+ export type MetaTemplateStatus =
25
+ | "APPROVED"
26
+ | "REJECTED"
27
+ | "PENDING"
28
+ | "PAUSED"
29
+ | "DISABLED";
25
30
  export type InternalTemplateStatus = "approved" | "rejected" | "pending";
26
31
  export interface MetaTemplateStatusUpdate {
27
32
  event: MetaTemplateStatus;
@@ -0,0 +1,33 @@
1
+ import { describe, it, expect } from "vitest";
2
+ import type { MetaTemplateStatus } from "../types/index.js";
3
+ import { mapMetaStatusToInternal } from "./meta-status.js";
4
+
5
+ describe("mapMetaStatusToInternal", () => {
6
+ it.each([
7
+ ["APPROVED", "approved"],
8
+ ["PENDING", "pending"],
9
+ ["REJECTED", "rejected"],
10
+ ] as const)("maps %s to %s", (metaStatus, internal) => {
11
+ expect(mapMetaStatusToInternal(metaStatus)).toBe(internal);
12
+ });
13
+
14
+ it.each(["PAUSED", "DISABLED"] as const)(
15
+ "does not leave a template %s at Meta approved",
16
+ (metaStatus) => {
17
+ expect(mapMetaStatusToInternal(metaStatus)).toBe("pending");
18
+ },
19
+ );
20
+
21
+ it.each(["FLAGGED", "IN_APPEAL", "PENDING_DELETION", "SOMETHING_NEW"])(
22
+ "does not take a status it does not know (%s) for an approval",
23
+ (metaStatus) => {
24
+ expect(
25
+ mapMetaStatusToInternal(metaStatus as MetaTemplateStatus),
26
+ ).not.toBe("approved");
27
+ },
28
+ );
29
+
30
+ it("has no status for a response that carries none", () => {
31
+ expect(mapMetaStatusToInternal(undefined)).toBeNull();
32
+ });
33
+ });
@@ -21,6 +21,12 @@ export function mapMetaStatusToInternal(
21
21
  return "approved";
22
22
  case "REJECTED":
23
23
  return "rejected";
24
+ // Meta stopped serving the template. There is no internal status for
25
+ // that, so it goes back to pending: not approved, hence not Sendable.
26
+ case "PAUSED":
27
+ case "DISABLED":
28
+ return "pending";
29
+ // Whatever else Meta reports is never taken for an approval.
24
30
  default:
25
31
  return "pending";
26
32
  }
@@ -162,7 +162,7 @@ describe("validateParameters with brand_* keys", () => {
162
162
 
163
163
  describe("compileWhatsappTemplate", () => {
164
164
  it("builds the template envelope from the Meta metadata and language", () => {
165
- const payload = compileWhatsappTemplate(whatsappMessage(), {});
165
+ const payload = compileWhatsappTemplate(whatsappMessage(), {}, "en");
166
166
  expect(payload).toEqual({
167
167
  messaging_product: "whatsapp",
168
168
  type: "template",
@@ -174,10 +174,18 @@ describe("compileWhatsappTemplate", () => {
174
174
  });
175
175
  });
176
176
 
177
+ it("sends the Meta-registered language code when it differs from the language id", () => {
178
+ const message = { ...whatsappMessage(), language_id: "zh" };
179
+
180
+ const payload = compileWhatsappTemplate(message, {}, "zh_CN");
181
+
182
+ expect(payload.template.language).toEqual({ code: "zh_CN" });
183
+ });
184
+
177
185
  it("throws when the Message has no Meta template name", () => {
178
186
  const message = whatsappMessage();
179
187
  message.metadata = {};
180
- expect(() => compileWhatsappTemplate(message, {})).toThrow(
188
+ expect(() => compileWhatsappTemplate(message, {}, "en")).toThrow(
181
189
  "Message does not have Meta template name in metadata",
182
190
  );
183
191
  });
@@ -189,7 +197,11 @@ describe("compileWhatsappTemplate", () => {
189
197
  content: doc(text("Hi "), mention("guest_name")),
190
198
  },
191
199
  });
192
- const payload = compileWhatsappTemplate(message, { guest_name: "Mario" });
200
+ const payload = compileWhatsappTemplate(
201
+ message,
202
+ { guest_name: "Mario" },
203
+ "en",
204
+ );
193
205
  expect(payload.template.components).toEqual([
194
206
  {
195
207
  type: "HEADER",
@@ -213,10 +225,14 @@ describe("compileWhatsappTemplate", () => {
213
225
  ),
214
226
  },
215
227
  });
216
- const payload = compileWhatsappTemplate(message, {
217
- guest_name: "Mario",
218
- nights: 3,
219
- });
228
+ const payload = compileWhatsappTemplate(
229
+ message,
230
+ {
231
+ guest_name: "Mario",
232
+ nights: 3,
233
+ },
234
+ "en",
235
+ );
220
236
  expect(payload.template.components).toEqual([
221
237
  {
222
238
  type: "BODY",
@@ -237,7 +253,7 @@ describe("compileWhatsappTemplate", () => {
237
253
  smartchatMediaId: "media-42",
238
254
  },
239
255
  });
240
- const payload = compileWhatsappTemplate(message, {});
256
+ const payload = compileWhatsappTemplate(message, {}, "en");
241
257
  expect(payload.template.components).toEqual([
242
258
  {
243
259
  type: "HEADER",
@@ -250,7 +266,7 @@ describe("compileWhatsappTemplate", () => {
250
266
  const message = whatsappMessage({
251
267
  header: { type: "image", url: "https://cdn.example.com/hero.png" },
252
268
  });
253
- const payload = compileWhatsappTemplate(message, {});
269
+ const payload = compileWhatsappTemplate(message, {}, "en");
254
270
  expect(payload.template.components).toBeUndefined();
255
271
  });
256
272
 
@@ -269,7 +285,11 @@ describe("compileWhatsappTemplate", () => {
269
285
  ],
270
286
  },
271
287
  });
272
- const payload = compileWhatsappTemplate(message, { booking_id: "abc" });
288
+ const payload = compileWhatsappTemplate(
289
+ message,
290
+ { booking_id: "abc" },
291
+ "en",
292
+ );
273
293
  expect(payload.template.components).toEqual([
274
294
  {
275
295
  type: "BUTTON",
@@ -110,11 +110,15 @@ function buildComponentParameters(
110
110
  *
111
111
  * @param message - The WhatsApp message template to compile
112
112
  * @param parameters - Key-value pairs for parameter injection (will be normalized to strings)
113
+ * @param languageCode - The code the template is registered under at Meta
114
+ * (`language.meta_language_code`), which is not always the composer's own
115
+ * language id: `zh` is `zh_CN`, `pt` is `pt_PT`, `no` is `nb`, `tl` is `fil`.
113
116
  * @returns WhatsApp Cloud API send payload (without 'to' field)
114
117
  */
115
118
  export function compileWhatsappTemplate(
116
119
  message: WhatsappMessage,
117
120
  parameters: Record<string, unknown>,
121
+ languageCode: string,
118
122
  ): Omit<WhatsAppSendPayload, "to"> {
119
123
  // Normalize parameters to strings first
120
124
  const normalizedParams = normalizeParameters(parameters);
@@ -204,7 +208,7 @@ export function compileWhatsappTemplate(
204
208
  template: {
205
209
  name: templateName,
206
210
  language: {
207
- code: message.language_id,
211
+ code: languageCode,
208
212
  },
209
213
  components: components.length > 0 ? components : undefined,
210
214
  },