@kwik-id/sdk-react-native 0.0.0-stage → 0.1.0-alpha.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/LICENSE +22 -0
- package/README.md +81 -2
- package/app.plugin.js +40 -0
- package/lib/commonjs/api/api-client.js +213 -0
- package/lib/commonjs/api/api-client.js.map +1 -0
- package/lib/commonjs/api/api-error.js +29 -0
- package/lib/commonjs/api/api-error.js.map +1 -0
- package/lib/commonjs/api/index.js +33 -0
- package/lib/commonjs/api/index.js.map +1 -0
- package/lib/commonjs/api/upload.js +74 -0
- package/lib/commonjs/api/upload.js.map +1 -0
- package/lib/commonjs/camera/camera-view.js +227 -0
- package/lib/commonjs/camera/camera-view.js.map +1 -0
- package/lib/commonjs/camera/index.js +20 -0
- package/lib/commonjs/camera/index.js.map +1 -0
- package/lib/commonjs/camera/photo-capture.js +50 -0
- package/lib/commonjs/camera/photo-capture.js.map +1 -0
- package/lib/commonjs/crypto/fingerprint.js +43 -0
- package/lib/commonjs/crypto/fingerprint.js.map +1 -0
- package/lib/commonjs/crypto/hmac.js +150 -0
- package/lib/commonjs/crypto/hmac.js.map +1 -0
- package/lib/commonjs/crypto/index.js +39 -0
- package/lib/commonjs/crypto/index.js.map +1 -0
- package/lib/commonjs/crypto/session-manager.js +173 -0
- package/lib/commonjs/crypto/session-manager.js.map +1 -0
- package/lib/commonjs/i18n/en.js +297 -0
- package/lib/commonjs/i18n/en.js.map +1 -0
- package/lib/commonjs/i18n/fr.js +294 -0
- package/lib/commonjs/i18n/fr.js.map +1 -0
- package/lib/commonjs/i18n/index.js +34 -0
- package/lib/commonjs/i18n/index.js.map +1 -0
- package/lib/commonjs/i18n/locale.js +20 -0
- package/lib/commonjs/i18n/locale.js.map +1 -0
- package/lib/commonjs/i18n/translator.js +37 -0
- package/lib/commonjs/i18n/translator.js.map +1 -0
- package/lib/commonjs/index.js +187 -0
- package/lib/commonjs/index.js.map +1 -0
- package/lib/commonjs/lib/device-detector.js +34 -0
- package/lib/commonjs/lib/device-detector.js.map +1 -0
- package/lib/commonjs/lib/event-emitter.js +85 -0
- package/lib/commonjs/lib/event-emitter.js.map +1 -0
- package/lib/commonjs/lib/index.js +63 -0
- package/lib/commonjs/lib/index.js.map +1 -0
- package/lib/commonjs/lib/kwik-id-rn-sdk.js +156 -0
- package/lib/commonjs/lib/kwik-id-rn-sdk.js.map +1 -0
- package/lib/commonjs/lib/verification-machine.js +276 -0
- package/lib/commonjs/lib/verification-machine.js.map +1 -0
- package/lib/commonjs/package.json +1 -0
- package/lib/commonjs/types/events.js +6 -0
- package/lib/commonjs/types/events.js.map +1 -0
- package/lib/commonjs/types/index.js +2 -0
- package/lib/commonjs/types/index.js.map +1 -0
- package/lib/commonjs/ui/components/KwikIDVerificationModal.js +407 -0
- package/lib/commonjs/ui/components/KwikIDVerificationModal.js.map +1 -0
- package/lib/commonjs/ui/components/screens.js +338 -0
- package/lib/commonjs/ui/components/screens.js.map +1 -0
- package/lib/commonjs/ui/context/kwik-id-provider.js +52 -0
- package/lib/commonjs/ui/context/kwik-id-provider.js.map +1 -0
- package/lib/commonjs/ui/hooks/use-kwik-verification.js +77 -0
- package/lib/commonjs/ui/hooks/use-kwik-verification.js.map +1 -0
- package/lib/commonjs/ui/index.js +33 -0
- package/lib/commonjs/ui/index.js.map +1 -0
- package/lib/module/api/api-client.js +208 -0
- package/lib/module/api/api-client.js.map +1 -0
- package/lib/module/api/api-error.js +24 -0
- package/lib/module/api/api-error.js.map +1 -0
- package/lib/module/api/index.js +6 -0
- package/lib/module/api/index.js.map +1 -0
- package/lib/module/api/upload.js +68 -0
- package/lib/module/api/upload.js.map +1 -0
- package/lib/module/camera/camera-view.js +222 -0
- package/lib/module/camera/camera-view.js.map +1 -0
- package/lib/module/camera/index.js +5 -0
- package/lib/module/camera/index.js.map +1 -0
- package/lib/module/camera/photo-capture.js +45 -0
- package/lib/module/camera/photo-capture.js.map +1 -0
- package/lib/module/crypto/fingerprint.js +37 -0
- package/lib/module/crypto/fingerprint.js.map +1 -0
- package/lib/module/crypto/hmac.js +143 -0
- package/lib/module/crypto/hmac.js.map +1 -0
- package/lib/module/crypto/index.js +6 -0
- package/lib/module/crypto/index.js.map +1 -0
- package/lib/module/crypto/session-manager.js +169 -0
- package/lib/module/crypto/session-manager.js.map +1 -0
- package/lib/module/i18n/en.js +293 -0
- package/lib/module/i18n/en.js.map +1 -0
- package/lib/module/i18n/fr.js +290 -0
- package/lib/module/i18n/fr.js.map +1 -0
- package/lib/module/i18n/index.js +11 -0
- package/lib/module/i18n/index.js.map +1 -0
- package/lib/module/i18n/locale.js +15 -0
- package/lib/module/i18n/locale.js.map +1 -0
- package/lib/module/i18n/translator.js +34 -0
- package/lib/module/i18n/translator.js.map +1 -0
- package/lib/module/index.js +30 -0
- package/lib/module/index.js.map +1 -0
- package/lib/module/lib/device-detector.js +26 -0
- package/lib/module/lib/device-detector.js.map +1 -0
- package/lib/module/lib/event-emitter.js +80 -0
- package/lib/module/lib/event-emitter.js.map +1 -0
- package/lib/module/lib/index.js +6 -0
- package/lib/module/lib/index.js.map +1 -0
- package/lib/module/lib/kwik-id-rn-sdk.js +150 -0
- package/lib/module/lib/kwik-id-rn-sdk.js.map +1 -0
- package/lib/module/lib/verification-machine.js +268 -0
- package/lib/module/lib/verification-machine.js.map +1 -0
- package/lib/module/package.json +1 -0
- package/lib/module/types/events.js +4 -0
- package/lib/module/types/events.js.map +1 -0
- package/lib/module/types/index.js +2 -0
- package/lib/module/types/index.js.map +1 -0
- package/lib/module/ui/components/KwikIDVerificationModal.js +402 -0
- package/lib/module/ui/components/KwikIDVerificationModal.js.map +1 -0
- package/lib/module/ui/components/screens.js +328 -0
- package/lib/module/ui/components/screens.js.map +1 -0
- package/lib/module/ui/context/kwik-id-provider.js +46 -0
- package/lib/module/ui/context/kwik-id-provider.js.map +1 -0
- package/lib/module/ui/hooks/use-kwik-verification.js +72 -0
- package/lib/module/ui/hooks/use-kwik-verification.js.map +1 -0
- package/lib/module/ui/index.js +6 -0
- package/lib/module/ui/index.js.map +1 -0
- package/lib/typescript/commonjs/api/api-client.d.ts +82 -0
- package/lib/typescript/commonjs/api/api-client.d.ts.map +1 -0
- package/lib/typescript/commonjs/api/api-error.d.ts +13 -0
- package/lib/typescript/commonjs/api/api-error.d.ts.map +1 -0
- package/lib/typescript/commonjs/api/index.d.ts +6 -0
- package/lib/typescript/commonjs/api/index.d.ts.map +1 -0
- package/lib/typescript/commonjs/api/upload.d.ts +19 -0
- package/lib/typescript/commonjs/api/upload.d.ts.map +1 -0
- package/lib/typescript/commonjs/camera/camera-view.d.ts +25 -0
- package/lib/typescript/commonjs/camera/camera-view.d.ts.map +1 -0
- package/lib/typescript/commonjs/camera/index.d.ts +5 -0
- package/lib/typescript/commonjs/camera/index.d.ts.map +1 -0
- package/lib/typescript/commonjs/camera/photo-capture.d.ts +9 -0
- package/lib/typescript/commonjs/camera/photo-capture.d.ts.map +1 -0
- package/lib/typescript/commonjs/crypto/fingerprint.d.ts +3 -0
- package/lib/typescript/commonjs/crypto/fingerprint.d.ts.map +1 -0
- package/lib/typescript/commonjs/crypto/hmac.d.ts +18 -0
- package/lib/typescript/commonjs/crypto/hmac.d.ts.map +1 -0
- package/lib/typescript/commonjs/crypto/index.d.ts +4 -0
- package/lib/typescript/commonjs/crypto/index.d.ts.map +1 -0
- package/lib/typescript/commonjs/crypto/session-manager.d.ts +27 -0
- package/lib/typescript/commonjs/crypto/session-manager.d.ts.map +1 -0
- package/lib/typescript/commonjs/i18n/en.d.ts +291 -0
- package/lib/typescript/commonjs/i18n/en.d.ts.map +1 -0
- package/lib/typescript/commonjs/i18n/fr.d.ts +6 -0
- package/lib/typescript/commonjs/i18n/fr.d.ts.map +1 -0
- package/lib/typescript/commonjs/i18n/index.d.ts +10 -0
- package/lib/typescript/commonjs/i18n/index.d.ts.map +1 -0
- package/lib/typescript/commonjs/i18n/locale.d.ts +4 -0
- package/lib/typescript/commonjs/i18n/locale.d.ts.map +1 -0
- package/lib/typescript/commonjs/i18n/translator.d.ts +15 -0
- package/lib/typescript/commonjs/i18n/translator.d.ts.map +1 -0
- package/lib/typescript/commonjs/index.d.ts +24 -0
- package/lib/typescript/commonjs/index.d.ts.map +1 -0
- package/lib/typescript/commonjs/lib/device-detector.d.ts +5 -0
- package/lib/typescript/commonjs/lib/device-detector.d.ts.map +1 -0
- package/lib/typescript/commonjs/lib/event-emitter.d.ts +19 -0
- package/lib/typescript/commonjs/lib/event-emitter.d.ts.map +1 -0
- package/lib/typescript/commonjs/lib/index.d.ts +5 -0
- package/lib/typescript/commonjs/lib/index.d.ts.map +1 -0
- package/lib/typescript/commonjs/lib/kwik-id-rn-sdk.d.ts +43 -0
- package/lib/typescript/commonjs/lib/kwik-id-rn-sdk.d.ts.map +1 -0
- package/lib/typescript/commonjs/lib/verification-machine.d.ts +78 -0
- package/lib/typescript/commonjs/lib/verification-machine.d.ts.map +1 -0
- package/lib/typescript/commonjs/package.json +1 -0
- package/lib/typescript/commonjs/types/events.d.ts +94 -0
- package/lib/typescript/commonjs/types/events.d.ts.map +1 -0
- package/lib/typescript/commonjs/types/index.d.ts +242 -0
- package/lib/typescript/commonjs/types/index.d.ts.map +1 -0
- package/lib/typescript/commonjs/ui/components/KwikIDVerificationModal.d.ts +21 -0
- package/lib/typescript/commonjs/ui/components/KwikIDVerificationModal.d.ts.map +1 -0
- package/lib/typescript/commonjs/ui/components/screens.d.ts +46 -0
- package/lib/typescript/commonjs/ui/components/screens.d.ts.map +1 -0
- package/lib/typescript/commonjs/ui/context/kwik-id-provider.d.ts +19 -0
- package/lib/typescript/commonjs/ui/context/kwik-id-provider.d.ts.map +1 -0
- package/lib/typescript/commonjs/ui/hooks/use-kwik-verification.d.ts +29 -0
- package/lib/typescript/commonjs/ui/hooks/use-kwik-verification.d.ts.map +1 -0
- package/lib/typescript/commonjs/ui/index.d.ts +7 -0
- package/lib/typescript/commonjs/ui/index.d.ts.map +1 -0
- package/lib/typescript/module/api/api-client.d.ts +82 -0
- package/lib/typescript/module/api/api-client.d.ts.map +1 -0
- package/lib/typescript/module/api/api-error.d.ts +13 -0
- package/lib/typescript/module/api/api-error.d.ts.map +1 -0
- package/lib/typescript/module/api/index.d.ts +6 -0
- package/lib/typescript/module/api/index.d.ts.map +1 -0
- package/lib/typescript/module/api/upload.d.ts +19 -0
- package/lib/typescript/module/api/upload.d.ts.map +1 -0
- package/lib/typescript/module/camera/camera-view.d.ts +25 -0
- package/lib/typescript/module/camera/camera-view.d.ts.map +1 -0
- package/lib/typescript/module/camera/index.d.ts +5 -0
- package/lib/typescript/module/camera/index.d.ts.map +1 -0
- package/lib/typescript/module/camera/photo-capture.d.ts +9 -0
- package/lib/typescript/module/camera/photo-capture.d.ts.map +1 -0
- package/lib/typescript/module/crypto/fingerprint.d.ts +3 -0
- package/lib/typescript/module/crypto/fingerprint.d.ts.map +1 -0
- package/lib/typescript/module/crypto/hmac.d.ts +18 -0
- package/lib/typescript/module/crypto/hmac.d.ts.map +1 -0
- package/lib/typescript/module/crypto/index.d.ts +4 -0
- package/lib/typescript/module/crypto/index.d.ts.map +1 -0
- package/lib/typescript/module/crypto/session-manager.d.ts +27 -0
- package/lib/typescript/module/crypto/session-manager.d.ts.map +1 -0
- package/lib/typescript/module/i18n/en.d.ts +291 -0
- package/lib/typescript/module/i18n/en.d.ts.map +1 -0
- package/lib/typescript/module/i18n/fr.d.ts +6 -0
- package/lib/typescript/module/i18n/fr.d.ts.map +1 -0
- package/lib/typescript/module/i18n/index.d.ts +10 -0
- package/lib/typescript/module/i18n/index.d.ts.map +1 -0
- package/lib/typescript/module/i18n/locale.d.ts +4 -0
- package/lib/typescript/module/i18n/locale.d.ts.map +1 -0
- package/lib/typescript/module/i18n/translator.d.ts +15 -0
- package/lib/typescript/module/i18n/translator.d.ts.map +1 -0
- package/lib/typescript/module/index.d.ts +24 -0
- package/lib/typescript/module/index.d.ts.map +1 -0
- package/lib/typescript/module/lib/device-detector.d.ts +5 -0
- package/lib/typescript/module/lib/device-detector.d.ts.map +1 -0
- package/lib/typescript/module/lib/event-emitter.d.ts +19 -0
- package/lib/typescript/module/lib/event-emitter.d.ts.map +1 -0
- package/lib/typescript/module/lib/index.d.ts +5 -0
- package/lib/typescript/module/lib/index.d.ts.map +1 -0
- package/lib/typescript/module/lib/kwik-id-rn-sdk.d.ts +43 -0
- package/lib/typescript/module/lib/kwik-id-rn-sdk.d.ts.map +1 -0
- package/lib/typescript/module/lib/verification-machine.d.ts +78 -0
- package/lib/typescript/module/lib/verification-machine.d.ts.map +1 -0
- package/lib/typescript/module/package.json +1 -0
- package/lib/typescript/module/types/events.d.ts +94 -0
- package/lib/typescript/module/types/events.d.ts.map +1 -0
- package/lib/typescript/module/types/index.d.ts +242 -0
- package/lib/typescript/module/types/index.d.ts.map +1 -0
- package/lib/typescript/module/ui/components/KwikIDVerificationModal.d.ts +21 -0
- package/lib/typescript/module/ui/components/KwikIDVerificationModal.d.ts.map +1 -0
- package/lib/typescript/module/ui/components/screens.d.ts +46 -0
- package/lib/typescript/module/ui/components/screens.d.ts.map +1 -0
- package/lib/typescript/module/ui/context/kwik-id-provider.d.ts +19 -0
- package/lib/typescript/module/ui/context/kwik-id-provider.d.ts.map +1 -0
- package/lib/typescript/module/ui/hooks/use-kwik-verification.d.ts +29 -0
- package/lib/typescript/module/ui/hooks/use-kwik-verification.d.ts.map +1 -0
- package/lib/typescript/module/ui/index.d.ts +7 -0
- package/lib/typescript/module/ui/index.d.ts.map +1 -0
- package/package.json +121 -3
- package/src/api/api-client.ts +319 -0
- package/src/api/api-error.ts +28 -0
- package/src/api/index.ts +12 -0
- package/src/api/upload.ts +87 -0
- package/src/camera/camera-view.tsx +217 -0
- package/src/camera/index.ts +4 -0
- package/src/camera/photo-capture.ts +58 -0
- package/src/crypto/fingerprint.ts +46 -0
- package/src/crypto/hmac.ts +172 -0
- package/src/crypto/index.ts +3 -0
- package/src/crypto/session-manager.ts +200 -0
- package/src/i18n/en.ts +315 -0
- package/src/i18n/fr.ts +325 -0
- package/src/i18n/index.ts +9 -0
- package/src/i18n/locale.ts +15 -0
- package/src/i18n/translator.ts +37 -0
- package/src/index.ts +102 -0
- package/src/lib/device-detector.ts +32 -0
- package/src/lib/event-emitter.ts +90 -0
- package/src/lib/index.ts +15 -0
- package/src/lib/kwik-id-rn-sdk.ts +160 -0
- package/src/lib/verification-machine.ts +273 -0
- package/src/types/events.ts +75 -0
- package/src/types/index.ts +309 -0
- package/src/ui/components/KwikIDVerificationModal.tsx +450 -0
- package/src/ui/components/screens.tsx +283 -0
- package/src/ui/context/kwik-id-provider.tsx +72 -0
- package/src/ui/hooks/use-kwik-verification.ts +121 -0
- package/src/ui/index.ts +9 -0
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* RN API client for the KwikId SDK gateway (`/sdk/v1/*`).
|
|
3
|
+
*
|
|
4
|
+
* Ported from @kwik-id/sdk-core: the JSON `request()` (fetch + AbortController) is
|
|
5
|
+
* unchanged; the XMLHttpRequest upload is replaced with an injectable multipart
|
|
6
|
+
* uploader (expo-file-system by default). `liveness_frame` has no server endpoint
|
|
7
|
+
* and is rejected.
|
|
8
|
+
*/
|
|
9
|
+
import { SessionManager } from "../crypto/session-manager.js";
|
|
10
|
+
import type { CaptureAsset, CaptureType, DocumentType, LivenessResult, QualityResult, SessionInfo, VerificationResult } from "../types/index.js";
|
|
11
|
+
import { type Uploader } from "./upload.js";
|
|
12
|
+
export declare const DEFAULT_BASE_URL = "https://api.identity.kwiknkap.com";
|
|
13
|
+
export interface ApiClientConfig {
|
|
14
|
+
baseUrl: string;
|
|
15
|
+
timeout?: number;
|
|
16
|
+
debug?: boolean;
|
|
17
|
+
/** Custom fetch implementation (for testing). */
|
|
18
|
+
fetch?: typeof fetch;
|
|
19
|
+
/** Custom multipart uploader (for testing). */
|
|
20
|
+
uploader?: Uploader;
|
|
21
|
+
}
|
|
22
|
+
export interface UploadResponse {
|
|
23
|
+
uploadId: string;
|
|
24
|
+
status: string;
|
|
25
|
+
}
|
|
26
|
+
export interface SubmitResponse {
|
|
27
|
+
success: boolean;
|
|
28
|
+
message?: string;
|
|
29
|
+
jobId?: string;
|
|
30
|
+
}
|
|
31
|
+
export interface StatusResponse {
|
|
32
|
+
jobId: string;
|
|
33
|
+
status: "queued" | "processing" | "completed" | "failed" | "verified" | "rejected";
|
|
34
|
+
progress?: number;
|
|
35
|
+
processingStep?: string;
|
|
36
|
+
errorCode?: string;
|
|
37
|
+
errorMessage?: string;
|
|
38
|
+
errorDetails?: {
|
|
39
|
+
document: string;
|
|
40
|
+
errorCode: string;
|
|
41
|
+
errorMessage: string;
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
export interface HandoffValidateResponse {
|
|
45
|
+
valid: boolean;
|
|
46
|
+
orgName?: string;
|
|
47
|
+
orgLogoUrl?: string;
|
|
48
|
+
expiresAt?: string;
|
|
49
|
+
error?: string;
|
|
50
|
+
}
|
|
51
|
+
export interface HandoffRedeemResponse {
|
|
52
|
+
sessionToken: string;
|
|
53
|
+
jobId: string;
|
|
54
|
+
expiresAt: string;
|
|
55
|
+
}
|
|
56
|
+
export declare class ApiClient {
|
|
57
|
+
private config;
|
|
58
|
+
private sessionManager;
|
|
59
|
+
private uploader;
|
|
60
|
+
constructor(sessionManager: SessionManager, config?: Partial<ApiClientConfig>);
|
|
61
|
+
validateSession(clientSecret: string): Promise<SessionInfo>;
|
|
62
|
+
uploadCapture(type: CaptureType, asset: CaptureAsset, onProgress?: (progress: number) => void): Promise<UploadResponse>;
|
|
63
|
+
submitVerification(documentType: DocumentType, clientAnalysis?: {
|
|
64
|
+
qualityScores?: QualityResult;
|
|
65
|
+
livenessResult?: LivenessResult;
|
|
66
|
+
}): Promise<SubmitResponse>;
|
|
67
|
+
getStatus(): Promise<StatusResponse>;
|
|
68
|
+
getResult(): Promise<VerificationResult>;
|
|
69
|
+
pollForResult(options?: {
|
|
70
|
+
maxAttempts?: number;
|
|
71
|
+
intervalMs?: number;
|
|
72
|
+
onProgress?: (status: StatusResponse) => void;
|
|
73
|
+
}): Promise<VerificationResult>;
|
|
74
|
+
validateHandoff(code: string): Promise<HandoffValidateResponse>;
|
|
75
|
+
redeemHandoff(code: string): Promise<HandoffRedeemResponse>;
|
|
76
|
+
reportHandoffStatus(code: string, status: "completed" | "abandoned"): Promise<void>;
|
|
77
|
+
getBaseUrl(): string;
|
|
78
|
+
private request;
|
|
79
|
+
private parseErrorResponse;
|
|
80
|
+
private delay;
|
|
81
|
+
}
|
|
82
|
+
//# sourceMappingURL=api-client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api-client.d.ts","sourceRoot":"","sources":["../../../../src/api/api-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* API error (ported verbatim from @kwik-id/sdk-core).
|
|
3
|
+
*/
|
|
4
|
+
export declare class ApiError extends Error {
|
|
5
|
+
readonly statusCode: number;
|
|
6
|
+
readonly code?: string;
|
|
7
|
+
readonly details?: unknown;
|
|
8
|
+
constructor(message: string, statusCode: number, code?: string, details?: unknown);
|
|
9
|
+
isRetryable(): boolean;
|
|
10
|
+
isAuthError(): boolean;
|
|
11
|
+
isValidationError(): boolean;
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=api-error.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api-error.d.ts","sourceRoot":"","sources":["../../../../src/api/api-error.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,qBAAa,QAAS,SAAQ,KAAK;IAC/B,SAAgB,UAAU,EAAE,MAAM,CAAC;IACnC,SAAgB,IAAI,CAAC,EAAE,MAAM,CAAC;IAC9B,SAAgB,OAAO,CAAC,EAAE,OAAO,CAAC;gBAEtB,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO;IAQjF,WAAW,IAAI,OAAO;IAItB,WAAW,IAAI,OAAO;IAItB,iBAAiB,IAAI,OAAO;CAG/B"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export { ApiClient, DEFAULT_BASE_URL } from "./api-client.js";
|
|
2
|
+
export type { ApiClientConfig, UploadResponse, SubmitResponse, StatusResponse, HandoffValidateResponse, HandoffRedeemResponse, } from "./api-client.js";
|
|
3
|
+
export { ApiError } from "./api-error.js";
|
|
4
|
+
export { uploadMultipart } from "./upload.js";
|
|
5
|
+
export type { Uploader, UploadResult } from "./upload.js";
|
|
6
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/api/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,iBAAc,CAAC;AAC3D,YAAY,EACR,eAAe,EACf,cAAc,EACd,cAAc,EACd,cAAc,EACd,uBAAuB,EACvB,qBAAqB,GACxB,MAAM,iBAAc,CAAC;AACtB,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAa,CAAC;AACvC,OAAO,EAAE,eAAe,EAAE,MAAM,aAAU,CAAC;AAC3C,YAAY,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,aAAU,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { CaptureAsset } from "../types/index.js";
|
|
2
|
+
export interface UploadResult {
|
|
3
|
+
uploadId: string;
|
|
4
|
+
status: string;
|
|
5
|
+
}
|
|
6
|
+
export type Uploader = (opts: {
|
|
7
|
+
url: string;
|
|
8
|
+
asset: CaptureAsset;
|
|
9
|
+
headers: Record<string, string>;
|
|
10
|
+
onProgress?: (pct: number) => void;
|
|
11
|
+
/**
|
|
12
|
+
* Inactivity timeout in ms: the upload is cancelled and rejected when no progress
|
|
13
|
+
* (or response) arrives for this long. Omit or pass 0 to disable.
|
|
14
|
+
*/
|
|
15
|
+
timeoutMs?: number;
|
|
16
|
+
}) => Promise<UploadResult>;
|
|
17
|
+
/** Default uploader — used on device. */
|
|
18
|
+
export declare const uploadMultipart: Uploader;
|
|
19
|
+
//# sourceMappingURL=upload.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"upload.d.ts","sourceRoot":"","sources":["../../../../src/api/upload.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAU,CAAC;AAG7C,MAAM,WAAW,YAAY;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,MAAM,QAAQ,GAAG,CAAC,IAAI,EAAE;IAC1B,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,YAAY,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CACtB,KAAK,OAAO,CAAC,YAAY,CAAC,CAAC;AAU5B,yCAAyC;AACzC,eAAO,MAAM,eAAe,EAAE,QAmD7B,CAAC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { RawPhoto } from "./photo-capture.js";
|
|
2
|
+
export interface CameraViewProps {
|
|
3
|
+
facing: "front" | "back";
|
|
4
|
+
/** Only render/activate the camera when this view is on screen. */
|
|
5
|
+
active: boolean;
|
|
6
|
+
primaryColor: string;
|
|
7
|
+
/** Optional overlay (e.g. document frame or face oval) drawn over the preview. */
|
|
8
|
+
overlay?: React.ReactNode;
|
|
9
|
+
instruction?: string;
|
|
10
|
+
/** Shown above the shutter when a capture (or the caller's onCapture) fails. */
|
|
11
|
+
captureErrorText?: string;
|
|
12
|
+
/** Permission-denied screen title. */
|
|
13
|
+
permissionTitle?: string;
|
|
14
|
+
/** Permission-denied screen body. */
|
|
15
|
+
permissionBody?: string;
|
|
16
|
+
/** Label of the button that opens the OS settings. */
|
|
17
|
+
openSettingsLabel?: string;
|
|
18
|
+
/** Accessibility label of the shutter button. */
|
|
19
|
+
captureLabel?: string;
|
|
20
|
+
/** May return a promise; a rejection is shown as `captureErrorText` and the user can retry. */
|
|
21
|
+
onCapture: (photo: RawPhoto) => void | Promise<void>;
|
|
22
|
+
onPermissionDenied?: (canAskAgain: boolean) => void;
|
|
23
|
+
}
|
|
24
|
+
export declare function CameraView({ facing, active, primaryColor, overlay, instruction, captureErrorText, permissionTitle, permissionBody, openSettingsLabel, captureLabel, onCapture, onPermissionDenied, }: CameraViewProps): import("react/jsx-runtime").JSX.Element;
|
|
25
|
+
//# sourceMappingURL=camera-view.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"camera-view.d.ts","sourceRoot":"","sources":["../../../../src/camera/camera-view.tsx"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAiB,CAAC;AAWhD,MAAM,WAAW,eAAe;IAC5B,MAAM,EAAE,OAAO,GAAG,MAAM,CAAC;IACzB,mEAAmE;IACnE,MAAM,EAAE,OAAO,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,kFAAkF;IAClF,OAAO,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gFAAgF;IAChF,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,sCAAsC;IACtC,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,qCAAqC;IACrC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,sDAAsD;IACtD,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,iDAAiD;IACjD,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,+FAA+F;IAC/F,SAAS,EAAE,CAAC,KAAK,EAAE,QAAQ,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACrD,kBAAkB,CAAC,EAAE,CAAC,WAAW,EAAE,OAAO,KAAK,IAAI,CAAC;CACvD;AAED,wBAAgB,UAAU,CAAC,EACvB,MAAM,EACN,MAAM,EACN,YAAY,EACZ,OAAO,EACP,WAAW,EACX,gBAAmE,EACnE,eAAwC,EACxC,cAA6E,EAC7E,iBAAmC,EACnC,YAA8B,EAC9B,SAAS,EACT,kBAAkB,GACrB,EAAE,eAAe,2CAkGjB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/camera/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAe,CAAC;AAC3C,YAAY,EAAE,eAAe,EAAE,MAAM,kBAAe,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAiB,CAAC;AAClD,YAAY,EAAE,QAAQ,EAAE,MAAM,oBAAiB,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { CaptureAsset, CaptureType } from "../types/index.js";
|
|
2
|
+
export interface RawPhoto {
|
|
3
|
+
/** Absolute file path or file:// URI from the camera. */
|
|
4
|
+
path: string;
|
|
5
|
+
width?: number;
|
|
6
|
+
height?: number;
|
|
7
|
+
}
|
|
8
|
+
export declare function compressCapture(type: CaptureType, photo: RawPhoto, timestamp: number): Promise<CaptureAsset>;
|
|
9
|
+
//# sourceMappingURL=photo-capture.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"photo-capture.d.ts","sourceRoot":"","sources":["../../../../src/camera/photo-capture.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,mBAAU,CAAC;AAE1D,MAAM,WAAW,QAAQ;IACrB,yDAAyD;IACzD,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACnB;AAaD,wBAAsB,eAAe,CACjC,IAAI,EAAE,WAAW,EACjB,KAAK,EAAE,QAAQ,EACf,SAAS,EAAE,MAAM,GAClB,OAAO,CAAC,YAAY,CAAC,CAwBvB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fingerprint.d.ts","sourceRoot":"","sources":["../../../../src/crypto/fingerprint.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mBAAU,CAAC;AAGlD,wBAAgB,mBAAmB,IAAI,iBAAiB,CAgCvD"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pure-JS SHA-256 and HMAC-SHA256.
|
|
3
|
+
*
|
|
4
|
+
* Self-contained (no native dependency) so it runs identically on device and in
|
|
5
|
+
* node tests, and never blocks the verification flow. The web SDK used
|
|
6
|
+
* `crypto.subtle`; expo-crypto exposes digests but not raw HMAC, so we implement
|
|
7
|
+
* the standard ipad/opad construction here. Signatures are best-effort — the
|
|
8
|
+
* KwikId gateway enforces only the Bearer token.
|
|
9
|
+
*/
|
|
10
|
+
/** SHA-256 over raw bytes → 32-byte digest. */
|
|
11
|
+
export declare function sha256Bytes(message: Uint8Array): Uint8Array;
|
|
12
|
+
/** SHA-256 of a UTF-8 string → lowercase hex. */
|
|
13
|
+
export declare function sha256Hex(message: string): string;
|
|
14
|
+
/** HMAC-SHA256(message, key) → lowercase hex. */
|
|
15
|
+
export declare function hmacSha256Hex(message: string, key: string): string;
|
|
16
|
+
/** Generate a hex nonce. Deterministic seed optional for tests. */
|
|
17
|
+
export declare function generateNonce(length?: number, seed?: () => number): string;
|
|
18
|
+
//# sourceMappingURL=hmac.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hmac.d.ts","sourceRoot":"","sources":["../../../../src/crypto/hmac.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAiBH,+CAA+C;AAC/C,wBAAgB,WAAW,CAAC,OAAO,EAAE,UAAU,GAAG,UAAU,CA6D3D;AAqCD,iDAAiD;AACjD,wBAAgB,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAEjD;AAID,iDAAiD;AACjD,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CA2BlE;AAED,mEAAmE;AACnE,wBAAgB,aAAa,CAAC,MAAM,SAAK,EAAE,IAAI,CAAC,EAAE,MAAM,MAAM,GAAG,MAAM,CAStE"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/crypto/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAmB,CAAC;AACnD,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAe,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,WAAQ,CAAC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Session manager for RN (ported from @kwik-id/sdk-core, web crypto removed).
|
|
3
|
+
*
|
|
4
|
+
* - Parses the three token formats (JWT / test_sess_* / legacy cs_*).
|
|
5
|
+
* - Assembles request headers (Bearer always; X-* best-effort).
|
|
6
|
+
* - Signs the submit payload with the pure-JS HMAC.
|
|
7
|
+
*/
|
|
8
|
+
import type { DeviceFingerprint, SecurePayload, Session } from "../types/index.js";
|
|
9
|
+
export declare class SessionManager {
|
|
10
|
+
private session;
|
|
11
|
+
private fingerprint;
|
|
12
|
+
initializeFromClientSecret(clientSecret: string): Promise<Session>;
|
|
13
|
+
private generateSessionId;
|
|
14
|
+
updateSession(sessionData: Partial<Session>): void;
|
|
15
|
+
isSessionValid(): boolean;
|
|
16
|
+
getSession(): Session | null;
|
|
17
|
+
getFingerprint(): DeviceFingerprint | null;
|
|
18
|
+
getAuthHeader(): string;
|
|
19
|
+
incrementSequence(): number;
|
|
20
|
+
refreshNonce(): string;
|
|
21
|
+
createSecurePayload<T>(data: T): Promise<SecurePayload>;
|
|
22
|
+
private signPayload;
|
|
23
|
+
getRequestHeaders(): Record<string, string>;
|
|
24
|
+
clearSession(): void;
|
|
25
|
+
needsRefresh(): boolean;
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=session-manager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session-manager.d.ts","sourceRoot":"","sources":["../../../../src/crypto/session-manager.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,KAAK,EAAE,iBAAiB,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,mBAAU,CAAC;AAqC1E,qBAAa,cAAc;IACvB,OAAO,CAAC,OAAO,CAAwB;IACvC,OAAO,CAAC,WAAW,CAAkC;IAE/C,0BAA0B,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IA0CxE,OAAO,CAAC,iBAAiB;IAUzB,aAAa,CAAC,WAAW,EAAE,OAAO,CAAC,OAAO,CAAC,GAAG,IAAI;IAOlD,cAAc,IAAI,OAAO;IAKzB,UAAU,IAAI,OAAO,GAAG,IAAI;IAI5B,cAAc,IAAI,iBAAiB,GAAG,IAAI;IAI1C,aAAa,IAAI,MAAM;IAOvB,iBAAiB,IAAI,MAAM;IAQ3B,YAAY,IAAI,MAAM;IAQhB,mBAAmB,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,GAAG,OAAO,CAAC,aAAa,CAAC;IAmB7D,OAAO,CAAC,WAAW;IAanB,iBAAiB,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAc3C,YAAY,IAAI,IAAI;IAKpB,YAAY,IAAI,OAAO;CAK1B"}
|
|
@@ -0,0 +1,291 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* English message catalog for the React Native KYC flow — source of truth for keys.
|
|
3
|
+
*
|
|
4
|
+
* This is a STANDALONE copy of the web collection-front catalog (the RN SDK does
|
|
5
|
+
* not import `@kwik-id/*` at runtime). Keys and French copy are kept identical to
|
|
6
|
+
* the web SDK so both fronts speak the same language; a compat check guards drift.
|
|
7
|
+
*/
|
|
8
|
+
export declare const en: {
|
|
9
|
+
readonly "branding.builtBy": "Built by {name}";
|
|
10
|
+
readonly "branding.poweredBy": "Identity verification powered by";
|
|
11
|
+
readonly "branding.secureCompliant": "Secure • WCAG 2.1 Compliant";
|
|
12
|
+
readonly "camera.accessError": "Unable to access camera. Please check permissions or upload a file instead.";
|
|
13
|
+
readonly "camera.accessRequiredTitle": "Camera Access Required";
|
|
14
|
+
readonly "camera.adjust": "Adjust";
|
|
15
|
+
readonly "camera.adjusting": "Adjusting...";
|
|
16
|
+
readonly "camera.captureFailedMobile": "We couldn't capture that photo. Please try again.";
|
|
17
|
+
readonly "camera.errorImageType": "Please select an image file";
|
|
18
|
+
readonly "camera.finalStep": "Final Step";
|
|
19
|
+
readonly "camera.initializing": "Initializing camera...";
|
|
20
|
+
readonly "camera.instructionBack": "Align the back of your document within the frame";
|
|
21
|
+
readonly "camera.instructionBackMobile": "Capture the back of your document";
|
|
22
|
+
readonly "camera.instructionFront": "Align the front facing side of your document within the frame";
|
|
23
|
+
readonly "camera.instructionFrontMobile": "Capture the front of your document";
|
|
24
|
+
readonly "camera.instructionSelfie": "Position your face in the center of the frame";
|
|
25
|
+
readonly "camera.instructionSelfieMobile": "Center your face and capture a selfie";
|
|
26
|
+
readonly "camera.openSettingsMobile": "Open Settings";
|
|
27
|
+
readonly "camera.permissionBodyMobile": "Enable camera access in Settings to continue verification.";
|
|
28
|
+
readonly "camera.permissionTitleMobile": "Camera access needed";
|
|
29
|
+
readonly "camera.ready": "Ready";
|
|
30
|
+
readonly "camera.readyToCapture": "Looking good! Ready to capture";
|
|
31
|
+
readonly "camera.tooBlurry": "Too Blurry";
|
|
32
|
+
readonly "camera.tooBlurryHint": "Hold steady and keep lens clean";
|
|
33
|
+
readonly "camera.tooBright": "Too Bright";
|
|
34
|
+
readonly "camera.tooBrightHint": "Reduce lighting or move away from light";
|
|
35
|
+
readonly "camera.tooDark": "Too Dark";
|
|
36
|
+
readonly "camera.tooDarkHint": "Move to a brighter area";
|
|
37
|
+
readonly "common.back": "Back";
|
|
38
|
+
readonly "common.backSide": "Back Side";
|
|
39
|
+
readonly "common.cancel": "Cancel";
|
|
40
|
+
readonly "common.capturePhoto": "Capture Photo";
|
|
41
|
+
readonly "common.close": "Close";
|
|
42
|
+
readonly "common.continue": "Continue";
|
|
43
|
+
readonly "common.done": "Done";
|
|
44
|
+
readonly "common.frontSide": "Front Side";
|
|
45
|
+
readonly "common.goBack": "Go Back";
|
|
46
|
+
readonly "common.goodLighting": "Good lighting";
|
|
47
|
+
readonly "common.identityVerification": "Identity Verification";
|
|
48
|
+
readonly "common.imReady": "I'm Ready";
|
|
49
|
+
readonly "common.or": "or";
|
|
50
|
+
readonly "common.retake": "Retake";
|
|
51
|
+
readonly "common.selfie": "Selfie";
|
|
52
|
+
readonly "common.step1of2": "1 of 2";
|
|
53
|
+
readonly "common.step2of2": "2 of 2";
|
|
54
|
+
readonly "common.stepOf": "Step {current} of {total}";
|
|
55
|
+
readonly "common.uploadFromDevice": "Upload from Device";
|
|
56
|
+
readonly "confirm.backTitle": "Check Back Side";
|
|
57
|
+
readonly "confirm.checklistDesc": "If the photo doesn't meet these criteria below, please retake it for better results";
|
|
58
|
+
readonly "confirm.checklistTitle": "Quality checklist";
|
|
59
|
+
readonly "confirm.confirmContinue": "Confirm & Continue";
|
|
60
|
+
readonly "confirm.docCheck1": "All corners are visible";
|
|
61
|
+
readonly "confirm.docCheck2": "Text is clear and readable";
|
|
62
|
+
readonly "confirm.docCheck3": "No glare or reflections";
|
|
63
|
+
readonly "confirm.docCheck4": "Photo is not blurry";
|
|
64
|
+
readonly "confirm.frontTitle": "Check Front Side";
|
|
65
|
+
readonly "confirm.looksGood": "Looks Good";
|
|
66
|
+
readonly "confirm.looksGoodTitle": "Looks good?";
|
|
67
|
+
readonly "confirm.selfieCheck1": "Your face is clearly visible";
|
|
68
|
+
readonly "confirm.selfieCheck2": "Good lighting without shadows";
|
|
69
|
+
readonly "confirm.selfieCheck3": "Eyes are open and looking at camera";
|
|
70
|
+
readonly "confirm.selfieDisclaimer": "By confirming, you agree that the information provided is accurate and belongs to you";
|
|
71
|
+
readonly "confirm.selfieReview": "Review your selfie and confirm if it looks good";
|
|
72
|
+
readonly "confirm.selfieTitle": "Does this look good?";
|
|
73
|
+
readonly "confirm.subtitle": "Make sure everything is clear and visible";
|
|
74
|
+
readonly "confirm.useThisPhoto": "Use this photo";
|
|
75
|
+
readonly "consent.agreePrivacySuffix": "and consent to {appName} processing my data for verification";
|
|
76
|
+
readonly "consent.agreeTerms1": "I agree to the";
|
|
77
|
+
readonly "consent.docsRequired": "Documents Required";
|
|
78
|
+
readonly "consent.docsRequiredDesc": "Valid government-issued ID (passport, national ID, or driver's license)";
|
|
79
|
+
readonly "consent.errorPrivacy": "You must agree to the privacy policy";
|
|
80
|
+
readonly "consent.errorTerms": "You must agree to the terms and conditions";
|
|
81
|
+
readonly "consent.privacyDesc": "Your data is encrypted and stored securely. We never share your information without consent.";
|
|
82
|
+
readonly "consent.privacyLink": "Privacy Policy";
|
|
83
|
+
readonly "consent.privacyTitle": "Your Privacy";
|
|
84
|
+
readonly "consent.securityNote": "🔒 Your information is protected with bank-level encryption";
|
|
85
|
+
readonly "consent.subtitle": "We need to verify your identity to comply with regulations and ensure the security of your account.";
|
|
86
|
+
readonly "consent.termsLink": "Terms and Conditions";
|
|
87
|
+
readonly "documentType.chooseTitle": "Choose your document";
|
|
88
|
+
readonly "documentType.driversLicense": "Driver's License";
|
|
89
|
+
readonly "documentType.driversLicenseDesc": "Valid driving permit";
|
|
90
|
+
readonly "documentType.idCard": "National ID Card";
|
|
91
|
+
readonly "documentType.idCardDesc": "Government-issued ID card";
|
|
92
|
+
readonly "documentType.note": "Make sure your document is valid and not expired. We'll need to capture both the front and back (if applicable).";
|
|
93
|
+
readonly "documentType.passport": "Passport";
|
|
94
|
+
readonly "documentType.passportDesc": "International travel document";
|
|
95
|
+
readonly "documentType.residencePermit": "Residence Permit";
|
|
96
|
+
readonly "documentType.subtitle": "Choose the type of ID you want to verify";
|
|
97
|
+
readonly "documentType.title": "Select Your Document Type";
|
|
98
|
+
readonly "documentType.votersCard": "Voter's Card";
|
|
99
|
+
readonly "documentType.votersCardDesc": "Electoral identification card";
|
|
100
|
+
readonly "errors.sessionExpiredShort": "Your verification session has expired. Please close and start again.";
|
|
101
|
+
readonly "errors.unexpected": "An unexpected error occurred.";
|
|
102
|
+
readonly "handoff.abandonedDesc": "The verification on your phone was interrupted. Try again or continue here.";
|
|
103
|
+
readonly "handoff.abandonedTitle": "Phone disconnected";
|
|
104
|
+
readonly "handoff.chooseSubtitle": "For the best results, we recommend using your phone — mobile cameras capture sharper images of ID documents.";
|
|
105
|
+
readonly "handoff.chooseTitle": "How would you like to verify?";
|
|
106
|
+
readonly "handoff.completeDesc": "Identity verified on your phone. You can now continue.";
|
|
107
|
+
readonly "handoff.completeTitle": "Verification complete!";
|
|
108
|
+
readonly "handoff.connected": "Connected to your phone";
|
|
109
|
+
readonly "handoff.connectedDesc": "Your phone has connected. Complete the steps on your phone to continue.";
|
|
110
|
+
readonly "handoff.continueDesktop": "Continue on this device";
|
|
111
|
+
readonly "handoff.continueDesktopDesc": "Use your webcam to capture documents";
|
|
112
|
+
readonly "handoff.continueInstead": "Continue on this device instead";
|
|
113
|
+
readonly "handoff.copied": "Copied!";
|
|
114
|
+
readonly "handoff.copyLink": "Copy link instead";
|
|
115
|
+
readonly "handoff.expiredDesc": "Generate a new code to continue.";
|
|
116
|
+
readonly "handoff.expiredTitle": "QR code expired";
|
|
117
|
+
readonly "handoff.expiresIn": "Expires in {time}";
|
|
118
|
+
readonly "handoff.generateNew": "Generate new code";
|
|
119
|
+
readonly "handoff.inProgress": "Verification in progress";
|
|
120
|
+
readonly "handoff.inProgressDesc": "Your phone is capturing and processing your documents…";
|
|
121
|
+
readonly "handoff.qrAlt": "Scan this QR code with your phone";
|
|
122
|
+
readonly "handoff.recommended": "Recommended";
|
|
123
|
+
readonly "handoff.scanDesc": "Open your phone's camera and point it at the QR code to continue on your phone.";
|
|
124
|
+
readonly "handoff.scanTitle": "Scan with your phone";
|
|
125
|
+
readonly "handoff.startError": "Could not start mobile handoff. Try again or continue on this device.";
|
|
126
|
+
readonly "handoff.tryAgain": "Try again";
|
|
127
|
+
readonly "handoff.usePhone": "Use your phone";
|
|
128
|
+
readonly "handoff.usePhoneDesc": "Scan a QR code and complete on your phone";
|
|
129
|
+
readonly "handoff.waitingCompletion": "Waiting for completion…";
|
|
130
|
+
readonly "intro.bodyMobile": "You'll photograph your ID document and take a selfie. It takes about a minute.";
|
|
131
|
+
readonly "intro.getStarted": "Get Started";
|
|
132
|
+
readonly "intro.govIdDesc": "Passport, driver's license, or national ID";
|
|
133
|
+
readonly "intro.govIdTitle": "Government-issued ID";
|
|
134
|
+
readonly "intro.orgUsesKwikID": "{orgName} uses KwikID to verify your identity.";
|
|
135
|
+
readonly "intro.privacyNote": "Your data is encrypted and securely processed. We respect your privacy and follow strict data protection standards.";
|
|
136
|
+
readonly "intro.selfieDesc": "We'll use your device's camera";
|
|
137
|
+
readonly "intro.selfieTitle": "A selfie";
|
|
138
|
+
readonly "intro.subtitle": "We need to verify your identity to keep your account secure and comply with regulations";
|
|
139
|
+
readonly "intro.timeDesc": "The process is quick and secure";
|
|
140
|
+
readonly "intro.timeTitle": "About 2-3 minutes";
|
|
141
|
+
readonly "intro.tipFlat": "Position documents flat on a solid surface";
|
|
142
|
+
readonly "intro.tipLighting": "Use good lighting without glare";
|
|
143
|
+
readonly "intro.tipText": "Ensure all text is clear and readable";
|
|
144
|
+
readonly "intro.tipsTitle": "Quick tips for best results";
|
|
145
|
+
readonly "intro.title": "Verify Your Identity";
|
|
146
|
+
readonly "intro.whatYouNeed": "What you'll need";
|
|
147
|
+
readonly "prepareBack.almostDone": "Almost done!";
|
|
148
|
+
readonly "prepareBack.almostDoneDesc": "After capturing the back side, we'll take a quick selfie to complete verification.";
|
|
149
|
+
readonly "prepareBack.bodyMobile": "Now flip the document over and capture the back the same way.";
|
|
150
|
+
readonly "prepareBack.standardsTitle": "Same quality standards";
|
|
151
|
+
readonly "prepareBack.subtitle": "Flip your {document} and prepare to capture the back side";
|
|
152
|
+
readonly "prepareBack.tipClear": "Ensure all information is clear and readable";
|
|
153
|
+
readonly "prepareBack.tipFlat": "Keep the document flat and stable";
|
|
154
|
+
readonly "prepareBack.tipFlip": "Flip your document to show the back side";
|
|
155
|
+
readonly "prepareBack.tipLighting": "Use the same good lighting as before";
|
|
156
|
+
readonly "prepareBack.title": "Now the Back Side";
|
|
157
|
+
readonly "prepareBack.titleMobile": "Back of document";
|
|
158
|
+
readonly "prepareFront.bodyMobile": "Place the front of your document on a flat, well-lit surface and fit it within the frame.";
|
|
159
|
+
readonly "prepareFront.subtitle": "Get your {document} document ready. We'll capture the front side first.";
|
|
160
|
+
readonly "prepareFront.tipClearDesc": "Ensure all text, photo, and details are clearly visible.";
|
|
161
|
+
readonly "prepareFront.tipClearTitle": "Clear and readable";
|
|
162
|
+
readonly "prepareFront.tipFlatDesc": "Place your document on a flat, contrasting surface.";
|
|
163
|
+
readonly "prepareFront.tipFlatTitle": "Flat surface";
|
|
164
|
+
readonly "prepareFront.tipLightingDesc": "Use natural light or a well-lit room. Avoid glare and shadows.";
|
|
165
|
+
readonly "prepareFront.tipsTitle": "Tips for a great photo";
|
|
166
|
+
readonly "prepareFront.title": "Prepare Your {document}";
|
|
167
|
+
readonly "prepareFront.titleMobile": "Front of document";
|
|
168
|
+
readonly "prepareSelfie.bodyMobile": "Position your face inside the frame in good lighting, then capture.";
|
|
169
|
+
readonly "prepareSelfie.privacyNote": "Your selfie is used only for verification and is securely stored";
|
|
170
|
+
readonly "prepareSelfie.subtitle": "Take a selfie so we can match it with your the photo on your ID.";
|
|
171
|
+
readonly "prepareSelfie.takeSelfie": "Take Selfie";
|
|
172
|
+
readonly "prepareSelfie.tipClearDesc": "Remove glasses, hats, or masks that might obscure your face";
|
|
173
|
+
readonly "prepareSelfie.tipClearTitle": "Clear visibility";
|
|
174
|
+
readonly "prepareSelfie.tipFaceDesc": "Position your face in the center and look directly at the camera";
|
|
175
|
+
readonly "prepareSelfie.tipFaceTitle": "Face the camera";
|
|
176
|
+
readonly "prepareSelfie.tipLightingDesc": "Make sure your face is well-lit without harsh shadows";
|
|
177
|
+
readonly "prepareSelfie.tipsTitle": "Tips for your selfie";
|
|
178
|
+
readonly "prepareSelfie.title": "Now Let's Verify It's You";
|
|
179
|
+
readonly "prepareSelfie.titleMobile": "Take a selfie";
|
|
180
|
+
readonly "processing.pleaseWait": "Please wait while we upload your information...";
|
|
181
|
+
readonly "processing.preliminaryChecks": "Running preliminary checks...";
|
|
182
|
+
readonly "processing.submitting": "Submitting…";
|
|
183
|
+
readonly "processing.title": "Submitting Your Documents";
|
|
184
|
+
readonly "processing.uploadBack": "Uploading document (back)";
|
|
185
|
+
readonly "processing.uploadFront": "Uploading document (front)";
|
|
186
|
+
readonly "processing.uploadSelfie": "Uploading selfie";
|
|
187
|
+
readonly "processing.uploadingBack": "Uploading back…";
|
|
188
|
+
readonly "processing.uploadingFront": "Uploading front…";
|
|
189
|
+
readonly "processing.uploadingSelfie": "Uploading selfie…";
|
|
190
|
+
readonly "processing.working": "Working…";
|
|
191
|
+
readonly "result.commonIssues": "Common issues:";
|
|
192
|
+
readonly "result.couldNotComplete": "Verification could not be completed.";
|
|
193
|
+
readonly "result.docFailedMessage": "{side} document failed: {message}";
|
|
194
|
+
readonly "result.docFailedQuality": "{side} document failed quality check";
|
|
195
|
+
readonly "result.documentsSubmitted": "Documents Submitted";
|
|
196
|
+
readonly "result.failedTitle": "Submission Failed";
|
|
197
|
+
readonly "result.identityDocument": "Identity Document";
|
|
198
|
+
readonly "result.issue1": "Ensure your document is clear and not blurry";
|
|
199
|
+
readonly "result.issue2": "Make sure your face is well-lit in the selfie";
|
|
200
|
+
readonly "result.issue3": "Check that all information on your document is visible";
|
|
201
|
+
readonly "result.issue4": "Use a valid, unexpired government-issued ID";
|
|
202
|
+
readonly "result.nextStep1": "Verification typically takes a few minutes, but may take up to a few hours in rare cases";
|
|
203
|
+
readonly "result.nextStep2": "You'll receive an email notification once verified";
|
|
204
|
+
readonly "result.nextStep3": "Check your email for updates and further instructions";
|
|
205
|
+
readonly "result.selfiePhoto": "Selfie Photo";
|
|
206
|
+
readonly "result.sessionExpiredMessage": "Your verification session has expired. Please close and start a new verification.";
|
|
207
|
+
readonly "result.sessionExpiredTitle": "Session Expired";
|
|
208
|
+
readonly "result.sideBack": "Back";
|
|
209
|
+
readonly "result.sideFront": "Front";
|
|
210
|
+
readonly "result.somethingWrong": "Something went wrong";
|
|
211
|
+
readonly "result.submissionError": "An error occurred during submission";
|
|
212
|
+
readonly "result.submittedFromPhone": "Your documents have been submitted from your phone!";
|
|
213
|
+
readonly "result.submittedMessage": "Your documents have been submitted for verification!";
|
|
214
|
+
readonly "result.submittedMessageMobile": "Your documents were submitted for verification.";
|
|
215
|
+
readonly "result.submittedShort": "Submitted";
|
|
216
|
+
readonly "result.successBody": "Preliminary checks passed. Your documents have been submitted for full review — we'll notify you once complete.";
|
|
217
|
+
readonly "result.successTitle": "Submitted for Review";
|
|
218
|
+
readonly "result.tryAgain": "Try Again";
|
|
219
|
+
readonly "result.whatNext": "What happens next?";
|
|
220
|
+
readonly "selfie.beforeBegin": "Before you begin:";
|
|
221
|
+
readonly "selfie.brightTip1": "Move away from direct sunlight or bright lights";
|
|
222
|
+
readonly "selfie.brightTip2": "Adjust lighting to reduce glare";
|
|
223
|
+
readonly "selfie.brightTip3": "Face away from windows or turn off some lights";
|
|
224
|
+
readonly "selfie.captureSelfie": "Capture Selfie";
|
|
225
|
+
readonly "selfie.darkTip1": "Move to a brighter area or turn on more lights";
|
|
226
|
+
readonly "selfie.darkTip2": "Face a window or light source directly";
|
|
227
|
+
readonly "selfie.darkTip3": "Avoid backlighting (light behind you)";
|
|
228
|
+
readonly "selfie.deniedDesc": "Please enable camera permissions in your browser settings and try again";
|
|
229
|
+
readonly "selfie.deniedTitle": "Camera access denied";
|
|
230
|
+
readonly "selfie.errorCapture": "Please capture your selfie to continue";
|
|
231
|
+
readonly "selfie.errorDenied": "Camera access denied. Please allow camera permissions in your browser settings.";
|
|
232
|
+
readonly "selfie.errorGeneric": "Failed to access camera. Please try again.";
|
|
233
|
+
readonly "selfie.errorInUse": "Camera is already in use by another application.";
|
|
234
|
+
readonly "selfie.errorNoCamera": "No camera found. Please connect a camera and try again.";
|
|
235
|
+
readonly "selfie.errorNoTracks": "No video tracks available";
|
|
236
|
+
readonly "selfie.errorNotSupported": "Camera not supported on this device";
|
|
237
|
+
readonly "selfie.errorStartStream": "Failed to start video stream";
|
|
238
|
+
readonly "selfie.errorTrackInactive": "Camera track is not active";
|
|
239
|
+
readonly "selfie.errorUnknown": "An unknown error occurred while accessing the camera.";
|
|
240
|
+
readonly "selfie.improveLighting": "Improve Lighting";
|
|
241
|
+
readonly "selfie.improveToContinue": "Improve Lighting to Continue";
|
|
242
|
+
readonly "selfie.lightExcellent": "Excellent lighting";
|
|
243
|
+
readonly "selfie.lightPoor": "Poor lighting - improve lighting";
|
|
244
|
+
readonly "selfie.lightTooBright": "Too bright - reduce light";
|
|
245
|
+
readonly "selfie.lightTooDark": "Too dark - add more light";
|
|
246
|
+
readonly "selfie.livenessBlink": "Blink twice slowly";
|
|
247
|
+
readonly "selfie.livenessCenter": "Position your face in the center";
|
|
248
|
+
readonly "selfie.livenessComplete": "Perfect! Processing...";
|
|
249
|
+
readonly "selfie.livenessLeft": "Turn your head slightly left";
|
|
250
|
+
readonly "selfie.livenessRight": "Turn your head slightly right";
|
|
251
|
+
readonly "selfie.permissionDenied": "Permission denied";
|
|
252
|
+
readonly "selfie.pleaseAllow": "Please allow camera access in your browser";
|
|
253
|
+
readonly "selfie.poorTip1": "Add more light sources from the front";
|
|
254
|
+
readonly "selfie.poorTip2": "Ensure your face is evenly lit";
|
|
255
|
+
readonly "selfie.poorTip3": "Avoid shadows on your face";
|
|
256
|
+
readonly "selfie.requesting": "Requesting camera access...";
|
|
257
|
+
readonly "selfie.requiredDesc": "We need to access your camera to verify your identity";
|
|
258
|
+
readonly "selfie.requiredTitle": "Camera access required";
|
|
259
|
+
readonly "selfie.startCamera": "Start Camera";
|
|
260
|
+
readonly "selfie.subtitle": "We'll verify that you're a real person by capturing a live photo";
|
|
261
|
+
readonly "selfie.tip1": "Ensure your face is well-lit and clearly visible";
|
|
262
|
+
readonly "selfie.tip2": "Remove glasses, hats, or face coverings";
|
|
263
|
+
readonly "selfie.tip3": "Position your face within the oval guide";
|
|
264
|
+
readonly "selfie.tip4": "Follow the on-screen instructions carefully";
|
|
265
|
+
readonly "selfie.title": "Take a Selfie";
|
|
266
|
+
readonly "upload.alignCorners": "Align all corners within the frame";
|
|
267
|
+
readonly "upload.alignInstruction": "Align your document within the frame. Make sure all corners are visible and text is clear.";
|
|
268
|
+
readonly "upload.backOfDocument": "Back Side of Document";
|
|
269
|
+
readonly "upload.cameraActive": "Camera Active";
|
|
270
|
+
readonly "upload.cameraFailed": "Failed to access camera. Please try uploading a file instead.";
|
|
271
|
+
readonly "upload.errorBack": "Please upload the back of your document";
|
|
272
|
+
readonly "upload.errorFileSize": "File size must be less than 10MB";
|
|
273
|
+
readonly "upload.errorFront": "Please upload the front of your document";
|
|
274
|
+
readonly "upload.errorImageType": "Please upload an image file";
|
|
275
|
+
readonly "upload.errorSelectType": "Please select a document type";
|
|
276
|
+
readonly "upload.frontOfDocument": "Front Side of Document";
|
|
277
|
+
readonly "upload.positionDocument": "Position document within the frame";
|
|
278
|
+
readonly "upload.subtitle": "Take a clear photo of your government-issued ID";
|
|
279
|
+
readonly "upload.takePhotoOfBack": "Take Photo of Back";
|
|
280
|
+
readonly "upload.takePhotoOfFront": "Take Photo of Front";
|
|
281
|
+
readonly "upload.tapToOpenCamera": "Tap to open camera";
|
|
282
|
+
readonly "upload.tipFit": "Fit the entire document within the frame guides";
|
|
283
|
+
readonly "upload.tipFlat": "Place document on a flat, contrasting surface";
|
|
284
|
+
readonly "upload.tipLighting": "Use good lighting - avoid glare and shadows";
|
|
285
|
+
readonly "upload.tipSteady": "Hold your phone steady when capturing";
|
|
286
|
+
readonly "upload.tipsTitle": "📸 Tips for taking great photos:";
|
|
287
|
+
readonly "upload.title": "Capture Your Document";
|
|
288
|
+
readonly "upload.uploadFromDeviceLabel": "Upload from device";
|
|
289
|
+
readonly "uploadLabel.documentTypeLabel": "Document Type";
|
|
290
|
+
};
|
|
291
|
+
//# sourceMappingURL=en.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"en.d.ts","sourceRoot":"","sources":["../../../../src/i18n/en.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,eAAO,MAAM,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAmTL,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fr.d.ts","sourceRoot":"","sources":["../../../../src/i18n/fr.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,eAAO,MAAM,EAAE,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAgUrC,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* RN KYC-flow i18n (EN + FR). Locale is supplied by the host app via SDK config
|
|
3
|
+
* and threaded to screens as a `t` prop.
|
|
4
|
+
*/
|
|
5
|
+
export { en } from "./en.js";
|
|
6
|
+
export { fr } from "./fr.js";
|
|
7
|
+
export { getDeviceLocale } from "./locale.js";
|
|
8
|
+
export { createTranslator } from "./translator.js";
|
|
9
|
+
export type { MessageKey, Translate, TranslateParams } from "./translator.js";
|
|
10
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/i18n/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,EAAE,EAAE,MAAM,SAAM,CAAC;AAC1B,OAAO,EAAE,EAAE,EAAE,MAAM,SAAM,CAAC;AAC1B,OAAO,EAAE,eAAe,EAAE,MAAM,aAAU,CAAC;AAC3C,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAc,CAAC;AAChD,YAAY,EAAE,UAAU,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,iBAAc,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"locale.d.ts","sourceRoot":"","sources":["../../../../src/i18n/locale.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAU,CAAC;AAEvC,2EAA2E;AAC3E,wBAAgB,eAAe,IAAI,MAAM,CAMxC"}
|