better-zap 25.0.1 → 25.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -10,3 +10,33 @@ Framework-agnostic Better Zap core.
10
10
  - logging primitives and message log store interfaces
11
11
  - transport-neutral webhook event and plugin contracts
12
12
  - link preview helpers: `firstLinkIn(text)` and `parseOpenGraph(html, pageUrl)` (fetching stays in your app; see the [link previews guide](https://github.com/Dosbodoke/better-zap/blob/main/landing/content/docs/guides/link-previews.mdx))
13
+ - `MediaStore` interface for keeping incoming media past Meta's 7-day expiry, and an S3-compatible adapter at `better-zap/s3` (`createS3MediaStore`, for R2, AWS S3, MinIO and B2; see the [media storage guide](https://github.com/Dosbodoke/better-zap/blob/main/landing/content/docs/guides/media-storage.mdx))
14
+
15
+ ## Coexistence onboarding
16
+
17
+ `launchCoexistenceEmbeddedSignup()` waits for both halves of an Embedded Signup
18
+ completion: the `FB.login` code and the `WA_EMBEDDED_SIGNUP` session event.
19
+ They can arrive in either order. `controller.result` settles once with a
20
+ `status`:
21
+
22
+ | Status | Meaning |
23
+ | --- | --- |
24
+ | `completed` | FINISH event and code both arrived. |
25
+ | `finished_without_code` | FINISH arrived without a code. Meta sends the code only when the customer clicks Finish. |
26
+ | `missing_session` | A code arrived but no terminal event did within `joinTimeoutMs`. This is not a confirmed onboarding. |
27
+ | `cancelled` / `error` | The latest terminal event was CANCEL / ERROR. |
28
+ | `no_authorization` | The login callback had no code and no event arrived. |
29
+ | `torn_down` | `teardown()` ran first. |
30
+
31
+ Session events are accepted from `facebook.com` origins when they have no
32
+ `version` (Meta's documented shape) or `version: 3`. Other versions and
33
+ malformed data are ignored. `joinTimeoutMs` defaults to 5000. Codes expire after
34
+ about 30 seconds, so keep it short. `result` rejects only if `FB.login` throws.
35
+
36
+ `CoexistenceService.exchangeEmbeddedSignupCode()` sends `redirect_uri` only when
37
+ you pass `redirectUri`. Failures keep `error`, `errorCode`, `httpStatus` and the
38
+ raw `details` body. They also include `diagnostics`, a log-safe summary with
39
+ `kind`, HTTP status, Graph code, subcode, type, `fbtraceId` and `retryable`. It
40
+ never contains tokens, the app secret, the code, URLs or Meta's message text.
41
+ Log `diagnostics`, not `details`. A 200 response without an access token
42
+ returns `kind: "malformed_response"`.
@@ -1,3 +1,5 @@
1
+ import { d as MessageMedia, o as MediaDownloadOptions, s as MediaDownloadResult } from "./types-B9sxujNH.mjs";
2
+
1
3
  //#region src/types/whatsapp.types.d.ts
2
4
  /**
3
5
  * Meta WhatsApp Cloud API v25.0 Type Definitions
@@ -227,7 +229,7 @@ interface IncomingMessage {
227
229
  from: string;
228
230
  id: string;
229
231
  timestamp: string;
230
- type: "text" | "image" | "audio" | "video" | "document" | "location" | "contacts" | "interactive" | "button" | "reaction" | "sticker" | "unsupported" | (string & {});
232
+ type: "text" | "image" | "audio" | "video" | "document" | "location" | "contacts" | "interactive" | "button" | "reaction" | "sticker" | "unsupported" /** Coexistence history media with the content omitted. See `isMediaPlaceholder`. */ | "media_placeholder" | (string & {});
231
233
  text?: {
232
234
  body: string;
233
235
  };
@@ -237,6 +239,9 @@ interface IncomingMessage {
237
239
  document?: MediaMessage & {
238
240
  filename?: string;
239
241
  };
242
+ sticker?: MediaMessage & {
243
+ animated?: boolean;
244
+ };
240
245
  location?: {
241
246
  latitude: number;
242
247
  longitude: number;
@@ -391,7 +396,15 @@ type ConversationUpdateEvent = {
391
396
  conversationId: string;
392
397
  updates: Partial<ConversationSummary>;
393
398
  };
394
- type SyncEvent = NewMessageEvent | StatusUpdateEvent | ConversationUpdateEvent;
399
+ /**
400
+ * An existing message changed, e.g. a history media placeholder was replaced
401
+ * by the real media, or its media file was stored (`metadata.media`).
402
+ */
403
+ type MessageUpdateEvent = {
404
+ type: "MESSAGE_UPDATE";
405
+ message: WhatsAppLogRecord;
406
+ };
407
+ type SyncEvent = NewMessageEvent | StatusUpdateEvent | ConversationUpdateEvent | MessageUpdateEvent;
395
408
  //#endregion
396
409
  //#region src/logger.d.ts
397
410
  /**
@@ -501,6 +514,7 @@ declare class MessageLoggerService {
501
514
  private log;
502
515
  constructor(store: WhatsAppLogStore, log: Logger, notifier?: MessageLoggerNotifier | undefined);
503
516
  private notify;
517
+ private notifyNewMessage;
504
518
  getConversationById(conversationId: string): Promise<Conversation | null>;
505
519
  getConversationByPhone(phone: string): Promise<Conversation | null>;
506
520
  getConversations(): Promise<Conversation[]>;
@@ -551,18 +565,55 @@ declare class MessageLoggerService {
551
565
  * Log an imported WhatsApp message with an explicit direction and timestamp.
552
566
  * Used by coexistence history imports and app echo webhooks where the message
553
567
  * did not originate from the local send API call.
568
+ *
569
+ * Returns true only when a new row was created. See {@link importMessage}
570
+ * for the detailed result, including placeholder upgrades.
554
571
  */
555
- logImportedMessage(params: {
556
- phone: string;
557
- waMessageId: string;
558
- direction: WhatsAppDirection;
559
- content: string;
560
- sentAt: string;
561
- senderName?: string;
562
- messageType?: WhatsAppMessageType;
563
- metadata?: Record<string, unknown>;
564
- }): Promise<boolean>;
572
+ logImportedMessage(params: ImportMessageParams): Promise<boolean>;
573
+ /**
574
+ * Import a WhatsApp message, deduplicated by `waMessageId`.
575
+ *
576
+ * When a row with the same id already exists and still holds a history media
577
+ * placeholder (see {@link hasPendingMedia}), and the new message has real
578
+ * content, the stored content and metadata are replaced and a
579
+ * `MESSAGE_UPDATE` sync event is sent. A placeholder never overwrites real
580
+ * content.
581
+ *
582
+ * Relies on `createWhatsAppLog` returning the existing row with
583
+ * `created: false` for a known `waMessageId`.
584
+ */
585
+ importMessage(params: ImportMessageParams): Promise<ImportMessageResult>;
586
+ /**
587
+ * Save the result of a media download as `metadata.media` on a stored
588
+ * message and send a `MESSAGE_UPDATE` sync event.
589
+ *
590
+ * Only the `media` field is written; other metadata fields are kept. A
591
+ * stored file is never replaced by a failed or skipped result.
592
+ *
593
+ * Returns the updated record, or `null` when the message isn't stored or
594
+ * the update was skipped.
595
+ */
596
+ setMessageMedia(waMessageId: string, media: MessageMedia): Promise<WhatsAppLogRecord | null>;
597
+ /** Writes `updates` to a stored message and sends `MESSAGE_UPDATE`. */
598
+ private updateMessage;
599
+ private replaceMediaPlaceholder;
565
600
  }
601
+ type ImportMessageParams = {
602
+ phone: string;
603
+ waMessageId: string;
604
+ direction: WhatsAppDirection;
605
+ content: string;
606
+ sentAt: string;
607
+ senderName?: string;
608
+ messageType?: WhatsAppMessageType;
609
+ metadata?: Record<string, unknown>;
610
+ };
611
+ /**
612
+ * - `created`: a new row was stored.
613
+ * - `duplicate`: a row with this `waMessageId` already existed and was left as is.
614
+ * - `upgraded`: a stored media placeholder was replaced with the real media.
615
+ */
616
+ type ImportMessageResult = "created" | "duplicate" | "upgraded";
566
617
  //#endregion
567
618
  //#region src/services/whatsapp.service.d.ts
568
619
  interface OutgoingLoggingMetadata {
@@ -621,6 +672,17 @@ declare class WhatsAppService {
621
672
  * @see https://developers.facebook.com/docs/whatsapp/cloud-api/messages/reaction-messages
622
673
  */
623
674
  sendReaction(to: string, messageId: string, emoji: string): Promise<SendResult>;
675
+ /**
676
+ * Download a media file received in a webhook (image, audio, video,
677
+ * document or sticker), using the configured access token.
678
+ *
679
+ * Meta deletes webhook media after 7 days. Never throws: failures and files
680
+ * over `maxBytes` are returned as results. Runs in development mode too,
681
+ * since it sends nothing.
682
+ *
683
+ * @see https://developers.facebook.com/docs/whatsapp/cloud-api/reference/media
684
+ */
685
+ downloadMedia(mediaId: string, options?: MediaDownloadOptions): Promise<MediaDownloadResult>;
624
686
  /** Core send method with retry logic (2 retries, exponential backoff). */
625
687
  private send;
626
688
  private logSendResult;
@@ -847,4 +909,4 @@ interface ZapClient<TTemplates extends TemplateRegistry = {}> {
847
909
  }
848
910
  declare function createZapClient<TTemplates extends TemplateRegistry = {}>(options?: ZapClientOptions<TTemplates>): ZapClient<TTemplates>;
849
911
  //#endregion
850
- export { SendResult as $, LogLevel as A, SyncEvent as B, MessageLoggerService as C, WhatsAppLogStore as D, WhatsAppLogRecord as E, serializeError as F, IncomingMessage as G, Conversation as H, ConversationSummary as I, MessageError as J, InteractiveMediaCarouselCardInput as K, ConversationUpdateEvent as L, LoggerConfig as M, createLogger as N, WhatsAppMessageType as O, noopLogger as P, SendMessageResponse as Q, NewMessageEvent as R, MessageLoggerNotifier as S, WhatsAppDirection as T, ConversationRecord as U, WhatsAppConfig as V, FreeformMessageWindow as W, SendInteractiveMediaCarouselData as X, MessageStatus as Y, SendMessageError as Z, getTemplateNames as _, WhatsAppWebhookField as _t, createZapClient as a, WebhookContact as at, OutgoingLoggingMetadata as b, SupportedTemplateParameterType as c, WebhookPayload as ct, TemplateName as d, WhatsAppInteractiveButtonsMessage as dt, TemplateComponent as et, TemplateParameterDefinition as f, WhatsAppInteractiveListMessage as ft, defineTemplates as g, WhatsAppTextMessage as gt, TemplateRegistry as h, WhatsAppTemplateMessage as ht, apiKeyTransport as i, WebhookChange as it, Logger as j, WhatsAppStatus as k, TemplateComponentDefinition as l, WebhookValue as lt, TemplateParams as m, WhatsAppLocationMessage as mt, ZapClient as n, UIMessage as nt, sessionTransport as o, WebhookEntry as ot, TemplateParameterInputMap as p, WhatsAppInteractiveMediaCarouselMessage as pt, MediaMessage as q, ZapTransport as r, UIMessageStatus as rt, EMPTY_TEMPLATE_REGISTRY as s, WebhookError as st, BetterZapClientError as t, TemplateParameter as tt, TemplateDefinition as u, WhatsAppCarouselCard as ut, hasConfiguredTemplates as v, WHATSAPP_MESSAGE_TYPES as w, WhatsAppService as x, serializeTemplateFromRegistry as y, StatusUpdateEvent as z };
912
+ export { SendInteractiveMediaCarouselData as $, WhatsAppMessageType as A, MessageUpdateEvent as B, ImportMessageResult as C, WhatsAppDirection as D, WHATSAPP_MESSAGE_TYPES as E, createLogger as F, Conversation as G, StatusUpdateEvent as H, noopLogger as I, IncomingMessage as J, ConversationRecord as K, serializeError as L, LogLevel as M, Logger as N, WhatsAppLogRecord as O, LoggerConfig as P, MessageStatus as Q, ConversationSummary as R, ImportMessageParams as S, MessageLoggerService as T, SyncEvent as U, NewMessageEvent as V, WhatsAppConfig as W, MediaMessage as X, InteractiveMediaCarouselCardInput as Y, MessageError as Z, getTemplateNames as _, WhatsAppLocationMessage as _t, createZapClient as a, UIMessage as at, OutgoingLoggingMetadata as b, WhatsAppWebhookField as bt, SupportedTemplateParameterType as c, WebhookContact as ct, TemplateName as d, WebhookPayload as dt, SendMessageError as et, TemplateParameterDefinition as f, WebhookValue as ft, defineTemplates as g, WhatsAppInteractiveMediaCarouselMessage as gt, TemplateRegistry as h, WhatsAppInteractiveListMessage as ht, apiKeyTransport as i, TemplateParameter as it, WhatsAppStatus as j, WhatsAppLogStore as k, TemplateComponentDefinition as l, WebhookEntry as lt, TemplateParams as m, WhatsAppInteractiveButtonsMessage as mt, ZapClient as n, SendResult as nt, sessionTransport as o, UIMessageStatus as ot, TemplateParameterInputMap as p, WhatsAppCarouselCard as pt, FreeformMessageWindow as q, ZapTransport as r, TemplateComponent as rt, EMPTY_TEMPLATE_REGISTRY as s, WebhookChange as st, BetterZapClientError as t, SendMessageResponse as tt, TemplateDefinition as u, WebhookError as ut, hasConfiguredTemplates as v, WhatsAppTemplateMessage as vt, MessageLoggerNotifier as w, WhatsAppService as x, serializeTemplateFromRegistry as y, WhatsAppTextMessage as yt, ConversationUpdateEvent as z };
@@ -1,3 +1,5 @@
1
+ import { d as MessageMedia, o as MediaDownloadOptions, s as MediaDownloadResult } from "./types-C3niCOVI.cjs";
2
+
1
3
  //#region src/types/whatsapp.types.d.ts
2
4
  /**
3
5
  * Meta WhatsApp Cloud API v25.0 Type Definitions
@@ -227,7 +229,7 @@ interface IncomingMessage {
227
229
  from: string;
228
230
  id: string;
229
231
  timestamp: string;
230
- type: "text" | "image" | "audio" | "video" | "document" | "location" | "contacts" | "interactive" | "button" | "reaction" | "sticker" | "unsupported" | (string & {});
232
+ type: "text" | "image" | "audio" | "video" | "document" | "location" | "contacts" | "interactive" | "button" | "reaction" | "sticker" | "unsupported" /** Coexistence history media with the content omitted. See `isMediaPlaceholder`. */ | "media_placeholder" | (string & {});
231
233
  text?: {
232
234
  body: string;
233
235
  };
@@ -237,6 +239,9 @@ interface IncomingMessage {
237
239
  document?: MediaMessage & {
238
240
  filename?: string;
239
241
  };
242
+ sticker?: MediaMessage & {
243
+ animated?: boolean;
244
+ };
240
245
  location?: {
241
246
  latitude: number;
242
247
  longitude: number;
@@ -391,7 +396,15 @@ type ConversationUpdateEvent = {
391
396
  conversationId: string;
392
397
  updates: Partial<ConversationSummary>;
393
398
  };
394
- type SyncEvent = NewMessageEvent | StatusUpdateEvent | ConversationUpdateEvent;
399
+ /**
400
+ * An existing message changed, e.g. a history media placeholder was replaced
401
+ * by the real media, or its media file was stored (`metadata.media`).
402
+ */
403
+ type MessageUpdateEvent = {
404
+ type: "MESSAGE_UPDATE";
405
+ message: WhatsAppLogRecord;
406
+ };
407
+ type SyncEvent = NewMessageEvent | StatusUpdateEvent | ConversationUpdateEvent | MessageUpdateEvent;
395
408
  //#endregion
396
409
  //#region src/logger.d.ts
397
410
  /**
@@ -501,6 +514,7 @@ declare class MessageLoggerService {
501
514
  private log;
502
515
  constructor(store: WhatsAppLogStore, log: Logger, notifier?: MessageLoggerNotifier | undefined);
503
516
  private notify;
517
+ private notifyNewMessage;
504
518
  getConversationById(conversationId: string): Promise<Conversation | null>;
505
519
  getConversationByPhone(phone: string): Promise<Conversation | null>;
506
520
  getConversations(): Promise<Conversation[]>;
@@ -551,18 +565,55 @@ declare class MessageLoggerService {
551
565
  * Log an imported WhatsApp message with an explicit direction and timestamp.
552
566
  * Used by coexistence history imports and app echo webhooks where the message
553
567
  * did not originate from the local send API call.
568
+ *
569
+ * Returns true only when a new row was created. See {@link importMessage}
570
+ * for the detailed result, including placeholder upgrades.
554
571
  */
555
- logImportedMessage(params: {
556
- phone: string;
557
- waMessageId: string;
558
- direction: WhatsAppDirection;
559
- content: string;
560
- sentAt: string;
561
- senderName?: string;
562
- messageType?: WhatsAppMessageType;
563
- metadata?: Record<string, unknown>;
564
- }): Promise<boolean>;
572
+ logImportedMessage(params: ImportMessageParams): Promise<boolean>;
573
+ /**
574
+ * Import a WhatsApp message, deduplicated by `waMessageId`.
575
+ *
576
+ * When a row with the same id already exists and still holds a history media
577
+ * placeholder (see {@link hasPendingMedia}), and the new message has real
578
+ * content, the stored content and metadata are replaced and a
579
+ * `MESSAGE_UPDATE` sync event is sent. A placeholder never overwrites real
580
+ * content.
581
+ *
582
+ * Relies on `createWhatsAppLog` returning the existing row with
583
+ * `created: false` for a known `waMessageId`.
584
+ */
585
+ importMessage(params: ImportMessageParams): Promise<ImportMessageResult>;
586
+ /**
587
+ * Save the result of a media download as `metadata.media` on a stored
588
+ * message and send a `MESSAGE_UPDATE` sync event.
589
+ *
590
+ * Only the `media` field is written; other metadata fields are kept. A
591
+ * stored file is never replaced by a failed or skipped result.
592
+ *
593
+ * Returns the updated record, or `null` when the message isn't stored or
594
+ * the update was skipped.
595
+ */
596
+ setMessageMedia(waMessageId: string, media: MessageMedia): Promise<WhatsAppLogRecord | null>;
597
+ /** Writes `updates` to a stored message and sends `MESSAGE_UPDATE`. */
598
+ private updateMessage;
599
+ private replaceMediaPlaceholder;
565
600
  }
601
+ type ImportMessageParams = {
602
+ phone: string;
603
+ waMessageId: string;
604
+ direction: WhatsAppDirection;
605
+ content: string;
606
+ sentAt: string;
607
+ senderName?: string;
608
+ messageType?: WhatsAppMessageType;
609
+ metadata?: Record<string, unknown>;
610
+ };
611
+ /**
612
+ * - `created`: a new row was stored.
613
+ * - `duplicate`: a row with this `waMessageId` already existed and was left as is.
614
+ * - `upgraded`: a stored media placeholder was replaced with the real media.
615
+ */
616
+ type ImportMessageResult = "created" | "duplicate" | "upgraded";
566
617
  //#endregion
567
618
  //#region src/services/whatsapp.service.d.ts
568
619
  interface OutgoingLoggingMetadata {
@@ -621,6 +672,17 @@ declare class WhatsAppService {
621
672
  * @see https://developers.facebook.com/docs/whatsapp/cloud-api/messages/reaction-messages
622
673
  */
623
674
  sendReaction(to: string, messageId: string, emoji: string): Promise<SendResult>;
675
+ /**
676
+ * Download a media file received in a webhook (image, audio, video,
677
+ * document or sticker), using the configured access token.
678
+ *
679
+ * Meta deletes webhook media after 7 days. Never throws: failures and files
680
+ * over `maxBytes` are returned as results. Runs in development mode too,
681
+ * since it sends nothing.
682
+ *
683
+ * @see https://developers.facebook.com/docs/whatsapp/cloud-api/reference/media
684
+ */
685
+ downloadMedia(mediaId: string, options?: MediaDownloadOptions): Promise<MediaDownloadResult>;
624
686
  /** Core send method with retry logic (2 retries, exponential backoff). */
625
687
  private send;
626
688
  private logSendResult;
@@ -847,4 +909,4 @@ interface ZapClient<TTemplates extends TemplateRegistry = {}> {
847
909
  }
848
910
  declare function createZapClient<TTemplates extends TemplateRegistry = {}>(options?: ZapClientOptions<TTemplates>): ZapClient<TTemplates>;
849
911
  //#endregion
850
- export { SendResult as $, LogLevel as A, SyncEvent as B, MessageLoggerService as C, WhatsAppLogStore as D, WhatsAppLogRecord as E, serializeError as F, IncomingMessage as G, Conversation as H, ConversationSummary as I, MessageError as J, InteractiveMediaCarouselCardInput as K, ConversationUpdateEvent as L, LoggerConfig as M, createLogger as N, WhatsAppMessageType as O, noopLogger as P, SendMessageResponse as Q, NewMessageEvent as R, MessageLoggerNotifier as S, WhatsAppDirection as T, ConversationRecord as U, WhatsAppConfig as V, FreeformMessageWindow as W, SendInteractiveMediaCarouselData as X, MessageStatus as Y, SendMessageError as Z, getTemplateNames as _, WhatsAppWebhookField as _t, createZapClient as a, WebhookContact as at, OutgoingLoggingMetadata as b, SupportedTemplateParameterType as c, WebhookPayload as ct, TemplateName as d, WhatsAppInteractiveButtonsMessage as dt, TemplateComponent as et, TemplateParameterDefinition as f, WhatsAppInteractiveListMessage as ft, defineTemplates as g, WhatsAppTextMessage as gt, TemplateRegistry as h, WhatsAppTemplateMessage as ht, apiKeyTransport as i, WebhookChange as it, Logger as j, WhatsAppStatus as k, TemplateComponentDefinition as l, WebhookValue as lt, TemplateParams as m, WhatsAppLocationMessage as mt, ZapClient as n, UIMessage as nt, sessionTransport as o, WebhookEntry as ot, TemplateParameterInputMap as p, WhatsAppInteractiveMediaCarouselMessage as pt, MediaMessage as q, ZapTransport as r, UIMessageStatus as rt, EMPTY_TEMPLATE_REGISTRY as s, WebhookError as st, BetterZapClientError as t, TemplateParameter as tt, TemplateDefinition as u, WhatsAppCarouselCard as ut, hasConfiguredTemplates as v, WHATSAPP_MESSAGE_TYPES as w, WhatsAppService as x, serializeTemplateFromRegistry as y, StatusUpdateEvent as z };
912
+ export { SendInteractiveMediaCarouselData as $, WhatsAppMessageType as A, MessageUpdateEvent as B, ImportMessageResult as C, WhatsAppDirection as D, WHATSAPP_MESSAGE_TYPES as E, createLogger as F, Conversation as G, StatusUpdateEvent as H, noopLogger as I, IncomingMessage as J, ConversationRecord as K, serializeError as L, LogLevel as M, Logger as N, WhatsAppLogRecord as O, LoggerConfig as P, MessageStatus as Q, ConversationSummary as R, ImportMessageParams as S, MessageLoggerService as T, SyncEvent as U, NewMessageEvent as V, WhatsAppConfig as W, MediaMessage as X, InteractiveMediaCarouselCardInput as Y, MessageError as Z, getTemplateNames as _, WhatsAppLocationMessage as _t, createZapClient as a, UIMessage as at, OutgoingLoggingMetadata as b, WhatsAppWebhookField as bt, SupportedTemplateParameterType as c, WebhookContact as ct, TemplateName as d, WebhookPayload as dt, SendMessageError as et, TemplateParameterDefinition as f, WebhookValue as ft, defineTemplates as g, WhatsAppInteractiveMediaCarouselMessage as gt, TemplateRegistry as h, WhatsAppInteractiveListMessage as ht, apiKeyTransport as i, TemplateParameter as it, WhatsAppStatus as j, WhatsAppLogStore as k, TemplateComponentDefinition as l, WebhookEntry as lt, TemplateParams as m, WhatsAppInteractiveButtonsMessage as mt, ZapClient as n, SendResult as nt, sessionTransport as o, UIMessageStatus as ot, TemplateParameterInputMap as p, WhatsAppCarouselCard as pt, FreeformMessageWindow as q, ZapTransport as r, TemplateComponent as rt, EMPTY_TEMPLATE_REGISTRY as s, WebhookChange as st, BetterZapClientError as t, SendMessageResponse as tt, TemplateDefinition as u, WebhookError as ut, hasConfiguredTemplates as v, WhatsAppTemplateMessage as vt, MessageLoggerNotifier as w, WhatsAppService as x, serializeTemplateFromRegistry as y, WhatsAppTextMessage as yt, ConversationUpdateEvent as z };
package/dist/client.d.cts CHANGED
@@ -1,2 +1,2 @@
1
- import { a as createZapClient, i as apiKeyTransport, n as ZapClient, o as sessionTransport, r as ZapTransport, t as BetterZapClientError } from "./client-DNlBPLBd.cjs";
1
+ import { a as createZapClient, i as apiKeyTransport, n as ZapClient, o as sessionTransport, r as ZapTransport, t as BetterZapClientError } from "./client-B6XKmfej.cjs";
2
2
  export { BetterZapClientError, ZapClient, ZapTransport, apiKeyTransport, createZapClient, sessionTransport };
package/dist/client.d.mts CHANGED
@@ -1,2 +1,2 @@
1
- import { a as createZapClient, i as apiKeyTransport, n as ZapClient, o as sessionTransport, r as ZapTransport, t as BetterZapClientError } from "./client-DiHHMG8t.mjs";
1
+ import { a as createZapClient, i as apiKeyTransport, n as ZapClient, o as sessionTransport, r as ZapTransport, t as BetterZapClientError } from "./client-B49AT0HF.mjs";
2
2
  export { BetterZapClientError, ZapClient, ZapTransport, apiKeyTransport, createZapClient, sessionTransport };