class CompanionItemDefinition {
/** @type {string} */
label;
/** @type {CompanionInputField[]} */
options;
}
class CompanionActionDefinition extends CompanionItemDefinition {
/**
* @type {?function}
* @param {CompanionActionEvent} action
* @param {CompanionActionEventInfo} info
* @returns {void}
*/
callback;
/**
* @type {?function}
* @param {CompanionActionEvent} action
* @returns {void}
*/
subscribe;
/**
* @type {?function}
* @param {CompanionActionEvent} action
* @returns {void}
*/
unsubscribe;
}
class CompanionFeedbackDefinition extends CompanionItemDefinition {
/** @type {?string} */
description;
/**
* @type {?function}
* @param {CompanionFeedbackEvent} feedback
* @returns {CompanionFeedbackResult}
*/
callback;
/**
* @type {?function}
* @param {CompanionFeedbackEvent} feedback
* @returns {void}
*/
subscribe;
/**
* @type {?function}
* @param {CompanionFeedbackEvent} feedback
* @returns {void}
*/
unsubscribe;
}
/*
class CompanionActionEvent {
id: string
action: string
options: { [key: string]: number | string | boolean | undefined }
}
class CompanionActionEventInfo {
deviceId: string | undefined
page: number
bank: number
}
class CompanionFeedbackEvent {
id: string
type: string
options: { [key: string]: number | string | boolean | undefined }
}
class CompanionFeedbackResult {
color?: number
bgcolor?: number
}
*/
class DropdownChoice {
/** @type {(string|number)} */
id
/** @type {string} */
label
}
class CompanionInputField {
/** @type {string} */
id;
/**
* 'text' | 'textinput' | 'dropdown' | 'colorpicker' | 'number' | 'checkbox'
* @type {string}
*/
type; // TODO - multiselect
/** @type {string} */
label;
/** @type {?string} */
tooltip;
}
class CompanionInputFieldText extends CompanionInputField {
/** Type = 'text' */
type = 'text';
/** @type {string} */
value
}
class CompanionInputFieldColor extends CompanionInputField {
/** Type = 'colorpicker' */
type = 'colorpicker';
/** @type {number} */
default;
}
class CompanionInputFieldTextInput extends CompanionInputField {
/** Type = 'textinput' */
type = 'textinput';
/** @type {?string} */
regex;
/** @type {?string} */
default;
}
/*
class CompanionInputFieldDropdown extends CompanionInputField {
type: 'dropdown'
default: ConfigValue
choices: DropdownChoice[]
}
class CompanionInputFieldCheckbox extends CompanionInputField {
type: 'checkbox'
default: boolean
}
class CompanionInputFieldNumber extends CompanionInputField {
type: 'number'
min: number
max: number
step?: number
range?: boolean
required?: boolean
default: number
}
class CompanionConfigField extends CompanionInputField {
width: number
}
export type SomeCompanionConfigField = SomeCompanionInputField & CompanionConfigField
class CompanionVariable {
label: string
name: string
}
class CompanionPreset {
category: string
label: string
bank: {
style: 'text'
text: string
size: 'auto' | '7' | '14' | '18' | '24' | '30' | '44'
color: number
bgcolor: number
}
feedbacks: Array<{
type: string
options: { [key: string]: number | string | boolean | undefined }
}>
actions: Array<{
action: string
options: { [key: string]: number | string | boolean | undefined }
}>
release_actions?: Array<{
action: string
options: { [key: string]: number | string | boolean | undefined }
}>
}
class CompanionFeedbacks {
[id: string]: CompanionFeedback | undefined
}
class CompanionActions {
[id: string]: CompanionAction | undefined
}
export type CompanionUpgradeScript<TConfig> = (
config: CompanionCoreInstanceconfig & TConfig,
actions: CompanionMigrationAction[],
release_actions: CompanionMigrationAction[],
feedbacks: CompanionMigrationFeedback[]
) => boolean
class CompanionCoreInstanceconfig {
instance_type: string
label: string
enabled: boolean
}
class CompanionMigrationAction {
readonly id: string
readonly instance: string
label: string
action: string
options: { [key: string]: number | string | boolean | undefined }
}
class CompanionMigrationFeedback {
readonly id: string
readonly instance_id: string
type: string
options: { [key: string]: number | string | boolean | undefined }
}
*/
exports = module.exports = {
CompanionActionDefinition,
CompanionItemDefinition,
CompanionFeedbackDefinition,
CompanionInputField,
CompanionInputFieldText,
CompanionInputFieldColor,
CompanionInputFieldTextInput,
DropdownChoice
}