meta-cloud-api 3.10.3 → 3.11.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.
@@ -485,6 +485,157 @@ declare class Logger implements LoggerInterface {
485
485
  debug(...data: any[]): void;
486
486
  }
487
487
  //#endregion
488
+ //#region src/core/webhook/types/common.d.ts
489
+ /**
490
+ * Error object structure
491
+ */
492
+ interface WebhookError {
493
+ code: number;
494
+ title: string;
495
+ message: string;
496
+ error_data?: {
497
+ details: string;
498
+ };
499
+ href?: string;
500
+ }
501
+ //#endregion
502
+ //#region src/core/webhook/types/status.d.ts
503
+ interface StatusWebhook {
504
+ id: string;
505
+ status: 'sent' | 'delivered' | 'read' | 'failed';
506
+ timestamp: string;
507
+ recipient_id: string;
508
+ recipient_type?: 'group';
509
+ recipient_participant_id?: string;
510
+ recipient_identity_key_hash?: string;
511
+ biz_opaque_callback_data?: string;
512
+ /**
513
+ * ID of the template used to send a Direct Send message.
514
+ * Present only on statuses for messages sent with a `category` field.
515
+ *
516
+ * @see {@link https://developers.facebook.com/documentation/business-messaging/whatsapp/direct-send/supported-message-types | Direct Send}
517
+ */
518
+ template_id?: string;
519
+ conversation?: {
520
+ id: string;
521
+ expiration_timestamp?: string;
522
+ origin: {
523
+ type: 'authentication' | 'authentication_international' | 'marketing' | 'marketing_lite' | 'referral_conversion' | 'service' | 'utility';
524
+ };
525
+ };
526
+ pricing?: {
527
+ /**
528
+ * Whether the message is billable.
529
+ *
530
+ * Meta will deprecate this property in a future versioned release; use
531
+ * `type` and `category` together to decide whether a message is billable
532
+ * and, if so, at which rate.
533
+ */
534
+ billable: boolean; /** `CBP` only appears on webhooks sent before July 1, 2025. */
535
+ pricing_model: 'CBP' | 'PMP';
536
+ /**
537
+ * Pricing type. Semantics change with the October 1, 2026 service and
538
+ * utility pricing update (documented September 10, 2026):
539
+ * - `regular` — billable. From October 1, 2026 this also covers 1:1
540
+ * utility messages sent inside an open customer service window, group
541
+ * utility messages inside an open group customer service window, and
542
+ * 1:1 and group service messages sent after the business phone
543
+ * number's free tier is used up.
544
+ * - `free_customer_service` — through September 30, 2026, a utility
545
+ * template or non-template message sent inside a customer service
546
+ * window; from October 1, 2026, a 1:1 service delivery inside the
547
+ * business phone number's free tier.
548
+ * - `free_entry_point` — message sent inside an open free entry point
549
+ * window. Since September 28, 2026 the window may stay open for up to
550
+ * 7 days (previously 72 hours).
551
+ * - `free_group_customer_service` — through September 30, 2026, a group
552
+ * utility or non-template message delivered inside an open group
553
+ * customer service window; from October 1, 2026, a group service
554
+ * delivery inside the business phone number's free tier.
555
+ *
556
+ * From October 1, 2026 reaction messages are the only service message
557
+ * type that is never charged and do not count toward the free tier, and
558
+ * eligible governments and non-profits keep service messages free beyond
559
+ * the tier through December 31, 2027. Those exempt deliveries keep
560
+ * `free_customer_service` / `free_group_customer_service` here and are
561
+ * identified by `subtype: 'paid_exempt'`, not by this value.
562
+ */
563
+ type: 'regular' | 'free_customer_service' | 'free_entry_point' | 'free_group_customer_service';
564
+ /**
565
+ * Pricing subtype (added October 12, 2026). Only included for service
566
+ * messages that are free because the organization is eligible for the
567
+ * pricing policy for eligible governments and non-profits:
568
+ * - `paid_exempt` — the service message is free under that policy.
569
+ *
570
+ * Absent on every other status, including ordinary free-tier service
571
+ * deliveries.
572
+ *
573
+ * @see {@link https://developers.facebook.com/documentation/business-messaging/whatsapp/pricing#service-pricing-policy-for-eligible-governments-and-non-profits | Pricing policy for eligible governments and non-profits}
574
+ */
575
+ subtype?: 'paid_exempt';
576
+ /**
577
+ * Pricing category (rate) applied if billable.
578
+ *
579
+ * Note the hyphen in `authentication-international`: Meta documents the
580
+ * pricing category with a hyphen, unlike the `conversation.origin.type`
581
+ * value `authentication_international`. The underscored spelling is kept
582
+ * for payloads that still use it.
583
+ */
584
+ category: 'authentication' | 'authentication-international' | 'authentication_international' | 'group_marketing' | 'group_service' | 'group_utility' | 'marketing' | 'marketing_lite' | 'referral_conversion' | 'service' | 'utility';
585
+ };
586
+ errors?: Array<WebhookError>;
587
+ }
588
+ //#endregion
589
+ //#region src/utils/messageStatus.d.ts
590
+ /** Status reported by a message status webhook (`statuses[].status`). */
591
+ type MessageDeliveryStatus = StatusWebhook['status'];
592
+ /**
593
+ * Orders two message statuses by delivery progress: `sent` < `failed` < `delivered` < `read`.
594
+ * Statuses the SDK does not know rank below `sent`.
595
+ *
596
+ * Returns a negative number when `a` is earlier than `b`, a positive number when it is later, and
597
+ * `0` when they are at the same stage. Usable as an `Array.prototype.sort` comparator.
598
+ *
599
+ * @example
600
+ * ```ts
601
+ * compareMessageStatus('delivered', 'read'); // < 0
602
+ * ```
603
+ */
604
+ declare function compareMessageStatus(a: MessageDeliveryStatus | (string & {}), b: MessageDeliveryStatus | (string & {})): number;
605
+ /**
606
+ * Whether storing `incoming` over `current` moves the message forward. True when nothing is stored
607
+ * yet; false for a repeat of the same status or a late, earlier one.
608
+ *
609
+ * Use it to skip the database write for a stale webhook.
610
+ */
611
+ declare function isMessageStatusAdvance(current: MessageDeliveryStatus | (string & {}) | null | undefined, incoming: MessageDeliveryStatus | (string & {})): boolean;
612
+ /**
613
+ * Returns the status to store when a status webhook arrives for a message whose stored status is
614
+ * `current`. The result never moves backwards.
615
+ *
616
+ * Meta does not guarantee the order of status webhooks. `sent`, `delivered` and `read` for the same
617
+ * message often arrive within a second of each other, and `read` can arrive before `delivered`.
618
+ * Writing every webhook as it comes turns a read message back into a delivered one (grey ticks
619
+ * instead of blue). Resolve each update through this function instead:
620
+ *
621
+ * - `sent` → `read` → `delivered` resolves to `read`
622
+ * - `sent` → `failed` resolves to `failed`; `read` → `failed` stays `read`
623
+ * - with no stored status (`null`/`undefined`), the incoming status is taken as-is
624
+ * - an unknown incoming status never replaces a known one
625
+ *
626
+ * @example
627
+ * ```ts
628
+ * handler.processor.onStatus(async (_whatsapp, { status }) => {
629
+ * const row = await db.messages.find(status.id);
630
+ * const next = resolveMessageStatus(row?.status, status.status);
631
+ * if (next !== row?.status) await db.messages.update(status.id, { status: next });
632
+ * });
633
+ * ```
634
+ *
635
+ * @see {@link https://developers.facebook.com/documentation/business-messaging/whatsapp/webhooks/reference/messages/status/ | Status messages webhook reference}
636
+ */
637
+ declare function resolveMessageStatus<T extends MessageDeliveryStatus | (string & {})>(current: T | null | undefined, incoming: T): T;
638
+ //#endregion
488
639
  //#region src/utils/objectToQueryString.d.ts
489
640
  declare const objectToQueryString: (params: Record<string, any>) => string;
490
641
  //#endregion
@@ -678,5 +829,5 @@ declare function isFlowErrorRequest(request: FlowEndpointRequest): request is Fl
678
829
  */
679
830
  declare function isFlowPingRequest(request: FlowEndpointRequest): request is FlowHealthCheckRequest;
680
831
  //#endregion
681
- export { AUTHORIZATION_ERROR_CODES, type ApiPermissionErrorCode, BLOCK_USER_ERROR_CODES, type BusinessUseCaseUsage, CALLING_ERROR_CODES, CUSTOMER_SERVICE_WINDOW_MS, type CustomerServiceWindowOptions, type DecryptedFlowRequest, type EncryptionKeyPair, FLOW_ERROR_CODES, FREE_ENTRY_POINT_WINDOW_MS, type FreeEntryPointWindowOptions, GROUP_ERROR_CODES, INTEGRITY_ERROR_CODES, Logger, MAX_FREE_ENTRY_POINT_WINDOW_MS, type MessagingWindow, type MetaError, type MetaErrorData, type RateLimitHeadersInput, type RateLimitInfo, type RateLimitUsage, SEND_MESSAGE_ERROR_CODES, THROTTLING_ERROR_CODES, WHATSAPP_ERROR_CODES, WhatsAppApiError, WhatsAppAuthorizationError, WhatsAppBlockUserError, WhatsAppCallingError, WhatsAppError, type WhatsAppErrorCode, WhatsAppFlowError, WhatsAppGroupError, WhatsAppIntegrityError, WhatsAppNetworkError, WhatsAppSendMessageError, WhatsAppThrottlingError, WhatsAppUnknownError, WhatsAppValidationError, type WindowTimestamp, buildFieldsQueryString, canSendFreeformMessage, createWhatsAppApiError, decryptFlowRequest, decryptFlowRequestAsync, encryptFlowResponse, encryptFlowResponseAsync, formatConfigTable, generateEncryption, getCustomerServiceWindow, getFreeEntryPointWindow, isApiPermissionErrorCode, isAuthorizationErrorCode, isBlockUserErrorCode, isCallingErrorCode, isFlowDataExchangeRequest, isFlowErrorCode, isFlowErrorRequest, isFlowPingRequest, isGroupErrorCode, isIntegrityErrorCode, isMetaError, isSendMessageErrorCode, isThrottlingErrorCode, isWhatsAppApiErrorResponse, isWhatsAppAuthorizationError, isWhatsAppBlockUserError, isWhatsAppCallingError, isWhatsAppErrorCode, isWhatsAppFlowError, isWhatsAppGroupError, isWhatsAppIntegrityError, isWhatsAppSendMessageError, isWhatsAppThrottlingError, normalizeMetaError, objectToQueryString, parseRateLimitHeaders, parseRetryAfter };
832
+ export { AUTHORIZATION_ERROR_CODES, type ApiPermissionErrorCode, BLOCK_USER_ERROR_CODES, type BusinessUseCaseUsage, CALLING_ERROR_CODES, CUSTOMER_SERVICE_WINDOW_MS, type CustomerServiceWindowOptions, type DecryptedFlowRequest, type EncryptionKeyPair, FLOW_ERROR_CODES, FREE_ENTRY_POINT_WINDOW_MS, type FreeEntryPointWindowOptions, GROUP_ERROR_CODES, INTEGRITY_ERROR_CODES, Logger, MAX_FREE_ENTRY_POINT_WINDOW_MS, type MessageDeliveryStatus, type MessagingWindow, type MetaError, type MetaErrorData, type RateLimitHeadersInput, type RateLimitInfo, type RateLimitUsage, SEND_MESSAGE_ERROR_CODES, THROTTLING_ERROR_CODES, WHATSAPP_ERROR_CODES, WhatsAppApiError, WhatsAppAuthorizationError, WhatsAppBlockUserError, WhatsAppCallingError, WhatsAppError, type WhatsAppErrorCode, WhatsAppFlowError, WhatsAppGroupError, WhatsAppIntegrityError, WhatsAppNetworkError, WhatsAppSendMessageError, WhatsAppThrottlingError, WhatsAppUnknownError, WhatsAppValidationError, type WindowTimestamp, buildFieldsQueryString, canSendFreeformMessage, compareMessageStatus, createWhatsAppApiError, decryptFlowRequest, decryptFlowRequestAsync, encryptFlowResponse, encryptFlowResponseAsync, formatConfigTable, generateEncryption, getCustomerServiceWindow, getFreeEntryPointWindow, isApiPermissionErrorCode, isAuthorizationErrorCode, isBlockUserErrorCode, isCallingErrorCode, isFlowDataExchangeRequest, isFlowErrorCode, isFlowErrorRequest, isFlowPingRequest, isGroupErrorCode, isIntegrityErrorCode, isMessageStatusAdvance, isMetaError, isSendMessageErrorCode, isThrottlingErrorCode, isWhatsAppApiErrorResponse, isWhatsAppAuthorizationError, isWhatsAppBlockUserError, isWhatsAppCallingError, isWhatsAppErrorCode, isWhatsAppFlowError, isWhatsAppGroupError, isWhatsAppIntegrityError, isWhatsAppSendMessageError, isWhatsAppThrottlingError, normalizeMetaError, objectToQueryString, parseRateLimitHeaders, parseRetryAfter, resolveMessageStatus };
682
833
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","names":[],"sources":["../../../src/utils/buildFieldsQueryString.ts","../../../src/utils/rateLimit.ts","../../../src/types/enums.ts","../../../src/types/config.ts","../../../src/utils/configTable.ts","../../../src/utils/customerServiceWindow.ts","../../../src/utils/isMetaError.ts","../../../src/types/logger.ts","../../../src/utils/logger.ts","../../../src/utils/objectToQueryString.ts","../../../src/api/flow/types/common.ts","../../../src/utils/flowEncryptionUtils.ts","../../../src/utils/flowTypeGuards.ts"],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","names":[],"sources":["../../../src/utils/buildFieldsQueryString.ts","../../../src/utils/rateLimit.ts","../../../src/types/enums.ts","../../../src/types/config.ts","../../../src/utils/configTable.ts","../../../src/utils/customerServiceWindow.ts","../../../src/utils/isMetaError.ts","../../../src/types/logger.ts","../../../src/utils/logger.ts","../../../src/core/webhook/types/common.ts","../../../src/core/webhook/types/status.ts","../../../src/utils/messageStatus.ts","../../../src/utils/objectToQueryString.ts","../../../src/api/flow/types/common.ts","../../../src/utils/flowEncryptionUtils.ts","../../../src/utils/flowTypeGuards.ts"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import*as e from"node:crypto";function t(e){if(!e)return``;let t=``;return t=Array.isArray(e)?e.join(`,`):typeof e==`string`?e:Object.entries(e).filter(([e,t])=>t).map(([e])=>e).join(`,`),t?`?fields=${t}`:``}function n(e){let t=[[`App ID`,e.M4D_APP_ID||`Not Set`],[`Phone Number ID`,e.WA_PHONE_NUMBER_ID?.toString()||`Not Set`],[`Business Account ID`,e.WA_BUSINESS_ACCOUNT_ID||`Not Set`],[`API Version`,e.CLOUD_API_VERSION||`Not Set`],[`Access Token`,e.CLOUD_API_ACCESS_TOKEN?`${e.CLOUD_API_ACCESS_TOKEN.substring(0,20)}...`:`Not Set`],[`Webhook Endpoint`,e.WEBHOOK_ENDPOINT||`Not Set`],[`Webhook Verification Token`,e.WEBHOOK_VERIFICATION_TOKEN?`${e.WEBHOOK_VERIFICATION_TOKEN.substring(0,10)}...`:`Not Set`],[`Listener Port`,e.LISTENER_PORT?.toString()||`Not Set`],[`Debug Mode`,e.DEBUG?`Enabled`:`Disabled`],[`Max Retries`,e.MAX_RETRIES_AFTER_WAIT?.toString()||`Not Set`],[`Request Timeout`,e.REQUEST_TIMEOUT?`${e.REQUEST_TIMEOUT}ms`:`Not Set`],[`Private PEM`,e.FLOW_API_PRIVATE_PEM?`Configured`:`Not Set`],[`Passphrase`,e.FLOW_API_PASSPHRASE?`Configured`:`Not Set`]],n=Math.max(...t.map(([e])=>e?.length||0)),r=Math.max(...t.map(([,e])=>e?.length||0)),i=Math.max(n,20),a=Math.max(r,30),o=`┌${`─`.repeat(i+2)}┬${`─`.repeat(a+2)}┐`,s=`├${`─`.repeat(i+2)}┼${`─`.repeat(a+2)}┤`,c=`└${`─`.repeat(i+2)}┴${`─`.repeat(a+2)}┘`;return[o,`│ ${`Configuration`.padEnd(i)} │ ${`Value`.padEnd(a)} │`,s,...t.map(([e,t])=>`│ ${e?.padEnd(i)} │ ${t?.padEnd(a)} │`),c].join(`
2
- `)}const r=[0,1,2,3,4,10,33,100,190,200,299,368,613,80007,130429,130472,130497,131e3,131005,131008,131009,131016,131020,131021,131026,131030,131031,131037,131041,131042,131044,131045,131047,131048,131049,131050,131051,131052,131053,131055,131056,131057,131059,131061,131062,131063,131065,131070,131201,131202,131203,131204,131207,131208,131209,131210,131211,131212,131213,131214,131215,132e3,132001,132005,132007,132008,132012,132015,132016,132068,132069,133e3,133004,133005,133006,133008,133009,133010,133015,133016,134011,134100,134101,134102,135e3,137e3,138e3,138001,138002,138003,138004,138005,138006,138007,138009,138012,138013,138018,138038,139e3,139001,139002,139003,139004,139100,139101,139102,139103,147005,200005,200006,200007,1752041,2388001,2388012,2388019,2388040,2388047,2388072,2388073,2388091,2388093,2388103,2388293,2388299,2494100,2494191,2593079,2593085,2593107,2593108],i=new Set(r),a=[0,3,10,190],o=[4,80007,130429,131048,131056],s=[368,130497,131031],c=[130472,131e3,131005,131008,131009,131016,131021,131026,131030,131042,131044,131045,131047,131050,131051,131052,131053,131056,131057,131048,131061,131062,131063,131065,131070,132e3,132001,132005,132007,132008,132012,132015,132016,132068,132069,135e3,137e3],l=[139e3,139001,139002,139003,139004],u=[139100,139101,139102,139103],d=[138e3,138001,138002,138003,138004,138005,138006,138007,138009,138012,138013,138018,138038,613],f=[131020,131041,131059,131201,131202,131203,131204,131207,131208,131209,131210,131211,131212,131213,131214,131215],p=new Set(a),m=new Set(o),h=new Set(s),g=new Set(c),_=new Set(l),ee=new Set(u),te=new Set(d),ne=new Set(f);function v(e){return y(e)?!0:i.has(e)}function y(e){return e>=200&&e<300}function re(e){return y(e)||p.has(e)}function ie(e){return m.has(e)}function ae(e){return h.has(e)}function oe(e){return g.has(e)}function se(e){return _.has(e)}function ce(e){return ee.has(e)}function b(e){return te.has(e)}function x(e){return ne.has(e)}var S=class extends Error{constructor(e){super(e),this.name=`WhatsAppError`}},C=class extends S{error;statusCode;rateLimit;constructor(e,t,n){super(e),this.name=`WhatsAppApiError`,this.error=t,this.statusCode=n}},w=class extends C{constructor(e,t,n){super(e,t,n),this.name=`WhatsAppAuthorizationError`}},T=class extends C{constructor(e,t,n){super(e,t,n),this.name=`WhatsAppThrottlingError`}},E=class extends C{constructor(e,t,n){super(e,t,n),this.name=`WhatsAppIntegrityError`}},D=class extends C{constructor(e,t,n){super(e,t,n),this.name=`WhatsAppSendMessageError`}},O=class extends C{constructor(e,t,n){super(e,t,n),this.name=`WhatsAppFlowError`}},k=class extends C{constructor(e,t,n){super(e,t,n),this.name=`WhatsAppBlockUserError`}},A=class extends C{constructor(e,t,n){super(e,t,n),this.name=`WhatsAppCallingError`}},j=class extends C{constructor(e,t,n){super(e,t,n),this.name=`WhatsAppGroupError`}};function le(e,t){let n=e.code;return re(n)?new w(e.message,e,t):ie(n)?new T(e.message,e,t):ae(n)?new E(e.message,e,t):oe(n)?new D(e.message,e,t):se(n)?new O(e.message,e,t):ce(n)?new k(e.message,e,t):b(n)?new A(e.message,e,t):x(n)?new j(e.message,e,t):new C(e.message,e,t)}var ue=class extends S{cause;constructor(e,t){super(e),this.name=`WhatsAppNetworkError`,this.cause=t}},de=class extends S{cause;constructor(e,t){super(e),this.name=`WhatsAppUnknownError`,this.cause=t}},M=class extends Error{constructor(e){super(e),this.name=`WhatsAppValidationError`}};function N(e){if(typeof e!=`object`||!e||!(`error`in e)||typeof e.error!=`object`||e.error==null)return!1;let t=e.error;if(typeof t.message!=`string`||typeof t.type!=`string`||typeof t.code!=`number`||typeof t.fbtrace_id!=`string`)return!1;if(`error_data`in t&&t.error_data!=null){if(typeof t.error_data!=`object`)return!1;let e=t.error_data;if(`messaging_product`in e&&e.messaging_product!==`whatsapp`||`details`in e&&typeof e.details!=`string`)return!1}return!(`error_subcode`in t&&typeof t.error_subcode!=`number`)}function fe(e){return N(e)&&v(e.error.code)}function pe(e){return e instanceof w}function me(e){return e instanceof T}function he(e){return e instanceof E}function ge(e){return e instanceof D}function _e(e){return e instanceof O}function ve(e){return e instanceof k}function ye(e){return e instanceof A}function be(e){return e instanceof j}function xe(e,t){if(N(e))return e;let n=`Unknown error occurred`;if(e&&typeof e==`object`&&`message`in e){let t=e.message;typeof t==`string`&&(n=t)}return{name:`MetaError`,message:n,error:{message:n,type:`UnknownError`,code:typeof t==`number`?t:500,fbtrace_id:``}}}const P=3600*1e3,Se=24*P,Ce=72*P,we=168*P,Te=1e11;function F(e,t){let n;if(e instanceof Date)n=e.getTime();else if(typeof e==`number`)n=Math.abs(e)<Te?e*1e3:e;else if(typeof e==`string`){let t=e.trim();if(/^\d+(\.\d+)?$/.test(t)){let e=Number(t);n=e<Te?e*1e3:e}else n=t===``?NaN:Date.parse(t)}else n=NaN;if(!Number.isFinite(n)||!Number.isFinite(new Date(n).getTime()))throw new M(`${t} is not a valid timestamp: ${String(e)}`);return n}function I(e,t,n){if(e===void 0)return n;if(typeof e!=`number`||!Number.isFinite(e)||e<0)throw new M(`${t} must be a non-negative number of milliseconds`);return e}function L(e,t,n,r){if(!Number.isFinite(new Date(t).getTime()))throw new M(`Window expiry is outside the supported timestamp range`);let i=Math.max(0,t-e),a=t-r,o=Math.min(Math.max(0,a-n),i);return{isOpen:o>0,expiresAt:new Date(t),remainingMs:o}}const R=Object.freeze({isOpen:!1,expiresAt:null,remainingMs:0});function z(e,t={}){let n=I(t.safetyMarginMs,`safetyMarginMs`,0),r=t.now===void 0?Date.now():F(t.now,`now`);if(e==null)return{...R};let i=F(e,`lastInboundAt`);return L(i,i+Se,r,n)}function Ee(e,t={}){return z(e,t).isOpen}function De(e,t={}){let n=I(t.safetyMarginMs,`safetyMarginMs`,0),r=I(t.durationMs,`durationMs`,Ce),i=t.now===void 0?Date.now():F(t.now,`now`);if(e==null)return{...R};let a=F(e,`openedAt`);return L(a,t.expiresAt===void 0?a+r:F(t.expiresAt,`expiresAt`),i,n)}var B=class{name;debugEnabled;constructor(e,t=!1){this.name=e,this.debugEnabled=t}formatData(e){return e.map(e=>typeof e==`object`&&e?Oe(e):e).join(` `)}log(...e){if(this.debugEnabled){let t=`[ ${Date.now()} ]`;this.name&&(t+=` - ${this.name}`),console.log(t,`: `,this.formatData(e))}}error(...e){let t=`[ ${Date.now()} ] - ERROR`;this.name&&(t+=` - ${this.name}`),console.error(t,`: `,this.formatData(e))}warn(...e){if(this.debugEnabled){let t=`[ ${Date.now()} ] - WARN`;this.name&&(t+=` - ${this.name}`),console.warn(t,`: `,this.formatData(e))}}info(...e){if(this.debugEnabled){let t=`[ ${Date.now()} ] - INFO`;this.name&&(t+=` - ${this.name}`),console.info(t,`: `,this.formatData(e))}}debug(...e){if(this.debugEnabled){let t=`[ ${Date.now()} ] - DEBUG`;this.name&&(t+=` - ${this.name}`),console.debug(t,`: `,this.formatData(e))}}};function Oe(e){if(e instanceof Error)return e.stack||`${e.name}: ${e.message}`;let t=new WeakSet;try{return JSON.stringify(e,(e,n)=>{if(n instanceof Error)return{name:n.name,message:n.message,stack:n.stack};if(typeof n==`bigint`)return n.toString();if(typeof n==`object`&&n){if(t.has(n))return`[Circular]`;t.add(n)}return n},2)}catch{return String(e)}}const ke=e=>{if(!e||Object.keys(e).length===0)return``;let t=[];for(let[n,r]of Object.entries(e))if(r!==void 0){let e=encodeURIComponent(n),i=encodeURIComponent(String(r));t.push(`${e}=${i}`)}return t.length>0?`?${t.join(`&`)}`:``};function V(e,t){if(typeof e.get==`function`)return e.get(t)??void 0;let n=e,r=Object.keys(n).find(e=>e.toLowerCase()===t);if(r===void 0)return;let i=n[r];return Array.isArray(i)?i[0]:i}function H(e){if(!(e===void 0||e.trim()===``))try{return JSON.parse(e)}catch{return}}function U(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function W(e){if(typeof e==`number`&&Number.isFinite(e))return e;if(typeof e==`string`&&e.trim()!==``&&Number.isFinite(Number(e)))return Number(e)}function G(e){return typeof e==`string`?e:void 0}function Ae(e){let t={},n=W(e.call_count),r=W(e.total_cputime),i=W(e.total_time);return n!==void 0&&(t.callCount=n),r!==void 0&&(t.totalCputime=r),i!==void 0&&(t.totalTime=i),t}function je(e){if(!U(e))return[];let t=[];for(let[n,r]of Object.entries(e))if(Array.isArray(r))for(let e of r){if(!U(e))continue;let r={businessId:n,...Ae(e)},i=G(e.type),a=W(e.estimated_time_to_regain_access),o=G(e.ads_api_access_tier);i!==void 0&&(r.type=i),a!==void 0&&(r.estimatedTimeToRegainAccessMinutes=a),o!==void 0&&(r.adsApiAccessTier=o),t.push(r)}return t}function Me(e,t=Date.now()){if(e==null)return;let n=e.trim();if(n===``)return;if(/^\d+(\.\d+)?$/.test(n))return Math.round(Number(n)*1e3);if(!/[a-z]/i.test(n))return;let r=Date.parse(n);if(Number.isFinite(r))return Math.max(0,r-t)}function Ne(e){if(!e)return;let t=V(e,`x-app-usage`),n=V(e,`x-business-use-case-usage`),r=V(e,`retry-after`);if(t===void 0&&n===void 0&&r===void 0)return;let i={businessUseCaseUsage:[]},a=H(t);U(a)&&(i.appUsage=Ae(a)),i.businessUseCaseUsage=je(H(n));let o=Me(r);o!==void 0&&(i.retryAfterMs=o);let s=[...i.appUsage?[i.appUsage]:[],...i.businessUseCaseUsage].flatMap(e=>[e.callCount,e.totalCputime,e.totalTime].filter(e=>e!==void 0));s.length>0&&(i.maxUsagePercent=Math.max(...s));let c=[...o===void 0?[]:[o],...i.businessUseCaseUsage.map(e=>e.estimatedTimeToRegainAccessMinutes).filter(e=>e!==void 0&&e>0).map(e=>e*6e4)];return c.length>0&&(i.retryDelayMs=Math.max(...c)),i}const Pe=e;function K(){let e=globalThis.process;return typeof e==`object`&&e?e:void 0}function Fe(e){return K()?.env?.[e]}function Ie(){return Fe(`DEBUG`)===`true`}function q(){let e=K()?.getBuiltinModule;if(typeof e!=`function`)return K()?Pe:void 0;try{return e(`node:crypto`)}catch{return}}function J(e){let t=q();if(!t)throw Error(`${e} needs the node:crypto module, which is not available in this runtime. Use the async Web Crypto variant instead, or run on Node.js >= 20.12, Bun or Deno.`);return t}function Y(){let e=globalThis.crypto?.subtle;if(!e)throw Error(`Web Crypto (globalThis.crypto.subtle) is not available in this runtime.`);return e}const Le=new TextEncoder,Re=new TextDecoder;function ze(e){return Le.encode(e)}function Be(e){return Re.decode(e)}function X(e){let t=atob(e),n=new Uint8Array(t.length);for(let e=0;e<t.length;e++)n[e]=t.charCodeAt(e);return n}function Ve(e){let t=``,n=32768;for(let r=0;r<e.length;r+=n)t+=String.fromCharCode(...e.subarray(r,r+n));return btoa(t)}const Z=new B(`FLOW_ENCRYPTION_UTILS`,Ie());function He(){let e=q();if(!e||typeof e.generateKeyPairSync!=`function`){let e=Error(`This utility requires Node.js environment with crypto module. It cannot be used in browser or edge runtime environments.`);throw Z.error(`Environment validation failed:`,e),e}if(typeof window<`u`){let e=Error(`This utility cannot run in a browser environment. Please use it in a Node.js server environment only.`);throw Z.error(`Browser environment detected:`,e),e}let t=globalThis.process?.versions?.node;if(t){let e=t.split(`.`).map(Number),n=e[0]??0,r=e[1]??0;if(n<10||n===10&&r<12){let e=Error(`Node.js version ${t} is not supported. Please upgrade to Node.js 10.12.0 or higher.`);throw Z.error(`Node.js version check failed:`,e),e}}return e}function Ue(e){Z.info(`[generateEncryption] Starting key pair generation`);let t=He(),n=e||Fe(`FLOW_API_PASSPHRASE`);if(!n||n.trim().length===0){let e=Error(`Passphrase is empty. Please provide a passphrase as parameter or set FLOW_API_PASSPHRASE environment variable.`);throw Z.error(`[generateEncryption] Passphrase validation failed:`,e),e}n.length<8&&Z.warn(`[generateEncryption] Passphrase is shorter than 8 characters. Consider using a longer passphrase for better security.`);try{Z.info(`[generateEncryption] Generating 2048-bit RSA key pair`);let e=t.generateKeyPairSync(`rsa`,{modulusLength:2048,publicKeyEncoding:{type:`spki`,format:`pem`},privateKeyEncoding:{type:`pkcs8`,format:`pem`,cipher:`aes-256-cbc`,passphrase:n}});return Z.info(`[generateEncryption] Key pair generated successfully`),{passphrase:n,privateKey:e.privateKey,publicKey:e.publicKey}}catch(e){let t=e instanceof Error?e.message:String(e),n=Error(`Failed to generate key pair: ${t}`);throw Z.error(`[generateEncryption] Key generation failed:`,n),n}}function We(e,t){Z.info(`[decryptFlowRequest] Starting Flow request decryption`);let n=J(`decryptFlowRequest`);if(!t.FLOW_API_PRIVATE_PEM||t.FLOW_API_PRIVATE_PEM.trim()===``){let e=Error(`Missing FLOW_API_PRIVATE_PEM. Please set the FLOW_API_PRIVATE_PEM environment variable or pass privatePem via config.`);throw Z.error(`[decryptFlowRequest] Configuration error:`,e),e}if(!t.FLOW_API_PASSPHRASE||t.FLOW_API_PASSPHRASE.trim()===``){let e=Error(`Missing FLOW_API_PASSPHRASE. Please set the FLOW_API_PASSPHRASE environment variable or pass passphrase via config.`);throw Z.error(`[decryptFlowRequest] Configuration error:`,e),e}Z.info(`[decryptFlowRequest] Configuration validated`);let{encrypted_aes_key:r,encrypted_flow_data:i,initial_vector:a}=e;if(!r||!i||!a)throw Z.error(`[decryptFlowRequest] Missing required encryption properties in request body`),Error(`Missing required encryption properties`);Z.info(`[decryptFlowRequest] Request body validated`);let o=t.FLOW_API_PRIVATE_PEM;o.includes(`\\n`)&&(o=o.replace(/\\n/g,`
2
+ `)}const r=[0,1,2,3,4,10,33,100,190,200,299,368,613,80007,130429,130472,130497,131e3,131005,131008,131009,131016,131020,131021,131026,131030,131031,131037,131041,131042,131044,131045,131047,131048,131049,131050,131051,131052,131053,131055,131056,131057,131059,131061,131062,131063,131065,131070,131201,131202,131203,131204,131207,131208,131209,131210,131211,131212,131213,131214,131215,132e3,132001,132005,132007,132008,132012,132015,132016,132068,132069,133e3,133004,133005,133006,133008,133009,133010,133015,133016,134011,134100,134101,134102,135e3,137e3,138e3,138001,138002,138003,138004,138005,138006,138007,138009,138012,138013,138018,138038,139e3,139001,139002,139003,139004,139100,139101,139102,139103,147005,200005,200006,200007,1752041,2388001,2388012,2388019,2388040,2388047,2388072,2388073,2388091,2388093,2388103,2388293,2388299,2494100,2494191,2593079,2593085,2593107,2593108],i=new Set(r),a=[0,3,10,190],o=[4,80007,130429,131048,131056],s=[368,130497,131031],c=[130472,131e3,131005,131008,131009,131016,131021,131026,131030,131042,131044,131045,131047,131050,131051,131052,131053,131056,131057,131048,131061,131062,131063,131065,131070,132e3,132001,132005,132007,132008,132012,132015,132016,132068,132069,135e3,137e3],l=[139e3,139001,139002,139003,139004],u=[139100,139101,139102,139103],d=[138e3,138001,138002,138003,138004,138005,138006,138007,138009,138012,138013,138018,138038,613],f=[131020,131041,131059,131201,131202,131203,131204,131207,131208,131209,131210,131211,131212,131213,131214,131215],p=new Set(a),m=new Set(o),ee=new Set(s),h=new Set(c),te=new Set(l),ne=new Set(u),re=new Set(d),ie=new Set(f);function ae(e){return g(e)?!0:i.has(e)}function g(e){return e>=200&&e<300}function oe(e){return g(e)||p.has(e)}function se(e){return m.has(e)}function ce(e){return ee.has(e)}function _(e){return h.has(e)}function v(e){return te.has(e)}function y(e){return ne.has(e)}function b(e){return re.has(e)}function x(e){return ie.has(e)}var S=class extends Error{constructor(e){super(e),this.name=`WhatsAppError`}},C=class extends S{error;statusCode;rateLimit;constructor(e,t,n){super(e),this.name=`WhatsAppApiError`,this.error=t,this.statusCode=n}},w=class extends C{constructor(e,t,n){super(e,t,n),this.name=`WhatsAppAuthorizationError`}},T=class extends C{constructor(e,t,n){super(e,t,n),this.name=`WhatsAppThrottlingError`}},E=class extends C{constructor(e,t,n){super(e,t,n),this.name=`WhatsAppIntegrityError`}},D=class extends C{constructor(e,t,n){super(e,t,n),this.name=`WhatsAppSendMessageError`}},O=class extends C{constructor(e,t,n){super(e,t,n),this.name=`WhatsAppFlowError`}},k=class extends C{constructor(e,t,n){super(e,t,n),this.name=`WhatsAppBlockUserError`}},A=class extends C{constructor(e,t,n){super(e,t,n),this.name=`WhatsAppCallingError`}},j=class extends C{constructor(e,t,n){super(e,t,n),this.name=`WhatsAppGroupError`}};function le(e,t){let n=e.code;return oe(n)?new w(e.message,e,t):se(n)?new T(e.message,e,t):ce(n)?new E(e.message,e,t):_(n)?new D(e.message,e,t):v(n)?new O(e.message,e,t):y(n)?new k(e.message,e,t):b(n)?new A(e.message,e,t):x(n)?new j(e.message,e,t):new C(e.message,e,t)}var ue=class extends S{cause;constructor(e,t){super(e),this.name=`WhatsAppNetworkError`,this.cause=t}},de=class extends S{cause;constructor(e,t){super(e),this.name=`WhatsAppUnknownError`,this.cause=t}},M=class extends Error{constructor(e){super(e),this.name=`WhatsAppValidationError`}};function N(e){if(typeof e!=`object`||!e||!(`error`in e)||typeof e.error!=`object`||e.error==null)return!1;let t=e.error;if(typeof t.message!=`string`||typeof t.type!=`string`||typeof t.code!=`number`||typeof t.fbtrace_id!=`string`)return!1;if(`error_data`in t&&t.error_data!=null){if(typeof t.error_data!=`object`)return!1;let e=t.error_data;if(`messaging_product`in e&&e.messaging_product!==`whatsapp`||`details`in e&&typeof e.details!=`string`)return!1}return!(`error_subcode`in t&&typeof t.error_subcode!=`number`)}function fe(e){return N(e)&&ae(e.error.code)}function pe(e){return e instanceof w}function me(e){return e instanceof T}function he(e){return e instanceof E}function ge(e){return e instanceof D}function _e(e){return e instanceof O}function ve(e){return e instanceof k}function ye(e){return e instanceof A}function be(e){return e instanceof j}function xe(e,t){if(N(e))return e;let n=`Unknown error occurred`;if(e&&typeof e==`object`&&`message`in e){let t=e.message;typeof t==`string`&&(n=t)}return{name:`MetaError`,message:n,error:{message:n,type:`UnknownError`,code:typeof t==`number`?t:500,fbtrace_id:``}}}const P=3600*1e3,F=24*P,I=72*P,Se=168*P,L=1e11;function R(e,t){let n;if(e instanceof Date)n=e.getTime();else if(typeof e==`number`)n=Math.abs(e)<L?e*1e3:e;else if(typeof e==`string`){let t=e.trim();if(/^\d+(\.\d+)?$/.test(t)){let e=Number(t);n=e<L?e*1e3:e}else n=t===``?NaN:Date.parse(t)}else n=NaN;if(!Number.isFinite(n)||!Number.isFinite(new Date(n).getTime()))throw new M(`${t} is not a valid timestamp: ${String(e)}`);return n}function z(e,t,n){if(e===void 0)return n;if(typeof e!=`number`||!Number.isFinite(e)||e<0)throw new M(`${t} must be a non-negative number of milliseconds`);return e}function B(e,t,n,r){if(!Number.isFinite(new Date(t).getTime()))throw new M(`Window expiry is outside the supported timestamp range`);let i=Math.max(0,t-e),a=t-r,o=Math.min(Math.max(0,a-n),i);return{isOpen:o>0,expiresAt:new Date(t),remainingMs:o}}const V=Object.freeze({isOpen:!1,expiresAt:null,remainingMs:0});function H(e,t={}){let n=z(t.safetyMarginMs,`safetyMarginMs`,0),r=t.now===void 0?Date.now():R(t.now,`now`);if(e==null)return{...V};let i=R(e,`lastInboundAt`);return B(i,i+F,r,n)}function Ce(e,t={}){return H(e,t).isOpen}function we(e,t={}){let n=z(t.safetyMarginMs,`safetyMarginMs`,0),r=z(t.durationMs,`durationMs`,I),i=t.now===void 0?Date.now():R(t.now,`now`);if(e==null)return{...V};let a=R(e,`openedAt`);return B(a,t.expiresAt===void 0?a+r:R(t.expiresAt,`expiresAt`),i,n)}var Te=class{name;debugEnabled;constructor(e,t=!1){this.name=e,this.debugEnabled=t}formatData(e){return e.map(e=>typeof e==`object`&&e?Ee(e):e).join(` `)}log(...e){if(this.debugEnabled){let t=`[ ${Date.now()} ]`;this.name&&(t+=` - ${this.name}`),console.log(t,`: `,this.formatData(e))}}error(...e){let t=`[ ${Date.now()} ] - ERROR`;this.name&&(t+=` - ${this.name}`),console.error(t,`: `,this.formatData(e))}warn(...e){if(this.debugEnabled){let t=`[ ${Date.now()} ] - WARN`;this.name&&(t+=` - ${this.name}`),console.warn(t,`: `,this.formatData(e))}}info(...e){if(this.debugEnabled){let t=`[ ${Date.now()} ] - INFO`;this.name&&(t+=` - ${this.name}`),console.info(t,`: `,this.formatData(e))}}debug(...e){if(this.debugEnabled){let t=`[ ${Date.now()} ] - DEBUG`;this.name&&(t+=` - ${this.name}`),console.debug(t,`: `,this.formatData(e))}}};function Ee(e){if(e instanceof Error)return e.stack||`${e.name}: ${e.message}`;let t=new WeakSet;try{return JSON.stringify(e,(e,n)=>{if(n instanceof Error)return{name:n.name,message:n.message,stack:n.stack};if(typeof n==`bigint`)return n.toString();if(typeof n==`object`&&n){if(t.has(n))return`[Circular]`;t.add(n)}return n},2)}catch{return String(e)}}const De={sent:1,failed:2,delivered:3,read:4};function Oe(e){return e&&Object.hasOwn(De,e)?De[e]:0}function U(e,t){return Oe(e)-Oe(t)}function ke(e,t){return e==null||e===``?!0:U(t,e)>0}function Ae(e,t){return e==null||e===``||U(t,e)>0?t:e}const je=e=>{if(!e||Object.keys(e).length===0)return``;let t=[];for(let[n,r]of Object.entries(e))if(r!==void 0){let e=encodeURIComponent(n),i=encodeURIComponent(String(r));t.push(`${e}=${i}`)}return t.length>0?`?${t.join(`&`)}`:``};function W(e,t){if(typeof e.get==`function`)return e.get(t)??void 0;let n=e,r=Object.keys(n).find(e=>e.toLowerCase()===t);if(r===void 0)return;let i=n[r];return Array.isArray(i)?i[0]:i}function Me(e){if(!(e===void 0||e.trim()===``))try{return JSON.parse(e)}catch{return}}function G(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function K(e){if(typeof e==`number`&&Number.isFinite(e))return e;if(typeof e==`string`&&e.trim()!==``&&Number.isFinite(Number(e)))return Number(e)}function Ne(e){return typeof e==`string`?e:void 0}function Pe(e){let t={},n=K(e.call_count),r=K(e.total_cputime),i=K(e.total_time);return n!==void 0&&(t.callCount=n),r!==void 0&&(t.totalCputime=r),i!==void 0&&(t.totalTime=i),t}function Fe(e){if(!G(e))return[];let t=[];for(let[n,r]of Object.entries(e))if(Array.isArray(r))for(let e of r){if(!G(e))continue;let r={businessId:n,...Pe(e)},i=Ne(e.type),a=K(e.estimated_time_to_regain_access),o=Ne(e.ads_api_access_tier);i!==void 0&&(r.type=i),a!==void 0&&(r.estimatedTimeToRegainAccessMinutes=a),o!==void 0&&(r.adsApiAccessTier=o),t.push(r)}return t}function Ie(e,t=Date.now()){if(e==null)return;let n=e.trim();if(n===``)return;if(/^\d+(\.\d+)?$/.test(n))return Math.round(Number(n)*1e3);if(!/[a-z]/i.test(n))return;let r=Date.parse(n);if(Number.isFinite(r))return Math.max(0,r-t)}function Le(e){if(!e)return;let t=W(e,`x-app-usage`),n=W(e,`x-business-use-case-usage`),r=W(e,`retry-after`);if(t===void 0&&n===void 0&&r===void 0)return;let i={businessUseCaseUsage:[]},a=Me(t);G(a)&&(i.appUsage=Pe(a)),i.businessUseCaseUsage=Fe(Me(n));let o=Ie(r);o!==void 0&&(i.retryAfterMs=o);let s=[...i.appUsage?[i.appUsage]:[],...i.businessUseCaseUsage].flatMap(e=>[e.callCount,e.totalCputime,e.totalTime].filter(e=>e!==void 0));s.length>0&&(i.maxUsagePercent=Math.max(...s));let c=[...o===void 0?[]:[o],...i.businessUseCaseUsage.map(e=>e.estimatedTimeToRegainAccessMinutes).filter(e=>e!==void 0&&e>0).map(e=>e*6e4)];return c.length>0&&(i.retryDelayMs=Math.max(...c)),i}const Re=e;function q(){let e=globalThis.process;return typeof e==`object`&&e?e:void 0}function ze(e){return q()?.env?.[e]}function Be(){return ze(`DEBUG`)===`true`}function J(){let e=q()?.getBuiltinModule;if(typeof e!=`function`)return q()?Re:void 0;try{return e(`node:crypto`)}catch{return}}function Ve(e){let t=J();if(!t)throw Error(`${e} needs the node:crypto module, which is not available in this runtime. Use the async Web Crypto variant instead, or run on Node.js >= 20.12, Bun or Deno.`);return t}function Y(){let e=globalThis.crypto?.subtle;if(!e)throw Error(`Web Crypto (globalThis.crypto.subtle) is not available in this runtime.`);return e}const He=new TextEncoder,Ue=new TextDecoder;function We(e){return He.encode(e)}function Ge(e){return Ue.decode(e)}function X(e){let t=atob(e),n=new Uint8Array(t.length);for(let e=0;e<t.length;e++)n[e]=t.charCodeAt(e);return n}function Ke(e){let t=``,n=32768;for(let r=0;r<e.length;r+=n)t+=String.fromCharCode(...e.subarray(r,r+n));return btoa(t)}const Z=new Te(`FLOW_ENCRYPTION_UTILS`,Be());function qe(){let e=J();if(!e||typeof e.generateKeyPairSync!=`function`){let e=Error(`This utility requires Node.js environment with crypto module. It cannot be used in browser or edge runtime environments.`);throw Z.error(`Environment validation failed:`,e),e}if(typeof window<`u`){let e=Error(`This utility cannot run in a browser environment. Please use it in a Node.js server environment only.`);throw Z.error(`Browser environment detected:`,e),e}let t=globalThis.process?.versions?.node;if(t){let e=t.split(`.`).map(Number),n=e[0]??0,r=e[1]??0;if(n<10||n===10&&r<12){let e=Error(`Node.js version ${t} is not supported. Please upgrade to Node.js 10.12.0 or higher.`);throw Z.error(`Node.js version check failed:`,e),e}}return e}function Je(e){Z.info(`[generateEncryption] Starting key pair generation`);let t=qe(),n=e||ze(`FLOW_API_PASSPHRASE`);if(!n||n.trim().length===0){let e=Error(`Passphrase is empty. Please provide a passphrase as parameter or set FLOW_API_PASSPHRASE environment variable.`);throw Z.error(`[generateEncryption] Passphrase validation failed:`,e),e}n.length<8&&Z.warn(`[generateEncryption] Passphrase is shorter than 8 characters. Consider using a longer passphrase for better security.`);try{Z.info(`[generateEncryption] Generating 2048-bit RSA key pair`);let e=t.generateKeyPairSync(`rsa`,{modulusLength:2048,publicKeyEncoding:{type:`spki`,format:`pem`},privateKeyEncoding:{type:`pkcs8`,format:`pem`,cipher:`aes-256-cbc`,passphrase:n}});return Z.info(`[generateEncryption] Key pair generated successfully`),{passphrase:n,privateKey:e.privateKey,publicKey:e.publicKey}}catch(e){let t=e instanceof Error?e.message:String(e),n=Error(`Failed to generate key pair: ${t}`);throw Z.error(`[generateEncryption] Key generation failed:`,n),n}}function Ye(e,t){Z.info(`[decryptFlowRequest] Starting Flow request decryption`);let n=Ve(`decryptFlowRequest`);if(!t.FLOW_API_PRIVATE_PEM||t.FLOW_API_PRIVATE_PEM.trim()===``){let e=Error(`Missing FLOW_API_PRIVATE_PEM. Please set the FLOW_API_PRIVATE_PEM environment variable or pass privatePem via config.`);throw Z.error(`[decryptFlowRequest] Configuration error:`,e),e}if(!t.FLOW_API_PASSPHRASE||t.FLOW_API_PASSPHRASE.trim()===``){let e=Error(`Missing FLOW_API_PASSPHRASE. Please set the FLOW_API_PASSPHRASE environment variable or pass passphrase via config.`);throw Z.error(`[decryptFlowRequest] Configuration error:`,e),e}Z.info(`[decryptFlowRequest] Configuration validated`);let{encrypted_aes_key:r,encrypted_flow_data:i,initial_vector:a}=e;if(!r||!i||!a)throw Z.error(`[decryptFlowRequest] Missing required encryption properties in request body`),Error(`Missing required encryption properties`);Z.info(`[decryptFlowRequest] Request body validated`);let o=t.FLOW_API_PRIVATE_PEM;o.includes(`\\n`)&&(o=o.replace(/\\n/g,`
3
3
  `));let s=t.FLOW_API_PASSPHRASE,c=o.includes(`-----BEGIN RSA PRIVATE KEY-----`),l=o.includes(`-----BEGIN PRIVATE KEY-----`)||o.includes(`-----BEGIN ENCRYPTED PRIVATE KEY-----`);Z.info(`[decryptFlowRequest] Loading private key`,{format:l?`PKCS#8`:c?`PKCS#1`:`Unknown`});let u;try{u=s?n.createPrivateKey({key:o,format:`pem`,passphrase:s}):n.createPrivateKey(o),Z.info(`[decryptFlowRequest] Private key loaded successfully`)}catch(e){if(Z.error(`[decryptFlowRequest] Failed to load private key (first attempt):`,{error:e instanceof Error?e.message:e,hasPassphrase:!!s,format:l?`PKCS#8`:c?`PKCS#1`:`Unknown`}),c&&s)try{Z.info(`[decryptFlowRequest] Attempting to convert PKCS#1 to PKCS#8 format`);let e=n.createPrivateKey({key:o,format:`pem`,passphrase:s}).export({type:`pkcs8`,format:`pem`,cipher:`aes-256-cbc`,passphrase:s});u=n.createPrivateKey({key:e,format:`pem`,passphrase:s}),Z.info(`[decryptFlowRequest] Successfully converted PKCS#1 to PKCS#8 and loaded private key`)}catch(t){Z.error(`[decryptFlowRequest] Failed to convert PKCS#1 to PKCS#8:`,{error:t instanceof Error?t.message:t});let n=`Failed to parse private key. Error: ${e instanceof Error?e.message:e}`;throw n+=`
4
4
 
5
5
  Your key is in PKCS#1 format with unsupported encryption (DES-EDE3-CBC).`,n+=`
@@ -10,7 +10,7 @@ Your key is in PKCS#1 format (-----BEGIN RSA PRIVATE KEY-----).`,t+=`
10
10
  Please convert it to PKCS#8 format using:`,t+=`
11
11
  openssl pkcs8 -topk8 -inform PEM -outform PEM -in old_key.pem -out new_key.pem`):l||(t+=`
12
12
 
13
- Your key format is not recognized. Please ensure it is in PKCS#8 format.`),Error(t)}}let d;try{Z.info(`[decryptFlowRequest] Decrypting AES key with RSA private key`),d=n.privateDecrypt({key:u,padding:n.constants.RSA_PKCS1_OAEP_PADDING,oaepHash:`sha256`},Buffer.from(r,`base64`)),Z.info(`[decryptFlowRequest] AES key decrypted successfully`)}catch(e){throw Z.error(`[decryptFlowRequest] Failed to decrypt AES key:`,e),Error(`Failed to decrypt the request. Please verify your private key.`)}let f=Buffer.from(i,`base64`),p=Buffer.from(a,`base64`),m=f.subarray(0,-16),h=f.subarray(-16);Z.info(`[decryptFlowRequest] Decrypting flow data with AES-128-GCM`);let g=n.createDecipheriv(`aes-128-gcm`,d,p);g.setAuthTag(h);let _=Buffer.concat([g.update(m),g.final()]).toString(`utf-8`);return Z.info(`[decryptFlowRequest] Flow request decrypted successfully`),{decryptedBody:JSON.parse(_),aesKeyBuffer:d,initialVectorBuffer:p}}function Ge(e,t,n){Z.info(`[encryptFlowResponse] Starting Flow response encryption`);let r=J(`encryptFlowResponse`),i=[];for(let e of Array.from(n.entries()))i.push(~e[1]);try{Z.info(`[encryptFlowResponse] Encrypting response with AES-128-GCM`);let n=r.createCipheriv(`aes-128-gcm`,t,Buffer.from(i)),a=Buffer.concat([n.update(JSON.stringify(e||{}),`utf-8`),n.final(),n.getAuthTag()]).toString(`base64`);return Z.info(`[encryptFlowResponse] Flow response encrypted successfully`),a}catch(e){throw Z.error(`[encryptFlowResponse] Response encryption failed:`,e),Error(`Failed to encrypt response. Internal server error.`)}}const Ke=/-----BEGIN ([A-Z ]+)-----([\s\S]*?)-----END \1-----/;let Q;function qe(e,t){let n=Ke.exec(e);if(!n)throw Error(`Failed to parse private key. Expected a PEM encoded PKCS#8 private key.`);let r=n[1];if(r===`PRIVATE KEY`)return X((n[2]??``).replace(/\s+/g,``));let i=q();if(!i)throw Error(`Failed to parse private key. "${r}" keys need node:crypto, which this runtime lacks. Convert the key to an unencrypted PKCS#8 key and keep it in a secret store:
14
- openssl pkcs8 -topk8 -nocrypt -in private.pem -out private-pkcs8.pem`);try{let n=i.createPrivateKey({key:e,format:`pem`,passphrase:t||void 0}).export({type:`pkcs8`,format:`der`});return new Uint8Array(n)}catch(e){throw Error(`Failed to parse private key. Error: ${e instanceof Error?e.message:e}`)}}function Je(e,t){if(Q&&Q.pem===e&&Q.passphrase===t)return Q.key;let n=(async()=>Y().importKey(`pkcs8`,qe(e,t),{name:`RSA-OAEP`,hash:`SHA-256`},!1,[`decrypt`]))();return Q={pem:e,passphrase:t,key:n},n.catch(()=>{Q?.key===n&&(Q=void 0)}),n}async function Ye(e,t){if(!t.FLOW_API_PRIVATE_PEM||t.FLOW_API_PRIVATE_PEM.trim()===``)throw Error(`Missing FLOW_API_PRIVATE_PEM. Please set the FLOW_API_PRIVATE_PEM environment variable or pass privatePem via config.`);let{encrypted_aes_key:n,encrypted_flow_data:r,initial_vector:i}=e??{};if(!n||!r||!i)throw Error(`Missing required encryption properties`);let a=t.FLOW_API_PRIVATE_PEM;a.includes(`\\n`)&&(a=a.replace(/\\n/g,`
15
- `));let o=Y(),s=await Je(a,t.FLOW_API_PASSPHRASE||``),c;try{c=new Uint8Array(await o.decrypt({name:`RSA-OAEP`},s,X(n)))}catch(e){throw Z.error(`[decryptFlowRequestAsync] Failed to decrypt AES key:`,e),Error(`Failed to decrypt the request. Please verify your private key.`)}let l=X(i),u=await o.importKey(`raw`,c,{name:`AES-GCM`},!1,[`decrypt`]),d=await o.decrypt({name:`AES-GCM`,iv:l,tagLength:128},u,X(r));return{decryptedBody:JSON.parse(Be(new Uint8Array(d))),aesKeyBuffer:c,initialVectorBuffer:l}}async function Xe(e,t,n){let r=new Uint8Array(n.length);for(let e=0;e<n.length;e++)r[e]=~(n[e]??0)&255;try{let n=Y(),i=await n.importKey(`raw`,new Uint8Array(t),{name:`AES-GCM`},!1,[`encrypt`]),a=await n.encrypt({name:`AES-GCM`,iv:r,tagLength:128},i,ze(JSON.stringify(e||{})));return Ve(new Uint8Array(a))}catch(e){throw Z.error(`[encryptFlowResponseAsync] Response encryption failed:`,e),Error(`Failed to encrypt response. Internal server error.`)}}function Ze(e){return typeof e==`object`&&!!e}function $(e){return typeof e==`string`}const Qe=[`data_exchange`,`INIT`,`BACK`],$e=[`data_exchange`,`INIT`];function et(e){if(!(`flow_token`in e&&$(e.flow_token)&&`action`in e))return!1;let{action:t,version:n,screen:r,data:i}=e,a=n===`3.0`,o=Qe.includes(t),s=r===void 0||$(r)&&r!==`SUCCESS`,c=t===`data_exchange`||Ze(i);return a&&o&&s&&c}function tt(e){if(!(`flow_token`in e&&$(e.flow_token)&&`action`in e))return!1;let{action:t,screen:n,data:r}=e,i=$e.includes(t),a=$(n),o=Ze(r)&&`error_key`in r&&$(r.error)&&`error_message`in r&&$(r.error_message);return i&&a&&o}function nt(e){return`action`in e&&e.action===`ping`}export{a as AUTHORIZATION_ERROR_CODES,u as BLOCK_USER_ERROR_CODES,d as CALLING_ERROR_CODES,Se as CUSTOMER_SERVICE_WINDOW_MS,l as FLOW_ERROR_CODES,Ce as FREE_ENTRY_POINT_WINDOW_MS,f as GROUP_ERROR_CODES,s as INTEGRITY_ERROR_CODES,B as Logger,we as MAX_FREE_ENTRY_POINT_WINDOW_MS,c as SEND_MESSAGE_ERROR_CODES,o as THROTTLING_ERROR_CODES,r as WHATSAPP_ERROR_CODES,C as WhatsAppApiError,w as WhatsAppAuthorizationError,k as WhatsAppBlockUserError,A as WhatsAppCallingError,S as WhatsAppError,O as WhatsAppFlowError,j as WhatsAppGroupError,E as WhatsAppIntegrityError,ue as WhatsAppNetworkError,D as WhatsAppSendMessageError,T as WhatsAppThrottlingError,de as WhatsAppUnknownError,M as WhatsAppValidationError,t as buildFieldsQueryString,Ee as canSendFreeformMessage,le as createWhatsAppApiError,We as decryptFlowRequest,Ye as decryptFlowRequestAsync,Ge as encryptFlowResponse,Xe as encryptFlowResponseAsync,n as formatConfigTable,Ue as generateEncryption,z as getCustomerServiceWindow,De as getFreeEntryPointWindow,y as isApiPermissionErrorCode,re as isAuthorizationErrorCode,ce as isBlockUserErrorCode,b as isCallingErrorCode,et as isFlowDataExchangeRequest,se as isFlowErrorCode,tt as isFlowErrorRequest,nt as isFlowPingRequest,x as isGroupErrorCode,ae as isIntegrityErrorCode,N as isMetaError,oe as isSendMessageErrorCode,ie as isThrottlingErrorCode,fe as isWhatsAppApiErrorResponse,pe as isWhatsAppAuthorizationError,ve as isWhatsAppBlockUserError,ye as isWhatsAppCallingError,v as isWhatsAppErrorCode,_e as isWhatsAppFlowError,be as isWhatsAppGroupError,he as isWhatsAppIntegrityError,ge as isWhatsAppSendMessageError,me as isWhatsAppThrottlingError,xe as normalizeMetaError,ke as objectToQueryString,Ne as parseRateLimitHeaders,Me as parseRetryAfter};
13
+ Your key format is not recognized. Please ensure it is in PKCS#8 format.`),Error(t)}}let d;try{Z.info(`[decryptFlowRequest] Decrypting AES key with RSA private key`),d=n.privateDecrypt({key:u,padding:n.constants.RSA_PKCS1_OAEP_PADDING,oaepHash:`sha256`},Buffer.from(r,`base64`)),Z.info(`[decryptFlowRequest] AES key decrypted successfully`)}catch(e){throw Z.error(`[decryptFlowRequest] Failed to decrypt AES key:`,e),Error(`Failed to decrypt the request. Please verify your private key.`)}let f=Buffer.from(i,`base64`),p=Buffer.from(a,`base64`),m=f.subarray(0,-16),ee=f.subarray(-16);Z.info(`[decryptFlowRequest] Decrypting flow data with AES-128-GCM`);let h=n.createDecipheriv(`aes-128-gcm`,d,p);h.setAuthTag(ee);let te=Buffer.concat([h.update(m),h.final()]).toString(`utf-8`);return Z.info(`[decryptFlowRequest] Flow request decrypted successfully`),{decryptedBody:JSON.parse(te),aesKeyBuffer:d,initialVectorBuffer:p}}function Xe(e,t,n){Z.info(`[encryptFlowResponse] Starting Flow response encryption`);let r=Ve(`encryptFlowResponse`),i=[];for(let e of Array.from(n.entries()))i.push(~e[1]);try{Z.info(`[encryptFlowResponse] Encrypting response with AES-128-GCM`);let n=r.createCipheriv(`aes-128-gcm`,t,Buffer.from(i)),a=Buffer.concat([n.update(JSON.stringify(e||{}),`utf-8`),n.final(),n.getAuthTag()]).toString(`base64`);return Z.info(`[encryptFlowResponse] Flow response encrypted successfully`),a}catch(e){throw Z.error(`[encryptFlowResponse] Response encryption failed:`,e),Error(`Failed to encrypt response. Internal server error.`)}}const Ze=/-----BEGIN ([A-Z ]+)-----([\s\S]*?)-----END \1-----/;let Q;function Qe(e,t){let n=Ze.exec(e);if(!n)throw Error(`Failed to parse private key. Expected a PEM encoded PKCS#8 private key.`);let r=n[1];if(r===`PRIVATE KEY`)return X((n[2]??``).replace(/\s+/g,``));let i=J();if(!i)throw Error(`Failed to parse private key. "${r}" keys need node:crypto, which this runtime lacks. Convert the key to an unencrypted PKCS#8 key and keep it in a secret store:
14
+ openssl pkcs8 -topk8 -nocrypt -in private.pem -out private-pkcs8.pem`);try{let n=i.createPrivateKey({key:e,format:`pem`,passphrase:t||void 0}).export({type:`pkcs8`,format:`der`});return new Uint8Array(n)}catch(e){throw Error(`Failed to parse private key. Error: ${e instanceof Error?e.message:e}`)}}function $e(e,t){if(Q&&Q.pem===e&&Q.passphrase===t)return Q.key;let n=(async()=>Y().importKey(`pkcs8`,Qe(e,t),{name:`RSA-OAEP`,hash:`SHA-256`},!1,[`decrypt`]))();return Q={pem:e,passphrase:t,key:n},n.catch(()=>{Q?.key===n&&(Q=void 0)}),n}async function et(e,t){if(!t.FLOW_API_PRIVATE_PEM||t.FLOW_API_PRIVATE_PEM.trim()===``)throw Error(`Missing FLOW_API_PRIVATE_PEM. Please set the FLOW_API_PRIVATE_PEM environment variable or pass privatePem via config.`);let{encrypted_aes_key:n,encrypted_flow_data:r,initial_vector:i}=e??{};if(!n||!r||!i)throw Error(`Missing required encryption properties`);let a=t.FLOW_API_PRIVATE_PEM;a.includes(`\\n`)&&(a=a.replace(/\\n/g,`
15
+ `));let o=Y(),s=await $e(a,t.FLOW_API_PASSPHRASE||``),c;try{c=new Uint8Array(await o.decrypt({name:`RSA-OAEP`},s,X(n)))}catch(e){throw Z.error(`[decryptFlowRequestAsync] Failed to decrypt AES key:`,e),Error(`Failed to decrypt the request. Please verify your private key.`)}let l=X(i),u=await o.importKey(`raw`,c,{name:`AES-GCM`},!1,[`decrypt`]),d=await o.decrypt({name:`AES-GCM`,iv:l,tagLength:128},u,X(r));return{decryptedBody:JSON.parse(Ge(new Uint8Array(d))),aesKeyBuffer:c,initialVectorBuffer:l}}async function tt(e,t,n){let r=new Uint8Array(n.length);for(let e=0;e<n.length;e++)r[e]=~(n[e]??0)&255;try{let n=Y(),i=await n.importKey(`raw`,new Uint8Array(t),{name:`AES-GCM`},!1,[`encrypt`]),a=await n.encrypt({name:`AES-GCM`,iv:r,tagLength:128},i,We(JSON.stringify(e||{})));return Ke(new Uint8Array(a))}catch(e){throw Z.error(`[encryptFlowResponseAsync] Response encryption failed:`,e),Error(`Failed to encrypt response. Internal server error.`)}}function nt(e){return typeof e==`object`&&!!e}function $(e){return typeof e==`string`}const rt=[`data_exchange`,`INIT`,`BACK`],it=[`data_exchange`,`INIT`];function at(e){if(!(`flow_token`in e&&$(e.flow_token)&&`action`in e))return!1;let{action:t,version:n,screen:r,data:i}=e,a=n===`3.0`,o=rt.includes(t),s=r===void 0||$(r)&&r!==`SUCCESS`,c=t===`data_exchange`||nt(i);return a&&o&&s&&c}function ot(e){if(!(`flow_token`in e&&$(e.flow_token)&&`action`in e))return!1;let{action:t,screen:n,data:r}=e,i=it.includes(t),a=$(n),o=nt(r)&&`error_key`in r&&$(r.error)&&`error_message`in r&&$(r.error_message);return i&&a&&o}function st(e){return`action`in e&&e.action===`ping`}export{a as AUTHORIZATION_ERROR_CODES,u as BLOCK_USER_ERROR_CODES,d as CALLING_ERROR_CODES,F as CUSTOMER_SERVICE_WINDOW_MS,l as FLOW_ERROR_CODES,I as FREE_ENTRY_POINT_WINDOW_MS,f as GROUP_ERROR_CODES,s as INTEGRITY_ERROR_CODES,Te as Logger,Se as MAX_FREE_ENTRY_POINT_WINDOW_MS,c as SEND_MESSAGE_ERROR_CODES,o as THROTTLING_ERROR_CODES,r as WHATSAPP_ERROR_CODES,C as WhatsAppApiError,w as WhatsAppAuthorizationError,k as WhatsAppBlockUserError,A as WhatsAppCallingError,S as WhatsAppError,O as WhatsAppFlowError,j as WhatsAppGroupError,E as WhatsAppIntegrityError,ue as WhatsAppNetworkError,D as WhatsAppSendMessageError,T as WhatsAppThrottlingError,de as WhatsAppUnknownError,M as WhatsAppValidationError,t as buildFieldsQueryString,Ce as canSendFreeformMessage,U as compareMessageStatus,le as createWhatsAppApiError,Ye as decryptFlowRequest,et as decryptFlowRequestAsync,Xe as encryptFlowResponse,tt as encryptFlowResponseAsync,n as formatConfigTable,Je as generateEncryption,H as getCustomerServiceWindow,we as getFreeEntryPointWindow,g as isApiPermissionErrorCode,oe as isAuthorizationErrorCode,y as isBlockUserErrorCode,b as isCallingErrorCode,at as isFlowDataExchangeRequest,v as isFlowErrorCode,ot as isFlowErrorRequest,st as isFlowPingRequest,x as isGroupErrorCode,ce as isIntegrityErrorCode,ke as isMessageStatusAdvance,N as isMetaError,_ as isSendMessageErrorCode,se as isThrottlingErrorCode,fe as isWhatsAppApiErrorResponse,pe as isWhatsAppAuthorizationError,ve as isWhatsAppBlockUserError,ye as isWhatsAppCallingError,ae as isWhatsAppErrorCode,_e as isWhatsAppFlowError,be as isWhatsAppGroupError,he as isWhatsAppIntegrityError,ge as isWhatsAppSendMessageError,me as isWhatsAppThrottlingError,xe as normalizeMetaError,je as objectToQueryString,Le as parseRateLimitHeaders,Ie as parseRetryAfter,Ae as resolveMessageStatus};
16
16
  //# sourceMappingURL=index.js.map