|
1 | 1 | interface EffectScope<EffectModel> extends ng.IScope { |
2 | | - effect: EffectModel; |
3 | | - [x: string]: unknown; |
| 2 | + effect: EffectModel; |
| 3 | + [x: string]: unknown; |
4 | 4 | } |
5 | 5 |
|
6 | 6 | type EffectTriggerResponse = { |
7 | | - success: boolean; |
8 | | - //outputs: Record<string, unknown>; |
9 | | - execution?: { |
10 | | - stop: boolean; |
11 | | - bubbleStop: boolean; |
12 | | - } |
13 | | -} |
| 7 | + success: boolean; |
| 8 | + //outputs: Record<string, unknown>; |
| 9 | + execution?: { |
| 10 | + stop: boolean; |
| 11 | + bubbleStop: boolean; |
| 12 | + }; |
| 13 | +}; |
14 | 14 |
|
15 | 15 | export namespace Effects { |
16 | | - type TriggerType = |
17 | | - | "command" |
18 | | - | "custom_script" |
19 | | - | "startup_script" |
20 | | - | "api" |
21 | | - | "event" |
22 | | - | "hotkey" |
23 | | - | "timer" |
24 | | - | "counter" |
25 | | - | "preset" |
26 | | - | "quick_action" |
27 | | - | "manual"; |
| 16 | + type TriggerType = |
| 17 | + | "command" |
| 18 | + | "custom_script" |
| 19 | + | "startup_script" |
| 20 | + | "api" |
| 21 | + | "event" |
| 22 | + | "hotkey" |
| 23 | + | "timer" |
| 24 | + | "counter" |
| 25 | + | "preset" |
| 26 | + | "quick_action" |
| 27 | + | "manual"; |
28 | 28 |
|
29 | | - type Trigger = { |
30 | | - type: TriggerType; |
31 | | - metadata: { |
32 | | - username: string; |
33 | | - hotkey?: any; |
34 | | - command?: any; |
35 | | - userCommand?: { trigger: string; args: string[] }; |
36 | | - chatMessage?: any; |
37 | | - event?: { id: string; name: string }; |
38 | | - eventSource?: { id: string; name: string }; |
39 | | - eventData?: Record<string, unknown>; |
40 | | - [x: string]: unknown; |
| 29 | + type Trigger = { |
| 30 | + type: TriggerType; |
| 31 | + metadata: { |
| 32 | + username: string; |
| 33 | + hotkey?: any; |
| 34 | + command?: any; |
| 35 | + userCommand?: { trigger: string; args: string[] }; |
| 36 | + chatMessage?: any; |
| 37 | + event?: { id: string; name: string }; |
| 38 | + eventSource?: { id: string; name: string }; |
| 39 | + eventData?: Record<string, unknown>; |
| 40 | + [x: string]: unknown; |
| 41 | + }; |
41 | 42 | }; |
42 | | - }; |
43 | | - |
44 | | - type TriggersObject = { |
45 | | - [T in TriggerType]?: T extends "event" ? string[] | boolean : boolean; |
46 | | - }; |
47 | 43 |
|
48 | | - type EffectCategory = |
49 | | - | "common" |
50 | | - | "chat based" |
51 | | - | "Moderation" |
52 | | - | "overlay" |
53 | | - | "fun" |
54 | | - | "integrations" |
55 | | - | "advanced" |
56 | | - | "scripting"; |
| 44 | + type TriggersObject = { |
| 45 | + [T in TriggerType]?: T extends "event" ? string[] | boolean : boolean; |
| 46 | + }; |
57 | 47 |
|
58 | | - type KnownEffectType = |
59 | | - | "firebot:chat" |
60 | | - | "firebot:currency" |
61 | | - | "firebot:delay" |
62 | | - | "firebot:run-effect-list" |
63 | | - | "firebot:filewriter" |
64 | | - | "firebot:html" |
65 | | - | "firebot:loopeffects" |
66 | | - | "firebot:playsound" |
67 | | - | "firebot:playvideo" |
68 | | - | "firebot:randomeffect" |
69 | | - | "firebot:runcommand" |
70 | | - | "firebot:sequentialeffect" |
71 | | - | "firebot:set-user-metadata" |
72 | | - | "firebot:showImage" |
73 | | - | "firebot:showtext" |
74 | | - | "firebot:update-counter"; |
| 48 | + type EffectCategory = |
| 49 | + | "common" |
| 50 | + | "chat based" |
| 51 | + | "Moderation" |
| 52 | + | "overlay" |
| 53 | + | "fun" |
| 54 | + | "integrations" |
| 55 | + | "advanced" |
| 56 | + | "scripting"; |
75 | 57 |
|
76 | | - type Effect<T = KnownEffectType> = { |
77 | | - id?: string; |
78 | | - type: T; |
79 | | - [x: string]: unknown; |
80 | | - }; |
| 58 | + type KnownEffectType = |
| 59 | + | "firebot:chat" |
| 60 | + | "firebot:currency" |
| 61 | + | "firebot:delay" |
| 62 | + | "firebot:run-effect-list" |
| 63 | + | "firebot:filewriter" |
| 64 | + | "firebot:html" |
| 65 | + | "firebot:loopeffects" |
| 66 | + | "firebot:playsound" |
| 67 | + | "firebot:playvideo" |
| 68 | + | "firebot:randomeffect" |
| 69 | + | "firebot:runcommand" |
| 70 | + | "firebot:sequentialeffect" |
| 71 | + | "firebot:set-user-metadata" |
| 72 | + | "firebot:showImage" |
| 73 | + | "firebot:showtext" |
| 74 | + | "firebot:update-counter"; |
81 | 75 |
|
82 | | - type EffectType<EffectModel, OverlayData = unknown> = { |
83 | | - definition: { |
84 | | - id: string; |
85 | | - name: string; |
86 | | - description: string; |
87 | | - icon: string; |
88 | | - categories: EffectCategory[]; |
89 | | - triggers?: TriggerType[] | TriggersObject; |
90 | | - dependencies?: Array<"chat">; |
| 76 | + type Effect<T = KnownEffectType> = { |
| 77 | + id?: string; |
| 78 | + type: T; |
| 79 | + [x: string]: unknown; |
91 | 80 | }; |
92 | | - optionsTemplate: string; |
93 | | - optionsController?: ( |
94 | | - $scope: EffectScope<EffectModel>, |
95 | | - ...args: unknown[] |
96 | | - ) => void; |
97 | | - optionsValidator?: (effect: EffectModel) => string[]; |
98 | | - onTriggerEvent: (event: { |
99 | | - effect: EffectModel; |
100 | | - trigger: Trigger; |
101 | | - sendDataToOverlay: (data: OverlayData, overlayInstance?: string) => void |
102 | | - }) => Promise<void | boolean | EffectTriggerResponse>; |
103 | | - overlayExtension?: { |
104 | | - dependencies?: { |
105 | | - globalStyles?: string; |
106 | | - css?: string[]; |
107 | | - js?: string[]; |
108 | | - }; |
109 | | - event: { |
110 | | - name: string; |
111 | | - onOverlayEvent: (data: OverlayData) => void; |
112 | | - }; |
| 81 | + |
| 82 | + type EffectType<EffectModel, OverlayData = unknown> = { |
| 83 | + definition: { |
| 84 | + id: string; |
| 85 | + name: string; |
| 86 | + description: string; |
| 87 | + icon: string; |
| 88 | + categories: EffectCategory[]; |
| 89 | + triggers?: TriggerType[] | TriggersObject; |
| 90 | + dependencies?: Array<"chat">; |
| 91 | + }; |
| 92 | + optionsTemplate: string; |
| 93 | + optionsController?: ( |
| 94 | + $scope: EffectScope<EffectModel>, |
| 95 | + ...args: unknown[] |
| 96 | + ) => void; |
| 97 | + optionsValidator?: (effect: EffectModel) => string[]; |
| 98 | + onTriggerEvent: (event: { |
| 99 | + effect: EffectModel; |
| 100 | + trigger: Trigger; |
| 101 | + sendDataToOverlay: ( |
| 102 | + data: OverlayData, |
| 103 | + overlayInstance?: string |
| 104 | + ) => void; |
| 105 | + }) => Promise<void | boolean | EffectTriggerResponse>; |
| 106 | + overlayExtension?: { |
| 107 | + dependencies?: { |
| 108 | + globalStyles?: string; |
| 109 | + css?: string[]; |
| 110 | + js?: string[]; |
| 111 | + }; |
| 112 | + event: { |
| 113 | + name: string; |
| 114 | + onOverlayEvent: (data: OverlayData) => void; |
| 115 | + }; |
| 116 | + }; |
113 | 117 | }; |
114 | | - }; |
115 | 118 |
|
116 | | - type EffectList = { |
117 | | - id?: string; |
118 | | - queue?: string; |
119 | | - queueDuration?: number; |
120 | | - list: Effect[]; |
121 | | - }; |
| 119 | + type EffectList = { |
| 120 | + id?: string; |
| 121 | + queue?: string; |
| 122 | + queueDuration?: number; |
| 123 | + list: Effect[]; |
| 124 | + }; |
122 | 125 | } |
0 commit comments