recaptcha-loader.service.mjs 8.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. import { isPlatformBrowser } from "@angular/common";
  2. import { Inject, Injectable, Optional, PLATFORM_ID } from "@angular/core";
  3. import { BehaviorSubject, of } from "rxjs";
  4. import { loader } from "./load-script";
  5. import { RECAPTCHA_BASE_URL, RECAPTCHA_LANGUAGE, RECAPTCHA_NONCE, RECAPTCHA_V3_SITE_KEY } from "./tokens";
  6. import * as i0 from "@angular/core";
  7. export class RecaptchaLoaderService {
  8. /**
  9. * @internal
  10. * @nocollapse
  11. */
  12. static { this.ready = null; }
  13. constructor(
  14. // eslint-disable-next-line @typescript-eslint/ban-types
  15. platformId, language, baseUrl, nonce, v3SiteKey) {
  16. this.platformId = platformId;
  17. this.language = language;
  18. this.baseUrl = baseUrl;
  19. this.nonce = nonce;
  20. this.v3SiteKey = v3SiteKey;
  21. this.init();
  22. this.ready = isPlatformBrowser(this.platformId) ? RecaptchaLoaderService.ready.asObservable() : of();
  23. }
  24. /** @internal */
  25. init() {
  26. if (RecaptchaLoaderService.ready) {
  27. return;
  28. }
  29. if (isPlatformBrowser(this.platformId)) {
  30. const subject = new BehaviorSubject(null);
  31. RecaptchaLoaderService.ready = subject;
  32. const langParam = this.language ? "&hl=" + this.language : "";
  33. const renderMode = this.v3SiteKey || "explicit";
  34. loader.loadScript(renderMode, (grecaptcha) => subject.next(grecaptcha), langParam, this.baseUrl, this.nonce);
  35. }
  36. }
  37. static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: RecaptchaLoaderService, deps: [{ token: PLATFORM_ID }, { token: RECAPTCHA_LANGUAGE, optional: true }, { token: RECAPTCHA_BASE_URL, optional: true }, { token: RECAPTCHA_NONCE, optional: true }, { token: RECAPTCHA_V3_SITE_KEY, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }
  38. static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: RecaptchaLoaderService }); }
  39. }
  40. i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: RecaptchaLoaderService, decorators: [{
  41. type: Injectable
  42. }], ctorParameters: function () { return [{ type: Object, decorators: [{
  43. type: Inject,
  44. args: [PLATFORM_ID]
  45. }] }, { type: undefined, decorators: [{
  46. type: Optional
  47. }, {
  48. type: Inject,
  49. args: [RECAPTCHA_LANGUAGE]
  50. }] }, { type: undefined, decorators: [{
  51. type: Optional
  52. }, {
  53. type: Inject,
  54. args: [RECAPTCHA_BASE_URL]
  55. }] }, { type: undefined, decorators: [{
  56. type: Optional
  57. }, {
  58. type: Inject,
  59. args: [RECAPTCHA_NONCE]
  60. }] }, { type: undefined, decorators: [{
  61. type: Optional
  62. }, {
  63. type: Inject,
  64. args: [RECAPTCHA_V3_SITE_KEY]
  65. }] }]; } });
  66. //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVjYXB0Y2hhLWxvYWRlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctcmVjYXB0Y2hhL3NyYy9saWIvcmVjYXB0Y2hhLWxvYWRlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUUsT0FBTyxFQUFFLGVBQWUsRUFBYyxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFdkQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2QyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsa0JBQWtCLEVBQUUsZUFBZSxFQUFFLHFCQUFxQixFQUFFLE1BQU0sVUFBVSxDQUFDOztBQUcxRyxNQUFNLE9BQU8sc0JBQXNCO0lBQ2pDOzs7T0FHRzthQUNZLFVBQUssR0FBMkMsSUFBSSxDQUFDO0lBYXBFO0lBQ0Usd0RBQXdEO0lBQ2xCLFVBQWtCLEVBQ2hCLFFBQWlCLEVBQ2pCLE9BQWdCLEVBQ25CLEtBQWMsRUFDUixTQUFrQjtRQUp2QixlQUFVLEdBQVYsVUFBVSxDQUFRO1FBTXhELElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ25CLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDO1FBQzNCLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNaLElBQUksQ0FBQyxLQUFLLEdBQUcsaUJBQWlCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxzQkFBc0IsQ0FBQyxLQUFLLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDO0lBQ3ZHLENBQUM7SUFFRCxnQkFBZ0I7SUFDUixJQUFJO1FBQ1YsSUFBSSxzQkFBc0IsQ0FBQyxLQUFLLEVBQUU7WUFDaEMsT0FBTztTQUNSO1FBQ0QsSUFBSSxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEVBQUU7WUFDdEMsTUFBTSxPQUFPLEdBQUcsSUFBSSxlQUFlLENBQXdCLElBQUksQ0FBQyxDQUFDO1lBQ2pFLHNCQUFzQixDQUFDLEtBQUssR0FBRyxPQUFPLENBQUM7WUFDdkMsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUU5RCxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsU0FBUyxJQUFJLFVBQVUsQ0FBQztZQUNoRCxNQUFNLENBQUMsVUFBVSxDQUFDLFVBQVUsRUFBRSxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsRUFBRSxTQUFTLEVBQUUsSUFBSSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDOUc7SUFDSCxDQUFDOzhHQS9DVSxzQkFBc0Isa0JBb0J2QixXQUFXLGFBQ0Msa0JBQWtCLDZCQUNsQixrQkFBa0IsNkJBQ2xCLGVBQWUsNkJBQ2YscUJBQXFCO2tIQXhCaEMsc0JBQXNCOzsyRkFBdEIsc0JBQXNCO2tCQURsQyxVQUFVOzswQkFxQk4sTUFBTTsyQkFBQyxXQUFXOzswQkFDbEIsUUFBUTs7MEJBQUksTUFBTTsyQkFBQyxrQkFBa0I7OzBCQUNyQyxRQUFROzswQkFBSSxNQUFNOzJCQUFDLGtCQUFrQjs7MEJBQ3JDLFFBQVE7OzBCQUFJLE1BQU07MkJBQUMsZUFBZTs7MEJBQ2xDLFFBQVE7OzBCQUFJLE1BQU07MkJBQUMscUJBQXFCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaXNQbGF0Zm9ybUJyb3dzZXIgfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uXCI7XG5pbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUsIE9wdGlvbmFsLCBQTEFURk9STV9JRCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUsIG9mIH0gZnJvbSBcInJ4anNcIjtcblxuaW1wb3J0IHsgbG9hZGVyIH0gZnJvbSBcIi4vbG9hZC1zY3JpcHRcIjtcbmltcG9ydCB7IFJFQ0FQVENIQV9CQVNFX1VSTCwgUkVDQVBUQ0hBX0xBTkdVQUdFLCBSRUNBUFRDSEFfTk9OQ0UsIFJFQ0FQVENIQV9WM19TSVRFX0tFWSB9IGZyb20gXCIuL3Rva2Vuc1wiO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgUmVjYXB0Y2hhTG9hZGVyU2VydmljZSB7XG4gIC8qKlxuICAgKiBAaW50ZXJuYWxcbiAgICogQG5vY29sbGFwc2VcbiAgICovXG4gIHByaXZhdGUgc3RhdGljIHJlYWR5OiBCZWhhdmlvclN1YmplY3Q8UmVDYXB0Y2hhVjIuUmVDYXB0Y2hhPiA9IG51bGw7XG5cbiAgcHVibGljIHJlYWR5OiBPYnNlcnZhYmxlPFJlQ2FwdGNoYVYyLlJlQ2FwdGNoYT47XG5cbiAgLyoqIEBpbnRlcm5hbCAqL1xuICBwcml2YXRlIGxhbmd1YWdlOiBzdHJpbmc7XG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgcHJpdmF0ZSBiYXNlVXJsOiBzdHJpbmc7XG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgcHJpdmF0ZSBub25jZTogc3RyaW5nO1xuICAvKiogQGludGVybmFsICovXG4gIHByaXZhdGUgdjNTaXRlS2V5OiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9iYW4tdHlwZXNcbiAgICBASW5qZWN0KFBMQVRGT1JNX0lEKSBwcml2YXRlIHJlYWRvbmx5IHBsYXRmb3JtSWQ6IE9iamVjdCxcbiAgICBAT3B0aW9uYWwoKSBASW5qZWN0KFJFQ0FQVENIQV9MQU5HVUFHRSkgbGFuZ3VhZ2U/OiBzdHJpbmcsXG4gICAgQE9wdGlvbmFsKCkgQEluamVjdChSRUNBUFRDSEFfQkFTRV9VUkwpIGJhc2VVcmw/OiBzdHJpbmcsXG4gICAgQE9wdGlvbmFsKCkgQEluamVjdChSRUNBUFRDSEFfTk9OQ0UpIG5vbmNlPzogc3RyaW5nLFxuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoUkVDQVBUQ0hBX1YzX1NJVEVfS0VZKSB2M1NpdGVLZXk/OiBzdHJpbmcsXG4gICkge1xuICAgIHRoaXMubGFuZ3VhZ2UgPSBsYW5ndWFnZTtcbiAgICB0aGlzLmJhc2VVcmwgPSBiYXNlVXJsO1xuICAgIHRoaXMubm9uY2UgPSBub25jZTtcbiAgICB0aGlzLnYzU2l0ZUtleSA9IHYzU2l0ZUtleTtcbiAgICB0aGlzLmluaXQoKTtcbiAgICB0aGlzLnJlYWR5ID0gaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSA/IFJlY2FwdGNoYUxvYWRlclNlcnZpY2UucmVhZHkuYXNPYnNlcnZhYmxlKCkgOiBvZigpO1xuICB9XG5cbiAgLyoqIEBpbnRlcm5hbCAqL1xuICBwcml2YXRlIGluaXQoKSB7XG4gICAgaWYgKFJlY2FwdGNoYUxvYWRlclNlcnZpY2UucmVhZHkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKGlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCkpIHtcbiAgICAgIGNvbnN0IHN1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFJlQ2FwdGNoYVYyLlJlQ2FwdGNoYT4obnVsbCk7XG4gICAgICBSZWNhcHRjaGFMb2FkZXJTZXJ2aWNlLnJlYWR5ID0gc3ViamVjdDtcbiAgICAgIGNvbnN0IGxhbmdQYXJhbSA9IHRoaXMubGFuZ3VhZ2UgPyBcIiZobD1cIiArIHRoaXMubGFuZ3VhZ2UgOiBcIlwiO1xuXG4gICAgICBjb25zdCByZW5kZXJNb2RlID0gdGhpcy52M1NpdGVLZXkgfHwgXCJleHBsaWNpdFwiO1xuICAgICAgbG9hZGVyLmxvYWRTY3JpcHQocmVuZGVyTW9kZSwgKGdyZWNhcHRjaGEpID0+IHN1YmplY3QubmV4dChncmVjYXB0Y2hhKSwgbGFuZ1BhcmFtLCB0aGlzLmJhc2VVcmwsIHRoaXMubm9uY2UpO1xuICAgIH1cbiAgfVxufVxuIl19