Comparing version 1.4.0-beta.3 to 1.4.0-beta.4
import { CustomError } from 'ts-custom-error'; | ||
export declare class ConnectError extends CustomError { | ||
status: string; | ||
constructor(status: string); | ||
} |
@@ -6,4 +6,8 @@ "use strict"; | ||
class ConnectError extends ts_custom_error_1.CustomError { | ||
constructor(status) { | ||
super(status); | ||
this.status = status; | ||
} | ||
} | ||
exports.ConnectError = ConnectError; | ||
//# sourceMappingURL=connect.error.js.map |
export * from './errors'; | ||
export * from './flow'; | ||
export * from './packets'; | ||
export * from './reconnect-strategy'; | ||
export * from './transport'; | ||
export * from './mqtt.client'; | ||
@@ -12,2 +14,1 @@ export * from './mqtt.constants'; | ||
export * from './mqtt.utilities'; | ||
export * from './transport'; |
@@ -16,2 +16,4 @@ "use strict"; | ||
__exportStar(require("./packets"), exports); | ||
__exportStar(require("./reconnect-strategy"), exports); | ||
__exportStar(require("./transport"), exports); | ||
__exportStar(require("./mqtt.client"), exports); | ||
@@ -25,3 +27,2 @@ __exportStar(require("./mqtt.constants"), exports); | ||
__exportStar(require("./mqtt.utilities"), exports); | ||
__exportStar(require("./transport"), exports); | ||
//# sourceMappingURL=index.js.map |
/// <reference types="node" /> | ||
import { ExecuteDelayed, ExecutePeriodically, IncomingListenMessage, ListenOptions, ListenSubscribeOptions, MqttAutoReconnectOptions, MqttClientConstructorOptions, MqttSubscription, RegisterClientOptions, Resolvable, StopExecuting, TimerRef } from './mqtt.types'; | ||
import { ExecuteDelayed, ExecutePeriodically, IncomingListenMessage, ListenOptions, ListenSubscribeOptions, MqttClientConstructorOptions, MqttSubscription, RegisterClientOptions, Resolvable, StopExecuting, TimerRef } from './mqtt.types'; | ||
import { PacketFlowData, PacketFlowFunc } from './flow'; | ||
@@ -32,4 +32,3 @@ import { MqttParseResult, MqttTransformer } from './mqtt.parser'; | ||
protected keepAliveTimer?: TimerRef; | ||
protected autoReconnect?: boolean | MqttAutoReconnectOptions; | ||
protected reconnectAttempt: number; | ||
private reconnectStrategy?; | ||
protected activeFlows: PacketFlowData<any>[]; | ||
@@ -75,5 +74,4 @@ protected messageListener: MqttListener; | ||
protected setReady(): void; | ||
protected shouldReconnect(): boolean; | ||
protected reconnect(): Promise<void>; | ||
protected setDisconnected(reason?: string | Error): Promise<void>; | ||
} |
@@ -28,6 +28,5 @@ "use strict"; | ||
this.flowCounter = mqtt_utilities_1.createFlowCounter(); | ||
this.reconnectAttempt = 1; | ||
this.activeFlows = []; | ||
this.messageListener = new mqtt_listener_1.MqttListener(); | ||
this.autoReconnect = options.autoReconnect; | ||
this.reconnectStrategy = options.autoReconnect; | ||
this.transport = | ||
@@ -70,2 +69,3 @@ (_a = options.transport) !== null && _a !== void 0 ? _a : new transport_1.TlsTransport({ | ||
async _connect(options) { | ||
var _a; | ||
this.expectCreated(); | ||
@@ -80,3 +80,3 @@ this.mqttDebug(`Connecting using transport "${this.transport.constructor.name}"`); | ||
this.mqttDebug(`Transport connect error ("${this.transport.constructor.name}")`, e.message); | ||
const shouldReconnect = this.shouldReconnect(); | ||
const shouldReconnect = (_a = this.reconnectStrategy) === null || _a === void 0 ? void 0 : _a.check(); | ||
await this.setDisconnected(e); | ||
@@ -131,10 +131,9 @@ if (shouldReconnect) { | ||
async disconnect(force = false) { | ||
this.autoReconnect = false; | ||
if (!force) { | ||
return this.startFlow(flow_1.outgoingDisconnectFlow()).then(async () => { | ||
await this.setDisconnected(); | ||
await this.setDisconnected('Soft disconnect'); | ||
}); | ||
} | ||
else { | ||
await this.setDisconnected('Forced Disconnect'); | ||
await this.setDisconnected('Forced disconnect'); | ||
} | ||
@@ -303,3 +302,3 @@ } | ||
onConnAck(connAck) { | ||
var _a; | ||
var _a, _b; | ||
if (connAck.isSuccess) { | ||
@@ -311,4 +310,3 @@ this.setReady(); | ||
} | ||
if (typeof this.autoReconnect === 'object' && this.autoReconnect.resetOnConnect) | ||
this.reconnectAttempt = 1; | ||
(_b = this.reconnectStrategy) === null || _b === void 0 ? void 0 : _b.reset(); | ||
} | ||
@@ -353,25 +351,16 @@ else { | ||
} | ||
shouldReconnect() { | ||
var _a; | ||
if (!this.autoReconnect) | ||
// this should never be true | ||
return false; | ||
if (typeof this.autoReconnect === 'boolean') { | ||
return this.autoReconnect; | ||
} | ||
return this.reconnectAttempt <= ((_a = this.autoReconnect.maxReconnectAttempts) !== null && _a !== void 0 ? _a : 1); | ||
} | ||
async reconnect() { | ||
var _a; | ||
var _a, _b; | ||
this.transport.reset(); | ||
this.transformer = this.createTransformer(); | ||
this.transformer.options.debug = (_a = this.transformer.options.debug) !== null && _a !== void 0 ? _a : this.mqttDebug.extend('transformer'); | ||
await ((_b = this.reconnectStrategy) === null || _b === void 0 ? void 0 : _b.wait()); | ||
await this.connect(); | ||
} | ||
async setDisconnected(reason) { | ||
const willReconnect = this.shouldReconnect(); | ||
this.mqttDebug(`Disconnected. Will reconnect: ${willReconnect}. Reconnect attempt #${this.reconnectAttempt}`); | ||
this.reconnectAttempt++; // this should range from 1 to maxAttempts + 1 when shouldReconnect() is called | ||
var _a, _b; | ||
const willReconnect = (_b = (_a = this.reconnectStrategy) === null || _a === void 0 ? void 0 : _a.check(reason)) !== null && _b !== void 0 ? _b : false; | ||
this.mqttDebug(`Disconnected. Will reconnect: ${willReconnect}`); | ||
this._setDisconnected(); | ||
this.stopExecutingFlows(new errors_1.AbortError('Client disconnected.')); | ||
this._setDisconnected(); | ||
this.emitDisconnect({ reason, reconnect: willReconnect }); | ||
@@ -378,0 +367,0 @@ if (this.transport.active) { |
@@ -9,2 +9,3 @@ import { ConnectRequestOptions } from './packets'; | ||
import { TransformerFn, ValidatorFn } from './mqtt.listener'; | ||
import { MqttsReconnectStrategy } from './reconnect-strategy/mqtts.reconnect-strategy'; | ||
export declare type MqttClientConstructorOptions<ReadMap extends PacketReadResultMap = DefaultPacketReadResultMap, WriteMap extends PacketWriteOptionsMap = DefaultPacketWriteOptions> = XOR<{ | ||
@@ -21,3 +22,3 @@ transport: Transport<unknown>; | ||
packetWriter?: PacketWriter<WriteMap>; | ||
autoReconnect?: boolean | MqttAutoReconnectOptions; | ||
autoReconnect?: MqttsReconnectStrategy; | ||
}; | ||
@@ -24,0 +25,0 @@ export interface MqttAutoReconnectOptions { |
{ | ||
"name": "mqtts", | ||
"version": "1.4.0-beta.3", | ||
"version": "1.4.0-beta.4", | ||
"description": "MQTT client in Typescript", | ||
@@ -5,0 +5,0 @@ "main": "dist/index.js", |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
173928
152
2639