@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.
- package/dist/cjs/Providers/AWSIot.js +2 -2
- package/dist/cjs/Providers/AWSIot.js.map +1 -1
- package/dist/cjs/Providers/MqttOverWS.js +30 -19
- package/dist/cjs/Providers/MqttOverWS.js.map +1 -1
- package/dist/esm/Providers/AWSIot.d.ts +1 -1
- package/dist/esm/Providers/AWSIot.mjs +2 -2
- package/dist/esm/Providers/AWSIot.mjs.map +1 -1
- package/dist/esm/Providers/MqttOverWS.d.ts +10 -12
- package/dist/esm/Providers/MqttOverWS.mjs +25 -16
- package/dist/esm/Providers/MqttOverWS.mjs.map +1 -1
- package/dist/esm/Providers/PubSub.d.ts +1 -1
- package/dist/esm/clients/mqtt.mjs +1 -1
- package/dist/esm/types/PubSub.d.ts +6 -6
- package/dist/esm/utils/ConnectionStateMonitor.d.ts +2 -2
- package/dist/esm/utils/ConnectionStateMonitor.mjs.map +1 -1
- package/dist/esm/utils/ReachabilityMonitor/index.native.mjs.map +1 -1
- package/package.json +103 -102
- package/src/Providers/AWSIot.ts +4 -2
- package/src/Providers/MqttOverWS.ts +51 -38
- package/src/Providers/PubSub.ts +4 -2
- package/src/types/PubSub.ts +7 -6
- package/src/utils/ConnectionStateMonitor.ts +7 -3
- package/src/utils/ReachabilityMonitor/index.native.ts +1 -1
- package/src/utils/ReconnectionMonitor.ts +1 -0
|
@@ -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
|
|
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
|
|
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
|
|
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
|
|
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 ===
|
|
82
|
+
if (connectionStateChange === PubSub_1.ConnectionState.ConnectionDisrupted) {
|
|
82
83
|
this.reconnectionMonitor.record(ReconnectionMonitor_1.ReconnectEvent.START_RECONNECT);
|
|
83
84
|
}
|
|
84
|
-
else if (connectionStateChange !==
|
|
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
|
|
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-
|
|
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,
|
|
130
|
+
const connected = await new Promise((resolve, _reject) => {
|
|
128
131
|
client.connect({
|
|
129
132
|
useSSL: this.isSSLEnabled,
|
|
130
133
|
mqttVersion: 3,
|
|
131
|
-
onSuccess: () =>
|
|
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
|
|
147
|
-
const client = await this.newClient({
|
|
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 =>
|
|
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 =>
|
|
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(
|
|
241
|
-
this.reconnectionMonitor.addObserver(
|
|
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,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
|
|
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 {
|
|
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
|
|
11
|
+
onMessageArrived(params: {
|
|
12
12
|
destinationName: string;
|
|
13
13
|
payloadString: string;
|
|
14
|
-
})
|
|
15
|
-
onConnectionLost
|
|
14
|
+
}): void;
|
|
15
|
+
onConnectionLost(params: {
|
|
16
16
|
errorCode: number;
|
|
17
|
-
})
|
|
18
|
-
connect: (
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
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
|
|
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
|
|
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-
|
|
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,
|
|
123
|
+
const connected = await new Promise((resolve, _reject) => {
|
|
123
124
|
client.connect({
|
|
124
125
|
useSSL: this.isSSLEnabled,
|
|
125
126
|
mqttVersion: 3,
|
|
126
|
-
onSuccess: () =>
|
|
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
|
|
142
|
-
const client = await this.newClient({
|
|
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 =>
|
|
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 =>
|
|
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(
|
|
236
|
-
this.reconnectionMonitor.addObserver(
|
|
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,
|
|
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
|