Skip to content

Commit c08a96a

Browse files
authored
chore: updates for 5.63.0 (#30)
- moves script params over to firebot params - adds notification manager + repl var factory to script modules
1 parent 64a4f99 commit c08a96a

5 files changed

Lines changed: 183 additions & 103 deletions

File tree

types/index.d.ts

Lines changed: 13 additions & 75 deletions
Original file line numberDiff line numberDiff line change
@@ -28,56 +28,9 @@ import { Utils } from "./modules/utils";
2828
import { ConditionManager } from "./modules/condition-manager";
2929
import { RestrictionManager } from "./modules/restriction-manager";
3030
import { IntegrationManager } from "./modules/integration-manager";
31-
32-
export type BaseParameter = {
33-
description?: string;
34-
secondaryDescription?: string;
35-
showBottomHr?: boolean;
36-
};
37-
38-
export type StringParameter = BaseParameter & {
39-
type: "string";
40-
useTextArea?: boolean;
41-
default: string;
42-
};
43-
44-
export type PasswordParameter = BaseParameter & {
45-
type: "password";
46-
default: string;
47-
};
48-
49-
export type BooleanParameter = BaseParameter & {
50-
type: "boolean";
51-
default: boolean;
52-
};
53-
54-
export type NumberParameter = BaseParameter & {
55-
type: "number";
56-
default: number;
57-
};
58-
59-
export type EnumParameter<G = string | number> = BaseParameter & {
60-
type: "enum";
61-
options: Array<G>;
62-
default: string | number;
63-
};
64-
65-
export type FilepathParameter = BaseParameter & {
66-
type: "filepath";
67-
fileOptions?: {
68-
directoryOnly: boolean;
69-
filters: Array<{
70-
name: string;
71-
extensions: string[];
72-
}>;
73-
title: string;
74-
buttonLabel: string;
75-
};
76-
};
77-
78-
export type EffectListParameter = BaseParameter & {
79-
type: "effectlist";
80-
};
31+
import { ReplaceVariableFactory } from "./modules/replace-variable-factory";
32+
import { ParametersConfig } from "./modules/firebot-parameters";
33+
import { NotificationManager } from "./modules/notification-manager";
8134

8235
export type UserAccount = {
8336
username: string;
@@ -124,9 +77,11 @@ export type ScriptModules = {
12477
JsonDb: unknown;
12578
logger: Logger;
12679
moment: typeof Moment;
80+
notificationManager: NotificationManager;
12781
path: typeof Path;
12882
quotesManager: QuotesManager;
12983
replaceVariableManager: ReplaceVariableManager;
84+
replaceVariableFactory: ReplaceVariableFactory;
13085
resourceTokenManager: ResourceTokenManager;
13186
request: unknown;
13287
restrictionManager: RestrictionManager;
@@ -139,9 +94,13 @@ export type ScriptModules = {
13994
[x: string]: unknown;
14095
};
14196

142-
export type RunRequestParameters<P> = {
143-
[K in keyof P]: P[K] extends Array<infer G> ? G : P[K];
144-
};
97+
type ValidParamKeys<T> = {
98+
[P in keyof T]: Exclude<T[P], undefined> extends void | undefined | null
99+
? never
100+
: P;
101+
}[keyof T];
102+
103+
export type RunRequestParameters<P> = Pick<P, ValidParamKeys<P>>;
145104

146105
export type RunRequest<P extends Record<string, unknown>> = {
147106
parameters: RunRequestParameters<P>;
@@ -157,27 +116,6 @@ export type RunRequest<P extends Record<string, unknown>> = {
157116
trigger: Effects.Trigger;
158117
};
159118

160-
export type ScriptParameter =
161-
| StringParameter
162-
| PasswordParameter
163-
| BooleanParameter
164-
| NumberParameter
165-
| EnumParameter;
166-
167-
export type DefaultParametersConfig<P> = {
168-
[K in keyof P]: P[K] extends string
169-
? StringParameter | PasswordParameter | FilepathParameter
170-
: P[K] extends number
171-
? NumberParameter
172-
: P[K] extends boolean
173-
? BooleanParameter
174-
: P[K] extends Array<infer G>
175-
? EnumParameter<G>
176-
: P[K] extends Firebot.EffectList
177-
? EffectListParameter
178-
: ScriptParameter;
179-
};
180-
181119
export type ScriptReturnObject = {
182120
success: boolean;
183121
errorMessage?: string;
@@ -191,7 +129,7 @@ export namespace Firebot {
191129
| CustomScriptManifest
192130
| PromiseLike<CustomScriptManifest>;
193131

194-
getDefaultParameters(): DefaultParametersConfig<P>;
132+
getDefaultParameters(): ParametersConfig<P>;
195133

196134
/**
197135
* Called at app start and when the script is added to Firebot

types/modules/firebot-parameters.d.ts

Lines changed: 93 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1,32 +1,48 @@
11
import { Firebot } from "..";
22

3-
type BaseParameter = {
3+
export type BaseParameter = {
4+
/**
5+
* The title of the parameter
6+
* Supports markdown
7+
*/
48
title: string;
9+
/**
10+
* The description of the parameter
11+
* Supports markdown
12+
*/
513
description?: string;
14+
/**
15+
* @deprecated use `title` and `description` instead
16+
*/
17+
secondaryDescription?: string;
18+
/**
19+
* Shown under the parameter as muted text
20+
* Supports markdown
21+
*/
622
tip?: string;
723
showBottomHr?: boolean;
824
validation?: {
925
required?: boolean;
1026
};
1127
};
1228

13-
type StringParameter = BaseParameter & {
29+
export type StringParameter = BaseParameter & {
1430
type: "string";
1531
useTextArea?: boolean;
1632
default: string;
1733
};
1834

19-
type PasswordParameter = BaseParameter & {
35+
export type PasswordParameter = BaseParameter & {
2036
type: "password";
2137
default: string;
2238
};
2339

24-
type BooleanParameter = BaseParameter & {
40+
export type BooleanParameter = BaseParameter & {
2541
type: "boolean";
2642
default: boolean;
2743
};
2844

29-
type NumberParameter = BaseParameter & {
45+
export type NumberParameter = BaseParameter & {
3046
type: "number";
3147
placeholder?: string;
3248
default: number;
@@ -36,13 +52,18 @@ type NumberParameter = BaseParameter & {
3652
};
3753
};
3854

39-
type EnumParameter = BaseParameter & {
55+
export type EnumParameter<G = string | number> = BaseParameter & {
4056
type: "enum";
41-
options: Array<string | number>;
42-
default: string | number;
57+
options: Array<G>;
58+
default: G | undefined;
59+
searchable?: boolean;
60+
/**
61+
* Only used if `searchable` is true
62+
*/
63+
placeholder?: string;
4364
};
4465

45-
type FilepathParameter = BaseParameter & {
66+
export type FilepathParameter = BaseParameter & {
4667
type: "filepath";
4768
fileOptions?: {
4869
directoryOnly: boolean;
@@ -55,25 +76,25 @@ type FilepathParameter = BaseParameter & {
5576
};
5677
};
5778

58-
type EffectListParameter = BaseParameter & {
79+
export type EffectListParameter = BaseParameter & {
5980
type: "effectlist";
6081
};
6182

62-
type DiscordChannelWebhookParameter = BaseParameter & {
83+
export type DiscordChannelWebhookParameter = BaseParameter & {
6384
type: "discord-channel-webhooks";
6485
};
6586

66-
type CurrencySelectParameter = BaseParameter & {
87+
export type CurrencySelectParameter = BaseParameter & {
6788
type: "currency-select";
6889
default?: string;
6990
};
7091

71-
type ChatterSelectParameter = BaseParameter & {
92+
export type ChatterSelectParameter = BaseParameter & {
7293
type: "chatter-select";
7394
default?: "Bot" | "Streamer";
7495
};
7596

76-
type EditableListParameter = BaseParameter & {
97+
export type EditableListParameter = BaseParameter & {
7798
type: "editable-list";
7899
default?: string[];
79100
settings: {
@@ -85,12 +106,14 @@ type EditableListParameter = BaseParameter & {
85106
};
86107
};
87108

88-
type MultiselectParameter = BaseParameter & {
109+
export type MultiselectParameter<
110+
T extends string | number = string | number
111+
> = BaseParameter & {
89112
type: "multiselect";
90-
default?: string[] | number[];
113+
default?: T[];
91114
settings: {
92115
options: Array<{
93-
id: string | number;
116+
id: T;
94117
name: string;
95118
}>;
96119
};
@@ -104,7 +127,7 @@ export type RolePercentageParameterValue = {
104127
}>;
105128
};
106129

107-
type RolePercentagesParameter = BaseParameter & {
130+
export type RolePercentagesParameter = BaseParameter & {
108131
type: "role-percentages";
109132
default?: RolePercentageParameterValue;
110133
};
@@ -117,7 +140,7 @@ export type RoleNumberParameterValue = {
117140
}>;
118141
};
119142

120-
type RoleNumberParameter = BaseParameter & {
143+
export type RoleNumberParameter = BaseParameter & {
121144
type: "role-numbers";
122145
default?: RoleNumberParameterValue;
123146
settings: {
@@ -128,6 +151,42 @@ type RoleNumberParameter = BaseParameter & {
128151
};
129152
};
130153

154+
export type ButtonParameter = BaseParameter & {
155+
type: "button";
156+
/**
157+
* The event name that will be sent to the backend when the button is clicked
158+
*/
159+
backendEventName: string;
160+
buttonText: string;
161+
size?: "extraSmall" | "small" | "large";
162+
buttonType?:
163+
| "default"
164+
| "primary"
165+
| "success"
166+
| "info"
167+
| "warning"
168+
| "danger"
169+
| "link";
170+
tooltip?: string;
171+
tooltipPlacement?:
172+
| "top"
173+
| "top-left"
174+
| "top-right"
175+
| "bottom"
176+
| "bottom-left"
177+
| "bottom-right"
178+
| "left"
179+
| "left-top"
180+
| "left-bottom"
181+
| "right"
182+
| "right-top"
183+
| "right-bottom";
184+
};
185+
186+
export type UnknownParameter = BaseParameter & {
187+
[key: string]: unknown;
188+
};
189+
131190
type FirebotParameter =
132191
| StringParameter
133192
| PasswordParameter
@@ -141,22 +200,29 @@ type FirebotParameter =
141200
| EditableListParameter
142201
| MultiselectParameter
143202
| RolePercentagesParameter
144-
| RoleNumberParameter;
203+
| RoleNumberParameter
204+
| ButtonParameter
205+
| UnknownParameter;
145206

146-
type DefaultParametersConfig<P> = {
207+
export type ParametersConfig<P> = {
147208
[K in keyof P]: P[K] extends string
148209
?
149210
| StringParameter
150211
| PasswordParameter
151212
| FilepathParameter
152213
| ChatterSelectParameter
153214
| CurrencySelectParameter
215+
| EnumParameter<string>
154216
: P[K] extends number
155-
? NumberParameter
217+
? NumberParameter | EnumParameter<number>
156218
: P[K] extends boolean
157-
? BooleanParameter
158-
: P[K] extends Array<string> | Array<number>
159-
? EnumParameter | MultiselectParameter | EditableListParameter
219+
? BooleanParameter | EnumParameter<boolean>
220+
: P[K] extends Array<string>
221+
? MultiselectParameter<string> | EditableListParameter
222+
: P[K] extends Array<number>
223+
? MultiselectParameter<number>
224+
: P[K] extends void | undefined | null
225+
? ButtonParameter
160226
: P[K] extends RolePercentageParameterValue
161227
? RolePercentagesParameter
162228
: P[K] extends RoleNumberParameterValue
@@ -169,11 +235,11 @@ type DefaultParametersConfig<P> = {
169235
type FirebotParamCategory<ParamConfig extends Record<string, unknown>> = {
170236
title: string;
171237
sortRank?: number;
172-
settings: DefaultParametersConfig<ParamConfig>;
238+
settings: ParametersConfig<ParamConfig>;
173239
};
174240

175241
export type FirebotParams = Record<string, Record<string, unknown>>;
176242

177243
export type FirebotParameterCategories<Config extends FirebotParams> = {
178244
[Category in keyof Config]: FirebotParamCategory<Config[Category]>;
179-
};
245+
};

0 commit comments

Comments
 (0)