@lumiapassport/core 1.10.1 → 1.11.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.
@@ -1264,11 +1264,35 @@ var ServerWalletClient = class {
1264
1264
  });
1265
1265
  if (!response.ok) {
1266
1266
  const errorData = await response.json().catch(() => ({}));
1267
- const errorMessage = errorData.error || errorData.message || `HTTP ${response.status}`;
1267
+ const errorCode = errorData.error;
1268
+ const errorMessage = errorCode || errorData.message || `HTTP ${response.status}`;
1268
1269
  if (this.debug) {
1269
1270
  console.error("[ServerWalletClient] Error:", errorMessage, errorData);
1270
1271
  }
1271
- throw new Error(`TSS API error: ${errorMessage}`);
1272
+ let userFriendlyMessage;
1273
+ switch (response.status) {
1274
+ case 400:
1275
+ userFriendlyMessage = `Invalid request: ${errorMessage}`;
1276
+ break;
1277
+ case 401:
1278
+ userFriendlyMessage = `Authentication failed: ${errorMessage}. Check your API key.`;
1279
+ break;
1280
+ case 403:
1281
+ userFriendlyMessage = `Access denied: ${errorMessage}. You may be trying to access a resource outside your project.`;
1282
+ break;
1283
+ case 404:
1284
+ userFriendlyMessage = `Not found: ${errorMessage}`;
1285
+ break;
1286
+ case 503:
1287
+ userFriendlyMessage = `Service unavailable: ${errorMessage}. Please try again later.`;
1288
+ break;
1289
+ default:
1290
+ userFriendlyMessage = `TSS API error: ${errorMessage}`;
1291
+ }
1292
+ const error = new Error(userFriendlyMessage);
1293
+ error.statusCode = response.status;
1294
+ error.errorCode = errorCode;
1295
+ throw error;
1272
1296
  }
1273
1297
  const data = await response.json();
1274
1298
  if (this.debug) {
@@ -1443,6 +1467,39 @@ var ServerWalletClient = class {
1443
1467
  }
1444
1468
  );
1445
1469
  }
1470
+ // ==================== KYC Status ====================
1471
+ /**
1472
+ * Get KYC verification status for a user
1473
+ *
1474
+ * Retrieves the current KYC verification status for a specified user.
1475
+ * The user must belong to the same project as the API key used for authentication.
1476
+ *
1477
+ * @param userId - Internal Lumia Passport user identifier
1478
+ * @returns KYC status response with verification details
1479
+ * @throws Error if user not found, unauthorized, or cross-project access attempted
1480
+ *
1481
+ * @example
1482
+ * ```ts
1483
+ * const kycStatus = await client.getKycStatus('user_abc123');
1484
+ *
1485
+ * if (kycStatus.status === 'verified') {
1486
+ * console.log('User is KYC verified');
1487
+ * } else if (kycStatus.status === 'rejected') {
1488
+ * console.log('KYC rejected:', kycStatus.rejectionReason);
1489
+ * }
1490
+ * ```
1491
+ */
1492
+ async getKycStatus(userId) {
1493
+ if (!userId || typeof userId !== "string") {
1494
+ throw new Error("Invalid user ID: must be a non-empty string");
1495
+ }
1496
+ return this.request(
1497
+ `/api/tss/server/${encodeURIComponent(userId)}/kyc/status`,
1498
+ {
1499
+ method: "GET"
1500
+ }
1501
+ );
1502
+ }
1446
1503
  };
1447
1504
  function createServerWalletClient(config) {
1448
1505
  return new ServerWalletClient(config);