@captchafox/node 1.2.0 → 1.3.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.
package/dist/index.d.mts CHANGED
@@ -27,6 +27,17 @@ type VerifyPayload = NodeJS.Dict<string> & {
27
27
  };
28
28
  declare function verify(secret: string, token: string, sitekey?: string, remoteIp?: string): Promise<VerifyResponse>;
29
29
 
30
+ type ParseErrorProps = {
31
+ code?: number;
32
+ message: string;
33
+ body: string;
34
+ };
35
+ declare class ParseError extends Error {
36
+ code: number | undefined;
37
+ body: string;
38
+ constructor({ code, message, body }: ParseErrorProps);
39
+ }
40
+
30
41
  declare const CAPTCHA_RESPONSE_KEY = "cf-captcha-response";
31
42
 
32
- export { CAPTCHA_RESPONSE_KEY, VerifyPayload, VerifyResponse, verify };
43
+ export { CAPTCHA_RESPONSE_KEY, ParseError, type VerifyPayload, type VerifyResponse, verify };
package/dist/index.d.ts CHANGED
@@ -27,6 +27,17 @@ type VerifyPayload = NodeJS.Dict<string> & {
27
27
  };
28
28
  declare function verify(secret: string, token: string, sitekey?: string, remoteIp?: string): Promise<VerifyResponse>;
29
29
 
30
+ type ParseErrorProps = {
31
+ code?: number;
32
+ message: string;
33
+ body: string;
34
+ };
35
+ declare class ParseError extends Error {
36
+ code: number | undefined;
37
+ body: string;
38
+ constructor({ code, message, body }: ParseErrorProps);
39
+ }
40
+
30
41
  declare const CAPTCHA_RESPONSE_KEY = "cf-captcha-response";
31
42
 
32
- export { CAPTCHA_RESPONSE_KEY, VerifyPayload, VerifyResponse, verify };
43
+ export { CAPTCHA_RESPONSE_KEY, ParseError, type VerifyPayload, type VerifyResponse, verify };
package/dist/index.js CHANGED
@@ -21,6 +21,7 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
21
21
  var src_exports = {};
22
22
  __export(src_exports, {
23
23
  CAPTCHA_RESPONSE_KEY: () => CAPTCHA_RESPONSE_KEY,
24
+ ParseError: () => ParseError,
24
25
  verify: () => verify
25
26
  });
26
27
  module.exports = __toCommonJS(src_exports);
@@ -28,6 +29,19 @@ module.exports = __toCommonJS(src_exports);
28
29
  // src/verify.ts
29
30
  var import_https = require("https");
30
31
  var import_querystring = require("querystring");
32
+
33
+ // src/errors/ParseError.ts
34
+ var ParseError = class extends Error {
35
+ code;
36
+ body;
37
+ constructor({ code, message, body }) {
38
+ super(message);
39
+ this.code = code;
40
+ this.body = body;
41
+ }
42
+ };
43
+
44
+ // src/verify.ts
31
45
  var HOST = "api.captchafox.com";
32
46
  var API_PATH = "/siteverify";
33
47
  async function verify(secret, token, sitekey, remoteIp) {
@@ -52,16 +66,29 @@ async function verify(secret, token, sitekey, remoteIp) {
52
66
  const apiRequest = (0, import_https.request)(options, (response) => {
53
67
  response.setEncoding("utf8");
54
68
  let responseBuffer = "";
55
- response.on("error", reject).on("data", (chunk) => responseBuffer += chunk).on("end", () => {
69
+ response.on("error", (error) => {
70
+ reject(error);
71
+ }).on("data", (chunk) => responseBuffer += chunk).on("end", () => {
56
72
  try {
57
73
  const json = JSON.parse(responseBuffer);
58
74
  resolve(json);
59
75
  } catch (error) {
76
+ if (error instanceof SyntaxError) {
77
+ const errorResponse = new ParseError({
78
+ code: response.statusCode,
79
+ message: error.message,
80
+ body: responseBuffer
81
+ });
82
+ reject(errorResponse);
83
+ return;
84
+ }
60
85
  reject(error);
61
86
  }
62
87
  });
63
88
  });
64
- apiRequest.on("error", reject);
89
+ apiRequest.on("error", (error) => {
90
+ reject(error);
91
+ });
65
92
  apiRequest.write(data);
66
93
  apiRequest.end();
67
94
  });
@@ -72,5 +99,6 @@ var CAPTCHA_RESPONSE_KEY = "cf-captcha-response";
72
99
  // Annotate the CommonJS export names for ESM import in node:
73
100
  0 && (module.exports = {
74
101
  CAPTCHA_RESPONSE_KEY,
102
+ ParseError,
75
103
  verify
76
104
  });
package/dist/index.mjs CHANGED
@@ -1,6 +1,19 @@
1
1
  // src/verify.ts
2
2
  import { request } from "https";
3
3
  import { stringify } from "querystring";
4
+
5
+ // src/errors/ParseError.ts
6
+ var ParseError = class extends Error {
7
+ code;
8
+ body;
9
+ constructor({ code, message, body }) {
10
+ super(message);
11
+ this.code = code;
12
+ this.body = body;
13
+ }
14
+ };
15
+
16
+ // src/verify.ts
4
17
  var HOST = "api.captchafox.com";
5
18
  var API_PATH = "/siteverify";
6
19
  async function verify(secret, token, sitekey, remoteIp) {
@@ -25,16 +38,29 @@ async function verify(secret, token, sitekey, remoteIp) {
25
38
  const apiRequest = request(options, (response) => {
26
39
  response.setEncoding("utf8");
27
40
  let responseBuffer = "";
28
- response.on("error", reject).on("data", (chunk) => responseBuffer += chunk).on("end", () => {
41
+ response.on("error", (error) => {
42
+ reject(error);
43
+ }).on("data", (chunk) => responseBuffer += chunk).on("end", () => {
29
44
  try {
30
45
  const json = JSON.parse(responseBuffer);
31
46
  resolve(json);
32
47
  } catch (error) {
48
+ if (error instanceof SyntaxError) {
49
+ const errorResponse = new ParseError({
50
+ code: response.statusCode,
51
+ message: error.message,
52
+ body: responseBuffer
53
+ });
54
+ reject(errorResponse);
55
+ return;
56
+ }
33
57
  reject(error);
34
58
  }
35
59
  });
36
60
  });
37
- apiRequest.on("error", reject);
61
+ apiRequest.on("error", (error) => {
62
+ reject(error);
63
+ });
38
64
  apiRequest.write(data);
39
65
  apiRequest.end();
40
66
  });
@@ -44,5 +70,6 @@ async function verify(secret, token, sitekey, remoteIp) {
44
70
  var CAPTCHA_RESPONSE_KEY = "cf-captcha-response";
45
71
  export {
46
72
  CAPTCHA_RESPONSE_KEY,
73
+ ParseError,
47
74
  verify
48
75
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@captchafox/node",
3
- "version": "1.2.0",
3
+ "version": "1.3.0",
4
4
  "main": "./dist/index.js",
5
5
  "module": "./dist/index.mjs",
6
6
  "types": "./dist/index.d.ts",
@@ -36,7 +36,7 @@
36
36
  "@types/node": "^18.13.0",
37
37
  "jest": "^29.7.0",
38
38
  "nock": "^13.3.3",
39
- "tsup": "^7.2.0",
39
+ "tsup": "^8.3.5",
40
40
  "ts-jest": "^29.1.1",
41
41
  "typescript": "^5.0.2"
42
42
  },