@companion-module/base 0.5.1 → 0.6.1
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 +19 -0
- package/assets/manifest.schema.json +1 -1
- package/dist/helpers/tcp.js +64 -63
- package/dist/helpers/tcp.js.map +1 -1
- package/dist/helpers/telnet.js +90 -92
- package/dist/helpers/telnet.js.map +1 -1
- package/dist/helpers/udp.js +43 -44
- package/dist/helpers/udp.js.map +1 -1
- package/dist/host-api/ipc-wrapper.js +16 -18
- package/dist/host-api/ipc-wrapper.js.map +1 -1
- package/dist/internal/upgrade.d.ts +1 -1
- package/dist/module-api/base.js +89 -94
- package/dist/module-api/base.js.map +1 -1
- package/dist/module-api/feedback.d.ts +2 -2
- package/dist/module-api/feedback.d.ts.map +1 -1
- package/dist/module-api/index.d.ts +2 -0
- package/dist/module-api/index.d.ts.map +1 -1
- package/dist/module-api/index.js +2 -0
- package/dist/module-api/index.js.map +1 -1
- package/dist/module-api/preset.d.ts +6 -6
- package/dist/module-api/preset.d.ts.map +1 -1
- package/dist/module-api/style.d.ts +3 -8
- package/dist/module-api/style.d.ts.map +1 -1
- package/generated/manifest.d.ts +1 -1
- package/generated/validate_manifest.js +1 -1
- package/package.json +11 -8
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,24 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [0.6.1](https://github.com/bitfocus/companion-module-base/compare/v0.6.0...v0.6.1) (2022-11-26)
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
### Bug Fixes
|
|
7
|
+
|
|
8
|
+
* missing exports ([5dbd28c](https://github.com/bitfocus/companion-module-base/commit/5dbd28cf35711eab037c63fbd00d2c5342f69121))
|
|
9
|
+
|
|
10
|
+
## [0.6.0](https://github.com/bitfocus/companion-module-base/compare/v0.5.1...v0.6.0) (2022-11-26)
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
### Features
|
|
14
|
+
|
|
15
|
+
* require node 18 ([7b42e3d](https://github.com/bitfocus/companion-module-base/commit/7b42e3d3b1d4877f6cce3298dd7a746dec48cfe1))
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
### Bug Fixes
|
|
19
|
+
|
|
20
|
+
* add missing properties ([6bb321c](https://github.com/bitfocus/companion-module-base/commit/6bb321c4c44ea44bd6a2a47c22c8c61bcf447dcd))
|
|
21
|
+
|
|
3
22
|
## [0.5.1](https://github.com/bitfocus/companion-module-base/compare/v0.5.0...v0.5.1) (2022-11-22)
|
|
4
23
|
|
|
5
24
|
|
package/dist/helpers/tcp.js
CHANGED
|
@@ -15,7 +15,6 @@
|
|
|
15
15
|
* disclosing the source code of your own applications.
|
|
16
16
|
*
|
|
17
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
18
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
20
19
|
exports.TCPHelper = void 0;
|
|
21
20
|
const tslib_1 = require("tslib");
|
|
@@ -23,47 +22,56 @@ const net_1 = tslib_1.__importDefault(require("net"));
|
|
|
23
22
|
const eventemitter3_1 = require("eventemitter3");
|
|
24
23
|
const enums_1 = require("../module-api/enums");
|
|
25
24
|
class TCPHelper extends eventemitter3_1.EventEmitter {
|
|
25
|
+
#host;
|
|
26
|
+
#port;
|
|
27
|
+
_socket;
|
|
28
|
+
#options;
|
|
29
|
+
#connected = false;
|
|
30
|
+
#connecting = false;
|
|
31
|
+
#destroyed = false;
|
|
32
|
+
#lastStatus;
|
|
33
|
+
#reconnectTimer;
|
|
34
|
+
get isConnected() {
|
|
35
|
+
return this.#connected;
|
|
36
|
+
}
|
|
37
|
+
get isConnecting() {
|
|
38
|
+
return this.#connecting;
|
|
39
|
+
}
|
|
40
|
+
get isDestroyed() {
|
|
41
|
+
return this.#destroyed;
|
|
42
|
+
}
|
|
26
43
|
constructor(host, port, options) {
|
|
27
44
|
super();
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
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, {
|
|
45
|
+
this.#host = host;
|
|
46
|
+
this.#port = port;
|
|
47
|
+
this.#options = {
|
|
40
48
|
reconnect_interval: 2000,
|
|
41
49
|
reconnect: true,
|
|
42
50
|
...options,
|
|
43
|
-
}
|
|
51
|
+
};
|
|
44
52
|
this._socket = new net_1.default.Socket();
|
|
45
53
|
this._socket.setKeepAlive(true);
|
|
46
54
|
this._socket.setNoDelay(true);
|
|
47
55
|
this._socket.on('error', (err) => {
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
if (
|
|
51
|
-
|
|
56
|
+
this.#connecting = false;
|
|
57
|
+
this.#connected = false;
|
|
58
|
+
if (this.#options.reconnect) {
|
|
59
|
+
this.#queueReconnect();
|
|
52
60
|
}
|
|
53
|
-
|
|
61
|
+
this.#new_status(enums_1.InstanceStatus.UnknownError, err.message);
|
|
54
62
|
this.emit('error', err);
|
|
55
63
|
});
|
|
56
64
|
this._socket.on('ready', () => {
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
65
|
+
this.#connected = true;
|
|
66
|
+
this.#connecting = false;
|
|
67
|
+
this.#new_status(enums_1.InstanceStatus.Ok);
|
|
60
68
|
this.emit('connect');
|
|
61
69
|
});
|
|
62
70
|
this._socket.on('end', () => {
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
if (!
|
|
66
|
-
|
|
71
|
+
this.#connected = false;
|
|
72
|
+
this.#new_status(enums_1.InstanceStatus.Disconnected);
|
|
73
|
+
if (!this.#connecting && this.#options.reconnect) {
|
|
74
|
+
this.#queueReconnect();
|
|
67
75
|
}
|
|
68
76
|
this.emit('end');
|
|
69
77
|
});
|
|
@@ -72,36 +80,27 @@ class TCPHelper extends eventemitter3_1.EventEmitter {
|
|
|
72
80
|
// Let caller install event handlers first
|
|
73
81
|
setImmediate(() => this.connect());
|
|
74
82
|
setTimeout(() => {
|
|
75
|
-
if (!
|
|
83
|
+
if (!this.#destroyed && !this.listenerCount('error')) {
|
|
76
84
|
// The socket is active and has no listeners. Log an error for the module devs!
|
|
77
|
-
console.error(`Danger: TCP client for ${
|
|
85
|
+
console.error(`Danger: TCP client for ${this.#host}:${this.#port} is missing an error handler!`);
|
|
78
86
|
}
|
|
79
87
|
}, 5000);
|
|
80
88
|
}
|
|
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
89
|
connect() {
|
|
91
|
-
if (
|
|
90
|
+
if (this.#destroyed)
|
|
92
91
|
throw new Error('Cannot connect destroyed socket');
|
|
93
|
-
if (
|
|
92
|
+
if (this.#connecting)
|
|
94
93
|
return false;
|
|
95
|
-
|
|
96
|
-
this._socket.connect(
|
|
94
|
+
this.#connecting = true;
|
|
95
|
+
this._socket.connect(this.#port, this.#host);
|
|
97
96
|
return true;
|
|
98
97
|
}
|
|
99
98
|
async send(message) {
|
|
100
|
-
if (
|
|
99
|
+
if (this.#destroyed || this._socket.destroyed)
|
|
101
100
|
throw new Error('Cannot write to destroyed socket');
|
|
102
101
|
if (!message || !message.length)
|
|
103
102
|
throw new Error('No message to send');
|
|
104
|
-
if (!
|
|
103
|
+
if (!this.#connected) {
|
|
105
104
|
return false;
|
|
106
105
|
}
|
|
107
106
|
try {
|
|
@@ -116,38 +115,40 @@ class TCPHelper extends eventemitter3_1.EventEmitter {
|
|
|
116
115
|
});
|
|
117
116
|
}
|
|
118
117
|
catch (error) {
|
|
119
|
-
|
|
118
|
+
this.#connected = false;
|
|
120
119
|
const error2 = error instanceof Error ? error : new Error(`${error}`);
|
|
121
120
|
// Unhandeled socket error
|
|
122
|
-
|
|
121
|
+
this.#new_status(enums_1.InstanceStatus.UnknownError, error2.message);
|
|
123
122
|
this.emit('error', error2);
|
|
124
123
|
throw error2;
|
|
125
124
|
}
|
|
126
125
|
}
|
|
127
126
|
destroy() {
|
|
128
|
-
|
|
129
|
-
if (
|
|
130
|
-
clearTimeout(
|
|
127
|
+
this.#destroyed = true;
|
|
128
|
+
if (this.#reconnectTimer !== undefined) {
|
|
129
|
+
clearTimeout(this.#reconnectTimer);
|
|
131
130
|
}
|
|
132
131
|
this._socket.removeAllListeners();
|
|
133
132
|
this.removeAllListeners();
|
|
134
133
|
this._socket.destroy();
|
|
135
134
|
}
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
135
|
+
#queueReconnect() {
|
|
136
|
+
if (this.#reconnectTimer !== undefined) {
|
|
137
|
+
clearTimeout(this.#reconnectTimer);
|
|
138
|
+
}
|
|
139
|
+
this.#reconnectTimer = setTimeout(() => {
|
|
140
|
+
this.#reconnectTimer = undefined;
|
|
141
|
+
this.#new_status(enums_1.InstanceStatus.Connecting);
|
|
142
|
+
this.connect();
|
|
143
|
+
}, this.#options.reconnect_interval);
|
|
141
144
|
}
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
}
|
|
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);
|
|
145
|
+
// Private function
|
|
146
|
+
#new_status(status, message) {
|
|
147
|
+
if (this.#lastStatus != status) {
|
|
148
|
+
this.#lastStatus = status;
|
|
149
|
+
this.emit('status_change', status, message);
|
|
150
|
+
}
|
|
151
151
|
}
|
|
152
|
-
}
|
|
152
|
+
}
|
|
153
|
+
exports.TCPHelper = TCPHelper;
|
|
153
154
|
//# sourceMappingURL=tcp.js.map
|
package/dist/helpers/tcp.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tcp.js","sourceRoot":"","sources":["../../src/helpers/tcp.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;GAeG
|
|
1
|
+
{"version":3,"file":"tcp.js","sourceRoot":"","sources":["../../src/helpers/tcp.ts"],"names":[],"mappings":"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"}
|
package/dist/helpers/telnet.js
CHANGED
|
@@ -15,7 +15,6 @@
|
|
|
15
15
|
* disclosing the source code of your own applications.
|
|
16
16
|
*
|
|
17
17
|
*/
|
|
18
|
-
var _TelnetHelper_tcp, _TelnetHelper_stream, _TelnetStream_instances, _TelnetStream_buffer, _TelnetStream_subbuffer, _TelnetStream_state, _TelnetStream_handleByte, _TelnetStream_getData;
|
|
19
18
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
20
19
|
exports.TelnetHelper = void 0;
|
|
21
20
|
const tslib_1 = require("tslib");
|
|
@@ -32,22 +31,31 @@ const DO = 253;
|
|
|
32
31
|
const DONT = 254;
|
|
33
32
|
const IAC = 255;
|
|
34
33
|
class TelnetHelper extends eventemitter3_1.default {
|
|
34
|
+
#tcp;
|
|
35
|
+
#stream;
|
|
36
|
+
get isConnected() {
|
|
37
|
+
return this.#tcp.isConnected;
|
|
38
|
+
}
|
|
39
|
+
get isConnecting() {
|
|
40
|
+
return this.#tcp.isConnecting;
|
|
41
|
+
}
|
|
42
|
+
get isDestroyed() {
|
|
43
|
+
return this.#tcp.isDestroyed;
|
|
44
|
+
}
|
|
35
45
|
constructor(host, port, options) {
|
|
36
46
|
super();
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
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));
|
|
47
|
+
this.#tcp = new tcp_1.TCPHelper(host, port, options);
|
|
48
|
+
this.#stream = new TelnetStream();
|
|
49
|
+
this.#tcp._socket.pipe(this.#stream);
|
|
50
|
+
this.#tcp.on('connect', () => this.emit('connect'));
|
|
51
|
+
this.#tcp.on('end', () => this.emit('end'));
|
|
52
|
+
this.#tcp.on('error', (error) => this.emit('error', error));
|
|
53
|
+
this.#tcp.on('status_change', (status, message) => this.emit('status_change', status, message));
|
|
46
54
|
// Ignore drain and data, they go via the stream
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
55
|
+
this.#stream.on('iac', (a, b) => this.emit('iac', a, b));
|
|
56
|
+
this.#stream.on('sb', (buffer) => this.emit('sb', buffer));
|
|
57
|
+
this.#stream.on('data', (data) => this.emit('data', data));
|
|
58
|
+
this.#stream.on('drain', () => this.emit('drain'));
|
|
51
59
|
setTimeout(() => {
|
|
52
60
|
if (!this.isDestroyed && !this.listenerCount('error')) {
|
|
53
61
|
// The socket is active and has no listeners. Log an error for the module devs!
|
|
@@ -55,111 +63,101 @@ class TelnetHelper extends eventemitter3_1.default {
|
|
|
55
63
|
}
|
|
56
64
|
}, 5000);
|
|
57
65
|
}
|
|
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
66
|
connect() {
|
|
68
|
-
return
|
|
67
|
+
return this.#tcp.connect();
|
|
69
68
|
}
|
|
70
69
|
send(message) {
|
|
71
|
-
return
|
|
70
|
+
return this.#tcp.send(message);
|
|
72
71
|
}
|
|
73
72
|
destroy() {
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
73
|
+
this.#tcp.destroy();
|
|
74
|
+
this.#stream.removeAllListeners();
|
|
75
|
+
this.#stream.destroy();
|
|
77
76
|
}
|
|
78
77
|
}
|
|
79
78
|
exports.TelnetHelper = TelnetHelper;
|
|
80
|
-
_TelnetHelper_tcp = new WeakMap(), _TelnetHelper_stream = new WeakMap();
|
|
81
79
|
/*
|
|
82
80
|
* TelnetStream
|
|
83
81
|
*/
|
|
84
82
|
class TelnetStream extends stream_1.Transform {
|
|
83
|
+
#buffer;
|
|
84
|
+
#subbuffer;
|
|
85
|
+
#state;
|
|
85
86
|
constructor(options) {
|
|
86
87
|
super(options);
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
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");
|
|
88
|
+
this.#buffer = Buffer.alloc(0);
|
|
89
|
+
this.#subbuffer = Buffer.alloc(0);
|
|
90
|
+
this.#state = DATA;
|
|
94
91
|
}
|
|
95
92
|
_transform(obj, _encoding, callback) {
|
|
96
93
|
for (let i = 0; i < obj.length; ++i) {
|
|
97
|
-
|
|
94
|
+
this.#handleByte(obj[i]);
|
|
98
95
|
}
|
|
99
|
-
const data =
|
|
96
|
+
const data = this.#getData();
|
|
100
97
|
if (data.length) {
|
|
101
98
|
this.push(data);
|
|
102
99
|
}
|
|
103
100
|
callback();
|
|
104
101
|
}
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
102
|
+
#handleByte(byte) {
|
|
103
|
+
if (this.#state === DATA) {
|
|
104
|
+
if (byte === IAC) {
|
|
105
|
+
this.#state = IAC;
|
|
106
|
+
return;
|
|
107
|
+
}
|
|
108
|
+
this.#buffer = Buffer.concat([this.#buffer, Buffer.from([byte])]);
|
|
111
109
|
}
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
break;
|
|
110
|
+
else if (this.#state === IAC) {
|
|
111
|
+
switch (byte) {
|
|
112
|
+
case SB:
|
|
113
|
+
case WILL:
|
|
114
|
+
case WONT:
|
|
115
|
+
case DO:
|
|
116
|
+
case DONT:
|
|
117
|
+
this.#state = byte;
|
|
118
|
+
break;
|
|
119
|
+
default:
|
|
120
|
+
this.#state = DATA;
|
|
121
|
+
break;
|
|
122
|
+
}
|
|
126
123
|
}
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
124
|
+
else if (this.#state >= WILL && this.#state <= DONT) {
|
|
125
|
+
let iac = undefined;
|
|
126
|
+
switch (this.#state) {
|
|
127
|
+
case WILL:
|
|
128
|
+
iac = 'WILL';
|
|
129
|
+
break;
|
|
130
|
+
case WONT:
|
|
131
|
+
iac = 'WONT';
|
|
132
|
+
break;
|
|
133
|
+
case DO:
|
|
134
|
+
iac = 'DO';
|
|
135
|
+
break;
|
|
136
|
+
case DONT:
|
|
137
|
+
iac = 'DONT';
|
|
138
|
+
break;
|
|
139
|
+
default:
|
|
140
|
+
// never hit
|
|
141
|
+
return;
|
|
142
|
+
}
|
|
143
|
+
this.emit('iac', iac, byte);
|
|
144
|
+
this.#state = DATA;
|
|
145
|
+
return;
|
|
146
|
+
}
|
|
147
|
+
else if (this.#state === SB) {
|
|
148
|
+
if (byte === SE) {
|
|
149
|
+
this.emit('sb', this.#subbuffer);
|
|
150
|
+
this.#state = DATA;
|
|
151
|
+
this.#subbuffer = Buffer.alloc(0);
|
|
145
152
|
return;
|
|
153
|
+
}
|
|
154
|
+
this.#subbuffer = Buffer.concat([this.#subbuffer, Buffer.from([byte])]);
|
|
146
155
|
}
|
|
147
|
-
this.emit('iac', iac, byte);
|
|
148
|
-
tslib_1.__classPrivateFieldSet(this, _TelnetStream_state, DATA, "f");
|
|
149
|
-
return;
|
|
150
156
|
}
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
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");
|
|
157
|
+
#getData() {
|
|
158
|
+
const buff = this.#buffer;
|
|
159
|
+
this.#buffer = Buffer.alloc(0);
|
|
160
|
+
return buff;
|
|
159
161
|
}
|
|
160
|
-
}
|
|
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
|
-
};
|
|
162
|
+
}
|
|
165
163
|
//# sourceMappingURL=telnet.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"telnet.js","sourceRoot":"","sources":["../../src/helpers/telnet.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;GAeG
|
|
1
|
+
{"version":3,"file":"telnet.js","sourceRoot":"","sources":["../../src/helpers/telnet.ts"],"names":[],"mappings":"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"}
|