@ibm-aspera/sdk 0.5.0 → 0.7.0
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/README.md +1 -1
- package/dist/commonjs/app/core.d.ts +9 -1
- package/dist/commonjs/app/core.js +46 -1
- package/dist/commonjs/constants/messages.d.ts +3 -0
- package/dist/commonjs/constants/messages.js +3 -0
- package/dist/commonjs/http-gateway/core.d.ts +12 -0
- package/dist/commonjs/http-gateway/core.js +47 -8
- package/dist/commonjs/http-gateway/download.js +3 -2
- package/dist/commonjs/http-gateway/upload.js +7 -1
- package/dist/commonjs/index.d.ts +3 -3
- package/dist/commonjs/index.js +3 -1
- package/dist/commonjs/models/aspera-sdk.model.d.ts +7 -1
- package/dist/commonjs/models/aspera-sdk.model.js +4 -0
- package/dist/commonjs/models/models.d.ts +22 -0
- package/dist/js/aspera-sdk.js +1 -1
- package/dist/js/aspera-sdk.js.LICENSE.txt +1 -1
- package/dist/js/aspera-sdk.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -29,4 +29,4 @@ Along with the examples, you can find an example test application [here](https:/
|
|
|
29
29
|
|
|
30
30
|
## Migration from Connect SDK
|
|
31
31
|
|
|
32
|
-
Refer to [MIGRATION](MIGRATION.md) for recommended changes when migrating your web application from the Connect SDK (`@ibm-aspera/connect-sdk-js`).
|
|
32
|
+
Refer to [MIGRATION](https://github.com/IBM/aspera-sdk-js/blob/main/MIGRATION.md) for recommended changes when migrating your web application from the Connect SDK (`@ibm-aspera/connect-sdk-js`).
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { AsperaSdkInfo, TransferResponse } from '../models/aspera-sdk.model';
|
|
2
|
-
import { CustomBrandingOptions, DataTransferResponse, AsperaSdkSpec, AsperaSdkTransfer, FileDialogOptions, FolderDialogOptions, InitOptions, ModifyTransferOptions, Pagination, PaginatedFilesResponse, ResumeTransferOptions, TransferSpec, WebsocketEvent, ReadChunkAsArrayBufferResponse, ReadAsArrayBufferResponse, SdkCapabilities } from '../models/models';
|
|
2
|
+
import { CustomBrandingOptions, DataTransferResponse, AsperaSdkSpec, AsperaSdkTransfer, FileDialogOptions, FolderDialogOptions, InitOptions, ModifyTransferOptions, Pagination, PaginatedFilesResponse, ResumeTransferOptions, TransferSpec, WebsocketEvent, ReadChunkAsArrayBufferResponse, ReadAsArrayBufferResponse, SdkCapabilities, GetChecksumOptions, ChecksumFileResponse } from '../models/models';
|
|
3
3
|
import * as ConnectTypes from '@ibm-aspera/connect-sdk-js/dist/esm/core/types';
|
|
4
4
|
/**
|
|
5
5
|
* Check if IBM Aspera for Desktop connection works. This function is called by init
|
|
@@ -220,6 +220,14 @@ export declare const readAsArrayBuffer: (path: string) => Promise<ReadAsArrayBuf
|
|
|
220
220
|
* @returns a promise that resolves with the file chunk data as a base64-encoded string and mime type
|
|
221
221
|
*/
|
|
222
222
|
export declare const readChunkAsArrayBuffer: (path: string, offset: number, chunkSize: number) => Promise<ReadChunkAsArrayBufferResponse>;
|
|
223
|
+
/**
|
|
224
|
+
* Get a checksum of the specified chunk size of the file.
|
|
225
|
+
*
|
|
226
|
+
* @param options checksum options including path, offset, chunkSize, and checksumMethod
|
|
227
|
+
*
|
|
228
|
+
* @returns a promise that resolves with the checksum information
|
|
229
|
+
*/
|
|
230
|
+
export declare const getChecksum: (options: GetChecksumOptions) => Promise<ChecksumFileResponse>;
|
|
223
231
|
/**
|
|
224
232
|
* Returns an object describing the high-level capabilities supported by the user's
|
|
225
233
|
* transfer client (e.g. IBM Aspera for desktop, Connect, or HTTP Gateway).
|
|
@@ -11,7 +11,7 @@ var __assign = (this && this.__assign) || function () {
|
|
|
11
11
|
return __assign.apply(this, arguments);
|
|
12
12
|
};
|
|
13
13
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
14
|
-
exports.getCapabilities = exports.readChunkAsArrayBuffer = exports.readAsArrayBuffer = exports.getInfo = exports.removeDropzone = exports.createDropzone = exports.setBranding = exports.modifyTransfer = exports.showDirectory = exports.getFilesList = exports.getTransfer = exports.getAllTransfers = exports.showPreferences = exports.showSelectFolderDialog = exports.showSelectFileDialog = exports.resumeTransfer = exports.stopTransfer = exports.removeTransfer = exports.deregisterStatusCallback = exports.registerStatusCallback = exports.deregisterActivityCallback = exports.registerActivityCallback = exports.startTransfer = exports.init = exports.initDragDrop = exports.testConnection = void 0;
|
|
14
|
+
exports.getCapabilities = exports.getChecksum = exports.readChunkAsArrayBuffer = exports.readAsArrayBuffer = exports.getInfo = exports.removeDropzone = exports.createDropzone = exports.setBranding = exports.modifyTransfer = exports.showDirectory = exports.getFilesList = exports.getTransfer = exports.getAllTransfers = exports.showPreferences = exports.showSelectFolderDialog = exports.showSelectFileDialog = exports.resumeTransfer = exports.stopTransfer = exports.removeTransfer = exports.deregisterStatusCallback = exports.registerStatusCallback = exports.deregisterActivityCallback = exports.registerActivityCallback = exports.startTransfer = exports.init = exports.initDragDrop = exports.testConnection = void 0;
|
|
15
15
|
var messages_1 = require("../constants/messages");
|
|
16
16
|
var client_1 = require("../helpers/client/client");
|
|
17
17
|
var helpers_1 = require("../helpers/helpers");
|
|
@@ -316,6 +316,9 @@ exports.removeTransfer = removeTransfer;
|
|
|
316
316
|
* @returns a promise that resolves if transfer is stopped and rejects if transfer cannot be stopped
|
|
317
317
|
*/
|
|
318
318
|
var stopTransfer = function (id) {
|
|
319
|
+
if (index_1.asperaSdk.useHttpGateway) {
|
|
320
|
+
return (0, core_1.httpStopTransfer)(id);
|
|
321
|
+
}
|
|
319
322
|
if (index_1.asperaSdk.useConnect) {
|
|
320
323
|
return index_1.asperaSdk.globals.connect.stopTransfer(id);
|
|
321
324
|
}
|
|
@@ -817,7 +820,48 @@ var readChunkAsArrayBuffer = function (path, offset, chunkSize) {
|
|
|
817
820
|
return promiseInfo.promise;
|
|
818
821
|
};
|
|
819
822
|
exports.readChunkAsArrayBuffer = readChunkAsArrayBuffer;
|
|
823
|
+
/**
|
|
824
|
+
* Get a checksum of the specified chunk size of the file.
|
|
825
|
+
*
|
|
826
|
+
* @param options checksum options including path, offset, chunkSize, and checksumMethod
|
|
827
|
+
*
|
|
828
|
+
* @returns a promise that resolves with the checksum information
|
|
829
|
+
*/
|
|
830
|
+
var getChecksum = function (options) {
|
|
831
|
+
if (index_1.asperaSdk.useHttpGateway) {
|
|
832
|
+
return (0, helpers_1.throwError)(messages_1.messages.getChecksumNotSupported);
|
|
833
|
+
}
|
|
834
|
+
if (index_1.asperaSdk.useConnect) {
|
|
835
|
+
return index_1.asperaSdk.globals.connect.getChecksum(options);
|
|
836
|
+
}
|
|
837
|
+
if (!index_1.asperaSdk.isReady) {
|
|
838
|
+
return (0, helpers_1.throwError)(messages_1.messages.serverNotVerified);
|
|
839
|
+
}
|
|
840
|
+
var promiseInfo = (0, helpers_1.generatePromiseObjects)();
|
|
841
|
+
var payload = {
|
|
842
|
+
request: {
|
|
843
|
+
path: options.path,
|
|
844
|
+
offset: options.offset || 0,
|
|
845
|
+
chunkSize: options.chunkSize || 0,
|
|
846
|
+
checksumMethod: options.checksumMethod || 'md5',
|
|
847
|
+
},
|
|
848
|
+
app_id: index_1.asperaSdk.globals.appId,
|
|
849
|
+
};
|
|
850
|
+
client_1.client.request('get_checksum', payload)
|
|
851
|
+
.then(function (data) { return promiseInfo.resolver(data); })
|
|
852
|
+
.catch(function (error) {
|
|
853
|
+
(0, helpers_1.errorLog)(messages_1.messages.getChecksumFailed, error);
|
|
854
|
+
promiseInfo.rejecter((0, helpers_1.generateErrorBody)(messages_1.messages.getChecksumFailed, error));
|
|
855
|
+
});
|
|
856
|
+
return promiseInfo.promise;
|
|
857
|
+
};
|
|
858
|
+
exports.getChecksum = getChecksum;
|
|
820
859
|
var supportsMethod = function (method) {
|
|
860
|
+
// We currently do not support calculating file checksums when using HTTP Gateway. In theory it should be possible
|
|
861
|
+
// to calculate this direclty in the browser similar to how `readAsArrayBuffer()` is implemented.
|
|
862
|
+
if (index_1.asperaSdk.useHttpGateway && method === 'get_checksum') {
|
|
863
|
+
return false;
|
|
864
|
+
}
|
|
821
865
|
// HTTP Gateway and Connect do not have any RPC methods so fallback to true
|
|
822
866
|
if (index_1.asperaSdk.useHttpGateway || index_1.asperaSdk.useConnect) {
|
|
823
867
|
return true;
|
|
@@ -847,6 +891,7 @@ var supportsMethod = function (method) {
|
|
|
847
891
|
var getCapabilities = function () {
|
|
848
892
|
return {
|
|
849
893
|
imagePreview: supportsMethod('read_as_array_buffer') && supportsMethod('read_chunk_as_array_buffer'),
|
|
894
|
+
fileChecksum: supportsMethod('get_checksum'),
|
|
850
895
|
};
|
|
851
896
|
};
|
|
852
897
|
exports.getCapabilities = getCapabilities;
|
|
@@ -21,6 +21,7 @@ export declare const messages: {
|
|
|
21
21
|
showSelectFolderDialogFailed: string;
|
|
22
22
|
showPreferencesFailed: string;
|
|
23
23
|
stopTransferFailed: string;
|
|
24
|
+
stopTransferFailedExternal: string;
|
|
24
25
|
transferFailed: string;
|
|
25
26
|
unableToFindElementOnPage: string;
|
|
26
27
|
unableToReadDropped: string;
|
|
@@ -36,4 +37,6 @@ export declare const messages: {
|
|
|
36
37
|
readChunkAsArrayBufferFailed: string;
|
|
37
38
|
rpcDiscoverFailed: string;
|
|
38
39
|
getFilesListFailed: string;
|
|
40
|
+
getChecksumFailed: string;
|
|
41
|
+
getChecksumNotSupported: string;
|
|
39
42
|
};
|
|
@@ -24,6 +24,7 @@ exports.messages = {
|
|
|
24
24
|
showSelectFolderDialogFailed: 'Unable to show select folder dialog',
|
|
25
25
|
showPreferencesFailed: 'Unable to show preferences',
|
|
26
26
|
stopTransferFailed: 'Unable to stop transfer',
|
|
27
|
+
stopTransferFailedExternal: 'Unable to stop transfer. The download must be canceled from the browser\'s download manager',
|
|
27
28
|
transferFailed: 'The transfer failed to initiate',
|
|
28
29
|
unableToFindElementOnPage: 'Unable to find the element on the current page',
|
|
29
30
|
unableToReadDropped: 'The dropped item could not be parsed. Please try selecting via the select file/folder option',
|
|
@@ -39,4 +40,6 @@ exports.messages = {
|
|
|
39
40
|
readChunkAsArrayBufferFailed: 'Unable to read file chunk as array buffer',
|
|
40
41
|
rpcDiscoverFailed: 'Unable to discover RPC endpoints',
|
|
41
42
|
getFilesListFailed: 'Unable to get files list for transfer',
|
|
43
|
+
getChecksumFailed: 'Unable to get file checksum',
|
|
44
|
+
getChecksumNotSupported: 'File checksum not supported for current transfer client',
|
|
42
45
|
};
|
|
@@ -25,6 +25,18 @@ export declare const sendTransferUpdate: (transfer: AsperaSdkTransfer) => void;
|
|
|
25
25
|
* @returns a promise that resolves when the HTTP Gateway is initialized
|
|
26
26
|
*/
|
|
27
27
|
export declare const initHttpGateway: (response: HttpGatewayInfo) => Promise<void>;
|
|
28
|
+
/**
|
|
29
|
+
* Stop an in-progress HTTP Gateway transfer.
|
|
30
|
+
* Aborts the underlying HTTP request and sets the transfer status to 'canceled'.
|
|
31
|
+
*
|
|
32
|
+
* Note: If the download is being directly handled by the browser's download manager, this will return
|
|
33
|
+
* an error. The user must cancel the download themselves in the browser's download manger.
|
|
34
|
+
*
|
|
35
|
+
* @param id - ID of the transfer
|
|
36
|
+
*
|
|
37
|
+
* @returns Promise indicating success
|
|
38
|
+
*/
|
|
39
|
+
export declare const httpStopTransfer: (id: string) => Promise<void>;
|
|
28
40
|
/**
|
|
29
41
|
* Remove a transfer from HTTP Gateway systems
|
|
30
42
|
* @param id - ID of the transfer
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.httpGatewayReadChunkAsArrayBuffer = exports.httpGatewayReadAsArrayBuffer = exports.base64Encoding = exports.getMessageFromError = exports.getSdkTransfer = exports.httpGatewaySelectFileFolderDialog = exports.handleHttpGatewayDrop = exports.createHtmlInputElement = exports.httpGetTransfer = exports.httpGetAllTransfers = exports.httpRemoveTransfer = exports.initHttpGateway = exports.sendTransferUpdate = void 0;
|
|
3
|
+
exports.httpGatewayReadChunkAsArrayBuffer = exports.httpGatewayReadAsArrayBuffer = exports.base64Encoding = exports.getMessageFromError = exports.getSdkTransfer = exports.httpGatewaySelectFileFolderDialog = exports.handleHttpGatewayDrop = exports.createHtmlInputElement = exports.httpGetTransfer = exports.httpGetAllTransfers = exports.httpRemoveTransfer = exports.httpStopTransfer = exports.initHttpGateway = exports.sendTransferUpdate = void 0;
|
|
4
4
|
var messages_1 = require("../constants/messages");
|
|
5
5
|
var helpers_1 = require("../helpers/helpers");
|
|
6
6
|
var index_1 = require("../index");
|
|
@@ -41,6 +41,8 @@ exports.sendTransferUpdate = sendTransferUpdate;
|
|
|
41
41
|
var initHttpGateway = function (response) {
|
|
42
42
|
index_1.asperaSdk.globals.httpGatewayInfo = response;
|
|
43
43
|
index_1.asperaSdk.globals.httpGatewayVerified = true;
|
|
44
|
+
var majorVersion = Number(response.version.split('.')[0] || 3);
|
|
45
|
+
index_1.asperaSdk.globals.httpGatewayRoutePrefix = majorVersion >= 3 ? '/v3' : '';
|
|
44
46
|
if (index_1.asperaSdk.useOldHttpGateway) {
|
|
45
47
|
// Watch for old HTTP Gateway transfers in case used.
|
|
46
48
|
(0, http_gateway_sdk_js_1.registerActivityCallback)(function (oldHttpTransfers) {
|
|
@@ -58,6 +60,39 @@ var initHttpGateway = function (response) {
|
|
|
58
60
|
return Promise.resolve();
|
|
59
61
|
};
|
|
60
62
|
exports.initHttpGateway = initHttpGateway;
|
|
63
|
+
/**
|
|
64
|
+
* Stop an in-progress HTTP Gateway transfer.
|
|
65
|
+
* Aborts the underlying HTTP request and sets the transfer status to 'canceled'.
|
|
66
|
+
*
|
|
67
|
+
* Note: If the download is being directly handled by the browser's download manager, this will return
|
|
68
|
+
* an error. The user must cancel the download themselves in the browser's download manger.
|
|
69
|
+
*
|
|
70
|
+
* @param id - ID of the transfer
|
|
71
|
+
*
|
|
72
|
+
* @returns Promise indicating success
|
|
73
|
+
*/
|
|
74
|
+
var httpStopTransfer = function (id) {
|
|
75
|
+
if (index_1.asperaSdk.useOldHttpGateway) {
|
|
76
|
+
(0, http_gateway_sdk_js_1.cancelTransfer)(id);
|
|
77
|
+
return Promise.resolve();
|
|
78
|
+
}
|
|
79
|
+
var transfer = index_1.asperaSdk.httpGatewayTransferStore.get(id);
|
|
80
|
+
if (!transfer) {
|
|
81
|
+
return Promise.reject((0, helpers_1.generateErrorBody)(messages_1.messages.stopTransferFailed, { reason: 'Not found' }));
|
|
82
|
+
}
|
|
83
|
+
else if (transfer.httpDownloadExternalHandle) {
|
|
84
|
+
return Promise.reject((0, helpers_1.generateErrorBody)(messages_1.messages.stopTransferFailedExternal, { reason: 'External handle' }));
|
|
85
|
+
}
|
|
86
|
+
transfer.status = 'canceled';
|
|
87
|
+
var request = index_1.asperaSdk.httpGatewayRequestStore.get(id);
|
|
88
|
+
if (request) {
|
|
89
|
+
request.abort();
|
|
90
|
+
index_1.asperaSdk.httpGatewayRequestStore.delete(id);
|
|
91
|
+
}
|
|
92
|
+
(0, exports.sendTransferUpdate)(transfer);
|
|
93
|
+
return Promise.resolve();
|
|
94
|
+
};
|
|
95
|
+
exports.httpStopTransfer = httpStopTransfer;
|
|
61
96
|
/**
|
|
62
97
|
* Remove a transfer from HTTP Gateway systems
|
|
63
98
|
* @param id - ID of the transfer
|
|
@@ -69,14 +104,18 @@ var httpRemoveTransfer = function (id) {
|
|
|
69
104
|
(0, http_gateway_sdk_js_1.removeTransfer)(id);
|
|
70
105
|
return Promise.resolve({ removed: true });
|
|
71
106
|
}
|
|
72
|
-
|
|
73
|
-
|
|
107
|
+
/* Cancel the transfer before removing it.
|
|
108
|
+
*
|
|
109
|
+
* Note: This is slightly different from the behavior in the v2 JS SDK. When removing
|
|
110
|
+
* a transfer, v2 will NOT cancel it beforehand. In the desktop and Connect transfer clients,
|
|
111
|
+
* removing a transfer also stops it, so we do the same here for HTTP Gateway v3.
|
|
112
|
+
*/
|
|
113
|
+
return (0, exports.httpStopTransfer)(id)
|
|
114
|
+
.catch(function () { })
|
|
115
|
+
.then(function () {
|
|
74
116
|
index_1.asperaSdk.httpGatewayTransferStore.delete(id);
|
|
75
|
-
return
|
|
76
|
-
}
|
|
77
|
-
else {
|
|
78
|
-
return Promise.reject((0, helpers_1.generateErrorBody)(messages_1.messages.removeTransferFailed, { reason: 'Not found' }));
|
|
79
|
-
}
|
|
117
|
+
return { removed: true };
|
|
118
|
+
});
|
|
80
119
|
};
|
|
81
120
|
exports.httpRemoveTransfer = httpRemoveTransfer;
|
|
82
121
|
/**
|
|
@@ -31,6 +31,7 @@ var httpDownloadPresigned = function (transferSpec, asperaSdkSpec) {
|
|
|
31
31
|
(0, core_1.sendTransferUpdate)(transferObject);
|
|
32
32
|
};
|
|
33
33
|
var url = new URL((asperaSdkSpec === null || asperaSdkSpec === void 0 ? void 0 : asperaSdkSpec.http_gateway_override_server_url) || index_1.asperaSdk.globals.httpGatewayUrl);
|
|
34
|
+
var baseUrl = (url.origin + url.pathname).replace(/\/+$/, '');
|
|
34
35
|
var headers = {
|
|
35
36
|
'Content-Type': 'application/json',
|
|
36
37
|
accept: 'application/json',
|
|
@@ -40,7 +41,7 @@ var httpDownloadPresigned = function (transferSpec, asperaSdkSpec) {
|
|
|
40
41
|
headers['X-Aspera-AccessKey'] = asperaSdkSpec.http_gateway_authentication.access_key;
|
|
41
42
|
}
|
|
42
43
|
var protocol = url.protocol === 'https:' ? 'https' : 'http';
|
|
43
|
-
return fetch("".concat(
|
|
44
|
+
return fetch("".concat(baseUrl).concat(index_1.asperaSdk.globals.httpGatewayRoutePrefix, "/presign"), {
|
|
44
45
|
method: 'POST',
|
|
45
46
|
headers: headers,
|
|
46
47
|
body: (0, helpers_1.safeJsonString)({
|
|
@@ -108,7 +109,7 @@ var httpDownloadInBrowser = function (transferSpec, asperaSdkSpec) {
|
|
|
108
109
|
headers['Authorization'] = "Bearer ".concat(asperaSdkSpec.http_gateway_authentication.token);
|
|
109
110
|
headers['X-Aspera-AccessKey'] = asperaSdkSpec.http_gateway_authentication.access_key;
|
|
110
111
|
}
|
|
111
|
-
fetch("".concat((asperaSdkSpec === null || asperaSdkSpec === void 0 ? void 0 : asperaSdkSpec.http_gateway_override_server_url) || index_1.asperaSdk.globals.httpGatewayUrl, "/download"), { method: 'GET', headers: headers }).then(function (data) {
|
|
112
|
+
fetch("".concat((asperaSdkSpec === null || asperaSdkSpec === void 0 ? void 0 : asperaSdkSpec.http_gateway_override_server_url) || index_1.asperaSdk.globals.httpGatewayUrl).concat(index_1.asperaSdk.globals.httpGatewayRoutePrefix, "/download"), { method: 'GET', headers: headers }).then(function (data) {
|
|
112
113
|
var responseHeaders = data.headers;
|
|
113
114
|
transferObject.httpRequestId = responseHeaders.get('X-Request-Id');
|
|
114
115
|
var chunks = [];
|
|
@@ -44,20 +44,25 @@ var httpUpload = function (transferSpec, asperaSdkSpec) {
|
|
|
44
44
|
return (0, helpers_1.throwError)(messages_1.messages.fileNotAllowed, { type: 'upload', invalidFiles: hasBadFile, transferSpec: transferSpec });
|
|
45
45
|
}
|
|
46
46
|
var transferObject = (0, core_1.getSdkTransfer)(transferSpec);
|
|
47
|
+
index_1.asperaSdk.httpGatewayRequestStore.set(transferObject.uuid, request);
|
|
47
48
|
if (asperaSdkSpec === null || asperaSdkSpec === void 0 ? void 0 : asperaSdkSpec.http_gateway_authentication) {
|
|
48
49
|
request.setRequestHeader('Authorization', "Bearer ".concat(asperaSdkSpec.http_gateway_authentication.token));
|
|
49
50
|
request.setRequestHeader('X-Aspera-AccessKey', asperaSdkSpec.http_gateway_authentication.access_key);
|
|
50
51
|
}
|
|
51
|
-
request.open('POST', "".concat((asperaSdkSpec === null || asperaSdkSpec === void 0 ? void 0 : asperaSdkSpec.http_gateway_override_server_url) || index_1.asperaSdk.globals.httpGatewayUrl, "/upload"), true);
|
|
52
|
+
request.open('POST', "".concat((asperaSdkSpec === null || asperaSdkSpec === void 0 ? void 0 : asperaSdkSpec.http_gateway_override_server_url) || index_1.asperaSdk.globals.httpGatewayUrl).concat(index_1.asperaSdk.globals.httpGatewayRoutePrefix, "/upload"), true);
|
|
52
53
|
var triggerUpdate = function () {
|
|
53
54
|
(0, core_1.sendTransferUpdate)(transferObject);
|
|
54
55
|
};
|
|
55
56
|
var triggerFailed = function () {
|
|
57
|
+
if (transferObject.status === 'canceled') {
|
|
58
|
+
return;
|
|
59
|
+
}
|
|
56
60
|
var errorData = (0, core_1.getMessageFromError)(request.response);
|
|
57
61
|
transferObject.httpRequestId = request.getResponseHeader('X-Request-Id');
|
|
58
62
|
transferObject.status = 'failed';
|
|
59
63
|
transferObject.error_code = errorData.code;
|
|
60
64
|
transferObject.error_desc = errorData.message;
|
|
65
|
+
index_1.asperaSdk.httpGatewayRequestStore.delete(transferObject.uuid);
|
|
61
66
|
triggerUpdate();
|
|
62
67
|
};
|
|
63
68
|
request.upload.addEventListener('progress', function (event) {
|
|
@@ -87,6 +92,7 @@ var httpUpload = function (transferSpec, asperaSdkSpec) {
|
|
|
87
92
|
transferObject.bytes_written = event.loaded;
|
|
88
93
|
transferObject.percentage = (event.loaded / event.total);
|
|
89
94
|
}
|
|
95
|
+
index_1.asperaSdk.httpGatewayRequestStore.delete(transferObject.uuid);
|
|
90
96
|
triggerUpdate();
|
|
91
97
|
});
|
|
92
98
|
request.upload.addEventListener('loadstart', function () {
|
package/dist/commonjs/index.d.ts
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { AsperaSdk } from './models/aspera-sdk.model';
|
|
2
|
-
import { createDropzone, deregisterActivityCallback, deregisterStatusCallback, getAllTransfers, getCapabilities, getFilesList, getInfo, getTransfer, init, initDragDrop, modifyTransfer, readAsArrayBuffer, readChunkAsArrayBuffer, registerActivityCallback, registerStatusCallback, removeDropzone, removeTransfer, resumeTransfer, setBranding, showDirectory, showPreferences, showSelectFileDialog, showSelectFolderDialog, startTransfer, stopTransfer, testConnection } from './app/core';
|
|
2
|
+
import { createDropzone, deregisterActivityCallback, deregisterStatusCallback, getAllTransfers, getCapabilities, getChecksum, getFilesList, getInfo, getTransfer, init, initDragDrop, modifyTransfer, readAsArrayBuffer, readChunkAsArrayBuffer, registerActivityCallback, registerStatusCallback, removeDropzone, removeTransfer, resumeTransfer, setBranding, showDirectory, showPreferences, showSelectFileDialog, showSelectFolderDialog, startTransfer, stopTransfer, testConnection } from './app/core';
|
|
3
3
|
import { getInstallerInfo } from './app/installer';
|
|
4
4
|
import { getInstallerUrls, isSafari } from './helpers/helpers';
|
|
5
5
|
export declare const asperaSdk: AsperaSdk;
|
|
6
6
|
declare const launch: () => void;
|
|
7
|
-
export { isSafari, init, testConnection, startTransfer, launch, registerActivityCallback, deregisterActivityCallback, removeTransfer, showDirectory, stopTransfer, resumeTransfer, getAllTransfers, getTransfer, getFilesList, showSelectFileDialog, showSelectFolderDialog, showPreferences, modifyTransfer, createDropzone, removeDropzone, initDragDrop, getInstallerInfo, registerStatusCallback, deregisterStatusCallback, setBranding, getInfo, readAsArrayBuffer, readChunkAsArrayBuffer, getInstallerUrls, getCapabilities, };
|
|
8
|
-
export type { AsperaSdkSpec, AsperaSdkTransfer, BrowserStyleFile, CustomBrandingOptions, CustomTheme, CustomThemeItems, DataTransferResponse, FileDialogOptions, FileError, FileFilter, FileStat, FileStatus, FolderDialogOptions, InitOptions, InstallerInfo, InstallerInfoResponse, InstallerOptions, InstallerUrlInfo, ModifyTransferOptions, OverwritePolicy, PaginatedFilesResponse, Pagination, Path, ReadAsArrayBufferResponse, ReadChunkAsArrayBufferResponse, ResumePolicy, ResumeTransferOptions, SafariExtensionEvent, SdkCapabilities, TransferSpec, TransferStatus, WebsocketEvent, } from './models/models';
|
|
7
|
+
export { isSafari, init, testConnection, startTransfer, launch, registerActivityCallback, deregisterActivityCallback, removeTransfer, showDirectory, stopTransfer, resumeTransfer, getAllTransfers, getTransfer, getFilesList, showSelectFileDialog, showSelectFolderDialog, showPreferences, modifyTransfer, createDropzone, removeDropzone, initDragDrop, getInstallerInfo, registerStatusCallback, deregisterStatusCallback, setBranding, getInfo, readAsArrayBuffer, readChunkAsArrayBuffer, getInstallerUrls, getCapabilities, getChecksum, };
|
|
8
|
+
export type { AsperaSdkSpec, AsperaSdkTransfer, BrowserStyleFile, ChecksumFileResponse, CustomBrandingOptions, CustomTheme, CustomThemeItems, DataTransferResponse, FileDialogOptions, FileError, FileFilter, FileStat, FileStatus, FolderDialogOptions, GetChecksumOptions, InitOptions, InstallerInfo, InstallerInfoResponse, InstallerOptions, InstallerUrlInfo, ModifyTransferOptions, OverwritePolicy, PaginatedFilesResponse, Pagination, Path, ReadAsArrayBufferResponse, ReadChunkAsArrayBufferResponse, ResumePolicy, ResumeTransferOptions, SafariExtensionEvent, SdkCapabilities, TransferSpec, TransferStatus, WebsocketEvent, } from './models/models';
|
|
9
9
|
export type { ActivityMessage, ActivityMessageTypes, AsperaSdkClientInfo, AsperaSdkInfo, TransferResponse, } from './models/aspera-sdk.model';
|
|
10
10
|
export { AsperaSdk, AsperaSdkGlobals } from './models/aspera-sdk.model';
|
|
11
11
|
export type { HttpGatewayInfo } from './http-gateway/models';
|
package/dist/commonjs/index.js
CHANGED
|
@@ -33,7 +33,7 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
33
33
|
};
|
|
34
34
|
})();
|
|
35
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
-
exports.AsperaSdkGlobals = exports.AsperaSdk = exports.getCapabilities = exports.getInstallerUrls = exports.readChunkAsArrayBuffer = exports.readAsArrayBuffer = exports.getInfo = exports.setBranding = exports.deregisterStatusCallback = exports.registerStatusCallback = exports.getInstallerInfo = exports.initDragDrop = exports.removeDropzone = exports.createDropzone = exports.modifyTransfer = exports.showPreferences = exports.showSelectFolderDialog = exports.showSelectFileDialog = exports.getFilesList = 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;
|
|
36
|
+
exports.AsperaSdkGlobals = exports.AsperaSdk = exports.getChecksum = exports.getCapabilities = exports.getInstallerUrls = exports.readChunkAsArrayBuffer = exports.readAsArrayBuffer = exports.getInfo = exports.setBranding = exports.deregisterStatusCallback = exports.registerStatusCallback = exports.getInstallerInfo = exports.initDragDrop = exports.removeDropzone = exports.createDropzone = exports.modifyTransfer = exports.showPreferences = exports.showSelectFolderDialog = exports.showSelectFileDialog = exports.getFilesList = 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;
|
|
37
37
|
var aspera_sdk_model_1 = require("./models/aspera-sdk.model");
|
|
38
38
|
var core_1 = require("./app/core");
|
|
39
39
|
Object.defineProperty(exports, "createDropzone", { enumerable: true, get: function () { return core_1.createDropzone; } });
|
|
@@ -41,6 +41,7 @@ Object.defineProperty(exports, "deregisterActivityCallback", { enumerable: true,
|
|
|
41
41
|
Object.defineProperty(exports, "deregisterStatusCallback", { enumerable: true, get: function () { return core_1.deregisterStatusCallback; } });
|
|
42
42
|
Object.defineProperty(exports, "getAllTransfers", { enumerable: true, get: function () { return core_1.getAllTransfers; } });
|
|
43
43
|
Object.defineProperty(exports, "getCapabilities", { enumerable: true, get: function () { return core_1.getCapabilities; } });
|
|
44
|
+
Object.defineProperty(exports, "getChecksum", { enumerable: true, get: function () { return core_1.getChecksum; } });
|
|
44
45
|
Object.defineProperty(exports, "getFilesList", { enumerable: true, get: function () { return core_1.getFilesList; } });
|
|
45
46
|
Object.defineProperty(exports, "getInfo", { enumerable: true, get: function () { return core_1.getInfo; } });
|
|
46
47
|
Object.defineProperty(exports, "getTransfer", { enumerable: true, get: function () { return core_1.getTransfer; } });
|
|
@@ -98,6 +99,7 @@ exports.asperaSdk.readChunkAsArrayBuffer = core_1.readChunkAsArrayBuffer;
|
|
|
98
99
|
exports.asperaSdk.isSafari = helpers_1.isSafari;
|
|
99
100
|
exports.asperaSdk.getInstallerUrls = helpers_1.getInstallerUrls;
|
|
100
101
|
exports.asperaSdk.getCapabilities = core_1.getCapabilities;
|
|
102
|
+
exports.asperaSdk.getChecksum = core_1.getChecksum;
|
|
101
103
|
exports.asperaSdk.httpGatewayCalls = httpGatewayCalls;
|
|
102
104
|
var launch = exports.asperaSdk.globals.launch;
|
|
103
105
|
exports.launch = launch;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { CustomBrandingOptions, DataTransferResponse, AsperaSdkSpec, AsperaSdkTransfer, FileDialogOptions, FolderDialogOptions, InitOptions, InstallerInfoResponse, InstallerOptions, ModifyTransferOptions, Pagination, PaginatedFilesResponse, ResumeTransferOptions, SafariExtensionEvent, TransferSpec, WebsocketEvent, InstallerUrlInfo, SdkCapabilities } from './models';
|
|
1
|
+
import { CustomBrandingOptions, DataTransferResponse, AsperaSdkSpec, AsperaSdkTransfer, FileDialogOptions, FolderDialogOptions, InitOptions, InstallerInfoResponse, InstallerOptions, ModifyTransferOptions, Pagination, PaginatedFilesResponse, ResumeTransferOptions, SafariExtensionEvent, TransferSpec, WebsocketEvent, InstallerUrlInfo, SdkCapabilities, GetChecksumOptions, ChecksumFileResponse } from './models';
|
|
2
2
|
import { HttpGatewayInfo } from '../http-gateway/models';
|
|
3
3
|
import * as ConnectTypes from '@ibm-aspera/connect-sdk-js/dist/esm/core/types';
|
|
4
4
|
import { Connect, ConnectInstaller } from '@ibm-aspera/connect-sdk-js';
|
|
@@ -28,6 +28,8 @@ export declare class AsperaSdkGlobals {
|
|
|
28
28
|
}[]>;
|
|
29
29
|
/** HTTP Gateway URL after successful passing */
|
|
30
30
|
httpGatewayUrl?: string;
|
|
31
|
+
/** Version-based route prefix for HTTP Gateway API endpoints (e.g. "/v3" for v3+, "" for v2) */
|
|
32
|
+
httpGatewayRoutePrefix: string;
|
|
31
33
|
/** Indicate that the HTTP Gateway has been verified as working */
|
|
32
34
|
httpGatewayVerified: boolean;
|
|
33
35
|
/** HTTP Gateway info */
|
|
@@ -236,12 +238,16 @@ export declare class AsperaSdk {
|
|
|
236
238
|
getInstallerUrls: () => InstallerUrlInfo;
|
|
237
239
|
/** Function to get the SDK capabilities. */
|
|
238
240
|
getCapabilities: () => SdkCapabilities;
|
|
241
|
+
/** Function to get a checksum for a file */
|
|
242
|
+
getChecksum: (options: GetChecksumOptions) => Promise<ChecksumFileResponse>;
|
|
239
243
|
/** Indicate if Safari Extension is enabled. If the extension is disabled during the lifecycle this will not update to disabled. */
|
|
240
244
|
SAFARI_EXTENSION_STATUS: SafariExtensionEvent;
|
|
241
245
|
/** Aspera HTTP Gateway calls. This normally is not needed by clients but expose just in case. */
|
|
242
246
|
httpGatewayCalls: unknown;
|
|
243
247
|
/** Store of HTTP Gateway transfers */
|
|
244
248
|
httpGatewayTransferStore: Map<string, AsperaSdkTransfer>;
|
|
249
|
+
/** Store of active HTTP Gateway XMLHttpRequests for cancellation. Key is transfer UUID. */
|
|
250
|
+
httpGatewayRequestStore: Map<string, XMLHttpRequest>;
|
|
245
251
|
/** HTTP Gateway in app threshold limit. This can be changed globally for the app. */
|
|
246
252
|
httpGatewayInBrowserDownloadThreshold: number;
|
|
247
253
|
/**
|
|
@@ -35,6 +35,8 @@ var AsperaSdkGlobals = /** @class */ (function () {
|
|
|
35
35
|
this.supportMultipleUsers = false;
|
|
36
36
|
/** Map of drop zones created by querySelector */
|
|
37
37
|
this.dropZonesCreated = new Map();
|
|
38
|
+
/** Version-based route prefix for HTTP Gateway API endpoints (e.g. "/v3" for v3+, "" for v2) */
|
|
39
|
+
this.httpGatewayRoutePrefix = '';
|
|
38
40
|
/** Indicate that the HTTP Gateway has been verified as working */
|
|
39
41
|
this.httpGatewayVerified = false;
|
|
40
42
|
/** Connect status */
|
|
@@ -297,6 +299,8 @@ var AsperaSdk = /** @class */ (function () {
|
|
|
297
299
|
this.SAFARI_EXTENSION_STATUS = 'DISABLED';
|
|
298
300
|
/** Store of HTTP Gateway transfers */
|
|
299
301
|
this.httpGatewayTransferStore = new Map();
|
|
302
|
+
/** Store of active HTTP Gateway XMLHttpRequests for cancellation. Key is transfer UUID. */
|
|
303
|
+
this.httpGatewayRequestStore = new Map();
|
|
300
304
|
/** HTTP Gateway in app threshold limit. This can be changed globally for the app. */
|
|
301
305
|
this.httpGatewayInBrowserDownloadThreshold = 1000000000;
|
|
302
306
|
}
|
|
@@ -96,6 +96,24 @@ export interface ReadChunkAsArrayBufferResponse {
|
|
|
96
96
|
/** Mime type of the file */
|
|
97
97
|
type: string;
|
|
98
98
|
}
|
|
99
|
+
/** Request to get a file checksum */
|
|
100
|
+
export interface GetChecksumOptions {
|
|
101
|
+
/** Absolute path to the file */
|
|
102
|
+
path: string;
|
|
103
|
+
/** Byte offset to start reading from. Default: 0 */
|
|
104
|
+
offset?: number;
|
|
105
|
+
/** Number of bytes to read. If 0, read entire file from offset to end. Default: 0 */
|
|
106
|
+
chunkSize?: number;
|
|
107
|
+
/** Hash algorithm to use. Default: 'md5' */
|
|
108
|
+
checksumMethod?: 'md5' | 'sha1' | 'sha256' | 'sha512';
|
|
109
|
+
}
|
|
110
|
+
/** Response containing file checksum information */
|
|
111
|
+
export interface ChecksumFileResponse {
|
|
112
|
+
/** Hexadecimal string representation of the computed hash */
|
|
113
|
+
checksum: string;
|
|
114
|
+
/** The algorithm used */
|
|
115
|
+
checksumMethod: 'md5' | 'sha1' | 'sha256' | 'sha512';
|
|
116
|
+
}
|
|
99
117
|
export interface ModifyTransferOptions {
|
|
100
118
|
/**
|
|
101
119
|
* @deprecated Use `lock_min_rate_kbps` instead.
|
|
@@ -804,4 +822,8 @@ export interface SdkCapabilities {
|
|
|
804
822
|
* with the required RPC methods.
|
|
805
823
|
*/
|
|
806
824
|
imagePreview: boolean;
|
|
825
|
+
/**
|
|
826
|
+
* Whether the SDK can calculate checksums of a file chunk.
|
|
827
|
+
*/
|
|
828
|
+
fileChecksum: boolean;
|
|
807
829
|
}
|