airdcpp-apisocket 2.4.3 → 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/CHANGELOG.md +4 -0
- package/GUIDE.md +16 -13
- 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 +82 -98
- package/dist/SocketBase.js.map +1 -1
- package/dist/SocketLogger.d.ts +2 -2
- package/dist/SocketLogger.js +29 -35
- package/dist/SocketLogger.js.map +1 -1
- package/dist/SocketRequestHandler.d.ts +6 -6
- package/dist/SocketRequestHandler.js +56 -70
- package/dist/SocketRequestHandler.js.map +1 -1
- package/dist/SocketSubscriptionHandler.d.ts +5 -5
- package/dist/SocketSubscriptionHandler.js +58 -71
- 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 +11 -11
- 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 -37
- 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 +54 -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 +11 -11
- 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 +16 -14
- 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 +28 -18
- 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 +3 -3
- 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
package/CHANGELOG.md
CHANGED
@@ -1,3 +1,7 @@
|
|
1
|
+
### 2.4.4 (2021-08-27)
|
2
|
+
|
3
|
+
- Throw when attempting to add listeners for individual entities incorrectly
|
4
|
+
|
1
5
|
### 2.4.3 (2021-08-21)
|
2
6
|
|
3
7
|
- Handle cases when an error code is returned by the API without an accompanying error message (this may have previously crashed the process e.g. when attempting to remove hooks: https://github.com/airdcpp/airdcpp-windows/commit/596b31a9c8c4e72f6c9279972a40ea30f10798c4).
|
package/GUIDE.md
CHANGED
@@ -9,8 +9,8 @@
|
|
9
9
|
- [isConnected](#isconnected)
|
10
10
|
- [logout](#logout)
|
11
11
|
- [Connect state events](#connect-state-events)
|
12
|
-
- [
|
13
|
-
- [
|
12
|
+
- [onConnected](#onconnected)
|
13
|
+
- [onDisconnected](#ondisconnected)
|
14
14
|
- [onSessionReset](#onsessionreset)
|
15
15
|
- [Logger](#logger)
|
16
16
|
- [API requests](#api-requests)
|
@@ -71,7 +71,7 @@ const socket = Socket(settings, w3cwebsocket);
|
|
71
71
|
| :--- | :--- | :---: | :--- |
|
72
72
|
| **url** | `string` | | Fully qualified API URL (**required**). Example: ws://localhost:5600/api/v1/ |
|
73
73
|
| **username, password** | `string` | | Username and password to use when connecting to the API. Alternatively you may provide the credentials when calling [`connect`](#connect). |
|
74
|
-
| **autoReconnect** | `boolean` | true | Reconnect automatically if
|
74
|
+
| **autoReconnect** | `boolean` | true | Reconnect automatically if there are network errors when initializing connection or when a connected socket gets disconnected |
|
75
75
|
| **reconnectInterval** | `number` | 10 | Interval of automatic reconnection (seconds) |
|
76
76
|
| **requestTimeout** | `number` | 30 | Notify about about API requests that have taken longer than this to complete (seconds). This is mainly used for detecting possible issues (deadlocks) with the backend as messages sent via WebSocket should always be delivered (pending request will be aborted automatically when the socket is disconnected). |
|
77
77
|
| **reconnectInterval** | `number` | 10 | Interval of automatic reconnection (seconds) |
|
@@ -160,13 +160,13 @@ Promise that will be resolved with the possible response of the [DELETE /session
|
|
160
160
|
|
161
161
|
## Connect state events
|
162
162
|
|
163
|
-
### `
|
163
|
+
### `onConnected`
|
164
164
|
|
165
|
-
`
|
165
|
+
`onConnected(data)`
|
166
166
|
|
167
167
|
Fired after the socket was connected and authenticated. `data` is the data received from the API authentication request ([`connect`](#connect)/[`reconnect`](#reconnect)).
|
168
168
|
|
169
|
-
### `
|
169
|
+
### `onDisconnected`
|
170
170
|
|
171
171
|
Fired after the socket was disconnected.
|
172
172
|
|
@@ -236,13 +236,13 @@ socket.post('events', {
|
|
236
236
|
|
237
237
|
**Arguments**
|
238
238
|
|
239
|
-
**`
|
239
|
+
**`apiSection`** (string, required)
|
240
240
|
|
241
|
-
API
|
241
|
+
API section of the listener (the first part of the documented listener URL, e.g. `hubs` or `search`).
|
242
242
|
|
243
243
|
**`listenerName`** (string, required)
|
244
244
|
|
245
|
-
Name of the API
|
245
|
+
Name of the API listener (last part of the documented listener URL)
|
246
246
|
|
247
247
|
**`callback`** (function, required)
|
248
248
|
|
@@ -272,6 +272,9 @@ const onMessageReceived = (message, hubId) => {
|
|
272
272
|
// NOTE: async function
|
273
273
|
const removeListener = await socket.addListener('hubs', 'hub_chat_message', onMessageReceived);
|
274
274
|
|
275
|
+
// If you want to add the listener only for a single hub, add the session ID argument at the end:
|
276
|
+
// const removeListener = await socket.addListener('hubs', 'hub_chat_message', onMessageReceived, replace_with_the_wanted_session_id);
|
277
|
+
|
275
278
|
// ... other code
|
276
279
|
|
277
280
|
|
@@ -290,13 +293,13 @@ Action hooks are meant to be used only if you are going to change the behavior h
|
|
290
293
|
|
291
294
|
**Arguments**
|
292
295
|
|
293
|
-
**`
|
296
|
+
**`apiSection`** (string, required)
|
294
297
|
|
295
|
-
API
|
298
|
+
API section of the wanted hook (the first part of the documented hook URL, e.g. `hubs` or `search`).
|
296
299
|
|
297
300
|
**`hookName`** (string, required)
|
298
301
|
|
299
|
-
Name of the hook
|
302
|
+
Name of the hook (last part of the documented hook URL)
|
300
303
|
|
301
304
|
**`callback`** (function, required)
|
302
305
|
|
@@ -462,4 +465,4 @@ socket.onConnected = (sessionInfo) => {
|
|
462
465
|
);
|
463
466
|
}
|
464
467
|
}
|
465
|
-
```
|
468
|
+
```
|
package/babel.config.cjs
ADDED
package/dist/NodeSocket.d.ts
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
import SocketBase from './SocketBase';
|
2
|
-
export * from './types';
|
3
|
-
export * from './PublicHelpers';
|
1
|
+
import SocketBase from './SocketBase.js';
|
2
|
+
export * from './types/index.js';
|
3
|
+
export * from './PublicHelpers.js';
|
4
4
|
export { SocketBase as Socket };
|
package/dist/NodeSocket.js
CHANGED
@@ -1,7 +1,11 @@
|
|
1
1
|
"use strict";
|
2
2
|
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
3
3
|
if (k2 === undefined) k2 = k;
|
4
|
-
Object.
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
7
|
+
}
|
8
|
+
Object.defineProperty(o, k2, desc);
|
5
9
|
}) : (function(o, m, k, k2) {
|
6
10
|
if (k2 === undefined) k2 = k;
|
7
11
|
o[k2] = m[k];
|
@@ -14,8 +18,8 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
14
18
|
};
|
15
19
|
Object.defineProperty(exports, "__esModule", { value: true });
|
16
20
|
exports.Socket = void 0;
|
17
|
-
|
18
|
-
exports.Socket =
|
19
|
-
__exportStar(require("./types"), exports);
|
20
|
-
__exportStar(require("./PublicHelpers"), exports);
|
21
|
+
const SocketBase_js_1 = __importDefault(require("./SocketBase.js"));
|
22
|
+
exports.Socket = SocketBase_js_1.default;
|
23
|
+
__exportStar(require("./types/index.js"), exports);
|
24
|
+
__exportStar(require("./PublicHelpers.js"), exports);
|
21
25
|
//# sourceMappingURL=NodeSocket.js.map
|
package/dist/NodeSocket.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"NodeSocket.js","sourceRoot":"","sources":["../src/NodeSocket.ts"],"names":[],"mappings":"
|
1
|
+
{"version":3,"file":"NodeSocket.js","sourceRoot":"","sources":["../src/NodeSocket.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA,oEAAyC;AAMlB,iBANhB,uBAAU,CAMY;AAH7B,mDAAiC;AACjC,qDAAmC"}
|
package/dist/Promise.js
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
"use strict";
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
3
|
// Use native promises when available
|
4
|
-
|
4
|
+
let AppPromise;
|
5
5
|
if (typeof Promise !== 'undefined') {
|
6
6
|
AppPromise = Promise;
|
7
7
|
}
|
@@ -9,19 +9,19 @@ else {
|
|
9
9
|
AppPromise = require('promise');
|
10
10
|
}
|
11
11
|
function pending() {
|
12
|
-
|
13
|
-
|
12
|
+
let resolve, reject;
|
13
|
+
let promise = new AppPromise(function () {
|
14
14
|
resolve = arguments[0];
|
15
15
|
reject = arguments[1];
|
16
16
|
});
|
17
17
|
return {
|
18
18
|
resolve: resolve,
|
19
19
|
reject: reject,
|
20
|
-
promise
|
20
|
+
promise
|
21
21
|
};
|
22
22
|
}
|
23
|
-
|
24
|
-
pending
|
23
|
+
const PendingPromise = Object.assign(AppPromise, {
|
24
|
+
pending
|
25
25
|
});
|
26
26
|
exports.default = PendingPromise;
|
27
27
|
//# sourceMappingURL=Promise.js.map
|
package/dist/Promise.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"Promise.js","sourceRoot":"","sources":["../src/Promise.ts"],"names":[],"mappings":";;AAAA,qCAAqC;AACrC,IAAI,UAA8B,CAAC;AACnC,IAAI,OAAO,OAAO,KAAK,WAAW,EAAE;IAClC,UAAU,GAAG,OAAO,CAAC;CACtB;KAAM;IACL,UAAU,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;CACjC;AAOD,SAAS,OAAO;IACd,IAAI,OAAkC,EAAE,MAAgC,CAAC;IACzE,IAAI,OAAO,GAAG,IAAI,UAAU,CAAC;QAC3B,OAAO,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;QACvB,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;IACxB,CAAC,CAAC,CAAC;IAEH,OAAO;QACL,OAAO,EAAE,OAAQ;QACjB,MAAM,EAAE,MAAO;QACf,OAAO
|
1
|
+
{"version":3,"file":"Promise.js","sourceRoot":"","sources":["../src/Promise.ts"],"names":[],"mappings":";;AAAA,qCAAqC;AACrC,IAAI,UAA8B,CAAC;AACnC,IAAI,OAAO,OAAO,KAAK,WAAW,EAAE;IAClC,UAAU,GAAG,OAAO,CAAC;CACtB;KAAM;IACL,UAAU,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;CACjC;AAOD,SAAS,OAAO;IACd,IAAI,OAAkC,EAAE,MAAgC,CAAC;IACzE,IAAI,OAAO,GAAG,IAAI,UAAU,CAAC;QAC3B,OAAO,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;QACvB,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;IACxB,CAAC,CAAC,CAAC;IAEH,OAAO;QACL,OAAO,EAAE,OAAQ;QACjB,MAAM,EAAE,MAAO;QACf,OAAO;KACR,CAAC;AACJ,CAAC;AAMD,MAAM,cAAc,GAAe,MAAM,CAAC,MAAM,CAC9C,UAAU,EACV;IACE,OAAO;CACR,CACF,CAAC;AAEF,kBAAe,cAAc,CAAC"}
|
package/dist/PublicHelpers.d.ts
CHANGED
@@ -1,2 +1,2 @@
|
|
1
|
-
import { HookSubscriberInfo, APISocket, ContextMenuItem, EntityId } from './types';
|
1
|
+
import { HookSubscriberInfo, APISocket, ContextMenuItem, EntityId } from './types/index.js';
|
2
2
|
export declare const addContextMenuItems: <IdT, EntityIdT extends EntityId | undefined = undefined>(socket: APISocket, menuItems: ContextMenuItem<IdT, EntityIdT>[], menuId: string, subscriberInfo: HookSubscriberInfo) => Promise<() => void>;
|
package/dist/PublicHelpers.js
CHANGED
@@ -1,15 +1,4 @@
|
|
1
1
|
"use strict";
|
2
|
-
var __assign = (this && this.__assign) || function () {
|
3
|
-
__assign = Object.assign || function(t) {
|
4
|
-
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
5
|
-
s = arguments[i];
|
6
|
-
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
7
|
-
t[p] = s[p];
|
8
|
-
}
|
9
|
-
return t;
|
10
|
-
};
|
11
|
-
return __assign.apply(this, arguments);
|
12
|
-
};
|
13
2
|
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
14
3
|
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
15
4
|
return new (P || (P = Promise))(function (resolve, reject) {
|
@@ -19,175 +8,93 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
19
8
|
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
20
9
|
});
|
21
10
|
};
|
22
|
-
var __generator = (this && this.__generator) || function (thisArg, body) {
|
23
|
-
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
24
|
-
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
25
|
-
function verb(n) { return function (v) { return step([n, v]); }; }
|
26
|
-
function step(op) {
|
27
|
-
if (f) throw new TypeError("Generator is already executing.");
|
28
|
-
while (_) try {
|
29
|
-
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
30
|
-
if (y = 0, t) op = [op[0] & 2, t.value];
|
31
|
-
switch (op[0]) {
|
32
|
-
case 0: case 1: t = op; break;
|
33
|
-
case 4: _.label++; return { value: op[1], done: false };
|
34
|
-
case 5: _.label++; y = op[1]; op = [0]; continue;
|
35
|
-
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
36
|
-
default:
|
37
|
-
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
38
|
-
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
39
|
-
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
40
|
-
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
41
|
-
if (t[2]) _.ops.pop();
|
42
|
-
_.trys.pop(); continue;
|
43
|
-
}
|
44
|
-
op = body.call(thisArg, _);
|
45
|
-
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
46
|
-
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
47
|
-
}
|
48
|
-
};
|
49
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
50
12
|
exports.addContextMenuItems = void 0;
|
51
|
-
|
13
|
+
const checkAccess = (menuItem, permissions) => {
|
52
14
|
if (!menuItem.access) {
|
53
15
|
return true;
|
54
16
|
}
|
55
17
|
return permissions.indexOf('admin') !== -1 || permissions.indexOf(menuItem.access) !== -1;
|
56
18
|
};
|
57
|
-
|
58
|
-
|
59
|
-
|
19
|
+
const URLS_SUPPORT = 'urls';
|
20
|
+
const FORM_SUPPORT = 'form';
|
21
|
+
const hasSupport = (support, supports) => {
|
60
22
|
return !!supports && supports.indexOf(support) !== -1;
|
61
23
|
};
|
62
24
|
// Check whether the item passes the access and filter checks
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
if (_a) {
|
80
|
-
return [2 /*return*/, false];
|
81
|
-
}
|
82
|
-
return [2 /*return*/, checkAccess(menuItem, data.permissions)];
|
25
|
+
const validateItem = (menuItem, data) => __awaiter(void 0, void 0, void 0, function* () {
|
26
|
+
const { selected_ids, entity_id, permissions, supports } = data;
|
27
|
+
if (!!menuItem.urls && !hasSupport(URLS_SUPPORT, supports)) {
|
28
|
+
return false;
|
29
|
+
}
|
30
|
+
if (!!menuItem.filter && !(yield menuItem.filter(selected_ids, entity_id, permissions, supports))) {
|
31
|
+
return false;
|
32
|
+
}
|
33
|
+
return checkAccess(menuItem, data.permissions);
|
34
|
+
});
|
35
|
+
const parseCallbackData = (item, data) => __awaiter(void 0, void 0, void 0, function* () {
|
36
|
+
const { selected_ids, entity_id, permissions, supports } = data;
|
37
|
+
if (!!item.urls && !!item.urls.length) {
|
38
|
+
let urls;
|
39
|
+
if (typeof item.urls === 'function') {
|
40
|
+
urls = yield item.urls(selected_ids, entity_id, permissions, supports);
|
83
41
|
}
|
84
|
-
|
85
|
-
|
86
|
-
var parseCallbackData = function (item, data) { return __awaiter(void 0, void 0, void 0, function () {
|
87
|
-
var selected_ids, entity_id, permissions, supports, urls, formDefinitions;
|
88
|
-
return __generator(this, function (_a) {
|
89
|
-
switch (_a.label) {
|
90
|
-
case 0:
|
91
|
-
selected_ids = data.selected_ids, entity_id = data.entity_id, permissions = data.permissions, supports = data.supports;
|
92
|
-
if (!(!!item.urls && !!item.urls.length)) return [3 /*break*/, 4];
|
93
|
-
urls = void 0;
|
94
|
-
if (!(typeof item.urls === 'function')) return [3 /*break*/, 2];
|
95
|
-
return [4 /*yield*/, item.urls(selected_ids, entity_id, permissions, supports)];
|
96
|
-
case 1:
|
97
|
-
urls = _a.sent();
|
98
|
-
return [3 /*break*/, 3];
|
99
|
-
case 2:
|
100
|
-
urls = item.urls;
|
101
|
-
_a.label = 3;
|
102
|
-
case 3: return [2 /*return*/, {
|
103
|
-
urls: urls,
|
104
|
-
}];
|
105
|
-
case 4:
|
106
|
-
if (!(!!item.formDefinitions && hasSupport(FORM_SUPPORT, supports))) return [3 /*break*/, 8];
|
107
|
-
formDefinitions = void 0;
|
108
|
-
if (!(typeof item.formDefinitions === 'function')) return [3 /*break*/, 6];
|
109
|
-
return [4 /*yield*/, item.formDefinitions(selected_ids, entity_id, permissions, supports)];
|
110
|
-
case 5:
|
111
|
-
formDefinitions = _a.sent();
|
112
|
-
return [3 /*break*/, 7];
|
113
|
-
case 6:
|
114
|
-
formDefinitions = item.formDefinitions;
|
115
|
-
_a.label = 7;
|
116
|
-
case 7: return [2 /*return*/, {
|
117
|
-
form_definitions: formDefinitions,
|
118
|
-
}];
|
119
|
-
case 8: return [2 /*return*/, {}];
|
42
|
+
else {
|
43
|
+
urls = item.urls;
|
120
44
|
}
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
return __generator(this, function (_a) {
|
130
|
-
switch (_a.label) {
|
131
|
-
case 0:
|
132
|
-
if (!(data.hook_id === subscriberInfo.id)) return [3 /*break*/, 2];
|
133
|
-
menuItem = menuItems.find(function (i) { return data.menuitem_id === i.id; });
|
134
|
-
if (!!!menuItem) return [3 /*break*/, 2];
|
135
|
-
return [4 /*yield*/, validateItem(menuItem, data)];
|
136
|
-
case 1:
|
137
|
-
isValid = _a.sent();
|
138
|
-
if (isValid && !!menuItem.onClick) {
|
139
|
-
selected_ids = data.selected_ids, entity_id = data.entity_id, permissions = data.permissions, supports = data.supports, form_values = data.form_values;
|
140
|
-
menuItem.onClick(selected_ids, entity_id, permissions, supports, form_values);
|
141
|
-
}
|
142
|
-
_a.label = 2;
|
143
|
-
case 2: return [2 /*return*/];
|
144
|
-
}
|
145
|
-
});
|
146
|
-
}); })];
|
147
|
-
case 1:
|
148
|
-
removeListener = _a.sent();
|
149
|
-
return [4 /*yield*/, socket.addHook('menus', menuId + "_list_menuitems", function (data, accept, reject) { return __awaiter(void 0, void 0, void 0, function () {
|
150
|
-
var validItems, _i, menuItems_1, item, isValid, parsedCallbackData, onClick, id, title, icon;
|
151
|
-
return __generator(this, function (_a) {
|
152
|
-
switch (_a.label) {
|
153
|
-
case 0:
|
154
|
-
validItems = [];
|
155
|
-
_i = 0, menuItems_1 = menuItems;
|
156
|
-
_a.label = 1;
|
157
|
-
case 1:
|
158
|
-
if (!(_i < menuItems_1.length)) return [3 /*break*/, 5];
|
159
|
-
item = menuItems_1[_i];
|
160
|
-
return [4 /*yield*/, validateItem(item, data)];
|
161
|
-
case 2:
|
162
|
-
isValid = _a.sent();
|
163
|
-
if (!isValid) return [3 /*break*/, 4];
|
164
|
-
return [4 /*yield*/, parseCallbackData(item, data)];
|
165
|
-
case 3:
|
166
|
-
parsedCallbackData = _a.sent();
|
167
|
-
onClick = item.onClick, id = item.id, title = item.title, icon = item.icon;
|
168
|
-
if (!!onClick || (!!parsedCallbackData.urls && parsedCallbackData.urls.length)) {
|
169
|
-
validItems.push(__assign({ id: id, title: title, icon: icon }, parsedCallbackData));
|
170
|
-
}
|
171
|
-
_a.label = 4;
|
172
|
-
case 4:
|
173
|
-
_i++;
|
174
|
-
return [3 /*break*/, 1];
|
175
|
-
case 5:
|
176
|
-
accept({
|
177
|
-
menuitems: validItems
|
178
|
-
});
|
179
|
-
return [2 /*return*/];
|
180
|
-
}
|
181
|
-
});
|
182
|
-
}); }, subscriberInfo)];
|
183
|
-
case 2:
|
184
|
-
removeHook = _a.sent();
|
185
|
-
return [2 /*return*/, function () {
|
186
|
-
removeHook();
|
187
|
-
removeListener();
|
188
|
-
}];
|
45
|
+
return {
|
46
|
+
urls,
|
47
|
+
};
|
48
|
+
}
|
49
|
+
else if (!!item.formDefinitions && hasSupport(FORM_SUPPORT, supports)) {
|
50
|
+
let formDefinitions;
|
51
|
+
if (typeof item.formDefinitions === 'function') {
|
52
|
+
formDefinitions = yield item.formDefinitions(selected_ids, entity_id, permissions, supports);
|
189
53
|
}
|
190
|
-
|
191
|
-
|
54
|
+
else {
|
55
|
+
formDefinitions = item.formDefinitions;
|
56
|
+
}
|
57
|
+
return {
|
58
|
+
form_definitions: formDefinitions,
|
59
|
+
};
|
60
|
+
}
|
61
|
+
return {};
|
62
|
+
});
|
63
|
+
const addContextMenuItems = (socket, menuItems, menuId, subscriberInfo) => __awaiter(void 0, void 0, void 0, function* () {
|
64
|
+
const removeListener = yield socket.addListener('menus', `${menuId}_menuitem_selected`, (data) => __awaiter(void 0, void 0, void 0, function* () {
|
65
|
+
if (data.hook_id === subscriberInfo.id) {
|
66
|
+
const menuItem = menuItems.find(i => data.menuitem_id === i.id);
|
67
|
+
if (!!menuItem) {
|
68
|
+
const isValid = yield validateItem(menuItem, data);
|
69
|
+
if (isValid && !!menuItem.onClick) {
|
70
|
+
const { selected_ids, entity_id, permissions, supports, form_values } = data;
|
71
|
+
menuItem.onClick(selected_ids, entity_id, permissions, supports, form_values);
|
72
|
+
}
|
73
|
+
}
|
74
|
+
}
|
75
|
+
}));
|
76
|
+
const removeHook = yield socket.addHook('menus', `${menuId}_list_menuitems`, (data, accept, reject) => __awaiter(void 0, void 0, void 0, function* () {
|
77
|
+
const validItems = [];
|
78
|
+
for (const item of menuItems) {
|
79
|
+
const isValid = yield validateItem(item, data);
|
80
|
+
if (isValid) {
|
81
|
+
const parsedCallbackData = yield parseCallbackData(item, data);
|
82
|
+
const { onClick, id, title, icon } = item;
|
83
|
+
if (!!onClick || (!!parsedCallbackData.urls && parsedCallbackData.urls.length)) {
|
84
|
+
validItems.push(Object.assign({ id,
|
85
|
+
title,
|
86
|
+
icon }, parsedCallbackData));
|
87
|
+
}
|
88
|
+
}
|
89
|
+
}
|
90
|
+
accept({
|
91
|
+
menuitems: validItems
|
92
|
+
});
|
93
|
+
}), subscriberInfo);
|
94
|
+
return () => {
|
95
|
+
removeHook();
|
96
|
+
removeListener();
|
97
|
+
};
|
98
|
+
});
|
192
99
|
exports.addContextMenuItems = addContextMenuItems;
|
193
100
|
//# sourceMappingURL=PublicHelpers.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"PublicHelpers.js","sourceRoot":"","sources":["../src/PublicHelpers.ts"],"names":[],"mappings":"
|
1
|
+
{"version":3,"file":"PublicHelpers.js","sourceRoot":"","sources":["../src/PublicHelpers.ts"],"names":[],"mappings":"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"}
|
package/dist/SocketBase.d.ts
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
import * as Options from './types/options';
|
2
|
-
import * as Socket from './types/socket';
|
1
|
+
import * as Options from './types/options.js';
|
2
|
+
import * as Socket from './types/socket.js';
|
3
3
|
declare const ApiSocket: (userOptions: Options.APISocketOptions, WebSocketImpl: WebSocket) => Socket.APISocket;
|
4
4
|
export default ApiSocket;
|