TypeScript type definitions for the DeskThing application framework.
npm install @deskthing/types
npm create deskthing@latest
npx @deskthing/cli template
npm install @deskthing/client @deskthing/server
Action
- Defines an executable action with properties like id, name, value, etc.ActionReference
- Reference to an action with minimal propertiesEventMode
- Enum for different input event types (KeyUp, KeyDown, Swipes, etc.)Key
- Defines a key mapping with modes and metadata
ServerEvent
- Enum for server-side events (MESSAGE, DATA, GET, etc.)SEND_TYPES
- Enum for client-to-server communication typesGetTypes
- Types for 'get' event requests
ClientManifest
- Client details like name, version, device infoClientPreferences
- User preferences for client appearance/behaviorApp
- Interface for app state in clientKeyTrigger
- Interface for key trigger events
Task
- Defines a task with steps and metadataStep
- Base interface for task stepsTaskStep
- Standard step in a taskTaskAction
- Step requiring action executionTaskSetting
- Step requiring settings inputSTEP_TYPES
- Enum for different step types
SettingsType
- Union type of all setting typesSettingsNumber
- Number input settingSettingsBoolean
- Boolean toggle settingSettingsString
- Text input settingSettingsSelect
- Dropdown select settingSettingsMultiSelect
- Multiple selection settingSettingsColor
- Color picker settingAppSettings
- Record of app settings
SongData
- Current playing song informationThemeColor
- Color theme informationAUDIO_REQUESTS
- Enum for audio control requests
AppManifest
- Application manifest typePlatformTypes
- Supported platform typesTagTypes
- App categorization tagsLOGGING_LEVELS
- Log level typesSocketData
- Socket communication data type
import { Action, ServerEvent, ClientManifest } from "@deskthing/types";
import { DeskThing } from "@deskthing/server";
// Define an action
const myAction: Action = {
id: "my-action",
name: "My Action",
version: "1.0.0",
enabled: true,
};
DeskThing.registerAction(myAction);
DeskThing.on(ServerEvent.ACTION, (event) => {
// Handle action event
});
// Handle server events
function handleEvent(event: ServerEvent) {
switch (event) {
case ServerEvent.DATA:
// Handle data event
break;
case ServerEvent.ACTION:
// Handle action event
break;
}
}
MIT