@aws-amplify/pubsub 5.0.12 → 5.0.13-push-notification-dryrun.43
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/lib/Providers/AWSAppSyncRealTimeProvider/index.d.ts +9 -8
- package/lib/Providers/AWSAppSyncRealTimeProvider/index.js +19 -14
- package/lib/Providers/AWSAppSyncRealTimeProvider/index.js.map +1 -1
- package/lib/Providers/AWSIotProvider.d.ts +1 -1
- package/lib/Providers/AWSIotProvider.js +1 -1
- package/lib/Providers/AWSIotProvider.js.map +1 -1
- package/lib/Providers/MqttOverWSProvider.d.ts +29 -12
- package/lib/Providers/MqttOverWSProvider.js +9 -10
- package/lib/Providers/MqttOverWSProvider.js.map +1 -1
- package/lib/Providers/PubSubProvider.d.ts +8 -7
- package/lib/Providers/PubSubProvider.js +0 -2
- package/lib/Providers/PubSubProvider.js.map +1 -1
- package/lib/Providers/index.d.ts +0 -1
- package/lib/Providers/index.js +0 -2
- package/lib/Providers/index.js.map +1 -1
- package/lib/PubSub.d.ts +9 -3
- package/lib/PubSub.js +4 -2
- package/lib/PubSub.js.map +1 -1
- package/lib/index.d.ts +1 -1
- package/lib/index.js +0 -1
- package/lib/index.js.map +1 -1
- package/lib/types/Provider.d.ts +7 -3
- package/lib/types/PubSub.d.ts +3 -0
- package/lib/types/PubSub.js +0 -2
- package/lib/types/PubSub.js.map +1 -1
- package/lib/types/index.d.ts +1 -1
- package/lib/types/index.js +3 -2
- package/lib/types/index.js.map +1 -1
- package/lib/utils/ConnectionStateMonitor.js.map +1 -1
- package/lib-esm/Providers/AWSAppSyncRealTimeProvider/index.d.ts +9 -8
- package/lib-esm/Providers/AWSAppSyncRealTimeProvider/index.js +20 -15
- package/lib-esm/Providers/AWSAppSyncRealTimeProvider/index.js.map +1 -1
- package/lib-esm/Providers/AWSIotProvider.d.ts +1 -1
- package/lib-esm/Providers/AWSIotProvider.js +1 -1
- package/lib-esm/Providers/AWSIotProvider.js.map +1 -1
- package/lib-esm/Providers/MqttOverWSProvider.d.ts +29 -12
- package/lib-esm/Providers/MqttOverWSProvider.js +10 -11
- package/lib-esm/Providers/MqttOverWSProvider.js.map +1 -1
- package/lib-esm/Providers/PubSubProvider.d.ts +8 -7
- package/lib-esm/Providers/PubSubProvider.js +0 -2
- package/lib-esm/Providers/PubSubProvider.js.map +1 -1
- package/lib-esm/Providers/index.d.ts +0 -1
- package/lib-esm/Providers/index.js +0 -1
- package/lib-esm/Providers/index.js.map +1 -1
- package/lib-esm/PubSub.d.ts +9 -3
- package/lib-esm/PubSub.js +4 -2
- package/lib-esm/PubSub.js.map +1 -1
- package/lib-esm/index.d.ts +1 -1
- package/lib-esm/index.js +1 -1
- package/lib-esm/index.js.map +1 -1
- package/lib-esm/types/Provider.d.ts +7 -3
- package/lib-esm/types/PubSub.d.ts +3 -0
- package/lib-esm/types/PubSub.js +0 -2
- package/lib-esm/types/PubSub.js.map +1 -1
- package/lib-esm/types/index.d.ts +1 -1
- package/lib-esm/types/index.js +1 -1
- package/lib-esm/types/index.js.map +1 -1
- package/lib-esm/utils/ConnectionStateMonitor.js.map +1 -1
- package/package.json +9 -9
- package/src/Providers/AWSAppSyncRealTimeProvider/index.ts +79 -29
- package/src/Providers/AWSIotProvider.ts +2 -2
- package/src/Providers/MqttOverWSProvider.ts +67 -31
- package/src/Providers/PubSubProvider.ts +13 -10
- package/src/Providers/index.ts +0 -1
- package/src/PubSub.ts +16 -8
- package/src/index.ts +0 -1
- package/src/types/Provider.ts +11 -3
- package/src/types/PubSub.ts +5 -0
- package/src/types/index.ts +1 -1
- package/src/utils/ConnectionStateMonitor.ts +0 -1
- package/CHANGELOG.md +0 -1269
- package/lib/Providers/AWSAppSyncProvider.d.ts +0 -21
- package/lib/Providers/AWSAppSyncProvider.js +0 -210
- package/lib/Providers/AWSAppSyncProvider.js.map +0 -1
- package/lib-esm/Providers/AWSAppSyncProvider.d.ts +0 -21
- package/lib-esm/Providers/AWSAppSyncProvider.js +0 -208
- package/lib-esm/Providers/AWSAppSyncProvider.js.map +0 -1
- package/src/Providers/AWSAppSyncProvider.ts +0 -194
|
@@ -1,194 +0,0 @@
|
|
|
1
|
-
// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
2
|
-
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
-
import { Client } from 'paho-mqtt';
|
|
4
|
-
import Observable from 'zen-observable-ts';
|
|
5
|
-
import { ConsoleLogger as Logger } from '@aws-amplify/core';
|
|
6
|
-
|
|
7
|
-
import { MqttOverWSProvider } from './MqttOverWSProvider';
|
|
8
|
-
|
|
9
|
-
const logger = new Logger('AWSAppSyncProvider');
|
|
10
|
-
|
|
11
|
-
/**
|
|
12
|
-
* @deprecated Unused, all usecases have migrated to AWSAppSyncRealtimeProvider
|
|
13
|
-
*/
|
|
14
|
-
export class AWSAppSyncProvider extends MqttOverWSProvider {
|
|
15
|
-
protected get endpoint() {
|
|
16
|
-
throw new Error('Not supported');
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
getProviderName() {
|
|
20
|
-
return 'AWSAppSyncProvider';
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
public async publish(topics: string[] | string, msg: any, options?: any) {
|
|
24
|
-
throw new Error('Operation not supported');
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
private _cleanUp(clientId: string) {
|
|
28
|
-
const topicsForClient = Array.from(this._topicClient.entries())
|
|
29
|
-
.filter(([, c]) => c.clientId === clientId)
|
|
30
|
-
.map(([t]) => t);
|
|
31
|
-
|
|
32
|
-
topicsForClient.forEach(t => this._cleanUpForTopic(t));
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
private _cleanUpForTopic(topic) {
|
|
36
|
-
this._topicClient.delete(topic);
|
|
37
|
-
this._topicAlias.delete(topic);
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
public onDisconnect({ clientId, errorCode, ...args }) {
|
|
41
|
-
if (errorCode !== 0) {
|
|
42
|
-
const topicsForClient = Array.from(this._topicClient.entries())
|
|
43
|
-
.filter(([, c]) => c.clientId === clientId)
|
|
44
|
-
.map(([t]) => t);
|
|
45
|
-
|
|
46
|
-
topicsForClient.forEach(topic => {
|
|
47
|
-
if (this._topicObservers.has(topic)) {
|
|
48
|
-
this._topicObservers.get(topic).forEach(obs => {
|
|
49
|
-
if (!obs.closed) {
|
|
50
|
-
obs.error(args);
|
|
51
|
-
}
|
|
52
|
-
});
|
|
53
|
-
|
|
54
|
-
this._topicObservers.delete(topic);
|
|
55
|
-
}
|
|
56
|
-
});
|
|
57
|
-
|
|
58
|
-
this._cleanUp(clientId);
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
private _topicClient: Map<string, Client> = new Map();
|
|
63
|
-
|
|
64
|
-
private _topicAlias: Map<string, string> = new Map();
|
|
65
|
-
|
|
66
|
-
protected async disconnect(clientId: string): Promise<void> {
|
|
67
|
-
const client = await this.clientsQueue.get(clientId, () => null);
|
|
68
|
-
|
|
69
|
-
await super.disconnect(clientId);
|
|
70
|
-
|
|
71
|
-
this._cleanUp(clientId);
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
subscribe(topics: string[] | string, options: any = {}): Observable<any> {
|
|
75
|
-
const result = new Observable<any>(observer => {
|
|
76
|
-
const targetTopics = ([] as string[]).concat(topics);
|
|
77
|
-
logger.debug('Subscribing to topic(s)', targetTopics.join(','));
|
|
78
|
-
|
|
79
|
-
(async () => {
|
|
80
|
-
// Add these topics to map
|
|
81
|
-
targetTopics.forEach(t => {
|
|
82
|
-
if (!this._topicObservers.has(t)) {
|
|
83
|
-
this._topicObservers.set(t, new Set());
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
this._topicObservers.get(t).add(observer);
|
|
87
|
-
});
|
|
88
|
-
|
|
89
|
-
const { mqttConnections = [], newSubscriptions } = options;
|
|
90
|
-
|
|
91
|
-
// creates a map of {"topic": "alias"}
|
|
92
|
-
const newAliases = Object.entries(newSubscriptions).map(
|
|
93
|
-
([alias, v]: [string, { topic: string }]) => [v.topic, alias]
|
|
94
|
-
);
|
|
95
|
-
|
|
96
|
-
// Merge new aliases with old ones
|
|
97
|
-
this._topicAlias = new Map([
|
|
98
|
-
...Array.from(this._topicAlias.entries()),
|
|
99
|
-
...(newAliases as [string, string][]),
|
|
100
|
-
]);
|
|
101
|
-
|
|
102
|
-
// group by urls
|
|
103
|
-
const map: [string, { url: string; topics: Set<string> }][] =
|
|
104
|
-
Object.entries(
|
|
105
|
-
targetTopics.reduce((acc, elem) => {
|
|
106
|
-
const connectionInfoForTopic = mqttConnections.find(
|
|
107
|
-
c => c.topics.indexOf(elem) > -1
|
|
108
|
-
);
|
|
109
|
-
|
|
110
|
-
if (connectionInfoForTopic) {
|
|
111
|
-
const { client: clientId, url } = connectionInfoForTopic;
|
|
112
|
-
|
|
113
|
-
if (!acc[clientId]) {
|
|
114
|
-
acc[clientId] = {
|
|
115
|
-
url,
|
|
116
|
-
topics: new Set(),
|
|
117
|
-
};
|
|
118
|
-
}
|
|
119
|
-
|
|
120
|
-
acc[clientId].topics.add(elem);
|
|
121
|
-
}
|
|
122
|
-
|
|
123
|
-
return acc;
|
|
124
|
-
}, {})
|
|
125
|
-
);
|
|
126
|
-
|
|
127
|
-
// reconnect everything we have in the map
|
|
128
|
-
await Promise.all(
|
|
129
|
-
map.map(async ([clientId, { url, topics }]) => {
|
|
130
|
-
// connect to new client
|
|
131
|
-
let client = null;
|
|
132
|
-
try {
|
|
133
|
-
client = await this.connect(clientId, {
|
|
134
|
-
clientId,
|
|
135
|
-
url,
|
|
136
|
-
});
|
|
137
|
-
} catch (err) {
|
|
138
|
-
observer.error({ message: 'Failed to connect', error: err });
|
|
139
|
-
observer.complete();
|
|
140
|
-
return undefined;
|
|
141
|
-
}
|
|
142
|
-
|
|
143
|
-
// subscribe to all topics for this client
|
|
144
|
-
// store topic-client mapping
|
|
145
|
-
topics.forEach(topic => {
|
|
146
|
-
if (client.isConnected()) {
|
|
147
|
-
client.subscribe(topic);
|
|
148
|
-
|
|
149
|
-
this._topicClient.set(topic, client);
|
|
150
|
-
}
|
|
151
|
-
});
|
|
152
|
-
|
|
153
|
-
return client;
|
|
154
|
-
})
|
|
155
|
-
);
|
|
156
|
-
})();
|
|
157
|
-
|
|
158
|
-
return () => {
|
|
159
|
-
logger.debug('Unsubscribing from topic(s)', targetTopics.join(','));
|
|
160
|
-
|
|
161
|
-
targetTopics.forEach(t => {
|
|
162
|
-
const client = this._topicClient.get(t);
|
|
163
|
-
|
|
164
|
-
if (client && client.isConnected()) {
|
|
165
|
-
client.unsubscribe(t);
|
|
166
|
-
this._topicClient.delete(t);
|
|
167
|
-
|
|
168
|
-
if (
|
|
169
|
-
!Array.from(this._topicClient.values()).some(c => c === client)
|
|
170
|
-
) {
|
|
171
|
-
this.disconnect(client.clientId);
|
|
172
|
-
}
|
|
173
|
-
}
|
|
174
|
-
|
|
175
|
-
this._topicObservers.delete(t);
|
|
176
|
-
});
|
|
177
|
-
};
|
|
178
|
-
});
|
|
179
|
-
|
|
180
|
-
return Observable.from(result).map(value => {
|
|
181
|
-
const topic = this.getTopicForValue(value);
|
|
182
|
-
const alias = this._topicAlias.get(topic);
|
|
183
|
-
|
|
184
|
-
value.data = Object.entries(value.data).reduce(
|
|
185
|
-
(obj, [origKey, val]) => (
|
|
186
|
-
(obj[(alias || origKey) as string] = val), obj
|
|
187
|
-
),
|
|
188
|
-
{}
|
|
189
|
-
);
|
|
190
|
-
|
|
191
|
-
return value;
|
|
192
|
-
});
|
|
193
|
-
}
|
|
194
|
-
}
|