@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 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. Reads image files from disk and sends them as multipart form data.
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
- * Value: path to the image file on disk.
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
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAMH,OAAO,KAAK,EACV,kBAAkB,EAClB,WAAW,EACX,qBAAqB,EACrB,aAAa,EACd,MAAM,YAAY,CAAC;AAEpB,cAAc,YAAY,CAAC;AAS3B;;;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;IAEjC;;;;;;;;;;;;;;OAcG;gBACS,MAAM,EAAE,MAAM,EAAE,OAAO,GAAE,MAAyB;IAW9D;;;;;;;;;;;;;OAaG;IACG,aAAa,IAAI,OAAO,CAAC,kBAAkB,CAAC;IAalD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA+BG;IACG,MAAM,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,WAAW,CAAC;IAoB1D;;;;;;;;OAQG;IACG,WAAW,CAAC,WAAW,EAAE,aAAa,EAAE,GAAG,OAAO,CAAC,oBAAoB,CAAC,WAAW,CAAC,EAAE,CAAC;IAO7F;;;;;;;;;;;;;;;;;;;;;;;;;;;OA2BG;IACH,MAAM,CAAC,sBAAsB,CAC3B,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,EACd,eAAe,EAAE,MAAM,GACtB,OAAO;IA0BV,mEAAmE;IACnE,OAAO,CAAC,YAAY;IAOpB;;;OAGG;IACH,OAAO,CAAC,qBAAqB;IAsB7B;;;;;;OAMG;IACH,OAAO,CAAC,kBAAkB;IA6D1B;;;OAGG;YACW,QAAQ;IAgBtB,4EAA4E;IAC5E,OAAO,CAAC,aAAa;CAWtB;AAED,eAAe,SAAS,CAAC"}
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
- return response.json();
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 { body, contentType } = this.buildMultipartBody(options);
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
- return response.json();
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
- return Promise.allSettled(optionsList.map(opts => this.verify(opts)));
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
- // Validate that all image files exist on disk
245
- for (const [key, filePath] of Object.entries(options.images)) {
246
- const resolved = path.resolve(filePath);
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
- for (const [key, filePath] of Object.entries(options.images)) {
293
- const resolved = path.resolve(filePath);
294
- const data = fs.readFileSync(resolved);
295
- const filename = path.basename(resolved);
296
- const mimeType = this.guessMimeType(filename);
297
- parts.push(filePart(key, filename, mimeType, data));
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 image files to submit.
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 are absolute or relative file-system paths to JPEG/PNG images.
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 {
@@ -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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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kyvshield/rest-sdk",
3
- "version": "1.0.1",
3
+ "version": "1.2.0",
4
4
  "description": "Fully typed Node.js / TypeScript SDK for the KyvShield KYC REST API",
5
5
  "author": "KyvShield",
6
6
  "license": "MIT",