@ibm-aspera/sdk 0.7.1 → 0.9.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.
@@ -1,6 +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, GetChecksumOptions, ChecksumFileResponse } from '../models/models';
3
- import * as ConnectTypes from '@ibm-aspera/connect-sdk-js/dist/esm/core/types';
2
+ import { CustomBrandingOptions, DataTransferResponse, DropzoneEventData, DropzoneOptions, AsperaSdkSpec, AsperaSdkTransfer, FileDialogOptions, FolderDialogOptions, InitOptions, ModifyTransferOptions, Pagination, PaginatedFilesResponse, ResumeTransferOptions, TransferSpec, WebsocketEvent, ReadChunkAsArrayBufferResponse, ReadAsArrayBufferResponse, SdkCapabilities, GetChecksumOptions, ChecksumFileResponse } from '../models/models';
4
3
  /**
5
4
  * Check if IBM Aspera for Desktop connection works. This function is called by init
6
5
  * when initializing the SDK. This function can be used at any point for checking.
@@ -117,6 +116,14 @@ export declare const showSelectFileDialog: (options?: FileDialogOptions) => Prom
117
116
  * @returns a promise that resolves with the selected folder(s) and rejects if user cancels dialog
118
117
  */
119
118
  export declare const showSelectFolderDialog: (options?: FolderDialogOptions) => Promise<DataTransferResponse>;
119
+ /**
120
+ * Shows the about page of the transfer client.
121
+ *
122
+ * This is supported when using Connect or IBM Aspera for desktop, but not HTTP Gateway.
123
+ *
124
+ * @returns a promise that resolves when the about page is shown.
125
+ */
126
+ export declare const showAbout: () => Promise<any>;
120
127
  /**
121
128
  * Opens the IBM Aspera preferences page.
122
129
  *
@@ -180,12 +187,9 @@ export declare const setBranding: (id: string, options: CustomBrandingOptions) =
180
187
  *
181
188
  * @param callback the function to call once the files are dropped
182
189
  * @param elementSelector the selector of the element on the page that should watch for drop events
183
- * @param connectOptions options for connect
190
+ * @param options options to configure which drag and drop events trigger the listener
184
191
  */
185
- export declare const createDropzone: (callback: (data: {
186
- event: DragEvent;
187
- files: DataTransferResponse;
188
- }) => void, elementSelector: string, connectOptions?: ConnectTypes.DragDropOptions) => void;
192
+ export declare const createDropzone: (callback: (data: DropzoneEventData) => void, elementSelector: string, options?: DropzoneOptions) => void;
189
193
  /**
190
194
  * Remove dropzone.
191
195
  *
@@ -249,3 +253,22 @@ export declare const getChecksum: (options: GetChecksumOptions) => Promise<Check
249
253
  * }
250
254
  */
251
255
  export declare const getCapabilities: () => SdkCapabilities;
256
+ /**
257
+ * Check if the SDK and underlying transfer client supports a specific capability.
258
+ *
259
+ * Capabilities depend on the transfer client being used (HTTP Gateway, Connect, or IBM Aspera for desktop).
260
+ * Use this function to conditionally enable/disable features in your application.
261
+ *
262
+ * @param capability the capability to check.
263
+ *
264
+ * @returns `true` if the capability is supported, `false` otherwise
265
+ *
266
+ * @example
267
+ * ```typescript
268
+ * // Determine if your web application can render image previews for user selected files
269
+ * if (asperaSdk.hasCapability('imagePreview')) {
270
+ * asperaSdk.readAsArrayBuffer(path);
271
+ * }
272
+ * ```
273
+ */
274
+ export declare const hasCapability: (capability: keyof SdkCapabilities) => boolean;
@@ -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.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;
14
+ exports.hasCapability = 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.showAbout = 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");
@@ -435,6 +435,33 @@ var showSelectFolderDialog = function (options) {
435
435
  return promiseInfo.promise;
436
436
  };
437
437
  exports.showSelectFolderDialog = showSelectFolderDialog;
438
+ /**
439
+ * Shows the about page of the transfer client.
440
+ *
441
+ * This is supported when using Connect or IBM Aspera for desktop, but not HTTP Gateway.
442
+ *
443
+ * @returns a promise that resolves when the about page is shown.
444
+ */
445
+ var showAbout = function () {
446
+ if (index_1.asperaSdk.useHttpGateway) {
447
+ return (0, helpers_1.throwError)(messages_1.messages.showAboutNotSupported);
448
+ }
449
+ if (index_1.asperaSdk.useConnect) {
450
+ return index_1.asperaSdk.globals.connect.showAbout();
451
+ }
452
+ if (!index_1.asperaSdk.isReady) {
453
+ return (0, helpers_1.throwError)(messages_1.messages.serverNotVerified);
454
+ }
455
+ var promiseInfo = (0, helpers_1.generatePromiseObjects)();
456
+ client_1.client.request('show_about')
457
+ .then(function (data) { return promiseInfo.resolver(data); })
458
+ .catch(function (error) {
459
+ (0, helpers_1.errorLog)(messages_1.messages.showAboutFailed, error);
460
+ promiseInfo.rejecter((0, helpers_1.generateErrorBody)(messages_1.messages.showAboutFailed, error));
461
+ });
462
+ return promiseInfo.promise;
463
+ };
464
+ exports.showAbout = showAbout;
438
465
  /**
439
466
  * Opens the IBM Aspera preferences page.
440
467
  *
@@ -654,10 +681,27 @@ exports.setBranding = setBranding;
654
681
  *
655
682
  * @param callback the function to call once the files are dropped
656
683
  * @param elementSelector the selector of the element on the page that should watch for drop events
657
- * @param connectOptions options for connect
684
+ * @param options options to configure which drag and drop events trigger the listener
658
685
  */
659
- var createDropzone = function (callback, elementSelector, connectOptions) {
686
+ var createDropzone = function (callback, elementSelector, options) {
687
+ var _a, _b, _c, _d, _e, _f;
688
+ var resolvedOptions = {
689
+ dragEnter: (_a = options === null || options === void 0 ? void 0 : options.dragEnter) !== null && _a !== void 0 ? _a : false,
690
+ dragOver: (_b = options === null || options === void 0 ? void 0 : options.dragOver) !== null && _b !== void 0 ? _b : false,
691
+ dragLeave: (_c = options === null || options === void 0 ? void 0 : options.dragLeave) !== null && _c !== void 0 ? _c : false,
692
+ drop: (_d = options === null || options === void 0 ? void 0 : options.drop) !== null && _d !== void 0 ? _d : true,
693
+ allowPropagation: (_e = options === null || options === void 0 ? void 0 : options.allowPropagation) !== null && _e !== void 0 ? _e : true,
694
+ allowDefaultBehavior: (_f = options === null || options === void 0 ? void 0 : options.allowDefaultBehavior) !== null && _f !== void 0 ? _f : false,
695
+ };
660
696
  if (index_1.asperaSdk.useConnect) {
697
+ var connectOptions = {
698
+ dragenter: resolvedOptions.dragEnter,
699
+ dragover: resolvedOptions.dragOver,
700
+ dragleave: resolvedOptions.dragLeave,
701
+ drop: resolvedOptions.drop,
702
+ allowPropagation: resolvedOptions.allowPropagation,
703
+ disablePreventDefault: resolvedOptions.allowDefaultBehavior,
704
+ };
661
705
  index_1.asperaSdk.globals.connect.setDragDropTargets(elementSelector, connectOptions, function (result) {
662
706
  callback({
663
707
  event: result.event,
@@ -671,43 +715,91 @@ var createDropzone = function (callback, elementSelector, connectOptions) {
671
715
  (0, helpers_1.errorLog)(messages_1.messages.unableToFindElementOnPage);
672
716
  return;
673
717
  }
674
- var dragEvent = function (event) {
675
- event.preventDefault();
718
+ var handleEventDefaults = function (event) {
719
+ if (!resolvedOptions.allowDefaultBehavior) {
720
+ event.preventDefault();
721
+ }
722
+ if (!resolvedOptions.allowPropagation) {
723
+ event.stopPropagation();
724
+ }
676
725
  };
677
- var dropEvent = function (event) {
726
+ var handleRequiredEventDefaults = function (event) {
678
727
  event.preventDefault();
679
- if (event.dataTransfer && event.dataTransfer.files && event.dataTransfer.files.length && event.dataTransfer.files[0]) {
680
- var files = [];
681
- for (var i = 0; i < event.dataTransfer.files.length; i++) {
682
- var file = event.dataTransfer.files[i];
683
- files.push({
684
- lastModified: file.lastModified,
685
- name: file.name,
686
- size: file.size,
687
- type: file.type
688
- });
689
- }
690
- var payload = {
691
- files: files,
692
- app_id: index_1.asperaSdk.globals.appId,
693
- };
694
- if (index_1.asperaSdk.isReady) {
695
- client_1.client.request('dropped_files', payload)
696
- .then(function (data) { return callback({ event: event, files: data }); })
697
- .catch(function (error) {
698
- (0, helpers_1.errorLog)(messages_1.messages.unableToReadDropped, error);
699
- });
700
- }
701
- else if (index_1.asperaSdk.httpGatewayIsReady) {
702
- (0, core_1.handleHttpGatewayDrop)(event.dataTransfer.items, callback, event);
703
- }
728
+ if (!resolvedOptions.allowPropagation) {
729
+ event.stopPropagation();
704
730
  }
705
731
  };
732
+ var registeredListeners = [];
733
+ if (resolvedOptions.dragEnter) {
734
+ registeredListeners.push({
735
+ event: 'dragenter',
736
+ callback: function (event) {
737
+ handleEventDefaults(event);
738
+ callback({ event: event });
739
+ },
740
+ });
741
+ }
742
+ if (resolvedOptions.dragLeave) {
743
+ registeredListeners.push({
744
+ event: 'dragleave',
745
+ callback: function (event) {
746
+ handleEventDefaults(event);
747
+ callback({ event: event });
748
+ },
749
+ });
750
+ }
751
+ if (resolvedOptions.drop || resolvedOptions.dragOver) {
752
+ registeredListeners.push({
753
+ event: 'dragover',
754
+ callback: function (event) {
755
+ handleRequiredEventDefaults(event);
756
+ if (resolvedOptions.dragOver) {
757
+ callback({ event: event });
758
+ }
759
+ },
760
+ });
761
+ }
762
+ if (resolvedOptions.drop) {
763
+ registeredListeners.push({
764
+ event: 'drop',
765
+ callback: function (event) {
766
+ handleRequiredEventDefaults(event);
767
+ if (event.dataTransfer && event.dataTransfer.files && event.dataTransfer.files.length && event.dataTransfer.files[0]) {
768
+ var files = [];
769
+ for (var i = 0; i < event.dataTransfer.files.length; i++) {
770
+ var file = event.dataTransfer.files[i];
771
+ files.push({
772
+ lastModified: file.lastModified,
773
+ name: file.name,
774
+ size: file.size,
775
+ type: file.type
776
+ });
777
+ }
778
+ var payload = {
779
+ files: files,
780
+ app_id: index_1.asperaSdk.globals.appId,
781
+ };
782
+ if (index_1.asperaSdk.isReady) {
783
+ client_1.client.request('dropped_files', payload)
784
+ .then(function (data) { return callback({ event: event, files: data }); })
785
+ .catch(function (error) {
786
+ (0, helpers_1.errorLog)(messages_1.messages.unableToReadDropped, error);
787
+ });
788
+ }
789
+ else if (index_1.asperaSdk.httpGatewayIsReady) {
790
+ (0, core_1.handleHttpGatewayDrop)(event.dataTransfer.items, callback, event);
791
+ }
792
+ }
793
+ },
794
+ });
795
+ }
706
796
  elements.forEach(function (element) {
707
- element.addEventListener('dragover', dragEvent);
708
- element.addEventListener('drop', dropEvent);
709
- index_1.asperaSdk.globals.dropZonesCreated.set(elementSelector, [{ event: 'dragover', callback: dragEvent }, { event: 'drop', callback: dropEvent }]);
797
+ registeredListeners.forEach(function (_a) {
798
+ var event = _a.event, listener = _a.callback;
799
+ element.addEventListener(event, listener);
800
+ });
710
801
  });
802
+ index_1.asperaSdk.globals.dropZonesCreated.set(elementSelector, registeredListeners);
711
803
  };
712
804
  exports.createDropzone = createDropzone;
713
805
  /**
@@ -718,14 +810,15 @@ exports.createDropzone = createDropzone;
718
810
  var removeDropzone = function (elementSelector) {
719
811
  var foundDropzone = index_1.asperaSdk.globals.dropZonesCreated.get(elementSelector);
720
812
  if (foundDropzone) {
813
+ var elements_1 = document.querySelectorAll(elementSelector);
721
814
  foundDropzone.forEach(function (data) {
722
- var elements = document.querySelectorAll(elementSelector);
723
- if (elements && elements.length) {
724
- elements.forEach(function (element) {
815
+ if (elements_1 && elements_1.length) {
816
+ elements_1.forEach(function (element) {
725
817
  element.removeEventListener(data.event, data.callback);
726
818
  });
727
819
  }
728
820
  });
821
+ index_1.asperaSdk.globals.dropZonesCreated.delete(elementSelector);
729
822
  }
730
823
  };
731
824
  exports.removeDropzone = removeDropzone;
@@ -858,8 +951,9 @@ var getChecksum = function (options) {
858
951
  exports.getChecksum = getChecksum;
859
952
  var supportsMethod = function (method) {
860
953
  // 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') {
954
+ // to calculate this directly in the browser similar to how `readAsArrayBuffer()` is implemented.
955
+ // HTTP Gateway also does not support showing native transfer client UI (about, preferences, etc.).
956
+ if (index_1.asperaSdk.useHttpGateway && (method === 'get_checksum' || method === 'show_about' || method === 'open_preferences')) {
863
957
  return false;
864
958
  }
865
959
  // HTTP Gateway and Connect do not have any RPC methods so fallback to true
@@ -892,6 +986,30 @@ var getCapabilities = function () {
892
986
  return {
893
987
  imagePreview: supportsMethod('read_as_array_buffer') && supportsMethod('read_chunk_as_array_buffer'),
894
988
  fileChecksum: supportsMethod('get_checksum'),
989
+ showAbout: supportsMethod('show_about'),
990
+ showPreferences: supportsMethod('open_preferences'),
895
991
  };
896
992
  };
897
993
  exports.getCapabilities = getCapabilities;
994
+ /**
995
+ * Check if the SDK and underlying transfer client supports a specific capability.
996
+ *
997
+ * Capabilities depend on the transfer client being used (HTTP Gateway, Connect, or IBM Aspera for desktop).
998
+ * Use this function to conditionally enable/disable features in your application.
999
+ *
1000
+ * @param capability the capability to check.
1001
+ *
1002
+ * @returns `true` if the capability is supported, `false` otherwise
1003
+ *
1004
+ * @example
1005
+ * ```typescript
1006
+ * // Determine if your web application can render image previews for user selected files
1007
+ * if (asperaSdk.hasCapability('imagePreview')) {
1008
+ * asperaSdk.readAsArrayBuffer(path);
1009
+ * }
1010
+ * ```
1011
+ */
1012
+ var hasCapability = function (capability) {
1013
+ return !!(0, exports.getCapabilities)()[capability];
1014
+ };
1015
+ exports.hasCapability = hasCapability;
@@ -39,4 +39,6 @@ export declare const messages: {
39
39
  getFilesListFailed: string;
40
40
  getChecksumFailed: string;
41
41
  getChecksumNotSupported: string;
42
+ showAboutFailed: string;
43
+ showAboutNotSupported: string;
42
44
  };
@@ -42,4 +42,6 @@ exports.messages = {
42
42
  getFilesListFailed: 'Unable to get files list for transfer',
43
43
  getChecksumFailed: 'Unable to get file checksum',
44
44
  getChecksumNotSupported: 'File checksum not supported for current transfer client',
45
+ showAboutFailed: 'Unable to show about page',
46
+ showAboutNotSupported: 'Show about is not supported for current transfer client',
45
47
  };
@@ -1,4 +1,4 @@
1
- import { FileDialogOptions, DataTransferResponse, TransferSpec, AsperaSdkTransfer, ReadAsArrayBufferResponse, ReadChunkAsArrayBufferResponse } from '../models/models';
1
+ import { FileDialogOptions, DataTransferResponse, DropzoneEventData, TransferSpec, AsperaSdkTransfer, ReadAsArrayBufferResponse, ReadChunkAsArrayBufferResponse } from '../models/models';
2
2
  import { HttpGatewayInfo } from './models';
3
3
  /**
4
4
  * HTTP Gateway Core Logic
@@ -64,10 +64,7 @@ export declare const createHtmlInputElement: () => HTMLInputElement;
64
64
  * Handle drop events and store files for HTTP Gateway
65
65
  * This works on top of desktop.
66
66
  */
67
- export declare const handleHttpGatewayDrop: (items: DataTransferItemList, callback: (data: {
68
- event: DragEvent;
69
- files: DataTransferResponse;
70
- }) => void, event: DragEvent) => void;
67
+ export declare const handleHttpGatewayDrop: (items: DataTransferItemList, callback: (data: DropzoneEventData) => void, event: DragEvent) => void;
71
68
  /**
72
69
  * Open native browser file or folder picker for files
73
70
  *
@@ -1,11 +1,11 @@
1
1
  import { AsperaSdk } from './models/aspera-sdk.model';
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';
2
+ import { createDropzone, deregisterActivityCallback, deregisterStatusCallback, getAllTransfers, getCapabilities, getChecksum, getFilesList, getInfo, getTransfer, hasCapability, init, initDragDrop, modifyTransfer, readAsArrayBuffer, readChunkAsArrayBuffer, registerActivityCallback, registerStatusCallback, removeDropzone, removeTransfer, resumeTransfer, setBranding, showAbout, 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, 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';
7
+ export { isSafari, init, testConnection, startTransfer, launch, registerActivityCallback, deregisterActivityCallback, removeTransfer, showAbout, showDirectory, stopTransfer, resumeTransfer, getAllTransfers, getTransfer, getFilesList, showSelectFileDialog, showSelectFolderDialog, showPreferences, modifyTransfer, createDropzone, removeDropzone, initDragDrop, getInstallerInfo, registerStatusCallback, deregisterStatusCallback, setBranding, getInfo, readAsArrayBuffer, readChunkAsArrayBuffer, getInstallerUrls, getCapabilities, hasCapability, getChecksum, };
8
+ export type { AsperaSdkSpec, AsperaSdkTransfer, BrowserStyleFile, ChecksumFileResponse, CustomBrandingOptions, CustomTheme, CustomThemeItems, DataTransferResponse, DropzoneEventData, DropzoneEventType, DropzoneOptions, 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';
@@ -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.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;
36
+ exports.AsperaSdkGlobals = exports.AsperaSdk = exports.getChecksum = exports.hasCapability = 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.showAbout = 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; } });
@@ -45,6 +45,7 @@ Object.defineProperty(exports, "getChecksum", { enumerable: true, get: function
45
45
  Object.defineProperty(exports, "getFilesList", { enumerable: true, get: function () { return core_1.getFilesList; } });
46
46
  Object.defineProperty(exports, "getInfo", { enumerable: true, get: function () { return core_1.getInfo; } });
47
47
  Object.defineProperty(exports, "getTransfer", { enumerable: true, get: function () { return core_1.getTransfer; } });
48
+ Object.defineProperty(exports, "hasCapability", { enumerable: true, get: function () { return core_1.hasCapability; } });
48
49
  Object.defineProperty(exports, "init", { enumerable: true, get: function () { return core_1.init; } });
49
50
  Object.defineProperty(exports, "initDragDrop", { enumerable: true, get: function () { return core_1.initDragDrop; } });
50
51
  Object.defineProperty(exports, "modifyTransfer", { enumerable: true, get: function () { return core_1.modifyTransfer; } });
@@ -56,6 +57,7 @@ Object.defineProperty(exports, "removeDropzone", { enumerable: true, get: functi
56
57
  Object.defineProperty(exports, "removeTransfer", { enumerable: true, get: function () { return core_1.removeTransfer; } });
57
58
  Object.defineProperty(exports, "resumeTransfer", { enumerable: true, get: function () { return core_1.resumeTransfer; } });
58
59
  Object.defineProperty(exports, "setBranding", { enumerable: true, get: function () { return core_1.setBranding; } });
60
+ Object.defineProperty(exports, "showAbout", { enumerable: true, get: function () { return core_1.showAbout; } });
59
61
  Object.defineProperty(exports, "showDirectory", { enumerable: true, get: function () { return core_1.showDirectory; } });
60
62
  Object.defineProperty(exports, "showPreferences", { enumerable: true, get: function () { return core_1.showPreferences; } });
61
63
  Object.defineProperty(exports, "showSelectFileDialog", { enumerable: true, get: function () { return core_1.showSelectFileDialog; } });
@@ -76,6 +78,7 @@ exports.asperaSdk.startTransfer = core_1.startTransfer;
76
78
  exports.asperaSdk.registerActivityCallback = core_1.registerActivityCallback;
77
79
  exports.asperaSdk.deregisterActivityCallback = core_1.deregisterActivityCallback;
78
80
  exports.asperaSdk.removeTransfer = core_1.removeTransfer;
81
+ exports.asperaSdk.showAbout = core_1.showAbout;
79
82
  exports.asperaSdk.showDirectory = core_1.showDirectory;
80
83
  exports.asperaSdk.stopTransfer = core_1.stopTransfer;
81
84
  exports.asperaSdk.resumeTransfer = core_1.resumeTransfer;
@@ -99,6 +102,7 @@ exports.asperaSdk.readChunkAsArrayBuffer = core_1.readChunkAsArrayBuffer;
99
102
  exports.asperaSdk.isSafari = helpers_1.isSafari;
100
103
  exports.asperaSdk.getInstallerUrls = helpers_1.getInstallerUrls;
101
104
  exports.asperaSdk.getCapabilities = core_1.getCapabilities;
105
+ exports.asperaSdk.hasCapability = core_1.hasCapability;
102
106
  exports.asperaSdk.getChecksum = core_1.getChecksum;
103
107
  exports.asperaSdk.httpGatewayCalls = httpGatewayCalls;
104
108
  var launch = exports.asperaSdk.globals.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, GetChecksumOptions, ChecksumFileResponse } from './models';
1
+ import { CustomBrandingOptions, DataTransferResponse, DropzoneEventData, DropzoneEventType, DropzoneOptions, 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';
@@ -23,8 +23,8 @@ export declare class AsperaSdkGlobals {
23
23
  sessionId?: string;
24
24
  /** Map of drop zones created by querySelector */
25
25
  dropZonesCreated: Map<string, {
26
- event: string;
27
- callback: (event: any) => void;
26
+ event: DropzoneEventType;
27
+ callback: (event: DragEvent) => void;
28
28
  }[]>;
29
29
  /** HTTP Gateway URL after successful passing */
30
30
  httpGatewayUrl?: string;
@@ -201,6 +201,8 @@ export declare class AsperaSdk {
201
201
  showSelectFileDialog: (options?: FileDialogOptions) => Promise<DataTransferResponse>;
202
202
  /** Function to display a folder dialog for the user to select folders. */
203
203
  showSelectFolderDialog: (options?: FolderDialogOptions) => Promise<DataTransferResponse>;
204
+ /** Function to show the about page of the transfer client */
205
+ showAbout: () => Promise<any>;
204
206
  /** Function to display the IBM Aspera preferences page */
205
207
  showPreferences: () => Promise<any>;
206
208
  /** Function to modify a running transfer */
@@ -208,10 +210,7 @@ export declare class AsperaSdk {
208
210
  /** Function to set custom branding for IBM Aspera */
209
211
  setBranding: (id: string, options: CustomBrandingOptions) => Promise<any>;
210
212
  /** Create dropzone for drop events of files */
211
- createDropzone: (callback: (data: {
212
- event: any;
213
- files: DataTransferResponse;
214
- }) => void, elementSelector: string) => void;
213
+ createDropzone: (callback: (data: DropzoneEventData) => void, elementSelector: string, options?: DropzoneOptions) => void;
215
214
  /** Remove dropzone for drop events of files */
216
215
  removeDropzone: (elementSelector: string) => void;
217
216
  /** Function to get latest installer information */
@@ -238,6 +237,8 @@ export declare class AsperaSdk {
238
237
  getInstallerUrls: () => InstallerUrlInfo;
239
238
  /** Function to get the SDK capabilities. */
240
239
  getCapabilities: () => SdkCapabilities;
240
+ /** Function to check whether the SDK supports the specified capability */
241
+ hasCapability: (capability: keyof SdkCapabilities) => boolean;
241
242
  /** Function to get a checksum for a file */
242
243
  getChecksum: (options: GetChecksumOptions) => Promise<ChecksumFileResponse>;
243
244
  /** Indicate if Safari Extension is enabled. If the extension is disabled during the lifecycle this will not update to disabled. */
@@ -58,6 +58,57 @@ export interface DataTransferResponse {
58
58
  files: BrowserStyleFile[];
59
59
  };
60
60
  }
61
+ /** Drag and drop event types supported by the dropzone. */
62
+ export type DropzoneEventType = 'dragenter' | 'dragleave' | 'dragover' | 'drop';
63
+ /** Callback data for dropzone drag and drop events. */
64
+ export interface DropzoneEventData {
65
+ event: DragEvent;
66
+ files?: DataTransferResponse;
67
+ }
68
+ /** Options to configure the behavior of a dropzone created with {@link createDropzone}. */
69
+ export interface DropzoneOptions {
70
+ /**
71
+ * Whether the listener is invoked when a drag enters the dropzone element.
72
+ * Useful for applying visual feedback on the drop target.
73
+ * Default: false.
74
+ */
75
+ dragEnter?: boolean;
76
+ /**
77
+ * Whether the listener is invoked while a drag is held over the dropzone element.
78
+ * Default: false.
79
+ */
80
+ dragOver?: boolean;
81
+ /**
82
+ * Whether the listener is invoked when a drag leaves the dropzone element.
83
+ * Useful for reverting visual feedback applied on `dragEnter`.
84
+ * Default: false.
85
+ */
86
+ dragLeave?: boolean;
87
+ /**
88
+ * Whether the listener is invoked when files are dropped onto the dropzone element.
89
+ * The dropped files are provided via the callback's `files` property.
90
+ * Default: true.
91
+ */
92
+ drop?: boolean;
93
+ /**
94
+ * Whether drag and drop events propagate to parent elements after being handled.
95
+ * When false, `event.stopPropagation()` is called on all enabled events (`dragenter`, `dragleave`,
96
+ * `dragover`, `drop`). Note that `dragover` is always registered internally when `drop` is true,
97
+ * so this setting also affects that internal listener even if `dragOver` is not enabled.
98
+ * Set to false when the dropzone is nested inside another draggable or interactive element.
99
+ * Default: true.
100
+ */
101
+ allowPropagation?: boolean;
102
+ /**
103
+ * Whether the browser's default action is preserved on `dragenter` and `dragleave` events.
104
+ * When false (default), the SDK calls `event.preventDefault()` on these events automatically.
105
+ * When true, the caller is responsible for calling `event.preventDefault()` in the listener.
106
+ * Note: `dragover` and `drop` always call `event.preventDefault()` regardless of this setting,
107
+ * as it is required for drops to function correctly in the browser.
108
+ * Default: false.
109
+ */
110
+ allowDefaultBehavior?: boolean;
111
+ }
61
112
  export interface BrowserStyleFile {
62
113
  /** Last modified date of the file in milliseconds since the UNIX epoch */
63
114
  lastModified: number;
@@ -828,4 +879,18 @@ export interface SdkCapabilities {
828
879
  * Whether the SDK can calculate checksums of a file chunk.
829
880
  */
830
881
  fileChecksum: boolean;
882
+ /**
883
+ * Whether the transfer client supports showing the about page.
884
+ *
885
+ * This is supported when using Connect or IBM Aspera for desktop with the required RPC methods,
886
+ * but not HTTP Gateway.
887
+ */
888
+ showAbout: boolean;
889
+ /**
890
+ * Whether the transfer client supports showing the preferences page.
891
+ *
892
+ * This is supported when using Connect or IBM Aspera for desktop with the required RPC methods,
893
+ * but not HTTP Gateway.
894
+ */
895
+ showPreferences: boolean;
831
896
  }