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