@authsignal/browser 0.5.3 → 0.5.4
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/dist/index.js +23 -32
- package/dist/index.min.js +1 -1
- package/package.json +2 -1
- package/dist/api/email-api-client.d.ts +0 -18
- package/dist/api/index.d.ts +0 -1
- package/dist/api/passkey-api-client.d.ts +0 -22
- package/dist/api/sms-api-client.d.ts +0 -18
- package/dist/api/totp-api-client.d.ts +0 -15
- package/dist/api/types/passkey.d.ts +0 -42
- package/dist/api/types/shared.d.ts +0 -20
- package/dist/api/types/totp.d.ts +0 -5
- package/dist/authsignal.d.ts +0 -30
- package/dist/email.d.ts +0 -20
- package/dist/handlers/index.d.ts +0 -2
- package/dist/handlers/popup-handler.d.ts +0 -18
- package/dist/handlers/window-handler.d.ts +0 -11
- package/dist/helpers.d.ts +0 -13
- package/dist/index.d.ts +0 -2
- package/dist/passkey.d.ts +0 -42
- package/dist/sms.d.ts +0 -20
- package/dist/token-cache.d.ts +0 -6
- package/dist/totp.d.ts +0 -17
- package/dist/types.d.ts +0 -66
package/dist/index.js
CHANGED
|
@@ -528,6 +528,18 @@ async function startAuthentication(requestOptionsJSON, useBrowserAutofill = fals
|
|
|
528
528
|
};
|
|
529
529
|
}
|
|
530
530
|
|
|
531
|
+
var version = "0.5.4";
|
|
532
|
+
|
|
533
|
+
function buildHeaders(_a) {
|
|
534
|
+
var token = _a.token, tenantId = _a.tenantId;
|
|
535
|
+
var authorizationHeader = token ? "Bearer ".concat(token) : "Basic ".concat(window.btoa(encodeURIComponent(tenantId)));
|
|
536
|
+
return {
|
|
537
|
+
"Content-Type": "application/json",
|
|
538
|
+
Authorization: authorizationHeader,
|
|
539
|
+
"X-Authsignal-Browser-Version": version
|
|
540
|
+
};
|
|
541
|
+
}
|
|
542
|
+
|
|
531
543
|
var PasskeyApiClient = /** @class */ (function () {
|
|
532
544
|
function PasskeyApiClient(_a) {
|
|
533
545
|
var baseUrl = _a.baseUrl, tenantId = _a.tenantId;
|
|
@@ -546,7 +558,7 @@ var PasskeyApiClient = /** @class */ (function () {
|
|
|
546
558
|
: { username: username };
|
|
547
559
|
response = fetch("".concat(this.baseUrl, "/client/user-authenticators/passkey/registration-options"), {
|
|
548
560
|
method: "POST",
|
|
549
|
-
headers:
|
|
561
|
+
headers: buildHeaders({ token: token, tenantId: this.tenantId }),
|
|
550
562
|
body: JSON.stringify(body)
|
|
551
563
|
});
|
|
552
564
|
return [4 /*yield*/, response];
|
|
@@ -565,7 +577,7 @@ var PasskeyApiClient = /** @class */ (function () {
|
|
|
565
577
|
body = { challengeId: challengeId };
|
|
566
578
|
response = fetch("".concat(this.baseUrl, "/client/user-authenticators/passkey/authentication-options"), {
|
|
567
579
|
method: "POST",
|
|
568
|
-
headers:
|
|
580
|
+
headers: buildHeaders({ token: token, tenantId: this.tenantId }),
|
|
569
581
|
body: JSON.stringify(body)
|
|
570
582
|
});
|
|
571
583
|
return [4 /*yield*/, response];
|
|
@@ -587,7 +599,7 @@ var PasskeyApiClient = /** @class */ (function () {
|
|
|
587
599
|
};
|
|
588
600
|
response = fetch("".concat(this.baseUrl, "/client/user-authenticators/passkey"), {
|
|
589
601
|
method: "POST",
|
|
590
|
-
headers:
|
|
602
|
+
headers: buildHeaders({ token: token, tenantId: this.tenantId }),
|
|
591
603
|
body: JSON.stringify(body)
|
|
592
604
|
});
|
|
593
605
|
return [4 /*yield*/, response];
|
|
@@ -606,7 +618,7 @@ var PasskeyApiClient = /** @class */ (function () {
|
|
|
606
618
|
body = { challengeId: challengeId, authenticationCredential: authenticationCredential, deviceId: deviceId };
|
|
607
619
|
response = fetch("".concat(this.baseUrl, "/client/verify/passkey"), {
|
|
608
620
|
method: "POST",
|
|
609
|
-
headers:
|
|
621
|
+
headers: buildHeaders({ token: token, tenantId: this.tenantId }),
|
|
610
622
|
body: JSON.stringify(body)
|
|
611
623
|
});
|
|
612
624
|
return [4 /*yield*/, response];
|
|
@@ -622,7 +634,7 @@ var PasskeyApiClient = /** @class */ (function () {
|
|
|
622
634
|
switch (_a.label) {
|
|
623
635
|
case 0: return [4 /*yield*/, fetch("".concat(this.baseUrl, "/client/user-authenticators/passkey?credentialId=").concat(credentialId), {
|
|
624
636
|
method: "GET",
|
|
625
|
-
headers: this.
|
|
637
|
+
headers: buildHeaders({ tenantId: this.tenantId })
|
|
626
638
|
})];
|
|
627
639
|
case 1:
|
|
628
640
|
response = _a.sent();
|
|
@@ -642,7 +654,7 @@ var PasskeyApiClient = /** @class */ (function () {
|
|
|
642
654
|
case 0:
|
|
643
655
|
response = fetch("".concat(this.baseUrl, "/client/challenge"), {
|
|
644
656
|
method: "POST",
|
|
645
|
-
headers: this.
|
|
657
|
+
headers: buildHeaders({ tenantId: this.tenantId }),
|
|
646
658
|
body: JSON.stringify({ action: action })
|
|
647
659
|
});
|
|
648
660
|
return [4 /*yield*/, response];
|
|
@@ -651,13 +663,6 @@ var PasskeyApiClient = /** @class */ (function () {
|
|
|
651
663
|
});
|
|
652
664
|
});
|
|
653
665
|
};
|
|
654
|
-
PasskeyApiClient.prototype.buildHeaders = function (token) {
|
|
655
|
-
var authorizationHeader = token ? "Bearer ".concat(token) : "Basic ".concat(window.btoa(encodeURIComponent(this.tenantId)));
|
|
656
|
-
return {
|
|
657
|
-
"Content-Type": "application/json",
|
|
658
|
-
Authorization: authorizationHeader
|
|
659
|
-
};
|
|
660
|
-
};
|
|
661
666
|
return PasskeyApiClient;
|
|
662
667
|
}());
|
|
663
668
|
|
|
@@ -1415,7 +1420,7 @@ var TotpApiClient = /** @class */ (function () {
|
|
|
1415
1420
|
case 0:
|
|
1416
1421
|
response = fetch("".concat(this.baseUrl, "/client/user-authenticators/totp"), {
|
|
1417
1422
|
method: "POST",
|
|
1418
|
-
headers:
|
|
1423
|
+
headers: buildHeaders({ token: token, tenantId: this.tenantId })
|
|
1419
1424
|
});
|
|
1420
1425
|
return [4 /*yield*/, response];
|
|
1421
1426
|
case 1: return [2 /*return*/, (_b.sent()).json()];
|
|
@@ -1433,7 +1438,7 @@ var TotpApiClient = /** @class */ (function () {
|
|
|
1433
1438
|
body = { code: code };
|
|
1434
1439
|
response = fetch("".concat(this.baseUrl, "/client/verify/totp"), {
|
|
1435
1440
|
method: "POST",
|
|
1436
|
-
headers:
|
|
1441
|
+
headers: buildHeaders({ token: token, tenantId: this.tenantId }),
|
|
1437
1442
|
body: JSON.stringify(body)
|
|
1438
1443
|
});
|
|
1439
1444
|
return [4 /*yield*/, response];
|
|
@@ -1442,13 +1447,6 @@ var TotpApiClient = /** @class */ (function () {
|
|
|
1442
1447
|
});
|
|
1443
1448
|
});
|
|
1444
1449
|
};
|
|
1445
|
-
TotpApiClient.prototype.buildHeaders = function (token) {
|
|
1446
|
-
var authorizationHeader = token ? "Bearer ".concat(token) : "Basic ".concat(window.btoa(encodeURIComponent(this.tenantId)));
|
|
1447
|
-
return {
|
|
1448
|
-
"Content-Type": "application/json",
|
|
1449
|
-
Authorization: authorizationHeader
|
|
1450
|
-
};
|
|
1451
|
-
};
|
|
1452
1450
|
return TotpApiClient;
|
|
1453
1451
|
}());
|
|
1454
1452
|
|
|
@@ -1630,7 +1628,7 @@ var SmsApiClient = /** @class */ (function () {
|
|
|
1630
1628
|
body = { phoneNumber: phoneNumber };
|
|
1631
1629
|
response = fetch("".concat(this.baseUrl, "/client/user-authenticators/sms"), {
|
|
1632
1630
|
method: "POST",
|
|
1633
|
-
headers:
|
|
1631
|
+
headers: buildHeaders({ token: token, tenantId: this.tenantId }),
|
|
1634
1632
|
body: JSON.stringify(body)
|
|
1635
1633
|
});
|
|
1636
1634
|
return [4 /*yield*/, response];
|
|
@@ -1648,7 +1646,7 @@ var SmsApiClient = /** @class */ (function () {
|
|
|
1648
1646
|
case 0:
|
|
1649
1647
|
response = fetch("".concat(this.baseUrl, "/client/challenge/sms"), {
|
|
1650
1648
|
method: "POST",
|
|
1651
|
-
headers:
|
|
1649
|
+
headers: buildHeaders({ token: token, tenantId: this.tenantId })
|
|
1652
1650
|
});
|
|
1653
1651
|
return [4 /*yield*/, response];
|
|
1654
1652
|
case 1: return [2 /*return*/, (_b.sent()).json()];
|
|
@@ -1666,7 +1664,7 @@ var SmsApiClient = /** @class */ (function () {
|
|
|
1666
1664
|
body = { code: code };
|
|
1667
1665
|
response = fetch("".concat(this.baseUrl, "/client/verify/sms"), {
|
|
1668
1666
|
method: "POST",
|
|
1669
|
-
headers:
|
|
1667
|
+
headers: buildHeaders({ token: token, tenantId: this.tenantId }),
|
|
1670
1668
|
body: JSON.stringify(body)
|
|
1671
1669
|
});
|
|
1672
1670
|
return [4 /*yield*/, response];
|
|
@@ -1675,13 +1673,6 @@ var SmsApiClient = /** @class */ (function () {
|
|
|
1675
1673
|
});
|
|
1676
1674
|
});
|
|
1677
1675
|
};
|
|
1678
|
-
SmsApiClient.prototype.buildHeaders = function (token) {
|
|
1679
|
-
var authorizationHeader = token ? "Bearer ".concat(token) : "Basic ".concat(window.btoa(encodeURIComponent(this.tenantId)));
|
|
1680
|
-
return {
|
|
1681
|
-
"Content-Type": "application/json",
|
|
1682
|
-
Authorization: authorizationHeader
|
|
1683
|
-
};
|
|
1684
|
-
};
|
|
1685
1676
|
return SmsApiClient;
|
|
1686
1677
|
}());
|
|
1687
1678
|
|
package/dist/index.min.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
var authsignal=function(e){"use strict";let t;const n=new Uint8Array(16);function o(){if(!t&&(t="undefined"!=typeof crypto&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto),!t))throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");return t(n)}const i=[];for(let e=0;e<256;++e)i.push((e+256).toString(16).slice(1));var r={randomUUID:"undefined"!=typeof crypto&&crypto.randomUUID&&crypto.randomUUID.bind(crypto)};function a(e,t,n){if(r.randomUUID&&!t&&!e)return r.randomUUID();const a=(e=e||{}).random||(e.rng||o)();if(a[6]=15&a[6]|64,a[8]=63&a[8]|128,t){n=n||0;for(let e=0;e<16;++e)t[n+e]=a[e];return t}return function(e,t=0){return(i[e[t+0]]+i[e[t+1]]+i[e[t+2]]+i[e[t+3]]+"-"+i[e[t+4]]+i[e[t+5]]+"-"+i[e[t+6]]+i[e[t+7]]+"-"+i[e[t+8]]+i[e[t+9]]+"-"+i[e[t+10]]+i[e[t+11]]+i[e[t+12]]+i[e[t+13]]+i[e[t+14]]+i[e[t+15]]).toLowerCase()}(a)}function s(e){var t=e.name,n=e.value,o=e.expire,i=e.domain,r=e.secure,a=o===1/0?" expires=Fri, 31 Dec 9999 23:59:59 GMT":"; max-age="+o;document.cookie=encodeURIComponent(t)+"="+n+"; path=/;"+a+(i?"; domain="+i:"")+(r?"; secure":"")}function c(e){var t;console.error(null!==(t=e.errorDescription)&&void 0!==t?t:e.error)}function u(e,t,n,o){return new(n||(n=Promise))((function(i,r){function a(e){try{c(o.next(e))}catch(e){r(e)}}function s(e){try{c(o.throw(e))}catch(e){r(e)}}function c(e){var t;e.done?i(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}c((o=o.apply(e,t||[])).next())}))}function l(e,t){var n,o,i,r,a={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]};return r={next:s(0),throw:s(1),return:s(2)},"function"==typeof Symbol&&(r[Symbol.iterator]=function(){return this}),r;function s(r){return function(s){return function(r){if(n)throw new TypeError("Generator is already executing.");for(;a;)try{if(n=1,o&&(i=2&r[0]?o.return:r[0]?o.throw||((i=o.return)&&i.call(o),0):o.next)&&!(i=i.call(o,r[1])).done)return i;switch(o=0,i&&(r=[2&r[0],i.value]),r[0]){case 0:case 1:i=r;break;case 4:return a.label++,{value:r[1],done:!1};case 5:a.label++,o=r[1],r=[0];continue;case 7:r=a.ops.pop(),a.trys.pop();continue;default:if(!(i=a.trys,(i=i.length>0&&i[i.length-1])||6!==r[0]&&2!==r[0])){a=0;continue}if(3===r[0]&&(!i||r[1]>i[0]&&r[1]<i[3])){a.label=r[1];break}if(6===r[0]&&a.label<i[1]){a.label=i[1],i=r;break}if(i&&a.label<i[2]){a.label=i[2],a.ops.push(r);break}i[2]&&a.ops.pop(),a.trys.pop();continue}r=t.call(e,a)}catch(e){r=[6,e],o=0}finally{n=i=0}if(5&r[0])throw r[1];return{value:r[0]?r[1]:void 0,done:!0}}([r,s])}}}function d(e){const t=new Uint8Array(e);let n="";for(const e of t)n+=String.fromCharCode(e);return btoa(n).replace(/\+/g,"-").replace(/\//g,"_").replace(/=/g,"")}function h(e){const t=e.replace(/-/g,"+").replace(/_/g,"/"),n=(4-t.length%4)%4,o=t.padEnd(t.length+n,"="),i=atob(o),r=new ArrayBuffer(i.length),a=new Uint8Array(r);for(let e=0;e<i.length;e++)a[e]=i.charCodeAt(e);return r}function p(){return void 0!==window?.PublicKeyCredential&&"function"==typeof window.PublicKeyCredential}function f(e){const{id:t}=e;return{...e,id:h(t),transports:e.transports}}function m(e){return"localhost"===e||/^([a-z0-9]+(-[a-z0-9]+)*\.)+[a-z]{2,}$/i.test(e)}e.AuthsignalWindowMessage=void 0,(e.AuthsignalWindowMessage||(e.AuthsignalWindowMessage={})).AUTHSIGNAL_CLOSE_POPUP="AUTHSIGNAL_CLOSE_POPUP";class v extends Error{constructor({message:e,code:t,cause:n,name:o}){super(e,{cause:n}),this.name=o??n.name,this.code=t}}const y=new class{createNewAbortSignal(){if(this.controller){const e=new Error("Cancelling existing WebAuthn API call for new one");e.name="AbortError",this.controller.abort(e)}const e=new AbortController;return this.controller=e,e.signal}cancelCeremony(){if(this.controller){const e=new Error("Manually cancelling existing WebAuthn API call");e.name="AbortError",this.controller.abort(e),this.controller=void 0}}},w=["cross-platform","platform"];function b(e){if(e&&!(w.indexOf(e)<0))return e}async function g(e){if(!p())throw new Error("WebAuthn is not supported in this browser");var t;const n={publicKey:{...e,challenge:h(e.challenge),user:{...e.user,id:(t=e.user.id,(new TextEncoder).encode(t))},excludeCredentials:e.excludeCredentials?.map(f)}};let o;n.signal=y.createNewAbortSignal();try{o=await navigator.credentials.create(n)}catch(e){throw function({error:e,options:t}){const{publicKey:n}=t;if(!n)throw Error("options was missing required publicKey property");if("AbortError"===e.name){if(t.signal instanceof AbortSignal)return new v({message:"Registration ceremony was sent an abort signal",code:"ERROR_CEREMONY_ABORTED",cause:e})}else if("ConstraintError"===e.name){if(!0===n.authenticatorSelection?.requireResidentKey)return new v({message:"Discoverable credentials were required but no available authenticator supported it",code:"ERROR_AUTHENTICATOR_MISSING_DISCOVERABLE_CREDENTIAL_SUPPORT",cause:e});if("required"===n.authenticatorSelection?.userVerification)return new v({message:"User verification was required but no available authenticator supported it",code:"ERROR_AUTHENTICATOR_MISSING_USER_VERIFICATION_SUPPORT",cause:e})}else{if("InvalidStateError"===e.name)return new v({message:"The authenticator was previously registered",code:"ERROR_AUTHENTICATOR_PREVIOUSLY_REGISTERED",cause:e});if("NotAllowedError"===e.name)return new v({message:e.message,code:"ERROR_PASSTHROUGH_SEE_CAUSE_PROPERTY",cause:e});if("NotSupportedError"===e.name)return 0===n.pubKeyCredParams.filter((e=>"public-key"===e.type)).length?new v({message:'No entry in pubKeyCredParams was of type "public-key"',code:"ERROR_MALFORMED_PUBKEYCREDPARAMS",cause:e}):new v({message:"No available authenticator supported any of the specified pubKeyCredParams algorithms",code:"ERROR_AUTHENTICATOR_NO_SUPPORTED_PUBKEYCREDPARAMS_ALG",cause:e});if("SecurityError"===e.name){const t=window.location.hostname;if(!m(t))return new v({message:`${window.location.hostname} is an invalid domain`,code:"ERROR_INVALID_DOMAIN",cause:e});if(n.rp.id!==t)return new v({message:`The RP ID "${n.rp.id}" is invalid for this domain`,code:"ERROR_INVALID_RP_ID",cause:e})}else if("TypeError"===e.name){if(n.user.id.byteLength<1||n.user.id.byteLength>64)return new v({message:"User ID was not between 1 and 64 characters",code:"ERROR_INVALID_USER_ID_LENGTH",cause:e})}else if("UnknownError"===e.name)return new v({message:"The authenticator was unable to process the specified options, or could not create a new credential",code:"ERROR_AUTHENTICATOR_GENERAL_ERROR",cause:e})}return e}({error:e,options:n})}if(!o)throw new Error("Registration was not completed");const{id:i,rawId:r,response:a,type:s}=o;let c,u,l,w;if("function"==typeof a.getTransports&&(c=a.getTransports()),"function"==typeof a.getPublicKeyAlgorithm)try{u=a.getPublicKeyAlgorithm()}catch(e){E("getPublicKeyAlgorithm()",e)}if("function"==typeof a.getPublicKey)try{const e=a.getPublicKey();null!==e&&(l=d(e))}catch(e){E("getPublicKey()",e)}if("function"==typeof a.getAuthenticatorData)try{w=d(a.getAuthenticatorData())}catch(e){E("getAuthenticatorData()",e)}return{id:i,rawId:d(r),response:{attestationObject:d(a.attestationObject),clientDataJSON:d(a.clientDataJSON),transports:c,publicKeyAlgorithm:u,publicKey:l,authenticatorData:w},type:s,clientExtensionResults:o.getClientExtensionResults(),authenticatorAttachment:b(o.authenticatorAttachment)}}function E(e,t){console.warn(`The browser extension that intercepted this WebAuthn API call incorrectly implemented ${e}. You should report this error to them.\n`,t)}async function A(e,t=!1){if(!p())throw new Error("WebAuthn is not supported in this browser");let n;0!==e.allowCredentials?.length&&(n=e.allowCredentials?.map(f));const o={...e,challenge:h(e.challenge),allowCredentials:n},i={};if(t){if(!await function(){const e=window.PublicKeyCredential;return void 0===e.isConditionalMediationAvailable?new Promise((e=>e(!1))):e.isConditionalMediationAvailable()}())throw Error("Browser does not support WebAuthn autofill");if(document.querySelectorAll("input[autocomplete$='webauthn']").length<1)throw Error('No <input> with "webauthn" as the only or last value in its `autocomplete` attribute was detected');i.mediation="conditional",o.allowCredentials=[]}let r;i.publicKey=o,i.signal=y.createNewAbortSignal();try{r=await navigator.credentials.get(i)}catch(e){throw function({error:e,options:t}){const{publicKey:n}=t;if(!n)throw Error("options was missing required publicKey property");if("AbortError"===e.name){if(t.signal instanceof AbortSignal)return new v({message:"Authentication ceremony was sent an abort signal",code:"ERROR_CEREMONY_ABORTED",cause:e})}else{if("NotAllowedError"===e.name)return new v({message:e.message,code:"ERROR_PASSTHROUGH_SEE_CAUSE_PROPERTY",cause:e});if("SecurityError"===e.name){const t=window.location.hostname;if(!m(t))return new v({message:`${window.location.hostname} is an invalid domain`,code:"ERROR_INVALID_DOMAIN",cause:e});if(n.rpId!==t)return new v({message:`The RP ID "${n.rpId}" is invalid for this domain`,code:"ERROR_INVALID_RP_ID",cause:e})}else if("UnknownError"===e.name)return new v({message:"The authenticator was unable to process the specified options, or could not create a new assertion signature",code:"ERROR_AUTHENTICATOR_GENERAL_ERROR",cause:e})}return e}({error:e,options:i})}if(!r)throw new Error("Authentication was not completed");const{id:a,rawId:s,response:c,type:u}=r;let l;var w;return c.userHandle&&(w=c.userHandle,l=new TextDecoder("utf-8").decode(w)),{id:a,rawId:d(s),response:{authenticatorData:d(c.authenticatorData),clientDataJSON:d(c.clientDataJSON),signature:d(c.signature),userHandle:l},type:u,clientExtensionResults:r.getClientExtensionResults(),authenticatorAttachment:b(r.authenticatorAttachment)}}var k=function(){function e(e){var t=e.baseUrl,n=e.tenantId;this.tenantId=n,this.baseUrl=t}return e.prototype.registrationOptions=function(e){var t=e.token,n=e.username,o=e.authenticatorAttachment;return u(this,void 0,void 0,(function(){var e;return l(this,(function(i){switch(i.label){case 0:return e=Boolean(o)?{username:n,authenticatorAttachment:o}:{username:n},[4,fetch("".concat(this.baseUrl,"/client/user-authenticators/passkey/registration-options"),{method:"POST",headers:this.buildHeaders(t),body:JSON.stringify(e)})];case 1:return[2,i.sent().json()]}}))}))},e.prototype.authenticationOptions=function(e){var t=e.token,n=e.challengeId;return u(this,void 0,void 0,(function(){var e;return l(this,(function(o){switch(o.label){case 0:return e={challengeId:n},[4,fetch("".concat(this.baseUrl,"/client/user-authenticators/passkey/authentication-options"),{method:"POST",headers:this.buildHeaders(t),body:JSON.stringify(e)})];case 1:return[2,o.sent().json()]}}))}))},e.prototype.addAuthenticator=function(e){var t=e.token,n=e.challengeId,o=e.registrationCredential;return u(this,void 0,void 0,(function(){var e;return l(this,(function(i){switch(i.label){case 0:return e={challengeId:n,registrationCredential:o},[4,fetch("".concat(this.baseUrl,"/client/user-authenticators/passkey"),{method:"POST",headers:this.buildHeaders(t),body:JSON.stringify(e)})];case 1:return[2,i.sent().json()]}}))}))},e.prototype.verify=function(e){var t=e.token,n=e.challengeId,o=e.authenticationCredential,i=e.deviceId;return u(this,void 0,void 0,(function(){var e;return l(this,(function(r){switch(r.label){case 0:return e={challengeId:n,authenticationCredential:o,deviceId:i},[4,fetch("".concat(this.baseUrl,"/client/verify/passkey"),{method:"POST",headers:this.buildHeaders(t),body:JSON.stringify(e)})];case 1:return[2,r.sent().json()]}}))}))},e.prototype.getPasskeyAuthenticator=function(e){return u(this,void 0,void 0,(function(){var t;return l(this,(function(n){switch(n.label){case 0:return[4,fetch("".concat(this.baseUrl,"/client/user-authenticators/passkey?credentialId=").concat(e),{method:"GET",headers:this.buildHeaders()})];case 1:if(!(t=n.sent()).ok)throw new Error(t.statusText);return[2,t.json()]}}))}))},e.prototype.challenge=function(e){return u(this,void 0,void 0,(function(){return l(this,(function(t){switch(t.label){case 0:return[4,fetch("".concat(this.baseUrl,"/client/challenge"),{method:"POST",headers:this.buildHeaders(),body:JSON.stringify({action:e})})];case 1:return[2,t.sent().json()]}}))}))},e.prototype.buildHeaders=function(e){return{"Content-Type":"application/json",Authorization:e?"Bearer ".concat(e):"Basic ".concat(window.btoa(encodeURIComponent(this.tenantId)))}},e}(),I=function(){function e(){this.token=null}return e.prototype.handleTokenNotSetError=function(){var e="A token has not been set. Call 'setToken' first.";return console.error("Error: ".concat(e)),{error:"TOKEN_NOT_SET",errorDescription:e}},e.shared=new e,e}(),R=function(){function e(e){var t=e.baseUrl,n=e.tenantId,o=e.anonymousId;this.passkeyLocalStorageKey="as_passkey_credential_id",this.cache=I.shared,this.api=new k({baseUrl:t,tenantId:n}),this.anonymousId=o}return e.prototype.signUp=function(e){var t=e.userName,n=e.userDisplayName,o=e.token,i=e.authenticatorAttachment,r=void 0===i?"platform":i;return u(this,void 0,void 0,(function(){var e,i,a,s,u;return l(this,(function(l){switch(l.label){case 0:return(e=null!=o?o:this.cache.token)?(i={username:t,displayName:n,token:e,authenticatorAttachment:r},[4,this.api.registrationOptions(i)]):[2,this.cache.handleTokenNotSetError()];case 1:return"error"in(a=l.sent())?(c(a),[2]):[4,g(a.options)];case 2:return s=l.sent(),[4,this.api.addAuthenticator({challengeId:a.challengeId,registrationCredential:s,token:e})];case 3:return"error"in(u=l.sent())?(c(u),[2]):(u.isVerified&&this.storeCredentialAgainstDevice(s),[2,{token:u.accessToken}])}}))}))},e.prototype.signIn=function(e){return u(this,void 0,void 0,(function(){var t,n,o,i,r,a,s,u,d,h;return l(this,(function(l){switch(l.label){case 0:if((null==e?void 0:e.token)&&e.autofill)throw new Error("autofill is not supported when providing a token");if((null==e?void 0:e.action)&&e.token)throw new Error("action is not supported when providing a token");return(null==e?void 0:e.action)?[4,this.api.challenge(e.action)]:[3,2];case 1:return n=l.sent(),[3,3];case 2:n=null,l.label=3;case 3:return(t=n)&&"error"in t?(c(t),[2]):[4,this.api.authenticationOptions({token:null==e?void 0:e.token,challengeId:null==t?void 0:t.challengeId})];case 4:return"error"in(o=l.sent())?(c(o),[2]):[4,A(o.options,null==e?void 0:e.autofill)];case 5:return i=l.sent(),(null==e?void 0:e.onVerificationStarted)&&e.onVerificationStarted(),[4,this.api.verify({challengeId:o.challengeId,authenticationCredential:i,token:null==e?void 0:e.token,deviceId:this.anonymousId})];case 6:return"error"in(r=l.sent())?(c(r),[2]):(r.isVerified&&this.storeCredentialAgainstDevice(i),a=r.accessToken,s=r.userId,u=r.userAuthenticatorId,d=r.username,h=r.userDisplayName,[2,{token:a,userId:s,userAuthenticatorId:u,userName:d,userDisplayName:h}])}}))}))},e.prototype.isAvailableOnDevice=function(){return u(this,void 0,void 0,(function(){var e;return l(this,(function(t){switch(t.label){case 0:if(!(e=localStorage.getItem(this.passkeyLocalStorageKey)))return[2,!1];t.label=1;case 1:return t.trys.push([1,3,,4]),[4,this.api.getPasskeyAuthenticator(e)];case 2:return t.sent(),[2,!0];case 3:return t.sent(),[2,!1];case 4:return[2]}}))}))},e.prototype.storeCredentialAgainstDevice=function(e){var t=e.id;"cross-platform"!==e.authenticatorAttachment&&localStorage.setItem(this.passkeyLocalStorageKey,t)},e}(),S=function(){function e(){this.windowRef=null}return e.prototype.show=function(e){var t=e.url,n=e.width,o=void 0===n?400:n,i=e.height,r=function(e){var t=e.url,n=e.width,o=e.height,i=e.win;if(!i.top)return null;var r=i.top.outerHeight/2+i.top.screenY-o/2,a=i.top.outerWidth/2+i.top.screenX-n/2;return window.open(t,"","toolbar=no, location=no, directories=no, status=no, menubar=no, scrollbars=no, resizable=no, copyhistory=no, width=".concat(n,", height=").concat(o,", top=").concat(r,", left=").concat(a))}({url:t,width:o,height:void 0===i?500:i,win:window});if(!r)throw new Error("Window is not initialized");return this.windowRef=r,r},e.prototype.close=function(){if(!this.windowRef)throw new Error("Window is not initialized");this.windowRef.close()},e}();const _=":not([inert]):not([inert] *)",O=':not([tabindex^="-"])',C=":not(:disabled)";var T=[`a[href]${_}${O}`,`area[href]${_}${O}`,`input:not([type="hidden"]):not([type="radio"])${_}${O}${C}`,`input[type="radio"]${_}${O}${C}`,`select${_}${O}${C}`,`textarea${_}${O}${C}`,`button${_}${O}${C}`,`details${_} > summary:first-of-type${O}`,`iframe${_}${O}`,`audio[controls]${_}${O}`,`video[controls]${_}${O}`,`[contenteditable]${_}${O}`,`[tabindex]${_}${O}`];function U(e){(e.querySelector("[autofocus]")||e).focus()}function N(e,t){if(t&&D(e))return e;if(!((n=e).shadowRoot&&"-1"===n.getAttribute("tabindex")||n.matches(":disabled,[hidden],[inert]")))if(e.shadowRoot){let n=P(e.shadowRoot,t);for(;n;){const e=N(n,t);if(e)return e;n=$(n,t)}}else if("slot"===e.localName){const n=e.assignedElements({flatten:!0});t||n.reverse();for(const e of n){const n=N(e,t);if(n)return n}}else{let n=P(e,t);for(;n;){const e=N(n,t);if(e)return e;n=$(n,t)}}var n;return!t&&D(e)?e:null}function P(e,t){return t?e.firstElementChild:e.lastElementChild}function $(e,t){return t?e.nextElementSibling:e.previousElementSibling}const D=e=>!e.shadowRoot?.delegatesFocus&&(e.matches(T.join(","))&&!(e=>!(!e.matches("details:not([open]) *")||e.matches("details>summary:first-of-type"))||!(e.offsetWidth||e.offsetHeight||e.getClientRects().length))(e));function x(e=document){const t=e.activeElement;return t?t.shadowRoot?x(t.shadowRoot)||document.activeElement:t:null}function L(e,t){const[n,o]=function(e){const t=N(e,!0);return[t,t?N(e,!1)||t:null]}(e);if(!n)return t.preventDefault();const i=x();t.shiftKey&&i===n?(o.focus(),t.preventDefault()):t.shiftKey||i!==o||(n.focus(),t.preventDefault())}class H{$el;id;previouslyFocused;shown;constructor(e){this.$el=e,this.id=this.$el.getAttribute("data-a11y-dialog")||this.$el.id,this.previouslyFocused=null,this.shown=!1,this.maintainFocus=this.maintainFocus.bind(this),this.bindKeypress=this.bindKeypress.bind(this),this.handleTriggerClicks=this.handleTriggerClicks.bind(this),this.show=this.show.bind(this),this.hide=this.hide.bind(this),this.$el.setAttribute("aria-hidden","true"),this.$el.setAttribute("aria-modal","true"),this.$el.setAttribute("tabindex","-1"),this.$el.hasAttribute("role")||this.$el.setAttribute("role","dialog"),document.addEventListener("click",this.handleTriggerClicks,!0)}destroy(){return this.hide(),document.removeEventListener("click",this.handleTriggerClicks,!0),this.$el.replaceWith(this.$el.cloneNode(!0)),this.fire("destroy"),this}show(e){return this.shown||(this.shown=!0,this.$el.removeAttribute("aria-hidden"),this.previouslyFocused=x(),"BODY"===this.previouslyFocused?.tagName&&e?.target&&(this.previouslyFocused=e.target),"focus"===e?.type?this.maintainFocus(e):U(this.$el),document.body.addEventListener("focus",this.maintainFocus,!0),this.$el.addEventListener("keydown",this.bindKeypress,!0),this.fire("show",e)),this}hide(e){return this.shown?(this.shown=!1,this.$el.setAttribute("aria-hidden","true"),this.previouslyFocused?.focus?.(),document.body.removeEventListener("focus",this.maintainFocus,!0),this.$el.removeEventListener("keydown",this.bindKeypress,!0),this.fire("hide",e),this):this}on(e,t,n){return this.$el.addEventListener(e,t,n),this}off(e,t,n){return this.$el.removeEventListener(e,t,n),this}fire(e,t){this.$el.dispatchEvent(new CustomEvent(e,{detail:t,cancelable:!0}))}handleTriggerClicks(e){const t=e.target;t.closest(`[data-a11y-dialog-show="${this.id}"]`)&&this.show(e),(t.closest(`[data-a11y-dialog-hide="${this.id}"]`)||t.closest("[data-a11y-dialog-hide]")&&t.closest('[aria-modal="true"]')===this.$el)&&this.hide(e)}bindKeypress(e){if(document.activeElement?.closest('[aria-modal="true"]')!==this.$el)return;let t=!1;try{t=!!this.$el.querySelector('[popover]:not([popover="manual"]):popover-open')}catch{}"Escape"!==e.key||"alertdialog"===this.$el.getAttribute("role")||t||(e.preventDefault(),this.hide(e)),"Tab"===e.key&&L(this.$el,e)}maintainFocus(e){e.target.closest('[aria-modal="true"], [data-a11y-dialog-ignore-focus-trap]')||U(this.$el)}}function K(){for(const e of document.querySelectorAll("[data-a11y-dialog]"))new H(e)}"undefined"!=typeof document&&("loading"===document.readyState?document.addEventListener("DOMContentLoaded",K):K());var j="__authsignal-popup-container",W="__authsignal-popup-content",M="__authsignal-popup-overlay",q="__authsignal-popup-style",B="__authsignal-popup-iframe",F="385px",G=function(){function e(e){var t=e.width,n=e.isClosable;if(this.popup=null,document.querySelector("#".concat(j)))throw new Error("Multiple instances of Authsignal popup is not supported.");this.create({width:t,isClosable:n})}return e.prototype.create=function(e){var t=this,n=e.width,o=void 0===n?F:n,i=e.isClosable,r=void 0===i||i,a=o;CSS.supports("width",o)||(console.warn("Invalid CSS value for `popupOptions.width`. Using default value instead."),a=F);var s=document.createElement("div");s.setAttribute("id",j),s.setAttribute("aria-hidden","true"),r||s.setAttribute("role","alertdialog");var c=document.createElement("div");c.setAttribute("id",M),r&&c.setAttribute("data-a11y-dialog-hide","true");var u=document.createElement("div");u.setAttribute("id",W),document.body.appendChild(s);var l=document.createElement("style");l.setAttribute("id",q),l.textContent="\n #".concat(j,",\n #").concat(M," {\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n }\n\n #").concat(j," {\n z-index: 2147483647;\n display: flex;\n }\n\n #").concat(j,"[aria-hidden='true'] {\n display: none;\n }\n\n #").concat(M," {\n background-color: rgba(0, 0, 0, 0.18);\n }\n\n #").concat(W," {\n margin: auto;\n z-index: 2147483647;\n position: relative;\n background-color: transparent;\n border-radius: 8px;\n width: ").concat(a,";\n }\n\n #").concat(W," iframe {\n width: 1px;\n min-width: 100%;\n border-radius: inherit;\n max-height: 95vh;\n height: ").concat("384px",";\n }\n "),document.head.insertAdjacentElement("beforeend",l),s.appendChild(c),s.appendChild(u),this.popup=new H(s),s.focus(),this.popup.on("hide",(function(){t.destroy()}))},e.prototype.destroy=function(){var e=document.querySelector("#".concat(j)),t=document.querySelector("#".concat(q));e&&t&&(document.body.removeChild(e),document.head.removeChild(t)),window.removeEventListener("message",J)},e.prototype.show=function(e){var t,n=e.url;if(!this.popup)throw new Error("Popup is not initialized");var o=document.createElement("iframe");o.setAttribute("id",B),o.setAttribute("name","authsignal"),o.setAttribute("title","Authsignal multi-factor authentication"),o.setAttribute("src",n),o.setAttribute("frameborder","0"),o.setAttribute("allow","publickey-credentials-get *; publickey-credentials-create *; clipboard-write");var i=document.querySelector("#".concat(W));i&&i.appendChild(o),window.addEventListener("message",J),null===(t=this.popup)||void 0===t||t.show()},e.prototype.close=function(){if(!this.popup)throw new Error("Popup is not initialized");this.popup.hide()},e.prototype.on=function(e,t){if(!this.popup)throw new Error("Popup is not initialized");this.popup.on(e,t)},e}();function J(e){var t=document.querySelector("#".concat(B));t&&e.data.height&&(t.style.height=e.data.height+"px")}var V=function(){function e(e){var t=e.baseUrl,n=e.tenantId;this.tenantId=n,this.baseUrl=t}return e.prototype.enroll=function(e){var t=e.token;return u(this,void 0,void 0,(function(){return l(this,(function(e){switch(e.label){case 0:return[4,fetch("".concat(this.baseUrl,"/client/user-authenticators/totp"),{method:"POST",headers:this.buildHeaders(t)})];case 1:return[2,e.sent().json()]}}))}))},e.prototype.verify=function(e){var t=e.token,n=e.code;return u(this,void 0,void 0,(function(){var e;return l(this,(function(o){switch(o.label){case 0:return e={code:n},[4,fetch("".concat(this.baseUrl,"/client/verify/totp"),{method:"POST",headers:this.buildHeaders(t),body:JSON.stringify(e)})];case 1:return[2,o.sent().json()]}}))}))},e.prototype.buildHeaders=function(e){return{"Content-Type":"application/json",Authorization:e?"Bearer ".concat(e):"Basic ".concat(window.btoa(encodeURIComponent(this.tenantId)))}},e}(),z=function(){function e(e){var t=e.baseUrl,n=e.tenantId;this.cache=I.shared,this.api=new V({baseUrl:t,tenantId:n})}return e.prototype.enroll=function(){return u(this,void 0,void 0,(function(){return l(this,(function(e){return this.cache.token?[2,this.api.enroll({token:this.cache.token})]:[2,this.cache.handleTokenNotSetError()]}))}))},e.prototype.verify=function(e){var t=e.code;return u(this,void 0,void 0,(function(){var e;return l(this,(function(n){switch(n.label){case 0:return this.cache.token?[4,this.api.verify({token:this.cache.token,code:t})]:[2,this.cache.handleTokenNotSetError()];case 1:return(e=n.sent()).token&&(this.cache.token=e.token),[2,e]}}))}))},e}(),Y=function(){function e(e){var t=e.baseUrl,n=e.tenantId;this.tenantId=n,this.baseUrl=t}return e.prototype.enroll=function(e){var t=e.token,n=e.email;return u(this,void 0,void 0,(function(){var e;return l(this,(function(o){switch(o.label){case 0:return e={email:n},[4,fetch("".concat(this.baseUrl,"/client/user-authenticators/email-otp"),{method:"POST",headers:this.buildHeaders(t),body:JSON.stringify(e)})];case 1:return[2,o.sent().json()]}}))}))},e.prototype.challenge=function(e){var t=e.token;return u(this,void 0,void 0,(function(){return l(this,(function(e){switch(e.label){case 0:return[4,fetch("".concat(this.baseUrl,"/client/challenge/email-otp"),{method:"POST",headers:this.buildHeaders(t)})];case 1:return[2,e.sent().json()]}}))}))},e.prototype.verify=function(e){var t=e.token,n=e.code;return u(this,void 0,void 0,(function(){var e;return l(this,(function(o){switch(o.label){case 0:return e={code:n},[4,fetch("".concat(this.baseUrl,"/client/verify/email-otp"),{method:"POST",headers:this.buildHeaders(t),body:JSON.stringify(e)})];case 1:return[2,o.sent().json()]}}))}))},e.prototype.buildHeaders=function(e){return{"Content-Type":"application/json",Authorization:e?"Bearer ".concat(e):"Basic ".concat(window.btoa(encodeURIComponent(this.tenantId)))}},e}(),X=function(){function e(e){var t=e.baseUrl,n=e.tenantId;this.cache=I.shared,this.api=new Y({baseUrl:t,tenantId:n})}return e.prototype.enroll=function(e){var t=e.email;return u(this,void 0,void 0,(function(){return l(this,(function(e){return this.cache.token?[2,this.api.enroll({token:this.cache.token,email:t})]:[2,this.cache.handleTokenNotSetError()]}))}))},e.prototype.challenge=function(){return u(this,void 0,void 0,(function(){return l(this,(function(e){return this.cache.token?[2,this.api.challenge({token:this.cache.token})]:[2,this.cache.handleTokenNotSetError()]}))}))},e.prototype.verify=function(e){var t=e.code;return u(this,void 0,void 0,(function(){var e;return l(this,(function(n){switch(n.label){case 0:return this.cache.token?[4,this.api.verify({token:this.cache.token,code:t})]:[2,this.cache.handleTokenNotSetError()];case 1:return(e=n.sent()).token&&(this.cache.token=e.token),[2,e]}}))}))},e}(),Q=function(){function e(e){var t=e.baseUrl,n=e.tenantId;this.tenantId=n,this.baseUrl=t}return e.prototype.enroll=function(e){var t=e.token,n=e.phoneNumber;return u(this,void 0,void 0,(function(){var e;return l(this,(function(o){switch(o.label){case 0:return e={phoneNumber:n},[4,fetch("".concat(this.baseUrl,"/client/user-authenticators/sms"),{method:"POST",headers:this.buildHeaders(t),body:JSON.stringify(e)})];case 1:return[2,o.sent().json()]}}))}))},e.prototype.challenge=function(e){var t=e.token;return u(this,void 0,void 0,(function(){return l(this,(function(e){switch(e.label){case 0:return[4,fetch("".concat(this.baseUrl,"/client/challenge/sms"),{method:"POST",headers:this.buildHeaders(t)})];case 1:return[2,e.sent().json()]}}))}))},e.prototype.verify=function(e){var t=e.token,n=e.code;return u(this,void 0,void 0,(function(){var e;return l(this,(function(o){switch(o.label){case 0:return e={code:n},[4,fetch("".concat(this.baseUrl,"/client/verify/sms"),{method:"POST",headers:this.buildHeaders(t),body:JSON.stringify(e)})];case 1:return[2,o.sent().json()]}}))}))},e.prototype.buildHeaders=function(e){return{"Content-Type":"application/json",Authorization:e?"Bearer ".concat(e):"Basic ".concat(window.btoa(encodeURIComponent(this.tenantId)))}},e}(),Z=function(){function e(e){var t=e.baseUrl,n=e.tenantId;this.cache=I.shared,this.api=new Q({baseUrl:t,tenantId:n})}return e.prototype.enroll=function(e){var t=e.phoneNumber;return u(this,void 0,void 0,(function(){return l(this,(function(e){return this.cache.token?[2,this.api.enroll({token:this.cache.token,phoneNumber:t})]:[2,this.cache.handleTokenNotSetError()]}))}))},e.prototype.challenge=function(){return u(this,void 0,void 0,(function(){return l(this,(function(e){return this.cache.token?[2,this.api.challenge({token:this.cache.token})]:[2,this.cache.handleTokenNotSetError()]}))}))},e.prototype.verify=function(e){var t=e.code;return u(this,void 0,void 0,(function(){var e;return l(this,(function(n){switch(n.label){case 0:return this.cache.token?[4,this.api.verify({token:this.cache.token,code:t})]:[2,this.cache.handleTokenNotSetError()];case 1:return(e=n.sent()).token&&(this.cache.token=e.token),[2,e]}}))}))},e}(),ee="4a08uqve",te=function(){function t(e){var t=e.cookieDomain,n=e.cookieName,o=void 0===n?"__as_aid":n,i=e.baseUrl,r=void 0===i?"https://api.authsignal.com/v1":i,c=e.tenantId;if(this.anonymousId="",this.profilingId="",this.cookieDomain="",this.anonymousIdCookieName="",this.cookieDomain=t||document.location.hostname.replace("www.",""),this.anonymousIdCookieName=o,!c)throw new Error("tenantId is required");var u,l=(u=this.anonymousIdCookieName)&&decodeURIComponent(document.cookie.replace(new RegExp("(?:(?:^|.*;)\\s*"+encodeURIComponent(u).replace(/[\-\.\+\*]/g,"\\$&")+"\\s*\\=\\s*([^;]*).*$)|^.*$"),"$1"))||null;l?this.anonymousId=l:(this.anonymousId=a(),s({name:this.anonymousIdCookieName,value:this.anonymousId,expire:1/0,domain:this.cookieDomain,secure:"http:"!==document.location.protocol})),this.passkey=new R({tenantId:c,baseUrl:r,anonymousId:this.anonymousId}),this.totp=new z({tenantId:c,baseUrl:r}),this.email=new X({tenantId:c,baseUrl:r}),this.sms=new Z({tenantId:c,baseUrl:r})}return t.prototype.setToken=function(e){I.shared.token=e},t.prototype.launch=function(e,t){switch(null==t?void 0:t.mode){case"window":return this.launchWithWindow(e,t);case"popup":return this.launchWithPopup(e,t);default:this.launchWithRedirect(e)}},t.prototype.initAdvancedProfiling=function(e){var t=a();this.profilingId=t,s({name:"__as_pid",value:t,expire:1/0,domain:this.cookieDomain,secure:"http:"!==document.location.protocol});var n=e?"".concat(e,"/fp/tags.js?org_id=").concat(ee,"&session_id=").concat(t):"https://h.online-metrix.net/fp/tags.js?org_id=".concat(ee,"&session_id=").concat(t),o=document.createElement("script");o.src=n,o.async=!1,o.id="as_adv_profile",document.head.appendChild(o);var i=document.createElement("noscript");i.setAttribute("id","as_adv_profile_pixel"),i.setAttribute("aria-hidden","true");var r=document.createElement("iframe"),c=e?"".concat(e,"/fp/tags?org_id=").concat(ee,"&session_id=").concat(t):"https://h.online-metrix.net/fp/tags?org_id=".concat(ee,"&session_id=").concat(t);r.setAttribute("id","as_adv_profile_pixel"),r.setAttribute("src",c),r.setAttribute("style","width: 100px; height: 100px; border: 0; position: absolute; top: -5000px;"),i&&(i.appendChild(r),document.body.prepend(i))},t.prototype.launchWithRedirect=function(e){window.location.href=e},t.prototype.launchWithPopup=function(t,n){var o=n.popupOptions,i=new G({width:null==o?void 0:o.width,isClosable:null==o?void 0:o.isClosable}),r="".concat(t,"&mode=popup");return i.show({url:r}),new Promise((function(t){var n=void 0;i.on("hide",(function(){t({token:n})})),window.addEventListener("message",(function(t){var o=null;try{o=JSON.parse(t.data)}catch(e){}(null==o?void 0:o.event)===e.AuthsignalWindowMessage.AUTHSIGNAL_CLOSE_POPUP&&(n=o.token,i.close())}),!1)}))},t.prototype.launchWithWindow=function(t,n){var o=n.windowOptions,i=new S,r="".concat(t,"&mode=popup");return i.show({url:r,width:null==o?void 0:o.width,height:null==o?void 0:o.height}),new Promise((function(t){window.addEventListener("message",(function(n){var o=null;try{o=JSON.parse(n.data)}catch(e){}(null==o?void 0:o.event)===e.AuthsignalWindowMessage.AUTHSIGNAL_CLOSE_POPUP&&(i.close(),t({token:o.token}))}),!1)}))},t}();return e.Authsignal=te,Object.defineProperty(e,"__esModule",{value:!0}),e}({});
|
|
1
|
+
var authsignal=function(t){"use strict";let e;const n=new Uint8Array(16);function o(){if(!e&&(e="undefined"!=typeof crypto&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto),!e))throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");return e(n)}const i=[];for(let t=0;t<256;++t)i.push((t+256).toString(16).slice(1));var r={randomUUID:"undefined"!=typeof crypto&&crypto.randomUUID&&crypto.randomUUID.bind(crypto)};function a(t,e,n){if(r.randomUUID&&!e&&!t)return r.randomUUID();const a=(t=t||{}).random||(t.rng||o)();if(a[6]=15&a[6]|64,a[8]=63&a[8]|128,e){n=n||0;for(let t=0;t<16;++t)e[n+t]=a[t];return e}return function(t,e=0){return(i[t[e+0]]+i[t[e+1]]+i[t[e+2]]+i[t[e+3]]+"-"+i[t[e+4]]+i[t[e+5]]+"-"+i[t[e+6]]+i[t[e+7]]+"-"+i[t[e+8]]+i[t[e+9]]+"-"+i[t[e+10]]+i[t[e+11]]+i[t[e+12]]+i[t[e+13]]+i[t[e+14]]+i[t[e+15]]).toLowerCase()}(a)}function s(t){var e=t.name,n=t.value,o=t.expire,i=t.domain,r=t.secure,a=o===1/0?" expires=Fri, 31 Dec 9999 23:59:59 GMT":"; max-age="+o;document.cookie=encodeURIComponent(e)+"="+n+"; path=/;"+a+(i?"; domain="+i:"")+(r?"; secure":"")}function c(t){var e;console.error(null!==(e=t.errorDescription)&&void 0!==e?e:t.error)}function u(t,e,n,o){return new(n||(n=Promise))((function(i,r){function a(t){try{c(o.next(t))}catch(t){r(t)}}function s(t){try{c(o.throw(t))}catch(t){r(t)}}function c(t){var e;t.done?i(t.value):(e=t.value,e instanceof n?e:new n((function(t){t(e)}))).then(a,s)}c((o=o.apply(t,e||[])).next())}))}function l(t,e){var n,o,i,r,a={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]};return r={next:s(0),throw:s(1),return:s(2)},"function"==typeof Symbol&&(r[Symbol.iterator]=function(){return this}),r;function s(r){return function(s){return function(r){if(n)throw new TypeError("Generator is already executing.");for(;a;)try{if(n=1,o&&(i=2&r[0]?o.return:r[0]?o.throw||((i=o.return)&&i.call(o),0):o.next)&&!(i=i.call(o,r[1])).done)return i;switch(o=0,i&&(r=[2&r[0],i.value]),r[0]){case 0:case 1:i=r;break;case 4:return a.label++,{value:r[1],done:!1};case 5:a.label++,o=r[1],r=[0];continue;case 7:r=a.ops.pop(),a.trys.pop();continue;default:if(!(i=a.trys,(i=i.length>0&&i[i.length-1])||6!==r[0]&&2!==r[0])){a=0;continue}if(3===r[0]&&(!i||r[1]>i[0]&&r[1]<i[3])){a.label=r[1];break}if(6===r[0]&&a.label<i[1]){a.label=i[1],i=r;break}if(i&&a.label<i[2]){a.label=i[2],a.ops.push(r);break}i[2]&&a.ops.pop(),a.trys.pop();continue}r=e.call(t,a)}catch(t){r=[6,t],o=0}finally{n=i=0}if(5&r[0])throw r[1];return{value:r[0]?r[1]:void 0,done:!0}}([r,s])}}}function h(t){const e=new Uint8Array(t);let n="";for(const t of e)n+=String.fromCharCode(t);return btoa(n).replace(/\+/g,"-").replace(/\//g,"_").replace(/=/g,"")}function d(t){const e=t.replace(/-/g,"+").replace(/_/g,"/"),n=(4-e.length%4)%4,o=e.padEnd(e.length+n,"="),i=atob(o),r=new ArrayBuffer(i.length),a=new Uint8Array(r);for(let t=0;t<i.length;t++)a[t]=i.charCodeAt(t);return r}function p(){return void 0!==window?.PublicKeyCredential&&"function"==typeof window.PublicKeyCredential}function f(t){const{id:e}=t;return{...t,id:d(e),transports:t.transports}}function m(t){return"localhost"===t||/^([a-z0-9]+(-[a-z0-9]+)*\.)+[a-z]{2,}$/i.test(t)}t.AuthsignalWindowMessage=void 0,(t.AuthsignalWindowMessage||(t.AuthsignalWindowMessage={})).AUTHSIGNAL_CLOSE_POPUP="AUTHSIGNAL_CLOSE_POPUP";class v extends Error{constructor({message:t,code:e,cause:n,name:o}){super(t,{cause:n}),this.name=o??n.name,this.code=e}}const y=new class{createNewAbortSignal(){if(this.controller){const t=new Error("Cancelling existing WebAuthn API call for new one");t.name="AbortError",this.controller.abort(t)}const t=new AbortController;return this.controller=t,t.signal}cancelCeremony(){if(this.controller){const t=new Error("Manually cancelling existing WebAuthn API call");t.name="AbortError",this.controller.abort(t),this.controller=void 0}}},w=["cross-platform","platform"];function g(t){if(t&&!(w.indexOf(t)<0))return t}async function b(t){if(!p())throw new Error("WebAuthn is not supported in this browser");var e;const n={publicKey:{...t,challenge:d(t.challenge),user:{...t.user,id:(e=t.user.id,(new TextEncoder).encode(e))},excludeCredentials:t.excludeCredentials?.map(f)}};let o;n.signal=y.createNewAbortSignal();try{o=await navigator.credentials.create(n)}catch(t){throw function({error:t,options:e}){const{publicKey:n}=e;if(!n)throw Error("options was missing required publicKey property");if("AbortError"===t.name){if(e.signal instanceof AbortSignal)return new v({message:"Registration ceremony was sent an abort signal",code:"ERROR_CEREMONY_ABORTED",cause:t})}else if("ConstraintError"===t.name){if(!0===n.authenticatorSelection?.requireResidentKey)return new v({message:"Discoverable credentials were required but no available authenticator supported it",code:"ERROR_AUTHENTICATOR_MISSING_DISCOVERABLE_CREDENTIAL_SUPPORT",cause:t});if("required"===n.authenticatorSelection?.userVerification)return new v({message:"User verification was required but no available authenticator supported it",code:"ERROR_AUTHENTICATOR_MISSING_USER_VERIFICATION_SUPPORT",cause:t})}else{if("InvalidStateError"===t.name)return new v({message:"The authenticator was previously registered",code:"ERROR_AUTHENTICATOR_PREVIOUSLY_REGISTERED",cause:t});if("NotAllowedError"===t.name)return new v({message:t.message,code:"ERROR_PASSTHROUGH_SEE_CAUSE_PROPERTY",cause:t});if("NotSupportedError"===t.name)return 0===n.pubKeyCredParams.filter((t=>"public-key"===t.type)).length?new v({message:'No entry in pubKeyCredParams was of type "public-key"',code:"ERROR_MALFORMED_PUBKEYCREDPARAMS",cause:t}):new v({message:"No available authenticator supported any of the specified pubKeyCredParams algorithms",code:"ERROR_AUTHENTICATOR_NO_SUPPORTED_PUBKEYCREDPARAMS_ALG",cause:t});if("SecurityError"===t.name){const e=window.location.hostname;if(!m(e))return new v({message:`${window.location.hostname} is an invalid domain`,code:"ERROR_INVALID_DOMAIN",cause:t});if(n.rp.id!==e)return new v({message:`The RP ID "${n.rp.id}" is invalid for this domain`,code:"ERROR_INVALID_RP_ID",cause:t})}else if("TypeError"===t.name){if(n.user.id.byteLength<1||n.user.id.byteLength>64)return new v({message:"User ID was not between 1 and 64 characters",code:"ERROR_INVALID_USER_ID_LENGTH",cause:t})}else if("UnknownError"===t.name)return new v({message:"The authenticator was unable to process the specified options, or could not create a new credential",code:"ERROR_AUTHENTICATOR_GENERAL_ERROR",cause:t})}return t}({error:t,options:n})}if(!o)throw new Error("Registration was not completed");const{id:i,rawId:r,response:a,type:s}=o;let c,u,l,w;if("function"==typeof a.getTransports&&(c=a.getTransports()),"function"==typeof a.getPublicKeyAlgorithm)try{u=a.getPublicKeyAlgorithm()}catch(t){E("getPublicKeyAlgorithm()",t)}if("function"==typeof a.getPublicKey)try{const t=a.getPublicKey();null!==t&&(l=h(t))}catch(t){E("getPublicKey()",t)}if("function"==typeof a.getAuthenticatorData)try{w=h(a.getAuthenticatorData())}catch(t){E("getAuthenticatorData()",t)}return{id:i,rawId:h(r),response:{attestationObject:h(a.attestationObject),clientDataJSON:h(a.clientDataJSON),transports:c,publicKeyAlgorithm:u,publicKey:l,authenticatorData:w},type:s,clientExtensionResults:o.getClientExtensionResults(),authenticatorAttachment:g(o.authenticatorAttachment)}}function E(t,e){console.warn(`The browser extension that intercepted this WebAuthn API call incorrectly implemented ${t}. You should report this error to them.\n`,e)}async function A(t,e=!1){if(!p())throw new Error("WebAuthn is not supported in this browser");let n;0!==t.allowCredentials?.length&&(n=t.allowCredentials?.map(f));const o={...t,challenge:d(t.challenge),allowCredentials:n},i={};if(e){if(!await function(){const t=window.PublicKeyCredential;return void 0===t.isConditionalMediationAvailable?new Promise((t=>t(!1))):t.isConditionalMediationAvailable()}())throw Error("Browser does not support WebAuthn autofill");if(document.querySelectorAll("input[autocomplete$='webauthn']").length<1)throw Error('No <input> with "webauthn" as the only or last value in its `autocomplete` attribute was detected');i.mediation="conditional",o.allowCredentials=[]}let r;i.publicKey=o,i.signal=y.createNewAbortSignal();try{r=await navigator.credentials.get(i)}catch(t){throw function({error:t,options:e}){const{publicKey:n}=e;if(!n)throw Error("options was missing required publicKey property");if("AbortError"===t.name){if(e.signal instanceof AbortSignal)return new v({message:"Authentication ceremony was sent an abort signal",code:"ERROR_CEREMONY_ABORTED",cause:t})}else{if("NotAllowedError"===t.name)return new v({message:t.message,code:"ERROR_PASSTHROUGH_SEE_CAUSE_PROPERTY",cause:t});if("SecurityError"===t.name){const e=window.location.hostname;if(!m(e))return new v({message:`${window.location.hostname} is an invalid domain`,code:"ERROR_INVALID_DOMAIN",cause:t});if(n.rpId!==e)return new v({message:`The RP ID "${n.rpId}" is invalid for this domain`,code:"ERROR_INVALID_RP_ID",cause:t})}else if("UnknownError"===t.name)return new v({message:"The authenticator was unable to process the specified options, or could not create a new assertion signature",code:"ERROR_AUTHENTICATOR_GENERAL_ERROR",cause:t})}return t}({error:t,options:i})}if(!r)throw new Error("Authentication was not completed");const{id:a,rawId:s,response:c,type:u}=r;let l;var w;return c.userHandle&&(w=c.userHandle,l=new TextDecoder("utf-8").decode(w)),{id:a,rawId:h(s),response:{authenticatorData:h(c.authenticatorData),clientDataJSON:h(c.clientDataJSON),signature:h(c.signature),userHandle:l},type:u,clientExtensionResults:r.getClientExtensionResults(),authenticatorAttachment:g(r.authenticatorAttachment)}}function I(t){var e=t.token,n=t.tenantId;return{"Content-Type":"application/json",Authorization:e?"Bearer ".concat(e):"Basic ".concat(window.btoa(encodeURIComponent(n))),"X-Authsignal-Browser-Version":"0.5.4"}}var k=function(){function t(t){var e=t.baseUrl,n=t.tenantId;this.tenantId=n,this.baseUrl=e}return t.prototype.registrationOptions=function(t){var e=t.token,n=t.username,o=t.authenticatorAttachment;return u(this,void 0,void 0,(function(){var t;return l(this,(function(i){switch(i.label){case 0:return t=Boolean(o)?{username:n,authenticatorAttachment:o}:{username:n},[4,fetch("".concat(this.baseUrl,"/client/user-authenticators/passkey/registration-options"),{method:"POST",headers:I({token:e,tenantId:this.tenantId}),body:JSON.stringify(t)})];case 1:return[2,i.sent().json()]}}))}))},t.prototype.authenticationOptions=function(t){var e=t.token,n=t.challengeId;return u(this,void 0,void 0,(function(){var t;return l(this,(function(o){switch(o.label){case 0:return t={challengeId:n},[4,fetch("".concat(this.baseUrl,"/client/user-authenticators/passkey/authentication-options"),{method:"POST",headers:I({token:e,tenantId:this.tenantId}),body:JSON.stringify(t)})];case 1:return[2,o.sent().json()]}}))}))},t.prototype.addAuthenticator=function(t){var e=t.token,n=t.challengeId,o=t.registrationCredential;return u(this,void 0,void 0,(function(){var t;return l(this,(function(i){switch(i.label){case 0:return t={challengeId:n,registrationCredential:o},[4,fetch("".concat(this.baseUrl,"/client/user-authenticators/passkey"),{method:"POST",headers:I({token:e,tenantId:this.tenantId}),body:JSON.stringify(t)})];case 1:return[2,i.sent().json()]}}))}))},t.prototype.verify=function(t){var e=t.token,n=t.challengeId,o=t.authenticationCredential,i=t.deviceId;return u(this,void 0,void 0,(function(){var t;return l(this,(function(r){switch(r.label){case 0:return t={challengeId:n,authenticationCredential:o,deviceId:i},[4,fetch("".concat(this.baseUrl,"/client/verify/passkey"),{method:"POST",headers:I({token:e,tenantId:this.tenantId}),body:JSON.stringify(t)})];case 1:return[2,r.sent().json()]}}))}))},t.prototype.getPasskeyAuthenticator=function(t){return u(this,void 0,void 0,(function(){var e;return l(this,(function(n){switch(n.label){case 0:return[4,fetch("".concat(this.baseUrl,"/client/user-authenticators/passkey?credentialId=").concat(t),{method:"GET",headers:I({tenantId:this.tenantId})})];case 1:if(!(e=n.sent()).ok)throw new Error(e.statusText);return[2,e.json()]}}))}))},t.prototype.challenge=function(t){return u(this,void 0,void 0,(function(){return l(this,(function(e){switch(e.label){case 0:return[4,fetch("".concat(this.baseUrl,"/client/challenge"),{method:"POST",headers:I({tenantId:this.tenantId}),body:JSON.stringify({action:t})})];case 1:return[2,e.sent().json()]}}))}))},t}(),R=function(){function t(){this.token=null}return t.prototype.handleTokenNotSetError=function(){var t="A token has not been set. Call 'setToken' first.";return console.error("Error: ".concat(t)),{error:"TOKEN_NOT_SET",errorDescription:t}},t.shared=new t,t}(),S=function(){function t(t){var e=t.baseUrl,n=t.tenantId,o=t.anonymousId;this.passkeyLocalStorageKey="as_passkey_credential_id",this.cache=R.shared,this.api=new k({baseUrl:e,tenantId:n}),this.anonymousId=o}return t.prototype.signUp=function(t){var e=t.userName,n=t.userDisplayName,o=t.token,i=t.authenticatorAttachment,r=void 0===i?"platform":i;return u(this,void 0,void 0,(function(){var t,i,a,s,u;return l(this,(function(l){switch(l.label){case 0:return(t=null!=o?o:this.cache.token)?(i={username:e,displayName:n,token:t,authenticatorAttachment:r},[4,this.api.registrationOptions(i)]):[2,this.cache.handleTokenNotSetError()];case 1:return"error"in(a=l.sent())?(c(a),[2]):[4,b(a.options)];case 2:return s=l.sent(),[4,this.api.addAuthenticator({challengeId:a.challengeId,registrationCredential:s,token:t})];case 3:return"error"in(u=l.sent())?(c(u),[2]):(u.isVerified&&this.storeCredentialAgainstDevice(s),[2,{token:u.accessToken}])}}))}))},t.prototype.signIn=function(t){return u(this,void 0,void 0,(function(){var e,n,o,i,r,a,s,u,h,d;return l(this,(function(l){switch(l.label){case 0:if((null==t?void 0:t.token)&&t.autofill)throw new Error("autofill is not supported when providing a token");if((null==t?void 0:t.action)&&t.token)throw new Error("action is not supported when providing a token");return(null==t?void 0:t.action)?[4,this.api.challenge(t.action)]:[3,2];case 1:return n=l.sent(),[3,3];case 2:n=null,l.label=3;case 3:return(e=n)&&"error"in e?(c(e),[2]):[4,this.api.authenticationOptions({token:null==t?void 0:t.token,challengeId:null==e?void 0:e.challengeId})];case 4:return"error"in(o=l.sent())?(c(o),[2]):[4,A(o.options,null==t?void 0:t.autofill)];case 5:return i=l.sent(),(null==t?void 0:t.onVerificationStarted)&&t.onVerificationStarted(),[4,this.api.verify({challengeId:o.challengeId,authenticationCredential:i,token:null==t?void 0:t.token,deviceId:this.anonymousId})];case 6:return"error"in(r=l.sent())?(c(r),[2]):(r.isVerified&&this.storeCredentialAgainstDevice(i),a=r.accessToken,s=r.userId,u=r.userAuthenticatorId,h=r.username,d=r.userDisplayName,[2,{token:a,userId:s,userAuthenticatorId:u,userName:h,userDisplayName:d}])}}))}))},t.prototype.isAvailableOnDevice=function(){return u(this,void 0,void 0,(function(){var t;return l(this,(function(e){switch(e.label){case 0:if(!(t=localStorage.getItem(this.passkeyLocalStorageKey)))return[2,!1];e.label=1;case 1:return e.trys.push([1,3,,4]),[4,this.api.getPasskeyAuthenticator(t)];case 2:return e.sent(),[2,!0];case 3:return e.sent(),[2,!1];case 4:return[2]}}))}))},t.prototype.storeCredentialAgainstDevice=function(t){var e=t.id;"cross-platform"!==t.authenticatorAttachment&&localStorage.setItem(this.passkeyLocalStorageKey,e)},t}(),_=function(){function t(){this.windowRef=null}return t.prototype.show=function(t){var e=t.url,n=t.width,o=void 0===n?400:n,i=t.height,r=function(t){var e=t.url,n=t.width,o=t.height,i=t.win;if(!i.top)return null;var r=i.top.outerHeight/2+i.top.screenY-o/2,a=i.top.outerWidth/2+i.top.screenX-n/2;return window.open(e,"","toolbar=no, location=no, directories=no, status=no, menubar=no, scrollbars=no, resizable=no, copyhistory=no, width=".concat(n,", height=").concat(o,", top=").concat(r,", left=").concat(a))}({url:e,width:o,height:void 0===i?500:i,win:window});if(!r)throw new Error("Window is not initialized");return this.windowRef=r,r},t.prototype.close=function(){if(!this.windowRef)throw new Error("Window is not initialized");this.windowRef.close()},t}();const O=":not([inert]):not([inert] *)",C=':not([tabindex^="-"])',T=":not(:disabled)";var U=[`a[href]${O}${C}`,`area[href]${O}${C}`,`input:not([type="hidden"]):not([type="radio"])${O}${C}${T}`,`input[type="radio"]${O}${C}${T}`,`select${O}${C}${T}`,`textarea${O}${C}${T}`,`button${O}${C}${T}`,`details${O} > summary:first-of-type${C}`,`iframe${O}${C}`,`audio[controls]${O}${C}`,`video[controls]${O}${C}`,`[contenteditable]${O}${C}`,`[tabindex]${O}${C}`];function N(t){(t.querySelector("[autofocus]")||t).focus()}function P(t,e){if(e&&x(t))return t;if(!((n=t).shadowRoot&&"-1"===n.getAttribute("tabindex")||n.matches(":disabled,[hidden],[inert]")))if(t.shadowRoot){let n=$(t.shadowRoot,e);for(;n;){const t=P(n,e);if(t)return t;n=D(n,e)}}else if("slot"===t.localName){const n=t.assignedElements({flatten:!0});e||n.reverse();for(const t of n){const n=P(t,e);if(n)return n}}else{let n=$(t,e);for(;n;){const t=P(n,e);if(t)return t;n=D(n,e)}}var n;return!e&&x(t)?t:null}function $(t,e){return e?t.firstElementChild:t.lastElementChild}function D(t,e){return e?t.nextElementSibling:t.previousElementSibling}const x=t=>!t.shadowRoot?.delegatesFocus&&(t.matches(U.join(","))&&!(t=>!(!t.matches("details:not([open]) *")||t.matches("details>summary:first-of-type"))||!(t.offsetWidth||t.offsetHeight||t.getClientRects().length))(t));function L(t=document){const e=t.activeElement;return e?e.shadowRoot?L(e.shadowRoot)||document.activeElement:e:null}function K(t,e){const[n,o]=function(t){const e=P(t,!0);return[e,e?P(t,!1)||e:null]}(t);if(!n)return e.preventDefault();const i=L();e.shiftKey&&i===n?(o.focus(),e.preventDefault()):e.shiftKey||i!==o||(n.focus(),e.preventDefault())}class j{$el;id;previouslyFocused;shown;constructor(t){this.$el=t,this.id=this.$el.getAttribute("data-a11y-dialog")||this.$el.id,this.previouslyFocused=null,this.shown=!1,this.maintainFocus=this.maintainFocus.bind(this),this.bindKeypress=this.bindKeypress.bind(this),this.handleTriggerClicks=this.handleTriggerClicks.bind(this),this.show=this.show.bind(this),this.hide=this.hide.bind(this),this.$el.setAttribute("aria-hidden","true"),this.$el.setAttribute("aria-modal","true"),this.$el.setAttribute("tabindex","-1"),this.$el.hasAttribute("role")||this.$el.setAttribute("role","dialog"),document.addEventListener("click",this.handleTriggerClicks,!0)}destroy(){return this.hide(),document.removeEventListener("click",this.handleTriggerClicks,!0),this.$el.replaceWith(this.$el.cloneNode(!0)),this.fire("destroy"),this}show(t){return this.shown||(this.shown=!0,this.$el.removeAttribute("aria-hidden"),this.previouslyFocused=L(),"BODY"===this.previouslyFocused?.tagName&&t?.target&&(this.previouslyFocused=t.target),"focus"===t?.type?this.maintainFocus(t):N(this.$el),document.body.addEventListener("focus",this.maintainFocus,!0),this.$el.addEventListener("keydown",this.bindKeypress,!0),this.fire("show",t)),this}hide(t){return this.shown?(this.shown=!1,this.$el.setAttribute("aria-hidden","true"),this.previouslyFocused?.focus?.(),document.body.removeEventListener("focus",this.maintainFocus,!0),this.$el.removeEventListener("keydown",this.bindKeypress,!0),this.fire("hide",t),this):this}on(t,e,n){return this.$el.addEventListener(t,e,n),this}off(t,e,n){return this.$el.removeEventListener(t,e,n),this}fire(t,e){this.$el.dispatchEvent(new CustomEvent(t,{detail:e,cancelable:!0}))}handleTriggerClicks(t){const e=t.target;e.closest(`[data-a11y-dialog-show="${this.id}"]`)&&this.show(t),(e.closest(`[data-a11y-dialog-hide="${this.id}"]`)||e.closest("[data-a11y-dialog-hide]")&&e.closest('[aria-modal="true"]')===this.$el)&&this.hide(t)}bindKeypress(t){if(document.activeElement?.closest('[aria-modal="true"]')!==this.$el)return;let e=!1;try{e=!!this.$el.querySelector('[popover]:not([popover="manual"]):popover-open')}catch{}"Escape"!==t.key||"alertdialog"===this.$el.getAttribute("role")||e||(t.preventDefault(),this.hide(t)),"Tab"===t.key&&K(this.$el,t)}maintainFocus(t){t.target.closest('[aria-modal="true"], [data-a11y-dialog-ignore-focus-trap]')||N(this.$el)}}function H(){for(const t of document.querySelectorAll("[data-a11y-dialog]"))new j(t)}"undefined"!=typeof document&&("loading"===document.readyState?document.addEventListener("DOMContentLoaded",H):H());var W="__authsignal-popup-container",M="__authsignal-popup-content",q="__authsignal-popup-overlay",V="__authsignal-popup-style",F="__authsignal-popup-iframe",G="385px",J=function(){function t(t){var e=t.width,n=t.isClosable;if(this.popup=null,document.querySelector("#".concat(W)))throw new Error("Multiple instances of Authsignal popup is not supported.");this.create({width:e,isClosable:n})}return t.prototype.create=function(t){var e=this,n=t.width,o=void 0===n?G:n,i=t.isClosable,r=void 0===i||i,a=o;CSS.supports("width",o)||(console.warn("Invalid CSS value for `popupOptions.width`. Using default value instead."),a=G);var s=document.createElement("div");s.setAttribute("id",W),s.setAttribute("aria-hidden","true"),r||s.setAttribute("role","alertdialog");var c=document.createElement("div");c.setAttribute("id",q),r&&c.setAttribute("data-a11y-dialog-hide","true");var u=document.createElement("div");u.setAttribute("id",M),document.body.appendChild(s);var l=document.createElement("style");l.setAttribute("id",V),l.textContent="\n #".concat(W,",\n #").concat(q," {\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n }\n\n #").concat(W," {\n z-index: 2147483647;\n display: flex;\n }\n\n #").concat(W,"[aria-hidden='true'] {\n display: none;\n }\n\n #").concat(q," {\n background-color: rgba(0, 0, 0, 0.18);\n }\n\n #").concat(M," {\n margin: auto;\n z-index: 2147483647;\n position: relative;\n background-color: transparent;\n border-radius: 8px;\n width: ").concat(a,";\n }\n\n #").concat(M," iframe {\n width: 1px;\n min-width: 100%;\n border-radius: inherit;\n max-height: 95vh;\n height: ").concat("384px",";\n }\n "),document.head.insertAdjacentElement("beforeend",l),s.appendChild(c),s.appendChild(u),this.popup=new j(s),s.focus(),this.popup.on("hide",(function(){e.destroy()}))},t.prototype.destroy=function(){var t=document.querySelector("#".concat(W)),e=document.querySelector("#".concat(V));t&&e&&(document.body.removeChild(t),document.head.removeChild(e)),window.removeEventListener("message",B)},t.prototype.show=function(t){var e,n=t.url;if(!this.popup)throw new Error("Popup is not initialized");var o=document.createElement("iframe");o.setAttribute("id",F),o.setAttribute("name","authsignal"),o.setAttribute("title","Authsignal multi-factor authentication"),o.setAttribute("src",n),o.setAttribute("frameborder","0"),o.setAttribute("allow","publickey-credentials-get *; publickey-credentials-create *; clipboard-write");var i=document.querySelector("#".concat(M));i&&i.appendChild(o),window.addEventListener("message",B),null===(e=this.popup)||void 0===e||e.show()},t.prototype.close=function(){if(!this.popup)throw new Error("Popup is not initialized");this.popup.hide()},t.prototype.on=function(t,e){if(!this.popup)throw new Error("Popup is not initialized");this.popup.on(t,e)},t}();function B(t){var e=document.querySelector("#".concat(F));e&&t.data.height&&(e.style.height=t.data.height+"px")}var z=function(){function t(t){var e=t.baseUrl,n=t.tenantId;this.tenantId=n,this.baseUrl=e}return t.prototype.enroll=function(t){var e=t.token;return u(this,void 0,void 0,(function(){return l(this,(function(t){switch(t.label){case 0:return[4,fetch("".concat(this.baseUrl,"/client/user-authenticators/totp"),{method:"POST",headers:I({token:e,tenantId:this.tenantId})})];case 1:return[2,t.sent().json()]}}))}))},t.prototype.verify=function(t){var e=t.token,n=t.code;return u(this,void 0,void 0,(function(){var t;return l(this,(function(o){switch(o.label){case 0:return t={code:n},[4,fetch("".concat(this.baseUrl,"/client/verify/totp"),{method:"POST",headers:I({token:e,tenantId:this.tenantId}),body:JSON.stringify(t)})];case 1:return[2,o.sent().json()]}}))}))},t}(),Y=function(){function t(t){var e=t.baseUrl,n=t.tenantId;this.cache=R.shared,this.api=new z({baseUrl:e,tenantId:n})}return t.prototype.enroll=function(){return u(this,void 0,void 0,(function(){return l(this,(function(t){return this.cache.token?[2,this.api.enroll({token:this.cache.token})]:[2,this.cache.handleTokenNotSetError()]}))}))},t.prototype.verify=function(t){var e=t.code;return u(this,void 0,void 0,(function(){var t;return l(this,(function(n){switch(n.label){case 0:return this.cache.token?[4,this.api.verify({token:this.cache.token,code:e})]:[2,this.cache.handleTokenNotSetError()];case 1:return(t=n.sent()).token&&(this.cache.token=t.token),[2,t]}}))}))},t}(),X=function(){function t(t){var e=t.baseUrl,n=t.tenantId;this.tenantId=n,this.baseUrl=e}return t.prototype.enroll=function(t){var e=t.token,n=t.email;return u(this,void 0,void 0,(function(){var t;return l(this,(function(o){switch(o.label){case 0:return t={email:n},[4,fetch("".concat(this.baseUrl,"/client/user-authenticators/email-otp"),{method:"POST",headers:this.buildHeaders(e),body:JSON.stringify(t)})];case 1:return[2,o.sent().json()]}}))}))},t.prototype.challenge=function(t){var e=t.token;return u(this,void 0,void 0,(function(){return l(this,(function(t){switch(t.label){case 0:return[4,fetch("".concat(this.baseUrl,"/client/challenge/email-otp"),{method:"POST",headers:this.buildHeaders(e)})];case 1:return[2,t.sent().json()]}}))}))},t.prototype.verify=function(t){var e=t.token,n=t.code;return u(this,void 0,void 0,(function(){var t;return l(this,(function(o){switch(o.label){case 0:return t={code:n},[4,fetch("".concat(this.baseUrl,"/client/verify/email-otp"),{method:"POST",headers:this.buildHeaders(e),body:JSON.stringify(t)})];case 1:return[2,o.sent().json()]}}))}))},t.prototype.buildHeaders=function(t){return{"Content-Type":"application/json",Authorization:t?"Bearer ".concat(t):"Basic ".concat(window.btoa(encodeURIComponent(this.tenantId)))}},t}(),Q=function(){function t(t){var e=t.baseUrl,n=t.tenantId;this.cache=R.shared,this.api=new X({baseUrl:e,tenantId:n})}return t.prototype.enroll=function(t){var e=t.email;return u(this,void 0,void 0,(function(){return l(this,(function(t){return this.cache.token?[2,this.api.enroll({token:this.cache.token,email:e})]:[2,this.cache.handleTokenNotSetError()]}))}))},t.prototype.challenge=function(){return u(this,void 0,void 0,(function(){return l(this,(function(t){return this.cache.token?[2,this.api.challenge({token:this.cache.token})]:[2,this.cache.handleTokenNotSetError()]}))}))},t.prototype.verify=function(t){var e=t.code;return u(this,void 0,void 0,(function(){var t;return l(this,(function(n){switch(n.label){case 0:return this.cache.token?[4,this.api.verify({token:this.cache.token,code:e})]:[2,this.cache.handleTokenNotSetError()];case 1:return(t=n.sent()).token&&(this.cache.token=t.token),[2,t]}}))}))},t}(),Z=function(){function t(t){var e=t.baseUrl,n=t.tenantId;this.tenantId=n,this.baseUrl=e}return t.prototype.enroll=function(t){var e=t.token,n=t.phoneNumber;return u(this,void 0,void 0,(function(){var t;return l(this,(function(o){switch(o.label){case 0:return t={phoneNumber:n},[4,fetch("".concat(this.baseUrl,"/client/user-authenticators/sms"),{method:"POST",headers:I({token:e,tenantId:this.tenantId}),body:JSON.stringify(t)})];case 1:return[2,o.sent().json()]}}))}))},t.prototype.challenge=function(t){var e=t.token;return u(this,void 0,void 0,(function(){return l(this,(function(t){switch(t.label){case 0:return[4,fetch("".concat(this.baseUrl,"/client/challenge/sms"),{method:"POST",headers:I({token:e,tenantId:this.tenantId})})];case 1:return[2,t.sent().json()]}}))}))},t.prototype.verify=function(t){var e=t.token,n=t.code;return u(this,void 0,void 0,(function(){var t;return l(this,(function(o){switch(o.label){case 0:return t={code:n},[4,fetch("".concat(this.baseUrl,"/client/verify/sms"),{method:"POST",headers:I({token:e,tenantId:this.tenantId}),body:JSON.stringify(t)})];case 1:return[2,o.sent().json()]}}))}))},t}(),tt=function(){function t(t){var e=t.baseUrl,n=t.tenantId;this.cache=R.shared,this.api=new Z({baseUrl:e,tenantId:n})}return t.prototype.enroll=function(t){var e=t.phoneNumber;return u(this,void 0,void 0,(function(){return l(this,(function(t){return this.cache.token?[2,this.api.enroll({token:this.cache.token,phoneNumber:e})]:[2,this.cache.handleTokenNotSetError()]}))}))},t.prototype.challenge=function(){return u(this,void 0,void 0,(function(){return l(this,(function(t){return this.cache.token?[2,this.api.challenge({token:this.cache.token})]:[2,this.cache.handleTokenNotSetError()]}))}))},t.prototype.verify=function(t){var e=t.code;return u(this,void 0,void 0,(function(){var t;return l(this,(function(n){switch(n.label){case 0:return this.cache.token?[4,this.api.verify({token:this.cache.token,code:e})]:[2,this.cache.handleTokenNotSetError()];case 1:return(t=n.sent()).token&&(this.cache.token=t.token),[2,t]}}))}))},t}(),et="4a08uqve",nt=function(){function e(t){var e=t.cookieDomain,n=t.cookieName,o=void 0===n?"__as_aid":n,i=t.baseUrl,r=void 0===i?"https://api.authsignal.com/v1":i,c=t.tenantId;if(this.anonymousId="",this.profilingId="",this.cookieDomain="",this.anonymousIdCookieName="",this.cookieDomain=e||document.location.hostname.replace("www.",""),this.anonymousIdCookieName=o,!c)throw new Error("tenantId is required");var u,l=(u=this.anonymousIdCookieName)&&decodeURIComponent(document.cookie.replace(new RegExp("(?:(?:^|.*;)\\s*"+encodeURIComponent(u).replace(/[\-\.\+\*]/g,"\\$&")+"\\s*\\=\\s*([^;]*).*$)|^.*$"),"$1"))||null;l?this.anonymousId=l:(this.anonymousId=a(),s({name:this.anonymousIdCookieName,value:this.anonymousId,expire:1/0,domain:this.cookieDomain,secure:"http:"!==document.location.protocol})),this.passkey=new S({tenantId:c,baseUrl:r,anonymousId:this.anonymousId}),this.totp=new Y({tenantId:c,baseUrl:r}),this.email=new Q({tenantId:c,baseUrl:r}),this.sms=new tt({tenantId:c,baseUrl:r})}return e.prototype.setToken=function(t){R.shared.token=t},e.prototype.launch=function(t,e){switch(null==e?void 0:e.mode){case"window":return this.launchWithWindow(t,e);case"popup":return this.launchWithPopup(t,e);default:this.launchWithRedirect(t)}},e.prototype.initAdvancedProfiling=function(t){var e=a();this.profilingId=e,s({name:"__as_pid",value:e,expire:1/0,domain:this.cookieDomain,secure:"http:"!==document.location.protocol});var n=t?"".concat(t,"/fp/tags.js?org_id=").concat(et,"&session_id=").concat(e):"https://h.online-metrix.net/fp/tags.js?org_id=".concat(et,"&session_id=").concat(e),o=document.createElement("script");o.src=n,o.async=!1,o.id="as_adv_profile",document.head.appendChild(o);var i=document.createElement("noscript");i.setAttribute("id","as_adv_profile_pixel"),i.setAttribute("aria-hidden","true");var r=document.createElement("iframe"),c=t?"".concat(t,"/fp/tags?org_id=").concat(et,"&session_id=").concat(e):"https://h.online-metrix.net/fp/tags?org_id=".concat(et,"&session_id=").concat(e);r.setAttribute("id","as_adv_profile_pixel"),r.setAttribute("src",c),r.setAttribute("style","width: 100px; height: 100px; border: 0; position: absolute; top: -5000px;"),i&&(i.appendChild(r),document.body.prepend(i))},e.prototype.launchWithRedirect=function(t){window.location.href=t},e.prototype.launchWithPopup=function(e,n){var o=n.popupOptions,i=new J({width:null==o?void 0:o.width,isClosable:null==o?void 0:o.isClosable}),r="".concat(e,"&mode=popup");return i.show({url:r}),new Promise((function(e){var n=void 0;i.on("hide",(function(){e({token:n})})),window.addEventListener("message",(function(e){var o=null;try{o=JSON.parse(e.data)}catch(t){}(null==o?void 0:o.event)===t.AuthsignalWindowMessage.AUTHSIGNAL_CLOSE_POPUP&&(n=o.token,i.close())}),!1)}))},e.prototype.launchWithWindow=function(e,n){var o=n.windowOptions,i=new _,r="".concat(e,"&mode=popup");return i.show({url:r,width:null==o?void 0:o.width,height:null==o?void 0:o.height}),new Promise((function(e){window.addEventListener("message",(function(n){var o=null;try{o=JSON.parse(n.data)}catch(t){}(null==o?void 0:o.event)===t.AuthsignalWindowMessage.AUTHSIGNAL_CLOSE_POPUP&&(i.close(),e({token:o.token}))}),!1)}))},e}();return t.Authsignal=nt,Object.defineProperty(t,"__esModule",{value:!0}),t}({});
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@authsignal/browser",
|
|
3
|
-
"version": "0.5.
|
|
3
|
+
"version": "0.5.4",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"module": "dist/index.js",
|
|
@@ -34,6 +34,7 @@
|
|
|
34
34
|
"uuid": "^9.0.0"
|
|
35
35
|
},
|
|
36
36
|
"devDependencies": {
|
|
37
|
+
"@rollup/plugin-json": "^6.1.0",
|
|
37
38
|
"@rollup/plugin-node-resolve": "^14.1.0",
|
|
38
39
|
"@rollup/plugin-terser": "^0.4.3",
|
|
39
40
|
"@rollup/plugin-typescript": "^8.5.0",
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import { ApiClientOptions, ChallengeResponse, EnrollResponse, VerifyResponse } from "./types/shared";
|
|
2
|
-
export declare class EmailApiClient {
|
|
3
|
-
tenantId: string;
|
|
4
|
-
baseUrl: string;
|
|
5
|
-
constructor({ baseUrl, tenantId }: ApiClientOptions);
|
|
6
|
-
enroll({ token, email }: {
|
|
7
|
-
token: string;
|
|
8
|
-
email: string;
|
|
9
|
-
}): Promise<EnrollResponse>;
|
|
10
|
-
challenge({ token }: {
|
|
11
|
-
token: string;
|
|
12
|
-
}): Promise<ChallengeResponse>;
|
|
13
|
-
verify({ token, code }: {
|
|
14
|
-
token: string;
|
|
15
|
-
code: string;
|
|
16
|
-
}): Promise<VerifyResponse>;
|
|
17
|
-
private buildHeaders;
|
|
18
|
-
}
|
package/dist/api/index.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from "./passkey-api-client";
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
import { AddAuthenticatorRequest, AddAuthenticatorResponse, AuthenticationOptsRequest, AuthenticationOptsResponse, PasskeyAuthenticatorResponse, RegistrationOptsRequest, RegistrationOptsResponse, VerifyRequest, VerifyResponse } from "./types/passkey";
|
|
2
|
-
import { ApiClientOptions, AuthsignalResponse, ChallengeResponse } from "./types/shared";
|
|
3
|
-
export declare class PasskeyApiClient {
|
|
4
|
-
tenantId: string;
|
|
5
|
-
baseUrl: string;
|
|
6
|
-
constructor({ baseUrl, tenantId }: ApiClientOptions);
|
|
7
|
-
registrationOptions({ token, username, authenticatorAttachment, }: {
|
|
8
|
-
token: string;
|
|
9
|
-
} & RegistrationOptsRequest): Promise<AuthsignalResponse<RegistrationOptsResponse>>;
|
|
10
|
-
authenticationOptions({ token, challengeId, }: {
|
|
11
|
-
token?: string;
|
|
12
|
-
} & AuthenticationOptsRequest): Promise<AuthsignalResponse<AuthenticationOptsResponse>>;
|
|
13
|
-
addAuthenticator({ token, challengeId, registrationCredential, }: {
|
|
14
|
-
token: string;
|
|
15
|
-
} & AddAuthenticatorRequest): Promise<AuthsignalResponse<AddAuthenticatorResponse>>;
|
|
16
|
-
verify({ token, challengeId, authenticationCredential, deviceId, }: {
|
|
17
|
-
token?: string;
|
|
18
|
-
} & VerifyRequest): Promise<AuthsignalResponse<VerifyResponse>>;
|
|
19
|
-
getPasskeyAuthenticator(credentialId: string): Promise<AuthsignalResponse<PasskeyAuthenticatorResponse>>;
|
|
20
|
-
challenge(action: string): Promise<AuthsignalResponse<ChallengeResponse>>;
|
|
21
|
-
private buildHeaders;
|
|
22
|
-
}
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import { ApiClientOptions, ChallengeResponse, EnrollResponse, VerifyResponse } from "./types/shared";
|
|
2
|
-
export declare class SmsApiClient {
|
|
3
|
-
tenantId: string;
|
|
4
|
-
baseUrl: string;
|
|
5
|
-
constructor({ baseUrl, tenantId }: ApiClientOptions);
|
|
6
|
-
enroll({ token, phoneNumber }: {
|
|
7
|
-
token: string;
|
|
8
|
-
phoneNumber: string;
|
|
9
|
-
}): Promise<EnrollResponse>;
|
|
10
|
-
challenge({ token }: {
|
|
11
|
-
token: string;
|
|
12
|
-
}): Promise<ChallengeResponse>;
|
|
13
|
-
verify({ token, code }: {
|
|
14
|
-
token: string;
|
|
15
|
-
code: string;
|
|
16
|
-
}): Promise<VerifyResponse>;
|
|
17
|
-
private buildHeaders;
|
|
18
|
-
}
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import { ApiClientOptions, VerifyResponse } from "./types/shared";
|
|
2
|
-
import { EnrollResponse } from "./types/totp";
|
|
3
|
-
export declare class TotpApiClient {
|
|
4
|
-
tenantId: string;
|
|
5
|
-
baseUrl: string;
|
|
6
|
-
constructor({ baseUrl, tenantId }: ApiClientOptions);
|
|
7
|
-
enroll({ token }: {
|
|
8
|
-
token: string;
|
|
9
|
-
}): Promise<EnrollResponse>;
|
|
10
|
-
verify({ token, code }: {
|
|
11
|
-
token: string;
|
|
12
|
-
code: string;
|
|
13
|
-
}): Promise<VerifyResponse>;
|
|
14
|
-
private buildHeaders;
|
|
15
|
-
}
|
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
import { AuthenticationResponseJSON, AuthenticatorAttachment, PublicKeyCredentialCreationOptionsJSON, RegistrationResponseJSON } from "@simplewebauthn/types";
|
|
2
|
-
export declare type RegistrationOptsRequest = {
|
|
3
|
-
username?: string;
|
|
4
|
-
authenticatorAttachment?: AuthenticatorAttachment | null;
|
|
5
|
-
};
|
|
6
|
-
export declare type RegistrationOptsResponse = {
|
|
7
|
-
challengeId: string;
|
|
8
|
-
options: PublicKeyCredentialCreationOptionsJSON;
|
|
9
|
-
};
|
|
10
|
-
export declare type AuthenticationOptsRequest = {
|
|
11
|
-
challengeId?: string;
|
|
12
|
-
};
|
|
13
|
-
export declare type AuthenticationOptsResponse = {
|
|
14
|
-
challengeId: string;
|
|
15
|
-
options: PublicKeyCredentialCreationOptionsJSON;
|
|
16
|
-
};
|
|
17
|
-
export declare type AddAuthenticatorRequest = {
|
|
18
|
-
challengeId: string;
|
|
19
|
-
registrationCredential: RegistrationResponseJSON;
|
|
20
|
-
};
|
|
21
|
-
export declare type AddAuthenticatorResponse = {
|
|
22
|
-
isVerified: boolean;
|
|
23
|
-
accessToken?: string;
|
|
24
|
-
userAuthenticatorId?: string;
|
|
25
|
-
};
|
|
26
|
-
export declare type VerifyRequest = {
|
|
27
|
-
challengeId: string;
|
|
28
|
-
authenticationCredential: AuthenticationResponseJSON;
|
|
29
|
-
deviceId?: string;
|
|
30
|
-
};
|
|
31
|
-
export declare type VerifyResponse = {
|
|
32
|
-
isVerified: boolean;
|
|
33
|
-
accessToken?: string;
|
|
34
|
-
userId?: string;
|
|
35
|
-
userAuthenticatorId?: string;
|
|
36
|
-
username?: string;
|
|
37
|
-
userDisplayName?: string;
|
|
38
|
-
};
|
|
39
|
-
export declare type PasskeyAuthenticatorResponse = {
|
|
40
|
-
credentialId: string;
|
|
41
|
-
verifiedAt: string;
|
|
42
|
-
};
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
export declare type ApiClientOptions = {
|
|
2
|
-
baseUrl: string;
|
|
3
|
-
tenantId: string;
|
|
4
|
-
};
|
|
5
|
-
export declare type EnrollResponse = {
|
|
6
|
-
userAuthenticatorId: string;
|
|
7
|
-
};
|
|
8
|
-
export declare type ChallengeResponse = {
|
|
9
|
-
challengeId: string;
|
|
10
|
-
};
|
|
11
|
-
export declare type VerifyResponse = {
|
|
12
|
-
isVerified: boolean;
|
|
13
|
-
token?: string;
|
|
14
|
-
failureReason?: string;
|
|
15
|
-
};
|
|
16
|
-
export declare type ErrorResponse = {
|
|
17
|
-
error: string;
|
|
18
|
-
errorDescription?: string;
|
|
19
|
-
};
|
|
20
|
-
export declare type AuthsignalResponse<T> = T | ErrorResponse;
|
package/dist/api/types/totp.d.ts
DELETED
package/dist/authsignal.d.ts
DELETED
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
import { AuthsignalOptions, LaunchOptions, TokenPayload } from "./types";
|
|
2
|
-
import { Passkey } from "./passkey";
|
|
3
|
-
import { Totp } from "./totp";
|
|
4
|
-
import { Email } from "./email";
|
|
5
|
-
import { Sms } from "./sms";
|
|
6
|
-
export declare class Authsignal {
|
|
7
|
-
anonymousId: string;
|
|
8
|
-
profilingId: string;
|
|
9
|
-
cookieDomain: string;
|
|
10
|
-
anonymousIdCookieName: string;
|
|
11
|
-
passkey: Passkey;
|
|
12
|
-
totp: Totp;
|
|
13
|
-
email: Email;
|
|
14
|
-
sms: Sms;
|
|
15
|
-
constructor({ cookieDomain, cookieName, baseUrl, tenantId, }: AuthsignalOptions);
|
|
16
|
-
setToken(token: string): void;
|
|
17
|
-
launch(url: string, options?: {
|
|
18
|
-
mode?: "redirect";
|
|
19
|
-
} & LaunchOptions): undefined;
|
|
20
|
-
launch(url: string, options?: {
|
|
21
|
-
mode: "popup";
|
|
22
|
-
} & LaunchOptions): Promise<TokenPayload>;
|
|
23
|
-
launch(url: string, options?: {
|
|
24
|
-
mode: "window";
|
|
25
|
-
} & LaunchOptions): Promise<TokenPayload>;
|
|
26
|
-
initAdvancedProfiling(baseUrl?: string): void;
|
|
27
|
-
private launchWithRedirect;
|
|
28
|
-
private launchWithPopup;
|
|
29
|
-
private launchWithWindow;
|
|
30
|
-
}
|
package/dist/email.d.ts
DELETED
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import { AuthsignalResponse, ChallengeResponse, EnrollResponse, VerifyResponse } from "./api/types/shared";
|
|
2
|
-
declare type EmailOptions = {
|
|
3
|
-
baseUrl: string;
|
|
4
|
-
tenantId: string;
|
|
5
|
-
};
|
|
6
|
-
declare type EnrollParams = {
|
|
7
|
-
email: string;
|
|
8
|
-
};
|
|
9
|
-
declare type VerifyParams = {
|
|
10
|
-
code: string;
|
|
11
|
-
};
|
|
12
|
-
export declare class Email {
|
|
13
|
-
private api;
|
|
14
|
-
private cache;
|
|
15
|
-
constructor({ baseUrl, tenantId }: EmailOptions);
|
|
16
|
-
enroll({ email }: EnrollParams): Promise<AuthsignalResponse<EnrollResponse>>;
|
|
17
|
-
challenge(): Promise<AuthsignalResponse<ChallengeResponse>>;
|
|
18
|
-
verify({ code }: VerifyParams): Promise<AuthsignalResponse<VerifyResponse>>;
|
|
19
|
-
}
|
|
20
|
-
export {};
|
package/dist/handlers/index.d.ts
DELETED
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import { A11yDialogEvent } from "a11y-dialog";
|
|
2
|
-
declare type PopupShowInput = {
|
|
3
|
-
url: string;
|
|
4
|
-
};
|
|
5
|
-
declare type PopupHandlerOptions = {
|
|
6
|
-
width?: string;
|
|
7
|
-
isClosable?: boolean;
|
|
8
|
-
};
|
|
9
|
-
export declare class PopupHandler {
|
|
10
|
-
private popup;
|
|
11
|
-
constructor({ width, isClosable }: PopupHandlerOptions);
|
|
12
|
-
create({ width, isClosable }: PopupHandlerOptions): void;
|
|
13
|
-
destroy(): void;
|
|
14
|
-
show({ url }: PopupShowInput): void;
|
|
15
|
-
close(): void;
|
|
16
|
-
on(event: A11yDialogEvent, listener: EventListener): void;
|
|
17
|
-
}
|
|
18
|
-
export {};
|
package/dist/helpers.d.ts
DELETED
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import { ErrorResponse } from "./api/types/shared";
|
|
2
|
-
declare type CookieOptions = {
|
|
3
|
-
name: string;
|
|
4
|
-
value: string;
|
|
5
|
-
expire: number;
|
|
6
|
-
domain: string;
|
|
7
|
-
secure: boolean;
|
|
8
|
-
};
|
|
9
|
-
export declare function setCookie({ name, value, expire, domain, secure }: CookieOptions): void;
|
|
10
|
-
export declare function getCookieDomain(): string;
|
|
11
|
-
export declare function getCookie(name: string): string | null;
|
|
12
|
-
export declare function logErrorResponse(errorResponse: ErrorResponse): void;
|
|
13
|
-
export {};
|
package/dist/index.d.ts
DELETED
package/dist/passkey.d.ts
DELETED
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
import { PasskeyApiClient } from "./api";
|
|
2
|
-
import { AuthenticatorAttachment } from "@simplewebauthn/types";
|
|
3
|
-
import { AuthsignalResponse } from "./api/types/shared";
|
|
4
|
-
declare type PasskeyOptions = {
|
|
5
|
-
baseUrl: string;
|
|
6
|
-
tenantId: string;
|
|
7
|
-
anonymousId: string;
|
|
8
|
-
};
|
|
9
|
-
declare type SignUpParams = {
|
|
10
|
-
userName?: string;
|
|
11
|
-
userDisplayName?: string;
|
|
12
|
-
token: string;
|
|
13
|
-
authenticatorAttachment?: AuthenticatorAttachment | null;
|
|
14
|
-
};
|
|
15
|
-
declare type SignUpResponse = {
|
|
16
|
-
token?: string;
|
|
17
|
-
};
|
|
18
|
-
declare type SignInParams = {
|
|
19
|
-
token?: string;
|
|
20
|
-
autofill?: boolean;
|
|
21
|
-
action?: string;
|
|
22
|
-
onVerificationStarted?: () => unknown;
|
|
23
|
-
};
|
|
24
|
-
declare type SignInResponse = {
|
|
25
|
-
token?: string;
|
|
26
|
-
userId?: string;
|
|
27
|
-
userAuthenticatorId?: string;
|
|
28
|
-
userName?: string;
|
|
29
|
-
userDisplayName?: string;
|
|
30
|
-
};
|
|
31
|
-
export declare class Passkey {
|
|
32
|
-
api: PasskeyApiClient;
|
|
33
|
-
private passkeyLocalStorageKey;
|
|
34
|
-
private anonymousId;
|
|
35
|
-
private cache;
|
|
36
|
-
constructor({ baseUrl, tenantId, anonymousId }: PasskeyOptions);
|
|
37
|
-
signUp({ userName, userDisplayName, token, authenticatorAttachment, }: SignUpParams): Promise<AuthsignalResponse<SignUpResponse | undefined>>;
|
|
38
|
-
signIn(params?: SignInParams): Promise<SignInResponse | undefined>;
|
|
39
|
-
isAvailableOnDevice(): Promise<boolean>;
|
|
40
|
-
private storeCredentialAgainstDevice;
|
|
41
|
-
}
|
|
42
|
-
export {};
|
package/dist/sms.d.ts
DELETED
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import { AuthsignalResponse, ChallengeResponse, EnrollResponse, VerifyResponse } from "./api/types/shared";
|
|
2
|
-
declare type SmsOptions = {
|
|
3
|
-
baseUrl: string;
|
|
4
|
-
tenantId: string;
|
|
5
|
-
};
|
|
6
|
-
declare type EnrollParams = {
|
|
7
|
-
phoneNumber: string;
|
|
8
|
-
};
|
|
9
|
-
declare type VerifyParams = {
|
|
10
|
-
code: string;
|
|
11
|
-
};
|
|
12
|
-
export declare class Sms {
|
|
13
|
-
private api;
|
|
14
|
-
private cache;
|
|
15
|
-
constructor({ baseUrl, tenantId }: SmsOptions);
|
|
16
|
-
enroll({ phoneNumber }: EnrollParams): Promise<AuthsignalResponse<EnrollResponse>>;
|
|
17
|
-
challenge(): Promise<AuthsignalResponse<ChallengeResponse>>;
|
|
18
|
-
verify({ code }: VerifyParams): Promise<AuthsignalResponse<VerifyResponse>>;
|
|
19
|
-
}
|
|
20
|
-
export {};
|
package/dist/token-cache.d.ts
DELETED
package/dist/totp.d.ts
DELETED
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import { AuthsignalResponse, VerifyResponse } from "./api/types/shared";
|
|
2
|
-
import { EnrollResponse } from "./api/types/totp";
|
|
3
|
-
declare type TotpOptions = {
|
|
4
|
-
baseUrl: string;
|
|
5
|
-
tenantId: string;
|
|
6
|
-
};
|
|
7
|
-
declare type VerifyParams = {
|
|
8
|
-
code: string;
|
|
9
|
-
};
|
|
10
|
-
export declare class Totp {
|
|
11
|
-
private api;
|
|
12
|
-
private cache;
|
|
13
|
-
constructor({ baseUrl, tenantId }: TotpOptions);
|
|
14
|
-
enroll(): Promise<AuthsignalResponse<EnrollResponse>>;
|
|
15
|
-
verify({ code }: VerifyParams): Promise<AuthsignalResponse<VerifyResponse>>;
|
|
16
|
-
}
|
|
17
|
-
export {};
|
package/dist/types.d.ts
DELETED
|
@@ -1,66 +0,0 @@
|
|
|
1
|
-
declare type BaseLaunchOptions = {
|
|
2
|
-
/**
|
|
3
|
-
* How the Authsignal Prebuilt MFA page should launch.
|
|
4
|
-
* `popup` will cause it to open in a overlay, whilst `redirect`
|
|
5
|
-
* will trigger a full page redirect.
|
|
6
|
-
* If no value is supplied, mode defaults to `redirect`.
|
|
7
|
-
*/
|
|
8
|
-
mode?: "popup" | "redirect" | "window";
|
|
9
|
-
};
|
|
10
|
-
export declare type RedirectLaunchOptions = BaseLaunchOptions & {
|
|
11
|
-
mode: "redirect";
|
|
12
|
-
};
|
|
13
|
-
export declare type PopupLaunchOptions = BaseLaunchOptions & {
|
|
14
|
-
mode: "popup";
|
|
15
|
-
popupOptions?: {
|
|
16
|
-
/** Any valid CSS value for the `width` property. */
|
|
17
|
-
width?: string;
|
|
18
|
-
/**
|
|
19
|
-
* @deprecated The popup will automatically resize to fit the content.
|
|
20
|
-
*/
|
|
21
|
-
height?: string;
|
|
22
|
-
/**
|
|
23
|
-
* Whether the popup is closable with the escape key and by clicking the backdrop.
|
|
24
|
-
*/
|
|
25
|
-
isClosable?: boolean;
|
|
26
|
-
};
|
|
27
|
-
};
|
|
28
|
-
export declare type WindowLaunchOptions = BaseLaunchOptions & {
|
|
29
|
-
mode: "window";
|
|
30
|
-
windowOptions?: {
|
|
31
|
-
width?: number;
|
|
32
|
-
height?: number;
|
|
33
|
-
};
|
|
34
|
-
};
|
|
35
|
-
export declare type LaunchOptions = RedirectLaunchOptions | PopupLaunchOptions | WindowLaunchOptions;
|
|
36
|
-
export declare type AuthsignalOptions = {
|
|
37
|
-
/**
|
|
38
|
-
* Cookie domain that will be used to identify
|
|
39
|
-
* users. If not set, location.hostname will be used
|
|
40
|
-
*/
|
|
41
|
-
cookieDomain?: string;
|
|
42
|
-
/**
|
|
43
|
-
* Tracking host (where API calls will be sent). If not set,
|
|
44
|
-
* we'd try to do the best to "guess" it. Last resort is t.authsignal.com.
|
|
45
|
-
*
|
|
46
|
-
* Though this parameter is not required, it's highly recommended to set is explicitly
|
|
47
|
-
*/
|
|
48
|
-
trackingHost?: string;
|
|
49
|
-
/**
|
|
50
|
-
* Name of id cookie. `__as_aid` by default
|
|
51
|
-
*/
|
|
52
|
-
cookieName?: string;
|
|
53
|
-
baseUrl?: string;
|
|
54
|
-
tenantId: string;
|
|
55
|
-
};
|
|
56
|
-
export declare enum AuthsignalWindowMessage {
|
|
57
|
-
AUTHSIGNAL_CLOSE_POPUP = "AUTHSIGNAL_CLOSE_POPUP"
|
|
58
|
-
}
|
|
59
|
-
export declare type AuthsignalWindowMessageData = {
|
|
60
|
-
event: AuthsignalWindowMessage;
|
|
61
|
-
token: string;
|
|
62
|
-
};
|
|
63
|
-
export declare type TokenPayload = {
|
|
64
|
-
token?: string;
|
|
65
|
-
};
|
|
66
|
-
export {};
|