@ibm-aspera/sdk 0.4.18 → 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 +18 -1
- package/dist/commonjs/app/core.js +74 -1
- package/dist/commonjs/constants/messages.d.ts +4 -0
- package/dist/commonjs/constants/messages.js +4 -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 +5 -1
- package/dist/commonjs/models/aspera-sdk.model.d.ts +9 -1
- package/dist/commonjs/models/aspera-sdk.model.js +4 -0
- package/dist/commonjs/models/models.d.ts +64 -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, 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
|
|
@@ -137,6 +137,15 @@ export declare const getAllTransfers: () => Promise<AsperaSdkTransfer[]>;
|
|
|
137
137
|
* @returns a promise that resolves with the transfer.
|
|
138
138
|
*/
|
|
139
139
|
export declare const getTransfer: (id: string) => Promise<AsperaSdkTransfer>;
|
|
140
|
+
/**
|
|
141
|
+
* Get paginated file-level progress for a specific transfer.
|
|
142
|
+
*
|
|
143
|
+
* @param id transfer uuid
|
|
144
|
+
* @param pagination optional pagination options (limit and offset)
|
|
145
|
+
*
|
|
146
|
+
* @returns a promise that resolves with the paginated file progress list
|
|
147
|
+
*/
|
|
148
|
+
export declare const getFilesList: (id: string, pagination?: Pagination) => Promise<PaginatedFilesResponse>;
|
|
140
149
|
/**
|
|
141
150
|
* Opens and highlights the downloaded file in Finder or Windows Explorer. If multiple files,
|
|
142
151
|
* then only the first file will be selected.
|
|
@@ -211,6 +220,14 @@ export declare const readAsArrayBuffer: (path: string) => Promise<ReadAsArrayBuf
|
|
|
211
220
|
* @returns a promise that resolves with the file chunk data as a base64-encoded string and mime type
|
|
212
221
|
*/
|
|
213
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>;
|
|
214
231
|
/**
|
|
215
232
|
* Returns an object describing the high-level capabilities supported by the user's
|
|
216
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.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
|
}
|
|
@@ -527,6 +530,34 @@ var getTransfer = function (id) {
|
|
|
527
530
|
return promiseInfo.promise;
|
|
528
531
|
};
|
|
529
532
|
exports.getTransfer = getTransfer;
|
|
533
|
+
/**
|
|
534
|
+
* Get paginated file-level progress for a specific transfer.
|
|
535
|
+
*
|
|
536
|
+
* @param id transfer uuid
|
|
537
|
+
* @param pagination optional pagination options (limit and offset)
|
|
538
|
+
*
|
|
539
|
+
* @returns a promise that resolves with the paginated file progress list
|
|
540
|
+
*/
|
|
541
|
+
var getFilesList = function (id, pagination) {
|
|
542
|
+
if (!index_1.asperaSdk.isReady) {
|
|
543
|
+
return (0, helpers_1.throwError)(messages_1.messages.serverNotVerified);
|
|
544
|
+
}
|
|
545
|
+
var promiseInfo = (0, helpers_1.generatePromiseObjects)();
|
|
546
|
+
var payload = {
|
|
547
|
+
transfer_id: id,
|
|
548
|
+
};
|
|
549
|
+
if (pagination) {
|
|
550
|
+
payload.pagination = pagination;
|
|
551
|
+
}
|
|
552
|
+
client_1.client.request('get_files_list', payload)
|
|
553
|
+
.then(function (data) { return promiseInfo.resolver(data); })
|
|
554
|
+
.catch(function (error) {
|
|
555
|
+
(0, helpers_1.errorLog)(messages_1.messages.getFilesListFailed, error);
|
|
556
|
+
promiseInfo.rejecter((0, helpers_1.generateErrorBody)(messages_1.messages.getFilesListFailed, error));
|
|
557
|
+
});
|
|
558
|
+
return promiseInfo.promise;
|
|
559
|
+
};
|
|
560
|
+
exports.getFilesList = getFilesList;
|
|
530
561
|
/**
|
|
531
562
|
* Opens and highlights the downloaded file in Finder or Windows Explorer. If multiple files,
|
|
532
563
|
* then only the first file will be selected.
|
|
@@ -789,7 +820,48 @@ var readChunkAsArrayBuffer = function (path, offset, chunkSize) {
|
|
|
789
820
|
return promiseInfo.promise;
|
|
790
821
|
};
|
|
791
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;
|
|
792
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
|
+
}
|
|
793
865
|
// HTTP Gateway and Connect do not have any RPC methods so fallback to true
|
|
794
866
|
if (index_1.asperaSdk.useHttpGateway || index_1.asperaSdk.useConnect) {
|
|
795
867
|
return true;
|
|
@@ -819,6 +891,7 @@ var supportsMethod = function (method) {
|
|
|
819
891
|
var getCapabilities = function () {
|
|
820
892
|
return {
|
|
821
893
|
imagePreview: supportsMethod('read_as_array_buffer') && supportsMethod('read_chunk_as_array_buffer'),
|
|
894
|
+
fileChecksum: supportsMethod('get_checksum'),
|
|
822
895
|
};
|
|
823
896
|
};
|
|
824
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;
|
|
@@ -35,4 +36,7 @@ export declare const messages: {
|
|
|
35
36
|
readAsArrayBufferFailed: string;
|
|
36
37
|
readChunkAsArrayBufferFailed: string;
|
|
37
38
|
rpcDiscoverFailed: string;
|
|
39
|
+
getFilesListFailed: string;
|
|
40
|
+
getChecksumFailed: string;
|
|
41
|
+
getChecksumNotSupported: string;
|
|
38
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',
|
|
@@ -38,4 +39,7 @@ exports.messages = {
|
|
|
38
39
|
readAsArrayBufferFailed: 'Unable to read file as array buffer',
|
|
39
40
|
readChunkAsArrayBufferFailed: 'Unable to read file chunk as array buffer',
|
|
40
41
|
rpcDiscoverFailed: 'Unable to discover RPC endpoints',
|
|
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',
|
|
41
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, 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, 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, FileFilter, FolderDialogOptions, InitOptions, InstallerInfo, InstallerInfoResponse, InstallerOptions, InstallerUrlInfo, ModifyTransferOptions, OverwritePolicy, 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.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,8 @@ 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; } });
|
|
45
|
+
Object.defineProperty(exports, "getFilesList", { enumerable: true, get: function () { return core_1.getFilesList; } });
|
|
44
46
|
Object.defineProperty(exports, "getInfo", { enumerable: true, get: function () { return core_1.getInfo; } });
|
|
45
47
|
Object.defineProperty(exports, "getTransfer", { enumerable: true, get: function () { return core_1.getTransfer; } });
|
|
46
48
|
Object.defineProperty(exports, "init", { enumerable: true, get: function () { return core_1.init; } });
|
|
@@ -79,6 +81,7 @@ exports.asperaSdk.stopTransfer = core_1.stopTransfer;
|
|
|
79
81
|
exports.asperaSdk.resumeTransfer = core_1.resumeTransfer;
|
|
80
82
|
exports.asperaSdk.getAllTransfers = core_1.getAllTransfers;
|
|
81
83
|
exports.asperaSdk.getTransfer = core_1.getTransfer;
|
|
84
|
+
exports.asperaSdk.getFilesList = core_1.getFilesList;
|
|
82
85
|
exports.asperaSdk.showSelectFileDialog = core_1.showSelectFileDialog;
|
|
83
86
|
exports.asperaSdk.showSelectFolderDialog = core_1.showSelectFolderDialog;
|
|
84
87
|
exports.asperaSdk.showPreferences = core_1.showPreferences;
|
|
@@ -96,6 +99,7 @@ exports.asperaSdk.readChunkAsArrayBuffer = core_1.readChunkAsArrayBuffer;
|
|
|
96
99
|
exports.asperaSdk.isSafari = helpers_1.isSafari;
|
|
97
100
|
exports.asperaSdk.getInstallerUrls = helpers_1.getInstallerUrls;
|
|
98
101
|
exports.asperaSdk.getCapabilities = core_1.getCapabilities;
|
|
102
|
+
exports.asperaSdk.getChecksum = core_1.getChecksum;
|
|
99
103
|
exports.asperaSdk.httpGatewayCalls = httpGatewayCalls;
|
|
100
104
|
var launch = exports.asperaSdk.globals.launch;
|
|
101
105
|
exports.launch = launch;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { CustomBrandingOptions, DataTransferResponse, AsperaSdkSpec, AsperaSdkTransfer, FileDialogOptions, FolderDialogOptions, InitOptions, InstallerInfoResponse, InstallerOptions, ModifyTransferOptions, 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 */
|
|
@@ -216,6 +218,8 @@ export declare class AsperaSdk {
|
|
|
216
218
|
getInstallerInfo: (options: InstallerOptions) => Promise<InstallerInfoResponse>;
|
|
217
219
|
/** Initialize drag and drop */
|
|
218
220
|
initDragDrop: () => Promise<any>;
|
|
221
|
+
/** Function to get paginated file-level progress for a transfer */
|
|
222
|
+
getFilesList: (transferId: string, pagination?: Pagination) => Promise<PaginatedFilesResponse>;
|
|
219
223
|
/** Function to get information about the IBM Aspera instance */
|
|
220
224
|
getInfo: () => Promise<AsperaSdkInfo>;
|
|
221
225
|
/** Function to read an entire file as an array buffer (base64-encoded) */
|
|
@@ -234,12 +238,16 @@ export declare class AsperaSdk {
|
|
|
234
238
|
getInstallerUrls: () => InstallerUrlInfo;
|
|
235
239
|
/** Function to get the SDK capabilities. */
|
|
236
240
|
getCapabilities: () => SdkCapabilities;
|
|
241
|
+
/** Function to get a checksum for a file */
|
|
242
|
+
getChecksum: (options: GetChecksumOptions) => Promise<ChecksumFileResponse>;
|
|
237
243
|
/** Indicate if Safari Extension is enabled. If the extension is disabled during the lifecycle this will not update to disabled. */
|
|
238
244
|
SAFARI_EXTENSION_STATUS: SafariExtensionEvent;
|
|
239
245
|
/** Aspera HTTP Gateway calls. This normally is not needed by clients but expose just in case. */
|
|
240
246
|
httpGatewayCalls: unknown;
|
|
241
247
|
/** Store of HTTP Gateway transfers */
|
|
242
248
|
httpGatewayTransferStore: Map<string, AsperaSdkTransfer>;
|
|
249
|
+
/** Store of active HTTP Gateway XMLHttpRequests for cancellation. Key is transfer UUID. */
|
|
250
|
+
httpGatewayRequestStore: Map<string, XMLHttpRequest>;
|
|
243
251
|
/** HTTP Gateway in app threshold limit. This can be changed globally for the app. */
|
|
244
252
|
httpGatewayInBrowserDownloadThreshold: number;
|
|
245
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.
|
|
@@ -445,6 +463,48 @@ export interface TransferSpec {
|
|
|
445
463
|
use_ascp4?: boolean;
|
|
446
464
|
}
|
|
447
465
|
export type TransferStatus = 'failed' | 'completed' | 'running' | 'queued' | 'removed' | 'canceled' | 'orphaned' | 'paused';
|
|
466
|
+
/** Pagination options for paginated API requests. */
|
|
467
|
+
export interface Pagination {
|
|
468
|
+
/** Maximum number of entries to return. (Default: 1000) */
|
|
469
|
+
limit?: number;
|
|
470
|
+
/** Number of entries to skip from the beginning. (Default: 0) */
|
|
471
|
+
offset?: number;
|
|
472
|
+
}
|
|
473
|
+
/** Paginated response containing file-level transfer progress. */
|
|
474
|
+
export interface PaginatedFilesResponse {
|
|
475
|
+
/** The file entries for this page. */
|
|
476
|
+
entries: FileStat[];
|
|
477
|
+
/** Total number of files in the transfer. */
|
|
478
|
+
total_count: number;
|
|
479
|
+
/** The limit used for the request. */
|
|
480
|
+
limit: number;
|
|
481
|
+
/** The offset used for the request. */
|
|
482
|
+
offset: number;
|
|
483
|
+
}
|
|
484
|
+
/** Status of an individual file within a transfer. */
|
|
485
|
+
export type FileStatus = 'failed' | 'skipped' | 'finished' | 'running';
|
|
486
|
+
/** Error information for a file that failed to transfer. */
|
|
487
|
+
export interface FileError {
|
|
488
|
+
/** Error code */
|
|
489
|
+
code: number;
|
|
490
|
+
/** Human-readable error description */
|
|
491
|
+
description: string;
|
|
492
|
+
}
|
|
493
|
+
/** Progress information for an individual file within a transfer. */
|
|
494
|
+
export interface FileStat {
|
|
495
|
+
/** The file path */
|
|
496
|
+
file: string;
|
|
497
|
+
/** Number of bytes written for this file */
|
|
498
|
+
bytes_written: number;
|
|
499
|
+
/** Number of bytes expected for this file */
|
|
500
|
+
bytes_expected: number;
|
|
501
|
+
/** Time elapsed in microseconds for this file */
|
|
502
|
+
elapsed_usec: number;
|
|
503
|
+
/** Error information if the file failed */
|
|
504
|
+
error?: FileError;
|
|
505
|
+
/** Status of this file */
|
|
506
|
+
status: FileStatus;
|
|
507
|
+
}
|
|
448
508
|
export interface AsperaSdkTransfer {
|
|
449
509
|
/** The ID of the transfer */
|
|
450
510
|
uuid: string;
|
|
@@ -762,4 +822,8 @@ export interface SdkCapabilities {
|
|
|
762
822
|
* with the required RPC methods.
|
|
763
823
|
*/
|
|
764
824
|
imagePreview: boolean;
|
|
825
|
+
/**
|
|
826
|
+
* Whether the SDK can calculate checksums of a file chunk.
|
|
827
|
+
*/
|
|
828
|
+
fileChecksum: boolean;
|
|
765
829
|
}
|