@frogbotai/piece-slack 0.28.0 → 0.30.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 (42) hide show
  1. package/README.md +3 -2
  2. package/dist/actions.d.ts +2 -2
  3. package/dist/actions.d.ts.map +1 -1
  4. package/dist/actions.js +285 -193
  5. package/dist/actions.js.map +1 -1
  6. package/dist/client.js +47 -35
  7. package/dist/client.js.map +1 -1
  8. package/dist/config.js +17 -5
  9. package/dist/config.js.map +1 -1
  10. package/dist/define.js +1 -0
  11. package/dist/define.js.map +1 -1
  12. package/dist/files.d.ts.map +1 -1
  13. package/dist/files.js +25 -15
  14. package/dist/files.js.map +1 -1
  15. package/dist/index.d.ts +1 -1
  16. package/dist/index.js +45 -39
  17. package/dist/index.js.map +1 -1
  18. package/dist/options.js +36 -21
  19. package/dist/options.js.map +1 -1
  20. package/dist/questions/blocks.js +148 -74
  21. package/dist/questions/blocks.js.map +1 -1
  22. package/dist/questions/index.js +2 -1
  23. package/dist/questions/index.js.map +1 -1
  24. package/dist/questions/notify.js +19 -13
  25. package/dist/questions/notify.js.map +1 -1
  26. package/dist/questions/parse.js +110 -59
  27. package/dist/questions/parse.js.map +1 -1
  28. package/dist/questions/render.js +16 -7
  29. package/dist/questions/render.js.map +1 -1
  30. package/dist/questions/settled.js +9 -3
  31. package/dist/questions/settled.js.map +1 -1
  32. package/dist/questions/slackThread.js +12 -6
  33. package/dist/questions/slackThread.js.map +1 -1
  34. package/dist/questions/state.js +18 -5
  35. package/dist/questions/state.js.map +1 -1
  36. package/dist/questions/updated.js +32 -24
  37. package/dist/questions/updated.js.map +1 -1
  38. package/dist/triggers.js +150 -126
  39. package/dist/triggers.js.map +1 -1
  40. package/dist/webhook.js +28 -43
  41. package/dist/webhook.js.map +1 -1
  42. package/package.json +4 -4
package/dist/webhook.js CHANGED
@@ -1,43 +1,30 @@
1
1
  import { createHmac, timingSafeEqual } from 'node:crypto';
2
2
  const replayWindowSeconds = 300;
3
3
  function eventMap(value) {
4
- return value && typeof value === 'object' && !Array.isArray(value)
5
- ? Object.fromEntries(Object.entries(value))
6
- : undefined;
4
+ return value && typeof value === 'object' && !Array.isArray(value) ? Object.fromEntries(Object.entries(value)) : undefined;
7
5
  }
8
6
  function interactivePayload(data) {
9
- if (!data ||
10
- typeof data !== 'object' ||
11
- !('payload' in data) ||
12
- typeof data.payload !== 'string') {
7
+ if (!data || typeof data !== 'object' || !('payload' in data) || typeof data.payload !== 'string') {
13
8
  return undefined;
14
9
  }
15
10
  try {
16
11
  const value = JSON.parse(data.payload);
17
12
  return eventMap(value);
18
- }
19
- catch {
13
+ } catch {
20
14
  return undefined;
21
15
  }
22
16
  }
23
17
  export function slackEvent(req) {
24
18
  const interaction = interactivePayload(req.data);
25
- if (interaction)
26
- return interaction;
19
+ if (interaction) return interaction;
27
20
  const data = eventMap(req.data);
28
- if (!data)
29
- return undefined;
21
+ if (!data) return undefined;
30
22
  return eventMap(data.event);
31
23
  }
32
24
  export function slackWorkspace(req) {
33
25
  const interaction = interactivePayload(req.data);
34
- if (interaction &&
35
- 'team' in interaction &&
36
- interaction.team &&
37
- typeof interaction.team === 'object') {
38
- return 'id' in interaction.team && typeof interaction.team.id === 'string'
39
- ? interaction.team.id
40
- : undefined;
26
+ if (interaction && 'team' in interaction && interaction.team && typeof interaction.team === 'object') {
27
+ return 'id' in interaction.team && typeof interaction.team.id === 'string' ? interaction.team.id : undefined;
41
28
  }
42
29
  const data = eventMap(req.data);
43
30
  return data && typeof data.team_id === 'string' ? data.team_id : undefined;
@@ -45,55 +32,53 @@ export function slackWorkspace(req) {
45
32
  export function slackEventType(req) {
46
33
  const interaction = interactivePayload(req.data);
47
34
  if (interaction && 'type' in interaction && typeof interaction.type === 'string') {
48
- return ['view_submission', 'view_closed'].includes(interaction.type)
49
- ? 'modal_interaction'
50
- : interaction.type;
35
+ return [
36
+ 'view_submission',
37
+ 'view_closed'
38
+ ].includes(interaction.type) ? 'modal_interaction' : interaction.type;
51
39
  }
52
40
  const event = slackEvent(req);
53
41
  return event && 'type' in event && typeof event.type === 'string' ? event.type : '';
54
42
  }
55
- export async function verifySlackWebhook({ req, options, }) {
56
- if (!options.signingSecret)
57
- return false;
43
+ export async function verifySlackWebhook({ req, options }) {
44
+ if (!options.signingSecret) return false;
58
45
  const timestampHeader = req.headers.get('x-slack-request-timestamp');
59
46
  const signature = req.headers.get('x-slack-signature');
60
- if (!timestampHeader || !signature || !/^v0=[a-f0-9]{64}$/.test(signature))
61
- return false;
47
+ if (!timestampHeader || !signature || !/^v0=[a-f0-9]{64}$/.test(signature)) return false;
62
48
  const timestamp = Number(timestampHeader);
63
49
  const now = Math.floor(Date.now() / 1000);
64
50
  if (!Number.isSafeInteger(timestamp) || Math.abs(now - timestamp) > replayWindowSeconds) {
65
51
  return false;
66
52
  }
67
53
  const parse = req.clone;
68
- if (typeof parse !== 'function')
69
- return false;
54
+ if (typeof parse !== 'function') return false;
70
55
  let rawBody;
71
56
  try {
72
57
  rawBody = await parse.call(req).text();
73
- }
74
- catch {
58
+ } catch {
75
59
  return false;
76
60
  }
77
- const expected = `v0=${createHmac('sha256', options.signingSecret)
78
- .update(`v0:${timestampHeader}:${rawBody}`)
79
- .digest('hex')}`;
61
+ const expected = `v0=${createHmac('sha256', options.signingSecret).update(`v0:${timestampHeader}:${rawBody}`).digest('hex')}`;
80
62
  const suppliedBytes = Buffer.from(signature);
81
63
  const expectedBytes = Buffer.from(expected);
82
- if (suppliedBytes.length !== expectedBytes.length ||
83
- !timingSafeEqual(suppliedBytes, expectedBytes)) {
64
+ if (suppliedBytes.length !== expectedBytes.length || !timingSafeEqual(suppliedBytes, expectedBytes)) {
84
65
  return false;
85
66
  }
86
67
  return true;
87
68
  }
88
69
  export function slackHandshake(req) {
89
70
  const data = eventMap(req.data);
90
- if (!data)
91
- return null;
92
- return typeof data.challenge === 'string'
93
- ? new Response(data.challenge, { headers: { 'content-type': 'text/plain' } })
94
- : null;
71
+ if (!data) return null;
72
+ return typeof data.challenge === 'string' ? new Response(data.challenge, {
73
+ headers: {
74
+ 'content-type': 'text/plain'
75
+ }
76
+ }) : null;
95
77
  }
96
78
  export function parseSlackWebhook(req) {
97
- return { event: slackEventType(req) };
79
+ return {
80
+ event: slackEventType(req)
81
+ };
98
82
  }
83
+
99
84
  //# sourceMappingURL=webhook.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"webhook.js","sourceRoot":"","sources":["../src/webhook.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"sources":["../src/webhook.ts"],"names":["createHmac","timingSafeEqual","replayWindowSeconds","eventMap","value","Array","isArray","Object","fromEntries","entries","undefined","interactivePayload","data","payload","JSON","parse","slackEvent","req","interaction","event","slackWorkspace","team","id","team_id","slackEventType","type","includes","verifySlackWebhook","options","signingSecret","timestampHeader","headers","get","signature","test","timestamp","Number","now","Math","floor","Date","isSafeInteger","abs","clone","rawBody","call","text","expected","update","digest","suppliedBytes","Buffer","from","expectedBytes","length","slackHandshake","challenge","Response","parseSlackWebhook"],"mappings":"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","file":"webhook.js"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@frogbotai/piece-slack",
3
- "version": "0.28.0",
3
+ "version": "0.30.0",
4
4
  "description": "slack tools for FrogBot.",
5
5
  "license": "MIT",
6
6
  "author": "Colby Gilbert",
@@ -24,17 +24,17 @@
24
24
  "zod": "^4.3.6"
25
25
  },
26
26
  "peerDependencies": {
27
- "frogbot": "0.28.0"
27
+ "frogbot": "0.30.0"
28
28
  },
29
29
  "devDependencies": {
30
30
  "typescript": "5.6.2",
31
- "frogbot": "0.28.0"
31
+ "frogbot": "0.30.0"
32
32
  },
33
33
  "publishConfig": {
34
34
  "access": "public"
35
35
  },
36
36
  "scripts": {
37
- "build": "rm -rf dist && tsc -p tsconfig.json",
37
+ "build": "node ../../../scripts/build-package.mjs",
38
38
  "clean": "rm -rf dist",
39
39
  "typecheck": "tsc --noEmit"
40
40
  }