{"version":3,"file":"ngx-appkey-webauthn.mjs","sources":["../../../projects/ngx-appkey-webauthn/src/lib/models/user.ts","../../../projects/ngx-appkey-webauthn/src/lib/ngx-appkey-webauthn.service.ts","../../../projects/ngx-appkey-webauthn/src/lib/ngx-appkey-webauthn.component.ts","../../../projects/ngx-appkey-webauthn/src/public-api.ts","../../../projects/ngx-appkey-webauthn/src/ngx-appkey-webauthn.ts"],"sourcesContent":["\n\nexport class User {\n    appUserId:string = \"\";\n    displayName:string = \"\";\n    handle:string = \"\";\n    status:string = \"\";\n    userName:string = \"\";\n    authenticators?:Array<any>\n    appId:string = \"\"; \n    'access-token':string = \"\";\n    jwt:string = \"\" ;\n    createdAt:string = \"\";\n    updatedAt:string = \"\";\n}\n","import { Injectable } from '@angular/core';\nimport localeData from './locales.json';\nimport { User } from './models/user';\nimport { Application } from './models/application';\n\n@Injectable({\n    providedIn: 'root'\n})\nexport class NgxAppkeyWebauthnService {\n\n\n    public localeList: Array<any> = localeData.list;\n    public appLocales: Array<any> = [];\n    public user: User = new User() \n    private apiConfig: any = {}\n\n    constructor() {\n\n    }\n\n    async configure(config: any) {\n        if (!config || !config.appToken) {\n            throw (\"invalid api config for app token\")\n        }\n        this.apiConfig = config\n    }\n\n    async getApp(): Promise<any> {\n        return await this.apiRequest(\"GET\", \"appuser/app\")\n    }\n\n\n\n    /**\n     * \n     * @param {\n     *   handle :string,\n     *   displayName :string,\n     *   locale? :string\n     * }\n     * @returns \n     */\n    async loginAnonymous(data: any) {\n        return new Promise((resolve, reject) => {\n            try {\n                let valid = data.handle && data.handle.startsWith(\"ANON_\")\n                if (!valid) {\n                    let error = {\n                        message: \"Invalid login anonymous data\"\n                    };\n                    reject(error);\n                    return;\n                } \n              \n\n                this.apiRequest('POST', 'appuser/loginAnonymous', data).then(result => {\n                    if (result.code) reject(result);\n                    else { \n                        resolve(result);\n                    }\n                }).catch((error) => reject(error)); \n\n            } catch (error) {\n                reject( error )\n            }\n        })\n    }\n\n\n    /**\n     * https://w3c.github.io/webauthn/#dictdef-registrationresponsejson\n     * @param \n     *  handle: string,\n     *  {\n     * \n     *  id: Base64URLString;\n     *  rawId: Base64URLString;\n     *  response: {\n     *      clientDataJSON: Base64URLString;\n     *      attestationObject: Base64URLString;\n     *      authenticatorData?: Base64URLString; \n     *    };\n     *  authenticatorAttachment?: string; \n     *  type: string;\n     * } attestation \n     * @returns \n     */\n    loginAnonymousComplete(handle: string, attestation: any) {\n        return new Promise((resolve, reject) => {\n            try {\n\n                let valid = handle &&\n                    attestation.id &&\n                    attestation.rawId &&\n                    attestation.response &&\n                    attestation.response.clientDataJSON &&\n                    attestation.response.attestationObject &&\n                    attestation.type;\n\n                if (!valid) {\n                    reject({ message: \"Invalid data\" })\n                    return\n                } \n\n                this.apiRequest('POST', 'appuser/loginAnonymousComplete', attestation).then(result => {\n                    if (result.code) reject(result);\n                    else {\n                        this.user = result;\n                        resolve(result);\n                    }\n                }).catch((error) => reject(error));\n            } catch (error) {\n                reject(error)\n            }\n        })\n    }\n\n\n\n\n\n    /**\n     * \n     * @param {\n      *   handle :string,\n      *   displayName :string,\n      *   locale? :string\n      * }\n      * @returns \n      */\n    async signup(data: any) {\n        return new Promise((resolve, reject) => {\n            try {\n                let valid = data.handle && data.displayName\n                if (!valid) {\n                    let error = {\n                        message: \"invalid signup data\"\n                    }\n                    reject(error)\n                }\n                data.handle = data.handle.toLowerCase();\n                \n\n                this.apiRequest('POST', 'appuser/signup', data).then(result => {\n                    if (result.code) reject(result);\n                    else { \n                        resolve(result);\n                    }\n                }).catch((error) => reject(error)); \n\n            } catch (error) {\n                reject(error)\n            }\n        })\n    }\n\n\n\n    /**\n     * https://w3c.github.io/webauthn/#dictdef-registrationresponsejson\n     * @param \n     *  handle: string,\n     *  {\n     * \n     *  id: Base64URLString;\n     *  rawId: Base64URLString;\n     *  response: {\n     *      clientDataJSON: Base64URLString;\n     *      attestationObject: Base64URLString;\n     *      authenticatorData?: Base64URLString; \n     *    };\n     *  authenticatorAttachment?: string; \n     *  type: string;\n     * } attestation \n     * @returns \n     */\n    signupConfirm(handle: string, attestation: any) {\n        return new Promise((resolve, reject) => {\n            try {\n\n                let valid = handle &&\n                    attestation.id &&\n                    attestation.rawId &&\n                    attestation.response &&\n                    attestation.response.clientDataJSON &&\n                    attestation.response.attestationObject &&\n                    attestation.type;\n\n                if (!valid) {\n                    reject({ message: \"invalid attestation\" })\n                    return\n                }\n\n                attestation.handle = handle.toLowerCase();\n\n                this.apiRequest('POST', 'appuser/signupConfirm', attestation).then(result => {\n                    if (result.code) reject(result);\n                    else { \n                        resolve(result);\n                    }\n                }).catch((error) => reject(error));\n            } catch (error) {\n                reject(error)\n            }\n        })\n    }\n\n\n\n\n\n    /**\n     * \n     * @param { handle:string, code:string} data \n     * @returns \n     */\n    signupComplete(data: any) {\n        return new Promise((resolve, reject) => {\n            try {\n\n                let valid = data.code;\n                if (!valid) {\n                    reject({ message: \"invalid singup data\" })\n                    return\n                }\n\n                this.apiRequest('POST', 'appuser/signupComplete', data).then(result => {\n                    if (result.code) reject(result);\n                    else {\n                        this.user = result;\n                        \n                        resolve(result);\n                    }\n                }).catch((error) => reject(error));\n            } catch (error) {\n                reject(error)\n            }\n        })\n    }\n\n\n\n    /**\n     * \n     * @param {handle:string} data \n     * \n     * @returns \n     */\n    login(data: any) {\n        return new Promise((resolve, reject) => {\n            try {\n                let valid = data.handle;\n                if (!valid) {\n                    reject({ message: \"invalid login data\" })\n                    return\n                }\n\n                this.logout()\n\n                data.handle = data.handle.toLowerCase();\n                this.apiRequest('POST', 'appuser/login', data).then(result => {\n                    if (result.code) reject(result);\n                    else {\n                        resolve(result);\n                    }\n                }).catch((error) => reject(error));\n            } catch (error) {\n                reject(error)\n            }\n        })\n    }\n\n\n\n    /**\n     * https://w3c.github.io/webauthn/#dictdef-authenticationresponsejson\n     * @param \n     * handle:string,\n     *  {\n     *      id: Base64URLString;\n     *      rawId: Base64URLString;\n     *      response: {\n     *          clientDataJSON:Base64URLString,\n     *          authenticatorData:Base64URLString,\n     *          signature:Base64URLString,\n     *          userHandle?: Base64URLString\n     *          };\n     *      authenticatorAttachment?: string; \n     *      type: string;\n     *  } assertion\n     *  \n     * @returns \n     */\n    loginComplete(handle: string, assertion: any) {\n        return new Promise((resolve, reject) => {\n            try {\n\n                let valid = handle &&\n                    assertion.id &&\n                    assertion.rawId &&\n                    assertion.response.clientDataJSON &&\n                    assertion.response.authenticatorData &&\n                    assertion.response.signature &&\n                    assertion.type;\n                if (!valid) {\n                    reject({ message: \"invalid assertion\" })\n                    return\n                }\n\n                assertion.handle = handle.toLowerCase();\n\n                this.apiRequest('POST', 'appuser/loginComplete', assertion).then(result => {\n                    if (result && result['access-token']) {\n                        this.user = result;\n                        resolve(result);\n                    }\n                    else reject(result);\n\n                }).catch((error) => reject(error));\n            } catch (error) {\n                reject(error)\n            }\n        });\n    }\n\n\n\n    /**\n     * \n     * @param {token:string, provider:string} data \n     * \n     * @returns \n     */\n    socialLogin(data: any) {\n        return new Promise((resolve, reject) => {\n            try {\n                let valid = data.token && data.provider;\n\n                if (!valid) {\n                    reject({ message: \"invalid data\" })\n                    return\n                }\n\n                let that = this;\n                this.apiRequest('POST', 'appuser/socialLogin', data).then(result => {\n\n                    if (result && result['access-token']) {\n\n                        that.user = result;\n                        resolve(result);\n                    }\n                    else reject(result);\n\n                })\n            } catch (error) {\n                reject(error)\n            }\n        });\n    }\n\n    /**\n    * \n    * @param {token:string, provider:string, handle:string} data \n    * \n    * @returns \n    */\n    socialSignup(data: any) {\n        return new Promise((resolve, reject) => {\n            try {\n                let valid = data.token && data.provider && data.handle;\n                if (!valid) {\n                    reject({ message: \"invalid data\" })\n                    return\n                }\n                this.logout()\n                \n                let that = this;\n                this.apiRequest('POST', 'appuser/socialSignup', data).then(result => {\n                    if (result && result['access-token']) {\n\n                        that.user = result;\n                        resolve(result);\n                    }\n                    else reject(result);\n\n                }).catch((error) => reject(error));\n            } catch (error) {\n                reject(error)\n            }\n        });\n    }\n\n\n    /**\n     * \n     * @param {handle:string} data \n     * \n     * @returns \n     */\n    verify(data: any) {\n        return new Promise((resolve, reject) => {\n            try {\n                let valid = data.handle;\n                if (!valid) {\n                    reject({ message: \"invalid data\" })\n                    return\n                }\n                data.handle = data.handle.toLowerCase();\n                this.apiRequest('POST', 'appuser/verify', data).then(result => {\n                    if (result.code) reject(result);\n                    else {\n\n                        resolve(result);\n                    }\n                }).catch((error) => reject(error));\n            } catch (error) {\n                reject(error)\n            }\n        })\n    }\n\n\n    /**\n    * https://w3c.github.io/webauthn/#dictdef-authenticationresponsejson\n    * @param \n    * handle:string,\n    * {  \n   *      id: Base64URLString;\n   *      rawId: Base64URLString;\n   *      response: {\n   *          clientDataJSON:Base64URLString,\n   *          authenticatorData:Base64URLString,\n   *          signature:Base64URLString,\n   *          userHandle?: Base64URLString\n   *          };\n   *      authenticatorAttachment?: string; \n   *      type: string\n    * } assertion\n    *  \n    * @returns \n    */\n    verifyComplete(handle: string, assertion: any) {\n        return new Promise((resolve, reject) => {\n            try {\n\n                let valid = handle &&\n                    assertion.id &&\n                    assertion.rawId &&\n                    assertion.response.clientDataJSON &&\n                    assertion.response.authenticatorData &&\n                    assertion.response.signature &&\n                    assertion.type;\n                if (!valid) {\n                    reject({ message: \"invalid assertion\" })\n                    return\n                }\n\n                assertion.handle = handle.toLowerCase();\n                let that = this;\n                this.apiRequest('POST', 'appuser/verifyComplete', assertion).then(result => {\n                    if (result && result['access-token']) {\n                        that.user = result;\n                        resolve(result);\n                    }\n                    else reject(result);\n\n                }).catch((error) => reject(error));\n            } catch (error) {\n                reject(error)\n            }\n        });\n    }\n\n\n\n    /**\n     * \n     * @param {token:string, provider:string} data  \n     * @returns \n     */\n    verifySocialAccount(data: any) {\n        return new Promise((resolve, reject) => {\n            try {\n\n                let valid = data.token && data.provider;\n                if (!valid) {\n                    reject({ message: \"invalid data\" })\n                    return\n                }\n                let that = this;\n                this.apiRequest('POST', 'appuser/verifySocialAccount', data).then(result => {\n                    if (result && result['access-token']) {\n                        that.user = result;\n                        resolve(result);\n                    }\n                    else reject(result);\n\n                }).catch((error) => reject(error));\n            } catch (error) {\n                reject(error)\n            }\n        });\n    }\n\n\n    logout() {\n        this.user = new User()\n    }\n\n\n    /**\n     * \n     * @returns application user\n     */\n    getAppUser() {\n        return new Promise((resolve, reject) => {\n            try {\n                this.apiRequest('GET', 'appuser/user').then(result => {\n\n                    if (result.code) reject(result);\n                    else {\n                        this.user = result;\n                        resolve(result);\n                    }\n\n                }).catch((error) => reject(error));\n            } catch (error) {\n                reject(error);\n            }\n\n        })\n    }\n\n\n\n    /**\n    * \n    * @param {locale:string} data \n    * @returns \n    */\n    setLocale(data: any) {\n        return new Promise((resolve, reject) => {\n            try {\n                let valid = data.locale;\n                if (!valid) {\n                    reject({ message: \"invalid data\" })\n                    return\n                }\n\n                this.apiRequest('POST', 'appuser/setLocale', data).then(result => {\n                    if (result == true) resolve(result);\n                    else reject(result);\n                }).catch((error) => reject(error));\n            } catch (error) {\n                resolve(error)\n            }\n        })\n    }\n\n\n\n    /**\n     * \n     * @param {displayName:string} data \n     * @returns  \n     */\n    updateProfile(data: any) {\n        return new Promise((resolve, reject) => {\n            try {\n                let valid = data.displayName;\n                if (!valid) {\n                    reject({ message: \"invalid data\" })\n                    return\n                }\n\n\n                this.apiRequest('POST', 'appuser/updateProfile', data).then(result => {\n                    if (result.code) resolve(result);\n                    else reject(result);\n                }).catch((error) => reject(error));\n            } catch (error) {\n\n            }\n        })\n    }\n\n    /**\n     * \n     * @param {userName:string} data \n     * @returns  \n     */\n    setUserName(data: any) {\n        return new Promise((resolve, reject) => {\n            try {\n\n                if (!data.userName) {\n                    reject({ message: \"invalid data\" });\n                    return\n                }\n\n                data.userName = data.userName.toLowerCase();\n\n                this.apiRequest('POST', 'appuser/setUserName', data).then(result => {\n                    if (result.code) reject(result);\n                    else resolve(result);\n                }).catch((error) => reject(error));\n            } catch (error) {\n                reject(error);\n            }\n        })\n    }\n\n\n\n    /**\n     * \n     * @param {userName:string} data \n     * @returns  \n     */\n    userNameAvailable(data: any) {\n        return new Promise((resolve, reject) => {\n            try {\n\n                if (!data.userName) {\n                    reject({ message: \"invalid data\" });\n                    return\n                }\n\n                data.userName = data.userName.toLowerCase();\n\n                this.apiRequest('GET', `appuser/userNameAvailable?userName=${data.userName}`).then(result => {\n                    if (result.code) reject(result);\n                    else resolve(result);\n                }).catch((error) => reject(error));\n            } catch (error) {\n                reject(error)\n            }\n        })\n    }\n\n\n    /**\n     * \n     * \n     * @returns  \n     */\n    deleteAccount() {\n        return new Promise((resolve, reject) => {\n            try {\n\n                this.apiRequest('POST', 'appuser/deleteAccount', {}).then(result => {\n                    if (result.code) reject(result);\n                    else resolve(result);\n                }).catch((error) => reject(error));\n            } catch (error) {\n                reject(error)\n            }\n        })\n    }\n\n    /**\n     *\n     *\n     * @returns challenge\n     */\n    addPasskey(data:any = {}) {\n        return new Promise((resolve, reject) => {\n            try {\n                this.apiRequest('POST', 'appuser/addPasskey', data).then(result => {\n                    if (result.code)\n                        reject(result);\n                    else\n                        resolve(result);\n                }).catch((error) => reject(error));\n            }\n            catch (error) {\n                reject(error);\n            }\n        });\n    }\n   \n    \n\n    /**\n     * https://w3c.github.io/webauthn/#dictdef-registrationresponsejson\n     * @param \n     *  {\n     * \n     *  id: Base64URLString;\n     *  rawId: Base64URLString;\n     *  response: {\n     *      clientDataJSON: Base64URLString;\n     *      attestationObject: Base64URLString;\n     *      authenticatorData?: Base64URLString; \n     *    };\n     *  authenticatorAttachment?: string; \n     *  type: string;\n     * } attestation \n     * @returns \n     */\n    addPasskeyComplete(attestation:any) {\n        return new Promise((resolve, reject) => {\n            try {\n                let valid = attestation.id &&\n                    attestation.rawId &&\n                    attestation.response &&\n                    attestation.response.clientDataJSON &&\n                    attestation.response.attestationObject &&\n                    attestation.type;\n\n                if (!valid) {\n                    reject({ message: \"invalid attestation\" })\n                    return\n                } \n\n                this.apiRequest('POST', 'appuser/addPasskeyComplete', attestation).then(result => {\n                    if (result.code)\n                        reject(result);\n                    else {\n                        this.user = result;\n                        resolve(result);\n                    }\n                }).catch((error) => reject(error));\n            }\n            catch (error) {\n                reject(error);\n            }\n        });\n    }\n    /**\n    *\n    * @param {keyId:string, keyName:string} data\n    * @returns user\n    */\n    updatePasskey(data:any) {\n        return new Promise((resolve, reject) => {\n            try {\n                this.apiRequest('POST', 'appuser/updatePasskey', data).then(result => {\n                    if (result.code)\n                        reject(result);\n                    else {\n                        this.user = result;\n                        resolve(result);\n                    }\n                }).catch((error) => reject(error));\n            }\n            catch (error) {\n                reject(error);\n            }\n        });\n    }\n    /**\n    *\n    * @param {keyId:string} data\n    * @returns user\n    */\n    removePasskey(data:any) {\n        return new Promise((resolve, reject) => {\n            try {\n                this.apiRequest('POST', 'appuser/removePasskey', data).then(result => {\n                    if (result.code)\n                        reject(result);\n                    else {\n                        this.user = result;\n                        resolve(result);\n                    }\n                }).catch((error) => reject(error));\n            }\n            catch (error) {\n                reject(error);\n            }\n        });\n    }\n\n\n\n    private async apiRequest(method: string, endpoint: string, data?: any): Promise<any> {\n        try {\n            if (!this.apiConfig.appToken) {\n                console.log(\"apiRequest this.apiConfig \", this.apiConfig);\n                throw (\"invalid api config for app token\")\n            } \n\n            let options: any = {\n                method: method ? method : 'POST',\n                headers: {\n                    'Content-Type': 'application/json',\n                }\n            };\n\n            if (this.user && this.user['access-token'] != \"\") options.headers['access-token'] = this.user['access-token'];\n            else if (data && data['access-token']) options.headers['access-token'] = data['access-token'];\n            else if (data && data.signupToken) options.headers['signup-token'] = data.signupToken;\n            else options.headers['app-token'] = this.apiConfig.appToken\n\n            if (data && method == \"POST\" || method == \"PUT\") options.body = JSON.stringify(data);\n\n            const response = await fetch(`${this.apiConfig.apiUrl}/api/${endpoint}`, options);\n            let result = await response.json();\n\n            console.log(`apiRequest path: ${endpoint} - result: `, result)\n\n            // if (response.status !== 200) return { error: result }\n            // else return result\n\n            return result;\n\n        } catch (error) {\n\n            console.log(`apiRequest error:`, error)\n            return error;\n        }\n    }\n\n\n}\n","import { Component } from '@angular/core';\n\n@Component({\n  selector: 'lib-ngx-appkey-webauthn',\n  standalone: true,\n  imports: [],\n  template: `\n    <p>\n      ngx-appkey-webauthn works!\n    </p>\n  `,\n  styles: ``\n})\nexport class NgxAppkeyWebauthnComponent {\n\n}\n","/*\n * Public API Surface of ngx-appkey-webauthn\n */\n\nexport * from './lib/ngx-appkey-webauthn.service';\nexport * from './lib/ngx-appkey-webauthn.component';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}