@pakoor/n8n-nodes-instagram 0.1.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.
Files changed (51) hide show
  1. package/README.md +271 -0
  2. package/dist/__tests__/helpers/index.d.ts +2 -0
  3. package/dist/__tests__/helpers/index.d.ts.map +1 -0
  4. package/dist/__tests__/helpers/index.js +18 -0
  5. package/dist/__tests__/helpers/index.js.map +1 -0
  6. package/dist/__tests__/helpers/testUtils.d.ts +104 -0
  7. package/dist/__tests__/helpers/testUtils.d.ts.map +1 -0
  8. package/dist/__tests__/helpers/testUtils.js +175 -0
  9. package/dist/__tests__/helpers/testUtils.js.map +1 -0
  10. package/dist/credentials/InstagramAccessTokenApi.credentials.d.ts +19 -0
  11. package/dist/credentials/InstagramAccessTokenApi.credentials.d.ts.map +1 -0
  12. package/dist/credentials/InstagramAccessTokenApi.credentials.js +130 -0
  13. package/dist/credentials/InstagramAccessTokenApi.credentials.js.map +1 -0
  14. package/dist/credentials/InstagramOAuth2Api.credentials.d.ts +20 -0
  15. package/dist/credentials/InstagramOAuth2Api.credentials.d.ts.map +1 -0
  16. package/dist/credentials/InstagramOAuth2Api.credentials.js +177 -0
  17. package/dist/credentials/InstagramOAuth2Api.credentials.js.map +1 -0
  18. package/dist/index.d.ts +5 -0
  19. package/dist/index.d.ts.map +1 -0
  20. package/dist/index.js +23 -0
  21. package/dist/index.js.map +1 -0
  22. package/dist/nodes/Instagram/Instagram.node.d.ts +10 -0
  23. package/dist/nodes/Instagram/Instagram.node.d.ts.map +1 -0
  24. package/dist/nodes/Instagram/Instagram.node.js +1152 -0
  25. package/dist/nodes/Instagram/Instagram.node.js.map +1 -0
  26. package/dist/nodes/Instagram/InstagramTrigger.node.d.ts +61 -0
  27. package/dist/nodes/Instagram/InstagramTrigger.node.d.ts.map +1 -0
  28. package/dist/nodes/Instagram/InstagramTrigger.node.js +315 -0
  29. package/dist/nodes/Instagram/InstagramTrigger.node.js.map +1 -0
  30. package/dist/nodes/Instagram/instagram.svg +15 -0
  31. package/dist/services/InstagramApiClient.d.ts +261 -0
  32. package/dist/services/InstagramApiClient.d.ts.map +1 -0
  33. package/dist/services/InstagramApiClient.js +548 -0
  34. package/dist/services/InstagramApiClient.js.map +1 -0
  35. package/dist/services/TokenManager.d.ts +73 -0
  36. package/dist/services/TokenManager.d.ts.map +1 -0
  37. package/dist/services/TokenManager.js +150 -0
  38. package/dist/services/TokenManager.js.map +1 -0
  39. package/dist/services/ValidationUtils.d.ts +44 -0
  40. package/dist/services/ValidationUtils.d.ts.map +1 -0
  41. package/dist/services/ValidationUtils.js +203 -0
  42. package/dist/services/ValidationUtils.js.map +1 -0
  43. package/dist/services/WebhookHandler.d.ts +206 -0
  44. package/dist/services/WebhookHandler.d.ts.map +1 -0
  45. package/dist/services/WebhookHandler.js +261 -0
  46. package/dist/services/WebhookHandler.js.map +1 -0
  47. package/dist/services/index.d.ts +5 -0
  48. package/dist/services/index.d.ts.map +1 -0
  49. package/dist/services/index.js +21 -0
  50. package/dist/services/index.js.map +1 -0
  51. package/package.json +69 -0
@@ -0,0 +1,261 @@
1
+ "use strict";
2
+ /**
3
+ * WebhookHandler Service
4
+ * Handles Instagram webhook verification, signature validation, and event processing
5
+ *
6
+ * Requirements covered:
7
+ * - 12.1: Webhook verification with hub.challenge response
8
+ * - 12.2: Incoming message event parsing (sender, text, attachments)
9
+ * - 12.3: Postback event parsing (title, payload)
10
+ * - 12.4: Opt-in event parsing (ref, user_ref)
11
+ * - 12.5: X-Hub-Signature-256 validation using HMAC SHA256
12
+ * - 12.6: Signature validation failure handling
13
+ * - 13.1: Comment event parsing (media_id, comment text, commenter info)
14
+ * - 13.2: Mention event parsing (media_id, mentioned by)
15
+ * - 13.3: Dual output system (Output 1: messaging, Output 2: content)
16
+ */
17
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
18
+ if (k2 === undefined) k2 = k;
19
+ var desc = Object.getOwnPropertyDescriptor(m, k);
20
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
21
+ desc = { enumerable: true, get: function() { return m[k]; } };
22
+ }
23
+ Object.defineProperty(o, k2, desc);
24
+ }) : (function(o, m, k, k2) {
25
+ if (k2 === undefined) k2 = k;
26
+ o[k2] = m[k];
27
+ }));
28
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
29
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
30
+ }) : function(o, v) {
31
+ o["default"] = v;
32
+ });
33
+ var __importStar = (this && this.__importStar) || (function () {
34
+ var ownKeys = function(o) {
35
+ ownKeys = Object.getOwnPropertyNames || function (o) {
36
+ var ar = [];
37
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
38
+ return ar;
39
+ };
40
+ return ownKeys(o);
41
+ };
42
+ return function (mod) {
43
+ if (mod && mod.__esModule) return mod;
44
+ var result = {};
45
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
46
+ __setModuleDefault(result, mod);
47
+ return result;
48
+ };
49
+ })();
50
+ Object.defineProperty(exports, "__esModule", { value: true });
51
+ exports.WebhookHandler = void 0;
52
+ const crypto = __importStar(require("crypto"));
53
+ class WebhookHandler {
54
+ /**
55
+ * Verify webhook subscription request (Requirement 12.1)
56
+ * Returns challenge if verify token matches, null otherwise
57
+ *
58
+ * @param query - The query parameters from the verification request
59
+ * @param expectedVerifyToken - The expected verify token configured in the app
60
+ * @returns The challenge string if verification succeeds, null otherwise
61
+ */
62
+ verifyWebhook(query, expectedVerifyToken) {
63
+ if (query['hub.mode'] === 'subscribe' &&
64
+ query['hub.verify_token'] === expectedVerifyToken &&
65
+ query['hub.challenge']) {
66
+ return query['hub.challenge'];
67
+ }
68
+ return null;
69
+ }
70
+ /**
71
+ * Validate webhook signature using HMAC SHA256 (Requirements 12.5, 12.6)
72
+ * Uses timing-safe comparison to prevent timing attacks
73
+ *
74
+ * @param payload - The raw request body as a string
75
+ * @param signature - The X-Hub-Signature-256 header value
76
+ * @param appSecret - The app secret used for HMAC calculation
77
+ * @returns true if signature is valid, false otherwise
78
+ */
79
+ validateSignature(payload, signature, appSecret) {
80
+ if (!signature || !signature.startsWith('sha256=')) {
81
+ return false;
82
+ }
83
+ const expectedSignature = crypto
84
+ .createHmac('sha256', appSecret)
85
+ .update(payload)
86
+ .digest('hex');
87
+ const providedSignature = signature.replace('sha256=', '');
88
+ // Ensure both signatures have the same length before comparison
89
+ if (expectedSignature.length !== providedSignature.length) {
90
+ return false;
91
+ }
92
+ try {
93
+ return crypto.timingSafeEqual(Buffer.from(expectedSignature, 'hex'), Buffer.from(providedSignature, 'hex'));
94
+ }
95
+ catch {
96
+ // Handle invalid hex strings
97
+ return false;
98
+ }
99
+ }
100
+ /**
101
+ * Process webhook payload and route events to appropriate outputs (Requirement 13.3)
102
+ * Output 1: Messaging events (messages, postbacks, optins)
103
+ * Output 2: Content events (comments, mentions)
104
+ *
105
+ * @param body - The webhook body from Instagram
106
+ * @returns Separated messaging and content events
107
+ */
108
+ processWebhook(body) {
109
+ const messagingEvents = [];
110
+ const contentEvents = [];
111
+ if (body.object !== 'instagram' || !body.entry) {
112
+ return { messagingEvents, contentEvents };
113
+ }
114
+ for (const entry of body.entry) {
115
+ // Collect messaging events (Output 1) - Requirements 12.2, 12.3, 12.4
116
+ if (entry.messaging && Array.isArray(entry.messaging)) {
117
+ messagingEvents.push(...entry.messaging);
118
+ }
119
+ // Collect content events (Output 2) - Requirements 13.1, 13.2
120
+ if (entry.changes && Array.isArray(entry.changes)) {
121
+ contentEvents.push(...entry.changes);
122
+ }
123
+ }
124
+ return { messagingEvents, contentEvents };
125
+ }
126
+ /**
127
+ * Parse a messaging event into a more consumable format (Requirements 12.2, 12.3, 12.4)
128
+ * Extracts sender ID, message ID, text/attachments for messages
129
+ * Extracts sender ID, title, payload for postbacks
130
+ * Extracts ref, user_ref for optins
131
+ *
132
+ * @param event - The raw messaging event
133
+ * @returns Parsed event with extracted fields, or null if invalid
134
+ */
135
+ parseMessagingEvent(event) {
136
+ const baseFields = {
137
+ senderId: event.sender?.id,
138
+ recipientId: event.recipient?.id,
139
+ timestamp: event.timestamp,
140
+ };
141
+ // Validate required base fields
142
+ if (!baseFields.senderId || !baseFields.recipientId) {
143
+ return null;
144
+ }
145
+ // Parse message event (Requirement 12.2)
146
+ if (event.message) {
147
+ return {
148
+ type: 'message',
149
+ ...baseFields,
150
+ messageId: event.message.mid,
151
+ text: event.message.text,
152
+ attachments: event.message.attachments,
153
+ };
154
+ }
155
+ // Parse postback event (Requirement 12.3)
156
+ if (event.postback) {
157
+ return {
158
+ type: 'postback',
159
+ ...baseFields,
160
+ messageId: event.postback.mid,
161
+ title: event.postback.title,
162
+ payload: event.postback.payload,
163
+ };
164
+ }
165
+ // Parse opt-in event (Requirement 12.4)
166
+ if (event.optin) {
167
+ return {
168
+ type: 'optin',
169
+ ...baseFields,
170
+ ref: event.optin.ref,
171
+ userRef: event.optin.user_ref,
172
+ };
173
+ }
174
+ return null;
175
+ }
176
+ /**
177
+ * Parse a content event into a more consumable format (Requirements 13.1, 13.2)
178
+ * Extracts media ID, comment ID, text, commenter info for comments
179
+ * Extracts media ID, mentioned by info for mentions
180
+ *
181
+ * @param event - The raw change event
182
+ * @returns Parsed event with extracted fields, or null if invalid
183
+ */
184
+ parseContentEvent(event) {
185
+ if (!event.value || !event.value.media_id || !event.value.id || !event.value.from) {
186
+ return null;
187
+ }
188
+ // Parse comment event (Requirement 13.1)
189
+ if (event.field === 'comments') {
190
+ return {
191
+ type: 'comment',
192
+ mediaId: event.value.media_id,
193
+ commentId: event.value.id,
194
+ text: event.value.text,
195
+ from: event.value.from,
196
+ };
197
+ }
198
+ // Parse mention event (Requirement 13.2)
199
+ if (event.field === 'mentions') {
200
+ return {
201
+ type: 'mention',
202
+ mediaId: event.value.media_id,
203
+ mentionId: event.value.id,
204
+ from: event.value.from,
205
+ };
206
+ }
207
+ return null;
208
+ }
209
+ /**
210
+ * Process and parse all events from a webhook body
211
+ * Returns fully parsed events ready for n8n output
212
+ *
213
+ * @param body - The webhook body from Instagram
214
+ * @returns Parsed messaging and content events
215
+ */
216
+ processAndParseWebhook(body) {
217
+ const { messagingEvents, contentEvents } = this.processWebhook(body);
218
+ const parsedMessaging = messagingEvents
219
+ .map((event) => this.parseMessagingEvent(event))
220
+ .filter((event) => event !== null);
221
+ const parsedContent = contentEvents
222
+ .map((event) => this.parseContentEvent(event))
223
+ .filter((event) => event !== null);
224
+ return {
225
+ messagingEvents: parsedMessaging,
226
+ contentEvents: parsedContent,
227
+ };
228
+ }
229
+ /**
230
+ * Check if a messaging event is a message type
231
+ */
232
+ isMessageEvent(event) {
233
+ return !!event.message;
234
+ }
235
+ /**
236
+ * Check if a messaging event is a postback type
237
+ */
238
+ isPostbackEvent(event) {
239
+ return !!event.postback;
240
+ }
241
+ /**
242
+ * Check if a messaging event is an opt-in type
243
+ */
244
+ isOptinEvent(event) {
245
+ return !!event.optin;
246
+ }
247
+ /**
248
+ * Check if a content event is a comment type
249
+ */
250
+ isCommentEvent(event) {
251
+ return event.field === 'comments';
252
+ }
253
+ /**
254
+ * Check if a content event is a mention type
255
+ */
256
+ isMentionEvent(event) {
257
+ return event.field === 'mentions';
258
+ }
259
+ }
260
+ exports.WebhookHandler = WebhookHandler;
261
+ //# sourceMappingURL=WebhookHandler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WebhookHandler.js","sourceRoot":"","sources":["../../src/services/WebhookHandler.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ export * from './TokenManager';
2
+ export * from './InstagramApiClient';
3
+ export * from './WebhookHandler';
4
+ export * from './ValidationUtils';
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/services/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,sBAAsB,CAAC;AACrC,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC"}
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./TokenManager"), exports);
18
+ __exportStar(require("./InstagramApiClient"), exports);
19
+ __exportStar(require("./WebhookHandler"), exports);
20
+ __exportStar(require("./ValidationUtils"), exports);
21
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/services/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,iDAA+B;AAC/B,uDAAqC;AACrC,mDAAiC;AACjC,oDAAkC"}
package/package.json ADDED
@@ -0,0 +1,69 @@
1
+ {
2
+ "name": "@pakoor/n8n-nodes-instagram",
3
+ "version": "0.1.0",
4
+ "description": "n8n community node for Instagram Messaging API integration",
5
+ "keywords": [
6
+ "n8n-community-node-package",
7
+ "n8n",
8
+ "instagram",
9
+ "messaging",
10
+ "social-media"
11
+ ],
12
+ "license": "MIT",
13
+ "homepage": "",
14
+ "author": {
15
+ "name": ""
16
+ },
17
+ "repository": {
18
+ "type": "git",
19
+ "url": ""
20
+ },
21
+ "main": "dist/index.js",
22
+ "types": "dist/index.d.ts",
23
+ "scripts": {
24
+ "build": "tsc && gulp build:icons",
25
+ "dev": "tsc --watch",
26
+ "format": "prettier --write \"src/**/*.ts\"",
27
+ "lint": "eslint src --ext .ts",
28
+ "lint:fix": "eslint src --ext .ts --fix",
29
+ "prepublishOnly": "npm run build",
30
+ "test": "jest",
31
+ "test:watch": "jest --watch",
32
+ "test:coverage": "jest --coverage"
33
+ },
34
+ "files": [
35
+ "dist"
36
+ ],
37
+ "n8n": {
38
+ "n8nNodesApiVersion": 1,
39
+ "credentials": [
40
+ "dist/credentials/InstagramOAuth2Api.credentials.js",
41
+ "dist/credentials/InstagramAccessTokenApi.credentials.js"
42
+ ],
43
+ "nodes": [
44
+ "dist/nodes/Instagram/Instagram.node.js",
45
+ "dist/nodes/Instagram/InstagramTrigger.node.js"
46
+ ]
47
+ },
48
+ "devDependencies": {
49
+ "@types/jest": "^29.5.12",
50
+ "@types/node": "^20.11.0",
51
+ "@typescript-eslint/eslint-plugin": "^7.0.0",
52
+ "@typescript-eslint/parser": "^7.0.0",
53
+ "eslint": "^8.56.0",
54
+ "eslint-config-prettier": "^9.1.0",
55
+ "eslint-plugin-n8n-nodes-base": "^1.16.1",
56
+ "fast-check": "^3.15.0",
57
+ "gulp": "^4.0.2",
58
+ "jest": "^29.7.0",
59
+ "prettier": "^3.2.0",
60
+ "ts-jest": "^29.1.2",
61
+ "typescript": "^5.3.3"
62
+ },
63
+ "peerDependencies": {
64
+ "n8n-workflow": "*"
65
+ },
66
+ "dependencies": {
67
+ "n8n-core": "^1.0.0"
68
+ }
69
+ }