axioma-recaptcha 6.0.108 → 6.0.110

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.
@@ -1,39 +1,40 @@
1
1
  import * as i0 from '@angular/core';
2
2
  import { InjectionToken, inject, DOCUMENT, Injectable } from '@angular/core';
3
- import { ReplaySubject, of, mergeMap, Observable } from 'rxjs';
3
+ import { ReplaySubject, mergeMap, of, Observable } from 'rxjs';
4
4
 
5
- const RECAPTCHA_V3_SITE_KEY = new InjectionToken('RECAPTCHA_V3_SITE_KEY');
6
- const RECAPTCHA_DISABLED = new InjectionToken('RECAPTCHA_DISABLED');
5
+ const RECAPTCHA_CONFIG_LOADER = new InjectionToken('RECAPTCHA_CONFIG_LOADER');
7
6
 
8
7
  class RecaptchaService {
8
+ configLoader = inject(RECAPTCHA_CONFIG_LOADER);
9
9
  initialized = false;
10
10
  document = inject(DOCUMENT);
11
- key = inject(RECAPTCHA_V3_SITE_KEY);
12
- disabled = inject(RECAPTCHA_DISABLED);
13
11
  recaptcha$ = new ReplaySubject(1);
14
12
  execute(action) {
15
- this.init();
16
- if (this.disabled) {
17
- return of('');
18
- }
19
- return this.recaptcha$.pipe(mergeMap(r => new Observable(observer => r.ready(() => {
20
- let promise = r.execute(this.key, { action });
21
- promise.then(token => {
22
- observer.next(token);
23
- observer.complete();
24
- }).catch(err => {
25
- console.error('Recaptcha execution error:', err);
26
- observer.next('');
27
- });
28
- }))));
13
+ return this.configLoader.load().pipe(mergeMap(config => {
14
+ if (!config.enabled) {
15
+ console.warn('Recaptcha is disabled');
16
+ return of('');
17
+ }
18
+ this.init(config.siteKey);
19
+ return this.recaptcha$.pipe(mergeMap(r => new Observable(observer => r.ready(() => {
20
+ let promise = r.execute(config, { action });
21
+ promise.then(token => {
22
+ observer.next(token);
23
+ observer.complete();
24
+ }).catch(err => {
25
+ console.error('Recaptcha execution error:', err);
26
+ observer.next('');
27
+ });
28
+ }))));
29
+ }));
29
30
  }
30
- init() {
31
+ init(key) {
31
32
  if (this.initialized) {
32
33
  return;
33
34
  }
34
35
  this.initialized = true;
35
36
  let script = this.document.createElement('script');
36
- script.src = `https://www.google.com/recaptcha/api.js?render=${this.key}`;
37
+ script.src = `https://www.google.com/recaptcha/api.js?render=${key}`;
37
38
  script.async = true;
38
39
  script.defer = true;
39
40
  script.addEventListener('load', () => {
@@ -61,5 +62,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.3", ngImpor
61
62
  * Generated bundle index. Do not edit.
62
63
  */
63
64
 
64
- export { RECAPTCHA_DISABLED, RECAPTCHA_V3_SITE_KEY, RecaptchaService };
65
+ export { RECAPTCHA_CONFIG_LOADER, RecaptchaService };
65
66
  //# sourceMappingURL=axioma-recaptcha.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"axioma-recaptcha.mjs","sources":["../../../projects/recaptcha/src/lib/recaptcha.token.ts","../../../projects/recaptcha/src/lib/recaptcha.service.ts","../../../projects/recaptcha/src/public-api.ts","../../../projects/recaptcha/src/axioma-recaptcha.ts"],"sourcesContent":["import { InjectionToken } from \"@angular/core\";\n\nexport const RECAPTCHA_V3_SITE_KEY = new InjectionToken<string>('RECAPTCHA_V3_SITE_KEY');\nexport const RECAPTCHA_DISABLED = new InjectionToken<boolean>('RECAPTCHA_DISABLED');","import { inject, Injectable, DOCUMENT } from '@angular/core';\nimport { Observable, of, ReplaySubject, mergeMap } from 'rxjs';\nimport { RECAPTCHA_DISABLED, RECAPTCHA_V3_SITE_KEY } from './recaptcha.token';\n\n\n@Injectable({\n providedIn: 'root'\n})\nexport class RecaptchaService {\n private initialized = false;\n private document = inject<Document>(DOCUMENT);\n private key = inject<string>(RECAPTCHA_V3_SITE_KEY);\n private disabled = inject<boolean>(RECAPTCHA_DISABLED);\n private recaptcha$ = new ReplaySubject<any>(1);\n execute(action: string): Observable<string> {\n this.init();\n if (this.disabled) {\n return of('');\n }\n return this.recaptcha$.pipe(mergeMap(r =>\n new Observable<string>(observer =>\n r.ready(() => {\n let promise = r.execute(this.key, { action }) as Promise<string>;\n promise.then(token => {\n observer.next(token);\n observer.complete();\n }).catch(err => {\n console.error('Recaptcha execution error:', err);\n observer.next('');\n });\n })\n )));\n }\n init() {\n if (this.initialized) {\n return;\n }\n this.initialized = true;\n let script = this.document.createElement('script');\n script.src = `https://www.google.com/recaptcha/api.js?render=${this.key}`;\n script.async = true;\n script.defer = true;\n script.addEventListener('load', () => {\n this.recaptcha$.next((<any>window).grecaptcha);\n });\n this.document.body.appendChild(script);\n }\n constructor() {\n\n }\n}\n","/*\n * Public API Surface of the library\n */\n\nexport * from './lib/recaptcha.service';\nexport * from './lib/recaptcha.token';","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;MAEa,qBAAqB,GAAG,IAAI,cAAc,CAAS,uBAAuB;MAC1E,kBAAkB,GAAG,IAAI,cAAc,CAAU,oBAAoB;;MCKrE,gBAAgB,CAAA;IACnB,WAAW,GAAG,KAAK;AACnB,IAAA,QAAQ,GAAG,MAAM,CAAW,QAAQ,CAAC;AACrC,IAAA,GAAG,GAAG,MAAM,CAAS,qBAAqB,CAAC;AAC3C,IAAA,QAAQ,GAAG,MAAM,CAAU,kBAAkB,CAAC;AAC9C,IAAA,UAAU,GAAG,IAAI,aAAa,CAAM,CAAC,CAAC;AAC9C,IAAA,OAAO,CAAC,MAAc,EAAA;QACpB,IAAI,CAAC,IAAI,EAAE;AACX,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;AACjB,YAAA,OAAO,EAAE,CAAC,EAAE,CAAC;;QAEf,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,IACpC,IAAI,UAAU,CAAS,QAAQ,IAC7B,CAAC,CAAC,KAAK,CAAC,MAAK;AACX,YAAA,IAAI,OAAO,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,CAAoB;AAChE,YAAA,OAAO,CAAC,IAAI,CAAC,KAAK,IAAG;AACnB,gBAAA,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC;gBACpB,QAAQ,CAAC,QAAQ,EAAE;AACrB,aAAC,CAAC,CAAC,KAAK,CAAC,GAAG,IAAG;AACb,gBAAA,OAAO,CAAC,KAAK,CAAC,4BAA4B,EAAE,GAAG,CAAC;AAChD,gBAAA,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;AACnB,aAAC,CAAC;AACJ,SAAC,CAAC,CACH,CAAC,CAAC;;IAEP,IAAI,GAAA;AACF,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE;YACpB;;AAEF,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI;QACvB,IAAI,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC;QAClD,MAAM,CAAC,GAAG,GAAG,CAAA,+CAAA,EAAkD,IAAI,CAAC,GAAG,EAAE;AACzE,QAAA,MAAM,CAAC,KAAK,GAAG,IAAI;AACnB,QAAA,MAAM,CAAC,KAAK,GAAG,IAAI;AACnB,QAAA,MAAM,CAAC,gBAAgB,CAAC,MAAM,EAAE,MAAK;YACnC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAO,MAAO,CAAC,UAAU,CAAC;AAChD,SAAC,CAAC;QACF,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;;AAExC,IAAA,WAAA,GAAA;;uGAvCW,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAhB,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,gBAAgB,cAFf,MAAM,EAAA,CAAA;;2FAEP,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAH5B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE;AACb,iBAAA;;;ACPD;;AAEG;;ACFH;;AAEG;;;;"}
1
+ {"version":3,"file":"axioma-recaptcha.mjs","sources":["../../../projects/recaptcha/src/lib/recaptcha.token.ts","../../../projects/recaptcha/src/lib/recaptcha.service.ts","../../../projects/recaptcha/src/public-api.ts","../../../projects/recaptcha/src/axioma-recaptcha.ts"],"sourcesContent":["import { InjectionToken } from \"@angular/core\";\nimport { RecaptchaConfigLoader } from \"./recaptcha-config-loader\";\n\nexport const RECAPTCHA_CONFIG_LOADER = new InjectionToken<RecaptchaConfigLoader>('RECAPTCHA_CONFIG_LOADER');","import { inject, Injectable, DOCUMENT } from '@angular/core';\nimport { Observable, of, ReplaySubject, mergeMap } from 'rxjs';\nimport { RECAPTCHA_CONFIG_LOADER } from './recaptcha.token';\n\n\n@Injectable({\n providedIn: 'root'\n})\nexport class RecaptchaService {\n private configLoader = inject(RECAPTCHA_CONFIG_LOADER);\n private initialized = false;\n private document = inject<Document>(DOCUMENT);\n private recaptcha$ = new ReplaySubject<any>(1);\n execute(action: string): Observable<string> {\n return this.configLoader.load().pipe(mergeMap(config => {\n if (!config.enabled) {\n console.warn('Recaptcha is disabled');\n return of('');\n }\n this.init(config.siteKey);\n return this.recaptcha$.pipe(mergeMap(r =>\n new Observable<string>(observer =>\n r.ready(() => {\n let promise = r.execute(config, { action }) as Promise<string>;\n promise.then(token => {\n observer.next(token);\n observer.complete();\n }).catch(err => {\n console.error('Recaptcha execution error:', err);\n observer.next('');\n });\n })\n )));\n }));\n }\n private init(key: string): void {\n if (this.initialized) {\n return;\n }\n this.initialized = true;\n let script = this.document.createElement('script');\n script.src = `https://www.google.com/recaptcha/api.js?render=${key}`;\n script.async = true;\n script.defer = true;\n script.addEventListener('load', () => {\n this.recaptcha$.next((<any>window).grecaptcha);\n });\n this.document.body.appendChild(script);\n }\n constructor() {\n\n }\n}\n","/*\n * Public API Surface of the library\n */\n\nexport * from './lib/recaptcha.service';\nexport * from './lib/recaptcha.token';\nexport * from './lib/recaptcha-config-loader';","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;MAGa,uBAAuB,GAAG,IAAI,cAAc,CAAwB,yBAAyB;;MCK7F,gBAAgB,CAAA;AACnB,IAAA,YAAY,GAAG,MAAM,CAAC,uBAAuB,CAAC;IAC9C,WAAW,GAAG,KAAK;AACnB,IAAA,QAAQ,GAAG,MAAM,CAAW,QAAQ,CAAC;AACrC,IAAA,UAAU,GAAG,IAAI,aAAa,CAAM,CAAC,CAAC;AAC9C,IAAA,OAAO,CAAC,MAAc,EAAA;AACpB,QAAA,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,IAAG;AACrD,YAAA,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE;AACnB,gBAAA,OAAO,CAAC,IAAI,CAAC,uBAAuB,CAAC;AACrC,gBAAA,OAAO,EAAE,CAAC,EAAE,CAAC;;AAEf,YAAA,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;YACzB,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,IACpC,IAAI,UAAU,CAAS,QAAQ,IAC7B,CAAC,CAAC,KAAK,CAAC,MAAK;AACX,gBAAA,IAAI,OAAO,GAAG,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,CAAoB;AAC9D,gBAAA,OAAO,CAAC,IAAI,CAAC,KAAK,IAAG;AACnB,oBAAA,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC;oBACpB,QAAQ,CAAC,QAAQ,EAAE;AACrB,iBAAC,CAAC,CAAC,KAAK,CAAC,GAAG,IAAG;AACb,oBAAA,OAAO,CAAC,KAAK,CAAC,4BAA4B,EAAE,GAAG,CAAC;AAChD,oBAAA,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;AACnB,iBAAC,CAAC;AACJ,aAAC,CAAC,CACH,CAAC,CAAC;SACN,CAAC,CAAC;;AAEG,IAAA,IAAI,CAAC,GAAW,EAAA;AACtB,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE;YACpB;;AAEF,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI;QACvB,IAAI,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC;AAClD,QAAA,MAAM,CAAC,GAAG,GAAG,CAAkD,+CAAA,EAAA,GAAG,EAAE;AACpE,QAAA,MAAM,CAAC,KAAK,GAAG,IAAI;AACnB,QAAA,MAAM,CAAC,KAAK,GAAG,IAAI;AACnB,QAAA,MAAM,CAAC,gBAAgB,CAAC,MAAM,EAAE,MAAK;YACnC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAO,MAAO,CAAC,UAAU,CAAC;AAChD,SAAC,CAAC;QACF,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;;AAExC,IAAA,WAAA,GAAA;;uGAzCW,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAhB,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,gBAAgB,cAFf,MAAM,EAAA,CAAA;;2FAEP,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAH5B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE;AACb,iBAAA;;;ACPD;;AAEG;;ACFH;;AAEG;;;;"}
package/index.d.ts CHANGED
@@ -3,19 +3,26 @@ import * as i0 from '@angular/core';
3
3
  import { InjectionToken } from '@angular/core';
4
4
 
5
5
  declare class RecaptchaService {
6
+ private configLoader;
6
7
  private initialized;
7
8
  private document;
8
- private key;
9
- private disabled;
10
9
  private recaptcha$;
11
10
  execute(action: string): Observable<string>;
12
- init(): void;
11
+ private init;
13
12
  constructor();
14
13
  static ɵfac: i0.ɵɵFactoryDeclaration<RecaptchaService, never>;
15
14
  static ɵprov: i0.ɵɵInjectableDeclaration<RecaptchaService>;
16
15
  }
17
16
 
18
- declare const RECAPTCHA_V3_SITE_KEY: InjectionToken<string>;
19
- declare const RECAPTCHA_DISABLED: InjectionToken<boolean>;
17
+ interface RecaptchaConfig {
18
+ siteKey: string;
19
+ enabled: boolean;
20
+ }
21
+ interface RecaptchaConfigLoader {
22
+ load(): Observable<RecaptchaConfig>;
23
+ }
24
+
25
+ declare const RECAPTCHA_CONFIG_LOADER: InjectionToken<RecaptchaConfigLoader>;
20
26
 
21
- export { RECAPTCHA_DISABLED, RECAPTCHA_V3_SITE_KEY, RecaptchaService };
27
+ export { RECAPTCHA_CONFIG_LOADER, RecaptchaService };
28
+ export type { RecaptchaConfig, RecaptchaConfigLoader };
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "axioma-recaptcha",
3
3
  "author": "Petr Shelomovskiy",
4
4
  "license": "MIT",
5
- "version": "6.0.108",
5
+ "version": "6.0.110",
6
6
  "peerDependencies": {
7
7
  "@angular/common": "^19.2.0",
8
8
  "@angular/core": "^19.2.0"