@allior/wmake-streamelements-events 2.0.0 → 2.0.2

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.
@@ -1,11 +1,11 @@
1
- import { AlertQueue as j, TwitchUserMessageData as k, UserRole as z, classifyEvent as I, getCacheKey as Q, getTestAlertKey as q, getTestMessageKey as H, normalizeIncomingEvent as J, parseTier as V, testAlert as X, testAlerts as Y, testMessage as Z, testMessages as _, testOnWidgetLoadDetail as $ } from "../root/index.js";
2
- import { useRef as a, useEffect as u } from "react";
3
- function c(e, t, o = []) {
4
- const i = a(t);
1
+ import { AlertQueue as k, TwitchUserMessageData as z, UserRole as I, classifyEvent as Q, getCacheKey as q, getTestAlertKey as H, getTestMessageKey as J, normalizeIncomingEvent as V, parseTier as X, testAlert as Y, testAlerts as Z, testMessage as _, testMessages as $, testOnWidgetLoadDetail as N } from "../root/index.js";
2
+ import { useRef as l, useEffect as u } from "react";
3
+ function o(e, t, c = []) {
4
+ const i = l(t);
5
5
  i.current = t, u(() => {
6
- const r = (l) => i.current.call(window, l);
6
+ const r = (a) => i.current.call(window, a);
7
7
  return window.addEventListener(e, r), () => window.removeEventListener(e, r);
8
- }, [e, ...o]);
8
+ }, [e, ...c]);
9
9
  }
10
10
  const d = (e) => typeof e == "object" && e !== null && "listener" in e;
11
11
  function s(e) {
@@ -21,9 +21,9 @@ const v = s(
21
21
  (e) => e.listener === "cheer-latest"
22
22
  ), R = s(
23
23
  (e) => e.listener === "raid-latest"
24
- ), b = s(
25
- (e) => e.listener === "donation"
26
24
  ), O = s(
25
+ (e) => e.listener === "donation"
26
+ ), b = s(
27
27
  (e) => e.listener === "delete-message"
28
28
  ), m = s(
29
29
  (e) => e.listener === "delete-messages"
@@ -37,60 +37,61 @@ const v = s(
37
37
  var t;
38
38
  return e.listener === "event" && ((t = e.event) == null ? void 0 : t.type) === "subscriber";
39
39
  }
40
- ), y = s(
40
+ ), M = s(
41
41
  (e) => {
42
42
  var t;
43
43
  return e.listener === "event:test" && ((t = e.event) == null ? void 0 : t.listener) === "widget-button";
44
44
  }
45
45
  );
46
- function n(e, t, o = []) {
47
- c(
46
+ function n(e, t, c = []) {
47
+ o(
48
48
  "onEventReceived",
49
49
  (i) => {
50
50
  e(i.detail) && t(i);
51
51
  },
52
- o
52
+ c
53
53
  );
54
54
  }
55
- function h(e, t = []) {
56
- c("onEventReceived", e, t);
55
+ function L(e, t = []) {
56
+ o("onEventReceived", e, t);
57
57
  }
58
- const L = (e, t) => n(v, e, t), p = (e, t) => n(y, e, t), C = (e, t) => n(g, e, t), T = (e, t) => n(w, e, t), W = (e, t) => n(f, e, t), A = (e, t) => n(E, e, t), G = (e, t) => n(D, e, t), S = (e, t) => n(R, e, t), K = (e, t) => n(b, e, t), P = (e, t) => n(O, e, t), x = (e, t) => n(m, e, t);
59
- function B(e, t = []) {
60
- c(
58
+ const y = (e, t) => n(v, e, t), p = y, T = (e, t) => n(M, e, t), C = (e, t) => n(g, e, t), W = (e, t) => n(w, e, t), A = (e, t) => n(f, e, t), G = (e, t) => n(E, e, t), S = (e, t) => n(D, e, t), K = (e, t) => n(R, e, t), P = (e, t) => n(O, e, t), x = (e, t) => n(b, e, t), B = (e, t) => n(m, e, t);
59
+ function F(e, t = []) {
60
+ o(
61
61
  "onWidgetLoad",
62
62
  e,
63
63
  t
64
64
  );
65
65
  }
66
66
  export {
67
- j as AlertQueue,
68
- k as TwitchUserMessageData,
69
- z as UserRole,
70
- I as classifyEvent,
71
- Q as getCacheKey,
72
- q as getTestAlertKey,
73
- H as getTestMessageKey,
74
- J as normalizeIncomingEvent,
75
- V as parseTier,
76
- X as testAlert,
77
- Y as testAlerts,
78
- Z as testMessage,
79
- _ as testMessages,
80
- $ as testOnWidgetLoadDetail,
81
- c as useEventListener,
82
- G as useOnCheerReceived,
83
- T as useOnCommunityGiftPurchaseReceived,
84
- P as useOnDeleteMessage,
85
- x as useOnDeleteMessages,
86
- K as useOnDonationReceived,
87
- h as useOnEventReceived,
67
+ k as AlertQueue,
68
+ z as TwitchUserMessageData,
69
+ I as UserRole,
70
+ Q as classifyEvent,
71
+ q as getCacheKey,
72
+ H as getTestAlertKey,
73
+ J as getTestMessageKey,
74
+ V as normalizeIncomingEvent,
75
+ X as parseTier,
76
+ Y as testAlert,
77
+ Z as testAlerts,
78
+ _ as testMessage,
79
+ $ as testMessages,
80
+ N as testOnWidgetLoadDetail,
81
+ o as useEventListener,
82
+ S as useOnCheerReceived,
83
+ W as useOnCommunityGiftPurchaseReceived,
84
+ x as useOnDeleteMessage,
85
+ B as useOnDeleteMessages,
86
+ P as useOnDonationReceived,
87
+ L as useOnEventReceived,
88
88
  C as useOnFollowerReceived,
89
- L as useOnMessageReceived,
90
- S as useOnRaidReceived,
91
- W as useOnSubscriberLatestReceived,
92
- A as useOnSubscriberReceived,
93
- p as useOnWidgetButtonReceived,
94
- B as useOnWidgetLoad
89
+ p as useOnMessageReceived,
90
+ K as useOnRaidReceived,
91
+ A as useOnSubscriberLatestReceived,
92
+ G as useOnSubscriberReceived,
93
+ y as useOnTwitchMessageReceived,
94
+ T as useOnWidgetButtonReceived,
95
+ F as useOnWidgetLoad
95
96
  };
96
97
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../src/react/hooks/use-event-listener.ts","../../src/root/guards/on-event-received.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\";\nimport type {\n\tWindowEventKey,\n\tWindowEventListener,\n} from \"../types/window-events.js\";\n\nexport function useEventListener<K extends WindowEventKey>(\n\teventName: K,\n\thandler: WindowEventListener<K>,\n\tdeps: DependencyList = [],\n): void {\n\tconst callbackRef = useRef<WindowEventListener<K>>(handler);\n\tcallbackRef.current = handler;\n\n\tuseEffect(() => {\n\t\tconst fn = (ev: WindowEventMap[K]) => callbackRef.current.call(window, ev);\n\t\twindow.addEventListener(eventName, fn);\n\t\treturn () => window.removeEventListener(eventName, fn);\n\t}, [eventName, ...deps]);\n}\n","import type {\n\tCheerDetail,\n\tCommunityGiftPurchaseDetail,\n\tDeleteMessageDetail,\n\tDeleteMessagesDetail,\n\tDonationDetail,\n\tFollowerDetail,\n\tMinimalEvent,\n\tRaidDetail,\n\tSubscriberDetail,\n\tSubscriberLatestDetail,\n\tTwitchMessageDetail,\n\tWidgetButtonDetail,\n} from \"@/root/types/on-event-received\";\n\nexport const isDetail = (d: unknown): d is MinimalEvent =>\n\ttypeof d === \"object\" && d !== null && \"listener\" in d;\n\nexport function createGuard<T extends MinimalEvent>(\n\tpredicate: (d: MinimalEvent) => boolean,\n) {\n\treturn (d: unknown): d is T => isDetail(d) && predicate(d);\n}\n\nexport const isTwitchMessageEvent = createGuard<TwitchMessageDetail>(\n\t(d) => d.listener === \"message\",\n);\nexport const isFollowerDetail = createGuard<FollowerDetail>(\n\t(d) => d.listener === \"follower-latest\",\n);\nexport const isSubscriberLatestDetail = createGuard<SubscriberLatestDetail>(\n\t(d) => d.listener === \"subscriber-latest\",\n);\nexport const isCheerDetail = createGuard<CheerDetail>(\n\t(d) => d.listener === \"cheer-latest\",\n);\nexport const isRaidDetail = createGuard<RaidDetail>(\n\t(d) => d.listener === \"raid-latest\",\n);\nexport const isDonationDetail = createGuard<DonationDetail>(\n\t(d) => d.listener === \"donation\",\n);\nexport const isDeleteMessageDetail = createGuard<DeleteMessageDetail>(\n\t(d) => d.listener === \"delete-message\",\n);\nexport const isDeleteMessagesDetail = createGuard<DeleteMessagesDetail>(\n\t(d) => d.listener === \"delete-messages\",\n);\nexport const isCommunityGiftPurchaseDetail =\n\tcreateGuard<CommunityGiftPurchaseDetail>(\n\t\t(d) => d.listener === \"event\" && d.event?.type === \"communityGiftPurchase\",\n\t);\nexport const isSubscriberDetail = createGuard<SubscriberDetail>(\n\t(d) => d.listener === \"event\" && d.event?.type === \"subscriber\",\n);\nexport const isWidgetButtonDetail = createGuard<WidgetButtonDetail>(\n\t(d) => d.listener === \"event:test\" && d.event?.listener === \"widget-button\",\n);\n","import type { DependencyList } from \"react\";\nimport {\n\tisCheerDetail,\n\tisCommunityGiftPurchaseDetail,\n\tisDeleteMessageDetail,\n\tisDeleteMessagesDetail,\n\tisDonationDetail,\n\tisFollowerDetail,\n\tisRaidDetail,\n\tisSubscriberDetail,\n\tisSubscriberLatestDetail,\n\tisTwitchMessageEvent,\n\tisWidgetButtonDetail,\n} from \"@/root/guards\";\nimport type {\n\tCheerDetail,\n\tCommunityGiftPurchaseDetail,\n\tDeleteMessageDetail,\n\tDeleteMessagesDetail,\n\tDonationDetail,\n\tFollowerDetail,\n\tMinimalEvent,\n\tRaidDetail,\n\tSubscriberDetail,\n\tSubscriberLatestDetail,\n\tTwitchMessageDetail,\n\tWidgetButtonDetail,\n} from \"@/root/types/on-event-received\";\nimport type { WindowEventListener } from \"../types/window-events\";\nimport { useEventListener } from \"./use-event-listener\";\n\nfunction useOnEvent<T extends MinimalEvent>(\n\tguard: (d: unknown) => d is T,\n\thandler: (ev: CustomEvent<T>) => void,\n\tdeps: DependencyList = [],\n) {\n\tuseEventListener(\n\t\t\"onEventReceived\",\n\t\t(ev) => {\n\t\t\tif (guard(ev.detail)) handler(ev as CustomEvent<T>);\n\t\t},\n\t\tdeps,\n\t);\n}\n\nexport function useOnEventReceived(\n\thandler: WindowEventListener<\"onEventReceived\">,\n\tdeps: DependencyList = [],\n): void {\n\tuseEventListener(\"onEventReceived\", handler, deps);\n}\n\nexport const useOnMessageReceived = (\n\thandler: (ev: CustomEvent<TwitchMessageDetail>) => void,\n\tdeps?: DependencyList,\n) => useOnEvent(isTwitchMessageEvent, handler, deps);\n\nexport const useOnWidgetButtonReceived = (\n\thandler: (ev: CustomEvent<WidgetButtonDetail>) => void,\n\tdeps?: DependencyList,\n) => useOnEvent(isWidgetButtonDetail, handler, deps);\n\nexport const useOnFollowerReceived = (\n\thandler: (ev: CustomEvent<FollowerDetail>) => void,\n\tdeps?: DependencyList,\n) => useOnEvent(isFollowerDetail, handler, deps);\n\nexport const useOnCommunityGiftPurchaseReceived = (\n\thandler: (ev: CustomEvent<CommunityGiftPurchaseDetail>) => void,\n\tdeps?: DependencyList,\n) => useOnEvent(isCommunityGiftPurchaseDetail, handler, deps);\n\nexport const useOnSubscriberLatestReceived = (\n\thandler: (ev: CustomEvent<SubscriberLatestDetail>) => void,\n\tdeps?: DependencyList,\n) => useOnEvent(isSubscriberLatestDetail, handler, deps);\n\nexport const useOnSubscriberReceived = (\n\thandler: (ev: CustomEvent<SubscriberDetail>) => void,\n\tdeps?: DependencyList,\n) => useOnEvent(isSubscriberDetail, handler, deps);\n\nexport const useOnCheerReceived = (\n\thandler: (ev: CustomEvent<CheerDetail>) => void,\n\tdeps?: DependencyList,\n) => useOnEvent(isCheerDetail, handler, deps);\n\nexport const useOnRaidReceived = (\n\thandler: (ev: CustomEvent<RaidDetail>) => void,\n\tdeps?: DependencyList,\n) => useOnEvent(isRaidDetail, handler, deps);\n\nexport const useOnDonationReceived = (\n\thandler: (ev: CustomEvent<DonationDetail>) => void,\n\tdeps?: DependencyList,\n) => useOnEvent(isDonationDetail, handler, deps);\n\nexport const useOnDeleteMessage = (\n\thandler: (ev: CustomEvent<DeleteMessageDetail>) => void,\n\tdeps?: DependencyList,\n) => useOnEvent(isDeleteMessageDetail, handler, deps);\n\nexport const useOnDeleteMessages = (\n\thandler: (ev: CustomEvent<DeleteMessagesDetail>) => void,\n\tdeps?: DependencyList,\n) => useOnEvent(isDeleteMessagesDetail, handler, deps);\n","import type { DependencyList } from \"react\";\nimport type { WindowEventListener } from \"@/react/types/window-events.js\";\nimport type { OnWidgetLoadEventDetails } from \"@/root/types/on-widget-load\";\nimport { useEventListener } from \"./use-event-listener.js\";\n\nexport function useOnWidgetLoad<FieldData = unknown>(\n\thandler: (ev: CustomEvent<OnWidgetLoadEventDetails<FieldData>>) => void,\n\tdeps: DependencyList = [],\n): void {\n\tuseEventListener(\n\t\t\"onWidgetLoad\",\n\t\thandler as WindowEventListener<\"onWidgetLoad\">,\n\t\tdeps,\n\t);\n}\n"],"names":["useEventListener","eventName","handler","deps","callbackRef","useRef","useEffect","fn","ev","isDetail","d","createGuard","predicate","isTwitchMessageEvent","isFollowerDetail","isSubscriberLatestDetail","isCheerDetail","isRaidDetail","isDonationDetail","isDeleteMessageDetail","isDeleteMessagesDetail","isCommunityGiftPurchaseDetail","_a","isSubscriberDetail","isWidgetButtonDetail","useOnEvent","guard","useOnEventReceived","useOnMessageReceived","useOnWidgetButtonReceived","useOnFollowerReceived","useOnCommunityGiftPurchaseReceived","useOnSubscriberLatestReceived","useOnSubscriberReceived","useOnCheerReceived","useOnRaidReceived","useOnDonationReceived","useOnDeleteMessage","useOnDeleteMessages","useOnWidgetLoad"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../../src/react/hooks/use-event-listener.ts","../../src/root/guards/on-event-received.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\";\nimport type {\n\tWindowEventKey,\n\tWindowEventListener,\n} from \"../types/window-events.js\";\n\nexport function useEventListener<K extends WindowEventKey>(\n\teventName: K,\n\thandler: WindowEventListener<K>,\n\tdeps: DependencyList = [],\n): void {\n\tconst callbackRef = useRef<WindowEventListener<K>>(handler);\n\tcallbackRef.current = handler;\n\n\tuseEffect(() => {\n\t\tconst fn = (ev: WindowEventMap[K]) => callbackRef.current.call(window, ev);\n\t\twindow.addEventListener(eventName, fn);\n\t\treturn () => window.removeEventListener(eventName, fn);\n\t}, [eventName, ...deps]);\n}\n","import type {\n\tCheerDetail,\n\tCommunityGiftPurchaseDetail,\n\tDeleteMessageDetail,\n\tDeleteMessagesDetail,\n\tDonationDetail,\n\tFollowerDetail,\n\tMinimalEvent,\n\tRaidDetail,\n\tSubscriberDetail,\n\tSubscriberLatestDetail,\n\tTwitchMessageDetail,\n\tWidgetButtonDetail,\n} from \"@/root/types/on-event-received\";\n\nexport const isDetail = (d: unknown): d is MinimalEvent =>\n\ttypeof d === \"object\" && d !== null && \"listener\" in d;\n\nexport function createGuard<T extends MinimalEvent>(\n\tpredicate: (d: MinimalEvent) => boolean,\n) {\n\treturn (d: unknown): d is T => isDetail(d) && predicate(d);\n}\n\nexport const isTwitchMessageEvent = createGuard<TwitchMessageDetail>(\n\t(d) => d.listener === \"message\",\n);\nexport const isFollowerDetail = createGuard<FollowerDetail>(\n\t(d) => d.listener === \"follower-latest\",\n);\nexport const isSubscriberLatestDetail = createGuard<SubscriberLatestDetail>(\n\t(d) => d.listener === \"subscriber-latest\",\n);\nexport const isCheerDetail = createGuard<CheerDetail>(\n\t(d) => d.listener === \"cheer-latest\",\n);\nexport const isRaidDetail = createGuard<RaidDetail>(\n\t(d) => d.listener === \"raid-latest\",\n);\nexport const isDonationDetail = createGuard<DonationDetail>(\n\t(d) => d.listener === \"donation\",\n);\nexport const isDeleteMessageDetail = createGuard<DeleteMessageDetail>(\n\t(d) => d.listener === \"delete-message\",\n);\nexport const isDeleteMessagesDetail = createGuard<DeleteMessagesDetail>(\n\t(d) => d.listener === \"delete-messages\",\n);\nexport const isCommunityGiftPurchaseDetail =\n\tcreateGuard<CommunityGiftPurchaseDetail>(\n\t\t(d) => d.listener === \"event\" && d.event?.type === \"communityGiftPurchase\",\n\t);\nexport const isSubscriberDetail = createGuard<SubscriberDetail>(\n\t(d) => d.listener === \"event\" && d.event?.type === \"subscriber\",\n);\nexport const isWidgetButtonDetail = createGuard<WidgetButtonDetail>(\n\t(d) => d.listener === \"event:test\" && d.event?.listener === \"widget-button\",\n);\n","import type { DependencyList } from \"react\";\nimport {\n\tisCheerDetail,\n\tisCommunityGiftPurchaseDetail,\n\tisDeleteMessageDetail,\n\tisDeleteMessagesDetail,\n\tisDonationDetail,\n\tisFollowerDetail,\n\tisRaidDetail,\n\tisSubscriberDetail,\n\tisSubscriberLatestDetail,\n\tisTwitchMessageEvent,\n\tisWidgetButtonDetail,\n} from \"@/root/guards\";\nimport type {\n\tCheerDetail,\n\tCommunityGiftPurchaseDetail,\n\tDeleteMessageDetail,\n\tDeleteMessagesDetail,\n\tDonationDetail,\n\tFollowerDetail,\n\tMinimalEvent,\n\tRaidDetail,\n\tSubscriberDetail,\n\tSubscriberLatestDetail,\n\tTwitchMessageDetail,\n\tWidgetButtonDetail,\n} from \"@/root/types/on-event-received\";\nimport type { WindowEventListener } from \"../types/window-events\";\nimport { useEventListener } from \"./use-event-listener\";\n\nfunction useOnEvent<T extends MinimalEvent>(\n\tguard: (d: unknown) => d is T,\n\thandler: (ev: CustomEvent<T>) => void,\n\tdeps: DependencyList = [],\n) {\n\tuseEventListener(\n\t\t\"onEventReceived\",\n\t\t(ev) => {\n\t\t\tif (guard(ev.detail)) handler(ev as CustomEvent<T>);\n\t\t},\n\t\tdeps,\n\t);\n}\n\nexport function useOnEventReceived(\n\thandler: WindowEventListener<\"onEventReceived\">,\n\tdeps: DependencyList = [],\n): void {\n\tuseEventListener(\"onEventReceived\", handler, deps);\n}\n\nexport const useOnTwitchMessageReceived = (\n\thandler: (ev: CustomEvent<TwitchMessageDetail>) => void,\n\tdeps?: DependencyList,\n) => useOnEvent(isTwitchMessageEvent, handler, deps);\n\nexport const useOnMessageReceived = useOnTwitchMessageReceived;\n\nexport const useOnWidgetButtonReceived = (\n\thandler: (ev: CustomEvent<WidgetButtonDetail>) => void,\n\tdeps?: DependencyList,\n) => useOnEvent(isWidgetButtonDetail, handler, deps);\n\nexport const useOnFollowerReceived = (\n\thandler: (ev: CustomEvent<FollowerDetail>) => void,\n\tdeps?: DependencyList,\n) => useOnEvent(isFollowerDetail, handler, deps);\n\nexport const useOnCommunityGiftPurchaseReceived = (\n\thandler: (ev: CustomEvent<CommunityGiftPurchaseDetail>) => void,\n\tdeps?: DependencyList,\n) => useOnEvent(isCommunityGiftPurchaseDetail, handler, deps);\n\nexport const useOnSubscriberLatestReceived = (\n\thandler: (ev: CustomEvent<SubscriberLatestDetail>) => void,\n\tdeps?: DependencyList,\n) => useOnEvent(isSubscriberLatestDetail, handler, deps);\n\nexport const useOnSubscriberReceived = (\n\thandler: (ev: CustomEvent<SubscriberDetail>) => void,\n\tdeps?: DependencyList,\n) => useOnEvent(isSubscriberDetail, handler, deps);\n\nexport const useOnCheerReceived = (\n\thandler: (ev: CustomEvent<CheerDetail>) => void,\n\tdeps?: DependencyList,\n) => useOnEvent(isCheerDetail, handler, deps);\n\nexport const useOnRaidReceived = (\n\thandler: (ev: CustomEvent<RaidDetail>) => void,\n\tdeps?: DependencyList,\n) => useOnEvent(isRaidDetail, handler, deps);\n\nexport const useOnDonationReceived = (\n\thandler: (ev: CustomEvent<DonationDetail>) => void,\n\tdeps?: DependencyList,\n) => useOnEvent(isDonationDetail, handler, deps);\n\nexport const useOnDeleteMessage = (\n\thandler: (ev: CustomEvent<DeleteMessageDetail>) => void,\n\tdeps?: DependencyList,\n) => useOnEvent(isDeleteMessageDetail, handler, deps);\n\nexport const useOnDeleteMessages = (\n\thandler: (ev: CustomEvent<DeleteMessagesDetail>) => void,\n\tdeps?: DependencyList,\n) => useOnEvent(isDeleteMessagesDetail, handler, deps);\n","import type { DependencyList } from \"react\";\nimport type { WindowEventListener } from \"@/react/types/window-events.js\";\nimport type { OnWidgetLoadEventDetails } from \"@/root/types/on-widget-load\";\nimport { useEventListener } from \"./use-event-listener.js\";\n\nexport function useOnWidgetLoad<FieldData = unknown>(\n\thandler: (ev: CustomEvent<OnWidgetLoadEventDetails<FieldData>>) => void,\n\tdeps: DependencyList = [],\n): void {\n\tuseEventListener(\n\t\t\"onWidgetLoad\",\n\t\thandler as WindowEventListener<\"onWidgetLoad\">,\n\t\tdeps,\n\t);\n}\n"],"names":["useEventListener","eventName","handler","deps","callbackRef","useRef","useEffect","fn","ev","isDetail","d","createGuard","predicate","isTwitchMessageEvent","isFollowerDetail","isSubscriberLatestDetail","isCheerDetail","isRaidDetail","isDonationDetail","isDeleteMessageDetail","isDeleteMessagesDetail","isCommunityGiftPurchaseDetail","_a","isSubscriberDetail","isWidgetButtonDetail","useOnEvent","guard","useOnEventReceived","useOnTwitchMessageReceived","useOnMessageReceived","useOnWidgetButtonReceived","useOnFollowerReceived","useOnCommunityGiftPurchaseReceived","useOnSubscriberLatestReceived","useOnSubscriberReceived","useOnCheerReceived","useOnRaidReceived","useOnDonationReceived","useOnDeleteMessage","useOnDeleteMessages","useOnWidgetLoad"],"mappings":";;AAMO,SAASA,EACfC,GACAC,GACAC,IAAuB,CAAA,GAChB;AACP,QAAMC,IAAcC,EAA+BH,CAAO;AAC1D,EAAAE,EAAY,UAAUF,GAEtBI,EAAU,MAAM;AACf,UAAMC,IAAK,CAACC,MAA0BJ,EAAY,QAAQ,KAAK,QAAQI,CAAE;AACzE,kBAAO,iBAAiBP,GAAWM,CAAE,GAC9B,MAAM,OAAO,oBAAoBN,GAAWM,CAAE;AAAA,EACtD,GAAG,CAACN,GAAW,GAAGE,CAAI,CAAC;AACxB;ACJO,MAAMM,IAAW,CAACC,MACxB,OAAOA,KAAM,YAAYA,MAAM,QAAQ,cAAcA;AAE/C,SAASC,EACfC,GACC;AACD,SAAO,CAACF,MAAuBD,EAASC,CAAC,KAAKE,EAAUF,CAAC;AAC1D;AAEO,MAAMG,IAAuBF;AAAA,EACnC,CAACD,MAAMA,EAAE,aAAa;AACvB,GACaI,IAAmBH;AAAA,EAC/B,CAACD,MAAMA,EAAE,aAAa;AACvB,GACaK,IAA2BJ;AAAA,EACvC,CAACD,MAAMA,EAAE,aAAa;AACvB,GACaM,IAAgBL;AAAA,EAC5B,CAACD,MAAMA,EAAE,aAAa;AACvB,GACaO,IAAeN;AAAA,EAC3B,CAACD,MAAMA,EAAE,aAAa;AACvB,GACaQ,IAAmBP;AAAA,EAC/B,CAACD,MAAMA,EAAE,aAAa;AACvB,GACaS,IAAwBR;AAAA,EACpC,CAACD,MAAMA,EAAE,aAAa;AACvB,GACaU,IAAyBT;AAAA,EACrC,CAACD,MAAMA,EAAE,aAAa;AACvB,GACaW,IACZV;AAAA,EACC,CAACD,MAAA;;AAAM,WAAAA,EAAE,aAAa,aAAWY,IAAAZ,EAAE,UAAF,gBAAAY,EAAS,UAAS;AAAA;AACpD,GACYC,IAAqBZ;AAAA,EACjC,CAACD,MAAA;;AAAM,WAAAA,EAAE,aAAa,aAAWY,IAAAZ,EAAE,UAAF,gBAAAY,EAAS,UAAS;AAAA;AACpD,GACaE,IAAuBb;AAAA,EACnC,CAACD,MAAA;;AAAM,WAAAA,EAAE,aAAa,kBAAgBY,IAAAZ,EAAE,UAAF,gBAAAY,EAAS,cAAa;AAAA;AAC7D;AC1BA,SAASG,EACRC,GACAxB,GACAC,IAAuB,CAAA,GACtB;AACD,EAAAH;AAAA,IACC;AAAA,IACA,CAACQ,MAAO;AACP,MAAIkB,EAAMlB,EAAG,MAAM,OAAWA,CAAoB;AAAA,IACnD;AAAA,IACAL;AAAA,EAAA;AAEF;AAEO,SAASwB,EACfzB,GACAC,IAAuB,IAChB;AACP,EAAAH,EAAiB,mBAAmBE,GAASC,CAAI;AAClD;AAEO,MAAMyB,IAA6B,CACzC1B,GACAC,MACIsB,EAAWZ,GAAsBX,GAASC,CAAI,GAEtC0B,IAAuBD,GAEvBE,IAA4B,CACxC5B,GACAC,MACIsB,EAAWD,GAAsBtB,GAASC,CAAI,GAEtC4B,IAAwB,CACpC7B,GACAC,MACIsB,EAAWX,GAAkBZ,GAASC,CAAI,GAElC6B,IAAqC,CACjD9B,GACAC,MACIsB,EAAWJ,GAA+BnB,GAASC,CAAI,GAE/C8B,IAAgC,CAC5C/B,GACAC,MACIsB,EAAWV,GAA0Bb,GAASC,CAAI,GAE1C+B,IAA0B,CACtChC,GACAC,MACIsB,EAAWF,GAAoBrB,GAASC,CAAI,GAEpCgC,IAAqB,CACjCjC,GACAC,MACIsB,EAAWT,GAAed,GAASC,CAAI,GAE/BiC,IAAoB,CAChClC,GACAC,MACIsB,EAAWR,GAAcf,GAASC,CAAI,GAE9BkC,IAAwB,CACpCnC,GACAC,MACIsB,EAAWP,GAAkBhB,GAASC,CAAI,GAElCmC,IAAqB,CACjCpC,GACAC,MACIsB,EAAWN,GAAuBjB,GAASC,CAAI,GAEvCoC,IAAsB,CAClCrC,GACAC,MACIsB,EAAWL,GAAwBlB,GAASC,CAAI;ACtG9C,SAASqC,EACftC,GACAC,IAAuB,IAChB;AACP,EAAAH;AAAA,IACC;AAAA,IACAE;AAAA,IACAC;AAAA,EAAA;AAEF;"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@allior/wmake-streamelements-events",
3
- "version": "2.0.0",
3
+ "version": "2.0.2",
4
4
  "description": "Twitch/StreamElements subscription event normalizer for widgets (alerts).",
5
5
  "type": "module",
6
6
  "types": "./dist/root/index.d.ts",
@@ -19,7 +19,12 @@
19
19
  "files": [
20
20
  "dist",
21
21
  "src",
22
- "README.md"
22
+ "README.md",
23
+ "vite.config.ts",
24
+ "vite.iife.config.ts",
25
+ "tsconfig.app.json",
26
+ "tsconfig.json",
27
+ "tsconfig.node.json"
23
28
  ],
24
29
  "scripts": {
25
30
  "pub": "npm publish --access public",
@@ -50,11 +50,13 @@ export function useOnEventReceived(
50
50
  useEventListener("onEventReceived", handler, deps);
51
51
  }
52
52
 
53
- export const useOnMessageReceived = (
53
+ export const useOnTwitchMessageReceived = (
54
54
  handler: (ev: CustomEvent<TwitchMessageDetail>) => void,
55
55
  deps?: DependencyList,
56
56
  ) => useOnEvent(isTwitchMessageEvent, handler, deps);
57
57
 
58
+ export const useOnMessageReceived = useOnTwitchMessageReceived;
59
+
58
60
  export const useOnWidgetButtonReceived = (
59
61
  handler: (ev: CustomEvent<WidgetButtonDetail>) => void,
60
62
  deps?: DependencyList,
@@ -0,0 +1,31 @@
1
+ {
2
+ "compilerOptions": {
3
+ "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.app.tsbuildinfo",
4
+ "target": "ES2022",
5
+ "useDefineForClassFields": true,
6
+ "lib": ["ES2022", "DOM", "DOM.Iterable", "dom"],
7
+ "module": "ESNext",
8
+ "skipLibCheck": true,
9
+ /* Bundler mode */
10
+ "moduleResolution": "bundler",
11
+ "allowImportingTsExtensions": true,
12
+ "verbatimModuleSyntax": true,
13
+ "moduleDetection": "force",
14
+ "noEmit": true,
15
+ "jsx": "react-jsx",
16
+ /* Linting */
17
+ "strict": true,
18
+ "noUnusedLocals": true,
19
+ "noUnusedParameters": true,
20
+ "erasableSyntaxOnly": false,
21
+ "noFallthroughCasesInSwitch": true,
22
+ "noUncheckedSideEffectImports": true,
23
+ "baseUrl": ".",
24
+ "paths": {
25
+ "#/*": ["./src/common/*"],
26
+ "@/*": ["./src/*"]
27
+ }
28
+ },
29
+ "include": ["src"],
30
+ "exclude": ["node_modules", "dist"]
31
+ }
package/tsconfig.json ADDED
@@ -0,0 +1,8 @@
1
+ {
2
+ "files": [],
3
+ "references": [
4
+ { "path": "./tsconfig.app.json" },
5
+ { "path": "./tsconfig.types.json" },
6
+ { "path": "./tsconfig.node.json" }
7
+ ]
8
+ }
@@ -0,0 +1,25 @@
1
+ {
2
+ "compilerOptions": {
3
+ "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.node.tsbuildinfo",
4
+ "target": "ES2023",
5
+ "lib": ["ES2023"],
6
+ "module": "ESNext",
7
+ "skipLibCheck": true,
8
+
9
+ /* Bundler mode */
10
+ "moduleResolution": "bundler",
11
+ "allowImportingTsExtensions": true,
12
+ "verbatimModuleSyntax": true,
13
+ "moduleDetection": "force",
14
+ "noEmit": true,
15
+
16
+ /* Linting */
17
+ "strict": true,
18
+ "noUnusedLocals": true,
19
+ "noUnusedParameters": true,
20
+ "erasableSyntaxOnly": false,
21
+ "noFallthroughCasesInSwitch": true,
22
+ "noUncheckedSideEffectImports": true
23
+ },
24
+ "include": ["vite.config.ts"]
25
+ }
package/vite.config.ts ADDED
@@ -0,0 +1,36 @@
1
+ import { dirname, resolve } from "node:path";
2
+ import { fileURLToPath } from "node:url";
3
+ import react from "@vitejs/plugin-react";
4
+ import { defineConfig } from "vite";
5
+
6
+ const __dirname = dirname(fileURLToPath(import.meta.url));
7
+
8
+ export default defineConfig({
9
+ plugins: [react()],
10
+ resolve: {
11
+ alias: {
12
+ "@": resolve(__dirname, "src"),
13
+ "@/root": resolve(__dirname, "src/root/index.ts"),
14
+ },
15
+ },
16
+ build: {
17
+ copyPublicDir: false,
18
+ lib: {
19
+ entry: {
20
+ "root/index": resolve(__dirname, "src/root/index.ts"),
21
+ "react/index": resolve(__dirname, "src/react/index.ts"),
22
+ },
23
+ formats: ["es"],
24
+ },
25
+ sourcemap: true,
26
+ outDir: "dist",
27
+ rollupOptions: {
28
+ external: ["react", "react/jsx-runtime"],
29
+ output: {
30
+ format: "es",
31
+ exports: "named",
32
+ entryFileNames: "[name].js",
33
+ },
34
+ },
35
+ },
36
+ });
@@ -0,0 +1,52 @@
1
+ import { defineConfig } from "vite";
2
+ import react from "@vitejs/plugin-react";
3
+ import { resolve, dirname } from "node:path";
4
+ import { fileURLToPath } from "node:url";
5
+
6
+ const __dirname = dirname(fileURLToPath(import.meta.url));
7
+ const entry = process.env.VITE_IIFE_ENTRY ?? "root";
8
+ const entryMap: Record<string, { path: string; name: string; out: string }> = {
9
+ root: {
10
+ path: "src/root/index.ts",
11
+ name: "WmakeStreamelementsEvents",
12
+ out: "root/index.iife.js",
13
+ },
14
+ react: {
15
+ path: "src/react/index.ts",
16
+ name: "WmakeStreamelementsEventsReact",
17
+ out: "react/index.iife.js",
18
+ },
19
+ };
20
+ const {
21
+ path: entryPath,
22
+ name: globalName,
23
+ out: entryFileNames,
24
+ } = entryMap[entry] ?? entryMap.root;
25
+
26
+ export default defineConfig({
27
+ plugins: [react()],
28
+ resolve: {
29
+ alias: { "@": resolve(__dirname, "src") },
30
+ },
31
+ build: {
32
+ emptyOutDir: false,
33
+ lib: {
34
+ entry: resolve(__dirname, entryPath),
35
+ name: globalName,
36
+ formats: ["iife"],
37
+ },
38
+ sourcemap: true,
39
+ outDir: "dist",
40
+ rollupOptions: {
41
+ external: ["react", "react/jsx-runtime"],
42
+ output: {
43
+ entryFileNames,
44
+ extend: true,
45
+ globals: {
46
+ react: "React",
47
+ "react/jsx-runtime": "ReactJSXRuntime",
48
+ },
49
+ },
50
+ },
51
+ },
52
+ });