@adatechnology/meta-whatsapp-module 0.2.0-rc.26 → 0.2.0-rc.28
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/dist/index.cjs +13 -25
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +10 -2
- package/dist/index.d.ts +10 -2
- package/dist/index.js +9 -21
- package/dist/index.js.map +1 -1
- package/package.json +4 -4
package/dist/index.cjs
CHANGED
|
@@ -59,7 +59,7 @@ __export(index_exports, {
|
|
|
59
59
|
TRANSCRIPTION_STATUS: () => TRANSCRIPTION_STATUS,
|
|
60
60
|
TakeoverConversationUseCase: () => TakeoverConversationUseCase,
|
|
61
61
|
TranscribeAudioUseCase: () => TranscribeAudioUseCase,
|
|
62
|
-
WEBHOOK_NONCE_TTL_SECONDS: () => WEBHOOK_NONCE_TTL_SECONDS,
|
|
62
|
+
WEBHOOK_NONCE_TTL_SECONDS: () => import_meta_graph_core2.WEBHOOK_NONCE_TTL_SECONDS,
|
|
63
63
|
WhatsAppChannelAdapter: () => WhatsAppChannelAdapter,
|
|
64
64
|
claimWebhookDelivery: () => claimWebhookDelivery,
|
|
65
65
|
createMetaWhatsAppModule: () => createMetaWhatsAppModule,
|
|
@@ -2087,36 +2087,24 @@ var WhatsAppChannelAdapter = class {
|
|
|
2087
2087
|
var import_meta_whatsapp_contracts12 = require("@adatechnology/meta-whatsapp-contracts");
|
|
2088
2088
|
|
|
2089
2089
|
// src/channel/webhookSecurity.ts
|
|
2090
|
-
var
|
|
2090
|
+
var import_meta_graph_core2 = require("@adatechnology/meta-graph-core");
|
|
2091
2091
|
var import_meta_whatsapp_contracts10 = require("@adatechnology/meta-whatsapp-contracts");
|
|
2092
|
-
var
|
|
2093
|
-
function safeEqualStrings(left, right) {
|
|
2094
|
-
const leftDigest = (0, import_node_crypto.createHmac)("sha256", "constant-time-compare").update(left).digest();
|
|
2095
|
-
const rightDigest = (0, import_node_crypto.createHmac)("sha256", "constant-time-compare").update(right).digest();
|
|
2096
|
-
return (0, import_node_crypto.timingSafeEqual)(leftDigest, rightDigest);
|
|
2097
|
-
}
|
|
2098
|
-
__name(safeEqualStrings, "safeEqualStrings");
|
|
2092
|
+
var WEBHOOK_NONCE_NAMESPACE = "meta-whatsapp";
|
|
2099
2093
|
function verifyWebhookChallenge(params) {
|
|
2100
|
-
if (params
|
|
2101
|
-
throw new import_meta_whatsapp_contracts10.InvalidWebhookSignatureError();
|
|
2102
|
-
}
|
|
2103
|
-
if (!safeEqualStrings(params.token, params.expectedToken)) {
|
|
2104
|
-
throw new import_meta_whatsapp_contracts10.InvalidWebhookSignatureError();
|
|
2105
|
-
}
|
|
2094
|
+
if (!(0, import_meta_graph_core2.isValidWebhookChallenge)(params)) throw new import_meta_whatsapp_contracts10.InvalidWebhookSignatureError();
|
|
2106
2095
|
return params.challenge;
|
|
2107
2096
|
}
|
|
2108
2097
|
__name(verifyWebhookChallenge, "verifyWebhookChallenge");
|
|
2109
2098
|
function verifyWebhookSignature(params) {
|
|
2110
|
-
|
|
2111
|
-
if (!signatureHeader?.startsWith("sha256=")) throw new import_meta_whatsapp_contracts10.InvalidWebhookSignatureError();
|
|
2112
|
-
const expected = (0, import_node_crypto.createHmac)("sha256", appSecret).update(rawBody).digest("hex");
|
|
2113
|
-
const received = signatureHeader.slice("sha256=".length);
|
|
2114
|
-
if (!safeEqualStrings(received, expected)) throw new import_meta_whatsapp_contracts10.InvalidWebhookSignatureError();
|
|
2099
|
+
if (!(0, import_meta_graph_core2.isValidWebhookSignature)(params)) throw new import_meta_whatsapp_contracts10.InvalidWebhookSignatureError();
|
|
2115
2100
|
}
|
|
2116
2101
|
__name(verifyWebhookSignature, "verifyWebhookSignature");
|
|
2117
2102
|
async function claimWebhookDelivery(params) {
|
|
2118
|
-
const key =
|
|
2119
|
-
|
|
2103
|
+
const key = (0, import_meta_graph_core2.buildWebhookDeliveryKey)({
|
|
2104
|
+
namespace: WEBHOOK_NONCE_NAMESPACE,
|
|
2105
|
+
signatureHeader: params.signatureHeader
|
|
2106
|
+
});
|
|
2107
|
+
return params.nonceStore.setIfAbsent(key, params.ttlSeconds ?? import_meta_graph_core2.WEBHOOK_NONCE_TTL_SECONDS);
|
|
2120
2108
|
}
|
|
2121
2109
|
__name(claimWebhookDelivery, "claimWebhookDelivery");
|
|
2122
2110
|
|
|
@@ -2813,7 +2801,7 @@ async function runMetaWhatsAppMigrations(params) {
|
|
|
2813
2801
|
__name(runMetaWhatsAppMigrations, "runMetaWhatsAppMigrations");
|
|
2814
2802
|
|
|
2815
2803
|
// src/realtime/SseHub.ts
|
|
2816
|
-
var
|
|
2804
|
+
var import_node_crypto = require("crypto");
|
|
2817
2805
|
var TICKET_TTL_SECONDS = 60;
|
|
2818
2806
|
var SseHub = class {
|
|
2819
2807
|
static {
|
|
@@ -2826,7 +2814,7 @@ var SseHub = class {
|
|
|
2826
2814
|
relaySubscriptions = /* @__PURE__ */ new Map();
|
|
2827
2815
|
// Identifica esta instância do processo para descartar o próprio eco (pub/sub entrega a
|
|
2828
2816
|
// mensagem a todos os inscritos, inclusive quem publicou).
|
|
2829
|
-
instanceId = (0,
|
|
2817
|
+
instanceId = (0, import_node_crypto.randomUUID)();
|
|
2830
2818
|
constructor(relay) {
|
|
2831
2819
|
this.relay = relay;
|
|
2832
2820
|
}
|
|
@@ -2872,7 +2860,7 @@ var SseHub = class {
|
|
|
2872
2860
|
}
|
|
2873
2861
|
};
|
|
2874
2862
|
async function issueSseTicket(store, companyId, whatsappNumber) {
|
|
2875
|
-
const ticket = (0,
|
|
2863
|
+
const ticket = (0, import_node_crypto.randomUUID)();
|
|
2876
2864
|
await store.set(`sse:ticket:${ticket}`, JSON.stringify({
|
|
2877
2865
|
companyId,
|
|
2878
2866
|
whatsappNumber
|