@lumiastream/lumia-types 3.3.9 → 3.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -2,9 +2,15 @@ import { LumiaAlertValues } from './activity.types.js';
2
2
  /**
3
3
  * Eventlist categories. The eventlist module uses these as a *blacklist* via
4
4
  * `content.filters` — any category listed there is hidden from the rendered
5
- * feed (and so anything NOT listed is shown). `OTHERS` is the catch-all for
6
- * stream-management / administrative events that aren't tied to a viewer
7
- * action (poll progress, stream live/offline, OBS scene switches, etc.).
5
+ * feed (and so anything NOT listed is shown).
6
+ *
7
+ * Policy: every category here corresponds to a viewer-facing event class. We
8
+ * deliberately do NOT have an "others" catch-all category — alerts that exist
9
+ * only as stream-management / administrative signals (OBS scene switches,
10
+ * stream-live notices, music-player events, poll progress, etc.) are simply
11
+ * left out of `LumiaMapAlertTypeToEventListType` below. The eventlist
12
+ * component only renders MAPPED alerts, so unmapped alerts are silently
13
+ * excluded from every feed without needing a UI toggle.
8
14
  *
9
15
  * When adding a new value here, mirror it in:
10
16
  * - `ALL_LUMIA_EVENTLIST_CATEGORIES` in Lumia-UI's SE importer
@@ -37,67 +43,41 @@ export var LumiaEventListTypes;
37
43
  LumiaEventListTypes["FANS"] = "fans";
38
44
  LumiaEventListTypes["SHARES"] = "shares";
39
45
  LumiaEventListTypes["RAFFLE"] = "raffles";
40
- LumiaEventListTypes["OTHERS"] = "others";
41
46
  })(LumiaEventListTypes || (LumiaEventListTypes = {}));
42
47
  /**
43
- * Categorization map from `LumiaAlertValues` → `LumiaEventListTypes`. Drives
44
- * eventlist filtering: an alert that's missing from this map is treated as
45
- * "unmapped" and will not be hidden by any category-based filter (it falls
46
- * through to OTHERS only if OTHERS is allowed). Historically this caused
47
- * unrelated alerts (e.g. Throne purchases) to leak into category-scoped
48
- * marquees like "Recent Subscribers", because the missing mapping made the
49
- * filtering logic's blacklist check pass.
48
+ * Categorization map from `LumiaAlertValues` → `LumiaEventListTypes`. The
49
+ * eventlist module ONLY renders alerts that appear in this map anything
50
+ * absent is silently excluded from every feed (no UI toggle to surface it).
50
51
  *
51
52
  * Policy:
52
- * - Every alert in `LumiaAlertValues` should appear here. If an alert isn't
53
- * viewer-facing (stream lifecycle, OBS/SLOBS/Meld events, music players,
54
- * VTube Studio, Pulse health, polls/predictions/goals progress) it maps
55
- * to OTHERS, never silently to a "real" category.
56
- * - Categorize by the *viewer's* intent, not the underlying payload shape.
57
- * A "subscription expired" event is administrative, not a new sub →
58
- * OTHERS, not SUBSCRIBERS. A giveaway-started notice is admin → OTHERS.
59
- * A Throne / Fourthwall shop gift purchase is a viewer buying something
60
- * for the streamer → PURCHASES.
53
+ * - Map only viewer-facing events. Stream-management / administrative
54
+ * signals (OBS / SLOBS / Meld scene switches, music-player events,
55
+ * poll/prediction/goal lifecycle, stream-live notices, channel
56
+ * join/leave, ad starts/stops, Pulse heartrate, etc.) are NOT mapped
57
+ * they don't belong in a viewer-facing activity feed and have no UI
58
+ * toggle to bring them in.
59
+ * - Categorize by the *viewer's* intent, not payload shape. A Throne /
60
+ * Fourthwall shop gift purchase is a viewer buying something for the
61
+ * streamer → PURCHASES. A subscription-expired notice is admin, not a
62
+ * new subscriber → omit entirely (was OTHERS, now unmapped).
61
63
  * - Session-counter alerts (e.g. TWITCH_SESSION_FOLLOWERS) mirror the
62
- * category of their per-event cousin (FOLLOWER) so a counter widget can
63
- * reuse the same category filter.
64
+ * category of their per-event cousin (FOLLOWER) so a counter widget
65
+ * can reuse the same category filter.
64
66
  *
65
67
  * Grouped by platform / source for review; ordering within groups follows
66
- * the enum declaration in `activity.types.ts`.
68
+ * the enum declaration in `activity.types.ts`. Alerts that previously
69
+ * mapped to OTHERS were removed in this revision and are now unmapped
70
+ * (purposefully hidden from all eventlists).
67
71
  */
68
72
  export const LumiaMapAlertTypeToEventListType = {
69
73
  // --- Lumia Stream native ---
70
74
  [LumiaAlertValues.LUMIASTREAM_DONATION]: LumiaEventListTypes.DONATION,
71
- [LumiaAlertValues.LUMIASTREAM_LUMIA_OPENED]: LumiaEventListTypes.OTHERS,
72
- [LumiaAlertValues.LUMIASTREAM_LUMIA_CLOSED]: LumiaEventListTypes.OTHERS,
73
- [LumiaAlertValues.LUMIASTREAM_STREAMMODE_ON]: LumiaEventListTypes.OTHERS,
74
- [LumiaAlertValues.LUMIASTREAM_STREAMMODE_OFF]: LumiaEventListTypes.OTHERS,
75
- [LumiaAlertValues.LUMIASTREAM_RAFFLE_START]: LumiaEventListTypes.RAFFLE,
76
- [LumiaAlertValues.LUMIASTREAM_RAFFLE_STOP]: LumiaEventListTypes.RAFFLE,
77
- [LumiaAlertValues.LUMIASTREAM_RAFFLE_WINNER]: LumiaEventListTypes.RAFFLE,
78
- // Spinwheel / Roulette / Slots winners are giveaway-style outcomes —
79
- // align them with the RAFFLE category so a "Recent Giveaways" widget
80
- // can pick them up alongside actual raffles.
81
- [LumiaAlertValues.LUMIASTREAM_SPINWHEEL_WINNER]: LumiaEventListTypes.RAFFLE,
82
- [LumiaAlertValues.LUMIASTREAM_ROULETTE_WINNER]: LumiaEventListTypes.RAFFLE,
83
- [LumiaAlertValues.LUMIASTREAM_SLOTS_WINNER]: LumiaEventListTypes.RAFFLE,
84
- [LumiaAlertValues.LUMIASTREAM_TOURNAMENT_START]: LumiaEventListTypes.OTHERS,
85
- [LumiaAlertValues.LUMIASTREAM_TOURNAMENT_END]: LumiaEventListTypes.OTHERS,
86
- [LumiaAlertValues.LUMIASTREAM_TOURNAMENT_WINNER]: LumiaEventListTypes.OTHERS,
87
- [LumiaAlertValues.LUMIASTREAM_POLL_STARTED]: LumiaEventListTypes.OTHERS,
88
- [LumiaAlertValues.LUMIASTREAM_POLL_PROGRESSED]: LumiaEventListTypes.OTHERS,
89
- [LumiaAlertValues.LUMIASTREAM_POLL_ENDED]: LumiaEventListTypes.OTHERS,
90
- [LumiaAlertValues.LUMIASTREAM_VIEWERQUEUE_STARTED]: LumiaEventListTypes.OTHERS,
91
- [LumiaAlertValues.LUMIASTREAM_VIEWERQUEUE_ENDED]: LumiaEventListTypes.OTHERS,
92
- [LumiaAlertValues.LUMIASTREAM_VIEWER_ACHIEVEMENT]: LumiaEventListTypes.OTHERS,
93
- [LumiaAlertValues.LUMIASTREAM_VARIABLE_CHANGED]: LumiaEventListTypes.OTHERS,
75
+ // Raffle / spinwheel / roulette / slots winners are explicitly hidden via
76
+ // `AlertsToFilter` below — they're stream-side games, not viewer-facing
77
+ // activity feed events.
94
78
  // --- Twitch ---
95
79
  [LumiaAlertValues.TWITCH_EXTENSION]: LumiaEventListTypes.EXTENSION,
96
80
  [LumiaAlertValues.TWITCH_POINTS]: LumiaEventListTypes.POINTS,
97
- [LumiaAlertValues.TWITCH_STREAM_LIVE]: LumiaEventListTypes.OTHERS,
98
- [LumiaAlertValues.TWITCH_STREAM_OFFLINE]: LumiaEventListTypes.OTHERS,
99
- [LumiaAlertValues.TWITCH_FIRST_CHATTER]: LumiaEventListTypes.OTHERS,
100
- [LumiaAlertValues.TWITCH_ENTRANCE]: LumiaEventListTypes.OTHERS,
101
81
  [LumiaAlertValues.TWITCH_FOLLOWER]: LumiaEventListTypes.FOLLOWER,
102
82
  [LumiaAlertValues.TWITCH_SESSION_FOLLOWERS]: LumiaEventListTypes.FOLLOWER,
103
83
  [LumiaAlertValues.TWITCH_SUBSCRIBER]: LumiaEventListTypes.SUBSCRIBERS,
@@ -109,46 +89,19 @@ export const LumiaMapAlertTypeToEventListType = {
109
89
  [LumiaAlertValues.TWITCH_BITS]: LumiaEventListTypes.BITS,
110
90
  [LumiaAlertValues.TWITCH_BITS_COMBO]: LumiaEventListTypes.BITS,
111
91
  [LumiaAlertValues.TWITCH_SESSION_BITS]: LumiaEventListTypes.BITS,
112
- // Channel-point redemptions used to be miscategorized as PURCHASES on the
113
- // Streamlabs alert; REDEMPTION is the dedicated category for this event
114
- // shape and is what category-filtered widgets should target.
115
- [LumiaAlertValues.TWITCH_REDEMPTION]: LumiaEventListTypes.REDEMPTION,
92
+ // TWITCH_REDEMPTION is explicitly hidden via `AlertsToFilter` its
93
+ // payload is too channel-points-specific for a generic activity feed.
94
+ // Streamlabs Redemption (loyalty points) is in the REDEMPTION category
95
+ // below if that semantic is needed.
116
96
  [LumiaAlertValues.TWITCH_HYPETRAIN_STARTED]: LumiaEventListTypes.HYPETRAIN,
117
- [LumiaAlertValues.TWITCH_HYPETRAIN_PROGRESSED]: LumiaEventListTypes.HYPETRAIN,
118
- [LumiaAlertValues.TWITCH_HYPETRAIN_LEVEL_PROGRESSED]: LumiaEventListTypes.HYPETRAIN,
119
- [LumiaAlertValues.TWITCH_HYPETRAIN_ENDED]: LumiaEventListTypes.HYPETRAIN,
120
- [LumiaAlertValues.TWITCH_POLL_STARTED]: LumiaEventListTypes.OTHERS,
121
- [LumiaAlertValues.TWITCH_POLL_PROGRESSED]: LumiaEventListTypes.OTHERS,
122
- [LumiaAlertValues.TWITCH_POLL_ENDED]: LumiaEventListTypes.OTHERS,
123
- [LumiaAlertValues.TWITCH_PREDICTION_STARTED]: LumiaEventListTypes.OTHERS,
124
- [LumiaAlertValues.TWITCH_PREDICTION_PROGRESSED]: LumiaEventListTypes.OTHERS,
125
- [LumiaAlertValues.TWITCH_PREDICTION_LOCKED]: LumiaEventListTypes.OTHERS,
126
- [LumiaAlertValues.TWITCH_PREDICTION_ENDED]: LumiaEventListTypes.OTHERS,
127
- [LumiaAlertValues.TWITCH_GOAL_STARTED]: LumiaEventListTypes.OTHERS,
128
- [LumiaAlertValues.TWITCH_GOAL_PROGRESSED]: LumiaEventListTypes.OTHERS,
129
- [LumiaAlertValues.TWITCH_GOAL_ENDED]: LumiaEventListTypes.OTHERS,
97
+ // HYPETRAIN_PROGRESSED / LEVEL_PROGRESSED / ENDED are hidden via
98
+ // `AlertsToFilter` — only the STARTED event reads as a real "event" in
99
+ // the feed; the rest are progress ticks the streamer doesn't want
100
+ // cluttering things.
130
101
  [LumiaAlertValues.TWITCH_CHARITY_DONATION]: LumiaEventListTypes.DONATION,
131
- [LumiaAlertValues.TWITCH_CHARITY_CAMPAIGN_STARTED]: LumiaEventListTypes.OTHERS,
132
- [LumiaAlertValues.TWITCH_CHARITY_CAMPAIGN_PROGRESSED]: LumiaEventListTypes.OTHERS,
133
- [LumiaAlertValues.TWITCH_CHARITY_CAMPAIGN_STOPPED]: LumiaEventListTypes.OTHERS,
134
- [LumiaAlertValues.TWITCH_CATEGORY]: LumiaEventListTypes.OTHERS,
135
- [LumiaAlertValues.TWITCH_CLIP]: LumiaEventListTypes.OTHERS,
136
- [LumiaAlertValues.TWITCH_CHANNEL_JOIN]: LumiaEventListTypes.OTHERS,
137
- [LumiaAlertValues.TWITCH_CHANNEL_LEAVE]: LumiaEventListTypes.OTHERS,
138
- [LumiaAlertValues.TWITCH_BANNED]: LumiaEventListTypes.OTHERS,
139
- [LumiaAlertValues.TWITCH_TIMEOUT]: LumiaEventListTypes.OTHERS,
140
- [LumiaAlertValues.TWITCH_TIMEOUT_OVER]: LumiaEventListTypes.OTHERS,
141
- [LumiaAlertValues.TWITCH_SHOUTOUT_RECEIVE]: LumiaEventListTypes.OTHERS,
142
- [LumiaAlertValues.TWITCH_AD_STARTED]: LumiaEventListTypes.OTHERS,
143
- [LumiaAlertValues.TWITCH_AD_STOPPED]: LumiaEventListTypes.OTHERS,
144
- [LumiaAlertValues.TWITCH_WATCH_STREAK]: LumiaEventListTypes.OTHERS,
145
102
  [LumiaAlertValues.TWITCH_POWERUPS]: LumiaEventListTypes.BITS,
146
103
  [LumiaAlertValues.TWITCH_POWERUPS_POINTS]: LumiaEventListTypes.POINTS,
147
104
  // --- YouTube ---
148
- [LumiaAlertValues.YOUTUBE_STREAM_LIVE]: LumiaEventListTypes.OTHERS,
149
- [LumiaAlertValues.YOUTUBE_STREAM_OFFLINE]: LumiaEventListTypes.OTHERS,
150
- [LumiaAlertValues.YOUTUBE_FIRST_CHATTER]: LumiaEventListTypes.OTHERS,
151
- [LumiaAlertValues.YOUTUBE_ENTRANCE]: LumiaEventListTypes.OTHERS,
152
105
  // YouTube "subscribers" are free follows in YT-speak — categorize as
153
106
  // FOLLOWER so a "Recent Followers" widget unifies Twitch follows + YT
154
107
  // subs. Paid memberships are categorized as SUBSCRIBERS below.
@@ -164,13 +117,10 @@ export const LumiaMapAlertTypeToEventListType = {
164
117
  [LumiaAlertValues.YOUTUBE_SESSION_SUPERSTICKERS]: LumiaEventListTypes.SUPERSTICKERS,
165
118
  [LumiaAlertValues.YOUTUBE_GIFTS]: LumiaEventListTypes.GIFTS,
166
119
  [LumiaAlertValues.YOUTUBE_SESSION_GIFTS]: LumiaEventListTypes.GIFTS,
167
- [LumiaAlertValues.YOUTUBE_LIKE]: LumiaEventListTypes.LIKES,
168
- [LumiaAlertValues.YOUTUBE_VIEWERS]: LumiaEventListTypes.OTHERS,
120
+ // YOUTUBE_LIKE / TIKTOK_LIKE / TIKTOK_TOTAL_LIKES / TWITTER_LIKE are
121
+ // hidden via `AlertsToFilter` — likes are too frequent / noisy for a
122
+ // recent-activity feed.
169
123
  // --- Facebook ---
170
- [LumiaAlertValues.FACEBOOK_STREAM_LIVE]: LumiaEventListTypes.OTHERS,
171
- [LumiaAlertValues.FACEBOOK_STREAM_OFFLINE]: LumiaEventListTypes.OTHERS,
172
- [LumiaAlertValues.FACEBOOK_FIRST_CHATTER]: LumiaEventListTypes.OTHERS,
173
- [LumiaAlertValues.FACEBOOK_ENTRANCE]: LumiaEventListTypes.OTHERS,
174
124
  [LumiaAlertValues.FACEBOOK_FOLLOWER]: LumiaEventListTypes.FOLLOWER,
175
125
  [LumiaAlertValues.FACEBOOK_REACTION]: LumiaEventListTypes.LIKES,
176
126
  [LumiaAlertValues.FACEBOOK_STAR]: LumiaEventListTypes.STARS,
@@ -182,11 +132,7 @@ export const LumiaMapAlertTypeToEventListType = {
182
132
  [LumiaAlertValues.FACEBOOK_SHARE]: LumiaEventListTypes.SHARES,
183
133
  [LumiaAlertValues.FACEBOOK_FAN]: LumiaEventListTypes.FANS,
184
134
  // --- TikTok ---
185
- [LumiaAlertValues.TIKTOK_FIRST_CHATTER]: LumiaEventListTypes.OTHERS,
186
- [LumiaAlertValues.TIKTOK_ENTRANCE]: LumiaEventListTypes.OTHERS,
187
135
  [LumiaAlertValues.TIKTOK_FOLLOWER]: LumiaEventListTypes.FOLLOWER,
188
- [LumiaAlertValues.TIKTOK_LIKE]: LumiaEventListTypes.LIKES,
189
- [LumiaAlertValues.TIKTOK_TOTAL_LIKES]: LumiaEventListTypes.LIKES,
190
136
  [LumiaAlertValues.TIKTOK_GIFT]: LumiaEventListTypes.GIFTS,
191
137
  // TikTok Super Fan = paid membership (subscriber-equivalent). Super Fan
192
138
  // BOX is a separate gift-style event where a viewer receives a fan-only
@@ -194,20 +140,10 @@ export const LumiaMapAlertTypeToEventListType = {
194
140
  [LumiaAlertValues.TIKTOK_SUPER_FAN]: LumiaEventListTypes.SUBSCRIBERS,
195
141
  [LumiaAlertValues.TIKTOK_SUPER_FAN_BOX]: LumiaEventListTypes.GIFTS,
196
142
  [LumiaAlertValues.TIKTOK_TREASURE_CHEST]: LumiaEventListTypes.GIFTS,
197
- [LumiaAlertValues.TIKTOK_QUESTION]: LumiaEventListTypes.OTHERS,
198
- [LumiaAlertValues.TIKTOK_POLL]: LumiaEventListTypes.OTHERS,
199
143
  [LumiaAlertValues.TIKTOK_SHOP_PURCHASE]: LumiaEventListTypes.PURCHASES,
200
- [LumiaAlertValues.TIKTOK_PIN_MESSAGE]: LumiaEventListTypes.OTHERS,
201
- [LumiaAlertValues.TIKTOK_BATTLE_START]: LumiaEventListTypes.OTHERS,
202
- [LumiaAlertValues.TIKTOK_BATTLE_PROGRESS]: LumiaEventListTypes.OTHERS,
203
- [LumiaAlertValues.TIKTOK_BATTLE_END]: LumiaEventListTypes.OTHERS,
204
144
  [LumiaAlertValues.TIKTOK_SHARE]: LumiaEventListTypes.SHARES,
205
- [LumiaAlertValues.TIKTOK_STREAM_END]: LumiaEventListTypes.OTHERS,
206
- [LumiaAlertValues.TIKTOK_NEW_VIDEO]: LumiaEventListTypes.OTHERS,
207
145
  // --- Kick ---
208
146
  [LumiaAlertValues.KICK_POINTS]: LumiaEventListTypes.POINTS,
209
- [LumiaAlertValues.KICK_FIRST_CHATTER]: LumiaEventListTypes.OTHERS,
210
- [LumiaAlertValues.KICK_ENTRANCE]: LumiaEventListTypes.OTHERS,
211
147
  [LumiaAlertValues.KICK_FOLLOWER]: LumiaEventListTypes.FOLLOWER,
212
148
  [LumiaAlertValues.KICK_SESSION_FOLLOWERS]: LumiaEventListTypes.FOLLOWER,
213
149
  [LumiaAlertValues.KICK_SUBSCRIBER]: LumiaEventListTypes.SUBSCRIBERS,
@@ -217,11 +153,6 @@ export const LumiaMapAlertTypeToEventListType = {
217
153
  [LumiaAlertValues.KICK_KICKS]: LumiaEventListTypes.KICKS,
218
154
  [LumiaAlertValues.KICK_SESSION_KICKS]: LumiaEventListTypes.KICKS,
219
155
  [LumiaAlertValues.KICK_HOST]: LumiaEventListTypes.HOSTS,
220
- [LumiaAlertValues.KICK_BANNED]: LumiaEventListTypes.OTHERS,
221
- [LumiaAlertValues.KICK_UNBANNED]: LumiaEventListTypes.OTHERS,
222
- // --- Discord ---
223
- [LumiaAlertValues.DISCORD_FIRST_CHATTER]: LumiaEventListTypes.OTHERS,
224
- [LumiaAlertValues.DISCORD_ENTRANCE]: LumiaEventListTypes.OTHERS,
225
156
  // --- Third-party donation / commerce platforms ---
226
157
  [LumiaAlertValues.STREAMLABS_DONATION]: LumiaEventListTypes.DONATION,
227
158
  [LumiaAlertValues.STREAMLABS_CHARITY]: LumiaEventListTypes.DONATION,
@@ -237,9 +168,7 @@ export const LumiaMapAlertTypeToEventListType = {
237
168
  [LumiaAlertValues.TILTIFY_DONATION]: LumiaEventListTypes.DONATION,
238
169
  // Throne is a viewer wishlist platform — a "gift purchase" is a viewer
239
170
  // buying an item off the streamer's wishlist. Treat all three Throne
240
- // events as PURCHASES so they don't leak into the SUBSCRIBERS feed (the
241
- // historical bug: Throne was unmapped, which made the eventlist filter's
242
- // blacklist check silently pass on category-scoped widgets).
171
+ // events as PURCHASES so they don't leak into the SUBSCRIBERS feed.
243
172
  [LumiaAlertValues.THRONE_GIFT_PURCHASE]: LumiaEventListTypes.PURCHASES,
244
173
  [LumiaAlertValues.THRONE_CONTRIBUTION_PURCHASE]: LumiaEventListTypes.PURCHASES,
245
174
  [LumiaAlertValues.THRONE_GIFT_CROWDFUNDED]: LumiaEventListTypes.PURCHASES,
@@ -254,79 +183,207 @@ export const LumiaMapAlertTypeToEventListType = {
254
183
  [LumiaAlertValues.FOURTHWALL_DONATION]: LumiaEventListTypes.DONATION,
255
184
  [LumiaAlertValues.FOURTHWALL_SUBSCRIPTION]: LumiaEventListTypes.SUBSCRIBERS,
256
185
  [LumiaAlertValues.FOURTHWALL_SUBSCRIPTION_CHANGED]: LumiaEventListTypes.SUBSCRIBERS,
257
- // `SUBSCRIPTION_EXPIRED` is an admin notice that a sub lapsed — NOT a new
258
- // subscriber. Moving to OTHERS prevents stale "Recent Subscribers"
259
- // entries from showing canceled subs.
260
- [LumiaAlertValues.FOURTHWALL_SUBSCRIPTION_EXPIRED]: LumiaEventListTypes.OTHERS,
261
186
  [LumiaAlertValues.FOURTHWALL_GIFTPURCHASE]: LumiaEventListTypes.PURCHASES,
262
- // Giveaway lifecycle events are administrative (giveaway started/ended),
263
- // not actual gifts. Categorize as OTHERS; the Lumia raffle alerts have
264
- // the RAFFLE category for the winner side.
265
- [LumiaAlertValues.FOURTHWALL_GIVEAWAY_STARTED]: LumiaEventListTypes.OTHERS,
266
- [LumiaAlertValues.FOURTHWALL_GIVEAWAY_ENDED]: LumiaEventListTypes.OTHERS,
267
- [LumiaAlertValues.FOURTHWALL_THANKYOU_SENT]: LumiaEventListTypes.OTHERS,
268
- [LumiaAlertValues.FOURTHWALL_NEWSLETTER_SUBSCRIBED]: LumiaEventListTypes.OTHERS,
269
- // --- OBS Studio / Streamlabs OBS / Meld Studio ---
270
- // All broadcasting-app events are stream-management, never viewer-facing.
271
- [LumiaAlertValues.OBS_SWITCH_PROFILE]: LumiaEventListTypes.OTHERS,
272
- [LumiaAlertValues.OBS_SWITCH_SCENE]: LumiaEventListTypes.OTHERS,
273
- [LumiaAlertValues.OBS_SCENE_ITEM_VISIBILITY]: LumiaEventListTypes.OTHERS,
274
- [LumiaAlertValues.OBS_SCENE_ITEM_HIDDEN]: LumiaEventListTypes.OTHERS,
275
- [LumiaAlertValues.OBS_SWITCH_TRANSITION]: LumiaEventListTypes.OTHERS,
276
- [LumiaAlertValues.OBS_TRANSITION_BEGIN]: LumiaEventListTypes.OTHERS,
277
- [LumiaAlertValues.OBS_TRANSITION_END]: LumiaEventListTypes.OTHERS,
278
- [LumiaAlertValues.OBS_STREAM_STARTING]: LumiaEventListTypes.OTHERS,
279
- [LumiaAlertValues.OBS_STREAM_STOPPING]: LumiaEventListTypes.OTHERS,
280
- [LumiaAlertValues.OBS_RECORDING_STARTING]: LumiaEventListTypes.OTHERS,
281
- [LumiaAlertValues.OBS_RECORDING_STOPPING]: LumiaEventListTypes.OTHERS,
282
- [LumiaAlertValues.OBS_MEDIA_INPUT_PLAYBACK_STARTED]: LumiaEventListTypes.OTHERS,
283
- [LumiaAlertValues.OBS_MEDIA_INPUT_PLAYBACK_ENDED]: LumiaEventListTypes.OTHERS,
284
- [LumiaAlertValues.OBS_VIRTUALCAM_STATE_CHANGED]: LumiaEventListTypes.OTHERS,
285
- [LumiaAlertValues.OBS_SCREENSHOT_SAVED]: LumiaEventListTypes.OTHERS,
286
- [LumiaAlertValues.OBS_REPLAY_BUFFER_SAVED]: LumiaEventListTypes.OTHERS,
287
- [LumiaAlertValues.OBS_VERTICAL_BACKTRACK_SAVED]: LumiaEventListTypes.OTHERS,
288
- [LumiaAlertValues.OBS_VENDOR_EVENT]: LumiaEventListTypes.OTHERS,
289
- [LumiaAlertValues.SLOBS_SWITCH_SCENE_COLLECTION]: LumiaEventListTypes.OTHERS,
290
- [LumiaAlertValues.SLOBS_SWITCH_SCENE]: LumiaEventListTypes.OTHERS,
291
- [LumiaAlertValues.SLOBS_SCENE_ITEM_VISIBILITY]: LumiaEventListTypes.OTHERS,
292
- [LumiaAlertValues.SLOBS_SCENE_ITEM_HIDDEN]: LumiaEventListTypes.OTHERS,
293
- [LumiaAlertValues.MELD_STREAM_STARTING]: LumiaEventListTypes.OTHERS,
294
- [LumiaAlertValues.MELD_STREAM_STOPPING]: LumiaEventListTypes.OTHERS,
295
- [LumiaAlertValues.MELD_RECORDING_STARTING]: LumiaEventListTypes.OTHERS,
296
- [LumiaAlertValues.MELD_RECORDING_STOPPING]: LumiaEventListTypes.OTHERS,
297
- [LumiaAlertValues.MELD_SWITCH_SCENE]: LumiaEventListTypes.OTHERS,
298
- [LumiaAlertValues.MELD_SWITCH_VERTICAL_SCENE]: LumiaEventListTypes.OTHERS,
299
- // --- Music players (Spotify / YouTube Music / Now Playing / VLC) ---
300
- [LumiaAlertValues.SPOTIFY_SWITCH_SONG]: LumiaEventListTypes.OTHERS,
301
- [LumiaAlertValues.SPOTIFY_SONG_PLAYED]: LumiaEventListTypes.OTHERS,
302
- [LumiaAlertValues.SPOTIFY_SONG_PAUSED]: LumiaEventListTypes.OTHERS,
303
- [LumiaAlertValues.YOUTUBEMUSIC_SWITCH_SONG]: LumiaEventListTypes.OTHERS,
304
- [LumiaAlertValues.YOUTUBEMUSIC_SONG_PLAYED]: LumiaEventListTypes.OTHERS,
305
- [LumiaAlertValues.YOUTUBEMUSIC_SONG_PAUSED]: LumiaEventListTypes.OTHERS,
306
- [LumiaAlertValues.NOWPLAYING_SWITCH_SONG]: LumiaEventListTypes.OTHERS,
307
- [LumiaAlertValues.NOWPLAYING_SONG_PLAYED]: LumiaEventListTypes.OTHERS,
308
- [LumiaAlertValues.NOWPLAYING_SONG_PAUSED]: LumiaEventListTypes.OTHERS,
309
- [LumiaAlertValues.VLC_SWITCH_SONG]: LumiaEventListTypes.OTHERS,
310
- [LumiaAlertValues.VLC_SONG_PLAYED]: LumiaEventListTypes.OTHERS,
311
- [LumiaAlertValues.VLC_SONG_PAUSED]: LumiaEventListTypes.OTHERS,
312
- // --- Health / fitness ---
313
- [LumiaAlertValues.PULSE_HEARTRATE]: LumiaEventListTypes.OTHERS,
314
- [LumiaAlertValues.PULSE_CALORIES]: LumiaEventListTypes.OTHERS,
315
187
  // --- Social media (Twitter / X) ---
316
188
  [LumiaAlertValues.TWITTER_FOLLOWER]: LumiaEventListTypes.FOLLOWER,
317
- [LumiaAlertValues.TWITTER_LIKE]: LumiaEventListTypes.LIKES,
318
189
  [LumiaAlertValues.TWITTER_RETWEET]: LumiaEventListTypes.RETWEETS,
319
190
  // --- E-commerce ---
320
191
  [LumiaAlertValues.WOOCOMMERCE_ORDER]: LumiaEventListTypes.PURCHASES,
192
+ };
193
+ /**
194
+ * Alerts that should NOT appear in the eventlist's user-facing picker AND
195
+ * should NOT render in any eventlist feed. The invariant is:
196
+ *
197
+ * - Every `LumiaAlertValues` member must appear in EITHER
198
+ * `LumiaMapAlertTypeToEventListType` (mapped → visible in the picker
199
+ * and eventlist) OR in `AlertsToFilter` (hidden everywhere). Never
200
+ * both, never neither.
201
+ *
202
+ * Shared between LumiaStream (`EventCollection.ts` skips processing these
203
+ * to avoid spamming the event log, `EventListFilterPopover` hides them from
204
+ * the picker) and Overlay-UI (eventlist Manager picker hides them, eventlist
205
+ * component drops them at render). Was duplicated in both repos before
206
+ * being consolidated here.
207
+ *
208
+ * Grouped by source / platform. When adding a new alert to
209
+ * `LumiaAlertValues`, place it in EXACTLY ONE of the two lists. Default
210
+ * choice is `AlertsToFilter` (hidden) unless it's a viewer-facing event
211
+ * the eventlist should render.
212
+ */
213
+ export const AlertsToFilter = [
214
+ // --- Lumia Stream native ---
215
+ LumiaAlertValues.LUMIASTREAM_LUMIA_OPENED,
216
+ LumiaAlertValues.LUMIASTREAM_LUMIA_CLOSED,
217
+ LumiaAlertValues.LUMIASTREAM_STREAMMODE_ON,
218
+ LumiaAlertValues.LUMIASTREAM_STREAMMODE_OFF,
219
+ LumiaAlertValues.LUMIASTREAM_SPINWHEEL_WINNER,
220
+ LumiaAlertValues.LUMIASTREAM_RAFFLE_START,
221
+ LumiaAlertValues.LUMIASTREAM_RAFFLE_STOP,
222
+ LumiaAlertValues.LUMIASTREAM_RAFFLE_WINNER,
223
+ LumiaAlertValues.LUMIASTREAM_TOURNAMENT_START,
224
+ LumiaAlertValues.LUMIASTREAM_TOURNAMENT_END,
225
+ LumiaAlertValues.LUMIASTREAM_TOURNAMENT_WINNER,
226
+ LumiaAlertValues.LUMIASTREAM_POLL_STARTED,
227
+ LumiaAlertValues.LUMIASTREAM_POLL_PROGRESSED,
228
+ LumiaAlertValues.LUMIASTREAM_POLL_ENDED,
229
+ LumiaAlertValues.LUMIASTREAM_VIEWERQUEUE_STARTED,
230
+ LumiaAlertValues.LUMIASTREAM_VIEWERQUEUE_ENDED,
231
+ LumiaAlertValues.LUMIASTREAM_VIEWER_ACHIEVEMENT,
232
+ LumiaAlertValues.LUMIASTREAM_VARIABLE_CHANGED,
233
+ LumiaAlertValues.LUMIASTREAM_ROULETTE_WINNER,
234
+ LumiaAlertValues.LUMIASTREAM_SLOTS_WINNER,
235
+ // --- Twitch ---
236
+ LumiaAlertValues.TWITCH_STREAM_LIVE,
237
+ LumiaAlertValues.TWITCH_STREAM_OFFLINE,
238
+ LumiaAlertValues.TWITCH_ENTRANCE,
239
+ LumiaAlertValues.TWITCH_FIRST_CHATTER,
240
+ LumiaAlertValues.TWITCH_HYPETRAIN_PROGRESSED,
241
+ LumiaAlertValues.TWITCH_HYPETRAIN_LEVEL_PROGRESSED,
242
+ LumiaAlertValues.TWITCH_HYPETRAIN_ENDED,
243
+ LumiaAlertValues.TWITCH_REDEMPTION,
244
+ LumiaAlertValues.TWITCH_POLL_STARTED,
245
+ LumiaAlertValues.TWITCH_POLL_PROGRESSED,
246
+ LumiaAlertValues.TWITCH_POLL_ENDED,
247
+ LumiaAlertValues.TWITCH_PREDICTION_STARTED,
248
+ LumiaAlertValues.TWITCH_PREDICTION_PROGRESSED,
249
+ LumiaAlertValues.TWITCH_PREDICTION_LOCKED,
250
+ LumiaAlertValues.TWITCH_PREDICTION_ENDED,
251
+ LumiaAlertValues.TWITCH_GOAL_STARTED,
252
+ LumiaAlertValues.TWITCH_GOAL_PROGRESSED,
253
+ LumiaAlertValues.TWITCH_GOAL_ENDED,
254
+ LumiaAlertValues.TWITCH_CHARITY_CAMPAIGN_STARTED,
255
+ LumiaAlertValues.TWITCH_CHARITY_CAMPAIGN_PROGRESSED,
256
+ LumiaAlertValues.TWITCH_CHARITY_CAMPAIGN_STOPPED,
257
+ LumiaAlertValues.TWITCH_CATEGORY,
258
+ LumiaAlertValues.TWITCH_CLIP,
259
+ LumiaAlertValues.TWITCH_CHANNEL_JOIN,
260
+ LumiaAlertValues.TWITCH_CHANNEL_LEAVE,
261
+ LumiaAlertValues.TWITCH_BANNED,
262
+ LumiaAlertValues.TWITCH_TIMEOUT,
263
+ LumiaAlertValues.TWITCH_TIMEOUT_OVER,
264
+ LumiaAlertValues.TWITCH_SHOUTOUT_RECEIVE,
265
+ LumiaAlertValues.TWITCH_AD_STARTED,
266
+ LumiaAlertValues.TWITCH_AD_STOPPED,
267
+ LumiaAlertValues.TWITCH_WATCH_STREAK,
268
+ // --- YouTube ---
269
+ LumiaAlertValues.YOUTUBE_STREAM_LIVE,
270
+ LumiaAlertValues.YOUTUBE_STREAM_OFFLINE,
271
+ LumiaAlertValues.YOUTUBE_ENTRANCE,
272
+ LumiaAlertValues.YOUTUBE_FIRST_CHATTER,
273
+ LumiaAlertValues.YOUTUBE_LIKE,
274
+ LumiaAlertValues.YOUTUBE_VIEWERS,
275
+ // --- Facebook ---
276
+ LumiaAlertValues.FACEBOOK_STREAM_LIVE,
277
+ LumiaAlertValues.FACEBOOK_STREAM_OFFLINE,
278
+ LumiaAlertValues.FACEBOOK_ENTRANCE,
279
+ LumiaAlertValues.FACEBOOK_FIRST_CHATTER,
280
+ // --- TikTok ---
281
+ LumiaAlertValues.TIKTOK_STREAM_END,
282
+ LumiaAlertValues.TIKTOK_ENTRANCE,
283
+ LumiaAlertValues.TIKTOK_FIRST_CHATTER,
284
+ LumiaAlertValues.TIKTOK_NEW_VIDEO,
285
+ LumiaAlertValues.TIKTOK_TOTAL_LIKES,
286
+ LumiaAlertValues.TIKTOK_LIKE,
287
+ LumiaAlertValues.TIKTOK_QUESTION,
288
+ LumiaAlertValues.TIKTOK_POLL,
289
+ LumiaAlertValues.TIKTOK_PIN_MESSAGE,
290
+ LumiaAlertValues.TIKTOK_BATTLE_START,
291
+ LumiaAlertValues.TIKTOK_BATTLE_PROGRESS,
292
+ LumiaAlertValues.TIKTOK_BATTLE_END,
293
+ // --- Kick ---
294
+ LumiaAlertValues.KICK_ENTRANCE,
295
+ LumiaAlertValues.KICK_FIRST_CHATTER,
296
+ LumiaAlertValues.KICK_BANNED,
297
+ LumiaAlertValues.KICK_UNBANNED,
298
+ // --- Discord ---
299
+ LumiaAlertValues.DISCORD_FIRST_CHATTER,
300
+ LumiaAlertValues.DISCORD_ENTRANCE,
301
+ // --- Third-party (Fourthwall housekeeping) ---
302
+ LumiaAlertValues.FOURTHWALL_SUBSCRIPTION_EXPIRED,
303
+ LumiaAlertValues.FOURTHWALL_GIVEAWAY_STARTED,
304
+ LumiaAlertValues.FOURTHWALL_GIVEAWAY_ENDED,
305
+ LumiaAlertValues.FOURTHWALL_THANKYOU_SENT,
306
+ LumiaAlertValues.FOURTHWALL_NEWSLETTER_SUBSCRIBED,
307
+ // --- Broadcasting apps (OBS / SLOBS / Meld) ---
308
+ LumiaAlertValues.OBS_SWITCH_PROFILE,
309
+ LumiaAlertValues.OBS_SWITCH_SCENE,
310
+ LumiaAlertValues.OBS_SCENE_ITEM_VISIBILITY,
311
+ LumiaAlertValues.OBS_SCENE_ITEM_HIDDEN,
312
+ LumiaAlertValues.OBS_SWITCH_TRANSITION,
313
+ LumiaAlertValues.OBS_TRANSITION_BEGIN,
314
+ LumiaAlertValues.OBS_TRANSITION_END,
315
+ LumiaAlertValues.OBS_STREAM_STARTING,
316
+ LumiaAlertValues.OBS_STREAM_STOPPING,
317
+ LumiaAlertValues.OBS_RECORDING_STARTING,
318
+ LumiaAlertValues.OBS_RECORDING_STOPPING,
319
+ LumiaAlertValues.OBS_MEDIA_INPUT_PLAYBACK_STARTED,
320
+ LumiaAlertValues.OBS_MEDIA_INPUT_PLAYBACK_ENDED,
321
+ LumiaAlertValues.OBS_VIRTUALCAM_STATE_CHANGED,
322
+ LumiaAlertValues.OBS_SCREENSHOT_SAVED,
323
+ LumiaAlertValues.OBS_REPLAY_BUFFER_SAVED,
324
+ LumiaAlertValues.OBS_VERTICAL_BACKTRACK_SAVED,
325
+ LumiaAlertValues.OBS_VENDOR_EVENT,
326
+ LumiaAlertValues.SLOBS_SWITCH_SCENE_COLLECTION,
327
+ LumiaAlertValues.SLOBS_SWITCH_SCENE,
328
+ LumiaAlertValues.SLOBS_SCENE_ITEM_VISIBILITY,
329
+ LumiaAlertValues.SLOBS_SCENE_ITEM_HIDDEN,
330
+ LumiaAlertValues.MELD_STREAM_STARTING,
331
+ LumiaAlertValues.MELD_STREAM_STOPPING,
332
+ LumiaAlertValues.MELD_RECORDING_STARTING,
333
+ LumiaAlertValues.MELD_RECORDING_STOPPING,
334
+ LumiaAlertValues.MELD_SWITCH_SCENE,
335
+ LumiaAlertValues.MELD_SWITCH_VERTICAL_SCENE,
336
+ // --- Music players ---
337
+ LumiaAlertValues.SPOTIFY_SWITCH_SONG,
338
+ LumiaAlertValues.SPOTIFY_SONG_PLAYED,
339
+ LumiaAlertValues.SPOTIFY_SONG_PAUSED,
340
+ LumiaAlertValues.YOUTUBEMUSIC_SWITCH_SONG,
341
+ LumiaAlertValues.YOUTUBEMUSIC_SONG_PLAYED,
342
+ LumiaAlertValues.YOUTUBEMUSIC_SONG_PAUSED,
343
+ LumiaAlertValues.NOWPLAYING_SWITCH_SONG,
344
+ LumiaAlertValues.NOWPLAYING_SONG_PLAYED,
345
+ LumiaAlertValues.NOWPLAYING_SONG_PAUSED,
346
+ LumiaAlertValues.VLC_SWITCH_SONG,
347
+ LumiaAlertValues.VLC_SONG_PLAYED,
348
+ LumiaAlertValues.VLC_SONG_PAUSED,
349
+ // --- Health / fitness ---
350
+ LumiaAlertValues.PULSE_HEARTRATE,
351
+ LumiaAlertValues.PULSE_CALORIES,
352
+ // --- Social media ---
353
+ LumiaAlertValues.TWITTER_LIKE,
321
354
  // --- Other integrations ---
322
- [LumiaAlertValues.STREAMERBOT_ACTION]: LumiaEventListTypes.OTHERS,
323
- [LumiaAlertValues.CROWDCONTROL_EFFECT]: LumiaEventListTypes.OTHERS,
355
+ LumiaAlertValues.STREAMERBOT_ACTION,
356
+ LumiaAlertValues.CROWDCONTROL_EFFECT,
324
357
  // --- VTube Studio ---
325
- [LumiaAlertValues.VTUBESTUDIO_HOTKEY_TRIGGERED]: LumiaEventListTypes.OTHERS,
326
- [LumiaAlertValues.VTUBESTUDIO_MODEL_LOADED]: LumiaEventListTypes.OTHERS,
327
- [LumiaAlertValues.VTUBESTUDIO_ANIMATION_START]: LumiaEventListTypes.OTHERS,
328
- [LumiaAlertValues.VTUBESTUDIO_ANIMATION_END]: LumiaEventListTypes.OTHERS,
329
- [LumiaAlertValues.VTUBESTUDIO_ITEM_ADDED]: LumiaEventListTypes.OTHERS,
330
- [LumiaAlertValues.VTUBESTUDIO_ITEM_REMOVED]: LumiaEventListTypes.OTHERS,
331
- [LumiaAlertValues.VTUBESTUDIO_BACKGROUND_CHANGED]: LumiaEventListTypes.OTHERS,
332
- };
358
+ LumiaAlertValues.VTUBESTUDIO_HOTKEY_TRIGGERED,
359
+ LumiaAlertValues.VTUBESTUDIO_MODEL_LOADED,
360
+ LumiaAlertValues.VTUBESTUDIO_ANIMATION_START,
361
+ LumiaAlertValues.VTUBESTUDIO_ANIMATION_END,
362
+ LumiaAlertValues.VTUBESTUDIO_ITEM_ADDED,
363
+ LumiaAlertValues.VTUBESTUDIO_ITEM_REMOVED,
364
+ LumiaAlertValues.VTUBESTUDIO_BACKGROUND_CHANGED,
365
+ ];
366
+ /**
367
+ * Platforms whose events should be hidden from the eventlist / event log
368
+ * processing pipeline. These are connections whose alerts are stream
369
+ * management or housekeeping (broadcasting apps, music players, health
370
+ * trackers, automation tools) rather than viewer-facing activity.
371
+ *
372
+ * Used by LumiaStream's `EventCollection.ts` to short-circuit processing
373
+ * before the event lands in the eventlist DB at all. Was duplicated in
374
+ * LumiaStream `Integrations.types.ts` before being consolidated here.
375
+ */
376
+ export const PlatformsToFilter = [
377
+ 'obs',
378
+ 'slobs',
379
+ 'meld',
380
+ 'paypal',
381
+ 'pulsoid',
382
+ 'hyperate',
383
+ 'spotify',
384
+ 'youtubemusic',
385
+ 'nowplaying',
386
+ 'vlc',
387
+ 'streamerbot',
388
+ 'vtubestudio',
389
+ ];
package/dist/esm/index.js CHANGED
@@ -1,7 +1,7 @@
1
1
  export { LumiaStreamingSites, LumiaActivityCommandTypes, LumiaExternalActivityCommandTypes, LumiaAlertValues, LumiaAlertFriendlyValues, LumiaActivityOriginTypes, LumiaActivityApiValueType, LumiaActivityNoValueTypes, LumiaActivityTestType, } from './activity.types.js';
2
2
  export { LumiaVariationConditions, LumiaVariationCurrency, VariationCurrencySymbol, LumiaRedemptionCurrency, LumiaRedemptionCurrencySymbol, LumiaAlertConfigs, } from './alert.types.js';
3
3
  export { LumiaIntegrations, LumiaEventTypes, } from './event.types.js';
4
- export { LumiaEventListTypes, LumiaMapAlertTypeToEventListType } from './eventlist.types.js';
4
+ export { LumiaEventListTypes, LumiaMapAlertTypeToEventListType, AlertsToFilter, PlatformsToFilter } from './eventlist.types.js';
5
5
  export { SystemVariables, ReservedVariables, AllVariables, getAcceptedVariableName, getAcceptedVariableNames, } from './variables.types.js';
6
6
  export { formatCondition } from './helpers.js';
7
7
  export { KickKicksData } from './kick_kicks.js';
@@ -2,9 +2,15 @@ import { LumiaAlertValues } from './activity.types';
2
2
  /**
3
3
  * Eventlist categories. The eventlist module uses these as a *blacklist* via
4
4
  * `content.filters` — any category listed there is hidden from the rendered
5
- * feed (and so anything NOT listed is shown). `OTHERS` is the catch-all for
6
- * stream-management / administrative events that aren't tied to a viewer
7
- * action (poll progress, stream live/offline, OBS scene switches, etc.).
5
+ * feed (and so anything NOT listed is shown).
6
+ *
7
+ * Policy: every category here corresponds to a viewer-facing event class. We
8
+ * deliberately do NOT have an "others" catch-all category — alerts that exist
9
+ * only as stream-management / administrative signals (OBS scene switches,
10
+ * stream-live notices, music-player events, poll progress, etc.) are simply
11
+ * left out of `LumiaMapAlertTypeToEventListType` below. The eventlist
12
+ * component only renders MAPPED alerts, so unmapped alerts are silently
13
+ * excluded from every feed without needing a UI toggle.
8
14
  *
9
15
  * When adding a new value here, mirror it in:
10
16
  * - `ALL_LUMIA_EVENTLIST_CATEGORIES` in Lumia-UI's SE importer
@@ -35,33 +41,63 @@ export declare enum LumiaEventListTypes {
35
41
  STARS = "stars",
36
42
  FANS = "fans",
37
43
  SHARES = "shares",
38
- RAFFLE = "raffles",
39
- OTHERS = "others"
44
+ RAFFLE = "raffles"
40
45
  }
41
46
  /**
42
- * Categorization map from `LumiaAlertValues` → `LumiaEventListTypes`. Drives
43
- * eventlist filtering: an alert that's missing from this map is treated as
44
- * "unmapped" and will not be hidden by any category-based filter (it falls
45
- * through to OTHERS only if OTHERS is allowed). Historically this caused
46
- * unrelated alerts (e.g. Throne purchases) to leak into category-scoped
47
- * marquees like "Recent Subscribers", because the missing mapping made the
48
- * filtering logic's blacklist check pass.
47
+ * Categorization map from `LumiaAlertValues` → `LumiaEventListTypes`. The
48
+ * eventlist module ONLY renders alerts that appear in this map anything
49
+ * absent is silently excluded from every feed (no UI toggle to surface it).
49
50
  *
50
51
  * Policy:
51
- * - Every alert in `LumiaAlertValues` should appear here. If an alert isn't
52
- * viewer-facing (stream lifecycle, OBS/SLOBS/Meld events, music players,
53
- * VTube Studio, Pulse health, polls/predictions/goals progress) it maps
54
- * to OTHERS, never silently to a "real" category.
55
- * - Categorize by the *viewer's* intent, not the underlying payload shape.
56
- * A "subscription expired" event is administrative, not a new sub →
57
- * OTHERS, not SUBSCRIBERS. A giveaway-started notice is admin → OTHERS.
58
- * A Throne / Fourthwall shop gift purchase is a viewer buying something
59
- * for the streamer → PURCHASES.
52
+ * - Map only viewer-facing events. Stream-management / administrative
53
+ * signals (OBS / SLOBS / Meld scene switches, music-player events,
54
+ * poll/prediction/goal lifecycle, stream-live notices, channel
55
+ * join/leave, ad starts/stops, Pulse heartrate, etc.) are NOT mapped
56
+ * they don't belong in a viewer-facing activity feed and have no UI
57
+ * toggle to bring them in.
58
+ * - Categorize by the *viewer's* intent, not payload shape. A Throne /
59
+ * Fourthwall shop gift purchase is a viewer buying something for the
60
+ * streamer → PURCHASES. A subscription-expired notice is admin, not a
61
+ * new subscriber → omit entirely (was OTHERS, now unmapped).
60
62
  * - Session-counter alerts (e.g. TWITCH_SESSION_FOLLOWERS) mirror the
61
- * category of their per-event cousin (FOLLOWER) so a counter widget can
62
- * reuse the same category filter.
63
+ * category of their per-event cousin (FOLLOWER) so a counter widget
64
+ * can reuse the same category filter.
63
65
  *
64
66
  * Grouped by platform / source for review; ordering within groups follows
65
- * the enum declaration in `activity.types.ts`.
67
+ * the enum declaration in `activity.types.ts`. Alerts that previously
68
+ * mapped to OTHERS were removed in this revision and are now unmapped
69
+ * (purposefully hidden from all eventlists).
66
70
  */
67
71
  export declare const LumiaMapAlertTypeToEventListType: Partial<Record<LumiaAlertValues, LumiaEventListTypes>>;
72
+ /**
73
+ * Alerts that should NOT appear in the eventlist's user-facing picker AND
74
+ * should NOT render in any eventlist feed. The invariant is:
75
+ *
76
+ * - Every `LumiaAlertValues` member must appear in EITHER
77
+ * `LumiaMapAlertTypeToEventListType` (mapped → visible in the picker
78
+ * and eventlist) OR in `AlertsToFilter` (hidden everywhere). Never
79
+ * both, never neither.
80
+ *
81
+ * Shared between LumiaStream (`EventCollection.ts` skips processing these
82
+ * to avoid spamming the event log, `EventListFilterPopover` hides them from
83
+ * the picker) and Overlay-UI (eventlist Manager picker hides them, eventlist
84
+ * component drops them at render). Was duplicated in both repos before
85
+ * being consolidated here.
86
+ *
87
+ * Grouped by source / platform. When adding a new alert to
88
+ * `LumiaAlertValues`, place it in EXACTLY ONE of the two lists. Default
89
+ * choice is `AlertsToFilter` (hidden) unless it's a viewer-facing event
90
+ * the eventlist should render.
91
+ */
92
+ export declare const AlertsToFilter: LumiaAlertValues[];
93
+ /**
94
+ * Platforms whose events should be hidden from the eventlist / event log
95
+ * processing pipeline. These are connections whose alerts are stream
96
+ * management or housekeeping (broadcasting apps, music players, health
97
+ * trackers, automation tools) rather than viewer-facing activity.
98
+ *
99
+ * Used by LumiaStream's `EventCollection.ts` to short-circuit processing
100
+ * before the event lands in the eventlist DB at all. Was duplicated in
101
+ * LumiaStream `Integrations.types.ts` before being consolidated here.
102
+ */
103
+ export declare const PlatformsToFilter: string[];
@@ -1,13 +1,19 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.LumiaMapAlertTypeToEventListType = exports.LumiaEventListTypes = void 0;
3
+ exports.PlatformsToFilter = exports.AlertsToFilter = exports.LumiaMapAlertTypeToEventListType = exports.LumiaEventListTypes = void 0;
4
4
  const activity_types_1 = require("./activity.types");
5
5
  /**
6
6
  * Eventlist categories. The eventlist module uses these as a *blacklist* via
7
7
  * `content.filters` — any category listed there is hidden from the rendered
8
- * feed (and so anything NOT listed is shown). `OTHERS` is the catch-all for
9
- * stream-management / administrative events that aren't tied to a viewer
10
- * action (poll progress, stream live/offline, OBS scene switches, etc.).
8
+ * feed (and so anything NOT listed is shown).
9
+ *
10
+ * Policy: every category here corresponds to a viewer-facing event class. We
11
+ * deliberately do NOT have an "others" catch-all category — alerts that exist
12
+ * only as stream-management / administrative signals (OBS scene switches,
13
+ * stream-live notices, music-player events, poll progress, etc.) are simply
14
+ * left out of `LumiaMapAlertTypeToEventListType` below. The eventlist
15
+ * component only renders MAPPED alerts, so unmapped alerts are silently
16
+ * excluded from every feed without needing a UI toggle.
11
17
  *
12
18
  * When adding a new value here, mirror it in:
13
19
  * - `ALL_LUMIA_EVENTLIST_CATEGORIES` in Lumia-UI's SE importer
@@ -40,67 +46,41 @@ var LumiaEventListTypes;
40
46
  LumiaEventListTypes["FANS"] = "fans";
41
47
  LumiaEventListTypes["SHARES"] = "shares";
42
48
  LumiaEventListTypes["RAFFLE"] = "raffles";
43
- LumiaEventListTypes["OTHERS"] = "others";
44
49
  })(LumiaEventListTypes || (exports.LumiaEventListTypes = LumiaEventListTypes = {}));
45
50
  /**
46
- * Categorization map from `LumiaAlertValues` → `LumiaEventListTypes`. Drives
47
- * eventlist filtering: an alert that's missing from this map is treated as
48
- * "unmapped" and will not be hidden by any category-based filter (it falls
49
- * through to OTHERS only if OTHERS is allowed). Historically this caused
50
- * unrelated alerts (e.g. Throne purchases) to leak into category-scoped
51
- * marquees like "Recent Subscribers", because the missing mapping made the
52
- * filtering logic's blacklist check pass.
51
+ * Categorization map from `LumiaAlertValues` → `LumiaEventListTypes`. The
52
+ * eventlist module ONLY renders alerts that appear in this map anything
53
+ * absent is silently excluded from every feed (no UI toggle to surface it).
53
54
  *
54
55
  * Policy:
55
- * - Every alert in `LumiaAlertValues` should appear here. If an alert isn't
56
- * viewer-facing (stream lifecycle, OBS/SLOBS/Meld events, music players,
57
- * VTube Studio, Pulse health, polls/predictions/goals progress) it maps
58
- * to OTHERS, never silently to a "real" category.
59
- * - Categorize by the *viewer's* intent, not the underlying payload shape.
60
- * A "subscription expired" event is administrative, not a new sub →
61
- * OTHERS, not SUBSCRIBERS. A giveaway-started notice is admin → OTHERS.
62
- * A Throne / Fourthwall shop gift purchase is a viewer buying something
63
- * for the streamer → PURCHASES.
56
+ * - Map only viewer-facing events. Stream-management / administrative
57
+ * signals (OBS / SLOBS / Meld scene switches, music-player events,
58
+ * poll/prediction/goal lifecycle, stream-live notices, channel
59
+ * join/leave, ad starts/stops, Pulse heartrate, etc.) are NOT mapped
60
+ * they don't belong in a viewer-facing activity feed and have no UI
61
+ * toggle to bring them in.
62
+ * - Categorize by the *viewer's* intent, not payload shape. A Throne /
63
+ * Fourthwall shop gift purchase is a viewer buying something for the
64
+ * streamer → PURCHASES. A subscription-expired notice is admin, not a
65
+ * new subscriber → omit entirely (was OTHERS, now unmapped).
64
66
  * - Session-counter alerts (e.g. TWITCH_SESSION_FOLLOWERS) mirror the
65
- * category of their per-event cousin (FOLLOWER) so a counter widget can
66
- * reuse the same category filter.
67
+ * category of their per-event cousin (FOLLOWER) so a counter widget
68
+ * can reuse the same category filter.
67
69
  *
68
70
  * Grouped by platform / source for review; ordering within groups follows
69
- * the enum declaration in `activity.types.ts`.
71
+ * the enum declaration in `activity.types.ts`. Alerts that previously
72
+ * mapped to OTHERS were removed in this revision and are now unmapped
73
+ * (purposefully hidden from all eventlists).
70
74
  */
71
75
  exports.LumiaMapAlertTypeToEventListType = {
72
76
  // --- Lumia Stream native ---
73
77
  [activity_types_1.LumiaAlertValues.LUMIASTREAM_DONATION]: LumiaEventListTypes.DONATION,
74
- [activity_types_1.LumiaAlertValues.LUMIASTREAM_LUMIA_OPENED]: LumiaEventListTypes.OTHERS,
75
- [activity_types_1.LumiaAlertValues.LUMIASTREAM_LUMIA_CLOSED]: LumiaEventListTypes.OTHERS,
76
- [activity_types_1.LumiaAlertValues.LUMIASTREAM_STREAMMODE_ON]: LumiaEventListTypes.OTHERS,
77
- [activity_types_1.LumiaAlertValues.LUMIASTREAM_STREAMMODE_OFF]: LumiaEventListTypes.OTHERS,
78
- [activity_types_1.LumiaAlertValues.LUMIASTREAM_RAFFLE_START]: LumiaEventListTypes.RAFFLE,
79
- [activity_types_1.LumiaAlertValues.LUMIASTREAM_RAFFLE_STOP]: LumiaEventListTypes.RAFFLE,
80
- [activity_types_1.LumiaAlertValues.LUMIASTREAM_RAFFLE_WINNER]: LumiaEventListTypes.RAFFLE,
81
- // Spinwheel / Roulette / Slots winners are giveaway-style outcomes —
82
- // align them with the RAFFLE category so a "Recent Giveaways" widget
83
- // can pick them up alongside actual raffles.
84
- [activity_types_1.LumiaAlertValues.LUMIASTREAM_SPINWHEEL_WINNER]: LumiaEventListTypes.RAFFLE,
85
- [activity_types_1.LumiaAlertValues.LUMIASTREAM_ROULETTE_WINNER]: LumiaEventListTypes.RAFFLE,
86
- [activity_types_1.LumiaAlertValues.LUMIASTREAM_SLOTS_WINNER]: LumiaEventListTypes.RAFFLE,
87
- [activity_types_1.LumiaAlertValues.LUMIASTREAM_TOURNAMENT_START]: LumiaEventListTypes.OTHERS,
88
- [activity_types_1.LumiaAlertValues.LUMIASTREAM_TOURNAMENT_END]: LumiaEventListTypes.OTHERS,
89
- [activity_types_1.LumiaAlertValues.LUMIASTREAM_TOURNAMENT_WINNER]: LumiaEventListTypes.OTHERS,
90
- [activity_types_1.LumiaAlertValues.LUMIASTREAM_POLL_STARTED]: LumiaEventListTypes.OTHERS,
91
- [activity_types_1.LumiaAlertValues.LUMIASTREAM_POLL_PROGRESSED]: LumiaEventListTypes.OTHERS,
92
- [activity_types_1.LumiaAlertValues.LUMIASTREAM_POLL_ENDED]: LumiaEventListTypes.OTHERS,
93
- [activity_types_1.LumiaAlertValues.LUMIASTREAM_VIEWERQUEUE_STARTED]: LumiaEventListTypes.OTHERS,
94
- [activity_types_1.LumiaAlertValues.LUMIASTREAM_VIEWERQUEUE_ENDED]: LumiaEventListTypes.OTHERS,
95
- [activity_types_1.LumiaAlertValues.LUMIASTREAM_VIEWER_ACHIEVEMENT]: LumiaEventListTypes.OTHERS,
96
- [activity_types_1.LumiaAlertValues.LUMIASTREAM_VARIABLE_CHANGED]: LumiaEventListTypes.OTHERS,
78
+ // Raffle / spinwheel / roulette / slots winners are explicitly hidden via
79
+ // `AlertsToFilter` below — they're stream-side games, not viewer-facing
80
+ // activity feed events.
97
81
  // --- Twitch ---
98
82
  [activity_types_1.LumiaAlertValues.TWITCH_EXTENSION]: LumiaEventListTypes.EXTENSION,
99
83
  [activity_types_1.LumiaAlertValues.TWITCH_POINTS]: LumiaEventListTypes.POINTS,
100
- [activity_types_1.LumiaAlertValues.TWITCH_STREAM_LIVE]: LumiaEventListTypes.OTHERS,
101
- [activity_types_1.LumiaAlertValues.TWITCH_STREAM_OFFLINE]: LumiaEventListTypes.OTHERS,
102
- [activity_types_1.LumiaAlertValues.TWITCH_FIRST_CHATTER]: LumiaEventListTypes.OTHERS,
103
- [activity_types_1.LumiaAlertValues.TWITCH_ENTRANCE]: LumiaEventListTypes.OTHERS,
104
84
  [activity_types_1.LumiaAlertValues.TWITCH_FOLLOWER]: LumiaEventListTypes.FOLLOWER,
105
85
  [activity_types_1.LumiaAlertValues.TWITCH_SESSION_FOLLOWERS]: LumiaEventListTypes.FOLLOWER,
106
86
  [activity_types_1.LumiaAlertValues.TWITCH_SUBSCRIBER]: LumiaEventListTypes.SUBSCRIBERS,
@@ -112,46 +92,19 @@ exports.LumiaMapAlertTypeToEventListType = {
112
92
  [activity_types_1.LumiaAlertValues.TWITCH_BITS]: LumiaEventListTypes.BITS,
113
93
  [activity_types_1.LumiaAlertValues.TWITCH_BITS_COMBO]: LumiaEventListTypes.BITS,
114
94
  [activity_types_1.LumiaAlertValues.TWITCH_SESSION_BITS]: LumiaEventListTypes.BITS,
115
- // Channel-point redemptions used to be miscategorized as PURCHASES on the
116
- // Streamlabs alert; REDEMPTION is the dedicated category for this event
117
- // shape and is what category-filtered widgets should target.
118
- [activity_types_1.LumiaAlertValues.TWITCH_REDEMPTION]: LumiaEventListTypes.REDEMPTION,
95
+ // TWITCH_REDEMPTION is explicitly hidden via `AlertsToFilter` its
96
+ // payload is too channel-points-specific for a generic activity feed.
97
+ // Streamlabs Redemption (loyalty points) is in the REDEMPTION category
98
+ // below if that semantic is needed.
119
99
  [activity_types_1.LumiaAlertValues.TWITCH_HYPETRAIN_STARTED]: LumiaEventListTypes.HYPETRAIN,
120
- [activity_types_1.LumiaAlertValues.TWITCH_HYPETRAIN_PROGRESSED]: LumiaEventListTypes.HYPETRAIN,
121
- [activity_types_1.LumiaAlertValues.TWITCH_HYPETRAIN_LEVEL_PROGRESSED]: LumiaEventListTypes.HYPETRAIN,
122
- [activity_types_1.LumiaAlertValues.TWITCH_HYPETRAIN_ENDED]: LumiaEventListTypes.HYPETRAIN,
123
- [activity_types_1.LumiaAlertValues.TWITCH_POLL_STARTED]: LumiaEventListTypes.OTHERS,
124
- [activity_types_1.LumiaAlertValues.TWITCH_POLL_PROGRESSED]: LumiaEventListTypes.OTHERS,
125
- [activity_types_1.LumiaAlertValues.TWITCH_POLL_ENDED]: LumiaEventListTypes.OTHERS,
126
- [activity_types_1.LumiaAlertValues.TWITCH_PREDICTION_STARTED]: LumiaEventListTypes.OTHERS,
127
- [activity_types_1.LumiaAlertValues.TWITCH_PREDICTION_PROGRESSED]: LumiaEventListTypes.OTHERS,
128
- [activity_types_1.LumiaAlertValues.TWITCH_PREDICTION_LOCKED]: LumiaEventListTypes.OTHERS,
129
- [activity_types_1.LumiaAlertValues.TWITCH_PREDICTION_ENDED]: LumiaEventListTypes.OTHERS,
130
- [activity_types_1.LumiaAlertValues.TWITCH_GOAL_STARTED]: LumiaEventListTypes.OTHERS,
131
- [activity_types_1.LumiaAlertValues.TWITCH_GOAL_PROGRESSED]: LumiaEventListTypes.OTHERS,
132
- [activity_types_1.LumiaAlertValues.TWITCH_GOAL_ENDED]: LumiaEventListTypes.OTHERS,
100
+ // HYPETRAIN_PROGRESSED / LEVEL_PROGRESSED / ENDED are hidden via
101
+ // `AlertsToFilter` — only the STARTED event reads as a real "event" in
102
+ // the feed; the rest are progress ticks the streamer doesn't want
103
+ // cluttering things.
133
104
  [activity_types_1.LumiaAlertValues.TWITCH_CHARITY_DONATION]: LumiaEventListTypes.DONATION,
134
- [activity_types_1.LumiaAlertValues.TWITCH_CHARITY_CAMPAIGN_STARTED]: LumiaEventListTypes.OTHERS,
135
- [activity_types_1.LumiaAlertValues.TWITCH_CHARITY_CAMPAIGN_PROGRESSED]: LumiaEventListTypes.OTHERS,
136
- [activity_types_1.LumiaAlertValues.TWITCH_CHARITY_CAMPAIGN_STOPPED]: LumiaEventListTypes.OTHERS,
137
- [activity_types_1.LumiaAlertValues.TWITCH_CATEGORY]: LumiaEventListTypes.OTHERS,
138
- [activity_types_1.LumiaAlertValues.TWITCH_CLIP]: LumiaEventListTypes.OTHERS,
139
- [activity_types_1.LumiaAlertValues.TWITCH_CHANNEL_JOIN]: LumiaEventListTypes.OTHERS,
140
- [activity_types_1.LumiaAlertValues.TWITCH_CHANNEL_LEAVE]: LumiaEventListTypes.OTHERS,
141
- [activity_types_1.LumiaAlertValues.TWITCH_BANNED]: LumiaEventListTypes.OTHERS,
142
- [activity_types_1.LumiaAlertValues.TWITCH_TIMEOUT]: LumiaEventListTypes.OTHERS,
143
- [activity_types_1.LumiaAlertValues.TWITCH_TIMEOUT_OVER]: LumiaEventListTypes.OTHERS,
144
- [activity_types_1.LumiaAlertValues.TWITCH_SHOUTOUT_RECEIVE]: LumiaEventListTypes.OTHERS,
145
- [activity_types_1.LumiaAlertValues.TWITCH_AD_STARTED]: LumiaEventListTypes.OTHERS,
146
- [activity_types_1.LumiaAlertValues.TWITCH_AD_STOPPED]: LumiaEventListTypes.OTHERS,
147
- [activity_types_1.LumiaAlertValues.TWITCH_WATCH_STREAK]: LumiaEventListTypes.OTHERS,
148
105
  [activity_types_1.LumiaAlertValues.TWITCH_POWERUPS]: LumiaEventListTypes.BITS,
149
106
  [activity_types_1.LumiaAlertValues.TWITCH_POWERUPS_POINTS]: LumiaEventListTypes.POINTS,
150
107
  // --- YouTube ---
151
- [activity_types_1.LumiaAlertValues.YOUTUBE_STREAM_LIVE]: LumiaEventListTypes.OTHERS,
152
- [activity_types_1.LumiaAlertValues.YOUTUBE_STREAM_OFFLINE]: LumiaEventListTypes.OTHERS,
153
- [activity_types_1.LumiaAlertValues.YOUTUBE_FIRST_CHATTER]: LumiaEventListTypes.OTHERS,
154
- [activity_types_1.LumiaAlertValues.YOUTUBE_ENTRANCE]: LumiaEventListTypes.OTHERS,
155
108
  // YouTube "subscribers" are free follows in YT-speak — categorize as
156
109
  // FOLLOWER so a "Recent Followers" widget unifies Twitch follows + YT
157
110
  // subs. Paid memberships are categorized as SUBSCRIBERS below.
@@ -167,13 +120,10 @@ exports.LumiaMapAlertTypeToEventListType = {
167
120
  [activity_types_1.LumiaAlertValues.YOUTUBE_SESSION_SUPERSTICKERS]: LumiaEventListTypes.SUPERSTICKERS,
168
121
  [activity_types_1.LumiaAlertValues.YOUTUBE_GIFTS]: LumiaEventListTypes.GIFTS,
169
122
  [activity_types_1.LumiaAlertValues.YOUTUBE_SESSION_GIFTS]: LumiaEventListTypes.GIFTS,
170
- [activity_types_1.LumiaAlertValues.YOUTUBE_LIKE]: LumiaEventListTypes.LIKES,
171
- [activity_types_1.LumiaAlertValues.YOUTUBE_VIEWERS]: LumiaEventListTypes.OTHERS,
123
+ // YOUTUBE_LIKE / TIKTOK_LIKE / TIKTOK_TOTAL_LIKES / TWITTER_LIKE are
124
+ // hidden via `AlertsToFilter` — likes are too frequent / noisy for a
125
+ // recent-activity feed.
172
126
  // --- Facebook ---
173
- [activity_types_1.LumiaAlertValues.FACEBOOK_STREAM_LIVE]: LumiaEventListTypes.OTHERS,
174
- [activity_types_1.LumiaAlertValues.FACEBOOK_STREAM_OFFLINE]: LumiaEventListTypes.OTHERS,
175
- [activity_types_1.LumiaAlertValues.FACEBOOK_FIRST_CHATTER]: LumiaEventListTypes.OTHERS,
176
- [activity_types_1.LumiaAlertValues.FACEBOOK_ENTRANCE]: LumiaEventListTypes.OTHERS,
177
127
  [activity_types_1.LumiaAlertValues.FACEBOOK_FOLLOWER]: LumiaEventListTypes.FOLLOWER,
178
128
  [activity_types_1.LumiaAlertValues.FACEBOOK_REACTION]: LumiaEventListTypes.LIKES,
179
129
  [activity_types_1.LumiaAlertValues.FACEBOOK_STAR]: LumiaEventListTypes.STARS,
@@ -185,11 +135,7 @@ exports.LumiaMapAlertTypeToEventListType = {
185
135
  [activity_types_1.LumiaAlertValues.FACEBOOK_SHARE]: LumiaEventListTypes.SHARES,
186
136
  [activity_types_1.LumiaAlertValues.FACEBOOK_FAN]: LumiaEventListTypes.FANS,
187
137
  // --- TikTok ---
188
- [activity_types_1.LumiaAlertValues.TIKTOK_FIRST_CHATTER]: LumiaEventListTypes.OTHERS,
189
- [activity_types_1.LumiaAlertValues.TIKTOK_ENTRANCE]: LumiaEventListTypes.OTHERS,
190
138
  [activity_types_1.LumiaAlertValues.TIKTOK_FOLLOWER]: LumiaEventListTypes.FOLLOWER,
191
- [activity_types_1.LumiaAlertValues.TIKTOK_LIKE]: LumiaEventListTypes.LIKES,
192
- [activity_types_1.LumiaAlertValues.TIKTOK_TOTAL_LIKES]: LumiaEventListTypes.LIKES,
193
139
  [activity_types_1.LumiaAlertValues.TIKTOK_GIFT]: LumiaEventListTypes.GIFTS,
194
140
  // TikTok Super Fan = paid membership (subscriber-equivalent). Super Fan
195
141
  // BOX is a separate gift-style event where a viewer receives a fan-only
@@ -197,20 +143,10 @@ exports.LumiaMapAlertTypeToEventListType = {
197
143
  [activity_types_1.LumiaAlertValues.TIKTOK_SUPER_FAN]: LumiaEventListTypes.SUBSCRIBERS,
198
144
  [activity_types_1.LumiaAlertValues.TIKTOK_SUPER_FAN_BOX]: LumiaEventListTypes.GIFTS,
199
145
  [activity_types_1.LumiaAlertValues.TIKTOK_TREASURE_CHEST]: LumiaEventListTypes.GIFTS,
200
- [activity_types_1.LumiaAlertValues.TIKTOK_QUESTION]: LumiaEventListTypes.OTHERS,
201
- [activity_types_1.LumiaAlertValues.TIKTOK_POLL]: LumiaEventListTypes.OTHERS,
202
146
  [activity_types_1.LumiaAlertValues.TIKTOK_SHOP_PURCHASE]: LumiaEventListTypes.PURCHASES,
203
- [activity_types_1.LumiaAlertValues.TIKTOK_PIN_MESSAGE]: LumiaEventListTypes.OTHERS,
204
- [activity_types_1.LumiaAlertValues.TIKTOK_BATTLE_START]: LumiaEventListTypes.OTHERS,
205
- [activity_types_1.LumiaAlertValues.TIKTOK_BATTLE_PROGRESS]: LumiaEventListTypes.OTHERS,
206
- [activity_types_1.LumiaAlertValues.TIKTOK_BATTLE_END]: LumiaEventListTypes.OTHERS,
207
147
  [activity_types_1.LumiaAlertValues.TIKTOK_SHARE]: LumiaEventListTypes.SHARES,
208
- [activity_types_1.LumiaAlertValues.TIKTOK_STREAM_END]: LumiaEventListTypes.OTHERS,
209
- [activity_types_1.LumiaAlertValues.TIKTOK_NEW_VIDEO]: LumiaEventListTypes.OTHERS,
210
148
  // --- Kick ---
211
149
  [activity_types_1.LumiaAlertValues.KICK_POINTS]: LumiaEventListTypes.POINTS,
212
- [activity_types_1.LumiaAlertValues.KICK_FIRST_CHATTER]: LumiaEventListTypes.OTHERS,
213
- [activity_types_1.LumiaAlertValues.KICK_ENTRANCE]: LumiaEventListTypes.OTHERS,
214
150
  [activity_types_1.LumiaAlertValues.KICK_FOLLOWER]: LumiaEventListTypes.FOLLOWER,
215
151
  [activity_types_1.LumiaAlertValues.KICK_SESSION_FOLLOWERS]: LumiaEventListTypes.FOLLOWER,
216
152
  [activity_types_1.LumiaAlertValues.KICK_SUBSCRIBER]: LumiaEventListTypes.SUBSCRIBERS,
@@ -220,11 +156,6 @@ exports.LumiaMapAlertTypeToEventListType = {
220
156
  [activity_types_1.LumiaAlertValues.KICK_KICKS]: LumiaEventListTypes.KICKS,
221
157
  [activity_types_1.LumiaAlertValues.KICK_SESSION_KICKS]: LumiaEventListTypes.KICKS,
222
158
  [activity_types_1.LumiaAlertValues.KICK_HOST]: LumiaEventListTypes.HOSTS,
223
- [activity_types_1.LumiaAlertValues.KICK_BANNED]: LumiaEventListTypes.OTHERS,
224
- [activity_types_1.LumiaAlertValues.KICK_UNBANNED]: LumiaEventListTypes.OTHERS,
225
- // --- Discord ---
226
- [activity_types_1.LumiaAlertValues.DISCORD_FIRST_CHATTER]: LumiaEventListTypes.OTHERS,
227
- [activity_types_1.LumiaAlertValues.DISCORD_ENTRANCE]: LumiaEventListTypes.OTHERS,
228
159
  // --- Third-party donation / commerce platforms ---
229
160
  [activity_types_1.LumiaAlertValues.STREAMLABS_DONATION]: LumiaEventListTypes.DONATION,
230
161
  [activity_types_1.LumiaAlertValues.STREAMLABS_CHARITY]: LumiaEventListTypes.DONATION,
@@ -240,9 +171,7 @@ exports.LumiaMapAlertTypeToEventListType = {
240
171
  [activity_types_1.LumiaAlertValues.TILTIFY_DONATION]: LumiaEventListTypes.DONATION,
241
172
  // Throne is a viewer wishlist platform — a "gift purchase" is a viewer
242
173
  // buying an item off the streamer's wishlist. Treat all three Throne
243
- // events as PURCHASES so they don't leak into the SUBSCRIBERS feed (the
244
- // historical bug: Throne was unmapped, which made the eventlist filter's
245
- // blacklist check silently pass on category-scoped widgets).
174
+ // events as PURCHASES so they don't leak into the SUBSCRIBERS feed.
246
175
  [activity_types_1.LumiaAlertValues.THRONE_GIFT_PURCHASE]: LumiaEventListTypes.PURCHASES,
247
176
  [activity_types_1.LumiaAlertValues.THRONE_CONTRIBUTION_PURCHASE]: LumiaEventListTypes.PURCHASES,
248
177
  [activity_types_1.LumiaAlertValues.THRONE_GIFT_CROWDFUNDED]: LumiaEventListTypes.PURCHASES,
@@ -257,79 +186,207 @@ exports.LumiaMapAlertTypeToEventListType = {
257
186
  [activity_types_1.LumiaAlertValues.FOURTHWALL_DONATION]: LumiaEventListTypes.DONATION,
258
187
  [activity_types_1.LumiaAlertValues.FOURTHWALL_SUBSCRIPTION]: LumiaEventListTypes.SUBSCRIBERS,
259
188
  [activity_types_1.LumiaAlertValues.FOURTHWALL_SUBSCRIPTION_CHANGED]: LumiaEventListTypes.SUBSCRIBERS,
260
- // `SUBSCRIPTION_EXPIRED` is an admin notice that a sub lapsed — NOT a new
261
- // subscriber. Moving to OTHERS prevents stale "Recent Subscribers"
262
- // entries from showing canceled subs.
263
- [activity_types_1.LumiaAlertValues.FOURTHWALL_SUBSCRIPTION_EXPIRED]: LumiaEventListTypes.OTHERS,
264
189
  [activity_types_1.LumiaAlertValues.FOURTHWALL_GIFTPURCHASE]: LumiaEventListTypes.PURCHASES,
265
- // Giveaway lifecycle events are administrative (giveaway started/ended),
266
- // not actual gifts. Categorize as OTHERS; the Lumia raffle alerts have
267
- // the RAFFLE category for the winner side.
268
- [activity_types_1.LumiaAlertValues.FOURTHWALL_GIVEAWAY_STARTED]: LumiaEventListTypes.OTHERS,
269
- [activity_types_1.LumiaAlertValues.FOURTHWALL_GIVEAWAY_ENDED]: LumiaEventListTypes.OTHERS,
270
- [activity_types_1.LumiaAlertValues.FOURTHWALL_THANKYOU_SENT]: LumiaEventListTypes.OTHERS,
271
- [activity_types_1.LumiaAlertValues.FOURTHWALL_NEWSLETTER_SUBSCRIBED]: LumiaEventListTypes.OTHERS,
272
- // --- OBS Studio / Streamlabs OBS / Meld Studio ---
273
- // All broadcasting-app events are stream-management, never viewer-facing.
274
- [activity_types_1.LumiaAlertValues.OBS_SWITCH_PROFILE]: LumiaEventListTypes.OTHERS,
275
- [activity_types_1.LumiaAlertValues.OBS_SWITCH_SCENE]: LumiaEventListTypes.OTHERS,
276
- [activity_types_1.LumiaAlertValues.OBS_SCENE_ITEM_VISIBILITY]: LumiaEventListTypes.OTHERS,
277
- [activity_types_1.LumiaAlertValues.OBS_SCENE_ITEM_HIDDEN]: LumiaEventListTypes.OTHERS,
278
- [activity_types_1.LumiaAlertValues.OBS_SWITCH_TRANSITION]: LumiaEventListTypes.OTHERS,
279
- [activity_types_1.LumiaAlertValues.OBS_TRANSITION_BEGIN]: LumiaEventListTypes.OTHERS,
280
- [activity_types_1.LumiaAlertValues.OBS_TRANSITION_END]: LumiaEventListTypes.OTHERS,
281
- [activity_types_1.LumiaAlertValues.OBS_STREAM_STARTING]: LumiaEventListTypes.OTHERS,
282
- [activity_types_1.LumiaAlertValues.OBS_STREAM_STOPPING]: LumiaEventListTypes.OTHERS,
283
- [activity_types_1.LumiaAlertValues.OBS_RECORDING_STARTING]: LumiaEventListTypes.OTHERS,
284
- [activity_types_1.LumiaAlertValues.OBS_RECORDING_STOPPING]: LumiaEventListTypes.OTHERS,
285
- [activity_types_1.LumiaAlertValues.OBS_MEDIA_INPUT_PLAYBACK_STARTED]: LumiaEventListTypes.OTHERS,
286
- [activity_types_1.LumiaAlertValues.OBS_MEDIA_INPUT_PLAYBACK_ENDED]: LumiaEventListTypes.OTHERS,
287
- [activity_types_1.LumiaAlertValues.OBS_VIRTUALCAM_STATE_CHANGED]: LumiaEventListTypes.OTHERS,
288
- [activity_types_1.LumiaAlertValues.OBS_SCREENSHOT_SAVED]: LumiaEventListTypes.OTHERS,
289
- [activity_types_1.LumiaAlertValues.OBS_REPLAY_BUFFER_SAVED]: LumiaEventListTypes.OTHERS,
290
- [activity_types_1.LumiaAlertValues.OBS_VERTICAL_BACKTRACK_SAVED]: LumiaEventListTypes.OTHERS,
291
- [activity_types_1.LumiaAlertValues.OBS_VENDOR_EVENT]: LumiaEventListTypes.OTHERS,
292
- [activity_types_1.LumiaAlertValues.SLOBS_SWITCH_SCENE_COLLECTION]: LumiaEventListTypes.OTHERS,
293
- [activity_types_1.LumiaAlertValues.SLOBS_SWITCH_SCENE]: LumiaEventListTypes.OTHERS,
294
- [activity_types_1.LumiaAlertValues.SLOBS_SCENE_ITEM_VISIBILITY]: LumiaEventListTypes.OTHERS,
295
- [activity_types_1.LumiaAlertValues.SLOBS_SCENE_ITEM_HIDDEN]: LumiaEventListTypes.OTHERS,
296
- [activity_types_1.LumiaAlertValues.MELD_STREAM_STARTING]: LumiaEventListTypes.OTHERS,
297
- [activity_types_1.LumiaAlertValues.MELD_STREAM_STOPPING]: LumiaEventListTypes.OTHERS,
298
- [activity_types_1.LumiaAlertValues.MELD_RECORDING_STARTING]: LumiaEventListTypes.OTHERS,
299
- [activity_types_1.LumiaAlertValues.MELD_RECORDING_STOPPING]: LumiaEventListTypes.OTHERS,
300
- [activity_types_1.LumiaAlertValues.MELD_SWITCH_SCENE]: LumiaEventListTypes.OTHERS,
301
- [activity_types_1.LumiaAlertValues.MELD_SWITCH_VERTICAL_SCENE]: LumiaEventListTypes.OTHERS,
302
- // --- Music players (Spotify / YouTube Music / Now Playing / VLC) ---
303
- [activity_types_1.LumiaAlertValues.SPOTIFY_SWITCH_SONG]: LumiaEventListTypes.OTHERS,
304
- [activity_types_1.LumiaAlertValues.SPOTIFY_SONG_PLAYED]: LumiaEventListTypes.OTHERS,
305
- [activity_types_1.LumiaAlertValues.SPOTIFY_SONG_PAUSED]: LumiaEventListTypes.OTHERS,
306
- [activity_types_1.LumiaAlertValues.YOUTUBEMUSIC_SWITCH_SONG]: LumiaEventListTypes.OTHERS,
307
- [activity_types_1.LumiaAlertValues.YOUTUBEMUSIC_SONG_PLAYED]: LumiaEventListTypes.OTHERS,
308
- [activity_types_1.LumiaAlertValues.YOUTUBEMUSIC_SONG_PAUSED]: LumiaEventListTypes.OTHERS,
309
- [activity_types_1.LumiaAlertValues.NOWPLAYING_SWITCH_SONG]: LumiaEventListTypes.OTHERS,
310
- [activity_types_1.LumiaAlertValues.NOWPLAYING_SONG_PLAYED]: LumiaEventListTypes.OTHERS,
311
- [activity_types_1.LumiaAlertValues.NOWPLAYING_SONG_PAUSED]: LumiaEventListTypes.OTHERS,
312
- [activity_types_1.LumiaAlertValues.VLC_SWITCH_SONG]: LumiaEventListTypes.OTHERS,
313
- [activity_types_1.LumiaAlertValues.VLC_SONG_PLAYED]: LumiaEventListTypes.OTHERS,
314
- [activity_types_1.LumiaAlertValues.VLC_SONG_PAUSED]: LumiaEventListTypes.OTHERS,
315
- // --- Health / fitness ---
316
- [activity_types_1.LumiaAlertValues.PULSE_HEARTRATE]: LumiaEventListTypes.OTHERS,
317
- [activity_types_1.LumiaAlertValues.PULSE_CALORIES]: LumiaEventListTypes.OTHERS,
318
190
  // --- Social media (Twitter / X) ---
319
191
  [activity_types_1.LumiaAlertValues.TWITTER_FOLLOWER]: LumiaEventListTypes.FOLLOWER,
320
- [activity_types_1.LumiaAlertValues.TWITTER_LIKE]: LumiaEventListTypes.LIKES,
321
192
  [activity_types_1.LumiaAlertValues.TWITTER_RETWEET]: LumiaEventListTypes.RETWEETS,
322
193
  // --- E-commerce ---
323
194
  [activity_types_1.LumiaAlertValues.WOOCOMMERCE_ORDER]: LumiaEventListTypes.PURCHASES,
195
+ };
196
+ /**
197
+ * Alerts that should NOT appear in the eventlist's user-facing picker AND
198
+ * should NOT render in any eventlist feed. The invariant is:
199
+ *
200
+ * - Every `LumiaAlertValues` member must appear in EITHER
201
+ * `LumiaMapAlertTypeToEventListType` (mapped → visible in the picker
202
+ * and eventlist) OR in `AlertsToFilter` (hidden everywhere). Never
203
+ * both, never neither.
204
+ *
205
+ * Shared between LumiaStream (`EventCollection.ts` skips processing these
206
+ * to avoid spamming the event log, `EventListFilterPopover` hides them from
207
+ * the picker) and Overlay-UI (eventlist Manager picker hides them, eventlist
208
+ * component drops them at render). Was duplicated in both repos before
209
+ * being consolidated here.
210
+ *
211
+ * Grouped by source / platform. When adding a new alert to
212
+ * `LumiaAlertValues`, place it in EXACTLY ONE of the two lists. Default
213
+ * choice is `AlertsToFilter` (hidden) unless it's a viewer-facing event
214
+ * the eventlist should render.
215
+ */
216
+ exports.AlertsToFilter = [
217
+ // --- Lumia Stream native ---
218
+ activity_types_1.LumiaAlertValues.LUMIASTREAM_LUMIA_OPENED,
219
+ activity_types_1.LumiaAlertValues.LUMIASTREAM_LUMIA_CLOSED,
220
+ activity_types_1.LumiaAlertValues.LUMIASTREAM_STREAMMODE_ON,
221
+ activity_types_1.LumiaAlertValues.LUMIASTREAM_STREAMMODE_OFF,
222
+ activity_types_1.LumiaAlertValues.LUMIASTREAM_SPINWHEEL_WINNER,
223
+ activity_types_1.LumiaAlertValues.LUMIASTREAM_RAFFLE_START,
224
+ activity_types_1.LumiaAlertValues.LUMIASTREAM_RAFFLE_STOP,
225
+ activity_types_1.LumiaAlertValues.LUMIASTREAM_RAFFLE_WINNER,
226
+ activity_types_1.LumiaAlertValues.LUMIASTREAM_TOURNAMENT_START,
227
+ activity_types_1.LumiaAlertValues.LUMIASTREAM_TOURNAMENT_END,
228
+ activity_types_1.LumiaAlertValues.LUMIASTREAM_TOURNAMENT_WINNER,
229
+ activity_types_1.LumiaAlertValues.LUMIASTREAM_POLL_STARTED,
230
+ activity_types_1.LumiaAlertValues.LUMIASTREAM_POLL_PROGRESSED,
231
+ activity_types_1.LumiaAlertValues.LUMIASTREAM_POLL_ENDED,
232
+ activity_types_1.LumiaAlertValues.LUMIASTREAM_VIEWERQUEUE_STARTED,
233
+ activity_types_1.LumiaAlertValues.LUMIASTREAM_VIEWERQUEUE_ENDED,
234
+ activity_types_1.LumiaAlertValues.LUMIASTREAM_VIEWER_ACHIEVEMENT,
235
+ activity_types_1.LumiaAlertValues.LUMIASTREAM_VARIABLE_CHANGED,
236
+ activity_types_1.LumiaAlertValues.LUMIASTREAM_ROULETTE_WINNER,
237
+ activity_types_1.LumiaAlertValues.LUMIASTREAM_SLOTS_WINNER,
238
+ // --- Twitch ---
239
+ activity_types_1.LumiaAlertValues.TWITCH_STREAM_LIVE,
240
+ activity_types_1.LumiaAlertValues.TWITCH_STREAM_OFFLINE,
241
+ activity_types_1.LumiaAlertValues.TWITCH_ENTRANCE,
242
+ activity_types_1.LumiaAlertValues.TWITCH_FIRST_CHATTER,
243
+ activity_types_1.LumiaAlertValues.TWITCH_HYPETRAIN_PROGRESSED,
244
+ activity_types_1.LumiaAlertValues.TWITCH_HYPETRAIN_LEVEL_PROGRESSED,
245
+ activity_types_1.LumiaAlertValues.TWITCH_HYPETRAIN_ENDED,
246
+ activity_types_1.LumiaAlertValues.TWITCH_REDEMPTION,
247
+ activity_types_1.LumiaAlertValues.TWITCH_POLL_STARTED,
248
+ activity_types_1.LumiaAlertValues.TWITCH_POLL_PROGRESSED,
249
+ activity_types_1.LumiaAlertValues.TWITCH_POLL_ENDED,
250
+ activity_types_1.LumiaAlertValues.TWITCH_PREDICTION_STARTED,
251
+ activity_types_1.LumiaAlertValues.TWITCH_PREDICTION_PROGRESSED,
252
+ activity_types_1.LumiaAlertValues.TWITCH_PREDICTION_LOCKED,
253
+ activity_types_1.LumiaAlertValues.TWITCH_PREDICTION_ENDED,
254
+ activity_types_1.LumiaAlertValues.TWITCH_GOAL_STARTED,
255
+ activity_types_1.LumiaAlertValues.TWITCH_GOAL_PROGRESSED,
256
+ activity_types_1.LumiaAlertValues.TWITCH_GOAL_ENDED,
257
+ activity_types_1.LumiaAlertValues.TWITCH_CHARITY_CAMPAIGN_STARTED,
258
+ activity_types_1.LumiaAlertValues.TWITCH_CHARITY_CAMPAIGN_PROGRESSED,
259
+ activity_types_1.LumiaAlertValues.TWITCH_CHARITY_CAMPAIGN_STOPPED,
260
+ activity_types_1.LumiaAlertValues.TWITCH_CATEGORY,
261
+ activity_types_1.LumiaAlertValues.TWITCH_CLIP,
262
+ activity_types_1.LumiaAlertValues.TWITCH_CHANNEL_JOIN,
263
+ activity_types_1.LumiaAlertValues.TWITCH_CHANNEL_LEAVE,
264
+ activity_types_1.LumiaAlertValues.TWITCH_BANNED,
265
+ activity_types_1.LumiaAlertValues.TWITCH_TIMEOUT,
266
+ activity_types_1.LumiaAlertValues.TWITCH_TIMEOUT_OVER,
267
+ activity_types_1.LumiaAlertValues.TWITCH_SHOUTOUT_RECEIVE,
268
+ activity_types_1.LumiaAlertValues.TWITCH_AD_STARTED,
269
+ activity_types_1.LumiaAlertValues.TWITCH_AD_STOPPED,
270
+ activity_types_1.LumiaAlertValues.TWITCH_WATCH_STREAK,
271
+ // --- YouTube ---
272
+ activity_types_1.LumiaAlertValues.YOUTUBE_STREAM_LIVE,
273
+ activity_types_1.LumiaAlertValues.YOUTUBE_STREAM_OFFLINE,
274
+ activity_types_1.LumiaAlertValues.YOUTUBE_ENTRANCE,
275
+ activity_types_1.LumiaAlertValues.YOUTUBE_FIRST_CHATTER,
276
+ activity_types_1.LumiaAlertValues.YOUTUBE_LIKE,
277
+ activity_types_1.LumiaAlertValues.YOUTUBE_VIEWERS,
278
+ // --- Facebook ---
279
+ activity_types_1.LumiaAlertValues.FACEBOOK_STREAM_LIVE,
280
+ activity_types_1.LumiaAlertValues.FACEBOOK_STREAM_OFFLINE,
281
+ activity_types_1.LumiaAlertValues.FACEBOOK_ENTRANCE,
282
+ activity_types_1.LumiaAlertValues.FACEBOOK_FIRST_CHATTER,
283
+ // --- TikTok ---
284
+ activity_types_1.LumiaAlertValues.TIKTOK_STREAM_END,
285
+ activity_types_1.LumiaAlertValues.TIKTOK_ENTRANCE,
286
+ activity_types_1.LumiaAlertValues.TIKTOK_FIRST_CHATTER,
287
+ activity_types_1.LumiaAlertValues.TIKTOK_NEW_VIDEO,
288
+ activity_types_1.LumiaAlertValues.TIKTOK_TOTAL_LIKES,
289
+ activity_types_1.LumiaAlertValues.TIKTOK_LIKE,
290
+ activity_types_1.LumiaAlertValues.TIKTOK_QUESTION,
291
+ activity_types_1.LumiaAlertValues.TIKTOK_POLL,
292
+ activity_types_1.LumiaAlertValues.TIKTOK_PIN_MESSAGE,
293
+ activity_types_1.LumiaAlertValues.TIKTOK_BATTLE_START,
294
+ activity_types_1.LumiaAlertValues.TIKTOK_BATTLE_PROGRESS,
295
+ activity_types_1.LumiaAlertValues.TIKTOK_BATTLE_END,
296
+ // --- Kick ---
297
+ activity_types_1.LumiaAlertValues.KICK_ENTRANCE,
298
+ activity_types_1.LumiaAlertValues.KICK_FIRST_CHATTER,
299
+ activity_types_1.LumiaAlertValues.KICK_BANNED,
300
+ activity_types_1.LumiaAlertValues.KICK_UNBANNED,
301
+ // --- Discord ---
302
+ activity_types_1.LumiaAlertValues.DISCORD_FIRST_CHATTER,
303
+ activity_types_1.LumiaAlertValues.DISCORD_ENTRANCE,
304
+ // --- Third-party (Fourthwall housekeeping) ---
305
+ activity_types_1.LumiaAlertValues.FOURTHWALL_SUBSCRIPTION_EXPIRED,
306
+ activity_types_1.LumiaAlertValues.FOURTHWALL_GIVEAWAY_STARTED,
307
+ activity_types_1.LumiaAlertValues.FOURTHWALL_GIVEAWAY_ENDED,
308
+ activity_types_1.LumiaAlertValues.FOURTHWALL_THANKYOU_SENT,
309
+ activity_types_1.LumiaAlertValues.FOURTHWALL_NEWSLETTER_SUBSCRIBED,
310
+ // --- Broadcasting apps (OBS / SLOBS / Meld) ---
311
+ activity_types_1.LumiaAlertValues.OBS_SWITCH_PROFILE,
312
+ activity_types_1.LumiaAlertValues.OBS_SWITCH_SCENE,
313
+ activity_types_1.LumiaAlertValues.OBS_SCENE_ITEM_VISIBILITY,
314
+ activity_types_1.LumiaAlertValues.OBS_SCENE_ITEM_HIDDEN,
315
+ activity_types_1.LumiaAlertValues.OBS_SWITCH_TRANSITION,
316
+ activity_types_1.LumiaAlertValues.OBS_TRANSITION_BEGIN,
317
+ activity_types_1.LumiaAlertValues.OBS_TRANSITION_END,
318
+ activity_types_1.LumiaAlertValues.OBS_STREAM_STARTING,
319
+ activity_types_1.LumiaAlertValues.OBS_STREAM_STOPPING,
320
+ activity_types_1.LumiaAlertValues.OBS_RECORDING_STARTING,
321
+ activity_types_1.LumiaAlertValues.OBS_RECORDING_STOPPING,
322
+ activity_types_1.LumiaAlertValues.OBS_MEDIA_INPUT_PLAYBACK_STARTED,
323
+ activity_types_1.LumiaAlertValues.OBS_MEDIA_INPUT_PLAYBACK_ENDED,
324
+ activity_types_1.LumiaAlertValues.OBS_VIRTUALCAM_STATE_CHANGED,
325
+ activity_types_1.LumiaAlertValues.OBS_SCREENSHOT_SAVED,
326
+ activity_types_1.LumiaAlertValues.OBS_REPLAY_BUFFER_SAVED,
327
+ activity_types_1.LumiaAlertValues.OBS_VERTICAL_BACKTRACK_SAVED,
328
+ activity_types_1.LumiaAlertValues.OBS_VENDOR_EVENT,
329
+ activity_types_1.LumiaAlertValues.SLOBS_SWITCH_SCENE_COLLECTION,
330
+ activity_types_1.LumiaAlertValues.SLOBS_SWITCH_SCENE,
331
+ activity_types_1.LumiaAlertValues.SLOBS_SCENE_ITEM_VISIBILITY,
332
+ activity_types_1.LumiaAlertValues.SLOBS_SCENE_ITEM_HIDDEN,
333
+ activity_types_1.LumiaAlertValues.MELD_STREAM_STARTING,
334
+ activity_types_1.LumiaAlertValues.MELD_STREAM_STOPPING,
335
+ activity_types_1.LumiaAlertValues.MELD_RECORDING_STARTING,
336
+ activity_types_1.LumiaAlertValues.MELD_RECORDING_STOPPING,
337
+ activity_types_1.LumiaAlertValues.MELD_SWITCH_SCENE,
338
+ activity_types_1.LumiaAlertValues.MELD_SWITCH_VERTICAL_SCENE,
339
+ // --- Music players ---
340
+ activity_types_1.LumiaAlertValues.SPOTIFY_SWITCH_SONG,
341
+ activity_types_1.LumiaAlertValues.SPOTIFY_SONG_PLAYED,
342
+ activity_types_1.LumiaAlertValues.SPOTIFY_SONG_PAUSED,
343
+ activity_types_1.LumiaAlertValues.YOUTUBEMUSIC_SWITCH_SONG,
344
+ activity_types_1.LumiaAlertValues.YOUTUBEMUSIC_SONG_PLAYED,
345
+ activity_types_1.LumiaAlertValues.YOUTUBEMUSIC_SONG_PAUSED,
346
+ activity_types_1.LumiaAlertValues.NOWPLAYING_SWITCH_SONG,
347
+ activity_types_1.LumiaAlertValues.NOWPLAYING_SONG_PLAYED,
348
+ activity_types_1.LumiaAlertValues.NOWPLAYING_SONG_PAUSED,
349
+ activity_types_1.LumiaAlertValues.VLC_SWITCH_SONG,
350
+ activity_types_1.LumiaAlertValues.VLC_SONG_PLAYED,
351
+ activity_types_1.LumiaAlertValues.VLC_SONG_PAUSED,
352
+ // --- Health / fitness ---
353
+ activity_types_1.LumiaAlertValues.PULSE_HEARTRATE,
354
+ activity_types_1.LumiaAlertValues.PULSE_CALORIES,
355
+ // --- Social media ---
356
+ activity_types_1.LumiaAlertValues.TWITTER_LIKE,
324
357
  // --- Other integrations ---
325
- [activity_types_1.LumiaAlertValues.STREAMERBOT_ACTION]: LumiaEventListTypes.OTHERS,
326
- [activity_types_1.LumiaAlertValues.CROWDCONTROL_EFFECT]: LumiaEventListTypes.OTHERS,
358
+ activity_types_1.LumiaAlertValues.STREAMERBOT_ACTION,
359
+ activity_types_1.LumiaAlertValues.CROWDCONTROL_EFFECT,
327
360
  // --- VTube Studio ---
328
- [activity_types_1.LumiaAlertValues.VTUBESTUDIO_HOTKEY_TRIGGERED]: LumiaEventListTypes.OTHERS,
329
- [activity_types_1.LumiaAlertValues.VTUBESTUDIO_MODEL_LOADED]: LumiaEventListTypes.OTHERS,
330
- [activity_types_1.LumiaAlertValues.VTUBESTUDIO_ANIMATION_START]: LumiaEventListTypes.OTHERS,
331
- [activity_types_1.LumiaAlertValues.VTUBESTUDIO_ANIMATION_END]: LumiaEventListTypes.OTHERS,
332
- [activity_types_1.LumiaAlertValues.VTUBESTUDIO_ITEM_ADDED]: LumiaEventListTypes.OTHERS,
333
- [activity_types_1.LumiaAlertValues.VTUBESTUDIO_ITEM_REMOVED]: LumiaEventListTypes.OTHERS,
334
- [activity_types_1.LumiaAlertValues.VTUBESTUDIO_BACKGROUND_CHANGED]: LumiaEventListTypes.OTHERS,
335
- };
361
+ activity_types_1.LumiaAlertValues.VTUBESTUDIO_HOTKEY_TRIGGERED,
362
+ activity_types_1.LumiaAlertValues.VTUBESTUDIO_MODEL_LOADED,
363
+ activity_types_1.LumiaAlertValues.VTUBESTUDIO_ANIMATION_START,
364
+ activity_types_1.LumiaAlertValues.VTUBESTUDIO_ANIMATION_END,
365
+ activity_types_1.LumiaAlertValues.VTUBESTUDIO_ITEM_ADDED,
366
+ activity_types_1.LumiaAlertValues.VTUBESTUDIO_ITEM_REMOVED,
367
+ activity_types_1.LumiaAlertValues.VTUBESTUDIO_BACKGROUND_CHANGED,
368
+ ];
369
+ /**
370
+ * Platforms whose events should be hidden from the eventlist / event log
371
+ * processing pipeline. These are connections whose alerts are stream
372
+ * management or housekeeping (broadcasting apps, music players, health
373
+ * trackers, automation tools) rather than viewer-facing activity.
374
+ *
375
+ * Used by LumiaStream's `EventCollection.ts` to short-circuit processing
376
+ * before the event lands in the eventlist DB at all. Was duplicated in
377
+ * LumiaStream `Integrations.types.ts` before being consolidated here.
378
+ */
379
+ exports.PlatformsToFilter = [
380
+ 'obs',
381
+ 'slobs',
382
+ 'meld',
383
+ 'paypal',
384
+ 'pulsoid',
385
+ 'hyperate',
386
+ 'spotify',
387
+ 'youtubemusic',
388
+ 'nowplaying',
389
+ 'vlc',
390
+ 'streamerbot',
391
+ 'vtubestudio',
392
+ ];
package/dist/index.d.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  export { LumiaStreamingSites, LumiaActivityCommandTypes, LumiaExternalActivityCommandTypes, LumiaAlertValues, LumiaAlertFriendlyValues, LumiaActivityOriginTypes, LumiaActivityApiValueType, LumiaActivityNoValueTypes, LumiaActivityTestType, } from './activity.types';
2
2
  export { LumiaVariationConditions, LumiaVariationCurrency, VariationCurrencySymbol, LumiaRedemptionCurrency, LumiaRedemptionCurrencySymbol, LumiaAlertConfigs, LumiaDynamicCondition, type LumiaSelectionOption, } from './alert.types';
3
3
  export { ILumiaSendPack, ILumiaEvent, ILumiaEventChatCommandBody, ILumiaEventChatBody, ILumiaEventAlertBody, ILumiaEventStateBody, ILumiaLight, LumiaIntegrations, LumiaEventTypes, } from './event.types';
4
- export { LumiaEventListTypes, LumiaMapAlertTypeToEventListType } from './eventlist.types';
4
+ export { LumiaEventListTypes, LumiaMapAlertTypeToEventListType, AlertsToFilter, PlatformsToFilter } from './eventlist.types';
5
5
  export { SystemVariables, ReservedVariables, AllVariables, getAcceptedVariableName, getAcceptedVariableNames, type LumiaAcceptedVariable, type LumiaAcceptedVariableDefinition, } from './variables.types';
6
6
  export { formatCondition } from './helpers';
7
7
  export { KickKicksData } from './kick_kicks';
package/dist/index.js CHANGED
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.SongRequestPlaybackTarget = exports.SongRequestProvider = exports.SongRequestSource = exports.SongRequestStatus = exports.VIEWER_PROFILE_ACHIEVEMENTS = exports.YoutubeSuperstickersData = exports.TiktokGiftsData = exports.KickKicksData = exports.formatCondition = exports.getAcceptedVariableNames = exports.getAcceptedVariableName = exports.AllVariables = exports.ReservedVariables = exports.SystemVariables = exports.LumiaMapAlertTypeToEventListType = exports.LumiaEventListTypes = exports.LumiaEventTypes = exports.LumiaIntegrations = exports.LumiaAlertConfigs = exports.LumiaRedemptionCurrencySymbol = exports.LumiaRedemptionCurrency = exports.VariationCurrencySymbol = exports.LumiaVariationCurrency = exports.LumiaVariationConditions = exports.LumiaActivityTestType = exports.LumiaActivityNoValueTypes = exports.LumiaActivityApiValueType = exports.LumiaActivityOriginTypes = exports.LumiaAlertFriendlyValues = exports.LumiaAlertValues = exports.LumiaExternalActivityCommandTypes = exports.LumiaActivityCommandTypes = exports.LumiaStreamingSites = void 0;
3
+ exports.SongRequestPlaybackTarget = exports.SongRequestProvider = exports.SongRequestSource = exports.SongRequestStatus = exports.VIEWER_PROFILE_ACHIEVEMENTS = exports.YoutubeSuperstickersData = exports.TiktokGiftsData = exports.KickKicksData = exports.formatCondition = exports.getAcceptedVariableNames = exports.getAcceptedVariableName = exports.AllVariables = exports.ReservedVariables = exports.SystemVariables = exports.PlatformsToFilter = exports.AlertsToFilter = exports.LumiaMapAlertTypeToEventListType = exports.LumiaEventListTypes = exports.LumiaEventTypes = exports.LumiaIntegrations = exports.LumiaAlertConfigs = exports.LumiaRedemptionCurrencySymbol = exports.LumiaRedemptionCurrency = exports.VariationCurrencySymbol = exports.LumiaVariationCurrency = exports.LumiaVariationConditions = exports.LumiaActivityTestType = exports.LumiaActivityNoValueTypes = exports.LumiaActivityApiValueType = exports.LumiaActivityOriginTypes = exports.LumiaAlertFriendlyValues = exports.LumiaAlertValues = exports.LumiaExternalActivityCommandTypes = exports.LumiaActivityCommandTypes = exports.LumiaStreamingSites = void 0;
4
4
  var activity_types_1 = require("./activity.types");
5
5
  Object.defineProperty(exports, "LumiaStreamingSites", { enumerable: true, get: function () { return activity_types_1.LumiaStreamingSites; } });
6
6
  Object.defineProperty(exports, "LumiaActivityCommandTypes", { enumerable: true, get: function () { return activity_types_1.LumiaActivityCommandTypes; } });
@@ -24,6 +24,8 @@ Object.defineProperty(exports, "LumiaEventTypes", { enumerable: true, get: funct
24
24
  var eventlist_types_1 = require("./eventlist.types");
25
25
  Object.defineProperty(exports, "LumiaEventListTypes", { enumerable: true, get: function () { return eventlist_types_1.LumiaEventListTypes; } });
26
26
  Object.defineProperty(exports, "LumiaMapAlertTypeToEventListType", { enumerable: true, get: function () { return eventlist_types_1.LumiaMapAlertTypeToEventListType; } });
27
+ Object.defineProperty(exports, "AlertsToFilter", { enumerable: true, get: function () { return eventlist_types_1.AlertsToFilter; } });
28
+ Object.defineProperty(exports, "PlatformsToFilter", { enumerable: true, get: function () { return eventlist_types_1.PlatformsToFilter; } });
27
29
  var variables_types_1 = require("./variables.types");
28
30
  Object.defineProperty(exports, "SystemVariables", { enumerable: true, get: function () { return variables_types_1.SystemVariables; } });
29
31
  Object.defineProperty(exports, "ReservedVariables", { enumerable: true, get: function () { return variables_types_1.ReservedVariables; } });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lumiastream/lumia-types",
3
- "version": "3.3.9",
3
+ "version": "3.4.0",
4
4
  "description": "",
5
5
  "main": "./dist/index.js",
6
6
  "module": "./dist/esm/index.js",
@@ -31,7 +31,8 @@
31
31
  ],
32
32
  "scripts": {
33
33
  "build": "npm run clean && tsc -p tsconfig.json && tsc -p tsconfig.esm.json && npm run sync:custom-overlays && npm run sync:custom-code && node ./scripts/finalize-esm-build.mjs",
34
- "prepublishOnly": "npm run build",
34
+ "test": "node ./scripts/check-eventlist-alert-invariant.mjs",
35
+ "prepublishOnly": "npm run build && npm test",
35
36
  "lint": "tslint --project tsconfig.json \"src/**/*.ts\"",
36
37
  "lint:fix": "tslint --project tsconfig.json --fix \"src/**/*.ts\"",
37
38
  "clean": "rm -rf dist",