@41devs/naya-id-js 0.1.0 → 0.3.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 +117 -208
- package/dist/naya-id.cjs +422 -207
- package/dist/naya-id.cjs.map +1 -1
- package/dist/naya-id.d.cts +233 -81
- package/dist/naya-id.d.ts +233 -81
- package/dist/naya-id.min.js +422 -207
- package/dist/naya-id.min.js.map +1 -1
- package/dist/naya-id.mjs +422 -207
- package/dist/naya-id.mjs.map +1 -1
- package/package.json +36 -4
package/dist/naya-id.d.cts
CHANGED
|
@@ -1,11 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Configuration du
|
|
3
|
-
*
|
|
4
|
-
* Reprend, à l'identique, le modèle des SDK Flutter et Angular : tous les champs
|
|
5
|
-
* sont optionnels et le SDK fonctionne avec des valeurs par défaut raisonnables
|
|
6
|
-
* (tous pays, tous documents, français).
|
|
2
|
+
* Configuration publique du SDK et valeurs par défaut.
|
|
7
3
|
*/
|
|
8
|
-
/** Pays supportés par Naya ID (zone CEDEAO). Code = ISO 3166-1 alpha-2. */
|
|
9
4
|
declare const NAYA_COUNTRIES: readonly [{
|
|
10
5
|
readonly code: "BJ";
|
|
11
6
|
readonly label: "Bénin";
|
|
@@ -26,38 +21,47 @@ declare const NAYA_COUNTRIES: readonly [{
|
|
|
26
21
|
readonly label: "Togo";
|
|
27
22
|
}];
|
|
28
23
|
type NayaCountryCode = (typeof NAYA_COUNTRIES)[number]['code'];
|
|
29
|
-
/** Types de documents acceptés. La valeur est envoyée telle quelle à l'API. */
|
|
30
24
|
type NayaDocumentType = 'cni' | 'passeport' | 'permis';
|
|
31
25
|
declare const NAYA_DOCUMENT_TYPES: readonly NayaDocumentType[];
|
|
32
26
|
/** Langues de l'interface du SDK. */
|
|
33
|
-
type NayaLocale = 'fr' | 'en';
|
|
27
|
+
type NayaLocale = 'fr' | 'en' | 'pt';
|
|
28
|
+
declare const NAYA_LOCALES: readonly NayaLocale[];
|
|
29
|
+
declare function countryLabel(code: NayaCountryCode): string;
|
|
30
|
+
/** La CNI CEDEAO porte sa MRZ au verso ; les autres pièces n'en ont pas besoin. */
|
|
31
|
+
declare function documentNeedsVerso(doc: NayaDocumentType): boolean;
|
|
34
32
|
/**
|
|
35
|
-
*
|
|
33
|
+
* Authentification.
|
|
36
34
|
*
|
|
37
|
-
*
|
|
38
|
-
*
|
|
39
|
-
*
|
|
40
|
-
*
|
|
41
|
-
*
|
|
42
|
-
*
|
|
35
|
+
* • `apiKey` — la clé d'application est transmise depuis le navigateur ; le
|
|
36
|
+
* SDK ouvre lui-même la session. Réservé aux démos et aux fronts maîtrisés :
|
|
37
|
+
* une clé live doit déclarer ses origines dans le dashboard.
|
|
38
|
+
* • `sessionToken` + `verificationId` — la session a été ouverte par le
|
|
39
|
+
* backend du client ; le SDK la reprend et n'appelle jamais `/start`.
|
|
40
|
+
* À privilégier en production.
|
|
43
41
|
*/
|
|
44
42
|
interface NayaAuth {
|
|
45
43
|
apiKey?: string;
|
|
46
44
|
sessionToken?: string;
|
|
45
|
+
verificationId?: string;
|
|
47
46
|
}
|
|
48
|
-
/** Palette optionnelle : surcharge des couleurs de marque. */
|
|
49
47
|
interface NayaThemeOverrides {
|
|
50
|
-
/** Couleur principale (défaut :
|
|
48
|
+
/** Couleur principale (défaut : encre Naya #172062). */
|
|
51
49
|
primaryColor?: string;
|
|
52
|
-
/** Couleur d'accent des CTA (défaut :
|
|
50
|
+
/** Couleur d'accent des CTA (défaut : flamme Naya #E6950A). */
|
|
53
51
|
accentColor?: string;
|
|
52
|
+
/** Pile de polices ; défaut : police système. */
|
|
53
|
+
fontFamily?: string;
|
|
54
|
+
/** Rayons : `sharp` (4/8 px), `soft` (12/24 px, défaut), `round` (pilule). */
|
|
55
|
+
radius?: 'sharp' | 'soft' | 'round';
|
|
56
|
+
/** Thème clair, sombre, ou suivant les préférences du système (défaut). */
|
|
57
|
+
mode?: 'light' | 'dark' | 'auto';
|
|
54
58
|
}
|
|
55
59
|
/**
|
|
56
|
-
*
|
|
57
|
-
*
|
|
58
|
-
*
|
|
59
|
-
* renseigner ici leurs URL.
|
|
60
|
+
* Ressources de détection de vivacité (MediaPipe). Par défaut, servies par le
|
|
61
|
+
* CDN Naya, avec repli automatique sur les CDN publics si celui-ci ne répond
|
|
62
|
+
* pas. Les applications à CSP stricte peuvent auto-héberger ces fichiers.
|
|
60
63
|
*/
|
|
64
|
+
type NayaOcrConfirmMode = 'display' | 'edit';
|
|
61
65
|
interface NayaLivenessAssets {
|
|
62
66
|
/** URL du module ESM `@mediapipe/tasks-vision` (`vision_bundle.mjs`). */
|
|
63
67
|
esmUrl?: string;
|
|
@@ -65,6 +69,52 @@ interface NayaLivenessAssets {
|
|
|
65
69
|
wasmBaseUrl?: string;
|
|
66
70
|
/** URL du modèle `.task` de Face Landmarker. */
|
|
67
71
|
modelUrl?: string;
|
|
72
|
+
/** Empreinte SHA-256 attendue du modèle (hex) ; `null` désactive le contrôle. */
|
|
73
|
+
modelSha256?: string | null;
|
|
74
|
+
/** Replier sur jsDelivr / Google si l'hôte principal échoue (défaut : true). */
|
|
75
|
+
fallbackToPublicCdn?: boolean;
|
|
76
|
+
}
|
|
77
|
+
interface NayaConsentOptions {
|
|
78
|
+
/** Lien vers la politique de confidentialité affichée sur l'écran de consentement. */
|
|
79
|
+
policyUrl?: string;
|
|
80
|
+
/** Version du texte de consentement, transmise à l'API. */
|
|
81
|
+
version?: string;
|
|
82
|
+
}
|
|
83
|
+
interface NayaCaptureOptions {
|
|
84
|
+
/** Déclenchement automatique quand la qualité est stable (défaut : true). */
|
|
85
|
+
autoCapture?: boolean;
|
|
86
|
+
/** Côté max de l'image envoyée, en pixels (défaut : 1600 ; 1200 sur réseau lent). */
|
|
87
|
+
maxDimension?: number;
|
|
88
|
+
/**
|
|
89
|
+
* Import d'une photo depuis un fichier : `auto` (proposé quand aucune caméra
|
|
90
|
+
* arrière n'est disponible, typiquement sur ordinateur), `always`, `never`.
|
|
91
|
+
*/
|
|
92
|
+
fileUpload?: 'auto' | 'always' | 'never';
|
|
93
|
+
}
|
|
94
|
+
interface NayaLivenessOptions {
|
|
95
|
+
/** Délai avant de proposer des conseils et un nouvel essai (défaut : 45 s). */
|
|
96
|
+
timeoutMs?: number;
|
|
97
|
+
/**
|
|
98
|
+
* Après un délai dépassé ou deux échecs, proposer le parcours sans défi
|
|
99
|
+
* (selfie seul, décision plafonnée à la revue). Défaut : true.
|
|
100
|
+
*/
|
|
101
|
+
allowPassive?: boolean;
|
|
102
|
+
/** Précharger le modèle pendant la capture du document (défaut : true). */
|
|
103
|
+
preload?: boolean;
|
|
104
|
+
}
|
|
105
|
+
interface NayaHandoffOptions {
|
|
106
|
+
/** Proposer le relais vers un téléphone par QR code sur ordinateur (défaut : true). */
|
|
107
|
+
enabled?: boolean;
|
|
108
|
+
/** Page hébergée qui reprend la session ; défaut : celle configurée côté API. */
|
|
109
|
+
baseUrl?: string;
|
|
110
|
+
}
|
|
111
|
+
type NayaEventName = 'ready' | 'step' | 'session' | 'consent' | 'document_captured' | 'liveness_step' | 'liveness_done' | 'submitted' | 'result' | 'error' | 'cancelled' | 'handoff_shown';
|
|
112
|
+
interface NayaEvent {
|
|
113
|
+
type: NayaEventName;
|
|
114
|
+
/** `performance.now()` au moment de l'événement. */
|
|
115
|
+
at: number;
|
|
116
|
+
step?: string;
|
|
117
|
+
data?: Record<string, unknown>;
|
|
68
118
|
}
|
|
69
119
|
interface NayaConfig {
|
|
70
120
|
/** Pré-sélectionne le pays : l'utilisateur ne le choisit plus. */
|
|
@@ -76,16 +126,13 @@ interface NayaConfig {
|
|
|
76
126
|
documentTypes?: readonly NayaDocumentType[];
|
|
77
127
|
/** Pays proposés quand `country` n'est pas défini. */
|
|
78
128
|
countries?: readonly NayaCountryCode[];
|
|
79
|
-
/** Langue de l'interface. */
|
|
129
|
+
/** Langue de l'interface ; défaut : celle du navigateur (fr, en, pt). */
|
|
80
130
|
locale?: NayaLocale;
|
|
81
|
-
/**
|
|
82
|
-
* URL (HTTPS) notifiée par le serveur Naya à chaque décision sur cette
|
|
83
|
-
* session — décision automatique puis, le cas échéant, revue manuelle.
|
|
84
|
-
*/
|
|
131
|
+
/** URL HTTPS notifiée par le serveur Naya à chaque décision (mode apiKey). */
|
|
85
132
|
callbackUrl?: string;
|
|
86
133
|
/** Nombre de parcours autorisés après un rejet (bouton « Réessayer »). */
|
|
87
134
|
maxAttempts?: number;
|
|
88
|
-
/** Surcharge des couleurs de
|
|
135
|
+
/** Surcharge des couleurs, de la police, des rayons et du mode. */
|
|
89
136
|
theme?: NayaThemeOverrides;
|
|
90
137
|
/** URL d'un logo client, affiché à côté de « Propulsé par Naya ID ». */
|
|
91
138
|
clientLogoUrl?: string;
|
|
@@ -93,6 +140,38 @@ interface NayaConfig {
|
|
|
93
140
|
baseUrl?: string;
|
|
94
141
|
/** Auto-hébergement des ressources MediaPipe (CSP stricte). */
|
|
95
142
|
livenessAssets?: NayaLivenessAssets;
|
|
143
|
+
/** Monter le parcours dans cet élément au lieu d'un overlay plein écran. */
|
|
144
|
+
container?: HTMLElement | null;
|
|
145
|
+
/** Écran de consentement biométrique ; `false` si recueilli en amont par l'hôte. */
|
|
146
|
+
consent?: boolean | NayaConsentOptions;
|
|
147
|
+
/**
|
|
148
|
+
* Écran des données lues sur le document. `false` (défaut) : rien n'est
|
|
149
|
+
* montré ; `'display'` : lecture seule, l'utilisateur dit si c'est exact ;
|
|
150
|
+
* `'edit'` : il peut saisir des corrections. Dans tous les cas l'extraction
|
|
151
|
+
* (`ocrData`) reste intacte côté serveur : ce qui est saisi part à part
|
|
152
|
+
* (`declaredData`) et un écart plafonne la décision à la revue.
|
|
153
|
+
* `true` vaut `'edit'`.
|
|
154
|
+
*/
|
|
155
|
+
confirmOcr?: boolean | NayaOcrConfirmMode;
|
|
156
|
+
capture?: NayaCaptureOptions;
|
|
157
|
+
liveness?: NayaLivenessOptions;
|
|
158
|
+
handoff?: boolean | NayaHandoffOptions;
|
|
159
|
+
/**
|
|
160
|
+
* Ouvrir la session dès le choix du document pour recouvrir la latence
|
|
161
|
+
* réseau. Attention : une session ouverte peut être facturée même si la
|
|
162
|
+
* capture est abandonnée. Défaut : false.
|
|
163
|
+
*/
|
|
164
|
+
eagerSession?: boolean;
|
|
165
|
+
/** Télémétrie anonyme (entonnoir, erreurs, qualité). Défaut : true. */
|
|
166
|
+
telemetry?: boolean;
|
|
167
|
+
/** Journal détaillé dans la console (préfixe `[NayaId]`). */
|
|
168
|
+
debug?: boolean;
|
|
169
|
+
/** Retour haptique aux étapes clés sur mobile (défaut : true). */
|
|
170
|
+
haptics?: boolean;
|
|
171
|
+
/** Surcharge de libellés, par clé de chaîne. */
|
|
172
|
+
strings?: Partial<Record<string, string>>;
|
|
173
|
+
/** Hook d'événements pour l'analytique de l'hôte. */
|
|
174
|
+
onEvent?: (event: NayaEvent) => void;
|
|
96
175
|
}
|
|
97
176
|
/** Configuration effective : `NayaConfig` avec tous les défauts appliqués. */
|
|
98
177
|
interface ResolvedNayaConfig {
|
|
@@ -106,20 +185,29 @@ interface ResolvedNayaConfig {
|
|
|
106
185
|
clientLogoUrl?: string;
|
|
107
186
|
baseUrl: string;
|
|
108
187
|
livenessAssets: NayaLivenessAssets;
|
|
188
|
+
container: HTMLElement | null;
|
|
189
|
+
consent: false | Required<NayaConsentOptions>;
|
|
190
|
+
confirmOcr: false | NayaOcrConfirmMode;
|
|
191
|
+
capture: Required<NayaCaptureOptions>;
|
|
192
|
+
liveness: Required<NayaLivenessOptions>;
|
|
193
|
+
handoff: Required<NayaHandoffOptions>;
|
|
194
|
+
eagerSession: boolean;
|
|
195
|
+
telemetry: boolean;
|
|
196
|
+
debug: boolean;
|
|
197
|
+
haptics: boolean;
|
|
198
|
+
strings: Partial<Record<string, string>>;
|
|
199
|
+
onEvent?: (event: NayaEvent) => void;
|
|
109
200
|
}
|
|
110
|
-
declare const NAYA_DEFAULT_PRIMARY = "#
|
|
111
|
-
declare const NAYA_DEFAULT_ACCENT = "#
|
|
201
|
+
declare const NAYA_DEFAULT_PRIMARY = "#172062";
|
|
202
|
+
declare const NAYA_DEFAULT_ACCENT = "#E6950A";
|
|
112
203
|
declare const NAYA_DEFAULT_BASE_URL = "https://api.naya.41devs.com/v1";
|
|
204
|
+
/** Langue du navigateur ramenée aux langues supportées. */
|
|
205
|
+
declare function detectLocale(): NayaLocale;
|
|
113
206
|
/** Applique les valeurs par défaut à une configuration partielle. */
|
|
114
207
|
declare function resolveConfig(config?: NayaConfig): ResolvedNayaConfig;
|
|
115
|
-
/** Libellé lisible d'un code pays. */
|
|
116
|
-
declare function countryLabel(code: NayaCountryCode): string;
|
|
117
|
-
/** La CNI CEDEAO porte sa MRZ au verso ; passeport et permis n'en ont pas besoin. */
|
|
118
|
-
declare function documentNeedsVerso(doc: NayaDocumentType): boolean;
|
|
119
208
|
|
|
120
209
|
/**
|
|
121
210
|
* Résultat du parcours, rendu à l'application cliente à la fermeture du SDK.
|
|
122
|
-
* Miroir fidèle des modèles Flutter et Angular.
|
|
123
211
|
*/
|
|
124
212
|
/** Issue du parcours de vérification. */
|
|
125
213
|
type NayaStatus =
|
|
@@ -131,8 +219,14 @@ type NayaStatus =
|
|
|
131
219
|
| 'rejected'
|
|
132
220
|
/** L'utilisateur a quitté le parcours avant la fin. */
|
|
133
221
|
| 'cancelled'
|
|
134
|
-
/** Erreur technique (réseau, serveur…) ayant interrompu le parcours. */
|
|
222
|
+
/** Erreur technique (réseau, serveur, caméra…) ayant interrompu le parcours. */
|
|
135
223
|
| 'error';
|
|
224
|
+
/**
|
|
225
|
+
* Code d'erreur stable, indépendant de la langue. `errorMessage` porte le
|
|
226
|
+
* détail lisible (souvent celui du serveur) et `requestId` la référence à
|
|
227
|
+
* communiquer au support.
|
|
228
|
+
*/
|
|
229
|
+
type NayaErrorCode = 'network' | 'timeout' | 'unauthorized' | 'origin_not_allowed' | 'session_expired' | 'session_closed' | 'quota' | 'kyb_pending' | 'rate_limited' | 'upload_limit' | 'bad_request' | 'server' | 'camera_denied' | 'camera_unavailable' | 'camera_busy' | 'liveness_assets' | 'unsupported_browser' | 'in_app_browser' | 'insecure_context' | 'invalid_params' | 'unknown';
|
|
136
230
|
/**
|
|
137
231
|
* Données d'identité extraites du document par l'OCR Naya, éventuellement
|
|
138
232
|
* corrigées par l'utilisateur.
|
|
@@ -166,87 +260,145 @@ interface NayaResult {
|
|
|
166
260
|
* les notifications `callbackUrl` et le dashboard.
|
|
167
261
|
*/
|
|
168
262
|
verificationId?: string;
|
|
169
|
-
/**
|
|
263
|
+
/** Motifs stables de la décision (DOC_EXPIRED, FACE_MISMATCH…). */
|
|
264
|
+
reasonCodes?: string[];
|
|
265
|
+
/** `active` (défi exécuté) ou `passive` (selfie seul). */
|
|
266
|
+
livenessMode?: 'active' | 'passive';
|
|
170
267
|
riskScore?: number;
|
|
171
|
-
/** Concordance faciale document ↔ selfie, 0-100. */
|
|
172
268
|
matchScore?: number;
|
|
173
|
-
/** Intégrité du document, 0-100. */
|
|
174
269
|
authenticityScore?: number;
|
|
175
|
-
/** Score de vivacité, 0-100. */
|
|
176
270
|
livenessScore?: number;
|
|
177
|
-
/** Confiance de l'extraction OCR, 0-100. */
|
|
178
271
|
ocrConfidence?: number;
|
|
179
|
-
/**
|
|
272
|
+
/** Extraction brute du document, telle que lue par le serveur ; jamais altérée. */
|
|
180
273
|
ocrData?: NayaOcrData;
|
|
181
|
-
/**
|
|
274
|
+
/** Ce que l'utilisateur a déclaré (mode `confirmOcr: 'edit'`), conservé à part. */
|
|
275
|
+
declaredData?: Record<string, string>;
|
|
276
|
+
/** Champs où `declaredData` diffère de `ocrData`. */
|
|
277
|
+
dataMismatches?: string[];
|
|
278
|
+
/** L'utilisateur a contesté les données lues (mode `'display'`). */
|
|
279
|
+
dataDisputed?: boolean;
|
|
280
|
+
/** Note d'analyse du serveur (rejet, revue). */
|
|
182
281
|
note?: string;
|
|
183
|
-
/**
|
|
282
|
+
/** Renseignés quand `status === 'error'`. */
|
|
283
|
+
errorCode?: NayaErrorCode;
|
|
184
284
|
errorMessage?: string;
|
|
285
|
+
/** Statut HTTP de l'erreur serveur, le cas échéant. */
|
|
286
|
+
statusCode?: number;
|
|
287
|
+
/** Référence de requête renvoyée par l'API, à transmettre au support. */
|
|
288
|
+
requestId?: string;
|
|
185
289
|
}
|
|
186
290
|
declare function cancelledResult(verificationId?: string): NayaResult;
|
|
187
|
-
declare function errorResult(errorMessage: string, verificationId?: string
|
|
291
|
+
declare function errorResult(errorMessage: string, verificationId?: string, extra?: {
|
|
292
|
+
errorCode?: NayaErrorCode;
|
|
293
|
+
statusCode?: number;
|
|
294
|
+
requestId?: string;
|
|
295
|
+
}): NayaResult;
|
|
188
296
|
|
|
189
297
|
/**
|
|
190
|
-
*
|
|
191
|
-
*
|
|
192
|
-
* Bâti sur `fetch` natif, sans dépendance. Les délais sont dimensionnés pour les
|
|
193
|
-
* étapes longues (OCR et décision côté serveur).
|
|
194
|
-
*
|
|
195
|
-
* Authentification via `NayaAuth` : `apiKey` (en-tête `X-API-Key`) ou
|
|
196
|
-
* `sessionToken` (en-tête `Authorization: Bearer`). Le choix est transparent
|
|
197
|
-
* pour le reste du SDK.
|
|
298
|
+
* Détection des capacités du navigateur, avant d'ouvrir l'interface : mieux
|
|
299
|
+
* vaut refuser proprement avec la raison que d'échouer au moment du selfie.
|
|
198
300
|
*/
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
301
|
+
interface NayaSupport {
|
|
302
|
+
ok: boolean;
|
|
303
|
+
code?: NayaErrorCode;
|
|
304
|
+
reason?: string;
|
|
305
|
+
secureContext: boolean;
|
|
306
|
+
mediaDevices: boolean;
|
|
307
|
+
webAssembly: boolean;
|
|
308
|
+
webGL: boolean;
|
|
309
|
+
inAppBrowser: boolean;
|
|
310
|
+
inAppBrowserName: string | null;
|
|
311
|
+
mobile: boolean;
|
|
312
|
+
ios: boolean;
|
|
313
|
+
android: boolean;
|
|
314
|
+
/** Classe d'appareil rapportée à la télémétrie : `mobile` | `tablet` | `desktop`. */
|
|
315
|
+
deviceClass: 'mobile' | 'tablet' | 'desktop';
|
|
203
316
|
}
|
|
204
317
|
|
|
205
318
|
/**
|
|
206
|
-
*
|
|
207
|
-
* main pour l'Afrique de l'Ouest (zone CEDEAO), chargeable en une balise
|
|
208
|
-
* `<script>`.
|
|
319
|
+
* Client HTTP du pipeline de vérification Naya.
|
|
209
320
|
*
|
|
210
|
-
*
|
|
211
|
-
*
|
|
321
|
+
* Bâti sur `fetch` natif, sans dépendance. Les délais sont dimensionnés pour
|
|
322
|
+
* les étapes longues (OCR et décision côté serveur). Les échecs transitoires
|
|
323
|
+
* (réseau, délai, 429, 502-504) sont retentés avec un délai croissant.
|
|
212
324
|
*
|
|
213
|
-
*
|
|
214
|
-
*
|
|
215
|
-
* <script>
|
|
216
|
-
* const result = await NayaId.startVerification({
|
|
217
|
-
* apiKey: 'naya_live_xxx',
|
|
218
|
-
* config: { country: 'BJ' },
|
|
219
|
-
* });
|
|
220
|
-
* // result.status → 'approved' | 'review' | 'rejected' | 'cancelled' | 'error'
|
|
221
|
-
* </script>
|
|
222
|
-
* ```
|
|
325
|
+
* Authentification : `apiKey` (en-tête `X-API-Key`) ou `sessionToken`
|
|
326
|
+
* (en-tête `Authorization: Bearer`).
|
|
223
327
|
*/
|
|
328
|
+
/** Erreur typée renvoyée par l'API Naya ou par le transport réseau. */
|
|
329
|
+
declare class NayaApiError extends Error {
|
|
330
|
+
readonly code: NayaErrorCode;
|
|
331
|
+
readonly statusCode?: number;
|
|
332
|
+
readonly requestId?: string;
|
|
333
|
+
readonly retryable: boolean;
|
|
334
|
+
constructor(message: string, code: NayaErrorCode, opts?: {
|
|
335
|
+
statusCode?: number;
|
|
336
|
+
requestId?: string;
|
|
337
|
+
retryable?: boolean;
|
|
338
|
+
});
|
|
339
|
+
}
|
|
224
340
|
|
|
225
341
|
interface StartVerificationParams {
|
|
226
342
|
/** Clé d'application `naya_live_…` / `naya_test_…` (lisible côté navigateur). */
|
|
227
343
|
apiKey?: string;
|
|
228
|
-
/**
|
|
344
|
+
/**
|
|
345
|
+
* Jeton de session rendu par `POST /verifications/start`, obtenu par votre
|
|
346
|
+
* backend (à privilégier). Va toujours avec `verificationId` : le SDK reprend
|
|
347
|
+
* la vérification ouverte par le serveur au lieu d'en ouvrir une nouvelle.
|
|
348
|
+
*/
|
|
229
349
|
sessionToken?: string;
|
|
230
|
-
/**
|
|
350
|
+
/** Identifiant de la vérification ouverte par votre backend (avec `sessionToken`). */
|
|
351
|
+
verificationId?: string;
|
|
352
|
+
/** Alternative aux champs ci-dessus, forme objet. */
|
|
231
353
|
auth?: NayaAuth;
|
|
232
|
-
/** Configuration optionnelle (pays, documents, langue,
|
|
354
|
+
/** Configuration optionnelle (pays, documents, langue, thème, conteneur…). */
|
|
233
355
|
config?: NayaConfig;
|
|
234
356
|
}
|
|
235
357
|
/**
|
|
236
358
|
* Lance le parcours de vérification d'identité : l'interface Naya s'ouvre en
|
|
237
|
-
* plein écran au-dessus de la page, prend en
|
|
238
|
-
*
|
|
359
|
+
* plein écran au-dessus de la page (ou dans `config.container`), prend en
|
|
360
|
+
* charge le consentement, la capture du document, la vivacité, la
|
|
361
|
+
* confirmation des données et la décision, puis résout un `NayaResult`.
|
|
239
362
|
*
|
|
240
|
-
* **Ne rejette jamais** : une erreur
|
|
241
|
-
*
|
|
363
|
+
* **Ne rejette jamais** : une erreur ou une annulation revient toujours sous
|
|
364
|
+
* forme de `NayaResult` (`status: 'error'` avec `errorCode`, ou `'cancelled'`).
|
|
242
365
|
*/
|
|
243
366
|
declare function startVerification(params: StartVerificationParams): Promise<NayaResult>;
|
|
367
|
+
/** Vérifie que le navigateur peut exécuter le parcours, avant de l'ouvrir. */
|
|
368
|
+
declare function isSupported(): NayaSupport;
|
|
369
|
+
interface NayaVerification {
|
|
370
|
+
/** Monte l'interface et résout à la fermeture. Un seul `open` à la fois. */
|
|
371
|
+
open(): Promise<NayaResult>;
|
|
372
|
+
/** Ferme le parcours (résultat `cancelled`). */
|
|
373
|
+
close(): void;
|
|
374
|
+
/** Abonne un écouteur ; rend la fonction de désabonnement. */
|
|
375
|
+
on(event: NayaEventName | 'result', cb: (payload: NayaEvent | NayaResult) => void): () => void;
|
|
376
|
+
/** Ferme et libère les écouteurs. */
|
|
377
|
+
destroy(): void;
|
|
378
|
+
readonly isOpen: boolean;
|
|
379
|
+
}
|
|
380
|
+
/**
|
|
381
|
+
* API programmatique : instance réutilisable avec `open`, `close`, `on`.
|
|
382
|
+
* Utile aux enveloppes de framework et à l'analytique de l'hôte.
|
|
383
|
+
*/
|
|
384
|
+
declare function create(params: StartVerificationParams): NayaVerification;
|
|
385
|
+
/**
|
|
386
|
+
* `<naya-id-verification api-key="…" country="BJ" locale="fr" inline auto>`
|
|
387
|
+
* Attributs : `api-key`, `session-token`, `verification-id`, `locale`,
|
|
388
|
+
* `country`, `document-types` (liste séparée par des virgules), `callback-url`,
|
|
389
|
+
* `inline` (monte dans l'élément), `auto` (démarre à l'insertion), `theme-primary`,
|
|
390
|
+
* `theme-accent`, `theme-mode`. Événements : `naya-event`, `naya-result`.
|
|
391
|
+
*/
|
|
392
|
+
declare function defineElement(tag?: string): void;
|
|
244
393
|
/** Version du SDK. */
|
|
245
|
-
declare const version
|
|
394
|
+
declare const version: string;
|
|
246
395
|
|
|
247
396
|
declare const _default: {
|
|
248
397
|
startVerification: typeof startVerification;
|
|
398
|
+
create: typeof create;
|
|
399
|
+
isSupported: typeof isSupported;
|
|
400
|
+
defineElement: typeof defineElement;
|
|
249
401
|
version: string;
|
|
250
402
|
};
|
|
251
403
|
|
|
252
|
-
export { NAYA_COUNTRIES, NAYA_DEFAULT_ACCENT, NAYA_DEFAULT_BASE_URL, NAYA_DEFAULT_PRIMARY, NAYA_DOCUMENT_TYPES, NayaApiError, type NayaAuth, type NayaConfig, type NayaCountryCode, type NayaDocumentType, type NayaLivenessAssets, type NayaLocale, type NayaOcrData, type NayaResult, type NayaStatus, type NayaThemeOverrides, type ResolvedNayaConfig, type StartVerificationParams, cancelledResult, countryLabel, _default as default, documentNeedsVerso, errorResult, ocrToDeclaredData, parseOcrData, resolveConfig, startVerification, version };
|
|
404
|
+
export { NAYA_COUNTRIES, NAYA_DEFAULT_ACCENT, NAYA_DEFAULT_BASE_URL, NAYA_DEFAULT_PRIMARY, NAYA_DOCUMENT_TYPES, NAYA_LOCALES, NayaApiError, type NayaAuth, type NayaCaptureOptions, type NayaConfig, type NayaConsentOptions, type NayaCountryCode, type NayaDocumentType, type NayaErrorCode, type NayaEvent, type NayaEventName, type NayaHandoffOptions, type NayaLivenessAssets, type NayaLivenessOptions, type NayaLocale, type NayaOcrData, type NayaResult, type NayaStatus, type NayaSupport, type NayaThemeOverrides, type NayaVerification, type ResolvedNayaConfig, type StartVerificationParams, cancelledResult, countryLabel, create, _default as default, defineElement, detectLocale, documentNeedsVerso, errorResult, isSupported, ocrToDeclaredData, parseOcrData, resolveConfig, startVerification, version };
|