ng-recaptcha-2 14.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,28 @@
1
+ function loadScript(renderMode, onBeforeLoad, onLoaded, { url, lang, nonce } = {}) {
2
+ window.ng2recaptchaloaded = () => {
3
+ onLoaded(grecaptcha);
4
+ };
5
+ const script = document.createElement("script");
6
+ script.innerHTML = "";
7
+ const { url: baseUrl, nonce: onBeforeLoadNonce } = onBeforeLoad(new URL(url || "https://www.google.com/recaptcha/api.js"));
8
+ baseUrl.searchParams.set("render", renderMode === "explicit" ? renderMode : renderMode.key);
9
+ baseUrl.searchParams.set("onload", "ng2recaptchaloaded");
10
+ baseUrl.searchParams.set("trustedtypes", "true");
11
+ if (lang) {
12
+ baseUrl.searchParams.set("hl", lang);
13
+ }
14
+ script.src = baseUrl.href;
15
+ const nonceValue = onBeforeLoadNonce || nonce;
16
+ if (nonceValue) {
17
+ script.setAttribute("nonce", nonceValue);
18
+ }
19
+ script.async = true;
20
+ script.defer = true;
21
+ document.head.appendChild(script);
22
+ }
23
+ function newLoadScript({ v3SiteKey, onBeforeLoad, onLoaded, }) {
24
+ const renderMode = v3SiteKey ? { key: v3SiteKey } : "explicit";
25
+ loader.loadScript(renderMode, onBeforeLoad, onLoaded);
26
+ }
27
+ export const loader = { loadScript, newLoadScript };
28
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9hZC1zY3JpcHQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1yZWNhcHRjaGEvc3JjL2xpYi9sb2FkLXNjcmlwdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFVQSxTQUFTLFVBQVUsQ0FDakIsVUFBc0IsRUFDdEIsWUFBd0QsRUFDeEQsUUFBcUQsRUFDckQsRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLEtBQUssS0FBc0QsRUFBRTtJQUUxRSxNQUFNLENBQUMsa0JBQWtCLEdBQUcsR0FBRyxFQUFFO1FBQy9CLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUN2QixDQUFDLENBQUM7SUFDRixNQUFNLE1BQU0sR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ2hELE1BQU0sQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFDO0lBRXRCLE1BQU0sRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxpQkFBaUIsRUFBRSxHQUFHLFlBQVksQ0FDN0QsSUFBSSxHQUFHLENBQUMsR0FBRyxJQUFJLHlDQUF5QyxDQUFDLENBQzFELENBQUM7SUFDRixPQUFPLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsVUFBVSxLQUFLLFVBQVUsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDNUYsT0FBTyxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLG9CQUFvQixDQUFDLENBQUM7SUFDekQsT0FBTyxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsY0FBYyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ2pELElBQUksSUFBSSxFQUFFLENBQUM7UUFDVCxPQUFPLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUVELE1BQU0sQ0FBQyxHQUFHLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQztJQUUxQixNQUFNLFVBQVUsR0FBRyxpQkFBaUIsSUFBSSxLQUFLLENBQUM7SUFFOUMsSUFBSSxVQUFVLEVBQUUsQ0FBQztRQUNmLE1BQU0sQ0FBQyxZQUFZLENBQUMsT0FBTyxFQUFFLFVBQVUsQ0FBQyxDQUFDO0lBQzNDLENBQUM7SUFDRCxNQUFNLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztJQUNwQixNQUFNLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztJQUNwQixRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUNwQyxDQUFDO0FBRUQsU0FBUyxhQUFhLENBQUMsRUFDckIsU0FBUyxFQUNULFlBQVksRUFDWixRQUFRLEdBSVQ7SUFDQyxNQUFNLFVBQVUsR0FBZSxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUM7SUFFM0UsTUFBTSxDQUFDLFVBQVUsQ0FBQyxVQUFVLEVBQUUsWUFBWSxFQUFFLFFBQVEsQ0FBQyxDQUFDO0FBQ3hELENBQUM7QUFFRCxNQUFNLENBQUMsTUFBTSxNQUFNLEdBQUcsRUFBRSxVQUFVLEVBQUUsYUFBYSxFQUFFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBSZWNhcHRjaGFMb2FkZXJPcHRpb25zIH0gZnJvbSBcIi4vdG9rZW5zXCI7XG5cbmRlY2xhcmUgZ2xvYmFsIHtcbiAgaW50ZXJmYWNlIFdpbmRvdyB7XG4gICAgbmcycmVjYXB0Y2hhbG9hZGVkPygpOiB2b2lkO1xuICB9XG59XG5cbmV4cG9ydCB0eXBlIFJlbmRlck1vZGUgPSBcImV4cGxpY2l0XCIgfCB7IGtleTogc3RyaW5nIH07XG5cbmZ1bmN0aW9uIGxvYWRTY3JpcHQoXG4gIHJlbmRlck1vZGU6IFJlbmRlck1vZGUsXG4gIG9uQmVmb3JlTG9hZDogKHVybDogVVJMKSA9PiB7IHVybDogVVJMOyBub25jZT86IHN0cmluZyB9LFxuICBvbkxvYWRlZDogKGdyZWNhcHRjaGE6IFJlQ2FwdGNoYVYyLlJlQ2FwdGNoYSkgPT4gdm9pZCxcbiAgeyB1cmwsIGxhbmcsIG5vbmNlIH06IHsgdXJsPzogc3RyaW5nOyBsYW5nPzogc3RyaW5nOyBub25jZT86IHN0cmluZyB9ID0ge30sXG4pOiB2b2lkIHtcbiAgd2luZG93Lm5nMnJlY2FwdGNoYWxvYWRlZCA9ICgpID0+IHtcbiAgICBvbkxvYWRlZChncmVjYXB0Y2hhKTtcbiAgfTtcbiAgY29uc3Qgc2NyaXB0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcInNjcmlwdFwiKTtcbiAgc2NyaXB0LmlubmVySFRNTCA9IFwiXCI7XG5cbiAgY29uc3QgeyB1cmw6IGJhc2VVcmwsIG5vbmNlOiBvbkJlZm9yZUxvYWROb25jZSB9ID0gb25CZWZvcmVMb2FkKFxuICAgIG5ldyBVUkwodXJsIHx8IFwiaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9yZWNhcHRjaGEvYXBpLmpzXCIpLFxuICApO1xuICBiYXNlVXJsLnNlYXJjaFBhcmFtcy5zZXQoXCJyZW5kZXJcIiwgcmVuZGVyTW9kZSA9PT0gXCJleHBsaWNpdFwiID8gcmVuZGVyTW9kZSA6IHJlbmRlck1vZGUua2V5KTtcbiAgYmFzZVVybC5zZWFyY2hQYXJhbXMuc2V0KFwib25sb2FkXCIsIFwibmcycmVjYXB0Y2hhbG9hZGVkXCIpO1xuICBiYXNlVXJsLnNlYXJjaFBhcmFtcy5zZXQoXCJ0cnVzdGVkdHlwZXNcIiwgXCJ0cnVlXCIpO1xuICBpZiAobGFuZykge1xuICAgIGJhc2VVcmwuc2VhcmNoUGFyYW1zLnNldChcImhsXCIsIGxhbmcpO1xuICB9XG5cbiAgc2NyaXB0LnNyYyA9IGJhc2VVcmwuaHJlZjtcblxuICBjb25zdCBub25jZVZhbHVlID0gb25CZWZvcmVMb2FkTm9uY2UgfHwgbm9uY2U7XG5cbiAgaWYgKG5vbmNlVmFsdWUpIHtcbiAgICBzY3JpcHQuc2V0QXR0cmlidXRlKFwibm9uY2VcIiwgbm9uY2VWYWx1ZSk7XG4gIH1cbiAgc2NyaXB0LmFzeW5jID0gdHJ1ZTtcbiAgc2NyaXB0LmRlZmVyID0gdHJ1ZTtcbiAgZG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZChzY3JpcHQpO1xufVxuXG5mdW5jdGlvbiBuZXdMb2FkU2NyaXB0KHtcbiAgdjNTaXRlS2V5LFxuICBvbkJlZm9yZUxvYWQsXG4gIG9uTG9hZGVkLFxufTogeyB2M1NpdGVLZXk6IHN0cmluZyB8IHVuZGVmaW5lZDsgb25Mb2FkZWQocmVjYXB0Y2hhOiBSZUNhcHRjaGFWMi5SZUNhcHRjaGEpOiB2b2lkIH0gJiBQaWNrPFxuICBSZXF1aXJlZDxSZWNhcHRjaGFMb2FkZXJPcHRpb25zPixcbiAgXCJvbkJlZm9yZUxvYWRcIlxuPikge1xuICBjb25zdCByZW5kZXJNb2RlOiBSZW5kZXJNb2RlID0gdjNTaXRlS2V5ID8geyBrZXk6IHYzU2l0ZUtleSB9IDogXCJleHBsaWNpdFwiO1xuXG4gIGxvYWRlci5sb2FkU2NyaXB0KHJlbmRlck1vZGUsIG9uQmVmb3JlTG9hZCwgb25Mb2FkZWQpO1xufVxuXG5leHBvcnQgY29uc3QgbG9hZGVyID0geyBsb2FkU2NyaXB0LCBuZXdMb2FkU2NyaXB0IH07XG4iXX0=
@@ -0,0 +1,16 @@
1
+ import { NgModule } from "@angular/core";
2
+ import { RecaptchaComponent } from "./recaptcha.component";
3
+ import * as i0 from "@angular/core";
4
+ export class RecaptchaCommonModule {
5
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: RecaptchaCommonModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
6
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.0.1", ngImport: i0, type: RecaptchaCommonModule, declarations: [RecaptchaComponent], exports: [RecaptchaComponent] }); }
7
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: RecaptchaCommonModule }); }
8
+ }
9
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: RecaptchaCommonModule, decorators: [{
10
+ type: NgModule,
11
+ args: [{
12
+ declarations: [RecaptchaComponent],
13
+ exports: [RecaptchaComponent],
14
+ }]
15
+ }] });
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVjYXB0Y2hhLWNvbW1vbi5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1yZWNhcHRjaGEvc3JjL2xpYi9yZWNhcHRjaGEtY29tbW9uLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXpDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDOztBQU0zRCxNQUFNLE9BQU8scUJBQXFCOzhHQUFyQixxQkFBcUI7K0dBQXJCLHFCQUFxQixpQkFIakIsa0JBQWtCLGFBQ3ZCLGtCQUFrQjsrR0FFakIscUJBQXFCOzsyRkFBckIscUJBQXFCO2tCQUpqQyxRQUFRO21CQUFDO29CQUNSLFlBQVksRUFBRSxDQUFDLGtCQUFrQixDQUFDO29CQUNsQyxPQUFPLEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQztpQkFDOUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5cbmltcG9ydCB7IFJlY2FwdGNoYUNvbXBvbmVudCB9IGZyb20gXCIuL3JlY2FwdGNoYS5jb21wb25lbnRcIjtcblxuQE5nTW9kdWxlKHtcbiAgZGVjbGFyYXRpb25zOiBbUmVjYXB0Y2hhQ29tcG9uZW50XSxcbiAgZXhwb3J0czogW1JlY2FwdGNoYUNvbXBvbmVudF0sXG59KVxuZXhwb3J0IGNsYXNzIFJlY2FwdGNoYUNvbW1vbk1vZHVsZSB7fVxuIl19
@@ -0,0 +1,19 @@
1
+ import { NgModule } from "@angular/core";
2
+ import { FormsModule } from "@angular/forms";
3
+ import { RecaptchaCommonModule } from "./recaptcha-common.module";
4
+ import { RecaptchaValueAccessorDirective } from "./recaptcha-value-accessor.directive";
5
+ import * as i0 from "@angular/core";
6
+ export class RecaptchaFormsModule {
7
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: RecaptchaFormsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
8
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.0.1", ngImport: i0, type: RecaptchaFormsModule, declarations: [RecaptchaValueAccessorDirective], imports: [FormsModule, RecaptchaCommonModule], exports: [RecaptchaValueAccessorDirective] }); }
9
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: RecaptchaFormsModule, imports: [FormsModule, RecaptchaCommonModule] }); }
10
+ }
11
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: RecaptchaFormsModule, decorators: [{
12
+ type: NgModule,
13
+ args: [{
14
+ declarations: [RecaptchaValueAccessorDirective],
15
+ exports: [RecaptchaValueAccessorDirective],
16
+ imports: [FormsModule, RecaptchaCommonModule],
17
+ }]
18
+ }] });
19
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVjYXB0Y2hhLWZvcm1zLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL25nLXJlY2FwdGNoYS9zcmMvbGliL3JlY2FwdGNoYS1mb3Jtcy5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFN0MsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDbEUsT0FBTyxFQUFFLCtCQUErQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7O0FBT3ZGLE1BQU0sT0FBTyxvQkFBb0I7OEdBQXBCLG9CQUFvQjsrR0FBcEIsb0JBQW9CLGlCQUpoQiwrQkFBK0IsYUFFcEMsV0FBVyxFQUFFLHFCQUFxQixhQURsQywrQkFBK0I7K0dBRzlCLG9CQUFvQixZQUZyQixXQUFXLEVBQUUscUJBQXFCOzsyRkFFakMsb0JBQW9CO2tCQUxoQyxRQUFRO21CQUFDO29CQUNSLFlBQVksRUFBRSxDQUFDLCtCQUErQixDQUFDO29CQUMvQyxPQUFPLEVBQUUsQ0FBQywrQkFBK0IsQ0FBQztvQkFDMUMsT0FBTyxFQUFFLENBQUMsV0FBVyxFQUFFLHFCQUFxQixDQUFDO2lCQUM5QyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XG5cbmltcG9ydCB7IFJlY2FwdGNoYUNvbW1vbk1vZHVsZSB9IGZyb20gXCIuL3JlY2FwdGNoYS1jb21tb24ubW9kdWxlXCI7XG5pbXBvcnQgeyBSZWNhcHRjaGFWYWx1ZUFjY2Vzc29yRGlyZWN0aXZlIH0gZnJvbSBcIi4vcmVjYXB0Y2hhLXZhbHVlLWFjY2Vzc29yLmRpcmVjdGl2ZVwiO1xuXG5ATmdNb2R1bGUoe1xuICBkZWNsYXJhdGlvbnM6IFtSZWNhcHRjaGFWYWx1ZUFjY2Vzc29yRGlyZWN0aXZlXSxcbiAgZXhwb3J0czogW1JlY2FwdGNoYVZhbHVlQWNjZXNzb3JEaXJlY3RpdmVdLFxuICBpbXBvcnRzOiBbRm9ybXNNb2R1bGUsIFJlY2FwdGNoYUNvbW1vbk1vZHVsZV0sXG59KVxuZXhwb3J0IGNsYXNzIFJlY2FwdGNoYUZvcm1zTW9kdWxlIHt9XG4iXX0=
@@ -0,0 +1,104 @@
1
+ import { isPlatformBrowser } from "@angular/common";
2
+ import { Inject, Injectable, Optional, PLATFORM_ID } from "@angular/core";
3
+ import { BehaviorSubject, of } from "rxjs";
4
+ import { filter } from "rxjs/operators";
5
+ import { loader } from "./load-script";
6
+ import { RECAPTCHA_LOADER_OPTIONS, RECAPTCHA_BASE_URL, RECAPTCHA_LANGUAGE, RECAPTCHA_NONCE, RECAPTCHA_V3_SITE_KEY, } from "./tokens";
7
+ import * as i0 from "@angular/core";
8
+ function toNonNullObservable(subject) {
9
+ return subject.asObservable().pipe(filter((value) => value !== null));
10
+ }
11
+ export class RecaptchaLoaderService {
12
+ /**
13
+ * @internal
14
+ * @nocollapse
15
+ */
16
+ static { this.ready = null; }
17
+ constructor(
18
+ // eslint-disable-next-line @typescript-eslint/ban-types
19
+ platformId,
20
+ // eslint-disable-next-line deprecation/deprecation
21
+ language,
22
+ // eslint-disable-next-line deprecation/deprecation
23
+ baseUrl,
24
+ // eslint-disable-next-line deprecation/deprecation
25
+ nonce, v3SiteKey, options) {
26
+ this.platformId = platformId;
27
+ this.language = language;
28
+ this.baseUrl = baseUrl;
29
+ this.nonce = nonce;
30
+ this.v3SiteKey = v3SiteKey;
31
+ this.options = options;
32
+ const subject = this.init();
33
+ this.ready = subject ? toNonNullObservable(subject) : of();
34
+ }
35
+ /** @internal */
36
+ init() {
37
+ if (RecaptchaLoaderService.ready) {
38
+ return RecaptchaLoaderService.ready;
39
+ }
40
+ if (!isPlatformBrowser(this.platformId)) {
41
+ return undefined;
42
+ }
43
+ const subject = new BehaviorSubject(null);
44
+ RecaptchaLoaderService.ready = subject;
45
+ loader.newLoadScript({
46
+ v3SiteKey: this.v3SiteKey,
47
+ onBeforeLoad: (url) => {
48
+ if (this.options?.onBeforeLoad) {
49
+ return this.options.onBeforeLoad(url);
50
+ }
51
+ const newUrl = new URL(this.baseUrl ?? url);
52
+ if (this.language) {
53
+ newUrl.searchParams.set("hl", this.language);
54
+ }
55
+ return {
56
+ url: newUrl,
57
+ nonce: this.nonce,
58
+ };
59
+ },
60
+ onLoaded: (recaptcha) => {
61
+ let value = recaptcha;
62
+ if (this.options?.onLoaded) {
63
+ value = this.options.onLoaded(recaptcha);
64
+ }
65
+ subject.next(value);
66
+ },
67
+ });
68
+ return subject;
69
+ }
70
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.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 }, { token: RECAPTCHA_LOADER_OPTIONS, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }
71
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: RecaptchaLoaderService }); }
72
+ }
73
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: RecaptchaLoaderService, decorators: [{
74
+ type: Injectable
75
+ }], ctorParameters: () => [{ type: Object, decorators: [{
76
+ type: Inject,
77
+ args: [PLATFORM_ID]
78
+ }] }, { type: undefined, decorators: [{
79
+ type: Optional
80
+ }, {
81
+ type: Inject,
82
+ args: [RECAPTCHA_LANGUAGE]
83
+ }] }, { type: undefined, decorators: [{
84
+ type: Optional
85
+ }, {
86
+ type: Inject,
87
+ args: [RECAPTCHA_BASE_URL]
88
+ }] }, { type: undefined, decorators: [{
89
+ type: Optional
90
+ }, {
91
+ type: Inject,
92
+ args: [RECAPTCHA_NONCE]
93
+ }] }, { type: undefined, decorators: [{
94
+ type: Optional
95
+ }, {
96
+ type: Inject,
97
+ args: [RECAPTCHA_V3_SITE_KEY]
98
+ }] }, { type: undefined, decorators: [{
99
+ type: Optional
100
+ }, {
101
+ type: Inject,
102
+ args: [RECAPTCHA_LOADER_OPTIONS]
103
+ }] }] });
104
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVjYXB0Y2hhLWxvYWRlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctcmVjYXB0Y2hhL3NyYy9saWIvcmVjYXB0Y2hhLWxvYWRlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUUsT0FBTyxFQUFFLGVBQWUsRUFBYyxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdkQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXhDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkMsT0FBTyxFQUNMLHdCQUF3QixFQUN4QixrQkFBa0IsRUFDbEIsa0JBQWtCLEVBQ2xCLGVBQWUsRUFDZixxQkFBcUIsR0FFdEIsTUFBTSxVQUFVLENBQUM7O0FBRWxCLFNBQVMsbUJBQW1CLENBQUksT0FBa0M7SUFDaEUsT0FBTyxPQUFPLENBQUMsWUFBWSxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBSSxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsS0FBSyxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUM7QUFDM0UsQ0FBQztBQUdELE1BQU0sT0FBTyxzQkFBc0I7SUFDakM7OztPQUdHO2FBQ1ksVUFBSyxHQUF5RCxJQUFJLEFBQTdELENBQThEO0lBZWxGO0lBQ0Usd0RBQXdEO0lBQ2xCLFVBQWtCO0lBQ3hELG1EQUFtRDtJQUNYLFFBQWlCO0lBQ3pELG1EQUFtRDtJQUNYLE9BQWdCO0lBQ3hELG1EQUFtRDtJQUNkLEtBQWMsRUFDUixTQUFrQixFQUNmLE9BQWdDO1FBUnhDLGVBQVUsR0FBVixVQUFVLENBQVE7UUFVeEQsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7UUFDekIsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7UUFDdkIsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDbkIsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUM7UUFDM0IsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7UUFDdkIsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQzVCLElBQUksQ0FBQyxLQUFLLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUM7SUFDN0QsQ0FBQztJQUVELGdCQUFnQjtJQUNSLElBQUk7UUFDVixJQUFJLHNCQUFzQixDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ2pDLE9BQU8sc0JBQXNCLENBQUMsS0FBSyxDQUFDO1FBQ3RDLENBQUM7UUFFRCxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7WUFDeEMsT0FBTyxTQUFTLENBQUM7UUFDbkIsQ0FBQztRQUVELE1BQU0sT0FBTyxHQUFHLElBQUksZUFBZSxDQUErQixJQUFJLENBQUMsQ0FBQztRQUN4RSxzQkFBc0IsQ0FBQyxLQUFLLEdBQUcsT0FBTyxDQUFDO1FBRXZDLE1BQU0sQ0FBQyxhQUFhLENBQUM7WUFDbkIsU0FBUyxFQUFFLElBQUksQ0FBQyxTQUFTO1lBQ3pCLFlBQVksRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFO2dCQUNwQixJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUUsWUFBWSxFQUFFLENBQUM7b0JBQy9CLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQ3hDLENBQUM7Z0JBRUQsTUFBTSxNQUFNLEdBQUcsSUFBSSxHQUFHLENBQUMsSUFBSSxDQUFDLE9BQU8sSUFBSSxHQUFHLENBQUMsQ0FBQztnQkFFNUMsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7b0JBQ2xCLE1BQU0sQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBQy9DLENBQUM7Z0JBRUQsT0FBTztvQkFDTCxHQUFHLEVBQUUsTUFBTTtvQkFDWCxLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUs7aUJBQ2xCLENBQUM7WUFDSixDQUFDO1lBQ0QsUUFBUSxFQUFFLENBQUMsU0FBUyxFQUFFLEVBQUU7Z0JBQ3RCLElBQUksS0FBSyxHQUFHLFNBQVMsQ0FBQztnQkFDdEIsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFLFFBQVEsRUFBRSxDQUFDO29CQUMzQixLQUFLLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUM7Z0JBQzNDLENBQUM7Z0JBRUQsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUN0QixDQUFDO1NBQ0YsQ0FBQyxDQUFDO1FBRUgsT0FBTyxPQUFPLENBQUM7SUFDakIsQ0FBQzs4R0FuRlUsc0JBQXNCLGtCQXNCdkIsV0FBVyxhQUVDLGtCQUFrQiw2QkFFbEIsa0JBQWtCLDZCQUVsQixlQUFlLDZCQUNmLHFCQUFxQiw2QkFDckIsd0JBQXdCO2tIQTlCbkMsc0JBQXNCOzsyRkFBdEIsc0JBQXNCO2tCQURsQyxVQUFVOzswQkF1Qk4sTUFBTTsyQkFBQyxXQUFXOzswQkFFbEIsUUFBUTs7MEJBQUksTUFBTTsyQkFBQyxrQkFBa0I7OzBCQUVyQyxRQUFROzswQkFBSSxNQUFNOzJCQUFDLGtCQUFrQjs7MEJBRXJDLFFBQVE7OzBCQUFJLE1BQU07MkJBQUMsZUFBZTs7MEJBQ2xDLFFBQVE7OzBCQUFJLE1BQU07MkJBQUMscUJBQXFCOzswQkFDeEMsUUFBUTs7MEJBQUksTUFBTTsyQkFBQyx3QkFBd0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpc1BsYXRmb3JtQnJvd3NlciB9IGZyb20gXCJAYW5ndWxhci9jb21tb25cIjtcbmltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSwgT3B0aW9uYWwsIFBMQVRGT1JNX0lEIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSwgb2YgfSBmcm9tIFwicnhqc1wiO1xuaW1wb3J0IHsgZmlsdGVyIH0gZnJvbSBcInJ4anMvb3BlcmF0b3JzXCI7XG5cbmltcG9ydCB7IGxvYWRlciB9IGZyb20gXCIuL2xvYWQtc2NyaXB0XCI7XG5pbXBvcnQge1xuICBSRUNBUFRDSEFfTE9BREVSX09QVElPTlMsXG4gIFJFQ0FQVENIQV9CQVNFX1VSTCxcbiAgUkVDQVBUQ0hBX0xBTkdVQUdFLFxuICBSRUNBUFRDSEFfTk9OQ0UsXG4gIFJFQ0FQVENIQV9WM19TSVRFX0tFWSxcbiAgUmVjYXB0Y2hhTG9hZGVyT3B0aW9ucyxcbn0gZnJvbSBcIi4vdG9rZW5zXCI7XG5cbmZ1bmN0aW9uIHRvTm9uTnVsbE9ic2VydmFibGU8VD4oc3ViamVjdDogQmVoYXZpb3JTdWJqZWN0PFQgfCBudWxsPik6IE9ic2VydmFibGU8VD4ge1xuICByZXR1cm4gc3ViamVjdC5hc09ic2VydmFibGUoKS5waXBlKGZpbHRlcjxUPigodmFsdWUpID0+IHZhbHVlICE9PSBudWxsKSk7XG59XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBSZWNhcHRjaGFMb2FkZXJTZXJ2aWNlIHtcbiAgLyoqXG4gICAqIEBpbnRlcm5hbFxuICAgKiBAbm9jb2xsYXBzZVxuICAgKi9cbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZHk6IEJlaGF2aW9yU3ViamVjdDxSZUNhcHRjaGFWMi5SZUNhcHRjaGEgfCBudWxsPiB8IG51bGwgPSBudWxsO1xuXG4gIHB1YmxpYyByZWFkeTogT2JzZXJ2YWJsZTxSZUNhcHRjaGFWMi5SZUNhcHRjaGE+O1xuXG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgcHJpdmF0ZSBsYW5ndWFnZT86IHN0cmluZztcbiAgLyoqIEBpbnRlcm5hbCAqL1xuICBwcml2YXRlIGJhc2VVcmw/OiBzdHJpbmc7XG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgcHJpdmF0ZSBub25jZT86IHN0cmluZztcbiAgLyoqIEBpbnRlcm5hbCAqL1xuICBwcml2YXRlIHYzU2l0ZUtleT86IHN0cmluZztcbiAgLyoqIEBpbnRlcm5hbCAqL1xuICBwcml2YXRlIG9wdGlvbnM/OiBSZWNhcHRjaGFMb2FkZXJPcHRpb25zO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvYmFuLXR5cGVzXG4gICAgQEluamVjdChQTEFURk9STV9JRCkgcHJpdmF0ZSByZWFkb25seSBwbGF0Zm9ybUlkOiBPYmplY3QsXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGRlcHJlY2F0aW9uL2RlcHJlY2F0aW9uXG4gICAgQE9wdGlvbmFsKCkgQEluamVjdChSRUNBUFRDSEFfTEFOR1VBR0UpIGxhbmd1YWdlPzogc3RyaW5nLFxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBkZXByZWNhdGlvbi9kZXByZWNhdGlvblxuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoUkVDQVBUQ0hBX0JBU0VfVVJMKSBiYXNlVXJsPzogc3RyaW5nLFxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBkZXByZWNhdGlvbi9kZXByZWNhdGlvblxuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoUkVDQVBUQ0hBX05PTkNFKSBub25jZT86IHN0cmluZyxcbiAgICBAT3B0aW9uYWwoKSBASW5qZWN0KFJFQ0FQVENIQV9WM19TSVRFX0tFWSkgdjNTaXRlS2V5Pzogc3RyaW5nLFxuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoUkVDQVBUQ0hBX0xPQURFUl9PUFRJT05TKSBvcHRpb25zPzogUmVjYXB0Y2hhTG9hZGVyT3B0aW9ucyxcbiAgKSB7XG4gICAgdGhpcy5sYW5ndWFnZSA9IGxhbmd1YWdlO1xuICAgIHRoaXMuYmFzZVVybCA9IGJhc2VVcmw7XG4gICAgdGhpcy5ub25jZSA9IG5vbmNlO1xuICAgIHRoaXMudjNTaXRlS2V5ID0gdjNTaXRlS2V5O1xuICAgIHRoaXMub3B0aW9ucyA9IG9wdGlvbnM7XG4gICAgY29uc3Qgc3ViamVjdCA9IHRoaXMuaW5pdCgpO1xuICAgIHRoaXMucmVhZHkgPSBzdWJqZWN0ID8gdG9Ob25OdWxsT2JzZXJ2YWJsZShzdWJqZWN0KSA6IG9mKCk7XG4gIH1cblxuICAvKiogQGludGVybmFsICovXG4gIHByaXZhdGUgaW5pdCgpOiBCZWhhdmlvclN1YmplY3Q8UmVDYXB0Y2hhVjIuUmVDYXB0Y2hhIHwgbnVsbD4gfCB1bmRlZmluZWQge1xuICAgIGlmIChSZWNhcHRjaGFMb2FkZXJTZXJ2aWNlLnJlYWR5KSB7XG4gICAgICByZXR1cm4gUmVjYXB0Y2hhTG9hZGVyU2VydmljZS5yZWFkeTtcbiAgICB9XG5cbiAgICBpZiAoIWlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCkpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgY29uc3Qgc3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8UmVDYXB0Y2hhVjIuUmVDYXB0Y2hhIHwgbnVsbD4obnVsbCk7XG4gICAgUmVjYXB0Y2hhTG9hZGVyU2VydmljZS5yZWFkeSA9IHN1YmplY3Q7XG5cbiAgICBsb2FkZXIubmV3TG9hZFNjcmlwdCh7XG4gICAgICB2M1NpdGVLZXk6IHRoaXMudjNTaXRlS2V5LFxuICAgICAgb25CZWZvcmVMb2FkOiAodXJsKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnM/Lm9uQmVmb3JlTG9hZCkge1xuICAgICAgICAgIHJldHVybiB0aGlzLm9wdGlvbnMub25CZWZvcmVMb2FkKHVybCk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBuZXdVcmwgPSBuZXcgVVJMKHRoaXMuYmFzZVVybCA/PyB1cmwpO1xuXG4gICAgICAgIGlmICh0aGlzLmxhbmd1YWdlKSB7XG4gICAgICAgICAgbmV3VXJsLnNlYXJjaFBhcmFtcy5zZXQoXCJobFwiLCB0aGlzLmxhbmd1YWdlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgdXJsOiBuZXdVcmwsXG4gICAgICAgICAgbm9uY2U6IHRoaXMubm9uY2UsXG4gICAgICAgIH07XG4gICAgICB9LFxuICAgICAgb25Mb2FkZWQ6IChyZWNhcHRjaGEpID0+IHtcbiAgICAgICAgbGV0IHZhbHVlID0gcmVjYXB0Y2hhO1xuICAgICAgICBpZiAodGhpcy5vcHRpb25zPy5vbkxvYWRlZCkge1xuICAgICAgICAgIHZhbHVlID0gdGhpcy5vcHRpb25zLm9uTG9hZGVkKHJlY2FwdGNoYSk7XG4gICAgICAgIH1cblxuICAgICAgICBzdWJqZWN0Lm5leHQodmFsdWUpO1xuICAgICAgfSxcbiAgICB9KTtcblxuICAgIHJldHVybiBzdWJqZWN0O1xuICB9XG59XG4iXX0=
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVjYXB0Y2hhLXNldHRpbmdzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctcmVjYXB0Y2hhL3NyYy9saWIvcmVjYXB0Y2hhLXNldHRpbmdzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgaW50ZXJmYWNlIFJlY2FwdGNoYVNldHRpbmdzIHtcbiAgc2l0ZUtleT86IHN0cmluZztcbiAgdGhlbWU/OiBSZUNhcHRjaGFWMi5UaGVtZTtcbiAgdHlwZT86IFJlQ2FwdGNoYVYyLlR5cGU7XG4gIHNpemU/OiBSZUNhcHRjaGFWMi5TaXplO1xuICBiYWRnZT86IFJlQ2FwdGNoYVYyLkJhZGdlO1xufVxuIl19
@@ -0,0 +1,16 @@
1
+ import { NgModule } from "@angular/core";
2
+ import { ReCaptchaV3Service } from "./recaptcha-v3.service";
3
+ import { RecaptchaLoaderService } from "./recaptcha-loader.service";
4
+ import * as i0 from "@angular/core";
5
+ export class RecaptchaV3Module {
6
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: RecaptchaV3Module, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
7
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.0.1", ngImport: i0, type: RecaptchaV3Module }); }
8
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: RecaptchaV3Module, providers: [ReCaptchaV3Service, RecaptchaLoaderService] }); }
9
+ }
10
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: RecaptchaV3Module, decorators: [{
11
+ type: NgModule,
12
+ args: [{
13
+ providers: [ReCaptchaV3Service, RecaptchaLoaderService],
14
+ }]
15
+ }] });
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVjYXB0Y2hhLXYzLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL25nLXJlY2FwdGNoYS9zcmMvbGliL3JlY2FwdGNoYS12My5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV6QyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUM1RCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7QUFLcEUsTUFBTSxPQUFPLGlCQUFpQjs4R0FBakIsaUJBQWlCOytHQUFqQixpQkFBaUI7K0dBQWpCLGlCQUFpQixhQUZqQixDQUFDLGtCQUFrQixFQUFFLHNCQUFzQixDQUFDOzsyRkFFNUMsaUJBQWlCO2tCQUg3QixRQUFRO21CQUFDO29CQUNSLFNBQVMsRUFBRSxDQUFDLGtCQUFrQixFQUFFLHNCQUFzQixDQUFDO2lCQUN4RCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcblxuaW1wb3J0IHsgUmVDYXB0Y2hhVjNTZXJ2aWNlIH0gZnJvbSBcIi4vcmVjYXB0Y2hhLXYzLnNlcnZpY2VcIjtcbmltcG9ydCB7IFJlY2FwdGNoYUxvYWRlclNlcnZpY2UgfSBmcm9tIFwiLi9yZWNhcHRjaGEtbG9hZGVyLnNlcnZpY2VcIjtcblxuQE5nTW9kdWxlKHtcbiAgcHJvdmlkZXJzOiBbUmVDYXB0Y2hhVjNTZXJ2aWNlLCBSZWNhcHRjaGFMb2FkZXJTZXJ2aWNlXSxcbn0pXG5leHBvcnQgY2xhc3MgUmVjYXB0Y2hhVjNNb2R1bGUge31cbiJdfQ==
@@ -0,0 +1,106 @@
1
+ import { Inject, Injectable } from "@angular/core";
2
+ import { Subject } from "rxjs";
3
+ import { RECAPTCHA_V3_SITE_KEY } from "./tokens";
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "./recaptcha-loader.service";
6
+ /**
7
+ * The main service for working with reCAPTCHA v3 APIs.
8
+ *
9
+ * Use the `execute` method for executing a single action, and
10
+ * `onExecute` observable for listening to all actions at once.
11
+ */
12
+ export class ReCaptchaV3Service {
13
+ constructor(zone, recaptchaLoader, siteKey) {
14
+ this.recaptchaLoader = recaptchaLoader;
15
+ this.zone = zone;
16
+ this.siteKey = siteKey;
17
+ this.init();
18
+ }
19
+ get onExecute() {
20
+ if (!this.onExecuteSubject) {
21
+ this.onExecuteSubject = new Subject();
22
+ this.onExecuteObservable = this.onExecuteSubject.asObservable();
23
+ }
24
+ return this.onExecuteObservable;
25
+ }
26
+ get onExecuteError() {
27
+ if (!this.onExecuteErrorSubject) {
28
+ this.onExecuteErrorSubject = new Subject();
29
+ this.onExecuteErrorObservable = this.onExecuteErrorSubject.asObservable();
30
+ }
31
+ return this.onExecuteErrorObservable;
32
+ }
33
+ /**
34
+ * Executes the provided `action` with reCAPTCHA v3 API.
35
+ * Use the emitted token value for verification purposes on the backend.
36
+ *
37
+ * For more information about reCAPTCHA v3 actions and tokens refer to the official documentation at
38
+ * https://developers.google.com/recaptcha/docs/v3.
39
+ *
40
+ * @param {string} action the action to execute
41
+ * @returns {Observable<string>} an `Observable` that will emit the reCAPTCHA v3 string `token` value whenever ready.
42
+ * The returned `Observable` completes immediately after emitting a value.
43
+ */
44
+ execute(action) {
45
+ const subject = new Subject();
46
+ if (!this.grecaptcha) {
47
+ if (!this.actionBacklog) {
48
+ this.actionBacklog = [];
49
+ }
50
+ this.actionBacklog.push([action, subject]);
51
+ }
52
+ else {
53
+ this.executeActionWithSubject(action, subject);
54
+ }
55
+ return subject.asObservable();
56
+ }
57
+ /** @internal */
58
+ executeActionWithSubject(action, subject) {
59
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
60
+ const onError = (error) => {
61
+ this.zone.run(() => {
62
+ subject.error(error);
63
+ if (this.onExecuteErrorSubject) {
64
+ // We don't know any better at this point, unfortunately, so have to resort to `any`
65
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
66
+ this.onExecuteErrorSubject.next({ action, error });
67
+ }
68
+ });
69
+ };
70
+ this.zone.runOutsideAngular(() => {
71
+ try {
72
+ this.grecaptcha.execute(this.siteKey, { action }).then((token) => {
73
+ this.zone.run(() => {
74
+ subject.next(token);
75
+ subject.complete();
76
+ if (this.onExecuteSubject) {
77
+ this.onExecuteSubject.next({ action, token });
78
+ }
79
+ });
80
+ }, onError);
81
+ }
82
+ catch (e) {
83
+ onError(e);
84
+ }
85
+ });
86
+ }
87
+ /** @internal */
88
+ init() {
89
+ this.recaptchaLoader.ready.subscribe((value) => {
90
+ this.grecaptcha = value;
91
+ if (this.actionBacklog && this.actionBacklog.length > 0) {
92
+ this.actionBacklog.forEach(([action, subject]) => this.executeActionWithSubject(action, subject));
93
+ this.actionBacklog = undefined;
94
+ }
95
+ });
96
+ }
97
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: ReCaptchaV3Service, deps: [{ token: i0.NgZone }, { token: i1.RecaptchaLoaderService }, { token: RECAPTCHA_V3_SITE_KEY }], target: i0.ɵɵFactoryTarget.Injectable }); }
98
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: ReCaptchaV3Service }); }
99
+ }
100
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: ReCaptchaV3Service, decorators: [{
101
+ type: Injectable
102
+ }], ctorParameters: () => [{ type: i0.NgZone }, { type: i1.RecaptchaLoaderService }, { type: undefined, decorators: [{
103
+ type: Inject,
104
+ args: [RECAPTCHA_V3_SITE_KEY]
105
+ }] }] });
106
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVjYXB0Y2hhLXYzLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1yZWNhcHRjaGEvc3JjL2xpYi9yZWNhcHRjaGEtdjMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUMzRCxPQUFPLEVBQWMsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRTNDLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLFVBQVUsQ0FBQzs7O0FBNEJqRDs7Ozs7R0FLRztBQUVILE1BQU0sT0FBTyxrQkFBa0I7SUFtQjdCLFlBQ0UsSUFBWSxFQUNMLGVBQXVDLEVBQ2YsT0FBZTtRQUR2QyxvQkFBZSxHQUFmLGVBQWUsQ0FBd0I7UUFHOUMsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7UUFDakIsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7UUFFdkIsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ2QsQ0FBQztJQUVELElBQVcsU0FBUztRQUNsQixJQUFJLENBQUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFDM0IsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksT0FBTyxFQUFpQixDQUFDO1lBQ3JELElBQUksQ0FBQyxtQkFBbUIsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDbEUsQ0FBQztRQUVELE9BQU8sSUFBSSxDQUFDLG1CQUFtQixDQUFDO0lBQ2xDLENBQUM7SUFFRCxJQUFXLGNBQWM7UUFDdkIsSUFBSSxDQUFDLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO1lBQ2hDLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxJQUFJLE9BQU8sRUFBc0IsQ0FBQztZQUMvRCxJQUFJLENBQUMsd0JBQXdCLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixDQUFD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QUM7WUFDakMsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs4R0FsSFUsa0JBQWtCLDhFQXNCbkIscUJBQXFCO2tIQXRCcEIsa0JBQWtCOzsyRkFBbEIsa0JBQWtCO2tCQUQ5QixVQUFVOzswQkF1Qk4sTUFBTTsyQkFBQyxxQkFBcUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUsIE5nWm9uZSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJqZWN0IH0gZnJvbSBcInJ4anNcIjtcblxuaW1wb3J0IHsgUkVDQVBUQ0hBX1YzX1NJVEVfS0VZIH0gZnJvbSBcIi4vdG9rZW5zXCI7XG5pbXBvcnQgeyBSZWNhcHRjaGFMb2FkZXJTZXJ2aWNlIH0gZnJvbSBcIi4vcmVjYXB0Y2hhLWxvYWRlci5zZXJ2aWNlXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgT25FeGVjdXRlRGF0YSB7XG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgYWN0aW9uIHRoYXQgaGFzIGJlZW4gZXhlY3V0ZWQuXG4gICAqL1xuICBhY3Rpb246IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSB0b2tlbiB0aGF0IHJlQ0FQVENIQSB2MyBwcm92aWRlZCB3aGVuIGV4ZWN1dGluZyB0aGUgYWN0aW9uLlxuICAgKi9cbiAgdG9rZW46IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBPbkV4ZWN1dGVFcnJvckRhdGEge1xuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIGFjdGlvbiB0aGF0IGhhcyBiZWVuIGV4ZWN1dGVkLlxuICAgKi9cbiAgYWN0aW9uOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgZXJyb3Igd2hpY2ggd2FzIGVuY291bnRlcmVkXG4gICAqL1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICBlcnJvcjogYW55O1xufVxuXG50eXBlIEFjdGlvbkJhY2tsb2dFbnRyeSA9IFtzdHJpbmcsIFN1YmplY3Q8c3RyaW5nPl07XG5cbi8qKlxuICogVGhlIG1haW4gc2VydmljZSBmb3Igd29ya2luZyB3aXRoIHJlQ0FQVENIQSB2MyBBUElzLlxuICpcbiAqIFVzZSB0aGUgYGV4ZWN1dGVgIG1ldGhvZCBmb3IgZXhlY3V0aW5nIGEgc2luZ2xlIGFjdGlvbiwgYW5kXG4gKiBgb25FeGVjdXRlYCBvYnNlcnZhYmxlIGZvciBsaXN0ZW5pbmcgdG8gYWxsIGFjdGlvbnMgYXQgb25jZS5cbiAqL1xuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFJlQ2FwdGNoYVYzU2VydmljZSB7XG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgcHJpdmF0ZSByZWFkb25seSBzaXRlS2V5OiBzdHJpbmc7XG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgcHJpdmF0ZSByZWFkb25seSB6b25lOiBOZ1pvbmU7XG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgcHJpdmF0ZSBhY3Rpb25CYWNrbG9nOiBBY3Rpb25CYWNrbG9nRW50cnlbXSB8IHVuZGVmaW5lZDtcbiAgLyoqIEBpbnRlcm5hbCAqL1xuICBwcml2YXRlIGdyZWNhcHRjaGE6IFJlQ2FwdGNoYVYyLlJlQ2FwdGNoYTtcblxuICAvKiogQGludGVybmFsICovXG4gIHByaXZhdGUgb25FeGVjdXRlU3ViamVjdDogU3ViamVjdDxPbkV4ZWN1dGVEYXRhPjtcbiAgLyoqIEBpbnRlcm5hbCAqL1xuICBwcml2YXRlIG9uRXhlY3V0ZUVycm9yU3ViamVjdDogU3ViamVjdDxPbkV4ZWN1dGVFcnJvckRhdGE+O1xuICAvKiogQGludGVybmFsICovXG4gIHByaXZhdGUgb25FeGVjdXRlT2JzZXJ2YWJsZTogT2JzZXJ2YWJsZTxPbkV4ZWN1dGVEYXRhPjtcbiAgLyoqIEBpbnRlcm5hbCAqL1xuICBwcml2YXRlIG9uRXhlY3V0ZUVycm9yT2JzZXJ2YWJsZTogT2JzZXJ2YWJsZTxPbkV4ZWN1dGVFcnJvckRhdGE+O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHpvbmU6IE5nWm9uZSxcbiAgICBwdWJsaWMgcmVjYXB0Y2hhTG9hZGVyOiBSZWNhcHRjaGFMb2FkZXJTZXJ2aWNlLFxuICAgIEBJbmplY3QoUkVDQVBUQ0hBX1YzX1NJVEVfS0VZKSBzaXRlS2V5OiBzdHJpbmcsXG4gICkge1xuICAgIHRoaXMuem9uZSA9IHpvbmU7XG4gICAgdGhpcy5zaXRlS2V5ID0gc2l0ZUtleTtcblxuICAgIHRoaXMuaW5pdCgpO1xuICB9XG5cbiAgcHVibGljIGdldCBvbkV4ZWN1dGUoKTogT2JzZXJ2YWJsZTxPbkV4ZWN1dGVEYXRhPiB7XG4gICAgaWYgKCF0aGlzLm9uRXhlY3V0ZVN1YmplY3QpIHtcbiAgICAgIHRoaXMub25FeGVjdXRlU3ViamVjdCA9IG5ldyBTdWJqZWN0PE9uRXhlY3V0ZURhdGE+KCk7XG4gICAgICB0aGlzLm9uRXhlY3V0ZU9ic2VydmFibGUgPSB0aGlzLm9uRXhlY3V0ZVN1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMub25FeGVjdXRlT2JzZXJ2YWJsZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgb25FeGVjdXRlRXJyb3IoKTogT2JzZXJ2YWJsZTxPbkV4ZWN1dGVFcnJvckRhdGE+IHtcbiAgICBpZiAoIXRoaXMub25FeGVjdXRlRXJyb3JTdWJqZWN0KSB7XG4gICAgICB0aGlzLm9uRXhlY3V0ZUVycm9yU3ViamVjdCA9IG5ldyBTdWJqZWN0PE9uRXhlY3V0ZUVycm9yRGF0YT4oKTtcbiAgICAgIHRoaXMub25FeGVjdXRlRXJyb3JPYnNlcnZhYmxlID0gdGhpcy5vbkV4ZWN1dGVFcnJvclN1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMub25FeGVjdXRlRXJyb3JPYnNlcnZhYmxlO1xuICB9XG5cbiAgLyoqXG4gICAqIEV4ZWN1dGVzIHRoZSBwcm92aWRlZCBgYWN0aW9uYCB3aXRoIHJlQ0FQVENIQSB2MyBBUEkuXG4gICAqIFVzZSB0aGUgZW1pdHRlZCB0b2tlbiB2YWx1ZSBmb3IgdmVyaWZpY2F0aW9uIHB1cnBvc2VzIG9uIHRoZSBiYWNrZW5kLlxuICAgKlxuICAgKiBGb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCByZUNBUFRDSEEgdjMgYWN0aW9ucyBhbmQgdG9rZW5zIHJlZmVyIHRvIHRoZSBvZmZpY2lhbCBkb2N1bWVudGF0aW9uIGF0XG4gICAqIGh0dHBzOi8vZGV2ZWxvcGVycy5nb29nbGUuY29tL3JlY2FwdGNoYS9kb2NzL3YzLlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gYWN0aW9uIHRoZSBhY3Rpb24gdG8gZXhlY3V0ZVxuICAgKiBAcmV0dXJucyB7T2JzZXJ2YWJsZTxzdHJpbmc+fSBhbiBgT2JzZXJ2YWJsZWAgdGhhdCB3aWxsIGVtaXQgdGhlIHJlQ0FQVENIQSB2MyBzdHJpbmcgYHRva2VuYCB2YWx1ZSB3aGVuZXZlciByZWFkeS5cbiAgICogVGhlIHJldHVybmVkIGBPYnNlcnZhYmxlYCBjb21wbGV0ZXMgaW1tZWRpYXRlbHkgYWZ0ZXIgZW1pdHRpbmcgYSB2YWx1ZS5cbiAgICovXG4gIHB1YmxpYyBleGVjdXRlKGFjdGlvbjogc3RyaW5nKTogT2JzZXJ2YWJsZTxzdHJpbmc+IHtcbiAgICBjb25zdCBzdWJqZWN0ID0gbmV3IFN1YmplY3Q8c3RyaW5nPigpO1xuICAgIGlmICghdGhpcy5ncmVjYXB0Y2hhKSB7XG4gICAgICBpZiAoIXRoaXMuYWN0aW9uQmFja2xvZykge1xuICAgICAgICB0aGlzLmFjdGlvbkJhY2tsb2cgPSBbXTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5hY3Rpb25CYWNrbG9nLnB1c2goW2FjdGlvbiwgc3ViamVjdF0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmV4ZWN1dGVBY3Rpb25XaXRoU3ViamVjdChhY3Rpb24sIHN1YmplY3QpO1xuICAgIH1cblxuICAgIHJldHVybiBzdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgLyoqIEBpbnRlcm5hbCAqL1xuICBwcml2YXRlIGV4ZWN1dGVBY3Rpb25XaXRoU3ViamVjdChhY3Rpb246IHN0cmluZywgc3ViamVjdDogU3ViamVjdDxzdHJpbmc+KTogdm9pZCB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICBjb25zdCBvbkVycm9yID0gKGVycm9yOiBhbnkpID0+IHtcbiAgICAgIHRoaXMuem9uZS5ydW4oKCkgPT4ge1xuICAgICAgICBzdWJqZWN0LmVycm9yKGVycm9yKTtcbiAgICAgICAgaWYgKHRoaXMub25FeGVjdXRlRXJyb3JTdWJqZWN0KSB7XG4gICAgICAgICAgLy8gV2UgZG9uJ3Qga25vdyBhbnkgYmV0dGVyIGF0IHRoaXMgcG9pbnQsIHVuZm9ydHVuYXRlbHksIHNvIGhhdmUgdG8gcmVzb3J0IHRvIGBhbnlgXG4gICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnNhZmUtYXNzaWdubWVudFxuICAgICAgICAgIHRoaXMub25FeGVjdXRlRXJyb3JTdWJqZWN0Lm5leHQoeyBhY3Rpb24sIGVycm9yIH0pO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9O1xuXG4gICAgdGhpcy56b25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHRoaXMuZ3JlY2FwdGNoYS5leGVjdXRlKHRoaXMuc2l0ZUtleSwgeyBhY3Rpb24gfSkudGhlbigodG9rZW46IHN0cmluZykgPT4ge1xuICAgICAgICAgIHRoaXMuem9uZS5ydW4oKCkgPT4ge1xuICAgICAgICAgICAgc3ViamVjdC5uZXh0KHRva2VuKTtcbiAgICAgICAgICAgIHN1YmplY3QuY29tcGxldGUoKTtcbiAgICAgICAgICAgIGlmICh0aGlzLm9uRXhlY3V0ZVN1YmplY3QpIHtcbiAgICAgICAgICAgICAgdGhpcy5vbkV4ZWN1dGVTdWJqZWN0Lm5leHQoeyBhY3Rpb24sIHRva2VuIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgICB9LCBvbkVycm9yKTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgb25FcnJvcihlKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgcHJpdmF0ZSBpbml0KCkge1xuICAgIHRoaXMucmVjYXB0Y2hhTG9hZGVyLnJlYWR5LnN1YnNjcmliZSgodmFsdWUpID0+IHtcbiAgICAgIHRoaXMuZ3JlY2FwdGNoYSA9IHZhbHVlO1xuICAgICAgaWYgKHRoaXMuYWN0aW9uQmFja2xvZyAmJiB0aGlzLmFjdGlvbkJhY2tsb2cubGVuZ3RoID4gMCkge1xuICAgICAgICB0aGlzLmFjdGlvbkJhY2tsb2cuZm9yRWFjaCgoW2FjdGlvbiwgc3ViamVjdF0pID0+IHRoaXMuZXhlY3V0ZUFjdGlvbldpdGhTdWJqZWN0KGFjdGlvbiwgc3ViamVjdCkpO1xuICAgICAgICB0aGlzLmFjdGlvbkJhY2tsb2cgPSB1bmRlZmluZWQ7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,68 @@
1
+ import { Directive, forwardRef, HostListener } from "@angular/core";
2
+ import { NG_VALUE_ACCESSOR } from "@angular/forms";
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "./recaptcha.component";
5
+ export class RecaptchaValueAccessorDirective {
6
+ constructor(host) {
7
+ this.host = host;
8
+ this.requiresControllerReset = false;
9
+ }
10
+ writeValue(value) {
11
+ if (!value) {
12
+ this.host.reset();
13
+ }
14
+ else {
15
+ // In this case, it is most likely that a form controller has requested to write a specific value into the component.
16
+ // This isn't really a supported case - reCAPTCHA values are single-use, and, in a sense, readonly.
17
+ // What this means is that the form controller has recaptcha control state of X, while reCAPTCHA itself can't "restore"
18
+ // to that state. In order to make form controller aware of this discrepancy, and to fix the said misalignment,
19
+ // we'll be telling the controller to "reset" the value back to null.
20
+ if (this.host.__unsafe_widgetValue !== value && Boolean(this.host.__unsafe_widgetValue) === false) {
21
+ this.requiresControllerReset = true;
22
+ }
23
+ }
24
+ }
25
+ registerOnChange(fn) {
26
+ this.onChange = fn;
27
+ if (this.requiresControllerReset) {
28
+ this.requiresControllerReset = false;
29
+ this.onChange(null);
30
+ }
31
+ }
32
+ registerOnTouched(fn) {
33
+ this.onTouched = fn;
34
+ }
35
+ onResolve($event) {
36
+ if (this.onChange) {
37
+ this.onChange($event);
38
+ }
39
+ if (this.onTouched) {
40
+ this.onTouched();
41
+ }
42
+ }
43
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: RecaptchaValueAccessorDirective, deps: [{ token: i1.RecaptchaComponent }], target: i0.ɵɵFactoryTarget.Directive }); }
44
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.1", type: RecaptchaValueAccessorDirective, selector: "re-captcha[formControlName],re-captcha[formControl],re-captcha[ngModel]", host: { listeners: { "resolved": "onResolve($event)" } }, providers: [
45
+ {
46
+ multi: true,
47
+ provide: NG_VALUE_ACCESSOR,
48
+ useExisting: forwardRef(() => RecaptchaValueAccessorDirective),
49
+ },
50
+ ], ngImport: i0 }); }
51
+ }
52
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: RecaptchaValueAccessorDirective, decorators: [{
53
+ type: Directive,
54
+ args: [{
55
+ providers: [
56
+ {
57
+ multi: true,
58
+ provide: NG_VALUE_ACCESSOR,
59
+ useExisting: forwardRef(() => RecaptchaValueAccessorDirective),
60
+ },
61
+ ],
62
+ selector: "re-captcha[formControlName],re-captcha[formControl],re-captcha[ngModel]",
63
+ }]
64
+ }], ctorParameters: () => [{ type: i1.RecaptchaComponent }], propDecorators: { onResolve: [{
65
+ type: HostListener,
66
+ args: ["resolved", ["$event"]]
67
+ }] } });
68
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVjYXB0Y2hhLXZhbHVlLWFjY2Vzc29yLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL25nLXJlY2FwdGNoYS9zcmMvbGliL3JlY2FwdGNoYS12YWx1ZS1hY2Nlc3Nvci5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3BFLE9BQU8sRUFBd0IsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7O0FBY3pFLE1BQU0sT0FBTywrQkFBK0I7SUFTMUMsWUFBb0IsSUFBd0I7UUFBeEIsU0FBSSxHQUFKLElBQUksQ0FBb0I7UUFGcEMsNEJBQXVCLEdBQUcsS0FBSyxDQUFDO0lBRU8sQ0FBQztJQUV6QyxVQUFVLENBQUMsS0FBYTtRQUM3QixJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDWCxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ3BCLENBQUM7YUFBTSxDQUFDO1lBQ04scUhBQXFIO1lBQ3JILG1HQUFtRztZQUNuRyx1SEFBdUg7WUFDdkgsK0dBQStHO1lBQy9HLHFFQUFxRTtZQUNyRSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsb0JBQW9CLEtBQUssS0FBSyxJQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLEtBQUssS0FBSyxFQUFFLENBQUM7Z0JBQ2xHLElBQUksQ0FBQyx1QkFBdUIsR0FBRyxJQUFJLENBQUM7WUFDdEMsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0lBRU0sZ0JBQWdCLENBQUMsRUFBMkI7UUFDakQsSUFBSSxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUM7UUFDbkIsSUFBSSxJQUFJLENBQUMsdUJBQXVCLEVBQUUsQ0FBQztZQUNqQyxJQUFJLENBQUMsdUJBQXVCLEdBQUcsS0FBSyxDQUFDO1lBQ3JDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDdEIsQ0FBQztJQUNILENBQUM7SUFDTSxpQkFBaUIsQ0FBQyxFQUFjO1FBQ3JDLElBQUksQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFDO0lBQ3RCLENBQUM7SUFFNEMsU0FBUyxDQUFDLE1BQWM7UUFDbkUsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDbEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN4QixDQUFDO1FBQ0QsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDbkIsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQ25CLENBQUM7SUFDSCxDQUFDOzhHQTVDVSwrQkFBK0I7a0dBQS9CLCtCQUErQiw0SkFUL0I7WUFDVDtnQkFDRSxLQUFLLEVBQUUsSUFBSTtnQkFDWCxPQUFPLEVBQUUsaUJBQWlCO2dCQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLCtCQUErQixDQUFDO2FBQy9EO1NBQ0Y7OzJGQUdVLCtCQUErQjtrQkFWM0MsU0FBUzttQkFBQztvQkFDVCxTQUFTLEVBQUU7d0JBQ1Q7NEJBQ0UsS0FBSyxFQUFFLElBQUk7NEJBQ1gsT0FBTyxFQUFFLGlCQUFpQjs0QkFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsZ0NBQWdDLENBQUM7eUJBQy9EO3FCQUNGO29CQUNELFFBQVEsRUFBRSx5RUFBeUU7aUJBQ3BGO3VGQXNDOEMsU0FBUztzQkFBckQsWUFBWTt1QkFBQyxVQUFVLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIGZvcndhcmRSZWYsIEhvc3RMaXN0ZW5lciB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcblxuaW1wb3J0IHsgUmVjYXB0Y2hhQ29tcG9uZW50IH0gZnJvbSBcIi4vcmVjYXB0Y2hhLmNvbXBvbmVudFwiO1xuXG5ARGlyZWN0aXZlKHtcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgbXVsdGk6IHRydWUsXG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFJlY2FwdGNoYVZhbHVlQWNjZXNzb3JEaXJlY3RpdmUpLFxuICAgIH0sXG4gIF0sXG4gIHNlbGVjdG9yOiBcInJlLWNhcHRjaGFbZm9ybUNvbnRyb2xOYW1lXSxyZS1jYXB0Y2hhW2Zvcm1Db250cm9sXSxyZS1jYXB0Y2hhW25nTW9kZWxdXCIsXG59KVxuZXhwb3J0IGNsYXNzIFJlY2FwdGNoYVZhbHVlQWNjZXNzb3JEaXJlY3RpdmUgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciB7XG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgcHJpdmF0ZSBvbkNoYW5nZTogKHZhbHVlOiBzdHJpbmcgfCBudWxsKSA9PiB2b2lkO1xuXG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgcHJpdmF0ZSBvblRvdWNoZWQ6ICgpID0+IHZvaWQ7XG5cbiAgcHJpdmF0ZSByZXF1aXJlc0NvbnRyb2xsZXJSZXNldCA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgaG9zdDogUmVjYXB0Y2hhQ29tcG9uZW50KSB7fVxuXG4gIHB1YmxpYyB3cml0ZVZhbHVlKHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAoIXZhbHVlKSB7XG4gICAgICB0aGlzLmhvc3QucmVzZXQoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gSW4gdGhpcyBjYXNlLCBpdCBpcyBtb3N0IGxpa2VseSB0aGF0IGEgZm9ybSBjb250cm9sbGVyIGhhcyByZXF1ZXN0ZWQgdG8gd3JpdGUgYSBzcGVjaWZpYyB2YWx1ZSBpbnRvIHRoZSBjb21wb25lbnQuXG4gICAgICAvLyBUaGlzIGlzbid0IHJlYWxseSBhIHN1cHBvcnRlZCBjYXNlIC0gcmVDQVBUQ0hBIHZhbHVlcyBhcmUgc2luZ2xlLXVzZSwgYW5kLCBpbiBhIHNlbnNlLCByZWFkb25seS5cbiAgICAgIC8vIFdoYXQgdGhpcyBtZWFucyBpcyB0aGF0IHRoZSBmb3JtIGNvbnRyb2xsZXIgaGFzIHJlY2FwdGNoYSBjb250cm9sIHN0YXRlIG9mIFgsIHdoaWxlIHJlQ0FQVENIQSBpdHNlbGYgY2FuJ3QgXCJyZXN0b3JlXCJcbiAgICAgIC8vIHRvIHRoYXQgc3RhdGUuIEluIG9yZGVyIHRvIG1ha2UgZm9ybSBjb250cm9sbGVyIGF3YXJlIG9mIHRoaXMgZGlzY3JlcGFuY3ksIGFuZCB0byBmaXggdGhlIHNhaWQgbWlzYWxpZ25tZW50LFxuICAgICAgLy8gd2UnbGwgYmUgdGVsbGluZyB0aGUgY29udHJvbGxlciB0byBcInJlc2V0XCIgdGhlIHZhbHVlIGJhY2sgdG8gbnVsbC5cbiAgICAgIGlmICh0aGlzLmhvc3QuX191bnNhZmVfd2lkZ2V0VmFsdWUgIT09IHZhbHVlICYmIEJvb2xlYW4odGhpcy5ob3N0Ll9fdW5zYWZlX3dpZGdldFZhbHVlKSA9PT0gZmFsc2UpIHtcbiAgICAgICAgdGhpcy5yZXF1aXJlc0NvbnRyb2xsZXJSZXNldCA9IHRydWU7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHJlZ2lzdGVyT25DaGFuZ2UoZm46ICh2YWx1ZTogc3RyaW5nKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgdGhpcy5vbkNoYW5nZSA9IGZuO1xuICAgIGlmICh0aGlzLnJlcXVpcmVzQ29udHJvbGxlclJlc2V0KSB7XG4gICAgICB0aGlzLnJlcXVpcmVzQ29udHJvbGxlclJlc2V0ID0gZmFsc2U7XG4gICAgICB0aGlzLm9uQ2hhbmdlKG51bGwpO1xuICAgIH1cbiAgfVxuICBwdWJsaWMgcmVnaXN0ZXJPblRvdWNoZWQoZm46ICgpID0+IHZvaWQpOiB2b2lkIHtcbiAgICB0aGlzLm9uVG91Y2hlZCA9IGZuO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcihcInJlc29sdmVkXCIsIFtcIiRldmVudFwiXSkgcHVibGljIG9uUmVzb2x2ZSgkZXZlbnQ6IHN0cmluZyk6IHZvaWQge1xuICAgIGlmICh0aGlzLm9uQ2hhbmdlKSB7XG4gICAgICB0aGlzLm9uQ2hhbmdlKCRldmVudCk7XG4gICAgfVxuICAgIGlmICh0aGlzLm9uVG91Y2hlZCkge1xuICAgICAgdGhpcy5vblRvdWNoZWQoKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,171 @@
1
+ import { Component, EventEmitter, HostBinding, Inject, Input, Optional, Output, } from "@angular/core";
2
+ import { RECAPTCHA_SETTINGS } from "./tokens";
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "./recaptcha-loader.service";
5
+ let nextId = 0;
6
+ export class RecaptchaComponent {
7
+ constructor(elementRef, loader, zone, settings) {
8
+ this.elementRef = elementRef;
9
+ this.loader = loader;
10
+ this.zone = zone;
11
+ this.id = `ngrecaptcha-${nextId++}`;
12
+ this.errorMode = "default";
13
+ this.resolved = new EventEmitter();
14
+ /**
15
+ * @deprecated `(error) output will be removed in the next major version. Use (errored) instead
16
+ */
17
+ // eslint-disable-next-line @angular-eslint/no-output-native
18
+ this.error = new EventEmitter();
19
+ this.errored = new EventEmitter();
20
+ if (settings) {
21
+ this.siteKey = settings.siteKey;
22
+ this.theme = settings.theme;
23
+ this.type = settings.type;
24
+ this.size = settings.size;
25
+ this.badge = settings.badge;
26
+ }
27
+ }
28
+ ngAfterViewInit() {
29
+ this.subscription = this.loader.ready.subscribe((grecaptcha) => {
30
+ if (grecaptcha != null && grecaptcha.render instanceof Function) {
31
+ this.grecaptcha = grecaptcha;
32
+ this.renderRecaptcha();
33
+ }
34
+ });
35
+ }
36
+ ngOnDestroy() {
37
+ // reset the captcha to ensure it does not leave anything behind
38
+ // after the component is no longer needed
39
+ this.grecaptchaReset();
40
+ if (this.subscription) {
41
+ this.subscription.unsubscribe();
42
+ }
43
+ }
44
+ /**
45
+ * Executes the invisible recaptcha.
46
+ * Does nothing if component's size is not set to "invisible".
47
+ */
48
+ execute() {
49
+ if (this.size !== "invisible") {
50
+ return;
51
+ }
52
+ if (this.widget != null) {
53
+ void this.grecaptcha.execute(this.widget);
54
+ }
55
+ else {
56
+ // delay execution of recaptcha until it actually renders
57
+ this.executeRequested = true;
58
+ }
59
+ }
60
+ reset() {
61
+ if (this.widget != null) {
62
+ if (this.grecaptcha.getResponse(this.widget)) {
63
+ // Only emit an event in case if something would actually change.
64
+ // That way we do not trigger "touching" of the control if someone does a "reset"
65
+ // on a non-resolved captcha.
66
+ this.resolved.emit(null);
67
+ }
68
+ this.grecaptchaReset();
69
+ }
70
+ }
71
+ /**
72
+ * ⚠️ Warning! Use this property at your own risk!
73
+ *
74
+ * While this member is `public`, it is not a part of the component's public API.
75
+ * The semantic versioning guarantees _will not be honored_! Thus, you might find that this property behavior changes in incompatible ways in minor or even patch releases.
76
+ * You are **strongly advised** against using this property.
77
+ * Instead, use more idiomatic ways to get reCAPTCHA value, such as `resolved` EventEmitter, or form-bound methods (ngModel, formControl, and the likes).å
78
+ */
79
+ get __unsafe_widgetValue() {
80
+ return this.widget != null ? this.grecaptcha.getResponse(this.widget) : null;
81
+ }
82
+ /** @internal */
83
+ expired() {
84
+ this.resolved.emit(null);
85
+ }
86
+ /** @internal */
87
+ onError(args) {
88
+ // eslint-disable-next-line deprecation/deprecation
89
+ this.error.emit(args);
90
+ this.errored.emit(args);
91
+ }
92
+ /** @internal */
93
+ captchaResponseCallback(response) {
94
+ this.resolved.emit(response);
95
+ }
96
+ /** @internal */
97
+ grecaptchaReset() {
98
+ if (this.widget != null) {
99
+ this.zone.runOutsideAngular(() => this.grecaptcha.reset(this.widget));
100
+ }
101
+ }
102
+ /** @internal */
103
+ renderRecaptcha() {
104
+ // This `any` can be removed after @types/grecaptcha get updated
105
+ const renderOptions = {
106
+ badge: this.badge,
107
+ callback: (response) => {
108
+ this.zone.run(() => this.captchaResponseCallback(response));
109
+ },
110
+ "expired-callback": () => {
111
+ this.zone.run(() => this.expired());
112
+ },
113
+ sitekey: this.siteKey,
114
+ size: this.size,
115
+ tabindex: this.tabIndex,
116
+ theme: this.theme,
117
+ type: this.type,
118
+ };
119
+ if (this.errorMode === "handled") {
120
+ renderOptions["error-callback"] = (...args) => {
121
+ this.zone.run(() => this.onError(args));
122
+ };
123
+ }
124
+ this.widget = this.grecaptcha.render(this.elementRef.nativeElement, renderOptions);
125
+ if (this.executeRequested === true) {
126
+ this.executeRequested = false;
127
+ this.execute();
128
+ }
129
+ }
130
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: RecaptchaComponent, deps: [{ token: i0.ElementRef }, { token: i1.RecaptchaLoaderService }, { token: i0.NgZone }, { token: RECAPTCHA_SETTINGS, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
131
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.1", type: RecaptchaComponent, selector: "re-captcha", inputs: { id: "id", siteKey: "siteKey", theme: "theme", type: "type", size: "size", tabIndex: "tabIndex", badge: "badge", errorMode: "errorMode" }, outputs: { resolved: "resolved", error: "error", errored: "errored" }, host: { properties: { "attr.id": "this.id" } }, exportAs: ["reCaptcha"], ngImport: i0, template: ``, isInline: true }); }
132
+ }
133
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: RecaptchaComponent, decorators: [{
134
+ type: Component,
135
+ args: [{
136
+ exportAs: "reCaptcha",
137
+ selector: "re-captcha",
138
+ template: ``,
139
+ }]
140
+ }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i1.RecaptchaLoaderService }, { type: i0.NgZone }, { type: undefined, decorators: [{
141
+ type: Optional
142
+ }, {
143
+ type: Inject,
144
+ args: [RECAPTCHA_SETTINGS]
145
+ }] }], propDecorators: { id: [{
146
+ type: Input
147
+ }, {
148
+ type: HostBinding,
149
+ args: ["attr.id"]
150
+ }], siteKey: [{
151
+ type: Input
152
+ }], theme: [{
153
+ type: Input
154
+ }], type: [{
155
+ type: Input
156
+ }], size: [{
157
+ type: Input
158
+ }], tabIndex: [{
159
+ type: Input
160
+ }], badge: [{
161
+ type: Input
162
+ }], errorMode: [{
163
+ type: Input
164
+ }], resolved: [{
165
+ type: Output
166
+ }], error: [{
167
+ type: Output
168
+ }], errored: [{
169
+ type: Output
170
+ }] } });
171
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVjYXB0Y2hhLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL25nLXJlY2FwdGNoYS9zcmMvbGliL3JlY2FwdGNoYS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLFNBQVMsRUFFVCxZQUFZLEVBQ1osV0FBVyxFQUNYLE1BQU0sRUFDTixLQUFLLEVBR0wsUUFBUSxFQUNSLE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQUt2QixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxVQUFVLENBQUM7OztBQUU5QyxJQUFJLE1BQU0sR0FBRyxDQUFDLENBQUM7QUFXZixNQUFNLE9BQU8sa0JBQWtCO0lBOEI3QixZQUNVLFVBQW1DLEVBQ25DLE1BQThCLEVBQzlCLElBQVksRUFDb0IsUUFBNEI7UUFINUQsZUFBVSxHQUFWLFVBQVUsQ0FBeUI7UUFDbkMsV0FBTSxHQUFOLE1BQU0sQ0FBd0I7UUFDOUIsU0FBSSxHQUFKLElBQUksQ0FBUTtRQTlCZixPQUFFLEdBQUcsZUFBZSxNQUFNLEVBQUUsRUFBRSxDQUFDO1FBUXRCLGNBQVMsR0FBMEIsU0FBUyxDQUFDO1FBRTVDLGFBQVEsR0FBRyxJQUFJLFlBQVksRUFBaUIsQ0FBQztRQUM5RDs7V0FFRztRQUNILDREQUE0RDtRQUMzQyxVQUFLLEdBQUcsSUFBSSxZQUFZLEVBQTRCLENBQUM7UUFDckQsWUFBTyxHQUFHLElBQUksWUFBWSxFQUE0QixDQUFDO1FBaUJ0RSxJQUFJLFFBQVEsRUFBRSxDQUFDO1lBQ2IsSUFBSSxDQUFDLE9BQU8sR0FBRyxRQUFRLENBQUMsT0FBTyxDQUFDO1lBQ2hDLElBQUksQ0FBQyxLQUFLLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQztZQUM1QixJQUFJLENBQUMsSUFBSSxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUM7WUFDMUIsSUFBSSxDQUFDLElBQUksR0FBRyxRQUFRLENBQUMsSUFB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Z0IsR0FBRyxLQUFLLENBQUM7WUFDOUIsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ2pCLENBQUM7SUFDSCxDQUFDOzhHQS9KVSxrQkFBa0Isd0dBa0NQLGtCQUFrQjtrR0FsQzdCLGtCQUFrQixzVkFGbkIsRUFBRTs7MkZBRUQsa0JBQWtCO2tCQUw5QixTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxXQUFXO29CQUNyQixRQUFRLEVBQUUsWUFBWTtvQkFDdEIsUUFBUSxFQUFFLEVBQUU7aUJBQ2I7OzBCQW1DSSxRQUFROzswQkFBSSxNQUFNOzJCQUFDLGtCQUFrQjt5Q0EvQmpDLEVBQUU7c0JBRlIsS0FBSzs7c0JBQ0wsV0FBVzt1QkFBQyxTQUFTO2dCQUdOLE9BQU87c0JBQXRCLEtBQUs7Z0JBQ1UsS0FBSztzQkFBcEIsS0FBSztnQkFDVSxJQUFJO3NCQUFuQixLQUFLO2dCQUNVLElBQUk7c0JBQW5CLEtBQUs7Z0JBQ1UsUUFBUTtzQkFBdkIsS0FBSztnQkFDVSxLQUFLO3NCQUFwQixLQUFLO2dCQUNVLFNBQVM7c0JBQXhCLEtBQUs7Z0JBRVcsUUFBUTtzQkFBeEIsTUFBTTtnQkFLVSxLQUFLO3NCQUFyQixNQUFNO2dCQUNVLE9BQU87c0JBQXZCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSG9zdEJpbmRpbmcsXG4gIEluamVjdCxcbiAgSW5wdXQsXG4gIE5nWm9uZSxcbiAgT25EZXN0cm95LFxuICBPcHRpb25hbCxcbiAgT3V0cHV0LFxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSBcInJ4anNcIjtcblxuaW1wb3J0IHsgUmVjYXB0Y2hhTG9hZGVyU2VydmljZSB9IGZyb20gXCIuL3JlY2FwdGNoYS1sb2FkZXIuc2VydmljZVwiO1xuaW1wb3J0IHsgUmVjYXB0Y2hhU2V0dGluZ3MgfSBmcm9tIFwiLi9yZWNhcHRjaGEtc2V0dGluZ3NcIjtcbmltcG9ydCB7IFJFQ0FQVENIQV9TRVRUSU5HUyB9IGZyb20gXCIuL3Rva2Vuc1wiO1xuXG5sZXQgbmV4dElkID0gMDtcblxuZXhwb3J0IHR5cGUgTmV2ZXJVbmRlZmluZWQ8VD4gPSBUIGV4dGVuZHMgdW5kZWZpbmVkID8gbmV2ZXIgOiBUO1xuXG5leHBvcnQgdHlwZSBSZWNhcHRjaGFFcnJvclBhcmFtZXRlcnMgPSBQYXJhbWV0ZXJzPE5ldmVyVW5kZWZpbmVkPFJlQ2FwdGNoYVYyLlBhcmFtZXRlcnNbXCJlcnJvci1jYWxsYmFja1wiXT4+O1xuXG5AQ29tcG9uZW50KHtcbiAgZXhwb3J0QXM6IFwicmVDYXB0Y2hhXCIsXG4gIHNlbGVjdG9yOiBcInJlLWNhcHRjaGFcIixcbiAgdGVtcGxhdGU6IGBgLFxufSlcbmV4cG9ydCBjbGFzcyBSZWNhcHRjaGFDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xuICBASW5wdXQoKVxuICBASG9zdEJpbmRpbmcoXCJhdHRyLmlkXCIpXG4gIHB1YmxpYyBpZCA9IGBuZ3JlY2FwdGNoYS0ke25leHRJZCsrfWA7XG5cbiAgQElucHV0KCkgcHVibGljIHNpdGVLZXk/OiBzdHJpbmc7XG4gIEBJbnB1dCgpIHB1YmxpYyB0aGVtZT86IFJlQ2FwdGNoYVYyLlRoZW1lO1xuICBASW5wdXQoKSBwdWJsaWMgdHlwZT86IFJlQ2FwdGNoYVYyLlR5cGU7XG4gIEBJbnB1dCgpIHB1YmxpYyBzaXplPzogUmVDYXB0Y2hhVjIuU2l6ZTtcbiAgQElucHV0KCkgcHVibGljIHRhYkluZGV4PzogbnVtYmVyO1xuICBASW5wdXQoKSBwdWJsaWMgYmFkZ2U/OiBSZUNhcHRjaGFWMi5CYWRnZTtcbiAgQElucHV0KCkgcHVibGljIGVycm9yTW9kZTogXCJoYW5kbGVkXCIgfCBcImRlZmF1bHRcIiA9IFwiZGVmYXVsdFwiO1xuXG4gIEBPdXRwdXQoKSBwdWJsaWMgcmVzb2x2ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZyB8IG51bGw+KCk7XG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCBgKGVycm9yKSBvdXRwdXQgd2lsbCBiZSByZW1vdmVkIGluIHRoZSBuZXh0IG1ham9yIHZlcnNpb24uIFVzZSAoZXJyb3JlZCkgaW5zdGVhZFxuICAgKi9cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1vdXRwdXQtbmF0aXZlXG4gIEBPdXRwdXQoKSBwdWJsaWMgZXJyb3IgPSBuZXcgRXZlbnRFbWl0dGVyPFJlY2FwdGNoYUVycm9yUGFyYW1ldGVycz4oKTtcbiAgQE91dHB1dCgpIHB1YmxpYyBlcnJvcmVkID0gbmV3IEV2ZW50RW1pdHRlcjxSZWNhcHRjaGFFcnJvclBhcmFtZXRlcnM+KCk7XG5cbiAgLyoqIEBpbnRlcm5hbCAqL1xuICBwcml2YXRlIHN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuICAvKiogQGludGVybmFsICovXG4gIHByaXZhdGUgd2lkZ2V0OiBudW1iZXI7XG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgcHJpdmF0ZSBncmVjYXB0Y2hhOiBSZUNhcHRjaGFWMi5SZUNhcHRjaGE7XG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgcHJpdmF0ZSBleGVjdXRlUmVxdWVzdGVkOiBib29sZWFuO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgZWxlbWVudFJlZjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4sXG4gICAgcHJpdmF0ZSBsb2FkZXI6IFJlY2FwdGNoYUxvYWRlclNlcnZpY2UsXG4gICAgcHJpdmF0ZSB6b25lOiBOZ1pvbmUsXG4gICAgQE9wdGlvbmFsKCkgQEluamVjdChSRUNBUFRDSEFfU0VUVElOR1MpIHNldHRpbmdzPzogUmVjYXB0Y2hhU2V0dGluZ3MsXG4gICkge1xuICAgIGlmIChzZXR0aW5ncykge1xuICAgICAgdGhpcy5zaXRlS2V5ID0gc2V0dGluZ3Muc2l0ZUtleTtcbiAgICAgIHRoaXMudGhlbWUgPSBzZXR0aW5ncy50aGVtZTtcbiAgICAgIHRoaXMudHlwZSA9IHNldHRpbmdzLnR5cGU7XG4gICAgICB0aGlzLnNpemUgPSBzZXR0aW5ncy5zaXplO1xuICAgICAgdGhpcy5iYWRnZSA9IHNldHRpbmdzLmJhZGdlO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgdGhpcy5zdWJzY3JpcHRpb24gPSB0aGlzLmxvYWRlci5yZWFkeS5zdWJzY3JpYmUoKGdyZWNhcHRjaGE6IFJlQ2FwdGNoYVYyLlJlQ2FwdGNoYSkgPT4ge1xuICAgICAgaWYgKGdyZWNhcHRjaGEgIT0gbnVsbCAmJiBncmVjYXB0Y2hhLnJlbmRlciBpbnN0YW5jZW9mIEZ1bmN0aW9uKSB7XG4gICAgICAgIHRoaXMuZ3JlY2FwdGNoYSA9IGdyZWNhcHRjaGE7XG4gICAgICAgIHRoaXMucmVuZGVyUmVjYXB0Y2hhKCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgLy8gcmVzZXQgdGhlIGNhcHRjaGEgdG8gZW5zdXJlIGl0IGRvZXMgbm90IGxlYXZlIGFueXRoaW5nIGJlaGluZFxuICAgIC8vIGFmdGVyIHRoZSBjb21wb25lbnQgaXMgbm8gbG9uZ2VyIG5lZWRlZFxuICAgIHRoaXMuZ3JlY2FwdGNoYVJlc2V0KCk7XG4gICAgaWYgKHRoaXMuc3Vic2NyaXB0aW9uKSB7XG4gICAgICB0aGlzLnN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBFeGVjdXRlcyB0aGUgaW52aXNpYmxlIHJlY2FwdGNoYS5cbiAgICogRG9lcyBub3RoaW5nIGlmIGNvbXBvbmVudCdzIHNpemUgaXMgbm90IHNldCB0byBcImludmlzaWJsZVwiLlxuICAgKi9cbiAgcHVibGljIGV4ZWN1dGUoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc2l6ZSAhPT0gXCJpbnZpc2libGVcIikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh0aGlzLndpZGdldCAhPSBudWxsKSB7XG4gICAgICB2b2lkIHRoaXMuZ3JlY2FwdGNoYS5leGVjdXRlKHRoaXMud2lkZ2V0KTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gZGVsYXkgZXhlY3V0aW9uIG9mIHJlY2FwdGNoYSB1bnRpbCBpdCBhY3R1YWxseSByZW5kZXJzXG4gICAgICB0aGlzLmV4ZWN1dGVSZXF1ZXN0ZWQgPSB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyByZXNldCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy53aWRnZXQgIT0gbnVsbCkge1xuICAgICAgaWYgKHRoaXMuZ3JlY2FwdGNoYS5nZXRSZXNwb25zZSh0aGlzLndpZGdldCkpIHtcbiAgICAgICAgLy8gT25seSBlbWl0IGFuIGV2ZW50IGluIGNhc2UgaWYgc29tZXRoaW5nIHdvdWxkIGFjdHVhbGx5IGNoYW5nZS5cbiAgICAgICAgLy8gVGhhdCB3YXkgd2UgZG8gbm90IHRyaWdnZXIgXCJ0b3VjaGluZ1wiIG9mIHRoZSBjb250cm9sIGlmIHNvbWVvbmUgZG9lcyBhIFwicmVzZXRcIlxuICAgICAgICAvLyBvbiBhIG5vbi1yZXNvbHZlZCBjYXB0Y2hhLlxuICAgICAgICB0aGlzLnJlc29sdmVkLmVtaXQobnVsbCk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuZ3JlY2FwdGNoYVJlc2V0KCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIOKaoO+4jyBXYXJuaW5nISBVc2UgdGhpcyBwcm9wZXJ0eSBhdCB5b3VyIG93biByaXNrIVxuICAgKlxuICAgKiBXaGlsZSB0aGlzIG1lbWJlciBpcyBgcHVibGljYCwgaXQgaXMgbm90IGEgcGFydCBvZiB0aGUgY29tcG9uZW50J3MgcHVibGljIEFQSS5cbiAgICogVGhlIHNlbWFudGljIHZlcnNpb25pbmcgZ3VhcmFudGVlcyBfd2lsbCBub3QgYmUgaG9ub3JlZF8hIFRodXMsIHlvdSBtaWdodCBmaW5kIHRoYXQgdGhpcyBwcm9wZXJ0eSBiZWhhdmlvciBjaGFuZ2VzIGluIGluY29tcGF0aWJsZSB3YXlzIGluIG1pbm9yIG9yIGV2ZW4gcGF0Y2ggcmVsZWFzZXMuXG4gICAqIFlvdSBhcmUgKipzdHJvbmdseSBhZHZpc2VkKiogYWdhaW5zdCB1c2luZyB0aGlzIHByb3BlcnR5LlxuICAgKiBJbnN0ZWFkLCB1c2UgbW9yZSBpZGlvbWF0aWMgd2F5cyB0byBnZXQgcmVDQVBUQ0hBIHZhbHVlLCBzdWNoIGFzIGByZXNvbHZlZGAgRXZlbnRFbWl0dGVyLCBvciBmb3JtLWJvdW5kIG1ldGhvZHMgKG5nTW9kZWwsIGZvcm1Db250cm9sLCBhbmQgdGhlIGxpa2VzKS7DpVxuICAgKi9cbiAgcHVibGljIGdldCBfX3Vuc2FmZV93aWRnZXRWYWx1ZSgpOiBzdHJpbmcgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy53aWRnZXQgIT0gbnVsbCA/IHRoaXMuZ3JlY2FwdGNoYS5nZXRSZXNwb25zZSh0aGlzLndpZGdldCkgOiBudWxsO1xuICB9XG5cbiAgLyoqIEBpbnRlcm5hbCAqL1xuICBwcml2YXRlIGV4cGlyZWQoKSB7XG4gICAgdGhpcy5yZXNvbHZlZC5lbWl0KG51bGwpO1xuICB9XG5cbiAgLyoqIEBpbnRlcm5hbCAqL1xuICBwcml2YXRlIG9uRXJyb3IoYXJnczogUmVjYXB0Y2hhRXJyb3JQYXJhbWV0ZXJzKSB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGRlcHJlY2F0aW9uL2RlcHJlY2F0aW9uXG4gICAgdGhpcy5lcnJvci5lbWl0KGFyZ3MpO1xuICAgIHRoaXMuZXJyb3JlZC5lbWl0KGFyZ3MpO1xuICB9XG5cbiAgLyoqIEBpbnRlcm5hbCAqL1xuICBwcml2YXRlIGNhcHRjaGFSZXNwb25zZUNhbGxiYWNrKHJlc3BvbnNlOiBzdHJpbmcpIHtcbiAgICB0aGlzLnJlc29sdmVkLmVtaXQocmVzcG9uc2UpO1xuICB9XG5cbiAgLyoqIEBpbnRlcm5hbCAqL1xuICBwcml2YXRlIGdyZWNhcHRjaGFSZXNldCgpIHtcbiAgICBpZiAodGhpcy53aWRnZXQgIT0gbnVsbCkge1xuICAgICAgdGhpcy56b25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHRoaXMuZ3JlY2FwdGNoYS5yZXNldCh0aGlzLndpZGdldCkpO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgcHJpdmF0ZSByZW5kZXJSZWNhcHRjaGEoKSB7XG4gICAgLy8gVGhpcyBgYW55YCBjYW4gYmUgcmVtb3ZlZCBhZnRlciBAdHlwZXMvZ3JlY2FwdGNoYSBnZXQgdXBkYXRlZFxuICAgIGNvbnN0IHJlbmRlck9wdGlvbnM6IFJlQ2FwdGNoYVYyLlBhcmFtZXRlcnMgPSB7XG4gICAgICBiYWRnZTogdGhpcy5iYWRnZSxcbiAgICAgIGNhbGxiYWNrOiAocmVzcG9uc2U6IHN0cmluZykgPT4ge1xuICAgICAgICB0aGlzLnpvbmUucnVuKCgpID0+IHRoaXMuY2FwdGNoYVJlc3BvbnNlQ2FsbGJhY2socmVzcG9uc2UpKTtcbiAgICAgIH0sXG4gICAgICBcImV4cGlyZWQtY2FsbGJhY2tcIjogKCkgPT4ge1xuICAgICAgICB0aGlzLnpvbmUucnVuKCgpID0+IHRoaXMuZXhwaXJlZCgpKTtcbiAgICAgIH0sXG4gICAgICBzaXRla2V5OiB0aGlzLnNpdGVLZXksXG4gICAgICBzaXplOiB0aGlzLnNpemUsXG4gICAgICB0YWJpbmRleDogdGhpcy50YWJJbmRleCxcbiAgICAgIHRoZW1lOiB0aGlzLnRoZW1lLFxuICAgICAgdHlwZTogdGhpcy50eXBlLFxuICAgIH07XG5cbiAgICBpZiAodGhpcy5lcnJvck1vZGUgPT09IFwiaGFuZGxlZFwiKSB7XG4gICAgICByZW5kZXJPcHRpb25zW1wiZXJyb3ItY2FsbGJhY2tcIl0gPSAoLi4uYXJnczogUmVjYXB0Y2hhRXJyb3JQYXJhbWV0ZXJzKSA9PiB7XG4gICAgICAgIHRoaXMuem9uZS5ydW4oKCkgPT4gdGhpcy5vbkVycm9yKGFyZ3MpKTtcbiAgICAgIH07XG4gICAgfVxuXG4gICAgdGhpcy53aWRnZXQgPSB0aGlzLmdyZWNhcHRjaGEucmVuZGVyKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCByZW5kZXJPcHRpb25zKTtcblxuICAgIGlmICh0aGlzLmV4ZWN1dGVSZXF1ZXN0ZWQgPT09IHRydWUpIHtcbiAgICAgIHRoaXMuZXhlY3V0ZVJlcXVlc3RlZCA9IGZhbHNlO1xuICAgICAgdGhpcy5leGVjdXRlKCk7XG4gICAgfVxuICB9XG59XG4iXX0=