abmqtts 0.0.5 → 0.0.6

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.
@@ -6,176 +6,222 @@ const fbns_device_auth_1 = require("./fbns.device-auth");
6
6
  const shared_1 = require("../shared");
7
7
  const mqttot_1 = require("../mqttot");
8
8
  const chance_1 = require("chance");
9
- const obmqtt_1 = require("obmqtt");
9
+ const obmqtt_1 = require("abmqtt-dist");
10
10
  const errors_1 = require("../errors");
11
11
  const eventemitter3_1 = require("eventemitter3");
12
12
  const fbns_utilities_1 = require("./fbns.utilities");
13
13
  class FbnsClient extends eventemitter3_1.EventEmitter {
14
- get auth() {
15
- return this._auth;
16
- }
17
- set auth(value) {
18
- this._auth = value;
19
- }
20
- constructor(ig) {
21
- super();
22
- this.ig = ig;
23
- this.fbnsDebug = (0, shared_1.debugChannel)('fbns');
24
- this.safeDisconnect = false;
25
- this._auth = new fbns_device_auth_1.FbnsDeviceAuth(this.ig);
26
- }
27
- buildConnection() {
28
- this.fbnsDebug('Constructing connection');
29
- this.conn = new mqttot_1.MQTToTConnection({
30
- clientIdentifier: this._auth.clientId,
31
- clientInfo: {
32
- userId: BigInt(this._auth.userId),
33
- userAgent: (0, shared_1.createFbnsUserAgent)(this.ig),
34
- clientCapabilities: 183,
35
- endpointCapabilities: 128,
36
- publishFormat: 1,
37
- noAutomaticForeground: true,
38
- makeUserAvailableInForeground: false,
39
- deviceId: this._auth.deviceId,
40
- isInitiallyForeground: false,
41
- networkType: 1,
42
- networkSubtype: 0,
43
- clientMqttSessionId: BigInt(Date.now()) & BigInt(0xffffffff),
44
- subscribeTopics: [76, 80, 231],
45
- clientType: 'device_auth',
46
- appId: BigInt(567310203415052),
47
- deviceSecret: this._auth.deviceSecret,
48
- anotherUnknown: BigInt(-1),
49
- clientStack: 3,
50
- },
51
- password: this._auth.password,
52
- });
53
- }
54
- async connect({ enableTrace, autoReconnect, socksOptions, additionalTlsOptions, } = {}) {
55
- this.fbnsDebug('Connecting to FBNS...');
56
- this.auth.update();
57
- this.client = new mqttot_1.MQTToTClient({
58
- url: constants_1.FBNS.HOST_NAME_V6,
59
- payloadProvider: () => {
60
- this.buildConnection();
61
- if (!this.conn) {
62
- throw new errors_1.InvalidStateError("No connection created - can't build provider");
63
- }
64
- return (0, shared_1.compressDeflate)(this.conn.toThrift());
65
- },
66
- enableTrace,
67
- autoReconnect: autoReconnect ?? true,
68
- requirePayload: true,
69
- socksOptions,
70
- additionalOptions: additionalTlsOptions,
71
- });
72
- this.client.on('warning', w => this.emit('warning', w));
73
- this.client.on('error', e => this.emit('error', e));
74
- this.client.on('disconnect', reason => this.safeDisconnect
75
- ? this.emit('disconnect', reason && JSON.stringify(reason))
76
- : this.emit('error', new errors_1.ClientDisconnectedError(`MQTToTClient got disconnected. Reason: ${reason && JSON.stringify(reason)}`)));
77
- this.client.listen(constants_1.FbnsTopics.FBNS_MESSAGE.id, msg => this.handleMessage(msg));
78
- this.client.listen({
79
- topic: constants_1.FbnsTopics.FBNS_EXP_LOGGING.id,
80
- transformer: async (msg) => JSON.parse((await (0, shared_1.tryUnzipAsync)(msg.payload)).toString()),
81
- }, msg => this.emit('logging', msg));
82
- this.client.listen(constants_1.FbnsTopics.PP.id, msg => this.emit('pp', msg.payload.toString()));
83
- this.client.on('connect', async (res) => {
84
- if (!this.client) {
85
- throw new obmqtt_1.IllegalStateError('No client registered but an event was received');
86
- }
87
- this.fbnsDebug('Connected to MQTT');
88
- if (!res?.payload?.length) {
89
- this.fbnsDebug(`Received empty connect packet. Reason: ${res.errorName}; Try resetting your fbns state!`);
90
- this.emit('error', new errors_1.EmptyPacketError('Received empty connect packet. Try resetting your fbns state!'));
91
- await this.client.disconnect();
92
- return;
93
- }
94
- const payload = res.payload.toString('utf8');
95
- this.fbnsDebug(`Received auth: ${payload}`);
96
- this._auth.read(payload);
97
- this.emit('auth', this.auth);
98
- await this.client.mqttotPublish({
99
- topic: constants_1.FbnsTopics.FBNS_REG_REQ.id,
100
- payload: Buffer.from(JSON.stringify({
101
- pkg_name: constants_1.INSTAGRAM_PACKAGE_NAME,
102
- appid: this.ig.state.fbAnalyticsApplicationId,
103
- }), 'utf8'),
104
- qosLevel: 1,
105
- });
106
- // this.buildConnection(); ?
107
- });
108
- await this.client
109
- .connect({
110
- keepAlive: 60,
111
- protocolLevel: 3,
112
- clean: true,
113
- connectDelay: 60 * 1000,
114
- })
115
- .catch(e => {
116
- this.fbnsDebug(`Connection failed: ${e}`);
117
- throw e;
118
- });
119
- if (!this.client.ready)
120
- throw new Error('OB Connection failed');
121
- await this.client.subscribe({ topic: constants_1.FbnsTopics.FBNS_MESSAGE.id });
122
- const msg = await (0, shared_1.listenOnce)(this.client, constants_1.FbnsTopics.FBNS_REG_RESP.id);
123
- const data = await (0, shared_1.tryUnzipAsync)(msg.payload);
124
- const payload = data.toString('utf8');
125
- this.fbnsDebug(`Received register response: ${payload}`);
126
- const { token, error } = JSON.parse(payload);
127
- if (error) {
128
- this.emit('error', error);
129
- throw error;
130
- }
131
- try {
132
- await this.sendPushRegister(token);
133
- }
134
- catch (e) {
135
- if (e instanceof Error) {
136
- this.emit('error', e);
137
- }
138
- throw e;
14
+ get auth() {
15
+ return this._auth;
16
+ }
17
+ set auth(value) {
18
+ this._auth = value;
19
+ }
20
+ constructor(ig) {
21
+ super();
22
+ this.ig = ig;
23
+ this.fbnsDebug = (0, shared_1.debugChannel)("fbns");
24
+ this.safeDisconnect = false;
25
+ this._auth = new fbns_device_auth_1.FbnsDeviceAuth(this.ig);
26
+ }
27
+ buildConnection() {
28
+ this.fbnsDebug("Constructing connection");
29
+ this.conn = new mqttot_1.MQTToTConnection({
30
+ clientIdentifier: this._auth.clientId,
31
+ clientInfo: {
32
+ userId: BigInt(this._auth.userId),
33
+ userAgent: (0, shared_1.createFbnsUserAgent)(this.ig),
34
+ clientCapabilities: 183,
35
+ endpointCapabilities: 128,
36
+ publishFormat: 1,
37
+ noAutomaticForeground: true,
38
+ makeUserAvailableInForeground: false,
39
+ deviceId: this._auth.deviceId,
40
+ isInitiallyForeground: false,
41
+ networkType: 1,
42
+ networkSubtype: 0,
43
+ clientMqttSessionId: BigInt(Date.now()) & BigInt(0xffffffff),
44
+ subscribeTopics: [76, 80, 231],
45
+ clientType: "device_auth",
46
+ appId: BigInt(567310203415052),
47
+ deviceSecret: this._auth.deviceSecret,
48
+ anotherUnknown: BigInt(-1),
49
+ clientStack: 3,
50
+ },
51
+ password: this._auth.password,
52
+ });
53
+ }
54
+ async connect({
55
+ enableTrace,
56
+ autoReconnect,
57
+ socksOptions,
58
+ additionalTlsOptions,
59
+ } = {}) {
60
+ this.fbnsDebug("Connecting to FBNS...");
61
+ this.auth.update();
62
+ this.client = new mqttot_1.MQTToTClient({
63
+ url: constants_1.FBNS.HOST_NAME_V6,
64
+ payloadProvider: () => {
65
+ this.buildConnection();
66
+ if (!this.conn) {
67
+ throw new errors_1.InvalidStateError(
68
+ "No connection created - can't build provider"
69
+ );
139
70
  }
71
+ return (0, shared_1.compressDeflate)(this.conn.toThrift());
72
+ },
73
+ enableTrace,
74
+ autoReconnect: autoReconnect ?? true,
75
+ requirePayload: true,
76
+ socksOptions,
77
+ additionalOptions: additionalTlsOptions,
78
+ });
79
+ this.client.on("warning", (w) => this.emit("warning", w));
80
+ this.client.on("error", (e) => this.emit("error", e));
81
+ this.client.on("disconnect", (reason) =>
82
+ this.safeDisconnect
83
+ ? this.emit("disconnect", reason && JSON.stringify(reason))
84
+ : this.emit(
85
+ "error",
86
+ new errors_1.ClientDisconnectedError(
87
+ `MQTToTClient got disconnected. Reason: ${
88
+ reason && JSON.stringify(reason)
89
+ }`
90
+ )
91
+ )
92
+ );
93
+ this.client.listen(constants_1.FbnsTopics.FBNS_MESSAGE.id, (msg) =>
94
+ this.handleMessage(msg)
95
+ );
96
+ this.client.listen(
97
+ {
98
+ topic: constants_1.FbnsTopics.FBNS_EXP_LOGGING.id,
99
+ transformer: async (msg) =>
100
+ JSON.parse(
101
+ (await (0, shared_1.tryUnzipAsync)(msg.payload)).toString()
102
+ ),
103
+ },
104
+ (msg) => this.emit("logging", msg)
105
+ );
106
+ this.client.listen(constants_1.FbnsTopics.PP.id, (msg) =>
107
+ this.emit("pp", msg.payload.toString())
108
+ );
109
+ this.client.on("connect", async (res) => {
110
+ if (!this.client) {
111
+ throw new obmqtt_1.IllegalStateError(
112
+ "No client registered but an event was received"
113
+ );
114
+ }
115
+ this.fbnsDebug("Connected to MQTT");
116
+ if (!res?.payload?.length) {
117
+ this.fbnsDebug(
118
+ `Received empty connect packet. Reason: ${res.errorName}; Try resetting your fbns state!`
119
+ );
120
+ this.emit(
121
+ "error",
122
+ new errors_1.EmptyPacketError(
123
+ "Received empty connect packet. Try resetting your fbns state!"
124
+ )
125
+ );
126
+ await this.client.disconnect();
127
+ return;
128
+ }
129
+ const payload = res.payload.toString("utf8");
130
+ this.fbnsDebug(`Received auth: ${payload}`);
131
+ this._auth.read(payload);
132
+ this.emit("auth", this.auth);
133
+ await this.client.mqttotPublish({
134
+ topic: constants_1.FbnsTopics.FBNS_REG_REQ.id,
135
+ payload: Buffer.from(
136
+ JSON.stringify({
137
+ pkg_name: constants_1.INSTAGRAM_PACKAGE_NAME,
138
+ appid: this.ig.state.fbAnalyticsApplicationId,
139
+ }),
140
+ "utf8"
141
+ ),
142
+ qosLevel: 1,
143
+ });
144
+ // this.buildConnection(); ?
145
+ });
146
+ await this.client
147
+ .connect({
148
+ keepAlive: 60,
149
+ protocolLevel: 3,
150
+ clean: true,
151
+ connectDelay: 60 * 1000,
152
+ })
153
+ .catch((e) => {
154
+ this.fbnsDebug(`Connection failed: ${e}`);
155
+ throw e;
156
+ });
157
+ if (!this.client.ready) throw new Error("OB Connection failed");
158
+ await this.client.subscribe({
159
+ topic: constants_1.FbnsTopics.FBNS_MESSAGE.id,
160
+ });
161
+ const msg = await (0, shared_1.listenOnce)(
162
+ this.client,
163
+ constants_1.FbnsTopics.FBNS_REG_RESP.id
164
+ );
165
+ const data = await (0, shared_1.tryUnzipAsync)(msg.payload);
166
+ const payload = data.toString("utf8");
167
+ this.fbnsDebug(`Received register response: ${payload}`);
168
+ const { token, error } = JSON.parse(payload);
169
+ if (error) {
170
+ this.emit("error", error);
171
+ throw error;
140
172
  }
141
- disconnect() {
142
- this.safeDisconnect = true;
143
- if (!this.client) {
144
- return Promise.resolve();
145
- }
146
- return this.client.disconnect();
173
+ try {
174
+ await this.sendPushRegister(token);
175
+ } catch (e) {
176
+ if (e instanceof Error) {
177
+ this.emit("error", e);
178
+ }
179
+ throw e;
147
180
  }
148
- async handleMessage(msg) {
149
- const payload = JSON.parse((await (0, shared_1.tryUnzipAsync)(msg.payload)).toString('utf8'));
150
- if ((0, shared_1.notUndefined)(payload.fbpushnotif)) {
151
- const notification = (0, fbns_utilities_1.createNotificationFromJson)(payload.fbpushnotif);
152
- this.emit('push', notification);
153
- if (notification.collapseKey)
154
- this.emit(notification.collapseKey, notification);
155
- }
156
- else {
157
- this.fbnsDebug(`Received a message without 'fbpushnotif': ${JSON.stringify(payload)}`);
158
- this.emit('message', payload);
159
- }
181
+ }
182
+ disconnect() {
183
+ this.safeDisconnect = true;
184
+ if (!this.client) {
185
+ return Promise.resolve();
160
186
  }
161
- async sendPushRegister(token) {
162
- const { body } = await this.ig.request.send({
163
- url: `/api/v1/push/register/`,
164
- method: 'POST',
165
- form: {
166
- device_type: 'android_mqtt',
167
- is_main_push_channel: true,
168
- device_sub_type: 2,
169
- device_token: token,
170
- _csrftoken: this.ig.state.cookieCsrfToken,
171
- guid: this.ig.state.uuid,
172
- uuid: this.ig.state.uuid,
173
- users: this.ig.state.cookieUserId,
174
- family_device_id: new chance_1.Chance().guid({ version: 4 }),
175
- },
176
- });
177
- return body;
187
+ return this.client.disconnect();
188
+ }
189
+ async handleMessage(msg) {
190
+ const payload = JSON.parse(
191
+ (await (0, shared_1.tryUnzipAsync)(msg.payload)).toString("utf8")
192
+ );
193
+ if ((0, shared_1.notUndefined)(payload.fbpushnotif)) {
194
+ const notification = (0, fbns_utilities_1.createNotificationFromJson)(
195
+ payload.fbpushnotif
196
+ );
197
+ this.emit("push", notification);
198
+ if (notification.collapseKey)
199
+ this.emit(notification.collapseKey, notification);
200
+ } else {
201
+ this.fbnsDebug(
202
+ `Received a message without 'fbpushnotif': ${JSON.stringify(payload)}`
203
+ );
204
+ this.emit("message", payload);
178
205
  }
206
+ }
207
+ async sendPushRegister(token) {
208
+ const { body } = await this.ig.request.send({
209
+ url: `/api/v1/push/register/`,
210
+ method: "POST",
211
+ form: {
212
+ device_type: "android_mqtt",
213
+ is_main_push_channel: true,
214
+ device_sub_type: 2,
215
+ device_token: token,
216
+ _csrftoken: this.ig.state.cookieCsrfToken,
217
+ guid: this.ig.state.uuid,
218
+ uuid: this.ig.state.uuid,
219
+ users: this.ig.state.cookieUserId,
220
+ family_device_id: new chance_1.Chance().guid({ version: 4 }),
221
+ },
222
+ });
223
+ return body;
224
+ }
179
225
  }
180
226
  exports.FbnsClient = FbnsClient;
181
- //# sourceMappingURL=fbns.client.js.map
227
+ //# sourceMappingURL=fbns.client.js.map
@@ -1,5 +1,5 @@
1
1
  import { MQTToTConnectPacketOptions } from './mqttot.connect.request.packet';
2
- import { ConnectRequestOptions, DefaultPacketReadResultMap, DefaultPacketWriteOptions, MqttClient, MqttMessage, MqttMessageOutgoing, PacketFlowFunc, PacketType } from 'obmqtt';
2
+ import { ConnectRequestOptions, DefaultPacketReadResultMap, DefaultPacketWriteOptions, MqttClient, MqttMessage, MqttMessageOutgoing, PacketFlowFunc, PacketType } from 'abmqtt-dist';
3
3
  import { MQTToTConnectResponsePacket } from './mqttot.connect.response.packet';
4
4
  import { SocksProxy } from 'socks';
5
5
  import { ConnectionOptions } from 'tls';
@@ -34,4 +34,4 @@ export declare class MQTToTClient extends MqttClient<MQTToTReadMap, MQTToTWriteM
34
34
  mqttotPublish(message: MqttMessage): Promise<MqttMessageOutgoing>;
35
35
  }
36
36
  export declare function mqttotConnectFlow(payload: Buffer, requirePayload: boolean): PacketFlowFunc<MQTToTReadMap, MQTToTWriteMap, MQTToTConnectResponsePacket>;
37
- export {};
37
+ export { };
@@ -4,98 +4,110 @@ exports.MQTToTClient = void 0;
4
4
  exports.mqttotConnectFlow = mqttotConnectFlow;
5
5
  const shared_1 = require("../shared");
6
6
  const mqttot_connect_request_packet_1 = require("./mqttot.connect.request.packet");
7
- const obmqtt_1 = require("obmqtt");
7
+ const obmqtt_1 = require("abmqtt-dist");
8
8
  const errors_1 = require("../errors");
9
9
  const mqttot_connect_response_packet_1 = require("./mqttot.connect.response.packet");
10
10
  class MQTToTClient extends obmqtt_1.MqttClient {
11
- constructor(options) {
12
- super({
13
- autoReconnect: options.autoReconnect,
14
- readMap: {
15
- ...obmqtt_1.DefaultPacketReadMap,
16
- [obmqtt_1.PacketType.ConnAck]: mqttot_connect_response_packet_1.readConnectResponsePacket,
17
- },
18
- writeMap: {
19
- ...obmqtt_1.DefaultPacketWriteMap,
20
- [obmqtt_1.PacketType.Connect]: mqttot_connect_request_packet_1.writeConnectRequestPacket,
21
- },
22
- transport: options.socksOptions
23
- ? new obmqtt_1.SocksTlsTransport({
24
- host: options.url,
25
- port: 443,
26
- proxyOptions: options.socksOptions,
27
- additionalOptions: options.additionalOptions,
28
- })
29
- : new obmqtt_1.TlsTransport({
30
- host: options.url,
31
- port: 443,
32
- additionalOptions: options.additionalOptions,
33
- }),
34
- });
35
- this.mqttotDebug = (msg, ...args) => (0, shared_1.debugChannel)('mqttot')(`${options.url}: ${msg}`, ...args);
36
- this.connectPayloadProvider = options.payloadProvider;
37
- this.mqttotDebug(`Creating client`);
38
- this.registerListeners();
39
- this.requirePayload = options.requirePayload;
40
- }
41
- registerListeners() {
42
- const printErrorOrWarning = (type) => (e) => {
43
- if (typeof e === 'string') {
44
- this.mqttotDebug(`${type}: ${e}`);
45
- }
46
- else {
47
- this.mqttotDebug(`${type}: ${e.message}\n\tStack: ${e.stack}`);
48
- }
49
- };
50
- this.on('error', printErrorOrWarning('Error'));
51
- this.on('warning', printErrorOrWarning('Warning'));
52
- this.on('disconnect', e => this.mqttotDebug(`Disconnected. ${e}`));
53
- }
54
- async connect(options) {
55
- this.connectPayload = await this.connectPayloadProvider();
56
- return super.connect(options);
57
- }
58
- getConnectFlow() {
59
- if (!this.connectPayload) {
60
- throw new obmqtt_1.IllegalStateError('Called getConnectFlow() before calling connect()');
61
- }
62
- return mqttotConnectFlow(this.connectPayload, this.requirePayload);
63
- }
64
- /**
65
- * Compresses the payload
66
- * @param {MqttMessage} message
67
- * @returns {Promise<MqttMessageOutgoing>}
68
- */
69
- async mqttotPublish(message) {
70
- this.mqttotDebug(`Publishing ${message.payload.byteLength}bytes to topic ${message.topic}`);
71
- return await this.publish({
72
- topic: message.topic,
73
- payload: await (0, shared_1.compressDeflate)(message.payload),
74
- qosLevel: message.qosLevel,
75
- });
11
+ constructor(options) {
12
+ super({
13
+ autoReconnect: options.autoReconnect,
14
+ readMap: {
15
+ ...obmqtt_1.DefaultPacketReadMap,
16
+ [obmqtt_1.PacketType.ConnAck]:
17
+ mqttot_connect_response_packet_1.readConnectResponsePacket,
18
+ },
19
+ writeMap: {
20
+ ...obmqtt_1.DefaultPacketWriteMap,
21
+ [obmqtt_1.PacketType.Connect]:
22
+ mqttot_connect_request_packet_1.writeConnectRequestPacket,
23
+ },
24
+ transport: options.socksOptions
25
+ ? new obmqtt_1.SocksTlsTransport({
26
+ host: options.url,
27
+ port: 443,
28
+ proxyOptions: options.socksOptions,
29
+ additionalOptions: options.additionalOptions,
30
+ })
31
+ : new obmqtt_1.TlsTransport({
32
+ host: options.url,
33
+ port: 443,
34
+ additionalOptions: options.additionalOptions,
35
+ }),
36
+ });
37
+ this.mqttotDebug = (msg, ...args) =>
38
+ (0, shared_1.debugChannel)("mqttot")(`${options.url}: ${msg}`, ...args);
39
+ this.connectPayloadProvider = options.payloadProvider;
40
+ this.mqttotDebug(`Creating client`);
41
+ this.registerListeners();
42
+ this.requirePayload = options.requirePayload;
43
+ }
44
+ registerListeners() {
45
+ const printErrorOrWarning = (type) => (e) => {
46
+ if (typeof e === "string") {
47
+ this.mqttotDebug(`${type}: ${e}`);
48
+ } else {
49
+ this.mqttotDebug(`${type}: ${e.message}\n\tStack: ${e.stack}`);
50
+ }
51
+ };
52
+ this.on("error", printErrorOrWarning("Error"));
53
+ this.on("warning", printErrorOrWarning("Warning"));
54
+ this.on("disconnect", (e) => this.mqttotDebug(`Disconnected. ${e}`));
55
+ }
56
+ async connect(options) {
57
+ this.connectPayload = await this.connectPayloadProvider();
58
+ return super.connect(options);
59
+ }
60
+ getConnectFlow() {
61
+ if (!this.connectPayload) {
62
+ throw new obmqtt_1.IllegalStateError(
63
+ "Called getConnectFlow() before calling connect()"
64
+ );
76
65
  }
66
+ return mqttotConnectFlow(this.connectPayload, this.requirePayload);
67
+ }
68
+ /**
69
+ * Compresses the payload
70
+ * @param {MqttMessage} message
71
+ * @returns {Promise<MqttMessageOutgoing>}
72
+ */
73
+ async mqttotPublish(message) {
74
+ this.mqttotDebug(
75
+ `Publishing ${message.payload.byteLength}bytes to topic ${message.topic}`
76
+ );
77
+ return await this.publish({
78
+ topic: message.topic,
79
+ payload: await (0, shared_1.compressDeflate)(message.payload),
80
+ qosLevel: message.qosLevel,
81
+ });
82
+ }
77
83
  }
78
84
  exports.MQTToTClient = MQTToTClient;
79
85
  function mqttotConnectFlow(payload, requirePayload) {
80
- return (success, error) => ({
81
- start: () => ({
82
- type: obmqtt_1.PacketType.Connect,
83
- options: {
84
- payload,
85
- keepAlive: 60,
86
- },
87
- }),
88
- accept: obmqtt_1.isConnAck,
89
- next: (packet) => {
90
- if (packet.isSuccess) {
91
- if (packet.payload?.length || !requirePayload)
92
- success(packet);
93
- else
94
- error(new errors_1.EmptyPacketError(`CONNACK: no payload (payloadExpected): ${packet.payload}`));
95
- }
96
- else
97
- error(new errors_1.ConnectionFailedError(`CONNACK returnCode: ${packet.returnCode} errorName: ${packet.errorName}`));
98
- },
99
- });
86
+ return (success, error) => ({
87
+ start: () => ({
88
+ type: obmqtt_1.PacketType.Connect,
89
+ options: {
90
+ payload,
91
+ keepAlive: 60,
92
+ },
93
+ }),
94
+ accept: obmqtt_1.isConnAck,
95
+ next: (packet) => {
96
+ if (packet.isSuccess) {
97
+ if (packet.payload?.length || !requirePayload) success(packet);
98
+ else
99
+ error(
100
+ new errors_1.EmptyPacketError(
101
+ `CONNACK: no payload (payloadExpected): ${packet.payload}`
102
+ )
103
+ );
104
+ } else
105
+ error(
106
+ new errors_1.ConnectionFailedError(
107
+ `CONNACK returnCode: ${packet.returnCode} errorName: ${packet.errorName}`
108
+ )
109
+ );
110
+ },
111
+ });
100
112
  }
101
- //# sourceMappingURL=mqttot.client.js.map
113
+ //# sourceMappingURL=mqttot.client.js.map
@@ -1,4 +1,4 @@
1
- import { PacketStream, PacketWriteResult } from 'obmqtt';
1
+ import { PacketStream, PacketWriteResult } from 'abmqtt-dist';
2
2
  export interface MQTToTConnectPacketOptions {
3
3
  keepAlive: number;
4
4
  payload: Buffer;
@@ -1,4 +1,4 @@
1
- import { ConnectResponsePacket, PacketStream, ConnectReturnCode } from 'obmqtt';
1
+ import { ConnectResponsePacket, PacketStream, ConnectReturnCode } from 'abmqtt-dist';
2
2
  export declare class MQTToTConnectResponsePacket extends ConnectResponsePacket {
3
3
  readonly payload: Buffer;
4
4
  constructor(ackFlags: number, returnCode: ConnectReturnCode, payload: Buffer);
@@ -2,23 +2,26 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.MQTToTConnectResponsePacket = void 0;
4
4
  exports.readConnectResponsePacket = readConnectResponsePacket;
5
- const obmqtt_1 = require("obmqtt");
5
+ const obmqtt_1 = require("abmqtt-dist");
6
6
  class MQTToTConnectResponsePacket extends obmqtt_1.ConnectResponsePacket {
7
- constructor(ackFlags, returnCode, payload) {
8
- super(ackFlags, returnCode);
9
- this.payload = payload;
10
- }
7
+ constructor(ackFlags, returnCode, payload) {
8
+ super(ackFlags, returnCode);
9
+ this.payload = payload;
10
+ }
11
11
  }
12
12
  exports.MQTToTConnectResponsePacket = MQTToTConnectResponsePacket;
13
13
  function readConnectResponsePacket(stream, remaining) {
14
- const ack = stream.readByte();
15
- const returnCode = stream.readByte();
16
- if (ack > 1) {
17
- throw new Error('Invalid ack');
18
- }
19
- else if (returnCode > 5) {
20
- throw new Error('Invalid return code');
21
- }
22
- return new MQTToTConnectResponsePacket(ack, returnCode, remaining > 2 ? stream.readStringAsBuffer() : Buffer.alloc(0));
14
+ const ack = stream.readByte();
15
+ const returnCode = stream.readByte();
16
+ if (ack > 1) {
17
+ throw new Error("Invalid ack");
18
+ } else if (returnCode > 5) {
19
+ throw new Error("Invalid return code");
20
+ }
21
+ return new MQTToTConnectResponsePacket(
22
+ ack,
23
+ returnCode,
24
+ remaining > 2 ? stream.readStringAsBuffer() : Buffer.alloc(0)
25
+ );
23
26
  }
24
- //# sourceMappingURL=mqttot.connect.response.packet.js.map
27
+ //# sourceMappingURL=mqttot.connect.response.packet.js.map
@@ -1,6 +1,6 @@
1
1
  import { Topic } from '../../topic';
2
2
  import { MQTToTClient } from '../../mqttot';
3
- import { MqttMessageOutgoing } from 'obmqtt';
3
+ import { MqttMessageOutgoing } from 'abmqtt-dist';
4
4
  export declare class Commands {
5
5
  private client;
6
6
  constructor(client: MQTToTClient);