ng-recaptchav3
Version:
Angular8 library to provide easy extraction for google recaptcha v3, invisible recaptcha and recaptcha v2
84 lines • 7.14 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import { isPlatformBrowser } from '@angular/common';
import { Inject, Injectable, InjectionToken, Optional, PLATFORM_ID } from '@angular/core';
import { BehaviorSubject, of } from 'rxjs';
/** @type {?} */
export const RECAPTCHA_LANGUAGE = new InjectionToken('recaptcha-language');
export class RecaptchaLoaderService {
/**
* @param {?} platformId
* @param {?=} language
*/
constructor(platformId, language) {
this.platformId = platformId;
this.language = language;
this.init();
this.ready = isPlatformBrowser(this.platformId) ? RecaptchaLoaderService.ready.asObservable() : of();
}
/**
* \@internal
* @private
* @return {?}
*/
init() {
if (RecaptchaLoaderService.ready || !isPlatformBrowser(this.platformId)) {
return;
}
window.ngRecaptchaLoaded = (/**
* @return {?}
*/
() => {
RecaptchaLoaderService.ready.next(grecaptcha);
});
RecaptchaLoaderService.ready = new BehaviorSubject(null);
/** @type {?} */
const script = (/** @type {?} */ (document.createElement('script')));
script.innerHTML = '';
/** @type {?} */
const langParam = this.language ? `&hl=${this.language}` : '';
script.src = `https://www.google.com/recaptcha/api.js?render=explicit&onload=ngRecaptchaLoaded${langParam}`;
script.async = true;
script.defer = true;
script.setAttribute('nonce', '');
document.head.appendChild(script);
}
}
/**
* \@internal
* @nocollapse
*/
RecaptchaLoaderService.ready = null;
RecaptchaLoaderService.decorators = [
{ type: Injectable }
];
/** @nocollapse */
RecaptchaLoaderService.ctorParameters = () => [
{ type: undefined, decorators: [{ type: Inject, args: [PLATFORM_ID,] }] },
{ type: String, decorators: [{ type: Optional }, { type: Inject, args: [RECAPTCHA_LANGUAGE,] }] }
];
if (false) {
/**
* \@internal
* @nocollapse
* @type {?}
* @private
*/
RecaptchaLoaderService.ready;
/** @type {?} */
RecaptchaLoaderService.prototype.ready;
/**
* \@internal
* @type {?}
* @private
*/
RecaptchaLoaderService.prototype.language;
/**
* @type {?}
* @private
*/
RecaptchaLoaderService.prototype.platformId;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVjYXB0Y2hhLWxvYWRlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vbmctcmVjYXB0Y2hhdjMvIiwic291cmNlcyI6WyJsaWIvcmVjYXB0Y2hhLWxvYWRlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxjQUFjLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUxRixPQUFPLEVBQUUsZUFBZSxFQUFjLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7QUFFdkQsTUFBTSxPQUFPLGtCQUFrQixHQUFHLElBQUksY0FBYyxDQUFTLG9CQUFvQixDQUFDO0FBV2xGLE1BQU0sT0FBTyxzQkFBc0I7Ozs7O0lBWWpDLFlBRXdDLFVBQWUsRUFDYixRQUFpQjtRQURuQixlQUFVLEdBQVYsVUFBVSxDQUFLO1FBR3JELElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNaLElBQUksQ0FBQyxLQUFLLEdBQUcsaUJBQWlCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxzQkFBc0IsQ0FBQyxLQUFLLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDO0lBQ3ZHLENBQUM7Ozs7OztJQUdPLElBQUk7UUFDVixJQUFJLHNCQUFzQixDQUFDLEtBQUssSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsRUFBRTtZQUN2RSxPQUFPO1NBQ1I7UUFFRCxNQUFNLENBQUMsaUJBQWlCOzs7UUFBRyxHQUFHLEVBQUU7WUFDOUIsc0JBQXNCLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNoRCxDQUFDLENBQUEsQ0FBQztRQUNGLHNCQUFzQixDQUFDLEtBQUssR0FBRyxJQUFJLGVBQWUsQ0FBWSxJQUFJLENBQUMsQ0FBQzs7Y0FDOUQsTUFBTSxHQUFHLG1CQUFBLFFBQVEsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLEVBQXFCO1FBQ3BFLE1BQU0sQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFDOztjQUNoQixTQUFTLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsT0FBTyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUU7UUFDN0QsTUFBTSxDQUFDLEdBQUcsR0FBRyxtRkFBbUYsU0FBUyxFQUFFLENBQUM7UUFDNUcsTUFBTSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7UUFDcEIsTUFBTSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7UUFDcEIsTUFBTSxDQUFDLFlBQVksQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDakMsUUFBUSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDcEMsQ0FBQzs7Ozs7O0FBbkNjLDRCQUFLLEdBQStCLElBQUksQ0FBQzs7WUFOekQsVUFBVTs7Ozs0Q0FlTixNQUFNLFNBQUMsV0FBVzt5Q0FDbEIsUUFBUSxZQUFJLE1BQU0sU0FBQyxrQkFBa0I7Ozs7Ozs7OztJQVZ4Qyw2QkFBd0Q7O0lBRXhELHVDQUE2Qjs7Ozs7O0lBRzdCLDBDQUFrQzs7Ozs7SUFJaEMsNENBQXFEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaXNQbGF0Zm9ybUJyb3dzZXIgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlLCBJbmplY3Rpb25Ub2tlbiwgT3B0aW9uYWwsIFBMQVRGT1JNX0lEIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBSZUNhcHRjaGEgfSBmcm9tICcuL2dyZWNhcHRjaGEnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlLCBvZiB9IGZyb20gJ3J4anMnO1xuXG5leHBvcnQgY29uc3QgUkVDQVBUQ0hBX0xBTkdVQUdFID0gbmV3IEluamVjdGlvblRva2VuPHN0cmluZz4oJ3JlY2FwdGNoYS1sYW5ndWFnZScpO1xuZGVjbGFyZSBjb25zdCBncmVjYXB0Y2hhOiBSZUNhcHRjaGE7XG5cbmRlY2xhcmUgZ2xvYmFsIHtcbiAgaW50ZXJmYWNlIFdpbmRvdyB7XG4gICAgZ3JlY2FwdGNoYTogUmVDYXB0Y2hhO1xuICAgIG5nUmVjYXB0Y2hhTG9hZGVkOiAoKSA9PiB2b2lkO1xuICB9XG59XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBSZWNhcHRjaGFMb2FkZXJTZXJ2aWNlIHtcbiAgLyoqXG4gICAqIEBpbnRlcm5hbFxuICAgKiBAbm9jb2xsYXBzZVxuICAgKi9cbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZHk6IEJlaGF2aW9yU3ViamVjdDxSZUNhcHRjaGE+ID0gbnVsbDtcblxuICByZWFkeTogT2JzZXJ2YWJsZTxSZUNhcHRjaGE+O1xuXG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgcHJpdmF0ZSByZWFkb25seSBsYW5ndWFnZTogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1hbnlcbiAgICBASW5qZWN0KFBMQVRGT1JNX0lEKSBwcml2YXRlIHJlYWRvbmx5IHBsYXRmb3JtSWQ6IGFueSxcbiAgICBAT3B0aW9uYWwoKSBASW5qZWN0KFJFQ0FQVENIQV9MQU5HVUFHRSkgbGFuZ3VhZ2U/OiBzdHJpbmdcbiAgKSB7XG4gICAgdGhpcy5sYW5ndWFnZSA9IGxhbmd1YWdlO1xuICAgIHRoaXMuaW5pdCgpO1xuICAgIHRoaXMucmVhZHkgPSBpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpID8gUmVjYXB0Y2hhTG9hZGVyU2VydmljZS5yZWFkeS5hc09ic2VydmFibGUoKSA6IG9mKCk7XG4gIH1cblxuICAvKiogQGludGVybmFsICovXG4gIHByaXZhdGUgaW5pdCgpIHtcbiAgICBpZiAoUmVjYXB0Y2hhTG9hZGVyU2VydmljZS5yZWFkeSB8fCAhaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHdpbmRvdy5uZ1JlY2FwdGNoYUxvYWRlZCA9ICgpID0+IHtcbiAgICAgIFJlY2FwdGNoYUxvYWRlclNlcnZpY2UucmVhZHkubmV4dChncmVjYXB0Y2hhKTtcbiAgICB9O1xuICAgIFJlY2FwdGNoYUxvYWRlclNlcnZpY2UucmVhZHkgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFJlQ2FwdGNoYT4obnVsbCk7XG4gICAgY29uc3Qgc2NyaXB0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2NyaXB0JykgYXMgSFRNTFNjcmlwdEVsZW1lbnQ7XG4gICAgc2NyaXB0LmlubmVySFRNTCA9ICcnO1xuICAgIGNvbnN0IGxhbmdQYXJhbSA9IHRoaXMubGFuZ3VhZ2UgPyBgJmhsPSR7dGhpcy5sYW5ndWFnZX1gIDogJyc7XG4gICAgc2NyaXB0LnNyYyA9IGBodHRwczovL3d3dy5nb29nbGUuY29tL3JlY2FwdGNoYS9hcGkuanM/cmVuZGVyPWV4cGxpY2l0Jm9ubG9hZD1uZ1JlY2FwdGNoYUxvYWRlZCR7bGFuZ1BhcmFtfWA7XG4gICAgc2NyaXB0LmFzeW5jID0gdHJ1ZTtcbiAgICBzY3JpcHQuZGVmZXIgPSB0cnVlO1xuICAgIHNjcmlwdC5zZXRBdHRyaWJ1dGUoJ25vbmNlJywgJycpO1xuICAgIGRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQoc2NyaXB0KTtcbiAgfVxufVxuIl19