@sockethub/platform-instagram 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-instagram",
4
4
  description: "Outgoing text messages through the Meta Instagram 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
@@ -236,4 +236,4 @@ export {
236
236
  Instagram as default
237
237
  };
238
238
 
239
- //# debugId=C57A5D96CF875E0664756E2164756E21
239
+ //# debugId=7A25BD400A75560C64756E2164756E21
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 { PlatformInstagramSchema } from \"./schema.js\";\n\nexport interface InstagramCredentials extends CredentialsObject {\n object: {\n type: \"credentials\";\n token: string;\n apiVersion: string;\n login?: \"instagram\" | \"facebook\";\n pageId?: string;\n };\n}\n\nconst MAX_TEXT_BYTES = 1000;\n\nexport default class Instagram 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 PlatformInstagramSchema;\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: InstagramCredentials,\n done: PlatformCallback,\n ): Promise<void> {\n const { token, apiVersion, login, pageId } = credentials.object;\n const facebookLogin = login === \"facebook\";\n const host = facebookLogin\n ? \"graph.facebook.com\"\n : \"graph.instagram.com\";\n const accountId = facebookLogin ? pageId : job.actor.id;\n const humanAgent = job.object.humanAgent === true;\n let result: ActivityStream;\n try {\n // Meta limits Instagram text to 1000 UTF-8 bytes; the schema's\n // maxLength counts code points, so multi-byte text needs this check.\n const bytes = new TextEncoder().encode(job.object.content).length;\n if (bytes > MAX_TEXT_BYTES) {\n throw new Error(\n `instagram: message text is ${bytes} UTF-8 bytes; Meta allows at most ${MAX_TEXT_BYTES}`,\n );\n }\n const response = await fetch(\n `https://${host}/${apiVersion}/${encodeURIComponent(accountId)}/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 recipient: { id: job.target.id },\n message: { text: job.object.content },\n\n ...(facebookLogin\n ? {\n messaging_type: humanAgent\n ? \"MESSAGE_TAG\"\n : \"RESPONSE\",\n }\n : {}),\n ...(humanAgent\n ? {\n tag: facebookLogin\n ? \"HUMAN_AGENT\"\n : \"human_agent\",\n }\n : {}),\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(\"instagram: 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 \"error_subcode\" in error &&\n typeof error.error_subcode === \"number\"\n ) {\n detail += `, subcode ${error.error_subcode}`;\n }\n if (\n \"message\" in error &&\n typeof error.message === \"string\"\n ) {\n detail += `: ${error.message.split(token).join(\"[redacted]\")}`;\n }\n }\n const windowClosed =\n error &&\n typeof error === \"object\" &&\n \"code\" in error &&\n error.code === 10 &&\n \"error_subcode\" in error &&\n (error.error_subcode === 2018278 ||\n error.error_subcode === 2534022);\n const reason = windowClosed\n ? \"meta:messaging-window-closed\"\n : \"instagram: send rejected\";\n throw new Error(`${reason} (${detail})`);\n }\n if (\n !(\"message_id\" in data) ||\n typeof data.message_id !== \"string\" ||\n !data.message_id\n ) {\n throw new Error(\"instagram: API response missing message_id\");\n }\n result = {\n ...job,\n object: { ...job.object, id: data.message_id },\n };\n } catch (error) {\n // Network errors may contain request details; never expose tokens.\n const failure =\n error instanceof Error &&\n (error.message.startsWith(\"instagram:\") ||\n error.message.startsWith(\"meta:messaging-window-closed\"))\n ? new Error(error.message.split(token).join(\"[redacted]\"))\n : new Error(\n \"instagram: send failed (network error, timeout, or invalid JSON); delivery is unknown\",\n );\n this.log.warn(`send failed for actor ${job.actor.id} on instagram`);\n done(failure);\n return;\n }\n done(null, result);\n }\n}\n"
7
7
  ],
8
8
  "mappings": "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",
9
- "debugId": "C57A5D96CF875E0664756E2164756E21",
9
+ "debugId": "7A25BD400A75560C64756E2164756E21",
10
10
  "names": []
11
11
  }
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@sockethub/platform-instagram",
3
3
  "description": "Outgoing text messages through the Meta Instagram 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
  }