@allior/wmake-streamelements-events 0.0.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 (98) hide show
  1. package/README.md +46 -0
  2. package/README_RU.md +46 -0
  3. package/dist/react/hooks/index.d.ts +4 -0
  4. package/dist/react/hooks/index.d.ts.map +1 -0
  5. package/dist/react/hooks/use-event-listener.d.ts +4 -0
  6. package/dist/react/hooks/use-event-listener.d.ts.map +1 -0
  7. package/dist/react/hooks/use-on-event-received.d.ts +44 -0
  8. package/dist/react/hooks/use-on-event-received.d.ts.map +1 -0
  9. package/dist/react/hooks/use-on-widget-load.d.ts +4 -0
  10. package/dist/react/hooks/use-on-widget-load.d.ts.map +1 -0
  11. package/dist/react/index.d.ts +4 -0
  12. package/dist/react/index.d.ts.map +1 -0
  13. package/dist/react/index.iife.js +2 -0
  14. package/dist/react/index.iife.js.map +1 -0
  15. package/dist/react/index.js +179 -0
  16. package/dist/react/index.js.map +1 -0
  17. package/dist/react/types/index.d.ts +2 -0
  18. package/dist/react/types/index.d.ts.map +1 -0
  19. package/dist/react/types/window-events.d.ts +3 -0
  20. package/dist/react/types/window-events.d.ts.map +1 -0
  21. package/dist/root/aggregate.d.ts +12 -0
  22. package/dist/root/aggregate.d.ts.map +1 -0
  23. package/dist/root/classifier.d.ts +9 -0
  24. package/dist/root/classifier.d.ts.map +1 -0
  25. package/dist/root/commands.d.ts +9 -0
  26. package/dist/root/commands.d.ts.map +1 -0
  27. package/dist/root/data/event-detail.d.ts +10 -0
  28. package/dist/root/data/event-detail.d.ts.map +1 -0
  29. package/dist/root/data/field-value.d.ts +3 -0
  30. package/dist/root/data/field-value.d.ts.map +1 -0
  31. package/dist/root/data/index.d.ts +3 -0
  32. package/dist/root/data/index.d.ts.map +1 -0
  33. package/dist/root/data/widget-load.d.ts +5 -0
  34. package/dist/root/data/widget-load.d.ts.map +1 -0
  35. package/dist/root/index.d.ts +10 -0
  36. package/dist/root/index.d.ts.map +1 -0
  37. package/dist/root/index.iife.js +2 -0
  38. package/dist/root/index.iife.js.map +1 -0
  39. package/dist/root/index.js +2692 -0
  40. package/dist/root/index.js.map +1 -0
  41. package/dist/root/keys.d.ts +6 -0
  42. package/dist/root/keys.d.ts.map +1 -0
  43. package/dist/root/message/event.d.ts +7 -0
  44. package/dist/root/message/event.d.ts.map +1 -0
  45. package/dist/root/message/index.d.ts +5 -0
  46. package/dist/root/message/index.d.ts.map +1 -0
  47. package/dist/root/message/message.d.ts +37 -0
  48. package/dist/root/message/message.d.ts.map +1 -0
  49. package/dist/root/message/roles.d.ts +4 -0
  50. package/dist/root/message/roles.d.ts.map +1 -0
  51. package/dist/root/message/tags.d.ts +69 -0
  52. package/dist/root/message/tags.d.ts.map +1 -0
  53. package/dist/root/sources/alerts.d.ts +162 -0
  54. package/dist/root/sources/alerts.d.ts.map +1 -0
  55. package/dist/root/sources/index.d.ts +5 -0
  56. package/dist/root/sources/index.d.ts.map +1 -0
  57. package/dist/root/sources/messages.d.ts +963 -0
  58. package/dist/root/sources/messages.d.ts.map +1 -0
  59. package/dist/root/sources/on-widget-load-detail.d.ts +542 -0
  60. package/dist/root/sources/on-widget-load-detail.d.ts.map +1 -0
  61. package/dist/root/types/index.d.ts +3 -0
  62. package/dist/root/types/index.d.ts.map +1 -0
  63. package/dist/root/types/on-event-received.d.ts +170 -0
  64. package/dist/root/types/on-event-received.d.ts.map +1 -0
  65. package/dist/root/types/on-widget-load.d.ts +135 -0
  66. package/dist/root/types/on-widget-load.d.ts.map +1 -0
  67. package/dist/root/window-event-map.d.ts +10 -0
  68. package/dist/root/window-event-map.d.ts.map +1 -0
  69. package/package.json +48 -0
  70. package/src/react/hooks/index.ts +3 -0
  71. package/src/react/hooks/use-event-listener.ts +17 -0
  72. package/src/react/hooks/use-on-event-received.ts +206 -0
  73. package/src/react/hooks/use-on-widget-load.ts +15 -0
  74. package/src/react/index.ts +3 -0
  75. package/src/react/types/index.ts +1 -0
  76. package/src/react/types/window-events.ts +6 -0
  77. package/src/root/aggregate.ts +258 -0
  78. package/src/root/classifier.ts +208 -0
  79. package/src/root/commands.ts +33 -0
  80. package/src/root/data/event-detail.ts +14 -0
  81. package/src/root/data/field-value.ts +2 -0
  82. package/src/root/data/index.ts +2 -0
  83. package/src/root/data/widget-load.ts +5 -0
  84. package/src/root/index.ts +9 -0
  85. package/src/root/keys.ts +14 -0
  86. package/src/root/message/event.ts +7 -0
  87. package/src/root/message/index.ts +4 -0
  88. package/src/root/message/message.ts +40 -0
  89. package/src/root/message/roles.ts +43 -0
  90. package/src/root/message/tags.ts +119 -0
  91. package/src/root/sources/alerts.ts +163 -0
  92. package/src/root/sources/index.ts +5 -0
  93. package/src/root/sources/messages.ts +1245 -0
  94. package/src/root/sources/on-widget-load-detail.ts +969 -0
  95. package/src/root/types/index.ts +2 -0
  96. package/src/root/types/on-event-received.ts +198 -0
  97. package/src/root/types/on-widget-load.ts +171 -0
  98. package/src/root/window-event-map.ts +11 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../../src/react/hooks/use-event-listener.ts","../../src/react/hooks/use-on-event-received.ts","../../src/react/hooks/use-on-widget-load.ts"],"sourcesContent":["import { type DependencyList, useEffect, useRef } from \"react\";\r\nimport type { WindowEventKey, WindowEventListener } from \"../types/window-events.js\";\r\n\r\nexport function useEventListener<K extends WindowEventKey>(\r\n eventName: K,\r\n handler: WindowEventListener<K>,\r\n deps: DependencyList = [],\r\n): void {\r\n const callbackRef = useRef<WindowEventListener<K>>(handler);\r\n callbackRef.current = handler;\r\n\r\n useEffect(() => {\r\n const fn = (ev: WindowEventMap[K]) => callbackRef.current.call(window, ev);\r\n window.addEventListener(eventName, fn as EventListener);\r\n return () => window.removeEventListener(eventName, fn as EventListener);\r\n }, [eventName, ...deps]);\r\n}\r\n","import type { DependencyList } from \"react\";\r\nimport type { WindowEventListener } from \"../types/window-events\";\r\nimport type {\r\n CheerDetail,\r\n CommunityGiftPurchaseDetail,\r\n DonationDetail,\r\n FollowerDetail,\r\n RaidDetail,\r\n SubscriberDetail,\r\n SubscriberLatestDetail,\r\n} from \"@/root/types/on-event-received\";\r\nimport type { WidgetButtonDetail } from \"@/root/data/event-detail\";\r\nimport type { MessageEvent } from \"@/root/message\";\r\nimport { useEventListener } from \"./use-event-listener\";\r\n\r\n/** Проверка, что detail — сообщение чата (listener \"message\"). */\r\nexport function isMessageEvent(d: unknown): d is MessageEvent {\r\n return (d as { listener?: string }).listener === \"message\";\r\n}\r\n\r\n/** Проверка, что detail — FollowerDetail (follower-latest). */\r\nexport function isFollowerDetail(d: unknown): d is FollowerDetail {\r\n return (d as { listener?: string }).listener === \"follower-latest\";\r\n}\r\n\r\n/** Проверка, что detail — CommunityGiftPurchaseDetail. */\r\nexport function isCommunityGiftPurchaseDetail(\r\n d: unknown,\r\n): d is CommunityGiftPurchaseDetail {\r\n const x = d as { listener?: string; event?: { type?: string } };\r\n return x.listener === \"event\" && x.event?.type === \"communityGiftPurchase\";\r\n}\r\n\r\n/** Проверка, что detail — SubscriberLatestDetail. */\r\nexport function isSubscriberLatestDetail(\r\n d: unknown,\r\n): d is SubscriberLatestDetail {\r\n return (d as { listener?: string }).listener === \"subscriber-latest\";\r\n}\r\n\r\n/** Проверка, что detail — SubscriberDetail (event type subscriber). */\r\nexport function isSubscriberDetail(d: unknown): d is SubscriberDetail {\r\n const x = d as { listener?: string; event?: { type?: string } };\r\n return x.listener === \"event\" && x.event?.type === \"subscriber\";\r\n}\r\n\r\n/** Проверка, что detail — CheerDetail. */\r\nexport function isCheerDetail(d: unknown): d is CheerDetail {\r\n return (d as { listener?: string }).listener === \"cheer-latest\";\r\n}\r\n\r\n/** Проверка, что detail — RaidDetail. */\r\nexport function isRaidDetail(d: unknown): d is RaidDetail {\r\n return (d as { listener?: string }).listener === \"raid-latest\";\r\n}\r\n\r\n/** Проверка, что detail — DonationDetail. */\r\nexport function isDonationDetail(d: unknown): d is DonationDetail {\r\n return (d as { listener?: string }).listener === \"donation\";\r\n}\r\n\r\n/** Проверка, что detail — WidgetButtonDetail (event:test, widget-button). */\r\nexport function isWidgetButtonDetail(d: unknown): d is WidgetButtonDetail {\r\n const x = d as { listener?: string; event?: { listener?: string } };\r\n return x.listener === \"event:test\" && x.event?.listener === \"widget-button\";\r\n}\r\n\r\n/** Общий хук на любое событие onEventReceived. */\r\nexport function useOnEventReceived(\r\n handler: WindowEventListener<\"onEventReceived\">,\r\n deps: DependencyList = [],\r\n): void {\r\n useEventListener(\"onEventReceived\", handler, deps);\r\n}\r\n\r\n/** Хук на сообщение чата (listener \"message\"). */\r\nexport function useOnMessageReceived(\r\n handler: (ev: CustomEvent<MessageEvent>) => void,\r\n deps: DependencyList = [],\r\n): void {\r\n useEventListener(\r\n \"onEventReceived\",\r\n function (this: Window, ev: WindowEventMap[\"onEventReceived\"]) {\r\n if (isMessageEvent(ev.detail)) handler(ev as CustomEvent<MessageEvent>);\r\n },\r\n deps,\r\n );\r\n}\r\n\r\n/** Хук на нажатие кнопки виджета (event:test, widget-button). В detail.event.field — имя поля кнопки. */\r\nexport function useOnWidgetButtonReceived(\r\n handler: (ev: CustomEvent<WidgetButtonDetail>) => void,\r\n deps: DependencyList = [],\r\n): void {\r\n useEventListener(\r\n \"onEventReceived\",\r\n function (this: Window, ev: WindowEventMap[\"onEventReceived\"]) {\r\n if (isWidgetButtonDetail(ev.detail))\r\n handler(ev as CustomEvent<WidgetButtonDetail>);\r\n },\r\n deps,\r\n );\r\n}\r\n\r\n/** Хук на алерт follower-latest. */\r\nexport function useOnFollowerReceived(\r\n handler: (ev: CustomEvent<FollowerDetail>) => void,\r\n deps: DependencyList = [],\r\n): void {\r\n useEventListener(\r\n \"onEventReceived\",\r\n function (this: Window, ev: WindowEventMap[\"onEventReceived\"]) {\r\n if (isFollowerDetail(ev.detail))\r\n handler(ev as CustomEvent<FollowerDetail>);\r\n },\r\n deps,\r\n );\r\n}\r\n\r\n/** Хук на алерт communityGiftPurchase. */\r\nexport function useOnCommunityGiftPurchaseReceived(\r\n handler: (ev: CustomEvent<CommunityGiftPurchaseDetail>) => void,\r\n deps: DependencyList = [],\r\n): void {\r\n useEventListener(\r\n \"onEventReceived\",\r\n function (this: Window, ev: WindowEventMap[\"onEventReceived\"]) {\r\n if (isCommunityGiftPurchaseDetail(ev.detail))\r\n handler(ev as CustomEvent<CommunityGiftPurchaseDetail>);\r\n },\r\n deps,\r\n );\r\n}\r\n\r\n/** Хук на алерт subscriber-latest. */\r\nexport function useOnSubscriberLatestReceived(\r\n handler: (ev: CustomEvent<SubscriberLatestDetail>) => void,\r\n deps: DependencyList = [],\r\n): void {\r\n useEventListener(\r\n \"onEventReceived\",\r\n function (this: Window, ev: WindowEventMap[\"onEventReceived\"]) {\r\n if (isSubscriberLatestDetail(ev.detail))\r\n handler(ev as CustomEvent<SubscriberLatestDetail>);\r\n },\r\n deps,\r\n );\r\n}\r\n\r\n/** Хук на алерт subscriber (self / подарок / продление). */\r\nexport function useOnSubscriberReceived(\r\n handler: (ev: CustomEvent<SubscriberDetail>) => void,\r\n deps: DependencyList = [],\r\n): void {\r\n useEventListener(\r\n \"onEventReceived\",\r\n function (this: Window, ev: WindowEventMap[\"onEventReceived\"]) {\r\n if (isSubscriberDetail(ev.detail))\r\n handler(ev as CustomEvent<SubscriberDetail>);\r\n },\r\n deps,\r\n );\r\n}\r\n\r\n/** Хук на алерт cheer-latest (биты). */\r\nexport function useOnCheerReceived(\r\n handler: (ev: CustomEvent<CheerDetail>) => void,\r\n deps: DependencyList = [],\r\n): void {\r\n useEventListener(\r\n \"onEventReceived\",\r\n function (this: Window, ev: WindowEventMap[\"onEventReceived\"]) {\r\n if (isCheerDetail(ev.detail)) handler(ev as CustomEvent<CheerDetail>);\r\n },\r\n deps,\r\n );\r\n}\r\n\r\n/** Хук на алерт raid-latest. */\r\nexport function useOnRaidReceived(\r\n handler: (ev: CustomEvent<RaidDetail>) => void,\r\n deps: DependencyList = [],\r\n): void {\r\n useEventListener(\r\n \"onEventReceived\",\r\n function (this: Window, ev: WindowEventMap[\"onEventReceived\"]) {\r\n if (isRaidDetail(ev.detail)) handler(ev as CustomEvent<RaidDetail>);\r\n },\r\n deps,\r\n );\r\n}\r\n\r\n/** Хук на алерт donation. */\r\nexport function useOnDonationReceived(\r\n handler: (ev: CustomEvent<DonationDetail>) => void,\r\n deps: DependencyList = [],\r\n): void {\r\n useEventListener(\r\n \"onEventReceived\",\r\n function (this: Window, ev: WindowEventMap[\"onEventReceived\"]) {\r\n if (isDonationDetail(ev.detail))\r\n handler(ev as CustomEvent<DonationDetail>);\r\n },\r\n deps,\r\n );\r\n}\r\n","import type { DependencyList } from \"react\";\r\nimport type { WindowEventListener } from \"../types/window-events.js\";\r\nimport type { OnWidgetLoadEventDetails } from \"@/root/types/on-widget-load\";\r\nimport { useEventListener } from \"./use-event-listener.js\";\r\n\r\nexport function useOnWidgetLoad(\r\n handler: (ev: CustomEvent<OnWidgetLoadEventDetails>) => void,\r\n deps: DependencyList = [],\r\n): void {\r\n useEventListener(\r\n \"onWidgetLoad\",\r\n handler as WindowEventListener<\"onWidgetLoad\">,\r\n deps,\r\n );\r\n}\r\n"],"names":["useEventListener","eventName","handler","deps","callbackRef","useRef","useEffect","fn","ev","isMessageEvent","d","isFollowerDetail","isCommunityGiftPurchaseDetail","x","_a","isSubscriberLatestDetail","isSubscriberDetail","isCheerDetail","isRaidDetail","isDonationDetail","isWidgetButtonDetail","useOnEventReceived","useOnMessageReceived","useOnWidgetButtonReceived","useOnFollowerReceived","useOnCommunityGiftPurchaseReceived","useOnSubscriberLatestReceived","useOnSubscriberReceived","useOnCheerReceived","useOnRaidReceived","useOnDonationReceived","useOnWidgetLoad"],"mappings":";;AAGO,SAASA,EACdC,GACAC,GACAC,IAAuB,CAAA,GACjB;AACN,QAAMC,IAAcC,EAA+BH,CAAO;AAC1D,EAAAE,EAAY,UAAUF,GAEtBI,EAAU,MAAM;AACd,UAAMC,IAAK,CAACC,MAA0BJ,EAAY,QAAQ,KAAK,QAAQI,CAAE;AACzE,kBAAO,iBAAiBP,GAAWM,CAAmB,GAC/C,MAAM,OAAO,oBAAoBN,GAAWM,CAAmB;AAAA,EACxE,GAAG,CAACN,GAAW,GAAGE,CAAI,CAAC;AACzB;ACAO,SAASM,EAAeC,GAA+B;AAC5D,SAAQA,EAA4B,aAAa;AACnD;AAGO,SAASC,EAAiBD,GAAiC;AAChE,SAAQA,EAA4B,aAAa;AACnD;AAGO,SAASE,EACdF,GACkC;;AAClC,QAAMG,IAAIH;AACV,SAAOG,EAAE,aAAa,aAAWC,IAAAD,EAAE,UAAF,gBAAAC,EAAS,UAAS;AACrD;AAGO,SAASC,EACdL,GAC6B;AAC7B,SAAQA,EAA4B,aAAa;AACnD;AAGO,SAASM,EAAmBN,GAAmC;;AACpE,QAAMG,IAAIH;AACV,SAAOG,EAAE,aAAa,aAAWC,IAAAD,EAAE,UAAF,gBAAAC,EAAS,UAAS;AACrD;AAGO,SAASG,EAAcP,GAA8B;AAC1D,SAAQA,EAA4B,aAAa;AACnD;AAGO,SAASQ,EAAaR,GAA6B;AACxD,SAAQA,EAA4B,aAAa;AACnD;AAGO,SAASS,EAAiBT,GAAiC;AAChE,SAAQA,EAA4B,aAAa;AACnD;AAGO,SAASU,EAAqBV,GAAqC;;AACxE,QAAMG,IAAIH;AACV,SAAOG,EAAE,aAAa,kBAAgBC,IAAAD,EAAE,UAAF,gBAAAC,EAAS,cAAa;AAC9D;AAGO,SAASO,EACdnB,GACAC,IAAuB,IACjB;AACN,EAAAH,EAAiB,mBAAmBE,GAASC,CAAI;AACnD;AAGO,SAASmB,EACdpB,GACAC,IAAuB,IACjB;AACN,EAAAH;AAAA,IACE;AAAA,IACA,SAAwBQ,GAAuC;AAC7D,MAAIC,EAAeD,EAAG,MAAM,OAAWA,CAA+B;AAAA,IACxE;AAAA,IACAL;AAAA,EAAA;AAEJ;AAGO,SAASoB,EACdrB,GACAC,IAAuB,IACjB;AACN,EAAAH;AAAA,IACE;AAAA,IACA,SAAwBQ,GAAuC;AAC7D,MAAIY,EAAqBZ,EAAG,MAAM,KAChCN,EAAQM,CAAqC;AAAA,IACjD;AAAA,IACAL;AAAA,EAAA;AAEJ;AAGO,SAASqB,EACdtB,GACAC,IAAuB,IACjB;AACN,EAAAH;AAAA,IACE;AAAA,IACA,SAAwBQ,GAAuC;AAC7D,MAAIG,EAAiBH,EAAG,MAAM,KAC5BN,EAAQM,CAAiC;AAAA,IAC7C;AAAA,IACAL;AAAA,EAAA;AAEJ;AAGO,SAASsB,EACdvB,GACAC,IAAuB,IACjB;AACN,EAAAH;AAAA,IACE;AAAA,IACA,SAAwBQ,GAAuC;AAC7D,MAAII,EAA8BJ,EAAG,MAAM,KACzCN,EAAQM,CAA8C;AAAA,IAC1D;AAAA,IACAL;AAAA,EAAA;AAEJ;AAGO,SAASuB,EACdxB,GACAC,IAAuB,IACjB;AACN,EAAAH;AAAA,IACE;AAAA,IACA,SAAwBQ,GAAuC;AAC7D,MAAIO,EAAyBP,EAAG,MAAM,KACpCN,EAAQM,CAAyC;AAAA,IACrD;AAAA,IACAL;AAAA,EAAA;AAEJ;AAGO,SAASwB,EACdzB,GACAC,IAAuB,IACjB;AACN,EAAAH;AAAA,IACE;AAAA,IACA,SAAwBQ,GAAuC;AAC7D,MAAIQ,EAAmBR,EAAG,MAAM,KAC9BN,EAAQM,CAAmC;AAAA,IAC/C;AAAA,IACAL;AAAA,EAAA;AAEJ;AAGO,SAASyB,EACd1B,GACAC,IAAuB,IACjB;AACN,EAAAH;AAAA,IACE;AAAA,IACA,SAAwBQ,GAAuC;AAC7D,MAAIS,EAAcT,EAAG,MAAM,OAAWA,CAA8B;AAAA,IACtE;AAAA,IACAL;AAAA,EAAA;AAEJ;AAGO,SAAS0B,EACd3B,GACAC,IAAuB,IACjB;AACN,EAAAH;AAAA,IACE;AAAA,IACA,SAAwBQ,GAAuC;AAC7D,MAAIU,EAAaV,EAAG,MAAM,OAAWA,CAA6B;AAAA,IACpE;AAAA,IACAL;AAAA,EAAA;AAEJ;AAGO,SAAS2B,EACd5B,GACAC,IAAuB,IACjB;AACN,EAAAH;AAAA,IACE;AAAA,IACA,SAAwBQ,GAAuC;AAC7D,MAAIW,EAAiBX,EAAG,MAAM,KAC5BN,EAAQM,CAAiC;AAAA,IAC7C;AAAA,IACAL;AAAA,EAAA;AAEJ;ACxMO,SAAS4B,EACd7B,GACAC,IAAuB,IACjB;AACN,EAAAH;AAAA,IACE;AAAA,IACAE;AAAA,IACAC;AAAA,EAAA;AAEJ;"}
@@ -0,0 +1,2 @@
1
+ export * from "./window-events";
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/react/types/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC"}
@@ -0,0 +1,3 @@
1
+ export type WindowEventKey = keyof WindowEventMap;
2
+ export type WindowEventListener<K extends WindowEventKey> = (this: Window, ev: WindowEventMap[K]) => unknown;
3
+ //# sourceMappingURL=window-events.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"window-events.d.ts","sourceRoot":"","sources":["../../../src/react/types/window-events.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,cAAc,GAAG,MAAM,cAAc,CAAC;AAElD,MAAM,MAAM,mBAAmB,CAAC,CAAC,SAAS,cAAc,IAAI,CAC1D,IAAI,EAAE,MAAM,EACZ,EAAE,EAAE,cAAc,CAAC,CAAC,CAAC,KAClB,OAAO,CAAC"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Event normalizer — aggregate mode: buffer events by activityGroup,
3
+ * merge into one normalized event per action (timeout 2.5s).
4
+ */
5
+ import type { IncomingDetail, NormalizerOptions, ClassifiedEvent } from "./types/on-event-received.js";
6
+ /**
7
+ * Normalizes an incoming subscription event (StreamElements/Twitch).
8
+ * Buffers community-gift recipients by activityGroup, then emits one normalized event per group.
9
+ * For self-sub, solo-sub, sub-renewal emits immediately (with optional cache dedup).
10
+ */
11
+ export declare function normalizeIncomingEvent(detail: IncomingDetail, options: NormalizerOptions | undefined, onNormalized: (event: ClassifiedEvent | null) => void): void;
12
+ //# sourceMappingURL=aggregate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"aggregate.d.ts","sourceRoot":"","sources":["../../src/root/aggregate.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,EACV,cAAc,EACd,iBAAiB,EAEjB,eAAe,EAChB,MAAM,8BAA8B,CAAC;AAuHtC;;;;GAIG;AACH,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,cAAc,EACtB,OAAO,EAAE,iBAAiB,GAAG,SAAS,EACtC,YAAY,EAAE,CAAC,KAAK,EAAE,eAAe,GAAG,IAAI,KAAK,IAAI,GACpD,IAAI,CAsHN"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Shared classification and tier parsing for Twitch/StreamElements subscription events.
3
+ * Used by aggregate normalizer.
4
+ */
5
+ import type { IncomingDetail, TierInfo, ClassifiedEvent } from "./types/on-event-received.js";
6
+ export declare function parseTier(raw: string | number | null | undefined): TierInfo;
7
+ export declare function getCacheKey(detail: IncomingDetail): string;
8
+ export declare function classifyEvent(detail: IncomingDetail): ClassifiedEvent | null;
9
+ //# sourceMappingURL=classifier.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"classifier.d.ts","sourceRoot":"","sources":["../../src/root/classifier.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EACV,cAAc,EACd,QAAQ,EACR,eAAe,EAChB,MAAM,8BAA8B,CAAC;AAEtC,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,QAAQ,CAO3E;AAED,wBAAgB,WAAW,CAAC,MAAM,EAAE,cAAc,GAAG,MAAM,CAoB1D;AAED,wBAAgB,aAAa,CAAC,MAAM,EAAE,cAAc,GAAG,eAAe,GAAG,IAAI,CAqK5E"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Отправляет тестовое сообщение по ключу: диспатчит CustomEvent onEventReceived.
3
+ */
4
+ export declare function testMessage(key: string): void;
5
+ /**
6
+ * Отправляет тестовый алерт по ключу: диспатчит CustomEvent onEventReceived.
7
+ */
8
+ export declare function testAlert(key: string): void;
9
+ //# sourceMappingURL=commands.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"commands.d.ts","sourceRoot":"","sources":["../../src/root/commands.ts"],"names":[],"mappings":"AAQA;;GAEG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAQ7C;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAQ3C"}
@@ -0,0 +1,10 @@
1
+ export interface EventDetail<T = string, R = unknown> {
2
+ listener: T;
3
+ event: R;
4
+ }
5
+ export type FollowerLatestDetail = EventDetail<"follower-latest">;
6
+ export type WidgetButtonDetail = EventDetail<"event:test", {
7
+ listener: "widget-button";
8
+ field: string;
9
+ }>;
10
+ //# sourceMappingURL=event-detail.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"event-detail.d.ts","sourceRoot":"","sources":["../../../src/root/data/event-detail.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,WAAW,CAAC,CAAC,GAAG,MAAM,EAAE,CAAC,GAAG,OAAO;IAClD,QAAQ,EAAE,CAAC,CAAC;IACZ,KAAK,EAAE,CAAC,CAAC;CACV;AAED,MAAM,MAAM,oBAAoB,GAAG,WAAW,CAAC,iBAAiB,CAAC,CAAC;AAElE,MAAM,MAAM,kBAAkB,GAAG,WAAW,CAC1C,YAAY,EACZ;IACE,QAAQ,EAAE,eAAe,CAAC;IAC1B,KAAK,EAAE,MAAM,CAAC;CACf,CACF,CAAC"}
@@ -0,0 +1,3 @@
1
+ /** Минимальный тип для fieldData в WidgetLoadDetail (без зависимости от streamelements). */
2
+ export type FieldValue = string | number | boolean | undefined | null;
3
+ //# sourceMappingURL=field-value.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"field-value.d.ts","sourceRoot":"","sources":["../../../src/root/data/field-value.ts"],"names":[],"mappings":"AAAA,4FAA4F;AAC5F,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,GAAG,IAAI,CAAC"}
@@ -0,0 +1,3 @@
1
+ export * from "./event-detail";
2
+ export * from "./widget-load";
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/root/data/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC"}
@@ -0,0 +1,5 @@
1
+ import type { FieldValue } from "./field-value.js";
2
+ export interface WidgetLoadDetail {
3
+ fieldData: Record<string, FieldValue>;
4
+ }
5
+ //# sourceMappingURL=widget-load.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"widget-load.d.ts","sourceRoot":"","sources":["../../../src/root/data/widget-load.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAEnD,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;CACvC"}
@@ -0,0 +1,10 @@
1
+ export * from "./classifier.js";
2
+ export * from "./aggregate.js";
3
+ export * from "./types";
4
+ import "./window-event-map";
5
+ export * from "./data";
6
+ export * from "./sources/index";
7
+ export * from "./commands";
8
+ export * from "./keys";
9
+ export * from "./message";
10
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/root/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,SAAS,CAAC;AACxB,OAAO,oBAAoB,CAAC;AAC5B,cAAc,QAAQ,CAAC;AACvB,cAAc,iBAAiB,CAAC;AAChC,cAAc,YAAY,CAAC;AAC3B,cAAc,QAAQ,CAAC;AACvB,cAAc,WAAW,CAAC"}
@@ -0,0 +1,2 @@
1
+ (function(i){"use strict";function g(e){if(e==null)return{tier:0,tierText:""};const a=typeof e=="string"?e:String(e),t=parseInt(a,10);return isNaN(t)?{tier:0,tierText:a}:{tier:t>=3e3?3:t>=2e3?2:t>=1e3?1:0,tierText:a}}function T(e){const a=e.listener,t=e.event??{},r=t.activityGroup,s=t.activityId??t._id;return r?String(r):s?String(s):a==="subscriber-latest"&&t.bulkGifted?"sl-bulk-"+(t.sender??"")+"-"+(t.amount??"")+"-"+(t.tier??"")+"-"+(t._id??""):"sl-"+(t._id??t.activityId??"")}function w(e){const a=e.listener,t=e.event??{},r=t.data??t,s=g(r.tier??t.tier);if(a==="event"){if(t.type==="communityGiftPurchase"){const n=r.username&&String(r.username).toLowerCase()==="anonymous"||r.sender==="Anonymous";return{type:n?"community-gift-anonymous":"community-gift",tier:s.tier,tierText:s.tierText,totalAmount:parseInt(String(r.amount),10)||1,recipients:[],sender:n?void 0:r.sender??r.displayName??r.username,anonymousDisplayName:n?r.displayName??"Anonymous":void 0}}if(t.type==="subscriber"){const n=r.gifted===!0,c=r.sender,l=parseInt(String(r.amount),10)||1,d=r.username??r.displayName,m=t.activityGroup;if(c==="Anonymous"&&m)return{type:"community-gift-anonymous",_role:"recipient",activityGroup:m,recipient:d??r.displayName,tier:s.tier,tierText:s.tierText};if(n&&c&&c!=="Anonymous"){if(!(r.communityGifted===!0||m!=null&&m!=="")){const o=String(r.message??"").indexOf("first Gift Sub")!==-1;return{type:"solo-sub-to-someone",sender:c,recipient:d??r.displayName,tier:s.tier,tierText:s.tierText,firstGiftInChannel:o}}return{type:"community-gift",_role:"recipient",activityGroup:m,recipient:d??r.displayName,tier:s.tier,tierText:s.tierText}}return!n&&l>1?{type:"sub-renewal",name:d??r.displayName,months:l,tier:s.tier,tierText:s.tierText}:!n&&l===1?{type:"self-sub",name:d??r.displayName,tier:s.tier,tierText:s.tierText}:m?{type:"community-gift",_role:"recipient",activityGroup:m,recipient:d??r.displayName,tier:s.tier,tierText:s.tierText}:null}return null}if(a==="subscriber-latest"){const n=t.bulkGifted===!0,c=t.sender,l=t.name,d=parseInt(String(t.amount),10)||1,m=t.gifted===!0,p=t.isCommunityGift===!0||t.communityGifted===!0;if(n&&c==="Anonymous")return{type:"community-gift-anonymous",tier:s.tier,tierText:s.tierText,totalAmount:d,recipients:[]};if(n&&c)return{type:"community-gift",sender:c,tier:s.tier,tierText:s.tierText,totalAmount:d,recipients:[]};if(m&&!p&&c){const o=String(t.message??"").indexOf("first Gift Sub")!==-1;return{type:"solo-sub-to-someone",sender:c,recipient:l??"",tier:s.tier,tierText:s.tierText,firstGiftInChannel:o}}return!m&&d>1?{type:"sub-renewal",name:l??"",months:d,tier:s.tier,tierText:s.tierText}:!m&&d===1&&(c==null||l===c)?{type:"self-sub",name:l??"",tier:s.tier,tierText:s.tierText}:null}return null}const f=2500,u={},b={};function A(e,a){if(!e)return null;if(typeof e._has=="function"&&typeof e._set=="function")return e;const t=e[a];return t&&typeof t._has=="function"?t:null}function x(e,a,t,r){const s=A(t,a.type);s&&s._has(e)||(s&&s._set(e,!0),r(a))}function y(e,a,t,r){const s=u[e];if(!s)return;delete u[e],b[e]&&(clearTimeout(b[e]),delete b[e]);const n=s.purchase,c=s.subscribers??[],l=s.type,d=s.tier,m=s.tierText,p=s.totalAmount??c.length,o=c.map(v=>v.recipient??v.username??v.name).filter(Boolean),h=c[0],J=h==null?void 0:h.sender,V=(n==null?void 0:n.sender)??s.sender??J;l==="community-gift"&&r&&V===r||(l==="community-gift-anonymous"?x(e,{type:"community-gift-anonymous",tier:d,tierText:m,totalAmount:p,recipients:o,anonymousDisplayName:n==null?void 0:n.anonymousDisplayName},a,t):x(e,{type:"community-gift",sender:V,tier:d,tierText:m,totalAmount:p,recipients:o},a,t))}function N(e,a,t){const r=a==null?void 0:a.cacheSubs,s=(a==null?void 0:a.broadcasterLogin)??"",n=w(e);if(!n){t(null);return}const c=A(r,n.type),l=T(e),d=e.event??{},m=d.data??d;if(n._role==="recipient"){const p=n.activityGroup??l;u[p]||(u[p]={type:n.type,subscribers:[],tier:n.tier,tierText:n.tierText,totalAmount:0}),b[p]&&clearTimeout(b[p]),b[p]=setTimeout(()=>{y(p,r,t,s)},f),u[p].subscribers.push({recipient:n.recipient,username:m.username,name:m.displayName,sender:m.sender}),u[p].totalAmount===0&&(u[p].totalAmount=1);return}if(n.type==="community-gift-anonymous"||n.type==="community-gift"){if(e.listener==="event"&&d.type==="communityGiftPurchase"){const o=d.activityGroup??(m&&m.activityGroup)??l;u[o]?(u[o].purchase=n,u[o].tier=n.tier,u[o].tierText=n.tierText,u[o].totalAmount=n.totalAmount??u[o].totalAmount,u[o].sender=n.sender,b[o]&&clearTimeout(b[o]),b[o]=setTimeout(()=>{y(o,r,t,s)},f)):(u[o]={type:n.type,purchase:n,subscribers:[],tier:n.tier,tierText:n.tierText,totalAmount:Number(n.totalAmount)||0,sender:n.sender},b[o]=setTimeout(()=>{y(o,r,t,s)},f));return}if(e.listener==="subscriber-latest"){const o=n;if(n.type==="community-gift"&&s&&o.sender===s){t(null);return}return}return}if(n.type==="self-sub"||n.type==="solo-sub-to-someone"||n.type==="sub-renewal"){if(c!=null&&c._has(l)){t(null);return}c&&c._set(l,!0);const p=n;if(n.type==="solo-sub-to-someone"&&s&&p.sender===s){t(null);return}t(n)}}const M={session:{data:{"follower-latest":{name:"imacanadiannn"},"follower-session":{count:0},"follower-week":{count:0},"follower-month":{count:0},"follower-goal":{amount:137},"follower-total":{count:118,activityId:"",sessionTop:!1},"subscriber-latest":{name:"",amount:0,tier:"",message:""},"subscriber-new-latest":{name:"",amount:0,message:""},"subscriber-resub-latest":{name:"",amount:0,message:""},"subscriber-gifted-latest":{name:"",amount:0,message:"",tier:"",sender:""},"subscriber-session":{count:0},"subscriber-new-session":{count:0},"subscriber-resub-session":{count:0},"subscriber-gifted-session":{count:0},"subscriber-week":{count:0},"subscriber-month":{count:0},"subscriber-goal":{amount:0},"subscriber-total":{count:0,activityId:"",sessionTop:!1},"subscriber-points":{amount:0,activityId:"",sessionTop:!1},"subscriber-alltime-gifter":{name:"",amount:0},"host-latest":{name:"",amount:0},"raid-latest":{name:"agnascor2",amount:6},"cheer-session":{amount:0},"cheer-week":{amount:0},"cheer-month":{amount:0},"cheer-total":{amount:0},"cheer-count":{count:0},"cheer-goal":{amount:0},"cheer-latest":{name:"",amount:0},"cheer-session-top-donation":{amount:0,name:""},"cheer-weekly-top-donation":{amount:0,name:""},"cheer-monthly-top-donation":{amount:0,name:""},"cheer-alltime-top-donation":{amount:0,name:""},"cheer-session-top-donator":{amount:0,name:""},"cheer-weekly-top-donator":{amount:0,name:""},"cheer-monthly-top-donator":{amount:0,name:""},"cheer-alltime-top-donator":{amount:0,name:""},"tip-latest":{name:"",amount:0},"tip-session-top-donation":{amount:0,name:""},"tip-weekly-top-donation":{name:"",amount:0},"tip-monthly-top-donation":{name:"",amount:0},"tip-alltime-top-donation":{name:"",amount:0},"tip-session-top-donator":{amount:0,name:""},"tip-weekly-top-donator":{name:"",amount:0},"tip-monthly-top-donator":{name:"",amount:0},"tip-alltime-top-donator":{name:"",amount:0},"tip-session":{amount:0},"tip-week":{amount:0},"tip-month":{amount:0},"tip-total":{amount:0},"tip-count":{count:0},"tip-goal":{amount:0},"merch-goal-orders":{amount:0},"merch-goal-items":{amount:0},"merch-goal-total":{amount:0},"merch-latest":{name:"",amount:0,items:[]},"charityCampaignDonation-latest":{name:"",amount:0},"charityCampaignDonation-weekly-top-donation":{name:"",amount:0},"charityCampaignDonation-monthly-top-donation":{name:"",amount:0},"charityCampaignDonation-alltime-top-donation":{name:"",amount:0},"charityCampaignDonation-weekly-top-donator":{name:"",amount:0},"charityCampaignDonation-monthly-top-donator":{name:"",amount:0},"charityCampaignDonation-alltime-top-donator":{name:"",amount:0},"cheerPurchase-latest":{name:"",amount:0},"cheerPurchase-weekly-top-donation":{name:"",amount:0},"cheerPurchase-monthly-top-donation":{name:"",amount:0},"cheerPurchase-alltime-top-donation":{name:"",amount:0},"cheerPurchase-weekly-top-donator":{name:"",amount:0},"cheerPurchase-monthly-top-donator":{name:"",amount:0},"cheerPurchase-alltime-top-donator":{name:"",amount:0},"superchat-latest":{name:"",amount:0},"superchat-weekly-top-donation":{name:"",amount:0},"superchat-monthly-top-donation":{name:"",amount:0},"superchat-alltime-top-donation":{name:"",amount:0},"superchat-weekly-top-donator":{name:"",amount:0},"superchat-monthly-top-donator":{name:"",amount:0},"superchat-alltime-top-donator":{name:"",amount:0},"superchat-session":{amount:0},"superchat-week":{amount:0},"superchat-month":{amount:0},"superchat-total":{amount:0},"superchat-count":{count:0},"superchat-goal":{amount:0},"purchase-latest":{name:"",amount:0,avatar:"",message:"",items:[]},"follower-recent":[{name:"imacanadiannn",createdAt:"2026-01-13T01:53:50.296Z",type:"follower"},{name:"piwo143",createdAt:"2026-01-13T01:51:39.472Z",type:"follower"},{name:"latvan_",createdAt:"2026-01-12T23:54:29.235Z",type:"follower"},{name:"wheinwait",createdAt:"2026-01-12T23:11:28.946Z",type:"follower"},{name:"agnascor2",createdAt:"2026-01-12T23:11:14.880Z",type:"follower"},{name:"sunlitetuts",createdAt:"2026-01-12T21:03:59.207Z",type:"follower"},{name:"ayanamya",createdAt:"2026-01-12T20:00:55.509Z",type:"follower"},{name:"hopeless28",createdAt:"2026-01-12T18:35:21.731Z",type:"follower"},{name:"kakoytoclown",createdAt:"2026-01-11T18:39:36.843Z",type:"follower"},{name:"dababe__jq1",createdAt:"2024-10-10T23:27:49.699Z",type:"follower"},{name:"jjjllkmf",createdAt:"2024-05-05T09:44:16.287Z",type:"follower"},{name:"d4c_valintine",createdAt:"2024-05-03T15:13:28.365Z",type:"follower"},{name:"angelbliss_",createdAt:"2024-04-30T20:07:23.132Z",type:"follower"},{name:"o1zich",createdAt:"2024-04-22T16:23:26.139Z",type:"follower"},{name:"nearbuziky",createdAt:"2024-04-19T19:21:27.569Z",type:"follower"},{name:"samirkasamsa",createdAt:"2024-04-19T17:06:38.963Z",type:"follower"},{name:"flip1mip",createdAt:"2024-04-19T17:06:18.276Z",type:"follower"},{name:"valerie_solo",createdAt:"2024-04-19T17:06:07.473Z",type:"follower"},{name:"sxaelence",createdAt:"2024-04-19T07:06:46.330Z",type:"follower"},{name:"avokadik99",createdAt:"2024-04-17T16:11:29.604Z",type:"follower"},{name:"blackvoronstream",createdAt:"2024-04-16T21:29:33.306Z",type:"follower"},{name:"baldejniyy",createdAt:"2024-04-16T21:29:09.647Z",type:"follower"},{name:"p3ch4n_ka",createdAt:"2024-04-16T16:37:31.841Z",type:"follower"},{name:"kakosik_bee",createdAt:"2024-04-16T15:56:27.435Z",type:"follower"},{name:"hikotoru",createdAt:"2024-04-16T15:13:25.226Z",type:"follower"}],"subscriber-recent":[],"host-recent":[],"raid-recent":[{name:"agnascor2",amount:6,createdAt:"2026-01-12T23:08:21.815Z",type:"raid"},{name:"justduckomgg",amount:7,createdAt:"2024-04-19T17:05:53.185Z",type:"raid"},{name:"veessmk",amount:6,createdAt:"2024-04-17T15:40:43.945Z",type:"raid"},{name:"night_sculptor",amount:12,createdAt:"2024-04-16T18:07:40.040Z",type:"raid"},{name:"pixiemays",amount:6,createdAt:"2024-04-16T16:37:24.433Z",type:"raid"},{name:"night_sculptor",amount:8,createdAt:"2024-04-14T18:31:20.049Z",type:"raid"},{name:"pixiemays",amount:19,createdAt:"2024-04-14T13:22:05.794Z",type:"raid"},{name:"pixiemays",amount:15,createdAt:"2024-04-12T17:03:36.115Z",type:"raid"},{name:"alechkavt",amount:9,createdAt:"2024-04-11T17:54:47.691Z",type:"raid"},{name:"pixiemays",amount:8,createdAt:"2024-04-11T14:10:49.548Z",type:"raid"},{name:"night_sculptor",amount:22,createdAt:"2024-04-09T16:13:41.195Z",type:"raid"},{name:"pixiemays",amount:5,createdAt:"2024-04-08T09:54:01.603Z",type:"raid"},{name:"aki_neki",amount:5,createdAt:"2024-04-07T21:52:45.919Z",type:"raid"},{name:"alechkavt",amount:11,createdAt:"2024-04-07T18:59:39.286Z",type:"raid"},{name:"veessmk",amount:15,createdAt:"2024-04-07T16:13:25.172Z",type:"raid"},{name:"veessmk",amount:10,createdAt:"2024-03-17T16:11:38.631Z",type:"raid"}],"charityCampaignDonation-recent":[],"cheer-recent":[],"cheerPurchase-recent":[],"superchat-recent":[],"tip-recent":[],"merch-recent":[],"channel-points-latest":{amount:0,message:"",name:"",redemption:""},"community-gift-latest":{amount:0,name:"",tier:""},"charityCampaignDonation-session-top-donation":{amount:0,name:""},"charityCampaignDonation-session-top-donator":{amount:0,name:""},"cheerPurchase-session-top-donation":{amount:0,name:""},"cheerPurchase-session-top-donator":{amount:0,name:""},"hypetrain-latest":{active:0,amount:0,level:0,levelChanged:0,name:"",type:""},"hypetrain-latest-top-contributors":[],"hypetrain-level-goal":{amount:0},"hypetrain-level-progress":{amount:0,percent:0},"hypetrain-total":{amount:0},"superchat-session-top-donation":{amount:0,name:""},"superchat-session-top-donator":{amount:0,name:""}},settings:{autoReset:!0,calendar:!1,resetOnStart:!1}},recents:[{name:"imacanadiannn",createdAt:"2026-01-13T01:53:50.296Z",type:"follower"},{name:"piwo143",createdAt:"2026-01-13T01:51:39.472Z",type:"follower"},{name:"latvan_",createdAt:"2026-01-12T23:54:29.235Z",type:"follower"},{name:"wheinwait",createdAt:"2026-01-12T23:11:28.946Z",type:"follower"},{name:"agnascor2",createdAt:"2026-01-12T23:11:14.880Z",type:"follower"},{name:"sunlitetuts",createdAt:"2026-01-12T21:03:59.207Z",type:"follower"},{name:"ayanamya",createdAt:"2026-01-12T20:00:55.509Z",type:"follower"},{name:"hopeless28",createdAt:"2026-01-12T18:35:21.731Z",type:"follower"},{name:"kakoytoclown",createdAt:"2026-01-11T18:39:36.843Z",type:"follower"},{name:"dababe__jq1",createdAt:"2024-10-10T23:27:49.699Z",type:"follower"},{name:"jjjllkmf",createdAt:"2024-05-05T09:44:16.287Z",type:"follower"},{name:"d4c_valintine",createdAt:"2024-05-03T15:13:28.365Z",type:"follower"},{name:"angelbliss_",createdAt:"2024-04-30T20:07:23.132Z",type:"follower"},{name:"o1zich",createdAt:"2024-04-22T16:23:26.139Z",type:"follower"},{name:"nearbuziky",createdAt:"2024-04-19T19:21:27.569Z",type:"follower"},{name:"samirkasamsa",createdAt:"2024-04-19T17:06:38.963Z",type:"follower"},{name:"flip1mip",createdAt:"2024-04-19T17:06:18.276Z",type:"follower"},{name:"valerie_solo",createdAt:"2024-04-19T17:06:07.473Z",type:"follower"},{name:"sxaelence",createdAt:"2024-04-19T07:06:46.330Z",type:"follower"},{name:"avokadik99",createdAt:"2024-04-17T16:11:29.604Z",type:"follower"},{name:"blackvoronstream",createdAt:"2024-04-16T21:29:33.306Z",type:"follower"},{name:"baldejniyy",createdAt:"2024-04-16T21:29:09.647Z",type:"follower"},{name:"p3ch4n_ka",createdAt:"2024-04-16T16:37:31.841Z",type:"follower"},{name:"kakosik_bee",createdAt:"2024-04-16T15:56:27.435Z",type:"follower"},{name:"hikotoru",createdAt:"2024-04-16T15:13:25.226Z",type:"follower"},{name:"agnascor2",amount:6,createdAt:"2026-01-12T23:08:21.815Z",type:"raid"},{name:"justduckomgg",amount:7,createdAt:"2024-04-19T17:05:53.185Z",type:"raid"},{name:"veessmk",amount:6,createdAt:"2024-04-17T15:40:43.945Z",type:"raid"},{name:"night_sculptor",amount:12,createdAt:"2024-04-16T18:07:40.040Z",type:"raid"},{name:"pixiemays",amount:6,createdAt:"2024-04-16T16:37:24.433Z",type:"raid"},{name:"night_sculptor",amount:8,createdAt:"2024-04-14T18:31:20.049Z",type:"raid"},{name:"pixiemays",amount:19,createdAt:"2024-04-14T13:22:05.794Z",type:"raid"},{name:"pixiemays",amount:15,createdAt:"2024-04-12T17:03:36.115Z",type:"raid"},{name:"alechkavt",amount:9,createdAt:"2024-04-11T17:54:47.691Z",type:"raid"},{name:"pixiemays",amount:8,createdAt:"2024-04-11T14:10:49.548Z",type:"raid"},{name:"night_sculptor",amount:22,createdAt:"2024-04-09T16:13:41.195Z",type:"raid"},{name:"pixiemays",amount:5,createdAt:"2024-04-08T09:54:01.603Z",type:"raid"},{name:"aki_neki",amount:5,createdAt:"2024-04-07T21:52:45.919Z",type:"raid"},{name:"alechkavt",amount:11,createdAt:"2024-04-07T18:59:39.286Z",type:"raid"},{name:"veessmk",amount:15,createdAt:"2024-04-07T16:13:25.172Z",type:"raid"},{name:"veessmk",amount:10,createdAt:"2024-03-17T16:11:38.631Z",type:"raid"}],currency:{code:"USD",name:"U.S. Dollar",symbol:"$"},channel:{username:"encry_s",apiToken:"HAHANOTNOW",id:"65ba7503dc0415cb368947b1",providerId:"485678132",avatar:"https://static-cdn.jtvnw.net/jtv_user_pictures/6fe93724-803a-4e5a-b58a-1d42fbc84661-profile_image-300x300.jpeg"},fieldData:{testMessageButton:"zaytri_dynamicchatbubbles",previewMode:!1,previewType:"random",previewMessage:"",theme:"animal-crossing",corner:"round",darkMode:!1,highlightStyle:"normal",actionStyle:"italics",maxWidth:400,maxHeight:300,fixedWidth:!1,positionMode:"list",listDirection:"bottom",listAlignment:"center",topEdge:!0,bottomEdge:!0,leftEdge:!0,rightEdge:!0,edgeDeviation:0,padding:30,animation:"dynamic",dynamicModifier:1.75,maxMessages:25,hideOutOfBounds:!0,lifetime:0,delay:1,googleFont:"Nunito",customFont:"",fontSize:18,fontWeight:"bold",textDirection:"ltr",useCustomBorderColors:!0,borderColor:"#fed400",nameColor:"#000000",useCustomMessageColors:!0,backgroundColor:"#fff3c0",textColor:"#000000",pronounsMode:"suffix",pronounsLowercase:!0,pronounsBadgeCustomColors:!1,pronounsBadgeBackgroundColor:"#000000",pronounsBadgeBorderColor:"#FFFFFF",pronounsBadgeTextColor:"#FFFFFF",showBadges:!0,largeEmotes:!0,ffzGlobal:!1,bttvGlobal:!1,emoteOnly:!1,highlightOnly:!1,allowedStrings:[],minMessages:0,messageCooldown:0,raidCooldown:0,raidMin:0,includeEveryone:!0,includeFollowers:"true",minFollowTime:1,includeSubs:!0,includeVIPs:!0,includeMods:!0,allowUserList:[],ignoreUserList:["StreamElements","Streamlabs","Nightbot","Sery_Bot"],ignorePrefixList:["!"],volume:50,soundGroup1:[],userLevelSoundGroup1:"everyone",specificUsersSoundGroup1:[],messageTypeSoundGroup1:"all",soundGroup2:[],userLevelSoundGroup2:"everyone",specificUsersSoundGroup2:[],messageTypeSoundGroup2:"all",soundGroup3:[],userLevelSoundGroup3:"everyone",specificUsersSoundGroup3:[],messageTypeSoundGroup3:"all",soundGroup4:[],userLevelSoundGroup4:"everyone",specificUsersSoundGroup4:[],messageTypeSoundGroup4:"all",soundGroup5:[],userLevelSoundGroup5:"everyone",specificUsersSoundGroup5:[],messageTypeSoundGroup5:"all",soundGroup6:[],userLevelSoundGroup6:"everyone",specificUsersSoundGroup6:[],messageTypeSoundGroup6:"all",soundGroup7:[],userLevelSoundGroup7:"everyone",specificUsersSoundGroup7:[],messageTypeSoundGroup7:"all",soundGroup8:[],userLevelSoundGroup8:"everyone",specificUsersSoundGroup8:[],messageTypeSoundGroup8:"all",soundGroup9:[],userLevelSoundGroup9:"everyone",specificUsersSoundGroup9:[],messageTypeSoundGroup9:"all",soundGroup10:[],userLevelSoundGroup10:"everyone",specificUsersSoundGroup10:[],messageTypeSoundGroup10:"all",widgetName:"Chat Bubbles",widgetAuthor:"Zaytri",widgetVersion:"2.12.0",widgetUpdateUrl:"https://github.com/zaytri/stream-elements-widgets/blob/main/DynamicChatBubbles",ignoreFirst:!0},overlay:{isEditorMode:!0,muted:!1}},R={follower:{listener:"follower-latest",event:{name:"An1by"}},communityGiftAnonymous:{listener:"event",event:{type:"communityGiftPurchase",provider:"twitch",channel:"663b10ba6cd449c4162a2230",activityGroup:"41a50a915794e4ae7cf5e600fd3445d4",data:{amount:2,username:"anonymous",displayName:"AnAnonymousGifter",tier:"2000",sender:"Anonymous"},_id:"699868d7df734989ec85d393",activityId:"699868d7df734989ec85d393"}},communityGift:{listener:"event",event:{type:"communityGiftPurchase",provider:"twitch",channel:"663b10ba6cd449c4162a2230",activityGroup:"841592c0bccbf3e1e7de71e1c8f4d9f0",data:{amount:1,username:"rishamon",displayName:"rishamon",tier:"1000",sender:"rishamon"},_id:"699867c7fef23197a6a089f5",activityId:"699867c7fef23197a6a089f5"}},sub:{listener:"subscriber-latest",event:{name:"An1by",amount:1}},selfSub:{listener:"event",event:{type:"subscriber",provider:"twitch",channel:"663b10ba6cd449c4162a2230",data:{amount:1,username:"rishamon",displayName:"rishamon",tier:"1000"},_id:"6998676317aed69e62b8f283",activityId:"6998676317aed69e62b8f283"}},soloSubToSomeone:{listener:"event",event:{type:"subscriber",provider:"twitch",channel:"663b10ba6cd449c4162a2230",data:{amount:1,username:"encry_s",displayName:"encry_s",message:"rishamon gifted a Tier 1 sub to encry_s! This is their first Gift Sub in the channel!",tier:"1000",sender:"rishamon",gifted:!0},_id:"699866e82d9cd9a70854baf2",activityId:"699866e82d9cd9a70854baf2"}},subRenewal:{listener:"event",event:{type:"subscriber",provider:"twitch",channel:"663b10ba6cd449c4162a2230",data:{amount:8,username:"silgestian",displayName:"SilgeStian",tier:"1000"},_id:"69986dfaf25724ff4162bd1a",activityId:"69986dfaf25724ff4162bd1a"}},bits:{listener:"cheer-latest",event:{name:"An1by",amount:30}},raid:{listener:"raid-latest",event:{name:"An1by",amount:50}},donationShortText:{listener:"donation",event:{data:{alert_type:"1",currency:"RUB",billing_system:"CARD",id:5,amount_main:500,amount:500,username:"An1by",message:"Simple message text"}}},donationLongText:{listener:"donation",event:{data:{alert_type:"1",currency:"RUB",billing_system:"CARD",id:5,amount_main:500,amount:500,username:"An1by",message:`A plain gray stone lay on the shore, basking in the sun's warmth. A shove broke its peace—a thoughtless toss sent it flying. The stone splashed into water. Ripples spread, yet none noticed. It sank to the bottom, heavy with loneliness. "Didn't I deserve to stay where I was happy still?" it wondered.`}}},donation:{listener:"donation",event:{data:{alert_type:"1",currency:"RUB",billing_system:"CARD",id:5,amount_main:500,amount:500,username:"An1by",message:""}}}},B={zeroWidthEmotesInRow:{listener:"message",event:{service:"twitch",data:{time:1768317417111,tags:{"badge-info":"subscriber/23",badges:"broadcaster/1,subscriber/0","client-nonce":"f70c4cd8b6034d1f805298246ee1bc35",color:"#DAA520","display-name":"An1by",emotes:"","first-msg":"0",flags:"",id:"5f752ae3-4be9-4f93-82d1-d78575ba07fd",mod:"0","returning-chatter":"0","room-id":"958683839",subscriber:"1","tmi-sent-ts":"1768317416862",turbo:"0","user-id":"958683839","user-type":""},nick:"an1by",userId:"958683839",displayName:"An1by",displayColor:"#DAA520",badges:[{type:"broadcaster",version:"1",url:"https://static-cdn.jtvnw.net/badges/v1/5527c58c-fb7d-422d-b71b-f309dcb85cc1/3",description:"Broadcaster"},{type:"subscriber",version:"0",url:"https://static-cdn.jtvnw.net/badges/v1/5d9f2208-5dd8-11e7-8513-2ff4adfae661/3",description:"Subscriber"}],channel:"an1by",text:"Censored Censored Censored emotes in row",isAction:!1,emotes:[{type:"7tv",name:"Censored",id:"01GC2KBETR0009QMKQRDSHDTVB",gif:!0,animated:!0,urls:{1:"https://cdn.7tv.app/emote/01GC2KBETR0009QMKQRDSHDTVB/1x.webp",2:"https://cdn.7tv.app/emote/01GC2KBETR0009QMKQRDSHDTVB/2x.webp",3:"https://cdn.7tv.app/emote/01GC2KBETR0009QMKQRDSHDTVB/3x.webp",4:"https://cdn.7tv.app/emote/01GC2KBETR0009QMKQRDSHDTVB/4x.webp"},start:0,end:8},{type:"7tv",name:"Censored",id:"01GC2KBETR0009QMKQRDSHDTVB",gif:!0,animated:!0,urls:{1:"https://cdn.7tv.app/emote/01GC2KBETR0009QMKQRDSHDTVB/1x.webp",2:"https://cdn.7tv.app/emote/01GC2KBETR0009QMKQRDSHDTVB/2x.webp",3:"https://cdn.7tv.app/emote/01GC2KBETR0009QMKQRDSHDTVB/3x.webp",4:"https://cdn.7tv.app/emote/01GC2KBETR0009QMKQRDSHDTVB/4x.webp"},start:9,end:17},{type:"7tv",name:"Censored",id:"01GC2KBETR0009QMKQRDSHDTVB",gif:!0,animated:!0,urls:{1:"https://cdn.7tv.app/emote/01GC2KBETR0009QMKQRDSHDTVB/1x.webp",2:"https://cdn.7tv.app/emote/01GC2KBETR0009QMKQRDSHDTVB/2x.webp",3:"https://cdn.7tv.app/emote/01GC2KBETR0009QMKQRDSHDTVB/3x.webp",4:"https://cdn.7tv.app/emote/01GC2KBETR0009QMKQRDSHDTVB/4x.webp"},start:18,end:26}],msgId:"5f752ae3-4be9-4f93-82d1-d78575ba07fd"},renderedText:'<img src="https://cdn.7tv.app/emote/01GC2KBETR0009QMKQRDSHDTVB/1x.webp" srcset="https://cdn.7tv.app/emote/01GC2KBETR0009QMKQRDSHDTVB/1x.webp 1x, https://cdn.7tv.app/emote/01GC2KBETR0009QMKQRDSHDTVB/2x.webp 2x, https://cdn.7tv.app/emote/01GC2KBETR0009QMKQRDSHDTVB/4x.webp 4x" title="Censored" class="emote"><img src="https://cdn.7tv.app/emote/01GC2KBETR0009QMKQRDSHDTVB/1x.webp" srcset="https://cdn.7tv.app/emote/01GC2KBETR0009QMKQRDSHDTVB/1x.webp 1x, https://cdn.7tv.app/emote/01GC2KBETR0009QMKQRDSHDTVB/2x.webp 2x, https://cdn.7tv.app/emote/01GC2KBETR0009QMKQRDSHDTVB/4x.webp 4x" title="Censored" class="emote"><img src="https://cdn.7tv.app/emote/01GC2KBETR0009QMKQRDSHDTVB/1x.webp" srcset="https://cdn.7tv.app/emote/01GC2KBETR0009QMKQRDSHDTVB/1x.webp 1x, https://cdn.7tv.app/emote/01GC2KBETR0009QMKQRDSHDTVB/2x.webp 2x, https://cdn.7tv.app/emote/01GC2KBETR0009QMKQRDSHDTVB/4x.webp 4x" title="Censored" class="emote">emotes in row'}},zeroWidthEmoteInMiddle:{listener:"message",event:{service:"twitch",data:{time:1768317383248,tags:{"badge-info":"subscriber/23",badges:"broadcaster/1,subscriber/0","client-nonce":"847f9c27722340d090eddcb0d0662b5b",color:"#DAA520","display-name":"An1by",emotes:"","first-msg":"0",flags:"",id:"3dea1e1e-89f7-4a5f-b743-13ba0386492f",mod:"0","returning-chatter":"0","room-id":"958683839",subscriber:"1","tmi-sent-ts":"1768317382987",turbo:"0","user-id":"958683839","user-type":""},nick:"an1by",userId:"958683839",displayName:"An1by",displayColor:"#DAA520",badges:[{type:"broadcaster",version:"1",url:"https://static-cdn.jtvnw.net/badges/v1/5527c58c-fb7d-422d-b71b-f309dcb85cc1/3",description:"Broadcaster"},{type:"subscriber",version:"0",url:"https://static-cdn.jtvnw.net/badges/v1/5d9f2208-5dd8-11e7-8513-2ff4adfae661/3",description:"Subscriber"}],channel:"an1by",text:"text and Censored emote",isAction:!1,emotes:[{type:"7tv",name:"Censored",id:"01GC2KBETR0009QMKQRDSHDTVB",gif:!0,animated:!0,urls:{1:"https://cdn.7tv.app/emote/01GC2KBETR0009QMKQRDSHDTVB/1x.webp",2:"https://cdn.7tv.app/emote/01GC2KBETR0009QMKQRDSHDTVB/2x.webp",3:"https://cdn.7tv.app/emote/01GC2KBETR0009QMKQRDSHDTVB/3x.webp",4:"https://cdn.7tv.app/emote/01GC2KBETR0009QMKQRDSHDTVB/4x.webp"},start:9,end:17}],msgId:"3dea1e1e-89f7-4a5f-b743-13ba0386492f"},renderedText:'text and <img src="https://cdn.7tv.app/emote/01GC2KBETR0009QMKQRDSHDTVB/1x.webp" srcset="https://cdn.7tv.app/emote/01GC2KBETR0009QMKQRDSHDTVB/1x.webp 1x, https://cdn.7tv.app/emote/01GC2KBETR0009QMKQRDSHDTVB/2x.webp 2x, https://cdn.7tv.app/emote/01GC2KBETR0009QMKQRDSHDTVB/4x.webp 4x" title="Censored" class="emote">emote'}},zeroWidthEmoteFirst:{listener:"message",event:{service:"twitch",data:{time:1768317236883,tags:{"badge-info":"subscriber/23",badges:"broadcaster/1,subscriber/0","client-nonce":"e9d0621827184c1b940fd700ae599d60",color:"#DAA520","display-name":"An1by",emotes:"","first-msg":"0",flags:"",id:"6f347337-354a-42e5-bab0-935e19d74152",mod:"0","returning-chatter":"0","room-id":"958683839",subscriber:"1","tmi-sent-ts":"1768317236625",turbo:"0","user-id":"958683839","user-type":""},nick:"an1by",userId:"958683839",displayName:"An1by",displayColor:"#DAA520",badges:[{type:"broadcaster",version:"1",url:"https://static-cdn.jtvnw.net/badges/v1/5527c58c-fb7d-422d-b71b-f309dcb85cc1/3",description:"Broadcaster"},{type:"subscriber",version:"0",url:"https://static-cdn.jtvnw.net/badges/v1/5d9f2208-5dd8-11e7-8513-2ff4adfae661/3",description:"Subscriber"}],channel:"an1by",text:"Censored <- zeroWidth emote on the first place",isAction:!1,emotes:[{type:"7tv",name:"Censored",id:"01GC2KBETR0009QMKQRDSHDTVB",gif:!0,animated:!0,urls:{1:"https://cdn.7tv.app/emote/01GC2KBETR0009QMKQRDSHDTVB/1x.webp",2:"https://cdn.7tv.app/emote/01GC2KBETR0009QMKQRDSHDTVB/2x.webp",3:"https://cdn.7tv.app/emote/01GC2KBETR0009QMKQRDSHDTVB/3x.webp",4:"https://cdn.7tv.app/emote/01GC2KBETR0009QMKQRDSHDTVB/4x.webp"},start:0,end:8}],msgId:"6f347337-354a-42e5-bab0-935e19d74152"},renderedText:'<img src="https://cdn.7tv.app/emote/01GC2KBETR0009QMKQRDSHDTVB/1x.webp" srcset="https://cdn.7tv.app/emote/01GC2KBETR0009QMKQRDSHDTVB/1x.webp 1x, https://cdn.7tv.app/emote/01GC2KBETR0009QMKQRDSHDTVB/2x.webp 2x, https://cdn.7tv.app/emote/01GC2KBETR0009QMKQRDSHDTVB/4x.webp 4x" title="Censored" class="emote">&lt;- zeroWidth emote on the first place'}},veryShort:{listener:"message",event:{service:"twitch",data:{time:1749743750546,tags:{"badge-info":"",badges:"","client-nonce":"a3fe71a5771d0c31466dd333c963231e",color:"","display-name":"An1by",emotes:"","first-msg":"0",flags:"",id:"3d0d1a43-45e5-4652-be59-0b31dfeba796",mod:"0","returning-chatter":"0","room-id":"958683839",subscriber:"0","tmi-sent-ts":"1749743749437",turbo:"0","user-id":"958683839","user-type":""},nick:"IHaveVeryBigNickname",userId:"958683839",displayName:"IHaveVeryBigNickname",displayColor:"",badges:[],channel:"IHaveVeryBigNickname",text:"A!",isAction:!1,emotes:[],msgId:"3d0d1a43-45e5-4652-be59-0b31dfeba796"},renderedText:"A!"}},viewer:{listener:"message",event:{service:"twitch",data:{time:1749743750546,tags:{"badge-info":"",badges:"","client-nonce":"a3fe71a5771d0c31466dd333c963231e",color:"","display-name":"An1by",emotes:"","first-msg":"0",flags:"",id:"3d0d1a43-45e5-4652-be59-0b31dfeba796",mod:"0","returning-chatter":"0","room-id":"958683839",subscriber:"0","tmi-sent-ts":"1749743749437",turbo:"0","user-id":"958683839","user-type":""},nick:"SimpleViewer",userId:"958683839",displayName:"SimpleViewer",displayColor:"",badges:[],channel:"SimpleViewer",text:"I finally finished it...",isAction:!1,emotes:[],msgId:"3d0d1a43-45e5-4652-be59-0b31dfeba796"},renderedText:"I finally finished it..."}},vip:{listener:"message",event:{service:"twitch",data:{time:1749743844261,tags:{"badge-info":"",badges:"vip/1","client-nonce":"fd72ba163a9cc1a6486b2eddb0f5d893",color:"","display-name":"An1by",emotes:"","first-msg":"0",flags:"",id:"51cac44b-9908-49d2-b424-489276e1e521",mod:"0","returning-chatter":"0","room-id":"958683839",subscriber:"0","tmi-sent-ts":"1749743843170",turbo:"0","user-id":"958683839","user-type":"",vip:"1"},nick:"VipPersona",userId:"958683839",displayName:"VipPersona",displayColor:"",badges:[{type:"vip",version:"1",url:"https://static-cdn.jtvnw.net/badges/v1/b817aba4-fad8-49e2-b88a-7cc744dfa6ec/3",description:"VIP"}],channel:"VipPersona",text:"I am a VIP persona!",isAction:!1,emotes:[],msgId:"51cac44b-9908-49d2-b424-489276e1e521"},renderedText:"I am a VIP persona!"}},vipLong:{listener:"message",event:{service:"twitch",data:{time:1749743844261,tags:{"badge-info":"",badges:"vip/1","client-nonce":"fd72ba163a9cc1a6486b2eddb0f5d893",color:"","display-name":"An1by",emotes:"","first-msg":"0",flags:"",id:"51cac44b-9908-49d2-b424-489276e1e521",mod:"0","returning-chatter":"0","room-id":"958683839",subscriber:"0","tmi-sent-ts":"1749743843170",turbo:"0","user-id":"958683839","user-type":"",vip:"1"},nick:"VipPersona",userId:"958683839",displayName:"VipPersona",displayColor:"",badges:[{type:"vip",version:"1",url:"https://static-cdn.jtvnw.net/badges/v1/b817aba4-fad8-49e2-b88a-7cc744dfa6ec/3",description:"VIP"}],channel:"VipPersona",text:"I am a VIP persona! Are you see this?",isAction:!1,emotes:[],msgId:"51cac44b-9908-49d2-b424-489276e1e521"},renderedText:"I am a VIP persona! Are you see this?"}},artist:{listener:"message",event:{service:"twitch",data:{time:1749743916482,tags:{"badge-info":"",badges:"artist-badge/1","client-nonce":"54128d734d44e28ffc32e1ce236993f5",color:"","display-name":"An1by",emotes:"","first-msg":"0",flags:"",id:"8ee7e71a-3608-486a-bd82-a82b65982ca7",mod:"0","returning-chatter":"0","room-id":"958683839",subscriber:"0","tmi-sent-ts":"1749743915371",turbo:"0","user-id":"958683839","user-type":""},nick:"StarArtist",userId:"958683839",displayName:"StarArtist",displayColor:"",badges:[{type:"artist-badge",version:"1",url:"https://static-cdn.jtvnw.net/badges/v1/4300a897-03dc-4e83-8c0e-c332fee7057f/3",description:"Artist"}],channel:"StarArtist",text:"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.",isAction:!1,emotes:[],msgId:"8ee7e71a-3608-486a-bd82-a82b65982ca7"},renderedText:"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."}},subscriber:{listener:"message",event:{data:{tags:{badges:"subscriber/1",color:"#ff69b4",vip:"0",subscriber:"1","user-id":"100135110","user-type":"subscriber"},userId:"100135110",displayName:"YourSub",displayColor:"#ff69b4",badges:[{type:"partner",version:"1",url:"https://static-cdn.jtvnw.net/badges/v1/d12a2e27-16f6-41d0-ab77-b780518f00a3/3",description:"Verified"}],text:"This is a subscriber's test message. I'm just a subscriber, srsly.",emotes:[],msgId:"43285909-412c-4eee-b80d-89f1482ba53142"},renderedText:"This is a subscriber's test message. I'm just a subscriber, srsly."}},founder:{listener:"message",event:{service:"twitch",data:{time:1749743750546,tags:{"badge-info":"",badges:"founder/1,subscriber/1","client-nonce":"a3fe71a5771d0c31466dd333c963231e",color:"","display-name":"sub__founder",emotes:"","first-msg":"0",flags:"",id:"3d0d1a43-45e5-4652-be59-0b31dfeba796",mod:"0","returning-chatter":"0","room-id":"958683839",subscriber:"1","tmi-sent-ts":"1749743749437",turbo:"0","user-id":"958683839","user-type":""},nick:"sub__founder",userId:"958683839",displayName:"sub__founder",displayColor:"",badges:[{type:"founder"}],channel:"an1by",text:"I finally finished it...",isAction:!1,emotes:[],msgId:"3d0d1a43-45e5-4652-be59-0b31dfeba796"},renderedText:"I finally finished it..."}},moderator:{listener:"message",event:{service:"twitch",data:{time:1749743997223,tags:{"badge-info":"",badges:"moderator/1",color:"","display-name":"An1by",emotes:"","first-msg":"0",flags:"",id:"3e7ba532-f181-4bcc-90f1-a3c48ca3c820",mod:"1","returning-chatter":"0","room-id":"958683839",subscriber:"0","tmi-sent-ts":"1749743996136",turbo:"0","user-id":"958683839","user-type":"mod"},nick:"mediator",userId:"958683839",displayName:"mediator",displayColor:"",badges:[{type:"moderator",version:"1",url:"https://static-cdn.jtvnw.net/badges/v1/3267646d-33f0-4b17-b3df-f923a41db1d0/3",description:"Moderator"}],channel:"mediator",text:"Did someone say... MODERATOR!?",isAction:!1,emotes:[],msgId:"3e7ba532-f181-4bcc-90f1-a3c48ca3c820"},renderedText:"Did someone say... MODERATOR!?"}},moderatorLong:{listener:"message",event:{service:"twitch",data:{time:1749743997223,tags:{"badge-info":"",badges:"moderator/1",color:"","display-name":"An1by",emotes:"","first-msg":"0",flags:"",id:"3e7ba532-f181-4bcc-90f1-a3c48ca3c820",mod:"1","returning-chatter":"0","room-id":"958683839",subscriber:"0","tmi-sent-ts":"1749743996136",turbo:"0","user-id":"958683839","user-type":"mod"},nick:"mediator",userId:"958683839",displayName:"mediator",displayColor:"",badges:[{type:"moderator",version:"1",url:"https://static-cdn.jtvnw.net/badges/v1/3267646d-33f0-4b17-b3df-f923a41db1d0/3",description:"Moderator"}],channel:"mediator",text:"Did someone say... MODERATOR!? Yes, I am moderator!",isAction:!1,emotes:[],msgId:"3e7ba532-f181-4bcc-90f1-a3c48ca3c820"},renderedText:"Did someone say... MODERATOR!? Yes, I am moderator!"}},broadcaster:{listener:"message",event:{service:"twitch",data:{time:1749744800809,tags:{"badge-info":"subscriber/16",badges:"broadcaster/1,subscriber/0,minecraft-15th-anniversary-celebration/1","client-nonce":"6989104421ee14c0a8c216ef1c6bb5ed",color:"#DAA520","display-name":"An1by",emotes:"","first-msg":"0",flags:"",id:"35a9bea7-076e-4d17-8cb7-7e65c8111b3d",mod:"0","returning-chatter":"0","room-id":"958683839",subscriber:"1","tmi-sent-ts":"1749744799706",turbo:"0","user-id":"958683839","user-type":""},nick:"an1by",userId:"958683839",displayName:"An1by",displayColor:"#DAA520",badges:[{type:"broadcaster",version:"1",url:"https://static-cdn.jtvnw.net/badges/v1/5527c58c-fb7d-422d-b71b-f309dcb85cc1/3",description:"Broadcaster"},{type:"subscriber",version:"0",url:"https://static-cdn.jtvnw.net/badges/v1/5d9f2208-5dd8-11e7-8513-2ff4adfae661/3",description:"Subscriber"},{type:"minecraft-15th-anniversary-celebration",version:"1",url:"https://static-cdn.jtvnw.net/badges/v1/178077b2-8b86-4f8d-927c-66ed6c1b025f/3",description:"Minecraft 15th Anniversary Celebration"}],channel:"an1by",text:"I made this chat Besplatno",isAction:!1,emotes:[{type:"7tv",name:"Besplatno",id:"01FE70VRT00009TR6M9N941A28",gif:!0,animated:!0,urls:{1:"https://cdn.7tv.app/emote/01FE70VRT00009TR6M9N941A28/1x.webp",2:"https://cdn.7tv.app/emote/01FE70VRT00009TR6M9N941A28/2x.webp",3:"https://cdn.7tv.app/emote/01FE70VRT00009TR6M9N941A28/3x.webp",4:"https://cdn.7tv.app/emote/01FE70VRT00009TR6M9N941A28/4x.webp"},start:17,end:26}],msgId:"35a9bea7-076e-4d17-8cb7-7e65c8111b3d"},renderedText:'I made this chat <img src="https://cdn.7tv.app/emote/01FE70VRT00009TR6M9N941A28/1x.webp" srcset="https://cdn.7tv.app/emote/01FE70VRT00009TR6M9N941A28/1x.webp 1x, https://cdn.7tv.app/emote/01FE70VRT00009TR6M9N941A28/2x.webp 2x, https://cdn.7tv.app/emote/01FE70VRT00009TR6M9N941A28/4x.webp 4x" title="Besplatno" class="emote">'}},broadcasterShort:{listener:"message",event:{service:"twitch",data:{time:1749744800809,tags:{"badge-info":"subscriber/16",badges:"broadcaster/1,subscriber/0,minecraft-15th-anniversary-celebration/1","client-nonce":"6989104421ee14c0a8c216ef1c6bb5ed",color:"#DAA520","display-name":"An1by",emotes:"","first-msg":"0",flags:"",id:"35a9bea7-076e-4d17-8cb7-7e65c8111b3d",mod:"0","returning-chatter":"0","room-id":"958683839",subscriber:"1","tmi-sent-ts":"1749744799706",turbo:"0","user-id":"958683839","user-type":""},nick:"an1by",userId:"958683839",displayName:"An1by",displayColor:"#DAA520",badges:[{type:"broadcaster",version:"1",url:"https://static-cdn.jtvnw.net/badges/v1/5527c58c-fb7d-422d-b71b-f309dcb85cc1/3",description:"Broadcaster"},{type:"subscriber",version:"0",url:"https://static-cdn.jtvnw.net/badges/v1/5d9f2208-5dd8-11e7-8513-2ff4adfae661/3",description:"Subscriber"},{type:"minecraft-15th-anniversary-celebration",version:"1",url:"https://static-cdn.jtvnw.net/badges/v1/178077b2-8b86-4f8d-927c-66ed6c1b025f/3",description:"Minecraft 15th Anniversary Celebration"}],channel:"an1by",text:"okak",isAction:!1,emotes:[],msgId:"35a9bea7-076e-4d17-8cb7-7e65c8111b3d"},renderedText:'I made this chat <img src="https://cdn.7tv.app/emote/01FE70VRT00009TR6M9N941A28/1x.webp" srcset="https://cdn.7tv.app/emote/01FE70VRT00009TR6M9N941A28/1x.webp 1x, https://cdn.7tv.app/emote/01FE70VRT00009TR6M9N941A28/2x.webp 2x, https://cdn.7tv.app/emote/01FE70VRT00009TR6M9N941A28/4x.webp 4x" title="Besplatno" class="emote">'}},emoteSolo:{listener:"message",event:{service:"twitch",data:{time:1749744097330,tags:{"badge-info":"",badges:"",color:"","display-name":"An1by",emotes:"","first-msg":"0",flags:"",id:"9ab645b9-7c27-4c6f-99fd-f63727ca3700",mod:"0","returning-chatter":"0","room-id":"958683839",subscriber:"0","tmi-sent-ts":"1749744096217",turbo:"0","user-id":"958683839","user-type":""},nick:"tr0l1",userId:"958683839",displayName:"tr0l1",displayColor:"",badges:[],channel:"tr0l1",text:"🤤😮💀👈👉",isAction:!1,emotes:[{type:"emoji",name:"1f62e",id:"1f62e",gif:!1,urls:{1:"https://twemoji.maxcdn.com/36x36/1f62e.png"}},{type:"emoji",name:"1f480",id:"1f480",gif:!1,urls:{1:"https://twemoji.maxcdn.com/36x36/1f480.png"}},{type:"emoji",name:"1f448",id:"1f448",gif:!1,urls:{1:"https://twemoji.maxcdn.com/36x36/1f448.png"}},{type:"emoji",name:"1f449",id:"1f449",gif:!1,urls:{1:"https://twemoji.maxcdn.com/36x36/1f449.png"}}],msgId:"9ab645b9-7c27-4c6f-99fd-f63727ca3700"},renderedText:"🤤😮💀👈👉"}},emoteOne:{listener:"message",event:{service:"twitch",data:{time:1749744131183,tags:{"badge-info":"",badges:"",color:"","display-name":"An1by",emotes:"41:20-27/245:29-43/28087:45-51/58765:53-63/555555584:65-66/64138:10-18","first-msg":"0",flags:"",id:"beb957ea-dfbd-4184-82a3-458121f44867",mod:"0","returning-chatter":"0","room-id":"958683839",subscriber:"0","tmi-sent-ts":"1749744130018",turbo:"0","user-id":"958683839","user-type":""},nick:"tr0l1",userId:"958683839",displayName:"tr0l1",displayColor:"",badges:[],channel:"tr0l1",text:"SeemsGood",isAction:!1,emotes:[{type:"twitch",name:"SeemsGood",id:"64138",gif:!1,animated:!1,urls:{1:"https://static-cdn.jtvnw.net/emoticons/v2/64138/static/dark/1.0",2:"https://static-cdn.jtvnw.net/emoticons/v2/64138/static/dark/2.0",4:"https://static-cdn.jtvnw.net/emoticons/v2/64138/static/dark/3.0"},start:0,end:9}],msgId:"beb957ea-dfbd-4184-82a3-458121f44867"},renderedText:'<img src="https://static-cdn.jtvnw.net/emoticons/v2/64138/static/dark/1.0" srcset="https://static-cdn.jtvnw.net/emoticons/v2/64138/static/dark/1.0 1x, https://static-cdn.jtvnw.net/emoticons/v2/64138/static/dark/2.0 2x, https://static-cdn.jtvnw.net/emoticons/v2/64138/static/dark/3.0 4x" title="SeemsGood" class="emote">'}},emoteText:{listener:"message",event:{service:"twitch",data:{time:1749744131183,tags:{"badge-info":"",badges:"",color:"","display-name":"7TVUser",emotes:"41:20-27/245:29-43/28087:45-51/58765:53-63/555555584:65-66/64138:10-18","first-msg":"0",flags:"",id:"beb957ea-dfbd-4184-82a3-458121f44867",mod:"0","returning-chatter":"0","room-id":"958683839",subscriber:"0","tmi-sent-ts":"1749744130018",turbo:"0","user-id":"958683839","user-type":""},nick:"7TVUser",userId:"958683839",displayName:"7TVUser",displayColor:"",badges:[],channel:"7TVUser",text:"Not emote SeemsGood Kreygasm ResidentSleeper WutFace NotLikeThis <3",isAction:!1,emotes:[{type:"twitch",name:"SeemsGood",id:"64138",gif:!1,animated:!1,urls:{1:"https://static-cdn.jtvnw.net/emoticons/v2/64138/static/dark/1.0",2:"https://static-cdn.jtvnw.net/emoticons/v2/64138/static/dark/2.0",4:"https://static-cdn.jtvnw.net/emoticons/v2/64138/static/dark/3.0"},start:10,end:19},{type:"twitch",name:"Kreygasm",id:"41",gif:!1,animated:!1,urls:{1:"https://static-cdn.jtvnw.net/emoticons/v2/41/static/dark/1.0",2:"https://static-cdn.jtvnw.net/emoticons/v2/41/static/dark/2.0",4:"https://static-cdn.jtvnw.net/emoticons/v2/41/static/dark/3.0"},start:20,end:28},{type:"twitch",name:"ResidentSleeper",id:"245",gif:!1,animated:!1,urls:{1:"https://static-cdn.jtvnw.net/emoticons/v2/245/static/dark/1.0",2:"https://static-cdn.jtvnw.net/emoticons/v2/245/static/dark/2.0",4:"https://static-cdn.jtvnw.net/emoticons/v2/245/static/dark/3.0"},start:29,end:44},{type:"twitch",name:"WutFace",id:"28087",gif:!1,animated:!1,urls:{1:"https://static-cdn.jtvnw.net/emoticons/v2/28087/static/dark/1.0",2:"https://static-cdn.jtvnw.net/emoticons/v2/28087/static/dark/2.0",4:"https://static-cdn.jtvnw.net/emoticons/v2/28087/static/dark/3.0"},start:45,end:52},{type:"twitch",name:"NotLikeThis",id:"58765",gif:!1,animated:!1,urls:{1:"https://static-cdn.jtvnw.net/emoticons/v2/58765/static/dark/1.0",2:"https://static-cdn.jtvnw.net/emoticons/v2/58765/static/dark/2.0",4:"https://static-cdn.jtvnw.net/emoticons/v2/58765/static/dark/3.0"},start:53,end:64},{type:"twitch",name:"<3",id:"9",gif:!1,animated:!1,urls:{1:"https://static-cdn.jtvnw.net/emoticons/v2/9/static/dark/1.0",2:"https://static-cdn.jtvnw.net/emoticons/v2/9/static/dark/2.0",4:"https://static-cdn.jtvnw.net/emoticons/v2/9/static/dark/3.0"},start:65,end:67}],msgId:"beb957ea-dfbd-4184-82a3-458121f44867"},renderedText:'Not emote <img src="https://static-cdn.jtvnw.net/emoticons/v2/64138/static/dark/1.0" srcset="https://static-cdn.jtvnw.net/emoticons/v2/64138/static/dark/1.0 1x, https://static-cdn.jtvnw.net/emoticons/v2/64138/static/dark/2.0 2x, https://static-cdn.jtvnw.net/emoticons/v2/64138/static/dark/3.0 4x" title="SeemsGood" class="emote"><img src="https://static-cdn.jtvnw.net/emoticons/v2/41/static/dark/1.0" srcset="https://static-cdn.jtvnw.net/emoticons/v2/41/static/dark/1.0 1x, https://static-cdn.jtvnw.net/emoticons/v2/41/static/dark/2.0 2x, https://static-cdn.jtvnw.net/emoticons/v2/41/static/dark/3.0 4x" title="Kreygasm" class="emote"><img src="https://static-cdn.jtvnw.net/emoticons/v2/245/static/dark/1.0" srcset="https://static-cdn.jtvnw.net/emoticons/v2/245/static/dark/1.0 1x, https://static-cdn.jtvnw.net/emoticons/v2/245/static/dark/2.0 2x, https://static-cdn.jtvnw.net/emoticons/v2/245/static/dark/3.0 4x" title="ResidentSleeper" class="emote"><img src="https://static-cdn.jtvnw.net/emoticons/v2/28087/static/dark/1.0" srcset="https://static-cdn.jtvnw.net/emoticons/v2/28087/static/dark/1.0 1x, https://static-cdn.jtvnw.net/emoticons/v2/28087/static/dark/2.0 2x, https://static-cdn.jtvnw.net/emoticons/v2/28087/static/dark/3.0 4x" title="WutFace" class="emote"><img src="https://static-cdn.jtvnw.net/emoticons/v2/58765/static/dark/1.0" srcset="https://static-cdn.jtvnw.net/emoticons/v2/58765/static/dark/1.0 1x, https://static-cdn.jtvnw.net/emoticons/v2/58765/static/dark/2.0 2x, https://static-cdn.jtvnw.net/emoticons/v2/58765/static/dark/3.0 4x" title="NotLikeThis" class="emote"><img src="https://static-cdn.jtvnw.net/emoticons/v2/9/static/dark/1.0" srcset="https://static-cdn.jtvnw.net/emoticons/v2/9/static/dark/1.0 1x, https://static-cdn.jtvnw.net/emoticons/v2/9/static/dark/2.0 2x, https://static-cdn.jtvnw.net/emoticons/v2/9/static/dark/3.0 4x" title="<3" class="emote">'}},zeroWidthEmotes:{listener:"message",event:{service:"twitch",data:{time:1759956619137,tags:{"badge-info":"subscriber/20",badges:"","client-nonce":"f7b17aea5c07c5c08fd920278fb52b5a",color:"#DAA520","display-name":"7TVUser",emotes:"","first-msg":"0",flags:"",id:"b44d1c53-1de9-454c-a269-bd8849cbcd2d",mod:"0","returning-chatter":"0","room-id":"958683839",subscriber:"1","tmi-sent-ts":"1759956618295",turbo:"0","user-id":"958683839","user-type":""},nick:"7TVUser",userId:"958683839",displayName:"7TVUser",displayColor:"#DAA520",badges:[{type:"minecraft-15th-anniversary-celebration",version:"1",url:"https://static-cdn.jtvnw.net/badges/v1/178077b2-8b86-4f8d-927c-66ed6c1b025f/3",description:"Minecraft 15th Anniversary Celebration"}],channel:"7TVUser",text:"Zero-width emotes AYAYA PETPET right there!!",isAction:!1,emotes:[{type:"7tv",name:"AYAYA",id:"01GB32XE6R00018VJGJ4A9BNCV",gif:!1,animated:!1,urls:{1:"https://cdn.7tv.app/emote/01GB32XE6R00018VJGJ4A9BNCV/1x.webp",2:"https://cdn.7tv.app/emote/01GB32XE6R00018VJGJ4A9BNCV/2x.webp",3:"https://cdn.7tv.app/emote/01GB32XE6R00018VJGJ4A9BNCV/3x.webp",4:"https://cdn.7tv.app/emote/01GB32XE6R00018VJGJ4A9BNCV/4x.webp"},start:18,end:23},{type:"7tv",name:"PETPET",id:"01FE3XY508000AA32JP519W2EW",gif:!0,animated:!0,urls:{1:"https://cdn.7tv.app/emote/01FE3XY508000AA32JP519W2EW/1x.webp",2:"https://cdn.7tv.app/emote/01FE3XY508000AA32JP519W2EW/2x.webp",3:"https://cdn.7tv.app/emote/01FE3XY508000AA32JP519W2EW/3x.webp",4:"https://cdn.7tv.app/emote/01FE3XY508000AA32JP519W2EW/4x.webp"},start:24,end:30}],msgId:"b44d1c53-1de9-454c-a269-bd8849cbcd2d"},renderedText:'Zero-width emotes <img src="https://cdn.7tv.app/emote/01GB32XE6R00018VJGJ4A9BNCV/1x.webp" srcset="https://cdn.7tv.app/emote/01GB32XE6R00018VJGJ4A9BNCV/1x.webp 1x, https://cdn.7tv.app/emote/01GB32XE6R00018VJGJ4A9BNCV/2x.webp 2x, https://cdn.7tv.app/emote/01GB32XE6R00018VJGJ4A9BNCV/4x.webp 4x" title="AYAYA" class="emote"><img src="https://cdn.7tv.app/emote/01FE3XY508000AA32JP519W2EW/1x.webp" srcset="https://cdn.7tv.app/emote/01FE3XY508000AA32JP519W2EW/1x.webp 1x, https://cdn.7tv.app/emote/01FE3XY508000AA32JP519W2EW/2x.webp 2x, https://cdn.7tv.app/emote/01FE3XY508000AA32JP519W2EW/4x.webp 4x" title="PETPET" class="emote">right there!!'}},sevenTv:{listener:"message",event:{service:"twitch",data:{time:1749744413746,tags:{"badge-info":"",badges:"","client-nonce":"2bd56e3c058b5a4fc4e46c3e369891e6",color:"","display-name":"An1by",emotes:"","first-msg":"0",flags:"",id:"4c71789c-8c02-4e25-a71f-3a7d0ef19a33",mod:"0","returning-chatter":"0","room-id":"958683839",subscriber:"0","tmi-sent-ts":"1749744412641",turbo:"0","user-id":"958683839","user-type":""},nick:"tr0l1",userId:"958683839",displayName:"tr0l1",displayColor:"",badges:[],channel:"tr0l1",text:"ало ало Инса Каори Hello everyone! Hello everyone! Hello everyone!Hello everyone! Hello everyone! Hello everyone! Hello everyone! Hello everyone!",isAction:!1,emotes:[{type:"7tv",name:"ало",id:"01F6PRA3N80003BH8AEY9DWKDQ",gif:!0,animated:!0,urls:{1:"https://cdn.7tv.app/emote/01F6PRA3N80003BH8AEY9DWKDQ/1x.webp",2:"https://cdn.7tv.app/emote/01F6PRA3N80003BH8AEY9DWKDQ/2x.webp",3:"https://cdn.7tv.app/emote/01F6PRA3N80003BH8AEY9DWKDQ/3x.webp",4:"https://cdn.7tv.app/emote/01F6PRA3N80003BH8AEY9DWKDQ/4x.webp"},start:0,end:3},{type:"7tv",name:"ало",id:"01F6PRA3N80003BH8AEY9DWKDQ",gif:!0,animated:!0,urls:{1:"https://cdn.7tv.app/emote/01F6PRA3N80003BH8AEY9DWKDQ/1x.webp",2:"https://cdn.7tv.app/emote/01F6PRA3N80003BH8AEY9DWKDQ/2x.webp",3:"https://cdn.7tv.app/emote/01F6PRA3N80003BH8AEY9DWKDQ/3x.webp",4:"https://cdn.7tv.app/emote/01F6PRA3N80003BH8AEY9DWKDQ/4x.webp"},start:4,end:7},{type:"7tv",name:"Инса",id:"01JRE4VRRXWF0922HA3F9BZG6M",gif:!1,animated:!1,urls:{1:"https://cdn.7tv.app/emote/01JRE4VRRXWF0922HA3F9BZG6M/1x.webp",2:"https://cdn.7tv.app/emote/01JRE4VRRXWF0922HA3F9BZG6M/2x.webp",3:"https://cdn.7tv.app/emote/01JRE4VRRXWF0922HA3F9BZG6M/3x.webp",4:"https://cdn.7tv.app/emote/01JRE4VRRXWF0922HA3F9BZG6M/4x.webp"},start:8,end:12},{type:"7tv",name:"Каори",id:"01GY6TCEFG000BGHWA5T6NGBRA",gif:!1,animated:!1,urls:{1:"https://cdn.7tv.app/emote/01GY6TCEFG000BGHWA5T6NGBRA/1x.webp",2:"https://cdn.7tv.app/emote/01GY6TCEFG000BGHWA5T6NGBRA/2x.webp",3:"https://cdn.7tv.app/emote/01GY6TCEFG000BGHWA5T6NGBRA/3x.webp",4:"https://cdn.7tv.app/emote/01GY6TCEFG000BGHWA5T6NGBRA/4x.webp"},start:13,end:18}],msgId:"4c71789c-8c02-4e25-a71f-3a7d0ef19a33"},renderedText:'<img src="https://cdn.7tv.app/emote/01F6PRA3N80003BH8AEY9DWKDQ/1x.webp" srcset="https://cdn.7tv.app/emote/01F6PRA3N80003BH8AEY9DWKDQ/1x.webp 1x, https://cdn.7tv.app/emote/01F6PRA3N80003BH8AEY9DWKDQ/2x.webp 2x, https://cdn.7tv.app/emote/01F6PRA3N80003BH8AEY9DWKDQ/4x.webp 4x" title="ало" class="emote"><img src="https://cdn.7tv.app/emote/01F6PRA3N80003BH8AEY9DWKDQ/1x.webp" srcset="https://cdn.7tv.app/emote/01F6PRA3N80003BH8AEY9DWKDQ/1x.webp 1x, https://cdn.7tv.app/emote/01F6PRA3N80003BH8AEY9DWKDQ/2x.webp 2x, https://cdn.7tv.app/emote/01F6PRA3N80003BH8AEY9DWKDQ/4x.webp 4x" title="ало" class="emote"><img src="https://cdn.7tv.app/emote/01JRE4VRRXWF0922HA3F9BZG6M/1x.webp" srcset="https://cdn.7tv.app/emote/01JRE4VRRXWF0922HA3F9BZG6M/1x.webp 1x, https://cdn.7tv.app/emote/01JRE4VRRXWF0922HA3F9BZG6M/2x.webp 2x, https://cdn.7tv.app/emote/01JRE4VRRXWF0922HA3F9BZG6M/4x.webp 4x" title="Инса" class="emote"><img src="https://cdn.7tv.app/emote/01GY6TCEFG000BGHWA5T6NGBRA/1x.webp" srcset="https://cdn.7tv.app/emote/01GY6TCEFG000BGHWA5T6NGBRA/1x.webp 1x, https://cdn.7tv.app/emote/01GY6TCEFG000BGHWA5T6NGBRA/2x.webp 2x, https://cdn.7tv.app/emote/01GY6TCEFG000BGHWA5T6NGBRA/4x.webp 4x" title="Каори" class="emote">Hello everyone!'}},sevenTvSolo:{listener:"message",event:{service:"twitch",data:{time:1768321684253,tags:{"badge-info":"subscriber/23",badges:"broadcaster/1,subscriber/0","client-nonce":"51cc77206bf346eda20774b75aac675d",color:"#DAA520","display-name":"An1by",emotes:"","first-msg":"0",flags:"",id:"e30a02bf-a3c7-40f2-9325-cdc2690d3631",mod:"0","returning-chatter":"0","room-id":"958683839",subscriber:"1","tmi-sent-ts":"1768321684074",turbo:"0","user-id":"958683839","user-type":""},nick:"an1by",userId:"958683839",displayName:"An1by",displayColor:"#DAA520",badges:[{type:"broadcaster",version:"1",url:"https://static-cdn.jtvnw.net/badges/v1/5527c58c-fb7d-422d-b71b-f309dcb85cc1/3",description:"Broadcaster"},{type:"subscriber",version:"0",url:"https://static-cdn.jtvnw.net/badges/v1/5d9f2208-5dd8-11e7-8513-2ff4adfae661/3",description:"Subscriber"}],channel:"an1by",text:"DurkaDance ͏",isAction:!1,emotes:[{type:"7tv",name:"DurkaDance",id:"01JQBC7K2FX7HE4SFZFJEN6CWY",gif:!0,animated:!0,urls:{1:"https://cdn.7tv.app/emote/01JQBC7K2FX7HE4SFZFJEN6CWY/1x.webp",2:"https://cdn.7tv.app/emote/01JQBC7K2FX7HE4SFZFJEN6CWY/2x.webp",3:"https://cdn.7tv.app/emote/01JQBC7K2FX7HE4SFZFJEN6CWY/3x.webp",4:"https://cdn.7tv.app/emote/01JQBC7K2FX7HE4SFZFJEN6CWY/4x.webp"},start:0,end:10}],msgId:"e30a02bf-a3c7-40f2-9325-cdc2690d3631"},renderedText:'<img src="https://cdn.7tv.app/emote/01JQBC7K2FX7HE4SFZFJEN6CWY/1x.webp" srcset="https://cdn.7tv.app/emote/01JQBC7K2FX7HE4SFZFJEN6CWY/1x.webp 1x, https://cdn.7tv.app/emote/01JQBC7K2FX7HE4SFZFJEN6CWY/2x.webp 2x, https://cdn.7tv.app/emote/01JQBC7K2FX7HE4SFZFJEN6CWY/4x.webp 4x" title="DurkaDance" class="emote"> ͏'}}},G="onEventReceived";function H(e){if(typeof window>"u")return;const a=B[e];a&&window.dispatchEvent(new CustomEvent(G,{detail:a}))}function Z(e){if(typeof window>"u")return;const a=R[e];a&&window.dispatchEvent(new CustomEvent(G,{detail:a}))}function j(e){if(!e.startsWith("testMessage"))return null;const a=e.replace("testMessage","");return a.charAt(0).toLowerCase()+a.slice(1)}function I(e){if(!e.startsWith("testAlert"))return null;const a=e.replace("testAlert","");return a.charAt(0).toLowerCase()+a.slice(1)}function D(e){const t=(e["badge-info"]??"").match(/^subscriber\/(\d+)$/);if(!t)return null;const r=parseInt(t[1],10);return Number.isNaN(r)?null:r}function E(e){const a=D(e);return a!==null&&a!==0?!0:(e.badges??"").includes("broadcaster/1")}const C=E;function k(e){return(e.badges??"").includes("broadcaster/1")}function W(e){return e["first-msg"]==="1"}function S(e){return e.turbo==="1"}function K(e){const a=e.badges??"";return e.vip==="1"||a.includes("vip/1")}function F(e){const a=e.badges??"",t=e["user-type"]??"";return e.mod==="1"||a.includes("moderator/1")||t==="mod"}function Q(e){return(e.badges??"").includes("artist-badge/1")}function _(e,a){const t=e.find(r=>r.type===a);return t==null?void 0:t.url}function P(e){const a=["default"];return k(e)&&a.push("broadcaster"),F(e)&&a.push("moderator"),K(e)&&a.push("vip"),Q(e)&&a.push("artist"),C(e)&&a.push("subscriber"),S(e)&&a.push("turbo"),a}i.classifyEvent=w,i.determineUserRoles=P,i.getBadgeUrlByType=_,i.getCacheKey=T,i.getTestAlertKey=I,i.getTestMessageKey=j,i.isArtist=Q,i.isBroadcaster=k,i.isFirstMessageChatter=W,i.isModerator=F,i.isSubscriber=C,i.isSubscriptionActive=E,i.isTurbo=S,i.isVip=K,i.normalizeIncomingEvent=N,i.parseSubscriberMonth=D,i.parseTier=g,i.testAlert=Z,i.testAlerts=R,i.testMessage=H,i.testMessages=B,i.testOnWidgetLoadDetail=M,Object.defineProperty(i,Symbol.toStringTag,{value:"Module"})})(this.WmakeStreamelementsEvents=this.WmakeStreamelementsEvents||{});
2
+ //# sourceMappingURL=index.iife.js.map