@corva/ui 3.79.0-3 → 3.79.0-5
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/cjs-bundle/clients/api/apiCore.js +1 -1
- package/cjs-bundle/clients/api/apiCore.js.map +1 -1
- package/cjs-bundle/clients/subscriptions/socket-client.v2.js +1 -1
- package/cjs-bundle/clients/subscriptions/socket-client.v2.js.map +1 -1
- package/cjs-bundle/clients/subscriptions/subscriptions-auth-recovery.js +2 -0
- package/cjs-bundle/clients/subscriptions/subscriptions-auth-recovery.js.map +1 -0
- package/cjs-bundle/clients/subscriptions/subscriptions-client.dummy.js +1 -1
- package/cjs-bundle/clients/subscriptions/subscriptions-client.dummy.js.map +1 -1
- package/cjs-bundle/clients/subscriptions/subscriptions-client.factory.js +1 -1
- package/cjs-bundle/clients/subscriptions/subscriptions-client.factory.js.map +1 -1
- package/cjs-bundle/clients/subscriptions/subscriptions-client.js +1 -1
- package/cjs-bundle/clients/subscriptions/subscriptions-client.js.map +1 -1
- package/clients/api/apiCore.d.ts +2 -0
- package/clients/api/apiCore.d.ts.map +1 -1
- package/clients/api/apiCore.js +1 -1
- package/clients/api/apiCore.js.map +1 -1
- package/clients/subscriptions/__tests__/subscriptions-auth-recovery.test.d.ts +2 -0
- package/clients/subscriptions/__tests__/subscriptions-auth-recovery.test.d.ts.map +1 -0
- package/clients/subscriptions/socket-client.v2.d.ts +8 -0
- package/clients/subscriptions/socket-client.v2.d.ts.map +1 -1
- package/clients/subscriptions/socket-client.v2.js +1 -1
- package/clients/subscriptions/socket-client.v2.js.map +1 -1
- package/clients/subscriptions/subscriptions-auth-recovery.d.ts +53 -0
- package/clients/subscriptions/subscriptions-auth-recovery.d.ts.map +1 -0
- package/clients/subscriptions/subscriptions-auth-recovery.js +2 -0
- package/clients/subscriptions/subscriptions-auth-recovery.js.map +1 -0
- package/clients/subscriptions/subscriptions-client.d.ts +6 -1
- package/clients/subscriptions/subscriptions-client.d.ts.map +1 -1
- package/clients/subscriptions/subscriptions-client.dummy.d.ts +2 -1
- package/clients/subscriptions/subscriptions-client.dummy.d.ts.map +1 -1
- package/clients/subscriptions/subscriptions-client.dummy.js +1 -1
- package/clients/subscriptions/subscriptions-client.dummy.js.map +1 -1
- package/clients/subscriptions/subscriptions-client.factory.d.ts +8 -0
- package/clients/subscriptions/subscriptions-client.factory.d.ts.map +1 -1
- package/clients/subscriptions/subscriptions-client.factory.js +1 -1
- package/clients/subscriptions/subscriptions-client.factory.js.map +1 -1
- package/clients/subscriptions/subscriptions-client.js +1 -1
- package/clients/subscriptions/subscriptions-client.js.map +1 -1
- package/clients/subscriptions/types.d.ts +5 -0
- package/clients/subscriptions/types.d.ts.map +1 -1
- package/components/Drillstring/BHAComponentDetail/constants.d.ts +2 -2
- package/mcp-server/server.mjs +25 -8
- package/package.json +1 -1
- package/tsconfig.tsbuildinfo +1 -1
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@babel/runtime/helpers/slicedToArray"),t=require("@babel/runtime/helpers/objectWithoutProperties"),r=require("@babel/runtime/helpers/asyncToGenerator"),n=require("@babel/runtime/helpers/defineProperty"),a=require("@babel/runtime/helpers/classCallCheck"),i=require("@babel/runtime/helpers/createClass"),s=require("@babel/runtime/regenerator"),u=require("query-string"),o=require("../constants.js"),c=require("../utils.js"),l=require("./AuthRecovery.js"),p=require("./httpMessages.js"),d=require("./rateLimiter.js");function f(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}function h(e){if(e&&e.__esModule)return e;var t=Object.create(null);return e&&Object.keys(e).forEach((function(r){if("default"!==r){var n=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(t,r,n.get?n:{enumerable:!0,get:function(){return e[r]}})}})),t.default=e,Object.freeze(t)}var y=f(e),v=f(t),g=f(r),b=f(n),m=f(a),x=f(i),j=f(s),A=h(u),k=["appKey"],O=["appKey"];function P(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function w(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?P(Object(r),!0).forEach((function(t){b.default(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):P(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}var T=l.AuthRecovery.getInstance(),q={400:"Request Failed",403:"No Permission",404:"Not Found"},K=["POST","PUT","PATCH","DELETE"],E=function(){function e(t,r){m.default(this,e),this.status=t.status,this.statusText=t.statusText,this.message=r.message||"No Message",this.errorBody=r}return x.default(e,[{key:"isAuthenticationProblem",value:function(){return 401===this.status}},{key:"isTermsProblem",value:function(){return 401===this.status&&"Please accept the latest terms of service"===this.message}},{key:"isLoginProblem",value:function(){var e,t;return 401===this.status&&(null===(e=this.errorBody)||void 0===e||null===(t=e.errors)||void 0===t?void 0:t.login)}},{key:"isLockedAccountProblem",value:function(){var e,t,r;return 401===this.status&&(null===(e=this.errorBody)||void 0===e||null===(t=e.errors)||void 0===t||null===(r=t.login)||void 0===r?void 0:r.includes("Account has been locked"))}},{key:"isInvalidVerificationCode",value:function(){var e,t,r;return 401===this.status&&(null===(e=this.errorBody)||void 0===e||null===(t=e.errors)||void 0===t||null===(r=t.login)||void 0===r?void 0:r.includes("Invalid verification code"))}},{key:"isMissingVerificationCode",value:function(){var e,t,r;return 401===this.status&&(null===(e=this.errorBody)||void 0===e||null===(t=e.errors)||void 0===t||null===(r=t.identity)||void 0===r?void 0:r.includes("Missing verification code"))}}]),e}(),I=o.CORVA_API_URLS.API,S=c.getAuthorizationHeaders(),U=w({"Content-Type":"application/json",Accept:"application/json"},S),R=/^\/v1\/assets.*/;function _(e){return D.apply(this,arguments)}function D(){return D=g.default(j.default.mark((function e(t){var r,n,a,i,s,u,o=arguments;return j.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(r=o.length>1&&void 0!==o[1]?o[1]:{},n=o.length>2&&void 0!==o[2]?o[2]:{},a=n.apiUrl,i=void 0===a?I:a,s=n.appKey,u=n.appInstanceId,!s||!u||n.isRetry){e.next=6;break}return e.next=6,d.apiRequestsRateLimiter.acquire(s,u);case 6:return R.test(t)&&(r.cache="reload"),r.credentials="include",e.abrupt("return",fetch("".concat(i).concat(t),c.attachHTTPHeaders(w({config:r,appKey:s},S))));case 9:case"end":return e.stop()}}),e)}))),D.apply(this,arguments)}var C,H=(C=_,function(){var e=g.default(j.default.mark((function e(r,n){var a,i,s,u,o,c,l,d,f,h=arguments;return j.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return a=h.length>2&&void 0!==h[2]?h[2]:{},e.next=3,C(r,n,a);case 3:if(i=e.sent,s=i.status,!i.ok){e.next=7;break}return e.abrupt("return",204===s?null:i);case 7:return e.prev=7,e.next=10,i.json();case 10:u=e.sent,e.next=16;break;case 13:e.prev=13,e.t0=e.catch(7),u={};case 16:if(o=new E(i,u),c=r.startsWith("/v1/user_token"),!T.isRefreshableAuthError(o)||c||a.isRetry){e.next=28;break}return e.prev=19,e.next=22,T.tryRefresh();case 22:return e.abrupt("return",t(r,n,w(w({},a),{},{isRetry:!0})));case 25:e.prev=25,e.t1=e.catch(19),console.error("Token refresh failed:",e.t1);case 28:throw l=n.method,d=!a.hideNotification&&K.includes(l),f=p.DISPLAY_HTTP_MESSAGES[u.message]||q[s],d&&f&&console.error(f),T.handleAuthFailure(o),o;case 34:case"end":return e.stop()}}),e,null,[[7,13],[19,25]])})));function t(t,r){return e.apply(this,arguments)}return t}());function L(){return L=g.default(j.default.mark((function e(t,r){var n,a,i,s,u,o,l=arguments;return j.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=l.length>2&&void 0!==l[2]?l[2]:{},a=n.apiUrl,i=n.withHeaders,s=void 0!==i&&i,u=n.signal,e.next=4,H(t,{method:"POST",headers:U,body:JSON.stringify(r),signal:u},w({apiUrl:a},c.getAppKeyAndId()));case 4:if(o=e.sent,!s){e.next=7;break}return e.abrupt("return",o);case 7:return e.abrupt("return",o&&o.json());case 8:case"end":return e.stop()}}),e)}))),L.apply(this,arguments)}function N(e){return M.apply(this,arguments)}function M(){return M=g.default(j.default.mark((function e(t){var r,n,a,i,s,u,o,l,p,d=arguments;return j.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return r=d.length>1&&void 0!==d[1]?d[1]:{},n=d.length>2&&void 0!==d[2]?d[2]:{},a=n.apiUrl,i=n.signal,s=A.stringify(r,{arrayFormat:"bracket"}),u=c.getAppKeyAndId()||{},o=u.appKey,l=v.default(u,k),e.next=7,H("".concat(t).concat(s?"?":"").concat(s),{method:"GET",signal:i},w({apiUrl:a,appKey:n.appKey||o},l));case 7:if(p=e.sent,e.t0=p,!e.t0){e.next=13;break}return e.next=12,p.json();case 12:e.t0=e.sent;case 13:return e.t1=e.t0,e.t2=p&&p.headers,e.abrupt("return",{data:e.t1,headers:e.t2});case 16:case"end":return e.stop()}}),e)}))),M.apply(this,arguments)}function F(){return F=g.default(j.default.mark((function e(t){var r,n,a,i,s,u,o=arguments;return j.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return r=o.length>1&&void 0!==o[1]?o[1]:{},n=o.length>2&&void 0!==o[2]?o[2]:{},a=c.getAppKeyAndId()||{},i=a.appKey,s=v.default(a,O),e.next=5,N(t,r,w(w({},n),{},{appKey:n.appKey||i},s));case 5:return u=e.sent,e.abrupt("return",u.data);case 7:case"end":return e.stop()}}),e)}))),F.apply(this,arguments)}function B(){return B=g.default(j.default.mark((function e(t,r){var n,a,i,s,u,o,l=arguments;return j.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=l.length>2&&void 0!==l[2]?l[2]:{},a=l.length>3&&void 0!==l[3]?l[3]:{},i=a.apiUrl,s=a.signal,u=A.stringify(n),e.next=6,H("".concat(t).concat(u?"?":"").concat(u),{method:"PUT",headers:U,body:JSON.stringify(r)},w(w({apiUrl:i},c.getAppKeyAndId()),{},{signal:s}));case 6:return o=e.sent,e.abrupt("return",o&&o.json());case 8:case"end":return e.stop()}}),e)}))),B.apply(this,arguments)}function J(){return J=g.default(j.default.mark((function e(t,r){var n,a,i,s,u,o,l=arguments;return j.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=l.length>2&&void 0!==l[2]?l[2]:{},a=l.length>3&&void 0!==l[3]?l[3]:{},i=a.apiUrl,s=a.signal,u=A.stringify(n),e.next=6,H("".concat(t).concat(u?"?":"").concat(u),{method:"PATCH",headers:U,body:JSON.stringify(r)},w(w({apiUrl:i},c.getAppKeyAndId()),{},{signal:s}));case 6:return o=e.sent,e.abrupt("return",o&&o.json());case 8:case"end":return e.stop()}}),e)}))),J.apply(this,arguments)}function G(){return G=g.default(j.default.mark((function e(t){var r,n,a,i,s,u,o=arguments;return j.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return r=o.length>1&&void 0!==o[1]?o[1]:{},n=o.length>2&&void 0!==o[2]?o[2]:{},a=n.apiUrl,i=n.signal,s=A.stringify(r),e.next=6,H(s?"".concat(t,"?").concat(s):t,{method:"DELETE",headers:U},w(w({apiUrl:a},c.getAppKeyAndId()),{},{signal:i}));case 6:return u=e.sent,e.abrupt("return",u&&u.json());case 8:case"end":return e.stop()}}),e)}))),G.apply(this,arguments)}function V(){return V=g.default(j.default.mark((function e(t,r){var n,a,i,s,u,o,l,p,d=arguments;return j.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=d.length>2&&void 0!==d[2]?d[2]:{},a=d.length>3&&void 0!==d[3]?d[3]:{},i=A.stringify(n),s=a.method,u=void 0===s?"POST":s,o=a.signal,l=new FormData,Object.entries(r).forEach((function(e){var t=y.default(e,2),r=t[0],n=t[1];Array.isArray(n)?n.forEach((function(e){l.append(r,e)})):l.append(r,n)})),e.next=8,H(i?"".concat(t,"?").concat(i):t,{method:u,headers:{Accept:"application/json"},body:l},w(w({},c.getAppKeyAndId()),{},{signal:o}));case 8:return p=e.sent,e.abrupt("return",p&&p.json());case 10:case"end":return e.stop()}}),e)}))),V.apply(this,arguments)}exports.APIException=E,exports.baseUrl=I,exports.del=function(e){return G.apply(this,arguments)},exports.get=function(e){return F.apply(this,arguments)},exports.getWithHeaders=N,exports.patch=function(e,t){return J.apply(this,arguments)},exports.post=function(e,t){return L.apply(this,arguments)},exports.put=function(e,t){return B.apply(this,arguments)},exports.refreshToken=function(){return _("/v1/user_token",{method:"POST",headers:U,body:JSON.stringify({refresh_token:!0})}).then((function(e){if(!e.ok)throw new E(e,{})}))},exports.sendFormData=function(e,t){return V.apply(this,arguments)};
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@babel/runtime/helpers/slicedToArray"),t=require("@babel/runtime/helpers/objectWithoutProperties"),r=require("@babel/runtime/helpers/asyncToGenerator"),n=require("@babel/runtime/helpers/defineProperty"),a=require("@babel/runtime/helpers/classCallCheck"),i=require("@babel/runtime/helpers/createClass"),s=require("@babel/runtime/regenerator"),u=require("query-string"),o=require("../constants.js"),c=require("../utils.js"),l=require("./AuthRecovery.js"),p=require("./httpMessages.js"),d=require("./rateLimiter.js");function f(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}function h(e){if(e&&e.__esModule)return e;var t=Object.create(null);return e&&Object.keys(e).forEach((function(r){if("default"!==r){var n=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(t,r,n.get?n:{enumerable:!0,get:function(){return e[r]}})}})),t.default=e,Object.freeze(t)}var y=f(e),v=f(t),g=f(r),b=f(n),m=f(a),x=f(i),j=f(s),A=h(u),k=["appKey"],O=["appKey"];function P(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function w(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?P(Object(r),!0).forEach((function(t){b.default(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):P(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}var T=l.AuthRecovery.getInstance(),q={400:"Request Failed",403:"No Permission",404:"Not Found"},K=["POST","PUT","PATCH","DELETE"],E=function(){function e(t,r){m.default(this,e),this.status=t.status,this.statusText=t.statusText,this.message=r.message||"No Message",this.errorBody=r}return x.default(e,[{key:"isAuthenticationProblem",value:function(){return 401===this.status}},{key:"isTermsProblem",value:function(){return 401===this.status&&"Please accept the latest terms of service"===this.message}},{key:"isLoginProblem",value:function(){var e,t;return 401===this.status&&(null===(e=this.errorBody)||void 0===e||null===(t=e.errors)||void 0===t?void 0:t.login)}},{key:"isLockedAccountProblem",value:function(){var e,t,r;return 401===this.status&&(null===(e=this.errorBody)||void 0===e||null===(t=e.errors)||void 0===t||null===(r=t.login)||void 0===r?void 0:r.includes("Account has been locked"))}},{key:"isInvalidVerificationCode",value:function(){var e,t,r;return 401===this.status&&(null===(e=this.errorBody)||void 0===e||null===(t=e.errors)||void 0===t||null===(r=t.login)||void 0===r?void 0:r.includes("Invalid verification code"))}},{key:"isMissingVerificationCode",value:function(){var e,t,r;return 401===this.status&&(null===(e=this.errorBody)||void 0===e||null===(t=e.errors)||void 0===t||null===(r=t.identity)||void 0===r?void 0:r.includes("Missing verification code"))}}]),e}(),I=o.CORVA_API_URLS.API,S=c.getAuthorizationHeaders(),U=w({"Content-Type":"application/json",Accept:"application/json"},S),R=/^\/v1\/assets.*/;function _(e){return D.apply(this,arguments)}function D(){return D=g.default(j.default.mark((function e(t){var r,n,a,i,s,u,o=arguments;return j.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(r=o.length>1&&void 0!==o[1]?o[1]:{},n=o.length>2&&void 0!==o[2]?o[2]:{},a=n.apiUrl,i=void 0===a?I:a,s=n.appKey,u=n.appInstanceId,!s||!u||n.isRetry){e.next=6;break}return e.next=6,d.apiRequestsRateLimiter.acquire(s,u);case 6:return R.test(t)&&(r.cache="reload"),r.credentials="include",e.abrupt("return",fetch("".concat(i).concat(t),c.attachHTTPHeaders(w({config:r,appKey:s},S))));case 9:case"end":return e.stop()}}),e)}))),D.apply(this,arguments)}var C,H=(C=_,function(){var e=g.default(j.default.mark((function e(r,n){var a,i,s,u,o,c,l,d,f,h=arguments;return j.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return a=h.length>2&&void 0!==h[2]?h[2]:{},e.next=3,C(r,n,a);case 3:if(i=e.sent,s=i.status,!i.ok){e.next=7;break}return e.abrupt("return",204===s?null:i);case 7:return e.prev=7,e.next=10,i.json();case 10:u=e.sent,e.next=16;break;case 13:e.prev=13,e.t0=e.catch(7),u={};case 16:if(o=new E(i,u),c=r.startsWith("/v1/user_token"),!T.isRefreshableAuthError(o)||c||a.isRetry){e.next=28;break}return e.prev=19,e.next=22,T.tryRefresh();case 22:return e.abrupt("return",t(r,n,w(w({},a),{},{isRetry:!0})));case 25:e.prev=25,e.t1=e.catch(19),console.error("Token refresh failed:",e.t1);case 28:throw l=n.method,d=!a.hideNotification&&K.includes(l),f=p.DISPLAY_HTTP_MESSAGES[u.message]||q[s],d&&f&&console.error(f),T.handleAuthFailure(o),o;case 34:case"end":return e.stop()}}),e,null,[[7,13],[19,25]])})));function t(t,r){return e.apply(this,arguments)}return t}());function L(){return L=g.default(j.default.mark((function e(t,r){var n,a,i,s,u,o,l=arguments;return j.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=l.length>2&&void 0!==l[2]?l[2]:{},a=n.apiUrl,i=n.withHeaders,s=void 0!==i&&i,u=n.signal,e.next=4,H(t,{method:"POST",headers:U,body:JSON.stringify(r),signal:u},w({apiUrl:a},c.getAppKeyAndId()));case 4:if(o=e.sent,!s){e.next=7;break}return e.abrupt("return",o);case 7:return e.abrupt("return",o&&o.json());case 8:case"end":return e.stop()}}),e)}))),L.apply(this,arguments)}function N(e){return M.apply(this,arguments)}function M(){return M=g.default(j.default.mark((function e(t){var r,n,a,i,s,u,o,l,p,d=arguments;return j.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return r=d.length>1&&void 0!==d[1]?d[1]:{},n=d.length>2&&void 0!==d[2]?d[2]:{},a=n.apiUrl,i=n.signal,s=A.stringify(r,{arrayFormat:"bracket"}),u=c.getAppKeyAndId()||{},o=u.appKey,l=v.default(u,k),e.next=7,H("".concat(t).concat(s?"?":"").concat(s),{method:"GET",signal:i},w({apiUrl:a,appKey:n.appKey||o},l));case 7:if(p=e.sent,e.t0=p,!e.t0){e.next=13;break}return e.next=12,p.json();case 12:e.t0=e.sent;case 13:return e.t1=e.t0,e.t2=p&&p.headers,e.abrupt("return",{data:e.t1,headers:e.t2});case 16:case"end":return e.stop()}}),e)}))),M.apply(this,arguments)}function F(){return F=g.default(j.default.mark((function e(t){var r,n,a,i,s,u,o=arguments;return j.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return r=o.length>1&&void 0!==o[1]?o[1]:{},n=o.length>2&&void 0!==o[2]?o[2]:{},a=c.getAppKeyAndId()||{},i=a.appKey,s=v.default(a,O),e.next=5,N(t,r,w(w({},n),{},{appKey:n.appKey||i},s));case 5:return u=e.sent,e.abrupt("return",u.data);case 7:case"end":return e.stop()}}),e)}))),F.apply(this,arguments)}function B(){return B=g.default(j.default.mark((function e(t,r){var n,a,i,s,u,o,l=arguments;return j.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=l.length>2&&void 0!==l[2]?l[2]:{},a=l.length>3&&void 0!==l[3]?l[3]:{},i=a.apiUrl,s=a.signal,u=A.stringify(n),e.next=6,H("".concat(t).concat(u?"?":"").concat(u),{method:"PUT",headers:U,body:JSON.stringify(r)},w(w({apiUrl:i},c.getAppKeyAndId()),{},{signal:s}));case 6:return o=e.sent,e.abrupt("return",o&&o.json());case 8:case"end":return e.stop()}}),e)}))),B.apply(this,arguments)}function J(){return J=g.default(j.default.mark((function e(t,r){var n,a,i,s,u,o,l=arguments;return j.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=l.length>2&&void 0!==l[2]?l[2]:{},a=l.length>3&&void 0!==l[3]?l[3]:{},i=a.apiUrl,s=a.signal,u=A.stringify(n),e.next=6,H("".concat(t).concat(u?"?":"").concat(u),{method:"PATCH",headers:U,body:JSON.stringify(r)},w(w({apiUrl:i},c.getAppKeyAndId()),{},{signal:s}));case 6:return o=e.sent,e.abrupt("return",o&&o.json());case 8:case"end":return e.stop()}}),e)}))),J.apply(this,arguments)}function G(){return G=g.default(j.default.mark((function e(t){var r,n,a,i,s,u,o=arguments;return j.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return r=o.length>1&&void 0!==o[1]?o[1]:{},n=o.length>2&&void 0!==o[2]?o[2]:{},a=n.apiUrl,i=n.signal,s=A.stringify(r),e.next=6,H(s?"".concat(t,"?").concat(s):t,{method:"DELETE",headers:U},w(w({apiUrl:a},c.getAppKeyAndId()),{},{signal:i}));case 6:return u=e.sent,e.abrupt("return",u&&u.json());case 8:case"end":return e.stop()}}),e)}))),G.apply(this,arguments)}function V(){return V=g.default(j.default.mark((function e(t,r){var n,a,i,s,u,o,l,p,d=arguments;return j.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=d.length>2&&void 0!==d[2]?d[2]:{},a=d.length>3&&void 0!==d[3]?d[3]:{},i=A.stringify(n),s=a.method,u=void 0===s?"POST":s,o=a.signal,l=new FormData,Object.entries(r).forEach((function(e){var t=y.default(e,2),r=t[0],n=t[1];Array.isArray(n)?n.forEach((function(e){l.append(r,e)})):l.append(r,n)})),e.next=8,H(i?"".concat(t,"?").concat(i):t,{method:u,headers:{Accept:"application/json"},body:l},w(w({},c.getAppKeyAndId()),{},{signal:o}));case 8:return p=e.sent,e.abrupt("return",p&&p.json());case 10:case"end":return e.stop()}}),e)}))),V.apply(this,arguments)}exports.APIException=E,exports.authRecovery=T,exports.baseUrl=I,exports.del=function(e){return G.apply(this,arguments)},exports.get=function(e){return F.apply(this,arguments)},exports.getWithHeaders=N,exports.patch=function(e,t){return J.apply(this,arguments)},exports.post=function(e,t){return L.apply(this,arguments)},exports.put=function(e,t){return B.apply(this,arguments)},exports.refreshToken=function(){return _("/v1/user_token",{method:"POST",headers:U,body:JSON.stringify({refresh_token:!0})}).then((function(e){if(!e.ok)throw new E(e,{})}))},exports.sendFormData=function(e,t){return V.apply(this,arguments)};
|
|
2
2
|
//# sourceMappingURL=apiCore.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"apiCore.js","sources":["../../../../src/clients/api/apiCore.js"],"sourcesContent":["import * as queryString from 'query-string';\n\nimport { CORVA_API_URLS } from '../constants';\nimport { attachHTTPHeaders, getAppKeyAndId, getAuthorizationHeaders } from '../utils';\n\nimport { AuthRecovery } from './AuthRecovery';\nimport { DISPLAY_HTTP_MESSAGES } from './httpMessages';\n\nimport { apiRequestsRateLimiter } from '~/clients/api/rateLimiter';\n\nconst authRecovery = AuthRecovery.getInstance();\n\nconst HTTP_ERROR_MESSAGES = {\n 400: 'Request Failed',\n 403: 'No Permission',\n 404: 'Not Found',\n};\n\nconst TOS_ERROR_MESSAGE = 'Please accept the latest terms of service';\nconst LOCKED_ERROR_MESSAGE = 'Account has been locked';\nconst INVALID_VERIFICATION_CODE_MESSAGE = 'Invalid verification code';\nconst MISSING_VERIFICATION_CODE_MESSAGE = 'Missing verification code';\n\nconst HTTP_METHODS_TO_SHOW_ERROR_NOTIFICATIONS = [\n // NOTE: Do not show error notifications for GET method. Because users may request a deleted item\n 'POST',\n 'PUT',\n 'PATCH',\n 'DELETE',\n];\n\nexport class APIException {\n constructor(response, json) {\n this.status = response.status;\n this.statusText = response.statusText;\n this.message = json.message || 'No Message';\n this.errorBody = json;\n }\n\n isAuthenticationProblem() {\n return this.status === 401;\n }\n\n isTermsProblem() {\n // FIXME: this.message === TOS_ERROR_MESSAGE is a hack. Back-end team should come\n // with another solution.\n return this.status === 401 && this.message === TOS_ERROR_MESSAGE;\n }\n\n isLoginProblem() {\n return this.status === 401 && this.errorBody?.errors?.login;\n }\n\n isLockedAccountProblem() {\n return this.status === 401 && this.errorBody?.errors?.login?.includes(LOCKED_ERROR_MESSAGE);\n }\n\n isInvalidVerificationCode() {\n return (\n this.status === 401 &&\n this.errorBody?.errors?.login?.includes(INVALID_VERIFICATION_CODE_MESSAGE)\n );\n }\n\n isMissingVerificationCode() {\n return (\n this.status === 401 &&\n this.errorBody?.errors?.identity?.includes(MISSING_VERIFICATION_CODE_MESSAGE)\n );\n }\n}\n\nexport const baseUrl = CORVA_API_URLS.API;\n\nconst AUTH_HEADERS = getAuthorizationHeaders();\nconst JSON_HEADERS = {\n 'Content-Type': 'application/json',\n Accept: 'application/json',\n ...AUTH_HEADERS,\n};\n\nexport function handleAuthenticationProblem(e) {\n authRecovery.handleAuthFailure(e);\n}\n\nconst V1_ASSETS_REGEXP = /^\\/v1\\/assets.*/;\n\nasync function requestCore(path, config = {}, overrides = {}) {\n const { apiUrl = baseUrl, appKey, appInstanceId } = overrides;\n\n if (appKey && appInstanceId && !overrides.isRetry) {\n // Skip rate-limiter acquisition on retries. When a 401 triggers a token\n // refresh, errorHandler re-invokes requestCore with isRetry: true.\n // The original call already consumed a rate-limiter token, so acquiring\n // again would double-count a single logical request.\n // Because in the RateLimiter there is no release(),\n // the extra acquire on retries is an unrecoverable leak.\n await apiRequestsRateLimiter.acquire(appKey, appInstanceId);\n }\n\n // temporary enable cache for the heaviest request\n if (V1_ASSETS_REGEXP.test(path)) {\n config.cache = 'reload'; // eslint-disable-line no-param-reassign\n }\n\n config.credentials = 'include'; // eslint-disable-line no-param-reassign\n\n return fetch(`${apiUrl}${path}`, attachHTTPHeaders({ config, appKey, ...AUTH_HEADERS }));\n}\n\n/**\n * Used as refreshFn for AuthRecovery.\n * Triggers a token refresh request using the /v1/user_token endpoint.\n * The refresh mechanism is based on the refresh token stored in the dedicated HTTP-only cookie.\n *\n * Should not be used outside of AuthRecovery and Corva UI.\n */\nexport function refreshToken() {\n return requestCore('/v1/user_token', {\n method: 'POST',\n headers: JSON_HEADERS,\n body: JSON.stringify({ refresh_token: true }),\n }).then(response => {\n if (!response.ok) {\n throw new APIException(response, {});\n }\n });\n}\n\nfunction errorHandlerDecorator(requestCoreFunc) {\n return async function errorHandler(path, config, overrides = {}) {\n const response = await requestCoreFunc(path, config, overrides);\n\n const { status } = response;\n\n if (response.ok) {\n return status === 204 // NOTE: No content\n ? null\n : response;\n }\n\n // NOTE: Handle Error response logic\n let json;\n try {\n json = await response.json();\n } catch (e) {\n json = {};\n }\n const exception = new APIException(response, json);\n\n // Token expired: attempt refresh and retry the original request once.\n // Skip non-refreshable 401s (Terms of Service, login-credential errors) and the login/token\n // endpoint itself, where a refresh would be either pointless or self-recursive.\n const isLoginEndpoint = path.startsWith('/v1/user_token');\n if (authRecovery.isRefreshableAuthError(exception) && !isLoginEndpoint && !overrides.isRetry) {\n try {\n await authRecovery.tryRefresh();\n return errorHandler(path, config, { ...overrides, isRetry: true }); // Ensure retrying only once.\n } catch (refreshError) {\n console.error('Token refresh failed:', refreshError);\n // Refresh failed — fall through to authRecovery.handleAuthFailure\n }\n }\n\n const requestMethod = config.method;\n const isMethodToShowNotification =\n !overrides.hideNotification &&\n HTTP_METHODS_TO_SHOW_ERROR_NOTIFICATIONS.includes(requestMethod);\n\n const httpErrorMessage = DISPLAY_HTTP_MESSAGES[json.message] || HTTP_ERROR_MESSAGES[status];\n\n if (isMethodToShowNotification && httpErrorMessage) {\n console.error(httpErrorMessage);\n }\n\n authRecovery.handleAuthFailure(exception);\n\n throw exception;\n };\n}\n\nconst request = errorHandlerDecorator(requestCore);\n\n/**\n * The post method is most-often utilized to **create** new resources.\n * @async\n * @param {string} path - path to resource.\n * @param {Object=} entity - API entity to create\n * @returns {Promise<*>}\n */\nexport async function post(path, entity, requestOptions = {}) {\n const { apiUrl, withHeaders = false, signal } = requestOptions;\n const response = await request(\n path,\n {\n method: 'POST',\n headers: JSON_HEADERS,\n body: JSON.stringify(entity),\n signal,\n },\n { apiUrl, ...getAppKeyAndId() }\n );\n\n if (withHeaders) return response;\n\n return response && response.json();\n}\n\nexport async function getWithHeaders(path, queryParams = {}, requestOptions = {}) {\n const { apiUrl, signal } = requestOptions;\n const qry = queryString.stringify(queryParams, { arrayFormat: 'bracket' });\n const { appKey, ...rest } = getAppKeyAndId() || {};\n const response = await request(\n `${path}${qry ? '?' : ''}${qry}`,\n {\n method: 'GET',\n signal,\n },\n { apiUrl, appKey: requestOptions.appKey || appKey, ...rest }\n );\n\n return {\n data: response && (await response.json()),\n headers: response && response.headers,\n };\n}\n\n/**\n * The get method is used to **read** (or retrieve) a representation of a resource\n * @async\n * @param {string} path - path to resource.\n * @param {Object=} queryParams - Object with query params such as per_page, sort, asset_id, etc.\n * @param {Object=} requestOptions - Additional options for request. For example: apiUrl, signal etc.\n * @returns {Promise<*>}\n */\nexport async function get(path, queryParams = {}, requestOptions = {}) {\n const { appKey, ...rest } = getAppKeyAndId() || {};\n const dataAndHeaders = await getWithHeaders(path, queryParams, {\n ...requestOptions,\n appKey: requestOptions.appKey || appKey,\n ...rest,\n });\n return dataAndHeaders.data;\n}\n\nexport async function getFile(path, queryParams = {}, requestOptions = {}) {\n const qry = queryString.stringify(queryParams);\n const { signal } = requestOptions;\n const response = await request(\n `${path}${qry ? '?' : ''}${qry}`,\n { method: 'GET' },\n { ...getAppKeyAndId(), signal }\n );\n\n return response && response.blob();\n}\n\nexport async function put(path, content, queryParams = {}, requestOptions = {}) {\n const { apiUrl, signal } = requestOptions;\n const qry = queryString.stringify(queryParams);\n const response = await request(\n `${path}${qry ? '?' : ''}${qry}`,\n {\n method: 'PUT',\n headers: JSON_HEADERS,\n body: JSON.stringify(content),\n },\n { apiUrl, ...getAppKeyAndId(), signal }\n );\n\n return response && response.json();\n}\n\nexport async function patch(path, content, queryParams = {}, requestOptions = {}) {\n const { apiUrl, signal } = requestOptions;\n const qry = queryString.stringify(queryParams);\n\n const response = await request(\n `${path}${qry ? '?' : ''}${qry}`,\n {\n method: 'PATCH',\n headers: JSON_HEADERS,\n body: JSON.stringify(content),\n },\n {\n apiUrl,\n ...getAppKeyAndId(),\n signal,\n }\n );\n\n return response && response.json();\n}\n\nexport async function del(path, queryParams = {}, requestOptions = {}) {\n const { apiUrl, signal } = requestOptions;\n const query = queryString.stringify(queryParams);\n const response = await request(\n query ? `${path}?${query}` : path,\n {\n method: 'DELETE',\n headers: JSON_HEADERS,\n },\n {\n apiUrl,\n ...getAppKeyAndId(),\n signal,\n }\n );\n\n return response && response.json();\n}\n\nexport async function sendFormData(path, data, queryParams = {}, requestOptions = {}) {\n const query = queryString.stringify(queryParams);\n const { method = 'POST', signal } = requestOptions;\n const formData = new FormData();\n\n Object.entries(data).forEach(([key, value]) => {\n if (Array.isArray(value)) {\n value.forEach(arrayValueEntity => {\n formData.append(key, arrayValueEntity);\n });\n } else {\n formData.append(key, value);\n }\n });\n\n const response = await request(\n query ? `${path}?${query}` : path,\n {\n method,\n headers: {\n Accept: 'application/json',\n },\n body: formData,\n },\n { ...getAppKeyAndId(), signal }\n );\n\n return response && response.json();\n}\n"],"names":["authRecovery","AuthRecovery","getInstance","HTTP_ERROR_MESSAGES","HTTP_METHODS_TO_SHOW_ERROR_NOTIFICATIONS","APIException","response","json","_classCallCheck","this","status","statusText","message","errorBody","_createClass","key","value","_this$errorBody","_this$errorBody$error","errors","login","_this$errorBody2","_this$errorBody2$erro","_this$errorBody2$erro2","includes","_this$errorBody3","_this$errorBody3$erro","_this$errorBody3$erro2","_this$errorBody4","_this$errorBody4$erro","_this$errorBody4$erro2","identity","baseUrl","CORVA_API_URLS","API","AUTH_HEADERS","getAuthorizationHeaders","JSON_HEADERS","_objectSpread","Accept","V1_ASSETS_REGEXP","requestCore","_x","_requestCore","apply","arguments","_asyncToGenerator","_regeneratorRuntime","mark","path","config","overrides","_overrides$apiUrl","apiUrl","appKey","appInstanceId","_args2","wrap","_context2","prev","next","length","undefined","isRetry","apiRequestsRateLimiter","acquire","test","cache","credentials","abrupt","fetch","attachHTTPHeaders","stop","_callee2","requestCoreFunc","request","_errorHandler","_callee","exception","isLoginEndpoint","requestMethod","isMethodToShowNotification","httpErrorMessage","_args","_context","sent","ok","t0","startsWith","isRefreshableAuthError","tryRefresh","errorHandler","t1","console","error","method","hideNotification","DISPLAY_HTTP_MESSAGES","handleAuthFailure","_x2","_x3","_post","_callee3","entity","requestOptions","_requestOptions$withH","withHeaders","signal","_args3","_context3","headers","body","JSON","stringify","getAppKeyAndId","getWithHeaders","_x6","_getWithHeaders","queryParams","qry","_ref","rest","_args4","_context4","queryString","arrayFormat","_objectWithoutProperties","_excluded","t2","data","_callee4","_get","_ref2","dataAndHeaders","_args5","_context5","_excluded2","_callee5","_put","_callee7","content","_args7","_context7","_patch","_callee8","_args8","_context8","_del","query","_args9","_context9","concat","_callee9","_sendFormData","_callee10","_requestOptions$metho","formData","_args10","_context10","FormData","Object","entries","forEach","_ref3","_ref4","_slicedToArray","Array","isArray","arrayValueEntity","append","_x13","_x7","_x11","_x12","_x4","_x5","_x9","_x10","refresh_token","then","_x14","_x15"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"apiCore.js","sources":["../../../../src/clients/api/apiCore.js"],"sourcesContent":["import * as queryString from 'query-string';\n\nimport { CORVA_API_URLS } from '../constants';\nimport { attachHTTPHeaders, getAppKeyAndId, getAuthorizationHeaders } from '../utils';\n\nimport { AuthRecovery } from './AuthRecovery';\nimport { DISPLAY_HTTP_MESSAGES } from './httpMessages';\n\nimport { apiRequestsRateLimiter } from '~/clients/api/rateLimiter';\n\n// Exported for callers outside the HTTP layer (the socket client's auth recovery). Import it from\n// here rather than from './AuthRecovery': that module imports `refreshToken` from this one, and\n// entering the cycle through AuthRecovery leaves `AuthRecovery` undefined at this line.\nexport const authRecovery = AuthRecovery.getInstance();\n\nconst HTTP_ERROR_MESSAGES = {\n 400: 'Request Failed',\n 403: 'No Permission',\n 404: 'Not Found',\n};\n\nconst TOS_ERROR_MESSAGE = 'Please accept the latest terms of service';\nconst LOCKED_ERROR_MESSAGE = 'Account has been locked';\nconst INVALID_VERIFICATION_CODE_MESSAGE = 'Invalid verification code';\nconst MISSING_VERIFICATION_CODE_MESSAGE = 'Missing verification code';\n\nconst HTTP_METHODS_TO_SHOW_ERROR_NOTIFICATIONS = [\n // NOTE: Do not show error notifications for GET method. Because users may request a deleted item\n 'POST',\n 'PUT',\n 'PATCH',\n 'DELETE',\n];\n\nexport class APIException {\n constructor(response, json) {\n this.status = response.status;\n this.statusText = response.statusText;\n this.message = json.message || 'No Message';\n this.errorBody = json;\n }\n\n isAuthenticationProblem() {\n return this.status === 401;\n }\n\n isTermsProblem() {\n // FIXME: this.message === TOS_ERROR_MESSAGE is a hack. Back-end team should come\n // with another solution.\n return this.status === 401 && this.message === TOS_ERROR_MESSAGE;\n }\n\n isLoginProblem() {\n return this.status === 401 && this.errorBody?.errors?.login;\n }\n\n isLockedAccountProblem() {\n return this.status === 401 && this.errorBody?.errors?.login?.includes(LOCKED_ERROR_MESSAGE);\n }\n\n isInvalidVerificationCode() {\n return (\n this.status === 401 &&\n this.errorBody?.errors?.login?.includes(INVALID_VERIFICATION_CODE_MESSAGE)\n );\n }\n\n isMissingVerificationCode() {\n return (\n this.status === 401 &&\n this.errorBody?.errors?.identity?.includes(MISSING_VERIFICATION_CODE_MESSAGE)\n );\n }\n}\n\nexport const baseUrl = CORVA_API_URLS.API;\n\nconst AUTH_HEADERS = getAuthorizationHeaders();\nconst JSON_HEADERS = {\n 'Content-Type': 'application/json',\n Accept: 'application/json',\n ...AUTH_HEADERS,\n};\n\nexport function handleAuthenticationProblem(e) {\n authRecovery.handleAuthFailure(e);\n}\n\nconst V1_ASSETS_REGEXP = /^\\/v1\\/assets.*/;\n\nasync function requestCore(path, config = {}, overrides = {}) {\n const { apiUrl = baseUrl, appKey, appInstanceId } = overrides;\n\n if (appKey && appInstanceId && !overrides.isRetry) {\n // Skip rate-limiter acquisition on retries. When a 401 triggers a token\n // refresh, errorHandler re-invokes requestCore with isRetry: true.\n // The original call already consumed a rate-limiter token, so acquiring\n // again would double-count a single logical request.\n // Because in the RateLimiter there is no release(),\n // the extra acquire on retries is an unrecoverable leak.\n await apiRequestsRateLimiter.acquire(appKey, appInstanceId);\n }\n\n // temporary enable cache for the heaviest request\n if (V1_ASSETS_REGEXP.test(path)) {\n config.cache = 'reload'; // eslint-disable-line no-param-reassign\n }\n\n config.credentials = 'include'; // eslint-disable-line no-param-reassign\n\n return fetch(`${apiUrl}${path}`, attachHTTPHeaders({ config, appKey, ...AUTH_HEADERS }));\n}\n\n/**\n * Used as refreshFn for AuthRecovery.\n * Triggers a token refresh request using the /v1/user_token endpoint.\n * The refresh mechanism is based on the refresh token stored in the dedicated HTTP-only cookie.\n *\n * Should not be used outside of AuthRecovery and Corva UI.\n */\nexport function refreshToken() {\n return requestCore('/v1/user_token', {\n method: 'POST',\n headers: JSON_HEADERS,\n body: JSON.stringify({ refresh_token: true }),\n }).then(response => {\n if (!response.ok) {\n throw new APIException(response, {});\n }\n });\n}\n\nfunction errorHandlerDecorator(requestCoreFunc) {\n return async function errorHandler(path, config, overrides = {}) {\n const response = await requestCoreFunc(path, config, overrides);\n\n const { status } = response;\n\n if (response.ok) {\n return status === 204 // NOTE: No content\n ? null\n : response;\n }\n\n // NOTE: Handle Error response logic\n let json;\n try {\n json = await response.json();\n } catch (e) {\n json = {};\n }\n const exception = new APIException(response, json);\n\n // Token expired: attempt refresh and retry the original request once.\n // Skip non-refreshable 401s (Terms of Service, login-credential errors) and the login/token\n // endpoint itself, where a refresh would be either pointless or self-recursive.\n const isLoginEndpoint = path.startsWith('/v1/user_token');\n if (authRecovery.isRefreshableAuthError(exception) && !isLoginEndpoint && !overrides.isRetry) {\n try {\n await authRecovery.tryRefresh();\n return errorHandler(path, config, { ...overrides, isRetry: true }); // Ensure retrying only once.\n } catch (refreshError) {\n console.error('Token refresh failed:', refreshError);\n // Refresh failed — fall through to authRecovery.handleAuthFailure\n }\n }\n\n const requestMethod = config.method;\n const isMethodToShowNotification =\n !overrides.hideNotification &&\n HTTP_METHODS_TO_SHOW_ERROR_NOTIFICATIONS.includes(requestMethod);\n\n const httpErrorMessage = DISPLAY_HTTP_MESSAGES[json.message] || HTTP_ERROR_MESSAGES[status];\n\n if (isMethodToShowNotification && httpErrorMessage) {\n console.error(httpErrorMessage);\n }\n\n authRecovery.handleAuthFailure(exception);\n\n throw exception;\n };\n}\n\nconst request = errorHandlerDecorator(requestCore);\n\n/**\n * The post method is most-often utilized to **create** new resources.\n * @async\n * @param {string} path - path to resource.\n * @param {Object=} entity - API entity to create\n * @returns {Promise<*>}\n */\nexport async function post(path, entity, requestOptions = {}) {\n const { apiUrl, withHeaders = false, signal } = requestOptions;\n const response = await request(\n path,\n {\n method: 'POST',\n headers: JSON_HEADERS,\n body: JSON.stringify(entity),\n signal,\n },\n { apiUrl, ...getAppKeyAndId() }\n );\n\n if (withHeaders) return response;\n\n return response && response.json();\n}\n\nexport async function getWithHeaders(path, queryParams = {}, requestOptions = {}) {\n const { apiUrl, signal } = requestOptions;\n const qry = queryString.stringify(queryParams, { arrayFormat: 'bracket' });\n const { appKey, ...rest } = getAppKeyAndId() || {};\n const response = await request(\n `${path}${qry ? '?' : ''}${qry}`,\n {\n method: 'GET',\n signal,\n },\n { apiUrl, appKey: requestOptions.appKey || appKey, ...rest }\n );\n\n return {\n data: response && (await response.json()),\n headers: response && response.headers,\n };\n}\n\n/**\n * The get method is used to **read** (or retrieve) a representation of a resource\n * @async\n * @param {string} path - path to resource.\n * @param {Object=} queryParams - Object with query params such as per_page, sort, asset_id, etc.\n * @param {Object=} requestOptions - Additional options for request. For example: apiUrl, signal etc.\n * @returns {Promise<*>}\n */\nexport async function get(path, queryParams = {}, requestOptions = {}) {\n const { appKey, ...rest } = getAppKeyAndId() || {};\n const dataAndHeaders = await getWithHeaders(path, queryParams, {\n ...requestOptions,\n appKey: requestOptions.appKey || appKey,\n ...rest,\n });\n return dataAndHeaders.data;\n}\n\nexport async function getFile(path, queryParams = {}, requestOptions = {}) {\n const qry = queryString.stringify(queryParams);\n const { signal } = requestOptions;\n const response = await request(\n `${path}${qry ? '?' : ''}${qry}`,\n { method: 'GET' },\n { ...getAppKeyAndId(), signal }\n );\n\n return response && response.blob();\n}\n\nexport async function put(path, content, queryParams = {}, requestOptions = {}) {\n const { apiUrl, signal } = requestOptions;\n const qry = queryString.stringify(queryParams);\n const response = await request(\n `${path}${qry ? '?' : ''}${qry}`,\n {\n method: 'PUT',\n headers: JSON_HEADERS,\n body: JSON.stringify(content),\n },\n { apiUrl, ...getAppKeyAndId(), signal }\n );\n\n return response && response.json();\n}\n\nexport async function patch(path, content, queryParams = {}, requestOptions = {}) {\n const { apiUrl, signal } = requestOptions;\n const qry = queryString.stringify(queryParams);\n\n const response = await request(\n `${path}${qry ? '?' : ''}${qry}`,\n {\n method: 'PATCH',\n headers: JSON_HEADERS,\n body: JSON.stringify(content),\n },\n {\n apiUrl,\n ...getAppKeyAndId(),\n signal,\n }\n );\n\n return response && response.json();\n}\n\nexport async function del(path, queryParams = {}, requestOptions = {}) {\n const { apiUrl, signal } = requestOptions;\n const query = queryString.stringify(queryParams);\n const response = await request(\n query ? `${path}?${query}` : path,\n {\n method: 'DELETE',\n headers: JSON_HEADERS,\n },\n {\n apiUrl,\n ...getAppKeyAndId(),\n signal,\n }\n );\n\n return response && response.json();\n}\n\nexport async function sendFormData(path, data, queryParams = {}, requestOptions = {}) {\n const query = queryString.stringify(queryParams);\n const { method = 'POST', signal } = requestOptions;\n const formData = new FormData();\n\n Object.entries(data).forEach(([key, value]) => {\n if (Array.isArray(value)) {\n value.forEach(arrayValueEntity => {\n formData.append(key, arrayValueEntity);\n });\n } else {\n formData.append(key, value);\n }\n });\n\n const response = await request(\n query ? `${path}?${query}` : path,\n {\n method,\n headers: {\n Accept: 'application/json',\n },\n body: formData,\n },\n { ...getAppKeyAndId(), signal }\n );\n\n return response && response.json();\n}\n"],"names":["authRecovery","AuthRecovery","getInstance","HTTP_ERROR_MESSAGES","HTTP_METHODS_TO_SHOW_ERROR_NOTIFICATIONS","APIException","response","json","_classCallCheck","this","status","statusText","message","errorBody","_createClass","key","value","_this$errorBody","_this$errorBody$error","errors","login","_this$errorBody2","_this$errorBody2$erro","_this$errorBody2$erro2","includes","_this$errorBody3","_this$errorBody3$erro","_this$errorBody3$erro2","_this$errorBody4","_this$errorBody4$erro","_this$errorBody4$erro2","identity","baseUrl","CORVA_API_URLS","API","AUTH_HEADERS","getAuthorizationHeaders","JSON_HEADERS","_objectSpread","Accept","V1_ASSETS_REGEXP","requestCore","_x","_requestCore","apply","arguments","_asyncToGenerator","_regeneratorRuntime","mark","path","config","overrides","_overrides$apiUrl","apiUrl","appKey","appInstanceId","_args2","wrap","_context2","prev","next","length","undefined","isRetry","apiRequestsRateLimiter","acquire","test","cache","credentials","abrupt","fetch","attachHTTPHeaders","stop","_callee2","requestCoreFunc","request","_errorHandler","_callee","exception","isLoginEndpoint","requestMethod","isMethodToShowNotification","httpErrorMessage","_args","_context","sent","ok","t0","startsWith","isRefreshableAuthError","tryRefresh","errorHandler","t1","console","error","method","hideNotification","DISPLAY_HTTP_MESSAGES","handleAuthFailure","_x2","_x3","_post","_callee3","entity","requestOptions","_requestOptions$withH","withHeaders","signal","_args3","_context3","headers","body","JSON","stringify","getAppKeyAndId","getWithHeaders","_x6","_getWithHeaders","queryParams","qry","_ref","rest","_args4","_context4","queryString","arrayFormat","_objectWithoutProperties","_excluded","t2","data","_callee4","_get","_ref2","dataAndHeaders","_args5","_context5","_excluded2","_callee5","_put","_callee7","content","_args7","_context7","_patch","_callee8","_args8","_context8","_del","query","_args9","_context9","concat","_callee9","_sendFormData","_callee10","_requestOptions$metho","formData","_args10","_context10","FormData","Object","entries","forEach","_ref3","_ref4","_slicedToArray","Array","isArray","arrayValueEntity","append","_x13","_x7","_x11","_x12","_x4","_x5","_x9","_x10","refresh_token","then","_x14","_x15"],"mappings":"6lDAaaA,EAAeC,EAAYA,aAACC,cAEnCC,EAAsB,CAC1B,IAAK,iBACL,IAAK,gBACL,IAAK,aAQDC,EAA2C,CAE/C,OACA,MACA,QACA,UAGWC,EAAY,WACvB,SAAYC,EAAAA,EAAUC,GAAMC,UAAAC,KAAAJ,GAC1BI,KAAKC,OAASJ,EAASI,OACvBD,KAAKE,WAAaL,EAASK,WAC3BF,KAAKG,QAAUL,EAAKK,SAAW,aAC/BH,KAAKI,UAAYN,CACnB,CAgCC,OAhCAO,EAAA,QAAAT,EAAA,CAAA,CAAAU,IAAA,0BAAAC,MAED,WACE,OAAuB,MAAhBP,KAAKC,MACd,GAAC,CAAAK,IAAA,iBAAAC,MAED,WAGE,OAAuB,MAAhBP,KAAKC,QA5BU,8CA4BQD,KAAKG,OACrC,GAAC,CAAAG,IAAA,iBAAAC,MAED,WAAiB,IAAAC,EAAAC,EACf,OAAuB,MAAhBT,KAAKC,SAAkB,QAAAO,EAAAR,KAAKI,iBAAL,IAAAI,GAAsB,QAAtBC,EAAAD,EAAgBE,cAAM,IAAAD,OAAtB,EAAAA,EAAwBE,MACxD,GAAC,CAAAL,IAAA,yBAAAC,MAED,WAAyB,IAAAK,EAAAC,EAAAC,EACvB,OAAuB,MAAhBd,KAAKC,SAAgC,QAAdW,EAAAZ,KAAKI,iBAAS,IAAAQ,GAAQ,QAARC,EAAdD,EAAgBF,cAAM,IAAAG,GAAO,QAAPC,EAAtBD,EAAwBF,aAAK,IAAAG,OAAf,EAAdA,EAA+BC,SAnCpC,2BAoC3B,GAAC,CAAAT,IAAA,4BAAAC,MAED,WAA4B,IAAAS,EAAAC,EAAAC,EAC1B,OACkB,MAAhBlB,KAAKC,SACS,QAAde,EAAAhB,KAAKI,iBAAS,IAAAY,GAAQ,QAARC,EAAdD,EAAgBN,cAAM,IAAAO,GAAO,QAAPC,EAAtBD,EAAwBN,aAAK,IAAAO,OAAf,EAAdA,EAA+BH,SAxCK,6BA0CxC,GAAC,CAAAT,IAAA,4BAAAC,MAED,WAA4B,IAAAY,EAAAC,EAAAC,EAC1B,OACkB,MAAhBrB,KAAKC,SACS,QAAdkB,EAAAnB,KAAKI,iBAAS,IAAAe,GAAQ,QAARC,EAAdD,EAAgBT,cAAM,IAAAU,GAAU,QAAVC,EAAtBD,EAAwBE,gBAAQ,IAAAD,OAAlB,EAAdA,EAAkCN,SA9CE,6BAgDxC,KAACnB,CAAA,CAtCsB,GAyCZ2B,EAAUC,EAAcA,eAACC,IAEhCC,EAAeC,EAAuBA,0BACtCC,EAAYC,EAAA,CAChB,eAAgB,mBAChBC,OAAQ,oBACLJ,GAOCK,EAAmB,kBAAkB,SAE5BC,EAAWC,GAAA,OAAAC,EAAAC,MAAAnC,KAAAoC,UAAA,CAuB1B,SAAAF,IAFC,OAEDA,EAAAG,EAAA,QAAAC,EAAA,QAAAC,MAvBA,WAA2BC,GAAI,IAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAX,UAAA,OAAAE,UAAAU,MAAA,SAAAC,GAAA,OAAA,OAAAA,EAAAC,KAAAD,EAAAE,MAAA,KAAA,EACkB,GADhBV,EAAMM,EAAAK,OAAA,QAAAC,IAAAN,EAAA,GAAAA,EAAA,GAAG,CAAA,EAAIL,EAASK,EAAAK,OAAA,QAAAC,IAAAN,EAAA,GAAAA,EAAA,GAAG,CAAA,EAAEJ,EACND,EAA5CE,OAAAA,OAAM,IAAAD,EAAGpB,EAASsB,EAAAA,EAA0BH,EAA1BG,OAAQC,EAAkBJ,EAAlBI,eAE9BD,IAAUC,GAAkBJ,EAAUY,QAAO,CAAAL,EAAAE,KAAA,EAAA,KAAA,CAAA,OAAAF,EAAAE,KAAA,EAOzCI,yBAAuBC,QAAQX,EAAQC,GAAc,KAAA,EAQ7B,OAJ5Bf,EAAiB0B,KAAKjB,KACxBC,EAAOiB,MAAQ,UAGjBjB,EAAOkB,YAAc,UAAWV,EAAAW,OAAA,SAEzBC,MAASjB,GAAAA,OAAAA,GAASJ,OAAAA,GAAQsB,EAAAA,kBAAiBjC,EAAA,CAAGY,OAAAA,EAAQI,OAAAA,GAAWnB,MAAgB,KAAA,EAAA,IAAA,MAAA,OAAAuB,EAAAc,OAAA,GAAAC,EACzF,KAAA9B,EAAAC,MAAAnC,KAAAoC,UAAA,CAyED,IApD+B6B,EAoDzBC,GApDyBD,EAoDOjC,EAnDpC,WAAA,IAAOmC,EAAA9B,EAAAA,QAAAC,EAAA,QAAAC,MAAA,SAAA6B,EAA4B5B,EAAMC,GAAM,IAAAC,EAAA7C,EAAAI,EAAAH,EAAAuE,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAtC,UAAA,OAAAE,UAAAU,MAAA,SAAA2B,GAAA,OAAA,OAAAA,EAAAzB,KAAAyB,EAAAxB,MAAA,KAAA,EAAgB,OAAdT,EAASgC,EAAAtB,OAAA,QAAAC,IAAAqB,EAAA,GAAAA,EAAA,GAAG,CAAA,EAAEC,EAAAxB,KAAA,EACtCc,EAAgBzB,EAAMC,EAAQC,GAAU,KAAA,EAEjD,GAFR7C,EAAQ8E,EAAAC,KAEN3E,EAAWJ,EAAXI,QAEJJ,EAASgF,GAAE,CAAAF,EAAAxB,KAAA,EAAA,KAAA,CAAA,OACNlD,EAAAA,OAAAA,SAAW,MAAXA,EACH,KACAJ,GAAQ,KAAA,EAAA,OAAA8E,EAAAzB,KAAA,EAAAyB,EAAAxB,KAAA,GAMCtD,EAASC,OAAM,KAAA,GAA5BA,EAAI6E,EAAAC,KAAAD,EAAAxB,KAAA,GAAA,MAAA,KAAA,GAAAwB,EAAAzB,KAAA,GAAAyB,EAAAG,GAAAH,EAAA,MAAA,GAEJ7E,EAAO,CAAA,EAAG,KAAA,GAO6C,GALnDuE,EAAY,IAAIzE,EAAaC,EAAUC,GAKvCwE,EAAkB9B,EAAKuC,WAAW,mBACpCxF,EAAayF,uBAAuBX,IAAeC,GAAoB5B,EAAUY,QAAO,CAAAqB,EAAAxB,KAAA,GAAA,KAAA,CAAA,OAAAwB,EAAAzB,KAAA,GAAAyB,EAAAxB,KAAA,GAElF5D,EAAa0F,aAAY,KAAA,GAAA,OAAAN,EAAAf,OAAA,SACxBsB,EAAa1C,EAAMC,SAAaC,GAAS,CAAA,EAAA,CAAEY,SAAS,MAAO,KAAA,GAAAqB,EAAAzB,KAAA,GAAAyB,EAAAQ,GAAAR,EAAA,MAAA,IAElES,QAAQC,MAAM,wBAAsCV,EAAAQ,IACpD,KAAA,GAesC,MAXpCZ,EAAgB9B,EAAO6C,OACvBd,GACH9B,EAAU6C,kBACX5F,EAAyCoB,SAASwD,GAE9CE,EAAmBe,EAAqBA,sBAAC1F,EAAKK,UAAYT,EAAoBO,GAEhFuE,GAA8BC,GAChCW,QAAQC,MAAMZ,GAGhBlF,EAAakG,kBAAkBpB,GAEzBA,EAAS,KAAA,GAAA,IAAA,MAAA,OAAAM,EAAAZ,OAAA,GAAAK,EAAA,KAAA,CAAA,CAAA,EAAA,IAAA,CAAA,GAAA,KAChB,KAAA,SAhDqBc,EAAYQ,EAAAC,GAAA,OAAAxB,EAAAhC,MAAAnC,KAAAoC,UAAA,CAAA,OAAZ8C,CAAY,CAAlC,IA4ED,SAAAU,IAAA,OAAAA,EAhBMvD,EAAA,QAAAC,UAAAC,MAAA,SAAAsD,EAAoBrD,EAAMsD,GAAM,IAAAC,EAAAnD,EAAAoD,EAAAC,EAAAC,EAAArG,EAAAsG,EAAA/D,UAAA,OAAAE,UAAAU,MAAA,SAAAoD,GAAA,OAAA,OAAAA,EAAAlD,KAAAkD,EAAAjD,MAAA,KAAA,EACM,OADJ4C,EAAcI,EAAA/C,OAAA,QAAAC,IAAA8C,EAAA,GAAAA,EAAA,GAAG,CAAA,EAChDvD,EAAwCmD,EAAxCnD,OAAMoD,EAAkCD,EAAhCE,YAAAA,cAAmBD,EAAEE,EAAWH,EAAXG,OAAME,EAAAjD,KAAA,EACpBe,EACrB1B,EACA,CACE8C,OAAQ,OACRe,QAASzE,EACT0E,KAAMC,KAAKC,UAAUV,GACrBI,OAAAA,GACDrE,EAAA,CACCe,OAAAA,GAAW6D,EAAAA,mBACd,KAAA,EATa,GAAR5G,EAAQuG,EAAAxB,MAWVqB,EAAW,CAAAG,EAAAjD,KAAA,EAAA,KAAA,CAAA,OAAAiD,EAAAxC,OAAA,SAAS/D,GAAQ,KAAA,EAAA,OAAAuG,EAAAxC,OAAA,SAEzB/D,GAAYA,EAASC,QAAM,KAAA,EAAA,IAAA,MAAA,OAAAsG,EAAArC,OAAA,GAAA8B,EACnC,KAAAD,EAAAzD,MAAAnC,KAAAoC,UAAA,CAED,SAAsBsE,EAAcC,GAAA,OAAAC,EAAAzE,MAAAnC,KAAAoC,UAAA,CAmBpC,SAAAwE,IAFC,OAEDA,EAAAvE,EAAA,QAAAC,EAAA,QAAAC,MAnBO,WAA8BC,GAAI,IAAAqE,EAAAd,EAAAnD,EAAAsD,EAAAY,EAAAC,EAAAlE,EAAAmE,EAAAnH,EAAAoH,EAAA7E,UAAA,OAAAE,UAAAU,MAAA,SAAAkE,GAAA,OAAA,OAAAA,EAAAhE,KAAAgE,EAAA/D,MAAA,KAAA,EAGhB,OAHkB0D,EAAWI,EAAA7D,OAAA,QAAAC,IAAA4D,EAAA,GAAAA,EAAA,GAAG,CAAA,EAAIlB,EAAckB,EAAA7D,OAAA,QAAAC,IAAA4D,EAAA,GAAAA,EAAA,GAAG,CAAA,EACpErE,EAAmBmD,EAAnBnD,OAAQsD,EAAWH,EAAXG,OACVY,EAAMK,EAAYX,UAAUK,EAAa,CAAEO,YAAa,YAAYL,EAC9CN,EAAcA,kBAAM,CAAE,EAA1C5D,EAAMkE,EAANlE,OAAWmE,EAAIK,EAAAA,QAAAN,EAAAO,GAAAJ,EAAA/D,KAAA,EACAe,EAClB1B,GAAAA,OAAAA,GAAOsE,OAAAA,EAAM,IAAM,IAAKA,OAAAA,GAC3B,CACExB,OAAQ,MACRY,OAAAA,GACDrE,EAAA,CACCe,OAAAA,EAAQC,OAAQkD,EAAelD,QAAUA,GAAWmE,IACvD,KAAA,EAGe,GAVVnH,EAAQqH,EAAAtC,KAAAsC,EAAApC,GAUNjF,GAAQqH,EAAApC,GAAA,CAAAoC,EAAA/D,KAAA,GAAA,KAAA,CAAA,OAAA+D,EAAA/D,KAAA,GAAWtD,EAASC,OAAM,KAAA,GAAAoH,EAAApC,GAAAoC,EAAAtC,KAAA,KAAA,GACH,OADGsC,EAAA/B,GAAA+B,EAAApC,GAAAoC,EAAAK,GAC/B1H,GAAYA,EAASwG,QAAOa,EAAAtD,OAAA,SAAA,CADrC4D,KAAIN,EAAA/B,GACJkB,QAAOa,EAAAK,KAAA,KAAA,GAAA,IAAA,MAAA,OAAAL,EAAAnD,OAAA,GAAA0D,EAEV,KAAAb,EAAAzE,MAAAnC,KAAAoC,UAAA,CAkBA,SAAAsF,IAAA,OAAAA,EAAArF,EAAA,QAAAC,EAAA,QAAAC,MARM,WAAmBC,GAAI,IAAAqE,EAAAd,EAAA4B,EAAA9E,EAAAmE,EAAAY,EAAAC,EAAAzF,UAAA,OAAAE,UAAAU,MAAA,SAAA8E,GAAA,OAAA,OAAAA,EAAA5E,KAAA4E,EAAA3E,MAAA,KAAA,EACL,OADO0D,EAAWgB,EAAAzE,OAAA,QAAAC,IAAAwE,EAAA,GAAAA,EAAA,GAAG,CAAA,EAAI9B,EAAc8B,EAAAzE,OAAA,QAAAC,IAAAwE,EAAA,GAAAA,EAAA,GAAG,CAAA,EAAEF,EACvClB,EAAcA,kBAAM,CAAE,EAA1C5D,EAAM8E,EAAN9E,OAAWmE,EAAIK,EAAAA,QAAAM,EAAAI,GAAAD,EAAA3E,KAAA,EACMuD,EAAelE,EAAMqE,SAC7Cd,GAAc,GAAA,CACjBlD,OAAQkD,EAAelD,QAAUA,GAC9BmE,IACH,KAAA,EAJkB,OAAdY,EAAcE,EAAAlD,KAKbgD,EAAAA,OAAAA,SAAAA,EAAeJ,MAAI,KAAA,EAAA,IAAA,MAAA,OAAAM,EAAA/D,OAAA,GAAAiE,EAC3B,KAAAN,EAAAvF,MAAAnC,KAAAoC,UAAA,CA4BA,SAAA6F,IAAA,OAAAA,EAdM5F,EAAA,QAAAC,UAAAC,MAAA,SAAA2F,EAAmB1F,EAAM2F,GAAO,IAAAtB,EAAAd,EAAAnD,EAAAsD,EAAAY,EAAAjH,EAAAuI,EAAAhG,UAAA,OAAAE,UAAAU,MAAA,SAAAqF,GAAA,OAAA,OAAAA,EAAAnF,KAAAmF,EAAAlF,MAAA,KAAA,EAES,OAFP0D,EAAWuB,EAAAhF,OAAA,QAAAC,IAAA+E,EAAA,GAAAA,EAAA,GAAG,CAAA,EAAIrC,EAAcqC,EAAAhF,OAAA,QAAAC,IAAA+E,EAAA,GAAAA,EAAA,GAAG,CAAA,EAClExF,EAAmBmD,EAAnBnD,OAAQsD,EAAWH,EAAXG,OACVY,EAAMK,EAAYX,UAAUK,GAAYwB,EAAAlF,KAAA,EACvBe,EAClB1B,GAAAA,OAAAA,GAAOsE,OAAAA,EAAM,IAAM,IAAKA,OAAAA,GAC3B,CACExB,OAAQ,MACRe,QAASzE,EACT0E,KAAMC,KAAKC,UAAU2B,IACtBtG,EAAAA,EAAA,CACCe,OAAAA,GAAW6D,EAAcA,kBAAE,GAAA,CAAEP,OAAAA,KAChC,KAAA,EARa,OAARrG,EAAQwI,EAAAzD,KAAAyD,EAAAzE,OAAA,SAUP/D,GAAYA,EAASC,QAAM,KAAA,EAAA,IAAA,MAAA,OAAAuI,EAAAtE,OAAA,GAAAmE,EACnC,KAAAD,EAAA9F,MAAAnC,KAAAoC,UAAA,CAqBA,SAAAkG,IAAA,OAAAA,EAnBMjG,EAAA,QAAAC,UAAAC,MAAA,SAAAgG,EAAqB/F,EAAM2F,GAAO,IAAAtB,EAAAd,EAAAnD,EAAAsD,EAAAY,EAAAjH,EAAA2I,EAAApG,UAAA,OAAAE,UAAAU,MAAA,SAAAyF,GAAA,OAAA,OAAAA,EAAAvF,KAAAuF,EAAAtF,MAAA,KAAA,EAEO,OAFL0D,EAAW2B,EAAApF,OAAA,QAAAC,IAAAmF,EAAA,GAAAA,EAAA,GAAG,CAAA,EAAIzC,EAAcyC,EAAApF,OAAA,QAAAC,IAAAmF,EAAA,GAAAA,EAAA,GAAG,CAAA,EACpE5F,EAAmBmD,EAAnBnD,OAAQsD,EAAWH,EAAXG,OACVY,EAAMK,EAAYX,UAAUK,GAAY4B,EAAAtF,KAAA,EAEvBe,EAClB1B,GAAAA,OAAAA,GAAOsE,OAAAA,EAAM,IAAM,IAAKA,OAAAA,GAC3B,CACExB,OAAQ,QACRe,QAASzE,EACT0E,KAAMC,KAAKC,UAAU2B,IACtBtG,EAAAA,EAAA,CAECe,OAAAA,GACG6D,EAAcA,kBAAE,GAAA,CACnBP,OAAAA,KAEH,KAAA,EAZa,OAARrG,EAAQ4I,EAAA7D,KAAA6D,EAAA7E,OAAA,SAcP/D,GAAYA,EAASC,QAAM,KAAA,EAAA,IAAA,MAAA,OAAA2I,EAAA1E,OAAA,GAAAwE,EACnC,KAAAD,EAAAnG,MAAAnC,KAAAoC,UAAA,CAmBA,SAAAsG,IAAA,OAAAA,EAAArG,EAAA,QAAAC,EAAA,QAAAC,MAjBM,WAAmBC,GAAI,IAAAqE,EAAAd,EAAAnD,EAAAsD,EAAAyC,EAAA9I,EAAA+I,EAAAxG,UAAA,OAAAE,UAAAU,MAAA,SAAA6F,GAAA,OAAA,OAAAA,EAAA3F,KAAA2F,EAAA1F,MAAA,KAAA,EAEoB,OAFlB0D,EAAW+B,EAAAxF,OAAA,QAAAC,IAAAuF,EAAA,GAAAA,EAAA,GAAG,CAAA,EAAI7C,EAAc6C,EAAAxF,OAAA,QAAAC,IAAAuF,EAAA,GAAAA,EAAA,GAAG,CAAA,EACzDhG,EAAmBmD,EAAnBnD,OAAQsD,EAAWH,EAAXG,OACVyC,EAAQxB,EAAYX,UAAUK,GAAYgC,EAAA1F,KAAA,EACzBe,EACrByE,EAAK,GAAAG,OAAMtG,EAAQmG,KAAAA,OAAAA,GAAUnG,EAC7B,CACE8C,OAAQ,SACRe,QAASzE,GACVC,EAAAA,EAAA,CAECe,OAAAA,GACG6D,EAAcA,kBAAE,GAAA,CACnBP,OAAAA,KAEH,KAAA,EAXa,OAARrG,EAAQgJ,EAAAjE,KAAAiE,EAAAjF,OAAA,SAaP/D,GAAYA,EAASC,QAAM,KAAA,EAAA,IAAA,MAAA,OAAA+I,EAAA9E,OAAA,GAAAgF,EACnC,KAAAL,EAAAvG,MAAAnC,KAAAoC,UAAA,CA8BA,SAAA4G,IAAA,OAAAA,EA5BM3G,EAAA,QAAAC,UAAAC,MAAA,SAAA0G,EAA4BzG,EAAMgF,GAAI,IAAAX,EAAAd,EAAA4C,EAAAO,EAAA5D,EAAAY,EAAAiD,EAAAtJ,EAAAuJ,EAAAhH,UAAA,OAAAE,UAAAU,MAAA,SAAAqG,GAAA,OAAA,OAAAA,EAAAnG,KAAAmG,EAAAlG,MAAA,KAAA,EAaxC,OAb0C0D,EAAWuC,EAAAhG,OAAA,QAAAC,IAAA+F,EAAA,GAAAA,EAAA,GAAG,CAAA,EAAIrD,EAAcqD,EAAAhG,OAAA,QAAAC,IAAA+F,EAAA,GAAAA,EAAA,GAAG,CAAA,EAC1ET,EAAQxB,EAAYX,UAAUK,GAAYqC,EACZnD,EAA5BT,OAAAA,OAAM,IAAA4D,EAAG,OAAMA,EAAEhD,EAAWH,EAAXG,OACnBiD,EAAW,IAAIG,SAErBC,OAAOC,QAAQhC,GAAMiC,SAAQ,SAAkBC,GAAA,IAAAC,EAAAC,EAAAA,QAAAF,EAAA,GAAhBpJ,EAAGqJ,EAAA,GAAEpJ,EAAKoJ,EAAA,GACnCE,MAAMC,QAAQvJ,GAChBA,EAAMkJ,SAAQ,SAAAM,GACZZ,EAASa,OAAO1J,EAAKyJ,EACvB,IAEAZ,EAASa,OAAO1J,EAAKC,EAEzB,IAAG8I,EAAAlG,KAAA,EAEoBe,EACrByE,EAAK,GAAAG,OAAMtG,EAAQmG,KAAAA,OAAAA,GAAUnG,EAC7B,CACE8C,OAAAA,EACAe,QAAS,CACPvE,OAAQ,oBAEVwE,KAAM6C,GACPtH,EAAAA,EAAA,CAAA,EACI4E,EAAAA,kBAAgB,CAAA,EAAA,CAAEP,OAAAA,KACxB,KAAA,EAVa,OAARrG,EAAQwJ,EAAAzE,KAAAyE,EAAAzF,OAAA,SAYP/D,GAAYA,EAASC,QAAM,KAAA,GAAA,IAAA,MAAA,OAAAuJ,EAAAtF,OAAA,GAAAkF,EACnC,KAAAD,EAAA7G,MAAAnC,KAAAoC,UAAA,6EA/CD,SAAyB6H,GAAA,OAAAvB,EAAAvG,MAAAnC,KAAAoC,UAAA,cA3DzB,SAAyB8H,GAAA,OAAAxC,EAAAvF,MAAAnC,KAAAoC,UAAA,yCAsCzB,SAA2B+H,EAAAC,GAAA,OAAA9B,EAAAnG,MAAAnC,KAAAoC,UAAA,eAnF3B,SAA0BiI,EAAAC,GAAA,OAAA1E,EAAAzD,MAAAnC,KAAAoC,UAAA,cAmE1B,SAAyBmI,EAAAC,GAAA,OAAAvC,EAAA9F,MAAAnC,KAAAoC,UAAA,uBA5IlB,WACL,OAAOJ,EAAY,iBAAkB,CACnCsD,OAAQ,OACRe,QAASzE,EACT0E,KAAMC,KAAKC,UAAU,CAAEiE,eAAe,MACrCC,MAAK,SAAA7K,GACN,IAAKA,EAASgF,GACZ,MAAM,IAAIjF,EAAaC,EAAU,CAAA,EAErC,GACF,uBA0LA,SAAkC8K,EAAAC,GAAA,OAAA5B,EAAA7G,MAAAnC,KAAAoC,UAAA"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@babel/runtime/helpers/defineProperty"),t=require("./get-channel-name.js"),
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@babel/runtime/helpers/defineProperty"),t=require("./get-channel-name.js"),n=require("./subscriptions-client.factory.js");function r(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var o=r(e);function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function c(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?i(Object(n),!0).forEach((function(t){o.default(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):i(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}var u={subscribe:function(e,r){var o=r.onDataReceive,i=n.SubscriptionsClientFactory.init(),u=t.getChannelName(e);return i.subscribe(u,(function(t){return o(c(c({},e),{},{data:t}))}))},onConnectionChange:function(e){return n.SubscriptionsClientFactory.init().onConnectionChange(e)},disconnect:function(){n.SubscriptionsClientFactory.dispose()},ensureConnected:function(){var e;null===(e=n.SubscriptionsClientFactory.get())||void 0===e||e.ensureConnected()}};exports.socketClientV2=u;
|
|
2
2
|
//# sourceMappingURL=socket-client.v2.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"socket-client.v2.js","sources":["../../../../src/clients/subscriptions/socket-client.v2.ts"],"sourcesContent":["import { getChannelName } from './get-channel-name';\nimport { SubscriptionsClientFactory } from './subscriptions-client.factory';\nimport { SubscribeOptions, OnConnectionChange } from './types';\n\nexport const socketClientV2 = {\n subscribe: <O extends SubscribeOptions = SubscribeOptions, T = Record<string, any>>(\n subscription: O,\n { onDataReceive }: { onDataReceive: (data: O & { data: T }) => any }\n ) => {\n const client = SubscriptionsClientFactory.init();\n const channel = getChannelName(subscription);\n\n return client.subscribe<T>(channel, data => onDataReceive({ ...subscription, data }));\n },\n onConnectionChange: (handler: OnConnectionChange) => {\n const client = SubscriptionsClientFactory.init();\n return client.onConnectionChange(handler);\n },\n disconnect: () => {\n
|
|
1
|
+
{"version":3,"file":"socket-client.v2.js","sources":["../../../../src/clients/subscriptions/socket-client.v2.ts"],"sourcesContent":["import { getChannelName } from './get-channel-name';\nimport { SubscriptionsClientFactory } from './subscriptions-client.factory';\nimport { SubscribeOptions, OnConnectionChange } from './types';\n\nexport const socketClientV2 = {\n subscribe: <O extends SubscribeOptions = SubscribeOptions, T = Record<string, any>>(\n subscription: O,\n { onDataReceive }: { onDataReceive: (data: O & { data: T }) => any }\n ) => {\n const client = SubscriptionsClientFactory.init();\n const channel = getChannelName(subscription);\n\n return client.subscribe<T>(channel, data => onDataReceive({ ...subscription, data }));\n },\n onConnectionChange: (handler: OnConnectionChange) => {\n const client = SubscriptionsClientFactory.init();\n return client.onConnectionChange(handler);\n },\n /**\n * Disconnect and drop the shared client (logout). The next `subscribe` builds a fresh socket.\n */\n disconnect: () => {\n SubscriptionsClientFactory.dispose();\n },\n /**\n * Reconnect the shared client if it has given up (e.g. an expired session while the tab was\n * suspended). No-op when there is no client yet, it is connected, or it is already retrying.\n */\n ensureConnected: () => {\n SubscriptionsClientFactory.get()?.ensureConnected();\n },\n};\n"],"names":["socketClientV2","subscribe","subscription","_ref","onDataReceive","client","SubscriptionsClientFactory","init","channel","getChannelName","data","onConnectionChange","handler","disconnect","dispose","ensureConnected","_SubscriptionsClientF","get"],"mappings":"u2BAIO,IAAMA,EAAiB,CAC5BC,UAAW,SACTC,EAEGC,GAAA,IADDC,IAAAA,cAEIC,EAASC,6BAA2BC,OACpCC,EAAUC,iBAAeP,GAE/B,OAAOG,EAAOJ,UAAaO,GAAS,SAAAE,GAAI,OAAIN,SAAmBF,GAAY,GAAA,CAAEQ,KAAAA,OAC9E,EACDC,mBAAoB,SAACC,GAEnB,OADeN,6BAA2BC,OAC5BI,mBAAmBC,EAClC,EAIDC,WAAY,WACVP,EAA0BA,2BAACQ,SAC5B,EAKDC,gBAAiB,WAAM,IAAAC,EACrB,QAAAA,EAAAV,EAAAA,2BAA2BW,aAA3B,IAAAD,GAAAA,EAAkCD,iBACpC"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@babel/runtime/helpers/asyncToGenerator"),t=require("@babel/runtime/helpers/defineProperty"),r=require("@babel/runtime/regenerator"),n=require("../api/apiCore.js"),o=require("../clientStorage/index.js"),u=require("./constants.js");function i(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var c=i(e),a=i(t),l=i(r);function f(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function s(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?f(Object(r),!0).forEach((function(t){a.default(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):f(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}var p=new Set(["token_expired","credentials_required","invalid_token"]),d=function(e){var t;return"UnauthorizedError"===(null==e||null===(t=e.data)||void 0===t?void 0:t.type)},h=function(){return{tryRefresh:function(){return n.authRecovery.tryRefresh()},handleAuthFailure:function(e){function t(t){return e.apply(this,arguments)}return t.toString=function(){return e.toString()},t}((function(e){return n.authRecovery.handleAuthFailure(e)})),isLoginRoute:function(){return u.LOGIN_ROUTES_REGEXP.test(window.location.pathname)},isImpersonating:function(){return o.isImpersonating()}}};exports.AUTH_RECONNECT_BASE_DELAY_MS=1e3,exports.MAX_AUTH_RECONNECT_ATTEMPTS=3,exports.attachAuthRecovery=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=s(s({},h()),t),n=r.tryRefresh,o=r.handleAuthFailure,u=r.isLoginRoute,i=r.isImpersonating,a=0,f=null,v=null,b=!1,y=function(){null!==f&&(clearTimeout(f),f=null)},O=function(){if(!(b||null!==f||a>=3)){var e=.75+.5*Math.random(),t=1e3*Math.pow(2,a)*e;a+=1,f=setTimeout((function(){f=null,g()}),t)}},g=function(){return v||(v=c.default(l.default.mark((function t(){return l.default.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.prev=0,t.next=3,n();case 3:t.next=10;break;case 5:return t.prev=5,t.t0=t.catch(0),o(t.t0),O(),t.abrupt("return");case 10:b||e.connect();case 11:case"end":return t.stop()}}),t,null,[[0,5]])})))().finally((function(){v=null})))},j=function(e){var t;if(d(e)){var r=null===(t=e.data)||void 0===t?void 0:t.code;r&&p.has(r)&&(u()||i()||O())}},_=function(){a=0};return e.on("connect_error",j),e.on("connect",_),{ensureConnected:function(){if(!(b||e.connected||e.active||v)){if(a=0,null!==f)return y(),void g();e.connect()}},dispose:function(){b=!0,y(),e.off("connect_error",j),e.off("connect",_)}}},exports.isUnauthorizedConnectError=d;
|
|
2
|
+
//# sourceMappingURL=subscriptions-auth-recovery.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"subscriptions-auth-recovery.js","sources":["../../../../src/clients/subscriptions/subscriptions-auth-recovery.ts"],"sourcesContent":["import type { Socket } from 'socket.io-client';\nimport { authRecovery } from '../api/apiCore';\nimport { isImpersonating as isImpersonatingSession } from '../clientStorage';\nimport { LOGIN_ROUTES_REGEXP } from './constants';\n\n/**\n * Handshake rejection codes sent by corva-subscriptions (see its README, \"Handshake rejections\").\n */\nexport type UnauthorizedErrorCode =\n | 'credentials_required'\n | 'credentials_bad_format'\n | 'token_expired'\n | 'invalid_token';\n\ntype ConnectError = Error & {\n data?: { type?: string; code?: UnauthorizedErrorCode | string; message?: string };\n};\n\nexport const MAX_AUTH_RECONNECT_ATTEMPTS = 3;\nexport const AUTH_RECONNECT_BASE_DELAY_MS = 1_000;\n\n/**\n * Codes a session refresh can fix. `invalid_token` is included because a server that predates the\n * `token_expired` code reports an expired token that way; the attempt cap bounds the cost when the\n * token really is invalid. `credentials_bad_format` is a client bug and is never retried.\n */\nconst REFRESHABLE_CODES: ReadonlySet<string> = new Set([\n 'token_expired',\n 'credentials_required',\n 'invalid_token',\n]);\n\nexport const isUnauthorizedConnectError = (err: unknown): err is ConnectError =>\n (err as ConnectError | undefined)?.data?.type === 'UnauthorizedError';\n\nexport interface AuthRecoveryDeps {\n tryRefresh: () => Promise<void>;\n handleAuthFailure: (error: unknown) => void;\n isLoginRoute: () => boolean;\n /**\n * Impersonation swaps only the auth cookie; the refresh cookie stays the admin's. A refresh would\n * therefore come back as a plain admin session and silently end the impersonation, so while\n * impersonating the socket is left down and the existing HTTP 401 handling decides what happens.\n */\n isImpersonating: () => boolean;\n}\n\nexport interface SocketAuthRecovery {\n /**\n * Reconnect a socket that has given up: socket.io stops reconnecting for good after a handshake\n * rejection, and so do we once the attempt cap is reached. No-op while connected or while either\n * side is still retrying. Meant for \"the tab is visible again\" moments.\n */\n ensureConnected(): void;\n /** Detach the listeners and cancel any pending retry. */\n dispose(): void;\n}\n\nconst defaultDeps = (): AuthRecoveryDeps => ({\n tryRefresh: () => authRecovery.tryRefresh(),\n handleAuthFailure: error =>\n authRecovery.handleAuthFailure(error as Parameters<typeof authRecovery.handleAuthFailure>[0]),\n isLoginRoute: () => LOGIN_ROUTES_REGEXP.test(window.location.pathname),\n isImpersonating: () => isImpersonatingSession(),\n});\n\n/**\n * Recover from an authentication rejection at the socket.io handshake.\n *\n * The server verifies the session cookie once, during the handshake. When the JWT in it has\n * expired (typically after the tab was suspended long enough for the connection to drop), the\n * handshake is rejected and socket.io-client treats that as final: it destroys the socket and sets\n * `skipReconnect`, so nothing ever retries. HTTP calls recover through `AuthRecovery` on their next\n * 401, but the socket never issues an HTTP call, so it stayed dead until a page reload.\n *\n * This closes the loop: on an `UnauthorizedError` connect_error, refresh the session (the browser\n * then re-sends the fresh cookie on the next handshake) and call `socket.connect()`, with capped\n * exponential backoff. A failed refresh is handed to `AuthRecovery.handleAuthFailure`, which\n * redirects to /login when the session is really gone and does nothing for a transient failure.\n */\nexport const attachAuthRecovery = (\n socket: Socket,\n deps: Partial<AuthRecoveryDeps> = {}\n): SocketAuthRecovery => {\n const { tryRefresh, handleAuthFailure, isLoginRoute, isImpersonating } = {\n ...defaultDeps(),\n ...deps,\n };\n\n let attempts = 0;\n let timer: ReturnType<typeof setTimeout> | null = null;\n /** The refresh currently in flight, so a resume does not connect with the stale cookie meanwhile. */\n let refreshing: Promise<void> | null = null;\n let disposed = false;\n\n const clearTimer = () => {\n if (timer !== null) {\n clearTimeout(timer);\n timer = null;\n }\n };\n\n const schedule = () => {\n if (disposed || timer !== null || attempts >= MAX_AUTH_RECONNECT_ATTEMPTS) return;\n\n const jitter = 0.75 + Math.random() * 0.5;\n const delay = AUTH_RECONNECT_BASE_DELAY_MS * 2 ** attempts * jitter;\n\n attempts += 1;\n timer = setTimeout(() => {\n timer = null;\n void refreshAndConnect();\n }, delay);\n };\n\n const refreshAndConnect = () => {\n if (refreshing) return refreshing;\n\n refreshing = (async () => {\n try {\n await tryRefresh();\n } catch (error) {\n handleAuthFailure(error);\n // A transient failure (network) gets another go within the cap; a redirect unloads the page.\n schedule();\n return;\n }\n\n if (!disposed) socket.connect();\n })().finally(() => {\n refreshing = null;\n });\n\n return refreshing;\n };\n\n const onConnectError = (err: Error) => {\n if (!isUnauthorizedConnectError(err)) return; // transport errors: socket.io retries those itself\n\n const code = err.data?.code;\n if (!code || !REFRESHABLE_CODES.has(code)) return;\n // After logout there is no refresh cookie; every /v1/user_token call would just 401.\n if (isLoginRoute()) return;\n // See AuthRecoveryDeps.isImpersonating: refreshing here would end the impersonation.\n if (isImpersonating()) return;\n\n schedule();\n };\n\n const onConnect = () => {\n attempts = 0;\n };\n\n socket.on('connect_error', onConnectError);\n socket.on('connect', onConnect);\n\n return {\n ensureConnected: () => {\n // `active` is true while socket.io itself is (re)connecting; leave it alone then.\n if (disposed || socket.connected || socket.active) return;\n // The in-flight refresh connects when it resolves; connecting now would handshake with the\n // cookie that was just rejected.\n if (refreshing) return;\n\n attempts = 0;\n\n if (timer !== null) {\n // A retry is already queued because auth failed: do it now rather than after the backoff.\n clearTimer();\n void refreshAndConnect();\n return;\n }\n\n socket.connect();\n },\n dispose: () => {\n disposed = true;\n clearTimer();\n socket.off('connect_error', onConnectError);\n socket.off('connect', onConnect);\n },\n };\n};\n"],"names":["REFRESHABLE_CODES","Set","isUnauthorizedConnectError","err","_data","data","type","defaultDeps","tryRefresh","authRecovery","handleAuthFailure","_handleAuthFailure","_x","apply","this","arguments","toString","error","isLoginRoute","LOGIN_ROUTES_REGEXP","test","window","location","pathname","isImpersonating","isImpersonatingSession","socket","deps","length","undefined","attempts","timer","refreshing","disposed","clearTimer","clearTimeout","schedule","jitter","Math","random","delay","pow","setTimeout","refreshAndConnect","_asyncToGenerator","_regeneratorRuntime","mark","_callee","wrap","_context","prev","next","t0","abrupt","connect","stop","finally","onConnectError","_err$data","code","has","onConnect","on","ensureConnected","connected","active","dispose","off"],"mappings":"k+BAkBO,IAQDA,EAAyC,IAAIC,IAAI,CACrD,gBACA,uBACA,kBAGWC,EAA6B,SAACC,GAAY,IAAAC,EAAA,MACH,uBAAjDD,SAAD,QAACA,EAAAA,EAAkCE,YAAnC,IAAAD,OAACD,EAADC,EAAyCE,KAA4B,EAyBjEC,EAAc,WAAH,MAA4B,CAC3CC,WAAY,WAAA,OAAMC,EAAAA,aAAaD,YAAY,EAC3CE,kBAAiB,SAAAC,GAAA,SAAAD,EAAAE,GAAA,OAAAD,EAAAE,MAAAC,KAAAC,UAAA,CAAA,OAAAL,EAAAM,SAAA,WAAA,OAAAL,EAAAK,UAAA,EAAAN,CAAA,CAAA,EAAE,SAAAO,GAAK,OACtBR,EAAYA,aAACC,kBAAkBO,EAA8D,IAC/FC,aAAc,WAAA,OAAMC,EAAmBA,oBAACC,KAAKC,OAAOC,SAASC,SAAS,EACtEC,gBAAiB,WAAA,OAAMC,EAAsBD,iBAAE,EAChD,uCA7C2C,wCADD,6BA8DT,SAChCE,GAEuB,IADvBC,EAAkCZ,UAAAa,OAAA,QAAAC,IAAAd,UAAA,GAAAA,UAAA,GAAA,CAAA,EAG7BR,EAAAA,EAAAA,EAAAA,CAAAA,EAAAA,KACAoB,GAFGnB,IAAAA,WAAYE,IAAAA,kBAAmBQ,IAAAA,aAAcM,IAAAA,gBAKjDM,EAAW,EACXC,EAA8C,KAE9CC,EAAmC,KACnCC,GAAW,EAETC,EAAa,WACH,OAAVH,IACFI,aAAaJ,GACbA,EAAQ,OAINK,EAAW,WACf,KAAIH,GAAsB,OAAVF,GAAkBD,GArFK,GAqFvC,CAEA,IAAMO,EAAS,IAAuB,GAAhBC,KAAKC,SACrBC,EAvFkC,IAuFEF,KAAAG,IAAG,EAAKX,GAAWO,EAE7DP,GAAY,EACZC,EAAQW,YAAW,WACjBX,EAAQ,KACHY,GACN,GAAEH,EATwE,GAYvEG,EAAoB,WACxB,OAAIX,IAEJA,EAAaY,EAAAA,QAACC,EAAAA,QAAAC,MAAA,SAAAC,IAAA,OAAAF,UAAAG,MAAA,SAAAC,GAAA,OAAA,OAAAA,EAAAC,KAAAD,EAAAE,MAAA,KAAA,EAAA,OAAAF,EAAAC,KAAA,EAAAD,EAAAE,KAAA,EAEJ3C,IAAY,KAAA,EAAAyC,EAAAE,KAAA,GAAA,MAAA,KAAA,EAIP,OAJOF,EAAAC,KAAA,EAAAD,EAAAG,GAAAH,EAAA,MAAA,GAElBvC,EAAwBuC,EAAAG,IAExBhB,IAAWa,EAAAI,OAAA,UAAA,KAAA,GAIRpB,GAAUP,EAAO4B,UAAU,KAAA,GAAA,IAAA,MAAA,OAAAL,EAAAM,OAAA,GAAAR,EAAA,KAAA,CAAA,CAAA,EAAA,IAAA,IAVrBH,GAWRY,SAAQ,WACXxB,EAAa,IACf,MAKIyB,EAAiB,SAACtD,GAAe,IAAAuD,EACrC,GAAKxD,EAA2BC,GAAhC,CAEA,IAAMwD,EAAe,QAARxD,EAAAA,EAAIE,YAAI,IAAAqD,OAAA,EAARA,EAAUC,KAClBA,GAAS3D,EAAkB4D,IAAID,KAEhCzC,KAEAM,KAEJY,IAT6C,GAYzCyB,EAAY,WAChB/B,EAAW,GAMb,OAHAJ,EAAOoC,GAAG,gBAAiBL,GAC3B/B,EAAOoC,GAAG,UAAWD,GAEd,CACLE,gBAAiB,WAEf,KAAI9B,GAAYP,EAAOsC,WAAatC,EAAOuC,QAGvCjC,GAAJ,CAIA,GAFAF,EAAW,EAEG,OAAVC,EAIF,OAFAG,SACKS,IAIPjB,EAAO4B,SAXS,CAYjB,EACDY,QAAS,WACPjC,GAAW,EACXC,IACAR,EAAOyC,IAAI,gBAAiBV,GAC5B/B,EAAOyC,IAAI,UAAWN,EACxB,EAEJ"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@babel/runtime/helpers/classCallCheck"),n=require("@babel/runtime/helpers/createClass");function
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@babel/runtime/helpers/classCallCheck"),n=require("@babel/runtime/helpers/createClass");function u(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var t=u(e),r=u(n),i=function(){function e(){t.default(this,e)}return r.default(e,[{key:"subscribe",value:function(e,n,u){return function(){}}},{key:"unsubscribe",value:function(e,n,u){}},{key:"disconnect",value:function(){}},{key:"ensureConnected",value:function(){}},{key:"onConnectionChange",value:function(e){return function(){}}}]),e}();exports.DummySubscriptionsClient=i;
|
|
2
2
|
//# sourceMappingURL=subscriptions-client.dummy.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"subscriptions-client.dummy.js","sources":["../../../../src/clients/subscriptions/subscriptions-client.dummy.ts"],"sourcesContent":["import { AcknowledgeCb, OnConnectionChange, OnDataReceive, SubcriptionsClient } from
|
|
1
|
+
{"version":3,"file":"subscriptions-client.dummy.js","sources":["../../../../src/clients/subscriptions/subscriptions-client.dummy.ts"],"sourcesContent":["import { AcknowledgeCb, OnConnectionChange, OnDataReceive, SubcriptionsClient } from './types';\n\nexport class DummySubscriptionsClient implements SubcriptionsClient {\n subscribe<T>(_channel: string, _onData: OnDataReceive<T>, _ack?: AcknowledgeCb): () => void {\n return () => {};\n }\n\n unsubscribe<T>(_channel: string, _onData: OnDataReceive<T>, _ack?: AcknowledgeCb): void {\n return;\n }\n\n disconnect(): void {\n return;\n }\n\n ensureConnected(): void {\n return;\n }\n\n onConnectionChange(_handler: OnConnectionChange): () => void {\n // no socket on reports routes; return noop unsubscriber\n return () => {};\n }\n}\n"],"names":["DummySubscriptionsClient","_classCallCheck","this","_createClass","key","value","_channel","_onData","_ack","_handler"],"mappings":"qQAEaA,EAAwB,WAAA,SAAAA,IAAAC,UAAAC,KAAAF,EAAA,CAoBlC,OApBkCG,EAAA,QAAAH,EAAA,CAAA,CAAAI,IAAA,YAAAC,MACnC,SAAaC,EAAkBC,EAA2BC,GACxD,OAAO,WAAM,CACf,GAAC,CAAAJ,IAAA,cAAAC,MAED,SAAeC,EAAkBC,EAA2BC,GAE5D,GAAC,CAAAJ,IAAA,aAAAC,MAED,WAEA,GAAC,CAAAD,IAAA,kBAAAC,MAED,WAEA,GAAC,CAAAD,IAAA,qBAAAC,MAED,SAAmBI,GAEjB,OAAO,WAAM,CACf,KAACT,CAAA,CApBkC"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@babel/runtime/helpers/classCallCheck"),t=require("@babel/runtime/helpers/createClass"),r=require("@babel/runtime/helpers/defineProperty"),n=require("socket.io-client"),i=require("./constants.js"),c=require("./subscriptions-client.js"),
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@babel/runtime/helpers/classCallCheck"),t=require("@babel/runtime/helpers/createClass"),r=require("@babel/runtime/helpers/defineProperty"),n=require("socket.io-client"),i=require("./constants.js"),s=require("./subscriptions-auth-recovery.js"),c=require("./subscriptions-client.js"),o=require("./subscriptions-client.dummy.js");function u(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var a=u(e),l=u(t),f=u(r);function p(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}var b=function(){function e(){a.default(this,e)}return l.default(e,null,[{key:"init",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:i.SUBSCRIPTIONS_URL,t=new URL(e).origin;return this.instances.has(t)||this.instances.set(t,this.create(e)),this.instances.get(t)}},{key:"get",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:i.SUBSCRIPTIONS_URL;return this.instances.get(new URL(e).origin)}},{key:"dispose",value:function(){var e,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:i.SUBSCRIPTIONS_URL,r=new URL(t).origin;null===(e=this.instances.get(r))||void 0===e||e.disconnect(),this.instances.delete(r)}},{key:"create",value:function(e){if(i.IGNORED_ROUTES_REGEXP.test(window.location.pathname))return new o.DummySubscriptionsClient;var t=n.io(e,{transports:["websocket"],autoConnect:!0,path:process.env.REACT_APP_SUBSCRIPTIONS_PATH||"/socket.io"}),r=0,u=!1;return t.on("connect_error",(function(e){s.isUnauthorizedConnectError(e)&&(u=!0)})),t.on("connect",(function(){var e=1===(r+=1)&&!u;(u=!1,t.recovered)||(e||Object.keys(t._callbacks).filter((function(e){return e.startsWith("$data#")})).map((function(e){return e.replace("$data#","")})).forEach((function(e){t.emit("subscribe",function(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?p(Object(r),!0).forEach((function(t){f.default(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):p(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}({channel:e},i.getHrefDebugField()))})))})),new c.SubscriptionsClientV2(t,s.attachAuthRecovery(t))}}]),e}();f.default(b,"instances",new Map),exports.SubscriptionsClientFactory=b;
|
|
2
2
|
//# sourceMappingURL=subscriptions-client.factory.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"subscriptions-client.factory.js","sources":["../../../../src/clients/subscriptions/subscriptions-client.factory.ts"],"sourcesContent":["import { io } from 'socket.io-client';\nimport { IGNORED_ROUTES_REGEXP, SUBSCRIPTIONS_URL, getHrefDebugField } from './constants';\nimport { SubscriptionsClientV2 } from './subscriptions-client';\nimport { DummySubscriptionsClient } from './subscriptions-client.dummy';\nimport { SubcriptionsClient } from './types';\n\nexport class SubscriptionsClientFactory {\n private static readonly instances = new Map<string, SubcriptionsClient>();\n\n public static init(url = SUBSCRIPTIONS_URL) {\n const key = new URL(url).origin;\n\n if (!this.instances.has(key)) {\n this.instances.set(key, this.create(url));\n }\n\n return this.instances.get(key)!;\n }\n private static create(url: string): SubcriptionsClient {\n if (IGNORED_ROUTES_REGEXP.test(window.location.pathname)) {\n return new DummySubscriptionsClient();\n }\n\n const socket = io(url, {\n transports: ['websocket'],\n // NOTE: no need to connect manually, it will be done automatically\n autoConnect: true,\n path: process.env.REACT_APP_SUBSCRIPTIONS_PATH || '/socket.io',\n });\n\n let connectAttempts = 0;\n\n /**\n * We need to resend \"subscribe\" events on 2+ \"connect\" events:\n * 1. initial connection, subscribes will be handled by io queue\n * 2. reconnection, need to resend existing subscriptions\n * 3. ...\n */\n socket.on('connect', () => {\n connectAttempts += 1;\n\n if (socket.recovered) {\n /**\n *
|
|
1
|
+
{"version":3,"file":"subscriptions-client.factory.js","sources":["../../../../src/clients/subscriptions/subscriptions-client.factory.ts"],"sourcesContent":["import { io } from 'socket.io-client';\nimport { IGNORED_ROUTES_REGEXP, SUBSCRIPTIONS_URL, getHrefDebugField } from './constants';\nimport { attachAuthRecovery, isUnauthorizedConnectError } from './subscriptions-auth-recovery';\nimport { SubscriptionsClientV2 } from './subscriptions-client';\nimport { DummySubscriptionsClient } from './subscriptions-client.dummy';\nimport { SubcriptionsClient } from './types';\n\nexport class SubscriptionsClientFactory {\n private static readonly instances = new Map<string, SubcriptionsClient>();\n\n public static init(url = SUBSCRIPTIONS_URL) {\n const key = new URL(url).origin;\n\n if (!this.instances.has(key)) {\n this.instances.set(key, this.create(url));\n }\n\n return this.instances.get(key)!;\n }\n\n /** The client for `url` if one exists; unlike `init()` this never creates a socket. */\n public static get(url = SUBSCRIPTIONS_URL) {\n return this.instances.get(new URL(url).origin);\n }\n\n /**\n * Disconnect and forget the client for `url`, so the next `init()` builds a fresh socket.\n * A manually disconnected socket.io client never reconnects on its own, so keeping it cached\n * (as logout used to) handed a later login in the same tab a permanently dead client.\n */\n public static dispose(url = SUBSCRIPTIONS_URL) {\n const key = new URL(url).origin;\n\n this.instances.get(key)?.disconnect();\n this.instances.delete(key);\n }\n\n private static create(url: string): SubcriptionsClient {\n if (IGNORED_ROUTES_REGEXP.test(window.location.pathname)) {\n return new DummySubscriptionsClient();\n }\n\n const socket = io(url, {\n transports: ['websocket'],\n // NOTE: no need to connect manually, it will be done automatically\n autoConnect: true,\n path: process.env.REACT_APP_SUBSCRIPTIONS_PATH || '/socket.io',\n });\n\n let connectAttempts = 0;\n let handshakeRejected = false;\n\n socket.on('connect_error', err => {\n if (isUnauthorizedConnectError(err)) handshakeRejected = true;\n });\n\n /**\n * We need to resend \"subscribe\" events on 2+ \"connect\" events:\n * 1. initial connection, subscribes will be handled by io queue\n * 2. reconnection, need to resend existing subscriptions\n * 3. ...\n *\n * A first connection that follows a rejected handshake counts as a reconnection too. The\n * subscribes emitted before it sat in socket.io's send buffer, but every emit carries an ack\n * timeout (see the frontend's Sentry integration) and a timed-out ack removes its packet from\n * that buffer. If refreshing the session took longer than the timeout, relying on the buffer\n * would leave a connected socket with no subscriptions.\n */\n socket.on('connect', () => {\n connectAttempts += 1;\n\n const isCleanFirstConnect = connectAttempts === 1 && !handshakeRejected;\n handshakeRejected = false;\n\n if (socket.recovered) {\n /**\n * subscriptions restored by the socket.io server\n * @see https://socket.io/docs/v4/server-initialization/#server-events\n */\n return;\n }\n\n if (isCleanFirstConnect) {\n // initial connection, subscribes will be handled by io queue\n return;\n }\n\n /**\n * @description\n * channel names resolved from private property of socket.io lib\n * @see https://github.com/socketio/emitter/blob/8a2ece1f367dd9898791ee663940386147d2d688/lib/cjs/index.js#L161\n */\n // @ts-expect-error\n const channels = Object.keys(socket._callbacks)\n .filter(key => key.startsWith('$data#'))\n .map(key => key.replace('$data#', ''));\n\n channels.forEach(channel => {\n socket.emit('subscribe', { channel, ...getHrefDebugField() });\n });\n });\n\n return new SubscriptionsClientV2(socket, attachAuthRecovery(socket));\n }\n}\n"],"names":["SubscriptionsClientFactory","_classCallCheck","this","_createClass","key","value","url","SUBSCRIPTIONS_URL","URL","origin","instances","has","set","create","get","_this$instances$get","disconnect","delete","IGNORED_ROUTES_REGEXP","test","window","location","pathname","DummySubscriptionsClient","socket","io","transports","autoConnect","path","process","env","REACT_APP_SUBSCRIPTIONS_PATH","connectAttempts","handshakeRejected","on","err","isUnauthorizedConnectError","isCleanFirstConnect","recovered","Object","keys","_callbacks","filter","startsWith","map","replace","forEach","channel","emit","_objectSpread","getHrefDebugField","SubscriptionsClientV2","attachAuthRecovery","_defineProperty","Map"],"mappings":"ytBAOA,IAAaA,EAA0B,WAAA,SAAAA,IAAAC,UAAAC,KAAAF,EAAA,CAgGpC,OAhGoCG,UAAAH,EAAA,KAAA,CAAA,CAAAI,IAAA,OAAAC,MAGrC,WAA4C,IAAzBC,yDAAMC,EAAAA,kBACjBH,EAAM,IAAII,IAAIF,GAAKG,OAMzB,OAJKP,KAAKQ,UAAUC,IAAIP,IACtBF,KAAKQ,UAAUE,IAAIR,EAAKF,KAAKW,OAAOP,IAG/BJ,KAAKQ,UAAUI,IAAIV,EAC5B,GAEA,CAAAA,IAAA,MAAAC,MACA,WAA2C,IAAzBC,yDAAMC,EAAAA,kBACtB,OAAOL,KAAKQ,UAAUI,IAAI,IAAIN,IAAIF,GAAKG,OACzC,GAEA,CAAAL,IAAA,UAAAC,MAKA,WAA+C,IAAAU,EAAzBT,yDAAMC,EAAAA,kBACpBH,EAAM,IAAII,IAAIF,GAAKG,OAEF,QAAnBM,EAAAb,KAACQ,UAAUI,IAAIV,UAAI,IAAAW,GAAvBA,EAAyBC,aACzBd,KAAKQ,UAAUO,OAAOb,EACxB,GAAC,CAAAA,IAAA,SAAAC,MAED,SAAsBC,GACpB,GAAIY,EAAqBA,sBAACC,KAAKC,OAAOC,SAASC,UAC7C,OAAO,IAAIC,EAAwBA,yBAGrC,IAAMC,EAASC,EAAEA,GAACnB,EAAK,CACrBoB,WAAY,CAAC,aAEbC,aAAa,EACbC,KAAMC,QAAQC,IAAIC,8BAAgC,eAGhDC,EAAkB,EAClBC,GAAoB,EAoDxB,OAlDAT,EAAOU,GAAG,iBAAiB,SAAAC,GACrBC,6BAA2BD,KAAMF,GAAoB,EAC3D,IAcAT,EAAOU,GAAG,WAAW,WAGnB,IAAMG,EAA0C,KAFhDL,GAAmB,KAEmCC,GACtDA,GAAoB,EAEhBT,EAAOc,aAQPD,GAWaE,OAAOC,KAAKhB,EAAOiB,YACjCC,QAAO,SAAAtC,GAAG,OAAIA,EAAIuC,WAAW,SAAS,IACtCC,KAAI,SAAAxC,GAAG,OAAIA,EAAIyC,QAAQ,SAAU,OAE3BC,SAAQ,SAAAC,GACfvB,EAAOwB,KAAK,mXAAWC,CAAA,CAAIF,QAAAA,GAAYG,EAAAA,qBACzC,IACF,IAEO,IAAIC,EAAAA,sBAAsB3B,EAAQ4B,EAAAA,mBAAmB5B,GAC9D,KAACxB,CAAA,CAhGoC,GAiGtCqD,EAAA,QAjGYrD,EAA0B,YACD,IAAIsD"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@babel/runtime/helpers/classCallCheck"),t=require("@babel/runtime/helpers/createClass"),n=require("@babel/runtime/helpers/defineProperty"),r=require("./constants.js");function o(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var c=o(e),i=o(t),s=o(n);function u(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function a(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?u(Object(n),!0).forEach((function(t){s.default(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):u(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}var
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@babel/runtime/helpers/classCallCheck"),t=require("@babel/runtime/helpers/createClass"),n=require("@babel/runtime/helpers/defineProperty"),r=require("./constants.js");function o(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var c=o(e),i=o(t),s=o(n);function u(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function a(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?u(Object(n),!0).forEach((function(t){s.default(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):u(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}var l=function(){function e(t,n){var r=this;c.default(this,e),this._socket=t,this._recovery=n,s.default(this,"_managerListeners",new Set),s.default(this,"onConnectionChange",(function(e){var t=function(){return e({status:"connected"})},n=function(t){return e({status:"disconnected",reason:t})},o=function(){return e({status:"reconnecting"})},c=function(t){return e({status:"error",reason:(null==t?void 0:t.message)||String(t)})},i=r._socket.io;return r._socket.on("connect",t),r._socket.on("disconnect",n),null==i||i.on("reconnect_attempt",o),r._managerListeners.add(o),r._socket.on("connect_error",c),function(){r._socket.off("connect",t),r._socket.off("disconnect",n),null==i||i.off("reconnect_attempt",o),r._managerListeners.delete(o),r._socket.off("connect_error",c)}}))}return i.default(e,[{key:"subscribe",value:function(e,t,n){var r=this;this._validateArgs(e,t,n),this._socket.on("data#".concat(e),t),this._emit("subscribe",e,n);var o=function(){return r.unsubscribe(e,t,n)};return Object.defineProperty(o,"name",{value:"unsubscribe_".concat(e.replace(/[^\w]/g,"_")),writable:!1}),o}},{key:"unsubscribe",value:function(e,t,n){this._validateArgs(e,t,n),this._emit("unsubscribe",e,n),this._socket.off("data#".concat(e),t)}},{key:"disconnect",value:function(){var e,t=this;return null===(e=this._recovery)||void 0===e||e.dispose(),this._socket.disconnect(),this._socket.removeAllListeners(),this._managerListeners.forEach((function(e){var n;return null===(n=t._socket.io)||void 0===n?void 0:n.off("reconnect_attempt",e)})),this._managerListeners.clear(),this}},{key:"ensureConnected",value:function(){this._recovery?this._recovery.ensureConnected():this._socket.connected||this._socket.active||this._socket.connect()}},{key:"_validateArgs",value:function(e,t,n){if("string"!=typeof e||!e)throw new Error("Channel must be a non-empty string");if("function"!=typeof t)throw new Error("onData handler must be a function");if(void 0!==n&&"function"!=typeof n)throw new Error("ack must be a function")}},{key:"_shouldEmitToServer",value:function(e){return 1===this._socket.listeners("data#".concat(e)).length}},{key:"_emit",value:function(e,t,n){if(!this._shouldEmitToServer(t))return null==n?void 0:n();n?this._socket.emitWithAck(e,a({channel:t},r.getHrefDebugField()),(function(r){return r.ok?n():n(new Error("Failed to ".concat(e," to channel ").concat(t,": ").concat(r.error)))})):this._socket.emit(e,a({channel:t},r.getHrefDebugField()))}}]),e}();exports.SubscriptionsClientV2=l;
|
|
2
2
|
//# sourceMappingURL=subscriptions-client.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"subscriptions-client.js","sources":["../../../../src/clients/subscriptions/subscriptions-client.ts"],"sourcesContent":["import { Socket } from 'socket.io-client';\nimport { getHrefDebugField } from './constants';\nimport {\n SubcriptionsClient,\n SubscriptionsClientV2Events,\n SubscriptionsClientV2ServerEvents,\n AcknowledgeCb,\n OnDataReceive,\n OnConnectionChange,\n} from './types';\n\nexport class SubscriptionsClientV2 implements SubcriptionsClient {\n constructor(\n private readonly _socket: Socket
|
|
1
|
+
{"version":3,"file":"subscriptions-client.js","sources":["../../../../src/clients/subscriptions/subscriptions-client.ts"],"sourcesContent":["import { Socket } from 'socket.io-client';\nimport { getHrefDebugField } from './constants';\nimport { SocketAuthRecovery } from './subscriptions-auth-recovery';\nimport {\n SubcriptionsClient,\n SubscriptionsClientV2Events,\n SubscriptionsClientV2ServerEvents,\n AcknowledgeCb,\n OnDataReceive,\n OnConnectionChange,\n} from './types';\n\nexport class SubscriptionsClientV2 implements SubcriptionsClient {\n /** Listeners this client put on the Manager; `socket.removeAllListeners()` does not reach those. */\n private readonly _managerListeners = new Set<() => void>();\n\n constructor(\n // Keep the name: corva-web-frontend's Sentry integration reaches the raw socket through it.\n private readonly _socket: Socket<\n SubscriptionsClientV2Events,\n SubscriptionsClientV2ServerEvents\n >,\n private readonly _recovery?: SocketAuthRecovery\n ) {}\n\n subscribe<T>(channel: string, onData: OnDataReceive<T>, ack?: AcknowledgeCb) {\n this._validateArgs(channel, onData, ack);\n\n this._socket.on(`data#${channel}`, onData);\n\n this._emit('subscribe', channel, ack);\n\n const unsubscribe = () => this.unsubscribe(channel, onData, ack);\n\n Object.defineProperty(unsubscribe, 'name', {\n value: `unsubscribe_${channel.replace(/[^\\w]/g, '_')}`,\n writable: false,\n });\n\n return unsubscribe;\n }\n\n unsubscribe<T>(channel: string, onData: OnDataReceive<T>, ack?: AcknowledgeCb) {\n this._validateArgs(channel, onData, ack);\n\n this._emit('unsubscribe', channel, ack);\n\n this._socket.off(`data#${channel}`, onData);\n }\n\n disconnect() {\n this._recovery?.dispose();\n this._socket.disconnect();\n this._socket.removeAllListeners();\n this._managerListeners.forEach(listener => this._socket.io?.off('reconnect_attempt', listener));\n this._managerListeners.clear();\n\n return this;\n }\n\n ensureConnected() {\n if (this._recovery) {\n this._recovery.ensureConnected();\n return;\n }\n\n if (!this._socket.connected && !this._socket.active) {\n this._socket.connect();\n }\n }\n\n onConnectionChange: (handler: OnConnectionChange) => () => void = handler => {\n const onConnect = () => handler({ status: 'connected' });\n const onDisconnect = (reason?: string) => handler({ status: 'disconnected', reason });\n const onReconnectAttempt = () => handler({ status: 'reconnecting' });\n const onConnectError = (err?: any) =>\n handler({ status: 'error', reason: err?.message || String(err) });\n\n // Reconnection events belong to the Manager (`socket.io`), not the Socket: a `reconnect*`\n // listener on the Socket never fires in socket.io v4.\n const manager = this._socket.io;\n\n this._socket.on('connect', onConnect as any);\n this._socket.on('disconnect', onDisconnect as any);\n manager?.on('reconnect_attempt', onReconnectAttempt);\n this._managerListeners.add(onReconnectAttempt);\n this._socket.on('connect_error', onConnectError as any);\n\n return () => {\n this._socket.off('connect', onConnect as any);\n this._socket.off('disconnect', onDisconnect as any);\n manager?.off('reconnect_attempt', onReconnectAttempt);\n this._managerListeners.delete(onReconnectAttempt);\n this._socket.off('connect_error', onConnectError as any);\n };\n };\n\n private _validateArgs(channel: unknown, onData: unknown, ack?: unknown) {\n if (typeof channel !== 'string' || !channel) {\n throw new Error('Channel must be a non-empty string');\n }\n if (typeof onData !== 'function') {\n throw new Error('onData handler must be a function');\n }\n\n if (ack !== undefined && typeof ack !== 'function') {\n throw new Error('ack must be a function');\n }\n }\n\n private _shouldEmitToServer(channel: string) {\n // emit when the only present listener is a current one\n return this._socket.listeners(`data#${channel}`).length === 1;\n }\n\n private _emit(event: 'subscribe' | 'unsubscribe', channel: string, ack?: AcknowledgeCb) {\n if (!this._shouldEmitToServer(channel)) {\n return ack?.();\n }\n\n if (!ack) {\n this._socket.emit(event, { channel, ...getHrefDebugField() });\n\n return;\n }\n\n void this._socket.emitWithAck(\n event,\n { channel, ...getHrefDebugField() },\n (res: { ok: boolean; error?: string }) => {\n if (res.ok) {\n return ack();\n }\n\n return ack(new Error(`Failed to ${event} to channel ${channel}: ${res.error}`));\n }\n );\n }\n}\n"],"names":["SubscriptionsClientV2","_socket","_recovery","_this","this","_classCallCheck","_defineProperty","Set","handler","onConnect","status","onDisconnect","reason","onReconnectAttempt","onConnectError","err","message","String","manager","io","on","_managerListeners","add","off","delete","_createClass","key","value","channel","onData","ack","_this2","_validateArgs","_emit","unsubscribe","Object","defineProperty","concat","replace","writable","_this$_recovery","_this3","dispose","disconnect","removeAllListeners","forEach","listener","_this3$_socket$io","clear","ensureConnected","connected","active","connect","Error","undefined","listeners","length","event","_shouldEmitToServer","emitWithAck","_objectSpread","getHrefDebugField","res","ok","error","emit"],"mappings":"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"}
|
package/clients/api/apiCore.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"apiCore.d.ts","sourceRoot":"","sources":["../../../src/clients/api/apiCore.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"apiCore.d.ts","sourceRoot":"","sources":["../../../src/clients/api/apiCore.js"],"names":[],"mappings":"AAKA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAQ9C,eAAO,MAAM,YAAY,cAA6B,CAAC;AAqBvD,qBAAa,YAAY;IAEhB,MAAM;IACN,UAAU;IACV,OAAO;IACP,SAAS;IAJhB,YAAY,QAAQ,KAAA,EAAE,IAAI,KAAA,EAKzB;IAED,uBAAuB,YAEtB;IAED,cAAc,YAIb;IAED,cAAc,QAEb;IAED,sBAAsB,QAErB;IAED,yBAAyB,QAKxB;IAED,yBAAyB,QAKxB;CACF;AAED,eAAO,MAAM,OAAO,KAAqB,CAAC;AAS1C,wBAAgB,2BAA2B,CAAC,CAAC,KAAA,QAE5C;AA2BD;;;;;;GAMG;AACH,wBAAgB,YAAY,kBAU3B;AAwDD;;;;;;GAMG;AACH,wBAAsB,IAAI,CAAC,IAAI,EAJpB,MAIoB,EAAE,MAAM,AAHpC,CACA,EADQ,MAAM,YAGsB,EAAE,cAAc,KAAK,GAF/C,OAAO,CAAC,GAAC,CAAC,CAkBtB;AAED,wBAAsB,cAAc,CAAC,IAAI,KAAA,EAAE,WAAW,KAAK,EAAE,cAAc,KAAK;;;GAiB/E;AAED;;;;;;;GAOG;AACH,wBAAsB,GAAG,CAAC,IAAI,EALnB,MAKmB,EAAE,WAAW,AAJxC,CACA,EADQ,MAAM,YAI+B,EAAE,cAAc,AAH7D,CACA,EADQ,MAAM,YAGoD,GAFxD,OAAO,CAAC,GAAC,CAAC,CAUtB;AAED,wBAAsB,OAAO,CAAC,IAAI,KAAA,EAAE,WAAW,KAAK,EAAE,cAAc,KAAK,gBAUxE;AAED,wBAAsB,GAAG,CAAC,IAAI,KAAA,EAAE,OAAO,KAAA,EAAE,WAAW,KAAK,EAAE,cAAc,KAAK,gBAc7E;AAED,wBAAsB,KAAK,CAAC,IAAI,KAAA,EAAE,OAAO,KAAA,EAAE,WAAW,KAAK,EAAE,cAAc,KAAK,gBAmB/E;AAED,wBAAsB,GAAG,CAAC,IAAI,KAAA,EAAE,WAAW,KAAK,EAAE,cAAc,KAAK,gBAiBpE;AAED,wBAAsB,YAAY,CAAC,IAAI,KAAA,EAAE,IAAI,KAAA,EAAE,WAAW,KAAK,EAAE,cAAc,KAAK,gBA4BnF"}
|
package/clients/api/apiCore.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import e from"@babel/runtime/helpers/slicedToArray";import t from"@babel/runtime/helpers/objectWithoutProperties";import r from"@babel/runtime/helpers/asyncToGenerator";import n from"@babel/runtime/helpers/defineProperty";import i from"@babel/runtime/helpers/classCallCheck";import a from"@babel/runtime/helpers/createClass";import o from"@babel/runtime/regenerator";import*as s from"query-string";import{CORVA_API_URLS as c}from"../constants.js";import{getAuthorizationHeaders as u,attachHTTPHeaders as p,getAppKeyAndId as l}from"../utils.js";import{AuthRecovery as f}from"./AuthRecovery.js";import{DISPLAY_HTTP_MESSAGES as h}from"./httpMessages.js";import{apiRequestsRateLimiter as d}from"./rateLimiter.js";var v=["appKey"],y=["appKey"];function m(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function g(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?m(Object(r),!0).forEach((function(t){n(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):m(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}var b=f.getInstance(),k={400:"Request Failed",403:"No Permission",404:"Not Found"},w=["POST","PUT","PATCH","DELETE"],x=function(){function e(t,r){i(this,e),this.status=t.status,this.statusText=t.statusText,this.message=r.message||"No Message",this.errorBody=r}return a(e,[{key:"isAuthenticationProblem",value:function(){return 401===this.status}},{key:"isTermsProblem",value:function(){return 401===this.status&&"Please accept the latest terms of service"===this.message}},{key:"isLoginProblem",value:function(){var e,t;return 401===this.status&&(null===(e=this.errorBody)||void 0===e||null===(t=e.errors)||void 0===t?void 0:t.login)}},{key:"isLockedAccountProblem",value:function(){var e,t,r;return 401===this.status&&(null===(e=this.errorBody)||void 0===e||null===(t=e.errors)||void 0===t||null===(r=t.login)||void 0===r?void 0:r.includes("Account has been locked"))}},{key:"isInvalidVerificationCode",value:function(){var e,t,r;return 401===this.status&&(null===(e=this.errorBody)||void 0===e||null===(t=e.errors)||void 0===t||null===(r=t.login)||void 0===r?void 0:r.includes("Invalid verification code"))}},{key:"isMissingVerificationCode",value:function(){var e,t,r;return 401===this.status&&(null===(e=this.errorBody)||void 0===e||null===(t=e.errors)||void 0===t||null===(r=t.identity)||void 0===r?void 0:r.includes("Missing verification code"))}}]),e}(),j=c.API,O=u(),P=g({"Content-Type":"application/json",Accept:"application/json"},O),T=/^\/v1\/assets.*/;function A(e){return U.apply(this,arguments)}function U(){return U=r(o.mark((function e(t){var r,n,i,a,s,c,u=arguments;return o.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(r=u.length>1&&void 0!==u[1]?u[1]:{},n=u.length>2&&void 0!==u[2]?u[2]:{},i=n.apiUrl,a=void 0===i?j:i,s=n.appKey,c=n.appInstanceId,!s||!c||n.isRetry){e.next=6;break}return e.next=6,d.acquire(s,c);case 6:return T.test(t)&&(r.cache="reload"),r.credentials="include",e.abrupt("return",fetch("".concat(a).concat(t),p(g({config:r,appKey:s},O))));case 9:case"end":return e.stop()}}),e)}))),U.apply(this,arguments)}function E(){return A("/v1/user_token",{method:"POST",headers:P,body:JSON.stringify({refresh_token:!0})}).then((function(e){if(!e.ok)throw new x(e,{})}))}var K,S=(K=A,function(){var e=r(o.mark((function e(r,n){var i,a,s,c,u,p,l,f,d,v=arguments;return o.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return i=v.length>2&&void 0!==v[2]?v[2]:{},e.next=3,K(r,n,i);case 3:if(a=e.sent,s=a.status,!a.ok){e.next=7;break}return e.abrupt("return",204===s?null:a);case 7:return e.prev=7,e.next=10,a.json();case 10:c=e.sent,e.next=16;break;case 13:e.prev=13,e.t0=e.catch(7),c={};case 16:if(u=new x(a,c),p=r.startsWith("/v1/user_token"),!b.isRefreshableAuthError(u)||p||i.isRetry){e.next=28;break}return e.prev=19,e.next=22,b.tryRefresh();case 22:return e.abrupt("return",t(r,n,g(g({},i),{},{isRetry:!0})));case 25:e.prev=25,e.t1=e.catch(19),console.error("Token refresh failed:",e.t1);case 28:throw l=n.method,f=!i.hideNotification&&w.includes(l),d=h[c.message]||k[s],f&&d&&console.error(d),b.handleAuthFailure(u),u;case 34:case"end":return e.stop()}}),e,null,[[7,13],[19,25]])})));function t(t,r){return e.apply(this,arguments)}return t}());function C(e,t){return N.apply(this,arguments)}function N(){return N=r(o.mark((function e(t,r){var n,i,a,s,c,u,p=arguments;return o.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=p.length>2&&void 0!==p[2]?p[2]:{},i=n.apiUrl,a=n.withHeaders,s=void 0!==a&&a,c=n.signal,e.next=4,S(t,{method:"POST",headers:P,body:JSON.stringify(r),signal:c},g({apiUrl:i},l()));case 4:if(u=e.sent,!s){e.next=7;break}return e.abrupt("return",u);case 7:return e.abrupt("return",u&&u.json());case 8:case"end":return e.stop()}}),e)}))),N.apply(this,arguments)}function D(e){return R.apply(this,arguments)}function R(){return R=r(o.mark((function e(r){var n,i,a,c,u,p,f,h,d,y=arguments;return o.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=y.length>1&&void 0!==y[1]?y[1]:{},i=y.length>2&&void 0!==y[2]?y[2]:{},a=i.apiUrl,c=i.signal,u=s.stringify(n,{arrayFormat:"bracket"}),p=l()||{},f=p.appKey,h=t(p,v),e.next=7,S("".concat(r).concat(u?"?":"").concat(u),{method:"GET",signal:c},g({apiUrl:a,appKey:i.appKey||f},h));case 7:if(d=e.sent,e.t0=d,!e.t0){e.next=13;break}return e.next=12,d.json();case 12:e.t0=e.sent;case 13:return e.t1=e.t0,e.t2=d&&d.headers,e.abrupt("return",{data:e.t1,headers:e.t2});case 16:case"end":return e.stop()}}),e)}))),R.apply(this,arguments)}function I(e){return B.apply(this,arguments)}function B(){return B=r(o.mark((function e(r){var n,i,a,s,c,u,p=arguments;return o.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=p.length>1&&void 0!==p[1]?p[1]:{},i=p.length>2&&void 0!==p[2]?p[2]:{},a=l()||{},s=a.appKey,c=t(a,y),e.next=5,D(r,n,g(g({},i),{},{appKey:i.appKey||s},c));case 5:return u=e.sent,e.abrupt("return",u.data);case 7:case"end":return e.stop()}}),e)}))),B.apply(this,arguments)}function F(e,t){return L.apply(this,arguments)}function L(){return L=r(o.mark((function e(t,r){var n,i,a,c,u,p,f=arguments;return o.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=f.length>2&&void 0!==f[2]?f[2]:{},i=f.length>3&&void 0!==f[3]?f[3]:{},a=i.apiUrl,c=i.signal,u=s.stringify(n),e.next=6,S("".concat(t).concat(u?"?":"").concat(u),{method:"PUT",headers:P,body:JSON.stringify(r)},g(g({apiUrl:a},l()),{},{signal:c}));case 6:return p=e.sent,e.abrupt("return",p&&p.json());case 8:case"end":return e.stop()}}),e)}))),L.apply(this,arguments)}function J(e,t){return M.apply(this,arguments)}function M(){return M=r(o.mark((function e(t,r){var n,i,a,c,u,p,f=arguments;return o.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=f.length>2&&void 0!==f[2]?f[2]:{},i=f.length>3&&void 0!==f[3]?f[3]:{},a=i.apiUrl,c=i.signal,u=s.stringify(n),e.next=6,S("".concat(t).concat(u?"?":"").concat(u),{method:"PATCH",headers:P,body:JSON.stringify(r)},g(g({apiUrl:a},l()),{},{signal:c}));case 6:return p=e.sent,e.abrupt("return",p&&p.json());case 8:case"end":return e.stop()}}),e)}))),M.apply(this,arguments)}function q(e){return H.apply(this,arguments)}function H(){return H=r(o.mark((function e(t){var r,n,i,a,c,u,p=arguments;return o.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return r=p.length>1&&void 0!==p[1]?p[1]:{},n=p.length>2&&void 0!==p[2]?p[2]:{},i=n.apiUrl,a=n.signal,c=s.stringify(r),e.next=6,S(c?"".concat(t,"?").concat(c):t,{method:"DELETE",headers:P},g(g({apiUrl:i},l()),{},{signal:a}));case 6:return u=e.sent,e.abrupt("return",u&&u.json());case 8:case"end":return e.stop()}}),e)}))),H.apply(this,arguments)}function _(e,t){return G.apply(this,arguments)}function G(){return G=r(o.mark((function t(r,n){var i,a,c,u,p,f,h,d,v=arguments;return o.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return i=v.length>2&&void 0!==v[2]?v[2]:{},a=v.length>3&&void 0!==v[3]?v[3]:{},c=s.stringify(i),u=a.method,p=void 0===u?"POST":u,f=a.signal,h=new FormData,Object.entries(n).forEach((function(t){var r=e(t,2),n=r[0],i=r[1];Array.isArray(i)?i.forEach((function(e){h.append(n,e)})):h.append(n,i)})),t.next=8,S(c?"".concat(r,"?").concat(c):r,{method:p,headers:{Accept:"application/json"},body:h},g(g({},l()),{},{signal:f}));case 8:return d=t.sent,t.abrupt("return",d&&d.json());case 10:case"end":return t.stop()}}),t)}))),G.apply(this,arguments)}export{x as APIException,j as baseUrl,q as del,I as get,D as getWithHeaders,J as patch,C as post,F as put,E as refreshToken,_ as sendFormData};
|
|
1
|
+
import e from"@babel/runtime/helpers/slicedToArray";import t from"@babel/runtime/helpers/objectWithoutProperties";import r from"@babel/runtime/helpers/asyncToGenerator";import n from"@babel/runtime/helpers/defineProperty";import i from"@babel/runtime/helpers/classCallCheck";import a from"@babel/runtime/helpers/createClass";import o from"@babel/runtime/regenerator";import*as s from"query-string";import{CORVA_API_URLS as c}from"../constants.js";import{getAuthorizationHeaders as u,attachHTTPHeaders as p,getAppKeyAndId as l}from"../utils.js";import{AuthRecovery as f}from"./AuthRecovery.js";import{DISPLAY_HTTP_MESSAGES as h}from"./httpMessages.js";import{apiRequestsRateLimiter as d}from"./rateLimiter.js";var v=["appKey"],y=["appKey"];function m(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function g(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?m(Object(r),!0).forEach((function(t){n(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):m(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}var b=f.getInstance(),k={400:"Request Failed",403:"No Permission",404:"Not Found"},w=["POST","PUT","PATCH","DELETE"],x=function(){function e(t,r){i(this,e),this.status=t.status,this.statusText=t.statusText,this.message=r.message||"No Message",this.errorBody=r}return a(e,[{key:"isAuthenticationProblem",value:function(){return 401===this.status}},{key:"isTermsProblem",value:function(){return 401===this.status&&"Please accept the latest terms of service"===this.message}},{key:"isLoginProblem",value:function(){var e,t;return 401===this.status&&(null===(e=this.errorBody)||void 0===e||null===(t=e.errors)||void 0===t?void 0:t.login)}},{key:"isLockedAccountProblem",value:function(){var e,t,r;return 401===this.status&&(null===(e=this.errorBody)||void 0===e||null===(t=e.errors)||void 0===t||null===(r=t.login)||void 0===r?void 0:r.includes("Account has been locked"))}},{key:"isInvalidVerificationCode",value:function(){var e,t,r;return 401===this.status&&(null===(e=this.errorBody)||void 0===e||null===(t=e.errors)||void 0===t||null===(r=t.login)||void 0===r?void 0:r.includes("Invalid verification code"))}},{key:"isMissingVerificationCode",value:function(){var e,t,r;return 401===this.status&&(null===(e=this.errorBody)||void 0===e||null===(t=e.errors)||void 0===t||null===(r=t.identity)||void 0===r?void 0:r.includes("Missing verification code"))}}]),e}(),j=c.API,O=u(),P=g({"Content-Type":"application/json",Accept:"application/json"},O),T=/^\/v1\/assets.*/;function A(e){return U.apply(this,arguments)}function U(){return U=r(o.mark((function e(t){var r,n,i,a,s,c,u=arguments;return o.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(r=u.length>1&&void 0!==u[1]?u[1]:{},n=u.length>2&&void 0!==u[2]?u[2]:{},i=n.apiUrl,a=void 0===i?j:i,s=n.appKey,c=n.appInstanceId,!s||!c||n.isRetry){e.next=6;break}return e.next=6,d.acquire(s,c);case 6:return T.test(t)&&(r.cache="reload"),r.credentials="include",e.abrupt("return",fetch("".concat(a).concat(t),p(g({config:r,appKey:s},O))));case 9:case"end":return e.stop()}}),e)}))),U.apply(this,arguments)}function E(){return A("/v1/user_token",{method:"POST",headers:P,body:JSON.stringify({refresh_token:!0})}).then((function(e){if(!e.ok)throw new x(e,{})}))}var K,S=(K=A,function(){var e=r(o.mark((function e(r,n){var i,a,s,c,u,p,l,f,d,v=arguments;return o.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return i=v.length>2&&void 0!==v[2]?v[2]:{},e.next=3,K(r,n,i);case 3:if(a=e.sent,s=a.status,!a.ok){e.next=7;break}return e.abrupt("return",204===s?null:a);case 7:return e.prev=7,e.next=10,a.json();case 10:c=e.sent,e.next=16;break;case 13:e.prev=13,e.t0=e.catch(7),c={};case 16:if(u=new x(a,c),p=r.startsWith("/v1/user_token"),!b.isRefreshableAuthError(u)||p||i.isRetry){e.next=28;break}return e.prev=19,e.next=22,b.tryRefresh();case 22:return e.abrupt("return",t(r,n,g(g({},i),{},{isRetry:!0})));case 25:e.prev=25,e.t1=e.catch(19),console.error("Token refresh failed:",e.t1);case 28:throw l=n.method,f=!i.hideNotification&&w.includes(l),d=h[c.message]||k[s],f&&d&&console.error(d),b.handleAuthFailure(u),u;case 34:case"end":return e.stop()}}),e,null,[[7,13],[19,25]])})));function t(t,r){return e.apply(this,arguments)}return t}());function C(e,t){return N.apply(this,arguments)}function N(){return N=r(o.mark((function e(t,r){var n,i,a,s,c,u,p=arguments;return o.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=p.length>2&&void 0!==p[2]?p[2]:{},i=n.apiUrl,a=n.withHeaders,s=void 0!==a&&a,c=n.signal,e.next=4,S(t,{method:"POST",headers:P,body:JSON.stringify(r),signal:c},g({apiUrl:i},l()));case 4:if(u=e.sent,!s){e.next=7;break}return e.abrupt("return",u);case 7:return e.abrupt("return",u&&u.json());case 8:case"end":return e.stop()}}),e)}))),N.apply(this,arguments)}function D(e){return R.apply(this,arguments)}function R(){return R=r(o.mark((function e(r){var n,i,a,c,u,p,f,h,d,y=arguments;return o.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=y.length>1&&void 0!==y[1]?y[1]:{},i=y.length>2&&void 0!==y[2]?y[2]:{},a=i.apiUrl,c=i.signal,u=s.stringify(n,{arrayFormat:"bracket"}),p=l()||{},f=p.appKey,h=t(p,v),e.next=7,S("".concat(r).concat(u?"?":"").concat(u),{method:"GET",signal:c},g({apiUrl:a,appKey:i.appKey||f},h));case 7:if(d=e.sent,e.t0=d,!e.t0){e.next=13;break}return e.next=12,d.json();case 12:e.t0=e.sent;case 13:return e.t1=e.t0,e.t2=d&&d.headers,e.abrupt("return",{data:e.t1,headers:e.t2});case 16:case"end":return e.stop()}}),e)}))),R.apply(this,arguments)}function I(e){return B.apply(this,arguments)}function B(){return B=r(o.mark((function e(r){var n,i,a,s,c,u,p=arguments;return o.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=p.length>1&&void 0!==p[1]?p[1]:{},i=p.length>2&&void 0!==p[2]?p[2]:{},a=l()||{},s=a.appKey,c=t(a,y),e.next=5,D(r,n,g(g({},i),{},{appKey:i.appKey||s},c));case 5:return u=e.sent,e.abrupt("return",u.data);case 7:case"end":return e.stop()}}),e)}))),B.apply(this,arguments)}function F(e,t){return L.apply(this,arguments)}function L(){return L=r(o.mark((function e(t,r){var n,i,a,c,u,p,f=arguments;return o.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=f.length>2&&void 0!==f[2]?f[2]:{},i=f.length>3&&void 0!==f[3]?f[3]:{},a=i.apiUrl,c=i.signal,u=s.stringify(n),e.next=6,S("".concat(t).concat(u?"?":"").concat(u),{method:"PUT",headers:P,body:JSON.stringify(r)},g(g({apiUrl:a},l()),{},{signal:c}));case 6:return p=e.sent,e.abrupt("return",p&&p.json());case 8:case"end":return e.stop()}}),e)}))),L.apply(this,arguments)}function J(e,t){return M.apply(this,arguments)}function M(){return M=r(o.mark((function e(t,r){var n,i,a,c,u,p,f=arguments;return o.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=f.length>2&&void 0!==f[2]?f[2]:{},i=f.length>3&&void 0!==f[3]?f[3]:{},a=i.apiUrl,c=i.signal,u=s.stringify(n),e.next=6,S("".concat(t).concat(u?"?":"").concat(u),{method:"PATCH",headers:P,body:JSON.stringify(r)},g(g({apiUrl:a},l()),{},{signal:c}));case 6:return p=e.sent,e.abrupt("return",p&&p.json());case 8:case"end":return e.stop()}}),e)}))),M.apply(this,arguments)}function q(e){return H.apply(this,arguments)}function H(){return H=r(o.mark((function e(t){var r,n,i,a,c,u,p=arguments;return o.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return r=p.length>1&&void 0!==p[1]?p[1]:{},n=p.length>2&&void 0!==p[2]?p[2]:{},i=n.apiUrl,a=n.signal,c=s.stringify(r),e.next=6,S(c?"".concat(t,"?").concat(c):t,{method:"DELETE",headers:P},g(g({apiUrl:i},l()),{},{signal:a}));case 6:return u=e.sent,e.abrupt("return",u&&u.json());case 8:case"end":return e.stop()}}),e)}))),H.apply(this,arguments)}function _(e,t){return G.apply(this,arguments)}function G(){return G=r(o.mark((function t(r,n){var i,a,c,u,p,f,h,d,v=arguments;return o.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return i=v.length>2&&void 0!==v[2]?v[2]:{},a=v.length>3&&void 0!==v[3]?v[3]:{},c=s.stringify(i),u=a.method,p=void 0===u?"POST":u,f=a.signal,h=new FormData,Object.entries(n).forEach((function(t){var r=e(t,2),n=r[0],i=r[1];Array.isArray(i)?i.forEach((function(e){h.append(n,e)})):h.append(n,i)})),t.next=8,S(c?"".concat(r,"?").concat(c):r,{method:p,headers:{Accept:"application/json"},body:h},g(g({},l()),{},{signal:f}));case 8:return d=t.sent,t.abrupt("return",d&&d.json());case 10:case"end":return t.stop()}}),t)}))),G.apply(this,arguments)}export{x as APIException,b as authRecovery,j as baseUrl,q as del,I as get,D as getWithHeaders,J as patch,C as post,F as put,E as refreshToken,_ as sendFormData};
|
|
2
2
|
//# sourceMappingURL=apiCore.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"apiCore.js","sources":["../../../src/clients/api/apiCore.js"],"sourcesContent":["import * as queryString from 'query-string';\n\nimport { CORVA_API_URLS } from '../constants';\nimport { attachHTTPHeaders, getAppKeyAndId, getAuthorizationHeaders } from '../utils';\n\nimport { AuthRecovery } from './AuthRecovery';\nimport { DISPLAY_HTTP_MESSAGES } from './httpMessages';\n\nimport { apiRequestsRateLimiter } from '~/clients/api/rateLimiter';\n\nconst authRecovery = AuthRecovery.getInstance();\n\nconst HTTP_ERROR_MESSAGES = {\n 400: 'Request Failed',\n 403: 'No Permission',\n 404: 'Not Found',\n};\n\nconst TOS_ERROR_MESSAGE = 'Please accept the latest terms of service';\nconst LOCKED_ERROR_MESSAGE = 'Account has been locked';\nconst INVALID_VERIFICATION_CODE_MESSAGE = 'Invalid verification code';\nconst MISSING_VERIFICATION_CODE_MESSAGE = 'Missing verification code';\n\nconst HTTP_METHODS_TO_SHOW_ERROR_NOTIFICATIONS = [\n // NOTE: Do not show error notifications for GET method. Because users may request a deleted item\n 'POST',\n 'PUT',\n 'PATCH',\n 'DELETE',\n];\n\nexport class APIException {\n constructor(response, json) {\n this.status = response.status;\n this.statusText = response.statusText;\n this.message = json.message || 'No Message';\n this.errorBody = json;\n }\n\n isAuthenticationProblem() {\n return this.status === 401;\n }\n\n isTermsProblem() {\n // FIXME: this.message === TOS_ERROR_MESSAGE is a hack. Back-end team should come\n // with another solution.\n return this.status === 401 && this.message === TOS_ERROR_MESSAGE;\n }\n\n isLoginProblem() {\n return this.status === 401 && this.errorBody?.errors?.login;\n }\n\n isLockedAccountProblem() {\n return this.status === 401 && this.errorBody?.errors?.login?.includes(LOCKED_ERROR_MESSAGE);\n }\n\n isInvalidVerificationCode() {\n return (\n this.status === 401 &&\n this.errorBody?.errors?.login?.includes(INVALID_VERIFICATION_CODE_MESSAGE)\n );\n }\n\n isMissingVerificationCode() {\n return (\n this.status === 401 &&\n this.errorBody?.errors?.identity?.includes(MISSING_VERIFICATION_CODE_MESSAGE)\n );\n }\n}\n\nexport const baseUrl = CORVA_API_URLS.API;\n\nconst AUTH_HEADERS = getAuthorizationHeaders();\nconst JSON_HEADERS = {\n 'Content-Type': 'application/json',\n Accept: 'application/json',\n ...AUTH_HEADERS,\n};\n\nexport function handleAuthenticationProblem(e) {\n authRecovery.handleAuthFailure(e);\n}\n\nconst V1_ASSETS_REGEXP = /^\\/v1\\/assets.*/;\n\nasync function requestCore(path, config = {}, overrides = {}) {\n const { apiUrl = baseUrl, appKey, appInstanceId } = overrides;\n\n if (appKey && appInstanceId && !overrides.isRetry) {\n // Skip rate-limiter acquisition on retries. When a 401 triggers a token\n // refresh, errorHandler re-invokes requestCore with isRetry: true.\n // The original call already consumed a rate-limiter token, so acquiring\n // again would double-count a single logical request.\n // Because in the RateLimiter there is no release(),\n // the extra acquire on retries is an unrecoverable leak.\n await apiRequestsRateLimiter.acquire(appKey, appInstanceId);\n }\n\n // temporary enable cache for the heaviest request\n if (V1_ASSETS_REGEXP.test(path)) {\n config.cache = 'reload'; // eslint-disable-line no-param-reassign\n }\n\n config.credentials = 'include'; // eslint-disable-line no-param-reassign\n\n return fetch(`${apiUrl}${path}`, attachHTTPHeaders({ config, appKey, ...AUTH_HEADERS }));\n}\n\n/**\n * Used as refreshFn for AuthRecovery.\n * Triggers a token refresh request using the /v1/user_token endpoint.\n * The refresh mechanism is based on the refresh token stored in the dedicated HTTP-only cookie.\n *\n * Should not be used outside of AuthRecovery and Corva UI.\n */\nexport function refreshToken() {\n return requestCore('/v1/user_token', {\n method: 'POST',\n headers: JSON_HEADERS,\n body: JSON.stringify({ refresh_token: true }),\n }).then(response => {\n if (!response.ok) {\n throw new APIException(response, {});\n }\n });\n}\n\nfunction errorHandlerDecorator(requestCoreFunc) {\n return async function errorHandler(path, config, overrides = {}) {\n const response = await requestCoreFunc(path, config, overrides);\n\n const { status } = response;\n\n if (response.ok) {\n return status === 204 // NOTE: No content\n ? null\n : response;\n }\n\n // NOTE: Handle Error response logic\n let json;\n try {\n json = await response.json();\n } catch (e) {\n json = {};\n }\n const exception = new APIException(response, json);\n\n // Token expired: attempt refresh and retry the original request once.\n // Skip non-refreshable 401s (Terms of Service, login-credential errors) and the login/token\n // endpoint itself, where a refresh would be either pointless or self-recursive.\n const isLoginEndpoint = path.startsWith('/v1/user_token');\n if (authRecovery.isRefreshableAuthError(exception) && !isLoginEndpoint && !overrides.isRetry) {\n try {\n await authRecovery.tryRefresh();\n return errorHandler(path, config, { ...overrides, isRetry: true }); // Ensure retrying only once.\n } catch (refreshError) {\n console.error('Token refresh failed:', refreshError);\n // Refresh failed — fall through to authRecovery.handleAuthFailure\n }\n }\n\n const requestMethod = config.method;\n const isMethodToShowNotification =\n !overrides.hideNotification &&\n HTTP_METHODS_TO_SHOW_ERROR_NOTIFICATIONS.includes(requestMethod);\n\n const httpErrorMessage = DISPLAY_HTTP_MESSAGES[json.message] || HTTP_ERROR_MESSAGES[status];\n\n if (isMethodToShowNotification && httpErrorMessage) {\n console.error(httpErrorMessage);\n }\n\n authRecovery.handleAuthFailure(exception);\n\n throw exception;\n };\n}\n\nconst request = errorHandlerDecorator(requestCore);\n\n/**\n * The post method is most-often utilized to **create** new resources.\n * @async\n * @param {string} path - path to resource.\n * @param {Object=} entity - API entity to create\n * @returns {Promise<*>}\n */\nexport async function post(path, entity, requestOptions = {}) {\n const { apiUrl, withHeaders = false, signal } = requestOptions;\n const response = await request(\n path,\n {\n method: 'POST',\n headers: JSON_HEADERS,\n body: JSON.stringify(entity),\n signal,\n },\n { apiUrl, ...getAppKeyAndId() }\n );\n\n if (withHeaders) return response;\n\n return response && response.json();\n}\n\nexport async function getWithHeaders(path, queryParams = {}, requestOptions = {}) {\n const { apiUrl, signal } = requestOptions;\n const qry = queryString.stringify(queryParams, { arrayFormat: 'bracket' });\n const { appKey, ...rest } = getAppKeyAndId() || {};\n const response = await request(\n `${path}${qry ? '?' : ''}${qry}`,\n {\n method: 'GET',\n signal,\n },\n { apiUrl, appKey: requestOptions.appKey || appKey, ...rest }\n );\n\n return {\n data: response && (await response.json()),\n headers: response && response.headers,\n };\n}\n\n/**\n * The get method is used to **read** (or retrieve) a representation of a resource\n * @async\n * @param {string} path - path to resource.\n * @param {Object=} queryParams - Object with query params such as per_page, sort, asset_id, etc.\n * @param {Object=} requestOptions - Additional options for request. For example: apiUrl, signal etc.\n * @returns {Promise<*>}\n */\nexport async function get(path, queryParams = {}, requestOptions = {}) {\n const { appKey, ...rest } = getAppKeyAndId() || {};\n const dataAndHeaders = await getWithHeaders(path, queryParams, {\n ...requestOptions,\n appKey: requestOptions.appKey || appKey,\n ...rest,\n });\n return dataAndHeaders.data;\n}\n\nexport async function getFile(path, queryParams = {}, requestOptions = {}) {\n const qry = queryString.stringify(queryParams);\n const { signal } = requestOptions;\n const response = await request(\n `${path}${qry ? '?' : ''}${qry}`,\n { method: 'GET' },\n { ...getAppKeyAndId(), signal }\n );\n\n return response && response.blob();\n}\n\nexport async function put(path, content, queryParams = {}, requestOptions = {}) {\n const { apiUrl, signal } = requestOptions;\n const qry = queryString.stringify(queryParams);\n const response = await request(\n `${path}${qry ? '?' : ''}${qry}`,\n {\n method: 'PUT',\n headers: JSON_HEADERS,\n body: JSON.stringify(content),\n },\n { apiUrl, ...getAppKeyAndId(), signal }\n );\n\n return response && response.json();\n}\n\nexport async function patch(path, content, queryParams = {}, requestOptions = {}) {\n const { apiUrl, signal } = requestOptions;\n const qry = queryString.stringify(queryParams);\n\n const response = await request(\n `${path}${qry ? '?' : ''}${qry}`,\n {\n method: 'PATCH',\n headers: JSON_HEADERS,\n body: JSON.stringify(content),\n },\n {\n apiUrl,\n ...getAppKeyAndId(),\n signal,\n }\n );\n\n return response && response.json();\n}\n\nexport async function del(path, queryParams = {}, requestOptions = {}) {\n const { apiUrl, signal } = requestOptions;\n const query = queryString.stringify(queryParams);\n const response = await request(\n query ? `${path}?${query}` : path,\n {\n method: 'DELETE',\n headers: JSON_HEADERS,\n },\n {\n apiUrl,\n ...getAppKeyAndId(),\n signal,\n }\n );\n\n return response && response.json();\n}\n\nexport async function sendFormData(path, data, queryParams = {}, requestOptions = {}) {\n const query = queryString.stringify(queryParams);\n const { method = 'POST', signal } = requestOptions;\n const formData = new FormData();\n\n Object.entries(data).forEach(([key, value]) => {\n if (Array.isArray(value)) {\n value.forEach(arrayValueEntity => {\n formData.append(key, arrayValueEntity);\n });\n } else {\n formData.append(key, value);\n }\n });\n\n const response = await request(\n query ? `${path}?${query}` : path,\n {\n method,\n headers: {\n Accept: 'application/json',\n },\n body: formData,\n },\n { ...getAppKeyAndId(), signal }\n );\n\n return response && response.json();\n}\n"],"names":["authRecovery","AuthRecovery","getInstance","HTTP_ERROR_MESSAGES","HTTP_METHODS_TO_SHOW_ERROR_NOTIFICATIONS","APIException","response","json","_classCallCheck","this","status","statusText","message","errorBody","_createClass","key","value","_this$errorBody","_this$errorBody$error","errors","login","_this$errorBody2","_this$errorBody2$erro","_this$errorBody2$erro2","includes","_this$errorBody3","_this$errorBody3$erro","_this$errorBody3$erro2","_this$errorBody4","_this$errorBody4$erro","_this$errorBody4$erro2","identity","baseUrl","CORVA_API_URLS","API","AUTH_HEADERS","getAuthorizationHeaders","JSON_HEADERS","_objectSpread","Accept","V1_ASSETS_REGEXP","requestCore","_x","_requestCore","apply","arguments","_asyncToGenerator","_regeneratorRuntime","mark","path","config","overrides","_overrides$apiUrl","apiUrl","appKey","appInstanceId","_args2","wrap","_context2","prev","next","length","undefined","isRetry","apiRequestsRateLimiter","acquire","test","cache","credentials","abrupt","fetch","attachHTTPHeaders","stop","_callee2","refreshToken","method","headers","body","JSON","stringify","refresh_token","then","ok","requestCoreFunc","request","_errorHandler","_callee","exception","isLoginEndpoint","requestMethod","isMethodToShowNotification","httpErrorMessage","_args","_context","sent","t0","startsWith","isRefreshableAuthError","tryRefresh","errorHandler","t1","console","error","hideNotification","DISPLAY_HTTP_MESSAGES","handleAuthFailure","_x2","_x3","post","_x4","_x5","_post","_callee3","entity","requestOptions","_requestOptions$withH","withHeaders","signal","_args3","_context3","getAppKeyAndId","getWithHeaders","_x6","_getWithHeaders","queryParams","qry","_ref","rest","_args4","_context4","queryString","arrayFormat","_objectWithoutProperties","_excluded","t2","data","_callee4","get","_x7","_get","_ref2","dataAndHeaders","_args5","_context5","_excluded2","_callee5","put","_x9","_x10","_put","_callee7","content","_args7","_context7","patch","_x11","_x12","_patch","_callee8","_args8","_context8","del","_x13","_del","query","_args9","_context9","concat","_callee9","sendFormData","_x14","_x15","_sendFormData","_callee10","_requestOptions$metho","formData","_args10","_context10","FormData","Object","entries","forEach","_ref3","_ref4","_slicedToArray","Array","isArray","arrayValueEntity","append"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"apiCore.js","sources":["../../../src/clients/api/apiCore.js"],"sourcesContent":["import * as queryString from 'query-string';\n\nimport { CORVA_API_URLS } from '../constants';\nimport { attachHTTPHeaders, getAppKeyAndId, getAuthorizationHeaders } from '../utils';\n\nimport { AuthRecovery } from './AuthRecovery';\nimport { DISPLAY_HTTP_MESSAGES } from './httpMessages';\n\nimport { apiRequestsRateLimiter } from '~/clients/api/rateLimiter';\n\n// Exported for callers outside the HTTP layer (the socket client's auth recovery). Import it from\n// here rather than from './AuthRecovery': that module imports `refreshToken` from this one, and\n// entering the cycle through AuthRecovery leaves `AuthRecovery` undefined at this line.\nexport const authRecovery = AuthRecovery.getInstance();\n\nconst HTTP_ERROR_MESSAGES = {\n 400: 'Request Failed',\n 403: 'No Permission',\n 404: 'Not Found',\n};\n\nconst TOS_ERROR_MESSAGE = 'Please accept the latest terms of service';\nconst LOCKED_ERROR_MESSAGE = 'Account has been locked';\nconst INVALID_VERIFICATION_CODE_MESSAGE = 'Invalid verification code';\nconst MISSING_VERIFICATION_CODE_MESSAGE = 'Missing verification code';\n\nconst HTTP_METHODS_TO_SHOW_ERROR_NOTIFICATIONS = [\n // NOTE: Do not show error notifications for GET method. Because users may request a deleted item\n 'POST',\n 'PUT',\n 'PATCH',\n 'DELETE',\n];\n\nexport class APIException {\n constructor(response, json) {\n this.status = response.status;\n this.statusText = response.statusText;\n this.message = json.message || 'No Message';\n this.errorBody = json;\n }\n\n isAuthenticationProblem() {\n return this.status === 401;\n }\n\n isTermsProblem() {\n // FIXME: this.message === TOS_ERROR_MESSAGE is a hack. Back-end team should come\n // with another solution.\n return this.status === 401 && this.message === TOS_ERROR_MESSAGE;\n }\n\n isLoginProblem() {\n return this.status === 401 && this.errorBody?.errors?.login;\n }\n\n isLockedAccountProblem() {\n return this.status === 401 && this.errorBody?.errors?.login?.includes(LOCKED_ERROR_MESSAGE);\n }\n\n isInvalidVerificationCode() {\n return (\n this.status === 401 &&\n this.errorBody?.errors?.login?.includes(INVALID_VERIFICATION_CODE_MESSAGE)\n );\n }\n\n isMissingVerificationCode() {\n return (\n this.status === 401 &&\n this.errorBody?.errors?.identity?.includes(MISSING_VERIFICATION_CODE_MESSAGE)\n );\n }\n}\n\nexport const baseUrl = CORVA_API_URLS.API;\n\nconst AUTH_HEADERS = getAuthorizationHeaders();\nconst JSON_HEADERS = {\n 'Content-Type': 'application/json',\n Accept: 'application/json',\n ...AUTH_HEADERS,\n};\n\nexport function handleAuthenticationProblem(e) {\n authRecovery.handleAuthFailure(e);\n}\n\nconst V1_ASSETS_REGEXP = /^\\/v1\\/assets.*/;\n\nasync function requestCore(path, config = {}, overrides = {}) {\n const { apiUrl = baseUrl, appKey, appInstanceId } = overrides;\n\n if (appKey && appInstanceId && !overrides.isRetry) {\n // Skip rate-limiter acquisition on retries. When a 401 triggers a token\n // refresh, errorHandler re-invokes requestCore with isRetry: true.\n // The original call already consumed a rate-limiter token, so acquiring\n // again would double-count a single logical request.\n // Because in the RateLimiter there is no release(),\n // the extra acquire on retries is an unrecoverable leak.\n await apiRequestsRateLimiter.acquire(appKey, appInstanceId);\n }\n\n // temporary enable cache for the heaviest request\n if (V1_ASSETS_REGEXP.test(path)) {\n config.cache = 'reload'; // eslint-disable-line no-param-reassign\n }\n\n config.credentials = 'include'; // eslint-disable-line no-param-reassign\n\n return fetch(`${apiUrl}${path}`, attachHTTPHeaders({ config, appKey, ...AUTH_HEADERS }));\n}\n\n/**\n * Used as refreshFn for AuthRecovery.\n * Triggers a token refresh request using the /v1/user_token endpoint.\n * The refresh mechanism is based on the refresh token stored in the dedicated HTTP-only cookie.\n *\n * Should not be used outside of AuthRecovery and Corva UI.\n */\nexport function refreshToken() {\n return requestCore('/v1/user_token', {\n method: 'POST',\n headers: JSON_HEADERS,\n body: JSON.stringify({ refresh_token: true }),\n }).then(response => {\n if (!response.ok) {\n throw new APIException(response, {});\n }\n });\n}\n\nfunction errorHandlerDecorator(requestCoreFunc) {\n return async function errorHandler(path, config, overrides = {}) {\n const response = await requestCoreFunc(path, config, overrides);\n\n const { status } = response;\n\n if (response.ok) {\n return status === 204 // NOTE: No content\n ? null\n : response;\n }\n\n // NOTE: Handle Error response logic\n let json;\n try {\n json = await response.json();\n } catch (e) {\n json = {};\n }\n const exception = new APIException(response, json);\n\n // Token expired: attempt refresh and retry the original request once.\n // Skip non-refreshable 401s (Terms of Service, login-credential errors) and the login/token\n // endpoint itself, where a refresh would be either pointless or self-recursive.\n const isLoginEndpoint = path.startsWith('/v1/user_token');\n if (authRecovery.isRefreshableAuthError(exception) && !isLoginEndpoint && !overrides.isRetry) {\n try {\n await authRecovery.tryRefresh();\n return errorHandler(path, config, { ...overrides, isRetry: true }); // Ensure retrying only once.\n } catch (refreshError) {\n console.error('Token refresh failed:', refreshError);\n // Refresh failed — fall through to authRecovery.handleAuthFailure\n }\n }\n\n const requestMethod = config.method;\n const isMethodToShowNotification =\n !overrides.hideNotification &&\n HTTP_METHODS_TO_SHOW_ERROR_NOTIFICATIONS.includes(requestMethod);\n\n const httpErrorMessage = DISPLAY_HTTP_MESSAGES[json.message] || HTTP_ERROR_MESSAGES[status];\n\n if (isMethodToShowNotification && httpErrorMessage) {\n console.error(httpErrorMessage);\n }\n\n authRecovery.handleAuthFailure(exception);\n\n throw exception;\n };\n}\n\nconst request = errorHandlerDecorator(requestCore);\n\n/**\n * The post method is most-often utilized to **create** new resources.\n * @async\n * @param {string} path - path to resource.\n * @param {Object=} entity - API entity to create\n * @returns {Promise<*>}\n */\nexport async function post(path, entity, requestOptions = {}) {\n const { apiUrl, withHeaders = false, signal } = requestOptions;\n const response = await request(\n path,\n {\n method: 'POST',\n headers: JSON_HEADERS,\n body: JSON.stringify(entity),\n signal,\n },\n { apiUrl, ...getAppKeyAndId() }\n );\n\n if (withHeaders) return response;\n\n return response && response.json();\n}\n\nexport async function getWithHeaders(path, queryParams = {}, requestOptions = {}) {\n const { apiUrl, signal } = requestOptions;\n const qry = queryString.stringify(queryParams, { arrayFormat: 'bracket' });\n const { appKey, ...rest } = getAppKeyAndId() || {};\n const response = await request(\n `${path}${qry ? '?' : ''}${qry}`,\n {\n method: 'GET',\n signal,\n },\n { apiUrl, appKey: requestOptions.appKey || appKey, ...rest }\n );\n\n return {\n data: response && (await response.json()),\n headers: response && response.headers,\n };\n}\n\n/**\n * The get method is used to **read** (or retrieve) a representation of a resource\n * @async\n * @param {string} path - path to resource.\n * @param {Object=} queryParams - Object with query params such as per_page, sort, asset_id, etc.\n * @param {Object=} requestOptions - Additional options for request. For example: apiUrl, signal etc.\n * @returns {Promise<*>}\n */\nexport async function get(path, queryParams = {}, requestOptions = {}) {\n const { appKey, ...rest } = getAppKeyAndId() || {};\n const dataAndHeaders = await getWithHeaders(path, queryParams, {\n ...requestOptions,\n appKey: requestOptions.appKey || appKey,\n ...rest,\n });\n return dataAndHeaders.data;\n}\n\nexport async function getFile(path, queryParams = {}, requestOptions = {}) {\n const qry = queryString.stringify(queryParams);\n const { signal } = requestOptions;\n const response = await request(\n `${path}${qry ? '?' : ''}${qry}`,\n { method: 'GET' },\n { ...getAppKeyAndId(), signal }\n );\n\n return response && response.blob();\n}\n\nexport async function put(path, content, queryParams = {}, requestOptions = {}) {\n const { apiUrl, signal } = requestOptions;\n const qry = queryString.stringify(queryParams);\n const response = await request(\n `${path}${qry ? '?' : ''}${qry}`,\n {\n method: 'PUT',\n headers: JSON_HEADERS,\n body: JSON.stringify(content),\n },\n { apiUrl, ...getAppKeyAndId(), signal }\n );\n\n return response && response.json();\n}\n\nexport async function patch(path, content, queryParams = {}, requestOptions = {}) {\n const { apiUrl, signal } = requestOptions;\n const qry = queryString.stringify(queryParams);\n\n const response = await request(\n `${path}${qry ? '?' : ''}${qry}`,\n {\n method: 'PATCH',\n headers: JSON_HEADERS,\n body: JSON.stringify(content),\n },\n {\n apiUrl,\n ...getAppKeyAndId(),\n signal,\n }\n );\n\n return response && response.json();\n}\n\nexport async function del(path, queryParams = {}, requestOptions = {}) {\n const { apiUrl, signal } = requestOptions;\n const query = queryString.stringify(queryParams);\n const response = await request(\n query ? `${path}?${query}` : path,\n {\n method: 'DELETE',\n headers: JSON_HEADERS,\n },\n {\n apiUrl,\n ...getAppKeyAndId(),\n signal,\n }\n );\n\n return response && response.json();\n}\n\nexport async function sendFormData(path, data, queryParams = {}, requestOptions = {}) {\n const query = queryString.stringify(queryParams);\n const { method = 'POST', signal } = requestOptions;\n const formData = new FormData();\n\n Object.entries(data).forEach(([key, value]) => {\n if (Array.isArray(value)) {\n value.forEach(arrayValueEntity => {\n formData.append(key, arrayValueEntity);\n });\n } else {\n formData.append(key, value);\n }\n });\n\n const response = await request(\n query ? `${path}?${query}` : path,\n {\n method,\n headers: {\n Accept: 'application/json',\n },\n body: formData,\n },\n { ...getAppKeyAndId(), signal }\n );\n\n return response && response.json();\n}\n"],"names":["authRecovery","AuthRecovery","getInstance","HTTP_ERROR_MESSAGES","HTTP_METHODS_TO_SHOW_ERROR_NOTIFICATIONS","APIException","response","json","_classCallCheck","this","status","statusText","message","errorBody","_createClass","key","value","_this$errorBody","_this$errorBody$error","errors","login","_this$errorBody2","_this$errorBody2$erro","_this$errorBody2$erro2","includes","_this$errorBody3","_this$errorBody3$erro","_this$errorBody3$erro2","_this$errorBody4","_this$errorBody4$erro","_this$errorBody4$erro2","identity","baseUrl","CORVA_API_URLS","API","AUTH_HEADERS","getAuthorizationHeaders","JSON_HEADERS","_objectSpread","Accept","V1_ASSETS_REGEXP","requestCore","_x","_requestCore","apply","arguments","_asyncToGenerator","_regeneratorRuntime","mark","path","config","overrides","_overrides$apiUrl","apiUrl","appKey","appInstanceId","_args2","wrap","_context2","prev","next","length","undefined","isRetry","apiRequestsRateLimiter","acquire","test","cache","credentials","abrupt","fetch","attachHTTPHeaders","stop","_callee2","refreshToken","method","headers","body","JSON","stringify","refresh_token","then","ok","requestCoreFunc","request","_errorHandler","_callee","exception","isLoginEndpoint","requestMethod","isMethodToShowNotification","httpErrorMessage","_args","_context","sent","t0","startsWith","isRefreshableAuthError","tryRefresh","errorHandler","t1","console","error","hideNotification","DISPLAY_HTTP_MESSAGES","handleAuthFailure","_x2","_x3","post","_x4","_x5","_post","_callee3","entity","requestOptions","_requestOptions$withH","withHeaders","signal","_args3","_context3","getAppKeyAndId","getWithHeaders","_x6","_getWithHeaders","queryParams","qry","_ref","rest","_args4","_context4","queryString","arrayFormat","_objectWithoutProperties","_excluded","t2","data","_callee4","get","_x7","_get","_ref2","dataAndHeaders","_args5","_context5","_excluded2","_callee5","put","_x9","_x10","_put","_callee7","content","_args7","_context7","patch","_x11","_x12","_patch","_callee8","_args8","_context8","del","_x13","_del","query","_args9","_context9","concat","_callee9","sendFormData","_x14","_x15","_sendFormData","_callee10","_requestOptions$metho","formData","_args10","_context10","FormData","Object","entries","forEach","_ref3","_ref4","_slicedToArray","Array","isArray","arrayValueEntity","append"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"subscriptions-auth-recovery.test.d.ts","sourceRoot":"","sources":["../../../../src/clients/subscriptions/__tests__/subscriptions-auth-recovery.test.ts"],"names":[],"mappings":""}
|