@lumiastream/lumia-types 3.3.9 → 3.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1154,6 +1154,8 @@ export declare enum SystemVariables {
1154
1154
  TRANSLATE = "translate",
1155
1155
  /** Get the ai response from ai integration. Example: {{ai_prompt={{message}}}}. Use as {{ai_prompt}}. */
1156
1156
  AI_PROMPT = "ai_prompt",
1157
+ /** Current weather for a location via wttr.in. Returns a one-line summary like */
1158
+ WEATHER = "weather",
1157
1159
  /** Commands URL/page. Use in overlays as {{commands_url}}. */
1158
1160
  COMMANDS_URL = "commands_url",
1159
1161
  /** Session start time (ISO). Use as {{session_start_date}}. */
@@ -1154,6 +1154,8 @@ export declare enum SystemVariables {
1154
1154
  TRANSLATE = "translate",
1155
1155
  /** Get the ai response from ai integration. Example: {{ai_prompt={{message}}}}. Use as {{ai_prompt}}. */
1156
1156
  AI_PROMPT = "ai_prompt",
1157
+ /** Current weather for a location via wttr.in. Returns a one-line summary like */
1158
+ WEATHER = "weather",
1157
1159
  /** Commands URL/page. Use in overlays as {{commands_url}}. */
1158
1160
  COMMANDS_URL = "commands_url",
1159
1161
  /** Session start time (ISO). Use as {{session_start_date}}. */
@@ -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,38 @@ 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,
94
75
  // --- Twitch ---
95
76
  [LumiaAlertValues.TWITCH_EXTENSION]: LumiaEventListTypes.EXTENSION,
96
77
  [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
78
  [LumiaAlertValues.TWITCH_FOLLOWER]: LumiaEventListTypes.FOLLOWER,
102
79
  [LumiaAlertValues.TWITCH_SESSION_FOLLOWERS]: LumiaEventListTypes.FOLLOWER,
103
80
  [LumiaAlertValues.TWITCH_SUBSCRIBER]: LumiaEventListTypes.SUBSCRIBERS,
@@ -109,49 +86,11 @@ export const LumiaMapAlertTypeToEventListType = {
109
86
  [LumiaAlertValues.TWITCH_BITS]: LumiaEventListTypes.BITS,
110
87
  [LumiaAlertValues.TWITCH_BITS_COMBO]: LumiaEventListTypes.BITS,
111
88
  [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,
116
89
  [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,
130
90
  [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
91
  [LumiaAlertValues.TWITCH_POWERUPS]: LumiaEventListTypes.BITS,
146
92
  [LumiaAlertValues.TWITCH_POWERUPS_POINTS]: LumiaEventListTypes.POINTS,
147
93
  // --- 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
- // YouTube "subscribers" are free follows in YT-speak — categorize as
153
- // FOLLOWER so a "Recent Followers" widget unifies Twitch follows + YT
154
- // subs. Paid memberships are categorized as SUBSCRIBERS below.
155
94
  [LumiaAlertValues.YOUTUBE_SUBSCRIBER]: LumiaEventListTypes.FOLLOWER,
156
95
  [LumiaAlertValues.YOUTUBE_SESSION_SUBS]: LumiaEventListTypes.FOLLOWER,
157
96
  [LumiaAlertValues.YOUTUBE_MEMBER]: LumiaEventListTypes.SUBSCRIBERS,
@@ -164,50 +103,24 @@ export const LumiaMapAlertTypeToEventListType = {
164
103
  [LumiaAlertValues.YOUTUBE_SESSION_SUPERSTICKERS]: LumiaEventListTypes.SUPERSTICKERS,
165
104
  [LumiaAlertValues.YOUTUBE_GIFTS]: LumiaEventListTypes.GIFTS,
166
105
  [LumiaAlertValues.YOUTUBE_SESSION_GIFTS]: LumiaEventListTypes.GIFTS,
167
- [LumiaAlertValues.YOUTUBE_LIKE]: LumiaEventListTypes.LIKES,
168
- [LumiaAlertValues.YOUTUBE_VIEWERS]: LumiaEventListTypes.OTHERS,
169
106
  // --- 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
107
  [LumiaAlertValues.FACEBOOK_FOLLOWER]: LumiaEventListTypes.FOLLOWER,
175
108
  [LumiaAlertValues.FACEBOOK_REACTION]: LumiaEventListTypes.LIKES,
176
109
  [LumiaAlertValues.FACEBOOK_STAR]: LumiaEventListTypes.STARS,
177
- // FB Supporters are paid subscriptions, FB Fans are free fan-status, FB
178
- // Gift Subscriptions are gifted Supporters → keep all three in their
179
- // distinct categories.
180
110
  [LumiaAlertValues.FACEBOOK_SUPPORT]: LumiaEventListTypes.SUBSCRIBERS,
181
111
  [LumiaAlertValues.FACEBOOK_GIFT_SUBSCRIPTION]: LumiaEventListTypes.GIFTS,
182
112
  [LumiaAlertValues.FACEBOOK_SHARE]: LumiaEventListTypes.SHARES,
183
113
  [LumiaAlertValues.FACEBOOK_FAN]: LumiaEventListTypes.FANS,
184
114
  // --- TikTok ---
185
- [LumiaAlertValues.TIKTOK_FIRST_CHATTER]: LumiaEventListTypes.OTHERS,
186
- [LumiaAlertValues.TIKTOK_ENTRANCE]: LumiaEventListTypes.OTHERS,
187
115
  [LumiaAlertValues.TIKTOK_FOLLOWER]: LumiaEventListTypes.FOLLOWER,
188
- [LumiaAlertValues.TIKTOK_LIKE]: LumiaEventListTypes.LIKES,
189
- [LumiaAlertValues.TIKTOK_TOTAL_LIKES]: LumiaEventListTypes.LIKES,
190
116
  [LumiaAlertValues.TIKTOK_GIFT]: LumiaEventListTypes.GIFTS,
191
- // TikTok Super Fan = paid membership (subscriber-equivalent). Super Fan
192
- // BOX is a separate gift-style event where a viewer receives a fan-only
193
- // drop — categorize as GIFTS to keep the SUBSCRIBERS feed sub-only.
194
117
  [LumiaAlertValues.TIKTOK_SUPER_FAN]: LumiaEventListTypes.SUBSCRIBERS,
195
118
  [LumiaAlertValues.TIKTOK_SUPER_FAN_BOX]: LumiaEventListTypes.GIFTS,
196
119
  [LumiaAlertValues.TIKTOK_TREASURE_CHEST]: LumiaEventListTypes.GIFTS,
197
- [LumiaAlertValues.TIKTOK_QUESTION]: LumiaEventListTypes.OTHERS,
198
- [LumiaAlertValues.TIKTOK_POLL]: LumiaEventListTypes.OTHERS,
199
120
  [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
121
  [LumiaAlertValues.TIKTOK_SHARE]: LumiaEventListTypes.SHARES,
205
- [LumiaAlertValues.TIKTOK_STREAM_END]: LumiaEventListTypes.OTHERS,
206
- [LumiaAlertValues.TIKTOK_NEW_VIDEO]: LumiaEventListTypes.OTHERS,
207
122
  // --- Kick ---
208
123
  [LumiaAlertValues.KICK_POINTS]: LumiaEventListTypes.POINTS,
209
- [LumiaAlertValues.KICK_FIRST_CHATTER]: LumiaEventListTypes.OTHERS,
210
- [LumiaAlertValues.KICK_ENTRANCE]: LumiaEventListTypes.OTHERS,
211
124
  [LumiaAlertValues.KICK_FOLLOWER]: LumiaEventListTypes.FOLLOWER,
212
125
  [LumiaAlertValues.KICK_SESSION_FOLLOWERS]: LumiaEventListTypes.FOLLOWER,
213
126
  [LumiaAlertValues.KICK_SUBSCRIBER]: LumiaEventListTypes.SUBSCRIBERS,
@@ -217,29 +130,16 @@ export const LumiaMapAlertTypeToEventListType = {
217
130
  [LumiaAlertValues.KICK_KICKS]: LumiaEventListTypes.KICKS,
218
131
  [LumiaAlertValues.KICK_SESSION_KICKS]: LumiaEventListTypes.KICKS,
219
132
  [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
133
  // --- Third-party donation / commerce platforms ---
226
134
  [LumiaAlertValues.STREAMLABS_DONATION]: LumiaEventListTypes.DONATION,
227
135
  [LumiaAlertValues.STREAMLABS_CHARITY]: LumiaEventListTypes.DONATION,
228
136
  [LumiaAlertValues.STREAMLABS_MERCH]: LumiaEventListTypes.PURCHASES,
229
- // Streamlabs Redemption was previously miscategorized as PURCHASES. It's
230
- // a Streamlabs loyalty-points redemption — the dedicated REDEMPTION
231
- // category is the correct home, mirroring TWITCH_REDEMPTION.
232
137
  [LumiaAlertValues.STREAMLABS_REDEMPTION]: LumiaEventListTypes.REDEMPTION,
233
138
  [LumiaAlertValues.STREAMLABS_PRIMEGIFT]: LumiaEventListTypes.GIFTS,
234
139
  [LumiaAlertValues.STREAMELEMENTS_DONATION]: LumiaEventListTypes.DONATION,
235
140
  [LumiaAlertValues.EXTRALIFE_DONATION]: LumiaEventListTypes.DONATION,
236
141
  [LumiaAlertValues.DONORDRIVE_DONATION]: LumiaEventListTypes.DONATION,
237
142
  [LumiaAlertValues.TILTIFY_DONATION]: LumiaEventListTypes.DONATION,
238
- // Throne is a viewer wishlist platform — a "gift purchase" is a viewer
239
- // 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).
243
143
  [LumiaAlertValues.THRONE_GIFT_PURCHASE]: LumiaEventListTypes.PURCHASES,
244
144
  [LumiaAlertValues.THRONE_CONTRIBUTION_PURCHASE]: LumiaEventListTypes.PURCHASES,
245
145
  [LumiaAlertValues.THRONE_GIFT_CROWDFUNDED]: LumiaEventListTypes.PURCHASES,
@@ -254,79 +154,194 @@ export const LumiaMapAlertTypeToEventListType = {
254
154
  [LumiaAlertValues.FOURTHWALL_DONATION]: LumiaEventListTypes.DONATION,
255
155
  [LumiaAlertValues.FOURTHWALL_SUBSCRIPTION]: LumiaEventListTypes.SUBSCRIBERS,
256
156
  [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
157
  [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
158
  // --- Social media (Twitter / X) ---
316
159
  [LumiaAlertValues.TWITTER_FOLLOWER]: LumiaEventListTypes.FOLLOWER,
317
- [LumiaAlertValues.TWITTER_LIKE]: LumiaEventListTypes.LIKES,
318
160
  [LumiaAlertValues.TWITTER_RETWEET]: LumiaEventListTypes.RETWEETS,
319
161
  // --- E-commerce ---
320
162
  [LumiaAlertValues.WOOCOMMERCE_ORDER]: LumiaEventListTypes.PURCHASES,
163
+ };
164
+ /**
165
+ * Alerts that should NOT appear in the eventlist's user-facing picker AND
166
+ * should NOT render in any eventlist feed. The invariant is:
167
+ *
168
+ * - Every `LumiaAlertValues` member must appear in EITHER
169
+ * `LumiaMapAlertTypeToEventListType` (mapped → visible in the picker
170
+ * and eventlist) OR in `AlertsToFilter` (hidden everywhere). Never
171
+ * both, never neither.
172
+ *
173
+ * Shared between LumiaStream (`EventCollection.ts` skips processing these
174
+ * to avoid spamming the event log, `EventListFilterPopover` hides them from
175
+ * the picker) and Overlay-UI (eventlist Manager picker hides them, eventlist
176
+ * component drops them at render). Was duplicated in both repos before
177
+ * being consolidated here.
178
+ *
179
+ * Grouped by source / platform. When adding a new alert to
180
+ * `LumiaAlertValues`, place it in EXACTLY ONE of the two lists. Default
181
+ * choice is `AlertsToFilter` (hidden) unless it's a viewer-facing event
182
+ * the eventlist should render.
183
+ */
184
+ export const AlertsToFilter = [
185
+ // --- Lumia Stream native ---
186
+ LumiaAlertValues.LUMIASTREAM_LUMIA_OPENED,
187
+ LumiaAlertValues.LUMIASTREAM_LUMIA_CLOSED,
188
+ LumiaAlertValues.LUMIASTREAM_STREAMMODE_ON,
189
+ LumiaAlertValues.LUMIASTREAM_STREAMMODE_OFF,
190
+ LumiaAlertValues.LUMIASTREAM_SPINWHEEL_WINNER,
191
+ LumiaAlertValues.LUMIASTREAM_RAFFLE_START,
192
+ LumiaAlertValues.LUMIASTREAM_RAFFLE_STOP,
193
+ LumiaAlertValues.LUMIASTREAM_RAFFLE_WINNER,
194
+ LumiaAlertValues.LUMIASTREAM_TOURNAMENT_START,
195
+ LumiaAlertValues.LUMIASTREAM_TOURNAMENT_END,
196
+ LumiaAlertValues.LUMIASTREAM_TOURNAMENT_WINNER,
197
+ LumiaAlertValues.LUMIASTREAM_POLL_STARTED,
198
+ LumiaAlertValues.LUMIASTREAM_POLL_PROGRESSED,
199
+ LumiaAlertValues.LUMIASTREAM_POLL_ENDED,
200
+ LumiaAlertValues.LUMIASTREAM_VIEWERQUEUE_STARTED,
201
+ LumiaAlertValues.LUMIASTREAM_VIEWERQUEUE_ENDED,
202
+ LumiaAlertValues.LUMIASTREAM_VIEWER_ACHIEVEMENT,
203
+ LumiaAlertValues.LUMIASTREAM_VARIABLE_CHANGED,
204
+ LumiaAlertValues.LUMIASTREAM_ROULETTE_WINNER,
205
+ LumiaAlertValues.LUMIASTREAM_SLOTS_WINNER,
206
+ // --- Twitch ---
207
+ LumiaAlertValues.TWITCH_STREAM_LIVE,
208
+ LumiaAlertValues.TWITCH_STREAM_OFFLINE,
209
+ LumiaAlertValues.TWITCH_ENTRANCE,
210
+ LumiaAlertValues.TWITCH_FIRST_CHATTER,
211
+ LumiaAlertValues.TWITCH_HYPETRAIN_PROGRESSED,
212
+ LumiaAlertValues.TWITCH_HYPETRAIN_LEVEL_PROGRESSED,
213
+ LumiaAlertValues.TWITCH_HYPETRAIN_ENDED,
214
+ LumiaAlertValues.TWITCH_REDEMPTION,
215
+ LumiaAlertValues.TWITCH_POLL_STARTED,
216
+ LumiaAlertValues.TWITCH_POLL_PROGRESSED,
217
+ LumiaAlertValues.TWITCH_POLL_ENDED,
218
+ LumiaAlertValues.TWITCH_PREDICTION_STARTED,
219
+ LumiaAlertValues.TWITCH_PREDICTION_PROGRESSED,
220
+ LumiaAlertValues.TWITCH_PREDICTION_LOCKED,
221
+ LumiaAlertValues.TWITCH_PREDICTION_ENDED,
222
+ LumiaAlertValues.TWITCH_GOAL_STARTED,
223
+ LumiaAlertValues.TWITCH_GOAL_PROGRESSED,
224
+ LumiaAlertValues.TWITCH_GOAL_ENDED,
225
+ LumiaAlertValues.TWITCH_CHARITY_CAMPAIGN_STARTED,
226
+ LumiaAlertValues.TWITCH_CHARITY_CAMPAIGN_PROGRESSED,
227
+ LumiaAlertValues.TWITCH_CHARITY_CAMPAIGN_STOPPED,
228
+ LumiaAlertValues.TWITCH_CATEGORY,
229
+ LumiaAlertValues.TWITCH_CLIP,
230
+ LumiaAlertValues.TWITCH_CHANNEL_JOIN,
231
+ LumiaAlertValues.TWITCH_CHANNEL_LEAVE,
232
+ LumiaAlertValues.TWITCH_BANNED,
233
+ LumiaAlertValues.TWITCH_TIMEOUT,
234
+ LumiaAlertValues.TWITCH_TIMEOUT_OVER,
235
+ LumiaAlertValues.TWITCH_SHOUTOUT_RECEIVE,
236
+ LumiaAlertValues.TWITCH_AD_STARTED,
237
+ LumiaAlertValues.TWITCH_AD_STOPPED,
238
+ LumiaAlertValues.TWITCH_WATCH_STREAK,
239
+ // --- YouTube ---
240
+ LumiaAlertValues.YOUTUBE_STREAM_LIVE,
241
+ LumiaAlertValues.YOUTUBE_STREAM_OFFLINE,
242
+ LumiaAlertValues.YOUTUBE_ENTRANCE,
243
+ LumiaAlertValues.YOUTUBE_FIRST_CHATTER,
244
+ LumiaAlertValues.YOUTUBE_LIKE,
245
+ LumiaAlertValues.YOUTUBE_VIEWERS,
246
+ // --- Facebook ---
247
+ LumiaAlertValues.FACEBOOK_STREAM_LIVE,
248
+ LumiaAlertValues.FACEBOOK_STREAM_OFFLINE,
249
+ LumiaAlertValues.FACEBOOK_ENTRANCE,
250
+ LumiaAlertValues.FACEBOOK_FIRST_CHATTER,
251
+ // --- TikTok ---
252
+ LumiaAlertValues.TIKTOK_STREAM_END,
253
+ LumiaAlertValues.TIKTOK_ENTRANCE,
254
+ LumiaAlertValues.TIKTOK_FIRST_CHATTER,
255
+ LumiaAlertValues.TIKTOK_NEW_VIDEO,
256
+ LumiaAlertValues.TIKTOK_TOTAL_LIKES,
257
+ LumiaAlertValues.TIKTOK_LIKE,
258
+ LumiaAlertValues.TIKTOK_QUESTION,
259
+ LumiaAlertValues.TIKTOK_POLL,
260
+ LumiaAlertValues.TIKTOK_PIN_MESSAGE,
261
+ LumiaAlertValues.TIKTOK_BATTLE_START,
262
+ LumiaAlertValues.TIKTOK_BATTLE_PROGRESS,
263
+ LumiaAlertValues.TIKTOK_BATTLE_END,
264
+ // --- Kick ---
265
+ LumiaAlertValues.KICK_ENTRANCE,
266
+ LumiaAlertValues.KICK_FIRST_CHATTER,
267
+ LumiaAlertValues.KICK_BANNED,
268
+ LumiaAlertValues.KICK_UNBANNED,
269
+ // --- Discord ---
270
+ LumiaAlertValues.DISCORD_FIRST_CHATTER,
271
+ LumiaAlertValues.DISCORD_ENTRANCE,
272
+ // --- Third-party (Fourthwall housekeeping) ---
273
+ LumiaAlertValues.FOURTHWALL_SUBSCRIPTION_EXPIRED,
274
+ LumiaAlertValues.FOURTHWALL_GIVEAWAY_STARTED,
275
+ LumiaAlertValues.FOURTHWALL_GIVEAWAY_ENDED,
276
+ LumiaAlertValues.FOURTHWALL_THANKYOU_SENT,
277
+ LumiaAlertValues.FOURTHWALL_NEWSLETTER_SUBSCRIBED,
278
+ // --- Broadcasting apps (OBS / SLOBS / Meld) ---
279
+ LumiaAlertValues.OBS_SWITCH_PROFILE,
280
+ LumiaAlertValues.OBS_SWITCH_SCENE,
281
+ LumiaAlertValues.OBS_SCENE_ITEM_VISIBILITY,
282
+ LumiaAlertValues.OBS_SCENE_ITEM_HIDDEN,
283
+ LumiaAlertValues.OBS_SWITCH_TRANSITION,
284
+ LumiaAlertValues.OBS_TRANSITION_BEGIN,
285
+ LumiaAlertValues.OBS_TRANSITION_END,
286
+ LumiaAlertValues.OBS_STREAM_STARTING,
287
+ LumiaAlertValues.OBS_STREAM_STOPPING,
288
+ LumiaAlertValues.OBS_RECORDING_STARTING,
289
+ LumiaAlertValues.OBS_RECORDING_STOPPING,
290
+ LumiaAlertValues.OBS_MEDIA_INPUT_PLAYBACK_STARTED,
291
+ LumiaAlertValues.OBS_MEDIA_INPUT_PLAYBACK_ENDED,
292
+ LumiaAlertValues.OBS_VIRTUALCAM_STATE_CHANGED,
293
+ LumiaAlertValues.OBS_SCREENSHOT_SAVED,
294
+ LumiaAlertValues.OBS_REPLAY_BUFFER_SAVED,
295
+ LumiaAlertValues.OBS_VERTICAL_BACKTRACK_SAVED,
296
+ LumiaAlertValues.OBS_VENDOR_EVENT,
297
+ LumiaAlertValues.SLOBS_SWITCH_SCENE_COLLECTION,
298
+ LumiaAlertValues.SLOBS_SWITCH_SCENE,
299
+ LumiaAlertValues.SLOBS_SCENE_ITEM_VISIBILITY,
300
+ LumiaAlertValues.SLOBS_SCENE_ITEM_HIDDEN,
301
+ LumiaAlertValues.MELD_STREAM_STARTING,
302
+ LumiaAlertValues.MELD_STREAM_STOPPING,
303
+ LumiaAlertValues.MELD_RECORDING_STARTING,
304
+ LumiaAlertValues.MELD_RECORDING_STOPPING,
305
+ LumiaAlertValues.MELD_SWITCH_SCENE,
306
+ LumiaAlertValues.MELD_SWITCH_VERTICAL_SCENE,
307
+ // --- Music players ---
308
+ LumiaAlertValues.SPOTIFY_SWITCH_SONG,
309
+ LumiaAlertValues.SPOTIFY_SONG_PLAYED,
310
+ LumiaAlertValues.SPOTIFY_SONG_PAUSED,
311
+ LumiaAlertValues.YOUTUBEMUSIC_SWITCH_SONG,
312
+ LumiaAlertValues.YOUTUBEMUSIC_SONG_PLAYED,
313
+ LumiaAlertValues.YOUTUBEMUSIC_SONG_PAUSED,
314
+ LumiaAlertValues.NOWPLAYING_SWITCH_SONG,
315
+ LumiaAlertValues.NOWPLAYING_SONG_PLAYED,
316
+ LumiaAlertValues.NOWPLAYING_SONG_PAUSED,
317
+ LumiaAlertValues.VLC_SWITCH_SONG,
318
+ LumiaAlertValues.VLC_SONG_PLAYED,
319
+ LumiaAlertValues.VLC_SONG_PAUSED,
320
+ // --- Health / fitness ---
321
+ LumiaAlertValues.PULSE_HEARTRATE,
322
+ LumiaAlertValues.PULSE_CALORIES,
323
+ // --- Social media ---
324
+ LumiaAlertValues.TWITTER_LIKE,
321
325
  // --- Other integrations ---
322
- [LumiaAlertValues.STREAMERBOT_ACTION]: LumiaEventListTypes.OTHERS,
323
- [LumiaAlertValues.CROWDCONTROL_EFFECT]: LumiaEventListTypes.OTHERS,
326
+ LumiaAlertValues.STREAMERBOT_ACTION,
327
+ LumiaAlertValues.CROWDCONTROL_EFFECT,
324
328
  // --- 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
- };
329
+ LumiaAlertValues.VTUBESTUDIO_HOTKEY_TRIGGERED,
330
+ LumiaAlertValues.VTUBESTUDIO_MODEL_LOADED,
331
+ LumiaAlertValues.VTUBESTUDIO_ANIMATION_START,
332
+ LumiaAlertValues.VTUBESTUDIO_ANIMATION_END,
333
+ LumiaAlertValues.VTUBESTUDIO_ITEM_ADDED,
334
+ LumiaAlertValues.VTUBESTUDIO_ITEM_REMOVED,
335
+ LumiaAlertValues.VTUBESTUDIO_BACKGROUND_CHANGED,
336
+ ];
337
+ /**
338
+ * Platforms whose events should be hidden from the eventlist / event log
339
+ * processing pipeline. These are connections whose alerts are stream
340
+ * management or housekeeping (broadcasting apps, music players, health
341
+ * trackers, automation tools) rather than viewer-facing activity.
342
+ *
343
+ * Used by LumiaStream's `EventCollection.ts` to short-circuit processing
344
+ * before the event lands in the eventlist DB at all. Was duplicated in
345
+ * LumiaStream `Integrations.types.ts` before being consolidated here.
346
+ */
347
+ export const PlatformsToFilter = ['obs', 'slobs', 'meld', 'paypal', 'pulsoid', 'hyperate', 'spotify', 'youtubemusic', 'nowplaying', 'vlc', 'streamerbot', 'vtubestudio'];
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';
@@ -1,5 +1,5 @@
1
1
  // [AI] When SystemVariables is used, update custom-overlays.d.ts
2
- export const getAcceptedVariableName = (entry) => typeof entry === 'string' ? entry : entry.name;
2
+ export const getAcceptedVariableName = (entry) => (typeof entry === 'string' ? entry : entry.name);
3
3
  export const getAcceptedVariableNames = (entries) => entries.map(getAcceptedVariableName);
4
4
  // Use the **string values** of this enum inside overlays: e.g. {{twitch_total_subscriber_count}}, not {{TWITCH_TOTAL_SUBSCRIBER_COUNT}}.
5
5
  export var SystemVariables;
@@ -73,6 +73,8 @@ export var SystemVariables;
73
73
  SystemVariables["TRANSLATE"] = "translate";
74
74
  /** Get the ai response from ai integration. Example: {{ai_prompt={{message}}}}. Use as {{ai_prompt}}. */
75
75
  SystemVariables["AI_PROMPT"] = "ai_prompt";
76
+ /** Current weather for a location via wttr.in. Returns a one-line summary like */
77
+ SystemVariables["WEATHER"] = "weather";
76
78
  // ─────────────────────────────────── General Variables ───────────────────────
77
79
  /** Commands URL/page. Use in overlays as {{commands_url}}. */
78
80
  SystemVariables["COMMANDS_URL"] = "commands_url";
@@ -2099,7 +2101,21 @@ export const AllVariables = {
2099
2101
  sessionFollowers: ['total', 'previousTotal'],
2100
2102
  subscriber: ['username', 'avatar', 'tier', 'recipient', 'subMonths', 'streakMonths', 'message', 'subPlan', 'subPlanName'],
2101
2103
  sessionSubs: ['total', 'previousTotal'],
2102
- subscriptionGift: ['username', 'avatar', 'tier', 'giftAmount', 'recipients', KICK_RECIPIENTS_RAW_EXAMPLE, 'gifter', 'totalGifts', 'subMonths', 'streakMonths', 'message', 'subPlan', 'subPlanName'],
2104
+ subscriptionGift: [
2105
+ 'username',
2106
+ 'avatar',
2107
+ 'tier',
2108
+ 'giftAmount',
2109
+ 'recipients',
2110
+ KICK_RECIPIENTS_RAW_EXAMPLE,
2111
+ 'gifter',
2112
+ 'totalGifts',
2113
+ 'subMonths',
2114
+ 'streakMonths',
2115
+ 'message',
2116
+ 'subPlan',
2117
+ 'subPlanName',
2118
+ ],
2103
2119
  sessionGiftSubscriptions: ['total', 'previousTotal'],
2104
2120
  kicks: ['username', 'avatar', 'amount', 'name', 'type', 'tier', 'id', 'message'],
2105
2121
  sessionKicks: ['total', 'previousTotal'],
@@ -2443,7 +2459,21 @@ export const AllVariables = {
2443
2459
  sessionFollowers: ['total', 'previousTotal'],
2444
2460
  subscriber: ['username', 'avatar', 'tier', 'recipient', 'subMonths', 'streakMonths', 'message', 'subPlan', 'subPlanName'],
2445
2461
  sessionSubs: ['total', 'previousTotal'],
2446
- giftSubscription: ['username', 'avatar', 'tier', 'giftAmount', 'recipients', TWITCH_RECIPIENTS_RAW_EXAMPLE, 'gifter', 'totalGifts', 'subMonths', 'streakMonths', 'message', 'subPlan', 'subPlanName'],
2462
+ giftSubscription: [
2463
+ 'username',
2464
+ 'avatar',
2465
+ 'tier',
2466
+ 'giftAmount',
2467
+ 'recipients',
2468
+ TWITCH_RECIPIENTS_RAW_EXAMPLE,
2469
+ 'gifter',
2470
+ 'totalGifts',
2471
+ 'subMonths',
2472
+ 'streakMonths',
2473
+ 'message',
2474
+ 'subPlan',
2475
+ 'subPlanName',
2476
+ ],
2447
2477
  sessionGiftSubscriptions: ['total', 'previousTotal'],
2448
2478
  bits: ['username', 'avatar', 'amount', 'message'],
2449
2479
  bitsCombo: ['username', 'avatar', 'amount', 'bitsType', 'message'],