@ibm-aspera/sdk 0.2.2
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/.editorconfig +13 -0
- package/.eslintrc.js +128 -0
- package/.github/CODE_OF_CONDUCT.md +128 -0
- package/.github/CONTRIBUTING.md +147 -0
- package/.github/workflows/ci.yml +36 -0
- package/.github/workflows/documentation.yml +43 -0
- package/.github/workflows/npm_upload.yml +30 -0
- package/.husky/pre-commit +4 -0
- package/CHANGELOG.md +124 -0
- package/LICENSE +201 -0
- package/README.md +25 -0
- package/dist/commonjs/app/core.d.ts +219 -0
- package/dist/commonjs/app/core.js +546 -0
- package/dist/commonjs/app/installer.d.ts +9 -0
- package/dist/commonjs/app/installer.js +50 -0
- package/dist/commonjs/constants/constants.d.ts +6 -0
- package/dist/commonjs/constants/constants.js +9 -0
- package/dist/commonjs/constants/messages.d.ts +29 -0
- package/dist/commonjs/constants/messages.js +32 -0
- package/dist/commonjs/helpers/client/client.d.ts +5 -0
- package/dist/commonjs/helpers/client/client.js +7 -0
- package/dist/commonjs/helpers/client/http-client.d.ts +42 -0
- package/dist/commonjs/helpers/client/http-client.js +84 -0
- package/dist/commonjs/helpers/client/safari-client.d.ts +99 -0
- package/dist/commonjs/helpers/client/safari-client.js +252 -0
- package/dist/commonjs/helpers/helpers.d.ts +84 -0
- package/dist/commonjs/helpers/helpers.js +197 -0
- package/dist/commonjs/helpers/http.d.ts +16 -0
- package/dist/commonjs/helpers/http.js +42 -0
- package/dist/commonjs/helpers/ws.d.ts +62 -0
- package/dist/commonjs/helpers/ws.js +182 -0
- package/dist/commonjs/index.d.ts +41 -0
- package/dist/commonjs/index.js +99 -0
- package/dist/commonjs/models/aspera-sdk.model.d.ts +213 -0
- package/dist/commonjs/models/aspera-sdk.model.js +288 -0
- package/dist/commonjs/models/models.d.ts +640 -0
- package/dist/commonjs/models/models.js +2 -0
- package/dist/js/aspera-sdk.js +3 -0
- package/dist/js/aspera-sdk.js.LICENSE.txt +7 -0
- package/dist/js/aspera-sdk.js.map +1 -0
- package/docs/DEVELOPMENT.md +38 -0
- package/jest.config.js +15 -0
- package/jest.setup.js +0 -0
- package/package.json +50 -0
- package/src/app/core.ts +610 -0
- package/src/app/installer.ts +53 -0
- package/src/constants/constants.ts +16 -0
- package/src/constants/messages.ts +29 -0
- package/src/helpers/client/client.ts +11 -0
- package/src/helpers/client/http-client.ts +92 -0
- package/src/helpers/client/safari-client.ts +318 -0
- package/src/helpers/helpers.ts +200 -0
- package/src/helpers/http.ts +39 -0
- package/src/helpers/ws.ts +215 -0
- package/src/index.html +404 -0
- package/src/index.ts +104 -0
- package/src/models/aspera-sdk.model.ts +360 -0
- package/src/models/models.ts +669 -0
- package/tests/client.spec.ts +52 -0
- package/tests/core.spec.ts +13 -0
- package/tests/helpers.spec.ts +124 -0
- package/tests/http.spec.ts +14 -0
- package/tests/installer.spec.ts +135 -0
- package/tests/mocks.ts +11 -0
- package/tsconfig.json +10 -0
- package/tsconfig.module.json +15 -0
- package/typedoc.js +17 -0
- package/webpack.config.js +53 -0
|
@@ -0,0 +1,197 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.isSafari = exports.isValidURL = exports.throwError = exports.randomUUID = exports.getCurrentPlatform = exports.getWebsocketUrl = exports.isValidTransferSpec = exports.generateErrorBody = exports.errorLog = exports.generatePromiseObjects = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Generates promise object that can be resolved or rejected via functions
|
|
6
|
+
*
|
|
7
|
+
* @returns an object containing the promise, the resolver and rejecter
|
|
8
|
+
*/
|
|
9
|
+
var generatePromiseObjects = function () {
|
|
10
|
+
var resolver;
|
|
11
|
+
var rejecter;
|
|
12
|
+
var promise = new Promise(function (resolve, reject) {
|
|
13
|
+
resolver = resolve;
|
|
14
|
+
rejecter = reject;
|
|
15
|
+
});
|
|
16
|
+
return {
|
|
17
|
+
promise: promise,
|
|
18
|
+
resolver: resolver,
|
|
19
|
+
rejecter: rejecter
|
|
20
|
+
};
|
|
21
|
+
};
|
|
22
|
+
exports.generatePromiseObjects = generatePromiseObjects;
|
|
23
|
+
/**
|
|
24
|
+
* Log errors from Aspera SDK
|
|
25
|
+
*
|
|
26
|
+
* @param message the message indicating the error encountered
|
|
27
|
+
* @param debugData the data with useful debugging information
|
|
28
|
+
*/
|
|
29
|
+
var errorLog = function (message, debugData) {
|
|
30
|
+
if (debugData && debugData.code && debugData.message) {
|
|
31
|
+
debugData = {
|
|
32
|
+
code: debugData.code,
|
|
33
|
+
message: debugData.message,
|
|
34
|
+
data: debugData.data
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
if (typeof window === 'object') {
|
|
38
|
+
if (!Array.isArray(window.asperaSdkLogs)) {
|
|
39
|
+
window.asperaSdkLogs = [];
|
|
40
|
+
}
|
|
41
|
+
window.asperaSdkLogs.push({ message: message, debugData: debugData });
|
|
42
|
+
}
|
|
43
|
+
console.warn("Aspera SDK: ".concat(message), debugData);
|
|
44
|
+
};
|
|
45
|
+
exports.errorLog = errorLog;
|
|
46
|
+
/**
|
|
47
|
+
* Generate error object for rejecter responses
|
|
48
|
+
*
|
|
49
|
+
* @param message the message indicating the error encountered
|
|
50
|
+
* @param debugData the data with useful debugging information
|
|
51
|
+
*
|
|
52
|
+
* @returns object containing standardized error response
|
|
53
|
+
*/
|
|
54
|
+
var generateErrorBody = function (message, debugData) {
|
|
55
|
+
var errorResponse = {
|
|
56
|
+
error: true,
|
|
57
|
+
message: message
|
|
58
|
+
};
|
|
59
|
+
if (debugData && debugData.code && debugData.message) {
|
|
60
|
+
errorResponse.debugData = {
|
|
61
|
+
code: debugData.code,
|
|
62
|
+
message: debugData.message,
|
|
63
|
+
data: debugData.data
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
return errorResponse;
|
|
67
|
+
};
|
|
68
|
+
exports.generateErrorBody = generateErrorBody;
|
|
69
|
+
/**
|
|
70
|
+
* Validate if transferSpec is valid for server communication
|
|
71
|
+
*
|
|
72
|
+
* @param transferSpec the transferSpec to test
|
|
73
|
+
*
|
|
74
|
+
* @returns boolean indicating whether supplied transferSpec is valid
|
|
75
|
+
*/
|
|
76
|
+
var isValidTransferSpec = function (transferSpec) {
|
|
77
|
+
if (transferSpec &&
|
|
78
|
+
typeof transferSpec === 'object' &&
|
|
79
|
+
typeof transferSpec.direction === 'string' &&
|
|
80
|
+
typeof transferSpec.remote_host === 'string' &&
|
|
81
|
+
Array.isArray(transferSpec.paths)) {
|
|
82
|
+
return true;
|
|
83
|
+
}
|
|
84
|
+
return false;
|
|
85
|
+
};
|
|
86
|
+
exports.isValidTransferSpec = isValidTransferSpec;
|
|
87
|
+
/**
|
|
88
|
+
* Returns a string indicating the websocket URL to use for talking to the server
|
|
89
|
+
*
|
|
90
|
+
* @returns a string of the full Websocket URL
|
|
91
|
+
*/
|
|
92
|
+
var getWebsocketUrl = function (serverUrl) {
|
|
93
|
+
var wsProtocol;
|
|
94
|
+
if (serverUrl.indexOf('http:') === 0) {
|
|
95
|
+
wsProtocol = 'ws';
|
|
96
|
+
}
|
|
97
|
+
else if (serverUrl.indexOf('https:') === 0) {
|
|
98
|
+
wsProtocol = 'wss';
|
|
99
|
+
}
|
|
100
|
+
var url = serverUrl.replace('http://', '//').replace('https://', '//');
|
|
101
|
+
return "".concat(wsProtocol, ":").concat(url);
|
|
102
|
+
};
|
|
103
|
+
exports.getWebsocketUrl = getWebsocketUrl;
|
|
104
|
+
/**
|
|
105
|
+
* Simple function to get the current platform.
|
|
106
|
+
*
|
|
107
|
+
* @returns a string indicating the current platform
|
|
108
|
+
*/
|
|
109
|
+
var getCurrentPlatform = function () {
|
|
110
|
+
var ua = navigator.userAgent;
|
|
111
|
+
if (/Mac/.test(ua)) {
|
|
112
|
+
return 'macos';
|
|
113
|
+
}
|
|
114
|
+
else if (/Win/.test(ua)) {
|
|
115
|
+
return 'windows';
|
|
116
|
+
}
|
|
117
|
+
else if (/Linux/.test(ua)) {
|
|
118
|
+
return 'linux';
|
|
119
|
+
}
|
|
120
|
+
else {
|
|
121
|
+
return 'unknown';
|
|
122
|
+
}
|
|
123
|
+
};
|
|
124
|
+
exports.getCurrentPlatform = getCurrentPlatform;
|
|
125
|
+
/**
|
|
126
|
+
* Function used to create a random UUID
|
|
127
|
+
*
|
|
128
|
+
* @returns string
|
|
129
|
+
*/
|
|
130
|
+
var randomUUID = function () {
|
|
131
|
+
var _a;
|
|
132
|
+
var fallback = function () {
|
|
133
|
+
return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {
|
|
134
|
+
var r = Number(((new Date().getTime() + 16) * Math.random()).toFixed()) % 16;
|
|
135
|
+
if (c !== 'x') {
|
|
136
|
+
// eslint-disable-next-line no-bitwise
|
|
137
|
+
r = r & 0x3 | 0x8;
|
|
138
|
+
}
|
|
139
|
+
return r.toString(16);
|
|
140
|
+
});
|
|
141
|
+
};
|
|
142
|
+
return ((_a = window.crypto) === null || _a === void 0 ? void 0 : _a.randomUUID) ? window.crypto.randomUUID() : fallback();
|
|
143
|
+
};
|
|
144
|
+
exports.randomUUID = randomUUID;
|
|
145
|
+
/**
|
|
146
|
+
* Return a rejected promise
|
|
147
|
+
*
|
|
148
|
+
* @param message the message indicating the error encountered
|
|
149
|
+
* @param debugData the data with useful debugging information
|
|
150
|
+
*
|
|
151
|
+
* @returns a rejected promise
|
|
152
|
+
*/
|
|
153
|
+
var throwError = function (message, debugData) {
|
|
154
|
+
(0, exports.errorLog)(message, debugData);
|
|
155
|
+
return new Promise(function (resolve, reject) {
|
|
156
|
+
reject((0, exports.generateErrorBody)(message, debugData));
|
|
157
|
+
});
|
|
158
|
+
};
|
|
159
|
+
exports.throwError = throwError;
|
|
160
|
+
/**
|
|
161
|
+
* Check if the given string is a valid URL
|
|
162
|
+
*
|
|
163
|
+
* @param url string to check if valid URL
|
|
164
|
+
*
|
|
165
|
+
* @returns boolean
|
|
166
|
+
*/
|
|
167
|
+
var isValidURL = function (url) {
|
|
168
|
+
try {
|
|
169
|
+
new URL(url);
|
|
170
|
+
return true;
|
|
171
|
+
}
|
|
172
|
+
catch (error) {
|
|
173
|
+
return false;
|
|
174
|
+
}
|
|
175
|
+
};
|
|
176
|
+
exports.isValidURL = isValidURL;
|
|
177
|
+
/**
|
|
178
|
+
* Checks if the current browser is Safari.
|
|
179
|
+
* @returns {boolean} Whether the browser is Safari.
|
|
180
|
+
*/
|
|
181
|
+
var isSafari = function () {
|
|
182
|
+
// eslint-disable-next-line
|
|
183
|
+
return /^((?!chrome|android).)*safari/i.test(navigator.userAgent) && !window.MSStream;
|
|
184
|
+
};
|
|
185
|
+
exports.isSafari = isSafari;
|
|
186
|
+
exports.default = {
|
|
187
|
+
errorLog: exports.errorLog,
|
|
188
|
+
generateErrorBody: exports.generateErrorBody,
|
|
189
|
+
generatePromiseObjects: exports.generatePromiseObjects,
|
|
190
|
+
getCurrentPlatform: exports.getCurrentPlatform,
|
|
191
|
+
getWebsocketUrl: exports.getWebsocketUrl,
|
|
192
|
+
isSafari: exports.isSafari,
|
|
193
|
+
isValidURL: exports.isValidURL,
|
|
194
|
+
isValidTransferSpec: exports.isValidTransferSpec,
|
|
195
|
+
randomUUID: exports.randomUUID,
|
|
196
|
+
throwError: exports.throwError,
|
|
197
|
+
};
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Check HTTP promise response for server error response (non 2XX status) and reject promise is error
|
|
3
|
+
*
|
|
4
|
+
* @param promise the HTTP promise to check for HTTP status code of 2XX for success
|
|
5
|
+
*
|
|
6
|
+
* @returns promise for the HTTP connection with catch supporting error
|
|
7
|
+
*/
|
|
8
|
+
export declare const handlePromiseErrors: (promise: Promise<any>) => Promise<any>;
|
|
9
|
+
/**
|
|
10
|
+
* Make a GET for retrieving data from a server
|
|
11
|
+
*
|
|
12
|
+
* @param url the url string of the resource on the server
|
|
13
|
+
*
|
|
14
|
+
* @returns a promise that will resolve with the response from the server or reject if network/server error
|
|
15
|
+
*/
|
|
16
|
+
export declare const apiGet: (url: string) => Promise<any>;
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.apiGet = exports.handlePromiseErrors = void 0;
|
|
4
|
+
var helpers_1 = require("./helpers");
|
|
5
|
+
/**
|
|
6
|
+
* Check HTTP promise response for server error response (non 2XX status) and reject promise is error
|
|
7
|
+
*
|
|
8
|
+
* @param promise the HTTP promise to check for HTTP status code of 2XX for success
|
|
9
|
+
*
|
|
10
|
+
* @returns promise for the HTTP connection with catch supporting error
|
|
11
|
+
*/
|
|
12
|
+
var handlePromiseErrors = function (promise) {
|
|
13
|
+
var promiseInfo = (0, helpers_1.generatePromiseObjects)();
|
|
14
|
+
promise.then(function (response) {
|
|
15
|
+
if (response.ok) {
|
|
16
|
+
promiseInfo.resolver(response);
|
|
17
|
+
}
|
|
18
|
+
else {
|
|
19
|
+
promiseInfo.rejecter(response);
|
|
20
|
+
}
|
|
21
|
+
return response;
|
|
22
|
+
}).catch(function (error) {
|
|
23
|
+
promiseInfo.rejecter(error);
|
|
24
|
+
});
|
|
25
|
+
return promiseInfo.promise;
|
|
26
|
+
};
|
|
27
|
+
exports.handlePromiseErrors = handlePromiseErrors;
|
|
28
|
+
/**
|
|
29
|
+
* Make a GET for retrieving data from a server
|
|
30
|
+
*
|
|
31
|
+
* @param url the url string of the resource on the server
|
|
32
|
+
*
|
|
33
|
+
* @returns a promise that will resolve with the response from the server or reject if network/server error
|
|
34
|
+
*/
|
|
35
|
+
var apiGet = function (url) {
|
|
36
|
+
return (0, exports.handlePromiseErrors)(fetch(url, {
|
|
37
|
+
headers: {
|
|
38
|
+
'Content-Type': 'application/json',
|
|
39
|
+
},
|
|
40
|
+
}));
|
|
41
|
+
};
|
|
42
|
+
exports.apiGet = apiGet;
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { WebsocketTopics } from '../models/models';
|
|
2
|
+
export declare class WebsocketService {
|
|
3
|
+
/** The main websocket connection to Aspera App*/
|
|
4
|
+
private globalSocket;
|
|
5
|
+
/** A map of requested subscription names and the callback for them */
|
|
6
|
+
private sockets;
|
|
7
|
+
/** The callback for websocket events */
|
|
8
|
+
private eventListener;
|
|
9
|
+
/** Indicator if the websocket is already connected */
|
|
10
|
+
private isConnected;
|
|
11
|
+
/** Global promise object that resolves when init completes */
|
|
12
|
+
private initPromise;
|
|
13
|
+
/** Log call for not being ready */
|
|
14
|
+
private handleNotReady;
|
|
15
|
+
/**
|
|
16
|
+
* This function handles when a connection is opened
|
|
17
|
+
*/
|
|
18
|
+
private handleOpen;
|
|
19
|
+
/**
|
|
20
|
+
* This function handles completed subscription
|
|
21
|
+
*/
|
|
22
|
+
private handleClose;
|
|
23
|
+
/**
|
|
24
|
+
* This function handles errors received from the websocket
|
|
25
|
+
*/
|
|
26
|
+
private handleError;
|
|
27
|
+
/**
|
|
28
|
+
* This function handles messages received from the websocket
|
|
29
|
+
*/
|
|
30
|
+
private handleMessage;
|
|
31
|
+
/**
|
|
32
|
+
* This function joins the channel to be able to subscribe to events
|
|
33
|
+
*/
|
|
34
|
+
private joinChannel;
|
|
35
|
+
/**
|
|
36
|
+
* This function registers clients to listen to a certain message name. Returns any to allow functions to declare proper type
|
|
37
|
+
*
|
|
38
|
+
* @param messageName - the name of messages to listen to (one message name per subscription)
|
|
39
|
+
* @param callback - the callback function
|
|
40
|
+
*/
|
|
41
|
+
registerMessage(messageName: WebsocketTopics, callback: Function): void;
|
|
42
|
+
/**
|
|
43
|
+
*
|
|
44
|
+
* @param callback This function registers clients to a certain WebSocket event.
|
|
45
|
+
*
|
|
46
|
+
* @param callback - the callback function to call with the event name.
|
|
47
|
+
*/
|
|
48
|
+
registerEvent(callback: Function): void;
|
|
49
|
+
/**
|
|
50
|
+
* This function starts the websocket subscription with the websocket provider
|
|
51
|
+
*
|
|
52
|
+
* @returns a promise that resolves when the websocket connection is established
|
|
53
|
+
*/
|
|
54
|
+
init(): Promise<unknown>;
|
|
55
|
+
private connect;
|
|
56
|
+
private reconnect;
|
|
57
|
+
private getWebSocketConnection;
|
|
58
|
+
private notifyEvent;
|
|
59
|
+
private updateRpcPort;
|
|
60
|
+
}
|
|
61
|
+
export declare const websocketService: WebsocketService;
|
|
62
|
+
export default WebsocketService;
|
|
@@ -0,0 +1,182 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.websocketService = exports.WebsocketService = void 0;
|
|
4
|
+
var helpers_1 = require("./helpers");
|
|
5
|
+
var messages_1 = require("../constants/messages");
|
|
6
|
+
var index_1 = require("../index");
|
|
7
|
+
var WebsocketService = /** @class */ (function () {
|
|
8
|
+
function WebsocketService() {
|
|
9
|
+
var _this = this;
|
|
10
|
+
/** A map of requested subscription names and the callback for them */
|
|
11
|
+
this.sockets = new Map();
|
|
12
|
+
/** Indicator if the websocket is already connected */
|
|
13
|
+
this.isConnected = false;
|
|
14
|
+
/** Global promise object that resolves when init completes */
|
|
15
|
+
this.initPromise = (0, helpers_1.generatePromiseObjects)();
|
|
16
|
+
/**
|
|
17
|
+
* This function handles when a connection is opened
|
|
18
|
+
*/
|
|
19
|
+
this.handleOpen = function () {
|
|
20
|
+
if (_this.isConnected || !_this.joinChannel()) {
|
|
21
|
+
return;
|
|
22
|
+
}
|
|
23
|
+
_this.isConnected = true;
|
|
24
|
+
_this.updateRpcPort();
|
|
25
|
+
_this.notifyEvent('RECONNECT');
|
|
26
|
+
};
|
|
27
|
+
/**
|
|
28
|
+
* This function handles completed subscription
|
|
29
|
+
*/
|
|
30
|
+
this.handleClose = function () {
|
|
31
|
+
if (_this.isConnected) {
|
|
32
|
+
_this.isConnected = false;
|
|
33
|
+
_this.notifyEvent('CLOSED');
|
|
34
|
+
}
|
|
35
|
+
if (!_this.globalSocket) {
|
|
36
|
+
_this.handleNotReady();
|
|
37
|
+
return;
|
|
38
|
+
}
|
|
39
|
+
_this.reconnect();
|
|
40
|
+
};
|
|
41
|
+
/**
|
|
42
|
+
* This function handles errors received from the websocket
|
|
43
|
+
*/
|
|
44
|
+
this.handleError = function () {
|
|
45
|
+
(0, helpers_1.errorLog)(messages_1.messages.websocketClosedError);
|
|
46
|
+
};
|
|
47
|
+
/**
|
|
48
|
+
* This function handles messages received from the websocket
|
|
49
|
+
*/
|
|
50
|
+
this.handleMessage = function (message) {
|
|
51
|
+
var data;
|
|
52
|
+
try {
|
|
53
|
+
data = JSON.parse(message.data);
|
|
54
|
+
}
|
|
55
|
+
catch (error) {
|
|
56
|
+
(0, helpers_1.errorLog)('Unable to parse Websocket message', { error: error, message: message });
|
|
57
|
+
}
|
|
58
|
+
// Message we get on subscription
|
|
59
|
+
if (data && data.id === 1) {
|
|
60
|
+
_this.initPromise.resolver(data);
|
|
61
|
+
return;
|
|
62
|
+
}
|
|
63
|
+
var socket = _this.sockets.get(data.method);
|
|
64
|
+
if (socket && data.params) {
|
|
65
|
+
socket(data.params);
|
|
66
|
+
}
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
/** Log call for not being ready */
|
|
70
|
+
WebsocketService.prototype.handleNotReady = function () {
|
|
71
|
+
(0, helpers_1.errorLog)(messages_1.messages.websocketNotReady);
|
|
72
|
+
};
|
|
73
|
+
/**
|
|
74
|
+
* This function joins the channel to be able to subscribe to events
|
|
75
|
+
*/
|
|
76
|
+
WebsocketService.prototype.joinChannel = function () {
|
|
77
|
+
if (!this.globalSocket) {
|
|
78
|
+
this.handleNotReady();
|
|
79
|
+
return false;
|
|
80
|
+
}
|
|
81
|
+
this.globalSocket.send(JSON.stringify({ jsonrpc: '2.0', method: 'subscribe_transfer_activity', params: [index_1.asperaSdk.globals.appId], id: 1 }));
|
|
82
|
+
return true;
|
|
83
|
+
};
|
|
84
|
+
/**
|
|
85
|
+
* This function registers clients to listen to a certain message name. Returns any to allow functions to declare proper type
|
|
86
|
+
*
|
|
87
|
+
* @param messageName - the name of messages to listen to (one message name per subscription)
|
|
88
|
+
* @param callback - the callback function
|
|
89
|
+
*/
|
|
90
|
+
WebsocketService.prototype.registerMessage = function (messageName, callback) {
|
|
91
|
+
if (!this.sockets.get(messageName)) {
|
|
92
|
+
this.sockets.set(messageName, function (data) {
|
|
93
|
+
callback(data.result);
|
|
94
|
+
});
|
|
95
|
+
}
|
|
96
|
+
};
|
|
97
|
+
/**
|
|
98
|
+
*
|
|
99
|
+
* @param callback This function registers clients to a certain WebSocket event.
|
|
100
|
+
*
|
|
101
|
+
* @param callback - the callback function to call with the event name.
|
|
102
|
+
*/
|
|
103
|
+
WebsocketService.prototype.registerEvent = function (callback) {
|
|
104
|
+
this.eventListener = callback;
|
|
105
|
+
this.eventListener(this.isConnected ? 'RECONNECT' : 'CLOSED');
|
|
106
|
+
};
|
|
107
|
+
/**
|
|
108
|
+
* This function starts the websocket subscription with the websocket provider
|
|
109
|
+
*
|
|
110
|
+
* @returns a promise that resolves when the websocket connection is established
|
|
111
|
+
*/
|
|
112
|
+
WebsocketService.prototype.init = function () {
|
|
113
|
+
this.connect();
|
|
114
|
+
return this.initPromise.promise;
|
|
115
|
+
};
|
|
116
|
+
WebsocketService.prototype.connect = function () {
|
|
117
|
+
var _this = this;
|
|
118
|
+
this.getWebSocketConnection(33024, 33029)
|
|
119
|
+
.then(function (webSocket) {
|
|
120
|
+
_this.globalSocket = webSocket;
|
|
121
|
+
_this.globalSocket.onerror = _this.handleError;
|
|
122
|
+
_this.globalSocket.onclose = _this.handleClose;
|
|
123
|
+
_this.globalSocket.onopen = _this.handleOpen;
|
|
124
|
+
_this.globalSocket.onmessage = _this.handleMessage;
|
|
125
|
+
_this.handleOpen();
|
|
126
|
+
}).catch(function () {
|
|
127
|
+
_this.reconnect();
|
|
128
|
+
});
|
|
129
|
+
};
|
|
130
|
+
WebsocketService.prototype.reconnect = function () {
|
|
131
|
+
var _this = this;
|
|
132
|
+
if (this.globalSocket) {
|
|
133
|
+
this.globalSocket.close();
|
|
134
|
+
}
|
|
135
|
+
setTimeout(function () {
|
|
136
|
+
_this.connect();
|
|
137
|
+
}, 1000);
|
|
138
|
+
};
|
|
139
|
+
WebsocketService.prototype.getWebSocketConnection = function (startPort, endPort) {
|
|
140
|
+
var webSocketUrl = (0, helpers_1.getWebsocketUrl)(index_1.asperaSdk.globals.asperaAppUrl);
|
|
141
|
+
var checkPort = function (port) {
|
|
142
|
+
return new Promise(function (resolve, reject) {
|
|
143
|
+
var webSocket = new WebSocket("".concat(webSocketUrl, ":").concat(port));
|
|
144
|
+
webSocket.onopen = function () {
|
|
145
|
+
resolve(webSocket);
|
|
146
|
+
};
|
|
147
|
+
webSocket.onerror = function () {
|
|
148
|
+
reject("Connection failed on port ".concat(port));
|
|
149
|
+
};
|
|
150
|
+
});
|
|
151
|
+
};
|
|
152
|
+
return new Promise(function (resolve, reject) {
|
|
153
|
+
var connectPort = function (port) {
|
|
154
|
+
if (port > endPort) {
|
|
155
|
+
return reject('No available WebSocket connection found');
|
|
156
|
+
}
|
|
157
|
+
checkPort(port)
|
|
158
|
+
.then(function (ws) { return resolve(ws); })
|
|
159
|
+
.catch(function (error) {
|
|
160
|
+
connectPort(port + 1);
|
|
161
|
+
});
|
|
162
|
+
};
|
|
163
|
+
connectPort(startPort);
|
|
164
|
+
});
|
|
165
|
+
};
|
|
166
|
+
WebsocketService.prototype.notifyEvent = function (event) {
|
|
167
|
+
if (typeof this.eventListener === 'function') {
|
|
168
|
+
this.eventListener(event);
|
|
169
|
+
}
|
|
170
|
+
};
|
|
171
|
+
WebsocketService.prototype.updateRpcPort = function () {
|
|
172
|
+
if (!this.globalSocket) {
|
|
173
|
+
return;
|
|
174
|
+
}
|
|
175
|
+
var url = new URL(this.globalSocket.url);
|
|
176
|
+
index_1.asperaSdk.globals.rpcPort = Number(url.port);
|
|
177
|
+
};
|
|
178
|
+
return WebsocketService;
|
|
179
|
+
}());
|
|
180
|
+
exports.WebsocketService = WebsocketService;
|
|
181
|
+
exports.websocketService = new WebsocketService();
|
|
182
|
+
exports.default = WebsocketService;
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { AsperaSdk } from './models/aspera-sdk.model';
|
|
2
|
+
import { createDropzone, deregisterActivityCallback, deregisterRemovedCallback, deregisterSafariExtensionStatusCallback, deregisterStatusCallback, getAllTransfers, getInfo, getTransfer, init, modifyTransfer, registerActivityCallback, registerRemovedCallback, registerSafariExtensionStatusCallback, registerStatusCallback, removeDropzone, removeTransfer, resumeTransfer, setBranding, showDirectory, showPreferences, showSelectFileDialog, showSelectFolderDialog, startTransfer, stopTransfer, testConnection } from './app/core';
|
|
3
|
+
import { getInstallerInfo } from './app/installer';
|
|
4
|
+
import { isSafari } from './helpers/helpers';
|
|
5
|
+
export declare const asperaSdk: AsperaSdk;
|
|
6
|
+
declare const launch: () => void;
|
|
7
|
+
export { isSafari, init, testConnection, startTransfer, launch, registerActivityCallback, deregisterActivityCallback, removeTransfer, showDirectory, stopTransfer, resumeTransfer, getAllTransfers, getTransfer, registerRemovedCallback, deregisterRemovedCallback, showSelectFileDialog, showSelectFolderDialog, showPreferences, modifyTransfer, createDropzone, removeDropzone, getInstallerInfo, registerStatusCallback, deregisterStatusCallback, registerSafariExtensionStatusCallback, deregisterSafariExtensionStatusCallback, setBranding, getInfo, };
|
|
8
|
+
declare const _default: {
|
|
9
|
+
isSafari: () => boolean;
|
|
10
|
+
init: (options?: import("./models/models").InitOptions) => Promise<any>;
|
|
11
|
+
testConnection: () => Promise<any>;
|
|
12
|
+
startTransfer: (transferSpec: import("./models/models").TransferSpec, asperaSdkSpec: import("./models/models").AsperaSdkSpec) => Promise<import("./models/models").AsperaSdkTransfer>;
|
|
13
|
+
launch: () => void;
|
|
14
|
+
registerActivityCallback: (callback: (transfers: import("./models/aspera-sdk.model").TransferResponse) => void) => string;
|
|
15
|
+
deregisterActivityCallback: (id: string) => void;
|
|
16
|
+
removeTransfer: (id: string) => Promise<any>;
|
|
17
|
+
showDirectory: (id: string) => Promise<any>;
|
|
18
|
+
stopTransfer: (id: string) => Promise<any>;
|
|
19
|
+
resumeTransfer: (id: string, options?: import("./models/models").ResumeTransferOptions) => Promise<import("./models/models").AsperaSdkTransfer>;
|
|
20
|
+
getAllTransfers: () => Promise<import("./models/models").AsperaSdkTransfer[]>;
|
|
21
|
+
getTransfer: (id: string) => Promise<import("./models/models").AsperaSdkTransfer>;
|
|
22
|
+
registerRemovedCallback: (callback: (transfer: import("./models/models").AsperaSdkTransfer) => void) => string;
|
|
23
|
+
deregisterRemovedCallback: (id: string) => void;
|
|
24
|
+
showSelectFileDialog: (options?: import("./models/models").FileDialogOptions) => Promise<import("./models/models").DataTransferResponse>;
|
|
25
|
+
showSelectFolderDialog: (options?: import("./models/models").FolderDialogOptions) => Promise<import("./models/models").DataTransferResponse>;
|
|
26
|
+
showPreferences: () => Promise<any>;
|
|
27
|
+
modifyTransfer: (id: string, options: import("./models/models").ModifyTransferOptions) => Promise<import("./models/models").AsperaSdkTransfer>;
|
|
28
|
+
createDropzone: (callback: (data: {
|
|
29
|
+
event: any;
|
|
30
|
+
files: import("./models/models").DataTransferResponse;
|
|
31
|
+
}) => void, elementSelector: string) => void;
|
|
32
|
+
removeDropzone: (elementSelector: string) => void;
|
|
33
|
+
getInstallerInfo: (options?: import("./models/models").InstallerOptions) => Promise<import("./models/models").InstallerInfoResponse>;
|
|
34
|
+
registerStatusCallback: (callback: (status: import("./models/models").WebsocketEvent) => void) => string;
|
|
35
|
+
deregisterStatusCallback: (id: string) => void;
|
|
36
|
+
registerSafariExtensionStatusCallback: (callback: (status: import("./models/models").SafariExtensionEvent) => void) => string;
|
|
37
|
+
deregisterSafariExtensionStatusCallback: (id: string) => void;
|
|
38
|
+
setBranding: (id: string, options: import("./models/models").CustomBrandingOptions) => Promise<any>;
|
|
39
|
+
getInfo: () => Promise<import("./models/aspera-sdk.model").AsperaSdkInfo>;
|
|
40
|
+
};
|
|
41
|
+
export default _default;
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getInfo = exports.setBranding = exports.deregisterSafariExtensionStatusCallback = exports.registerSafariExtensionStatusCallback = exports.deregisterStatusCallback = exports.registerStatusCallback = exports.getInstallerInfo = exports.removeDropzone = exports.createDropzone = exports.modifyTransfer = exports.showPreferences = exports.showSelectFolderDialog = exports.showSelectFileDialog = exports.deregisterRemovedCallback = exports.registerRemovedCallback = exports.getTransfer = exports.getAllTransfers = exports.resumeTransfer = exports.stopTransfer = exports.showDirectory = exports.removeTransfer = exports.deregisterActivityCallback = exports.registerActivityCallback = exports.launch = exports.startTransfer = exports.testConnection = exports.init = exports.isSafari = exports.asperaSdk = void 0;
|
|
4
|
+
var aspera_sdk_model_1 = require("./models/aspera-sdk.model");
|
|
5
|
+
var core_1 = require("./app/core");
|
|
6
|
+
Object.defineProperty(exports, "createDropzone", { enumerable: true, get: function () { return core_1.createDropzone; } });
|
|
7
|
+
Object.defineProperty(exports, "deregisterActivityCallback", { enumerable: true, get: function () { return core_1.deregisterActivityCallback; } });
|
|
8
|
+
Object.defineProperty(exports, "deregisterRemovedCallback", { enumerable: true, get: function () { return core_1.deregisterRemovedCallback; } });
|
|
9
|
+
Object.defineProperty(exports, "deregisterSafariExtensionStatusCallback", { enumerable: true, get: function () { return core_1.deregisterSafariExtensionStatusCallback; } });
|
|
10
|
+
Object.defineProperty(exports, "deregisterStatusCallback", { enumerable: true, get: function () { return core_1.deregisterStatusCallback; } });
|
|
11
|
+
Object.defineProperty(exports, "getAllTransfers", { enumerable: true, get: function () { return core_1.getAllTransfers; } });
|
|
12
|
+
Object.defineProperty(exports, "getInfo", { enumerable: true, get: function () { return core_1.getInfo; } });
|
|
13
|
+
Object.defineProperty(exports, "getTransfer", { enumerable: true, get: function () { return core_1.getTransfer; } });
|
|
14
|
+
Object.defineProperty(exports, "init", { enumerable: true, get: function () { return core_1.init; } });
|
|
15
|
+
Object.defineProperty(exports, "modifyTransfer", { enumerable: true, get: function () { return core_1.modifyTransfer; } });
|
|
16
|
+
Object.defineProperty(exports, "registerActivityCallback", { enumerable: true, get: function () { return core_1.registerActivityCallback; } });
|
|
17
|
+
Object.defineProperty(exports, "registerRemovedCallback", { enumerable: true, get: function () { return core_1.registerRemovedCallback; } });
|
|
18
|
+
Object.defineProperty(exports, "registerSafariExtensionStatusCallback", { enumerable: true, get: function () { return core_1.registerSafariExtensionStatusCallback; } });
|
|
19
|
+
Object.defineProperty(exports, "registerStatusCallback", { enumerable: true, get: function () { return core_1.registerStatusCallback; } });
|
|
20
|
+
Object.defineProperty(exports, "removeDropzone", { enumerable: true, get: function () { return core_1.removeDropzone; } });
|
|
21
|
+
Object.defineProperty(exports, "removeTransfer", { enumerable: true, get: function () { return core_1.removeTransfer; } });
|
|
22
|
+
Object.defineProperty(exports, "resumeTransfer", { enumerable: true, get: function () { return core_1.resumeTransfer; } });
|
|
23
|
+
Object.defineProperty(exports, "setBranding", { enumerable: true, get: function () { return core_1.setBranding; } });
|
|
24
|
+
Object.defineProperty(exports, "showDirectory", { enumerable: true, get: function () { return core_1.showDirectory; } });
|
|
25
|
+
Object.defineProperty(exports, "showPreferences", { enumerable: true, get: function () { return core_1.showPreferences; } });
|
|
26
|
+
Object.defineProperty(exports, "showSelectFileDialog", { enumerable: true, get: function () { return core_1.showSelectFileDialog; } });
|
|
27
|
+
Object.defineProperty(exports, "showSelectFolderDialog", { enumerable: true, get: function () { return core_1.showSelectFolderDialog; } });
|
|
28
|
+
Object.defineProperty(exports, "startTransfer", { enumerable: true, get: function () { return core_1.startTransfer; } });
|
|
29
|
+
Object.defineProperty(exports, "stopTransfer", { enumerable: true, get: function () { return core_1.stopTransfer; } });
|
|
30
|
+
Object.defineProperty(exports, "testConnection", { enumerable: true, get: function () { return core_1.testConnection; } });
|
|
31
|
+
var installer_1 = require("./app/installer");
|
|
32
|
+
Object.defineProperty(exports, "getInstallerInfo", { enumerable: true, get: function () { return installer_1.getInstallerInfo; } });
|
|
33
|
+
var helpers_1 = require("./helpers/helpers");
|
|
34
|
+
Object.defineProperty(exports, "isSafari", { enumerable: true, get: function () { return helpers_1.isSafari; } });
|
|
35
|
+
exports.asperaSdk = new aspera_sdk_model_1.AsperaSdk();
|
|
36
|
+
exports.asperaSdk.init = core_1.init;
|
|
37
|
+
exports.asperaSdk.testConnection = core_1.testConnection;
|
|
38
|
+
exports.asperaSdk.startTransfer = core_1.startTransfer;
|
|
39
|
+
exports.asperaSdk.registerActivityCallback = core_1.registerActivityCallback;
|
|
40
|
+
exports.asperaSdk.deregisterActivityCallback = core_1.deregisterActivityCallback;
|
|
41
|
+
exports.asperaSdk.removeTransfer = core_1.removeTransfer;
|
|
42
|
+
exports.asperaSdk.showDirectory = core_1.showDirectory;
|
|
43
|
+
exports.asperaSdk.stopTransfer = core_1.stopTransfer;
|
|
44
|
+
exports.asperaSdk.resumeTransfer = core_1.resumeTransfer;
|
|
45
|
+
exports.asperaSdk.getAllTransfers = core_1.getAllTransfers;
|
|
46
|
+
exports.asperaSdk.getTransfer = core_1.getTransfer;
|
|
47
|
+
exports.asperaSdk.registerRemovedCallback = core_1.registerRemovedCallback;
|
|
48
|
+
exports.asperaSdk.deregisterRemovedCallback = core_1.deregisterRemovedCallback;
|
|
49
|
+
exports.asperaSdk.showSelectFileDialog = core_1.showSelectFileDialog;
|
|
50
|
+
exports.asperaSdk.showSelectFolderDialog = core_1.showSelectFolderDialog;
|
|
51
|
+
exports.asperaSdk.showPreferences = core_1.showPreferences;
|
|
52
|
+
exports.asperaSdk.modifyTransfer = core_1.modifyTransfer;
|
|
53
|
+
exports.asperaSdk.createDropzone = core_1.createDropzone;
|
|
54
|
+
exports.asperaSdk.removeDropzone = core_1.removeDropzone;
|
|
55
|
+
exports.asperaSdk.getInstallerInfo = installer_1.getInstallerInfo;
|
|
56
|
+
exports.asperaSdk.registerStatusCallback = core_1.registerStatusCallback;
|
|
57
|
+
exports.asperaSdk.deregisterStatusCallback = core_1.deregisterStatusCallback;
|
|
58
|
+
exports.asperaSdk.registerSafariExtensionStatusCallback = core_1.registerSafariExtensionStatusCallback;
|
|
59
|
+
exports.asperaSdk.deregisterSafariExtensionStatusCallback = core_1.deregisterSafariExtensionStatusCallback;
|
|
60
|
+
exports.asperaSdk.initDragDrop = core_1.initDragDrop;
|
|
61
|
+
exports.asperaSdk.setBranding = core_1.setBranding;
|
|
62
|
+
exports.asperaSdk.getInfo = core_1.getInfo;
|
|
63
|
+
exports.asperaSdk.isSafari = helpers_1.isSafari;
|
|
64
|
+
var launch = exports.asperaSdk.globals.launch;
|
|
65
|
+
exports.launch = launch;
|
|
66
|
+
exports.asperaSdk.launch = launch;
|
|
67
|
+
if (typeof window === 'object') {
|
|
68
|
+
window.asperaSdk = exports.asperaSdk;
|
|
69
|
+
}
|
|
70
|
+
exports.default = {
|
|
71
|
+
isSafari: helpers_1.isSafari,
|
|
72
|
+
init: core_1.init,
|
|
73
|
+
testConnection: core_1.testConnection,
|
|
74
|
+
startTransfer: core_1.startTransfer,
|
|
75
|
+
launch: launch,
|
|
76
|
+
registerActivityCallback: core_1.registerActivityCallback,
|
|
77
|
+
deregisterActivityCallback: core_1.deregisterActivityCallback,
|
|
78
|
+
removeTransfer: core_1.removeTransfer,
|
|
79
|
+
showDirectory: core_1.showDirectory,
|
|
80
|
+
stopTransfer: core_1.stopTransfer,
|
|
81
|
+
resumeTransfer: core_1.resumeTransfer,
|
|
82
|
+
getAllTransfers: core_1.getAllTransfers,
|
|
83
|
+
getTransfer: core_1.getTransfer,
|
|
84
|
+
registerRemovedCallback: core_1.registerRemovedCallback,
|
|
85
|
+
deregisterRemovedCallback: core_1.deregisterRemovedCallback,
|
|
86
|
+
showSelectFileDialog: core_1.showSelectFileDialog,
|
|
87
|
+
showSelectFolderDialog: core_1.showSelectFolderDialog,
|
|
88
|
+
showPreferences: core_1.showPreferences,
|
|
89
|
+
modifyTransfer: core_1.modifyTransfer,
|
|
90
|
+
createDropzone: core_1.createDropzone,
|
|
91
|
+
removeDropzone: core_1.removeDropzone,
|
|
92
|
+
getInstallerInfo: installer_1.getInstallerInfo,
|
|
93
|
+
registerStatusCallback: core_1.registerStatusCallback,
|
|
94
|
+
deregisterStatusCallback: core_1.deregisterStatusCallback,
|
|
95
|
+
registerSafariExtensionStatusCallback: core_1.registerSafariExtensionStatusCallback,
|
|
96
|
+
deregisterSafariExtensionStatusCallback: core_1.deregisterSafariExtensionStatusCallback,
|
|
97
|
+
setBranding: core_1.setBranding,
|
|
98
|
+
getInfo: core_1.getInfo,
|
|
99
|
+
};
|