@friendlycaptcha/server-sdk 0.1.0 → 0.1.1

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.
@@ -24,6 +24,9 @@ jobs:
24
24
  run: |
25
25
  npm ci
26
26
 
27
+ - name: Check formatting with Prettier
28
+ run: npm run fmt:ci
29
+
27
30
  - name: Run the SDK testserver
28
31
  run: |
29
32
  docker run -d -p 1090:1090 friendlycaptcha/sdk-testserver:latest
package/README.md CHANGED
@@ -1,5 +1,7 @@
1
1
  # friendly-captcha-javascript
2
2
 
3
+ [![NPM Version badge](https://img.shields.io/npm/v/%40friendlycaptcha/server-sdk)](https://www.npmjs.com/package/@friendlycaptcha/server-sdk)
4
+
3
5
  A Javascript client for the [Friendly Captcha](https://friendlycaptcha.com) service. This client allows for easy integration and verification of captcha responses with the Friendly Captcha API.
4
6
 
5
7
  > This library is for [Friendly Captcha v2](https://developer.friendlycaptcha.com) only. If you are looking for V1, look [here](https://docs.friendlycaptcha.com)
@@ -16,23 +18,94 @@ npm install @friendlycaptcha/server-sdk
16
18
 
17
19
  ## Usage
18
20
 
19
- First configure and create a SDK client
21
+ Below are some basic examples of how to use the client.
22
+
23
+ For a more detailed example, take a look at the [example](./example) directory.
24
+
25
+ ### Initialization
26
+
27
+ ```javascript
28
+ import { FriendlyCaptchaClient } from "@friendlycaptcha/server-sdk";
29
+
30
+ const frcClient = new FriendlyCaptchaClient({
31
+ apiKey: "YOUR_API_KEY",
32
+ sitekey: "YOUR_SITEKEY",
33
+ });
34
+ ```
35
+
36
+ ### Verifying a Captcha Response
37
+
38
+ After calling `verifyCaptchaResponse` with the captcha response there are two functions on the result object that you should check:
39
+
40
+ - `wasAbleToVerify()` indicates whether we were able to verify the captcha response. This will be `false` in case there was an issue with the network/our service or if there was a mistake in the configuration.
41
+ - `shouldAccept()` indicates whether the captcha response was correct. If the client is running in non-strict mode (default) and `wasAbleToVerify()` returned `false`, this will be `true`.
42
+
43
+ Below are some examples of this behaviour.
44
+
45
+ #### Verifying a correct captcha response without issues when veryfing:
20
46
 
21
47
  ```javascript
22
- import {FriendlyCaptchaClient} from "@friendlycaptcha/server-sdk";
48
+ const result = await frcClient.verifyCaptchaResponse("CORRECT_CAPTCHA_RESPONSE_HERE");
49
+ console.log(result.wasAbleToVerify()); // true
50
+ console.log(result.shouldAccept()); // true
51
+ ```
52
+
53
+ #### Verifying an incorrect captcha response without issues when veryfing:
23
54
 
24
- // TODO
55
+ ```javascript
56
+ const result = await frcClient.verifyCaptchaResponse("INCORRECT_CAPTCHA_RESPONSE_HERE");
57
+ console.log(result.wasAbleToVerify()); // true
58
+ console.log(result.shouldAccept()); // false
25
59
  ```
26
60
 
61
+ #### Verifying an incorrect captcha response with issues (network issues or bad configuration) when veryfing in non-strict mode (default):
62
+
63
+ ```javascript
64
+ const result = await frcClient.verifyCaptchaResponse("INCORRECT_CAPTCHA_RESPONSE_HERE");
65
+ console.log(result.wasAbleToVerify()); // false
66
+ console.log(result.shouldAccept()); // true
67
+ ```
68
+
69
+ #### Verifying an incorrect captcha response with issues (network/service issues or bad configuration) when veryfing in strict mode:
70
+
71
+ ```javascript
72
+ const frcClient = new FriendlyCaptchaClient({
73
+ ...
74
+ strict: true,
75
+ });
76
+
77
+ const result = await frcClient.verifyCaptchaResponse("INCORRECT_CAPTCHA_RESPONSE_HERE");
78
+ console.log(result.wasAbleToVerify()); // false
79
+ console.log(result.shouldAccept()); // false
80
+ ```
81
+
82
+ ### Configuration
83
+
84
+ ### Configuration
85
+
86
+ The client offers several configuration options:
87
+
88
+ - **apiKey**: Your Friendly Captcha API key.
89
+ - **sitekey**: Your Friendly Captcha sitekey.
90
+ - **strict**: (Optional) In case the client was not able to verify the captcha response at all (for example if there is a network failure or a mistake in configuration), by default `verifyCaptchaResponse` returns `true` regardless. By passing `strict: true`, it will return `false` instead: every response needs to be strictly verified.
91
+ - **siteverifyEndpoint**: (Optional) The endpoint URL for the site verification API. Shorthands `eu` or `global` are also accepted. Default is `global`.
92
+ - **fetch**: (Optional) The fetch implementation to use. Defaults to `globalThis.fetch`.
93
+
27
94
  ## Development
28
95
 
29
96
  ### Install dependencies
97
+
30
98
  ```shell
31
99
  npm install
32
100
  ```
33
101
 
34
102
  ### Run the tests
103
+
104
+ First run the SDK Test server, then run `npm test`.
105
+
35
106
  ```shell
107
+ docker run -p 1090:1090 friendlycaptcha/sdk-testserver:latest
108
+
36
109
  npm test
37
110
  ```
38
111
 
@@ -53,7 +53,7 @@ export class FriendlyCaptchaClient {
53
53
  const headers = {
54
54
  "Content-Type": "application/json",
55
55
  Accept: "application/json",
56
- "X-Frc-Sdk": "friendly-captcha-javascript-sdk@" + SDK_VERSION,
56
+ "Frc-Sdk": "friendly-captcha-javascript-sdk@" + SDK_VERSION,
57
57
  "X-Api-Key": this.apiKey,
58
58
  };
59
59
  const timeout = (opts === null || opts === void 0 ? void 0 : opts.timeout) || 20000;
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../../../src/client/client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../../src/client/client.ts"],"names":[],"mappings":"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"}
@@ -74,7 +74,7 @@ export class VerifyResult {
74
74
  * Something went wrong making the request to the Friendly Captcha API, perhaps there is a network connection issue?
75
75
  */
76
76
  isRequestOrTimeoutError() {
77
- return this.clientErrorType === REQUEST_FAILED_ERROR_CODE || this.clientErrorType === REQUEST_FAILED_TIMEOUT_ERROR_CODE;
77
+ return (this.clientErrorType === REQUEST_FAILED_ERROR_CODE || this.clientErrorType === REQUEST_FAILED_TIMEOUT_ERROR_CODE);
78
78
  }
79
79
  /**
80
80
  * Something went wrong decoding the response from the Friendly Captcha API.
@@ -113,7 +113,7 @@ export class VerifyResult {
113
113
  * If this is false, you should notify yourself and use `getErrorCode()` and `getResponseError()` to see what is wrong.
114
114
  */
115
115
  wasAbleToVerify() {
116
- // If we failed to encode, we actually consider `wasAbleToVerify` to be true. This is because we don't want to
116
+ // If we failed to encode, we actually consider `wasAbleToVerify` to be true. This is because we don't want to
117
117
  // alert on failed encoding: an attacker could send such malformed data that it fails to encode.
118
118
  if (this.isEncodeError()) {
119
119
  return true;
@@ -1 +1 @@
1
- {"version":3,"file":"result.js","sourceRoot":"","sources":["../../../src/client/result.ts"],"names":[],"mappings":"AACA,OAAO,EACL,+BAA+B,EAC/B,oCAAoC,EACpC,2BAA2B,EAC3B,yBAAyB,EACzB,iCAAiC,GAElC,MAAM,aAAa,CAAC;AAErB;;;;GAIG;AACH,MAAM,OAAO,YAAY;IAevB,YAAY,MAAe;QAZ3B;;;WAGG;QACI,WAAM,GAAW,CAAC,CAAC,CAAC;QAE3B;;WAEG;QACI,aAAQ,GAA8B,IAAI,CAAC;QAC3C,oBAAe,GAAiC,IAAI,CAAC;QAG1D,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAED;;OAEG;IACI,QAAQ;QACb,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED;;;OAGG;IACI,YAAY;QACjB,IAAI,IAAI,CAAC,eAAe,EAAE,EAAE;YAC1B,gGAAgG;YAChG,6GAA6G;YAC7G,qCAAqC;YACrC,IAAI,IAAI,CAAC,aAAa,EAAE,EAAE;gBACxB,OAAO,KAAK,CAAC;aACd;YAED,OAAO,IAAI,CAAC,QAAS,CAAC,OAAO,KAAK,IAAI,CAAC;SACxC;QACD,IAAI,IAAI,CAAC,eAAe,KAAK,IAAI,EAAE;YACjC,IAAI,IAAI,CAAC,MAAM,EAAE;gBACf,yCAAyC;gBACzC,OAAO,KAAK,CAAC;aACd;iBAAM,IACL,IAAI,CAAC,eAAe,KAAK,yBAAyB;gBAClD,IAAI,CAAC,eAAe,KAAK,iCAAiC;gBAC1D,IAAI,CAAC,eAAe,KAAK,+BAA+B;gBACxD,IAAI,CAAC,eAAe,KAAK,oCAAoC,EAC7D;gBACA,8FAA8F;gBAC9F,mHAAmH;gBACnH,OAAO,IAAI,CAAC;aACb;iBAAM;gBACL,OAAO,KAAK,CAAC;aACd;SACF;QAED,MAAM,IAAI,KAAK,CACb,6HAA6H;YAC3H,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CACvB,CAAC;IACJ,CAAC;IAED;;OAEG;IACI,YAAY;QACjB,OAAO,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;IAC9B,CAAC;IAED;;OAEG;IACI,aAAa;QAClB,OAAO,IAAI,CAAC,eAAe,KAAK,2BAA2B,CAAC;IAC9D,CAAC;IAED;;OAEG;IACI,uBAAuB;QAC5B,OAAO,IAAI,CAAC,eAAe,KAAK,yBAAyB,IAAI,IAAI,CAAC,eAAe,KAAK,iCAAiC,CAAC;IAC1H,CAAC;IAED;;OAEG;IACI,aAAa;QAClB,OAAO,IAAI,CAAC,eAAe,KAAK,oCAAoC,CAAC;IACvE,CAAC;IAED;;;;;OAKG;IACI,aAAa;QAClB,OAAO,IAAI,CAAC,eAAe,KAAK,+BAA+B,CAAC;IAClE,CAAC;IACD;;OAEG;IACI,WAAW;QAChB,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;IAED;;OAEG;IACI,gBAAgB;QACrB,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO;YAAE,OAAO,IAAI,CAAC;QACzD,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;IAC7B,CAAC;IAEM,YAAY;QACjB,OAAO,IAAI,CAAC,eAAe,CAAC;IAC9B,CAAC;IAED;;;OAGG;IACI,eAAe;QACpB,+GAA+G;QAC/G,gGAAgG;QAChG,IAAI,IAAI,CAAC,aAAa,EAAE,EAAE;YACxB,OAAO,IAAI,CAAC;SACb;QAED,8FAA8F;QAC9F,OAAO,IAAI,CAAC,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,uBAAuB,EAAE,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;IACzF,CAAC;CACF"}
1
+ {"version":3,"file":"result.js","sourceRoot":"","sources":["../../../src/client/result.ts"],"names":[],"mappings":"AACA,OAAO,EACL,+BAA+B,EAC/B,oCAAoC,EACpC,2BAA2B,EAC3B,yBAAyB,EACzB,iCAAiC,GAElC,MAAM,aAAa,CAAC;AAErB;;;;GAIG;AACH,MAAM,OAAO,YAAY;IAcvB,YAAY,MAAe;QAZ3B;;;WAGG;QACI,WAAM,GAAW,CAAC,CAAC,CAAC;QAE3B;;WAEG;QACI,aAAQ,GAA8B,IAAI,CAAC;QAC3C,oBAAe,GAAiC,IAAI,CAAC;QAG1D,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAED;;OAEG;IACI,QAAQ;QACb,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED;;;OAGG;IACI,YAAY;QACjB,IAAI,IAAI,CAAC,eAAe,EAAE,EAAE;YAC1B,gGAAgG;YAChG,6GAA6G;YAC7G,qCAAqC;YACrC,IAAI,IAAI,CAAC,aAAa,EAAE,EAAE;gBACxB,OAAO,KAAK,CAAC;aACd;YAED,OAAO,IAAI,CAAC,QAAS,CAAC,OAAO,KAAK,IAAI,CAAC;SACxC;QACD,IAAI,IAAI,CAAC,eAAe,KAAK,IAAI,EAAE;YACjC,IAAI,IAAI,CAAC,MAAM,EAAE;gBACf,yCAAyC;gBACzC,OAAO,KAAK,CAAC;aACd;iBAAM,IACL,IAAI,CAAC,eAAe,KAAK,yBAAyB;gBAClD,IAAI,CAAC,eAAe,KAAK,iCAAiC;gBAC1D,IAAI,CAAC,eAAe,KAAK,+BAA+B;gBACxD,IAAI,CAAC,eAAe,KAAK,oCAAoC,EAC7D;gBACA,8FAA8F;gBAC9F,mHAAmH;gBACnH,OAAO,IAAI,CAAC;aACb;iBAAM;gBACL,OAAO,KAAK,CAAC;aACd;SACF;QAED,MAAM,IAAI,KAAK,CACb,6HAA6H;YAC3H,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CACvB,CAAC;IACJ,CAAC;IAED;;OAEG;IACI,YAAY;QACjB,OAAO,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;IAC9B,CAAC;IAED;;OAEG;IACI,aAAa;QAClB,OAAO,IAAI,CAAC,eAAe,KAAK,2BAA2B,CAAC;IAC9D,CAAC;IAED;;OAEG;IACI,uBAAuB;QAC5B,OAAO,CACL,IAAI,CAAC,eAAe,KAAK,yBAAyB,IAAI,IAAI,CAAC,eAAe,KAAK,iCAAiC,CACjH,CAAC;IACJ,CAAC;IAED;;OAEG;IACI,aAAa;QAClB,OAAO,IAAI,CAAC,eAAe,KAAK,oCAAoC,CAAC;IACvE,CAAC;IAED;;;;;OAKG;IACI,aAAa;QAClB,OAAO,IAAI,CAAC,eAAe,KAAK,+BAA+B,CAAC;IAClE,CAAC;IACD;;OAEG;IACI,WAAW;QAChB,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;IAED;;OAEG;IACI,gBAAgB;QACrB,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO;YAAE,OAAO,IAAI,CAAC;QACzD,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;IAC7B,CAAC;IAEM,YAAY;QACjB,OAAO,IAAI,CAAC,eAAe,CAAC;IAC9B,CAAC;IAED;;;OAGG;IACI,eAAe;QACpB,8GAA8G;QAC9G,gGAAgG;QAChG,IAAI,IAAI,CAAC,aAAa,EAAE,EAAE;YACxB,OAAO,IAAI,CAAC;SACb;QAED,8FAA8F;QAC9F,OAAO,IAAI,CAAC,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,uBAAuB,EAAE,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;IACzF,CAAC;CACF"}
@@ -1 +1 @@
1
- export declare const SDK_VERSION = "0.1.0";
1
+ export declare const SDK_VERSION = "0.1.1";
@@ -1,4 +1,4 @@
1
1
  // This file is auto-generated by scripts/updateVersion.mjs
2
2
  // Do not edit this file directly
3
- export const SDK_VERSION = "0.1.0";
3
+ export const SDK_VERSION = "0.1.1";
4
4
  //# sourceMappingURL=version.gen.js.map
@@ -0,0 +1,29 @@
1
+ # Friendly Captcha Express Example
2
+
3
+ This application integrates Friendly Captcha for form submissions using Express.
4
+
5
+ ### Requirements
6
+
7
+ - NPM
8
+ - Your Friendly Captcha API key and sitekey.
9
+
10
+ ### Start the application
11
+
12
+ - Install dependencies
13
+
14
+ ```bash
15
+ npm install
16
+ ```
17
+
18
+ - Setup env variables and start the application
19
+
20
+ > NOTE: `FRC_SITEVERIFY_ENDPOINT` and `FRC_WIDGET_ENDPOINT` are optional. If not set, the default values will be used. You can also use `global` or `eu` as shorthands for both.
21
+
22
+ ```bash
23
+ FRC_APIKEY=<your API key> FRC_SITEKEY=<your sitekey> FRC_SITEVERIFY_ENDPOINT=<siteverify endpoint> FRC_WIDGET_ENDPOINT=<widget endpoint> npm run start
24
+ ```
25
+
26
+ # Usage
27
+
28
+ Navigate to http://localhost:3000/ in your browser.
29
+ Fill out the form and submit. The Friendly Captcha verification will protect the form from bots.