@nestlab/google-recaptcha 3.1.1 → 3.1.4

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.
package/README.md CHANGED
@@ -1,4 +1,9 @@
1
1
  # Google recaptcha module
2
+ [![NPM Version](https://img.shields.io/npm/v/@nestlab/google-recaptcha.svg)](https://www.npmjs.com/package/@nestlab/google-recaptcha)
3
+ [![Licence](https://img.shields.io/npm/l/@nestlab/google-recaptcha.svg)](https://github.com/chvarkov/google-recaptcha/blob/master/LICENSE)
4
+ [![NPM Downloads](https://img.shields.io/npm/dm/@nestlab/google-recaptcha.svg)](https://www.npmjs.com/package/@nestlab/google-recaptcha)
5
+ [![Circle CI build](https://img.shields.io/circleci/build/github/chvarkov/google-recaptcha/master)](https://github.com/chvarkov/google-recaptcha/tree/master)
6
+ [![Coverage Status](https://coveralls.io/repos/github/chvarkov/google-recaptcha/badge.svg?branch=master)](https://coveralls.io/github/chvarkov/google-recaptcha?branch=master)
2
7
 
3
8
  The [NestJS](https://docs.nestjs.com/) module to protect your endpoints via [google recaptcha](https://www.google.com/recaptcha/about/).
4
9
 
@@ -13,8 +13,6 @@ exports.RecaptchaResult = (0, common_1.createParamDecorator)((data, context) =>
13
13
  .GqlExecutionContext
14
14
  .create(context)
15
15
  .getContext().req) === null || _a === void 0 ? void 0 : _a.connection) === null || _b === void 0 ? void 0 : _b._httpMessage) === null || _c === void 0 ? void 0 : _c.req) === null || _d === void 0 ? void 0 : _d.recaptchaValidationResult;
16
- default:
17
- return null;
18
16
  }
19
17
  });
20
18
  //# sourceMappingURL=recaptcha-result.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"recaptcha-result.js","sourceRoot":"","sources":["../../src/decorators/recaptcha-result.ts"],"names":[],"mappings":";;;AAAA,2CAAwE;AACxE,wDAAoD;AAEvC,QAAA,eAAe,GAAG,IAAA,6BAAoB,EAAC,CAAC,IAAI,EAAE,OAAyB,EAAE,EAAE;;IACpF,QAAQ,OAAO,CAAC,OAAO,EAAsB,EAAE;QAC3C,KAAK,MAAM;YACP,OAAO,OAAO,CAAC,YAAY,EAAE,CAAC,UAAU,EAAE,CAAC,yBAAyB,CAAC;QACzE,KAAK,SAAS;YACV,OAAO,MAAA,MAAA,MAAA,MAAA,IAAA,wBAAU,EAAC,iBAAiB,EAAE,IAAI,CAAC;iBACrC,mBAAmB;iBACnB,MAAM,CAAC,OAAO,CAAC;iBACf,UAAU,EAAE,CAAC,GAAG,0CAAE,UAAU,0CAAE,YAAY,0CAAE,GAAG,0CAAE,yBAAyB,CAAC;QACpF;YACI,OAAO,IAAI,CAAC;KACnB;AACL,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"recaptcha-result.js","sourceRoot":"","sources":["../../src/decorators/recaptcha-result.ts"],"names":[],"mappings":";;;AAAA,2CAAwE;AACxE,wDAAoD;AAEvC,QAAA,eAAe,GAAG,IAAA,6BAAoB,EAAC,CAAC,IAAI,EAAE,OAAyB,EAAE,EAAE;;IACpF,QAAQ,OAAO,CAAC,OAAO,EAAsB,EAAE;QAC3C,KAAK,MAAM;YACP,OAAO,OAAO,CAAC,YAAY,EAAE,CAAC,UAAU,EAAE,CAAC,yBAAyB,CAAC;QACzE,KAAK,SAAS;YACV,OAAO,MAAA,MAAA,MAAA,MAAA,IAAA,wBAAU,EAAC,iBAAiB,EAAE,IAAI,CAAC;iBACrC,mBAAmB;iBACnB,MAAM,CAAC,OAAO,CAAC;iBACf,UAAU,EAAE,CAAC,GAAG,0CAAE,UAAU,0CAAE,YAAY,0CAAE,GAAG,0CAAE,yBAAyB,CAAC;KACvF;AACL,CAAC,CAAC,CAAC"}
@@ -9,6 +9,7 @@ export declare enum ErrorCode {
9
9
  ForbiddenAction = "forbidden-action",
10
10
  LowScore = "low-score",
11
11
  InvalidKeys = "invalid-keys",
12
+ IncorrectCaptchaSol = "incorrect-captcha-sol",
12
13
  NetworkError = "network-error",
13
14
  SiteMismatch = "site-mismatch",
14
15
  BrowserError = "browser-error"
@@ -13,6 +13,7 @@ var ErrorCode;
13
13
  ErrorCode["ForbiddenAction"] = "forbidden-action";
14
14
  ErrorCode["LowScore"] = "low-score";
15
15
  ErrorCode["InvalidKeys"] = "invalid-keys";
16
+ ErrorCode["IncorrectCaptchaSol"] = "incorrect-captcha-sol";
16
17
  ErrorCode["NetworkError"] = "network-error";
17
18
  // enterprise
18
19
  ErrorCode["SiteMismatch"] = "site-mismatch";
@@ -1 +1 @@
1
- {"version":3,"file":"error-code.js","sourceRoot":"","sources":["../../src/enums/error-code.ts"],"names":[],"mappings":";;;AAAA,IAAY,SAeX;AAfD,WAAY,SAAS;IACpB,wDAA2C,CAAA;IAC3C,wDAA2C,CAAA;IAC3C,4DAA+C,CAAA;IAC/C,4DAA+C,CAAA;IAC/C,uCAA0B,CAAA;IAC1B,wDAA2C,CAAA;IAC3C,2CAA8B,CAAA;IAC9B,iDAAoC,CAAA;IACpC,mCAAsB,CAAA;IACtB,yCAA4B,CAAA;IACzB,2CAA8B,CAAA;IACjC,aAAa;IACb,2CAA8B,CAAA;IAC9B,2CAA8B,CAAA;AAC/B,CAAC,EAfW,SAAS,GAAT,iBAAS,KAAT,iBAAS,QAepB"}
1
+ {"version":3,"file":"error-code.js","sourceRoot":"","sources":["../../src/enums/error-code.ts"],"names":[],"mappings":";;;AAAA,IAAY,SAgBX;AAhBD,WAAY,SAAS;IACpB,wDAA2C,CAAA;IAC3C,wDAA2C,CAAA;IAC3C,4DAA+C,CAAA;IAC/C,4DAA+C,CAAA;IAC/C,uCAA0B,CAAA;IAC1B,wDAA2C,CAAA;IAC3C,2CAA8B,CAAA;IAC9B,iDAAoC,CAAA;IACpC,mCAAsB,CAAA;IACtB,yCAA4B,CAAA;IAC5B,0DAA6C,CAAA;IAC7C,2CAA8B,CAAA;IAC9B,aAAa;IACb,2CAA8B,CAAA;IAC9B,2CAA8B,CAAA;AAC/B,CAAC,EAhBW,SAAS,GAAT,iBAAS,KAAT,iBAAS,QAgBpB"}
@@ -29,6 +29,8 @@ class GoogleRecaptchaException extends common_1.HttpException {
29
29
  return 'The user verification token did not match the provided site key.';
30
30
  case error_code_1.ErrorCode.BrowserError:
31
31
  return 'Retriable error (such as network failure) occurred on the browser.';
32
+ case error_code_1.ErrorCode.IncorrectCaptchaSol:
33
+ return 'incorrect-captcha-sol';
32
34
  case error_code_1.ErrorCode.UnknownError:
33
35
  case error_code_1.ErrorCode.BadRequest:
34
36
  default:
@@ -40,6 +42,9 @@ class GoogleRecaptchaException extends common_1.HttpException {
40
42
  errorCode === error_code_1.ErrorCode.MissingInputResponse ||
41
43
  errorCode === error_code_1.ErrorCode.TimeoutOrDuplicate ||
42
44
  errorCode === error_code_1.ErrorCode.ForbiddenAction ||
45
+ errorCode === error_code_1.ErrorCode.SiteMismatch ||
46
+ errorCode === error_code_1.ErrorCode.BrowserError ||
47
+ errorCode === error_code_1.ErrorCode.IncorrectCaptchaSol ||
43
48
  errorCode === error_code_1.ErrorCode.LowScore ||
44
49
  errorCode === error_code_1.ErrorCode.InvalidKeys
45
50
  ? common_1.HttpStatus.BAD_REQUEST
@@ -1 +1 @@
1
- {"version":3,"file":"google-recaptcha.exception.js","sourceRoot":"","sources":["../../src/exceptions/google-recaptcha.exception.ts"],"names":[],"mappings":";;;AAAA,2CAAyD;AACzD,oDAA8C;AAE9C,MAAa,wBAAyB,SAAQ,sBAAa;IAC1D,YAA4B,UAAuB,EACpC,YAAqB;QAC7B,KAAK,CACD,YAAY,IAAI,wBAAwB,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EACvE,wBAAwB,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CACzD,CAAC;QALmB,eAAU,GAAV,UAAU,CAAa;IAMnD,CAAC;IAEO,MAAM,CAAC,eAAe,CAAC,SAAoB;QAClD,QAAQ,SAAS,EAAE;YAClB,KAAK,sBAAS,CAAC,oBAAoB;gBAClC,OAAO,iDAAiD,CAAC;YAE1D,KAAK,sBAAS,CAAC,oBAAoB;gBAClC,OAAO,oCAAoC,CAAC;YAC7C,KAAK,sBAAS,CAAC,kBAAkB;gBAChC,OAAO,iFAAiF,CAAC;YAE1F,KAAK,sBAAS,CAAC,kBAAkB,CAAC;YAClC,KAAK,sBAAS,CAAC,kBAAkB;gBAChC,OAAO,gEAAgE,CAAC;YAEzE,KAAK,sBAAS,CAAC,WAAW;gBACzB,OAAO,gDAAgD,CAAC;YAEzD,KAAK,sBAAS,CAAC,QAAQ;gBACtB,OAAO,sBAAsB,CAAC;YAE/B,KAAK,sBAAS,CAAC,eAAe;gBAC7B,OAAO,6BAA6B,CAAC;YAEtC,KAAK,sBAAS,CAAC,YAAY;gBAC1B,OAAO,kEAAkE,CAAC;YAE3E,KAAK,sBAAS,CAAC,YAAY;gBAC1B,OAAO,oEAAoE,CAAC;YAE7E,KAAK,sBAAS,CAAC,YAAY,CAAC;YAC5B,KAAK,sBAAS,CAAC,UAAU,CAAC;YAC1B;gBACC,OAAO,qEAAqE,CAAC;SAC9E;IACF,CAAC;IAEO,MAAM,CAAC,cAAc,CAAC,SAAoB;QACjD,OAAO,SAAS,KAAK,sBAAS,CAAC,oBAAoB;YAClD,SAAS,KAAK,sBAAS,CAAC,oBAAoB;YAC5C,SAAS,KAAK,sBAAS,CAAC,kBAAkB;YAC1C,SAAS,KAAK,sBAAS,CAAC,eAAe;YACvC,SAAS,KAAK,sBAAS,CAAC,QAAQ;YAChC,SAAS,KAAK,sBAAS,CAAC,WAAW;YACpC,CAAC,CAAC,mBAAU,CAAC,WAAW;YACxB,CAAC,CAAC,mBAAU,CAAC,qBAAqB,CAAC;IACpC,CAAC;CACD;AAvDD,4DAuDC"}
1
+ {"version":3,"file":"google-recaptcha.exception.js","sourceRoot":"","sources":["../../src/exceptions/google-recaptcha.exception.ts"],"names":[],"mappings":";;;AAAA,2CAAyD;AACzD,oDAA8C;AAE9C,MAAa,wBAAyB,SAAQ,sBAAa;IAC1D,YAA4B,UAAuB,EACpC,YAAqB;QAC7B,KAAK,CACD,YAAY,IAAI,wBAAwB,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EACvE,wBAAwB,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CACzD,CAAC;QALmB,eAAU,GAAV,UAAU,CAAa;IAMnD,CAAC;IAEO,MAAM,CAAC,eAAe,CAAC,SAAoB;QAClD,QAAQ,SAAS,EAAE;YAClB,KAAK,sBAAS,CAAC,oBAAoB;gBAClC,OAAO,iDAAiD,CAAC;YAE1D,KAAK,sBAAS,CAAC,oBAAoB;gBAClC,OAAO,oCAAoC,CAAC;YAC7C,KAAK,sBAAS,CAAC,kBAAkB;gBAChC,OAAO,iFAAiF,CAAC;YAE1F,KAAK,sBAAS,CAAC,kBAAkB,CAAC;YAClC,KAAK,sBAAS,CAAC,kBAAkB;gBAChC,OAAO,gEAAgE,CAAC;YAEzE,KAAK,sBAAS,CAAC,WAAW;gBACzB,OAAO,gDAAgD,CAAC;YAEzD,KAAK,sBAAS,CAAC,QAAQ;gBACtB,OAAO,sBAAsB,CAAC;YAE/B,KAAK,sBAAS,CAAC,eAAe;gBAC7B,OAAO,6BAA6B,CAAC;YAEtC,KAAK,sBAAS,CAAC,YAAY;gBAC1B,OAAO,kEAAkE,CAAC;YAE3E,KAAK,sBAAS,CAAC,YAAY;gBAC1B,OAAO,oEAAoE,CAAC;YAE7E,KAAK,sBAAS,CAAC,mBAAmB;gBACjC,OAAO,uBAAuB,CAAC;YAEhC,KAAK,sBAAS,CAAC,YAAY,CAAC;YAC5B,KAAK,sBAAS,CAAC,UAAU,CAAC;YAC1B;gBACC,OAAO,qEAAqE,CAAC;SAC9E;IACF,CAAC;IAEO,MAAM,CAAC,cAAc,CAAC,SAAoB;QACjD,OAAO,SAAS,KAAK,sBAAS,CAAC,oBAAoB;YAClD,SAAS,KAAK,sBAAS,CAAC,oBAAoB;YAC5C,SAAS,KAAK,sBAAS,CAAC,kBAAkB;YAC1C,SAAS,KAAK,sBAAS,CAAC,eAAe;YACvC,SAAS,KAAK,sBAAS,CAAC,YAAY;YACpC,SAAS,KAAK,sBAAS,CAAC,YAAY;YACpC,SAAS,KAAK,sBAAS,CAAC,mBAAmB;YAC3C,SAAS,KAAK,sBAAS,CAAC,QAAQ;YAChC,SAAS,KAAK,sBAAS,CAAC,WAAW;YACpC,CAAC,CAAC,mBAAU,CAAC,WAAW;YACxB,CAAC,CAAC,mBAAU,CAAC,qBAAqB,CAAC;IACpC,CAAC;CACD;AA7DD,4DA6DC"}
@@ -39,7 +39,7 @@ let GoogleRecaptchaGuard = class GoogleRecaptchaGuard {
39
39
  }
40
40
  const options = this.reflector.get(provider_declarations_1.RECAPTCHA_VALIDATION_OPTIONS, context.getHandler());
41
41
  const response = (options === null || options === void 0 ? void 0 : options.response)
42
- ? await (options === null || options === void 0 ? void 0 : options.response(request))
42
+ ? await options.response(request)
43
43
  : await this.options.response(request);
44
44
  const score = (options === null || options === void 0 ? void 0 : options.score) || this.options.score;
45
45
  const action = options === null || options === void 0 ? void 0 : options.action;
@@ -1 +1 @@
1
- {"version":3,"file":"google-recaptcha.guard.js","sourceRoot":"","sources":["../../src/guards/google-recaptcha.guard.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CAA0G;AAC1G,oEAA6G;AAC7G,yFAAoF;AACpF,uCAAyC;AACzC,uFAAkF;AAGlF,2FAAsF;AACtF,gFAA2E;AAE3E,wHAAkH;AAGlH,IAAa,oBAAoB,GAAjC,MAAa,oBAAoB;IAC7B,YAA6B,SAAoB,EACpB,eAAyC,EACzC,iBAA6C,EACnB,MAAc,EACb,OAAqC;QAJhE,cAAS,GAAT,SAAS,CAAW;QACpB,oBAAe,GAAf,eAAe,CAA0B;QACzC,sBAAiB,GAAjB,iBAAiB,CAA4B;QACnB,WAAM,GAAN,MAAM,CAAQ;QACb,YAAO,GAAP,OAAO,CAA8B;IAC7F,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,OAAyB;QACvC,MAAM,OAAO,GAAkB,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAErE,MAAM,IAAI,GAAG,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,UAAU;YAClD,CAAC,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC;YACpC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;QAE5B,IAAI,IAAI,EAAE;YACN,OAAO,IAAI,CAAC;SACf;QAED,MAAM,OAAO,GAAmC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,oDAA4B,EAAE,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;QAEvH,MAAM,QAAQ,GAAG,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,QAAQ;YAC9B,CAAC,CAAC,MAAM,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,QAAQ,CAAC,OAAO,CAAC,CAAA;YAClC,CAAC,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QAE3C,MAAM,KAAK,GAAG,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,KAAK,KAAI,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;QACnD,MAAM,MAAM,GAAG,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,MAAM,CAAC;QAE/B,MAAM,SAAS,GAAG,IAAI,CAAC,iBAAiB,CAAC,OAAO,EAAE,CAAC;QAEnD,OAAO,CAAC,yBAAyB,GAAG,MAAM,SAAS,CAAC,QAAQ,CAAC,EAAC,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAC,CAAC,CAAC;QAExF,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE;YACpB,MAAM,SAAS,GAAG,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;YACpD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,yBAAyB,EAAE,GAAG,SAAS,SAAS,CAAC,CAAC;SAC/E;QAED,IAAI,OAAO,CAAC,yBAAyB,CAAC,OAAO,EAAE;YAC3C,OAAO,IAAI,CAAC;SACf;QAED,MAAM,IAAI,qDAAwB,CAAC,OAAO,CAAC,yBAAyB,CAAC,MAAM,CAAC,CAAC;IACjF,CAAC;IAEO,iBAAiB,CAAC,SAAoD;QAC1E,OAAO,SAAS,YAAY,0EAAkC;YAC1D,CAAC,CAAC,iDAAsB,CAAC,yBAAyB;YAClD,CAAC,CAAC,iDAAsB,CAAC,eAAe,CAAC;IACjD,CAAC;CACJ,CAAA;AAjDY,oBAAoB;IADhC,IAAA,mBAAU,GAAE;IAKI,WAAA,IAAA,eAAM,EAAC,wCAAgB,CAAC,CAAA;IACxB,WAAA,IAAA,eAAM,EAAC,yCAAiB,CAAC,CAAA;qCAJE,gBAAS;QACH,qDAAwB;QACtB,yDAA0B;QACX,eAAM;GAJ5D,oBAAoB,CAiDhC;AAjDY,oDAAoB"}
1
+ {"version":3,"file":"google-recaptcha.guard.js","sourceRoot":"","sources":["../../src/guards/google-recaptcha.guard.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CAA0G;AAC1G,oEAA6G;AAC7G,yFAAoF;AACpF,uCAAyC;AACzC,uFAAkF;AAGlF,2FAAsF;AACtF,gFAA2E;AAE3E,wHAAkH;AAGlH,IAAa,oBAAoB,GAAjC,MAAa,oBAAoB;IAC7B,YAA6B,SAAoB,EACpB,eAAyC,EACzC,iBAA6C,EACnB,MAAc,EACb,OAAqC;QAJhE,cAAS,GAAT,SAAS,CAAW;QACpB,oBAAe,GAAf,eAAe,CAA0B;QACzC,sBAAiB,GAAjB,iBAAiB,CAA4B;QACnB,WAAM,GAAN,MAAM,CAAQ;QACb,YAAO,GAAP,OAAO,CAA8B;IAC7F,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,OAAyB;QACvC,MAAM,OAAO,GAAkB,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAErE,MAAM,IAAI,GAAG,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,UAAU;YAClD,CAAC,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC;YACpC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;QAE5B,IAAI,IAAI,EAAE;YACN,OAAO,IAAI,CAAC;SACf;QAED,MAAM,OAAO,GAAmC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,oDAA4B,EAAE,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;QAEvH,MAAM,QAAQ,GAAG,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,QAAQ;YAC9B,CAAC,CAAC,MAAM,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC;YACjC,CAAC,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QAE3C,MAAM,KAAK,GAAG,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,KAAK,KAAI,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;QACnD,MAAM,MAAM,GAAG,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,MAAM,CAAC;QAE/B,MAAM,SAAS,GAAG,IAAI,CAAC,iBAAiB,CAAC,OAAO,EAAE,CAAC;QAEnD,OAAO,CAAC,yBAAyB,GAAG,MAAM,SAAS,CAAC,QAAQ,CAAC,EAAC,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAC,CAAC,CAAC;QAExF,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE;YACpB,MAAM,SAAS,GAAG,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;YACpD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,yBAAyB,EAAE,GAAG,SAAS,SAAS,CAAC,CAAC;SAC/E;QAED,IAAI,OAAO,CAAC,yBAAyB,CAAC,OAAO,EAAE;YAC3C,OAAO,IAAI,CAAC;SACf;QAED,MAAM,IAAI,qDAAwB,CAAC,OAAO,CAAC,yBAAyB,CAAC,MAAM,CAAC,CAAC;IACjF,CAAC;IAEO,iBAAiB,CAAC,SAAoD;QAC1E,OAAO,SAAS,YAAY,0EAAkC;YAC1D,CAAC,CAAC,iDAAsB,CAAC,yBAAyB;YAClD,CAAC,CAAC,iDAAsB,CAAC,eAAe,CAAC;IACjD,CAAC;CACJ,CAAA;AAjDY,oBAAoB;IADhC,IAAA,mBAAU,GAAE;IAKI,WAAA,IAAA,eAAM,EAAC,wCAAgB,CAAC,CAAA;IACxB,WAAA,IAAA,eAAM,EAAC,yCAAiB,CAAC,CAAA;qCAJE,gBAAS;QACH,qDAAwB;QACtB,yDAA0B;QACX,eAAM;GAJ5D,oBAAoB,CAiDhC;AAjDY,oDAAoB"}
@@ -0,0 +1,4 @@
1
+ import { LiteralObject } from '@nestjs/common';
2
+ import * as axios from 'axios';
3
+ export declare function isAxiosError(error: Error | axios.AxiosError): error is axios.AxiosError;
4
+ export declare function getErrorInfo(error: Error): string | LiteralObject;
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getErrorInfo = exports.isAxiosError = void 0;
4
+ function isAxiosError(error) {
5
+ return error.isAxiosError;
6
+ }
7
+ exports.isAxiosError = isAxiosError;
8
+ function getErrorInfo(error) {
9
+ var _a;
10
+ if (isAxiosError(error)) {
11
+ return ((_a = error.response) === null || _a === void 0 ? void 0 : _a.data) || error.code || 'Unknown axios error';
12
+ }
13
+ return { error: error.name, message: error.message, stack: error.stack };
14
+ }
15
+ exports.getErrorInfo = getErrorInfo;
16
+ //# sourceMappingURL=get-error-info.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-error-info.js","sourceRoot":"","sources":["../../src/helpers/get-error-info.ts"],"names":[],"mappings":";;;AAGA,SAAgB,YAAY,CAAC,KAA+B;IACxD,OAA0B,KAAM,CAAC,YAAY,CAAC;AAClD,CAAC;AAFD,oCAEC;AAED,SAAgB,YAAY,CAAC,KAAY;;IACrC,IAAI,YAAY,CAAC,KAAK,CAAC,EAAE;QACrB,OAAO,CAAA,MAAA,KAAK,CAAC,QAAQ,0CAAE,IAAI,KAAI,KAAK,CAAC,IAAI,IAAI,qBAAqB,CAAC;KACtE;IAED,OAAO,EAAC,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAC,CAAC;AAC3E,CAAC;AAND,oCAMC"}
@@ -1,5 +1,5 @@
1
1
  import { ErrorCode } from '../enums/error-code';
2
- import { VerifyResponseEnterprise } from '../interfaces/verify-response-enterprise';
2
+ import { VerifyResponseEnterpriseRiskAnalysis } from '../interfaces/verify-response-enterprise';
3
3
  import { LiteralObject } from '@nestjs/common';
4
4
  export interface RecaptchaVerificationResultOptions<Res> {
5
5
  success: boolean;
@@ -19,5 +19,5 @@ export declare class RecaptchaVerificationResult<Res = LiteralObject> {
19
19
  readonly errors: ErrorCode[];
20
20
  constructor(options: RecaptchaVerificationResultOptions<Res>);
21
21
  getResponse(): Res;
22
- getEnterpriseRiskAnalytics(): VerifyResponseEnterprise | null;
22
+ getEnterpriseRiskAnalytics(): VerifyResponseEnterpriseRiskAnalysis | null;
23
23
  }
package/package.json CHANGED
@@ -1,31 +1,22 @@
1
1
  {
2
2
  "name": "@nestlab/google-recaptcha",
3
- "version": "3.1.1",
3
+ "version": "3.1.4",
4
4
  "description": "Google recaptcha module for NestJS.",
5
5
  "keywords": [
6
- "nest",
7
6
  "nestjs",
8
- "module",
9
- "guard",
10
- "google",
11
7
  "recaptcha",
12
- "captcha",
13
- "google-recaptcha",
14
- "nestjs captcha",
15
- "nestjs recaptcha",
16
- "graphql"
8
+ "google recaptcha",
9
+ "nestjs recaptcha"
17
10
  ],
18
11
  "private": false,
19
12
  "main": "index.js",
20
- "module": "index.js",
21
- "types": "index.d.ts",
22
- "readme": "README.md",
23
13
  "scripts": {
24
14
  "build": "rimraf dist && tsc && cp package.json dist && cp README.md dist && cp LICENSE dist && cp CONTRIBUTING.md dist",
25
15
  "lint:fix": "eslint . --fix",
26
16
  "lint:check": "eslint . --max-warnings=0",
27
17
  "test": "jest --silent=false",
28
- "test:cov": "jest --coverage"
18
+ "test:cov": "jest --coverage",
19
+ "test:coveralls": "jest --runInBand --coverage && cat ./coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js && rm -rf ./coverage"
29
20
  },
30
21
  "repository": {
31
22
  "type": "git",
@@ -48,21 +39,27 @@
48
39
  }
49
40
  },
50
41
  "devDependencies": {
42
+ "@nestjs/apollo": "^10.0.22",
51
43
  "@nestjs/axios": "^0.1.0",
52
44
  "@nestjs/common": "^9.0.11",
53
45
  "@nestjs/core": "^9.0.11",
54
- "@nestjs/graphql": "^10.0.21",
46
+ "@nestjs/graphql": "^10.0.22",
55
47
  "@nestjs/platform-express": "^9.0.11",
56
48
  "@nestjs/testing": "^9.0.11",
57
49
  "@types/express": "^4.17.13",
58
50
  "@types/jest": "^28.1.7",
59
51
  "@types/node": "^18.7.6",
52
+ "@types/supertest": "^2.0.12",
60
53
  "@typescript-eslint/eslint-plugin": "^5.33.1",
61
54
  "@typescript-eslint/parser": "^5.33.1",
55
+ "apollo-server-express": "^3.10.2",
56
+ "coveralls": "^3.1.1",
62
57
  "eslint": "^8.22.0",
58
+ "graphql": "^16.6.0",
63
59
  "jest": "^28.1.3",
64
60
  "reflect-metadata": "^0.1.13",
65
61
  "rxjs": "^7.5.6",
62
+ "supertest": "^6.2.4",
66
63
  "ts-jest": "^28.0.8",
67
64
  "ts-loader": "^9.3.1",
68
65
  "ts-node": "^10.9.1",
@@ -24,11 +24,10 @@ let RecaptchaValidatorResolver = class RecaptchaValidatorResolver {
24
24
  this.googleRecaptchaEnterpriseValidator = googleRecaptchaEnterpriseValidator;
25
25
  }
26
26
  resolve() {
27
- var _a;
28
27
  if (this.options.secretKey) {
29
28
  return this.googleRecaptchaValidator;
30
29
  }
31
- if ((_a = Object.keys(this.options.enterprise || {})) === null || _a === void 0 ? void 0 : _a.length) {
30
+ if (Object.keys(this.options.enterprise || {}).length) {
32
31
  return this.googleRecaptchaEnterpriseValidator;
33
32
  }
34
33
  throw new Error('Cannot resolve google recaptcha validator');
@@ -1 +1 @@
1
- {"version":3,"file":"recaptcha-validator.resolver.js","sourceRoot":"","sources":["../../src/services/recaptcha-validator.resolver.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CAAoD;AAEpD,oEAA6D;AAE7D,wFAAmF;AACnF,8GAAwG;AAGxG,IAAa,0BAA0B,GAAvC,MAAa,0BAA0B;IACnC,YAAwD,OAAqC,EAC9D,wBAAkD,EAClD,kCAAsE;QAF7C,YAAO,GAAP,OAAO,CAA8B;QAC9D,6BAAwB,GAAxB,wBAAwB,CAA0B;QAClD,uCAAkC,GAAlC,kCAAkC,CAAoC;IACrG,CAAC;IAED,OAAO;;QACH,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE;YACxB,OAAO,IAAI,CAAC,wBAAwB,CAAC;SACxC;QAED,IAAI,MAAA,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,IAAI,EAAE,CAAC,0CAAE,MAAM,EAAE;YACpD,OAAO,IAAI,CAAC,kCAAkC,CAAC;SAClD;QAED,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;IACjE,CAAC;CACJ,CAAA;AAjBY,0BAA0B;IADtC,IAAA,mBAAU,GAAE;IAEI,WAAA,IAAA,eAAM,EAAC,yCAAiB,CAAC,CAAA;6CACmB,qDAAwB;QACd,0EAAkC;GAH5F,0BAA0B,CAiBtC;AAjBY,gEAA0B"}
1
+ {"version":3,"file":"recaptcha-validator.resolver.js","sourceRoot":"","sources":["../../src/services/recaptcha-validator.resolver.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CAAoD;AAEpD,oEAA6D;AAE7D,wFAAmF;AACnF,8GAAwG;AAGxG,IAAa,0BAA0B,GAAvC,MAAa,0BAA0B;IACnC,YAAwD,OAAqC,EAC9D,wBAAkD,EAClD,kCAAsE;QAF7C,YAAO,GAAP,OAAO,CAA8B;QAC9D,6BAAwB,GAAxB,wBAAwB,CAA0B;QAClD,uCAAkC,GAAlC,kCAAkC,CAAoC;IACrG,CAAC;IAED,OAAO;QACH,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE;YACxB,OAAO,IAAI,CAAC,wBAAwB,CAAC;SACxC;QAED,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;YACnD,OAAO,IAAI,CAAC,kCAAkC,CAAC;SAClD;QAED,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;IACjE,CAAC;CACJ,CAAA;AAjBY,0BAA0B;IADtC,IAAA,mBAAU,GAAE;IAEI,WAAA,IAAA,eAAM,EAAC,yCAAiB,CAAC,CAAA;6CACmB,qDAAwB;QACd,0EAAkC;GAH5F,0BAA0B,CAiBtC;AAjBY,gEAA0B"}
@@ -23,6 +23,7 @@ const google_recaptcha_network_exception_1 = require("../../exceptions/google-re
23
23
  const google_recaptcha_context_1 = require("../../enums/google-recaptcha-context");
24
24
  const enterprise_reason_transformer_1 = require("../enterprise-reason.transformer");
25
25
  const rxjs_1 = require("rxjs");
26
+ const get_error_info_1 = require("../../helpers/get-error-info");
26
27
  let GoogleRecaptchaEnterpriseValidator = class GoogleRecaptchaEnterpriseValidator extends abstract_google_recaptcha_validator_1.AbstractGoogleRecaptchaValidator {
27
28
  constructor(http, logger, options, enterpriseReasonTransformer) {
28
29
  super(options);
@@ -35,14 +36,14 @@ let GoogleRecaptchaEnterpriseValidator = class GoogleRecaptchaEnterpriseValidato
35
36
  var _a, _b, _c;
36
37
  const [result, errorDetails] = await this.verifyResponse(options.response, options.action);
37
38
  const errors = [];
38
- let success = result.tokenProperties.valid;
39
- if (result.tokenProperties.invalidReason) {
40
- errors.push(this.enterpriseReasonTransformer.transform(result.tokenProperties.invalidReason));
41
- }
39
+ let success = (result === null || result === void 0 ? void 0 : result.tokenProperties.valid) || false;
42
40
  if (errorDetails) {
43
41
  errors.push(error_code_1.ErrorCode.UnknownError);
44
42
  }
45
- if (!result) {
43
+ if (result) {
44
+ if (result.tokenProperties.invalidReason) {
45
+ errors.push(this.enterpriseReasonTransformer.transform(result.tokenProperties.invalidReason));
46
+ }
46
47
  if (!this.isValidAction(result.tokenProperties.action, options)) {
47
48
  success = false;
48
49
  errors.push(error_code_1.ErrorCode.ForbiddenAction);
@@ -89,15 +90,15 @@ let GoogleRecaptchaEnterpriseValidator = class GoogleRecaptchaEnterpriseValidato
89
90
  return [data, null];
90
91
  })
91
92
  .catch((err) => {
92
- var _a, _b;
93
+ var _a;
93
94
  if (this.options.debug) {
94
- this.logger.debug(((_a = err === null || err === void 0 ? void 0 : err.response) === null || _a === void 0 ? void 0 : _a.data) || err.code || { error: `${err === null || err === void 0 ? void 0 : err.name}: ${err === null || err === void 0 ? void 0 : err.message}`, stack: err === null || err === void 0 ? void 0 : err.stack }, `${google_recaptcha_context_1.GoogleRecaptchaContext.GoogleRecaptchaEnterprise}.error`);
95
+ this.logger.debug((0, get_error_info_1.getErrorInfo)(err), `${google_recaptcha_context_1.GoogleRecaptchaContext.GoogleRecaptchaEnterprise}.error`);
95
96
  }
96
97
  const networkErrorCode = err.isAxiosError && err.code;
97
98
  if (networkErrorCode) {
98
99
  throw new google_recaptcha_network_exception_1.GoogleRecaptchaNetworkException(networkErrorCode);
99
100
  }
100
- const errData = (_b = err.response) === null || _b === void 0 ? void 0 : _b.data;
101
+ const errData = (_a = err.response) === null || _a === void 0 ? void 0 : _a.data;
101
102
  return [null, errData];
102
103
  });
103
104
  }
@@ -1 +1 @@
1
- {"version":3,"file":"google-recaptcha-enterprise.validator.js","sourceRoot":"","sources":["../../../src/services/validators/google-recaptcha-enterprise.validator.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CAA2E;AAC3E,uEAA0G;AAC1G,yCAA4C;AAG5C,+FAAyF;AACzF,8FAAyF;AACzF,uDAAmD;AAEnD,4GAAsG;AACtG,mFAA8E;AAE9E,oFAA+E;AAC/E,+BAAsC;AAKtC,IAAa,kCAAkC,GAA/C,MAAa,kCAAmC,SAAQ,sEAA0D;IAG9G,YAA6D,IAAiB,EACvB,MAAc,EAC9B,OAAqC,EAC/C,2BAAwD;QACjF,KAAK,CAAC,OAAO,CAAC,CAAC;QAJ0C,SAAI,GAAJ,IAAI,CAAa;QACvB,WAAM,GAAN,MAAM,CAAQ;QAExC,gCAA2B,GAA3B,2BAA2B,CAA6B;QALpE,YAAO,GAAG,EAAC,cAAc,EAAE,kBAAkB,EAAC,CAAC;IAOhE,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,OAA8B;;QACzC,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;QAE3F,MAAM,MAAM,GAAgB,EAAE,CAAC;QAC/B,IAAI,OAAO,GAAG,MAAM,CAAC,eAAe,CAAC,KAAK,CAAC;QAE3C,IAAI,MAAM,CAAC,eAAe,CAAC,aAAa,EAAE;YACtC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,2BAA2B,CAAC,SAAS,CAAC,MAAM,CAAC,eAAe,CAAC,aAAa,CAAC,CAAC,CAAC;SACjG;QAED,IAAI,YAAY,EAAE;YACd,MAAM,CAAC,IAAI,CAAC,sBAAS,CAAC,YAAY,CAAC,CAAC;SACvC;QAED,IAAI,CAAC,MAAM,EAAE;YACT,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,eAAe,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE;gBAC7D,OAAO,GAAG,KAAK,CAAC;gBAChB,MAAM,CAAC,IAAI,CAAC,sBAAS,CAAC,eAAe,CAAC,CAAC;aAC1C;YAED,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,YAAY,CAAC,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,EAAE;gBAC9D,OAAO,GAAG,KAAK,CAAC;gBAChB,MAAM,CAAC,IAAI,CAAC,sBAAS,CAAC,QAAQ,CAAC,CAAC;aACnC;SACJ;QAED,OAAO,IAAI,2DAA2B,CAAC;YACnC,OAAO;YACP,MAAM;YACN,cAAc,EAAE,MAAM;YACtB,KAAK,EAAE,MAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,YAAY,0CAAE,KAAK;YAClC,MAAM,EAAE,MAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,eAAe,0CAAE,MAAM;YACvC,QAAQ,EAAE,CAAA,MAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,eAAe,0CAAE,QAAQ,KAAI,EAAE;SACpD,CAAC,CAAC;IACP,CAAC;IAEO,cAAc,CAAC,QAAgB,EAAE,cAAsB;QAC3D,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC;QACpD,MAAM,IAAI,GAAwC;YAC9C,KAAK,EAAE;gBACH,cAAc;gBACd,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO;gBACxC,KAAK,EAAE,QAAQ;aAClB;SACJ,CAAC;QAEF,MAAM,GAAG,GAAG,0DAA0D,SAAS,cAAc,CAAC;QAE9F,MAAM,MAAM,GAA6B;YACrC,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,MAAM,EAAE;gBACJ,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,MAAM;aACtC;SACJ,CAAC;QAEF,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE;YACpB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAC,IAAI,EAAC,EAAE,GAAG,iDAAsB,CAAC,yBAAyB,UAAU,CAAC,CAAC;SAC5F;QAED,OAAO,IAAA,qBAAc,EAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAA2B,GAAG,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;aAC7E,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC;aACrB,IAAI,CAAC,CAAC,IAAI,EAAkB,EAAE;YAC3B,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE;gBACpB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,iDAAsB,CAAC,yBAAyB,WAAW,CAAC,CAAC;aAC3F;YAED,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACxB,CAAC,CAAC;aACD,KAAK,CAAC,CAAC,GAAqB,EAAkB,EAAE;;YAC7C,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE;gBACpB,IAAI,CAAC,MAAM,CAAC,KAAK,CACb,CAAA,MAAA,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,QAAQ,0CAAE,IAAI,KAAI,GAAG,CAAC,IAAI,IAAI,EAAC,KAAK,EAAE,GAAG,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,IAAI,KAAK,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,OAAO,EAAE,EAAE,KAAK,EAAE,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,KAAK,EAAC,EAC9F,GAAG,iDAAsB,CAAC,yBAAyB,QAAQ,CAC9D,CAAC;aACL;YAED,MAAM,gBAAgB,GAAG,GAAG,CAAC,YAAY,IAAI,GAAG,CAAC,IAAI,CAAC;YAEtD,IAAI,gBAAgB,EAAE;gBAClB,MAAM,IAAI,oEAA+B,CAAC,gBAAgB,CAAC,CAAC;aAC/D;YAED,MAAM,OAAO,GAAkB,MAAA,GAAG,CAAC,QAAQ,0CAAE,IAAI,CAAC;YAElD,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAC3B,CAAC,CAAC,CAAC;IACX,CAAC;CACJ,CAAA;AAjGY,kCAAkC;IAD9C,IAAA,mBAAU,GAAE;IAII,WAAA,IAAA,eAAM,EAAC,8CAAsB,CAAC,CAAA;IAC9B,WAAA,IAAA,eAAM,EAAC,wCAAgB,CAAC,CAAA;IACxB,WAAA,IAAA,eAAM,EAAC,yCAAiB,CAAC,CAAA;qCAF6B,mBAAW;QACf,eAAM,UAEX,2DAA2B;GAN5E,kCAAkC,CAiG9C;AAjGY,gFAAkC"}
1
+ {"version":3,"file":"google-recaptcha-enterprise.validator.js","sourceRoot":"","sources":["../../../src/services/validators/google-recaptcha-enterprise.validator.ts"],"names":[],"mappings":"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"}
@@ -23,6 +23,8 @@ const axios_1 = require("@nestjs/axios");
23
23
  const abstract_google_recaptcha_validator_1 = require("./abstract-google-recaptcha-validator");
24
24
  const recaptcha_verification_result_1 = require("../../models/recaptcha-verification-result");
25
25
  const google_recaptcha_context_1 = require("../../enums/google-recaptcha-context");
26
+ const rxjs_1 = require("rxjs");
27
+ const get_error_info_1 = require("../../helpers/get-error-info");
26
28
  let GoogleRecaptchaValidator = class GoogleRecaptchaValidator extends abstract_google_recaptcha_validator_1.AbstractGoogleRecaptchaValidator {
27
29
  constructor(http, logger, options) {
28
30
  super(options);
@@ -37,9 +39,16 @@ let GoogleRecaptchaValidator = class GoogleRecaptchaValidator extends abstract_g
37
39
  */
38
40
  async validate(options) {
39
41
  const result = await this.verifyResponse(options.response);
40
- const nativeResponse = Object.assign({}, result);
41
42
  if (!this.isUseV3(result)) {
42
- return result;
43
+ const resV2 = result;
44
+ return new recaptcha_verification_result_1.RecaptchaVerificationResult({
45
+ nativeResponse: resV2,
46
+ score: undefined,
47
+ action: undefined,
48
+ errors: resV2.errors,
49
+ success: resV2.success,
50
+ hostname: resV2.hostname,
51
+ });
43
52
  }
44
53
  if (!this.isValidAction(result.action, options)) {
45
54
  result.success = false;
@@ -49,6 +58,7 @@ let GoogleRecaptchaValidator = class GoogleRecaptchaValidator extends abstract_g
49
58
  result.success = false;
50
59
  result.errors.push(error_code_1.ErrorCode.LowScore);
51
60
  }
61
+ const nativeResponse = Object.assign({}, result);
52
62
  return new recaptcha_verification_result_1.RecaptchaVerificationResult({
53
63
  nativeResponse: nativeResponse,
54
64
  score: result.score,
@@ -67,8 +77,7 @@ let GoogleRecaptchaValidator = class GoogleRecaptchaValidator extends abstract_g
67
77
  if (this.options.debug) {
68
78
  this.logger.debug({ body }, `${google_recaptcha_context_1.GoogleRecaptchaContext.GoogleRecaptcha}.request`);
69
79
  }
70
- return this.http.post(url, body, config)
71
- .toPromise()
80
+ return (0, rxjs_1.firstValueFrom)(this.http.post(url, body, config))
72
81
  .then(res => res.data)
73
82
  .then(data => {
74
83
  if (this.options.debug) {
@@ -82,9 +91,8 @@ let GoogleRecaptchaValidator = class GoogleRecaptchaValidator extends abstract_g
82
91
  return result;
83
92
  })
84
93
  .catch((err) => {
85
- var _a;
86
94
  if (this.options.debug) {
87
- this.logger.debug(((_a = err === null || err === void 0 ? void 0 : err.response) === null || _a === void 0 ? void 0 : _a.data) || err.code || { error: `${err === null || err === void 0 ? void 0 : err.name}: ${err === null || err === void 0 ? void 0 : err.message}`, stack: err === null || err === void 0 ? void 0 : err.stack }, `${google_recaptcha_context_1.GoogleRecaptchaContext.GoogleRecaptcha}.error`);
95
+ this.logger.debug((0, get_error_info_1.getErrorInfo)(err), `${google_recaptcha_context_1.GoogleRecaptchaContext.GoogleRecaptcha}.error`);
88
96
  }
89
97
  const networkErrorCode = err.isAxiosError && err.code;
90
98
  if (networkErrorCode) {
@@ -1 +1 @@
1
- {"version":3,"file":"google-recaptcha.validator.js","sourceRoot":"","sources":["../../../src/services/validators/google-recaptcha.validator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"google-recaptcha.validator.js","sourceRoot":"","sources":["../../../src/services/validators/google-recaptcha.validator.ts"],"names":[],"mappings":"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"}