@tixyel/streamelements 7.5.1 → 7.6.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/README.md CHANGED
@@ -19,9 +19,11 @@ Add the following to your HTML:
19
19
  <script>
20
20
  const { Client, Simulation, logger } = window.Tixyel;
21
21
 
22
- new Client({ id: 'my-widget' }).on('load', (event) => {
23
- logger.received('Widget loaded!', event);
24
- });
22
+ const client = new Client({ id: 'my-widget' })
23
+
24
+ client.on('load', (event) => {})
25
+ client.on('event', (provider, event) => {})
26
+ client.on('session', (session) => {})
25
27
  </script>
26
28
  ```
27
29
 
package/dist/index.d.ts CHANGED
@@ -8,22 +8,33 @@ import { ComfyJSInstance, OnErrorHandler, OnCommandHandler, OnChatHandler, OnWhi
8
8
  export { ComfyJSInstance } from 'comfy.js';
9
9
 
10
10
  type Provider$1 = 'twitch' | 'youtube' | 'kick' | 'facebook' | 'streamelements';
11
- type ClientEvents$1 = {
12
- provider: 'streamelements';
13
- data: StreamElements.Event.Provider.StreamElements.Events;
14
- } | {
15
- provider: 'twitch';
16
- data: StreamElements.Event.Provider.Twitch.Events;
17
- } | {
18
- provider: 'youtube';
19
- data: StreamElements.Event.Provider.YouTube.Events;
20
- } | {
21
- provider: 'kick';
22
- data: StreamElements.Event.Provider.Kick.Events;
23
- } | {
24
- provider: 'facebook';
25
- data: StreamElements.Event.Provider.Facebook.Events;
11
+ type ClientProviderEvents = {
12
+ streamelements: StreamElements.Event.Provider.StreamElements.Events;
13
+ twitch: StreamElements.Event.Provider.Twitch.Events;
14
+ youtube: StreamElements.Event.Provider.YouTube.Events;
15
+ kick: StreamElements.Event.Provider.Kick.Events;
16
+ facebook: StreamElements.Event.Provider.Facebook.Events;
26
17
  };
18
+ type ClientCustomEventPayload = {
19
+ provider: 'custom';
20
+ };
21
+ type ClientCustomProviderEvents = Record<string, ClientCustomEventPayload>;
22
+ type ValidateCustomProviderEvents<CustomEvents> = CustomEvents extends Record<string, unknown> ? {
23
+ [K in keyof CustomEvents]: CustomEvents[K] extends ClientCustomEventPayload ? CustomEvents[K] : never;
24
+ } : {};
25
+ type ClientAllProviderEvents<CustomEvents = {}> = ClientProviderEvents & ValidateCustomProviderEvents<CustomEvents>;
26
+ type ClientEvents<CustomEvents = {}> = {
27
+ [K in keyof ClientAllProviderEvents<CustomEvents> & string]: {
28
+ provider: K;
29
+ data: ClientAllProviderEvents<CustomEvents>[K];
30
+ };
31
+ }[keyof ClientAllProviderEvents<CustomEvents> & string];
32
+ type ClientEventTuple<CustomEvents = {}> = {
33
+ [K in keyof ClientAllProviderEvents<CustomEvents> & string]: [
34
+ provider: K,
35
+ event: ClientAllProviderEvents<CustomEvents>[K]
36
+ ];
37
+ }[keyof ClientAllProviderEvents<CustomEvents> & string];
27
38
 
28
39
  declare namespace StreamElementsEvents {
29
40
  namespace Tip {
@@ -1860,11 +1871,11 @@ declare namespace Alejo {
1860
1871
  function get(username: string): Promise<Pronouns.name | undefined>;
1861
1872
  }
1862
1873
 
1863
- type ClientEvents = {
1874
+ type ClientMapEvents<CustomEvents = {}> = {
1864
1875
  load: [event: StreamElements.Event.onWidgetLoad];
1865
1876
  action: [action: Button | Command, type: 'created' | 'executed' | 'removed'];
1866
1877
  session: [session: StreamElements.Session.Data];
1867
- event: [provider: 'streamelements', event: StreamElements.Event.Provider.StreamElements.Events] | [provider: 'twitch', event: StreamElements.Event.Provider.Twitch.Events] | [provider: 'youtube', event: StreamElements.Event.Provider.YouTube.Events] | [provider: 'kick', event: StreamElements.Event.Provider.Kick.Events] | [provider: 'facebook', event: StreamElements.Event.Provider.Facebook.Events];
1878
+ event: ClientEventTuple<CustomEvents>;
1868
1879
  };
1869
1880
  type ClientStorageOptions<T> = {
1870
1881
  value: T;
@@ -1881,7 +1892,7 @@ type ClientOptions = {
1881
1892
  id?: string;
1882
1893
  debug?: boolean | (() => boolean);
1883
1894
  };
1884
- declare class Client extends EventProvider<ClientEvents> {
1895
+ declare class Client<CustomEvents = {}> extends EventProvider<ClientMapEvents<CustomEvents>> {
1885
1896
  id: string;
1886
1897
  debug: boolean;
1887
1898
  storage: useStorage<ClientStorage>;
@@ -1913,7 +1924,7 @@ declare class Client extends EventProvider<ClientEvents> {
1913
1924
  */
1914
1925
  emote: number;
1915
1926
  };
1916
- on<K extends keyof ClientEvents>(eventName: K, callback: (this: Client, ...args: ClientEvents[K]) => void): this;
1927
+ on<K extends keyof ClientMapEvents<CustomEvents>>(eventName: K, callback: (this: Client<CustomEvents>, ...args: ClientMapEvents<CustomEvents>[K]) => void): this;
1917
1928
  }
1918
1929
 
1919
1930
  type RequireAtLeastOne<T, Keys extends keyof T = keyof T> = Pick<T, Exclude<keyof T, Keys>> & {
@@ -2742,7 +2753,7 @@ declare class EventHelper {
2742
2753
  * @param detail - The event detail object received from the StreamElements event.
2743
2754
  * @returns An object containing the provider and the original event data.
2744
2755
  */
2745
- parseProvider(detail: StreamElements.Event.onEventReceived, overrideProvider?: Provider$1): ClientEvents$1;
2756
+ parseProvider(detail: StreamElements.Event.onEventReceived, overrideProvider?: Provider$1): ClientEvents;
2746
2757
  }
2747
2758
 
2748
2759
  type Modifier = (value: string, param: string | null | undefined, values: {
@@ -3490,7 +3501,7 @@ declare function onWidgetLoad(fields: Record<string, StreamElements.CustomField.
3490
3501
  * @param session - The session data to be included in the event.
3491
3502
  * @returns A Promise that resolves to the simulated onSessionUpdate event data.
3492
3503
  */
3493
- declare function onSessionUpdate(session?: StreamElements.Session.Data, update?: ClientEvents$1): Promise<StreamElements.Event.onSessionUpdate>;
3504
+ declare function onSessionUpdate(session?: StreamElements.Session.Data, update?: ClientEvents): Promise<StreamElements.Event.onSessionUpdate>;
3494
3505
  /**
3495
3506
  * Simulates the onEventReceived event for a widget.
3496
3507
  * @param provider - The provider of the event (default is 'random').
@@ -3641,6 +3652,30 @@ declare class useComms<T extends MessageMap> extends EventProvider<BaseEvents<T>
3641
3652
  on<K extends keyof BaseEvents<T>>(eventName: K, callback: (this: useComms<T>, ...args: BaseEvents<T>[K]) => void): this;
3642
3653
  }
3643
3654
 
3655
+ declare const usedClients: Client[];
3656
+ declare const usedStorages: Array<useStorage<any>>;
3657
+ declare const usedComms: Array<useComms<any>>;
3658
+ declare const usedCommands: Command[];
3659
+ declare const usedButtons: Button[];
3660
+ declare const fakeUserPools: FakeUserPool[];
3661
+
3662
+ declare const internals_fakeUserPools: typeof fakeUserPools;
3663
+ declare const internals_usedButtons: typeof usedButtons;
3664
+ declare const internals_usedClients: typeof usedClients;
3665
+ declare const internals_usedCommands: typeof usedCommands;
3666
+ declare const internals_usedComms: typeof usedComms;
3667
+ declare const internals_usedStorages: typeof usedStorages;
3668
+ declare namespace internals {
3669
+ export {
3670
+ internals_fakeUserPools as fakeUserPools,
3671
+ internals_usedButtons as usedButtons,
3672
+ internals_usedClients as usedClients,
3673
+ internals_usedCommands as usedCommands,
3674
+ internals_usedComms as usedComms,
3675
+ internals_usedStorages as usedStorages,
3676
+ };
3677
+ }
3678
+
3644
3679
  declare const main: {
3645
3680
  SeAPI: Promise<StreamElements.SE_API>;
3646
3681
  Client: typeof Client;
@@ -3663,13 +3698,7 @@ declare const main: {
3663
3698
  multistream: {
3664
3699
  useComfyJs: typeof useComfyJs;
3665
3700
  };
3666
- internal: {
3667
- usedStorages: useStorage<any>[];
3668
- usedComms: useComms<any>[];
3669
- usedCommands: Command[];
3670
- usedButtons: Button[];
3671
- fakeUserPools: FakeUserPool[];
3672
- };
3701
+ internal: typeof internals;
3673
3702
  pronouns: {
3674
3703
  Alejo: typeof Alejo;
3675
3704
  };
@@ -3678,7 +3707,6 @@ declare const main: {
3678
3707
  declare global {
3679
3708
  interface Window {
3680
3709
  Tixyel: typeof main;
3681
- client: InstanceType<typeof main.Client> | undefined;
3682
3710
  ComfyJS?: ComfyJSInstance;
3683
3711
  }
3684
3712
  interface WindowEventMap {
@@ -3687,9 +3715,8 @@ declare global {
3687
3715
  onEventReceived: CustomEvent<StreamElements.Event.onEventReceived>;
3688
3716
  }
3689
3717
  const Tixyel: typeof main;
3690
- let client: InstanceType<typeof main.Client> | undefined;
3691
3718
  const SE_API: StreamElements.SE_API;
3692
3719
  }
3693
3720
 
3694
3721
  export { Alejo, Button, Command, EventProvider, StreamElements, StreamElementsEvents, Twitch, TwitchEvents, YoutubeEvents, main as default, useComfyJs, useLogger, useQueue, useStorage };
3695
- export type { BttvEmote, ClientEvents$1 as ClientEvents, Emoji, Emote, FfzEmote, JSONObject, JSONPrimitive, JSONSerializable, MapNumberValuesToString, NumberAsString, PathValue, Provider$1 as Provider, RequireAtLeastOne, SeventvEmote, TwitchEmote };
3722
+ export type { BttvEmote, ClientCustomEventPayload, ClientCustomProviderEvents, ClientEventTuple, ClientEvents, ClientProviderEvents, Emoji, Emote, FfzEmote, JSONObject, JSONPrimitive, JSONSerializable, MapNumberValuesToString, NumberAsString, PathValue, Provider$1 as Provider, RequireAtLeastOne, SeventvEmote, TwitchEmote };