@adyen/adyen-web
Version:
[](https://www.npmjs.com/package/@adyen/adyen-web)
3 lines (2 loc) • 2.66 kB
JavaScript
import{PasskeySdkLoader as i}from"./PasskeySdkLoader.js";import{PasskeyErrorTypes as e}from"./types.js";import t,{SDK_ERROR as n}from"../../../core/Errors/AdyenCheckoutError.js";import s from"../../../utils/base64.js";function a(i,e,t){return e in i?Object.defineProperty(i,e,{value:t,enumerable:!0,configurable:!0,writable:!0}):i[e]=t,i}class r{get deviceId(){return this.passkeyServiceConfig.deviceId}async getWebAuthnUnsupportedReason(){if(!window.PublicKeyCredential)return"Browser does not support webauthn";try{if(!await window.PublicKeyCredential.isUserVerifyingPlatformAuthenticatorAvailable())return"Device does not have platform authenticator"}catch(i){return"Unknown error"}return""}initialize(){return null==this.initialized&&(this.initialized=new i({environment:this.passkeyServiceConfig.environment,analytics:this.analytics}).load().then(i=>{this.passkeySdk=i})),this.initialized}async captureRiskSignalsEnrollment(){if(await this.initialized,this.riskSignals)return this.riskSignals;const i=await this.passkeySdk.captureRiskSignalsEnrollment(this.deviceId);if(i&&"type"in i&&i.type===e.RISK_SIGNALS_ERROR)throw new t(n,i.message);return this.riskSignals=i,this.riskSignals}async canUseStoredCredential(){try{return await this.captureRiskSignalsAuthentication(),!0}catch(i){return console.warn(`The device is not eligible for stored credential authentication: ${i instanceof Error?null==i?void 0:i.message:"unknown error"}`),!1}}async captureRiskSignalsAuthentication(){await this.initialized;const i=await this.passkeySdk.captureRiskSignalsAuthentication(this.deviceId);if(i&&"type"in i&&i.type===e.RISK_SIGNALS_ERROR)throw new t(n,i.message);return i}async createCredentialForEnrollment(i){await this.initialized;const a=this.decodeJsonBase64(i,"Failed to decode registrationOptions"),r=await this.passkeySdk.createCredentialForEnrollment(a);if(r&&"type"in r&&r.type===e.CREDENTIAL_CREATION_ERROR)throw new t(n,r.message);return s.encode(JSON.stringify(r))}async authenticateWithCredential(i){await this.initialized;const a=this.decodeJsonBase64(i,"Failed to decode authenticationOptions"),r=await this.passkeySdk.authenticateWithCredential(a);if(r&&"type"in r&&r.type===e.CREDENTIAL_RETRIEVAL_ERROR)throw new t(n,r.message);return s.encode(JSON.stringify(r))}decodeJsonBase64(i,e){const a=s.decode(i);if(!a.success)throw new t(n,e);return JSON.parse(a.data)}constructor(i,e){a(this,"passkeyServiceConfig",void 0),a(this,"analytics",void 0),a(this,"passkeySdk",void 0),a(this,"riskSignals",void 0),a(this,"initialized",void 0),this.analytics=e,this.passkeyServiceConfig=i}}export{r as PasskeyService};
//# sourceMappingURL=PasskeyService.js.map