@aws-amplify/pubsub 6.0.19 → 6.0.20-unstable.1570b12.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.
@@ -4,9 +4,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
4
4
  exports.AWSIoT = void 0;
5
5
  // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
6
6
  // SPDX-License-Identifier: Apache-2.0
7
- const MqttOverWS_1 = require("./MqttOverWS");
8
7
  const utils_1 = require("@aws-amplify/core/internals/utils");
9
8
  const core_1 = require("@aws-amplify/core");
9
+ const MqttOverWS_1 = require("./MqttOverWS");
10
10
  const SERVICE_NAME = 'iotdevicegateway';
11
11
  class AWSIoT extends MqttOverWS_1.MqttOverWS {
12
12
  constructor(options = {}) {
@@ -17,7 +17,7 @@ class AWSIoT extends MqttOverWS_1.MqttOverWS {
17
17
  }
18
18
  get endpoint() {
19
19
  return (async () => {
20
- const endpoint = this.options.endpoint;
20
+ const { endpoint } = this.options;
21
21
  const serviceInfo = {
22
22
  service: SERVICE_NAME,
23
23
  region: this.region,
@@ -1 +1 @@
1
- {"version":3,"file":"AWSIot.js","sources":["../../../src/Providers/AWSIot.ts"],"sourcesContent":["\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.AWSIoT = void 0;\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nconst MqttOverWS_1 = require(\"./MqttOverWS\");\nconst utils_1 = require(\"@aws-amplify/core/internals/utils\");\nconst core_1 = require(\"@aws-amplify/core\");\nconst SERVICE_NAME = 'iotdevicegateway';\nclass AWSIoT extends MqttOverWS_1.MqttOverWS {\n constructor(options = {}) {\n super(options);\n }\n get region() {\n return this.options?.region;\n }\n get endpoint() {\n return (async () => {\n const endpoint = this.options.endpoint;\n const serviceInfo = {\n service: SERVICE_NAME,\n region: this.region,\n };\n const session = await (0, core_1.fetchAuthSession)();\n if (!session.credentials) {\n throw new Error('No auth session credentials');\n }\n const { accessKeyId: access_key, secretAccessKey: secret_key, sessionToken: session_token, } = session.credentials;\n const result = utils_1.Signer.signUrl(endpoint, { access_key, secret_key, session_token }, serviceInfo);\n return result;\n })();\n }\n}\nexports.AWSIoT = AWSIoT;\n"],"names":[],"mappings":";;AACA,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,YAAY,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;AAC9D,OAAO,CAAC,MAAM,GAAG,KAAK,CAAC,CAAC;AACxB;AACA;AACA,MAAM,YAAY,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;AAC7C,MAAM,OAAO,GAAG,OAAO,CAAC,mCAAmC,CAAC,CAAC;AAC7D,MAAM,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAAC;AAC5C,MAAM,YAAY,GAAG,kBAAkB,CAAC;AACxC,MAAM,MAAM,SAAS,YAAY,CAAC,UAAU,CAAC;AAC7C,IAAI,WAAW,CAAC,OAAO,GAAG,EAAE,EAAE;AAC9B,QAAQ,KAAK,CAAC,OAAO,CAAC,CAAC;AACvB,KAAK;AACL,IAAI,IAAI,MAAM,GAAG;AACjB,QAAQ,OAAO,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC;AACpC,KAAK;AACL,IAAI,IAAI,QAAQ,GAAG;AACnB,QAAQ,OAAO,CAAC,YAAY;AAC5B,YAAY,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC;AACnD,YAAY,MAAM,WAAW,GAAG;AAChC,gBAAgB,OAAO,EAAE,YAAY;AACrC,gBAAgB,MAAM,EAAE,IAAI,CAAC,MAAM;AACnC,aAAa,CAAC;AACd,YAAY,MAAM,OAAO,GAAG,MAAM,IAAI,MAAM,CAAC,gBAAgB,GAAG,CAAC;AACjE,YAAY,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE;AACtC,gBAAgB,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;AAC/D,aAAa;AACb,YAAY,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,eAAe,EAAE,UAAU,EAAE,YAAY,EAAE,aAAa,GAAG,GAAG,OAAO,CAAC,WAAW,CAAC;AAC/H,YAAY,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,UAAU,EAAE,UAAU,EAAE,aAAa,EAAE,EAAE,WAAW,CAAC,CAAC;AACpH,YAAY,OAAO,MAAM,CAAC;AAC1B,SAAS,GAAG,CAAC;AACb,KAAK;AACL,CAAC;AACD,OAAO,CAAC,MAAM,GAAG,MAAM;;"}
1
+ {"version":3,"file":"AWSIot.js","sources":["../../../src/Providers/AWSIot.ts"],"sourcesContent":["\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.AWSIoT = void 0;\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nconst utils_1 = require(\"@aws-amplify/core/internals/utils\");\nconst core_1 = require(\"@aws-amplify/core\");\nconst MqttOverWS_1 = require(\"./MqttOverWS\");\nconst SERVICE_NAME = 'iotdevicegateway';\nclass AWSIoT extends MqttOverWS_1.MqttOverWS {\n constructor(options = {}) {\n super(options);\n }\n get region() {\n return this.options?.region;\n }\n get endpoint() {\n return (async () => {\n const { endpoint } = this.options;\n const serviceInfo = {\n service: SERVICE_NAME,\n region: this.region,\n };\n const session = await (0, core_1.fetchAuthSession)();\n if (!session.credentials) {\n throw new Error('No auth session credentials');\n }\n const { accessKeyId: access_key, secretAccessKey: secret_key, sessionToken: session_token, } = session.credentials;\n const result = utils_1.Signer.signUrl(endpoint, { access_key, secret_key, session_token }, serviceInfo);\n return result;\n })();\n }\n}\nexports.AWSIoT = AWSIoT;\n"],"names":[],"mappings":";;AACA,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,YAAY,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;AAC9D,OAAO,CAAC,MAAM,GAAG,KAAK,CAAC,CAAC;AACxB;AACA;AACA,MAAM,OAAO,GAAG,OAAO,CAAC,mCAAmC,CAAC,CAAC;AAC7D,MAAM,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAAC;AAC5C,MAAM,YAAY,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;AAC7C,MAAM,YAAY,GAAG,kBAAkB,CAAC;AACxC,MAAM,MAAM,SAAS,YAAY,CAAC,UAAU,CAAC;AAC7C,IAAI,WAAW,CAAC,OAAO,GAAG,EAAE,EAAE;AAC9B,QAAQ,KAAK,CAAC,OAAO,CAAC,CAAC;AACvB,KAAK;AACL,IAAI,IAAI,MAAM,GAAG;AACjB,QAAQ,OAAO,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC;AACpC,KAAK;AACL,IAAI,IAAI,QAAQ,GAAG;AACnB,QAAQ,OAAO,CAAC,YAAY;AAC5B,YAAY,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC;AAC9C,YAAY,MAAM,WAAW,GAAG;AAChC,gBAAgB,OAAO,EAAE,YAAY;AACrC,gBAAgB,MAAM,EAAE,IAAI,CAAC,MAAM;AACnC,aAAa,CAAC;AACd,YAAY,MAAM,OAAO,GAAG,MAAM,IAAI,MAAM,CAAC,gBAAgB,GAAG,CAAC;AACjE,YAAY,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE;AACtC,gBAAgB,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;AAC/D,aAAa;AACb,YAAY,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,eAAe,EAAE,UAAU,EAAE,YAAY,EAAE,aAAa,GAAG,GAAG,OAAO,CAAC,WAAW,CAAC;AAC/H,YAAY,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,UAAU,EAAE,UAAU,EAAE,aAAa,EAAE,EAAE,WAAW,CAAC,CAAC;AACpH,YAAY,OAAO,MAAM,CAAC;AAC1B,SAAS,GAAG,CAAC;AACb,KAAK;AACL,CAAC;AACD,OAAO,CAAC,MAAM,GAAG,MAAM;;"}
@@ -5,20 +5,21 @@
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.MqttOverWS = exports.mqttTopicMatch = void 0;
7
7
  const tslib_1 = require("tslib");
8
- // @ts-ignore
9
- const Paho = tslib_1.__importStar(require("../vendor/paho-mqtt.js"));
10
8
  const rxjs_1 = require("rxjs");
11
- const PubSub_1 = require("./PubSub");
12
- const PubSub_2 = require("../types/PubSub");
13
9
  const core_1 = require("@aws-amplify/core");
14
10
  const utils_1 = require("@aws-amplify/core/internals/utils");
11
+ const PubSub_1 = require("../types/PubSub");
12
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
13
+ // @ts-ignore this module is expected to not have declaration file
14
+ const Paho = tslib_1.__importStar(require("../vendor/paho-mqtt.js"));
15
15
  const ConnectionStateMonitor_1 = require("../utils/ConnectionStateMonitor");
16
16
  const ReconnectionMonitor_1 = require("../utils/ReconnectionMonitor");
17
+ const PubSub_2 = require("./PubSub");
17
18
  const constants_1 = require("./constants");
18
19
  const logger = new core_1.ConsoleLogger('MqttOverWS');
19
20
  function mqttTopicMatch(filter, topic) {
20
21
  const filterArray = filter.split('/');
21
- const length = filterArray.length;
22
+ const { length } = filterArray;
22
23
  const topicArray = topic.split('/');
23
24
  for (let i = 0; i < length; ++i) {
24
25
  const left = filterArray[i];
@@ -58,7 +59,7 @@ const dispatchPubSubEvent = (payload) => {
58
59
  core_1.Hub.dispatch('pubsub', payload, 'PubSub', constants_1.AMPLIFY_SYMBOL);
59
60
  };
60
61
  const topicSymbol = typeof Symbol !== 'undefined' ? Symbol('topic') : '@@topic';
61
- class MqttOverWS extends PubSub_1.AbstractPubSub {
62
+ class MqttOverWS extends PubSub_2.AbstractPubSub {
62
63
  constructor(options = {}) {
63
64
  super({ ...options, clientId: options.clientId || (0, utils_1.amplifyUuid)() });
64
65
  this._clientsQueue = new ClientsQueue();
@@ -78,10 +79,10 @@ class MqttOverWS extends PubSub_1.AbstractPubSub {
78
79
  });
79
80
  this.connectionState = connectionStateChange;
80
81
  // Trigger reconnection when the connection is disrupted
81
- if (connectionStateChange === PubSub_2.ConnectionState.ConnectionDisrupted) {
82
+ if (connectionStateChange === PubSub_1.ConnectionState.ConnectionDisrupted) {
82
83
  this.reconnectionMonitor.record(ReconnectionMonitor_1.ReconnectEvent.START_RECONNECT);
83
84
  }
84
- else if (connectionStateChange !== PubSub_2.ConnectionState.Connecting) {
85
+ else if (connectionStateChange !== PubSub_1.ConnectionState.Connecting) {
85
86
  // Trigger connected to halt reconnection attempts
86
87
  this.reconnectionMonitor.record(ReconnectionMonitor_1.ReconnectEvent.HALT_RECONNECT);
87
88
  }
@@ -97,7 +98,8 @@ class MqttOverWS extends PubSub_1.AbstractPubSub {
97
98
  return this._clientsQueue;
98
99
  }
99
100
  get isSSLEnabled() {
100
- return !this.options['aws_appsync_dangerously_connect_to_http_endpoint_for_testing'];
101
+ return !this.options
102
+ .aws_appsync_dangerously_connect_to_http_endpoint_for_testing;
101
103
  }
102
104
  onDisconnect({ clientId, errorCode, ...args }) {
103
105
  if (errorCode !== 0) {
@@ -115,7 +117,8 @@ class MqttOverWS extends PubSub_1.AbstractPubSub {
115
117
  async newClient({ url, clientId }) {
116
118
  logger.debug('Creating new MQTT client', clientId);
117
119
  this.connectionStateMonitor.record(ConnectionStateMonitor_1.CONNECTION_CHANGE.OPENING_CONNECTION);
118
- // @ts-ignore
120
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
121
+ // @ts-ignore this module is expected to not have declaration file
119
122
  const client = new Paho.Client(url, clientId);
120
123
  client.onMessageArrived = ({ destinationName: topic, payloadString: msg, }) => {
121
124
  this._onMessage(topic, msg);
@@ -124,11 +127,13 @@ class MqttOverWS extends PubSub_1.AbstractPubSub {
124
127
  this.onDisconnect({ clientId, errorCode, ...args });
125
128
  this.connectionStateMonitor.record(ConnectionStateMonitor_1.CONNECTION_CHANGE.CLOSED);
126
129
  };
127
- const connected = await new Promise((resolve, reject) => {
130
+ const connected = await new Promise((resolve, _reject) => {
128
131
  client.connect({
129
132
  useSSL: this.isSSLEnabled,
130
133
  mqttVersion: 3,
131
- onSuccess: () => resolve(true),
134
+ onSuccess: () => {
135
+ resolve(true);
136
+ },
132
137
  onFailure: () => {
133
138
  if (clientId)
134
139
  this._clientsQueue.remove(clientId);
@@ -143,8 +148,11 @@ class MqttOverWS extends PubSub_1.AbstractPubSub {
143
148
  return client;
144
149
  }
145
150
  async connect(clientId, options = {}) {
146
- return await this.clientsQueue.get(clientId, async (clientId) => {
147
- const client = await this.newClient({ ...options, clientId });
151
+ return this.clientsQueue.get(clientId, async (inputClientId) => {
152
+ const client = await this.newClient({
153
+ ...options,
154
+ clientId: inputClientId,
155
+ });
148
156
  if (client) {
149
157
  // Once connected, subscribe to all topics registered observers
150
158
  this._topicObservers.forEach((_value, key) => {
@@ -168,7 +176,9 @@ class MqttOverWS extends PubSub_1.AbstractPubSub {
168
176
  const client = await this.clientsQueue.get(this.clientId);
169
177
  if (client) {
170
178
  logger.debug('Publishing to topic(s)', targetTopics.join(','), message);
171
- targetTopics.forEach(topic => client.send(topic, msg));
179
+ targetTopics.forEach(topic => {
180
+ client.send(topic, msg);
181
+ });
172
182
  }
173
183
  else {
174
184
  logger.debug('Publishing to topic(s) failed', targetTopics.join(','), message);
@@ -184,11 +194,12 @@ class MqttOverWS extends PubSub_1.AbstractPubSub {
184
194
  });
185
195
  const parsedMessage = JSON.parse(msg);
186
196
  if (typeof parsedMessage === 'object') {
187
- // @ts-ignore
188
197
  parsedMessage[topicSymbol] = topic;
189
198
  }
190
199
  matchedTopicObservers.forEach(observersForTopic => {
191
- observersForTopic.forEach(observer => observer.next(parsedMessage));
200
+ observersForTopic.forEach(observer => {
201
+ observer.next(parsedMessage);
202
+ });
192
203
  });
193
204
  }
194
205
  catch (error) {
@@ -237,8 +248,8 @@ class MqttOverWS extends PubSub_1.AbstractPubSub {
237
248
  // Establish the initial connection
238
249
  await getClient();
239
250
  // Add an observable to the reconnection list to manage reconnection for this subscription
240
- reconnectSubscription = new rxjs_1.Observable(observer => {
241
- this.reconnectionMonitor.addObserver(observer);
251
+ reconnectSubscription = new rxjs_1.Observable(reconnectSubscriptionObserver => {
252
+ this.reconnectionMonitor.addObserver(reconnectSubscriptionObserver);
242
253
  }).subscribe(() => {
243
254
  getClient();
244
255
  });
@@ -1 +1 @@
1
- {"version":3,"file":"MqttOverWS.js","sources":["../../../src/Providers/MqttOverWS.ts"],"sourcesContent":["\"use strict\";\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.MqttOverWS = exports.mqttTopicMatch = void 0;\nconst tslib_1 = require(\"tslib\");\n// @ts-ignore\nconst Paho = tslib_1.__importStar(require(\"../vendor/paho-mqtt.js\"));\nconst rxjs_1 = require(\"rxjs\");\nconst PubSub_1 = require(\"./PubSub\");\nconst PubSub_2 = require(\"../types/PubSub\");\nconst core_1 = require(\"@aws-amplify/core\");\nconst utils_1 = require(\"@aws-amplify/core/internals/utils\");\nconst ConnectionStateMonitor_1 = require(\"../utils/ConnectionStateMonitor\");\nconst ReconnectionMonitor_1 = require(\"../utils/ReconnectionMonitor\");\nconst constants_1 = require(\"./constants\");\nconst logger = new core_1.ConsoleLogger('MqttOverWS');\nfunction mqttTopicMatch(filter, topic) {\n const filterArray = filter.split('/');\n const length = filterArray.length;\n const topicArray = topic.split('/');\n for (let i = 0; i < length; ++i) {\n const left = filterArray[i];\n const right = topicArray[i];\n if (left === '#')\n return topicArray.length >= length;\n if (left !== '+' && left !== right)\n return false;\n }\n return length === topicArray.length;\n}\nexports.mqttTopicMatch = mqttTopicMatch;\nclass ClientsQueue {\n constructor() {\n this.promises = new Map();\n }\n async get(clientId, clientFactory) {\n const cachedPromise = this.promises.get(clientId);\n if (cachedPromise)\n return cachedPromise;\n if (clientFactory) {\n const newPromise = clientFactory(clientId);\n this.promises.set(clientId, newPromise);\n newPromise.catch(() => this.promises.delete(clientId));\n return newPromise;\n }\n return undefined;\n }\n get allClients() {\n return Array.from(this.promises.keys());\n }\n remove(clientId) {\n this.promises.delete(clientId);\n }\n}\nconst dispatchPubSubEvent = (payload) => {\n core_1.Hub.dispatch('pubsub', payload, 'PubSub', constants_1.AMPLIFY_SYMBOL);\n};\nconst topicSymbol = typeof Symbol !== 'undefined' ? Symbol('topic') : '@@topic';\nclass MqttOverWS extends PubSub_1.AbstractPubSub {\n constructor(options = {}) {\n super({ ...options, clientId: options.clientId || (0, utils_1.amplifyUuid)() });\n this._clientsQueue = new ClientsQueue();\n this.connectionStateMonitor = new ConnectionStateMonitor_1.ConnectionStateMonitor();\n this.reconnectionMonitor = new ReconnectionMonitor_1.ReconnectionMonitor();\n this._topicObservers = new Map();\n this._clientIdObservers = new Map();\n // Monitor the connection health state and pass changes along to Hub\n this.connectionStateMonitor.connectionStateObservable.subscribe(connectionStateChange => {\n dispatchPubSubEvent({\n event: constants_1.CONNECTION_STATE_CHANGE,\n data: {\n provider: this,\n connectionState: connectionStateChange,\n },\n message: `Connection state is ${connectionStateChange}`,\n });\n this.connectionState = connectionStateChange;\n // Trigger reconnection when the connection is disrupted\n if (connectionStateChange === PubSub_2.ConnectionState.ConnectionDisrupted) {\n this.reconnectionMonitor.record(ReconnectionMonitor_1.ReconnectEvent.START_RECONNECT);\n }\n else if (connectionStateChange !== PubSub_2.ConnectionState.Connecting) {\n // Trigger connected to halt reconnection attempts\n this.reconnectionMonitor.record(ReconnectionMonitor_1.ReconnectEvent.HALT_RECONNECT);\n }\n });\n }\n get clientId() {\n return this.options.clientId;\n }\n get endpoint() {\n return Promise.resolve(this.options.endpoint);\n }\n get clientsQueue() {\n return this._clientsQueue;\n }\n get isSSLEnabled() {\n return !this.options['aws_appsync_dangerously_connect_to_http_endpoint_for_testing'];\n }\n onDisconnect({ clientId, errorCode, ...args }) {\n if (errorCode !== 0) {\n logger.warn(clientId, JSON.stringify({ errorCode, ...args }, null, 2));\n if (!clientId) {\n return;\n }\n const clientIdObservers = this._clientIdObservers.get(clientId);\n if (!clientIdObservers) {\n return;\n }\n this.disconnect(clientId);\n }\n }\n async newClient({ url, clientId }) {\n logger.debug('Creating new MQTT client', clientId);\n this.connectionStateMonitor.record(ConnectionStateMonitor_1.CONNECTION_CHANGE.OPENING_CONNECTION);\n // @ts-ignore\n const client = new Paho.Client(url, clientId);\n client.onMessageArrived = ({ destinationName: topic, payloadString: msg, }) => {\n this._onMessage(topic, msg);\n };\n client.onConnectionLost = ({ errorCode, ...args }) => {\n this.onDisconnect({ clientId, errorCode, ...args });\n this.connectionStateMonitor.record(ConnectionStateMonitor_1.CONNECTION_CHANGE.CLOSED);\n };\n const connected = await new Promise((resolve, reject) => {\n client.connect({\n useSSL: this.isSSLEnabled,\n mqttVersion: 3,\n onSuccess: () => resolve(true),\n onFailure: () => {\n if (clientId)\n this._clientsQueue.remove(clientId);\n this.connectionStateMonitor.record(ConnectionStateMonitor_1.CONNECTION_CHANGE.CLOSED);\n resolve(false);\n },\n });\n });\n if (connected) {\n this.connectionStateMonitor.record(ConnectionStateMonitor_1.CONNECTION_CHANGE.CONNECTION_ESTABLISHED);\n }\n return client;\n }\n async connect(clientId, options = {}) {\n return await this.clientsQueue.get(clientId, async (clientId) => {\n const client = await this.newClient({ ...options, clientId });\n if (client) {\n // Once connected, subscribe to all topics registered observers\n this._topicObservers.forEach((_value, key) => {\n client.subscribe(key);\n });\n }\n return client;\n });\n }\n async disconnect(clientId) {\n const client = await this.clientsQueue.get(clientId);\n if (client && client.isConnected()) {\n client.disconnect();\n }\n this.clientsQueue.remove(clientId);\n this.connectionStateMonitor.record(ConnectionStateMonitor_1.CONNECTION_CHANGE.CLOSED);\n }\n async publish({ topics, message }) {\n const targetTopics = [].concat(topics);\n const msg = JSON.stringify(message);\n const client = await this.clientsQueue.get(this.clientId);\n if (client) {\n logger.debug('Publishing to topic(s)', targetTopics.join(','), message);\n targetTopics.forEach(topic => client.send(topic, msg));\n }\n else {\n logger.debug('Publishing to topic(s) failed', targetTopics.join(','), message);\n }\n }\n _onMessage(topic, msg) {\n try {\n const matchedTopicObservers = [];\n this._topicObservers.forEach((observerForTopic, observerTopic) => {\n if (mqttTopicMatch(observerTopic, topic)) {\n matchedTopicObservers.push(observerForTopic);\n }\n });\n const parsedMessage = JSON.parse(msg);\n if (typeof parsedMessage === 'object') {\n // @ts-ignore\n parsedMessage[topicSymbol] = topic;\n }\n matchedTopicObservers.forEach(observersForTopic => {\n observersForTopic.forEach(observer => observer.next(parsedMessage));\n });\n }\n catch (error) {\n logger.warn('Error handling message', error, msg);\n }\n }\n subscribe({ topics, options = {}, }) {\n const targetTopics = [].concat(topics);\n logger.debug('Subscribing to topic(s)', targetTopics.join(','));\n let reconnectSubscription;\n return new rxjs_1.Observable(observer => {\n targetTopics.forEach(topic => {\n // this._topicObservers is used to notify the observers according to the topic received on the message\n let observersForTopic = this._topicObservers.get(topic);\n if (!observersForTopic) {\n observersForTopic = new Set();\n this._topicObservers.set(topic, observersForTopic);\n }\n observersForTopic.add(observer);\n });\n const { clientId = this.clientId } = options;\n // this._clientIdObservers is used to close observers when client gets disconnected\n let observersForClientId = this._clientIdObservers.get(clientId);\n if (!observersForClientId) {\n observersForClientId = new Set();\n }\n if (observersForClientId) {\n observersForClientId.add(observer);\n this._clientIdObservers.set(clientId, observersForClientId);\n }\n (async () => {\n const getClient = async () => {\n try {\n const { url = await this.endpoint } = options;\n const client = await this.connect(clientId, { url });\n if (client !== undefined) {\n targetTopics.forEach(topic => {\n client.subscribe(topic);\n });\n }\n }\n catch (e) {\n logger.debug('Error forming connection', e);\n }\n };\n // Establish the initial connection\n await getClient();\n // Add an observable to the reconnection list to manage reconnection for this subscription\n reconnectSubscription = new rxjs_1.Observable(observer => {\n this.reconnectionMonitor.addObserver(observer);\n }).subscribe(() => {\n getClient();\n });\n })();\n return async () => {\n const client = await this.clientsQueue.get(clientId);\n reconnectSubscription?.unsubscribe();\n if (client) {\n this._clientIdObservers.get(clientId)?.delete(observer);\n // No more observers per client => client not needed anymore\n if (this._clientIdObservers.get(clientId)?.size === 0) {\n this.disconnect(clientId);\n this.connectionStateMonitor.record(ConnectionStateMonitor_1.CONNECTION_CHANGE.CLOSING_CONNECTION);\n this._clientIdObservers.delete(clientId);\n }\n targetTopics.forEach(topic => {\n const observersForTopic = this._topicObservers.get(topic) ||\n new Set();\n observersForTopic.delete(observer);\n // if no observers exists for the topic, topic should be removed\n if (observersForTopic.size === 0) {\n this._topicObservers.delete(topic);\n if (client.isConnected()) {\n client.unsubscribe(topic);\n }\n }\n });\n }\n return null;\n };\n });\n }\n}\nexports.MqttOverWS = MqttOverWS;\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"MqttOverWS.js","sources":["../../../src/Providers/MqttOverWS.ts"],"sourcesContent":["\"use strict\";\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.MqttOverWS = exports.mqttTopicMatch = void 0;\nconst tslib_1 = require(\"tslib\");\nconst rxjs_1 = require(\"rxjs\");\nconst core_1 = require(\"@aws-amplify/core\");\nconst utils_1 = require(\"@aws-amplify/core/internals/utils\");\nconst PubSub_1 = require(\"../types/PubSub\");\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore this module is expected to not have declaration file\nconst Paho = tslib_1.__importStar(require(\"../vendor/paho-mqtt.js\"));\nconst ConnectionStateMonitor_1 = require(\"../utils/ConnectionStateMonitor\");\nconst ReconnectionMonitor_1 = require(\"../utils/ReconnectionMonitor\");\nconst PubSub_2 = require(\"./PubSub\");\nconst constants_1 = require(\"./constants\");\nconst logger = new core_1.ConsoleLogger('MqttOverWS');\nfunction mqttTopicMatch(filter, topic) {\n const filterArray = filter.split('/');\n const { length } = filterArray;\n const topicArray = topic.split('/');\n for (let i = 0; i < length; ++i) {\n const left = filterArray[i];\n const right = topicArray[i];\n if (left === '#')\n return topicArray.length >= length;\n if (left !== '+' && left !== right)\n return false;\n }\n return length === topicArray.length;\n}\nexports.mqttTopicMatch = mqttTopicMatch;\nclass ClientsQueue {\n constructor() {\n this.promises = new Map();\n }\n async get(clientId, clientFactory) {\n const cachedPromise = this.promises.get(clientId);\n if (cachedPromise)\n return cachedPromise;\n if (clientFactory) {\n const newPromise = clientFactory(clientId);\n this.promises.set(clientId, newPromise);\n newPromise.catch(() => this.promises.delete(clientId));\n return newPromise;\n }\n return undefined;\n }\n get allClients() {\n return Array.from(this.promises.keys());\n }\n remove(clientId) {\n this.promises.delete(clientId);\n }\n}\nconst dispatchPubSubEvent = (payload) => {\n core_1.Hub.dispatch('pubsub', payload, 'PubSub', constants_1.AMPLIFY_SYMBOL);\n};\nconst topicSymbol = typeof Symbol !== 'undefined' ? Symbol('topic') : '@@topic';\nclass MqttOverWS extends PubSub_2.AbstractPubSub {\n constructor(options = {}) {\n super({ ...options, clientId: options.clientId || (0, utils_1.amplifyUuid)() });\n this._clientsQueue = new ClientsQueue();\n this.connectionStateMonitor = new ConnectionStateMonitor_1.ConnectionStateMonitor();\n this.reconnectionMonitor = new ReconnectionMonitor_1.ReconnectionMonitor();\n this._topicObservers = new Map();\n this._clientIdObservers = new Map();\n // Monitor the connection health state and pass changes along to Hub\n this.connectionStateMonitor.connectionStateObservable.subscribe(connectionStateChange => {\n dispatchPubSubEvent({\n event: constants_1.CONNECTION_STATE_CHANGE,\n data: {\n provider: this,\n connectionState: connectionStateChange,\n },\n message: `Connection state is ${connectionStateChange}`,\n });\n this.connectionState = connectionStateChange;\n // Trigger reconnection when the connection is disrupted\n if (connectionStateChange === PubSub_1.ConnectionState.ConnectionDisrupted) {\n this.reconnectionMonitor.record(ReconnectionMonitor_1.ReconnectEvent.START_RECONNECT);\n }\n else if (connectionStateChange !== PubSub_1.ConnectionState.Connecting) {\n // Trigger connected to halt reconnection attempts\n this.reconnectionMonitor.record(ReconnectionMonitor_1.ReconnectEvent.HALT_RECONNECT);\n }\n });\n }\n get clientId() {\n return this.options.clientId;\n }\n get endpoint() {\n return Promise.resolve(this.options.endpoint);\n }\n get clientsQueue() {\n return this._clientsQueue;\n }\n get isSSLEnabled() {\n return !this.options\n .aws_appsync_dangerously_connect_to_http_endpoint_for_testing;\n }\n onDisconnect({ clientId, errorCode, ...args }) {\n if (errorCode !== 0) {\n logger.warn(clientId, JSON.stringify({ errorCode, ...args }, null, 2));\n if (!clientId) {\n return;\n }\n const clientIdObservers = this._clientIdObservers.get(clientId);\n if (!clientIdObservers) {\n return;\n }\n this.disconnect(clientId);\n }\n }\n async newClient({ url, clientId }) {\n logger.debug('Creating new MQTT client', clientId);\n this.connectionStateMonitor.record(ConnectionStateMonitor_1.CONNECTION_CHANGE.OPENING_CONNECTION);\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore this module is expected to not have declaration file\n const client = new Paho.Client(url, clientId);\n client.onMessageArrived = ({ destinationName: topic, payloadString: msg, }) => {\n this._onMessage(topic, msg);\n };\n client.onConnectionLost = ({ errorCode, ...args }) => {\n this.onDisconnect({ clientId, errorCode, ...args });\n this.connectionStateMonitor.record(ConnectionStateMonitor_1.CONNECTION_CHANGE.CLOSED);\n };\n const connected = await new Promise((resolve, _reject) => {\n client.connect({\n useSSL: this.isSSLEnabled,\n mqttVersion: 3,\n onSuccess: () => {\n resolve(true);\n },\n onFailure: () => {\n if (clientId)\n this._clientsQueue.remove(clientId);\n this.connectionStateMonitor.record(ConnectionStateMonitor_1.CONNECTION_CHANGE.CLOSED);\n resolve(false);\n },\n });\n });\n if (connected) {\n this.connectionStateMonitor.record(ConnectionStateMonitor_1.CONNECTION_CHANGE.CONNECTION_ESTABLISHED);\n }\n return client;\n }\n async connect(clientId, options = {}) {\n return this.clientsQueue.get(clientId, async (inputClientId) => {\n const client = await this.newClient({\n ...options,\n clientId: inputClientId,\n });\n if (client) {\n // Once connected, subscribe to all topics registered observers\n this._topicObservers.forEach((_value, key) => {\n client.subscribe(key);\n });\n }\n return client;\n });\n }\n async disconnect(clientId) {\n const client = await this.clientsQueue.get(clientId);\n if (client && client.isConnected()) {\n client.disconnect();\n }\n this.clientsQueue.remove(clientId);\n this.connectionStateMonitor.record(ConnectionStateMonitor_1.CONNECTION_CHANGE.CLOSED);\n }\n async publish({ topics, message }) {\n const targetTopics = [].concat(topics);\n const msg = JSON.stringify(message);\n const client = await this.clientsQueue.get(this.clientId);\n if (client) {\n logger.debug('Publishing to topic(s)', targetTopics.join(','), message);\n targetTopics.forEach(topic => {\n client.send(topic, msg);\n });\n }\n else {\n logger.debug('Publishing to topic(s) failed', targetTopics.join(','), message);\n }\n }\n _onMessage(topic, msg) {\n try {\n const matchedTopicObservers = [];\n this._topicObservers.forEach((observerForTopic, observerTopic) => {\n if (mqttTopicMatch(observerTopic, topic)) {\n matchedTopicObservers.push(observerForTopic);\n }\n });\n const parsedMessage = JSON.parse(msg);\n if (typeof parsedMessage === 'object') {\n parsedMessage[topicSymbol] = topic;\n }\n matchedTopicObservers.forEach(observersForTopic => {\n observersForTopic.forEach(observer => {\n observer.next(parsedMessage);\n });\n });\n }\n catch (error) {\n logger.warn('Error handling message', error, msg);\n }\n }\n subscribe({ topics, options = {}, }) {\n const targetTopics = [].concat(topics);\n logger.debug('Subscribing to topic(s)', targetTopics.join(','));\n let reconnectSubscription;\n return new rxjs_1.Observable(observer => {\n targetTopics.forEach(topic => {\n // this._topicObservers is used to notify the observers according to the topic received on the message\n let observersForTopic = this._topicObservers.get(topic);\n if (!observersForTopic) {\n observersForTopic = new Set();\n this._topicObservers.set(topic, observersForTopic);\n }\n observersForTopic.add(observer);\n });\n const { clientId = this.clientId } = options;\n // this._clientIdObservers is used to close observers when client gets disconnected\n let observersForClientId = this._clientIdObservers.get(clientId);\n if (!observersForClientId) {\n observersForClientId = new Set();\n }\n if (observersForClientId) {\n observersForClientId.add(observer);\n this._clientIdObservers.set(clientId, observersForClientId);\n }\n (async () => {\n const getClient = async () => {\n try {\n const { url = await this.endpoint } = options;\n const client = await this.connect(clientId, { url });\n if (client !== undefined) {\n targetTopics.forEach(topic => {\n client.subscribe(topic);\n });\n }\n }\n catch (e) {\n logger.debug('Error forming connection', e);\n }\n };\n // Establish the initial connection\n await getClient();\n // Add an observable to the reconnection list to manage reconnection for this subscription\n reconnectSubscription = new rxjs_1.Observable(reconnectSubscriptionObserver => {\n this.reconnectionMonitor.addObserver(reconnectSubscriptionObserver);\n }).subscribe(() => {\n getClient();\n });\n })();\n return async () => {\n const client = await this.clientsQueue.get(clientId);\n reconnectSubscription?.unsubscribe();\n if (client) {\n this._clientIdObservers.get(clientId)?.delete(observer);\n // No more observers per client => client not needed anymore\n if (this._clientIdObservers.get(clientId)?.size === 0) {\n this.disconnect(clientId);\n this.connectionStateMonitor.record(ConnectionStateMonitor_1.CONNECTION_CHANGE.CLOSING_CONNECTION);\n this._clientIdObservers.delete(clientId);\n }\n targetTopics.forEach(topic => {\n const observersForTopic = this._topicObservers.get(topic) ||\n new Set();\n observersForTopic.delete(observer);\n // if no observers exists for the topic, topic should be removed\n if (observersForTopic.size === 0) {\n this._topicObservers.delete(topic);\n if (client.isConnected()) {\n client.unsubscribe(topic);\n }\n }\n });\n }\n return null;\n };\n });\n }\n}\nexports.MqttOverWS = MqttOverWS;\n"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { MqttOverWS, MqttOptions } from './MqttOverWS';
1
+ import { MqttOptions, MqttOverWS } from './MqttOverWS';
2
2
  export interface AWSIoTOptions extends MqttOptions {
3
3
  region?: string;
4
4
  endpoint?: string;
@@ -1,6 +1,6 @@
1
- import { MqttOverWS } from './MqttOverWS.mjs';
2
1
  import { Signer } from '@aws-amplify/core/internals/utils';
3
2
  import { fetchAuthSession } from '@aws-amplify/core';
3
+ import { MqttOverWS } from './MqttOverWS.mjs';
4
4
 
5
5
  // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
6
6
  // SPDX-License-Identifier: Apache-2.0
@@ -14,7 +14,7 @@ class AWSIoT extends MqttOverWS {
14
14
  }
15
15
  get endpoint() {
16
16
  return (async () => {
17
- const endpoint = this.options.endpoint;
17
+ const { endpoint } = this.options;
18
18
  const serviceInfo = {
19
19
  service: SERVICE_NAME,
20
20
  region: this.region,
@@ -1 +1 @@
1
- {"version":3,"file":"AWSIot.mjs","sources":["../../../src/Providers/AWSIot.ts"],"sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { MqttOverWS } from './MqttOverWS';\nimport { Signer } from '@aws-amplify/core/internals/utils';\nimport { fetchAuthSession } from '@aws-amplify/core';\nconst SERVICE_NAME = 'iotdevicegateway';\nexport class AWSIoT extends MqttOverWS {\n constructor(options = {}) {\n super(options);\n }\n get region() {\n return this.options?.region;\n }\n get endpoint() {\n return (async () => {\n const endpoint = this.options.endpoint;\n const serviceInfo = {\n service: SERVICE_NAME,\n region: this.region,\n };\n const session = await fetchAuthSession();\n if (!session.credentials) {\n throw new Error('No auth session credentials');\n }\n const { accessKeyId: access_key, secretAccessKey: secret_key, sessionToken: session_token, } = session.credentials;\n const result = Signer.signUrl(endpoint, { access_key, secret_key, session_token }, serviceInfo);\n return result;\n })();\n }\n}\n"],"names":[],"mappings":";;;;AAAA;AACA;AAIA,MAAM,YAAY,GAAG,kBAAkB,CAAC;AACjC,MAAM,MAAM,SAAS,UAAU,CAAC;AACvC,IAAI,WAAW,CAAC,OAAO,GAAG,EAAE,EAAE;AAC9B,QAAQ,KAAK,CAAC,OAAO,CAAC,CAAC;AACvB,KAAK;AACL,IAAI,IAAI,MAAM,GAAG;AACjB,QAAQ,OAAO,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC;AACpC,KAAK;AACL,IAAI,IAAI,QAAQ,GAAG;AACnB,QAAQ,OAAO,CAAC,YAAY;AAC5B,YAAY,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC;AACnD,YAAY,MAAM,WAAW,GAAG;AAChC,gBAAgB,OAAO,EAAE,YAAY;AACrC,gBAAgB,MAAM,EAAE,IAAI,CAAC,MAAM;AACnC,aAAa,CAAC;AACd,YAAY,MAAM,OAAO,GAAG,MAAM,gBAAgB,EAAE,CAAC;AACrD,YAAY,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE;AACtC,gBAAgB,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;AAC/D,aAAa;AACb,YAAY,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,eAAe,EAAE,UAAU,EAAE,YAAY,EAAE,aAAa,GAAG,GAAG,OAAO,CAAC,WAAW,CAAC;AAC/H,YAAY,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,UAAU,EAAE,UAAU,EAAE,aAAa,EAAE,EAAE,WAAW,CAAC,CAAC;AAC5G,YAAY,OAAO,MAAM,CAAC;AAC1B,SAAS,GAAG,CAAC;AACb,KAAK;AACL;;;;"}
1
+ {"version":3,"file":"AWSIot.mjs","sources":["../../../src/Providers/AWSIot.ts"],"sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { Signer } from '@aws-amplify/core/internals/utils';\nimport { fetchAuthSession } from '@aws-amplify/core';\nimport { MqttOverWS } from './MqttOverWS';\nconst SERVICE_NAME = 'iotdevicegateway';\nexport class AWSIoT extends MqttOverWS {\n constructor(options = {}) {\n super(options);\n }\n get region() {\n return this.options?.region;\n }\n get endpoint() {\n return (async () => {\n const { endpoint } = this.options;\n const serviceInfo = {\n service: SERVICE_NAME,\n region: this.region,\n };\n const session = await fetchAuthSession();\n if (!session.credentials) {\n throw new Error('No auth session credentials');\n }\n const { accessKeyId: access_key, secretAccessKey: secret_key, sessionToken: session_token, } = session.credentials;\n const result = Signer.signUrl(endpoint, { access_key, secret_key, session_token }, serviceInfo);\n return result;\n })();\n }\n}\n"],"names":[],"mappings":";;;;AAAA;AACA;AAIA,MAAM,YAAY,GAAG,kBAAkB,CAAC;AACjC,MAAM,MAAM,SAAS,UAAU,CAAC;AACvC,IAAI,WAAW,CAAC,OAAO,GAAG,EAAE,EAAE;AAC9B,QAAQ,KAAK,CAAC,OAAO,CAAC,CAAC;AACvB,KAAK;AACL,IAAI,IAAI,MAAM,GAAG;AACjB,QAAQ,OAAO,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC;AACpC,KAAK;AACL,IAAI,IAAI,QAAQ,GAAG;AACnB,QAAQ,OAAO,CAAC,YAAY;AAC5B,YAAY,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC;AAC9C,YAAY,MAAM,WAAW,GAAG;AAChC,gBAAgB,OAAO,EAAE,YAAY;AACrC,gBAAgB,MAAM,EAAE,IAAI,CAAC,MAAM;AACnC,aAAa,CAAC;AACd,YAAY,MAAM,OAAO,GAAG,MAAM,gBAAgB,EAAE,CAAC;AACrD,YAAY,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE;AACtC,gBAAgB,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;AAC/D,aAAa;AACb,YAAY,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,eAAe,EAAE,UAAU,EAAE,YAAY,EAAE,aAAa,GAAG,GAAG,OAAO,CAAC,WAAW,CAAC;AAC/H,YAAY,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,UAAU,EAAE,UAAU,EAAE,aAAa,EAAE,EAAE,WAAW,CAAC,CAAC;AAC5G,YAAY,OAAO,MAAM,CAAC;AAC1B,SAAS,GAAG,CAAC;AACb,KAAK;AACL;;;;"}
@@ -1,6 +1,6 @@
1
1
  import { Observable } from 'rxjs';
2
+ import { PubSubContent, PubSubContentObserver, PubSubOptions, PublishInput, SubscribeInput } from '../types/PubSub';
2
3
  import { AbstractPubSub } from './PubSub';
3
- import { PubSubContentObserver, PubSubContent, PubSubOptions, PublishInput, SubscribeInput } from '../types/PubSub';
4
4
  export declare function mqttTopicMatch(filter: string, topic: string): boolean;
5
5
  export interface MqttOptions extends PubSubOptions {
6
6
  clientId?: string;
@@ -8,20 +8,18 @@ export interface MqttOptions extends PubSubOptions {
8
8
  endpoint?: string;
9
9
  }
10
10
  interface PahoClient {
11
- onMessageArrived: (params: {
11
+ onMessageArrived(params: {
12
12
  destinationName: string;
13
13
  payloadString: string;
14
- }) => void;
15
- onConnectionLost: (params: {
14
+ }): void;
15
+ onConnectionLost(params: {
16
16
  errorCode: number;
17
- }) => void;
18
- connect: (params: {
19
- [k: string]: string | number | boolean | (() => void);
20
- }) => void;
21
- disconnect: () => void;
22
- isConnected: () => boolean;
23
- subscribe: (topic: string) => void;
24
- unsubscribe: (topic: string) => void;
17
+ }): void;
18
+ connect(params: Record<string, string | number | boolean | (() => void)>): void;
19
+ disconnect(): void;
20
+ isConnected(): boolean;
21
+ subscribe(topic: string): void;
22
+ unsubscribe(topic: string): void;
25
23
  send(topic: string, message: string): void;
26
24
  }
27
25
  declare class ClientsQueue {
@@ -1,20 +1,19 @@
1
- import * as Paho from '../vendor/paho-mqtt.js';
2
1
  import { Observable } from 'rxjs';
3
- import { AbstractPubSub } from './PubSub.mjs';
4
- import { ConnectionState } from '../types/PubSub.mjs';
5
2
  import { ConsoleLogger, Hub } from '@aws-amplify/core';
6
3
  import { amplifyUuid, AMPLIFY_SYMBOL } from '@aws-amplify/core/internals/utils';
4
+ import { ConnectionState } from '../types/PubSub.mjs';
5
+ import * as Paho from '../vendor/paho-mqtt.js';
7
6
  import { ConnectionStateMonitor, CONNECTION_CHANGE } from '../utils/ConnectionStateMonitor.mjs';
8
7
  import { ReconnectionMonitor, ReconnectEvent } from '../utils/ReconnectionMonitor.mjs';
8
+ import { AbstractPubSub } from './PubSub.mjs';
9
9
  import { CONNECTION_STATE_CHANGE } from './constants.mjs';
10
10
 
11
11
  // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
12
12
  // SPDX-License-Identifier: Apache-2.0
13
- // @ts-ignore
14
13
  const logger = new ConsoleLogger('MqttOverWS');
15
14
  function mqttTopicMatch(filter, topic) {
16
15
  const filterArray = filter.split('/');
17
- const length = filterArray.length;
16
+ const { length } = filterArray;
18
17
  const topicArray = topic.split('/');
19
18
  for (let i = 0; i < length; ++i) {
20
19
  const left = filterArray[i];
@@ -92,7 +91,8 @@ class MqttOverWS extends AbstractPubSub {
92
91
  return this._clientsQueue;
93
92
  }
94
93
  get isSSLEnabled() {
95
- return !this.options['aws_appsync_dangerously_connect_to_http_endpoint_for_testing'];
94
+ return !this.options
95
+ .aws_appsync_dangerously_connect_to_http_endpoint_for_testing;
96
96
  }
97
97
  onDisconnect({ clientId, errorCode, ...args }) {
98
98
  if (errorCode !== 0) {
@@ -110,7 +110,8 @@ class MqttOverWS extends AbstractPubSub {
110
110
  async newClient({ url, clientId }) {
111
111
  logger.debug('Creating new MQTT client', clientId);
112
112
  this.connectionStateMonitor.record(CONNECTION_CHANGE.OPENING_CONNECTION);
113
- // @ts-ignore
113
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
114
+ // @ts-ignore this module is expected to not have declaration file
114
115
  const client = new Paho.Client(url, clientId);
115
116
  client.onMessageArrived = ({ destinationName: topic, payloadString: msg, }) => {
116
117
  this._onMessage(topic, msg);
@@ -119,11 +120,13 @@ class MqttOverWS extends AbstractPubSub {
119
120
  this.onDisconnect({ clientId, errorCode, ...args });
120
121
  this.connectionStateMonitor.record(CONNECTION_CHANGE.CLOSED);
121
122
  };
122
- const connected = await new Promise((resolve, reject) => {
123
+ const connected = await new Promise((resolve, _reject) => {
123
124
  client.connect({
124
125
  useSSL: this.isSSLEnabled,
125
126
  mqttVersion: 3,
126
- onSuccess: () => resolve(true),
127
+ onSuccess: () => {
128
+ resolve(true);
129
+ },
127
130
  onFailure: () => {
128
131
  if (clientId)
129
132
  this._clientsQueue.remove(clientId);
@@ -138,8 +141,11 @@ class MqttOverWS extends AbstractPubSub {
138
141
  return client;
139
142
  }
140
143
  async connect(clientId, options = {}) {
141
- return await this.clientsQueue.get(clientId, async (clientId) => {
142
- const client = await this.newClient({ ...options, clientId });
144
+ return this.clientsQueue.get(clientId, async (inputClientId) => {
145
+ const client = await this.newClient({
146
+ ...options,
147
+ clientId: inputClientId,
148
+ });
143
149
  if (client) {
144
150
  // Once connected, subscribe to all topics registered observers
145
151
  this._topicObservers.forEach((_value, key) => {
@@ -163,7 +169,9 @@ class MqttOverWS extends AbstractPubSub {
163
169
  const client = await this.clientsQueue.get(this.clientId);
164
170
  if (client) {
165
171
  logger.debug('Publishing to topic(s)', targetTopics.join(','), message);
166
- targetTopics.forEach(topic => client.send(topic, msg));
172
+ targetTopics.forEach(topic => {
173
+ client.send(topic, msg);
174
+ });
167
175
  }
168
176
  else {
169
177
  logger.debug('Publishing to topic(s) failed', targetTopics.join(','), message);
@@ -179,11 +187,12 @@ class MqttOverWS extends AbstractPubSub {
179
187
  });
180
188
  const parsedMessage = JSON.parse(msg);
181
189
  if (typeof parsedMessage === 'object') {
182
- // @ts-ignore
183
190
  parsedMessage[topicSymbol] = topic;
184
191
  }
185
192
  matchedTopicObservers.forEach(observersForTopic => {
186
- observersForTopic.forEach(observer => observer.next(parsedMessage));
193
+ observersForTopic.forEach(observer => {
194
+ observer.next(parsedMessage);
195
+ });
187
196
  });
188
197
  }
189
198
  catch (error) {
@@ -232,8 +241,8 @@ class MqttOverWS extends AbstractPubSub {
232
241
  // Establish the initial connection
233
242
  await getClient();
234
243
  // Add an observable to the reconnection list to manage reconnection for this subscription
235
- reconnectSubscription = new Observable(observer => {
236
- this.reconnectionMonitor.addObserver(observer);
244
+ reconnectSubscription = new Observable(reconnectSubscriptionObserver => {
245
+ this.reconnectionMonitor.addObserver(reconnectSubscriptionObserver);
237
246
  }).subscribe(() => {
238
247
  getClient();
239
248
  });
@@ -1 +1 @@
1
- {"version":3,"file":"MqttOverWS.mjs","sources":["../../../src/Providers/MqttOverWS.ts"],"sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n// @ts-ignore\nimport * as Paho from '../vendor/paho-mqtt.js';\nimport { Observable } from 'rxjs';\nimport { AbstractPubSub } from './PubSub';\nimport { ConnectionState, } from '../types/PubSub';\nimport { Hub, ConsoleLogger } from '@aws-amplify/core';\nimport { amplifyUuid } from '@aws-amplify/core/internals/utils';\nimport { ConnectionStateMonitor, CONNECTION_CHANGE, } from '../utils/ConnectionStateMonitor';\nimport { ReconnectEvent, ReconnectionMonitor, } from '../utils/ReconnectionMonitor';\nimport { AMPLIFY_SYMBOL, CONNECTION_STATE_CHANGE } from './constants';\nconst logger = new ConsoleLogger('MqttOverWS');\nexport function mqttTopicMatch(filter, topic) {\n const filterArray = filter.split('/');\n const length = filterArray.length;\n const topicArray = topic.split('/');\n for (let i = 0; i < length; ++i) {\n const left = filterArray[i];\n const right = topicArray[i];\n if (left === '#')\n return topicArray.length >= length;\n if (left !== '+' && left !== right)\n return false;\n }\n return length === topicArray.length;\n}\nclass ClientsQueue {\n constructor() {\n this.promises = new Map();\n }\n async get(clientId, clientFactory) {\n const cachedPromise = this.promises.get(clientId);\n if (cachedPromise)\n return cachedPromise;\n if (clientFactory) {\n const newPromise = clientFactory(clientId);\n this.promises.set(clientId, newPromise);\n newPromise.catch(() => this.promises.delete(clientId));\n return newPromise;\n }\n return undefined;\n }\n get allClients() {\n return Array.from(this.promises.keys());\n }\n remove(clientId) {\n this.promises.delete(clientId);\n }\n}\nconst dispatchPubSubEvent = (payload) => {\n Hub.dispatch('pubsub', payload, 'PubSub', AMPLIFY_SYMBOL);\n};\nconst topicSymbol = typeof Symbol !== 'undefined' ? Symbol('topic') : '@@topic';\nexport class MqttOverWS extends AbstractPubSub {\n constructor(options = {}) {\n super({ ...options, clientId: options.clientId || amplifyUuid() });\n this._clientsQueue = new ClientsQueue();\n this.connectionStateMonitor = new ConnectionStateMonitor();\n this.reconnectionMonitor = new ReconnectionMonitor();\n this._topicObservers = new Map();\n this._clientIdObservers = new Map();\n // Monitor the connection health state and pass changes along to Hub\n this.connectionStateMonitor.connectionStateObservable.subscribe(connectionStateChange => {\n dispatchPubSubEvent({\n event: CONNECTION_STATE_CHANGE,\n data: {\n provider: this,\n connectionState: connectionStateChange,\n },\n message: `Connection state is ${connectionStateChange}`,\n });\n this.connectionState = connectionStateChange;\n // Trigger reconnection when the connection is disrupted\n if (connectionStateChange === ConnectionState.ConnectionDisrupted) {\n this.reconnectionMonitor.record(ReconnectEvent.START_RECONNECT);\n }\n else if (connectionStateChange !== ConnectionState.Connecting) {\n // Trigger connected to halt reconnection attempts\n this.reconnectionMonitor.record(ReconnectEvent.HALT_RECONNECT);\n }\n });\n }\n get clientId() {\n return this.options.clientId;\n }\n get endpoint() {\n return Promise.resolve(this.options.endpoint);\n }\n get clientsQueue() {\n return this._clientsQueue;\n }\n get isSSLEnabled() {\n return !this.options['aws_appsync_dangerously_connect_to_http_endpoint_for_testing'];\n }\n onDisconnect({ clientId, errorCode, ...args }) {\n if (errorCode !== 0) {\n logger.warn(clientId, JSON.stringify({ errorCode, ...args }, null, 2));\n if (!clientId) {\n return;\n }\n const clientIdObservers = this._clientIdObservers.get(clientId);\n if (!clientIdObservers) {\n return;\n }\n this.disconnect(clientId);\n }\n }\n async newClient({ url, clientId }) {\n logger.debug('Creating new MQTT client', clientId);\n this.connectionStateMonitor.record(CONNECTION_CHANGE.OPENING_CONNECTION);\n // @ts-ignore\n const client = new Paho.Client(url, clientId);\n client.onMessageArrived = ({ destinationName: topic, payloadString: msg, }) => {\n this._onMessage(topic, msg);\n };\n client.onConnectionLost = ({ errorCode, ...args }) => {\n this.onDisconnect({ clientId, errorCode, ...args });\n this.connectionStateMonitor.record(CONNECTION_CHANGE.CLOSED);\n };\n const connected = await new Promise((resolve, reject) => {\n client.connect({\n useSSL: this.isSSLEnabled,\n mqttVersion: 3,\n onSuccess: () => resolve(true),\n onFailure: () => {\n if (clientId)\n this._clientsQueue.remove(clientId);\n this.connectionStateMonitor.record(CONNECTION_CHANGE.CLOSED);\n resolve(false);\n },\n });\n });\n if (connected) {\n this.connectionStateMonitor.record(CONNECTION_CHANGE.CONNECTION_ESTABLISHED);\n }\n return client;\n }\n async connect(clientId, options = {}) {\n return await this.clientsQueue.get(clientId, async (clientId) => {\n const client = await this.newClient({ ...options, clientId });\n if (client) {\n // Once connected, subscribe to all topics registered observers\n this._topicObservers.forEach((_value, key) => {\n client.subscribe(key);\n });\n }\n return client;\n });\n }\n async disconnect(clientId) {\n const client = await this.clientsQueue.get(clientId);\n if (client && client.isConnected()) {\n client.disconnect();\n }\n this.clientsQueue.remove(clientId);\n this.connectionStateMonitor.record(CONNECTION_CHANGE.CLOSED);\n }\n async publish({ topics, message }) {\n const targetTopics = [].concat(topics);\n const msg = JSON.stringify(message);\n const client = await this.clientsQueue.get(this.clientId);\n if (client) {\n logger.debug('Publishing to topic(s)', targetTopics.join(','), message);\n targetTopics.forEach(topic => client.send(topic, msg));\n }\n else {\n logger.debug('Publishing to topic(s) failed', targetTopics.join(','), message);\n }\n }\n _onMessage(topic, msg) {\n try {\n const matchedTopicObservers = [];\n this._topicObservers.forEach((observerForTopic, observerTopic) => {\n if (mqttTopicMatch(observerTopic, topic)) {\n matchedTopicObservers.push(observerForTopic);\n }\n });\n const parsedMessage = JSON.parse(msg);\n if (typeof parsedMessage === 'object') {\n // @ts-ignore\n parsedMessage[topicSymbol] = topic;\n }\n matchedTopicObservers.forEach(observersForTopic => {\n observersForTopic.forEach(observer => observer.next(parsedMessage));\n });\n }\n catch (error) {\n logger.warn('Error handling message', error, msg);\n }\n }\n subscribe({ topics, options = {}, }) {\n const targetTopics = [].concat(topics);\n logger.debug('Subscribing to topic(s)', targetTopics.join(','));\n let reconnectSubscription;\n return new Observable(observer => {\n targetTopics.forEach(topic => {\n // this._topicObservers is used to notify the observers according to the topic received on the message\n let observersForTopic = this._topicObservers.get(topic);\n if (!observersForTopic) {\n observersForTopic = new Set();\n this._topicObservers.set(topic, observersForTopic);\n }\n observersForTopic.add(observer);\n });\n const { clientId = this.clientId } = options;\n // this._clientIdObservers is used to close observers when client gets disconnected\n let observersForClientId = this._clientIdObservers.get(clientId);\n if (!observersForClientId) {\n observersForClientId = new Set();\n }\n if (observersForClientId) {\n observersForClientId.add(observer);\n this._clientIdObservers.set(clientId, observersForClientId);\n }\n (async () => {\n const getClient = async () => {\n try {\n const { url = await this.endpoint } = options;\n const client = await this.connect(clientId, { url });\n if (client !== undefined) {\n targetTopics.forEach(topic => {\n client.subscribe(topic);\n });\n }\n }\n catch (e) {\n logger.debug('Error forming connection', e);\n }\n };\n // Establish the initial connection\n await getClient();\n // Add an observable to the reconnection list to manage reconnection for this subscription\n reconnectSubscription = new Observable(observer => {\n this.reconnectionMonitor.addObserver(observer);\n }).subscribe(() => {\n getClient();\n });\n })();\n return async () => {\n const client = await this.clientsQueue.get(clientId);\n reconnectSubscription?.unsubscribe();\n if (client) {\n this._clientIdObservers.get(clientId)?.delete(observer);\n // No more observers per client => client not needed anymore\n if (this._clientIdObservers.get(clientId)?.size === 0) {\n this.disconnect(clientId);\n this.connectionStateMonitor.record(CONNECTION_CHANGE.CLOSING_CONNECTION);\n this._clientIdObservers.delete(clientId);\n }\n targetTopics.forEach(topic => {\n const observersForTopic = this._topicObservers.get(topic) ||\n new Set();\n observersForTopic.delete(observer);\n // if no observers exists for the topic, topic should be removed\n if (observersForTopic.size === 0) {\n this._topicObservers.delete(topic);\n if (client.isConnected()) {\n client.unsubscribe(topic);\n }\n }\n });\n }\n return null;\n };\n });\n }\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"MqttOverWS.mjs","sources":["../../../src/Providers/MqttOverWS.ts"],"sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { Observable } from 'rxjs';\nimport { ConsoleLogger, Hub } from '@aws-amplify/core';\nimport { amplifyUuid } from '@aws-amplify/core/internals/utils';\nimport { ConnectionState, } from '../types/PubSub';\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore this module is expected to not have declaration file\nimport * as Paho from '../vendor/paho-mqtt.js';\nimport { CONNECTION_CHANGE, ConnectionStateMonitor, } from '../utils/ConnectionStateMonitor';\nimport { ReconnectEvent, ReconnectionMonitor, } from '../utils/ReconnectionMonitor';\nimport { AbstractPubSub } from './PubSub';\nimport { AMPLIFY_SYMBOL, CONNECTION_STATE_CHANGE } from './constants';\nconst logger = new ConsoleLogger('MqttOverWS');\nexport function mqttTopicMatch(filter, topic) {\n const filterArray = filter.split('/');\n const { length } = filterArray;\n const topicArray = topic.split('/');\n for (let i = 0; i < length; ++i) {\n const left = filterArray[i];\n const right = topicArray[i];\n if (left === '#')\n return topicArray.length >= length;\n if (left !== '+' && left !== right)\n return false;\n }\n return length === topicArray.length;\n}\nclass ClientsQueue {\n constructor() {\n this.promises = new Map();\n }\n async get(clientId, clientFactory) {\n const cachedPromise = this.promises.get(clientId);\n if (cachedPromise)\n return cachedPromise;\n if (clientFactory) {\n const newPromise = clientFactory(clientId);\n this.promises.set(clientId, newPromise);\n newPromise.catch(() => this.promises.delete(clientId));\n return newPromise;\n }\n return undefined;\n }\n get allClients() {\n return Array.from(this.promises.keys());\n }\n remove(clientId) {\n this.promises.delete(clientId);\n }\n}\nconst dispatchPubSubEvent = (payload) => {\n Hub.dispatch('pubsub', payload, 'PubSub', AMPLIFY_SYMBOL);\n};\nconst topicSymbol = typeof Symbol !== 'undefined' ? Symbol('topic') : '@@topic';\nexport class MqttOverWS extends AbstractPubSub {\n constructor(options = {}) {\n super({ ...options, clientId: options.clientId || amplifyUuid() });\n this._clientsQueue = new ClientsQueue();\n this.connectionStateMonitor = new ConnectionStateMonitor();\n this.reconnectionMonitor = new ReconnectionMonitor();\n this._topicObservers = new Map();\n this._clientIdObservers = new Map();\n // Monitor the connection health state and pass changes along to Hub\n this.connectionStateMonitor.connectionStateObservable.subscribe(connectionStateChange => {\n dispatchPubSubEvent({\n event: CONNECTION_STATE_CHANGE,\n data: {\n provider: this,\n connectionState: connectionStateChange,\n },\n message: `Connection state is ${connectionStateChange}`,\n });\n this.connectionState = connectionStateChange;\n // Trigger reconnection when the connection is disrupted\n if (connectionStateChange === ConnectionState.ConnectionDisrupted) {\n this.reconnectionMonitor.record(ReconnectEvent.START_RECONNECT);\n }\n else if (connectionStateChange !== ConnectionState.Connecting) {\n // Trigger connected to halt reconnection attempts\n this.reconnectionMonitor.record(ReconnectEvent.HALT_RECONNECT);\n }\n });\n }\n get clientId() {\n return this.options.clientId;\n }\n get endpoint() {\n return Promise.resolve(this.options.endpoint);\n }\n get clientsQueue() {\n return this._clientsQueue;\n }\n get isSSLEnabled() {\n return !this.options\n .aws_appsync_dangerously_connect_to_http_endpoint_for_testing;\n }\n onDisconnect({ clientId, errorCode, ...args }) {\n if (errorCode !== 0) {\n logger.warn(clientId, JSON.stringify({ errorCode, ...args }, null, 2));\n if (!clientId) {\n return;\n }\n const clientIdObservers = this._clientIdObservers.get(clientId);\n if (!clientIdObservers) {\n return;\n }\n this.disconnect(clientId);\n }\n }\n async newClient({ url, clientId }) {\n logger.debug('Creating new MQTT client', clientId);\n this.connectionStateMonitor.record(CONNECTION_CHANGE.OPENING_CONNECTION);\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore this module is expected to not have declaration file\n const client = new Paho.Client(url, clientId);\n client.onMessageArrived = ({ destinationName: topic, payloadString: msg, }) => {\n this._onMessage(topic, msg);\n };\n client.onConnectionLost = ({ errorCode, ...args }) => {\n this.onDisconnect({ clientId, errorCode, ...args });\n this.connectionStateMonitor.record(CONNECTION_CHANGE.CLOSED);\n };\n const connected = await new Promise((resolve, _reject) => {\n client.connect({\n useSSL: this.isSSLEnabled,\n mqttVersion: 3,\n onSuccess: () => {\n resolve(true);\n },\n onFailure: () => {\n if (clientId)\n this._clientsQueue.remove(clientId);\n this.connectionStateMonitor.record(CONNECTION_CHANGE.CLOSED);\n resolve(false);\n },\n });\n });\n if (connected) {\n this.connectionStateMonitor.record(CONNECTION_CHANGE.CONNECTION_ESTABLISHED);\n }\n return client;\n }\n async connect(clientId, options = {}) {\n return this.clientsQueue.get(clientId, async (inputClientId) => {\n const client = await this.newClient({\n ...options,\n clientId: inputClientId,\n });\n if (client) {\n // Once connected, subscribe to all topics registered observers\n this._topicObservers.forEach((_value, key) => {\n client.subscribe(key);\n });\n }\n return client;\n });\n }\n async disconnect(clientId) {\n const client = await this.clientsQueue.get(clientId);\n if (client && client.isConnected()) {\n client.disconnect();\n }\n this.clientsQueue.remove(clientId);\n this.connectionStateMonitor.record(CONNECTION_CHANGE.CLOSED);\n }\n async publish({ topics, message }) {\n const targetTopics = [].concat(topics);\n const msg = JSON.stringify(message);\n const client = await this.clientsQueue.get(this.clientId);\n if (client) {\n logger.debug('Publishing to topic(s)', targetTopics.join(','), message);\n targetTopics.forEach(topic => {\n client.send(topic, msg);\n });\n }\n else {\n logger.debug('Publishing to topic(s) failed', targetTopics.join(','), message);\n }\n }\n _onMessage(topic, msg) {\n try {\n const matchedTopicObservers = [];\n this._topicObservers.forEach((observerForTopic, observerTopic) => {\n if (mqttTopicMatch(observerTopic, topic)) {\n matchedTopicObservers.push(observerForTopic);\n }\n });\n const parsedMessage = JSON.parse(msg);\n if (typeof parsedMessage === 'object') {\n parsedMessage[topicSymbol] = topic;\n }\n matchedTopicObservers.forEach(observersForTopic => {\n observersForTopic.forEach(observer => {\n observer.next(parsedMessage);\n });\n });\n }\n catch (error) {\n logger.warn('Error handling message', error, msg);\n }\n }\n subscribe({ topics, options = {}, }) {\n const targetTopics = [].concat(topics);\n logger.debug('Subscribing to topic(s)', targetTopics.join(','));\n let reconnectSubscription;\n return new Observable(observer => {\n targetTopics.forEach(topic => {\n // this._topicObservers is used to notify the observers according to the topic received on the message\n let observersForTopic = this._topicObservers.get(topic);\n if (!observersForTopic) {\n observersForTopic = new Set();\n this._topicObservers.set(topic, observersForTopic);\n }\n observersForTopic.add(observer);\n });\n const { clientId = this.clientId } = options;\n // this._clientIdObservers is used to close observers when client gets disconnected\n let observersForClientId = this._clientIdObservers.get(clientId);\n if (!observersForClientId) {\n observersForClientId = new Set();\n }\n if (observersForClientId) {\n observersForClientId.add(observer);\n this._clientIdObservers.set(clientId, observersForClientId);\n }\n (async () => {\n const getClient = async () => {\n try {\n const { url = await this.endpoint } = options;\n const client = await this.connect(clientId, { url });\n if (client !== undefined) {\n targetTopics.forEach(topic => {\n client.subscribe(topic);\n });\n }\n }\n catch (e) {\n logger.debug('Error forming connection', e);\n }\n };\n // Establish the initial connection\n await getClient();\n // Add an observable to the reconnection list to manage reconnection for this subscription\n reconnectSubscription = new Observable(reconnectSubscriptionObserver => {\n this.reconnectionMonitor.addObserver(reconnectSubscriptionObserver);\n }).subscribe(() => {\n getClient();\n });\n })();\n return async () => {\n const client = await this.clientsQueue.get(clientId);\n reconnectSubscription?.unsubscribe();\n if (client) {\n this._clientIdObservers.get(clientId)?.delete(observer);\n // No more observers per client => client not needed anymore\n if (this._clientIdObservers.get(clientId)?.size === 0) {\n this.disconnect(clientId);\n this.connectionStateMonitor.record(CONNECTION_CHANGE.CLOSING_CONNECTION);\n this._clientIdObservers.delete(clientId);\n }\n targetTopics.forEach(topic => {\n const observersForTopic = this._topicObservers.get(topic) ||\n new Set();\n observersForTopic.delete(observer);\n // if no observers exists for the topic, topic should be removed\n if (observersForTopic.size === 0) {\n this._topicObservers.delete(topic);\n if (client.isConnected()) {\n client.unsubscribe(topic);\n }\n }\n });\n }\n return null;\n };\n });\n }\n}\n"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { Observable } from 'rxjs';
2
- import { PubSubBase, PubSubOptions, PubSubContent, PublishInput, SubscribeInput } from '../types/PubSub';
2
+ import { PubSubBase, PubSubContent, PubSubOptions, PublishInput, SubscribeInput } from '../types/PubSub';
3
3
  export declare abstract class AbstractPubSub<T extends PubSubOptions> implements PubSubBase {
4
4
  private _config;
5
5
  constructor(options: T);
@@ -1,5 +1,5 @@
1
1
  import '../Providers/PubSub.mjs';
2
- export { MqttOverWS as PubSub } from '../Providers/MqttOverWS.mjs';
3
2
  import '@aws-amplify/core/internals/utils';
4
3
  import '@aws-amplify/core';
4
+ export { MqttOverWS as PubSub } from '../Providers/MqttOverWS.mjs';
5
5
  //# sourceMappingURL=mqtt.mjs.map