diff --git a/.gitmodules b/.gitmodules
index a1ff86e99..eae6aad6a 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -37,3 +37,6 @@
[submodule "external/push-receiver"]
path = external/push-receiver
url = ../../koush/push-receiver.git
+[submodule "sdk/developer.scrypted.app"]
+ path = sdk/developer.scrypted.app
+ url = ../../koush/developer.scrypted.app
diff --git a/sdk/.gitignore b/sdk/.gitignore
index a07100083..ed6265540 100644
--- a/sdk/.gitignore
+++ b/sdk/.gitignore
@@ -1,3 +1,4 @@
node_modules/
*.map
schema.json
+docs
diff --git a/sdk/README.md b/sdk/README.md
new file mode 100644
index 000000000..9542befe8
--- /dev/null
+++ b/sdk/README.md
@@ -0,0 +1,211 @@
+# Table of Contents
+ * [Getting Started](#getting-started)
+ * [Typescript Sample Setup](#typescript-sample-setup)
+ * [Creating a Switch](#creating-a-switch)
+ * [Core Concepts](#core-concepts)
+ * [Interfaces](#interfaces)
+ * [Events](#events)
+ * [Creating Multiple Devices](#creating-multiple-devices)
+ * [Full Reference](/modules)
+
+
+
+
+# Getting Started
+
+The quickest way to get started is to check out the the [Typescript sample](https://github.com/koush/scrypted-vscode-typescript) and open it in Visual Studio Code. The setup instructions can be found in the readme for the [project](https://github.com/koush/scrypted-vscode-typescript).
+
+
+
+## Typescript Sample Setup
+
+These instructions can be followed on your preferred development machine, and do not need to be run on the Scrypted Server itself. The Scrypted SDK can deploy and **debug** plugins running on a remote server. For example, the VS Code development environment can be running on a Mac, while the server is running on a Raspberry Pi.
+
+1. npm install
+2. Open this plugin director yin VS Code.
+3. Edit `.vscode/settings.json` to point to the IP address of your Scrypted server. The default is `127.0.0.1`, your local machine.
+4. Press Launch (green arrow button in the Run and Debug sidebar) to start debugging.
+ * The VS Code `Terminal` area may show an authentication failure and prompt you to log in to the Scrypted Management Console with `npx scrypted login`. You will only need to do this once. You can then relaunch afterwards.
+
+
+
+
+
+
+## Creating a Switch
+
+The aforementioned sample will create a single switch device.
+
+```typescript
+import axios from 'axios';
+import { OnOff, ScryptedDeviceBase } from '@scrypted/sdk';
+
+console.log('Hello World. This will create a virtual OnOff device.');
+// OnOff is a simple binary switch. See "interfaces" in package.json
+// to add support for more capabilities, like Brightness or Lock.
+
+class TypescriptLight extends ScryptedDeviceBase implements OnOff {
+ constructor() {
+ super();
+ this.on = this.on || false;
+ }
+ async turnOff() {
+ this.console.log('turnOff was called!');
+ this.on = false;
+ }
+ async turnOn() {
+ // set a breakpoint here.
+ this.console.log('turnOn was called!');
+
+ this.console.log("Let's pretend to perform a web request on an API that would turn on a light.");
+ const ip = await axios.get('http://jsonip.com');
+ this.console.log(`my ip: ${ip.data.ip}`);
+
+ this.on = true;
+ }
+}
+
+export default TypescriptLight;
+```
+
+
+
+# Core Concepts
+
+Devices the core entry points and objects within Scrypted. A device can be a physical device, a virtual device, a provider of other devices (like a hub), a webhook, etc. Devices have two primary properties: Interfaces and Events.
+
+
+## Interfaces
+
+Interfaces are how devices expose their capabilities to Scrypted. An OnOff interface represents a binary switch. The Brightness interface represents a light that can be dimmed. The ColorSettingRgb interface indicates the light can change color. A device may expose multiple different interfaces to describe its functionality.
+
+For example, given the following devices, the interfaces they would implement:
+
+Outlet: OnOff,
+Dimmer Switch: OnOff, Brightness,
+Color Bulb: OnOff, Brightness, ColorSettingRgb
+Interfaces aren't only used represent characteristics of physical devices. As mentioned, they provide ways to hook into Scrypted. The HttpRequestHandler lets you add a web hook to handle incoming web requests. EventListener lets you create handlers that respond to events. DeviceProvider acts as a controller platform (like Hue or Lifx) for exposing multiple other devices to Scrypted.
+
+Interfaces also provide a way to query the device state. Such as checking whether an outlet is on or off, the current brightness level, or the current color.
+
+```typescript
+// Interfaces describe how the current state of a device, and can be used to modify that state.
+if (light.on) {
+ light.turnOff();
+}
+else {
+ light.turnOn();
+}
+```
+
+
+## Events
+
+Scrypted maintains the state of all connected devices. Whenever the state of an interface is updated on a device, an Event will be triggered for that particular interface.
+
+For example, when a light turns on, the Light device would send an OnOff event. If a Slack message is received, the Slack device would send a MessagingEndpoint event. Setting a schedule for sunrise on weekdays would send an Alarm event on that schedule.
+
+Automations subscribe to these events in your smart home setup and react accordingly.
+
+```
+// Events are triggered by the device on update, and can be observed.
+light.listen('OnOff', (eventSource: ScryptedDevice, eventDetails: EventDetails, eventData: object) => {
+ if (eventData) {
+ log.i('The light was turned on.');
+ }
+ else {
+ log.i('The light was turned off.');
+ }
+});
+```
+
+
+
+# Creating Multiple Devices
+
+Most plugins will want to create multiple devices. This is done by implementing the DeviceProvider interface.
+
+To do this, thep project `package.json` needs to update the `scrypted` section that describes the plugin:
+
+```json
+"scrypted": {
+ "name": "TypeScript Light Provider",
+ "type": "DeviceProvider",
+ "interfaces": [
+ "DeviceProvider"
+ ]
+},
+```
+
+Then, the code is updated to support multiple lights:
+
+```typescript
+import axios from 'axios';
+import sdk, { DeviceProvider, OnOff, ScryptedDeviceBase, ScryptedDeviceType, ScryptedInterface } from '@scrypted/sdk';
+
+class TypescriptLight extends ScryptedDeviceBase implements OnOff {
+ constructor(nativeId?: string) {
+ super(nativeId);
+ this.on = this.on || false;
+ }
+ async turnOff() {
+ this.console.log('turnOff was called!');
+ this.on = false;
+ }
+ async turnOn() {
+ // set a breakpoint here.
+ this.console.log('turnOn was called!');
+
+ this.console.log("Let's pretend to perform a web request on an API that would turn on a light.");
+ const ip = await axios.get('http://jsonip.com');
+ this.console.log(`my ip: ${ip.data.ip}`);
+
+ this.on = true;
+ }
+}
+
+class MyDeviceProvider extends ScryptedDeviceBase implements DeviceProvider {
+ constructor(nativeId?: string) {
+ super(nativeId);
+
+ this.prepareDevices();
+ }
+
+ async prepareDevices() {
+ // "Discover" the lights provided by this provider to Scrypted.
+ await sdk.deviceManager.onDevicesChanged({
+ devices: [
+ {
+ // the native id is the unique identifier for this light within
+ // your plugin.
+ nativeId: 'light1',
+ name: 'Light 1',
+ type: ScryptedDeviceType.Light,
+ interfaces: [
+ ScryptedInterface.OnOff,
+ ]
+ },
+ {
+ nativeId: 'light2',
+ name: 'Light 1',
+ type: ScryptedDeviceType.Light,
+ interfaces: [
+ ScryptedInterface.OnOff,
+ ]
+ }
+ ]
+ });
+ }
+
+ // After the device is discovered, Scrypted will request the plugin create the
+ // instance that can be used to create the light.
+ getDevice(nativeId: string) {
+ return new TypescriptLight(nativeId);
+ }
+}
+
+// Export the provider from the plugin, rather than the individual light.
+export default MyDeviceProvider;
+```
+
+Running the sample will then create 3 devices: the plugin/hub and the 2 lights it controls.
diff --git a/sdk/developer.scrypted.app b/sdk/developer.scrypted.app
new file mode 160000
index 000000000..2d8cf0a64
--- /dev/null
+++ b/sdk/developer.scrypted.app
@@ -0,0 +1 @@
+Subproject commit 2d8cf0a642c9ea408716e04c1556d3f6234a3ae0
diff --git a/sdk/docs.css b/sdk/docs.css
new file mode 100644
index 000000000..b46f87b4c
--- /dev/null
+++ b/sdk/docs.css
@@ -0,0 +1,5 @@
+@import url('https://fonts.googleapis.com/css2?family=Lato:ital,wght@0,100;0,300;1,100&display=swap');
+
+body {
+ font-family: "Lato", sans-serif;
+}
\ No newline at end of file
diff --git a/sdk/gen/types.input.ts b/sdk/gen/types.input.ts
index 0a0508988..e986378b8 100644
--- a/sdk/gen/types.input.ts
+++ b/sdk/gen/types.input.ts
@@ -2,6 +2,8 @@ export type ScryptedNativeId = string | undefined;
/**
* All devices in Scrypted implement ScryptedDevice, which contains the id, name, and type. Add listeners to subscribe to events from that device.
+ *
+ * @category Core Reference
*/
export interface ScryptedDevice {
/**
@@ -52,6 +54,9 @@ export interface EventListenerOptions {
watch?: boolean;
}
+/**
+ * @category Core Reference
+ */
export type EventListener = (eventSource: ScryptedDevice | undefined, eventDetails: EventDetails, eventData: any) => void;
export interface EventDetails {
@@ -62,11 +67,17 @@ export interface EventDetails {
}
/**
* Returned when an event listener is attached to an EventEmitter. Call removeListener to unregister from events.
- */
+ *
+ * @category Core Reference
+*/
export interface EventListenerRegister {
removeListener(): void;
}
+
+/**
+ * @category Core Reference
+ */
export enum ScryptedDeviceType {
Builtin = "Builtin",
Camera = "Camera",
@@ -188,6 +199,8 @@ export interface Notifier {
}
/**
* MediaObject is an intermediate object within Scrypted to represent all media objects. Plugins should use the MediaConverter to convert the Scrypted MediaObject into a desired type, whether it is a externally accessible URL, a Buffer, etc.
+ *
+ * @category Media Reference
*/
export interface MediaObject {
mimeType: string;
@@ -672,8 +685,88 @@ export interface Entry {
export interface EntrySensor {
entryOpen?: boolean;
}
+/**
+ * DeviceManager is the interface used by DeviceProvider to report new devices, device states, and device events to Scrypted.
+ *
+ * @category Device Provider Reference
+ */
+export interface DeviceManager {
+ /**
+ * Get the logger for a device given a native id.
+ */
+ getDeviceLogger(nativeId?: ScryptedNativeId): Logger;
+
+ /**
+ * Get the console for the device given a native id.
+ */
+ getDeviceConsole?(nativeId?: ScryptedNativeId): Console;
+
+ /**
+ * Get the console for the device given a native id.
+ */
+ getMixinConsole?(mixinId: string, nativeId?: ScryptedNativeId): Console;
+
+ /**
+ * Get the device state maintained by Scrypted. Setting properties on this state will update the state in Scrypted.
+ */
+ getDeviceState(nativeId?: ScryptedNativeId): DeviceState;
+
+ /**
+ * Create a device state object that will trap all state setting calls. Used internally by mixins and fork.
+ */
+ createDeviceState?(id: string, setState: (property: string, value: any) => Promise): DeviceState;
+
+ /**
+ * Get the storage for a mixin.
+ * @param id The id of the device being mixined.
+ * @param nativeId The nativeId of the MixinProvider.
+ */
+ getMixinStorage(id: string, nativeId?: ScryptedNativeId): Storage;
+
+ /**
+ * Fire an event for a mixin provided by this plugin.
+ */
+ onMixinEvent(id: string, mixinDevice: any, eventInterface: string, eventData: any): Promise;
+
+ /**
+ * Get the device Storage object.
+ */
+ getDeviceStorage(nativeId?: ScryptedNativeId): Storage;
+
+ /**
+ * Get all the native ids that have been reported by this plugin. This always includes "undefined", the plugin itself.
+ */
+ getNativeIds(): string[];
+
+ /**
+ * onDeviceDiscovered is used to report new devices that are trickle discovered, one by one, such as via a network broadcast.
+ */
+ onDeviceDiscovered(device: Device): Promise;
+
+ /**
+ * Fire an event for a device provided by this plugin.
+ */
+ onDeviceEvent(nativeId: ScryptedNativeId, eventInterface: string, eventData: any): Promise;
+
+ /**
+ * onDeviceRemoved is used to report when discovered devices are removed.
+ */
+ onDeviceRemoved(nativeId: string): Promise;
+
+ /**
+ * onDevicesChanged is used to sync Scrypted with devices that are attached to a hub, such as Hue or SmartThings. All the devices should be reported at once.
+ */
+ onDevicesChanged(devices: DeviceManifest): Promise;
+
+ /**
+ * Restart the plugin. May not happen immediately.
+ */
+ requestRestart(): Promise;
+}
/**
* DeviceProvider acts as a controller/hub and exposes multiple devices to Scrypted Device Manager.
+ *
+ * @category Device Provider Reference
*/
export interface DeviceProvider {
/**
@@ -682,11 +775,25 @@ export interface DeviceProvider {
getDevice(nativeId: ScryptedNativeId): any;
}
+/**
+ * DeviceManifest is passed to DeviceManager.onDevicesChanged to sync a full list of devices from the controller/hub (Hue, SmartThings, etc)
+ *
+ * @category Device Provider Reference
+ */
+export interface DeviceManifest {
+ /**
+ * The native id of the hub or discovery DeviceProvider that manages these devices.
+ */
+ providerNativeId?: ScryptedNativeId;
+ devices?: Device[];
+}
export interface DeviceCreatorSettings {
[key: string]: SettingValue;
}
/**
* A DeviceProvider that allows the user to create a device.
+ *
+ * @category Device Provider Reference
*/
export interface DeviceCreator {
getCreateDeviceSettings(): Promise;
@@ -698,6 +805,8 @@ export interface DeviceCreator {
}
/**
* A DeviceProvider that has a device discovery mechanism.
+ *
+ * @category Device Provider Reference
*/
export interface DeviceDiscovery {
/**
@@ -713,6 +822,8 @@ export interface Battery {
}
/**
* Refresh indicates that this device has properties that are not automatically updated, and must be periodically refreshed via polling. Device implementations should never implement their own underlying polling algorithm, and instead implement Refresh to allow Scrypted to manage polling intelligently.
+ *
+ * @category Device Provider Reference
*/
export interface Refresh {
/**
@@ -1047,6 +1158,9 @@ export interface MediaObjectOptions {
sourceId?: string;
}
+/**
+ * @category Media Reference
+ */
export interface MediaManager {
/**
* Add an convertor to consider for use when converting MediaObjects.
@@ -1123,82 +1237,6 @@ export interface FFmpegInput extends MediaStreamUrl {
videoDecoderArguments?: string[];
h264FilterArguments?: string[];
}
-/**
- * DeviceManager is the interface used by DeviceProvider to report new devices, device states, and device events to Scrypted.
- */
-export interface DeviceManager {
- /**
- * Get the logger for a device given a native id.
- */
- getDeviceLogger(nativeId?: ScryptedNativeId): Logger;
-
- /**
- * Get the console for the device given a native id.
- */
- getDeviceConsole?(nativeId?: ScryptedNativeId): Console;
-
- /**
- * Get the console for the device given a native id.
- */
- getMixinConsole?(mixinId: string, nativeId?: ScryptedNativeId): Console;
-
- /**
- * Get the device state maintained by Scrypted. Setting properties on this state will update the state in Scrypted.
- */
- getDeviceState(nativeId?: ScryptedNativeId): DeviceState;
-
- /**
- * Create a device state object that will trap all state setting calls. Used internally by mixins and fork.
- */
- createDeviceState?(id: string, setState: (property: string, value: any) => Promise): DeviceState;
-
- /**
- * Get the storage for a mixin.
- * @param id The id of the device being mixined.
- * @param nativeId The nativeId of the MixinProvider.
- */
- getMixinStorage(id: string, nativeId?: ScryptedNativeId): Storage;
-
- /**
- * Fire an event for a mixin provided by this plugin.
- */
- onMixinEvent(id: string, mixinDevice: any, eventInterface: string, eventData: any): Promise;
-
- /**
- * Get the device Storage object.
- */
- getDeviceStorage(nativeId?: ScryptedNativeId): Storage;
-
- /**
- * Get all the native ids that have been reported by this plugin. This always includes "undefined", the plugin itself.
- */
- getNativeIds(): string[];
-
- /**
- * onDeviceDiscovered is used to report new devices that are trickle discovered, one by one, such as via a network broadcast.
- */
- onDeviceDiscovered(device: Device): Promise;
-
- /**
- * Fire an event for a device provided by this plugin.
- */
- onDeviceEvent(nativeId: ScryptedNativeId, eventInterface: string, eventData: any): Promise;
-
- /**
- * onDeviceRemoved is used to report when discovered devices are removed.
- */
- onDeviceRemoved(nativeId: string): Promise;
-
- /**
- * onDevicesChanged is used to sync Scrypted with devices that are attached to a hub, such as Hue or SmartThings. All the devices should be reported at once.
- */
- onDevicesChanged(devices: DeviceManifest): Promise;
-
- /**
- * Restart the plugin. May not happen immediately.
- */
- requestRestart(): Promise;
-}
export interface DeviceInformation {
model?: string;
manufacturer?: string;
@@ -1211,6 +1249,8 @@ export interface DeviceInformation {
}
/**
* Device objects are created by DeviceProviders when new devices are discover and synced to Scrypted via the DeviceManager.
+ *
+ * @category Device Provider Reference
*/
export interface Device {
name: string;
@@ -1229,18 +1269,10 @@ export interface Device {
internal?: boolean;
}
-/**
- * DeviceManifest is passed to DeviceManager.onDevicesChanged to sync a full list of devices from the controller/hub (Hue, SmartThings, etc)
- */
-export interface DeviceManifest {
- /**
- * The native id of the hub or discovery DeviceProvider that manages these devices.
- */
- providerNativeId?: ScryptedNativeId;
- devices?: Device[];
-}
/**
* EndpointManager provides publicly accessible URLs that can be used to contact your Scrypted Plugin.
+ *
+ * @category Webhook and Push Reference
*/
export interface EndpointManager {
/**
@@ -1301,6 +1333,8 @@ export interface EndpointManager {
}
/**
* SystemManager is used by scripts to query device state and access devices.
+ *
+ * @category Core Reference
*/
export interface SystemManager {
/**
@@ -1376,6 +1410,8 @@ export interface MixinProvider {
}
/**
* The HttpRequestHandler allows handling of web requests under the endpoint path: /endpoint/npm-package-name/*.
+ *
+ * @category Webhook and Push Reference
*/
export interface HttpRequestHandler {
/**
@@ -1384,6 +1420,9 @@ export interface HttpRequestHandler {
onRequest(request: HttpRequest, response: HttpResponse): Promise;
}
+/**
+ * @category Webhook and Push Reference
+ */
export interface HttpRequest {
body?: string;
headers?: object;
@@ -1395,6 +1434,8 @@ export interface HttpRequest {
}
/**
* Response object provided by the HttpRequestHandler.
+ *
+ * @category Webhook and Push Reference
*/
export interface HttpResponse {
send(body: string): void;
@@ -1411,6 +1452,9 @@ export interface HttpResponse {
sendSocket(socket: any, options: HttpResponseOptions): void;
}
+/**
+ * @category Webhook and Push Reference
+ */
export interface HttpResponseOptions {
code?: number;
headers?: object;
@@ -1419,6 +1463,10 @@ export interface EngineIOHandler {
onConnection(request: HttpRequest, webSocketUrl: string): Promise;
}
+/**
+ * @category Webhook and Push Reference
+ *
+ */
export interface PushHandler {
/**
* Callback to handle an incoming push.
diff --git a/sdk/index.js b/sdk/index.js
index 5d6606c5b..342b65d5b 100644
--- a/sdk/index.js
+++ b/sdk/index.js
@@ -1,7 +1,11 @@
"use strict";
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
- Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
+ var desc = Object.getOwnPropertyDescriptor(m, k);
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
+ desc = { enumerable: true, get: function() { return m[k]; } };
+ }
+ Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
diff --git a/sdk/package-lock.json b/sdk/package-lock.json
index 9575a342b..cc40fcb16 100644
--- a/sdk/package-lock.json
+++ b/sdk/package-lock.json
@@ -1,12 +1,12 @@
{
"name": "@scrypted/sdk",
- "version": "0.0.207",
+ "version": "0.0.208",
"lockfileVersion": 2,
"requires": true,
"packages": {
"": {
"name": "@scrypted/sdk",
- "version": "0.0.207",
+ "version": "0.0.208",
"license": "ISC",
"dependencies": {
"@babel/preset-typescript": "^7.16.7",
@@ -36,7 +36,7 @@
"@types/stringify-object": "^4.0.0",
"stringify-object": "^3.3.0",
"ts-node": "^10.4.0",
- "typedoc": "^0.22.8",
+ "typedoc": "^0.23.15",
"typescript-json-schema": "^0.50.1"
}
},
@@ -1618,9 +1618,9 @@
}
},
"node_modules/jsonc-parser": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.0.0.tgz",
- "integrity": "sha512-fQzRfAbIBnR0IQvftw9FJveWiHp72Fg20giDrHz6TdfB12UH/uue0D3hm57UB5KgAVuniLMCaS8P1IMj9NR7cA==",
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.0.tgz",
+ "integrity": "sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==",
"dev": true
},
"node_modules/jsonify": {
@@ -1707,9 +1707,9 @@
"dev": true
},
"node_modules/marked": {
- "version": "4.0.10",
- "resolved": "https://registry.npmjs.org/marked/-/marked-4.0.10.tgz",
- "integrity": "sha512-+QvuFj0nGgO970fySghXGmuw+Fd0gD2x3+MqCWLIPf5oxdv1Ka6b2q+z9RP01P/IaKPMEramy+7cNy/Lw8c3hw==",
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/marked/-/marked-4.1.0.tgz",
+ "integrity": "sha512-+Z6KDjSPa6/723PQYyc1axYZpYYpDnECDaU6hkaf5gqBieBkMKYReL5hteF2QizhlMbgbo8umXl/clZ67+GlsA==",
"dev": true,
"bin": {
"marked": "bin/marked.js"
@@ -1997,14 +1997,14 @@
}
},
"node_modules/shiki": {
- "version": "0.10.0",
- "resolved": "https://registry.npmjs.org/shiki/-/shiki-0.10.0.tgz",
- "integrity": "sha512-iczxaIYeBFHTFrQPb9DVy2SKgYxC4Wo7Iucm7C17cCh2Ge/refnvHscUOxM85u57MfLoNOtjoEFUWt9gBexblA==",
+ "version": "0.11.1",
+ "resolved": "https://registry.npmjs.org/shiki/-/shiki-0.11.1.tgz",
+ "integrity": "sha512-EugY9VASFuDqOexOgXR18ZV+TbFrQHeCpEYaXamO+SZlsnT/2LxuLBX25GGtIrwaEVFXUAbUQ601SWE2rMwWHA==",
"dev": true,
"dependencies": {
"jsonc-parser": "^3.0.0",
"vscode-oniguruma": "^1.6.1",
- "vscode-textmate": "5.2.0"
+ "vscode-textmate": "^6.0.0"
}
},
"node_modules/sirv": {
@@ -2248,31 +2248,51 @@
}
},
"node_modules/typedoc": {
- "version": "0.22.11",
- "resolved": "https://registry.npmjs.org/typedoc/-/typedoc-0.22.11.tgz",
- "integrity": "sha512-pVr3hh6dkS3lPPaZz1fNpvcrqLdtEvXmXayN55czlamSgvEjh+57GUqfhAI1Xsuu/hNHUT1KNSx8LH2wBP/7SA==",
+ "version": "0.23.15",
+ "resolved": "https://registry.npmjs.org/typedoc/-/typedoc-0.23.15.tgz",
+ "integrity": "sha512-x9Zu+tTnwxb9YdVr+zvX7LYzyBl1nieOr6lrSHbHsA22/RJK2m4Y525WIg5Mj4jWCmfL47v6f4hUzY7EIuwS5w==",
"dev": true,
"dependencies": {
- "glob": "^7.2.0",
"lunr": "^2.3.9",
- "marked": "^4.0.10",
- "minimatch": "^3.0.4",
- "shiki": "^0.10.0"
+ "marked": "^4.0.19",
+ "minimatch": "^5.1.0",
+ "shiki": "^0.11.1"
},
"bin": {
"typedoc": "bin/typedoc"
},
"engines": {
- "node": ">= 12.10.0"
+ "node": ">= 14.14"
},
"peerDependencies": {
- "typescript": "4.0.x || 4.1.x || 4.2.x || 4.3.x || 4.4.x || 4.5.x"
+ "typescript": "4.6.x || 4.7.x || 4.8.x"
+ }
+ },
+ "node_modules/typedoc/node_modules/brace-expansion": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
+ "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
+ "dev": true,
+ "dependencies": {
+ "balanced-match": "^1.0.0"
+ }
+ },
+ "node_modules/typedoc/node_modules/minimatch": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz",
+ "integrity": "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==",
+ "dev": true,
+ "dependencies": {
+ "brace-expansion": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=10"
}
},
"node_modules/typescript": {
- "version": "4.5.4",
- "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.5.4.tgz",
- "integrity": "sha512-VgYs2A2QIRuGphtzFV7aQJduJ2gyfTljngLzjpfW9FoYZF6xuw1W0vW9ghCKLfcWrCFxK81CSGRAvS1pn4fIUg==",
+ "version": "4.8.3",
+ "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.8.3.tgz",
+ "integrity": "sha512-goMHfm00nWPa8UvR/CPSvykqf6dVV8x/dp0c5mFTMTIu0u0FlGWRioyy7Nn0PGAdHxpJZnuO/ut+PpQ8UiHAig==",
"dev": true,
"peer": true,
"bin": {
@@ -2355,15 +2375,15 @@
}
},
"node_modules/vscode-oniguruma": {
- "version": "1.6.1",
- "resolved": "https://registry.npmjs.org/vscode-oniguruma/-/vscode-oniguruma-1.6.1.tgz",
- "integrity": "sha512-vc4WhSIaVpgJ0jJIejjYxPvURJavX6QG41vu0mGhqywMkQqulezEqEQ3cO3gc8GvcOpX6ycmKGqRoROEMBNXTQ==",
+ "version": "1.6.2",
+ "resolved": "https://registry.npmjs.org/vscode-oniguruma/-/vscode-oniguruma-1.6.2.tgz",
+ "integrity": "sha512-KH8+KKov5eS/9WhofZR8M8dMHWN2gTxjMsG4jd04YhpbPR91fUj7rYQ2/XjeHCJWbg7X++ApRIU9NUwM2vTvLA==",
"dev": true
},
"node_modules/vscode-textmate": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/vscode-textmate/-/vscode-textmate-5.2.0.tgz",
- "integrity": "sha512-Uw5ooOQxRASHgu6C7GVvUxisKXfSgW4oFlO+aa+PAkgmH89O3CXxEEzNRNtHSqtXFTl0nAC1uYj0GMSH27uwtQ==",
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/vscode-textmate/-/vscode-textmate-6.0.0.tgz",
+ "integrity": "sha512-gu73tuZfJgu+mvCSy4UZwd2JXykjK9zAZsfmDeut5dx/1a7FeTk0XwJsSuqQn+cuMCGVbIBfl+s53X4T19DnzQ==",
"dev": true
},
"node_modules/watchpack": {
@@ -3831,9 +3851,9 @@
}
},
"jsonc-parser": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.0.0.tgz",
- "integrity": "sha512-fQzRfAbIBnR0IQvftw9FJveWiHp72Fg20giDrHz6TdfB12UH/uue0D3hm57UB5KgAVuniLMCaS8P1IMj9NR7cA==",
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.0.tgz",
+ "integrity": "sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==",
"dev": true
},
"jsonify": {
@@ -3901,9 +3921,9 @@
"dev": true
},
"marked": {
- "version": "4.0.10",
- "resolved": "https://registry.npmjs.org/marked/-/marked-4.0.10.tgz",
- "integrity": "sha512-+QvuFj0nGgO970fySghXGmuw+Fd0gD2x3+MqCWLIPf5oxdv1Ka6b2q+z9RP01P/IaKPMEramy+7cNy/Lw8c3hw==",
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/marked/-/marked-4.1.0.tgz",
+ "integrity": "sha512-+Z6KDjSPa6/723PQYyc1axYZpYYpDnECDaU6hkaf5gqBieBkMKYReL5hteF2QizhlMbgbo8umXl/clZ67+GlsA==",
"dev": true
},
"merge-stream": {
@@ -4106,14 +4126,14 @@
}
},
"shiki": {
- "version": "0.10.0",
- "resolved": "https://registry.npmjs.org/shiki/-/shiki-0.10.0.tgz",
- "integrity": "sha512-iczxaIYeBFHTFrQPb9DVy2SKgYxC4Wo7Iucm7C17cCh2Ge/refnvHscUOxM85u57MfLoNOtjoEFUWt9gBexblA==",
+ "version": "0.11.1",
+ "resolved": "https://registry.npmjs.org/shiki/-/shiki-0.11.1.tgz",
+ "integrity": "sha512-EugY9VASFuDqOexOgXR18ZV+TbFrQHeCpEYaXamO+SZlsnT/2LxuLBX25GGtIrwaEVFXUAbUQ601SWE2rMwWHA==",
"dev": true,
"requires": {
"jsonc-parser": "^3.0.0",
"vscode-oniguruma": "^1.6.1",
- "vscode-textmate": "5.2.0"
+ "vscode-textmate": "^6.0.0"
}
},
"sirv": {
@@ -4270,22 +4290,41 @@
}
},
"typedoc": {
- "version": "0.22.11",
- "resolved": "https://registry.npmjs.org/typedoc/-/typedoc-0.22.11.tgz",
- "integrity": "sha512-pVr3hh6dkS3lPPaZz1fNpvcrqLdtEvXmXayN55czlamSgvEjh+57GUqfhAI1Xsuu/hNHUT1KNSx8LH2wBP/7SA==",
+ "version": "0.23.15",
+ "resolved": "https://registry.npmjs.org/typedoc/-/typedoc-0.23.15.tgz",
+ "integrity": "sha512-x9Zu+tTnwxb9YdVr+zvX7LYzyBl1nieOr6lrSHbHsA22/RJK2m4Y525WIg5Mj4jWCmfL47v6f4hUzY7EIuwS5w==",
"dev": true,
"requires": {
- "glob": "^7.2.0",
"lunr": "^2.3.9",
- "marked": "^4.0.10",
- "minimatch": "^3.0.4",
- "shiki": "^0.10.0"
+ "marked": "^4.0.19",
+ "minimatch": "^5.1.0",
+ "shiki": "^0.11.1"
+ },
+ "dependencies": {
+ "brace-expansion": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
+ "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
+ "dev": true,
+ "requires": {
+ "balanced-match": "^1.0.0"
+ }
+ },
+ "minimatch": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz",
+ "integrity": "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==",
+ "dev": true,
+ "requires": {
+ "brace-expansion": "^2.0.1"
+ }
+ }
}
},
"typescript": {
- "version": "4.5.4",
- "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.5.4.tgz",
- "integrity": "sha512-VgYs2A2QIRuGphtzFV7aQJduJ2gyfTljngLzjpfW9FoYZF6xuw1W0vW9ghCKLfcWrCFxK81CSGRAvS1pn4fIUg==",
+ "version": "4.8.3",
+ "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.8.3.tgz",
+ "integrity": "sha512-goMHfm00nWPa8UvR/CPSvykqf6dVV8x/dp0c5mFTMTIu0u0FlGWRioyy7Nn0PGAdHxpJZnuO/ut+PpQ8UiHAig==",
"dev": true,
"peer": true
},
@@ -4341,15 +4380,15 @@
}
},
"vscode-oniguruma": {
- "version": "1.6.1",
- "resolved": "https://registry.npmjs.org/vscode-oniguruma/-/vscode-oniguruma-1.6.1.tgz",
- "integrity": "sha512-vc4WhSIaVpgJ0jJIejjYxPvURJavX6QG41vu0mGhqywMkQqulezEqEQ3cO3gc8GvcOpX6ycmKGqRoROEMBNXTQ==",
+ "version": "1.6.2",
+ "resolved": "https://registry.npmjs.org/vscode-oniguruma/-/vscode-oniguruma-1.6.2.tgz",
+ "integrity": "sha512-KH8+KKov5eS/9WhofZR8M8dMHWN2gTxjMsG4jd04YhpbPR91fUj7rYQ2/XjeHCJWbg7X++ApRIU9NUwM2vTvLA==",
"dev": true
},
"vscode-textmate": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/vscode-textmate/-/vscode-textmate-5.2.0.tgz",
- "integrity": "sha512-Uw5ooOQxRASHgu6C7GVvUxisKXfSgW4oFlO+aa+PAkgmH89O3CXxEEzNRNtHSqtXFTl0nAC1uYj0GMSH27uwtQ==",
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/vscode-textmate/-/vscode-textmate-6.0.0.tgz",
+ "integrity": "sha512-gu73tuZfJgu+mvCSy4UZwd2JXykjK9zAZsfmDeut5dx/1a7FeTk0XwJsSuqQn+cuMCGVbIBfl+s53X4T19DnzQ==",
"dev": true
},
"watchpack": {
diff --git a/sdk/package.json b/sdk/package.json
index 618e58420..03014bb53 100644
--- a/sdk/package.json
+++ b/sdk/package.json
@@ -1,6 +1,6 @@
{
"name": "@scrypted/sdk",
- "version": "0.0.207",
+ "version": "0.0.208",
"description": "",
"main": "index.js",
"scripts": {
@@ -40,7 +40,7 @@
"@types/stringify-object": "^4.0.0",
"stringify-object": "^3.3.0",
"ts-node": "^10.4.0",
- "typedoc": "^0.22.8",
+ "typedoc": "^0.23.15",
"typescript-json-schema": "^0.50.1"
},
"types": "index.d.ts"
diff --git a/sdk/scrypted_python/scrypted_sdk/types.py b/sdk/scrypted_python/scrypted_sdk/types.py
index 90c7d418a..d873f8bda 100644
--- a/sdk/scrypted_python/scrypted_sdk/types.py
+++ b/sdk/scrypted_python/scrypted_sdk/types.py
@@ -8,184 +8,184 @@ from .other import *
class AirQuality(Enum):
- Excellent = "Excellent"
- Fair = "Fair"
- Good = "Good"
- Inferior = "Inferior"
- Poor = "Poor"
- Unknown = "Unknown"
+ Excellent = undefined
+ Fair = undefined
+ Good = undefined
+ Inferior = undefined
+ Poor = undefined
+ Unknown = undefined
class FanMode(Enum):
- Auto = "Auto"
- Manual = "Manual"
+ Auto = undefined
+ Manual = undefined
class HumidityMode(Enum):
- Auto = "Auto"
- Dehumidify = "Dehumidify"
- Humidify = "Humidify"
- Off = "Off"
+ Auto = undefined
+ Dehumidify = undefined
+ Humidify = undefined
+ Off = undefined
class LockState(Enum):
- Jammed = "Jammed"
- Locked = "Locked"
- Unlocked = "Unlocked"
+ Jammed = undefined
+ Locked = undefined
+ Unlocked = undefined
class MediaPlayerState(Enum):
- Buffering = "Buffering"
- Idle = "Idle"
- Paused = "Paused"
- Playing = "Playing"
+ Buffering = undefined
+ Idle = undefined
+ Paused = undefined
+ Playing = undefined
class ScryptedDeviceType(Enum):
- API = "API"
- Automation = "Automation"
- Builtin = "Builtin"
- Camera = "Camera"
- DataSource = "DataSource"
- DeviceProvider = "DeviceProvider"
- Display = "Display"
- Doorbell = "Doorbell"
- Entry = "Entry"
- Event = "Event"
- Fan = "Fan"
- Garage = "Garage"
- Irrigation = "Irrigation"
- Light = "Light"
- Lock = "Lock"
- Notifier = "Notifier"
- Outlet = "Outlet"
- PasswordControl = "PasswordControl"
- Person = "Person"
- Program = "Program"
- Scene = "Scene"
- SecuritySystem = "SecuritySystem"
- Sensor = "Sensor"
- SmartDisplay = "SmartDisplay"
- SmartSpeaker = "SmartSpeaker"
- Speaker = "Speaker"
- Switch = "Switch"
- Thermostat = "Thermostat"
- Unknown = "Unknown"
- Vacuum = "Vacuum"
- Valve = "Valve"
+ API = undefined
+ Automation = undefined
+ Builtin = undefined
+ Camera = undefined
+ DataSource = undefined
+ DeviceProvider = undefined
+ Display = undefined
+ Doorbell = undefined
+ Entry = undefined
+ Event = undefined
+ Fan = undefined
+ Garage = undefined
+ Irrigation = undefined
+ Light = undefined
+ Lock = undefined
+ Notifier = undefined
+ Outlet = undefined
+ PasswordControl = undefined
+ Person = undefined
+ Program = undefined
+ Scene = undefined
+ SecuritySystem = undefined
+ Sensor = undefined
+ SmartDisplay = undefined
+ SmartSpeaker = undefined
+ Speaker = undefined
+ Switch = undefined
+ Thermostat = undefined
+ Unknown = undefined
+ Vacuum = undefined
+ Valve = undefined
class ScryptedInterface(Enum):
- AirQualitySensor = "AirQualitySensor"
- AmbientLightSensor = "AmbientLightSensor"
- AudioSensor = "AudioSensor"
- Authenticator = "Authenticator"
- Battery = "Battery"
- BinarySensor = "BinarySensor"
- Brightness = "Brightness"
- BufferConverter = "BufferConverter"
- CO2Sensor = "CO2Sensor"
- Camera = "Camera"
- ColorSettingHsv = "ColorSettingHsv"
- ColorSettingRgb = "ColorSettingRgb"
- ColorSettingTemperature = "ColorSettingTemperature"
- DeviceCreator = "DeviceCreator"
- DeviceDiscovery = "DeviceDiscovery"
- DeviceProvider = "DeviceProvider"
- Display = "Display"
- Dock = "Dock"
- EngineIOHandler = "EngineIOHandler"
- Entry = "Entry"
- EntrySensor = "EntrySensor"
- EventRecorder = "EventRecorder"
- Fan = "Fan"
- FloodSensor = "FloodSensor"
- HttpRequestHandler = "HttpRequestHandler"
- HumiditySensor = "HumiditySensor"
- HumiditySetting = "HumiditySetting"
- Intercom = "Intercom"
- LauncherApplication = "LauncherApplication"
- Lock = "Lock"
- LuminanceSensor = "LuminanceSensor"
- MediaPlayer = "MediaPlayer"
- Microphone = "Microphone"
- MixinProvider = "MixinProvider"
- MotionSensor = "MotionSensor"
- Notifier = "Notifier"
- OauthClient = "OauthClient"
- ObjectDetection = "ObjectDetection"
- ObjectDetector = "ObjectDetector"
- OccupancySensor = "OccupancySensor"
- OnOff = "OnOff"
- Online = "Online"
- PM25Sensor = "PM25Sensor"
- PanTiltZoom = "PanTiltZoom"
- PasswordStore = "PasswordStore"
- Pause = "Pause"
- PositionSensor = "PositionSensor"
- PowerSensor = "PowerSensor"
- Program = "Program"
- PushHandler = "PushHandler"
- RTCSignalingChannel = "RTCSignalingChannel"
- RTCSignalingClient = "RTCSignalingClient"
- Readme = "Readme"
- Refresh = "Refresh"
- Scene = "Scene"
- Scriptable = "Scriptable"
- ScryptedDevice = "ScryptedDevice"
- ScryptedPlugin = "ScryptedPlugin"
- SecuritySystem = "SecuritySystem"
- Settings = "Settings"
- SoftwareUpdate = "SoftwareUpdate"
- StartStop = "StartStop"
- TamperSensor = "TamperSensor"
- TemperatureSetting = "TemperatureSetting"
- Thermometer = "Thermometer"
- UltravioletSensor = "UltravioletSensor"
- VOCSensor = "VOCSensor"
- VideoCamera = "VideoCamera"
- VideoCameraConfiguration = "VideoCameraConfiguration"
- VideoClips = "VideoClips"
- VideoRecorder = "VideoRecorder"
+ AirQualitySensor = undefined
+ AmbientLightSensor = undefined
+ AudioSensor = undefined
+ Authenticator = undefined
+ Battery = undefined
+ BinarySensor = undefined
+ Brightness = undefined
+ BufferConverter = undefined
+ CO2Sensor = undefined
+ Camera = undefined
+ ColorSettingHsv = undefined
+ ColorSettingRgb = undefined
+ ColorSettingTemperature = undefined
+ DeviceCreator = undefined
+ DeviceDiscovery = undefined
+ DeviceProvider = undefined
+ Display = undefined
+ Dock = undefined
+ EngineIOHandler = undefined
+ Entry = undefined
+ EntrySensor = undefined
+ EventRecorder = undefined
+ Fan = undefined
+ FloodSensor = undefined
+ HttpRequestHandler = undefined
+ HumiditySensor = undefined
+ HumiditySetting = undefined
+ Intercom = undefined
+ LauncherApplication = undefined
+ Lock = undefined
+ LuminanceSensor = undefined
+ MediaPlayer = undefined
+ Microphone = undefined
+ MixinProvider = undefined
+ MotionSensor = undefined
+ Notifier = undefined
+ OauthClient = undefined
+ ObjectDetection = undefined
+ ObjectDetector = undefined
+ OccupancySensor = undefined
+ OnOff = undefined
+ Online = undefined
+ PM25Sensor = undefined
+ PanTiltZoom = undefined
+ PasswordStore = undefined
+ Pause = undefined
+ PositionSensor = undefined
+ PowerSensor = undefined
+ Program = undefined
+ PushHandler = undefined
+ RTCSignalingChannel = undefined
+ RTCSignalingClient = undefined
+ Readme = undefined
+ Refresh = undefined
+ Scene = undefined
+ Scriptable = undefined
+ ScryptedDevice = undefined
+ ScryptedPlugin = undefined
+ SecuritySystem = undefined
+ Settings = undefined
+ SoftwareUpdate = undefined
+ StartStop = undefined
+ TamperSensor = undefined
+ TemperatureSetting = undefined
+ Thermometer = undefined
+ UltravioletSensor = undefined
+ VOCSensor = undefined
+ VideoCamera = undefined
+ VideoCameraConfiguration = undefined
+ VideoClips = undefined
+ VideoRecorder = undefined
class ScryptedMimeTypes(Enum):
- FFmpegInput = "x-scrypted/x-ffmpeg-input"
- FFmpegTranscodeStream = "x-scrypted/x-ffmpeg-transcode-stream"
- InsecureLocalUrl = "text/x-insecure-local-uri"
- LocalUrl = "text/x-local-uri"
- MediaObject = "x-scrypted/x-scrypted-media-object"
- MediaStreamUrl = "text/x-media-url"
- PushEndpoint = "text/x-push-endpoint"
- RTCConnectionManagement = "x-scrypted/x-scrypted-rtc-connection-management"
- RTCSignalingChannel = "x-scrypted/x-scrypted-rtc-signaling-channel"
- RTCSignalingSession = "x-scrypted/x-scrypted-rtc-signaling-session"
- RequestMediaStream = "x-scrypted/x-scrypted-request-stream"
- SchemePrefix = "x-scrypted/x-scrypted-scheme-"
- ScryptedDevice = "x-scrypted/x-scrypted-device"
- ScryptedDeviceId = "x-scrypted/x-scrypted-device-id"
- Url = "text/x-uri"
+ FFmpegInput = undefined
+ FFmpegTranscodeStream = undefined
+ InsecureLocalUrl = undefined
+ LocalUrl = undefined
+ MediaObject = undefined
+ MediaStreamUrl = undefined
+ PushEndpoint = undefined
+ RTCConnectionManagement = undefined
+ RTCSignalingChannel = undefined
+ RTCSignalingSession = undefined
+ RequestMediaStream = undefined
+ SchemePrefix = undefined
+ ScryptedDevice = undefined
+ ScryptedDeviceId = undefined
+ Url = undefined
class SecuritySystemMode(Enum):
- AwayArmed = "AwayArmed"
- Disarmed = "Disarmed"
- HomeArmed = "HomeArmed"
- NightArmed = "NightArmed"
+ AwayArmed = undefined
+ Disarmed = undefined
+ HomeArmed = undefined
+ NightArmed = undefined
class SecuritySystemObstruction(Enum):
- Error = "Error"
- Occupied = "Occupied"
- Sensor = "Sensor"
- Time = "Time"
+ Error = undefined
+ Occupied = undefined
+ Sensor = undefined
+ Time = undefined
class TemperatureUnit(Enum):
- C = "C"
- F = "F"
+ C = undefined
+ F = undefined
class ThermostatMode(Enum):
- Auto = "Auto"
- Cool = "Cool"
- Dry = "Dry"
- Eco = "Eco"
- FanOnly = "FanOnly"
- Heat = "Heat"
- HeatCool = "HeatCool"
- Off = "Off"
- On = "On"
- Purifier = "Purifier"
+ Auto = undefined
+ Cool = undefined
+ Dry = undefined
+ Eco = undefined
+ FanOnly = undefined
+ Heat = undefined
+ HeatCool = undefined
+ Off = undefined
+ On = undefined
+ Purifier = undefined
class H264Info(TypedDict):
diff --git a/sdk/typedoc.json b/sdk/typedoc.json
new file mode 100644
index 000000000..5cfd736b1
--- /dev/null
+++ b/sdk/typedoc.json
@@ -0,0 +1,21 @@
+{
+ "entryPoints": [
+ "./"
+ ],
+ "sort": ["source-order"],
+ "name": "Scrypted Documentation",
+ "tsconfig": "./tsconfig.json",
+ "out": "./developer.scrypted.app/docs",
+ "categorizeByGroup": false,
+ "defaultCategory": "Device Interfaces Reference",
+ "excludePrivate": true,
+ "disableSources": true,
+ "categoryOrder": [
+ "Core Reference",
+ "Device Provider Reference",
+ "Media Reference",
+ "Webhook and Push Reference"
+ ],
+ "customCss": "docs.css",
+ "readme": "./README.md"
+}
diff --git a/sdk/types/index.d.ts b/sdk/types/index.d.ts
index aceddc270..8d1540fcd 100644
--- a/sdk/types/index.d.ts
+++ b/sdk/types/index.d.ts
@@ -1,5 +1,5 @@
///
-export declare const TYPES_VERSION = "0.0.89";
+export declare const TYPES_VERSION = "0.0.90";
export interface DeviceState {
id?: string;
info?: DeviceInformation;
@@ -183,6 +183,8 @@ export declare const ScryptedInterfaceDescriptors: {
export declare type ScryptedNativeId = string | undefined;
/**
* All devices in Scrypted implement ScryptedDevice, which contains the id, name, and type. Add listeners to subscribe to events from that device.
+ *
+ * @category Core Reference
*/
export interface ScryptedDevice {
/**
@@ -227,6 +229,9 @@ export interface EventListenerOptions {
*/
watch?: boolean;
}
+/**
+ * @category Core Reference
+ */
export declare type EventListener = (eventSource: ScryptedDevice | undefined, eventDetails: EventDetails, eventData: any) => void;
export interface EventDetails {
changed?: boolean;
@@ -236,10 +241,15 @@ export interface EventDetails {
}
/**
* Returned when an event listener is attached to an EventEmitter. Call removeListener to unregister from events.
- */
+ *
+ * @category Core Reference
+*/
export interface EventListenerRegister {
removeListener(): void;
}
+/**
+ * @category Core Reference
+ */
export declare enum ScryptedDeviceType {
Builtin = "Builtin",
Camera = "Camera",
@@ -353,6 +363,8 @@ export interface Notifier {
}
/**
* MediaObject is an intermediate object within Scrypted to represent all media objects. Plugins should use the MediaConverter to convert the Scrypted MediaObject into a desired type, whether it is a externally accessible URL, a Buffer, etc.
+ *
+ * @category Media Reference
*/
export interface MediaObject {
mimeType: string;
@@ -784,8 +796,75 @@ export interface Entry {
export interface EntrySensor {
entryOpen?: boolean;
}
+/**
+ * DeviceManager is the interface used by DeviceProvider to report new devices, device states, and device events to Scrypted.
+ *
+ * @category Device Provider Reference
+ */
+export interface DeviceManager {
+ /**
+ * Get the logger for a device given a native id.
+ */
+ getDeviceLogger(nativeId?: ScryptedNativeId): Logger;
+ /**
+ * Get the console for the device given a native id.
+ */
+ getDeviceConsole?(nativeId?: ScryptedNativeId): Console;
+ /**
+ * Get the console for the device given a native id.
+ */
+ getMixinConsole?(mixinId: string, nativeId?: ScryptedNativeId): Console;
+ /**
+ * Get the device state maintained by Scrypted. Setting properties on this state will update the state in Scrypted.
+ */
+ getDeviceState(nativeId?: ScryptedNativeId): DeviceState;
+ /**
+ * Create a device state object that will trap all state setting calls. Used internally by mixins and fork.
+ */
+ createDeviceState?(id: string, setState: (property: string, value: any) => Promise): DeviceState;
+ /**
+ * Get the storage for a mixin.
+ * @param id The id of the device being mixined.
+ * @param nativeId The nativeId of the MixinProvider.
+ */
+ getMixinStorage(id: string, nativeId?: ScryptedNativeId): Storage;
+ /**
+ * Fire an event for a mixin provided by this plugin.
+ */
+ onMixinEvent(id: string, mixinDevice: any, eventInterface: string, eventData: any): Promise;
+ /**
+ * Get the device Storage object.
+ */
+ getDeviceStorage(nativeId?: ScryptedNativeId): Storage;
+ /**
+ * Get all the native ids that have been reported by this plugin. This always includes "undefined", the plugin itself.
+ */
+ getNativeIds(): string[];
+ /**
+ * onDeviceDiscovered is used to report new devices that are trickle discovered, one by one, such as via a network broadcast.
+ */
+ onDeviceDiscovered(device: Device): Promise;
+ /**
+ * Fire an event for a device provided by this plugin.
+ */
+ onDeviceEvent(nativeId: ScryptedNativeId, eventInterface: string, eventData: any): Promise;
+ /**
+ * onDeviceRemoved is used to report when discovered devices are removed.
+ */
+ onDeviceRemoved(nativeId: string): Promise;
+ /**
+ * onDevicesChanged is used to sync Scrypted with devices that are attached to a hub, such as Hue or SmartThings. All the devices should be reported at once.
+ */
+ onDevicesChanged(devices: DeviceManifest): Promise;
+ /**
+ * Restart the plugin. May not happen immediately.
+ */
+ requestRestart(): Promise;
+}
/**
* DeviceProvider acts as a controller/hub and exposes multiple devices to Scrypted Device Manager.
+ *
+ * @category Device Provider Reference
*/
export interface DeviceProvider {
/**
@@ -793,11 +872,25 @@ export interface DeviceProvider {
*/
getDevice(nativeId: ScryptedNativeId): any;
}
+/**
+ * DeviceManifest is passed to DeviceManager.onDevicesChanged to sync a full list of devices from the controller/hub (Hue, SmartThings, etc)
+ *
+ * @category Device Provider Reference
+ */
+export interface DeviceManifest {
+ /**
+ * The native id of the hub or discovery DeviceProvider that manages these devices.
+ */
+ providerNativeId?: ScryptedNativeId;
+ devices?: Device[];
+}
export interface DeviceCreatorSettings {
[key: string]: SettingValue;
}
/**
* A DeviceProvider that allows the user to create a device.
+ *
+ * @category Device Provider Reference
*/
export interface DeviceCreator {
getCreateDeviceSettings(): Promise;
@@ -809,6 +902,8 @@ export interface DeviceCreator {
}
/**
* A DeviceProvider that has a device discovery mechanism.
+ *
+ * @category Device Provider Reference
*/
export interface DeviceDiscovery {
/**
@@ -824,6 +919,8 @@ export interface Battery {
}
/**
* Refresh indicates that this device has properties that are not automatically updated, and must be periodically refreshed via polling. Device implementations should never implement their own underlying polling algorithm, and instead implement Refresh to allow Scrypted to manage polling intelligently.
+ *
+ * @category Device Provider Reference
*/
export interface Refresh {
/**
@@ -1135,6 +1232,9 @@ export interface MediaObjectOptions {
*/
sourceId?: string;
}
+/**
+ * @category Media Reference
+ */
export interface MediaManager {
/**
* Add an convertor to consider for use when converting MediaObjects.
@@ -1200,69 +1300,6 @@ export interface FFmpegInput extends MediaStreamUrl {
videoDecoderArguments?: string[];
h264FilterArguments?: string[];
}
-/**
- * DeviceManager is the interface used by DeviceProvider to report new devices, device states, and device events to Scrypted.
- */
-export interface DeviceManager {
- /**
- * Get the logger for a device given a native id.
- */
- getDeviceLogger(nativeId?: ScryptedNativeId): Logger;
- /**
- * Get the console for the device given a native id.
- */
- getDeviceConsole?(nativeId?: ScryptedNativeId): Console;
- /**
- * Get the console for the device given a native id.
- */
- getMixinConsole?(mixinId: string, nativeId?: ScryptedNativeId): Console;
- /**
- * Get the device state maintained by Scrypted. Setting properties on this state will update the state in Scrypted.
- */
- getDeviceState(nativeId?: ScryptedNativeId): DeviceState;
- /**
- * Create a device state object that will trap all state setting calls. Used internally by mixins and fork.
- */
- createDeviceState?(id: string, setState: (property: string, value: any) => Promise): DeviceState;
- /**
- * Get the storage for a mixin.
- * @param id The id of the device being mixined.
- * @param nativeId The nativeId of the MixinProvider.
- */
- getMixinStorage(id: string, nativeId?: ScryptedNativeId): Storage;
- /**
- * Fire an event for a mixin provided by this plugin.
- */
- onMixinEvent(id: string, mixinDevice: any, eventInterface: string, eventData: any): Promise;
- /**
- * Get the device Storage object.
- */
- getDeviceStorage(nativeId?: ScryptedNativeId): Storage;
- /**
- * Get all the native ids that have been reported by this plugin. This always includes "undefined", the plugin itself.
- */
- getNativeIds(): string[];
- /**
- * onDeviceDiscovered is used to report new devices that are trickle discovered, one by one, such as via a network broadcast.
- */
- onDeviceDiscovered(device: Device): Promise;
- /**
- * Fire an event for a device provided by this plugin.
- */
- onDeviceEvent(nativeId: ScryptedNativeId, eventInterface: string, eventData: any): Promise;
- /**
- * onDeviceRemoved is used to report when discovered devices are removed.
- */
- onDeviceRemoved(nativeId: string): Promise;
- /**
- * onDevicesChanged is used to sync Scrypted with devices that are attached to a hub, such as Hue or SmartThings. All the devices should be reported at once.
- */
- onDevicesChanged(devices: DeviceManifest): Promise;
- /**
- * Restart the plugin. May not happen immediately.
- */
- requestRestart(): Promise;
-}
export interface DeviceInformation {
model?: string;
manufacturer?: string;
@@ -1275,6 +1312,8 @@ export interface DeviceInformation {
}
/**
* Device objects are created by DeviceProviders when new devices are discover and synced to Scrypted via the DeviceManager.
+ *
+ * @category Device Provider Reference
*/
export interface Device {
name: string;
@@ -1292,18 +1331,10 @@ export interface Device {
room?: string;
internal?: boolean;
}
-/**
- * DeviceManifest is passed to DeviceManager.onDevicesChanged to sync a full list of devices from the controller/hub (Hue, SmartThings, etc)
- */
-export interface DeviceManifest {
- /**
- * The native id of the hub or discovery DeviceProvider that manages these devices.
- */
- providerNativeId?: ScryptedNativeId;
- devices?: Device[];
-}
/**
* EndpointManager provides publicly accessible URLs that can be used to contact your Scrypted Plugin.
+ *
+ * @category Webhook and Push Reference
*/
export interface EndpointManager {
/**
@@ -1353,6 +1384,8 @@ export interface EndpointManager {
}
/**
* SystemManager is used by scripts to query device state and access devices.
+ *
+ * @category Core Reference
*/
export interface SystemManager {
/**
@@ -1422,6 +1455,8 @@ export interface MixinProvider {
}
/**
* The HttpRequestHandler allows handling of web requests under the endpoint path: /endpoint/npm-package-name/*.
+ *
+ * @category Webhook and Push Reference
*/
export interface HttpRequestHandler {
/**
@@ -1429,6 +1464,9 @@ export interface HttpRequestHandler {
*/
onRequest(request: HttpRequest, response: HttpResponse): Promise;
}
+/**
+ * @category Webhook and Push Reference
+ */
export interface HttpRequest {
body?: string;
headers?: object;
@@ -1440,6 +1478,8 @@ export interface HttpRequest {
}
/**
* Response object provided by the HttpRequestHandler.
+ *
+ * @category Webhook and Push Reference
*/
export interface HttpResponse {
send(body: string): void;
@@ -1450,6 +1490,9 @@ export interface HttpResponse {
sendFile(path: string, options: HttpResponseOptions): void;
sendSocket(socket: any, options: HttpResponseOptions): void;
}
+/**
+ * @category Webhook and Push Reference
+ */
export interface HttpResponseOptions {
code?: number;
headers?: object;
@@ -1457,6 +1500,10 @@ export interface HttpResponseOptions {
export interface EngineIOHandler {
onConnection(request: HttpRequest, webSocketUrl: string): Promise;
}
+/**
+ * @category Webhook and Push Reference
+ *
+ */
export interface PushHandler {
/**
* Callback to handle an incoming push.
diff --git a/sdk/types/index.js b/sdk/types/index.js
index 0f54dee8d..f26d26c8b 100644
--- a/sdk/types/index.js
+++ b/sdk/types/index.js
@@ -1,7 +1,7 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.ScryptedMimeTypes = exports.ScryptedInterface = exports.MediaPlayerState = exports.SecuritySystemObstruction = exports.SecuritySystemMode = exports.AirQuality = exports.LockState = exports.ThermostatMode = exports.TemperatureUnit = exports.FanMode = exports.HumidityMode = exports.ScryptedDeviceType = exports.ScryptedInterfaceDescriptors = exports.ScryptedInterfaceProperty = exports.DeviceBase = exports.TYPES_VERSION = void 0;
-exports.TYPES_VERSION = "0.0.89";
+exports.TYPES_VERSION = "0.0.90";
class DeviceBase {
}
exports.DeviceBase = DeviceBase;
@@ -663,6 +663,9 @@ exports.ScryptedInterfaceDescriptors = {
]
}
};
+/**
+ * @category Core Reference
+ */
var ScryptedDeviceType;
(function (ScryptedDeviceType) {
ScryptedDeviceType["Builtin"] = "Builtin";
diff --git a/sdk/types/index.ts b/sdk/types/index.ts
index 0cb18b6c1..63904e906 100644
--- a/sdk/types/index.ts
+++ b/sdk/types/index.ts
@@ -1,5 +1,5 @@
-export const TYPES_VERSION = "0.0.89";
+export const TYPES_VERSION = "0.0.90";
export interface DeviceState {
@@ -788,6 +788,8 @@ export type ScryptedNativeId = string | undefined;
/**
* All devices in Scrypted implement ScryptedDevice, which contains the id, name, and type. Add listeners to subscribe to events from that device.
+ *
+ * @category Core Reference
*/
export interface ScryptedDevice {
/**
@@ -838,6 +840,9 @@ export interface EventListenerOptions {
watch?: boolean;
}
+/**
+ * @category Core Reference
+ */
export type EventListener = (eventSource: ScryptedDevice | undefined, eventDetails: EventDetails, eventData: any) => void;
export interface EventDetails {
@@ -848,11 +853,17 @@ export interface EventDetails {
}
/**
* Returned when an event listener is attached to an EventEmitter. Call removeListener to unregister from events.
- */
+ *
+ * @category Core Reference
+*/
export interface EventListenerRegister {
removeListener(): void;
}
+
+/**
+ * @category Core Reference
+ */
export enum ScryptedDeviceType {
Builtin = "Builtin",
Camera = "Camera",
@@ -974,6 +985,8 @@ export interface Notifier {
}
/**
* MediaObject is an intermediate object within Scrypted to represent all media objects. Plugins should use the MediaConverter to convert the Scrypted MediaObject into a desired type, whether it is a externally accessible URL, a Buffer, etc.
+ *
+ * @category Media Reference
*/
export interface MediaObject {
mimeType: string;
@@ -1458,8 +1471,88 @@ export interface Entry {
export interface EntrySensor {
entryOpen?: boolean;
}
+/**
+ * DeviceManager is the interface used by DeviceProvider to report new devices, device states, and device events to Scrypted.
+ *
+ * @category Device Provider Reference
+ */
+export interface DeviceManager {
+ /**
+ * Get the logger for a device given a native id.
+ */
+ getDeviceLogger(nativeId?: ScryptedNativeId): Logger;
+
+ /**
+ * Get the console for the device given a native id.
+ */
+ getDeviceConsole?(nativeId?: ScryptedNativeId): Console;
+
+ /**
+ * Get the console for the device given a native id.
+ */
+ getMixinConsole?(mixinId: string, nativeId?: ScryptedNativeId): Console;
+
+ /**
+ * Get the device state maintained by Scrypted. Setting properties on this state will update the state in Scrypted.
+ */
+ getDeviceState(nativeId?: ScryptedNativeId): DeviceState;
+
+ /**
+ * Create a device state object that will trap all state setting calls. Used internally by mixins and fork.
+ */
+ createDeviceState?(id: string, setState: (property: string, value: any) => Promise): DeviceState;
+
+ /**
+ * Get the storage for a mixin.
+ * @param id The id of the device being mixined.
+ * @param nativeId The nativeId of the MixinProvider.
+ */
+ getMixinStorage(id: string, nativeId?: ScryptedNativeId): Storage;
+
+ /**
+ * Fire an event for a mixin provided by this plugin.
+ */
+ onMixinEvent(id: string, mixinDevice: any, eventInterface: string, eventData: any): Promise;
+
+ /**
+ * Get the device Storage object.
+ */
+ getDeviceStorage(nativeId?: ScryptedNativeId): Storage;
+
+ /**
+ * Get all the native ids that have been reported by this plugin. This always includes "undefined", the plugin itself.
+ */
+ getNativeIds(): string[];
+
+ /**
+ * onDeviceDiscovered is used to report new devices that are trickle discovered, one by one, such as via a network broadcast.
+ */
+ onDeviceDiscovered(device: Device): Promise;
+
+ /**
+ * Fire an event for a device provided by this plugin.
+ */
+ onDeviceEvent(nativeId: ScryptedNativeId, eventInterface: string, eventData: any): Promise;
+
+ /**
+ * onDeviceRemoved is used to report when discovered devices are removed.
+ */
+ onDeviceRemoved(nativeId: string): Promise;
+
+ /**
+ * onDevicesChanged is used to sync Scrypted with devices that are attached to a hub, such as Hue or SmartThings. All the devices should be reported at once.
+ */
+ onDevicesChanged(devices: DeviceManifest): Promise;
+
+ /**
+ * Restart the plugin. May not happen immediately.
+ */
+ requestRestart(): Promise;
+}
/**
* DeviceProvider acts as a controller/hub and exposes multiple devices to Scrypted Device Manager.
+ *
+ * @category Device Provider Reference
*/
export interface DeviceProvider {
/**
@@ -1468,11 +1561,25 @@ export interface DeviceProvider {
getDevice(nativeId: ScryptedNativeId): any;
}
+/**
+ * DeviceManifest is passed to DeviceManager.onDevicesChanged to sync a full list of devices from the controller/hub (Hue, SmartThings, etc)
+ *
+ * @category Device Provider Reference
+ */
+export interface DeviceManifest {
+ /**
+ * The native id of the hub or discovery DeviceProvider that manages these devices.
+ */
+ providerNativeId?: ScryptedNativeId;
+ devices?: Device[];
+}
export interface DeviceCreatorSettings {
[key: string]: SettingValue;
}
/**
* A DeviceProvider that allows the user to create a device.
+ *
+ * @category Device Provider Reference
*/
export interface DeviceCreator {
getCreateDeviceSettings(): Promise;
@@ -1484,6 +1591,8 @@ export interface DeviceCreator {
}
/**
* A DeviceProvider that has a device discovery mechanism.
+ *
+ * @category Device Provider Reference
*/
export interface DeviceDiscovery {
/**
@@ -1499,6 +1608,8 @@ export interface Battery {
}
/**
* Refresh indicates that this device has properties that are not automatically updated, and must be periodically refreshed via polling. Device implementations should never implement their own underlying polling algorithm, and instead implement Refresh to allow Scrypted to manage polling intelligently.
+ *
+ * @category Device Provider Reference
*/
export interface Refresh {
/**
@@ -1833,6 +1944,9 @@ export interface MediaObjectOptions {
sourceId?: string;
}
+/**
+ * @category Media Reference
+ */
export interface MediaManager {
/**
* Add an convertor to consider for use when converting MediaObjects.
@@ -1909,82 +2023,6 @@ export interface FFmpegInput extends MediaStreamUrl {
videoDecoderArguments?: string[];
h264FilterArguments?: string[];
}
-/**
- * DeviceManager is the interface used by DeviceProvider to report new devices, device states, and device events to Scrypted.
- */
-export interface DeviceManager {
- /**
- * Get the logger for a device given a native id.
- */
- getDeviceLogger(nativeId?: ScryptedNativeId): Logger;
-
- /**
- * Get the console for the device given a native id.
- */
- getDeviceConsole?(nativeId?: ScryptedNativeId): Console;
-
- /**
- * Get the console for the device given a native id.
- */
- getMixinConsole?(mixinId: string, nativeId?: ScryptedNativeId): Console;
-
- /**
- * Get the device state maintained by Scrypted. Setting properties on this state will update the state in Scrypted.
- */
- getDeviceState(nativeId?: ScryptedNativeId): DeviceState;
-
- /**
- * Create a device state object that will trap all state setting calls. Used internally by mixins and fork.
- */
- createDeviceState?(id: string, setState: (property: string, value: any) => Promise): DeviceState;
-
- /**
- * Get the storage for a mixin.
- * @param id The id of the device being mixined.
- * @param nativeId The nativeId of the MixinProvider.
- */
- getMixinStorage(id: string, nativeId?: ScryptedNativeId): Storage;
-
- /**
- * Fire an event for a mixin provided by this plugin.
- */
- onMixinEvent(id: string, mixinDevice: any, eventInterface: string, eventData: any): Promise;
-
- /**
- * Get the device Storage object.
- */
- getDeviceStorage(nativeId?: ScryptedNativeId): Storage;
-
- /**
- * Get all the native ids that have been reported by this plugin. This always includes "undefined", the plugin itself.
- */
- getNativeIds(): string[];
-
- /**
- * onDeviceDiscovered is used to report new devices that are trickle discovered, one by one, such as via a network broadcast.
- */
- onDeviceDiscovered(device: Device): Promise;
-
- /**
- * Fire an event for a device provided by this plugin.
- */
- onDeviceEvent(nativeId: ScryptedNativeId, eventInterface: string, eventData: any): Promise;
-
- /**
- * onDeviceRemoved is used to report when discovered devices are removed.
- */
- onDeviceRemoved(nativeId: string): Promise;
-
- /**
- * onDevicesChanged is used to sync Scrypted with devices that are attached to a hub, such as Hue or SmartThings. All the devices should be reported at once.
- */
- onDevicesChanged(devices: DeviceManifest): Promise;
-
- /**
- * Restart the plugin. May not happen immediately.
- */
- requestRestart(): Promise;
-}
export interface DeviceInformation {
model?: string;
manufacturer?: string;
@@ -1997,6 +2035,8 @@ export interface DeviceInformation {
}
/**
* Device objects are created by DeviceProviders when new devices are discover and synced to Scrypted via the DeviceManager.
+ *
+ * @category Device Provider Reference
*/
export interface Device {
name: string;
@@ -2015,18 +2055,10 @@ export interface Device {
internal?: boolean;
}
-/**
- * DeviceManifest is passed to DeviceManager.onDevicesChanged to sync a full list of devices from the controller/hub (Hue, SmartThings, etc)
- */
-export interface DeviceManifest {
- /**
- * The native id of the hub or discovery DeviceProvider that manages these devices.
- */
- providerNativeId?: ScryptedNativeId;
- devices?: Device[];
-}
/**
* EndpointManager provides publicly accessible URLs that can be used to contact your Scrypted Plugin.
+ *
+ * @category Webhook and Push Reference
*/
export interface EndpointManager {
/**
@@ -2087,6 +2119,8 @@ export interface EndpointManager {
}
/**
* SystemManager is used by scripts to query device state and access devices.
+ *
+ * @category Core Reference
*/
export interface SystemManager {
/**
@@ -2162,6 +2196,8 @@ export interface MixinProvider {
}
/**
* The HttpRequestHandler allows handling of web requests under the endpoint path: /endpoint/npm-package-name/*.
+ *
+ * @category Webhook and Push Reference
*/
export interface HttpRequestHandler {
/**
@@ -2170,6 +2206,9 @@ export interface HttpRequestHandler {
onRequest(request: HttpRequest, response: HttpResponse): Promise;
}
+/**
+ * @category Webhook and Push Reference
+ */
export interface HttpRequest {
body?: string;
headers?: object;
@@ -2181,6 +2220,8 @@ export interface HttpRequest {
}
/**
* Response object provided by the HttpRequestHandler.
+ *
+ * @category Webhook and Push Reference
*/
export interface HttpResponse {
send(body: string): void;
@@ -2197,6 +2238,9 @@ export interface HttpResponse {
sendSocket(socket: any, options: HttpResponseOptions): void;
}
+/**
+ * @category Webhook and Push Reference
+ */
export interface HttpResponseOptions {
code?: number;
headers?: object;
@@ -2205,6 +2249,10 @@ export interface EngineIOHandler {
onConnection(request: HttpRequest, webSocketUrl: string): Promise;
}
+/**
+ * @category Webhook and Push Reference
+ *
+ */
export interface PushHandler {
/**
* Callback to handle an incoming push.
diff --git a/sdk/types/package-lock.json b/sdk/types/package-lock.json
index 878b53240..35cd4c117 100644
--- a/sdk/types/package-lock.json
+++ b/sdk/types/package-lock.json
@@ -1,12 +1,12 @@
{
"name": "@scrypted/types",
- "version": "0.0.89",
+ "version": "0.0.90",
"lockfileVersion": 2,
"requires": true,
"packages": {
"": {
"name": "@scrypted/types",
- "version": "0.0.89",
+ "version": "0.0.90",
"license": "ISC",
"devDependencies": {}
}
diff --git a/sdk/types/package.json b/sdk/types/package.json
index 4a67d2497..3d46db27e 100644
--- a/sdk/types/package.json
+++ b/sdk/types/package.json
@@ -1,6 +1,6 @@
{
"name": "@scrypted/types",
- "version": "0.0.89",
+ "version": "0.0.90",
"description": "",
"main": "index.js",
"author": "",
diff --git a/sdk/types/scrypted_python/scrypted_sdk/types.py b/sdk/types/scrypted_python/scrypted_sdk/types.py
index 90c7d418a..d873f8bda 100644
--- a/sdk/types/scrypted_python/scrypted_sdk/types.py
+++ b/sdk/types/scrypted_python/scrypted_sdk/types.py
@@ -8,184 +8,184 @@ from .other import *
class AirQuality(Enum):
- Excellent = "Excellent"
- Fair = "Fair"
- Good = "Good"
- Inferior = "Inferior"
- Poor = "Poor"
- Unknown = "Unknown"
+ Excellent = undefined
+ Fair = undefined
+ Good = undefined
+ Inferior = undefined
+ Poor = undefined
+ Unknown = undefined
class FanMode(Enum):
- Auto = "Auto"
- Manual = "Manual"
+ Auto = undefined
+ Manual = undefined
class HumidityMode(Enum):
- Auto = "Auto"
- Dehumidify = "Dehumidify"
- Humidify = "Humidify"
- Off = "Off"
+ Auto = undefined
+ Dehumidify = undefined
+ Humidify = undefined
+ Off = undefined
class LockState(Enum):
- Jammed = "Jammed"
- Locked = "Locked"
- Unlocked = "Unlocked"
+ Jammed = undefined
+ Locked = undefined
+ Unlocked = undefined
class MediaPlayerState(Enum):
- Buffering = "Buffering"
- Idle = "Idle"
- Paused = "Paused"
- Playing = "Playing"
+ Buffering = undefined
+ Idle = undefined
+ Paused = undefined
+ Playing = undefined
class ScryptedDeviceType(Enum):
- API = "API"
- Automation = "Automation"
- Builtin = "Builtin"
- Camera = "Camera"
- DataSource = "DataSource"
- DeviceProvider = "DeviceProvider"
- Display = "Display"
- Doorbell = "Doorbell"
- Entry = "Entry"
- Event = "Event"
- Fan = "Fan"
- Garage = "Garage"
- Irrigation = "Irrigation"
- Light = "Light"
- Lock = "Lock"
- Notifier = "Notifier"
- Outlet = "Outlet"
- PasswordControl = "PasswordControl"
- Person = "Person"
- Program = "Program"
- Scene = "Scene"
- SecuritySystem = "SecuritySystem"
- Sensor = "Sensor"
- SmartDisplay = "SmartDisplay"
- SmartSpeaker = "SmartSpeaker"
- Speaker = "Speaker"
- Switch = "Switch"
- Thermostat = "Thermostat"
- Unknown = "Unknown"
- Vacuum = "Vacuum"
- Valve = "Valve"
+ API = undefined
+ Automation = undefined
+ Builtin = undefined
+ Camera = undefined
+ DataSource = undefined
+ DeviceProvider = undefined
+ Display = undefined
+ Doorbell = undefined
+ Entry = undefined
+ Event = undefined
+ Fan = undefined
+ Garage = undefined
+ Irrigation = undefined
+ Light = undefined
+ Lock = undefined
+ Notifier = undefined
+ Outlet = undefined
+ PasswordControl = undefined
+ Person = undefined
+ Program = undefined
+ Scene = undefined
+ SecuritySystem = undefined
+ Sensor = undefined
+ SmartDisplay = undefined
+ SmartSpeaker = undefined
+ Speaker = undefined
+ Switch = undefined
+ Thermostat = undefined
+ Unknown = undefined
+ Vacuum = undefined
+ Valve = undefined
class ScryptedInterface(Enum):
- AirQualitySensor = "AirQualitySensor"
- AmbientLightSensor = "AmbientLightSensor"
- AudioSensor = "AudioSensor"
- Authenticator = "Authenticator"
- Battery = "Battery"
- BinarySensor = "BinarySensor"
- Brightness = "Brightness"
- BufferConverter = "BufferConverter"
- CO2Sensor = "CO2Sensor"
- Camera = "Camera"
- ColorSettingHsv = "ColorSettingHsv"
- ColorSettingRgb = "ColorSettingRgb"
- ColorSettingTemperature = "ColorSettingTemperature"
- DeviceCreator = "DeviceCreator"
- DeviceDiscovery = "DeviceDiscovery"
- DeviceProvider = "DeviceProvider"
- Display = "Display"
- Dock = "Dock"
- EngineIOHandler = "EngineIOHandler"
- Entry = "Entry"
- EntrySensor = "EntrySensor"
- EventRecorder = "EventRecorder"
- Fan = "Fan"
- FloodSensor = "FloodSensor"
- HttpRequestHandler = "HttpRequestHandler"
- HumiditySensor = "HumiditySensor"
- HumiditySetting = "HumiditySetting"
- Intercom = "Intercom"
- LauncherApplication = "LauncherApplication"
- Lock = "Lock"
- LuminanceSensor = "LuminanceSensor"
- MediaPlayer = "MediaPlayer"
- Microphone = "Microphone"
- MixinProvider = "MixinProvider"
- MotionSensor = "MotionSensor"
- Notifier = "Notifier"
- OauthClient = "OauthClient"
- ObjectDetection = "ObjectDetection"
- ObjectDetector = "ObjectDetector"
- OccupancySensor = "OccupancySensor"
- OnOff = "OnOff"
- Online = "Online"
- PM25Sensor = "PM25Sensor"
- PanTiltZoom = "PanTiltZoom"
- PasswordStore = "PasswordStore"
- Pause = "Pause"
- PositionSensor = "PositionSensor"
- PowerSensor = "PowerSensor"
- Program = "Program"
- PushHandler = "PushHandler"
- RTCSignalingChannel = "RTCSignalingChannel"
- RTCSignalingClient = "RTCSignalingClient"
- Readme = "Readme"
- Refresh = "Refresh"
- Scene = "Scene"
- Scriptable = "Scriptable"
- ScryptedDevice = "ScryptedDevice"
- ScryptedPlugin = "ScryptedPlugin"
- SecuritySystem = "SecuritySystem"
- Settings = "Settings"
- SoftwareUpdate = "SoftwareUpdate"
- StartStop = "StartStop"
- TamperSensor = "TamperSensor"
- TemperatureSetting = "TemperatureSetting"
- Thermometer = "Thermometer"
- UltravioletSensor = "UltravioletSensor"
- VOCSensor = "VOCSensor"
- VideoCamera = "VideoCamera"
- VideoCameraConfiguration = "VideoCameraConfiguration"
- VideoClips = "VideoClips"
- VideoRecorder = "VideoRecorder"
+ AirQualitySensor = undefined
+ AmbientLightSensor = undefined
+ AudioSensor = undefined
+ Authenticator = undefined
+ Battery = undefined
+ BinarySensor = undefined
+ Brightness = undefined
+ BufferConverter = undefined
+ CO2Sensor = undefined
+ Camera = undefined
+ ColorSettingHsv = undefined
+ ColorSettingRgb = undefined
+ ColorSettingTemperature = undefined
+ DeviceCreator = undefined
+ DeviceDiscovery = undefined
+ DeviceProvider = undefined
+ Display = undefined
+ Dock = undefined
+ EngineIOHandler = undefined
+ Entry = undefined
+ EntrySensor = undefined
+ EventRecorder = undefined
+ Fan = undefined
+ FloodSensor = undefined
+ HttpRequestHandler = undefined
+ HumiditySensor = undefined
+ HumiditySetting = undefined
+ Intercom = undefined
+ LauncherApplication = undefined
+ Lock = undefined
+ LuminanceSensor = undefined
+ MediaPlayer = undefined
+ Microphone = undefined
+ MixinProvider = undefined
+ MotionSensor = undefined
+ Notifier = undefined
+ OauthClient = undefined
+ ObjectDetection = undefined
+ ObjectDetector = undefined
+ OccupancySensor = undefined
+ OnOff = undefined
+ Online = undefined
+ PM25Sensor = undefined
+ PanTiltZoom = undefined
+ PasswordStore = undefined
+ Pause = undefined
+ PositionSensor = undefined
+ PowerSensor = undefined
+ Program = undefined
+ PushHandler = undefined
+ RTCSignalingChannel = undefined
+ RTCSignalingClient = undefined
+ Readme = undefined
+ Refresh = undefined
+ Scene = undefined
+ Scriptable = undefined
+ ScryptedDevice = undefined
+ ScryptedPlugin = undefined
+ SecuritySystem = undefined
+ Settings = undefined
+ SoftwareUpdate = undefined
+ StartStop = undefined
+ TamperSensor = undefined
+ TemperatureSetting = undefined
+ Thermometer = undefined
+ UltravioletSensor = undefined
+ VOCSensor = undefined
+ VideoCamera = undefined
+ VideoCameraConfiguration = undefined
+ VideoClips = undefined
+ VideoRecorder = undefined
class ScryptedMimeTypes(Enum):
- FFmpegInput = "x-scrypted/x-ffmpeg-input"
- FFmpegTranscodeStream = "x-scrypted/x-ffmpeg-transcode-stream"
- InsecureLocalUrl = "text/x-insecure-local-uri"
- LocalUrl = "text/x-local-uri"
- MediaObject = "x-scrypted/x-scrypted-media-object"
- MediaStreamUrl = "text/x-media-url"
- PushEndpoint = "text/x-push-endpoint"
- RTCConnectionManagement = "x-scrypted/x-scrypted-rtc-connection-management"
- RTCSignalingChannel = "x-scrypted/x-scrypted-rtc-signaling-channel"
- RTCSignalingSession = "x-scrypted/x-scrypted-rtc-signaling-session"
- RequestMediaStream = "x-scrypted/x-scrypted-request-stream"
- SchemePrefix = "x-scrypted/x-scrypted-scheme-"
- ScryptedDevice = "x-scrypted/x-scrypted-device"
- ScryptedDeviceId = "x-scrypted/x-scrypted-device-id"
- Url = "text/x-uri"
+ FFmpegInput = undefined
+ FFmpegTranscodeStream = undefined
+ InsecureLocalUrl = undefined
+ LocalUrl = undefined
+ MediaObject = undefined
+ MediaStreamUrl = undefined
+ PushEndpoint = undefined
+ RTCConnectionManagement = undefined
+ RTCSignalingChannel = undefined
+ RTCSignalingSession = undefined
+ RequestMediaStream = undefined
+ SchemePrefix = undefined
+ ScryptedDevice = undefined
+ ScryptedDeviceId = undefined
+ Url = undefined
class SecuritySystemMode(Enum):
- AwayArmed = "AwayArmed"
- Disarmed = "Disarmed"
- HomeArmed = "HomeArmed"
- NightArmed = "NightArmed"
+ AwayArmed = undefined
+ Disarmed = undefined
+ HomeArmed = undefined
+ NightArmed = undefined
class SecuritySystemObstruction(Enum):
- Error = "Error"
- Occupied = "Occupied"
- Sensor = "Sensor"
- Time = "Time"
+ Error = undefined
+ Occupied = undefined
+ Sensor = undefined
+ Time = undefined
class TemperatureUnit(Enum):
- C = "C"
- F = "F"
+ C = undefined
+ F = undefined
class ThermostatMode(Enum):
- Auto = "Auto"
- Cool = "Cool"
- Dry = "Dry"
- Eco = "Eco"
- FanOnly = "FanOnly"
- Heat = "Heat"
- HeatCool = "HeatCool"
- Off = "Off"
- On = "On"
- Purifier = "Purifier"
+ Auto = undefined
+ Cool = undefined
+ Dry = undefined
+ Eco = undefined
+ FanOnly = undefined
+ Heat = undefined
+ HeatCool = undefined
+ Off = undefined
+ On = undefined
+ Purifier = undefined
class H264Info(TypedDict):