@ibm-aspera/sdk 0.2.2 → 0.2.3

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/CHANGELOG.md CHANGED
@@ -2,6 +2,13 @@
2
2
 
3
3
  All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
4
4
 
5
+ ### [0.2.3](https://github.com/IBM/aspera-sdk-js/compare/v0.2.2...v0.2.3) (2024-10-31)
6
+
7
+
8
+ ### Bug Fixes
9
+
10
+ * **#48:** use download site instead of cloudfront ([#49](https://github.com/IBM/aspera-sdk-js/issues/49)) ([cc44ece](https://github.com/IBM/aspera-sdk-js/commit/cc44ecec186d8ca1fdb2797ddd0704c11c6abc0d)), closes [#48](https://github.com/IBM/aspera-sdk-js/issues/48)
11
+
5
12
  ### [0.2.2](https://github.com/IBM/aspera-sdk-js/compare/v0.2.1...v0.2.2) (2024-10-25)
6
13
 
7
14
 
@@ -3,4 +3,4 @@ export declare const hiddenStyleList = "\n display: none !important;\n width:
3
3
  /** @ignore */
4
4
  export declare const protocol = "aspera://";
5
5
  /** @ignore */
6
- export declare const installerUrl = "https://d3gcli72yxqn2z.cloudfront.net/downloads/desktop/latest/stable";
6
+ export declare const installerUrl = "https://downloads.ibmaspera.com/downloads/desktop/latest/stable";
@@ -6,4 +6,4 @@ exports.hiddenStyleList = "\n display: none !important;\n width: 1px !importan
6
6
  /** @ignore */
7
7
  exports.protocol = 'aspera://';
8
8
  /** @ignore */
9
- exports.installerUrl = 'https://d3gcli72yxqn2z.cloudfront.net/downloads/desktop/latest/stable';
9
+ exports.installerUrl = 'https://downloads.ibmaspera.com/downloads/desktop/latest/stable';
@@ -36,7 +36,7 @@ export interface InstallerOptions {
36
36
  /**
37
37
  * Custom URL to fetch Aspera installers from. Generally this is only
38
38
  * needed when self-hosting the installers rather than using the installers
39
- * hosted on CloudFront.
39
+ * hosted by IBM.
40
40
  *
41
41
  * This URL should point to the directory containing the `latest.json` file that
42
42
  * contains the installer information.
@@ -1,3 +1,3 @@
1
1
  /*! For license information please see aspera-sdk.js.LICENSE.txt */
2
- (()=>{"use strict";var e={94:function(e,t,n){var r=this&&this.__awaiter||function(e,t,n,r){return new(n||(n=Promise))((function(o,i){function s(e){try{c(r.next(e))}catch(e){i(e)}}function a(e){try{c(r.throw(e))}catch(e){i(e)}}function c(e){var t;e.done?o(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(s,a)}c((r=r.apply(e,t||[])).next())}))},o=this&&this.__generator||function(e,t){var n,r,o,i,s={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:a(0),throw:a(1),return:a(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function a(a){return function(c){return function(a){if(n)throw new TypeError("Generator is already executing.");for(;i&&(i=0,a[0]&&(s=0)),s;)try{if(n=1,r&&(o=2&a[0]?r.return:a[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,a[1])).done)return o;switch(r=0,o&&(a=[2&a[0],o.value]),a[0]){case 0:case 1:o=a;break;case 4:return s.label++,{value:a[1],done:!1};case 5:s.label++,r=a[1],a=[0];continue;case 7:a=s.ops.pop(),s.trys.pop();continue;default:if(!((o=(o=s.trys).length>0&&o[o.length-1])||6!==a[0]&&2!==a[0])){s=0;continue}if(3===a[0]&&(!o||a[1]>o[0]&&a[1]<o[3])){s.label=a[1];break}if(6===a[0]&&s.label<o[1]){s.label=o[1],o=a;break}if(o&&s.label<o[2]){s.label=o[2],s.ops.push(a);break}o[2]&&s.ops.pop(),s.trys.pop();continue}a=t.call(e,s)}catch(e){a=[6,e],r=0}finally{n=o=0}if(5&a[0])throw a[1];return{value:a[0]?a[1]:void 0,done:!0}}([a,c])}}};Object.defineProperty(t,"__esModule",{value:!0}),t.JSONRPCClient=void 0;var i=n(287),s=n(616),a=function(){function e(e,t){this._send=e,this.createID=t,this.idToResolveMap=new Map,this.id=0}return e.prototype._createID=function(){return this.createID?this.createID():++this.id},e.prototype.timeout=function(e,t){var n=this;void 0===t&&(t=function(e){return(0,i.createJSONRPCErrorResponse)(e,s.DefaultErrorCode,"Request timeout")});var r=function(r,o){var i=setTimeout((function(){r.forEach((function(e){var r=n.idToResolveMap.get(e);r&&(n.idToResolveMap.delete(e),r(t(e)))}))}),e);return o().then((function(e){return clearTimeout(i),e}),(function(e){return clearTimeout(i),Promise.reject(e)}))};return{request:function(e,t,o){var i=n._createID();return r([i],(function(){return n.requestWithID(e,t,o,i)}))},requestAdvanced:function(e,t){return function(e,t){var o=(Array.isArray(e)?e:[e]).map((function(e){return e.id})).filter(c);return r(o,(function(){return n.requestAdvanced(e,t)}))}(e,t)}}},e.prototype.request=function(e,t,n){return this.requestWithID(e,t,n,this._createID())},e.prototype.requestWithID=function(e,t,n,s){return r(this,void 0,void 0,(function(){var r,a;return o(this,(function(o){switch(o.label){case 0:return r=(0,i.createJSONRPCRequest)(s,e,t),[4,this.requestAdvanced(r,n)];case 1:return void 0===(a=o.sent()).result||a.error?void 0===a.result&&a.error?[2,Promise.reject(new i.JSONRPCErrorException(a.error.message,a.error.code,a.error.data))]:[2,Promise.reject(new Error("An unexpected error occurred"))]:[2,a.result]}}))}))},e.prototype.requestAdvanced=function(e,t){var n=this,r=Array.isArray(e);Array.isArray(e)||(e=[e]);var o=e.filter((function(e){return c(e.id)})),a=o.map((function(e){return new Promise((function(t){return n.idToResolveMap.set(e.id,t)}))})),u=Promise.all(a).then((function(e){return r||!e.length?e:e[0]}));return this.send(r?e:e[0],t).then((function(){return u}),(function(e){return o.forEach((function(t){n.receive((0,i.createJSONRPCErrorResponse)(t.id,s.DefaultErrorCode,e&&e.message||"Failed to send a request"))})),u}))},e.prototype.notify=function(e,t,n){var r=(0,i.createJSONRPCNotification)(e,t);this.send(r,n).then(void 0,(function(){}))},e.prototype.send=function(e,t){return r(this,void 0,void 0,(function(){return o(this,(function(n){return[2,this._send(e,t)]}))}))},e.prototype.rejectAllPendingRequests=function(e){this.idToResolveMap.forEach((function(t,n){return t((0,i.createJSONRPCErrorResponse)(n,s.DefaultErrorCode,e))})),this.idToResolveMap.clear()},e.prototype.receive=function(e){var t=this;Array.isArray(e)||(e=[e]),e.forEach((function(e){var n=t.idToResolveMap.get(e.id);n&&(t.idToResolveMap.delete(e.id),n(e))}))},e}();t.JSONRPCClient=a;var c=function(e){return null!=e}},773:function(e,t,n){var r=this&&this.__createBinding||(Object.create?function(e,t,n,r){void 0===r&&(r=n);var o=Object.getOwnPropertyDescriptor(t,n);o&&!("get"in o?!t.__esModule:o.writable||o.configurable)||(o={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,r,o)}:function(e,t,n,r){void 0===r&&(r=n),e[r]=t[n]}),o=this&&this.__exportStar||function(e,t){for(var n in e)"default"===n||Object.prototype.hasOwnProperty.call(t,n)||r(t,e,n)};Object.defineProperty(t,"__esModule",{value:!0}),o(n(94),t),o(n(989),t),o(n(287),t),o(n(490),t),o(n(556),t)},989:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0})},616:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.DefaultErrorCode=void 0,t.DefaultErrorCode=0},287:function(e,t){var n,r=this&&this.__extends||(n=function(e,t){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},n(e,t)},function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function r(){this.constructor=e}n(e,t),e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)});Object.defineProperty(t,"__esModule",{value:!0}),t.createJSONRPCNotification=t.createJSONRPCRequest=t.createJSONRPCSuccessResponse=t.createJSONRPCErrorResponse=t.JSONRPCErrorCode=t.JSONRPCErrorException=t.isJSONRPCResponses=t.isJSONRPCResponse=t.isJSONRPCRequests=t.isJSONRPCRequest=t.isJSONRPCID=t.JSONRPC=void 0,t.JSONRPC="2.0",t.isJSONRPCID=function(e){return"string"==typeof e||"number"==typeof e||null===e},t.isJSONRPCRequest=function(e){return e.jsonrpc===t.JSONRPC&&void 0!==e.method&&void 0===e.result&&void 0===e.error},t.isJSONRPCRequests=function(e){return Array.isArray(e)&&e.every(t.isJSONRPCRequest)},t.isJSONRPCResponse=function(e){return e.jsonrpc===t.JSONRPC&&void 0!==e.id&&(void 0!==e.result||void 0!==e.error)},t.isJSONRPCResponses=function(e){return Array.isArray(e)&&e.every(t.isJSONRPCResponse)};var o,i=function(e,t,n){var r={code:e,message:t};return null!=n&&(r.data=n),r},s=function(e){function t(n,r,o){var i=e.call(this,n)||this;return Object.setPrototypeOf(i,t.prototype),i.code=r,i.data=o,i}return r(t,e),t.prototype.toObject=function(){return i(this.code,this.message,this.data)},t}(Error);t.JSONRPCErrorException=s,(o=t.JSONRPCErrorCode||(t.JSONRPCErrorCode={}))[o.ParseError=-32700]="ParseError",o[o.InvalidRequest=-32600]="InvalidRequest",o[o.MethodNotFound=-32601]="MethodNotFound",o[o.InvalidParams=-32602]="InvalidParams",o[o.InternalError=-32603]="InternalError",t.createJSONRPCErrorResponse=function(e,n,r,o){return{jsonrpc:t.JSONRPC,id:e,error:i(n,r,o)}},t.createJSONRPCSuccessResponse=function(e,n){return{jsonrpc:t.JSONRPC,id:e,result:null!=n?n:null}},t.createJSONRPCRequest=function(e,n,r){return{jsonrpc:t.JSONRPC,id:e,method:n,params:r}},t.createJSONRPCNotification=function(e,n){return{jsonrpc:t.JSONRPC,method:e,params:n}}},556:function(e,t,n){var r=this&&this.__awaiter||function(e,t,n,r){return new(n||(n=Promise))((function(o,i){function s(e){try{c(r.next(e))}catch(e){i(e)}}function a(e){try{c(r.throw(e))}catch(e){i(e)}}function c(e){var t;e.done?o(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(s,a)}c((r=r.apply(e,t||[])).next())}))},o=this&&this.__generator||function(e,t){var n,r,o,i,s={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:a(0),throw:a(1),return:a(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function a(a){return function(c){return function(a){if(n)throw new TypeError("Generator is already executing.");for(;i&&(i=0,a[0]&&(s=0)),s;)try{if(n=1,r&&(o=2&a[0]?r.return:a[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,a[1])).done)return o;switch(r=0,o&&(a=[2&a[0],o.value]),a[0]){case 0:case 1:o=a;break;case 4:return s.label++,{value:a[1],done:!1};case 5:s.label++,r=a[1],a=[0];continue;case 7:a=s.ops.pop(),s.trys.pop();continue;default:if(!((o=(o=s.trys).length>0&&o[o.length-1])||6!==a[0]&&2!==a[0])){s=0;continue}if(3===a[0]&&(!o||a[1]>o[0]&&a[1]<o[3])){s.label=a[1];break}if(6===a[0]&&s.label<o[1]){s.label=o[1],o=a;break}if(o&&s.label<o[2]){s.label=o[2],s.ops.push(a);break}o[2]&&s.ops.pop(),s.trys.pop();continue}a=t.call(e,s)}catch(e){a=[6,e],r=0}finally{n=o=0}if(5&a[0])throw a[1];return{value:a[0]?a[1]:void 0,done:!0}}([a,c])}}};Object.defineProperty(t,"__esModule",{value:!0}),t.JSONRPCServerAndClient=void 0;var i=n(287),s=function(){function e(e,t,n){var r;void 0===n&&(n={}),this.server=e,this.client=t,this.errorListener=null!==(r=n.errorListener)&&void 0!==r?r:console.warn}return e.prototype.applyServerMiddleware=function(){for(var e,t=[],n=0;n<arguments.length;n++)t[n]=arguments[n];(e=this.server).applyMiddleware.apply(e,t)},e.prototype.hasMethod=function(e){return this.server.hasMethod(e)},e.prototype.addMethod=function(e,t){this.server.addMethod(e,t)},e.prototype.addMethodAdvanced=function(e,t){this.server.addMethodAdvanced(e,t)},e.prototype.timeout=function(e){return this.client.timeout(e)},e.prototype.request=function(e,t,n){return this.client.request(e,t,n)},e.prototype.requestAdvanced=function(e,t){return this.client.requestAdvanced(e,t)},e.prototype.notify=function(e,t,n){this.client.notify(e,t,n)},e.prototype.rejectAllPendingRequests=function(e){this.client.rejectAllPendingRequests(e)},e.prototype.receiveAndSend=function(e,t,n){return r(this,void 0,void 0,(function(){var r,s;return o(this,(function(o){switch(o.label){case 0:return(0,i.isJSONRPCResponse)(e)||(0,i.isJSONRPCResponses)(e)?(this.client.receive(e),[3,4]):[3,1];case 1:return(0,i.isJSONRPCRequest)(e)||(0,i.isJSONRPCRequests)(e)?[4,this.server.receive(e,t)]:[3,3];case 2:return(r=o.sent())?[2,this.client.send(r,n)]:[3,4];case 3:return s="Received an invalid JSON-RPC message",this.errorListener(s,e),[2,Promise.reject(new Error(s))];case 4:return[2]}}))}))},e}();t.JSONRPCServerAndClient=s},490:function(e,t,n){var r=this&&this.__assign||function(){return r=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++)for(var o in t=arguments[n])Object.prototype.hasOwnProperty.call(t,o)&&(e[o]=t[o]);return e},r.apply(this,arguments)},o=this&&this.__awaiter||function(e,t,n,r){return new(n||(n=Promise))((function(o,i){function s(e){try{c(r.next(e))}catch(e){i(e)}}function a(e){try{c(r.throw(e))}catch(e){i(e)}}function c(e){var t;e.done?o(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(s,a)}c((r=r.apply(e,t||[])).next())}))},i=this&&this.__generator||function(e,t){var n,r,o,i,s={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:a(0),throw:a(1),return:a(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function a(a){return function(c){return function(a){if(n)throw new TypeError("Generator is already executing.");for(;i&&(i=0,a[0]&&(s=0)),s;)try{if(n=1,r&&(o=2&a[0]?r.return:a[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,a[1])).done)return o;switch(r=0,o&&(a=[2&a[0],o.value]),a[0]){case 0:case 1:o=a;break;case 4:return s.label++,{value:a[1],done:!1};case 5:s.label++,r=a[1],a=[0];continue;case 7:a=s.ops.pop(),s.trys.pop();continue;default:if(!((o=(o=s.trys).length>0&&o[o.length-1])||6!==a[0]&&2!==a[0])){s=0;continue}if(3===a[0]&&(!o||a[1]>o[0]&&a[1]<o[3])){s.label=a[1];break}if(6===a[0]&&s.label<o[1]){s.label=o[1],o=a;break}if(o&&s.label<o[2]){s.label=o[2],s.ops.push(a);break}o[2]&&s.ops.pop(),s.trys.pop();continue}a=t.call(e,s)}catch(e){a=[6,e],r=0}finally{n=o=0}if(5&a[0])throw a[1];return{value:a[0]?a[1]:void 0,done:!0}}([a,c])}}},s=this&&this.__spreadArray||function(e,t,n){if(n||2===arguments.length)for(var r,o=0,i=t.length;o<i;o++)!r&&o in t||(r||(r=Array.prototype.slice.call(t,0,o)),r[o]=t[o]);return e.concat(r||Array.prototype.slice.call(t))};Object.defineProperty(t,"__esModule",{value:!0}),t.JSONRPCServer=void 0;var a=n(287),c=n(616),u=function(e){return(0,a.createJSONRPCErrorResponse)((0,a.isJSONRPCID)(e.id)?e.id:null,a.JSONRPCErrorCode.InvalidRequest,"Invalid Request")},l=function(){function e(e){var t;void 0===e&&(e={}),this.mapErrorToJSONRPCErrorResponse=h,this.nameToMethodDictionary={},this.middleware=null,this.errorListener=null!==(t=e.errorListener)&&void 0!==t?t:console.warn}return e.prototype.hasMethod=function(e){return!!this.nameToMethodDictionary[e]},e.prototype.addMethod=function(e,t){this.addMethodAdvanced(e,this.toJSONRPCMethod(t))},e.prototype.toJSONRPCMethod=function(e){return function(t,n){var r=e(t.params,n);return Promise.resolve(r).then((function(e){return p(t.id,e)}))}},e.prototype.addMethodAdvanced=function(e,t){var n;this.nameToMethodDictionary=r(r({},this.nameToMethodDictionary),((n={})[e]=t,n))},e.prototype.receiveJSON=function(e,t){var n=this.tryParseRequestJSON(e);return n?this.receive(n,t):Promise.resolve((0,a.createJSONRPCErrorResponse)(null,a.JSONRPCErrorCode.ParseError,"Parse error"))},e.prototype.tryParseRequestJSON=function(e){try{return JSON.parse(e)}catch(e){return null}},e.prototype.receive=function(e,t){return Array.isArray(e)?this.receiveMultiple(e,t):this.receiveSingle(e,t)},e.prototype.receiveMultiple=function(e,t){return o(this,void 0,void 0,(function(){var n,r=this;return i(this,(function(o){switch(o.label){case 0:return[4,Promise.all(e.map((function(e){return r.receiveSingle(e,t)})))];case 1:return 1===(n=o.sent().filter(f)).length?[2,n[0]]:n.length?[2,n]:[2,null]}}))}))},e.prototype.receiveSingle=function(e,t){return o(this,void 0,void 0,(function(){var n,r;return i(this,(function(o){switch(o.label){case 0:return n=this.nameToMethodDictionary[e.method],(0,a.isJSONRPCRequest)(e)?[3,1]:[2,u(e)];case 1:return[4,this.callMethod(n,e,t)];case 2:return r=o.sent(),[2,v(e,r)]}}))}))},e.prototype.applyMiddleware=function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];this.middleware?this.middleware=this.combineMiddlewares(s([this.middleware],e,!0)):this.middleware=this.combineMiddlewares(e)},e.prototype.combineMiddlewares=function(e){return e.length?e.reduce(this.middlewareReducer):null},e.prototype.middlewareReducer=function(e,t){return function(n,r,o){return e((function(e,r){return t(n,e,r)}),r,o)}},e.prototype.callMethod=function(e,t,n){var r=this,o=function(e){return r.errorListener('An unexpected error occurred while executing "'.concat(t.method,'" JSON-RPC method:'),e),Promise.resolve(r.mapErrorToJSONRPCErrorResponseIfNecessary(t.id,e))};try{return(this.middleware||d)((function(t,n){return e?e(t,n):void 0!==t.id?Promise.resolve((r=t.id,(0,a.createJSONRPCErrorResponse)(r,a.JSONRPCErrorCode.MethodNotFound,"Method not found"))):Promise.resolve(null);var r}),t,n).then(void 0,o)}catch(e){return o(e)}},e.prototype.mapErrorToJSONRPCErrorResponseIfNecessary=function(e,t){return void 0!==e?this.mapErrorToJSONRPCErrorResponse(e,t):null},e}();t.JSONRPCServer=l;var f=function(e){return null!==e},d=function(e,t,n){return e(t,n)},p=function(e,t){return void 0!==e?(0,a.createJSONRPCSuccessResponse)(e,t):null},h=function(e,t){var n,r,o=null!==(n=null==t?void 0:t.message)&&void 0!==n?n:"An unexpected error occurred",i=c.DefaultErrorCode;return t instanceof a.JSONRPCErrorException&&(i=t.code,r=t.data),(0,a.createJSONRPCErrorResponse)(e,i,o,r)},v=function(e,t){return t||(void 0!==e.id?(0,a.createJSONRPCErrorResponse)(e.id,a.JSONRPCErrorCode.InternalError,"Internal error"):null)}}},t={};function n(r){var o=t[r];if(void 0!==o)return o.exports;var i=t[r]={exports:{}};return e[r].call(i.exports,i,i.exports,n),i.exports}n.d=(e,t)=>{for(var r in t)n.o(t,r)&&!n.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),n.d({},{z7:()=>z});var r,o,i="aspera://",s="The provided callback is not a function",a="Unable to initialize drag-drop",c="Unable to generate IFRAME for download. Using new window",u="Unable to get latest installers",l="Unable to get all transfers",f="Unable to get transfer",d="Unable to modify transfer",p="Unable to remove transfer",h="Unable to resume transfer",v="Unable to connect to IBM Aspera for Desktop server",y="IBM Aspera SDK has not been verified. Run test or init first",b="Unable to set custom branding",m="Unable to show transfer directory",g="Unable to show select file dialog",S="Unable to show select folder dialog",R="Unable to show preferences",E="Unable to stop transfer",P="The transfer failed to initiate",w=function(){var e,t;return{promise:new Promise((function(n,r){e=n,t=r})),resolver:e,rejecter:t}},C=function(e,t){t&&t.code&&t.message&&(t={code:t.code,message:t.message,data:t.data}),"object"==typeof window&&(Array.isArray(window.asperaSdkLogs)||(window.asperaSdkLogs=[]),window.asperaSdkLogs.push({message:e,debugData:t})),console.warn("Aspera SDK: ".concat(e),t)},k=function(e,t){var n={error:!0,message:e};return t&&t.code&&t.message&&(n.debugData={code:t.code,message:t.message,data:t.data}),n},O=function(){var e;return(null===(e=window.crypto)||void 0===e?void 0:e.randomUUID)?window.crypto.randomUUID():"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,(function(e){var t=Number((((new Date).getTime()+16)*Math.random()).toFixed())%16;return"x"!==e&&(t=3&t|8),t.toString(16)}))},_=function(e,t){return C(e,t),new Promise((function(n,r){r(k(e,t))}))},x=function(e){try{return new URL(e),!0}catch(e){return!1}},N=function(){return/^((?!chrome|android).)*safari/i.test(navigator.userAgent)&&!window.MSStream};!function(e){e.Monitor="Monitor",e.Ping="Ping",e.Request="Request"}(r||(r={}));var A=new(function(){function e(){var e=this;this.statusInterval=100,this.keepAliveInterval=1e3,this.isFirstPing=!0,this.lastPing=null,this.lastPong=null,this.safariExtensionEnabled=!1,this.subscribedTransferActivity=!1,this.request=function(t,n){return void 0===n&&(n={}),e.dispatchPromiseEvent(r.Request,t,n)},this.promiseExecutors=new Map,this.listenResponseEvents(),this.listenTransferActivityEvents(),this.listenStatusEvents(),this.listenPongEvents(),o&&clearTimeout(o),this.keepAlive()}return e.prototype.monitorTransferActivity=function(){var e=this,t=function(){return e.dispatchPromiseEvent(r.Monitor,"subscribe_transfer_activity",[z.globals.appId]).then((function(){e.subscribedTransferActivity=!0}))};return this.safariExtensionEnabled?t():new Promise((function(n,r){var o=setInterval((function(){e.safariExtensionEnabled&&(t().then(n).catch(r),clearInterval(o))}),1e3)}))},e.prototype.buildRPCRequest=function(e,t){return{jsonrpc:"2.0",method:e,params:t,id:O()}},e.prototype.dispatchEvent=function(e,t){var n={detail:null!=t?t:{}};document.dispatchEvent(new CustomEvent("AsperaDesktop.".concat(e),n))},e.prototype.dispatchPromiseEvent=function(e,t,n){var r=this,o=this.buildRPCRequest(t,n);return new Promise((function(t,n){r.safariExtensionEnabled?(r.promiseExecutors.set(o.id,{resolve:t,reject:n}),r.dispatchEvent(e,o)):(console.warn("The Safari extension is disabled or unresponsive (dispatch event)"),console.warn("Failed event: ".concat(JSON.stringify(o))),n("The Safari extension is disabled or unresponsive (dispatch event)"))}))},e.prototype.handleResponse=function(e){var t=e.id,n=this.promiseExecutors.get(t);if(!n)return console.warn("Unable to find a promise executor for ".concat(t)),void console.warn("Response: ".concat(e));this.promiseExecutors.delete(t),e.error?n.reject(e.error):n.resolve(e.result)},e.prototype.listenResponseEvents=function(){var e=this;document.addEventListener("AsperaDesktop.Response",(function(t){e.handleResponse(t.detail)}))},e.prototype.listenTransferActivityEvents=function(){document.addEventListener("AsperaDesktop.TransferActivity",(function(e){z.activityTracking.handleTransferActivity(e.detail)}))},e.prototype.listenStatusEvents=function(){document.addEventListener("AsperaDesktop.Status",(function(e){z.activityTracking.handleWebSocketEvents(e.detail)}))},e.prototype.listenPongEvents=function(){var e=this;document.addEventListener("AsperaDesktop.Pong",(function(){e.lastPong=Date.now(),e.safariExtensionStatusChanged(!0)}))},e.prototype.keepAlive=function(){var e=this;this.lastPing=Date.now(),this.dispatchEvent(r.Ping),this.isFirstPing?this.isFirstPing=!1:setTimeout((function(){e.checkSafariExtensionStatus()}),this.statusInterval),o=setTimeout((function(){e.keepAlive()}),this.keepAliveInterval)},e.prototype.safariExtensionStatusChanged=function(e){var t=this;if(e!==this.safariExtensionEnabled){if(this.safariExtensionEnabled=e,e){if(this.subscribedTransferActivity){var n=function(){t.monitorTransferActivity().catch((function(){console.error("Failed to resume transfer activity, will try again in 1s"),setTimeout((function(){n()}),1e3)}))};n()}}else z.activityTracking.handleWebSocketEvents("CLOSED"),this.promiseExecutors.forEach((function(e){e.reject("The Safari extension is disabled or unresponsive (extension status)")})),this.promiseExecutors.clear();z.activityTracking.handleSafariExtensionEvents(this.safariExtensionEnabled?"ENABLED":"DISABLED")}},e.prototype.checkSafariExtensionStatus=function(){var e=this.lastPong-this.lastPing;(null==this.lastPong||e<0||e>500)&&this.safariExtensionStatusChanged(!1)},e}()),T=new(function(){function e(){var e=this;this.sockets=new Map,this.isConnected=!1,this.initPromise=w(),this.handleOpen=function(){!e.isConnected&&e.joinChannel()&&(e.isConnected=!0,e.updateRpcPort(),e.notifyEvent("RECONNECT"))},this.handleClose=function(){e.isConnected&&(e.isConnected=!1,e.notifyEvent("CLOSED")),e.globalSocket?e.reconnect():e.handleNotReady()},this.handleError=function(){C("The websocket was closed due to an error")},this.handleMessage=function(t){var n;try{n=JSON.parse(t.data)}catch(e){C("Unable to parse Websocket message",{error:e,message:t})}if(n&&1===n.id)e.initPromise.resolver(n);else{var r=e.sockets.get(n.method);r&&n.params&&r(n.params)}}}return e.prototype.handleNotReady=function(){C("The websocket is not ready. Run init first")},e.prototype.joinChannel=function(){return this.globalSocket?(this.globalSocket.send(JSON.stringify({jsonrpc:"2.0",method:"subscribe_transfer_activity",params:[z.globals.appId],id:1})),!0):(this.handleNotReady(),!1)},e.prototype.registerMessage=function(e,t){this.sockets.get(e)||this.sockets.set(e,(function(e){t(e.result)}))},e.prototype.registerEvent=function(e){this.eventListener=e,this.eventListener(this.isConnected?"RECONNECT":"CLOSED")},e.prototype.init=function(){return this.connect(),this.initPromise.promise},e.prototype.connect=function(){var e=this;this.getWebSocketConnection(33024,33029).then((function(t){e.globalSocket=t,e.globalSocket.onerror=e.handleError,e.globalSocket.onclose=e.handleClose,e.globalSocket.onopen=e.handleOpen,e.globalSocket.onmessage=e.handleMessage,e.handleOpen()})).catch((function(){e.reconnect()}))},e.prototype.reconnect=function(){var e=this;this.globalSocket&&this.globalSocket.close(),setTimeout((function(){e.connect()}),1e3)},e.prototype.getWebSocketConnection=function(e,t){var n=function(e){var t;0===e.indexOf("http:")?t="ws":0===e.indexOf("https:")&&(t="wss");var n=e.replace("http://","//").replace("https://","//");return"".concat(t,":").concat(n)}(z.globals.asperaAppUrl);return new Promise((function(r,o){var i=function(e){if(e>t)return o("No available WebSocket connection found");(function(e){return new Promise((function(t,r){var o=new WebSocket("".concat(n,":").concat(e));o.onopen=function(){t(o)},o.onerror=function(){r("Connection failed on port ".concat(e))}}))})(e).then((function(e){return r(e)})).catch((function(t){i(e+1)}))};i(e)}))},e.prototype.notifyEvent=function(e){"function"==typeof this.eventListener&&this.eventListener(e)},e.prototype.updateRpcPort=function(){if(this.globalSocket){var e=new URL(this.globalSocket.url);z.globals.rpcPort=Number(e.port)}},e}()),J=function(){function e(){this.asperaAppUrl="http://127.0.0.1",this.rpcPort=33024,this.installerUrl="https://d3gcli72yxqn2z.cloudfront.net/downloads/desktop/latest/stable",this.asperaAppVerified=!1,this.dropZonesCreated=new Map}return e.prototype.backupLaunchMethod=function(e){window.alert("Launching IBM Aspera for Desktop"),window.location.href=e},e.prototype.launch=function(){var e=this;try{var t=document.createElement("iframe");t.src=i,t.onerror=function(t){C(c,t),e.backupLaunchMethod(i)},t.setAttribute("style","\n display: none !important;\n width: 1px !important;\n height: 1px !important;\n position: fixed !important;\n z-index: -99 !important;\n bottom: 0px !important;\n right: 0px !important;\n"),document.body.appendChild(t)}catch(e){C(c,e),this.backupLaunchMethod(i)}},e}(),M=function(){function e(){this.activity_callbacks=new Map,this.removed_callbacks=new Map,this.event_callbacks=new Map,this.safari_extension_callbacks=new Map,this.lastWebSocketEvent="CLOSED",this.lastSafariExtensionEvent="DISABLED"}return e.prototype.handleTransferActivity=function(e){"transferUpdated"===e.type&&this.activity_callbacks.forEach((function(t){"function"==typeof t&&t(e.data)})),"transferRemoved"===e.type&&this.removed_callbacks.forEach((function(t){"function"==typeof t&&t(e.data)}))},e.prototype.handleWebSocketEvents=function(e){this.lastWebSocketEvent!==e&&(this.event_callbacks.forEach((function(t){"function"==typeof t&&t(e)})),this.lastWebSocketEvent=e)},e.prototype.handleSafariExtensionEvents=function(e){this.lastSafariExtensionEvent!==e&&(this.safari_extension_callbacks.forEach((function(t){"function"==typeof t&&t(e)})),this.lastSafariExtensionEvent=e)},e.prototype.setup=function(){var e=this;return z.globals.sessionId&&this.registerDesktopAppSession(),N()?A.monitorTransferActivity():T.init().then((function(){T.registerMessage("transfer_activity",(function(t){return e.handleTransferActivity(t)})),T.registerEvent((function(t){return e.handleWebSocketEvents(t)}))}))},e.prototype.setCallback=function(e){if("function"==typeof e){var t="callback-".concat(this.activity_callbacks.size+1);return this.activity_callbacks.set(t,e),t}C(s)},e.prototype.removeCallback=function(e){this.activity_callbacks.delete(e)},e.prototype.setRemovedCallback=function(e){if("function"==typeof e){var t="callback-".concat(this.removed_callbacks.size+1);return this.removed_callbacks.set(t,e),t}C(s)},e.prototype.removeRemovedCallback=function(e){this.removed_callbacks.delete(e)},e.prototype.setWebSocketEventCallback=function(e){if("function"==typeof e){var t="callback-".concat(this.event_callbacks.size+1);return this.event_callbacks.set(t,e),e(this.lastWebSocketEvent),t}C(s)},e.prototype.removeWebSocketEventCallback=function(e){this.event_callbacks.delete(e)},e.prototype.setSafariExtensionEventCallback=function(e){if("function"==typeof e){var t="callback-".concat(this.safari_extension_callbacks.size+1);return this.safari_extension_callbacks.set(t,e),e(this.lastSafariExtensionEvent),t}C(s)},e.prototype.removeSafariExtensionEventCallback=function(e){this.safari_extension_callbacks.delete(e)},e.prototype.registerDesktopAppSession=function(){var e=document.createElement("iframe");e.style.display="none",e.src="aspera://initialize?app_id=".concat(z.globals.appId,"&session_id=").concat(z.globals.sessionId),document.body.appendChild(e),setTimeout((function(){document.body.removeChild(e)}),1e3)},e}(),j=function(){function e(){this.globals=new J,this.activityTracking=new M}return Object.defineProperty(e.prototype,"isReady",{get:function(){return this.globals.asperaAppVerified&&""!==this.globals.appId},enumerable:!1,configurable:!0}),e}(),q=n(773),D=function(){var e=this;this.handleRequest=function(t){var n={method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify(t)},r="".concat(z.globals.asperaAppUrl,":").concat(z.globals.rpcPort);return fetch(r,n).then((function(n){if(n.ok)return n.json().then((function(t){return e.client.receive(t)}));if(void 0!==t.id)throw Promise.reject(n.statusText)}))},this.request=function(t,n){return e.client.request(t,n)},this.client=new q.JSONRPCClient(this.handleRequest)},I=new function(){var e=this;this.request=function(t,n){return void 0===n&&(n={}),r=e.httpClient.request(t,n),o=w(),r.then((function(e){o.resolver(e)}),(function(e){o.rejecter(e)})),o.promise;var r,o},this.httpClient=new D},L=N()?A:I,U=function(){return L.request("get_info").then((function(e){return z.globals.AsperaSdkInfo=e,z.globals.asperaAppVerified=!0,e}))},W=function(){if(!z.isReady)return _(y);var e=w();return L.request("init_drag_drop").then((function(t){return e.resolver(t)})).catch((function(t){C(a,t),e.rejecter(k(a,t))})),e.promise},z=new j;z.init=function(e){var t,n,r=null!==(t=null==e?void 0:e.appId)&&void 0!==t?t:O(),o=null!==(n=null==e?void 0:e.supportMultipleUsers)&&void 0!==n&&n;return z.globals.appId=r,o&&(z.globals.sessionId=O()),z.activityTracking.setup().then((function(){return U()})).then((function(){return W()})).catch((function(e){throw C(v,e),z.globals.asperaAppVerified=!1,k(v,e)}))},z.testConnection=U,z.startTransfer=function(e,t){if(!z.isReady)return _(y);if(!function(e){return!(!e||"object"!=typeof e||"string"!=typeof e.direction||"string"!=typeof e.remote_host||!Array.isArray(e.paths))}(e))return _("The supplied transferSpec is not valid",{transferSpec:e});var n=w(),r={transfer_spec:e,desktop_spec:t,app_id:z.globals.appId};return L.request("start_transfer",r).then((function(e){return n.resolver(e)})).catch((function(e){C(P,e),n.rejecter(k(P,e))})),n.promise},z.registerActivityCallback=function(e){return z.activityTracking.setCallback(e)},z.deregisterActivityCallback=function(e){z.activityTracking.removeCallback(e)},z.removeTransfer=function(e){if(!z.isReady)return _(y);var t=w(),n={transfer_id:e};return L.request("remove_transfer",n).then((function(e){return t.resolver(e)})).catch((function(e){C(p,e),t.rejecter(k(p,e))})),t.promise},z.showDirectory=function(e){if(!z.isReady)return _(y);var t=w(),n={transfer_id:e};return L.request("show_directory",n).then((function(e){return t.resolver(e)})).catch((function(e){C(m,e),t.rejecter(k(m,e))})),t.promise},z.stopTransfer=function(e){if(!z.isReady)return _(y);var t=w(),n={transfer_id:e};return L.request("stop_transfer",n).then((function(e){return t.resolver(e)})).catch((function(e){C(E,e),t.rejecter(k(E,e))})),t.promise},z.resumeTransfer=function(e,t){if(!z.isReady)return _(y);var n=w(),r={transfer_id:e,transfer_spec:t};return L.request("resume_transfer",r).then((function(e){return n.resolver(e)})).catch((function(e){C(h,e),n.rejecter(k(h,e))})),n.promise},z.getAllTransfers=function(){if(!z.isReady)return _(y);var e=w(),t={app_id:z.globals.appId};return L.request("get_all_transfers",t).then((function(t){return e.resolver(t)})).catch((function(t){C(l,t),e.rejecter(k(l,t))})),e.promise},z.getTransfer=function(e){if(!z.isReady)return _(y);var t=w(),n={transfer_id:e};return L.request("get_transfer",n).then((function(e){return t.resolver(e)})).catch((function(e){C(f,e),t.rejecter(k(f,e))})),t.promise},z.registerRemovedCallback=function(e){return z.activityTracking.setRemovedCallback(e)},z.deregisterRemovedCallback=function(e){z.activityTracking.removeRemovedCallback(e)},z.showSelectFileDialog=function(e){if(!z.isReady)return _(y);var t=w(),n={options:e||{},app_id:z.globals.appId};return L.request("show_file_dialog",n).then((function(e){return t.resolver(e)})).catch((function(e){C(g,e),t.rejecter(k(g,e))})),t.promise},z.showSelectFolderDialog=function(e){if(!z.isReady)return _(y);var t=w(),n={options:e||{},app_id:z.globals.appId};return L.request("show_folder_dialog",n).then((function(e){return t.resolver(e)})).catch((function(e){C(S,e),t.rejecter(k(S,e))})),t.promise},z.showPreferences=function(){if(!z.isReady)return _(y);var e=w();return L.request("open_preferences").then((function(t){return e.resolver(t)})).catch((function(t){C(R,t),e.rejecter(k(R,t))})),e.promise},z.modifyTransfer=function(e,t){if(!z.isReady)return _(y);var n=w(),r={transfer_id:e,transfer_spec:t};return L.request("modify_transfer",r).then((function(e){return n.resolver(e)})).catch((function(e){C(d,e),n.rejecter(k(d,e))})),n.promise},z.createDropzone=function(e,t){var n=document.querySelectorAll(t);if(n&&n.length){var r=function(e){e.preventDefault()},o=function(t){t.preventDefault();var n=[];if(t.dataTransfer&&t.dataTransfer.files&&t.dataTransfer.files.length&&t.dataTransfer.files[0]){for(var r=0;r<t.dataTransfer.files.length;r++){var o=t.dataTransfer.files[r];n.push({lastModified:o.lastModified,name:o.name,size:o.size,type:o.type})}var i={files:n,app_id:z.globals.appId};L.request("dropped_files",i).then((function(n){return e({event:t,files:n})})).catch((function(e){C("The dropped item could not be parsed. Please try selecting via the select file/folder option",e)}))}};n.forEach((function(e){e.addEventListener("dragover",r),e.addEventListener("drop",o),z.globals.dropZonesCreated.set(t,[{event:"dragover",callback:r},{event:"drop",callback:o}])}))}else C("Unable to find the element on the current page")},z.removeDropzone=function(e){var t=z.globals.dropZonesCreated.get(e);t&&t.forEach((function(t){var n=document.querySelectorAll(e);n&&n.length&&n.forEach((function(e){e.removeEventListener(t.event,t.callback)}))}))},z.getInstallerInfo=function(e){void 0===e&&(e={});var t=e.endpoint||z.globals.installerUrl;if(t.endsWith("/latest.json")&&(t=t.replace("/latest.json","")),!x(t))return _("The specified endpoint is not a valid URL",{url:t});var n=w();return function(e){return t=fetch(e,{headers:{"Content-Type":"application/json"}}),n=w(),t.then((function(e){return e.ok?n.resolver(e):n.rejecter(e),e})).catch((function(e){n.rejecter(e)})),n.promise;var t,n}("".concat(t,"/latest.json")).then((function(t){t.json().then((function(t){if(e.endpoint)for(var r=0,o=t.entries;r<o.length;r++){var i=o[r];x(i.url)||(i.url="".concat(e.endpoint,"/").concat(i.url))}if(e.all)n.resolver(t);else{var s=(a=navigator.userAgent,/Mac/.test(a)?"macos":/Win/.test(a)?"windows":/Linux/.test(a)?"linux":"unknown");t.entries=t.entries.filter((function(e){return e.platform===s})),n.resolver(t)}var a}))})).catch((function(e){C(u,e),n.rejecter(k(u,e))})),n.promise},z.registerStatusCallback=function(e){return z.activityTracking.setWebSocketEventCallback(e)},z.deregisterStatusCallback=function(e){z.activityTracking.removeWebSocketEventCallback(e)},z.registerSafariExtensionStatusCallback=function(e){return z.activityTracking.setSafariExtensionEventCallback(e)},z.deregisterSafariExtensionStatusCallback=function(e){z.activityTracking.removeSafariExtensionEventCallback(e)},z.initDragDrop=W,z.setBranding=function(e,t){if(!z.isReady)return _(y);var n=w(),r={branding:{id:e,name:t.name,theme:t.theme}};return L.request("update_branding",r).then((function(e){return n.resolver(e)})).catch((function(e){C(b,e),n.rejecter(k(b,e))})),n.promise},z.getInfo=function(){return z.isReady?new Promise((function(e,t){e(z.globals.AsperaSdkInfo)})):_(y)},z.isSafari=N;var F=z.globals.launch;z.launch=F,"object"==typeof window&&(window.asperaSdk=z)})();
2
+ (()=>{"use strict";var e={94:function(e,t,n){var r=this&&this.__awaiter||function(e,t,n,r){return new(n||(n=Promise))((function(o,i){function s(e){try{c(r.next(e))}catch(e){i(e)}}function a(e){try{c(r.throw(e))}catch(e){i(e)}}function c(e){var t;e.done?o(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(s,a)}c((r=r.apply(e,t||[])).next())}))},o=this&&this.__generator||function(e,t){var n,r,o,i,s={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:a(0),throw:a(1),return:a(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function a(a){return function(c){return function(a){if(n)throw new TypeError("Generator is already executing.");for(;i&&(i=0,a[0]&&(s=0)),s;)try{if(n=1,r&&(o=2&a[0]?r.return:a[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,a[1])).done)return o;switch(r=0,o&&(a=[2&a[0],o.value]),a[0]){case 0:case 1:o=a;break;case 4:return s.label++,{value:a[1],done:!1};case 5:s.label++,r=a[1],a=[0];continue;case 7:a=s.ops.pop(),s.trys.pop();continue;default:if(!((o=(o=s.trys).length>0&&o[o.length-1])||6!==a[0]&&2!==a[0])){s=0;continue}if(3===a[0]&&(!o||a[1]>o[0]&&a[1]<o[3])){s.label=a[1];break}if(6===a[0]&&s.label<o[1]){s.label=o[1],o=a;break}if(o&&s.label<o[2]){s.label=o[2],s.ops.push(a);break}o[2]&&s.ops.pop(),s.trys.pop();continue}a=t.call(e,s)}catch(e){a=[6,e],r=0}finally{n=o=0}if(5&a[0])throw a[1];return{value:a[0]?a[1]:void 0,done:!0}}([a,c])}}};Object.defineProperty(t,"__esModule",{value:!0}),t.JSONRPCClient=void 0;var i=n(287),s=n(616),a=function(){function e(e,t){this._send=e,this.createID=t,this.idToResolveMap=new Map,this.id=0}return e.prototype._createID=function(){return this.createID?this.createID():++this.id},e.prototype.timeout=function(e,t){var n=this;void 0===t&&(t=function(e){return(0,i.createJSONRPCErrorResponse)(e,s.DefaultErrorCode,"Request timeout")});var r=function(r,o){var i=setTimeout((function(){r.forEach((function(e){var r=n.idToResolveMap.get(e);r&&(n.idToResolveMap.delete(e),r(t(e)))}))}),e);return o().then((function(e){return clearTimeout(i),e}),(function(e){return clearTimeout(i),Promise.reject(e)}))};return{request:function(e,t,o){var i=n._createID();return r([i],(function(){return n.requestWithID(e,t,o,i)}))},requestAdvanced:function(e,t){return function(e,t){var o=(Array.isArray(e)?e:[e]).map((function(e){return e.id})).filter(c);return r(o,(function(){return n.requestAdvanced(e,t)}))}(e,t)}}},e.prototype.request=function(e,t,n){return this.requestWithID(e,t,n,this._createID())},e.prototype.requestWithID=function(e,t,n,s){return r(this,void 0,void 0,(function(){var r,a;return o(this,(function(o){switch(o.label){case 0:return r=(0,i.createJSONRPCRequest)(s,e,t),[4,this.requestAdvanced(r,n)];case 1:return void 0===(a=o.sent()).result||a.error?void 0===a.result&&a.error?[2,Promise.reject(new i.JSONRPCErrorException(a.error.message,a.error.code,a.error.data))]:[2,Promise.reject(new Error("An unexpected error occurred"))]:[2,a.result]}}))}))},e.prototype.requestAdvanced=function(e,t){var n=this,r=Array.isArray(e);Array.isArray(e)||(e=[e]);var o=e.filter((function(e){return c(e.id)})),a=o.map((function(e){return new Promise((function(t){return n.idToResolveMap.set(e.id,t)}))})),u=Promise.all(a).then((function(e){return r||!e.length?e:e[0]}));return this.send(r?e:e[0],t).then((function(){return u}),(function(e){return o.forEach((function(t){n.receive((0,i.createJSONRPCErrorResponse)(t.id,s.DefaultErrorCode,e&&e.message||"Failed to send a request"))})),u}))},e.prototype.notify=function(e,t,n){var r=(0,i.createJSONRPCNotification)(e,t);this.send(r,n).then(void 0,(function(){}))},e.prototype.send=function(e,t){return r(this,void 0,void 0,(function(){return o(this,(function(n){return[2,this._send(e,t)]}))}))},e.prototype.rejectAllPendingRequests=function(e){this.idToResolveMap.forEach((function(t,n){return t((0,i.createJSONRPCErrorResponse)(n,s.DefaultErrorCode,e))})),this.idToResolveMap.clear()},e.prototype.receive=function(e){var t=this;Array.isArray(e)||(e=[e]),e.forEach((function(e){var n=t.idToResolveMap.get(e.id);n&&(t.idToResolveMap.delete(e.id),n(e))}))},e}();t.JSONRPCClient=a;var c=function(e){return null!=e}},773:function(e,t,n){var r=this&&this.__createBinding||(Object.create?function(e,t,n,r){void 0===r&&(r=n);var o=Object.getOwnPropertyDescriptor(t,n);o&&!("get"in o?!t.__esModule:o.writable||o.configurable)||(o={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,r,o)}:function(e,t,n,r){void 0===r&&(r=n),e[r]=t[n]}),o=this&&this.__exportStar||function(e,t){for(var n in e)"default"===n||Object.prototype.hasOwnProperty.call(t,n)||r(t,e,n)};Object.defineProperty(t,"__esModule",{value:!0}),o(n(94),t),o(n(989),t),o(n(287),t),o(n(490),t),o(n(556),t)},989:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0})},616:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.DefaultErrorCode=void 0,t.DefaultErrorCode=0},287:function(e,t){var n,r=this&&this.__extends||(n=function(e,t){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},n(e,t)},function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function r(){this.constructor=e}n(e,t),e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)});Object.defineProperty(t,"__esModule",{value:!0}),t.createJSONRPCNotification=t.createJSONRPCRequest=t.createJSONRPCSuccessResponse=t.createJSONRPCErrorResponse=t.JSONRPCErrorCode=t.JSONRPCErrorException=t.isJSONRPCResponses=t.isJSONRPCResponse=t.isJSONRPCRequests=t.isJSONRPCRequest=t.isJSONRPCID=t.JSONRPC=void 0,t.JSONRPC="2.0",t.isJSONRPCID=function(e){return"string"==typeof e||"number"==typeof e||null===e},t.isJSONRPCRequest=function(e){return e.jsonrpc===t.JSONRPC&&void 0!==e.method&&void 0===e.result&&void 0===e.error},t.isJSONRPCRequests=function(e){return Array.isArray(e)&&e.every(t.isJSONRPCRequest)},t.isJSONRPCResponse=function(e){return e.jsonrpc===t.JSONRPC&&void 0!==e.id&&(void 0!==e.result||void 0!==e.error)},t.isJSONRPCResponses=function(e){return Array.isArray(e)&&e.every(t.isJSONRPCResponse)};var o,i=function(e,t,n){var r={code:e,message:t};return null!=n&&(r.data=n),r},s=function(e){function t(n,r,o){var i=e.call(this,n)||this;return Object.setPrototypeOf(i,t.prototype),i.code=r,i.data=o,i}return r(t,e),t.prototype.toObject=function(){return i(this.code,this.message,this.data)},t}(Error);t.JSONRPCErrorException=s,(o=t.JSONRPCErrorCode||(t.JSONRPCErrorCode={}))[o.ParseError=-32700]="ParseError",o[o.InvalidRequest=-32600]="InvalidRequest",o[o.MethodNotFound=-32601]="MethodNotFound",o[o.InvalidParams=-32602]="InvalidParams",o[o.InternalError=-32603]="InternalError",t.createJSONRPCErrorResponse=function(e,n,r,o){return{jsonrpc:t.JSONRPC,id:e,error:i(n,r,o)}},t.createJSONRPCSuccessResponse=function(e,n){return{jsonrpc:t.JSONRPC,id:e,result:null!=n?n:null}},t.createJSONRPCRequest=function(e,n,r){return{jsonrpc:t.JSONRPC,id:e,method:n,params:r}},t.createJSONRPCNotification=function(e,n){return{jsonrpc:t.JSONRPC,method:e,params:n}}},556:function(e,t,n){var r=this&&this.__awaiter||function(e,t,n,r){return new(n||(n=Promise))((function(o,i){function s(e){try{c(r.next(e))}catch(e){i(e)}}function a(e){try{c(r.throw(e))}catch(e){i(e)}}function c(e){var t;e.done?o(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(s,a)}c((r=r.apply(e,t||[])).next())}))},o=this&&this.__generator||function(e,t){var n,r,o,i,s={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:a(0),throw:a(1),return:a(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function a(a){return function(c){return function(a){if(n)throw new TypeError("Generator is already executing.");for(;i&&(i=0,a[0]&&(s=0)),s;)try{if(n=1,r&&(o=2&a[0]?r.return:a[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,a[1])).done)return o;switch(r=0,o&&(a=[2&a[0],o.value]),a[0]){case 0:case 1:o=a;break;case 4:return s.label++,{value:a[1],done:!1};case 5:s.label++,r=a[1],a=[0];continue;case 7:a=s.ops.pop(),s.trys.pop();continue;default:if(!((o=(o=s.trys).length>0&&o[o.length-1])||6!==a[0]&&2!==a[0])){s=0;continue}if(3===a[0]&&(!o||a[1]>o[0]&&a[1]<o[3])){s.label=a[1];break}if(6===a[0]&&s.label<o[1]){s.label=o[1],o=a;break}if(o&&s.label<o[2]){s.label=o[2],s.ops.push(a);break}o[2]&&s.ops.pop(),s.trys.pop();continue}a=t.call(e,s)}catch(e){a=[6,e],r=0}finally{n=o=0}if(5&a[0])throw a[1];return{value:a[0]?a[1]:void 0,done:!0}}([a,c])}}};Object.defineProperty(t,"__esModule",{value:!0}),t.JSONRPCServerAndClient=void 0;var i=n(287),s=function(){function e(e,t,n){var r;void 0===n&&(n={}),this.server=e,this.client=t,this.errorListener=null!==(r=n.errorListener)&&void 0!==r?r:console.warn}return e.prototype.applyServerMiddleware=function(){for(var e,t=[],n=0;n<arguments.length;n++)t[n]=arguments[n];(e=this.server).applyMiddleware.apply(e,t)},e.prototype.hasMethod=function(e){return this.server.hasMethod(e)},e.prototype.addMethod=function(e,t){this.server.addMethod(e,t)},e.prototype.addMethodAdvanced=function(e,t){this.server.addMethodAdvanced(e,t)},e.prototype.timeout=function(e){return this.client.timeout(e)},e.prototype.request=function(e,t,n){return this.client.request(e,t,n)},e.prototype.requestAdvanced=function(e,t){return this.client.requestAdvanced(e,t)},e.prototype.notify=function(e,t,n){this.client.notify(e,t,n)},e.prototype.rejectAllPendingRequests=function(e){this.client.rejectAllPendingRequests(e)},e.prototype.receiveAndSend=function(e,t,n){return r(this,void 0,void 0,(function(){var r,s;return o(this,(function(o){switch(o.label){case 0:return(0,i.isJSONRPCResponse)(e)||(0,i.isJSONRPCResponses)(e)?(this.client.receive(e),[3,4]):[3,1];case 1:return(0,i.isJSONRPCRequest)(e)||(0,i.isJSONRPCRequests)(e)?[4,this.server.receive(e,t)]:[3,3];case 2:return(r=o.sent())?[2,this.client.send(r,n)]:[3,4];case 3:return s="Received an invalid JSON-RPC message",this.errorListener(s,e),[2,Promise.reject(new Error(s))];case 4:return[2]}}))}))},e}();t.JSONRPCServerAndClient=s},490:function(e,t,n){var r=this&&this.__assign||function(){return r=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++)for(var o in t=arguments[n])Object.prototype.hasOwnProperty.call(t,o)&&(e[o]=t[o]);return e},r.apply(this,arguments)},o=this&&this.__awaiter||function(e,t,n,r){return new(n||(n=Promise))((function(o,i){function s(e){try{c(r.next(e))}catch(e){i(e)}}function a(e){try{c(r.throw(e))}catch(e){i(e)}}function c(e){var t;e.done?o(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(s,a)}c((r=r.apply(e,t||[])).next())}))},i=this&&this.__generator||function(e,t){var n,r,o,i,s={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:a(0),throw:a(1),return:a(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function a(a){return function(c){return function(a){if(n)throw new TypeError("Generator is already executing.");for(;i&&(i=0,a[0]&&(s=0)),s;)try{if(n=1,r&&(o=2&a[0]?r.return:a[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,a[1])).done)return o;switch(r=0,o&&(a=[2&a[0],o.value]),a[0]){case 0:case 1:o=a;break;case 4:return s.label++,{value:a[1],done:!1};case 5:s.label++,r=a[1],a=[0];continue;case 7:a=s.ops.pop(),s.trys.pop();continue;default:if(!((o=(o=s.trys).length>0&&o[o.length-1])||6!==a[0]&&2!==a[0])){s=0;continue}if(3===a[0]&&(!o||a[1]>o[0]&&a[1]<o[3])){s.label=a[1];break}if(6===a[0]&&s.label<o[1]){s.label=o[1],o=a;break}if(o&&s.label<o[2]){s.label=o[2],s.ops.push(a);break}o[2]&&s.ops.pop(),s.trys.pop();continue}a=t.call(e,s)}catch(e){a=[6,e],r=0}finally{n=o=0}if(5&a[0])throw a[1];return{value:a[0]?a[1]:void 0,done:!0}}([a,c])}}},s=this&&this.__spreadArray||function(e,t,n){if(n||2===arguments.length)for(var r,o=0,i=t.length;o<i;o++)!r&&o in t||(r||(r=Array.prototype.slice.call(t,0,o)),r[o]=t[o]);return e.concat(r||Array.prototype.slice.call(t))};Object.defineProperty(t,"__esModule",{value:!0}),t.JSONRPCServer=void 0;var a=n(287),c=n(616),u=function(e){return(0,a.createJSONRPCErrorResponse)((0,a.isJSONRPCID)(e.id)?e.id:null,a.JSONRPCErrorCode.InvalidRequest,"Invalid Request")},l=function(){function e(e){var t;void 0===e&&(e={}),this.mapErrorToJSONRPCErrorResponse=h,this.nameToMethodDictionary={},this.middleware=null,this.errorListener=null!==(t=e.errorListener)&&void 0!==t?t:console.warn}return e.prototype.hasMethod=function(e){return!!this.nameToMethodDictionary[e]},e.prototype.addMethod=function(e,t){this.addMethodAdvanced(e,this.toJSONRPCMethod(t))},e.prototype.toJSONRPCMethod=function(e){return function(t,n){var r=e(t.params,n);return Promise.resolve(r).then((function(e){return p(t.id,e)}))}},e.prototype.addMethodAdvanced=function(e,t){var n;this.nameToMethodDictionary=r(r({},this.nameToMethodDictionary),((n={})[e]=t,n))},e.prototype.receiveJSON=function(e,t){var n=this.tryParseRequestJSON(e);return n?this.receive(n,t):Promise.resolve((0,a.createJSONRPCErrorResponse)(null,a.JSONRPCErrorCode.ParseError,"Parse error"))},e.prototype.tryParseRequestJSON=function(e){try{return JSON.parse(e)}catch(e){return null}},e.prototype.receive=function(e,t){return Array.isArray(e)?this.receiveMultiple(e,t):this.receiveSingle(e,t)},e.prototype.receiveMultiple=function(e,t){return o(this,void 0,void 0,(function(){var n,r=this;return i(this,(function(o){switch(o.label){case 0:return[4,Promise.all(e.map((function(e){return r.receiveSingle(e,t)})))];case 1:return 1===(n=o.sent().filter(f)).length?[2,n[0]]:n.length?[2,n]:[2,null]}}))}))},e.prototype.receiveSingle=function(e,t){return o(this,void 0,void 0,(function(){var n,r;return i(this,(function(o){switch(o.label){case 0:return n=this.nameToMethodDictionary[e.method],(0,a.isJSONRPCRequest)(e)?[3,1]:[2,u(e)];case 1:return[4,this.callMethod(n,e,t)];case 2:return r=o.sent(),[2,v(e,r)]}}))}))},e.prototype.applyMiddleware=function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];this.middleware?this.middleware=this.combineMiddlewares(s([this.middleware],e,!0)):this.middleware=this.combineMiddlewares(e)},e.prototype.combineMiddlewares=function(e){return e.length?e.reduce(this.middlewareReducer):null},e.prototype.middlewareReducer=function(e,t){return function(n,r,o){return e((function(e,r){return t(n,e,r)}),r,o)}},e.prototype.callMethod=function(e,t,n){var r=this,o=function(e){return r.errorListener('An unexpected error occurred while executing "'.concat(t.method,'" JSON-RPC method:'),e),Promise.resolve(r.mapErrorToJSONRPCErrorResponseIfNecessary(t.id,e))};try{return(this.middleware||d)((function(t,n){return e?e(t,n):void 0!==t.id?Promise.resolve((r=t.id,(0,a.createJSONRPCErrorResponse)(r,a.JSONRPCErrorCode.MethodNotFound,"Method not found"))):Promise.resolve(null);var r}),t,n).then(void 0,o)}catch(e){return o(e)}},e.prototype.mapErrorToJSONRPCErrorResponseIfNecessary=function(e,t){return void 0!==e?this.mapErrorToJSONRPCErrorResponse(e,t):null},e}();t.JSONRPCServer=l;var f=function(e){return null!==e},d=function(e,t,n){return e(t,n)},p=function(e,t){return void 0!==e?(0,a.createJSONRPCSuccessResponse)(e,t):null},h=function(e,t){var n,r,o=null!==(n=null==t?void 0:t.message)&&void 0!==n?n:"An unexpected error occurred",i=c.DefaultErrorCode;return t instanceof a.JSONRPCErrorException&&(i=t.code,r=t.data),(0,a.createJSONRPCErrorResponse)(e,i,o,r)},v=function(e,t){return t||(void 0!==e.id?(0,a.createJSONRPCErrorResponse)(e.id,a.JSONRPCErrorCode.InternalError,"Internal error"):null)}}},t={};function n(r){var o=t[r];if(void 0!==o)return o.exports;var i=t[r]={exports:{}};return e[r].call(i.exports,i,i.exports,n),i.exports}n.d=(e,t)=>{for(var r in t)n.o(t,r)&&!n.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),n.d({},{z7:()=>F});var r,o,i="aspera://",s="The provided callback is not a function",a="Unable to initialize drag-drop",c="Unable to generate IFRAME for download. Using new window",u="Unable to get latest installers",l="Unable to get all transfers",f="Unable to get transfer",d="Unable to modify transfer",p="Unable to remove transfer",h="Unable to resume transfer",v="Unable to connect to IBM Aspera for Desktop server",y="IBM Aspera SDK has not been verified. Run test or init first",b="Unable to set custom branding",m="Unable to show transfer directory",g="Unable to show select file dialog",S="Unable to show select folder dialog",R="Unable to show preferences",E="Unable to stop transfer",P="The transfer failed to initiate",w=function(){var e,t;return{promise:new Promise((function(n,r){e=n,t=r})),resolver:e,rejecter:t}},C=function(e,t){t&&t.code&&t.message&&(t={code:t.code,message:t.message,data:t.data}),"object"==typeof window&&(Array.isArray(window.asperaSdkLogs)||(window.asperaSdkLogs=[]),window.asperaSdkLogs.push({message:e,debugData:t})),console.warn("Aspera SDK: ".concat(e),t)},k=function(e,t){var n={error:!0,message:e};return t&&t.code&&t.message&&(n.debugData={code:t.code,message:t.message,data:t.data}),n},O=function(){var e;return(null===(e=window.crypto)||void 0===e?void 0:e.randomUUID)?window.crypto.randomUUID():"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,(function(e){var t=Number((((new Date).getTime()+16)*Math.random()).toFixed())%16;return"x"!==e&&(t=3&t|8),t.toString(16)}))},_=function(e,t){return C(e,t),new Promise((function(n,r){r(k(e,t))}))},x=function(e){try{return new URL(e),!0}catch(e){return!1}},N=function(){return/^((?!chrome|android).)*safari/i.test(navigator.userAgent)&&!window.MSStream};!function(e){e.Monitor="Monitor",e.Ping="Ping",e.Request="Request"}(r||(r={}));var A=new(function(){function e(){var e=this;this.statusInterval=100,this.keepAliveInterval=1e3,this.isFirstPing=!0,this.lastPing=null,this.lastPong=null,this.safariExtensionEnabled=!1,this.subscribedTransferActivity=!1,this.request=function(t,n){return void 0===n&&(n={}),e.dispatchPromiseEvent(r.Request,t,n)},this.promiseExecutors=new Map,this.listenResponseEvents(),this.listenTransferActivityEvents(),this.listenStatusEvents(),this.listenPongEvents(),o&&clearTimeout(o),this.keepAlive()}return e.prototype.monitorTransferActivity=function(){var e=this,t=function(){return e.dispatchPromiseEvent(r.Monitor,"subscribe_transfer_activity",[F.globals.appId]).then((function(){e.subscribedTransferActivity=!0}))};return this.safariExtensionEnabled?t():new Promise((function(n,r){var o=setInterval((function(){e.safariExtensionEnabled&&(t().then(n).catch(r),clearInterval(o))}),1e3)}))},e.prototype.buildRPCRequest=function(e,t){return{jsonrpc:"2.0",method:e,params:t,id:O()}},e.prototype.dispatchEvent=function(e,t){var n={detail:null!=t?t:{}};document.dispatchEvent(new CustomEvent("AsperaDesktop.".concat(e),n))},e.prototype.dispatchPromiseEvent=function(e,t,n){var r=this,o=this.buildRPCRequest(t,n);return new Promise((function(t,n){r.safariExtensionEnabled?(r.promiseExecutors.set(o.id,{resolve:t,reject:n}),r.dispatchEvent(e,o)):(console.warn("The Safari extension is disabled or unresponsive (dispatch event)"),console.warn("Failed event: ".concat(JSON.stringify(o))),n("The Safari extension is disabled or unresponsive (dispatch event)"))}))},e.prototype.handleResponse=function(e){var t=e.id,n=this.promiseExecutors.get(t);if(!n)return console.warn("Unable to find a promise executor for ".concat(t)),void console.warn("Response: ".concat(e));this.promiseExecutors.delete(t),e.error?n.reject(e.error):n.resolve(e.result)},e.prototype.listenResponseEvents=function(){var e=this;document.addEventListener("AsperaDesktop.Response",(function(t){e.handleResponse(t.detail)}))},e.prototype.listenTransferActivityEvents=function(){document.addEventListener("AsperaDesktop.TransferActivity",(function(e){F.activityTracking.handleTransferActivity(e.detail)}))},e.prototype.listenStatusEvents=function(){document.addEventListener("AsperaDesktop.Status",(function(e){F.activityTracking.handleWebSocketEvents(e.detail)}))},e.prototype.listenPongEvents=function(){var e=this;document.addEventListener("AsperaDesktop.Pong",(function(){e.lastPong=Date.now(),e.safariExtensionStatusChanged(!0)}))},e.prototype.keepAlive=function(){var e=this;this.lastPing=Date.now(),this.dispatchEvent(r.Ping),this.isFirstPing?this.isFirstPing=!1:setTimeout((function(){e.checkSafariExtensionStatus()}),this.statusInterval),o=setTimeout((function(){e.keepAlive()}),this.keepAliveInterval)},e.prototype.safariExtensionStatusChanged=function(e){var t=this;if(e!==this.safariExtensionEnabled){if(this.safariExtensionEnabled=e,e){if(this.subscribedTransferActivity){var n=function(){t.monitorTransferActivity().catch((function(){console.error("Failed to resume transfer activity, will try again in 1s"),setTimeout((function(){n()}),1e3)}))};n()}}else F.activityTracking.handleWebSocketEvents("CLOSED"),this.promiseExecutors.forEach((function(e){e.reject("The Safari extension is disabled or unresponsive (extension status)")})),this.promiseExecutors.clear();F.activityTracking.handleSafariExtensionEvents(this.safariExtensionEnabled?"ENABLED":"DISABLED")}},e.prototype.checkSafariExtensionStatus=function(){var e=this.lastPong-this.lastPing;(null==this.lastPong||e<0||e>500)&&this.safariExtensionStatusChanged(!1)},e}()),T=new(function(){function e(){var e=this;this.sockets=new Map,this.isConnected=!1,this.initPromise=w(),this.handleOpen=function(){!e.isConnected&&e.joinChannel()&&(e.isConnected=!0,e.updateRpcPort(),e.notifyEvent("RECONNECT"))},this.handleClose=function(){e.isConnected&&(e.isConnected=!1,e.notifyEvent("CLOSED")),e.globalSocket?e.reconnect():e.handleNotReady()},this.handleError=function(){C("The websocket was closed due to an error")},this.handleMessage=function(t){var n;try{n=JSON.parse(t.data)}catch(e){C("Unable to parse Websocket message",{error:e,message:t})}if(n&&1===n.id)e.initPromise.resolver(n);else{var r=e.sockets.get(n.method);r&&n.params&&r(n.params)}}}return e.prototype.handleNotReady=function(){C("The websocket is not ready. Run init first")},e.prototype.joinChannel=function(){return this.globalSocket?(this.globalSocket.send(JSON.stringify({jsonrpc:"2.0",method:"subscribe_transfer_activity",params:[F.globals.appId],id:1})),!0):(this.handleNotReady(),!1)},e.prototype.registerMessage=function(e,t){this.sockets.get(e)||this.sockets.set(e,(function(e){t(e.result)}))},e.prototype.registerEvent=function(e){this.eventListener=e,this.eventListener(this.isConnected?"RECONNECT":"CLOSED")},e.prototype.init=function(){return this.connect(),this.initPromise.promise},e.prototype.connect=function(){var e=this;this.getWebSocketConnection(33024,33029).then((function(t){e.globalSocket=t,e.globalSocket.onerror=e.handleError,e.globalSocket.onclose=e.handleClose,e.globalSocket.onopen=e.handleOpen,e.globalSocket.onmessage=e.handleMessage,e.handleOpen()})).catch((function(){e.reconnect()}))},e.prototype.reconnect=function(){var e=this;this.globalSocket&&this.globalSocket.close(),setTimeout((function(){e.connect()}),1e3)},e.prototype.getWebSocketConnection=function(e,t){var n=function(e){var t;0===e.indexOf("http:")?t="ws":0===e.indexOf("https:")&&(t="wss");var n=e.replace("http://","//").replace("https://","//");return"".concat(t,":").concat(n)}(F.globals.asperaAppUrl);return new Promise((function(r,o){var i=function(e){if(e>t)return o("No available WebSocket connection found");(function(e){return new Promise((function(t,r){var o=new WebSocket("".concat(n,":").concat(e));o.onopen=function(){t(o)},o.onerror=function(){r("Connection failed on port ".concat(e))}}))})(e).then((function(e){return r(e)})).catch((function(t){i(e+1)}))};i(e)}))},e.prototype.notifyEvent=function(e){"function"==typeof this.eventListener&&this.eventListener(e)},e.prototype.updateRpcPort=function(){if(this.globalSocket){var e=new URL(this.globalSocket.url);F.globals.rpcPort=Number(e.port)}},e}()),J=function(){function e(){this.asperaAppUrl="http://127.0.0.1",this.rpcPort=33024,this.installerUrl="https://downloads.ibmaspera.com/downloads/desktop/latest/stable",this.asperaAppVerified=!1,this.dropZonesCreated=new Map}return e.prototype.backupLaunchMethod=function(e){window.alert("Launching IBM Aspera for Desktop"),window.location.href=e},e.prototype.launch=function(){var e=this;try{var t=document.createElement("iframe");t.src=i,t.onerror=function(t){C(c,t),e.backupLaunchMethod(i)},t.setAttribute("style","\n display: none !important;\n width: 1px !important;\n height: 1px !important;\n position: fixed !important;\n z-index: -99 !important;\n bottom: 0px !important;\n right: 0px !important;\n"),document.body.appendChild(t)}catch(e){C(c,e),this.backupLaunchMethod(i)}},e}(),M=function(){function e(){this.activity_callbacks=new Map,this.removed_callbacks=new Map,this.event_callbacks=new Map,this.safari_extension_callbacks=new Map,this.lastWebSocketEvent="CLOSED",this.lastSafariExtensionEvent="DISABLED"}return e.prototype.handleTransferActivity=function(e){"transferUpdated"===e.type&&this.activity_callbacks.forEach((function(t){"function"==typeof t&&t(e.data)})),"transferRemoved"===e.type&&this.removed_callbacks.forEach((function(t){"function"==typeof t&&t(e.data)}))},e.prototype.handleWebSocketEvents=function(e){this.lastWebSocketEvent!==e&&(this.event_callbacks.forEach((function(t){"function"==typeof t&&t(e)})),this.lastWebSocketEvent=e)},e.prototype.handleSafariExtensionEvents=function(e){this.lastSafariExtensionEvent!==e&&(this.safari_extension_callbacks.forEach((function(t){"function"==typeof t&&t(e)})),this.lastSafariExtensionEvent=e)},e.prototype.setup=function(){var e=this;return F.globals.sessionId&&this.registerDesktopAppSession(),N()?A.monitorTransferActivity():T.init().then((function(){T.registerMessage("transfer_activity",(function(t){return e.handleTransferActivity(t)})),T.registerEvent((function(t){return e.handleWebSocketEvents(t)}))}))},e.prototype.setCallback=function(e){if("function"==typeof e){var t="callback-".concat(this.activity_callbacks.size+1);return this.activity_callbacks.set(t,e),t}C(s)},e.prototype.removeCallback=function(e){this.activity_callbacks.delete(e)},e.prototype.setRemovedCallback=function(e){if("function"==typeof e){var t="callback-".concat(this.removed_callbacks.size+1);return this.removed_callbacks.set(t,e),t}C(s)},e.prototype.removeRemovedCallback=function(e){this.removed_callbacks.delete(e)},e.prototype.setWebSocketEventCallback=function(e){if("function"==typeof e){var t="callback-".concat(this.event_callbacks.size+1);return this.event_callbacks.set(t,e),e(this.lastWebSocketEvent),t}C(s)},e.prototype.removeWebSocketEventCallback=function(e){this.event_callbacks.delete(e)},e.prototype.setSafariExtensionEventCallback=function(e){if("function"==typeof e){var t="callback-".concat(this.safari_extension_callbacks.size+1);return this.safari_extension_callbacks.set(t,e),e(this.lastSafariExtensionEvent),t}C(s)},e.prototype.removeSafariExtensionEventCallback=function(e){this.safari_extension_callbacks.delete(e)},e.prototype.registerDesktopAppSession=function(){var e=document.createElement("iframe");e.style.display="none",e.src="aspera://initialize?app_id=".concat(F.globals.appId,"&session_id=").concat(F.globals.sessionId),document.body.appendChild(e),setTimeout((function(){document.body.removeChild(e)}),1e3)},e}(),j=function(){function e(){this.globals=new J,this.activityTracking=new M}return Object.defineProperty(e.prototype,"isReady",{get:function(){return this.globals.asperaAppVerified&&""!==this.globals.appId},enumerable:!1,configurable:!0}),e}(),q=n(773),D=function(){var e=this;this.handleRequest=function(t){var n={method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify(t)},r="".concat(F.globals.asperaAppUrl,":").concat(F.globals.rpcPort);return fetch(r,n).then((function(n){if(n.ok)return n.json().then((function(t){return e.client.receive(t)}));if(void 0!==t.id)throw Promise.reject(n.statusText)}))},this.request=function(t,n){return e.client.request(t,n)},this.client=new q.JSONRPCClient(this.handleRequest)},I=new function(){var e=this;this.request=function(t,n){return void 0===n&&(n={}),r=e.httpClient.request(t,n),o=w(),r.then((function(e){o.resolver(e)}),(function(e){o.rejecter(e)})),o.promise;var r,o},this.httpClient=new D},L=N()?A:I,U=function(){return L.request("get_info").then((function(e){return F.globals.AsperaSdkInfo=e,F.globals.asperaAppVerified=!0,e}))},W=function(){if(!F.isReady)return _(y);var e=w();return L.request("init_drag_drop").then((function(t){return e.resolver(t)})).catch((function(t){C(a,t),e.rejecter(k(a,t))})),e.promise},F=new j;F.init=function(e){var t,n,r=null!==(t=null==e?void 0:e.appId)&&void 0!==t?t:O(),o=null!==(n=null==e?void 0:e.supportMultipleUsers)&&void 0!==n&&n;return F.globals.appId=r,o&&(F.globals.sessionId=O()),F.activityTracking.setup().then((function(){return U()})).then((function(){return W()})).catch((function(e){throw C(v,e),F.globals.asperaAppVerified=!1,k(v,e)}))},F.testConnection=U,F.startTransfer=function(e,t){if(!F.isReady)return _(y);if(!function(e){return!(!e||"object"!=typeof e||"string"!=typeof e.direction||"string"!=typeof e.remote_host||!Array.isArray(e.paths))}(e))return _("The supplied transferSpec is not valid",{transferSpec:e});var n=w(),r={transfer_spec:e,desktop_spec:t,app_id:F.globals.appId};return L.request("start_transfer",r).then((function(e){return n.resolver(e)})).catch((function(e){C(P,e),n.rejecter(k(P,e))})),n.promise},F.registerActivityCallback=function(e){return F.activityTracking.setCallback(e)},F.deregisterActivityCallback=function(e){F.activityTracking.removeCallback(e)},F.removeTransfer=function(e){if(!F.isReady)return _(y);var t=w(),n={transfer_id:e};return L.request("remove_transfer",n).then((function(e){return t.resolver(e)})).catch((function(e){C(p,e),t.rejecter(k(p,e))})),t.promise},F.showDirectory=function(e){if(!F.isReady)return _(y);var t=w(),n={transfer_id:e};return L.request("show_directory",n).then((function(e){return t.resolver(e)})).catch((function(e){C(m,e),t.rejecter(k(m,e))})),t.promise},F.stopTransfer=function(e){if(!F.isReady)return _(y);var t=w(),n={transfer_id:e};return L.request("stop_transfer",n).then((function(e){return t.resolver(e)})).catch((function(e){C(E,e),t.rejecter(k(E,e))})),t.promise},F.resumeTransfer=function(e,t){if(!F.isReady)return _(y);var n=w(),r={transfer_id:e,transfer_spec:t};return L.request("resume_transfer",r).then((function(e){return n.resolver(e)})).catch((function(e){C(h,e),n.rejecter(k(h,e))})),n.promise},F.getAllTransfers=function(){if(!F.isReady)return _(y);var e=w(),t={app_id:F.globals.appId};return L.request("get_all_transfers",t).then((function(t){return e.resolver(t)})).catch((function(t){C(l,t),e.rejecter(k(l,t))})),e.promise},F.getTransfer=function(e){if(!F.isReady)return _(y);var t=w(),n={transfer_id:e};return L.request("get_transfer",n).then((function(e){return t.resolver(e)})).catch((function(e){C(f,e),t.rejecter(k(f,e))})),t.promise},F.registerRemovedCallback=function(e){return F.activityTracking.setRemovedCallback(e)},F.deregisterRemovedCallback=function(e){F.activityTracking.removeRemovedCallback(e)},F.showSelectFileDialog=function(e){if(!F.isReady)return _(y);var t=w(),n={options:e||{},app_id:F.globals.appId};return L.request("show_file_dialog",n).then((function(e){return t.resolver(e)})).catch((function(e){C(g,e),t.rejecter(k(g,e))})),t.promise},F.showSelectFolderDialog=function(e){if(!F.isReady)return _(y);var t=w(),n={options:e||{},app_id:F.globals.appId};return L.request("show_folder_dialog",n).then((function(e){return t.resolver(e)})).catch((function(e){C(S,e),t.rejecter(k(S,e))})),t.promise},F.showPreferences=function(){if(!F.isReady)return _(y);var e=w();return L.request("open_preferences").then((function(t){return e.resolver(t)})).catch((function(t){C(R,t),e.rejecter(k(R,t))})),e.promise},F.modifyTransfer=function(e,t){if(!F.isReady)return _(y);var n=w(),r={transfer_id:e,transfer_spec:t};return L.request("modify_transfer",r).then((function(e){return n.resolver(e)})).catch((function(e){C(d,e),n.rejecter(k(d,e))})),n.promise},F.createDropzone=function(e,t){var n=document.querySelectorAll(t);if(n&&n.length){var r=function(e){e.preventDefault()},o=function(t){t.preventDefault();var n=[];if(t.dataTransfer&&t.dataTransfer.files&&t.dataTransfer.files.length&&t.dataTransfer.files[0]){for(var r=0;r<t.dataTransfer.files.length;r++){var o=t.dataTransfer.files[r];n.push({lastModified:o.lastModified,name:o.name,size:o.size,type:o.type})}var i={files:n,app_id:F.globals.appId};L.request("dropped_files",i).then((function(n){return e({event:t,files:n})})).catch((function(e){C("The dropped item could not be parsed. Please try selecting via the select file/folder option",e)}))}};n.forEach((function(e){e.addEventListener("dragover",r),e.addEventListener("drop",o),F.globals.dropZonesCreated.set(t,[{event:"dragover",callback:r},{event:"drop",callback:o}])}))}else C("Unable to find the element on the current page")},F.removeDropzone=function(e){var t=F.globals.dropZonesCreated.get(e);t&&t.forEach((function(t){var n=document.querySelectorAll(e);n&&n.length&&n.forEach((function(e){e.removeEventListener(t.event,t.callback)}))}))},F.getInstallerInfo=function(e){void 0===e&&(e={});var t=e.endpoint||F.globals.installerUrl;if(t.endsWith("/latest.json")&&(t=t.replace("/latest.json","")),!x(t))return _("The specified endpoint is not a valid URL",{url:t});var n=w();return function(e){return t=fetch(e,{headers:{"Content-Type":"application/json"}}),n=w(),t.then((function(e){return e.ok?n.resolver(e):n.rejecter(e),e})).catch((function(e){n.rejecter(e)})),n.promise;var t,n}("".concat(t,"/latest.json")).then((function(t){t.json().then((function(t){if(e.endpoint)for(var r=0,o=t.entries;r<o.length;r++){var i=o[r];x(i.url)||(i.url="".concat(e.endpoint,"/").concat(i.url))}if(e.all)n.resolver(t);else{var s=(a=navigator.userAgent,/Mac/.test(a)?"macos":/Win/.test(a)?"windows":/Linux/.test(a)?"linux":"unknown");t.entries=t.entries.filter((function(e){return e.platform===s})),n.resolver(t)}var a}))})).catch((function(e){C(u,e),n.rejecter(k(u,e))})),n.promise},F.registerStatusCallback=function(e){return F.activityTracking.setWebSocketEventCallback(e)},F.deregisterStatusCallback=function(e){F.activityTracking.removeWebSocketEventCallback(e)},F.registerSafariExtensionStatusCallback=function(e){return F.activityTracking.setSafariExtensionEventCallback(e)},F.deregisterSafariExtensionStatusCallback=function(e){F.activityTracking.removeSafariExtensionEventCallback(e)},F.initDragDrop=W,F.setBranding=function(e,t){if(!F.isReady)return _(y);var n=w(),r={branding:{id:e,name:t.name,theme:t.theme}};return L.request("update_branding",r).then((function(e){return n.resolver(e)})).catch((function(e){C(b,e),n.rejecter(k(b,e))})),n.promise},F.getInfo=function(){return F.isReady?new Promise((function(e,t){e(F.globals.AsperaSdkInfo)})):_(y)},F.isSafari=N;var z=F.globals.launch;F.launch=z,"object"==typeof window&&(window.asperaSdk=F)})();
3
3
  //# sourceMappingURL=aspera-sdk.js.map
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * IBM Aspera SDK v0.2.2
2
+ * IBM Aspera SDK v0.2.3
3
3
  * Licensed Materials – Property of IBM
4
4
  * © Copyright IBM Corp. 2024
5
5
  * U.S. Government Users Restricted Rights: Use, duplication or disclosure restricted by
@@ -1 +1 @@
1
- {"version":3,"file":"aspera-sdk.js","mappings":"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","sources":["webpack://@ibm-aspera/sdk/./node_modules/json-rpc-2.0/dist/client.js","webpack://@ibm-aspera/sdk/./node_modules/json-rpc-2.0/dist/index.js","webpack://@ibm-aspera/sdk/./node_modules/json-rpc-2.0/dist/interfaces.js","webpack://@ibm-aspera/sdk/./node_modules/json-rpc-2.0/dist/internal.js","webpack://@ibm-aspera/sdk/./node_modules/json-rpc-2.0/dist/models.js","webpack://@ibm-aspera/sdk/./node_modules/json-rpc-2.0/dist/server-and-client.js","webpack://@ibm-aspera/sdk/./node_modules/json-rpc-2.0/dist/server.js","webpack://@ibm-aspera/sdk/webpack/bootstrap","webpack://@ibm-aspera/sdk/webpack/runtime/define property getters","webpack://@ibm-aspera/sdk/webpack/runtime/hasOwnProperty shorthand","webpack://@ibm-aspera/sdk/./src/constants/constants.ts","webpack://@ibm-aspera/sdk/./src/helpers/client/safari-client.ts","webpack://@ibm-aspera/sdk/./src/constants/messages.ts","webpack://@ibm-aspera/sdk/./src/helpers/helpers.ts","webpack://@ibm-aspera/sdk/./src/helpers/ws.ts","webpack://@ibm-aspera/sdk/./src/models/aspera-sdk.model.ts","webpack://@ibm-aspera/sdk/./src/helpers/client/http-client.ts","webpack://@ibm-aspera/sdk/./src/helpers/client/client.ts","webpack://@ibm-aspera/sdk/./src/app/core.ts","webpack://@ibm-aspera/sdk/./src/index.ts","webpack://@ibm-aspera/sdk/./src/app/installer.ts","webpack://@ibm-aspera/sdk/./src/helpers/http.ts"],"sourcesContent":["\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.JSONRPCClient = void 0;\nvar models_1 = require(\"./models\");\nvar internal_1 = require(\"./internal\");\nvar JSONRPCClient = /** @class */ (function () {\n function JSONRPCClient(_send, createID) {\n this._send = _send;\n this.createID = createID;\n this.idToResolveMap = new Map();\n this.id = 0;\n }\n JSONRPCClient.prototype._createID = function () {\n if (this.createID) {\n return this.createID();\n }\n else {\n return ++this.id;\n }\n };\n JSONRPCClient.prototype.timeout = function (delay, overrideCreateJSONRPCErrorResponse) {\n var _this = this;\n if (overrideCreateJSONRPCErrorResponse === void 0) { overrideCreateJSONRPCErrorResponse = function (id) {\n return (0, models_1.createJSONRPCErrorResponse)(id, internal_1.DefaultErrorCode, \"Request timeout\");\n }; }\n var timeoutRequest = function (ids, request) {\n var timeoutID = setTimeout(function () {\n ids.forEach(function (id) {\n var resolve = _this.idToResolveMap.get(id);\n if (resolve) {\n _this.idToResolveMap.delete(id);\n resolve(overrideCreateJSONRPCErrorResponse(id));\n }\n });\n }, delay);\n return request().then(function (result) {\n clearTimeout(timeoutID);\n return result;\n }, function (error) {\n clearTimeout(timeoutID);\n return Promise.reject(error);\n });\n };\n var requestAdvanced = function (request, clientParams) {\n var ids = (!Array.isArray(request) ? [request] : request)\n .map(function (request) { return request.id; })\n .filter(isDefinedAndNonNull);\n return timeoutRequest(ids, function () {\n return _this.requestAdvanced(request, clientParams);\n });\n };\n return {\n request: function (method, params, clientParams) {\n var id = _this._createID();\n return timeoutRequest([id], function () {\n return _this.requestWithID(method, params, clientParams, id);\n });\n },\n requestAdvanced: function (request, clientParams) { return requestAdvanced(request, clientParams); },\n };\n };\n JSONRPCClient.prototype.request = function (method, params, clientParams) {\n return this.requestWithID(method, params, clientParams, this._createID());\n };\n JSONRPCClient.prototype.requestWithID = function (method, params, clientParams, id) {\n return __awaiter(this, void 0, void 0, function () {\n var request, response;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n request = (0, models_1.createJSONRPCRequest)(id, method, params);\n return [4 /*yield*/, this.requestAdvanced(request, clientParams)];\n case 1:\n response = _a.sent();\n if (response.result !== undefined && !response.error) {\n return [2 /*return*/, response.result];\n }\n else if (response.result === undefined && response.error) {\n return [2 /*return*/, Promise.reject(new models_1.JSONRPCErrorException(response.error.message, response.error.code, response.error.data))];\n }\n else {\n return [2 /*return*/, Promise.reject(new Error(\"An unexpected error occurred\"))];\n }\n return [2 /*return*/];\n }\n });\n });\n };\n JSONRPCClient.prototype.requestAdvanced = function (requests, clientParams) {\n var _this = this;\n var areRequestsOriginallyArray = Array.isArray(requests);\n if (!Array.isArray(requests)) {\n requests = [requests];\n }\n var requestsWithID = requests.filter(function (request) {\n return isDefinedAndNonNull(request.id);\n });\n var promises = requestsWithID.map(function (request) {\n return new Promise(function (resolve) { return _this.idToResolveMap.set(request.id, resolve); });\n });\n var promise = Promise.all(promises).then(function (responses) {\n if (areRequestsOriginallyArray || !responses.length) {\n return responses;\n }\n else {\n return responses[0];\n }\n });\n return this.send(areRequestsOriginallyArray ? requests : requests[0], clientParams).then(function () { return promise; }, function (error) {\n requestsWithID.forEach(function (request) {\n _this.receive((0, models_1.createJSONRPCErrorResponse)(request.id, internal_1.DefaultErrorCode, (error && error.message) || \"Failed to send a request\"));\n });\n return promise;\n });\n };\n JSONRPCClient.prototype.notify = function (method, params, clientParams) {\n var request = (0, models_1.createJSONRPCNotification)(method, params);\n this.send(request, clientParams).then(undefined, function () { return undefined; });\n };\n JSONRPCClient.prototype.send = function (payload, clientParams) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n return [2 /*return*/, this._send(payload, clientParams)];\n });\n });\n };\n JSONRPCClient.prototype.rejectAllPendingRequests = function (message) {\n this.idToResolveMap.forEach(function (resolve, id) {\n return resolve((0, models_1.createJSONRPCErrorResponse)(id, internal_1.DefaultErrorCode, message));\n });\n this.idToResolveMap.clear();\n };\n JSONRPCClient.prototype.receive = function (responses) {\n var _this = this;\n if (!Array.isArray(responses)) {\n responses = [responses];\n }\n responses.forEach(function (response) {\n var resolve = _this.idToResolveMap.get(response.id);\n if (resolve) {\n _this.idToResolveMap.delete(response.id);\n resolve(response);\n }\n });\n };\n return JSONRPCClient;\n}());\nexports.JSONRPCClient = JSONRPCClient;\nvar isDefinedAndNonNull = function (value) {\n return value !== undefined && value !== null;\n};\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./client\"), exports);\n__exportStar(require(\"./interfaces\"), exports);\n__exportStar(require(\"./models\"), exports);\n__exportStar(require(\"./server\"), exports);\n__exportStar(require(\"./server-and-client\"), exports);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DefaultErrorCode = void 0;\nexports.DefaultErrorCode = 0;\n","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createJSONRPCNotification = exports.createJSONRPCRequest = exports.createJSONRPCSuccessResponse = exports.createJSONRPCErrorResponse = exports.JSONRPCErrorCode = exports.JSONRPCErrorException = exports.isJSONRPCResponses = exports.isJSONRPCResponse = exports.isJSONRPCRequests = exports.isJSONRPCRequest = exports.isJSONRPCID = exports.JSONRPC = void 0;\nexports.JSONRPC = \"2.0\";\nvar isJSONRPCID = function (id) {\n return typeof id === \"string\" || typeof id === \"number\" || id === null;\n};\nexports.isJSONRPCID = isJSONRPCID;\nvar isJSONRPCRequest = function (payload) {\n return (payload.jsonrpc === exports.JSONRPC &&\n payload.method !== undefined &&\n payload.result === undefined &&\n payload.error === undefined);\n};\nexports.isJSONRPCRequest = isJSONRPCRequest;\nvar isJSONRPCRequests = function (payload) {\n return Array.isArray(payload) && payload.every(exports.isJSONRPCRequest);\n};\nexports.isJSONRPCRequests = isJSONRPCRequests;\nvar isJSONRPCResponse = function (payload) {\n return (payload.jsonrpc === exports.JSONRPC &&\n payload.id !== undefined &&\n (payload.result !== undefined || payload.error !== undefined));\n};\nexports.isJSONRPCResponse = isJSONRPCResponse;\nvar isJSONRPCResponses = function (payload) {\n return Array.isArray(payload) && payload.every(exports.isJSONRPCResponse);\n};\nexports.isJSONRPCResponses = isJSONRPCResponses;\nvar createJSONRPCError = function (code, message, data) {\n var error = { code: code, message: message };\n if (data != null) {\n error.data = data;\n }\n return error;\n};\nvar JSONRPCErrorException = /** @class */ (function (_super) {\n __extends(JSONRPCErrorException, _super);\n function JSONRPCErrorException(message, code, data) {\n var _this = _super.call(this, message) || this;\n // Manually set the prototype to fix TypeScript issue:\n // https://github.com/Microsoft/TypeScript-wiki/blob/main/Breaking-Changes.md#extending-built-ins-like-error-array-and-map-may-no-longer-work\n Object.setPrototypeOf(_this, JSONRPCErrorException.prototype);\n _this.code = code;\n _this.data = data;\n return _this;\n }\n JSONRPCErrorException.prototype.toObject = function () {\n return createJSONRPCError(this.code, this.message, this.data);\n };\n return JSONRPCErrorException;\n}(Error));\nexports.JSONRPCErrorException = JSONRPCErrorException;\nvar JSONRPCErrorCode;\n(function (JSONRPCErrorCode) {\n JSONRPCErrorCode[JSONRPCErrorCode[\"ParseError\"] = -32700] = \"ParseError\";\n JSONRPCErrorCode[JSONRPCErrorCode[\"InvalidRequest\"] = -32600] = \"InvalidRequest\";\n JSONRPCErrorCode[JSONRPCErrorCode[\"MethodNotFound\"] = -32601] = \"MethodNotFound\";\n JSONRPCErrorCode[JSONRPCErrorCode[\"InvalidParams\"] = -32602] = \"InvalidParams\";\n JSONRPCErrorCode[JSONRPCErrorCode[\"InternalError\"] = -32603] = \"InternalError\";\n})(JSONRPCErrorCode = exports.JSONRPCErrorCode || (exports.JSONRPCErrorCode = {}));\nvar createJSONRPCErrorResponse = function (id, code, message, data) {\n return {\n jsonrpc: exports.JSONRPC,\n id: id,\n error: createJSONRPCError(code, message, data),\n };\n};\nexports.createJSONRPCErrorResponse = createJSONRPCErrorResponse;\nvar createJSONRPCSuccessResponse = function (id, result) {\n return {\n jsonrpc: exports.JSONRPC,\n id: id,\n result: result !== null && result !== void 0 ? result : null,\n };\n};\nexports.createJSONRPCSuccessResponse = createJSONRPCSuccessResponse;\nvar createJSONRPCRequest = function (id, method, params) {\n return {\n jsonrpc: exports.JSONRPC,\n id: id,\n method: method,\n params: params,\n };\n};\nexports.createJSONRPCRequest = createJSONRPCRequest;\nvar createJSONRPCNotification = function (method, params) {\n return {\n jsonrpc: exports.JSONRPC,\n method: method,\n params: params,\n };\n};\nexports.createJSONRPCNotification = createJSONRPCNotification;\n","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.JSONRPCServerAndClient = void 0;\nvar models_1 = require(\"./models\");\nvar JSONRPCServerAndClient = /** @class */ (function () {\n function JSONRPCServerAndClient(server, client, options) {\n if (options === void 0) { options = {}; }\n var _a;\n this.server = server;\n this.client = client;\n this.errorListener = (_a = options.errorListener) !== null && _a !== void 0 ? _a : console.warn;\n }\n JSONRPCServerAndClient.prototype.applyServerMiddleware = function () {\n var _a;\n var middlewares = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n middlewares[_i] = arguments[_i];\n }\n (_a = this.server).applyMiddleware.apply(_a, middlewares);\n };\n JSONRPCServerAndClient.prototype.hasMethod = function (name) {\n return this.server.hasMethod(name);\n };\n JSONRPCServerAndClient.prototype.addMethod = function (name, method) {\n this.server.addMethod(name, method);\n };\n JSONRPCServerAndClient.prototype.addMethodAdvanced = function (name, method) {\n this.server.addMethodAdvanced(name, method);\n };\n JSONRPCServerAndClient.prototype.timeout = function (delay) {\n return this.client.timeout(delay);\n };\n JSONRPCServerAndClient.prototype.request = function (method, params, clientParams) {\n return this.client.request(method, params, clientParams);\n };\n JSONRPCServerAndClient.prototype.requestAdvanced = function (jsonRPCRequest, clientParams) {\n return this.client.requestAdvanced(jsonRPCRequest, clientParams);\n };\n JSONRPCServerAndClient.prototype.notify = function (method, params, clientParams) {\n this.client.notify(method, params, clientParams);\n };\n JSONRPCServerAndClient.prototype.rejectAllPendingRequests = function (message) {\n this.client.rejectAllPendingRequests(message);\n };\n JSONRPCServerAndClient.prototype.receiveAndSend = function (payload, serverParams, clientParams) {\n return __awaiter(this, void 0, void 0, function () {\n var response, message;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!((0, models_1.isJSONRPCResponse)(payload) || (0, models_1.isJSONRPCResponses)(payload))) return [3 /*break*/, 1];\n this.client.receive(payload);\n return [3 /*break*/, 4];\n case 1:\n if (!((0, models_1.isJSONRPCRequest)(payload) || (0, models_1.isJSONRPCRequests)(payload))) return [3 /*break*/, 3];\n return [4 /*yield*/, this.server.receive(payload, serverParams)];\n case 2:\n response = _a.sent();\n if (response) {\n return [2 /*return*/, this.client.send(response, clientParams)];\n }\n return [3 /*break*/, 4];\n case 3:\n message = \"Received an invalid JSON-RPC message\";\n this.errorListener(message, payload);\n return [2 /*return*/, Promise.reject(new Error(message))];\n case 4: return [2 /*return*/];\n }\n });\n });\n };\n return JSONRPCServerAndClient;\n}());\nexports.JSONRPCServerAndClient = JSONRPCServerAndClient;\n","\"use strict\";\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nvar __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.JSONRPCServer = void 0;\nvar models_1 = require(\"./models\");\nvar internal_1 = require(\"./internal\");\nvar createParseErrorResponse = function () {\n return (0, models_1.createJSONRPCErrorResponse)(null, models_1.JSONRPCErrorCode.ParseError, \"Parse error\");\n};\nvar createInvalidRequestResponse = function (request) {\n return (0, models_1.createJSONRPCErrorResponse)((0, models_1.isJSONRPCID)(request.id) ? request.id : null, models_1.JSONRPCErrorCode.InvalidRequest, \"Invalid Request\");\n};\nvar createMethodNotFoundResponse = function (id) {\n return (0, models_1.createJSONRPCErrorResponse)(id, models_1.JSONRPCErrorCode.MethodNotFound, \"Method not found\");\n};\nvar JSONRPCServer = /** @class */ (function () {\n function JSONRPCServer(options) {\n if (options === void 0) { options = {}; }\n var _a;\n this.mapErrorToJSONRPCErrorResponse = defaultMapErrorToJSONRPCErrorResponse;\n this.nameToMethodDictionary = {};\n this.middleware = null;\n this.errorListener = (_a = options.errorListener) !== null && _a !== void 0 ? _a : console.warn;\n }\n JSONRPCServer.prototype.hasMethod = function (name) {\n return !!this.nameToMethodDictionary[name];\n };\n JSONRPCServer.prototype.addMethod = function (name, method) {\n this.addMethodAdvanced(name, this.toJSONRPCMethod(method));\n };\n JSONRPCServer.prototype.toJSONRPCMethod = function (method) {\n return function (request, serverParams) {\n var response = method(request.params, serverParams);\n return Promise.resolve(response).then(function (result) {\n return mapResultToJSONRPCResponse(request.id, result);\n });\n };\n };\n JSONRPCServer.prototype.addMethodAdvanced = function (name, method) {\n var _a;\n this.nameToMethodDictionary = __assign(__assign({}, this.nameToMethodDictionary), (_a = {}, _a[name] = method, _a));\n };\n JSONRPCServer.prototype.receiveJSON = function (json, serverParams) {\n var request = this.tryParseRequestJSON(json);\n if (request) {\n return this.receive(request, serverParams);\n }\n else {\n return Promise.resolve(createParseErrorResponse());\n }\n };\n JSONRPCServer.prototype.tryParseRequestJSON = function (json) {\n try {\n return JSON.parse(json);\n }\n catch (_a) {\n return null;\n }\n };\n JSONRPCServer.prototype.receive = function (request, serverParams) {\n if (Array.isArray(request)) {\n return this.receiveMultiple(request, serverParams);\n }\n else {\n return this.receiveSingle(request, serverParams);\n }\n };\n JSONRPCServer.prototype.receiveMultiple = function (requests, serverParams) {\n return __awaiter(this, void 0, void 0, function () {\n var responses;\n var _this = this;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, Promise.all(requests.map(function (request) { return _this.receiveSingle(request, serverParams); }))];\n case 1:\n responses = (_a.sent()).filter(isNonNull);\n if (responses.length === 1) {\n return [2 /*return*/, responses[0]];\n }\n else if (responses.length) {\n return [2 /*return*/, responses];\n }\n else {\n return [2 /*return*/, null];\n }\n return [2 /*return*/];\n }\n });\n });\n };\n JSONRPCServer.prototype.receiveSingle = function (request, serverParams) {\n return __awaiter(this, void 0, void 0, function () {\n var method, response;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n method = this.nameToMethodDictionary[request.method];\n if (!!(0, models_1.isJSONRPCRequest)(request)) return [3 /*break*/, 1];\n return [2 /*return*/, createInvalidRequestResponse(request)];\n case 1: return [4 /*yield*/, this.callMethod(method, request, serverParams)];\n case 2:\n response = _a.sent();\n return [2 /*return*/, mapResponse(request, response)];\n }\n });\n });\n };\n JSONRPCServer.prototype.applyMiddleware = function () {\n var middlewares = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n middlewares[_i] = arguments[_i];\n }\n if (this.middleware) {\n this.middleware = this.combineMiddlewares(__spreadArray([\n this.middleware\n ], middlewares, true));\n }\n else {\n this.middleware = this.combineMiddlewares(middlewares);\n }\n };\n JSONRPCServer.prototype.combineMiddlewares = function (middlewares) {\n if (!middlewares.length) {\n return null;\n }\n else {\n return middlewares.reduce(this.middlewareReducer);\n }\n };\n JSONRPCServer.prototype.middlewareReducer = function (prevMiddleware, nextMiddleware) {\n return function (next, request, serverParams) {\n return prevMiddleware(function (request, serverParams) { return nextMiddleware(next, request, serverParams); }, request, serverParams);\n };\n };\n JSONRPCServer.prototype.callMethod = function (method, request, serverParams) {\n var _this = this;\n var callMethod = function (request, serverParams) {\n if (method) {\n return method(request, serverParams);\n }\n else if (request.id !== undefined) {\n return Promise.resolve(createMethodNotFoundResponse(request.id));\n }\n else {\n return Promise.resolve(null);\n }\n };\n var onError = function (error) {\n _this.errorListener(\"An unexpected error occurred while executing \\\"\".concat(request.method, \"\\\" JSON-RPC method:\"), error);\n return Promise.resolve(_this.mapErrorToJSONRPCErrorResponseIfNecessary(request.id, error));\n };\n try {\n return (this.middleware || noopMiddleware)(callMethod, request, serverParams).then(undefined, onError);\n }\n catch (error) {\n return onError(error);\n }\n };\n JSONRPCServer.prototype.mapErrorToJSONRPCErrorResponseIfNecessary = function (id, error) {\n if (id !== undefined) {\n return this.mapErrorToJSONRPCErrorResponse(id, error);\n }\n else {\n return null;\n }\n };\n return JSONRPCServer;\n}());\nexports.JSONRPCServer = JSONRPCServer;\nvar isNonNull = function (value) { return value !== null; };\nvar noopMiddleware = function (next, request, serverParams) { return next(request, serverParams); };\nvar mapResultToJSONRPCResponse = function (id, result) {\n if (id !== undefined) {\n return (0, models_1.createJSONRPCSuccessResponse)(id, result);\n }\n else {\n return null;\n }\n};\nvar defaultMapErrorToJSONRPCErrorResponse = function (id, error) {\n var _a;\n var message = (_a = error === null || error === void 0 ? void 0 : error.message) !== null && _a !== void 0 ? _a : \"An unexpected error occurred\";\n var code = internal_1.DefaultErrorCode;\n var data;\n if (error instanceof models_1.JSONRPCErrorException) {\n code = error.code;\n data = error.data;\n }\n return (0, models_1.createJSONRPCErrorResponse)(id, code, message, data);\n};\nvar mapResponse = function (request, response) {\n if (response) {\n return response;\n }\n else if (request.id !== undefined) {\n return (0, models_1.createJSONRPCErrorResponse)(request.id, models_1.JSONRPCErrorCode.InternalError, \"Internal error\");\n }\n else {\n return null;\n }\n};\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","/** @ignore */\nexport var hiddenStyleList = \"\\n display: none !important;\\n width: 1px !important;\\n height: 1px !important;\\n position: fixed !important;\\n z-index: -99 !important;\\n bottom: 0px !important;\\n right: 0px !important;\\n\";\n/** @ignore */\nexport var protocol = 'aspera://';\n/** @ignore */\nexport var installerUrl = 'https://d3gcli72yxqn2z.cloudfront.net/downloads/desktop/latest/stable';\n","import { randomUUID } from '../helpers';\nimport { asperaSdk } from '../../index';\n/**\n * Enum defining different types of Safari extension events.\n */\nvar SafariExtensionEventType;\n(function (SafariExtensionEventType) {\n SafariExtensionEventType[\"Monitor\"] = \"Monitor\";\n SafariExtensionEventType[\"Ping\"] = \"Ping\";\n SafariExtensionEventType[\"Request\"] = \"Request\";\n})(SafariExtensionEventType || (SafariExtensionEventType = {}));\n/**\n * Global keep alive timeout to prevent recursion.\n */\nvar keepAliveTimeout;\n/**\n * Handles communication with the Safari extension using JSON-RPC over custom events.\n */\nvar SafariClient = /** @class */ (function () {\n /**\n * Initializes the SafariExtensionHandler instance.\n * Sets up the promise executor map and starts listening to extension events.\n */\n function SafariClient() {\n var _this = this;\n this.statusInterval = 100;\n this.keepAliveInterval = 1000;\n this.isFirstPing = true;\n this.lastPing = null;\n this.lastPong = null;\n this.safariExtensionEnabled = false;\n this.subscribedTransferActivity = false;\n /**\n * Sends a JSON-RPC request to the Safari extension.\n * @param method The method name to invoke on the extension.\n * @param payload Optional payload for the request.\n * @returns A Promise that resolves with the response from the extension.\n */\n this.request = function (method, payload) {\n if (payload === void 0) { payload = {}; }\n return _this.dispatchPromiseEvent(SafariExtensionEventType.Request, method, payload);\n };\n this.promiseExecutors = new Map();\n this.listenResponseEvents();\n this.listenTransferActivityEvents();\n this.listenStatusEvents();\n this.listenPongEvents();\n if (keepAliveTimeout) {\n clearTimeout(keepAliveTimeout);\n }\n this.keepAlive();\n }\n /**\n * Monitors transfer activity.\n * @returns A Promise that resolves with the response from the extension.\n */\n SafariClient.prototype.monitorTransferActivity = function () {\n var _this = this;\n var dispatchMonitorEvent = function () {\n var promise = _this.dispatchPromiseEvent(SafariExtensionEventType.Monitor, 'subscribe_transfer_activity', [asperaSdk.globals.appId]);\n return promise.then(function () {\n _this.subscribedTransferActivity = true;\n });\n };\n if (this.safariExtensionEnabled) {\n return dispatchMonitorEvent();\n }\n return new Promise(function (resolve, reject) {\n var extensionInterval = setInterval(function () {\n if (!_this.safariExtensionEnabled) {\n return;\n }\n dispatchMonitorEvent()\n .then(resolve)\n .catch(reject);\n clearInterval(extensionInterval);\n }, 1000);\n });\n };\n /**\n * Builds a JSON-RPC request object with a unique identifier.\n * @param method The method name to invoke on the extension.\n * @param payload Optional parameters for the method.\n * @returns The constructed JSON-RPC request object.\n */\n SafariClient.prototype.buildRPCRequest = function (method, payload) {\n return {\n jsonrpc: '2.0',\n method: method,\n params: payload,\n id: randomUUID()\n };\n };\n /**\n * Dispatches a custom event to the document to communicate with the Safari extension.\n * @param type The type of Safari extension event to dispatch.\n * @param request Optional JSON-RPC request payload to send with the event.\n */\n SafariClient.prototype.dispatchEvent = function (type, request) {\n var payload = {\n detail: request !== null && request !== void 0 ? request : {}\n };\n document.dispatchEvent(new CustomEvent(\"AsperaDesktop.\".concat(type), payload));\n };\n /**\n * Dispatches a custom event to the document to communicate with the Safari extension.\n * @param type The type of Safari extension event to dispatch.\n * @param method The method name to invoke on the extension.\n * @param payload Optional parameters for the method.\n */\n SafariClient.prototype.dispatchPromiseEvent = function (type, method, payload) {\n var _this = this;\n var request = this.buildRPCRequest(method, payload);\n return new Promise(function (resolve, reject) {\n if (_this.safariExtensionEnabled) {\n _this.promiseExecutors.set(request.id, { resolve: resolve, reject: reject });\n _this.dispatchEvent(type, request);\n }\n else {\n console.warn('The Safari extension is disabled or unresponsive (dispatch event)');\n console.warn(\"Failed event: \".concat(JSON.stringify(request)));\n reject('The Safari extension is disabled or unresponsive (dispatch event)');\n }\n });\n };\n /**\n * Handles incoming JSON-RPC responses from the Safari extension.\n * Resolves or rejects promises based on the response.\n * @param response The JSON-RPC response object received from the extension.\n */\n SafariClient.prototype.handleResponse = function (response) {\n var requestId = response.id;\n var executor = this.promiseExecutors.get(requestId);\n if (!executor) {\n console.warn(\"Unable to find a promise executor for \".concat(requestId));\n console.warn(\"Response: \".concat(response));\n return;\n }\n this.promiseExecutors.delete(requestId);\n if (response.error) {\n executor.reject(response.error);\n return;\n }\n executor.resolve(response.result);\n };\n /**\n * Listens for 'AsperaDesktop.Response' events.\n */\n SafariClient.prototype.listenResponseEvents = function () {\n var _this = this;\n document.addEventListener('AsperaDesktop.Response', function (event) {\n _this.handleResponse(event.detail);\n });\n };\n /**\n * Listens for 'AsperaDesktop.TransferActivity' events.\n */\n SafariClient.prototype.listenTransferActivityEvents = function () {\n document.addEventListener('AsperaDesktop.TransferActivity', function (event) {\n asperaSdk.activityTracking.handleTransferActivity(event.detail);\n });\n };\n /**\n * Listens for 'AsperaDesktop.Status' events.\n */\n SafariClient.prototype.listenStatusEvents = function () {\n document.addEventListener('AsperaDesktop.Status', function (event) {\n asperaSdk.activityTracking.handleWebSocketEvents(event.detail);\n });\n };\n /**\n * Listens for 'AsperaDesktop.Pong' events.\n */\n SafariClient.prototype.listenPongEvents = function () {\n var _this = this;\n document.addEventListener('AsperaDesktop.Pong', function () {\n _this.lastPong = Date.now();\n _this.safariExtensionStatusChanged(true);\n });\n };\n /**\n * Sends a keep alive ping according to the defined interval.\n */\n SafariClient.prototype.keepAlive = function () {\n var _this = this;\n this.lastPing = Date.now();\n this.dispatchEvent(SafariExtensionEventType.Ping);\n if (this.isFirstPing) {\n this.isFirstPing = false;\n }\n else {\n setTimeout(function () {\n _this.checkSafariExtensionStatus();\n }, this.statusInterval);\n }\n keepAliveTimeout = setTimeout(function () {\n _this.keepAlive();\n }, this.keepAliveInterval);\n };\n /**\n * Listens for Safari extension status changes.\n * If the extension was disabled and enabled again after initializing the SDK, it\n * will call 'monitorTransferActivity' to resume transfer activities.\n */\n SafariClient.prototype.safariExtensionStatusChanged = function (isEnabled) {\n var _this = this;\n if (isEnabled === this.safariExtensionEnabled) {\n return;\n }\n this.safariExtensionEnabled = isEnabled;\n if (isEnabled) {\n if (this.subscribedTransferActivity) {\n var resumeTransferActivity_1 = function () {\n _this.monitorTransferActivity()\n .catch(function () {\n console.error('Failed to resume transfer activity, will try again in 1s');\n setTimeout(function () {\n resumeTransferActivity_1();\n }, 1000);\n });\n };\n resumeTransferActivity_1();\n }\n }\n else {\n asperaSdk.activityTracking.handleWebSocketEvents('CLOSED');\n this.promiseExecutors.forEach(function (promiseExecutor) {\n promiseExecutor.reject('The Safari extension is disabled or unresponsive (extension status)');\n });\n this.promiseExecutors.clear();\n }\n asperaSdk.activityTracking.handleSafariExtensionEvents(this.safariExtensionEnabled ? 'ENABLED' : 'DISABLED');\n };\n /**\n * Checks if the last pong received was longer than the max interval.\n */\n SafariClient.prototype.checkSafariExtensionStatus = function () {\n var pingPongDiff = this.lastPong - this.lastPing;\n if (this.lastPong == null || pingPongDiff < 0 || pingPongDiff > 500) {\n this.safariExtensionStatusChanged(false);\n }\n };\n return SafariClient;\n}());\nexport { SafariClient };\nexport var safariClient = new SafariClient();\nexport default {\n safariClient: safariClient\n};\n","/** @ignore */\nexport var messages = {\n callbackIsNotFunction: 'The provided callback is not a function',\n dragDropInitFailed: 'Unable to initialize drag-drop',\n failedToGenerateIframe: 'Unable to generate IFRAME for download. Using new window',\n getInstallerError: 'Unable to get latest installers',\n getAllTransfersFailed: 'Unable to get all transfers',\n getTransferFailed: 'Unable to get transfer',\n invalidEndpoint: 'The specified endpoint is not a valid URL',\n loadingProtocol: 'Launching IBM Aspera for Desktop',\n modifyTransferFailed: 'Unable to modify transfer',\n notValidTransferSpec: 'The supplied transferSpec is not valid',\n removeTransferFailed: 'Unable to remove transfer',\n resumeTransferFailed: 'Unable to resume transfer',\n serverError: 'Unable to connect to IBM Aspera for Desktop server',\n serverNotVerified: 'IBM Aspera SDK has not been verified. Run test or init first',\n setBrandingFailed: 'Unable to set custom branding',\n showDirectoryFailed: 'Unable to show transfer directory',\n showSelectFileDialogFailed: 'Unable to show select file dialog',\n showSelectFolderDialogFailed: 'Unable to show select folder dialog',\n showPreferencesFailed: 'Unable to show preferences',\n stopTransferFailed: 'Unable to stop transfer',\n transferFailed: 'The transfer failed to initiate',\n unableToFindElementOnPage: 'Unable to find the element on the current page',\n unableToReadDropped: 'The dropped item could not be parsed. Please try selecting via the select file/folder option',\n websocketClosedError: 'The websocket was closed due to an error',\n websocketClosedUnexpect: 'The websocket was closed unexpectedly',\n websocketNotReady: 'The websocket is not ready. Run init first',\n};\n","/**\n * Generates promise object that can be resolved or rejected via functions\n *\n * @returns an object containing the promise, the resolver and rejecter\n */\nexport var generatePromiseObjects = function () {\n var resolver;\n var rejecter;\n var promise = new Promise(function (resolve, reject) {\n resolver = resolve;\n rejecter = reject;\n });\n return {\n promise: promise,\n resolver: resolver,\n rejecter: rejecter\n };\n};\n/**\n * Log errors from Aspera SDK\n *\n * @param message the message indicating the error encountered\n * @param debugData the data with useful debugging information\n */\nexport var errorLog = function (message, debugData) {\n if (debugData && debugData.code && debugData.message) {\n debugData = {\n code: debugData.code,\n message: debugData.message,\n data: debugData.data\n };\n }\n if (typeof window === 'object') {\n if (!Array.isArray(window.asperaSdkLogs)) {\n window.asperaSdkLogs = [];\n }\n window.asperaSdkLogs.push({ message: message, debugData: debugData });\n }\n console.warn(\"Aspera SDK: \".concat(message), debugData);\n};\n/**\n * Generate error object for rejecter responses\n *\n * @param message the message indicating the error encountered\n * @param debugData the data with useful debugging information\n *\n * @returns object containing standardized error response\n */\nexport var generateErrorBody = function (message, debugData) {\n var errorResponse = {\n error: true,\n message: message\n };\n if (debugData && debugData.code && debugData.message) {\n errorResponse.debugData = {\n code: debugData.code,\n message: debugData.message,\n data: debugData.data\n };\n }\n return errorResponse;\n};\n/**\n * Validate if transferSpec is valid for server communication\n *\n * @param transferSpec the transferSpec to test\n *\n * @returns boolean indicating whether supplied transferSpec is valid\n */\nexport var isValidTransferSpec = function (transferSpec) {\n if (transferSpec &&\n typeof transferSpec === 'object' &&\n typeof transferSpec.direction === 'string' &&\n typeof transferSpec.remote_host === 'string' &&\n Array.isArray(transferSpec.paths)) {\n return true;\n }\n return false;\n};\n/**\n * Returns a string indicating the websocket URL to use for talking to the server\n *\n * @returns a string of the full Websocket URL\n */\nexport var getWebsocketUrl = function (serverUrl) {\n var wsProtocol;\n if (serverUrl.indexOf('http:') === 0) {\n wsProtocol = 'ws';\n }\n else if (serverUrl.indexOf('https:') === 0) {\n wsProtocol = 'wss';\n }\n var url = serverUrl.replace('http://', '//').replace('https://', '//');\n return \"\".concat(wsProtocol, \":\").concat(url);\n};\n/**\n * Simple function to get the current platform.\n *\n * @returns a string indicating the current platform\n */\nexport var getCurrentPlatform = function () {\n var ua = navigator.userAgent;\n if (/Mac/.test(ua)) {\n return 'macos';\n }\n else if (/Win/.test(ua)) {\n return 'windows';\n }\n else if (/Linux/.test(ua)) {\n return 'linux';\n }\n else {\n return 'unknown';\n }\n};\n/**\n * Function used to create a random UUID\n *\n * @returns string\n */\nexport var randomUUID = function () {\n var _a;\n var fallback = function () {\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {\n var r = Number(((new Date().getTime() + 16) * Math.random()).toFixed()) % 16;\n if (c !== 'x') {\n // eslint-disable-next-line no-bitwise\n r = r & 0x3 | 0x8;\n }\n return r.toString(16);\n });\n };\n return ((_a = window.crypto) === null || _a === void 0 ? void 0 : _a.randomUUID) ? window.crypto.randomUUID() : fallback();\n};\n/**\n * Return a rejected promise\n *\n * @param message the message indicating the error encountered\n * @param debugData the data with useful debugging information\n *\n * @returns a rejected promise\n */\nexport var throwError = function (message, debugData) {\n errorLog(message, debugData);\n return new Promise(function (resolve, reject) {\n reject(generateErrorBody(message, debugData));\n });\n};\n/**\n * Check if the given string is a valid URL\n *\n * @param url string to check if valid URL\n *\n * @returns boolean\n */\nexport var isValidURL = function (url) {\n try {\n new URL(url);\n return true;\n }\n catch (error) {\n return false;\n }\n};\n/**\n * Checks if the current browser is Safari.\n * @returns {boolean} Whether the browser is Safari.\n */\nexport var isSafari = function () {\n // eslint-disable-next-line\n return /^((?!chrome|android).)*safari/i.test(navigator.userAgent) && !window.MSStream;\n};\nexport default {\n errorLog: errorLog,\n generateErrorBody: generateErrorBody,\n generatePromiseObjects: generatePromiseObjects,\n getCurrentPlatform: getCurrentPlatform,\n getWebsocketUrl: getWebsocketUrl,\n isSafari: isSafari,\n isValidURL: isValidURL,\n isValidTransferSpec: isValidTransferSpec,\n randomUUID: randomUUID,\n throwError: throwError,\n};\n","import { errorLog, generatePromiseObjects, getWebsocketUrl } from './helpers';\nimport { messages } from '../constants/messages';\nimport { asperaSdk } from '../index';\nvar WebsocketService = /** @class */ (function () {\n function WebsocketService() {\n var _this = this;\n /** A map of requested subscription names and the callback for them */\n this.sockets = new Map();\n /** Indicator if the websocket is already connected */\n this.isConnected = false;\n /** Global promise object that resolves when init completes */\n this.initPromise = generatePromiseObjects();\n /**\n * This function handles when a connection is opened\n */\n this.handleOpen = function () {\n if (_this.isConnected || !_this.joinChannel()) {\n return;\n }\n _this.isConnected = true;\n _this.updateRpcPort();\n _this.notifyEvent('RECONNECT');\n };\n /**\n * This function handles completed subscription\n */\n this.handleClose = function () {\n if (_this.isConnected) {\n _this.isConnected = false;\n _this.notifyEvent('CLOSED');\n }\n if (!_this.globalSocket) {\n _this.handleNotReady();\n return;\n }\n _this.reconnect();\n };\n /**\n * This function handles errors received from the websocket\n */\n this.handleError = function () {\n errorLog(messages.websocketClosedError);\n };\n /**\n * This function handles messages received from the websocket\n */\n this.handleMessage = function (message) {\n var data;\n try {\n data = JSON.parse(message.data);\n }\n catch (error) {\n errorLog('Unable to parse Websocket message', { error: error, message: message });\n }\n // Message we get on subscription\n if (data && data.id === 1) {\n _this.initPromise.resolver(data);\n return;\n }\n var socket = _this.sockets.get(data.method);\n if (socket && data.params) {\n socket(data.params);\n }\n };\n }\n /** Log call for not being ready */\n WebsocketService.prototype.handleNotReady = function () {\n errorLog(messages.websocketNotReady);\n };\n /**\n * This function joins the channel to be able to subscribe to events\n */\n WebsocketService.prototype.joinChannel = function () {\n if (!this.globalSocket) {\n this.handleNotReady();\n return false;\n }\n this.globalSocket.send(JSON.stringify({ jsonrpc: '2.0', method: 'subscribe_transfer_activity', params: [asperaSdk.globals.appId], id: 1 }));\n return true;\n };\n /**\n * This function registers clients to listen to a certain message name. Returns any to allow functions to declare proper type\n *\n * @param messageName - the name of messages to listen to (one message name per subscription)\n * @param callback - the callback function\n */\n WebsocketService.prototype.registerMessage = function (messageName, callback) {\n if (!this.sockets.get(messageName)) {\n this.sockets.set(messageName, function (data) {\n callback(data.result);\n });\n }\n };\n /**\n *\n * @param callback This function registers clients to a certain WebSocket event.\n *\n * @param callback - the callback function to call with the event name.\n */\n WebsocketService.prototype.registerEvent = function (callback) {\n this.eventListener = callback;\n this.eventListener(this.isConnected ? 'RECONNECT' : 'CLOSED');\n };\n /**\n * This function starts the websocket subscription with the websocket provider\n *\n * @returns a promise that resolves when the websocket connection is established\n */\n WebsocketService.prototype.init = function () {\n this.connect();\n return this.initPromise.promise;\n };\n WebsocketService.prototype.connect = function () {\n var _this = this;\n this.getWebSocketConnection(33024, 33029)\n .then(function (webSocket) {\n _this.globalSocket = webSocket;\n _this.globalSocket.onerror = _this.handleError;\n _this.globalSocket.onclose = _this.handleClose;\n _this.globalSocket.onopen = _this.handleOpen;\n _this.globalSocket.onmessage = _this.handleMessage;\n _this.handleOpen();\n }).catch(function () {\n _this.reconnect();\n });\n };\n WebsocketService.prototype.reconnect = function () {\n var _this = this;\n if (this.globalSocket) {\n this.globalSocket.close();\n }\n setTimeout(function () {\n _this.connect();\n }, 1000);\n };\n WebsocketService.prototype.getWebSocketConnection = function (startPort, endPort) {\n var webSocketUrl = getWebsocketUrl(asperaSdk.globals.asperaAppUrl);\n var checkPort = function (port) {\n return new Promise(function (resolve, reject) {\n var webSocket = new WebSocket(\"\".concat(webSocketUrl, \":\").concat(port));\n webSocket.onopen = function () {\n resolve(webSocket);\n };\n webSocket.onerror = function () {\n reject(\"Connection failed on port \".concat(port));\n };\n });\n };\n return new Promise(function (resolve, reject) {\n var connectPort = function (port) {\n if (port > endPort) {\n return reject('No available WebSocket connection found');\n }\n checkPort(port)\n .then(function (ws) { return resolve(ws); })\n .catch(function (error) {\n connectPort(port + 1);\n });\n };\n connectPort(startPort);\n });\n };\n WebsocketService.prototype.notifyEvent = function (event) {\n if (typeof this.eventListener === 'function') {\n this.eventListener(event);\n }\n };\n WebsocketService.prototype.updateRpcPort = function () {\n if (!this.globalSocket) {\n return;\n }\n var url = new URL(this.globalSocket.url);\n asperaSdk.globals.rpcPort = Number(url.port);\n };\n return WebsocketService;\n}());\nexport { WebsocketService };\nexport var websocketService = new WebsocketService();\nexport default WebsocketService;\n","import { hiddenStyleList, installerUrl, protocol } from '../constants/constants';\nimport { messages } from '../constants/messages';\nimport { safariClient } from '../helpers/client/safari-client';\nimport { errorLog, isSafari } from '../helpers/helpers';\nimport { websocketService } from '../helpers/ws';\nimport { asperaSdk } from '../index';\nvar AsperaSdkGlobals = /** @class */ (function () {\n function AsperaSdkGlobals() {\n /** The URL of the IBM Aspera HTTP server to use with the SDK */\n this.asperaAppUrl = 'http://127.0.0.1';\n /** The URL of the IBM Aspera Desktop HTTP server to use with the SDK */\n this.rpcPort = 33024;\n /** The default URL to check for latest Aspera installers */\n this.installerUrl = installerUrl;\n /** Indication that the server has been verified as working */\n this.asperaAppVerified = false;\n /** Map of drop zones created by querySelector */\n this.dropZonesCreated = new Map();\n }\n AsperaSdkGlobals.prototype.backupLaunchMethod = function (url) {\n window.alert(messages.loadingProtocol);\n window.location.href = url;\n };\n /**\n * Launch the IBM Aspera App via protocol url. By default, a hidden IFRAME attempts to\n * open the app but if that fails a fallback of opening a new window happens.\n */\n AsperaSdkGlobals.prototype.launch = function () {\n var _this = this;\n try {\n var element = document.createElement('iframe');\n element.src = protocol;\n element.onerror = function (error) {\n errorLog(messages.failedToGenerateIframe, error);\n _this.backupLaunchMethod(protocol);\n };\n element.setAttribute('style', hiddenStyleList);\n document.body.appendChild(element);\n }\n catch (error) {\n errorLog(messages.failedToGenerateIframe, error);\n this.backupLaunchMethod(protocol);\n }\n };\n return AsperaSdkGlobals;\n}());\nvar AsperaSdkInfo = /** @class */ (function () {\n function AsperaSdkInfo() {\n }\n return AsperaSdkInfo;\n}());\nexport { AsperaSdkInfo };\nvar TransferResponse = /** @class */ (function () {\n function TransferResponse() {\n }\n return TransferResponse;\n}());\nexport { TransferResponse };\nvar ActivityMessage = /** @class */ (function () {\n function ActivityMessage() {\n }\n return ActivityMessage;\n}());\nexport { ActivityMessage };\nvar ActivityTracking = /** @class */ (function () {\n function ActivityTracking() {\n /** Map of callbacks that receive transfer update events */\n this.activity_callbacks = new Map();\n /** Map of callbacks that received removed transfer events */\n this.removed_callbacks = new Map();\n /** Map of callbacks that receive connection events */\n this.event_callbacks = new Map();\n /** Map of callbacks that receive Safari extension events */\n this.safari_extension_callbacks = new Map();\n /** Keep track of the last WebSocket event **/\n this.lastWebSocketEvent = 'CLOSED';\n /** Keep track of the last Safari extension event **/\n this.lastSafariExtensionEvent = 'DISABLED';\n }\n /**\n * Notify all consumers when a message is received from the websocket\n *\n * @param message the message received from the websocket\n */\n ActivityTracking.prototype.handleTransferActivity = function (message) {\n if (message.type === 'transferUpdated') {\n this.activity_callbacks.forEach(function (callback) {\n if (typeof callback === 'function') {\n callback(message.data);\n }\n });\n }\n if (message.type === 'transferRemoved') {\n this.removed_callbacks.forEach(function (callback) {\n if (typeof callback === 'function') {\n callback(message.data);\n }\n });\n }\n };\n /**\n * Notify all consumers when a connection webSocketEvent occurs. For example, when the SDK\n * websocket connection to IBM Aspera App is closed or reconnected.\n *\n * @param webSocketEvent the event type.\n */\n ActivityTracking.prototype.handleWebSocketEvents = function (webSocketEvent) {\n if (this.lastWebSocketEvent === webSocketEvent) {\n return;\n }\n this.event_callbacks.forEach(function (callback) {\n if (typeof callback === 'function') {\n callback(webSocketEvent);\n }\n });\n this.lastWebSocketEvent = webSocketEvent;\n };\n /**\n * Notify all consumers when a Safari extension safariExtensionEvent occurs (enabled/disabled).\n *\n * @param safariExtensionEvent the event type.\n */\n ActivityTracking.prototype.handleSafariExtensionEvents = function (safariExtensionEvent) {\n if (this.lastSafariExtensionEvent === safariExtensionEvent) {\n return;\n }\n this.safari_extension_callbacks.forEach(function (callback) {\n if (typeof callback === 'function') {\n callback(safariExtensionEvent);\n }\n });\n this.lastSafariExtensionEvent = safariExtensionEvent;\n };\n /**\n * Set up the activity tracking with IBM Aspera.\n *\n * @returns a promise that resolves when the websocket connection is established.\n * Currently, this promise does not reject.\n */\n ActivityTracking.prototype.setup = function () {\n var _this = this;\n if (asperaSdk.globals.sessionId) {\n this.registerDesktopAppSession();\n }\n if (isSafari()) {\n return safariClient.monitorTransferActivity();\n }\n return websocketService.init()\n .then(function () {\n websocketService.registerMessage('transfer_activity', function (data) { return _this.handleTransferActivity(data); });\n websocketService.registerEvent(function (status) { return _this.handleWebSocketEvents(status); });\n });\n };\n /**\n * Register a callback for getting transfers back to the consumer\n *\n * @param callback the function to call with the array of transfers\n *\n * @returns the ID of the callback index\n */\n ActivityTracking.prototype.setCallback = function (callback) {\n if (typeof callback !== 'function') {\n errorLog(messages.callbackIsNotFunction);\n return;\n }\n var id = \"callback-\".concat(this.activity_callbacks.size + 1);\n this.activity_callbacks.set(id, callback);\n return id;\n };\n /**\n * Remove the callback (deregister) from the list of callbacks\n *\n * @param id the string of the callback to remove\n */\n ActivityTracking.prototype.removeCallback = function (id) {\n this.activity_callbacks.delete(id);\n };\n /**\n * Register a callback for getting transfers back to the consumer\n *\n * @param callback the function to call with the array of transfers\n *\n * @returns the ID of the callback index\n */\n ActivityTracking.prototype.setRemovedCallback = function (callback) {\n if (typeof callback !== 'function') {\n errorLog(messages.callbackIsNotFunction);\n return;\n }\n var id = \"callback-\".concat(this.removed_callbacks.size + 1);\n this.removed_callbacks.set(id, callback);\n return id;\n };\n /**\n * Remove the callback (deregister) from the list of callbacks\n *\n * @param id the string of the callback to remove\n */\n ActivityTracking.prototype.removeRemovedCallback = function (id) {\n this.removed_callbacks.delete(id);\n };\n /**\n * Register a callback for getting websocket events back to the consumer\n *\n * @param callback the function to call with the websocket event\n *\n * @returns the ID of the callback index\n */\n ActivityTracking.prototype.setWebSocketEventCallback = function (callback) {\n if (typeof callback !== 'function') {\n errorLog(messages.callbackIsNotFunction);\n return;\n }\n var id = \"callback-\".concat(this.event_callbacks.size + 1);\n this.event_callbacks.set(id, callback);\n callback(this.lastWebSocketEvent);\n return id;\n };\n /**\n * Remove the callback (deregister) from the list of callbacks\n *\n * @param id the string of the callback to remove\n */\n ActivityTracking.prototype.removeWebSocketEventCallback = function (id) {\n this.event_callbacks.delete(id);\n };\n /**\n * Register a callback for getting Safari extension events back to the consumer\n *\n * @param callback the function to call with the websocket event\n *\n * @returns the ID of the callback index\n */\n ActivityTracking.prototype.setSafariExtensionEventCallback = function (callback) {\n if (typeof callback !== 'function') {\n errorLog(messages.callbackIsNotFunction);\n return;\n }\n var id = \"callback-\".concat(this.safari_extension_callbacks.size + 1);\n this.safari_extension_callbacks.set(id, callback);\n callback(this.lastSafariExtensionEvent);\n return id;\n };\n /**\n * Remove the callback (deregister) from the list of callbacks\n *\n * @param id the string of the callback to remove\n */\n ActivityTracking.prototype.removeSafariExtensionEventCallback = function (id) {\n this.safari_extension_callbacks.delete(id);\n };\n ActivityTracking.prototype.registerDesktopAppSession = function () {\n var iframe = document.createElement('iframe');\n iframe.style.display = 'none';\n iframe.src = \"aspera://initialize?app_id=\".concat(asperaSdk.globals.appId, \"&session_id=\").concat(asperaSdk.globals.sessionId);\n document.body.appendChild(iframe);\n setTimeout(function () {\n document.body.removeChild(iframe);\n }, 1000);\n };\n return ActivityTracking;\n}());\nexport { ActivityTracking };\nvar AsperaSdk = /** @class */ (function () {\n function AsperaSdk() {\n /** Global information about IBM Aspera */\n this.globals = new AsperaSdkGlobals();\n /** Activity tracking for watching transfers */\n this.activityTracking = new ActivityTracking();\n }\n Object.defineProperty(AsperaSdk.prototype, \"isReady\", {\n /**\n * Check if IBM Aspera is ready to be used and has been verified.\n *\n * @returns a boolean indicating if SDK can be used for requests\n */\n get: function () {\n return this.globals.asperaAppVerified && this.globals.appId !== '';\n },\n enumerable: false,\n configurable: true\n });\n return AsperaSdk;\n}());\nexport { AsperaSdk };\n","import { JSONRPCClient } from 'json-rpc-2.0';\nimport { generatePromiseObjects } from '../helpers';\nimport { asperaSdk } from '../../index';\nexport var getRpcServerUrl = function () {\n return \"\".concat(asperaSdk.globals.asperaAppUrl, \":\").concat(asperaSdk.globals.rpcPort);\n};\n/**\n * Wraps a promise like object and returns a promise that supports catch.\n *\n * @param promise the HTTP promise like to wrap\n *\n * @returns promise for the HTTP connection with catch supporting error\n */\nexport var handlePromiseLikeErrors = function (promise) {\n var promiseInfo = generatePromiseObjects();\n promise.then(function (response) {\n promiseInfo.resolver(response);\n }, function (error) {\n promiseInfo.rejecter(error);\n });\n return promiseInfo.promise;\n};\n/**\n * JSON RPC client using HTTP (fetch) as transport.\n */\nvar JSONRPCHttpClient = /** @class */ (function () {\n function JSONRPCHttpClient() {\n var _this = this;\n /**\n * Request handler for the JSON-RPC client. This function is called by the JSON-RPC library\n * after forming the RPC request.\n *\n * @param request JSON-RPC request to send to the server\n */\n this.handleRequest = function (request) {\n var options = {\n method: 'POST',\n headers: {\n 'content-type': 'application/json',\n },\n body: JSON.stringify(request),\n };\n var rpcServerURL = getRpcServerUrl();\n return fetch(rpcServerURL, options).then(function (response) {\n if (response.ok) {\n return response.json().then(function (rpcResponse) { return _this.client.receive(rpcResponse); });\n }\n else if (request.id !== undefined) {\n throw Promise.reject(response.statusText);\n }\n });\n };\n this.request = function (method, data) {\n return _this.client.request(method, data);\n };\n this.client = new JSONRPCClient(this.handleRequest);\n }\n return JSONRPCHttpClient;\n}());\n/**\n * Client used for making requests to Aspera.\n */\nvar HttpClient = /** @class */ (function () {\n function HttpClient() {\n var _this = this;\n this.request = function (method, payload) {\n if (payload === void 0) { payload = {}; }\n return handlePromiseLikeErrors(_this.httpClient.request(method, payload));\n };\n this.httpClient = new JSONRPCHttpClient();\n }\n ;\n return HttpClient;\n}());\nexport var httpClient = new HttpClient();\nexport default {\n httpClient: httpClient,\n handlePromiseLikeErrors: handlePromiseLikeErrors,\n};\n","import { httpClient } from './http-client';\nimport { safariClient } from './safari-client';\nimport { isSafari } from '../helpers';\nexport var client = isSafari() ? safariClient : httpClient;\n","import { messages } from '../constants/messages';\nimport { client } from '../helpers/client/client';\nimport { errorLog, generateErrorBody, generatePromiseObjects, isValidTransferSpec, randomUUID, throwError } from '../helpers/helpers';\nimport { asperaSdk } from '../index';\n/**\n * Check if IBM Aspera for Desktop connection works. This function is called by init\n * when initializing the SDK. This function can be used at any point for checking.\n *\n * @returns a promise that resolves if server can connect or rejects if not\n */\nexport var testConnection = function () {\n return client.request('get_info')\n .then(function (data) {\n asperaSdk.globals.AsperaSdkInfo = data;\n asperaSdk.globals.asperaAppVerified = true;\n return data;\n });\n};\n/**\n * Initialize drag and drop.\n *\n * @returns a promise that resolves if the initialization was successful or not\n */\nexport var initDragDrop = function () {\n if (!asperaSdk.isReady) {\n return throwError(messages.serverNotVerified);\n }\n var promiseInfo = generatePromiseObjects();\n client.request('init_drag_drop')\n .then(function (data) { return promiseInfo.resolver(data); })\n .catch(function (error) {\n errorLog(messages.dragDropInitFailed, error);\n promiseInfo.rejecter(generateErrorBody(messages.dragDropInitFailed, error));\n });\n return promiseInfo.promise;\n};\n/**\n * Initialize IBM Aspera client. If client cannot (reject/catch), then\n * client should attempt fixing server URL or trying again. If still fails disable UI elements.\n *\n * @param options initialization options:\n *\n * - `appId` the unique ID for the website. Transfers initiated during this session\n * will be associated with this ID. It is recommended to use a unique ID to keep transfer\n * information private from other websites.\n *\n * - `supportMultipleUsers` when enabled (defaults to false), the SDK will iterate over a port\n * range and generate a session id to determine the running instance of the desktop app for the\n * current user. This is needed when multiple users may be logged into the same machine\n * simultaneously, for example on a Windows Server.\n *\n * @returns a promise that resolves if IBM Aspera Desktop is running properly or\n * rejects if unable to connect\n */\nexport var init = function (options) {\n var _a, _b;\n var appId = (_a = options === null || options === void 0 ? void 0 : options.appId) !== null && _a !== void 0 ? _a : randomUUID();\n var supportMultipleUsers = (_b = options === null || options === void 0 ? void 0 : options.supportMultipleUsers) !== null && _b !== void 0 ? _b : false;\n asperaSdk.globals.appId = appId;\n if (supportMultipleUsers) {\n asperaSdk.globals.sessionId = randomUUID();\n }\n return asperaSdk.activityTracking.setup()\n .then(function () { return testConnection(); })\n .then(function () { return initDragDrop(); })\n .catch(function (error) {\n errorLog(messages.serverError, error);\n asperaSdk.globals.asperaAppVerified = false;\n throw generateErrorBody(messages.serverError, error);\n });\n};\n/**\n * Start a transfer\n *\n * @param transferSpec standard transferSpec for transfer\n * @param asperaSdkSpec IBM Aspera settings when starting a transfer\n *\n * @returns a promise that resolves if transfer initiation is successful and rejects if transfer cannot be started\n */\nexport var startTransfer = function (transferSpec, asperaSdkSpec) {\n if (!asperaSdk.isReady) {\n return throwError(messages.serverNotVerified);\n }\n if (!isValidTransferSpec(transferSpec)) {\n return throwError(messages.notValidTransferSpec, { transferSpec: transferSpec });\n }\n var promiseInfo = generatePromiseObjects();\n var payload = {\n transfer_spec: transferSpec,\n desktop_spec: asperaSdkSpec,\n app_id: asperaSdk.globals.appId,\n };\n client.request('start_transfer', payload)\n .then(function (data) { return promiseInfo.resolver(data); })\n .catch(function (error) {\n errorLog(messages.transferFailed, error);\n promiseInfo.rejecter(generateErrorBody(messages.transferFailed, error));\n });\n return promiseInfo.promise;\n};\n/**\n * Register a callback event for getting transfer updates\n *\n * @param callback callback function to receive transfers\n *\n * @returns ID representing the callback for deregistration purposes\n */\nexport var registerActivityCallback = function (callback) {\n return asperaSdk.activityTracking.setCallback(callback);\n};\n/**\n * Remove a callback from the transfer callback\n *\n * @param id the ID returned by `registerActivityCallback`\n */\nexport var deregisterActivityCallback = function (id) {\n asperaSdk.activityTracking.removeCallback(id);\n};\n/**\n * Register a callback event for when a user removes or cancels a transfer\n * directly from IBM Aspera. This may also be called if IBM Aspera\n * is configured to automatically remove completed transfers.\n *\n * @param callback callback function to receive transfers\n *\n * @returns ID representing the callback for deregistration purposes\n */\nexport var registerRemovedCallback = function (callback) {\n return asperaSdk.activityTracking.setRemovedCallback(callback);\n};\n/**\n * Remove a callback from the removed transfer callback\n *\n * @param id the ID returned by `registerRemovedCallback`\n */\nexport var deregisterRemovedCallback = function (id) {\n asperaSdk.activityTracking.removeRemovedCallback(id);\n};\n/**\n * Register a callback for getting updates about the connection status of IBM Aspera SDK.\n *\n * For example, to be notified of when the SDK loses connection with the application or connection\n * is re-established. This can be useful if you want to handle the case where the user quits IBM Aspera\n * after `init` has already been called, and want to prompt the user to relaunch the application.\n *\n * @param callback callback function to receive events\n *\n * @returns ID representing the callback for deregistration purposes\n */\nexport var registerStatusCallback = function (callback) {\n return asperaSdk.activityTracking.setWebSocketEventCallback(callback);\n};\n/**\n * Remove a callback from getting connection status events.\n *\n * @param id the ID returned by `registerStatusCallback`\n */\nexport var deregisterStatusCallback = function (id) {\n asperaSdk.activityTracking.removeWebSocketEventCallback(id);\n};\n/**\n * Register a callback for getting updates about the Safari extension status.\n *\n * This can be useful if you want to handle the case where the user enable or disable the Safari extension.\n *\n * @param callback callback function to receive events\n *\n * @returns ID representing the callback for deregistration purposes\n */\nexport var registerSafariExtensionStatusCallback = function (callback) {\n return asperaSdk.activityTracking.setSafariExtensionEventCallback(callback);\n};\n/**\n * Remove a callback from getting Safari extension status events.\n *\n * @param id the ID returned by `registerStatusCallback`\n */\nexport var deregisterSafariExtensionStatusCallback = function (id) {\n asperaSdk.activityTracking.removeSafariExtensionEventCallback(id);\n};\n/**\n * Remove a transfer. This will stop the transfer if it is in progress.\n *\n * @param id transfer uuid\n *\n * @returns a promise that resolves if transfer is removed and rejects if transfer cannot be removed\n */\nexport var removeTransfer = function (id) {\n if (!asperaSdk.isReady) {\n return throwError(messages.serverNotVerified);\n }\n var promiseInfo = generatePromiseObjects();\n var payload = {\n transfer_id: id,\n };\n client.request('remove_transfer', payload)\n .then(function (data) { return promiseInfo.resolver(data); })\n .catch(function (error) {\n errorLog(messages.removeTransferFailed, error);\n promiseInfo.rejecter(generateErrorBody(messages.removeTransferFailed, error));\n });\n return promiseInfo.promise;\n};\n/**\n * Stop a transfer.\n *\n * @param id transfer uuid\n *\n * @returns a promise that resolves if transfer is stopped and rejects if transfer cannot be stopped\n */\nexport var stopTransfer = function (id) {\n if (!asperaSdk.isReady) {\n return throwError(messages.serverNotVerified);\n }\n var promiseInfo = generatePromiseObjects();\n var payload = {\n transfer_id: id,\n };\n client.request('stop_transfer', payload)\n .then(function (data) { return promiseInfo.resolver(data); })\n .catch(function (error) {\n errorLog(messages.stopTransferFailed, error);\n promiseInfo.rejecter(generateErrorBody(messages.stopTransferFailed, error));\n });\n return promiseInfo.promise;\n};\n/**\n * Resume a paused or failed transfer.\n *\n * @param id transfer uuid\n * @param options resume transfer options\n *\n * @returns a promise that resolves with the new transfer object if transfer is resumed\n */\nexport var resumeTransfer = function (id, options) {\n if (!asperaSdk.isReady) {\n return throwError(messages.serverNotVerified);\n }\n var promiseInfo = generatePromiseObjects();\n var payload = {\n transfer_id: id,\n transfer_spec: options,\n };\n client.request('resume_transfer', payload)\n .then(function (data) { return promiseInfo.resolver(data); })\n .catch(function (error) {\n errorLog(messages.resumeTransferFailed, error);\n promiseInfo.rejecter(generateErrorBody(messages.resumeTransferFailed, error));\n });\n return promiseInfo.promise;\n};\n/**\n * Displays a file browser dialog for the user to select files.\n *\n * @param options file dialog options\n *\n * @returns a promise that resolves with the selected file(s) and rejects if user cancels dialog\n */\nexport var showSelectFileDialog = function (options) {\n if (!asperaSdk.isReady) {\n return throwError(messages.serverNotVerified);\n }\n var promiseInfo = generatePromiseObjects();\n var payload = {\n options: options || {},\n app_id: asperaSdk.globals.appId,\n };\n client.request('show_file_dialog', payload)\n .then(function (data) { return promiseInfo.resolver(data); })\n .catch(function (error) {\n errorLog(messages.showSelectFileDialogFailed, error);\n promiseInfo.rejecter(generateErrorBody(messages.showSelectFileDialogFailed, error));\n });\n return promiseInfo.promise;\n};\n/**\n * Displays a folder browser dialog for the user to select folders.\n *\n * @param options folder dialog options\n *\n * @returns a promise that resolves with the selected folder(s) and rejects if user cancels dialog\n */\nexport var showSelectFolderDialog = function (options) {\n if (!asperaSdk.isReady) {\n return throwError(messages.serverNotVerified);\n }\n var promiseInfo = generatePromiseObjects();\n var payload = {\n options: options || {},\n app_id: asperaSdk.globals.appId,\n };\n client.request('show_folder_dialog', payload)\n .then(function (data) { return promiseInfo.resolver(data); })\n .catch(function (error) {\n errorLog(messages.showSelectFolderDialogFailed, error);\n promiseInfo.rejecter(generateErrorBody(messages.showSelectFolderDialogFailed, error));\n });\n return promiseInfo.promise;\n};\n/**\n * Opens the IBM Aspera preferences page.\n *\n * @returns a promise that resolves when the preferences page is opened.\n */\nexport var showPreferences = function () {\n if (!asperaSdk.isReady) {\n return throwError(messages.serverNotVerified);\n }\n var promiseInfo = generatePromiseObjects();\n client.request('open_preferences')\n .then(function (data) { return promiseInfo.resolver(data); })\n .catch(function (error) {\n errorLog(messages.showPreferencesFailed, error);\n promiseInfo.rejecter(generateErrorBody(messages.showPreferencesFailed, error));\n });\n return promiseInfo.promise;\n};\n/**\n * Get all transfers associated with the current application.\n *\n * @returns a promise that resolves with an array of transfers.\n */\nexport var getAllTransfers = function () {\n if (!asperaSdk.isReady) {\n return throwError(messages.serverNotVerified);\n }\n var promiseInfo = generatePromiseObjects();\n var payload = {\n app_id: asperaSdk.globals.appId,\n };\n client.request('get_all_transfers', payload)\n .then(function (data) { return promiseInfo.resolver(data); })\n .catch(function (error) {\n errorLog(messages.getAllTransfersFailed, error);\n promiseInfo.rejecter(generateErrorBody(messages.getAllTransfersFailed, error));\n });\n return promiseInfo.promise;\n};\n/**\n * Get a specific transfer by ID.\n *\n * @param id transfer uuid\n *\n * @returns a promise that resolves with the transfer.\n */\nexport var getTransfer = function (id) {\n if (!asperaSdk.isReady) {\n return throwError(messages.serverNotVerified);\n }\n var promiseInfo = generatePromiseObjects();\n var payload = {\n transfer_id: id,\n };\n client.request('get_transfer', payload)\n .then(function (data) { return promiseInfo.resolver(data); })\n .catch(function (error) {\n errorLog(messages.getTransferFailed, error);\n promiseInfo.rejecter(generateErrorBody(messages.getTransferFailed, error));\n });\n return promiseInfo.promise;\n};\n/**\n * Opens and highlights the downloaded file in Finder or Windows Explorer. If multiple files,\n * then only the first file will be selected.\n *\n * @param id transfer uuid\n *\n * @returns a promise that resolves if the file can be shown and rejects if not\n */\nexport var showDirectory = function (id) {\n if (!asperaSdk.isReady) {\n return throwError(messages.serverNotVerified);\n }\n var promiseInfo = generatePromiseObjects();\n var payload = {\n transfer_id: id,\n };\n client.request('show_directory', payload)\n .then(function (data) { return promiseInfo.resolver(data); })\n .catch(function (error) {\n errorLog(messages.showDirectoryFailed, error);\n promiseInfo.rejecter(generateErrorBody(messages.showDirectoryFailed, error));\n });\n return promiseInfo.promise;\n};\n/**\n * Modify the speed of a running transfer.\n *\n * @param id transfer uuid\n * @param options transfer rate options\n *\n * @returns a promise that resolves if the transfer rate can be modified and rejects if not\n */\nexport var modifyTransfer = function (id, options) {\n if (!asperaSdk.isReady) {\n return throwError(messages.serverNotVerified);\n }\n var promiseInfo = generatePromiseObjects();\n var payload = {\n transfer_id: id,\n transfer_spec: options,\n };\n client.request('modify_transfer', payload)\n .then(function (data) { return promiseInfo.resolver(data); })\n .catch(function (error) {\n errorLog(messages.modifyTransferFailed, error);\n promiseInfo.rejecter(generateErrorBody(messages.modifyTransferFailed, error));\n });\n return promiseInfo.promise;\n};\n/**\n * Set the custom branding template to be used by IBM Aspera. If the app is already\n * configured to use a different branding, then the branding template you specify will be\n * stored by the app, allowing the end user to switch at any point.\n *\n * @param id custom branding template id. This should be consistent across page loads.\n * @param options custom branding options\n *\n * @returns a promise that resolves if the branding was properly set.\n */\nexport var setBranding = function (id, options) {\n if (!asperaSdk.isReady) {\n return throwError(messages.serverNotVerified);\n }\n var promiseInfo = generatePromiseObjects();\n var branding = {\n id: id,\n name: options.name,\n theme: options.theme,\n };\n var payload = {\n branding: branding,\n };\n client.request('update_branding', payload)\n .then(function (data) { return promiseInfo.resolver(data); })\n .catch(function (error) {\n errorLog(messages.setBrandingFailed, error);\n promiseInfo.rejecter(generateErrorBody(messages.setBrandingFailed, error));\n });\n return promiseInfo.promise;\n};\n/**\n * Create a dropzone for the given element selector.\n *\n * @param callback the function to call once the files are dropped\n * @param elementSelector the selector of the element on the page that should watch for drop events\n */\nexport var createDropzone = function (callback, elementSelector) {\n var elements = document.querySelectorAll(elementSelector);\n if (!elements || !elements.length) {\n errorLog(messages.unableToFindElementOnPage);\n return;\n }\n var dragEvent = function (event) {\n event.preventDefault();\n };\n var dropEvent = function (event) {\n event.preventDefault();\n var files = [];\n if (event.dataTransfer && event.dataTransfer.files && event.dataTransfer.files.length && event.dataTransfer.files[0]) {\n for (var i = 0; i < event.dataTransfer.files.length; i++) {\n var file = event.dataTransfer.files[i];\n files.push({\n lastModified: file.lastModified,\n name: file.name,\n size: file.size,\n type: file.type\n });\n }\n var payload = {\n files: files,\n app_id: asperaSdk.globals.appId,\n };\n client.request('dropped_files', payload)\n .then(function (data) { return callback({ event: event, files: data }); })\n .catch(function (error) {\n errorLog(messages.unableToReadDropped, error);\n });\n }\n };\n elements.forEach(function (element) {\n element.addEventListener('dragover', dragEvent);\n element.addEventListener('drop', dropEvent);\n asperaSdk.globals.dropZonesCreated.set(elementSelector, [{ event: 'dragover', callback: dragEvent }, { event: 'drop', callback: dropEvent }]);\n });\n};\n/**\n * Remove dropzone.\n *\n * @param elementSelector the selector of the element on the page that should remove\n */\nexport var removeDropzone = function (elementSelector) {\n var foundDropzone = asperaSdk.globals.dropZonesCreated.get(elementSelector);\n if (foundDropzone) {\n foundDropzone.forEach(function (data) {\n var elements = document.querySelectorAll(elementSelector);\n if (elements && elements.length) {\n elements.forEach(function (element) {\n element.removeEventListener(data.event, data.callback);\n });\n }\n });\n }\n};\n/**\n * Get metadata about the IBM Aspera installation.\n *\n * @returns a promise that returns information about the user's IBM Aspera installation.\n */\nexport var getInfo = function () {\n if (!asperaSdk.isReady) {\n return throwError(messages.serverNotVerified);\n }\n return new Promise(function (resolve, _) {\n resolve(asperaSdk.globals.AsperaSdkInfo);\n });\n};\n","import { AsperaSdk } from './models/aspera-sdk.model';\nimport { createDropzone, deregisterActivityCallback, deregisterRemovedCallback, deregisterSafariExtensionStatusCallback, deregisterStatusCallback, getAllTransfers, getInfo, getTransfer, init, initDragDrop, modifyTransfer, registerActivityCallback, registerRemovedCallback, registerSafariExtensionStatusCallback, registerStatusCallback, removeDropzone, removeTransfer, resumeTransfer, setBranding, showDirectory, showPreferences, showSelectFileDialog, showSelectFolderDialog, startTransfer, stopTransfer, testConnection, } from './app/core';\nimport { getInstallerInfo } from './app/installer';\nimport { isSafari } from './helpers/helpers';\nexport var asperaSdk = new AsperaSdk();\nasperaSdk.init = init;\nasperaSdk.testConnection = testConnection;\nasperaSdk.startTransfer = startTransfer;\nasperaSdk.registerActivityCallback = registerActivityCallback;\nasperaSdk.deregisterActivityCallback = deregisterActivityCallback;\nasperaSdk.removeTransfer = removeTransfer;\nasperaSdk.showDirectory = showDirectory;\nasperaSdk.stopTransfer = stopTransfer;\nasperaSdk.resumeTransfer = resumeTransfer;\nasperaSdk.getAllTransfers = getAllTransfers;\nasperaSdk.getTransfer = getTransfer;\nasperaSdk.registerRemovedCallback = registerRemovedCallback;\nasperaSdk.deregisterRemovedCallback = deregisterRemovedCallback;\nasperaSdk.showSelectFileDialog = showSelectFileDialog;\nasperaSdk.showSelectFolderDialog = showSelectFolderDialog;\nasperaSdk.showPreferences = showPreferences;\nasperaSdk.modifyTransfer = modifyTransfer;\nasperaSdk.createDropzone = createDropzone;\nasperaSdk.removeDropzone = removeDropzone;\nasperaSdk.getInstallerInfo = getInstallerInfo;\nasperaSdk.registerStatusCallback = registerStatusCallback;\nasperaSdk.deregisterStatusCallback = deregisterStatusCallback;\nasperaSdk.registerSafariExtensionStatusCallback = registerSafariExtensionStatusCallback;\nasperaSdk.deregisterSafariExtensionStatusCallback = deregisterSafariExtensionStatusCallback;\nasperaSdk.initDragDrop = initDragDrop;\nasperaSdk.setBranding = setBranding;\nasperaSdk.getInfo = getInfo;\nasperaSdk.isSafari = isSafari;\nvar launch = asperaSdk.globals.launch;\nasperaSdk.launch = launch;\nif (typeof window === 'object') {\n window.asperaSdk = asperaSdk;\n}\nexport { isSafari, init, testConnection, startTransfer, launch, registerActivityCallback, deregisterActivityCallback, removeTransfer, showDirectory, stopTransfer, resumeTransfer, getAllTransfers, getTransfer, registerRemovedCallback, deregisterRemovedCallback, showSelectFileDialog, showSelectFolderDialog, showPreferences, modifyTransfer, createDropzone, removeDropzone, getInstallerInfo, registerStatusCallback, deregisterStatusCallback, registerSafariExtensionStatusCallback, deregisterSafariExtensionStatusCallback, setBranding, getInfo, };\nexport default {\n isSafari: isSafari,\n init: init,\n testConnection: testConnection,\n startTransfer: startTransfer,\n launch: launch,\n registerActivityCallback: registerActivityCallback,\n deregisterActivityCallback: deregisterActivityCallback,\n removeTransfer: removeTransfer,\n showDirectory: showDirectory,\n stopTransfer: stopTransfer,\n resumeTransfer: resumeTransfer,\n getAllTransfers: getAllTransfers,\n getTransfer: getTransfer,\n registerRemovedCallback: registerRemovedCallback,\n deregisterRemovedCallback: deregisterRemovedCallback,\n showSelectFileDialog: showSelectFileDialog,\n showSelectFolderDialog: showSelectFolderDialog,\n showPreferences: showPreferences,\n modifyTransfer: modifyTransfer,\n createDropzone: createDropzone,\n removeDropzone: removeDropzone,\n getInstallerInfo: getInstallerInfo,\n registerStatusCallback: registerStatusCallback,\n deregisterStatusCallback: deregisterStatusCallback,\n registerSafariExtensionStatusCallback: registerSafariExtensionStatusCallback,\n deregisterSafariExtensionStatusCallback: deregisterSafariExtensionStatusCallback,\n setBranding: setBranding,\n getInfo: getInfo,\n};\n","import { asperaSdk } from '../index';\nimport { errorLog, generateErrorBody, generatePromiseObjects, getCurrentPlatform, isValidURL, throwError } from '../helpers/helpers';\nimport { apiGet } from '../helpers/http';\nimport { messages } from '../constants/messages';\n/**\n * Get the latest Aspera SDK installer information such as download URL and version.\n *\n * @param options Installer info options\n *\n * @returns a promise that resolves with the installer info and rejects if there is an error\n */\nexport var getInstallerInfo = function (options) {\n if (options === void 0) { options = {}; }\n var url = options.endpoint || asperaSdk.globals.installerUrl;\n if (url.endsWith('/latest.json')) {\n url = url.replace('/latest.json', '');\n }\n if (!isValidURL(url)) {\n return throwError(messages.invalidEndpoint, { url: url });\n }\n var promiseInfo = generatePromiseObjects();\n apiGet(\"\".concat(url, \"/latest.json\")).then(function (response) {\n response.json().then(function (data) {\n if (options.endpoint) {\n for (var _i = 0, _a = data.entries; _i < _a.length; _i++) {\n var entry = _a[_i];\n if (!isValidURL(entry.url)) {\n entry.url = \"\".concat(options.endpoint, \"/\").concat(entry.url);\n }\n }\n }\n if (options.all) {\n promiseInfo.resolver(data);\n }\n else {\n var platform_1 = getCurrentPlatform();\n data.entries = data.entries.filter(function (entry) { return entry.platform === platform_1; });\n promiseInfo.resolver(data);\n }\n });\n }).catch(function (error) {\n errorLog(messages.getInstallerError, error);\n promiseInfo.rejecter(generateErrorBody(messages.getInstallerError, error));\n });\n return promiseInfo.promise;\n};\n","import { generatePromiseObjects } from './helpers';\n/**\n * Check HTTP promise response for server error response (non 2XX status) and reject promise is error\n *\n * @param promise the HTTP promise to check for HTTP status code of 2XX for success\n *\n * @returns promise for the HTTP connection with catch supporting error\n */\nexport var handlePromiseErrors = function (promise) {\n var promiseInfo = generatePromiseObjects();\n promise.then(function (response) {\n if (response.ok) {\n promiseInfo.resolver(response);\n }\n else {\n promiseInfo.rejecter(response);\n }\n return response;\n }).catch(function (error) {\n promiseInfo.rejecter(error);\n });\n return promiseInfo.promise;\n};\n/**\n * Make a GET for retrieving data from a server\n *\n * @param url the url string of the resource on the server\n *\n * @returns a promise that will resolve with the response from the server or reject if network/server error\n */\nexport var apiGet = function (url) {\n return handlePromiseErrors(fetch(url, {\n headers: {\n 'Content-Type': 'application/json',\n },\n }));\n};\n"],"names":["__awaiter","this","thisArg","_arguments","P","generator","Promise","resolve","reject","fulfilled","value","step","next","e","rejected","result","done","then","apply","__generator","body","f","y","t","g","_","label","sent","trys","ops","verb","Symbol","iterator","n","v","op","TypeError","call","pop","length","push","Object","defineProperty","exports","JSONRPCClient","models_1","internal_1","_send","createID","idToResolveMap","Map","id","prototype","_createID","timeout","delay","overrideCreateJSONRPCErrorResponse","_this","createJSONRPCErrorResponse","DefaultErrorCode","timeoutRequest","ids","request","timeoutID","setTimeout","forEach","get","delete","clearTimeout","error","method","params","clientParams","requestWithID","requestAdvanced","Array","isArray","map","filter","isDefinedAndNonNull","response","_a","createJSONRPCRequest","undefined","JSONRPCErrorException","message","code","data","Error","requests","areRequestsOriginallyArray","requestsWithID","promises","set","promise","all","responses","send","receive","notify","createJSONRPCNotification","payload","rejectAllPendingRequests","clear","__createBinding","create","o","m","k","k2","desc","getOwnPropertyDescriptor","__esModule","writable","configurable","enumerable","__exportStar","p","hasOwnProperty","extendStatics","__extends","d","b","setPrototypeOf","__proto__","String","__","constructor","createJSONRPCSuccessResponse","JSONRPCErrorCode","isJSONRPCResponses","isJSONRPCResponse","isJSONRPCRequests","isJSONRPCRequest","isJSONRPCID","JSONRPC","jsonrpc","every","createJSONRPCError","_super","toObject","JSONRPCServerAndClient","server","client","options","errorListener","console","warn","applyServerMiddleware","middlewares","_i","arguments","applyMiddleware","hasMethod","name","addMethod","addMethodAdvanced","jsonRPCRequest","receiveAndSend","serverParams","__assign","assign","s","i","__spreadArray","to","from","pack","ar","l","slice","concat","JSONRPCServer","createInvalidRequestResponse","InvalidRequest","mapErrorToJSONRPCErrorResponse","defaultMapErrorToJSONRPCErrorResponse","nameToMethodDictionary","middleware","toJSONRPCMethod","mapResultToJSONRPCResponse","receiveJSON","json","tryParseRequestJSON","ParseError","JSON","parse","receiveMultiple","receiveSingle","isNonNull","callMethod","mapResponse","combineMiddlewares","reduce","middlewareReducer","prevMiddleware","nextMiddleware","onError","mapErrorToJSONRPCErrorResponseIfNecessary","noopMiddleware","MethodNotFound","InternalError","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","module","__webpack_modules__","definition","key","obj","prop","SafariExtensionEventType","keepAliveTimeout","protocol","messages","generatePromiseObjects","resolver","rejecter","errorLog","debugData","window","asperaSdkLogs","generateErrorBody","errorResponse","randomUUID","crypto","replace","c","r","Number","Date","getTime","Math","random","toFixed","toString","throwError","isValidURL","url","URL","isSafari","test","navigator","userAgent","MSStream","safariClient","SafariClient","statusInterval","keepAliveInterval","isFirstPing","lastPing","lastPong","safariExtensionEnabled","subscribedTransferActivity","dispatchPromiseEvent","Request","promiseExecutors","listenResponseEvents","listenTransferActivityEvents","listenStatusEvents","listenPongEvents","keepAlive","monitorTransferActivity","dispatchMonitorEvent","Monitor","asperaSdk","globals","appId","extensionInterval","setInterval","catch","clearInterval","buildRPCRequest","dispatchEvent","type","detail","document","CustomEvent","stringify","handleResponse","requestId","executor","addEventListener","event","activityTracking","handleTransferActivity","handleWebSocketEvents","now","safariExtensionStatusChanged","Ping","checkSafariExtensionStatus","isEnabled","resumeTransferActivity_1","promiseExecutor","handleSafariExtensionEvents","pingPongDiff","websocketService","WebsocketService","sockets","isConnected","initPromise","handleOpen","joinChannel","updateRpcPort","notifyEvent","handleClose","globalSocket","reconnect","handleNotReady","handleError","handleMessage","socket","registerMessage","messageName","callback","registerEvent","eventListener","init","connect","getWebSocketConnection","webSocket","onerror","onclose","onopen","onmessage","close","startPort","endPort","webSocketUrl","serverUrl","wsProtocol","indexOf","getWebsocketUrl","asperaAppUrl","connectPort","port","WebSocket","checkPort","ws","rpcPort","AsperaSdkGlobals","installerUrl","asperaAppVerified","dropZonesCreated","backupLaunchMethod","alert","location","href","launch","element","createElement","src","setAttribute","appendChild","ActivityTracking","activity_callbacks","removed_callbacks","event_callbacks","safari_extension_callbacks","lastWebSocketEvent","lastSafariExtensionEvent","webSocketEvent","safariExtensionEvent","setup","sessionId","registerDesktopAppSession","status","setCallback","size","removeCallback","setRemovedCallback","removeRemovedCallback","setWebSocketEventCallback","removeWebSocketEventCallback","setSafariExtensionEventCallback","removeSafariExtensionEventCallback","iframe","style","display","removeChild","AsperaSdk","JSONRPCHttpClient","handleRequest","headers","rpcServerURL","fetch","ok","rpcResponse","statusText","httpClient","promiseInfo","testConnection","AsperaSdkInfo","initDragDrop","isReady","_b","supportMultipleUsers","startTransfer","transferSpec","asperaSdkSpec","direction","remote_host","paths","isValidTransferSpec","transfer_spec","desktop_spec","app_id","registerActivityCallback","deregisterActivityCallback","removeTransfer","transfer_id","showDirectory","stopTransfer","resumeTransfer","getAllTransfers","getTransfer","registerRemovedCallback","deregisterRemovedCallback","showSelectFileDialog","showSelectFolderDialog","showPreferences","modifyTransfer","createDropzone","elementSelector","elements","querySelectorAll","dragEvent","preventDefault","dropEvent","files","dataTransfer","file","lastModified","removeDropzone","foundDropzone","removeEventListener","getInstallerInfo","endpoint","endsWith","apiGet","entries","entry","platform_1","ua","platform","registerStatusCallback","deregisterStatusCallback","registerSafariExtensionStatusCallback","deregisterSafariExtensionStatusCallback","setBranding","branding","theme","getInfo"],"sourceRoot":""}
1
+ {"version":3,"file":"aspera-sdk.js","mappings":"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","sources":["webpack://@ibm-aspera/sdk/./node_modules/json-rpc-2.0/dist/client.js","webpack://@ibm-aspera/sdk/./node_modules/json-rpc-2.0/dist/index.js","webpack://@ibm-aspera/sdk/./node_modules/json-rpc-2.0/dist/interfaces.js","webpack://@ibm-aspera/sdk/./node_modules/json-rpc-2.0/dist/internal.js","webpack://@ibm-aspera/sdk/./node_modules/json-rpc-2.0/dist/models.js","webpack://@ibm-aspera/sdk/./node_modules/json-rpc-2.0/dist/server-and-client.js","webpack://@ibm-aspera/sdk/./node_modules/json-rpc-2.0/dist/server.js","webpack://@ibm-aspera/sdk/webpack/bootstrap","webpack://@ibm-aspera/sdk/webpack/runtime/define property getters","webpack://@ibm-aspera/sdk/webpack/runtime/hasOwnProperty shorthand","webpack://@ibm-aspera/sdk/./src/constants/constants.ts","webpack://@ibm-aspera/sdk/./src/helpers/client/safari-client.ts","webpack://@ibm-aspera/sdk/./src/constants/messages.ts","webpack://@ibm-aspera/sdk/./src/helpers/helpers.ts","webpack://@ibm-aspera/sdk/./src/helpers/ws.ts","webpack://@ibm-aspera/sdk/./src/models/aspera-sdk.model.ts","webpack://@ibm-aspera/sdk/./src/helpers/client/http-client.ts","webpack://@ibm-aspera/sdk/./src/helpers/client/client.ts","webpack://@ibm-aspera/sdk/./src/app/core.ts","webpack://@ibm-aspera/sdk/./src/index.ts","webpack://@ibm-aspera/sdk/./src/app/installer.ts","webpack://@ibm-aspera/sdk/./src/helpers/http.ts"],"sourcesContent":["\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.JSONRPCClient = void 0;\nvar models_1 = require(\"./models\");\nvar internal_1 = require(\"./internal\");\nvar JSONRPCClient = /** @class */ (function () {\n function JSONRPCClient(_send, createID) {\n this._send = _send;\n this.createID = createID;\n this.idToResolveMap = new Map();\n this.id = 0;\n }\n JSONRPCClient.prototype._createID = function () {\n if (this.createID) {\n return this.createID();\n }\n else {\n return ++this.id;\n }\n };\n JSONRPCClient.prototype.timeout = function (delay, overrideCreateJSONRPCErrorResponse) {\n var _this = this;\n if (overrideCreateJSONRPCErrorResponse === void 0) { overrideCreateJSONRPCErrorResponse = function (id) {\n return (0, models_1.createJSONRPCErrorResponse)(id, internal_1.DefaultErrorCode, \"Request timeout\");\n }; }\n var timeoutRequest = function (ids, request) {\n var timeoutID = setTimeout(function () {\n ids.forEach(function (id) {\n var resolve = _this.idToResolveMap.get(id);\n if (resolve) {\n _this.idToResolveMap.delete(id);\n resolve(overrideCreateJSONRPCErrorResponse(id));\n }\n });\n }, delay);\n return request().then(function (result) {\n clearTimeout(timeoutID);\n return result;\n }, function (error) {\n clearTimeout(timeoutID);\n return Promise.reject(error);\n });\n };\n var requestAdvanced = function (request, clientParams) {\n var ids = (!Array.isArray(request) ? [request] : request)\n .map(function (request) { return request.id; })\n .filter(isDefinedAndNonNull);\n return timeoutRequest(ids, function () {\n return _this.requestAdvanced(request, clientParams);\n });\n };\n return {\n request: function (method, params, clientParams) {\n var id = _this._createID();\n return timeoutRequest([id], function () {\n return _this.requestWithID(method, params, clientParams, id);\n });\n },\n requestAdvanced: function (request, clientParams) { return requestAdvanced(request, clientParams); },\n };\n };\n JSONRPCClient.prototype.request = function (method, params, clientParams) {\n return this.requestWithID(method, params, clientParams, this._createID());\n };\n JSONRPCClient.prototype.requestWithID = function (method, params, clientParams, id) {\n return __awaiter(this, void 0, void 0, function () {\n var request, response;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n request = (0, models_1.createJSONRPCRequest)(id, method, params);\n return [4 /*yield*/, this.requestAdvanced(request, clientParams)];\n case 1:\n response = _a.sent();\n if (response.result !== undefined && !response.error) {\n return [2 /*return*/, response.result];\n }\n else if (response.result === undefined && response.error) {\n return [2 /*return*/, Promise.reject(new models_1.JSONRPCErrorException(response.error.message, response.error.code, response.error.data))];\n }\n else {\n return [2 /*return*/, Promise.reject(new Error(\"An unexpected error occurred\"))];\n }\n return [2 /*return*/];\n }\n });\n });\n };\n JSONRPCClient.prototype.requestAdvanced = function (requests, clientParams) {\n var _this = this;\n var areRequestsOriginallyArray = Array.isArray(requests);\n if (!Array.isArray(requests)) {\n requests = [requests];\n }\n var requestsWithID = requests.filter(function (request) {\n return isDefinedAndNonNull(request.id);\n });\n var promises = requestsWithID.map(function (request) {\n return new Promise(function (resolve) { return _this.idToResolveMap.set(request.id, resolve); });\n });\n var promise = Promise.all(promises).then(function (responses) {\n if (areRequestsOriginallyArray || !responses.length) {\n return responses;\n }\n else {\n return responses[0];\n }\n });\n return this.send(areRequestsOriginallyArray ? requests : requests[0], clientParams).then(function () { return promise; }, function (error) {\n requestsWithID.forEach(function (request) {\n _this.receive((0, models_1.createJSONRPCErrorResponse)(request.id, internal_1.DefaultErrorCode, (error && error.message) || \"Failed to send a request\"));\n });\n return promise;\n });\n };\n JSONRPCClient.prototype.notify = function (method, params, clientParams) {\n var request = (0, models_1.createJSONRPCNotification)(method, params);\n this.send(request, clientParams).then(undefined, function () { return undefined; });\n };\n JSONRPCClient.prototype.send = function (payload, clientParams) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n return [2 /*return*/, this._send(payload, clientParams)];\n });\n });\n };\n JSONRPCClient.prototype.rejectAllPendingRequests = function (message) {\n this.idToResolveMap.forEach(function (resolve, id) {\n return resolve((0, models_1.createJSONRPCErrorResponse)(id, internal_1.DefaultErrorCode, message));\n });\n this.idToResolveMap.clear();\n };\n JSONRPCClient.prototype.receive = function (responses) {\n var _this = this;\n if (!Array.isArray(responses)) {\n responses = [responses];\n }\n responses.forEach(function (response) {\n var resolve = _this.idToResolveMap.get(response.id);\n if (resolve) {\n _this.idToResolveMap.delete(response.id);\n resolve(response);\n }\n });\n };\n return JSONRPCClient;\n}());\nexports.JSONRPCClient = JSONRPCClient;\nvar isDefinedAndNonNull = function (value) {\n return value !== undefined && value !== null;\n};\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./client\"), exports);\n__exportStar(require(\"./interfaces\"), exports);\n__exportStar(require(\"./models\"), exports);\n__exportStar(require(\"./server\"), exports);\n__exportStar(require(\"./server-and-client\"), exports);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DefaultErrorCode = void 0;\nexports.DefaultErrorCode = 0;\n","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createJSONRPCNotification = exports.createJSONRPCRequest = exports.createJSONRPCSuccessResponse = exports.createJSONRPCErrorResponse = exports.JSONRPCErrorCode = exports.JSONRPCErrorException = exports.isJSONRPCResponses = exports.isJSONRPCResponse = exports.isJSONRPCRequests = exports.isJSONRPCRequest = exports.isJSONRPCID = exports.JSONRPC = void 0;\nexports.JSONRPC = \"2.0\";\nvar isJSONRPCID = function (id) {\n return typeof id === \"string\" || typeof id === \"number\" || id === null;\n};\nexports.isJSONRPCID = isJSONRPCID;\nvar isJSONRPCRequest = function (payload) {\n return (payload.jsonrpc === exports.JSONRPC &&\n payload.method !== undefined &&\n payload.result === undefined &&\n payload.error === undefined);\n};\nexports.isJSONRPCRequest = isJSONRPCRequest;\nvar isJSONRPCRequests = function (payload) {\n return Array.isArray(payload) && payload.every(exports.isJSONRPCRequest);\n};\nexports.isJSONRPCRequests = isJSONRPCRequests;\nvar isJSONRPCResponse = function (payload) {\n return (payload.jsonrpc === exports.JSONRPC &&\n payload.id !== undefined &&\n (payload.result !== undefined || payload.error !== undefined));\n};\nexports.isJSONRPCResponse = isJSONRPCResponse;\nvar isJSONRPCResponses = function (payload) {\n return Array.isArray(payload) && payload.every(exports.isJSONRPCResponse);\n};\nexports.isJSONRPCResponses = isJSONRPCResponses;\nvar createJSONRPCError = function (code, message, data) {\n var error = { code: code, message: message };\n if (data != null) {\n error.data = data;\n }\n return error;\n};\nvar JSONRPCErrorException = /** @class */ (function (_super) {\n __extends(JSONRPCErrorException, _super);\n function JSONRPCErrorException(message, code, data) {\n var _this = _super.call(this, message) || this;\n // Manually set the prototype to fix TypeScript issue:\n // https://github.com/Microsoft/TypeScript-wiki/blob/main/Breaking-Changes.md#extending-built-ins-like-error-array-and-map-may-no-longer-work\n Object.setPrototypeOf(_this, JSONRPCErrorException.prototype);\n _this.code = code;\n _this.data = data;\n return _this;\n }\n JSONRPCErrorException.prototype.toObject = function () {\n return createJSONRPCError(this.code, this.message, this.data);\n };\n return JSONRPCErrorException;\n}(Error));\nexports.JSONRPCErrorException = JSONRPCErrorException;\nvar JSONRPCErrorCode;\n(function (JSONRPCErrorCode) {\n JSONRPCErrorCode[JSONRPCErrorCode[\"ParseError\"] = -32700] = \"ParseError\";\n JSONRPCErrorCode[JSONRPCErrorCode[\"InvalidRequest\"] = -32600] = \"InvalidRequest\";\n JSONRPCErrorCode[JSONRPCErrorCode[\"MethodNotFound\"] = -32601] = \"MethodNotFound\";\n JSONRPCErrorCode[JSONRPCErrorCode[\"InvalidParams\"] = -32602] = \"InvalidParams\";\n JSONRPCErrorCode[JSONRPCErrorCode[\"InternalError\"] = -32603] = \"InternalError\";\n})(JSONRPCErrorCode = exports.JSONRPCErrorCode || (exports.JSONRPCErrorCode = {}));\nvar createJSONRPCErrorResponse = function (id, code, message, data) {\n return {\n jsonrpc: exports.JSONRPC,\n id: id,\n error: createJSONRPCError(code, message, data),\n };\n};\nexports.createJSONRPCErrorResponse = createJSONRPCErrorResponse;\nvar createJSONRPCSuccessResponse = function (id, result) {\n return {\n jsonrpc: exports.JSONRPC,\n id: id,\n result: result !== null && result !== void 0 ? result : null,\n };\n};\nexports.createJSONRPCSuccessResponse = createJSONRPCSuccessResponse;\nvar createJSONRPCRequest = function (id, method, params) {\n return {\n jsonrpc: exports.JSONRPC,\n id: id,\n method: method,\n params: params,\n };\n};\nexports.createJSONRPCRequest = createJSONRPCRequest;\nvar createJSONRPCNotification = function (method, params) {\n return {\n jsonrpc: exports.JSONRPC,\n method: method,\n params: params,\n };\n};\nexports.createJSONRPCNotification = createJSONRPCNotification;\n","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.JSONRPCServerAndClient = void 0;\nvar models_1 = require(\"./models\");\nvar JSONRPCServerAndClient = /** @class */ (function () {\n function JSONRPCServerAndClient(server, client, options) {\n if (options === void 0) { options = {}; }\n var _a;\n this.server = server;\n this.client = client;\n this.errorListener = (_a = options.errorListener) !== null && _a !== void 0 ? _a : console.warn;\n }\n JSONRPCServerAndClient.prototype.applyServerMiddleware = function () {\n var _a;\n var middlewares = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n middlewares[_i] = arguments[_i];\n }\n (_a = this.server).applyMiddleware.apply(_a, middlewares);\n };\n JSONRPCServerAndClient.prototype.hasMethod = function (name) {\n return this.server.hasMethod(name);\n };\n JSONRPCServerAndClient.prototype.addMethod = function (name, method) {\n this.server.addMethod(name, method);\n };\n JSONRPCServerAndClient.prototype.addMethodAdvanced = function (name, method) {\n this.server.addMethodAdvanced(name, method);\n };\n JSONRPCServerAndClient.prototype.timeout = function (delay) {\n return this.client.timeout(delay);\n };\n JSONRPCServerAndClient.prototype.request = function (method, params, clientParams) {\n return this.client.request(method, params, clientParams);\n };\n JSONRPCServerAndClient.prototype.requestAdvanced = function (jsonRPCRequest, clientParams) {\n return this.client.requestAdvanced(jsonRPCRequest, clientParams);\n };\n JSONRPCServerAndClient.prototype.notify = function (method, params, clientParams) {\n this.client.notify(method, params, clientParams);\n };\n JSONRPCServerAndClient.prototype.rejectAllPendingRequests = function (message) {\n this.client.rejectAllPendingRequests(message);\n };\n JSONRPCServerAndClient.prototype.receiveAndSend = function (payload, serverParams, clientParams) {\n return __awaiter(this, void 0, void 0, function () {\n var response, message;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!((0, models_1.isJSONRPCResponse)(payload) || (0, models_1.isJSONRPCResponses)(payload))) return [3 /*break*/, 1];\n this.client.receive(payload);\n return [3 /*break*/, 4];\n case 1:\n if (!((0, models_1.isJSONRPCRequest)(payload) || (0, models_1.isJSONRPCRequests)(payload))) return [3 /*break*/, 3];\n return [4 /*yield*/, this.server.receive(payload, serverParams)];\n case 2:\n response = _a.sent();\n if (response) {\n return [2 /*return*/, this.client.send(response, clientParams)];\n }\n return [3 /*break*/, 4];\n case 3:\n message = \"Received an invalid JSON-RPC message\";\n this.errorListener(message, payload);\n return [2 /*return*/, Promise.reject(new Error(message))];\n case 4: return [2 /*return*/];\n }\n });\n });\n };\n return JSONRPCServerAndClient;\n}());\nexports.JSONRPCServerAndClient = JSONRPCServerAndClient;\n","\"use strict\";\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nvar __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.JSONRPCServer = void 0;\nvar models_1 = require(\"./models\");\nvar internal_1 = require(\"./internal\");\nvar createParseErrorResponse = function () {\n return (0, models_1.createJSONRPCErrorResponse)(null, models_1.JSONRPCErrorCode.ParseError, \"Parse error\");\n};\nvar createInvalidRequestResponse = function (request) {\n return (0, models_1.createJSONRPCErrorResponse)((0, models_1.isJSONRPCID)(request.id) ? request.id : null, models_1.JSONRPCErrorCode.InvalidRequest, \"Invalid Request\");\n};\nvar createMethodNotFoundResponse = function (id) {\n return (0, models_1.createJSONRPCErrorResponse)(id, models_1.JSONRPCErrorCode.MethodNotFound, \"Method not found\");\n};\nvar JSONRPCServer = /** @class */ (function () {\n function JSONRPCServer(options) {\n if (options === void 0) { options = {}; }\n var _a;\n this.mapErrorToJSONRPCErrorResponse = defaultMapErrorToJSONRPCErrorResponse;\n this.nameToMethodDictionary = {};\n this.middleware = null;\n this.errorListener = (_a = options.errorListener) !== null && _a !== void 0 ? _a : console.warn;\n }\n JSONRPCServer.prototype.hasMethod = function (name) {\n return !!this.nameToMethodDictionary[name];\n };\n JSONRPCServer.prototype.addMethod = function (name, method) {\n this.addMethodAdvanced(name, this.toJSONRPCMethod(method));\n };\n JSONRPCServer.prototype.toJSONRPCMethod = function (method) {\n return function (request, serverParams) {\n var response = method(request.params, serverParams);\n return Promise.resolve(response).then(function (result) {\n return mapResultToJSONRPCResponse(request.id, result);\n });\n };\n };\n JSONRPCServer.prototype.addMethodAdvanced = function (name, method) {\n var _a;\n this.nameToMethodDictionary = __assign(__assign({}, this.nameToMethodDictionary), (_a = {}, _a[name] = method, _a));\n };\n JSONRPCServer.prototype.receiveJSON = function (json, serverParams) {\n var request = this.tryParseRequestJSON(json);\n if (request) {\n return this.receive(request, serverParams);\n }\n else {\n return Promise.resolve(createParseErrorResponse());\n }\n };\n JSONRPCServer.prototype.tryParseRequestJSON = function (json) {\n try {\n return JSON.parse(json);\n }\n catch (_a) {\n return null;\n }\n };\n JSONRPCServer.prototype.receive = function (request, serverParams) {\n if (Array.isArray(request)) {\n return this.receiveMultiple(request, serverParams);\n }\n else {\n return this.receiveSingle(request, serverParams);\n }\n };\n JSONRPCServer.prototype.receiveMultiple = function (requests, serverParams) {\n return __awaiter(this, void 0, void 0, function () {\n var responses;\n var _this = this;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, Promise.all(requests.map(function (request) { return _this.receiveSingle(request, serverParams); }))];\n case 1:\n responses = (_a.sent()).filter(isNonNull);\n if (responses.length === 1) {\n return [2 /*return*/, responses[0]];\n }\n else if (responses.length) {\n return [2 /*return*/, responses];\n }\n else {\n return [2 /*return*/, null];\n }\n return [2 /*return*/];\n }\n });\n });\n };\n JSONRPCServer.prototype.receiveSingle = function (request, serverParams) {\n return __awaiter(this, void 0, void 0, function () {\n var method, response;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n method = this.nameToMethodDictionary[request.method];\n if (!!(0, models_1.isJSONRPCRequest)(request)) return [3 /*break*/, 1];\n return [2 /*return*/, createInvalidRequestResponse(request)];\n case 1: return [4 /*yield*/, this.callMethod(method, request, serverParams)];\n case 2:\n response = _a.sent();\n return [2 /*return*/, mapResponse(request, response)];\n }\n });\n });\n };\n JSONRPCServer.prototype.applyMiddleware = function () {\n var middlewares = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n middlewares[_i] = arguments[_i];\n }\n if (this.middleware) {\n this.middleware = this.combineMiddlewares(__spreadArray([\n this.middleware\n ], middlewares, true));\n }\n else {\n this.middleware = this.combineMiddlewares(middlewares);\n }\n };\n JSONRPCServer.prototype.combineMiddlewares = function (middlewares) {\n if (!middlewares.length) {\n return null;\n }\n else {\n return middlewares.reduce(this.middlewareReducer);\n }\n };\n JSONRPCServer.prototype.middlewareReducer = function (prevMiddleware, nextMiddleware) {\n return function (next, request, serverParams) {\n return prevMiddleware(function (request, serverParams) { return nextMiddleware(next, request, serverParams); }, request, serverParams);\n };\n };\n JSONRPCServer.prototype.callMethod = function (method, request, serverParams) {\n var _this = this;\n var callMethod = function (request, serverParams) {\n if (method) {\n return method(request, serverParams);\n }\n else if (request.id !== undefined) {\n return Promise.resolve(createMethodNotFoundResponse(request.id));\n }\n else {\n return Promise.resolve(null);\n }\n };\n var onError = function (error) {\n _this.errorListener(\"An unexpected error occurred while executing \\\"\".concat(request.method, \"\\\" JSON-RPC method:\"), error);\n return Promise.resolve(_this.mapErrorToJSONRPCErrorResponseIfNecessary(request.id, error));\n };\n try {\n return (this.middleware || noopMiddleware)(callMethod, request, serverParams).then(undefined, onError);\n }\n catch (error) {\n return onError(error);\n }\n };\n JSONRPCServer.prototype.mapErrorToJSONRPCErrorResponseIfNecessary = function (id, error) {\n if (id !== undefined) {\n return this.mapErrorToJSONRPCErrorResponse(id, error);\n }\n else {\n return null;\n }\n };\n return JSONRPCServer;\n}());\nexports.JSONRPCServer = JSONRPCServer;\nvar isNonNull = function (value) { return value !== null; };\nvar noopMiddleware = function (next, request, serverParams) { return next(request, serverParams); };\nvar mapResultToJSONRPCResponse = function (id, result) {\n if (id !== undefined) {\n return (0, models_1.createJSONRPCSuccessResponse)(id, result);\n }\n else {\n return null;\n }\n};\nvar defaultMapErrorToJSONRPCErrorResponse = function (id, error) {\n var _a;\n var message = (_a = error === null || error === void 0 ? void 0 : error.message) !== null && _a !== void 0 ? _a : \"An unexpected error occurred\";\n var code = internal_1.DefaultErrorCode;\n var data;\n if (error instanceof models_1.JSONRPCErrorException) {\n code = error.code;\n data = error.data;\n }\n return (0, models_1.createJSONRPCErrorResponse)(id, code, message, data);\n};\nvar mapResponse = function (request, response) {\n if (response) {\n return response;\n }\n else if (request.id !== undefined) {\n return (0, models_1.createJSONRPCErrorResponse)(request.id, models_1.JSONRPCErrorCode.InternalError, \"Internal error\");\n }\n else {\n return null;\n }\n};\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","/** @ignore */\nexport var hiddenStyleList = \"\\n display: none !important;\\n width: 1px !important;\\n height: 1px !important;\\n position: fixed !important;\\n z-index: -99 !important;\\n bottom: 0px !important;\\n right: 0px !important;\\n\";\n/** @ignore */\nexport var protocol = 'aspera://';\n/** @ignore */\nexport var installerUrl = 'https://downloads.ibmaspera.com/downloads/desktop/latest/stable';\n","import { randomUUID } from '../helpers';\nimport { asperaSdk } from '../../index';\n/**\n * Enum defining different types of Safari extension events.\n */\nvar SafariExtensionEventType;\n(function (SafariExtensionEventType) {\n SafariExtensionEventType[\"Monitor\"] = \"Monitor\";\n SafariExtensionEventType[\"Ping\"] = \"Ping\";\n SafariExtensionEventType[\"Request\"] = \"Request\";\n})(SafariExtensionEventType || (SafariExtensionEventType = {}));\n/**\n * Global keep alive timeout to prevent recursion.\n */\nvar keepAliveTimeout;\n/**\n * Handles communication with the Safari extension using JSON-RPC over custom events.\n */\nvar SafariClient = /** @class */ (function () {\n /**\n * Initializes the SafariExtensionHandler instance.\n * Sets up the promise executor map and starts listening to extension events.\n */\n function SafariClient() {\n var _this = this;\n this.statusInterval = 100;\n this.keepAliveInterval = 1000;\n this.isFirstPing = true;\n this.lastPing = null;\n this.lastPong = null;\n this.safariExtensionEnabled = false;\n this.subscribedTransferActivity = false;\n /**\n * Sends a JSON-RPC request to the Safari extension.\n * @param method The method name to invoke on the extension.\n * @param payload Optional payload for the request.\n * @returns A Promise that resolves with the response from the extension.\n */\n this.request = function (method, payload) {\n if (payload === void 0) { payload = {}; }\n return _this.dispatchPromiseEvent(SafariExtensionEventType.Request, method, payload);\n };\n this.promiseExecutors = new Map();\n this.listenResponseEvents();\n this.listenTransferActivityEvents();\n this.listenStatusEvents();\n this.listenPongEvents();\n if (keepAliveTimeout) {\n clearTimeout(keepAliveTimeout);\n }\n this.keepAlive();\n }\n /**\n * Monitors transfer activity.\n * @returns A Promise that resolves with the response from the extension.\n */\n SafariClient.prototype.monitorTransferActivity = function () {\n var _this = this;\n var dispatchMonitorEvent = function () {\n var promise = _this.dispatchPromiseEvent(SafariExtensionEventType.Monitor, 'subscribe_transfer_activity', [asperaSdk.globals.appId]);\n return promise.then(function () {\n _this.subscribedTransferActivity = true;\n });\n };\n if (this.safariExtensionEnabled) {\n return dispatchMonitorEvent();\n }\n return new Promise(function (resolve, reject) {\n var extensionInterval = setInterval(function () {\n if (!_this.safariExtensionEnabled) {\n return;\n }\n dispatchMonitorEvent()\n .then(resolve)\n .catch(reject);\n clearInterval(extensionInterval);\n }, 1000);\n });\n };\n /**\n * Builds a JSON-RPC request object with a unique identifier.\n * @param method The method name to invoke on the extension.\n * @param payload Optional parameters for the method.\n * @returns The constructed JSON-RPC request object.\n */\n SafariClient.prototype.buildRPCRequest = function (method, payload) {\n return {\n jsonrpc: '2.0',\n method: method,\n params: payload,\n id: randomUUID()\n };\n };\n /**\n * Dispatches a custom event to the document to communicate with the Safari extension.\n * @param type The type of Safari extension event to dispatch.\n * @param request Optional JSON-RPC request payload to send with the event.\n */\n SafariClient.prototype.dispatchEvent = function (type, request) {\n var payload = {\n detail: request !== null && request !== void 0 ? request : {}\n };\n document.dispatchEvent(new CustomEvent(\"AsperaDesktop.\".concat(type), payload));\n };\n /**\n * Dispatches a custom event to the document to communicate with the Safari extension.\n * @param type The type of Safari extension event to dispatch.\n * @param method The method name to invoke on the extension.\n * @param payload Optional parameters for the method.\n */\n SafariClient.prototype.dispatchPromiseEvent = function (type, method, payload) {\n var _this = this;\n var request = this.buildRPCRequest(method, payload);\n return new Promise(function (resolve, reject) {\n if (_this.safariExtensionEnabled) {\n _this.promiseExecutors.set(request.id, { resolve: resolve, reject: reject });\n _this.dispatchEvent(type, request);\n }\n else {\n console.warn('The Safari extension is disabled or unresponsive (dispatch event)');\n console.warn(\"Failed event: \".concat(JSON.stringify(request)));\n reject('The Safari extension is disabled or unresponsive (dispatch event)');\n }\n });\n };\n /**\n * Handles incoming JSON-RPC responses from the Safari extension.\n * Resolves or rejects promises based on the response.\n * @param response The JSON-RPC response object received from the extension.\n */\n SafariClient.prototype.handleResponse = function (response) {\n var requestId = response.id;\n var executor = this.promiseExecutors.get(requestId);\n if (!executor) {\n console.warn(\"Unable to find a promise executor for \".concat(requestId));\n console.warn(\"Response: \".concat(response));\n return;\n }\n this.promiseExecutors.delete(requestId);\n if (response.error) {\n executor.reject(response.error);\n return;\n }\n executor.resolve(response.result);\n };\n /**\n * Listens for 'AsperaDesktop.Response' events.\n */\n SafariClient.prototype.listenResponseEvents = function () {\n var _this = this;\n document.addEventListener('AsperaDesktop.Response', function (event) {\n _this.handleResponse(event.detail);\n });\n };\n /**\n * Listens for 'AsperaDesktop.TransferActivity' events.\n */\n SafariClient.prototype.listenTransferActivityEvents = function () {\n document.addEventListener('AsperaDesktop.TransferActivity', function (event) {\n asperaSdk.activityTracking.handleTransferActivity(event.detail);\n });\n };\n /**\n * Listens for 'AsperaDesktop.Status' events.\n */\n SafariClient.prototype.listenStatusEvents = function () {\n document.addEventListener('AsperaDesktop.Status', function (event) {\n asperaSdk.activityTracking.handleWebSocketEvents(event.detail);\n });\n };\n /**\n * Listens for 'AsperaDesktop.Pong' events.\n */\n SafariClient.prototype.listenPongEvents = function () {\n var _this = this;\n document.addEventListener('AsperaDesktop.Pong', function () {\n _this.lastPong = Date.now();\n _this.safariExtensionStatusChanged(true);\n });\n };\n /**\n * Sends a keep alive ping according to the defined interval.\n */\n SafariClient.prototype.keepAlive = function () {\n var _this = this;\n this.lastPing = Date.now();\n this.dispatchEvent(SafariExtensionEventType.Ping);\n if (this.isFirstPing) {\n this.isFirstPing = false;\n }\n else {\n setTimeout(function () {\n _this.checkSafariExtensionStatus();\n }, this.statusInterval);\n }\n keepAliveTimeout = setTimeout(function () {\n _this.keepAlive();\n }, this.keepAliveInterval);\n };\n /**\n * Listens for Safari extension status changes.\n * If the extension was disabled and enabled again after initializing the SDK, it\n * will call 'monitorTransferActivity' to resume transfer activities.\n */\n SafariClient.prototype.safariExtensionStatusChanged = function (isEnabled) {\n var _this = this;\n if (isEnabled === this.safariExtensionEnabled) {\n return;\n }\n this.safariExtensionEnabled = isEnabled;\n if (isEnabled) {\n if (this.subscribedTransferActivity) {\n var resumeTransferActivity_1 = function () {\n _this.monitorTransferActivity()\n .catch(function () {\n console.error('Failed to resume transfer activity, will try again in 1s');\n setTimeout(function () {\n resumeTransferActivity_1();\n }, 1000);\n });\n };\n resumeTransferActivity_1();\n }\n }\n else {\n asperaSdk.activityTracking.handleWebSocketEvents('CLOSED');\n this.promiseExecutors.forEach(function (promiseExecutor) {\n promiseExecutor.reject('The Safari extension is disabled or unresponsive (extension status)');\n });\n this.promiseExecutors.clear();\n }\n asperaSdk.activityTracking.handleSafariExtensionEvents(this.safariExtensionEnabled ? 'ENABLED' : 'DISABLED');\n };\n /**\n * Checks if the last pong received was longer than the max interval.\n */\n SafariClient.prototype.checkSafariExtensionStatus = function () {\n var pingPongDiff = this.lastPong - this.lastPing;\n if (this.lastPong == null || pingPongDiff < 0 || pingPongDiff > 500) {\n this.safariExtensionStatusChanged(false);\n }\n };\n return SafariClient;\n}());\nexport { SafariClient };\nexport var safariClient = new SafariClient();\nexport default {\n safariClient: safariClient\n};\n","/** @ignore */\nexport var messages = {\n callbackIsNotFunction: 'The provided callback is not a function',\n dragDropInitFailed: 'Unable to initialize drag-drop',\n failedToGenerateIframe: 'Unable to generate IFRAME for download. Using new window',\n getInstallerError: 'Unable to get latest installers',\n getAllTransfersFailed: 'Unable to get all transfers',\n getTransferFailed: 'Unable to get transfer',\n invalidEndpoint: 'The specified endpoint is not a valid URL',\n loadingProtocol: 'Launching IBM Aspera for Desktop',\n modifyTransferFailed: 'Unable to modify transfer',\n notValidTransferSpec: 'The supplied transferSpec is not valid',\n removeTransferFailed: 'Unable to remove transfer',\n resumeTransferFailed: 'Unable to resume transfer',\n serverError: 'Unable to connect to IBM Aspera for Desktop server',\n serverNotVerified: 'IBM Aspera SDK has not been verified. Run test or init first',\n setBrandingFailed: 'Unable to set custom branding',\n showDirectoryFailed: 'Unable to show transfer directory',\n showSelectFileDialogFailed: 'Unable to show select file dialog',\n showSelectFolderDialogFailed: 'Unable to show select folder dialog',\n showPreferencesFailed: 'Unable to show preferences',\n stopTransferFailed: 'Unable to stop transfer',\n transferFailed: 'The transfer failed to initiate',\n unableToFindElementOnPage: 'Unable to find the element on the current page',\n unableToReadDropped: 'The dropped item could not be parsed. Please try selecting via the select file/folder option',\n websocketClosedError: 'The websocket was closed due to an error',\n websocketClosedUnexpect: 'The websocket was closed unexpectedly',\n websocketNotReady: 'The websocket is not ready. Run init first',\n};\n","/**\n * Generates promise object that can be resolved or rejected via functions\n *\n * @returns an object containing the promise, the resolver and rejecter\n */\nexport var generatePromiseObjects = function () {\n var resolver;\n var rejecter;\n var promise = new Promise(function (resolve, reject) {\n resolver = resolve;\n rejecter = reject;\n });\n return {\n promise: promise,\n resolver: resolver,\n rejecter: rejecter\n };\n};\n/**\n * Log errors from Aspera SDK\n *\n * @param message the message indicating the error encountered\n * @param debugData the data with useful debugging information\n */\nexport var errorLog = function (message, debugData) {\n if (debugData && debugData.code && debugData.message) {\n debugData = {\n code: debugData.code,\n message: debugData.message,\n data: debugData.data\n };\n }\n if (typeof window === 'object') {\n if (!Array.isArray(window.asperaSdkLogs)) {\n window.asperaSdkLogs = [];\n }\n window.asperaSdkLogs.push({ message: message, debugData: debugData });\n }\n console.warn(\"Aspera SDK: \".concat(message), debugData);\n};\n/**\n * Generate error object for rejecter responses\n *\n * @param message the message indicating the error encountered\n * @param debugData the data with useful debugging information\n *\n * @returns object containing standardized error response\n */\nexport var generateErrorBody = function (message, debugData) {\n var errorResponse = {\n error: true,\n message: message\n };\n if (debugData && debugData.code && debugData.message) {\n errorResponse.debugData = {\n code: debugData.code,\n message: debugData.message,\n data: debugData.data\n };\n }\n return errorResponse;\n};\n/**\n * Validate if transferSpec is valid for server communication\n *\n * @param transferSpec the transferSpec to test\n *\n * @returns boolean indicating whether supplied transferSpec is valid\n */\nexport var isValidTransferSpec = function (transferSpec) {\n if (transferSpec &&\n typeof transferSpec === 'object' &&\n typeof transferSpec.direction === 'string' &&\n typeof transferSpec.remote_host === 'string' &&\n Array.isArray(transferSpec.paths)) {\n return true;\n }\n return false;\n};\n/**\n * Returns a string indicating the websocket URL to use for talking to the server\n *\n * @returns a string of the full Websocket URL\n */\nexport var getWebsocketUrl = function (serverUrl) {\n var wsProtocol;\n if (serverUrl.indexOf('http:') === 0) {\n wsProtocol = 'ws';\n }\n else if (serverUrl.indexOf('https:') === 0) {\n wsProtocol = 'wss';\n }\n var url = serverUrl.replace('http://', '//').replace('https://', '//');\n return \"\".concat(wsProtocol, \":\").concat(url);\n};\n/**\n * Simple function to get the current platform.\n *\n * @returns a string indicating the current platform\n */\nexport var getCurrentPlatform = function () {\n var ua = navigator.userAgent;\n if (/Mac/.test(ua)) {\n return 'macos';\n }\n else if (/Win/.test(ua)) {\n return 'windows';\n }\n else if (/Linux/.test(ua)) {\n return 'linux';\n }\n else {\n return 'unknown';\n }\n};\n/**\n * Function used to create a random UUID\n *\n * @returns string\n */\nexport var randomUUID = function () {\n var _a;\n var fallback = function () {\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {\n var r = Number(((new Date().getTime() + 16) * Math.random()).toFixed()) % 16;\n if (c !== 'x') {\n // eslint-disable-next-line no-bitwise\n r = r & 0x3 | 0x8;\n }\n return r.toString(16);\n });\n };\n return ((_a = window.crypto) === null || _a === void 0 ? void 0 : _a.randomUUID) ? window.crypto.randomUUID() : fallback();\n};\n/**\n * Return a rejected promise\n *\n * @param message the message indicating the error encountered\n * @param debugData the data with useful debugging information\n *\n * @returns a rejected promise\n */\nexport var throwError = function (message, debugData) {\n errorLog(message, debugData);\n return new Promise(function (resolve, reject) {\n reject(generateErrorBody(message, debugData));\n });\n};\n/**\n * Check if the given string is a valid URL\n *\n * @param url string to check if valid URL\n *\n * @returns boolean\n */\nexport var isValidURL = function (url) {\n try {\n new URL(url);\n return true;\n }\n catch (error) {\n return false;\n }\n};\n/**\n * Checks if the current browser is Safari.\n * @returns {boolean} Whether the browser is Safari.\n */\nexport var isSafari = function () {\n // eslint-disable-next-line\n return /^((?!chrome|android).)*safari/i.test(navigator.userAgent) && !window.MSStream;\n};\nexport default {\n errorLog: errorLog,\n generateErrorBody: generateErrorBody,\n generatePromiseObjects: generatePromiseObjects,\n getCurrentPlatform: getCurrentPlatform,\n getWebsocketUrl: getWebsocketUrl,\n isSafari: isSafari,\n isValidURL: isValidURL,\n isValidTransferSpec: isValidTransferSpec,\n randomUUID: randomUUID,\n throwError: throwError,\n};\n","import { errorLog, generatePromiseObjects, getWebsocketUrl } from './helpers';\nimport { messages } from '../constants/messages';\nimport { asperaSdk } from '../index';\nvar WebsocketService = /** @class */ (function () {\n function WebsocketService() {\n var _this = this;\n /** A map of requested subscription names and the callback for them */\n this.sockets = new Map();\n /** Indicator if the websocket is already connected */\n this.isConnected = false;\n /** Global promise object that resolves when init completes */\n this.initPromise = generatePromiseObjects();\n /**\n * This function handles when a connection is opened\n */\n this.handleOpen = function () {\n if (_this.isConnected || !_this.joinChannel()) {\n return;\n }\n _this.isConnected = true;\n _this.updateRpcPort();\n _this.notifyEvent('RECONNECT');\n };\n /**\n * This function handles completed subscription\n */\n this.handleClose = function () {\n if (_this.isConnected) {\n _this.isConnected = false;\n _this.notifyEvent('CLOSED');\n }\n if (!_this.globalSocket) {\n _this.handleNotReady();\n return;\n }\n _this.reconnect();\n };\n /**\n * This function handles errors received from the websocket\n */\n this.handleError = function () {\n errorLog(messages.websocketClosedError);\n };\n /**\n * This function handles messages received from the websocket\n */\n this.handleMessage = function (message) {\n var data;\n try {\n data = JSON.parse(message.data);\n }\n catch (error) {\n errorLog('Unable to parse Websocket message', { error: error, message: message });\n }\n // Message we get on subscription\n if (data && data.id === 1) {\n _this.initPromise.resolver(data);\n return;\n }\n var socket = _this.sockets.get(data.method);\n if (socket && data.params) {\n socket(data.params);\n }\n };\n }\n /** Log call for not being ready */\n WebsocketService.prototype.handleNotReady = function () {\n errorLog(messages.websocketNotReady);\n };\n /**\n * This function joins the channel to be able to subscribe to events\n */\n WebsocketService.prototype.joinChannel = function () {\n if (!this.globalSocket) {\n this.handleNotReady();\n return false;\n }\n this.globalSocket.send(JSON.stringify({ jsonrpc: '2.0', method: 'subscribe_transfer_activity', params: [asperaSdk.globals.appId], id: 1 }));\n return true;\n };\n /**\n * This function registers clients to listen to a certain message name. Returns any to allow functions to declare proper type\n *\n * @param messageName - the name of messages to listen to (one message name per subscription)\n * @param callback - the callback function\n */\n WebsocketService.prototype.registerMessage = function (messageName, callback) {\n if (!this.sockets.get(messageName)) {\n this.sockets.set(messageName, function (data) {\n callback(data.result);\n });\n }\n };\n /**\n *\n * @param callback This function registers clients to a certain WebSocket event.\n *\n * @param callback - the callback function to call with the event name.\n */\n WebsocketService.prototype.registerEvent = function (callback) {\n this.eventListener = callback;\n this.eventListener(this.isConnected ? 'RECONNECT' : 'CLOSED');\n };\n /**\n * This function starts the websocket subscription with the websocket provider\n *\n * @returns a promise that resolves when the websocket connection is established\n */\n WebsocketService.prototype.init = function () {\n this.connect();\n return this.initPromise.promise;\n };\n WebsocketService.prototype.connect = function () {\n var _this = this;\n this.getWebSocketConnection(33024, 33029)\n .then(function (webSocket) {\n _this.globalSocket = webSocket;\n _this.globalSocket.onerror = _this.handleError;\n _this.globalSocket.onclose = _this.handleClose;\n _this.globalSocket.onopen = _this.handleOpen;\n _this.globalSocket.onmessage = _this.handleMessage;\n _this.handleOpen();\n }).catch(function () {\n _this.reconnect();\n });\n };\n WebsocketService.prototype.reconnect = function () {\n var _this = this;\n if (this.globalSocket) {\n this.globalSocket.close();\n }\n setTimeout(function () {\n _this.connect();\n }, 1000);\n };\n WebsocketService.prototype.getWebSocketConnection = function (startPort, endPort) {\n var webSocketUrl = getWebsocketUrl(asperaSdk.globals.asperaAppUrl);\n var checkPort = function (port) {\n return new Promise(function (resolve, reject) {\n var webSocket = new WebSocket(\"\".concat(webSocketUrl, \":\").concat(port));\n webSocket.onopen = function () {\n resolve(webSocket);\n };\n webSocket.onerror = function () {\n reject(\"Connection failed on port \".concat(port));\n };\n });\n };\n return new Promise(function (resolve, reject) {\n var connectPort = function (port) {\n if (port > endPort) {\n return reject('No available WebSocket connection found');\n }\n checkPort(port)\n .then(function (ws) { return resolve(ws); })\n .catch(function (error) {\n connectPort(port + 1);\n });\n };\n connectPort(startPort);\n });\n };\n WebsocketService.prototype.notifyEvent = function (event) {\n if (typeof this.eventListener === 'function') {\n this.eventListener(event);\n }\n };\n WebsocketService.prototype.updateRpcPort = function () {\n if (!this.globalSocket) {\n return;\n }\n var url = new URL(this.globalSocket.url);\n asperaSdk.globals.rpcPort = Number(url.port);\n };\n return WebsocketService;\n}());\nexport { WebsocketService };\nexport var websocketService = new WebsocketService();\nexport default WebsocketService;\n","import { hiddenStyleList, installerUrl, protocol } from '../constants/constants';\nimport { messages } from '../constants/messages';\nimport { safariClient } from '../helpers/client/safari-client';\nimport { errorLog, isSafari } from '../helpers/helpers';\nimport { websocketService } from '../helpers/ws';\nimport { asperaSdk } from '../index';\nvar AsperaSdkGlobals = /** @class */ (function () {\n function AsperaSdkGlobals() {\n /** The URL of the IBM Aspera HTTP server to use with the SDK */\n this.asperaAppUrl = 'http://127.0.0.1';\n /** The URL of the IBM Aspera Desktop HTTP server to use with the SDK */\n this.rpcPort = 33024;\n /** The default URL to check for latest Aspera installers */\n this.installerUrl = installerUrl;\n /** Indication that the server has been verified as working */\n this.asperaAppVerified = false;\n /** Map of drop zones created by querySelector */\n this.dropZonesCreated = new Map();\n }\n AsperaSdkGlobals.prototype.backupLaunchMethod = function (url) {\n window.alert(messages.loadingProtocol);\n window.location.href = url;\n };\n /**\n * Launch the IBM Aspera App via protocol url. By default, a hidden IFRAME attempts to\n * open the app but if that fails a fallback of opening a new window happens.\n */\n AsperaSdkGlobals.prototype.launch = function () {\n var _this = this;\n try {\n var element = document.createElement('iframe');\n element.src = protocol;\n element.onerror = function (error) {\n errorLog(messages.failedToGenerateIframe, error);\n _this.backupLaunchMethod(protocol);\n };\n element.setAttribute('style', hiddenStyleList);\n document.body.appendChild(element);\n }\n catch (error) {\n errorLog(messages.failedToGenerateIframe, error);\n this.backupLaunchMethod(protocol);\n }\n };\n return AsperaSdkGlobals;\n}());\nvar AsperaSdkInfo = /** @class */ (function () {\n function AsperaSdkInfo() {\n }\n return AsperaSdkInfo;\n}());\nexport { AsperaSdkInfo };\nvar TransferResponse = /** @class */ (function () {\n function TransferResponse() {\n }\n return TransferResponse;\n}());\nexport { TransferResponse };\nvar ActivityMessage = /** @class */ (function () {\n function ActivityMessage() {\n }\n return ActivityMessage;\n}());\nexport { ActivityMessage };\nvar ActivityTracking = /** @class */ (function () {\n function ActivityTracking() {\n /** Map of callbacks that receive transfer update events */\n this.activity_callbacks = new Map();\n /** Map of callbacks that received removed transfer events */\n this.removed_callbacks = new Map();\n /** Map of callbacks that receive connection events */\n this.event_callbacks = new Map();\n /** Map of callbacks that receive Safari extension events */\n this.safari_extension_callbacks = new Map();\n /** Keep track of the last WebSocket event **/\n this.lastWebSocketEvent = 'CLOSED';\n /** Keep track of the last Safari extension event **/\n this.lastSafariExtensionEvent = 'DISABLED';\n }\n /**\n * Notify all consumers when a message is received from the websocket\n *\n * @param message the message received from the websocket\n */\n ActivityTracking.prototype.handleTransferActivity = function (message) {\n if (message.type === 'transferUpdated') {\n this.activity_callbacks.forEach(function (callback) {\n if (typeof callback === 'function') {\n callback(message.data);\n }\n });\n }\n if (message.type === 'transferRemoved') {\n this.removed_callbacks.forEach(function (callback) {\n if (typeof callback === 'function') {\n callback(message.data);\n }\n });\n }\n };\n /**\n * Notify all consumers when a connection webSocketEvent occurs. For example, when the SDK\n * websocket connection to IBM Aspera App is closed or reconnected.\n *\n * @param webSocketEvent the event type.\n */\n ActivityTracking.prototype.handleWebSocketEvents = function (webSocketEvent) {\n if (this.lastWebSocketEvent === webSocketEvent) {\n return;\n }\n this.event_callbacks.forEach(function (callback) {\n if (typeof callback === 'function') {\n callback(webSocketEvent);\n }\n });\n this.lastWebSocketEvent = webSocketEvent;\n };\n /**\n * Notify all consumers when a Safari extension safariExtensionEvent occurs (enabled/disabled).\n *\n * @param safariExtensionEvent the event type.\n */\n ActivityTracking.prototype.handleSafariExtensionEvents = function (safariExtensionEvent) {\n if (this.lastSafariExtensionEvent === safariExtensionEvent) {\n return;\n }\n this.safari_extension_callbacks.forEach(function (callback) {\n if (typeof callback === 'function') {\n callback(safariExtensionEvent);\n }\n });\n this.lastSafariExtensionEvent = safariExtensionEvent;\n };\n /**\n * Set up the activity tracking with IBM Aspera.\n *\n * @returns a promise that resolves when the websocket connection is established.\n * Currently, this promise does not reject.\n */\n ActivityTracking.prototype.setup = function () {\n var _this = this;\n if (asperaSdk.globals.sessionId) {\n this.registerDesktopAppSession();\n }\n if (isSafari()) {\n return safariClient.monitorTransferActivity();\n }\n return websocketService.init()\n .then(function () {\n websocketService.registerMessage('transfer_activity', function (data) { return _this.handleTransferActivity(data); });\n websocketService.registerEvent(function (status) { return _this.handleWebSocketEvents(status); });\n });\n };\n /**\n * Register a callback for getting transfers back to the consumer\n *\n * @param callback the function to call with the array of transfers\n *\n * @returns the ID of the callback index\n */\n ActivityTracking.prototype.setCallback = function (callback) {\n if (typeof callback !== 'function') {\n errorLog(messages.callbackIsNotFunction);\n return;\n }\n var id = \"callback-\".concat(this.activity_callbacks.size + 1);\n this.activity_callbacks.set(id, callback);\n return id;\n };\n /**\n * Remove the callback (deregister) from the list of callbacks\n *\n * @param id the string of the callback to remove\n */\n ActivityTracking.prototype.removeCallback = function (id) {\n this.activity_callbacks.delete(id);\n };\n /**\n * Register a callback for getting transfers back to the consumer\n *\n * @param callback the function to call with the array of transfers\n *\n * @returns the ID of the callback index\n */\n ActivityTracking.prototype.setRemovedCallback = function (callback) {\n if (typeof callback !== 'function') {\n errorLog(messages.callbackIsNotFunction);\n return;\n }\n var id = \"callback-\".concat(this.removed_callbacks.size + 1);\n this.removed_callbacks.set(id, callback);\n return id;\n };\n /**\n * Remove the callback (deregister) from the list of callbacks\n *\n * @param id the string of the callback to remove\n */\n ActivityTracking.prototype.removeRemovedCallback = function (id) {\n this.removed_callbacks.delete(id);\n };\n /**\n * Register a callback for getting websocket events back to the consumer\n *\n * @param callback the function to call with the websocket event\n *\n * @returns the ID of the callback index\n */\n ActivityTracking.prototype.setWebSocketEventCallback = function (callback) {\n if (typeof callback !== 'function') {\n errorLog(messages.callbackIsNotFunction);\n return;\n }\n var id = \"callback-\".concat(this.event_callbacks.size + 1);\n this.event_callbacks.set(id, callback);\n callback(this.lastWebSocketEvent);\n return id;\n };\n /**\n * Remove the callback (deregister) from the list of callbacks\n *\n * @param id the string of the callback to remove\n */\n ActivityTracking.prototype.removeWebSocketEventCallback = function (id) {\n this.event_callbacks.delete(id);\n };\n /**\n * Register a callback for getting Safari extension events back to the consumer\n *\n * @param callback the function to call with the websocket event\n *\n * @returns the ID of the callback index\n */\n ActivityTracking.prototype.setSafariExtensionEventCallback = function (callback) {\n if (typeof callback !== 'function') {\n errorLog(messages.callbackIsNotFunction);\n return;\n }\n var id = \"callback-\".concat(this.safari_extension_callbacks.size + 1);\n this.safari_extension_callbacks.set(id, callback);\n callback(this.lastSafariExtensionEvent);\n return id;\n };\n /**\n * Remove the callback (deregister) from the list of callbacks\n *\n * @param id the string of the callback to remove\n */\n ActivityTracking.prototype.removeSafariExtensionEventCallback = function (id) {\n this.safari_extension_callbacks.delete(id);\n };\n ActivityTracking.prototype.registerDesktopAppSession = function () {\n var iframe = document.createElement('iframe');\n iframe.style.display = 'none';\n iframe.src = \"aspera://initialize?app_id=\".concat(asperaSdk.globals.appId, \"&session_id=\").concat(asperaSdk.globals.sessionId);\n document.body.appendChild(iframe);\n setTimeout(function () {\n document.body.removeChild(iframe);\n }, 1000);\n };\n return ActivityTracking;\n}());\nexport { ActivityTracking };\nvar AsperaSdk = /** @class */ (function () {\n function AsperaSdk() {\n /** Global information about IBM Aspera */\n this.globals = new AsperaSdkGlobals();\n /** Activity tracking for watching transfers */\n this.activityTracking = new ActivityTracking();\n }\n Object.defineProperty(AsperaSdk.prototype, \"isReady\", {\n /**\n * Check if IBM Aspera is ready to be used and has been verified.\n *\n * @returns a boolean indicating if SDK can be used for requests\n */\n get: function () {\n return this.globals.asperaAppVerified && this.globals.appId !== '';\n },\n enumerable: false,\n configurable: true\n });\n return AsperaSdk;\n}());\nexport { AsperaSdk };\n","import { JSONRPCClient } from 'json-rpc-2.0';\nimport { generatePromiseObjects } from '../helpers';\nimport { asperaSdk } from '../../index';\nexport var getRpcServerUrl = function () {\n return \"\".concat(asperaSdk.globals.asperaAppUrl, \":\").concat(asperaSdk.globals.rpcPort);\n};\n/**\n * Wraps a promise like object and returns a promise that supports catch.\n *\n * @param promise the HTTP promise like to wrap\n *\n * @returns promise for the HTTP connection with catch supporting error\n */\nexport var handlePromiseLikeErrors = function (promise) {\n var promiseInfo = generatePromiseObjects();\n promise.then(function (response) {\n promiseInfo.resolver(response);\n }, function (error) {\n promiseInfo.rejecter(error);\n });\n return promiseInfo.promise;\n};\n/**\n * JSON RPC client using HTTP (fetch) as transport.\n */\nvar JSONRPCHttpClient = /** @class */ (function () {\n function JSONRPCHttpClient() {\n var _this = this;\n /**\n * Request handler for the JSON-RPC client. This function is called by the JSON-RPC library\n * after forming the RPC request.\n *\n * @param request JSON-RPC request to send to the server\n */\n this.handleRequest = function (request) {\n var options = {\n method: 'POST',\n headers: {\n 'content-type': 'application/json',\n },\n body: JSON.stringify(request),\n };\n var rpcServerURL = getRpcServerUrl();\n return fetch(rpcServerURL, options).then(function (response) {\n if (response.ok) {\n return response.json().then(function (rpcResponse) { return _this.client.receive(rpcResponse); });\n }\n else if (request.id !== undefined) {\n throw Promise.reject(response.statusText);\n }\n });\n };\n this.request = function (method, data) {\n return _this.client.request(method, data);\n };\n this.client = new JSONRPCClient(this.handleRequest);\n }\n return JSONRPCHttpClient;\n}());\n/**\n * Client used for making requests to Aspera.\n */\nvar HttpClient = /** @class */ (function () {\n function HttpClient() {\n var _this = this;\n this.request = function (method, payload) {\n if (payload === void 0) { payload = {}; }\n return handlePromiseLikeErrors(_this.httpClient.request(method, payload));\n };\n this.httpClient = new JSONRPCHttpClient();\n }\n ;\n return HttpClient;\n}());\nexport var httpClient = new HttpClient();\nexport default {\n httpClient: httpClient,\n handlePromiseLikeErrors: handlePromiseLikeErrors,\n};\n","import { httpClient } from './http-client';\nimport { safariClient } from './safari-client';\nimport { isSafari } from '../helpers';\nexport var client = isSafari() ? safariClient : httpClient;\n","import { messages } from '../constants/messages';\nimport { client } from '../helpers/client/client';\nimport { errorLog, generateErrorBody, generatePromiseObjects, isValidTransferSpec, randomUUID, throwError } from '../helpers/helpers';\nimport { asperaSdk } from '../index';\n/**\n * Check if IBM Aspera for Desktop connection works. This function is called by init\n * when initializing the SDK. This function can be used at any point for checking.\n *\n * @returns a promise that resolves if server can connect or rejects if not\n */\nexport var testConnection = function () {\n return client.request('get_info')\n .then(function (data) {\n asperaSdk.globals.AsperaSdkInfo = data;\n asperaSdk.globals.asperaAppVerified = true;\n return data;\n });\n};\n/**\n * Initialize drag and drop.\n *\n * @returns a promise that resolves if the initialization was successful or not\n */\nexport var initDragDrop = function () {\n if (!asperaSdk.isReady) {\n return throwError(messages.serverNotVerified);\n }\n var promiseInfo = generatePromiseObjects();\n client.request('init_drag_drop')\n .then(function (data) { return promiseInfo.resolver(data); })\n .catch(function (error) {\n errorLog(messages.dragDropInitFailed, error);\n promiseInfo.rejecter(generateErrorBody(messages.dragDropInitFailed, error));\n });\n return promiseInfo.promise;\n};\n/**\n * Initialize IBM Aspera client. If client cannot (reject/catch), then\n * client should attempt fixing server URL or trying again. If still fails disable UI elements.\n *\n * @param options initialization options:\n *\n * - `appId` the unique ID for the website. Transfers initiated during this session\n * will be associated with this ID. It is recommended to use a unique ID to keep transfer\n * information private from other websites.\n *\n * - `supportMultipleUsers` when enabled (defaults to false), the SDK will iterate over a port\n * range and generate a session id to determine the running instance of the desktop app for the\n * current user. This is needed when multiple users may be logged into the same machine\n * simultaneously, for example on a Windows Server.\n *\n * @returns a promise that resolves if IBM Aspera Desktop is running properly or\n * rejects if unable to connect\n */\nexport var init = function (options) {\n var _a, _b;\n var appId = (_a = options === null || options === void 0 ? void 0 : options.appId) !== null && _a !== void 0 ? _a : randomUUID();\n var supportMultipleUsers = (_b = options === null || options === void 0 ? void 0 : options.supportMultipleUsers) !== null && _b !== void 0 ? _b : false;\n asperaSdk.globals.appId = appId;\n if (supportMultipleUsers) {\n asperaSdk.globals.sessionId = randomUUID();\n }\n return asperaSdk.activityTracking.setup()\n .then(function () { return testConnection(); })\n .then(function () { return initDragDrop(); })\n .catch(function (error) {\n errorLog(messages.serverError, error);\n asperaSdk.globals.asperaAppVerified = false;\n throw generateErrorBody(messages.serverError, error);\n });\n};\n/**\n * Start a transfer\n *\n * @param transferSpec standard transferSpec for transfer\n * @param asperaSdkSpec IBM Aspera settings when starting a transfer\n *\n * @returns a promise that resolves if transfer initiation is successful and rejects if transfer cannot be started\n */\nexport var startTransfer = function (transferSpec, asperaSdkSpec) {\n if (!asperaSdk.isReady) {\n return throwError(messages.serverNotVerified);\n }\n if (!isValidTransferSpec(transferSpec)) {\n return throwError(messages.notValidTransferSpec, { transferSpec: transferSpec });\n }\n var promiseInfo = generatePromiseObjects();\n var payload = {\n transfer_spec: transferSpec,\n desktop_spec: asperaSdkSpec,\n app_id: asperaSdk.globals.appId,\n };\n client.request('start_transfer', payload)\n .then(function (data) { return promiseInfo.resolver(data); })\n .catch(function (error) {\n errorLog(messages.transferFailed, error);\n promiseInfo.rejecter(generateErrorBody(messages.transferFailed, error));\n });\n return promiseInfo.promise;\n};\n/**\n * Register a callback event for getting transfer updates\n *\n * @param callback callback function to receive transfers\n *\n * @returns ID representing the callback for deregistration purposes\n */\nexport var registerActivityCallback = function (callback) {\n return asperaSdk.activityTracking.setCallback(callback);\n};\n/**\n * Remove a callback from the transfer callback\n *\n * @param id the ID returned by `registerActivityCallback`\n */\nexport var deregisterActivityCallback = function (id) {\n asperaSdk.activityTracking.removeCallback(id);\n};\n/**\n * Register a callback event for when a user removes or cancels a transfer\n * directly from IBM Aspera. This may also be called if IBM Aspera\n * is configured to automatically remove completed transfers.\n *\n * @param callback callback function to receive transfers\n *\n * @returns ID representing the callback for deregistration purposes\n */\nexport var registerRemovedCallback = function (callback) {\n return asperaSdk.activityTracking.setRemovedCallback(callback);\n};\n/**\n * Remove a callback from the removed transfer callback\n *\n * @param id the ID returned by `registerRemovedCallback`\n */\nexport var deregisterRemovedCallback = function (id) {\n asperaSdk.activityTracking.removeRemovedCallback(id);\n};\n/**\n * Register a callback for getting updates about the connection status of IBM Aspera SDK.\n *\n * For example, to be notified of when the SDK loses connection with the application or connection\n * is re-established. This can be useful if you want to handle the case where the user quits IBM Aspera\n * after `init` has already been called, and want to prompt the user to relaunch the application.\n *\n * @param callback callback function to receive events\n *\n * @returns ID representing the callback for deregistration purposes\n */\nexport var registerStatusCallback = function (callback) {\n return asperaSdk.activityTracking.setWebSocketEventCallback(callback);\n};\n/**\n * Remove a callback from getting connection status events.\n *\n * @param id the ID returned by `registerStatusCallback`\n */\nexport var deregisterStatusCallback = function (id) {\n asperaSdk.activityTracking.removeWebSocketEventCallback(id);\n};\n/**\n * Register a callback for getting updates about the Safari extension status.\n *\n * This can be useful if you want to handle the case where the user enable or disable the Safari extension.\n *\n * @param callback callback function to receive events\n *\n * @returns ID representing the callback for deregistration purposes\n */\nexport var registerSafariExtensionStatusCallback = function (callback) {\n return asperaSdk.activityTracking.setSafariExtensionEventCallback(callback);\n};\n/**\n * Remove a callback from getting Safari extension status events.\n *\n * @param id the ID returned by `registerStatusCallback`\n */\nexport var deregisterSafariExtensionStatusCallback = function (id) {\n asperaSdk.activityTracking.removeSafariExtensionEventCallback(id);\n};\n/**\n * Remove a transfer. This will stop the transfer if it is in progress.\n *\n * @param id transfer uuid\n *\n * @returns a promise that resolves if transfer is removed and rejects if transfer cannot be removed\n */\nexport var removeTransfer = function (id) {\n if (!asperaSdk.isReady) {\n return throwError(messages.serverNotVerified);\n }\n var promiseInfo = generatePromiseObjects();\n var payload = {\n transfer_id: id,\n };\n client.request('remove_transfer', payload)\n .then(function (data) { return promiseInfo.resolver(data); })\n .catch(function (error) {\n errorLog(messages.removeTransferFailed, error);\n promiseInfo.rejecter(generateErrorBody(messages.removeTransferFailed, error));\n });\n return promiseInfo.promise;\n};\n/**\n * Stop a transfer.\n *\n * @param id transfer uuid\n *\n * @returns a promise that resolves if transfer is stopped and rejects if transfer cannot be stopped\n */\nexport var stopTransfer = function (id) {\n if (!asperaSdk.isReady) {\n return throwError(messages.serverNotVerified);\n }\n var promiseInfo = generatePromiseObjects();\n var payload = {\n transfer_id: id,\n };\n client.request('stop_transfer', payload)\n .then(function (data) { return promiseInfo.resolver(data); })\n .catch(function (error) {\n errorLog(messages.stopTransferFailed, error);\n promiseInfo.rejecter(generateErrorBody(messages.stopTransferFailed, error));\n });\n return promiseInfo.promise;\n};\n/**\n * Resume a paused or failed transfer.\n *\n * @param id transfer uuid\n * @param options resume transfer options\n *\n * @returns a promise that resolves with the new transfer object if transfer is resumed\n */\nexport var resumeTransfer = function (id, options) {\n if (!asperaSdk.isReady) {\n return throwError(messages.serverNotVerified);\n }\n var promiseInfo = generatePromiseObjects();\n var payload = {\n transfer_id: id,\n transfer_spec: options,\n };\n client.request('resume_transfer', payload)\n .then(function (data) { return promiseInfo.resolver(data); })\n .catch(function (error) {\n errorLog(messages.resumeTransferFailed, error);\n promiseInfo.rejecter(generateErrorBody(messages.resumeTransferFailed, error));\n });\n return promiseInfo.promise;\n};\n/**\n * Displays a file browser dialog for the user to select files.\n *\n * @param options file dialog options\n *\n * @returns a promise that resolves with the selected file(s) and rejects if user cancels dialog\n */\nexport var showSelectFileDialog = function (options) {\n if (!asperaSdk.isReady) {\n return throwError(messages.serverNotVerified);\n }\n var promiseInfo = generatePromiseObjects();\n var payload = {\n options: options || {},\n app_id: asperaSdk.globals.appId,\n };\n client.request('show_file_dialog', payload)\n .then(function (data) { return promiseInfo.resolver(data); })\n .catch(function (error) {\n errorLog(messages.showSelectFileDialogFailed, error);\n promiseInfo.rejecter(generateErrorBody(messages.showSelectFileDialogFailed, error));\n });\n return promiseInfo.promise;\n};\n/**\n * Displays a folder browser dialog for the user to select folders.\n *\n * @param options folder dialog options\n *\n * @returns a promise that resolves with the selected folder(s) and rejects if user cancels dialog\n */\nexport var showSelectFolderDialog = function (options) {\n if (!asperaSdk.isReady) {\n return throwError(messages.serverNotVerified);\n }\n var promiseInfo = generatePromiseObjects();\n var payload = {\n options: options || {},\n app_id: asperaSdk.globals.appId,\n };\n client.request('show_folder_dialog', payload)\n .then(function (data) { return promiseInfo.resolver(data); })\n .catch(function (error) {\n errorLog(messages.showSelectFolderDialogFailed, error);\n promiseInfo.rejecter(generateErrorBody(messages.showSelectFolderDialogFailed, error));\n });\n return promiseInfo.promise;\n};\n/**\n * Opens the IBM Aspera preferences page.\n *\n * @returns a promise that resolves when the preferences page is opened.\n */\nexport var showPreferences = function () {\n if (!asperaSdk.isReady) {\n return throwError(messages.serverNotVerified);\n }\n var promiseInfo = generatePromiseObjects();\n client.request('open_preferences')\n .then(function (data) { return promiseInfo.resolver(data); })\n .catch(function (error) {\n errorLog(messages.showPreferencesFailed, error);\n promiseInfo.rejecter(generateErrorBody(messages.showPreferencesFailed, error));\n });\n return promiseInfo.promise;\n};\n/**\n * Get all transfers associated with the current application.\n *\n * @returns a promise that resolves with an array of transfers.\n */\nexport var getAllTransfers = function () {\n if (!asperaSdk.isReady) {\n return throwError(messages.serverNotVerified);\n }\n var promiseInfo = generatePromiseObjects();\n var payload = {\n app_id: asperaSdk.globals.appId,\n };\n client.request('get_all_transfers', payload)\n .then(function (data) { return promiseInfo.resolver(data); })\n .catch(function (error) {\n errorLog(messages.getAllTransfersFailed, error);\n promiseInfo.rejecter(generateErrorBody(messages.getAllTransfersFailed, error));\n });\n return promiseInfo.promise;\n};\n/**\n * Get a specific transfer by ID.\n *\n * @param id transfer uuid\n *\n * @returns a promise that resolves with the transfer.\n */\nexport var getTransfer = function (id) {\n if (!asperaSdk.isReady) {\n return throwError(messages.serverNotVerified);\n }\n var promiseInfo = generatePromiseObjects();\n var payload = {\n transfer_id: id,\n };\n client.request('get_transfer', payload)\n .then(function (data) { return promiseInfo.resolver(data); })\n .catch(function (error) {\n errorLog(messages.getTransferFailed, error);\n promiseInfo.rejecter(generateErrorBody(messages.getTransferFailed, error));\n });\n return promiseInfo.promise;\n};\n/**\n * Opens and highlights the downloaded file in Finder or Windows Explorer. If multiple files,\n * then only the first file will be selected.\n *\n * @param id transfer uuid\n *\n * @returns a promise that resolves if the file can be shown and rejects if not\n */\nexport var showDirectory = function (id) {\n if (!asperaSdk.isReady) {\n return throwError(messages.serverNotVerified);\n }\n var promiseInfo = generatePromiseObjects();\n var payload = {\n transfer_id: id,\n };\n client.request('show_directory', payload)\n .then(function (data) { return promiseInfo.resolver(data); })\n .catch(function (error) {\n errorLog(messages.showDirectoryFailed, error);\n promiseInfo.rejecter(generateErrorBody(messages.showDirectoryFailed, error));\n });\n return promiseInfo.promise;\n};\n/**\n * Modify the speed of a running transfer.\n *\n * @param id transfer uuid\n * @param options transfer rate options\n *\n * @returns a promise that resolves if the transfer rate can be modified and rejects if not\n */\nexport var modifyTransfer = function (id, options) {\n if (!asperaSdk.isReady) {\n return throwError(messages.serverNotVerified);\n }\n var promiseInfo = generatePromiseObjects();\n var payload = {\n transfer_id: id,\n transfer_spec: options,\n };\n client.request('modify_transfer', payload)\n .then(function (data) { return promiseInfo.resolver(data); })\n .catch(function (error) {\n errorLog(messages.modifyTransferFailed, error);\n promiseInfo.rejecter(generateErrorBody(messages.modifyTransferFailed, error));\n });\n return promiseInfo.promise;\n};\n/**\n * Set the custom branding template to be used by IBM Aspera. If the app is already\n * configured to use a different branding, then the branding template you specify will be\n * stored by the app, allowing the end user to switch at any point.\n *\n * @param id custom branding template id. This should be consistent across page loads.\n * @param options custom branding options\n *\n * @returns a promise that resolves if the branding was properly set.\n */\nexport var setBranding = function (id, options) {\n if (!asperaSdk.isReady) {\n return throwError(messages.serverNotVerified);\n }\n var promiseInfo = generatePromiseObjects();\n var branding = {\n id: id,\n name: options.name,\n theme: options.theme,\n };\n var payload = {\n branding: branding,\n };\n client.request('update_branding', payload)\n .then(function (data) { return promiseInfo.resolver(data); })\n .catch(function (error) {\n errorLog(messages.setBrandingFailed, error);\n promiseInfo.rejecter(generateErrorBody(messages.setBrandingFailed, error));\n });\n return promiseInfo.promise;\n};\n/**\n * Create a dropzone for the given element selector.\n *\n * @param callback the function to call once the files are dropped\n * @param elementSelector the selector of the element on the page that should watch for drop events\n */\nexport var createDropzone = function (callback, elementSelector) {\n var elements = document.querySelectorAll(elementSelector);\n if (!elements || !elements.length) {\n errorLog(messages.unableToFindElementOnPage);\n return;\n }\n var dragEvent = function (event) {\n event.preventDefault();\n };\n var dropEvent = function (event) {\n event.preventDefault();\n var files = [];\n if (event.dataTransfer && event.dataTransfer.files && event.dataTransfer.files.length && event.dataTransfer.files[0]) {\n for (var i = 0; i < event.dataTransfer.files.length; i++) {\n var file = event.dataTransfer.files[i];\n files.push({\n lastModified: file.lastModified,\n name: file.name,\n size: file.size,\n type: file.type\n });\n }\n var payload = {\n files: files,\n app_id: asperaSdk.globals.appId,\n };\n client.request('dropped_files', payload)\n .then(function (data) { return callback({ event: event, files: data }); })\n .catch(function (error) {\n errorLog(messages.unableToReadDropped, error);\n });\n }\n };\n elements.forEach(function (element) {\n element.addEventListener('dragover', dragEvent);\n element.addEventListener('drop', dropEvent);\n asperaSdk.globals.dropZonesCreated.set(elementSelector, [{ event: 'dragover', callback: dragEvent }, { event: 'drop', callback: dropEvent }]);\n });\n};\n/**\n * Remove dropzone.\n *\n * @param elementSelector the selector of the element on the page that should remove\n */\nexport var removeDropzone = function (elementSelector) {\n var foundDropzone = asperaSdk.globals.dropZonesCreated.get(elementSelector);\n if (foundDropzone) {\n foundDropzone.forEach(function (data) {\n var elements = document.querySelectorAll(elementSelector);\n if (elements && elements.length) {\n elements.forEach(function (element) {\n element.removeEventListener(data.event, data.callback);\n });\n }\n });\n }\n};\n/**\n * Get metadata about the IBM Aspera installation.\n *\n * @returns a promise that returns information about the user's IBM Aspera installation.\n */\nexport var getInfo = function () {\n if (!asperaSdk.isReady) {\n return throwError(messages.serverNotVerified);\n }\n return new Promise(function (resolve, _) {\n resolve(asperaSdk.globals.AsperaSdkInfo);\n });\n};\n","import { AsperaSdk } from './models/aspera-sdk.model';\nimport { createDropzone, deregisterActivityCallback, deregisterRemovedCallback, deregisterSafariExtensionStatusCallback, deregisterStatusCallback, getAllTransfers, getInfo, getTransfer, init, initDragDrop, modifyTransfer, registerActivityCallback, registerRemovedCallback, registerSafariExtensionStatusCallback, registerStatusCallback, removeDropzone, removeTransfer, resumeTransfer, setBranding, showDirectory, showPreferences, showSelectFileDialog, showSelectFolderDialog, startTransfer, stopTransfer, testConnection, } from './app/core';\nimport { getInstallerInfo } from './app/installer';\nimport { isSafari } from './helpers/helpers';\nexport var asperaSdk = new AsperaSdk();\nasperaSdk.init = init;\nasperaSdk.testConnection = testConnection;\nasperaSdk.startTransfer = startTransfer;\nasperaSdk.registerActivityCallback = registerActivityCallback;\nasperaSdk.deregisterActivityCallback = deregisterActivityCallback;\nasperaSdk.removeTransfer = removeTransfer;\nasperaSdk.showDirectory = showDirectory;\nasperaSdk.stopTransfer = stopTransfer;\nasperaSdk.resumeTransfer = resumeTransfer;\nasperaSdk.getAllTransfers = getAllTransfers;\nasperaSdk.getTransfer = getTransfer;\nasperaSdk.registerRemovedCallback = registerRemovedCallback;\nasperaSdk.deregisterRemovedCallback = deregisterRemovedCallback;\nasperaSdk.showSelectFileDialog = showSelectFileDialog;\nasperaSdk.showSelectFolderDialog = showSelectFolderDialog;\nasperaSdk.showPreferences = showPreferences;\nasperaSdk.modifyTransfer = modifyTransfer;\nasperaSdk.createDropzone = createDropzone;\nasperaSdk.removeDropzone = removeDropzone;\nasperaSdk.getInstallerInfo = getInstallerInfo;\nasperaSdk.registerStatusCallback = registerStatusCallback;\nasperaSdk.deregisterStatusCallback = deregisterStatusCallback;\nasperaSdk.registerSafariExtensionStatusCallback = registerSafariExtensionStatusCallback;\nasperaSdk.deregisterSafariExtensionStatusCallback = deregisterSafariExtensionStatusCallback;\nasperaSdk.initDragDrop = initDragDrop;\nasperaSdk.setBranding = setBranding;\nasperaSdk.getInfo = getInfo;\nasperaSdk.isSafari = isSafari;\nvar launch = asperaSdk.globals.launch;\nasperaSdk.launch = launch;\nif (typeof window === 'object') {\n window.asperaSdk = asperaSdk;\n}\nexport { isSafari, init, testConnection, startTransfer, launch, registerActivityCallback, deregisterActivityCallback, removeTransfer, showDirectory, stopTransfer, resumeTransfer, getAllTransfers, getTransfer, registerRemovedCallback, deregisterRemovedCallback, showSelectFileDialog, showSelectFolderDialog, showPreferences, modifyTransfer, createDropzone, removeDropzone, getInstallerInfo, registerStatusCallback, deregisterStatusCallback, registerSafariExtensionStatusCallback, deregisterSafariExtensionStatusCallback, setBranding, getInfo, };\nexport default {\n isSafari: isSafari,\n init: init,\n testConnection: testConnection,\n startTransfer: startTransfer,\n launch: launch,\n registerActivityCallback: registerActivityCallback,\n deregisterActivityCallback: deregisterActivityCallback,\n removeTransfer: removeTransfer,\n showDirectory: showDirectory,\n stopTransfer: stopTransfer,\n resumeTransfer: resumeTransfer,\n getAllTransfers: getAllTransfers,\n getTransfer: getTransfer,\n registerRemovedCallback: registerRemovedCallback,\n deregisterRemovedCallback: deregisterRemovedCallback,\n showSelectFileDialog: showSelectFileDialog,\n showSelectFolderDialog: showSelectFolderDialog,\n showPreferences: showPreferences,\n modifyTransfer: modifyTransfer,\n createDropzone: createDropzone,\n removeDropzone: removeDropzone,\n getInstallerInfo: getInstallerInfo,\n registerStatusCallback: registerStatusCallback,\n deregisterStatusCallback: deregisterStatusCallback,\n registerSafariExtensionStatusCallback: registerSafariExtensionStatusCallback,\n deregisterSafariExtensionStatusCallback: deregisterSafariExtensionStatusCallback,\n setBranding: setBranding,\n getInfo: getInfo,\n};\n","import { asperaSdk } from '../index';\nimport { errorLog, generateErrorBody, generatePromiseObjects, getCurrentPlatform, isValidURL, throwError } from '../helpers/helpers';\nimport { apiGet } from '../helpers/http';\nimport { messages } from '../constants/messages';\n/**\n * Get the latest Aspera SDK installer information such as download URL and version.\n *\n * @param options Installer info options\n *\n * @returns a promise that resolves with the installer info and rejects if there is an error\n */\nexport var getInstallerInfo = function (options) {\n if (options === void 0) { options = {}; }\n var url = options.endpoint || asperaSdk.globals.installerUrl;\n if (url.endsWith('/latest.json')) {\n url = url.replace('/latest.json', '');\n }\n if (!isValidURL(url)) {\n return throwError(messages.invalidEndpoint, { url: url });\n }\n var promiseInfo = generatePromiseObjects();\n apiGet(\"\".concat(url, \"/latest.json\")).then(function (response) {\n response.json().then(function (data) {\n if (options.endpoint) {\n for (var _i = 0, _a = data.entries; _i < _a.length; _i++) {\n var entry = _a[_i];\n if (!isValidURL(entry.url)) {\n entry.url = \"\".concat(options.endpoint, \"/\").concat(entry.url);\n }\n }\n }\n if (options.all) {\n promiseInfo.resolver(data);\n }\n else {\n var platform_1 = getCurrentPlatform();\n data.entries = data.entries.filter(function (entry) { return entry.platform === platform_1; });\n promiseInfo.resolver(data);\n }\n });\n }).catch(function (error) {\n errorLog(messages.getInstallerError, error);\n promiseInfo.rejecter(generateErrorBody(messages.getInstallerError, error));\n });\n return promiseInfo.promise;\n};\n","import { generatePromiseObjects } from './helpers';\n/**\n * Check HTTP promise response for server error response (non 2XX status) and reject promise is error\n *\n * @param promise the HTTP promise to check for HTTP status code of 2XX for success\n *\n * @returns promise for the HTTP connection with catch supporting error\n */\nexport var handlePromiseErrors = function (promise) {\n var promiseInfo = generatePromiseObjects();\n promise.then(function (response) {\n if (response.ok) {\n promiseInfo.resolver(response);\n }\n else {\n promiseInfo.rejecter(response);\n }\n return response;\n }).catch(function (error) {\n promiseInfo.rejecter(error);\n });\n return promiseInfo.promise;\n};\n/**\n * Make a GET for retrieving data from a server\n *\n * @param url the url string of the resource on the server\n *\n * @returns a promise that will resolve with the response from the server or reject if network/server error\n */\nexport var apiGet = function (url) {\n return handlePromiseErrors(fetch(url, {\n headers: {\n 'Content-Type': 'application/json',\n },\n }));\n};\n"],"names":["__awaiter","this","thisArg","_arguments","P","generator","Promise","resolve","reject","fulfilled","value","step","next","e","rejected","result","done","then","apply","__generator","body","f","y","t","g","_","label","sent","trys","ops","verb","Symbol","iterator","n","v","op","TypeError","call","pop","length","push","Object","defineProperty","exports","JSONRPCClient","models_1","internal_1","_send","createID","idToResolveMap","Map","id","prototype","_createID","timeout","delay","overrideCreateJSONRPCErrorResponse","_this","createJSONRPCErrorResponse","DefaultErrorCode","timeoutRequest","ids","request","timeoutID","setTimeout","forEach","get","delete","clearTimeout","error","method","params","clientParams","requestWithID","requestAdvanced","Array","isArray","map","filter","isDefinedAndNonNull","response","_a","createJSONRPCRequest","undefined","JSONRPCErrorException","message","code","data","Error","requests","areRequestsOriginallyArray","requestsWithID","promises","set","promise","all","responses","send","receive","notify","createJSONRPCNotification","payload","rejectAllPendingRequests","clear","__createBinding","create","o","m","k","k2","desc","getOwnPropertyDescriptor","__esModule","writable","configurable","enumerable","__exportStar","p","hasOwnProperty","extendStatics","__extends","d","b","setPrototypeOf","__proto__","String","__","constructor","createJSONRPCSuccessResponse","JSONRPCErrorCode","isJSONRPCResponses","isJSONRPCResponse","isJSONRPCRequests","isJSONRPCRequest","isJSONRPCID","JSONRPC","jsonrpc","every","createJSONRPCError","_super","toObject","JSONRPCServerAndClient","server","client","options","errorListener","console","warn","applyServerMiddleware","middlewares","_i","arguments","applyMiddleware","hasMethod","name","addMethod","addMethodAdvanced","jsonRPCRequest","receiveAndSend","serverParams","__assign","assign","s","i","__spreadArray","to","from","pack","ar","l","slice","concat","JSONRPCServer","createInvalidRequestResponse","InvalidRequest","mapErrorToJSONRPCErrorResponse","defaultMapErrorToJSONRPCErrorResponse","nameToMethodDictionary","middleware","toJSONRPCMethod","mapResultToJSONRPCResponse","receiveJSON","json","tryParseRequestJSON","ParseError","JSON","parse","receiveMultiple","receiveSingle","isNonNull","callMethod","mapResponse","combineMiddlewares","reduce","middlewareReducer","prevMiddleware","nextMiddleware","onError","mapErrorToJSONRPCErrorResponseIfNecessary","noopMiddleware","MethodNotFound","InternalError","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","module","__webpack_modules__","definition","key","obj","prop","SafariExtensionEventType","keepAliveTimeout","protocol","messages","generatePromiseObjects","resolver","rejecter","errorLog","debugData","window","asperaSdkLogs","generateErrorBody","errorResponse","randomUUID","crypto","replace","c","r","Number","Date","getTime","Math","random","toFixed","toString","throwError","isValidURL","url","URL","isSafari","test","navigator","userAgent","MSStream","safariClient","SafariClient","statusInterval","keepAliveInterval","isFirstPing","lastPing","lastPong","safariExtensionEnabled","subscribedTransferActivity","dispatchPromiseEvent","Request","promiseExecutors","listenResponseEvents","listenTransferActivityEvents","listenStatusEvents","listenPongEvents","keepAlive","monitorTransferActivity","dispatchMonitorEvent","Monitor","asperaSdk","globals","appId","extensionInterval","setInterval","catch","clearInterval","buildRPCRequest","dispatchEvent","type","detail","document","CustomEvent","stringify","handleResponse","requestId","executor","addEventListener","event","activityTracking","handleTransferActivity","handleWebSocketEvents","now","safariExtensionStatusChanged","Ping","checkSafariExtensionStatus","isEnabled","resumeTransferActivity_1","promiseExecutor","handleSafariExtensionEvents","pingPongDiff","websocketService","WebsocketService","sockets","isConnected","initPromise","handleOpen","joinChannel","updateRpcPort","notifyEvent","handleClose","globalSocket","reconnect","handleNotReady","handleError","handleMessage","socket","registerMessage","messageName","callback","registerEvent","eventListener","init","connect","getWebSocketConnection","webSocket","onerror","onclose","onopen","onmessage","close","startPort","endPort","webSocketUrl","serverUrl","wsProtocol","indexOf","getWebsocketUrl","asperaAppUrl","connectPort","port","WebSocket","checkPort","ws","rpcPort","AsperaSdkGlobals","installerUrl","asperaAppVerified","dropZonesCreated","backupLaunchMethod","alert","location","href","launch","element","createElement","src","setAttribute","appendChild","ActivityTracking","activity_callbacks","removed_callbacks","event_callbacks","safari_extension_callbacks","lastWebSocketEvent","lastSafariExtensionEvent","webSocketEvent","safariExtensionEvent","setup","sessionId","registerDesktopAppSession","status","setCallback","size","removeCallback","setRemovedCallback","removeRemovedCallback","setWebSocketEventCallback","removeWebSocketEventCallback","setSafariExtensionEventCallback","removeSafariExtensionEventCallback","iframe","style","display","removeChild","AsperaSdk","JSONRPCHttpClient","handleRequest","headers","rpcServerURL","fetch","ok","rpcResponse","statusText","httpClient","promiseInfo","testConnection","AsperaSdkInfo","initDragDrop","isReady","_b","supportMultipleUsers","startTransfer","transferSpec","asperaSdkSpec","direction","remote_host","paths","isValidTransferSpec","transfer_spec","desktop_spec","app_id","registerActivityCallback","deregisterActivityCallback","removeTransfer","transfer_id","showDirectory","stopTransfer","resumeTransfer","getAllTransfers","getTransfer","registerRemovedCallback","deregisterRemovedCallback","showSelectFileDialog","showSelectFolderDialog","showPreferences","modifyTransfer","createDropzone","elementSelector","elements","querySelectorAll","dragEvent","preventDefault","dropEvent","files","dataTransfer","file","lastModified","removeDropzone","foundDropzone","removeEventListener","getInstallerInfo","endpoint","endsWith","apiGet","entries","entry","platform_1","ua","platform","registerStatusCallback","deregisterStatusCallback","registerSafariExtensionStatusCallback","deregisterSafariExtensionStatusCallback","setBranding","branding","theme","getInfo"],"sourceRoot":""}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ibm-aspera/sdk",
3
- "version": "0.2.2",
3
+ "version": "0.2.3",
4
4
  "author": "IBM Aspera",
5
5
  "main": "dist/commonjs/index.js",
6
6
  "types": "dist/commonjs/index.d.ts",
@@ -13,4 +13,4 @@ export const hiddenStyleList = `
13
13
  export const protocol = 'aspera://';
14
14
 
15
15
  /** @ignore */
16
- export const installerUrl = 'https://d3gcli72yxqn2z.cloudfront.net/downloads/desktop/latest/stable';
16
+ export const installerUrl = 'https://downloads.ibmaspera.com/downloads/desktop/latest/stable';
@@ -41,7 +41,7 @@ export interface InstallerOptions {
41
41
  /**
42
42
  * Custom URL to fetch Aspera installers from. Generally this is only
43
43
  * needed when self-hosting the installers rather than using the installers
44
- * hosted on CloudFront.
44
+ * hosted by IBM.
45
45
  *
46
46
  * This URL should point to the directory containing the `latest.json` file that
47
47
  * contains the installer information.
@@ -13,28 +13,28 @@ describe('getInstallerInfo', () => {
13
13
  'platform': 'macos',
14
14
  'type': 'dmg',
15
15
  'arch': 'universal',
16
- 'url': 'https://d3gcli72yxqn2z.cloudfront.net/downloads/desktop/macos/1.2.0/stable/universal/ibm-aspera-sdk_1.2.0_macos.dmg'
16
+ 'url': 'https://downloads.ibmaspera.com/downloads/desktop/macos/1.2.0/stable/universal/ibm-aspera-sdk_1.2.0_macos.dmg'
17
17
  },
18
18
  {
19
19
  'version': '1.2.0',
20
20
  'platform': 'windows',
21
21
  'type': 'msi',
22
22
  'arch': 'x64',
23
- 'url': 'https://d3gcli72yxqn2z.cloudfront.net/downloads/desktop/windows/1.2.0/stable/x64/ibm-aspera-sdk_1.2.0.msi'
23
+ 'url': 'https://downloads.ibmaspera.com/downloads/desktop/windows/1.2.0/stable/x64/ibm-aspera-sdk_1.2.0.msi'
24
24
  },
25
25
  {
26
26
  'version': '1.1.9',
27
27
  'platform': 'linux',
28
28
  'type': 'rpm',
29
29
  'arch': 'x64',
30
- 'url': 'https://d3gcli72yxqn2z.cloudfront.net/downloads/desktop/linux/1.1.9/stable/x64/ibm-aspera-sdk_1.1.9.rpm'
30
+ 'url': 'https://downloads.ibmaspera.com/downloads/desktop/linux/1.1.9/stable/x64/ibm-aspera-sdk_1.1.9.rpm'
31
31
  },
32
32
  {
33
33
  'version': '1.1.9',
34
34
  'platform': 'linux',
35
35
  'type': 'appimage',
36
36
  'arch': 'x64',
37
- 'url': 'https://d3gcli72yxqn2z.cloudfront.net/downloads/desktop/linux/1.1.9/stable/x64/ibm-aspera-sdk_1.1.9.AppImage'
37
+ 'url': 'https://downloads.ibmaspera.com/downloads/desktop/linux/1.1.9/stable/x64/ibm-aspera-sdk_1.1.9.AppImage'
38
38
  }
39
39
  ]
40
40
  };
@@ -42,7 +42,7 @@ describe('getInstallerInfo', () => {
42
42
  console.warn = jest.fn();
43
43
  });
44
44
 
45
- test('called with no options fetches from Amazon CloudFront by default', () => {
45
+ test('called with no options fetches from downloads server by default', () => {
46
46
  getInstallerInfo().catch(() => {});
47
47
  expect(fetch).toHaveBeenCalledWith(`${installerUrl}/latest.json`, defaultHeaders);
48
48
  });
@@ -55,7 +55,7 @@ describe('getInstallerInfo', () => {
55
55
  'platform': 'macos',
56
56
  'type': 'dmg',
57
57
  'arch': 'universal',
58
- 'url': 'https://d3gcli72yxqn2z.cloudfront.net/downloads/desktop/macos/1.2.0/stable/universal/ibm-aspera-sdk_1.2.0_macos.dmg'
58
+ 'url': 'https://downloads.ibmaspera.com/downloads/desktop/macos/1.2.0/stable/universal/ibm-aspera-sdk_1.2.0_macos.dmg'
59
59
  }
60
60
  ];
61
61
  const data = await getInstallerInfo();