Skip to content

Commit

Permalink
mqtt: make it fork compatible
Browse files Browse the repository at this point in the history
  • Loading branch information
koush committed Mar 21, 2023
1 parent 506b240 commit 0514e62
Show file tree
Hide file tree
Showing 2 changed files with 26 additions and 16 deletions.
34 changes: 18 additions & 16 deletions plugins/mqtt/src/main.ts
Original file line number Diff line number Diff line change
@@ -1,24 +1,19 @@
// https://developer.scrypted.app/#getting-started
// package.json contains the metadata (name, interfaces) about this device
// under the "scrypted" key.
import { Settings, Setting, DeviceProvider, ScryptedDeviceBase, ScryptedInterface, ScryptedDeviceType, Scriptable, ScriptSource, ScryptedInterfaceDescriptors, MixinProvider, ScryptedDevice, EventListenerRegister, DeviceCreator, DeviceCreatorSettings } from '@scrypted/sdk';
import sdk from '@scrypted/sdk';
import { monacoEvalDefaults } from './monaco';
import { scryptedEval } from './scrypted-eval';
import { MqttClient, MqttClientPublishOptions, MqttSubscriptions } from './api/mqtt-client';
import { createScriptDevice, ScriptDeviceImpl, tsCompile } from '@scrypted/common/src/eval/scrypted-eval';
import sdk, { DeviceCreator, DeviceCreatorSettings, DeviceProvider, EventListenerRegister, MixinProvider, Scriptable, ScriptSource, ScryptedDevice, ScryptedDeviceBase, ScryptedDeviceType, ScryptedInterface, ScryptedInterfaceDescriptors, Setting, Settings } from '@scrypted/sdk';
import aedes, { AedesOptions } from 'aedes';
import fs from 'fs';
import http from 'http';
import { Client, connect } from 'mqtt';
import net from 'net';
import path from 'path';
import ws from 'websocket-stream';
import http from 'http';
import { SettingsMixinDeviceBase, SettingsMixinDeviceOptions } from "../../../common/src/settings-mixin";
import { MqttClient, MqttClientPublishOptions, MqttSubscriptions } from './api/mqtt-client';
import { MqttDeviceBase } from './api/mqtt-device-base';
import { MqttAutoDiscoveryProvider } from './autodiscovery/autodiscovery';
import { SettingsMixinDeviceBase, SettingsMixinDeviceOptions } from "../../../common/src/settings-mixin";
import { connect, Client } from 'mqtt';
import { monacoEvalDefaults } from './monaco';
import { isPublishable } from './publishable-types';
import { createScriptDevice, ScriptDeviceImpl } from '@scrypted/common/src/eval/scrypted-eval';
import fs from 'fs';
import path from 'path';
import { randomBytes } from 'crypto';
import { scryptedEval } from './scrypted-eval';

export function filterExample(filename: string) {
return fs.readFileSync(`examples/${filename}`).toString()
Expand Down Expand Up @@ -533,4 +528,11 @@ class MqttProvider extends ScryptedDeviceBase implements DeviceProvider, Setting
}
}

export default new MqttProvider();
export default MqttProvider;


export async function fork() {
return {
tsCompile,
}
}
8 changes: 8 additions & 0 deletions plugins/mqtt/src/publishable-types.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,13 @@
import { ScryptedDeviceType, ScryptedInterface } from "@scrypted/sdk";

export function isPublishable(type: ScryptedDeviceType, interfaces: string[]): boolean {
switch (type) {
case ScryptedDeviceType.API:
case ScryptedDeviceType.Builtin:
case ScryptedDeviceType.DataSource:
case ScryptedDeviceType.Unknown:
return false;
}
const set = new Set(interfaces);
set.delete(ScryptedInterface.ObjectDetection);
set.delete(ScryptedInterface.DeviceDiscovery);
Expand All @@ -15,6 +22,7 @@ export function isPublishable(type: ScryptedDeviceType, interfaces: string[]): b
set.delete(ScryptedInterface.BufferConverter);
set.delete(ScryptedInterface.ScryptedPlugin);
set.delete(ScryptedInterface.OauthClient);
set.delete(ScryptedInterface.OauthClient);
set.delete(ScryptedInterface.LauncherApplication);
return !!set.size;
}

0 comments on commit 0514e62

Please sign in to comment.