@tixyel/streamelements 5.2.0 → 5.3.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.
package/dist/index.d.ts CHANGED
@@ -6,243 +6,6 @@
6
6
 
7
7
  import { ComfyJSInstance, OnErrorHandler, OnCommandHandler, OnChatHandler, OnWhisperHandler, OnMessageDeletedHandler, OnJoinHandler, OnPartHandler, OnHostedHandler, OnRaidHandler, OnSubHandler, OnResubHandler, OnSubGiftHandler, OnSubMysteryGiftHandler, OnGiftSubContinueHandler, OnCheerHandler, OnChatModeHandler, OnRewardHandler, OnConnectedHandler, OnReconnectHandler } from 'comfy.js';
8
8
 
9
- interface ButtonOptions {
10
- field: string | ((field: string, value: string | boolean | number) => boolean);
11
- template?: string;
12
- run: (field: string, value: string | boolean | number) => void;
13
- }
14
- declare class Button {
15
- field: ButtonOptions['field'];
16
- template: string;
17
- run: ButtonOptions['run'];
18
- constructor(options: ButtonOptions);
19
- parse(field: string, value: string | boolean | number): Button;
20
- remove(): void;
21
- static execute(field: string, value: string | boolean | number): boolean;
22
- }
23
-
24
- type Provider$1 = 'twitch' | 'youtube' | 'kick' | 'facebook' | 'streamelements';
25
- type ClientEvents$1 = {
26
- provider: 'streamelements';
27
- data: StreamElements.Event.Provider.StreamElements.Events;
28
- } | {
29
- provider: 'twitch';
30
- data: StreamElements.Event.Provider.Twitch.Events;
31
- } | {
32
- provider: 'youtube';
33
- data: StreamElements.Event.Provider.YouTube.Events;
34
- } | {
35
- provider: 'kick';
36
- data: StreamElements.Event.Provider.Kick.Events;
37
- } | {
38
- provider: 'facebook';
39
- data: StreamElements.Event.Provider.Facebook.Events;
40
- };
41
-
42
- declare namespace StreamElementsEvents {
43
- namespace Tip {
44
- type Data = {
45
- listener: 'tip-latest';
46
- event: Event;
47
- };
48
- type Event = {
49
- amount: number;
50
- avatar: string;
51
- name: string;
52
- displayName: string;
53
- providerId: string;
54
- _id: string;
55
- sessionTop: boolean;
56
- type: 'tip';
57
- originalEventName: 'tip-latest';
58
- };
59
- }
60
- namespace KVStore {
61
- type Data = {
62
- listener: 'kvstore:update';
63
- event: Event;
64
- };
65
- type Event = {
66
- data: {
67
- key: `customWidget.${string}`;
68
- value: string | number | boolean | Record<string, any>;
69
- };
70
- };
71
- }
72
- namespace BotCounter {
73
- type Data = {
74
- listener: 'bot:counter';
75
- event: Event;
76
- };
77
- type Event = {
78
- counter: string;
79
- value: number;
80
- };
81
- }
82
- namespace AlertService {
83
- type Data = {
84
- listener: 'alertService:toggleSound';
85
- event: Event;
86
- };
87
- type Event = {
88
- muted: boolean;
89
- };
90
- }
91
- namespace EventSkip {
92
- type Data = {
93
- listener: 'event:skip';
94
- event: Event;
95
- };
96
- type Event = {};
97
- }
98
- namespace EventTest {
99
- export type Data = {
100
- listener: 'event:test';
101
- event: Event;
102
- };
103
- export type Event = widgetButton | emulatedEvents<EventType> | Session;
104
- type items = {
105
- name: string;
106
- price: number;
107
- quantity: number;
108
- };
109
- type widgetButton = {
110
- listener: 'widget-button';
111
- field: string;
112
- value: string | number | boolean;
113
- };
114
- type EventType = 'follower' | 'subscriber' | 'tip' | 'cheer' | 'raid';
115
- type EventTier = 'prime' | '1000' | '2000' | '3000';
116
- type emulatedEvents<T extends EventType> = {
117
- listener: `${T}-latest`;
118
- event: {
119
- type: T;
120
- name: string;
121
- amount: number;
122
- count: number;
123
- message?: string;
124
- gifted?: boolean;
125
- bulkGifted?: boolean;
126
- sender?: string;
127
- subExtension?: boolean;
128
- items: items[];
129
- tier: EventTier;
130
- month: string;
131
- isTest: true;
132
- };
133
- };
134
- type Session = SessionCount | SessionTotal | SessionTop | SessionGoal | SessionRecent | SessionPoints;
135
- type SessionCount = {
136
- listener: `${EventType}-count`;
137
- event: {
138
- type: EventType;
139
- name: string;
140
- count: number;
141
- items: items[];
142
- tier: EventTier;
143
- month: string;
144
- isTest: true;
145
- };
146
- };
147
- type SessionTotal = {
148
- listener: `${EventType}-total`;
149
- event: {
150
- type: EventType;
151
- name: string;
152
- amount: number;
153
- count: number;
154
- items: items[];
155
- tier: EventTier;
156
- month: string;
157
- isTest: true;
158
- };
159
- };
160
- type SessionTop = {
161
- listener: `${EventType}-top`;
162
- event: {
163
- type: EventType;
164
- name: string;
165
- amount: number;
166
- count: number;
167
- items: items[];
168
- tier: EventTier;
169
- month: string;
170
- isTest: true;
171
- };
172
- };
173
- type SessionGoal = {
174
- listener: `${EventType}-goal`;
175
- event: {
176
- type: EventType;
177
- name: string;
178
- amount: number;
179
- count: number;
180
- items: items[];
181
- tier: EventTier;
182
- month: string;
183
- isTest: true;
184
- };
185
- };
186
- type SessionRecent = {
187
- listener: `${EventType}-recent`;
188
- event: {
189
- event: SessionRecentEvent[];
190
- };
191
- };
192
- type SessionRecentEvent = {
193
- type: EventType;
194
- name: string;
195
- amount: number;
196
- count: number;
197
- tier: EventTier;
198
- isTest: true;
199
- };
200
- type SessionPoints = {
201
- listener: `${EventType}-points`;
202
- event: {
203
- type: EventType;
204
- name: string;
205
- amount: number;
206
- count: number;
207
- items: items[];
208
- tier: EventTier;
209
- month: string;
210
- isTest: true;
211
- };
212
- };
213
- export {};
214
- }
215
- interface BaseEvent {
216
- provider: Provider$1;
217
- flagged: boolean;
218
- channel: string;
219
- createdAt: string;
220
- _id: string;
221
- expiresAt: string;
222
- updatedAt: string;
223
- activityId: string;
224
- sessionEventsCount: number;
225
- isMock?: boolean;
226
- }
227
- namespace Event {
228
- type Data = {
229
- listener: 'event';
230
- event: Event;
231
- };
232
- type Event = Tip;
233
- interface Tip extends BaseEvent {
234
- type: 'tip';
235
- data: {
236
- amount: string;
237
- currency: string;
238
- username: string;
239
- message: string;
240
- avatar: string;
241
- };
242
- }
243
- }
244
- }
245
-
246
9
  declare namespace YoutubeEvents {
247
10
  namespace Message {
248
11
  export type Data = {
@@ -1584,25 +1347,343 @@ declare namespace StreamElements {
1584
1347
  }
1585
1348
  }
1586
1349
 
1587
- /**
1588
- * EventProvider class for managing event listeners and emitters.
1589
- * This class allows you to register event listeners, emit events, and manage event subscriptions.
1590
- * @example
1591
- * ```typescript
1592
- * type TestEvents = {
1593
- * load: [event: { type: 'load' }];
1594
- * event: [event: { type: 'event' }];
1595
- * };
1596
- *
1597
- * class Test extends EventProvider<TestEvents> {}
1598
- *
1599
- * const test = new Test();
1600
- * test.once('load', (data) => {});
1601
- * test.emit('load', { type: 'load' });
1602
- *
1603
- * test.on('event', (data) => {});
1604
- * test.emit('event', { type: 'event' });
1605
- * ```
1350
+ type Provider$1 = 'twitch' | 'youtube' | 'kick' | 'facebook' | 'streamelements';
1351
+ type ClientEvents$1 = {
1352
+ provider: 'streamelements';
1353
+ data: StreamElements.Event.Provider.StreamElements.Events;
1354
+ } | {
1355
+ provider: 'twitch';
1356
+ data: StreamElements.Event.Provider.Twitch.Events;
1357
+ } | {
1358
+ provider: 'youtube';
1359
+ data: StreamElements.Event.Provider.YouTube.Events;
1360
+ } | {
1361
+ provider: 'kick';
1362
+ data: StreamElements.Event.Provider.Kick.Events;
1363
+ } | {
1364
+ provider: 'facebook';
1365
+ data: StreamElements.Event.Provider.Facebook.Events;
1366
+ };
1367
+
1368
+ declare namespace StreamElementsEvents {
1369
+ namespace Tip {
1370
+ type Data = {
1371
+ listener: 'tip-latest';
1372
+ event: Event;
1373
+ };
1374
+ type Event = {
1375
+ amount: number;
1376
+ avatar: string;
1377
+ name: string;
1378
+ displayName: string;
1379
+ providerId: string;
1380
+ _id: string;
1381
+ sessionTop: boolean;
1382
+ type: 'tip';
1383
+ originalEventName: 'tip-latest';
1384
+ };
1385
+ }
1386
+ namespace KVStore {
1387
+ type Data = {
1388
+ listener: 'kvstore:update';
1389
+ event: Event;
1390
+ };
1391
+ type Event = {
1392
+ data: {
1393
+ key: `customWidget.${string}`;
1394
+ value: string | number | boolean | Record<string, any>;
1395
+ };
1396
+ };
1397
+ }
1398
+ namespace BotCounter {
1399
+ type Data = {
1400
+ listener: 'bot:counter';
1401
+ event: Event;
1402
+ };
1403
+ type Event = {
1404
+ counter: string;
1405
+ value: number;
1406
+ };
1407
+ }
1408
+ namespace AlertService {
1409
+ type Data = {
1410
+ listener: 'alertService:toggleSound';
1411
+ event: Event;
1412
+ };
1413
+ type Event = {
1414
+ muted: boolean;
1415
+ };
1416
+ }
1417
+ namespace EventSkip {
1418
+ type Data = {
1419
+ listener: 'event:skip';
1420
+ event: Event;
1421
+ };
1422
+ type Event = {};
1423
+ }
1424
+ namespace EventTest {
1425
+ export type Data = {
1426
+ listener: 'event:test';
1427
+ event: Event;
1428
+ };
1429
+ export type Event = widgetButton | emulatedEvents<EventType> | Session;
1430
+ type items = {
1431
+ name: string;
1432
+ price: number;
1433
+ quantity: number;
1434
+ };
1435
+ type widgetButton = {
1436
+ listener: 'widget-button';
1437
+ field: string;
1438
+ value: string | number | boolean;
1439
+ };
1440
+ type EventType = 'follower' | 'subscriber' | 'tip' | 'cheer' | 'raid';
1441
+ type EventTier = 'prime' | '1000' | '2000' | '3000';
1442
+ type emulatedEvents<T extends EventType> = {
1443
+ listener: `${T}-latest`;
1444
+ event: {
1445
+ type: T;
1446
+ name: string;
1447
+ amount: number;
1448
+ count: number;
1449
+ message?: string;
1450
+ gifted?: boolean;
1451
+ bulkGifted?: boolean;
1452
+ sender?: string;
1453
+ subExtension?: boolean;
1454
+ items: items[];
1455
+ tier: EventTier;
1456
+ month: string;
1457
+ isTest: true;
1458
+ };
1459
+ };
1460
+ type Session = SessionCount | SessionTotal | SessionTop | SessionGoal | SessionRecent | SessionPoints;
1461
+ type SessionCount = {
1462
+ listener: `${EventType}-count`;
1463
+ event: {
1464
+ type: EventType;
1465
+ name: string;
1466
+ count: number;
1467
+ items: items[];
1468
+ tier: EventTier;
1469
+ month: string;
1470
+ isTest: true;
1471
+ };
1472
+ };
1473
+ type SessionTotal = {
1474
+ listener: `${EventType}-total`;
1475
+ event: {
1476
+ type: EventType;
1477
+ name: string;
1478
+ amount: number;
1479
+ count: number;
1480
+ items: items[];
1481
+ tier: EventTier;
1482
+ month: string;
1483
+ isTest: true;
1484
+ };
1485
+ };
1486
+ type SessionTop = {
1487
+ listener: `${EventType}-top`;
1488
+ event: {
1489
+ type: EventType;
1490
+ name: string;
1491
+ amount: number;
1492
+ count: number;
1493
+ items: items[];
1494
+ tier: EventTier;
1495
+ month: string;
1496
+ isTest: true;
1497
+ };
1498
+ };
1499
+ type SessionGoal = {
1500
+ listener: `${EventType}-goal`;
1501
+ event: {
1502
+ type: EventType;
1503
+ name: string;
1504
+ amount: number;
1505
+ count: number;
1506
+ items: items[];
1507
+ tier: EventTier;
1508
+ month: string;
1509
+ isTest: true;
1510
+ };
1511
+ };
1512
+ type SessionRecent = {
1513
+ listener: `${EventType}-recent`;
1514
+ event: {
1515
+ event: SessionRecentEvent[];
1516
+ };
1517
+ };
1518
+ type SessionRecentEvent = {
1519
+ type: EventType;
1520
+ name: string;
1521
+ amount: number;
1522
+ count: number;
1523
+ tier: EventTier;
1524
+ isTest: true;
1525
+ };
1526
+ type SessionPoints = {
1527
+ listener: `${EventType}-points`;
1528
+ event: {
1529
+ type: EventType;
1530
+ name: string;
1531
+ amount: number;
1532
+ count: number;
1533
+ items: items[];
1534
+ tier: EventTier;
1535
+ month: string;
1536
+ isTest: true;
1537
+ };
1538
+ };
1539
+ export {};
1540
+ }
1541
+ interface BaseEvent {
1542
+ provider: Provider$1;
1543
+ flagged: boolean;
1544
+ channel: string;
1545
+ createdAt: string;
1546
+ _id: string;
1547
+ expiresAt: string;
1548
+ updatedAt: string;
1549
+ activityId: string;
1550
+ sessionEventsCount: number;
1551
+ isMock?: boolean;
1552
+ }
1553
+ namespace Event {
1554
+ type Data = {
1555
+ listener: 'event';
1556
+ event: Event;
1557
+ };
1558
+ type Event = Tip;
1559
+ interface Tip extends BaseEvent {
1560
+ type: 'tip';
1561
+ data: {
1562
+ amount: string;
1563
+ currency: string;
1564
+ username: string;
1565
+ message: string;
1566
+ avatar: string;
1567
+ };
1568
+ }
1569
+ }
1570
+ }
1571
+
1572
+ type TwitchEmote = {
1573
+ type: 'twitch';
1574
+ name: string;
1575
+ id: string;
1576
+ gif: boolean;
1577
+ urls: {
1578
+ '1': string;
1579
+ '2': string;
1580
+ '4': string;
1581
+ };
1582
+ start: number;
1583
+ end: number;
1584
+ };
1585
+ type SeventvEmote = {
1586
+ type: '7tv';
1587
+ name: string;
1588
+ id: string;
1589
+ gif: boolean;
1590
+ animated: boolean;
1591
+ urls: {
1592
+ '1': string;
1593
+ '2': string;
1594
+ '3': string;
1595
+ '4': string;
1596
+ };
1597
+ start: number;
1598
+ end: number;
1599
+ cords: {
1600
+ x: number;
1601
+ y: number;
1602
+ };
1603
+ };
1604
+ type BttvEmote = {
1605
+ type: 'bttv';
1606
+ name: string;
1607
+ id: string;
1608
+ gif: boolean;
1609
+ animated: boolean;
1610
+ urls: {
1611
+ '1': string;
1612
+ '2': string;
1613
+ '4': string;
1614
+ };
1615
+ start: number;
1616
+ end: number;
1617
+ coords: {
1618
+ x: number;
1619
+ y: number;
1620
+ width: number;
1621
+ height: number;
1622
+ };
1623
+ };
1624
+
1625
+ interface ButtonOptions {
1626
+ field: string | ((field: string, value: string | boolean | number) => boolean);
1627
+ template?: string;
1628
+ name?: string;
1629
+ value?: string;
1630
+ run: (field: string, value: string | boolean | number) => void;
1631
+ }
1632
+ /**
1633
+ * Represents a button action that can be triggered by custom fields in StreamElements.
1634
+ * The button can be configured with a template and a name, and it will execute a specified function when triggered.
1635
+ * @example
1636
+ * ```javascript
1637
+ * const button = new Button({
1638
+ * field: (field, value) => field.startsWith('message-') && field.split('-')[1],
1639
+ * template: 'message-{role}',
1640
+ * // name: '[CAP={role}] role message',
1641
+ * name: 'Generate {role} message',
1642
+ * run(field, value) {
1643
+ * console.log(`Button ${field} was clicked with value: ${value}`);
1644
+ * }
1645
+ * })
1646
+ *
1647
+ * const field = button.generate([{ role: 'broadcaster' }, { role: 'moderator' }]);
1648
+ * // This will create buttons with fields "message-broadcaster" and "message-moderator" and names "Generate broadcaster message" and "Generate moderator message".
1649
+ * // field['message-broadcaster'] => { type: 'button', label: 'Generate broadcaster message' }
1650
+ * // field['message-moderator'] => { type: 'button', label: 'Generate moderator message' }
1651
+ *
1652
+ * // When a custom field with the name "message-broadcaster" or "message-moderator" is triggered, the run function will be called with the field and value.
1653
+ * ```
1654
+ */
1655
+ declare class Button {
1656
+ field: ButtonOptions['field'];
1657
+ template: string;
1658
+ name: string;
1659
+ value: string;
1660
+ run: ButtonOptions['run'];
1661
+ constructor(options: ButtonOptions);
1662
+ generate(values: Array<Record<string, string | number>>): Record<string, StreamElements.CustomField.Schema>;
1663
+ parse(field: string, value: string | boolean | number): Button;
1664
+ remove(): void;
1665
+ static execute(field: string, value: string | boolean | number): boolean;
1666
+ }
1667
+
1668
+ /**
1669
+ * EventProvider class for managing event listeners and emitters.
1670
+ * This class allows you to register event listeners, emit events, and manage event subscriptions.
1671
+ * @example
1672
+ * ```typescript
1673
+ * type TestEvents = {
1674
+ * load: [event: { type: 'load' }];
1675
+ * event: [event: { type: 'event' }];
1676
+ * };
1677
+ *
1678
+ * class Test extends EventProvider<TestEvents> {}
1679
+ *
1680
+ * const test = new Test();
1681
+ * test.once('load', (data) => {});
1682
+ * test.emit('load', { type: 'load' });
1683
+ *
1684
+ * test.on('event', (data) => {});
1685
+ * test.emit('event', { type: 'event' });
1686
+ * ```
1606
1687
  */
1607
1688
  declare class EventProvider<EventMap extends Record<string, any[]> = Record<string, any[]>> {
1608
1689
  /**
@@ -1810,7 +1891,7 @@ declare class Command {
1810
1891
  name: string;
1811
1892
  description: string;
1812
1893
  arguments: boolean;
1813
- test: string;
1894
+ test: string | (() => string);
1814
1895
  aliases: string[];
1815
1896
  permissions?: string[] | boolean;
1816
1897
  admins: string[];
@@ -1886,59 +1967,6 @@ declare class useQueue<T> extends EventProvider<QueueEvents<T>> {
1886
1967
  on<K extends keyof QueueEvents<T>>(eventName: K, callback: (this: useQueue<T>, ...args: QueueEvents<T>[K]) => void): this;
1887
1968
  }
1888
1969
 
1889
- type TwitchEmote = {
1890
- type: 'twitch';
1891
- name: string;
1892
- id: string;
1893
- gif: boolean;
1894
- urls: {
1895
- '1': string;
1896
- '2': string;
1897
- '4': string;
1898
- };
1899
- start: number;
1900
- end: number;
1901
- };
1902
- type SeventvEmote = {
1903
- type: '7tv';
1904
- name: string;
1905
- id: string;
1906
- gif: boolean;
1907
- animated: boolean;
1908
- urls: {
1909
- '1': string;
1910
- '2': string;
1911
- '3': string;
1912
- '4': string;
1913
- };
1914
- start: number;
1915
- end: number;
1916
- cords: {
1917
- x: number;
1918
- y: number;
1919
- };
1920
- };
1921
- type BttvEmote = {
1922
- type: 'bttv';
1923
- name: string;
1924
- id: string;
1925
- gif: boolean;
1926
- animated: boolean;
1927
- urls: {
1928
- '1': string;
1929
- '2': string;
1930
- '4': string;
1931
- };
1932
- start: number;
1933
- end: number;
1934
- coords: {
1935
- x: number;
1936
- y: number;
1937
- width: number;
1938
- height: number;
1939
- };
1940
- };
1941
-
1942
1970
  type Emote = TwitchEmote | BttvEmote | SeventvEmote;
1943
1971
  type BadgeOptions = Twitch.roles[] | Twitch.roles | `${Twitch.roles}, ${Twitch.roles}` | `${Twitch.roles}, ${Twitch.roles}, ${Twitch.roles}`;
1944
1972
 
@@ -2243,7 +2271,9 @@ declare namespace Helper {
2243
2271
  };
2244
2272
  const utils: {
2245
2273
  delay<R extends unknown, M extends number>(ms: M, callback?: () => R): Promise<R | null>;
2246
- typedEntries<K extends string, V>(obj: Record<K, V>): [K, V][];
2274
+ typedEntries<K extends string, V>(obj: Record<K, V> | Array<V>): [K, V][];
2275
+ typedValues<K extends string, V>(obj: Record<K, V> | Array<V>): V[];
2276
+ typedKeys<K extends string, V>(obj: Record<K, V> | Array<V>): K[];
2247
2277
  probability<K extends string, V extends number>(items: Record<K, V>): K | undefined;
2248
2278
  };
2249
2279
  const random: {