@sockethub/platform-whatsapp 1.0.0-beta.5 → 1.0.0-beta.6

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.js CHANGED
@@ -2,7 +2,7 @@
2
2
  var package_default = {
3
3
  name: "@sockethub/platform-whatsapp",
4
4
  description: "Outgoing text messages through the WhatsApp Business Cloud API",
5
- version: "1.0.0-beta.5",
5
+ version: "1.0.0-beta.6",
6
6
  type: "module",
7
7
  private: false,
8
8
  license: "LGPL-3.0+",
@@ -31,20 +31,20 @@ var package_default = {
31
31
  test: "bun test src/"
32
32
  },
33
33
  dependencies: {
34
- "@sockethub/schemas": "^3.0.0-beta.5"
34
+ "@sockethub/schemas": "^3.0.0-beta.6"
35
35
  },
36
36
  devDependencies: {
37
37
  "@types/bun": "latest"
38
38
  },
39
39
  peerDependencies: {
40
- "@sockethub/server": "^5.0.0-beta.5"
40
+ "@sockethub/server": "^5.0.0-beta.6"
41
41
  },
42
42
  peerDependenciesMeta: {
43
43
  "@sockethub/server": {
44
44
  optional: true
45
45
  }
46
46
  },
47
- gitHead: "cc4ffdd9714ebbd8372a88c4f2d795974e04029e"
47
+ gitHead: "604f3da8850a19a4fd5f5e5dcec10bf283e9085e"
48
48
  };
49
49
 
50
50
  // src/schema.ts
@@ -209,4 +209,4 @@ export {
209
209
  WhatsApp as default
210
210
  };
211
211
 
212
- //# debugId=C22874587E17191664756E2164756E21
212
+ //# debugId=16F72D82766D5FF264756E2164756E21
package/dist/index.js.map CHANGED
@@ -6,6 +6,6 @@
6
6
  "import type {\n ActivityStream,\n CredentialsObject,\n Logger,\n PlatformCallback,\n PlatformInterface,\n PlatformSession,\n StatelessPlatformConfig,\n} from \"@sockethub/schemas\";\nimport { PlatformWhatsAppSchema } from \"./schema.js\";\n\nexport interface WhatsAppCredentials extends CredentialsObject {\n object: { type: \"credentials\"; token: string; apiVersion: string };\n}\n\nexport default class WhatsApp implements PlatformInterface {\n private readonly log: Logger;\n config: StatelessPlatformConfig = {\n persist: false,\n requireCredentials: [\"send\"],\n };\n\n constructor(session: PlatformSession) {\n this.log = session.log;\n }\n\n get schema() {\n return PlatformWhatsAppSchema;\n }\n\n isInitialized(): boolean {\n return true;\n }\n\n cleanup(done: PlatformCallback): void {\n done();\n }\n\n async send(\n job: ActivityStream,\n credentials: WhatsAppCredentials,\n done: PlatformCallback,\n ): Promise<void> {\n const { token, apiVersion } = credentials.object;\n let result: ActivityStream;\n try {\n const response = await fetch(\n `https://graph.facebook.com/${apiVersion}/${encodeURIComponent(job.actor.id)}/messages`,\n {\n method: \"POST\",\n redirect: \"error\",\n headers: {\n authorization: `Bearer ${token}`,\n \"content-type\": \"application/json\",\n },\n body: JSON.stringify({\n messaging_product: \"whatsapp\",\n recipient_type: \"individual\",\n // Digits-only E.164 is valid input, but Meta prepends the\n // business number's country calling code when `to` has no\n // leading \"+\", which misdelivers the message.\n to: job.target.id.startsWith(\"+\")\n ? job.target.id\n : `+${job.target.id}`,\n type: \"text\",\n text: { body: job.object.content, preview_url: false },\n }),\n signal: AbortSignal.timeout(15_000),\n },\n );\n const data: unknown = await response.json();\n if (!data || typeof data !== \"object\") {\n throw new Error(\"whatsapp: invalid API response\");\n }\n if (\"error\" in data || !response.ok) {\n const error = \"error\" in data ? data.error : undefined;\n let detail = `HTTP ${response.status}`;\n if (error && typeof error === \"object\") {\n if (\"code\" in error && typeof error.code === \"number\") {\n detail += `, code ${error.code}`;\n }\n if (\n \"message\" in error &&\n typeof error.message === \"string\"\n ) {\n detail += `: ${error.message.split(token).join(\"[redacted]\")}`;\n }\n }\n // 131047: more than 24 hours since the recipient last messaged.\n const windowClosed =\n error &&\n typeof error === \"object\" &&\n \"code\" in error &&\n error.code === 131047;\n const reason = windowClosed\n ? \"meta:messaging-window-closed\"\n : \"whatsapp: send rejected\";\n throw new Error(`${reason} (${detail})`);\n }\n const id =\n \"messages\" in data &&\n Array.isArray(data.messages) &&\n data.messages[0] &&\n typeof data.messages[0] === \"object\" &&\n \"id\" in data.messages[0]\n ? data.messages[0].id\n : undefined;\n if (typeof id !== \"string\" || !id) {\n throw new Error(\"whatsapp: API response missing message id\");\n }\n result = { ...job, object: { ...job.object, id } };\n } catch (error) {\n // Network errors may contain request details; never expose tokens.\n const failure =\n error instanceof Error &&\n (error.message.startsWith(\"whatsapp:\") ||\n error.message.startsWith(\"meta:messaging-window-closed\"))\n ? new Error(error.message.split(token).join(\"[redacted]\"))\n : new Error(\n \"whatsapp: send failed (network error, timeout, or invalid JSON); delivery is unknown\",\n );\n this.log.warn(`send failed for actor ${job.actor.id} on whatsapp`);\n done(failure);\n return;\n }\n done(null, result);\n }\n}\n"
7
7
  ],
8
8
  "mappings": "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",
9
- "debugId": "C22874587E17191664756E2164756E21",
9
+ "debugId": "16F72D82766D5FF264756E2164756E21",
10
10
  "names": []
11
11
  }
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@sockethub/platform-whatsapp",
3
3
  "description": "Outgoing text messages through the WhatsApp Business Cloud API",
4
- "version": "1.0.0-beta.5",
4
+ "version": "1.0.0-beta.6",
5
5
  "type": "module",
6
6
  "private": false,
7
7
  "license": "LGPL-3.0+",
@@ -30,18 +30,18 @@
30
30
  "test": "bun test src/"
31
31
  },
32
32
  "dependencies": {
33
- "@sockethub/schemas": "^3.0.0-beta.5"
33
+ "@sockethub/schemas": "^3.0.0-beta.6"
34
34
  },
35
35
  "devDependencies": {
36
36
  "@types/bun": "latest"
37
37
  },
38
38
  "peerDependencies": {
39
- "@sockethub/server": "^5.0.0-beta.5"
39
+ "@sockethub/server": "^5.0.0-beta.6"
40
40
  },
41
41
  "peerDependenciesMeta": {
42
42
  "@sockethub/server": {
43
43
  "optional": true
44
44
  }
45
45
  },
46
- "gitHead": "2dffe4cc1bea5375e38531b1012b56bcbab93569"
46
+ "gitHead": "9d6fb334b8c72b2e618f16cb0218cf0719f4c7cf"
47
47
  }