@yuniruyuni/n8n-nodes-twitch 0.1.1

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 (139) hide show
  1. package/LICENSE.md +19 -0
  2. package/README.ja.md +243 -0
  3. package/README.md +243 -0
  4. package/dist/credentials/TwitchApi.credentials.d.ts +10 -0
  5. package/dist/credentials/TwitchApi.credentials.js +47 -0
  6. package/dist/credentials/TwitchApi.credentials.js.map +1 -0
  7. package/dist/credentials/TwitchOAuth2Api.credentials.d.ts +10 -0
  8. package/dist/credentials/TwitchOAuth2Api.credentials.js +434 -0
  9. package/dist/credentials/TwitchOAuth2Api.credentials.js.map +1 -0
  10. package/dist/icons/twitch.dark.svg +1 -0
  11. package/dist/icons/twitch.svg +1 -0
  12. package/dist/nodes/TwitchAnnouncements/TwitchAnnouncements.node.d.ts +4 -0
  13. package/dist/nodes/TwitchAnnouncements/TwitchAnnouncements.node.js +196 -0
  14. package/dist/nodes/TwitchAnnouncements/TwitchAnnouncements.node.js.map +1 -0
  15. package/dist/nodes/TwitchAnnouncements/twitch.dark.svg +1 -0
  16. package/dist/nodes/TwitchAnnouncements/twitch.svg +1 -0
  17. package/dist/nodes/TwitchBans/TwitchBans.node.d.ts +4 -0
  18. package/dist/nodes/TwitchBans/TwitchBans.node.js +354 -0
  19. package/dist/nodes/TwitchBans/TwitchBans.node.js.map +1 -0
  20. package/dist/nodes/TwitchBans/twitch.dark.svg +1 -0
  21. package/dist/nodes/TwitchBans/twitch.svg +1 -0
  22. package/dist/nodes/TwitchBitsLeaderboard/TwitchBitsLeaderboard.node.d.ts +4 -0
  23. package/dist/nodes/TwitchBitsLeaderboard/TwitchBitsLeaderboard.node.js +202 -0
  24. package/dist/nodes/TwitchBitsLeaderboard/TwitchBitsLeaderboard.node.js.map +1 -0
  25. package/dist/nodes/TwitchBitsLeaderboard/twitch.dark.svg +1 -0
  26. package/dist/nodes/TwitchBitsLeaderboard/twitch.svg +1 -0
  27. package/dist/nodes/TwitchChannels/TwitchChannels.node.d.ts +4 -0
  28. package/dist/nodes/TwitchChannels/TwitchChannels.node.js +124 -0
  29. package/dist/nodes/TwitchChannels/TwitchChannels.node.js.map +1 -0
  30. package/dist/nodes/TwitchChannels/twitch.dark.svg +1 -0
  31. package/dist/nodes/TwitchChannels/twitch.svg +1 -0
  32. package/dist/nodes/TwitchChatMessages/TwitchChatMessages.node.d.ts +4 -0
  33. package/dist/nodes/TwitchChatMessages/TwitchChatMessages.node.js +160 -0
  34. package/dist/nodes/TwitchChatMessages/TwitchChatMessages.node.js.map +1 -0
  35. package/dist/nodes/TwitchChatMessages/twitch.dark.svg +1 -0
  36. package/dist/nodes/TwitchChatMessages/twitch.svg +1 -0
  37. package/dist/nodes/TwitchChatters/TwitchChatters.node.d.ts +4 -0
  38. package/dist/nodes/TwitchChatters/TwitchChatters.node.js +148 -0
  39. package/dist/nodes/TwitchChatters/TwitchChatters.node.js.map +1 -0
  40. package/dist/nodes/TwitchChatters/twitch.dark.svg +1 -0
  41. package/dist/nodes/TwitchChatters/twitch.svg +1 -0
  42. package/dist/nodes/TwitchCheermotes/TwitchCheermotes.node.d.ts +4 -0
  43. package/dist/nodes/TwitchCheermotes/TwitchCheermotes.node.js +113 -0
  44. package/dist/nodes/TwitchCheermotes/TwitchCheermotes.node.js.map +1 -0
  45. package/dist/nodes/TwitchCheermotes/twitch.dark.svg +1 -0
  46. package/dist/nodes/TwitchCheermotes/twitch.svg +1 -0
  47. package/dist/nodes/TwitchClips/TwitchClips.node.d.ts +4 -0
  48. package/dist/nodes/TwitchClips/TwitchClips.node.js +308 -0
  49. package/dist/nodes/TwitchClips/TwitchClips.node.js.map +1 -0
  50. package/dist/nodes/TwitchClips/twitch.dark.svg +1 -0
  51. package/dist/nodes/TwitchClips/twitch.svg +1 -0
  52. package/dist/nodes/TwitchCustomRewards/TwitchCustomRewards.node.d.ts +4 -0
  53. package/dist/nodes/TwitchCustomRewards/TwitchCustomRewards.node.js +606 -0
  54. package/dist/nodes/TwitchCustomRewards/TwitchCustomRewards.node.js.map +1 -0
  55. package/dist/nodes/TwitchCustomRewards/twitch.dark.svg +1 -0
  56. package/dist/nodes/TwitchCustomRewards/twitch.svg +1 -0
  57. package/dist/nodes/TwitchEmotes/TwitchEmotes.node.d.ts +4 -0
  58. package/dist/nodes/TwitchEmotes/TwitchEmotes.node.js +125 -0
  59. package/dist/nodes/TwitchEmotes/TwitchEmotes.node.js.map +1 -0
  60. package/dist/nodes/TwitchEmotes/twitch.dark.svg +1 -0
  61. package/dist/nodes/TwitchEmotes/twitch.svg +1 -0
  62. package/dist/nodes/TwitchGames/TwitchGames.node.d.ts +4 -0
  63. package/dist/nodes/TwitchGames/TwitchGames.node.js +260 -0
  64. package/dist/nodes/TwitchGames/TwitchGames.node.js.map +1 -0
  65. package/dist/nodes/TwitchGames/twitch.dark.svg +1 -0
  66. package/dist/nodes/TwitchGames/twitch.svg +1 -0
  67. package/dist/nodes/TwitchModerators/TwitchModerators.node.d.ts +4 -0
  68. package/dist/nodes/TwitchModerators/TwitchModerators.node.js +310 -0
  69. package/dist/nodes/TwitchModerators/TwitchModerators.node.js.map +1 -0
  70. package/dist/nodes/TwitchModerators/twitch.dark.svg +1 -0
  71. package/dist/nodes/TwitchModerators/twitch.svg +1 -0
  72. package/dist/nodes/TwitchPolls/TwitchPolls.node.d.ts +4 -0
  73. package/dist/nodes/TwitchPolls/TwitchPolls.node.js +452 -0
  74. package/dist/nodes/TwitchPolls/TwitchPolls.node.js.map +1 -0
  75. package/dist/nodes/TwitchPolls/twitch.dark.svg +1 -0
  76. package/dist/nodes/TwitchPolls/twitch.svg +1 -0
  77. package/dist/nodes/TwitchPredictions/TwitchPredictions.node.d.ts +4 -0
  78. package/dist/nodes/TwitchPredictions/TwitchPredictions.node.js +408 -0
  79. package/dist/nodes/TwitchPredictions/TwitchPredictions.node.js.map +1 -0
  80. package/dist/nodes/TwitchPredictions/twitch.dark.svg +1 -0
  81. package/dist/nodes/TwitchPredictions/twitch.svg +1 -0
  82. package/dist/nodes/TwitchRaids/TwitchRaids.node.d.ts +4 -0
  83. package/dist/nodes/TwitchRaids/TwitchRaids.node.js +192 -0
  84. package/dist/nodes/TwitchRaids/TwitchRaids.node.js.map +1 -0
  85. package/dist/nodes/TwitchRaids/twitch.dark.svg +1 -0
  86. package/dist/nodes/TwitchRaids/twitch.svg +1 -0
  87. package/dist/nodes/TwitchRedemptions/TwitchRedemptions.node.d.ts +4 -0
  88. package/dist/nodes/TwitchRedemptions/TwitchRedemptions.node.js +301 -0
  89. package/dist/nodes/TwitchRedemptions/TwitchRedemptions.node.js.map +1 -0
  90. package/dist/nodes/TwitchRedemptions/twitch.dark.svg +1 -0
  91. package/dist/nodes/TwitchRedemptions/twitch.svg +1 -0
  92. package/dist/nodes/TwitchSchedule/TwitchSchedule.node.d.ts +4 -0
  93. package/dist/nodes/TwitchSchedule/TwitchSchedule.node.js +457 -0
  94. package/dist/nodes/TwitchSchedule/TwitchSchedule.node.js.map +1 -0
  95. package/dist/nodes/TwitchSchedule/twitch.dark.svg +1 -0
  96. package/dist/nodes/TwitchSchedule/twitch.svg +1 -0
  97. package/dist/nodes/TwitchSearch/TwitchSearch.node.d.ts +4 -0
  98. package/dist/nodes/TwitchSearch/TwitchSearch.node.js +164 -0
  99. package/dist/nodes/TwitchSearch/TwitchSearch.node.js.map +1 -0
  100. package/dist/nodes/TwitchSearch/twitch.dark.svg +1 -0
  101. package/dist/nodes/TwitchSearch/twitch.svg +1 -0
  102. package/dist/nodes/TwitchStreams/TwitchStreams.node.d.ts +4 -0
  103. package/dist/nodes/TwitchStreams/TwitchStreams.node.js +124 -0
  104. package/dist/nodes/TwitchStreams/TwitchStreams.node.js.map +1 -0
  105. package/dist/nodes/TwitchStreams/twitch.dark.svg +1 -0
  106. package/dist/nodes/TwitchStreams/twitch.svg +1 -0
  107. package/dist/nodes/TwitchSubscriptions/TwitchSubscriptions.node.d.ts +4 -0
  108. package/dist/nodes/TwitchSubscriptions/TwitchSubscriptions.node.js +232 -0
  109. package/dist/nodes/TwitchSubscriptions/TwitchSubscriptions.node.js.map +1 -0
  110. package/dist/nodes/TwitchSubscriptions/twitch.dark.svg +1 -0
  111. package/dist/nodes/TwitchSubscriptions/twitch.svg +1 -0
  112. package/dist/nodes/TwitchTeams/TwitchTeams.node.d.ts +4 -0
  113. package/dist/nodes/TwitchTeams/TwitchTeams.node.js +219 -0
  114. package/dist/nodes/TwitchTeams/TwitchTeams.node.js.map +1 -0
  115. package/dist/nodes/TwitchTeams/twitch.dark.svg +1 -0
  116. package/dist/nodes/TwitchTeams/twitch.svg +1 -0
  117. package/dist/nodes/TwitchTrigger/TwitchTrigger.node.d.ts +12 -0
  118. package/dist/nodes/TwitchTrigger/TwitchTrigger.node.js +418 -0
  119. package/dist/nodes/TwitchTrigger/TwitchTrigger.node.js.map +1 -0
  120. package/dist/nodes/TwitchTrigger/twitch.dark.svg +1 -0
  121. package/dist/nodes/TwitchTrigger/twitch.svg +1 -0
  122. package/dist/nodes/TwitchUsers/TwitchUsers.node.d.ts +4 -0
  123. package/dist/nodes/TwitchUsers/TwitchUsers.node.js +124 -0
  124. package/dist/nodes/TwitchUsers/TwitchUsers.node.js.map +1 -0
  125. package/dist/nodes/TwitchUsers/twitch.dark.svg +1 -0
  126. package/dist/nodes/TwitchUsers/twitch.svg +1 -0
  127. package/dist/nodes/TwitchVideos/TwitchVideos.node.d.ts +4 -0
  128. package/dist/nodes/TwitchVideos/TwitchVideos.node.js +371 -0
  129. package/dist/nodes/TwitchVideos/TwitchVideos.node.js.map +1 -0
  130. package/dist/nodes/TwitchVideos/twitch.dark.svg +1 -0
  131. package/dist/nodes/TwitchVideos/twitch.svg +1 -0
  132. package/dist/nodes/TwitchWhispers/TwitchWhispers.node.d.ts +4 -0
  133. package/dist/nodes/TwitchWhispers/TwitchWhispers.node.js +105 -0
  134. package/dist/nodes/TwitchWhispers/TwitchWhispers.node.js.map +1 -0
  135. package/dist/nodes/TwitchWhispers/twitch.dark.svg +1 -0
  136. package/dist/nodes/TwitchWhispers/twitch.svg +1 -0
  137. package/dist/package.json +86 -0
  138. package/dist/tsconfig.tsbuildinfo +1 -0
  139. package/package.json +86 -0
@@ -0,0 +1 @@
1
+ <svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Twitch</title><path fill="#FFFFFF" d="M11.571 4.714h1.715v5.143H11.57zm4.715 0H18v5.143h-1.714zM6 0L1.714 4.286v15.428h5.143V24l4.286-4.286h3.428L22.286 12V0zm14.571 11.143l-3.428 3.428h-3.429l-3 3v-3H6.857V1.714h13.714Z"/></svg>
@@ -0,0 +1 @@
1
+ <svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Twitch</title><path d="M11.571 4.714h1.715v5.143H11.57zm4.715 0H18v5.143h-1.714zM6 0L1.714 4.286v15.428h5.143V24l4.286-4.286h3.428L22.286 12V0zm14.571 11.143l-3.428 3.428h-3.429l-3 3v-3H6.857V1.714h13.714Z"/></svg>
@@ -0,0 +1,4 @@
1
+ import { type INodeType, type INodeTypeDescription } from 'n8n-workflow';
2
+ export declare class TwitchBans implements INodeType {
3
+ description: INodeTypeDescription;
4
+ }
@@ -0,0 +1,354 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TwitchBans = void 0;
4
+ const n8n_workflow_1 = require("n8n-workflow");
5
+ class TwitchBans {
6
+ constructor() {
7
+ this.description = {
8
+ displayName: 'Twitch Bans',
9
+ name: 'twitchBans',
10
+ icon: { light: 'file:twitch.svg', dark: 'file:twitch.dark.svg' },
11
+ group: ['output'],
12
+ version: 1,
13
+ subtitle: '={{$parameter["operation"]}}',
14
+ description: 'Manage banned users in a Twitch channel',
15
+ defaults: {
16
+ name: 'Twitch Bans',
17
+ },
18
+ usableAsTool: true,
19
+ inputs: [n8n_workflow_1.NodeConnectionTypes.Main],
20
+ outputs: [n8n_workflow_1.NodeConnectionTypes.Main],
21
+ credentials: [
22
+ {
23
+ name: 'twitchApi',
24
+ required: true,
25
+ displayOptions: {
26
+ show: {
27
+ authentication: ['clientCredentials'],
28
+ },
29
+ },
30
+ },
31
+ {
32
+ name: 'twitchOAuth2Api',
33
+ required: true,
34
+ displayOptions: {
35
+ show: {
36
+ authentication: ['oAuth2'],
37
+ },
38
+ },
39
+ },
40
+ ],
41
+ requestDefaults: {
42
+ baseURL: 'https://api.twitch.tv/helix',
43
+ headers: {
44
+ Accept: 'application/json',
45
+ 'Content-Type': 'application/json',
46
+ },
47
+ },
48
+ properties: [
49
+ {
50
+ displayName: 'Authentication',
51
+ name: 'authentication',
52
+ type: 'options',
53
+ options: [
54
+ {
55
+ name: 'Client Credentials',
56
+ value: 'clientCredentials',
57
+ },
58
+ {
59
+ name: 'OAuth2',
60
+ value: 'oAuth2',
61
+ },
62
+ ],
63
+ default: 'oAuth2',
64
+ },
65
+ {
66
+ displayName: 'Operation',
67
+ name: 'operation',
68
+ type: 'options',
69
+ noDataExpression: true,
70
+ options: [
71
+ {
72
+ name: 'Ban User',
73
+ value: 'banUser',
74
+ action: 'Ban a user from chat',
75
+ description: 'Ban a user from the broadcaster\'s chat room',
76
+ routing: {
77
+ request: {
78
+ method: 'POST',
79
+ url: '/moderation/bans',
80
+ },
81
+ send: {
82
+ preSend: [
83
+ async function (requestOptions) {
84
+ const qs = {
85
+ broadcaster_id: this.getNodeParameter('broadcasterId'),
86
+ moderator_id: this.getNodeParameter('moderatorId'),
87
+ };
88
+ const data = {
89
+ user_id: this.getNodeParameter('userId'),
90
+ };
91
+ const duration = this.getNodeParameter('duration', 0);
92
+ if (duration > 0) {
93
+ data.duration = duration;
94
+ }
95
+ const reason = this.getNodeParameter('reason', '');
96
+ if (reason) {
97
+ data.reason = reason;
98
+ }
99
+ const body = {
100
+ data,
101
+ };
102
+ requestOptions.qs = qs;
103
+ requestOptions.body = body;
104
+ return requestOptions;
105
+ },
106
+ ],
107
+ },
108
+ output: {
109
+ postReceive: [
110
+ {
111
+ type: 'rootProperty',
112
+ properties: {
113
+ property: 'data',
114
+ },
115
+ },
116
+ ],
117
+ },
118
+ },
119
+ },
120
+ {
121
+ name: 'Unban User',
122
+ value: 'unbanUser',
123
+ action: 'Unban a user',
124
+ description: 'Remove a ban or timeout on a user',
125
+ routing: {
126
+ request: {
127
+ method: 'DELETE',
128
+ url: '/moderation/bans',
129
+ },
130
+ send: {
131
+ preSend: [
132
+ async function (requestOptions) {
133
+ const qs = {
134
+ broadcaster_id: this.getNodeParameter('broadcasterId'),
135
+ moderator_id: this.getNodeParameter('moderatorId'),
136
+ user_id: this.getNodeParameter('userId'),
137
+ };
138
+ requestOptions.qs = qs;
139
+ return requestOptions;
140
+ },
141
+ ],
142
+ },
143
+ },
144
+ },
145
+ {
146
+ name: 'Get Banned Users',
147
+ value: 'getBannedUsers',
148
+ action: 'Get list of banned users',
149
+ description: 'Get all users banned in the broadcaster\'s chat room',
150
+ routing: {
151
+ request: {
152
+ method: 'GET',
153
+ url: '/moderation/banned',
154
+ },
155
+ send: {
156
+ preSend: [
157
+ async function (requestOptions) {
158
+ const qs = {
159
+ broadcaster_id: this.getNodeParameter('broadcasterId'),
160
+ };
161
+ const userIds = this.getNodeParameter('userIds', '');
162
+ if (userIds) {
163
+ const userIdArray = userIds.split(',').map(id => id.trim()).filter(id => id);
164
+ if (userIdArray.length > 0) {
165
+ qs.user_id = userIdArray;
166
+ }
167
+ }
168
+ const first = this.getNodeParameter('first', 20);
169
+ if (first) {
170
+ qs.first = first;
171
+ }
172
+ requestOptions.qs = qs;
173
+ return requestOptions;
174
+ },
175
+ ],
176
+ },
177
+ output: {
178
+ postReceive: [
179
+ {
180
+ type: 'rootProperty',
181
+ properties: {
182
+ property: 'data',
183
+ },
184
+ },
185
+ ],
186
+ },
187
+ },
188
+ },
189
+ ],
190
+ default: 'getBannedUsers',
191
+ },
192
+ {
193
+ displayName: 'Broadcaster ID',
194
+ name: 'broadcasterId',
195
+ type: 'string',
196
+ displayOptions: {
197
+ show: {
198
+ operation: ['banUser'],
199
+ },
200
+ },
201
+ default: '',
202
+ required: true,
203
+ placeholder: 'e.g. 123456789',
204
+ description: 'The ID of the broadcaster whose chat room you want to ban the user from',
205
+ },
206
+ {
207
+ displayName: 'Moderator ID',
208
+ name: 'moderatorId',
209
+ type: 'string',
210
+ displayOptions: {
211
+ show: {
212
+ operation: ['banUser'],
213
+ },
214
+ },
215
+ default: '',
216
+ required: true,
217
+ placeholder: 'e.g. 987654321',
218
+ description: 'The ID of the moderator making the request (must match the user access token)',
219
+ },
220
+ {
221
+ displayName: 'User ID',
222
+ name: 'userId',
223
+ type: 'string',
224
+ displayOptions: {
225
+ show: {
226
+ operation: ['banUser'],
227
+ },
228
+ },
229
+ default: '',
230
+ required: true,
231
+ placeholder: 'e.g. 555666777',
232
+ description: 'The ID of the user to ban',
233
+ },
234
+ {
235
+ displayName: 'Duration',
236
+ name: 'duration',
237
+ type: 'number',
238
+ displayOptions: {
239
+ show: {
240
+ operation: ['banUser'],
241
+ },
242
+ },
243
+ default: 0,
244
+ placeholder: 'e.g. 600',
245
+ description: 'The duration of the ban in seconds. If 0 or omitted, the ban is permanent. Max: 1,209,600 (2 weeks).',
246
+ typeOptions: {
247
+ minValue: 0,
248
+ maxValue: 1209600,
249
+ },
250
+ },
251
+ {
252
+ displayName: 'Reason',
253
+ name: 'reason',
254
+ type: 'string',
255
+ displayOptions: {
256
+ show: {
257
+ operation: ['banUser'],
258
+ },
259
+ },
260
+ default: '',
261
+ placeholder: 'e.g. Violation of chat rules',
262
+ description: 'The reason for the ban (max 500 characters)',
263
+ },
264
+ {
265
+ displayName: 'Broadcaster ID',
266
+ name: 'broadcasterId',
267
+ type: 'string',
268
+ displayOptions: {
269
+ show: {
270
+ operation: ['unbanUser'],
271
+ },
272
+ },
273
+ default: '',
274
+ required: true,
275
+ placeholder: 'e.g. 123456789',
276
+ description: 'The ID of the broadcaster whose chat room you want to unban the user from',
277
+ },
278
+ {
279
+ displayName: 'Moderator ID',
280
+ name: 'moderatorId',
281
+ type: 'string',
282
+ displayOptions: {
283
+ show: {
284
+ operation: ['unbanUser'],
285
+ },
286
+ },
287
+ default: '',
288
+ required: true,
289
+ placeholder: 'e.g. 987654321',
290
+ description: 'The ID of the moderator making the request (must match the user access token)',
291
+ },
292
+ {
293
+ displayName: 'User ID',
294
+ name: 'userId',
295
+ type: 'string',
296
+ displayOptions: {
297
+ show: {
298
+ operation: ['unbanUser'],
299
+ },
300
+ },
301
+ default: '',
302
+ required: true,
303
+ placeholder: 'e.g. 555666777',
304
+ description: 'The ID of the user to unban',
305
+ },
306
+ {
307
+ displayName: 'Broadcaster ID',
308
+ name: 'broadcasterId',
309
+ type: 'string',
310
+ displayOptions: {
311
+ show: {
312
+ operation: ['getBannedUsers'],
313
+ },
314
+ },
315
+ default: '',
316
+ required: true,
317
+ placeholder: 'e.g. 123456789',
318
+ description: 'The ID of the broadcaster whose banned users you want to get',
319
+ },
320
+ {
321
+ displayName: 'User IDs',
322
+ name: 'userIds',
323
+ type: 'string',
324
+ displayOptions: {
325
+ show: {
326
+ operation: ['getBannedUsers'],
327
+ },
328
+ },
329
+ default: '',
330
+ placeholder: 'e.g. 555666777,888999000',
331
+ description: 'Comma-separated list of user IDs to filter results',
332
+ },
333
+ {
334
+ displayName: 'First',
335
+ name: 'first',
336
+ type: 'number',
337
+ displayOptions: {
338
+ show: {
339
+ operation: ['getBannedUsers'],
340
+ },
341
+ },
342
+ default: 20,
343
+ typeOptions: {
344
+ minValue: 1,
345
+ maxValue: 100,
346
+ },
347
+ description: 'Maximum number of objects to return (1-100)',
348
+ },
349
+ ],
350
+ };
351
+ }
352
+ }
353
+ exports.TwitchBans = TwitchBans;
354
+ //# sourceMappingURL=TwitchBans.node.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TwitchBans.node.js","sourceRoot":"","sources":["../../../nodes/TwitchBans/TwitchBans.node.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ <svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Twitch</title><path fill="#FFFFFF" d="M11.571 4.714h1.715v5.143H11.57zm4.715 0H18v5.143h-1.714zM6 0L1.714 4.286v15.428h5.143V24l4.286-4.286h3.428L22.286 12V0zm14.571 11.143l-3.428 3.428h-3.429l-3 3v-3H6.857V1.714h13.714Z"/></svg>
@@ -0,0 +1 @@
1
+ <svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Twitch</title><path d="M11.571 4.714h1.715v5.143H11.57zm4.715 0H18v5.143h-1.714zM6 0L1.714 4.286v15.428h5.143V24l4.286-4.286h3.428L22.286 12V0zm14.571 11.143l-3.428 3.428h-3.429l-3 3v-3H6.857V1.714h13.714Z"/></svg>
@@ -0,0 +1,4 @@
1
+ import { type INodeType, type INodeTypeDescription } from 'n8n-workflow';
2
+ export declare class TwitchBitsLeaderboard implements INodeType {
3
+ description: INodeTypeDescription;
4
+ }
@@ -0,0 +1,202 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TwitchBitsLeaderboard = void 0;
4
+ const n8n_workflow_1 = require("n8n-workflow");
5
+ class TwitchBitsLeaderboard {
6
+ constructor() {
7
+ this.description = {
8
+ displayName: 'Twitch Bits Leaderboard',
9
+ name: 'twitchBitsLeaderboard',
10
+ icon: { light: 'file:twitch.svg', dark: 'file:twitch.dark.svg' },
11
+ group: ['output'],
12
+ version: 1,
13
+ description: 'Get the Bits leaderboard for a Twitch channel',
14
+ defaults: {
15
+ name: 'Twitch Bits Leaderboard',
16
+ },
17
+ usableAsTool: true,
18
+ inputs: [n8n_workflow_1.NodeConnectionTypes.Main],
19
+ outputs: [n8n_workflow_1.NodeConnectionTypes.Main],
20
+ credentials: [
21
+ {
22
+ name: 'twitchApi',
23
+ required: true,
24
+ displayOptions: {
25
+ show: {
26
+ authentication: ['clientCredentials'],
27
+ },
28
+ },
29
+ },
30
+ {
31
+ name: 'twitchOAuth2Api',
32
+ required: true,
33
+ displayOptions: {
34
+ show: {
35
+ authentication: ['oAuth2'],
36
+ },
37
+ },
38
+ },
39
+ ],
40
+ requestDefaults: {
41
+ baseURL: 'https://api.twitch.tv/helix',
42
+ headers: {
43
+ Accept: 'application/json',
44
+ 'Content-Type': 'application/json',
45
+ },
46
+ },
47
+ properties: [
48
+ {
49
+ displayName: 'Authentication',
50
+ name: 'authentication',
51
+ type: 'options',
52
+ options: [
53
+ {
54
+ name: 'Client Credentials',
55
+ value: 'clientCredentials',
56
+ },
57
+ {
58
+ name: 'OAuth2',
59
+ value: 'oAuth2',
60
+ },
61
+ ],
62
+ default: 'oAuth2',
63
+ },
64
+ {
65
+ displayName: 'Operation',
66
+ name: 'operation',
67
+ type: 'options',
68
+ noDataExpression: true,
69
+ options: [
70
+ {
71
+ name: 'Get',
72
+ value: 'get',
73
+ action: 'Get bits leaderboard',
74
+ description: 'Get the Bits leaderboard for a Twitch channel',
75
+ routing: {
76
+ request: {
77
+ method: 'GET',
78
+ url: '/bits/leaderboard',
79
+ },
80
+ send: {
81
+ preSend: [
82
+ async function (requestOptions) {
83
+ const count = this.getNodeParameter('count', 0);
84
+ const period = this.getNodeParameter('period', 0);
85
+ const startedAt = this.getNodeParameter('startedAt', 0);
86
+ const userId = this.getNodeParameter('userId', 0);
87
+ const qs = {};
88
+ if (count) {
89
+ qs.count = count;
90
+ }
91
+ if (period) {
92
+ qs.period = period;
93
+ }
94
+ if (startedAt && startedAt.trim() !== '') {
95
+ qs.started_at = startedAt.trim();
96
+ }
97
+ if (userId && userId.trim() !== '') {
98
+ qs.user_id = userId.trim();
99
+ }
100
+ requestOptions.qs = qs;
101
+ return requestOptions;
102
+ },
103
+ ],
104
+ },
105
+ output: {
106
+ postReceive: [
107
+ {
108
+ type: 'rootProperty',
109
+ properties: {
110
+ property: 'data',
111
+ },
112
+ },
113
+ ],
114
+ },
115
+ },
116
+ },
117
+ ],
118
+ default: 'get',
119
+ },
120
+ {
121
+ displayName: 'Count',
122
+ name: 'count',
123
+ type: 'number',
124
+ default: 10,
125
+ typeOptions: {
126
+ minValue: 1,
127
+ maxValue: 100,
128
+ },
129
+ placeholder: 'e.g. 10',
130
+ description: 'Number of results to return (1-100)',
131
+ displayOptions: {
132
+ show: {
133
+ operation: ['get'],
134
+ },
135
+ },
136
+ },
137
+ {
138
+ displayName: 'Period',
139
+ name: 'period',
140
+ type: 'options',
141
+ options: [
142
+ {
143
+ name: 'All',
144
+ value: 'all',
145
+ },
146
+ {
147
+ name: 'Day',
148
+ value: 'day',
149
+ },
150
+ {
151
+ name: 'Month',
152
+ value: 'month',
153
+ },
154
+ {
155
+ name: 'Week',
156
+ value: 'week',
157
+ },
158
+ {
159
+ name: 'Year',
160
+ value: 'year',
161
+ },
162
+ ],
163
+ default: 'all',
164
+ description: 'Time period for the leaderboard',
165
+ displayOptions: {
166
+ show: {
167
+ operation: ['get'],
168
+ },
169
+ },
170
+ },
171
+ {
172
+ displayName: 'Started At',
173
+ name: 'startedAt',
174
+ type: 'dateTime',
175
+ default: '',
176
+ placeholder: 'e.g. 2024-01-01T00:00:00Z',
177
+ description: 'Timestamp for the period start (RFC3339 format)',
178
+ displayOptions: {
179
+ show: {
180
+ operation: ['get'],
181
+ },
182
+ },
183
+ },
184
+ {
185
+ displayName: 'User ID',
186
+ name: 'userId',
187
+ type: 'string',
188
+ default: '',
189
+ placeholder: 'e.g. 123456789',
190
+ description: 'Filter results to a specific user ID',
191
+ displayOptions: {
192
+ show: {
193
+ operation: ['get'],
194
+ },
195
+ },
196
+ },
197
+ ],
198
+ };
199
+ }
200
+ }
201
+ exports.TwitchBitsLeaderboard = TwitchBitsLeaderboard;
202
+ //# sourceMappingURL=TwitchBitsLeaderboard.node.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TwitchBitsLeaderboard.node.js","sourceRoot":"","sources":["../../../nodes/TwitchBitsLeaderboard/TwitchBitsLeaderboard.node.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ <svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Twitch</title><path fill="#FFFFFF" d="M11.571 4.714h1.715v5.143H11.57zm4.715 0H18v5.143h-1.714zM6 0L1.714 4.286v15.428h5.143V24l4.286-4.286h3.428L22.286 12V0zm14.571 11.143l-3.428 3.428h-3.429l-3 3v-3H6.857V1.714h13.714Z"/></svg>
@@ -0,0 +1 @@
1
+ <svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Twitch</title><path d="M11.571 4.714h1.715v5.143H11.57zm4.715 0H18v5.143h-1.714zM6 0L1.714 4.286v15.428h5.143V24l4.286-4.286h3.428L22.286 12V0zm14.571 11.143l-3.428 3.428h-3.429l-3 3v-3H6.857V1.714h13.714Z"/></svg>
@@ -0,0 +1,4 @@
1
+ import { type INodeType, type INodeTypeDescription } from 'n8n-workflow';
2
+ export declare class TwitchChannels implements INodeType {
3
+ description: INodeTypeDescription;
4
+ }