airdcpp-apisocket 2.4.4 → 2.5.0-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 +7 -7
- package/README.md +3 -2
- package/babel.config.cjs +6 -0
- package/dist/ApiConstants.d.ts +6 -6
- package/dist/ApiConstants.js +7 -7
- package/dist/NodeSocket.d.ts +4 -4
- package/dist/NodeSocket.js +24 -20
- package/dist/NodeSocket.js.map +1 -1
- package/dist/Promise.d.ts +8 -8
- package/dist/Promise.js +26 -26
- package/dist/Promise.js.map +1 -1
- package/dist/PublicHelpers.d.ts +2 -2
- package/dist/PublicHelpers.js +94 -192
- package/dist/PublicHelpers.js.map +1 -1
- package/dist/SocketBase.d.ts +4 -4
- package/dist/SocketBase.js +351 -359
- package/dist/SocketBase.js.map +1 -1
- package/dist/SocketLogger.d.ts +9 -9
- package/dist/SocketLogger.js +74 -84
- package/dist/SocketLogger.js.map +1 -1
- package/dist/SocketRequestHandler.d.ts +14 -14
- package/dist/SocketRequestHandler.js +168 -176
- package/dist/SocketRequestHandler.js.map +1 -1
- package/dist/SocketSubscriptionHandler.d.ts +11 -11
- package/dist/SocketSubscriptionHandler.js +161 -173
- package/dist/SocketSubscriptionHandler.js.map +1 -1
- package/dist/types/api.d.ts +30 -30
- package/dist/types/api.js +3 -3
- package/dist/types/api_internal.d.ts +24 -24
- package/dist/types/api_internal.js +2 -2
- package/dist/types/index.d.ts +7 -7
- package/dist/types/index.js +23 -19
- package/dist/types/index.js.map +1 -1
- package/dist/types/logger.d.ts +6 -6
- package/dist/types/logger.js +2 -2
- package/dist/types/options.d.ts +31 -31
- package/dist/types/options.js +3 -3
- package/dist/types/public_helpers.d.ts +19 -14
- package/dist/types/public_helpers.js +2 -2
- package/dist/types/public_helpers_internal.d.ts +27 -25
- package/dist/types/public_helpers_internal.js +2 -2
- package/dist/types/requests.d.ts +14 -14
- package/dist/types/requests.js +2 -2
- package/dist/types/socket.d.ts +23 -23
- package/dist/types/socket.js +2 -3
- package/dist/types/socket.js.map +1 -1
- package/dist/types/subscriptions.d.ts +20 -20
- package/dist/types/subscriptions.js +2 -2
- package/dist/utils.d.ts +2 -2
- package/dist/utils.js +15 -15
- package/dist/utils.js.map +1 -1
- package/dist-es/ApiConstants.d.ts +6 -6
- package/dist-es/ApiConstants.js +5 -5
- package/dist-es/NodeSocket.d.ts +4 -4
- package/dist-es/NodeSocket.js +4 -4
- package/dist-es/NodeSocket.js.map +1 -1
- package/dist-es/Promise.d.ts +8 -8
- package/dist-es/Promise.js +24 -24
- package/dist-es/Promise.js.map +1 -1
- package/dist-es/PublicHelpers.d.ts +2 -2
- package/dist-es/PublicHelpers.js +90 -188
- package/dist-es/PublicHelpers.js.map +1 -1
- package/dist-es/SocketBase.d.ts +4 -4
- package/dist-es/SocketBase.js +346 -354
- package/dist-es/SocketBase.js.map +1 -1
- package/dist-es/SocketLogger.d.ts +9 -9
- package/dist-es/SocketLogger.js +68 -78
- package/dist-es/SocketLogger.js.map +1 -1
- package/dist-es/SocketRequestHandler.d.ts +14 -14
- package/dist-es/SocketRequestHandler.js +163 -171
- package/dist-es/SocketRequestHandler.js.map +1 -1
- package/dist-es/SocketSubscriptionHandler.d.ts +11 -11
- package/dist-es/SocketSubscriptionHandler.js +156 -168
- package/dist-es/SocketSubscriptionHandler.js.map +1 -1
- package/dist-es/types/api.d.ts +30 -30
- package/dist-es/types/api.js +2 -2
- package/dist-es/types/api_internal.d.ts +24 -24
- package/dist-es/types/api_internal.js +1 -1
- 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/logger.d.ts +6 -6
- package/dist-es/types/logger.js +1 -1
- package/dist-es/types/options.d.ts +31 -31
- package/dist-es/types/options.js +2 -2
- package/dist-es/types/public_helpers.d.ts +19 -14
- package/dist-es/types/public_helpers.js +1 -1
- package/dist-es/types/public_helpers_internal.d.ts +27 -25
- package/dist-es/types/public_helpers_internal.js +1 -1
- package/dist-es/types/requests.d.ts +14 -14
- package/dist-es/types/requests.js +1 -1
- package/dist-es/types/socket.d.ts +23 -23
- package/dist-es/types/socket.js +1 -2
- package/dist-es/types/socket.js.map +1 -1
- package/dist-es/types/subscriptions.d.ts +20 -20
- package/dist-es/types/subscriptions.js +1 -1
- package/dist-es/utils.d.ts +2 -2
- package/dist-es/utils.js +11 -11
- package/dist-es/utils.js.map +1 -1
- package/jest.config.js +15 -3
- package/package.json +15 -13
- package/src/NodeSocket.ts +3 -3
- package/src/PublicHelpers.ts +11 -10
- package/src/SocketBase.ts +9 -9
- package/src/SocketLogger.ts +6 -6
- package/src/SocketRequestHandler.ts +10 -10
- package/src/SocketSubscriptionHandler.ts +10 -10
- package/src/tests/Socket.test.ts +29 -26
- package/src/tests/helpers.ts +14 -8
- package/src/tests/public_helpers.test.ts +7 -6
- package/src/types/api_internal.ts +1 -1
- package/src/types/index.ts +7 -7
- package/src/types/public_helpers.ts +7 -1
- package/src/types/public_helpers_internal.ts +3 -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 +5 -10
- 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/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
|
|
@@ -393,7 +393,7 @@ Optional form definitions:
|
|
393
393
|
|
394
394
|
**`menuType`** (string, required)
|
395
395
|
|
396
|
-
Menu type (see the
|
396
|
+
Menu type (see the [Menu API documentation](https://airdcpp.docs.apiary.io/#reference/menus) for available types)
|
397
397
|
|
398
398
|
**`subscriberInfo`** (object, required)
|
399
399
|
|
package/README.md
CHANGED
@@ -97,8 +97,9 @@ If you are using AirDC++ Web Client, you can start the client with ``--cdm-clien
|
|
97
97
|
The ADC protocol specifications can be found from http://adc.sourceforge.net/ADC.html
|
98
98
|
|
99
99
|
|
100
|
-
|
101
|
-
[build]: https://
|
100
|
+
|
101
|
+
[build-badge]: https://github.com/airdcpp-web/airdcpp-apisocket-js/actions/workflows/node.js.yml/badge.svg
|
102
|
+
[build]: https://github.com/airdcpp-web/airdcpp-apisocket-js/actions/workflows/node.js.yml
|
102
103
|
|
103
104
|
[npm-badge]: https://img.shields.io/npm/v/airdcpp-apisocket.svg?style=flat-square
|
104
105
|
[npm]: https://www.npmjs.org/package/airdcpp-apisocket
|
package/babel.config.cjs
ADDED
package/dist/ApiConstants.d.ts
CHANGED
@@ -1,6 +1,6 @@
|
|
1
|
-
declare const _default: {
|
2
|
-
LOGIN_URL: string;
|
3
|
-
CONNECT_URL: string;
|
4
|
-
LOGOUT_URL: string;
|
5
|
-
};
|
6
|
-
export default _default;
|
1
|
+
declare const _default: {
|
2
|
+
LOGIN_URL: string;
|
3
|
+
CONNECT_URL: string;
|
4
|
+
LOGOUT_URL: string;
|
5
|
+
};
|
6
|
+
export default _default;
|
package/dist/ApiConstants.js
CHANGED
@@ -1,8 +1,8 @@
|
|
1
|
-
"use strict";
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
-
exports.default = {
|
4
|
-
LOGIN_URL: 'sessions/authorize',
|
5
|
-
CONNECT_URL: 'sessions/socket',
|
6
|
-
LOGOUT_URL: 'sessions/self',
|
7
|
-
};
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.default = {
|
4
|
+
LOGIN_URL: 'sessions/authorize',
|
5
|
+
CONNECT_URL: 'sessions/socket',
|
6
|
+
LOGOUT_URL: 'sessions/self',
|
7
|
+
};
|
8
8
|
//# sourceMappingURL=ApiConstants.js.map
|
package/dist/NodeSocket.d.ts
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
import SocketBase from './SocketBase';
|
2
|
-
export * from './types';
|
3
|
-
export * from './PublicHelpers';
|
4
|
-
export { SocketBase as Socket };
|
1
|
+
import SocketBase from './SocketBase.js';
|
2
|
+
export * from './types/index.js';
|
3
|
+
export * from './PublicHelpers.js';
|
4
|
+
export { SocketBase as Socket };
|
package/dist/NodeSocket.js
CHANGED
@@ -1,21 +1,25 @@
|
|
1
|
-
"use strict";
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
3
|
-
if (k2 === undefined) k2 = k;
|
4
|
-
Object.
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
1
|
+
"use strict";
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
3
|
+
if (k2 === undefined) k2 = k;
|
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);
|
9
|
+
}) : (function(o, m, k, k2) {
|
10
|
+
if (k2 === undefined) k2 = k;
|
11
|
+
o[k2] = m[k];
|
12
|
+
}));
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
15
|
+
};
|
16
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
17
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
18
|
+
};
|
19
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
20
|
+
exports.Socket = void 0;
|
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.d.ts
CHANGED
@@ -1,8 +1,8 @@
|
|
1
|
-
export interface PendingResult extends Pick<PromiseConstructor, 'resolve' | 'reject'> {
|
2
|
-
promise: Promise<any>;
|
3
|
-
}
|
4
|
-
export interface AppPromise extends PromiseConstructor {
|
5
|
-
pending: () => PendingResult;
|
6
|
-
}
|
7
|
-
declare const PendingPromise: AppPromise;
|
8
|
-
export default PendingPromise;
|
1
|
+
export interface PendingResult extends Pick<PromiseConstructor, 'resolve' | 'reject'> {
|
2
|
+
promise: Promise<any>;
|
3
|
+
}
|
4
|
+
export interface AppPromise extends PromiseConstructor {
|
5
|
+
pending: () => PendingResult;
|
6
|
+
}
|
7
|
+
declare const PendingPromise: AppPromise;
|
8
|
+
export default PendingPromise;
|
package/dist/Promise.js
CHANGED
@@ -1,27 +1,27 @@
|
|
1
|
-
"use strict";
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
-
// Use native promises when available
|
4
|
-
|
5
|
-
if (typeof Promise !== 'undefined') {
|
6
|
-
AppPromise = Promise;
|
7
|
-
}
|
8
|
-
else {
|
9
|
-
AppPromise = require('promise');
|
10
|
-
}
|
11
|
-
function pending() {
|
12
|
-
|
13
|
-
|
14
|
-
resolve = arguments[0];
|
15
|
-
reject = arguments[1];
|
16
|
-
});
|
17
|
-
return {
|
18
|
-
resolve: resolve,
|
19
|
-
reject: reject,
|
20
|
-
promise
|
21
|
-
};
|
22
|
-
}
|
23
|
-
|
24
|
-
pending
|
25
|
-
});
|
26
|
-
exports.default = PendingPromise;
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
// Use native promises when available
|
4
|
+
let AppPromise;
|
5
|
+
if (typeof Promise !== 'undefined') {
|
6
|
+
AppPromise = Promise;
|
7
|
+
}
|
8
|
+
else {
|
9
|
+
AppPromise = require('promise');
|
10
|
+
}
|
11
|
+
function pending() {
|
12
|
+
let resolve, reject;
|
13
|
+
let promise = new AppPromise(function () {
|
14
|
+
resolve = arguments[0];
|
15
|
+
reject = arguments[1];
|
16
|
+
});
|
17
|
+
return {
|
18
|
+
resolve: resolve,
|
19
|
+
reject: reject,
|
20
|
+
promise
|
21
|
+
};
|
22
|
+
}
|
23
|
+
const PendingPromise = Object.assign(AppPromise, {
|
24
|
+
pending
|
25
|
+
});
|
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 {
|
2
|
-
export declare const addContextMenuItems: <IdT, EntityIdT extends EntityId | undefined = undefined>(socket: APISocket, menuItems: ContextMenuItem<IdT, EntityIdT>[],
|
1
|
+
import { APISocket, ContextMenuItem, EntityId, ContextMenu } from './types/index.js';
|
2
|
+
export declare const addContextMenuItems: <IdT, EntityIdT extends EntityId | undefined = undefined>(socket: APISocket, menuItems: ContextMenuItem<IdT, EntityIdT>[], menuTypeId: string, menu: ContextMenu) => Promise<() => void>;
|
package/dist/PublicHelpers.js
CHANGED
@@ -1,193 +1,95 @@
|
|
1
|
-
"use strict";
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
}
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
return
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
};
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
}
|
82
|
-
|
83
|
-
}
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
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*/, {}];
|
120
|
-
}
|
121
|
-
});
|
122
|
-
}); };
|
123
|
-
var addContextMenuItems = function (socket, menuItems, menuId, subscriberInfo) { return __awaiter(void 0, void 0, void 0, function () {
|
124
|
-
var removeListener, removeHook;
|
125
|
-
return __generator(this, function (_a) {
|
126
|
-
switch (_a.label) {
|
127
|
-
case 0: return [4 /*yield*/, socket.addListener('menus', menuId + "_menuitem_selected", function (data) { return __awaiter(void 0, void 0, void 0, function () {
|
128
|
-
var menuItem, isValid, selected_ids, entity_id, permissions, supports, form_values;
|
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
|
-
}];
|
189
|
-
}
|
190
|
-
});
|
191
|
-
}); };
|
192
|
-
exports.addContextMenuItems = addContextMenuItems;
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.addContextMenuItems = void 0;
|
4
|
+
const checkAccess = (menuItem, permissions) => {
|
5
|
+
if (!menuItem.access) {
|
6
|
+
return true;
|
7
|
+
}
|
8
|
+
return permissions.indexOf('admin') !== -1 || permissions.indexOf(menuItem.access) !== -1;
|
9
|
+
};
|
10
|
+
const URLS_SUPPORT = 'urls';
|
11
|
+
const FORM_SUPPORT = 'form';
|
12
|
+
const hasSupport = (support, supports) => {
|
13
|
+
return !!supports && supports.indexOf(support) !== -1;
|
14
|
+
};
|
15
|
+
// Check whether the item passes the access and filter checks
|
16
|
+
const validateItem = async (menuItem, data) => {
|
17
|
+
const { selected_ids, entity_id, permissions, supports } = data;
|
18
|
+
if (!!menuItem.urls && !hasSupport(URLS_SUPPORT, supports)) {
|
19
|
+
return false;
|
20
|
+
}
|
21
|
+
if (!!menuItem.filter && !(await menuItem.filter(selected_ids, entity_id, permissions, supports))) {
|
22
|
+
return false;
|
23
|
+
}
|
24
|
+
return checkAccess(menuItem, data.permissions);
|
25
|
+
};
|
26
|
+
const parseCallbackData = async (item, data) => {
|
27
|
+
const { selected_ids, entity_id, permissions, supports } = data;
|
28
|
+
if (!!item.urls && !!item.urls.length) {
|
29
|
+
let urls;
|
30
|
+
if (typeof item.urls === 'function') {
|
31
|
+
urls = await item.urls(selected_ids, entity_id, permissions, supports);
|
32
|
+
}
|
33
|
+
else {
|
34
|
+
urls = item.urls;
|
35
|
+
}
|
36
|
+
return {
|
37
|
+
urls,
|
38
|
+
};
|
39
|
+
}
|
40
|
+
else if (!!item.formDefinitions && hasSupport(FORM_SUPPORT, supports)) {
|
41
|
+
let formDefinitions;
|
42
|
+
if (typeof item.formDefinitions === 'function') {
|
43
|
+
formDefinitions = await item.formDefinitions(selected_ids, entity_id, permissions, supports);
|
44
|
+
}
|
45
|
+
else {
|
46
|
+
formDefinitions = item.formDefinitions;
|
47
|
+
}
|
48
|
+
return {
|
49
|
+
form_definitions: formDefinitions,
|
50
|
+
};
|
51
|
+
}
|
52
|
+
return {};
|
53
|
+
};
|
54
|
+
const addContextMenuItems = async (socket, menuItems, menuTypeId, menu) => {
|
55
|
+
const removeListener = await socket.addListener('menus', `${menuTypeId}_menuitem_selected`, async (data) => {
|
56
|
+
if (data.hook_id === menu.id) {
|
57
|
+
const menuItem = menuItems.find(i => data.menuitem_id === i.id);
|
58
|
+
if (!!menuItem) {
|
59
|
+
const isValid = await validateItem(menuItem, data);
|
60
|
+
if (isValid && !!menuItem.onClick) {
|
61
|
+
const { selected_ids, entity_id, permissions, supports, form_values } = data;
|
62
|
+
menuItem.onClick(selected_ids, entity_id, permissions, supports, form_values);
|
63
|
+
}
|
64
|
+
}
|
65
|
+
}
|
66
|
+
});
|
67
|
+
const removeHook = await socket.addHook('menus', `${menuTypeId}_list_menuitems`, async (data, accept, reject) => {
|
68
|
+
const validItems = [];
|
69
|
+
for (const item of menuItems) {
|
70
|
+
const isValid = await validateItem(item, data);
|
71
|
+
if (isValid) {
|
72
|
+
const parsedCallbackData = await parseCallbackData(item, data);
|
73
|
+
const { onClick, id, title, icon } = item;
|
74
|
+
if (!!onClick || (!!parsedCallbackData.urls && parsedCallbackData.urls.length)) {
|
75
|
+
validItems.push({
|
76
|
+
id,
|
77
|
+
title,
|
78
|
+
icon,
|
79
|
+
...parsedCallbackData,
|
80
|
+
});
|
81
|
+
}
|
82
|
+
}
|
83
|
+
}
|
84
|
+
accept({
|
85
|
+
menuitems: validItems,
|
86
|
+
icon: menu.icon,
|
87
|
+
});
|
88
|
+
}, menu);
|
89
|
+
return () => {
|
90
|
+
removeHook();
|
91
|
+
removeListener();
|
92
|
+
};
|
93
|
+
};
|
94
|
+
exports.addContextMenuItems = addContextMenuItems;
|
193
95
|
//# 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';
|
3
|
-
declare const ApiSocket: (userOptions: Options.APISocketOptions, WebSocketImpl: WebSocket) => Socket.APISocket;
|
4
|
-
export default ApiSocket;
|
1
|
+
import * as Options from './types/options.js';
|
2
|
+
import * as Socket from './types/socket.js';
|
3
|
+
declare const ApiSocket: (userOptions: Options.APISocketOptions, WebSocketImpl: WebSocket) => Socket.APISocket;
|
4
|
+
export default ApiSocket;
|