@kyvshield/rest-sdk 1.0.1 → 1.2.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/README.md +94 -3
- package/dist/index.d.ts +41 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +196 -18
- package/dist/index.js.map +1 -1
- package/dist/types.d.ts +44 -3
- package/dist/types.d.ts.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -88,7 +88,7 @@ const { challenges } = await kyv.getChallenges();
|
|
|
88
88
|
|
|
89
89
|
### `kyv.verify(options)`
|
|
90
90
|
|
|
91
|
-
Submit a KYC verification request.
|
|
91
|
+
Submit a KYC verification request. Images can be provided in any of four formats — see [Image input formats](#image-input-formats) for details.
|
|
92
92
|
|
|
93
93
|
```typescript
|
|
94
94
|
const result = await kyv.verify({
|
|
@@ -105,12 +105,97 @@ const result = await kyv.verify({
|
|
|
105
105
|
});
|
|
106
106
|
```
|
|
107
107
|
|
|
108
|
+
---
|
|
109
|
+
|
|
110
|
+
## Image input formats
|
|
111
|
+
|
|
112
|
+
Each value in the `images` map is resolved automatically in this order:
|
|
113
|
+
|
|
114
|
+
| Priority | Format | Example |
|
|
115
|
+
|----------|--------|---------|
|
|
116
|
+
| 1 | **Buffer** (raw bytes) | `Buffer.from(fs.readFileSync('./recto.jpg'))` |
|
|
117
|
+
| 2 | **URL** (`http://` / `https://`) | `'https://example.com/recto.jpg'` |
|
|
118
|
+
| 3 | **Data URI** (`data:image/…;base64,…`) | `'data:image/jpeg;base64,/9j/4AA…'` |
|
|
119
|
+
| 4 | **Base64 string** (long, no path separators) | `'<base64 data>'` |
|
|
120
|
+
| 5 | **File path** (default) | `'./recto.jpg'` or `/abs/path/recto.jpg` |
|
|
121
|
+
|
|
122
|
+
```typescript
|
|
123
|
+
import { readFileSync } from 'node:fs';
|
|
124
|
+
|
|
125
|
+
// 1. Raw Buffer
|
|
126
|
+
images: {
|
|
127
|
+
recto_center_document: readFileSync('./recto.jpg'), // Buffer
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
// 2. URL — downloaded with a 30-second timeout
|
|
131
|
+
images: {
|
|
132
|
+
recto_center_document: 'https://cdn.example.com/recto.jpg',
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
// 3. Data URI
|
|
136
|
+
images: {
|
|
137
|
+
recto_center_document: 'data:image/jpeg;base64,/9j/4AAQSkZJRg…',
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
// 4. Bare base64 string
|
|
141
|
+
const b64 = readFileSync('./recto.jpg').toString('base64');
|
|
142
|
+
images: {
|
|
143
|
+
recto_center_document: b64,
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
// 5. File path (original behaviour — unchanged)
|
|
147
|
+
images: {
|
|
148
|
+
recto_center_document: './recto.jpg',
|
|
149
|
+
}
|
|
150
|
+
```
|
|
151
|
+
|
|
108
152
|
**Options:** [`VerifyOptions`](#verifyoptions)
|
|
109
153
|
|
|
110
154
|
**Return type:** [`KycResponse`](#kycresponse)
|
|
111
155
|
|
|
112
156
|
---
|
|
113
157
|
|
|
158
|
+
### `kyv.verifyBatch(optionsList)`
|
|
159
|
+
|
|
160
|
+
Submit up to 10 KYC verifications concurrently using `Promise.all`. Results are returned in the same order as the input array. Each entry is a `PromiseSettledResult` — check `status` to distinguish fulfilled from rejected entries. Images within each call are resolved in parallel (up to `DEFAULT_MAX_CONCURRENT_COMPRESS = 20` at a time).
|
|
161
|
+
|
|
162
|
+
```typescript
|
|
163
|
+
import { KyvShield } from '@kyvshield/rest-sdk';
|
|
164
|
+
|
|
165
|
+
const kyv = new KyvShield('your-api-key');
|
|
166
|
+
|
|
167
|
+
const results = await kyv.verifyBatch([
|
|
168
|
+
{
|
|
169
|
+
steps: ['recto', 'verso'],
|
|
170
|
+
target: 'SN-CIN',
|
|
171
|
+
kycIdentifier: 'user-001',
|
|
172
|
+
images: {
|
|
173
|
+
recto_center_document: './user1_recto.jpg',
|
|
174
|
+
verso_center_document: './user1_verso.jpg',
|
|
175
|
+
},
|
|
176
|
+
},
|
|
177
|
+
{
|
|
178
|
+
steps: ['selfie', 'recto'],
|
|
179
|
+
target: 'SN-CIN',
|
|
180
|
+
kycIdentifier: 'user-002',
|
|
181
|
+
images: {
|
|
182
|
+
selfie_center_face: './user2_selfie.jpg',
|
|
183
|
+
recto_center_document: './user2_recto.jpg',
|
|
184
|
+
},
|
|
185
|
+
},
|
|
186
|
+
]);
|
|
187
|
+
|
|
188
|
+
for (const [i, result] of results.entries()) {
|
|
189
|
+
if (result.status === 'fulfilled') {
|
|
190
|
+
console.log(`[${i}] ${result.value.overall_status} — session ${result.value.session_id}`);
|
|
191
|
+
} else {
|
|
192
|
+
console.error(`[${i}] ERROR:`, result.reason);
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
```
|
|
196
|
+
|
|
197
|
+
---
|
|
198
|
+
|
|
114
199
|
### `KyvShield.verifyWebhookSignature(payload, apiKey, signatureHeader)`
|
|
115
200
|
|
|
116
201
|
Static method. Validates an incoming KyvShield webhook using HMAC-SHA256.
|
|
@@ -179,9 +264,15 @@ interface VerifyOptions {
|
|
|
179
264
|
/**
|
|
180
265
|
* Map of images to submit.
|
|
181
266
|
* Key format: `{step}_{challenge}`, e.g. 'recto_center_document'
|
|
182
|
-
*
|
|
267
|
+
*
|
|
268
|
+
* Each value can be one of **four formats** (auto-detected):
|
|
269
|
+
* - `Buffer` — raw bytes, used directly
|
|
270
|
+
* - `'https://…'` / `'http://…'` — URL, downloaded automatically (30s timeout)
|
|
271
|
+
* - `'data:image/jpeg;base64,…'` — data URI, base64 decoded
|
|
272
|
+
* - long base64 string (no path sep.) — decoded as base64
|
|
273
|
+
* - any other string — treated as a filesystem path
|
|
183
274
|
*/
|
|
184
|
-
images: Record<string, string>;
|
|
275
|
+
images: Record<string, string | Buffer>;
|
|
185
276
|
}
|
|
186
277
|
```
|
|
187
278
|
|
package/dist/index.d.ts
CHANGED
|
@@ -26,8 +26,14 @@
|
|
|
26
26
|
* console.log(result.overall_status); // 'pass' | 'reject'
|
|
27
27
|
* ```
|
|
28
28
|
*/
|
|
29
|
-
import type { ChallengesResponse, KycResponse, KyvShieldErrorDetails, VerifyOptions } from './types.js';
|
|
29
|
+
import type { ChallengesResponse, KycResponse, KyvShieldErrorDetails, KyvShieldOptions, VerifyOptions } from './types.js';
|
|
30
30
|
export * from './types.js';
|
|
31
|
+
/** Default maximum image width in pixels before resize. */
|
|
32
|
+
export declare const DEFAULT_IMAGE_MAX_WIDTH = 1280;
|
|
33
|
+
/** Default JPEG compression quality (0–100). */
|
|
34
|
+
export declare const DEFAULT_IMAGE_QUALITY = 90;
|
|
35
|
+
/** Maximum number of images compressed in parallel. */
|
|
36
|
+
export declare const DEFAULT_MAX_CONCURRENT_COMPRESS = 20;
|
|
31
37
|
/**
|
|
32
38
|
* Error thrown when the KyvShield API returns a non-2xx response
|
|
33
39
|
* or when a request cannot be completed.
|
|
@@ -45,22 +51,31 @@ export declare class KyvShieldError extends Error {
|
|
|
45
51
|
export declare class KyvShield {
|
|
46
52
|
private readonly apiKey;
|
|
47
53
|
private readonly baseUrl;
|
|
54
|
+
private readonly imageOptions;
|
|
55
|
+
private readonly enableLog;
|
|
48
56
|
/**
|
|
49
57
|
* Create a new KyvShield client.
|
|
50
58
|
*
|
|
51
59
|
* @param apiKey - Your KyvShield API key (sent as the `X-API-Key` header).
|
|
52
60
|
* @param baseUrl - Optional base URL override. Defaults to the production endpoint.
|
|
61
|
+
* @param options - Optional SDK configuration (logging, image options).
|
|
53
62
|
*
|
|
54
63
|
* @example
|
|
55
64
|
* ```ts
|
|
56
|
-
* // Production
|
|
57
|
-
* const kyv = new KyvShield('your-api-key');
|
|
65
|
+
* // Production with logging enabled
|
|
66
|
+
* const kyv = new KyvShield('your-api-key', undefined, { enableLog: true });
|
|
58
67
|
*
|
|
59
68
|
* // Local / staging
|
|
60
69
|
* const kyv = new KyvShield('your-api-key', 'http://localhost:8080');
|
|
70
|
+
*
|
|
71
|
+
* // Custom image options
|
|
72
|
+
* const kyv = new KyvShield('your-api-key', undefined, {
|
|
73
|
+
* imageOptions: { maxWidth: 1280, jpegQuality: 90 },
|
|
74
|
+
* enableLog: true,
|
|
75
|
+
* });
|
|
61
76
|
* ```
|
|
62
77
|
*/
|
|
63
|
-
constructor(apiKey: string, baseUrl?: string);
|
|
78
|
+
constructor(apiKey: string, baseUrl?: string, options?: KyvShieldOptions);
|
|
64
79
|
/**
|
|
65
80
|
* Retrieve the list of available challenges for each mode and step type.
|
|
66
81
|
*
|
|
@@ -148,19 +163,41 @@ export declare class KyvShield {
|
|
|
148
163
|
* ```
|
|
149
164
|
*/
|
|
150
165
|
static verifyWebhookSignature(payload: Buffer, apiKey: string, signatureHeader: string): boolean;
|
|
166
|
+
/**
|
|
167
|
+
* Tagged logger. All messages are prefixed with `[KyvShield]`.
|
|
168
|
+
* Does nothing when `enableLog` is false.
|
|
169
|
+
*/
|
|
170
|
+
private log;
|
|
151
171
|
/** Build the common headers used by all non-multipart requests. */
|
|
152
172
|
private buildHeaders;
|
|
153
173
|
/**
|
|
154
174
|
* Validate required fields in {@link VerifyOptions} before sending.
|
|
155
175
|
* Throws a descriptive {@link KyvShieldError} on the first problem found.
|
|
176
|
+
* Note: file-path existence is only checked for plain path strings (not URLs,
|
|
177
|
+
* base64, or Buffers — those are validated/fetched at send time).
|
|
156
178
|
*/
|
|
157
179
|
private validateVerifyOptions;
|
|
180
|
+
/**
|
|
181
|
+
* Resolve an image value (Buffer, URL, data URI, base64, or file path)
|
|
182
|
+
* into raw bytes.
|
|
183
|
+
*
|
|
184
|
+
* @param value - The image value from {@link VerifyOptions.images}.
|
|
185
|
+
* @returns A Buffer containing the image bytes.
|
|
186
|
+
*/
|
|
187
|
+
private resolveImage;
|
|
188
|
+
/**
|
|
189
|
+
* Warn if image exceeds the configured maxWidth threshold (approximated by size).
|
|
190
|
+
* Node.js has no native image resize — if > 1MB, log a warning.
|
|
191
|
+
*/
|
|
192
|
+
private warnIfLarge;
|
|
158
193
|
/**
|
|
159
194
|
* Build a native `multipart/form-data` body from {@link VerifyOptions}.
|
|
160
195
|
*
|
|
161
196
|
* Constructs the multipart body manually using `Buffer.concat` without any
|
|
162
197
|
* external dependency. Returns the binary body and the Content-Type header
|
|
163
198
|
* value (which includes the boundary).
|
|
199
|
+
*
|
|
200
|
+
* This method is async to support URL image downloads.
|
|
164
201
|
*/
|
|
165
202
|
private buildMultipartBody;
|
|
166
203
|
/**
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAMH,OAAO,KAAK,EACV,kBAAkB,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAMH,OAAO,KAAK,EACV,kBAAkB,EAElB,WAAW,EACX,qBAAqB,EACrB,gBAAgB,EAChB,aAAa,EACd,MAAM,YAAY,CAAC;AAEpB,cAAc,YAAY,CAAC;AAS3B,2DAA2D;AAC3D,eAAO,MAAM,uBAAuB,OAAO,CAAC;AAE5C,gDAAgD;AAChD,eAAO,MAAM,qBAAqB,KAAK,CAAC;AAExC,uDAAuD;AACvD,eAAO,MAAM,+BAA+B,KAAK,CAAC;AAIlD;;;GAGG;AACH,qBAAa,cAAe,SAAQ,KAAK;IACvC,SAAgB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpC,SAAgB,IAAI,CAAC,EAAE,OAAO,CAAC;gBAEnB,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,qBAAqB;CAM7D;AAID;;;;GAIG;AACH,qBAAa,SAAS;IACpB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAyB;IACtD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAU;IAEpC;;;;;;;;;;;;;;;;;;;;;OAqBG;gBACS,MAAM,EAAE,MAAM,EAAE,OAAO,GAAE,MAAyB,EAAE,OAAO,GAAE,gBAAqB;IAiB9F;;;;;;;;;;;;;OAaG;IACG,aAAa,IAAI,OAAO,CAAC,kBAAkB,CAAC;IAwBlD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA+BG;IACG,MAAM,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,WAAW,CAAC;IA4B1D;;;;;;;;OAQG;IACG,WAAW,CAAC,WAAW,EAAE,aAAa,EAAE,GAAG,OAAO,CAAC,oBAAoB,CAAC,WAAW,CAAC,EAAE,CAAC;IAa7F;;;;;;;;;;;;;;;;;;;;;;;;;;;OA2BG;IACH,MAAM,CAAC,sBAAsB,CAC3B,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,EACd,eAAe,EAAE,MAAM,GACtB,OAAO;IA0BV;;;OAGG;IACH,OAAO,CAAC,GAAG;IAWX,mEAAmE;IACnE,OAAO,CAAC,YAAY;IAOpB;;;;;OAKG;IACH,OAAO,CAAC,qBAAqB;IA4B7B;;;;;;OAMG;YACW,YAAY;IAoD1B;;;OAGG;IACH,OAAO,CAAC,WAAW;IAWnB;;;;;;;;OAQG;YACW,kBAAkB;IA4FhC;;;OAGG;YACW,QAAQ;IAgBtB,4EAA4E;IAC5E,OAAO,CAAC,aAAa;CAWtB;AAED,eAAe,SAAS,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -33,6 +33,13 @@ export * from './types.js';
|
|
|
33
33
|
// ─── Constants ────────────────────────────────────────────────────────────────
|
|
34
34
|
const DEFAULT_BASE_URL = 'https://kyvshield-naruto.innolinkcloud.com';
|
|
35
35
|
const API_VERSION = '/api/v1';
|
|
36
|
+
// ─── SDK Constants ────────────────────────────────────────────────────────────
|
|
37
|
+
/** Default maximum image width in pixels before resize. */
|
|
38
|
+
export const DEFAULT_IMAGE_MAX_WIDTH = 1280;
|
|
39
|
+
/** Default JPEG compression quality (0–100). */
|
|
40
|
+
export const DEFAULT_IMAGE_QUALITY = 90;
|
|
41
|
+
/** Maximum number of images compressed in parallel. */
|
|
42
|
+
export const DEFAULT_MAX_CONCURRENT_COMPRESS = 20;
|
|
36
43
|
// ─── Error class ─────────────────────────────────────────────────────────────
|
|
37
44
|
/**
|
|
38
45
|
* Error thrown when the KyvShield API returns a non-2xx response
|
|
@@ -57,28 +64,43 @@ export class KyvShieldError extends Error {
|
|
|
57
64
|
export class KyvShield {
|
|
58
65
|
apiKey;
|
|
59
66
|
baseUrl;
|
|
67
|
+
imageOptions;
|
|
68
|
+
enableLog;
|
|
60
69
|
/**
|
|
61
70
|
* Create a new KyvShield client.
|
|
62
71
|
*
|
|
63
72
|
* @param apiKey - Your KyvShield API key (sent as the `X-API-Key` header).
|
|
64
73
|
* @param baseUrl - Optional base URL override. Defaults to the production endpoint.
|
|
74
|
+
* @param options - Optional SDK configuration (logging, image options).
|
|
65
75
|
*
|
|
66
76
|
* @example
|
|
67
77
|
* ```ts
|
|
68
|
-
* // Production
|
|
69
|
-
* const kyv = new KyvShield('your-api-key');
|
|
78
|
+
* // Production with logging enabled
|
|
79
|
+
* const kyv = new KyvShield('your-api-key', undefined, { enableLog: true });
|
|
70
80
|
*
|
|
71
81
|
* // Local / staging
|
|
72
82
|
* const kyv = new KyvShield('your-api-key', 'http://localhost:8080');
|
|
83
|
+
*
|
|
84
|
+
* // Custom image options
|
|
85
|
+
* const kyv = new KyvShield('your-api-key', undefined, {
|
|
86
|
+
* imageOptions: { maxWidth: 1280, jpegQuality: 90 },
|
|
87
|
+
* enableLog: true,
|
|
88
|
+
* });
|
|
73
89
|
* ```
|
|
74
90
|
*/
|
|
75
|
-
constructor(apiKey, baseUrl = DEFAULT_BASE_URL) {
|
|
91
|
+
constructor(apiKey, baseUrl = DEFAULT_BASE_URL, options = {}) {
|
|
76
92
|
if (!apiKey || apiKey.trim() === '') {
|
|
77
93
|
throw new KyvShieldError('apiKey must be a non-empty string');
|
|
78
94
|
}
|
|
79
95
|
this.apiKey = apiKey;
|
|
80
96
|
// Normalise: remove trailing slash so we can always append '/api/v1/...'
|
|
81
97
|
this.baseUrl = baseUrl.replace(/\/+$/, '');
|
|
98
|
+
this.enableLog = options.enableLog ?? true;
|
|
99
|
+
this.imageOptions = {
|
|
100
|
+
maxWidth: options.imageOptions?.maxWidth ?? 1280,
|
|
101
|
+
jpegQuality: options.imageOptions?.jpegQuality ?? 90,
|
|
102
|
+
};
|
|
103
|
+
this.log('info', `Initialized (baseUrl=${this.baseUrl}, imageMaxWidth=${this.imageOptions.maxWidth}, imageQuality=${this.imageOptions.jpegQuality})`);
|
|
82
104
|
}
|
|
83
105
|
// ── Public methods ──────────────────────────────────────────────────────────
|
|
84
106
|
/**
|
|
@@ -97,13 +119,22 @@ export class KyvShield {
|
|
|
97
119
|
*/
|
|
98
120
|
async getChallenges() {
|
|
99
121
|
const url = `${this.baseUrl}${API_VERSION}/challenges`;
|
|
122
|
+
this.log('info', `GET ${API_VERSION}/challenges...`);
|
|
100
123
|
const response = await fetch(url, {
|
|
101
124
|
method: 'GET',
|
|
102
125
|
headers: this.buildHeaders(),
|
|
103
126
|
signal: AbortSignal.timeout(120_000),
|
|
104
127
|
});
|
|
105
128
|
await this.assertOk(response);
|
|
106
|
-
|
|
129
|
+
const result = await response.json();
|
|
130
|
+
const selfieCount = result.challenges?.selfie
|
|
131
|
+
? Object.values(result.challenges.selfie).flat().length
|
|
132
|
+
: 0;
|
|
133
|
+
const docCount = result.challenges?.document
|
|
134
|
+
? Object.values(result.challenges.document).flat().length
|
|
135
|
+
: 0;
|
|
136
|
+
this.log('info', `Challenges loaded (${selfieCount} selfie modes, ${docCount} document modes)`);
|
|
137
|
+
return result;
|
|
107
138
|
}
|
|
108
139
|
/**
|
|
109
140
|
* Submit a KYC verification request.
|
|
@@ -139,7 +170,10 @@ export class KyvShield {
|
|
|
139
170
|
*/
|
|
140
171
|
async verify(options) {
|
|
141
172
|
this.validateVerifyOptions(options);
|
|
142
|
-
const
|
|
173
|
+
const imageCount = Object.keys(options.images).length;
|
|
174
|
+
this.log('info', `POST ${API_VERSION}/kyc/verify (steps=[${options.steps.join(',')}], target=${options.target}, images=${imageCount})`);
|
|
175
|
+
const startMs = Date.now();
|
|
176
|
+
const { body, contentType } = await this.buildMultipartBody(options);
|
|
143
177
|
const url = `${this.baseUrl}${API_VERSION}/kyc/verify`;
|
|
144
178
|
const response = await fetch(url, {
|
|
145
179
|
method: 'POST',
|
|
@@ -151,7 +185,10 @@ export class KyvShield {
|
|
|
151
185
|
signal: AbortSignal.timeout(120_000),
|
|
152
186
|
});
|
|
153
187
|
await this.assertOk(response);
|
|
154
|
-
|
|
188
|
+
const result = await response.json();
|
|
189
|
+
const elapsed = Date.now() - startMs;
|
|
190
|
+
this.log('info', `Verify complete: ${result.overall_status} (${result.overall_confidence?.toFixed(2)}) in ${elapsed}ms`);
|
|
191
|
+
return result;
|
|
155
192
|
}
|
|
156
193
|
/**
|
|
157
194
|
* Submit multiple KYC verification requests concurrently.
|
|
@@ -166,7 +203,13 @@ export class KyvShield {
|
|
|
166
203
|
if (optionsList.length > 10) {
|
|
167
204
|
throw new KyvShieldError('Batch size cannot exceed 10');
|
|
168
205
|
}
|
|
169
|
-
|
|
206
|
+
this.log('info', `Batch verify: ${optionsList.length} requests...`);
|
|
207
|
+
const results = await Promise.allSettled(optionsList.map(opts => this.verify(opts)));
|
|
208
|
+
const passed = results.filter(r => r.status === 'fulfilled' && r.value.overall_status === 'pass').length;
|
|
209
|
+
const rejected = results.filter(r => r.status === 'fulfilled' && r.value.overall_status !== 'pass').length;
|
|
210
|
+
const failed = results.filter(r => r.status === 'rejected').length;
|
|
211
|
+
this.log('info', `Batch complete: ${passed} pass, ${rejected + failed} reject`);
|
|
212
|
+
return results;
|
|
170
213
|
}
|
|
171
214
|
/**
|
|
172
215
|
* Verify an incoming webhook signature.
|
|
@@ -220,6 +263,29 @@ export class KyvShield {
|
|
|
220
263
|
}
|
|
221
264
|
}
|
|
222
265
|
// ── Private helpers ─────────────────────────────────────────────────────────
|
|
266
|
+
/**
|
|
267
|
+
* Tagged logger. All messages are prefixed with `[KyvShield]`.
|
|
268
|
+
* Does nothing when `enableLog` is false.
|
|
269
|
+
*/
|
|
270
|
+
log(level, ...args) {
|
|
271
|
+
if (!this.enableLog)
|
|
272
|
+
return;
|
|
273
|
+
const tag = '[KyvShield]';
|
|
274
|
+
switch (level) {
|
|
275
|
+
case 'debug':
|
|
276
|
+
console.debug(tag, ...args);
|
|
277
|
+
break;
|
|
278
|
+
case 'info':
|
|
279
|
+
console.info(tag, ...args);
|
|
280
|
+
break;
|
|
281
|
+
case 'warn':
|
|
282
|
+
console.warn(tag, ...args);
|
|
283
|
+
break;
|
|
284
|
+
case 'error':
|
|
285
|
+
console.error(tag, ...args);
|
|
286
|
+
break;
|
|
287
|
+
}
|
|
288
|
+
}
|
|
223
289
|
/** Build the common headers used by all non-multipart requests. */
|
|
224
290
|
buildHeaders() {
|
|
225
291
|
return {
|
|
@@ -230,6 +296,8 @@ export class KyvShield {
|
|
|
230
296
|
/**
|
|
231
297
|
* Validate required fields in {@link VerifyOptions} before sending.
|
|
232
298
|
* Throws a descriptive {@link KyvShieldError} on the first problem found.
|
|
299
|
+
* Note: file-path existence is only checked for plain path strings (not URLs,
|
|
300
|
+
* base64, or Buffers — those are validated/fetched at send time).
|
|
233
301
|
*/
|
|
234
302
|
validateVerifyOptions(options) {
|
|
235
303
|
if (!options.steps || options.steps.length === 0) {
|
|
@@ -241,22 +309,99 @@ export class KyvShield {
|
|
|
241
309
|
if (!options.images || Object.keys(options.images).length === 0) {
|
|
242
310
|
throw new KyvShieldError('VerifyOptions.images must contain at least one entry');
|
|
243
311
|
}
|
|
244
|
-
//
|
|
245
|
-
for (const [key,
|
|
246
|
-
|
|
312
|
+
// Only validate file existence for plain filesystem paths
|
|
313
|
+
for (const [key, value] of Object.entries(options.images)) {
|
|
314
|
+
if (Buffer.isBuffer(value))
|
|
315
|
+
continue;
|
|
316
|
+
if (value.startsWith('http://') || value.startsWith('https://'))
|
|
317
|
+
continue;
|
|
318
|
+
if (value.startsWith('data:image/'))
|
|
319
|
+
continue;
|
|
320
|
+
// Check if it looks like a base64 string (no path separator, long, no extension)
|
|
321
|
+
if (!value.includes('/') && !value.includes('\\') && value.length > 64 && !/\.\w{2,5}$/.test(value))
|
|
322
|
+
continue;
|
|
323
|
+
const resolved = path.resolve(value);
|
|
247
324
|
if (!fs.existsSync(resolved)) {
|
|
248
325
|
throw new KyvShieldError(`Image file for "${key}" not found: ${resolved}`);
|
|
249
326
|
}
|
|
250
327
|
}
|
|
251
328
|
}
|
|
329
|
+
/**
|
|
330
|
+
* Resolve an image value (Buffer, URL, data URI, base64, or file path)
|
|
331
|
+
* into raw bytes.
|
|
332
|
+
*
|
|
333
|
+
* @param value - The image value from {@link VerifyOptions.images}.
|
|
334
|
+
* @returns A Buffer containing the image bytes.
|
|
335
|
+
*/
|
|
336
|
+
async resolveImage(value, fieldName) {
|
|
337
|
+
const label = fieldName ?? 'image';
|
|
338
|
+
// 1. Already raw bytes
|
|
339
|
+
if (Buffer.isBuffer(value)) {
|
|
340
|
+
const buf = this.warnIfLarge(value, label);
|
|
341
|
+
return buf;
|
|
342
|
+
}
|
|
343
|
+
// 2. URL — download with a 30-second timeout
|
|
344
|
+
if (value.startsWith('http://') || value.startsWith('https://')) {
|
|
345
|
+
this.log('debug', `Downloading image from ${value}`);
|
|
346
|
+
const response = await fetch(value, {
|
|
347
|
+
signal: AbortSignal.timeout(30_000),
|
|
348
|
+
});
|
|
349
|
+
if (!response.ok) {
|
|
350
|
+
throw new KyvShieldError(`Failed to download image from URL "${value}": HTTP ${response.status}`);
|
|
351
|
+
}
|
|
352
|
+
const arrayBuffer = await response.arrayBuffer();
|
|
353
|
+
const buf = Buffer.from(arrayBuffer);
|
|
354
|
+
return this.warnIfLarge(buf, label);
|
|
355
|
+
}
|
|
356
|
+
// 3. Data URI — strip prefix and decode base64
|
|
357
|
+
if (value.startsWith('data:image/')) {
|
|
358
|
+
const commaIndex = value.indexOf(',');
|
|
359
|
+
if (commaIndex === -1) {
|
|
360
|
+
throw new KyvShieldError(`Invalid data URI for image: "${value.slice(0, 40)}..."`);
|
|
361
|
+
}
|
|
362
|
+
const b64 = value.slice(commaIndex + 1);
|
|
363
|
+
const sizeKb = Math.round(b64.length * 0.75 / 1024);
|
|
364
|
+
this.log('debug', `Decoding base64 image (${sizeKb}KB)`);
|
|
365
|
+
const buf = Buffer.from(b64, 'base64');
|
|
366
|
+
return this.warnIfLarge(buf, label);
|
|
367
|
+
}
|
|
368
|
+
// 4. Base64 string (no path separators, long, no file extension)
|
|
369
|
+
if (!value.includes('/') && !value.includes('\\') && value.length > 64 && !/\.\w{2,5}$/.test(value)) {
|
|
370
|
+
const sizeKb = Math.round(value.length * 0.75 / 1024);
|
|
371
|
+
this.log('debug', `Decoding base64 image (${sizeKb}KB)`);
|
|
372
|
+
const buf = Buffer.from(value, 'base64');
|
|
373
|
+
return this.warnIfLarge(buf, label);
|
|
374
|
+
}
|
|
375
|
+
// 5. File path
|
|
376
|
+
const resolved = path.resolve(value);
|
|
377
|
+
const buf = fs.readFileSync(resolved);
|
|
378
|
+
return this.warnIfLarge(buf, label);
|
|
379
|
+
}
|
|
380
|
+
/**
|
|
381
|
+
* Warn if image exceeds the configured maxWidth threshold (approximated by size).
|
|
382
|
+
* Node.js has no native image resize — if > 1MB, log a warning.
|
|
383
|
+
*/
|
|
384
|
+
warnIfLarge(data, label) {
|
|
385
|
+
const sizeKb = Math.round(data.length / 1024);
|
|
386
|
+
const oneMB = 1024 * 1024;
|
|
387
|
+
if (data.length > oneMB) {
|
|
388
|
+
this.log('warn', `Image ${label}: ${sizeKb}KB exceeds 1MB. Node.js SDK cannot resize natively — consider pre-resizing to ${this.imageOptions.maxWidth}px before passing to SDK.`);
|
|
389
|
+
}
|
|
390
|
+
else {
|
|
391
|
+
this.log('debug', `Image ${label}: ${sizeKb}KB`);
|
|
392
|
+
}
|
|
393
|
+
return data;
|
|
394
|
+
}
|
|
252
395
|
/**
|
|
253
396
|
* Build a native `multipart/form-data` body from {@link VerifyOptions}.
|
|
254
397
|
*
|
|
255
398
|
* Constructs the multipart body manually using `Buffer.concat` without any
|
|
256
399
|
* external dependency. Returns the binary body and the Content-Type header
|
|
257
400
|
* value (which includes the boundary).
|
|
401
|
+
*
|
|
402
|
+
* This method is async to support URL image downloads.
|
|
258
403
|
*/
|
|
259
|
-
buildMultipartBody(options) {
|
|
404
|
+
async buildMultipartBody(options) {
|
|
260
405
|
const boundary = crypto.randomUUID().replace(/-/g, '');
|
|
261
406
|
const CRLF = '\r\n';
|
|
262
407
|
const parts = [];
|
|
@@ -288,13 +433,46 @@ export class KyvShield {
|
|
|
288
433
|
if (options.kycIdentifier !== undefined) {
|
|
289
434
|
parts.push(textPart('kyc_identifier', options.kycIdentifier));
|
|
290
435
|
}
|
|
291
|
-
// ── Image files
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
const
|
|
297
|
-
|
|
436
|
+
// ── Image files — resolve + compress in parallel (semaphore: max 20) ───
|
|
437
|
+
const imageEntries = Object.entries(options.images);
|
|
438
|
+
if (imageEntries.length > 0) {
|
|
439
|
+
// Simple semaphore: allow up to DEFAULT_MAX_CONCURRENT_COMPRESS concurrent resolves
|
|
440
|
+
let running = 0;
|
|
441
|
+
const queue = [];
|
|
442
|
+
const acquire = () => {
|
|
443
|
+
if (running < DEFAULT_MAX_CONCURRENT_COMPRESS) {
|
|
444
|
+
running++;
|
|
445
|
+
return Promise.resolve();
|
|
446
|
+
}
|
|
447
|
+
return new Promise(resolve => queue.push(resolve));
|
|
448
|
+
};
|
|
449
|
+
const release = () => {
|
|
450
|
+
running--;
|
|
451
|
+
const next = queue.shift();
|
|
452
|
+
if (next) {
|
|
453
|
+
running++;
|
|
454
|
+
next();
|
|
455
|
+
}
|
|
456
|
+
};
|
|
457
|
+
const resolveWithSemaphore = async (key, value) => {
|
|
458
|
+
await acquire();
|
|
459
|
+
try {
|
|
460
|
+
const data = await this.resolveImage(value, key);
|
|
461
|
+
let filename = 'image.jpg';
|
|
462
|
+
if (!Buffer.isBuffer(value) && !value.startsWith('data:image/') && !value.startsWith('http')) {
|
|
463
|
+
filename = path.basename(value.includes('/') || value.includes('\\') ? value : key + '.jpg');
|
|
464
|
+
}
|
|
465
|
+
return { key, data, filename };
|
|
466
|
+
}
|
|
467
|
+
finally {
|
|
468
|
+
release();
|
|
469
|
+
}
|
|
470
|
+
};
|
|
471
|
+
const resolved = await Promise.all(imageEntries.map(([key, value]) => resolveWithSemaphore(key, value)));
|
|
472
|
+
for (const { key, data, filename } of resolved) {
|
|
473
|
+
const mimeType = this.guessMimeType(filename);
|
|
474
|
+
parts.push(filePart(key, filename, mimeType, data));
|
|
475
|
+
}
|
|
298
476
|
}
|
|
299
477
|
// ── Closing boundary ────────────────────────────────────────────────────
|
|
300
478
|
parts.push(Buffer.from(`--${boundary}--${CRLF}`));
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
CHANGED
|
@@ -134,6 +134,42 @@ export interface KycResponse {
|
|
|
134
134
|
/** Per-step results in submission order */
|
|
135
135
|
steps: StepResult[];
|
|
136
136
|
}
|
|
137
|
+
/**
|
|
138
|
+
* Options controlling image pre-processing before upload.
|
|
139
|
+
*
|
|
140
|
+
* Note: Node.js has no native image resize capability (no stdlib for it).
|
|
141
|
+
* If an image exceeds 1 MB, the SDK will emit a warning log.
|
|
142
|
+
* For guaranteed resize, pre-process images before passing them to the SDK.
|
|
143
|
+
*/
|
|
144
|
+
export interface ImageOptions {
|
|
145
|
+
/**
|
|
146
|
+
* Maximum image width in pixels. Images wider than this will trigger a
|
|
147
|
+
* warning log (actual resize is not supported in Node.js without external deps).
|
|
148
|
+
* @default 1280
|
|
149
|
+
*/
|
|
150
|
+
maxWidth?: number;
|
|
151
|
+
/**
|
|
152
|
+
* JPEG quality 0–100. Reserved for future native image support.
|
|
153
|
+
* @default 90
|
|
154
|
+
*/
|
|
155
|
+
jpegQuality?: number;
|
|
156
|
+
}
|
|
157
|
+
/**
|
|
158
|
+
* Constructor options for the KyvShield client.
|
|
159
|
+
*/
|
|
160
|
+
export interface KyvShieldOptions {
|
|
161
|
+
/**
|
|
162
|
+
* Image pre-processing settings.
|
|
163
|
+
* @default { maxWidth: DEFAULT_IMAGE_MAX_WIDTH, jpegQuality: DEFAULT_IMAGE_QUALITY }
|
|
164
|
+
*/
|
|
165
|
+
imageOptions?: ImageOptions;
|
|
166
|
+
/**
|
|
167
|
+
* Enable tagged console logging for all SDK operations.
|
|
168
|
+
* All logs are prefixed with `[KyvShield]`.
|
|
169
|
+
* @default true
|
|
170
|
+
*/
|
|
171
|
+
enableLog?: boolean;
|
|
172
|
+
}
|
|
137
173
|
/**
|
|
138
174
|
* Options for KyvShield.verify().
|
|
139
175
|
*
|
|
@@ -190,15 +226,20 @@ export interface VerifyOptions {
|
|
|
190
226
|
*/
|
|
191
227
|
kycIdentifier?: string;
|
|
192
228
|
/**
|
|
193
|
-
* Map of
|
|
229
|
+
* Map of images to submit.
|
|
194
230
|
* Keys follow the pattern `{step}_{challenge}`, e.g.:
|
|
195
231
|
* - `'selfie_center_face'`
|
|
196
232
|
* - `'recto_center_document'`
|
|
197
233
|
* - `'recto_tilt_left'`
|
|
198
234
|
*
|
|
199
|
-
* Values
|
|
235
|
+
* Values can be one of four formats:
|
|
236
|
+
* - **Buffer** — raw image bytes, used directly
|
|
237
|
+
* - **`http://…` / `https://…`** — URL, the SDK downloads automatically
|
|
238
|
+
* - **`data:image/…;base64,…`** — data URI, the SDK strips the prefix and decodes
|
|
239
|
+
* - **base64 string** — long string without path separators, decoded as base64
|
|
240
|
+
* - **file path** — any other string is treated as a local filesystem path
|
|
200
241
|
*/
|
|
201
|
-
images: Record<string, string>;
|
|
242
|
+
images: Record<string, string | Buffer>;
|
|
202
243
|
}
|
|
203
244
|
/** Structured error thrown by the SDK */
|
|
204
245
|
export interface KyvShieldErrorDetails {
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|