airdcpp-apisocket 2.4.4 → 2.4.5-beta.1
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/GUIDE.md +6 -6
- package/babel.config.cjs +6 -0
- package/dist/NodeSocket.d.ts +3 -3
- package/dist/NodeSocket.js +9 -5
- package/dist/NodeSocket.js.map +1 -1
- package/dist/Promise.js +6 -6
- package/dist/Promise.js.map +1 -1
- package/dist/PublicHelpers.d.ts +1 -1
- package/dist/PublicHelpers.js +75 -168
- package/dist/PublicHelpers.js.map +1 -1
- package/dist/SocketBase.d.ts +2 -2
- package/dist/SocketBase.js +81 -97
- package/dist/SocketBase.js.map +1 -1
- package/dist/SocketLogger.d.ts +2 -2
- package/dist/SocketLogger.js +28 -38
- package/dist/SocketLogger.js.map +1 -1
- package/dist/SocketRequestHandler.d.ts +6 -6
- package/dist/SocketRequestHandler.js +55 -69
- package/dist/SocketRequestHandler.js.map +1 -1
- package/dist/SocketSubscriptionHandler.d.ts +5 -5
- package/dist/SocketSubscriptionHandler.js +55 -70
- package/dist/SocketSubscriptionHandler.js.map +1 -1
- package/dist/types/api.d.ts +3 -3
- package/dist/types/api_internal.d.ts +2 -2
- package/dist/types/index.d.ts +7 -7
- package/dist/types/index.js +12 -8
- package/dist/types/index.js.map +1 -1
- package/dist/types/options.d.ts +3 -3
- package/dist/types/public_helpers.d.ts +1 -1
- package/dist/types/public_helpers_internal.d.ts +2 -2
- package/dist/types/requests.d.ts +1 -1
- package/dist/types/socket.d.ts +7 -7
- package/dist/types/socket.js +0 -1
- package/dist/types/socket.js.map +1 -1
- package/dist/types/subscriptions.d.ts +9 -9
- package/dist/utils.d.ts +2 -2
- package/dist/utils.js +1 -1
- package/dist/utils.js.map +1 -1
- package/dist-es/NodeSocket.d.ts +3 -3
- package/dist-es/NodeSocket.js +3 -3
- package/dist-es/NodeSocket.js.map +1 -1
- package/dist-es/Promise.js +6 -6
- package/dist-es/Promise.js.map +1 -1
- package/dist-es/PublicHelpers.d.ts +1 -1
- package/dist-es/PublicHelpers.js +75 -168
- package/dist-es/PublicHelpers.js.map +1 -1
- package/dist-es/SocketBase.d.ts +2 -2
- package/dist-es/SocketBase.js +76 -92
- package/dist-es/SocketBase.js.map +1 -1
- package/dist-es/SocketLogger.d.ts +2 -2
- package/dist-es/SocketLogger.js +31 -41
- package/dist-es/SocketLogger.js.map +1 -1
- package/dist-es/SocketRequestHandler.d.ts +6 -6
- package/dist-es/SocketRequestHandler.js +51 -65
- package/dist-es/SocketRequestHandler.js.map +1 -1
- package/dist-es/SocketSubscriptionHandler.d.ts +5 -5
- package/dist-es/SocketSubscriptionHandler.js +52 -67
- package/dist-es/SocketSubscriptionHandler.js.map +1 -1
- package/dist-es/types/api.d.ts +3 -3
- package/dist-es/types/api_internal.d.ts +2 -2
- package/dist-es/types/index.d.ts +7 -7
- package/dist-es/types/index.js +7 -7
- package/dist-es/types/index.js.map +1 -1
- package/dist-es/types/options.d.ts +3 -3
- package/dist-es/types/public_helpers.d.ts +1 -1
- package/dist-es/types/public_helpers_internal.d.ts +2 -2
- package/dist-es/types/requests.d.ts +1 -1
- package/dist-es/types/socket.d.ts +7 -7
- package/dist-es/types/socket.js +0 -1
- package/dist-es/types/socket.js.map +1 -1
- package/dist-es/types/subscriptions.d.ts +9 -9
- package/dist-es/utils.d.ts +2 -2
- package/dist-es/utils.js +1 -1
- package/dist-es/utils.js.map +1 -1
- package/jest.config.js +18 -3
- package/package.json +15 -13
- package/src/NodeSocket.ts +3 -3
- package/src/PublicHelpers.ts +2 -2
- package/src/SocketBase.ts +9 -9
- package/src/SocketLogger.ts +5 -5
- package/src/SocketRequestHandler.ts +8 -8
- package/src/SocketSubscriptionHandler.ts +10 -10
- package/src/tests/Socket.test.ts +30 -22
- package/src/tests/helpers.ts +7 -6
- package/src/tests/public_helpers.test.ts +9 -8
- package/src/types/api_internal.ts +1 -1
- package/src/types/index.ts +7 -7
- package/src/types/public_helpers_internal.ts +1 -1
- package/src/types/requests.ts +1 -1
- package/src/types/socket.ts +4 -20
- package/src/types/subscriptions.ts +1 -1
- package/src/utils.ts +1 -1
- package/tsconfig.json +4 -8
- package/dist/tests/Socket.test.d.ts +0 -1
- package/dist/tests/Socket.test.js +0 -758
- package/dist/tests/Socket.test.js.map +0 -1
- package/dist/tests/helpers.d.ts +0 -57
- package/dist/tests/helpers.js +0 -178
- package/dist/tests/helpers.js.map +0 -1
- package/dist/tests/public_helpers.test.d.ts +0 -1
- package/dist/tests/public_helpers.test.js +0 -241
- package/dist/tests/public_helpers.test.js.map +0 -1
- package/dist-es/tests/Socket.test.d.ts +0 -1
- package/dist-es/tests/Socket.test.js +0 -734
- package/dist-es/tests/Socket.test.js.map +0 -1
- package/dist-es/tests/helpers.d.ts +0 -57
- package/dist-es/tests/helpers.js +0 -168
- package/dist-es/tests/helpers.js.map +0 -1
- package/dist-es/tests/public_helpers.test.d.ts +0 -1
- package/dist-es/tests/public_helpers.test.js +0 -236
- package/dist-es/tests/public_helpers.test.js.map +0 -1
@@ -1,68 +1,55 @@
|
|
1
|
-
var __assign = (this && this.__assign) || function () {
|
2
|
-
__assign = Object.assign || function(t) {
|
3
|
-
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
4
|
-
s = arguments[i];
|
5
|
-
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
6
|
-
t[p] = s[p];
|
7
|
-
}
|
8
|
-
return t;
|
9
|
-
};
|
10
|
-
return __assign.apply(this, arguments);
|
11
|
-
};
|
12
1
|
import chalk from 'chalk';
|
13
2
|
import invariant from 'invariant';
|
14
|
-
import Promise from './Promise';
|
15
|
-
import { eventIgnored } from './utils';
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
var timeoutReportInterval;
|
3
|
+
import Promise from './Promise.js';
|
4
|
+
import { eventIgnored } from './utils.js';
|
5
|
+
const SocketRequestHandler = (socket, logger, { requestTimeout = 30, ignoredRequestPaths }) => {
|
6
|
+
let callbacks = {};
|
7
|
+
let currentCallbackId = 0;
|
8
|
+
let timeoutReportInterval;
|
21
9
|
// Internal
|
22
10
|
// This creates a new callback ID for a request
|
23
|
-
|
11
|
+
const getCallbackId = () => {
|
24
12
|
if (currentCallbackId > 100000) {
|
25
13
|
currentCallbackId = 0;
|
26
14
|
}
|
27
15
|
currentCallbackId += 1;
|
28
16
|
return currentCallbackId;
|
29
17
|
};
|
30
|
-
|
18
|
+
const filterPassword = (data) => {
|
31
19
|
if (!data || !data.hasOwnProperty('password')) {
|
32
20
|
return data;
|
33
21
|
}
|
34
|
-
return
|
22
|
+
return Object.assign(Object.assign({}, data), { password: '(hidden)' });
|
35
23
|
};
|
36
|
-
|
37
|
-
if (authenticating === void 0) { authenticating = false; }
|
24
|
+
const sendRequest = (method, path, data, authenticating = false) => {
|
38
25
|
// Pre-checks
|
39
26
|
if (!authenticating && !socket().isConnected()) {
|
40
|
-
logger.warn(
|
27
|
+
logger.warn(`Attempting to send request on a non-authenticated socket: ${path}`);
|
41
28
|
return Promise.reject('Not authorized');
|
42
29
|
}
|
43
30
|
if (!socket().nativeSocket) {
|
44
|
-
logger.warn(
|
31
|
+
logger.warn(`Attempting to send request without a socket: ${path}`);
|
45
32
|
return Promise.reject('No socket');
|
46
33
|
}
|
47
|
-
|
34
|
+
const callbackId = getCallbackId();
|
48
35
|
// Reporting
|
49
36
|
invariant(path, 'Attempting socket request without a path');
|
50
|
-
|
37
|
+
const ignored = eventIgnored(path, ignoredRequestPaths);
|
51
38
|
if (!ignored) {
|
52
39
|
logger.verbose(chalk.white.bold(callbackId.toString()), method, path, data ? filterPassword(data) : '(no data)');
|
53
40
|
}
|
54
41
|
// Callback
|
55
|
-
|
42
|
+
const resolver = Promise.pending();
|
56
43
|
callbacks[callbackId] = {
|
57
44
|
time: Date.now(),
|
58
|
-
resolver
|
59
|
-
ignored
|
45
|
+
resolver,
|
46
|
+
ignored,
|
60
47
|
};
|
61
48
|
// Actual request
|
62
|
-
|
63
|
-
path
|
64
|
-
method
|
65
|
-
data
|
49
|
+
const request = {
|
50
|
+
path,
|
51
|
+
method,
|
52
|
+
data,
|
66
53
|
callback_id: callbackId,
|
67
54
|
};
|
68
55
|
socket().nativeSocket.send(JSON.stringify(request));
|
@@ -71,102 +58,101 @@ var SocketRequestHandler = function (socket, logger, _a) {
|
|
71
58
|
// Report timed out requests
|
72
59
|
// This is more about spotting backend issues, such as frozen threads and dropped responses
|
73
60
|
// The socket itself should handle actual connection issues
|
74
|
-
|
75
|
-
|
76
|
-
Object.keys(callbacks).forEach(
|
77
|
-
|
61
|
+
const reportTimeouts = () => {
|
62
|
+
const now = Date.now();
|
63
|
+
Object.keys(callbacks).forEach(callbackId => {
|
64
|
+
const request = callbacks[callbackId];
|
78
65
|
if (request.time + (requestTimeout * 1000) < now) {
|
79
|
-
logger.warn(
|
66
|
+
logger.warn(`Request ${callbackId} timed out`);
|
80
67
|
}
|
81
68
|
});
|
82
69
|
};
|
83
|
-
|
84
|
-
if (message === void 0) { message = 'Request cancelled'; }
|
70
|
+
const cancelPendingRequests = (message = 'Request cancelled') => {
|
85
71
|
Object.keys(callbacks)
|
86
|
-
.forEach(
|
87
|
-
logger.verbose(
|
88
|
-
|
72
|
+
.forEach(id => {
|
73
|
+
logger.verbose(`Canceling a pending request ${id} (${message})`);
|
74
|
+
const cb = callbacks[id];
|
89
75
|
cb.resolver.reject(message);
|
90
76
|
});
|
91
77
|
callbacks = {};
|
92
78
|
};
|
93
79
|
// Public
|
94
|
-
|
95
|
-
put:
|
80
|
+
const RequestsPublic = {
|
81
|
+
put: (path, data) => {
|
96
82
|
return sendRequest('PUT', path, data);
|
97
83
|
},
|
98
|
-
patch:
|
84
|
+
patch: (path, data) => {
|
99
85
|
return sendRequest('PATCH', path, data);
|
100
86
|
},
|
101
|
-
post:
|
87
|
+
post: (path, data) => {
|
102
88
|
return sendRequest('POST', path, data);
|
103
89
|
},
|
104
|
-
delete:
|
90
|
+
delete: (path) => {
|
105
91
|
//invariant(!data, 'No data is allowed for delete command');
|
106
92
|
return sendRequest('DELETE', path);
|
107
93
|
},
|
108
|
-
get:
|
94
|
+
get: (path) => {
|
109
95
|
//invariant(!data, 'No data is allowed for get command');
|
110
96
|
return sendRequest('GET', path);
|
111
97
|
},
|
112
|
-
getPendingRequestCount:
|
98
|
+
getPendingRequestCount: () => {
|
113
99
|
return Object.keys(callbacks).length;
|
114
100
|
},
|
115
101
|
};
|
116
102
|
Object.assign(RequestsPublic, {
|
117
103
|
reportRequestTimeouts: reportTimeouts, // internal method for testing
|
118
104
|
});
|
119
|
-
|
120
|
-
return error.field && error.code ? error.field
|
105
|
+
const formatFieldError = (error) => {
|
106
|
+
return error.field && error.code ? `${error.field} (${error.code})` : '';
|
121
107
|
};
|
122
108
|
// Shared for the socket
|
123
|
-
|
124
|
-
onSocketConnected
|
109
|
+
const RequestsInternal = {
|
110
|
+
onSocketConnected() {
|
125
111
|
timeoutReportInterval = setInterval(reportTimeouts, 30000);
|
126
112
|
},
|
127
|
-
onSocketDisconnected
|
113
|
+
onSocketDisconnected() {
|
128
114
|
// Clear callbacks
|
129
115
|
cancelPendingRequests('Socket disconnected');
|
130
116
|
clearTimeout(timeoutReportInterval);
|
131
117
|
},
|
132
|
-
handleMessage
|
133
|
-
|
118
|
+
handleMessage(messageObj) {
|
119
|
+
const id = messageObj.callback_id;
|
134
120
|
if (!callbacks.hasOwnProperty(id)) {
|
135
121
|
logger.warn('No pending request for an API response', id, messageObj);
|
136
122
|
return;
|
137
123
|
}
|
138
124
|
if (messageObj.code >= 200 && messageObj.code <= 204) {
|
139
|
-
|
125
|
+
const { data } = messageObj;
|
140
126
|
if (!callbacks[id].ignored) {
|
141
127
|
logger.verbose(chalk.green(id.toString()), 'SUCCEEDED', data ? data : '(no data)');
|
142
128
|
}
|
143
129
|
callbacks[id].resolver.resolve(data);
|
144
130
|
}
|
145
131
|
else {
|
146
|
-
|
132
|
+
const errorMessageObj = messageObj;
|
147
133
|
if (!errorMessageObj.error) {
|
148
134
|
// API should always return an error message but this isn't always the case
|
149
135
|
// (e.g. https://github.com/airdcpp/airdcpp-windows/commit/596b31a9c8c4e72f6c9279972a40ea30f10798c4)
|
150
136
|
logger.warn('Error message missing from the response (this is an API bug that should be reported)', id, messageObj);
|
151
137
|
}
|
152
|
-
|
153
|
-
|
138
|
+
const { code } = errorMessageObj;
|
139
|
+
const error = errorMessageObj.error || {
|
154
140
|
message: '(no error description)'
|
155
141
|
};
|
156
142
|
logger.warn(id, code, error.message, formatFieldError(error));
|
157
143
|
callbacks[id].resolver.reject({
|
158
144
|
message: error.message,
|
159
|
-
code
|
145
|
+
code,
|
160
146
|
json: error
|
161
147
|
});
|
162
148
|
}
|
163
149
|
delete callbacks[id];
|
164
150
|
},
|
165
|
-
postAuthenticate
|
151
|
+
postAuthenticate(path, data) {
|
166
152
|
return sendRequest('POST', path, data, true);
|
167
153
|
},
|
168
154
|
};
|
169
|
-
return
|
155
|
+
return Object.assign(Object.assign({}, RequestsInternal), { socket: RequestsPublic });
|
170
156
|
};
|
171
157
|
export default SocketRequestHandler;
|
172
158
|
//# sourceMappingURL=SocketRequestHandler.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"SocketRequestHandler.js","sourceRoot":"","sources":["../src/SocketRequestHandler.ts"],"names":[],"mappings":"
|
1
|
+
{"version":3,"file":"SocketRequestHandler.js","sourceRoot":"","sources":["../src/SocketRequestHandler.ts"],"names":[],"mappings":"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"}
|
@@ -1,8 +1,8 @@
|
|
1
|
-
import { Logger } from './types/logger';
|
2
|
-
import * as APIInternal from './types/api_internal';
|
3
|
-
import * as Options from './types/options';
|
4
|
-
import * as Socket from './types/socket';
|
5
|
-
import * as Subscriptions from './types/subscriptions';
|
1
|
+
import { Logger } from './types/logger.js';
|
2
|
+
import * as APIInternal from './types/api_internal.js';
|
3
|
+
import * as Options from './types/options.js';
|
4
|
+
import * as Socket from './types/socket.js';
|
5
|
+
import * as Subscriptions from './types/subscriptions.js';
|
6
6
|
declare const SocketSubscriptionHandler: (socket: () => Socket.APISocket, logger: Logger, { ignoredListenerEvents }: Options.SocketSubscriptionOptions) => {
|
7
7
|
socket: Subscriptions.SocketSubscriptions;
|
8
8
|
onSocketDisconnected(): void;
|
@@ -1,36 +1,24 @@
|
|
1
|
-
var __assign = (this && this.__assign) || function () {
|
2
|
-
__assign = Object.assign || function(t) {
|
3
|
-
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
4
|
-
s = arguments[i];
|
5
|
-
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
6
|
-
t[p] = s[p];
|
7
|
-
}
|
8
|
-
return t;
|
9
|
-
};
|
10
|
-
return __assign.apply(this, arguments);
|
11
|
-
};
|
12
1
|
import invariant from 'invariant';
|
13
2
|
import { EventEmitter } from 'events';
|
14
|
-
import { eventIgnored } from './utils';
|
15
|
-
import Promise from './Promise';
|
16
|
-
|
17
|
-
var _b = _a.ignoredListenerEvents, ignoredListenerEvents = _b === void 0 ? [] : _b;
|
3
|
+
import { eventIgnored } from './utils.js';
|
4
|
+
import Promise from './Promise.js';
|
5
|
+
const SocketSubscriptionHandler = (socket, logger, { ignoredListenerEvents = [] }) => {
|
18
6
|
// Internal
|
19
|
-
|
7
|
+
const getEmitId = (event, id) => {
|
20
8
|
invariant(id !== 0, 'Entity ID "0" is not allowed');
|
21
9
|
return id ? (event + id) : event;
|
22
10
|
};
|
23
|
-
|
11
|
+
const getSubscriptionUrl = (moduleUrl, id, event) => {
|
24
12
|
if (id) {
|
25
|
-
return moduleUrl
|
13
|
+
return `${moduleUrl}/${id}/listeners/${event}`;
|
26
14
|
}
|
27
|
-
return moduleUrl
|
15
|
+
return `${moduleUrl}/listeners/${event}`;
|
28
16
|
};
|
29
|
-
|
30
|
-
|
17
|
+
let subscriptions = {};
|
18
|
+
const emitter = new EventEmitter();
|
31
19
|
// Subscriptions pending to be added in the API
|
32
|
-
|
33
|
-
|
20
|
+
const pendingSubscriptions = {};
|
21
|
+
const removeSocketListener = (subscriptionUrl, subscriptionId, callback, sendApi) => {
|
34
22
|
if (!socket().isConnected()) {
|
35
23
|
return;
|
36
24
|
}
|
@@ -39,43 +27,40 @@ var SocketSubscriptionHandler = function (socket, logger, _a) {
|
|
39
27
|
if (subscriptions[subscriptionId] === 0) {
|
40
28
|
if (sendApi && socket().isConnected()) {
|
41
29
|
socket().delete(subscriptionUrl)
|
42
|
-
.catch(
|
30
|
+
.catch((error) => {
|
43
31
|
logger.error('Failed to remove socket listener', subscriptionUrl, error);
|
44
32
|
});
|
45
33
|
}
|
46
34
|
delete subscriptions[subscriptionId];
|
47
35
|
}
|
48
36
|
};
|
49
|
-
|
37
|
+
const removeLocalListener = (subscriptionId, callback) => {
|
50
38
|
emitter.removeListener(subscriptionId, callback);
|
51
39
|
};
|
52
|
-
|
53
|
-
callback(data,
|
54
|
-
socket().post(subscriptionUrl
|
55
|
-
.catch(
|
56
|
-
},
|
57
|
-
socket().post(subscriptionUrl
|
40
|
+
const handleHookAction = (subscriptionUrl, callback, data, completionId) => {
|
41
|
+
callback(data, completionData => {
|
42
|
+
socket().post(`${subscriptionUrl}/${completionId}/resolve`, completionData)
|
43
|
+
.catch((error) => logger.error('Failed to complete hook action', subscriptionUrl, error));
|
44
|
+
}, (rejectId, rejectMessage) => {
|
45
|
+
socket().post(`${subscriptionUrl}/${completionId}/reject`, {
|
58
46
|
reject_id: rejectId,
|
59
47
|
message: rejectMessage,
|
60
|
-
}).catch(
|
48
|
+
}).catch(error => logger.error('Failed to complete failed hook action', subscriptionUrl, error));
|
61
49
|
});
|
62
50
|
};
|
63
|
-
|
64
|
-
|
65
|
-
pending.forEach(
|
51
|
+
const onSubscriptionAddSucceeded = (subscriptionId) => {
|
52
|
+
const pending = pendingSubscriptions[subscriptionId];
|
53
|
+
pending.forEach(pendingItem => pendingItem.resolver.resolve(pendingItem.removeHandler));
|
66
54
|
subscriptions[subscriptionId] = pending.length;
|
67
55
|
delete pendingSubscriptions[subscriptionId];
|
68
56
|
};
|
69
|
-
|
70
|
-
|
71
|
-
pending.forEach(
|
57
|
+
const onSubscriptionAddFailed = (subscriptionId, error) => {
|
58
|
+
const pending = pendingSubscriptions[subscriptionId];
|
59
|
+
pending.forEach(pendingItem => pendingItem.resolver.reject(error));
|
72
60
|
delete pendingSubscriptions[subscriptionId];
|
73
61
|
};
|
74
|
-
|
75
|
-
|
76
|
-
if (sendApi === void 0) { sendApi = true; }
|
77
|
-
return removeSocketListener(subscriptionUrl, subscriptionId, callback, sendApi);
|
78
|
-
};
|
62
|
+
const addPendingEntry = (subscriptionUrl, subscriptionId, callback, data) => {
|
63
|
+
const removeHandler = (sendApi = true) => removeSocketListener(subscriptionUrl, subscriptionId, callback, sendApi);
|
79
64
|
if (!subscriptions[subscriptionId]) {
|
80
65
|
if (!pendingSubscriptions[subscriptionId]) {
|
81
66
|
pendingSubscriptions[subscriptionId] = [];
|
@@ -83,77 +68,77 @@ var SocketSubscriptionHandler = function (socket, logger, _a) {
|
|
83
68
|
.post(subscriptionUrl, data)
|
84
69
|
.then(onSubscriptionAddSucceeded.bind(SocketSubscriptionHandler, subscriptionId), onSubscriptionAddFailed.bind(SocketSubscriptionHandler, subscriptionId));
|
85
70
|
}
|
86
|
-
|
71
|
+
const resolver = Promise.pending();
|
87
72
|
pendingSubscriptions[subscriptionId].push({
|
88
|
-
resolver
|
89
|
-
removeHandler
|
73
|
+
resolver,
|
74
|
+
removeHandler
|
90
75
|
});
|
91
76
|
return resolver.promise;
|
92
77
|
}
|
93
78
|
subscriptions[subscriptionId]++;
|
94
79
|
return Promise.resolve(removeHandler);
|
95
80
|
};
|
96
|
-
|
81
|
+
const getTotalEmitterSubscriptionCount = () => {
|
97
82
|
return Object.keys(subscriptions)
|
98
|
-
.reduce(
|
83
|
+
.reduce((reduced, name) => emitter.listenerCount(name) + reduced, 0);
|
99
84
|
};
|
100
85
|
// Public
|
101
86
|
// Listen to a specific event without sending subscription to the server
|
102
|
-
|
103
|
-
addViewUpdateListener:
|
104
|
-
|
87
|
+
const SocketSubscriptionsPublic = {
|
88
|
+
addViewUpdateListener: (viewName, callback, entityId) => {
|
89
|
+
const subscriptionId = getEmitId(`${viewName}_updated`, entityId);
|
105
90
|
emitter.on(subscriptionId, callback);
|
106
|
-
return
|
91
|
+
return () => removeLocalListener(subscriptionId, callback);
|
107
92
|
},
|
108
93
|
// Listen to a specific event and manage the API subscription automatically
|
109
|
-
addListener:
|
94
|
+
addListener: (apiModule, event, callback, entityId) => {
|
110
95
|
if (!socket().isConnected()) {
|
111
96
|
throw 'Listeners can be added only for a connected socket';
|
112
97
|
}
|
113
98
|
invariant(apiModule.indexOf('/') === -1, 'The first argument should only contain the API section without any path tokens (entity ID should be supplied separately)');
|
114
|
-
|
115
|
-
|
99
|
+
const subscriptionId = getEmitId(event, entityId);
|
100
|
+
const subscriptionUrl = getSubscriptionUrl(apiModule, entityId, event);
|
116
101
|
emitter.on(subscriptionId, callback);
|
117
102
|
return addPendingEntry(subscriptionUrl, subscriptionId, callback);
|
118
103
|
},
|
119
|
-
hasListeners:
|
104
|
+
hasListeners: () => {
|
120
105
|
return Object.keys(subscriptions).length > 0 || getTotalEmitterSubscriptionCount() > 0;
|
121
106
|
},
|
122
|
-
addHook:
|
107
|
+
addHook: (apiModule, event, callback, subscriberInfo) => {
|
123
108
|
if (!socket().isConnected()) {
|
124
109
|
throw 'Hooks can be added only for a connected socket';
|
125
110
|
}
|
126
111
|
invariant(apiModule.indexOf('/') === -1, 'The first argument should only contain the API section without any path tokens');
|
127
|
-
|
112
|
+
const subscriptionId = event;
|
128
113
|
if (subscriptions[subscriptionId] || pendingSubscriptions[subscriptionId]) {
|
129
114
|
throw 'Hook exists';
|
130
115
|
}
|
131
|
-
|
116
|
+
const subscriptionUrl = `${apiModule}/hooks/${event}`;
|
132
117
|
callback = handleHookAction.bind(SocketSubscriptionHandler, subscriptionUrl, callback);
|
133
118
|
emitter.on(subscriptionId, callback);
|
134
119
|
return addPendingEntry(subscriptionUrl, subscriptionId, callback, subscriberInfo);
|
135
120
|
},
|
136
|
-
getPendingSubscriptionCount:
|
121
|
+
getPendingSubscriptionCount: () => {
|
137
122
|
return Object.keys(pendingSubscriptions).length;
|
138
123
|
},
|
139
124
|
};
|
140
125
|
// For the socket
|
141
|
-
|
142
|
-
onSocketDisconnected
|
126
|
+
const SocketSubscriptionsInternal = {
|
127
|
+
onSocketDisconnected() {
|
143
128
|
emitter.removeAllListeners();
|
144
129
|
subscriptions = {};
|
145
130
|
},
|
146
|
-
handleMessage
|
147
|
-
|
131
|
+
handleMessage(message) {
|
132
|
+
const ignored = eventIgnored(message.event, ignoredListenerEvents);
|
148
133
|
if (message.completion_id) {
|
149
134
|
if (!ignored) {
|
150
|
-
logger.verbose(message.event,
|
135
|
+
logger.verbose(message.event, `(completion id ${message.completion_id})`, message.data);
|
151
136
|
}
|
152
137
|
emitter.emit(message.event, message.data, message.completion_id);
|
153
138
|
}
|
154
139
|
else {
|
155
140
|
if (!ignored) {
|
156
|
-
logger.verbose(message.event, message.id ?
|
141
|
+
logger.verbose(message.event, message.id ? `(entity ${message.id})` : '(no entity)', message.data);
|
157
142
|
}
|
158
143
|
if (message.id) {
|
159
144
|
// There can be subscribers for a single entity or for all events of this type... emit for both
|
@@ -163,7 +148,7 @@ var SocketSubscriptionHandler = function (socket, logger, _a) {
|
|
163
148
|
}
|
164
149
|
},
|
165
150
|
};
|
166
|
-
return
|
151
|
+
return Object.assign(Object.assign({}, SocketSubscriptionsInternal), { socket: SocketSubscriptionsPublic });
|
167
152
|
};
|
168
153
|
export default SocketSubscriptionHandler;
|
169
154
|
//# sourceMappingURL=SocketSubscriptionHandler.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"SocketSubscriptionHandler.js","sourceRoot":"","sources":["../src/SocketSubscriptionHandler.ts"],"names":[],"mappings":"
|
1
|
+
{"version":3,"file":"SocketSubscriptionHandler.js","sourceRoot":"","sources":["../src/SocketSubscriptionHandler.ts"],"names":[],"mappings":"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"}
|
package/dist-es/types/api.d.ts
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
export
|
1
|
+
export type AuthTokenType = string;
|
2
2
|
export interface AuthenticationResponse {
|
3
3
|
auth_token: AuthTokenType;
|
4
4
|
}
|
@@ -18,7 +18,7 @@ export interface RefreshTokenAuthenticationData {
|
|
18
18
|
export interface TokenAuthenticationData {
|
19
19
|
auth_token: string;
|
20
20
|
}
|
21
|
-
export
|
21
|
+
export type FieldErrorCode = 'missing_field' | 'invalid' | 'already_exists';
|
22
22
|
export interface FieldError extends ErrorBase {
|
23
23
|
message: string;
|
24
24
|
field: string;
|
@@ -27,4 +27,4 @@ export interface FieldError extends ErrorBase {
|
|
27
27
|
export interface ErrorBase {
|
28
28
|
message: string;
|
29
29
|
}
|
30
|
-
export
|
30
|
+
export type EntityId = string | number;
|
@@ -1,5 +1,5 @@
|
|
1
|
-
export
|
2
|
-
import { ErrorBase, FieldError, EntityId } from './api';
|
1
|
+
export type CompletionIdType = number;
|
2
|
+
import { ErrorBase, FieldError, EntityId } from './api.js';
|
3
3
|
export interface RequestResponseBase {
|
4
4
|
code: number;
|
5
5
|
callback_id: number;
|
package/dist-es/types/index.d.ts
CHANGED
@@ -1,7 +1,7 @@
|
|
1
|
-
export * from './api';
|
2
|
-
export * from './logger';
|
3
|
-
export * from './requests';
|
4
|
-
export * from './subscriptions';
|
5
|
-
export * from './socket';
|
6
|
-
export * from './options';
|
7
|
-
export * from './public_helpers';
|
1
|
+
export * from './api.js';
|
2
|
+
export * from './logger.js';
|
3
|
+
export * from './requests.js';
|
4
|
+
export * from './subscriptions.js';
|
5
|
+
export * from './socket.js';
|
6
|
+
export * from './options.js';
|
7
|
+
export * from './public_helpers.js';
|
package/dist-es/types/index.js
CHANGED
@@ -1,8 +1,8 @@
|
|
1
|
-
export * from './api';
|
2
|
-
export * from './logger';
|
3
|
-
export * from './requests';
|
4
|
-
export * from './subscriptions';
|
5
|
-
export * from './socket';
|
6
|
-
export * from './options';
|
7
|
-
export * from './public_helpers';
|
1
|
+
export * from './api.js';
|
2
|
+
export * from './logger.js';
|
3
|
+
export * from './requests.js';
|
4
|
+
export * from './subscriptions.js';
|
5
|
+
export * from './socket.js';
|
6
|
+
export * from './options.js';
|
7
|
+
export * from './public_helpers.js';
|
8
8
|
//# sourceMappingURL=index.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA,cAAc,
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AAEzB,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,oBAAoB,CAAC;AAEnC,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAE7B,cAAc,qBAAqB,CAAC"}
|
@@ -1,11 +1,11 @@
|
|
1
|
-
export
|
1
|
+
export type PrintHandler = (...optionalParams: any[]) => void;
|
2
2
|
export interface LogOutput {
|
3
3
|
log: PrintHandler;
|
4
4
|
info: PrintHandler;
|
5
5
|
warn: PrintHandler;
|
6
6
|
error: PrintHandler;
|
7
7
|
}
|
8
|
-
export
|
8
|
+
export type IgnoreMatcher = string[] | RegExp;
|
9
9
|
export interface SocketRequestOptions {
|
10
10
|
ignoredRequestPaths?: IgnoreMatcher;
|
11
11
|
requestTimeout?: number;
|
@@ -27,5 +27,5 @@ export interface LoggerOptions {
|
|
27
27
|
logLevel?: string;
|
28
28
|
logOutput?: LogOutput;
|
29
29
|
}
|
30
|
-
|
30
|
+
type UserOptions = RequiredSocketOptions & Partial<AdvancedSocketOptions> & LoggerOptions & SocketSubscriptionOptions & SocketRequestOptions;
|
31
31
|
export { UserOptions as APISocketOptions };
|
@@ -1,4 +1,4 @@
|
|
1
|
-
|
1
|
+
type AsyncCallbackProperty<IdT, EntityIdT, ReturnT> = (selectedIds: IdT[], entityId: EntityIdT | null, permissions: string[], supports: string[]) => ReturnT | Promise<ReturnT>;
|
2
2
|
export interface ContextMenuItem<IdT, EntityIdT> {
|
3
3
|
id: string;
|
4
4
|
title: string;
|