UNPKG

@authaction/passkey-plus-sdk

Version:

A lightweight frontend SDK for passkey-based passwordless authentication with AuthAction

2 lines 2.43 kB
"use strict";var u=Object.defineProperty;var h=Object.getOwnPropertyDescriptor;var w=Object.getOwnPropertyNames;var y=Object.prototype.hasOwnProperty;var d=(a,t)=>{for(var e in t)u(a,e,{get:t[e],enumerable:!0})},g=(a,t,e,s)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of w(t))!y.call(a,n)&&n!==e&&u(a,n,{get:()=>t[n],enumerable:!(s=h(t,n))||s.enumerable});return a};var f=a=>g(u({},"__esModule",{value:!0}),a);var m={};d(m,{PasskeyPlus:()=>o});module.exports=f(m);var r=require("@simplewebauthn/browser"),o=class{constructor(t){let{tenantDomain:e,appId:s}=t;this.baseUrl=`https://${e}/api/v1/passkey-plus-public/${s}`}async register(t,e){let s=await this.getRegistrationOptions(t);e?.authenticatorAttachment&&(s.authenticatorSelection={...s.authenticatorSelection,authenticatorAttachment:e.authenticatorAttachment});let n=await(0,r.startRegistration)({optionsJSON:s}),c=await(await fetch(`${this.baseUrl}/transaction/${t}/register`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(n)})).json(),{nonce:p}=c.data;return p}async authenticate(t,e){let s=await this.getAuthenticationOptions(t),n=await(0,r.startAuthentication)({optionsJSON:s}),i=await fetch(`${this.baseUrl}/transaction/${t}/authenticate`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(n)});if(!i.ok){let l=await i.json();throw new Error(`Authentication request failed: ${l.message||i.statusText}`)}let c=await i.json(),{nonce:p}=c.data;return p}async canAuthenticateWithPasskey(){return!!window.PublicKeyCredential}async canRegisterPasskey(){return!!window.PublicKeyCredential&&typeof navigator.credentials.create=="function"}async canUseConditionalMediation(){return typeof window?.PublicKeyCredential?.isConditionalMediationAvailable=="function"?await window.PublicKeyCredential.isConditionalMediationAvailable():!1}async getRegistrationOptions(t){let e=await fetch(`${this.baseUrl}/transaction/${t}/registration-options`);if(!e.ok){let n=await e.json();throw new Error(`Registration options request failed: ${n.message||e.statusText}`)}return(await e.json()).data}async getAuthenticationOptions(t){let e=await fetch(`${this.baseUrl}/transaction/${t}/authentication-options`);if(!e.ok){let n=await e.json();throw new Error(`Authentication options request failed: ${n.message||e.statusText}`)}return(await e.json()).data}};0&&(module.exports={PasskeyPlus}); //# sourceMappingURL=index.js.map