@companion-module/base 0.1.2 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,13 @@
1
1
  # Changelog
2
2
 
3
+ ## [0.2.0](https://github.com/bitfocus/companion-module-base/compare/v0.1.2...v0.2.0) (2022-09-04)
4
+
5
+
6
+ ### Features
7
+
8
+ * convert InstanceStatus into proper enum ([73213ab](https://github.com/bitfocus/companion-module-base/commit/73213ab4976168c5e7241ef0c8ea906464cef297))
9
+ * initial refactored socket helpers ([603b806](https://github.com/bitfocus/companion-module-base/commit/603b80655cf85a5577b28ae06c32e109f23b8755))
10
+
3
11
  ## [0.1.2](https://github.com/bitfocus/companion-module-base/compare/v0.1.1...v0.1.2) (2022-07-21)
4
12
 
5
13
 
@@ -0,0 +1,4 @@
1
+ export { TCPHelper, TCPHelperEvents, TCPHelperOptions } from './tcp';
2
+ export { TelnetHelper, TelnetHelperEvents, TelnetHelperOptions } from './telnet';
3
+ export { UDPHelper, UDPHelperEvents, UDPHelperOptions } from './udp';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/helpers/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,OAAO,CAAA;AACpE,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAA;AAChF,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,OAAO,CAAA"}
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.UDPHelper = exports.TelnetHelper = exports.TCPHelper = void 0;
4
+ var tcp_1 = require("./tcp");
5
+ Object.defineProperty(exports, "TCPHelper", { enumerable: true, get: function () { return tcp_1.TCPHelper; } });
6
+ var telnet_1 = require("./telnet");
7
+ Object.defineProperty(exports, "TelnetHelper", { enumerable: true, get: function () { return telnet_1.TelnetHelper; } });
8
+ var udp_1 = require("./udp");
9
+ Object.defineProperty(exports, "UDPHelper", { enumerable: true, get: function () { return udp_1.UDPHelper; } });
10
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/helpers/index.ts"],"names":[],"mappings":";;;AAAA,6BAAoE;AAA3D,gGAAA,SAAS,OAAA;AAClB,mCAAgF;AAAvE,sGAAA,YAAY,OAAA;AACrB,6BAAoE;AAA3D,gGAAA,SAAS,OAAA"}
@@ -0,0 +1,33 @@
1
+ /// <reference types="node" />
2
+ /// <reference types="node" />
3
+ import net from 'net';
4
+ import { EventEmitter } from 'eventemitter3';
5
+ import { InstanceStatus } from '../module-api/enums';
6
+ declare type TCPStatuses = InstanceStatus.Ok | InstanceStatus.Connecting | InstanceStatus.Disconnected | InstanceStatus.UnknownError;
7
+ export interface TCPHelperEvents {
8
+ error: [err: Error];
9
+ data: [msg: Buffer];
10
+ connect: [];
11
+ end: [];
12
+ drain: [];
13
+ status_change: [status: TCPStatuses, message: string | undefined];
14
+ }
15
+ export interface TCPHelperOptions {
16
+ /** default 2000 */
17
+ reconnect_interval?: number;
18
+ /** default true */
19
+ reconnect?: boolean;
20
+ }
21
+ export declare class TCPHelper extends EventEmitter<TCPHelperEvents> {
22
+ #private;
23
+ readonly _socket: net.Socket;
24
+ get isConnected(): boolean;
25
+ get isConnecting(): boolean;
26
+ get isDestroyed(): boolean;
27
+ constructor(host: string, port: number, options?: TCPHelperOptions);
28
+ connect(): boolean;
29
+ send(message: string | Buffer): Promise<boolean>;
30
+ destroy(): void;
31
+ }
32
+ export {};
33
+ //# sourceMappingURL=tcp.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tcp.d.ts","sourceRoot":"","sources":["../../src/helpers/tcp.ts"],"names":[],"mappings":";;AAiBA,OAAO,GAAG,MAAM,KAAK,CAAA;AACrB,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AAEpD,aAAK,WAAW,GACb,cAAc,CAAC,EAAE,GACjB,cAAc,CAAC,UAAU,GACzB,cAAc,CAAC,YAAY,GAC3B,cAAc,CAAC,YAAY,CAAA;AAE9B,MAAM,WAAW,eAAe;IAE/B,KAAK,EAAE,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA;IAEnB,IAAI,EAAE,CAAC,GAAG,EAAE,MAAM,CAAC,CAAA;IAGnB,OAAO,EAAE,EAAE,CAAA;IAEX,GAAG,EAAE,EAAE,CAAA;IAEP,KAAK,EAAE,EAAE,CAAA;IAGT,aAAa,EAAE,CAAC,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC,CAAA;CACjE;AAED,MAAM,WAAW,gBAAgB;IAChC,mBAAmB;IACnB,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAC3B,mBAAmB;IACnB,SAAS,CAAC,EAAE,OAAO,CAAA;CACnB;AAED,qBAAa,SAAU,SAAQ,YAAY,CAAC,eAAe,CAAC;;IAG3D,QAAQ,CAAC,OAAO,EAAE,GAAG,CAAC,MAAM,CAAA;IAS5B,IAAI,WAAW,IAAI,OAAO,CAEzB;IACD,IAAI,YAAY,IAAI,OAAO,CAE1B;IACD,IAAI,WAAW,IAAI,OAAO,CAEzB;gBAEW,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,gBAAgB;IA4DlE,OAAO,IAAI,OAAO;IAQZ,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IA+BtD,OAAO,IAAI,IAAI;CAiCf"}
@@ -0,0 +1,153 @@
1
+ "use strict";
2
+ /*
3
+ * This file is part of the Companion project
4
+ * Copyright (c) 2018 Bitfocus AS
5
+ * Authors: William Viker <william@bitfocus.io>, Håkon Nessjøen <haakon@bitfocus.io>
6
+ *
7
+ * This program is free software.
8
+ * You should have received a copy of the MIT licence as well as the Bitfocus
9
+ * Individual Contributor License Agreement for companion along with
10
+ * this program.
11
+ *
12
+ * You can be released from the requirements of the license by purchasing
13
+ * a commercial license. Buying such a license is mandatory as soon as you
14
+ * develop commercial activities involving the Companion software without
15
+ * disclosing the source code of your own applications.
16
+ *
17
+ */
18
+ var _TCPHelper_instances, _TCPHelper_host, _TCPHelper_port, _TCPHelper_options, _TCPHelper_connected, _TCPHelper_connecting, _TCPHelper_destroyed, _TCPHelper_lastStatus, _TCPHelper_reconnectTimer, _TCPHelper_queueReconnect, _TCPHelper_new_status;
19
+ Object.defineProperty(exports, "__esModule", { value: true });
20
+ exports.TCPHelper = void 0;
21
+ const tslib_1 = require("tslib");
22
+ const net_1 = tslib_1.__importDefault(require("net"));
23
+ const eventemitter3_1 = require("eventemitter3");
24
+ const enums_1 = require("../module-api/enums");
25
+ class TCPHelper extends eventemitter3_1.EventEmitter {
26
+ constructor(host, port, options) {
27
+ super();
28
+ _TCPHelper_instances.add(this);
29
+ _TCPHelper_host.set(this, void 0);
30
+ _TCPHelper_port.set(this, void 0);
31
+ _TCPHelper_options.set(this, void 0);
32
+ _TCPHelper_connected.set(this, false);
33
+ _TCPHelper_connecting.set(this, false);
34
+ _TCPHelper_destroyed.set(this, false);
35
+ _TCPHelper_lastStatus.set(this, void 0);
36
+ _TCPHelper_reconnectTimer.set(this, void 0);
37
+ tslib_1.__classPrivateFieldSet(this, _TCPHelper_host, host, "f");
38
+ tslib_1.__classPrivateFieldSet(this, _TCPHelper_port, port, "f");
39
+ tslib_1.__classPrivateFieldSet(this, _TCPHelper_options, {
40
+ reconnect_interval: 2000,
41
+ reconnect: true,
42
+ ...options,
43
+ }, "f");
44
+ this._socket = new net_1.default.Socket();
45
+ this._socket.setKeepAlive(true);
46
+ this._socket.setNoDelay(true);
47
+ this._socket.on('error', (err) => {
48
+ tslib_1.__classPrivateFieldSet(this, _TCPHelper_connecting, false, "f");
49
+ tslib_1.__classPrivateFieldSet(this, _TCPHelper_connected, false, "f");
50
+ if (tslib_1.__classPrivateFieldGet(this, _TCPHelper_options, "f").reconnect) {
51
+ tslib_1.__classPrivateFieldGet(this, _TCPHelper_instances, "m", _TCPHelper_queueReconnect).call(this);
52
+ }
53
+ tslib_1.__classPrivateFieldGet(this, _TCPHelper_instances, "m", _TCPHelper_new_status).call(this, enums_1.InstanceStatus.UnknownError, err.message);
54
+ this.emit('error', err);
55
+ });
56
+ this._socket.on('ready', () => {
57
+ tslib_1.__classPrivateFieldSet(this, _TCPHelper_connected, true, "f");
58
+ tslib_1.__classPrivateFieldSet(this, _TCPHelper_connecting, false, "f");
59
+ tslib_1.__classPrivateFieldGet(this, _TCPHelper_instances, "m", _TCPHelper_new_status).call(this, enums_1.InstanceStatus.Ok);
60
+ this.emit('connect');
61
+ });
62
+ this._socket.on('end', () => {
63
+ tslib_1.__classPrivateFieldSet(this, _TCPHelper_connected, false, "f");
64
+ tslib_1.__classPrivateFieldGet(this, _TCPHelper_instances, "m", _TCPHelper_new_status).call(this, enums_1.InstanceStatus.Disconnected);
65
+ if (!tslib_1.__classPrivateFieldGet(this, _TCPHelper_connecting, "f") && tslib_1.__classPrivateFieldGet(this, _TCPHelper_options, "f").reconnect) {
66
+ tslib_1.__classPrivateFieldGet(this, _TCPHelper_instances, "m", _TCPHelper_queueReconnect).call(this);
67
+ }
68
+ this.emit('end');
69
+ });
70
+ this._socket.on('data', (data) => this.emit('data', data));
71
+ this._socket.on('drain', () => this.emit('drain'));
72
+ // Let caller install event handlers first
73
+ setImmediate(() => this.connect());
74
+ setTimeout(() => {
75
+ if (!tslib_1.__classPrivateFieldGet(this, _TCPHelper_destroyed, "f") && !this.listenerCount('error')) {
76
+ // The socket is active and has no listeners. Log an error for the module devs!
77
+ console.error(`Danger: TCP client for ${tslib_1.__classPrivateFieldGet(this, _TCPHelper_host, "f")}:${tslib_1.__classPrivateFieldGet(this, _TCPHelper_port, "f")} is missing an error handler!`);
78
+ }
79
+ }, 5000);
80
+ }
81
+ get isConnected() {
82
+ return tslib_1.__classPrivateFieldGet(this, _TCPHelper_connected, "f");
83
+ }
84
+ get isConnecting() {
85
+ return tslib_1.__classPrivateFieldGet(this, _TCPHelper_connecting, "f");
86
+ }
87
+ get isDestroyed() {
88
+ return tslib_1.__classPrivateFieldGet(this, _TCPHelper_destroyed, "f");
89
+ }
90
+ connect() {
91
+ if (tslib_1.__classPrivateFieldGet(this, _TCPHelper_destroyed, "f"))
92
+ throw new Error('Cannot connect destroyed socket');
93
+ if (tslib_1.__classPrivateFieldGet(this, _TCPHelper_connecting, "f"))
94
+ return false;
95
+ tslib_1.__classPrivateFieldSet(this, _TCPHelper_connecting, true, "f");
96
+ this._socket.connect(tslib_1.__classPrivateFieldGet(this, _TCPHelper_port, "f"), tslib_1.__classPrivateFieldGet(this, _TCPHelper_host, "f"));
97
+ return true;
98
+ }
99
+ async send(message) {
100
+ if (tslib_1.__classPrivateFieldGet(this, _TCPHelper_destroyed, "f") || this._socket.destroyed)
101
+ throw new Error('Cannot write to destroyed socket');
102
+ if (!message || !message.length)
103
+ throw new Error('No message to send');
104
+ if (!tslib_1.__classPrivateFieldGet(this, _TCPHelper_connected, "f")) {
105
+ return false;
106
+ }
107
+ try {
108
+ return new Promise((resolve, reject) => {
109
+ this._socket.write(message, (error) => {
110
+ if (error) {
111
+ reject(error);
112
+ return;
113
+ }
114
+ resolve(true);
115
+ });
116
+ });
117
+ }
118
+ catch (error) {
119
+ tslib_1.__classPrivateFieldSet(this, _TCPHelper_connected, false, "f");
120
+ const error2 = error instanceof Error ? error : new Error(`${error}`);
121
+ // Unhandeled socket error
122
+ tslib_1.__classPrivateFieldGet(this, _TCPHelper_instances, "m", _TCPHelper_new_status).call(this, enums_1.InstanceStatus.UnknownError, error2.message);
123
+ this.emit('error', error2);
124
+ throw error2;
125
+ }
126
+ }
127
+ destroy() {
128
+ tslib_1.__classPrivateFieldSet(this, _TCPHelper_destroyed, true, "f");
129
+ if (tslib_1.__classPrivateFieldGet(this, _TCPHelper_reconnectTimer, "f") !== undefined) {
130
+ clearTimeout(tslib_1.__classPrivateFieldGet(this, _TCPHelper_reconnectTimer, "f"));
131
+ }
132
+ this._socket.removeAllListeners();
133
+ this.removeAllListeners();
134
+ this._socket.destroy();
135
+ }
136
+ }
137
+ exports.TCPHelper = TCPHelper;
138
+ _TCPHelper_host = new WeakMap(), _TCPHelper_port = new WeakMap(), _TCPHelper_options = new WeakMap(), _TCPHelper_connected = new WeakMap(), _TCPHelper_connecting = new WeakMap(), _TCPHelper_destroyed = new WeakMap(), _TCPHelper_lastStatus = new WeakMap(), _TCPHelper_reconnectTimer = new WeakMap(), _TCPHelper_instances = new WeakSet(), _TCPHelper_queueReconnect = function _TCPHelper_queueReconnect() {
139
+ if (tslib_1.__classPrivateFieldGet(this, _TCPHelper_reconnectTimer, "f") !== undefined) {
140
+ clearTimeout(tslib_1.__classPrivateFieldGet(this, _TCPHelper_reconnectTimer, "f"));
141
+ }
142
+ tslib_1.__classPrivateFieldSet(this, _TCPHelper_reconnectTimer, setTimeout(() => {
143
+ tslib_1.__classPrivateFieldSet(this, _TCPHelper_reconnectTimer, undefined, "f");
144
+ tslib_1.__classPrivateFieldGet(this, _TCPHelper_instances, "m", _TCPHelper_new_status).call(this, enums_1.InstanceStatus.Connecting);
145
+ this.connect();
146
+ }, tslib_1.__classPrivateFieldGet(this, _TCPHelper_options, "f").reconnect_interval), "f");
147
+ }, _TCPHelper_new_status = function _TCPHelper_new_status(status, message) {
148
+ if (tslib_1.__classPrivateFieldGet(this, _TCPHelper_lastStatus, "f") != status) {
149
+ tslib_1.__classPrivateFieldSet(this, _TCPHelper_lastStatus, status, "f");
150
+ this.emit('status_change', status, message);
151
+ }
152
+ };
153
+ //# sourceMappingURL=tcp.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tcp.js","sourceRoot":"","sources":["../../src/helpers/tcp.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ /// <reference types="node" />
2
+ import EventEmitter from 'eventemitter3';
3
+ import { TCPHelperEvents, TCPHelperOptions } from './tcp';
4
+ export interface TelnetHelperEvents extends TCPHelperEvents {
5
+ sb: [Buffer];
6
+ iac: [string, number];
7
+ }
8
+ export declare type TelnetHelperOptions = TCPHelperOptions;
9
+ export declare class TelnetHelper extends EventEmitter<TelnetHelperEvents> {
10
+ #private;
11
+ get isConnected(): boolean;
12
+ get isConnecting(): boolean;
13
+ get isDestroyed(): boolean;
14
+ constructor(host: string, port: number, options?: TelnetHelperOptions);
15
+ connect(): boolean;
16
+ send(message: string | Buffer): Promise<boolean>;
17
+ destroy(): void;
18
+ }
19
+ //# sourceMappingURL=telnet.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"telnet.d.ts","sourceRoot":"","sources":["../../src/helpers/telnet.ts"],"names":[],"mappings":";AAiBA,OAAO,YAAY,MAAM,eAAe,CAAA;AAExC,OAAO,EAAa,eAAe,EAAE,gBAAgB,EAAE,MAAM,OAAO,CAAA;AAYpE,MAAM,WAAW,kBAAmB,SAAQ,eAAe;IAC1D,EAAE,EAAE,CAAC,MAAM,CAAC,CAAA;IACZ,GAAG,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CACrB;AACD,oBAAY,mBAAmB,GAAG,gBAAgB,CAAA;AAElD,qBAAa,YAAa,SAAQ,YAAY,CAAC,kBAAkB,CAAC;;IAIjE,IAAI,WAAW,IAAI,OAAO,CAEzB;IACD,IAAI,YAAY,IAAI,OAAO,CAE1B;IACD,IAAI,WAAW,IAAI,OAAO,CAEzB;gBAEW,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,mBAAmB;IA2BrE,OAAO,IAAI,OAAO;IAGlB,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAIhD,OAAO,IAAI,IAAI;CAMf"}
@@ -0,0 +1,165 @@
1
+ "use strict";
2
+ /*
3
+ * This file is part of the Companion project
4
+ * Copyright (c) 2018 Bitfocus AS
5
+ * Authors: William Viker <william@bitfocus.io>, Håkon Nessjøen <haakon@bitfocus.io>
6
+ *
7
+ * This program is free software.
8
+ * You should have received a copy of the MIT licence as well as the Bitfocus
9
+ * Individual Contributor License Agreement for companion along with
10
+ * this program.
11
+ *
12
+ * You can be released from the requirements of the license by purchasing
13
+ * a commercial license. Buying such a license is mandatory as soon as you
14
+ * develop commercial activities involving the Companion software without
15
+ * disclosing the source code of your own applications.
16
+ *
17
+ */
18
+ var _TelnetHelper_tcp, _TelnetHelper_stream, _TelnetStream_instances, _TelnetStream_buffer, _TelnetStream_subbuffer, _TelnetStream_state, _TelnetStream_handleByte, _TelnetStream_getData;
19
+ Object.defineProperty(exports, "__esModule", { value: true });
20
+ exports.TelnetHelper = void 0;
21
+ const tslib_1 = require("tslib");
22
+ const eventemitter3_1 = tslib_1.__importDefault(require("eventemitter3"));
23
+ const stream_1 = require("stream");
24
+ const tcp_1 = require("./tcp");
25
+ const NULL = 0;
26
+ const DATA = 0;
27
+ const SE = 240;
28
+ const SB = 250;
29
+ const WILL = 251;
30
+ const WONT = 252;
31
+ const DO = 253;
32
+ const DONT = 254;
33
+ const IAC = 255;
34
+ class TelnetHelper extends eventemitter3_1.default {
35
+ constructor(host, port, options) {
36
+ super();
37
+ _TelnetHelper_tcp.set(this, void 0);
38
+ _TelnetHelper_stream.set(this, void 0);
39
+ tslib_1.__classPrivateFieldSet(this, _TelnetHelper_tcp, new tcp_1.TCPHelper(host, port, options), "f");
40
+ tslib_1.__classPrivateFieldSet(this, _TelnetHelper_stream, new TelnetStream(), "f");
41
+ tslib_1.__classPrivateFieldGet(this, _TelnetHelper_tcp, "f")._socket.pipe(tslib_1.__classPrivateFieldGet(this, _TelnetHelper_stream, "f"));
42
+ tslib_1.__classPrivateFieldGet(this, _TelnetHelper_tcp, "f").on('connect', () => this.emit('connect'));
43
+ tslib_1.__classPrivateFieldGet(this, _TelnetHelper_tcp, "f").on('end', () => this.emit('end'));
44
+ tslib_1.__classPrivateFieldGet(this, _TelnetHelper_tcp, "f").on('error', (error) => this.emit('error', error));
45
+ tslib_1.__classPrivateFieldGet(this, _TelnetHelper_tcp, "f").on('status_change', (status, message) => this.emit('status_change', status, message));
46
+ // Ignore drain and data, they go via the stream
47
+ tslib_1.__classPrivateFieldGet(this, _TelnetHelper_stream, "f").on('iac', (a, b) => this.emit('iac', a, b));
48
+ tslib_1.__classPrivateFieldGet(this, _TelnetHelper_stream, "f").on('sb', (buffer) => this.emit('sb', buffer));
49
+ tslib_1.__classPrivateFieldGet(this, _TelnetHelper_stream, "f").on('data', (data) => this.emit('data', data));
50
+ tslib_1.__classPrivateFieldGet(this, _TelnetHelper_stream, "f").on('drain', () => this.emit('drain'));
51
+ setTimeout(() => {
52
+ if (!this.isDestroyed && !this.listenerCount('error')) {
53
+ // The socket is active and has no listeners. Log an error for the module devs!
54
+ console.error(`Danger: Telnet client for ${host}:${port} is missing an error handler!`);
55
+ }
56
+ }, 5000);
57
+ }
58
+ get isConnected() {
59
+ return tslib_1.__classPrivateFieldGet(this, _TelnetHelper_tcp, "f").isConnected;
60
+ }
61
+ get isConnecting() {
62
+ return tslib_1.__classPrivateFieldGet(this, _TelnetHelper_tcp, "f").isConnecting;
63
+ }
64
+ get isDestroyed() {
65
+ return tslib_1.__classPrivateFieldGet(this, _TelnetHelper_tcp, "f").isDestroyed;
66
+ }
67
+ connect() {
68
+ return tslib_1.__classPrivateFieldGet(this, _TelnetHelper_tcp, "f").connect();
69
+ }
70
+ send(message) {
71
+ return tslib_1.__classPrivateFieldGet(this, _TelnetHelper_tcp, "f").send(message);
72
+ }
73
+ destroy() {
74
+ tslib_1.__classPrivateFieldGet(this, _TelnetHelper_tcp, "f").destroy();
75
+ tslib_1.__classPrivateFieldGet(this, _TelnetHelper_stream, "f").removeAllListeners();
76
+ tslib_1.__classPrivateFieldGet(this, _TelnetHelper_stream, "f").destroy();
77
+ }
78
+ }
79
+ exports.TelnetHelper = TelnetHelper;
80
+ _TelnetHelper_tcp = new WeakMap(), _TelnetHelper_stream = new WeakMap();
81
+ /*
82
+ * TelnetStream
83
+ */
84
+ class TelnetStream extends stream_1.Transform {
85
+ constructor(options) {
86
+ super(options);
87
+ _TelnetStream_instances.add(this);
88
+ _TelnetStream_buffer.set(this, void 0);
89
+ _TelnetStream_subbuffer.set(this, void 0);
90
+ _TelnetStream_state.set(this, void 0);
91
+ tslib_1.__classPrivateFieldSet(this, _TelnetStream_buffer, Buffer.alloc(0), "f");
92
+ tslib_1.__classPrivateFieldSet(this, _TelnetStream_subbuffer, Buffer.alloc(0), "f");
93
+ tslib_1.__classPrivateFieldSet(this, _TelnetStream_state, DATA, "f");
94
+ }
95
+ _transform(obj, _encoding, callback) {
96
+ for (let i = 0; i < obj.length; ++i) {
97
+ tslib_1.__classPrivateFieldGet(this, _TelnetStream_instances, "m", _TelnetStream_handleByte).call(this, obj[i]);
98
+ }
99
+ const data = tslib_1.__classPrivateFieldGet(this, _TelnetStream_instances, "m", _TelnetStream_getData).call(this);
100
+ if (data.length) {
101
+ this.push(data);
102
+ }
103
+ callback();
104
+ }
105
+ }
106
+ _TelnetStream_buffer = new WeakMap(), _TelnetStream_subbuffer = new WeakMap(), _TelnetStream_state = new WeakMap(), _TelnetStream_instances = new WeakSet(), _TelnetStream_handleByte = function _TelnetStream_handleByte(byte) {
107
+ if (tslib_1.__classPrivateFieldGet(this, _TelnetStream_state, "f") === DATA) {
108
+ if (byte === IAC) {
109
+ tslib_1.__classPrivateFieldSet(this, _TelnetStream_state, IAC, "f");
110
+ return;
111
+ }
112
+ tslib_1.__classPrivateFieldSet(this, _TelnetStream_buffer, Buffer.concat([tslib_1.__classPrivateFieldGet(this, _TelnetStream_buffer, "f"), Buffer.from([byte])]), "f");
113
+ }
114
+ else if (tslib_1.__classPrivateFieldGet(this, _TelnetStream_state, "f") === IAC) {
115
+ switch (byte) {
116
+ case SB:
117
+ case WILL:
118
+ case WONT:
119
+ case DO:
120
+ case DONT:
121
+ tslib_1.__classPrivateFieldSet(this, _TelnetStream_state, byte, "f");
122
+ break;
123
+ default:
124
+ tslib_1.__classPrivateFieldSet(this, _TelnetStream_state, DATA, "f");
125
+ break;
126
+ }
127
+ }
128
+ else if (tslib_1.__classPrivateFieldGet(this, _TelnetStream_state, "f") >= WILL && tslib_1.__classPrivateFieldGet(this, _TelnetStream_state, "f") <= DONT) {
129
+ let iac = undefined;
130
+ switch (tslib_1.__classPrivateFieldGet(this, _TelnetStream_state, "f")) {
131
+ case WILL:
132
+ iac = 'WILL';
133
+ break;
134
+ case WONT:
135
+ iac = 'WONT';
136
+ break;
137
+ case DO:
138
+ iac = 'DO';
139
+ break;
140
+ case DONT:
141
+ iac = 'DONT';
142
+ break;
143
+ default:
144
+ // never hit
145
+ return;
146
+ }
147
+ this.emit('iac', iac, byte);
148
+ tslib_1.__classPrivateFieldSet(this, _TelnetStream_state, DATA, "f");
149
+ return;
150
+ }
151
+ else if (tslib_1.__classPrivateFieldGet(this, _TelnetStream_state, "f") === SB) {
152
+ if (byte === SE) {
153
+ this.emit('sb', tslib_1.__classPrivateFieldGet(this, _TelnetStream_subbuffer, "f"));
154
+ tslib_1.__classPrivateFieldSet(this, _TelnetStream_state, DATA, "f");
155
+ tslib_1.__classPrivateFieldSet(this, _TelnetStream_subbuffer, Buffer.alloc(0), "f");
156
+ return;
157
+ }
158
+ tslib_1.__classPrivateFieldSet(this, _TelnetStream_subbuffer, Buffer.concat([tslib_1.__classPrivateFieldGet(this, _TelnetStream_subbuffer, "f"), Buffer.from([byte])]), "f");
159
+ }
160
+ }, _TelnetStream_getData = function _TelnetStream_getData() {
161
+ const buff = tslib_1.__classPrivateFieldGet(this, _TelnetStream_buffer, "f");
162
+ tslib_1.__classPrivateFieldSet(this, _TelnetStream_buffer, Buffer.alloc(0), "f");
163
+ return buff;
164
+ };
165
+ //# sourceMappingURL=telnet.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"telnet.js","sourceRoot":"","sources":["../../src/helpers/telnet.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,33 @@
1
+ /// <reference types="node" />
2
+ import { EventEmitter } from 'eventemitter3';
3
+ import { InstanceStatus } from '../module-api/enums';
4
+ declare type UDPStatuses = InstanceStatus.Ok | InstanceStatus.UnknownError;
5
+ export interface UDPHelperEvents {
6
+ error: [err: Error];
7
+ listening: [];
8
+ data: [msg: Buffer];
9
+ status_change: [status: UDPStatuses, message: string | undefined];
10
+ }
11
+ export interface UDPHelperOptions {
12
+ /** default: 0 */
13
+ bind_port?: number;
14
+ /** default: 0.0.0.0 */
15
+ bind_ip?: string;
16
+ /** default false */
17
+ broadcast?: boolean;
18
+ /** default 64 */
19
+ ttl?: number;
20
+ /** default 1 */
21
+ multicast_ttl?: number;
22
+ /** default undefined */
23
+ multicast_interface?: string;
24
+ }
25
+ export declare class UDPHelper extends EventEmitter<UDPHelperEvents> {
26
+ #private;
27
+ get isDestroyed(): boolean;
28
+ constructor(host: string, port: number, options?: UDPHelperOptions);
29
+ send(message: string | Buffer): Promise<void>;
30
+ destroy(): void;
31
+ }
32
+ export {};
33
+ //# sourceMappingURL=udp.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"udp.d.ts","sourceRoot":"","sources":["../../src/helpers/udp.ts"],"names":[],"mappings":";AAkBA,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AAEpD,aAAK,WAAW,GAAG,cAAc,CAAC,EAAE,GAAG,cAAc,CAAC,YAAY,CAAA;AAElE,MAAM,WAAW,eAAe;IAE/B,KAAK,EAAE,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA;IAEnB,SAAS,EAAE,EAAE,CAAA;IAEb,IAAI,EAAE,CAAC,GAAG,EAAE,MAAM,CAAC,CAAA;IAGnB,aAAa,EAAE,CAAC,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC,CAAA;CACjE;AAED,MAAM,WAAW,gBAAgB;IAChC,iBAAiB;IACjB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,uBAAuB;IACvB,OAAO,CAAC,EAAE,MAAM,CAAA;IAEhB,oBAAoB;IACpB,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,iBAAiB;IACjB,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,gBAAgB;IAChB,aAAa,CAAC,EAAE,MAAM,CAAA;IAEtB,wBAAwB;IACxB,mBAAmB,CAAC,EAAE,MAAM,CAAA;CAC5B;AAED,qBAAa,SAAU,SAAQ,YAAY,CAAC,eAAe,CAAC;;IAS3D,IAAI,WAAW,IAAI,OAAO,CAEzB;gBAEW,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,gBAAgB;IAgElE,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAsB7C,OAAO,IAAI,IAAI;CAef"}
@@ -0,0 +1,122 @@
1
+ "use strict";
2
+ /*
3
+ * This file is part of the Companion project
4
+ * Copyright (c) 2018 Bitfocus AS
5
+ * Authors: William Viker <william@bitfocus.io>, Håkon Nessjøen <haakon@bitfocus.io>
6
+ *
7
+ * This program is free software.
8
+ * You should have received a copy of the MIT licence as well as the Bitfocus
9
+ * Individual Contributor License Agreement for companion along with
10
+ * this program.
11
+ *
12
+ * You can be released from the requirements of the license by purchasing
13
+ * a commercial license. Buying such a license is mandatory as soon as you
14
+ * develop commercial activities involving the Companion software without
15
+ * disclosing the source code of your own applications.
16
+ *
17
+ */
18
+ var _UDPHelper_instances, _UDPHelper_host, _UDPHelper_port, _UDPHelper_socket, _UDPHelper_options, _UDPHelper_destroyed, _UDPHelper_lastStatus, _UDPHelper_new_status;
19
+ Object.defineProperty(exports, "__esModule", { value: true });
20
+ exports.UDPHelper = void 0;
21
+ const tslib_1 = require("tslib");
22
+ const dgram_1 = tslib_1.__importDefault(require("dgram"));
23
+ const eventemitter3_1 = require("eventemitter3");
24
+ const enums_1 = require("../module-api/enums");
25
+ class UDPHelper extends eventemitter3_1.EventEmitter {
26
+ constructor(host, port, options) {
27
+ super();
28
+ _UDPHelper_instances.add(this);
29
+ _UDPHelper_host.set(this, void 0);
30
+ _UDPHelper_port.set(this, void 0);
31
+ _UDPHelper_socket.set(this, void 0);
32
+ _UDPHelper_options.set(this, void 0);
33
+ _UDPHelper_destroyed.set(this, false);
34
+ _UDPHelper_lastStatus.set(this, void 0);
35
+ tslib_1.__classPrivateFieldSet(this, _UDPHelper_host, host, "f");
36
+ tslib_1.__classPrivateFieldSet(this, _UDPHelper_port, port, "f");
37
+ tslib_1.__classPrivateFieldSet(this, _UDPHelper_options, { ...options }, "f");
38
+ // this.bound = false
39
+ // this.pending_memberships = []
40
+ tslib_1.__classPrivateFieldSet(this, _UDPHelper_socket, dgram_1.default.createSocket('udp4'), "f");
41
+ if (tslib_1.__classPrivateFieldGet(this, _UDPHelper_options, "f").bind_port || tslib_1.__classPrivateFieldGet(this, _UDPHelper_options, "f").bind_ip) {
42
+ try {
43
+ tslib_1.__classPrivateFieldGet(this, _UDPHelper_socket, "f").bind(tslib_1.__classPrivateFieldGet(this, _UDPHelper_options, "f").bind_port || 0, tslib_1.__classPrivateFieldGet(this, _UDPHelper_options, "f").bind_ip);
44
+ }
45
+ catch (e) {
46
+ throw new Error(`Unable to bind to ip/port: ${tslib_1.__classPrivateFieldGet(this, _UDPHelper_options, "f").bind_ip}:${tslib_1.__classPrivateFieldGet(this, _UDPHelper_options, "f").bind_port}`);
47
+ }
48
+ }
49
+ if (tslib_1.__classPrivateFieldGet(this, _UDPHelper_options, "f").broadcast) {
50
+ tslib_1.__classPrivateFieldGet(this, _UDPHelper_socket, "f").setBroadcast(true);
51
+ }
52
+ if (tslib_1.__classPrivateFieldGet(this, _UDPHelper_options, "f").ttl !== undefined) {
53
+ tslib_1.__classPrivateFieldGet(this, _UDPHelper_socket, "f").setTTL(tslib_1.__classPrivateFieldGet(this, _UDPHelper_options, "f").ttl);
54
+ }
55
+ if (tslib_1.__classPrivateFieldGet(this, _UDPHelper_options, "f").multicast_ttl !== undefined) {
56
+ tslib_1.__classPrivateFieldGet(this, _UDPHelper_socket, "f").setMulticastTTL(tslib_1.__classPrivateFieldGet(this, _UDPHelper_options, "f").multicast_ttl);
57
+ }
58
+ tslib_1.__classPrivateFieldGet(this, _UDPHelper_socket, "f").on('error', (error) => {
59
+ tslib_1.__classPrivateFieldGet(this, _UDPHelper_instances, "m", _UDPHelper_new_status).call(this, enums_1.InstanceStatus.UnknownError, error.message);
60
+ this.emit('error', error);
61
+ });
62
+ tslib_1.__classPrivateFieldGet(this, _UDPHelper_socket, "f").on('listening', () => {
63
+ // this.bound = true
64
+ // if (this.pending_memberships.length) {
65
+ // while (this.pending_memberships.length > 0) {
66
+ // this.socket.addMembership(member.shift())
67
+ // }
68
+ // }
69
+ if (tslib_1.__classPrivateFieldGet(this, _UDPHelper_options, "f").multicast_interface) {
70
+ tslib_1.__classPrivateFieldGet(this, _UDPHelper_socket, "f").setMulticastInterface(tslib_1.__classPrivateFieldGet(this, _UDPHelper_options, "f").multicast_interface);
71
+ }
72
+ tslib_1.__classPrivateFieldGet(this, _UDPHelper_instances, "m", _UDPHelper_new_status).call(this, enums_1.InstanceStatus.Ok);
73
+ this.emit('listening');
74
+ });
75
+ tslib_1.__classPrivateFieldGet(this, _UDPHelper_socket, "f").on('message', (data) => this.emit('data', data));
76
+ setTimeout(() => {
77
+ if (!tslib_1.__classPrivateFieldGet(this, _UDPHelper_destroyed, "f") && !this.listenerCount('error')) {
78
+ // The socket is active and has no listeners. Log an error for the module devs!
79
+ console.error(`Danger: UDP socket for ${tslib_1.__classPrivateFieldGet(this, _UDPHelper_host, "f")}:${tslib_1.__classPrivateFieldGet(this, _UDPHelper_port, "f")} is missing an error handler!`);
80
+ }
81
+ }, 5000);
82
+ }
83
+ get isDestroyed() {
84
+ return tslib_1.__classPrivateFieldGet(this, _UDPHelper_destroyed, "f");
85
+ }
86
+ send(message) {
87
+ if (tslib_1.__classPrivateFieldGet(this, _UDPHelper_destroyed, "f"))
88
+ throw new Error('Cannot write to destroyed socket');
89
+ if (!message || !message.length)
90
+ throw new Error('No message to send');
91
+ return new Promise((resolve, reject) => {
92
+ tslib_1.__classPrivateFieldGet(this, _UDPHelper_socket, "f").send(message, tslib_1.__classPrivateFieldGet(this, _UDPHelper_port, "f"), tslib_1.__classPrivateFieldGet(this, _UDPHelper_host, "f"), (error) => {
93
+ if (error) {
94
+ reject(error);
95
+ return;
96
+ }
97
+ resolve();
98
+ });
99
+ });
100
+ }
101
+ // addMembership(member) {
102
+ // if (!this.bound) {
103
+ // this.pending_memberships.push(member)
104
+ // } else {
105
+ // this.socket.addMembership(member)
106
+ // }
107
+ // }
108
+ destroy() {
109
+ tslib_1.__classPrivateFieldSet(this, _UDPHelper_destroyed, true, "f");
110
+ tslib_1.__classPrivateFieldGet(this, _UDPHelper_socket, "f").removeAllListeners();
111
+ tslib_1.__classPrivateFieldGet(this, _UDPHelper_socket, "f").close();
112
+ this.removeAllListeners();
113
+ }
114
+ }
115
+ exports.UDPHelper = UDPHelper;
116
+ _UDPHelper_host = new WeakMap(), _UDPHelper_port = new WeakMap(), _UDPHelper_socket = new WeakMap(), _UDPHelper_options = new WeakMap(), _UDPHelper_destroyed = new WeakMap(), _UDPHelper_lastStatus = new WeakMap(), _UDPHelper_instances = new WeakSet(), _UDPHelper_new_status = function _UDPHelper_new_status(status, message) {
117
+ if (tslib_1.__classPrivateFieldGet(this, _UDPHelper_lastStatus, "f") != status) {
118
+ tslib_1.__classPrivateFieldSet(this, _UDPHelper_lastStatus, status, "f");
119
+ this.emit('status_change', status, message);
120
+ }
121
+ };
122
+ //# sourceMappingURL=udp.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"udp.js","sourceRoot":"","sources":["../../src/helpers/udp.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -2,5 +2,6 @@ export * from './manifest.js';
2
2
  export * from './module-api/index.js';
3
3
  export * from './common/osc.js';
4
4
  export { literal, combineRgb, splitRgb, RgbComponents, assertNever } from './util.js';
5
+ export * from './helpers/index.js';
5
6
  export { runEntrypoint } from './entrypoint.js';
6
7
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAA;AAC7B,cAAc,uBAAuB,CAAA;AACrC,cAAc,iBAAiB,CAAA;AAC/B,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,WAAW,CAAA;AAErF,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAA;AAC7B,cAAc,uBAAuB,CAAA;AACrC,cAAc,iBAAiB,CAAA;AAC/B,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,WAAW,CAAA;AACrF,cAAc,oBAAoB,CAAA;AAElC,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA"}
package/dist/index.js CHANGED
@@ -10,6 +10,7 @@ Object.defineProperty(exports, "literal", { enumerable: true, get: function () {
10
10
  Object.defineProperty(exports, "combineRgb", { enumerable: true, get: function () { return util_js_1.combineRgb; } });
11
11
  Object.defineProperty(exports, "splitRgb", { enumerable: true, get: function () { return util_js_1.splitRgb; } });
12
12
  Object.defineProperty(exports, "assertNever", { enumerable: true, get: function () { return util_js_1.assertNever; } });
13
+ tslib_1.__exportStar(require("./helpers/index.js"), exports);
13
14
  var entrypoint_js_1 = require("./entrypoint.js");
14
15
  Object.defineProperty(exports, "runEntrypoint", { enumerable: true, get: function () { return entrypoint_js_1.runEntrypoint; } });
15
16
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;AAAA,wDAA6B;AAC7B,gEAAqC;AACrC,0DAA+B;AAC/B,qCAAqF;AAA5E,kGAAA,OAAO,OAAA;AAAE,qGAAA,UAAU,OAAA;AAAE,mGAAA,QAAQ,OAAA;AAAiB,sGAAA,WAAW,OAAA;AAElE,iDAA+C;AAAtC,8GAAA,aAAa,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;AAAA,wDAA6B;AAC7B,gEAAqC;AACrC,0DAA+B;AAC/B,qCAAqF;AAA5E,kGAAA,OAAO,OAAA;AAAE,qGAAA,UAAU,OAAA;AAAE,mGAAA,QAAQ,OAAA;AAAiB,sGAAA,WAAW,OAAA;AAClE,6DAAkC;AAElC,iDAA+C;AAAtC,8GAAA,aAAa,OAAA"}
@@ -2,7 +2,15 @@
2
2
  * All the possible status levels that an instance can use.
3
3
  * Note: When adding more, companion needs to be updated to know how they should be displayed
4
4
  */
5
- export declare type InstanceStatus = 'ok' | 'connecting' | 'disconnected' | 'connection_failure' | 'bad_config' | 'unknown_error' | 'unknown_warning';
5
+ export declare enum InstanceStatus {
6
+ Ok = "ok",
7
+ Connecting = "connecting",
8
+ Disconnected = "disconnected",
9
+ ConnectionFailure = "connection_failure",
10
+ BadConfig = "bad_config",
11
+ UnknownError = "unknown_error",
12
+ UnknwownWarning = "unknown_warning"
13
+ }
6
14
  export declare type LogLevel = 'info' | 'warn' | 'error' | 'debug';
7
15
  export declare namespace Regex {
8
16
  const IP = "/^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/";
@@ -1 +1 @@
1
- {"version":3,"file":"enums.d.ts","sourceRoot":"","sources":["../../src/module-api/enums.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,oBAAY,cAAc,GACvB,IAAI,GACJ,YAAY,GACZ,cAAc,GACd,oBAAoB,GACpB,YAAY,GACZ,eAAe,GACf,iBAAiB,CAAA;AAEpB,oBAAY,QAAQ,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,OAAO,CAAA;AAE1D,yBAAiB,KAAK,CAAC;IAEf,MAAM,EAAE,mGAAmG,CAAA;IAC3G,MAAM,QAAQ,iHAC0F,CAAA;IACxG,MAAM,OAAO,0BAA0B,CAAA;IACvC,MAAM,IAAI,4LACyK,CAAA;IACnL,MAAM,OAAO,+BAA+B,CAAA;IAC5C,MAAM,KAAK,2BAA2B,CAAA;IACtC,MAAM,YAAY,gCAAgC,CAAA;IAClD,MAAM,YAAY,6BAA6B,CAAA;IAC/C,MAAM,MAAM,aAAa,CAAA;IACzB,MAAM,aAAa,kBAAkB,CAAA;IACrC,MAAM,SAAS,WAAW,CAAA;IAC1B,MAAM,QAAQ,uGACgF,CAAA;CACrG"}
1
+ {"version":3,"file":"enums.d.ts","sourceRoot":"","sources":["../../src/module-api/enums.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,oBAAY,cAAc;IACzB,EAAE,OAAO;IACT,UAAU,eAAe;IACzB,YAAY,iBAAiB;IAC7B,iBAAiB,uBAAuB;IACxC,SAAS,eAAe;IACxB,YAAY,kBAAkB;IAC9B,eAAe,oBAAoB;CACnC;AAED,oBAAY,QAAQ,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,OAAO,CAAA;AAE1D,yBAAiB,KAAK,CAAC;IAEf,MAAM,EAAE,mGAAmG,CAAA;IAC3G,MAAM,QAAQ,iHAC0F,CAAA;IACxG,MAAM,OAAO,0BAA0B,CAAA;IACvC,MAAM,IAAI,4LACyK,CAAA;IACnL,MAAM,OAAO,+BAA+B,CAAA;IAC5C,MAAM,KAAK,2BAA2B,CAAA;IACtC,MAAM,YAAY,gCAAgC,CAAA;IAClD,MAAM,YAAY,6BAA6B,CAAA;IAC/C,MAAM,MAAM,aAAa,CAAA;IACzB,MAAM,aAAa,kBAAkB,CAAA;IACrC,MAAM,SAAS,WAAW,CAAA;IAC1B,MAAM,QAAQ,uGACgF,CAAA;CACrG"}
@@ -1,6 +1,20 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Regex = void 0;
3
+ exports.Regex = exports.InstanceStatus = void 0;
4
+ /**
5
+ * All the possible status levels that an instance can use.
6
+ * Note: When adding more, companion needs to be updated to know how they should be displayed
7
+ */
8
+ var InstanceStatus;
9
+ (function (InstanceStatus) {
10
+ InstanceStatus["Ok"] = "ok";
11
+ InstanceStatus["Connecting"] = "connecting";
12
+ InstanceStatus["Disconnected"] = "disconnected";
13
+ InstanceStatus["ConnectionFailure"] = "connection_failure";
14
+ InstanceStatus["BadConfig"] = "bad_config";
15
+ InstanceStatus["UnknownError"] = "unknown_error";
16
+ InstanceStatus["UnknwownWarning"] = "unknown_warning";
17
+ })(InstanceStatus = exports.InstanceStatus || (exports.InstanceStatus = {}));
4
18
  var Regex;
5
19
  (function (Regex) {
6
20
  // TODO - are all of these needed?
@@ -1 +1 @@
1
- {"version":3,"file":"enums.js","sourceRoot":"","sources":["../../src/module-api/enums.ts"],"names":[],"mappings":";;;AAeA,IAAiB,KAAK,CAiBrB;AAjBD,WAAiB,KAAK;IACrB,kCAAkC;IACrB,QAAE,GAAG,gGAAgG,CAAA;IACrG,cAAQ,GACpB,8GAA8G,CAAA;IAClG,aAAO,GAAG,uBAAuB,CAAA;IACjC,UAAI,GAChB,yLAAyL,CAAA;IAC7K,aAAO,GAAG,4BAA4B,CAAA;IACtC,WAAK,GAAG,wBAAwB,CAAA;IAChC,kBAAY,GAAG,6BAA6B,CAAA;IAC5C,kBAAY,GAAG,0BAA0B,CAAA;IACzC,YAAM,GAAG,UAAU,CAAA;IACnB,mBAAa,GAAG,eAAe,CAAA;IAC/B,eAAS,GAAG,QAAQ,CAAA;IACpB,cAAQ,GACpB,oGAAoG,CAAA;AACtG,CAAC,EAjBgB,KAAK,GAAL,aAAK,KAAL,aAAK,QAiBrB"}
1
+ {"version":3,"file":"enums.js","sourceRoot":"","sources":["../../src/module-api/enums.ts"],"names":[],"mappings":";;;AAAA;;;GAGG;AACH,IAAY,cAQX;AARD,WAAY,cAAc;IACzB,2BAAS,CAAA;IACT,2CAAyB,CAAA;IACzB,+CAA6B,CAAA;IAC7B,0DAAwC,CAAA;IACxC,0CAAwB,CAAA;IACxB,gDAA8B,CAAA;IAC9B,qDAAmC,CAAA;AACpC,CAAC,EARW,cAAc,GAAd,sBAAc,KAAd,sBAAc,QAQzB;AAID,IAAiB,KAAK,CAiBrB;AAjBD,WAAiB,KAAK;IACrB,kCAAkC;IACrB,QAAE,GAAG,gGAAgG,CAAA;IACrG,cAAQ,GACpB,8GAA8G,CAAA;IAClG,aAAO,GAAG,uBAAuB,CAAA;IACjC,UAAI,GAChB,yLAAyL,CAAA;IAC7K,aAAO,GAAG,4BAA4B,CAAA;IACtC,WAAK,GAAG,wBAAwB,CAAA;IAChC,kBAAY,GAAG,6BAA6B,CAAA;IAC5C,kBAAY,GAAG,0BAA0B,CAAA;IACzC,YAAM,GAAG,UAAU,CAAA;IACnB,mBAAa,GAAG,eAAe,CAAA;IAC/B,eAAS,GAAG,QAAQ,CAAA;IACpB,cAAQ,GACpB,oGAAoG,CAAA;AACtG,CAAC,EAjBgB,KAAK,GAAL,aAAK,KAAL,aAAK,QAiBrB"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@companion-module/base",
3
- "version": "0.1.2",
3
+ "version": "0.2.0",
4
4
  "type": "commonjs",
5
5
  "main": "dist/index.js",
6
6
  "typings": "dist/index.d.ts",
@@ -15,18 +15,19 @@
15
15
  "dist"
16
16
  ],
17
17
  "dependencies": {
18
- "@sentry/node": "^7.5.1",
19
- "@sentry/tracing": "^7.5.1",
18
+ "@sentry/node": "^7.12.1",
19
+ "@sentry/tracing": "^7.12.1",
20
+ "eventemitter3": "^4.0.7",
20
21
  "p-queue": "^6.6.2",
21
22
  "p-timeout": "^4.1.0",
22
- "socket.io-client": "^4.5.1",
23
+ "socket.io-client": "^4.5.2",
23
24
  "tslib": "^2.4.0"
24
25
  },
25
26
  "devDependencies": {
26
27
  "@tsconfig/node14": "^1.0.3",
27
- "@types/node": "^14",
28
+ "@types/node": "^14.18.26",
28
29
  "prettier": "^2.7.1",
29
- "typedoc": "^0.23.7",
30
- "typescript": "~4.7.4"
30
+ "typedoc": "^0.23.14",
31
+ "typescript": "~4.8.2"
31
32
  }
32
33
  }