sdk: wip restructure

This commit is contained in:
Koushik Dutta
2022-09-24 09:55:39 -07:00
parent c779006987
commit 2b9240def8
40 changed files with 673 additions and 8724 deletions

View File

@@ -1,4 +0,0 @@
.DS_Store
out/
node_modules/
dist/

View File

@@ -1,11 +0,0 @@
.DS_Store
out/
node_modules/
*.map
fs
src
.vscode
dist/*.js
dist/*.txt
HAP-NodeJS
.gitmodules

View File

@@ -1,22 +0,0 @@
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "Scrypted Debugger",
"address": "${config:scrypted.debugHost}",
"port": 10081,
"request": "attach",
"skipFiles": [
"<node_internals>/**"
],
"preLaunchTask": "scrypted: deploy+debug",
"sourceMaps": true,
"localRoot": "${workspaceFolder}/out",
"remoteRoot": "/plugin/",
"type": "pwa-node"
}
]
}

View File

@@ -1,4 +0,0 @@
{
"scrypted.debugHost": "127.0.0.1",
}

View File

@@ -1,20 +0,0 @@
{
// See https://go.microsoft.com/fwlink/?LinkId=733558
// for the documentation about the tasks.json format
"version": "2.0.0",
"tasks": [
{
"label": "scrypted: deploy+debug",
"type": "shell",
"presentation": {
"echo": true,
"reveal": "silent",
"focus": false,
"panel": "shared",
"showReuseMessage": true,
"clear": false
},
"command": "npm run scrypted-vscode-launch ${config:scrypted.debugHost}",
},
]
}

View File

@@ -1,5 +0,0 @@
# Camera Sample Provider Plugin for Scrypted
This is a sample plugin that shows how to add camera providers. Like Unifi, Ring, Nest, etc.
The plugin will discover all the cameras, and report them to Scrypted.

View File

@@ -1,139 +0,0 @@
{
"name": "@scrypted/camera-provider-sample",
"version": "0.0.7",
"lockfileVersion": 2,
"requires": true,
"packages": {
"": {
"name": "@scrypted/camera-provider-sample",
"version": "0.0.7",
"hasInstallScript": true,
"dependencies": {
"@types/node": "^16.6.1",
"axios": "^0.24.0"
},
"devDependencies": {
"@scrypted/sdk": "file:../../sdk"
}
},
"../../sdk": {
"name": "@scrypted/sdk",
"version": "0.0.199",
"dev": true,
"license": "ISC",
"dependencies": {
"@babel/preset-typescript": "^7.16.7",
"adm-zip": "^0.4.13",
"axios": "^0.21.4",
"babel-loader": "^8.2.3",
"babel-plugin-const-enum": "^1.1.0",
"esbuild": "^0.13.8",
"ncp": "^2.0.0",
"raw-loader": "^4.0.2",
"rimraf": "^3.0.2",
"tmp": "^0.2.1",
"webpack": "^5.59.0"
},
"bin": {
"scrypted-debug": "bin/scrypted-debug.js",
"scrypted-deploy": "bin/scrypted-deploy.js",
"scrypted-deploy-debug": "bin/scrypted-deploy-debug.js",
"scrypted-package-json": "bin/scrypted-package-json.js",
"scrypted-readme": "bin/scrypted-readme.js",
"scrypted-setup-project": "bin/scrypted-setup-project.js",
"scrypted-webpack": "bin/scrypted-webpack.js"
},
"devDependencies": {
"@types/node": "^16.11.1",
"@types/stringify-object": "^4.0.0",
"stringify-object": "^3.3.0",
"ts-node": "^10.4.0",
"typedoc": "^0.22.8",
"typescript-json-schema": "^0.50.1",
"webpack-bundle-analyzer": "^4.5.0"
}
},
"../sdk": {
"extraneous": true
},
"node_modules/@scrypted/sdk": {
"resolved": "../../sdk",
"link": true
},
"node_modules/@types/node": {
"version": "16.6.1",
"resolved": "https://registry.npmjs.org/@types/node/-/node-16.6.1.tgz",
"integrity": "sha512-Sr7BhXEAer9xyGuCN3Ek9eg9xPviCF2gfu9kTfuU2HkTVAMYSDeX40fvpmo72n5nansg3nsBjuQBrsS28r+NUw=="
},
"node_modules/axios": {
"version": "0.24.0",
"resolved": "https://registry.npmjs.org/axios/-/axios-0.24.0.tgz",
"integrity": "sha512-Q6cWsys88HoPgAaFAVUb0WpPk0O8iTeisR9IMqy9G8AbO4NlpVknrnQS03zzF9PGAWgO3cgletO3VjV/P7VztA==",
"dependencies": {
"follow-redirects": "^1.14.4"
}
},
"node_modules/follow-redirects": {
"version": "1.14.7",
"resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.7.tgz",
"integrity": "sha512-+hbxoLbFMbRKDwohX8GkTataGqO6Jb7jGwpAlwgy2bIz25XtRm7KEzJM76R1WiNT5SwZkX4Y75SwBolkpmE7iQ==",
"funding": [
{
"type": "individual",
"url": "https://github.com/sponsors/RubenVerborgh"
}
],
"engines": {
"node": ">=4.0"
},
"peerDependenciesMeta": {
"debug": {
"optional": true
}
}
}
},
"dependencies": {
"@scrypted/sdk": {
"version": "file:../../sdk",
"requires": {
"@babel/preset-typescript": "^7.16.7",
"@types/node": "^16.11.1",
"@types/stringify-object": "^4.0.0",
"adm-zip": "^0.4.13",
"axios": "^0.21.4",
"babel-loader": "^8.2.3",
"babel-plugin-const-enum": "^1.1.0",
"esbuild": "^0.13.8",
"ncp": "^2.0.0",
"raw-loader": "^4.0.2",
"rimraf": "^3.0.2",
"stringify-object": "^3.3.0",
"tmp": "^0.2.1",
"ts-node": "^10.4.0",
"typedoc": "^0.22.8",
"typescript-json-schema": "^0.50.1",
"webpack": "^5.59.0",
"webpack-bundle-analyzer": "^4.5.0"
}
},
"@types/node": {
"version": "16.6.1",
"resolved": "https://registry.npmjs.org/@types/node/-/node-16.6.1.tgz",
"integrity": "sha512-Sr7BhXEAer9xyGuCN3Ek9eg9xPviCF2gfu9kTfuU2HkTVAMYSDeX40fvpmo72n5nansg3nsBjuQBrsS28r+NUw=="
},
"axios": {
"version": "0.24.0",
"resolved": "https://registry.npmjs.org/axios/-/axios-0.24.0.tgz",
"integrity": "sha512-Q6cWsys88HoPgAaFAVUb0WpPk0O8iTeisR9IMqy9G8AbO4NlpVknrnQS03zzF9PGAWgO3cgletO3VjV/P7VztA==",
"requires": {
"follow-redirects": "^1.14.4"
}
},
"follow-redirects": {
"version": "1.14.7",
"resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.7.tgz",
"integrity": "sha512-+hbxoLbFMbRKDwohX8GkTataGqO6Jb7jGwpAlwgy2bIz25XtRm7KEzJM76R1WiNT5SwZkX4Y75SwBolkpmE7iQ=="
}
}
}

View File

@@ -1,38 +0,0 @@
{
"name": "@scrypted/camera-provider-sample",
"private": true,
"scripts": {
"scrypted-setup-project": "scrypted-setup-project",
"prescrypted-setup-project": "scrypted-package-json",
"build": "scrypted-webpack",
"prepublishOnly": "NODE_ENV=production scrypted-webpack",
"prescrypted-vscode-launch": "scrypted-webpack",
"scrypted-vscode-launch": "scrypted-deploy-debug",
"scrypted-deploy-debug": "scrypted-deploy-debug",
"scrypted-debug": "scrypted-debug",
"scrypted-deploy": "scrypted-deploy",
"scrypted-readme": "scrypted-readme",
"scrypted-package-json": "scrypted-package-json"
},
"keywords": [
"scrypted",
"plugin",
"Camera Manufacturer Name"
],
"scrypted": {
"name": "Camera Provider Sample Plugin",
"type": "DeviceProvider",
"interfaces": [
"DeviceProvider",
"Settings"
]
},
"dependencies": {
"@types/node": "^16.6.1",
"axios": "^0.24.0"
},
"devDependencies": {
"@scrypted/sdk": "^0.0.199"
},
"version": "0.0.7"
}

View File

@@ -1,185 +0,0 @@
import { BinarySensor, Camera, Device, DeviceDiscovery, DeviceProvider, FFmpegInput, Intercom, MediaObject, MediaStreamOptions, MotionSensor, PictureOptions, ResponseMediaStreamOptions, ScryptedDeviceBase, ScryptedDeviceType, ScryptedInterface, ScryptedMimeTypes, Setting, Settings, SettingValue, VideoCamera } from '@scrypted/sdk';
import sdk from '@scrypted/sdk';
import { StorageSettings } from '../../../common/src/settings';
const { log, deviceManager, mediaManager } = sdk;
class SampleCameraDevice extends ScryptedDeviceBase implements Intercom, Camera, VideoCamera, MotionSensor, BinarySensor {
constructor(public plugin: SampleCameraPlugin, nativeId: string) {
super(nativeId);
}
async takePicture(options?: PictureOptions): Promise<MediaObject> {
// fill this with a jpeg buffer
const snapshot: Buffer = undefined;
return mediaManager.createMediaObject(snapshot, 'image/jpeg');
}
async getPictureOptions(): Promise<PictureOptions[]> {
// can optionally provide the different resolutions of images that are available.
// used by homekit, if available.
return;
}
async getVideoStream(options?: MediaStreamOptions): Promise<MediaObject> {
let ffmpegInput: FFmpegInput;
// the input arguemnt to ffmpeg can be any valid ffmpeg input argument.
// if its an url, note below that it is.
const url = 'rtmp://server/whatever';
ffmpegInput = {
// the input doesn't HAVE to be an url, but if it is, provide this hint.
url,
inputArguments: [
'-i', url,
]
};
return mediaManager.createMediaObject(Buffer.from(JSON.stringify(ffmpegInput)), ScryptedMimeTypes.FFmpegInput);
}
async getVideoStreamOptions(): Promise<ResponseMediaStreamOptions[]> {
return;
}
async startIntercom(media: MediaObject): Promise<void> {
const ffmpegInput: FFmpegInput = JSON.parse((await mediaManager.convertMediaObjectToBuffer(media, ScryptedMimeTypes.FFmpegInput)).toString());
// something wants to start playback on the camera speaker.
// use their ffmpeg input arguments to spawn ffmpeg to do playback.
// some implementations read the data from an ffmpeg pipe output and POST to a url (like unifi/amcrest).
throw new Error('not implemented');
}
async stopIntercom(): Promise<void> {
}
// most cameras have have motion and doorbell press events, but dont notify when the event ends.
// so set a timeout ourselves to reset the state.
triggerBinaryState() {
this.binaryState = true;
setTimeout(() => this.binaryState = false, 10000);
}
// most cameras have have motion and doorbell press events, but dont notify when the event ends.
// so set a timeout ourselves to reset the state.
triggerMotion() {
this.motionDetected = true;
setTimeout(() => this.motionDetected = false, 10000);
}
}
class SampleCameraPlugin extends ScryptedDeviceBase implements DeviceProvider, DeviceDiscovery, Settings {
devices = new Map<string, SampleCameraDevice>();
cameras: SampleCameraDevice[];
settingsStorage = new StorageSettings(this, {
email: {
title: 'Email',
onPut: async () => this.clearTryDiscoverDevices(),
},
password: {
title: 'Password',
type: 'password',
onPut: async () => this.clearTryDiscoverDevices(),
},
twoFactorCode: {
title: 'Two Factor Code',
description: 'Optional: If 2 factor is enabled on your account, enter the code sent to your email or phone number.',
onPut: async (oldValue, newValue) => {
await this.tryLogin(newValue);
await this.discoverDevices(0);
},
noStore: true,
},
});
constructor() {
super();
this.discoverDevices(0);
}
clearTryDiscoverDevices() {
// add code to clear any refresh tokens, etc, here. login changed.
this.discoverDevices(0);
}
async tryLogin(twoFactorCode?: string) {
// this shows a user alert in the ui
this.log.a('Login failed! Is your username correct?');
throw new Error('login failed');
}
getSettings(): Promise<Setting[]> {
return this.settingsStorage.getSettings();
}
putSetting(key: string, value: SettingValue): Promise<void> {
return this.settingsStorage.putSetting(key, value);
}
async discoverDevices(duration: number) {
await this.tryLogin();
// add code to retrieve the list of cameras.
const cameras: any[] = [];
this.cameras = cameras;
const devices: Device[] = [];
for (const camera of cameras) {
const nativeId = camera.id.toString();
const interfaces = [
ScryptedInterface.Camera,
ScryptedInterface.VideoCamera,
ScryptedInterface.MotionSensor,
];
if (camera.isDoorbell) {
interfaces.push(
ScryptedInterface.BinarySensor,
ScryptedInterface.Intercom
);
}
const device: Device = {
info: {
model: camera.model,
manufacturer: 'Sample Camera Manufacturer',
},
nativeId,
name: camera.name,
type: camera.isDoorbell ? ScryptedDeviceType.Doorbell : ScryptedDeviceType.Camera,
interfaces,
};
devices.push(device);
// sample code to listen and report doorbell/motion events.
// varies by api
camera.on('doorbell',() => {
const camera = this.devices.get(nativeId);
camera?.triggerBinaryState();
});
// sample code to listen and report doorbell/motion events.
// varies by api
camera.on('motion', () => {
const camera = this.devices.get(nativeId);
camera?.triggerMotion();
});
}
await deviceManager.onDevicesChanged({
devices,
});
for (const camera of cameras) {
this.getDevice(camera.id.toString());
}
}
getDevice(nativeId: string) {
if (!this.devices.has(nativeId)) {
const camera = new SampleCameraDevice(this, nativeId);
this.devices.set(nativeId, camera);
}
return this.devices.get(nativeId);
}
}
export default new SampleCameraPlugin();

View File

@@ -1,11 +0,0 @@
{
"compilerOptions": {
"resolveJsonModule": true,
"moduleResolution": "node",
"target": "esnext",
"esModuleInterop": true,
},
"include": [
"src/**/*"
]
}

1
sdk/.gitignore vendored
View File

@@ -2,3 +2,4 @@ node_modules/
*.map
schema.json
docs
dist

View File

@@ -1 +1,4 @@
__pycache__
developer.scrypted.app
.vscode
types

View File

@@ -1,7 +0,0 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.DeviceBase = void 0;
class DeviceBase {
}
exports.DeviceBase = DeviceBase;
//# sourceMappingURL=device.js.map

View File

@@ -1,5 +0,0 @@
@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;
}

View File

@@ -1 +0,0 @@
export * from './types.input';

54
sdk/index.d.ts vendored
View File

@@ -1,54 +0,0 @@
export * from './types/index';
import { DeviceBase, MediaObject } from './types/index';
import type { ScryptedNativeId, EventListenerRegister } from './types/index';
import type { ScryptedInterface, ScryptedStatic, Logger, DeviceState } from './types/index';
export declare class ScryptedDeviceBase extends DeviceBase {
nativeId?: string;
private _storage;
private _log;
private _console;
private _deviceState;
constructor(nativeId?: string);
get storage(): Storage;
get log(): Logger;
get console(): Console;
createMediaObject(data: any, mimeType: string): Promise<MediaObject>;
getMediaObjectConsole(mediaObject: MediaObject): Console;
_lazyLoadDeviceState(): void;
/**
* Fire an event for this device.
*/
onDeviceEvent(eventInterface: string, eventData: any): Promise<void>;
}
export interface MixinDeviceOptions<T> {
mixinDevice: T;
mixinProviderNativeId: ScryptedNativeId;
mixinDeviceInterfaces: ScryptedInterface[];
mixinStorageSuffix?: string;
mixinDeviceState: DeviceState;
}
export declare class MixinDeviceBase<T> extends DeviceBase implements DeviceState {
mixinProviderNativeId: ScryptedNativeId;
mixinDevice: T;
mixinDeviceInterfaces: ScryptedInterface[];
private _storage;
private mixinStorageSuffix;
private _log;
private _console;
private _deviceState;
private _listeners;
constructor(options: MixinDeviceOptions<T>);
get storage(): Storage;
get console(): Console;
createMediaObject(data: any, mimeType: string): Promise<MediaObject>;
getMediaObjectConsole(mediaObject: MediaObject): Console;
/**
* Fire an event for this device.
*/
onDeviceEvent(eventInterface: string, eventData: any): Promise<void>;
_lazyLoadDeviceState(): void;
manageListener(listener: EventListenerRegister): void;
release(): void;
}
declare let sdk: ScryptedStatic;
export default sdk;

View File

@@ -1,189 +0,0 @@
"use strict";
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = 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];
}));
var __exportStar = (this && this.__exportStar) || function(m, exports) {
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
};
var _a, _b, _c;
Object.defineProperty(exports, "__esModule", { value: true });
exports.MixinDeviceBase = exports.ScryptedDeviceBase = void 0;
__exportStar(require("./types/index"), exports);
const index_1 = require("./types/index");
class ScryptedDeviceBase extends index_1.DeviceBase {
constructor(nativeId) {
super();
this.nativeId = nativeId;
}
get storage() {
if (!this._storage) {
this._storage = deviceManager.getDeviceStorage(this.nativeId);
}
return this._storage;
}
get log() {
if (!this._log) {
this._log = deviceManager.getDeviceLogger(this.nativeId);
}
return this._log;
}
get console() {
if (!this._console) {
this._console = deviceManager.getDeviceConsole(this.nativeId);
}
return this._console;
}
async createMediaObject(data, mimeType) {
return mediaManager.createMediaObject(data, mimeType, {
sourceId: this.id,
});
}
getMediaObjectConsole(mediaObject) {
if (typeof mediaObject.sourceId !== 'string')
return this.console;
return deviceManager.getMixinConsole(mediaObject.sourceId, this.nativeId);
}
_lazyLoadDeviceState() {
if (!this._deviceState) {
if (this.nativeId) {
this._deviceState = deviceManager.getDeviceState(this.nativeId);
}
else {
this._deviceState = deviceManager.getDeviceState();
}
}
}
/**
* Fire an event for this device.
*/
onDeviceEvent(eventInterface, eventData) {
return deviceManager.onDeviceEvent(this.nativeId, eventInterface, eventData);
}
}
exports.ScryptedDeviceBase = ScryptedDeviceBase;
class MixinDeviceBase extends index_1.DeviceBase {
constructor(options) {
super();
this._listeners = new Set();
this.mixinDevice = options.mixinDevice;
this.mixinDeviceInterfaces = options.mixinDeviceInterfaces;
this.mixinStorageSuffix = options.mixinStorageSuffix;
this._deviceState = options.mixinDeviceState;
// 8-11-2022
// RpcProxy will trap all properties, and the following check/hack will determine
// if the device state came from another node worker thread.
// This should ultimately be removed at some point in the future.
if (this._deviceState.__rpcproxy_traps_all_properties && deviceManager.createDeviceState && typeof this._deviceState.id === 'string') {
this._deviceState = deviceManager.createDeviceState(this._deviceState.id, this._deviceState.setState);
}
this.mixinProviderNativeId = options.mixinProviderNativeId;
}
get storage() {
if (!this._storage) {
const mixinStorageSuffix = this.mixinStorageSuffix;
const mixinStorageKey = this.id + (mixinStorageSuffix ? ':' + mixinStorageSuffix : '');
this._storage = deviceManager.getMixinStorage(mixinStorageKey, this.mixinProviderNativeId);
}
return this._storage;
}
get console() {
if (!this._console) {
if (deviceManager.getMixinConsole)
this._console = deviceManager.getMixinConsole(this.id, this.mixinProviderNativeId);
else
this._console = deviceManager.getDeviceConsole(this.mixinProviderNativeId);
}
return this._console;
}
async createMediaObject(data, mimeType) {
return mediaManager.createMediaObject(data, mimeType, {
sourceId: this.id,
});
}
getMediaObjectConsole(mediaObject) {
if (typeof mediaObject.sourceId !== 'string')
return this.console;
return deviceManager.getMixinConsole(mediaObject.sourceId, this.mixinProviderNativeId);
}
/**
* Fire an event for this device.
*/
onDeviceEvent(eventInterface, eventData) {
return deviceManager.onMixinEvent(this.id, this, eventInterface, eventData);
}
_lazyLoadDeviceState() {
}
manageListener(listener) {
this._listeners.add(listener);
}
release() {
for (const l of this._listeners) {
l.removeListener();
}
}
}
exports.MixinDeviceBase = MixinDeviceBase;
(function () {
function _createGetState(state) {
return function () {
var _a;
this._lazyLoadDeviceState();
return (_a = this._deviceState) === null || _a === void 0 ? void 0 : _a[state];
};
}
function _createSetState(state) {
return function (value) {
this._lazyLoadDeviceState();
if (!this._deviceState)
console.warn('device state is unavailable. the device must be discovered with deviceManager.onDeviceDiscovered or deviceManager.onDevicesChanged before the state can be set.');
else
this._deviceState[state] = value;
};
}
for (var field of Object.values(index_1.ScryptedInterfaceProperty)) {
Object.defineProperty(ScryptedDeviceBase.prototype, field, {
set: _createSetState(field),
get: _createGetState(field),
});
Object.defineProperty(MixinDeviceBase.prototype, field, {
set: _createSetState(field),
get: _createGetState(field),
});
}
})();
let sdk = {};
try {
let runtimeAPI;
try {
runtimeAPI = pluginRuntimeAPI;
}
catch (e) {
}
sdk = Object.assign(sdk, {
log: deviceManager.getDeviceLogger(undefined),
deviceManager,
endpointManager,
mediaManager,
systemManager,
pluginHostAPI,
...runtimeAPI,
});
try {
(_c = (_b = (_a = systemManager).setScryptedInterfaceDescriptors) === null || _b === void 0 ? void 0 : _b.call(_a, index_1.TYPES_VERSION, index_1.ScryptedInterfaceDescriptors)) === null || _c === void 0 ? void 0 : _c.catch(() => { });
}
catch (e) {
}
}
catch (e) {
console.error('sdk initialization error, import @scrypted/types or use @scrypted/client instead', e);
}
exports.default = sdk;
//# sourceMappingURL=index.js.map

447
sdk/package-lock.json generated
View File

@@ -1,15 +1,16 @@
{
"name": "@scrypted/sdk",
"version": "0.0.210",
"version": "0.1.3",
"lockfileVersion": 2,
"requires": true,
"packages": {
"": {
"name": "@scrypted/sdk",
"version": "0.0.210",
"version": "0.1.3",
"license": "ISC",
"dependencies": {
"@babel/preset-typescript": "^7.16.7",
"@scrypted/types": "^0.0.96",
"adm-zip": "^0.4.13",
"axios": "^0.21.4",
"babel-loader": "^8.2.3",
@@ -36,8 +37,7 @@
"@types/stringify-object": "^4.0.0",
"stringify-object": "^3.3.0",
"ts-node": "^10.4.0",
"typedoc": "^0.23.15",
"typescript-json-schema": "^0.50.1"
"typedoc": "^0.23.15"
}
},
"node_modules/@babel/code-frame": {
@@ -520,6 +520,11 @@
"resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.21.tgz",
"integrity": "sha512-a5Sab1C4/icpTZVzZc5Ghpz88yQtGOyNqYXcZgOssB2uuAr+wF/MvN6bgtW32q7HHrvBki+BsZ0OuNv6EV3K9g=="
},
"node_modules/@scrypted/types": {
"version": "0.0.96",
"resolved": "https://registry.npmjs.org/@scrypted/types/-/types-0.0.96.tgz",
"integrity": "sha512-gG0GEUXOuGkVlTJGclVTEt/mwCRumNl3xMna5nG1kfhaFCF3k8k91x0ygfGyNtIazGypiRr/JAlEpqRYmuEXzw=="
},
"node_modules/@tsconfig/node10": {
"version": "1.0.8",
"resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.8.tgz",
@@ -782,15 +787,6 @@
"ajv": "^6.9.1"
}
},
"node_modules/ansi-regex": {
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
"integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
"dev": true,
"engines": {
"node": ">=8"
}
},
"node_modules/ansi-styles": {
"version": "3.2.1",
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
@@ -932,17 +928,6 @@
"node": ">=6.0"
}
},
"node_modules/cliui": {
"version": "7.0.4",
"resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz",
"integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==",
"dev": true,
"dependencies": {
"string-width": "^4.2.0",
"strip-ansi": "^6.0.0",
"wrap-ansi": "^7.0.0"
}
},
"node_modules/color-convert": {
"version": "1.9.3",
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
@@ -1021,12 +1006,6 @@
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.37.tgz",
"integrity": "sha512-XIvFB1omSAxYgHYX48sC+HR8i/p7lx7R+0cX9faElg1g++h9IilCrJ12+bQuY+d96Wp7zkBiJwMOv+AhLtLrTg=="
},
"node_modules/emoji-regex": {
"version": "8.0.0",
"resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
"integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
"dev": true
},
"node_modules/emojis-list": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz",
@@ -1418,15 +1397,6 @@
"node": ">=6.9.0"
}
},
"node_modules/get-caller-file": {
"version": "2.0.5",
"resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz",
"integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==",
"dev": true,
"engines": {
"node": "6.* || 8.* || >= 10.*"
}
},
"node_modules/get-own-enumerable-property-symbols": {
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz",
@@ -1506,15 +1476,6 @@
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
"integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
},
"node_modules/is-fullwidth-code-point": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
"integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
"dev": true,
"engines": {
"node": ">=8"
}
},
"node_modules/is-obj": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz",
@@ -1594,15 +1555,6 @@
"resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
"integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg=="
},
"node_modules/json-stable-stringify": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz",
"integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=",
"dev": true,
"dependencies": {
"jsonify": "~0.0.0"
}
},
"node_modules/json5": {
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz",
@@ -1623,15 +1575,6 @@
"integrity": "sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==",
"dev": true
},
"node_modules/jsonify": {
"version": "0.0.0",
"resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz",
"integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=",
"dev": true,
"engines": {
"node": "*"
}
},
"node_modules/loader-runner": {
"version": "4.2.0",
"resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.2.0.tgz",
@@ -1935,15 +1878,6 @@
"url": "https://opencollective.com/webpack"
}
},
"node_modules/require-directory": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
"integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=",
"dev": true,
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/rimraf": {
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
@@ -2045,20 +1979,6 @@
"node": ">=0.10.0"
}
},
"node_modules/string-width": {
"version": "4.2.3",
"resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
"integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
"dev": true,
"dependencies": {
"emoji-regex": "^8.0.0",
"is-fullwidth-code-point": "^3.0.0",
"strip-ansi": "^6.0.1"
},
"engines": {
"node": ">=8"
}
},
"node_modules/stringify-object": {
"version": "3.3.0",
"resolved": "https://registry.npmjs.org/stringify-object/-/stringify-object-3.3.0.tgz",
@@ -2073,18 +1993,6 @@
"node": ">=4"
}
},
"node_modules/strip-ansi": {
"version": "6.0.1",
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
"integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
"dev": true,
"dependencies": {
"ansi-regex": "^5.0.1"
},
"engines": {
"node": ">=8"
}
},
"node_modules/supports-color": {
"version": "5.5.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
@@ -2303,69 +2211,6 @@
"node": ">=4.2.0"
}
},
"node_modules/typescript-json-schema": {
"version": "0.50.1",
"resolved": "https://registry.npmjs.org/typescript-json-schema/-/typescript-json-schema-0.50.1.tgz",
"integrity": "sha512-GCof/SDoiTDl0qzPonNEV4CHyCsZEIIf+mZtlrjoD8vURCcEzEfa2deRuxYid8Znp/e27eDR7Cjg8jgGrimBCA==",
"dev": true,
"dependencies": {
"@types/json-schema": "^7.0.7",
"@types/node": "^14.14.33",
"glob": "^7.1.6",
"json-stable-stringify": "^1.0.1",
"ts-node": "^9.1.1",
"typescript": "~4.2.3",
"yargs": "^16.2.0"
},
"bin": {
"typescript-json-schema": "bin/typescript-json-schema"
}
},
"node_modules/typescript-json-schema/node_modules/@types/node": {
"version": "14.18.5",
"resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.5.tgz",
"integrity": "sha512-LMy+vDDcQR48EZdEx5wRX1q/sEl6NdGuHXPnfeL8ixkwCOSZ2qnIyIZmcCbdX0MeRqHhAcHmX+haCbrS8Run+A==",
"dev": true
},
"node_modules/typescript-json-schema/node_modules/ts-node": {
"version": "9.1.1",
"resolved": "https://registry.npmjs.org/ts-node/-/ts-node-9.1.1.tgz",
"integrity": "sha512-hPlt7ZACERQGf03M253ytLY3dHbGNGrAq9qIHWUY9XHYl1z7wYngSr3OQ5xmui8o2AaxsONxIzjafLUiWBo1Fg==",
"dev": true,
"dependencies": {
"arg": "^4.1.0",
"create-require": "^1.1.0",
"diff": "^4.0.1",
"make-error": "^1.1.1",
"source-map-support": "^0.5.17",
"yn": "3.1.1"
},
"bin": {
"ts-node": "dist/bin.js",
"ts-node-script": "dist/bin-script.js",
"ts-node-transpile-only": "dist/bin-transpile.js",
"ts-script": "dist/bin-script-deprecated.js"
},
"engines": {
"node": ">=10.0.0"
},
"peerDependencies": {
"typescript": ">=2.7"
}
},
"node_modules/typescript-json-schema/node_modules/typescript": {
"version": "4.2.4",
"resolved": "https://registry.npmjs.org/typescript/-/typescript-4.2.4.tgz",
"integrity": "sha512-V+evlYHZnQkaz8TRBuxTA92yZBPotr5H+WhQ7bD3hZUndx5tGOa1fuCgeSjxAzM1RiN5IzvadIXTVefuuwZCRg==",
"dev": true,
"bin": {
"tsc": "bin/tsc",
"tsserver": "bin/tsserver"
},
"engines": {
"node": ">=4.2.0"
}
},
"node_modules/uri-js": {
"version": "4.4.1",
"resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz",
@@ -2563,56 +2408,6 @@
"url": "https://opencollective.com/webpack"
}
},
"node_modules/wrap-ansi": {
"version": "7.0.0",
"resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
"integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
"dev": true,
"dependencies": {
"ansi-styles": "^4.0.0",
"string-width": "^4.1.0",
"strip-ansi": "^6.0.0"
},
"engines": {
"node": ">=10"
},
"funding": {
"url": "https://github.com/chalk/wrap-ansi?sponsor=1"
}
},
"node_modules/wrap-ansi/node_modules/ansi-styles": {
"version": "4.3.0",
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
"integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
"dev": true,
"dependencies": {
"color-convert": "^2.0.1"
},
"engines": {
"node": ">=8"
},
"funding": {
"url": "https://github.com/chalk/ansi-styles?sponsor=1"
}
},
"node_modules/wrap-ansi/node_modules/color-convert": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
"integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
"dev": true,
"dependencies": {
"color-name": "~1.1.4"
},
"engines": {
"node": ">=7.0.0"
}
},
"node_modules/wrap-ansi/node_modules/color-name": {
"version": "1.1.4",
"resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
"integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
"dev": true
},
"node_modules/wrappy": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
@@ -2638,42 +2433,6 @@
}
}
},
"node_modules/y18n": {
"version": "5.0.8",
"resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz",
"integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==",
"dev": true,
"engines": {
"node": ">=10"
}
},
"node_modules/yargs": {
"version": "16.2.0",
"resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz",
"integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==",
"dev": true,
"dependencies": {
"cliui": "^7.0.2",
"escalade": "^3.1.1",
"get-caller-file": "^2.0.5",
"require-directory": "^2.1.1",
"string-width": "^4.2.0",
"y18n": "^5.0.5",
"yargs-parser": "^20.2.2"
},
"engines": {
"node": ">=10"
}
},
"node_modules/yargs-parser": {
"version": "20.2.9",
"resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz",
"integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==",
"dev": true,
"engines": {
"node": ">=10"
}
},
"node_modules/yn": {
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz",
@@ -3038,6 +2797,11 @@
"resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.21.tgz",
"integrity": "sha512-a5Sab1C4/icpTZVzZc5Ghpz88yQtGOyNqYXcZgOssB2uuAr+wF/MvN6bgtW32q7HHrvBki+BsZ0OuNv6EV3K9g=="
},
"@scrypted/types": {
"version": "0.0.96",
"resolved": "https://registry.npmjs.org/@scrypted/types/-/types-0.0.96.tgz",
"integrity": "sha512-gG0GEUXOuGkVlTJGclVTEt/mwCRumNl3xMna5nG1kfhaFCF3k8k91x0ygfGyNtIazGypiRr/JAlEpqRYmuEXzw=="
},
"@tsconfig/node10": {
"version": "1.0.8",
"resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.8.tgz",
@@ -3280,12 +3044,6 @@
"integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==",
"requires": {}
},
"ansi-regex": {
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
"integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
"dev": true
},
"ansi-styles": {
"version": "3.2.1",
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
@@ -3385,17 +3143,6 @@
"resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz",
"integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg=="
},
"cliui": {
"version": "7.0.4",
"resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz",
"integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==",
"dev": true,
"requires": {
"string-width": "^4.2.0",
"strip-ansi": "^6.0.0",
"wrap-ansi": "^7.0.0"
}
},
"color-convert": {
"version": "1.9.3",
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
@@ -3463,12 +3210,6 @@
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.37.tgz",
"integrity": "sha512-XIvFB1omSAxYgHYX48sC+HR8i/p7lx7R+0cX9faElg1g++h9IilCrJ12+bQuY+d96Wp7zkBiJwMOv+AhLtLrTg=="
},
"emoji-regex": {
"version": "8.0.0",
"resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
"integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
"dev": true
},
"emojis-list": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz",
@@ -3703,12 +3444,6 @@
"integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==",
"peer": true
},
"get-caller-file": {
"version": "2.0.5",
"resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz",
"integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==",
"dev": true
},
"get-own-enumerable-property-symbols": {
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz",
@@ -3770,12 +3505,6 @@
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
"integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
},
"is-fullwidth-code-point": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
"integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
"dev": true
},
"is-obj": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz",
@@ -3833,15 +3562,6 @@
"resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
"integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg=="
},
"json-stable-stringify": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz",
"integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=",
"dev": true,
"requires": {
"jsonify": "~0.0.0"
}
},
"json5": {
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz",
@@ -3856,12 +3576,6 @@
"integrity": "sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==",
"dev": true
},
"jsonify": {
"version": "0.0.0",
"resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz",
"integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=",
"dev": true
},
"loader-runner": {
"version": "4.2.0",
"resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.2.0.tgz",
@@ -4083,12 +3797,6 @@
}
}
},
"require-directory": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
"integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=",
"dev": true
},
"rimraf": {
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
@@ -4167,17 +3875,6 @@
}
}
},
"string-width": {
"version": "4.2.3",
"resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
"integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
"dev": true,
"requires": {
"emoji-regex": "^8.0.0",
"is-fullwidth-code-point": "^3.0.0",
"strip-ansi": "^6.0.1"
}
},
"stringify-object": {
"version": "3.3.0",
"resolved": "https://registry.npmjs.org/stringify-object/-/stringify-object-3.3.0.tgz",
@@ -4189,15 +3886,6 @@
"is-regexp": "^1.0.0"
}
},
"strip-ansi": {
"version": "6.0.1",
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
"integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
"dev": true,
"requires": {
"ansi-regex": "^5.0.1"
}
},
"supports-color": {
"version": "5.5.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
@@ -4328,49 +4016,6 @@
"dev": true,
"peer": true
},
"typescript-json-schema": {
"version": "0.50.1",
"resolved": "https://registry.npmjs.org/typescript-json-schema/-/typescript-json-schema-0.50.1.tgz",
"integrity": "sha512-GCof/SDoiTDl0qzPonNEV4CHyCsZEIIf+mZtlrjoD8vURCcEzEfa2deRuxYid8Znp/e27eDR7Cjg8jgGrimBCA==",
"dev": true,
"requires": {
"@types/json-schema": "^7.0.7",
"@types/node": "^14.14.33",
"glob": "^7.1.6",
"json-stable-stringify": "^1.0.1",
"ts-node": "^9.1.1",
"typescript": "~4.2.3",
"yargs": "^16.2.0"
},
"dependencies": {
"@types/node": {
"version": "14.18.5",
"resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.5.tgz",
"integrity": "sha512-LMy+vDDcQR48EZdEx5wRX1q/sEl6NdGuHXPnfeL8ixkwCOSZ2qnIyIZmcCbdX0MeRqHhAcHmX+haCbrS8Run+A==",
"dev": true
},
"ts-node": {
"version": "9.1.1",
"resolved": "https://registry.npmjs.org/ts-node/-/ts-node-9.1.1.tgz",
"integrity": "sha512-hPlt7ZACERQGf03M253ytLY3dHbGNGrAq9qIHWUY9XHYl1z7wYngSr3OQ5xmui8o2AaxsONxIzjafLUiWBo1Fg==",
"dev": true,
"requires": {
"arg": "^4.1.0",
"create-require": "^1.1.0",
"diff": "^4.0.1",
"make-error": "^1.1.1",
"source-map-support": "^0.5.17",
"yn": "3.1.1"
}
},
"typescript": {
"version": "4.2.4",
"resolved": "https://registry.npmjs.org/typescript/-/typescript-4.2.4.tgz",
"integrity": "sha512-V+evlYHZnQkaz8TRBuxTA92yZBPotr5H+WhQ7bD3hZUndx5tGOa1fuCgeSjxAzM1RiN5IzvadIXTVefuuwZCRg==",
"dev": true
}
}
},
"uri-js": {
"version": "4.4.1",
"resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz",
@@ -4514,43 +4159,6 @@
"resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.2.tgz",
"integrity": "sha512-cp5qdmHnu5T8wRg2G3vZZHoJPN14aqQ89SyQ11NpGH5zEMDCclt49rzo+MaRazk7/UeILhAI+/sEtcM+7Fr0nw=="
},
"wrap-ansi": {
"version": "7.0.0",
"resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
"integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
"dev": true,
"requires": {
"ansi-styles": "^4.0.0",
"string-width": "^4.1.0",
"strip-ansi": "^6.0.0"
},
"dependencies": {
"ansi-styles": {
"version": "4.3.0",
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
"integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
"dev": true,
"requires": {
"color-convert": "^2.0.1"
}
},
"color-convert": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
"integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
"dev": true,
"requires": {
"color-name": "~1.1.4"
}
},
"color-name": {
"version": "1.1.4",
"resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
"integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
"dev": true
}
}
},
"wrappy": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
@@ -4562,33 +4170,6 @@
"integrity": "sha512-6GLgCqo2cy2A2rjCNFlxQS6ZljG/coZfZXclldI8FB/1G3CCI36Zd8xy2HrFVACi8tfk5XrgLQEk+P0Tnz9UcA==",
"requires": {}
},
"y18n": {
"version": "5.0.8",
"resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz",
"integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==",
"dev": true
},
"yargs": {
"version": "16.2.0",
"resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz",
"integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==",
"dev": true,
"requires": {
"cliui": "^7.0.2",
"escalade": "^3.1.1",
"get-caller-file": "^2.0.5",
"require-directory": "^2.1.1",
"string-width": "^4.2.0",
"y18n": "^5.0.5",
"yargs-parser": "^20.2.2"
}
},
"yargs-parser": {
"version": "20.2.9",
"resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz",
"integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==",
"dev": true
},
"yn": {
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz",

View File

@@ -1,14 +1,18 @@
{
"name": "@scrypted/sdk",
"version": "0.0.210",
"version": "0.1.3",
"description": "",
"main": "index.js",
"main": "dist/index.js",
"exports": {
".": "./dist/index.js",
"./storage-settings": "./dist/storage-settings.js"
},
"scripts": {
"prepublishOnly": "npm run build && cd types && npm version patch && npm publish",
"prebuild": "cd types && npm run build",
"predocs": "npm run build",
"docs": "typedoc && cp developer.scrypted.app/CNAME developer.scrypted.app/docs",
"build": "tsc",
"build": "rimraf dist && npm link @scrypted/types && tsc",
"webpack": "webpack-cli --config webpack.config.js",
"test": "echo \"Error: no test specified\" && exit 1"
},
@@ -25,6 +29,7 @@
"license": "ISC",
"dependencies": {
"@babel/preset-typescript": "^7.16.7",
"@scrypted/types": "^0.0.96",
"adm-zip": "^0.4.13",
"axios": "^0.21.4",
"babel-loader": "^8.2.3",
@@ -42,8 +47,7 @@
"@types/stringify-object": "^4.0.0",
"stringify-object": "^3.3.0",
"ts-node": "^10.4.0",
"typedoc": "^0.23.15",
"typescript-json-schema": "^0.50.1"
"typedoc": "^0.23.15"
},
"types": "index.d.ts"
"types": "dist/index.d.ts"
}

View File

@@ -1,7 +1,6 @@
export * from './types/index'
import { ScryptedInterfaceProperty, DeviceBase, MediaObject, ScryptedInterfaceDescriptors, TYPES_VERSION } from './types/index';
import type { ScryptedNativeId, DeviceManager, SystemManager, MediaManager, EndpointManager, EventListenerRegister } from './types/index';
import type { ScryptedInterface, ScryptedStatic, Logger, DeviceState } from './types/index';
export * from '@scrypted/types';
import type { DeviceManager, DeviceState, EndpointManager, EventListenerRegister, Logger, MediaManager, MediaObject, ScryptedInterface, ScryptedNativeId, ScryptedStatic, SystemManager } from '@scrypted/types';
import { DeviceBase, ScryptedInterfaceDescriptors, ScryptedInterfaceProperty, TYPES_VERSION } from '@scrypted/types';
export class ScryptedDeviceBase extends DeviceBase {
private _storage: Storage;

View File

@@ -1,4 +1,4 @@
import sdk, { ScryptedInterface, Setting, Settings, SettingValue } from "@scrypted/sdk";
import sdk, { ScryptedInterface, Setting, Settings, SettingValue } from ".";
const { systemManager } = sdk;

View File

@@ -1,14 +1,14 @@
{
"compilerOptions": {
"module": "commonjs",
"target": "es2019",
"target": "ESNext",
"noImplicitAny": true,
"esModuleInterop": true,
"sourceMap": true,
"declaration": true,
"outDir": "dist"
},
"exclude": [
"gen",
"types"
]
"include": [
"src/**/*",
],
}

View File

@@ -2,7 +2,7 @@
"compilerOptions": {
"resolveJsonModule": true,
"moduleResolution": "node",
"target": "esnext",
"target": "ESNext",
"esModuleInterop": true,
},
"include": [

View File

@@ -1,6 +1,6 @@
{
"entryPoints": [
"./"
"./src"
],
"sort": ["source-order"],
"name": "Scrypted Documentation",
@@ -16,6 +16,6 @@
"Media Reference",
"Webhook and Push Reference"
],
"customCss": "docs.css",
"customCss": "./developer.scrypted.app/docs.css",
"readme": "./README.md"
}

2
sdk/types/.gitignore vendored Normal file
View File

@@ -0,0 +1,2 @@
gen
dist

View File

@@ -1 +1,6 @@
__pycache__
gen
tsconfig.json
tsconfig.typedoc.json
typedoc.json
src

1789
sdk/types/index.d.ts vendored

File diff suppressed because it is too large Load Diff

View File

@@ -1,888 +0,0 @@
"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.93";
class DeviceBase {
}
exports.DeviceBase = DeviceBase;
var ScryptedInterfaceProperty;
(function (ScryptedInterfaceProperty) {
ScryptedInterfaceProperty["id"] = "id";
ScryptedInterfaceProperty["info"] = "info";
ScryptedInterfaceProperty["interfaces"] = "interfaces";
ScryptedInterfaceProperty["mixins"] = "mixins";
ScryptedInterfaceProperty["name"] = "name";
ScryptedInterfaceProperty["pluginId"] = "pluginId";
ScryptedInterfaceProperty["providedInterfaces"] = "providedInterfaces";
ScryptedInterfaceProperty["providedName"] = "providedName";
ScryptedInterfaceProperty["providedRoom"] = "providedRoom";
ScryptedInterfaceProperty["providedType"] = "providedType";
ScryptedInterfaceProperty["providerId"] = "providerId";
ScryptedInterfaceProperty["room"] = "room";
ScryptedInterfaceProperty["type"] = "type";
ScryptedInterfaceProperty["on"] = "on";
ScryptedInterfaceProperty["brightness"] = "brightness";
ScryptedInterfaceProperty["colorTemperature"] = "colorTemperature";
ScryptedInterfaceProperty["rgb"] = "rgb";
ScryptedInterfaceProperty["hsv"] = "hsv";
ScryptedInterfaceProperty["running"] = "running";
ScryptedInterfaceProperty["paused"] = "paused";
ScryptedInterfaceProperty["docked"] = "docked";
ScryptedInterfaceProperty["thermostatActiveMode"] = "thermostatActiveMode";
ScryptedInterfaceProperty["thermostatAvailableModes"] = "thermostatAvailableModes";
ScryptedInterfaceProperty["thermostatMode"] = "thermostatMode";
ScryptedInterfaceProperty["thermostatSetpoint"] = "thermostatSetpoint";
ScryptedInterfaceProperty["thermostatSetpointHigh"] = "thermostatSetpointHigh";
ScryptedInterfaceProperty["thermostatSetpointLow"] = "thermostatSetpointLow";
ScryptedInterfaceProperty["temperature"] = "temperature";
ScryptedInterfaceProperty["temperatureUnit"] = "temperatureUnit";
ScryptedInterfaceProperty["humidity"] = "humidity";
ScryptedInterfaceProperty["ptzCapabilities"] = "ptzCapabilities";
ScryptedInterfaceProperty["lockState"] = "lockState";
ScryptedInterfaceProperty["entryOpen"] = "entryOpen";
ScryptedInterfaceProperty["batteryLevel"] = "batteryLevel";
ScryptedInterfaceProperty["online"] = "online";
ScryptedInterfaceProperty["updateAvailable"] = "updateAvailable";
ScryptedInterfaceProperty["fromMimeType"] = "fromMimeType";
ScryptedInterfaceProperty["toMimeType"] = "toMimeType";
ScryptedInterfaceProperty["binaryState"] = "binaryState";
ScryptedInterfaceProperty["tampered"] = "tampered";
ScryptedInterfaceProperty["powerDetected"] = "powerDetected";
ScryptedInterfaceProperty["audioDetected"] = "audioDetected";
ScryptedInterfaceProperty["motionDetected"] = "motionDetected";
ScryptedInterfaceProperty["ambientLight"] = "ambientLight";
ScryptedInterfaceProperty["occupied"] = "occupied";
ScryptedInterfaceProperty["flooded"] = "flooded";
ScryptedInterfaceProperty["ultraviolet"] = "ultraviolet";
ScryptedInterfaceProperty["luminance"] = "luminance";
ScryptedInterfaceProperty["position"] = "position";
ScryptedInterfaceProperty["securitySystemState"] = "securitySystemState";
ScryptedInterfaceProperty["pm10Density"] = "pm10Density";
ScryptedInterfaceProperty["pm25Density"] = "pm25Density";
ScryptedInterfaceProperty["vocDensity"] = "vocDensity";
ScryptedInterfaceProperty["noxDensity"] = "noxDensity";
ScryptedInterfaceProperty["co2ppm"] = "co2ppm";
ScryptedInterfaceProperty["airQuality"] = "airQuality";
ScryptedInterfaceProperty["humiditySetting"] = "humiditySetting";
ScryptedInterfaceProperty["fan"] = "fan";
ScryptedInterfaceProperty["applicationInfo"] = "applicationInfo";
})(ScryptedInterfaceProperty = exports.ScryptedInterfaceProperty || (exports.ScryptedInterfaceProperty = {}));
exports.ScryptedInterfaceDescriptors = {
ScryptedDevice: {
name: 'ScryptedDevice',
methods: [
'listen',
'probe',
'setName',
'setRoom',
'setType'
],
properties: [
'id',
'info',
'interfaces',
'mixins',
'name',
'pluginId',
'providedInterfaces',
'providedName',
'providedRoom',
'providedType',
'providerId',
'room',
'type'
]
},
ScryptedPlugin: {
name: 'ScryptedPlugin',
methods: [
'getPluginJson'
],
properties: []
},
OnOff: {
name: 'OnOff',
methods: [
'turnOff',
'turnOn'
],
properties: [
'on'
]
},
Brightness: {
name: 'Brightness',
methods: [
'setBrightness'
],
properties: [
'brightness'
]
},
ColorSettingTemperature: {
name: 'ColorSettingTemperature',
methods: [
'getTemperatureMaxK',
'getTemperatureMinK',
'setColorTemperature'
],
properties: [
'colorTemperature'
]
},
ColorSettingRgb: {
name: 'ColorSettingRgb',
methods: [
'setRgb'
],
properties: [
'rgb'
]
},
ColorSettingHsv: {
name: 'ColorSettingHsv',
methods: [
'setHsv'
],
properties: [
'hsv'
]
},
Notifier: {
name: 'Notifier',
methods: [
'sendNotification'
],
properties: []
},
StartStop: {
name: 'StartStop',
methods: [
'start',
'stop'
],
properties: [
'running'
]
},
Pause: {
name: 'Pause',
methods: [
'pause',
'resume'
],
properties: [
'paused'
]
},
Dock: {
name: 'Dock',
methods: [
'dock'
],
properties: [
'docked'
]
},
TemperatureSetting: {
name: 'TemperatureSetting',
methods: [
'setThermostatMode',
'setThermostatSetpoint',
'setThermostatSetpointHigh',
'setThermostatSetpointLow'
],
properties: [
'thermostatActiveMode',
'thermostatAvailableModes',
'thermostatMode',
'thermostatSetpoint',
'thermostatSetpointHigh',
'thermostatSetpointLow'
]
},
Thermometer: {
name: 'Thermometer',
methods: [
'setTemperatureUnit'
],
properties: [
'temperature',
'temperatureUnit'
]
},
HumiditySensor: {
name: 'HumiditySensor',
methods: [],
properties: [
'humidity'
]
},
Camera: {
name: 'Camera',
methods: [
'getPictureOptions',
'takePicture'
],
properties: []
},
Microphone: {
name: 'Microphone',
methods: [
'getAudioStream'
],
properties: []
},
Display: {
name: 'Display',
methods: [
'startDisplay',
'stopDisplay'
],
properties: []
},
VideoCamera: {
name: 'VideoCamera',
methods: [
'getVideoStream',
'getVideoStreamOptions'
],
properties: []
},
VideoRecorder: {
name: 'VideoRecorder',
methods: [
'getRecordingStream',
'getRecordingStreamCurrentTime',
'getRecordingStreamOptions',
'getRecordingStreamThumbnail'
],
properties: []
},
PanTiltZoom: {
name: 'PanTiltZoom',
methods: [
'ptzCommand'
],
properties: [
'ptzCapabilities'
]
},
EventRecorder: {
name: 'EventRecorder',
methods: [
'getRecordedEvents'
],
properties: []
},
VideoClips: {
name: 'VideoClips',
methods: [
'getVideoClip',
'getVideoClipThumbnail',
'getVideoClips',
'removeVideoClips'
],
properties: []
},
VideoCameraConfiguration: {
name: 'VideoCameraConfiguration',
methods: [
'setVideoStreamOptions'
],
properties: []
},
Intercom: {
name: 'Intercom',
methods: [
'startIntercom',
'stopIntercom'
],
properties: []
},
Lock: {
name: 'Lock',
methods: [
'lock',
'unlock'
],
properties: [
'lockState'
]
},
PasswordStore: {
name: 'PasswordStore',
methods: [
'addPassword',
'getPasswords',
'removePassword'
],
properties: []
},
Authenticator: {
name: 'Authenticator',
methods: [
'checkPassword'
],
properties: []
},
Scene: {
name: 'Scene',
methods: [
'activate',
'deactivate',
'isReversible'
],
properties: []
},
Entry: {
name: 'Entry',
methods: [
'closeEntry',
'openEntry'
],
properties: []
},
EntrySensor: {
name: 'EntrySensor',
methods: [],
properties: [
'entryOpen'
]
},
DeviceProvider: {
name: 'DeviceProvider',
methods: [
'getDevice'
],
properties: []
},
DeviceDiscovery: {
name: 'DeviceDiscovery',
methods: [
'discoverDevices'
],
properties: []
},
DeviceCreator: {
name: 'DeviceCreator',
methods: [
'createDevice',
'getCreateDeviceSettings'
],
properties: []
},
Battery: {
name: 'Battery',
methods: [],
properties: [
'batteryLevel'
]
},
Refresh: {
name: 'Refresh',
methods: [
'getRefreshFrequency',
'refresh'
],
properties: []
},
MediaPlayer: {
name: 'MediaPlayer',
methods: [
'getMediaStatus',
'load',
'seek',
'skipNext',
'skipPrevious'
],
properties: []
},
Online: {
name: 'Online',
methods: [],
properties: [
'online'
]
},
SoftwareUpdate: {
name: 'SoftwareUpdate',
methods: [
'checkForUpdate',
'installUpdate'
],
properties: [
'updateAvailable'
]
},
BufferConverter: {
name: 'BufferConverter',
methods: [
'convert'
],
properties: [
'fromMimeType',
'toMimeType'
]
},
Settings: {
name: 'Settings',
methods: [
'getSettings',
'putSetting'
],
properties: []
},
BinarySensor: {
name: 'BinarySensor',
methods: [],
properties: [
'binaryState'
]
},
TamperSensor: {
name: 'TamperSensor',
methods: [],
properties: [
'tampered'
]
},
PowerSensor: {
name: 'PowerSensor',
methods: [],
properties: [
'powerDetected'
]
},
AudioSensor: {
name: 'AudioSensor',
methods: [],
properties: [
'audioDetected'
]
},
MotionSensor: {
name: 'MotionSensor',
methods: [],
properties: [
'motionDetected'
]
},
AmbientLightSensor: {
name: 'AmbientLightSensor',
methods: [],
properties: [
'ambientLight'
]
},
OccupancySensor: {
name: 'OccupancySensor',
methods: [],
properties: [
'occupied'
]
},
FloodSensor: {
name: 'FloodSensor',
methods: [],
properties: [
'flooded'
]
},
UltravioletSensor: {
name: 'UltravioletSensor',
methods: [],
properties: [
'ultraviolet'
]
},
LuminanceSensor: {
name: 'LuminanceSensor',
methods: [],
properties: [
'luminance'
]
},
PositionSensor: {
name: 'PositionSensor',
methods: [],
properties: [
'position'
]
},
SecuritySystem: {
name: 'SecuritySystem',
methods: [
'armSecuritySystem',
'disarmSecuritySystem'
],
properties: [
'securitySystemState'
]
},
PM10Sensor: {
name: 'PM10Sensor',
methods: [],
properties: [
'pm10Density'
]
},
PM25Sensor: {
name: 'PM25Sensor',
methods: [],
properties: [
'pm25Density'
]
},
VOCSensor: {
name: 'VOCSensor',
methods: [],
properties: [
'vocDensity'
]
},
NOXSensor: {
name: 'NOXSensor',
methods: [],
properties: [
'noxDensity'
]
},
CO2Sensor: {
name: 'CO2Sensor',
methods: [],
properties: [
'co2ppm'
]
},
AirQualitySensor: {
name: 'AirQualitySensor',
methods: [],
properties: [
'airQuality'
]
},
Readme: {
name: 'Readme',
methods: [
'getReadmeMarkdown'
],
properties: []
},
OauthClient: {
name: 'OauthClient',
methods: [
'getOauthUrl',
'onOauthCallback'
],
properties: []
},
MixinProvider: {
name: 'MixinProvider',
methods: [
'canMixin',
'getMixin',
'releaseMixin'
],
properties: []
},
HttpRequestHandler: {
name: 'HttpRequestHandler',
methods: [
'onRequest'
],
properties: []
},
EngineIOHandler: {
name: 'EngineIOHandler',
methods: [
'onConnection'
],
properties: []
},
PushHandler: {
name: 'PushHandler',
methods: [
'onPush'
],
properties: []
},
Program: {
name: 'Program',
methods: [
'run'
],
properties: []
},
Scriptable: {
name: 'Scriptable',
methods: [
'eval',
'loadScripts',
'saveScript'
],
properties: []
},
ObjectDetector: {
name: 'ObjectDetector',
methods: [
'getDetectionInput',
'getObjectTypes'
],
properties: []
},
ObjectDetection: {
name: 'ObjectDetection',
methods: [
'detectObjects',
'getDetectionModel'
],
properties: []
},
HumiditySetting: {
name: 'HumiditySetting',
methods: [
'setHumidity'
],
properties: [
'humiditySetting'
]
},
Fan: {
name: 'Fan',
methods: [
'setFan'
],
properties: [
'fan'
]
},
RTCSignalingChannel: {
name: 'RTCSignalingChannel',
methods: [
'startRTCSignalingSession'
],
properties: []
},
RTCSignalingClient: {
name: 'RTCSignalingClient',
methods: [
'createRTCSignalingSession'
],
properties: []
},
LauncherApplication: {
name: 'LauncherApplication',
methods: [],
properties: [
'applicationInfo'
]
}
};
/**
* @category Core Reference
*/
var ScryptedDeviceType;
(function (ScryptedDeviceType) {
ScryptedDeviceType["Builtin"] = "Builtin";
ScryptedDeviceType["Camera"] = "Camera";
ScryptedDeviceType["Fan"] = "Fan";
ScryptedDeviceType["Light"] = "Light";
ScryptedDeviceType["Switch"] = "Switch";
ScryptedDeviceType["Outlet"] = "Outlet";
ScryptedDeviceType["Sensor"] = "Sensor";
ScryptedDeviceType["Scene"] = "Scene";
ScryptedDeviceType["Program"] = "Program";
ScryptedDeviceType["Automation"] = "Automation";
ScryptedDeviceType["Vacuum"] = "Vacuum";
ScryptedDeviceType["Notifier"] = "Notifier";
ScryptedDeviceType["Thermostat"] = "Thermostat";
ScryptedDeviceType["Lock"] = "Lock";
ScryptedDeviceType["PasswordControl"] = "PasswordControl";
/**
* Displays have audio and video output.
*/
ScryptedDeviceType["Display"] = "Display";
/**
* Smart Displays have two way audio and video.
*/
ScryptedDeviceType["SmartDisplay"] = "SmartDisplay";
ScryptedDeviceType["Speaker"] = "Speaker";
/**
* Smart Speakers have two way audio.
*/
ScryptedDeviceType["SmartSpeaker"] = "SmartSpeaker";
ScryptedDeviceType["Event"] = "Event";
ScryptedDeviceType["Entry"] = "Entry";
ScryptedDeviceType["Garage"] = "Garage";
ScryptedDeviceType["DeviceProvider"] = "DeviceProvider";
ScryptedDeviceType["DataSource"] = "DataSource";
ScryptedDeviceType["API"] = "API";
ScryptedDeviceType["Doorbell"] = "Doorbell";
ScryptedDeviceType["Irrigation"] = "Irrigation";
ScryptedDeviceType["Valve"] = "Valve";
ScryptedDeviceType["Person"] = "Person";
ScryptedDeviceType["SecuritySystem"] = "SecuritySystem";
ScryptedDeviceType["Unknown"] = "Unknown";
})(ScryptedDeviceType = exports.ScryptedDeviceType || (exports.ScryptedDeviceType = {}));
var HumidityMode;
(function (HumidityMode) {
HumidityMode["Humidify"] = "Humidify";
HumidityMode["Dehumidify"] = "Dehumidify";
HumidityMode["Auto"] = "Auto";
HumidityMode["Off"] = "Off";
})(HumidityMode = exports.HumidityMode || (exports.HumidityMode = {}));
var FanMode;
(function (FanMode) {
FanMode["Auto"] = "Auto";
FanMode["Manual"] = "Manual";
})(FanMode = exports.FanMode || (exports.FanMode = {}));
var TemperatureUnit;
(function (TemperatureUnit) {
TemperatureUnit["C"] = "C";
TemperatureUnit["F"] = "F";
})(TemperatureUnit = exports.TemperatureUnit || (exports.TemperatureUnit = {}));
var ThermostatMode;
(function (ThermostatMode) {
ThermostatMode["Off"] = "Off";
ThermostatMode["Cool"] = "Cool";
ThermostatMode["Heat"] = "Heat";
ThermostatMode["HeatCool"] = "HeatCool";
ThermostatMode["Auto"] = "Auto";
ThermostatMode["FanOnly"] = "FanOnly";
ThermostatMode["Purifier"] = "Purifier";
ThermostatMode["Eco"] = "Eco";
ThermostatMode["Dry"] = "Dry";
ThermostatMode["On"] = "On";
})(ThermostatMode = exports.ThermostatMode || (exports.ThermostatMode = {}));
var LockState;
(function (LockState) {
LockState["Locked"] = "Locked";
LockState["Unlocked"] = "Unlocked";
LockState["Jammed"] = "Jammed";
})(LockState = exports.LockState || (exports.LockState = {}));
var AirQuality;
(function (AirQuality) {
AirQuality["Unknown"] = "Unknown";
AirQuality["Excellent"] = "Excellent";
AirQuality["Good"] = "Good";
AirQuality["Fair"] = "Fair";
AirQuality["Inferior"] = "Inferior";
AirQuality["Poor"] = "Poor";
})(AirQuality = exports.AirQuality || (exports.AirQuality = {}));
var SecuritySystemMode;
(function (SecuritySystemMode) {
SecuritySystemMode["Disarmed"] = "Disarmed";
SecuritySystemMode["HomeArmed"] = "HomeArmed";
SecuritySystemMode["AwayArmed"] = "AwayArmed";
SecuritySystemMode["NightArmed"] = "NightArmed";
})(SecuritySystemMode = exports.SecuritySystemMode || (exports.SecuritySystemMode = {}));
var SecuritySystemObstruction;
(function (SecuritySystemObstruction) {
SecuritySystemObstruction["Sensor"] = "Sensor";
SecuritySystemObstruction["Occupied"] = "Occupied";
SecuritySystemObstruction["Time"] = "Time";
SecuritySystemObstruction["Error"] = "Error";
})(SecuritySystemObstruction = exports.SecuritySystemObstruction || (exports.SecuritySystemObstruction = {}));
var MediaPlayerState;
(function (MediaPlayerState) {
MediaPlayerState["Idle"] = "Idle";
MediaPlayerState["Playing"] = "Playing";
MediaPlayerState["Paused"] = "Paused";
MediaPlayerState["Buffering"] = "Buffering";
})(MediaPlayerState = exports.MediaPlayerState || (exports.MediaPlayerState = {}));
var ScryptedInterface;
(function (ScryptedInterface) {
ScryptedInterface["ScryptedDevice"] = "ScryptedDevice";
ScryptedInterface["ScryptedPlugin"] = "ScryptedPlugin";
ScryptedInterface["OnOff"] = "OnOff";
ScryptedInterface["Brightness"] = "Brightness";
ScryptedInterface["ColorSettingTemperature"] = "ColorSettingTemperature";
ScryptedInterface["ColorSettingRgb"] = "ColorSettingRgb";
ScryptedInterface["ColorSettingHsv"] = "ColorSettingHsv";
ScryptedInterface["Notifier"] = "Notifier";
ScryptedInterface["StartStop"] = "StartStop";
ScryptedInterface["Pause"] = "Pause";
ScryptedInterface["Dock"] = "Dock";
ScryptedInterface["TemperatureSetting"] = "TemperatureSetting";
ScryptedInterface["Thermometer"] = "Thermometer";
ScryptedInterface["HumiditySensor"] = "HumiditySensor";
ScryptedInterface["Camera"] = "Camera";
ScryptedInterface["Microphone"] = "Microphone";
ScryptedInterface["Display"] = "Display";
ScryptedInterface["VideoCamera"] = "VideoCamera";
ScryptedInterface["VideoRecorder"] = "VideoRecorder";
ScryptedInterface["PanTiltZoom"] = "PanTiltZoom";
ScryptedInterface["EventRecorder"] = "EventRecorder";
ScryptedInterface["VideoClips"] = "VideoClips";
ScryptedInterface["VideoCameraConfiguration"] = "VideoCameraConfiguration";
ScryptedInterface["Intercom"] = "Intercom";
ScryptedInterface["Lock"] = "Lock";
ScryptedInterface["PasswordStore"] = "PasswordStore";
ScryptedInterface["Authenticator"] = "Authenticator";
ScryptedInterface["Scene"] = "Scene";
ScryptedInterface["Entry"] = "Entry";
ScryptedInterface["EntrySensor"] = "EntrySensor";
ScryptedInterface["DeviceProvider"] = "DeviceProvider";
ScryptedInterface["DeviceDiscovery"] = "DeviceDiscovery";
ScryptedInterface["DeviceCreator"] = "DeviceCreator";
ScryptedInterface["Battery"] = "Battery";
ScryptedInterface["Refresh"] = "Refresh";
ScryptedInterface["MediaPlayer"] = "MediaPlayer";
ScryptedInterface["Online"] = "Online";
ScryptedInterface["SoftwareUpdate"] = "SoftwareUpdate";
ScryptedInterface["BufferConverter"] = "BufferConverter";
ScryptedInterface["Settings"] = "Settings";
ScryptedInterface["BinarySensor"] = "BinarySensor";
ScryptedInterface["TamperSensor"] = "TamperSensor";
ScryptedInterface["PowerSensor"] = "PowerSensor";
ScryptedInterface["AudioSensor"] = "AudioSensor";
ScryptedInterface["MotionSensor"] = "MotionSensor";
ScryptedInterface["AmbientLightSensor"] = "AmbientLightSensor";
ScryptedInterface["OccupancySensor"] = "OccupancySensor";
ScryptedInterface["FloodSensor"] = "FloodSensor";
ScryptedInterface["UltravioletSensor"] = "UltravioletSensor";
ScryptedInterface["LuminanceSensor"] = "LuminanceSensor";
ScryptedInterface["PositionSensor"] = "PositionSensor";
ScryptedInterface["SecuritySystem"] = "SecuritySystem";
ScryptedInterface["PM10Sensor"] = "PM10Sensor";
ScryptedInterface["PM25Sensor"] = "PM25Sensor";
ScryptedInterface["VOCSensor"] = "VOCSensor";
ScryptedInterface["NOXSensor"] = "NOXSensor";
ScryptedInterface["CO2Sensor"] = "CO2Sensor";
ScryptedInterface["AirQualitySensor"] = "AirQualitySensor";
ScryptedInterface["Readme"] = "Readme";
ScryptedInterface["OauthClient"] = "OauthClient";
ScryptedInterface["MixinProvider"] = "MixinProvider";
ScryptedInterface["HttpRequestHandler"] = "HttpRequestHandler";
ScryptedInterface["EngineIOHandler"] = "EngineIOHandler";
ScryptedInterface["PushHandler"] = "PushHandler";
ScryptedInterface["Program"] = "Program";
ScryptedInterface["Scriptable"] = "Scriptable";
ScryptedInterface["ObjectDetector"] = "ObjectDetector";
ScryptedInterface["ObjectDetection"] = "ObjectDetection";
ScryptedInterface["HumiditySetting"] = "HumiditySetting";
ScryptedInterface["Fan"] = "Fan";
ScryptedInterface["RTCSignalingChannel"] = "RTCSignalingChannel";
ScryptedInterface["RTCSignalingClient"] = "RTCSignalingClient";
ScryptedInterface["LauncherApplication"] = "LauncherApplication";
})(ScryptedInterface = exports.ScryptedInterface || (exports.ScryptedInterface = {}));
var ScryptedMimeTypes;
(function (ScryptedMimeTypes) {
ScryptedMimeTypes["Url"] = "text/x-uri";
ScryptedMimeTypes["InsecureLocalUrl"] = "text/x-insecure-local-uri";
ScryptedMimeTypes["LocalUrl"] = "text/x-local-uri";
ScryptedMimeTypes["PushEndpoint"] = "text/x-push-endpoint";
ScryptedMimeTypes["SchemePrefix"] = "x-scrypted/x-scrypted-scheme-";
ScryptedMimeTypes["MediaStreamUrl"] = "text/x-media-url";
ScryptedMimeTypes["MediaObject"] = "x-scrypted/x-scrypted-media-object";
ScryptedMimeTypes["RequestMediaStream"] = "x-scrypted/x-scrypted-request-stream";
ScryptedMimeTypes["ScryptedDevice"] = "x-scrypted/x-scrypted-device";
ScryptedMimeTypes["ScryptedDeviceId"] = "x-scrypted/x-scrypted-device-id";
ScryptedMimeTypes["FFmpegInput"] = "x-scrypted/x-ffmpeg-input";
ScryptedMimeTypes["FFmpegTranscodeStream"] = "x-scrypted/x-ffmpeg-transcode-stream";
ScryptedMimeTypes["RTCSignalingChannel"] = "x-scrypted/x-scrypted-rtc-signaling-channel";
ScryptedMimeTypes["RTCSignalingSession"] = "x-scrypted/x-scrypted-rtc-signaling-session";
ScryptedMimeTypes["RTCConnectionManagement"] = "x-scrypted/x-scrypted-rtc-connection-management";
})(ScryptedMimeTypes = exports.ScryptedMimeTypes || (exports.ScryptedMimeTypes = {}));
//# sourceMappingURL=index.js.map

File diff suppressed because it is too large Load Diff

View File

@@ -1,14 +1,608 @@
{
"name": "@scrypted/types",
"version": "0.0.93",
"version": "0.0.97",
"lockfileVersion": 2,
"requires": true,
"packages": {
"": {
"name": "@scrypted/types",
"version": "0.0.93",
"version": "0.0.97",
"license": "ISC",
"devDependencies": {}
"devDependencies": {
"@types/rimraf": "^3.0.2",
"rimraf": "^3.0.2",
"ts-node": "^10.9.1"
}
},
"node_modules/@cspotcode/source-map-support": {
"version": "0.8.1",
"resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz",
"integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==",
"dev": true,
"dependencies": {
"@jridgewell/trace-mapping": "0.3.9"
},
"engines": {
"node": ">=12"
}
},
"node_modules/@jridgewell/resolve-uri": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz",
"integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==",
"dev": true,
"engines": {
"node": ">=6.0.0"
}
},
"node_modules/@jridgewell/sourcemap-codec": {
"version": "1.4.14",
"resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz",
"integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==",
"dev": true
},
"node_modules/@jridgewell/trace-mapping": {
"version": "0.3.9",
"resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz",
"integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==",
"dev": true,
"dependencies": {
"@jridgewell/resolve-uri": "^3.0.3",
"@jridgewell/sourcemap-codec": "^1.4.10"
}
},
"node_modules/@tsconfig/node10": {
"version": "1.0.9",
"resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz",
"integrity": "sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==",
"dev": true
},
"node_modules/@tsconfig/node12": {
"version": "1.0.11",
"resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz",
"integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==",
"dev": true
},
"node_modules/@tsconfig/node14": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz",
"integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==",
"dev": true
},
"node_modules/@tsconfig/node16": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.3.tgz",
"integrity": "sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ==",
"dev": true
},
"node_modules/@types/glob": {
"version": "8.0.0",
"resolved": "https://registry.npmjs.org/@types/glob/-/glob-8.0.0.tgz",
"integrity": "sha512-l6NQsDDyQUVeoTynNpC9uRvCUint/gSUXQA2euwmTuWGvPY5LSDUu6tkCtJB2SvGQlJQzLaKqcGZP4//7EDveA==",
"dev": true,
"dependencies": {
"@types/minimatch": "*",
"@types/node": "*"
}
},
"node_modules/@types/minimatch": {
"version": "5.1.2",
"resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-5.1.2.tgz",
"integrity": "sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==",
"dev": true
},
"node_modules/@types/node": {
"version": "18.7.20",
"resolved": "https://registry.npmjs.org/@types/node/-/node-18.7.20.tgz",
"integrity": "sha512-adzY4vLLr5Uivmx8+zfSJ5fbdgKxX8UMtjtl+17n0B1q1Nz8JEmE151vefMdpD+1gyh+77weN4qEhej/O7budQ==",
"dev": true
},
"node_modules/@types/rimraf": {
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/@types/rimraf/-/rimraf-3.0.2.tgz",
"integrity": "sha512-F3OznnSLAUxFrCEu/L5PY8+ny8DtcFRjx7fZZ9bycvXRi3KPTRS9HOitGZwvPg0juRhXFWIeKX58cnX5YqLohQ==",
"dev": true,
"dependencies": {
"@types/glob": "*",
"@types/node": "*"
}
},
"node_modules/acorn": {
"version": "8.8.0",
"resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.0.tgz",
"integrity": "sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w==",
"dev": true,
"bin": {
"acorn": "bin/acorn"
},
"engines": {
"node": ">=0.4.0"
}
},
"node_modules/acorn-walk": {
"version": "8.2.0",
"resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz",
"integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==",
"dev": true,
"engines": {
"node": ">=0.4.0"
}
},
"node_modules/arg": {
"version": "4.1.3",
"resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz",
"integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==",
"dev": true
},
"node_modules/balanced-match": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
"integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
"dev": true
},
"node_modules/brace-expansion": {
"version": "1.1.11",
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
"integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
"dev": true,
"dependencies": {
"balanced-match": "^1.0.0",
"concat-map": "0.0.1"
}
},
"node_modules/concat-map": {
"version": "0.0.1",
"resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
"integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==",
"dev": true
},
"node_modules/create-require": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz",
"integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==",
"dev": true
},
"node_modules/diff": {
"version": "4.0.2",
"resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz",
"integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==",
"dev": true,
"engines": {
"node": ">=0.3.1"
}
},
"node_modules/fs.realpath": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
"integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==",
"dev": true
},
"node_modules/glob": {
"version": "7.2.3",
"resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
"integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
"dev": true,
"dependencies": {
"fs.realpath": "^1.0.0",
"inflight": "^1.0.4",
"inherits": "2",
"minimatch": "^3.1.1",
"once": "^1.3.0",
"path-is-absolute": "^1.0.0"
},
"engines": {
"node": "*"
},
"funding": {
"url": "https://github.com/sponsors/isaacs"
}
},
"node_modules/inflight": {
"version": "1.0.6",
"resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
"integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==",
"dev": true,
"dependencies": {
"once": "^1.3.0",
"wrappy": "1"
}
},
"node_modules/inherits": {
"version": "2.0.4",
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
"integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
"dev": true
},
"node_modules/make-error": {
"version": "1.3.6",
"resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz",
"integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==",
"dev": true
},
"node_modules/minimatch": {
"version": "3.1.2",
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
"integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
"dev": true,
"dependencies": {
"brace-expansion": "^1.1.7"
},
"engines": {
"node": "*"
}
},
"node_modules/once": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
"integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
"dev": true,
"dependencies": {
"wrappy": "1"
}
},
"node_modules/path-is-absolute": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
"integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==",
"dev": true,
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/rimraf": {
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
"integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
"dev": true,
"dependencies": {
"glob": "^7.1.3"
},
"bin": {
"rimraf": "bin.js"
},
"funding": {
"url": "https://github.com/sponsors/isaacs"
}
},
"node_modules/ts-node": {
"version": "10.9.1",
"resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz",
"integrity": "sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==",
"dev": true,
"dependencies": {
"@cspotcode/source-map-support": "^0.8.0",
"@tsconfig/node10": "^1.0.7",
"@tsconfig/node12": "^1.0.7",
"@tsconfig/node14": "^1.0.0",
"@tsconfig/node16": "^1.0.2",
"acorn": "^8.4.1",
"acorn-walk": "^8.1.1",
"arg": "^4.1.0",
"create-require": "^1.1.0",
"diff": "^4.0.1",
"make-error": "^1.1.1",
"v8-compile-cache-lib": "^3.0.1",
"yn": "3.1.1"
},
"bin": {
"ts-node": "dist/bin.js",
"ts-node-cwd": "dist/bin-cwd.js",
"ts-node-esm": "dist/bin-esm.js",
"ts-node-script": "dist/bin-script.js",
"ts-node-transpile-only": "dist/bin-transpile.js",
"ts-script": "dist/bin-script-deprecated.js"
},
"peerDependencies": {
"@swc/core": ">=1.2.50",
"@swc/wasm": ">=1.2.50",
"@types/node": "*",
"typescript": ">=2.7"
},
"peerDependenciesMeta": {
"@swc/core": {
"optional": true
},
"@swc/wasm": {
"optional": true
}
}
},
"node_modules/typescript": {
"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": {
"tsc": "bin/tsc",
"tsserver": "bin/tsserver"
},
"engines": {
"node": ">=4.2.0"
}
},
"node_modules/v8-compile-cache-lib": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz",
"integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==",
"dev": true
},
"node_modules/wrappy": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
"integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==",
"dev": true
},
"node_modules/yn": {
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz",
"integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==",
"dev": true,
"engines": {
"node": ">=6"
}
}
},
"dependencies": {
"@cspotcode/source-map-support": {
"version": "0.8.1",
"resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz",
"integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==",
"dev": true,
"requires": {
"@jridgewell/trace-mapping": "0.3.9"
}
},
"@jridgewell/resolve-uri": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz",
"integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==",
"dev": true
},
"@jridgewell/sourcemap-codec": {
"version": "1.4.14",
"resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz",
"integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==",
"dev": true
},
"@jridgewell/trace-mapping": {
"version": "0.3.9",
"resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz",
"integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==",
"dev": true,
"requires": {
"@jridgewell/resolve-uri": "^3.0.3",
"@jridgewell/sourcemap-codec": "^1.4.10"
}
},
"@tsconfig/node10": {
"version": "1.0.9",
"resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz",
"integrity": "sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==",
"dev": true
},
"@tsconfig/node12": {
"version": "1.0.11",
"resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz",
"integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==",
"dev": true
},
"@tsconfig/node14": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz",
"integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==",
"dev": true
},
"@tsconfig/node16": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.3.tgz",
"integrity": "sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ==",
"dev": true
},
"@types/glob": {
"version": "8.0.0",
"resolved": "https://registry.npmjs.org/@types/glob/-/glob-8.0.0.tgz",
"integrity": "sha512-l6NQsDDyQUVeoTynNpC9uRvCUint/gSUXQA2euwmTuWGvPY5LSDUu6tkCtJB2SvGQlJQzLaKqcGZP4//7EDveA==",
"dev": true,
"requires": {
"@types/minimatch": "*",
"@types/node": "*"
}
},
"@types/minimatch": {
"version": "5.1.2",
"resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-5.1.2.tgz",
"integrity": "sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==",
"dev": true
},
"@types/node": {
"version": "18.7.20",
"resolved": "https://registry.npmjs.org/@types/node/-/node-18.7.20.tgz",
"integrity": "sha512-adzY4vLLr5Uivmx8+zfSJ5fbdgKxX8UMtjtl+17n0B1q1Nz8JEmE151vefMdpD+1gyh+77weN4qEhej/O7budQ==",
"dev": true
},
"@types/rimraf": {
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/@types/rimraf/-/rimraf-3.0.2.tgz",
"integrity": "sha512-F3OznnSLAUxFrCEu/L5PY8+ny8DtcFRjx7fZZ9bycvXRi3KPTRS9HOitGZwvPg0juRhXFWIeKX58cnX5YqLohQ==",
"dev": true,
"requires": {
"@types/glob": "*",
"@types/node": "*"
}
},
"acorn": {
"version": "8.8.0",
"resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.0.tgz",
"integrity": "sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w==",
"dev": true
},
"acorn-walk": {
"version": "8.2.0",
"resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz",
"integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==",
"dev": true
},
"arg": {
"version": "4.1.3",
"resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz",
"integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==",
"dev": true
},
"balanced-match": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
"integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
"dev": true
},
"brace-expansion": {
"version": "1.1.11",
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
"integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
"dev": true,
"requires": {
"balanced-match": "^1.0.0",
"concat-map": "0.0.1"
}
},
"concat-map": {
"version": "0.0.1",
"resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
"integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==",
"dev": true
},
"create-require": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz",
"integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==",
"dev": true
},
"diff": {
"version": "4.0.2",
"resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz",
"integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==",
"dev": true
},
"fs.realpath": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
"integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==",
"dev": true
},
"glob": {
"version": "7.2.3",
"resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
"integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
"dev": true,
"requires": {
"fs.realpath": "^1.0.0",
"inflight": "^1.0.4",
"inherits": "2",
"minimatch": "^3.1.1",
"once": "^1.3.0",
"path-is-absolute": "^1.0.0"
}
},
"inflight": {
"version": "1.0.6",
"resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
"integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==",
"dev": true,
"requires": {
"once": "^1.3.0",
"wrappy": "1"
}
},
"inherits": {
"version": "2.0.4",
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
"integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
"dev": true
},
"make-error": {
"version": "1.3.6",
"resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz",
"integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==",
"dev": true
},
"minimatch": {
"version": "3.1.2",
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
"integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
"dev": true,
"requires": {
"brace-expansion": "^1.1.7"
}
},
"once": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
"integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
"dev": true,
"requires": {
"wrappy": "1"
}
},
"path-is-absolute": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
"integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==",
"dev": true
},
"rimraf": {
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
"integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
"dev": true,
"requires": {
"glob": "^7.1.3"
}
},
"ts-node": {
"version": "10.9.1",
"resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz",
"integrity": "sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==",
"dev": true,
"requires": {
"@cspotcode/source-map-support": "^0.8.0",
"@tsconfig/node10": "^1.0.7",
"@tsconfig/node12": "^1.0.7",
"@tsconfig/node14": "^1.0.0",
"@tsconfig/node16": "^1.0.2",
"acorn": "^8.4.1",
"acorn-walk": "^8.1.1",
"arg": "^4.1.0",
"create-require": "^1.1.0",
"diff": "^4.0.1",
"make-error": "^1.1.1",
"v8-compile-cache-lib": "^3.0.1",
"yn": "3.1.1"
}
},
"typescript": {
"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
},
"v8-compile-cache-lib": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz",
"integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==",
"dev": true
},
"wrappy": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
"integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==",
"dev": true
},
"yn": {
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz",
"integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==",
"dev": true
}
}
}

View File

@@ -1,15 +1,18 @@
{
"name": "@scrypted/types",
"version": "0.0.93",
"version": "0.0.97",
"description": "",
"main": "index.js",
"main": "dist/index.js",
"author": "",
"license": "ISC",
"scripts": {
"prepublishOnly": "npm run build",
"build": "typedoc && cd ../types && ts-node ../gen/build && tsc"
"build": "rimraf dist gen && typedoc && ts-node ./src/build.ts && tsc && npm link"
},
"dependencies": {},
"devDependencies": {},
"types": "index.d.ts"
"devDependencies": {
"@types/rimraf": "^3.0.2",
"rimraf": "^3.0.2",
"ts-node": "^10.9.1"
},
"types": "dist/index.d.ts"
}

View File

@@ -1,35 +0,0 @@
from __future__ import annotations
from typing import AbstractSet, Any, Callable
from typing_extensions import TypedDict
SettingValue = str
EventListener = Callable[[Any, Any, Any], None]
class Console:
pass
class Storage:
def getItem(self, key: str) -> str:
pass
def setItem(self, key: str, value: str):
pass
def removeItem(self, key: str):
pass
def getKeys(self) -> AbstractSet[str]:
pass
def clear(self):
pass
class MediaObject:
mimeType: str
class RTCSessionDescriptionInit(TypedDict):
pass

File diff suppressed because it is too large Load Diff

View File

@@ -3,8 +3,8 @@ import { ScryptedInterface, ScryptedInterfaceDescriptor } from "./types.input";
import path from 'path';
import fs from "fs";
const schema = JSON.parse(fs.readFileSync(path.join(__dirname, '../schema.json')).toString());
const typesVersion = JSON.parse(fs.readFileSync(path.join(__dirname, '../types/package.json')).toString()).version;
const schema = JSON.parse(fs.readFileSync(path.join(__dirname, '../gen/schema.json')).toString());
const typesVersion = JSON.parse(fs.readFileSync(path.join(__dirname, '../package.json')).toString()).version;
const ScryptedInterfaceDescriptors: { [scryptedInterface: string]: ScryptedInterfaceDescriptor } = {};
const allProperties: { [property: string]: any } = {};
@@ -59,7 +59,7 @@ export const ScryptedInterfaceDescriptors: { [scryptedInterface: string]: Scrypt
${fs.readFileSync(path.join(__dirname, './types.input.ts'))}
`;
fs.writeFileSync(path.join(__dirname, '../types/index.ts'), contents);
fs.writeFileSync(path.join(__dirname, '../gen/index.ts'), contents);
const discoveredTypes = new Set<string>();
discoveredTypes.add('EventDetails');
@@ -252,6 +252,6 @@ ${pythonEnums}
${python}
`
fs.writeFileSync(path.join(__dirname, '../scrypted_python/scrypted_sdk/types.py'), pythonTypes);
fs.writeFileSync(path.join(__dirname, '../types/scrypted_python/scrypted_sdk/types.py'), pythonTypes);
fs.copyFileSync(path.join(__dirname, '../scrypted_python/scrypted_sdk/other.py'), path.join(__dirname, '../types/scrypted_python/scrypted_sdk/other.py'));
fs.writeFileSync(path.join(__dirname, '../../scrypted_python/scrypted_sdk/types.py'), pythonTypes);
fs.writeFileSync(path.join(__dirname, '../../scrypted_python/scrypted_sdk/types.py'), pythonTypes);
fs.copyFileSync(path.join(__dirname, '../../scrypted_python/scrypted_sdk/other.py'), path.join(__dirname, '../../scrypted_python/scrypted_sdk/other.py'));

View File

@@ -1,14 +1,14 @@
{
"compilerOptions": {
"module": "commonjs",
"target": "es2019",
"target": "ESNext",
"noImplicitAny": true,
"esModuleInterop": true,
"sourceMap": true,
"declaration": true,
"outDir": "dist"
},
"exclude": [
"gen",
"types"
]
"include": [
"gen/**/*"
],
}

View File

@@ -1,7 +1,7 @@
{
"compilerOptions": {
"module": "commonjs",
"target": "es2019",
"target": "ESNext",
"noImplicitAny": true,
"esModuleInterop": true,
"sourceMap": true,

View File

@@ -1,8 +1,8 @@
{
"entryPoints": [
"../gen"
"./src/types.input.ts"
],
"json": "../schema.json",
"name": "Scrypted Documentation",
"tsconfig": "../gen/tsconfig.json"
"json": "./gen/schema.json",
"name": "Scrypted Schema",
"tsconfig": "./tsconfig.typedoc.json"
}

View File

@@ -206,6 +206,9 @@ function isSameValue(value1: any, value2: any) {
}
export function setState(pluginDevice: PluginDevice, property: string, value: any): boolean {
// device may have been deleted.
if (!pluginDevice.state)
return;
if (!pluginDevice.state[property])
pluginDevice.state[property] = {};
const state = pluginDevice.state[property];