@prosopo/api 1.0.1 → 2.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.
- package/dist/api/HttpClientBase.d.ts.map +1 -1
- package/dist/api/HttpClientBase.js +10 -7
- package/dist/api/HttpClientBase.js.map +1 -1
- package/dist/api/HttpError.d.ts.map +1 -1
- package/dist/api/HttpError.js +1 -1
- package/dist/api/HttpError.js.map +1 -1
- package/dist/api/ProviderApi.d.ts +8 -10
- package/dist/api/ProviderApi.d.ts.map +1 -1
- package/dist/api/ProviderApi.js +27 -15
- package/dist/api/ProviderApi.js.map +1 -1
- package/dist/api/index.d.ts +2 -2
- package/dist/api/index.d.ts.map +1 -1
- package/dist/api/index.js +2 -2
- package/dist/api/index.js.map +1 -1
- package/dist/cjs/api/HttpClientBase.cjs +4 -1
- package/dist/cjs/api/ProviderApi.cjs +23 -14
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/package.json +40 -47
- package/vite.cjs.config.ts +3 -3
- package/typedoc.config.js +0 -19
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HttpClientBase.d.ts","sourceRoot":"","sources":["../../src/api/HttpClientBase.ts"],"names":[],"mappings":"AAeA,qBAAa,cAAc;
|
|
1
|
+
{"version":3,"file":"HttpClientBase.d.ts","sourceRoot":"","sources":["../../src/api/HttpClientBase.ts"],"names":[],"mappings":"AAeA,qBAAa,cAAc;IAC1B,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;gBAEvB,OAAO,EAAE,MAAM,EAAE,MAAM,SAAK;cAIxB,KAAK,CAAC,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,IAAI,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,CAAC,CAAC;cAY5D,IAAI,CAAC,CAAC,EAAE,CAAC,EACxB,KAAK,EAAE,WAAW,EAClB,IAAI,EAAE,CAAC,EACP,IAAI,CAAC,EAAE,WAAW,GAChB,OAAO,CAAC,CAAC,CAAC;cAqBG,eAAe,CAAC,CAAC,EAAE,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,CAAC,CAAC;IASlE,SAAS,CAAC,YAAY,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;CAQpD;AAED,eAAe,cAAc,CAAC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { HttpError } from
|
|
1
|
+
import { HttpError } from "./HttpError.js";
|
|
2
2
|
export class HttpClientBase {
|
|
3
|
-
constructor(baseURL, prefix =
|
|
3
|
+
constructor(baseURL, prefix = "") {
|
|
4
4
|
this.baseURL = baseURL + prefix;
|
|
5
5
|
}
|
|
6
6
|
async fetch(input, init) {
|
|
@@ -16,10 +16,13 @@ export class HttpClientBase {
|
|
|
16
16
|
}
|
|
17
17
|
}
|
|
18
18
|
async post(input, body, init) {
|
|
19
|
-
const headers = {
|
|
19
|
+
const headers = {
|
|
20
|
+
"Content-Type": "application/json",
|
|
21
|
+
...(init?.headers || {}),
|
|
22
|
+
};
|
|
20
23
|
try {
|
|
21
24
|
const response = await fetch(this.baseURL + input, {
|
|
22
|
-
method:
|
|
25
|
+
method: "POST",
|
|
23
26
|
body: JSON.stringify(body),
|
|
24
27
|
headers,
|
|
25
28
|
...init,
|
|
@@ -38,16 +41,16 @@ export class HttpClientBase {
|
|
|
38
41
|
return await response.json();
|
|
39
42
|
}
|
|
40
43
|
catch (error) {
|
|
41
|
-
console.error(
|
|
44
|
+
console.error("Error parsing JSON:", error);
|
|
42
45
|
throw error;
|
|
43
46
|
}
|
|
44
47
|
}
|
|
45
48
|
errorHandler(error) {
|
|
46
49
|
if (error instanceof HttpError) {
|
|
47
|
-
console.error(
|
|
50
|
+
console.error("HTTP error:", error);
|
|
48
51
|
}
|
|
49
52
|
else {
|
|
50
|
-
console.error(
|
|
53
|
+
console.error("API request error:", error);
|
|
51
54
|
}
|
|
52
55
|
return Promise.reject(error);
|
|
53
56
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HttpClientBase.js","sourceRoot":"","sources":["../../src/api/HttpClientBase.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,
|
|
1
|
+
{"version":3,"file":"HttpClientBase.js","sourceRoot":"","sources":["../../src/api/HttpClientBase.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE3C,MAAM,OAAO,cAAc;IAG1B,YAAY,OAAe,EAAE,MAAM,GAAG,EAAE;QACvC,IAAI,CAAC,OAAO,GAAG,OAAO,GAAG,MAAM,CAAC;IACjC,CAAC;IAES,KAAK,CAAC,KAAK,CAAI,KAAkB,EAAE,IAAkB;QAC9D,IAAI;YACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC,OAAO,GAAG,KAAK,EAAE,IAAI,CAAC,CAAC;YACzD,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE;gBACjB,MAAM,IAAI,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC;aACxE;YACD,OAAO,IAAI,CAAC,eAAe,CAAI,QAAQ,CAAC,CAAC;SACzC;QAAC,OAAO,KAAK,EAAE;YACf,OAAO,IAAI,CAAC,YAAY,CAAC,KAAc,CAAC,CAAC;SACzC;IACF,CAAC;IAES,KAAK,CAAC,IAAI,CACnB,KAAkB,EAClB,IAAO,EACP,IAAkB;QAElB,MAAM,OAAO,GAAG;YACf,cAAc,EAAE,kBAAkB;YAClC,GAAG,CAAC,IAAI,EAAE,OAAO,IAAI,EAAE,CAAC;SACxB,CAAC;QACF,IAAI;YACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC,OAAO,GAAG,KAAK,EAAE;gBAClD,MAAM,EAAE,MAAM;gBACd,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;gBAC1B,OAAO;gBACP,GAAG,IAAI;aACP,CAAC,CAAC;YACH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE;gBACjB,MAAM,IAAI,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC;aACxE;YACD,OAAO,IAAI,CAAC,eAAe,CAAI,QAAQ,CAAC,CAAC;SACzC;QAAC,OAAO,KAAK,EAAE;YACf,OAAO,IAAI,CAAC,YAAY,CAAC,KAAc,CAAC,CAAC;SACzC;IACF,CAAC;IAES,KAAK,CAAC,eAAe,CAAI,QAAkB;QACpD,IAAI;YACH,OAAO,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;SAC7B;QAAC,OAAO,KAAK,EAAE;YACf,OAAO,CAAC,KAAK,CAAC,qBAAqB,EAAE,KAAK,CAAC,CAAC;YAC5C,MAAM,KAAK,CAAC;SACZ;IACF,CAAC;IAES,YAAY,CAAC,KAAY;QAClC,IAAI,KAAK,YAAY,SAAS,EAAE;YAC/B,OAAO,CAAC,KAAK,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;SACpC;aAAM;YACN,OAAO,CAAC,KAAK,CAAC,oBAAoB,EAAE,KAAK,CAAC,CAAC;SAC3C;QACD,OAAO,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC9B,CAAC;CACD;AAED,eAAe,cAAc,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HttpError.d.ts","sourceRoot":"","sources":["../../src/api/HttpError.ts"],"names":[],"mappings":"AAaA,qBAAa,SAAU,SAAQ,KAAK;
|
|
1
|
+
{"version":3,"file":"HttpError.d.ts","sourceRoot":"","sources":["../../src/api/HttpError.ts"],"names":[],"mappings":"AAaA,qBAAa,SAAU,SAAQ,KAAK;IAE3B,MAAM,EAAE,MAAM;IACd,UAAU,EAAE,MAAM;IAClB,GAAG,EAAE,MAAM;gBAFX,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,EAClB,GAAG,EAAE,MAAM;CAKnB"}
|
package/dist/api/HttpError.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HttpError.js","sourceRoot":"","sources":["../../src/api/HttpError.ts"],"names":[],"mappings":"AAaA,MAAM,OAAO,SAAU,SAAQ,KAAK;
|
|
1
|
+
{"version":3,"file":"HttpError.js","sourceRoot":"","sources":["../../src/api/HttpError.ts"],"names":[],"mappings":"AAaA,MAAM,OAAO,SAAU,SAAQ,KAAK;IACnC,YACQ,MAAc,EACd,UAAkB,EAClB,GAAW;QAElB,KAAK,CAAC,uBAAuB,MAAM,KAAK,UAAU,cAAc,GAAG,EAAE,CAAC,CAAC;QAJhE,WAAM,GAAN,MAAM,CAAQ;QACd,eAAU,GAAV,UAAU,CAAQ;QAClB,QAAG,GAAH,GAAG,CAAQ;QAGlB,IAAI,CAAC,IAAI,GAAG,WAAW,CAAC;IACzB,CAAC;CACD"}
|
|
@@ -1,18 +1,16 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import
|
|
3
|
-
import { Provider, RandomProvider } from '@prosopo/captcha-contract/types-returns';
|
|
4
|
-
import HttpClientBase from './HttpClientBase.js';
|
|
1
|
+
import { type CaptchaResponseBody, type CaptchaSolution, type CaptchaSolutionResponse, type GetPowCaptchaResponse, type ImageVerificationResponse, type NetworkConfig, type PowCaptchaSolutionResponse, type ProcaptchaToken, type Provider, type ProviderRegistered, type RandomProvider, type StoredEvents, type VerificationResponse } from "@prosopo/types";
|
|
2
|
+
import HttpClientBase from "./HttpClientBase.js";
|
|
5
3
|
export default class ProviderApi extends HttpClientBase implements ProviderApi {
|
|
6
4
|
private network;
|
|
7
5
|
private account;
|
|
8
|
-
constructor(network: NetworkConfig, providerUrl: string, account:
|
|
9
|
-
getCaptchaChallenge(userAccount:
|
|
10
|
-
submitCaptchaSolution(captchas: CaptchaSolution[], requestHash: string, userAccount:
|
|
6
|
+
constructor(network: NetworkConfig, providerUrl: string, account: string);
|
|
7
|
+
getCaptchaChallenge(userAccount: string, randomProvider: RandomProvider): Promise<CaptchaResponseBody>;
|
|
8
|
+
submitCaptchaSolution(captchas: CaptchaSolution[], requestHash: string, userAccount: string, salt: string, timestamp: string, providerTimestampSignature: string, userRequestHashSignature: string): Promise<CaptchaSolutionResponse>;
|
|
11
9
|
verifyDappUser(token: ProcaptchaToken, dappUserSignature: string, maxVerifiedTime?: number): Promise<ImageVerificationResponse>;
|
|
12
10
|
verifyUser(token: ProcaptchaToken, dappUserSignature: string, maxVerifiedTime?: number): Promise<ImageVerificationResponse>;
|
|
13
|
-
getPowCaptchaChallenge(user:
|
|
14
|
-
submitPowCaptchaSolution(challenge: GetPowCaptchaResponse, userAccount:
|
|
15
|
-
submitUserEvents(events: StoredEvents,
|
|
11
|
+
getPowCaptchaChallenge(user: string, dapp: string): Promise<GetPowCaptchaResponse>;
|
|
12
|
+
submitPowCaptchaSolution(challenge: GetPowCaptchaResponse, userAccount: string, dappAccount: string, nonce: number, userTimestampSignature: string, timeout?: number): Promise<PowCaptchaSolutionResponse>;
|
|
13
|
+
submitUserEvents(events: StoredEvents, string: string): Promise<unknown>;
|
|
16
14
|
getProviderStatus(): Promise<ProviderRegistered>;
|
|
17
15
|
getProviderDetails(): Promise<Provider>;
|
|
18
16
|
submitPowCaptchaVerify(token: string, signatureHex: string, recencyLimit: number): Promise<VerificationResponse>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProviderApi.d.ts","sourceRoot":"","sources":["../../src/api/ProviderApi.ts"],"names":[],"mappings":"AAaA,OAAO,
|
|
1
|
+
{"version":3,"file":"ProviderApi.d.ts","sourceRoot":"","sources":["../../src/api/ProviderApi.ts"],"names":[],"mappings":"AAaA,OAAO,EAGL,KAAK,mBAAmB,EACxB,KAAK,eAAe,EAGpB,KAAK,uBAAuB,EAE5B,KAAK,qBAAqB,EAC1B,KAAK,yBAAyB,EAC9B,KAAK,aAAa,EAClB,KAAK,0BAA0B,EAC/B,KAAK,eAAe,EACpB,KAAK,QAAQ,EACb,KAAK,kBAAkB,EACvB,KAAK,cAAc,EAEnB,KAAK,YAAY,EAEjB,KAAK,oBAAoB,EAE1B,MAAM,gBAAgB,CAAC;AACxB,OAAO,cAAc,MAAM,qBAAqB,CAAC;AAEjD,MAAM,CAAC,OAAO,OAAO,WAAY,SAAQ,cAAe,YAAW,WAAW;IAC5E,OAAO,CAAC,OAAO,CAAgB;IAC/B,OAAO,CAAC,OAAO,CAAS;gBAEZ,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;IASjE,mBAAmB,CACxB,WAAW,EAAE,MAAM,EACnB,cAAc,EAAE,cAAc,GAC7B,OAAO,CAAC,mBAAmB,CAAC;IASxB,qBAAqB,CAC1B,QAAQ,EAAE,eAAe,EAAE,EAC3B,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,MAAM,EACjB,0BAA0B,EAAE,MAAM,EAClC,wBAAwB,EAAE,MAAM,GAC/B,OAAO,CAAC,uBAAuB,CAAC;IAqB5B,cAAc,CACnB,KAAK,EAAE,eAAe,EACtB,iBAAiB,EAAE,MAAM,EACzB,eAAe,CAAC,EAAE,MAAM,GACvB,OAAO,CAAC,yBAAyB,CAAC;IAY9B,UAAU,CACf,KAAK,EAAE,eAAe,EACtB,iBAAiB,EAAE,MAAM,EACzB,eAAe,CAAC,EAAE,MAAM,GACvB,OAAO,CAAC,yBAAyB,CAAC;IAU9B,sBAAsB,CAC3B,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,qBAAqB,CAAC;IAQ1B,wBAAwB,CAC7B,SAAS,EAAE,qBAAqB,EAChC,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,MAAM,EACb,sBAAsB,EAAE,MAAM,EAC9B,OAAO,CAAC,EAAE,MAAM,GACf,OAAO,CAAC,0BAA0B,CAAC;IAoB/B,gBAAgB,CAAC,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM;IAIrD,iBAAiB,IAAI,OAAO,CAAC,kBAAkB,CAAC;IAIhD,kBAAkB,IAAI,OAAO,CAAC,QAAQ,CAAC;IAIvC,sBAAsB,CAC3B,KAAK,EAAE,MAAM,EACb,YAAY,EAAE,MAAM,EACpB,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,oBAAoB,CAAC;CAQjC"}
|
package/dist/api/ProviderApi.js
CHANGED
|
@@ -1,28 +1,36 @@
|
|
|
1
|
-
import { ApiParams, ApiPaths, CaptchaSolutionBody, SubmitPowCaptchaSolutionBody, } from
|
|
2
|
-
import HttpClientBase from
|
|
1
|
+
import { ApiParams, ApiPaths, CaptchaSolutionBody, SubmitPowCaptchaSolutionBody, } from "@prosopo/types";
|
|
2
|
+
import HttpClientBase from "./HttpClientBase.js";
|
|
3
3
|
export default class ProviderApi extends HttpClientBase {
|
|
4
4
|
constructor(network, providerUrl, account) {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
super(
|
|
5
|
+
const providerUrlWithProtocol = !providerUrl.startsWith("http")
|
|
6
|
+
? `https://${providerUrl}`
|
|
7
|
+
: providerUrl;
|
|
8
|
+
super(providerUrlWithProtocol);
|
|
9
9
|
this.network = network;
|
|
10
10
|
this.account = account;
|
|
11
11
|
}
|
|
12
12
|
getCaptchaChallenge(userAccount, randomProvider) {
|
|
13
13
|
const { provider, blockNumber } = randomProvider;
|
|
14
14
|
const dappAccount = this.account;
|
|
15
|
-
const url = `${ApiPaths.GetImageCaptchaChallenge}/${provider.datasetId}/${userAccount}/${dappAccount}/${blockNumber.toString().replace(/,/g,
|
|
15
|
+
const url = `${ApiPaths.GetImageCaptchaChallenge}/${provider.datasetId}/${userAccount}/${dappAccount}/${blockNumber.toString().replace(/,/g, "")}`;
|
|
16
16
|
return this.fetch(url);
|
|
17
17
|
}
|
|
18
|
-
submitCaptchaSolution(captchas, requestHash, userAccount, salt,
|
|
18
|
+
submitCaptchaSolution(captchas, requestHash, userAccount, salt, timestamp, providerTimestampSignature, userRequestHashSignature) {
|
|
19
19
|
const captchaSolutionBody = CaptchaSolutionBody.parse({
|
|
20
20
|
captchas,
|
|
21
21
|
requestHash,
|
|
22
22
|
[ApiParams.user]: userAccount,
|
|
23
23
|
[ApiParams.dapp]: this.account,
|
|
24
24
|
salt,
|
|
25
|
-
|
|
25
|
+
[ApiParams.timestamp]: timestamp,
|
|
26
|
+
[ApiParams.signature]: {
|
|
27
|
+
[ApiParams.user]: {
|
|
28
|
+
[ApiParams.requestHash]: userRequestHashSignature,
|
|
29
|
+
},
|
|
30
|
+
[ApiParams.provider]: {
|
|
31
|
+
[ApiParams.timestamp]: providerTimestampSignature,
|
|
32
|
+
},
|
|
33
|
+
},
|
|
26
34
|
});
|
|
27
35
|
return this.post(ApiPaths.SubmitImageCaptchaSolution, captchaSolutionBody);
|
|
28
36
|
}
|
|
@@ -51,22 +59,26 @@ export default class ProviderApi extends HttpClientBase {
|
|
|
51
59
|
};
|
|
52
60
|
return this.post(ApiPaths.GetPowCaptchaChallenge, body);
|
|
53
61
|
}
|
|
54
|
-
submitPowCaptchaSolution(challenge, userAccount, dappAccount,
|
|
55
|
-
const { blockNumber } = randomProvider;
|
|
62
|
+
submitPowCaptchaSolution(challenge, userAccount, dappAccount, nonce, userTimestampSignature, timeout) {
|
|
56
63
|
const body = SubmitPowCaptchaSolutionBody.parse({
|
|
57
|
-
[ApiParams.blockNumber]: blockNumber,
|
|
58
64
|
[ApiParams.challenge]: challenge.challenge,
|
|
59
65
|
[ApiParams.difficulty]: challenge.difficulty,
|
|
60
|
-
[ApiParams.
|
|
66
|
+
[ApiParams.timestamp]: challenge.timestamp,
|
|
61
67
|
[ApiParams.user]: userAccount.toString(),
|
|
62
68
|
[ApiParams.dapp]: dappAccount.toString(),
|
|
63
69
|
[ApiParams.nonce]: nonce,
|
|
64
70
|
[ApiParams.verifiedTimeout]: timeout,
|
|
71
|
+
[ApiParams.signature]: {
|
|
72
|
+
[ApiParams.provider]: challenge[ApiParams.signature][ApiParams.provider],
|
|
73
|
+
[ApiParams.user]: {
|
|
74
|
+
[ApiParams.timestamp]: userTimestampSignature,
|
|
75
|
+
},
|
|
76
|
+
},
|
|
65
77
|
});
|
|
66
78
|
return this.post(ApiPaths.SubmitPowCaptchaSolution, body);
|
|
67
79
|
}
|
|
68
|
-
submitUserEvents(events,
|
|
69
|
-
return this.post(ApiPaths.SubmitUserEvents, { events,
|
|
80
|
+
submitUserEvents(events, string) {
|
|
81
|
+
return this.post(ApiPaths.SubmitUserEvents, { events, string });
|
|
70
82
|
}
|
|
71
83
|
getProviderStatus() {
|
|
72
84
|
return this.fetch(ApiPaths.GetProviderStatus);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProviderApi.js","sourceRoot":"","sources":["../../src/api/ProviderApi.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ProviderApi.js","sourceRoot":"","sources":["../../src/api/ProviderApi.ts"],"names":[],"mappings":"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"}
|
package/dist/api/index.d.ts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export * from
|
|
2
|
-
export { default as ProviderApi } from
|
|
1
|
+
export * from "./HttpClientBase.js";
|
|
2
|
+
export { default as ProviderApi } from "./ProviderApi.js";
|
|
3
3
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/api/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/api/index.ts"],"names":[],"mappings":"AAaA,cAAc,qBAAqB,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/api/index.ts"],"names":[],"mappings":"AAaA,cAAc,qBAAqB,CAAC;AACpC,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,kBAAkB,CAAC"}
|
package/dist/api/index.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export * from
|
|
2
|
-
export { default as ProviderApi } from
|
|
1
|
+
export * from "./HttpClientBase.js";
|
|
2
|
+
export { default as ProviderApi } from "./ProviderApi.js";
|
|
3
3
|
//# sourceMappingURL=index.js.map
|
package/dist/api/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/api/index.ts"],"names":[],"mappings":"AAaA,cAAc,qBAAqB,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/api/index.ts"],"names":[],"mappings":"AAaA,cAAc,qBAAqB,CAAC;AACpC,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,kBAAkB,CAAC"}
|
|
@@ -17,7 +17,10 @@ class HttpClientBase {
|
|
|
17
17
|
}
|
|
18
18
|
}
|
|
19
19
|
async post(input, body, init) {
|
|
20
|
-
const headers = {
|
|
20
|
+
const headers = {
|
|
21
|
+
"Content-Type": "application/json",
|
|
22
|
+
...init?.headers || {}
|
|
23
|
+
};
|
|
21
24
|
try {
|
|
22
25
|
const response = await fetch(this.baseURL + input, {
|
|
23
26
|
method: "POST",
|
|
@@ -3,10 +3,8 @@ const types = require("@prosopo/types");
|
|
|
3
3
|
const HttpClientBase = require("./HttpClientBase.cjs");
|
|
4
4
|
class ProviderApi extends HttpClientBase.HttpClientBase {
|
|
5
5
|
constructor(network, providerUrl, account) {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
}
|
|
9
|
-
super(providerUrl);
|
|
6
|
+
const providerUrlWithProtocol = !providerUrl.startsWith("http") ? `https://${providerUrl}` : providerUrl;
|
|
7
|
+
super(providerUrlWithProtocol);
|
|
10
8
|
this.network = network;
|
|
11
9
|
this.account = account;
|
|
12
10
|
}
|
|
@@ -16,14 +14,22 @@ class ProviderApi extends HttpClientBase.HttpClientBase {
|
|
|
16
14
|
const url = `${types.ApiPaths.GetImageCaptchaChallenge}/${provider.datasetId}/${userAccount}/${dappAccount}/${blockNumber.toString().replace(/,/g, "")}`;
|
|
17
15
|
return this.fetch(url);
|
|
18
16
|
}
|
|
19
|
-
submitCaptchaSolution(captchas, requestHash, userAccount, salt,
|
|
17
|
+
submitCaptchaSolution(captchas, requestHash, userAccount, salt, timestamp, providerTimestampSignature, userRequestHashSignature) {
|
|
20
18
|
const captchaSolutionBody = types.CaptchaSolutionBody.parse({
|
|
21
19
|
captchas,
|
|
22
20
|
requestHash,
|
|
23
21
|
[types.ApiParams.user]: userAccount,
|
|
24
22
|
[types.ApiParams.dapp]: this.account,
|
|
25
23
|
salt,
|
|
26
|
-
|
|
24
|
+
[types.ApiParams.timestamp]: timestamp,
|
|
25
|
+
[types.ApiParams.signature]: {
|
|
26
|
+
[types.ApiParams.user]: {
|
|
27
|
+
[types.ApiParams.requestHash]: userRequestHashSignature
|
|
28
|
+
},
|
|
29
|
+
[types.ApiParams.provider]: {
|
|
30
|
+
[types.ApiParams.timestamp]: providerTimestampSignature
|
|
31
|
+
}
|
|
32
|
+
}
|
|
27
33
|
});
|
|
28
34
|
return this.post(types.ApiPaths.SubmitImageCaptchaSolution, captchaSolutionBody);
|
|
29
35
|
}
|
|
@@ -52,23 +58,26 @@ class ProviderApi extends HttpClientBase.HttpClientBase {
|
|
|
52
58
|
};
|
|
53
59
|
return this.post(types.ApiPaths.GetPowCaptchaChallenge, body);
|
|
54
60
|
}
|
|
55
|
-
submitPowCaptchaSolution(challenge, userAccount, dappAccount,
|
|
56
|
-
const { blockNumber } = randomProvider;
|
|
61
|
+
submitPowCaptchaSolution(challenge, userAccount, dappAccount, nonce, userTimestampSignature, timeout) {
|
|
57
62
|
const body = types.SubmitPowCaptchaSolutionBody.parse({
|
|
58
|
-
[types.ApiParams.blockNumber]: blockNumber,
|
|
59
63
|
[types.ApiParams.challenge]: challenge.challenge,
|
|
60
64
|
[types.ApiParams.difficulty]: challenge.difficulty,
|
|
61
|
-
[types.ApiParams.
|
|
62
|
-
// TODO add utility to convert `AccountId` to string
|
|
65
|
+
[types.ApiParams.timestamp]: challenge.timestamp,
|
|
63
66
|
[types.ApiParams.user]: userAccount.toString(),
|
|
64
67
|
[types.ApiParams.dapp]: dappAccount.toString(),
|
|
65
68
|
[types.ApiParams.nonce]: nonce,
|
|
66
|
-
[types.ApiParams.verifiedTimeout]: timeout
|
|
69
|
+
[types.ApiParams.verifiedTimeout]: timeout,
|
|
70
|
+
[types.ApiParams.signature]: {
|
|
71
|
+
[types.ApiParams.provider]: challenge[types.ApiParams.signature][types.ApiParams.provider],
|
|
72
|
+
[types.ApiParams.user]: {
|
|
73
|
+
[types.ApiParams.timestamp]: userTimestampSignature
|
|
74
|
+
}
|
|
75
|
+
}
|
|
67
76
|
});
|
|
68
77
|
return this.post(types.ApiPaths.SubmitPowCaptchaSolution, body);
|
|
69
78
|
}
|
|
70
|
-
submitUserEvents(events,
|
|
71
|
-
return this.post(types.ApiPaths.SubmitUserEvents, { events,
|
|
79
|
+
submitUserEvents(events, string) {
|
|
80
|
+
return this.post(types.ApiPaths.SubmitUserEvents, { events, string });
|
|
72
81
|
}
|
|
73
82
|
getProviderStatus() {
|
|
74
83
|
return this.fetch(types.ApiPaths.GetProviderStatus);
|
package/dist/index.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export * from
|
|
1
|
+
export * from "./api/index.js";
|
|
2
2
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAaA,cAAc,gBAAgB,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAaA,cAAc,gBAAgB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export * from
|
|
1
|
+
export * from "./api/index.js";
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAaA,cAAc,gBAAgB,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAaA,cAAc,gBAAgB,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,49 +1,42 @@
|
|
|
1
1
|
{
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
"devDependencies": {
|
|
43
|
-
"@prosopo/captcha-contract": "1.0.1",
|
|
44
|
-
"@prosopo/config": "1.0.1",
|
|
45
|
-
"tslib": "2.6.2",
|
|
46
|
-
"typescript": "5.1.6"
|
|
47
|
-
},
|
|
48
|
-
"sideEffects": false
|
|
2
|
+
"name": "@prosopo/api",
|
|
3
|
+
"version": "2.0.0",
|
|
4
|
+
"description": "Wrapper for the provider API",
|
|
5
|
+
"main": "dist/index.js",
|
|
6
|
+
"type": "module",
|
|
7
|
+
"engines": {
|
|
8
|
+
"node": ">=20",
|
|
9
|
+
"npm": ">=9"
|
|
10
|
+
},
|
|
11
|
+
"exports": {
|
|
12
|
+
".": {
|
|
13
|
+
"import": "./dist/index.js",
|
|
14
|
+
"require": "./dist/cjs/index.cjs"
|
|
15
|
+
}
|
|
16
|
+
},
|
|
17
|
+
"scripts": {
|
|
18
|
+
"test": "echo \"No test specified\"",
|
|
19
|
+
"clean": "tsc --build --clean",
|
|
20
|
+
"build": "tsc --build --verbose",
|
|
21
|
+
"build:cjs": "npx vite --config vite.cjs.config.ts build"
|
|
22
|
+
},
|
|
23
|
+
"repository": {
|
|
24
|
+
"type": "git",
|
|
25
|
+
"url": "git+https://github.com/prosopo/captcha.git"
|
|
26
|
+
},
|
|
27
|
+
"author": "PROSOPO LIMITED <info@prosopo.io>",
|
|
28
|
+
"license": "Apache-2.0",
|
|
29
|
+
"bugs": {
|
|
30
|
+
"url": "https://github.com/prosopo/captcha/issues"
|
|
31
|
+
},
|
|
32
|
+
"homepage": "https://github.com/prosopo/captcha#readme",
|
|
33
|
+
"dependencies": {
|
|
34
|
+
"@prosopo/types": "2.0.0"
|
|
35
|
+
},
|
|
36
|
+
"devDependencies": {
|
|
37
|
+
"@prosopo/config": "2.0.0",
|
|
38
|
+
"tslib": "2.6.2",
|
|
39
|
+
"typescript": "5.1.6"
|
|
40
|
+
},
|
|
41
|
+
"sideEffects": false
|
|
49
42
|
}
|
package/vite.cjs.config.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import path from "node:path";
|
|
1
2
|
// Copyright 2021-2024 Prosopo (UK) Ltd.
|
|
2
3
|
//
|
|
3
4
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
@@ -11,9 +12,8 @@
|
|
|
11
12
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
13
|
// See the License for the specific language governing permissions and
|
|
13
14
|
// limitations under the License.
|
|
14
|
-
import { ViteCommonJSConfig } from
|
|
15
|
-
import path from 'path'
|
|
15
|
+
import { ViteCommonJSConfig } from "@prosopo/config";
|
|
16
16
|
|
|
17
17
|
export default function () {
|
|
18
|
-
|
|
18
|
+
return ViteCommonJSConfig("api", path.resolve("./tsconfig.cjs.json"));
|
|
19
19
|
}
|
package/typedoc.config.js
DELETED
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
// Copyright 2021-2024 Prosopo (UK) Ltd.
|
|
2
|
-
//
|
|
3
|
-
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
|
-
// you may not use this file except in compliance with the License.
|
|
5
|
-
// You may obtain a copy of the License at
|
|
6
|
-
//
|
|
7
|
-
// http://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
-
//
|
|
9
|
-
// Unless required by applicable law or agreed to in writing, software
|
|
10
|
-
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
-
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
-
// See the License for the specific language governing permissions and
|
|
13
|
-
// limitations under the License.
|
|
14
|
-
export default {
|
|
15
|
-
entryPoints: ['src/**/*.ts', 'src/**/*.tsx', 'src/**/*.js', 'src/**/*.jsx', 'src/**/*.json'],
|
|
16
|
-
includes: 'src',
|
|
17
|
-
extends: '../../typedoc.base.config.js',
|
|
18
|
-
readme: 'README.md',
|
|
19
|
-
}
|